aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/linux
diff options
context:
space:
mode:
authorAndrea Adami <andrea.adami@gmail.com>2010-10-03 18:56:43 +0200
committerAndrea Adami <andrea.adami@gmail.com>2010-10-03 20:58:32 +0200
commit65e34b9c63d661a52abcbf952bcc1c7c78a0c8da (patch)
tree4e1435d5a59b6fea839a2a58a2a751a8328b08b1 /recipes/linux
parent86822c3ae68dad2d25f4429221e76eb92dc0cdfe (diff)
downloadopenembedded-65e34b9c63d661a52abcbf952bcc1c7c78a0c8da.tar.gz
kernels-2.4-embedix: move unsupported recipes to obsolete
Diffstat (limited to 'recipes/linux')
-rw-r--r--recipes/linux/c7x0-kernels-2.4-embedix.bb17
-rw-r--r--recipes/linux/collie-kernel-24-8_2.4.18-rmk7-pxa3-embedix20030509.bb4
-rw-r--r--recipes/linux/collie-kernel-32-0_2.4.18-rmk7-pxa3-embedix20030509.bb4
-rw-r--r--recipes/linux/collie-kernel-32-32_2.4.18-rmk7-pxa3-embedix20030509.bb4
-rw-r--r--recipes/linux/collie-kernel-40-24_2.4.18-rmk7-pxa3-embedix20030509.bb4
-rw-r--r--recipes/linux/collie-kernel-48-16_2.4.18-rmk7-pxa3-embedix20030509.bb4
-rw-r--r--recipes/linux/collie-kernel-58-6-debug_2.4.18-rmk7-pxa3-embedix20030509.bb8
-rw-r--r--recipes/linux/collie-kernel-58-6_2.4.18-rmk7-pxa3-embedix20030509.bb4
-rw-r--r--recipes/linux/collie-kernel-64-0_2.4.18-rmk7-pxa3-embedix20030509.bb4
-rw-r--r--recipes/linux/collie-kernels-2.4-embedix.bb17
-rw-r--r--recipes/linux/corgi-kernel-2.4-embedix.bb3
-rw-r--r--recipes/linux/files/ir240_sys_max_tx-2.diff110
-rw-r--r--recipes/linux/files/ir241_qos_param-2.diff164
-rw-r--r--recipes/linux/files/iw240_we15-6.diff399
-rw-r--r--recipes/linux/files/iw249_we16-6.diff670
-rw-r--r--recipes/linux/files/iw_handlers.w13-5.diff1513
-rw-r--r--recipes/linux/files/iw_handlers.w14-5.diff838
-rw-r--r--recipes/linux/files/linux-2.4.18-list_move.patch32
-rw-r--r--recipes/linux/husky-kernel-2.4-embedix.bb5
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/1764-1.patch16
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/apm_arrowkey.patch32
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluecard_cs.patch11
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluetooth-2.4.18-mh15.patch32759
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bt950_cs.patch1174
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/buffered-fbmem.patch19
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/compile.patch14
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-default-brightness.patch16
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-fbcon-logo.patch281
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-corgi1304
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-husky1304
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle1158
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle2551158
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-shepherd1303
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-tosa1379
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/deviceinfo.patch26
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/disable-pcmcia-probe.patch17
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/dumb-hack-for-wlan-ng.patch16
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/enable-sysrq.patch61
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/fix_tosa_apm.patch72
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/idecs.patch77
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/initsh.patch14
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keyboard-ctrl+alt.patch79
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keymap-more-sane.patch23
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/logo.patch2598
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/mkdep.patch16
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/module_licence.patch96
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/piro.patch75444
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/sharpsl_battery.patch346
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/smallfonts.diff2453
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/swap-performance.patch19
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa-power-key-off.patch144
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_map.patch889
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_ts.patch207
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/unb0rk-apm.patch102
-rw-r--r--recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/usb-storage.patch3433
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/1764-1.patch16
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/CPAR050218.patch422
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P01-C3000-clockup_050221.patch202
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P02++050226.patch221
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P02-C3000-voltage_050221.patch179
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P03-C3000-SIGSTOP_FIX_041207.patch195
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P04-C3000-UNICON_041206.patch40089
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P05-C3000-TSPRESSURE_041207.patch235
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P06-C3000-WRITETS_041206.patch107
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P07-C3000-KBDDEV_041206.patch115
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P08-rtc-mremap-mremap2nd-fix_041213.patch140
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P09-ext3-isofs-fix_041216.patch359
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P10-ntfs-fix_041216.patch25
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P11-bluetooth-mh18_041216.patch16593
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P12-fbcon-fix_041219.patch51
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P14-lowlatency_041221.patch1677
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P17-bvdd_050222.patch1506
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P18-detailed_battery_050309.patch102
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/add-oz-release-string.patch24
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/armdeffix.patch13
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/bluecard_cs.patch11
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/compile.patch14
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/corgi-default-brightness.patch19
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/corgi-fbcon-logo.patch281
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-akita1365
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-borzoi1364
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-spitz1364
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/deviceinfo.patch26
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/disable-pcmcia-probe.patch17
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/idecs.patch78
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/initsh.patch14
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/logo.patch2598
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/saner-spitz-keymap.patch225
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/swap-performance.patch19
-rw-r--r--recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/tosa_ts.patch207
-rw-r--r--recipes/linux/openzaurus-pxa27x_2.4.20-rmk2-embedix20050602.bb99
-rw-r--r--recipes/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.bb2
-rw-r--r--recipes/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc124
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/1764-1.patch16
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/battery.patch326
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/bluetooth-2.4.18-mh15.patch32759
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/bluetooth-patch-2.4.18-mh9.diff30831
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/cacko.patch38963
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/defconfig-collie1177
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/disable-pcmcia-probe.patch17
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/idecs.patch77
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/initsh.patch14
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/keymap-more-sane.patch19
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/logo.patch2598
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/mkdep.patch16
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/module_licence.patch81
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/sound-2.4.18r2.patch5602
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/unb0rk-apm.patch99
-rw-r--r--recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/unb0rk-rightarrow.patch28
-rw-r--r--recipes/linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb100
-rw-r--r--recipes/linux/poodle-kernel-2.4-embedix.bb4
-rw-r--r--recipes/linux/poodle-kernels-2.4-embedix.bb7
-rw-r--r--recipes/linux/poodle255-kernel-2.4-embedix.bb4
-rw-r--r--recipes/linux/shepherd-kernel-2.4-embedix.bb5
114 files changed, 0 insertions, 314705 deletions
diff --git a/recipes/linux/c7x0-kernels-2.4-embedix.bb b/recipes/linux/c7x0-kernels-2.4-embedix.bb
deleted file mode 100644
index 95bdfbce61..0000000000
--- a/recipes/linux/c7x0-kernels-2.4-embedix.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "Build all c7x0 kernels in one go"
-SECTION = "kernel"
-LICENSE = "GPLv2"
-PROVIDES = "virtual/kernel"
-PR = "r1"
-
-COMPATIBLE_HOST = "arm.*-linux"
-
-# For these old 2.4 kernels we override in sharprom-compatible.conf
-#COMPATIBLE_MACHINE = "(corgi|husky|shepherd)"
-COMPATIBLE_MACHINE = "none"
-
-DEPENDS = "corgi-kernel-2.4-embedix shepherd-kernel-2.4-embedix husky-kernel-2.4-embedix"
-
-PACKAGES = ""
-EXCLUDE_FROM_WORLD = "1"
-
diff --git a/recipes/linux/collie-kernel-24-8_2.4.18-rmk7-pxa3-embedix20030509.bb b/recipes/linux/collie-kernel-24-8_2.4.18-rmk7-pxa3-embedix20030509.bb
deleted file mode 100644
index 42c71f14b0..0000000000
--- a/recipes/linux/collie-kernel-24-8_2.4.18-rmk7-pxa3-embedix20030509.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-COLLIE_MEMORY_SIZE = "24"
-COLLIE_RAMDISK_SIZE = "8"
-
-require ../linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
diff --git a/recipes/linux/collie-kernel-32-0_2.4.18-rmk7-pxa3-embedix20030509.bb b/recipes/linux/collie-kernel-32-0_2.4.18-rmk7-pxa3-embedix20030509.bb
deleted file mode 100644
index aa719ee618..0000000000
--- a/recipes/linux/collie-kernel-32-0_2.4.18-rmk7-pxa3-embedix20030509.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-COLLIE_MEMORY_SIZE = "32"
-COLLIE_RAMDISK_SIZE = "0"
-
-require ../linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
diff --git a/recipes/linux/collie-kernel-32-32_2.4.18-rmk7-pxa3-embedix20030509.bb b/recipes/linux/collie-kernel-32-32_2.4.18-rmk7-pxa3-embedix20030509.bb
deleted file mode 100644
index e5695f9a0b..0000000000
--- a/recipes/linux/collie-kernel-32-32_2.4.18-rmk7-pxa3-embedix20030509.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-COLLIE_MEMORY_SIZE = "32"
-COLLIE_RAMDISK_SIZE = "32"
-
-require ../linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
diff --git a/recipes/linux/collie-kernel-40-24_2.4.18-rmk7-pxa3-embedix20030509.bb b/recipes/linux/collie-kernel-40-24_2.4.18-rmk7-pxa3-embedix20030509.bb
deleted file mode 100644
index f5e18fd803..0000000000
--- a/recipes/linux/collie-kernel-40-24_2.4.18-rmk7-pxa3-embedix20030509.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-COLLIE_MEMORY_SIZE = "40"
-COLLIE_RAMDISK_SIZE = "24"
-
-require ../linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
diff --git a/recipes/linux/collie-kernel-48-16_2.4.18-rmk7-pxa3-embedix20030509.bb b/recipes/linux/collie-kernel-48-16_2.4.18-rmk7-pxa3-embedix20030509.bb
deleted file mode 100644
index 7bb51fc920..0000000000
--- a/recipes/linux/collie-kernel-48-16_2.4.18-rmk7-pxa3-embedix20030509.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-COLLIE_MEMORY_SIZE = "48"
-COLLIE_RAMDISK_SIZE = "16"
-
-require ../linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
diff --git a/recipes/linux/collie-kernel-58-6-debug_2.4.18-rmk7-pxa3-embedix20030509.bb b/recipes/linux/collie-kernel-58-6-debug_2.4.18-rmk7-pxa3-embedix20030509.bb
deleted file mode 100644
index 47b331b34d..0000000000
--- a/recipes/linux/collie-kernel-58-6-debug_2.4.18-rmk7-pxa3-embedix20030509.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-COLLIE_MEMORY_SIZE = "58"
-COLLIE_RAMDISK_SIZE = "6"
-KERNEL_CONSOLE = "tty0"
-
-require ../linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
-
-KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-${MACHINE}-${COLLIE_MEMORY_SIZE}-${COLLIE_RAMDISK_SIZE}-DEBUG-${DATETIME}.bin"
-KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-${MACHINE}-${COLLIE_MEMORY_SIZE}-${COLLIE_RAMDISK_SIZE}-DEBUG.bin"
diff --git a/recipes/linux/collie-kernel-58-6_2.4.18-rmk7-pxa3-embedix20030509.bb b/recipes/linux/collie-kernel-58-6_2.4.18-rmk7-pxa3-embedix20030509.bb
deleted file mode 100644
index bafee1a61b..0000000000
--- a/recipes/linux/collie-kernel-58-6_2.4.18-rmk7-pxa3-embedix20030509.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-COLLIE_MEMORY_SIZE = "58"
-COLLIE_RAMDISK_SIZE = "6"
-
-require ../linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
diff --git a/recipes/linux/collie-kernel-64-0_2.4.18-rmk7-pxa3-embedix20030509.bb b/recipes/linux/collie-kernel-64-0_2.4.18-rmk7-pxa3-embedix20030509.bb
deleted file mode 100644
index c63881f29f..0000000000
--- a/recipes/linux/collie-kernel-64-0_2.4.18-rmk7-pxa3-embedix20030509.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-COLLIE_MEMORY_SIZE = "64"
-COLLIE_RAMDISK_SIZE = "0"
-
-require ../linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
diff --git a/recipes/linux/collie-kernels-2.4-embedix.bb b/recipes/linux/collie-kernels-2.4-embedix.bb
deleted file mode 100644
index d5f9a7d749..0000000000
--- a/recipes/linux/collie-kernels-2.4-embedix.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "Build all collie kernels in one go"
-SECTION = "kernel"
-LICENSE = "GPLv2"
-PROVIDES = "virtual/kernel"
-PR = "r2"
-
-COMPATIBLE_HOST = "arm.*-linux"
-
-# For these old 2.4 kernels we override in sharprom-compatible.conf
-#COMPATIBLE_MACHINE = "collie"
-COMPATIBLE_MACHINE = "none"
-
-
-DEPENDS = '${@base_conditional("DISTRO_TYPE", "debug", "openzaurus-sa", "collie-kernel-64-0 collie-kernel-24-8 collie-kernel-32-0 collie-kernel-32-32 collie-kernel-40-24 collie-kernel-48-16 collie-kernel-58-6",d)}'
-PACKAGES = ""
-EXCLUDE_FROM_WORLD = "1"
-
diff --git a/recipes/linux/corgi-kernel-2.4-embedix.bb b/recipes/linux/corgi-kernel-2.4-embedix.bb
deleted file mode 100644
index 986ee7ac40..0000000000
--- a/recipes/linux/corgi-kernel-2.4-embedix.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-MACHINE = "corgi"
-COMPATIBLE_HOST = "arm.*-linux"
-require openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
diff --git a/recipes/linux/files/ir240_sys_max_tx-2.diff b/recipes/linux/files/ir240_sys_max_tx-2.diff
deleted file mode 100644
index 5f1307d7dc..0000000000
--- a/recipes/linux/files/ir240_sys_max_tx-2.diff
+++ /dev/null
@@ -1,110 +0,0 @@
---- linux/net/irda/irsysctl.c.orig 2003-05-13 11:20:16.000000000 +0200
-+++ linux/net/irda/irsysctl.c 2005-01-22 18:39:40.496001712 +0100
-@@ -40,7 +40,8 @@
-
- enum { DISCOVERY=1, DEVNAME, DEBUG, FAST_POLL, DISCOVERY_SLOTS,
- DISCOVERY_TIMEOUT, SLOT_TIMEOUT, MAX_BAUD_RATE, MIN_TX_TURN_TIME,
-- MAX_NOREPLY_TIME, WARN_NOREPLY_TIME, LAP_KEEPALIVE_TIME, SPECIFIC_DEV };
-+ MAX_TX_DATA_SIZE, MAX_NOREPLY_TIME, WARN_NOREPLY_TIME, LAP_KEEPALIVE_TIME,
-+ SPECIFIC_DEV };
-
- extern int sysctl_discovery;
- extern int sysctl_discovery_slots;
-@@ -51,6 +52,7 @@
- extern char sysctl_devname[];
- extern int sysctl_max_baud_rate;
- extern int sysctl_min_tx_turn_time;
-+extern int sysctl_max_tx_data_size;
- extern int sysctl_max_noreply_time;
- extern int sysctl_warn_noreply_time;
- extern int sysctl_lap_keepalive_time;
-@@ -71,6 +73,8 @@
- static int min_max_baud_rate = 2400;
- static int max_min_tx_turn_time = 10000; /* See qos.c - IrLAP spec */
- static int min_min_tx_turn_time = 0;
-+static int max_max_tx_data_size = 2048; /* See qos.c - IrLAP spec */
-+static int min_max_tx_data_size = 64;
- static int max_max_noreply_time = 40; /* See qos.c - IrLAP spec */
- static int min_max_noreply_time = 3;
- static int max_warn_noreply_time = 3; /* 3s == standard */
-@@ -128,6 +132,9 @@
- { MIN_TX_TURN_TIME, "min_tx_turn_time", &sysctl_min_tx_turn_time,
- sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec,
- NULL, &min_min_tx_turn_time, &max_min_tx_turn_time },
-+ { MAX_TX_DATA_SIZE, "max_tx_data_size", &sysctl_max_tx_data_size,
-+ sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec,
-+ NULL, &min_max_tx_data_size, &max_max_tx_data_size },
- { MAX_NOREPLY_TIME, "max_noreply_time", &sysctl_max_noreply_time,
- sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec,
- NULL, &min_max_noreply_time, &max_max_noreply_time },
---- linux/net/irda/qos.c.orig 2003-05-13 11:20:16.000000000 +0200
-+++ linux/net/irda/qos.c 2005-01-22 18:36:46.759413688 +0100
-@@ -60,10 +60,26 @@
- * Nonzero values (usec) are used as lower limit to the per-connection
- * mtt value which was announced by the other end during negotiation.
- * Might be helpful if the peer device provides too short mtt.
-- * Default is 10 which means using the unmodified value given by the peer
-- * except if it's 0 (0 is likely a bug in the other stack).
-+ * Default is 10us which means using the unmodified value given by the
-+ * peer except if it's 0 (0 is likely a bug in the other stack).
- */
- unsigned sysctl_min_tx_turn_time = 10;
-+/*
-+ * Maximum data size to be used in transmission in payload of LAP frame.
-+ * There is a bit of confusion in the IrDA spec :
-+ * The LAP spec defines the payload of a LAP frame (I field) to be
-+ * 2048 bytes max (IrLAP 1.1, chapt 6.6.5, p40).
-+ * On the other hand, the PHY mention frames of 2048 bytes max (IrPHY
-+ * 1.2, chapt 5.3.2.1, p41). But, this number includes the LAP header
-+ * (2 bytes), and CRC (32 bits at 4 Mb/s). So, for the I field (LAP
-+ * payload), that's only 2042 bytes. Oups !
-+ * I've had trouble trouble transmitting 2048 bytes frames with USB
-+ * dongles and nsc-ircc at 4 Mb/s, so adjust to 2042... I don't know
-+ * if this bug applies only for 2048 bytes frames or all negociated
-+ * frame sizes, but all hardware seem to support "2048 bytes" frames.
-+ * You can use the sysctl to play with this value anyway.
-+ * Jean II */
-+unsigned sysctl_max_tx_data_size = 2042;
-
- /*
- * Specific device list limits some negotiation parameters at the connection
-@@ -398,10 +414,10 @@
- while ((qos->data_size.value > line_capacity) && (index > 0)) {
- qos->data_size.value = data_sizes[index--];
- IRDA_DEBUG(2, __FUNCTION__
-- "(), redusing data size to %d\n",
-+ "(), reducing data size to %d\n",
- qos->data_size.value);
- }
--#else /* Use method descibed in section 6.6.11 of IrLAP */
-+#else /* Use method described in section 6.6.11 of IrLAP */
- while (irlap_requested_line_capacity(qos) > line_capacity) {
- ASSERT(index != 0, return;);
-
-@@ -409,18 +425,24 @@
- if (qos->window_size.value > 1) {
- qos->window_size.value--;
- IRDA_DEBUG(2, __FUNCTION__
-- "(), redusing window size to %d\n",
-+ "(), reducing window size to %d\n",
- qos->window_size.value);
- } else if (index > 1) {
- qos->data_size.value = data_sizes[index--];
- IRDA_DEBUG(2, __FUNCTION__
-- "(), redusing data size to %d\n",
-+ "(), reducing data size to %d\n",
- qos->data_size.value);
- } else {
- WARNING(__FUNCTION__ "(), nothing more we can do!\n");
- }
- }
- #endif /* CONFIG_IRDA_DYNAMIC_WINDOW */
-+ /*
-+ * Fix tx data size according to user limits - Jean II
-+ */
-+ if (qos->data_size.value > sysctl_max_tx_data_size)
-+ /* Allow non discrete adjustement to avoid loosing capacity */
-+ qos->data_size.value = sysctl_max_tx_data_size;
- }
-
- /*
diff --git a/recipes/linux/files/ir241_qos_param-2.diff b/recipes/linux/files/ir241_qos_param-2.diff
deleted file mode 100644
index dfe77c52b0..0000000000
--- a/recipes/linux/files/ir241_qos_param-2.diff
+++ /dev/null
@@ -1,164 +0,0 @@
---- linux/net/irda/qos.c.orig 2005-01-22 19:19:56.013787192 +0100
-+++ linux/net/irda/qos.c 2005-01-22 19:21:13.493008560 +0100
-@@ -73,13 +73,18 @@
- * 1.2, chapt 5.3.2.1, p41). But, this number includes the LAP header
- * (2 bytes), and CRC (32 bits at 4 Mb/s). So, for the I field (LAP
- * payload), that's only 2042 bytes. Oups !
-- * I've had trouble trouble transmitting 2048 bytes frames with USB
-- * dongles and nsc-ircc at 4 Mb/s, so adjust to 2042... I don't know
-- * if this bug applies only for 2048 bytes frames or all negociated
-- * frame sizes, but all hardware seem to support "2048 bytes" frames.
-- * You can use the sysctl to play with this value anyway.
-+ * My nsc-ircc hardware has troubles receiving 2048 bytes frames at 4 Mb/s,
-+ * so adjust to 2042... I don't know if this bug applies only for 2048
-+ * bytes frames or all negociated frame sizes, but you can use the sysctl
-+ * to play with this value anyway.
- * Jean II */
- unsigned sysctl_max_tx_data_size = 2042;
-+/*
-+ * Maximum transmit window, i.e. number of LAP frames between turn-around.
-+ * This allow to override what the peer told us. Some peers are buggy and
-+ * don't always support what they tell us.
-+ * Jean II */
-+unsigned sysctl_max_tx_window = 7;
-
- /*
- * Specific device list limits some negotiation parameters at the connection
-@@ -227,7 +232,19 @@
- {
- __u16 msb = 0x8000;
- int index = 15; /* Current MSB */
--
-+
-+ /* Check for buggy peers.
-+ * Note : there is a small probability that it could be us, but I
-+ * would expect driver authors to catch that pretty early and be
-+ * able to check precisely what's going on. If a end user sees this,
-+ * it's very likely the peer. - Jean II */
-+ if (word == 0) {
-+ WARNING("%s(), Detected buggy peer, adjust null PV to 0x1!\n",
-+ __FUNCTION__);
-+ /* The only safe choice (we don't know the array size) */
-+ word = 0x1;
-+ }
-+
- while (msb) {
- if (word & msb)
- break; /* Found it! */
-@@ -378,10 +395,14 @@
-
- /*
- * Make sure the mintt is sensible.
-+ * Main culprit : Ericsson T39. - Jean II
- */
- if (sysctl_min_tx_turn_time > qos->min_turn_time.value) {
- int i;
-
-+ WARNING("%s(), Detected buggy peer, adjust mtt to %dus!\n",
-+ __FUNCTION__, sysctl_min_tx_turn_time);
-+
- /* We don't really need bits, but easier this way */
- i = value_highest_bit(sysctl_min_tx_turn_time, min_turn_times,
- 8, &qos->min_turn_time.bits);
-@@ -443,6 +464,11 @@
- if (qos->data_size.value > sysctl_max_tx_data_size)
- /* Allow non discrete adjustement to avoid loosing capacity */
- qos->data_size.value = sysctl_max_tx_data_size;
-+ /*
-+ * Override Tx window if user request it. - Jean II
-+ */
-+ if (qos->window_size.value > sysctl_max_tx_window)
-+ qos->window_size.value = sysctl_max_tx_window;
- }
-
- /*
---- linux/net/irda/irsysctl.c.orig 2005-01-22 19:19:56.006788256 +0100
-+++ linux/net/irda/irsysctl.c 2005-01-22 19:24:31.273941288 +0100
-@@ -40,8 +40,8 @@
-
- enum { DISCOVERY=1, DEVNAME, DEBUG, FAST_POLL, DISCOVERY_SLOTS,
- DISCOVERY_TIMEOUT, SLOT_TIMEOUT, MAX_BAUD_RATE, MIN_TX_TURN_TIME,
-- MAX_TX_DATA_SIZE, MAX_NOREPLY_TIME, WARN_NOREPLY_TIME, LAP_KEEPALIVE_TIME,
-- SPECIFIC_DEV };
-+ MAX_TX_DATA_SIZE, MAX_TX_WINDOW, MAX_NOREPLY_TIME, WARN_NOREPLY_TIME,
-+ LAP_KEEPALIVE_TIME, SPECIFIC_DEV };
-
- extern int sysctl_discovery;
- extern int sysctl_discovery_slots;
-@@ -53,6 +53,7 @@
- extern int sysctl_max_baud_rate;
- extern int sysctl_min_tx_turn_time;
- extern int sysctl_max_tx_data_size;
-+extern int sysctl_max_tx_window;
- extern int sysctl_max_noreply_time;
- extern int sysctl_warn_noreply_time;
- extern int sysctl_lap_keepalive_time;
-@@ -75,6 +76,8 @@
- static int min_min_tx_turn_time = 0;
- static int max_max_tx_data_size = 2048; /* See qos.c - IrLAP spec */
- static int min_max_tx_data_size = 64;
-+static int max_max_tx_window = 7; /* See qos.c - IrLAP spec */
-+static int min_max_tx_window = 1;
- static int max_max_noreply_time = 40; /* See qos.c - IrLAP spec */
- static int min_max_noreply_time = 3;
- static int max_warn_noreply_time = 3; /* 3s == standard */
-@@ -135,6 +138,9 @@
- { MAX_TX_DATA_SIZE, "max_tx_data_size", &sysctl_max_tx_data_size,
- sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec,
- NULL, &min_max_tx_data_size, &max_max_tx_data_size },
-+ { MAX_TX_WINDOW, "max_tx_window", &sysctl_max_tx_window,
-+ sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec,
-+ NULL, &min_max_tx_window, &max_max_tx_window },
- { MAX_NOREPLY_TIME, "max_noreply_time", &sysctl_max_noreply_time,
- sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec,
- NULL, &min_max_noreply_time, &max_max_noreply_time },
---- linux/net/irda/parameters.c.orig 2003-05-13 11:20:16.000000000 +0200
-+++ linux/net/irda/parameters.c 2005-01-22 19:21:13.527003392 +0100
-@@ -204,11 +204,13 @@
- {
- irda_param_t p;
- int n = 0;
-+ int extract_len; /* Real lenght we extract */
- int err;
-
- p.pi = pi; /* In case handler needs to know */
- p.pl = buf[1]; /* Extract lenght of value */
- p.pv.i = 0; /* Clear value */
-+ extract_len = p.pl; /* Default : extract all */
-
- /* Check if buffer is long enough for parsing */
- if (len < (2+p.pl)) {
-@@ -220,18 +222,30 @@
- /*
- * Check that the integer length is what we expect it to be. If the
- * handler want a 16 bits integer then a 32 bits is not good enough
-+ * PV_INTEGER means that the handler is flexible.
- */
- if (((type & PV_MASK) != PV_INTEGER) && ((type & PV_MASK) != p.pl)) {
- ERROR(__FUNCTION__ "(), invalid parameter length! "
- "Expected %d bytes, but value had %d bytes!\n",
- type & PV_MASK, p.pl);
-
-- /* Skip parameter */
-- return p.pl+2;
-+ /* Most parameters are bit/byte fields or little endian,
-+ * so it's ok to only extract a subset of it (the subset
-+ * that the handler expect). This is necessary, as some
-+ * broken implementations seems to add extra undefined bits.
-+ * If the parameter is shorter than we expect or is big
-+ * endian, we can't play those tricks. Jean II */
-+ if((p.pl < (type & PV_MASK)) || (type & PV_BIG_ENDIAN)) {
-+ /* Skip parameter */
-+ return p.pl+2;
-+ } else {
-+ /* Extract subset of it, fallthrough */
-+ extract_len = type & PV_MASK;
-+ }
- }
-
-
-- switch (p.pl) {
-+ switch (extract_len) {
- case 1:
- n += irda_param_unpack(buf+2, "b", &p.pv.i);
- break;
diff --git a/recipes/linux/files/iw240_we15-6.diff b/recipes/linux/files/iw240_we15-6.diff
deleted file mode 100644
index 2ebfd8ec12..0000000000
--- a/recipes/linux/files/iw240_we15-6.diff
+++ /dev/null
@@ -1,399 +0,0 @@
-diff -u -p linux/include/linux/wireless.14.h linux/include/linux/wireless.h
---- linux/include/linux/wireless.14.h Mon Dec 2 18:51:00 2002
-+++ linux/include/linux/wireless.h Mon Dec 2 18:53:35 2002
-@@ -1,7 +1,7 @@
- /*
- * This file define a set of standard wireless extensions
- *
-- * Version : 14 25.1.02
-+ * Version : 15 12.7.02
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
- * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
-@@ -80,7 +80,7 @@
- * (there is some stuff that will be added in the future...)
- * I just plan to increment with each new version.
- */
--#define WIRELESS_EXT 14
-+#define WIRELESS_EXT 15
-
- /*
- * Changes :
-@@ -153,17 +153,32 @@
- * - Define additional specific event numbers
- * - Add "addr" and "param" fields in union iwreq_data
- * - AP scanning stuff (SIOCSIWSCAN and friends)
-+ *
-+ * V14 to V15
-+ * ----------
-+ * - Add IW_PRIV_TYPE_ADDR for struct sockaddr private arg
-+ * - Make struct iw_freq signed (both m & e), add explicit padding
-+ * - Add IWEVCUSTOM for driver specific event/scanning token
-+ * - Add IW_MAX_GET_SPY for driver returning a lot of addresses
-+ * - Add IW_TXPOW_RANGE for range of Tx Powers
-+ * - Add IWEVREGISTERED & IWEVEXPIRED events for Access Points
-+ * - Add IW_MODE_MONITOR for passive monitor
- */
-
- /**************************** CONSTANTS ****************************/
-
- /* -------------------------- IOCTL LIST -------------------------- */
-
--/* Basic operations */
-+/* Wireless Identification */
- #define SIOCSIWCOMMIT 0x8B00 /* Commit pending changes to driver */
- #define SIOCGIWNAME 0x8B01 /* get name == wireless protocol */
--#define SIOCSIWNWID 0x8B02 /* set network id (the cell) */
--#define SIOCGIWNWID 0x8B03 /* get network id */
-+/* SIOCGIWNAME is used to verify the presence of Wireless Extensions.
-+ * Common values : "IEEE 802.11-DS", "IEEE 802.11-FH", "IEEE 802.11b"...
-+ * Don't put the name of your driver there, it's useless. */
-+
-+/* Basic operations */
-+#define SIOCSIWNWID 0x8B02 /* set network id (pre-802.11) */
-+#define SIOCGIWNWID 0x8B03 /* get network id (the cell) */
- #define SIOCSIWFREQ 0x8B04 /* set channel/frequency (Hz) */
- #define SIOCGIWFREQ 0x8B05 /* get channel/frequency (Hz) */
- #define SIOCSIWMODE 0x8B06 /* set operation mode */
-@@ -178,16 +193,18 @@
- #define SIOCGIWPRIV 0x8B0D /* get private ioctl interface info */
- #define SIOCSIWSTATS 0x8B0E /* Unused */
- #define SIOCGIWSTATS 0x8B0F /* Get /proc/net/wireless stats */
-+/* SIOCGIWSTATS is strictly used between user space and the kernel, and
-+ * is never passed to the driver (i.e. the driver will never see it). */
-
--/* Mobile IP support */
-+/* Mobile IP support (statistics per MAC address) */
- #define SIOCSIWSPY 0x8B10 /* set spy addresses */
- #define SIOCGIWSPY 0x8B11 /* get spy info (quality of link) */
-
- /* Access Point manipulation */
- #define SIOCSIWAP 0x8B14 /* set access point MAC addresses */
- #define SIOCGIWAP 0x8B15 /* get access point MAC addresses */
--#define SIOCGIWAPLIST 0x8B17 /* get list of access point in range */
--#define SIOCSIWSCAN 0x8B18 /* trigger scanning */
-+#define SIOCGIWAPLIST 0x8B17 /* Deprecated in favor of scanning */
-+#define SIOCSIWSCAN 0x8B18 /* trigger scanning (list cells) */
- #define SIOCGIWSCAN 0x8B19 /* get scanning results */
-
- /* 802.11 specific support */
-@@ -197,9 +214,7 @@
- #define SIOCGIWNICKN 0x8B1D /* get node name/nickname */
- /* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
- * within the 'iwreq' structure, so we need to use the 'data' member to
-- * point to a string in user space, like it is done for RANGE...
-- * The "flags" member indicate if the ESSID is active or not (promiscuous).
-- */
-+ * point to a string in user space, like it is done for RANGE... */
-
- /* Other parameters useful in 802.11 and some other devices */
- #define SIOCSIWRATE 0x8B20 /* set default bit rate (bps) */
-@@ -257,7 +272,10 @@
- /* Most events use the same identifier as ioctl requests */
-
- #define IWEVTXDROP 0x8C00 /* Packet dropped to excessive retry */
--#define IWEVQUAL 0x8C01 /* Quality part of statistics */
-+#define IWEVQUAL 0x8C01 /* Quality part of statistics (scan) */
-+#define IWEVCUSTOM 0x8C02 /* Driver specific ascii string */
-+#define IWEVREGISTERED 0x8C03 /* Discovered a new node (AP mode) */
-+#define IWEVEXPIRED 0x8C04 /* Expired a node (AP mode) */
-
- #define IWEVFIRST 0x8C00
-
-@@ -273,7 +291,8 @@
- #define IW_PRIV_TYPE_BYTE 0x1000 /* Char as number */
- #define IW_PRIV_TYPE_CHAR 0x2000 /* Char as character */
- #define IW_PRIV_TYPE_INT 0x4000 /* 32 bits int */
--#define IW_PRIV_TYPE_FLOAT 0x5000
-+#define IW_PRIV_TYPE_FLOAT 0x5000 /* struct iw_freq */
-+#define IW_PRIV_TYPE_ADDR 0x6000 /* struct sockaddr */
-
- #define IW_PRIV_SIZE_FIXED 0x0800 /* Variable or fixed nuber of args */
-
-@@ -297,13 +316,16 @@
-
- /* Maximum tx powers in the range struct */
- #define IW_MAX_TXPOWER 8
-+/* Note : if you more than 8 TXPowers, just set the max and min or
-+ * a few of them in the struct iw_range. */
-
- /* Maximum of address that you may set with SPY */
--#define IW_MAX_SPY 8
-+#define IW_MAX_SPY 8 /* set */
-+#define IW_MAX_GET_SPY 64 /* get */
-
- /* Maximum of address that you may get in the
- list of access points in range */
--#define IW_MAX_AP 8
-+#define IW_MAX_AP 64
-
- /* Maximum size of the ESSID and NICKN strings */
- #define IW_ESSID_MAX_SIZE 32
-@@ -315,6 +337,7 @@
- #define IW_MODE_MASTER 3 /* Synchronisation master or Access Point */
- #define IW_MODE_REPEAT 4 /* Wireless Repeater (forwarder) */
- #define IW_MODE_SECOND 5 /* Secondary master/repeater (backup) */
-+#define IW_MODE_MONITOR 6 /* Passive monitor (listen only) */
-
- /* Maximum number of size of encoding token available
- * they are listed in the range structure */
-@@ -350,8 +373,10 @@
- #define IW_POWER_RELATIVE 0x0004 /* Value is not in seconds/ms/us */
-
- /* Transmit Power flags available */
-+#define IW_TXPOW_TYPE 0x00FF /* Type of value */
- #define IW_TXPOW_DBM 0x0000 /* Value is in dBm */
- #define IW_TXPOW_MWATT 0x0001 /* Value is in mW */
-+#define IW_TXPOW_RANGE 0x1000 /* Range of value between min/max */
-
- /* Retry limits and lifetime flags available */
- #define IW_RETRY_ON 0x0000 /* No details... */
-@@ -376,6 +401,9 @@
- /* Maximum size of returned data */
- #define IW_SCAN_MAX_DATA 4096 /* In bytes */
-
-+/* Max number of char in custom event - use multiple of them if needed */
-+#define IW_CUSTOM_MAX 256 /* In bytes */
-+
- /****************************** TYPES ******************************/
-
- /* --------------------------- SUBTYPES --------------------------- */
-@@ -411,9 +439,10 @@ struct iw_point
- */
- struct iw_freq
- {
-- __u32 m; /* Mantissa */
-- __u16 e; /* Exponent */
-+ __s32 m; /* Mantissa */
-+ __s16 e; /* Exponent */
- __u8 i; /* List index (when in range struct) */
-+ __u8 pad; /* Unused - just for alignement */
- };
-
- /*
-diff -u -p linux/include/net/iw_handler.14.h linux/include/net/iw_handler.h
---- linux/include/net/iw_handler.14.h Mon Dec 2 18:51:17 2002
-+++ linux/include/net/iw_handler.h Mon Dec 2 18:54:51 2002
-@@ -1,7 +1,7 @@
- /*
- * This file define the new driver API for Wireless Extensions
- *
-- * Version : 3 17.1.02
-+ * Version : 4 21.6.02
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
- * Copyright (c) 2001-2002 Jean Tourrilhes, All Rights Reserved.
-@@ -206,7 +206,7 @@
- * will be needed...
- * I just plan to increment with each new version.
- */
--#define IW_HANDLER_VERSION 3
-+#define IW_HANDLER_VERSION 4
-
- /*
- * Changes :
-@@ -217,6 +217,9 @@
- * - Add Wireless Event support :
- * o wireless_send_event() prototype
- * o iwe_stream_add_event/point() inline functions
-+ * V3 to V4
-+ * --------
-+ * - Reshuffle IW_HEADER_TYPE_XXX to map IW_PRIV_TYPE_XXX changes
- */
-
- /**************************** CONSTANTS ****************************/
-@@ -233,10 +236,10 @@
- #define IW_HEADER_TYPE_CHAR 2 /* char [IFNAMSIZ] */
- #define IW_HEADER_TYPE_UINT 4 /* __u32 */
- #define IW_HEADER_TYPE_FREQ 5 /* struct iw_freq */
--#define IW_HEADER_TYPE_POINT 6 /* struct iw_point */
--#define IW_HEADER_TYPE_PARAM 7 /* struct iw_param */
--#define IW_HEADER_TYPE_ADDR 8 /* struct sockaddr */
--#define IW_HEADER_TYPE_QUAL 9 /* struct iw_quality */
-+#define IW_HEADER_TYPE_ADDR 6 /* struct sockaddr */
-+#define IW_HEADER_TYPE_POINT 8 /* struct iw_point */
-+#define IW_HEADER_TYPE_PARAM 9 /* struct iw_param */
-+#define IW_HEADER_TYPE_QUAL 10 /* struct iw_quality */
-
- /* Handling flags */
- /* Most are not implemented. I just use them as a reminder of some
-diff -u -p linux/net/core/wireless.14.c linux/net/core/wireless.c
---- linux/net/core/wireless.14.c Mon Dec 2 18:51:35 2002
-+++ linux/net/core/wireless.c Mon Dec 2 18:53:10 2002
-@@ -33,8 +33,16 @@
- * o Propagate events as rtnetlink IFLA_WIRELESS option
- * o Generate event on selected SET requests
- *
-- * v4 - 18.04.01 - Jean II
-+ * v4 - 18.04.02 - Jean II
- * o Fix stupid off by one in iw_ioctl_description : IW_ESSID_MAX_SIZE + 1
-+ *
-+ * v5 - 21.06.02 - Jean II
-+ * o Add IW_PRIV_TYPE_ADDR in priv_type_size (+cleanup)
-+ * o Reshuffle IW_HEADER_TYPE_XXX to map IW_PRIV_TYPE_XXX changes
-+ * o Add IWEVCUSTOM for driver specific event/scanning token
-+ * o Turn on WE_STRICT_WRITE by default + kernel warning
-+ * o Fix WE_STRICT_WRITE in ioctl_export_private() (32 => iw_num)
-+ * o Fix off-by-one in test (extra_size <= IFNAMSIZ)
- */
-
- /***************************** INCLUDES *****************************/
-@@ -50,8 +58,9 @@
-
- /**************************** CONSTANTS ****************************/
-
--/* This will be turned on later on... */
--#undef WE_STRICT_WRITE /* Check write buffer size */
-+/* Enough lenience, let's make sure things are proper... */
-+#define WE_STRICT_WRITE /* Check write buffer size */
-+/* I'll probably drop both the define and kernel message in the next version */
-
- /* Debuging stuff */
- #undef WE_IOCTL_DEBUG /* Debug IOCTL API */
-@@ -106,7 +115,7 @@ static const struct iw_ioctl_description
- /* SIOCSIWSPY */
- { IW_HEADER_TYPE_POINT, 0, sizeof(struct sockaddr), 0, IW_MAX_SPY, 0},
- /* SIOCGIWSPY */
-- { IW_HEADER_TYPE_POINT, 0, (sizeof(struct sockaddr) + sizeof(struct iw_quality)), 0, IW_MAX_SPY, 0},
-+ { IW_HEADER_TYPE_POINT, 0, (sizeof(struct sockaddr) + sizeof(struct iw_quality)), 0, IW_MAX_GET_SPY, 0},
- /* -- hole -- */
- { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
- /* -- hole -- */
-@@ -176,25 +185,41 @@ static const struct iw_ioctl_description
- { IW_HEADER_TYPE_ADDR, 0, 0, 0, 0, 0},
- /* IWEVQUAL */
- { IW_HEADER_TYPE_QUAL, 0, 0, 0, 0, 0},
-+ /* IWEVCUSTOM */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_CUSTOM_MAX, 0},
-+ /* IWEVREGISTERED */
-+ { IW_HEADER_TYPE_ADDR, 0, 0, 0, 0, 0},
-+ /* IWEVEXPIRED */
-+ { IW_HEADER_TYPE_ADDR, 0, 0, 0, 0, 0},
- };
- static const int standard_event_num = (sizeof(standard_event) /
- sizeof(struct iw_ioctl_description));
-
- /* Size (in bytes) of the various private data types */
--static const char priv_type_size[] = { 0, 1, 1, 0, 4, 4, 0, 0 };
-+static const char priv_type_size[] = {
-+ 0, /* IW_PRIV_TYPE_NONE */
-+ 1, /* IW_PRIV_TYPE_BYTE */
-+ 1, /* IW_PRIV_TYPE_CHAR */
-+ 0, /* Not defined */
-+ sizeof(__u32), /* IW_PRIV_TYPE_INT */
-+ sizeof(struct iw_freq), /* IW_PRIV_TYPE_FLOAT */
-+ sizeof(struct sockaddr), /* IW_PRIV_TYPE_ADDR */
-+ 0, /* Not defined */
-+};
-
- /* Size (in bytes) of various events */
- static const int event_type_size[] = {
-- IW_EV_LCP_LEN,
-+ IW_EV_LCP_LEN, /* IW_HEADER_TYPE_NULL */
-+ 0,
-+ IW_EV_CHAR_LEN, /* IW_HEADER_TYPE_CHAR */
- 0,
-- IW_EV_CHAR_LEN,
-+ IW_EV_UINT_LEN, /* IW_HEADER_TYPE_UINT */
-+ IW_EV_FREQ_LEN, /* IW_HEADER_TYPE_FREQ */
-+ IW_EV_ADDR_LEN, /* IW_HEADER_TYPE_ADDR */
- 0,
-- IW_EV_UINT_LEN,
-- IW_EV_FREQ_LEN,
- IW_EV_POINT_LEN, /* Without variable payload */
-- IW_EV_PARAM_LEN,
-- IW_EV_ADDR_LEN,
-- IW_EV_QUAL_LEN,
-+ IW_EV_PARAM_LEN, /* IW_HEADER_TYPE_PARAM */
-+ IW_EV_QUAL_LEN, /* IW_HEADER_TYPE_QUAL */
- };
-
- /************************ COMMON SUBROUTINES ************************/
-@@ -440,8 +465,10 @@ static inline int ioctl_export_private(s
- return -EFAULT;
- #ifdef WE_STRICT_WRITE
- /* Check if there is enough buffer up there */
-- if(iwr->u.data.length < (SIOCIWLASTPRIV - SIOCIWFIRSTPRIV + 1))
-+ if(iwr->u.data.length < dev->wireless_handlers->num_private_args) {
-+ printk(KERN_ERR "%s (WE) : Buffer for request SIOCGIWPRIV too small (%d<%d)\n", dev->name, iwr->u.data.length, dev->wireless_handlers->num_private_args);
- return -E2BIG;
-+ }
- #endif /* WE_STRICT_WRITE */
-
- /* Set the number of available ioctls. */
-@@ -471,6 +498,7 @@ static inline int ioctl_standard_call(st
- const struct iw_ioctl_description * descr;
- struct iw_request_info info;
- int ret = -EINVAL;
-+ int user_size = 0;
-
- /* Get the description of the IOCTL */
- if((cmd - SIOCIWFIRST) >= standard_ioctl_num)
-@@ -518,11 +546,8 @@ static inline int ioctl_standard_call(st
- /* Check NULL pointer */
- if(iwr->u.data.pointer == NULL)
- return -EFAULT;
--#ifdef WE_STRICT_WRITE
-- /* Check if there is enough buffer up there */
-- if(iwr->u.data.length < descr->max_tokens)
-- return -E2BIG;
--#endif /* WE_STRICT_WRITE */
-+ /* Save user space buffer size for checking */
-+ user_size = iwr->u.data.length;
- }
-
- #ifdef WE_IOCTL_DEBUG
-@@ -559,6 +584,15 @@ static inline int ioctl_standard_call(st
-
- /* If we have something to return to the user */
- if (!ret && IW_IS_GET(cmd)) {
-+#ifdef WE_STRICT_WRITE
-+ /* Check if there is enough buffer up there */
-+ if(user_size < iwr->u.data.length) {
-+ printk(KERN_ERR "%s (WE) : Buffer for request %04X too small (%d<%d)\n", dev->name, cmd, user_size, iwr->u.data.length);
-+ kfree(extra);
-+ return -E2BIG;
-+ }
-+#endif /* WE_STRICT_WRITE */
-+
- err = copy_to_user(iwr->u.data.pointer, extra,
- iwr->u.data.length *
- descr->token_size);
-@@ -646,12 +680,18 @@ static inline int ioctl_private_call(str
- /* Compute the size of the set/get arguments */
- if(descr != NULL) {
- if(IW_IS_SET(cmd)) {
-+ int offset = 0; /* For sub-ioctls */
-+ /* Check for sub-ioctl handler */
-+ if(descr->name[0] == '\0')
-+ /* Reserve one int for sub-ioctl index */
-+ offset = sizeof(__u32);
-+
- /* Size of set arguments */
- extra_size = get_priv_size(descr->set_args);
-
- /* Does it fits in iwr ? */
- if((descr->set_args & IW_PRIV_SIZE_FIXED) &&
-- (extra_size < IFNAMSIZ))
-+ ((extra_size + offset) <= IFNAMSIZ))
- extra_size = 0;
- } else {
- /* Size of set arguments */
-@@ -659,7 +699,7 @@ static inline int ioctl_private_call(str
-
- /* Does it fits in iwr ? */
- if((descr->get_args & IW_PRIV_SIZE_FIXED) &&
-- (extra_size < IFNAMSIZ))
-+ (extra_size <= IFNAMSIZ))
- extra_size = 0;
- }
- }
-@@ -925,7 +965,7 @@ void wireless_send_event(struct net_devi
- * The best the driver could do is to log an error message.
- * We will do it ourselves instead...
- */
-- printk(KERN_ERR "%s (WE) : Invalid Wireless Event (0x%04X)\n",
-+ printk(KERN_ERR "%s (WE) : Invalid/Unknown Wireless Event (0x%04X)\n",
- dev->name, cmd);
- return;
- }
diff --git a/recipes/linux/files/iw249_we16-6.diff b/recipes/linux/files/iw249_we16-6.diff
deleted file mode 100644
index 0a5aaab954..0000000000
--- a/recipes/linux/files/iw249_we16-6.diff
+++ /dev/null
@@ -1,670 +0,0 @@
-diff -u -p linux/include/linux/wireless.15.h linux/include/linux/wireless.h
---- linux/include/linux/wireless.15.h 2004-11-05 14:59:33.000000000 -0800
-+++ linux/include/linux/wireless.h 2004-11-05 15:00:42.000000000 -0800
-@@ -1,7 +1,7 @@
- /*
- * This file define a set of standard wireless extensions
- *
-- * Version : 15 12.7.02
-+ * Version : 16 2.4.03
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
- * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
-@@ -69,6 +69,8 @@
-
- /***************************** INCLUDES *****************************/
-
-+/* To minimise problems in user space, I might remove those headers
-+ * at some point. Jean II */
- #include <linux/types.h> /* for "caddr_t" et al */
- #include <linux/socket.h> /* for "struct sockaddr" et al */
- #include <linux/if.h> /* for IFNAMSIZ and co... */
-@@ -80,7 +82,7 @@
- * (there is some stuff that will be added in the future...)
- * I just plan to increment with each new version.
- */
--#define WIRELESS_EXT 15
-+#define WIRELESS_EXT 16
-
- /*
- * Changes :
-@@ -163,6 +165,16 @@
- * - Add IW_TXPOW_RANGE for range of Tx Powers
- * - Add IWEVREGISTERED & IWEVEXPIRED events for Access Points
- * - Add IW_MODE_MONITOR for passive monitor
-+ *
-+ * V15 to V16
-+ * ----------
-+ * - Increase the number of bitrates in iw_range to 32 (for 802.11g)
-+ * - Increase the number of frequencies in iw_range to 32 (for 802.11b+a)
-+ * - Reshuffle struct iw_range for increases, add filler
-+ * - Increase IW_MAX_AP to 64 for driver returning a lot of addresses
-+ * - Remove IW_MAX_GET_SPY because conflict with enhanced spy support
-+ * - Add SIOCSIWTHRSPY/SIOCGIWTHRSPY and "struct iw_thrspy"
-+ * - Add IW_ENCODE_TEMP and iw_range->encoding_login_index
- */
-
- /**************************** CONSTANTS ****************************/
-@@ -196,9 +208,11 @@
- /* SIOCGIWSTATS is strictly used between user space and the kernel, and
- * is never passed to the driver (i.e. the driver will never see it). */
-
--/* Mobile IP support (statistics per MAC address) */
-+/* Spy support (statistics per MAC address - used for Mobile IP support) */
- #define SIOCSIWSPY 0x8B10 /* set spy addresses */
- #define SIOCGIWSPY 0x8B11 /* get spy info (quality of link) */
-+#define SIOCSIWTHRSPY 0x8B12 /* set spy threshold (spy event) */
-+#define SIOCGIWTHRSPY 0x8B13 /* get spy threshold */
-
- /* Access Point manipulation */
- #define SIOCSIWAP 0x8B14 /* set access point MAC addresses */
-@@ -294,7 +308,7 @@
- #define IW_PRIV_TYPE_FLOAT 0x5000 /* struct iw_freq */
- #define IW_PRIV_TYPE_ADDR 0x6000 /* struct sockaddr */
-
--#define IW_PRIV_SIZE_FIXED 0x0800 /* Variable or fixed nuber of args */
-+#define IW_PRIV_SIZE_FIXED 0x0800 /* Variable or fixed number of args */
-
- #define IW_PRIV_SIZE_MASK 0x07FF /* Max number of those args */
-
-@@ -306,13 +320,13 @@
- /* ----------------------- OTHER CONSTANTS ----------------------- */
-
- /* Maximum frequencies in the range struct */
--#define IW_MAX_FREQUENCIES 16
-+#define IW_MAX_FREQUENCIES 32
- /* Note : if you have something like 80 frequencies,
- * don't increase this constant and don't fill the frequency list.
- * The user will be able to set by channel anyway... */
-
- /* Maximum bit rates in the range struct */
--#define IW_MAX_BITRATES 8
-+#define IW_MAX_BITRATES 32
-
- /* Maximum tx powers in the range struct */
- #define IW_MAX_TXPOWER 8
-@@ -320,8 +334,7 @@
- * a few of them in the struct iw_range. */
-
- /* Maximum of address that you may set with SPY */
--#define IW_MAX_SPY 8 /* set */
--#define IW_MAX_GET_SPY 64 /* get */
-+#define IW_MAX_SPY 8
-
- /* Maximum of address that you may get in the
- list of access points in range */
-@@ -354,7 +367,8 @@
- #define IW_ENCODE_ENABLED 0x0000 /* Encoding enabled */
- #define IW_ENCODE_RESTRICTED 0x4000 /* Refuse non-encoded packets */
- #define IW_ENCODE_OPEN 0x2000 /* Accept non-encoded packets */
--#define IW_ENCODE_NOKEY 0x0800 /* Key is write only, so not present */
-+#define IW_ENCODE_NOKEY 0x0800 /* Key is write only, so not present */
-+#define IW_ENCODE_TEMP 0x0400 /* Temporary key */
-
- /* Power management flags available (along with the value, if any) */
- #define IW_POWER_ON 0x0000 /* No details... */
-@@ -482,6 +496,17 @@ struct iw_missed
- __u32 beacon; /* Missed beacons/superframe */
- };
-
-+/*
-+ * Quality range (for spy threshold)
-+ */
-+struct iw_thrspy
-+{
-+ struct sockaddr addr; /* Source address (hw/mac) */
-+ struct iw_quality qual; /* Quality of the link */
-+ struct iw_quality low; /* Low threshold */
-+ struct iw_quality high; /* High threshold */
-+};
-+
- /* ------------------------ WIRELESS STATS ------------------------ */
- /*
- * Wireless statistics (used for /proc/net/wireless)
-@@ -534,7 +559,7 @@ union iwreq_data
- struct iw_quality qual; /* Quality part of statistics */
-
- struct sockaddr ap_addr; /* Access point address */
-- struct sockaddr addr; /* Destination address (hw) */
-+ struct sockaddr addr; /* Destination address (hw/mac) */
-
- struct iw_param param; /* Other small parameters */
- struct iw_point data; /* Other large parameters */
-@@ -582,17 +607,31 @@ struct iw_range
- __u32 min_nwid; /* Minimal NWID we are able to set */
- __u32 max_nwid; /* Maximal NWID we are able to set */
-
-- /* Frequency */
-- __u16 num_channels; /* Number of channels [0; num - 1] */
-- __u8 num_frequency; /* Number of entry in the list */
-- struct iw_freq freq[IW_MAX_FREQUENCIES]; /* list */
-- /* Note : this frequency list doesn't need to fit channel numbers */
-+ /* Old Frequency (backward compat - moved lower ) */
-+ __u16 old_num_channels;
-+ __u8 old_num_frequency;
-+ /* Filler to keep "version" at the same offset */
-+ __s32 old_freq[6];
-
- /* signal level threshold range */
- __s32 sensitivity;
-
- /* Quality of link & SNR stuff */
-+ /* Quality range (link, level, noise)
-+ * If the quality is absolute, it will be in the range [0 ; max_qual],
-+ * if the quality is dBm, it will be in the range [max_qual ; 0].
-+ * Don't forget that we use 8 bit arithmetics... */
- struct iw_quality max_qual; /* Quality of the link */
-+ /* This should contain the average/typical values of the quality
-+ * indicator. This should be the threshold between a "good" and
-+ * a "bad" link (example : monitor going from green to orange).
-+ * Currently, user space apps like quality monitors don't have any
-+ * way to calibrate the measurement. With this, they can split
-+ * the range between 0 and max_qual in different quality level
-+ * (using a geometric subdivision centered on the average).
-+ * I expect that people doing the user space apps will feedback
-+ * us on which value we need to put in each driver... */
-+ struct iw_quality avg_qual; /* Quality of the link */
-
- /* Rates */
- __u8 num_bitrates; /* Number of entries in the list */
-@@ -619,6 +658,8 @@ struct iw_range
- __u16 encoding_size[IW_MAX_ENCODING_SIZES]; /* Different token sizes */
- __u8 num_encoding_sizes; /* Number of entry in the list */
- __u8 max_encoding_tokens; /* Max number of tokens */
-+ /* For drivers that need a "login/passwd" form */
-+ __u8 encoding_login_index; /* token index for login token */
-
- /* Transmit power */
- __u16 txpower_capa; /* What options are supported */
-@@ -638,18 +679,12 @@ struct iw_range
- __s32 min_r_time; /* Minimal retry lifetime */
- __s32 max_r_time; /* Maximal retry lifetime */
-
-- /* Average quality of link & SNR */
-- struct iw_quality avg_qual; /* Quality of the link */
-- /* This should contain the average/typical values of the quality
-- * indicator. This should be the threshold between a "good" and
-- * a "bad" link (example : monitor going from green to orange).
-- * Currently, user space apps like quality monitors don't have any
-- * way to calibrate the measurement. With this, they can split
-- * the range between 0 and max_qual in different quality level
-- * (using a geometric subdivision centered on the average).
-- * I expect that people doing the user space apps will feedback
-- * us on which value we need to put in each driver...
-- */
-+ /* Frequency */
-+ __u16 num_channels; /* Number of channels [0; num - 1] */
-+ __u8 num_frequency; /* Number of entry in the list */
-+ struct iw_freq freq[IW_MAX_FREQUENCIES]; /* list */
-+ /* Note : this frequency list doesn't need to fit channel numbers,
-+ * because each entry contain its channel index */
- };
-
- /*
-diff -u -p linux/include/net/iw_handler.15.h linux/include/net/iw_handler.h
---- linux/include/net/iw_handler.15.h 2004-11-05 14:59:47.000000000 -0800
-+++ linux/include/net/iw_handler.h 2004-11-05 15:00:42.000000000 -0800
-@@ -1,7 +1,7 @@
- /*
- * This file define the new driver API for Wireless Extensions
- *
-- * Version : 4 21.6.02
-+ * Version : 5 4.12.02
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
- * Copyright (c) 2001-2002 Jean Tourrilhes, All Rights Reserved.
-@@ -206,7 +206,7 @@
- * will be needed...
- * I just plan to increment with each new version.
- */
--#define IW_HANDLER_VERSION 4
-+#define IW_HANDLER_VERSION 5
-
- /*
- * Changes :
-@@ -220,10 +220,18 @@
- * V3 to V4
- * --------
- * - Reshuffle IW_HEADER_TYPE_XXX to map IW_PRIV_TYPE_XXX changes
-+ *
-+ * V4 to V5
-+ * --------
-+ * - Add new spy support : struct iw_spy_data & prototypes
- */
-
- /**************************** CONSTANTS ****************************/
-
-+/* Enable enhanced spy support. Disable to reduce footprint */
-+#define IW_WIRELESS_SPY
-+#define IW_WIRELESS_THRSPY
-+
- /* Special error message for the driver to indicate that we
- * should do a commit after return from the iw_handler */
- #define EIWCOMMIT EINPROGRESS
-@@ -315,6 +323,9 @@ struct iw_handler_def
- * We will automatically export that to user space... */
- struct iw_priv_args * private_args;
-
-+ /* Driver enhanced spy support */
-+ long spy_offset; /* Spy data offset */
-+
- /* In the long term, get_wireless_stats will move from
- * 'struct net_device' to here, to minimise bloat. */
- };
-@@ -350,6 +361,33 @@ struct iw_ioctl_description
-
- /* Need to think of short header translation table. Later. */
-
-+/* --------------------- ENHANCED SPY SUPPORT --------------------- */
-+/*
-+ * In the old days, the driver was handling spy support all by itself.
-+ * Now, the driver can delegate this task to Wireless Extensions.
-+ * It needs to include this struct in its private part and use the
-+ * standard spy iw_handler.
-+ */
-+
-+/*
-+ * Instance specific spy data, i.e. addresses spied and quality for them.
-+ */
-+struct iw_spy_data
-+{
-+#ifdef IW_WIRELESS_SPY
-+ /* --- Standard spy support --- */
-+ int spy_number;
-+ u_char spy_address[IW_MAX_SPY][ETH_ALEN];
-+ struct iw_quality spy_stat[IW_MAX_SPY];
-+#ifdef IW_WIRELESS_THRSPY
-+ /* --- Enhanced spy support (event) */
-+ struct iw_quality spy_thr_low; /* Low threshold */
-+ struct iw_quality spy_thr_high; /* High threshold */
-+ u_char spy_thr_under[IW_MAX_SPY];
-+#endif /* IW_WIRELESS_THRSPY */
-+#endif /* IW_WIRELESS_SPY */
-+};
-+
- /**************************** PROTOTYPES ****************************/
- /*
- * Functions part of the Wireless Extensions (defined in net/core/wireless.c).
-@@ -376,6 +414,31 @@ extern void wireless_send_event(struct n
- /* We may need a function to send a stream of events to user space.
- * More on that later... */
-
-+/* Standard handler for SIOCSIWSPY */
-+extern int iw_handler_set_spy(struct net_device * dev,
-+ struct iw_request_info * info,
-+ union iwreq_data * wrqu,
-+ char * extra);
-+/* Standard handler for SIOCGIWSPY */
-+extern int iw_handler_get_spy(struct net_device * dev,
-+ struct iw_request_info * info,
-+ union iwreq_data * wrqu,
-+ char * extra);
-+/* Standard handler for SIOCSIWTHRSPY */
-+extern int iw_handler_set_thrspy(struct net_device * dev,
-+ struct iw_request_info *info,
-+ union iwreq_data * wrqu,
-+ char * extra);
-+/* Standard handler for SIOCGIWTHRSPY */
-+extern int iw_handler_get_thrspy(struct net_device * dev,
-+ struct iw_request_info *info,
-+ union iwreq_data * wrqu,
-+ char * extra);
-+/* Driver call to update spy records */
-+extern void wireless_spy_update(struct net_device * dev,
-+ unsigned char * address,
-+ struct iw_quality * wstats);
-+
- /************************* INLINE FUNTIONS *************************/
- /*
- * Function that are so simple that it's more efficient inlining them
-diff -u -p linux/net/core/wireless.15.c linux/net/core/wireless.c
---- linux/net/core/wireless.15.c 2004-11-05 15:00:11.000000000 -0800
-+++ linux/net/core/wireless.c 2004-11-05 15:00:42.000000000 -0800
-@@ -2,7 +2,7 @@
- * This file implement the Wireless Extensions APIs.
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-- * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
-+ * Copyright (c) 1997-2003 Jean Tourrilhes, All Rights Reserved.
- *
- * (As all part of the Linux kernel, this file is GPL)
- */
-@@ -43,6 +43,11 @@
- * o Turn on WE_STRICT_WRITE by default + kernel warning
- * o Fix WE_STRICT_WRITE in ioctl_export_private() (32 => iw_num)
- * o Fix off-by-one in test (extra_size <= IFNAMSIZ)
-+ *
-+ * v6 - 9.01.03 - Jean II
-+ * o Add common spy support : iw_handler_set_spy(), wireless_spy_update()
-+ * o Add enhanced spy support : iw_handler_set_thrspy() and event.
-+ * o Add WIRELESS_EXT version display in /proc/net/wireless
- */
-
- /***************************** INCLUDES *****************************/
-@@ -52,6 +57,7 @@
- #include <linux/types.h> /* off_t */
- #include <linux/netdevice.h> /* struct ifreq, dev_get_by_name() */
- #include <linux/rtnetlink.h> /* rtnetlink stuff */
-+#include <linux/if_arp.h> /* ARPHRD_ETHER */
-
- #include <linux/wireless.h> /* Pretty obvious */
- #include <net/iw_handler.h> /* New driver API */
-@@ -65,6 +71,7 @@
- /* Debuging stuff */
- #undef WE_IOCTL_DEBUG /* Debug IOCTL API */
- #undef WE_EVENT_DEBUG /* Debug Event dispatcher */
-+#undef WE_SPY_DEBUG /* Debug enhanced spy support */
-
- /* Options */
- #define WE_EVENT_NETLINK /* Propagate events using rtnetlink */
-@@ -72,7 +79,7 @@
-
- /************************* GLOBAL VARIABLES *************************/
- /*
-- * You should not use global variables, because or re-entrancy.
-+ * You should not use global variables, because of re-entrancy.
- * On our case, it's only const, so it's OK...
- */
- /*
-@@ -115,11 +122,11 @@ static const struct iw_ioctl_description
- /* SIOCSIWSPY */
- { IW_HEADER_TYPE_POINT, 0, sizeof(struct sockaddr), 0, IW_MAX_SPY, 0},
- /* SIOCGIWSPY */
-- { IW_HEADER_TYPE_POINT, 0, (sizeof(struct sockaddr) + sizeof(struct iw_quality)), 0, IW_MAX_GET_SPY, 0},
-- /* -- hole -- */
-- { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-- /* -- hole -- */
-- { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ { IW_HEADER_TYPE_POINT, 0, (sizeof(struct sockaddr) + sizeof(struct iw_quality)), 0, IW_MAX_SPY, 0},
-+ /* SIOCSIWTHRSPY */
-+ { IW_HEADER_TYPE_POINT, 0, sizeof(struct iw_thrspy), 1, 1, 0},
-+ /* SIOCGIWTHRSPY */
-+ { IW_HEADER_TYPE_POINT, 0, sizeof(struct iw_thrspy), 1, 1, 0},
- /* SIOCSIWAP */
- { IW_HEADER_TYPE_ADDR, 0, 0, 0, 0, 0},
- /* SIOCGIWAP */
-@@ -377,9 +384,9 @@ int dev_get_wireless_info(char * buffer,
- struct net_device * dev;
-
- size = sprintf(buffer,
-- "Inter-| sta-| Quality | Discarded packets | Missed\n"
-- " face | tus | link level noise | nwid crypt frag retry misc | beacon\n"
-- );
-+ "Inter-| sta-| Quality | Discarded packets | Missed | WE\n"
-+ " face | tus | link level noise | nwid crypt frag retry misc | beacon | %d\n",
-+ WIRELESS_EXT);
-
- pos += size;
- len += size;
-@@ -1024,3 +1031,252 @@ void wireless_send_event(struct net_devi
-
- return; /* Always success, I guess ;-) */
- }
-+
-+/********************** ENHANCED IWSPY SUPPORT **********************/
-+/*
-+ * In the old days, the driver was handling spy support all by itself.
-+ * Now, the driver can delegate this task to Wireless Extensions.
-+ * It needs to use those standard spy iw_handler in struct iw_handler_def,
-+ * push data to us via XXX and include struct iw_spy_data in its
-+ * private part.
-+ * One of the main advantage of centralising spy support here is that
-+ * it becomes much easier to improve and extend it without having to touch
-+ * the drivers. One example is the addition of the Spy-Threshold events.
-+ * Note : IW_WIRELESS_SPY is defined in iw_handler.h
-+ */
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Standard Wireless Handler : set Spy List
-+ */
-+int iw_handler_set_spy(struct net_device * dev,
-+ struct iw_request_info * info,
-+ union iwreq_data * wrqu,
-+ char * extra)
-+{
-+#ifdef IW_WIRELESS_SPY
-+ struct iw_spy_data * spydata = (dev->priv +
-+ dev->wireless_handlers->spy_offset);
-+ struct sockaddr * address = (struct sockaddr *) extra;
-+
-+ /* Disable spy collection while we copy the addresses.
-+ * As we don't disable interrupts, we need to do this to avoid races.
-+ * As we are the only writer, this is good enough. */
-+ spydata->spy_number = 0;
-+
-+ /* Are there are addresses to copy? */
-+ if(wrqu->data.length > 0) {
-+ int i;
-+
-+ /* Copy addresses */
-+ for(i = 0; i < wrqu->data.length; i++)
-+ memcpy(spydata->spy_address[i], address[i].sa_data,
-+ ETH_ALEN);
-+ /* Reset stats */
-+ memset(spydata->spy_stat, 0,
-+ sizeof(struct iw_quality) * IW_MAX_SPY);
-+
-+#ifdef WE_SPY_DEBUG
-+ printk(KERN_DEBUG "iw_handler_set_spy() : offset %ld, spydata %p, num %d\n", dev->wireless_handlers->spy_offset, spydata, wrqu->data.length);
-+ for (i = 0; i < wrqu->data.length; i++)
-+ printk(KERN_DEBUG
-+ "%02X:%02X:%02X:%02X:%02X:%02X \n",
-+ spydata->spy_address[i][0],
-+ spydata->spy_address[i][1],
-+ spydata->spy_address[i][2],
-+ spydata->spy_address[i][3],
-+ spydata->spy_address[i][4],
-+ spydata->spy_address[i][5]);
-+#endif /* WE_SPY_DEBUG */
-+ }
-+ /* Enable addresses */
-+ spydata->spy_number = wrqu->data.length;
-+
-+ return 0;
-+#else /* IW_WIRELESS_SPY */
-+ return -EOPNOTSUPP;
-+#endif /* IW_WIRELESS_SPY */
-+}
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Standard Wireless Handler : get Spy List
-+ */
-+int iw_handler_get_spy(struct net_device * dev,
-+ struct iw_request_info * info,
-+ union iwreq_data * wrqu,
-+ char * extra)
-+{
-+#ifdef IW_WIRELESS_SPY
-+ struct iw_spy_data * spydata = (dev->priv +
-+ dev->wireless_handlers->spy_offset);
-+ struct sockaddr * address = (struct sockaddr *) extra;
-+ int i;
-+
-+ wrqu->data.length = spydata->spy_number;
-+
-+ /* Copy addresses. */
-+ for(i = 0; i < spydata->spy_number; i++) {
-+ memcpy(address[i].sa_data, spydata->spy_address[i], ETH_ALEN);
-+ address[i].sa_family = AF_UNIX;
-+ }
-+ /* Copy stats to the user buffer (just after). */
-+ if(spydata->spy_number > 0)
-+ memcpy(extra + (sizeof(struct sockaddr) *spydata->spy_number),
-+ spydata->spy_stat,
-+ sizeof(struct iw_quality) * spydata->spy_number);
-+ /* Reset updated flags. */
-+ for(i = 0; i < spydata->spy_number; i++)
-+ spydata->spy_stat[i].updated = 0;
-+ return 0;
-+#else /* IW_WIRELESS_SPY */
-+ return -EOPNOTSUPP;
-+#endif /* IW_WIRELESS_SPY */
-+}
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Standard Wireless Handler : set spy threshold
-+ */
-+int iw_handler_set_thrspy(struct net_device * dev,
-+ struct iw_request_info *info,
-+ union iwreq_data * wrqu,
-+ char * extra)
-+{
-+#ifdef IW_WIRELESS_THRSPY
-+ struct iw_spy_data * spydata = (dev->priv +
-+ dev->wireless_handlers->spy_offset);
-+ struct iw_thrspy * threshold = (struct iw_thrspy *) extra;
-+
-+ /* Just do it */
-+ memcpy(&(spydata->spy_thr_low), &(threshold->low),
-+ 2 * sizeof(struct iw_quality));
-+
-+ /* Clear flag */
-+ memset(spydata->spy_thr_under, '\0', sizeof(spydata->spy_thr_under));
-+
-+#ifdef WE_SPY_DEBUG
-+ printk(KERN_DEBUG "iw_handler_set_thrspy() : low %d ; high %d\n", spydata->spy_thr_low.level, spydata->spy_thr_high.level);
-+#endif /* WE_SPY_DEBUG */
-+
-+ return 0;
-+#else /* IW_WIRELESS_THRSPY */
-+ return -EOPNOTSUPP;
-+#endif /* IW_WIRELESS_THRSPY */
-+}
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Standard Wireless Handler : get spy threshold
-+ */
-+int iw_handler_get_thrspy(struct net_device * dev,
-+ struct iw_request_info *info,
-+ union iwreq_data * wrqu,
-+ char * extra)
-+{
-+#ifdef IW_WIRELESS_THRSPY
-+ struct iw_spy_data * spydata = (dev->priv +
-+ dev->wireless_handlers->spy_offset);
-+ struct iw_thrspy * threshold = (struct iw_thrspy *) extra;
-+
-+ /* Just do it */
-+ memcpy(&(threshold->low), &(spydata->spy_thr_low),
-+ 2 * sizeof(struct iw_quality));
-+
-+ return 0;
-+#else /* IW_WIRELESS_THRSPY */
-+ return -EOPNOTSUPP;
-+#endif /* IW_WIRELESS_THRSPY */
-+}
-+
-+#ifdef IW_WIRELESS_THRSPY
-+/*------------------------------------------------------------------*/
-+/*
-+ * Prepare and send a Spy Threshold event
-+ */
-+static void iw_send_thrspy_event(struct net_device * dev,
-+ struct iw_spy_data * spydata,
-+ unsigned char * address,
-+ struct iw_quality * wstats)
-+{
-+ union iwreq_data wrqu;
-+ struct iw_thrspy threshold;
-+
-+ /* Init */
-+ wrqu.data.length = 1;
-+ wrqu.data.flags = 0;
-+ /* Copy address */
-+ memcpy(threshold.addr.sa_data, address, ETH_ALEN);
-+ threshold.addr.sa_family = ARPHRD_ETHER;
-+ /* Copy stats */
-+ memcpy(&(threshold.qual), wstats, sizeof(struct iw_quality));
-+ /* Copy also thresholds */
-+ memcpy(&(threshold.low), &(spydata->spy_thr_low),
-+ 2 * sizeof(struct iw_quality));
-+
-+#ifdef WE_SPY_DEBUG
-+ printk(KERN_DEBUG "iw_send_thrspy_event() : address %02X:%02X:%02X:%02X:%02X:%02X, level %d, up = %d\n",
-+ threshold.addr.sa_data[0],
-+ threshold.addr.sa_data[1],
-+ threshold.addr.sa_data[2],
-+ threshold.addr.sa_data[3],
-+ threshold.addr.sa_data[4],
-+ threshold.addr.sa_data[5], threshold.qual.level);
-+#endif /* WE_SPY_DEBUG */
-+
-+ /* Send event to user space */
-+ wireless_send_event(dev, SIOCGIWTHRSPY, &wrqu, (char *) &threshold);
-+}
-+#endif /* IW_WIRELESS_THRSPY */
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Call for the driver to update the spy data.
-+ * For now, the spy data is a simple array. As the size of the array is
-+ * small, this is good enough. If we wanted to support larger number of
-+ * spy addresses, we should use something more efficient...
-+ */
-+void wireless_spy_update(struct net_device * dev,
-+ unsigned char * address,
-+ struct iw_quality * wstats)
-+{
-+#ifdef IW_WIRELESS_SPY
-+ struct iw_spy_data * spydata = (dev->priv +
-+ dev->wireless_handlers->spy_offset);
-+ int i;
-+ int match = -1;
-+
-+#ifdef WE_SPY_DEBUG
-+ printk(KERN_DEBUG "wireless_spy_update() : offset %ld, spydata %p, address %02X:%02X:%02X:%02X:%02X:%02X\n", dev->wireless_handlers->spy_offset, spydata, address[0], address[1], address[2], address[3], address[4], address[5]);
-+#endif /* WE_SPY_DEBUG */
-+
-+ /* Update all records that match */
-+ for(i = 0; i < spydata->spy_number; i++)
-+ if(!memcmp(address, spydata->spy_address[i], ETH_ALEN)) {
-+ memcpy(&(spydata->spy_stat[i]), wstats,
-+ sizeof(struct iw_quality));
-+ match = i;
-+ }
-+#ifdef IW_WIRELESS_THRSPY
-+ /* Generate an event if we cross the spy threshold.
-+ * To avoid event storms, we have a simple hysteresis : we generate
-+ * event only when we go under the low threshold or above the
-+ * high threshold. */
-+ if(match >= 0) {
-+ if(spydata->spy_thr_under[match]) {
-+ if(wstats->level > spydata->spy_thr_high.level) {
-+ spydata->spy_thr_under[match] = 0;
-+ iw_send_thrspy_event(dev, spydata,
-+ address, wstats);
-+ }
-+ } else {
-+ if(wstats->level < spydata->spy_thr_low.level) {
-+ spydata->spy_thr_under[match] = 1;
-+ iw_send_thrspy_event(dev, spydata,
-+ address, wstats);
-+ }
-+ }
-+ }
-+#endif /* IW_WIRELESS_THRSPY */
-+#endif /* IW_WIRELESS_SPY */
-+}
-diff -u -p linux/net/netsyms.15.c linux/net/netsyms.c
---- linux/net/netsyms.15.c 2004-11-05 15:00:25.000000000 -0800
-+++ linux/net/netsyms.c 2004-11-05 15:01:38.000000000 -0800
-@@ -589,9 +589,13 @@ EXPORT_SYMBOL(net_call_rx_atomic);
- EXPORT_SYMBOL(softnet_data);
-
- #if defined(CONFIG_NET_RADIO) || defined(CONFIG_NET_PCMCIA_RADIO)
--/* Don't include the whole header mess for a single function */
--extern void wireless_send_event(struct net_device *dev, unsigned int cmd, union iwreq_data *wrqu, char *extra);
-+#include <net/iw_handler.h>
- EXPORT_SYMBOL(wireless_send_event);
-+EXPORT_SYMBOL(iw_handler_set_spy);
-+EXPORT_SYMBOL(iw_handler_get_spy);
-+EXPORT_SYMBOL(iw_handler_set_thrspy);
-+EXPORT_SYMBOL(iw_handler_get_thrspy);
-+EXPORT_SYMBOL(wireless_spy_update);
- #endif /* CONFIG_NET_RADIO || CONFIG_NET_PCMCIA_RADIO */
-
- #endif /* CONFIG_NET */
diff --git a/recipes/linux/files/iw_handlers.w13-5.diff b/recipes/linux/files/iw_handlers.w13-5.diff
deleted file mode 100644
index a27a7654a9..0000000000
--- a/recipes/linux/files/iw_handlers.w13-5.diff
+++ /dev/null
@@ -1,1513 +0,0 @@
-diff -u -p -r --new-file linux/include/linux-w12/netdevice.h linux/include/linux/netdevice.h
---- linux/include/linux-w12/netdevice.h Thu Nov 22 11:47:09 2001
-+++ linux/include/linux/netdevice.h Thu Jan 17 12:00:39 2002
-@@ -278,6 +278,10 @@ struct net_device
- struct net_device_stats* (*get_stats)(struct net_device *dev);
- struct iw_statistics* (*get_wireless_stats)(struct net_device *dev);
-
-+ /* List of functions to handle Wireless Extensions (instead of ioctl).
-+ * See <net/iw_handler.h> for details. Jean II */
-+ struct iw_handler_def * wireless_handlers;
-+
- /*
- * This marks the end of the "visible" part of the structure. All
- * fields hereafter are internal to the system, and may change at
-diff -u -p -r --new-file linux/include/linux-w12/wireless.h linux/include/linux/wireless.h
---- linux/include/linux-w12/wireless.h Thu Nov 22 11:47:12 2001
-+++ linux/include/linux/wireless.h Thu Jan 17 12:04:08 2002
-@@ -1,9 +1,10 @@
- /*
- * This file define a set of standard wireless extensions
- *
-- * Version : 12 5.10.01
-+ * Version : 13 6.12.01
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-+ * Copyright (c) 1997-2001 Jean Tourrilhes, All Rights Reserved.
- */
-
- #ifndef _LINUX_WIRELESS_H
-@@ -11,6 +12,8 @@
-
- /************************** DOCUMENTATION **************************/
- /*
-+ * Initial APIs (1996 -> onward) :
-+ * -----------------------------
- * Basically, the wireless extensions are for now a set of standard ioctl
- * call + /proc/net/wireless
- *
-@@ -27,16 +30,27 @@
- * We have the list of command plus a structure descibing the
- * data exchanged...
- * Note that to add these ioctl, I was obliged to modify :
-- * net/core/dev.c (two place + add include)
-- * net/ipv4/af_inet.c (one place + add include)
-+ * # net/core/dev.c (two place + add include)
-+ * # net/ipv4/af_inet.c (one place + add include)
- *
- * /proc/net/wireless is a copy of /proc/net/dev.
- * We have a structure for data passed from the driver to /proc/net/wireless
- * Too add this, I've modified :
-- * net/core/dev.c (two other places)
-- * include/linux/netdevice.h (one place)
-- * include/linux/proc_fs.h (one place)
-+ * # net/core/dev.c (two other places)
-+ * # include/linux/netdevice.h (one place)
-+ * # include/linux/proc_fs.h (one place)
-+ *
-+ * New driver API (2001 -> onward) :
-+ * -------------------------------
-+ * This file is only concerned with the user space API and common definitions.
-+ * The new driver API is defined and documented in :
-+ * # include/net/iw_handler.h
- *
-+ * Note as well that /proc/net/wireless implementation has now moved in :
-+ * # include/linux/wireless.c
-+ *
-+ * Other comments :
-+ * --------------
- * Do not add here things that are redundant with other mechanisms
- * (drivers init, ifconfig, /proc/net/dev, ...) and with are not
- * wireless specific.
-@@ -54,16 +68,14 @@
- #include <linux/socket.h> /* for "struct sockaddr" et al */
- #include <linux/if.h> /* for IFNAMSIZ and co... */
-
--/**************************** CONSTANTS ****************************/
--
--/* --------------------------- VERSION --------------------------- */
-+/***************************** VERSION *****************************/
- /*
- * This constant is used to know the availability of the wireless
- * extensions and to know which version of wireless extensions it is
- * (there is some stuff that will be added in the future...)
- * I just plan to increment with each new version.
- */
--#define WIRELESS_EXT 12
-+#define WIRELESS_EXT 13
-
- /*
- * Changes :
-@@ -123,12 +135,20 @@
- * - Add DEV PRIVATE IOCTL to avoid collisions in SIOCDEVPRIVATE space
- * - Add new statistics (frag, retry, beacon)
- * - Add average quality (for user space calibration)
-+ *
-+ * V12 to V13
-+ * ----------
-+ * - Document creation of new driver API.
-+ * - Extract union iwreq_data from struct iwreq (for new driver API).
-+ * - Rename SIOCSIWNAME as SIOCSIWCOMMIT
- */
-
-+/**************************** CONSTANTS ****************************/
-+
- /* -------------------------- IOCTL LIST -------------------------- */
-
- /* Basic operations */
--#define SIOCSIWNAME 0x8B00 /* Unused */
-+#define SIOCSIWCOMMIT 0x8B00 /* Commit pending changes to driver */
- #define SIOCGIWNAME 0x8B01 /* get name == wireless protocol */
- #define SIOCSIWNWID 0x8B02 /* set network id (the cell) */
- #define SIOCGIWNWID 0x8B03 /* get network id */
-@@ -414,13 +434,49 @@ struct iw_statistics
-
- /* ------------------------ IOCTL REQUEST ------------------------ */
- /*
-+ * This structure defines the payload of an ioctl, and is used
-+ * below.
-+ *
-+ * Note that this structure should fit on the memory footprint
-+ * of iwreq (which is the same as ifreq), which mean a max size of
-+ * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
-+ * You should check this when increasing the structures defined
-+ * above in this file...
-+ */
-+union iwreq_data
-+{
-+ /* Config - generic */
-+ char name[IFNAMSIZ];
-+ /* Name : used to verify the presence of wireless extensions.
-+ * Name of the protocol/provider... */
-+
-+ struct iw_point essid; /* Extended network name */
-+ struct iw_param nwid; /* network id (or domain - the cell) */
-+ struct iw_freq freq; /* frequency or channel :
-+ * 0-1000 = channel
-+ * > 1000 = frequency in Hz */
-+
-+ struct iw_param sens; /* signal level threshold */
-+ struct iw_param bitrate; /* default bit rate */
-+ struct iw_param txpower; /* default transmit power */
-+ struct iw_param rts; /* RTS threshold threshold */
-+ struct iw_param frag; /* Fragmentation threshold */
-+ __u32 mode; /* Operation mode */
-+ struct iw_param retry; /* Retry limits & lifetime */
-+
-+ struct iw_point encoding; /* Encoding stuff : tokens */
-+ struct iw_param power; /* PM duration/timeout */
-+
-+ struct sockaddr ap_addr; /* Access point address */
-+
-+ struct iw_point data; /* Other large parameters */
-+};
-+
-+/*
- * The structure to exchange data for ioctl.
- * This structure is the same as 'struct ifreq', but (re)defined for
- * convenience...
-- *
-- * Note that it should fit on the same memory footprint !
-- * You should check this when increasing the above structures (16 octets)
-- * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
-+ * Do I need to remind you about structure size (32 octets) ?
- */
- struct iwreq
- {
-@@ -429,35 +485,8 @@ struct iwreq
- char ifrn_name[IFNAMSIZ]; /* if name, e.g. "eth0" */
- } ifr_ifrn;
-
-- /* Data part */
-- union
-- {
-- /* Config - generic */
-- char name[IFNAMSIZ];
-- /* Name : used to verify the presence of wireless extensions.
-- * Name of the protocol/provider... */
--
-- struct iw_point essid; /* Extended network name */
-- struct iw_param nwid; /* network id (or domain - the cell) */
-- struct iw_freq freq; /* frequency or channel :
-- * 0-1000 = channel
-- * > 1000 = frequency in Hz */
--
-- struct iw_param sens; /* signal level threshold */
-- struct iw_param bitrate; /* default bit rate */
-- struct iw_param txpower; /* default transmit power */
-- struct iw_param rts; /* RTS threshold threshold */
-- struct iw_param frag; /* Fragmentation threshold */
-- __u32 mode; /* Operation mode */
-- struct iw_param retry; /* Retry limits & lifetime */
--
-- struct iw_point encoding; /* Encoding stuff : tokens */
-- struct iw_param power; /* PM duration/timeout */
--
-- struct sockaddr ap_addr; /* Access point address */
--
-- struct iw_point data; /* Other large parameters */
-- } u;
-+ /* Data part (defined just above) */
-+ union iwreq_data u;
- };
-
- /* -------------------------- IOCTL DATA -------------------------- */
-diff -u -p -r --new-file linux/include/net-w12/iw_handler.h linux/include/net/iw_handler.h
---- linux/include/net-w12/iw_handler.h Wed Dec 31 16:00:00 1969
-+++ linux/include/net/iw_handler.h Thu Jan 17 12:16:46 2002
-@@ -0,0 +1,374 @@
-+/*
-+ * This file define the new driver API for Wireless Extensions
-+ *
-+ * Version : 2 6.12.01
-+ *
-+ * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-+ * Copyright (c) 2001 Jean Tourrilhes, All Rights Reserved.
-+ */
-+
-+#ifndef _IW_HANDLER_H
-+#define _IW_HANDLER_H
-+
-+/************************** DOCUMENTATION **************************/
-+/*
-+ * Initial driver API (1996 -> onward) :
-+ * -----------------------------------
-+ * The initial API just sends the IOCTL request received from user space
-+ * to the driver (via the driver ioctl handler). The driver has to
-+ * handle all the rest...
-+ *
-+ * The initial API also defines a specific handler in struct net_device
-+ * to handle wireless statistics.
-+ *
-+ * The initial APIs served us well and has proven a reasonably good design.
-+ * However, there is a few shortcommings :
-+ * o No events, everything is a request to the driver.
-+ * o Large ioctl function in driver with gigantic switch statement
-+ * (i.e. spaghetti code).
-+ * o Driver has to mess up with copy_to/from_user, and in many cases
-+ * does it unproperly. Common mistakes are :
-+ * * buffer overflows (no checks or off by one checks)
-+ * * call copy_to/from_user with irq disabled
-+ * o The user space interface is tied to ioctl because of the use
-+ * copy_to/from_user.
-+ *
-+ * New driver API (2001 -> onward) :
-+ * -------------------------------
-+ * The new driver API is just a bunch of standard functions (handlers),
-+ * each handling a specific Wireless Extension. The driver just export
-+ * the list of handler it supports, and those will be called apropriately.
-+ *
-+ * I tried to keep the main advantage of the previous API (simplicity,
-+ * efficiency and light weight), and also I provide a good dose of backward
-+ * compatibility (most structures are the same, driver can use both API
-+ * simultaneously, ...).
-+ * Hopefully, I've also addressed the shortcomming of the initial API.
-+ *
-+ * The advantage of the new API are :
-+ * o Handling of Extensions in driver broken in small contained functions
-+ * o Tighter checks of ioctl before calling the driver
-+ * o Flexible commit strategy (at least, the start of it)
-+ * o Backward compatibility (can be mixed with old API)
-+ * o Driver doesn't have to worry about memory and user-space issues
-+ * The last point is important for the following reasons :
-+ * o You are now able to call the new driver API from any API you
-+ * want (including from within other parts of the kernel).
-+ * o Common mistakes are avoided (buffer overflow, user space copy
-+ * with irq disabled and so on).
-+ *
-+ * The Drawback of the new API are :
-+ * o bloat (especially kernel)
-+ * o need to migrate existing drivers to new API
-+ * My initial testing shows that the new API adds around 3kB to the kernel
-+ * and save between 0 and 5kB from a typical driver.
-+ * Also, as all structures and data types are unchanged, the migration is
-+ * quite straightforward (but tedious).
-+ *
-+ * ---
-+ *
-+ * The new driver API is defined below in this file. User space should
-+ * not be aware of what's happening down there...
-+ *
-+ * A new kernel wrapper is in charge of validating the IOCTLs and calling
-+ * the appropriate driver handler. This is implemented in :
-+ * # net/core/wireless.c
-+ *
-+ * The driver export the list of handlers in :
-+ * # include/linux/netdevice.h (one place)
-+ *
-+ * The new driver API is available for WIRELESS_EXT >= 13.
-+ * Good luck with migration to the new API ;-)
-+ */
-+
-+/* ---------------------- THE IMPLEMENTATION ---------------------- */
-+/*
-+ * Some of the choice I've made are pretty controversials. Defining an
-+ * API is very much weighting compromises. This goes into some of the
-+ * details and the thinking behind the implementation.
-+ *
-+ * Implementation goals :
-+ * --------------------
-+ * The implementation goals were as follow :
-+ * o Obvious : you should not need a PhD to understand what's happening,
-+ * the benefit is easier maintainance.
-+ * o Flexible : it should accomodate a wide variety of driver
-+ * implementations and be as flexible as the old API.
-+ * o Lean : it should be efficient memory wise to minimise the impact
-+ * on kernel footprint.
-+ * o Transparent to user space : the large number of user space
-+ * applications that use Wireless Extensions should not need
-+ * any modifications.
-+ *
-+ * Array of functions versus Struct of functions
-+ * ---------------------------------------------
-+ * 1) Having an array of functions allow the kernel code to access the
-+ * handler in a single lookup, which is much more efficient (think hash
-+ * table here).
-+ * 2) The only drawback is that driver writer may put their handler in
-+ * the wrong slot. This is trivial to test (I set the frequency, the
-+ * bitrate changes). Once the handler is in the proper slot, it will be
-+ * there forever, because the array is only extended at the end.
-+ * 3) Backward/forward compatibility : adding new handler just require
-+ * extending the array, so you can put newer driver in older kernel
-+ * without having to patch the kernel code (and vice versa).
-+ *
-+ * All handler are of the same generic type
-+ * ----------------------------------------
-+ * That's a feature !!!
-+ * 1) Having a generic handler allow to have generic code, which is more
-+ * efficient. If each of the handler was individually typed I would need
-+ * to add a big switch in the kernel (== more bloat). This solution is
-+ * more scalable, adding new Wireless Extensions doesn't add new code.
-+ * 2) You can use the same handler in different slots of the array. For
-+ * hardware, it may be more efficient or logical to handle multiple
-+ * Wireless Extensions with a single function, and the API allow you to
-+ * do that. (An example would be a single record on the card to control
-+ * both bitrate and frequency, the handler would read the old record,
-+ * modify it according to info->cmd and rewrite it).
-+ *
-+ * Functions prototype uses union iwreq_data
-+ * -----------------------------------------
-+ * Some would have prefered functions defined this way :
-+ * static int mydriver_ioctl_setrate(struct net_device *dev,
-+ * long rate, int auto)
-+ * 1) The kernel code doesn't "validate" the content of iwreq_data, and
-+ * can't do it (different hardware may have different notion of what a
-+ * valid frequency is), so we don't pretend that we do it.
-+ * 2) The above form is not extendable. If I want to add a flag (for
-+ * example to distinguish setting max rate and basic rate), I would
-+ * break the prototype. Using iwreq_data is more flexible.
-+ * 3) Also, the above form is not generic (see above).
-+ * 4) I don't expect driver developper using the wrong field of the
-+ * union (Doh !), so static typechecking doesn't add much value.
-+ * 5) Lastly, you can skip the union by doing :
-+ * static int mydriver_ioctl_setrate(struct net_device *dev,
-+ * struct iw_request_info *info,
-+ * struct iw_param *rrq,
-+ * char *extra)
-+ * And then adding the handler in the array like this :
-+ * (iw_handler) mydriver_ioctl_setrate, // SIOCSIWRATE
-+ *
-+ * Using functions and not a registry
-+ * ----------------------------------
-+ * Another implementation option would have been for every instance to
-+ * define a registry (a struct containing all the Wireless Extensions)
-+ * and only have a function to commit the registry to the hardware.
-+ * 1) This approach can be emulated by the current code, but not
-+ * vice versa.
-+ * 2) Some drivers don't keep any configuration in the driver, for them
-+ * adding such a registry would be a significant bloat.
-+ * 3) The code to translate from Wireless Extension to native format is
-+ * needed anyway, so it would not reduce significantely the amount of code.
-+ * 4) The current approach only selectively translate Wireless Extensions
-+ * to native format and only selectively set, whereas the registry approach
-+ * would require to translate all WE and set all parameters for any single
-+ * change.
-+ * 5) For many Wireless Extensions, the GET operation return the current
-+ * dynamic value, not the value that was set.
-+ *
-+ * This header is <net/iw_handler.h>
-+ * ---------------------------------
-+ * 1) This header is kernel space only and should not be exported to
-+ * user space. Headers in "include/linux/" are exported, headers in
-+ * "include/net/" are not.
-+ *
-+ * Mixed 32/64 bit issues
-+ * ----------------------
-+ * The Wireless Extensions are designed to be 64 bit clean, by using only
-+ * datatypes with explicit storage size.
-+ * There are some issues related to kernel and user space using different
-+ * memory model, and in particular 64bit kernel with 32bit user space.
-+ * The problem is related to struct iw_point, that contains a pointer
-+ * that *may* need to be translated.
-+ * This is quite messy. The new API doesn't solve this problem (it can't),
-+ * but is a step in the right direction :
-+ * 1) Meta data about each ioctl is easily available, so we know what type
-+ * of translation is needed.
-+ * 2) The move of data between kernel and user space is only done in a single
-+ * place in the kernel, so adding specific hooks in there is possible.
-+ * 3) In the long term, it allows to move away from using ioctl as the
-+ * user space API.
-+ *
-+ * So many comments and so few code
-+ * --------------------------------
-+ * That's a feature. Comments won't bloat the resulting kernel binary.
-+ */
-+
-+/***************************** INCLUDES *****************************/
-+
-+#include <linux/wireless.h> /* IOCTL user space API */
-+
-+/***************************** VERSION *****************************/
-+/*
-+ * This constant is used to know which version of the driver API is
-+ * available. Hopefully, this will be pretty stable and no changes
-+ * will be needed...
-+ * I just plan to increment with each new version.
-+ */
-+#define IW_HANDLER_VERSION 2
-+
-+/**************************** CONSTANTS ****************************/
-+
-+/* Special error message for the driver to indicate that we
-+ * should do a commit after return from the iw_handler */
-+#define EIWCOMMIT EINPROGRESS
-+
-+/* Flags available in struct iw_request_info */
-+#define IW_REQUEST_FLAG_NONE 0x0000 /* No flag so far */
-+
-+/* Type of headers we know about (basically union iwreq_data) */
-+#define IW_HEADER_TYPE_NULL 0 /* Not available */
-+#define IW_HEADER_TYPE_CHAR 2 /* char [IFNAMSIZ] */
-+#define IW_HEADER_TYPE_UINT 4 /* __u32 */
-+#define IW_HEADER_TYPE_FREQ 5 /* struct iw_freq */
-+#define IW_HEADER_TYPE_POINT 6 /* struct iw_point */
-+#define IW_HEADER_TYPE_PARAM 7 /* struct iw_param */
-+#define IW_HEADER_TYPE_ADDR 8 /* struct sockaddr */
-+
-+/* Handling flags */
-+/* Most are not implemented. I just use them as a reminder of some
-+ * cool features we might need one day ;-) */
-+#define IW_DESCR_FLAG_NONE 0x0000 /* Obvious */
-+/* Wrapper level flags */
-+#define IW_DESCR_FLAG_DUMP 0x0001 /* Not part of the dump command */
-+#define IW_DESCR_FLAG_EVENT 0x0002 /* Generate an event on SET */
-+#define IW_DESCR_FLAG_RESTRICT 0x0004 /* GET request is ROOT only */
-+/* Driver level flags */
-+#define IW_DESCR_FLAG_WAIT 0x0100 /* Wait for driver event */
-+
-+/****************************** TYPES ******************************/
-+
-+/* ----------------------- WIRELESS HANDLER ----------------------- */
-+/*
-+ * A wireless handler is just a standard function, that looks like the
-+ * ioctl handler.
-+ * We also define there how a handler list look like... As the Wireless
-+ * Extension space is quite dense, we use a simple array, which is faster
-+ * (that's the perfect hash table ;-).
-+ */
-+
-+/*
-+ * Meta data about the request passed to the iw_handler.
-+ * Most handlers can safely ignore what's in there.
-+ * The 'cmd' field might come handy if you want to use the same handler
-+ * for multiple command...
-+ * This struct is also my long term insurance. I can add new fields here
-+ * without breaking the prototype of iw_handler...
-+ */
-+struct iw_request_info
-+{
-+ __u16 cmd; /* Wireless Extension command */
-+ __u16 flags; /* More to come ;-) */
-+};
-+
-+/*
-+ * This is how a function handling a Wireless Extension should look
-+ * like (both get and set, standard and private).
-+ */
-+typedef int (*iw_handler)(struct net_device *dev, struct iw_request_info *info,
-+ union iwreq_data *wrqu, char *extra);
-+
-+/*
-+ * This define all the handler that the driver export.
-+ * As you need only one per driver type, please use a static const
-+ * shared by all driver instances... Same for the members...
-+ * This will be linked from net_device in <linux/netdevice.h>
-+ */
-+struct iw_handler_def
-+{
-+ /* Number of handlers defined (more precisely, index of the
-+ * last defined handler + 1) */
-+ __u16 num_standard;
-+ __u16 num_private;
-+ /* Number of private arg description */
-+ __u16 num_private_args;
-+
-+ /* Array of handlers for standard ioctls
-+ * We will call dev->wireless_handlers->standard[ioctl - SIOCSIWNAME]
-+ */
-+ iw_handler * standard;
-+
-+ /* Array of handlers for private ioctls
-+ * Will call dev->wireless_handlers->private[ioctl - SIOCIWFIRSTPRIV]
-+ */
-+ iw_handler * private;
-+
-+ /* Arguments of private handler. This one is just a list, so you
-+ * can put it in any order you want and should not leave holes...
-+ * We will automatically export that to user space... */
-+ struct iw_priv_args * private_args;
-+
-+ /* In the long term, get_wireless_stats will move from
-+ * 'struct net_device' to here, to minimise bloat. */
-+};
-+
-+/* ----------------------- WIRELESS EVENTS ----------------------- */
-+/*
-+ * Currently we don't support events, so let's just plan for the
-+ * future...
-+ */
-+
-+/*
-+ * A Wireless Event.
-+ */
-+// How do we define short header ? We don't want a flag on length.
-+// Probably a flag on event ? Highest bit to zero...
-+struct iw_event
-+{
-+ __u16 length; /* Lenght of this stuff */
-+ __u16 event; /* Wireless IOCTL */
-+ union iwreq_data header; /* IOCTL fixed payload */
-+ char extra[0]; /* Optional IOCTL data */
-+};
-+
-+/* ---------------------- IOCTL DESCRIPTION ---------------------- */
-+/*
-+ * One of the main goal of the new interface is to deal entirely with
-+ * user space/kernel space memory move.
-+ * For that, we need to know :
-+ * o if iwreq is a pointer or contain the full data
-+ * o what is the size of the data to copy
-+ *
-+ * For private IOCTLs, we use the same rules as used by iwpriv and
-+ * defined in struct iw_priv_args.
-+ *
-+ * For standard IOCTLs, things are quite different and we need to
-+ * use the stuctures below. Actually, this struct is also more
-+ * efficient, but that's another story...
-+ */
-+
-+/*
-+ * Describe how a standard IOCTL looks like.
-+ */
-+struct iw_ioctl_description
-+{
-+ __u8 header_type; /* NULL, iw_point or other */
-+ __u8 token_type; /* Future */
-+ __u16 token_size; /* Granularity of payload */
-+ __u16 min_tokens; /* Min acceptable token number */
-+ __u16 max_tokens; /* Max acceptable token number */
-+ __u32 flags; /* Special handling of the request */
-+};
-+
-+/* Need to think of short header translation table. Later. */
-+
-+/**************************** PROTOTYPES ****************************/
-+/*
-+ * Functions part of the Wireless Extensions (defined in net/core/wireless.c).
-+ * Those may be called only within the kernel.
-+ */
-+
-+/* First : function strictly used inside the kernel */
-+
-+/* Handle /proc/net/wireless, called in net/code/dev.c */
-+extern int dev_get_wireless_info(char * buffer, char **start, off_t offset,
-+ int length);
-+
-+/* Handle IOCTLs, called in net/code/dev.c */
-+extern int wireless_process_ioctl(struct ifreq *ifr, unsigned int cmd);
-+
-+/* Second : functions that may be called by driver modules */
-+/* None yet */
-+
-+#endif /* _LINUX_WIRELESS_H */
-diff -u -p -r --new-file linux/net/core-w12/Makefile linux/net/core/Makefile
---- linux/net/core-w12/Makefile Tue Oct 30 15:08:12 2001
-+++ linux/net/core/Makefile Thu Jan 17 11:06:07 2002
-@@ -26,5 +26,8 @@ obj-$(CONFIG_NET) += dev.o dev_mcast.o d
- obj-$(CONFIG_NETFILTER) += netfilter.o
- obj-$(CONFIG_NET_DIVERT) += dv.o
- obj-$(CONFIG_NET_PROFILE) += profile.o
-+obj-$(CONFIG_NET_RADIO) += wireless.o
-+# Ugly. I wish all wireless drivers were moved in drivers/net/wireless
-+obj-$(CONFIG_NET_PCMCIA_RADIO) += wireless.o
-
- include $(TOPDIR)/Rules.make
-diff -u -p -r --new-file linux/net/core-w12/dev.c linux/net/core/dev.c
---- linux/net/core-w12/dev.c Wed Nov 7 14:39:36 2001
-+++ linux/net/core/dev.c Thu Jan 17 11:06:07 2002
-@@ -102,6 +102,7 @@
- #include <linux/module.h>
- #if defined(CONFIG_NET_RADIO) || defined(CONFIG_NET_PCMCIA_RADIO)
- #include <linux/wireless.h> /* Note : will define WIRELESS_EXT */
-+#include <net/iw_handler.h>
- #endif /* CONFIG_NET_RADIO || CONFIG_NET_PCMCIA_RADIO */
- #ifdef CONFIG_PLIP
- extern int plip_init(void);
-@@ -1796,122 +1797,6 @@ static int dev_proc_stats(char *buffer,
- #endif /* CONFIG_PROC_FS */
-
-
--#ifdef WIRELESS_EXT
--#ifdef CONFIG_PROC_FS
--
--/*
-- * Print one entry of /proc/net/wireless
-- * This is a clone of /proc/net/dev (just above)
-- */
--static int sprintf_wireless_stats(char *buffer, struct net_device *dev)
--{
-- /* Get stats from the driver */
-- struct iw_statistics *stats = (dev->get_wireless_stats ?
-- dev->get_wireless_stats(dev) :
-- (struct iw_statistics *) NULL);
-- int size;
--
-- if (stats != (struct iw_statistics *) NULL) {
-- size = sprintf(buffer,
-- "%6s: %04x %3d%c %3d%c %3d%c %6d %6d %6d %6d %6d %6d\n",
-- dev->name,
-- stats->status,
-- stats->qual.qual,
-- stats->qual.updated & 1 ? '.' : ' ',
-- stats->qual.level,
-- stats->qual.updated & 2 ? '.' : ' ',
-- stats->qual.noise,
-- stats->qual.updated & 4 ? '.' : ' ',
-- stats->discard.nwid,
-- stats->discard.code,
-- stats->discard.fragment,
-- stats->discard.retries,
-- stats->discard.misc,
-- stats->miss.beacon);
-- stats->qual.updated = 0;
-- }
-- else
-- size = 0;
--
-- return size;
--}
--
--/*
-- * Print info for /proc/net/wireless (print all entries)
-- * This is a clone of /proc/net/dev (just above)
-- */
--static int dev_get_wireless_info(char * buffer, char **start, off_t offset,
-- int length)
--{
-- int len = 0;
-- off_t begin = 0;
-- off_t pos = 0;
-- int size;
--
-- struct net_device * dev;
--
-- size = sprintf(buffer,
-- "Inter-| sta-| Quality | Discarded packets | Missed\n"
-- " face | tus | link level noise | nwid crypt frag retry misc | beacon\n"
-- );
--
-- pos += size;
-- len += size;
--
-- read_lock(&dev_base_lock);
-- for (dev = dev_base; dev != NULL; dev = dev->next) {
-- size = sprintf_wireless_stats(buffer + len, dev);
-- len += size;
-- pos = begin + len;
--
-- if (pos < offset) {
-- len = 0;
-- begin = pos;
-- }
-- if (pos > offset + length)
-- break;
-- }
-- read_unlock(&dev_base_lock);
--
-- *start = buffer + (offset - begin); /* Start of wanted data */
-- len -= (offset - begin); /* Start slop */
-- if (len > length)
-- len = length; /* Ending slop */
-- if (len < 0)
-- len = 0;
--
-- return len;
--}
--#endif /* CONFIG_PROC_FS */
--
--/*
-- * Allow programatic access to /proc/net/wireless even if /proc
-- * doesn't exist... Also more efficient...
-- */
--static inline int dev_iwstats(struct net_device *dev, struct ifreq *ifr)
--{
-- /* Get stats from the driver */
-- struct iw_statistics *stats = (dev->get_wireless_stats ?
-- dev->get_wireless_stats(dev) :
-- (struct iw_statistics *) NULL);
--
-- if (stats != (struct iw_statistics *) NULL) {
-- struct iwreq * wrq = (struct iwreq *)ifr;
--
-- /* Copy statistics to the user buffer */
-- if(copy_to_user(wrq->u.data.pointer, stats,
-- sizeof(struct iw_statistics)))
-- return -EFAULT;
--
-- /* Check if we need to clear the update flag */
-- if(wrq->u.data.flags != 0)
-- stats->qual.updated = 0;
-- return(0);
-- } else
-- return -EOPNOTSUPP;
--}
--#endif /* WIRELESS_EXT */
--
- /**
- * netdev_set_master - set up master/slave pair
- * @slave: slave device
-@@ -2209,11 +2094,6 @@ static int dev_ifsioc(struct ifreq *ifr,
- notifier_call_chain(&netdev_chain, NETDEV_CHANGENAME, dev);
- return 0;
-
--#ifdef WIRELESS_EXT
-- case SIOCGIWSTATS:
-- return dev_iwstats(dev, ifr);
--#endif /* WIRELESS_EXT */
--
- /*
- * Unknown or private ioctl
- */
-@@ -2239,17 +2119,6 @@ static int dev_ifsioc(struct ifreq *ifr,
- return -EOPNOTSUPP;
- }
-
--#ifdef WIRELESS_EXT
-- if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) {
-- if (dev->do_ioctl) {
-- if (!netif_device_present(dev))
-- return -ENODEV;
-- return dev->do_ioctl(dev, ifr, cmd);
-- }
-- return -EOPNOTSUPP;
-- }
--#endif /* WIRELESS_EXT */
--
- }
- return -EINVAL;
- }
-@@ -2431,7 +2300,8 @@ int dev_ioctl(unsigned int cmd, void *ar
- }
- dev_load(ifr.ifr_name);
- rtnl_lock();
-- ret = dev_ifsioc(&ifr, cmd);
-+ /* Follow me in net/core/wireless.c */
-+ ret = wireless_process_ioctl(&ifr, cmd);
- rtnl_unlock();
- if (!ret && IW_IS_GET(cmd) &&
- copy_to_user(arg, &ifr, sizeof(struct ifreq)))
-@@ -2856,6 +2726,7 @@ int __init net_dev_init(void)
- proc_net_create("dev", 0, dev_get_info);
- create_proc_read_entry("net/softnet_stat", 0, 0, dev_proc_stats, NULL);
- #ifdef WIRELESS_EXT
-+ /* Available in net/core/wireless.c */
- proc_net_create("wireless", 0, dev_get_wireless_info);
- #endif /* WIRELESS_EXT */
- #endif /* CONFIG_PROC_FS */
-diff -u -p -r --new-file linux/net/core-w12/wireless.c linux/net/core/wireless.c
---- linux/net/core-w12/wireless.c Wed Dec 31 16:00:00 1969
-+++ linux/net/core/wireless.c Mon Jan 21 11:13:23 2002
-@@ -0,0 +1,733 @@
-+/*
-+ * This file implement the Wireless Extensions APIs.
-+ *
-+ * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-+ * Copyright (c) 1997-2001 Jean Tourrilhes, All Rights Reserved.
-+ *
-+ * (As all part of the Linux kernel, this file is GPL)
-+ */
-+
-+/************************** DOCUMENTATION **************************/
-+/*
-+ * API definition :
-+ * --------------
-+ * See <linux/wireless.h> for details of the APIs and the rest.
-+ *
-+ * History :
-+ * -------
-+ *
-+ * v1 - 5.12.01 - Jean II
-+ * o Created this file.
-+ *
-+ * v2 - 13.12.01 - Jean II
-+ * o Move /proc/net/wireless stuff from net/core/dev.c to here
-+ * o Make Wireless Extension IOCTLs go through here
-+ * o Added iw_handler handling ;-)
-+ * o Added standard ioctl description
-+ * o Initial dumb commit strategy based on orinoco.c
-+ */
-+
-+/***************************** INCLUDES *****************************/
-+
-+#include <asm/uaccess.h> /* copy_to_user() */
-+#include <linux/config.h> /* Not needed ??? */
-+#include <linux/types.h> /* off_t */
-+#include <linux/netdevice.h> /* struct ifreq, dev_get_by_name() */
-+
-+#include <linux/wireless.h> /* Pretty obvious */
-+#include <net/iw_handler.h> /* New driver API */
-+
-+/**************************** CONSTANTS ****************************/
-+
-+/* This will be turned on later on... */
-+#undef WE_STRICT_WRITE /* Check write buffer size */
-+
-+/* Debuging stuff */
-+#undef WE_IOCTL_DEBUG /* Debug IOCTL API */
-+
-+/************************* GLOBAL VARIABLES *************************/
-+/*
-+ * You should not use global variables, because or re-entrancy.
-+ * On our case, it's only const, so it's OK...
-+ */
-+static const struct iw_ioctl_description standard_ioctl[] = {
-+ /* SIOCSIWCOMMIT (internal) */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCGIWNAME */
-+ { IW_HEADER_TYPE_CHAR, 0, 0, 0, 0, IW_DESCR_FLAG_DUMP},
-+ /* SIOCSIWNWID */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, IW_DESCR_FLAG_EVENT},
-+ /* SIOCGIWNWID */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, IW_DESCR_FLAG_DUMP},
-+ /* SIOCSIWFREQ */
-+ { IW_HEADER_TYPE_FREQ, 0, 0, 0, 0, IW_DESCR_FLAG_EVENT},
-+ /* SIOCGIWFREQ */
-+ { IW_HEADER_TYPE_FREQ, 0, 0, 0, 0, IW_DESCR_FLAG_DUMP},
-+ /* SIOCSIWMODE */
-+ { IW_HEADER_TYPE_UINT, 0, 0, 0, 0, IW_DESCR_FLAG_EVENT},
-+ /* SIOCGIWMODE */
-+ { IW_HEADER_TYPE_UINT, 0, 0, 0, 0, IW_DESCR_FLAG_DUMP},
-+ /* SIOCSIWSENS */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCGIWSENS */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCSIWRANGE */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCGIWRANGE */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, sizeof(struct iw_range), IW_DESCR_FLAG_DUMP},
-+ /* SIOCSIWPRIV */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCGIWPRIV (handled directly by us) */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCSIWSTATS */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCGIWSTATS (handled directly by us) */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, IW_DESCR_FLAG_DUMP},
-+ /* SIOCSIWSPY */
-+ { IW_HEADER_TYPE_POINT, 0, sizeof(struct sockaddr), 0, IW_MAX_SPY, 0},
-+ /* SIOCGIWSPY */
-+ { IW_HEADER_TYPE_POINT, 0, (sizeof(struct sockaddr) + sizeof(struct iw_quality)), 0, IW_MAX_SPY, 0},
-+ /* -- hole -- */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* -- hole -- */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCSIWAP */
-+ { IW_HEADER_TYPE_ADDR, 0, 0, 0, 0, 0},
-+ /* SIOCGIWAP */
-+ { IW_HEADER_TYPE_ADDR, 0, 0, 0, 0, IW_DESCR_FLAG_DUMP},
-+ /* -- hole -- */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCGIWAPLIST */
-+ { IW_HEADER_TYPE_POINT, 0, (sizeof(struct sockaddr) + sizeof(struct iw_quality)), 0, IW_MAX_AP, 0},
-+ /* -- hole -- */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* -- hole -- */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCSIWESSID */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE, IW_DESCR_FLAG_EVENT},
-+ /* SIOCGIWESSID */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE, IW_DESCR_FLAG_DUMP},
-+ /* SIOCSIWNICKN */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE, 0},
-+ /* SIOCGIWNICKN */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE, 0},
-+ /* -- hole -- */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* -- hole -- */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCSIWRATE */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCGIWRATE */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCSIWRTS */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCGIWRTS */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCSIWFRAG */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCGIWFRAG */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCSIWTXPOW */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCGIWTXPOW */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCSIWRETRY */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCGIWRETRY */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCSIWENCODE */
-+ { IW_HEADER_TYPE_POINT, 4, 1, 0, IW_ENCODING_TOKEN_MAX, IW_DESCR_FLAG_EVENT | IW_DESCR_FLAG_RESTRICT},
-+ /* SIOCGIWENCODE */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ENCODING_TOKEN_MAX, IW_DESCR_FLAG_DUMP | IW_DESCR_FLAG_RESTRICT},
-+ /* SIOCSIWPOWER */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCGIWPOWER */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+};
-+
-+/* Size (in bytes) of the various private data types */
-+char priv_type_size[] = { 0, 1, 1, 0, 4, 4, 0, 0 };
-+
-+/************************ COMMON SUBROUTINES ************************/
-+/*
-+ * Stuff that may be used in various place or doesn't fit in one
-+ * of the section below.
-+ */
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Return the driver handler associated with a specific Wireless Extension.
-+ * Called from various place, so make sure it remains efficient.
-+ */
-+static inline iw_handler get_handler(struct net_device *dev,
-+ unsigned int cmd)
-+{
-+ unsigned int index; /* MUST be unsigned */
-+
-+ /* Check if we have some wireless handlers defined */
-+ if(dev->wireless_handlers == NULL)
-+ return NULL;
-+
-+ /* Try as a standard command */
-+ index = cmd - SIOCIWFIRST;
-+ if(index < dev->wireless_handlers->num_standard)
-+ return dev->wireless_handlers->standard[index];
-+
-+ /* Try as a private command */
-+ index = cmd - SIOCIWFIRSTPRIV;
-+ if(index < dev->wireless_handlers->num_private)
-+ return dev->wireless_handlers->private[index];
-+
-+ /* Not found */
-+ return NULL;
-+}
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Get statistics out of the driver
-+ */
-+static inline struct iw_statistics *get_wireless_stats(struct net_device *dev)
-+{
-+ return (dev->get_wireless_stats ?
-+ dev->get_wireless_stats(dev) :
-+ (struct iw_statistics *) NULL);
-+ /* In the future, get_wireless_stats may move from 'struct net_device'
-+ * to 'struct iw_handler_def', to de-bloat struct net_device.
-+ * Definitely worse a thought... */
-+}
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Call the commit handler in the driver
-+ * (if exist and if conditions are right)
-+ *
-+ * Note : our current commit strategy is currently pretty dumb,
-+ * but we will be able to improve on that...
-+ * The goal is to try to agreagate as many changes as possible
-+ * before doing the commit. Drivers that will define a commit handler
-+ * are usually those that need a reset after changing parameters, so
-+ * we want to minimise the number of reset.
-+ * A cool idea is to use a timer : at each "set" command, we re-set the
-+ * timer, when the timer eventually fires, we call the driver.
-+ * Hopefully, more on that later.
-+ *
-+ * Also, I'm waiting to see how many people will complain about the
-+ * netif_running(dev) test. I'm open on that one...
-+ * Hopefully, the driver will remember to do a commit in "open()" ;-)
-+ */
-+static inline int call_commit_handler(struct net_device * dev)
-+{
-+ if((netif_running(dev)) &&
-+ (dev->wireless_handlers->standard[0] != NULL)) {
-+ /* Call the commit handler on the driver */
-+ return dev->wireless_handlers->standard[0](dev, NULL,
-+ NULL, NULL);
-+ } else
-+ return 0; /* Command completed successfully */
-+}
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Number of private arguments
-+ */
-+static inline int get_priv_size(__u16 args)
-+{
-+ int num = args & IW_PRIV_SIZE_MASK;
-+ int type = (args & IW_PRIV_TYPE_MASK) >> 12;
-+
-+ return num * priv_type_size[type];
-+}
-+
-+
-+/******************** /proc/net/wireless SUPPORT ********************/
-+/*
-+ * The /proc/net/wireless file is a human readable user-space interface
-+ * exporting various wireless specific statistics from the wireless devices.
-+ * This is the most popular part of the Wireless Extensions ;-)
-+ *
-+ * This interface is a pure clone of /proc/net/dev (in net/core/dev.c).
-+ * The content of the file is basically the content of "struct iw_statistics".
-+ */
-+
-+#ifdef CONFIG_PROC_FS
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Print one entry (line) of /proc/net/wireless
-+ */
-+static inline int sprintf_wireless_stats(char *buffer, struct net_device *dev)
-+{
-+ /* Get stats from the driver */
-+ struct iw_statistics *stats;
-+ int size;
-+
-+ stats = get_wireless_stats(dev);
-+ if (stats != (struct iw_statistics *) NULL) {
-+ size = sprintf(buffer,
-+ "%6s: %04x %3d%c %3d%c %3d%c %6d %6d %6d %6d %6d %6d\n",
-+ dev->name,
-+ stats->status,
-+ stats->qual.qual,
-+ stats->qual.updated & 1 ? '.' : ' ',
-+ stats->qual.level,
-+ stats->qual.updated & 2 ? '.' : ' ',
-+ stats->qual.noise,
-+ stats->qual.updated & 4 ? '.' : ' ',
-+ stats->discard.nwid,
-+ stats->discard.code,
-+ stats->discard.fragment,
-+ stats->discard.retries,
-+ stats->discard.misc,
-+ stats->miss.beacon);
-+ stats->qual.updated = 0;
-+ }
-+ else
-+ size = 0;
-+
-+ return size;
-+}
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Print info for /proc/net/wireless (print all entries)
-+ */
-+int dev_get_wireless_info(char * buffer, char **start, off_t offset,
-+ int length)
-+{
-+ int len = 0;
-+ off_t begin = 0;
-+ off_t pos = 0;
-+ int size;
-+
-+ struct net_device * dev;
-+
-+ size = sprintf(buffer,
-+ "Inter-| sta-| Quality | Discarded packets | Missed\n"
-+ " face | tus | link level noise | nwid crypt frag retry misc | beacon\n"
-+ );
-+
-+ pos += size;
-+ len += size;
-+
-+ read_lock(&dev_base_lock);
-+ for (dev = dev_base; dev != NULL; dev = dev->next) {
-+ size = sprintf_wireless_stats(buffer + len, dev);
-+ len += size;
-+ pos = begin + len;
-+
-+ if (pos < offset) {
-+ len = 0;
-+ begin = pos;
-+ }
-+ if (pos > offset + length)
-+ break;
-+ }
-+ read_unlock(&dev_base_lock);
-+
-+ *start = buffer + (offset - begin); /* Start of wanted data */
-+ len -= (offset - begin); /* Start slop */
-+ if (len > length)
-+ len = length; /* Ending slop */
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+#endif /* CONFIG_PROC_FS */
-+
-+/************************** IOCTL SUPPORT **************************/
-+/*
-+ * The original user space API to configure all those Wireless Extensions
-+ * is through IOCTLs.
-+ * In there, we check if we need to call the new driver API (iw_handler)
-+ * or just call the driver ioctl handler.
-+ */
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Allow programatic access to /proc/net/wireless even if /proc
-+ * doesn't exist... Also more efficient...
-+ */
-+static inline int dev_iwstats(struct net_device *dev, struct ifreq *ifr)
-+{
-+ /* Get stats from the driver */
-+ struct iw_statistics *stats;
-+
-+ stats = get_wireless_stats(dev);
-+ if (stats != (struct iw_statistics *) NULL) {
-+ struct iwreq * wrq = (struct iwreq *)ifr;
-+
-+ /* Copy statistics to the user buffer */
-+ if(copy_to_user(wrq->u.data.pointer, stats,
-+ sizeof(struct iw_statistics)))
-+ return -EFAULT;
-+
-+ /* Check if we need to clear the update flag */
-+ if(wrq->u.data.flags != 0)
-+ stats->qual.updated = 0;
-+ return 0;
-+ } else
-+ return -EOPNOTSUPP;
-+}
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Export the driver private handler definition
-+ * They will be picked up by tools like iwpriv...
-+ */
-+static inline int ioctl_export_private(struct net_device * dev,
-+ struct ifreq * ifr)
-+{
-+ struct iwreq * iwr = (struct iwreq *) ifr;
-+
-+ /* Check if the driver has something to export */
-+ if((dev->wireless_handlers->num_private_args == 0) ||
-+ (dev->wireless_handlers->private_args == NULL))
-+ return -EOPNOTSUPP;
-+
-+ /* Check NULL pointer */
-+ if(iwr->u.data.pointer == NULL)
-+ return -EFAULT;
-+#ifdef WE_STRICT_WRITE
-+ /* Check if there is enough buffer up there */
-+ if(iwr->u.data.length < (SIOCIWLASTPRIV - SIOCIWFIRSTPRIV + 1))
-+ return -E2BIG;
-+#endif /* WE_STRICT_WRITE */
-+
-+ /* Set the number of available ioctls. */
-+ iwr->u.data.length = dev->wireless_handlers->num_private_args;
-+
-+ /* Copy structure to the user buffer. */
-+ if (copy_to_user(iwr->u.data.pointer,
-+ dev->wireless_handlers->private_args,
-+ sizeof(struct iw_priv_args) * iwr->u.data.length))
-+ return -EFAULT;
-+
-+ return 0;
-+}
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Wrapper to call a standard Wireless Extension handler.
-+ * We do various checks and also take care of moving data between
-+ * user space and kernel space.
-+ */
-+static inline int ioctl_standard_call(struct net_device * dev,
-+ struct ifreq * ifr,
-+ unsigned int cmd,
-+ iw_handler handler)
-+{
-+ struct iwreq * iwr = (struct iwreq *) ifr;
-+ const struct iw_ioctl_description * descr;
-+ struct iw_request_info info;
-+ int ret = -EINVAL;
-+
-+ /* Get the description of the IOCTL */
-+ descr = &(standard_ioctl[cmd - SIOCIWFIRST]);
-+
-+#ifdef WE_IOCTL_DEBUG
-+ printk(KERN_DEBUG "%s : Found standard handler for 0x%04X\n",
-+ ifr->ifr_name, cmd);
-+ printk(KERN_DEBUG "Header type : %d, token type : %d, token_size : %d, max_token : %d\n", descr->header_type, descr->token_type, descr->token_size, descr->max_tokens);
-+#endif /* WE_IOCTL_DEBUG */
-+
-+ /* Prepare the call */
-+ info.cmd = cmd;
-+ info.flags = 0;
-+
-+ /* Check if we have a pointer to user space data or not */
-+ if(descr->header_type != IW_HEADER_TYPE_POINT) {
-+ /* No extra arguments. Trivial to handle */
-+ ret = handler(dev, &info, &(iwr->u), NULL);
-+ } else {
-+ char * extra;
-+ int err;
-+
-+ /* Check what user space is giving us */
-+ if(IW_IS_SET(cmd)) {
-+ /* Check NULL pointer */
-+ if((iwr->u.data.pointer == NULL) &&
-+ (iwr->u.data.length != 0))
-+ return -EFAULT;
-+ /* Check if number of token fits within bounds */
-+ if(iwr->u.data.length > descr->max_tokens)
-+ return -E2BIG;
-+ if(iwr->u.data.length < descr->min_tokens)
-+ return -EINVAL;
-+ } else {
-+ /* Check NULL pointer */
-+ if(iwr->u.data.pointer == NULL)
-+ return -EFAULT;
-+#ifdef WE_STRICT_WRITE
-+ /* Check if there is enough buffer up there */
-+ if(iwr->u.data.length < descr->max_tokens)
-+ return -E2BIG;
-+#endif /* WE_STRICT_WRITE */
-+ }
-+
-+#ifdef WE_IOCTL_DEBUG
-+ printk(KERN_DEBUG "Malloc %d bytes\n",
-+ descr->max_tokens * descr->token_size);
-+#endif /* WE_IOCTL_DEBUG */
-+
-+ /* Always allocate for max space. Easier, and won't last
-+ * long... */
-+ extra = kmalloc(descr->max_tokens * descr->token_size,
-+ GFP_KERNEL);
-+ if (extra == NULL) {
-+ return -ENOMEM;
-+ }
-+
-+ /* If it is a SET, get all the extra data in here */
-+ if(IW_IS_SET(cmd) && (iwr->u.data.length != 0)) {
-+ err = copy_from_user(extra, iwr->u.data.pointer,
-+ iwr->u.data.length *
-+ descr->token_size);
-+ if (err) {
-+ kfree(extra);
-+ return -EFAULT;
-+ }
-+#ifdef WE_IOCTL_DEBUG
-+ printk(KERN_DEBUG "Got %d bytes\n",
-+ iwr->u.data.length * descr->token_size);
-+#endif /* WE_IOCTL_DEBUG */
-+ }
-+
-+ /* Call the handler */
-+ ret = handler(dev, &info, &(iwr->u), extra);
-+
-+ /* If we have something to return to the user */
-+ if (!ret && IW_IS_GET(cmd)) {
-+ err = copy_to_user(iwr->u.data.pointer, extra,
-+ iwr->u.data.length *
-+ descr->token_size);
-+ if (err)
-+ ret = -EFAULT;
-+#ifdef WE_IOCTL_DEBUG
-+ printk(KERN_DEBUG "Wrote %d bytes\n",
-+ iwr->u.data.length * descr->token_size);
-+#endif /* WE_IOCTL_DEBUG */
-+ }
-+
-+ /* Cleanup - I told you it wasn't that long ;-) */
-+ kfree(extra);
-+ }
-+
-+ /* Call commit handler if needed and defined */
-+ if(ret == -EIWCOMMIT)
-+ ret = call_commit_handler(dev);
-+
-+ /* Here, we will generate the appropriate event if needed */
-+
-+ return ret;
-+}
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Wrapper to call a private Wireless Extension handler.
-+ * We do various checks and also take care of moving data between
-+ * user space and kernel space.
-+ * It's not as nice and slimline as the standard wrapper. The cause
-+ * is struct iw_priv_args, which was not really designed for the
-+ * job we are going here.
-+ *
-+ * IMPORTANT : This function prevent to set and get data on the same
-+ * IOCTL and enforce the SET/GET convention. Not doing it would be
-+ * far too hairy...
-+ * If you need to set and get data at the same time, please don't use
-+ * a iw_handler but process it in your ioctl handler (i.e. use the
-+ * old driver API).
-+ */
-+static inline int ioctl_private_call(struct net_device * dev,
-+ struct ifreq * ifr,
-+ unsigned int cmd,
-+ iw_handler handler)
-+{
-+ struct iwreq * iwr = (struct iwreq *) ifr;
-+ struct iw_priv_args * descr = NULL;
-+ struct iw_request_info info;
-+ int extra_size = 0;
-+ int i;
-+ int ret = -EINVAL;
-+
-+ /* Get the description of the IOCTL */
-+ for(i = 0; i < dev->wireless_handlers->num_private_args; i++)
-+ if(cmd == dev->wireless_handlers->private_args[i].cmd) {
-+ descr = &(dev->wireless_handlers->private_args[i]);
-+ break;
-+ }
-+
-+#ifdef WE_IOCTL_DEBUG
-+ printk(KERN_DEBUG "%s : Found private handler for 0x%04X\n",
-+ ifr->ifr_name, cmd);
-+ if(descr) {
-+ printk(KERN_DEBUG "Name %s, set %X, get %X\n",
-+ descr->name, descr->set_args, descr->get_args);
-+ }
-+#endif /* WE_IOCTL_DEBUG */
-+
-+ /* Compute the size of the set/get arguments */
-+ if(descr != NULL) {
-+ if(IW_IS_SET(cmd)) {
-+ /* Size of set arguments */
-+ extra_size = get_priv_size(descr->set_args);
-+
-+ /* Does it fits in iwr ? */
-+ if((descr->set_args & IW_PRIV_SIZE_FIXED) &&
-+ (extra_size < IFNAMSIZ))
-+ extra_size = 0;
-+ } else {
-+ /* Size of set arguments */
-+ extra_size = get_priv_size(descr->get_args);
-+
-+ /* Does it fits in iwr ? */
-+ if((descr->get_args & IW_PRIV_SIZE_FIXED) &&
-+ (extra_size < IFNAMSIZ))
-+ extra_size = 0;
-+ }
-+ }
-+
-+ /* Prepare the call */
-+ info.cmd = cmd;
-+ info.flags = 0;
-+
-+ /* Check if we have a pointer to user space data or not. */
-+ if(extra_size == 0) {
-+ /* No extra arguments. Trivial to handle */
-+ ret = handler(dev, &info, &(iwr->u), (char *) &(iwr->u));
-+ } else {
-+ char * extra;
-+ int err;
-+
-+ /* Check what user space is giving us */
-+ if(IW_IS_SET(cmd)) {
-+ /* Check NULL pointer */
-+ if((iwr->u.data.pointer == NULL) &&
-+ (iwr->u.data.length != 0))
-+ return -EFAULT;
-+
-+ /* Does it fits within bounds ? */
-+ if(iwr->u.data.length > (descr->set_args &
-+ IW_PRIV_SIZE_MASK))
-+ return -E2BIG;
-+ } else {
-+ /* Check NULL pointer */
-+ if(iwr->u.data.pointer == NULL)
-+ return -EFAULT;
-+ }
-+
-+#ifdef WE_IOCTL_DEBUG
-+ printk(KERN_DEBUG "Malloc %d bytes\n", extra_size);
-+#endif /* WE_IOCTL_DEBUG */
-+
-+ /* Always allocate for max space. Easier, and won't last
-+ * long... */
-+ extra = kmalloc(extra_size, GFP_KERNEL);
-+ if (extra == NULL) {
-+ return -ENOMEM;
-+ }
-+
-+ /* If it is a SET, get all the extra data in here */
-+ if(IW_IS_SET(cmd) && (iwr->u.data.length != 0)) {
-+ err = copy_from_user(extra, iwr->u.data.pointer,
-+ extra_size);
-+ if (err) {
-+ kfree(extra);
-+ return -EFAULT;
-+ }
-+#ifdef WE_IOCTL_DEBUG
-+ printk(KERN_DEBUG "Got %d elem\n", iwr->u.data.length);
-+#endif /* WE_IOCTL_DEBUG */
-+ }
-+
-+ /* Call the handler */
-+ ret = handler(dev, &info, &(iwr->u), extra);
-+
-+ /* If we have something to return to the user */
-+ if (!ret && IW_IS_GET(cmd)) {
-+ err = copy_to_user(iwr->u.data.pointer, extra,
-+ extra_size);
-+ if (err)
-+ ret = -EFAULT;
-+#ifdef WE_IOCTL_DEBUG
-+ printk(KERN_DEBUG "Wrote %d elem\n",
-+ iwr->u.data.length);
-+#endif /* WE_IOCTL_DEBUG */
-+ }
-+
-+ /* Cleanup - I told you it wasn't that long ;-) */
-+ kfree(extra);
-+ }
-+
-+
-+ /* Call commit handler if needed and defined */
-+ if(ret == -EIWCOMMIT)
-+ ret = call_commit_handler(dev);
-+
-+ return ret;
-+}
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Main IOCTl dispatcher. Called from the main networking code
-+ * (dev_ioctl() in net/core/dev.c).
-+ * Check the type of IOCTL and call the appropriate wrapper...
-+ */
-+int wireless_process_ioctl(struct ifreq *ifr, unsigned int cmd)
-+{
-+ struct net_device *dev;
-+ iw_handler handler;
-+
-+ /* Permissions are already checked in dev_ioctl() before calling us.
-+ * The copy_to/from_user() of ifr is also dealt with in there */
-+
-+ /* Make sure the device exist */
-+ if ((dev = __dev_get_by_name(ifr->ifr_name)) == NULL)
-+ return -ENODEV;
-+
-+ /* A bunch of special cases, then the generic case...
-+ * Note that 'cmd' is already filtered in dev_ioctl() with
-+ * (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) */
-+ switch(cmd)
-+ {
-+ case SIOCGIWSTATS:
-+ /* Get Wireless Stats */
-+ return dev_iwstats(dev, ifr);
-+
-+ case SIOCGIWPRIV:
-+ /* Check if we have some wireless handlers defined */
-+ if(dev->wireless_handlers != NULL) {
-+ /* We export to user space the definition of
-+ * the private handler ourselves */
-+ return ioctl_export_private(dev, ifr);
-+ }
-+ // ## Fall-through for old API ##
-+ default:
-+ /* Generic IOCTL */
-+ /* Basic check */
-+ if (!netif_device_present(dev))
-+ return -ENODEV;
-+ /* New driver API : try to find the handler */
-+ handler = get_handler(dev, cmd);
-+ if(handler != NULL) {
-+ /* Standard and private are not the same */
-+ if(cmd < SIOCIWFIRSTPRIV)
-+ return ioctl_standard_call(dev,
-+ ifr,
-+ cmd,
-+ handler);
-+ else
-+ return ioctl_private_call(dev,
-+ ifr,
-+ cmd,
-+ handler);
-+ }
-+ /* Old driver API : call driver ioctl handler */
-+ if (dev->do_ioctl) {
-+ return dev->do_ioctl(dev, ifr, cmd);
-+ }
-+ return -EOPNOTSUPP;
-+ }
-+ /* Not reached */
-+ return -EINVAL;
-+}
diff --git a/recipes/linux/files/iw_handlers.w14-5.diff b/recipes/linux/files/iw_handlers.w14-5.diff
deleted file mode 100644
index 539b160068..0000000000
--- a/recipes/linux/files/iw_handlers.w14-5.diff
+++ /dev/null
@@ -1,838 +0,0 @@
-diff -u -p -r --new-file linux/include/linux-w13/rtnetlink.h linux/include/linux/rtnetlink.h
---- linux/include/linux-w13/rtnetlink.h Thu Jun 6 14:44:08 2002
-+++ linux/include/linux/rtnetlink.h Thu Jun 6 15:47:44 2002
-@@ -440,12 +440,14 @@ enum
- #define IFLA_COST IFLA_COST
- IFLA_PRIORITY,
- #define IFLA_PRIORITY IFLA_PRIORITY
-- IFLA_MASTER
-+ IFLA_MASTER,
- #define IFLA_MASTER IFLA_MASTER
-+ IFLA_WIRELESS, /* Wireless Extension event - see wireless.h */
-+#define IFLA_WIRELESS IFLA_WIRELESS
- };
-
-
--#define IFLA_MAX IFLA_MASTER
-+#define IFLA_MAX IFLA_WIRELESS
-
- #define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
- #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
-diff -u -p -r --new-file linux/include/linux-w13/wireless.h linux/include/linux/wireless.h
---- linux/include/linux-w13/wireless.h Thu Jun 6 15:00:28 2002
-+++ linux/include/linux/wireless.h Thu Jun 6 15:47:44 2002
-@@ -1,10 +1,10 @@
- /*
- * This file define a set of standard wireless extensions
- *
-- * Version : 13 6.12.01
-+ * Version : 14 25.1.02
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-- * Copyright (c) 1997-2001 Jean Tourrilhes, All Rights Reserved.
-+ * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
- */
-
- #ifndef _LINUX_WIRELESS_H
-@@ -40,7 +40,7 @@
- * # include/linux/netdevice.h (one place)
- * # include/linux/proc_fs.h (one place)
- *
-- * New driver API (2001 -> onward) :
-+ * New driver API (2002 -> onward) :
- * -------------------------------
- * This file is only concerned with the user space API and common definitions.
- * The new driver API is defined and documented in :
-@@ -49,6 +49,11 @@
- * Note as well that /proc/net/wireless implementation has now moved in :
- * # include/linux/wireless.c
- *
-+ * Wireless Events (2002 -> onward) :
-+ * --------------------------------
-+ * Events are defined at the end of this file, and implemented in :
-+ * # include/linux/wireless.c
-+ *
- * Other comments :
- * --------------
- * Do not add here things that are redundant with other mechanisms
-@@ -75,7 +80,7 @@
- * (there is some stuff that will be added in the future...)
- * I just plan to increment with each new version.
- */
--#define WIRELESS_EXT 13
-+#define WIRELESS_EXT 14
-
- /*
- * Changes :
-@@ -141,6 +146,13 @@
- * - Document creation of new driver API.
- * - Extract union iwreq_data from struct iwreq (for new driver API).
- * - Rename SIOCSIWNAME as SIOCSIWCOMMIT
-+ *
-+ * V13 to V14
-+ * ----------
-+ * - Wireless Events support : define struct iw_event
-+ * - Define additional specific event numbers
-+ * - Add "addr" and "param" fields in union iwreq_data
-+ * - AP scanning stuff (SIOCSIWSCAN and friends)
- */
-
- /**************************** CONSTANTS ****************************/
-@@ -175,6 +187,8 @@
- #define SIOCSIWAP 0x8B14 /* set access point MAC addresses */
- #define SIOCGIWAP 0x8B15 /* get access point MAC addresses */
- #define SIOCGIWAPLIST 0x8B17 /* get list of access point in range */
-+#define SIOCSIWSCAN 0x8B18 /* trigger scanning */
-+#define SIOCGIWSCAN 0x8B19 /* get scanning results */
-
- /* 802.11 specific support */
- #define SIOCSIWESSID 0x8B1A /* set ESSID (network name) */
-@@ -238,6 +252,15 @@
- #define IW_IS_SET(cmd) (!((cmd) & 0x1))
- #define IW_IS_GET(cmd) ((cmd) & 0x1)
-
-+/* ----------------------- WIRELESS EVENTS ----------------------- */
-+/* Those are *NOT* ioctls, do not issue request on them !!! */
-+/* Most events use the same identifier as ioctl requests */
-+
-+#define IWEVTXDROP 0x8C00 /* Packet dropped to excessive retry */
-+#define IWEVQUAL 0x8C01 /* Quality part of statistics */
-+
-+#define IWEVFIRST 0x8C00
-+
- /* ------------------------- PRIVATE INFO ------------------------- */
- /*
- * The following is used with SIOCGIWPRIV. It allow a driver to define
-@@ -340,6 +363,19 @@
- #define IW_RETRY_MAX 0x0002 /* Value is a maximum */
- #define IW_RETRY_RELATIVE 0x0004 /* Value is not in seconds/ms/us */
-
-+/* Scanning request flags */
-+#define IW_SCAN_DEFAULT 0x0000 /* Default scan of the driver */
-+#define IW_SCAN_ALL_ESSID 0x0001 /* Scan all ESSIDs */
-+#define IW_SCAN_THIS_ESSID 0x0002 /* Scan only this ESSID */
-+#define IW_SCAN_ALL_FREQ 0x0004 /* Scan all Frequencies */
-+#define IW_SCAN_THIS_FREQ 0x0008 /* Scan only this Frequency */
-+#define IW_SCAN_ALL_MODE 0x0010 /* Scan all Modes */
-+#define IW_SCAN_THIS_MODE 0x0020 /* Scan only this Mode */
-+#define IW_SCAN_ALL_RATE 0x0040 /* Scan all Bit-Rates */
-+#define IW_SCAN_THIS_RATE 0x0080 /* Scan only this Bit-Rate */
-+/* Maximum size of returned data */
-+#define IW_SCAN_MAX_DATA 4096 /* In bytes */
-+
- /****************************** TYPES ******************************/
-
- /* --------------------------- SUBTYPES --------------------------- */
-@@ -466,9 +502,12 @@ union iwreq_data
-
- struct iw_point encoding; /* Encoding stuff : tokens */
- struct iw_param power; /* PM duration/timeout */
-+ struct iw_quality qual; /* Quality part of statistics */
-
- struct sockaddr ap_addr; /* Access point address */
-+ struct sockaddr addr; /* Destination address (hw) */
-
-+ struct iw_param param; /* Other small parameters */
- struct iw_point data; /* Other large parameters */
- };
-
-@@ -595,5 +634,36 @@ struct iw_priv_args
- __u16 get_args; /* Type and number of args */
- char name[IFNAMSIZ]; /* Name of the extension */
- };
-+
-+/* ----------------------- WIRELESS EVENTS ----------------------- */
-+/*
-+ * Wireless events are carried through the rtnetlink socket to user
-+ * space. They are encapsulated in the IFLA_WIRELESS field of
-+ * a RTM_NEWLINK message.
-+ */
-+
-+/*
-+ * A Wireless Event. Contains basically the same data as the ioctl...
-+ */
-+struct iw_event
-+{
-+ __u16 len; /* Real lenght of this stuff */
-+ __u16 cmd; /* Wireless IOCTL */
-+ union iwreq_data u; /* IOCTL fixed payload */
-+};
-+
-+/* Size of the Event prefix (including padding and alignement junk) */
-+#define IW_EV_LCP_LEN (sizeof(struct iw_event) - sizeof(union iwreq_data))
-+/* Size of the various events */
-+#define IW_EV_CHAR_LEN (IW_EV_LCP_LEN + IFNAMSIZ)
-+#define IW_EV_UINT_LEN (IW_EV_LCP_LEN + sizeof(__u32))
-+#define IW_EV_FREQ_LEN (IW_EV_LCP_LEN + sizeof(struct iw_freq))
-+#define IW_EV_POINT_LEN (IW_EV_LCP_LEN + sizeof(struct iw_point))
-+#define IW_EV_PARAM_LEN (IW_EV_LCP_LEN + sizeof(struct iw_param))
-+#define IW_EV_ADDR_LEN (IW_EV_LCP_LEN + sizeof(struct sockaddr))
-+#define IW_EV_QUAL_LEN (IW_EV_LCP_LEN + sizeof(struct iw_quality))
-+
-+/* Note : in the case of iw_point, the extra data will come at the
-+ * end of the event */
-
- #endif /* _LINUX_WIRELESS_H */
-diff -u -p -r --new-file linux/include/net-w13/iw_handler.h linux/include/net/iw_handler.h
---- linux/include/net-w13/iw_handler.h Thu Jun 6 15:06:16 2002
-+++ linux/include/net/iw_handler.h Thu Jun 6 15:48:06 2002
-@@ -1,10 +1,10 @@
- /*
- * This file define the new driver API for Wireless Extensions
- *
-- * Version : 2 6.12.01
-+ * Version : 3 17.1.02
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-- * Copyright (c) 2001 Jean Tourrilhes, All Rights Reserved.
-+ * Copyright (c) 2001-2002 Jean Tourrilhes, All Rights Reserved.
- */
-
- #ifndef _IW_HANDLER_H
-@@ -33,7 +33,7 @@
- * o The user space interface is tied to ioctl because of the use
- * copy_to/from_user.
- *
-- * New driver API (2001 -> onward) :
-+ * New driver API (2002 -> onward) :
- * -------------------------------
- * The new driver API is just a bunch of standard functions (handlers),
- * each handling a specific Wireless Extension. The driver just export
-@@ -206,7 +206,18 @@
- * will be needed...
- * I just plan to increment with each new version.
- */
--#define IW_HANDLER_VERSION 2
-+#define IW_HANDLER_VERSION 3
-+
-+/*
-+ * Changes :
-+ *
-+ * V2 to V3
-+ * --------
-+ * - Move event definition in <linux/wireless.h>
-+ * - Add Wireless Event support :
-+ * o wireless_send_event() prototype
-+ * o iwe_stream_add_event/point() inline functions
-+ */
-
- /**************************** CONSTANTS ****************************/
-
-@@ -225,6 +236,7 @@
- #define IW_HEADER_TYPE_POINT 6 /* struct iw_point */
- #define IW_HEADER_TYPE_PARAM 7 /* struct iw_param */
- #define IW_HEADER_TYPE_ADDR 8 /* struct sockaddr */
-+#define IW_HEADER_TYPE_QUAL 9 /* struct iw_quality */
-
- /* Handling flags */
- /* Most are not implemented. I just use them as a reminder of some
-@@ -233,7 +245,8 @@
- /* Wrapper level flags */
- #define IW_DESCR_FLAG_DUMP 0x0001 /* Not part of the dump command */
- #define IW_DESCR_FLAG_EVENT 0x0002 /* Generate an event on SET */
--#define IW_DESCR_FLAG_RESTRICT 0x0004 /* GET request is ROOT only */
-+#define IW_DESCR_FLAG_RESTRICT 0x0004 /* GET : request is ROOT only */
-+ /* SET : Omit payload from generated iwevent */
- /* Driver level flags */
- #define IW_DESCR_FLAG_WAIT 0x0100 /* Wait for driver event */
-
-@@ -303,25 +316,6 @@ struct iw_handler_def
- * 'struct net_device' to here, to minimise bloat. */
- };
-
--/* ----------------------- WIRELESS EVENTS ----------------------- */
--/*
-- * Currently we don't support events, so let's just plan for the
-- * future...
-- */
--
--/*
-- * A Wireless Event.
-- */
--// How do we define short header ? We don't want a flag on length.
--// Probably a flag on event ? Highest bit to zero...
--struct iw_event
--{
-- __u16 length; /* Lenght of this stuff */
-- __u16 event; /* Wireless IOCTL */
-- union iwreq_data header; /* IOCTL fixed payload */
-- char extra[0]; /* Optional IOCTL data */
--};
--
- /* ---------------------- IOCTL DESCRIPTION ---------------------- */
- /*
- * One of the main goal of the new interface is to deal entirely with
-@@ -369,6 +363,88 @@ extern int dev_get_wireless_info(char *
- extern int wireless_process_ioctl(struct ifreq *ifr, unsigned int cmd);
-
- /* Second : functions that may be called by driver modules */
--/* None yet */
-
--#endif /* _LINUX_WIRELESS_H */
-+/* Send a single event to user space */
-+extern void wireless_send_event(struct net_device * dev,
-+ unsigned int cmd,
-+ union iwreq_data * wrqu,
-+ char * extra);
-+
-+/* We may need a function to send a stream of events to user space.
-+ * More on that later... */
-+
-+/************************* INLINE FUNTIONS *************************/
-+/*
-+ * Function that are so simple that it's more efficient inlining them
-+ */
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Wrapper to add an Wireless Event to a stream of events.
-+ */
-+static inline char *
-+iwe_stream_add_event(char * stream, /* Stream of events */
-+ char * ends, /* End of stream */
-+ struct iw_event *iwe, /* Payload */
-+ int event_len) /* Real size of payload */
-+{
-+ /* Check if it's possible */
-+ if((stream + event_len) < ends) {
-+ iwe->len = event_len;
-+ memcpy(stream, (char *) iwe, event_len);
-+ stream += event_len;
-+ }
-+ return stream;
-+}
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Wrapper to add an short Wireless Event containing a pointer to a
-+ * stream of events.
-+ */
-+static inline char *
-+iwe_stream_add_point(char * stream, /* Stream of events */
-+ char * ends, /* End of stream */
-+ struct iw_event *iwe, /* Payload */
-+ char * extra)
-+{
-+ int event_len = IW_EV_POINT_LEN + iwe->u.data.length;
-+ /* Check if it's possible */
-+ if((stream + event_len) < ends) {
-+ iwe->len = event_len;
-+ memcpy(stream, (char *) iwe, IW_EV_POINT_LEN);
-+ memcpy(stream + IW_EV_POINT_LEN, extra, iwe->u.data.length);
-+ stream += event_len;
-+ }
-+ return stream;
-+}
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Wrapper to add a value to a Wireless Event in a stream of events.
-+ * Be careful, this one is tricky to use properly :
-+ * At the first run, you need to have (value = event + IW_EV_LCP_LEN).
-+ */
-+static inline char *
-+iwe_stream_add_value(char * event, /* Event in the stream */
-+ char * value, /* Value in event */
-+ char * ends, /* End of stream */
-+ struct iw_event *iwe, /* Payload */
-+ int event_len) /* Real size of payload */
-+{
-+ /* Don't duplicate LCP */
-+ event_len -= IW_EV_LCP_LEN;
-+
-+ /* Check if it's possible */
-+ if((value + event_len) < ends) {
-+ /* Add new value */
-+ memcpy(value, (char *) iwe + IW_EV_LCP_LEN, event_len);
-+ value += event_len;
-+ /* Patch LCP */
-+ iwe->len = value - event;
-+ memcpy(event, (char *) iwe, IW_EV_LCP_LEN);
-+ }
-+ return value;
-+}
-+
-+#endif /* _IW_HANDLER_H */
-diff -u -p -r --new-file linux/net/netsyms-w13.c linux/net/netsyms.c
---- linux/net/netsyms-w13.c Thu Jun 6 15:46:34 2002
-+++ linux/net/netsyms.c Thu Jun 6 15:47:44 2002
-@@ -588,4 +588,10 @@ EXPORT_SYMBOL(register_gifconf);
- EXPORT_SYMBOL(net_call_rx_atomic);
- EXPORT_SYMBOL(softnet_data);
-
-+#if defined(CONFIG_NET_RADIO) || defined(CONFIG_NET_PCMCIA_RADIO)
-+/* Don't include the whole header mess for a single function */
-+extern void wireless_send_event(struct net_device *dev, unsigned int cmd, union iwreq_data *wrqu, char *extra);
-+EXPORT_SYMBOL(wireless_send_event);
-+#endif /* CONFIG_NET_RADIO || CONFIG_NET_PCMCIA_RADIO */
-+
- #endif /* CONFIG_NET */
-diff -u -p -r --new-file linux/net/core/wireless-w13.c linux/net/core/wireless.c
---- linux/net/core/wireless-w13.c Thu Jun 6 15:46:45 2002
-+++ linux/net/core/wireless.c Thu Jun 6 15:48:06 2002
-@@ -2,7 +2,7 @@
- * This file implement the Wireless Extensions APIs.
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-- * Copyright (c) 1997-2001 Jean Tourrilhes, All Rights Reserved.
-+ * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
- *
- * (As all part of the Linux kernel, this file is GPL)
- */
-@@ -25,6 +25,16 @@
- * o Added iw_handler handling ;-)
- * o Added standard ioctl description
- * o Initial dumb commit strategy based on orinoco.c
-+ *
-+ * v3 - 19.12.01 - Jean II
-+ * o Make sure we don't go out of standard_ioctl[] in ioctl_standard_call
-+ * o Add event dispatcher function
-+ * o Add event description
-+ * o Propagate events as rtnetlink IFLA_WIRELESS option
-+ * o Generate event on selected SET requests
-+ *
-+ * v4 - 18.04.01 - Jean II
-+ * o Fix stupid off by one in iw_ioctl_description : IW_ESSID_MAX_SIZE + 1
- */
-
- /***************************** INCLUDES *****************************/
-@@ -33,6 +43,7 @@
- #include <linux/config.h> /* Not needed ??? */
- #include <linux/types.h> /* off_t */
- #include <linux/netdevice.h> /* struct ifreq, dev_get_by_name() */
-+#include <linux/rtnetlink.h> /* rtnetlink stuff */
-
- #include <linux/wireless.h> /* Pretty obvious */
- #include <net/iw_handler.h> /* New driver API */
-@@ -44,14 +55,23 @@
-
- /* Debuging stuff */
- #undef WE_IOCTL_DEBUG /* Debug IOCTL API */
-+#undef WE_EVENT_DEBUG /* Debug Event dispatcher */
-+
-+/* Options */
-+#define WE_EVENT_NETLINK /* Propagate events using rtnetlink */
-+#define WE_SET_EVENT /* Generate an event on some set commands */
-
- /************************* GLOBAL VARIABLES *************************/
- /*
- * You should not use global variables, because or re-entrancy.
- * On our case, it's only const, so it's OK...
- */
-+/*
-+ * Meta-data about all the standard Wireless Extension request we
-+ * know about.
-+ */
- static const struct iw_ioctl_description standard_ioctl[] = {
-- /* SIOCSIWCOMMIT (internal) */
-+ /* SIOCSIWCOMMIT */
- { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
- /* SIOCGIWNAME */
- { IW_HEADER_TYPE_CHAR, 0, 0, 0, 0, IW_DESCR_FLAG_DUMP},
-@@ -99,18 +119,18 @@ static const struct iw_ioctl_description
- { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
- /* SIOCGIWAPLIST */
- { IW_HEADER_TYPE_POINT, 0, (sizeof(struct sockaddr) + sizeof(struct iw_quality)), 0, IW_MAX_AP, 0},
-- /* -- hole -- */
-- { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-- /* -- hole -- */
-- { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCSIWSCAN */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCGIWSCAN */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_SCAN_MAX_DATA, 0},
- /* SIOCSIWESSID */
-- { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE, IW_DESCR_FLAG_EVENT},
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE + 1, IW_DESCR_FLAG_EVENT},
- /* SIOCGIWESSID */
-- { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE, IW_DESCR_FLAG_DUMP},
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE + 1, IW_DESCR_FLAG_DUMP},
- /* SIOCSIWNICKN */
-- { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE, 0},
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE + 1, 0},
- /* SIOCGIWNICKN */
-- { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE, 0},
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE + 1, 0},
- /* -- hole -- */
- { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
- /* -- hole -- */
-@@ -136,7 +156,7 @@ static const struct iw_ioctl_description
- /* SIOCGIWRETRY */
- { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
- /* SIOCSIWENCODE */
-- { IW_HEADER_TYPE_POINT, 4, 1, 0, IW_ENCODING_TOKEN_MAX, IW_DESCR_FLAG_EVENT | IW_DESCR_FLAG_RESTRICT},
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ENCODING_TOKEN_MAX, IW_DESCR_FLAG_EVENT | IW_DESCR_FLAG_RESTRICT},
- /* SIOCGIWENCODE */
- { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ENCODING_TOKEN_MAX, IW_DESCR_FLAG_DUMP | IW_DESCR_FLAG_RESTRICT},
- /* SIOCSIWPOWER */
-@@ -144,9 +164,38 @@ static const struct iw_ioctl_description
- /* SIOCGIWPOWER */
- { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
- };
-+static const int standard_ioctl_num = (sizeof(standard_ioctl) /
-+ sizeof(struct iw_ioctl_description));
-+
-+/*
-+ * Meta-data about all the additional standard Wireless Extension events
-+ * we know about.
-+ */
-+static const struct iw_ioctl_description standard_event[] = {
-+ /* IWEVTXDROP */
-+ { IW_HEADER_TYPE_ADDR, 0, 0, 0, 0, 0},
-+ /* IWEVQUAL */
-+ { IW_HEADER_TYPE_QUAL, 0, 0, 0, 0, 0},
-+};
-+static const int standard_event_num = (sizeof(standard_event) /
-+ sizeof(struct iw_ioctl_description));
-
- /* Size (in bytes) of the various private data types */
--char priv_type_size[] = { 0, 1, 1, 0, 4, 4, 0, 0 };
-+static const char priv_type_size[] = { 0, 1, 1, 0, 4, 4, 0, 0 };
-+
-+/* Size (in bytes) of various events */
-+static const int event_type_size[] = {
-+ IW_EV_LCP_LEN,
-+ 0,
-+ IW_EV_CHAR_LEN,
-+ 0,
-+ IW_EV_UINT_LEN,
-+ IW_EV_FREQ_LEN,
-+ IW_EV_POINT_LEN, /* Without variable payload */
-+ IW_EV_PARAM_LEN,
-+ IW_EV_ADDR_LEN,
-+ IW_EV_QUAL_LEN,
-+};
-
- /************************ COMMON SUBROUTINES ************************/
- /*
-@@ -162,7 +211,8 @@ char priv_type_size[] = { 0, 1, 1, 0, 4,
- static inline iw_handler get_handler(struct net_device *dev,
- unsigned int cmd)
- {
-- unsigned int index; /* MUST be unsigned */
-+ /* Don't "optimise" the following variable, it will crash */
-+ unsigned int index; /* *MUST* be unsigned */
-
- /* Check if we have some wireless handlers defined */
- if(dev->wireless_handlers == NULL)
-@@ -269,9 +319,9 @@ static inline int sprintf_wireless_stats
- stats->status,
- stats->qual.qual,
- stats->qual.updated & 1 ? '.' : ' ',
-- stats->qual.level,
-+ ((__u8) stats->qual.level),
- stats->qual.updated & 2 ? '.' : ' ',
-- stats->qual.noise,
-+ ((__u8) stats->qual.noise),
- stats->qual.updated & 4 ? '.' : ' ',
- stats->discard.nwid,
- stats->discard.code,
-@@ -423,12 +473,14 @@ static inline int ioctl_standard_call(st
- int ret = -EINVAL;
-
- /* Get the description of the IOCTL */
-+ if((cmd - SIOCIWFIRST) >= standard_ioctl_num)
-+ return -EOPNOTSUPP;
- descr = &(standard_ioctl[cmd - SIOCIWFIRST]);
-
- #ifdef WE_IOCTL_DEBUG
-- printk(KERN_DEBUG "%s : Found standard handler for 0x%04X\n",
-+ printk(KERN_DEBUG "%s (WE) : Found standard handler for 0x%04X\n",
- ifr->ifr_name, cmd);
-- printk(KERN_DEBUG "Header type : %d, token type : %d, token_size : %d, max_token : %d\n", descr->header_type, descr->token_type, descr->token_size, descr->max_tokens);
-+ printk(KERN_DEBUG "%s (WE) : Header type : %d, Token type : %d, size : %d, token : %d\n", dev->name, descr->header_type, descr->token_type, descr->token_size, descr->max_tokens);
- #endif /* WE_IOCTL_DEBUG */
-
- /* Prepare the call */
-@@ -437,8 +489,16 @@ static inline int ioctl_standard_call(st
-
- /* Check if we have a pointer to user space data or not */
- if(descr->header_type != IW_HEADER_TYPE_POINT) {
-+
- /* No extra arguments. Trivial to handle */
- ret = handler(dev, &info, &(iwr->u), NULL);
-+
-+#ifdef WE_SET_EVENT
-+ /* Generate an event to notify listeners of the change */
-+ if((descr->flags & IW_DESCR_FLAG_EVENT) &&
-+ ((ret == 0) || (ret == -EIWCOMMIT)))
-+ wireless_send_event(dev, cmd, &(iwr->u), NULL);
-+#endif /* WE_SET_EVENT */
- } else {
- char * extra;
- int err;
-@@ -466,8 +526,8 @@ static inline int ioctl_standard_call(st
- }
-
- #ifdef WE_IOCTL_DEBUG
-- printk(KERN_DEBUG "Malloc %d bytes\n",
-- descr->max_tokens * descr->token_size);
-+ printk(KERN_DEBUG "%s (WE) : Malloc %d bytes\n",
-+ dev->name, descr->max_tokens * descr->token_size);
- #endif /* WE_IOCTL_DEBUG */
-
- /* Always allocate for max space. Easier, and won't last
-@@ -488,7 +548,8 @@ static inline int ioctl_standard_call(st
- return -EFAULT;
- }
- #ifdef WE_IOCTL_DEBUG
-- printk(KERN_DEBUG "Got %d bytes\n",
-+ printk(KERN_DEBUG "%s (WE) : Got %d bytes\n",
-+ dev->name,
- iwr->u.data.length * descr->token_size);
- #endif /* WE_IOCTL_DEBUG */
- }
-@@ -504,11 +565,26 @@ static inline int ioctl_standard_call(st
- if (err)
- ret = -EFAULT;
- #ifdef WE_IOCTL_DEBUG
-- printk(KERN_DEBUG "Wrote %d bytes\n",
-+ printk(KERN_DEBUG "%s (WE) : Wrote %d bytes\n",
-+ dev->name,
- iwr->u.data.length * descr->token_size);
- #endif /* WE_IOCTL_DEBUG */
- }
-
-+#ifdef WE_SET_EVENT
-+ /* Generate an event to notify listeners of the change */
-+ if((descr->flags & IW_DESCR_FLAG_EVENT) &&
-+ ((ret == 0) || (ret == -EIWCOMMIT))) {
-+ if(descr->flags & IW_DESCR_FLAG_RESTRICT)
-+ /* If the event is restricted, don't
-+ * export the payload */
-+ wireless_send_event(dev, cmd, &(iwr->u), NULL);
-+ else
-+ wireless_send_event(dev, cmd, &(iwr->u),
-+ extra);
-+ }
-+#endif /* WE_SET_EVENT */
-+
- /* Cleanup - I told you it wasn't that long ;-) */
- kfree(extra);
- }
-@@ -558,11 +634,12 @@ static inline int ioctl_private_call(str
- }
-
- #ifdef WE_IOCTL_DEBUG
-- printk(KERN_DEBUG "%s : Found private handler for 0x%04X\n",
-+ printk(KERN_DEBUG "%s (WE) : Found private handler for 0x%04X\n",
- ifr->ifr_name, cmd);
- if(descr) {
-- printk(KERN_DEBUG "Name %s, set %X, get %X\n",
-- descr->name, descr->set_args, descr->get_args);
-+ printk(KERN_DEBUG "%s (WE) : Name %s, set %X, get %X\n",
-+ dev->name, descr->name,
-+ descr->set_args, descr->get_args);
- }
- #endif /* WE_IOCTL_DEBUG */
-
-@@ -617,7 +694,8 @@ static inline int ioctl_private_call(str
- }
-
- #ifdef WE_IOCTL_DEBUG
-- printk(KERN_DEBUG "Malloc %d bytes\n", extra_size);
-+ printk(KERN_DEBUG "%s (WE) : Malloc %d bytes\n",
-+ dev->name, extra_size);
- #endif /* WE_IOCTL_DEBUG */
-
- /* Always allocate for max space. Easier, and won't last
-@@ -636,7 +714,8 @@ static inline int ioctl_private_call(str
- return -EFAULT;
- }
- #ifdef WE_IOCTL_DEBUG
-- printk(KERN_DEBUG "Got %d elem\n", iwr->u.data.length);
-+ printk(KERN_DEBUG "%s (WE) : Got %d elem\n",
-+ dev->name, iwr->u.data.length);
- #endif /* WE_IOCTL_DEBUG */
- }
-
-@@ -650,8 +729,8 @@ static inline int ioctl_private_call(str
- if (err)
- ret = -EFAULT;
- #ifdef WE_IOCTL_DEBUG
-- printk(KERN_DEBUG "Wrote %d elem\n",
-- iwr->u.data.length);
-+ printk(KERN_DEBUG "%s (WE) : Wrote %d elem\n",
-+ dev->name, iwr->u.data.length);
- #endif /* WE_IOCTL_DEBUG */
- }
-
-@@ -730,4 +809,178 @@ int wireless_process_ioctl(struct ifreq
- }
- /* Not reached */
- return -EINVAL;
-+}
-+
-+/************************* EVENT PROCESSING *************************/
-+/*
-+ * Process events generated by the wireless layer or the driver.
-+ * Most often, the event will be propagated through rtnetlink
-+ */
-+
-+#ifdef WE_EVENT_NETLINK
-+/* "rtnl" is defined in net/core/rtnetlink.c, but we need it here.
-+ * It is declared in <linux/rtnetlink.h> */
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Fill a rtnetlink message with our event data.
-+ * Note that we propage only the specified event and don't dump the
-+ * current wireless config. Dumping the wireless config is far too
-+ * expensive (for each parameter, the driver need to query the hardware).
-+ */
-+static inline int rtnetlink_fill_iwinfo(struct sk_buff * skb,
-+ struct net_device * dev,
-+ int type,
-+ char * event,
-+ int event_len)
-+{
-+ struct ifinfomsg *r;
-+ struct nlmsghdr *nlh;
-+ unsigned char *b = skb->tail;
-+
-+ nlh = NLMSG_PUT(skb, 0, 0, type, sizeof(*r));
-+ r = NLMSG_DATA(nlh);
-+ r->ifi_family = AF_UNSPEC;
-+ r->ifi_type = dev->type;
-+ r->ifi_index = dev->ifindex;
-+ r->ifi_flags = dev->flags;
-+ r->ifi_change = 0; /* Wireless changes don't affect those flags */
-+
-+ /* Add the wireless events in the netlink packet */
-+ RTA_PUT(skb, IFLA_WIRELESS,
-+ event_len, event);
-+
-+ nlh->nlmsg_len = skb->tail - b;
-+ return skb->len;
-+
-+nlmsg_failure:
-+rtattr_failure:
-+ skb_trim(skb, b - skb->data);
-+ return -1;
-+}
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Create and broadcast and send it on the standard rtnetlink socket
-+ * This is a pure clone rtmsg_ifinfo() in net/core/rtnetlink.c
-+ * Andrzej Krzysztofowicz mandated that I used a IFLA_XXX field
-+ * within a RTM_NEWLINK event.
-+ */
-+static inline void rtmsg_iwinfo(struct net_device * dev,
-+ char * event,
-+ int event_len)
-+{
-+ struct sk_buff *skb;
-+ int size = NLMSG_GOODSIZE;
-+
-+ skb = alloc_skb(size, GFP_ATOMIC);
-+ if (!skb)
-+ return;
-+
-+ if (rtnetlink_fill_iwinfo(skb, dev, RTM_NEWLINK,
-+ event, event_len) < 0) {
-+ kfree_skb(skb);
-+ return;
-+ }
-+ NETLINK_CB(skb).dst_groups = RTMGRP_LINK;
-+ netlink_broadcast(rtnl, skb, 0, RTMGRP_LINK, GFP_ATOMIC);
-+}
-+#endif /* WE_EVENT_NETLINK */
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Main event dispatcher. Called from other parts and drivers.
-+ * Send the event on the apropriate channels.
-+ * May be called from interrupt context.
-+ */
-+void wireless_send_event(struct net_device * dev,
-+ unsigned int cmd,
-+ union iwreq_data * wrqu,
-+ char * extra)
-+{
-+ const struct iw_ioctl_description * descr = NULL;
-+ int extra_len = 0;
-+ struct iw_event *event; /* Mallocated whole event */
-+ int event_len; /* Its size */
-+ int hdr_len; /* Size of the event header */
-+ /* Don't "optimise" the following variable, it will crash */
-+ unsigned cmd_index; /* *MUST* be unsigned */
-+
-+ /* Get the description of the IOCTL */
-+ if(cmd <= SIOCIWLAST) {
-+ cmd_index = cmd - SIOCIWFIRST;
-+ if(cmd_index < standard_ioctl_num)
-+ descr = &(standard_ioctl[cmd_index]);
-+ } else {
-+ cmd_index = cmd - IWEVFIRST;
-+ if(cmd_index < standard_event_num)
-+ descr = &(standard_event[cmd_index]);
-+ }
-+ /* Don't accept unknown events */
-+ if(descr == NULL) {
-+ /* Note : we don't return an error to the driver, because
-+ * the driver would not know what to do about it. It can't
-+ * return an error to the user, because the event is not
-+ * initiated by a user request.
-+ * The best the driver could do is to log an error message.
-+ * We will do it ourselves instead...
-+ */
-+ printk(KERN_ERR "%s (WE) : Invalid Wireless Event (0x%04X)\n",
-+ dev->name, cmd);
-+ return;
-+ }
-+#ifdef WE_EVENT_DEBUG
-+ printk(KERN_DEBUG "%s (WE) : Got event 0x%04X\n",
-+ dev->name, cmd);
-+ printk(KERN_DEBUG "%s (WE) : Header type : %d, Token type : %d, size : %d, token : %d\n", dev->name, descr->header_type, descr->token_type, descr->token_size, descr->max_tokens);
-+#endif /* WE_EVENT_DEBUG */
-+
-+ /* Check extra parameters and set extra_len */
-+ if(descr->header_type == IW_HEADER_TYPE_POINT) {
-+ /* Check if number of token fits within bounds */
-+ if(wrqu->data.length > descr->max_tokens) {
-+ printk(KERN_ERR "%s (WE) : Wireless Event too big (%d)\n", dev->name, wrqu->data.length);
-+ return;
-+ }
-+ if(wrqu->data.length < descr->min_tokens) {
-+ printk(KERN_ERR "%s (WE) : Wireless Event too small (%d)\n", dev->name, wrqu->data.length);
-+ return;
-+ }
-+ /* Calculate extra_len - extra is NULL for restricted events */
-+ if(extra != NULL)
-+ extra_len = wrqu->data.length * descr->token_size;
-+#ifdef WE_EVENT_DEBUG
-+ printk(KERN_DEBUG "%s (WE) : Event 0x%04X, tokens %d, extra_len %d\n", dev->name, cmd, wrqu->data.length, extra_len);
-+#endif /* WE_EVENT_DEBUG */
-+ }
-+
-+ /* Total length of the event */
-+ hdr_len = event_type_size[descr->header_type];
-+ event_len = hdr_len + extra_len;
-+
-+#ifdef WE_EVENT_DEBUG
-+ printk(KERN_DEBUG "%s (WE) : Event 0x%04X, hdr_len %d, event_len %d\n", dev->name, cmd, hdr_len, event_len);
-+#endif /* WE_EVENT_DEBUG */
-+
-+ /* Create temporary buffer to hold the event */
-+ event = kmalloc(event_len, GFP_ATOMIC);
-+ if(event == NULL)
-+ return;
-+
-+ /* Fill event */
-+ event->len = event_len;
-+ event->cmd = cmd;
-+ memcpy(&event->u, wrqu, hdr_len - IW_EV_LCP_LEN);
-+ if(extra != NULL)
-+ memcpy(((char *) event) + hdr_len, extra, extra_len);
-+
-+#ifdef WE_EVENT_NETLINK
-+ /* rtnetlink event channel */
-+ rtmsg_iwinfo(dev, (char *) event, event_len);
-+#endif /* WE_EVENT_NETLINK */
-+
-+ /* Cleanup */
-+ kfree(event);
-+
-+ return; /* Always success, I guess ;-) */
- }
diff --git a/recipes/linux/files/linux-2.4.18-list_move.patch b/recipes/linux/files/linux-2.4.18-list_move.patch
deleted file mode 100644
index faec56330b..0000000000
--- a/recipes/linux/files/linux-2.4.18-list_move.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- linux/include/linux/list.h~ 2001-12-21 17:42:03.000000000 +0000
-+++ linux/include/linux/list.h 2004-06-14 23:41:33.000000000 +0100
-@@ -105,6 +105,29 @@
- }
-
- /**
-+ * list_move - delete from one list and add as another's head
-+ * @list: the entry to move
-+ * @head: the head that will precede our entry
-+ */
-+static inline void list_move(struct list_head *list, struct list_head *head)
-+{
-+ __list_del(list->prev, list->next);
-+ list_add(list, head);
-+}
-+
-+/**
-+ * list_move_tail - delete from one list and add as another's tail
-+ * @list: the entry to move
-+ * @head: the head that will follow our entry
-+ */
-+static inline void list_move_tail(struct list_head *list,
-+ struct list_head *head)
-+{
-+ __list_del(list->prev, list->next);
-+ list_add_tail(list, head);
-+}
-+
-+/**
- * list_empty - tests whether a list is empty
- * @head: the list to test.
- */
diff --git a/recipes/linux/husky-kernel-2.4-embedix.bb b/recipes/linux/husky-kernel-2.4-embedix.bb
deleted file mode 100644
index 81f859594c..0000000000
--- a/recipes/linux/husky-kernel-2.4-embedix.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-COMPATIBLE_HOST = "arm.*-linux"
-MACHINE = "husky"
-
-require openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
-
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/1764-1.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/1764-1.patch
deleted file mode 100644
index 0b660f3521..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/1764-1.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-__arch_strncpy_from_user needs to be exported if you build the framebuffer console driver as a module.
-
-Cheers,
-
-Ian.
-
---- linux-2.6-bkpxa.orig/arch/arm/kernel/armksyms.c 2004-02-27 10:35:29.000000000 +0000
-+++ linux-2.6-bkpxa/arch/arm/kernel/armksyms.c 2004-02-27 14:55:02.000000000 +0000
-@@ -187,6 +187,7 @@
- EXPORT_SYMBOL(__arch_copy_to_user);
- EXPORT_SYMBOL(__arch_clear_user);
- EXPORT_SYMBOL(__arch_strnlen_user);
-+EXPORT_SYMBOL(__arch_strncpy_from_user);
-
- /* consistent area handling */
- EXPORT_SYMBOL(consistent_alloc);
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/apm_arrowkey.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/apm_arrowkey.patch
deleted file mode 100644
index f45fb72de3..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/apm_arrowkey.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- linux/arch/arm/mach-pxa/sharpsl_apm.c-original 2005-09-07 02:38:21.000000000 -0600
-+++ linux/arch/arm/mach-pxa/sharpsl_apm.c 2005-09-08 01:11:56.000000000 -0600
-@@ -89,6 +89,12 @@
- #include <linux/ioctl.h>
- #include <asm/sharp_apm.h>
- #include <asm/sharp_char.h>
-+#if defined(CONFIG_ARCH_PXA_POODLE)
-+#include <asm-arm/arch-pxa/keyboard_poodle.h> /* blc */
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+#include <asm-arm/arch-pxa/keyboard_tosa.h>
-+#define NR_KEYCODES (KEYCODE(KB_ROWS-1,KB_COLS-1)+1)
-+#endif
- #include <linux/delay.h>
- #include <asm/arch/ads7846_ts.h>
- #include <linux/apm_bios.h>
-@@ -155,6 +156,7 @@
- /// ioctl
- #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- static u32 apm_event_mask = (APM_EVT_POWER_BUTTON);
-+extern kbd_keyinfo sharppda_kbdstate[(NR_KEYCODES+1)];
- #else
- static u32 apm_event_mask = (APM_EVT_POWER_BUTTON | APM_EVT_BATTERY_STATUS);
- #endif
-@@ -472,7 +474,7 @@
- if (irq == IRQ_GPIO_ON_KEY) { /* suspend */
-
- DPRINTK("irq=%d count=%d sharpsl_suspend_request%d\n",irq, count, sharpsl_suspend_request);
-- if ( GPLR(GPIO_ON_KEY) & GPIO_bit(GPIO_ON_KEY) ) {
-+ if ( GPLR(GPIO_ON_KEY) & GPIO_bit(GPIO_ON_KEY) || (!sharppda_kbdstate[1].in) ) { /* second half, if something other than cancel is pushed blc */
- /* release */
- count = 0;
- } else {
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluecard_cs.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluecard_cs.patch
deleted file mode 100644
index eacada33f5..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluecard_cs.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- linux-orig/drivers/bluetooth/bluecard_cs.c 2004-02-16 10:51:46.000000000 +0300
-+++ linux/drivers/bluetooth/bluecard_cs.c 2004-02-17 03:45:31.000000000 +0300
-@@ -102,7 +102,7 @@
-
-
- /* Default baud rate: 57600, 115200, 230400 or 460800 */
--#define DEFAULT_BAUD_RATE 230400
-+#define DEFAULT_BAUD_RATE 460800
-
-
- /* Hardware states */
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluetooth-2.4.18-mh15.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluetooth-2.4.18-mh15.patch
deleted file mode 100644
index d6575dd604..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluetooth-2.4.18-mh15.patch
+++ /dev/null
@@ -1,32759 +0,0 @@
-diff -urN linux-2.4.18/arch/alpha/config.in linux-2.4.18-mh15/arch/alpha/config.in
---- linux-2.4.18/arch/alpha/config.in 2001-11-21 00:49:31.000000000 +0100
-+++ linux-2.4.18-mh15/arch/alpha/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -371,9 +371,7 @@
- source drivers/usb/Config.in
- source drivers/input/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/arm/config.in linux-2.4.18-mh15/arch/arm/config.in
---- linux-2.4.18/arch/arm/config.in 2001-11-09 22:58:02.000000000 +0100
-+++ linux-2.4.18-mh15/arch/arm/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -584,9 +584,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/i386/config.in linux-2.4.18-mh15/arch/i386/config.in
---- linux-2.4.18/arch/i386/config.in 2002-02-25 20:37:52.000000000 +0100
-+++ linux-2.4.18-mh15/arch/i386/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -407,9 +407,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/ppc/config.in linux-2.4.18-mh15/arch/ppc/config.in
---- linux-2.4.18/arch/ppc/config.in 2002-02-25 20:37:55.000000000 +0100
-+++ linux-2.4.18-mh15/arch/ppc/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -389,9 +389,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/sparc/config.in linux-2.4.18-mh15/arch/sparc/config.in
---- linux-2.4.18/arch/sparc/config.in 2001-06-12 04:15:27.000000000 +0200
-+++ linux-2.4.18-mh15/arch/sparc/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -251,9 +251,7 @@
-
- source fs/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Watchdog'
-diff -urN linux-2.4.18/arch/sparc64/config.in linux-2.4.18-mh15/arch/sparc64/config.in
---- linux-2.4.18/arch/sparc64/config.in 2001-12-21 18:41:53.000000000 +0100
-+++ linux-2.4.18-mh15/arch/sparc64/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -283,9 +283,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Watchdog'
-diff -urN linux-2.4.18/arch/sparc64/kernel/ioctl32.c linux-2.4.18-mh15/arch/sparc64/kernel/ioctl32.c
---- linux-2.4.18/arch/sparc64/kernel/ioctl32.c 2002-02-25 20:37:56.000000000 +0100
-+++ linux-2.4.18-mh15/arch/sparc64/kernel/ioctl32.c 2004-08-01 16:26:23.000000000 +0200
-@@ -92,6 +92,7 @@
-
- #include <net/bluetooth/bluetooth.h>
- #include <net/bluetooth/hci.h>
-+#include <net/bluetooth/rfcomm.h>
-
- #include <linux/usb.h>
- #include <linux/usbdevice_fs.h>
-@@ -3822,6 +3823,15 @@
- return err;
- }
-
-+/* Bluetooth ioctls */
-+#define HCIUARTSETPROTO _IOW('U', 200, int)
-+#define HCIUARTGETPROTO _IOR('U', 201, int)
-+
-+#define BNEPCONNADD _IOW('B', 200, int)
-+#define BNEPCONNDEL _IOW('B', 201, int)
-+#define BNEPGETCONNLIST _IOR('B', 210, int)
-+#define BNEPGETCONNINFO _IOR('B', 211, int)
-+
- struct mtd_oob_buf32 {
- u32 start;
- u32 length;
-@@ -3878,6 +3888,16 @@
- return ((0 == ret) ? 0 : -EFAULT);
- }
-
-+#define CMTPCONNADD _IOW('C', 200, int)
-+#define CMTPCONNDEL _IOW('C', 201, int)
-+#define CMTPGETCONNLIST _IOR('C', 210, int)
-+#define CMTPGETCONNINFO _IOR('C', 211, int)
-+
-+#define HIDPCONNADD _IOW('H', 200, int)
-+#define HIDPCONNDEL _IOW('H', 201, int)
-+#define HIDPGETCONNLIST _IOR('H', 210, int)
-+#define HIDPGETCONNINFO _IOR('H', 211, int)
-+
- struct ioctl_trans {
- unsigned int cmd;
- unsigned int handler;
-@@ -4540,6 +4560,25 @@
- COMPATIBLE_IOCTL(HCISETSCAN)
- COMPATIBLE_IOCTL(HCISETAUTH)
- COMPATIBLE_IOCTL(HCIINQUIRY)
-+COMPATIBLE_IOCTL(HCIUARTSETPROTO)
-+COMPATIBLE_IOCTL(HCIUARTGETPROTO)
-+COMPATIBLE_IOCTL(RFCOMMCREATEDEV)
-+COMPATIBLE_IOCTL(RFCOMMRELEASEDEV)
-+COMPATIBLE_IOCTL(RFCOMMGETDEVLIST)
-+COMPATIBLE_IOCTL(RFCOMMGETDEVINFO)
-+COMPATIBLE_IOCTL(RFCOMMSTEALDLC)
-+COMPATIBLE_IOCTL(BNEPCONNADD)
-+COMPATIBLE_IOCTL(BNEPCONNDEL)
-+COMPATIBLE_IOCTL(BNEPGETCONNLIST)
-+COMPATIBLE_IOCTL(BNEPGETCONNINFO)
-+COMPATIBLE_IOCTL(CMTPCONNADD)
-+COMPATIBLE_IOCTL(CMTPCONNDEL)
-+COMPATIBLE_IOCTL(CMTPGETCONNLIST)
-+COMPATIBLE_IOCTL(CMTPGETCONNINFO)
-+COMPATIBLE_IOCTL(HIDPCONNADD)
-+COMPATIBLE_IOCTL(HIDPCONNDEL)
-+COMPATIBLE_IOCTL(HIDPGETCONNLIST)
-+COMPATIBLE_IOCTL(HIDPGETCONNINFO)
- /* Misc. */
- COMPATIBLE_IOCTL(0x41545900) /* ATYIO_CLKR */
- COMPATIBLE_IOCTL(0x41545901) /* ATYIO_CLKW */
-diff -urN linux-2.4.18/CREDITS linux-2.4.18-mh15/CREDITS
---- linux-2.4.18/CREDITS 2002-02-25 20:37:50.000000000 +0100
-+++ linux-2.4.18-mh15/CREDITS 2004-08-01 16:26:23.000000000 +0200
-@@ -1317,6 +1317,16 @@
- S: Provo, Utah 84606-5607
- S: USA
-
-+N: Marcel Holtmann
-+E: marcel@holtmann.org
-+W: http://www.holtmann.org
-+D: Maintainer of the Linux Bluetooth Subsystem
-+D: Author and maintainer of the various Bluetooth HCI drivers
-+D: Author and maintainer of the CAPI message transport protocol driver
-+D: Author and maintainer of the Bluetooth HID protocol driver
-+D: Various other Bluetooth related patches, cleanups and fixes
-+S: Germany
-+
- N: Rob W. W. Hooft
- E: hooft@EMBL-Heidelberg.DE
- D: Shared libs for graphics-tools and for the f2c compiler
-@@ -2546,6 +2556,7 @@
- N: Aristeu Sergio Rozanski Filho
- E: aris@conectiva.com.br
- D: Support for EtherExpress 10 ISA (i82595) in eepro driver
-+D: User level driver support for input
- S: Conectiva S.A.
- S: R. Tocantins, 89 - Cristo Rei
- S: 80050-430 - Curitiba - Paraná
-diff -urN linux-2.4.18/Documentation/Configure.help linux-2.4.18-mh15/Documentation/Configure.help
---- linux-2.4.18/Documentation/Configure.help 2002-02-25 20:37:51.000000000 +0100
-+++ linux-2.4.18-mh15/Documentation/Configure.help 2004-08-01 16:26:23.000000000 +0200
-@@ -2824,14 +2824,6 @@
-
- If unsure, say N.
-
--HCI EMU (virtual device) driver
--CONFIG_BLUEZ_HCIEMU
-- Bluetooth Virtual HCI device driver.
-- This driver is required if you want to use HCI Emulation software.
--
-- Say Y here to compile support for Virtual HCI devices into the
-- kernel or say M to compile it as module (hci_usb.o).
--
- # Choice: alphatype
- Alpha system type
- CONFIG_ALPHA_GENERIC
-@@ -11037,6 +11029,12 @@
-
- If unsure, say N.
-
-+Hotplug firmware loading support (EXPERIMENTAL)
-+CONFIG_FW_LOADER
-+ This option is provided for the case where no in-kernel-tree modules require
-+ hotplug firmware loading support, but a module built outside the kernel tree
-+ does.
-+
- Use PCI shared memory for NIC registers
- CONFIG_TULIP_MMIO
- Use PCI shared memory for the NIC registers, rather than going through
-@@ -12896,6 +12894,15 @@
- accessible under char device 13:64+ - /dev/input/eventX in a generic
- way. This is the future ...
-
-+CONFIG_INPUT_UINPUT
-+ Say Y here if you want to support user level drivers for input
-+ subsystem accessible under char device 10:223 - /dev/input/uinput.
-+
-+ This driver is also available as a module ( = code which can be
-+ inserted in and removed from the running kernel whenever you want).
-+ The module will be called uinput.o. If you want to compile it as a
-+ module, say M here and read <file:Documentation/modules.txt>.
-+
- USB Scanner support
- CONFIG_USB_SCANNER
- Say Y here if you want to connect a USB scanner to your computer's
-@@ -19870,19 +19877,22 @@
- Bluetooth can be found at <http://www.bluetooth.com/>.
-
- Linux Bluetooth subsystem consist of several layers:
-- HCI Core (device and connection manager, scheduler)
-- HCI Device drivers (interface to the hardware)
-- L2CAP Module (L2CAP protocol)
-+ BlueZ Core (HCI device and connection manager, scheduler)
-+ HCI Device drivers (Interface to the hardware)
-+ SCO Module (SCO audio links)
-+ L2CAP Module (Logical Link Control and Adaptation Protocol)
-+ RFCOMM Module (RFCOMM Protocol)
-+ BNEP Module (Bluetooth Network Encapsulation Protocol)
-+ CMTP Module (CAPI Message Transport Protocol)
-+ HIDP Module (Human Interface Device Protocol)
-
-- Say Y here to enable Linux Bluetooth support and to build HCI Core
-- layer.
-+ Say Y here to compile Bluetooth support into the kernel or say M to
-+ compile it as module (bluez.o).
-
- To use Linux Bluetooth subsystem, you will need several user-space
- utilities like hciconfig and hcid. These utilities and updates to
- Bluetooth kernel modules are provided in the BlueZ package.
-- For more information, see <http://bluez.sourceforge.net/>.
--
-- If you want to compile HCI Core as module (hci.o) say M here.
-+ For more information, see <http://www.bluez.org/>.
-
- L2CAP protocol support
- CONFIG_BLUEZ_L2CAP
-@@ -19893,15 +19903,96 @@
- Say Y here to compile L2CAP support into the kernel or say M to
- compile it as module (l2cap.o).
-
-+SCO links support
-+CONFIG_BLUEZ_SCO
-+ SCO link provides voice transport over Bluetooth. SCO support is
-+ required for voice applications like Headset and Audio.
-+
-+ Say Y here to compile SCO support into the kernel or say M to
-+ compile it as module (sco.o).
-+
-+RFCOMM protocol support
-+CONFIG_BLUEZ_RFCOMM
-+ RFCOMM provides connection oriented stream transport. RFCOMM
-+ support is required for Dialup Networking, OBEX and other Bluetooth
-+ applications.
-+
-+ Say Y here to compile RFCOMM support into the kernel or say M to
-+ compile it as module (rfcomm.o).
-+
-+RFCOMM TTY emulation support
-+CONFIG_BLUEZ_RFCOMM_TTY
-+ This option enables TTY emulation support for RFCOMM channels.
-+
-+BNEP protocol support
-+CONFIG_BLUEZ_BNEP
-+ BNEP (Bluetooth Network Encapsulation Protocol) is Ethernet
-+ emulation layer on top of Bluetooth. BNEP is required for
-+ Bluetooth PAN (Personal Area Network).
-+
-+ Say Y here to compile BNEP support into the kernel or say M to
-+ compile it as module (bnep.o).
-+
-+BNEP multicast filter support
-+CONFIG_BLUEZ_BNEP_MC_FILTER
-+ This option enables the multicast filter support for BNEP.
-+
-+BNEP protocol filter support
-+CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ This option enables the protocol filter support for BNEP.
-+
-+CMTP protocol support
-+CONFIG_BLUEZ_CMTP
-+ CMTP (CAPI Message Transport Protocol) is a transport layer
-+ for CAPI messages. CMTP is required for the Bluetooth Common
-+ ISDN Access Profile.
-+
-+ Say Y here to compile CMTP support into the kernel or say M to
-+ compile it as module (cmtp.o).
-+
-+HIDP protocol support
-+CONFIG_BLUEZ_HIDP
-+ HIDP (Human Interface Device Protocol) is a transport layer
-+ for HID reports. HIDP is required for the Bluetooth Human
-+ Interface Device Profile.
-+
-+ Say Y here to compile HIDP support into the kernel or say M to
-+ compile it as module (hidp.o).
-+
- HCI UART driver
- CONFIG_BLUEZ_HCIUART
- Bluetooth HCI UART driver.
- This driver is required if you want to use Bluetooth devices with
-- serial port interface.
-+ serial port interface. You will also need this driver if you have
-+ UART based Bluetooth PCMCIA and CF devices like Xircom Credit Card
-+ adapter and BrainBoxes Bluetooth PC Card.
-
- Say Y here to compile support for Bluetooth UART devices into the
- kernel or say M to compile it as module (hci_uart.o).
-
-+HCI UART (H4) protocol support
-+CONFIG_BLUEZ_HCIUART_H4
-+ UART (H4) is serial protocol for communication between Bluetooth
-+ device and host. This protocol is required for most Bluetooth devices
-+ with UART interface, including PCMCIA and CF cards.
-+
-+ Say Y here to compile support for HCI UART (H4) protocol.
-+
-+HCI BCSP protocol support
-+CONFIG_BLUEZ_HCIUART_BCSP
-+ BCSP (BlueCore Serial Protocol) is serial protocol for communication
-+ between Bluetooth device and host. This protocol is required for non
-+ USB Bluetooth devices based on CSR BlueCore chip, including PCMCIA and
-+ CF cards.
-+
-+ Say Y here to compile support for HCI BCSP protocol.
-+
-+HCI BCSP transmit CRC with every BCSP packet
-+CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ If you say Y here, a 16-bit CRC checksum will be transmitted along with
-+ every BCSP (BlueCore Serial Protocol) packet sent to the Bluetooth chip.
-+ This increases reliability, but slightly reduces efficiency.
-+
- HCI USB driver
- CONFIG_BLUEZ_HCIUSB
- Bluetooth HCI USB driver.
-@@ -19911,7 +20002,16 @@
- Say Y here to compile support for Bluetooth USB devices into the
- kernel or say M to compile it as module (hci_usb.o).
-
--HCI VHCI virtual HCI device driver
-+HCI USB SCO (voice) support
-+CONFIG_BLUEZ_HCIUSB_SCO
-+ This option enables the SCO support in the HCI USB driver. You need this
-+ to transmit voice data with your Bluetooth USB device. And your device
-+ must also support sending SCO data over the HCI layer, because some of
-+ them sends the SCO data to an internal PCM adapter.
-+
-+ Say Y here to compile support for HCI SCO data.
-+
-+HCI VHCI Virtual HCI device driver
- CONFIG_BLUEZ_HCIVHCI
- Bluetooth Virtual HCI device driver.
- This driver is required if you want to use HCI Emulation software.
-@@ -19919,6 +20019,63 @@
- Say Y here to compile support for virtual HCI devices into the
- kernel or say M to compile it as module (hci_vhci.o).
-
-+HCI BFUSB device driver
-+CONFIG_BLUEZ_HCIBFUSB
-+ Bluetooth HCI BlueFRITZ! USB driver.
-+ This driver provides support for Bluetooth USB devices with AVM
-+ interface:
-+ AVM BlueFRITZ! USB
-+
-+ Say Y here to compile support for HCI BFUSB devices into the
-+ kernel or say M to compile it as module (bfusb.o).
-+
-+HCI DTL1 (PC Card) device driver
-+CONFIG_BLUEZ_HCIDTL1
-+ Bluetooth HCI DTL1 (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ Nokia DTL1 interface:
-+ Nokia Bluetooth Card
-+ Socket Bluetooth CF Card
-+
-+ Say Y here to compile support for HCI DTL1 devices into the
-+ kernel or say M to compile it as module (dtl1_cs.o).
-+
-+HCI BT3C (PC Card) device driver
-+CONFIG_BLUEZ_HCIBT3C
-+ Bluetooth HCI BT3C (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ 3Com BT3C interface:
-+ 3Com Bluetooth Card (3CRWB6096)
-+ HP Bluetooth Card
-+
-+ Say Y here to compile support for HCI BT3C devices into the
-+ kernel or say M to compile it as module (bt3c_cs.o).
-+
-+HCI BlueCard (PC Card) device driver
-+CONFIG_BLUEZ_HCIBLUECARD
-+ Bluetooth HCI BlueCard (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ Anycom BlueCard interface:
-+ Anycom Bluetooth PC Card
-+ Anycom Bluetooth CF Card
-+
-+ Say Y here to compile support for HCI BlueCard devices into the
-+ kernel or say M to compile it as module (bluecard_cs.o).
-+
-+HCI UART (PC Card) device driver
-+CONFIG_BLUEZ_HCIBTUART
-+ Bluetooth HCI UART (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ an UART interface:
-+ Xircom CreditCard Bluetooth Adapter
-+ Xircom RealPort2 Bluetooth Adapter
-+ Sphinx PICO Card
-+ H-Soft blue+Card
-+ Cyber-blue Compact Flash Card
-+
-+ Say Y here to compile support for HCI UART devices into the
-+ kernel or say M to compile it as module (btuart_cs.o).
-+
- # The following options are for Linux when running on the Hitachi
- # SuperH family of RISC microprocessors.
-
-diff -urN linux-2.4.18/Documentation/devices.txt linux-2.4.18-mh15/Documentation/devices.txt
---- linux-2.4.18/Documentation/devices.txt 2001-11-07 23:46:01.000000000 +0100
-+++ linux-2.4.18-mh15/Documentation/devices.txt 2004-08-01 16:26:23.000000000 +0200
-@@ -419,6 +419,7 @@
- 220 = /dev/mptctl Message passing technology (MPT) control
- 221 = /dev/mvista/hssdsi Montavista PICMG hot swap system driver
- 222 = /dev/mvista/hasi Montavista PICMG high availability
-+ 223 = /dev/input/uinput User level driver support for input
- 240-255 Reserved for local use
-
- 11 char Raw keyboard device
-diff -urN linux-2.4.18/Documentation/firmware_class/firmware_sample_driver.c linux-2.4.18-mh15/Documentation/firmware_class/firmware_sample_driver.c
---- linux-2.4.18/Documentation/firmware_class/firmware_sample_driver.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/Documentation/firmware_class/firmware_sample_driver.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,121 @@
-+/*
-+ * firmware_sample_driver.c -
-+ *
-+ * Copyright (c) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+ *
-+ * Sample code on how to use request_firmware() from drivers.
-+ *
-+ * Note that register_firmware() is currently useless.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/string.h>
-+
-+#include "linux/firmware.h"
-+
-+#define WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+char __init inkernel_firmware[] = "let's say that this is firmware\n";
-+#endif
-+
-+static char ghost_device[] = "ghost0";
-+
-+static void sample_firmware_load(char *firmware, int size)
-+{
-+ u8 buf[size+1];
-+ memcpy(buf, firmware, size);
-+ buf[size] = '\0';
-+ printk("firmware_sample_driver: firmware: %s\n", buf);
-+}
-+
-+static void sample_probe_default(void)
-+{
-+ /* uses the default method to get the firmware */
-+ const struct firmware *fw_entry;
-+ printk("firmware_sample_driver: a ghost device got inserted :)\n");
-+
-+ if(request_firmware(&fw_entry, "sample_driver_fw", ghost_device)!=0)
-+ {
-+ printk(KERN_ERR
-+ "firmware_sample_driver: Firmware not available\n");
-+ return;
-+ }
-+
-+ sample_firmware_load(fw_entry->data, fw_entry->size);
-+
-+ release_firmware(fw_entry);
-+
-+ /* finish setting up the device */
-+}
-+static void sample_probe_specific(void)
-+{
-+ /* Uses some specific hotplug support to get the firmware from
-+ * userspace directly into the hardware, or via some sysfs file */
-+
-+ /* NOTE: This currently doesn't work */
-+
-+ printk("firmware_sample_driver: a ghost device got inserted :)\n");
-+
-+ if(request_firmware(NULL, "sample_driver_fw", ghost_device)!=0)
-+ {
-+ printk(KERN_ERR
-+ "firmware_sample_driver: Firmware load failed\n");
-+ return;
-+ }
-+
-+ /* request_firmware blocks until userspace finished, so at
-+ * this point the firmware should be already in the device */
-+
-+ /* finish setting up the device */
-+}
-+static void sample_probe_async_cont(const struct firmware *fw, void *context)
-+{
-+ if(!fw){
-+ printk(KERN_ERR
-+ "firmware_sample_driver: firmware load failed\n");
-+ return;
-+ }
-+
-+ printk("firmware_sample_driver: device pointer \"%s\"\n",
-+ (char *)context);
-+ sample_firmware_load(fw->data, fw->size);
-+}
-+static void sample_probe_async(void)
-+{
-+ /* Let's say that I can't sleep */
-+ int error;
-+ error = request_firmware_nowait (THIS_MODULE,
-+ "sample_driver_fw", ghost_device,
-+ "my device pointer",
-+ sample_probe_async_cont);
-+ if(error){
-+ printk(KERN_ERR
-+ "firmware_sample_driver:"
-+ " request_firmware_nowait failed\n");
-+ }
-+}
-+
-+static int sample_init(void)
-+{
-+#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+ register_firmware("sample_driver_fw", inkernel_firmware,
-+ sizeof(inkernel_firmware));
-+#endif
-+ /* since there is no real hardware insertion I just call the
-+ * sample probe functions here */
-+ sample_probe_specific();
-+ sample_probe_default();
-+ sample_probe_async();
-+ return 0;
-+}
-+static void __exit sample_exit(void)
-+{
-+}
-+
-+module_init (sample_init);
-+module_exit (sample_exit);
-+
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/Documentation/firmware_class/hotplug-script linux-2.4.18-mh15/Documentation/firmware_class/hotplug-script
---- linux-2.4.18/Documentation/firmware_class/hotplug-script 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/Documentation/firmware_class/hotplug-script 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,16 @@
-+#!/bin/sh
-+
-+# Simple hotplug script sample:
-+#
-+# Both $DEVPATH and $FIRMWARE are already provided in the environment.
-+
-+HOTPLUG_FW_DIR=/usr/lib/hotplug/firmware/
-+
-+echo 1 > /sysfs/$DEVPATH/loading
-+cat $HOTPLUG_FW_DIR/$FIRMWARE > /sysfs/$DEVPATH/data
-+echo 0 > /sysfs/$DEVPATH/loading
-+
-+# To cancel the load in case of error:
-+#
-+# echo -1 > /sysfs/$DEVPATH/loading
-+#
-diff -urN linux-2.4.18/Documentation/firmware_class/README linux-2.4.18-mh15/Documentation/firmware_class/README
---- linux-2.4.18/Documentation/firmware_class/README 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/Documentation/firmware_class/README 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,58 @@
-+
-+ request_firmware() hotplug interface:
-+ ------------------------------------
-+ Copyright (C) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+
-+ Why:
-+ ---
-+
-+ Today, the most extended way to use firmware in the Linux kernel is linking
-+ it statically in a header file. Which has political and technical issues:
-+
-+ 1) Some firmware is not legal to redistribute.
-+ 2) The firmware occupies memory permanently, even though it often is just
-+ used once.
-+ 3) Some people, like the Debian crowd, don't consider some firmware free
-+ enough and remove entire drivers (e.g.: keyspan).
-+
-+ about in-kernel persistence:
-+ ---------------------------
-+ Under some circumstances, as explained below, it would be interesting to keep
-+ firmware images in non-swappable kernel memory or even in the kernel image
-+ (probably within initramfs).
-+
-+ Note that this functionality has not been implemented.
-+
-+ - Why OPTIONAL in-kernel persistence may be a good idea sometimes:
-+
-+ - If the device that needs the firmware is needed to access the
-+ filesystem. When upon some error the device has to be reset and the
-+ firmware reloaded, it won't be possible to get it from userspace.
-+ e.g.:
-+ - A diskless client with a network card that needs firmware.
-+ - The filesystem is stored in a disk behind an scsi device
-+ that needs firmware.
-+ - Replacing buggy DSDT/SSDT ACPI tables on boot.
-+ Note: this would require the persistent objects to be included
-+ within the kernel image, probably within initramfs.
-+
-+ And the same device can be needed to access the filesystem or not depending
-+ on the setup, so I think that the choice on what firmware to make
-+ persistent should be left to userspace.
-+
-+ - Why register_firmware()+__init can be useful:
-+ - For boot devices needing firmware.
-+ - To make the transition easier:
-+ The firmware can be declared __init and register_firmware()
-+ called on module_init. Then the firmware is warranted to be
-+ there even if "firmware hotplug userspace" is not there yet or
-+ it doesn't yet provide the needed firmware.
-+ Once the firmware is widely available in userspace, it can be
-+ removed from the kernel. Or made optional (CONFIG_.*_FIRMWARE).
-+
-+ In either case, if firmware hotplug support is there, it can move the
-+ firmware out of kernel memory into the real filesystem for later
-+ usage.
-+
-+ Note: If persistence is implemented on top of initramfs,
-+ register_firmware() may not be appropriate.
-diff -urN linux-2.4.18/drivers/bluetooth/bfusb.c linux-2.4.18-mh15/drivers/bluetooth/bfusb.c
---- linux-2.4.18/drivers/bluetooth/bfusb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/bfusb.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,782 @@
-+/*
-+ *
-+ * AVM BlueFRITZ! USB driver
-+ *
-+ * Copyright (C) 2003 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/errno.h>
-+#include <linux/skbuff.h>
-+
-+#include <linux/firmware.h>
-+#include <linux/usb.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+#ifndef CONFIG_BLUEZ_HCIBFUSB_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.1"
-+
-+static struct usb_device_id bfusb_table[] = {
-+ /* AVM BlueFRITZ! USB */
-+ { USB_DEVICE(0x057c, 0x2200) },
-+
-+ { } /* Terminating entry */
-+};
-+
-+MODULE_DEVICE_TABLE(usb, bfusb_table);
-+
-+
-+#define BFUSB_MAX_BLOCK_SIZE 256
-+
-+#define BFUSB_BLOCK_TIMEOUT (HZ * 3)
-+
-+#define BFUSB_TX_PROCESS 1
-+#define BFUSB_TX_WAKEUP 2
-+
-+#define BFUSB_MAX_BULK_TX 1
-+#define BFUSB_MAX_BULK_RX 1
-+
-+struct bfusb {
-+ struct hci_dev hdev;
-+
-+ unsigned long state;
-+
-+ struct usb_device *udev;
-+
-+ unsigned int bulk_in_ep;
-+ unsigned int bulk_out_ep;
-+ unsigned int bulk_pkt_size;
-+
-+ rwlock_t lock;
-+
-+ struct sk_buff_head transmit_q;
-+
-+ struct sk_buff *reassembly;
-+
-+ atomic_t pending_tx;
-+ struct sk_buff_head pending_q;
-+ struct sk_buff_head completed_q;
-+};
-+
-+struct bfusb_scb {
-+ struct urb *urb;
-+};
-+
-+static void bfusb_tx_complete(struct urb *urb);
-+static void bfusb_rx_complete(struct urb *urb);
-+
-+static struct urb *bfusb_get_completed(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+ struct urb *urb = NULL;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ skb = skb_dequeue(&bfusb->completed_q);
-+ if (skb) {
-+ urb = ((struct bfusb_scb *) skb->cb)->urb;
-+ kfree_skb(skb);
-+ }
-+
-+ return urb;
-+}
-+
-+static inline void bfusb_unlink_urbs(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+ struct urb *urb;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ while ((skb = skb_dequeue(&bfusb->pending_q))) {
-+ urb = ((struct bfusb_scb *) skb->cb)->urb;
-+ usb_unlink_urb(urb);
-+ skb_queue_tail(&bfusb->completed_q, skb);
-+ }
-+
-+ while ((urb = bfusb_get_completed(bfusb)))
-+ usb_free_urb(urb);
-+}
-+
-+
-+static int bfusb_send_bulk(struct bfusb *bfusb, struct sk_buff *skb)
-+{
-+ struct bfusb_scb *scb = (void *) skb->cb;
-+ struct urb *urb = bfusb_get_completed(bfusb);
-+ int err, pipe;
-+
-+ BT_DBG("bfusb %p skb %p len %d", bfusb, skb, skb->len);
-+
-+ if (!urb && !(urb = usb_alloc_urb(0)))
-+ return -ENOMEM;
-+
-+ pipe = usb_sndbulkpipe(bfusb->udev, bfusb->bulk_out_ep);
-+
-+ FILL_BULK_URB(urb, bfusb->udev, pipe, skb->data, skb->len,
-+ bfusb_tx_complete, skb);
-+
-+ urb->transfer_flags = USB_QUEUE_BULK;
-+
-+ scb->urb = urb;
-+
-+ skb_queue_tail(&bfusb->pending_q, skb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk tx submit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ skb_unlink(skb);
-+ usb_free_urb(urb);
-+ } else
-+ atomic_inc(&bfusb->pending_tx);
-+
-+ return err;
-+}
-+
-+static void bfusb_tx_wakeup(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ if (test_and_set_bit(BFUSB_TX_PROCESS, &bfusb->state)) {
-+ set_bit(BFUSB_TX_WAKEUP, &bfusb->state);
-+ return;
-+ }
-+
-+ do {
-+ clear_bit(BFUSB_TX_WAKEUP, &bfusb->state);
-+
-+ while ((atomic_read(&bfusb->pending_tx) < BFUSB_MAX_BULK_TX) &&
-+ (skb = skb_dequeue(&bfusb->transmit_q))) {
-+ if (bfusb_send_bulk(bfusb, skb) < 0) {
-+ skb_queue_head(&bfusb->transmit_q, skb);
-+ break;
-+ }
-+ }
-+
-+ } while (test_bit(BFUSB_TX_WAKEUP, &bfusb->state));
-+
-+ clear_bit(BFUSB_TX_PROCESS, &bfusb->state);
-+}
-+
-+static void bfusb_tx_complete(struct urb *urb)
-+{
-+ struct sk_buff *skb = (struct sk_buff *) urb->context;
-+ struct bfusb *bfusb = (struct bfusb *) skb->dev;
-+
-+ BT_DBG("bfusb %p urb %p skb %p len %d", bfusb, urb, skb, skb->len);
-+
-+ atomic_dec(&bfusb->pending_tx);
-+
-+ if (!test_bit(HCI_RUNNING, &bfusb->hdev.flags))
-+ return;
-+
-+ if (!urb->status)
-+ bfusb->hdev.stat.byte_tx += skb->len;
-+ else
-+ bfusb->hdev.stat.err_tx++;
-+
-+ read_lock(&bfusb->lock);
-+
-+ skb_unlink(skb);
-+ skb_queue_tail(&bfusb->completed_q, skb);
-+
-+ bfusb_tx_wakeup(bfusb);
-+
-+ read_unlock(&bfusb->lock);
-+}
-+
-+
-+static int bfusb_rx_submit(struct bfusb *bfusb, struct urb *urb)
-+{
-+ struct bfusb_scb *scb;
-+ struct sk_buff *skb;
-+ int err, pipe, size = HCI_MAX_FRAME_SIZE + 32;
-+
-+ BT_DBG("bfusb %p urb %p", bfusb, urb);
-+
-+ if (!urb && !(urb = usb_alloc_urb(0)))
-+ return -ENOMEM;
-+
-+ if (!(skb = bluez_skb_alloc(size, GFP_ATOMIC))) {
-+ usb_free_urb(urb);
-+ return -ENOMEM;
-+ }
-+
-+ skb->dev = (void *) bfusb;
-+
-+ scb = (struct bfusb_scb *) skb->cb;
-+ scb->urb = urb;
-+
-+ pipe = usb_rcvbulkpipe(bfusb->udev, bfusb->bulk_in_ep);
-+
-+ FILL_BULK_URB(urb, bfusb->udev, pipe, skb->data, size,
-+ bfusb_rx_complete, skb);
-+
-+ urb->transfer_flags = USB_QUEUE_BULK;
-+
-+ skb_queue_tail(&bfusb->pending_q, skb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk rx submit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ skb_unlink(skb);
-+ kfree_skb(skb);
-+ usb_free_urb(urb);
-+ }
-+
-+ return err;
-+}
-+
-+static inline int bfusb_recv_block(struct bfusb *bfusb, int hdr, unsigned char *data, int len)
-+{
-+ BT_DBG("bfusb %p hdr 0x%02x data %p len %d", bfusb, hdr, data, len);
-+
-+ if (hdr & 0x10) {
-+ BT_ERR("%s error in block", bfusb->hdev.name);
-+ if (bfusb->reassembly)
-+ kfree_skb(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ return -EIO;
-+ }
-+
-+ if (hdr & 0x04) {
-+ struct sk_buff *skb;
-+ unsigned char pkt_type;
-+ int pkt_len = 0;
-+
-+ if (bfusb->reassembly) {
-+ BT_ERR("%s unexpected start block", bfusb->hdev.name);
-+ kfree_skb(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ }
-+
-+ if (len < 1) {
-+ BT_ERR("%s no packet type found", bfusb->hdev.name);
-+ return -EPROTO;
-+ }
-+
-+ pkt_type = *data++; len--;
-+
-+ switch (pkt_type) {
-+ case HCI_EVENT_PKT:
-+ if (len >= HCI_EVENT_HDR_SIZE) {
-+ hci_event_hdr *hdr = (hci_event_hdr *) data;
-+ pkt_len = HCI_EVENT_HDR_SIZE + hdr->plen;
-+ } else {
-+ BT_ERR("%s event block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ if (len >= HCI_ACL_HDR_SIZE) {
-+ hci_acl_hdr *hdr = (hci_acl_hdr *) data;
-+ pkt_len = HCI_ACL_HDR_SIZE + __le16_to_cpu(hdr->dlen);
-+ } else {
-+ BT_ERR("%s data block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ if (len >= HCI_SCO_HDR_SIZE) {
-+ hci_sco_hdr *hdr = (hci_sco_hdr *) data;
-+ pkt_len = HCI_SCO_HDR_SIZE + hdr->dlen;
-+ } else {
-+ BT_ERR("%s audio block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+ }
-+
-+ skb = bluez_skb_alloc(pkt_len, GFP_ATOMIC);
-+ if (!skb) {
-+ BT_ERR("%s no memory for the packet", bfusb->hdev.name);
-+ return -ENOMEM;
-+ }
-+
-+ skb->dev = (void *) &bfusb->hdev;
-+ skb->pkt_type = pkt_type;
-+
-+ bfusb->reassembly = skb;
-+ } else {
-+ if (!bfusb->reassembly) {
-+ BT_ERR("%s unexpected continuation block", bfusb->hdev.name);
-+ return -EIO;
-+ }
-+ }
-+
-+ if (len > 0)
-+ memcpy(skb_put(bfusb->reassembly, len), data, len);
-+
-+ if (hdr & 0x08) {
-+ hci_recv_frame(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ }
-+
-+ return 0;
-+}
-+
-+static void bfusb_rx_complete(struct urb *urb)
-+{
-+ struct sk_buff *skb = (struct sk_buff *) urb->context;
-+ struct bfusb *bfusb = (struct bfusb *) skb->dev;
-+ unsigned char *buf = urb->transfer_buffer;
-+ int count = urb->actual_length;
-+ int err, hdr, len;
-+
-+ BT_DBG("bfusb %p urb %p skb %p len %d", bfusb, urb, skb, skb->len);
-+
-+ read_lock(&bfusb->lock);
-+
-+ if (!test_bit(HCI_RUNNING, &bfusb->hdev.flags))
-+ goto unlock;
-+
-+ if (urb->status || !count)
-+ goto resubmit;
-+
-+ bfusb->hdev.stat.byte_rx += count;
-+
-+ skb_put(skb, count);
-+
-+ while (count) {
-+ hdr = buf[0] | (buf[1] << 8);
-+
-+ if (hdr & 0x4000) {
-+ len = 0;
-+ count -= 2;
-+ buf += 2;
-+ } else {
-+ len = (buf[2] == 0) ? 256 : buf[2];
-+ count -= 3;
-+ buf += 3;
-+ }
-+
-+ if (count < len) {
-+ BT_ERR("%s block extends over URB buffer ranges",
-+ bfusb->hdev.name);
-+ }
-+
-+ if ((hdr & 0xe1) == 0xc1)
-+ bfusb_recv_block(bfusb, hdr, buf, len);
-+
-+ count -= len;
-+ buf += len;
-+ }
-+
-+ skb_unlink(skb);
-+ kfree_skb(skb);
-+
-+ bfusb_rx_submit(bfusb, urb);
-+
-+ read_unlock(&bfusb->lock);
-+
-+ return;
-+
-+resubmit:
-+ urb->dev = bfusb->udev;
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk resubmit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ }
-+
-+unlock:
-+ read_unlock(&bfusb->lock);
-+}
-+
-+
-+static int bfusb_open(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+ unsigned long flags;
-+ int i, err;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ if (test_and_set_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ write_lock_irqsave(&bfusb->lock, flags);
-+
-+ err = bfusb_rx_submit(bfusb, NULL);
-+ if (!err) {
-+ for (i = 1; i < BFUSB_MAX_BULK_RX; i++)
-+ bfusb_rx_submit(bfusb, NULL);
-+ } else {
-+ clear_bit(HCI_RUNNING, &hdev->flags);
-+ MOD_DEC_USE_COUNT;
-+ }
-+
-+ write_unlock_irqrestore(&bfusb->lock, flags);
-+
-+ return err;
-+}
-+
-+static int bfusb_flush(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ skb_queue_purge(&bfusb->transmit_q);
-+
-+ return 0;
-+}
-+
-+static int bfusb_close(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+ unsigned long flags;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
-+ write_lock_irqsave(&bfusb->lock, flags);
-+
-+ bfusb_unlink_urbs(bfusb);
-+ bfusb_flush(hdev);
-+
-+ write_unlock_irqrestore(&bfusb->lock, flags);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ return 0;
-+}
-+
-+static int bfusb_send_frame(struct sk_buff *skb)
-+{
-+ struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-+ struct bfusb *bfusb;
-+ struct sk_buff *nskb;
-+ unsigned char buf[3];
-+ int sent = 0, size, count;
-+
-+ BT_DBG("hdev %p skb %p type %d len %d", hdev, skb, skb->pkt_type, skb->len);
-+
-+ if (!hdev) {
-+ BT_ERR("Frame for unknown HCI device (hdev=NULL)");
-+ return -ENODEV;
-+ }
-+
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return -EBUSY;
-+
-+ bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+
-+ count = skb->len;
-+
-+ /* Max HCI frame size seems to be 1511 + 1 */
-+ if (!(nskb = bluez_skb_alloc(count + 32, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for new packet");
-+ return -ENOMEM;
-+ }
-+
-+ nskb->dev = (void *) bfusb;
-+
-+ while (count) {
-+ size = min_t(uint, count, BFUSB_MAX_BLOCK_SIZE);
-+
-+ buf[0] = 0xc1 | ((sent == 0) ? 0x04 : 0) | ((count == size) ? 0x08 : 0);
-+ buf[1] = 0x00;
-+ buf[2] = (size == BFUSB_MAX_BLOCK_SIZE) ? 0 : size;
-+
-+ memcpy(skb_put(nskb, 3), buf, 3);
-+ memcpy(skb_put(nskb, size), skb->data + sent, size);
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ /* Don't send frame with multiple size of bulk max packet */
-+ if ((nskb->len % bfusb->bulk_pkt_size) == 0) {
-+ buf[0] = 0xdd;
-+ buf[1] = 0x00;
-+ memcpy(skb_put(nskb, 2), buf, 2);
-+ }
-+
-+ read_lock(&bfusb->lock);
-+
-+ skb_queue_tail(&bfusb->transmit_q, nskb);
-+ bfusb_tx_wakeup(bfusb);
-+
-+ read_unlock(&bfusb->lock);
-+
-+ kfree_skb(skb);
-+
-+ return 0;
-+}
-+
-+static void bfusb_destruct(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ kfree(bfusb);
-+}
-+
-+static int bfusb_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+static int bfusb_load_firmware(struct bfusb *bfusb, unsigned char *firmware, int count)
-+{
-+ unsigned char *buf;
-+ int err, pipe, len, size, sent = 0;
-+
-+ BT_DBG("bfusb %p udev %p firmware %p count %d", bfusb, bfusb->udev, firmware, count);
-+
-+ BT_INFO("BlueFRITZ! USB loading firmware");
-+
-+ if (usb_set_configuration(bfusb->udev, 1) < 0) {
-+ BT_ERR("Can't change to loading configuration");
-+ return -EBUSY;
-+ }
-+
-+ buf = kmalloc(BFUSB_MAX_BLOCK_SIZE + 3, GFP_ATOMIC);
-+ if (!buf) {
-+ BT_ERR("Can't allocate memory chunk for firmware");
-+ return -ENOMEM;
-+ }
-+
-+ pipe = usb_sndbulkpipe(bfusb->udev, bfusb->bulk_out_ep);
-+
-+ while (count) {
-+ size = min_t(uint, count, BFUSB_MAX_BLOCK_SIZE + 3);
-+
-+ memcpy(buf, firmware + sent, size);
-+
-+ err = usb_bulk_msg(bfusb->udev, pipe, buf, size,
-+ &len, BFUSB_BLOCK_TIMEOUT);
-+
-+ if (err || (len != size)) {
-+ BT_ERR("Error in firmware loading");
-+ goto error;
-+ }
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ if ((err = usb_bulk_msg(bfusb->udev, pipe, NULL, 0,
-+ &len, BFUSB_BLOCK_TIMEOUT)) < 0) {
-+ BT_ERR("Error in null packet request");
-+ goto error;
-+ }
-+
-+ if ((err = usb_set_configuration(bfusb->udev, 2)) < 0) {
-+ BT_ERR("Can't change to running configuration");
-+ goto error;
-+ }
-+
-+ BT_INFO("BlueFRITZ! USB device ready");
-+
-+ kfree(buf);
-+ return 0;
-+
-+error:
-+ kfree(buf);
-+
-+ pipe = usb_sndctrlpipe(bfusb->udev, 0);
-+
-+ usb_control_msg(bfusb->udev, pipe, USB_REQ_SET_CONFIGURATION,
-+ 0, 0, 0, NULL, 0, BFUSB_BLOCK_TIMEOUT);
-+
-+ return err;
-+}
-+
-+static void *bfusb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id)
-+{
-+ const struct firmware *firmware;
-+ char device[16];
-+ struct usb_interface *iface;
-+ struct usb_interface_descriptor *iface_desc;
-+ struct usb_endpoint_descriptor *bulk_out_ep;
-+ struct usb_endpoint_descriptor *bulk_in_ep;
-+ struct hci_dev *hdev;
-+ struct bfusb *bfusb;
-+
-+ BT_DBG("udev %p ifnum %d id %p", udev, ifnum, id);
-+
-+ /* Check number of endpoints */
-+ iface = &udev->actconfig->interface[0];
-+ iface_desc = &iface->altsetting[0];
-+
-+ if (iface_desc->bNumEndpoints < 2)
-+ return NULL;
-+
-+ bulk_out_ep = &iface_desc->endpoint[0];
-+ bulk_in_ep = &iface_desc->endpoint[1];
-+
-+ if (!bulk_out_ep || !bulk_in_ep) {
-+ BT_ERR("Bulk endpoints not found");
-+ goto done;
-+ }
-+
-+ /* Initialize control structure and load firmware */
-+ if (!(bfusb = kmalloc(sizeof(struct bfusb), GFP_KERNEL))) {
-+ BT_ERR("Can't allocate memory for control structure");
-+ goto done;
-+ }
-+
-+ memset(bfusb, 0, sizeof(struct bfusb));
-+
-+ bfusb->udev = udev;
-+ bfusb->bulk_in_ep = bulk_in_ep->bEndpointAddress;
-+ bfusb->bulk_out_ep = bulk_out_ep->bEndpointAddress;
-+ bfusb->bulk_pkt_size = bulk_out_ep->wMaxPacketSize;
-+
-+ bfusb->lock = RW_LOCK_UNLOCKED;
-+
-+ bfusb->reassembly = NULL;
-+
-+ skb_queue_head_init(&bfusb->transmit_q);
-+ skb_queue_head_init(&bfusb->pending_q);
-+ skb_queue_head_init(&bfusb->completed_q);
-+
-+ snprintf(device, sizeof(device), "bfusb%3.3d%3.3d", udev->bus->busnum, udev->devnum);
-+
-+ if (request_firmware(&firmware, "bfubase.frm", device) < 0) {
-+ BT_ERR("Firmware request failed");
-+ goto error;
-+ }
-+
-+ if (bfusb_load_firmware(bfusb, firmware->data, firmware->size) < 0) {
-+ BT_ERR("Firmware loading failed");
-+ goto release;
-+ }
-+
-+ release_firmware(firmware);
-+
-+ /* Initialize and register HCI device */
-+ hdev = &bfusb->hdev;
-+
-+ hdev->type = HCI_USB;
-+ hdev->driver_data = bfusb;
-+
-+ hdev->open = bfusb_open;
-+ hdev->close = bfusb_close;
-+ hdev->flush = bfusb_flush;
-+ hdev->send = bfusb_send_frame;
-+ hdev->destruct = bfusb_destruct;
-+ hdev->ioctl = bfusb_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ BT_ERR("Can't register HCI device");
-+ goto error;
-+ }
-+
-+ return bfusb;
-+
-+release:
-+ release_firmware(firmware);
-+
-+error:
-+ kfree(bfusb);
-+
-+done:
-+ return NULL;
-+}
-+
-+static void bfusb_disconnect(struct usb_device *udev, void *ptr)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) ptr;
-+ struct hci_dev *hdev = &bfusb->hdev;
-+
-+ BT_DBG("udev %p ptr %p", udev, ptr);
-+
-+ if (!hdev)
-+ return;
-+
-+ bfusb_close(hdev);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ BT_ERR("Can't unregister HCI device %s", hdev->name);
-+}
-+
-+static struct usb_driver bfusb_driver = {
-+ name: "bfusb",
-+ probe: bfusb_probe,
-+ disconnect: bfusb_disconnect,
-+ id_table: bfusb_table,
-+};
-+
-+static int __init bfusb_init(void)
-+{
-+ int err;
-+
-+ BT_INFO("BlueFRITZ! USB driver ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2003 Marcel Holtmann <marcel@holtmann.org>");
-+
-+ if ((err = usb_register(&bfusb_driver)) < 0)
-+ BT_ERR("Failed to register BlueFRITZ! USB driver");
-+
-+ return err;
-+}
-+
-+static void __exit bfusb_cleanup(void)
-+{
-+ usb_deregister(&bfusb_driver);
-+}
-+
-+module_init(bfusb_init);
-+module_exit(bfusb_cleanup);
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueFRITZ! USB driver ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/bluecard_cs.c linux-2.4.18-mh15/drivers/bluetooth/bluecard_cs.c
---- linux-2.4.18/drivers/bluetooth/bluecard_cs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/bluecard_cs.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,1116 @@
-+/*
-+ *
-+ * Bluetooth driver for the Anycom BlueCard (LSE039/LSE041)
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+#include <linux/skbuff.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0x86bc;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ driver for the Anycom BlueCard (LSE039/LSE041)");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct bluecard_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+ struct timer_list timer; /* For LED control */
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+
-+ unsigned char ctrl_reg;
-+ unsigned long hw_state; /* Status of the hardware and LED control */
-+} bluecard_info_t;
-+
-+
-+void bluecard_config(dev_link_t *link);
-+void bluecard_release(u_long arg);
-+int bluecard_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "bluecard_cs";
-+
-+dev_link_t *bluecard_attach(void);
-+void bluecard_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Default baud rate: 57600, 115200, 230400 or 460800 */
-+#define DEFAULT_BAUD_RATE 230400
-+
-+
-+/* Hardware states */
-+#define CARD_READY 1
-+#define CARD_HAS_PCCARD_ID 4
-+#define CARD_HAS_POWER_LED 5
-+#define CARD_HAS_ACTIVITY_LED 6
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_BUFFER_NUMBER 5 /* unset = buffer one, set = buffer two */
-+#define XMIT_BUF_ONE_READY 6
-+#define XMIT_BUF_TWO_READY 7
-+#define XMIT_SENDING_READY 8
-+
-+/* Receiver states */
-+#define RECV_WAIT_PACKET_TYPE 0
-+#define RECV_WAIT_EVENT_HEADER 1
-+#define RECV_WAIT_ACL_HEADER 2
-+#define RECV_WAIT_SCO_HEADER 3
-+#define RECV_WAIT_DATA 4
-+
-+/* Special packet types */
-+#define PKT_BAUD_RATE_57600 0x80
-+#define PKT_BAUD_RATE_115200 0x81
-+#define PKT_BAUD_RATE_230400 0x82
-+#define PKT_BAUD_RATE_460800 0x83
-+
-+
-+/* These are the register offsets */
-+#define REG_COMMAND 0x20
-+#define REG_INTERRUPT 0x21
-+#define REG_CONTROL 0x22
-+#define REG_RX_CONTROL 0x24
-+#define REG_CARD_RESET 0x30
-+#define REG_LED_CTRL 0x30
-+
-+/* REG_COMMAND */
-+#define REG_COMMAND_TX_BUF_ONE 0x01
-+#define REG_COMMAND_TX_BUF_TWO 0x02
-+#define REG_COMMAND_RX_BUF_ONE 0x04
-+#define REG_COMMAND_RX_BUF_TWO 0x08
-+#define REG_COMMAND_RX_WIN_ONE 0x00
-+#define REG_COMMAND_RX_WIN_TWO 0x10
-+
-+/* REG_CONTROL */
-+#define REG_CONTROL_BAUD_RATE_57600 0x00
-+#define REG_CONTROL_BAUD_RATE_115200 0x01
-+#define REG_CONTROL_BAUD_RATE_230400 0x02
-+#define REG_CONTROL_BAUD_RATE_460800 0x03
-+#define REG_CONTROL_RTS 0x04
-+#define REG_CONTROL_BT_ON 0x08
-+#define REG_CONTROL_BT_RESET 0x10
-+#define REG_CONTROL_BT_RES_PU 0x20
-+#define REG_CONTROL_INTERRUPT 0x40
-+#define REG_CONTROL_CARD_RESET 0x80
-+
-+/* REG_RX_CONTROL */
-+#define RTS_LEVEL_SHIFT_BITS 0x02
-+
-+
-+
-+/* ======================== LED handling routines ======================== */
-+
-+
-+void bluecard_activity_led_timeout(u_long arg)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)arg;
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ if (test_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state))) {
-+ /* Disable activity LED */
-+ outb(0x08 | 0x20, iobase + 0x30);
-+ } else {
-+ /* Disable power LED */
-+ outb(0x00, iobase + 0x30);
-+ }
-+}
-+
-+
-+static void bluecard_enable_activity_led(bluecard_info_t *info)
-+{
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ if (test_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state))) {
-+ /* Enable activity LED */
-+ outb(0x10 | 0x40, iobase + 0x30);
-+
-+ /* Stop the LED after HZ/4 */
-+ mod_timer(&(info->timer), jiffies + HZ / 4);
-+ } else {
-+ /* Enable power LED */
-+ outb(0x08 | 0x20, iobase + 0x30);
-+
-+ /* Stop the LED after HZ/2 */
-+ mod_timer(&(info->timer), jiffies + HZ / 2);
-+ }
-+}
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int bluecard_write(unsigned int iobase, unsigned int offset, __u8 *buf, int len)
-+{
-+ int i, actual;
-+
-+ actual = (len > 15) ? 15 : len;
-+
-+ outb_p(actual, iobase + offset);
-+
-+ for (i = 0; i < actual; i++)
-+ outb_p(buf[i], iobase + offset + i + 1);
-+
-+ return actual;
-+}
-+
-+
-+static void bluecard_write_wakeup(bluecard_info_t *info)
-+{
-+ if (!info) {
-+ printk(KERN_WARNING "bluecard_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (!test_bit(XMIT_SENDING_READY, &(info->tx_state)))
-+ return;
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register unsigned int offset;
-+ register unsigned char command;
-+ register unsigned long ready_bit;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ clear_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ return;
-+
-+ if (test_bit(XMIT_BUFFER_NUMBER, &(info->tx_state))) {
-+ if (!test_bit(XMIT_BUF_TWO_READY, &(info->tx_state)))
-+ break;
-+ offset = 0x10;
-+ command = REG_COMMAND_TX_BUF_TWO;
-+ ready_bit = XMIT_BUF_TWO_READY;
-+ } else {
-+ if (!test_bit(XMIT_BUF_ONE_READY, &(info->tx_state)))
-+ break;
-+ offset = 0x00;
-+ command = REG_COMMAND_TX_BUF_ONE;
-+ ready_bit = XMIT_BUF_ONE_READY;
-+ }
-+
-+ if (!(skb = skb_dequeue(&(info->txq))))
-+ break;
-+
-+ if (skb->pkt_type & 0x80) {
-+ /* Disable RTS */
-+ info->ctrl_reg |= REG_CONTROL_RTS;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+ }
-+
-+ /* Activate LED */
-+ bluecard_enable_activity_led(info);
-+
-+ /* Send frame */
-+ len = bluecard_write(iobase, offset, skb->data, skb->len);
-+
-+ /* Tell the FPGA to send the data */
-+ outb_p(command, iobase + REG_COMMAND);
-+
-+ /* Mark the buffer as dirty */
-+ clear_bit(ready_bit, &(info->tx_state));
-+
-+ if (skb->pkt_type & 0x80) {
-+
-+ wait_queue_head_t wait;
-+ unsigned char baud_reg;
-+
-+ switch (skb->pkt_type) {
-+ case PKT_BAUD_RATE_460800:
-+ baud_reg = REG_CONTROL_BAUD_RATE_460800;
-+ break;
-+ case PKT_BAUD_RATE_230400:
-+ baud_reg = REG_CONTROL_BAUD_RATE_230400;
-+ break;
-+ case PKT_BAUD_RATE_115200:
-+ baud_reg = REG_CONTROL_BAUD_RATE_115200;
-+ break;
-+ case PKT_BAUD_RATE_57600:
-+ /* Fall through... */
-+ default:
-+ baud_reg = REG_CONTROL_BAUD_RATE_57600;
-+ break;
-+ }
-+
-+ /* Wait until the command reaches the baseband */
-+ init_waitqueue_head(&wait);
-+ interruptible_sleep_on_timeout(&wait, HZ / 10);
-+
-+ /* Set baud on baseband */
-+ info->ctrl_reg &= ~0x03;
-+ info->ctrl_reg |= baud_reg;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Enable RTS */
-+ info->ctrl_reg &= ~REG_CONTROL_RTS;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Wait before the next HCI packet can be send */
-+ interruptible_sleep_on_timeout(&wait, HZ);
-+
-+ }
-+
-+ if (len == skb->len) {
-+ kfree_skb(skb);
-+ } else {
-+ skb_pull(skb, len);
-+ skb_queue_head(&(info->txq), skb);
-+ }
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ /* Change buffer */
-+ change_bit(XMIT_BUFFER_NUMBER, &(info->tx_state));
-+
-+ } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
-+
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+}
-+
-+
-+static int bluecard_read(unsigned int iobase, unsigned int offset, __u8 *buf, int size)
-+{
-+ int i, n, len;
-+
-+ outb(REG_COMMAND_RX_WIN_ONE, iobase + REG_COMMAND);
-+
-+ len = inb(iobase + offset);
-+ n = 0;
-+ i = 1;
-+
-+ while (n < len) {
-+
-+ if (i == 16) {
-+ outb(REG_COMMAND_RX_WIN_TWO, iobase + REG_COMMAND);
-+ i = 0;
-+ }
-+
-+ buf[n] = inb(iobase + offset + i);
-+
-+ n++;
-+ i++;
-+
-+ }
-+
-+ return len;
-+}
-+
-+
-+static void bluecard_receive(bluecard_info_t *info, unsigned int offset)
-+{
-+ unsigned int iobase;
-+ unsigned char buf[31];
-+ int i, len;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bluecard_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ if (test_bit(XMIT_SENDING_READY, &(info->tx_state)))
-+ bluecard_enable_activity_led(info);
-+
-+ len = bluecard_read(iobase, offset, buf, sizeof(buf));
-+
-+ for (i = 0; i < len; i++) {
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL) {
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "bluecard_cs: Can't allocate mem for new packet.\n");
-+ return;
-+ }
-+ }
-+
-+ if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
-+
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type = buf[i];
-+
-+ switch (info->rx_skb->pkt_type) {
-+
-+ case 0x00:
-+ /* init packet */
-+ if (offset != 0x00) {
-+ set_bit(XMIT_BUF_ONE_READY, &(info->tx_state));
-+ set_bit(XMIT_BUF_TWO_READY, &(info->tx_state));
-+ set_bit(XMIT_SENDING_READY, &(info->tx_state));
-+ bluecard_write_wakeup(info);
-+ }
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ case HCI_EVENT_PKT:
-+ info->rx_state = RECV_WAIT_EVENT_HEADER;
-+ info->rx_count = HCI_EVENT_HDR_SIZE;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ info->rx_state = RECV_WAIT_ACL_HEADER;
-+ info->rx_count = HCI_ACL_HDR_SIZE;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ info->rx_state = RECV_WAIT_SCO_HEADER;
-+ info->rx_count = HCI_SCO_HDR_SIZE;
-+ break;
-+
-+ default:
-+ /* unknown packet */
-+ printk(KERN_WARNING "bluecard_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ info->hdev.stat.err_rx++;
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ } else {
-+
-+ *skb_put(info->rx_skb, 1) = buf[i];
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ int dlen;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+
-+ switch (info->rx_state) {
-+
-+ case RECV_WAIT_EVENT_HEADER:
-+ eh = (hci_event_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = eh->plen;
-+ break;
-+
-+ case RECV_WAIT_ACL_HEADER:
-+ ah = (hci_acl_hdr *)(info->rx_skb->data);
-+ dlen = __le16_to_cpu(ah->dlen);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = dlen;
-+ break;
-+
-+ case RECV_WAIT_SCO_HEADER:
-+ sh = (hci_sco_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = sh->dlen;
-+ break;
-+
-+ case RECV_WAIT_DATA:
-+ hci_recv_frame(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+
-+ }
-+
-+ info->hdev.stat.byte_rx += len;
-+}
-+
-+
-+void bluecard_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ bluecard_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ unsigned char reg;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bluecard_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ if (!test_bit(CARD_READY, &(info->hw_state)))
-+ return;
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ /* Disable interrupt */
-+ info->ctrl_reg &= ~REG_CONTROL_INTERRUPT;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ reg = inb(iobase + REG_INTERRUPT);
-+
-+ if ((reg != 0x00) && (reg != 0xff)) {
-+
-+ if (reg & 0x04) {
-+ bluecard_receive(info, 0x00);
-+ outb(0x04, iobase + REG_INTERRUPT);
-+ outb(REG_COMMAND_RX_BUF_ONE, iobase + REG_COMMAND);
-+ }
-+
-+ if (reg & 0x08) {
-+ bluecard_receive(info, 0x10);
-+ outb(0x08, iobase + REG_INTERRUPT);
-+ outb(REG_COMMAND_RX_BUF_TWO, iobase + REG_COMMAND);
-+ }
-+
-+ if (reg & 0x01) {
-+ set_bit(XMIT_BUF_ONE_READY, &(info->tx_state));
-+ outb(0x01, iobase + REG_INTERRUPT);
-+ bluecard_write_wakeup(info);
-+ }
-+
-+ if (reg & 0x02) {
-+ set_bit(XMIT_BUF_TWO_READY, &(info->tx_state));
-+ outb(0x02, iobase + REG_INTERRUPT);
-+ bluecard_write_wakeup(info);
-+ }
-+
-+ }
-+
-+ /* Enable interrupt */
-+ info->ctrl_reg |= REG_CONTROL_INTERRUPT;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+
-+/* ======================== Device specific HCI commands ======================== */
-+
-+
-+static int bluecard_hci_set_baud_rate(struct hci_dev *hdev, int baud)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+ struct sk_buff *skb;
-+
-+ /* Ericsson baud rate command */
-+ unsigned char cmd[] = { HCI_COMMAND_PKT, 0x09, 0xfc, 0x01, 0x03 };
-+
-+ if (!(skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "bluecard_cs: Can't allocate mem for new packet.\n");
-+ return -1;
-+ }
-+
-+ switch (baud) {
-+ case 460800:
-+ cmd[4] = 0x00;
-+ skb->pkt_type = PKT_BAUD_RATE_460800;
-+ break;
-+ case 230400:
-+ cmd[4] = 0x01;
-+ skb->pkt_type = PKT_BAUD_RATE_230400;
-+ break;
-+ case 115200:
-+ cmd[4] = 0x02;
-+ skb->pkt_type = PKT_BAUD_RATE_115200;
-+ break;
-+ case 57600:
-+ /* Fall through... */
-+ default:
-+ cmd[4] = 0x03;
-+ skb->pkt_type = PKT_BAUD_RATE_57600;
-+ break;
-+ }
-+
-+ memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd));
-+
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ bluecard_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int bluecard_hci_flush(struct hci_dev *hdev)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int bluecard_hci_open(struct hci_dev *hdev)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ bluecard_hci_set_baud_rate(hdev, DEFAULT_BAUD_RATE);
-+
-+ if (test_and_set_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ /* Enable LED */
-+ outb(0x08 | 0x20, iobase + 0x30);
-+
-+ return 0;
-+}
-+
-+
-+static int bluecard_hci_close(struct hci_dev *hdev)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ bluecard_hci_flush(hdev);
-+
-+ /* Disable LED */
-+ outb(0x00, iobase + 0x30);
-+
-+ return 0;
-+}
-+
-+
-+static int bluecard_hci_send_frame(struct sk_buff *skb)
-+{
-+ bluecard_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "bluecard_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (bluecard_info_t *)(hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ bluecard_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+static void bluecard_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int bluecard_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+int bluecard_open(bluecard_info_t *info)
-+{
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev;
-+ unsigned char id;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ init_timer(&(info->timer));
-+ info->timer.function = &bluecard_activity_led_timeout;
-+ info->timer.data = (u_long)info;
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ info->rx_skb = NULL;
-+
-+ id = inb(iobase + 0x30);
-+
-+ if ((id & 0x0f) == 0x02)
-+ set_bit(CARD_HAS_PCCARD_ID, &(info->hw_state));
-+
-+ if (id & 0x10)
-+ set_bit(CARD_HAS_POWER_LED, &(info->hw_state));
-+
-+ if (id & 0x20)
-+ set_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state));
-+
-+ /* Reset card */
-+ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Turn FPGA off */
-+ outb(0x80, iobase + 0x30);
-+
-+ /* Wait some time */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ / 100);
-+
-+ /* Turn FPGA on */
-+ outb(0x00, iobase + 0x30);
-+
-+ /* Activate card */
-+ info->ctrl_reg = REG_CONTROL_BT_ON | REG_CONTROL_BT_RES_PU;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Enable interrupt */
-+ outb(0xff, iobase + REG_INTERRUPT);
-+ info->ctrl_reg |= REG_CONTROL_INTERRUPT;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Start the RX buffers */
-+ outb(REG_COMMAND_RX_BUF_ONE, iobase + REG_COMMAND);
-+ outb(REG_COMMAND_RX_BUF_TWO, iobase + REG_COMMAND);
-+
-+ /* Signal that the hardware is ready */
-+ set_bit(CARD_READY, &(info->hw_state));
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ /* Control the point at which RTS is enabled */
-+ outb((0x0f << RTS_LEVEL_SHIFT_BITS) | 1, iobase + REG_RX_CONTROL);
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout((HZ * 5) / 4); // or set it to 3/2
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = bluecard_hci_open;
-+ hdev->close = bluecard_hci_close;
-+ hdev->flush = bluecard_hci_flush;
-+ hdev->send = bluecard_hci_send_frame;
-+ hdev->destruct = bluecard_hci_destruct;
-+ hdev->ioctl = bluecard_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "bluecard_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int bluecard_close(bluecard_info_t *info)
-+{
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
-+ bluecard_hci_close(hdev);
-+
-+ clear_bit(CARD_READY, &(info->hw_state));
-+
-+ /* Reset card */
-+ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Turn FPGA off */
-+ outb(0x80, iobase + 0x30);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "bluecard_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *bluecard_attach(void)
-+{
-+ bluecard_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &bluecard_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = bluecard_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &bluecard_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ bluecard_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void bluecard_detach(dev_link_t *link)
-+{
-+ bluecard_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+ if (link->state & DEV_CONFIG)
-+ bluecard_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void bluecard_config(dev_link_t *link)
-+{
-+ client_handle_t handle = link->handle;
-+ bluecard_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ config_info_t config;
-+ int i, n, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ link->conf.ConfigIndex = 0x20;
-+ link->io.NumPorts1 = 64;
-+ link->io.IOAddrLines = 6;
-+
-+ for (n = 0; n < 0x400; n += 0x40) {
-+ link->io.BasePort1 = n ^ 0x300;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ break;
-+ }
-+
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (bluecard_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ bluecard_release((u_long)link);
-+}
-+
-+
-+void bluecard_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ bluecard_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ bluecard_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int bluecard_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ bluecard_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ bluecard_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ bluecard_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_bluecard_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "bluecard_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &bluecard_attach, &bluecard_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_bluecard_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ bluecard_detach(dev_list);
-+}
-+
-+
-+module_init(init_bluecard_cs);
-+module_exit(exit_bluecard_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/bt3c_cs.c linux-2.4.18-mh15/drivers/bluetooth/bt3c_cs.c
---- linux-2.4.18/drivers/bluetooth/bt3c_cs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/bt3c_cs.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,986 @@
-+/*
-+ *
-+ * Driver for the 3Com Bluetooth PCMCIA card
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ * Jose Orlando Pereira <jop@di.uminho.pt>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/kmod.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/delay.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/unistd.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/skbuff.h>
-+#include <linux/string.h>
-+#include <linux/serial.h>
-+#include <linux/serial_reg.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/io.h>
-+
-+#include <linux/firmware.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0xffff;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>, Jose Orlando Pereira <jop@di.uminho.pt>");
-+MODULE_DESCRIPTION("BlueZ driver for the 3Com Bluetooth PCMCIA card");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct bt3c_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+} bt3c_info_t;
-+
-+
-+void bt3c_config(dev_link_t *link);
-+void bt3c_release(u_long arg);
-+int bt3c_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "bt3c_cs";
-+
-+dev_link_t *bt3c_attach(void);
-+void bt3c_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_WAITING 8
-+
-+/* Receiver states */
-+#define RECV_WAIT_PACKET_TYPE 0
-+#define RECV_WAIT_EVENT_HEADER 1
-+#define RECV_WAIT_ACL_HEADER 2
-+#define RECV_WAIT_SCO_HEADER 3
-+#define RECV_WAIT_DATA 4
-+
-+
-+
-+/* ======================== Special I/O functions ======================== */
-+
-+
-+#define DATA_L 0
-+#define DATA_H 1
-+#define ADDR_L 2
-+#define ADDR_H 3
-+#define CONTROL 4
-+
-+
-+inline void bt3c_address(unsigned int iobase, unsigned short addr)
-+{
-+ outb(addr & 0xff, iobase + ADDR_L);
-+ outb((addr >> 8) & 0xff, iobase + ADDR_H);
-+}
-+
-+
-+inline void bt3c_put(unsigned int iobase, unsigned short value)
-+{
-+ outb(value & 0xff, iobase + DATA_L);
-+ outb((value >> 8) & 0xff, iobase + DATA_H);
-+}
-+
-+
-+inline void bt3c_io_write(unsigned int iobase, unsigned short addr, unsigned short value)
-+{
-+ bt3c_address(iobase, addr);
-+ bt3c_put(iobase, value);
-+}
-+
-+
-+inline unsigned short bt3c_get(unsigned int iobase)
-+{
-+ unsigned short value = inb(iobase + DATA_L);
-+
-+ value |= inb(iobase + DATA_H) << 8;
-+
-+ return value;
-+}
-+
-+
-+inline unsigned short bt3c_read(unsigned int iobase, unsigned short addr)
-+{
-+ bt3c_address(iobase, addr);
-+
-+ return bt3c_get(iobase);
-+}
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int bt3c_write(unsigned int iobase, int fifo_size, __u8 *buf, int len)
-+{
-+ int actual = 0;
-+
-+ bt3c_address(iobase, 0x7080);
-+
-+ /* Fill FIFO with current frame */
-+ while (actual < len) {
-+ /* Transmit next byte */
-+ bt3c_put(iobase, buf[actual]);
-+ actual++;
-+ }
-+
-+ bt3c_io_write(iobase, 0x7005, actual);
-+
-+ return actual;
-+}
-+
-+
-+static void bt3c_write_wakeup(bt3c_info_t *info, int from)
-+{
-+ unsigned long flags;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bt3c_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state)))
-+ return;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ break;
-+
-+
-+ if (!(skb = skb_dequeue(&(info->txq)))) {
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+ break;
-+ }
-+
-+ /* Send frame */
-+ len = bt3c_write(iobase, 256, skb->data, skb->len);
-+
-+ if (len != skb->len) {
-+ printk(KERN_WARNING "bt3c_cs: very strange\n");
-+ }
-+
-+ kfree_skb(skb);
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ } while (0);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+}
-+
-+
-+static void bt3c_receive(bt3c_info_t *info)
-+{
-+ unsigned int iobase;
-+ int size = 0, avail;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bt3c_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ avail = bt3c_read(iobase, 0x7006);
-+ //printk("bt3c_cs: receiving %d bytes\n", avail);
-+
-+ bt3c_address(iobase, 0x7480);
-+ while (size < avail) {
-+ size++;
-+ info->hdev.stat.byte_rx++;
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL) {
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "bt3c_cs: Can't allocate mem for new packet.\n");
-+ return;
-+ }
-+ }
-+
-+
-+ if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
-+
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type = inb(iobase + DATA_L);
-+ inb(iobase + DATA_H);
-+ //printk("bt3c: PACKET_TYPE=%02x\n", info->rx_skb->pkt_type);
-+
-+ switch (info->rx_skb->pkt_type) {
-+
-+ case HCI_EVENT_PKT:
-+ info->rx_state = RECV_WAIT_EVENT_HEADER;
-+ info->rx_count = HCI_EVENT_HDR_SIZE;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ info->rx_state = RECV_WAIT_ACL_HEADER;
-+ info->rx_count = HCI_ACL_HDR_SIZE;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ info->rx_state = RECV_WAIT_SCO_HEADER;
-+ info->rx_count = HCI_SCO_HDR_SIZE;
-+ break;
-+
-+ default:
-+ /* Unknown packet */
-+ printk(KERN_WARNING "bt3c_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ info->hdev.stat.err_rx++;
-+ clear_bit(HCI_RUNNING, &(info->hdev.flags));
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ } else {
-+
-+ __u8 x = inb(iobase + DATA_L);
-+
-+ *skb_put(info->rx_skb, 1) = x;
-+ inb(iobase + DATA_H);
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ int dlen;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+
-+ switch (info->rx_state) {
-+
-+ case RECV_WAIT_EVENT_HEADER:
-+ eh = (hci_event_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = eh->plen;
-+ break;
-+
-+ case RECV_WAIT_ACL_HEADER:
-+ ah = (hci_acl_hdr *)(info->rx_skb->data);
-+ dlen = __le16_to_cpu(ah->dlen);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = dlen;
-+ break;
-+
-+ case RECV_WAIT_SCO_HEADER:
-+ sh = (hci_sco_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = sh->dlen;
-+ break;
-+
-+ case RECV_WAIT_DATA:
-+ hci_recv_frame(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+ bt3c_io_write(iobase, 0x7006, 0x0000);
-+}
-+
-+
-+void bt3c_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ bt3c_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ int iir;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bt3c_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ iir = inb(iobase + CONTROL);
-+ if (iir & 0x80) {
-+ int stat = bt3c_read(iobase, 0x7001);
-+
-+ if ((stat & 0xff) == 0x7f) {
-+ printk(KERN_WARNING "bt3c_cs: STRANGE stat=%04x\n", stat);
-+ } else if ((stat & 0xff) != 0xff) {
-+ if (stat & 0x0020) {
-+ int stat = bt3c_read(iobase, 0x7002) & 0x10;
-+ printk(KERN_WARNING "bt3c_cs: antena %s\n", stat ? "OUT" : "IN");
-+ }
-+ if (stat & 0x0001)
-+ bt3c_receive(info);
-+ if (stat & 0x0002) {
-+ //printk("bt3c_cs: ACK %04x\n", stat);
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+ bt3c_write_wakeup(info, 1);
-+ }
-+
-+ bt3c_io_write(iobase, 0x7001, 0x0000);
-+
-+ outb(iir, iobase + CONTROL);
-+ }
-+ }
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int bt3c_hci_flush(struct hci_dev *hdev)
-+{
-+ bt3c_info_t *info = (bt3c_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int bt3c_hci_open(struct hci_dev *hdev)
-+{
-+ set_bit(HCI_RUNNING, &(hdev->flags));
-+
-+ return 0;
-+}
-+
-+
-+static int bt3c_hci_close(struct hci_dev *hdev)
-+{
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ bt3c_hci_flush(hdev);
-+
-+ return 0;
-+}
-+
-+
-+static int bt3c_hci_send_frame(struct sk_buff *skb)
-+{
-+ bt3c_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "bt3c_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (bt3c_info_t *) (hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ bt3c_write_wakeup(info, 0);
-+
-+ return 0;
-+}
-+
-+
-+static void bt3c_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int bt3c_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+static int bt3c_load_firmware(bt3c_info_t *info, unsigned char *firmware, int count)
-+{
-+ char *ptr = (char *) firmware;
-+ char b[9];
-+ unsigned int iobase, size, addr, fcs, tmp;
-+ int i, err = 0;
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ /* Reset */
-+
-+ bt3c_io_write(iobase, 0x8040, 0x0404);
-+ bt3c_io_write(iobase, 0x8040, 0x0400);
-+
-+ udelay(1);
-+
-+ bt3c_io_write(iobase, 0x8040, 0x0404);
-+
-+ udelay(17);
-+
-+ /* Load */
-+
-+ while (count) {
-+ if (ptr[0] != 'S') {
-+ printk(KERN_WARNING "bt3c_cs: Bad address in firmware.\n");
-+ err = -EFAULT;
-+ goto error;
-+ }
-+
-+ memset(b, 0, sizeof(b));
-+ memcpy(b, ptr + 2, 2);
-+ size = simple_strtol(b, NULL, 16);
-+
-+ memset(b, 0, sizeof(b));
-+ memcpy(b, ptr + 4, 8);
-+ addr = simple_strtol(b, NULL, 16);
-+
-+ memset(b, 0, sizeof(b));
-+ memcpy(b, ptr + (size * 2) + 2, 2);
-+ fcs = simple_strtol(b, NULL, 16);
-+
-+ memset(b, 0, sizeof(b));
-+ for (tmp = 0, i = 0; i < size; i++) {
-+ memcpy(b, ptr + (i * 2) + 2, 2);
-+ tmp += simple_strtol(b, NULL, 16);
-+ }
-+
-+ if (((tmp + fcs) & 0xff) != 0xff) {
-+ printk(KERN_WARNING "bt3c_cs: Checksum error in firmware.\n");
-+ err = -EILSEQ;
-+ goto error;
-+ }
-+
-+ if (ptr[1] == '3') {
-+ bt3c_address(iobase, addr);
-+
-+ memset(b, 0, sizeof(b));
-+ for (i = 0; i < (size - 4) / 2; i++) {
-+ memcpy(b, ptr + (i * 4) + 12, 4);
-+ tmp = simple_strtol(b, NULL, 16);
-+ bt3c_put(iobase, tmp);
-+ }
-+ }
-+
-+ ptr += (size * 2) + 6;
-+ count -= (size * 2) + 6;
-+ }
-+
-+ udelay(17);
-+
-+ /* Boot */
-+
-+ bt3c_address(iobase, 0x3000);
-+ outb(inb(iobase + CONTROL) | 0x40, iobase + CONTROL);
-+
-+error:
-+ udelay(17);
-+
-+ /* Clear */
-+
-+ bt3c_io_write(iobase, 0x7006, 0x0000);
-+ bt3c_io_write(iobase, 0x7005, 0x0000);
-+ bt3c_io_write(iobase, 0x7001, 0x0000);
-+
-+ return err;
-+}
-+
-+
-+int bt3c_open(bt3c_info_t *info)
-+{
-+ const struct firmware *firmware;
-+ char device[16];
-+ struct hci_dev *hdev;
-+ int err;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ info->rx_skb = NULL;
-+
-+ /* Load firmware */
-+
-+ snprintf(device, sizeof(device), "bt3c%4.4x", info->link.io.BasePort1);
-+
-+ err = request_firmware(&firmware, "BT3CPCC.bin", device);
-+ if (err < 0) {
-+ printk(KERN_WARNING "bt3c_cs: Firmware request failed.\n");
-+ return err;
-+ }
-+
-+ err = bt3c_load_firmware(info, firmware->data, firmware->size);
-+
-+ release_firmware(firmware);
-+
-+ if (err < 0) {
-+ printk(KERN_WARNING "bt3c_cs: Firmware loading failed.\n");
-+ return err;
-+ }
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ);
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = bt3c_hci_open;
-+ hdev->close = bt3c_hci_close;
-+ hdev->flush = bt3c_hci_flush;
-+ hdev->send = bt3c_hci_send_frame;
-+ hdev->destruct = bt3c_hci_destruct;
-+ hdev->ioctl = bt3c_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "bt3c_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int bt3c_close(bt3c_info_t *info)
-+{
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
-+ bt3c_hci_close(hdev);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "bt3c_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *bt3c_attach(void)
-+{
-+ bt3c_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &bt3c_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = bt3c_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &bt3c_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ bt3c_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void bt3c_detach(dev_link_t *link)
-+{
-+ bt3c_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+
-+ if (link->state & DEV_CONFIG)
-+ bt3c_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void bt3c_config(dev_link_t *link)
-+{
-+ static ioaddr_t base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
-+ client_handle_t handle = link->handle;
-+ bt3c_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
-+ int i, j, try, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ /* First pass: look for a config entry that looks normal. */
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-+ /* Two tries: without IO aliases, then with aliases */
-+ for (try = 0; try < 2; try++) {
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if (i != CS_SUCCESS)
-+ goto next_entry;
-+ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) {
-+ link->conf.ConfigIndex = cf->index;
-+ link->io.BasePort1 = cf->io.win[0].base;
-+ link->io.IOAddrLines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+next_entry:
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+ }
-+
-+ /* Second pass: try to find an entry that isn't picky about
-+ its base address, then try to grab any standard serial port
-+ address, and finally try to get any free port. */
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if ((i == CS_SUCCESS) && (cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-+ link->conf.ConfigIndex = cf->index;
-+ for (j = 0; j < 5; j++) {
-+ link->io.BasePort1 = base[j];
-+ link->io.IOAddrLines = base[j] ? 16 : 3;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+ }
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+
-+found_port:
-+ if (i != CS_SUCCESS) {
-+ printk(KERN_NOTICE "bt3c_cs: No usable port range found. Giving up.\n");
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (bt3c_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ bt3c_release((u_long)link);
-+}
-+
-+
-+void bt3c_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ bt3c_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ bt3c_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int bt3c_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ bt3c_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ bt3c_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ bt3c_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_bt3c_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "bt3c_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &bt3c_attach, &bt3c_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_bt3c_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ bt3c_detach(dev_list);
-+}
-+
-+
-+module_init(init_bt3c_cs);
-+module_exit(exit_bt3c_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/btuart_cs.c linux-2.4.18-mh15/drivers/bluetooth/btuart_cs.c
---- linux-2.4.18/drivers/bluetooth/btuart_cs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/btuart_cs.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,909 @@
-+/*
-+ *
-+ * Driver for Bluetooth PCMCIA cards with HCI UART interface
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/skbuff.h>
-+#include <linux/string.h>
-+#include <linux/serial.h>
-+#include <linux/serial_reg.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0xffff;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ driver for Bluetooth PCMCIA cards with HCI UART interface");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct btuart_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+} btuart_info_t;
-+
-+
-+void btuart_config(dev_link_t *link);
-+void btuart_release(u_long arg);
-+int btuart_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "btuart_cs";
-+
-+dev_link_t *btuart_attach(void);
-+void btuart_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Maximum baud rate */
-+#define SPEED_MAX 115200
-+
-+/* Default baud rate: 57600, 115200, 230400 or 460800 */
-+#define DEFAULT_BAUD_RATE 115200
-+
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_WAITING 8
-+
-+/* Receiver states */
-+#define RECV_WAIT_PACKET_TYPE 0
-+#define RECV_WAIT_EVENT_HEADER 1
-+#define RECV_WAIT_ACL_HEADER 2
-+#define RECV_WAIT_SCO_HEADER 3
-+#define RECV_WAIT_DATA 4
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int btuart_write(unsigned int iobase, int fifo_size, __u8 *buf, int len)
-+{
-+ int actual = 0;
-+
-+ /* Tx FIFO should be empty */
-+ if (!(inb(iobase + UART_LSR) & UART_LSR_THRE))
-+ return 0;
-+
-+ /* Fill FIFO with current frame */
-+ while ((fifo_size-- > 0) && (actual < len)) {
-+ /* Transmit next byte */
-+ outb(buf[actual], iobase + UART_TX);
-+ actual++;
-+ }
-+
-+ return actual;
-+}
-+
-+
-+static void btuart_write_wakeup(btuart_info_t *info)
-+{
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ clear_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ return;
-+
-+ if (!(skb = skb_dequeue(&(info->txq))))
-+ break;
-+
-+ /* Send frame */
-+ len = btuart_write(iobase, 16, skb->data, skb->len);
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (len == skb->len) {
-+ kfree_skb(skb);
-+ } else {
-+ skb_pull(skb, len);
-+ skb_queue_head(&(info->txq), skb);
-+ }
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
-+
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+}
-+
-+
-+static void btuart_receive(btuart_info_t *info)
-+{
-+ unsigned int iobase;
-+ int boguscount = 0;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ do {
-+ info->hdev.stat.byte_rx++;
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL) {
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "btuart_cs: Can't allocate mem for new packet.\n");
-+ return;
-+ }
-+ }
-+
-+ if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
-+
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type = inb(iobase + UART_RX);
-+
-+ switch (info->rx_skb->pkt_type) {
-+
-+ case HCI_EVENT_PKT:
-+ info->rx_state = RECV_WAIT_EVENT_HEADER;
-+ info->rx_count = HCI_EVENT_HDR_SIZE;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ info->rx_state = RECV_WAIT_ACL_HEADER;
-+ info->rx_count = HCI_ACL_HDR_SIZE;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ info->rx_state = RECV_WAIT_SCO_HEADER;
-+ info->rx_count = HCI_SCO_HDR_SIZE;
-+ break;
-+
-+ default:
-+ /* Unknown packet */
-+ printk(KERN_WARNING "btuart_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ info->hdev.stat.err_rx++;
-+ clear_bit(HCI_RUNNING, &(info->hdev.flags));
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ } else {
-+
-+ *skb_put(info->rx_skb, 1) = inb(iobase + UART_RX);
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ int dlen;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+
-+
-+ switch (info->rx_state) {
-+
-+ case RECV_WAIT_EVENT_HEADER:
-+ eh = (hci_event_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = eh->plen;
-+ break;
-+
-+ case RECV_WAIT_ACL_HEADER:
-+ ah = (hci_acl_hdr *)(info->rx_skb->data);
-+ dlen = __le16_to_cpu(ah->dlen);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = dlen;
-+ break;
-+
-+ case RECV_WAIT_SCO_HEADER:
-+ sh = (hci_sco_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = sh->dlen;
-+ break;
-+
-+ case RECV_WAIT_DATA:
-+ hci_recv_frame(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 16)
-+ break;
-+
-+ } while (inb(iobase + UART_LSR) & UART_LSR_DR);
-+}
-+
-+
-+void btuart_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ btuart_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ int boguscount = 0;
-+ int iir, lsr;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+ while (iir) {
-+
-+ /* Clear interrupt */
-+ lsr = inb(iobase + UART_LSR);
-+
-+ switch (iir) {
-+ case UART_IIR_RLSI:
-+ printk(KERN_NOTICE "btuart_cs: RLSI\n");
-+ break;
-+ case UART_IIR_RDI:
-+ /* Receive interrupt */
-+ btuart_receive(info);
-+ break;
-+ case UART_IIR_THRI:
-+ if (lsr & UART_LSR_THRE) {
-+ /* Transmitter ready for data */
-+ btuart_write_wakeup(info);
-+ }
-+ break;
-+ default:
-+ printk(KERN_NOTICE "btuart_cs: Unhandled IIR=%#x\n", iir);
-+ break;
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 100)
-+ break;
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+
-+ }
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+static void btuart_change_speed(btuart_info_t *info, unsigned int speed)
-+{
-+ unsigned long flags;
-+ unsigned int iobase;
-+ int fcr; /* FIFO control reg */
-+ int lcr; /* Line control reg */
-+ int divisor;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of change speed for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ divisor = SPEED_MAX / speed;
-+
-+ fcr = UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT;
-+
-+ /*
-+ * Use trigger level 1 to avoid 3 ms. timeout delay at 9600 bps, and
-+ * almost 1,7 ms at 19200 bps. At speeds above that we can just forget
-+ * about this timeout since it will always be fast enough.
-+ */
-+
-+ if (speed < 38400)
-+ fcr |= UART_FCR_TRIGGER_1;
-+ else
-+ fcr |= UART_FCR_TRIGGER_14;
-+
-+ /* Bluetooth cards use 8N1 */
-+ lcr = UART_LCR_WLEN8;
-+
-+ outb(UART_LCR_DLAB | lcr, iobase + UART_LCR); /* Set DLAB */
-+ outb(divisor & 0xff, iobase + UART_DLL); /* Set speed */
-+ outb(divisor >> 8, iobase + UART_DLM);
-+ outb(lcr, iobase + UART_LCR); /* Set 8N1 */
-+ outb(fcr, iobase + UART_FCR); /* Enable FIFO's */
-+
-+ /* Turn on interrups */
-+ outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+}
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int btuart_hci_flush(struct hci_dev *hdev)
-+{
-+ btuart_info_t *info = (btuart_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_open(struct hci_dev *hdev)
-+{
-+ set_bit(HCI_RUNNING, &(hdev->flags));
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_close(struct hci_dev *hdev)
-+{
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ btuart_hci_flush(hdev);
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_send_frame(struct sk_buff *skb)
-+{
-+ btuart_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "btuart_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (btuart_info_t *)(hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ btuart_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+static void btuart_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int btuart_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+int btuart_open(btuart_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ info->rx_skb = NULL;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ /* Initialize UART */
-+ outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */
-+ outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR);
-+
-+ /* Turn on interrupts */
-+ // outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ btuart_change_speed(info, DEFAULT_BAUD_RATE);
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ);
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = btuart_hci_open;
-+ hdev->close = btuart_hci_close;
-+ hdev->flush = btuart_hci_flush;
-+ hdev->send = btuart_hci_send_frame;
-+ hdev->destruct = btuart_hci_destruct;
-+ hdev->ioctl = btuart_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "btuart_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int btuart_close(btuart_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
-+ btuart_hci_close(hdev);
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "btuart_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *btuart_attach(void)
-+{
-+ btuart_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &btuart_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = btuart_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &btuart_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ btuart_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void btuart_detach(dev_link_t *link)
-+{
-+ btuart_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+ if (link->state & DEV_CONFIG)
-+ btuart_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void btuart_config(dev_link_t *link)
-+{
-+ static ioaddr_t base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
-+ client_handle_t handle = link->handle;
-+ btuart_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
-+ int i, j, try, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ /* First pass: look for a config entry that looks normal. */
-+ tuple.TupleData = (cisdata_t *) buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-+ /* Two tries: without IO aliases, then with aliases */
-+ for (try = 0; try < 2; try++) {
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if (i != CS_SUCCESS)
-+ goto next_entry;
-+ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) {
-+ link->conf.ConfigIndex = cf->index;
-+ link->io.BasePort1 = cf->io.win[0].base;
-+ link->io.IOAddrLines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+next_entry:
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+ }
-+
-+ /* Second pass: try to find an entry that isn't picky about
-+ its base address, then try to grab any standard serial port
-+ address, and finally try to get any free port. */
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if ((i == CS_SUCCESS) && (cf->io.nwin > 0)
-+ && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-+ link->conf.ConfigIndex = cf->index;
-+ for (j = 0; j < 5; j++) {
-+ link->io.BasePort1 = base[j];
-+ link->io.IOAddrLines = base[j] ? 16 : 3;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+ }
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+
-+found_port:
-+ if (i != CS_SUCCESS) {
-+ printk(KERN_NOTICE "btuart_cs: No usable port range found. Giving up.\n");
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (btuart_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ btuart_release((u_long) link);
-+}
-+
-+
-+void btuart_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ btuart_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ btuart_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int btuart_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ btuart_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ btuart_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ btuart_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_btuart_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "btuart_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &btuart_attach, &btuart_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_btuart_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ btuart_detach(dev_list);
-+}
-+
-+
-+module_init(init_btuart_cs);
-+module_exit(exit_btuart_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/Config.in linux-2.4.18-mh15/drivers/bluetooth/Config.in
---- linux-2.4.18/drivers/bluetooth/Config.in 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/bluetooth/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -1,8 +1,33 @@
-+#
-+# Bluetooth HCI device drivers configuration
-+#
-+
- mainmenu_option next_comment
- comment 'Bluetooth device drivers'
-
- dep_tristate 'HCI USB driver' CONFIG_BLUEZ_HCIUSB $CONFIG_BLUEZ $CONFIG_USB
-+if [ "$CONFIG_BLUEZ_HCIUSB" != "n" ]; then
-+ bool ' SCO (voice) support' CONFIG_BLUEZ_HCIUSB_SCO
-+fi
-+
- dep_tristate 'HCI UART driver' CONFIG_BLUEZ_HCIUART $CONFIG_BLUEZ
--dep_tristate 'HCI VHCI virtual HCI device driver' CONFIG_BLUEZ_HCIVHCI $CONFIG_BLUEZ
-+if [ "$CONFIG_BLUEZ_HCIUART" != "n" ]; then
-+ bool ' UART (H4) protocol support' CONFIG_BLUEZ_HCIUART_H4
-+ bool ' BCSP protocol support' CONFIG_BLUEZ_HCIUART_BCSP
-+ dep_bool ' Transmit CRC with every BCSP packet' CONFIG_BLUEZ_HCIUART_BCSP_TXCRC $CONFIG_BLUEZ_HCIUART_BCSP
-+fi
-+
-+dep_tristate 'HCI BlueFRITZ! USB driver' CONFIG_BLUEZ_HCIBFUSB $CONFIG_BLUEZ $CONFIG_USB
-+
-+dep_tristate 'HCI DTL1 (PC Card) driver' CONFIG_BLUEZ_HCIDTL1 $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI BT3C (PC Card) driver' CONFIG_BLUEZ_HCIBT3C $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI BlueCard (PC Card) driver' CONFIG_BLUEZ_HCIBLUECARD $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI UART (PC Card) driver' CONFIG_BLUEZ_HCIBTUART $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI VHCI (Virtual HCI device) driver' CONFIG_BLUEZ_HCIVHCI $CONFIG_BLUEZ
-
- endmenu
-+
-diff -urN linux-2.4.18/drivers/bluetooth/dtl1_cs.c linux-2.4.18-mh15/drivers/bluetooth/dtl1_cs.c
---- linux-2.4.18/drivers/bluetooth/dtl1_cs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/dtl1_cs.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,861 @@
-+/*
-+ *
-+ * A driver for Nokia Connectivity Card DTL-1 devices
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/skbuff.h>
-+#include <linux/string.h>
-+#include <linux/serial.h>
-+#include <linux/serial_reg.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0xffff;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ driver for Nokia Connectivity Card DTL-1");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct dtl1_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+
-+ unsigned long flowmask; /* HCI flow mask */
-+ int ri_latch;
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+} dtl1_info_t;
-+
-+
-+void dtl1_config(dev_link_t *link);
-+void dtl1_release(u_long arg);
-+int dtl1_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "dtl1_cs";
-+
-+dev_link_t *dtl1_attach(void);
-+void dtl1_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_WAITING 8
-+
-+/* Receiver States */
-+#define RECV_WAIT_NSH 0
-+#define RECV_WAIT_DATA 1
-+
-+
-+typedef struct {
-+ u8 type;
-+ u8 zero;
-+ u16 len;
-+} __attribute__ ((packed)) nsh_t; /* Nokia Specific Header */
-+
-+#define NSHL 4 /* Nokia Specific Header Length */
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int dtl1_write(unsigned int iobase, int fifo_size, __u8 *buf, int len)
-+{
-+ int actual = 0;
-+
-+ /* Tx FIFO should be empty */
-+ if (!(inb(iobase + UART_LSR) & UART_LSR_THRE))
-+ return 0;
-+
-+ /* Fill FIFO with current frame */
-+ while ((fifo_size-- > 0) && (actual < len)) {
-+ /* Transmit next byte */
-+ outb(buf[actual], iobase + UART_TX);
-+ actual++;
-+ }
-+
-+ return actual;
-+}
-+
-+
-+static void dtl1_write_wakeup(dtl1_info_t *info)
-+{
-+ if (!info) {
-+ printk(KERN_WARNING "dtl1_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (test_bit(XMIT_WAITING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ clear_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ return;
-+
-+ if (!(skb = skb_dequeue(&(info->txq))))
-+ break;
-+
-+ /* Send frame */
-+ len = dtl1_write(iobase, 32, skb->data, skb->len);
-+
-+ if (len == skb->len) {
-+ set_bit(XMIT_WAITING, &(info->tx_state));
-+ kfree_skb(skb);
-+ } else {
-+ skb_pull(skb, len);
-+ skb_queue_head(&(info->txq), skb);
-+ }
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
-+
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+}
-+
-+
-+static void dtl1_control(dtl1_info_t *info, struct sk_buff *skb)
-+{
-+ u8 flowmask = *(u8 *)skb->data;
-+ int i;
-+
-+ printk(KERN_INFO "dtl1_cs: Nokia control data = ");
-+ for (i = 0; i < skb->len; i++) {
-+ printk("%02x ", skb->data[i]);
-+ }
-+ printk("\n");
-+
-+ /* transition to active state */
-+ if (((info->flowmask & 0x07) == 0) && ((flowmask & 0x07) != 0)) {
-+ clear_bit(XMIT_WAITING, &(info->tx_state));
-+ dtl1_write_wakeup(info);
-+ }
-+
-+ info->flowmask = flowmask;
-+
-+ kfree_skb(skb);
-+}
-+
-+
-+static void dtl1_receive(dtl1_info_t *info)
-+{
-+ unsigned int iobase;
-+ nsh_t *nsh;
-+ int boguscount = 0;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "dtl1_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ do {
-+ info->hdev.stat.byte_rx++;
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL)
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "dtl1_cs: Can't allocate mem for new packet.\n");
-+ info->rx_state = RECV_WAIT_NSH;
-+ info->rx_count = NSHL;
-+ return;
-+ }
-+
-+ *skb_put(info->rx_skb, 1) = inb(iobase + UART_RX);
-+ nsh = (nsh_t *)info->rx_skb->data;
-+
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ switch (info->rx_state) {
-+ case RECV_WAIT_NSH:
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = nsh->len + (nsh->len & 0x0001);
-+ break;
-+ case RECV_WAIT_DATA:
-+ info->rx_skb->pkt_type = nsh->type;
-+
-+ /* remove PAD byte if it exists */
-+ if (nsh->len & 0x0001) {
-+ info->rx_skb->tail--;
-+ info->rx_skb->len--;
-+ }
-+
-+ /* remove NSH */
-+ skb_pull(info->rx_skb, NSHL);
-+
-+ switch (info->rx_skb->pkt_type) {
-+ case 0x80:
-+ /* control data for the Nokia Card */
-+ dtl1_control(info, info->rx_skb);
-+ break;
-+ case 0x82:
-+ case 0x83:
-+ case 0x84:
-+ /* send frame to the HCI layer */
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type &= 0x0f;
-+ hci_recv_frame(info->rx_skb);
-+ break;
-+ default:
-+ /* unknown packet */
-+ printk(KERN_WARNING "dtl1_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ kfree_skb(info->rx_skb);
-+ break;
-+ }
-+
-+ info->rx_state = RECV_WAIT_NSH;
-+ info->rx_count = NSHL;
-+ info->rx_skb = NULL;
-+ break;
-+ }
-+
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 32)
-+ break;
-+
-+ } while (inb(iobase + UART_LSR) & UART_LSR_DR);
-+}
-+
-+
-+void dtl1_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ dtl1_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ unsigned char msr;
-+ int boguscount = 0;
-+ int iir, lsr;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "dtl1_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+ while (iir) {
-+
-+ /* Clear interrupt */
-+ lsr = inb(iobase + UART_LSR);
-+
-+ switch (iir) {
-+ case UART_IIR_RLSI:
-+ printk(KERN_NOTICE "dtl1_cs: RLSI\n");
-+ break;
-+ case UART_IIR_RDI:
-+ /* Receive interrupt */
-+ dtl1_receive(info);
-+ break;
-+ case UART_IIR_THRI:
-+ if (lsr & UART_LSR_THRE) {
-+ /* Transmitter ready for data */
-+ dtl1_write_wakeup(info);
-+ }
-+ break;
-+ default:
-+ printk(KERN_NOTICE "dtl1_cs: Unhandled IIR=%#x\n", iir);
-+ break;
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 100)
-+ break;
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+
-+ }
-+
-+ msr = inb(iobase + UART_MSR);
-+
-+ if (info->ri_latch ^ (msr & UART_MSR_RI)) {
-+ info->ri_latch = msr & UART_MSR_RI;
-+ clear_bit(XMIT_WAITING, &(info->tx_state));
-+ dtl1_write_wakeup(info);
-+ }
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int dtl1_hci_open(struct hci_dev *hdev)
-+{
-+ set_bit(HCI_RUNNING, &(hdev->flags));
-+
-+ return 0;
-+}
-+
-+
-+static int dtl1_hci_flush(struct hci_dev *hdev)
-+{
-+ dtl1_info_t *info = (dtl1_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int dtl1_hci_close(struct hci_dev *hdev)
-+{
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ dtl1_hci_flush(hdev);
-+
-+ return 0;
-+}
-+
-+
-+static int dtl1_hci_send_frame(struct sk_buff *skb)
-+{
-+ dtl1_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+ struct sk_buff *s;
-+ nsh_t nsh;
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "dtl1_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (dtl1_info_t *)(hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ nsh.type = 0x81;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ nsh.type = 0x82;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ nsh.type = 0x83;
-+ break;
-+ };
-+
-+ nsh.zero = 0;
-+ nsh.len = skb->len;
-+
-+ s = bluez_skb_alloc(NSHL + skb->len + 1, GFP_ATOMIC);
-+ skb_reserve(s, NSHL);
-+ memcpy(skb_put(s, skb->len), skb->data, skb->len);
-+ if (skb->len & 0x0001)
-+ *skb_put(s, 1) = 0; /* PAD */
-+
-+ /* Prepend skb with Nokia frame header and queue */
-+ memcpy(skb_push(s, NSHL), &nsh, NSHL);
-+ skb_queue_tail(&(info->txq), s);
-+
-+ dtl1_write_wakeup(info);
-+
-+ kfree_skb(skb);
-+
-+ return 0;
-+}
-+
-+
-+static void dtl1_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int dtl1_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+int dtl1_open(dtl1_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_NSH;
-+ info->rx_count = NSHL;
-+ info->rx_skb = NULL;
-+
-+ set_bit(XMIT_WAITING, &(info->tx_state));
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ /* Initialize UART */
-+ outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */
-+ outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR);
-+
-+ info->ri_latch = inb(info->link.io.BasePort1 + UART_MSR) & UART_MSR_RI;
-+
-+ /* Turn on interrupts */
-+ outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ * 2);
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = dtl1_hci_open;
-+ hdev->close = dtl1_hci_close;
-+ hdev->flush = dtl1_hci_flush;
-+ hdev->send = dtl1_hci_send_frame;
-+ hdev->destruct = dtl1_hci_destruct;
-+ hdev->ioctl = dtl1_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "dtl1_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int dtl1_close(dtl1_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
-+ dtl1_hci_close(hdev);
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "dtl1_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *dtl1_attach(void)
-+{
-+ dtl1_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &dtl1_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = dtl1_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &dtl1_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ dtl1_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void dtl1_detach(dev_link_t *link)
-+{
-+ dtl1_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+ if (link->state & DEV_CONFIG)
-+ dtl1_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void dtl1_config(dev_link_t *link)
-+{
-+ client_handle_t handle = link->handle;
-+ dtl1_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
-+ int i, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-+
-+ /* Look for a generic full-sized window */
-+ link->io.NumPorts1 = 8;
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if ((i == CS_SUCCESS) && (cf->io.nwin == 1) && (cf->io.win[0].len > 8)) {
-+ link->conf.ConfigIndex = cf->index;
-+ link->io.BasePort1 = cf->io.win[0].base;
-+ link->io.NumPorts1 = cf->io.win[0].len; /*yo */
-+ link->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ break;
-+ }
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (dtl1_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ dtl1_release((u_long)link);
-+}
-+
-+
-+void dtl1_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ dtl1_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ dtl1_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int dtl1_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ dtl1_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ dtl1_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ dtl1_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_dtl1_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "dtl1_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &dtl1_attach, &dtl1_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_dtl1_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ dtl1_detach(dev_list);
-+}
-+
-+
-+module_init(init_dtl1_cs);
-+module_exit(exit_dtl1_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/hci_bcsp.c linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.c
---- linux-2.4.18/drivers/bluetooth/hci_bcsp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,710 @@
-+/*
-+ BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ).
-+ Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com>
-+
-+ Based on
-+ hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com>
-+ ABCSP by Carl Orsborn <cjo@csr.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_bcsp.c,v 1.2 2002/09/26 05:05:14 maxk Exp $
-+ */
-+
-+#define VERSION "0.1"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/poll.h>
-+
-+#include <linux/slab.h>
-+#include <linux/tty.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/signal.h>
-+#include <linux/ioctl.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include "hci_uart.h"
-+#include "hci_bcsp.h"
-+
-+#ifndef HCI_UART_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
-+#endif
-+
-+/* ---- BCSP CRC calculation ---- */
-+
-+/* Table for calculating CRC for polynomial 0x1021, LSB processed first,
-+initial value 0xffff, bits shifted in reverse order. */
-+
-+static const u16 crc_table[] = {
-+ 0x0000, 0x1081, 0x2102, 0x3183,
-+ 0x4204, 0x5285, 0x6306, 0x7387,
-+ 0x8408, 0x9489, 0xa50a, 0xb58b,
-+ 0xc60c, 0xd68d, 0xe70e, 0xf78f
-+};
-+
-+/* Initialise the crc calculator */
-+#define BCSP_CRC_INIT(x) x = 0xffff
-+
-+/*
-+ Update crc with next data byte
-+
-+ Implementation note
-+ The data byte is treated as two nibbles. The crc is generated
-+ in reverse, i.e., bits are fed into the register from the top.
-+*/
-+static void bcsp_crc_update(u16 *crc, u8 d)
-+{
-+ u16 reg = *crc;
-+
-+ reg = (reg >> 4) ^ crc_table[(reg ^ d) & 0x000f];
-+ reg = (reg >> 4) ^ crc_table[(reg ^ (d >> 4)) & 0x000f];
-+
-+ *crc = reg;
-+}
-+
-+/*
-+ Get reverse of generated crc
-+
-+ Implementation note
-+ The crc generator (bcsp_crc_init() and bcsp_crc_update())
-+ creates a reversed crc, so it needs to be swapped back before
-+ being passed on.
-+*/
-+static u16 bcsp_crc_reverse(u16 crc)
-+{
-+ u16 b, rev;
-+
-+ for (b = 0, rev = 0; b < 16; b++) {
-+ rev = rev << 1;
-+ rev |= (crc & 1);
-+ crc = crc >> 1;
-+ }
-+ return (rev);
-+}
-+
-+/* ---- BCSP core ---- */
-+
-+static void bcsp_slip_msgdelim(struct sk_buff *skb)
-+{
-+ const char pkt_delim = 0xc0;
-+ memcpy(skb_put(skb, 1), &pkt_delim, 1);
-+}
-+
-+static void bcsp_slip_one_byte(struct sk_buff *skb, u8 c)
-+{
-+ const char esc_c0[2] = { 0xdb, 0xdc };
-+ const char esc_db[2] = { 0xdb, 0xdd };
-+
-+ switch (c) {
-+ case 0xc0:
-+ memcpy(skb_put(skb, 2), &esc_c0, 2);
-+ break;
-+ case 0xdb:
-+ memcpy(skb_put(skb, 2), &esc_db, 2);
-+ break;
-+ default:
-+ memcpy(skb_put(skb, 1), &c, 1);
-+ }
-+}
-+
-+static int bcsp_enqueue(struct hci_uart *hu, struct sk_buff *skb)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+
-+ if (skb->len > 0xFFF) {
-+ BT_ERR("Packet too long");
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+
-+ switch (skb->pkt_type) {
-+ case HCI_ACLDATA_PKT:
-+ case HCI_COMMAND_PKT:
-+ skb_queue_tail(&bcsp->rel, skb);
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ skb_queue_tail(&bcsp->unrel, skb);
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown packet type");
-+ kfree_skb(skb);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data,
-+ int len, int pkt_type)
-+{
-+ struct sk_buff *nskb;
-+ u8 hdr[4], chan;
-+ int rel, i;
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ u16 BCSP_CRC_INIT(bcsp_txmsg_crc);
-+#endif
-+
-+ switch (pkt_type) {
-+ case HCI_ACLDATA_PKT:
-+ chan = 6; /* BCSP ACL channel */
-+ rel = 1; /* reliable channel */
-+ break;
-+ case HCI_COMMAND_PKT:
-+ chan = 5; /* BCSP cmd/evt channel */
-+ rel = 1; /* reliable channel */
-+ break;
-+ case HCI_SCODATA_PKT:
-+ chan = 7; /* BCSP SCO channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ case BCSP_LE_PKT:
-+ chan = 1; /* BCSP LE channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ case BCSP_ACK_PKT:
-+ chan = 0; /* BCSP internal channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ default:
-+ BT_ERR("Unknown packet type");
-+ return NULL;
-+ }
-+
-+ /* Max len of packet: (original len +4(bcsp hdr) +2(crc))*2
-+ (because bytes 0xc0 and 0xdb are escaped, worst case is
-+ when the packet is all made of 0xc0 and 0xdb :) )
-+ + 2 (0xc0 delimiters at start and end). */
-+
-+ nskb = alloc_skb((len + 6) * 2 + 2, GFP_ATOMIC);
-+ if (!nskb)
-+ return NULL;
-+
-+ nskb->pkt_type = pkt_type;
-+
-+ bcsp_slip_msgdelim(nskb);
-+
-+ hdr[0] = bcsp->rxseq_txack << 3;
-+ bcsp->txack_req = 0;
-+ BT_DBG("We request packet no %u to card", bcsp->rxseq_txack);
-+
-+ if (rel) {
-+ hdr[0] |= 0x80 + bcsp->msgq_txseq;
-+ BT_DBG("Sending packet with seqno %u", bcsp->msgq_txseq);
-+ bcsp->msgq_txseq = ++(bcsp->msgq_txseq) & 0x07;
-+ }
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ hdr[0] |= 0x40;
-+#endif
-+
-+ hdr[1] = (len << 4) & 0xFF;
-+ hdr[1] |= chan;
-+ hdr[2] = len >> 4;
-+ hdr[3] = ~(hdr[0] + hdr[1] + hdr[2]);
-+
-+ /* Put BCSP header */
-+ for (i = 0; i < 4; i++) {
-+ bcsp_slip_one_byte(nskb, hdr[i]);
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ bcsp_crc_update(&bcsp_txmsg_crc, hdr[i]);
-+#endif
-+ }
-+
-+ /* Put payload */
-+ for (i = 0; i < len; i++) {
-+ bcsp_slip_one_byte(nskb, data[i]);
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ bcsp_crc_update(&bcsp_txmsg_crc, data[i]);
-+#endif
-+ }
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ /* Put CRC */
-+ bcsp_txmsg_crc = bcsp_crc_reverse(bcsp_txmsg_crc);
-+ bcsp_slip_one_byte(nskb, (u8) ((bcsp_txmsg_crc >> 8) & 0x00ff));
-+ bcsp_slip_one_byte(nskb, (u8) (bcsp_txmsg_crc & 0x00ff));
-+#endif
-+
-+ bcsp_slip_msgdelim(nskb);
-+ return nskb;
-+}
-+
-+/* This is a rewrite of pkt_avail in ABCSP */
-+static struct sk_buff *bcsp_dequeue(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = (struct bcsp_struct *) hu->priv;
-+ unsigned long flags;
-+ struct sk_buff *skb;
-+
-+ /* First of all, check for unreliable messages in the queue,
-+ since they have priority */
-+
-+ if ((skb = skb_dequeue(&bcsp->unrel)) != NULL) {
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, skb->data, skb->len, skb->pkt_type);
-+ if (nskb) {
-+ kfree_skb(skb);
-+ return nskb;
-+ } else {
-+ skb_queue_head(&bcsp->unrel, skb);
-+ BT_ERR("Could not dequeue pkt because alloc_skb failed");
-+ }
-+ }
-+
-+ /* Now, try to send a reliable pkt. We can only send a
-+ reliable packet if the number of packets sent but not yet ack'ed
-+ is < than the winsize */
-+
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ if (bcsp->unack.qlen < BCSP_TXWINSIZE && (skb = skb_dequeue(&bcsp->rel)) != NULL) {
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, skb->data, skb->len, skb->pkt_type);
-+ if (nskb) {
-+ __skb_queue_tail(&bcsp->unack, skb);
-+ mod_timer(&bcsp->tbcsp, jiffies + HZ / 4);
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+ return nskb;
-+ } else {
-+ skb_queue_head(&bcsp->rel, skb);
-+ BT_ERR("Could not dequeue pkt because alloc_skb failed");
-+ }
-+ }
-+
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+
-+ /* We could not send a reliable packet, either because there are
-+ none or because there are too many unack'ed pkts. Did we receive
-+ any packets we have not acknowledged yet ? */
-+
-+ if (bcsp->txack_req) {
-+ /* if so, craft an empty ACK pkt and send it on BCSP unreliable
-+ channel 0 */
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, NULL, 0, BCSP_ACK_PKT);
-+ return nskb;
-+ }
-+
-+ /* We have nothing to send */
-+ return NULL;
-+}
-+
-+static int bcsp_flush(struct hci_uart *hu)
-+{
-+ BT_DBG("hu %p", hu);
-+ return 0;
-+}
-+
-+/* Remove ack'ed packets */
-+static void bcsp_pkt_cull(struct bcsp_struct *bcsp)
-+{
-+ unsigned long flags;
-+ struct sk_buff *skb;
-+ int i, pkts_to_be_removed;
-+ u8 seqno;
-+
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ pkts_to_be_removed = bcsp->unack.qlen;
-+ seqno = bcsp->msgq_txseq;
-+
-+ while (pkts_to_be_removed) {
-+ if (bcsp->rxack == seqno)
-+ break;
-+ pkts_to_be_removed--;
-+ seqno = (seqno - 1) & 0x07;
-+ }
-+
-+ if (bcsp->rxack != seqno)
-+ BT_ERR("Peer acked invalid packet");
-+
-+ BT_DBG("Removing %u pkts out of %u, up to seqno %u",
-+ pkts_to_be_removed, bcsp->unack.qlen, (seqno - 1) & 0x07);
-+
-+ for (i = 0, skb = ((struct sk_buff *) &bcsp->unack)->next; i < pkts_to_be_removed
-+ && skb != (struct sk_buff *) &bcsp->unack; i++) {
-+ struct sk_buff *nskb;
-+
-+ nskb = skb->next;
-+ __skb_unlink(skb, &bcsp->unack);
-+ kfree_skb(skb);
-+ skb = nskb;
-+ }
-+ if (bcsp->unack.qlen == 0)
-+ del_timer(&bcsp->tbcsp);
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+ if (i != pkts_to_be_removed)
-+ BT_ERR("Removed only %u out of %u pkts", i, pkts_to_be_removed);
-+}
-+
-+/* Handle BCSP link-establishment packets. When we
-+ detect a "sync" packet, symptom that the BT module has reset,
-+ we do nothing :) (yet) */
-+static void bcsp_handle_le_pkt(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ u8 conf_pkt[4] = { 0xad, 0xef, 0xac, 0xed };
-+ u8 conf_rsp_pkt[4] = { 0xde, 0xad, 0xd0, 0xd0 };
-+ u8 sync_pkt[4] = { 0xda, 0xdc, 0xed, 0xed };
-+
-+ /* spot "conf" pkts and reply with a "conf rsp" pkt */
-+ if (bcsp->rx_skb->data[1] >> 4 == 4 && bcsp->rx_skb->data[2] == 0 &&
-+ !memcmp(&bcsp->rx_skb->data[4], conf_pkt, 4)) {
-+ struct sk_buff *nskb = alloc_skb(4, GFP_ATOMIC);
-+
-+ BT_DBG("Found a LE conf pkt");
-+ if (!nskb)
-+ return;
-+ memcpy(skb_put(nskb, 4), conf_rsp_pkt, 4);
-+ nskb->pkt_type = BCSP_LE_PKT;
-+
-+ skb_queue_head(&bcsp->unrel, nskb);
-+ hci_uart_tx_wakeup(hu);
-+ }
-+ /* Spot "sync" pkts. If we find one...disaster! */
-+ else if (bcsp->rx_skb->data[1] >> 4 == 4 && bcsp->rx_skb->data[2] == 0 &&
-+ !memcmp(&bcsp->rx_skb->data[4], sync_pkt, 4)) {
-+ BT_ERR("Found a LE sync pkt, card has reset");
-+ }
-+}
-+
-+static inline void bcsp_unslip_one_byte(struct bcsp_struct *bcsp, unsigned char byte)
-+{
-+ const u8 c0 = 0xc0, db = 0xdb;
-+
-+ switch (bcsp->rx_esc_state) {
-+ case BCSP_ESCSTATE_NOESC:
-+ switch (byte) {
-+ case 0xdb:
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_ESC;
-+ break;
-+ default:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &byte, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp->message_crc, byte);
-+ bcsp->rx_count--;
-+ }
-+ break;
-+
-+ case BCSP_ESCSTATE_ESC:
-+ switch (byte) {
-+ case 0xdc:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &c0, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp-> message_crc, 0xc0);
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ bcsp->rx_count--;
-+ break;
-+
-+ case 0xdd:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &db, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp-> message_crc, 0xdb);
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ bcsp->rx_count--;
-+ break;
-+
-+ default:
-+ BT_ERR ("Invalid byte %02x after esc byte", byte);
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_skb = NULL;
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ }
-+ }
-+}
-+
-+static inline void bcsp_complete_rx_pkt(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ int pass_up;
-+
-+ if (bcsp->rx_skb->data[0] & 0x80) { /* reliable pkt */
-+ BT_DBG("Received seqno %u from card", bcsp->rxseq_txack);
-+ bcsp->rxseq_txack++;
-+ bcsp->rxseq_txack %= 0x8;
-+ bcsp->txack_req = 1;
-+
-+ /* If needed, transmit an ack pkt */
-+ hci_uart_tx_wakeup(hu);
-+ }
-+
-+ bcsp->rxack = (bcsp->rx_skb->data[0] >> 3) & 0x07;
-+ BT_DBG("Request for pkt %u from card", bcsp->rxack);
-+
-+ bcsp_pkt_cull(bcsp);
-+ if ((bcsp->rx_skb->data[1] & 0x0f) == 6 &&
-+ bcsp->rx_skb->data[0] & 0x80) {
-+ bcsp->rx_skb->pkt_type = HCI_ACLDATA_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 5 &&
-+ bcsp->rx_skb->data[0] & 0x80) {
-+ bcsp->rx_skb->pkt_type = HCI_EVENT_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 7) {
-+ bcsp->rx_skb->pkt_type = HCI_SCODATA_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 1 &&
-+ !(bcsp->rx_skb->data[0] & 0x80)) {
-+ bcsp_handle_le_pkt(hu);
-+ pass_up = 0;
-+ } else
-+ pass_up = 0;
-+
-+ if (!pass_up) {
-+ if ((bcsp->rx_skb->data[1] & 0x0f) != 0 &&
-+ (bcsp->rx_skb->data[1] & 0x0f) != 1) {
-+ BT_ERR ("Packet for unknown channel (%u %s)",
-+ bcsp->rx_skb->data[1] & 0x0f,
-+ bcsp->rx_skb->data[0] & 0x80 ?
-+ "reliable" : "unreliable");
-+ }
-+ kfree_skb(bcsp->rx_skb);
-+ } else {
-+ /* Pull out BCSP hdr */
-+ skb_pull(bcsp->rx_skb, 4);
-+
-+ hci_recv_frame(bcsp->rx_skb);
-+ }
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_skb = NULL;
-+}
-+
-+/* Recv data */
-+static int bcsp_recv(struct hci_uart *hu, void *data, int count)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ register unsigned char *ptr;
-+
-+ BT_DBG("hu %p count %d rx_state %ld rx_count %ld",
-+ hu, count, bcsp->rx_state, bcsp->rx_count);
-+
-+ ptr = data;
-+ while (count) {
-+ if (bcsp->rx_count) {
-+ if (*ptr == 0xc0) {
-+ BT_ERR("Short BCSP packet");
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_START;
-+ bcsp->rx_count = 0;
-+ } else
-+ bcsp_unslip_one_byte(bcsp, *ptr);
-+
-+ ptr++; count--;
-+ continue;
-+ }
-+
-+ switch (bcsp->rx_state) {
-+ case BCSP_W4_BCSP_HDR:
-+ if ((0xff & (u8) ~ (bcsp->rx_skb->data[0] + bcsp->rx_skb->data[1] +
-+ bcsp->rx_skb->data[2])) != bcsp->rx_skb->data[3]) {
-+ BT_ERR("Error in BCSP hdr checksum");
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ if (bcsp->rx_skb->data[0] & 0x80 /* reliable pkt */
-+ && (bcsp->rx_skb->data[0] & 0x07) != bcsp->rxseq_txack) {
-+ BT_ERR ("Out-of-order packet arrived, got %u expected %u",
-+ bcsp->rx_skb->data[0] & 0x07, bcsp->rxseq_txack);
-+
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ bcsp->rx_state = BCSP_W4_DATA;
-+ bcsp->rx_count = (bcsp->rx_skb->data[1] >> 4) +
-+ (bcsp->rx_skb->data[2] << 4); /* May be 0 */
-+ continue;
-+
-+ case BCSP_W4_DATA:
-+ if (bcsp->rx_skb->data[0] & 0x40) { /* pkt with crc */
-+ bcsp->rx_state = BCSP_W4_CRC;
-+ bcsp->rx_count = 2;
-+ } else
-+ bcsp_complete_rx_pkt(hu);
-+ continue;
-+
-+ case BCSP_W4_CRC:
-+ if (bcsp_crc_reverse(bcsp->message_crc) !=
-+ (bcsp->rx_skb->data[bcsp->rx_skb->len - 2] << 8) +
-+ bcsp->rx_skb->data[bcsp->rx_skb->len - 1]) {
-+
-+ BT_ERR ("Checksum failed: computed %04x received %04x",
-+ bcsp_crc_reverse(bcsp->message_crc),
-+ (bcsp->rx_skb-> data[bcsp->rx_skb->len - 2] << 8) +
-+ bcsp->rx_skb->data[bcsp->rx_skb->len - 1]);
-+
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ skb_trim(bcsp->rx_skb, bcsp->rx_skb->len - 2);
-+ bcsp_complete_rx_pkt(hu);
-+ continue;
-+
-+ case BCSP_W4_PKT_DELIMITER:
-+ switch (*ptr) {
-+ case 0xc0:
-+ bcsp->rx_state = BCSP_W4_PKT_START;
-+ break;
-+ default:
-+ /*BT_ERR("Ignoring byte %02x", *ptr);*/
-+ break;
-+ }
-+ ptr++; count--;
-+ break;
-+
-+ case BCSP_W4_PKT_START:
-+ switch (*ptr) {
-+ case 0xc0:
-+ ptr++; count--;
-+ break;
-+
-+ default:
-+ bcsp->rx_state = BCSP_W4_BCSP_HDR;
-+ bcsp->rx_count = 4;
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ BCSP_CRC_INIT(bcsp->message_crc);
-+
-+ /* Do not increment ptr or decrement count
-+ * Allocate packet. Max len of a BCSP pkt=
-+ * 0xFFF (payload) +4 (header) +2 (crc) */
-+
-+ bcsp->rx_skb = bluez_skb_alloc(0x1005, GFP_ATOMIC);
-+ if (!bcsp->rx_skb) {
-+ BT_ERR("Can't allocate mem for new packet");
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ return 0;
-+ }
-+ bcsp->rx_skb->dev = (void *) &hu->hdev;
-+ break;
-+ }
-+ break;
-+ }
-+ }
-+ return count;
-+}
-+
-+ /* Arrange to retransmit all messages in the relq. */
-+static void bcsp_timed_event(unsigned long arg)
-+{
-+ struct hci_uart *hu = (struct hci_uart *) arg;
-+ struct bcsp_struct *bcsp = (struct bcsp_struct *) hu->priv;
-+ struct sk_buff *skb;
-+ unsigned long flags;
-+
-+ BT_DBG("hu %p retransmitting %u pkts", hu, bcsp->unack.qlen);
-+
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ while ((skb = __skb_dequeue_tail(&bcsp->unack)) != NULL) {
-+ bcsp->msgq_txseq = (bcsp->msgq_txseq - 1) & 0x07;
-+ skb_queue_head(&bcsp->rel, skb);
-+ }
-+
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+ hci_uart_tx_wakeup(hu);
-+}
-+
-+static int bcsp_open(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ bcsp = kmalloc(sizeof(*bcsp), GFP_ATOMIC);
-+ if (!bcsp)
-+ return -ENOMEM;
-+ memset(bcsp, 0, sizeof(*bcsp));
-+
-+ hu->priv = bcsp;
-+ skb_queue_head_init(&bcsp->unack);
-+ skb_queue_head_init(&bcsp->rel);
-+ skb_queue_head_init(&bcsp->unrel);
-+
-+ init_timer(&bcsp->tbcsp);
-+ bcsp->tbcsp.function = bcsp_timed_event;
-+ bcsp->tbcsp.data = (u_long) hu;
-+
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+
-+ return 0;
-+}
-+
-+static int bcsp_close(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ hu->priv = NULL;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ skb_queue_purge(&bcsp->unack);
-+ skb_queue_purge(&bcsp->rel);
-+ skb_queue_purge(&bcsp->unrel);
-+ del_timer(&bcsp->tbcsp);
-+
-+ kfree(bcsp);
-+ return 0;
-+}
-+
-+static struct hci_uart_proto bcsp = {
-+ id: HCI_UART_BCSP,
-+ open: bcsp_open,
-+ close: bcsp_close,
-+ enqueue: bcsp_enqueue,
-+ dequeue: bcsp_dequeue,
-+ recv: bcsp_recv,
-+ flush: bcsp_flush
-+};
-+
-+int bcsp_init(void)
-+{
-+ return hci_uart_register_proto(&bcsp);
-+}
-+
-+int bcsp_deinit(void)
-+{
-+ return hci_uart_unregister_proto(&bcsp);
-+}
-diff -urN linux-2.4.18/drivers/bluetooth/hci_bcsp.h linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.h
---- linux-2.4.18/drivers/bluetooth/hci_bcsp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,70 @@
-+/*
-+ BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ).
-+ Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com>
-+
-+ Based on
-+ hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com>
-+ ABCSP by Carl Orsborn <cjo@csr.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_bcsp.h,v 1.2 2002/09/26 05:05:14 maxk Exp $
-+ */
-+
-+#ifndef __HCI_BCSP_H__
-+#define __HCI_BCSP_H__
-+
-+#define BCSP_TXWINSIZE 4
-+
-+#define BCSP_ACK_PKT 0x05
-+#define BCSP_LE_PKT 0x06
-+
-+struct bcsp_struct {
-+ struct sk_buff_head unack; /* Unack'ed packets queue */
-+ struct sk_buff_head rel; /* Reliable packets queue */
-+ struct sk_buff_head unrel; /* Unreliable packets queue */
-+
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+ u8 rxseq_txack; /* rxseq == txack. */
-+ u8 rxack; /* Last packet sent by us that the peer ack'ed */
-+ struct timer_list tbcsp;
-+
-+ enum {
-+ BCSP_W4_PKT_DELIMITER,
-+ BCSP_W4_PKT_START,
-+ BCSP_W4_BCSP_HDR,
-+ BCSP_W4_DATA,
-+ BCSP_W4_CRC
-+ } rx_state;
-+
-+ enum {
-+ BCSP_ESCSTATE_NOESC,
-+ BCSP_ESCSTATE_ESC
-+ } rx_esc_state;
-+
-+ u16 message_crc;
-+ u8 txack_req; /* Do we need to send ack's to the peer? */
-+
-+ /* Reliable packet sequence number - used to assign seq to each rel pkt. */
-+ u8 msgq_txseq;
-+};
-+
-+#endif /* __HCI_BCSP_H__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_h4.c linux-2.4.18-mh15/drivers/bluetooth/hci_h4.c
---- linux-2.4.18/drivers/bluetooth/hci_h4.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_h4.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,277 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ HCI UART(H4) protocol.
-+ *
-+ * $Id: hci_h4.c,v 1.3 2002/09/09 01:17:32 maxk Exp $
-+ */
-+#define VERSION "1.2"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/poll.h>
-+
-+#include <linux/slab.h>
-+#include <linux/tty.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/signal.h>
-+#include <linux/ioctl.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include "hci_uart.h"
-+#include "hci_h4.h"
-+
-+#ifndef HCI_UART_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
-+#endif
-+
-+/* Initialize protocol */
-+static int h4_open(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ h4 = kmalloc(sizeof(*h4), GFP_ATOMIC);
-+ if (!h4)
-+ return -ENOMEM;
-+ memset(h4, 0, sizeof(*h4));
-+
-+ skb_queue_head_init(&h4->txq);
-+
-+ hu->priv = h4;
-+ return 0;
-+}
-+
-+/* Flush protocol data */
-+static int h4_flush(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+
-+ BT_DBG("hu %p", hu);
-+ skb_queue_purge(&h4->txq);
-+ return 0;
-+}
-+
-+/* Close protocol */
-+static int h4_close(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+ hu->priv = NULL;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ skb_queue_purge(&h4->txq);
-+ if (h4->rx_skb)
-+ kfree_skb(h4->rx_skb);
-+
-+ hu->priv = NULL;
-+ kfree(h4);
-+ return 0;
-+}
-+
-+/* Enqueue frame for transmittion (padding, crc, etc) */
-+static int h4_enqueue(struct hci_uart *hu, struct sk_buff *skb)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+
-+ BT_DBG("hu %p skb %p", hu, skb);
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &skb->pkt_type, 1);
-+ skb_queue_tail(&h4->txq, skb);
-+ return 0;
-+}
-+
-+static inline int h4_check_data_len(struct h4_struct *h4, int len)
-+{
-+ register int room = skb_tailroom(h4->rx_skb);
-+
-+ BT_DBG("len %d room %d", len, room);
-+ if (!len) {
-+ BT_DMP(h4->rx_skb->data, h4->rx_skb->len);
-+ hci_recv_frame(h4->rx_skb);
-+ } else if (len > room) {
-+ BT_ERR("Data length is too large");
-+ kfree_skb(h4->rx_skb);
-+ } else {
-+ h4->rx_state = H4_W4_DATA;
-+ h4->rx_count = len;
-+ return len;
-+ }
-+
-+ h4->rx_state = H4_W4_PACKET_TYPE;
-+ h4->rx_skb = NULL;
-+ h4->rx_count = 0;
-+ return 0;
-+}
-+
-+/* Recv data */
-+static int h4_recv(struct hci_uart *hu, void *data, int count)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+ register char *ptr;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+ register int len, type, dlen;
-+
-+ BT_DBG("hu %p count %d rx_state %ld rx_count %ld",
-+ hu, count, h4->rx_state, h4->rx_count);
-+
-+ ptr = data;
-+ while (count) {
-+ if (h4->rx_count) {
-+ len = MIN(h4->rx_count, count);
-+ memcpy(skb_put(h4->rx_skb, len), ptr, len);
-+ h4->rx_count -= len; count -= len; ptr += len;
-+
-+ if (h4->rx_count)
-+ continue;
-+
-+ switch (h4->rx_state) {
-+ case H4_W4_DATA:
-+ BT_DBG("Complete data");
-+
-+ BT_DMP(h4->rx_skb->data, h4->rx_skb->len);
-+
-+ hci_recv_frame(h4->rx_skb);
-+
-+ h4->rx_state = H4_W4_PACKET_TYPE;
-+ h4->rx_skb = NULL;
-+ continue;
-+
-+ case H4_W4_EVENT_HDR:
-+ eh = (hci_event_hdr *) h4->rx_skb->data;
-+
-+ BT_DBG("Event header: evt 0x%2.2x plen %d", eh->evt, eh->plen);
-+
-+ h4_check_data_len(h4, eh->plen);
-+ continue;
-+
-+ case H4_W4_ACL_HDR:
-+ ah = (hci_acl_hdr *) h4->rx_skb->data;
-+ dlen = __le16_to_cpu(ah->dlen);
-+
-+ BT_DBG("ACL header: dlen %d", dlen);
-+
-+ h4_check_data_len(h4, dlen);
-+ continue;
-+
-+ case H4_W4_SCO_HDR:
-+ sh = (hci_sco_hdr *) h4->rx_skb->data;
-+
-+ BT_DBG("SCO header: dlen %d", sh->dlen);
-+
-+ h4_check_data_len(h4, sh->dlen);
-+ continue;
-+ }
-+ }
-+
-+ /* H4_W4_PACKET_TYPE */
-+ switch (*ptr) {
-+ case HCI_EVENT_PKT:
-+ BT_DBG("Event packet");
-+ h4->rx_state = H4_W4_EVENT_HDR;
-+ h4->rx_count = HCI_EVENT_HDR_SIZE;
-+ type = HCI_EVENT_PKT;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ BT_DBG("ACL packet");
-+ h4->rx_state = H4_W4_ACL_HDR;
-+ h4->rx_count = HCI_ACL_HDR_SIZE;
-+ type = HCI_ACLDATA_PKT;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ BT_DBG("SCO packet");
-+ h4->rx_state = H4_W4_SCO_HDR;
-+ h4->rx_count = HCI_SCO_HDR_SIZE;
-+ type = HCI_SCODATA_PKT;
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown HCI packet type %2.2x", (__u8)*ptr);
-+ hu->hdev.stat.err_rx++;
-+ ptr++; count--;
-+ continue;
-+ };
-+ ptr++; count--;
-+
-+ /* Allocate packet */
-+ h4->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC);
-+ if (!h4->rx_skb) {
-+ BT_ERR("Can't allocate mem for new packet");
-+ h4->rx_state = H4_W4_PACKET_TYPE;
-+ h4->rx_count = 0;
-+ return 0;
-+ }
-+ h4->rx_skb->dev = (void *) &hu->hdev;
-+ h4->rx_skb->pkt_type = type;
-+ }
-+ return count;
-+}
-+
-+static struct sk_buff *h4_dequeue(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+ return skb_dequeue(&h4->txq);
-+}
-+
-+static struct hci_uart_proto h4p = {
-+ id: HCI_UART_H4,
-+ open: h4_open,
-+ close: h4_close,
-+ recv: h4_recv,
-+ enqueue: h4_enqueue,
-+ dequeue: h4_dequeue,
-+ flush: h4_flush,
-+};
-+
-+int h4_init(void)
-+{
-+ return hci_uart_register_proto(&h4p);
-+}
-+
-+int h4_deinit(void)
-+{
-+ return hci_uart_unregister_proto(&h4p);
-+}
-diff -urN linux-2.4.18/drivers/bluetooth/hci_h4.h linux-2.4.18-mh15/drivers/bluetooth/hci_h4.h
---- linux-2.4.18/drivers/bluetooth/hci_h4.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_h4.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,44 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_h4.h,v 1.2 2002/09/09 01:17:32 maxk Exp $
-+ */
-+
-+#ifdef __KERNEL__
-+struct h4_struct {
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+ struct sk_buff_head txq;
-+};
-+
-+/* H4 receiver States */
-+#define H4_W4_PACKET_TYPE 0
-+#define H4_W4_EVENT_HDR 1
-+#define H4_W4_ACL_HDR 2
-+#define H4_W4_SCO_HDR 3
-+#define H4_W4_DATA 4
-+
-+#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_ldisc.c linux-2.4.18-mh15/drivers/bluetooth/hci_ldisc.c
---- linux-2.4.18/drivers/bluetooth/hci_ldisc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_ldisc.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,579 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ HCI UART driver.
-+ *
-+ * $Id: hci_ldisc.c,v 1.5 2002/10/02 18:37:20 maxk Exp $
-+ */
-+#define VERSION "2.1"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/poll.h>
-+
-+#include <linux/slab.h>
-+#include <linux/tty.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/signal.h>
-+#include <linux/ioctl.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include "hci_uart.h"
-+
-+#ifndef HCI_UART_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
-+#endif
-+
-+static struct hci_uart_proto *hup[HCI_UART_MAX_PROTO];
-+
-+int hci_uart_register_proto(struct hci_uart_proto *p)
-+{
-+ if (p->id >= HCI_UART_MAX_PROTO)
-+ return -EINVAL;
-+
-+ if (hup[p->id])
-+ return -EEXIST;
-+
-+ hup[p->id] = p;
-+ return 0;
-+}
-+
-+int hci_uart_unregister_proto(struct hci_uart_proto *p)
-+{
-+ if (p->id >= HCI_UART_MAX_PROTO)
-+ return -EINVAL;
-+
-+ if (!hup[p->id])
-+ return -EINVAL;
-+
-+ hup[p->id] = NULL;
-+ return 0;
-+}
-+
-+static struct hci_uart_proto *hci_uart_get_proto(unsigned int id)
-+{
-+ if (id >= HCI_UART_MAX_PROTO)
-+ return NULL;
-+ return hup[id];
-+}
-+
-+static inline void hci_uart_tx_complete(struct hci_uart *hu, int pkt_type)
-+{
-+ struct hci_dev *hdev = &hu->hdev;
-+
-+ /* Update HCI stat counters */
-+ switch (pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ }
-+}
-+
-+static inline struct sk_buff *hci_uart_dequeue(struct hci_uart *hu)
-+{
-+ struct sk_buff *skb = hu->tx_skb;
-+ if (!skb)
-+ skb = hu->proto->dequeue(hu);
-+ else
-+ hu->tx_skb = NULL;
-+ return skb;
-+}
-+
-+int hci_uart_tx_wakeup(struct hci_uart *hu)
-+{
-+ struct tty_struct *tty = hu->tty;
-+ struct hci_dev *hdev = &hu->hdev;
-+ struct sk_buff *skb;
-+
-+ if (test_and_set_bit(HCI_UART_SENDING, &hu->tx_state)) {
-+ set_bit(HCI_UART_TX_WAKEUP, &hu->tx_state);
-+ return 0;
-+ }
-+
-+ BT_DBG("");
-+
-+restart:
-+ clear_bit(HCI_UART_TX_WAKEUP, &hu->tx_state);
-+
-+ while ((skb = hci_uart_dequeue(hu))) {
-+ int len;
-+
-+ set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
-+ len = tty->driver.write(tty, 0, skb->data, skb->len);
-+ hdev->stat.byte_tx += len;
-+
-+ skb_pull(skb, len);
-+ if (skb->len) {
-+ hu->tx_skb = skb;
-+ break;
-+ }
-+
-+ hci_uart_tx_complete(hu, skb->pkt_type);
-+ kfree_skb(skb);
-+ }
-+
-+ if (test_bit(HCI_UART_TX_WAKEUP, &hu->tx_state))
-+ goto restart;
-+
-+ clear_bit(HCI_UART_SENDING, &hu->tx_state);
-+ return 0;
-+}
-+
-+/* ------- Interface to HCI layer ------ */
-+/* Initialize device */
-+static int hci_uart_open(struct hci_dev *hdev)
-+{
-+ BT_DBG("%s %p", hdev->name, hdev);
-+
-+ /* Nothing to do for UART driver */
-+
-+ set_bit(HCI_RUNNING, &hdev->flags);
-+ return 0;
-+}
-+
-+/* Reset device */
-+static int hci_uart_flush(struct hci_dev *hdev)
-+{
-+ struct hci_uart *hu = (struct hci_uart *) hdev->driver_data;
-+ struct tty_struct *tty = hu->tty;
-+
-+ BT_DBG("hdev %p tty %p", hdev, tty);
-+
-+ if (hu->tx_skb) {
-+ kfree_skb(hu->tx_skb); hu->tx_skb = NULL;
-+ }
-+
-+ /* Flush any pending characters in the driver and discipline. */
-+ if (tty->ldisc.flush_buffer)
-+ tty->ldisc.flush_buffer(tty);
-+
-+ if (tty->driver.flush_buffer)
-+ tty->driver.flush_buffer(tty);
-+
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ hu->proto->flush(hu);
-+
-+ return 0;
-+}
-+
-+/* Close device */
-+static int hci_uart_close(struct hci_dev *hdev)
-+{
-+ BT_DBG("hdev %p", hdev);
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
-+ hci_uart_flush(hdev);
-+ return 0;
-+}
-+
-+/* Send frames from HCI layer */
-+static int hci_uart_send_frame(struct sk_buff *skb)
-+{
-+ struct hci_dev* hdev = (struct hci_dev *) skb->dev;
-+ struct tty_struct *tty;
-+ struct hci_uart *hu;
-+
-+ if (!hdev) {
-+ BT_ERR("Frame for uknown device (hdev=NULL)");
-+ return -ENODEV;
-+ }
-+
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return -EBUSY;
-+
-+ hu = (struct hci_uart *) hdev->driver_data;
-+ tty = hu->tty;
-+
-+ BT_DBG("%s: type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+
-+ hu->proto->enqueue(hu, skb);
-+
-+ hci_uart_tx_wakeup(hu);
-+ return 0;
-+}
-+
-+static void hci_uart_destruct(struct hci_dev *hdev)
-+{
-+ struct hci_uart *hu;
-+
-+ if (!hdev) return;
-+
-+ BT_DBG("%s", hdev->name);
-+
-+ hu = (struct hci_uart *) hdev->driver_data;
-+ kfree(hu);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+/* ------ LDISC part ------ */
-+/* hci_uart_tty_open
-+ *
-+ * Called when line discipline changed to HCI_UART.
-+ *
-+ * Arguments:
-+ * tty pointer to tty info structure
-+ * Return Value:
-+ * 0 if success, otherwise error code
-+ */
-+static int hci_uart_tty_open(struct tty_struct *tty)
-+{
-+ struct hci_uart *hu = (void *) tty->disc_data;
-+
-+ BT_DBG("tty %p", tty);
-+
-+ if (hu)
-+ return -EEXIST;
-+
-+ if (!(hu = kmalloc(sizeof(struct hci_uart), GFP_KERNEL))) {
-+ BT_ERR("Can't allocate controll structure");
-+ return -ENFILE;
-+ }
-+ memset(hu, 0, sizeof(struct hci_uart));
-+
-+ tty->disc_data = hu;
-+ hu->tty = tty;
-+
-+ spin_lock_init(&hu->rx_lock);
-+
-+ /* Flush any pending characters in the driver and line discipline */
-+ if (tty->ldisc.flush_buffer)
-+ tty->ldisc.flush_buffer(tty);
-+
-+ if (tty->driver.flush_buffer)
-+ tty->driver.flush_buffer(tty);
-+
-+ MOD_INC_USE_COUNT;
-+ return 0;
-+}
-+
-+/* hci_uart_tty_close()
-+ *
-+ * Called when the line discipline is changed to something
-+ * else, the tty is closed, or the tty detects a hangup.
-+ */
-+static void hci_uart_tty_close(struct tty_struct *tty)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+
-+ BT_DBG("tty %p", tty);
-+
-+ /* Detach from the tty */
-+ tty->disc_data = NULL;
-+
-+ if (hu) {
-+ struct hci_dev *hdev = &hu->hdev;
-+ hci_uart_close(hdev);
-+
-+ if (test_and_clear_bit(HCI_UART_PROTO_SET, &hu->flags)) {
-+ hu->proto->close(hu);
-+ hci_unregister_dev(hdev);
-+ }
-+
-+ MOD_DEC_USE_COUNT;
-+ }
-+}
-+
-+/* hci_uart_tty_wakeup()
-+ *
-+ * Callback for transmit wakeup. Called when low level
-+ * device driver can accept more send data.
-+ *
-+ * Arguments: tty pointer to associated tty instance data
-+ * Return Value: None
-+ */
-+static void hci_uart_tty_wakeup(struct tty_struct *tty)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+
-+ BT_DBG("");
-+
-+ if (!hu)
-+ return;
-+
-+ clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
-+
-+ if (tty != hu->tty)
-+ return;
-+
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ hci_uart_tx_wakeup(hu);
-+}
-+
-+/* hci_uart_tty_room()
-+ *
-+ * Callback function from tty driver. Return the amount of
-+ * space left in the receiver's buffer to decide if remote
-+ * transmitter is to be throttled.
-+ *
-+ * Arguments: tty pointer to associated tty instance data
-+ * Return Value: number of bytes left in receive buffer
-+ */
-+static int hci_uart_tty_room (struct tty_struct *tty)
-+{
-+ return 65536;
-+}
-+
-+/* hci_uart_tty_receive()
-+ *
-+ * Called by tty low level driver when receive data is
-+ * available.
-+ *
-+ * Arguments: tty pointer to tty isntance data
-+ * data pointer to received data
-+ * flags pointer to flags for data
-+ * count count of received data in bytes
-+ *
-+ * Return Value: None
-+ */
-+static void hci_uart_tty_receive(struct tty_struct *tty, const __u8 *data, char *flags, int count)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+
-+ if (!hu || tty != hu->tty)
-+ return;
-+
-+ if (!test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ return;
-+
-+ spin_lock(&hu->rx_lock);
-+ hu->proto->recv(hu, (void *) data, count);
-+ hu->hdev.stat.byte_rx += count;
-+ spin_unlock(&hu->rx_lock);
-+
-+ if (test_and_clear_bit(TTY_THROTTLED,&tty->flags) && tty->driver.unthrottle)
-+ tty->driver.unthrottle(tty);
-+}
-+
-+static int hci_uart_register_dev(struct hci_uart *hu)
-+{
-+ struct hci_dev *hdev;
-+
-+ BT_DBG("");
-+
-+ /* Initialize and register HCI device */
-+ hdev = &hu->hdev;
-+
-+ hdev->type = HCI_UART;
-+ hdev->driver_data = hu;
-+
-+ hdev->open = hci_uart_open;
-+ hdev->close = hci_uart_close;
-+ hdev->flush = hci_uart_flush;
-+ hdev->send = hci_uart_send_frame;
-+ hdev->destruct = hci_uart_destruct;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ BT_ERR("Can't register HCI device %s", hdev->name);
-+ return -ENODEV;
-+ }
-+ MOD_INC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int hci_uart_set_proto(struct hci_uart *hu, int id)
-+{
-+ struct hci_uart_proto *p;
-+ int err;
-+
-+ p = hci_uart_get_proto(id);
-+ if (!p)
-+ return -EPROTONOSUPPORT;
-+
-+ err = p->open(hu);
-+ if (err)
-+ return err;
-+
-+ hu->proto = p;
-+
-+ err = hci_uart_register_dev(hu);
-+ if (err) {
-+ p->close(hu);
-+ return err;
-+ }
-+ return 0;
-+}
-+
-+/* hci_uart_tty_ioctl()
-+ *
-+ * Process IOCTL system call for the tty device.
-+ *
-+ * Arguments:
-+ *
-+ * tty pointer to tty instance data
-+ * file pointer to open file object for device
-+ * cmd IOCTL command code
-+ * arg argument for IOCTL call (cmd dependent)
-+ *
-+ * Return Value: Command dependent
-+ */
-+static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file * file,
-+ unsigned int cmd, unsigned long arg)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ /* Verify the status of the device */
-+ if (!hu)
-+ return -EBADF;
-+
-+ switch (cmd) {
-+ case HCIUARTSETPROTO:
-+ if (!test_and_set_bit(HCI_UART_PROTO_SET, &hu->flags)) {
-+ err = hci_uart_set_proto(hu, arg);
-+ if (err) {
-+ clear_bit(HCI_UART_PROTO_SET, &hu->flags);
-+ return err;
-+ }
-+ tty->low_latency = 1;
-+ } else
-+ return -EBUSY;
-+
-+ case HCIUARTGETPROTO:
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ return hu->proto->id;
-+ return -EUNATCH;
-+
-+ default:
-+ err = n_tty_ioctl(tty, file, cmd, arg);
-+ break;
-+ };
-+
-+ return err;
-+}
-+
-+/*
-+ * We don't provide read/write/poll interface for user space.
-+ */
-+static ssize_t hci_uart_tty_read(struct tty_struct *tty, struct file *file, unsigned char *buf, size_t nr)
-+{
-+ return 0;
-+}
-+static ssize_t hci_uart_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *data, size_t count)
-+{
-+ return 0;
-+}
-+static unsigned int hci_uart_tty_poll(struct tty_struct *tty, struct file *filp, poll_table *wait)
-+{
-+ return 0;
-+}
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_H4
-+int h4_init(void);
-+int h4_deinit(void);
-+#endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+int bcsp_init(void);
-+int bcsp_deinit(void);
-+#endif
-+
-+int __init hci_uart_init(void)
-+{
-+ static struct tty_ldisc hci_uart_ldisc;
-+ int err;
-+
-+ BT_INFO("BlueZ HCI UART driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ VERSION);
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+
-+ /* Register the tty discipline */
-+
-+ memset(&hci_uart_ldisc, 0, sizeof (hci_uart_ldisc));
-+ hci_uart_ldisc.magic = TTY_LDISC_MAGIC;
-+ hci_uart_ldisc.name = "n_hci";
-+ hci_uart_ldisc.open = hci_uart_tty_open;
-+ hci_uart_ldisc.close = hci_uart_tty_close;
-+ hci_uart_ldisc.read = hci_uart_tty_read;
-+ hci_uart_ldisc.write = hci_uart_tty_write;
-+ hci_uart_ldisc.ioctl = hci_uart_tty_ioctl;
-+ hci_uart_ldisc.poll = hci_uart_tty_poll;
-+ hci_uart_ldisc.receive_room= hci_uart_tty_room;
-+ hci_uart_ldisc.receive_buf = hci_uart_tty_receive;
-+ hci_uart_ldisc.write_wakeup= hci_uart_tty_wakeup;
-+
-+ if ((err = tty_register_ldisc(N_HCI, &hci_uart_ldisc))) {
-+ BT_ERR("Can't register HCI line discipline (%d)", err);
-+ return err;
-+ }
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_H4
-+ h4_init();
-+#endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+ bcsp_init();
-+#endif
-+
-+ return 0;
-+}
-+
-+void hci_uart_cleanup(void)
-+{
-+ int err;
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_H4
-+ h4_deinit();
-+#endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+ bcsp_deinit();
-+#endif
-+
-+ /* Release tty registration of line discipline */
-+ if ((err = tty_register_ldisc(N_HCI, NULL)))
-+ BT_ERR("Can't unregister HCI line discipline (%d)", err);
-+}
-+
-+module_init(hci_uart_init);
-+module_exit(hci_uart_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_DESCRIPTION("BlueZ HCI UART driver ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/hci_uart.c linux-2.4.18-mh15/drivers/bluetooth/hci_uart.c
---- linux-2.4.18/drivers/bluetooth/hci_uart.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_uart.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,580 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * BlueZ HCI UART driver.
-- *
-- * $Id: hci_uart.c,v 1.5 2001/07/05 18:42:44 maxk Exp $
-- */
--#define VERSION "1.0"
--
--#include <linux/config.h>
--#include <linux/module.h>
--
--#include <linux/version.h>
--#include <linux/config.h>
--#include <linux/kernel.h>
--#include <linux/init.h>
--#include <linux/sched.h>
--#include <linux/types.h>
--#include <linux/fcntl.h>
--#include <linux/interrupt.h>
--#include <linux/ptrace.h>
--#include <linux/poll.h>
--
--#include <linux/slab.h>
--#include <linux/tty.h>
--#include <linux/errno.h>
--#include <linux/string.h>
--#include <linux/signal.h>
--#include <linux/ioctl.h>
--#include <linux/skbuff.h>
--
--#include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
--#include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/hci_uart.h>
--
--#ifndef HCI_UART_DEBUG
--#undef DBG
--#define DBG( A... )
--#undef DMP
--#define DMP( A... )
--#endif
--
--/* ------- Interface to HCI layer ------ */
--/* Initialize device */
--int n_hci_open(struct hci_dev *hdev)
--{
-- DBG("%s %p", hdev->name, hdev);
--
-- /* Nothing to do for UART driver */
--
-- hdev->flags |= HCI_RUNNING;
--
-- return 0;
--}
--
--/* Reset device */
--int n_hci_flush(struct hci_dev *hdev)
--{
-- struct n_hci *n_hci = (struct n_hci *) hdev->driver_data;
-- struct tty_struct *tty = n_hci->tty;
--
-- DBG("hdev %p tty %p", hdev, tty);
--
-- /* Drop TX queue */
-- skb_queue_purge(&n_hci->txq);
--
-- /* Flush any pending characters in the driver and discipline. */
-- if (tty->ldisc.flush_buffer)
-- tty->ldisc.flush_buffer(tty);
--
-- if (tty->driver.flush_buffer)
-- tty->driver.flush_buffer(tty);
--
-- return 0;
--}
--
--/* Close device */
--int n_hci_close(struct hci_dev *hdev)
--{
-- DBG("hdev %p", hdev);
--
-- hdev->flags &= ~HCI_RUNNING;
--
-- n_hci_flush(hdev);
--
-- return 0;
--}
--
--int n_hci_tx_wakeup(struct n_hci *n_hci)
--{
-- register struct tty_struct *tty = n_hci->tty;
--
-- if (test_and_set_bit(TRANS_SENDING, &n_hci->tx_state)) {
-- set_bit(TRANS_WAKEUP, &n_hci->tx_state);
-- return 0;
-- }
--
-- DBG("");
-- do {
-- register struct sk_buff *skb;
-- register int len;
--
-- clear_bit(TRANS_WAKEUP, &n_hci->tx_state);
--
-- if (!(skb = skb_dequeue(&n_hci->txq)))
-- break;
--
-- DMP(skb->data, skb->len);
--
-- /* Send frame to TTY driver */
-- tty->flags |= (1 << TTY_DO_WRITE_WAKEUP);
-- len = tty->driver.write(tty, 0, skb->data, skb->len);
--
-- n_hci->hdev.stat.byte_tx += len;
--
-- DBG("sent %d", len);
--
-- if (len == skb->len) {
-- /* Full frame was sent */
-- kfree_skb(skb);
-- } else {
-- /* Subtract sent part and requeue */
-- skb_pull(skb, len);
-- skb_queue_head(&n_hci->txq, skb);
-- }
-- } while (test_bit(TRANS_WAKEUP, &n_hci->tx_state));
-- clear_bit(TRANS_SENDING, &n_hci->tx_state);
--
-- return 0;
--}
--
--/* Send frames from HCI layer */
--int n_hci_send_frame(struct sk_buff *skb)
--{
-- struct hci_dev* hdev = (struct hci_dev *) skb->dev;
-- struct tty_struct *tty;
-- struct n_hci *n_hci;
--
-- if (!hdev) {
-- ERR("Frame for uknown device (hdev=NULL)");
-- return -ENODEV;
-- }
--
-- if (!(hdev->flags & HCI_RUNNING))
-- return -EBUSY;
--
-- n_hci = (struct n_hci *) hdev->driver_data;
-- tty = n_hci2tty(n_hci);
--
-- DBG("%s: type %d len %d", hdev->name, skb->pkt_type, skb->len);
--
-- switch (skb->pkt_type) {
-- case HCI_COMMAND_PKT:
-- hdev->stat.cmd_tx++;
-- break;
--
-- case HCI_ACLDATA_PKT:
-- hdev->stat.acl_tx++;
-- break;
--
-- case HCI_SCODATA_PKT:
-- hdev->stat.cmd_tx++;
-- break;
-- };
--
-- /* Prepend skb with frame type and queue */
-- memcpy(skb_push(skb, 1), &skb->pkt_type, 1);
-- skb_queue_tail(&n_hci->txq, skb);
--
-- n_hci_tx_wakeup(n_hci);
--
-- return 0;
--}
--
--/* ------ LDISC part ------ */
--
--/* n_hci_tty_open
-- *
-- * Called when line discipline changed to N_HCI.
-- *
-- * Arguments:
-- * tty pointer to tty info structure
-- * Return Value:
-- * 0 if success, otherwise error code
-- */
--static int n_hci_tty_open(struct tty_struct *tty)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
-- struct hci_dev *hdev;
--
-- DBG("tty %p", tty);
--
-- if (n_hci)
-- return -EEXIST;
--
-- if (!(n_hci = kmalloc(sizeof(struct n_hci), GFP_KERNEL))) {
-- ERR("Can't allocate controll structure");
-- return -ENFILE;
-- }
-- memset(n_hci, 0, sizeof(struct n_hci));
--
-- /* Initialize and register HCI device */
-- hdev = &n_hci->hdev;
--
-- hdev->type = HCI_UART;
-- hdev->driver_data = n_hci;
--
-- hdev->open = n_hci_open;
-- hdev->close = n_hci_close;
-- hdev->flush = n_hci_flush;
-- hdev->send = n_hci_send_frame;
--
-- if (hci_register_dev(hdev) < 0) {
-- ERR("Can't register HCI device %s", hdev->name);
-- kfree(n_hci);
-- return -ENODEV;
-- }
--
-- tty->disc_data = n_hci;
-- n_hci->tty = tty;
--
-- spin_lock_init(&n_hci->rx_lock);
-- n_hci->rx_state = WAIT_PACKET_TYPE;
--
-- skb_queue_head_init(&n_hci->txq);
--
-- MOD_INC_USE_COUNT;
--
-- /* Flush any pending characters in the driver and discipline. */
-- if (tty->ldisc.flush_buffer)
-- tty->ldisc.flush_buffer(tty);
--
-- if (tty->driver.flush_buffer)
-- tty->driver.flush_buffer(tty);
--
-- return 0;
--}
--
--/* n_hci_tty_close()
-- *
-- * Called when the line discipline is changed to something
-- * else, the tty is closed, or the tty detects a hangup.
-- */
--static void n_hci_tty_close(struct tty_struct *tty)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
-- struct hci_dev *hdev = &n_hci->hdev;
--
-- DBG("tty %p hdev %p", tty, hdev);
--
-- if (n_hci != NULL) {
-- n_hci_close(hdev);
--
-- if (hci_unregister_dev(hdev) < 0) {
-- ERR("Can't unregister HCI device %s",hdev->name);
-- }
--
-- hdev->driver_data = NULL;
-- tty->disc_data = NULL;
-- kfree(n_hci);
--
-- MOD_DEC_USE_COUNT;
-- }
--}
--
--/* n_hci_tty_wakeup()
-- *
-- * Callback for transmit wakeup. Called when low level
-- * device driver can accept more send data.
-- *
-- * Arguments: tty pointer to associated tty instance data
-- * Return Value: None
-- */
--static void n_hci_tty_wakeup( struct tty_struct *tty )
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
--
-- DBG("");
--
-- if (!n_hci)
-- return;
--
-- tty->flags &= ~(1 << TTY_DO_WRITE_WAKEUP);
--
-- if (tty != n_hci->tty)
-- return;
--
-- n_hci_tx_wakeup(n_hci);
--}
--
--/* n_hci_tty_room()
-- *
-- * Callback function from tty driver. Return the amount of
-- * space left in the receiver's buffer to decide if remote
-- * transmitter is to be throttled.
-- *
-- * Arguments: tty pointer to associated tty instance data
-- * Return Value: number of bytes left in receive buffer
-- */
--static int n_hci_tty_room (struct tty_struct *tty)
--{
-- return 65536;
--}
--
--static inline int n_hci_check_data_len(struct n_hci *n_hci, int len)
--{
-- register int room = skb_tailroom(n_hci->rx_skb);
--
-- DBG("len %d room %d", len, room);
-- if (!len) {
-- DMP(n_hci->rx_skb->data, n_hci->rx_skb->len);
-- hci_recv_frame(n_hci->rx_skb);
-- } else if (len > room) {
-- ERR("Data length is to large");
-- kfree_skb(n_hci->rx_skb);
-- n_hci->hdev.stat.err_rx++;
-- } else {
-- n_hci->rx_state = WAIT_DATA;
-- n_hci->rx_count = len;
-- return len;
-- }
--
-- n_hci->rx_state = WAIT_PACKET_TYPE;
-- n_hci->rx_skb = NULL;
-- n_hci->rx_count = 0;
-- return 0;
--}
--
--static inline void n_hci_rx(struct n_hci *n_hci, const __u8 * data, char *flags, int count)
--{
-- register const char *ptr;
-- hci_event_hdr *eh;
-- hci_acl_hdr *ah;
-- hci_sco_hdr *sh;
-- register int len, type, dlen;
--
-- DBG("count %d state %ld rx_count %ld", count, n_hci->rx_state, n_hci->rx_count);
--
-- n_hci->hdev.stat.byte_rx += count;
--
-- ptr = data;
-- while (count) {
-- if (n_hci->rx_count) {
-- len = MIN(n_hci->rx_count, count);
-- memcpy(skb_put(n_hci->rx_skb, len), ptr, len);
-- n_hci->rx_count -= len; count -= len; ptr += len;
--
-- if (n_hci->rx_count)
-- continue;
--
-- switch (n_hci->rx_state) {
-- case WAIT_DATA:
-- DBG("Complete data");
--
-- DMP(n_hci->rx_skb->data, n_hci->rx_skb->len);
--
-- hci_recv_frame(n_hci->rx_skb);
--
-- n_hci->rx_state = WAIT_PACKET_TYPE;
-- n_hci->rx_skb = NULL;
-- continue;
--
-- case WAIT_EVENT_HDR:
-- eh = (hci_event_hdr *) n_hci->rx_skb->data;
--
-- DBG("Event header: evt 0x%2.2x plen %d", eh->evt, eh->plen);
--
-- n_hci_check_data_len(n_hci, eh->plen);
-- continue;
--
-- case WAIT_ACL_HDR:
-- ah = (hci_acl_hdr *) n_hci->rx_skb->data;
-- dlen = __le16_to_cpu(ah->dlen);
--
-- DBG("ACL header: dlen %d", dlen);
--
-- n_hci_check_data_len(n_hci, dlen);
-- continue;
--
-- case WAIT_SCO_HDR:
-- sh = (hci_sco_hdr *) n_hci->rx_skb->data;
--
-- DBG("SCO header: dlen %d", sh->dlen);
--
-- n_hci_check_data_len(n_hci, sh->dlen);
-- continue;
-- };
-- }
--
-- /* WAIT_PACKET_TYPE */
-- switch (*ptr) {
-- case HCI_EVENT_PKT:
-- DBG("Event packet");
-- n_hci->rx_state = WAIT_EVENT_HDR;
-- n_hci->rx_count = HCI_EVENT_HDR_SIZE;
-- type = HCI_EVENT_PKT;
-- break;
--
-- case HCI_ACLDATA_PKT:
-- DBG("ACL packet");
-- n_hci->rx_state = WAIT_ACL_HDR;
-- n_hci->rx_count = HCI_ACL_HDR_SIZE;
-- type = HCI_ACLDATA_PKT;
-- break;
--
-- case HCI_SCODATA_PKT:
-- DBG("SCO packet");
-- n_hci->rx_state = WAIT_SCO_HDR;
-- n_hci->rx_count = HCI_SCO_HDR_SIZE;
-- type = HCI_SCODATA_PKT;
-- break;
--
-- default:
-- ERR("Unknown HCI packet type %2.2x", (__u8)*ptr);
-- n_hci->hdev.stat.err_rx++;
-- ptr++; count--;
-- continue;
-- };
-- ptr++; count--;
--
-- /* Allocate packet */
-- if (!(n_hci->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-- ERR("Can't allocate mem for new packet");
--
-- n_hci->rx_state = WAIT_PACKET_TYPE;
-- n_hci->rx_count = 0;
-- return;
-- }
-- n_hci->rx_skb->dev = (void *) &n_hci->hdev;
-- n_hci->rx_skb->pkt_type = type;
-- }
--}
--
--/* n_hci_tty_receive()
-- *
-- * Called by tty low level driver when receive data is
-- * available.
-- *
-- * Arguments: tty pointer to tty isntance data
-- * data pointer to received data
-- * flags pointer to flags for data
-- * count count of received data in bytes
-- *
-- * Return Value: None
-- */
--static void n_hci_tty_receive(struct tty_struct *tty, const __u8 * data, char *flags, int count)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
--
-- if (!n_hci || tty != n_hci->tty)
-- return;
--
-- spin_lock(&n_hci->rx_lock);
-- n_hci_rx(n_hci, data, flags, count);
-- spin_unlock(&n_hci->rx_lock);
--
-- if (test_and_clear_bit(TTY_THROTTLED,&tty->flags) && tty->driver.unthrottle)
-- tty->driver.unthrottle(tty);
--}
--
--/* n_hci_tty_ioctl()
-- *
-- * Process IOCTL system call for the tty device.
-- *
-- * Arguments:
-- *
-- * tty pointer to tty instance data
-- * file pointer to open file object for device
-- * cmd IOCTL command code
-- * arg argument for IOCTL call (cmd dependent)
-- *
-- * Return Value: Command dependent
-- */
--static int n_hci_tty_ioctl (struct tty_struct *tty, struct file * file,
-- unsigned int cmd, unsigned long arg)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
-- int error = 0;
--
-- DBG("");
--
-- /* Verify the status of the device */
-- if (!n_hci)
-- return -EBADF;
--
-- switch (cmd) {
-- default:
-- error = n_tty_ioctl(tty, file, cmd, arg);
-- break;
-- };
--
-- return error;
--}
--
--/*
-- * We don't provide read/write/poll interface for user space.
-- */
--static ssize_t n_hci_tty_read(struct tty_struct *tty, struct file *file, unsigned char *buf, size_t nr)
--{
-- return 0;
--}
--static ssize_t n_hci_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *data, size_t count)
--{
-- return 0;
--}
--static unsigned int n_hci_tty_poll(struct tty_struct *tty, struct file *filp, poll_table *wait)
--{
-- return 0;
--}
--
--int __init n_hci_init(void)
--{
-- static struct tty_ldisc n_hci_ldisc;
-- int err;
--
-- INF("BlueZ HCI UART driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
--
-- /* Register the tty discipline */
--
-- memset(&n_hci_ldisc, 0, sizeof (n_hci_ldisc));
-- n_hci_ldisc.magic = TTY_LDISC_MAGIC;
-- n_hci_ldisc.name = "n_hci";
-- n_hci_ldisc.open = n_hci_tty_open;
-- n_hci_ldisc.close = n_hci_tty_close;
-- n_hci_ldisc.read = n_hci_tty_read;
-- n_hci_ldisc.write = n_hci_tty_write;
-- n_hci_ldisc.ioctl = n_hci_tty_ioctl;
-- n_hci_ldisc.poll = n_hci_tty_poll;
-- n_hci_ldisc.receive_room= n_hci_tty_room;
-- n_hci_ldisc.receive_buf = n_hci_tty_receive;
-- n_hci_ldisc.write_wakeup= n_hci_tty_wakeup;
--
-- if ((err = tty_register_ldisc(N_HCI, &n_hci_ldisc))) {
-- ERR("Can't register HCI line discipline (%d)", err);
-- return err;
-- }
--
-- return 0;
--}
--
--void n_hci_cleanup(void)
--{
-- int err;
--
-- /* Release tty registration of line discipline */
-- if ((err = tty_register_ldisc(N_HCI, NULL)))
-- ERR("Can't unregister HCI line discipline (%d)", err);
--}
--
--module_init(n_hci_init);
--module_exit(n_hci_cleanup);
--
--MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
--MODULE_DESCRIPTION("BlueZ HCI UART driver ver " VERSION);
--MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/hci_uart.h linux-2.4.18-mh15/drivers/bluetooth/hci_uart.h
---- linux-2.4.18/drivers/bluetooth/hci_uart.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_uart.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,82 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_uart.h,v 1.2 2002/09/09 01:17:32 maxk Exp $
-+ */
-+
-+#ifndef N_HCI
-+#define N_HCI 15
-+#endif
-+
-+/* Ioctls */
-+#define HCIUARTSETPROTO _IOW('U', 200, int)
-+#define HCIUARTGETPROTO _IOR('U', 201, int)
-+
-+/* UART protocols */
-+#define HCI_UART_MAX_PROTO 4
-+
-+#define HCI_UART_H4 0
-+#define HCI_UART_BCSP 1
-+#define HCI_UART_3WIRE 2
-+#define HCI_UART_H4DS 3
-+
-+#ifdef __KERNEL__
-+struct hci_uart;
-+
-+struct hci_uart_proto {
-+ unsigned int id;
-+ int (*open)(struct hci_uart *hu);
-+ int (*close)(struct hci_uart *hu);
-+ int (*flush)(struct hci_uart *hu);
-+ int (*recv)(struct hci_uart *hu, void *data, int len);
-+ int (*enqueue)(struct hci_uart *hu, struct sk_buff *skb);
-+ struct sk_buff *(*dequeue)(struct hci_uart *hu);
-+};
-+
-+struct hci_uart {
-+ struct tty_struct *tty;
-+ struct hci_dev hdev;
-+ unsigned long flags;
-+
-+ struct hci_uart_proto *proto;
-+ void *priv;
-+
-+ struct sk_buff *tx_skb;
-+ unsigned long tx_state;
-+ spinlock_t rx_lock;
-+};
-+
-+/* HCI_UART flag bits */
-+#define HCI_UART_PROTO_SET 0
-+
-+/* TX states */
-+#define HCI_UART_SENDING 1
-+#define HCI_UART_TX_WAKEUP 2
-+
-+int hci_uart_register_proto(struct hci_uart_proto *p);
-+int hci_uart_unregister_proto(struct hci_uart_proto *p);
-+int hci_uart_tx_wakeup(struct hci_uart *hu);
-+
-+#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_usb.c linux-2.4.18-mh15/drivers/bluetooth/hci_usb.c
---- linux-2.4.18/drivers/bluetooth/hci_usb.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_usb.c 2004-08-01 16:26:23.000000000 +0200
-@@ -1,9 +1,10 @@
- /*
-- BlueZ - Bluetooth protocol stack for Linux
-+ HCI USB driver for Linux Bluetooth protocol stack (BlueZ)
- Copyright (C) 2000-2001 Qualcomm Incorporated
--
- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-
-+ Copyright (C) 2003 Maxim Krasnyansky <maxk@qualcomm.com>
-+
- 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;
-@@ -23,598 +24,938 @@
- */
-
- /*
-- * BlueZ HCI USB driver.
- * Based on original USB Bluetooth driver for Linux kernel
- * Copyright (c) 2000 Greg Kroah-Hartman <greg@kroah.com>
- * Copyright (c) 2000 Mark Douglas Corner <mcorner@umich.edu>
- *
-- * $Id: hci_usb.c,v 1.5 2001/07/05 18:42:44 maxk Exp $
-+ * $Id: hci_usb.c,v 1.8 2002/07/18 17:23:09 maxk Exp $
- */
--#define VERSION "1.0"
-+#define VERSION "2.7"
-
- #include <linux/config.h>
- #include <linux/module.h>
-
- #include <linux/version.h>
--#include <linux/config.h>
- #include <linux/kernel.h>
- #include <linux/init.h>
- #include <linux/sched.h>
-+#include <linux/unistd.h>
- #include <linux/types.h>
--#include <linux/fcntl.h>
- #include <linux/interrupt.h>
--#include <linux/ptrace.h>
--#include <linux/poll.h>
-
- #include <linux/slab.h>
--#include <linux/tty.h>
- #include <linux/errno.h>
- #include <linux/string.h>
--#include <linux/signal.h>
--#include <linux/ioctl.h>
- #include <linux/skbuff.h>
-
- #include <linux/usb.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/hci_usb.h>
-+
-+#include "hci_usb.h"
-
- #ifndef HCI_USB_DEBUG
--#undef DBG
--#define DBG( A... )
--#undef DMP
--#define DMP( A... )
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
- #endif
-
--static struct usb_device_id usb_bluetooth_ids [] = {
-+#ifndef CONFIG_BLUEZ_HCIUSB_ZERO_PACKET
-+#undef USB_ZERO_PACKET
-+#define USB_ZERO_PACKET 0
-+#endif
-+
-+static struct usb_driver hci_usb_driver;
-+
-+static struct usb_device_id bluetooth_ids[] = {
-+ /* Generic Bluetooth USB device */
- { USB_DEVICE_INFO(HCI_DEV_CLASS, HCI_DEV_SUBCLASS, HCI_DEV_PROTOCOL) },
-+
-+ /* AVM BlueFRITZ! USB v2.0 */
-+ { USB_DEVICE(0x057c, 0x3800) },
-+
-+ /* Bluetooth Ultraport Module from IBM */
-+ { USB_DEVICE(0x04bf, 0x030a) },
-+
-+ /* ALPS Modules with non-standard id */
-+ { USB_DEVICE(0x044e, 0x3001) },
-+ { USB_DEVICE(0x044e, 0x3002) },
-+
-+ /* Ericsson with non-standard id */
-+ { USB_DEVICE(0x0bdb, 0x1002) },
-+
- { } /* Terminating entry */
- };
-
--MODULE_DEVICE_TABLE (usb, usb_bluetooth_ids);
-+MODULE_DEVICE_TABLE (usb, bluetooth_ids);
-
--static int hci_usb_ctrl_msg(struct hci_usb *husb, struct sk_buff *skb);
--static int hci_usb_write_msg(struct hci_usb *husb, struct sk_buff *skb);
-+static struct usb_device_id blacklist_ids[] = {
-+ /* Broadcom BCM2033 without firmware */
-+ { USB_DEVICE(0x0a5c, 0x2033), driver_info: HCI_IGNORE },
-
--static void hci_usb_unlink_urbs(struct hci_usb *husb)
-+ /* Broadcom BCM2035 */
-+ { USB_DEVICE(0x0a5c, 0x200a), driver_info: HCI_RESET },
-+
-+ /* ISSC Bluetooth Adapter v3.1 */
-+ { USB_DEVICE(0x1131, 0x1001), driver_info: HCI_RESET },
-+
-+ /* Digianswer device */
-+ { USB_DEVICE(0x08fd, 0x0001), driver_info: HCI_DIGIANSWER },
-+
-+ /* RTX Telecom based adapter with buggy SCO support */
-+ { USB_DEVICE(0x0400, 0x0807), driver_info: HCI_BROKEN_ISOC },
-+
-+ { } /* Terminating entry */
-+};
-+
-+struct _urb *_urb_alloc(int isoc, int gfp)
- {
-- usb_unlink_urb(husb->read_urb);
-- usb_unlink_urb(husb->intr_urb);
-- usb_unlink_urb(husb->ctrl_urb);
-- usb_unlink_urb(husb->write_urb);
-+ struct _urb *_urb = kmalloc(sizeof(struct _urb) +
-+ sizeof(iso_packet_descriptor_t) * isoc, gfp);
-+ if (_urb) {
-+ memset(_urb, 0, sizeof(*_urb));
-+ spin_lock_init(&_urb->urb.lock);
-+ }
-+ return _urb;
-+}
-+
-+struct _urb *_urb_dequeue(struct _urb_queue *q)
-+{
-+ struct _urb *_urb = NULL;
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ {
-+ struct list_head *head = &q->head;
-+ struct list_head *next = head->next;
-+ if (next != head) {
-+ _urb = list_entry(next, struct _urb, list);
-+ list_del(next); _urb->queue = NULL;
-+ }
-+ }
-+ spin_unlock_irqrestore(&q->lock, flags);
-+ return _urb;
- }
-
--static void hci_usb_free_bufs(struct hci_usb *husb)
-+static void hci_usb_rx_complete(struct urb *urb);
-+static void hci_usb_tx_complete(struct urb *urb);
-+
-+#define __pending_tx(husb, type) (&husb->pending_tx[type-1])
-+#define __pending_q(husb, type) (&husb->pending_q[type-1])
-+#define __completed_q(husb, type) (&husb->completed_q[type-1])
-+#define __transmit_q(husb, type) (&husb->transmit_q[type-1])
-+#define __reassembly(husb, type) (husb->reassembly[type-1])
-+
-+static inline struct _urb *__get_completed(struct hci_usb *husb, int type)
- {
-- if (husb->read_urb) {
-- if (husb->read_urb->transfer_buffer)
-- kfree(husb->read_urb->transfer_buffer);
-- usb_free_urb(husb->read_urb);
-- }
-+ return _urb_dequeue(__completed_q(husb, type));
-+}
-
-- if (husb->intr_urb) {
-- if (husb->intr_urb->transfer_buffer)
-- kfree(husb->intr_urb->transfer_buffer);
-- usb_free_urb(husb->intr_urb);
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+static void __fill_isoc_desc(struct urb *urb, int len, int mtu)
-+{
-+ int offset = 0, i;
-+
-+ BT_DBG("len %d mtu %d", len, mtu);
-+
-+ for (i=0; i < HCI_MAX_ISOC_FRAMES && len >= mtu; i++, offset += mtu, len -= mtu) {
-+ urb->iso_frame_desc[i].offset = offset;
-+ urb->iso_frame_desc[i].length = mtu;
-+ BT_DBG("desc %d offset %d len %d", i, offset, mtu);
-+ }
-+ if (len && i < HCI_MAX_ISOC_FRAMES) {
-+ urb->iso_frame_desc[i].offset = offset;
-+ urb->iso_frame_desc[i].length = len;
-+ BT_DBG("desc %d offset %d len %d", i, offset, len);
-+ i++;
- }
-+ urb->number_of_packets = i;
-+}
-+#endif
-
-- if (husb->ctrl_urb)
-- usb_free_urb(husb->ctrl_urb);
-+static int hci_usb_intr_rx_submit(struct hci_usb *husb)
-+{
-+ struct _urb *_urb;
-+ struct urb *urb;
-+ int err, pipe, interval, size;
-+ void *buf;
-+
-+ BT_DBG("%s", husb->hdev.name);
-+
-+ size = husb->intr_in_ep->wMaxPacketSize;
-+
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
-+ return -ENOMEM;
-+
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
-+ return -ENOMEM;
-+ }
-+ _urb->type = HCI_EVENT_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-+
-+ urb = &_urb->urb;
-+ pipe = usb_rcvintpipe(husb->udev, husb->intr_in_ep->bEndpointAddress);
-+ interval = husb->intr_in_ep->bInterval;
-+ FILL_INT_URB(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb, interval);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s intr rx submit failed urb %p err %d",
-+ husb->hdev.name, urb, err);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
-+ }
-+ return err;
-+}
-
-- if (husb->write_urb)
-- usb_free_urb(husb->write_urb);
-+static int hci_usb_bulk_rx_submit(struct hci_usb *husb)
-+{
-+ struct _urb *_urb;
-+ struct urb *urb;
-+ int err, pipe, size = HCI_MAX_FRAME_SIZE;
-+ void *buf;
-+
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
-+ return -ENOMEM;
-+
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
-+ return -ENOMEM;
-+ }
-+ _urb->type = HCI_ACLDATA_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-+
-+ urb = &_urb->urb;
-+ pipe = usb_rcvbulkpipe(husb->udev, husb->bulk_in_ep->bEndpointAddress);
-+ FILL_BULK_URB(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb);
-+ urb->transfer_flags = USB_QUEUE_BULK;
-+
-+ BT_DBG("%s urb %p", husb->hdev.name, urb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk rx submit failed urb %p err %d",
-+ husb->hdev.name, urb, err);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
-+ }
-+ return err;
-+}
-
-- if (husb->intr_skb)
-- kfree_skb(husb->intr_skb);
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+static int hci_usb_isoc_rx_submit(struct hci_usb *husb)
-+{
-+ struct _urb *_urb;
-+ struct urb *urb;
-+ int err, mtu, size;
-+ void *buf;
-+
-+ mtu = husb->isoc_in_ep->wMaxPacketSize;
-+ size = mtu * HCI_MAX_ISOC_FRAMES;
-+
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
-+ return -ENOMEM;
-+
-+ _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
-+ return -ENOMEM;
-+ }
-+ _urb->type = HCI_SCODATA_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-+
-+ urb = &_urb->urb;
-+
-+ urb->context = husb;
-+ urb->dev = husb->udev;
-+ urb->pipe = usb_rcvisocpipe(husb->udev, husb->isoc_in_ep->bEndpointAddress);
-+ urb->complete = hci_usb_rx_complete;
-+
-+ urb->transfer_buffer_length = size;
-+ urb->transfer_buffer = buf;
-+ urb->transfer_flags = USB_ISO_ASAP;
-+
-+ __fill_isoc_desc(urb, size, mtu);
-+
-+ BT_DBG("%s urb %p", husb->hdev.name, urb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s isoc rx submit failed urb %p err %d",
-+ husb->hdev.name, urb, err);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
-+ }
-+ return err;
- }
-+#endif
-
--/* ------- Interface to HCI layer ------ */
- /* Initialize device */
--int hci_usb_open(struct hci_dev *hdev)
-+static int hci_usb_open(struct hci_dev *hdev)
- {
- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-- int status;
-+ int i, err;
-+ unsigned long flags;
-+
-+ BT_DBG("%s", hdev->name);
-
-- DBG("%s", hdev->name);
-+ if (test_and_set_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-
-- husb->read_urb->dev = husb->udev;
-- if ((status = usb_submit_urb(husb->read_urb)))
-- DBG("read submit failed. %d", status);
-+ MOD_INC_USE_COUNT;
-
-- husb->intr_urb->dev = husb->udev;
-- if ((status = usb_submit_urb(husb->intr_urb)))
-- DBG("interrupt submit failed. %d", status);
-+ write_lock_irqsave(&husb->completion_lock, flags);
-
-- hdev->flags |= HCI_RUNNING;
-+ err = hci_usb_intr_rx_submit(husb);
-+ if (!err) {
-+ for (i = 0; i < HCI_MAX_BULK_RX; i++)
-+ hci_usb_bulk_rx_submit(husb);
-+
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ if (husb->isoc_iface)
-+ for (i = 0; i < HCI_MAX_ISOC_RX; i++)
-+ hci_usb_isoc_rx_submit(husb);
-+#endif
-+ } else {
-+ clear_bit(HCI_RUNNING, &hdev->flags);
-+ MOD_DEC_USE_COUNT;
-+ }
-
-- return 0;
-+ write_unlock_irqrestore(&husb->completion_lock, flags);
-+ return err;
- }
-
- /* Reset device */
--int hci_usb_flush(struct hci_dev *hdev)
-+static int hci_usb_flush(struct hci_dev *hdev)
- {
- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ int i;
-
-- DBG("%s", hdev->name);
--
-- /* Drop TX queues */
-- skb_queue_purge(&husb->tx_ctrl_q);
-- skb_queue_purge(&husb->tx_write_q);
-+ BT_DBG("%s", hdev->name);
-
-+ for (i=0; i < 4; i++)
-+ skb_queue_purge(&husb->transmit_q[i]);
- return 0;
- }
-
--/* Close device */
--int hci_usb_close(struct hci_dev *hdev)
-+static void hci_usb_unlink_urbs(struct hci_usb *husb)
- {
-- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ int i;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s", husb->hdev.name);
-
-- hdev->flags &= ~HCI_RUNNING;
-- hci_usb_unlink_urbs(husb);
-+ for (i=0; i < 4; i++) {
-+ struct _urb *_urb;
-+ struct urb *urb;
-+
-+ /* Kill pending requests */
-+ while ((_urb = _urb_dequeue(&husb->pending_q[i]))) {
-+ urb = &_urb->urb;
-+ BT_DBG("%s unlinking _urb %p type %d urb %p",
-+ husb->hdev.name, _urb, _urb->type, urb);
-+ usb_unlink_urb(urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-+ }
-
-- hci_usb_flush(hdev);
-+ /* Release completed requests */
-+ while ((_urb = _urb_dequeue(&husb->completed_q[i]))) {
-+ urb = &_urb->urb;
-+ BT_DBG("%s freeing _urb %p type %d urb %p",
-+ husb->hdev.name, _urb, _urb->type, urb);
-+ if (urb->setup_packet)
-+ kfree(urb->setup_packet);
-+ if (urb->transfer_buffer)
-+ kfree(urb->transfer_buffer);
-+ _urb_free(_urb);
-+ }
-
-- return 0;
-+ /* Release reassembly buffers */
-+ if (husb->reassembly[i]) {
-+ kfree_skb(husb->reassembly[i]);
-+ husb->reassembly[i] = NULL;
-+ }
-+ }
- }
-
--void hci_usb_ctrl_wakeup(struct hci_usb *husb)
-+/* Close device */
-+static int hci_usb_close(struct hci_dev *hdev)
- {
-- struct sk_buff *skb;
-+ struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ unsigned long flags;
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-
-- if (test_and_set_bit(HCI_TX_CTRL, &husb->tx_state))
-- return;
-+ BT_DBG("%s", hdev->name);
-
-- DBG("%s", husb->hdev.name);
-+ write_lock_irqsave(&husb->completion_lock, flags);
-+
-+ hci_usb_unlink_urbs(husb);
-+ hci_usb_flush(hdev);
-
-- if (!(skb = skb_dequeue(&husb->tx_ctrl_q)))
-- goto done;
-+ write_unlock_irqrestore(&husb->completion_lock, flags);
-
-- if (hci_usb_ctrl_msg(husb, skb)){
-- kfree_skb(skb);
-- goto done;
-- }
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-
-- DMP(skb->data, skb->len);
-+static int __tx_submit(struct hci_usb *husb, struct _urb *_urb)
-+{
-+ struct urb *urb = &_urb->urb;
-+ int err;
-
-- husb->hdev.stat.byte_tx += skb->len;
-- return;
-+ BT_DBG("%s urb %p type %d", husb->hdev.name, urb, _urb->type);
-+
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s tx submit failed urb %p type %d err %d",
-+ husb->hdev.name, urb, _urb->type, err);
-+ _urb_unlink(_urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-+ } else
-+ atomic_inc(__pending_tx(husb, _urb->type));
-
--done:
-- clear_bit(HCI_TX_CTRL, &husb->tx_state);
-- return;
-+ return err;
- }
-
--void hci_usb_write_wakeup(struct hci_usb *husb)
-+static inline int hci_usb_send_ctrl(struct hci_usb *husb, struct sk_buff *skb)
- {
-- struct sk_buff *skb;
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
-+ devrequest *dr;
-+ struct urb *urb;
-+
-+ if (!_urb) {
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
-+
-+ dr = kmalloc(sizeof(*dr), GFP_ATOMIC);
-+ if (!dr) {
-+ _urb_free(_urb);
-+ return -ENOMEM;
-+ }
-+ } else
-+ dr = (void *) _urb->urb.setup_packet;
-
-- if (test_and_set_bit(HCI_TX_WRITE, &husb->tx_state))
-- return;
-+ dr->requesttype = husb->ctrl_req;
-+ dr->request = 0;
-+ dr->index = 0;
-+ dr->value = 0;
-+ dr->length = __cpu_to_le16(skb->len);
-
-- DBG("%s", husb->hdev.name);
-+ urb = &_urb->urb;
-+ FILL_CONTROL_URB(urb, husb->udev, usb_sndctrlpipe(husb->udev, 0),
-+ (void *) dr, skb->data, skb->len, hci_usb_tx_complete, husb);
-
-- if (!(skb = skb_dequeue(&husb->tx_write_q)))
-- goto done;
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-+
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
-+}
-
-- if (hci_usb_write_msg(husb, skb)) {
-- skb_queue_head(&husb->tx_write_q, skb);
-- goto done;
-+static inline int hci_usb_send_bulk(struct hci_usb *husb, struct sk_buff *skb)
-+{
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
-+ struct urb *urb;
-+ int pipe;
-+
-+ if (!_urb) {
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
- }
-
-- DMP(skb->data, skb->len);
-+ urb = &_urb->urb;
-+ pipe = usb_sndbulkpipe(husb->udev, husb->bulk_out_ep->bEndpointAddress);
-+ FILL_BULK_URB(urb, husb->udev, pipe, skb->data, skb->len,
-+ hci_usb_tx_complete, husb);
-+ urb->transfer_flags = USB_QUEUE_BULK | USB_ZERO_PACKET;
-
-- husb->hdev.stat.byte_tx += skb->len;
-- return;
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-
--done:
-- clear_bit(HCI_TX_WRITE, &husb->tx_state);
-- return;
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
- }
-
--/* Send frames from HCI layer */
--int hci_usb_send_frame(struct sk_buff *skb)
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+static inline int hci_usb_send_isoc(struct hci_usb *husb, struct sk_buff *skb)
- {
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-- struct hci_usb *husb;
--
-- if (!hdev) {
-- ERR("frame for uknown device (hdev=NULL)");
-- return -ENODEV;
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
-+ struct urb *urb;
-+
-+ if (!_urb) {
-+ _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
- }
-
-- if (!(hdev->flags & HCI_RUNNING))
-- return 0;
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-
-- husb = (struct hci_usb *) hdev->driver_data;
-+ urb = &_urb->urb;
-+
-+ urb->context = husb;
-+ urb->dev = husb->udev;
-+ urb->pipe = usb_sndisocpipe(husb->udev, husb->isoc_out_ep->bEndpointAddress);
-+ urb->complete = hci_usb_tx_complete;
-+ urb->transfer_flags = USB_ISO_ASAP;
-
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+ urb->transfer_buffer = skb->data;
-+ urb->transfer_buffer_length = skb->len;
-+
-+ __fill_isoc_desc(urb, skb->len, husb->isoc_out_ep->wMaxPacketSize);
-
-- switch (skb->pkt_type) {
-- case HCI_COMMAND_PKT:
-- skb_queue_tail(&husb->tx_ctrl_q, skb);
-- hci_usb_ctrl_wakeup(husb);
-- hdev->stat.cmd_tx++;
-- return 0;
--
-- case HCI_ACLDATA_PKT:
-- skb_queue_tail(&husb->tx_write_q, skb);
-- hci_usb_write_wakeup(husb);
-- hdev->stat.acl_tx++;
-- return 0;
--
-- case HCI_SCODATA_PKT:
-- return -EOPNOTSUPP;
-- };
--
-- return 0;
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
- }
-+#endif
-
--/* ---------- USB ------------- */
--
--static void hci_usb_ctrl(struct urb *urb)
-+static void hci_usb_tx_process(struct hci_usb *husb)
- {
-- struct sk_buff *skb = (struct sk_buff *) urb->context;
-- struct hci_dev *hdev;
-- struct hci_usb *husb;
-+ struct sk_buff_head *q;
-+ struct sk_buff *skb;
-
-- if (!skb)
-- return;
-- hdev = (struct hci_dev *) skb->dev;
-- husb = (struct hci_usb *) hdev->driver_data;
-+ BT_DBG("%s", husb->hdev.name);
-
-- DBG("%s", hdev->name);
-+ do {
-+ clear_bit(HCI_USB_TX_WAKEUP, &husb->state);
-
-- if (urb->status)
-- DBG("%s ctrl status: %d", hdev->name, urb->status);
-+ /* Process command queue */
-+ q = __transmit_q(husb, HCI_COMMAND_PKT);
-+ if (!atomic_read(__pending_tx(husb, HCI_COMMAND_PKT)) &&
-+ (skb = skb_dequeue(q))) {
-+ if (hci_usb_send_ctrl(husb, skb) < 0)
-+ skb_queue_head(q, skb);
-+ }
-
-- clear_bit(HCI_TX_CTRL, &husb->tx_state);
-- kfree_skb(skb);
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ /* Process SCO queue */
-+ q = __transmit_q(husb, HCI_SCODATA_PKT);
-+ if (atomic_read(__pending_tx(husb, HCI_SCODATA_PKT)) < HCI_MAX_ISOC_TX &&
-+ (skb = skb_dequeue(q))) {
-+ if (hci_usb_send_isoc(husb, skb) < 0)
-+ skb_queue_head(q, skb);
-+ }
-+#endif
-+
-+ /* Process ACL queue */
-+ q = __transmit_q(husb, HCI_ACLDATA_PKT);
-+ while (atomic_read(__pending_tx(husb, HCI_ACLDATA_PKT)) < HCI_MAX_BULK_TX &&
-+ (skb = skb_dequeue(q))) {
-+ if (hci_usb_send_bulk(husb, skb) < 0) {
-+ skb_queue_head(q, skb);
-+ break;
-+ }
-+ }
-+ } while(test_bit(HCI_USB_TX_WAKEUP, &husb->state));
-+}
-
-- /* Wake up device */
-- hci_usb_ctrl_wakeup(husb);
-+static inline void hci_usb_tx_wakeup(struct hci_usb *husb)
-+{
-+ /* Serialize TX queue processing to avoid data reordering */
-+ if (!test_and_set_bit(HCI_USB_TX_PROCESS, &husb->state)) {
-+ hci_usb_tx_process(husb);
-+ clear_bit(HCI_USB_TX_PROCESS, &husb->state);
-+ } else
-+ set_bit(HCI_USB_TX_WAKEUP, &husb->state);
- }
-
--static void hci_usb_bulk_write(struct urb *urb)
-+/* Send frames from HCI layer */
-+static int hci_usb_send_frame(struct sk_buff *skb)
- {
-- struct sk_buff *skb = (struct sk_buff *) urb->context;
-- struct hci_dev *hdev;
-+ struct hci_dev *hdev = (struct hci_dev *) skb->dev;
- struct hci_usb *husb;
-
-- if (!skb)
-- return;
-- hdev = (struct hci_dev *) skb->dev;
-- husb = (struct hci_usb *) hdev->driver_data;
-+ if (!hdev) {
-+ BT_ERR("frame for uknown device (hdev=NULL)");
-+ return -ENODEV;
-+ }
-
-- DBG("%s", hdev->name);
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return -EBUSY;
-
-- if (urb->status)
-- DBG("%s bulk write status: %d", hdev->name, urb->status);
-+ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-
-- clear_bit(HCI_TX_WRITE, &husb->tx_state);
-- kfree_skb(skb);
-+ husb = (struct hci_usb *) hdev->driver_data;
-
-- /* Wake up device */
-- hci_usb_write_wakeup(husb);
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+#endif
-
-- return;
--}
-+ default:
-+ kfree_skb(skb);
-+ return 0;
-+ }
-
--static void hci_usb_intr(struct urb *urb)
--{
-- struct hci_usb *husb = (struct hci_usb *) urb->context;
-- unsigned char *data = urb->transfer_buffer;
-- register int count = urb->actual_length;
-- register struct sk_buff *skb = husb->intr_skb;
-- hci_event_hdr *eh;
-- register int len;
-+ read_lock(&husb->completion_lock);
-
-- if (!husb)
-- return;
-+ skb_queue_tail(__transmit_q(husb, skb->pkt_type), skb);
-+ hci_usb_tx_wakeup(husb);
-
-- DBG("%s count %d", husb->hdev.name, count);
-+ read_unlock(&husb->completion_lock);
-+ return 0;
-+}
-
-- if (urb->status || !count) {
-- DBG("%s intr status %d, count %d", husb->hdev.name, urb->status, count);
-- return;
-- }
-+static inline int __recv_frame(struct hci_usb *husb, int type, void *data, int count)
-+{
-+ BT_DBG("%s type %d data %p count %d", husb->hdev.name, type, data, count);
-
-- /* Do we really have to handle continuations here ? */
-- if (!skb) {
-- /* New frame */
-- if (count < HCI_EVENT_HDR_SIZE) {
-- DBG("%s bad frame len %d", husb->hdev.name, count);
-- return;
-- }
-+ husb->hdev.stat.byte_rx += count;
-
-- eh = (hci_event_hdr *) data;
-- len = eh->plen + HCI_EVENT_HDR_SIZE;
-+ while (count) {
-+ struct sk_buff *skb = __reassembly(husb, type);
-+ struct { int expect; } *scb;
-+ int len = 0;
-+
-+ if (!skb) {
-+ /* Start of the frame */
-+
-+ switch (type) {
-+ case HCI_EVENT_PKT:
-+ if (count >= HCI_EVENT_HDR_SIZE) {
-+ hci_event_hdr *h = data;
-+ len = HCI_EVENT_HDR_SIZE + h->plen;
-+ } else
-+ return -EILSEQ;
-+ break;
-
-- if (count > len) {
-- DBG("%s corrupted frame, len %d", husb->hdev.name, count);
-- return;
-- }
-+ case HCI_ACLDATA_PKT:
-+ if (count >= HCI_ACL_HDR_SIZE) {
-+ hci_acl_hdr *h = data;
-+ len = HCI_ACL_HDR_SIZE + __le16_to_cpu(h->dlen);
-+ } else
-+ return -EILSEQ;
-+ break;
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ case HCI_SCODATA_PKT:
-+ if (count >= HCI_SCO_HDR_SIZE) {
-+ hci_sco_hdr *h = data;
-+ len = HCI_SCO_HDR_SIZE + h->dlen;
-+ } else
-+ return -EILSEQ;
-+ break;
-+#endif
-+ }
-+ BT_DBG("new packet len %d", len);
-
-- /* Allocate skb */
-- if (!(skb = bluez_skb_alloc(len, GFP_ATOMIC))) {
-- ERR("Can't allocate mem for new packet");
-- return;
-+ skb = bluez_skb_alloc(len, GFP_ATOMIC);
-+ if (!skb) {
-+ BT_ERR("%s no memory for the packet", husb->hdev.name);
-+ return -ENOMEM;
-+ }
-+ skb->dev = (void *) &husb->hdev;
-+ skb->pkt_type = type;
-+
-+ __reassembly(husb, type) = skb;
-+
-+ scb = (void *) skb->cb;
-+ scb->expect = len;
-+ } else {
-+ /* Continuation */
-+ scb = (void *) skb->cb;
-+ len = scb->expect;
- }
-- skb->dev = (void *) &husb->hdev;
-- skb->pkt_type = HCI_EVENT_PKT;
--
-- husb->intr_skb = skb;
-- husb->intr_count = len;
-- } else {
-- /* Continuation */
-- if (count > husb->intr_count) {
-- ERR("%s bad frame len %d (expected %d)", husb->hdev.name, count, husb->intr_count);
-
-- kfree_skb(skb);
-- husb->intr_skb = NULL;
-- husb->intr_count = 0;
-- return;
-+ len = min(len, count);
-+
-+ memcpy(skb_put(skb, len), data, len);
-+
-+ scb->expect -= len;
-+ if (!scb->expect) {
-+ /* Complete frame */
-+ __reassembly(husb, type) = NULL;
-+ hci_recv_frame(skb);
- }
-- }
--
-- memcpy(skb_put(skb, count), data, count);
-- husb->intr_count -= count;
--
-- DMP(data, count);
--
-- if (!husb->intr_count) {
-- /* Got complete frame */
-
-- husb->hdev.stat.byte_rx += skb->len;
-- hci_recv_frame(skb);
--
-- husb->intr_skb = NULL;
-+ count -= len; data += len;
- }
-+ return 0;
- }
-
--static void hci_usb_bulk_read(struct urb *urb)
-+static void hci_usb_rx_complete(struct urb *urb)
- {
-- struct hci_usb *husb = (struct hci_usb *) urb->context;
-- unsigned char *data = urb->transfer_buffer;
-- int count = urb->actual_length, status;
-- struct sk_buff *skb;
-- hci_acl_hdr *ah;
-- register __u16 dlen;
--
-- if (!husb)
-- return;
-+ struct _urb *_urb = container_of(urb, struct _urb, urb);
-+ struct hci_usb *husb = (void *) urb->context;
-+ struct hci_dev *hdev = &husb->hdev;
-+ int err, count = urb->actual_length;
-
-- DBG("%s status %d, count %d, flags %x", husb->hdev.name, urb->status, count, urb->transfer_flags);
-+ BT_DBG("%s urb %p type %d status %d count %d flags %x", hdev->name, urb,
-+ _urb->type, urb->status, count, urb->transfer_flags);
-
-- if (urb->status) {
-- /* Do not re-submit URB on critical errors */
-- switch (urb->status) {
-- case -ENOENT:
-- return;
-- default:
-- goto resubmit;
-- };
-- }
-- if (!count)
-- goto resubmit;
--
-- DMP(data, count);
-+ read_lock(&husb->completion_lock);
-
-- ah = (hci_acl_hdr *) data;
-- dlen = le16_to_cpu(ah->dlen);
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ goto unlock;
-
-- /* Verify frame len and completeness */
-- if ((count - HCI_ACL_HDR_SIZE) != dlen) {
-- ERR("%s corrupted ACL packet: count %d, plen %d", husb->hdev.name, count, dlen);
-+ if (urb->status || !count)
- goto resubmit;
-- }
-
-- /* Allocate packet */
-- if (!(skb = bluez_skb_alloc(count, GFP_ATOMIC))) {
-- ERR("Can't allocate mem for new packet");
-- goto resubmit;
-+ if (_urb->type == HCI_SCODATA_PKT) {
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ int i;
-+ for (i=0; i < urb->number_of_packets; i++) {
-+ BT_DBG("desc %d status %d offset %d len %d", i,
-+ urb->iso_frame_desc[i].status,
-+ urb->iso_frame_desc[i].offset,
-+ urb->iso_frame_desc[i].actual_length);
-+
-+ if (!urb->iso_frame_desc[i].status)
-+ __recv_frame(husb, _urb->type,
-+ urb->transfer_buffer + urb->iso_frame_desc[i].offset,
-+ urb->iso_frame_desc[i].actual_length);
-+ }
-+#else
-+ ;
-+#endif
-+ } else {
-+ err = __recv_frame(husb, _urb->type, urb->transfer_buffer, count);
-+ if (err < 0) {
-+ BT_ERR("%s corrupted packet: type %d count %d",
-+ husb->hdev.name, _urb->type, count);
-+ hdev->stat.err_rx++;
-+ }
- }
-
-- memcpy(skb_put(skb, count), data, count);
-- skb->dev = (void *) &husb->hdev;
-- skb->pkt_type = HCI_ACLDATA_PKT;
--
-- husb->hdev.stat.byte_rx += skb->len;
--
-- hci_recv_frame(skb);
--
- resubmit:
-- husb->read_urb->dev = husb->udev;
-- if ((status = usb_submit_urb(husb->read_urb)))
-- DBG("%s read URB submit failed %d", husb->hdev.name, status);
-+ if (_urb->type != HCI_EVENT_PKT) {
-+ urb->dev = husb->udev;
-+ err = usb_submit_urb(urb);
-+ BT_DBG("%s urb %p type %d resubmit status %d", hdev->name, urb,
-+ _urb->type, err);
-+ }
-
-- DBG("%s read URB re-submited", husb->hdev.name);
-+unlock:
-+ read_unlock(&husb->completion_lock);
- }
-
--static int hci_usb_ctrl_msg(struct hci_usb *husb, struct sk_buff *skb)
-+static void hci_usb_tx_complete(struct urb *urb)
- {
-- struct urb *urb = husb->ctrl_urb;
-- devrequest *dr = &husb->dev_req;
-- int pipe, status;
-+ struct _urb *_urb = container_of(urb, struct _urb, urb);
-+ struct hci_usb *husb = (void *) urb->context;
-+ struct hci_dev *hdev = &husb->hdev;
-
-- DBG("%s len %d", husb->hdev.name, skb->len);
-+ BT_DBG("%s urb %p status %d flags %x", hdev->name, urb,
-+ urb->status, urb->transfer_flags);
-
-- pipe = usb_sndctrlpipe(husb->udev, 0);
-+ atomic_dec(__pending_tx(husb, _urb->type));
-
-- dr->requesttype = HCI_CTRL_REQ;
-- dr->request = 0;
-- dr->index = 0;
-- dr->value = 0;
-- dr->length = cpu_to_le16(skb->len);
--
-- FILL_CONTROL_URB(urb, husb->udev, pipe, (void*)dr, skb->data, skb->len,
-- hci_usb_ctrl, skb);
-+ urb->transfer_buffer = NULL;
-+ kfree_skb((struct sk_buff *) _urb->priv);
-
-- if ((status = usb_submit_urb(urb))) {
-- DBG("%s control URB submit failed %d", husb->hdev.name, status);
-- return status;
-- }
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return;
-
-- return 0;
--}
-+ if (!urb->status)
-+ hdev->stat.byte_tx += urb->transfer_buffer_length;
-+ else
-+ hdev->stat.err_tx++;
-
--static int hci_usb_write_msg(struct hci_usb *husb, struct sk_buff *skb)
--{
-- struct urb *urb = husb->write_urb;
-- int pipe, status;
-+ read_lock(&husb->completion_lock);
-
-- DBG("%s len %d", husb->hdev.name, skb->len);
-+ _urb_unlink(_urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-
-- pipe = usb_sndbulkpipe(husb->udev, husb->bulk_out_ep_addr);
-+ hci_usb_tx_wakeup(husb);
-+
-+ read_unlock(&husb->completion_lock);
-+}
-
-- FILL_BULK_URB(urb, husb->udev, pipe, skb->data, skb->len,
-- hci_usb_bulk_write, skb);
-- urb->transfer_flags |= USB_QUEUE_BULK;
-+static void hci_usb_destruct(struct hci_dev *hdev)
-+{
-+ struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-
-- if ((status = usb_submit_urb(urb))) {
-- DBG("%s write URB submit failed %d", husb->hdev.name, status);
-- return status;
-- }
-+ BT_DBG("%s", hdev->name);
-
-- return 0;
-+ kfree(husb);
- }
-
--static void * hci_usb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id)
-+static void *hci_usb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id)
- {
-- struct usb_endpoint_descriptor *bulk_out_ep, *intr_in_ep, *bulk_in_ep;
-+ struct usb_endpoint_descriptor *bulk_out_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *isoc_out_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *bulk_in_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *isoc_in_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *intr_in_ep[HCI_MAX_IFACE_NUM];
- struct usb_interface_descriptor *uif;
- struct usb_endpoint_descriptor *ep;
-+ struct usb_interface *iface, *isoc_iface;
- struct hci_usb *husb;
- struct hci_dev *hdev;
-- int i, size, pipe;
-- __u8 * buf;
-+ int i, a, e, size, ifn, isoc_ifnum, isoc_alts;
-
-- DBG("udev %p ifnum %d", udev, ifnum);
-+ BT_DBG("udev %p ifnum %d", udev, ifnum);
-
-- /* Check device signature */
-- if ((udev->descriptor.bDeviceClass != HCI_DEV_CLASS) ||
-- (udev->descriptor.bDeviceSubClass != HCI_DEV_SUBCLASS)||
-- (udev->descriptor.bDeviceProtocol != HCI_DEV_PROTOCOL) )
-- return NULL;
-+ iface = &udev->actconfig->interface[0];
-
-- MOD_INC_USE_COUNT;
--
-- uif = &udev->actconfig->interface[ifnum].altsetting[0];
-+ if (!id->driver_info) {
-+ const struct usb_device_id *match;
-+ match = usb_match_id(udev, iface, blacklist_ids);
-+ if (match)
-+ id = match;
-+ }
-
-- if (uif->bNumEndpoints != 3) {
-- DBG("Wrong number of endpoints %d", uif->bNumEndpoints);
-- MOD_DEC_USE_COUNT;
-+ if (id->driver_info & HCI_IGNORE)
- return NULL;
-- }
-
-- bulk_out_ep = intr_in_ep = bulk_in_ep = NULL;
-+ /* Check number of endpoints */
-+ if (udev->actconfig->interface[ifnum].altsetting[0].bNumEndpoints < 3)
-+ return NULL;
-
-+ memset(bulk_out_ep, 0, sizeof(bulk_out_ep));
-+ memset(isoc_out_ep, 0, sizeof(isoc_out_ep));
-+ memset(bulk_in_ep, 0, sizeof(bulk_in_ep));
-+ memset(isoc_in_ep, 0, sizeof(isoc_in_ep));
-+ memset(intr_in_ep, 0, sizeof(intr_in_ep));
-+
-+ size = 0;
-+ isoc_iface = NULL;
-+ isoc_alts = isoc_ifnum = 0;
-+
- /* Find endpoints that we need */
-- for ( i = 0; i < uif->bNumEndpoints; ++i) {
-- ep = &uif->endpoint[i];
-
-- switch (ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-- case USB_ENDPOINT_XFER_BULK:
-- if (ep->bEndpointAddress & USB_DIR_IN)
-- bulk_in_ep = ep;
-- else
-- bulk_out_ep = ep;
-- break;
-+ ifn = MIN(udev->actconfig->bNumInterfaces, HCI_MAX_IFACE_NUM);
-+ for (i = 0; i < ifn; i++) {
-+ iface = &udev->actconfig->interface[i];
-+ for (a = 0; a < iface->num_altsetting; a++) {
-+ uif = &iface->altsetting[a];
-+ for (e = 0; e < uif->bNumEndpoints; e++) {
-+ ep = &uif->endpoint[e];
-+
-+ switch (ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-+ case USB_ENDPOINT_XFER_INT:
-+ if (ep->bEndpointAddress & USB_DIR_IN)
-+ intr_in_ep[i] = ep;
-+ break;
-+
-+ case USB_ENDPOINT_XFER_BULK:
-+ if (ep->bEndpointAddress & USB_DIR_IN)
-+ bulk_in_ep[i] = ep;
-+ else
-+ bulk_out_ep[i] = ep;
-+ break;
-+
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ case USB_ENDPOINT_XFER_ISOC:
-+ if (ep->wMaxPacketSize < size || a > 2)
-+ break;
-+ size = ep->wMaxPacketSize;
-+
-+ isoc_iface = iface;
-+ isoc_alts = a;
-+ isoc_ifnum = i;
-+
-+ if (ep->bEndpointAddress & USB_DIR_IN)
-+ isoc_in_ep[i] = ep;
-+ else
-+ isoc_out_ep[i] = ep;
-+ break;
-+#endif
-+ }
-+ }
-+ }
-+ }
-
-- case USB_ENDPOINT_XFER_INT:
-- intr_in_ep = ep;
-- break;
-- };
-+ if (!bulk_in_ep[0] || !bulk_out_ep[0] || !intr_in_ep[0]) {
-+ BT_DBG("Bulk endpoints not found");
-+ goto done;
- }
-
-- if (!bulk_in_ep || !bulk_out_ep || !intr_in_ep) {
-- DBG("Endpoints not found: %p %p %p", bulk_in_ep, bulk_out_ep, intr_in_ep);
-- MOD_DEC_USE_COUNT;
-- return NULL;
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ if (id->driver_info & HCI_BROKEN_ISOC || !isoc_in_ep[1] || !isoc_out_ep[1]) {
-+ BT_DBG("Isoc endpoints not found");
-+ isoc_iface = NULL;
- }
-+#endif
-
- if (!(husb = kmalloc(sizeof(struct hci_usb), GFP_KERNEL))) {
-- ERR("Can't allocate: control structure");
-- MOD_DEC_USE_COUNT;
-- return NULL;
-+ BT_ERR("Can't allocate: control structure");
-+ goto done;
- }
-
- memset(husb, 0, sizeof(struct hci_usb));
-
- husb->udev = udev;
-- husb->bulk_out_ep_addr = bulk_out_ep->bEndpointAddress;
--
-- if (!(husb->ctrl_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: control URB");
-- goto probe_error;
-- }
--
-- if (!(husb->write_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: write URB");
-- goto probe_error;
-- }
--
-- if (!(husb->read_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: read URB");
-- goto probe_error;
-- }
--
-- ep = bulk_in_ep;
-- pipe = usb_rcvbulkpipe(udev, ep->bEndpointAddress);
-- size = HCI_MAX_FRAME_SIZE;
--
-- if (!(buf = kmalloc(size, GFP_KERNEL))) {
-- ERR("Can't allocate: read buffer");
-- goto probe_error;
-- }
--
-- FILL_BULK_URB(husb->read_urb, udev, pipe, buf, size, hci_usb_bulk_read, husb);
-- husb->read_urb->transfer_flags |= USB_QUEUE_BULK;
--
-- ep = intr_in_ep;
-- pipe = usb_rcvintpipe(udev, ep->bEndpointAddress);
-- size = usb_maxpacket(udev, pipe, usb_pipeout(pipe));
--
-- if (!(husb->intr_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: interrupt URB");
-- goto probe_error;
-+ husb->bulk_out_ep = bulk_out_ep[0];
-+ husb->bulk_in_ep = bulk_in_ep[0];
-+ husb->intr_in_ep = intr_in_ep[0];
-+
-+ if (id->driver_info & HCI_DIGIANSWER)
-+ husb->ctrl_req = HCI_DIGI_REQ;
-+ else
-+ husb->ctrl_req = HCI_CTRL_REQ;
-+
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ if (isoc_iface) {
-+ BT_DBG("isoc ifnum %d alts %d", isoc_ifnum, isoc_alts);
-+ if (usb_set_interface(udev, isoc_ifnum, isoc_alts)) {
-+ BT_ERR("Can't set isoc interface settings");
-+ isoc_iface = NULL;
-+ }
-+ usb_driver_claim_interface(&hci_usb_driver, isoc_iface, husb);
-+ husb->isoc_iface = isoc_iface;
-+ husb->isoc_in_ep = isoc_in_ep[isoc_ifnum];
-+ husb->isoc_out_ep = isoc_out_ep[isoc_ifnum];
- }
-+#endif
-+
-+ husb->completion_lock = RW_LOCK_UNLOCKED;
-
-- if (!(buf = kmalloc(size, GFP_KERNEL))) {
-- ERR("Can't allocate: interrupt buffer");
-- goto probe_error;
-+ for (i = 0; i < 4; i++) {
-+ skb_queue_head_init(&husb->transmit_q[i]);
-+ _urb_queue_init(&husb->pending_q[i]);
-+ _urb_queue_init(&husb->completed_q[i]);
- }
-
-- FILL_INT_URB(husb->intr_urb, udev, pipe, buf, size, hci_usb_intr, husb, ep->bInterval);
--
-- skb_queue_head_init(&husb->tx_ctrl_q);
-- skb_queue_head_init(&husb->tx_write_q);
--
- /* Initialize and register HCI device */
- hdev = &husb->hdev;
-
-- hdev->type = HCI_USB;
-+ hdev->type = HCI_USB;
- hdev->driver_data = husb;
-
- hdev->open = hci_usb_open;
- hdev->close = hci_usb_close;
- hdev->flush = hci_usb_flush;
-- hdev->send = hci_usb_send_frame;
-+ hdev->send = hci_usb_send_frame;
-+ hdev->destruct = hci_usb_destruct;
-+
-+ if (id->driver_info & HCI_RESET)
-+ set_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks);
-
- if (hci_register_dev(hdev) < 0) {
-- ERR("Can't register HCI device %s", hdev->name);
-+ BT_ERR("Can't register HCI device");
- goto probe_error;
- }
-
- return husb;
-
- probe_error:
-- hci_usb_free_bufs(husb);
- kfree(husb);
-- MOD_DEC_USE_COUNT;
-+
-+done:
- return NULL;
- }
-
-@@ -626,38 +967,34 @@
- if (!husb)
- return;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s", hdev->name);
-
- hci_usb_close(hdev);
-
-- if (hci_unregister_dev(hdev) < 0) {
-- ERR("Can't unregister HCI device %s", hdev->name);
-- }
-+ if (husb->isoc_iface)
-+ usb_driver_release_interface(&hci_usb_driver, husb->isoc_iface);
-
-- hci_usb_free_bufs(husb);
-- kfree(husb);
--
-- MOD_DEC_USE_COUNT;
-+ if (hci_unregister_dev(hdev) < 0)
-+ BT_ERR("Can't unregister HCI device %s", hdev->name);
- }
-
--static struct usb_driver hci_usb_driver =
--{
-+static struct usb_driver hci_usb_driver = {
- name: "hci_usb",
- probe: hci_usb_probe,
- disconnect: hci_usb_disconnect,
-- id_table: usb_bluetooth_ids,
-+ id_table: bluetooth_ids,
- };
-
- int hci_usb_init(void)
- {
- int err;
-
-- INF("BlueZ HCI USB driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ BT_INFO("BlueZ HCI USB driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-
- if ((err = usb_register(&hci_usb_driver)) < 0)
-- ERR("Failed to register HCI USB driver");
-+ BT_ERR("Failed to register HCI USB driver");
-
- return err;
- }
-@@ -670,6 +1007,6 @@
- module_init(hci_usb_init);
- module_exit(hci_usb_cleanup);
-
--MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>");
- MODULE_DESCRIPTION("BlueZ HCI USB driver ver " VERSION);
- MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/hci_usb.h linux-2.4.18-mh15/drivers/bluetooth/hci_usb.h
---- linux-2.4.18/drivers/bluetooth/hci_usb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_usb.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,147 @@
-+/*
-+ HCI USB driver for Linux Bluetooth protocol stack (BlueZ)
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ Copyright (C) 2003 Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_usb.h,v 1.2 2002/03/18 19:10:04 maxk Exp $
-+ */
-+
-+#ifdef __KERNEL__
-+
-+/* Class, SubClass, and Protocol codes that describe a Bluetooth device */
-+#define HCI_DEV_CLASS 0xe0 /* Wireless class */
-+#define HCI_DEV_SUBCLASS 0x01 /* RF subclass */
-+#define HCI_DEV_PROTOCOL 0x01 /* Bluetooth programming protocol */
-+
-+#define HCI_CTRL_REQ 0x20
-+#define HCI_DIGI_REQ 0x40
-+
-+#define HCI_IGNORE 0x01
-+#define HCI_RESET 0x02
-+#define HCI_DIGIANSWER 0x04
-+#define HCI_BROKEN_ISOC 0x08
-+
-+#define HCI_MAX_IFACE_NUM 3
-+
-+#define HCI_MAX_BULK_TX 4
-+#define HCI_MAX_BULK_RX 1
-+
-+#define HCI_MAX_ISOC_RX 2
-+#define HCI_MAX_ISOC_TX 2
-+
-+#define HCI_MAX_ISOC_FRAMES 10
-+
-+struct _urb_queue {
-+ struct list_head head;
-+ spinlock_t lock;
-+};
-+
-+struct _urb {
-+ struct list_head list;
-+ struct _urb_queue *queue;
-+ int type;
-+ void *priv;
-+ struct urb urb;
-+};
-+
-+struct _urb *_urb_alloc(int isoc, int gfp);
-+
-+static inline void _urb_free(struct _urb *_urb)
-+{
-+ kfree(_urb);
-+}
-+
-+static inline void _urb_queue_init(struct _urb_queue *q)
-+{
-+ INIT_LIST_HEAD(&q->head);
-+ spin_lock_init(&q->lock);
-+}
-+
-+static inline void _urb_queue_head(struct _urb_queue *q, struct _urb *_urb)
-+{
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_add(&_urb->list, &q->head); _urb->queue = q;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+}
-+
-+static inline void _urb_queue_tail(struct _urb_queue *q, struct _urb *_urb)
-+{
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_add_tail(&_urb->list, &q->head); _urb->queue = q;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+}
-+
-+static inline void _urb_unlink(struct _urb *_urb)
-+{
-+ struct _urb_queue *q = _urb->queue;
-+ unsigned long flags;
-+ if (q) {
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_del(&_urb->list); _urb->queue = NULL;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+ }
-+}
-+
-+struct _urb *_urb_dequeue(struct _urb_queue *q);
-+
-+#ifndef container_of
-+#define container_of(ptr, type, member) ({ \
-+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
-+ (type *)( (char *)__mptr - offsetof(type,member) );})
-+#endif
-+
-+struct hci_usb {
-+ struct hci_dev hdev;
-+
-+ unsigned long state;
-+
-+ struct usb_device *udev;
-+
-+ struct usb_endpoint_descriptor *bulk_in_ep;
-+ struct usb_endpoint_descriptor *bulk_out_ep;
-+ struct usb_endpoint_descriptor *intr_in_ep;
-+
-+ struct usb_interface *isoc_iface;
-+ struct usb_endpoint_descriptor *isoc_out_ep;
-+ struct usb_endpoint_descriptor *isoc_in_ep;
-+
-+ __u8 ctrl_req;
-+
-+ struct sk_buff_head transmit_q[4];
-+ struct sk_buff *reassembly[4]; // Reassembly buffers
-+
-+ rwlock_t completion_lock;
-+
-+ atomic_t pending_tx[4]; // Number of pending requests
-+ struct _urb_queue pending_q[4]; // Pending requests
-+ struct _urb_queue completed_q[4]; // Completed requests
-+};
-+
-+/* States */
-+#define HCI_USB_TX_PROCESS 1
-+#define HCI_USB_TX_WAKEUP 2
-+
-+#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_vhci.c linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.c
---- linux-2.4.18/drivers/bluetooth/hci_vhci.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,9 +25,9 @@
- /*
- * BlueZ HCI virtual device driver.
- *
-- * $Id: hci_vhci.c,v 1.3 2001/08/03 04:19:50 maxk Exp $
-+ * $Id: hci_vhci.c,v 1.3 2002/04/17 17:37:20 maxk Exp $
- */
--#define VERSION "1.0"
-+#define VERSION "1.1"
-
- #include <linux/config.h>
- #include <linux/module.h>
-@@ -49,43 +49,56 @@
- #include <asm/uaccess.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/hci_vhci.h>
-+#include "hci_vhci.h"
-
- /* HCI device part */
-
--int hci_vhci_open(struct hci_dev *hdev)
-+static int hci_vhci_open(struct hci_dev *hdev)
- {
-- hdev->flags |= HCI_RUNNING;
-+ set_bit(HCI_RUNNING, &hdev->flags);
- return 0;
- }
-
--int hci_vhci_flush(struct hci_dev *hdev)
-+static int hci_vhci_flush(struct hci_dev *hdev)
- {
- struct hci_vhci_struct *hci_vhci = (struct hci_vhci_struct *) hdev->driver_data;
- skb_queue_purge(&hci_vhci->readq);
- return 0;
- }
-
--int hci_vhci_close(struct hci_dev *hdev)
-+static int hci_vhci_close(struct hci_dev *hdev)
- {
-- hdev->flags &= ~HCI_RUNNING;
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
- hci_vhci_flush(hdev);
- return 0;
- }
-
--int hci_vhci_send_frame(struct sk_buff *skb)
-+static void hci_vhci_destruct(struct hci_dev *hdev)
-+{
-+ struct hci_vhci_struct *vhci;
-+
-+ if (!hdev) return;
-+
-+ vhci = (struct hci_vhci_struct *) hdev->driver_data;
-+ kfree(vhci);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static int hci_vhci_send_frame(struct sk_buff *skb)
- {
- struct hci_dev* hdev = (struct hci_dev *) skb->dev;
- struct hci_vhci_struct *hci_vhci;
-
- if (!hdev) {
-- ERR("Frame for uknown device (hdev=NULL)");
-+ BT_ERR("Frame for uknown device (hdev=NULL)");
- return -ENODEV;
- }
-
-- if (!(hdev->flags & HCI_RUNNING))
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
- return -EBUSY;
-
- hci_vhci = (struct hci_vhci_struct *) hdev->driver_data;
-@@ -188,7 +201,7 @@
-
- add_wait_queue(&hci_vhci->read_wait, &wait);
- while (count) {
-- current->state = TASK_INTERRUPTIBLE;
-+ set_current_state(TASK_INTERRUPTIBLE);
-
- /* Read frames from device queue */
- if (!(skb = skb_dequeue(&hci_vhci->readq))) {
-@@ -214,8 +227,7 @@
- kfree_skb(skb);
- break;
- }
--
-- current->state = TASK_RUNNING;
-+ set_current_state(TASK_RUNNING);
- remove_wait_queue(&hci_vhci->read_wait, &wait);
-
- return ret;
-@@ -270,11 +282,13 @@
- hdev->close = hci_vhci_close;
- hdev->flush = hci_vhci_flush;
- hdev->send = hci_vhci_send_frame;
-+ hdev->destruct = hci_vhci_destruct;
-
- if (hci_register_dev(hdev) < 0) {
- kfree(hci_vhci);
- return -EBUSY;
- }
-+ MOD_INC_USE_COUNT;
-
- file->private_data = hci_vhci;
- return 0;
-@@ -285,12 +299,10 @@
- struct hci_vhci_struct *hci_vhci = (struct hci_vhci_struct *) file->private_data;
-
- if (hci_unregister_dev(&hci_vhci->hdev) < 0) {
-- ERR("Can't unregister HCI device %s", hci_vhci->hdev.name);
-+ BT_ERR("Can't unregister HCI device %s", hci_vhci->hdev.name);
- }
-
-- kfree(hci_vhci);
- file->private_data = NULL;
--
- return 0;
- }
-
-@@ -315,12 +327,12 @@
-
- int __init hci_vhci_init(void)
- {
-- INF("BlueZ VHCI driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ BT_INFO("BlueZ VHCI driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-
- if (misc_register(&hci_vhci_miscdev)) {
-- ERR("Can't register misc device %d\n", VHCI_MINOR);
-+ BT_ERR("Can't register misc device %d\n", VHCI_MINOR);
- return -EIO;
- }
-
-@@ -337,4 +349,4 @@
-
- MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
- MODULE_DESCRIPTION("BlueZ VHCI driver ver " VERSION);
--MODULE_LICENSE("GPL");
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/hci_vhci.h linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.h
---- linux-2.4.18/drivers/bluetooth/hci_vhci.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,50 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_vhci.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $
-+ */
-+
-+#ifndef __HCI_VHCI_H
-+#define __HCI_VHCI_H
-+
-+#ifdef __KERNEL__
-+
-+struct hci_vhci_struct {
-+ struct hci_dev hdev;
-+ __u32 flags;
-+ wait_queue_head_t read_wait;
-+ struct sk_buff_head readq;
-+ struct fasync_struct *fasync;
-+};
-+
-+/* VHCI device flags */
-+#define VHCI_FASYNC 0x0010
-+
-+#endif /* __KERNEL__ */
-+
-+#define VHCI_DEV "/dev/vhci"
-+#define VHCI_MINOR 250
-+
-+#endif /* __HCI_VHCI_H */
-diff -urN linux-2.4.18/drivers/bluetooth/Makefile linux-2.4.18-mh15/drivers/bluetooth/Makefile
---- linux-2.4.18/drivers/bluetooth/Makefile 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/bluetooth/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -1,11 +1,27 @@
- #
--# Makefile for Bluetooth HCI device drivers.
-+# Makefile for the Linux Bluetooth HCI device drivers
- #
-
- O_TARGET := bluetooth.o
-
-+list-multi := hci_uart.o
-+
- obj-$(CONFIG_BLUEZ_HCIUSB) += hci_usb.o
--obj-$(CONFIG_BLUEZ_HCIUART) += hci_uart.o
- obj-$(CONFIG_BLUEZ_HCIVHCI) += hci_vhci.o
-
-+obj-$(CONFIG_BLUEZ_HCIUART) += hci_uart.o
-+uart-y := hci_ldisc.o
-+uart-$(CONFIG_BLUEZ_HCIUART_H4) += hci_h4.o
-+uart-$(CONFIG_BLUEZ_HCIUART_BCSP) += hci_bcsp.o
-+
-+obj-$(CONFIG_BLUEZ_HCIBFUSB) += bfusb.o
-+
-+obj-$(CONFIG_BLUEZ_HCIDTL1) += dtl1_cs.o
-+obj-$(CONFIG_BLUEZ_HCIBT3C) += bt3c_cs.o
-+obj-$(CONFIG_BLUEZ_HCIBLUECARD) += bluecard_cs.o
-+obj-$(CONFIG_BLUEZ_HCIBTUART) += btuart_cs.o
-+
- include $(TOPDIR)/Rules.make
-+
-+hci_uart.o: $(uart-y)
-+ $(LD) -r -o $@ $(uart-y)
-diff -urN linux-2.4.18/drivers/bluetooth/Makefile.lib linux-2.4.18-mh15/drivers/bluetooth/Makefile.lib
---- linux-2.4.18/drivers/bluetooth/Makefile.lib 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/Makefile.lib 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,2 @@
-+obj-$(CONFIG_BLUEZ_HCIBFUSB) += firmware_class.o
-+obj-$(CONFIG_BLUEZ_HCIBT3C) += firmware_class.o
-diff -urN linux-2.4.18/drivers/char/pcmcia/serial_cs.c linux-2.4.18-mh15/drivers/char/pcmcia/serial_cs.c
---- linux-2.4.18/drivers/char/pcmcia/serial_cs.c 2001-12-21 18:41:54.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/char/pcmcia/serial_cs.c 2004-08-01 16:26:23.000000000 +0200
-@@ -2,7 +2,7 @@
-
- A driver for PCMCIA serial devices
-
-- serial_cs.c 1.128 2001/10/18 12:18:35
-+ serial_cs.c 1.138 2002/10/25 06:24:52
-
- The contents of this file are subject to the Mozilla Public
- License Version 1.1 (the "License"); you may not use this file
-@@ -69,14 +69,14 @@
- static int irq_list[4] = { -1 };
- MODULE_PARM(irq_list, "1-4i");
-
--/* Enable the speaker? */
--INT_MODULE_PARM(do_sound, 1);
-+INT_MODULE_PARM(do_sound, 1); /* Enable the speaker? */
-+INT_MODULE_PARM(buggy_uart, 0); /* Skip strict UART tests? */
-
- #ifdef PCMCIA_DEBUG
- INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG);
- #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args)
- static char *version =
--"serial_cs.c 1.128 2001/10/18 12:18:35 (David Hinds)";
-+"serial_cs.c 1.138 2002/10/25 06:24:52 (David Hinds)";
- #else
- #define DEBUG(n, args...)
- #endif
-@@ -95,6 +95,7 @@
- { MANFID_OMEGA, PRODID_OMEGA_QSP_100, 4 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D1, 2 },
-+ { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D2, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS232, 4 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS422, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS422, 4 },
-@@ -148,7 +149,7 @@
- client_reg_t client_reg;
- dev_link_t *link;
- int i, ret;
--
-+
- DEBUG(0, "serial_attach()\n");
-
- /* Create new serial device */
-@@ -160,7 +161,7 @@
- link->release.function = &serial_release;
- link->release.data = (u_long)link;
- link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-- link->io.NumPorts1 = 8;
-+ link->io.Attributes2 = IO_DATA_PATH_WIDTH_8;
- link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
- link->irq.IRQInfo1 = IRQ_INFO2_VALID|IRQ_LEVEL_ID;
- if (irq_list[0] == -1)
-@@ -169,13 +170,12 @@
- for (i = 0; i < 4; i++)
- link->irq.IRQInfo2 |= 1 << irq_list[i];
- link->conf.Attributes = CONF_ENABLE_IRQ;
-- link->conf.Vcc = 50;
- if (do_sound) {
- link->conf.Attributes |= CONF_ENABLE_SPKR;
- link->conf.Status = CCSR_AUDIO_ENA;
- }
- link->conf.IntType = INT_MEMORY_AND_IO;
--
-+
- /* Register with Card Services */
- link->next = dev_list;
- dev_list = link;
-@@ -194,7 +194,7 @@
- serial_detach(link);
- return NULL;
- }
--
-+
- return link;
- } /* serial_attach */
-
-@@ -214,7 +214,7 @@
- int ret;
-
- DEBUG(0, "serial_detach(0x%p)\n", link);
--
-+
- /* Locate device structure */
- for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
- if (*linkp == link) break;
-@@ -224,17 +224,17 @@
- del_timer(&link->release);
- if (link->state & DEV_CONFIG)
- serial_release((u_long)link);
--
-+
- if (link->handle) {
- ret = CardServices(DeregisterClient, link->handle);
- if (ret != CS_SUCCESS)
- cs_error(link->handle, DeregisterClient, ret);
- }
--
-+
- /* Unlink device structure, free bits */
- *linkp = link->next;
- kfree(info);
--
-+
- } /* serial_detach */
-
- /*====================================================================*/
-@@ -243,18 +243,20 @@
- {
- struct serial_struct serial;
- int line;
--
-+
- memset(&serial, 0, sizeof(serial));
- serial.port = port;
- serial.irq = irq;
- serial.flags = ASYNC_SKIP_TEST | ASYNC_SHARE_IRQ;
-+ if (buggy_uart)
-+ serial.flags |= ASYNC_BUGGY_UART;
- line = register_serial(&serial);
- if (line < 0) {
- printk(KERN_NOTICE "serial_cs: register_serial() at 0x%04lx,"
- " irq %d failed\n", (u_long)serial.port, serial.irq);
- return -1;
- }
--
-+
- info->line[info->ndev] = line;
- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
- info->node[info->ndev].major = TTY_MAJOR;
-@@ -262,7 +264,7 @@
- if (info->ndev > 0)
- info->node[info->ndev-1].next = &info->node[info->ndev];
- info->ndev++;
--
-+
- return 0;
- }
-
-@@ -313,7 +315,10 @@
- return setup_serial(info, port, config.AssignedIRQ);
- }
- link->conf.Vcc = config.Vcc;
--
-+
-+ link->io.NumPorts1 = 8;
-+ link->io.NumPorts2 = 0;
-+
- /* First pass: look for a config entry that looks normal. */
- tuple.TupleData = (cisdata_t *)buf;
- tuple.TupleOffset = 0; tuple.TupleDataMax = 255;
-@@ -340,7 +345,7 @@
- i = next_tuple(handle, &tuple, &parse);
- }
- }
--
-+
- /* Second pass: try to find an entry that isn't picky about
- its base address, then try to grab any standard serial port
- address, and finally try to get any free port. */
-@@ -352,8 +357,7 @@
- for (j = 0; j < 5; j++) {
- link->io.BasePort1 = base[j];
- link->io.IOAddrLines = base[j] ? 16 : 3;
-- i = CardServices(RequestIO, link->handle,
-- &link->io);
-+ i = CardServices(RequestIO, link->handle, &link->io);
- if (i == CS_SUCCESS) goto found_port;
- }
- }
-@@ -365,7 +369,7 @@
- cs_error(link->handle, RequestIO, i);
- return -1;
- }
--
-+
- i = CardServices(RequestIRQ, link->handle, &link->irq);
- if (i != CS_SUCCESS) {
- cs_error(link->handle, RequestIRQ, i);
-@@ -390,8 +394,12 @@
- u_char buf[256];
- cisparse_t parse;
- cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
- int i, base2 = 0;
-
-+ CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
- tuple.TupleData = (cisdata_t *)buf;
- tuple.TupleOffset = 0; tuple.TupleDataMax = 255;
- tuple.Attributes = 0;
-@@ -433,12 +441,12 @@
- i = next_tuple(handle, &tuple, &parse);
- }
- }
--
-+
- if (i != CS_SUCCESS) {
-- cs_error(link->handle, RequestIO, i);
-- return -1;
-+ /* At worst, try to configure as a single port */
-+ return simple_config(link);
- }
--
-+
- i = CardServices(RequestIRQ, link->handle, &link->irq);
- if (i != CS_SUCCESS) {
- cs_error(link->handle, RequestIRQ, i);
-@@ -454,14 +462,27 @@
- cs_error(link->handle, RequestConfiguration, i);
- return -1;
- }
--
-+
-+ /* The Oxford Semiconductor OXCF950 cards are in fact single-port:
-+ 8 registers are for the UART, the others are extra registers */
-+ if (info->manfid == MANFID_OXSEMI) {
-+ if (cf->index == 1 || cf->index == 3) {
-+ setup_serial(info, base2, link->irq.AssignedIRQ);
-+ outb(12,link->io.BasePort1+1);
-+ } else {
-+ setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ);
-+ outb(12,base2+1);
-+ }
-+ return 0;
-+ }
-+
- setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ);
- /* The Nokia cards are not really multiport cards */
- if (info->manfid == MANFID_NOKIA)
- return 0;
- for (i = 0; i < info->multi-1; i++)
- setup_serial(info, base2+(8*i), link->irq.AssignedIRQ);
--
-+
- return 0;
- }
-
-@@ -500,7 +521,7 @@
- }
- link->conf.ConfigBase = parse.config.base;
- link->conf.Present = parse.config.rmask[0];
--
-+
- /* Configure card */
- link->state |= DEV_CONFIG;
-
-@@ -508,8 +529,8 @@
- tuple.DesiredTuple = CISTPL_LONGLINK_MFC;
- tuple.Attributes = TUPLE_RETURN_COMMON | TUPLE_RETURN_LINK;
- info->multi = (first_tuple(handle, &tuple, &parse) == CS_SUCCESS);
--
-- /* Is this a multiport card? */
-+
-+ /* Scan list of known multiport card ID's */
- tuple.DesiredTuple = CISTPL_MANFID;
- if (first_tuple(handle, &tuple, &parse) == CS_SUCCESS) {
- info->manfid = le16_to_cpu(buf[0]);
-@@ -537,15 +558,15 @@
- info->multi = 2;
- }
- }
--
-+
- if (info->multi > 1)
- multi_config(link);
- else
- simple_config(link);
--
-+
- if (info->ndev == 0)
- goto failed;
--
-+
- if (info->manfid == MANFID_IBM) {
- conf_reg_t reg = { 0, CS_READ, 0x800, 0 };
- CS_CHECK(AccessConfigurationRegister, link->handle, &reg);
-@@ -562,6 +583,7 @@
- cs_error(link->handle, last_fn, last_ret);
- failed:
- serial_release((u_long)link);
-+ link->state &= ~DEV_CONFIG_PENDING;
-
- } /* serial_config */
-
-@@ -569,7 +591,7 @@
-
- After a card is removed, serial_release() will unregister the net
- device, and release the PCMCIA configuration.
--
-+
- ======================================================================*/
-
- void serial_release(u_long arg)
-@@ -577,7 +599,7 @@
- dev_link_t *link = (dev_link_t *)arg;
- serial_info_t *info = link->priv;
- int i;
--
-+
- DEBUG(0, "serial_release(0x%p)\n", link);
-
- for (i = 0; i < info->ndev; i++) {
-@@ -590,7 +612,7 @@
- CardServices(ReleaseIO, link->handle, &link->io);
- CardServices(ReleaseIRQ, link->handle, &link->irq);
- }
--
-+
- link->state &= ~DEV_CONFIG;
-
- } /* serial_release */
-@@ -601,7 +623,7 @@
- stuff to run after an event is received. A CARD_REMOVAL event
- also sets some flags to discourage the serial drivers from
- talking to the ports.
--
-+
- ======================================================================*/
-
- static int serial_event(event_t event, int priority,
-@@ -609,9 +631,9 @@
- {
- dev_link_t *link = args->client_data;
- serial_info_t *info = link->priv;
--
-+
- DEBUG(1, "serial_event(0x%06x)\n", event);
--
-+
- switch (event) {
- case CS_EVENT_CARD_REMOVAL:
- link->state &= ~DEV_PRESENT;
-@@ -650,7 +672,7 @@
- if (serv.Revision != CS_RELEASE_CODE) {
- printk(KERN_NOTICE "serial_cs: Card Services release "
- "does not match!\n");
-- return -1;
-+ return -EINVAL;
- }
- register_pccard_driver(&dev_info, &serial_attach, &serial_detach);
- return 0;
-diff -urN linux-2.4.18/drivers/input/Config.in linux-2.4.18-mh15/drivers/input/Config.in
---- linux-2.4.18/drivers/input/Config.in 2001-09-13 00:34:06.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/input/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -14,5 +14,6 @@
- fi
- dep_tristate ' Joystick support' CONFIG_INPUT_JOYDEV $CONFIG_INPUT
- dep_tristate ' Event interface support' CONFIG_INPUT_EVDEV $CONFIG_INPUT
-+dep_tristate ' User level driver support' CONFIG_INPUT_UINPUT $CONFIG_INPUT
-
- endmenu
-diff -urN linux-2.4.18/drivers/input/keybdev.c linux-2.4.18-mh15/drivers/input/keybdev.c
---- linux-2.4.18/drivers/input/keybdev.c 2001-10-11 18:14:32.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/input/keybdev.c 2004-08-01 16:26:23.000000000 +0200
-@@ -154,16 +154,18 @@
-
- static struct input_handler keybdev_handler;
-
-+static unsigned int ledstate = 0xff;
-+
- void keybdev_ledfunc(unsigned int led)
- {
- struct input_handle *handle;
-
-- for (handle = keybdev_handler.handle; handle; handle = handle->hnext) {
-+ ledstate = led;
-
-+ for (handle = keybdev_handler.handle; handle; handle = handle->hnext) {
- input_event(handle->dev, EV_LED, LED_SCROLLL, !!(led & 0x01));
- input_event(handle->dev, EV_LED, LED_NUML, !!(led & 0x02));
- input_event(handle->dev, EV_LED, LED_CAPSL, !!(led & 0x04));
--
- }
- }
-
-@@ -202,6 +204,12 @@
-
- // printk(KERN_INFO "keybdev.c: Adding keyboard: input%d\n", dev->number);
-
-+ if (ledstate != 0xff) {
-+ input_event(dev, EV_LED, LED_SCROLLL, !!(ledstate & 0x01));
-+ input_event(dev, EV_LED, LED_NUML, !!(ledstate & 0x02));
-+ input_event(dev, EV_LED, LED_CAPSL, !!(ledstate & 0x04));
-+ }
-+
- return handle;
- }
-
-diff -urN linux-2.4.18/drivers/input/Makefile linux-2.4.18-mh15/drivers/input/Makefile
---- linux-2.4.18/drivers/input/Makefile 2000-12-29 23:07:22.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/input/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -24,6 +24,7 @@
- obj-$(CONFIG_INPUT_MOUSEDEV) += mousedev.o
- obj-$(CONFIG_INPUT_JOYDEV) += joydev.o
- obj-$(CONFIG_INPUT_EVDEV) += evdev.o
-+obj-$(CONFIG_INPUT_UINPUT) += uinput.o
-
- # The global Rules.make.
-
-diff -urN linux-2.4.18/drivers/input/uinput.c linux-2.4.18-mh15/drivers/input/uinput.c
---- linux-2.4.18/drivers/input/uinput.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/input/uinput.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,428 @@
-+/*
-+ * User level driver support for input subsystem
-+ *
-+ * Heavily based on evdev.c by Vojtech Pavlik
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
-+ *
-+ * Changes/Revisions:
-+ * 0.1 20/06/2002
-+ * - first public version
-+ */
-+
-+#include <linux/poll.h>
-+#include <linux/slab.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/input.h>
-+#include <linux/smp_lock.h>
-+#include <linux/fs.h>
-+#include <linux/miscdevice.h>
-+#include <linux/uinput.h>
-+
-+static int uinput_dev_open(struct input_dev *dev)
-+{
-+ return 0;
-+}
-+
-+static void uinput_dev_close(struct input_dev *dev)
-+{
-+}
-+
-+static int uinput_dev_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
-+{
-+ struct uinput_device *udev;
-+
-+ udev = (struct uinput_device *)dev->private;
-+
-+ udev->buff[udev->head].type = type;
-+ udev->buff[udev->head].code = code;
-+ udev->buff[udev->head].value = value;
-+ do_gettimeofday(&udev->buff[udev->head].time);
-+ udev->head = (udev->head + 1) % UINPUT_BUFFER_SIZE;
-+
-+ wake_up_interruptible(&udev->waitq);
-+
-+ return 0;
-+}
-+
-+static int uinput_dev_upload_effect(struct input_dev *dev, struct ff_effect *effect)
-+{
-+ return 0;
-+}
-+
-+static int uinput_dev_erase_effect(struct input_dev *dev, int effect_id)
-+{
-+ return 0;
-+}
-+
-+static int uinput_create_device(struct uinput_device *udev)
-+{
-+ if (!udev->dev->name) {
-+ printk(KERN_DEBUG "%s: write device info first\n", UINPUT_NAME);
-+ return -EINVAL;
-+ }
-+
-+ udev->dev->open = uinput_dev_open;
-+ udev->dev->close = uinput_dev_close;
-+ udev->dev->event = uinput_dev_event;
-+ udev->dev->upload_effect = uinput_dev_upload_effect;
-+ udev->dev->erase_effect = uinput_dev_erase_effect;
-+ udev->dev->private = udev;
-+
-+ init_waitqueue_head(&(udev->waitq));
-+
-+ input_register_device(udev->dev);
-+
-+ set_bit(UIST_CREATED, &(udev->state));
-+
-+ return 0;
-+}
-+
-+static int uinput_destroy_device(struct uinput_device *udev)
-+{
-+ if (!test_bit(UIST_CREATED, &(udev->state))) {
-+ printk(KERN_WARNING "%s: create the device first\n", UINPUT_NAME);
-+ return -EINVAL;
-+ }
-+
-+ input_unregister_device(udev->dev);
-+
-+ clear_bit(UIST_CREATED, &(udev->state));
-+
-+ return 0;
-+}
-+
-+static int uinput_open(struct inode *inode, struct file *file)
-+{
-+ struct uinput_device *newdev;
-+ struct input_dev *newinput;
-+
-+ newdev = kmalloc(sizeof(struct uinput_device), GFP_KERNEL);
-+ if (!newdev)
-+ goto error;
-+ memset(newdev, 0, sizeof(struct uinput_device));
-+
-+ newinput = kmalloc(sizeof(struct input_dev), GFP_KERNEL);
-+ if (!newinput)
-+ goto cleanup;
-+ memset(newinput, 0, sizeof(struct input_dev));
-+
-+ newdev->dev = newinput;
-+
-+ file->private_data = newdev;
-+
-+ return 0;
-+cleanup:
-+ kfree(newdev);
-+error:
-+ return -ENOMEM;
-+}
-+
-+static int uinput_validate_absbits(struct input_dev *dev)
-+{
-+ unsigned int cnt;
-+ int retval = 0;
-+
-+ for (cnt = 0; cnt < ABS_MAX; cnt++) {
-+ if (!test_bit(cnt, dev->absbit))
-+ continue;
-+
-+ if (/*!dev->absmin[cnt] || !dev->absmax[cnt] || */
-+ (dev->absmax[cnt] <= dev->absmin[cnt])) {
-+ printk(KERN_DEBUG
-+ "%s: invalid abs[%02x] min:%d max:%d\n",
-+ UINPUT_NAME, cnt,
-+ dev->absmin[cnt], dev->absmax[cnt]);
-+ retval = -EINVAL;
-+ break;
-+ }
-+
-+ if ((dev->absflat[cnt] < dev->absmin[cnt]) ||
-+ (dev->absflat[cnt] > dev->absmax[cnt])) {
-+ printk(KERN_DEBUG
-+ "%s: absflat[%02x] out of range: %d "
-+ "(min:%d/max:%d)\n",
-+ UINPUT_NAME, cnt, dev->absflat[cnt],
-+ dev->absmin[cnt], dev->absmax[cnt]);
-+ retval = -EINVAL;
-+ break;
-+ }
-+ }
-+ return retval;
-+}
-+
-+static int uinput_alloc_device(struct file *file, const char *buffer, size_t count)
-+{
-+ struct uinput_user_dev *user_dev;
-+ struct input_dev *dev;
-+ struct uinput_device *udev;
-+ int size,
-+ retval;
-+
-+ retval = count;
-+
-+ udev = (struct uinput_device *)file->private_data;
-+ dev = udev->dev;
-+
-+ user_dev = kmalloc(sizeof(*user_dev), GFP_KERNEL);
-+ if (!user_dev) {
-+ retval = -ENOMEM;
-+ goto exit;
-+ }
-+
-+ if (copy_from_user(user_dev, buffer, sizeof(struct uinput_user_dev))) {
-+ retval = -EFAULT;
-+ goto exit;
-+ }
-+
-+ if (NULL != dev->name)
-+ kfree(dev->name);
-+
-+ size = strnlen(user_dev->name, UINPUT_MAX_NAME_SIZE) + 1;
-+ dev->name = kmalloc(size, GFP_KERNEL);
-+ if (!dev->name) {
-+ retval = -ENOMEM;
-+ goto exit;
-+ }
-+
-+ strncpy(dev->name, user_dev->name, size);
-+ dev->idbus = user_dev->idbus;
-+ dev->idvendor = user_dev->idvendor;
-+ dev->idproduct = user_dev->idproduct;
-+ dev->idversion = user_dev->idversion;
-+ dev->ff_effects_max = user_dev->ff_effects_max;
-+
-+ size = sizeof(int) * (ABS_MAX + 1);
-+ memcpy(dev->absmax, user_dev->absmax, size);
-+ memcpy(dev->absmin, user_dev->absmin, size);
-+ memcpy(dev->absfuzz, user_dev->absfuzz, size);
-+ memcpy(dev->absflat, user_dev->absflat, size);
-+
-+ /* check if absmin/absmax/absfuzz/absflat are filled as
-+ * told in Documentation/input/input-programming.txt */
-+ if (test_bit(EV_ABS, dev->evbit)) {
-+ retval = uinput_validate_absbits(dev);
-+ if (retval < 0)
-+ kfree(dev->name);
-+ }
-+
-+exit:
-+ kfree(user_dev);
-+ return retval;
-+}
-+
-+static ssize_t uinput_write(struct file *file, const char *buffer, size_t count, loff_t *ppos)
-+{
-+ struct uinput_device *udev = file->private_data;
-+
-+ if (test_bit(UIST_CREATED, &(udev->state))) {
-+ struct input_event ev;
-+
-+ if (copy_from_user(&ev, buffer, sizeof(struct input_event)))
-+ return -EFAULT;
-+ input_event(udev->dev, ev.type, ev.code, ev.value);
-+ }
-+ else
-+ count = uinput_alloc_device(file, buffer, count);
-+
-+ return count;
-+}
-+
-+static ssize_t uinput_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
-+{
-+ struct uinput_device *udev = file->private_data;
-+ int retval = 0;
-+
-+ if (!test_bit(UIST_CREATED, &(udev->state)))
-+ return -ENODEV;
-+
-+ if ((udev->head == udev->tail) && (file->f_flags & O_NONBLOCK))
-+ return -EAGAIN;
-+
-+ retval = wait_event_interruptible(udev->waitq,
-+ (udev->head != udev->tail) ||
-+ !test_bit(UIST_CREATED, &(udev->state)));
-+
-+ if (retval)
-+ return retval;
-+
-+ if (!test_bit(UIST_CREATED, &(udev->state)))
-+ return -ENODEV;
-+
-+ while ((udev->head != udev->tail) &&
-+ (retval + sizeof(struct input_event) <= count)) {
-+ if (copy_to_user(buffer + retval, &(udev->buff[udev->tail]),
-+ sizeof(struct input_event))) return -EFAULT;
-+ udev->tail = (udev->tail + 1) % UINPUT_BUFFER_SIZE;
-+ retval += sizeof(struct input_event);
-+ }
-+
-+ return retval;
-+}
-+
-+static unsigned int uinput_poll(struct file *file, poll_table *wait)
-+{
-+ struct uinput_device *udev = file->private_data;
-+
-+ poll_wait(file, &udev->waitq, wait);
-+
-+ if (udev->head != udev->tail)
-+ return POLLIN | POLLRDNORM;
-+
-+ return 0;
-+}
-+
-+static int uinput_burn_device(struct uinput_device *udev)
-+{
-+ if (test_bit(UIST_CREATED, &(udev->state)))
-+ uinput_destroy_device(udev);
-+
-+ kfree(udev->dev);
-+ kfree(udev);
-+
-+ return 0;
-+}
-+
-+static int uinput_close(struct inode *inode, struct file *file)
-+{
-+ return uinput_burn_device((struct uinput_device *)file->private_data);
-+}
-+
-+static int uinput_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
-+{
-+ int retval = 0;
-+ struct uinput_device *udev;
-+
-+ udev = (struct uinput_device *)file->private_data;
-+
-+ /* device attributes can not be changed after the device is created */
-+ if (cmd >= UI_SET_EVBIT && test_bit(UIST_CREATED, &(udev->state)))
-+ return -EINVAL;
-+
-+ switch (cmd) {
-+ case UI_DEV_CREATE:
-+ retval = uinput_create_device(udev);
-+ break;
-+
-+ case UI_DEV_DESTROY:
-+ retval = uinput_destroy_device(udev);
-+ break;
-+
-+ case UI_SET_EVBIT:
-+ if (arg > EV_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->evbit);
-+ break;
-+
-+ case UI_SET_KEYBIT:
-+ if (arg > KEY_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->keybit);
-+ break;
-+
-+ case UI_SET_RELBIT:
-+ if (arg > REL_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->relbit);
-+ break;
-+
-+ case UI_SET_ABSBIT:
-+ if (arg > ABS_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->absbit);
-+ break;
-+
-+ case UI_SET_MSCBIT:
-+ if (arg > MSC_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->mscbit);
-+ break;
-+
-+ case UI_SET_LEDBIT:
-+ if (arg > LED_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->ledbit);
-+ break;
-+
-+ case UI_SET_SNDBIT:
-+ if (arg > SND_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->sndbit);
-+ break;
-+
-+ case UI_SET_FFBIT:
-+ if (arg > FF_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->ffbit);
-+ break;
-+
-+ default:
-+ retval = -EFAULT;
-+ }
-+ return retval;
-+}
-+
-+struct file_operations uinput_fops = {
-+ owner: THIS_MODULE,
-+ open: uinput_open,
-+ release: uinput_close,
-+ read: uinput_read,
-+ write: uinput_write,
-+ poll: uinput_poll,
-+ ioctl: uinput_ioctl,
-+};
-+
-+static struct miscdevice uinput_misc = {
-+ fops: &uinput_fops,
-+ minor: UINPUT_MINOR,
-+ name: UINPUT_NAME,
-+};
-+
-+static int __init uinput_init(void)
-+{
-+ return misc_register(&uinput_misc);
-+}
-+
-+static void __exit uinput_exit(void)
-+{
-+ misc_deregister(&uinput_misc);
-+}
-+
-+MODULE_AUTHOR("Aristeu Sergio Rozanski Filho");
-+MODULE_DESCRIPTION("User level driver support for input subsystem");
-+MODULE_LICENSE("GPL");
-+
-+module_init(uinput_init);
-+module_exit(uinput_exit);
-+
-diff -urN linux-2.4.18/drivers/isdn/avmb1/capidrv.c linux-2.4.18-mh15/drivers/isdn/avmb1/capidrv.c
---- linux-2.4.18/drivers/isdn/avmb1/capidrv.c 2001-12-21 18:41:54.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/isdn/avmb1/capidrv.c 2004-08-01 16:26:23.000000000 +0200
-@@ -514,13 +514,25 @@
-
- static void send_message(capidrv_contr * card, _cmsg * cmsg)
- {
-- struct sk_buff *skb;
-- size_t len;
-+ struct sk_buff *skb;
-+ size_t len;
-+ u16 err;
-+
- capi_cmsg2message(cmsg, cmsg->buf);
- len = CAPIMSG_LEN(cmsg->buf);
- skb = alloc_skb(len, GFP_ATOMIC);
-+ if(!skb) {
-+ printk(KERN_ERR "no skb len(%d) memory\n", len);
-+ return;
-+ }
- memcpy(skb_put(skb, len), cmsg->buf, len);
-- (*capifuncs->capi_put_message) (global.appid, skb);
-+ err = (*capifuncs->capi_put_message) (global.appid, skb);
-+ if (err) {
-+ printk(KERN_WARNING "%s: capi_put_message error: %04x\n",
-+ __FUNCTION__, err);
-+ kfree_skb(skb);
-+ return;
-+ }
- global.nsentctlpkt++;
- }
-
-@@ -2179,10 +2191,10 @@
- free_ncci(card, card->bchans[card->nbchan-1].nccip);
- if (card->bchans[card->nbchan-1].plcip)
- free_plci(card, card->bchans[card->nbchan-1].plcip);
-- if (card->plci_list)
-- printk(KERN_ERR "capidrv: bug in free_plci()\n");
- card->nbchan--;
- }
-+ if (card->plci_list)
-+ printk(KERN_ERR "capidrv: bug in free_plci()\n");
- kfree(card->bchans);
- card->bchans = 0;
-
-diff -urN linux-2.4.18/drivers/isdn/avmb1/kcapi.c linux-2.4.18-mh15/drivers/isdn/avmb1/kcapi.c
---- linux-2.4.18/drivers/isdn/avmb1/kcapi.c 2001-12-21 18:41:54.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/isdn/avmb1/kcapi.c 2004-08-01 16:26:23.000000000 +0200
-@@ -545,7 +545,13 @@
- static void notify_up(__u32 contr)
- {
- struct capi_interface_user *p;
-+ __u16 appl;
-
-+ for (appl = 1; appl <= CAPI_MAXAPPL; appl++) {
-+ if (!VALID_APPLID(appl)) continue;
-+ if (APPL(appl)->releasing) continue;
-+ CARD(contr)->driver->register_appl(CARD(contr), appl, &APPL(appl)->rparam);
-+ }
- printk(KERN_NOTICE "kcapi: notify up contr %d\n", contr);
- spin_lock(&capi_users_lock);
- for (p = capi_users; p; p = p->next) {
-@@ -705,12 +711,16 @@
- nextpp = &(*pp)->next;
- }
- }
-- APPL(appl)->releasing--;
-- if (APPL(appl)->releasing <= 0) {
-- APPL(appl)->signal = 0;
-- APPL_MARK_FREE(appl);
-- printk(KERN_INFO "kcapi: appl %d down\n", appl);
-- }
-+ if (APPL(appl)->releasing) { /* only release if the application was marked for release */
-+ printk(KERN_DEBUG "kcapi: appl %d releasing(%d)\n", appl, APPL(appl)->releasing);
-+ APPL(appl)->releasing--;
-+ if (APPL(appl)->releasing <= 0) {
-+ APPL(appl)->signal = 0;
-+ APPL_MARK_FREE(appl);
-+ printk(KERN_INFO "kcapi: appl %d down\n", appl);
-+ }
-+ } else
-+ printk(KERN_WARNING "kcapi: appl %d card%d released without request\n", appl, card->cnr);
- }
- /*
- * ncci management
-@@ -863,16 +873,7 @@
-
- static void controllercb_ready(struct capi_ctr * card)
- {
-- __u16 appl;
--
- card->cardstate = CARD_RUNNING;
--
-- for (appl = 1; appl <= CAPI_MAXAPPL; appl++) {
-- if (!VALID_APPLID(appl)) continue;
-- if (APPL(appl)->releasing) continue;
-- card->driver->register_appl(card, appl, &APPL(appl)->rparam);
-- }
--
- printk(KERN_NOTICE "kcapi: card %d \"%s\" ready.\n",
- CARDNR(card), card->name);
-
-diff -urN linux-2.4.18/drivers/usb/Config.in linux-2.4.18-mh15/drivers/usb/Config.in
---- linux-2.4.18/drivers/usb/Config.in 2002-02-25 20:38:07.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/usb/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -31,7 +31,13 @@
-
- comment 'USB Device Class drivers'
- dep_tristate ' USB Audio support' CONFIG_USB_AUDIO $CONFIG_USB $CONFIG_SOUND
--dep_tristate ' USB Bluetooth support (EXPERIMENTAL)' CONFIG_USB_BLUETOOTH $CONFIG_USB $CONFIG_EXPERIMENTAL
-+if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-+ if [ "$CONFIG_BLUEZ" = "n" ]; then
-+ dep_tristate ' USB Bluetooth support (EXPERIMENTAL)' CONFIG_USB_BLUETOOTH $CONFIG_USB
-+ else
-+ comment ' USB Bluetooth can only be used with disabled Bluetooth subsystem'
-+ fi
-+fi
- if [ "$CONFIG_SCSI" = "n" ]; then
- comment ' SCSI support is needed for USB Storage'
- fi
-diff -urN linux-2.4.18/drivers/usb/hid-core.c linux-2.4.18-mh15/drivers/usb/hid-core.c
---- linux-2.4.18/drivers/usb/hid-core.c 2001-12-21 18:41:55.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/usb/hid-core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -217,6 +217,8 @@
-
- offset = report->size;
- report->size += parser->global.report_size * parser->global.report_count;
-+ if (usages < parser->global.report_count)
-+ usages = parser->global.report_count;
-
- if (usages == 0)
- return 0; /* ignore padding fields */
-diff -urN linux-2.4.18/include/linux/firmware.h linux-2.4.18-mh15/include/linux/firmware.h
---- linux-2.4.18/include/linux/firmware.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/include/linux/firmware.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,20 @@
-+#ifndef _LINUX_FIRMWARE_H
-+#define _LINUX_FIRMWARE_H
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#define FIRMWARE_NAME_MAX 30
-+struct firmware {
-+ size_t size;
-+ u8 *data;
-+};
-+int request_firmware (const struct firmware **fw, const char *name,
-+ const char *device);
-+int request_firmware_nowait (
-+ struct module *module,
-+ const char *name, const char *device, void *context,
-+ void (*cont)(const struct firmware *fw, void *context));
-+/* On 2.5 'device' is 'struct device *' */
-+
-+void release_firmware (const struct firmware *fw);
-+void register_firmware (const char *name, const u8 *data, size_t size);
-+#endif
-diff -urN linux-2.4.18/include/linux/input.h linux-2.4.18-mh15/include/linux/input.h
---- linux-2.4.18/include/linux/input.h 2001-09-13 00:34:06.000000000 +0200
-+++ linux-2.4.18-mh15/include/linux/input.h 2004-08-01 16:26:23.000000000 +0200
-@@ -468,6 +468,8 @@
- #define BUS_PCI 0x01
- #define BUS_ISAPNP 0x02
- #define BUS_USB 0x03
-+#define BUS_HIL 0x04
-+#define BUS_BLUETOOTH 0x05
-
- #define BUS_ISA 0x10
- #define BUS_I8042 0x11
-diff -urN linux-2.4.18/include/linux/kernel.h linux-2.4.18-mh15/include/linux/kernel.h
---- linux-2.4.18/include/linux/kernel.h 2002-02-25 20:38:13.000000000 +0100
-+++ linux-2.4.18-mh15/include/linux/kernel.h 2004-08-01 16:26:23.000000000 +0200
-@@ -11,6 +11,7 @@
- #include <linux/linkage.h>
- #include <linux/stddef.h>
- #include <linux/types.h>
-+#include <linux/compiler.h>
-
- /* Optimization barrier */
- /* The "volatile" is due to gcc bugs */
-@@ -181,4 +182,6 @@
- char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */
- };
-
--#endif
-+#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0)
-+
-+#endif /* _LINUX_KERNEL_H */
-diff -urN linux-2.4.18/include/linux/net.h linux-2.4.18-mh15/include/linux/net.h
---- linux-2.4.18/include/linux/net.h 2001-11-22 20:46:19.000000000 +0100
-+++ linux-2.4.18-mh15/include/linux/net.h 2004-08-01 16:26:23.000000000 +0200
-@@ -139,6 +139,7 @@
- extern int sock_recvmsg(struct socket *, struct msghdr *m, int len, int flags);
- extern int sock_readv_writev(int type, struct inode * inode, struct file * file,
- const struct iovec * iov, long count, long size);
-+extern struct socket *sockfd_lookup(int fd, int *err);
-
- extern int net_ratelimit(void);
- extern unsigned long net_random(void);
-diff -urN linux-2.4.18/include/linux/uinput.h linux-2.4.18-mh15/include/linux/uinput.h
---- linux-2.4.18/include/linux/uinput.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/include/linux/uinput.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,79 @@
-+/*
-+ * User level driver support for input subsystem
-+ *
-+ * Heavily based on evdev.c by Vojtech Pavlik
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
-+ *
-+ * Changes/Revisions:
-+ * 0.1 20/06/2002
-+ * - first public version
-+ */
-+
-+#ifndef __UINPUT_H_
-+#define __UINPUT_H_
-+
-+#ifdef __KERNEL__
-+#define UINPUT_MINOR 223
-+#define UINPUT_NAME "uinput"
-+#define UINPUT_BUFFER_SIZE 16
-+
-+/* state flags => bit index for {set|clear|test}_bit ops */
-+#define UIST_CREATED 0
-+
-+struct uinput_device {
-+ struct input_dev *dev;
-+ unsigned long state;
-+ wait_queue_head_t waitq;
-+ unsigned char ready,
-+ head,
-+ tail;
-+ struct input_event buff[UINPUT_BUFFER_SIZE];
-+};
-+#endif /* __KERNEL__ */
-+
-+/* ioctl */
-+#define UINPUT_IOCTL_BASE 'U'
-+#define UI_DEV_CREATE _IO(UINPUT_IOCTL_BASE, 1)
-+#define UI_DEV_DESTROY _IO(UINPUT_IOCTL_BASE, 2)
-+#define UI_SET_EVBIT _IOW(UINPUT_IOCTL_BASE, 100, int)
-+#define UI_SET_KEYBIT _IOW(UINPUT_IOCTL_BASE, 101, int)
-+#define UI_SET_RELBIT _IOW(UINPUT_IOCTL_BASE, 102, int)
-+#define UI_SET_ABSBIT _IOW(UINPUT_IOCTL_BASE, 103, int)
-+#define UI_SET_MSCBIT _IOW(UINPUT_IOCTL_BASE, 104, int)
-+#define UI_SET_LEDBIT _IOW(UINPUT_IOCTL_BASE, 105, int)
-+#define UI_SET_SNDBIT _IOW(UINPUT_IOCTL_BASE, 106, int)
-+#define UI_SET_FFBIT _IOW(UINPUT_IOCTL_BASE, 107, int)
-+
-+#ifndef NBITS
-+#define NBITS(x) ((((x)-1)/(sizeof(long)*8))+1)
-+#endif /* NBITS */
-+
-+#define UINPUT_MAX_NAME_SIZE 80
-+struct uinput_user_dev {
-+ char name[UINPUT_MAX_NAME_SIZE];
-+ unsigned short idbus;
-+ unsigned short idvendor;
-+ unsigned short idproduct;
-+ unsigned short idversion;
-+ int ff_effects_max;
-+ int absmax[ABS_MAX + 1];
-+ int absmin[ABS_MAX + 1];
-+ int absfuzz[ABS_MAX + 1];
-+ int absflat[ABS_MAX + 1];
-+};
-+#endif /* __UINPUT_H_ */
-diff -urN linux-2.4.18/include/net/bluetooth/bluetooth.h linux-2.4.18-mh15/include/net/bluetooth/bluetooth.h
---- linux-2.4.18/include/net/bluetooth/bluetooth.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/bluetooth.h 2004-08-01 16:26:23.000000000 +0200
-@@ -23,7 +23,7 @@
- */
-
- /*
-- * $Id: bluetooth.h,v 1.6 2001/08/03 04:19:49 maxk Exp $
-+ * $Id: bluetooth.h,v 1.9 2002/05/06 21:11:55 maxk Exp $
- */
-
- #ifndef __BLUETOOTH_H
-@@ -31,17 +31,64 @@
-
- #include <asm/types.h>
- #include <asm/byteorder.h>
-+#include <linux/poll.h>
-+#include <net/sock.h>
-
- #ifndef AF_BLUETOOTH
- #define AF_BLUETOOTH 31
- #define PF_BLUETOOTH AF_BLUETOOTH
- #endif
-
-+/* Reserv for core and drivers use */
-+#define BLUEZ_SKB_RESERVE 8
-+
-+#ifndef MIN
-+#define MIN(a,b) ((a) < (b) ? (a) : (b))
-+#endif
-+
- #define BTPROTO_L2CAP 0
- #define BTPROTO_HCI 1
-+#define BTPROTO_SCO 2
-+#define BTPROTO_RFCOMM 3
-+#define BTPROTO_BNEP 4
-+#define BTPROTO_CMTP 5
-+#define BTPROTO_HIDP 6
-
- #define SOL_HCI 0
- #define SOL_L2CAP 6
-+#define SOL_SCO 17
-+#define SOL_RFCOMM 18
-+
-+/* Debugging */
-+#ifdef CONFIG_BLUEZ_DEBUG
-+
-+#define HCI_CORE_DEBUG 1
-+#define HCI_SOCK_DEBUG 1
-+#define HCI_UART_DEBUG 1
-+#define HCI_USB_DEBUG 1
-+//#define HCI_DATA_DUMP 1
-+
-+#define L2CAP_DEBUG 1
-+#define SCO_DEBUG 1
-+#define AF_BLUETOOTH_DEBUG 1
-+
-+#endif /* CONFIG_BLUEZ_DEBUG */
-+
-+extern void bluez_dump(char *pref, __u8 *buf, int count);
-+
-+#if __GNUC__ <= 2 && __GNUC_MINOR__ < 95
-+#define __func__ __FUNCTION__
-+#endif
-+
-+#define BT_INFO(fmt, arg...) printk(KERN_INFO fmt "\n" , ## arg)
-+#define BT_DBG(fmt, arg...) printk(KERN_INFO "%s: " fmt "\n" , __func__ , ## arg)
-+#define BT_ERR(fmt, arg...) printk(KERN_ERR "%s: " fmt "\n" , __func__ , ## arg)
-+
-+#ifdef HCI_DATA_DUMP
-+#define BT_DMP(buf, len) bluez_dump(__func__, buf, len)
-+#else
-+#define BT_DMP(D...)
-+#endif
-
- /* Connection and socket states */
- enum {
-@@ -50,6 +97,7 @@
- BT_BOUND,
- BT_LISTEN,
- BT_CONNECT,
-+ BT_CONNECT2,
- BT_CONFIG,
- BT_DISCONN,
- BT_CLOSED
-@@ -66,7 +114,8 @@
- __u8 b[6];
- } __attribute__((packed)) bdaddr_t;
-
--#define BDADDR_ANY ((bdaddr_t *)"\000\000\000\000\000")
-+#define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
-+#define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}})
-
- /* Copy, swap, convert BD Address */
- static inline int bacmp(bdaddr_t *ba1, bdaddr_t *ba2)
-@@ -82,6 +131,91 @@
- char *batostr(bdaddr_t *ba);
- bdaddr_t *strtoba(char *str);
-
-+/* Common socket structures and functions */
-+
-+#define bluez_pi(sk) ((struct bluez_pinfo *) &sk->protinfo)
-+#define bluez_sk(pi) ((struct sock *) \
-+ ((void *)pi - (unsigned long)(&((struct sock *)0)->protinfo)))
-+
-+struct bluez_pinfo {
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+
-+ struct list_head accept_q;
-+ struct sock *parent;
-+};
-+
-+struct bluez_sock_list {
-+ struct sock *head;
-+ rwlock_t lock;
-+};
-+
-+int bluez_sock_register(int proto, struct net_proto_family *ops);
-+int bluez_sock_unregister(int proto);
-+void bluez_sock_init(struct socket *sock, struct sock *sk);
-+void bluez_sock_link(struct bluez_sock_list *l, struct sock *s);
-+void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *s);
-+int bluez_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm);
-+uint bluez_sock_poll(struct file * file, struct socket *sock, poll_table *wait);
-+int bluez_sock_wait_state(struct sock *sk, int state, unsigned long timeo);
-+
-+void bluez_accept_enqueue(struct sock *parent, struct sock *sk);
-+struct sock * bluez_accept_dequeue(struct sock *parent, struct socket *newsock);
-+
-+/* Skb helpers */
-+struct bluez_skb_cb {
-+ int incomming;
-+};
-+#define bluez_cb(skb) ((struct bluez_skb_cb *)(skb->cb))
-+
-+static inline struct sk_buff *bluez_skb_alloc(unsigned int len, int how)
-+{
-+ struct sk_buff *skb;
-+
-+ if ((skb = alloc_skb(len + BLUEZ_SKB_RESERVE, how))) {
-+ skb_reserve(skb, BLUEZ_SKB_RESERVE);
-+ bluez_cb(skb)->incomming = 0;
-+ }
-+ return skb;
-+}
-+
-+static inline struct sk_buff *bluez_skb_send_alloc(struct sock *sk, unsigned long len,
-+ int nb, int *err)
-+{
-+ struct sk_buff *skb;
-+
-+ if ((skb = sock_alloc_send_skb(sk, len + BLUEZ_SKB_RESERVE, nb, err))) {
-+ skb_reserve(skb, BLUEZ_SKB_RESERVE);
-+ bluez_cb(skb)->incomming = 0;
-+ }
-+
-+ return skb;
-+}
-+
-+static inline int skb_frags_no(struct sk_buff *skb)
-+{
-+ register struct sk_buff *frag = skb_shinfo(skb)->frag_list;
-+ register int n = 1;
-+
-+ for (; frag; frag=frag->next, n++);
-+ return n;
-+}
-+
-+int hci_core_init(void);
-+int hci_core_cleanup(void);
-+int hci_sock_init(void);
-+int hci_sock_cleanup(void);
-+
- int bterr(__u16 code);
-
-+#ifndef MODULE_LICENSE
-+#define MODULE_LICENSE(x)
-+#endif
-+
-+#ifndef list_for_each_safe
-+#define list_for_each_safe(pos, n, head) \
-+ for (pos = (head)->next, n = pos->next; pos != (head); \
-+ pos = n, n = pos->next)
-+#endif
-+
- #endif /* __BLUETOOTH_H */
-diff -urN linux-2.4.18/include/net/bluetooth/bluez.h linux-2.4.18-mh15/include/net/bluetooth/bluez.h
---- linux-2.4.18/include/net/bluetooth/bluez.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/bluez.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,124 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: bluez.h,v 1.4 2001/08/03 04:19:49 maxk Exp $
-- */
--
--#ifndef __IF_BLUEZ_H
--#define __IF_BLUEZ_H
--
--#include <net/sock.h>
--
--#define BLUEZ_MAX_PROTO 2
--
--/* Reserv for core and drivers use */
--#define BLUEZ_SKB_RESERVE 8
--
--#ifndef MIN
--#define MIN(a,b) ((a) < (b) ? (a) : (b))
--#endif
--
--/* Debugging */
--#ifdef BLUEZ_DEBUG
--
--#define HCI_CORE_DEBUG 1
--#define HCI_SOCK_DEBUG 1
--#define HCI_UART_DEBUG 1
--#define HCI_USB_DEBUG 1
--//#define HCI_DATA_DUMP 1
--
--#define L2CAP_DEBUG 1
--
--#endif /* BLUEZ_DEBUG */
--
--extern void bluez_dump(char *pref, __u8 *buf, int count);
--
--#define INF(fmt, arg...) printk(KERN_INFO fmt "\n" , ## arg)
--#define DBG(fmt, arg...) printk(KERN_INFO __FUNCTION__ ": " fmt "\n" , ## arg)
--#define ERR(fmt, arg...) printk(KERN_ERR __FUNCTION__ ": " fmt "\n" , ## arg)
--
--#ifdef HCI_DATA_DUMP
--#define DMP(buf, len) bluez_dump(__FUNCTION__, buf, len)
--#else
--#define DMP(D...)
--#endif
--
--/* ----- Sockets ------ */
--struct bluez_sock_list {
-- struct sock *head;
-- rwlock_t lock;
--};
--
--extern int bluez_sock_register(int proto, struct net_proto_family *ops);
--extern int bluez_sock_unregister(int proto);
--
--extern void bluez_sock_link(struct bluez_sock_list *l, struct sock *s);
--extern void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *s);
--
--/* ----- SKB helpers ----- */
--struct bluez_skb_cb {
-- int incomming;
--};
--#define bluez_cb(skb) ((struct bluez_skb_cb *)(skb->cb))
--
--static inline struct sk_buff *bluez_skb_alloc(unsigned int len, int how)
--{
-- struct sk_buff *skb;
--
-- if ((skb = alloc_skb(len + BLUEZ_SKB_RESERVE, how))) {
-- skb_reserve(skb, BLUEZ_SKB_RESERVE);
-- bluez_cb(skb)->incomming = 0;
-- }
-- return skb;
--}
--
--static inline struct sk_buff *bluez_skb_send_alloc(struct sock *sk, unsigned long len,
-- int nb, int *err)
--{
-- struct sk_buff *skb;
--
-- if ((skb = sock_alloc_send_skb(sk, len + BLUEZ_SKB_RESERVE, nb, err))) {
-- skb_reserve(skb, BLUEZ_SKB_RESERVE);
-- bluez_cb(skb)->incomming = 0;
-- }
--
-- return skb;
--}
--
--static inline int skb_frags_no(struct sk_buff *skb)
--{
-- register struct sk_buff *frag = skb_shinfo(skb)->frag_list;
-- register int n = 1;
--
-- for (; frag; frag=frag->next, n++);
-- return n;
--}
--
--extern int hci_core_init(void);
--extern int hci_core_cleanup(void);
--extern int hci_sock_init(void);
--extern int hci_sock_cleanup(void);
--
--#endif /* __IF_BLUEZ_H */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_core.h linux-2.4.18-mh15/include/net/bluetooth/hci_core.h
---- linux-2.4.18/include/net/bluetooth/hci_core.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/hci_core.h 2004-08-01 16:26:23.000000000 +0200
-@@ -23,7 +23,7 @@
- */
-
- /*
-- * $Id: hci_core.h,v 1.11 2001/08/05 06:02:15 maxk Exp $
-+ * $Id: hci_core.h,v 1.5 2002/06/27 04:56:30 maxk Exp $
- */
-
- #ifndef __HCI_CORE_H
-@@ -32,14 +32,12 @@
- #include <net/bluetooth/hci.h>
-
- /* HCI upper protocols */
--#define HCI_MAX_PROTO 1
- #define HCI_PROTO_L2CAP 0
-+#define HCI_PROTO_SCO 1
-
- #define HCI_INIT_TIMEOUT (HZ * 10)
-
--/* ----- Inquiry cache ----- */
--#define INQUIRY_CACHE_AGE_MAX (HZ*5) // 5 seconds
--#define INQUIRY_ENTRY_AGE_MAX (HZ*60) // 60 seconds
-+/* HCI Core structures */
-
- struct inquiry_entry {
- struct inquiry_entry *next;
-@@ -53,111 +51,188 @@
- struct inquiry_entry *list;
- };
-
--static inline void inquiry_cache_init(struct inquiry_cache *cache)
--{
-- spin_lock_init(&cache->lock);
-- cache->list = NULL;
--}
-+struct conn_hash {
-+ struct list_head list;
-+ spinlock_t lock;
-+ unsigned int num;
-+};
-
--static inline void inquiry_cache_lock(struct inquiry_cache *cache)
--{
-- spin_lock(&cache->lock);
--}
-+struct hci_dev {
-+ struct list_head list;
-+ spinlock_t lock;
-+ atomic_t refcnt;
-
--static inline void inquiry_cache_unlock(struct inquiry_cache *cache)
--{
-- spin_unlock(&cache->lock);
--}
-+ char name[8];
-+ unsigned long flags;
-+ __u16 id;
-+ __u8 type;
-+ bdaddr_t bdaddr;
-+ __u8 features[8];
-
--static inline void inquiry_cache_lock_bh(struct inquiry_cache *cache)
--{
-- spin_lock_bh(&cache->lock);
--}
-+ __u16 pkt_type;
-+ __u16 link_policy;
-+ __u16 link_mode;
-
--static inline void inquiry_cache_unlock_bh(struct inquiry_cache *cache)
--{
-- spin_unlock_bh(&cache->lock);
--}
-+ unsigned long quirks;
-
--static inline long inquiry_cache_age(struct inquiry_cache *cache)
--{
-- return jiffies - cache->timestamp;
--}
-+ atomic_t cmd_cnt;
-+ unsigned int acl_cnt;
-+ unsigned int sco_cnt;
-
--static inline long inquiry_entry_age(struct inquiry_entry *e)
--{
-- return jiffies - e->timestamp;
--}
--extern void inquiry_cache_flush(struct inquiry_cache *cache);
-+ unsigned int acl_mtu;
-+ unsigned int sco_mtu;
-+ unsigned int acl_pkts;
-+ unsigned int sco_pkts;
-
--struct hci_dev;
-+ unsigned long cmd_last_tx;
-+ unsigned long acl_last_tx;
-+ unsigned long sco_last_tx;
-+
-+ struct tasklet_struct cmd_task;
-+ struct tasklet_struct rx_task;
-+ struct tasklet_struct tx_task;
-+
-+ struct sk_buff_head rx_q;
-+ struct sk_buff_head raw_q;
-+ struct sk_buff_head cmd_q;
-+
-+ struct sk_buff *sent_cmd;
-+
-+ struct semaphore req_lock;
-+ wait_queue_head_t req_wait_q;
-+ __u32 req_status;
-+ __u32 req_result;
-+
-+ struct inquiry_cache inq_cache;
-+ struct conn_hash conn_hash;
-+
-+ struct hci_dev_stats stat;
-+
-+ void *driver_data;
-+ void *core_data;
-+
-+ atomic_t promisc;
-+
-+ int (*open)(struct hci_dev *hdev);
-+ int (*close)(struct hci_dev *hdev);
-+ int (*flush)(struct hci_dev *hdev);
-+ int (*send)(struct sk_buff *skb);
-+ void (*destruct)(struct hci_dev *hdev);
-+ int (*ioctl)(struct hci_dev *hdev, unsigned int cmd, unsigned long arg);
-+};
-
--/* ----- HCI Connections ----- */
- struct hci_conn {
- struct list_head list;
-+
-+ atomic_t refcnt;
-+ spinlock_t lock;
-+
- bdaddr_t dst;
- __u16 handle;
-+ __u16 state;
- __u8 type;
-- unsigned int sent;
-+ __u8 out;
-+ __u32 link_mode;
-+ unsigned long pend;
-+
-+ unsigned int sent;
-+
-+ struct sk_buff_head data_q;
-
-+ struct timer_list timer;
-+
- struct hci_dev *hdev;
- void *l2cap_data;
-+ void *sco_data;
- void *priv;
-
-- struct sk_buff_head data_q;
-+ struct hci_conn *link;
- };
-
--struct conn_hash {
-- struct list_head list;
-- spinlock_t lock;
-- unsigned int num;
--};
-+extern struct hci_proto *hci_proto[];
-+extern struct list_head hdev_list;
-+extern rwlock_t hdev_list_lock;
-+
-+/* ----- Inquiry cache ----- */
-+#define INQUIRY_CACHE_AGE_MAX (HZ*30) // 30 seconds
-+#define INQUIRY_ENTRY_AGE_MAX (HZ*60) // 60 seconds
-+
-+#define inquiry_cache_lock(c) spin_lock(&c->lock)
-+#define inquiry_cache_unlock(c) spin_unlock(&c->lock)
-+#define inquiry_cache_lock_bh(c) spin_lock_bh(&c->lock)
-+#define inquiry_cache_unlock_bh(c) spin_unlock_bh(&c->lock)
-
--static inline void conn_hash_init(struct conn_hash *h)
-+static inline void inquiry_cache_init(struct hci_dev *hdev)
- {
-- INIT_LIST_HEAD(&h->list);
-- spin_lock_init(&h->lock);
-- h->num = 0;
-+ struct inquiry_cache *c = &hdev->inq_cache;
-+ spin_lock_init(&c->lock);
-+ c->list = NULL;
- }
-
--static inline void conn_hash_lock(struct conn_hash *h)
-+static inline int inquiry_cache_empty(struct hci_dev *hdev)
- {
-- spin_lock(&h->lock);
-+ struct inquiry_cache *c = &hdev->inq_cache;
-+ return (c->list == NULL);
- }
-
--static inline void conn_hash_unlock(struct conn_hash *h)
-+static inline long inquiry_cache_age(struct hci_dev *hdev)
- {
-- spin_unlock(&h->lock);
-+ struct inquiry_cache *c = &hdev->inq_cache;
-+ return jiffies - c->timestamp;
- }
-
--static inline void __conn_hash_add(struct conn_hash *h, __u16 handle, struct hci_conn *c)
-+static inline long inquiry_entry_age(struct inquiry_entry *e)
- {
-- list_add(&c->list, &h->list);
-- h->num++;
-+ return jiffies - e->timestamp;
- }
-
--static inline void conn_hash_add(struct conn_hash *h, __u16 handle, struct hci_conn *c)
-+struct inquiry_entry *inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr);
-+void inquiry_cache_update(struct hci_dev *hdev, inquiry_info *info);
-+void inquiry_cache_flush(struct hci_dev *hdev);
-+int inquiry_cache_dump(struct hci_dev *hdev, int num, __u8 *buf);
-+
-+/* ----- HCI Connections ----- */
-+enum {
-+ HCI_CONN_AUTH_PEND,
-+ HCI_CONN_ENCRYPT_PEND
-+};
-+
-+#define hci_conn_lock(c) spin_lock(&c->lock)
-+#define hci_conn_unlock(c) spin_unlock(&c->lock)
-+#define hci_conn_lock_bh(c) spin_lock_bh(&c->lock)
-+#define hci_conn_unlock_bh(c) spin_unlock_bh(&c->lock)
-+
-+#define conn_hash_lock(d) spin_lock(&d->conn_hash->lock)
-+#define conn_hash_unlock(d) spin_unlock(&d->conn_hash->lock)
-+#define conn_hash_lock_bh(d) spin_lock_bh(&d->conn_hash->lock)
-+#define conn_hash_unlock_bh(d) spin_unlock_bh(&d->conn_hash->lock)
-+
-+static inline void conn_hash_init(struct hci_dev *hdev)
- {
-- conn_hash_lock(h);
-- __conn_hash_add(h, handle, c);
-- conn_hash_unlock(h);
-+ struct conn_hash *h = &hdev->conn_hash;
-+ INIT_LIST_HEAD(&h->list);
-+ spin_lock_init(&h->lock);
-+ h->num = 0;
- }
-
--static inline void __conn_hash_del(struct conn_hash *h, struct hci_conn *c)
-+static inline void conn_hash_add(struct hci_dev *hdev, struct hci_conn *c)
- {
-- list_del(&c->list);
-- h->num--;
-+ struct conn_hash *h = &hdev->conn_hash;
-+ list_add(&c->list, &h->list);
-+ h->num++;
- }
-
--static inline void conn_hash_del(struct conn_hash *h, struct hci_conn *c)
-+static inline void conn_hash_del(struct hci_dev *hdev, struct hci_conn *c)
- {
-- conn_hash_lock(h);
-- __conn_hash_del(h, c);
-- conn_hash_unlock(h);
-+ struct conn_hash *h = &hdev->conn_hash;
-+ list_del(&c->list);
-+ h->num--;
- }
-
--static inline struct hci_conn *__conn_hash_lookup(struct conn_hash *h, __u16 handle)
-+static inline struct hci_conn *conn_hash_lookup_handle(struct hci_dev *hdev,
-+ __u16 handle)
- {
-+ register struct conn_hash *h = &hdev->conn_hash;
- register struct list_head *p;
- register struct hci_conn *c;
-
-@@ -169,101 +244,97 @@
- return NULL;
- }
-
--static inline struct hci_conn *conn_hash_lookup(struct conn_hash *h, __u16 handle)
-+static inline struct hci_conn *conn_hash_lookup_ba(struct hci_dev *hdev,
-+ __u8 type, bdaddr_t *ba)
- {
-- struct hci_conn *conn;
-+ register struct conn_hash *h = &hdev->conn_hash;
-+ register struct list_head *p;
-+ register struct hci_conn *c;
-
-- conn_hash_lock(h);
-- conn = __conn_hash_lookup(h, handle);
-- conn_hash_unlock(h);
-- return conn;
-+ list_for_each(p, &h->list) {
-+ c = list_entry(p, struct hci_conn, list);
-+ if (c->type == type && !bacmp(&c->dst, ba))
-+ return c;
-+ }
-+ return NULL;
- }
-
--/* ----- HCI Devices ----- */
--struct hci_dev {
-- atomic_t refcnt;
--
-- char name[8];
-- __u32 flags;
-- __u16 id;
-- __u8 type;
-- bdaddr_t bdaddr;
-- __u8 features[8];
--
-- __u16 pkt_type;
--
-- atomic_t cmd_cnt;
-- unsigned int acl_cnt;
-- unsigned int sco_cnt;
--
-- unsigned int acl_mtu;
-- unsigned int sco_mtu;
-- unsigned int acl_max;
-- unsigned int sco_max;
--
-- void *driver_data;
-- void *l2cap_data;
-- void *priv;
--
-- struct tasklet_struct cmd_task;
-- struct tasklet_struct rx_task;
-- struct tasklet_struct tx_task;
--
-- struct sk_buff_head rx_q;
-- struct sk_buff_head raw_q;
-- struct sk_buff_head cmd_q;
--
-- struct sk_buff *sent_cmd;
-+void hci_acl_connect(struct hci_conn *conn);
-+void hci_acl_disconn(struct hci_conn *conn, __u8 reason);
-+void hci_add_sco(struct hci_conn *conn, __u16 handle);
-
-- struct semaphore req_lock;
-- wait_queue_head_t req_wait_q;
-- __u32 req_status;
-- __u32 req_result;
-+struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst);
-+int hci_conn_del(struct hci_conn *conn);
-+void hci_conn_hash_flush(struct hci_dev *hdev);
-
-- struct inquiry_cache inq_cache;
-+struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *src);
-+int hci_conn_auth(struct hci_conn *conn);
-+int hci_conn_encrypt(struct hci_conn *conn);
-
-- struct conn_hash conn_hash;
--
-- struct hci_dev_stats stat;
--
-- int (*open)(struct hci_dev *hdev);
-- int (*close)(struct hci_dev *hdev);
-- int (*flush)(struct hci_dev *hdev);
-- int (*send)(struct sk_buff *skb);
--};
-+static inline void hci_conn_set_timer(struct hci_conn *conn, long timeout)
-+{
-+ mod_timer(&conn->timer, jiffies + timeout);
-+}
-
--static inline void hci_dev_hold(struct hci_dev *hdev)
-+static inline void hci_conn_del_timer(struct hci_conn *conn)
- {
-- atomic_inc(&hdev->refcnt);
-+ del_timer(&conn->timer);
- }
-
--static inline void hci_dev_put(struct hci_dev *hdev)
-+static inline void hci_conn_hold(struct hci_conn *conn)
- {
-- atomic_dec(&hdev->refcnt);
-+ atomic_inc(&conn->refcnt);
-+ hci_conn_del_timer(conn);
- }
-
--extern struct hci_dev *hci_dev_get(int index);
--extern int hci_register_dev(struct hci_dev *hdev);
--extern int hci_unregister_dev(struct hci_dev *hdev);
--extern int hci_dev_open(__u16 dev);
--extern int hci_dev_close(__u16 dev);
--extern int hci_dev_reset(__u16 dev);
--extern int hci_dev_reset_stat(__u16 dev);
--extern int hci_dev_info(unsigned long arg);
--extern int hci_dev_list(unsigned long arg);
--extern int hci_dev_setscan(unsigned long arg);
--extern int hci_dev_setauth(unsigned long arg);
--extern int hci_dev_setptype(unsigned long arg);
--extern int hci_conn_list(unsigned long arg);
--extern int hci_inquiry(unsigned long arg);
-+static inline void hci_conn_put(struct hci_conn *conn)
-+{
-+ if (atomic_dec_and_test(&conn->refcnt)) {
-+ if (conn->type == ACL_LINK) {
-+ unsigned long timeo = (conn->out) ?
-+ HCI_DISCONN_TIMEOUT : HCI_DISCONN_TIMEOUT * 2;
-+ hci_conn_set_timer(conn, timeo);
-+ } else
-+ hci_conn_set_timer(conn, HZ / 100);
-+ }
-+}
-
--extern __u32 hci_dev_setmode(struct hci_dev *hdev, __u32 mode);
--extern __u32 hci_dev_getmode(struct hci_dev *hdev);
-+/* ----- HCI Devices ----- */
-+static inline void hci_dev_put(struct hci_dev *d)
-+{
-+ if (atomic_dec_and_test(&d->refcnt))
-+ d->destruct(d);
-+}
-+#define hci_dev_hold(d) atomic_inc(&d->refcnt)
-+
-+#define hci_dev_lock(d) spin_lock(&d->lock)
-+#define hci_dev_unlock(d) spin_unlock(&d->lock)
-+#define hci_dev_lock_bh(d) spin_lock_bh(&d->lock)
-+#define hci_dev_unlock_bh(d) spin_unlock_bh(&d->lock)
-+
-+struct hci_dev *hci_dev_get(int index);
-+struct hci_dev *hci_get_route(bdaddr_t *src, bdaddr_t *dst);
-+int hci_register_dev(struct hci_dev *hdev);
-+int hci_unregister_dev(struct hci_dev *hdev);
-+int hci_suspend_dev(struct hci_dev *hdev);
-+int hci_resume_dev(struct hci_dev *hdev);
-+int hci_dev_open(__u16 dev);
-+int hci_dev_close(__u16 dev);
-+int hci_dev_reset(__u16 dev);
-+int hci_dev_reset_stat(__u16 dev);
-+int hci_dev_cmd(unsigned int cmd, unsigned long arg);
-+int hci_get_dev_list(unsigned long arg);
-+int hci_get_dev_info(unsigned long arg);
-+int hci_get_conn_list(unsigned long arg);
-+int hci_get_conn_info(struct hci_dev *hdev, unsigned long arg);
-+int hci_inquiry(unsigned long arg);
-
--extern int hci_recv_frame(struct sk_buff *skb);
-+int hci_recv_frame(struct sk_buff *skb);
-+void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb);
-
- /* ----- LMP capabilities ----- */
- #define lmp_rswitch_capable(dev) (dev->features[0] & LMP_RSWITCH)
-+#define lmp_encrypt_capable(dev) (dev->features[0] & LMP_ENCRYPT)
-
- /* ----- HCI tasks ----- */
- static inline void hci_sched_cmd(struct hci_dev *hdev)
-@@ -284,43 +355,130 @@
- /* ----- HCI protocols ----- */
- struct hci_proto {
- char *name;
-- __u32 id;
-- __u32 flags;
-+ unsigned int id;
-+ unsigned long flags;
-
- void *priv;
-
-- int (*connect_ind) (struct hci_dev *hdev, bdaddr_t *bdaddr);
-- int (*connect_cfm) (struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 status, struct hci_conn *conn);
-+ int (*connect_ind) (struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type);
-+ int (*connect_cfm) (struct hci_conn *conn, __u8 status);
- int (*disconn_ind) (struct hci_conn *conn, __u8 reason);
-- int (*recv_acldata) (struct hci_conn *conn, struct sk_buff *skb , __u16 flags);
-+ int (*recv_acldata) (struct hci_conn *conn, struct sk_buff *skb, __u16 flags);
- int (*recv_scodata) (struct hci_conn *conn, struct sk_buff *skb);
-+ int (*auth_cfm) (struct hci_conn *conn, __u8 status);
-+ int (*encrypt_cfm) (struct hci_conn *conn, __u8 status);
- };
-
--extern int hci_register_proto(struct hci_proto *hproto);
--extern int hci_unregister_proto(struct hci_proto *hproto);
--extern int hci_register_notifier(struct notifier_block *nb);
--extern int hci_unregister_notifier(struct notifier_block *nb);
--extern int hci_connect(struct hci_dev * hdev, bdaddr_t * bdaddr);
--extern int hci_disconnect(struct hci_conn *conn, __u8 reason);
--extern int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void * param);
--extern int hci_send_raw(struct sk_buff *skb);
--extern int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags);
--extern int hci_send_sco(struct hci_conn *conn, struct sk_buff *skb);
-+static inline int hci_proto_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
-+{
-+ register struct hci_proto *hp;
-+ int mask = 0;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->connect_ind)
-+ mask |= hp->connect_ind(hdev, bdaddr, type);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->connect_ind)
-+ mask |= hp->connect_ind(hdev, bdaddr, type);
-+
-+ return mask;
-+}
-+
-+static inline void hci_proto_connect_cfm(struct hci_conn *conn, __u8 status)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->connect_cfm)
-+ hp->connect_cfm(conn, status);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->connect_cfm)
-+ hp->connect_cfm(conn, status);
-+}
-+
-+static inline void hci_proto_disconn_ind(struct hci_conn *conn, __u8 reason)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->disconn_ind)
-+ hp->disconn_ind(conn, reason);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->disconn_ind)
-+ hp->disconn_ind(conn, reason);
-+}
-+
-+static inline void hci_proto_auth_cfm(struct hci_conn *conn, __u8 status)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->auth_cfm)
-+ hp->auth_cfm(conn, status);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->auth_cfm)
-+ hp->auth_cfm(conn, status);
-+}
-+
-+static inline void hci_proto_encrypt_cfm(struct hci_conn *conn, __u8 status)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->encrypt_cfm)
-+ hp->encrypt_cfm(conn, status);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->encrypt_cfm)
-+ hp->encrypt_cfm(conn, status);
-+}
-+
-+int hci_register_proto(struct hci_proto *hproto);
-+int hci_unregister_proto(struct hci_proto *hproto);
-+int hci_register_notifier(struct notifier_block *nb);
-+int hci_unregister_notifier(struct notifier_block *nb);
-+
-+int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void *param);
-+int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags);
-+int hci_send_sco(struct hci_conn *conn, struct sk_buff *skb);
-+
-+void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf);
-+
-+void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data);
-
- /* ----- HCI Sockets ----- */
--extern void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb);
-+void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb);
-
- /* HCI info for socket */
--#define hci_pi(sk) ((struct hci_pinfo *) &sk->protinfo)
-+#define hci_pi(sk) ((struct hci_pinfo *) &sk->tp_pinfo)
- struct hci_pinfo {
- struct hci_dev *hdev;
- struct hci_filter filter;
- __u32 cmsg_mask;
- };
-
-+/* HCI security filter */
-+#define HCI_SFLT_MAX_OGF 5
-+
-+struct hci_sec_filter {
-+ __u32 type_mask;
-+ __u32 event_mask[2];
-+ __u32 ocf_mask[HCI_SFLT_MAX_OGF + 1][4];
-+};
-+
- /* ----- HCI requests ----- */
- #define HCI_REQ_DONE 0
- #define HCI_REQ_PEND 1
- #define HCI_REQ_CANCELED 2
-
-+#define hci_req_lock(d) down(&d->req_lock)
-+#define hci_req_unlock(d) up(&d->req_lock)
-+
-+void hci_req_complete(struct hci_dev *hdev, int result);
-+void hci_req_cancel(struct hci_dev *hdev, int err);
-+
- #endif /* __HCI_CORE_H */
-diff -urN linux-2.4.18/include/net/bluetooth/hci.h linux-2.4.18-mh15/include/net/bluetooth/hci.h
---- linux-2.4.18/include/net/bluetooth/hci.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/hci.h 2004-08-01 16:26:23.000000000 +0200
-@@ -23,59 +23,80 @@
- */
-
- /*
-- * $Id: hci.h,v 1.15 2001/08/05 06:02:15 maxk Exp $
-+ * $Id: hci.h,v 1.5 2002/06/27 17:29:30 maxk Exp $
- */
-
- #ifndef __HCI_H
- #define __HCI_H
-
--#include <asm/byteorder.h>
--
--#define HCI_MAX_DEV 8
--#define HCI_MAX_FRAME_SIZE 2048
-+#define HCI_MAX_ACL_SIZE 1024
-+#define HCI_MAX_SCO_SIZE 255
-+#define HCI_MAX_EVENT_SIZE 260
-+#define HCI_MAX_FRAME_SIZE (HCI_MAX_ACL_SIZE + 4)
-
- /* HCI dev events */
- #define HCI_DEV_REG 1
- #define HCI_DEV_UNREG 2
- #define HCI_DEV_UP 3
- #define HCI_DEV_DOWN 4
-+#define HCI_DEV_SUSPEND 5
-+#define HCI_DEV_RESUME 6
-
- /* HCI device types */
--#define HCI_UART 0
-+#define HCI_VHCI 0
- #define HCI_USB 1
--#define HCI_VHCI 2
--
--/* HCI device modes */
--#define HCI_NORMAL 0x0001
--#define HCI_RAW 0x0002
--#define HCI_MODE_MASK (HCI_NORMAL | HCI_RAW)
--#define HCI_SOCK 0x1000
--
--/* HCI device states */
--#define HCI_INIT 0x0010
--#define HCI_UP 0x0020
--#define HCI_RUNNING 0x0040
-+#define HCI_PCCARD 2
-+#define HCI_UART 3
-+#define HCI_RS232 4
-+#define HCI_PCI 5
-+
-+/* HCI device quirks */
-+enum {
-+ HCI_QUIRK_RESET_ON_INIT
-+};
-
- /* HCI device flags */
--#define HCI_PSCAN 0x0100
--#define HCI_ISCAN 0x0200
--#define HCI_AUTH 0x0400
-+enum {
-+ HCI_UP,
-+ HCI_INIT,
-+ HCI_RUNNING,
-+
-+ HCI_PSCAN,
-+ HCI_ISCAN,
-+ HCI_AUTH,
-+ HCI_ENCRYPT,
-+ HCI_INQUIRY,
-+
-+ HCI_RAW
-+};
-
--/* HCI Ioctl defines */
-+/* HCI ioctl defines */
- #define HCIDEVUP _IOW('H', 201, int)
- #define HCIDEVDOWN _IOW('H', 202, int)
- #define HCIDEVRESET _IOW('H', 203, int)
--#define HCIRESETSTAT _IOW('H', 204, int)
--#define HCIGETINFO _IOR('H', 205, int)
--#define HCIGETDEVLIST _IOR('H', 206, int)
--#define HCISETRAW _IOW('H', 207, int)
--#define HCISETSCAN _IOW('H', 208, int)
--#define HCISETAUTH _IOW('H', 209, int)
--#define HCIINQUIRY _IOR('H', 210, int)
--#define HCISETPTYPE _IOW('H', 211, int)
-+#define HCIDEVRESTAT _IOW('H', 204, int)
-+
-+#define HCIGETDEVLIST _IOR('H', 210, int)
-+#define HCIGETDEVINFO _IOR('H', 211, int)
- #define HCIGETCONNLIST _IOR('H', 212, int)
-+#define HCIGETCONNINFO _IOR('H', 213, int)
-
--#ifndef __NO_HCI_DEFS
-+#define HCISETRAW _IOW('H', 220, int)
-+#define HCISETSCAN _IOW('H', 221, int)
-+#define HCISETAUTH _IOW('H', 222, int)
-+#define HCISETENCRYPT _IOW('H', 223, int)
-+#define HCISETPTYPE _IOW('H', 224, int)
-+#define HCISETLINKPOL _IOW('H', 225, int)
-+#define HCISETLINKMODE _IOW('H', 226, int)
-+#define HCISETACLMTU _IOW('H', 227, int)
-+#define HCISETSCOMTU _IOW('H', 228, int)
-+
-+#define HCIINQUIRY _IOR('H', 240, int)
-+
-+/* HCI timeouts */
-+#define HCI_CONN_TIMEOUT (HZ * 40)
-+#define HCI_DISCONN_TIMEOUT (HZ * 2)
-+#define HCI_CONN_IDLE_TIMEOUT (HZ * 60)
-
- /* HCI Packet types */
- #define HCI_COMMAND_PKT 0x01
-@@ -92,11 +113,18 @@
- #define HCI_DH3 0x0800
- #define HCI_DH5 0x8000
-
-+#define HCI_HV1 0x0020
-+#define HCI_HV2 0x0040
-+#define HCI_HV3 0x0080
-+
-+#define SCO_PTYPE_MASK (HCI_HV1 | HCI_HV2 | HCI_HV3)
-+#define ACL_PTYPE_MASK (~SCO_PTYPE_MASK)
-+
- /* ACL flags */
--#define ACL_CONT 0x0001
--#define ACL_START 0x0002
--#define ACL_ACTIVE_BCAST 0x0010
--#define ACL_PICO_BCAST 0x0020
-+#define ACL_CONT 0x01
-+#define ACL_START 0x02
-+#define ACL_ACTIVE_BCAST 0x04
-+#define ACL_PICO_BCAST 0x08
-
- /* Baseband links */
- #define SCO_LINK 0x00
-@@ -125,6 +153,20 @@
- #define LMP_PSCHEME 0x02
- #define LMP_PCONTROL 0x04
-
-+/* Link policies */
-+#define HCI_LP_RSWITCH 0x0001
-+#define HCI_LP_HOLD 0x0002
-+#define HCI_LP_SNIFF 0x0004
-+#define HCI_LP_PARK 0x0008
-+
-+/* Link mode */
-+#define HCI_LM_ACCEPT 0x8000
-+#define HCI_LM_MASTER 0x0001
-+#define HCI_LM_AUTH 0x0002
-+#define HCI_LM_ENCRYPT 0x0004
-+#define HCI_LM_TRUSTED 0x0008
-+#define HCI_LM_RELIABLE 0x0010
-+
- /* ----- HCI Commands ----- */
- /* OGF & OCF values */
-
-@@ -137,9 +179,10 @@
- __u8 hci_ver;
- __u16 hci_rev;
- __u8 lmp_ver;
-- __u16 man_name;
-- __u16 lmp_sub;
-+ __u16 manufacturer;
-+ __u16 lmp_subver;
- } __attribute__ ((packed)) read_local_version_rp;
-+#define READ_LOCAL_VERSION_RP_SIZE 9
-
- #define OCF_READ_LOCAL_FEATURES 0x0003
- typedef struct {
-@@ -165,18 +208,24 @@
- /* Host Controller and Baseband */
- #define OGF_HOST_CTL 0x03
- #define OCF_RESET 0x0003
-+#define OCF_READ_AUTH_ENABLE 0x001F
- #define OCF_WRITE_AUTH_ENABLE 0x0020
-- #define AUTH_DISABLED 0x00
-- #define AUTH_ENABLED 0x01
-+ #define AUTH_DISABLED 0x00
-+ #define AUTH_ENABLED 0x01
-+
-+#define OCF_READ_ENCRYPT_MODE 0x0021
-+#define OCF_WRITE_ENCRYPT_MODE 0x0022
-+ #define ENCRYPT_DISABLED 0x00
-+ #define ENCRYPT_P2P 0x01
-+ #define ENCRYPT_BOTH 0x02
-
- #define OCF_WRITE_CA_TIMEOUT 0x0016
- #define OCF_WRITE_PG_TIMEOUT 0x0018
-
- #define OCF_WRITE_SCAN_ENABLE 0x001A
-- #define SCANS_DISABLED 0x00
-- #define IS_ENA_PS_DIS 0x01
-- #define IS_DIS_PS_ENA 0x02
-- #define IS_ENA_PS_ENA 0x03
-+ #define SCAN_DISABLED 0x00
-+ #define SCAN_INQUIRY 0x01
-+ #define SCAN_PAGE 0x02
-
- #define OCF_SET_EVENT_FLT 0x0005
- typedef struct {
-@@ -226,9 +275,18 @@
- } __attribute__ ((packed)) write_class_of_dev_cp;
- #define WRITE_CLASS_OF_DEV_CP_SIZE 3
-
-+#define OCF_HOST_BUFFER_SIZE 0x0033
-+typedef struct {
-+ __u16 acl_mtu;
-+ __u8 sco_mtu;
-+ __u16 acl_max_pkt;
-+ __u16 sco_max_pkt;
-+} __attribute__ ((packed)) host_buffer_size_cp;
-+#define HOST_BUFFER_SIZE_CP_SIZE 7
-+
- /* Link Control */
- #define OGF_LINK_CTL 0x01
--#define OCF_CREATE_CONN 0x0005
-+#define OCF_CREATE_CONN 0x0005
- typedef struct {
- bdaddr_t bdaddr;
- __u16 pkt_type;
-@@ -246,6 +304,13 @@
- } __attribute__ ((packed)) accept_conn_req_cp;
- #define ACCEPT_CONN_REQ_CP_SIZE 7
-
-+#define OCF_REJECT_CONN_REQ 0x000a
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 reason;
-+} __attribute__ ((packed)) reject_conn_req_cp;
-+#define REJECT_CONN_REQ_CP_SIZE 7
-+
- #define OCF_DISCONNECT 0x0006
- typedef struct {
- __u16 handle;
-@@ -253,17 +318,142 @@
- } __attribute__ ((packed)) disconnect_cp;
- #define DISCONNECT_CP_SIZE 3
-
-+#define OCF_ADD_SCO 0x0007
-+typedef struct {
-+ __u16 handle;
-+ __u16 pkt_type;
-+} __attribute__ ((packed)) add_sco_cp;
-+#define ADD_SCO_CP_SIZE 4
-+
- #define OCF_INQUIRY 0x0001
- typedef struct {
- __u8 lap[3];
-- __u8 lenght;
-+ __u8 length;
- __u8 num_rsp;
- } __attribute__ ((packed)) inquiry_cp;
- #define INQUIRY_CP_SIZE 5
-
--#define OGF_LINK_POLICY 0x02 /* Link Policy */
-+typedef struct {
-+ __u8 status;
-+ bdaddr_t bdaddr;
-+} __attribute__ ((packed)) status_bdaddr_rp;
-+#define STATUS_BDADDR_RP_SIZE 7
-+
-+#define OCF_INQUIRY_CANCEL 0x0002
-+
-+#define OCF_LINK_KEY_REPLY 0x000B
-+#define OCF_LINK_KEY_NEG_REPLY 0x000C
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 link_key[16];
-+} __attribute__ ((packed)) link_key_reply_cp;
-+#define LINK_KEY_REPLY_CP_SIZE 22
-+
-+#define OCF_PIN_CODE_REPLY 0x000D
-+#define OCF_PIN_CODE_NEG_REPLY 0x000E
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 pin_len;
-+ __u8 pin_code[16];
-+} __attribute__ ((packed)) pin_code_reply_cp;
-+#define PIN_CODE_REPLY_CP_SIZE 23
-+
-+#define OCF_CHANGE_CONN_PTYPE 0x000F
-+typedef struct {
-+ __u16 handle;
-+ __u16 pkt_type;
-+} __attribute__ ((packed)) change_conn_ptype_cp;
-+#define CHANGE_CONN_PTYPE_CP_SIZE 4
-+
-+#define OCF_AUTH_REQUESTED 0x0011
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) auth_requested_cp;
-+#define AUTH_REQUESTED_CP_SIZE 2
-+
-+#define OCF_SET_CONN_ENCRYPT 0x0013
-+typedef struct {
-+ __u16 handle;
-+ __u8 encrypt;
-+} __attribute__ ((packed)) set_conn_encrypt_cp;
-+#define SET_CONN_ENCRYPT_CP_SIZE 3
-+
-+#define OCF_REMOTE_NAME_REQ 0x0019
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 pscan_rep_mode;
-+ __u8 pscan_mode;
-+ __u16 clock_offset;
-+} __attribute__ ((packed)) remote_name_req_cp;
-+#define REMOTE_NAME_REQ_CP_SIZE 10
-+
-+#define OCF_READ_REMOTE_FEATURES 0x001B
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) read_remote_features_cp;
-+#define READ_REMOTE_FEATURES_CP_SIZE 2
-+
-+#define OCF_READ_REMOTE_VERSION 0x001D
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) read_remote_version_cp;
-+#define READ_REMOTE_VERSION_CP_SIZE 2
-+
-+/* Link Policy */
-+#define OGF_LINK_POLICY 0x02
-+#define OCF_ROLE_DISCOVERY 0x0009
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) role_discovery_cp;
-+#define ROLE_DISCOVERY_CP_SIZE 2
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 role;
-+} __attribute__ ((packed)) role_discovery_rp;
-+#define ROLE_DISCOVERY_RP_SIZE 4
-+
-+#define OCF_READ_LINK_POLICY 0x000C
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) read_link_policy_cp;
-+#define READ_LINK_POLICY_CP_SIZE 2
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u16 policy;
-+} __attribute__ ((packed)) read_link_policy_rp;
-+#define READ_LINK_POLICY_RP_SIZE 5
-
--/* --------- HCI Events --------- */
-+#define OCF_SWITCH_ROLE 0x000B
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 role;
-+} __attribute__ ((packed)) switch_role_cp;
-+#define SWITCH_ROLE_CP_SIZE 7
-+
-+#define OCF_WRITE_LINK_POLICY 0x000D
-+typedef struct {
-+ __u16 handle;
-+ __u16 policy;
-+} __attribute__ ((packed)) write_link_policy_cp;
-+#define WRITE_LINK_POLICY_CP_SIZE 4
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+} __attribute__ ((packed)) write_link_policy_rp;
-+#define WRITE_LINK_POLICY_RP_SIZE 3
-+
-+/* Status params */
-+#define OGF_STATUS_PARAM 0x05
-+
-+/* Testing commands */
-+#define OGF_TESTING_CMD 0x3e
-+
-+/* Vendor specific commands */
-+#define OGF_VENDOR_CMD 0x3f
-+
-+/* ---- HCI Events ---- */
- #define EVT_INQUIRY_COMPLETE 0x01
-
- #define EVT_INQUIRY_RESULT 0x02
-@@ -272,11 +462,22 @@
- __u8 pscan_rep_mode;
- __u8 pscan_period_mode;
- __u8 pscan_mode;
-- __u8 class[3];
-+ __u8 dev_class[3];
- __u16 clock_offset;
- } __attribute__ ((packed)) inquiry_info;
- #define INQUIRY_INFO_SIZE 14
-
-+#define EVT_INQUIRY_RESULT_WITH_RSSI 0x22
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 pscan_rep_mode;
-+ __u8 pscan_period_mode;
-+ __u8 dev_class[3];
-+ __u16 clock_offset;
-+ __s8 rssi;
-+} __attribute__ ((packed)) inquiry_info_with_rssi;
-+#define INQUIRY_INFO_WITH_RSSI_SIZE 14
-+
- #define EVT_CONN_COMPLETE 0x03
- typedef struct {
- __u8 status;
-@@ -303,6 +504,44 @@
- } __attribute__ ((packed)) evt_disconn_complete;
- #define EVT_DISCONN_COMPLETE_SIZE 4
-
-+#define EVT_AUTH_COMPLETE 0x06
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+} __attribute__ ((packed)) evt_auth_complete;
-+#define EVT_AUTH_COMPLETE_SIZE 3
-+
-+#define EVT_REMOTE_NAME_REQ_COMPLETE 0x07
-+typedef struct {
-+ __u8 status;
-+ bdaddr_t bdaddr;
-+ __u8 name[248];
-+} __attribute__ ((packed)) evt_remote_name_req_complete;
-+#define EVT_REMOTE_NAME_REQ_COMPLETE_SIZE 255
-+
-+#define EVT_ENCRYPT_CHANGE 0x08
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 encrypt;
-+} __attribute__ ((packed)) evt_encrypt_change;
-+#define EVT_ENCRYPT_CHANGE_SIZE 5
-+
-+#define EVT_QOS_SETUP_COMPLETE 0x0D
-+typedef struct {
-+ __u8 service_type;
-+ __u32 token_rate;
-+ __u32 peak_bandwidth;
-+ __u32 latency;
-+ __u32 delay_variation;
-+} __attribute__ ((packed)) hci_qos;
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ hci_qos qos;
-+} __attribute__ ((packed)) evt_qos_setup_complete;
-+#define EVT_QOS_SETUP_COMPLETE_SIZE 20
-+
- #define EVT_CMD_COMPLETE 0x0e
- typedef struct {
- __u8 ncmd;
-@@ -321,16 +560,78 @@
- #define EVT_NUM_COMP_PKTS 0x13
- typedef struct {
- __u8 num_hndl;
-- /* variable lenght part */
-+ /* variable length part */
- } __attribute__ ((packed)) evt_num_comp_pkts;
- #define EVT_NUM_COMP_PKTS_SIZE 1
-
--#define EVT_HCI_DEV_EVENT 0xfd
-+#define EVT_ROLE_CHANGE 0x12
-+typedef struct {
-+ __u8 status;
-+ bdaddr_t bdaddr;
-+ __u8 role;
-+} __attribute__ ((packed)) evt_role_change;
-+#define EVT_ROLE_CHANGE_SIZE 8
-+
-+#define EVT_PIN_CODE_REQ 0x16
-+typedef struct {
-+ bdaddr_t bdaddr;
-+} __attribute__ ((packed)) evt_pin_code_req;
-+#define EVT_PIN_CODE_REQ_SIZE 6
-+
-+#define EVT_LINK_KEY_REQ 0x17
-+typedef struct {
-+ bdaddr_t bdaddr;
-+} __attribute__ ((packed)) evt_link_key_req;
-+#define EVT_LINK_KEY_REQ_SIZE 6
-+
-+#define EVT_LINK_KEY_NOTIFY 0x18
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 link_key[16];
-+ __u8 key_type;
-+} __attribute__ ((packed)) evt_link_key_notify;
-+#define EVT_LINK_KEY_NOTIFY_SIZE 23
-+
-+#define EVT_READ_REMOTE_FEATURES_COMPLETE 0x0B
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 features[8];
-+} __attribute__ ((packed)) evt_read_remote_features_complete;
-+#define EVT_READ_REMOTE_FEATURES_COMPLETE_SIZE 11
-+
-+#define EVT_READ_REMOTE_VERSION_COMPLETE 0x0C
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 lmp_ver;
-+ __u16 manufacturer;
-+ __u16 lmp_subver;
-+} __attribute__ ((packed)) evt_read_remote_version_complete;
-+#define EVT_READ_REMOTE_VERSION_COMPLETE_SIZE 8
-+
-+/* Internal events generated by BlueZ stack */
-+#define EVT_STACK_INTERNAL 0xfd
-+typedef struct {
-+ __u16 type;
-+ __u8 data[0];
-+} __attribute__ ((packed)) evt_stack_internal;
-+#define EVT_STACK_INTERNAL_SIZE 2
-+
-+#define EVT_SI_DEVICE 0x01
-+typedef struct {
-+ __u16 event;
-+ __u16 dev_id;
-+} __attribute__ ((packed)) evt_si_device;
-+#define EVT_SI_DEVICE_SIZE 4
-+
-+#define EVT_SI_SECURITY 0x02
- typedef struct {
- __u16 event;
-- __u16 param;
--} __attribute__ ((packed)) evt_hci_dev_event;
--#define EVT_HCI_DEV_EVENT_SIZE 4
-+ __u16 proto;
-+ __u16 subproto;
-+ __u8 incomming;
-+} __attribute__ ((packed)) evt_si_security;
-
- /* -------- HCI Packet structures -------- */
- #define HCI_TYPE_LEN 1
-@@ -369,14 +670,14 @@
- #define acl_handle(h) (h & 0x0fff)
- #define acl_flags(h) (h >> 12)
-
--#endif /* _NO_HCI_DEFS */
--
- /* HCI Socket options */
--#define HCI_DATA_DIR 0x0001
--#define HCI_FILTER 0x0002
-+#define HCI_DATA_DIR 1
-+#define HCI_FILTER 2
-+#define HCI_TIME_STAMP 3
-
- /* HCI CMSG flags */
- #define HCI_CMSG_DIR 0x0001
-+#define HCI_CMSG_TSTAMP 0x0002
-
- struct sockaddr_hci {
- sa_family_t hci_family;
-@@ -387,27 +688,29 @@
- struct hci_filter {
- __u32 type_mask;
- __u32 event_mask[2];
-+ __u16 opcode;
- };
-
--struct hci_dev_req {
-- __u16 dev_id;
-- __u32 dev_opt;
--};
--
--struct hci_dev_list_req {
-- __u16 dev_num;
-- struct hci_dev_req dev_req[0]; /* hci_dev_req structures */
--};
--
--struct hci_inquiry_req {
-- __u16 dev_id;
-- __u16 flags;
-- __u8 lap[3];
-- __u8 length;
-- __u8 num_rsp;
--};
--#define IREQ_CACHE_FLUSH 0x0001
-+#define HCI_FLT_TYPE_BITS 31
-+#define HCI_FLT_EVENT_BITS 63
-+#define HCI_FLT_OGF_BITS 63
-+#define HCI_FLT_OCF_BITS 127
-+
-+#if BITS_PER_LONG == 64
-+static inline void hci_set_bit(int nr, void *addr)
-+{
-+ *((__u32 *) addr + (nr >> 5)) |= ((__u32) 1 << (nr & 31));
-+}
-+static inline int hci_test_bit(int nr, void *addr)
-+{
-+ return *((__u32 *) addr + (nr >> 5)) & ((__u32) 1 << (nr & 31));
-+}
-+#else
-+#define hci_set_bit set_bit
-+#define hci_test_bit test_bit
-+#endif
-
-+/* Ioctl requests structures */
- struct hci_dev_stats {
- __u32 err_rx;
- __u32 err_tx;
-@@ -433,11 +736,13 @@
- __u8 features[8];
-
- __u32 pkt_type;
-+ __u32 link_policy;
-+ __u32 link_mode;
-
- __u16 acl_mtu;
-- __u16 acl_max;
-+ __u16 acl_pkts;
- __u16 sco_mtu;
-- __u16 sco_max;
-+ __u16 sco_pkts;
-
- struct hci_dev_stats stat;
- };
-@@ -445,6 +750,20 @@
- struct hci_conn_info {
- __u16 handle;
- bdaddr_t bdaddr;
-+ __u8 type;
-+ __u8 out;
-+ __u16 state;
-+ __u32 link_mode;
-+};
-+
-+struct hci_dev_req {
-+ __u16 dev_id;
-+ __u32 dev_opt;
-+};
-+
-+struct hci_dev_list_req {
-+ __u16 dev_num;
-+ struct hci_dev_req dev_req[0]; /* hci_dev_req structures */
- };
-
- struct hci_conn_list_req {
-@@ -453,4 +772,26 @@
- struct hci_conn_info conn_info[0];
- };
-
-+struct hci_conn_info_req {
-+ bdaddr_t bdaddr;
-+ __u8 type;
-+ struct hci_conn_info conn_info[0];
-+};
-+
-+struct hci_inquiry_req {
-+ __u16 dev_id;
-+ __u16 flags;
-+ __u8 lap[3];
-+ __u8 length;
-+ __u8 num_rsp;
-+};
-+#define IREQ_CACHE_FLUSH 0x0001
-+
-+struct hci_remotename_req {
-+ __u16 dev_id;
-+ __u16 flags;
-+ bdaddr_t bdaddr;
-+ __u8 name[248];
-+};
-+
- #endif /* __HCI_H */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_uart.h linux-2.4.18-mh15/include/net/bluetooth/hci_uart.h
---- linux-2.4.18/include/net/bluetooth/hci_uart.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/hci_uart.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,62 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: hci_uart.h,v 1.2 2001/06/02 01:40:08 maxk Exp $
-- */
--
--#ifndef N_HCI
--#define N_HCI 15
--#endif
--
--#ifdef __KERNEL__
--
--#define tty2n_hci(tty) ((struct n_hci *)((tty)->disc_data))
--#define n_hci2tty(n_hci) ((n_hci)->tty)
--
--struct n_hci {
-- struct tty_struct *tty;
-- struct hci_dev hdev;
--
-- struct sk_buff_head txq;
-- unsigned long tx_state;
--
-- spinlock_t rx_lock;
-- unsigned long rx_state;
-- unsigned long rx_count;
-- struct sk_buff *rx_skb;
--};
--
--/* Transmit states */
--#define TRANS_SENDING 1
--#define TRANS_WAKEUP 2
--
--/* Receiver States */
--#define WAIT_PACKET_TYPE 0
--#define WAIT_EVENT_HDR 1
--#define WAIT_ACL_HDR 2
--#define WAIT_SCO_HDR 3
--#define WAIT_DATA 4
--
--#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_usb.h linux-2.4.18-mh15/include/net/bluetooth/hci_usb.h
---- linux-2.4.18/include/net/bluetooth/hci_usb.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/hci_usb.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,68 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: hci_usb.h,v 1.3 2001/06/02 01:40:08 maxk Exp $
-- */
--
--#ifdef __KERNEL__
--
--/* Class, SubClass, and Protocol codes that describe a Bluetooth device */
--#define HCI_DEV_CLASS 0xe0 /* Wireless class */
--#define HCI_DEV_SUBCLASS 0x01 /* RF subclass */
--#define HCI_DEV_PROTOCOL 0x01 /* Bluetooth programming protocol */
--
--#define HCI_CTRL_REQ 0x20
--
--struct hci_usb {
-- struct usb_device *udev;
--
-- devrequest dev_req;
-- struct urb *ctrl_urb;
-- struct urb *intr_urb;
-- struct urb *read_urb;
-- struct urb *write_urb;
--
-- __u8 *read_buf;
-- __u8 *intr_buf;
-- struct sk_buff *intr_skb;
-- int intr_count;
--
-- __u8 bulk_out_ep_addr;
-- __u8 bulk_in_ep_addr;
-- __u8 intr_in_ep_addr;
-- __u8 intr_in_interval;
--
-- struct hci_dev hdev;
--
-- unsigned long tx_state;
-- struct sk_buff_head tx_ctrl_q;
-- struct sk_buff_head tx_write_q;
--};
--
--/* Transmit states */
--#define HCI_TX_CTRL 1
--#define HCI_TX_WRITE 2
--
--#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_vhci.h linux-2.4.18-mh15/include/net/bluetooth/hci_vhci.h
---- linux-2.4.18/include/net/bluetooth/hci_vhci.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/hci_vhci.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,50 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: hci_vhci.h,v 1.2 2001/08/01 01:02:20 maxk Exp $
-- */
--
--#ifndef __HCI_VHCI_H
--#define __HCI_VHCI_H
--
--#ifdef __KERNEL__
--
--struct hci_vhci_struct {
-- struct hci_dev hdev;
-- __u32 flags;
-- wait_queue_head_t read_wait;
-- struct sk_buff_head readq;
-- struct fasync_struct *fasync;
--};
--
--/* VHCI device flags */
--#define VHCI_FASYNC 0x0010
--
--#endif /* __KERNEL__ */
--
--#define VHCI_DEV "/dev/vhci"
--#define VHCI_MINOR 250
--
--#endif /* __HCI_VHCI_H */
-diff -urN linux-2.4.18/include/net/bluetooth/l2cap_core.h linux-2.4.18-mh15/include/net/bluetooth/l2cap_core.h
---- linux-2.4.18/include/net/bluetooth/l2cap_core.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/l2cap_core.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,144 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: l2cap_core.h,v 1.6 2001/08/03 04:19:49 maxk Exp $
-- */
--
--#ifndef __L2CAP_CORE_H
--#define __L2CAP_CORE_H
--
--#ifdef __KERNEL__
--
--/* ----- L2CAP interface ----- */
--struct l2cap_iff {
-- struct list_head list;
-- struct hci_dev *hdev;
-- bdaddr_t *bdaddr;
-- __u16 mtu;
-- spinlock_t lock;
-- struct list_head conn_list;
--};
--
--static inline void l2cap_iff_lock(struct l2cap_iff *iff)
--{
-- spin_lock(&iff->lock);
--}
--
--static inline void l2cap_iff_unlock(struct l2cap_iff *iff)
--{
-- spin_unlock(&iff->lock);
--}
--
--/* ----- L2CAP connections ----- */
--struct l2cap_chan_list {
-- struct sock *head;
-- rwlock_t lock;
-- long num;
--};
--
--struct l2cap_conn {
-- struct l2cap_iff *iff;
-- struct list_head list;
--
-- struct hci_conn *hconn;
--
-- __u16 state;
-- __u8 out;
-- bdaddr_t src;
-- bdaddr_t dst;
--
-- spinlock_t lock;
-- atomic_t refcnt;
--
-- struct sk_buff *rx_skb;
-- __u32 rx_len;
-- __u8 rx_ident;
-- __u8 tx_ident;
--
-- struct l2cap_chan_list chan_list;
--
-- struct timer_list timer;
--};
--
--static inline void __l2cap_conn_link(struct l2cap_iff *iff, struct l2cap_conn *c)
--{
-- list_add(&c->list, &iff->conn_list);
--}
--
--static inline void __l2cap_conn_unlink(struct l2cap_iff *iff, struct l2cap_conn *c)
--{
-- list_del(&c->list);
--}
--
--/* ----- L2CAP channel and socket info ----- */
--#define l2cap_pi(sk) ((struct l2cap_pinfo *) &sk->protinfo)
--
--struct l2cap_accept_q {
-- struct sock *head;
-- struct sock *tail;
--};
--
--struct l2cap_pinfo {
-- bdaddr_t src;
-- bdaddr_t dst;
-- __u16 psm;
-- __u16 dcid;
-- __u16 scid;
-- __u32 flags;
--
-- __u16 imtu;
-- __u16 omtu;
-- __u16 flush_to;
--
-- __u8 conf_state;
-- __u16 conf_mtu;
--
-- __u8 ident;
--
-- struct l2cap_conn *conn;
-- struct sock *next_c;
-- struct sock *prev_c;
--
-- struct sock *parent;
-- struct sock *next_q;
-- struct sock *prev_q;
--
-- struct l2cap_accept_q accept_q;
--};
--
--#define CONF_REQ_SENT 0x01
--#define CONF_INPUT_DONE 0x02
--#define CONF_OUTPUT_DONE 0x04
--
--extern struct bluez_sock_list l2cap_sk_list;
--extern struct list_head l2cap_iff_list;
--extern rwlock_t l2cap_rt_lock;
--
--extern void l2cap_register_proc(void);
--extern void l2cap_unregister_proc(void);
--
--#endif /* __KERNEL__ */
--
--#endif /* __L2CAP_CORE_H */
-diff -urN linux-2.4.18/include/net/bluetooth/l2cap.h linux-2.4.18-mh15/include/net/bluetooth/l2cap.h
---- linux-2.4.18/include/net/bluetooth/l2cap.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/l2cap.h 2004-08-01 16:26:23.000000000 +0200
-@@ -23,22 +23,17 @@
- */
-
- /*
-- * $Id: l2cap.h,v 1.5 2001/06/14 21:28:26 maxk Exp $
-+ * $Id: l2cap.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $
- */
-
- #ifndef __L2CAP_H
- #define __L2CAP_H
-
--#include <asm/types.h>
--#include <asm/byteorder.h>
--
- /* L2CAP defaults */
- #define L2CAP_DEFAULT_MTU 672
- #define L2CAP_DEFAULT_FLUSH_TO 0xFFFF
-
- #define L2CAP_CONN_TIMEOUT (HZ * 40)
--#define L2CAP_DISCONN_TIMEOUT (HZ * 2)
--#define L2CAP_CONN_IDLE_TIMEOUT (HZ * 60)
-
- /* L2CAP socket address */
- struct sockaddr_l2 {
-@@ -47,17 +42,12 @@
- bdaddr_t l2_bdaddr;
- };
-
--/* set/get sockopt defines */
--#define L2CAP_OPTIONS 0x01
-+/* Socket options */
-+#define L2CAP_OPTIONS 0x01
- struct l2cap_options {
- __u16 omtu;
- __u16 imtu;
- __u16 flush_to;
-- __u32 token_rate;
-- __u32 bucket_size;
-- __u32 pick_band;
-- __u32 latency;
-- __u32 delay_var;
- };
-
- #define L2CAP_CONNINFO 0x02
-@@ -65,6 +55,27 @@
- __u16 hci_handle;
- };
-
-+#define L2CAP_LM 0x03
-+#define L2CAP_LM_MASTER 0x0001
-+#define L2CAP_LM_AUTH 0x0002
-+#define L2CAP_LM_ENCRYPT 0x0004
-+#define L2CAP_LM_TRUSTED 0x0008
-+#define L2CAP_LM_RELIABLE 0x0010
-+
-+#define L2CAP_QOS 0x04
-+struct l2cap_qos {
-+ __u16 service_type;
-+ __u32 token_rate;
-+ __u32 token_bucket_size;
-+ __u32 peak_bandwidth;
-+ __u32 latency;
-+ __u32 delay_variation;
-+};
-+
-+#define L2CAP_SERV_NO_TRAFFIC 0x00
-+#define L2CAP_SERV_BEST_EFFORT 0x01
-+#define L2CAP_SERV_GUARANTEED 0x02
-+
- /* L2CAP command codes */
- #define L2CAP_COMMAND_REJ 0x01
- #define L2CAP_CONN_REQ 0x02
-@@ -79,7 +90,6 @@
- #define L2CAP_INFO_RSP 0x0b
-
- /* L2CAP structures */
--
- typedef struct {
- __u16 len;
- __u16 cid;
-@@ -112,11 +122,17 @@
- } __attribute__ ((packed)) l2cap_conn_rsp;
- #define L2CAP_CONN_RSP_SIZE 8
-
--#define L2CAP_CONN_SUCCESS 0x0000
--#define L2CAP_CONN_PEND 0x0001
--#define L2CAP_CONN_BAD_PSM 0x0002
--#define L2CAP_CONN_SEC_BLOCK 0x0003
--#define L2CAP_CONN_NO_MEM 0x0004
-+/* connect result */
-+#define L2CAP_CR_SUCCESS 0x0000
-+#define L2CAP_CR_PEND 0x0001
-+#define L2CAP_CR_BAD_PSM 0x0002
-+#define L2CAP_CR_SEC_BLOCK 0x0003
-+#define L2CAP_CR_NO_MEM 0x0004
-+
-+/* connect status */
-+#define L2CAP_CS_NO_INFO 0x0000
-+#define L2CAP_CS_AUTHEN_PEND 0x0001
-+#define L2CAP_CS_AUTHOR_PEND 0x0002
-
- typedef struct {
- __u16 dcid;
-@@ -147,6 +163,8 @@
- #define L2CAP_CONF_FLUSH_TO 0x02
- #define L2CAP_CONF_QOS 0x03
-
-+#define L2CAP_CONF_MAX_SIZE 22
-+
- typedef struct {
- __u16 dcid;
- __u16 scid;
-@@ -159,4 +177,82 @@
- } __attribute__ ((packed)) l2cap_disconn_rsp;
- #define L2CAP_DISCONN_RSP_SIZE 4
-
-+typedef struct {
-+ __u16 type;
-+ __u8 data[0];
-+} __attribute__ ((packed)) l2cap_info_req;
-+#define L2CAP_INFO_REQ_SIZE 2
-+
-+typedef struct {
-+ __u16 type;
-+ __u16 result;
-+ __u8 data[0];
-+} __attribute__ ((packed)) l2cap_info_rsp;
-+#define L2CAP_INFO_RSP_SIZE 4
-+
-+/* info type */
-+#define L2CAP_IT_CL_MTU 0x0001
-+#define L2CAP_IT_FEAT_MASK 0x0002
-+
-+/* info result */
-+#define L2CAP_IR_SUCCESS 0x0000
-+#define L2CAP_IR_NOTSUPP 0x0001
-+
-+/* ----- L2CAP connections ----- */
-+struct l2cap_chan_list {
-+ struct sock *head;
-+ rwlock_t lock;
-+ long num;
-+};
-+
-+struct l2cap_conn {
-+ struct hci_conn *hcon;
-+
-+ bdaddr_t *dst;
-+ bdaddr_t *src;
-+
-+ unsigned int mtu;
-+
-+ spinlock_t lock;
-+
-+ struct sk_buff *rx_skb;
-+ __u32 rx_len;
-+ __u8 rx_ident;
-+ __u8 tx_ident;
-+
-+ struct l2cap_chan_list chan_list;
-+};
-+
-+/* ----- L2CAP channel and socket info ----- */
-+#define l2cap_pi(sk) ((struct l2cap_pinfo *) &sk->tp_pinfo)
-+
-+struct l2cap_pinfo {
-+ __u16 psm;
-+ __u16 dcid;
-+ __u16 scid;
-+
-+ __u16 imtu;
-+ __u16 omtu;
-+ __u16 flush_to;
-+
-+ __u32 link_mode;
-+
-+ __u8 conf_state;
-+ __u8 conf_retry;
-+ __u16 conf_mtu;
-+
-+ __u8 ident;
-+
-+ struct l2cap_conn *conn;
-+ struct sock *next_c;
-+ struct sock *prev_c;
-+};
-+
-+#define L2CAP_CONF_REQ_SENT 0x01
-+#define L2CAP_CONF_INPUT_DONE 0x02
-+#define L2CAP_CONF_OUTPUT_DONE 0x04
-+#define L2CAP_CONF_MAX_RETRIES 2
-+
-+void l2cap_load(void);
-+
- #endif /* __L2CAP_H */
-diff -urN linux-2.4.18/include/net/bluetooth/rfcomm.h linux-2.4.18-mh15/include/net/bluetooth/rfcomm.h
---- linux-2.4.18/include/net/bluetooth/rfcomm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/include/net/bluetooth/rfcomm.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,361 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ RPN support - Dirk Husemann <hud@zurich.ibm.com>
-+*/
-+
-+/*
-+ * $Id: rfcomm.h,v 1.31 2002/10/18 20:12:11 maxk Exp $
-+ */
-+
-+#ifndef __RFCOMM_H
-+#define __RFCOMM_H
-+
-+#define RFCOMM_PSM 3
-+
-+#define RFCOMM_CONN_TIMEOUT (HZ * 30)
-+#define RFCOMM_DISC_TIMEOUT (HZ * 20)
-+
-+#define RFCOMM_DEFAULT_MTU 127
-+#define RFCOMM_DEFAULT_CREDITS 7
-+
-+#define RFCOMM_MAX_L2CAP_MTU 1024
-+#define RFCOMM_MAX_CREDITS 40
-+
-+#define RFCOMM_SKB_HEAD_RESERVE 8
-+#define RFCOMM_SKB_TAIL_RESERVE 2
-+#define RFCOMM_SKB_RESERVE (RFCOMM_SKB_HEAD_RESERVE + RFCOMM_SKB_TAIL_RESERVE)
-+
-+#define RFCOMM_SABM 0x2f
-+#define RFCOMM_DISC 0x43
-+#define RFCOMM_UA 0x63
-+#define RFCOMM_DM 0x0f
-+#define RFCOMM_UIH 0xef
-+
-+#define RFCOMM_TEST 0x08
-+#define RFCOMM_FCON 0x28
-+#define RFCOMM_FCOFF 0x18
-+#define RFCOMM_MSC 0x38
-+#define RFCOMM_RPN 0x24
-+#define RFCOMM_RLS 0x14
-+#define RFCOMM_PN 0x20
-+#define RFCOMM_NSC 0x04
-+
-+#define RFCOMM_V24_FC 0x02
-+#define RFCOMM_V24_RTC 0x04
-+#define RFCOMM_V24_RTR 0x08
-+#define RFCOMM_V24_IC 0x40
-+#define RFCOMM_V24_DV 0x80
-+
-+#define RFCOMM_RPN_BR_2400 0x0
-+#define RFCOMM_RPN_BR_4800 0x1
-+#define RFCOMM_RPN_BR_7200 0x2
-+#define RFCOMM_RPN_BR_9600 0x3
-+#define RFCOMM_RPN_BR_19200 0x4
-+#define RFCOMM_RPN_BR_38400 0x5
-+#define RFCOMM_RPN_BR_57600 0x6
-+#define RFCOMM_RPN_BR_115200 0x7
-+#define RFCOMM_RPN_BR_230400 0x8
-+
-+#define RFCOMM_RPN_DATA_5 0x0
-+#define RFCOMM_RPN_DATA_6 0x1
-+#define RFCOMM_RPN_DATA_7 0x2
-+#define RFCOMM_RPN_DATA_8 0x3
-+
-+#define RFCOMM_RPN_STOP_1 0
-+#define RFCOMM_RPN_STOP_15 1
-+
-+#define RFCOMM_RPN_PARITY_NONE 0x0
-+#define RFCOMM_RPN_PARITY_ODD 0x4
-+#define RFCOMM_RPN_PARITY_EVEN 0x5
-+#define RFCOMM_RPN_PARITY_MARK 0x6
-+#define RFCOMM_RPN_PARITY_SPACE 0x7
-+
-+#define RFCOMM_RPN_FLOW_NONE 0x00
-+
-+#define RFCOMM_RPN_XON_CHAR 0x11
-+#define RFCOMM_RPN_XOFF_CHAR 0x13
-+
-+#define RFCOMM_RPN_PM_BITRATE 0x0001
-+#define RFCOMM_RPN_PM_DATA 0x0002
-+#define RFCOMM_RPN_PM_STOP 0x0004
-+#define RFCOMM_RPN_PM_PARITY 0x0008
-+#define RFCOMM_RPN_PM_PARITY_TYPE 0x0010
-+#define RFCOMM_RPN_PM_XON 0x0020
-+#define RFCOMM_RPN_PM_XOFF 0x0040
-+#define RFCOMM_RPN_PM_FLOW 0x3F00
-+
-+#define RFCOMM_RPN_PM_ALL 0x3F7F
-+
-+struct rfcomm_hdr {
-+ u8 addr;
-+ u8 ctrl;
-+ u8 len; // Actual size can be 2 bytes
-+} __attribute__ ((packed));
-+
-+struct rfcomm_cmd {
-+ u8 addr;
-+ u8 ctrl;
-+ u8 len;
-+ u8 fcs;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_mcc {
-+ u8 type;
-+ u8 len;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_pn {
-+ u8 dlci;
-+ u8 flow_ctrl;
-+ u8 priority;
-+ u8 ack_timer;
-+ u16 mtu;
-+ u8 max_retrans;
-+ u8 credits;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_rpn {
-+ u8 dlci;
-+ u8 bit_rate;
-+ u8 line_settings;
-+ u8 flow_ctrl;
-+ u8 xon_char;
-+ u8 xoff_char;
-+ u16 param_mask;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_rls {
-+ u8 dlci;
-+ u8 status;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_msc {
-+ u8 dlci;
-+ u8 v24_sig;
-+} __attribute__ ((packed));
-+
-+/* ---- Core structures, flags etc ---- */
-+
-+struct rfcomm_session {
-+ struct list_head list;
-+ struct socket *sock;
-+ unsigned long state;
-+ unsigned long flags;
-+ atomic_t refcnt;
-+ int initiator;
-+
-+ /* Default DLC parameters */
-+ int cfc;
-+ uint mtu;
-+
-+ struct list_head dlcs;
-+};
-+
-+struct rfcomm_dlc {
-+ struct list_head list;
-+ struct rfcomm_session *session;
-+ struct sk_buff_head tx_queue;
-+ struct timer_list timer;
-+
-+ spinlock_t lock;
-+ unsigned long state;
-+ unsigned long flags;
-+ atomic_t refcnt;
-+ u8 dlci;
-+ u8 addr;
-+ u8 priority;
-+ u8 v24_sig;
-+ u8 mscex;
-+
-+ uint mtu;
-+ uint cfc;
-+ uint rx_credits;
-+ uint tx_credits;
-+
-+ void *owner;
-+
-+ void (*data_ready)(struct rfcomm_dlc *d, struct sk_buff *skb);
-+ void (*state_change)(struct rfcomm_dlc *d, int err);
-+ void (*modem_status)(struct rfcomm_dlc *d, u8 v24_sig);
-+};
-+
-+/* DLC and session flags */
-+#define RFCOMM_RX_THROTTLED 0
-+#define RFCOMM_TX_THROTTLED 1
-+#define RFCOMM_MSC_PENDING 2
-+#define RFCOMM_TIMED_OUT 3
-+
-+/* Scheduling flags and events */
-+#define RFCOMM_SCHED_STATE 0
-+#define RFCOMM_SCHED_RX 1
-+#define RFCOMM_SCHED_TX 2
-+#define RFCOMM_SCHED_TIMEO 3
-+#define RFCOMM_SCHED_WAKEUP 31
-+
-+/* MSC exchange flags */
-+#define RFCOMM_MSCEX_TX 1
-+#define RFCOMM_MSCEX_RX 2
-+#define RFCOMM_MSCEX_OK (RFCOMM_MSCEX_TX + RFCOMM_MSCEX_RX)
-+
-+/* CFC states */
-+#define RFCOMM_CFC_UNKNOWN -1
-+#define RFCOMM_CFC_DISABLED 0
-+#define RFCOMM_CFC_ENABLED RFCOMM_MAX_CREDITS
-+
-+extern struct task_struct *rfcomm_thread;
-+extern unsigned long rfcomm_event;
-+
-+static inline void rfcomm_schedule(uint event)
-+{
-+ if (!rfcomm_thread)
-+ return;
-+ set_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
-+ wake_up_process(rfcomm_thread);
-+}
-+
-+extern struct semaphore rfcomm_sem;
-+#define rfcomm_lock() down(&rfcomm_sem);
-+#define rfcomm_unlock() up(&rfcomm_sem);
-+
-+/* ---- RFCOMM DLCs (channels) ---- */
-+struct rfcomm_dlc *rfcomm_dlc_alloc(int prio);
-+void rfcomm_dlc_free(struct rfcomm_dlc *d);
-+int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel);
-+int rfcomm_dlc_close(struct rfcomm_dlc *d, int reason);
-+int rfcomm_dlc_send(struct rfcomm_dlc *d, struct sk_buff *skb);
-+int rfcomm_dlc_set_modem_status(struct rfcomm_dlc *d, u8 v24_sig);
-+int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig);
-+
-+#define rfcomm_dlc_lock(d) spin_lock(&d->lock)
-+#define rfcomm_dlc_unlock(d) spin_unlock(&d->lock)
-+
-+static inline void rfcomm_dlc_hold(struct rfcomm_dlc *d)
-+{
-+ atomic_inc(&d->refcnt);
-+}
-+
-+static inline void rfcomm_dlc_put(struct rfcomm_dlc *d)
-+{
-+ if (atomic_dec_and_test(&d->refcnt))
-+ rfcomm_dlc_free(d);
-+}
-+
-+extern void FASTCALL(__rfcomm_dlc_throttle(struct rfcomm_dlc *d));
-+extern void FASTCALL(__rfcomm_dlc_unthrottle(struct rfcomm_dlc *d));
-+
-+static inline void rfcomm_dlc_throttle(struct rfcomm_dlc *d)
-+{
-+ if (!test_and_set_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ __rfcomm_dlc_throttle(d);
-+}
-+
-+static inline void rfcomm_dlc_unthrottle(struct rfcomm_dlc *d)
-+{
-+ if (test_and_clear_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ __rfcomm_dlc_unthrottle(d);
-+}
-+
-+/* ---- RFCOMM sessions ---- */
-+struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state);
-+struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst);
-+struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err);
-+void rfcomm_session_del(struct rfcomm_session *s);
-+void rfcomm_session_close(struct rfcomm_session *s, int err);
-+void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst);
-+
-+static inline void rfcomm_session_hold(struct rfcomm_session *s)
-+{
-+ atomic_inc(&s->refcnt);
-+}
-+
-+static inline void rfcomm_session_put(struct rfcomm_session *s)
-+{
-+ if (atomic_dec_and_test(&s->refcnt))
-+ rfcomm_session_del(s);
-+}
-+
-+/* ---- RFCOMM chechsum ---- */
-+extern u8 rfcomm_crc_table[];
-+
-+/* ---- RFCOMM sockets ---- */
-+struct sockaddr_rc {
-+ sa_family_t rc_family;
-+ bdaddr_t rc_bdaddr;
-+ u8 rc_channel;
-+};
-+
-+#define rfcomm_pi(sk) ((struct rfcomm_pinfo *) &sk->tp_pinfo)
-+
-+struct rfcomm_pinfo {
-+ struct rfcomm_dlc *dlc;
-+ u8 channel;
-+};
-+
-+int rfcomm_init_sockets(void);
-+void rfcomm_cleanup_sockets(void);
-+
-+int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc **d);
-+
-+/* ---- RFCOMM TTY ---- */
-+#define RFCOMM_MAX_DEV 256
-+
-+#define RFCOMMCREATEDEV _IOW('R', 200, int)
-+#define RFCOMMRELEASEDEV _IOW('R', 201, int)
-+#define RFCOMMGETDEVLIST _IOR('R', 210, int)
-+#define RFCOMMGETDEVINFO _IOR('R', 211, int)
-+#define RFCOMMSTEALDLC _IOW('R', 220, int)
-+
-+#define RFCOMM_REUSE_DLC 0
-+#define RFCOMM_RELEASE_ONHUP 1
-+#define RFCOMM_HANGUP_NOW 2
-+#define RFCOMM_TTY_ATTACHED 3
-+
-+struct rfcomm_dev_req {
-+ s16 dev_id;
-+ u32 flags;
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+};
-+
-+struct rfcomm_dev_info {
-+ s16 id;
-+ u32 flags;
-+ u16 state;
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+};
-+
-+struct rfcomm_dev_list_req {
-+ u16 dev_num;
-+ struct rfcomm_dev_info dev_info[0];
-+};
-+
-+int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg);
-+int rfcomm_init_ttys(void);
-+void rfcomm_cleanup_ttys(void);
-+
-+#endif /* __RFCOMM_H */
-diff -urN linux-2.4.18/include/net/bluetooth/sco.h linux-2.4.18-mh15/include/net/bluetooth/sco.h
---- linux-2.4.18/include/net/bluetooth/sco.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/include/net/bluetooth/sco.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,81 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: sco.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $
-+ */
-+
-+#ifndef __SCO_H
-+#define __SCO_H
-+
-+/* SCO defaults */
-+#define SCO_DEFAULT_MTU 500
-+#define SCO_DEFAULT_FLUSH_TO 0xFFFF
-+
-+#define SCO_CONN_TIMEOUT (HZ * 40)
-+#define SCO_DISCONN_TIMEOUT (HZ * 2)
-+#define SCO_CONN_IDLE_TIMEOUT (HZ * 60)
-+
-+/* SCO socket address */
-+struct sockaddr_sco {
-+ sa_family_t sco_family;
-+ bdaddr_t sco_bdaddr;
-+};
-+
-+/* set/get sockopt defines */
-+#define SCO_OPTIONS 0x01
-+struct sco_options {
-+ __u16 mtu;
-+};
-+
-+#define SCO_CONNINFO 0x02
-+struct sco_conninfo {
-+ __u16 hci_handle;
-+};
-+
-+/* ---- SCO connections ---- */
-+struct sco_conn {
-+ struct hci_conn *hcon;
-+
-+ bdaddr_t *dst;
-+ bdaddr_t *src;
-+
-+ spinlock_t lock;
-+ struct sock *sk;
-+
-+ unsigned int mtu;
-+};
-+
-+#define sco_conn_lock(c) spin_lock(&c->lock);
-+#define sco_conn_unlock(c) spin_unlock(&c->lock);
-+
-+/* ----- SCO socket info ----- */
-+#define sco_pi(sk) ((struct sco_pinfo *) &sk->tp_pinfo)
-+
-+struct sco_pinfo {
-+ __u32 flags;
-+ struct sco_conn *conn;
-+};
-+
-+#endif /* __SCO_H */
-diff -urN linux-2.4.18/include/pcmcia/ciscode.h linux-2.4.18-mh15/include/pcmcia/ciscode.h
---- linux-2.4.18/include/pcmcia/ciscode.h 2001-12-21 18:42:04.000000000 +0100
-+++ linux-2.4.18-mh15/include/pcmcia/ciscode.h 2004-08-01 16:26:23.000000000 +0200
-@@ -1,5 +1,5 @@
- /*
-- * ciscode.h 1.48 2001/08/24 12:16:12
-+ * ciscode.h 1.57 2002/11/03 20:38:14
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
-@@ -60,6 +60,10 @@
- #define PRODID_INTEL_DUAL_RS232 0x0301
- #define PRODID_INTEL_2PLUS 0x8422
-
-+#define MANFID_KME 0x0032
-+#define PRODID_KME_KXLC005_A 0x0704
-+#define PRODID_KME_KXLC005_B 0x2904
-+
- #define MANFID_LINKSYS 0x0143
- #define PRODID_LINKSYS_PCMLM28 0xc0ab
- #define PRODID_LINKSYS_3400 0x3341
-@@ -94,6 +98,8 @@
- #define PRODID_OSITECH_JACK_336 0x0007
- #define PRODID_OSITECH_SEVEN 0x0008
-
-+#define MANFID_OXSEMI 0x0279
-+
- #define MANFID_PIONEER 0x000b
-
- #define MANFID_PSION 0x016c
-@@ -103,6 +109,7 @@
- #define PRODID_QUATECH_SPP100 0x0003
- #define PRODID_QUATECH_DUAL_RS232 0x0012
- #define PRODID_QUATECH_DUAL_RS232_D1 0x0007
-+#define PRODID_QUATECH_DUAL_RS232_D2 0x0052
- #define PRODID_QUATECH_QUAD_RS232 0x001b
- #define PRODID_QUATECH_DUAL_RS422 0x000e
- #define PRODID_QUATECH_QUAD_RS422 0x0045
-@@ -120,9 +127,12 @@
-
- #define MANFID_TDK 0x0105
- #define PRODID_TDK_CF010 0x0900
-+#define PRODID_TDK_GN3410 0x4815
-
- #define MANFID_TOSHIBA 0x0098
-
-+#define MANFID_UNGERMANN 0x02c0
-+
- #define MANFID_XIRCOM 0x0105
-
- #endif /* _LINUX_CISCODE_H */
-diff -urN linux-2.4.18/kernel/ksyms.c linux-2.4.18-mh15/kernel/ksyms.c
---- linux-2.4.18/kernel/ksyms.c 2002-02-25 20:38:13.000000000 +0100
-+++ linux-2.4.18-mh15/kernel/ksyms.c 2004-08-01 16:26:23.000000000 +0200
-@@ -47,6 +47,7 @@
- #include <linux/in6.h>
- #include <linux/completion.h>
- #include <linux/seq_file.h>
-+#include <linux/firmware.h>
- #include <asm/checksum.h>
-
- #if defined(CONFIG_PROC_FS)
-@@ -538,6 +539,13 @@
- EXPORT_SYMBOL(strspn);
- EXPORT_SYMBOL(strsep);
-
-+#ifdef CONFIG_FW_LOADER
-+EXPORT_SYMBOL(release_firmware);
-+EXPORT_SYMBOL(request_firmware);
-+EXPORT_SYMBOL(request_firmware_nowait);
-+EXPORT_SYMBOL(register_firmware);
-+#endif
-+
- /* software interrupts */
- EXPORT_SYMBOL(tasklet_hi_vec);
- EXPORT_SYMBOL(tasklet_vec);
-diff -urN linux-2.4.18/lib/Config.in linux-2.4.18-mh15/lib/Config.in
---- linux-2.4.18/lib/Config.in 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/lib/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,12 @@
-+#
-+# Library configuration
-+#
-+mainmenu_option next_comment
-+comment 'Library routines'
-+
-+if [ "$CONFIG_EXPERIMENTAL" = "y" -a \
-+ "$CONFIG_HOTPLUG" = "y" ]; then
-+ tristate 'Hotplug firmware loading support (EXPERIMENTAL)' CONFIG_FW_LOADER
-+fi
-+
-+endmenu
-diff -urN linux-2.4.18/lib/firmware_class.c linux-2.4.18-mh15/lib/firmware_class.c
---- linux-2.4.18/lib/firmware_class.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/lib/firmware_class.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,573 @@
-+/*
-+ * firmware_class.c - Multi purpose firmware loading support
-+ *
-+ * Copyright (c) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+ *
-+ * Please see Documentation/firmware_class/ for more information.
-+ *
-+ */
-+/*
-+ * Based on kernel/kmod.c and drivers/usb/usb.c
-+ */
-+/*
-+ kernel/kmod.c
-+ Kirk Petersen
-+
-+ Reorganized not to be a daemon by Adam Richter, with guidance
-+ from Greg Zornetzer.
-+
-+ Modified to avoid chroot and file sharing problems.
-+ Mikael Pettersson
-+
-+ Limit the concurrent number of kmod modprobes to catch loops from
-+ "modprobe needs a service that is in a module".
-+ Keith Owens <kaos@ocs.com.au> December 1999
-+
-+ Unblock all signals when we exec a usermode process.
-+ Shuu Yamaguchi <shuu@wondernetworkresources.com> December 2000
-+*/
-+/*
-+ * drivers/usb/usb.c
-+ *
-+ * (C) Copyright Linus Torvalds 1999
-+ * (C) Copyright Johannes Erdfelt 1999-2001
-+ * (C) Copyright Andreas Gal 1999
-+ * (C) Copyright Gregory P. Smith 1999
-+ * (C) Copyright Deti Fliegl 1999 (new USB architecture)
-+ * (C) Copyright Randy Dunlap 2000
-+ * (C) Copyright David Brownell 2000 (kernel hotplug, usb_device_id)
-+ * (C) Copyright Yggdrasil Computing, Inc. 2000
-+ * (usb_device_id matching changes by Adam J. Richter)
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/string.h>
-+#include <linux/types.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/kmod.h>
-+#include <linux/proc_fs.h>
-+#include <linux/vmalloc.h>
-+#include <asm/hardirq.h>
-+
-+#include "linux/firmware.h"
-+
-+MODULE_AUTHOR("Manuel Estrada Sainz <ranty@debian.org>");
-+MODULE_DESCRIPTION("Multi purpose firmware loading support");
-+MODULE_LICENSE("GPL");
-+
-+#define err(format, arg...) \
-+ printk(KERN_ERR "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+
-+static int loading_timeout = 10; /* In seconds */
-+static struct proc_dir_entry *proc_dir_timeout;
-+static struct proc_dir_entry *proc_dir;
-+
-+#ifdef CONFIG_HOTPLUG
-+
-+static int
-+call_helper(char *verb, const char *name, const char *device)
-+{
-+ char *argv[3], **envp, *buf, *scratch;
-+ int i = 0;
-+
-+ int retval = 0;
-+
-+ if (!hotplug_path[0])
-+ return -ENOENT;
-+ if (in_interrupt()) {
-+ err("in_interrupt");
-+ return -EFAULT;
-+ }
-+ if (!current->fs->root) {
-+ warn("call_policy %s -- no FS yet", verb);
-+ return -EPERM;
-+ }
-+
-+ if (!(envp = (char **) kmalloc(20 * sizeof (char *), GFP_KERNEL))) {
-+ err("unable to allocate envp");
-+ return -ENOMEM;
-+ }
-+ if (!(buf = kmalloc(256, GFP_KERNEL))) {
-+ kfree(envp);
-+ err("unable to allocate buf");
-+ return -ENOMEM;
-+ }
-+
-+ /* only one standardized param to hotplug command: type */
-+ argv[0] = hotplug_path;
-+ argv[1] = "firmware";
-+ argv[2] = 0;
-+
-+ /* minimal command environment */
-+ envp[i++] = "HOME=/";
-+ envp[i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
-+
-+#ifdef DEBUG
-+ /* hint that policy agent should enter no-stdout debug mode */
-+ envp[i++] = "DEBUG=kernel";
-+#endif
-+ scratch = buf;
-+
-+ if (device) {
-+ envp[i++] = scratch;
-+ scratch += snprintf(scratch, FIRMWARE_NAME_MAX+25,
-+ "DEVPATH=/driver/firmware/%s", device) + 1;
-+ }
-+
-+ envp[i++] = scratch;
-+ scratch += sprintf(scratch, "ACTION=%s", verb) + 1;
-+
-+ envp[i++] = scratch;
-+ scratch += snprintf(scratch, FIRMWARE_NAME_MAX,
-+ "FIRMWARE=%s", name) + 1;
-+
-+ envp[i++] = 0;
-+
-+#ifdef DEBUG
-+ dbg("firmware: %s %s %s", argv[0], argv[1], verb);
-+#endif
-+
-+ retval = call_usermodehelper(argv[0], argv, envp);
-+ if (retval) {
-+ printk("call_usermodehelper return %d\n", retval);
-+ }
-+
-+ kfree(buf);
-+ kfree(envp);
-+ return retval;
-+}
-+#else
-+
-+static inline int
-+call_helper(char *verb, const char *name, const char *device)
-+{
-+ return -ENOENT;
-+}
-+
-+#endif /* CONFIG_HOTPLUG */
-+
-+struct firmware_priv {
-+ struct completion completion;
-+ struct proc_dir_entry *proc_dir;
-+ struct proc_dir_entry *attr_data;
-+ struct proc_dir_entry *attr_loading;
-+ struct firmware *fw;
-+ int loading;
-+ int abort;
-+ int alloc_size;
-+ struct timer_list timeout;
-+};
-+
-+static int
-+firmware_timeout_show(char *buf, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ return sprintf(buf, "%d\n", loading_timeout);
-+}
-+
-+/**
-+ * firmware_timeout_store:
-+ * Description:
-+ * Sets the number of seconds to wait for the firmware. Once
-+ * this expires an error will be return to the driver and no
-+ * firmware will be provided.
-+ *
-+ * Note: zero means 'wait for ever'
-+ *
-+ **/
-+static int
-+firmware_timeout_store(struct file *file, const char *buf,
-+ unsigned long count, void *data)
-+{
-+ loading_timeout = simple_strtol(buf, NULL, 10);
-+ return count;
-+}
-+
-+static int
-+firmware_loading_show(char *buf, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ return sprintf(buf, "%d\n", fw_priv->loading);
-+}
-+
-+/**
-+ * firmware_loading_store: - loading control file
-+ * Description:
-+ * The relevant values are:
-+ *
-+ * 1: Start a load, discarding any previous partial load.
-+ * 0: Conclude the load and handle the data to the driver code.
-+ * -1: Conclude the load with an error and discard any written data.
-+ **/
-+static int
-+firmware_loading_store(struct file *file, const char *buf,
-+ unsigned long count, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ int prev_loading = fw_priv->loading;
-+
-+ fw_priv->loading = simple_strtol(buf, NULL, 10);
-+
-+ switch (fw_priv->loading) {
-+ case -1:
-+ fw_priv->abort = 1;
-+ wmb();
-+ complete(&fw_priv->completion);
-+ break;
-+ case 1:
-+ kfree(fw_priv->fw->data);
-+ fw_priv->fw->data = NULL;
-+ fw_priv->fw->size = 0;
-+ fw_priv->alloc_size = 0;
-+ break;
-+ case 0:
-+ if (prev_loading == 1)
-+ complete(&fw_priv->completion);
-+ break;
-+ }
-+
-+ return count;
-+}
-+
-+static int
-+firmware_data_read(char *buffer, char **start, off_t offset,
-+ int count, int *eof, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ struct firmware *fw = fw_priv->fw;
-+
-+ if (offset > fw->size)
-+ return 0;
-+ if (offset + count > fw->size)
-+ count = fw->size - offset;
-+
-+ memcpy(buffer, fw->data + offset, count);
-+ *start = (void *) ((long) count);
-+ return count;
-+}
-+static int
-+fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size)
-+{
-+ u8 *new_data;
-+ int new_size;
-+
-+ if (min_size <= fw_priv->alloc_size)
-+ return 0;
-+ if((min_size % PAGE_SIZE) == 0)
-+ new_size = min_size;
-+ else
-+ new_size = (min_size + PAGE_SIZE) & PAGE_MASK;
-+ new_data = vmalloc(new_size);
-+ if (!new_data) {
-+ printk(KERN_ERR "%s: unable to alloc buffer\n", __FUNCTION__);
-+ /* Make sure that we don't keep incomplete data */
-+ fw_priv->abort = 1;
-+ return -ENOMEM;
-+ }
-+ fw_priv->alloc_size = new_size;
-+ if (fw_priv->fw->data) {
-+ memcpy(new_data, fw_priv->fw->data, fw_priv->fw->size);
-+ vfree(fw_priv->fw->data);
-+ }
-+ fw_priv->fw->data = new_data;
-+ BUG_ON(min_size > fw_priv->alloc_size);
-+ return 0;
-+}
-+
-+/**
-+ * firmware_data_write:
-+ *
-+ * Description:
-+ *
-+ * Data written to the 'data' attribute will be later handled to
-+ * the driver as a firmware image.
-+ **/
-+static int
-+firmware_data_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ struct firmware *fw = fw_priv->fw;
-+ int offset = file->f_pos;
-+ int retval;
-+
-+ retval = fw_realloc_buffer(fw_priv, offset + count);
-+ if (retval) {
-+ printk("%s: retval:%d\n", __FUNCTION__, retval);
-+ return retval;
-+ }
-+
-+ memcpy(fw->data + offset, buffer, count);
-+
-+ fw->size = max_t(size_t, offset + count, fw->size);
-+ file->f_pos += count;
-+ return count;
-+}
-+
-+static void
-+firmware_class_timeout(u_long data)
-+{
-+ struct firmware_priv *fw_priv = (struct firmware_priv *) data;
-+ fw_priv->abort = 1;
-+ wmb();
-+ complete(&fw_priv->completion);
-+}
-+static int
-+fw_setup_class_device(struct firmware_priv **fw_priv_p,
-+ const char *fw_name, const char *device)
-+{
-+ int retval;
-+ struct firmware_priv *fw_priv = kmalloc(sizeof (struct firmware_priv),
-+ GFP_KERNEL);
-+ *fw_priv_p = fw_priv;
-+ if (!fw_priv) {
-+ retval = -ENOMEM;
-+ goto out;
-+ }
-+ memset(fw_priv, 0, sizeof (*fw_priv));
-+
-+ init_completion(&fw_priv->completion);
-+
-+ fw_priv->timeout.function = firmware_class_timeout;
-+ fw_priv->timeout.data = (u_long) fw_priv;
-+ init_timer(&fw_priv->timeout);
-+
-+ retval = -EAGAIN;
-+ fw_priv->proc_dir = create_proc_entry(device, 0644 | S_IFDIR, proc_dir);
-+ if (!fw_priv->proc_dir)
-+ goto err_free_fw_priv;
-+
-+ fw_priv->attr_data = create_proc_entry("data", 0644 | S_IFREG,
-+ fw_priv->proc_dir);
-+ if (!fw_priv->attr_data)
-+ goto err_remove_dir;
-+
-+ fw_priv->attr_data->read_proc = firmware_data_read;
-+ fw_priv->attr_data->write_proc = firmware_data_write;
-+ fw_priv->attr_data->data = fw_priv;
-+
-+ fw_priv->attr_loading = create_proc_entry("loading", 0644 | S_IFREG,
-+ fw_priv->proc_dir);
-+ if (!fw_priv->attr_loading)
-+ goto err_remove_data;
-+
-+ fw_priv->attr_loading->read_proc = firmware_loading_show;
-+ fw_priv->attr_loading->write_proc = firmware_loading_store;
-+ fw_priv->attr_loading->data = fw_priv;
-+
-+ retval = 0;
-+ fw_priv->fw = kmalloc(sizeof (struct firmware), GFP_KERNEL);
-+ if (!fw_priv->fw) {
-+ printk(KERN_ERR "%s: kmalloc(struct firmware) failed\n",
-+ __FUNCTION__);
-+ retval = -ENOMEM;
-+ goto err_remove_loading;
-+ }
-+ memset(fw_priv->fw, 0, sizeof (*fw_priv->fw));
-+
-+ goto out;
-+
-+err_remove_loading:
-+ remove_proc_entry("loading", fw_priv->proc_dir);
-+err_remove_data:
-+ remove_proc_entry("data", fw_priv->proc_dir);
-+err_remove_dir:
-+ remove_proc_entry(device, proc_dir);
-+err_free_fw_priv:
-+ kfree(fw_priv);
-+out:
-+ return retval;
-+}
-+static void
-+fw_remove_class_device(struct firmware_priv *fw_priv)
-+{
-+ remove_proc_entry("loading", fw_priv->proc_dir);
-+ remove_proc_entry("data", fw_priv->proc_dir);
-+ remove_proc_entry(fw_priv->proc_dir->name, proc_dir);
-+}
-+
-+/**
-+ * request_firmware: - request firmware to hotplug and wait for it
-+ * Description:
-+ * @firmware will be used to return a firmware image by the name
-+ * of @name for device @device.
-+ *
-+ * Should be called from user context where sleeping is allowed.
-+ *
-+ * @name will be use as $FIRMWARE in the hotplug environment and
-+ * should be distinctive enough not to be confused with any other
-+ * firmware image for this or any other device.
-+ **/
-+int
-+request_firmware(const struct firmware **firmware, const char *name,
-+ const char *device)
-+{
-+ struct firmware_priv *fw_priv;
-+ int retval;
-+
-+ if (!firmware) {
-+ retval = -EINVAL;
-+ goto out;
-+ }
-+ *firmware = NULL;
-+
-+ retval = fw_setup_class_device(&fw_priv, name, device);
-+ if (retval)
-+ goto out;
-+
-+ retval = call_helper("add", name, device);
-+ if (retval)
-+ goto out;
-+ if (loading_timeout) {
-+ fw_priv->timeout.expires = jiffies + loading_timeout * HZ;
-+ add_timer(&fw_priv->timeout);
-+ }
-+
-+ wait_for_completion(&fw_priv->completion);
-+
-+ del_timer(&fw_priv->timeout);
-+ fw_remove_class_device(fw_priv);
-+
-+ if (fw_priv->fw->size && !fw_priv->abort) {
-+ *firmware = fw_priv->fw;
-+ } else {
-+ retval = -ENOENT;
-+ vfree(fw_priv->fw->data);
-+ kfree(fw_priv->fw);
-+ }
-+out:
-+ kfree(fw_priv);
-+ return retval;
-+}
-+
-+void
-+release_firmware(const struct firmware *fw)
-+{
-+ if (fw) {
-+ vfree(fw->data);
-+ kfree(fw);
-+ }
-+}
-+
-+/**
-+ * register_firmware: - provide a firmware image for later usage
-+ *
-+ * Description:
-+ * Make sure that @data will be available by requesting firmware @name.
-+ *
-+ * Note: This will not be possible until some kind of persistence
-+ * is available.
-+ **/
-+void
-+register_firmware(const char *name, const u8 *data, size_t size)
-+{
-+ /* This is meaningless without firmware caching, so until we
-+ * decide if firmware caching is reasonable just leave it as a
-+ * noop */
-+}
-+
-+/* Async support */
-+struct firmware_work {
-+ struct tq_struct work;
-+ struct module *module;
-+ const char *name;
-+ const char *device;
-+ void *context;
-+ void (*cont)(const struct firmware *fw, void *context);
-+};
-+
-+static void
-+request_firmware_work_func(void *arg)
-+{
-+ struct firmware_work *fw_work = arg;
-+ const struct firmware *fw;
-+ if (!arg)
-+ return;
-+ request_firmware(&fw, fw_work->name, fw_work->device);
-+ fw_work->cont(fw, fw_work->context);
-+ release_firmware(fw);
-+ __MOD_DEC_USE_COUNT(fw_work->module);
-+ kfree(fw_work);
-+}
-+
-+/**
-+ * request_firmware_nowait:
-+ *
-+ * Description:
-+ * Asynchronous variant of request_firmware() for contexts where
-+ * it is not possible to sleep.
-+ *
-+ * @cont will be called asynchronously when the firmware request is over.
-+ *
-+ * @context will be passed over to @cont.
-+ *
-+ * @fw may be %NULL if firmware request fails.
-+ *
-+ **/
-+int
-+request_firmware_nowait(
-+ struct module *module,
-+ const char *name, const char *device, void *context,
-+ void (*cont)(const struct firmware *fw, void *context))
-+{
-+ struct firmware_work *fw_work = kmalloc(sizeof (struct firmware_work),
-+ GFP_ATOMIC);
-+ if (!fw_work)
-+ return -ENOMEM;
-+ if (!try_inc_mod_count(module)) {
-+ kfree(fw_work);
-+ return -EFAULT;
-+ }
-+
-+ *fw_work = (struct firmware_work) {
-+ .module = module,
-+ .name = name,
-+ .device = device,
-+ .context = context,
-+ .cont = cont,
-+ };
-+ INIT_TQUEUE(&fw_work->work, request_firmware_work_func, fw_work);
-+
-+ schedule_task(&fw_work->work);
-+ return 0;
-+}
-+
-+static int __init
-+firmware_class_init(void)
-+{
-+ proc_dir = create_proc_entry("driver/firmware", 0755 | S_IFDIR, NULL);
-+ if (!proc_dir)
-+ return -EAGAIN;
-+ proc_dir_timeout = create_proc_entry("timeout",
-+ 0644 | S_IFREG, proc_dir);
-+ if (!proc_dir_timeout) {
-+ remove_proc_entry("driver/firmware", NULL);
-+ return -EAGAIN;
-+ }
-+ proc_dir_timeout->read_proc = firmware_timeout_show;
-+ proc_dir_timeout->write_proc = firmware_timeout_store;
-+ return 0;
-+}
-+static void __exit
-+firmware_class_exit(void)
-+{
-+ remove_proc_entry("timeout", proc_dir);
-+ remove_proc_entry("driver/firmware", NULL);
-+}
-+
-+module_init(firmware_class_init);
-+module_exit(firmware_class_exit);
-+
-+#ifndef CONFIG_FW_LOADER
-+EXPORT_SYMBOL(release_firmware);
-+EXPORT_SYMBOL(request_firmware);
-+EXPORT_SYMBOL(request_firmware_nowait);
-+EXPORT_SYMBOL(register_firmware);
-+#endif
-diff -urN linux-2.4.18/lib/Makefile linux-2.4.18-mh15/lib/Makefile
---- linux-2.4.18/lib/Makefile 2001-09-18 00:31:15.000000000 +0200
-+++ linux-2.4.18-mh15/lib/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -8,13 +8,17 @@
-
- L_TARGET := lib.a
-
--export-objs := cmdline.o dec_and_lock.o rwsem-spinlock.o rwsem.o
-+export-objs := cmdline.o dec_and_lock.o rwsem-spinlock.o rwsem.o \
-+ firmware_class.o
-
- obj-y := errno.o ctype.o string.o vsprintf.o brlock.o cmdline.o bust_spinlocks.o rbtree.o
-
-+obj-$(CONFIG_FW_LOADER) += firmware_class.o
- obj-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
- obj-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
-
-+include $(TOPDIR)/drivers/bluetooth/Makefile.lib
-+
- ifneq ($(CONFIG_HAVE_DEC_LOCK),y)
- obj-y += dec_and_lock.o
- endif
-diff -urN linux-2.4.18/MAINTAINERS linux-2.4.18-mh15/MAINTAINERS
---- linux-2.4.18/MAINTAINERS 2002-02-25 20:37:52.000000000 +0100
-+++ linux-2.4.18-mh15/MAINTAINERS 2004-08-01 16:26:23.000000000 +0200
-@@ -252,10 +252,88 @@
- L: linux-kernel@vger.kernel.org
- S: Maintained
-
--BLUETOOTH SUBSYSTEM (BlueZ)
-+BLUETOOTH SUBSYSTEM
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
- P: Maxim Krasnyansky
- M: maxk@qualcomm.com
-+L: bluez-devel@lists.sf.net
- W: http://bluez.sf.net
-+W: http://www.bluez.org
-+W: http://www.holtmann.org/linux/bluetooth/
-+S: Maintained
-+
-+BLUETOOTH RFCOMM LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH BNEP LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH CMTP LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HIDP LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI UART DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH HCI USB DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH HCI BCM203X DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BFUSB DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI DTL1 DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BLUECARD DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BT3C DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BTUART DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI VHCI DRIVER
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
- S: Maintained
-
- BTTV VIDEO4LINUX DRIVER
-diff -urN linux-2.4.18/net/bluetooth/af_bluetooth.c linux-2.4.18-mh15/net/bluetooth/af_bluetooth.c
---- linux-2.4.18/net/bluetooth/af_bluetooth.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/af_bluetooth.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,14 +25,15 @@
- /*
- * BlueZ Bluetooth address family and sockets.
- *
-- * $Id: af_bluetooth.c,v 1.4 2001/07/05 18:42:44 maxk Exp $
-+ * $Id: af_bluetooth.c,v 1.8 2002/07/22 20:32:54 maxk Exp $
- */
--#define VERSION "1.1"
-+#define VERSION "2.4"
-
- #include <linux/config.h>
- #include <linux/module.h>
-
- #include <linux/types.h>
-+#include <linux/list.h>
- #include <linux/errno.h>
- #include <linux/kernel.h>
- #include <linux/major.h>
-@@ -40,6 +41,7 @@
- #include <linux/slab.h>
- #include <linux/skbuff.h>
- #include <linux/init.h>
-+#include <linux/poll.h>
- #include <linux/proc_fs.h>
- #include <net/sock.h>
-
-@@ -48,70 +50,79 @@
- #endif
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
-+
-+#ifndef AF_BLUETOOTH_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-
- /* Bluetooth sockets */
--static struct net_proto_family *bluez_sock[BLUEZ_MAX_PROTO];
-+#define BLUEZ_MAX_PROTO 7
-+static struct net_proto_family *bluez_proto[BLUEZ_MAX_PROTO];
-
- int bluez_sock_register(int proto, struct net_proto_family *ops)
- {
-- if (proto > BLUEZ_MAX_PROTO)
-+ if (proto >= BLUEZ_MAX_PROTO)
- return -EINVAL;
-
-- if (bluez_sock[proto])
-+ if (bluez_proto[proto])
- return -EEXIST;
-
-- bluez_sock[proto] = ops;
-+ bluez_proto[proto] = ops;
- return 0;
- }
-
- int bluez_sock_unregister(int proto)
- {
-- if (proto > BLUEZ_MAX_PROTO)
-+ if (proto >= BLUEZ_MAX_PROTO)
- return -EINVAL;
-
-- if (!bluez_sock[proto])
-+ if (!bluez_proto[proto])
- return -ENOENT;
-
-- bluez_sock[proto] = NULL;
-+ bluez_proto[proto] = NULL;
- return 0;
- }
-
- static int bluez_sock_create(struct socket *sock, int proto)
- {
-- if (proto > BLUEZ_MAX_PROTO)
-+ if (proto >= BLUEZ_MAX_PROTO)
- return -EINVAL;
-
- #if defined(CONFIG_KMOD)
-- if (!bluez_sock[proto]) {
-+ if (!bluez_proto[proto]) {
- char module_name[30];
- sprintf(module_name, "bt-proto-%d", proto);
- request_module(module_name);
- }
- #endif
-
-- if (!bluez_sock[proto])
-+ if (!bluez_proto[proto])
- return -ENOENT;
-
-- return bluez_sock[proto]->create(sock, proto);
-+ return bluez_proto[proto]->create(sock, proto);
-+}
-+
-+void bluez_sock_init(struct socket *sock, struct sock *sk)
-+{
-+ sock_init_data(sock, sk);
-+ INIT_LIST_HEAD(&bluez_pi(sk)->accept_q);
- }
-
- void bluez_sock_link(struct bluez_sock_list *l, struct sock *sk)
- {
-- write_lock(&l->lock);
--
-+ write_lock_bh(&l->lock);
- sk->next = l->head;
- l->head = sk;
- sock_hold(sk);
--
-- write_unlock(&l->lock);
-+ write_unlock_bh(&l->lock);
- }
-
- void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *sk)
- {
- struct sock **skp;
-
-- write_lock(&l->lock);
-+ write_lock_bh(&l->lock);
- for (skp = &l->head; *skp; skp = &((*skp)->next)) {
- if (*skp == sk) {
- *skp = sk->next;
-@@ -119,7 +130,163 @@
- break;
- }
- }
-- write_unlock(&l->lock);
-+ write_unlock_bh(&l->lock);
-+}
-+
-+void bluez_accept_enqueue(struct sock *parent, struct sock *sk)
-+{
-+ BT_DBG("parent %p, sk %p", parent, sk);
-+
-+ sock_hold(sk);
-+ list_add_tail(&bluez_pi(sk)->accept_q, &bluez_pi(parent)->accept_q);
-+ bluez_pi(sk)->parent = parent;
-+ parent->ack_backlog++;
-+}
-+
-+static void bluez_accept_unlink(struct sock *sk)
-+{
-+ BT_DBG("sk %p state %d", sk, sk->state);
-+
-+ list_del_init(&bluez_pi(sk)->accept_q);
-+ bluez_pi(sk)->parent->ack_backlog--;
-+ bluez_pi(sk)->parent = NULL;
-+ sock_put(sk);
-+}
-+
-+struct sock *bluez_accept_dequeue(struct sock *parent, struct socket *newsock)
-+{
-+ struct list_head *p, *n;
-+ struct bluez_pinfo *pi;
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ list_for_each_safe(p, n, &bluez_pi(parent)->accept_q) {
-+ pi = list_entry(p, struct bluez_pinfo, accept_q);
-+ sk = bluez_sk(pi);
-+
-+ lock_sock(sk);
-+ if (sk->state == BT_CLOSED) {
-+ release_sock(sk);
-+ bluez_accept_unlink(sk);
-+ continue;
-+ }
-+
-+ if (sk->state == BT_CONNECTED || !newsock) {
-+ bluez_accept_unlink(sk);
-+ if (newsock)
-+ sock_graft(sk, newsock);
-+ release_sock(sk);
-+ return sk;
-+ }
-+ release_sock(sk);
-+ }
-+ return NULL;
-+}
-+
-+int bluez_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm)
-+{
-+ int noblock = flags & MSG_DONTWAIT;
-+ struct sock *sk = sock->sk;
-+ struct sk_buff *skb;
-+ int copied, err;
-+
-+ BT_DBG("sock %p sk %p len %d", sock, sk, len);
-+
-+ if (flags & (MSG_OOB))
-+ return -EOPNOTSUPP;
-+
-+ if (!(skb = skb_recv_datagram(sk, flags, noblock, &err))) {
-+ if (sk->shutdown & RCV_SHUTDOWN)
-+ return 0;
-+ return err;
-+ }
-+
-+ msg->msg_namelen = 0;
-+
-+ copied = skb->len;
-+ if (len < copied) {
-+ msg->msg_flags |= MSG_TRUNC;
-+ copied = len;
-+ }
-+
-+ skb->h.raw = skb->data;
-+ err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
-+
-+ skb_free_datagram(sk, skb);
-+
-+ return err ? : copied;
-+}
-+
-+unsigned int bluez_sock_poll(struct file * file, struct socket *sock, poll_table *wait)
-+{
-+ struct sock *sk = sock->sk;
-+ unsigned int mask = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ poll_wait(file, sk->sleep, wait);
-+
-+ if (sk->err || !skb_queue_empty(&sk->error_queue))
-+ mask |= POLLERR;
-+
-+ if (sk->shutdown == SHUTDOWN_MASK)
-+ mask |= POLLHUP;
-+
-+ if (!skb_queue_empty(&sk->receive_queue) ||
-+ !list_empty(&bluez_pi(sk)->accept_q) ||
-+ (sk->shutdown & RCV_SHUTDOWN))
-+ mask |= POLLIN | POLLRDNORM;
-+
-+ if (sk->state == BT_CLOSED)
-+ mask |= POLLHUP;
-+
-+ if (sk->state == BT_CONNECT ||
-+ sk->state == BT_CONNECT2 ||
-+ sk->state == BT_CONFIG)
-+ return mask;
-+
-+ if (sock_writeable(sk))
-+ mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
-+ else
-+ set_bit(SOCK_ASYNC_NOSPACE, &sk->socket->flags);
-+
-+ return mask;
-+}
-+
-+int bluez_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ add_wait_queue(sk->sleep, &wait);
-+ while (sk->state != state) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->err) {
-+ err = sock_error(sk);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+ return err;
- }
-
- struct net_proto_family bluez_sock_family_ops =
-@@ -129,9 +296,9 @@
-
- int bluez_init(void)
- {
-- INF("BlueZ HCI Core ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ BT_INFO("BlueZ Core ver %s Copyright (C) 2000,2001 Qualcomm Inc",
- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-
- proc_mkdir("bluetooth", NULL);
-
-@@ -164,5 +331,6 @@
- module_exit(bluez_cleanup);
-
- MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
--MODULE_DESCRIPTION("BlueZ HCI Core ver " VERSION);
-+MODULE_DESCRIPTION("BlueZ Core ver " VERSION);
-+MODULE_LICENSE("GPL");
- #endif
-diff -urN linux-2.4.18/net/bluetooth/bnep/bnep.h linux-2.4.18-mh15/net/bluetooth/bnep/bnep.h
---- linux-2.4.18/net/bluetooth/bnep/bnep.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/bnep.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,185 @@
-+/*
-+ BNEP protocol definition for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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.
-+
-+ 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+*/
-+
-+/*
-+ * $Id: bnep2.h,v 1.9 2002/07/14 07:09:19 maxk Exp $
-+ */
-+
-+#ifndef _BNEP_H
-+#define _BNEP_H
-+
-+#include <linux/types.h>
-+#include <net/bluetooth/bluetooth.h>
-+
-+#include "crc32.h"
-+
-+// Limits
-+#define BNEP_MAX_PROTO_FILTERS 5
-+#define BNEP_MAX_MULTICAST_FILTERS 20
-+
-+// UUIDs
-+#define BNEP_BASE_UUID 0x0000000000001000800000805F9B34FB
-+#define BNEP_UUID16 0x02
-+#define BNEP_UUID32 0x04
-+#define BNEP_UUID128 0x16
-+
-+#define BNEP_SVC_PANU 0x1115
-+#define BNEP_SVC_NAP 0x1116
-+#define BNEP_SVC_GN 0x1117
-+
-+// Packet types
-+#define BNEP_GENERAL 0x00
-+#define BNEP_CONTROL 0x01
-+#define BNEP_COMPRESSED 0x02
-+#define BNEP_COMPRESSED_SRC_ONLY 0x03
-+#define BNEP_COMPRESSED_DST_ONLY 0x04
-+
-+// Control types
-+#define BNEP_CMD_NOT_UNDERSTOOD 0x00
-+#define BNEP_SETUP_CONN_REQ 0x01
-+#define BNEP_SETUP_CONN_RSP 0x02
-+#define BNEP_FILTER_NET_TYPE_SET 0x03
-+#define BNEP_FILTER_NET_TYPE_RSP 0x04
-+#define BNEP_FILTER_MULTI_ADDR_SET 0x05
-+#define BNEP_FILTER_MULTI_ADDR_RSP 0x06
-+
-+// Extension types
-+#define BNEP_EXT_CONTROL 0x00
-+
-+// Response messages
-+#define BNEP_SUCCESS 0x00
-+
-+#define BNEP_CONN_INVALID_DST 0x01
-+#define BNEP_CONN_INVALID_SRC 0x02
-+#define BNEP_CONN_INVALID_SVC 0x03
-+#define BNEP_CONN_NOT_ALLOWED 0x04
-+
-+#define BNEP_FILTER_UNSUPPORTED_REQ 0x01
-+#define BNEP_FILTER_INVALID_RANGE 0x02
-+#define BNEP_FILTER_INVALID_MCADDR 0x02
-+#define BNEP_FILTER_LIMIT_REACHED 0x03
-+#define BNEP_FILTER_DENIED_SECURITY 0x04
-+
-+// L2CAP settings
-+#define BNEP_MTU 1691
-+#define BNEP_PSM 0x0f
-+#define BNEP_FLUSH_TO 0xffff
-+#define BNEP_CONNECT_TO 15
-+#define BNEP_FILTER_TO 15
-+
-+// Headers
-+#define BNEP_TYPE_MASK 0x7f
-+#define BNEP_EXT_HEADER 0x80
-+
-+struct bnep_setup_conn_req {
-+ __u8 type;
-+ __u8 ctrl;
-+ __u8 uuid_size;
-+ __u8 service[0];
-+} __attribute__((packed));
-+
-+struct bnep_set_filter_req {
-+ __u8 type;
-+ __u8 ctrl;
-+ __u16 len;
-+ __u8 list[0];
-+} __attribute__((packed));
-+
-+struct bnep_control_rsp {
-+ __u8 type;
-+ __u8 ctrl;
-+ __u16 resp;
-+} __attribute__((packed));
-+
-+struct bnep_ext_hdr {
-+ __u8 type;
-+ __u8 len;
-+ __u8 data[0];
-+} __attribute__((packed));
-+
-+/* BNEP ioctl defines */
-+#define BNEPCONNADD _IOW('B', 200, int)
-+#define BNEPCONNDEL _IOW('B', 201, int)
-+#define BNEPGETCONNLIST _IOR('B', 210, int)
-+#define BNEPGETCONNINFO _IOR('B', 211, int)
-+
-+struct bnep_connadd_req {
-+ int sock; // Connected socket
-+ __u32 flags;
-+ __u16 role;
-+ char device[16]; // Name of the Ethernet device
-+};
-+
-+struct bnep_conndel_req {
-+ __u32 flags;
-+ __u8 dst[ETH_ALEN];
-+};
-+
-+struct bnep_conninfo {
-+ __u32 flags;
-+ __u16 role;
-+ __u16 state;
-+ __u8 dst[ETH_ALEN];
-+ char device[16];
-+};
-+
-+struct bnep_connlist_req {
-+ __u32 cnum;
-+ struct bnep_conninfo *ci;
-+};
-+
-+struct bnep_proto_filter {
-+ __u16 start;
-+ __u16 end;
-+};
-+
-+int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock);
-+int bnep_del_connection(struct bnep_conndel_req *req);
-+int bnep_get_connlist(struct bnep_connlist_req *req);
-+int bnep_get_conninfo(struct bnep_conninfo *ci);
-+
-+// BNEP sessions
-+struct bnep_session {
-+ struct list_head list;
-+
-+ unsigned int role;
-+ unsigned long state;
-+ unsigned long flags;
-+ atomic_t killed;
-+
-+ struct ethhdr eh;
-+ struct msghdr msg;
-+
-+ struct bnep_proto_filter proto_filter[BNEP_MAX_PROTO_FILTERS];
-+ u64 mc_filter;
-+
-+ struct socket *sock;
-+ struct net_device dev;
-+ struct net_device_stats stats;
-+};
-+
-+int bnep_net_init(struct net_device *dev);
-+int bnep_sock_init(void);
-+int bnep_sock_cleanup(void);
-+
-+static inline int bnep_mc_hash(__u8 *addr)
-+{
-+ return (bnep_crc32(~0, addr, ETH_ALEN) >> 26);
-+}
-+
-+#endif
-diff -urN linux-2.4.18/net/bluetooth/bnep/Config.in linux-2.4.18-mh15/net/bluetooth/bnep/Config.in
---- linux-2.4.18/net/bluetooth/bnep/Config.in 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,11 @@
-+#
-+# Bluetooth BNEP layer configuration
-+#
-+
-+dep_tristate 'BNEP protocol support' CONFIG_BLUEZ_BNEP $CONFIG_BLUEZ_L2CAP
-+
-+if [ "$CONFIG_BLUEZ_BNEP" != "n" ]; then
-+ bool ' Multicast filter support' CONFIG_BLUEZ_BNEP_MC_FILTER
-+ bool ' Protocol filter support' CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+fi
-+
-diff -urN linux-2.4.18/net/bluetooth/bnep/core.c linux-2.4.18-mh15/net/bluetooth/bnep/core.c
---- linux-2.4.18/net/bluetooth/bnep/core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,718 @@
-+/*
-+ BNEP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2001-2002 Inventel Systemes
-+ Written 2001-2002 by
-+ Clément Moreau <clement.moreau@inventel.fr>
-+ David Libault <david.libault@inventel.fr>
-+
-+ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: core.c,v 1.18 2002/07/14 07:09:19 maxk Exp $
-+ */
-+
-+#define __KERNEL_SYSCALLS__
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/signal.h>
-+#include <linux/init.h>
-+#include <linux/wait.h>
-+#include <linux/errno.h>
-+#include <linux/smp_lock.h>
-+#include <linux/net.h>
-+#include <net/sock.h>
-+
-+#include <linux/socket.h>
-+#include <linux/file.h>
-+
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/skbuff.h>
-+
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "bnep.h"
-+
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.2"
-+
-+static LIST_HEAD(bnep_session_list);
-+static DECLARE_RWSEM(bnep_session_sem);
-+
-+static struct bnep_session *__bnep_get_session(u8 *dst)
-+{
-+ struct bnep_session *s;
-+ struct list_head *p;
-+
-+ BT_DBG("");
-+
-+ list_for_each(p, &bnep_session_list) {
-+ s = list_entry(p, struct bnep_session, list);
-+ if (!memcmp(dst, s->eh.h_source, ETH_ALEN))
-+ return s;
-+ }
-+ return NULL;
-+}
-+
-+static void __bnep_link_session(struct bnep_session *s)
-+{
-+ MOD_INC_USE_COUNT;
-+ list_add(&s->list, &bnep_session_list);
-+}
-+
-+static void __bnep_unlink_session(struct bnep_session *s)
-+{
-+ list_del(&s->list);
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static int bnep_send(struct bnep_session *s, void *data, size_t len)
-+{
-+ struct socket *sock = s->sock;
-+ struct iovec iv = { data, len };
-+ s->msg.msg_iov = &iv;
-+ s->msg.msg_iovlen = 1;
-+ return sock->ops->sendmsg(sock, &s->msg, len, NULL);
-+}
-+
-+static int bnep_send_rsp(struct bnep_session *s, u8 ctrl, u16 resp)
-+{
-+ struct bnep_control_rsp rsp;
-+ rsp.type = BNEP_CONTROL;
-+ rsp.ctrl = ctrl;
-+ rsp.resp = htons(resp);
-+ return bnep_send(s, &rsp, sizeof(rsp));
-+}
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+static inline void bnep_set_default_proto_filter(struct bnep_session *s)
-+{
-+ /* (IPv4, ARP) */
-+ s->proto_filter[0].start = htons(0x0800);
-+ s->proto_filter[0].end = htons(0x0806);
-+ /* (RARP, AppleTalk) */
-+ s->proto_filter[1].start = htons(0x8035);
-+ s->proto_filter[1].end = htons(0x80F3);
-+ /* (IPX, IPv6) */
-+ s->proto_filter[2].start = htons(0x8137);
-+ s->proto_filter[2].end = htons(0x86DD);
-+}
-+#endif
-+
-+static int bnep_ctrl_set_netfilter(struct bnep_session *s, u16 *data, int len)
-+{
-+ int n;
-+
-+ if (len < 2)
-+ return -EILSEQ;
-+
-+ n = ntohs(get_unaligned(data));
-+ data++; len -= 2;
-+
-+ if (len < n)
-+ return -EILSEQ;
-+
-+ BT_DBG("filter len %d", n);
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ n /= 4;
-+ if (n <= BNEP_MAX_PROTO_FILTERS) {
-+ struct bnep_proto_filter *f = s->proto_filter;
-+ int i;
-+
-+ for (i = 0; i < n; i++) {
-+ f[i].start = get_unaligned(data++);
-+ f[i].end = get_unaligned(data++);
-+
-+ BT_DBG("proto filter start %d end %d",
-+ f[i].start, f[i].end);
-+ }
-+
-+ if (i < BNEP_MAX_PROTO_FILTERS)
-+ memset(f + i, 0, sizeof(*f));
-+
-+ if (n == 0)
-+ bnep_set_default_proto_filter(s);
-+
-+ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_SUCCESS);
-+ } else {
-+ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_FILTER_LIMIT_REACHED);
-+ }
-+#else
-+ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_FILTER_UNSUPPORTED_REQ);
-+#endif
-+ return 0;
-+}
-+
-+static int bnep_ctrl_set_mcfilter(struct bnep_session *s, u8 *data, int len)
-+{
-+ int n;
-+
-+ if (len < 2)
-+ return -EILSEQ;
-+
-+ n = ntohs(get_unaligned((u16 *) data));
-+ data += 2; len -= 2;
-+
-+ if (len < n)
-+ return -EILSEQ;
-+
-+ BT_DBG("filter len %d", n);
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ n /= (ETH_ALEN * 2);
-+
-+ if (n > 0) {
-+ s->mc_filter = 0;
-+
-+ /* Always send broadcast */
-+ set_bit(bnep_mc_hash(s->dev.broadcast), &s->mc_filter);
-+
-+ /* Add address ranges to the multicast hash */
-+ for (; n > 0; n--) {
-+ u8 a1[6], *a2;
-+
-+ memcpy(a1, data, ETH_ALEN); data += ETH_ALEN;
-+ a2 = data; data += ETH_ALEN;
-+
-+ BT_DBG("mc filter %s -> %s",
-+ batostr((void *) a1), batostr((void *) a2));
-+
-+ #define INCA(a) { int i = 5; while (i >=0 && ++a[i--] == 0); }
-+
-+ /* Iterate from a1 to a2 */
-+ set_bit(bnep_mc_hash(a1), &s->mc_filter);
-+ while (memcmp(a1, a2, 6) < 0 && s->mc_filter != ~0LL) {
-+ INCA(a1);
-+ set_bit(bnep_mc_hash(a1), &s->mc_filter);
-+ }
-+ }
-+ }
-+
-+ BT_DBG("mc filter hash 0x%llx", s->mc_filter);
-+
-+ bnep_send_rsp(s, BNEP_FILTER_MULTI_ADDR_RSP, BNEP_SUCCESS);
-+#else
-+ bnep_send_rsp(s, BNEP_FILTER_MULTI_ADDR_RSP, BNEP_FILTER_UNSUPPORTED_REQ);
-+#endif
-+ return 0;
-+}
-+
-+static int bnep_rx_control(struct bnep_session *s, void *data, int len)
-+{
-+ u8 cmd = *(u8 *)data;
-+ int err = 0;
-+
-+ data++; len--;
-+
-+ switch (cmd) {
-+ case BNEP_CMD_NOT_UNDERSTOOD:
-+ case BNEP_SETUP_CONN_REQ:
-+ case BNEP_SETUP_CONN_RSP:
-+ case BNEP_FILTER_NET_TYPE_RSP:
-+ case BNEP_FILTER_MULTI_ADDR_RSP:
-+ /* Ignore these for now */
-+ break;
-+
-+ case BNEP_FILTER_NET_TYPE_SET:
-+ err = bnep_ctrl_set_netfilter(s, data, len);
-+ break;
-+
-+ case BNEP_FILTER_MULTI_ADDR_SET:
-+ err = bnep_ctrl_set_mcfilter(s, data, len);
-+ break;
-+
-+ default: {
-+ u8 pkt[3];
-+ pkt[0] = BNEP_CONTROL;
-+ pkt[1] = BNEP_CMD_NOT_UNDERSTOOD;
-+ pkt[2] = cmd;
-+ bnep_send(s, pkt, sizeof(pkt));
-+ }
-+ break;
-+ }
-+
-+ return err;
-+}
-+
-+static int bnep_rx_extension(struct bnep_session *s, struct sk_buff *skb)
-+{
-+ struct bnep_ext_hdr *h;
-+ int err = 0;
-+
-+ do {
-+ h = (void *) skb->data;
-+ if (!skb_pull(skb, sizeof(*h))) {
-+ err = -EILSEQ;
-+ break;
-+ }
-+
-+ BT_DBG("type 0x%x len %d", h->type, h->len);
-+
-+ switch (h->type & BNEP_TYPE_MASK) {
-+ case BNEP_EXT_CONTROL:
-+ bnep_rx_control(s, skb->data, skb->len);
-+ break;
-+
-+ default:
-+ /* Unknown extension, skip it. */
-+ break;
-+ }
-+
-+ if (!skb_pull(skb, h->len)) {
-+ err = -EILSEQ;
-+ break;
-+ }
-+ } while (!err && (h->type & BNEP_EXT_HEADER));
-+
-+ return err;
-+}
-+
-+static u8 __bnep_rx_hlen[] = {
-+ ETH_HLEN, /* BNEP_GENERAL */
-+ 0, /* BNEP_CONTROL */
-+ 2, /* BNEP_COMPRESSED */
-+ ETH_ALEN + 2, /* BNEP_COMPRESSED_SRC_ONLY */
-+ ETH_ALEN + 2 /* BNEP_COMPRESSED_DST_ONLY */
-+};
-+#define BNEP_RX_TYPES (sizeof(__bnep_rx_hlen) - 1)
-+
-+static inline int bnep_rx_frame(struct bnep_session *s, struct sk_buff *skb)
-+{
-+ struct net_device *dev = &s->dev;
-+ struct sk_buff *nskb;
-+ u8 type;
-+
-+ dev->last_rx = jiffies;
-+ s->stats.rx_bytes += skb->len;
-+
-+ type = *(u8 *) skb->data; skb_pull(skb, 1);
-+
-+ if ((type & BNEP_TYPE_MASK) > BNEP_RX_TYPES)
-+ goto badframe;
-+
-+ if ((type & BNEP_TYPE_MASK) == BNEP_CONTROL) {
-+ bnep_rx_control(s, skb->data, skb->len);
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+
-+ skb->mac.raw = skb->data;
-+
-+ /* Verify and pull out header */
-+ if (!skb_pull(skb, __bnep_rx_hlen[type & BNEP_TYPE_MASK]))
-+ goto badframe;
-+
-+ s->eh.h_proto = get_unaligned((u16 *) (skb->data - 2));
-+
-+ if (type & BNEP_EXT_HEADER) {
-+ if (bnep_rx_extension(s, skb) < 0)
-+ goto badframe;
-+ }
-+
-+ /* Strip 802.1p header */
-+ if (ntohs(s->eh.h_proto) == 0x8100) {
-+ if (!skb_pull(skb, 4))
-+ goto badframe;
-+ s->eh.h_proto = get_unaligned((u16 *) (skb->data - 2));
-+ }
-+
-+ /* We have to alloc new skb and copy data here :(. Because original skb
-+ * may not be modified and because of the alignment requirements. */
-+ nskb = alloc_skb(2 + ETH_HLEN + skb->len, GFP_KERNEL);
-+ if (!nskb) {
-+ s->stats.rx_dropped++;
-+ kfree_skb(skb);
-+ return -ENOMEM;
-+ }
-+ skb_reserve(nskb, 2);
-+
-+ /* Decompress header and construct ether frame */
-+ switch (type & BNEP_TYPE_MASK) {
-+ case BNEP_COMPRESSED:
-+ memcpy(__skb_put(nskb, ETH_HLEN), &s->eh, ETH_HLEN);
-+ break;
-+
-+ case BNEP_COMPRESSED_SRC_ONLY:
-+ memcpy(__skb_put(nskb, ETH_ALEN), s->eh.h_dest, ETH_ALEN);
-+ memcpy(__skb_put(nskb, ETH_ALEN), skb->mac.raw, ETH_ALEN);
-+ put_unaligned(s->eh.h_proto, (u16 *) __skb_put(nskb, 2));
-+ break;
-+
-+ case BNEP_COMPRESSED_DST_ONLY:
-+ memcpy(__skb_put(nskb, ETH_ALEN), skb->mac.raw, ETH_ALEN);
-+ memcpy(__skb_put(nskb, ETH_ALEN + 2), s->eh.h_source, ETH_ALEN + 2);
-+ break;
-+
-+ case BNEP_GENERAL:
-+ memcpy(__skb_put(nskb, ETH_ALEN * 2), skb->mac.raw, ETH_ALEN * 2);
-+ put_unaligned(s->eh.h_proto, (u16 *) __skb_put(nskb, 2));
-+ break;
-+ }
-+
-+ memcpy(__skb_put(nskb, skb->len), skb->data, skb->len);
-+ kfree_skb(skb);
-+
-+ s->stats.rx_packets++;
-+ nskb->dev = dev;
-+ nskb->ip_summed = CHECKSUM_UNNECESSARY;
-+ nskb->protocol = eth_type_trans(nskb, dev);
-+ netif_rx_ni(nskb);
-+ return 0;
-+
-+badframe:
-+ s->stats.rx_errors++;
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static u8 __bnep_tx_types[] = {
-+ BNEP_GENERAL,
-+ BNEP_COMPRESSED_SRC_ONLY,
-+ BNEP_COMPRESSED_DST_ONLY,
-+ BNEP_COMPRESSED
-+};
-+
-+static inline int bnep_tx_frame(struct bnep_session *s, struct sk_buff *skb)
-+{
-+ struct ethhdr *eh = (void *) skb->data;
-+ struct socket *sock = s->sock;
-+ struct iovec iv[3];
-+ int len = 0, il = 0;
-+ u8 type = 0;
-+
-+ BT_DBG("skb %p dev %p type %d", skb, skb->dev, skb->pkt_type);
-+
-+ if (!skb->dev) {
-+ /* Control frame sent by us */
-+ goto send;
-+ }
-+
-+ iv[il++] = (struct iovec) { &type, 1 };
-+ len++;
-+
-+ if (!memcmp(eh->h_dest, s->eh.h_source, ETH_ALEN))
-+ type |= 0x01;
-+
-+ if (!memcmp(eh->h_source, s->eh.h_dest, ETH_ALEN))
-+ type |= 0x02;
-+
-+ if (type)
-+ skb_pull(skb, ETH_ALEN * 2);
-+
-+ type = __bnep_tx_types[type];
-+ switch (type) {
-+ case BNEP_COMPRESSED_SRC_ONLY:
-+ iv[il++] = (struct iovec) { eh->h_source, ETH_ALEN };
-+ len += ETH_ALEN;
-+ break;
-+
-+ case BNEP_COMPRESSED_DST_ONLY:
-+ iv[il++] = (struct iovec) { eh->h_dest, ETH_ALEN };
-+ len += ETH_ALEN;
-+ break;
-+ }
-+
-+send:
-+ iv[il++] = (struct iovec) { skb->data, skb->len };
-+ len += skb->len;
-+
-+ /* FIXME: linearize skb */
-+
-+ s->msg.msg_iov = iv;
-+ s->msg.msg_iovlen = il;
-+ len = sock->ops->sendmsg(sock, &s->msg, len, NULL);
-+ kfree_skb(skb);
-+
-+ if (len > 0) {
-+ s->stats.tx_bytes += len;
-+ s->stats.tx_packets++;
-+ return 0;
-+ }
-+
-+ return len;
-+}
-+
-+static int bnep_session(void *arg)
-+{
-+ struct bnep_session *s = arg;
-+ struct net_device *dev = &s->dev;
-+ struct sock *sk = s->sock->sk;
-+ struct sk_buff *skb;
-+ wait_queue_t wait;
-+
-+ BT_DBG("");
-+
-+ daemonize(); reparent_to_init();
-+
-+ sprintf(current->comm, "kbnepd %s", dev->name);
-+
-+ sigfillset(&current->blocked);
-+ flush_signals(current);
-+
-+ current->nice = -15;
-+
-+ set_fs(KERNEL_DS);
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(sk->sleep, &wait);
-+ while (!atomic_read(&s->killed)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ // RX
-+ while ((skb = skb_dequeue(&sk->receive_queue))) {
-+ skb_orphan(skb);
-+ bnep_rx_frame(s, skb);
-+ }
-+
-+ if (sk->state != BT_CONNECTED)
-+ break;
-+
-+ // TX
-+ while ((skb = skb_dequeue(&sk->write_queue)))
-+ if (bnep_tx_frame(s, skb))
-+ break;
-+ netif_wake_queue(dev);
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ /* Cleanup session */
-+ down_write(&bnep_session_sem);
-+
-+ /* Delete network device */
-+ unregister_netdev(dev);
-+
-+ /* Release the socket */
-+ fput(s->sock->file);
-+
-+ __bnep_unlink_session(s);
-+
-+ up_write(&bnep_session_sem);
-+ kfree(s);
-+ return 0;
-+}
-+
-+int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock)
-+{
-+ struct net_device *dev;
-+ struct bnep_session *s, *ss;
-+ u8 dst[ETH_ALEN], src[ETH_ALEN];
-+ int err;
-+
-+ BT_DBG("");
-+
-+ baswap((void *) dst, &bluez_pi(sock->sk)->dst);
-+ baswap((void *) src, &bluez_pi(sock->sk)->src);
-+
-+ s = kmalloc(sizeof(struct bnep_session), GFP_KERNEL);
-+ if (!s)
-+ return -ENOMEM;
-+ memset(s, 0, sizeof(struct bnep_session));
-+
-+ down_write(&bnep_session_sem);
-+
-+ ss = __bnep_get_session(dst);
-+ if (ss && ss->state == BT_CONNECTED) {
-+ err = -EEXIST;
-+ goto failed;
-+ }
-+
-+ dev = &s->dev;
-+
-+ if (*req->device)
-+ strcpy(dev->name, req->device);
-+ else
-+ strcpy(dev->name, "bnep%d");
-+
-+ memset(dev->broadcast, 0xff, ETH_ALEN);
-+
-+ /* This is rx header therefor addresses are swaped.
-+ * ie eh.h_dest is our local address. */
-+ memcpy(s->eh.h_dest, &src, ETH_ALEN);
-+ memcpy(s->eh.h_source, &dst, ETH_ALEN);
-+
-+ s->sock = sock;
-+ s->role = req->role;
-+ s->state = BT_CONNECTED;
-+
-+ s->msg.msg_flags = MSG_NOSIGNAL;
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ /* Set default mc filter */
-+ set_bit(bnep_mc_hash(dev->broadcast), &s->mc_filter);
-+#endif
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ /* Set default protocol filter */
-+ bnep_set_default_proto_filter(s);
-+#endif
-+
-+ dev->init = bnep_net_init;
-+ dev->priv = s;
-+ err = register_netdev(dev);
-+ if (err) {
-+ goto failed;
-+ }
-+
-+ __bnep_link_session(s);
-+
-+ err = kernel_thread(bnep_session, s, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+ if (err < 0) {
-+ /* Session thread start failed, gotta cleanup. */
-+ unregister_netdev(dev);
-+ __bnep_unlink_session(s);
-+ goto failed;
-+ }
-+
-+ up_write(&bnep_session_sem);
-+ strcpy(req->device, dev->name);
-+ return 0;
-+
-+failed:
-+ up_write(&bnep_session_sem);
-+ kfree(s);
-+ return err;
-+}
-+
-+int bnep_del_connection(struct bnep_conndel_req *req)
-+{
-+ struct bnep_session *s;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&bnep_session_sem);
-+
-+ s = __bnep_get_session(req->dst);
-+ if (s) {
-+ /* Wakeup user-space which is polling for socket errors.
-+ * This is temporary hack untill we have shutdown in L2CAP */
-+ s->sock->sk->err = EUNATCH;
-+
-+ /* Kill session thread */
-+ atomic_inc(&s->killed);
-+ wake_up_interruptible(s->sock->sk->sleep);
-+ } else
-+ err = -ENOENT;
-+
-+ up_read(&bnep_session_sem);
-+ return err;
-+}
-+
-+static void __bnep_copy_ci(struct bnep_conninfo *ci, struct bnep_session *s)
-+{
-+ memcpy(ci->dst, s->eh.h_source, ETH_ALEN);
-+ strcpy(ci->device, s->dev.name);
-+ ci->flags = s->flags;
-+ ci->state = s->state;
-+ ci->role = s->role;
-+}
-+
-+int bnep_get_connlist(struct bnep_connlist_req *req)
-+{
-+ struct list_head *p;
-+ int err = 0, n = 0;
-+
-+ down_read(&bnep_session_sem);
-+
-+ list_for_each(p, &bnep_session_list) {
-+ struct bnep_session *s;
-+ struct bnep_conninfo ci;
-+
-+ s = list_entry(p, struct bnep_session, list);
-+
-+ __bnep_copy_ci(&ci, s);
-+
-+ if (copy_to_user(req->ci, &ci, sizeof(ci))) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (++n >= req->cnum)
-+ break;
-+
-+ req->ci++;
-+ }
-+ req->cnum = n;
-+
-+ up_read(&bnep_session_sem);
-+ return err;
-+}
-+
-+int bnep_get_conninfo(struct bnep_conninfo *ci)
-+{
-+ struct bnep_session *s;
-+ int err = 0;
-+
-+ down_read(&bnep_session_sem);
-+
-+ s = __bnep_get_session(ci->dst);
-+ if (s)
-+ __bnep_copy_ci(ci, s);
-+ else
-+ err = -ENOENT;
-+
-+ up_read(&bnep_session_sem);
-+ return err;
-+}
-+
-+static int __init bnep_init_module(void)
-+{
-+ l2cap_load();
-+
-+ bnep_crc32_init();
-+ bnep_sock_init();
-+
-+ BT_INFO("BlueZ BNEP ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2001,2002 Inventel Systemes");
-+ BT_INFO("Written 2001,2002 by Clement Moreau <clement.moreau@inventel.fr>");
-+ BT_INFO("Written 2001,2002 by David Libault <david.libault@inventel.fr>");
-+ BT_INFO("Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>");
-+
-+ return 0;
-+}
-+
-+static void __exit bnep_cleanup_module(void)
-+{
-+ bnep_sock_cleanup();
-+ bnep_crc32_cleanup();
-+}
-+
-+module_init(bnep_init_module);
-+module_exit(bnep_cleanup_module);
-+
-+MODULE_DESCRIPTION("BlueZ BNEP ver " VERSION);
-+MODULE_AUTHOR("David Libault <david.libault@inventel.fr>, Maxim Krasnyanskiy <maxk@qualcomm.com>");
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/bnep/crc32.c linux-2.4.18-mh15/net/bluetooth/bnep/crc32.c
---- linux-2.4.18/net/bluetooth/bnep/crc32.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/crc32.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,59 @@
-+/*
-+ * Based on linux-2.5/lib/crc32 by Matt Domsch <Matt_Domsch@dell.com>
-+ *
-+ * FIXME: Remove in 2.5
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/slab.h>
-+#include <linux/init.h>
-+#include <asm/atomic.h>
-+
-+#include "crc32.h"
-+
-+#define CRCPOLY_BE 0x04c11db7
-+#define CRC_BE_BITS 8
-+
-+static u32 *bnep_crc32_table;
-+
-+/*
-+ * This code is in the public domain; copyright abandoned.
-+ * Liability for non-performance of this code is limited to the amount
-+ * you paid for it. Since it is distributed for free, your refund will
-+ * be very very small. If it breaks, you get to keep both pieces.
-+ */
-+u32 bnep_crc32(u32 crc, unsigned char const *p, size_t len)
-+{
-+ while (len--)
-+ crc = (crc << 8) ^ bnep_crc32_table[(crc >> 24) ^ *p++];
-+
-+ return crc;
-+}
-+
-+int __init bnep_crc32_init(void)
-+{
-+ unsigned i, j;
-+ u32 crc = 0x80000000;
-+
-+ bnep_crc32_table = kmalloc((1 << CRC_BE_BITS) * sizeof(u32), GFP_KERNEL);
-+ if (!bnep_crc32_table)
-+ return -ENOMEM;
-+
-+ bnep_crc32_table[0] = 0;
-+
-+ for (i = 1; i < 1 << CRC_BE_BITS; i <<= 1) {
-+ crc = (crc << 1) ^ ((crc & 0x80000000) ? CRCPOLY_BE : 0);
-+ for (j = 0; j < i; j++)
-+ bnep_crc32_table[i + j] = crc ^ bnep_crc32_table[j];
-+ }
-+ return 0;
-+}
-+
-+void __exit bnep_crc32_cleanup(void)
-+{
-+ if (bnep_crc32_table)
-+ kfree(bnep_crc32_table);
-+ bnep_crc32_table = NULL;
-+}
-diff -urN linux-2.4.18/net/bluetooth/bnep/crc32.h linux-2.4.18-mh15/net/bluetooth/bnep/crc32.h
---- linux-2.4.18/net/bluetooth/bnep/crc32.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/crc32.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,10 @@
-+/*
-+ * crc32.h
-+ * See crc32.c for license and changes
-+ *
-+ * FIXME: Remove in 2.5
-+ */
-+
-+int bnep_crc32_init(void);
-+void bnep_crc32_cleanup(void);
-+u32 bnep_crc32(u32 crc, unsigned char const *p, size_t len);
-diff -urN linux-2.4.18/net/bluetooth/bnep/Makefile linux-2.4.18-mh15/net/bluetooth/bnep/Makefile
---- linux-2.4.18/net/bluetooth/bnep/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,10 @@
-+#
-+# Makefile for the Linux Bluetooth BNEP layer
-+#
-+
-+O_TARGET := bnep.o
-+
-+obj-y := core.o sock.o netdev.o crc32.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.18/net/bluetooth/bnep/netdev.c linux-2.4.18-mh15/net/bluetooth/bnep/netdev.c
---- linux-2.4.18/net/bluetooth/bnep/netdev.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/netdev.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,254 @@
-+/*
-+ BNEP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2001-2002 Inventel Systemes
-+ Written 2001-2002 by
-+ Clément Moreau <clement.moreau@inventel.fr>
-+ David Libault <david.libault@inventel.fr>
-+
-+ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: netdev.c,v 1.7 2002/07/14 05:39:26 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/socket.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/skbuff.h>
-+#include <linux/wait.h>
-+
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "bnep.h"
-+
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+#define BNEP_TX_QUEUE_LEN 20
-+
-+static int bnep_net_open(struct net_device *dev)
-+{
-+ netif_start_queue(dev);
-+ return 0;
-+}
-+
-+static int bnep_net_close(struct net_device *dev)
-+{
-+ netif_stop_queue(dev);
-+ return 0;
-+}
-+
-+static struct net_device_stats *bnep_net_get_stats(struct net_device *dev)
-+{
-+ struct bnep_session *s = dev->priv;
-+ return &s->stats;
-+}
-+
-+static void bnep_net_set_mc_list(struct net_device *dev)
-+{
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ struct bnep_session *s = dev->priv;
-+ struct sock *sk = s->sock->sk;
-+ struct bnep_set_filter_req *r;
-+ struct sk_buff *skb;
-+ int size;
-+
-+ BT_DBG("%s mc_count %d", dev->name, dev->mc_count);
-+
-+ size = sizeof(*r) + (BNEP_MAX_MULTICAST_FILTERS + 1) * ETH_ALEN * 2;
-+ skb = alloc_skb(size, GFP_ATOMIC);
-+ if (!skb) {
-+ BT_ERR("%s Multicast list allocation failed", dev->name);
-+ return;
-+ }
-+
-+ r = (void *) skb->data;
-+ __skb_put(skb, sizeof(*r));
-+
-+ r->type = BNEP_CONTROL;
-+ r->ctrl = BNEP_FILTER_MULTI_ADDR_SET;
-+
-+ if (dev->flags & (IFF_PROMISC | IFF_ALLMULTI)) {
-+ u8 start[ETH_ALEN] = { 0x01 };
-+
-+ /* Request all addresses */
-+ memcpy(__skb_put(skb, ETH_ALEN), start, ETH_ALEN);
-+ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
-+ r->len = htons(ETH_ALEN * 2);
-+ } else {
-+ struct dev_mc_list *dmi = dev->mc_list;
-+ int i, len = skb->len;
-+
-+ if (dev->flags & IFF_BROADCAST) {
-+ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
-+ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
-+ }
-+
-+ /* FIXME: We should group addresses here. */
-+
-+ for (i = 0; i < dev->mc_count && i < BNEP_MAX_MULTICAST_FILTERS; i++) {
-+ memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN);
-+ memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN);
-+ dmi = dmi->next;
-+ }
-+ r->len = htons(skb->len - len);
-+ }
-+
-+ skb_queue_tail(&sk->write_queue, skb);
-+ wake_up_interruptible(sk->sleep);
-+#endif
-+}
-+
-+static int bnep_net_set_mac_addr(struct net_device *dev, void *arg)
-+{
-+ BT_DBG("%s", dev->name);
-+ return 0;
-+}
-+
-+static void bnep_net_timeout(struct net_device *dev)
-+{
-+ BT_DBG("net_timeout");
-+ netif_wake_queue(dev);
-+}
-+
-+static int bnep_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-+{
-+ return -EINVAL;
-+}
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+static inline int bnep_net_mc_filter(struct sk_buff *skb, struct bnep_session *s)
-+{
-+ struct ethhdr *eh = (void *) skb->data;
-+
-+ if ((eh->h_dest[0] & 1) && !test_bit(bnep_mc_hash(eh->h_dest), &s->mc_filter)) {
-+ BT_DBG("BNEP: filtered skb %p, dst %.2x:%.2x:%.2x:%.2x:%.2x:%.2x", skb,
-+ eh->h_dest[0], eh->h_dest[1], eh->h_dest[2],
-+ eh->h_dest[3], eh->h_dest[4], eh->h_dest[5]);
-+ return 1;
-+ }
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+/* Determine ether protocol. Based on eth_type_trans. */
-+static inline u16 bnep_net_eth_proto(struct sk_buff *skb)
-+{
-+ struct ethhdr *eh = (void *) skb->data;
-+
-+ if (ntohs(eh->h_proto) >= 1536)
-+ return eh->h_proto;
-+
-+ if (get_unaligned((u16 *) skb->data) == 0xFFFF)
-+ return htons(ETH_P_802_3);
-+
-+ return htons(ETH_P_802_2);
-+}
-+
-+static inline int bnep_net_proto_filter(struct sk_buff *skb, struct bnep_session *s)
-+{
-+ u16 proto = bnep_net_eth_proto(skb);
-+ struct bnep_proto_filter *f = s->proto_filter;
-+ int i;
-+
-+ for (i = 0; i < BNEP_MAX_PROTO_FILTERS && f[i].end; i++) {
-+ if (proto >= f[i].start && proto <= f[i].end)
-+ return 0;
-+ }
-+
-+ BT_DBG("BNEP: filtered skb %p, proto 0x%.4x", skb, proto);
-+ return 1;
-+}
-+#endif
-+
-+static int bnep_net_xmit(struct sk_buff *skb, struct net_device *dev)
-+{
-+ struct bnep_session *s = dev->priv;
-+ struct sock *sk = s->sock->sk;
-+
-+ BT_DBG("skb %p, dev %p", skb, dev);
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ if (bnep_net_mc_filter(skb, s)) {
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+#endif
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ if (bnep_net_proto_filter(skb, s)) {
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+#endif
-+
-+ /*
-+ * We cannot send L2CAP packets from here as we are potentially in a bh.
-+ * So we have to queue them and wake up session thread which is sleeping
-+ * on the sk->sleep.
-+ */
-+ dev->trans_start = jiffies;
-+ skb_queue_tail(&sk->write_queue, skb);
-+ wake_up_interruptible(sk->sleep);
-+
-+ if (skb_queue_len(&sk->write_queue) >= BNEP_TX_QUEUE_LEN) {
-+ BT_DBG("tx queue is full");
-+
-+ /* Stop queuing.
-+ * Session thread will do netif_wake_queue() */
-+ netif_stop_queue(dev);
-+ }
-+
-+ return 0;
-+}
-+
-+int bnep_net_init(struct net_device *dev)
-+{
-+ struct bnep_session *s = dev->priv;
-+
-+ memcpy(dev->dev_addr, s->eh.h_dest, ETH_ALEN);
-+ dev->addr_len = ETH_ALEN;
-+
-+ ether_setup(dev);
-+
-+ dev->open = bnep_net_open;
-+ dev->stop = bnep_net_close;
-+ dev->hard_start_xmit = bnep_net_xmit;
-+ dev->get_stats = bnep_net_get_stats;
-+ dev->do_ioctl = bnep_net_ioctl;
-+ dev->set_mac_address = bnep_net_set_mac_addr;
-+ dev->set_multicast_list = bnep_net_set_mc_list;
-+
-+ dev->watchdog_timeo = HZ * 2;
-+ dev->tx_timeout = bnep_net_timeout;
-+
-+ return 0;
-+}
-diff -urN linux-2.4.18/net/bluetooth/bnep/sock.c linux-2.4.18-mh15/net/bluetooth/bnep/sock.c
---- linux-2.4.18/net/bluetooth/bnep/sock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/sock.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,210 @@
-+/*
-+ BNEP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2001-2002 Inventel Systemes
-+ Written 2001-2002 by
-+ David Libault <david.libault@inventel.fr>
-+
-+ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: sock.c,v 1.3 2002/07/10 22:59:52 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include "bnep.h"
-+
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+static int bnep_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sock_orphan(sk);
-+ sock_put(sk);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int bnep_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct bnep_connlist_req cl;
-+ struct bnep_connadd_req ca;
-+ struct bnep_conndel_req cd;
-+ struct bnep_conninfo ci;
-+ struct socket *nsock;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
-+ case BNEPCONNADD:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&ca, (void *) arg, sizeof(ca)))
-+ return -EFAULT;
-+
-+ nsock = sockfd_lookup(ca.sock, &err);
-+ if (!nsock)
-+ return err;
-+
-+ if (nsock->sk->state != BT_CONNECTED) {
-+ fput(nsock->file);
-+ return -EBADFD;
-+ }
-+
-+ err = bnep_add_connection(&ca, nsock);
-+ if (!err) {
-+ if (copy_to_user((void *) arg, &ca, sizeof(ca)))
-+ err = -EFAULT;
-+ } else
-+ fput(nsock->file);
-+
-+ return err;
-+
-+ case BNEPCONNDEL:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&cd, (void *) arg, sizeof(cd)))
-+ return -EFAULT;
-+
-+ return bnep_del_connection(&cd);
-+
-+ case BNEPGETCONNLIST:
-+ if (copy_from_user(&cl, (void *) arg, sizeof(cl)))
-+ return -EFAULT;
-+
-+ if (cl.cnum <= 0)
-+ return -EINVAL;
-+
-+ err = bnep_get_connlist(&cl);
-+ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ case BNEPGETCONNINFO:
-+ if (copy_from_user(&ci, (void *) arg, sizeof(ci)))
-+ return -EFAULT;
-+
-+ err = bnep_get_conninfo(&ci);
-+ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static struct proto_ops bnep_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: bnep_sock_release,
-+ ioctl: bnep_sock_ioctl,
-+ bind: sock_no_bind,
-+ getname: sock_no_getname,
-+ sendmsg: sock_no_sendmsg,
-+ recvmsg: sock_no_recvmsg,
-+ poll: sock_no_poll,
-+ listen: sock_no_listen,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sock_no_setsockopt,
-+ getsockopt: sock_no_getsockopt,
-+ connect: sock_no_connect,
-+ socketpair: sock_no_socketpair,
-+ accept: sock_no_accept,
-+ mmap: sock_no_mmap
-+};
-+
-+static int bnep_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ if (sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &bnep_sock_ops;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1)))
-+ return -ENOMEM;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ sock->state = SS_UNCONNECTED;
-+ sock_init_data(sock, sk);
-+
-+ sk->destruct = NULL;
-+ sk->protocol = protocol;
-+
-+ return 0;
-+}
-+
-+static struct net_proto_family bnep_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: bnep_sock_create
-+};
-+
-+int bnep_sock_init(void)
-+{
-+ bluez_sock_register(BTPROTO_BNEP, &bnep_sock_family_ops);
-+ return 0;
-+}
-+
-+int bnep_sock_cleanup(void)
-+{
-+ if (bluez_sock_unregister(BTPROTO_BNEP))
-+ BT_ERR("Can't unregister BNEP socket");
-+ return 0;
-+}
-diff -urN linux-2.4.18/net/bluetooth/cmtp/capi.c linux-2.4.18-mh15/net/bluetooth/cmtp/capi.c
---- linux-2.4.18/net/bluetooth/cmtp/capi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/capi.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,707 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <net/sock.h>
-+
-+#include <linux/capi.h>
-+
-+#include "../drivers/isdn/avmb1/capilli.h"
-+#include "../drivers/isdn/avmb1/capicmd.h"
-+#include "../drivers/isdn/avmb1/capiutil.h"
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define REVISION "1.0"
-+
-+#define CAPI_INTEROPERABILITY 0x20
-+
-+#define CAPI_INTEROPERABILITY_REQ CAPICMD(CAPI_INTEROPERABILITY, CAPI_REQ)
-+#define CAPI_INTEROPERABILITY_CONF CAPICMD(CAPI_INTEROPERABILITY, CAPI_CONF)
-+#define CAPI_INTEROPERABILITY_IND CAPICMD(CAPI_INTEROPERABILITY, CAPI_IND)
-+#define CAPI_INTEROPERABILITY_RESP CAPICMD(CAPI_INTEROPERABILITY, CAPI_RESP)
-+
-+#define CAPI_INTEROPERABILITY_REQ_LEN (CAPI_MSG_BASELEN + 2)
-+#define CAPI_INTEROPERABILITY_CONF_LEN (CAPI_MSG_BASELEN + 4)
-+#define CAPI_INTEROPERABILITY_IND_LEN (CAPI_MSG_BASELEN + 2)
-+#define CAPI_INTEROPERABILITY_RESP_LEN (CAPI_MSG_BASELEN + 2)
-+
-+#define CAPI_FUNCTION_REGISTER 0
-+#define CAPI_FUNCTION_RELEASE 1
-+#define CAPI_FUNCTION_GET_PROFILE 2
-+#define CAPI_FUNCTION_GET_MANUFACTURER 3
-+#define CAPI_FUNCTION_GET_VERSION 4
-+#define CAPI_FUNCTION_GET_SERIAL_NUMBER 5
-+#define CAPI_FUNCTION_MANUFACTURER 6
-+#define CAPI_FUNCTION_LOOPBACK 7
-+
-+static struct capi_driver_interface *di;
-+
-+
-+#define CMTP_MSGNUM 1
-+#define CMTP_APPLID 2
-+#define CMTP_MAPPING 3
-+
-+static struct cmtp_application *cmtp_application_add(struct cmtp_session *session, __u16 appl)
-+{
-+ struct cmtp_application *app = kmalloc(sizeof(*app), GFP_KERNEL);
-+
-+ BT_DBG("session %p application %p appl %d", session, app, appl);
-+
-+ if (!app)
-+ return NULL;
-+
-+ memset(app, 0, sizeof(*app));
-+
-+ app->state = BT_OPEN;
-+ app->appl = appl;
-+
-+ list_add_tail(&app->list, &session->applications);
-+
-+ return app;
-+}
-+
-+static void cmtp_application_del(struct cmtp_session *session, struct cmtp_application *app)
-+{
-+ BT_DBG("session %p application %p", session, app);
-+
-+ if (app) {
-+ list_del(&app->list);
-+ kfree(app);
-+ }
-+}
-+
-+static struct cmtp_application *cmtp_application_get(struct cmtp_session *session, int pattern, __u16 value)
-+{
-+ struct cmtp_application *app;
-+ struct list_head *p, *n;
-+
-+ list_for_each_safe(p, n, &session->applications) {
-+ app = list_entry(p, struct cmtp_application, list);
-+ switch (pattern) {
-+ case CMTP_MSGNUM:
-+ if (app->msgnum == value)
-+ return app;
-+ break;
-+ case CMTP_APPLID:
-+ if (app->appl == value)
-+ return app;
-+ break;
-+ case CMTP_MAPPING:
-+ if (app->mapping == value)
-+ return app;
-+ break;
-+ }
-+ }
-+
-+ return NULL;
-+}
-+
-+static int cmtp_msgnum_get(struct cmtp_session *session)
-+{
-+ session->msgnum++;
-+
-+ if ((session->msgnum & 0xff) > 200)
-+ session->msgnum = CMTP_INITIAL_MSGNUM + 1;
-+
-+ return session->msgnum;
-+}
-+
-+
-+static void cmtp_send_interopmsg(struct cmtp_session *session,
-+ __u8 subcmd, __u16 appl, __u16 msgnum,
-+ __u16 function, unsigned char *buf, int len)
-+{
-+ struct sk_buff *skb;
-+ unsigned char *s;
-+
-+ BT_DBG("session %p subcmd 0x%02x appl %d msgnum %d", session, subcmd, appl, msgnum);
-+
-+ if (!(skb = alloc_skb(CAPI_MSG_BASELEN + 6 + len, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for interoperability packet");
-+ return;
-+ }
-+
-+ s = skb_put(skb, CAPI_MSG_BASELEN + 6 + len);
-+
-+ capimsg_setu16(s, 0, CAPI_MSG_BASELEN + 6 + len);
-+ capimsg_setu16(s, 2, appl);
-+ capimsg_setu8 (s, 4, CAPI_INTEROPERABILITY);
-+ capimsg_setu8 (s, 5, subcmd);
-+ capimsg_setu16(s, 6, msgnum);
-+
-+ /* Interoperability selector (Bluetooth Device Management) */
-+ capimsg_setu16(s, 8, 0x0001);
-+
-+ capimsg_setu8 (s, 10, 3 + len);
-+ capimsg_setu16(s, 11, function);
-+ capimsg_setu8 (s, 13, len);
-+
-+ if (len > 0)
-+ memcpy(s + 14, buf, len);
-+
-+ cmtp_send_capimsg(session, skb);
-+}
-+
-+static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+ struct cmtp_application *application;
-+ __u16 appl, msgnum, func, info;
-+ __u32 controller;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ switch (CAPIMSG_SUBCOMMAND(skb->data)) {
-+ case CAPI_CONF:
-+ func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 5);
-+ info = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 8);
-+
-+ switch (func) {
-+ case CAPI_FUNCTION_REGISTER:
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MSGNUM, msgnum);
-+ if (application) {
-+ application->state = BT_CONNECTED;
-+ application->msgnum = 0;
-+ application->mapping = CAPIMSG_APPID(skb->data);
-+ wake_up_interruptible(&session->wait);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_RELEASE:
-+ appl = CAPIMSG_APPID(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MAPPING, appl);
-+ if (application) {
-+ application->state = BT_CLOSED;
-+ application->msgnum = 0;
-+ wake_up_interruptible(&session->wait);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_PROFILE:
-+ controller = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 11);
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+
-+ if (!info && (msgnum == CMTP_INITIAL_MSGNUM)) {
-+ session->ncontroller = controller;
-+ wake_up_interruptible(&session->wait);
-+ break;
-+ }
-+
-+ if (!info && ctrl) {
-+ memcpy(&ctrl->profile,
-+ skb->data + CAPI_MSG_BASELEN + 11,
-+ sizeof(capi_profile));
-+ session->state = BT_CONNECTED;
-+ ctrl->ready(ctrl);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_MANUFACTURER:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 10);
-+
-+ if (!info && ctrl) {
-+ strncpy(ctrl->manu,
-+ skb->data + CAPI_MSG_BASELEN + 15,
-+ skb->data[CAPI_MSG_BASELEN + 14]);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_VERSION:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12);
-+
-+ if (!info && ctrl) {
-+ ctrl->version.majorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 16);
-+ ctrl->version.minorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 20);
-+ ctrl->version.majormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 24);
-+ ctrl->version.minormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 28);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_SERIAL_NUMBER:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12);
-+
-+ if (!info && ctrl) {
-+ memset(ctrl->serial, 0, CAPI_SERIAL_LEN);
-+ strncpy(ctrl->serial,
-+ skb->data + CAPI_MSG_BASELEN + 17,
-+ skb->data[CAPI_MSG_BASELEN + 16]);
-+ }
-+
-+ break;
-+ }
-+
-+ break;
-+
-+ case CAPI_IND:
-+ func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 3);
-+
-+ if (func == CAPI_FUNCTION_LOOPBACK) {
-+ appl = CAPIMSG_APPID(skb->data);
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+ cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func,
-+ skb->data + CAPI_MSG_BASELEN + 6,
-+ skb->data[CAPI_MSG_BASELEN + 5]);
-+ }
-+
-+ break;
-+ }
-+
-+ kfree_skb(skb);
-+}
-+
-+void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+ struct cmtp_application *application;
-+ __u16 cmd, appl, info;
-+ __u32 ncci, contr;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ if (CAPIMSG_COMMAND(skb->data) == CAPI_INTEROPERABILITY) {
-+ cmtp_recv_interopmsg(session, skb);
-+ return;
-+ }
-+
-+ if (session->flags & (1 << CMTP_LOOPBACK)) {
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ cmd = CAPICMD(CAPIMSG_COMMAND(skb->data), CAPIMSG_SUBCOMMAND(skb->data));
-+ appl = CAPIMSG_APPID(skb->data);
-+ contr = CAPIMSG_CONTROL(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MAPPING, appl);
-+ if (application) {
-+ appl = application->appl;
-+ CAPIMSG_SETAPPID(skb->data, appl);
-+ } else {
-+ BT_ERR("Can't find application with id %d", appl);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ if ((contr & 0x7f) == 0x01) {
-+ contr = (contr & 0xffffff80) | session->num;
-+ CAPIMSG_SETCONTROL(skb->data, contr);
-+ }
-+
-+ if (!ctrl) {
-+ BT_ERR("Can't find controller %d for message", session->num);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ switch (cmd) {
-+ case CAPI_CONNECT_B3_CONF:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+ info = CAPIMSG_U16(skb->data, 12);
-+
-+ BT_DBG("CONNECT_B3_CONF ncci 0x%02x info 0x%02x", ncci, info);
-+
-+ if (info == 0)
-+ ctrl->new_ncci(ctrl, appl, ncci, 8);
-+
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+
-+ case CAPI_CONNECT_B3_IND:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+
-+ BT_DBG("CONNECT_B3_IND ncci 0x%02x", ncci);
-+
-+ ctrl->new_ncci(ctrl, appl, ncci, 8);
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+
-+ case CAPI_DISCONNECT_B3_IND:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+
-+ BT_DBG("DISCONNECT_B3_IND ncci 0x%02x", ncci);
-+
-+ if (ncci == 0xffffffff)
-+ BT_ERR("DISCONNECT_B3_IND with ncci 0xffffffff");
-+
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ ctrl->free_ncci(ctrl, appl, ncci);
-+ break;
-+
-+ default:
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+ }
-+}
-+
-+void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct cmtp_scb *scb = (void *) skb->cb;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ scb->id = -1;
-+ scb->data = (CAPIMSG_COMMAND(skb->data) == CAPI_DATA_B3);
-+
-+ skb_queue_tail(&session->transmit, skb);
-+
-+ cmtp_schedule(session);
-+}
-+
-+
-+static int cmtp_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
-+{
-+ BT_DBG("ctrl %p data %p", ctrl, data);
-+
-+ return -EIO;
-+}
-+
-+static void cmtp_reset_ctr(struct capi_ctr *ctrl)
-+{
-+ BT_DBG("ctrl %p", ctrl);
-+
-+ ctrl->reseted(ctrl);
-+}
-+
-+static void cmtp_remove_ctr(struct capi_ctr *ctrl)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+
-+ BT_DBG("ctrl %p", ctrl);
-+
-+ ctrl->suspend_output(ctrl);
-+
-+ atomic_inc(&session->terminate);
-+ cmtp_schedule(session);
-+}
-+
-+static void cmtp_register_appl(struct capi_ctr *ctrl, __u16 appl, capi_register_params *rp)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+ unsigned char buf[8];
-+ int err = 0, nconn, want = rp->level3cnt;
-+
-+ BT_DBG("ctrl %p appl %d level3cnt %d datablkcnt %d datablklen %d",
-+ ctrl, appl, rp->level3cnt, rp->datablkcnt, rp->datablklen);
-+
-+ application = cmtp_application_add(session, appl);
-+ if (!application) {
-+ BT_ERR("Can't allocate memory for new application");
-+ ctrl->appl_released(ctrl, appl);
-+ return;
-+ }
-+
-+ if (want < 0)
-+ nconn = ctrl->profile.nbchannel * -want;
-+ else
-+ nconn = want;
-+
-+ if (nconn == 0)
-+ nconn = ctrl->profile.nbchannel;
-+
-+ capimsg_setu16(buf, 0, nconn);
-+ capimsg_setu16(buf, 2, rp->datablkcnt);
-+ capimsg_setu16(buf, 4, rp->datablklen);
-+
-+ application->state = BT_CONFIG;
-+ application->msgnum = cmtp_msgnum_get(session);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0x0000, application->msgnum,
-+ CAPI_FUNCTION_REGISTER, buf, 6);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (1) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ if (application->state == BT_CLOSED) {
-+ err = -application->err;
-+ break;
-+ }
-+
-+ if (application->state == BT_CONNECTED)
-+ break;
-+
-+ if (signal_pending(current)) {
-+ err = -EINTR;
-+ break;
-+ }
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ if (err) {
-+ ctrl->appl_released(ctrl, appl);
-+ cmtp_application_del(session, application);
-+ return;
-+ }
-+
-+ ctrl->appl_registered(ctrl, appl);
-+}
-+
-+static void cmtp_release_appl(struct capi_ctr *ctrl, __u16 appl)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+
-+ BT_DBG("ctrl %p appl %d", ctrl, appl);
-+
-+ application = cmtp_application_get(session, CMTP_APPLID, appl);
-+ if (!application) {
-+ BT_ERR("Can't find application");
-+ return;
-+ }
-+
-+ application->msgnum = cmtp_msgnum_get(session);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, application->mapping, application->msgnum,
-+ CAPI_FUNCTION_RELEASE, NULL, 0);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (timeo) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (application->state == BT_CLOSED)
-+ break;
-+
-+ if (signal_pending(current))
-+ break;
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ cmtp_application_del(session, application);
-+ ctrl->appl_released(ctrl, appl);
-+}
-+
-+static void cmtp_send_message(struct capi_ctr *ctrl, struct sk_buff *skb)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ __u16 appl;
-+ __u32 contr;
-+
-+ BT_DBG("ctrl %p skb %p", ctrl, skb);
-+
-+ appl = CAPIMSG_APPID(skb->data);
-+ contr = CAPIMSG_CONTROL(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_APPLID, appl);
-+ if ((!application) || (application->state != BT_CONNECTED)) {
-+ BT_ERR("Can't find application with id %d", appl);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ CAPIMSG_SETAPPID(skb->data, application->mapping);
-+
-+ if ((contr & 0x7f) == session->num) {
-+ contr = (contr & 0xffffff80) | 0x01;
-+ CAPIMSG_SETCONTROL(skb->data, contr);
-+ }
-+
-+ cmtp_send_capimsg(session, skb);
-+}
-+
-+static char *cmtp_procinfo(struct capi_ctr *ctrl)
-+{
-+ return "CAPI Message Transport Protocol";
-+}
-+
-+static int cmtp_ctr_read_proc(char *page, char **start, off_t off, int count, int *eof, struct capi_ctr *ctrl)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *app;
-+ struct list_head *p, *n;
-+ int len = 0;
-+
-+ len += sprintf(page + len, "%s (Revision %s)\n\n", cmtp_procinfo(ctrl), REVISION);
-+ len += sprintf(page + len, "addr %s\n", session->name);
-+ len += sprintf(page + len, "ctrl %d\n", session->num);
-+
-+ list_for_each_safe(p, n, &session->applications) {
-+ app = list_entry(p, struct cmtp_application, list);
-+ len += sprintf(page + len, "appl %d -> %d\n", app->appl, app->mapping);
-+ }
-+
-+ if (off + count >= len)
-+ *eof = 1;
-+
-+ if (len < off)
-+ return 0;
-+
-+ *start = page + off;
-+
-+ return ((count < len - off) ? count : len - off);
-+}
-+
-+static struct capi_driver cmtp_driver = {
-+ name: "cmtp",
-+ revision: REVISION,
-+ load_firmware: cmtp_load_firmware,
-+ reset_ctr: cmtp_reset_ctr,
-+ remove_ctr: cmtp_remove_ctr,
-+ register_appl: cmtp_register_appl,
-+ release_appl: cmtp_release_appl,
-+ send_message: cmtp_send_message,
-+ procinfo: cmtp_procinfo,
-+ ctr_read_proc: cmtp_ctr_read_proc,
-+
-+ driver_read_proc: 0,
-+ add_card: 0,
-+};
-+
-+
-+int cmtp_attach_device(struct cmtp_session *session)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+ unsigned char buf[4];
-+
-+ BT_DBG("session %p", session);
-+
-+ capimsg_setu32(buf, 0, 0);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, CMTP_INITIAL_MSGNUM,
-+ CAPI_FUNCTION_GET_PROFILE, buf, 4);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (timeo) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (session->ncontroller)
-+ break;
-+
-+ if (signal_pending(current))
-+ break;
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ BT_INFO("Found %d CAPI controller(s) on device %s", session->ncontroller, session->name);
-+
-+ if (!timeo)
-+ return -ETIMEDOUT;
-+
-+ if (!session->ncontroller)
-+ return -ENODEV;
-+
-+
-+ if (session->ncontroller > 1)
-+ BT_INFO("Setting up only CAPI controller 1");
-+
-+ if (!(session->ctrl = di->attach_ctr(&cmtp_driver, session->name, session))) {
-+ BT_ERR("Can't attach new controller");
-+ return -EBUSY;
-+ }
-+
-+ session->num = session->ctrl->cnr;
-+
-+ BT_DBG("session %p ctrl %p num %d", session, session->ctrl, session->num);
-+
-+ capimsg_setu32(buf, 0, 1);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_MANUFACTURER, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_VERSION, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_SERIAL_NUMBER, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_PROFILE, buf, 4);
-+
-+ return 0;
-+}
-+
-+void cmtp_detach_device(struct cmtp_session *session)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+
-+ BT_DBG("session %p ctrl %p", session, ctrl);
-+
-+ if (!ctrl)
-+ return;
-+
-+ ctrl->reseted(ctrl);
-+
-+ di->detach_ctr(ctrl);
-+}
-+
-+int cmtp_init_capi(void)
-+{
-+ if (!(di = attach_capi_driver(&cmtp_driver))) {
-+ BT_ERR("Can't attach CAPI driver");
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+void cmtp_cleanup_capi(void)
-+{
-+ detach_capi_driver(&cmtp_driver);
-+}
-diff -urN linux-2.4.18/net/bluetooth/cmtp/cmtp.h linux-2.4.18-mh15/net/bluetooth/cmtp/cmtp.h
---- linux-2.4.18/net/bluetooth/cmtp/cmtp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/cmtp.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,138 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#ifndef __CMTP_H
-+#define __CMTP_H
-+
-+#include <linux/types.h>
-+#include <net/bluetooth/bluetooth.h>
-+
-+#define BTNAMSIZ 18
-+
-+/* CMTP ioctl defines */
-+#define CMTPCONNADD _IOW('C', 200, int)
-+#define CMTPCONNDEL _IOW('C', 201, int)
-+#define CMTPGETCONNLIST _IOR('C', 210, int)
-+#define CMTPGETCONNINFO _IOR('C', 211, int)
-+
-+#define CMTP_LOOPBACK 0
-+
-+struct cmtp_connadd_req {
-+ int sock; // Connected socket
-+ __u32 flags;
-+};
-+
-+struct cmtp_conndel_req {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+};
-+
-+struct cmtp_conninfo {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+ __u16 state;
-+ int num;
-+};
-+
-+struct cmtp_connlist_req {
-+ __u32 cnum;
-+ struct cmtp_conninfo *ci;
-+};
-+
-+int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock);
-+int cmtp_del_connection(struct cmtp_conndel_req *req);
-+int cmtp_get_connlist(struct cmtp_connlist_req *req);
-+int cmtp_get_conninfo(struct cmtp_conninfo *ci);
-+
-+/* CMTP session defines */
-+#define CMTP_INTEROP_TIMEOUT (HZ * 5)
-+#define CMTP_INITIAL_MSGNUM 0xff00
-+
-+struct cmtp_session {
-+ struct list_head list;
-+
-+ struct socket *sock;
-+
-+ bdaddr_t bdaddr;
-+
-+ unsigned long state;
-+ unsigned long flags;
-+
-+ uint mtu;
-+
-+ char name[BTNAMSIZ];
-+
-+ atomic_t terminate;
-+
-+ wait_queue_head_t wait;
-+
-+ int ncontroller;
-+ int num;
-+ struct capi_ctr *ctrl;
-+
-+ struct list_head applications;
-+
-+ unsigned long blockids;
-+ int msgnum;
-+
-+ struct sk_buff_head transmit;
-+
-+ struct sk_buff *reassembly[16];
-+};
-+
-+struct cmtp_application {
-+ struct list_head list;
-+
-+ unsigned long state;
-+ int err;
-+
-+ __u16 appl;
-+ __u16 mapping;
-+
-+ __u16 msgnum;
-+};
-+
-+struct cmtp_scb {
-+ int id;
-+ int data;
-+};
-+
-+int cmtp_attach_device(struct cmtp_session *session);
-+void cmtp_detach_device(struct cmtp_session *session);
-+
-+void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb);
-+void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb);
-+
-+static inline void cmtp_schedule(struct cmtp_session *session)
-+{
-+ struct sock *sk = session->sock->sk;
-+
-+ wake_up_interruptible(sk->sleep);
-+}
-+
-+/* CMTP init defines */
-+int cmtp_init_capi(void);
-+int cmtp_init_sockets(void);
-+void cmtp_cleanup_capi(void);
-+void cmtp_cleanup_sockets(void);
-+
-+#endif /* __CMTP_H */
-diff -urN linux-2.4.18/net/bluetooth/cmtp/Config.in linux-2.4.18-mh15/net/bluetooth/cmtp/Config.in
---- linux-2.4.18/net/bluetooth/cmtp/Config.in 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,7 @@
-+#
-+# Bluetooth CMTP layer configuration
-+#
-+
-+if [ "$CONFIG_ISDN" = "y" -o "$CONFIG_ISDN" = "m" ]; then
-+ dep_tristate 'CMTP protocol support' CONFIG_BLUEZ_CMTP $CONFIG_ISDN_CAPI $CONFIG_BLUEZ_L2CAP
-+fi
-diff -urN linux-2.4.18/net/bluetooth/cmtp/core.c linux-2.4.18-mh15/net/bluetooth/cmtp/core.c
---- linux-2.4.18/net/bluetooth/cmtp/core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,515 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <linux/init.h>
-+#include <net/sock.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.0"
-+
-+static DECLARE_RWSEM(cmtp_session_sem);
-+static LIST_HEAD(cmtp_session_list);
-+
-+static struct cmtp_session *__cmtp_get_session(bdaddr_t *bdaddr)
-+{
-+ struct cmtp_session *session;
-+ struct list_head *p;
-+
-+ BT_DBG("");
-+
-+ list_for_each(p, &cmtp_session_list) {
-+ session = list_entry(p, struct cmtp_session, list);
-+ if (!bacmp(bdaddr, &session->bdaddr))
-+ return session;
-+ }
-+ return NULL;
-+}
-+
-+static void __cmtp_link_session(struct cmtp_session *session)
-+{
-+ MOD_INC_USE_COUNT;
-+ list_add(&session->list, &cmtp_session_list);
-+}
-+
-+static void __cmtp_unlink_session(struct cmtp_session *session)
-+{
-+ list_del(&session->list);
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci)
-+{
-+ bacpy(&ci->bdaddr, &session->bdaddr);
-+
-+ ci->flags = session->flags;
-+ ci->state = session->state;
-+
-+ ci->num = session->num;
-+}
-+
-+
-+static inline int cmtp_alloc_block_id(struct cmtp_session *session)
-+{
-+ int i, id = -1;
-+
-+ for (i = 0; i < 16; i++)
-+ if (!test_and_set_bit(i, &session->blockids)) {
-+ id = i;
-+ break;
-+ }
-+
-+ return id;
-+}
-+
-+static inline void cmtp_free_block_id(struct cmtp_session *session, int id)
-+{
-+ clear_bit(id, &session->blockids);
-+}
-+
-+static inline void cmtp_add_msgpart(struct cmtp_session *session, int id, const unsigned char *buf, int count)
-+{
-+ struct sk_buff *skb = session->reassembly[id], *nskb;
-+ int size;
-+
-+ BT_DBG("session %p buf %p count %d", session, buf, count);
-+
-+ size = (skb) ? skb->len + count : count;
-+
-+ if (!(nskb = alloc_skb(size, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for CAPI message");
-+ return;
-+ }
-+
-+ if (skb && (skb->len > 0))
-+ memcpy(skb_put(nskb, skb->len), skb->data, skb->len);
-+
-+ memcpy(skb_put(nskb, count), buf, count);
-+
-+ session->reassembly[id] = nskb;
-+
-+ if (skb)
-+ kfree_skb(skb);
-+}
-+
-+static inline int cmtp_recv_frame(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ __u8 hdr, hdrlen, id;
-+ __u16 len;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ while (skb->len > 0) {
-+ hdr = skb->data[0];
-+
-+ switch (hdr & 0xc0) {
-+ case 0x40:
-+ hdrlen = 2;
-+ len = skb->data[1];
-+ break;
-+ case 0x80:
-+ hdrlen = 3;
-+ len = skb->data[1] | (skb->data[2] << 8);
-+ break;
-+ default:
-+ hdrlen = 1;
-+ len = 0;
-+ break;
-+ }
-+
-+ id = (hdr & 0x3c) >> 2;
-+
-+ BT_DBG("hdr 0x%02x hdrlen %d len %d id %d", hdr, hdrlen, len, id);
-+
-+ if (hdrlen + len > skb->len) {
-+ BT_ERR("Wrong size or header information in CMTP frame");
-+ break;
-+ }
-+
-+ if (len == 0) {
-+ skb_pull(skb, hdrlen);
-+ continue;
-+ }
-+
-+ switch (hdr & 0x03) {
-+ case 0x00:
-+ cmtp_add_msgpart(session, id, skb->data + hdrlen, len);
-+ cmtp_recv_capimsg(session, session->reassembly[id]);
-+ session->reassembly[id] = NULL;
-+ break;
-+ case 0x01:
-+ cmtp_add_msgpart(session, id, skb->data + hdrlen, len);
-+ break;
-+ default:
-+ if (session->reassembly[id] != NULL)
-+ kfree_skb(session->reassembly[id]);
-+ session->reassembly[id] = NULL;
-+ break;
-+ }
-+
-+ skb_pull(skb, hdrlen + len);
-+ }
-+
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static int cmtp_send_frame(struct cmtp_session *session, unsigned char *data, int len)
-+{
-+ struct socket *sock = session->sock;
-+ struct iovec iv = { data, len };
-+ struct msghdr msg;
-+ int err;
-+
-+ BT_DBG("session %p data %p len %d", session, data, len);
-+
-+ if (!len)
-+ return 0;
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 1;
-+ msg.msg_iov = &iv;
-+
-+ err = sock->ops->sendmsg(sock, &msg, len, 0);
-+ return err;
-+}
-+
-+static int cmtp_process_transmit(struct cmtp_session *session)
-+{
-+ struct sk_buff *skb, *nskb;
-+ unsigned char *hdr;
-+ unsigned int size, tail;
-+
-+ BT_DBG("session %p", session);
-+
-+ if (!(nskb = alloc_skb(session->mtu, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for new frame");
-+ return -ENOMEM;
-+ }
-+
-+ while ((skb = skb_dequeue(&session->transmit))) {
-+ struct cmtp_scb *scb = (void *) skb->cb;
-+
-+ if ((tail = (session->mtu - nskb->len)) < 5) {
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+ skb_trim(nskb, 0);
-+ tail = session->mtu;
-+ }
-+
-+ size = min_t(uint, ((tail < 258) ? (tail - 2) : (tail - 3)), skb->len);
-+
-+ if ((scb->id < 0) && ((scb->id = cmtp_alloc_block_id(session)) < 0)) {
-+ skb_queue_head(&session->transmit, skb);
-+ break;
-+ }
-+
-+ if (size < 256) {
-+ hdr = skb_put(nskb, 2);
-+ hdr[0] = 0x40
-+ | ((scb->id << 2) & 0x3c)
-+ | ((skb->len == size) ? 0x00 : 0x01);
-+ hdr[1] = size;
-+ } else {
-+ hdr = skb_put(nskb, 3);
-+ hdr[0] = 0x80
-+ | ((scb->id << 2) & 0x3c)
-+ | ((skb->len == size) ? 0x00 : 0x01);
-+ hdr[1] = size & 0xff;
-+ hdr[2] = size >> 8;
-+ }
-+
-+ memcpy(skb_put(nskb, size), skb->data, size);
-+ skb_pull(skb, size);
-+
-+ if (skb->len > 0) {
-+ skb_queue_head(&session->transmit, skb);
-+ } else {
-+ cmtp_free_block_id(session, scb->id);
-+ if (scb->data) {
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+ skb_trim(nskb, 0);
-+ }
-+ kfree_skb(skb);
-+ }
-+ }
-+
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+
-+ kfree_skb(nskb);
-+
-+ return skb_queue_len(&session->transmit);
-+}
-+
-+static int cmtp_session(void *arg)
-+{
-+ struct cmtp_session *session = arg;
-+ struct sock *sk = session->sock->sk;
-+ struct sk_buff *skb;
-+ wait_queue_t wait;
-+
-+ BT_DBG("session %p", session);
-+
-+ daemonize(); reparent_to_init();
-+
-+ sprintf(current->comm, "kcmtpd_ctr_%d", session->num);
-+
-+ sigfillset(&current->blocked);
-+ flush_signals(current);
-+
-+ current->nice = -15;
-+
-+ set_fs(KERNEL_DS);
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(sk->sleep, &wait);
-+ while (!atomic_read(&session->terminate)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (sk->state != BT_CONNECTED)
-+ break;
-+
-+ while ((skb = skb_dequeue(&sk->receive_queue))) {
-+ skb_orphan(skb);
-+ cmtp_recv_frame(session, skb);
-+ }
-+
-+ cmtp_process_transmit(session);
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ down_write(&cmtp_session_sem);
-+
-+ if (!(session->flags & (1 << CMTP_LOOPBACK)))
-+ cmtp_detach_device(session);
-+
-+ fput(session->sock->file);
-+
-+ __cmtp_unlink_session(session);
-+
-+ up_write(&cmtp_session_sem);
-+
-+ kfree(session);
-+ return 0;
-+}
-+
-+int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
-+{
-+ struct cmtp_session *session, *s;
-+ bdaddr_t src, dst;
-+ int i, err;
-+
-+ BT_DBG("");
-+
-+ baswap(&src, &bluez_pi(sock->sk)->src);
-+ baswap(&dst, &bluez_pi(sock->sk)->dst);
-+
-+ session = kmalloc(sizeof(struct cmtp_session), GFP_KERNEL);
-+ if (!session)
-+ return -ENOMEM;
-+ memset(session, 0, sizeof(struct cmtp_session));
-+
-+ down_write(&cmtp_session_sem);
-+
-+ s = __cmtp_get_session(&bluez_pi(sock->sk)->dst);
-+ if (s && s->state == BT_CONNECTED) {
-+ err = -EEXIST;
-+ goto failed;
-+ }
-+
-+ bacpy(&session->bdaddr, &bluez_pi(sock->sk)->dst);
-+
-+ session->mtu = min_t(uint, l2cap_pi(sock->sk)->omtu, l2cap_pi(sock->sk)->imtu);
-+
-+ BT_DBG("mtu %d", session->mtu);
-+
-+ sprintf(session->name, "%s", batostr(&dst));
-+
-+ session->sock = sock;
-+ session->state = BT_CONFIG;
-+
-+ init_waitqueue_head(&session->wait);
-+
-+ session->ctrl = NULL;
-+ session->msgnum = CMTP_INITIAL_MSGNUM;
-+
-+ INIT_LIST_HEAD(&session->applications);
-+
-+ skb_queue_head_init(&session->transmit);
-+
-+ for (i = 0; i < 16; i++)
-+ session->reassembly[i] = NULL;
-+
-+ session->flags = req->flags;
-+
-+ __cmtp_link_session(session);
-+
-+ err = kernel_thread(cmtp_session, session, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+ if (err < 0)
-+ goto unlink;
-+
-+ if (!(session->flags & (1 << CMTP_LOOPBACK))) {
-+ err = cmtp_attach_device(session);
-+ if (err < 0)
-+ goto detach;
-+ }
-+
-+ up_write(&cmtp_session_sem);
-+ return 0;
-+
-+detach:
-+ cmtp_detach_device(session);
-+
-+unlink:
-+ __cmtp_unlink_session(session);
-+
-+failed:
-+ up_write(&cmtp_session_sem);
-+ kfree(session);
-+ return err;
-+}
-+
-+int cmtp_del_connection(struct cmtp_conndel_req *req)
-+{
-+ struct cmtp_session *session;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&cmtp_session_sem);
-+
-+ session = __cmtp_get_session(&req->bdaddr);
-+ if (session) {
-+ /* Flush the transmit queue */
-+ skb_queue_purge(&session->transmit);
-+
-+ /* Kill session thread */
-+ atomic_inc(&session->terminate);
-+ cmtp_schedule(session);
-+ } else
-+ err = -ENOENT;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+int cmtp_get_connlist(struct cmtp_connlist_req *req)
-+{
-+ struct list_head *p;
-+ int err = 0, n = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&cmtp_session_sem);
-+
-+ list_for_each(p, &cmtp_session_list) {
-+ struct cmtp_session *session;
-+ struct cmtp_conninfo ci;
-+
-+ session = list_entry(p, struct cmtp_session, list);
-+
-+ __cmtp_copy_session(session, &ci);
-+
-+ if (copy_to_user(req->ci, &ci, sizeof(ci))) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (++n >= req->cnum)
-+ break;
-+
-+ req->ci++;
-+ }
-+ req->cnum = n;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+int cmtp_get_conninfo(struct cmtp_conninfo *ci)
-+{
-+ struct cmtp_session *session;
-+ int err = 0;
-+
-+ down_read(&cmtp_session_sem);
-+
-+ session = __cmtp_get_session(&ci->bdaddr);
-+ if (session)
-+ __cmtp_copy_session(session, ci);
-+ else
-+ err = -ENOENT;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+
-+int __init init_cmtp(void)
-+{
-+ l2cap_load();
-+
-+ cmtp_init_capi();
-+ cmtp_init_sockets();
-+
-+ BT_INFO("BlueZ CMTP ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>");
-+
-+ return 0;
-+}
-+
-+void __exit exit_cmtp(void)
-+{
-+ cmtp_cleanup_sockets();
-+ cmtp_cleanup_capi();
-+}
-+
-+module_init(init_cmtp);
-+module_exit(exit_cmtp);
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ CMTP ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/cmtp/Makefile linux-2.4.18-mh15/net/bluetooth/cmtp/Makefile
---- linux-2.4.18/net/bluetooth/cmtp/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,10 @@
-+#
-+# Makefile for the Linux Bluetooth CMTP layer
-+#
-+
-+O_TARGET := cmtp.o
-+
-+obj-y := core.o sock.o capi.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.18/net/bluetooth/cmtp/sock.c linux-2.4.18-mh15/net/bluetooth/cmtp/sock.c
---- linux-2.4.18/net/bluetooth/cmtp/sock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/sock.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,208 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+static int cmtp_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sock_orphan(sk);
-+ sock_put(sk);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int cmtp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct cmtp_connadd_req ca;
-+ struct cmtp_conndel_req cd;
-+ struct cmtp_connlist_req cl;
-+ struct cmtp_conninfo ci;
-+ struct socket *nsock;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
-+ case CMTPCONNADD:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&ca, (void *) arg, sizeof(ca)))
-+ return -EFAULT;
-+
-+ nsock = sockfd_lookup(ca.sock, &err);
-+ if (!nsock)
-+ return err;
-+
-+ if (nsock->sk->state != BT_CONNECTED) {
-+ fput(nsock->file);
-+ return -EBADFD;
-+ }
-+
-+ err = cmtp_add_connection(&ca, nsock);
-+ if (!err) {
-+ if (copy_to_user((void *) arg, &ca, sizeof(ca)))
-+ err = -EFAULT;
-+ } else
-+ fput(nsock->file);
-+
-+ return err;
-+
-+ case CMTPCONNDEL:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&cd, (void *) arg, sizeof(cd)))
-+ return -EFAULT;
-+
-+ return cmtp_del_connection(&cd);
-+
-+ case CMTPGETCONNLIST:
-+ if (copy_from_user(&cl, (void *) arg, sizeof(cl)))
-+ return -EFAULT;
-+
-+ if (cl.cnum <= 0)
-+ return -EINVAL;
-+
-+ err = cmtp_get_connlist(&cl);
-+ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ case CMTPGETCONNINFO:
-+ if (copy_from_user(&ci, (void *) arg, sizeof(ci)))
-+ return -EFAULT;
-+
-+ err = cmtp_get_conninfo(&ci);
-+ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci)))
-+ return -EFAULT;
-+
-+ return err;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static struct proto_ops cmtp_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: cmtp_sock_release,
-+ ioctl: cmtp_sock_ioctl,
-+ bind: sock_no_bind,
-+ getname: sock_no_getname,
-+ sendmsg: sock_no_sendmsg,
-+ recvmsg: sock_no_recvmsg,
-+ poll: sock_no_poll,
-+ listen: sock_no_listen,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sock_no_setsockopt,
-+ getsockopt: sock_no_getsockopt,
-+ connect: sock_no_connect,
-+ socketpair: sock_no_socketpair,
-+ accept: sock_no_accept,
-+ mmap: sock_no_mmap
-+};
-+
-+static int cmtp_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ if (sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &cmtp_sock_ops;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1)))
-+ return -ENOMEM;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ sock->state = SS_UNCONNECTED;
-+ sock_init_data(sock, sk);
-+
-+ sk->destruct = NULL;
-+ sk->protocol = protocol;
-+
-+ return 0;
-+}
-+
-+static struct net_proto_family cmtp_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: cmtp_sock_create
-+};
-+
-+int cmtp_init_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_CMTP, &cmtp_sock_family_ops))) {
-+ BT_ERR("Can't register CMTP socket layer (%d)", err);
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+void cmtp_cleanup_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_unregister(BTPROTO_CMTP)))
-+ BT_ERR("Can't unregister CMTP socket layer (%d)", err);
-+
-+ return;
-+}
-diff -urN linux-2.4.18/net/bluetooth/Config.in linux-2.4.18-mh15/net/bluetooth/Config.in
---- linux-2.4.18/net/bluetooth/Config.in 2001-06-12 04:15:27.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -1,16 +1,23 @@
- #
--# Bluetooth configuration
-+# Bluetooth subsystem configuration
- #
-
- if [ "$CONFIG_NET" != "n" ]; then
-+
- mainmenu_option next_comment
- comment 'Bluetooth support'
- dep_tristate 'Bluetooth subsystem support' CONFIG_BLUEZ $CONFIG_NET
-
- if [ "$CONFIG_BLUEZ" != "n" ]; then
- dep_tristate 'L2CAP protocol support' CONFIG_BLUEZ_L2CAP $CONFIG_BLUEZ
-+ dep_tristate 'SCO links support' CONFIG_BLUEZ_SCO $CONFIG_BLUEZ
-+ source net/bluetooth/rfcomm/Config.in
-+ source net/bluetooth/bnep/Config.in
-+ source net/bluetooth/cmtp/Config.in
-+ source net/bluetooth/hidp/Config.in
- source drivers/bluetooth/Config.in
- fi
-+
- endmenu
- fi
-
-diff -urN linux-2.4.18/net/bluetooth/hci_conn.c linux-2.4.18-mh15/net/bluetooth/hci_conn.c
---- linux-2.4.18/net/bluetooth/hci_conn.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hci_conn.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,435 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * HCI Connection handling.
-+ *
-+ * $Id: hci_conn.c,v 1.5 2002/07/17 18:46:25 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/notifier.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+#ifndef HCI_CORE_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+void hci_acl_connect(struct hci_conn *conn)
-+{
-+ struct hci_dev *hdev = conn->hdev;
-+ struct inquiry_entry *ie;
-+ create_conn_cp cp;
-+
-+ BT_DBG("%p", conn);
-+
-+ conn->state = BT_CONNECT;
-+ conn->out = 1;
-+ conn->link_mode = HCI_LM_MASTER;
-+
-+ memset(&cp, 0, sizeof(cp));
-+ bacpy(&cp.bdaddr, &conn->dst);
-+ cp.pscan_rep_mode = 0x02;
-+
-+ if ((ie = inquiry_cache_lookup(hdev, &conn->dst)) &&
-+ inquiry_entry_age(ie) <= INQUIRY_ENTRY_AGE_MAX) {
-+ cp.pscan_rep_mode = ie->info.pscan_rep_mode;
-+ cp.pscan_mode = ie->info.pscan_mode;
-+ cp.clock_offset = ie->info.clock_offset | __cpu_to_le16(0x8000);
-+ }
-+
-+ cp.pkt_type = __cpu_to_le16(hdev->pkt_type & ACL_PTYPE_MASK);
-+ if (lmp_rswitch_capable(hdev) && !(hdev->link_mode & HCI_LM_MASTER))
-+ cp.role_switch = 0x01;
-+ else
-+ cp.role_switch = 0x00;
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CREATE_CONN,
-+ CREATE_CONN_CP_SIZE, &cp);
-+}
-+
-+void hci_acl_disconn(struct hci_conn *conn, __u8 reason)
-+{
-+ disconnect_cp cp;
-+
-+ BT_DBG("%p", conn);
-+
-+ conn->state = BT_DISCONN;
-+
-+ cp.handle = __cpu_to_le16(conn->handle);
-+ cp.reason = reason;
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_DISCONNECT,
-+ DISCONNECT_CP_SIZE, &cp);
-+}
-+
-+void hci_add_sco(struct hci_conn *conn, __u16 handle)
-+{
-+ struct hci_dev *hdev = conn->hdev;
-+ add_sco_cp cp;
-+
-+ BT_DBG("%p", conn);
-+
-+ conn->state = BT_CONNECT;
-+ conn->out = 1;
-+
-+ cp.pkt_type = __cpu_to_le16(hdev->pkt_type & SCO_PTYPE_MASK);
-+ cp.handle = __cpu_to_le16(handle);
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ADD_SCO, ADD_SCO_CP_SIZE, &cp);
-+}
-+
-+static void hci_conn_timeout(unsigned long arg)
-+{
-+ struct hci_conn *conn = (void *)arg;
-+ struct hci_dev *hdev = conn->hdev;
-+
-+ BT_DBG("conn %p state %d", conn, conn->state);
-+
-+ if (atomic_read(&conn->refcnt))
-+ return;
-+
-+ hci_dev_lock(hdev);
-+ if (conn->state == BT_CONNECTED)
-+ hci_acl_disconn(conn, 0x13);
-+ else
-+ conn->state = BT_CLOSED;
-+ hci_dev_unlock(hdev);
-+ return;
-+}
-+
-+static void hci_conn_init_timer(struct hci_conn *conn)
-+{
-+ init_timer(&conn->timer);
-+ conn->timer.function = hci_conn_timeout;
-+ conn->timer.data = (unsigned long)conn;
-+}
-+
-+struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst)
-+{
-+ struct hci_conn *conn;
-+
-+ BT_DBG("%s dst %s", hdev->name, batostr(dst));
-+
-+ if (!(conn = kmalloc(sizeof(struct hci_conn), GFP_ATOMIC)))
-+ return NULL;
-+ memset(conn, 0, sizeof(struct hci_conn));
-+
-+ bacpy(&conn->dst, dst);
-+ conn->type = type;
-+ conn->hdev = hdev;
-+ conn->state = BT_OPEN;
-+
-+ skb_queue_head_init(&conn->data_q);
-+ hci_conn_init_timer(conn);
-+
-+ atomic_set(&conn->refcnt, 0);
-+
-+ hci_dev_hold(hdev);
-+
-+ tasklet_disable(&hdev->tx_task);
-+ conn_hash_add(hdev, conn);
-+ tasklet_enable(&hdev->tx_task);
-+
-+ return conn;
-+}
-+
-+int hci_conn_del(struct hci_conn *conn)
-+{
-+ struct hci_dev *hdev = conn->hdev;
-+
-+ BT_DBG("%s conn %p handle %d", hdev->name, conn, conn->handle);
-+
-+ hci_conn_del_timer(conn);
-+
-+ if (conn->type == SCO_LINK) {
-+ struct hci_conn *acl = conn->link;
-+ if (acl) {
-+ acl->link = NULL;
-+ hci_conn_put(acl);
-+ }
-+ } else {
-+ struct hci_conn *sco = conn->link;
-+ if (sco)
-+ sco->link = NULL;
-+
-+ /* Unacked frames */
-+ hdev->acl_cnt += conn->sent;
-+ }
-+
-+ tasklet_disable(&hdev->tx_task);
-+ conn_hash_del(hdev, conn);
-+ tasklet_enable(&hdev->tx_task);
-+
-+ skb_queue_purge(&conn->data_q);
-+
-+ hci_dev_put(hdev);
-+
-+ kfree(conn);
-+ return 0;
-+}
-+
-+struct hci_dev *hci_get_route(bdaddr_t *dst, bdaddr_t *src)
-+{
-+ int use_src = bacmp(src, BDADDR_ANY);
-+ struct hci_dev *hdev = NULL;
-+ struct list_head *p;
-+
-+ BT_DBG("%s -> %s", batostr(src), batostr(dst));
-+
-+ read_lock_bh(&hdev_list_lock);
-+
-+ list_for_each(p, &hdev_list) {
-+ struct hci_dev *d;
-+ d = list_entry(p, struct hci_dev, list);
-+
-+ if (!test_bit(HCI_UP, &d->flags))
-+ continue;
-+
-+ /* Simple routing:
-+ * No source address - find interface with bdaddr != dst
-+ * Source address - find interface with bdaddr == src
-+ */
-+
-+ if (use_src) {
-+ if (!bacmp(&d->bdaddr, src)) {
-+ hdev = d; break;
-+ }
-+ } else {
-+ if (bacmp(&d->bdaddr, dst)) {
-+ hdev = d; break;
-+ }
-+ }
-+ }
-+
-+ if (hdev)
-+ hci_dev_hold(hdev);
-+
-+ read_unlock_bh(&hdev_list_lock);
-+ return hdev;
-+}
-+
-+/* Create SCO or ACL connection.
-+ * Device _must_ be locked */
-+struct hci_conn * hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst)
-+{
-+ struct hci_conn *acl;
-+
-+ BT_DBG("%s dst %s", hdev->name, batostr(dst));
-+
-+ if (!(acl = conn_hash_lookup_ba(hdev, ACL_LINK, dst))) {
-+ if (!(acl = hci_conn_add(hdev, ACL_LINK, dst)))
-+ return NULL;
-+ }
-+
-+ hci_conn_hold(acl);
-+
-+ if (acl->state == BT_OPEN || acl->state == BT_CLOSED)
-+ hci_acl_connect(acl);
-+
-+ if (type == SCO_LINK) {
-+ struct hci_conn *sco;
-+
-+ if (!(sco = conn_hash_lookup_ba(hdev, SCO_LINK, dst))) {
-+ if (!(sco = hci_conn_add(hdev, SCO_LINK, dst))) {
-+ hci_conn_put(acl);
-+ return NULL;
-+ }
-+ }
-+ acl->link = sco;
-+ sco->link = acl;
-+
-+ hci_conn_hold(sco);
-+
-+ if (acl->state == BT_CONNECTED &&
-+ (sco->state == BT_OPEN || sco->state == BT_CLOSED))
-+ hci_add_sco(sco, acl->handle);
-+
-+ return sco;
-+ } else {
-+ return acl;
-+ }
-+}
-+
-+/* Authenticate remote device */
-+int hci_conn_auth(struct hci_conn *conn)
-+{
-+ BT_DBG("conn %p", conn);
-+
-+ if (conn->link_mode & HCI_LM_AUTH)
-+ return 1;
-+
-+ if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
-+ auth_requested_cp ar;
-+ ar.handle = __cpu_to_le16(conn->handle);
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_AUTH_REQUESTED,
-+ AUTH_REQUESTED_CP_SIZE, &ar);
-+ }
-+ return 0;
-+}
-+
-+/* Enable encryption */
-+int hci_conn_encrypt(struct hci_conn *conn)
-+{
-+ BT_DBG("conn %p", conn);
-+
-+ if (conn->link_mode & HCI_LM_ENCRYPT)
-+ return 1;
-+
-+ if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
-+ return 0;
-+
-+ if (hci_conn_auth(conn)) {
-+ set_conn_encrypt_cp ce;
-+ ce.handle = __cpu_to_le16(conn->handle);
-+ ce.encrypt = 1;
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_SET_CONN_ENCRYPT,
-+ SET_CONN_ENCRYPT_CP_SIZE, &ce);
-+ }
-+ return 0;
-+}
-+
-+/* Drop all connection on the device */
-+void hci_conn_hash_flush(struct hci_dev *hdev)
-+{
-+ struct conn_hash *h = &hdev->conn_hash;
-+ struct list_head *p;
-+
-+ BT_DBG("hdev %s", hdev->name);
-+
-+ p = h->list.next;
-+ while (p != &h->list) {
-+ struct hci_conn *c;
-+
-+ c = list_entry(p, struct hci_conn, list);
-+ p = p->next;
-+
-+ c->state = BT_CLOSED;
-+
-+ hci_proto_disconn_ind(c, 0x16);
-+ hci_conn_del(c);
-+ }
-+}
-+
-+int hci_get_conn_list(unsigned long arg)
-+{
-+ struct hci_conn_list_req req, *cl;
-+ struct hci_conn_info *ci;
-+ struct hci_dev *hdev;
-+ struct list_head *p;
-+ int n = 0, size, err;
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ if (!req.conn_num || req.conn_num > (PAGE_SIZE * 2) / sizeof(*ci))
-+ return -EINVAL;
-+
-+ size = sizeof(req) + req.conn_num * sizeof(*ci);
-+
-+ if (!(cl = (void *) kmalloc(size, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ if (!(hdev = hci_dev_get(req.dev_id))) {
-+ kfree(cl);
-+ return -ENODEV;
-+ }
-+
-+ ci = cl->conn_info;
-+
-+ hci_dev_lock_bh(hdev);
-+ list_for_each(p, &hdev->conn_hash.list) {
-+ register struct hci_conn *c;
-+ c = list_entry(p, struct hci_conn, list);
-+
-+ bacpy(&(ci + n)->bdaddr, &c->dst);
-+ (ci + n)->handle = c->handle;
-+ (ci + n)->type = c->type;
-+ (ci + n)->out = c->out;
-+ (ci + n)->state = c->state;
-+ (ci + n)->link_mode = c->link_mode;
-+ if (++n >= req.conn_num)
-+ break;
-+ }
-+ hci_dev_unlock_bh(hdev);
-+
-+ cl->dev_id = hdev->id;
-+ cl->conn_num = n;
-+ size = sizeof(req) + n * sizeof(*ci);
-+
-+ hci_dev_put(hdev);
-+
-+ err = copy_to_user((void *) arg, cl, size);
-+ kfree(cl);
-+
-+ return err ? -EFAULT : 0;
-+}
-+
-+int hci_get_conn_info(struct hci_dev *hdev, unsigned long arg)
-+{
-+ struct hci_conn_info_req req;
-+ struct hci_conn_info ci;
-+ struct hci_conn *conn;
-+ char *ptr = (void *) arg + sizeof(req);
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ hci_dev_lock_bh(hdev);
-+ conn = conn_hash_lookup_ba(hdev, req.type, &req.bdaddr);
-+ if (conn) {
-+ bacpy(&ci.bdaddr, &conn->dst);
-+ ci.handle = conn->handle;
-+ ci.type = conn->type;
-+ ci.out = conn->out;
-+ ci.state = conn->state;
-+ ci.link_mode = conn->link_mode;
-+ }
-+ hci_dev_unlock_bh(hdev);
-+
-+ if (!conn)
-+ return -ENOENT;
-+
-+ return copy_to_user(ptr, &ci, sizeof(ci)) ? -EFAULT : 0;
-+}
-diff -urN linux-2.4.18/net/bluetooth/hci_core.c linux-2.4.18-mh15/net/bluetooth/hci_core.c
---- linux-2.4.18/net/bluetooth/hci_core.c 2001-11-09 23:21:21.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hci_core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,11 +25,12 @@
- /*
- * BlueZ HCI Core.
- *
-- * $Id: hci_core.c,v 1.22 2001/08/03 04:19:50 maxk Exp $
-+ * $Id: hci_core.c,v 1.14 2002/08/26 16:57:57 maxk Exp $
- */
-
- #include <linux/config.h>
- #include <linux/module.h>
-+#include <linux/kmod.h>
-
- #include <linux/types.h>
- #include <linux/errno.h>
-@@ -50,12 +51,11 @@
- #include <asm/unaligned.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
-
- #ifndef HCI_CORE_DEBUG
--#undef DBG
--#define DBG( A... )
-+#undef BT_DBG
-+#define BT_DBG( A... )
- #endif
-
- static void hci_cmd_task(unsigned long arg);
-@@ -63,279 +63,69 @@
- static void hci_tx_task(unsigned long arg);
- static void hci_notify(struct hci_dev *hdev, int event);
-
--static rwlock_t hci_task_lock = RW_LOCK_UNLOCKED;
-+rwlock_t hci_task_lock = RW_LOCK_UNLOCKED;
-
- /* HCI device list */
--struct hci_dev *hdev_list[HCI_MAX_DEV];
--spinlock_t hdev_list_lock;
--#define GET_HDEV(a) (hdev_list[a])
--
--/* HCI protocol list */
--struct hci_proto *hproto_list[HCI_MAX_PROTO];
--#define GET_HPROTO(a) (hproto_list[a])
-+LIST_HEAD(hdev_list);
-+rwlock_t hdev_list_lock = RW_LOCK_UNLOCKED;
-
--/* HCI notifiers list */
--struct notifier_block *hci_dev_notifier;
--
--/* HCI device notifications */
--int hci_register_notifier(struct notifier_block *nb)
--{
-- int err, i;
-- struct hci_dev *hdev;
--
-- if ((err = notifier_chain_register(&hci_dev_notifier, nb)))
-- return err;
--
-- /* Notify about already registered devices */
-- spin_lock(&hdev_list_lock);
-- for (i = 0; i < HCI_MAX_DEV; i++) {
-- if (!(hdev = GET_HDEV(i)))
-- continue;
-- if (hdev->flags & HCI_UP)
-- (*nb->notifier_call)(nb, HCI_DEV_UP, hdev);
-- }
-- spin_unlock(&hdev_list_lock);
--
-- return 0;
--}
--
--int hci_unregister_notifier(struct notifier_block *nb)
--{
-- return notifier_chain_unregister(&hci_dev_notifier, nb);
--}
--
--static inline void hci_notify(struct hci_dev *hdev, int event)
--{
-- notifier_call_chain(&hci_dev_notifier, event, hdev);
--}
--
--/* Get HCI device by index (device is locked on return)*/
--struct hci_dev *hci_dev_get(int index)
--{
-- struct hci_dev *hdev;
-- DBG("%d", index);
--
-- if (index < 0 || index >= HCI_MAX_DEV)
-- return NULL;
--
-- spin_lock(&hdev_list_lock);
-- if ((hdev = GET_HDEV(index)))
-- hci_dev_hold(hdev);
-- spin_unlock(&hdev_list_lock);
--
-- return hdev;
--}
--
--/* Flush inquiry cache */
--void inquiry_cache_flush(struct inquiry_cache *cache)
--{
-- struct inquiry_entry *next = cache->list, *e;
--
-- DBG("cache %p", cache);
--
-- cache->list = NULL;
-- while ((e = next)) {
-- next = e->next;
-- kfree(e);
-- }
--}
--
--/* Lookup by bdaddr.
-- * Cache must be locked. */
--static struct inquiry_entry * __inquiry_cache_lookup(struct inquiry_cache *cache, bdaddr_t *bdaddr)
--{
-- struct inquiry_entry *e;
--
-- DBG("cache %p, %s", cache, batostr(bdaddr));
--
-- for (e = cache->list; e; e = e->next)
-- if (!bacmp(&e->info.bdaddr, bdaddr))
-- break;
--
-- return e;
--}
--
--static void inquiry_cache_update(struct inquiry_cache *cache, inquiry_info *info)
--{
-- struct inquiry_entry *e;
--
-- DBG("cache %p, %s", cache, batostr(&info->bdaddr));
--
-- inquiry_cache_lock(cache);
--
-- if (!(e = __inquiry_cache_lookup(cache, &info->bdaddr))) {
-- /* Entry not in the cache. Add new one. */
-- if (!(e = kmalloc(sizeof(struct inquiry_entry), GFP_ATOMIC)))
-- goto unlock;
-- memset(e, 0, sizeof(struct inquiry_entry));
-- e->next = cache->list;
-- cache->list = e;
-- }
--
-- memcpy(&e->info, info, sizeof(inquiry_info));
-- e->timestamp = jiffies;
-- cache->timestamp = jiffies;
--unlock:
-- inquiry_cache_unlock(cache);
--}
--
--static int inquiry_cache_dump(struct inquiry_cache *cache, int num, __u8 *buf)
--{
-- inquiry_info *info = (inquiry_info *) buf;
-- struct inquiry_entry *e;
-- int copied = 0;
-+/* HCI protocols */
-+#define HCI_MAX_PROTO 2
-+struct hci_proto *hci_proto[HCI_MAX_PROTO];
-
-- inquiry_cache_lock(cache);
--
-- for (e = cache->list; e && copied < num; e = e->next, copied++)
-- memcpy(info++, &e->info, sizeof(inquiry_info));
-+/* HCI notifiers list */
-+static struct notifier_block *hci_notifier;
-
-- inquiry_cache_unlock(cache);
-
-- DBG("cache %p, copied %d", cache, copied);
-- return copied;
--}
-+/* ---- HCI notifications ---- */
-
--/* --------- BaseBand connections --------- */
--static struct hci_conn *hci_conn_add(struct hci_dev *hdev, __u16 handle, __u8 type, bdaddr_t *dst)
-+int hci_register_notifier(struct notifier_block *nb)
- {
-- struct hci_conn *conn;
--
-- DBG("%s handle %d dst %s", hdev->name, handle, batostr(dst));
--
-- if ( conn_hash_lookup(&hdev->conn_hash, handle)) {
-- ERR("%s handle 0x%x already exists", hdev->name, handle);
-- return NULL;
-- }
--
-- if (!(conn = kmalloc(sizeof(struct hci_conn), GFP_ATOMIC)))
-- return NULL;
-- memset(conn, 0, sizeof(struct hci_conn));
--
-- bacpy(&conn->dst, dst);
-- conn->handle = handle;
-- conn->type = type;
-- conn->hdev = hdev;
--
-- skb_queue_head_init(&conn->data_q);
--
-- hci_dev_hold(hdev);
-- conn_hash_add(&hdev->conn_hash, handle, conn);
--
-- return conn;
-+ return notifier_chain_register(&hci_notifier, nb);
- }
-
--static int hci_conn_del(struct hci_dev *hdev, struct hci_conn *conn)
-+int hci_unregister_notifier(struct notifier_block *nb)
- {
-- DBG("%s conn %p handle %d", hdev->name, conn, conn->handle);
--
-- conn_hash_del(&hdev->conn_hash, conn);
-- hci_dev_put(hdev);
--
-- /* Unacked frames */
-- hdev->acl_cnt += conn->sent;
--
-- skb_queue_purge(&conn->data_q);
--
-- kfree(conn);
-- return 0;
-+ return notifier_chain_unregister(&hci_notifier, nb);
- }
-
--/* Drop all connection on the device */
--static void hci_conn_hash_flush(struct hci_dev *hdev)
-+void hci_notify(struct hci_dev *hdev, int event)
- {
-- struct conn_hash *h = &hdev->conn_hash;
-- struct hci_proto *hp;
-- struct list_head *p;
--
-- DBG("hdev %s", hdev->name);
--
-- p = h->list.next;
-- while (p != &h->list) {
-- struct hci_conn *c;
--
-- c = list_entry(p, struct hci_conn, list);
-- p = p->next;
--
-- if (c->type == ACL_LINK) {
-- /* ACL link notify L2CAP layer */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->disconn_ind)
-- hp->disconn_ind(c, 0x16);
-- } else {
-- /* SCO link (no notification) */
-- }
--
-- hci_conn_del(hdev, c);
-- }
-+ notifier_call_chain(&hci_notifier, event, hdev);
- }
-
--int hci_connect(struct hci_dev *hdev, bdaddr_t *bdaddr)
--{
-- struct inquiry_cache *cache = &hdev->inq_cache;
-- struct inquiry_entry *e;
-- create_conn_cp cc;
-- __u16 clock_offset;
--
-- DBG("%s bdaddr %s", hdev->name, batostr(bdaddr));
--
-- if (!(hdev->flags & HCI_UP))
-- return -ENODEV;
--
-- inquiry_cache_lock_bh(cache);
--
-- if (!(e = __inquiry_cache_lookup(cache, bdaddr)) || inquiry_entry_age(e) > INQUIRY_ENTRY_AGE_MAX) {
-- cc.pscan_rep_mode = 0;
-- cc.pscan_mode = 0;
-- clock_offset = 0;
-- } else {
-- cc.pscan_rep_mode = e->info.pscan_rep_mode;
-- cc.pscan_mode = e->info.pscan_mode;
-- clock_offset = __le16_to_cpu(e->info.clock_offset) & 0x8000;
-- }
--
-- inquiry_cache_unlock_bh(cache);
--
-- bacpy(&cc.bdaddr, bdaddr);
-- cc.pkt_type = __cpu_to_le16(hdev->pkt_type);
-- cc.clock_offset = __cpu_to_le16(clock_offset);
--
-- if (lmp_rswitch_capable(hdev))
-- cc.role_switch = 0x01;
-- else
-- cc.role_switch = 0x00;
--
-- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CREATE_CONN, CREATE_CONN_CP_SIZE, &cc);
-+/* ---- HCI hotplug support ---- */
-
-- return 0;
--}
-+#ifdef CONFIG_HOTPLUG
-
--int hci_disconnect(struct hci_conn *conn, __u8 reason)
-+static int hci_run_hotplug(char *dev, char *action)
- {
-- disconnect_cp dc;
--
-- DBG("conn %p handle %d", conn, conn->handle);
-+ char *argv[3], *envp[5], dstr[20], astr[32];
-
-- dc.handle = __cpu_to_le16(conn->handle);
-- dc.reason = reason;
-- hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_DISCONNECT, DISCONNECT_CP_SIZE, &dc);
-+ sprintf(dstr, "DEVICE=%s", dev);
-+ sprintf(astr, "ACTION=%s", action);
-
-- return 0;
--}
-+ argv[0] = hotplug_path;
-+ argv[1] = "bluetooth";
-+ argv[2] = NULL;
-
--/* --------- HCI request handling ------------ */
--static inline void hci_req_lock(struct hci_dev *hdev)
--{
-- down(&hdev->req_lock);
-+ envp[0] = "HOME=/";
-+ envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
-+ envp[2] = dstr;
-+ envp[3] = astr;
-+ envp[4] = NULL;
-+
-+ return call_usermodehelper(argv[0], argv, envp);
- }
-+#else
-+#define hci_run_hotplug(A...)
-+#endif
-
--static inline void hci_req_unlock(struct hci_dev *hdev)
--{
-- up(&hdev->req_lock);
--}
-+/* ---- HCI requests ---- */
-
--static inline void hci_req_complete(struct hci_dev *hdev, int result)
-+void hci_req_complete(struct hci_dev *hdev, int result)
- {
-- DBG("%s result 0x%2.2x", hdev->name, result);
-+ BT_DBG("%s result 0x%2.2x", hdev->name, result);
-
- if (hdev->req_status == HCI_REQ_PEND) {
- hdev->req_result = result;
-@@ -344,9 +134,9 @@
- }
- }
-
--static inline void hci_req_cancel(struct hci_dev *hdev, int err)
-+void hci_req_cancel(struct hci_dev *hdev, int err)
- {
-- DBG("%s err 0x%2.2x", hdev->name, err);
-+ BT_DBG("%s err 0x%2.2x", hdev->name, err);
-
- if (hdev->req_status == HCI_REQ_PEND) {
- hdev->req_result = err;
-@@ -356,23 +146,22 @@
- }
-
- /* Execute request and wait for completion. */
--static int __hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt),
-- unsigned long opt, __u32 timeout)
-+static int __hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt), unsigned long opt, __u32 timeout)
- {
- DECLARE_WAITQUEUE(wait, current);
- int err = 0;
-
-- DBG("%s start", hdev->name);
-+ BT_DBG("%s start", hdev->name);
-
- hdev->req_status = HCI_REQ_PEND;
-
- add_wait_queue(&hdev->req_wait_q, &wait);
-- current->state = TASK_INTERRUPTIBLE;
-+ set_current_state(TASK_INTERRUPTIBLE);
-
- req(hdev, opt);
- schedule_timeout(timeout);
-
-- current->state = TASK_RUNNING;
-+ set_current_state(TASK_RUNNING);
- remove_wait_queue(&hdev->req_wait_q, &wait);
-
- if (signal_pending(current))
-@@ -394,7 +183,7 @@
-
- hdev->req_status = hdev->req_result = 0;
-
-- DBG("%s end: err %d", hdev->name, err);
-+ BT_DBG("%s end: err %d", hdev->name, err);
-
- return err;
- }
-@@ -412,10 +201,9 @@
- return ret;
- }
-
--/* --------- HCI requests ---------- */
- static void hci_reset_req(struct hci_dev *hdev, unsigned long opt)
- {
-- DBG("%s %ld", hdev->name, opt);
-+ BT_DBG("%s %ld", hdev->name, opt);
-
- /* Reset device */
- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_RESET, 0, NULL);
-@@ -423,27 +211,44 @@
-
- static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
- {
-- set_event_flt_cp ec;
-+ set_event_flt_cp ef;
- __u16 param;
-
-- DBG("%s %ld", hdev->name, opt);
-+ BT_DBG("%s %ld", hdev->name, opt);
-
- /* Mandatory initialization */
-
-+ /* Reset */
-+ if (test_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks))
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_RESET, 0, NULL);
-+
- /* Read Local Supported Features */
- hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_LOCAL_FEATURES, 0, NULL);
-
- /* Read Buffer Size (ACL mtu, max pkt, etc.) */
- hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_BUFFER_SIZE, 0, NULL);
-
-+#if 0
-+ /* Host buffer size */
-+ {
-+ host_buffer_size_cp bs;
-+ bs.acl_mtu = __cpu_to_le16(HCI_MAX_ACL_SIZE);
-+ bs.sco_mtu = HCI_MAX_SCO_SIZE;
-+ bs.acl_max_pkt = __cpu_to_le16(0xffff);
-+ bs.sco_max_pkt = __cpu_to_le16(0xffff);
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_HOST_BUFFER_SIZE,
-+ HOST_BUFFER_SIZE_CP_SIZE, &bs);
-+ }
-+#endif
-+
- /* Read BD Address */
- hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_BD_ADDR, 0, NULL);
-
- /* Optional initialization */
-
- /* Clear Event Filters */
-- ec.flt_type = FLT_CLEAR_ALL;
-- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_SET_EVENT_FLT, 1, &ec);
-+ ef.flt_type = FLT_CLEAR_ALL;
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_SET_EVENT_FLT, 1, &ef);
-
- /* Page timeout ~20 secs */
- param = __cpu_to_le16(0x8000);
-@@ -458,7 +263,7 @@
- {
- __u8 scan = opt;
-
-- DBG("%s %x", hdev->name, scan);
-+ BT_DBG("%s %x", hdev->name, scan);
-
- /* Inquiry and Page scans */
- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE, 1, &scan);
-@@ -468,116 +273,273 @@
- {
- __u8 auth = opt;
-
-- DBG("%s %x", hdev->name, auth);
-+ BT_DBG("%s %x", hdev->name, auth);
-
- /* Authentication */
- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE, 1, &auth);
- }
-
--static void hci_inq_req(struct hci_dev *hdev, unsigned long opt)
-+static void hci_encrypt_req(struct hci_dev *hdev, unsigned long opt)
- {
-- struct hci_inquiry_req *ir = (struct hci_inquiry_req *) opt;
-- inquiry_cp ic;
-+ __u8 encrypt = opt;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s %x", hdev->name, encrypt);
-
-- /* Start Inquiry */
-- memcpy(&ic.lap, &ir->lap, 3);
-- ic.lenght = ir->length;
-- ic.num_rsp = ir->num_rsp;
-- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_INQUIRY, INQUIRY_CP_SIZE, &ic);
-+ /* Authentication */
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_ENCRYPT_MODE, 1, &encrypt);
- }
-
--/* HCI ioctl helpers */
--int hci_dev_open(__u16 dev)
-+/* Get HCI device by index.
-+ * Device is locked on return. */
-+struct hci_dev *hci_dev_get(int index)
- {
- struct hci_dev *hdev;
-- int ret = 0;
--
-- if (!(hdev = hci_dev_get(dev)))
-- return -ENODEV;
-+ struct list_head *p;
-
-- DBG("%s %p", hdev->name, hdev);
-+ BT_DBG("%d", index);
-
-- hci_req_lock(hdev);
-+ if (index < 0)
-+ return NULL;
-
-- if (hdev->flags & HCI_UP) {
-- ret = -EALREADY;
-- goto done;
-+ read_lock(&hdev_list_lock);
-+ list_for_each(p, &hdev_list) {
-+ hdev = list_entry(p, struct hci_dev, list);
-+ if (hdev->id == index) {
-+ hci_dev_hold(hdev);
-+ goto done;
-+ }
- }
-+ hdev = NULL;
-+done:
-+ read_unlock(&hdev_list_lock);
-+ return hdev;
-+}
-
-- if (hdev->open(hdev)) {
-- ret = -EIO;
-- goto done;
-- }
-+/* ---- Inquiry support ---- */
-+void inquiry_cache_flush(struct hci_dev *hdev)
-+{
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ struct inquiry_entry *next = cache->list, *e;
-
-- if (hdev->flags & HCI_NORMAL) {
-- atomic_set(&hdev->cmd_cnt, 1);
-- hdev->flags |= HCI_INIT;
-+ BT_DBG("cache %p", cache);
-
-- //__hci_request(hdev, hci_reset_req, 0, HZ);
-- ret = __hci_request(hdev, hci_init_req, 0, HCI_INIT_TIMEOUT);
--
-- hdev->flags &= ~HCI_INIT;
-+ cache->list = NULL;
-+ while ((e = next)) {
-+ next = e->next;
-+ kfree(e);
- }
-+}
-
-- if (!ret) {
-- hdev->flags |= HCI_UP;
-- hci_notify(hdev, HCI_DEV_UP);
-- } else {
-- /* Init failed, cleanup */
-- tasklet_kill(&hdev->rx_task);
-- tasklet_kill(&hdev->tx_task);
-- tasklet_kill(&hdev->cmd_task);
-+struct inquiry_entry *inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr)
-+{
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ struct inquiry_entry *e;
-
-- skb_queue_purge(&hdev->cmd_q);
-- skb_queue_purge(&hdev->rx_q);
-+ BT_DBG("cache %p, %s", cache, batostr(bdaddr));
-
-- if (hdev->flush)
-- hdev->flush(hdev);
-+ for (e = cache->list; e; e = e->next)
-+ if (!bacmp(&e->info.bdaddr, bdaddr))
-+ break;
-+ return e;
-+}
-
-- if (hdev->sent_cmd) {
-- kfree_skb(hdev->sent_cmd);
-- hdev->sent_cmd = NULL;
-- }
-+void inquiry_cache_update(struct hci_dev *hdev, inquiry_info *info)
-+{
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ struct inquiry_entry *e;
-
-- hdev->close(hdev);
-- }
-+ BT_DBG("cache %p, %s", cache, batostr(&info->bdaddr));
-
--done:
-- hci_req_unlock(hdev);
-- hci_dev_put(hdev);
-+ if (!(e = inquiry_cache_lookup(hdev, &info->bdaddr))) {
-+ /* Entry not in the cache. Add new one. */
-+ if (!(e = kmalloc(sizeof(struct inquiry_entry), GFP_ATOMIC)))
-+ return;
-+ memset(e, 0, sizeof(struct inquiry_entry));
-+ e->next = cache->list;
-+ cache->list = e;
-+ }
-
-- return ret;
-+ memcpy(&e->info, info, sizeof(inquiry_info));
-+ e->timestamp = jiffies;
-+ cache->timestamp = jiffies;
- }
-
--int hci_dev_close(__u16 dev)
-+int inquiry_cache_dump(struct hci_dev *hdev, int num, __u8 *buf)
- {
-- struct hci_dev *hdev;
--
-- if (!(hdev = hci_dev_get(dev)))
-- return -ENODEV;
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ inquiry_info *info = (inquiry_info *) buf;
-+ struct inquiry_entry *e;
-+ int copied = 0;
-
-- DBG("%s %p", hdev->name, hdev);
-+ for (e = cache->list; e && copied < num; e = e->next, copied++)
-+ memcpy(info++, &e->info, sizeof(inquiry_info));
-
-- hci_req_cancel(hdev, ENODEV);
-- hci_req_lock(hdev);
-+ BT_DBG("cache %p, copied %d", cache, copied);
-+ return copied;
-+}
-
-- if (!(hdev->flags & HCI_UP))
-- goto done;
-+static void hci_inq_req(struct hci_dev *hdev, unsigned long opt)
-+{
-+ struct hci_inquiry_req *ir = (struct hci_inquiry_req *) opt;
-+ inquiry_cp ic;
-
-- /* Kill RX and TX tasks */
-- tasklet_kill(&hdev->rx_task);
-- tasklet_kill(&hdev->tx_task);
-+ BT_DBG("%s", hdev->name);
-
-- inquiry_cache_flush(&hdev->inq_cache);
-+ if (test_bit(HCI_INQUIRY, &hdev->flags))
-+ return;
-
-- hci_conn_hash_flush(hdev);
-+ /* Start Inquiry */
-+ memcpy(&ic.lap, &ir->lap, 3);
-+ ic.length = ir->length;
-+ ic.num_rsp = ir->num_rsp;
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_INQUIRY, INQUIRY_CP_SIZE, &ic);
-+}
-
-- /* Clear flags */
-- hdev->flags &= HCI_SOCK;
-- hdev->flags |= HCI_NORMAL;
-+int hci_inquiry(unsigned long arg)
-+{
-+ struct hci_inquiry_req ir;
-+ struct hci_dev *hdev;
-+ int err = 0, do_inquiry = 0, max_rsp;
-+ long timeo;
-+ __u8 *buf, *ptr;
-
-+ ptr = (void *) arg;
-+ if (copy_from_user(&ir, ptr, sizeof(ir)))
-+ return -EFAULT;
-+
-+ if (!(hdev = hci_dev_get(ir.dev_id)))
-+ return -ENODEV;
-+
-+ hci_dev_lock_bh(hdev);
-+ if (inquiry_cache_age(hdev) > INQUIRY_CACHE_AGE_MAX ||
-+ inquiry_cache_empty(hdev) ||
-+ ir.flags & IREQ_CACHE_FLUSH) {
-+ inquiry_cache_flush(hdev);
-+ do_inquiry = 1;
-+ }
-+ hci_dev_unlock_bh(hdev);
-+
-+ timeo = ir.length * 2 * HZ;
-+ if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0)
-+ goto done;
-+
-+ /* for unlimited number of responses we will use buffer with 255 entries */
-+ max_rsp = (ir.num_rsp == 0) ? 255 : ir.num_rsp;
-+
-+ /* cache_dump can't sleep. Therefore we allocate temp buffer and then
-+ * copy it to the user space.
-+ */
-+ if (!(buf = kmalloc(sizeof(inquiry_info) * max_rsp, GFP_KERNEL))) {
-+ err = -ENOMEM;
-+ goto done;
-+ }
-+
-+ hci_dev_lock_bh(hdev);
-+ ir.num_rsp = inquiry_cache_dump(hdev, max_rsp, buf);
-+ hci_dev_unlock_bh(hdev);
-+
-+ BT_DBG("num_rsp %d", ir.num_rsp);
-+
-+ if (!verify_area(VERIFY_WRITE, ptr, sizeof(ir) +
-+ (sizeof(inquiry_info) * ir.num_rsp))) {
-+ copy_to_user(ptr, &ir, sizeof(ir));
-+ ptr += sizeof(ir);
-+ copy_to_user(ptr, buf, sizeof(inquiry_info) * ir.num_rsp);
-+ } else
-+ err = -EFAULT;
-+
-+ kfree(buf);
-+
-+done:
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
-+/* ---- HCI ioctl helpers ---- */
-+
-+int hci_dev_open(__u16 dev)
-+{
-+ struct hci_dev *hdev;
-+ int ret = 0;
-+
-+ if (!(hdev = hci_dev_get(dev)))
-+ return -ENODEV;
-+
-+ BT_DBG("%s %p", hdev->name, hdev);
-+
-+ hci_req_lock(hdev);
-+
-+ if (test_bit(HCI_UP, &hdev->flags)) {
-+ ret = -EALREADY;
-+ goto done;
-+ }
-+
-+ if (hdev->open(hdev)) {
-+ ret = -EIO;
-+ goto done;
-+ }
-+
-+ if (!test_bit(HCI_RAW, &hdev->flags)) {
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ set_bit(HCI_INIT, &hdev->flags);
-+
-+ //__hci_request(hdev, hci_reset_req, 0, HZ);
-+ ret = __hci_request(hdev, hci_init_req, 0, HCI_INIT_TIMEOUT);
-+
-+ clear_bit(HCI_INIT, &hdev->flags);
-+ }
-+
-+ if (!ret) {
-+ set_bit(HCI_UP, &hdev->flags);
-+ hci_notify(hdev, HCI_DEV_UP);
-+ } else {
-+ /* Init failed, cleanup */
-+ tasklet_kill(&hdev->rx_task);
-+ tasklet_kill(&hdev->tx_task);
-+ tasklet_kill(&hdev->cmd_task);
-+
-+ skb_queue_purge(&hdev->cmd_q);
-+ skb_queue_purge(&hdev->rx_q);
-+
-+ if (hdev->flush)
-+ hdev->flush(hdev);
-+
-+ if (hdev->sent_cmd) {
-+ kfree_skb(hdev->sent_cmd);
-+ hdev->sent_cmd = NULL;
-+ }
-+
-+ hdev->close(hdev);
-+ hdev->flags = 0;
-+ }
-+
-+done:
-+ hci_req_unlock(hdev);
-+ hci_dev_put(hdev);
-+ return ret;
-+}
-+
-+static int hci_dev_do_close(struct hci_dev *hdev)
-+{
-+ BT_DBG("%s %p", hdev->name, hdev);
-+
-+ hci_req_cancel(hdev, ENODEV);
-+ hci_req_lock(hdev);
-+
-+ if (!test_and_clear_bit(HCI_UP, &hdev->flags)) {
-+ hci_req_unlock(hdev);
-+ return 0;
-+ }
-+
-+ /* Kill RX and TX tasks */
-+ tasklet_kill(&hdev->rx_task);
-+ tasklet_kill(&hdev->tx_task);
-+
-+ hci_dev_lock_bh(hdev);
-+ inquiry_cache_flush(hdev);
-+ hci_conn_hash_flush(hdev);
-+ hci_dev_unlock_bh(hdev);
-+
- hci_notify(hdev, HCI_DEV_DOWN);
-
- if (hdev->flush)
-@@ -586,9 +548,9 @@
- /* Reset device */
- skb_queue_purge(&hdev->cmd_q);
- atomic_set(&hdev->cmd_cnt, 1);
-- hdev->flags |= HCI_INIT;
-- __hci_request(hdev, hci_reset_req, 0, HZ);
-- hdev->flags &= ~HCI_INIT;
-+ set_bit(HCI_INIT, &hdev->flags);
-+ __hci_request(hdev, hci_reset_req, 0, HZ/4);
-+ clear_bit(HCI_INIT, &hdev->flags);
-
- /* Kill cmd task */
- tasklet_kill(&hdev->cmd_task);
-@@ -605,17 +567,28 @@
- }
-
- /* After this point our queues are empty
-- * and no tasks are scheduled.
-- */
-+ * and no tasks are scheduled. */
- hdev->close(hdev);
-
--done:
-- hci_req_unlock(hdev);
-- hci_dev_put(hdev);
-+ /* Clear flags */
-+ hdev->flags = 0;
-
-+ hci_req_unlock(hdev);
- return 0;
- }
-
-+int hci_dev_close(__u16 dev)
-+{
-+ struct hci_dev *hdev;
-+ int err;
-+
-+ if (!(hdev = hci_dev_get(dev)))
-+ return -ENODEV;
-+ err = hci_dev_do_close(hdev);
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
- int hci_dev_reset(__u16 dev)
- {
- struct hci_dev *hdev;
-@@ -627,16 +600,17 @@
- hci_req_lock(hdev);
- tasklet_disable(&hdev->tx_task);
-
-- if (!(hdev->flags & HCI_UP))
-+ if (!test_bit(HCI_UP, &hdev->flags))
- goto done;
-
- /* Drop queues */
- skb_queue_purge(&hdev->rx_q);
- skb_queue_purge(&hdev->cmd_q);
-
-- inquiry_cache_flush(&hdev->inq_cache);
--
-+ hci_dev_lock_bh(hdev);
-+ inquiry_cache_flush(hdev);
- hci_conn_hash_flush(hdev);
-+ hci_dev_unlock_bh(hdev);
-
- if (hdev->flush)
- hdev->flush(hdev);
-@@ -650,7 +624,6 @@
- tasklet_enable(&hdev->tx_task);
- hci_req_unlock(hdev);
- hci_dev_put(hdev);
--
- return ret;
- }
-
-@@ -669,30 +642,11 @@
- return ret;
- }
-
--int hci_dev_setauth(unsigned long arg)
--{
-- struct hci_dev *hdev;
-- struct hci_dev_req dr;
-- int ret = 0;
--
-- if (copy_from_user(&dr, (void *) arg, sizeof(dr)))
-- return -EFAULT;
--
-- if (!(hdev = hci_dev_get(dr.dev_id)))
-- return -ENODEV;
--
-- ret = hci_request(hdev, hci_auth_req, dr.dev_opt, HCI_INIT_TIMEOUT);
--
-- hci_dev_put(hdev);
--
-- return ret;
--}
--
--int hci_dev_setscan(unsigned long arg)
-+int hci_dev_cmd(unsigned int cmd, unsigned long arg)
- {
- struct hci_dev *hdev;
- struct hci_dev_req dr;
-- int ret = 0;
-+ int err = 0;
-
- if (copy_from_user(&dr, (void *) arg, sizeof(dr)))
- return -EFAULT;
-@@ -700,75 +654,105 @@
- if (!(hdev = hci_dev_get(dr.dev_id)))
- return -ENODEV;
-
-- ret = hci_request(hdev, hci_scan_req, dr.dev_opt, HCI_INIT_TIMEOUT);
--
-- hci_dev_put(hdev);
-+ switch (cmd) {
-+ case HCISETAUTH:
-+ err = hci_request(hdev, hci_auth_req, dr.dev_opt, HCI_INIT_TIMEOUT);
-+ break;
-
-- return ret;
--}
-+ case HCISETENCRYPT:
-+ if (!lmp_encrypt_capable(hdev)) {
-+ err = -EOPNOTSUPP;
-+ break;
-+ }
-
--int hci_dev_setptype(unsigned long arg)
--{
-- struct hci_dev *hdev;
-- struct hci_dev_req dr;
-- int ret = 0;
-+ if (!test_bit(HCI_AUTH, &hdev->flags)) {
-+ /* Auth must be enabled first */
-+ err = hci_request(hdev, hci_auth_req,
-+ dr.dev_opt, HCI_INIT_TIMEOUT);
-+ if (err)
-+ break;
-+ }
-+
-+ err = hci_request(hdev, hci_encrypt_req,
-+ dr.dev_opt, HCI_INIT_TIMEOUT);
-+ break;
-+
-+ case HCISETSCAN:
-+ err = hci_request(hdev, hci_scan_req, dr.dev_opt, HCI_INIT_TIMEOUT);
-+ break;
-+
-+ case HCISETPTYPE:
-+ hdev->pkt_type = (__u16) dr.dev_opt;
-+ break;
-+
-+ case HCISETLINKPOL:
-+ hdev->link_policy = (__u16) dr.dev_opt;
-+ break;
-
-- if (copy_from_user(&dr, (void *) arg, sizeof(dr)))
-- return -EFAULT;
-+ case HCISETLINKMODE:
-+ hdev->link_mode = ((__u16) dr.dev_opt) & (HCI_LM_MASTER | HCI_LM_ACCEPT);
-+ break;
-
-- if (!(hdev = hci_dev_get(dr.dev_id)))
-- return -ENODEV;
-+ case HCISETACLMTU:
-+ hdev->acl_mtu = *((__u16 *)&dr.dev_opt + 1);
-+ hdev->acl_pkts = *((__u16 *)&dr.dev_opt + 0);
-+ break;
-
-- hdev->pkt_type = (__u16) dr.dev_opt;
-+ case HCISETSCOMTU:
-+ hdev->sco_mtu = *((__u16 *)&dr.dev_opt + 1);
-+ hdev->sco_pkts = *((__u16 *)&dr.dev_opt + 0);
-+ break;
-
-+ default:
-+ err = -EINVAL;
-+ break;
-+ }
- hci_dev_put(hdev);
--
-- return ret;
-+ return err;
- }
-
--int hci_dev_list(unsigned long arg)
-+int hci_get_dev_list(unsigned long arg)
- {
- struct hci_dev_list_req *dl;
- struct hci_dev_req *dr;
-- struct hci_dev *hdev;
-- int i, n, size;
-+ struct list_head *p;
-+ int n = 0, size, err;
- __u16 dev_num;
-
- if (get_user(dev_num, (__u16 *) arg))
- return -EFAULT;
-
-- /* Avoid long loop, overflow */
-- if (dev_num > 2048)
-+ if (!dev_num || dev_num > (PAGE_SIZE * 2) / sizeof(*dr))
- return -EINVAL;
--
-- size = dev_num * sizeof(struct hci_dev_req) + sizeof(__u16);
-
-- if (verify_area(VERIFY_WRITE, (void *) arg, size))
-- return -EFAULT;
-+ size = sizeof(*dl) + dev_num * sizeof(*dr);
-
- if (!(dl = kmalloc(size, GFP_KERNEL)))
- return -ENOMEM;
-+
- dr = dl->dev_req;
-
-- spin_lock_bh(&hdev_list_lock);
-- for (i = 0, n = 0; i < HCI_MAX_DEV && n < dev_num; i++) {
-- if ((hdev = hdev_list[i])) {
-- (dr + n)->dev_id = hdev->id;
-- (dr + n)->dev_opt = hdev->flags;
-- n++;
-- }
-+ read_lock_bh(&hdev_list_lock);
-+ list_for_each(p, &hdev_list) {
-+ struct hci_dev *hdev;
-+ hdev = list_entry(p, struct hci_dev, list);
-+ (dr + n)->dev_id = hdev->id;
-+ (dr + n)->dev_opt = hdev->flags;
-+ if (++n >= dev_num)
-+ break;
- }
-- spin_unlock_bh(&hdev_list_lock);
-+ read_unlock_bh(&hdev_list_lock);
-
- dl->dev_num = n;
-- size = n * sizeof(struct hci_dev_req) + sizeof(__u16);
-+ size = sizeof(*dl) + n * sizeof(*dr);
-
-- copy_to_user((void *) arg, dl, size);
-+ err = copy_to_user((void *) arg, dl, size);
-+ kfree(dl);
-
-- return 0;
-+ return err ? -EFAULT : 0;
- }
-
--int hci_dev_info(unsigned long arg)
-+int hci_get_dev_info(unsigned long arg)
- {
- struct hci_dev *hdev;
- struct hci_dev_info di;
-@@ -786,9 +770,11 @@
- di.flags = hdev->flags;
- di.pkt_type = hdev->pkt_type;
- di.acl_mtu = hdev->acl_mtu;
-- di.acl_max = hdev->acl_max;
-+ di.acl_pkts = hdev->acl_pkts;
- di.sco_mtu = hdev->sco_mtu;
-- di.sco_max = hdev->sco_max;
-+ di.sco_pkts = hdev->sco_pkts;
-+ di.link_policy = hdev->link_policy;
-+ di.link_mode = hdev->link_mode;
-
- memcpy(&di.stat, &hdev->stat, sizeof(di.stat));
- memcpy(&di.features, &hdev->features, sizeof(di.features));
-@@ -801,258 +787,168 @@
- return err;
- }
-
--__u32 hci_dev_setmode(struct hci_dev *hdev, __u32 mode)
--{
-- __u32 omode = hdev->flags & HCI_MODE_MASK;
--
-- hdev->flags &= ~HCI_MODE_MASK;
-- hdev->flags |= (mode & HCI_MODE_MASK);
-
-- return omode;
--}
-+/* ---- Interface to HCI drivers ---- */
-
--__u32 hci_dev_getmode(struct hci_dev *hdev)
-+/* Register HCI device */
-+int hci_register_dev(struct hci_dev *hdev)
- {
-- return hdev->flags & HCI_MODE_MASK;
--}
-+ struct list_head *head = &hdev_list, *p;
-+ int id = 0;
-
--int hci_conn_list(unsigned long arg)
--{
-- struct hci_conn_list_req req, *cl;
-- struct hci_conn_info *ci;
-- struct hci_dev *hdev;
-- struct list_head *p;
-- int n = 0, size;
-+ BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
-
-- if (copy_from_user(&req, (void *) arg, sizeof(req)))
-- return -EFAULT;
-+ if (!hdev->open || !hdev->close || !hdev->destruct)
-+ return -EINVAL;
-
-- if (!(hdev = hci_dev_get(req.dev_id)))
-- return -ENODEV;
-+ write_lock_bh(&hdev_list_lock);
-
-- /* Set a limit to avoid overlong loops, and also numeric overflow - AC */
-- if(req.conn_num < 2048)
-- return -EINVAL;
-+ /* Find first available device id */
-+ list_for_each(p, &hdev_list) {
-+ if (list_entry(p, struct hci_dev, list)->id != id)
-+ break;
-+ head = p; id++;
-+ }
-
-- size = req.conn_num * sizeof(struct hci_conn_info) + sizeof(req);
-+ sprintf(hdev->name, "hci%d", id);
-+ hdev->id = id;
-+ list_add(&hdev->list, head);
-
-- if (!(cl = kmalloc(size, GFP_KERNEL)))
-- return -ENOMEM;
-- ci = cl->conn_info;
--
-- local_bh_disable();
-- conn_hash_lock(&hdev->conn_hash);
-- list_for_each(p, &hdev->conn_hash.list) {
-- register struct hci_conn *c;
-- c = list_entry(p, struct hci_conn, list);
-+ atomic_set(&hdev->refcnt, 1);
-+ spin_lock_init(&hdev->lock);
-+
-+ hdev->flags = 0;
-+ hdev->pkt_type = (HCI_DM1 | HCI_DH1 | HCI_HV1);
-+ hdev->link_mode = (HCI_LM_ACCEPT);
-
-- (ci + n)->handle = c->handle;
-- bacpy(&(ci + n)->bdaddr, &c->dst);
-- n++;
-- }
-- conn_hash_unlock(&hdev->conn_hash);
-- local_bh_enable();
--
-- cl->dev_id = hdev->id;
-- cl->conn_num = n;
-- size = n * sizeof(struct hci_conn_info) + sizeof(req);
-+ tasklet_init(&hdev->cmd_task, hci_cmd_task,(unsigned long) hdev);
-+ tasklet_init(&hdev->rx_task, hci_rx_task, (unsigned long) hdev);
-+ tasklet_init(&hdev->tx_task, hci_tx_task, (unsigned long) hdev);
-
-- hci_dev_put(hdev);
-+ skb_queue_head_init(&hdev->rx_q);
-+ skb_queue_head_init(&hdev->cmd_q);
-+ skb_queue_head_init(&hdev->raw_q);
-
-- if(copy_to_user((void *) arg, cl, size))
-- return -EFAULT;
-- return 0;
--}
-+ init_waitqueue_head(&hdev->req_wait_q);
-+ init_MUTEX(&hdev->req_lock);
-
--int hci_inquiry(unsigned long arg)
--{
-- struct inquiry_cache *cache;
-- struct hci_inquiry_req ir;
-- struct hci_dev *hdev;
-- int err = 0, do_inquiry = 0;
-- long timeo;
-- __u8 *buf, *ptr;
-+ inquiry_cache_init(hdev);
-
-- ptr = (void *) arg;
-- if (copy_from_user(&ir, ptr, sizeof(ir)))
-- return -EFAULT;
-+ conn_hash_init(hdev);
-
-- if (!(hdev = hci_dev_get(ir.dev_id)))
-- return -ENODEV;
-+ memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));
-
-- cache = &hdev->inq_cache;
-+ atomic_set(&hdev->promisc, 0);
-
-- inquiry_cache_lock(cache);
-- if (inquiry_cache_age(cache) > INQUIRY_CACHE_AGE_MAX || ir.flags & IREQ_CACHE_FLUSH) {
-- inquiry_cache_flush(cache);
-- do_inquiry = 1;
-- }
-- inquiry_cache_unlock(cache);
-+ MOD_INC_USE_COUNT;
-
-- /* Limit inquiry time, also avoid overflows */
-+ write_unlock_bh(&hdev_list_lock);
-
-- if(ir.length > 2048 || ir.num_rsp > 2048)
-- {
-- err = -EINVAL;
-- goto done;
-- }
-+ hci_notify(hdev, HCI_DEV_REG);
-+ hci_run_hotplug(hdev->name, "register");
-
-- timeo = ir.length * 2 * HZ;
-- if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0)
-- goto done;
-+ return id;
-+}
-
-- /* cache_dump can't sleep. Therefore we allocate temp buffer and then
-- * copy it to the user space.
-- */
-- if (!(buf = kmalloc(sizeof(inquiry_info) * ir.num_rsp, GFP_KERNEL))) {
-- err = -ENOMEM;
-- goto done;
-- }
-- ir.num_rsp = inquiry_cache_dump(cache, ir.num_rsp, buf);
-+/* Unregister HCI device */
-+int hci_unregister_dev(struct hci_dev *hdev)
-+{
-+ BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
-
-- DBG("num_rsp %d", ir.num_rsp);
-+ write_lock_bh(&hdev_list_lock);
-+ list_del(&hdev->list);
-+ write_unlock_bh(&hdev_list_lock);
-
-- if (!verify_area(VERIFY_WRITE, ptr, sizeof(ir) + (sizeof(inquiry_info) * ir.num_rsp))) {
-- copy_to_user(ptr, &ir, sizeof(ir));
-- ptr += sizeof(ir);
-- copy_to_user(ptr, buf, sizeof(inquiry_info) * ir.num_rsp);
-- } else
-- err = -EFAULT;
-+ hci_dev_do_close(hdev);
-
-- kfree(buf);
-+ hci_notify(hdev, HCI_DEV_UNREG);
-+ hci_run_hotplug(hdev->name, "unregister");
-
--done:
- hci_dev_put(hdev);
-
-- return err;
-+ MOD_DEC_USE_COUNT;
-+ return 0;
- }
-
--/* Interface to HCI drivers */
--
--/* Register HCI device */
--int hci_register_dev(struct hci_dev *hdev)
-+/* Suspend HCI device */
-+int hci_suspend_dev(struct hci_dev *hdev)
- {
-- int i;
-+ hci_notify(hdev, HCI_DEV_SUSPEND);
-+ hci_run_hotplug(hdev->name, "suspend");
-+ return 0;
-+}
-
-- DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
-+/* Resume HCI device */
-+int hci_resume_dev(struct hci_dev *hdev)
-+{
-+ hci_notify(hdev, HCI_DEV_RESUME);
-+ hci_run_hotplug(hdev->name, "resume");
-+ return 0;
-+}
-
-- /* Find free slot */
-- spin_lock_bh(&hdev_list_lock);
-- for (i = 0; i < HCI_MAX_DEV; i++) {
-- if (!hdev_list[i]) {
-- hdev_list[i] = hdev;
--
-- sprintf(hdev->name, "hci%d", i);
-- atomic_set(&hdev->refcnt, 0);
-- hdev->id = i;
-- hdev->flags = HCI_NORMAL;
--
-- hdev->pkt_type = (HCI_DM1 | HCI_DH1);
--
-- tasklet_init(&hdev->cmd_task, hci_cmd_task, (unsigned long) hdev);
-- tasklet_init(&hdev->rx_task, hci_rx_task, (unsigned long) hdev);
-- tasklet_init(&hdev->tx_task, hci_tx_task, (unsigned long) hdev);
--
-- skb_queue_head_init(&hdev->rx_q);
-- skb_queue_head_init(&hdev->cmd_q);
-- skb_queue_head_init(&hdev->raw_q);
--
-- init_waitqueue_head(&hdev->req_wait_q);
-- init_MUTEX(&hdev->req_lock);
--
-- inquiry_cache_init(&hdev->inq_cache);
--
-- conn_hash_init(&hdev->conn_hash);
--
-- memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));
--
-- hci_notify(hdev, HCI_DEV_REG);
--
-- MOD_INC_USE_COUNT;
-- break;
-- }
-- }
-- spin_unlock_bh(&hdev_list_lock);
--
-- return (i == HCI_MAX_DEV) ? -1 : i;
--}
--
--/* Unregister HCI device */
--int hci_unregister_dev(struct hci_dev *hdev)
-+/* Receive frame from HCI drivers */
-+int hci_recv_frame(struct sk_buff *skb)
- {
-- int i;
--
-- DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
--
-- if (hdev->flags & HCI_UP)
-- hci_dev_close(hdev->id);
-+ struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-
-- /* Find device slot */
-- spin_lock(&hdev_list_lock);
-- for (i = 0; i < HCI_MAX_DEV; i++) {
-- if (hdev_list[i] == hdev) {
-- hdev_list[i] = NULL;
-- MOD_DEC_USE_COUNT;
-- break;
-- }
-+ if (!hdev || (!test_bit(HCI_UP, &hdev->flags) &&
-+ !test_bit(HCI_INIT, &hdev->flags)) ) {
-+ kfree_skb(skb);
-+ return -1;
- }
-- spin_unlock(&hdev_list_lock);
-
-- hci_notify(hdev, HCI_DEV_UNREG);
--
-- /* Sleep while device is in use */
-- while (atomic_read(&hdev->refcnt)) {
-- int sleep_cnt = 100;
-+ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-
-- DBG("%s sleeping on lock %d", hdev->name, atomic_read(&hdev->refcnt));
-+ /* Incomming skb */
-+ bluez_cb(skb)->incomming = 1;
-
-- sleep_on_timeout(&hdev->req_wait_q, HZ*10);
-- if (!(--sleep_cnt))
-- break;
-- }
-+ /* Time stamp */
-+ do_gettimeofday(&skb->stamp);
-
-+ /* Queue frame for rx task */
-+ skb_queue_tail(&hdev->rx_q, skb);
-+ hci_sched_rx(hdev);
- return 0;
- }
-
--/* Interface to upper protocols */
-+/* ---- Interface to upper protocols ---- */
-
- /* Register/Unregister protocols.
-- * hci_task_lock is used to ensure that no tasks are running.
-- */
--int hci_register_proto(struct hci_proto *hproto)
-+ * hci_task_lock is used to ensure that no tasks are running. */
-+int hci_register_proto(struct hci_proto *hp)
- {
- int err = 0;
-
-- DBG("%p name %s", hproto, hproto->name);
-+ BT_DBG("%p name %s id %d", hp, hp->name, hp->id);
-
-- if (hproto->id >= HCI_MAX_PROTO)
-+ if (hp->id >= HCI_MAX_PROTO)
- return -EINVAL;
-
- write_lock_bh(&hci_task_lock);
-
-- if (!hproto_list[hproto->id])
-- hproto_list[hproto->id] = hproto;
-+ if (!hci_proto[hp->id])
-+ hci_proto[hp->id] = hp;
- else
-- err = -1;
-+ err = -EEXIST;
-
- write_unlock_bh(&hci_task_lock);
-
- return err;
- }
-
--int hci_unregister_proto(struct hci_proto *hproto)
-+int hci_unregister_proto(struct hci_proto *hp)
- {
- int err = 0;
-
-- DBG("%p name %s", hproto, hproto->name);
-+ BT_DBG("%p name %s id %d", hp, hp->name, hp->id);
-
-- if (hproto->id > HCI_MAX_PROTO)
-+ if (hp->id >= HCI_MAX_PROTO)
- return -EINVAL;
-
- write_lock_bh(&hci_task_lock);
-
-- if (hproto_list[hproto->id])
-- hproto_list[hproto->id] = NULL;
-+ if (hci_proto[hp->id])
-+ hci_proto[hp->id] = NULL;
- else
- err = -ENOENT;
-
-@@ -1070,10 +966,14 @@
- return -ENODEV;
- }
-
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+
-+ if (atomic_read(&hdev->promisc)) {
-+ /* Time stamp */
-+ do_gettimeofday(&skb->stamp);
-
-- if (hdev->flags & HCI_SOCK)
- hci_send_to_sock(hdev, skb);
-+ }
-
- /* Get rid of skb owner, prior to sending to the driver. */
- skb_orphan(skb);
-@@ -1081,128 +981,6 @@
- return hdev->send(skb);
- }
-
--/* Connection scheduler */
--static inline struct hci_conn *hci_low_sent(struct hci_dev *hdev, __u8 type, int *quote)
--{
-- struct conn_hash *h = &hdev->conn_hash;
-- struct hci_conn *conn = NULL;
-- int num = 0, min = 0xffff;
-- struct list_head *p;
--
-- conn_hash_lock(h);
-- list_for_each(p, &h->list) {
-- register struct hci_conn *c;
--
-- c = list_entry(p, struct hci_conn, list);
--
-- if (c->type != type || skb_queue_empty(&c->data_q))
-- continue;
-- num++;
--
-- if (c->sent < min) {
-- min = c->sent;
-- conn = c;
-- }
-- }
-- conn_hash_unlock(h);
--
-- if (conn) {
-- int q = hdev->acl_cnt / num;
-- *quote = q ? q : 1;
-- } else
-- *quote = 0;
--
-- DBG("conn %p quote %d", conn, *quote);
--
-- return conn;
--}
--
--static inline void hci_sched_acl(struct hci_dev *hdev)
--{
-- struct hci_conn *conn;
-- struct sk_buff *skb;
-- int quote;
--
-- DBG("%s", hdev->name);
--
-- while (hdev->acl_cnt && (conn = hci_low_sent(hdev, ACL_LINK, &quote))) {
-- while (quote && (skb = skb_dequeue(&conn->data_q))) {
-- DBG("skb %p len %d", skb, skb->len);
--
-- hci_send_frame(skb);
--
-- conn->sent++;
-- hdev->acl_cnt--;
-- quote--;
-- }
-- }
--}
--
--/* Schedule SCO */
--static inline void hci_sched_sco(struct hci_dev *hdev)
--{
-- /* FIXME: For now we queue SCO packets to the raw queue
--
-- while (hdev->sco_cnt && (skb = skb_dequeue(&conn->data_q))) {
-- hci_send_frame(skb);
-- conn->sco_sent++;
-- hdev->sco_cnt--;
-- }
-- */
--}
--
--/* Get data from the previously sent command */
--static void * hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf)
--{
-- hci_command_hdr *hc;
--
-- if (!hdev->sent_cmd)
-- return NULL;
--
-- hc = (void *) hdev->sent_cmd->data;
--
-- if (hc->opcode != __cpu_to_le16(cmd_opcode_pack(ogf, ocf)))
-- return NULL;
--
-- DBG("%s ogf 0x%x ocf 0x%x", hdev->name, ogf, ocf);
--
-- return hdev->sent_cmd->data + HCI_COMMAND_HDR_SIZE;
--}
--
--/* Send raw HCI frame */
--int hci_send_raw(struct sk_buff *skb)
--{
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
--
-- if (!hdev) {
-- kfree_skb(skb);
-- return -ENODEV;
-- }
--
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
--
-- if (hdev->flags & HCI_NORMAL) {
-- /* Queue frame according it's type */
-- switch (skb->pkt_type) {
-- case HCI_COMMAND_PKT:
-- skb_queue_tail(&hdev->cmd_q, skb);
-- hci_sched_cmd(hdev);
-- return 0;
--
-- case HCI_ACLDATA_PKT:
-- case HCI_SCODATA_PKT:
-- /* FIXME:
-- * Check header here and queue to apropriate connection.
-- */
-- break;
-- }
-- }
--
-- skb_queue_tail(&hdev->raw_q, skb);
-- hci_sched_tx(hdev);
-- return 0;
--}
--
- /* Send HCI command */
- int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void *param)
- {
-@@ -1210,10 +988,10 @@
- hci_command_hdr *hc;
- struct sk_buff *skb;
-
-- DBG("%s ogf 0x%x ocf 0x%x plen %d", hdev->name, ogf, ocf, plen);
-+ BT_DBG("%s ogf 0x%x ocf 0x%x plen %d", hdev->name, ogf, ocf, plen);
-
- if (!(skb = bluez_skb_alloc(len, GFP_ATOMIC))) {
-- ERR("%s Can't allocate memory for HCI command", hdev->name);
-+ BT_ERR("%s Can't allocate memory for HCI command", hdev->name);
- return -ENOMEM;
- }
-
-@@ -1224,7 +1002,7 @@
- if (plen)
- memcpy(skb_put(skb, plen), param, plen);
-
-- DBG("skb len %d", skb->len);
-+ BT_DBG("skb len %d", skb->len);
-
- skb->pkt_type = HCI_COMMAND_PKT;
- skb->dev = (void *) hdev;
-@@ -1234,10 +1012,28 @@
- return 0;
- }
-
-+/* Get data from the previously sent command */
-+void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf)
-+{
-+ hci_command_hdr *hc;
-+
-+ if (!hdev->sent_cmd)
-+ return NULL;
-+
-+ hc = (void *) hdev->sent_cmd->data;
-+
-+ if (hc->opcode != __cpu_to_le16(cmd_opcode_pack(ogf, ocf)))
-+ return NULL;
-+
-+ BT_DBG("%s ogf 0x%x ocf 0x%x", hdev->name, ogf, ocf);
-+
-+ return hdev->sent_cmd->data + HCI_COMMAND_HDR_SIZE;
-+}
-+
- /* Send ACL data */
- static void hci_add_acl_hdr(struct sk_buff *skb, __u16 handle, __u16 flags)
- {
-- int len = skb->len;
-+ int len = skb->len;
- hci_acl_hdr *ah;
-
- ah = (hci_acl_hdr *) skb_push(skb, HCI_ACL_HDR_SIZE);
-@@ -1252,7 +1048,7 @@
- struct hci_dev *hdev = conn->hdev;
- struct sk_buff *list;
-
-- DBG("%s conn %p flags 0x%x", hdev->name, conn, flags);
-+ BT_DBG("%s conn %p flags 0x%x", hdev->name, conn, flags);
-
- skb->dev = (void *) hdev;
- skb->pkt_type = HCI_ACLDATA_PKT;
-@@ -1260,12 +1056,12 @@
-
- if (!(list = skb_shinfo(skb)->frag_list)) {
- /* Non fragmented */
-- DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len);
-+ BT_DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len);
-
- skb_queue_tail(&conn->data_q, skb);
- } else {
- /* Fragmented */
-- DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-+ BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-
- skb_shinfo(skb)->frag_list = NULL;
-
-@@ -1280,7 +1076,7 @@
- skb->pkt_type = HCI_ACLDATA_PKT;
- hci_add_acl_hdr(skb, conn->handle, flags | ACL_CONT);
-
-- DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-+ BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-
- __skb_queue_tail(&conn->data_q, skb);
- } while (list);
-@@ -1298,7 +1094,7 @@
- struct hci_dev *hdev = conn->hdev;
- hci_sco_hdr hs;
-
-- DBG("%s len %d", hdev->name, skb->len);
-+ BT_DBG("%s len %d", hdev->name, skb->len);
-
- if (skb->len > hdev->sco_mtu) {
- kfree_skb(skb);
-@@ -1315,544 +1111,136 @@
- skb->pkt_type = HCI_SCODATA_PKT;
- skb_queue_tail(&conn->data_q, skb);
- hci_sched_tx(hdev);
--
- return 0;
- }
-
--/* Handle HCI Event packets */
--
--/* Command Complete OGF LINK_CTL */
--static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command complete: ogf LINK_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Complete OGF LINK_POLICY */
--static void hci_cc_link_policy(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s: Command complete: ogf LINK_POLICY ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Complete OGF HOST_CTL */
--static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
--{
-- __u8 status, param;
-- void *sent;
--
--
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- case OCF_RESET:
-- status = *((__u8 *) skb->data);
--
-- hci_req_complete(hdev, status);
-- break;
--
-- case OCF_SET_EVENT_FLT:
-- status = *((__u8 *) skb->data);
--
-- if (status) {
-- DBG("%s SET_EVENT_FLT failed %d", hdev->name, status);
-- } else {
-- DBG("%s SET_EVENT_FLT succeseful", hdev->name);
-- }
-- break;
--
-- case OCF_WRITE_AUTH_ENABLE:
-- if (!(sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE)))
-- break;
--
-- status = *((__u8 *) skb->data);
-- param = *((__u8 *) sent);
--
-- if (!status) {
-- if (param == AUTH_ENABLED)
-- hdev->flags |= HCI_AUTH;
-- else
-- hdev->flags &= ~HCI_AUTH;
-- }
-- hci_req_complete(hdev, status);
-- break;
--
-- case OCF_WRITE_CA_TIMEOUT:
-- status = *((__u8 *) skb->data);
--
-- if (status) {
-- DBG("%s OCF_WRITE_CA_TIMEOUT failed %d", hdev->name, status);
-- } else {
-- DBG("%s OCF_WRITE_CA_TIMEOUT succeseful", hdev->name);
-- }
-- break;
--
-- case OCF_WRITE_PG_TIMEOUT:
-- status = *((__u8 *) skb->data);
--
-- if (status) {
-- DBG("%s OCF_WRITE_PG_TIMEOUT failed %d", hdev->name, status);
-- } else {
-- DBG("%s: OCF_WRITE_PG_TIMEOUT succeseful", hdev->name);
-- }
-- break;
--
-- case OCF_WRITE_SCAN_ENABLE:
-- if (!(sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE)))
-- break;
-- status = *((__u8 *) skb->data);
-- param = *((__u8 *) sent);
--
-- DBG("param 0x%x", param);
--
-- if (!status) {
-- switch (param) {
-- case IS_ENA_PS_ENA:
-- hdev->flags |= HCI_PSCAN | HCI_ISCAN;
-- break;
--
-- case IS_ENA_PS_DIS:
-- hdev->flags &= ~HCI_PSCAN;
-- hdev->flags |= HCI_ISCAN;
-- break;
-+/* ---- HCI TX task (outgoing data) ---- */
-
-- case IS_DIS_PS_ENA:
-- hdev->flags &= ~HCI_ISCAN;
-- hdev->flags |= HCI_PSCAN;
-- break;
--
-- default:
-- hdev->flags &= ~(HCI_ISCAN | HCI_PSCAN);
-- break;
-- };
-- }
-- hci_req_complete(hdev, status);
-- break;
--
-- default:
-- DBG("%s Command complete: ogf HOST_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Complete OGF INFO_PARAM */
--static void hci_cc_info_param(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+/* HCI Connection scheduler */
-+static inline struct hci_conn *hci_low_sent(struct hci_dev *hdev, __u8 type, int *quote)
- {
-- read_local_features_rp *lf;
-- read_buffer_size_rp *bs;
-- read_bd_addr_rp *ba;
--
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- case OCF_READ_LOCAL_FEATURES:
-- lf = (read_local_features_rp *) skb->data;
--
-- if (lf->status) {
-- DBG("%s READ_LOCAL_FEATURES failed %d", hdev->name, lf->status);
-- break;
-- }
--
-- memcpy(hdev->features, lf->features, sizeof(hdev->features));
--
-- /* Adjust default settings according to features
-- * supported by device. */
-- if (hdev->features[0] & LMP_3SLOT)
-- hdev->pkt_type |= (HCI_DM3 | HCI_DH3);
--
-- if (hdev->features[0] & LMP_5SLOT)
-- hdev->pkt_type |= (HCI_DM5 | HCI_DH5);
--
-- DBG("%s: features 0x%x 0x%x 0x%x", hdev->name, lf->features[0], lf->features[1], lf->features[2]);
--
-- break;
--
-- case OCF_READ_BUFFER_SIZE:
-- bs = (read_buffer_size_rp *) skb->data;
--
-- if (bs->status) {
-- DBG("%s READ_BUFFER_SIZE failed %d", hdev->name, bs->status);
-- break;
-- }
--
-- hdev->acl_mtu = __le16_to_cpu(bs->acl_mtu);
-- hdev->sco_mtu = bs->sco_mtu;
-- hdev->acl_max = hdev->acl_cnt = __le16_to_cpu(bs->acl_max_pkt);
-- hdev->sco_max = hdev->sco_cnt = __le16_to_cpu(bs->sco_max_pkt);
--
-- DBG("%s mtu: acl %d, sco %d max_pkt: acl %d, sco %d", hdev->name,
-- hdev->acl_mtu, hdev->sco_mtu, hdev->acl_max, hdev->sco_max);
-+ struct conn_hash *h = &hdev->conn_hash;
-+ struct hci_conn *conn = NULL;
-+ int num = 0, min = ~0;
-+ struct list_head *p;
-
-- break;
-+ /* We don't have to lock device here. Connections are always
-+ * added and removed with TX task disabled. */
-+ list_for_each(p, &h->list) {
-+ struct hci_conn *c;
-+ c = list_entry(p, struct hci_conn, list);
-
-- case OCF_READ_BD_ADDR:
-- ba = (read_bd_addr_rp *) skb->data;
-+ if (c->type != type || c->state != BT_CONNECTED
-+ || skb_queue_empty(&c->data_q))
-+ continue;
-+ num++;
-
-- if (!ba->status) {
-- bacpy(&hdev->bdaddr, &ba->bdaddr);
-- } else {
-- DBG("%s: READ_BD_ADDR failed %d", hdev->name, ba->status);
-+ if (c->sent < min) {
-+ min = c->sent;
-+ conn = c;
- }
-+ }
-
-- hci_req_complete(hdev, ba->status);
-- break;
-+ if (conn) {
-+ int cnt = (type == ACL_LINK ? hdev->acl_cnt : hdev->sco_cnt);
-+ int q = cnt / num;
-+ *quote = q ? q : 1;
-+ } else
-+ *quote = 0;
-
-- default:
-- DBG("%s Command complete: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-- break;
-- };
-+ BT_DBG("conn %p quote %d", conn, *quote);
-+ return conn;
- }
-
--/* Command Status OGF LINK_CTL */
--static void hci_cs_link_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+static inline void hci_acl_tx_to(struct hci_dev *hdev)
- {
-- struct hci_proto * hp;
--
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- case OCF_CREATE_CONN:
-- if (status) {
-- create_conn_cp *cc = hci_sent_cmd_data(hdev, OGF_LINK_CTL, OCF_CREATE_CONN);
--
-- if (!cc)
-- break;
--
-- DBG("%s Create connection error: status 0x%x %s", hdev->name,
-- status, batostr(&cc->bdaddr));
-+ struct conn_hash *h = &hdev->conn_hash;
-+ struct list_head *p;
-+ struct hci_conn *c;
-
-- /* Notify upper protocols */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_cfm) {
-- tasklet_disable(&hdev->tx_task);
-- hp->connect_cfm(hdev, &cc->bdaddr, status, NULL);
-- tasklet_enable(&hdev->tx_task);
-- }
-- }
-- break;
-+ BT_ERR("%s ACL tx timeout", hdev->name);
-
-- case OCF_INQUIRY:
-- if (status) {
-- DBG("%s Inquiry error: status 0x%x", hdev->name, status);
-- hci_req_complete(hdev, status);
-+ /* Kill stalled connections */
-+ list_for_each(p, &h->list) {
-+ c = list_entry(p, struct hci_conn, list);
-+ if (c->type == ACL_LINK && c->sent) {
-+ BT_ERR("%s killing stalled ACL connection %s",
-+ hdev->name, batostr(&c->dst));
-+ hci_acl_disconn(c, 0x13);
- }
-- break;
--
-- default:
-- DBG("%s Command status: ogf LINK_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Status OGF LINK_POLICY */
--static void hci_cs_link_policy(struct hci_dev *hdev, __u16 ocf, __u8 status)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command status: ogf HOST_POLICY ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Status OGF HOST_CTL */
--static void hci_cs_host_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command status: ogf HOST_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Status OGF INFO_PARAM */
--static void hci_cs_info_param(struct hci_dev *hdev, __u16 ocf, __u8 status)
--{
-- DBG("%s: hci_cs_info_param: ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command status: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Inquiry Complete */
--static void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- __u8 status = *((__u8 *) skb->data);
--
-- DBG("%s status %d", hdev->name, status);
--
-- hci_req_complete(hdev, status);
-+ }
- }
-
--/* Inquiry Result */
--static void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+static inline void hci_sched_acl(struct hci_dev *hdev)
- {
-- inquiry_info *info = (inquiry_info *) (skb->data + 1);
-- int num_rsp = *((__u8 *) skb->data);
--
-- DBG("%s num_rsp %d", hdev->name, num_rsp);
-+ struct hci_conn *conn;
-+ struct sk_buff *skb;
-+ int quote;
-
-- for (; num_rsp; num_rsp--)
-- inquiry_cache_update(&hdev->inq_cache, info++);
--}
-+ BT_DBG("%s", hdev->name);
-
--/* Connect Request */
--static void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- evt_conn_request *cr = (evt_conn_request *) skb->data;
-- struct hci_proto *hp;
-- accept_conn_req_cp ac;
-- int accept = 0;
-+ /* ACL tx timeout must be longer than maximum
-+ * link supervision timeout (40.9 seconds) */
-+ if (!hdev->acl_cnt && (jiffies - hdev->acl_last_tx) > (HZ * 45))
-+ hci_acl_tx_to(hdev);
-
-- DBG("%s Connection request: %s type 0x%x", hdev->name, batostr(&cr->bdaddr), cr->link_type);
-+ while (hdev->acl_cnt && (conn = hci_low_sent(hdev, ACL_LINK, &quote))) {
-+ while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
-+ BT_DBG("skb %p len %d", skb, skb->len);
-+ hci_send_frame(skb);
-+ hdev->acl_last_tx = jiffies;
-
-- /* Notify upper protocols */
-- if (cr->link_type == ACL_LINK) {
-- /* ACL link notify L2CAP */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_ind) {
-- tasklet_disable(&hdev->tx_task);
-- accept = hp->connect_ind(hdev, &cr->bdaddr);
-- tasklet_enable(&hdev->tx_task);
-+ hdev->acl_cnt--;
-+ conn->sent++;
- }
-- } else {
-- /* SCO link (no notification) */
-- /* FIXME: Should be accept it here or let the requester (app) accept it ? */
-- accept = 1;
-- }
--
-- if (accept) {
-- /* Connection accepted by upper layer */
-- bacpy(&ac.bdaddr, &cr->bdaddr);
-- ac.role = 0x01; /* Remain slave */
-- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ACCEPT_CONN_REQ, ACCEPT_CONN_REQ_CP_SIZE, &ac);
-- } else {
-- /* Connection rejected by upper layer */
-- /* FIXME:
-- * Should we use HCI reject here ?
-- */
-- return;
- }
- }
-
--/* Connect Complete */
--static void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+/* Schedule SCO */
-+static inline void hci_sched_sco(struct hci_dev *hdev)
- {
-- evt_conn_complete *cc = (evt_conn_complete *) skb->data;
-- struct hci_conn *conn = NULL;
-- struct hci_proto *hp;
--
-- DBG("%s", hdev->name);
--
-- tasklet_disable(&hdev->tx_task);
--
-- if (!cc->status)
-- conn = hci_conn_add(hdev, __le16_to_cpu(cc->handle), cc->link_type, &cc->bdaddr);
-+ struct hci_conn *conn;
-+ struct sk_buff *skb;
-+ int quote;
-
-- /* Notify upper protocols */
-- if (cc->link_type == ACL_LINK) {
-- /* ACL link notify L2CAP layer */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_cfm)
-- hp->connect_cfm(hdev, &cc->bdaddr, cc->status, conn);
-- } else {
-- /* SCO link (no notification) */
-- }
-+ BT_DBG("%s", hdev->name);
-
-- tasklet_enable(&hdev->tx_task);
--}
-+ while (hdev->sco_cnt && (conn = hci_low_sent(hdev, SCO_LINK, &quote))) {
-+ while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
-+ BT_DBG("skb %p len %d", skb, skb->len);
-+ hci_send_frame(skb);
-
--/* Disconnect Complete */
--static void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- evt_disconn_complete *dc = (evt_disconn_complete *) skb->data;
-- struct hci_conn *conn = NULL;
-- struct hci_proto *hp;
-- __u16 handle = __le16_to_cpu(dc->handle);
--
-- DBG("%s", hdev->name);
--
-- if (!dc->status && (conn = conn_hash_lookup(&hdev->conn_hash, handle))) {
-- tasklet_disable(&hdev->tx_task);
--
-- /* Notify upper protocols */
-- if (conn->type == ACL_LINK) {
-- /* ACL link notify L2CAP layer */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->disconn_ind)
-- hp->disconn_ind(conn, dc->reason);
-- } else {
-- /* SCO link (no notification) */
-+ conn->sent++;
-+ if (conn->sent == ~0)
-+ conn->sent = 0;
- }
--
-- hci_conn_del(hdev, conn);
--
-- tasklet_enable(&hdev->tx_task);
- }
- }
-
--/* Number of completed packets */
--static void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+static void hci_tx_task(unsigned long arg)
- {
-- evt_num_comp_pkts *nc = (evt_num_comp_pkts *) skb->data;
-- __u16 *ptr;
-- int i;
--
-- skb_pull(skb, EVT_NUM_COMP_PKTS_SIZE);
--
-- DBG("%s num_hndl %d", hdev->name, nc->num_hndl);
-+ struct hci_dev *hdev = (struct hci_dev *) arg;
-+ struct sk_buff *skb;
-
-- if (skb->len < nc->num_hndl * 4) {
-- DBG("%s bad parameters", hdev->name);
-- return;
-- }
-+ read_lock(&hci_task_lock);
-
-- tasklet_disable(&hdev->tx_task);
-+ BT_DBG("%s acl %d sco %d", hdev->name, hdev->acl_cnt, hdev->sco_cnt);
-
-- for (i = 0, ptr = (__u16 *) skb->data; i < nc->num_hndl; i++) {
-- struct hci_conn *conn;
-- __u16 handle, count;
-+ /* Schedule queues and send stuff to HCI driver */
-
-- handle = __le16_to_cpu(get_unaligned(ptr++));
-- count = __le16_to_cpu(get_unaligned(ptr++));
-+ hci_sched_acl(hdev);
-
-- hdev->acl_cnt += count;
-+ hci_sched_sco(hdev);
-
-- if ((conn = conn_hash_lookup(&hdev->conn_hash, handle)))
-- conn->sent -= count;
-- }
-+ /* Send next queued raw (unknown type) packet */
-+ while ((skb = skb_dequeue(&hdev->raw_q)))
-+ hci_send_frame(skb);
-
-- tasklet_enable(&hdev->tx_task);
--
-- hci_sched_tx(hdev);
-+ read_unlock(&hci_task_lock);
- }
-
--static inline void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- hci_event_hdr *he = (hci_event_hdr *) skb->data;
-- evt_cmd_status *cs;
-- evt_cmd_complete *ec;
-- __u16 opcode, ocf, ogf;
--
-- skb_pull(skb, HCI_EVENT_HDR_SIZE);
--
-- DBG("%s evt 0x%x", hdev->name, he->evt);
--
-- switch (he->evt) {
-- case EVT_NUM_COMP_PKTS:
-- hci_num_comp_pkts_evt(hdev, skb);
-- break;
--
-- case EVT_INQUIRY_COMPLETE:
-- hci_inquiry_complete_evt(hdev, skb);
-- break;
-
-- case EVT_INQUIRY_RESULT:
-- hci_inquiry_result_evt(hdev, skb);
-- break;
--
-- case EVT_CONN_REQUEST:
-- hci_conn_request_evt(hdev, skb);
-- break;
--
-- case EVT_CONN_COMPLETE:
-- hci_conn_complete_evt(hdev, skb);
-- break;
--
-- case EVT_DISCONN_COMPLETE:
-- hci_disconn_complete_evt(hdev, skb);
-- break;
--
-- case EVT_CMD_STATUS:
-- cs = (evt_cmd_status *) skb->data;
-- skb_pull(skb, EVT_CMD_STATUS_SIZE);
--
-- opcode = __le16_to_cpu(cs->opcode);
-- ogf = cmd_opcode_ogf(opcode);
-- ocf = cmd_opcode_ocf(opcode);
--
-- switch (ogf) {
-- case OGF_INFO_PARAM:
-- hci_cs_info_param(hdev, ocf, cs->status);
-- break;
--
-- case OGF_HOST_CTL:
-- hci_cs_host_ctl(hdev, ocf, cs->status);
-- break;
--
-- case OGF_LINK_CTL:
-- hci_cs_link_ctl(hdev, ocf, cs->status);
-- break;
--
-- case OGF_LINK_POLICY:
-- hci_cs_link_policy(hdev, ocf, cs->status);
-- break;
--
-- default:
-- DBG("%s Command Status OGF %x", hdev->name, ogf);
-- break;
-- };
--
-- if (cs->ncmd) {
-- atomic_set(&hdev->cmd_cnt, 1);
-- if (!skb_queue_empty(&hdev->cmd_q))
-- hci_sched_cmd(hdev);
-- }
-- break;
--
-- case EVT_CMD_COMPLETE:
-- ec = (evt_cmd_complete *) skb->data;
-- skb_pull(skb, EVT_CMD_COMPLETE_SIZE);
--
-- opcode = __le16_to_cpu(ec->opcode);
-- ogf = cmd_opcode_ogf(opcode);
-- ocf = cmd_opcode_ocf(opcode);
--
-- switch (ogf) {
-- case OGF_INFO_PARAM:
-- hci_cc_info_param(hdev, ocf, skb);
-- break;
--
-- case OGF_HOST_CTL:
-- hci_cc_host_ctl(hdev, ocf, skb);
-- break;
--
-- case OGF_LINK_CTL:
-- hci_cc_link_ctl(hdev, ocf, skb);
-- break;
--
-- case OGF_LINK_POLICY:
-- hci_cc_link_policy(hdev, ocf, skb);
-- break;
--
-- default:
-- DBG("%s Command Completed OGF %x", hdev->name, ogf);
-- break;
-- };
--
-- if (ec->ncmd) {
-- atomic_set(&hdev->cmd_cnt, 1);
-- if (!skb_queue_empty(&hdev->cmd_q))
-- hci_sched_cmd(hdev);
-- }
-- break;
-- };
--
-- kfree_skb(skb);
-- hdev->stat.evt_rx++;
--}
-+/* ----- HCI RX task (incomming data proccessing) ----- */
-
- /* ACL data packet */
- static inline void hci_acldata_packet(struct hci_dev *hdev, struct sk_buff *skb)
-@@ -1867,51 +1255,86 @@
- flags = acl_flags(handle);
- handle = acl_handle(handle);
-
-- DBG("%s len %d handle 0x%x flags 0x%x", hdev->name, skb->len, handle, flags);
-+ BT_DBG("%s len %d handle 0x%x flags 0x%x", hdev->name, skb->len, handle, flags);
-+
-+ hdev->stat.acl_rx++;
-
-- if ((conn = conn_hash_lookup(&hdev->conn_hash, handle))) {
-+ hci_dev_lock(hdev);
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ hci_dev_unlock(hdev);
-+
-+ if (conn) {
- register struct hci_proto *hp;
-
- /* Send to upper protocol */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->recv_acldata) {
-+ if ((hp = hci_proto[HCI_PROTO_L2CAP]) && hp->recv_acldata) {
- hp->recv_acldata(conn, skb, flags);
-- goto sent;
-+ return;
- }
- } else {
-- ERR("%s ACL packet for unknown connection handle %d", hdev->name, handle);
-+ BT_ERR("%s ACL packet for unknown connection handle %d",
-+ hdev->name, handle);
- }
-
- kfree_skb(skb);
--sent:
-- hdev->stat.acl_rx++;
- }
-
- /* SCO data packet */
- static inline void hci_scodata_packet(struct hci_dev *hdev, struct sk_buff *skb)
- {
-- DBG("%s len %d", hdev->name, skb->len);
-+ hci_sco_hdr *sh = (void *) skb->data;
-+ struct hci_conn *conn;
-+ __u16 handle;
-+
-+ skb_pull(skb, HCI_SCO_HDR_SIZE);
-+
-+ handle = __le16_to_cpu(sh->handle);
-+
-+ BT_DBG("%s len %d handle 0x%x", hdev->name, skb->len, handle);
-
-- kfree_skb(skb);
- hdev->stat.sco_rx++;
-+
-+ hci_dev_lock(hdev);
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ hci_dev_unlock(hdev);
-+
-+ if (conn) {
-+ register struct hci_proto *hp;
-+
-+ /* Send to upper protocol */
-+ if ((hp = hci_proto[HCI_PROTO_SCO]) && hp->recv_scodata) {
-+ hp->recv_scodata(conn, skb);
-+ return;
-+ }
-+ } else {
-+ BT_ERR("%s SCO packet for unknown connection handle %d",
-+ hdev->name, handle);
-+ }
-+
-+ kfree_skb(skb);
- }
-
--/* ----- HCI tasks ----- */
- void hci_rx_task(unsigned long arg)
- {
- struct hci_dev *hdev = (struct hci_dev *) arg;
- struct sk_buff *skb;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s", hdev->name);
-
- read_lock(&hci_task_lock);
-
- while ((skb = skb_dequeue(&hdev->rx_q))) {
-- if (hdev->flags & HCI_SOCK) {
-+ if (atomic_read(&hdev->promisc)) {
- /* Send copy to the sockets */
- hci_send_to_sock(hdev, skb);
- }
-
-- if (hdev->flags & HCI_INIT) {
-+ if (test_bit(HCI_RAW, &hdev->flags)) {
-+ kfree_skb(skb);
-+ continue;
-+ }
-+
-+ if (test_bit(HCI_INIT, &hdev->flags)) {
- /* Don't process data packets in this states. */
- switch (skb->pkt_type) {
- case HCI_ACLDATA_PKT:
-@@ -1921,64 +1344,43 @@
- };
- }
-
-- if (hdev->flags & HCI_NORMAL) {
-- /* Process frame */
-- switch (skb->pkt_type) {
-- case HCI_EVENT_PKT:
-- hci_event_packet(hdev, skb);
-- break;
-+ /* Process frame */
-+ switch (skb->pkt_type) {
-+ case HCI_EVENT_PKT:
-+ hci_event_packet(hdev, skb);
-+ break;
-
-- case HCI_ACLDATA_PKT:
-- DBG("%s ACL data packet", hdev->name);
-- hci_acldata_packet(hdev, skb);
-- break;
-+ case HCI_ACLDATA_PKT:
-+ BT_DBG("%s ACL data packet", hdev->name);
-+ hci_acldata_packet(hdev, skb);
-+ break;
-
-- case HCI_SCODATA_PKT:
-- DBG("%s SCO data packet", hdev->name);
-- hci_scodata_packet(hdev, skb);
-- break;
-+ case HCI_SCODATA_PKT:
-+ BT_DBG("%s SCO data packet", hdev->name);
-+ hci_scodata_packet(hdev, skb);
-+ break;
-
-- default:
-- kfree_skb(skb);
-- break;
-- };
-- } else {
-+ default:
- kfree_skb(skb);
-+ break;
- }
- }
-
- read_unlock(&hci_task_lock);
- }
-
--static void hci_tx_task(unsigned long arg)
--{
-- struct hci_dev *hdev = (struct hci_dev *) arg;
-- struct sk_buff *skb;
--
-- read_lock(&hci_task_lock);
--
-- DBG("%s acl %d sco %d", hdev->name, hdev->acl_cnt, hdev->sco_cnt);
--
-- /* Schedule queues and send stuff to HCI driver */
--
-- hci_sched_acl(hdev);
--
-- hci_sched_sco(hdev);
--
-- /* Send next queued raw (unknown type) packet */
-- while ((skb = skb_dequeue(&hdev->raw_q)))
-- hci_send_frame(skb);
--
-- read_unlock(&hci_task_lock);
--}
--
- static void hci_cmd_task(unsigned long arg)
- {
- struct hci_dev *hdev = (struct hci_dev *) arg;
- struct sk_buff *skb;
-
-- DBG("%s cmd %d", hdev->name, atomic_read(&hdev->cmd_cnt));
-+ BT_DBG("%s cmd %d", hdev->name, atomic_read(&hdev->cmd_cnt));
-
-+ if (!atomic_read(&hdev->cmd_cnt) && (jiffies - hdev->cmd_last_tx) > HZ) {
-+ BT_ERR("%s command tx timeout", hdev->name);
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ }
-+
- /* Send queued commands */
- if (atomic_read(&hdev->cmd_cnt) && (skb = skb_dequeue(&hdev->cmd_q))) {
- if (hdev->sent_cmd)
-@@ -1987,6 +1389,7 @@
- if ((hdev->sent_cmd = skb_clone(skb, GFP_ATOMIC))) {
- atomic_dec(&hdev->cmd_cnt);
- hci_send_frame(skb);
-+ hdev->cmd_last_tx = jiffies;
- } else {
- skb_queue_head(&hdev->cmd_q, skb);
- hci_sched_cmd(hdev);
-@@ -1994,33 +1397,10 @@
- }
- }
-
--/* Receive frame from HCI drivers */
--int hci_recv_frame(struct sk_buff *skb)
--{
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
--
-- if (!hdev || !(hdev->flags & (HCI_UP | HCI_INIT))) {
-- kfree_skb(skb);
-- return -1;
-- }
--
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
--
-- /* Incomming skb */
-- bluez_cb(skb)->incomming = 1;
--
-- /* Queue frame for rx task */
-- skb_queue_tail(&hdev->rx_q, skb);
-- hci_sched_rx(hdev);
--
-- return 0;
--}
-+/* ---- Initialization ---- */
-
- int hci_core_init(void)
- {
-- /* Init locks */
-- spin_lock_init(&hdev_list_lock);
--
- return 0;
- }
-
-@@ -2028,5 +1408,3 @@
- {
- return 0;
- }
--
--MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/hci_event.c linux-2.4.18-mh15/net/bluetooth/hci_event.c
---- linux-2.4.18/net/bluetooth/hci_event.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hci_event.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,910 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * HCI Events.
-+ *
-+ * $Id: hci_event.c,v 1.4 2002/07/27 18:14:38 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/notifier.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+#ifndef HCI_CORE_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+/* Handle HCI Event packets */
-+
-+/* Command Complete OGF LINK_CTL */
-+static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ __u8 status;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_INQUIRY_CANCEL:
-+ status = *((__u8 *) skb->data);
-+
-+ if (status) {
-+ BT_DBG("%s Inquiry cancel error: status 0x%x", hdev->name, status);
-+ } else {
-+ clear_bit(HCI_INQUIRY, &hdev->flags);
-+ hci_req_complete(hdev, status);
-+ }
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command complete: ogf LINK_CTL ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Complete OGF LINK_POLICY */
-+static void hci_cc_link_policy(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ struct hci_conn *conn;
-+ role_discovery_rp *rd;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_ROLE_DISCOVERY:
-+ rd = (void *) skb->data;
-+
-+ if (rd->status)
-+ break;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, __le16_to_cpu(rd->handle));
-+ if (conn) {
-+ if (rd->role)
-+ conn->link_mode &= ~HCI_LM_MASTER;
-+ else
-+ conn->link_mode |= HCI_LM_MASTER;
-+ }
-+
-+ hci_dev_unlock(hdev);
-+ break;
-+
-+ default:
-+ BT_DBG("%s: Command complete: ogf LINK_POLICY ocf %x",
-+ hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Complete OGF HOST_CTL */
-+static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ __u8 status, param;
-+ void *sent;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_RESET:
-+ status = *((__u8 *) skb->data);
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_SET_EVENT_FLT:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s SET_EVENT_FLT failed %d", hdev->name, status);
-+ } else {
-+ BT_DBG("%s SET_EVENT_FLT succeseful", hdev->name);
-+ }
-+ break;
-+
-+ case OCF_WRITE_AUTH_ENABLE:
-+ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE);
-+ if (!sent)
-+ break;
-+
-+ status = *((__u8 *) skb->data);
-+ param = *((__u8 *) sent);
-+
-+ if (!status) {
-+ if (param == AUTH_ENABLED)
-+ set_bit(HCI_AUTH, &hdev->flags);
-+ else
-+ clear_bit(HCI_AUTH, &hdev->flags);
-+ }
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_WRITE_ENCRYPT_MODE:
-+ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_ENCRYPT_MODE);
-+ if (!sent)
-+ break;
-+
-+ status = *((__u8 *) skb->data);
-+ param = *((__u8 *) sent);
-+
-+ if (!status) {
-+ if (param)
-+ set_bit(HCI_ENCRYPT, &hdev->flags);
-+ else
-+ clear_bit(HCI_ENCRYPT, &hdev->flags);
-+ }
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_WRITE_CA_TIMEOUT:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s OCF_WRITE_CA_TIMEOUT failed %d", hdev->name, status);
-+ } else {
-+ BT_DBG("%s OCF_WRITE_CA_TIMEOUT succeseful", hdev->name);
-+ }
-+ break;
-+
-+ case OCF_WRITE_PG_TIMEOUT:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s OCF_WRITE_PG_TIMEOUT failed %d", hdev->name, status);
-+ } else {
-+ BT_DBG("%s: OCF_WRITE_PG_TIMEOUT succeseful", hdev->name);
-+ }
-+ break;
-+
-+ case OCF_WRITE_SCAN_ENABLE:
-+ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE);
-+ if (!sent)
-+ break;
-+ status = *((__u8 *) skb->data);
-+ param = *((__u8 *) sent);
-+
-+ BT_DBG("param 0x%x", param);
-+
-+ if (!status) {
-+ clear_bit(HCI_PSCAN, &hdev->flags);
-+ clear_bit(HCI_ISCAN, &hdev->flags);
-+ if (param & SCAN_INQUIRY)
-+ set_bit(HCI_ISCAN, &hdev->flags);
-+
-+ if (param & SCAN_PAGE)
-+ set_bit(HCI_PSCAN, &hdev->flags);
-+ }
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_HOST_BUFFER_SIZE:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s OCF_BUFFER_SIZE failed %d", hdev->name, status);
-+ hci_req_complete(hdev, status);
-+ }
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command complete: ogf HOST_CTL ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Complete OGF INFO_PARAM */
-+static void hci_cc_info_param(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ read_local_features_rp *lf;
-+ read_buffer_size_rp *bs;
-+ read_bd_addr_rp *ba;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_READ_LOCAL_FEATURES:
-+ lf = (read_local_features_rp *) skb->data;
-+
-+ if (lf->status) {
-+ BT_DBG("%s READ_LOCAL_FEATURES failed %d", hdev->name, lf->status);
-+ break;
-+ }
-+
-+ memcpy(hdev->features, lf->features, sizeof(hdev->features));
-+
-+ /* Adjust default settings according to features
-+ * supported by device. */
-+ if (hdev->features[0] & LMP_3SLOT)
-+ hdev->pkt_type |= (HCI_DM3 | HCI_DH3);
-+
-+ if (hdev->features[0] & LMP_5SLOT)
-+ hdev->pkt_type |= (HCI_DM5 | HCI_DH5);
-+
-+ if (hdev->features[1] & LMP_HV2)
-+ hdev->pkt_type |= (HCI_HV2);
-+
-+ if (hdev->features[1] & LMP_HV3)
-+ hdev->pkt_type |= (HCI_HV3);
-+
-+ BT_DBG("%s: features 0x%x 0x%x 0x%x", hdev->name, lf->features[0], lf->features[1], lf->features[2]);
-+
-+ break;
-+
-+ case OCF_READ_BUFFER_SIZE:
-+ bs = (read_buffer_size_rp *) skb->data;
-+
-+ if (bs->status) {
-+ BT_DBG("%s READ_BUFFER_SIZE failed %d", hdev->name, bs->status);
-+ hci_req_complete(hdev, bs->status);
-+ break;
-+ }
-+
-+ hdev->acl_mtu = __le16_to_cpu(bs->acl_mtu);
-+ hdev->sco_mtu = bs->sco_mtu ? bs->sco_mtu : 64;
-+ hdev->acl_pkts = hdev->acl_cnt = __le16_to_cpu(bs->acl_max_pkt);
-+ hdev->sco_pkts = hdev->sco_cnt = __le16_to_cpu(bs->sco_max_pkt);
-+
-+ BT_DBG("%s mtu: acl %d, sco %d max_pkt: acl %d, sco %d", hdev->name,
-+ hdev->acl_mtu, hdev->sco_mtu, hdev->acl_pkts, hdev->sco_pkts);
-+ break;
-+
-+ case OCF_READ_BD_ADDR:
-+ ba = (read_bd_addr_rp *) skb->data;
-+
-+ if (!ba->status) {
-+ bacpy(&hdev->bdaddr, &ba->bdaddr);
-+ } else {
-+ BT_DBG("%s: READ_BD_ADDR failed %d", hdev->name, ba->status);
-+ }
-+
-+ hci_req_complete(hdev, ba->status);
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command complete: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF LINK_CTL */
-+static inline void hci_cs_create_conn(struct hci_dev *hdev, __u8 status)
-+{
-+ struct hci_conn *conn;
-+ create_conn_cp *cc = hci_sent_cmd_data(hdev, OGF_LINK_CTL, OCF_CREATE_CONN);
-+
-+ if (!cc)
-+ return;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_ba(hdev, ACL_LINK, &cc->bdaddr);
-+
-+ BT_DBG("%s status 0x%x bdaddr %s conn %p", hdev->name,
-+ status, batostr(&cc->bdaddr), conn);
-+
-+ if (status) {
-+ if (conn && conn->state == BT_CONNECT) {
-+ conn->state = BT_CLOSED;
-+ hci_proto_connect_cfm(conn, status);
-+ hci_conn_del(conn);
-+ }
-+ } else {
-+ if (!conn) {
-+ conn = hci_conn_add(hdev, ACL_LINK, &cc->bdaddr);
-+ if (conn) {
-+ conn->out = 1;
-+ conn->link_mode |= HCI_LM_MASTER;
-+ } else
-+ BT_ERR("No memmory for new connection");
-+ }
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+static void hci_cs_link_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_CREATE_CONN:
-+ hci_cs_create_conn(hdev, status);
-+ break;
-+
-+ case OCF_ADD_SCO:
-+ if (status) {
-+ struct hci_conn *acl, *sco;
-+ add_sco_cp *cp = hci_sent_cmd_data(hdev,
-+ OGF_LINK_CTL, OCF_ADD_SCO);
-+ __u16 handle;
-+
-+ if (!cp)
-+ break;
-+
-+ handle = __le16_to_cpu(cp->handle);
-+
-+ BT_DBG("%s Add SCO error: handle %d status 0x%x", hdev->name, handle, status);
-+
-+ hci_dev_lock(hdev);
-+
-+ acl = conn_hash_lookup_handle(hdev, handle);
-+ if (acl && (sco = acl->link)) {
-+ sco->state = BT_CLOSED;
-+ hci_proto_connect_cfm(sco, status);
-+ hci_conn_del(sco);
-+ }
-+
-+ hci_dev_unlock(hdev);
-+ }
-+ break;
-+
-+ case OCF_INQUIRY:
-+ if (status) {
-+ BT_DBG("%s Inquiry error: status 0x%x", hdev->name, status);
-+ hci_req_complete(hdev, status);
-+ } else {
-+ set_bit(HCI_INQUIRY, &hdev->flags);
-+ }
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command status: ogf LINK_CTL ocf %x status %d",
-+ hdev->name, ocf, status);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF LINK_POLICY */
-+static void hci_cs_link_policy(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ default:
-+ BT_DBG("%s Command status: ogf HOST_POLICY ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF HOST_CTL */
-+static void hci_cs_host_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ default:
-+ BT_DBG("%s Command status: ogf HOST_CTL ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF INFO_PARAM */
-+static void hci_cs_info_param(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s: hci_cs_info_param: ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ default:
-+ BT_DBG("%s Command status: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Inquiry Complete */
-+static inline void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ __u8 status = *((__u8 *) skb->data);
-+
-+ BT_DBG("%s status %d", hdev->name, status);
-+
-+ clear_bit(HCI_INQUIRY, &hdev->flags);
-+ hci_req_complete(hdev, status);
-+}
-+
-+/* Inquiry Result */
-+static inline void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ inquiry_info *info = (inquiry_info *) (skb->data + 1);
-+ int num_rsp = *((__u8 *) skb->data);
-+
-+ BT_DBG("%s num_rsp %d", hdev->name, num_rsp);
-+
-+ hci_dev_lock(hdev);
-+ for (; num_rsp; num_rsp--)
-+ inquiry_cache_update(hdev, info++);
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Inquiry Result With RSSI */
-+static inline void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ inquiry_info_with_rssi *info = (inquiry_info_with_rssi *) (skb->data + 1);
-+ int num_rsp = *((__u8 *) skb->data);
-+
-+ BT_DBG("%s num_rsp %d", hdev->name, num_rsp);
-+
-+ hci_dev_lock(hdev);
-+ for (; num_rsp; num_rsp--) {
-+ inquiry_info tmp;
-+ bacpy(&tmp.bdaddr, &info->bdaddr);
-+ tmp.pscan_rep_mode = info->pscan_rep_mode;
-+ tmp.pscan_period_mode = info->pscan_period_mode;
-+ tmp.pscan_mode = 0x00;
-+ memcpy(tmp.dev_class, &info->dev_class, 3);
-+ tmp.clock_offset = info->clock_offset;
-+ info++;
-+ inquiry_cache_update(hdev, &tmp);
-+ }
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Connect Request */
-+static inline void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_conn_request *cr = (evt_conn_request *) skb->data;
-+ int mask = hdev->link_mode;
-+
-+ BT_DBG("%s Connection request: %s type 0x%x", hdev->name,
-+ batostr(&cr->bdaddr), cr->link_type);
-+
-+ mask |= hci_proto_connect_ind(hdev, &cr->bdaddr, cr->link_type);
-+
-+ if (mask & HCI_LM_ACCEPT) {
-+ /* Connection accepted */
-+ struct hci_conn *conn;
-+ accept_conn_req_cp ac;
-+
-+ hci_dev_lock(hdev);
-+ conn = conn_hash_lookup_ba(hdev, cr->link_type, &cr->bdaddr);
-+ if (!conn) {
-+ if (!(conn = hci_conn_add(hdev, cr->link_type, &cr->bdaddr))) {
-+ BT_ERR("No memmory for new connection");
-+ hci_dev_unlock(hdev);
-+ return;
-+ }
-+ }
-+ conn->state = BT_CONNECT;
-+ hci_dev_unlock(hdev);
-+
-+ bacpy(&ac.bdaddr, &cr->bdaddr);
-+
-+ if (lmp_rswitch_capable(hdev) && (mask & HCI_LM_MASTER))
-+ ac.role = 0x00; /* Become master */
-+ else
-+ ac.role = 0x01; /* Remain slave */
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ACCEPT_CONN_REQ,
-+ ACCEPT_CONN_REQ_CP_SIZE, &ac);
-+ } else {
-+ /* Connection rejected */
-+ reject_conn_req_cp rc;
-+
-+ bacpy(&rc.bdaddr, &cr->bdaddr);
-+ rc.reason = 0x0f;
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_REJECT_CONN_REQ,
-+ REJECT_CONN_REQ_CP_SIZE, &rc);
-+ }
-+}
-+
-+/* Connect Complete */
-+static inline void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_conn_complete *cc = (evt_conn_complete *) skb->data;
-+ struct hci_conn *conn = NULL;
-+
-+ BT_DBG("%s", hdev->name);
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_ba(hdev, cc->link_type, &cc->bdaddr);
-+ if (!conn) {
-+ hci_dev_unlock(hdev);
-+ return;
-+ }
-+
-+ if (!cc->status) {
-+ conn->handle = __le16_to_cpu(cc->handle);
-+ conn->state = BT_CONNECTED;
-+
-+ if (test_bit(HCI_AUTH, &hdev->flags))
-+ conn->link_mode |= HCI_LM_AUTH;
-+
-+ if (test_bit(HCI_ENCRYPT, &hdev->flags))
-+ conn->link_mode |= HCI_LM_ENCRYPT;
-+
-+
-+ /* Set link policy */
-+ if (conn->type == ACL_LINK && hdev->link_policy) {
-+ write_link_policy_cp lp;
-+ lp.handle = cc->handle;
-+ lp.policy = __cpu_to_le16(hdev->link_policy);
-+ hci_send_cmd(hdev, OGF_LINK_POLICY, OCF_WRITE_LINK_POLICY,
-+ WRITE_LINK_POLICY_CP_SIZE, &lp);
-+ }
-+
-+ /* Set packet type for incomming connection */
-+ if (!conn->out) {
-+ change_conn_ptype_cp cp;
-+ cp.handle = cc->handle;
-+ cp.pkt_type = (conn->type == ACL_LINK) ?
-+ __cpu_to_le16(hdev->pkt_type & ACL_PTYPE_MASK):
-+ __cpu_to_le16(hdev->pkt_type & SCO_PTYPE_MASK);
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CHANGE_CONN_PTYPE,
-+ CHANGE_CONN_PTYPE_CP_SIZE, &cp);
-+ }
-+ } else
-+ conn->state = BT_CLOSED;
-+
-+ if (conn->type == ACL_LINK) {
-+ struct hci_conn *sco = conn->link;
-+ if (sco) {
-+ if (!cc->status)
-+ hci_add_sco(sco, conn->handle);
-+ else {
-+ hci_proto_connect_cfm(sco, cc->status);
-+ hci_conn_del(sco);
-+ }
-+ }
-+ }
-+
-+ hci_proto_connect_cfm(conn, cc->status);
-+ if (cc->status)
-+ hci_conn_del(conn);
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Disconnect Complete */
-+static inline void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_disconn_complete *dc = (evt_disconn_complete *) skb->data;
-+ struct hci_conn *conn = NULL;
-+ __u16 handle = __le16_to_cpu(dc->handle);
-+
-+ BT_DBG("%s status %d", hdev->name, dc->status);
-+
-+ if (dc->status)
-+ return;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ conn->state = BT_CLOSED;
-+ hci_proto_disconn_ind(conn, dc->reason);
-+ hci_conn_del(conn);
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Number of completed packets */
-+static inline void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_num_comp_pkts *nc = (evt_num_comp_pkts *) skb->data;
-+ __u16 *ptr;
-+ int i;
-+
-+ skb_pull(skb, EVT_NUM_COMP_PKTS_SIZE);
-+
-+ BT_DBG("%s num_hndl %d", hdev->name, nc->num_hndl);
-+
-+ if (skb->len < nc->num_hndl * 4) {
-+ BT_DBG("%s bad parameters", hdev->name);
-+ return;
-+ }
-+
-+ tasklet_disable(&hdev->tx_task);
-+
-+ for (i = 0, ptr = (__u16 *) skb->data; i < nc->num_hndl; i++) {
-+ struct hci_conn *conn;
-+ __u16 handle, count;
-+
-+ handle = __le16_to_cpu(get_unaligned(ptr++));
-+ count = __le16_to_cpu(get_unaligned(ptr++));
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ conn->sent -= count;
-+
-+ if (conn->type == SCO_LINK) {
-+ if ((hdev->sco_cnt += count) > hdev->sco_pkts)
-+ hdev->sco_cnt = hdev->sco_pkts;
-+ } else {
-+ if ((hdev->acl_cnt += count) > hdev->acl_pkts)
-+ hdev->acl_cnt = hdev->acl_pkts;
-+ }
-+ }
-+ }
-+ hci_sched_tx(hdev);
-+
-+ tasklet_enable(&hdev->tx_task);
-+}
-+
-+/* Role Change */
-+static inline void hci_role_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_role_change *rc = (evt_role_change *) skb->data;
-+ struct hci_conn *conn = NULL;
-+
-+ BT_DBG("%s status %d", hdev->name, rc->status);
-+
-+ if (rc->status)
-+ return;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_ba(hdev, ACL_LINK, &rc->bdaddr);
-+ if (conn) {
-+ if (rc->role)
-+ conn->link_mode &= ~HCI_LM_MASTER;
-+ else
-+ conn->link_mode |= HCI_LM_MASTER;
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Authentication Complete */
-+static inline void hci_auth_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_auth_complete *ac = (evt_auth_complete *) skb->data;
-+ struct hci_conn *conn = NULL;
-+ __u16 handle = __le16_to_cpu(ac->handle);
-+
-+ BT_DBG("%s status %d", hdev->name, ac->status);
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ if (!ac->status)
-+ conn->link_mode |= HCI_LM_AUTH;
-+ clear_bit(HCI_CONN_AUTH_PEND, &conn->pend);
-+
-+ hci_proto_auth_cfm(conn, ac->status);
-+
-+ if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend)) {
-+ if (!ac->status) {
-+ set_conn_encrypt_cp ce;
-+ ce.handle = __cpu_to_le16(conn->handle);
-+ ce.encrypt = 1;
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL,
-+ OCF_SET_CONN_ENCRYPT,
-+ SET_CONN_ENCRYPT_CP_SIZE, &ce);
-+ } else {
-+ clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend);
-+ hci_proto_encrypt_cfm(conn, ac->status);
-+ }
-+ }
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Encryption Change */
-+static inline void hci_encrypt_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_encrypt_change *ec = (evt_encrypt_change *) skb->data;
-+ struct hci_conn *conn = NULL;
-+ __u16 handle = __le16_to_cpu(ec->handle);
-+
-+ BT_DBG("%s status %d", hdev->name, ec->status);
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ if (!ec->status) {
-+ if (ec->encrypt)
-+ conn->link_mode |= HCI_LM_ENCRYPT;
-+ else
-+ conn->link_mode &= ~HCI_LM_ENCRYPT;
-+ }
-+ clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend);
-+
-+ hci_proto_encrypt_cfm(conn, ec->status);
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ hci_event_hdr *he = (hci_event_hdr *) skb->data;
-+ evt_cmd_status *cs;
-+ evt_cmd_complete *ec;
-+ __u16 opcode, ocf, ogf;
-+
-+ skb_pull(skb, HCI_EVENT_HDR_SIZE);
-+
-+ BT_DBG("%s evt 0x%x", hdev->name, he->evt);
-+
-+ switch (he->evt) {
-+ case EVT_NUM_COMP_PKTS:
-+ hci_num_comp_pkts_evt(hdev, skb);
-+ break;
-+
-+ case EVT_INQUIRY_COMPLETE:
-+ hci_inquiry_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_INQUIRY_RESULT:
-+ hci_inquiry_result_evt(hdev, skb);
-+ break;
-+
-+ case EVT_INQUIRY_RESULT_WITH_RSSI:
-+ hci_inquiry_result_with_rssi_evt(hdev, skb);
-+ break;
-+
-+ case EVT_CONN_REQUEST:
-+ hci_conn_request_evt(hdev, skb);
-+ break;
-+
-+ case EVT_CONN_COMPLETE:
-+ hci_conn_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_DISCONN_COMPLETE:
-+ hci_disconn_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_ROLE_CHANGE:
-+ hci_role_change_evt(hdev, skb);
-+ break;
-+
-+ case EVT_AUTH_COMPLETE:
-+ hci_auth_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_ENCRYPT_CHANGE:
-+ hci_encrypt_change_evt(hdev, skb);
-+ break;
-+
-+ case EVT_CMD_STATUS:
-+ cs = (evt_cmd_status *) skb->data;
-+ skb_pull(skb, EVT_CMD_STATUS_SIZE);
-+
-+ opcode = __le16_to_cpu(cs->opcode);
-+ ogf = cmd_opcode_ogf(opcode);
-+ ocf = cmd_opcode_ocf(opcode);
-+
-+ switch (ogf) {
-+ case OGF_INFO_PARAM:
-+ hci_cs_info_param(hdev, ocf, cs->status);
-+ break;
-+
-+ case OGF_HOST_CTL:
-+ hci_cs_host_ctl(hdev, ocf, cs->status);
-+ break;
-+
-+ case OGF_LINK_CTL:
-+ hci_cs_link_ctl(hdev, ocf, cs->status);
-+ break;
-+
-+ case OGF_LINK_POLICY:
-+ hci_cs_link_policy(hdev, ocf, cs->status);
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command Status OGF %x", hdev->name, ogf);
-+ break;
-+ };
-+
-+ if (cs->ncmd) {
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ if (!skb_queue_empty(&hdev->cmd_q))
-+ hci_sched_cmd(hdev);
-+ }
-+ break;
-+
-+ case EVT_CMD_COMPLETE:
-+ ec = (evt_cmd_complete *) skb->data;
-+ skb_pull(skb, EVT_CMD_COMPLETE_SIZE);
-+
-+ opcode = __le16_to_cpu(ec->opcode);
-+ ogf = cmd_opcode_ogf(opcode);
-+ ocf = cmd_opcode_ocf(opcode);
-+
-+ switch (ogf) {
-+ case OGF_INFO_PARAM:
-+ hci_cc_info_param(hdev, ocf, skb);
-+ break;
-+
-+ case OGF_HOST_CTL:
-+ hci_cc_host_ctl(hdev, ocf, skb);
-+ break;
-+
-+ case OGF_LINK_CTL:
-+ hci_cc_link_ctl(hdev, ocf, skb);
-+ break;
-+
-+ case OGF_LINK_POLICY:
-+ hci_cc_link_policy(hdev, ocf, skb);
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command Completed OGF %x", hdev->name, ogf);
-+ break;
-+ };
-+
-+ if (ec->ncmd) {
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ if (!skb_queue_empty(&hdev->cmd_q))
-+ hci_sched_cmd(hdev);
-+ }
-+ break;
-+ };
-+
-+ kfree_skb(skb);
-+ hdev->stat.evt_rx++;
-+}
-+
-+/* General internal stack event */
-+void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data)
-+{
-+ hci_event_hdr *eh;
-+ evt_stack_internal *si;
-+ struct sk_buff *skb;
-+ int size;
-+ void *ptr;
-+
-+ size = HCI_EVENT_HDR_SIZE + EVT_STACK_INTERNAL_SIZE + dlen;
-+ skb = bluez_skb_alloc(size, GFP_ATOMIC);
-+ if (!skb)
-+ return;
-+
-+ ptr = skb_put(skb, size);
-+
-+ eh = ptr;
-+ eh->evt = EVT_STACK_INTERNAL;
-+ eh->plen = EVT_STACK_INTERNAL_SIZE + dlen;
-+ ptr += HCI_EVENT_HDR_SIZE;
-+
-+ si = ptr;
-+ si->type = type;
-+ memcpy(si->data, data, dlen);
-+
-+ skb->pkt_type = HCI_EVENT_PKT;
-+ skb->dev = (void *) hdev;
-+ hci_send_to_sock(hdev, skb);
-+ kfree_skb(skb);
-+}
-diff -urN linux-2.4.18/net/bluetooth/hci_sock.c linux-2.4.18-mh15/net/bluetooth/hci_sock.c
---- linux-2.4.18/net/bluetooth/hci_sock.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/hci_sock.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,7 +25,7 @@
- /*
- * BlueZ HCI socket layer.
- *
-- * $Id: hci_sock.c,v 1.9 2001/08/05 06:02:16 maxk Exp $
-+ * $Id: hci_sock.c,v 1.5 2002/07/22 20:32:54 maxk Exp $
- */
-
- #include <linux/config.h>
-@@ -49,45 +49,54 @@
-
- #include <asm/system.h>
- #include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
-
- #ifndef HCI_SOCK_DEBUG
--#undef DBG
--#define DBG( A... )
-+#undef BT_DBG
-+#define BT_DBG( A... )
- #endif
-
--/* HCI socket interface */
-+/* ----- HCI socket interface ----- */
-+
-+/* Security filter */
-+static struct hci_sec_filter hci_sec_filter = {
-+ /* Packet types */
-+ 0x10,
-+ /* Events */
-+ { 0x1000d9fe, 0x0000300c },
-+ /* Commands */
-+ {
-+ { 0x0 },
-+ /* OGF_LINK_CTL */
-+ { 0xbe000006, 0x00000001, 0x0000, 0x00 },
-+ /* OGF_LINK_POLICY */
-+ { 0x00005200, 0x00000000, 0x0000, 0x00 },
-+ /* OGF_HOST_CTL */
-+ { 0xaab00200, 0x2b402aaa, 0x0154, 0x00 },
-+ /* OGF_INFO_PARAM */
-+ { 0x000002be, 0x00000000, 0x0000, 0x00 },
-+ /* OGF_STATUS_PARAM */
-+ { 0x000000ea, 0x00000000, 0x0000, 0x00 }
-+ }
-+};
-
- static struct bluez_sock_list hci_sk_list = {
- lock: RW_LOCK_UNLOCKED
- };
-
--static struct sock *hci_sock_lookup(struct hci_dev *hdev)
--{
-- struct sock *sk;
--
-- read_lock(&hci_sk_list.lock);
-- for (sk = hci_sk_list.head; sk; sk = sk->next) {
-- if (hci_pi(sk)->hdev == hdev)
-- break;
-- }
-- read_unlock(&hci_sk_list.lock);
-- return sk;
--}
--
- /* Send frame to RAW socket */
- void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb)
- {
- struct sock * sk;
-
-- DBG("hdev %p len %d", hdev, skb->len);
-+ BT_DBG("hdev %p len %d", hdev, skb->len);
-
- read_lock(&hci_sk_list.lock);
- for (sk = hci_sk_list.head; sk; sk = sk->next) {
-- struct hci_filter *flt;
-+ struct hci_filter *flt;
- struct sk_buff *nskb;
-
- if (sk->state != BT_BOUND || hci_pi(sk)->hdev != hdev)
-@@ -100,13 +109,19 @@
- /* Apply filter */
- flt = &hci_pi(sk)->filter;
-
-- if (!test_bit(skb->pkt_type, &flt->type_mask))
-+ if (!hci_test_bit((skb->pkt_type & HCI_FLT_TYPE_BITS), &flt->type_mask))
- continue;
-
- if (skb->pkt_type == HCI_EVENT_PKT) {
-- register int evt = (*(__u8 *)skb->data & 63);
-+ register int evt = (*(__u8 *)skb->data & HCI_FLT_EVENT_BITS);
-+
-+ if (!hci_test_bit(evt, &flt->event_mask))
-+ continue;
-
-- if (!test_bit(evt, &flt->event_mask))
-+ if (flt->opcode && ((evt == EVT_CMD_COMPLETE &&
-+ flt->opcode != *(__u16 *)(skb->data + 3)) ||
-+ (evt == EVT_CMD_STATUS &&
-+ flt->opcode != *(__u16 *)(skb->data + 4))))
- continue;
- }
-
-@@ -116,8 +131,8 @@
- /* Put type byte before the data */
- memcpy(skb_push(nskb, 1), &nskb->pkt_type, 1);
-
-- skb_queue_tail(&sk->receive_queue, nskb);
-- sk->data_ready(sk, nskb->len);
-+ if (sock_queue_rcv_skb(sk, nskb))
-+ kfree_skb(nskb);
- }
- read_unlock(&hci_sk_list.lock);
- }
-@@ -127,7 +142,7 @@
- struct sock *sk = sock->sk;
- struct hci_dev *hdev = hci_pi(sk)->hdev;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p sk %p", sock, sk);
-
- if (!sk)
- return 0;
-@@ -135,9 +150,7 @@
- bluez_sock_unlink(&hci_sk_list, sk);
-
- if (hdev) {
-- if (!hci_sock_lookup(hdev))
-- hdev->flags &= ~HCI_SOCK;
--
-+ atomic_dec(&hdev->promisc);
- hci_dev_put(hdev);
- }
-
-@@ -149,24 +162,55 @@
- sock_put(sk);
-
- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
--static int hci_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+/* Ioctls that require bound socket */
-+static inline int hci_sock_bound_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg)
- {
-- struct sock *sk = sock->sk;
- struct hci_dev *hdev = hci_pi(sk)->hdev;
-- __u32 mode;
-
-- DBG("cmd %x arg %lx", cmd, arg);
-+ if (!hdev)
-+ return -EBADFD;
-
- switch (cmd) {
-- case HCIGETINFO:
-- return hci_dev_info(arg);
-+ case HCISETRAW:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-
-+ if (arg)
-+ set_bit(HCI_RAW, &hdev->flags);
-+ else
-+ clear_bit(HCI_RAW, &hdev->flags);
-+
-+ return 0;
-+
-+ case HCIGETCONNINFO:
-+ return hci_get_conn_info(hdev, arg);
-+
-+ default:
-+ if (hdev->ioctl)
-+ return hdev->ioctl(hdev, cmd, arg);
-+ return -EINVAL;
-+ }
-+}
-+
-+static int hci_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct sock *sk = sock->sk;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
- case HCIGETDEVLIST:
-- return hci_dev_list(arg);
-+ return hci_get_dev_list(arg);
-+
-+ case HCIGETDEVINFO:
-+ return hci_get_dev_info(arg);
-+
-+ case HCIGETCONNLIST:
-+ return hci_get_conn_list(arg);
-
- case HCIDEVUP:
- if (!capable(CAP_NET_ADMIN))
-@@ -183,48 +227,31 @@
- return -EACCES;
- return hci_dev_reset(arg);
-
-- case HCIRESETSTAT:
-+ case HCIDEVRESTAT:
- if (!capable(CAP_NET_ADMIN))
- return -EACCES;
- return hci_dev_reset_stat(arg);
-
- case HCISETSCAN:
-- if (!capable(CAP_NET_ADMIN))
-- return -EACCES;
-- return hci_dev_setscan(arg);
--
- case HCISETAUTH:
-- if (!capable(CAP_NET_ADMIN))
-- return -EACCES;
-- return hci_dev_setauth(arg);
--
-- case HCISETRAW:
-- if (!capable(CAP_NET_ADMIN))
-- return -EACCES;
--
-- if (!hdev)
-- return -EBADFD;
--
-- if (arg)
-- mode = HCI_RAW;
-- else
-- mode = HCI_NORMAL;
--
-- return hci_dev_setmode(hdev, mode);
--
-+ case HCISETENCRYPT:
- case HCISETPTYPE:
-+ case HCISETLINKPOL:
-+ case HCISETLINKMODE:
-+ case HCISETACLMTU:
-+ case HCISETSCOMTU:
- if (!capable(CAP_NET_ADMIN))
- return -EACCES;
-- return hci_dev_setptype(arg);
-+ return hci_dev_cmd(cmd, arg);
-
- case HCIINQUIRY:
- return hci_inquiry(arg);
-
-- case HCIGETCONNLIST:
-- return hci_conn_list(arg);
--
- default:
-- return -EINVAL;
-+ lock_sock(sk);
-+ err = hci_sock_bound_ioctl(sk, cmd, arg);
-+ release_sock(sk);
-+ return err;
- };
- }
-
-@@ -233,28 +260,35 @@
- struct sockaddr_hci *haddr = (struct sockaddr_hci *) addr;
- struct sock *sk = sock->sk;
- struct hci_dev *hdev = NULL;
-+ int err = 0;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p sk %p", sock, sk);
-
- if (!haddr || haddr->hci_family != AF_BLUETOOTH)
- return -EINVAL;
-
-+ lock_sock(sk);
-+
- if (hci_pi(sk)->hdev) {
-- /* Already bound */
-- return 0;
-+ err = -EALREADY;
-+ goto done;
- }
-
- if (haddr->hci_dev != HCI_DEV_NONE) {
-- if (!(hdev = hci_dev_get(haddr->hci_dev)))
-- return -ENODEV;
-+ if (!(hdev = hci_dev_get(haddr->hci_dev))) {
-+ err = -ENODEV;
-+ goto done;
-+ }
-
-- hdev->flags |= HCI_SOCK;
-+ atomic_inc(&hdev->promisc);
- }
-
- hci_pi(sk)->hdev = hdev;
- sk->state = BT_BOUND;
-
-- return 0;
-+done:
-+ release_sock(sk);
-+ return err;
- }
-
- static int hci_sock_getname(struct socket *sock, struct sockaddr *addr, int *addr_len, int peer)
-@@ -262,73 +296,44 @@
- struct sockaddr_hci *haddr = (struct sockaddr_hci *) addr;
- struct sock *sk = sock->sk;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ lock_sock(sk);
-
- *addr_len = sizeof(*haddr);
- haddr->hci_family = AF_BLUETOOTH;
- haddr->hci_dev = hci_pi(sk)->hdev->id;
-
-+ release_sock(sk);
- return 0;
- }
-
--static int hci_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len,
-- struct scm_cookie *scm)
--{
-- struct sock *sk = sock->sk;
-- struct hci_dev *hdev = hci_pi(sk)->hdev;
-- struct sk_buff *skb;
-- int err;
--
-- DBG("sock %p sk %p", sock, sk);
--
-- if (msg->msg_flags & MSG_OOB)
-- return -EOPNOTSUPP;
--
-- if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_NOSIGNAL|MSG_ERRQUEUE))
-- return -EINVAL;
--
-- if (!hdev)
-- return -EBADFD;
--
-- if (!(skb = bluez_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err)))
-- return err;
--
-- if (memcpy_fromiovec(skb_put(skb, len), msg->msg_iov, len)) {
-- kfree_skb(skb);
-- return -EFAULT;
-- }
--
-- skb->dev = (void *) hdev;
-- skb->pkt_type = *((unsigned char *) skb->data);
-- skb_pull(skb, 1);
--
-- /* Send frame to HCI core */
-- hci_send_raw(skb);
--
-- return len;
--}
--
- static inline void hci_sock_cmsg(struct sock *sk, struct msghdr *msg, struct sk_buff *skb)
- {
- __u32 mask = hci_pi(sk)->cmsg_mask;
-
- if (mask & HCI_CMSG_DIR)
- put_cmsg(msg, SOL_HCI, HCI_CMSG_DIR, sizeof(int), &bluez_cb(skb)->incomming);
-+
-+ if (mask & HCI_CMSG_TSTAMP)
-+ put_cmsg(msg, SOL_HCI, HCI_CMSG_TSTAMP, sizeof(skb->stamp), &skb->stamp);
- }
-
--static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len,
-- int flags, struct scm_cookie *scm)
-+static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm)
- {
- int noblock = flags & MSG_DONTWAIT;
- struct sock *sk = sock->sk;
- struct sk_buff *skb;
- int copied, err;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p, sk %p", sock, sk);
-
-- if (flags & (MSG_OOB | MSG_PEEK))
-+ if (flags & (MSG_OOB))
- return -EOPNOTSUPP;
-
-+ if (sk->state == BT_CLOSED)
-+ return 0;
-+
- if (!(skb = skb_recv_datagram(sk, flags, noblock, &err)))
- return err;
-
-@@ -343,28 +348,107 @@
- skb->h.raw = skb->data;
- err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
-
-- if (hci_pi(sk)->cmsg_mask)
-- hci_sock_cmsg(sk, msg, skb);
--
-+ hci_sock_cmsg(sk, msg, skb);
-+
- skb_free_datagram(sk, skb);
-
- return err ? : copied;
- }
-
-+static int hci_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len,
-+ struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ struct hci_dev *hdev;
-+ struct sk_buff *skb;
-+ int err;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_NOSIGNAL|MSG_ERRQUEUE))
-+ return -EINVAL;
-+
-+ if (len < 4)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (!(hdev = hci_pi(sk)->hdev)) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ if (!(skb = bluez_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err)))
-+ goto done;
-+
-+ if (memcpy_fromiovec(skb_put(skb, len), msg->msg_iov, len)) {
-+ err = -EFAULT;
-+ goto drop;
-+ }
-+
-+ skb->pkt_type = *((unsigned char *) skb->data);
-+ skb_pull(skb, 1);
-+ skb->dev = (void *) hdev;
-+
-+ if (skb->pkt_type == HCI_COMMAND_PKT) {
-+ u16 opcode = __le16_to_cpu(get_unaligned((u16 *)skb->data));
-+ u16 ogf = cmd_opcode_ogf(opcode);
-+ u16 ocf = cmd_opcode_ocf(opcode);
-+
-+ if (((ogf > HCI_SFLT_MAX_OGF) ||
-+ !hci_test_bit(ocf & HCI_FLT_OCF_BITS, &hci_sec_filter.ocf_mask[ogf])) &&
-+ !capable(CAP_NET_RAW)) {
-+ err = -EPERM;
-+ goto drop;
-+ }
-+
-+ if (test_bit(HCI_RAW, &hdev->flags) || (ogf == OGF_VENDOR_CMD)) {
-+ skb_queue_tail(&hdev->raw_q, skb);
-+ hci_sched_tx(hdev);
-+ } else {
-+ skb_queue_tail(&hdev->cmd_q, skb);
-+ hci_sched_cmd(hdev);
-+ }
-+ } else {
-+ if (!capable(CAP_NET_RAW)) {
-+ err = -EPERM;
-+ goto drop;
-+ }
-+
-+ skb_queue_tail(&hdev->raw_q, skb);
-+ hci_sched_tx(hdev);
-+ }
-+
-+ err = len;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+
-+drop:
-+ kfree_skb(skb);
-+ goto done;
-+}
-+
- int hci_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int len)
- {
- struct sock *sk = sock->sk;
-- struct hci_filter flt;
-+ struct hci_filter flt = { opcode: 0 };
- int err = 0, opt = 0;
-
-- DBG("sk %p, opt %d", sk, optname);
-+ BT_DBG("sk %p, opt %d", sk, optname);
-
- lock_sock(sk);
-
- switch (optname) {
- case HCI_DATA_DIR:
-- if (get_user(opt, (int *)optval))
-- return -EFAULT;
-+ if (get_user(opt, (int *)optval)) {
-+ err = -EFAULT;
-+ break;
-+ }
-
- if (opt)
- hci_pi(sk)->cmsg_mask |= HCI_CMSG_DIR;
-@@ -372,12 +456,31 @@
- hci_pi(sk)->cmsg_mask &= ~HCI_CMSG_DIR;
- break;
-
-+ case HCI_TIME_STAMP:
-+ if (get_user(opt, (int *)optval)) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (opt)
-+ hci_pi(sk)->cmsg_mask |= HCI_CMSG_TSTAMP;
-+ else
-+ hci_pi(sk)->cmsg_mask &= ~HCI_CMSG_TSTAMP;
-+ break;
-+
- case HCI_FILTER:
- len = MIN(len, sizeof(struct hci_filter));
- if (copy_from_user(&flt, optval, len)) {
- err = -EFAULT;
- break;
- }
-+
-+ if (!capable(CAP_NET_RAW)) {
-+ flt.type_mask &= hci_sec_filter.type_mask;
-+ flt.event_mask[0] &= hci_sec_filter.event_mask[0];
-+ flt.event_mask[1] &= hci_sec_filter.event_mask[1];
-+ }
-+
- memcpy(&hci_pi(sk)->filter, &flt, len);
- break;
-
-@@ -409,6 +512,16 @@
- return -EFAULT;
- break;
-
-+ case HCI_TIME_STAMP:
-+ if (hci_pi(sk)->cmsg_mask & HCI_CMSG_TSTAMP)
-+ opt = 1;
-+ else
-+ opt = 0;
-+
-+ if (put_user(opt, optval))
-+ return -EFAULT;
-+ break;
-+
- case HCI_FILTER:
- len = MIN(len, sizeof(struct hci_filter));
- if (copy_to_user(optval, &hci_pi(sk)->filter, len))
-@@ -446,7 +559,7 @@
- {
- struct sock *sk;
-
-- DBG("sock %p", sock);
-+ BT_DBG("sock %p", sock);
-
- if (sock->type != SOCK_RAW)
- return -ESOCKTNOSUPPORT;
-@@ -464,44 +577,31 @@
- sk->protocol = protocol;
- sk->state = BT_OPEN;
-
-- /* Initialize filter */
-- hci_pi(sk)->filter.type_mask = (1<<HCI_EVENT_PKT);
-- hci_pi(sk)->filter.event_mask[0] = ~0L;
-- hci_pi(sk)->filter.event_mask[1] = ~0L;
--
- bluez_sock_link(&hci_sk_list, sk);
-
- MOD_INC_USE_COUNT;
--
- return 0;
- }
-
- static int hci_sock_dev_event(struct notifier_block *this, unsigned long event, void *ptr)
- {
- struct hci_dev *hdev = (struct hci_dev *) ptr;
-- struct sk_buff *skb;
--
-- DBG("hdev %s event %ld", hdev->name, event);
-+ evt_si_device sd;
-+
-+ BT_DBG("hdev %s event %ld", hdev->name, event);
-
- /* Send event to sockets */
-- if ((skb = bluez_skb_alloc(HCI_EVENT_HDR_SIZE + EVT_HCI_DEV_EVENT_SIZE, GFP_ATOMIC))) {
-- hci_event_hdr eh = { EVT_HCI_DEV_EVENT, EVT_HCI_DEV_EVENT_SIZE };
-- evt_hci_dev_event he = { event, hdev->id };
--
-- skb->pkt_type = HCI_EVENT_PKT;
-- memcpy(skb_put(skb, HCI_EVENT_HDR_SIZE), &eh, HCI_EVENT_HDR_SIZE);
-- memcpy(skb_put(skb, EVT_HCI_DEV_EVENT_SIZE), &he, EVT_HCI_DEV_EVENT_SIZE);
--
-- hci_send_to_sock(NULL, skb);
-- kfree_skb(skb);
-- }
--
-+ sd.event = event;
-+ sd.dev_id = hdev->id;
-+ hci_si_event(NULL, EVT_SI_DEVICE, EVT_SI_DEVICE_SIZE, &sd);
-+
- if (event == HCI_DEV_UNREG) {
- struct sock *sk;
-
- /* Detach sockets from device */
- read_lock(&hci_sk_list.lock);
- for (sk = hci_sk_list.head; sk; sk = sk->next) {
-+ bh_lock_sock(sk);
- if (hci_pi(sk)->hdev == hdev) {
- hci_pi(sk)->hdev = NULL;
- sk->err = EPIPE;
-@@ -510,6 +610,7 @@
-
- hci_dev_put(hdev);
- }
-+ bh_unlock_sock(sk);
- }
- read_unlock(&hci_sk_list.lock);
- }
-@@ -529,21 +630,19 @@
- int hci_sock_init(void)
- {
- if (bluez_sock_register(BTPROTO_HCI, &hci_sock_family_ops)) {
-- ERR("Can't register HCI socket");
-+ BT_ERR("Can't register HCI socket");
- return -EPROTO;
- }
-
- hci_register_notifier(&hci_sock_nblock);
--
- return 0;
- }
-
- int hci_sock_cleanup(void)
- {
- if (bluez_sock_unregister(BTPROTO_HCI))
-- ERR("Can't unregister HCI socket");
-+ BT_ERR("Can't unregister HCI socket");
-
- hci_unregister_notifier(&hci_sock_nblock);
--
- return 0;
- }
-diff -urN linux-2.4.18/net/bluetooth/hidp/Config.in linux-2.4.18-mh15/net/bluetooth/hidp/Config.in
---- linux-2.4.18/net/bluetooth/hidp/Config.in 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hidp/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,5 @@
-+#
-+# Bluetooth HIDP layer configuration
-+#
-+
-+dep_tristate 'HIDP protocol support' CONFIG_BLUEZ_HIDP $CONFIG_INPUT $CONFIG_BLUEZ_L2CAP
-diff -urN linux-2.4.18/net/bluetooth/hidp/core.c linux-2.4.18-mh15/net/bluetooth/hidp/core.c
---- linux-2.4.18/net/bluetooth/hidp/core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hidp/core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,655 @@
-+/*
-+ HIDP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <linux/init.h>
-+#include <net/sock.h>
-+
-+#include <linux/input.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "hidp.h"
-+
-+#ifndef CONFIG_BT_HIDP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.0"
-+
-+static DECLARE_RWSEM(hidp_session_sem);
-+static LIST_HEAD(hidp_session_list);
-+
-+static unsigned char hidp_keycode[256] = {
-+ 0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38,
-+ 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3,
-+ 4, 5, 6, 7, 8, 9, 10, 11, 28, 1, 14, 15, 57, 12, 13, 26,
-+ 27, 43, 43, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64,
-+ 65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106,
-+ 105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71,
-+ 72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190,
-+ 191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113,
-+ 115,114, 0, 0, 0,121, 0, 89, 93,124, 92, 94, 95, 0, 0, 0,
-+ 122,123, 90, 91, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,
-+ 150,158,159,128,136,177,178,176,142,152,173,140
-+};
-+
-+static struct hidp_session *__hidp_get_session(bdaddr_t *bdaddr)
-+{
-+ struct hidp_session *session;
-+ struct list_head *p;
-+
-+ BT_DBG("");
-+
-+ list_for_each(p, &hidp_session_list) {
-+ session = list_entry(p, struct hidp_session, list);
-+ if (!bacmp(bdaddr, &session->bdaddr))
-+ return session;
-+ }
-+ return NULL;
-+}
-+
-+static void __hidp_link_session(struct hidp_session *session)
-+{
-+ MOD_INC_USE_COUNT;
-+ list_add(&session->list, &hidp_session_list);
-+}
-+
-+static void __hidp_unlink_session(struct hidp_session *session)
-+{
-+ list_del(&session->list);
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void __hidp_copy_session(struct hidp_session *session, struct hidp_conninfo *ci)
-+{
-+ bacpy(&ci->bdaddr, &session->bdaddr);
-+
-+ ci->flags = session->flags;
-+ ci->state = session->state;
-+
-+ ci->vendor = 0x0000;
-+ ci->product = 0x0000;
-+ ci->version = 0x0000;
-+ memset(ci->name, 0, 128);
-+
-+ if (session->input) {
-+ ci->vendor = session->input->idvendor;
-+ ci->product = session->input->idproduct;
-+ ci->version = session->input->idversion;
-+ if (session->input->name)
-+ strncpy(ci->name, session->input->name, 128);
-+ else
-+ strncpy(ci->name, "HID Boot Device", 128);
-+ }
-+}
-+
-+static int hidp_input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
-+{
-+ struct hidp_session *session = dev->private;
-+ struct sk_buff *skb;
-+ unsigned char newleds;
-+
-+ BT_DBG("session %p hid %p data %p size %d", session, device, data, size);
-+
-+ if (type != EV_LED)
-+ return -1;
-+
-+ newleds = (!!test_bit(LED_KANA, dev->led) << 3) |
-+ (!!test_bit(LED_COMPOSE, dev->led) << 3) |
-+ (!!test_bit(LED_SCROLLL, dev->led) << 2) |
-+ (!!test_bit(LED_CAPSL, dev->led) << 1) |
-+ (!!test_bit(LED_NUML, dev->led));
-+
-+ if (session->leds == newleds)
-+ return 0;
-+
-+ session->leds = newleds;
-+
-+ if (!(skb = alloc_skb(3, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for new frame");
-+ return -ENOMEM;
-+ }
-+
-+ *skb_put(skb, 1) = 0xa2;
-+ *skb_put(skb, 1) = 0x01;
-+ *skb_put(skb, 1) = newleds;
-+
-+ skb_queue_tail(&session->intr_transmit, skb);
-+
-+ hidp_schedule(session);
-+
-+ return 0;
-+}
-+
-+static void hidp_input_report(struct hidp_session *session, struct sk_buff *skb)
-+{
-+ struct input_dev *dev = session->input;
-+ unsigned char *keys = session->keys;
-+ unsigned char *udata = skb->data + 1;
-+ signed char *sdata = skb->data + 1;
-+ int i, size = skb->len - 1;
-+
-+ switch (skb->data[0]) {
-+ case 0x01: /* Keyboard report */
-+ for (i = 0; i < 8; i++)
-+ input_report_key(dev, hidp_keycode[i + 224], (udata[0] >> i) & 1);
-+
-+ for (i = 2; i < 8; i++) {
-+ if (keys[i] > 3 && memscan(udata + 2, keys[i], 6) == udata + 8) {
-+ if (hidp_keycode[keys[i]])
-+ input_report_key(dev, hidp_keycode[keys[i]], 0);
-+ else
-+ BT_ERR("Unknown key (scancode %#x) released.", keys[i]);
-+ }
-+
-+ if (udata[i] > 3 && memscan(keys + 2, udata[i], 6) == keys + 8) {
-+ if (hidp_keycode[udata[i]])
-+ input_report_key(dev, hidp_keycode[udata[i]], 1);
-+ else
-+ BT_ERR("Unknown key (scancode %#x) pressed.", udata[i]);
-+ }
-+ }
-+
-+ memcpy(keys, udata, 8);
-+ break;
-+
-+ case 0x02: /* Mouse report */
-+ input_report_key(dev, BTN_LEFT, sdata[0] & 0x01);
-+ input_report_key(dev, BTN_RIGHT, sdata[0] & 0x02);
-+ input_report_key(dev, BTN_MIDDLE, sdata[0] & 0x04);
-+ input_report_key(dev, BTN_SIDE, sdata[0] & 0x08);
-+ input_report_key(dev, BTN_EXTRA, sdata[0] & 0x10);
-+
-+ input_report_rel(dev, REL_X, sdata[1]);
-+ input_report_rel(dev, REL_Y, sdata[2]);
-+
-+ if (size > 3)
-+ input_report_rel(dev, REL_WHEEL, sdata[3]);
-+ break;
-+ }
-+
-+ input_event(dev, EV_RST, 0, 0);
-+}
-+
-+static void hidp_idle_timeout(unsigned long arg)
-+{
-+ struct hidp_session *session = (struct hidp_session *) arg;
-+
-+ atomic_inc(&session->terminate);
-+ hidp_schedule(session);
-+}
-+
-+static inline void hidp_set_timer(struct hidp_session *session)
-+{
-+ if (session->idle_to > 0)
-+ mod_timer(&session->timer, jiffies + HZ * session->idle_to);
-+}
-+
-+static inline void hidp_del_timer(struct hidp_session *session)
-+{
-+ if (session->idle_to > 0)
-+ del_timer(&session->timer);
-+}
-+
-+static inline void hidp_send_message(struct hidp_session *session, unsigned char hdr)
-+{
-+ struct sk_buff *skb;
-+
-+ BT_DBG("session %p", session);
-+
-+ if (!(skb = alloc_skb(1, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for message");
-+ return;
-+ }
-+
-+ *skb_put(skb, 1) = hdr;
-+
-+ skb_queue_tail(&session->ctrl_transmit, skb);
-+
-+ hidp_schedule(session);
-+}
-+
-+static inline int hidp_recv_frame(struct hidp_session *session, struct sk_buff *skb)
-+{
-+ __u8 hdr;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ hdr = skb->data[0];
-+ skb_pull(skb, 1);
-+
-+ if (hdr == 0xa1) {
-+ hidp_set_timer(session);
-+
-+ if (session->input)
-+ hidp_input_report(session, skb);
-+ } else {
-+ BT_DBG("Unsupported protocol header 0x%02x", hdr);
-+ }
-+
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static int hidp_send_frame(struct socket *sock, unsigned char *data, int len)
-+{
-+ struct iovec iv = { data, len };
-+ struct msghdr msg;
-+
-+ BT_DBG("sock %p data %p len %d", sock, data, len);
-+
-+ if (!len)
-+ return 0;
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 1;
-+ msg.msg_iov = &iv;
-+
-+ return sock_sendmsg(sock, &msg, len);
-+}
-+
-+static int hidp_process_transmit(struct hidp_session *session)
-+{
-+ struct sk_buff *skb;
-+
-+ BT_DBG("session %p", session);
-+
-+ while ((skb = skb_dequeue(&session->ctrl_transmit))) {
-+ if (hidp_send_frame(session->ctrl_sock, skb->data, skb->len) < 0) {
-+ skb_queue_head(&session->ctrl_transmit, skb);
-+ break;
-+ }
-+
-+ hidp_set_timer(session);
-+ kfree_skb(skb);
-+ }
-+
-+ while ((skb = skb_dequeue(&session->intr_transmit))) {
-+ if (hidp_send_frame(session->intr_sock, skb->data, skb->len) < 0) {
-+ skb_queue_head(&session->intr_transmit, skb);
-+ break;
-+ }
-+
-+ hidp_set_timer(session);
-+ kfree_skb(skb);
-+ }
-+
-+ return skb_queue_len(&session->ctrl_transmit) +
-+ skb_queue_len(&session->intr_transmit);
-+}
-+
-+static int hidp_session(void *arg)
-+{
-+ struct hidp_session *session = arg;
-+ struct sock *ctrl_sk = session->ctrl_sock->sk;
-+ struct sock *intr_sk = session->intr_sock->sk;
-+ struct sk_buff *skb;
-+ int vendor = 0x0000, product = 0x0000;
-+ wait_queue_t ctrl_wait, intr_wait;
-+ unsigned long timeo = HZ;
-+
-+ BT_DBG("session %p", session);
-+
-+ if (session->input) {
-+ vendor = session->input->idvendor;
-+ product = session->input->idproduct;
-+ }
-+
-+ daemonize(); reparent_to_init();
-+
-+ sprintf(current->comm, "khidpd_%04x%04x", vendor, product);
-+
-+ sigfillset(&current->blocked);
-+ flush_signals(current);
-+
-+ current->nice = -15;
-+
-+ set_fs(KERNEL_DS);
-+
-+ init_waitqueue_entry(&ctrl_wait, current);
-+ init_waitqueue_entry(&intr_wait, current);
-+ add_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+ add_wait_queue(intr_sk->sleep, &intr_wait);
-+ while (!atomic_read(&session->terminate)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (ctrl_sk->state != BT_CONNECTED || intr_sk->state != BT_CONNECTED)
-+ break;
-+
-+ while ((skb = skb_dequeue(&ctrl_sk->receive_queue))) {
-+ skb_orphan(skb);
-+ hidp_recv_frame(session, skb);
-+ }
-+
-+ while ((skb = skb_dequeue(&intr_sk->receive_queue))) {
-+ skb_orphan(skb);
-+ hidp_recv_frame(session, skb);
-+ }
-+
-+ hidp_process_transmit(session);
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(intr_sk->sleep, &intr_wait);
-+ remove_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+
-+ down_write(&hidp_session_sem);
-+
-+ hidp_del_timer(session);
-+
-+ if (intr_sk->state != BT_CONNECTED) {
-+ init_waitqueue_entry(&ctrl_wait, current);
-+ add_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+ while (timeo && ctrl_sk->state != BT_CLOSED) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+ timeo = HZ;
-+ }
-+
-+ fput(session->ctrl_sock->file);
-+
-+ init_waitqueue_entry(&intr_wait, current);
-+ add_wait_queue(intr_sk->sleep, &intr_wait);
-+ while (timeo && intr_sk->state != BT_CLOSED) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(intr_sk->sleep, &intr_wait);
-+
-+ fput(session->intr_sock->file);
-+
-+ __hidp_unlink_session(session);
-+
-+ if (session->input) {
-+ input_unregister_device(session->input);
-+ kfree(session->input);
-+ }
-+
-+ up_write(&hidp_session_sem);
-+
-+ kfree(session);
-+ return 0;
-+}
-+
-+static inline void hidp_setup_input(struct hidp_session *session, struct hidp_connadd_req *req)
-+{
-+ struct input_dev *input = session->input;
-+ int i;
-+
-+ input->private = session;
-+
-+ input->idbus = BUS_BLUETOOTH;
-+ input->idvendor = req->vendor;
-+ input->idproduct = req->product;
-+ input->idversion = req->version;
-+
-+ if (req->subclass & 0x40) {
-+ set_bit(EV_KEY, input->evbit);
-+ set_bit(EV_LED, input->evbit);
-+ set_bit(EV_REP, input->evbit);
-+
-+ set_bit(LED_NUML, input->ledbit);
-+ set_bit(LED_CAPSL, input->ledbit);
-+ set_bit(LED_SCROLLL, input->ledbit);
-+ set_bit(LED_COMPOSE, input->ledbit);
-+ set_bit(LED_KANA, input->ledbit);
-+
-+ for (i = 0; i < sizeof(hidp_keycode); i++)
-+ set_bit(hidp_keycode[i], input->keybit);
-+ clear_bit(0, input->keybit);
-+ }
-+
-+ if (req->subclass & 0x80) {
-+ input->evbit[0] = BIT(EV_KEY) | BIT(EV_REL);
-+ input->keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | BIT(BTN_RIGHT) | BIT(BTN_MIDDLE);
-+ input->relbit[0] = BIT(REL_X) | BIT(REL_Y);
-+ input->keybit[LONG(BTN_MOUSE)] |= BIT(BTN_SIDE) | BIT(BTN_EXTRA);
-+ input->relbit[0] |= BIT(REL_WHEEL);
-+ }
-+
-+ input->event = hidp_input_event;
-+
-+ input_register_device(input);
-+}
-+
-+int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock)
-+{
-+ struct hidp_session *session, *s;
-+ int err;
-+
-+ BT_DBG("");
-+
-+ if (bacmp(&bluez_pi(ctrl_sock->sk)->src, &bluez_pi(intr_sock->sk)->src) ||
-+ bacmp(&bluez_pi(ctrl_sock->sk)->dst, &bluez_pi(intr_sock->sk)->dst))
-+ return -ENOTUNIQ;
-+
-+ session = kmalloc(sizeof(struct hidp_session), GFP_KERNEL);
-+ if (!session)
-+ return -ENOMEM;
-+ memset(session, 0, sizeof(struct hidp_session));
-+
-+ session->input = kmalloc(sizeof(struct input_dev), GFP_KERNEL);
-+ if (!session->input) {
-+ kfree(session);
-+ return -ENOMEM;
-+ }
-+ memset(session->input, 0, sizeof(struct input_dev));
-+
-+ down_write(&hidp_session_sem);
-+
-+ s = __hidp_get_session(&bluez_pi(ctrl_sock->sk)->dst);
-+ if (s && s->state == BT_CONNECTED) {
-+ err = -EEXIST;
-+ goto failed;
-+ }
-+
-+ bacpy(&session->bdaddr, &bluez_pi(ctrl_sock->sk)->dst);
-+
-+ session->ctrl_mtu = min_t(uint, l2cap_pi(ctrl_sock->sk)->omtu, l2cap_pi(ctrl_sock->sk)->imtu);
-+ session->intr_mtu = min_t(uint, l2cap_pi(intr_sock->sk)->omtu, l2cap_pi(intr_sock->sk)->imtu);
-+
-+ BT_DBG("ctrl mtu %d intr mtu %d", session->ctrl_mtu, session->intr_mtu);
-+
-+ session->ctrl_sock = ctrl_sock;
-+ session->intr_sock = intr_sock;
-+ session->state = BT_CONNECTED;
-+
-+ init_timer(&session->timer);
-+
-+ session->timer.function = hidp_idle_timeout;
-+ session->timer.data = (unsigned long) session;
-+
-+ skb_queue_head_init(&session->ctrl_transmit);
-+ skb_queue_head_init(&session->intr_transmit);
-+
-+ session->flags = req->flags & (1 << HIDP_BLUETOOTH_VENDOR_ID);
-+ session->idle_to = req->idle_to;
-+
-+ if (session->input)
-+ hidp_setup_input(session, req);
-+
-+ __hidp_link_session(session);
-+
-+ hidp_set_timer(session);
-+
-+ err = kernel_thread(hidp_session, session, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+ if (err < 0)
-+ goto unlink;
-+
-+ if (session->input) {
-+ hidp_send_message(session, 0x70);
-+ session->flags |= (1 << HIDP_BOOT_PROTOCOL_MODE);
-+
-+ session->leds = 0xff;
-+ hidp_input_event(session->input, EV_LED, 0, 0);
-+ }
-+
-+ up_write(&hidp_session_sem);
-+ return 0;
-+
-+unlink:
-+ hidp_del_timer(session);
-+
-+ __hidp_unlink_session(session);
-+
-+ if (session->input)
-+ input_unregister_device(session->input);
-+
-+failed:
-+ up_write(&hidp_session_sem);
-+
-+ if (session->input)
-+ kfree(session->input);
-+
-+ kfree(session);
-+ return err;
-+}
-+
-+int hidp_del_connection(struct hidp_conndel_req *req)
-+{
-+ struct hidp_session *session;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&hidp_session_sem);
-+
-+ session = __hidp_get_session(&req->bdaddr);
-+ if (session) {
-+ if (req->flags & (1 << HIDP_VIRTUAL_CABLE_UNPLUG)) {
-+ hidp_send_message(session, 0x15);
-+ } else {
-+ /* Flush the transmit queues */
-+ skb_queue_purge(&session->ctrl_transmit);
-+ skb_queue_purge(&session->intr_transmit);
-+
-+ /* Kill session thread */
-+ atomic_inc(&session->terminate);
-+ hidp_schedule(session);
-+ }
-+ } else
-+ err = -ENOENT;
-+
-+ up_read(&hidp_session_sem);
-+ return err;
-+}
-+
-+int hidp_get_connlist(struct hidp_connlist_req *req)
-+{
-+ struct list_head *p;
-+ int err = 0, n = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&hidp_session_sem);
-+
-+ list_for_each(p, &hidp_session_list) {
-+ struct hidp_session *session;
-+ struct hidp_conninfo ci;
-+
-+ session = list_entry(p, struct hidp_session, list);
-+
-+ __hidp_copy_session(session, &ci);
-+
-+ if (copy_to_user(req->ci, &ci, sizeof(ci))) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (++n >= req->cnum)
-+ break;
-+
-+ req->ci++;
-+ }
-+ req->cnum = n;
-+
-+ up_read(&hidp_session_sem);
-+ return err;
-+}
-+
-+int hidp_get_conninfo(struct hidp_conninfo *ci)
-+{
-+ struct hidp_session *session;
-+ int err = 0;
-+
-+ down_read(&hidp_session_sem);
-+
-+ session = __hidp_get_session(&ci->bdaddr);
-+ if (session)
-+ __hidp_copy_session(session, ci);
-+ else
-+ err = -ENOENT;
-+
-+ up_read(&hidp_session_sem);
-+ return err;
-+}
-+
-+static int __init hidp_init(void)
-+{
-+ l2cap_load();
-+
-+ hidp_init_sockets();
-+
-+ BT_INFO("BlueZ HIDP ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>");
-+
-+ return 0;
-+}
-+
-+static void __exit hidp_exit(void)
-+{
-+ hidp_cleanup_sockets();
-+}
-+
-+module_init(hidp_init);
-+module_exit(hidp_exit);
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("Bluetooth HIDP ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/hidp/hidp.h linux-2.4.18-mh15/net/bluetooth/hidp/hidp.h
---- linux-2.4.18/net/bluetooth/hidp/hidp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hidp/hidp.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,122 @@
-+/*
-+ HIDP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#ifndef __HIDP_H
-+#define __HIDP_H
-+
-+#include <linux/types.h>
-+#include <net/bluetooth/bluetooth.h>
-+
-+/* HIDP ioctl defines */
-+#define HIDPCONNADD _IOW('H', 200, int)
-+#define HIDPCONNDEL _IOW('H', 201, int)
-+#define HIDPGETCONNLIST _IOR('H', 210, int)
-+#define HIDPGETCONNINFO _IOR('H', 211, int)
-+
-+#define HIDP_VIRTUAL_CABLE_UNPLUG 0
-+#define HIDP_BOOT_PROTOCOL_MODE 1
-+#define HIDP_BLUETOOTH_VENDOR_ID 9
-+
-+struct hidp_connadd_req {
-+ int ctrl_sock; // Connected control socket
-+ int intr_sock; // Connteted interrupt socket
-+ __u16 parser;
-+ __u16 rd_size;
-+ __u8 *rd_data;
-+ __u8 country;
-+ __u8 subclass;
-+ __u16 vendor;
-+ __u16 product;
-+ __u16 version;
-+ __u32 flags;
-+ __u32 idle_to;
-+ char name[128];
-+};
-+
-+struct hidp_conndel_req {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+};
-+
-+struct hidp_conninfo {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+ __u16 state;
-+ __u16 vendor;
-+ __u16 product;
-+ __u16 version;
-+ char name[128];
-+};
-+
-+struct hidp_connlist_req {
-+ __u32 cnum;
-+ struct hidp_conninfo *ci;
-+};
-+
-+int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock);
-+int hidp_del_connection(struct hidp_conndel_req *req);
-+int hidp_get_connlist(struct hidp_connlist_req *req);
-+int hidp_get_conninfo(struct hidp_conninfo *ci);
-+
-+/* HIDP session defines */
-+struct hidp_session {
-+ struct list_head list;
-+
-+ struct socket *ctrl_sock;
-+ struct socket *intr_sock;
-+
-+ bdaddr_t bdaddr;
-+
-+ unsigned long state;
-+ unsigned long flags;
-+ unsigned long idle_to;
-+
-+ uint ctrl_mtu;
-+ uint intr_mtu;
-+
-+ atomic_t terminate;
-+
-+ unsigned char keys[8];
-+ unsigned char leds;
-+
-+ struct input_dev *input;
-+
-+ struct timer_list timer;
-+
-+ struct sk_buff_head ctrl_transmit;
-+ struct sk_buff_head intr_transmit;
-+};
-+
-+static inline void hidp_schedule(struct hidp_session *session)
-+{
-+ struct sock *ctrl_sk = session->ctrl_sock->sk;
-+ struct sock *intr_sk = session->intr_sock->sk;
-+
-+ wake_up_interruptible(ctrl_sk->sleep);
-+ wake_up_interruptible(intr_sk->sleep);
-+}
-+
-+/* HIDP init defines */
-+extern int __init hidp_init_sockets(void);
-+extern void __exit hidp_cleanup_sockets(void);
-+
-+#endif /* __HIDP_H */
-diff -urN linux-2.4.18/net/bluetooth/hidp/Makefile linux-2.4.18-mh15/net/bluetooth/hidp/Makefile
---- linux-2.4.18/net/bluetooth/hidp/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hidp/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,10 @@
-+#
-+# Makefile for the Linux Bluetooth HIDP layer
-+#
-+
-+O_TARGET := hidp.o
-+
-+obj-y := core.o sock.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.18/net/bluetooth/hidp/sock.c linux-2.4.18-mh15/net/bluetooth/hidp/sock.c
---- linux-2.4.18/net/bluetooth/hidp/sock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hidp/sock.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,212 @@
-+/*
-+ HIDP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <linux/init.h>
-+#include <net/sock.h>
-+
-+#include "hidp.h"
-+
-+#ifndef CONFIG_BT_HIDP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+static int hidp_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sock_orphan(sk);
-+ sock_put(sk);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct hidp_connadd_req ca;
-+ struct hidp_conndel_req cd;
-+ struct hidp_connlist_req cl;
-+ struct hidp_conninfo ci;
-+ struct socket *csock;
-+ struct socket *isock;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
-+ case HIDPCONNADD:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&ca, (void *) arg, sizeof(ca)))
-+ return -EFAULT;
-+
-+ csock = sockfd_lookup(ca.ctrl_sock, &err);
-+ if (!csock)
-+ return err;
-+
-+ isock = sockfd_lookup(ca.intr_sock, &err);
-+ if (!isock) {
-+ fput(csock->file);
-+ return err;
-+ }
-+
-+ if (csock->sk->state != BT_CONNECTED || isock->sk->state != BT_CONNECTED) {
-+ fput(csock->file);
-+ fput(isock->file);
-+ return -EBADFD;
-+ }
-+
-+ err = hidp_add_connection(&ca, csock, isock);
-+ if (!err) {
-+ if (copy_to_user((void *) arg, &ca, sizeof(ca)))
-+ err = -EFAULT;
-+ } else {
-+ fput(csock->file);
-+ fput(isock->file);
-+ }
-+
-+ return err;
-+
-+ case HIDPCONNDEL:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&cd, (void *) arg, sizeof(cd)))
-+ return -EFAULT;
-+
-+ return hidp_del_connection(&cd);
-+
-+ case HIDPGETCONNLIST:
-+ if (copy_from_user(&cl, (void *) arg, sizeof(cl)))
-+ return -EFAULT;
-+
-+ if (cl.cnum <= 0)
-+ return -EINVAL;
-+
-+ err = hidp_get_connlist(&cl);
-+ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ case HIDPGETCONNINFO:
-+ if (copy_from_user(&ci, (void *) arg, sizeof(ci)))
-+ return -EFAULT;
-+
-+ err = hidp_get_conninfo(&ci);
-+ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci)))
-+ return -EFAULT;
-+
-+ return err;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static struct proto_ops hidp_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: hidp_sock_release,
-+ ioctl: hidp_sock_ioctl,
-+ bind: sock_no_bind,
-+ getname: sock_no_getname,
-+ sendmsg: sock_no_sendmsg,
-+ recvmsg: sock_no_recvmsg,
-+ poll: sock_no_poll,
-+ listen: sock_no_listen,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sock_no_setsockopt,
-+ getsockopt: sock_no_getsockopt,
-+ connect: sock_no_connect,
-+ socketpair: sock_no_socketpair,
-+ accept: sock_no_accept,
-+ mmap: sock_no_mmap
-+};
-+
-+static int hidp_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ if (sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &hidp_sock_ops;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1)))
-+ return -ENOMEM;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ sock->state = SS_UNCONNECTED;
-+ sock_init_data(sock, sk);
-+
-+ sk->destruct = NULL;
-+ sk->protocol = protocol;
-+
-+ return 0;
-+}
-+
-+static struct net_proto_family hidp_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: hidp_sock_create
-+};
-+
-+int __init hidp_init_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_HIDP, &hidp_sock_family_ops)))
-+ BT_ERR("Can't register HIDP socket layer (%d)", err);
-+
-+ return err;
-+}
-+
-+void __exit hidp_cleanup_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_unregister(BTPROTO_HIDP)))
-+ BT_ERR("Can't unregister HIDP socket layer (%d)", err);
-+}
-diff -urN linux-2.4.18/net/bluetooth/l2cap.c linux-2.4.18-mh15/net/bluetooth/l2cap.c
---- linux-2.4.18/net/bluetooth/l2cap.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/l2cap.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,2222 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ L2CAP core and sockets.
-+ *
-+ * $Id: l2cap.c,v 1.15 2002/09/09 01:14:52 maxk Exp $
-+ */
-+#define VERSION "2.3"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/socket.h>
-+#include <linux/skbuff.h>
-+#include <linux/proc_fs.h>
-+#include <linux/list.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#ifndef L2CAP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+static struct proto_ops l2cap_sock_ops;
-+
-+struct bluez_sock_list l2cap_sk_list = {
-+ lock: RW_LOCK_UNLOCKED
-+};
-+
-+static int l2cap_conn_del(struct hci_conn *conn, int err);
-+
-+static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent);
-+static void l2cap_chan_del(struct sock *sk, int err);
-+static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len);
-+
-+static void __l2cap_sock_close(struct sock *sk, int reason);
-+static void l2cap_sock_close(struct sock *sk);
-+static void l2cap_sock_kill(struct sock *sk);
-+
-+static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data);
-+static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data);
-+
-+/* ----- L2CAP timers ------ */
-+static void l2cap_sock_timeout(unsigned long arg)
-+{
-+ struct sock *sk = (struct sock *) arg;
-+
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ bh_lock_sock(sk);
-+ __l2cap_sock_close(sk, ETIMEDOUT);
-+ bh_unlock_sock(sk);
-+
-+ l2cap_sock_kill(sk);
-+ sock_put(sk);
-+}
-+
-+static void l2cap_sock_set_timer(struct sock *sk, long timeout)
-+{
-+ BT_DBG("sk %p state %d timeout %ld", sk, sk->state, timeout);
-+
-+ if (!mod_timer(&sk->timer, jiffies + timeout))
-+ sock_hold(sk);
-+}
-+
-+static void l2cap_sock_clear_timer(struct sock *sk)
-+{
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ if (timer_pending(&sk->timer) && del_timer(&sk->timer))
-+ __sock_put(sk);
-+}
-+
-+static void l2cap_sock_init_timer(struct sock *sk)
-+{
-+ init_timer(&sk->timer);
-+ sk->timer.function = l2cap_sock_timeout;
-+ sk->timer.data = (unsigned long)sk;
-+}
-+
-+/* -------- L2CAP connections --------- */
-+static struct l2cap_conn *l2cap_conn_add(struct hci_conn *hcon, __u8 status)
-+{
-+ struct l2cap_conn *conn;
-+
-+ if ((conn = hcon->l2cap_data))
-+ return conn;
-+
-+ if (status)
-+ return conn;
-+
-+ if (!(conn = kmalloc(sizeof(struct l2cap_conn), GFP_ATOMIC)))
-+ return NULL;
-+ memset(conn, 0, sizeof(struct l2cap_conn));
-+
-+ hcon->l2cap_data = conn;
-+ conn->hcon = hcon;
-+
-+ conn->mtu = hcon->hdev->acl_mtu;
-+ conn->src = &hcon->hdev->bdaddr;
-+ conn->dst = &hcon->dst;
-+
-+ spin_lock_init(&conn->lock);
-+ conn->chan_list.lock = RW_LOCK_UNLOCKED;
-+
-+ BT_DBG("hcon %p conn %p", hcon, conn);
-+
-+ MOD_INC_USE_COUNT;
-+ return conn;
-+}
-+
-+static int l2cap_conn_del(struct hci_conn *hcon, int err)
-+{
-+ struct l2cap_conn *conn;
-+ struct sock *sk;
-+
-+ if (!(conn = hcon->l2cap_data))
-+ return 0;
-+
-+ BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
-+
-+ if (conn->rx_skb)
-+ kfree_skb(conn->rx_skb);
-+
-+ /* Kill channels */
-+ while ((sk = conn->chan_list.head)) {
-+ bh_lock_sock(sk);
-+ l2cap_chan_del(sk, err);
-+ bh_unlock_sock(sk);
-+ l2cap_sock_kill(sk);
-+ }
-+
-+ hcon->l2cap_data = NULL;
-+ kfree(conn);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+/* -------- Socket interface ---------- */
-+static struct sock *__l2cap_get_sock_by_addr(__u16 psm, bdaddr_t *src)
-+{
-+ struct sock *sk;
-+ for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-+ if (sk->sport == psm && !bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+ }
-+ return sk;
-+}
-+
-+/* Find socket with psm and source bdaddr.
-+ * Returns closest match.
-+ */
-+static struct sock *__l2cap_get_sock_by_psm(int state, __u16 psm, bdaddr_t *src)
-+{
-+ struct sock *sk, *sk1 = NULL;
-+
-+ for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-+ if (state && sk->state != state)
-+ continue;
-+
-+ if (l2cap_pi(sk)->psm == psm) {
-+ /* Exact match. */
-+ if (!bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+
-+ /* Closest match */
-+ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ sk1 = sk;
-+ }
-+ }
-+ return sk ? sk : sk1;
-+}
-+
-+/* Find socket with given address (psm, src).
-+ * Returns locked socket */
-+static inline struct sock *l2cap_get_sock_by_psm(int state, __u16 psm, bdaddr_t *src)
-+{
-+ struct sock *s;
-+ read_lock(&l2cap_sk_list.lock);
-+ s = __l2cap_get_sock_by_psm(state, psm, src);
-+ if (s) bh_lock_sock(s);
-+ read_unlock(&l2cap_sk_list.lock);
-+ return s;
-+}
-+
-+static void l2cap_sock_destruct(struct sock *sk)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ skb_queue_purge(&sk->receive_queue);
-+ skb_queue_purge(&sk->write_queue);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void l2cap_sock_cleanup_listen(struct sock *parent)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ /* Close not yet accepted channels */
-+ while ((sk = bluez_accept_dequeue(parent, NULL)))
-+ l2cap_sock_close(sk);
-+
-+ parent->state = BT_CLOSED;
-+ parent->zapped = 1;
-+}
-+
-+/* Kill socket (only if zapped and orphan)
-+ * Must be called on unlocked socket.
-+ */
-+static void l2cap_sock_kill(struct sock *sk)
-+{
-+ if (!sk->zapped || sk->socket)
-+ return;
-+
-+ BT_DBG("sk %p state %d", sk, sk->state);
-+
-+ /* Kill poor orphan */
-+ bluez_sock_unlink(&l2cap_sk_list, sk);
-+ sk->dead = 1;
-+ sock_put(sk);
-+}
-+
-+/* Close socket.
-+ */
-+static void __l2cap_sock_close(struct sock *sk, int reason)
-+{
-+ BT_DBG("sk %p state %d socket %p", sk, sk->state, sk->socket);
-+
-+ switch (sk->state) {
-+ case BT_LISTEN:
-+ l2cap_sock_cleanup_listen(sk);
-+ break;
-+
-+ case BT_CONNECTED:
-+ case BT_CONFIG:
-+ case BT_CONNECT2:
-+ if (sk->type == SOCK_SEQPACKET) {
-+ struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-+ l2cap_disconn_req req;
-+
-+ sk->state = BT_DISCONN;
-+ l2cap_sock_set_timer(sk, sk->sndtimeo);
-+
-+ req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
-+ } else {
-+ l2cap_chan_del(sk, reason);
-+ }
-+ break;
-+
-+ case BT_CONNECT:
-+ case BT_DISCONN:
-+ l2cap_chan_del(sk, reason);
-+ break;
-+
-+ default:
-+ sk->zapped = 1;
-+ break;
-+ };
-+}
-+
-+/* Must be called on unlocked socket. */
-+static void l2cap_sock_close(struct sock *sk)
-+{
-+ l2cap_sock_clear_timer(sk);
-+ lock_sock(sk);
-+ __l2cap_sock_close(sk, ECONNRESET);
-+ release_sock(sk);
-+ l2cap_sock_kill(sk);
-+}
-+
-+static void l2cap_sock_init(struct sock *sk, struct sock *parent)
-+{
-+ struct l2cap_pinfo *pi = l2cap_pi(sk);
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (parent) {
-+ sk->type = parent->type;
-+ pi->imtu = l2cap_pi(parent)->imtu;
-+ pi->omtu = l2cap_pi(parent)->omtu;
-+ pi->link_mode = l2cap_pi(parent)->link_mode;
-+ } else {
-+ pi->imtu = L2CAP_DEFAULT_MTU;
-+ pi->omtu = 0;
-+ pi->link_mode = 0;
-+ }
-+
-+ /* Default config options */
-+ pi->conf_mtu = L2CAP_DEFAULT_MTU;
-+ pi->flush_to = L2CAP_DEFAULT_FLUSH_TO;
-+}
-+
-+static struct sock *l2cap_sock_alloc(struct socket *sock, int proto, int prio)
-+{
-+ struct sock *sk;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1)))
-+ return NULL;
-+
-+ bluez_sock_init(sock, sk);
-+
-+ sk->zapped = 0;
-+
-+ sk->destruct = l2cap_sock_destruct;
-+ sk->sndtimeo = L2CAP_CONN_TIMEOUT;
-+
-+ sk->protocol = proto;
-+ sk->state = BT_OPEN;
-+
-+ l2cap_sock_init_timer(sk);
-+
-+ bluez_sock_link(&l2cap_sk_list, sk);
-+
-+ MOD_INC_USE_COUNT;
-+ return sk;
-+}
-+
-+static int l2cap_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ sock->state = SS_UNCONNECTED;
-+
-+ if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW))
-+ return -EPERM;
-+
-+ sock->ops = &l2cap_sock_ops;
-+
-+ if (!(sk = l2cap_sock_alloc(sock, protocol, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ l2cap_sock_init(sk, NULL);
-+ return 0;
-+}
-+
-+static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
-+{
-+ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p, %s %d", sk, batostr(&la->l2_bdaddr), la->l2_psm);
-+
-+ if (!addr || addr->sa_family != AF_BLUETOOTH)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_OPEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ write_lock_bh(&l2cap_sk_list.lock);
-+ if (la->l2_psm && __l2cap_get_sock_by_addr(la->l2_psm, &la->l2_bdaddr)) {
-+ err = -EADDRINUSE;
-+ } else {
-+ /* Save source address */
-+ bacpy(&bluez_pi(sk)->src, &la->l2_bdaddr);
-+ l2cap_pi(sk)->psm = la->l2_psm;
-+ sk->sport = la->l2_psm;
-+ sk->state = BT_BOUND;
-+ }
-+ write_unlock_bh(&l2cap_sk_list.lock);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_do_connect(struct sock *sk)
-+{
-+ bdaddr_t *src = &bluez_pi(sk)->src;
-+ bdaddr_t *dst = &bluez_pi(sk)->dst;
-+ struct l2cap_conn *conn;
-+ struct hci_conn *hcon;
-+ struct hci_dev *hdev;
-+ int err = 0;
-+
-+ BT_DBG("%s -> %s psm 0x%2.2x", batostr(src), batostr(dst), l2cap_pi(sk)->psm);
-+
-+ if (!(hdev = hci_get_route(dst, src)))
-+ return -EHOSTUNREACH;
-+
-+ hci_dev_lock_bh(hdev);
-+
-+ err = -ENOMEM;
-+
-+ hcon = hci_connect(hdev, ACL_LINK, dst);
-+ if (!hcon)
-+ goto done;
-+
-+ conn = l2cap_conn_add(hcon, 0);
-+ if (!conn) {
-+ hci_conn_put(hcon);
-+ goto done;
-+ }
-+
-+ err = 0;
-+
-+ /* Update source addr of the socket */
-+ bacpy(src, conn->src);
-+
-+ l2cap_chan_add(conn, sk, NULL);
-+
-+ sk->state = BT_CONNECT;
-+ l2cap_sock_set_timer(sk, sk->sndtimeo);
-+
-+ if (hcon->state == BT_CONNECTED) {
-+ if (sk->type == SOCK_SEQPACKET) {
-+ l2cap_conn_req req;
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ req.psm = l2cap_pi(sk)->psm;
-+ l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
-+ } else {
-+ l2cap_sock_clear_timer(sk);
-+ sk->state = BT_CONNECTED;
-+ }
-+ }
-+
-+done:
-+ hci_dev_unlock_bh(hdev);
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
-+static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
-+{
-+ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_l2)) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-+
-+ if (sk->type == SOCK_SEQPACKET && !la->l2_psm) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-+
-+ switch(sk->state) {
-+ case BT_CONNECT:
-+ case BT_CONNECT2:
-+ case BT_CONFIG:
-+ /* Already connecting */
-+ goto wait;
-+
-+ case BT_CONNECTED:
-+ /* Already connected */
-+ goto done;
-+
-+ case BT_OPEN:
-+ case BT_BOUND:
-+ /* Can connect */
-+ break;
-+
-+ default:
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ /* Set destination address and psm */
-+ bacpy(&bluez_pi(sk)->dst, &la->l2_bdaddr);
-+ l2cap_pi(sk)->psm = la->l2_psm;
-+
-+ if ((err = l2cap_do_connect(sk)))
-+ goto done;
-+
-+wait:
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int l2cap_sock_listen(struct socket *sock, int backlog)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p backlog %d", sk, backlog);
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ if (!l2cap_pi(sk)->psm) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-+
-+ sk->max_ack_backlog = backlog;
-+ sk->ack_backlog = 0;
-+ sk->state = BT_LISTEN;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct sock *sk = sock->sk, *nsk;
-+ long timeo;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
-+
-+ BT_DBG("sk %p timeo %ld", sk, timeo);
-+
-+ /* Wait for an incoming connection. (wake-one). */
-+ add_wait_queue_exclusive(sk->sleep, &wait);
-+ while (!(nsk = bluez_accept_dequeue(sk, newsock))) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ if (err)
-+ goto done;
-+
-+ newsock->state = SS_CONNECTED;
-+
-+ BT_DBG("new socket %p", nsk);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
-+{
-+ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ addr->sa_family = AF_BLUETOOTH;
-+ *len = sizeof(struct sockaddr_l2);
-+
-+ if (peer)
-+ bacpy(&la->l2_bdaddr, &bluez_pi(sk)->dst);
-+ else
-+ bacpy(&la->l2_bdaddr, &bluez_pi(sk)->src);
-+
-+ la->l2_psm = l2cap_pi(sk)->psm;
-+ return 0;
-+}
-+
-+static int l2cap_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (sk->err)
-+ return sock_error(sk);
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ /* Check outgoing MTU */
-+ if (len > l2cap_pi(sk)->omtu)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state == BT_CONNECTED)
-+ err = l2cap_chan_send(sk, msg, len);
-+ else
-+ err = -ENOTCONN;
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ struct l2cap_options opts;
-+ int err = 0, len;
-+ __u32 opt;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ case L2CAP_OPTIONS:
-+ len = MIN(sizeof(opts), optlen);
-+ if (copy_from_user((char *)&opts, optval, len)) {
-+ err = -EFAULT;
-+ break;
-+ }
-+ l2cap_pi(sk)->imtu = opts.imtu;
-+ l2cap_pi(sk)->omtu = opts.omtu;
-+ break;
-+
-+ case L2CAP_LM:
-+ if (get_user(opt, (__u32 *)optval)) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ l2cap_pi(sk)->link_mode = opt;
-+ break;
-+
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ struct l2cap_options opts;
-+ struct l2cap_conninfo cinfo;
-+ int len, err = 0;
-+
-+ if (get_user(len, optlen))
-+ return -EFAULT;
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ case L2CAP_OPTIONS:
-+ opts.imtu = l2cap_pi(sk)->imtu;
-+ opts.omtu = l2cap_pi(sk)->omtu;
-+ opts.flush_to = l2cap_pi(sk)->flush_to;
-+
-+ len = MIN(len, sizeof(opts));
-+ if (copy_to_user(optval, (char *)&opts, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ case L2CAP_LM:
-+ if (put_user(l2cap_pi(sk)->link_mode, (__u32 *)optval))
-+ err = -EFAULT;
-+ break;
-+
-+ case L2CAP_CONNINFO:
-+ if (sk->state != BT_CONNECTED) {
-+ err = -ENOTCONN;
-+ break;
-+ }
-+
-+ cinfo.hci_handle = l2cap_pi(sk)->conn->hcon->handle;
-+
-+ len = MIN(len, sizeof(cinfo));
-+ if (copy_to_user(optval, (char *)&cinfo, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_shutdown(struct socket *sock, int how)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk) return 0;
-+
-+ lock_sock(sk);
-+ if (!sk->shutdown) {
-+ sk->shutdown = SHUTDOWN_MASK;
-+ l2cap_sock_clear_timer(sk);
-+ __l2cap_sock_close(sk, 0);
-+
-+ if (sk->linger)
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ }
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+ int err;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk) return 0;
-+
-+ err = l2cap_sock_shutdown(sock, 2);
-+
-+ sock_orphan(sk);
-+ l2cap_sock_kill(sk);
-+ return err;
-+}
-+
-+/* --------- L2CAP channels --------- */
-+static struct sock * __l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid)
-+{
-+ struct sock *s;
-+ for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-+ if (l2cap_pi(s)->dcid == cid)
-+ break;
-+ }
-+ return s;
-+}
-+
-+static struct sock *__l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
-+{
-+ struct sock *s;
-+ for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-+ if (l2cap_pi(s)->scid == cid)
-+ break;
-+ }
-+ return s;
-+}
-+
-+/* Find channel with given SCID.
-+ * Returns locked socket */
-+static inline struct sock *l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
-+{
-+ struct sock *s;
-+ read_lock(&l->lock);
-+ s = __l2cap_get_chan_by_scid(l, cid);
-+ if (s) bh_lock_sock(s);
-+ read_unlock(&l->lock);
-+ return s;
-+}
-+
-+static __u16 l2cap_alloc_cid(struct l2cap_chan_list *l)
-+{
-+ __u16 cid = 0x0040;
-+
-+ for (; cid < 0xffff; cid++) {
-+ if(!__l2cap_get_chan_by_scid(l, cid))
-+ return cid;
-+ }
-+
-+ return 0;
-+}
-+
-+static inline void __l2cap_chan_link(struct l2cap_chan_list *l, struct sock *sk)
-+{
-+ sock_hold(sk);
-+
-+ if (l->head)
-+ l2cap_pi(l->head)->prev_c = sk;
-+
-+ l2cap_pi(sk)->next_c = l->head;
-+ l2cap_pi(sk)->prev_c = NULL;
-+ l->head = sk;
-+}
-+
-+static inline void l2cap_chan_unlink(struct l2cap_chan_list *l, struct sock *sk)
-+{
-+ struct sock *next = l2cap_pi(sk)->next_c, *prev = l2cap_pi(sk)->prev_c;
-+
-+ write_lock(&l->lock);
-+ if (sk == l->head)
-+ l->head = next;
-+
-+ if (next)
-+ l2cap_pi(next)->prev_c = prev;
-+ if (prev)
-+ l2cap_pi(prev)->next_c = next;
-+ write_unlock(&l->lock);
-+
-+ __sock_put(sk);
-+}
-+
-+static void __l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+
-+ BT_DBG("conn %p, psm 0x%2.2x, dcid 0x%4.4x", conn, l2cap_pi(sk)->psm, l2cap_pi(sk)->dcid);
-+
-+ l2cap_pi(sk)->conn = conn;
-+
-+ if (sk->type == SOCK_SEQPACKET) {
-+ /* Alloc CID for connection-oriented socket */
-+ l2cap_pi(sk)->scid = l2cap_alloc_cid(l);
-+ } else if (sk->type == SOCK_DGRAM) {
-+ /* Connectionless socket */
-+ l2cap_pi(sk)->scid = 0x0002;
-+ l2cap_pi(sk)->dcid = 0x0002;
-+ l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU;
-+ } else {
-+ /* Raw socket can send/recv signalling messages only */
-+ l2cap_pi(sk)->scid = 0x0001;
-+ l2cap_pi(sk)->dcid = 0x0001;
-+ l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU;
-+ }
-+
-+ __l2cap_chan_link(l, sk);
-+
-+ if (parent)
-+ bluez_accept_enqueue(parent, sk);
-+}
-+
-+static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ write_lock(&l->lock);
-+ __l2cap_chan_add(conn, sk, parent);
-+ write_unlock(&l->lock);
-+}
-+
-+/* Delete channel.
-+ * Must be called on the locked socket. */
-+static void l2cap_chan_del(struct sock *sk, int err)
-+{
-+ struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-+ struct sock *parent = bluez_pi(sk)->parent;
-+
-+ l2cap_sock_clear_timer(sk);
-+
-+ BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
-+
-+ if (conn) {
-+ /* Unlink from channel list */
-+ l2cap_chan_unlink(&conn->chan_list, sk);
-+ l2cap_pi(sk)->conn = NULL;
-+ hci_conn_put(conn->hcon);
-+ }
-+
-+ sk->state = BT_CLOSED;
-+ sk->zapped = 1;
-+
-+ if (err)
-+ sk->err = err;
-+
-+ if (parent)
-+ parent->data_ready(parent, 0);
-+ else
-+ sk->state_change(sk);
-+}
-+
-+static void l2cap_conn_ready(struct l2cap_conn *conn)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ struct sock *sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ bh_lock_sock(sk);
-+
-+ if (sk->type != SOCK_SEQPACKET) {
-+ l2cap_sock_clear_timer(sk);
-+ sk->state = BT_CONNECTED;
-+ sk->state_change(sk);
-+ } else if (sk->state == BT_CONNECT) {
-+ l2cap_conn_req req;
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ req.psm = l2cap_pi(sk)->psm;
-+ l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
-+ }
-+
-+ bh_unlock_sock(sk);
-+ }
-+
-+ read_unlock(&l->lock);
-+}
-+
-+/* Notify sockets that we cannot guaranty reliability anymore */
-+static void l2cap_conn_unreliable(struct l2cap_conn *conn, int err)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ struct sock *sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ if (l2cap_pi(sk)->link_mode & L2CAP_LM_RELIABLE)
-+ sk->err = err;
-+ }
-+ read_unlock(&l->lock);
-+}
-+
-+static void l2cap_chan_ready(struct sock *sk)
-+{
-+ struct sock *parent = bluez_pi(sk)->parent;
-+
-+ BT_DBG("sk %p, parent %p", sk, parent);
-+
-+ l2cap_pi(sk)->conf_state = 0;
-+ l2cap_sock_clear_timer(sk);
-+
-+ if (!parent) {
-+ /* Outgoing channel.
-+ * Wake up socket sleeping on connect.
-+ */
-+ sk->state = BT_CONNECTED;
-+ sk->state_change(sk);
-+ } else {
-+ /* Incomming channel.
-+ * Wake up socket sleeping on accept.
-+ */
-+ parent->data_ready(parent, 0);
-+ }
-+}
-+
-+/* Copy frame to all raw sockets on that connection */
-+void l2cap_raw_recv(struct l2cap_conn *conn, struct sk_buff *skb)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ struct sk_buff *nskb;
-+ struct sock * sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ if (sk->type != SOCK_RAW)
-+ continue;
-+
-+ /* Don't send frame to the socket it came from */
-+ if (skb->sk == sk)
-+ continue;
-+
-+ if (!(nskb = skb_clone(skb, GFP_ATOMIC)))
-+ continue;
-+
-+ if (sock_queue_rcv_skb(sk, nskb))
-+ kfree_skb(nskb);
-+ }
-+ read_unlock(&l->lock);
-+}
-+
-+static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len)
-+{
-+ struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-+ struct sk_buff *skb, **frag;
-+ int err, hlen, count, sent=0;
-+ l2cap_hdr *lh;
-+
-+ BT_DBG("sk %p len %d", sk, len);
-+
-+ /* First fragment (with L2CAP header) */
-+ if (sk->type == SOCK_DGRAM)
-+ hlen = L2CAP_HDR_SIZE + 2;
-+ else
-+ hlen = L2CAP_HDR_SIZE;
-+
-+ count = MIN(conn->mtu - hlen, len);
-+
-+ skb = bluez_skb_send_alloc(sk, hlen + count,
-+ msg->msg_flags & MSG_DONTWAIT, &err);
-+ if (!skb)
-+ return err;
-+
-+ /* Create L2CAP header */
-+ lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-+ lh->cid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ lh->len = __cpu_to_le16(len + (hlen - L2CAP_HDR_SIZE));
-+
-+ if (sk->type == SOCK_DGRAM)
-+ put_unaligned(l2cap_pi(sk)->psm, (__u16 *) skb_put(skb, 2));
-+
-+ if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) {
-+ err = -EFAULT;
-+ goto fail;
-+ }
-+
-+ sent += count;
-+ len -= count;
-+
-+ /* Continuation fragments (no L2CAP header) */
-+ frag = &skb_shinfo(skb)->frag_list;
-+ while (len) {
-+ count = MIN(conn->mtu, len);
-+
-+ *frag = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err);
-+ if (!*frag)
-+ goto fail;
-+
-+ if (memcpy_fromiovec(skb_put(*frag, count), msg->msg_iov, count)) {
-+ err = -EFAULT;
-+ goto fail;
-+ }
-+
-+ sent += count;
-+ len -= count;
-+
-+ frag = &(*frag)->next;
-+ }
-+
-+ if ((err = hci_send_acl(conn->hcon, skb, 0)) < 0)
-+ goto fail;
-+
-+ return sent;
-+
-+fail:
-+ kfree_skb(skb);
-+ return err;
-+}
-+
-+/* --------- L2CAP signalling commands --------- */
-+static inline __u8 l2cap_get_ident(struct l2cap_conn *conn)
-+{
-+ __u8 id;
-+
-+ /* Get next available identificator.
-+ * 1 - 199 are used by kernel.
-+ * 200 - 254 are used by utilities like l2ping, etc
-+ */
-+
-+ spin_lock(&conn->lock);
-+
-+ if (++conn->tx_ident > 199)
-+ conn->tx_ident = 1;
-+
-+ id = conn->tx_ident;
-+
-+ spin_unlock(&conn->lock);
-+
-+ return id;
-+}
-+
-+static struct sk_buff *l2cap_build_cmd(struct l2cap_conn *conn,
-+ __u8 code, __u8 ident, __u16 dlen, void *data)
-+{
-+ struct sk_buff *skb, **frag;
-+ l2cap_cmd_hdr *cmd;
-+ l2cap_hdr *lh;
-+ int len, count;
-+
-+ BT_DBG("conn %p, code 0x%2.2x, ident 0x%2.2x, len %d", conn, code, ident, dlen);
-+
-+ len = L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE + dlen;
-+ count = MIN(conn->mtu, len);
-+
-+ skb = bluez_skb_alloc(count, GFP_ATOMIC);
-+ if (!skb)
-+ return NULL;
-+
-+ lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-+ lh->len = __cpu_to_le16(L2CAP_CMD_HDR_SIZE + dlen);
-+ lh->cid = __cpu_to_le16(0x0001);
-+
-+ cmd = (l2cap_cmd_hdr *) skb_put(skb, L2CAP_CMD_HDR_SIZE);
-+ cmd->code = code;
-+ cmd->ident = ident;
-+ cmd->len = __cpu_to_le16(dlen);
-+
-+ if (dlen) {
-+ count -= L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE;
-+ memcpy(skb_put(skb, count), data, count);
-+ data += count;
-+ }
-+
-+ len -= skb->len;
-+
-+ /* Continuation fragments (no L2CAP header) */
-+ frag = &skb_shinfo(skb)->frag_list;
-+ while (len) {
-+ count = MIN(conn->mtu, len);
-+
-+ *frag = bluez_skb_alloc(count, GFP_ATOMIC);
-+ if (!*frag)
-+ goto fail;
-+
-+ memcpy(skb_put(*frag, count), data, count);
-+
-+ len -= count;
-+ data += count;
-+
-+ frag = &(*frag)->next;
-+ }
-+
-+ return skb;
-+
-+fail:
-+ kfree_skb(skb);
-+ return NULL;
-+}
-+
-+static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data)
-+{
-+ __u8 ident = l2cap_get_ident(conn);
-+ struct sk_buff *skb = l2cap_build_cmd(conn, code, ident, len, data);
-+
-+ BT_DBG("code 0x%2.2x", code);
-+
-+ if (!skb)
-+ return -ENOMEM;
-+ return hci_send_acl(conn->hcon, skb, 0);
-+}
-+
-+static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data)
-+{
-+ struct sk_buff *skb = l2cap_build_cmd(conn, code, ident, len, data);
-+
-+ BT_DBG("code 0x%2.2x", code);
-+
-+ if (!skb)
-+ return -ENOMEM;
-+ return hci_send_acl(conn->hcon, skb, 0);
-+}
-+
-+static inline int l2cap_get_conf_opt(void **ptr, int *type, int *olen, unsigned long *val)
-+{
-+ l2cap_conf_opt *opt = *ptr;
-+ int len;
-+
-+ len = L2CAP_CONF_OPT_SIZE + opt->len;
-+ *ptr += len;
-+
-+ *type = opt->type;
-+ *olen = opt->len;
-+
-+ switch (opt->len) {
-+ case 1:
-+ *val = *((__u8 *) opt->val);
-+ break;
-+
-+ case 2:
-+ *val = __le16_to_cpu(*((__u16 *)opt->val));
-+ break;
-+
-+ case 4:
-+ *val = __le32_to_cpu(*((__u32 *)opt->val));
-+ break;
-+
-+ default:
-+ *val = (unsigned long) opt->val;
-+ break;
-+ };
-+
-+ BT_DBG("type 0x%2.2x len %d val 0x%lx", *type, opt->len, *val);
-+ return len;
-+}
-+
-+static inline void l2cap_parse_conf_req(struct sock *sk, void *data, int len)
-+{
-+ int type, hint, olen;
-+ unsigned long val;
-+ void *ptr = data;
-+
-+ BT_DBG("sk %p len %d", sk, len);
-+
-+ while (len >= L2CAP_CONF_OPT_SIZE) {
-+ len -= l2cap_get_conf_opt(&ptr, &type, &olen, &val);
-+
-+ hint = type & 0x80;
-+ type &= 0x7f;
-+
-+ switch (type) {
-+ case L2CAP_CONF_MTU:
-+ l2cap_pi(sk)->conf_mtu = val;
-+ break;
-+
-+ case L2CAP_CONF_FLUSH_TO:
-+ l2cap_pi(sk)->flush_to = val;
-+ break;
-+
-+ case L2CAP_CONF_QOS:
-+ break;
-+
-+ default:
-+ if (hint)
-+ break;
-+
-+ /* FIXME: Reject unknown option */
-+ break;
-+ };
-+ }
-+}
-+
-+static void l2cap_add_conf_opt(void **ptr, __u8 type, __u8 len, unsigned long val)
-+{
-+ register l2cap_conf_opt *opt = *ptr;
-+
-+ BT_DBG("type 0x%2.2x len %d val 0x%lx", type, len, val);
-+
-+ opt->type = type;
-+ opt->len = len;
-+
-+ switch (len) {
-+ case 1:
-+ *((__u8 *) opt->val) = val;
-+ break;
-+
-+ case 2:
-+ *((__u16 *) opt->val) = __cpu_to_le16(val);
-+ break;
-+
-+ case 4:
-+ *((__u32 *) opt->val) = __cpu_to_le32(val);
-+ break;
-+
-+ default:
-+ memcpy(opt->val, (void *) val, len);
-+ break;
-+ };
-+
-+ *ptr += L2CAP_CONF_OPT_SIZE + len;
-+}
-+
-+static int l2cap_build_conf_req(struct sock *sk, void *data)
-+{
-+ struct l2cap_pinfo *pi = l2cap_pi(sk);
-+ l2cap_conf_req *req = (l2cap_conf_req *) data;
-+ void *ptr = req->data;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (pi->imtu != L2CAP_DEFAULT_MTU)
-+ l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->imtu);
-+
-+ /* FIXME. Need actual value of the flush timeout */
-+ //if (flush_to != L2CAP_DEFAULT_FLUSH_TO)
-+ // l2cap_add_conf_opt(&ptr, L2CAP_CONF_FLUSH_TO, 2, pi->flush_to);
-+
-+ req->dcid = __cpu_to_le16(pi->dcid);
-+ req->flags = __cpu_to_le16(0);
-+
-+ return ptr - data;
-+}
-+
-+static inline int l2cap_conf_output(struct sock *sk, void **ptr)
-+{
-+ struct l2cap_pinfo *pi = l2cap_pi(sk);
-+ int result = 0;
-+
-+ /* Configure output options and let the other side know
-+ * which ones we don't like.
-+ */
-+ if (pi->conf_mtu < pi->omtu) {
-+ l2cap_add_conf_opt(ptr, L2CAP_CONF_MTU, 2, pi->omtu);
-+ result = L2CAP_CONF_UNACCEPT;
-+ } else {
-+ pi->omtu = pi->conf_mtu;
-+ }
-+
-+ BT_DBG("sk %p result %d", sk, result);
-+ return result;
-+}
-+
-+static int l2cap_build_conf_rsp(struct sock *sk, void *data, int *result)
-+{
-+ l2cap_conf_rsp *rsp = (l2cap_conf_rsp *) data;
-+ void *ptr = rsp->data;
-+ u16 flags = 0;
-+
-+ BT_DBG("sk %p complete %d", sk, result ? 1 : 0);
-+
-+ if (result)
-+ *result = l2cap_conf_output(sk, &ptr);
-+ else
-+ flags |= 0x0001;
-+
-+ rsp->scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ rsp->result = __cpu_to_le16(result ? *result : 0);
-+ rsp->flags = __cpu_to_le16(flags);
-+
-+ return ptr - data;
-+}
-+
-+static inline int l2cap_connect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ struct l2cap_chan_list *list = &conn->chan_list;
-+ l2cap_conn_req *req = (l2cap_conn_req *) data;
-+ l2cap_conn_rsp rsp;
-+ struct sock *sk, *parent;
-+ int result = 0, status = 0;
-+
-+ __u16 dcid = 0, scid = __le16_to_cpu(req->scid);
-+ __u16 psm = req->psm;
-+
-+ BT_DBG("psm 0x%2.2x scid 0x%4.4x", psm, scid);
-+
-+ /* Check if we have socket listening on psm */
-+ parent = l2cap_get_sock_by_psm(BT_LISTEN, psm, conn->src);
-+ if (!parent) {
-+ result = L2CAP_CR_BAD_PSM;
-+ goto sendresp;
-+ }
-+
-+ result = L2CAP_CR_NO_MEM;
-+
-+ /* Check for backlog size */
-+ if (parent->ack_backlog > parent->max_ack_backlog) {
-+ BT_DBG("backlog full %d", parent->ack_backlog);
-+ goto response;
-+ }
-+
-+ sk = l2cap_sock_alloc(NULL, BTPROTO_L2CAP, GFP_ATOMIC);
-+ if (!sk)
-+ goto response;
-+
-+ write_lock(&list->lock);
-+
-+ /* Check if we already have channel with that dcid */
-+ if (__l2cap_get_chan_by_dcid(list, scid)) {
-+ write_unlock(&list->lock);
-+ sk->zapped = 1;
-+ l2cap_sock_kill(sk);
-+ goto response;
-+ }
-+
-+ hci_conn_hold(conn->hcon);
-+
-+ l2cap_sock_init(sk, parent);
-+ bacpy(&bluez_pi(sk)->src, conn->src);
-+ bacpy(&bluez_pi(sk)->dst, conn->dst);
-+ l2cap_pi(sk)->psm = psm;
-+ l2cap_pi(sk)->dcid = scid;
-+
-+ __l2cap_chan_add(conn, sk, parent);
-+ dcid = l2cap_pi(sk)->scid;
-+
-+ l2cap_sock_set_timer(sk, sk->sndtimeo);
-+
-+ /* Service level security */
-+ result = L2CAP_CR_PEND;
-+ status = L2CAP_CS_AUTHEN_PEND;
-+ sk->state = BT_CONNECT2;
-+ l2cap_pi(sk)->ident = cmd->ident;
-+
-+ if (l2cap_pi(sk)->link_mode & L2CAP_LM_ENCRYPT) {
-+ if (!hci_conn_encrypt(conn->hcon))
-+ goto done;
-+ } else if (l2cap_pi(sk)->link_mode & L2CAP_LM_AUTH) {
-+ if (!hci_conn_auth(conn->hcon))
-+ goto done;
-+ }
-+
-+ sk->state = BT_CONFIG;
-+ result = status = 0;
-+
-+done:
-+ write_unlock(&list->lock);
-+
-+response:
-+ bh_unlock_sock(parent);
-+
-+sendresp:
-+ rsp.scid = __cpu_to_le16(scid);
-+ rsp.dcid = __cpu_to_le16(dcid);
-+ rsp.result = __cpu_to_le16(result);
-+ rsp.status = __cpu_to_le16(status);
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp);
-+ return 0;
-+}
-+
-+static inline int l2cap_connect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_conn_rsp *rsp = (l2cap_conn_rsp *) data;
-+ __u16 scid, dcid, result, status;
-+ struct sock *sk;
-+ char req[128];
-+
-+ scid = __le16_to_cpu(rsp->scid);
-+ dcid = __le16_to_cpu(rsp->dcid);
-+ result = __le16_to_cpu(rsp->result);
-+ status = __le16_to_cpu(rsp->status);
-+
-+ BT_DBG("dcid 0x%4.4x scid 0x%4.4x result 0x%2.2x status 0x%2.2x", dcid, scid, result, status);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-+ return -ENOENT;
-+
-+ switch (result) {
-+ case L2CAP_CR_SUCCESS:
-+ sk->state = BT_CONFIG;
-+ l2cap_pi(sk)->dcid = dcid;
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_REQ_SENT;
-+
-+ l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-+ break;
-+
-+ case L2CAP_CR_PEND:
-+ break;
-+
-+ default:
-+ l2cap_chan_del(sk, ECONNREFUSED);
-+ break;
-+ }
-+
-+ bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_config_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_conf_req * req = (l2cap_conf_req *) data;
-+ __u16 dcid, flags;
-+ __u8 rsp[64];
-+ struct sock *sk;
-+ int result;
-+
-+ dcid = __le16_to_cpu(req->dcid);
-+ flags = __le16_to_cpu(req->flags);
-+
-+ BT_DBG("dcid 0x%4.4x flags 0x%2.2x", dcid, flags);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-+ return -ENOENT;
-+
-+ l2cap_parse_conf_req(sk, req->data, cmd->len - L2CAP_CONF_REQ_SIZE);
-+
-+ if (flags & 0x0001) {
-+ /* Incomplete config. Send empty response. */
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, NULL), rsp);
-+ goto unlock;
-+ }
-+
-+ /* Complete config. */
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, &result), rsp);
-+
-+ if (result)
-+ goto unlock;
-+
-+ /* Output config done */
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_OUTPUT_DONE;
-+
-+ if (l2cap_pi(sk)->conf_state & L2CAP_CONF_INPUT_DONE) {
-+ sk->state = BT_CONNECTED;
-+ l2cap_chan_ready(sk);
-+ } else if (!(l2cap_pi(sk)->conf_state & L2CAP_CONF_REQ_SENT)) {
-+ char req[64];
-+ l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-+ }
-+
-+unlock:
-+ bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_config_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_conf_rsp *rsp = (l2cap_conf_rsp *)data;
-+ __u16 scid, flags, result;
-+ struct sock *sk;
-+ int err = 0;
-+
-+ scid = __le16_to_cpu(rsp->scid);
-+ flags = __le16_to_cpu(rsp->flags);
-+ result = __le16_to_cpu(rsp->result);
-+
-+ BT_DBG("scid 0x%4.4x flags 0x%2.2x result 0x%2.2x", scid, flags, result);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-+ return -ENOENT;
-+
-+ switch (result) {
-+ case L2CAP_CONF_SUCCESS:
-+ break;
-+
-+ case L2CAP_CONF_UNACCEPT:
-+ if (++l2cap_pi(sk)->conf_retry < L2CAP_CONF_MAX_RETRIES) {
-+ char req[128];
-+ /*
-+ It does not make sense to adjust L2CAP parameters
-+ that are currently defined in the spec. We simply
-+ resend config request that we sent earlier. It is
-+ stupid :) but it helps qualification testing
-+ which expects at least some response from us.
-+ */
-+ l2cap_send_req(conn, L2CAP_CONF_REQ,
-+ l2cap_build_conf_req(sk, req), req);
-+ goto done;
-+ }
-+ default:
-+ sk->state = BT_DISCONN;
-+ sk->err = ECONNRESET;
-+ l2cap_sock_set_timer(sk, HZ * 5);
-+ {
-+ l2cap_disconn_req req;
-+ req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
-+ }
-+ goto done;
-+ }
-+
-+ if (flags & 0x01)
-+ goto done;
-+
-+ /* Input config done */
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_INPUT_DONE;
-+
-+ if (l2cap_pi(sk)->conf_state & L2CAP_CONF_OUTPUT_DONE) {
-+ sk->state = BT_CONNECTED;
-+ l2cap_chan_ready(sk);
-+ }
-+
-+done:
-+ bh_unlock_sock(sk);
-+ return err;
-+}
-+
-+static inline int l2cap_disconnect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_disconn_req *req = (l2cap_disconn_req *) data;
-+ l2cap_disconn_rsp rsp;
-+ __u16 dcid, scid;
-+ struct sock *sk;
-+
-+ scid = __le16_to_cpu(req->scid);
-+ dcid = __le16_to_cpu(req->dcid);
-+
-+ BT_DBG("scid 0x%4.4x dcid 0x%4.4x", scid, dcid);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-+ return 0;
-+
-+ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_DISCONN_RSP, L2CAP_DISCONN_RSP_SIZE, &rsp);
-+
-+ sk->shutdown = SHUTDOWN_MASK;
-+
-+ l2cap_chan_del(sk, ECONNRESET);
-+ bh_unlock_sock(sk);
-+
-+ l2cap_sock_kill(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_disconnect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_disconn_rsp *rsp = (l2cap_disconn_rsp *) data;
-+ __u16 dcid, scid;
-+ struct sock *sk;
-+
-+ scid = __le16_to_cpu(rsp->scid);
-+ dcid = __le16_to_cpu(rsp->dcid);
-+
-+ BT_DBG("dcid 0x%4.4x scid 0x%4.4x", dcid, scid);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-+ return 0;
-+ l2cap_chan_del(sk, 0);
-+ bh_unlock_sock(sk);
-+
-+ l2cap_sock_kill(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_information_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, u8 *data)
-+{
-+ l2cap_info_req *req = (l2cap_info_req *) data;
-+ l2cap_info_rsp rsp;
-+ u16 type;
-+
-+ type = __le16_to_cpu(req->type);
-+
-+ BT_DBG("type 0x%4.4x", type);
-+
-+ rsp.type = __cpu_to_le16(type);
-+ rsp.result = __cpu_to_le16(L2CAP_IR_NOTSUPP);
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_INFO_RSP, sizeof(rsp), &rsp);
-+ return 0;
-+}
-+
-+static inline int l2cap_information_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, u8 *data)
-+{
-+ l2cap_info_rsp *rsp = (l2cap_info_rsp *) data;
-+ u16 type, result;
-+
-+ type = __le16_to_cpu(rsp->type);
-+ result = __le16_to_cpu(rsp->result);
-+
-+ BT_DBG("type 0x%4.4x result 0x%2.2x", type, result);
-+
-+ return 0;
-+}
-+
-+static inline void l2cap_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb)
-+{
-+ __u8 *data = skb->data;
-+ int len = skb->len;
-+ l2cap_cmd_hdr cmd;
-+ int err = 0;
-+
-+ l2cap_raw_recv(conn, skb);
-+
-+ while (len >= L2CAP_CMD_HDR_SIZE) {
-+ memcpy(&cmd, data, L2CAP_CMD_HDR_SIZE);
-+ data += L2CAP_CMD_HDR_SIZE;
-+ len -= L2CAP_CMD_HDR_SIZE;
-+
-+ cmd.len = __le16_to_cpu(cmd.len);
-+
-+ BT_DBG("code 0x%2.2x len %d id 0x%2.2x", cmd.code, cmd.len, cmd.ident);
-+
-+ if (cmd.len > len || !cmd.ident) {
-+ BT_DBG("corrupted command");
-+ break;
-+ }
-+
-+ switch (cmd.code) {
-+ case L2CAP_COMMAND_REJ:
-+ /* FIXME: We should process this */
-+ break;
-+
-+ case L2CAP_CONN_REQ:
-+ err = l2cap_connect_req(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_CONN_RSP:
-+ err = l2cap_connect_rsp(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_CONF_REQ:
-+ err = l2cap_config_req(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_CONF_RSP:
-+ err = l2cap_config_rsp(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_DISCONN_REQ:
-+ err = l2cap_disconnect_req(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_DISCONN_RSP:
-+ err = l2cap_disconnect_rsp(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_ECHO_REQ:
-+ l2cap_send_rsp(conn, cmd.ident, L2CAP_ECHO_RSP, cmd.len, data);
-+ break;
-+
-+ case L2CAP_ECHO_RSP:
-+ break;
-+
-+ case L2CAP_INFO_REQ:
-+ err = l2cap_information_req(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_INFO_RSP:
-+ err = l2cap_information_rsp(conn, &cmd, data);
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown signaling command 0x%2.2x", cmd.code);
-+ err = -EINVAL;
-+ break;
-+ };
-+
-+ if (err) {
-+ l2cap_cmd_rej rej;
-+ BT_DBG("error %d", err);
-+
-+ /* FIXME: Map err to a valid reason */
-+ rej.reason = __cpu_to_le16(0);
-+ l2cap_send_rsp(conn, cmd.ident, L2CAP_COMMAND_REJ, L2CAP_CMD_REJ_SIZE, &rej);
-+ }
-+
-+ data += cmd.len;
-+ len -= cmd.len;
-+ }
-+
-+ kfree_skb(skb);
-+}
-+
-+static inline int l2cap_data_channel(struct l2cap_conn *conn, __u16 cid, struct sk_buff *skb)
-+{
-+ struct sock *sk;
-+
-+ sk = l2cap_get_chan_by_scid(&conn->chan_list, cid);
-+ if (!sk) {
-+ BT_DBG("unknown cid 0x%4.4x", cid);
-+ goto drop;
-+ }
-+
-+ BT_DBG("sk %p, len %d", sk, skb->len);
-+
-+ if (sk->state != BT_CONNECTED)
-+ goto drop;
-+
-+ if (l2cap_pi(sk)->imtu < skb->len)
-+ goto drop;
-+
-+ /* If socket recv buffers overflows we drop data here
-+ * which is *bad* because L2CAP has to be reliable.
-+ * But we don't have any other choice. L2CAP doesn't
-+ * provide flow control mechanism */
-+
-+ if (!sock_queue_rcv_skb(sk, skb))
-+ goto done;
-+
-+drop:
-+ kfree_skb(skb);
-+
-+done:
-+ if (sk) bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_conless_channel(struct l2cap_conn *conn, __u16 psm, struct sk_buff *skb)
-+{
-+ struct sock *sk;
-+
-+ sk = l2cap_get_sock_by_psm(0, psm, conn->src);
-+ if (!sk)
-+ goto drop;
-+
-+ BT_DBG("sk %p, len %d", sk, skb->len);
-+
-+ if (sk->state != BT_BOUND && sk->state != BT_CONNECTED)
-+ goto drop;
-+
-+ if (l2cap_pi(sk)->imtu < skb->len)
-+ goto drop;
-+
-+ if (!sock_queue_rcv_skb(sk, skb))
-+ goto done;
-+
-+drop:
-+ kfree_skb(skb);
-+
-+done:
-+ if (sk) bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb)
-+{
-+ l2cap_hdr *lh = (l2cap_hdr *) skb->data;
-+ __u16 cid, psm, len;
-+
-+ skb_pull(skb, L2CAP_HDR_SIZE);
-+ cid = __le16_to_cpu(lh->cid);
-+ len = __le16_to_cpu(lh->len);
-+
-+ BT_DBG("len %d, cid 0x%4.4x", len, cid);
-+
-+ switch (cid) {
-+ case 0x0001:
-+ l2cap_sig_channel(conn, skb);
-+ break;
-+
-+ case 0x0002:
-+ psm = get_unaligned((__u16 *) skb->data);
-+ skb_pull(skb, 2);
-+ l2cap_conless_channel(conn, psm, skb);
-+ break;
-+
-+ default:
-+ l2cap_data_channel(conn, cid, skb);
-+ break;
-+ }
-+}
-+
-+/* ------------ L2CAP interface with lower layer (HCI) ------------- */
-+
-+static int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
-+{
-+ int exact = 0, lm1 = 0, lm2 = 0;
-+ register struct sock *sk;
-+
-+ if (type != ACL_LINK)
-+ return 0;
-+
-+ BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
-+
-+ /* Find listening sockets and check their link_mode */
-+ read_lock(&l2cap_sk_list.lock);
-+ for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-+ if (sk->state != BT_LISTEN)
-+ continue;
-+
-+ if (!bacmp(&bluez_pi(sk)->src, &hdev->bdaddr)) {
-+ lm1 |= (HCI_LM_ACCEPT | l2cap_pi(sk)->link_mode);
-+ exact++;
-+ } else if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ lm2 |= (HCI_LM_ACCEPT | l2cap_pi(sk)->link_mode);
-+ }
-+ read_unlock(&l2cap_sk_list.lock);
-+
-+ return exact ? lm1 : lm2;
-+}
-+
-+static int l2cap_connect_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status);
-+
-+ if (hcon->type != ACL_LINK)
-+ return 0;
-+
-+ if (!status) {
-+ struct l2cap_conn *conn;
-+
-+ conn = l2cap_conn_add(hcon, status);
-+ if (conn)
-+ l2cap_conn_ready(conn);
-+ } else
-+ l2cap_conn_del(hcon, bterr(status));
-+
-+ return 0;
-+}
-+
-+static int l2cap_disconn_ind(struct hci_conn *hcon, __u8 reason)
-+{
-+ BT_DBG("hcon %p reason %d", hcon, reason);
-+
-+ if (hcon->type != ACL_LINK)
-+ return 0;
-+
-+ l2cap_conn_del(hcon, bterr(reason));
-+ return 0;
-+}
-+
-+static int l2cap_auth_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ struct l2cap_chan_list *l;
-+ struct l2cap_conn *conn;
-+ l2cap_conn_rsp rsp;
-+ struct sock *sk;
-+ int result;
-+
-+ if (!(conn = hcon->l2cap_data))
-+ return 0;
-+ l = &conn->chan_list;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ bh_lock_sock(sk);
-+
-+ if (sk->state != BT_CONNECT2 ||
-+ (l2cap_pi(sk)->link_mode & L2CAP_LM_ENCRYPT)) {
-+ bh_unlock_sock(sk);
-+ continue;
-+ }
-+
-+ if (!status) {
-+ sk->state = BT_CONFIG;
-+ result = 0;
-+ } else {
-+ sk->state = BT_DISCONN;
-+ l2cap_sock_set_timer(sk, HZ/10);
-+ result = L2CAP_CR_SEC_BLOCK;
-+ }
-+
-+ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ rsp.result = __cpu_to_le16(result);
-+ rsp.status = __cpu_to_le16(0);
-+ l2cap_send_rsp(conn, l2cap_pi(sk)->ident, L2CAP_CONN_RSP,
-+ L2CAP_CONN_RSP_SIZE, &rsp);
-+
-+ bh_unlock_sock(sk);
-+ }
-+
-+ read_unlock(&l->lock);
-+ return 0;
-+}
-+
-+static int l2cap_encrypt_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ struct l2cap_chan_list *l;
-+ struct l2cap_conn *conn;
-+ l2cap_conn_rsp rsp;
-+ struct sock *sk;
-+ int result;
-+
-+ if (!(conn = hcon->l2cap_data))
-+ return 0;
-+ l = &conn->chan_list;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ bh_lock_sock(sk);
-+
-+ if (sk->state != BT_CONNECT2) {
-+ bh_unlock_sock(sk);
-+ continue;
-+ }
-+
-+ if (!status) {
-+ sk->state = BT_CONFIG;
-+ result = 0;
-+ } else {
-+ sk->state = BT_DISCONN;
-+ l2cap_sock_set_timer(sk, HZ/10);
-+ result = L2CAP_CR_SEC_BLOCK;
-+ }
-+
-+ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ rsp.result = __cpu_to_le16(result);
-+ rsp.status = __cpu_to_le16(0);
-+ l2cap_send_rsp(conn, l2cap_pi(sk)->ident, L2CAP_CONN_RSP,
-+ L2CAP_CONN_RSP_SIZE, &rsp);
-+
-+ bh_unlock_sock(sk);
-+ }
-+
-+ read_unlock(&l->lock);
-+ return 0;
-+}
-+
-+static int l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb, __u16 flags)
-+{
-+ struct l2cap_conn *conn = hcon->l2cap_data;
-+
-+ if (!conn && !(conn = l2cap_conn_add(hcon, 0)))
-+ goto drop;
-+
-+ BT_DBG("conn %p len %d flags 0x%x", conn, skb->len, flags);
-+
-+ if (flags & ACL_START) {
-+ l2cap_hdr *hdr;
-+ int len;
-+
-+ if (conn->rx_len) {
-+ BT_ERR("Unexpected start frame (len %d)", skb->len);
-+ kfree_skb(conn->rx_skb);
-+ conn->rx_skb = NULL;
-+ conn->rx_len = 0;
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ }
-+
-+ if (skb->len < 2) {
-+ BT_ERR("Frame is too short (len %d)", skb->len);
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ hdr = (l2cap_hdr *) skb->data;
-+ len = __le16_to_cpu(hdr->len) + L2CAP_HDR_SIZE;
-+
-+ if (len == skb->len) {
-+ /* Complete frame received */
-+ l2cap_recv_frame(conn, skb);
-+ return 0;
-+ }
-+
-+ BT_DBG("Start: total len %d, frag len %d", len, skb->len);
-+
-+ if (skb->len > len) {
-+ BT_ERR("Frame is too long (len %d, expected len %d)",
-+ skb->len, len);
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ /* Allocate skb for the complete frame including header */
-+ conn->rx_skb = bluez_skb_alloc(len, GFP_ATOMIC);
-+ if (!conn->rx_skb)
-+ goto drop;
-+
-+ memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
-+ conn->rx_len = len - skb->len;
-+ } else {
-+ BT_DBG("Cont: frag len %d (expecting %d)", skb->len, conn->rx_len);
-+
-+ if (!conn->rx_len) {
-+ BT_ERR("Unexpected continuation frame (len %d)", skb->len);
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ if (skb->len > conn->rx_len) {
-+ BT_ERR("Fragment is too long (len %d, expected %d)",
-+ skb->len, conn->rx_len);
-+ kfree_skb(conn->rx_skb);
-+ conn->rx_skb = NULL;
-+ conn->rx_len = 0;
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
-+ conn->rx_len -= skb->len;
-+
-+ if (!conn->rx_len) {
-+ /* Complete frame received */
-+ l2cap_recv_frame(conn, conn->rx_skb);
-+ conn->rx_skb = NULL;
-+ }
-+ }
-+
-+drop:
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+/* ----- Proc fs support ------ */
-+static int l2cap_sock_dump(char *buf, struct bluez_sock_list *list)
-+{
-+ struct l2cap_pinfo *pi;
-+ struct sock *sk;
-+ char *ptr = buf;
-+
-+ read_lock_bh(&list->lock);
-+
-+ for (sk = list->head; sk; sk = sk->next) {
-+ pi = l2cap_pi(sk);
-+ ptr += sprintf(ptr, "%s %s %d %d 0x%4.4x 0x%4.4x %d %d 0x%x\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ sk->state, pi->psm, pi->scid, pi->dcid, pi->imtu, pi->omtu,
-+ pi->link_mode);
-+ }
-+
-+ read_unlock_bh(&list->lock);
-+
-+ ptr += sprintf(ptr, "\n");
-+ return ptr - buf;
-+}
-+
-+static int l2cap_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
-+{
-+ char *ptr = buf;
-+ int len;
-+
-+ BT_DBG("count %d, offset %ld", count, offset);
-+
-+ ptr += l2cap_sock_dump(ptr, &l2cap_sk_list);
-+ len = ptr - buf;
-+
-+ if (len <= count + offset)
-+ *eof = 1;
-+
-+ *start = buf + offset;
-+ len -= offset;
-+
-+ if (len > count)
-+ len = count;
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+
-+static struct proto_ops l2cap_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: l2cap_sock_release,
-+ bind: l2cap_sock_bind,
-+ connect: l2cap_sock_connect,
-+ listen: l2cap_sock_listen,
-+ accept: l2cap_sock_accept,
-+ getname: l2cap_sock_getname,
-+ sendmsg: l2cap_sock_sendmsg,
-+ recvmsg: bluez_sock_recvmsg,
-+ poll: bluez_sock_poll,
-+ socketpair: sock_no_socketpair,
-+ ioctl: sock_no_ioctl,
-+ shutdown: l2cap_sock_shutdown,
-+ setsockopt: l2cap_sock_setsockopt,
-+ getsockopt: l2cap_sock_getsockopt,
-+ mmap: sock_no_mmap
-+};
-+
-+static struct net_proto_family l2cap_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: l2cap_sock_create
-+};
-+
-+static struct hci_proto l2cap_hci_proto = {
-+ name: "L2CAP",
-+ id: HCI_PROTO_L2CAP,
-+ connect_ind: l2cap_connect_ind,
-+ connect_cfm: l2cap_connect_cfm,
-+ disconn_ind: l2cap_disconn_ind,
-+ recv_acldata: l2cap_recv_acldata,
-+ auth_cfm: l2cap_auth_cfm,
-+ encrypt_cfm: l2cap_encrypt_cfm
-+};
-+
-+int __init l2cap_init(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops))) {
-+ BT_ERR("Can't register L2CAP socket");
-+ return err;
-+ }
-+
-+ if ((err = hci_register_proto(&l2cap_hci_proto))) {
-+ BT_ERR("Can't register L2CAP protocol");
-+ return err;
-+ }
-+
-+ create_proc_read_entry("bluetooth/l2cap", 0, 0, l2cap_read_proc, NULL);
-+
-+ BT_INFO("BlueZ L2CAP ver %s Copyright (C) 2000,2001 Qualcomm Inc", VERSION);
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ return 0;
-+}
-+
-+void l2cap_cleanup(void)
-+{
-+ remove_proc_entry("bluetooth/l2cap", NULL);
-+
-+ /* Unregister socket and protocol */
-+ if (bluez_sock_unregister(BTPROTO_L2CAP))
-+ BT_ERR("Can't unregister L2CAP socket");
-+
-+ if (hci_unregister_proto(&l2cap_hci_proto))
-+ BT_ERR("Can't unregister L2CAP protocol");
-+}
-+
-+void l2cap_load(void)
-+{
-+ /* Dummy function to trigger automatic L2CAP module loading by
-+ other modules that use L2CAP sockets but do not use any other
-+ symbols from it. */
-+ return;
-+}
-+
-+EXPORT_SYMBOL(l2cap_load);
-+
-+module_init(l2cap_init);
-+module_exit(l2cap_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_DESCRIPTION("BlueZ L2CAP ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/l2cap_core.c linux-2.4.18-mh15/net/bluetooth/l2cap_core.c
---- linux-2.4.18/net/bluetooth/l2cap_core.c 2001-09-30 21:26:08.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/l2cap_core.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,2316 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * BlueZ L2CAP core and sockets.
-- *
-- * $Id: l2cap_core.c,v 1.19 2001/08/03 04:19:50 maxk Exp $
-- */
--#define VERSION "1.1"
--
--#include <linux/config.h>
--#include <linux/module.h>
--
--#include <linux/types.h>
--#include <linux/errno.h>
--#include <linux/kernel.h>
--#include <linux/major.h>
--#include <linux/sched.h>
--#include <linux/slab.h>
--#include <linux/poll.h>
--#include <linux/fcntl.h>
--#include <linux/init.h>
--#include <linux/skbuff.h>
--#include <linux/interrupt.h>
--#include <linux/socket.h>
--#include <linux/skbuff.h>
--#include <linux/proc_fs.h>
--#include <linux/list.h>
--#include <net/sock.h>
--
--#include <asm/system.h>
--#include <asm/uaccess.h>
--
--#include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
--#include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/l2cap.h>
--#include <net/bluetooth/l2cap_core.h>
--
--#ifndef L2CAP_DEBUG
--#undef DBG
--#define DBG( A... )
--#endif
--
--struct proto_ops l2cap_sock_ops;
--
--struct bluez_sock_list l2cap_sk_list = {
-- lock: RW_LOCK_UNLOCKED
--};
--
--struct list_head l2cap_iff_list = LIST_HEAD_INIT(l2cap_iff_list);
--rwlock_t l2cap_rt_lock = RW_LOCK_UNLOCKED;
--
--static int l2cap_conn_del(struct l2cap_conn *conn, int err);
--
--static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent);
--static void l2cap_chan_del(struct sock *sk, int err);
--static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len);
--
--static void l2cap_sock_close(struct sock *sk);
--static void l2cap_sock_kill(struct sock *sk);
--
--static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data);
--static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data);
--
--/* -------- L2CAP interfaces & routing --------- */
--/* Add/delete L2CAP interface.
-- * Must be called with locked rt_lock
-- */
--
--static void l2cap_iff_add(struct hci_dev *hdev)
--{
-- struct l2cap_iff *iff;
--
-- DBG("%s", hdev->name);
--
-- DBG("iff_list %p next %p prev %p", &l2cap_iff_list, l2cap_iff_list.next, l2cap_iff_list.prev);
--
-- /* Allocate new interface and lock HCI device */
-- if (!(iff = kmalloc(sizeof(struct l2cap_iff), GFP_KERNEL))) {
-- ERR("Can't allocate new interface %s", hdev->name);
-- return;
-- }
-- memset(iff, 0, sizeof(struct l2cap_iff));
--
-- hci_dev_hold(hdev);
-- hdev->l2cap_data = iff;
-- iff->hdev = hdev;
-- iff->mtu = hdev->acl_mtu - HCI_ACL_HDR_SIZE;
-- iff->bdaddr = &hdev->bdaddr;
--
-- spin_lock_init(&iff->lock);
-- INIT_LIST_HEAD(&iff->conn_list);
--
-- list_add(&iff->list, &l2cap_iff_list);
--}
--
--static void l2cap_iff_del(struct hci_dev *hdev)
--{
-- struct l2cap_iff *iff;
--
-- if (!(iff = hdev->l2cap_data))
-- return;
--
-- DBG("%s iff %p", hdev->name, iff);
--
-- list_del(&iff->list);
--
-- l2cap_iff_lock(iff);
--
-- /* Drop connections */
-- while (!list_empty(&iff->conn_list)) {
-- struct l2cap_conn *c;
--
-- c = list_entry(iff->conn_list.next, struct l2cap_conn, list);
-- l2cap_conn_del(c, ENODEV);
-- }
--
-- l2cap_iff_unlock(iff);
--
-- /* Unlock HCI device */
-- hdev->l2cap_data = NULL;
-- hci_dev_put(hdev);
--
-- kfree(iff);
--}
--
--/* Get route. Returns L2CAP interface.
-- * Must be called with locked rt_lock
-- */
--static struct l2cap_iff *l2cap_get_route(bdaddr_t *src, bdaddr_t *dst)
--{
-- struct list_head *p;
-- int use_src;
--
-- DBG("%s -> %s", batostr(src), batostr(dst));
--
-- use_src = bacmp(src, BDADDR_ANY) ? 0 : 1;
--
-- /* Simple routing:
-- * No source address - find interface with bdaddr != dst
-- * Source address - find interface with bdaddr == src
-- */
--
-- list_for_each(p, &l2cap_iff_list) {
-- struct l2cap_iff *iff;
--
-- iff = list_entry(p, struct l2cap_iff, list);
--
-- if (use_src && !bacmp(iff->bdaddr, src))
-- return iff;
-- else if (bacmp(iff->bdaddr, dst))
-- return iff;
-- }
-- return NULL;
--}
--
--/* ----- L2CAP timers ------ */
--static void l2cap_sock_timeout(unsigned long arg)
--{
-- struct sock *sk = (struct sock *) arg;
--
-- DBG("sock %p state %d", sk, sk->state);
--
-- bh_lock_sock(sk);
-- switch (sk->state) {
-- case BT_DISCONN:
-- l2cap_chan_del(sk, ETIMEDOUT);
-- break;
--
-- default:
-- sk->err = ETIMEDOUT;
-- sk->state_change(sk);
-- break;
-- };
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
-- sock_put(sk);
--}
--
--static void l2cap_sock_set_timer(struct sock *sk, long timeout)
--{
-- DBG("sock %p state %d timeout %ld", sk, sk->state, timeout);
--
-- if (!mod_timer(&sk->timer, jiffies + timeout))
-- sock_hold(sk);
--}
--
--static void l2cap_sock_clear_timer(struct sock *sk)
--{
-- DBG("sock %p state %d", sk, sk->state);
--
-- if (timer_pending(&sk->timer) && del_timer(&sk->timer))
-- __sock_put(sk);
--}
--
--static void l2cap_sock_init_timer(struct sock *sk)
--{
-- init_timer(&sk->timer);
-- sk->timer.function = l2cap_sock_timeout;
-- sk->timer.data = (unsigned long)sk;
--}
--
--static void l2cap_conn_timeout(unsigned long arg)
--{
-- struct l2cap_conn *conn = (void *)arg;
--
-- DBG("conn %p state %d", conn, conn->state);
--
-- if (conn->state == BT_CONNECTED) {
-- hci_disconnect(conn->hconn, 0x13);
-- }
--
-- return;
--}
--
--static void l2cap_conn_set_timer(struct l2cap_conn *conn, long timeout)
--{
-- DBG("conn %p state %d timeout %ld", conn, conn->state, timeout);
--
-- mod_timer(&conn->timer, jiffies + timeout);
--}
--
--static void l2cap_conn_clear_timer(struct l2cap_conn *conn)
--{
-- DBG("conn %p state %d", conn, conn->state);
--
-- del_timer(&conn->timer);
--}
--
--static void l2cap_conn_init_timer(struct l2cap_conn *conn)
--{
-- init_timer(&conn->timer);
-- conn->timer.function = l2cap_conn_timeout;
-- conn->timer.data = (unsigned long)conn;
--}
--
--/* -------- L2CAP connections --------- */
--/* Add new connection to the interface.
-- * Interface must be locked
-- */
--static struct l2cap_conn *l2cap_conn_add(struct l2cap_iff *iff, bdaddr_t *dst)
--{
-- struct l2cap_conn *conn;
-- bdaddr_t *src = iff->bdaddr;
--
-- if (!(conn = kmalloc(sizeof(struct l2cap_conn), GFP_KERNEL)))
-- return NULL;
--
-- memset(conn, 0, sizeof(struct l2cap_conn));
--
-- conn->state = BT_OPEN;
-- conn->iff = iff;
-- bacpy(&conn->src, src);
-- bacpy(&conn->dst, dst);
--
-- spin_lock_init(&conn->lock);
-- conn->chan_list.lock = RW_LOCK_UNLOCKED;
--
-- l2cap_conn_init_timer(conn);
--
-- __l2cap_conn_link(iff, conn);
--
-- DBG("%s -> %s, %p", batostr(src), batostr(dst), conn);
--
-- MOD_INC_USE_COUNT;
--
-- return conn;
--}
--
--/* Delete connection on the interface.
-- * Interface must be locked
-- */
--static int l2cap_conn_del(struct l2cap_conn *conn, int err)
--{
-- struct sock *sk;
--
-- DBG("conn %p, state %d, err %d", conn, conn->state, err);
--
-- l2cap_conn_clear_timer(conn);
-- __l2cap_conn_unlink(conn->iff, conn);
--
-- conn->state = BT_CLOSED;
--
-- if (conn->rx_skb)
-- kfree_skb(conn->rx_skb);
--
-- /* Kill channels */
-- while ((sk = conn->chan_list.head)) {
-- bh_lock_sock(sk);
-- l2cap_sock_clear_timer(sk);
-- l2cap_chan_del(sk, err);
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
-- }
--
-- kfree(conn);
--
-- MOD_DEC_USE_COUNT;
-- return 0;
--}
--
--static inline struct l2cap_conn *l2cap_get_conn_by_addr(struct l2cap_iff *iff, bdaddr_t *dst)
--{
-- struct list_head *p;
--
-- list_for_each(p, &iff->conn_list) {
-- struct l2cap_conn *c;
--
-- c = list_entry(p, struct l2cap_conn, list);
-- if (!bacmp(&c->dst, dst))
-- return c;
-- }
-- return NULL;
--}
--
--int l2cap_connect(struct sock *sk)
--{
-- bdaddr_t *src = &l2cap_pi(sk)->src;
-- bdaddr_t *dst = &l2cap_pi(sk)->dst;
-- struct l2cap_conn *conn;
-- struct l2cap_iff *iff;
-- int err = 0;
--
-- DBG("%s -> %s psm 0x%2.2x", batostr(src), batostr(dst), l2cap_pi(sk)->psm);
--
-- read_lock_bh(&l2cap_rt_lock);
--
-- /* Get route to remote BD address */
-- if (!(iff = l2cap_get_route(src, dst))) {
-- err = -EHOSTUNREACH;
-- goto done;
-- }
--
-- /* Update source addr of the socket */
-- bacpy(src, iff->bdaddr);
--
-- l2cap_iff_lock(iff);
--
-- if (!(conn = l2cap_get_conn_by_addr(iff, dst))) {
-- /* Connection doesn't exist */
-- if (!(conn = l2cap_conn_add(iff, dst))) {
-- l2cap_iff_unlock(iff);
-- err = -ENOMEM;
-- goto done;
-- }
-- conn->out = 1;
-- }
--
-- l2cap_iff_unlock(iff);
--
-- l2cap_chan_add(conn, sk, NULL);
--
-- sk->state = BT_CONNECT;
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
--
-- switch (conn->state) {
-- case BT_CONNECTED:
-- if (sk->type == SOCK_SEQPACKET) {
-- l2cap_conn_req req;
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- req.psm = l2cap_pi(sk)->psm;
-- l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
-- } else {
-- l2cap_sock_clear_timer(sk);
-- sk->state = BT_CONNECTED;
-- }
-- break;
--
-- case BT_CONNECT:
-- break;
--
-- default:
-- /* Create ACL connection */
-- conn->state = BT_CONNECT;
-- hci_connect(iff->hdev, dst);
-- break;
-- };
--
--done:
-- read_unlock_bh(&l2cap_rt_lock);
-- return err;
--}
--
--/* ------ Channel queues for listening sockets ------ */
--void l2cap_accept_queue(struct sock *parent, struct sock *sk)
--{
-- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q;
--
-- DBG("parent %p, sk %p", parent, sk);
--
-- sock_hold(sk);
-- l2cap_pi(sk)->parent = parent;
-- l2cap_pi(sk)->next_q = NULL;
--
-- if (!q->head) {
-- q->head = q->tail = sk;
-- } else {
-- struct sock *tail = q->tail;
--
-- l2cap_pi(sk)->prev_q = tail;
-- l2cap_pi(tail)->next_q = sk;
-- q->tail = sk;
-- }
--
-- parent->ack_backlog++;
--}
--
--void l2cap_accept_unlink(struct sock *sk)
--{
-- struct sock *parent = l2cap_pi(sk)->parent;
-- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q;
-- struct sock *next, *prev;
--
-- DBG("sk %p", sk);
--
-- next = l2cap_pi(sk)->next_q;
-- prev = l2cap_pi(sk)->prev_q;
--
-- if (sk == q->head)
-- q->head = next;
-- if (sk == q->tail)
-- q->tail = prev;
--
-- if (next)
-- l2cap_pi(next)->prev_q = prev;
-- if (prev)
-- l2cap_pi(prev)->next_q = next;
--
-- l2cap_pi(sk)->parent = NULL;
--
-- parent->ack_backlog--;
-- __sock_put(sk);
--}
--
--/* Get next connected channel in queue. */
--struct sock *l2cap_accept_dequeue(struct sock *parent, int state)
--{
-- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q;
-- struct sock *sk;
--
-- for (sk = q->head; sk; sk = l2cap_pi(sk)->next_q) {
-- if (!state || sk->state == state) {
-- l2cap_accept_unlink(sk);
-- break;
-- }
-- }
--
-- DBG("parent %p, sk %p", parent, sk);
--
-- return sk;
--}
--
--/* -------- Socket interface ---------- */
--static struct sock *__l2cap_get_sock_by_addr(struct sockaddr_l2 *addr)
--{
-- bdaddr_t *src = &addr->l2_bdaddr;
-- __u16 psm = addr->l2_psm;
-- struct sock *sk;
--
-- for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-- if (l2cap_pi(sk)->psm == psm &&
-- !bacmp(&l2cap_pi(sk)->src, src))
-- break;
-- }
--
-- return sk;
--}
--
--/* Find socket listening on psm and source bdaddr.
-- * Returns closest match.
-- */
--static struct sock *l2cap_get_sock_listen(bdaddr_t *src, __u16 psm)
--{
-- struct sock *sk, *sk1 = NULL;
--
-- read_lock(&l2cap_sk_list.lock);
--
-- for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-- struct l2cap_pinfo *pi;
--
-- if (sk->state != BT_LISTEN)
-- continue;
--
-- pi = l2cap_pi(sk);
--
-- if (pi->psm == psm) {
-- /* Exact match. */
-- if (!bacmp(&pi->src, src))
-- break;
--
-- /* Closest match */
-- if (!bacmp(&pi->src, BDADDR_ANY))
-- sk1 = sk;
-- }
-- }
--
-- read_unlock(&l2cap_sk_list.lock);
--
-- return sk ? sk : sk1;
--}
--
--static void l2cap_sock_destruct(struct sock *sk)
--{
-- DBG("sk %p", sk);
--
-- skb_queue_purge(&sk->receive_queue);
-- skb_queue_purge(&sk->write_queue);
--
-- MOD_DEC_USE_COUNT;
--}
--
--static void l2cap_sock_cleanup_listen(struct sock *parent)
--{
-- struct sock *sk;
--
-- DBG("parent %p", parent);
--
-- /* Close not yet accepted channels */
-- while ((sk = l2cap_accept_dequeue(parent, 0)))
-- l2cap_sock_close(sk);
--
-- parent->state = BT_CLOSED;
-- parent->zapped = 1;
--}
--
--/* Kill socket (only if zapped and orphan)
-- * Must be called on unlocked socket.
-- */
--static void l2cap_sock_kill(struct sock *sk)
--{
-- if (!sk->zapped || sk->socket)
-- return;
--
-- DBG("sk %p state %d", sk, sk->state);
--
-- /* Kill poor orphan */
-- bluez_sock_unlink(&l2cap_sk_list, sk);
-- sk->dead = 1;
-- sock_put(sk);
--}
--
--/* Close socket.
-- * Must be called on unlocked socket.
-- */
--static void l2cap_sock_close(struct sock *sk)
--{
-- struct l2cap_conn *conn;
--
-- l2cap_sock_clear_timer(sk);
--
-- lock_sock(sk);
--
-- conn = l2cap_pi(sk)->conn;
--
-- DBG("sk %p state %d conn %p socket %p", sk, sk->state, conn, sk->socket);
--
-- switch (sk->state) {
-- case BT_LISTEN:
-- l2cap_sock_cleanup_listen(sk);
-- break;
--
-- case BT_CONNECTED:
-- case BT_CONFIG:
-- if (sk->type == SOCK_SEQPACKET) {
-- l2cap_disconn_req req;
--
-- sk->state = BT_DISCONN;
--
-- req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
--
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
-- } else {
-- l2cap_chan_del(sk, ECONNRESET);
-- }
-- break;
--
-- case BT_CONNECT:
-- case BT_DISCONN:
-- l2cap_chan_del(sk, ECONNRESET);
-- break;
--
-- default:
-- sk->zapped = 1;
-- break;
-- };
--
-- release_sock(sk);
--
-- l2cap_sock_kill(sk);
--}
--
--static void l2cap_sock_init(struct sock *sk, struct sock *parent)
--{
-- struct l2cap_pinfo *pi = l2cap_pi(sk);
--
-- DBG("sk %p", sk);
--
-- if (parent) {
-- sk->type = parent->type;
--
-- pi->imtu = l2cap_pi(parent)->imtu;
-- pi->omtu = l2cap_pi(parent)->omtu;
-- } else {
-- pi->imtu = L2CAP_DEFAULT_MTU;
-- pi->omtu = 0;
-- }
--
-- /* Default config options */
-- pi->conf_mtu = L2CAP_DEFAULT_MTU;
-- pi->flush_to = L2CAP_DEFAULT_FLUSH_TO;
--}
--
--static struct sock *l2cap_sock_alloc(struct socket *sock, int proto, int prio)
--{
-- struct sock *sk;
--
-- if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1)))
-- return NULL;
--
-- sock_init_data(sock, sk);
--
-- sk->zapped = 0;
--
-- sk->destruct = l2cap_sock_destruct;
-- sk->sndtimeo = L2CAP_CONN_TIMEOUT;
--
-- sk->protocol = proto;
-- sk->state = BT_OPEN;
--
-- l2cap_sock_init_timer(sk);
--
-- bluez_sock_link(&l2cap_sk_list, sk);
--
-- MOD_INC_USE_COUNT;
--
-- return sk;
--}
--
--static int l2cap_sock_create(struct socket *sock, int protocol)
--{
-- struct sock *sk;
--
-- DBG("sock %p", sock);
--
-- sock->state = SS_UNCONNECTED;
--
-- if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_RAW)
-- return -ESOCKTNOSUPPORT;
--
-- sock->ops = &l2cap_sock_ops;
--
-- if (!(sk = l2cap_sock_alloc(sock, protocol, GFP_KERNEL)))
-- return -ENOMEM;
--
-- l2cap_sock_init(sk, NULL);
--
-- return 0;
--}
--
--static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
--{
-- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- DBG("sk %p, %s %d", sk, batostr(&la->l2_bdaddr), la->l2_psm);
--
-- if (!addr || addr->sa_family != AF_BLUETOOTH)
-- return -EINVAL;
--
-- lock_sock(sk);
--
-- if (sk->state != BT_OPEN) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- write_lock(&l2cap_sk_list.lock);
--
-- if (la->l2_psm && __l2cap_get_sock_by_addr(la)) {
-- err = -EADDRINUSE;
-- goto unlock;
-- }
--
-- /* Save source address */
-- bacpy(&l2cap_pi(sk)->src, &la->l2_bdaddr);
-- l2cap_pi(sk)->psm = la->l2_psm;
-- sk->state = BT_BOUND;
--
--unlock:
-- write_unlock(&l2cap_sk_list.lock);
--
--done:
-- release_sock(sk);
--
-- return err;
--}
--
--static int l2cap_sock_w4_connect(struct sock *sk, int flags)
--{
-- DECLARE_WAITQUEUE(wait, current);
-- long timeo = sock_sndtimeo(sk, flags & O_NONBLOCK);
-- int err = 0;
--
-- DBG("sk %p", sk);
--
-- add_wait_queue(sk->sleep, &wait);
-- current->state = TASK_INTERRUPTIBLE;
--
-- while (sk->state != BT_CONNECTED) {
-- if (!timeo) {
-- err = -EAGAIN;
-- break;
-- }
--
-- release_sock(sk);
-- timeo = schedule_timeout(timeo);
-- lock_sock(sk);
--
-- err = 0;
-- if (sk->state == BT_CONNECTED)
-- break;
--
-- if (sk->err) {
-- err = sock_error(sk);
-- break;
-- }
--
-- if (signal_pending(current)) {
-- err = sock_intr_errno(timeo);
-- break;
-- }
-- }
-- current->state = TASK_RUNNING;
-- remove_wait_queue(sk->sleep, &wait);
--
-- return err;
--}
--
--static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
--{
-- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- lock_sock(sk);
--
-- DBG("sk %p", sk);
--
-- if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_l2)) {
-- err = -EINVAL;
-- goto done;
-- }
--
-- if (sk->state != BT_OPEN && sk->state != BT_BOUND) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- if (sk->type == SOCK_SEQPACKET && !la->l2_psm) {
-- err = -EINVAL;
-- goto done;
-- }
--
-- /* Set destination address and psm */
-- bacpy(&l2cap_pi(sk)->dst, &la->l2_bdaddr);
-- l2cap_pi(sk)->psm = la->l2_psm;
--
-- if ((err = l2cap_connect(sk)))
-- goto done;
--
-- err = l2cap_sock_w4_connect(sk, flags);
--
--done:
-- release_sock(sk);
-- return err;
--}
--
--int l2cap_sock_listen(struct socket *sock, int backlog)
--{
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- DBG("sk %p backlog %d", sk, backlog);
--
-- lock_sock(sk);
--
-- if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- if (!l2cap_pi(sk)->psm) {
-- err = -EINVAL;
-- goto done;
-- }
--
-- sk->max_ack_backlog = backlog;
-- sk->ack_backlog = 0;
-- sk->state = BT_LISTEN;
--
--done:
-- release_sock(sk);
-- return err;
--}
--
--int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
--{
-- DECLARE_WAITQUEUE(wait, current);
-- struct sock *sk = sock->sk, *ch;
-- long timeo;
-- int err = 0;
--
-- lock_sock(sk);
--
-- if (sk->state != BT_LISTEN) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
--
-- DBG("sk %p timeo %ld", sk, timeo);
--
-- /* Wait for an incoming connection. (wake-one). */
-- add_wait_queue_exclusive(sk->sleep, &wait);
-- current->state = TASK_INTERRUPTIBLE;
-- while (!(ch = l2cap_accept_dequeue(sk, BT_CONNECTED))) {
-- if (!timeo) {
-- err = -EAGAIN;
-- break;
-- }
--
-- release_sock(sk);
-- timeo = schedule_timeout(timeo);
-- lock_sock(sk);
--
-- if (sk->state != BT_LISTEN) {
-- err = -EBADFD;
-- break;
-- }
--
-- if (signal_pending(current)) {
-- err = sock_intr_errno(timeo);
-- break;
-- }
-- }
-- current->state = TASK_RUNNING;
-- remove_wait_queue(sk->sleep, &wait);
--
-- if (err)
-- goto done;
--
-- sock_graft(ch, newsock);
-- newsock->state = SS_CONNECTED;
--
-- DBG("new socket %p", ch);
--
--done:
-- release_sock(sk);
--
-- return err;
--}
--
--static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
--{
-- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-- struct sock *sk = sock->sk;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- addr->sa_family = AF_BLUETOOTH;
-- *len = sizeof(struct sockaddr_l2);
--
-- if (peer)
-- bacpy(&la->l2_bdaddr, &l2cap_pi(sk)->dst);
-- else
-- bacpy(&la->l2_bdaddr, &l2cap_pi(sk)->src);
--
-- la->l2_psm = l2cap_pi(sk)->psm;
--
-- return 0;
--}
--
--static int l2cap_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm)
--{
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- if (sk->err)
-- return sock_error(sk);
--
-- if (msg->msg_flags & MSG_OOB)
-- return -EOPNOTSUPP;
--
-- lock_sock(sk);
--
-- if (sk->state == BT_CONNECTED)
-- err = l2cap_chan_send(sk, msg, len);
-- else
-- err = -ENOTCONN;
--
-- release_sock(sk);
-- return err;
--}
--
--static int l2cap_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm)
--{
-- struct sock *sk = sock->sk;
-- int noblock = flags & MSG_DONTWAIT;
-- int copied, err;
-- struct sk_buff *skb;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- if (flags & (MSG_OOB))
-- return -EOPNOTSUPP;
--
-- if (sk->state == BT_CLOSED)
-- return 0;
--
-- if (!(skb = skb_recv_datagram(sk, flags, noblock, &err)))
-- return err;
--
-- msg->msg_namelen = 0;
--
-- copied = skb->len;
-- if (len < copied) {
-- msg->msg_flags |= MSG_TRUNC;
-- copied = len;
-- }
--
-- skb->h.raw = skb->data;
-- err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
--
-- skb_free_datagram(sk, skb);
--
-- return err ? : copied;
--}
--
--int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
--{
-- struct sock *sk = sock->sk;
-- struct l2cap_options opts;
-- int err = 0;
--
-- DBG("sk %p", sk);
--
-- lock_sock(sk);
--
-- switch (optname) {
-- case L2CAP_OPTIONS:
-- if (copy_from_user((char *)&opts, optval, optlen)) {
-- err = -EFAULT;
-- break;
-- }
-- l2cap_pi(sk)->imtu = opts.imtu;
-- l2cap_pi(sk)->omtu = opts.omtu;
-- break;
--
-- default:
-- err = -ENOPROTOOPT;
-- break;
-- };
--
-- release_sock(sk);
-- return err;
--}
--
--int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
--{
-- struct sock *sk = sock->sk;
-- struct l2cap_options opts;
-- struct l2cap_conninfo cinfo;
-- int len, err = 0;
--
-- if (get_user(len, optlen))
-- return -EFAULT;
--
-- lock_sock(sk);
--
-- switch (optname) {
-- case L2CAP_OPTIONS:
-- opts.imtu = l2cap_pi(sk)->imtu;
-- opts.omtu = l2cap_pi(sk)->omtu;
-- opts.flush_to = l2cap_pi(sk)->flush_to;
--
-- len = MIN(len, sizeof(opts));
-- if (copy_to_user(optval, (char *)&opts, len))
-- err = -EFAULT;
--
-- break;
--
-- case L2CAP_CONNINFO:
-- if (sk->state != BT_CONNECTED) {
-- err = -ENOTCONN;
-- break;
-- }
--
-- cinfo.hci_handle = l2cap_pi(sk)->conn->hconn->handle;
--
-- len = MIN(len, sizeof(cinfo));
-- if (copy_to_user(optval, (char *)&cinfo, len))
-- err = -EFAULT;
--
-- break;
--
-- default:
-- err = -ENOPROTOOPT;
-- break;
-- };
--
-- release_sock(sk);
-- return err;
--}
--
--static unsigned int l2cap_sock_poll(struct file * file, struct socket *sock, poll_table *wait)
--{
-- struct sock *sk = sock->sk;
-- struct l2cap_accept_q *aq;
-- unsigned int mask;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- poll_wait(file, sk->sleep, wait);
-- mask = 0;
--
-- if (sk->err || !skb_queue_empty(&sk->error_queue))
-- mask |= POLLERR;
--
-- if (sk->shutdown == SHUTDOWN_MASK)
-- mask |= POLLHUP;
--
-- aq = &l2cap_pi(sk)->accept_q;
-- if (!skb_queue_empty(&sk->receive_queue) || aq->head || (sk->shutdown & RCV_SHUTDOWN))
-- mask |= POLLIN | POLLRDNORM;
--
-- if (sk->state == BT_CLOSED)
-- mask |= POLLHUP;
--
-- if (sock_writeable(sk))
-- mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
-- else
-- set_bit(SOCK_ASYNC_NOSPACE, &sk->socket->flags);
--
-- return mask;
--}
--
--static int l2cap_sock_release(struct socket *sock)
--{
-- struct sock *sk = sock->sk;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- if (!sk)
-- return 0;
--
-- sock_orphan(sk);
--
-- l2cap_sock_close(sk);
--
-- return 0;
--}
--
--/* --------- L2CAP channels --------- */
--static struct sock * __l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-- if (l2cap_pi(s)->dcid == cid)
-- break;
-- }
--
-- return s;
--}
--
--static inline struct sock *l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- read_lock(&l->lock);
-- s = __l2cap_get_chan_by_dcid(l, cid);
-- read_unlock(&l->lock);
--
-- return s;
--}
--
--static struct sock *__l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-- if (l2cap_pi(s)->scid == cid)
-- break;
-- }
--
-- return s;
--}
--static inline struct sock *l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- read_lock(&l->lock);
-- s = __l2cap_get_chan_by_scid(l, cid);
-- read_unlock(&l->lock);
--
-- return s;
--}
--
--static struct sock *__l2cap_get_chan_by_ident(struct l2cap_chan_list *l, __u8 ident)
--{
-- struct sock *s;
--
-- for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-- if (l2cap_pi(s)->ident == ident)
-- break;
-- }
--
-- return s;
--}
--
--static inline struct sock *l2cap_get_chan_by_ident(struct l2cap_chan_list *l, __u8 ident)
--{
-- struct sock *s;
--
-- read_lock(&l->lock);
-- s = __l2cap_get_chan_by_ident(l, ident);
-- read_unlock(&l->lock);
--
-- return s;
--}
--
--static __u16 l2cap_alloc_cid(struct l2cap_chan_list *l)
--{
-- __u16 cid = 0x0040;
--
-- for (; cid < 0xffff; cid++) {
-- if(!__l2cap_get_chan_by_scid(l, cid))
-- return cid;
-- }
--
-- return 0;
--}
--
--static inline void __l2cap_chan_link(struct l2cap_chan_list *l, struct sock *sk)
--{
-- sock_hold(sk);
--
-- if (l->head)
-- l2cap_pi(l->head)->prev_c = sk;
--
-- l2cap_pi(sk)->next_c = l->head;
-- l2cap_pi(sk)->prev_c = NULL;
-- l->head = sk;
--}
--
--static inline void l2cap_chan_unlink(struct l2cap_chan_list *l, struct sock *sk)
--{
-- struct sock *next = l2cap_pi(sk)->next_c, *prev = l2cap_pi(sk)->prev_c;
--
-- write_lock(&l->lock);
-- if (sk == l->head)
-- l->head = next;
--
-- if (next)
-- l2cap_pi(next)->prev_c = prev;
-- if (prev)
-- l2cap_pi(prev)->next_c = next;
-- write_unlock(&l->lock);
--
-- __sock_put(sk);
--}
--
--static void __l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
--
-- DBG("conn %p, psm 0x%2.2x, dcid 0x%4.4x", conn, l2cap_pi(sk)->psm, l2cap_pi(sk)->dcid);
--
-- l2cap_conn_clear_timer(conn);
--
-- atomic_inc(&conn->refcnt);
-- l2cap_pi(sk)->conn = conn;
--
-- if (sk->type == SOCK_SEQPACKET) {
-- /* Alloc CID for normal socket */
-- l2cap_pi(sk)->scid = l2cap_alloc_cid(l);
-- } else {
-- /* Raw socket can send only signalling messages */
-- l2cap_pi(sk)->scid = 0x0001;
-- l2cap_pi(sk)->dcid = 0x0001;
-- l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU;
-- }
--
-- __l2cap_chan_link(l, sk);
--
-- if (parent)
-- l2cap_accept_queue(parent, sk);
--}
--
--static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
--
-- write_lock(&l->lock);
-- __l2cap_chan_add(conn, sk, parent);
-- write_unlock(&l->lock);
--}
--
--/* Delete channel.
-- * Must be called on the locked socket. */
--static void l2cap_chan_del(struct sock *sk, int err)
--{
-- struct l2cap_conn *conn;
-- struct sock *parent;
--
-- conn = l2cap_pi(sk)->conn;
-- parent = l2cap_pi(sk)->parent;
--
-- DBG("sk %p, conn %p, err %d", sk, conn, err);
--
-- if (parent) {
-- /* Unlink from parent accept queue */
-- bh_lock_sock(parent);
-- l2cap_accept_unlink(sk);
-- bh_unlock_sock(parent);
-- }
--
-- if (conn) {
-- long timeout;
--
-- /* Unlink from channel list */
-- l2cap_chan_unlink(&conn->chan_list, sk);
-- l2cap_pi(sk)->conn = NULL;
--
-- if (conn->out)
-- timeout = L2CAP_DISCONN_TIMEOUT;
-- else
-- timeout = L2CAP_CONN_IDLE_TIMEOUT;
--
-- if (atomic_dec_and_test(&conn->refcnt) && conn->state == BT_CONNECTED) {
-- /* Schedule Baseband disconnect */
-- l2cap_conn_set_timer(conn, timeout);
-- }
-- }
--
-- sk->state = BT_CLOSED;
-- sk->err = err;
-- sk->state_change(sk);
--
-- sk->zapped = 1;
--}
--
--static void l2cap_conn_ready(struct l2cap_conn *conn)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
-- struct sock *sk;
--
-- DBG("conn %p", conn);
--
-- read_lock(&l->lock);
--
-- for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-- bh_lock_sock(sk);
--
-- if (sk->type != SOCK_SEQPACKET) {
-- sk->state = BT_CONNECTED;
-- sk->state_change(sk);
-- l2cap_sock_clear_timer(sk);
-- } else if (sk->state == BT_CONNECT) {
-- l2cap_conn_req req;
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- req.psm = l2cap_pi(sk)->psm;
-- l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
--
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
-- }
--
-- bh_unlock_sock(sk);
-- }
--
-- read_unlock(&l->lock);
--}
--
--static void l2cap_chan_ready(struct sock *sk)
--{
-- struct sock *parent = l2cap_pi(sk)->parent;
--
-- DBG("sk %p, parent %p", sk, parent);
--
-- l2cap_pi(sk)->conf_state = 0;
-- l2cap_sock_clear_timer(sk);
--
-- if (!parent) {
-- /* Outgoing channel.
-- * Wake up socket sleeping on connect.
-- */
-- sk->state = BT_CONNECTED;
-- sk->state_change(sk);
-- } else {
-- /* Incomming channel.
-- * Wake up socket sleeping on accept.
-- */
-- parent->data_ready(parent, 1);
-- }
--}
--
--/* Copy frame to all raw sockets on that connection */
--void l2cap_raw_recv(struct l2cap_conn *conn, struct sk_buff *skb)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
-- struct sk_buff *nskb;
-- struct sock * sk;
--
-- DBG("conn %p", conn);
--
-- read_lock(&l->lock);
-- for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-- if (sk->type != SOCK_RAW)
-- continue;
--
-- /* Don't send frame to the socket it came from */
-- if (skb->sk == sk)
-- continue;
--
-- if (!(nskb = skb_clone(skb, GFP_ATOMIC)))
-- continue;
--
-- skb_queue_tail(&sk->receive_queue, nskb);
-- sk->data_ready(sk, nskb->len);
-- }
-- read_unlock(&l->lock);
--}
--
--static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len)
--{
-- struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-- struct sk_buff *skb, **frag;
-- int err, size, count, sent=0;
-- l2cap_hdr *lh;
--
-- /* Check outgoing MTU */
-- if (len > l2cap_pi(sk)->omtu)
-- return -EINVAL;
--
-- DBG("sk %p len %d", sk, len);
--
-- /* First fragment (with L2CAP header) */
-- count = MIN(conn->iff->mtu - L2CAP_HDR_SIZE, len);
-- size = L2CAP_HDR_SIZE + count;
-- if (!(skb = bluez_skb_send_alloc(sk, size, msg->msg_flags & MSG_DONTWAIT, &err)))
-- return err;
--
-- /* Create L2CAP header */
-- lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-- lh->len = __cpu_to_le16(len);
-- lh->cid = __cpu_to_le16(l2cap_pi(sk)->dcid);
--
-- if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) {
-- err = -EFAULT;
-- goto fail;
-- }
--
-- sent += count;
-- len -= count;
--
-- /* Continuation fragments (no L2CAP header) */
-- frag = &skb_shinfo(skb)->frag_list;
-- while (len) {
-- count = MIN(conn->iff->mtu, len);
--
-- *frag = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err);
-- if (!*frag)
-- goto fail;
--
-- if (memcpy_fromiovec(skb_put(*frag, count), msg->msg_iov, count)) {
-- err = -EFAULT;
-- goto fail;
-- }
--
-- sent += count;
-- len -= count;
--
-- frag = &(*frag)->next;
-- }
--
-- if ((err = hci_send_acl(conn->hconn, skb, 0)) < 0)
-- goto fail;
--
-- return sent;
--
--fail:
-- kfree_skb(skb);
-- return err;
--}
--
--/* --------- L2CAP signalling commands --------- */
--static inline __u8 l2cap_get_ident(struct l2cap_conn *conn)
--{
-- __u8 id;
--
-- /* Get next available identificator.
-- * 1 - 199 are used by kernel.
-- * 200 - 254 are used by utilities like l2ping, etc
-- */
--
-- spin_lock(&conn->lock);
--
-- if (++conn->tx_ident > 199)
-- conn->tx_ident = 1;
--
-- id = conn->tx_ident;
--
-- spin_unlock(&conn->lock);
--
-- return id;
--}
--
--static inline struct sk_buff *l2cap_build_cmd(__u8 code, __u8 ident, __u16 len, void *data)
--{
-- struct sk_buff *skb;
-- l2cap_cmd_hdr *cmd;
-- l2cap_hdr *lh;
-- int size;
--
-- DBG("code 0x%2.2x, ident 0x%2.2x, len %d", code, ident, len);
--
-- size = L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE + len;
-- if (!(skb = bluez_skb_alloc(size, GFP_ATOMIC)))
-- return NULL;
--
-- lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-- lh->len = __cpu_to_le16(L2CAP_CMD_HDR_SIZE + len);
-- lh->cid = __cpu_to_le16(0x0001);
--
-- cmd = (l2cap_cmd_hdr *) skb_put(skb, L2CAP_CMD_HDR_SIZE);
-- cmd->code = code;
-- cmd->ident = ident;
-- cmd->len = __cpu_to_le16(len);
--
-- if (len)
-- memcpy(skb_put(skb, len), data, len);
--
-- return skb;
--}
--
--static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data)
--{
-- struct sk_buff *skb;
-- __u8 ident;
--
-- DBG("code 0x%2.2x", code);
--
-- ident = l2cap_get_ident(conn);
-- if (!(skb = l2cap_build_cmd(code, ident, len, data)))
-- return -ENOMEM;
-- return hci_send_acl(conn->hconn, skb, 0);
--}
--
--static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data)
--{
-- struct sk_buff *skb;
--
-- DBG("code 0x%2.2x", code);
--
-- if (!(skb = l2cap_build_cmd(code, ident, len, data)))
-- return -ENOMEM;
-- return hci_send_acl(conn->hconn, skb, 0);
--}
--
--static inline int l2cap_get_conf_opt(__u8 **ptr, __u8 *type, __u32 *val)
--{
-- l2cap_conf_opt *opt = (l2cap_conf_opt *) (*ptr);
-- int len;
--
-- *type = opt->type;
-- switch (opt->len) {
-- case 1:
-- *val = *((__u8 *) opt->val);
-- break;
--
-- case 2:
-- *val = __le16_to_cpu(*((__u16 *)opt->val));
-- break;
--
-- case 4:
-- *val = __le32_to_cpu(*((__u32 *)opt->val));
-- break;
--
-- default:
-- *val = 0L;
-- break;
-- };
--
-- DBG("type 0x%2.2x len %d val 0x%8.8x", *type, opt->len, *val);
--
-- len = L2CAP_CONF_OPT_SIZE + opt->len;
--
-- *ptr += len;
--
-- return len;
--}
--
--static inline void l2cap_parse_conf_req(struct sock *sk, char *data, int len)
--{
-- __u8 type, hint; __u32 val;
-- __u8 *ptr = data;
--
-- DBG("sk %p len %d", sk, len);
--
-- while (len >= L2CAP_CONF_OPT_SIZE) {
-- len -= l2cap_get_conf_opt(&ptr, &type, &val);
--
-- hint = type & 0x80;
-- type &= 0x7f;
--
-- switch (type) {
-- case L2CAP_CONF_MTU:
-- l2cap_pi(sk)->conf_mtu = val;
-- break;
--
-- case L2CAP_CONF_FLUSH_TO:
-- l2cap_pi(sk)->flush_to = val;
-- break;
--
-- case L2CAP_CONF_QOS:
-- break;
--
-- default:
-- if (hint)
-- break;
--
-- /* FIXME: Reject unknon option */
-- break;
-- };
-- }
--}
--
--static inline void l2cap_add_conf_opt(__u8 **ptr, __u8 type, __u8 len, __u32 val)
--{
-- register l2cap_conf_opt *opt = (l2cap_conf_opt *) (*ptr);
--
-- DBG("type 0x%2.2x len %d val 0x%8.8x", type, len, val);
--
-- opt->type = type;
-- opt->len = len;
-- switch (len) {
-- case 1:
-- *((__u8 *) opt->val) = val;
-- break;
--
-- case 2:
-- *((__u16 *) opt->val) = __cpu_to_le16(val);
-- break;
--
-- case 4:
-- *((__u32 *) opt->val) = __cpu_to_le32(val);
-- break;
-- };
--
-- *ptr += L2CAP_CONF_OPT_SIZE + len;
--}
--
--static int l2cap_build_conf_req(struct sock *sk, __u8 *data)
--{
-- struct l2cap_pinfo *pi = l2cap_pi(sk);
-- l2cap_conf_req *req = (l2cap_conf_req *) data;
-- __u8 *ptr = req->data;
--
-- DBG("sk %p", sk);
--
-- if (pi->imtu != L2CAP_DEFAULT_MTU)
-- l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->imtu);
--
-- /* FIXME. Need actual value of the flush timeout */
-- //if (flush_to != L2CAP_DEFAULT_FLUSH_TO)
-- // l2cap_add_conf_opt(&ptr, L2CAP_CONF_FLUSH_TO, 2, pi->flush_to);
--
-- req->dcid = __cpu_to_le16(pi->dcid);
-- req->flags = __cpu_to_le16(0);
--
-- return ptr - data;
--}
--
--static int l2cap_conf_output(struct sock *sk, __u8 **ptr)
--{
-- struct l2cap_pinfo *pi = l2cap_pi(sk);
-- int result = 0;
--
-- /* Configure output options and let other side know
-- * which ones we don't like.
-- */
-- if (pi->conf_mtu < pi->omtu) {
-- l2cap_add_conf_opt(ptr, L2CAP_CONF_MTU, 2, l2cap_pi(sk)->omtu);
-- result = L2CAP_CONF_UNACCEPT;
-- } else {
-- pi->omtu = pi->conf_mtu;
-- }
--
-- DBG("sk %p result %d", sk, result);
-- return result;
--}
--
--static int l2cap_build_conf_rsp(struct sock *sk, __u8 *data, int *result)
--{
-- l2cap_conf_rsp *rsp = (l2cap_conf_rsp *) data;
-- __u8 *ptr = rsp->data;
--
-- DBG("sk %p complete %d", sk, result ? 1 : 0);
--
-- if (result)
-- *result = l2cap_conf_output(sk, &ptr);
--
-- rsp->scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- rsp->result = __cpu_to_le16(result ? *result : 0);
-- rsp->flags = __cpu_to_le16(0);
--
-- return ptr - data;
--}
--
--static inline int l2cap_connect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- struct l2cap_chan_list *list = &conn->chan_list;
-- l2cap_conn_req *req = (l2cap_conn_req *) data;
-- l2cap_conn_rsp rsp;
-- struct sock *sk, *parent;
--
-- __u16 scid = __le16_to_cpu(req->scid);
-- __u16 psm = req->psm;
--
-- DBG("psm 0x%2.2x scid 0x%4.4x", psm, scid);
--
-- /* Check if we have socket listening on psm */
-- if (!(parent = l2cap_get_sock_listen(&conn->src, psm)))
-- goto reject;
--
-- bh_lock_sock(parent);
-- write_lock(&list->lock);
--
-- /* Check if we already have channel with that dcid */
-- if (__l2cap_get_chan_by_dcid(list, scid))
-- goto unlock;
--
-- /* Check for backlog size */
-- if (parent->ack_backlog > parent->max_ack_backlog)
-- goto unlock;
--
-- if (!(sk = l2cap_sock_alloc(NULL, BTPROTO_L2CAP, GFP_ATOMIC)))
-- goto unlock;
--
-- l2cap_sock_init(sk, parent);
--
-- bacpy(&l2cap_pi(sk)->src, &conn->src);
-- bacpy(&l2cap_pi(sk)->dst, &conn->dst);
-- l2cap_pi(sk)->psm = psm;
-- l2cap_pi(sk)->dcid = scid;
--
-- __l2cap_chan_add(conn, sk, parent);
-- sk->state = BT_CONFIG;
--
-- write_unlock(&list->lock);
-- bh_unlock_sock(parent);
--
-- rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- rsp.result = __cpu_to_le16(0);
-- rsp.status = __cpu_to_le16(0);
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp);
--
-- return 0;
--
--unlock:
-- write_unlock(&list->lock);
-- bh_unlock_sock(parent);
--
--reject:
-- rsp.scid = __cpu_to_le16(scid);
-- rsp.dcid = __cpu_to_le16(0);
-- rsp.status = __cpu_to_le16(0);
-- rsp.result = __cpu_to_le16(L2CAP_CONN_NO_MEM);
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp);
--
-- return 0;
--}
--
--static inline int l2cap_connect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_conn_rsp *rsp = (l2cap_conn_rsp *) data;
-- __u16 scid, dcid, result, status;
-- struct sock *sk;
--
-- scid = __le16_to_cpu(rsp->scid);
-- dcid = __le16_to_cpu(rsp->dcid);
-- result = __le16_to_cpu(rsp->result);
-- status = __le16_to_cpu(rsp->status);
--
-- DBG("dcid 0x%4.4x scid 0x%4.4x result 0x%2.2x status 0x%2.2x", dcid, scid, result, status);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
--
-- if (!result) {
-- char req[64];
--
-- sk->state = BT_CONFIG;
-- l2cap_pi(sk)->dcid = dcid;
-- l2cap_pi(sk)->conf_state |= CONF_REQ_SENT;
--
-- l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-- } else {
-- l2cap_chan_del(sk, ECONNREFUSED);
-- }
--
-- bh_unlock_sock(sk);
-- return 0;
--}
--
--static inline int l2cap_config_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_conf_req * req = (l2cap_conf_req *) data;
-- __u16 dcid, flags;
-- __u8 rsp[64];
-- struct sock *sk;
-- int result;
--
-- dcid = __le16_to_cpu(req->dcid);
-- flags = __le16_to_cpu(req->flags);
--
-- DBG("dcid 0x%4.4x flags 0x%2.2x", dcid, flags);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
--
-- l2cap_parse_conf_req(sk, req->data, cmd->len - L2CAP_CONF_REQ_SIZE);
--
-- if (flags & 0x01) {
-- /* Incomplete config. Send empty response. */
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, NULL), rsp);
-- goto unlock;
-- }
--
-- /* Complete config. */
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, &result), rsp);
--
-- if (result)
-- goto unlock;
--
-- /* Output config done */
-- l2cap_pi(sk)->conf_state |= CONF_OUTPUT_DONE;
--
-- if (l2cap_pi(sk)->conf_state & CONF_INPUT_DONE) {
-- sk->state = BT_CONNECTED;
-- l2cap_chan_ready(sk);
-- } else if (!(l2cap_pi(sk)->conf_state & CONF_REQ_SENT)) {
-- char req[64];
-- l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-- }
--
--unlock:
-- bh_unlock_sock(sk);
--
-- return 0;
--}
--
--static inline int l2cap_config_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_conf_rsp *rsp = (l2cap_conf_rsp *)data;
-- __u16 scid, flags, result;
-- struct sock *sk;
-- int err = 0;
--
-- scid = __le16_to_cpu(rsp->scid);
-- flags = __le16_to_cpu(rsp->flags);
-- result = __le16_to_cpu(rsp->result);
--
-- DBG("scid 0x%4.4x flags 0x%2.2x result 0x%2.2x", scid, flags, result);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
--
-- if (result) {
-- l2cap_disconn_req req;
--
-- /* They didn't like our options. Well... we do not negotiate.
-- * Close channel.
-- */
-- sk->state = BT_DISCONN;
--
-- req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
--
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
-- goto done;
-- }
--
-- if (flags & 0x01)
-- goto done;
--
-- /* Input config done */
-- l2cap_pi(sk)->conf_state |= CONF_INPUT_DONE;
--
-- if (l2cap_pi(sk)->conf_state & CONF_OUTPUT_DONE) {
-- sk->state = BT_CONNECTED;
-- l2cap_chan_ready(sk);
-- }
--
--done:
-- bh_unlock_sock(sk);
--
-- return err;
--}
--
--static inline int l2cap_disconnect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_disconn_req *req = (l2cap_disconn_req *) data;
-- l2cap_disconn_rsp rsp;
-- __u16 dcid, scid;
-- struct sock *sk;
--
-- scid = __le16_to_cpu(req->scid);
-- dcid = __le16_to_cpu(req->dcid);
--
-- DBG("scid 0x%4.4x dcid 0x%4.4x", scid, dcid);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-- return 0;
--
-- bh_lock_sock(sk);
--
-- rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_DISCONN_RSP, L2CAP_DISCONN_RSP_SIZE, &rsp);
--
-- l2cap_chan_del(sk, ECONNRESET);
--
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
--
-- return 0;
--}
--
--static inline int l2cap_disconnect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_disconn_rsp *rsp = (l2cap_disconn_rsp *) data;
-- __u16 dcid, scid;
-- struct sock *sk;
--
-- scid = __le16_to_cpu(rsp->scid);
-- dcid = __le16_to_cpu(rsp->dcid);
--
-- DBG("dcid 0x%4.4x scid 0x%4.4x", dcid, scid);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
-- l2cap_sock_clear_timer(sk);
-- l2cap_chan_del(sk, ECONNABORTED);
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
--
-- return 0;
--}
--
--static inline void l2cap_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb)
--{
-- __u8 *data = skb->data;
-- int len = skb->len;
-- l2cap_cmd_hdr cmd;
-- int err = 0;
--
-- while (len >= L2CAP_CMD_HDR_SIZE) {
-- memcpy(&cmd, data, L2CAP_CMD_HDR_SIZE);
-- data += L2CAP_CMD_HDR_SIZE;
-- len -= L2CAP_CMD_HDR_SIZE;
--
-- cmd.len = __le16_to_cpu(cmd.len);
--
-- DBG("code 0x%2.2x len %d id 0x%2.2x", cmd.code, cmd.len, cmd.ident);
--
-- if (cmd.len > len || !cmd.ident) {
-- DBG("corrupted command");
-- break;
-- }
--
-- switch (cmd.code) {
-- case L2CAP_CONN_REQ:
-- err = l2cap_connect_req(conn, &cmd, data);
-- break;
--
-- case L2CAP_CONN_RSP:
-- err = l2cap_connect_rsp(conn, &cmd, data);
-- break;
--
-- case L2CAP_CONF_REQ:
-- err = l2cap_config_req(conn, &cmd, data);
-- break;
--
-- case L2CAP_CONF_RSP:
-- err = l2cap_config_rsp(conn, &cmd, data);
-- break;
--
-- case L2CAP_DISCONN_REQ:
-- err = l2cap_disconnect_req(conn, &cmd, data);
-- break;
--
-- case L2CAP_DISCONN_RSP:
-- err = l2cap_disconnect_rsp(conn, &cmd, data);
-- break;
--
-- case L2CAP_COMMAND_REJ:
-- /* FIXME: We should process this */
-- l2cap_raw_recv(conn, skb);
-- break;
--
-- case L2CAP_ECHO_REQ:
-- l2cap_send_rsp(conn, cmd.ident, L2CAP_ECHO_RSP, cmd.len, data);
-- break;
--
-- case L2CAP_ECHO_RSP:
-- case L2CAP_INFO_REQ:
-- case L2CAP_INFO_RSP:
-- l2cap_raw_recv(conn, skb);
-- break;
--
-- default:
-- ERR("Uknown signaling command 0x%2.2x", cmd.code);
-- err = -EINVAL;
-- break;
-- };
--
-- if (err) {
-- l2cap_cmd_rej rej;
-- DBG("error %d", err);
--
-- /* FIXME: Map err to a valid reason. */
-- rej.reason = __cpu_to_le16(0);
-- l2cap_send_rsp(conn, cmd.ident, L2CAP_COMMAND_REJ, L2CAP_CMD_REJ_SIZE, &rej);
-- }
--
-- data += cmd.len;
-- len -= cmd.len;
-- }
--
-- kfree_skb(skb);
--}
--
--static inline int l2cap_data_channel(struct l2cap_conn *conn, __u16 cid, struct sk_buff *skb)
--{
-- struct sock *sk;
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, cid))) {
-- DBG("unknown cid 0x%4.4x", cid);
-- goto drop;
-- }
--
-- DBG("sk %p, len %d", sk, skb->len);
--
-- if (sk->state != BT_CONNECTED)
-- goto drop;
--
-- if (l2cap_pi(sk)->imtu < skb->len)
-- goto drop;
--
-- skb_queue_tail(&sk->receive_queue, skb);
-- sk->data_ready(sk, skb->len);
--
-- return 0;
--
--drop:
-- kfree_skb(skb);
--
-- return 0;
--}
--
--static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb)
--{
-- l2cap_hdr *lh = (l2cap_hdr *) skb->data;
-- __u16 cid, len;
--
-- skb_pull(skb, L2CAP_HDR_SIZE);
-- cid = __le16_to_cpu(lh->cid);
-- len = __le16_to_cpu(lh->len);
--
-- DBG("len %d, cid 0x%4.4x", len, cid);
--
-- if (cid == 0x0001)
-- l2cap_sig_channel(conn, skb);
-- else
-- l2cap_data_channel(conn, cid, skb);
--}
--
--/* ------------ L2CAP interface with lower layer (HCI) ------------- */
--static int l2cap_dev_event(struct notifier_block *this, unsigned long event, void *ptr)
--{
-- struct hci_dev *hdev = (struct hci_dev *) ptr;
--
-- DBG("hdev %s, event %ld", hdev->name, event);
--
-- write_lock(&l2cap_rt_lock);
--
-- switch (event) {
-- case HCI_DEV_UP:
-- l2cap_iff_add(hdev);
-- break;
--
-- case HCI_DEV_DOWN:
-- l2cap_iff_del(hdev);
-- break;
-- };
--
-- write_unlock(&l2cap_rt_lock);
--
-- return NOTIFY_DONE;
--}
--
--int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr)
--{
-- struct l2cap_iff *iff;
--
-- DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
--
-- if (!(iff = hdev->l2cap_data)) {
-- ERR("unknown interface");
-- return 0;
-- }
--
-- /* Always accept connection */
-- return 1;
--}
--
--int l2cap_connect_cfm(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 status, struct hci_conn *hconn)
--{
-- struct l2cap_conn *conn;
-- struct l2cap_iff *iff;
-- int err = 0;
--
-- DBG("hdev %s bdaddr %s hconn %p", hdev->name, batostr(bdaddr), hconn);
--
-- if (!(iff = hdev->l2cap_data)) {
-- ERR("unknown interface");
-- return 0;
-- }
--
-- l2cap_iff_lock(iff);
--
-- conn = l2cap_get_conn_by_addr(iff, bdaddr);
--
-- if (conn) {
-- /* Outgoing connection */
-- DBG("Outgoing connection: %s -> %s, %p, %2.2x", batostr(iff->bdaddr), batostr(bdaddr), conn, status);
--
-- if (!status && hconn) {
-- conn->state = BT_CONNECTED;
-- conn->hconn = hconn;
--
-- hconn->l2cap_data = (void *)conn;
--
-- /* Establish channels */
-- l2cap_conn_ready(conn);
-- } else {
-- l2cap_conn_del(conn, bterr(status));
-- }
-- } else {
-- /* Incomming connection */
-- DBG("Incomming connection: %s -> %s, %2.2x", batostr(iff->bdaddr), batostr(bdaddr), status);
--
-- if (status || !hconn)
-- goto done;
--
-- if (!(conn = l2cap_conn_add(iff, bdaddr))) {
-- err = -ENOMEM;
-- goto done;
-- }
--
-- conn->hconn = hconn;
-- hconn->l2cap_data = (void *)conn;
--
-- conn->state = BT_CONNECTED;
-- }
--
--done:
-- l2cap_iff_unlock(iff);
--
-- return err;
--}
--
--int l2cap_disconn_ind(struct hci_conn *hconn, __u8 reason)
--{
-- struct l2cap_conn *conn = hconn->l2cap_data;
--
-- DBG("hconn %p reason %d", hconn, reason);
--
-- if (!conn) {
-- ERR("unknown connection");
-- return 0;
-- }
-- conn->hconn = NULL;
--
-- l2cap_iff_lock(conn->iff);
-- l2cap_conn_del(conn, bterr(reason));
-- l2cap_iff_unlock(conn->iff);
--
-- return 0;
--}
--
--int l2cap_recv_acldata(struct hci_conn *hconn, struct sk_buff *skb, __u16 flags)
--{
-- struct l2cap_conn *conn = hconn->l2cap_data;
--
-- if (!conn) {
-- ERR("unknown connection %p", hconn);
-- goto drop;
-- }
--
-- DBG("conn %p len %d flags 0x%x", conn, skb->len, flags);
--
-- if (flags & ACL_START) {
-- int flen, tlen, size;
-- l2cap_hdr *lh;
--
-- if (conn->rx_len) {
-- ERR("Unexpected start frame (len %d)", skb->len);
-- kfree_skb(conn->rx_skb); conn->rx_skb = NULL;
-- conn->rx_len = 0;
-- }
--
-- if (skb->len < L2CAP_HDR_SIZE) {
-- ERR("Frame is too small (len %d)", skb->len);
-- goto drop;
-- }
--
-- lh = (l2cap_hdr *)skb->data;
-- tlen = __le16_to_cpu(lh->len);
-- flen = skb->len - L2CAP_HDR_SIZE;
--
-- DBG("Start: total len %d, frag len %d", tlen, flen);
--
-- if (flen == tlen) {
-- /* Complete frame received */
-- l2cap_recv_frame(conn, skb);
-- return 0;
-- }
--
-- /* Allocate skb for the complete frame (with header) */
-- size = L2CAP_HDR_SIZE + tlen;
-- if (!(conn->rx_skb = bluez_skb_alloc(size, GFP_ATOMIC)))
-- goto drop;
--
-- memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
--
-- conn->rx_len = tlen - flen;
-- } else {
-- DBG("Cont: frag len %d (expecting %d)", skb->len, conn->rx_len);
--
-- if (!conn->rx_len) {
-- ERR("Unexpected continuation frame (len %d)", skb->len);
-- goto drop;
-- }
--
-- if (skb->len > conn->rx_len) {
-- ERR("Fragment is too large (len %d)", skb->len);
-- kfree_skb(conn->rx_skb); conn->rx_skb = NULL;
-- goto drop;
-- }
--
-- memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
-- conn->rx_len -= skb->len;
--
-- if (!conn->rx_len) {
-- /* Complete frame received */
-- l2cap_recv_frame(conn, conn->rx_skb);
-- conn->rx_skb = NULL;
-- }
-- }
--
--drop:
-- kfree_skb(skb);
-- return 0;
--}
--
--struct proto_ops l2cap_sock_ops = {
-- family: PF_BLUETOOTH,
-- release: l2cap_sock_release,
-- bind: l2cap_sock_bind,
-- connect: l2cap_sock_connect,
-- listen: l2cap_sock_listen,
-- accept: l2cap_sock_accept,
-- getname: l2cap_sock_getname,
-- sendmsg: l2cap_sock_sendmsg,
-- recvmsg: l2cap_sock_recvmsg,
-- poll: l2cap_sock_poll,
-- socketpair: sock_no_socketpair,
-- ioctl: sock_no_ioctl,
-- shutdown: sock_no_shutdown,
-- setsockopt: l2cap_sock_setsockopt,
-- getsockopt: l2cap_sock_getsockopt,
-- mmap: sock_no_mmap
--};
--
--struct net_proto_family l2cap_sock_family_ops = {
-- family: PF_BLUETOOTH,
-- create: l2cap_sock_create
--};
--
--struct hci_proto l2cap_hci_proto = {
-- name: "L2CAP",
-- id: HCI_PROTO_L2CAP,
-- connect_ind: l2cap_connect_ind,
-- connect_cfm: l2cap_connect_cfm,
-- disconn_ind: l2cap_disconn_ind,
-- recv_acldata: l2cap_recv_acldata,
--};
--
--struct notifier_block l2cap_nblock = {
-- notifier_call: l2cap_dev_event
--};
--
--int __init l2cap_init(void)
--{
-- INF("BlueZ L2CAP ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
--
-- if (bluez_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops)) {
-- ERR("Can't register L2CAP socket");
-- return -EPROTO;
-- }
--
-- if (hci_register_proto(&l2cap_hci_proto) < 0) {
-- ERR("Can't register L2CAP protocol");
-- return -EPROTO;
-- }
--
-- hci_register_notifier(&l2cap_nblock);
--
-- l2cap_register_proc();
--
-- return 0;
--}
--
--void l2cap_cleanup(void)
--{
-- l2cap_unregister_proc();
--
-- /* Unregister socket, protocol and notifier */
-- if (bluez_sock_unregister(BTPROTO_L2CAP))
-- ERR("Can't unregister L2CAP socket");
--
-- if (hci_unregister_proto(&l2cap_hci_proto) < 0)
-- ERR("Can't unregister L2CAP protocol");
--
-- hci_unregister_notifier(&l2cap_nblock);
--
-- /* We _must_ not have any sockets and/or connections
-- * at this stage.
-- */
--
-- /* Free interface list and unlock HCI devices */
-- {
-- struct list_head *list = &l2cap_iff_list;
--
-- while (!list_empty(list)) {
-- struct l2cap_iff *iff;
--
-- iff = list_entry(list->next, struct l2cap_iff, list);
-- l2cap_iff_del(iff->hdev);
-- }
-- }
--}
--
--module_init(l2cap_init);
--module_exit(l2cap_cleanup);
--
--MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
--MODULE_DESCRIPTION("BlueZ L2CAP ver " VERSION);
--MODULE_LICENSE("GPL");
--
-diff -urN linux-2.4.18/net/bluetooth/l2cap_proc.c linux-2.4.18-mh15/net/bluetooth/l2cap_proc.c
---- linux-2.4.18/net/bluetooth/l2cap_proc.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/l2cap_proc.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,165 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * BlueZ L2CAP proc fs support.
-- *
-- * $Id: l2cap_proc.c,v 1.2 2001/06/02 01:40:09 maxk Exp $
-- */
--
--#include <linux/config.h>
--#include <linux/module.h>
--
--#include <linux/types.h>
--#include <linux/errno.h>
--#include <linux/kernel.h>
--#include <linux/major.h>
--#include <linux/sched.h>
--#include <linux/slab.h>
--#include <linux/poll.h>
--#include <linux/fcntl.h>
--#include <linux/init.h>
--#include <linux/skbuff.h>
--#include <linux/interrupt.h>
--#include <linux/socket.h>
--#include <linux/skbuff.h>
--#include <linux/proc_fs.h>
--#include <linux/list.h>
--#include <net/sock.h>
--
--#include <asm/system.h>
--#include <asm/uaccess.h>
--
--#include <net/bluetooth/bluez.h>
--#include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/l2cap_core.h>
--
--#ifndef L2CAP_DEBUG
--#undef DBG
--#define DBG( A... )
--#endif
--
--/* ----- PROC fs support ----- */
--static int l2cap_conn_dump(char *buf, struct l2cap_iff *iff)
--{
-- struct list_head *p;
-- char *ptr = buf;
--
-- list_for_each(p, &iff->conn_list) {
-- struct l2cap_conn *c;
--
-- c = list_entry(p, struct l2cap_conn, list);
-- ptr += sprintf(ptr, " %p %d %p %p %s %s\n",
-- c, c->state, c->iff, c->hconn, batostr(&c->src), batostr(&c->dst));
-- }
--
-- return ptr - buf;
--}
--
--static int l2cap_iff_dump(char *buf)
--{
-- struct list_head *p;
-- char *ptr = buf;
--
-- ptr += sprintf(ptr, "Interfaces:\n");
--
-- write_lock(&l2cap_rt_lock);
--
-- list_for_each(p, &l2cap_iff_list) {
-- struct l2cap_iff *iff;
--
-- iff = list_entry(p, struct l2cap_iff, list);
--
-- ptr += sprintf(ptr, " %s %p %p\n", iff->hdev->name, iff, iff->hdev);
--
-- l2cap_iff_lock(iff);
-- ptr += l2cap_conn_dump(ptr, iff);
-- l2cap_iff_unlock(iff);
-- }
--
-- write_unlock(&l2cap_rt_lock);
--
-- ptr += sprintf(ptr, "\n");
--
-- return ptr - buf;
--}
--
--static int l2cap_sock_dump(char *buf, struct bluez_sock_list *list)
--{
-- struct l2cap_pinfo *pi;
-- struct sock *sk;
-- char *ptr = buf;
--
-- ptr += sprintf(ptr, "Sockets:\n");
--
-- write_lock(&list->lock);
--
-- for (sk = list->head; sk; sk = sk->next) {
-- pi = l2cap_pi(sk);
-- ptr += sprintf(ptr, " %p %d %p %d %s %s 0x%4.4x 0x%4.4x %d %d\n", sk, sk->state, pi->conn, pi->psm,
-- batostr(&pi->src), batostr(&pi->dst), pi->scid, pi->dcid, pi->imtu, pi->omtu );
-- }
--
-- write_unlock(&list->lock);
--
-- ptr += sprintf(ptr, "\n");
--
-- return ptr - buf;
--}
--
--static int l2cap_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
--{
-- char *ptr = buf;
-- int len;
--
-- DBG("count %d, offset %ld", count, offset);
--
-- ptr += l2cap_iff_dump(ptr);
-- ptr += l2cap_sock_dump(ptr, &l2cap_sk_list);
-- len = ptr - buf;
--
-- if (len <= count + offset)
-- *eof = 1;
--
-- *start = buf + offset;
-- len -= offset;
--
-- if (len > count)
-- len = count;
-- if (len < 0)
-- len = 0;
--
-- return len;
--}
--
--void l2cap_register_proc(void)
--{
-- create_proc_read_entry("bluetooth/l2cap", 0, 0, l2cap_read_proc, NULL);
--}
--
--void l2cap_unregister_proc(void)
--{
-- remove_proc_entry("bluetooth/l2cap", NULL);
--}
-diff -urN linux-2.4.18/net/bluetooth/lib.c linux-2.4.18-mh15/net/bluetooth/lib.c
---- linux-2.4.18/net/bluetooth/lib.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/lib.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,7 +25,7 @@
- /*
- * BlueZ kernel library.
- *
-- * $Id: lib.c,v 1.3 2001/06/22 23:14:23 maxk Exp $
-+ * $Id: lib.c,v 1.2 2002/06/20 19:55:08 maxk Exp $
- */
-
- #include <linux/kernel.h>
-@@ -105,7 +105,7 @@
- return EACCES;
-
- case 0x06:
-- return EINVAL;
-+ return EBADE;
-
- case 0x07:
- return ENOMEM;
-diff -urN linux-2.4.18/net/bluetooth/Makefile linux-2.4.18-mh15/net/bluetooth/Makefile
---- linux-2.4.18/net/bluetooth/Makefile 2001-06-12 04:15:27.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -1,20 +1,40 @@
- #
--# Makefile for the Bluetooth subsystem
-+# Makefile for the Linux Bluetooth subsystem
- #
--O_TARGET := bluetooth.o
-
--list-multi := hci.o l2cap.o
--export-objs := syms.o
--hci-objs := af_bluetooth.o hci_core.o hci_sock.o lib.o syms.o
--l2cap-objs := l2cap_core.o l2cap_proc.o
-+O_TARGET := bluetooth.o
-
--obj-$(CONFIG_BLUEZ) += hci.o
-+list-multi := bluez.o
-+export-objs := syms.o l2cap.o
-+
-+bluez-objs := af_bluetooth.o hci_core.o hci_conn.o hci_event.o hci_sock.o lib.o syms.o
-+
-+obj-$(CONFIG_BLUEZ) += bluez.o
- obj-$(CONFIG_BLUEZ_L2CAP) += l2cap.o
-+obj-$(CONFIG_BLUEZ_SCO) += sco.o
-
--include $(TOPDIR)/Rules.make
-+subdir-$(CONFIG_BLUEZ_RFCOMM) += rfcomm
-+subdir-$(CONFIG_BLUEZ_BNEP) += bnep
-+subdir-$(CONFIG_BLUEZ_CMTP) += cmtp
-+subdir-$(CONFIG_BLUEZ_HIDP) += hidp
-+
-+ifeq ($(CONFIG_BLUEZ_RFCOMM),y)
-+obj-y += rfcomm/rfcomm.o
-+endif
-
--hci.o: $(hci-objs)
-- $(LD) -r -o $@ $(hci-objs)
-+ifeq ($(CONFIG_BLUEZ_BNEP),y)
-+obj-y += bnep/bnep.o
-+endif
-+
-+ifeq ($(CONFIG_BLUEZ_CMTP),y)
-+obj-y += cmtp/cmtp.o
-+endif
-+
-+ifeq ($(CONFIG_BLUEZ_HIDP),y)
-+obj-y += hidp/hidp.o
-+endif
-+
-+include $(TOPDIR)/Rules.make
-
--l2cap.o: $(l2cap-objs)
-- $(LD) -r -o $@ $(l2cap-objs)
-+bluez.o: $(bluez-objs)
-+ $(LD) -r -o $@ $(bluez-objs)
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/Config.in linux-2.4.18-mh15/net/bluetooth/rfcomm/Config.in
---- linux-2.4.18/net/bluetooth/rfcomm/Config.in 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,10 @@
-+#
-+# Bluetooth RFCOMM layer configuration
-+#
-+
-+dep_tristate 'RFCOMM protocol support' CONFIG_BLUEZ_RFCOMM $CONFIG_BLUEZ_L2CAP
-+
-+if [ "$CONFIG_BLUEZ_RFCOMM" != "n" ]; then
-+ bool ' RFCOMM TTY support' CONFIG_BLUEZ_RFCOMM_TTY
-+fi
-+
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/core.c linux-2.4.18-mh15/net/bluetooth/rfcomm/core.c
---- linux-2.4.18/net/bluetooth/rfcomm/core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,1940 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ RPN support - Dirk Husemann <hud@zurich.ibm.com>
-+*/
-+
-+/*
-+ * RFCOMM core.
-+ *
-+ * $Id: core.c,v 1.46 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#define __KERNEL_SYSCALLS__
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/signal.h>
-+#include <linux/init.h>
-+#include <linux/wait.h>
-+#include <linux/net.h>
-+#include <linux/proc_fs.h>
-+#include <net/sock.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#define VERSION "1.1"
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+struct task_struct *rfcomm_thread;
-+DECLARE_MUTEX(rfcomm_sem);
-+unsigned long rfcomm_event;
-+
-+static LIST_HEAD(session_list);
-+static atomic_t terminate, running;
-+
-+static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len);
-+static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci);
-+static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci);
-+static int rfcomm_queue_disc(struct rfcomm_dlc *d);
-+static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type);
-+static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d);
-+static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig);
-+static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len);
-+static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits);
-+static void rfcomm_make_uih(struct sk_buff *skb, u8 addr);
-+
-+static void rfcomm_process_connect(struct rfcomm_session *s);
-+
-+/* ---- RFCOMM frame parsing macros ---- */
-+#define __get_dlci(b) ((b & 0xfc) >> 2)
-+#define __get_channel(b) ((b & 0xf8) >> 3)
-+#define __get_dir(b) ((b & 0x04) >> 2)
-+#define __get_type(b) ((b & 0xef))
-+
-+#define __test_ea(b) ((b & 0x01))
-+#define __test_cr(b) ((b & 0x02))
-+#define __test_pf(b) ((b & 0x10))
-+
-+#define __addr(cr, dlci) (((dlci & 0x3f) << 2) | (cr << 1) | 0x01)
-+#define __ctrl(type, pf) (((type & 0xef) | (pf << 4)))
-+#define __dlci(dir, chn) (((chn & 0x1f) << 1) | dir)
-+#define __srv_channel(dlci) (dlci >> 1)
-+#define __dir(dlci) (dlci & 0x01)
-+
-+#define __len8(len) (((len) << 1) | 1)
-+#define __len16(len) ((len) << 1)
-+
-+/* MCC macros */
-+#define __mcc_type(cr, type) (((type << 2) | (cr << 1) | 0x01))
-+#define __get_mcc_type(b) ((b & 0xfc) >> 2)
-+#define __get_mcc_len(b) ((b & 0xfe) >> 1)
-+
-+/* RPN macros */
-+#define __rpn_line_settings(data, stop, parity) ((data & 0x3) | ((stop & 0x1) << 2) | ((parity & 0x3) << 3))
-+#define __get_rpn_data_bits(line) ((line) & 0x3)
-+#define __get_rpn_stop_bits(line) (((line) >> 2) & 0x1)
-+#define __get_rpn_parity(line) (((line) >> 3) & 0x3)
-+
-+/* ---- RFCOMM FCS computation ---- */
-+
-+/* CRC on 2 bytes */
-+#define __crc(data) (rfcomm_crc_table[rfcomm_crc_table[0xff ^ data[0]] ^ data[1]])
-+
-+/* FCS on 2 bytes */
-+static inline u8 __fcs(u8 *data)
-+{
-+ return (0xff - __crc(data));
-+}
-+
-+/* FCS on 3 bytes */
-+static inline u8 __fcs2(u8 *data)
-+{
-+ return (0xff - rfcomm_crc_table[__crc(data) ^ data[2]]);
-+}
-+
-+/* Check FCS */
-+static inline int __check_fcs(u8 *data, int type, u8 fcs)
-+{
-+ u8 f = __crc(data);
-+
-+ if (type != RFCOMM_UIH)
-+ f = rfcomm_crc_table[f ^ data[2]];
-+
-+ return rfcomm_crc_table[f ^ fcs] != 0xcf;
-+}
-+
-+/* ---- L2CAP callbacks ---- */
-+static void rfcomm_l2state_change(struct sock *sk)
-+{
-+ BT_DBG("%p state %d", sk, sk->state);
-+ rfcomm_schedule(RFCOMM_SCHED_STATE);
-+}
-+
-+static void rfcomm_l2data_ready(struct sock *sk, int bytes)
-+{
-+ BT_DBG("%p bytes %d", sk, bytes);
-+ rfcomm_schedule(RFCOMM_SCHED_RX);
-+}
-+
-+static int rfcomm_l2sock_create(struct socket **sock)
-+{
-+ int err;
-+
-+ BT_DBG("");
-+
-+ err = sock_create(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP, sock);
-+ if (!err) {
-+ struct sock *sk = (*sock)->sk;
-+ sk->data_ready = rfcomm_l2data_ready;
-+ sk->state_change = rfcomm_l2state_change;
-+ }
-+ return err;
-+}
-+
-+/* ---- RFCOMM DLCs ---- */
-+static void rfcomm_dlc_timeout(unsigned long arg)
-+{
-+ struct rfcomm_dlc *d = (void *) arg;
-+
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ set_bit(RFCOMM_TIMED_OUT, &d->flags);
-+ rfcomm_dlc_put(d);
-+ rfcomm_schedule(RFCOMM_SCHED_TIMEO);
-+}
-+
-+static void rfcomm_dlc_set_timer(struct rfcomm_dlc *d, long timeout)
-+{
-+ BT_DBG("dlc %p state %ld timeout %ld", d, d->state, timeout);
-+
-+ if (!mod_timer(&d->timer, jiffies + timeout))
-+ rfcomm_dlc_hold(d);
-+}
-+
-+static void rfcomm_dlc_clear_timer(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (timer_pending(&d->timer) && del_timer(&d->timer))
-+ rfcomm_dlc_put(d);
-+}
-+
-+static void rfcomm_dlc_clear_state(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("%p", d);
-+
-+ d->state = BT_OPEN;
-+ d->flags = 0;
-+ d->mscex = 0;
-+ d->mtu = RFCOMM_DEFAULT_MTU;
-+ d->v24_sig = RFCOMM_V24_RTC | RFCOMM_V24_RTR | RFCOMM_V24_DV;
-+
-+ d->cfc = RFCOMM_CFC_DISABLED;
-+ d->rx_credits = RFCOMM_DEFAULT_CREDITS;
-+}
-+
-+struct rfcomm_dlc *rfcomm_dlc_alloc(int prio)
-+{
-+ struct rfcomm_dlc *d = kmalloc(sizeof(*d), prio);
-+ if (!d)
-+ return NULL;
-+ memset(d, 0, sizeof(*d));
-+
-+ init_timer(&d->timer);
-+ d->timer.function = rfcomm_dlc_timeout;
-+ d->timer.data = (unsigned long) d;
-+
-+ skb_queue_head_init(&d->tx_queue);
-+ spin_lock_init(&d->lock);
-+ atomic_set(&d->refcnt, 1);
-+
-+ rfcomm_dlc_clear_state(d);
-+
-+ BT_DBG("%p", d);
-+ return d;
-+}
-+
-+void rfcomm_dlc_free(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("%p", d);
-+
-+ skb_queue_purge(&d->tx_queue);
-+ kfree(d);
-+}
-+
-+static void rfcomm_dlc_link(struct rfcomm_session *s, struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p session %p", d, s);
-+
-+ rfcomm_session_hold(s);
-+
-+ rfcomm_dlc_hold(d);
-+ list_add(&d->list, &s->dlcs);
-+ d->session = s;
-+}
-+
-+static void rfcomm_dlc_unlink(struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_session *s = d->session;
-+
-+ BT_DBG("dlc %p refcnt %d session %p", d, atomic_read(&d->refcnt), s);
-+
-+ list_del(&d->list);
-+ d->session = NULL;
-+ rfcomm_dlc_put(d);
-+
-+ rfcomm_session_put(s);
-+}
-+
-+static struct rfcomm_dlc *rfcomm_dlc_get(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p;
-+
-+ list_for_each(p, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (d->dlci == dlci)
-+ return d;
-+ }
-+ return NULL;
-+}
-+
-+static int __rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel)
-+{
-+ struct rfcomm_session *s;
-+ int err = 0;
-+ u8 dlci;
-+
-+ BT_DBG("dlc %p state %ld %s %s channel %d",
-+ d, d->state, batostr(src), batostr(dst), channel);
-+
-+ if (channel < 1 || channel > 30)
-+ return -EINVAL;
-+
-+ if (d->state != BT_OPEN && d->state != BT_CLOSED)
-+ return 0;
-+
-+ s = rfcomm_session_get(src, dst);
-+ if (!s) {
-+ s = rfcomm_session_create(src, dst, &err);
-+ if (!s)
-+ return err;
-+ }
-+
-+ dlci = __dlci(!s->initiator, channel);
-+
-+ /* Check if DLCI already exists */
-+ if (rfcomm_dlc_get(s, dlci))
-+ return -EBUSY;
-+
-+ rfcomm_dlc_clear_state(d);
-+
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ d->priority = 7;
-+
-+ d->state = BT_CONFIG;
-+ rfcomm_dlc_link(s, d);
-+
-+ d->mtu = s->mtu;
-+ d->cfc = (s->cfc == RFCOMM_CFC_UNKNOWN) ? 0 : s->cfc;
-+
-+ if (s->state == BT_CONNECTED)
-+ rfcomm_send_pn(s, 1, d);
-+ rfcomm_dlc_set_timer(d, RFCOMM_CONN_TIMEOUT);
-+ return 0;
-+}
-+
-+int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel)
-+{
-+ mm_segment_t fs;
-+ int r;
-+
-+ rfcomm_lock();
-+
-+ fs = get_fs(); set_fs(KERNEL_DS);
-+ r = __rfcomm_dlc_open(d, src, dst, channel);
-+ set_fs(fs);
-+
-+ rfcomm_unlock();
-+ return r;
-+}
-+
-+static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err)
-+{
-+ struct rfcomm_session *s = d->session;
-+ if (!s)
-+ return 0;
-+
-+ BT_DBG("dlc %p state %ld dlci %d err %d session %p",
-+ d, d->state, d->dlci, err, s);
-+
-+ switch (d->state) {
-+ case BT_CONNECTED:
-+ case BT_CONFIG:
-+ case BT_CONNECT:
-+ d->state = BT_DISCONN;
-+ if (skb_queue_empty(&d->tx_queue)) {
-+ rfcomm_send_disc(s, d->dlci);
-+ rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT);
-+ } else {
-+ rfcomm_queue_disc(d);
-+ rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT * 2);
-+ }
-+ break;
-+
-+ default:
-+ rfcomm_dlc_clear_timer(d);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CLOSED;
-+ d->state_change(d, err);
-+ rfcomm_dlc_unlock(d);
-+
-+ skb_queue_purge(&d->tx_queue);
-+ rfcomm_dlc_unlink(d);
-+ }
-+
-+ return 0;
-+}
-+
-+int rfcomm_dlc_close(struct rfcomm_dlc *d, int err)
-+{
-+ mm_segment_t fs;
-+ int r;
-+
-+ rfcomm_lock();
-+
-+ fs = get_fs(); set_fs(KERNEL_DS);
-+ r = __rfcomm_dlc_close(d, err);
-+ set_fs(fs);
-+
-+ rfcomm_unlock();
-+ return r;
-+}
-+
-+int rfcomm_dlc_send(struct rfcomm_dlc *d, struct sk_buff *skb)
-+{
-+ int len = skb->len;
-+
-+ if (d->state != BT_CONNECTED)
-+ return -ENOTCONN;
-+
-+ BT_DBG("dlc %p mtu %d len %d", d, d->mtu, len);
-+
-+ if (len > d->mtu)
-+ return -EINVAL;
-+
-+ rfcomm_make_uih(skb, d->addr);
-+ skb_queue_tail(&d->tx_queue, skb);
-+
-+ if (!test_bit(RFCOMM_TX_THROTTLED, &d->flags))
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+ return len;
-+}
-+
-+void __rfcomm_dlc_throttle(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (!d->cfc) {
-+ d->v24_sig |= RFCOMM_V24_FC;
-+ set_bit(RFCOMM_MSC_PENDING, &d->flags);
-+ }
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+}
-+
-+void __rfcomm_dlc_unthrottle(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (!d->cfc) {
-+ d->v24_sig &= ~RFCOMM_V24_FC;
-+ set_bit(RFCOMM_MSC_PENDING, &d->flags);
-+ }
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+}
-+
-+/*
-+ Set/get modem status functions use _local_ status i.e. what we report
-+ to the other side.
-+ Remote status is provided by dlc->modem_status() callback.
-+ */
-+int rfcomm_dlc_set_modem_status(struct rfcomm_dlc *d, u8 v24_sig)
-+{
-+ BT_DBG("dlc %p state %ld v24_sig 0x%x",
-+ d, d->state, v24_sig);
-+
-+ if (test_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ v24_sig |= RFCOMM_V24_FC;
-+ else
-+ v24_sig &= ~RFCOMM_V24_FC;
-+
-+ d->v24_sig = v24_sig;
-+
-+ if (!test_and_set_bit(RFCOMM_MSC_PENDING, &d->flags))
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+
-+ return 0;
-+}
-+
-+int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig)
-+{
-+ BT_DBG("dlc %p state %ld v24_sig 0x%x",
-+ d, d->state, d->v24_sig);
-+
-+ *v24_sig = d->v24_sig;
-+ return 0;
-+}
-+
-+/* ---- RFCOMM sessions ---- */
-+struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state)
-+{
-+ struct rfcomm_session *s = kmalloc(sizeof(*s), GFP_KERNEL);
-+ if (!s)
-+ return NULL;
-+ memset(s, 0, sizeof(*s));
-+
-+ BT_DBG("session %p sock %p", s, sock);
-+
-+ INIT_LIST_HEAD(&s->dlcs);
-+ s->state = state;
-+ s->sock = sock;
-+
-+ s->mtu = RFCOMM_DEFAULT_MTU;
-+ s->cfc = RFCOMM_CFC_UNKNOWN;
-+
-+ list_add(&s->list, &session_list);
-+
-+ /* Do not increment module usage count for listeting sessions.
-+ * Otherwise we won't be able to unload the module. */
-+ if (state != BT_LISTEN)
-+ MOD_INC_USE_COUNT;
-+ return s;
-+}
-+
-+void rfcomm_session_del(struct rfcomm_session *s)
-+{
-+ int state = s->state;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_del(&s->list);
-+
-+ if (state == BT_CONNECTED)
-+ rfcomm_send_disc(s, 0);
-+
-+ sock_release(s->sock);
-+ kfree(s);
-+
-+ if (state != BT_LISTEN)
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst)
-+{
-+ struct rfcomm_session *s;
-+ struct list_head *p, *n;
-+ struct bluez_pinfo *pi;
-+ list_for_each_safe(p, n, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ pi = bluez_pi(s->sock->sk);
-+
-+ if ((!bacmp(src, BDADDR_ANY) || !bacmp(&pi->src, src)) &&
-+ !bacmp(&pi->dst, dst))
-+ return s;
-+ }
-+ return NULL;
-+}
-+
-+void rfcomm_session_close(struct rfcomm_session *s, int err)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld err %d", s, s->state, err);
-+
-+ rfcomm_session_hold(s);
-+
-+ s->state = BT_CLOSED;
-+
-+ /* Close all dlcs */
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ }
-+
-+ rfcomm_session_put(s);
-+}
-+
-+struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err)
-+{
-+ struct rfcomm_session *s = NULL;
-+ struct sockaddr_l2 addr;
-+ struct l2cap_options opts;
-+ struct socket *sock;
-+ int size;
-+
-+ BT_DBG("%s %s", batostr(src), batostr(dst));
-+
-+ *err = rfcomm_l2sock_create(&sock);
-+ if (*err < 0)
-+ return NULL;
-+
-+ bacpy(&addr.l2_bdaddr, src);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = 0;
-+ *err = sock->ops->bind(sock, (struct sockaddr *) &addr, sizeof(addr));
-+ if (*err < 0)
-+ goto failed;
-+
-+ /* Set L2CAP options */
-+ size = sizeof(opts);
-+ sock->ops->getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, &size);
-+
-+ opts.imtu = RFCOMM_MAX_L2CAP_MTU;
-+ sock->ops->setsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, size);
-+
-+ s = rfcomm_session_add(sock, BT_BOUND);
-+ if (!s) {
-+ *err = -ENOMEM;
-+ goto failed;
-+ }
-+
-+ s->initiator = 1;
-+
-+ bacpy(&addr.l2_bdaddr, dst);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = htobs(RFCOMM_PSM);
-+ *err = sock->ops->connect(sock, (struct sockaddr *) &addr, sizeof(addr), O_NONBLOCK);
-+ if (*err == 0 || *err == -EAGAIN)
-+ return s;
-+
-+ rfcomm_session_del(s);
-+ return NULL;
-+
-+failed:
-+ sock_release(sock);
-+ return NULL;
-+}
-+
-+void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst)
-+{
-+ struct sock *sk = s->sock->sk;
-+ if (src)
-+ bacpy(src, &bluez_pi(sk)->src);
-+ if (dst)
-+ bacpy(dst, &bluez_pi(sk)->dst);
-+}
-+
-+/* ---- RFCOMM frame sending ---- */
-+static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len)
-+{
-+ struct socket *sock = s->sock;
-+ struct iovec iv = { data, len };
-+ struct msghdr msg;
-+ int err;
-+
-+ BT_DBG("session %p len %d", s, len);
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 1;
-+ msg.msg_iov = &iv;
-+
-+ err = sock->ops->sendmsg(sock, &msg, len, 0);
-+ return err;
-+}
-+
-+static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_SABM, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_ua(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(!s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_UA, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_DISC, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_queue_disc(struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_cmd *cmd;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("dlc %p dlci %d", d, d->dlci);
-+
-+ skb = alloc_skb(sizeof(*cmd), GFP_KERNEL);
-+ if (!skb)
-+ return -ENOMEM;
-+
-+ cmd = (void *) __skb_put(skb, sizeof(*cmd));
-+ cmd->addr = d->addr;
-+ cmd->ctrl = __ctrl(RFCOMM_DISC, 1);
-+ cmd->len = __len8(0);
-+ cmd->fcs = __fcs2((u8 *) cmd);
-+
-+ skb_queue_tail(&d->tx_queue, skb);
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+ return 0;
-+}
-+
-+static int rfcomm_send_dm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(!s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_DM, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d type %d", s, cr, type);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + 1);
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_NSC);
-+ mcc->len = __len8(1);
-+
-+ /* Type that we didn't like */
-+ *ptr = __mcc_type(cr, type); ptr++;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_pn *pn;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d dlci %d mtu %d", s, cr, d->dlci, d->mtu);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*pn));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_PN);
-+ mcc->len = __len8(sizeof(*pn));
-+
-+ pn = (void *) ptr; ptr += sizeof(*pn);
-+ pn->dlci = d->dlci;
-+ pn->priority = d->priority;
-+ pn->ack_timer = 0;
-+ pn->max_retrans = 0;
-+
-+ if (s->cfc) {
-+ pn->flow_ctrl = cr ? 0xf0 : 0xe0;
-+ pn->credits = RFCOMM_DEFAULT_CREDITS;
-+ } else {
-+ pn->flow_ctrl = 0;
-+ pn->credits = 0;
-+ }
-+
-+ pn->mtu = htobs(d->mtu);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci,
-+ u8 bit_rate, u8 data_bits, u8 stop_bits,
-+ u8 parity, u8 flow_ctrl_settings,
-+ u8 xon_char, u8 xoff_char, u16 param_mask)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_rpn *rpn;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d dlci %d bit_r 0x%x data_b 0x%x stop_b 0x%x parity 0x%x"
-+ "flwc_s 0x%x xon_c 0x%x xoff_c 0x%x p_mask 0x%x",
-+ s, cr, dlci, bit_rate, data_bits, stop_bits, parity,
-+ flow_ctrl_settings, xon_char, xoff_char, param_mask);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*rpn));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_RPN);
-+ mcc->len = __len8(sizeof(*rpn));
-+
-+ rpn = (void *) ptr; ptr += sizeof(*rpn);
-+ rpn->dlci = __addr(1, dlci);
-+ rpn->bit_rate = bit_rate;
-+ rpn->line_settings = __rpn_line_settings(data_bits, stop_bits, parity);
-+ rpn->flow_ctrl = flow_ctrl_settings;
-+ rpn->xon_char = xon_char;
-+ rpn->xoff_char = xoff_char;
-+ rpn->param_mask = param_mask;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_rls(struct rfcomm_session *s, int cr, u8 dlci, u8 status)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_rls *rls;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d status 0x%x", s, cr, status);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*rls));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_RLS);
-+ mcc->len = __len8(sizeof(*rls));
-+
-+ rls = (void *) ptr; ptr += sizeof(*rls);
-+ rls->dlci = __addr(1, dlci);
-+ rls->status = status;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_msc *msc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d v24 0x%x", s, cr, v24_sig);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*msc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_MSC);
-+ mcc->len = __len8(sizeof(*msc));
-+
-+ msc = (void *) ptr; ptr += sizeof(*msc);
-+ msc->dlci = __addr(1, dlci);
-+ msc->v24_sig = v24_sig | 0x01;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_fcoff(struct rfcomm_session *s, int cr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_FCOFF);
-+ mcc->len = __len8(0);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_fcon(struct rfcomm_session *s, int cr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_FCON);
-+ mcc->len = __len8(0);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len)
-+{
-+ struct socket *sock = s->sock;
-+ struct iovec iv[3];
-+ struct msghdr msg;
-+ unsigned char hdr[5], crc[1];
-+
-+ if (len > 125)
-+ return -EINVAL;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr[0] = __addr(s->initiator, 0);
-+ hdr[1] = __ctrl(RFCOMM_UIH, 0);
-+ hdr[2] = 0x01 | ((len + 2) << 1);
-+ hdr[3] = 0x01 | ((cr & 0x01) << 1) | (RFCOMM_TEST << 2);
-+ hdr[4] = 0x01 | (len << 1);
-+
-+ crc[0] = __fcs(hdr);
-+
-+ iv[0].iov_base = hdr;
-+ iv[0].iov_len = 5;
-+ iv[1].iov_base = pattern;
-+ iv[1].iov_len = len;
-+ iv[2].iov_base = crc;
-+ iv[2].iov_len = 1;
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 3;
-+ msg.msg_iov = iv;
-+ return sock->ops->sendmsg(sock, &msg, 6 + len, 0);
-+}
-+
-+static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits)
-+{
-+ struct rfcomm_hdr *hdr;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p addr %d credits %d", s, addr, credits);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = addr;
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 1);
-+ hdr->len = __len8(0);
-+
-+ *ptr = credits; ptr++;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static void rfcomm_make_uih(struct sk_buff *skb, u8 addr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ int len = skb->len;
-+ u8 *crc;
-+
-+ if (len > 127) {
-+ hdr = (void *) skb_push(skb, 4);
-+ put_unaligned(htobs(__len16(len)), (u16 *) &hdr->len);
-+ } else {
-+ hdr = (void *) skb_push(skb, 3);
-+ hdr->len = __len8(len);
-+ }
-+ hdr->addr = addr;
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+
-+ crc = skb_put(skb, 1);
-+ *crc = __fcs((void *) hdr);
-+}
-+
-+/* ---- RFCOMM frame reception ---- */
-+static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci)
-+{
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ /* Data channel */
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (!d) {
-+ rfcomm_send_dm(s, dlci);
-+ return 0;
-+ }
-+
-+ switch (d->state) {
-+ case BT_CONNECT:
-+ rfcomm_dlc_clear_timer(d);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ break;
-+
-+ case BT_DISCONN:
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, 0);
-+ break;
-+ }
-+ } else {
-+ /* Control channel */
-+ switch (s->state) {
-+ case BT_CONNECT:
-+ s->state = BT_CONNECTED;
-+ rfcomm_process_connect(s);
-+ break;
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_dm(struct rfcomm_session *s, u8 dlci)
-+{
-+ int err = 0;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ /* Data DLC */
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (d->state == BT_CONNECT || d->state == BT_CONFIG)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ }
-+ } else {
-+ if (s->state == BT_CONNECT)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, err);
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_disc(struct rfcomm_session *s, u8 dlci)
-+{
-+ int err = 0;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ rfcomm_send_ua(s, dlci);
-+
-+ if (d->state == BT_CONNECT || d->state == BT_CONFIG)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ } else
-+ rfcomm_send_dm(s, dlci);
-+
-+ } else {
-+ rfcomm_send_ua(s, 0);
-+
-+ if (s->state == BT_CONNECT)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, err);
-+ }
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_sabm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_dlc *d;
-+ u8 channel;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (!dlci) {
-+ rfcomm_send_ua(s, 0);
-+
-+ if (s->state == BT_OPEN) {
-+ s->state = BT_CONNECTED;
-+ rfcomm_process_connect(s);
-+ }
-+ return 0;
-+ }
-+
-+ /* Check if DLC exists */
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (d->state == BT_OPEN) {
-+ /* DLC was previously opened by PN request */
-+ rfcomm_send_ua(s, dlci);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ }
-+ return 0;
-+ }
-+
-+ /* Notify socket layer about incomming connection */
-+ channel = __srv_channel(dlci);
-+ if (rfcomm_connect_ind(s, channel, &d)) {
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ rfcomm_dlc_link(s, d);
-+
-+ rfcomm_send_ua(s, dlci);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ } else {
-+ rfcomm_send_dm(s, dlci);
-+ }
-+
-+ return 0;
-+}
-+
-+static int rfcomm_apply_pn(struct rfcomm_dlc *d, int cr, struct rfcomm_pn *pn)
-+{
-+ struct rfcomm_session *s = d->session;
-+
-+ BT_DBG("dlc %p state %ld dlci %d mtu %d fc 0x%x credits %d",
-+ d, d->state, d->dlci, pn->mtu, pn->flow_ctrl, pn->credits);
-+
-+ if (pn->flow_ctrl == 0xf0 || pn->flow_ctrl == 0xe0) {
-+ d->cfc = s->cfc = RFCOMM_CFC_ENABLED;
-+ d->tx_credits = pn->credits;
-+ } else {
-+ d->cfc = s->cfc = RFCOMM_CFC_DISABLED;
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ }
-+
-+ d->priority = pn->priority;
-+
-+ d->mtu = s->mtu = btohs(pn->mtu);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_pn(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_pn *pn = (void *) skb->data;
-+ struct rfcomm_dlc *d;
-+ u8 dlci = pn->dlci;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (!dlci)
-+ return 0;
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (cr) {
-+ /* PN request */
-+ rfcomm_apply_pn(d, cr, pn);
-+ rfcomm_send_pn(s, 0, d);
-+ } else {
-+ /* PN response */
-+ switch (d->state) {
-+ case BT_CONFIG:
-+ rfcomm_apply_pn(d, cr, pn);
-+
-+ d->state = BT_CONNECT;
-+ rfcomm_send_sabm(s, d->dlci);
-+ break;
-+ }
-+ }
-+ } else {
-+ u8 channel = __srv_channel(dlci);
-+
-+ if (!cr)
-+ return 0;
-+
-+ /* PN request for non existing DLC.
-+ * Assume incomming connection. */
-+ if (rfcomm_connect_ind(s, channel, &d)) {
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ rfcomm_dlc_link(s, d);
-+
-+ rfcomm_apply_pn(d, cr, pn);
-+
-+ d->state = BT_OPEN;
-+ rfcomm_send_pn(s, 0, d);
-+ } else {
-+ rfcomm_send_dm(s, dlci);
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_rpn(struct rfcomm_session *s, int cr, int len, struct sk_buff *skb)
-+{
-+ struct rfcomm_rpn *rpn = (void *) skb->data;
-+ u8 dlci = __get_dlci(rpn->dlci);
-+
-+ u8 bit_rate = 0;
-+ u8 data_bits = 0;
-+ u8 stop_bits = 0;
-+ u8 parity = 0;
-+ u8 flow_ctrl = 0;
-+ u8 xon_char = 0;
-+ u8 xoff_char = 0;
-+ u16 rpn_mask = RFCOMM_RPN_PM_ALL;
-+
-+ BT_DBG("dlci %d cr %d len 0x%x bitr 0x%x line 0x%x flow 0x%x xonc 0x%x xoffc 0x%x pm 0x%x",
-+ dlci, cr, len, rpn->bit_rate, rpn->line_settings, rpn->flow_ctrl,
-+ rpn->xon_char, rpn->xoff_char, rpn->param_mask);
-+
-+ if (!cr)
-+ return 0;
-+
-+ if (len == 1) {
-+ /* request: return default setting */
-+ bit_rate = RFCOMM_RPN_BR_115200;
-+ data_bits = RFCOMM_RPN_DATA_8;
-+ stop_bits = RFCOMM_RPN_STOP_1;
-+ parity = RFCOMM_RPN_PARITY_NONE;
-+ flow_ctrl = RFCOMM_RPN_FLOW_NONE;
-+ xon_char = RFCOMM_RPN_XON_CHAR;
-+ xoff_char = RFCOMM_RPN_XOFF_CHAR;
-+
-+ goto rpn_out;
-+ }
-+ /* check for sane values: ignore/accept bit_rate, 8 bits, 1 stop bit, no parity,
-+ no flow control lines, normal XON/XOFF chars */
-+ if (rpn->param_mask & RFCOMM_RPN_PM_BITRATE) {
-+ bit_rate = rpn->bit_rate;
-+ if (bit_rate != RFCOMM_RPN_BR_115200) {
-+ BT_DBG("RPN bit rate mismatch 0x%x", bit_rate);
-+ bit_rate = RFCOMM_RPN_BR_115200;
-+ rpn_mask ^= RFCOMM_RPN_PM_BITRATE;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_DATA) {
-+ data_bits = __get_rpn_data_bits(rpn->line_settings);
-+ if (data_bits != RFCOMM_RPN_DATA_8) {
-+ BT_DBG("RPN data bits mismatch 0x%x", data_bits);
-+ data_bits = RFCOMM_RPN_DATA_8;
-+ rpn_mask ^= RFCOMM_RPN_PM_DATA;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_STOP) {
-+ stop_bits = __get_rpn_stop_bits(rpn->line_settings);
-+ if (stop_bits != RFCOMM_RPN_STOP_1) {
-+ BT_DBG("RPN stop bits mismatch 0x%x", stop_bits);
-+ stop_bits = RFCOMM_RPN_STOP_1;
-+ rpn_mask ^= RFCOMM_RPN_PM_STOP;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_PARITY) {
-+ parity = __get_rpn_parity(rpn->line_settings);
-+ if (parity != RFCOMM_RPN_PARITY_NONE) {
-+ BT_DBG("RPN parity mismatch 0x%x", parity);
-+ parity = RFCOMM_RPN_PARITY_NONE;
-+ rpn_mask ^= RFCOMM_RPN_PM_PARITY;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_FLOW) {
-+ flow_ctrl = rpn->flow_ctrl;
-+ if (flow_ctrl != RFCOMM_RPN_FLOW_NONE) {
-+ BT_DBG("RPN flow ctrl mismatch 0x%x", flow_ctrl);
-+ flow_ctrl = RFCOMM_RPN_FLOW_NONE;
-+ rpn_mask ^= RFCOMM_RPN_PM_FLOW;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_XON) {
-+ xon_char = rpn->xon_char;
-+ if (xon_char != RFCOMM_RPN_XON_CHAR) {
-+ BT_DBG("RPN XON char mismatch 0x%x", xon_char);
-+ xon_char = RFCOMM_RPN_XON_CHAR;
-+ rpn_mask ^= RFCOMM_RPN_PM_XON;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_XOFF) {
-+ xoff_char = rpn->xoff_char;
-+ if (xoff_char != RFCOMM_RPN_XOFF_CHAR) {
-+ BT_DBG("RPN XOFF char mismatch 0x%x", xoff_char);
-+ xoff_char = RFCOMM_RPN_XOFF_CHAR;
-+ rpn_mask ^= RFCOMM_RPN_PM_XOFF;
-+ }
-+ }
-+
-+rpn_out:
-+ rfcomm_send_rpn(s, 0, dlci,
-+ bit_rate, data_bits, stop_bits, parity, flow_ctrl,
-+ xon_char, xoff_char, rpn_mask);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_rls(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_rls *rls = (void *) skb->data;
-+ u8 dlci = __get_dlci(rls->dlci);
-+
-+ BT_DBG("dlci %d cr %d status 0x%x", dlci, cr, rls->status);
-+
-+ if (!cr)
-+ return 0;
-+
-+ /* FIXME: We should probably do something with this
-+ information here. But for now it's sufficient just
-+ to reply -- Bluetooth 1.1 says it's mandatory to
-+ recognise and respond to RLS */
-+
-+ rfcomm_send_rls(s, 0, dlci, rls->status);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_msc(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_msc *msc = (void *) skb->data;
-+ struct rfcomm_dlc *d;
-+ u8 dlci = __get_dlci(msc->dlci);
-+
-+ BT_DBG("dlci %d cr %d v24 0x%x", dlci, cr, msc->v24_sig);
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (!d)
-+ return 0;
-+
-+ if (cr) {
-+ if (msc->v24_sig & RFCOMM_V24_FC && !d->cfc)
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ else
-+ clear_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+
-+ rfcomm_dlc_lock(d);
-+ if (d->modem_status)
-+ d->modem_status(d, msc->v24_sig);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 0, dlci, msc->v24_sig);
-+
-+ d->mscex |= RFCOMM_MSCEX_RX;
-+ } else
-+ d->mscex |= RFCOMM_MSCEX_TX;
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_mcc(struct rfcomm_session *s, struct sk_buff *skb)
-+{
-+ struct rfcomm_mcc *mcc = (void *) skb->data;
-+ u8 type, cr, len;
-+
-+ cr = __test_cr(mcc->type);
-+ type = __get_mcc_type(mcc->type);
-+ len = __get_mcc_len(mcc->len);
-+
-+ BT_DBG("%p type 0x%x cr %d", s, type, cr);
-+
-+ skb_pull(skb, 2);
-+
-+ switch (type) {
-+ case RFCOMM_PN:
-+ rfcomm_recv_pn(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_RPN:
-+ rfcomm_recv_rpn(s, cr, len, skb);
-+ break;
-+
-+ case RFCOMM_RLS:
-+ rfcomm_recv_rls(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_MSC:
-+ rfcomm_recv_msc(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_FCOFF:
-+ if (cr) {
-+ set_bit(RFCOMM_TX_THROTTLED, &s->flags);
-+ rfcomm_send_fcoff(s, 0);
-+ }
-+ break;
-+
-+ case RFCOMM_FCON:
-+ if (cr) {
-+ clear_bit(RFCOMM_TX_THROTTLED, &s->flags);
-+ rfcomm_send_fcon(s, 0);
-+ }
-+ break;
-+
-+ case RFCOMM_TEST:
-+ if (cr)
-+ rfcomm_send_test(s, 0, skb->data, skb->len);
-+ break;
-+
-+ case RFCOMM_NSC:
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown control type 0x%02x", type);
-+ rfcomm_send_nsc(s, cr, type);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_data(struct rfcomm_session *s, u8 dlci, int pf, struct sk_buff *skb)
-+{
-+ struct rfcomm_dlc *d;
-+
-+ BT_DBG("session %p state %ld dlci %d pf %d", s, s->state, dlci, pf);
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (!d) {
-+ rfcomm_send_dm(s, dlci);
-+ goto drop;
-+ }
-+
-+ if (pf && d->cfc) {
-+ u8 credits = *(u8 *) skb->data; skb_pull(skb, 1);
-+
-+ d->tx_credits += credits;
-+ if (d->tx_credits)
-+ clear_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ }
-+
-+ if (skb->len && d->state == BT_CONNECTED) {
-+ rfcomm_dlc_lock(d);
-+ d->rx_credits--;
-+ d->data_ready(d, skb);
-+ rfcomm_dlc_unlock(d);
-+ return 0;
-+ }
-+
-+drop:
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static int rfcomm_recv_frame(struct rfcomm_session *s, struct sk_buff *skb)
-+{
-+ struct rfcomm_hdr *hdr = (void *) skb->data;
-+ u8 type, dlci, fcs;
-+
-+ dlci = __get_dlci(hdr->addr);
-+ type = __get_type(hdr->ctrl);
-+
-+ /* Trim FCS */
-+ skb->len--; skb->tail--;
-+ fcs = *(u8 *) skb->tail;
-+
-+ if (__check_fcs(skb->data, type, fcs)) {
-+ BT_ERR("bad checksum in packet");
-+ kfree_skb(skb);
-+ return -EILSEQ;
-+ }
-+
-+ if (__test_ea(hdr->len))
-+ skb_pull(skb, 3);
-+ else
-+ skb_pull(skb, 4);
-+
-+ switch (type) {
-+ case RFCOMM_SABM:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_sabm(s, dlci);
-+ break;
-+
-+ case RFCOMM_DISC:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_disc(s, dlci);
-+ break;
-+
-+ case RFCOMM_UA:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_ua(s, dlci);
-+ break;
-+
-+ case RFCOMM_DM:
-+ rfcomm_recv_dm(s, dlci);
-+ break;
-+
-+ case RFCOMM_UIH:
-+ if (dlci)
-+ return rfcomm_recv_data(s, dlci, __test_pf(hdr->ctrl), skb);
-+
-+ rfcomm_recv_mcc(s, skb);
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown packet type 0x%02x\n", type);
-+ break;
-+ }
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+/* ---- Connection and data processing ---- */
-+
-+static void rfcomm_process_connect(struct rfcomm_session *s)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (d->state == BT_CONFIG) {
-+ d->mtu = s->mtu;
-+ rfcomm_send_pn(s, 1, d);
-+ }
-+ }
-+}
-+
-+/* Send data queued for the DLC.
-+ * Return number of frames left in the queue.
-+ */
-+static inline int rfcomm_process_tx(struct rfcomm_dlc *d)
-+{
-+ struct sk_buff *skb;
-+ int err;
-+
-+ BT_DBG("dlc %p state %ld cfc %d rx_credits %d tx_credits %d",
-+ d, d->state, d->cfc, d->rx_credits, d->tx_credits);
-+
-+ /* Send pending MSC */
-+ if (test_and_clear_bit(RFCOMM_MSC_PENDING, &d->flags))
-+ rfcomm_send_msc(d->session, 1, d->dlci, d->v24_sig);
-+
-+ if (d->cfc) {
-+ /* CFC enabled.
-+ * Give them some credits */
-+ if (!test_bit(RFCOMM_RX_THROTTLED, &d->flags) &&
-+ d->rx_credits <= (d->cfc >> 2)) {
-+ rfcomm_send_credits(d->session, d->addr, d->cfc - d->rx_credits);
-+ d->rx_credits = d->cfc;
-+ }
-+ } else {
-+ /* CFC disabled.
-+ * Give ourselves some credits */
-+ d->tx_credits = 5;
-+ }
-+
-+ if (test_bit(RFCOMM_TX_THROTTLED, &d->flags))
-+ return skb_queue_len(&d->tx_queue);
-+
-+ while (d->tx_credits && (skb = skb_dequeue(&d->tx_queue))) {
-+ err = rfcomm_send_frame(d->session, skb->data, skb->len);
-+ if (err < 0) {
-+ skb_queue_head(&d->tx_queue, skb);
-+ break;
-+ }
-+ kfree_skb(skb);
-+ d->tx_credits--;
-+ }
-+
-+ if (d->cfc && !d->tx_credits) {
-+ /* We're out of TX credits.
-+ * Set TX_THROTTLED flag to avoid unnesary wakeups by dlc_send. */
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ }
-+
-+ return skb_queue_len(&d->tx_queue);
-+}
-+
-+static inline void rfcomm_process_dlcs(struct rfcomm_session *s)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (test_bit(RFCOMM_TIMED_OUT, &d->flags)) {
-+ __rfcomm_dlc_close(d, ETIMEDOUT);
-+ continue;
-+ }
-+
-+ if (test_bit(RFCOMM_TX_THROTTLED, &s->flags))
-+ continue;
-+
-+ if ((d->state == BT_CONNECTED || d->state == BT_DISCONN) &&
-+ d->mscex == RFCOMM_MSCEX_OK)
-+ rfcomm_process_tx(d);
-+ }
-+}
-+
-+static inline void rfcomm_process_rx(struct rfcomm_session *s)
-+{
-+ struct socket *sock = s->sock;
-+ struct sock *sk = sock->sk;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("session %p state %ld qlen %d", s, s->state, skb_queue_len(&sk->receive_queue));
-+
-+ /* Get data directly from socket receive queue without copying it. */
-+ while ((skb = skb_dequeue(&sk->receive_queue))) {
-+ skb_orphan(skb);
-+ rfcomm_recv_frame(s, skb);
-+ }
-+
-+ if (sk->state == BT_CLOSED) {
-+ if (!s->initiator)
-+ rfcomm_session_put(s);
-+
-+ rfcomm_session_close(s, sk->err);
-+ }
-+}
-+
-+static inline void rfcomm_accept_connection(struct rfcomm_session *s)
-+{
-+ struct socket *sock = s->sock, *nsock;
-+ int err;
-+
-+ /* Fast check for a new connection.
-+ * Avoids unnesesary socket allocations. */
-+ if (list_empty(&bluez_pi(sock->sk)->accept_q))
-+ return;
-+
-+ BT_DBG("session %p", s);
-+
-+ nsock = sock_alloc();
-+ if (!nsock)
-+ return;
-+
-+ nsock->type = sock->type;
-+ nsock->ops = sock->ops;
-+
-+ err = sock->ops->accept(sock, nsock, O_NONBLOCK);
-+ if (err < 0) {
-+ sock_release(nsock);
-+ return;
-+ }
-+
-+ /* Set our callbacks */
-+ nsock->sk->data_ready = rfcomm_l2data_ready;
-+ nsock->sk->state_change = rfcomm_l2state_change;
-+
-+ s = rfcomm_session_add(nsock, BT_OPEN);
-+ if (s) {
-+ rfcomm_session_hold(s);
-+ rfcomm_schedule(RFCOMM_SCHED_RX);
-+ } else
-+ sock_release(nsock);
-+}
-+
-+static inline void rfcomm_check_connection(struct rfcomm_session *s)
-+{
-+ struct sock *sk = s->sock->sk;
-+
-+ BT_DBG("%p state %ld", s, s->state);
-+
-+ switch(sk->state) {
-+ case BT_CONNECTED:
-+ s->state = BT_CONNECT;
-+
-+ /* We can adjust MTU on outgoing sessions.
-+ * L2CAP MTU minus UIH header and FCS. */
-+ s->mtu = min(l2cap_pi(sk)->omtu, l2cap_pi(sk)->imtu) - 5;
-+
-+ rfcomm_send_sabm(s, 0);
-+ break;
-+
-+ case BT_CLOSED:
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, sk->err);
-+ break;
-+ }
-+}
-+
-+static inline void rfcomm_process_sessions(void)
-+{
-+ struct list_head *p, *n;
-+
-+ rfcomm_lock();
-+
-+ list_for_each_safe(p, n, &session_list) {
-+ struct rfcomm_session *s;
-+ s = list_entry(p, struct rfcomm_session, list);
-+
-+ if (s->state == BT_LISTEN) {
-+ rfcomm_accept_connection(s);
-+ continue;
-+ }
-+
-+ rfcomm_session_hold(s);
-+
-+ switch (s->state) {
-+ case BT_BOUND:
-+ rfcomm_check_connection(s);
-+ break;
-+
-+ default:
-+ rfcomm_process_rx(s);
-+ break;
-+ }
-+
-+ rfcomm_process_dlcs(s);
-+
-+ rfcomm_session_put(s);
-+ }
-+
-+ rfcomm_unlock();
-+}
-+
-+static void rfcomm_worker(void)
-+{
-+ BT_DBG("");
-+
-+ daemonize(); reparent_to_init();
-+ set_fs(KERNEL_DS);
-+
-+ while (!atomic_read(&terminate)) {
-+ BT_DBG("worker loop event 0x%lx", rfcomm_event);
-+
-+ if (!test_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event)) {
-+ /* No pending events. Let's sleep.
-+ * Incomming connections and data will wake us up. */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule();
-+ }
-+
-+ /* Process stuff */
-+ clear_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
-+ rfcomm_process_sessions();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ return;
-+}
-+
-+static int rfcomm_add_listener(bdaddr_t *ba)
-+{
-+ struct sockaddr_l2 addr;
-+ struct l2cap_options opts;
-+ struct socket *sock;
-+ struct rfcomm_session *s;
-+ int size, err = 0;
-+
-+ /* Create socket */
-+ err = rfcomm_l2sock_create(&sock);
-+ if (err < 0) {
-+ BT_ERR("Create socket failed %d", err);
-+ return err;
-+ }
-+
-+ /* Bind socket */
-+ bacpy(&addr.l2_bdaddr, ba);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = htobs(RFCOMM_PSM);
-+ err = sock->ops->bind(sock, (struct sockaddr *) &addr, sizeof(addr));
-+ if (err < 0) {
-+ BT_ERR("Bind failed %d", err);
-+ goto failed;
-+ }
-+
-+ /* Set L2CAP options */
-+ size = sizeof(opts);
-+ sock->ops->getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, &size);
-+
-+ opts.imtu = RFCOMM_MAX_L2CAP_MTU;
-+ sock->ops->setsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, size);
-+
-+ /* Start listening on the socket */
-+ err = sock->ops->listen(sock, 10);
-+ if (err) {
-+ BT_ERR("Listen failed %d", err);
-+ goto failed;
-+ }
-+
-+ /* Add listening session */
-+ s = rfcomm_session_add(sock, BT_LISTEN);
-+ if (!s)
-+ goto failed;
-+
-+ rfcomm_session_hold(s);
-+ return 0;
-+failed:
-+ sock_release(sock);
-+ return err;
-+}
-+
-+static void rfcomm_kill_listener(void)
-+{
-+ struct rfcomm_session *s;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("");
-+
-+ list_for_each_safe(p, n, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ rfcomm_session_del(s);
-+ }
-+}
-+
-+static int rfcomm_run(void *unused)
-+{
-+ rfcomm_thread = current;
-+
-+ atomic_inc(&running);
-+
-+ daemonize(); reparent_to_init();
-+
-+ sigfillset(&current->blocked);
-+ set_fs(KERNEL_DS);
-+
-+ sprintf(current->comm, "krfcommd");
-+
-+ BT_DBG("");
-+
-+ rfcomm_add_listener(BDADDR_ANY);
-+
-+ rfcomm_worker();
-+
-+ rfcomm_kill_listener();
-+
-+ atomic_dec(&running);
-+ return 0;
-+}
-+
-+/* ---- Proc fs support ---- */
-+static int rfcomm_dlc_dump(char *buf)
-+{
-+ struct rfcomm_session *s;
-+ struct sock *sk;
-+ struct list_head *p, *pp;
-+ char *ptr = buf;
-+
-+ rfcomm_lock();
-+
-+ list_for_each(p, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ sk = s->sock->sk;
-+
-+ list_for_each(pp, &s->dlcs) {
-+ struct rfcomm_dlc *d;
-+ d = list_entry(pp, struct rfcomm_dlc, list);
-+
-+ ptr += sprintf(ptr, "dlc %s %s %ld %d %d %d %d\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ d->state, d->dlci, d->mtu, d->rx_credits, d->tx_credits);
-+ }
-+ }
-+
-+ rfcomm_unlock();
-+
-+ return ptr - buf;
-+}
-+
-+extern int rfcomm_sock_dump(char *buf);
-+
-+static int rfcomm_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
-+{
-+ char *ptr = buf;
-+ int len;
-+
-+ BT_DBG("count %d, offset %ld", count, offset);
-+
-+ ptr += rfcomm_dlc_dump(ptr);
-+ ptr += rfcomm_sock_dump(ptr);
-+ len = ptr - buf;
-+
-+ if (len <= count + offset)
-+ *eof = 1;
-+
-+ *start = buf + offset;
-+ len -= offset;
-+
-+ if (len > count)
-+ len = count;
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+
-+/* ---- Initialization ---- */
-+int __init rfcomm_init(void)
-+{
-+ l2cap_load();
-+
-+ kernel_thread(rfcomm_run, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+
-+ rfcomm_init_sockets();
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ rfcomm_init_ttys();
-+#endif
-+
-+ create_proc_read_entry("bluetooth/rfcomm", 0, 0, rfcomm_read_proc, NULL);
-+
-+ BT_INFO("BlueZ RFCOMM ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>");
-+ return 0;
-+}
-+
-+void rfcomm_cleanup(void)
-+{
-+ /* Terminate working thread.
-+ * ie. Set terminate flag and wake it up */
-+ atomic_inc(&terminate);
-+ rfcomm_schedule(RFCOMM_SCHED_STATE);
-+
-+ /* Wait until thread is running */
-+ while (atomic_read(&running))
-+ schedule();
-+
-+ remove_proc_entry("bluetooth/rfcomm", NULL);
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ rfcomm_cleanup_ttys();
-+#endif
-+
-+ rfcomm_cleanup_sockets();
-+ return;
-+}
-+
-+module_init(rfcomm_init);
-+module_exit(rfcomm_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ RFCOMM ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/crc.c linux-2.4.18-mh15/net/bluetooth/rfcomm/crc.c
---- linux-2.4.18/net/bluetooth/rfcomm/crc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/crc.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,71 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM FCS calculation.
-+ *
-+ * $Id: crc.c,v 1.2 2002/09/21 09:54:32 holtmann Exp $
-+ */
-+
-+/* reversed, 8-bit, poly=0x07 */
-+unsigned char rfcomm_crc_table[256] = {
-+ 0x00, 0x91, 0xe3, 0x72, 0x07, 0x96, 0xe4, 0x75,
-+ 0x0e, 0x9f, 0xed, 0x7c, 0x09, 0x98, 0xea, 0x7b,
-+ 0x1c, 0x8d, 0xff, 0x6e, 0x1b, 0x8a, 0xf8, 0x69,
-+ 0x12, 0x83, 0xf1, 0x60, 0x15, 0x84, 0xf6, 0x67,
-+
-+ 0x38, 0xa9, 0xdb, 0x4a, 0x3f, 0xae, 0xdc, 0x4d,
-+ 0x36, 0xa7, 0xd5, 0x44, 0x31, 0xa0, 0xd2, 0x43,
-+ 0x24, 0xb5, 0xc7, 0x56, 0x23, 0xb2, 0xc0, 0x51,
-+ 0x2a, 0xbb, 0xc9, 0x58, 0x2d, 0xbc, 0xce, 0x5f,
-+
-+ 0x70, 0xe1, 0x93, 0x02, 0x77, 0xe6, 0x94, 0x05,
-+ 0x7e, 0xef, 0x9d, 0x0c, 0x79, 0xe8, 0x9a, 0x0b,
-+ 0x6c, 0xfd, 0x8f, 0x1e, 0x6b, 0xfa, 0x88, 0x19,
-+ 0x62, 0xf3, 0x81, 0x10, 0x65, 0xf4, 0x86, 0x17,
-+
-+ 0x48, 0xd9, 0xab, 0x3a, 0x4f, 0xde, 0xac, 0x3d,
-+ 0x46, 0xd7, 0xa5, 0x34, 0x41, 0xd0, 0xa2, 0x33,
-+ 0x54, 0xc5, 0xb7, 0x26, 0x53, 0xc2, 0xb0, 0x21,
-+ 0x5a, 0xcb, 0xb9, 0x28, 0x5d, 0xcc, 0xbe, 0x2f,
-+
-+ 0xe0, 0x71, 0x03, 0x92, 0xe7, 0x76, 0x04, 0x95,
-+ 0xee, 0x7f, 0x0d, 0x9c, 0xe9, 0x78, 0x0a, 0x9b,
-+ 0xfc, 0x6d, 0x1f, 0x8e, 0xfb, 0x6a, 0x18, 0x89,
-+ 0xf2, 0x63, 0x11, 0x80, 0xf5, 0x64, 0x16, 0x87,
-+
-+ 0xd8, 0x49, 0x3b, 0xaa, 0xdf, 0x4e, 0x3c, 0xad,
-+ 0xd6, 0x47, 0x35, 0xa4, 0xd1, 0x40, 0x32, 0xa3,
-+ 0xc4, 0x55, 0x27, 0xb6, 0xc3, 0x52, 0x20, 0xb1,
-+ 0xca, 0x5b, 0x29, 0xb8, 0xcd, 0x5c, 0x2e, 0xbf,
-+
-+ 0x90, 0x01, 0x73, 0xe2, 0x97, 0x06, 0x74, 0xe5,
-+ 0x9e, 0x0f, 0x7d, 0xec, 0x99, 0x08, 0x7a, 0xeb,
-+ 0x8c, 0x1d, 0x6f, 0xfe, 0x8b, 0x1a, 0x68, 0xf9,
-+ 0x82, 0x13, 0x61, 0xf0, 0x85, 0x14, 0x66, 0xf7,
-+
-+ 0xa8, 0x39, 0x4b, 0xda, 0xaf, 0x3e, 0x4c, 0xdd,
-+ 0xa6, 0x37, 0x45, 0xd4, 0xa1, 0x30, 0x42, 0xd3,
-+ 0xb4, 0x25, 0x57, 0xc6, 0xb3, 0x22, 0x50, 0xc1,
-+ 0xba, 0x2b, 0x59, 0xc8, 0xbd, 0x2c, 0x5e, 0xcf
-+};
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/Makefile linux-2.4.18-mh15/net/bluetooth/rfcomm/Makefile
---- linux-2.4.18/net/bluetooth/rfcomm/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,11 @@
-+#
-+# Makefile for the Linux Bluetooth RFCOMM layer
-+#
-+
-+O_TARGET := rfcomm.o
-+
-+obj-y := core.o sock.o crc.o
-+obj-$(CONFIG_BLUEZ_RFCOMM_TTY) += tty.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/sock.c linux-2.4.18-mh15/net/bluetooth/rfcomm/sock.c
---- linux-2.4.18/net/bluetooth/rfcomm/sock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/sock.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,847 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM sockets.
-+ *
-+ * $Id: sock.c,v 1.30 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/socket.h>
-+#include <linux/skbuff.h>
-+#include <linux/list.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+static struct proto_ops rfcomm_sock_ops;
-+
-+static struct bluez_sock_list rfcomm_sk_list = {
-+ lock: RW_LOCK_UNLOCKED
-+};
-+
-+static void rfcomm_sock_close(struct sock *sk);
-+static void rfcomm_sock_kill(struct sock *sk);
-+
-+/* ---- DLC callbacks ----
-+ *
-+ * called under rfcomm_dlc_lock()
-+ */
-+static void rfcomm_sk_data_ready(struct rfcomm_dlc *d, struct sk_buff *skb)
-+{
-+ struct sock *sk = d->owner;
-+ if (!sk)
-+ return;
-+
-+ atomic_add(skb->len, &sk->rmem_alloc);
-+ skb_queue_tail(&sk->receive_queue, skb);
-+ sk->data_ready(sk, skb->len);
-+
-+ if (atomic_read(&sk->rmem_alloc) >= sk->rcvbuf)
-+ rfcomm_dlc_throttle(d);
-+}
-+
-+static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err)
-+{
-+ struct sock *sk = d->owner, *parent;
-+ if (!sk)
-+ return;
-+
-+ BT_DBG("dlc %p state %ld err %d", d, d->state, err);
-+
-+ bh_lock_sock(sk);
-+
-+ if (err)
-+ sk->err = err;
-+ sk->state = d->state;
-+
-+ parent = bluez_pi(sk)->parent;
-+ if (!parent) {
-+ if (d->state == BT_CONNECTED)
-+ rfcomm_session_getaddr(d->session, &bluez_pi(sk)->src, NULL);
-+ sk->state_change(sk);
-+ } else
-+ parent->data_ready(parent, 0);
-+
-+ bh_unlock_sock(sk);
-+}
-+
-+/* ---- Socket functions ---- */
-+static struct sock *__rfcomm_get_sock_by_addr(u8 channel, bdaddr_t *src)
-+{
-+ struct sock *sk;
-+
-+ for (sk = rfcomm_sk_list.head; sk; sk = sk->next) {
-+ if (rfcomm_pi(sk)->channel == channel &&
-+ !bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+ }
-+
-+ return sk;
-+}
-+
-+/* Find socket with channel and source bdaddr.
-+ * Returns closest match.
-+ */
-+static struct sock *__rfcomm_get_sock_by_channel(int state, u8 channel, bdaddr_t *src)
-+{
-+ struct sock *sk, *sk1 = NULL;
-+
-+ for (sk = rfcomm_sk_list.head; sk; sk = sk->next) {
-+ if (state && sk->state != state)
-+ continue;
-+
-+ if (rfcomm_pi(sk)->channel == channel) {
-+ /* Exact match. */
-+ if (!bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+
-+ /* Closest match */
-+ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ sk1 = sk;
-+ }
-+ }
-+ return sk ? sk : sk1;
-+}
-+
-+/* Find socket with given address (channel, src).
-+ * Returns locked socket */
-+static inline struct sock *rfcomm_get_sock_by_channel(int state, u8 channel, bdaddr_t *src)
-+{
-+ struct sock *s;
-+ read_lock(&rfcomm_sk_list.lock);
-+ s = __rfcomm_get_sock_by_channel(state, channel, src);
-+ if (s) bh_lock_sock(s);
-+ read_unlock(&rfcomm_sk_list.lock);
-+ return s;
-+}
-+
-+static void rfcomm_sock_destruct(struct sock *sk)
-+{
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+
-+ BT_DBG("sk %p dlc %p", sk, d);
-+
-+ skb_queue_purge(&sk->receive_queue);
-+ skb_queue_purge(&sk->write_queue);
-+
-+ rfcomm_dlc_lock(d);
-+ rfcomm_pi(sk)->dlc = NULL;
-+
-+ /* Detach DLC if it's owned by this socket */
-+ if (d->owner == sk)
-+ d->owner = NULL;
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_dlc_put(d);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void rfcomm_sock_cleanup_listen(struct sock *parent)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ /* Close not yet accepted dlcs */
-+ while ((sk = bluez_accept_dequeue(parent, NULL))) {
-+ rfcomm_sock_close(sk);
-+ rfcomm_sock_kill(sk);
-+ }
-+
-+ parent->state = BT_CLOSED;
-+ parent->zapped = 1;
-+}
-+
-+/* Kill socket (only if zapped and orphan)
-+ * Must be called on unlocked socket.
-+ */
-+static void rfcomm_sock_kill(struct sock *sk)
-+{
-+ if (!sk->zapped || sk->socket)
-+ return;
-+
-+ BT_DBG("sk %p state %d refcnt %d", sk, sk->state, atomic_read(&sk->refcnt));
-+
-+ /* Kill poor orphan */
-+ bluez_sock_unlink(&rfcomm_sk_list, sk);
-+ sk->dead = 1;
-+ sock_put(sk);
-+}
-+
-+static void __rfcomm_sock_close(struct sock *sk)
-+{
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+
-+ BT_DBG("sk %p state %d socket %p", sk, sk->state, sk->socket);
-+
-+ switch (sk->state) {
-+ case BT_LISTEN:
-+ rfcomm_sock_cleanup_listen(sk);
-+ break;
-+
-+ case BT_CONNECT:
-+ case BT_CONNECT2:
-+ case BT_CONFIG:
-+ case BT_CONNECTED:
-+ rfcomm_dlc_close(d, 0);
-+
-+ default:
-+ sk->zapped = 1;
-+ break;
-+ }
-+}
-+
-+/* Close socket.
-+ * Must be called on unlocked socket.
-+ */
-+static void rfcomm_sock_close(struct sock *sk)
-+{
-+ lock_sock(sk);
-+ __rfcomm_sock_close(sk);
-+ release_sock(sk);
-+}
-+
-+static void rfcomm_sock_init(struct sock *sk, struct sock *parent)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ if (parent)
-+ sk->type = parent->type;
-+}
-+
-+static struct sock *rfcomm_sock_alloc(struct socket *sock, int proto, int prio)
-+{
-+ struct rfcomm_dlc *d;
-+ struct sock *sk;
-+
-+ sk = sk_alloc(PF_BLUETOOTH, prio, 1);
-+ if (!sk)
-+ return NULL;
-+
-+ d = rfcomm_dlc_alloc(prio);
-+ if (!d) {
-+ sk_free(sk);
-+ return NULL;
-+ }
-+ d->data_ready = rfcomm_sk_data_ready;
-+ d->state_change = rfcomm_sk_state_change;
-+
-+ rfcomm_pi(sk)->dlc = d;
-+ d->owner = sk;
-+
-+ bluez_sock_init(sock, sk);
-+
-+ sk->zapped = 0;
-+
-+ sk->destruct = rfcomm_sock_destruct;
-+ sk->sndtimeo = RFCOMM_CONN_TIMEOUT;
-+
-+ sk->sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10;
-+ sk->rcvbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10;
-+
-+ sk->protocol = proto;
-+ sk->state = BT_OPEN;
-+
-+ bluez_sock_link(&rfcomm_sk_list, sk);
-+
-+ BT_DBG("sk %p", sk);
-+
-+ MOD_INC_USE_COUNT;
-+ return sk;
-+}
-+
-+static int rfcomm_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ sock->state = SS_UNCONNECTED;
-+
-+ if (sock->type != SOCK_STREAM && sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &rfcomm_sock_ops;
-+
-+ if (!(sk = rfcomm_sock_alloc(sock, protocol, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ rfcomm_sock_init(sk, NULL);
-+ return 0;
-+}
-+
-+static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p %s", sk, batostr(&sa->rc_bdaddr));
-+
-+ if (!addr || addr->sa_family != AF_BLUETOOTH)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_OPEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ write_lock_bh(&rfcomm_sk_list.lock);
-+
-+ if (sa->rc_channel && __rfcomm_get_sock_by_addr(sa->rc_channel, &sa->rc_bdaddr)) {
-+ err = -EADDRINUSE;
-+ } else {
-+ /* Save source address */
-+ bacpy(&bluez_pi(sk)->src, &sa->rc_bdaddr);
-+ rfcomm_pi(sk)->channel = sa->rc_channel;
-+ sk->state = BT_BOUND;
-+ }
-+
-+ write_unlock_bh(&rfcomm_sk_list.lock);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_rc))
-+ return -EINVAL;
-+
-+ if (sk->state != BT_OPEN && sk->state != BT_BOUND)
-+ return -EBADFD;
-+
-+ if (sk->type != SOCK_STREAM)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ sk->state = BT_CONNECT;
-+ bacpy(&bluez_pi(sk)->dst, &sa->rc_bdaddr);
-+ rfcomm_pi(sk)->channel = sa->rc_channel;
-+
-+ err = rfcomm_dlc_open(d, &bluez_pi(sk)->src, &sa->rc_bdaddr, sa->rc_channel);
-+ if (!err)
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int rfcomm_sock_listen(struct socket *sock, int backlog)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p backlog %d", sk, backlog);
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_BOUND) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ sk->max_ack_backlog = backlog;
-+ sk->ack_backlog = 0;
-+ sk->state = BT_LISTEN;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int flags)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct sock *sk = sock->sk, *nsk;
-+ long timeo;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
-+
-+ BT_DBG("sk %p timeo %ld", sk, timeo);
-+
-+ /* Wait for an incoming connection. (wake-one). */
-+ add_wait_queue_exclusive(sk->sleep, &wait);
-+ while (!(nsk = bluez_accept_dequeue(sk, newsock))) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ if (err)
-+ goto done;
-+
-+ newsock->state = SS_CONNECTED;
-+
-+ BT_DBG("new socket %p", nsk);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ sa->rc_family = AF_BLUETOOTH;
-+ sa->rc_channel = rfcomm_pi(sk)->channel;
-+ if (peer)
-+ bacpy(&sa->rc_bdaddr, &bluez_pi(sk)->dst);
-+ else
-+ bacpy(&sa->rc_bdaddr, &bluez_pi(sk)->src);
-+
-+ *len = sizeof(struct sockaddr_rc);
-+ return 0;
-+}
-+
-+static int rfcomm_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len,
-+ struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+ struct sk_buff *skb;
-+ int err, size;
-+ int sent = 0;
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ if (sk->shutdown & SEND_SHUTDOWN)
-+ return -EPIPE;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ lock_sock(sk);
-+
-+ while (len) {
-+ size = min_t(uint, len, d->mtu);
-+
-+ skb = sock_alloc_send_skb(sk, size + RFCOMM_SKB_RESERVE,
-+ msg->msg_flags & MSG_DONTWAIT, &err);
-+ if (!skb)
-+ break;
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size);
-+ if (err) {
-+ kfree_skb(skb);
-+ sent = err;
-+ break;
-+ }
-+
-+ err = rfcomm_dlc_send(d, skb);
-+ if (err < 0) {
-+ kfree_skb(skb);
-+ break;
-+ }
-+
-+ sent += size;
-+ len -= size;
-+ }
-+
-+ release_sock(sk);
-+
-+ return sent ? sent : err;
-+}
-+
-+static long rfcomm_sock_data_wait(struct sock *sk, long timeo)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+
-+ add_wait_queue(sk->sleep, &wait);
-+ for (;;) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (skb_queue_len(&sk->receive_queue) || sk->err || (sk->shutdown & RCV_SHUTDOWN) ||
-+ signal_pending(current) || !timeo)
-+ break;
-+
-+ set_bit(SOCK_ASYNC_WAITDATA, &sk->socket->flags);
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+ clear_bit(SOCK_ASYNC_WAITDATA, &sk->socket->flags);
-+ }
-+
-+ __set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+ return timeo;
-+}
-+
-+static int rfcomm_sock_recvmsg(struct socket *sock, struct msghdr *msg, int size,
-+ int flags, struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ int target, err = 0, copied = 0;
-+ long timeo;
-+
-+ if (flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ msg->msg_namelen = 0;
-+
-+ BT_DBG("sk %p size %d", sk, size);
-+
-+ lock_sock(sk);
-+
-+ target = sock_rcvlowat(sk, flags & MSG_WAITALL, size);
-+ timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT);
-+
-+ do {
-+ struct sk_buff *skb;
-+ int chunk;
-+
-+ skb = skb_dequeue(&sk->receive_queue);
-+ if (!skb) {
-+ if (copied >= target)
-+ break;
-+
-+ if ((err = sock_error(sk)) != 0)
-+ break;
-+ if (sk->shutdown & RCV_SHUTDOWN)
-+ break;
-+
-+ err = -EAGAIN;
-+ if (!timeo)
-+ break;
-+
-+ timeo = rfcomm_sock_data_wait(sk, timeo);
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ goto out;
-+ }
-+ continue;
-+ }
-+
-+ chunk = min_t(unsigned int, skb->len, size);
-+ if (memcpy_toiovec(msg->msg_iov, skb->data, chunk)) {
-+ skb_queue_head(&sk->receive_queue, skb);
-+ if (!copied)
-+ copied = -EFAULT;
-+ break;
-+ }
-+ copied += chunk;
-+ size -= chunk;
-+
-+ if (!(flags & MSG_PEEK)) {
-+ atomic_sub(chunk, &sk->rmem_alloc);
-+
-+ skb_pull(skb, chunk);
-+ if (skb->len) {
-+ skb_queue_head(&sk->receive_queue, skb);
-+ break;
-+ }
-+ kfree_skb(skb);
-+
-+ } else {
-+ /* put message back and return */
-+ skb_queue_head(&sk->receive_queue, skb);
-+ break;
-+ }
-+ } while (size);
-+
-+out:
-+ if (atomic_read(&sk->rmem_alloc) <= (sk->rcvbuf >> 2))
-+ rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc);
-+
-+ release_sock(sk);
-+ return copied ? : err;
-+}
-+
-+static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ int len, err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (get_user(len, optlen))
-+ return -EFAULT;
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct sock *sk = sock->sk;
-+ int err;
-+
-+ lock_sock(sk);
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ err = rfcomm_dev_ioctl(sk, cmd, arg);
-+#else
-+ err = -EOPNOTSUPP;
-+#endif
-+
-+ release_sock(sk);
-+
-+ return err;
-+}
-+
-+static int rfcomm_sock_shutdown(struct socket *sock, int how)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk) return 0;
-+
-+ lock_sock(sk);
-+ if (!sk->shutdown) {
-+ sk->shutdown = SHUTDOWN_MASK;
-+ __rfcomm_sock_close(sk);
-+
-+ if (sk->linger)
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ }
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ err = rfcomm_sock_shutdown(sock, 2);
-+
-+ sock_orphan(sk);
-+ rfcomm_sock_kill(sk);
-+ return err;
-+}
-+
-+/* ---- RFCOMM core layer callbacks ----
-+ *
-+ * called under rfcomm_lock()
-+ */
-+int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc **d)
-+{
-+ struct sock *sk, *parent;
-+ bdaddr_t src, dst;
-+ int result = 0;
-+
-+ BT_DBG("session %p channel %d", s, channel);
-+
-+ rfcomm_session_getaddr(s, &src, &dst);
-+
-+ /* Check if we have socket listening on this channel */
-+ parent = rfcomm_get_sock_by_channel(BT_LISTEN, channel, &src);
-+ if (!parent)
-+ return 0;
-+
-+ /* Check for backlog size */
-+ if (parent->ack_backlog > parent->max_ack_backlog) {
-+ BT_DBG("backlog full %d", parent->ack_backlog);
-+ goto done;
-+ }
-+
-+ sk = rfcomm_sock_alloc(NULL, BTPROTO_RFCOMM, GFP_ATOMIC);
-+ if (!sk)
-+ goto done;
-+
-+ rfcomm_sock_init(sk, parent);
-+ bacpy(&bluez_pi(sk)->src, &src);
-+ bacpy(&bluez_pi(sk)->dst, &dst);
-+ rfcomm_pi(sk)->channel = channel;
-+
-+ sk->state = BT_CONFIG;
-+ bluez_accept_enqueue(parent, sk);
-+
-+ /* Accept connection and return socket DLC */
-+ *d = rfcomm_pi(sk)->dlc;
-+ result = 1;
-+
-+done:
-+ bh_unlock_sock(parent);
-+ return result;
-+}
-+
-+/* ---- Proc fs support ---- */
-+int rfcomm_sock_dump(char *buf)
-+{
-+ struct bluez_sock_list *list = &rfcomm_sk_list;
-+ struct rfcomm_pinfo *pi;
-+ struct sock *sk;
-+ char *ptr = buf;
-+
-+ write_lock_bh(&list->lock);
-+
-+ for (sk = list->head; sk; sk = sk->next) {
-+ pi = rfcomm_pi(sk);
-+ ptr += sprintf(ptr, "sk %s %s %d %d\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ sk->state, rfcomm_pi(sk)->channel);
-+ }
-+
-+ write_unlock_bh(&list->lock);
-+
-+ return ptr - buf;
-+}
-+
-+static struct proto_ops rfcomm_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: rfcomm_sock_release,
-+ bind: rfcomm_sock_bind,
-+ connect: rfcomm_sock_connect,
-+ listen: rfcomm_sock_listen,
-+ accept: rfcomm_sock_accept,
-+ getname: rfcomm_sock_getname,
-+ sendmsg: rfcomm_sock_sendmsg,
-+ recvmsg: rfcomm_sock_recvmsg,
-+ shutdown: rfcomm_sock_shutdown,
-+ setsockopt: rfcomm_sock_setsockopt,
-+ getsockopt: rfcomm_sock_getsockopt,
-+ ioctl: rfcomm_sock_ioctl,
-+ poll: bluez_sock_poll,
-+ socketpair: sock_no_socketpair,
-+ mmap: sock_no_mmap
-+};
-+
-+static struct net_proto_family rfcomm_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: rfcomm_sock_create
-+};
-+
-+int rfcomm_init_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_RFCOMM, &rfcomm_sock_family_ops))) {
-+ BT_ERR("Can't register RFCOMM socket layer");
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+void rfcomm_cleanup_sockets(void)
-+{
-+ int err;
-+
-+ /* Unregister socket, protocol and notifier */
-+ if ((err = bluez_sock_unregister(BTPROTO_RFCOMM)))
-+ BT_ERR("Can't unregister RFCOMM socket layer %d", err);
-+}
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/tty.c linux-2.4.18-mh15/net/bluetooth/rfcomm/tty.c
---- linux-2.4.18/net/bluetooth/rfcomm/tty.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/tty.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,960 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM TTY.
-+ *
-+ * $Id: tty.c,v 1.26 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/tty.h>
-+#include <linux/tty_driver.h>
-+#include <linux/tty_flip.h>
-+
-+#include <linux/slab.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define RFCOMM_TTY_MAGIC 0x6d02 /* magic number for rfcomm struct */
-+#define RFCOMM_TTY_PORTS RFCOMM_MAX_DEV /* whole lotta rfcomm devices */
-+#define RFCOMM_TTY_MAJOR 216 /* device node major id of the usb/bluetooth.c driver */
-+#define RFCOMM_TTY_MINOR 0
-+
-+struct rfcomm_dev {
-+ struct list_head list;
-+ atomic_t refcnt;
-+
-+ char name[12];
-+ int id;
-+ unsigned long flags;
-+ int opened;
-+ int err;
-+
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+
-+ uint modem_status;
-+
-+ struct rfcomm_dlc *dlc;
-+ struct tty_struct *tty;
-+ wait_queue_head_t wait;
-+ struct tasklet_struct wakeup_task;
-+
-+ atomic_t wmem_alloc;
-+};
-+
-+static LIST_HEAD(rfcomm_dev_list);
-+static rwlock_t rfcomm_dev_lock = RW_LOCK_UNLOCKED;
-+
-+static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb);
-+static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err);
-+static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig);
-+
-+static void rfcomm_tty_wakeup(unsigned long arg);
-+
-+/* ---- Device functions ---- */
-+static void rfcomm_dev_destruct(struct rfcomm_dev *dev)
-+{
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+
-+ BT_DBG("dev %p dlc %p", dev, dlc);
-+
-+ rfcomm_dlc_lock(dlc);
-+ /* Detach DLC if it's owned by this dev */
-+ if (dlc->owner == dev)
-+ dlc->owner = NULL;
-+ rfcomm_dlc_unlock(dlc);
-+
-+ rfcomm_dlc_put(dlc);
-+ kfree(dev);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static inline void rfcomm_dev_hold(struct rfcomm_dev *dev)
-+{
-+ atomic_inc(&dev->refcnt);
-+}
-+
-+static inline void rfcomm_dev_put(struct rfcomm_dev *dev)
-+{
-+ /* The reason this isn't actually a race, as you no
-+ doubt have a little voice screaming at you in your
-+ head, is that the refcount should never actually
-+ reach zero unless the device has already been taken
-+ off the list, in rfcomm_dev_del(). And if that's not
-+ true, we'll hit the BUG() in rfcomm_dev_destruct()
-+ anyway. */
-+ if (atomic_dec_and_test(&dev->refcnt))
-+ rfcomm_dev_destruct(dev);
-+}
-+
-+static struct rfcomm_dev *__rfcomm_dev_get(int id)
-+{
-+ struct rfcomm_dev *dev;
-+ struct list_head *p;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ dev = list_entry(p, struct rfcomm_dev, list);
-+ if (dev->id == id)
-+ return dev;
-+ }
-+
-+ return NULL;
-+}
-+
-+static inline struct rfcomm_dev *rfcomm_dev_get(int id)
-+{
-+ struct rfcomm_dev *dev;
-+
-+ read_lock(&rfcomm_dev_lock);
-+
-+ dev = __rfcomm_dev_get(id);
-+ if (dev)
-+ rfcomm_dev_hold(dev);
-+
-+ read_unlock(&rfcomm_dev_lock);
-+
-+ return dev;
-+}
-+
-+static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
-+{
-+ struct rfcomm_dev *dev;
-+ struct list_head *head = &rfcomm_dev_list, *p;
-+ int err = 0;
-+
-+ BT_DBG("id %d channel %d", req->dev_id, req->channel);
-+
-+ dev = kmalloc(sizeof(struct rfcomm_dev), GFP_KERNEL);
-+ if (!dev)
-+ return -ENOMEM;
-+ memset(dev, 0, sizeof(struct rfcomm_dev));
-+
-+ write_lock_bh(&rfcomm_dev_lock);
-+
-+ if (req->dev_id < 0) {
-+ dev->id = 0;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ if (list_entry(p, struct rfcomm_dev, list)->id != dev->id)
-+ break;
-+
-+ dev->id++;
-+ head = p;
-+ }
-+ } else {
-+ dev->id = req->dev_id;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ struct rfcomm_dev *entry = list_entry(p, struct rfcomm_dev, list);
-+
-+ if (entry->id == dev->id) {
-+ err = -EADDRINUSE;
-+ goto out;
-+ }
-+
-+ if (entry->id > dev->id - 1)
-+ break;
-+
-+ head = p;
-+ }
-+ }
-+
-+ if ((dev->id < 0) || (dev->id > RFCOMM_MAX_DEV - 1)) {
-+ err = -ENFILE;
-+ goto out;
-+ }
-+
-+ sprintf(dev->name, "rfcomm%d", dev->id);
-+
-+ list_add(&dev->list, head);
-+ atomic_set(&dev->refcnt, 1);
-+
-+ bacpy(&dev->src, &req->src);
-+ bacpy(&dev->dst, &req->dst);
-+ dev->channel = req->channel;
-+
-+ dev->flags = req->flags &
-+ ((1 << RFCOMM_RELEASE_ONHUP) | (1 << RFCOMM_REUSE_DLC));
-+
-+ init_waitqueue_head(&dev->wait);
-+ tasklet_init(&dev->wakeup_task, rfcomm_tty_wakeup, (unsigned long) dev);
-+
-+ rfcomm_dlc_lock(dlc);
-+ dlc->data_ready = rfcomm_dev_data_ready;
-+ dlc->state_change = rfcomm_dev_state_change;
-+ dlc->modem_status = rfcomm_dev_modem_status;
-+
-+ dlc->owner = dev;
-+ dev->dlc = dlc;
-+ rfcomm_dlc_unlock(dlc);
-+
-+ MOD_INC_USE_COUNT;
-+
-+out:
-+ write_unlock_bh(&rfcomm_dev_lock);
-+
-+ if (err) {
-+ kfree(dev);
-+ return err;
-+ } else
-+ return dev->id;
-+}
-+
-+static void rfcomm_dev_del(struct rfcomm_dev *dev)
-+{
-+ BT_DBG("dev %p", dev);
-+
-+ write_lock_bh(&rfcomm_dev_lock);
-+ list_del_init(&dev->list);
-+ write_unlock_bh(&rfcomm_dev_lock);
-+
-+ rfcomm_dev_put(dev);
-+}
-+
-+/* ---- Send buffer ---- */
-+
-+static inline unsigned int rfcomm_room(struct rfcomm_dlc *dlc)
-+{
-+ /* We can't let it be zero, because we don't get a callback
-+ when tx_credits becomes nonzero, hence we'd never wake up */
-+ return dlc->mtu * (dlc->tx_credits?:1);
-+}
-+
-+static void rfcomm_wfree(struct sk_buff *skb)
-+{
-+ struct rfcomm_dev *dev = (void *) skb->sk;
-+ atomic_sub(skb->truesize, &dev->wmem_alloc);
-+ if (test_bit(RFCOMM_TTY_ATTACHED, &dev->flags))
-+ tasklet_schedule(&dev->wakeup_task);
-+ rfcomm_dev_put(dev);
-+}
-+
-+static inline void rfcomm_set_owner_w(struct sk_buff *skb, struct rfcomm_dev *dev)
-+{
-+ rfcomm_dev_hold(dev);
-+ atomic_add(skb->truesize, &dev->wmem_alloc);
-+ skb->sk = (void *) dev;
-+ skb->destructor = rfcomm_wfree;
-+}
-+
-+static struct sk_buff *rfcomm_wmalloc(struct rfcomm_dev *dev, unsigned long size, int force, int priority)
-+{
-+ if (force || atomic_read(&dev->wmem_alloc) < rfcomm_room(dev->dlc)) {
-+ struct sk_buff *skb = alloc_skb(size, priority);
-+ if (skb) {
-+ rfcomm_set_owner_w(skb, dev);
-+ return skb;
-+ }
-+ }
-+ return NULL;
-+}
-+
-+/* ---- Device IOCTLs ---- */
-+
-+#define NOCAP_FLAGS ((1 << RFCOMM_REUSE_DLC) | (1 << RFCOMM_RELEASE_ONHUP))
-+
-+static int rfcomm_create_dev(struct sock *sk, unsigned long arg)
-+{
-+ struct rfcomm_dev_req req;
-+ struct rfcomm_dlc *dlc;
-+ int id;
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ BT_DBG("sk %p dev_id %id flags 0x%x", sk, req.dev_id, req.flags);
-+
-+ if (req.flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN))
-+ return -EPERM;
-+
-+ if (req.flags & (1 << RFCOMM_REUSE_DLC)) {
-+ /* Socket must be connected */
-+ if (sk->state != BT_CONNECTED)
-+ return -EBADFD;
-+
-+ dlc = rfcomm_pi(sk)->dlc;
-+ rfcomm_dlc_hold(dlc);
-+ } else {
-+ dlc = rfcomm_dlc_alloc(GFP_KERNEL);
-+ if (!dlc)
-+ return -ENOMEM;
-+ }
-+
-+ id = rfcomm_dev_add(&req, dlc);
-+ if (id < 0) {
-+ rfcomm_dlc_put(dlc);
-+ return id;
-+ }
-+
-+ if (req.flags & (1 << RFCOMM_REUSE_DLC)) {
-+ /* DLC is now used by device.
-+ * Socket must be disconnected */
-+ sk->state = BT_CLOSED;
-+ }
-+
-+ return id;
-+}
-+
-+static int rfcomm_release_dev(unsigned long arg)
-+{
-+ struct rfcomm_dev_req req;
-+ struct rfcomm_dev *dev;
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ BT_DBG("dev_id %id flags 0x%x", req.dev_id, req.flags);
-+
-+ if (!(dev = rfcomm_dev_get(req.dev_id)))
-+ return -ENODEV;
-+
-+ if (dev->flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN)) {
-+ rfcomm_dev_put(dev);
-+ return -EPERM;
-+ }
-+
-+ if (req.flags & (1 << RFCOMM_HANGUP_NOW))
-+ rfcomm_dlc_close(dev->dlc, 0);
-+
-+ rfcomm_dev_del(dev);
-+ rfcomm_dev_put(dev);
-+ return 0;
-+}
-+
-+static int rfcomm_get_dev_list(unsigned long arg)
-+{
-+ struct rfcomm_dev_list_req *dl;
-+ struct rfcomm_dev_info *di;
-+ struct list_head *p;
-+ int n = 0, size, err;
-+ u16 dev_num;
-+
-+ BT_DBG("");
-+
-+ if (get_user(dev_num, (u16 *) arg))
-+ return -EFAULT;
-+
-+ if (!dev_num || dev_num > (PAGE_SIZE * 4) / sizeof(*di))
-+ return -EINVAL;
-+
-+ size = sizeof(*dl) + dev_num * sizeof(*di);
-+
-+ if (!(dl = kmalloc(size, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ di = dl->dev_info;
-+
-+ read_lock_bh(&rfcomm_dev_lock);
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ struct rfcomm_dev *dev = list_entry(p, struct rfcomm_dev, list);
-+ (di + n)->id = dev->id;
-+ (di + n)->flags = dev->flags;
-+ (di + n)->state = dev->dlc->state;
-+ (di + n)->channel = dev->channel;
-+ bacpy(&(di + n)->src, &dev->src);
-+ bacpy(&(di + n)->dst, &dev->dst);
-+ if (++n >= dev_num)
-+ break;
-+ }
-+
-+ read_unlock_bh(&rfcomm_dev_lock);
-+
-+ dl->dev_num = n;
-+ size = sizeof(*dl) + n * sizeof(*di);
-+
-+ err = copy_to_user((void *) arg, dl, size);
-+ kfree(dl);
-+
-+ return err ? -EFAULT : 0;
-+}
-+
-+static int rfcomm_get_dev_info(unsigned long arg)
-+{
-+ struct rfcomm_dev *dev;
-+ struct rfcomm_dev_info di;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ if (copy_from_user(&di, (void *)arg, sizeof(di)))
-+ return -EFAULT;
-+
-+ if (!(dev = rfcomm_dev_get(di.id)))
-+ return -ENODEV;
-+
-+ di.flags = dev->flags;
-+ di.channel = dev->channel;
-+ di.state = dev->dlc->state;
-+ bacpy(&di.src, &dev->src);
-+ bacpy(&di.dst, &dev->dst);
-+
-+ if (copy_to_user((void *)arg, &di, sizeof(di)))
-+ err = -EFAULT;
-+
-+ rfcomm_dev_put(dev);
-+ return err;
-+}
-+
-+int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg)
-+{
-+ BT_DBG("cmd %d arg %ld", cmd, arg);
-+
-+ switch (cmd) {
-+ case RFCOMMCREATEDEV:
-+ return rfcomm_create_dev(sk, arg);
-+
-+ case RFCOMMRELEASEDEV:
-+ return rfcomm_release_dev(arg);
-+
-+ case RFCOMMGETDEVLIST:
-+ return rfcomm_get_dev_list(arg);
-+
-+ case RFCOMMGETDEVINFO:
-+ return rfcomm_get_dev_info(arg);
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+/* ---- DLC callbacks ---- */
-+static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ struct tty_struct *tty;
-+
-+ if (!dev || !(tty = dev->tty)) {
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ BT_DBG("dlc %p tty %p len %d", dlc, tty, skb->len);
-+
-+ if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
-+ register int i;
-+ for (i = 0; i < skb->len; i++) {
-+ if (tty->flip.count >= TTY_FLIPBUF_SIZE)
-+ tty_flip_buffer_push(tty);
-+
-+ tty_insert_flip_char(tty, skb->data[i], 0);
-+ }
-+ tty_flip_buffer_push(tty);
-+ } else
-+ tty->ldisc.receive_buf(tty, skb->data, NULL, skb->len);
-+
-+ kfree_skb(skb);
-+}
-+
-+static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("dlc %p dev %p err %d", dlc, dev, err);
-+
-+ dev->err = err;
-+ wake_up_interruptible(&dev->wait);
-+
-+ if (dlc->state == BT_CLOSED) {
-+ if (!dev->tty) {
-+ if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) {
-+ rfcomm_dev_hold(dev);
-+ rfcomm_dev_del(dev);
-+
-+ /* We have to drop DLC lock here, otherwise
-+ rfcomm_dev_put() will dead lock if it's
-+ the last reference. */
-+ rfcomm_dlc_unlock(dlc);
-+ rfcomm_dev_put(dev);
-+ rfcomm_dlc_lock(dlc);
-+ }
-+ } else
-+ tty_hangup(dev->tty);
-+ }
-+}
-+
-+static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig);
-+
-+ dev->modem_status =
-+ ((v24_sig & RFCOMM_V24_RTC) ? (TIOCM_DSR | TIOCM_DTR) : 0) |
-+ ((v24_sig & RFCOMM_V24_RTR) ? (TIOCM_RTS | TIOCM_CTS) : 0) |
-+ ((v24_sig & RFCOMM_V24_IC) ? TIOCM_RI : 0) |
-+ ((v24_sig & RFCOMM_V24_DV) ? TIOCM_CD : 0);
-+}
-+
-+/* ---- TTY functions ---- */
-+static void rfcomm_tty_wakeup(unsigned long arg)
-+{
-+ struct rfcomm_dev *dev = (void *) arg;
-+ struct tty_struct *tty = dev->tty;
-+ if (!tty)
-+ return;
-+
-+ BT_DBG("dev %p tty %p", dev, tty);
-+
-+ if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup)
-+ (tty->ldisc.write_wakeup)(tty);
-+
-+ wake_up_interruptible(&tty->write_wait);
-+#ifdef SERIAL_HAVE_POLL_WAIT
-+ wake_up_interruptible(&tty->poll_wait);
-+#endif
-+}
-+
-+static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct rfcomm_dev *dev;
-+ struct rfcomm_dlc *dlc;
-+ int err, id;
-+
-+ id = MINOR(tty->device) - tty->driver.minor_start;
-+
-+ BT_DBG("tty %p id %d", tty, id);
-+
-+ /* We don't leak this refcount. For reasons which are not entirely
-+ clear, the TTY layer will call our ->close() method even if the
-+ open fails. We decrease the refcount there, and decreasing it
-+ here too would cause breakage. */
-+ dev = rfcomm_dev_get(id);
-+ if (!dev)
-+ return -ENODEV;
-+
-+ BT_DBG("dev %p dst %s channel %d opened %d", dev, batostr(&dev->dst), dev->channel, dev->opened);
-+
-+ if (dev->opened++ != 0)
-+ return 0;
-+
-+ dlc = dev->dlc;
-+
-+ /* Attach TTY and open DLC */
-+
-+ rfcomm_dlc_lock(dlc);
-+ tty->driver_data = dev;
-+ dev->tty = tty;
-+ rfcomm_dlc_unlock(dlc);
-+ set_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
-+
-+ err = rfcomm_dlc_open(dlc, &dev->src, &dev->dst, dev->channel);
-+ if (err < 0)
-+ return err;
-+
-+ /* Wait for DLC to connect */
-+ add_wait_queue(&dev->wait, &wait);
-+ while (1) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (dlc->state == BT_CLOSED) {
-+ err = -dev->err;
-+ break;
-+ }
-+
-+ if (dlc->state == BT_CONNECTED)
-+ break;
-+
-+ if (signal_pending(current)) {
-+ err = -EINTR;
-+ break;
-+ }
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&dev->wait, &wait);
-+
-+ return err;
-+}
-+
-+static void rfcomm_tty_close(struct tty_struct *tty, struct file *filp)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc, dev->opened);
-+
-+ if (--dev->opened == 0) {
-+ /* Close DLC and dettach TTY */
-+ rfcomm_dlc_close(dev->dlc, 0);
-+
-+ clear_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
-+ tasklet_kill(&dev->wakeup_task);
-+
-+ rfcomm_dlc_lock(dev->dlc);
-+ tty->driver_data = NULL;
-+ dev->tty = NULL;
-+ rfcomm_dlc_unlock(dev->dlc);
-+ }
-+
-+ rfcomm_dev_put(dev);
-+}
-+
-+static int rfcomm_tty_write(struct tty_struct *tty, int from_user, const unsigned char *buf, int count)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ struct sk_buff *skb;
-+ int err = 0, sent = 0, size;
-+
-+ BT_DBG("tty %p from_user %d count %d", tty, from_user, count);
-+
-+ while (count) {
-+ size = min_t(uint, count, dlc->mtu);
-+
-+ if (from_user)
-+ skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, 0, GFP_KERNEL);
-+ else
-+ skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, 0, GFP_ATOMIC);
-+
-+ if (!skb)
-+ break;
-+
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ if (from_user)
-+ copy_from_user(skb_put(skb, size), buf + sent, size);
-+ else
-+ memcpy(skb_put(skb, size), buf + sent, size);
-+
-+ if ((err = rfcomm_dlc_send(dlc, skb)) < 0) {
-+ kfree_skb(skb);
-+ break;
-+ }
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ return sent ? sent : err;
-+}
-+
-+static void rfcomm_tty_put_char(struct tty_struct *tty, unsigned char ch)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("tty %p char %x", tty, ch);
-+
-+ skb = rfcomm_wmalloc(dev, 1 + RFCOMM_SKB_RESERVE, 1, GFP_ATOMIC);
-+
-+ if (!skb)
-+ return;
-+
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ *(char *)skb_put(skb, 1) = ch;
-+
-+ if ((rfcomm_dlc_send(dlc, skb)) < 0)
-+ kfree_skb(skb);
-+}
-+
-+static int rfcomm_tty_write_room(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ int room;
-+
-+ BT_DBG("tty %p", tty);
-+
-+ room = rfcomm_room(dev->dlc) - atomic_read(&dev->wmem_alloc);
-+ if (room < 0)
-+ room = 0;
-+
-+ return room;
-+}
-+
-+static int rfcomm_tty_set_modem_status(uint cmd, struct rfcomm_dlc *dlc, uint status)
-+{
-+ u8 v24_sig, mask;
-+
-+ BT_DBG("dlc %p cmd 0x%02x", dlc, cmd);
-+
-+ if (cmd == TIOCMSET)
-+ v24_sig = 0;
-+ else
-+ rfcomm_dlc_get_modem_status(dlc, &v24_sig);
-+
-+ mask = ((status & TIOCM_DSR) ? RFCOMM_V24_RTC : 0) |
-+ ((status & TIOCM_DTR) ? RFCOMM_V24_RTC : 0) |
-+ ((status & TIOCM_RTS) ? RFCOMM_V24_RTR : 0) |
-+ ((status & TIOCM_CTS) ? RFCOMM_V24_RTR : 0) |
-+ ((status & TIOCM_RI) ? RFCOMM_V24_IC : 0) |
-+ ((status & TIOCM_CD) ? RFCOMM_V24_DV : 0);
-+
-+ if (cmd == TIOCMBIC)
-+ v24_sig &= ~mask;
-+ else
-+ v24_sig |= mask;
-+
-+ rfcomm_dlc_set_modem_status(dlc, v24_sig);
-+ return 0;
-+}
-+
-+static int rfcomm_tty_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, unsigned long arg)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ uint status;
-+ int err;
-+
-+ BT_DBG("tty %p cmd 0x%02x", tty, cmd);
-+
-+ switch (cmd) {
-+ case TCGETS:
-+ BT_DBG("TCGETS is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TCSETS:
-+ BT_DBG("TCSETS is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCMGET:
-+ BT_DBG("TIOCMGET");
-+
-+ return put_user(dev->modem_status, (unsigned int *)arg);
-+
-+ case TIOCMSET: /* Turns on and off the lines as specified by the mask */
-+ case TIOCMBIS: /* Turns on the lines as specified by the mask */
-+ case TIOCMBIC: /* Turns off the lines as specified by the mask */
-+ if ((err = get_user(status, (unsigned int *)arg)))
-+ return err;
-+ return rfcomm_tty_set_modem_status(cmd, dlc, status);
-+
-+ case TIOCMIWAIT:
-+ BT_DBG("TIOCMIWAIT");
-+ break;
-+
-+ case TIOCGICOUNT:
-+ BT_DBG("TIOCGICOUNT");
-+ break;
-+
-+ case TIOCGSERIAL:
-+ BT_ERR("TIOCGSERIAL is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSSERIAL:
-+ BT_ERR("TIOCSSERIAL is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERGSTRUCT:
-+ BT_ERR("TIOCSERGSTRUCT is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERGETLSR:
-+ BT_ERR("TIOCSERGETLSR is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERCONFIG:
-+ BT_ERR("TIOCSERCONFIG is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ default:
-+ return -ENOIOCTLCMD; /* ioctls which we must ignore */
-+
-+ }
-+
-+ return -ENOIOCTLCMD;
-+}
-+
-+#define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK))
-+
-+static void rfcomm_tty_set_termios(struct tty_struct *tty, struct termios *old)
-+{
-+ BT_DBG("tty %p", tty);
-+
-+ if ((tty->termios->c_cflag == old->c_cflag) &&
-+ (RELEVANT_IFLAG(tty->termios->c_iflag) == RELEVANT_IFLAG(old->c_iflag)))
-+ return;
-+
-+ /* handle turning off CRTSCTS */
-+ if ((old->c_cflag & CRTSCTS) && !(tty->termios->c_cflag & CRTSCTS)) {
-+ BT_DBG("turning off CRTSCTS");
-+ }
-+}
-+
-+static void rfcomm_tty_throttle(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_dlc_throttle(dev->dlc);
-+}
-+
-+static void rfcomm_tty_unthrottle(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_dlc_unthrottle(dev->dlc);
-+}
-+
-+static int rfcomm_tty_chars_in_buffer(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ if (skb_queue_len(&dlc->tx_queue))
-+ return dlc->mtu;
-+
-+ return 0;
-+}
-+
-+static void rfcomm_tty_flush_buffer(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ skb_queue_purge(&dev->dlc->tx_queue);
-+
-+ if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup)
-+ tty->ldisc.write_wakeup(tty);
-+}
-+
-+static void rfcomm_tty_send_xchar(struct tty_struct *tty, char ch)
-+{
-+ BT_DBG("tty %p ch %c", tty, ch);
-+}
-+
-+static void rfcomm_tty_wait_until_sent(struct tty_struct *tty, int timeout)
-+{
-+ BT_DBG("tty %p timeout %d", tty, timeout);
-+}
-+
-+static void rfcomm_tty_hangup(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_tty_flush_buffer(tty);
-+
-+ if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags))
-+ rfcomm_dev_del(dev);
-+}
-+
-+static int rfcomm_tty_read_proc(char *buf, char **start, off_t offset, int len, int *eof, void *unused)
-+{
-+ return 0;
-+}
-+
-+/* ---- TTY structure ---- */
-+static int rfcomm_tty_refcount; /* If we manage several devices */
-+
-+static struct tty_struct *rfcomm_tty_table[RFCOMM_TTY_PORTS];
-+static struct termios *rfcomm_tty_termios[RFCOMM_TTY_PORTS];
-+static struct termios *rfcomm_tty_termios_locked[RFCOMM_TTY_PORTS];
-+
-+static struct tty_driver rfcomm_tty_driver = {
-+ magic: TTY_DRIVER_MAGIC,
-+ driver_name: "rfcomm",
-+#ifdef CONFIG_DEVFS_FS
-+ name: "bluetooth/rfcomm/%d",
-+#else
-+ name: "rfcomm",
-+#endif
-+ major: RFCOMM_TTY_MAJOR,
-+ minor_start: RFCOMM_TTY_MINOR,
-+ num: RFCOMM_TTY_PORTS,
-+ type: TTY_DRIVER_TYPE_SERIAL,
-+ subtype: SERIAL_TYPE_NORMAL,
-+ flags: TTY_DRIVER_REAL_RAW,
-+
-+ refcount: &rfcomm_tty_refcount,
-+ table: rfcomm_tty_table,
-+ termios: rfcomm_tty_termios,
-+ termios_locked: rfcomm_tty_termios_locked,
-+
-+ open: rfcomm_tty_open,
-+ close: rfcomm_tty_close,
-+ put_char: rfcomm_tty_put_char,
-+ write: rfcomm_tty_write,
-+ write_room: rfcomm_tty_write_room,
-+ chars_in_buffer: rfcomm_tty_chars_in_buffer,
-+ flush_buffer: rfcomm_tty_flush_buffer,
-+ ioctl: rfcomm_tty_ioctl,
-+ throttle: rfcomm_tty_throttle,
-+ unthrottle: rfcomm_tty_unthrottle,
-+ set_termios: rfcomm_tty_set_termios,
-+ send_xchar: rfcomm_tty_send_xchar,
-+ stop: NULL,
-+ start: NULL,
-+ hangup: rfcomm_tty_hangup,
-+ wait_until_sent: rfcomm_tty_wait_until_sent,
-+ read_proc: rfcomm_tty_read_proc,
-+};
-+
-+int rfcomm_init_ttys(void)
-+{
-+ int i;
-+
-+ /* Initalize our global data */
-+ for (i = 0; i < RFCOMM_TTY_PORTS; i++)
-+ rfcomm_tty_table[i] = NULL;
-+
-+ /* Register the TTY driver */
-+ rfcomm_tty_driver.init_termios = tty_std_termios;
-+ rfcomm_tty_driver.init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
-+ rfcomm_tty_driver.flags = TTY_DRIVER_REAL_RAW;
-+
-+ if (tty_register_driver(&rfcomm_tty_driver)) {
-+ BT_ERR("Can't register RFCOMM TTY driver");
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
-+void rfcomm_cleanup_ttys(void)
-+{
-+ tty_unregister_driver(&rfcomm_tty_driver);
-+ return;
-+}
-diff -urN linux-2.4.18/net/bluetooth/sco.c linux-2.4.18-mh15/net/bluetooth/sco.c
---- linux-2.4.18/net/bluetooth/sco.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/sco.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,1019 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ SCO sockets.
-+ *
-+ * $Id: sco.c,v 1.4 2002/07/22 20:32:54 maxk Exp $
-+ */
-+#define VERSION "0.3"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/socket.h>
-+#include <linux/skbuff.h>
-+#include <linux/proc_fs.h>
-+#include <linux/list.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include <net/bluetooth/sco.h>
-+
-+#ifndef SCO_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+static struct proto_ops sco_sock_ops;
-+
-+static struct bluez_sock_list sco_sk_list = {
-+ lock: RW_LOCK_UNLOCKED
-+};
-+
-+static inline int sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent);
-+static void sco_chan_del(struct sock *sk, int err);
-+static inline struct sock * sco_chan_get(struct sco_conn *conn);
-+
-+static int sco_conn_del(struct hci_conn *conn, int err);
-+
-+static void sco_sock_close(struct sock *sk);
-+static void sco_sock_kill(struct sock *sk);
-+
-+/* ----- SCO timers ------ */
-+static void sco_sock_timeout(unsigned long arg)
-+{
-+ struct sock *sk = (struct sock *) arg;
-+
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ bh_lock_sock(sk);
-+ sk->err = ETIMEDOUT;
-+ sk->state_change(sk);
-+ bh_unlock_sock(sk);
-+
-+ sco_sock_kill(sk);
-+ sock_put(sk);
-+}
-+
-+static void sco_sock_set_timer(struct sock *sk, long timeout)
-+{
-+ BT_DBG("sock %p state %d timeout %ld", sk, sk->state, timeout);
-+
-+ if (!mod_timer(&sk->timer, jiffies + timeout))
-+ sock_hold(sk);
-+}
-+
-+static void sco_sock_clear_timer(struct sock *sk)
-+{
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ if (timer_pending(&sk->timer) && del_timer(&sk->timer))
-+ __sock_put(sk);
-+}
-+
-+static void sco_sock_init_timer(struct sock *sk)
-+{
-+ init_timer(&sk->timer);
-+ sk->timer.function = sco_sock_timeout;
-+ sk->timer.data = (unsigned long)sk;
-+}
-+
-+/* -------- SCO connections --------- */
-+static struct sco_conn *sco_conn_add(struct hci_conn *hcon, __u8 status)
-+{
-+ struct hci_dev *hdev = hcon->hdev;
-+ struct sco_conn *conn;
-+
-+ if ((conn = hcon->sco_data))
-+ return conn;
-+
-+ if (status)
-+ return conn;
-+
-+ if (!(conn = kmalloc(sizeof(struct sco_conn), GFP_ATOMIC)))
-+ return NULL;
-+ memset(conn, 0, sizeof(struct sco_conn));
-+
-+ spin_lock_init(&conn->lock);
-+
-+ hcon->sco_data = conn;
-+ conn->hcon = hcon;
-+
-+ conn->src = &hdev->bdaddr;
-+ conn->dst = &hcon->dst;
-+
-+ if (hdev->sco_mtu > 0)
-+ conn->mtu = hdev->sco_mtu;
-+ else
-+ conn->mtu = 60;
-+
-+ BT_DBG("hcon %p conn %p", hcon, conn);
-+
-+ MOD_INC_USE_COUNT;
-+ return conn;
-+}
-+
-+static int sco_conn_del(struct hci_conn *hcon, int err)
-+{
-+ struct sco_conn *conn;
-+ struct sock *sk;
-+
-+ if (!(conn = hcon->sco_data))
-+ return 0;
-+
-+ BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
-+
-+ /* Kill socket */
-+ if ((sk = sco_chan_get(conn))) {
-+ bh_lock_sock(sk);
-+ sco_sock_clear_timer(sk);
-+ sco_chan_del(sk, err);
-+ bh_unlock_sock(sk);
-+ sco_sock_kill(sk);
-+ }
-+
-+ hcon->sco_data = NULL;
-+ kfree(conn);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+int sco_connect(struct sock *sk)
-+{
-+ bdaddr_t *src = &bluez_pi(sk)->src;
-+ bdaddr_t *dst = &bluez_pi(sk)->dst;
-+ struct sco_conn *conn;
-+ struct hci_conn *hcon;
-+ struct hci_dev *hdev;
-+ int err = 0;
-+
-+ BT_DBG("%s -> %s", batostr(src), batostr(dst));
-+
-+ if (!(hdev = hci_get_route(dst, src)))
-+ return -EHOSTUNREACH;
-+
-+ hci_dev_lock_bh(hdev);
-+
-+ err = -ENOMEM;
-+
-+ hcon = hci_connect(hdev, SCO_LINK, dst);
-+ if (!hcon)
-+ goto done;
-+
-+ conn = sco_conn_add(hcon, 0);
-+ if (!conn) {
-+ hci_conn_put(hcon);
-+ goto done;
-+ }
-+
-+ /* Update source addr of the socket */
-+ bacpy(src, conn->src);
-+
-+ err = sco_chan_add(conn, sk, NULL);
-+ if (err)
-+ goto done;
-+
-+ if (hcon->state == BT_CONNECTED) {
-+ sco_sock_clear_timer(sk);
-+ sk->state = BT_CONNECTED;
-+ } else {
-+ sk->state = BT_CONNECT;
-+ sco_sock_set_timer(sk, sk->sndtimeo);
-+ }
-+done:
-+ hci_dev_unlock_bh(hdev);
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
-+static inline int sco_send_frame(struct sock *sk, struct msghdr *msg, int len)
-+{
-+ struct sco_conn *conn = sco_pi(sk)->conn;
-+ struct sk_buff *skb;
-+ int err, count;
-+
-+ /* Check outgoing MTU */
-+ if (len > conn->mtu)
-+ return -EINVAL;
-+
-+ BT_DBG("sk %p len %d", sk, len);
-+
-+ count = MIN(conn->mtu, len);
-+ if (!(skb = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err)))
-+ return err;
-+
-+ if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) {
-+ err = -EFAULT;
-+ goto fail;
-+ }
-+
-+ if ((err = hci_send_sco(conn->hcon, skb)) < 0)
-+ goto fail;
-+
-+ return count;
-+
-+fail:
-+ kfree_skb(skb);
-+ return err;
-+}
-+
-+static inline void sco_recv_frame(struct sco_conn *conn, struct sk_buff *skb)
-+{
-+ struct sock *sk = sco_chan_get(conn);
-+
-+ if (!sk)
-+ goto drop;
-+
-+ BT_DBG("sk %p len %d", sk, skb->len);
-+
-+ if (sk->state != BT_CONNECTED)
-+ goto drop;
-+
-+ if (!sock_queue_rcv_skb(sk, skb))
-+ return;
-+
-+drop:
-+ kfree_skb(skb);
-+ return;
-+}
-+
-+/* -------- Socket interface ---------- */
-+static struct sock *__sco_get_sock_by_addr(bdaddr_t *ba)
-+{
-+ struct sock *sk;
-+
-+ for (sk = sco_sk_list.head; sk; sk = sk->next) {
-+ if (!bacmp(&bluez_pi(sk)->src, ba))
-+ break;
-+ }
-+
-+ return sk;
-+}
-+
-+/* Find socket listening on source bdaddr.
-+ * Returns closest match.
-+ */
-+static struct sock *sco_get_sock_listen(bdaddr_t *src)
-+{
-+ struct sock *sk, *sk1 = NULL;
-+
-+ read_lock(&sco_sk_list.lock);
-+
-+ for (sk = sco_sk_list.head; sk; sk = sk->next) {
-+ if (sk->state != BT_LISTEN)
-+ continue;
-+
-+ /* Exact match. */
-+ if (!bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+
-+ /* Closest match */
-+ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ sk1 = sk;
-+ }
-+
-+ read_unlock(&sco_sk_list.lock);
-+
-+ return sk ? sk : sk1;
-+}
-+
-+static void sco_sock_destruct(struct sock *sk)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ skb_queue_purge(&sk->receive_queue);
-+ skb_queue_purge(&sk->write_queue);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void sco_sock_cleanup_listen(struct sock *parent)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ /* Close not yet accepted channels */
-+ while ((sk = bluez_accept_dequeue(parent, NULL))) {
-+ sco_sock_close(sk);
-+ sco_sock_kill(sk);
-+ }
-+
-+ parent->state = BT_CLOSED;
-+ parent->zapped = 1;
-+}
-+
-+/* Kill socket (only if zapped and orphan)
-+ * Must be called on unlocked socket.
-+ */
-+static void sco_sock_kill(struct sock *sk)
-+{
-+ if (!sk->zapped || sk->socket)
-+ return;
-+
-+ BT_DBG("sk %p state %d", sk, sk->state);
-+
-+ /* Kill poor orphan */
-+ bluez_sock_unlink(&sco_sk_list, sk);
-+ sk->dead = 1;
-+ sock_put(sk);
-+}
-+
-+/* Close socket.
-+ * Must be called on unlocked socket.
-+ */
-+static void sco_sock_close(struct sock *sk)
-+{
-+ struct sco_conn *conn;
-+
-+ sco_sock_clear_timer(sk);
-+
-+ lock_sock(sk);
-+
-+ conn = sco_pi(sk)->conn;
-+
-+ BT_DBG("sk %p state %d conn %p socket %p", sk, sk->state, conn, sk->socket);
-+
-+ switch (sk->state) {
-+ case BT_LISTEN:
-+ sco_sock_cleanup_listen(sk);
-+ break;
-+
-+ case BT_CONNECTED:
-+ case BT_CONFIG:
-+ case BT_CONNECT:
-+ case BT_DISCONN:
-+ sco_chan_del(sk, ECONNRESET);
-+ break;
-+
-+ default:
-+ sk->zapped = 1;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+}
-+
-+static void sco_sock_init(struct sock *sk, struct sock *parent)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ if (parent)
-+ sk->type = parent->type;
-+}
-+
-+static struct sock *sco_sock_alloc(struct socket *sock, int proto, int prio)
-+{
-+ struct sock *sk;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1)))
-+ return NULL;
-+
-+ bluez_sock_init(sock, sk);
-+
-+ sk->zapped = 0;
-+
-+ sk->destruct = sco_sock_destruct;
-+ sk->sndtimeo = SCO_CONN_TIMEOUT;
-+
-+ sk->protocol = proto;
-+ sk->state = BT_OPEN;
-+
-+ sco_sock_init_timer(sk);
-+
-+ bluez_sock_link(&sco_sk_list, sk);
-+
-+ MOD_INC_USE_COUNT;
-+ return sk;
-+}
-+
-+static int sco_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ sock->state = SS_UNCONNECTED;
-+
-+ if (sock->type != SOCK_SEQPACKET)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &sco_sock_ops;
-+
-+ if (!(sk = sco_sock_alloc(sock, protocol, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ sco_sock_init(sk, NULL);
-+ return 0;
-+}
-+
-+static int sco_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
-+{
-+ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
-+ struct sock *sk = sock->sk;
-+ bdaddr_t *src = &sa->sco_bdaddr;
-+ int err = 0;
-+
-+ BT_DBG("sk %p %s", sk, batostr(&sa->sco_bdaddr));
-+
-+ if (!addr || addr->sa_family != AF_BLUETOOTH)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_OPEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ write_lock_bh(&sco_sk_list.lock);
-+
-+ if (bacmp(src, BDADDR_ANY) && __sco_get_sock_by_addr(src)) {
-+ err = -EADDRINUSE;
-+ } else {
-+ /* Save source address */
-+ bacpy(&bluez_pi(sk)->src, &sa->sco_bdaddr);
-+ sk->state = BT_BOUND;
-+ }
-+
-+ write_unlock_bh(&sco_sk_list.lock);
-+
-+done:
-+ release_sock(sk);
-+
-+ return err;
-+}
-+
-+static int sco_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
-+{
-+ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_sco))
-+ return -EINVAL;
-+
-+ if (sk->state != BT_OPEN && sk->state != BT_BOUND)
-+ return -EBADFD;
-+
-+ if (sk->type != SOCK_SEQPACKET)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ /* Set destination address and psm */
-+ bacpy(&bluez_pi(sk)->dst, &sa->sco_bdaddr);
-+
-+ if ((err = sco_connect(sk)))
-+ goto done;
-+
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_listen(struct socket *sock, int backlog)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p backlog %d", sk, backlog);
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ sk->max_ack_backlog = backlog;
-+ sk->ack_backlog = 0;
-+ sk->state = BT_LISTEN;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_accept(struct socket *sock, struct socket *newsock, int flags)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct sock *sk = sock->sk, *ch;
-+ long timeo;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
-+
-+ BT_DBG("sk %p timeo %ld", sk, timeo);
-+
-+ /* Wait for an incoming connection. (wake-one). */
-+ add_wait_queue_exclusive(sk->sleep, &wait);
-+ while (!(ch = bluez_accept_dequeue(sk, newsock))) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ if (err)
-+ goto done;
-+
-+ newsock->state = SS_CONNECTED;
-+
-+ BT_DBG("new socket %p", ch);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int sco_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
-+{
-+ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ addr->sa_family = AF_BLUETOOTH;
-+ *len = sizeof(struct sockaddr_sco);
-+
-+ if (peer)
-+ bacpy(&sa->sco_bdaddr, &bluez_pi(sk)->dst);
-+ else
-+ bacpy(&sa->sco_bdaddr, &bluez_pi(sk)->src);
-+
-+ return 0;
-+}
-+
-+static int sco_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (sk->err)
-+ return sock_error(sk);
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state == BT_CONNECTED)
-+ err = sco_send_frame(sk, msg, len);
-+ else
-+ err = -ENOTCONN;
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ struct sco_options opts;
-+ struct sco_conninfo cinfo;
-+ int len, err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (get_user(len, optlen))
-+ return -EFAULT;
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ case SCO_OPTIONS:
-+ if (sk->state != BT_CONNECTED) {
-+ err = -ENOTCONN;
-+ break;
-+ }
-+
-+ opts.mtu = sco_pi(sk)->conn->mtu;
-+
-+ BT_DBG("mtu %d", opts.mtu);
-+
-+ len = MIN(len, sizeof(opts));
-+ if (copy_to_user(optval, (char *)&opts, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ case SCO_CONNINFO:
-+ if (sk->state != BT_CONNECTED) {
-+ err = -ENOTCONN;
-+ break;
-+ }
-+
-+ cinfo.hci_handle = sco_pi(sk)->conn->hcon->handle;
-+
-+ len = MIN(len, sizeof(cinfo));
-+ if (copy_to_user(optval, (char *)&cinfo, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int sco_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sco_sock_close(sk);
-+ if (sk->linger) {
-+ lock_sock(sk);
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ release_sock(sk);
-+ }
-+
-+ sock_orphan(sk);
-+ sco_sock_kill(sk);
-+ return err;
-+}
-+
-+static void __sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ BT_DBG("conn %p", conn);
-+
-+ sco_pi(sk)->conn = conn;
-+ conn->sk = sk;
-+
-+ if (parent)
-+ bluez_accept_enqueue(parent, sk);
-+}
-+
-+static inline int sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ int err = 0;
-+
-+ sco_conn_lock(conn);
-+ if (conn->sk) {
-+ err = -EBUSY;
-+ } else {
-+ __sco_chan_add(conn, sk, parent);
-+ }
-+ sco_conn_unlock(conn);
-+ return err;
-+}
-+
-+static inline struct sock * sco_chan_get(struct sco_conn *conn)
-+{
-+ struct sock *sk = NULL;
-+ sco_conn_lock(conn);
-+ sk = conn->sk;
-+ sco_conn_unlock(conn);
-+ return sk;
-+}
-+
-+/* Delete channel.
-+ * Must be called on the locked socket. */
-+static void sco_chan_del(struct sock *sk, int err)
-+{
-+ struct sco_conn *conn;
-+
-+ conn = sco_pi(sk)->conn;
-+
-+ BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
-+
-+ if (conn) {
-+ sco_conn_lock(conn);
-+ conn->sk = NULL;
-+ sco_pi(sk)->conn = NULL;
-+ sco_conn_unlock(conn);
-+ hci_conn_put(conn->hcon);
-+ }
-+
-+ sk->state = BT_CLOSED;
-+ sk->err = err;
-+ sk->state_change(sk);
-+
-+ sk->zapped = 1;
-+}
-+
-+static void sco_conn_ready(struct sco_conn *conn)
-+{
-+ struct sock *parent, *sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ sco_conn_lock(conn);
-+
-+ if ((sk = conn->sk)) {
-+ sco_sock_clear_timer(sk);
-+ bh_lock_sock(sk);
-+ sk->state = BT_CONNECTED;
-+ sk->state_change(sk);
-+ bh_unlock_sock(sk);
-+ } else {
-+ parent = sco_get_sock_listen(conn->src);
-+ if (!parent)
-+ goto done;
-+
-+ bh_lock_sock(parent);
-+
-+ sk = sco_sock_alloc(NULL, BTPROTO_SCO, GFP_ATOMIC);
-+ if (!sk) {
-+ bh_unlock_sock(parent);
-+ goto done;
-+ }
-+
-+ sco_sock_init(sk, parent);
-+
-+ bacpy(&bluez_pi(sk)->src, conn->src);
-+ bacpy(&bluez_pi(sk)->dst, conn->dst);
-+
-+ hci_conn_hold(conn->hcon);
-+ __sco_chan_add(conn, sk, parent);
-+
-+ sk->state = BT_CONNECTED;
-+
-+ /* Wake up parent */
-+ parent->data_ready(parent, 1);
-+
-+ bh_unlock_sock(parent);
-+ }
-+
-+done:
-+ sco_conn_unlock(conn);
-+}
-+
-+/* ----- SCO interface with lower layer (HCI) ----- */
-+int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
-+{
-+ BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
-+
-+ /* Always accept connection */
-+ return HCI_LM_ACCEPT;
-+}
-+
-+int sco_connect_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status);
-+
-+ if (hcon->type != SCO_LINK)
-+ return 0;
-+
-+ if (!status) {
-+ struct sco_conn *conn;
-+
-+ conn = sco_conn_add(hcon, status);
-+ if (conn)
-+ sco_conn_ready(conn);
-+ } else
-+ sco_conn_del(hcon, bterr(status));
-+
-+ return 0;
-+}
-+
-+int sco_disconn_ind(struct hci_conn *hcon, __u8 reason)
-+{
-+ BT_DBG("hcon %p reason %d", hcon, reason);
-+
-+ if (hcon->type != SCO_LINK)
-+ return 0;
-+
-+ sco_conn_del(hcon, bterr(reason));
-+ return 0;
-+}
-+
-+int sco_recv_scodata(struct hci_conn *hcon, struct sk_buff *skb)
-+{
-+ struct sco_conn *conn = hcon->sco_data;
-+
-+ if (!conn)
-+ goto drop;
-+
-+ BT_DBG("conn %p len %d", conn, skb->len);
-+
-+ if (skb->len) {
-+ sco_recv_frame(conn, skb);
-+ return 0;
-+ }
-+
-+drop:
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+/* ----- Proc fs support ------ */
-+static int sco_sock_dump(char *buf, struct bluez_sock_list *list)
-+{
-+ struct sco_pinfo *pi;
-+ struct sock *sk;
-+ char *ptr = buf;
-+
-+ write_lock_bh(&list->lock);
-+
-+ for (sk = list->head; sk; sk = sk->next) {
-+ pi = sco_pi(sk);
-+ ptr += sprintf(ptr, "%s %s %d\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ sk->state);
-+ }
-+
-+ write_unlock_bh(&list->lock);
-+
-+ ptr += sprintf(ptr, "\n");
-+
-+ return ptr - buf;
-+}
-+
-+static int sco_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
-+{
-+ char *ptr = buf;
-+ int len;
-+
-+ BT_DBG("count %d, offset %ld", count, offset);
-+
-+ ptr += sco_sock_dump(ptr, &sco_sk_list);
-+ len = ptr - buf;
-+
-+ if (len <= count + offset)
-+ *eof = 1;
-+
-+ *start = buf + offset;
-+ len -= offset;
-+
-+ if (len > count)
-+ len = count;
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+
-+static struct proto_ops sco_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: sco_sock_release,
-+ bind: sco_sock_bind,
-+ connect: sco_sock_connect,
-+ listen: sco_sock_listen,
-+ accept: sco_sock_accept,
-+ getname: sco_sock_getname,
-+ sendmsg: sco_sock_sendmsg,
-+ recvmsg: bluez_sock_recvmsg,
-+ poll: bluez_sock_poll,
-+ socketpair: sock_no_socketpair,
-+ ioctl: sock_no_ioctl,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sco_sock_setsockopt,
-+ getsockopt: sco_sock_getsockopt,
-+ mmap: sock_no_mmap
-+};
-+
-+static struct net_proto_family sco_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: sco_sock_create
-+};
-+
-+static struct hci_proto sco_hci_proto = {
-+ name: "SCO",
-+ id: HCI_PROTO_SCO,
-+ connect_ind: sco_connect_ind,
-+ connect_cfm: sco_connect_cfm,
-+ disconn_ind: sco_disconn_ind,
-+ recv_scodata: sco_recv_scodata,
-+};
-+
-+int __init sco_init(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_SCO, &sco_sock_family_ops))) {
-+ BT_ERR("Can't register SCO socket layer");
-+ return err;
-+ }
-+
-+ if ((err = hci_register_proto(&sco_hci_proto))) {
-+ BT_ERR("Can't register SCO protocol");
-+ return err;
-+ }
-+
-+ create_proc_read_entry("bluetooth/sco", 0, 0, sco_read_proc, NULL);
-+
-+ BT_INFO("BlueZ SCO ver %s Copyright (C) 2000,2001 Qualcomm Inc", VERSION);
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ return 0;
-+}
-+
-+void sco_cleanup(void)
-+{
-+ int err;
-+
-+ remove_proc_entry("bluetooth/sco", NULL);
-+
-+ /* Unregister socket, protocol and notifier */
-+ if ((err = bluez_sock_unregister(BTPROTO_SCO)))
-+ BT_ERR("Can't unregister SCO socket layer %d", err);
-+
-+ if ((err = hci_unregister_proto(&sco_hci_proto)))
-+ BT_ERR("Can't unregister SCO protocol %d", err);
-+}
-+
-+module_init(sco_init);
-+module_exit(sco_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_DESCRIPTION("BlueZ SCO ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/syms.c linux-2.4.18-mh15/net/bluetooth/syms.c
---- linux-2.4.18/net/bluetooth/syms.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/syms.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,7 +25,7 @@
- /*
- * BlueZ symbols.
- *
-- * $Id: syms.c,v 1.1 2001/07/12 19:31:24 maxk Exp $
-+ * $Id: syms.c,v 1.1 2002/03/08 21:06:59 maxk Exp $
- */
-
- #include <linux/config.h>
-@@ -39,25 +39,28 @@
- #include <linux/socket.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
-
- /* HCI Core */
- EXPORT_SYMBOL(hci_register_dev);
- EXPORT_SYMBOL(hci_unregister_dev);
-+EXPORT_SYMBOL(hci_suspend_dev);
-+EXPORT_SYMBOL(hci_resume_dev);
-+
- EXPORT_SYMBOL(hci_register_proto);
- EXPORT_SYMBOL(hci_unregister_proto);
--EXPORT_SYMBOL(hci_register_notifier);
--EXPORT_SYMBOL(hci_unregister_notifier);
-
-+EXPORT_SYMBOL(hci_get_route);
- EXPORT_SYMBOL(hci_connect);
--EXPORT_SYMBOL(hci_disconnect);
- EXPORT_SYMBOL(hci_dev_get);
-+EXPORT_SYMBOL(hci_conn_auth);
-+EXPORT_SYMBOL(hci_conn_encrypt);
-
- EXPORT_SYMBOL(hci_recv_frame);
- EXPORT_SYMBOL(hci_send_acl);
- EXPORT_SYMBOL(hci_send_sco);
--EXPORT_SYMBOL(hci_send_raw);
-+EXPORT_SYMBOL(hci_send_cmd);
-+EXPORT_SYMBOL(hci_si_event);
-
- /* BlueZ lib */
- EXPORT_SYMBOL(bluez_dump);
-@@ -68,5 +71,11 @@
- /* BlueZ sockets */
- EXPORT_SYMBOL(bluez_sock_register);
- EXPORT_SYMBOL(bluez_sock_unregister);
-+EXPORT_SYMBOL(bluez_sock_init);
- EXPORT_SYMBOL(bluez_sock_link);
- EXPORT_SYMBOL(bluez_sock_unlink);
-+EXPORT_SYMBOL(bluez_sock_recvmsg);
-+EXPORT_SYMBOL(bluez_sock_poll);
-+EXPORT_SYMBOL(bluez_accept_enqueue);
-+EXPORT_SYMBOL(bluez_accept_dequeue);
-+EXPORT_SYMBOL(bluez_sock_wait_state);
-diff -urN linux-2.4.18/net/netsyms.c linux-2.4.18-mh15/net/netsyms.c
---- linux-2.4.18/net/netsyms.c 2002-02-25 20:38:14.000000000 +0100
-+++ linux-2.4.18-mh15/net/netsyms.c 2004-08-01 16:26:23.000000000 +0200
-@@ -159,6 +159,7 @@
- EXPORT_SYMBOL(put_cmsg);
- EXPORT_SYMBOL(sock_kmalloc);
- EXPORT_SYMBOL(sock_kfree_s);
-+EXPORT_SYMBOL(sockfd_lookup);
-
- #ifdef CONFIG_FILTER
- EXPORT_SYMBOL(sk_run_filter);
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bt950_cs.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bt950_cs.patch
deleted file mode 100644
index c29f0d02f2..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bt950_cs.patch
+++ /dev/null
@@ -1,1174 +0,0 @@
-diff -Nur linux-orig/drivers/bluetooth/bt950_cs.c linux/drivers/bluetooth/bt950_cs.c
---- linux-orig/drivers/bluetooth/bt950_cs.c 1970-01-01 03:00:00.000000000 +0300
-+++ linux/drivers/bluetooth/bt950_cs.c 2004-02-04 09:55:04.000000000 +0300
-@@ -0,0 +1,1133 @@
-+/*
-+ *
-+ * Driver for Bluetooth cards with OXCF950 UART interface
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ * Albert Rybalkin <albertr@iral.com>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+
-+#ifdef CONFIG_MODVERSIONS
-+#ifndef MODVERSIONS
-+#define MODVERSIONS
-+#endif
-+#include <linux/modversions.h>
-+#endif
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+#include <linux/delay.h>
-+
-+#include <linux/skbuff.h>
-+#include <linux/string.h>
-+#include <linux/serial.h>
-+#include <linux/serial_reg.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+/* Default baud rate: 57600, 115200, 230400 or 460800 */
-+#define DEFAULT_BAUD_RATE 460800
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0x86bc;
-+static int irq_list[4] = { -1 };
-+static long baud_rate = DEFAULT_BAUD_RATE;
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+MODULE_PARM(baud_rate, "l");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>, Albert Rybalkin <albertr@iral.com>");
-+MODULE_DESCRIPTION("BlueZ driver for Bluetooth cards with OXCF950 UART interface");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct bt950_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+} bt950_info_t;
-+
-+
-+static void bt950_config(dev_link_t *link);
-+static void bt950_release(u_long arg);
-+static int bt950_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "bt950_cs";
-+
-+static dev_link_t *bt950_attach(void);
-+static void bt950_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_WAITING 8
-+
-+/* Receiver states */
-+#define RECV_WAIT_PACKET_TYPE 0
-+#define RECV_WAIT_EVENT_HEADER 1
-+#define RECV_WAIT_ACL_HEADER 2
-+#define RECV_WAIT_SCO_HEADER 3
-+#define RECV_WAIT_DATA 4
-+
-+/* Special packet types */
-+#define PKT_BAUD_RATE_57600 0x80
-+#define PKT_BAUD_RATE_115200 0x81
-+#define PKT_BAUD_RATE_230400 0x82
-+#define PKT_BAUD_RATE_460800 0x83
-+
-+/* 950-specific stuff */
-+#define MAX_WAIT 0xFFFF
-+#define FIFO_SIZE 128
-+
-+#define TR_TX_INT 0x10 /* TTL: TX interrupt trigger level (0-127) */
-+#define TR_RX_INT 0x40 /* RTL: RX interrupt trigger level (1-127) */
-+#define TR_CTL_LO 0x08 /* FCL: auto flow control LOWER trigger level (0-127) */
-+#define TR_CTL_HI 0x60 /* FCH: auto flow control HIGH trigger level (1-127) */
-+
-+/* 950-specific registers and values we use. It should
-+ * eventually go to include/linux/serial_reg.h */
-+#define UART_IER_CTS 0x80 /* enable CTS interrupt */
-+#define UART_IER_RTS 0x40 /* enable RTS interrupt */
-+#define UART_IER_SLP 0x10 /* enable sleep mode */
-+#define UART_LCR_650 0xBF /* enable 650-compatible registers access */
-+#define UART_LSR_DE 0x80 /* data error */
-+#define UART_LSR_ERR (UART_LSR_OE|UART_LSR_PE|UART_LSR_FE|UART_LSR_BI|UART_LSR_DE)
-+#define UART_IIR_RXTOUT 0x0C /* RX timeout interrupt */
-+#define UART_IIR_CTSRTS 0x20 /* CTS or RTS change interrupt */
-+#define UART_IIR_RTS 0x40
-+#define UART_IIR_CTS 0x80
-+#define UART_IIR_MASK 0x3E /* interrupt mask */
-+#define UART_SRT 0x0D /* soft reset register */
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int bt950_write(unsigned int iobase, int fifo_size, const unsigned char *buf, int len)
-+{
-+ int i, actual = 0;
-+
-+ /* Activate DTR and RTS */
-+ outb(UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2, iobase + UART_MCR);
-+
-+ /* Wait for CTS flow control */
-+ for (i = MAX_WAIT; i; i--)
-+ if (inb(iobase + UART_MSR) & UART_MSR_CTS)
-+ break;
-+
-+ if (!i) {
-+ printk(KERN_WARNING "bt950_cs: Timeout waiting for CTS on write.\n");
-+ return 0;
-+ }
-+
-+ /* The TX FIFO should be empty */
-+ for (i = MAX_WAIT; i; i--)
-+ if (inb(iobase + UART_LSR) & UART_LSR_THRE)
-+ break;
-+
-+ if (!i) {
-+ printk(KERN_WARNING "bt950_cs: Timeout waiting for empty TX FIFO on write.\n");
-+ return 0;
-+ }
-+
-+ /* Fill FIFO with current frame */
-+ while ((fifo_size-- > 0) && (actual < len)) {
-+ /* Transmit next byte */
-+ outb(buf[actual], iobase + UART_TX);
-+ actual++;
-+ }
-+
-+ return actual;
-+}
-+
-+
-+static void bt950_write_wakeup(bt950_info_t *info)
-+{
-+ unsigned char lcr;
-+ unsigned int divisor;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bt950_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ clear_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ return;
-+
-+ if (!(skb = skb_dequeue(&(info->txq))))
-+ break;
-+
-+ if (skb->pkt_type & 0x80) {
-+ /* Disable RTS */
-+ outb((inb(iobase + UART_MCR) & ~UART_MCR_RTS), iobase + UART_MCR);
-+ }
-+
-+ /* Send frame */
-+ len = bt950_write(iobase, FIFO_SIZE, skb->data, skb->len);
-+
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (skb->pkt_type & 0x80) {
-+
-+ wait_queue_head_t wait;
-+
-+ switch (skb->pkt_type) {
-+
-+ case PKT_BAUD_RATE_460800:
-+ divisor = 1;
-+ break;
-+
-+ case PKT_BAUD_RATE_230400:
-+ divisor = 2;
-+ break;
-+
-+ case PKT_BAUD_RATE_115200:
-+ divisor = 4;
-+ break;
-+
-+ case PKT_BAUD_RATE_57600:
-+ /* Fall through... */
-+
-+ default:
-+ divisor = 8;
-+ break;
-+ }
-+
-+ /* Wait until the command reaches the baseband */
-+ init_waitqueue_head(&wait);
-+ interruptible_sleep_on_timeout(&wait, HZ / 10);
-+
-+ /* Set baud on baseband */
-+ /* Enable divisor latch access */
-+ lcr = inb(iobase + UART_LCR) & 0x3F;
-+ outb(lcr | UART_LCR_DLAB, iobase + UART_LCR);
-+
-+ /* Setup divisor latch */
-+ outb(divisor & 0x00FF, iobase + UART_DLL); /* divisor latch LOW byte */
-+ outb((divisor & 0xFF00) >> 8, iobase + UART_DLM); /* divisor latch HI byte */
-+
-+ /* Disable divisor latch access */
-+ outb(lcr, iobase + UART_LCR);
-+
-+ /* Enable RTS */
-+ outb((inb(iobase + UART_MCR) | UART_MCR_RTS), iobase + UART_MCR);
-+
-+ /* Wait before the next HCI packet can be send */
-+ interruptible_sleep_on_timeout(&wait, HZ);
-+
-+ }
-+
-+ if (len == skb->len) {
-+ kfree_skb(skb);
-+ } else {
-+ skb_pull(skb, len);
-+ skb_queue_head(&(info->txq), skb);
-+ }
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
-+
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+}
-+
-+
-+static inline void bt950_receive(bt950_info_t *info)
-+{
-+ unsigned int iobase;
-+ int boguscount = 0;
-+
-+ if (!info) {
-+ printk(KERN_ERR "bt950_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ /* Fixme: BUG? */
-+ inb(iobase + UART_MCR);
-+
-+ do {
-+ info->hdev.stat.byte_rx++;
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL) {
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_ERR "bt950_cs: Can't allocate mem for new packet.\n");
-+ return;
-+ }
-+ }
-+
-+ if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
-+
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type = inb(iobase + UART_RX);
-+
-+ switch (info->rx_skb->pkt_type) {
-+
-+ case HCI_EVENT_PKT:
-+ info->rx_state = RECV_WAIT_EVENT_HEADER;
-+ info->rx_count = HCI_EVENT_HDR_SIZE;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ info->rx_state = RECV_WAIT_ACL_HEADER;
-+ info->rx_count = HCI_ACL_HDR_SIZE;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ info->rx_state = RECV_WAIT_SCO_HEADER;
-+ info->rx_count = HCI_SCO_HDR_SIZE;
-+ break;
-+
-+ default:
-+ /* Unknown packet */
-+ printk(KERN_WARNING "bt950_cs: Unknown HCI packet with type 0x%02X received.\n", info->rx_skb->pkt_type);
-+ info->hdev.stat.err_rx++;
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ } else {
-+
-+ *skb_put(info->rx_skb, 1) = inb(iobase + UART_RX);
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ int dlen;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+
-+
-+ switch (info->rx_state) {
-+
-+ case RECV_WAIT_EVENT_HEADER:
-+ eh = (hci_event_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = eh->plen;
-+ break;
-+
-+ case RECV_WAIT_ACL_HEADER:
-+ ah = (hci_acl_hdr *)(info->rx_skb->data);
-+ dlen = __le16_to_cpu(ah->dlen);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = dlen;
-+ break;
-+
-+ case RECV_WAIT_SCO_HEADER:
-+ sh = (hci_sco_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = sh->dlen;
-+ break;
-+
-+ case RECV_WAIT_DATA:
-+ hci_recv_frame(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+ /* Make sure we don't stay here too long */
-+ if (boguscount++ > 16)
-+ break;
-+
-+ } while (inb(iobase + UART_LSR) & UART_LSR_DR);
-+}
-+
-+
-+static void bt950_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ bt950_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ int boguscount = 0;
-+ int iir, lsr;
-+
-+ if (!info) {
-+ printk(KERN_ERR "bt950_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ iir = inb(iobase + UART_IIR);
-+
-+ while (!(iir & UART_IIR_NO_INT)) {
-+
-+ switch (iir & UART_IIR_ID) {
-+ case UART_IIR_RLSI:
-+ /* Clear RLSI interrupt */
-+ lsr = inb(iobase + UART_LSR);
-+ printk(KERN_NOTICE "bt950_cs: RLSI interrupt, LSR=%#x\n", lsr);
-+ /* Fixme: we need to process errors ... */
-+ break;
-+ case UART_IIR_RDI:
-+ /* Receive interrupt */
-+ bt950_receive(info);
-+ break;
-+ case UART_IIR_THRI:
-+ /* Transmitter ready for data */
-+ bt950_write_wakeup(info);
-+ break;
-+ default:
-+ printk(KERN_NOTICE "bt950_cs: Unhandled IIR=%#x\n", iir);
-+ break;
-+ }
-+
-+ /* Make sure we don't stay here too long */
-+ if (boguscount++ > 100)
-+ break;
-+
-+ iir = inb(iobase + UART_IIR);
-+
-+ }
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+/* ======================== Device specific HCI commands ======================== */
-+
-+
-+static int bt950_hci_set_baud_rate(struct hci_dev *hdev, int baud)
-+{
-+ bt950_info_t *info = (bt950_info_t *)(hdev->driver_data);
-+ struct sk_buff *skb;
-+
-+ /* Ericsson baud rate command */
-+ unsigned char cmd[] = { HCI_COMMAND_PKT, 0x09, 0xfc, 0x01, 0x03 };
-+
-+ if (!(skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "bt950_cs: Can't allocate mem for new packet.\n");
-+ return -1;
-+ }
-+
-+ switch (baud) {
-+ case 460800:
-+ cmd[4] = 0x00;
-+ skb->pkt_type = PKT_BAUD_RATE_460800;
-+ break;
-+ case 230400:
-+ cmd[4] = 0x01;
-+ skb->pkt_type = PKT_BAUD_RATE_230400;
-+ break;
-+ case 115200:
-+ cmd[4] = 0x02;
-+ skb->pkt_type = PKT_BAUD_RATE_115200;
-+ break;
-+ case 57600:
-+ /* Fall through... */
-+ default:
-+ baud = 57600;
-+ cmd[4] = 0x03;
-+ skb->pkt_type = PKT_BAUD_RATE_57600;
-+ break;
-+ }
-+
-+ memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd));
-+
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ printk(KERN_WARNING "bt950_cs: setting baud rate: %d.\n", baud);
-+
-+ bt950_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int bt950_hci_flush(struct hci_dev *hdev)
-+{
-+ bt950_info_t *info = (bt950_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int bt950_hci_open(struct hci_dev *hdev)
-+{
-+ bt950_hci_set_baud_rate(hdev, baud_rate);
-+ set_bit(HCI_RUNNING, &(hdev->flags));
-+
-+ return 0;
-+}
-+
-+
-+static int bt950_hci_close(struct hci_dev *hdev)
-+{
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ bt950_hci_flush(hdev);
-+
-+ return 0;
-+}
-+
-+
-+static int bt950_hci_send_frame(struct sk_buff *skb)
-+{
-+ bt950_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+
-+ if (!hdev) {
-+ printk(KERN_ERR "bt950_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (bt950_info_t *)(hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ bt950_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+static void bt950_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int bt950_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+static int bt950_setup_uart(bt950_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ unsigned char lcr, ier = UART_IER_RDI | UART_IER_RLSI | UART_IER_SLP;
-+ unsigned int divisor = 8; /* Fixme: divisor == 0x0c ??? */
-+ unsigned char id1, id2, id3, rev;
-+ register int i;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Disable interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ /* Activate RTS and OUT2 */
-+ /* Fixme: is OUT2 used to enable interrupts? */
-+ outb(UART_MCR_RTS | UART_MCR_OUT2, iobase + UART_MCR);
-+
-+ /* Setup the FIFO's */
-+ outb(0, iobase + UART_FCR);
-+ inb(iobase + UART_RX);
-+ outb(UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR |
-+ UART_FCR_CLEAR_XMIT | UART_FCR_TRIGGER_14, iobase + UART_FCR);
-+
-+ /* Disable divisor latch access */
-+ lcr = inb(iobase + UART_LCR) & 0x3F; /* mask out UART_LCR_DLAB and UART_LCR_SBC */
-+ outb(lcr, iobase + UART_LCR);
-+
-+ /* Read up to 4 bytes from RX FIFO */
-+ for (i = 0; i < 4; i++) {
-+ inb(iobase + UART_RX);
-+ if (!(inb(iobase + UART_LSR) & UART_LSR_DR))
-+ break;
-+ }
-+
-+ /* Wait if CTS/DSR/DCD changing */
-+ for (i = 1; i < 0x3E8; i++) {
-+ if (!(inb(iobase + UART_MSR) & UART_MSR_ANY_DELTA))
-+ break;
-+ }
-+
-+ /* Enable divisor latch access */
-+ outb(lcr | UART_LCR_DLAB, iobase + UART_LCR);
-+
-+ /* Setup divisor latch */
-+ outb(divisor & 0x00FF, iobase + UART_DLL); /* divisor latch LOW byte */
-+ outb((divisor & 0xFF00) >> 8, iobase + UART_DLM); /* divisor latch HIGH byte */
-+
-+ /* Disable divisor latch access */
-+ outb(lcr, iobase + UART_LCR);
-+
-+ /* Setup interrupts, enable sleep mode */
-+ outb(ier, iobase + UART_IER); /* we don't want to handle TX interrupts */
-+
-+ /* Skip pending interrupts */
-+ for (i = 0; i < 4; i++) {
-+ if (inb(iobase + UART_IIR) & UART_IIR_NO_INT)
-+ break;
-+ }
-+
-+ /* 8N1 */
-+ lcr = UART_LCR_WLEN8;
-+ outb(lcr, iobase + UART_LCR);
-+
-+ /* Setup CTS/RTS flow control and 950 enhanced mode */
-+ outb(UART_LCR_650, iobase + UART_LCR);
-+ outb(UART_EFR_CTS | UART_EFR_RTS | UART_EFR_ECB,
-+ iobase + UART_EFR);
-+ outb(lcr, iobase + UART_LCR);
-+
-+ /* Read core id and revision */
-+ outb(UART_ACR, iobase + UART_EMSR);
-+ outb(UART_ACR_ICRRD, iobase + UART_LSR); /* enable ICR read access, we don't need to save the old value of ACR */
-+
-+ outb(UART_ID1, iobase + UART_EMSR);
-+ id1 = inb(iobase + UART_LSR);
-+
-+ outb(UART_ID2, iobase + UART_EMSR);
-+ id2 = inb(iobase + UART_LSR);
-+
-+ outb(UART_ID3, iobase + UART_EMSR);
-+ id3 = inb(iobase + UART_LSR);
-+
-+ outb(UART_REV, iobase + UART_EMSR);
-+ rev = inb(iobase + UART_LSR);
-+
-+ if (id1 != 0x16 || id2 != 0xC9 || id3 != 0x50) {
-+ printk(KERN_ERR "bt950_cs: Unknown UART core %02X%02X%02X found.\n", id1, id2, id3);
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+ return -ENODEV;
-+ }
-+
-+
-+ /* Init ICR registers */
-+ outb(UART_TTL, iobase + UART_EMSR);
-+ outb(TR_TX_INT, iobase + UART_LSR); /* TX interrupt trigger level (0-127) */
-+
-+ outb(UART_RTL, iobase + UART_EMSR);
-+ outb(TR_RX_INT, iobase + UART_LSR); /* RX interrupt trigger level (1-127) */
-+
-+ outb(UART_FCL, iobase + UART_EMSR);
-+ outb(TR_CTL_LO, iobase + UART_LSR); /* auto flow control LOWER trigger level (0-127) */
-+
-+ outb(UART_FCH, iobase + UART_EMSR);
-+ outb(TR_CTL_HI, iobase + UART_LSR); /* auto flow control HIGH trigger level (1-127) */
-+
-+ outb(UART_ACR, iobase + UART_EMSR);
-+ outb(UART_ACR_TLENB, iobase + UART_LSR); /* disable ICR read access, enable trigger levels */
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ return 0;
-+}
-+
-+
-+static void bt950_stop_uart(bt950_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Disable interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ /* Set RTS and OUT2 low */
-+ outb(0, iobase + UART_MCR);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+}
-+
-+
-+static int bt950_open(bt950_info_t *info)
-+{
-+ struct hci_dev *hdev;
-+ int err;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ info->rx_skb = NULL;
-+
-+ /* Setup hardware */
-+ if ((err = bt950_setup_uart(info)) < 0)
-+ return err;
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ);
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = bt950_hci_open;
-+ hdev->close = bt950_hci_close;
-+ hdev->flush = bt950_hci_flush;
-+ hdev->send = bt950_hci_send_frame;
-+ hdev->destruct = bt950_hci_destruct;
-+ hdev->ioctl = bt950_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_ERR "bt950_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+static int bt950_close(bt950_info_t *info)
-+{
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ bt950_hci_close(hdev);
-+
-+ /* Stop hardware */
-+ bt950_stop_uart(info);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_ERR "bt950_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+static dev_link_t *bt950_attach(void)
-+{
-+ bt950_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &bt950_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = bt950_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+ link->conf.Present =
-+ PRESENT_OPTION | PRESENT_STATUS | PRESENT_PIN_REPLACE |
-+ PRESENT_COPY;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &bt950_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ bt950_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+static void bt950_detach(dev_link_t *link)
-+{
-+ bt950_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+ if (link->state & DEV_CONFIG)
-+ bt950_release((u_long) link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+static void bt950_config(dev_link_t *link)
-+{
-+ static ioaddr_t base[4] = { 0x2f8, 0x3e8, 0x2e8, 0x0 };
-+ client_handle_t handle = link->handle;
-+ bt950_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
-+ int i, j, try, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ /* First pass: look for a config entry that looks normal. */
-+ tuple.TupleData = (cisdata_t *) buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-+ /* Two tries: without IO aliases, then with aliases */
-+ for (try = 0; try < 2; try++) {
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if (i != CS_SUCCESS)
-+ goto next_entry;
-+ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) {
-+ link->conf.ConfigIndex = cf->index;
-+ link->io.BasePort1 = cf->io.win[0].base;
-+ link->io.IOAddrLines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+next_entry:
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+ }
-+
-+ /* Second pass: try to find an entry that isn't picky about
-+ its base address, then try to grab any standard serial port
-+ address, and finally try to get any free port. */
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if ((i == CS_SUCCESS) && (cf->io.nwin > 0)
-+ && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-+ link->conf.ConfigIndex = cf->index;
-+ for (j = 0; j < 5; j++) {
-+ link->io.BasePort1 = base[j];
-+ link->io.IOAddrLines = base[j] ? 16 : 3;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+ }
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+
-+found_port:
-+ if (i != CS_SUCCESS) {
-+ printk(KERN_ERR "bt950_cs: No usable port range found. Giving up.\n");
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (bt950_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ bt950_release((u_long)link);
-+ link->state &= ~DEV_CONFIG_PENDING;
-+}
-+
-+
-+static void bt950_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *) arg;
-+ bt950_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ bt950_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+static int bt950_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ bt950_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ bt950_close(info);
-+ link->state |= DEV_RELEASE_PENDING;
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ bt950_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG) {
-+ bt950_stop_uart(info);
-+ CardServices(ReleaseConfiguration, link->handle);
-+ }
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (link->state & DEV_CONFIG) {
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ bt950_setup_uart(info);
-+ }
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_bt950_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "bt950_cs: Card Services release does not match!\n");
-+// return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &bt950_attach, &bt950_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_bt950_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ bt950_detach(dev_list);
-+}
-+
-+
-+module_init(init_bt950_cs);
-+module_exit(exit_bt950_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -Nur linux-orig/drivers/bluetooth/Config.in linux/drivers/bluetooth/Config.in
---- linux-orig/drivers/bluetooth/Config.in 2004-02-16 08:45:33.000000000 +0300
-+++ linux/drivers/bluetooth/Config.in 2004-02-16 08:50:36.000000000 +0300
-@@ -21,7 +21,7 @@
-
- dep_tristate 'HCI DTL1 (PC Card) driver' CONFIG_BLUEZ_HCIDTL1 $CONFIG_PCMCIA $CONFIG_BLUEZ
-
--dep_tristate 'HCI BT3C (PC Card) driver' CONFIG_BLUEZ_HCIBT3C $CONFIG_PCMCIA $CONFIG_BLUEZ
-+# dep_tristate 'HCI BT3C (PC Card) driver' CONFIG_BLUEZ_HCIBT3C $CONFIG_PCMCIA $CONFIG_BLUEZ
-
- dep_tristate 'HCI BlueCard (PC Card) driver' CONFIG_BLUEZ_HCIBLUECARD $CONFIG_PCMCIA $CONFIG_BLUEZ
-
-@@ -29,5 +29,7 @@
-
- dep_tristate 'HCI VHCI (Virtual HCI device) driver' CONFIG_BLUEZ_HCIVHCI $CONFIG_BLUEZ
-
-+dep_tristate 'HCI BT950 (BT950 device) driver' CONFIG_BLUEZ_BT950 $CONFIG_BLUEZ
-+
- endmenu
-
-diff -Nur linux-orig/drivers/bluetooth/Makefile linux/drivers/bluetooth/Makefile
---- linux-orig/drivers/bluetooth/Makefile 2004-02-16 08:45:33.000000000 +0300
-+++ linux/drivers/bluetooth/Makefile 2004-02-16 08:50:47.000000000 +0300
-@@ -17,10 +17,12 @@
- obj-$(CONFIG_BLUEZ_HCIBFUSB) += bfusb.o
-
- obj-$(CONFIG_BLUEZ_HCIDTL1) += dtl1_cs.o
--obj-$(CONFIG_BLUEZ_HCIBT3C) += bt3c_cs.o
-+# obj-$(CONFIG_BLUEZ_HCIBT3C) += bt3c_cs.o
- obj-$(CONFIG_BLUEZ_HCIBLUECARD) += bluecard_cs.o
- obj-$(CONFIG_BLUEZ_HCIBTUART) += btuart_cs.o
-
-+obj-$(CONFIG_BLUEZ_BT950) += bt950_cs.o
-+
- include $(TOPDIR)/Rules.make
-
- hci_uart.o: $(uart-y)
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/buffered-fbmem.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/buffered-fbmem.patch
deleted file mode 100644
index 554f118936..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/buffered-fbmem.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#
-# Made by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- linux/drivers/video/fbmem.c~buffered-fbmem 2003-09-16 00:48:18.000000000 +0200
-+++ linux/drivers/video/fbmem.c 2003-09-19 00:38:00.000000000 +0200
-@@ -650,7 +650,11 @@
- pgprot_val(vma->vm_page_prot) &= ~_CACHE_MASK;
- pgprot_val(vma->vm_page_prot) |= _CACHE_UNCACHED;
- #elif defined(__arm__)
-+#ifdef CONFIG_PXA
-+ vma->vm_page_prot = pgprot_noncached_buffered(vma->vm_page_prot);
-+#else
- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
-+#endif
- #ifdef CONFIG_POODLE_CONSISTENT_ALLOC
- vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | L_PTE_CACHEABLE);
- #endif
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/compile.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/compile.patch
deleted file mode 100644
index 1a19b85daa..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/compile.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- linux/include/linux/jffs2_fs_i.h.old 2003-02-01 00:24:48.000000000 -0600
-+++ linux/include/linux/jffs2_fs_i.h 2003-02-01 00:25:14.000000000 -0600
-@@ -48,9 +48,11 @@
- uint32_t nr_frags;
- #endif
-
-+#ifdef KERNEL_VERSION
- #if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,2)
- struct inode vfs_inode;
- #endif
-+#endif
- };
-
- #endif /* _JFFS2_FS_I */
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-default-brightness.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-default-brightness.patch
deleted file mode 100644
index 10d0f80b7f..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-default-brightness.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux/drivers/video/corgi_backlight.c~reduce-default-brightness-on-corgi
-+++ linux/drivers/video/corgi_backlight.c
-@@ -65,7 +65,7 @@
- static int is_corgibl_pm = 0;
-
- #define CORGI_LIGHT_SETTING 7 // range setting : 0(OFF) dim 1 2 3 4 5(MAX)
--#define CORGI_LIGHT_DEFAULT 6
-+#define CORGI_LIGHT_DEFAULT 3
- static int is_corgibl_blank = 0;
- int counter_step_contrast = CORGI_LIGHT_DEFAULT;
- static corgibl_limit = CORGI_LIGHT_SETTING - 1;
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-fbcon-logo.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-fbcon-logo.patch
deleted file mode 100644
index 4d3b42445b..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-fbcon-logo.patch
+++ /dev/null
@@ -1,281 +0,0 @@
---- linux/drivers/video/w100fb.c 2004-11-04 12:44:29.000000000 -0600
-+++ linux/drivers/video/w100fb.c~corgi.patch 2004-11-04 12:50:27.000000000 -0600
-@@ -982,6 +982,17 @@
- #endif
- #endif
-
-+#ifdef CONFIG_ARCH_SHARP_SL_E // English message
-+#include "corgiLogoMsg.c"
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+static int logo_msg_xoff __initdata = 400;
-+static int logo_msg_yoff __initdata = 100;
-+#else
-+static int logo_msg_xoff __initdata = 120;
-+static int logo_msg_yoff __initdata = 500;
-+#endif
-+#endif
-+
- #endif // CONFIG_ARCH_PXA_SHEPHERD
-
- #endif
---- /dev/null 2004-06-13 02:32:19.000000000 +0100
-+++ linux/drivers/video/corgiLogoMsg.c 2004-11-12 19:57:23.000000000 +0000
-@@ -0,0 +1,258 @@
-+/* Logo Screen 16bits RGB(565) data*/
-+#ifndef __initdata
-+#define __initdata
-+#endif
-+
-+static int logo_msg_width __initdata = 30;
-+static int logo_msg_height __initdata = 250;
-+static unsigned short logo_msg_data[] __initdata ={
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xad55,0x7bef,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x738e,0x0020,0x0000,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0x0020,0x528a,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x18c3,0x738e,0x9cf3,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x52aa,0x2104,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0x1082,0x18e3,0xef3d,0xffff,0xffff,0xffff,0xffff,0xe73c,0xbdf7,0xdebb,0xffdf,0xffff,0xffff,0xffdf,0x6b6d,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xdebd,0xad17,0x0000,0x5a8c,0xef3e,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bb1,0xc5da,0xd67c,0xffbf,0xffff,0xef7d,0x0000,0x632c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xb558,0x0000,0x6b4e,0xf7bf,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x62ec,0xce1b,0xc5ba,0xce1b,0xffff,0xf7be,0x0000,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xc5fb,0xce1b,0xffff,0x18e3,0x2124,0xf79e,0xffff,0xffdf,0xf77e,0xef7d,0x2945,0x0000,0x10a2,0xe71c,0xdebd,0xc5ba,0xef1e,0x94b2,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xc5ba,0xdebd,0xffff,0x8c71,0x0000,0x2945,0x8430,0x9493,0x6b0e,0x2125,0x0000,0x94b2,0x0020,0x0841,0x526a,0x4209,0x3166,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xc5ba,0xdedd,0xffff,0xffff,0x8430,0x0020,0x0000,0x0000,0x0000,0x0000,0x8410,0xffff,0xb596,0x18e3,0x0000,0x0000,0x0000,0x3186,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xcdfb,0xce1b,0xffff,0xffff,0xffff,0xe71c,0x9cd3,0x630d,0x6b4f,0xa4f6,0xffbf,0xffff,0xffff,0xffff,0xbdd8,0x9474,0xc5f9,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xce1b,0xe6fd,0xef3e,0xe6fd,0xce1b,0xc5ba,0xe71d,0xc5da,0xc5db,0xd67c,0xde9c,0xd63c,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5da,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xe6dd,0xffff,0xef5e,0xcdfb,0xc5ba,0xc5ba,0xc5ba,0xce3b,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xef1e,0xe6dd,0xe71d,0xf79f,0xffff,0xffff,0xffff,0xffff,0xf79f,0xf77e,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2124,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x4a69,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xf79f,0xffff,0xffff,0x4a69,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xce1b,0xce1b,0xffff,0x4208,0x632c,0x2945,0x0000,0x630c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x1082,0x0841,0xc618,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xd67c,0x2104,0x5aeb,0xe73c,0x2965,0x0000,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7bf,0xdebd,0xffff,0xffff,0xc618,0x0861,0x0861,0x94b2,0xffdf,0xffff,0xffff,0xd67c,0xc5ba,0x18e3,0x5aeb,0xffff,0xf79e,0x5aeb,0x0000,0x0861,0x8c71,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xe71d,0xffff,0xffff,0xc638,0x18e3,0x0000,0x18c3,0x6b6d,0x9494,0xc5fa,0xce1b,0x18c3,0x526a,0xffff,0xffff,0xffff,0xad55,0x10a2,0x0000,0x2124,0xef7d,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xc5fb,0xc5db,0xf77e,0xffff,0xffff,0xf79e,0x8410,0x18e3,0x0000,0x0000,0x0000,0x0861,0x0000,0x4209,0xd63c,0xffbf,0xffff,0xffff,0xef7d,0x738e,0x39c7,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5db,0xc5db,0xe71d,0xffff,0xffff,0xffff,0xffff,0xc618,0x6b0e,0x4209,0x2945,0x0000,0x4a6a,0xc5ba,0xc5db,0xe6fd,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0x9cb5,0x8c13,0xcdfb,0xdebd,0xef5e,0xffdf,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xef3e,0xc5fb,0xc5ba,0xce1b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x528a,0xcdfb,0xc5ba,0xc5ba,0xc5ba,0xc5db,0xc5da,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffdf,0xdebd,0xd65c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xf77e,0xe6fd,0xd67c,0xce1b,0xc5ba,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xf7be,0x9492,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf79e,0xef5e,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xbdf7,0x2124,0x0000,0x0841,0xef7d,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x528a,0xdefb,0xdefb,0xdefb,0xffdf,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0x8410,0x0020,0x0020,0x6b4d,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffdf,0x5acb,0x0000,0x18e3,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xdefb,0x5aeb,0x4228,0x4228,0x4228,0x4228,0x4228,0x31a7,0x20e4,0x2104,0x2104,0x73ae,0x4a6a,0x0000,0x2946,0xbd79,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xd67c,0xf7bf,0xf7bf,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xffff,0x6b4e,0x0000,0x3187,0xd65b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xde9c,0xffff,0x9473,0x0000,0x2105,0xe73d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7bf,0xde9c,0xd65c,0xd65c,0xd65c,0xd65c,0xd65c,0xd65c,0xce1b,0xce1b,0xce1b,0xdebd,0xd67c,0x3166,0x0861,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xce1a,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xd69a,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xce3b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x4228,0xad55,0xffdf,0xd65c,0xc5fb,0xffbf,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xce59,0x2945,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x6b6d,0x2104,0x0000,0x10a2,0x630c,0xad55,0xf79e,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xce79,0x0000,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xdebb,0xdefb,0xdefb,0xdefb,0xdefb,0xb5b6,0x6b6d,0x31a6,0x0000,0x0841,0x39c7,0x6b6d,0x1082,0x528a,0xdefb,0xdefb,0xce59,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x9493,0x83d1,0x7bb1,0x7bb1,0x8c32,0x94b3,0xa514,0x8430,0x2945,0x0000,0x18e3,0x9492,0x10a2,0x39c7,0x7bb1,0x94b3,0xa514,0x2945,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xf7bf,0xf7bf,0xf7bf,0xf7bf,0xef5e,0xdebd,0xbdb9,0x7b90,0x3187,0x0000,0x10a2,0x734f,0xce3b,0xf7bf,0x2104,0x5acb,0xc5ba,0xe71d,0xffff,0x7bcf,0x0841,0xf79e,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x62ee,0x0000,0x0000,0x20e4,0x7370,0xbd9a,0xc5ba,0xc5ba,0xc5ba,0x18c3,0x4209,0xc5ba,0xdebd,0xffff,0xbdd7,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xef5e,0xef3e,0xef3e,0x8411,0x18e4,0xef3e,0xb577,0x526a,0x9c94,0xc5ba,0xce1b,0xe71d,0x8c33,0x9494,0xef3e,0xce3a,0xb5b7,0xb558,0xb578,0xdefb,0xdedb,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xef1e,0xd65c,0xc5ba,0x0000,0x738e,0xffff,0xffff,0x31a7,0x39c7,0xffff,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x736e,0x0000,0xc5ba,0xce1b,0xe71d,0x0000,0x7bef,0xffff,0xffff,0x31a7,0x39c7,0xffff,0xdefb,0x0000,0x62ec,0x83f1,0x9cf3,0x39c7,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe71d,0xce1b,0xffff,0x7baf,0x0000,0xf77e,0xffff,0xffff,0x0000,0x73af,0xef5e,0xffff,0x4208,0x4208,0xf7bf,0xd6bb,0x0000,0x9cd3,0xf7bf,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xc5ba,0xacf7,0x0000,0x7bb1,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0x62cd,0x736e,0x7bef,0x0000,0x3187,0x6b2e,0x7bef,0x2104,0x3187,0xdebc,0xce3a,0x0000,0x83f1,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xe6dd,0x736e,0x0000,0xc5ba,0xd65c,0xe6dd,0x0000,0x630d,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xc5ba,0x62cd,0x0000,0xc5ba,0xc5ba,0xc5ba,0x0000,0x62cd,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x738f,0xb537,0xdefb,0x528a,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0xc638,0xbd98,0xd65c,0xffff,0x736e,0x5a8c,0xef3e,0xf79e,0xa514,0x8c32,0x83d1,0xa514,0xa514,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xe71c,0xc638,0xc5ba,0xe6dd,0xffff,0xffff,0xd65c,0xd65c,0xffff,0xf7bf,0xc5ba,0xe6fd,0xf7bf,0xf7bf,0xd67c,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0xffff,0xd65c,0xd65c,0xffff,0xf7bf,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xdefb,0xdedb,0xf77e,0xffbf,0xffff,0xffff,0xdebd,0xdebd,0xffff,0xffff,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xef5e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xf77e,0xffff,0x5aeb,0x0000,0x39e7,0x8c71,0xbdf7,0xdefb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7bf,0xf7bf,0xffff,0xffff,0xffff,0xe73c,0xb5b6,0x9492,0x7bef,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x528a,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xd65c,0xbdd8,0x9493,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xffff,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe71d,0xce3b,0xc5ba,0x2945,0x1082,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x4209,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x736e,0x0000,0xb577,0xde9c,0xde9c,0xd67c,0x9473,0x18e3,0xbdd9,0xde9c,0xde9c,0xde9c,0x4a4a,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf79f,0xef1e,0xffff,0xc618,0x0000,0x8430,0xffff,0xf7be,0x2965,0x528a,0x0000,0xdefb,0xa514,0x73af,0x7bef,0x2965,0x0861,0x738f,0xad75,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd63c,0xcdfb,0xffff,0xffff,0x18e3,0x39e7,0xffff,0x7bcf,0x0000,0x5aeb,0x0000,0xdefb,0x4a6a,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xf79e,0xffff,0x73ae,0x0000,0xbdb7,0x0020,0x4a69,0xa514,0x0000,0xdefb,0x4a6a,0x10a3,0xdefb,0x4a69,0x10a3,0xce3a,0xd69a,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe6fd,0xffff,0xdefb,0x0000,0x10a2,0x0000,0xce59,0x9493,0x0000,0xc5f9,0x4a2a,0x18c3,0xe6dd,0x52ab,0x18c3,0xef3e,0xdefb,0x0000,0x39c7,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xcdfb,0xd65c,0xffff,0xe6dd,0x39c8,0x0000,0x3187,0xf7bf,0x8c32,0x0000,0xacf7,0x4209,0x18c3,0xc5ba,0x528a,0x18c3,0xef3e,0xdefb,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xf79e,0xc5db,0x630d,0x0000,0x62ed,0xf7bf,0x8c32,0x0000,0xd6bb,0x4a4a,0x18c3,0xf7bf,0x5acb,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5ba,0xcdfb,0xbd9a,0x1082,0x0000,0x1082,0xef7e,0x8c32,0x0000,0xdefb,0x4a6a,0x18c3,0xffff,0x5acb,0x18c3,0xd65c,0xbdb8,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0xc5ba,0x8411,0x0000,0x6b4d,0x0000,0x8410,0x8c32,0x0000,0xdefb,0x4a6a,0x18c3,0xffff,0x5acb,0x18c3,0xc5ba,0xacf7,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0x39a7,0x1082,0xe6fd,0x4a2a,0x0861,0x736e,0x0000,0xdefb,0x4a6a,0x0020,0x4228,0x18c3,0x0020,0x39e8,0x94b2,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fb,0xb558,0x0000,0x5acb,0xef3e,0xb559,0x2104,0x0020,0x0000,0xdefb,0x62ed,0x18c3,0x2104,0x0861,0x0000,0x18e4,0x8c71,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0x9452,0x0000,0x9493,0xef3e,0xc5ba,0xce59,0x0841,0x0000,0xdefb,0xde9c,0xce1b,0xffff,0x5acb,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5fb,0x5aeb,0x0000,0xb558,0xe6fd,0xc5ba,0xf7bf,0xa515,0x62ed,0xc5fa,0xcdfb,0xc5db,0xd65c,0x528a,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffdf,0xc5da,0xde9c,0x5aeb,0x2124,0xce1b,0xc5db,0xc5ba,0xf7bf,0xdebd,0xce1b,0xce1b,0xc5db,0xc5da,0xce1b,0x7bcf,0x4209,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xef3e,0xffff,0xef7d,0xf79f,0xc5db,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffdf,0xffff,0xffff,0xffff,0xf77e,0xe6dd,0xffdf,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xffff,0xffff,0xffff,0xef5d,0x9cd3,0x7bef,0xa534,0xef7d,0xffff,0xe6fd,0xde9c,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xad55,0x0861,0x0000,0x0000,0x0000,0x1082,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x2104,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0841,0x1082,0xa534,0xdefb,0xad75,0x2965,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x6b4e,0x0000,0xa535,0xffdf,0xffff,0xffff,0xf79e,0x2965,0x0841,0xdefb,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5db,0x4209,0x0000,0xbd9a,0xc5fb,0xef1e,0xffff,0xffff,0xd69a,0x0000,0x630c,0xe71d,0xce1b,0xffbf,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5db,0xc5fb,0x83f0,0x0000,0x4a6a,0x8c32,0x9474,0xb576,0xc638,0xc638,0x3186,0x0861,0xad56,0x9474,0xbdf8,0x630c,0x0000,0xad55,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xef5e,0xf79e,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xffff,0xffff,0xd6ba,0xad75,0x9cd3,0x7bb1,0x8c32,0xa514,0x8430,0x0000,0x528a,0x7bb1,0x9cf3,0x528a,0x0000,0x8c71,0xa514,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xd67c,0xef5e,0xef3d,0xf77e,0xf77e,0xf77e,0xce3b,0xc5db,0xf77e,0xef5e,0x0000,0x5aac,0xc5ba,0xef3e,0x7baf,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0x4a2a,0x20e4,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x18c3,0x3187,0xc5ba,0xc5ba,0x62cd,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x41e8,0x0841,0xef3e,0xef3e,0xef3e,0xe6fd,0xc5ba,0xde9c,0xef3e,0x18e4,0x39a7,0xc5ba,0xe6fd,0x738f,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xef5d,0xffff,0xffff,0xffff,0xc5ba,0xdebc,0xffff,0x1082,0x4229,0xc5ba,0xf7bf,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0x8c71,0x0000,0xb596,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xdefb,0x0000,0x630d,0xc5ba,0xf7bf,0xe71c,0xc638,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5db,0xffff,0xd69a,0x0000,0x5acb,0xffff,0xffff,0xffff,0xce1b,0xd65c,0x8410,0x0000,0xa515,0xc5ba,0xf7bf,0xffff,0x94b2,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffdf,0xffff,0x2965,0x0020,0xc618,0xffff,0xffff,0xc5fb,0xad57,0x0861,0x2124,0xdebc,0xc5ba,0xf7bf,0x8c71,0x0000,0x39e7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xef5e,0xffff,0xce59,0x0020,0x0861,0x73ae,0x9cf3,0x526b,0x0020,0x0861,0xc638,0xffbf,0xf77e,0x7bef,0x0000,0x2124,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf79f,0xc5ba,0xde9c,0xffff,0xffff,0xb5b6,0x2104,0x0000,0x0000,0x0000,0x3186,0xd69a,0xffff,0xffff,0xce5a,0x18a3,0x39e7,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xce3b,0xc5da,0xf77e,0xffff,0xffff,0xffff,0xce39,0x9474,0xb578,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xbd98,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xc5da,0xc5db,0xdedd,0xef3e,0xdebc,0xc5db,0xc5db,0xf77e,0xffff,0xffff,0xe6dd,0xc5ba,0xce1b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5e,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xd63b,0xf79f,0xd6ba,0xffff,0xffdf,0xcdfb,0xd65c,0xffdf,0xef5d,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79f,0xf77e,0xffbf,0xffff,0x9cd3,0x0020,0xad55,0xffff,0xffbf,0xffff,0xffdf,0x39e7,0x4a69,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x18c3,0x0000,0x8430,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x3186,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x73ae,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x4228,0x0000,0x0000,0x4228,0xe71c,0xffff,0xffdf,0x7bef,0x0000,0x1082,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x7bef,0xef7d,0xffff,0xbdf7,0x2104,0x0000,0x2965,0xd69a,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xcdfb,0xc5ba,0xe6fd,0xffff,0xffff,0xffff,0xad57,0x2925,0x0000,0x1082,0xd69a,0xffff,0xf7be,0x8410,0x0841,0xdedb,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdebd,0xde9c,0xde9c,0xde9c,0xde9c,0xde9c,0xde9c,0xd65c,0xc5ba,0xc5ba,0xd65c,0xffbf,0xffff,0xffff,0xe6dd,0x83d1,0x39a7,0xe6fd,0xffff,0xffff,0xffff,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x3187,0x7bb1,0xe6dd,0xffdf,0x5aeb,0x2104,0xce1b,0xc5ba,0xa516,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0x6b0d,0xc5ba,0xc5fb,0x5acb,0x2104,0xffff,0xe6dd,0x7bb1,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x4228,0xffdf,0x0000,0x7bef,0xef3e,0xd65c,0x5aeb,0x2104,0xffff,0xffff,0x9cf4,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x5aeb,0x0000,0x10a3,0xd6ba,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x2104,0xe6dd,0xffdf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x39a8,0xc61a,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x18e4,0xc5ba,0xf7bf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xb577,0xa514,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x10a3,0x9474,0xbdf8,0x7bef,0x0000,0xad55,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xd67c,0xacf7,0xcdfb,0xf79f,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0x20e4,0x4a4a,0xffbf,0xffff,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x1082,0x7bb1,0x9cf3,0x632c,0x0000,0x8c71,0xa514,0xe73c,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x18e4,0x5aeb,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xcdfb,0xf77e,0x5aab,0x18e3,0xc5ba,0xef3e,0x9cb3,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xffff,0x2104,0x4228,0xc638,0xc638,0x9474,0xad56,0xc638,0x0000,0x528b,0x9474,0x9474,0x31a7,0x18c3,0xc5ba,0xc5ba,0x7bb1,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0xc5ba,0xe6fd,0x9493,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xf79e,0xa534,0xa514,0xa514,0x7bb1,0x8c52,0xa514,0x0000,0x4209,0x83d1,0xa514,0x39c7,0x18e4,0xc5ba,0xf7bf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xd65c,0xf77e,0xf77e,0xf77e,0xf77e,0xf77e,0xc5ba,0xde9c,0xf77e,0x0000,0x6b2e,0xce1b,0xffff,0x5aeb,0x18e4,0xc5ba,0xf7bf,0xb5b6,0x4228,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xffff,0xdedb,0xb5b7,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xc5ba,0xd67c,0xef3e,0xef3e,0xd65c,0xce1b,0xffff,0xffff,0xef3e,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xffff,0xef5e,0xa4d5,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xef5d,0xf79e,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x0841,0x4a69,0x9cf3,0xe73c,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x18c3,0x1082,0x0000,0x0000,0x3186,0x5aeb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0xd6bb,0xef5e,0xffff,0xf79e,0x3186,0x0020,0xce79,0xa4f4,0x41e9,0x0841,0x0000,0x0000,0x0861,0x528a,0x9492,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b6d,0x0000,0xbdb8,0xc5ba,0xc5db,0xd67c,0xce5a,0x0861,0x4208,0xf77e,0xc5ba,0xe6fd,0x94b2,0x0000,0x18e3,0x0000,0x0000,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0861,0xdebc,0xc5ba,0xcdfb,0xc5fb,0xc5ba,0x62ed,0x0000,0xa4f5,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xef5d,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xe6dd,0xffbf,0x2965,0x31a6,0xffff,0xce3b,0xc5da,0xf79e,0xef3e,0xce1a,0x0020,0x4209,0xc5ba,0xc5db,0xa4f5,0x0000,0x9cf4,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xf7bf,0x2104,0x4228,0xffff,0xffbf,0xc5db,0xd65c,0xffff,0xffff,0x4229,0x10a2,0xc5ba,0xcdfb,0x9474,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5db,0xffff,0x2104,0x4228,0xffff,0xffff,0xe6dd,0xc5ba,0xf77e,0xffff,0x738e,0x0000,0xb558,0xef3e,0xc5f8,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce3b,0xce3b,0xffff,0x4208,0x18e3,0xffff,0xffff,0xffdf,0xc5db,0xde9c,0xffff,0x7bef,0x0000,0xacf7,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xffff,0x632c,0x0000,0xef5d,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0x6b4d,0x0000,0xb559,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xffff,0xad55,0x0000,0x9cd3,0xffff,0xffff,0xdebd,0xc5ba,0xffdf,0x2124,0x2104,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0xf7be,0x10a2,0x2104,0xf79e,0xffff,0xe6dd,0xc5ba,0xa4f4,0x0000,0x6b4d,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebc,0xc5ba,0xffdf,0xffff,0x9492,0x0000,0x4228,0xdedb,0xde9c,0x83d1,0x0861,0x10a2,0xdedc,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xe71d,0xffff,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x1082,0xc618,0xf77e,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fb,0xce1b,0xffff,0xffff,0xffff,0xbdd7,0x630d,0x4209,0x7bd0,0xef5d,0xffff,0xf77e,0xc5ba,0xef3e,0xe71c,0x7bef,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd65c,0xf7bf,0xffff,0xef3e,0xc5db,0xc5fb,0xffdf,0xffff,0xffff,0xf77e,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5fb,0xf77e,0xffff,0xe71c,0x8430,0xbdd8,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7e,0xdebd,0xde9c,0xe71d,0xffdf,0xffff,0xe73c,0x18c3,0x0000,0x0020,0xb557,0xf79f,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b4d,0x0000,0x73ae,0x0020,0x3186,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xc619,0x0020,0x528a,0xffff,0x7bcf,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xcdfb,0x41e9,0x0000,0xc639,0xffff,0xf7be,0x2104,0x1082,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdebc,0x9474,0x0000,0x39c8,0xce3b,0xffff,0xffff,0xb596,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5ba,0x2104,0x0020,0xc5f9,0xc5ba,0xe71d,0xffff,0xffff,0x52aa,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0x62cd,0x0000,0x6b6d,0xffff,0xce1b,0xc5fb,0xffbf,0xffff,0xe71c,0x1082,0x10a2,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0x9cb5,0x0000,0x18c3,0xef7d,0xffff,0xef5e,0xc5ba,0xd67c,0xffff,0xffff,0x94b2,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fa,0x2105,0x0000,0xad55,0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xef3e,0xffff,0xffff,0x39c7,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0x524b,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffbf,0xc5fb,0xc5fb,0xffdf,0xffff,0xdedb,0x0841,0x0861,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79f,0x7bb1,0x0000,0x18c3,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd67c,0xffff,0xffff,0x9492,0x0000,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce3b,0x5acd,0x0020,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xef3e,0xffff,0xffff,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xdebc,0xc5ba,0xd67c,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5db,0xc5db,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xcdfb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd65c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5da,0xef7e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xde9c,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce79,0x528a,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x73ae,0x0000,0x0000,0x39e7,0xa534,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x5aeb,0x0861,0x0000,0x0861,0x52aa,0xa514,0xe73c,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf79e,0xd67c,0xf79f,0xffff,0xffff,0xffff,0xf79e,0xa534,0x52aa,0x0861,0x0000,0x0000,0x2104,0x39c8,0x7bd0,0x8410,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xc5ba,0xd65c,0xef3e,0xffff,0xffff,0xffff,0xffff,0xf7be,0xbdd7,0x7bcf,0x39c7,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xde9c,0xc5db,0xc5ba,0xc5db,0xd67c,0xef3e,0xffdf,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xbdf8,0x8c51,0x0000,0x4208,0x4a69,0x2945,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd4,0x1082,0x0841,0x528c,0xbd79,0xce1b,0xd67c,0xe6fd,0xe6dd,0xc5ba,0xe6fd,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x0841,0x0020,0x10a2,0x1082,0xd65b,0xd65c,0xc5db,0x9474,0x62cd,0xb559,0xc5ba,0x9474,0x0000,0x94b3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x9cf3,0xffdf,0xbdf7,0xffff,0xffff,0xffff,0x7bf0,0x0000,0x9454,0xd65c,0xa4f5,0x0000,0x94b3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5fb,0x4a29,0x0000,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x7bb1,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffbf,0xc5db,0xc5da,0x3187,0x10a3,0xffdf,0xffff,0xffff,0xf77e,0xe6dd,0xffdf,0xce79,0x0000,0x62ed,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xef1e,0x4228,0x2104,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xf77e,0xdefb,0x0000,0x62cd,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0x4228,0x18e3,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xef3e,0xdefb,0x0000,0x62cd,0xef3e,0xe71c,0x7bef,0xd69a,0xf7be,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0x5acb,0x0000,0xffdf,0xffff,0xffff,0xf79e,0xc5ba,0xe6fd,0xc638,0x0000,0x7370,0xef3e,0xffff,0xe71c,0x630c,0x10a2,0x4a69,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xce1b,0xffff,0x738e,0x0000,0xd69a,0xffff,0xffff,0xf7bf,0xc5ba,0xe6dd,0xad55,0x0000,0x8c12,0xef3e,0xffff,0xf79e,0x1082,0x528a,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0xa534,0x0000,0x94b2,0xffff,0xffff,0xf7bf,0xc5ba,0xe6dd,0x9cf3,0x2104,0xbdd9,0xf79f,0xffff,0xffdf,0xf7be,0xffff,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xdedb,0x5aeb,0xbdf7,0xffff,0xffff,0xf77e,0xc5ba,0xe71d,0xffff,0xffff,0xffbf,0xde9c,0xc5fb,0xd67c,0xbdf7,0x4a69,0x0020,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xf79f,0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xef5e,0xffff,0xffff,0xffff,0xc5fb,0xd67c,0xef5e,0xa534,0x18e3,0x73ae,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xe71d,0xffff,0xffff,0xffff,0xffff,0xffff,0xef1e,0xce1b,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xde9c,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xd67c,0xc5da,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xa534,0x528a,0x4228,0x738e,0xe71c,0xffff,0xffff,0xffff,0xef3e,0xcdfb,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x0861,0x18c3,0x0000,0x18c3,0xdedb,0xffff,0xffff,0xffff,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x632c,0xf7be,0xffff,0xb5b6,0x0841,0x3186,0xffff,0xffff,0xffff,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0x10a2,0x20e4,0xdebc,0xffbf,0xffff,0xffff,0x73ae,0x0000,0xbdd7,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0x9474,0x0000,0x7370,0xc5ba,0xcdfb,0xf7bf,0xffff,0xd6ba,0x0000,0x6b6d,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0x7bd0,0x0000,0xd69a,0xef5e,0xc5db,0xce3b,0xffff,0xffff,0x1082,0x4a49,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xcdfb,0xce1b,0x6b6d,0x0000,0xf79e,0xffff,0xdedd,0xc5ba,0xef7e,0xffff,0x2104,0x4228,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe71d,0x5aeb,0x0000,0xffff,0xffff,0xf7bf,0xc5ba,0xdebd,0xffff,0x10a2,0x4a69,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xf79f,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xc5fb,0xd65c,0xe71c,0x0000,0x6b6d,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xffff,0x6b6d,0x0000,0xe73c,0xffff,0xffff,0xce1b,0xd65c,0x9cd3,0x0000,0xb596,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xdedb,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0x9492,0x0000,0xbdf7,0xffff,0xffff,0xc5fb,0xd67c,0x2965,0x1082,0xf7be,0xc5ba,0xde9c,0xd69a,0x0000,0x0841,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xbdf7,0x0000,0x8430,0xffff,0xffbf,0xc5ba,0x8c52,0x0000,0x8410,0xf7be,0x7370,0x2945,0x0000,0x0000,0x18c3,0x6b6d,0xb596,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xffdf,0xf7be,0x4228,0x6b4d,0xffff,0xe71d,0xbd79,0x18c3,0x1082,0x6b6d,0x10a2,0x0000,0x0861,0x632d,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xf77e,0xffff,0xffff,0xffff,0xffff,0xce3b,0x5aac,0x0000,0x0000,0x0000,0x2124,0x7370,0xbd9a,0xc5ba,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe6fd,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0x9cb4,0x0000,0x2945,0x8c33,0xc5ba,0xc5ba,0xcdfb,0xdebd,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xdebc,0xffff,0xffff,0xffff,0xcdfb,0xc5fb,0xdebd,0x9474,0xc5ba,0xc5fb,0xdebc,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xe71d,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xce3b,0xef5e,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xb596,0x9cf3,0x7bef,0x7bef,0x736e,0x73af,0xa514,0xad55,0xc638,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x632c,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0020,0x0000,0x18e3,0x632c,0xa514,0xc638,0xdefb,0xdefb,0xdefb,0xd69a,0xc638,0x9cf3,0x738e,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0020,0x18c3,0x9cd4,0xe6fd,0xe6dd,0xe6dd,0xe6dd,0xe6dd,0xef3e,0xef3e,0xf77e,0xffbf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x8c32,0x0000,0x4a2a,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce3b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5da,0xa4d6,0x0000,0x0000,0x4a49,0xb576,0xef7e,0xf7bf,0xf7bf,0xf79f,0xf77e,0xef1e,0xdebd,0xe6fd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5da,0xcdfb,0xef3e,0x94b2,0x1082,0x0000,0x0000,0x2104,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xde9c,0xffff,0xffff,0xef7d,0x94b2,0x4208,0x7bcf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf79f,0xc5ba,0xc5ba,0xd67c,0xef7e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5fb,0xc5ba,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xe71d,0xd65c,0xe6dd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x8410,0x18e3,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad55,0x52aa,0x0841,0x0000,0x0841,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xd69a,0xbdd7,0x94b2,0x6b4d,0x39c7,0x0020,0x0000,0x0000,0x2104,0x8c51,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x630d,0x9c94,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8410,0x4228,0x630c,0x8430,0xad35,0xc5fa,0xc5db,0xc5ba,0xc5db,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xf79f,0xef7e,0xe71d,0xdebc,0xd63c,0xc5da,0xc5ba,0xc5ba,0xce1b,0xe6fd,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xdebd,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xd65c,0xde9c,0xe6fd,0xef5e,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0x8c51,0x7bef,0x7bef,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xe6dd,0xe6dd,0x8c71,0x7bef,0x7bef,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xe6dd,0xe6dd,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff};
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-corgi b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-corgi
deleted file mode 100644
index 0b9b2571e1..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-corgi
+++ /dev/null
@@ -1,1304 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-
-#
-# Archimedes/A5000 Implementations (select only ONE)
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_COLLIE is not set
-# CONFIG_LOCOMO is not set
-# CONFIG_COLLIE_TS is not set
-# CONFIG_COLLIE_TR0 is not set
-# CONFIG_COLLIE_TR1 is not set
-# CONFIG_COLLIE_DEV is not set
-# CONFIG_COLLIE_G is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_H3XXX is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_H3600_SLEEVE is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_COTULLA_DMA is not set
-# CONFIG_SABINAL_DISCOVERY is not set
-# CONFIG_ARCH_SABINAL is not set
-# CONFIG_ARCH_PXA_POODLE is not set
-# CONFIG_POODLE_TR0 is not set
-CONFIG_ARCH_PXA_CORGI=y
-# CONFIG_CORGI_TR0 is not set
-CONFIG_CORGI_LCD_BUFF=y
-# CONFIG_ARCH_PXA_SHEPHERD is not set
-# CONFIG_ARCH_PXA_HUSKY is not set
-# CONFIG_ARCH_PXA_BOXER is not set
-# CONFIG_ARCH_PXA_TOSA is not set
-# CONFIG_ARCH_PXA_TOSA_SKIP is not set
-CONFIG_ARCH_SHARP_SL=y
-CONFIG_SL_CCCR_CHANGE=y
-# CONFIG_SL_CCCR242 is not set
-# CONFIG_SL_CCCR162 is not set
-
-#
-# Language type
-#
-CONFIG_ARCH_SHARP_SL_E=y
-# CONFIG_ARCH_SHARP_SL_V is not set
-# CONFIG_ARCH_SHARP_SL_G is not set
-# CONFIG_ARCH_SHARP_SL_J is not set
-# CONFIG_ARCH_SHARP_SL_S is not set
-# CONFIG_ARCH_SHARP_SL_I is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-
-#
-# Processor Type
-#
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_BATT=y
-CONFIG_XSCALE_CACHE_ERRATA=y
-CONFIG_ARM_THUMB=y
-# CONFIG_ARM_FCSE is not set
-# CONFIG_DISCONTIGMEM is not set
-# CONFIG_PREEMPT is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=y
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-
-#
-# At least one math emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-CONFIG_APM_CPU_IDLE=y
-CONFIG_APM_DISPLAY_BLANK=y
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="<see .oe file>"
-# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_FREEPG_SIGNAL=y
-CONFIG_OOM_KILL_SURVIVAL=y
-CONFIG_DEVICEINFO=m
-CONFIG_CORGI_DEVICEINFO=m
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-# CONFIG_MTD_GEN_PROBE is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_PXA_CERF is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_DISCOVERY is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PCI is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDROM_SA1100 is not set
-# CONFIG_MTD_MTDRAM_SA1100 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-# CONFIG_MTD_BLKMTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-CONFIG_MTD_NAND_POST_BADBLOCK=y
-# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
-CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
-CONFIG_MTD_NAND_PAGE_CACHE=y
-CONFIG_MTD_NAND_SHARP_SL_CORGI=y
-CONFIG_MTD_NAND_SHARP_SL=y
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-CONFIG_SYN_COOKIES=y
-
-#
-# IP: Netfilter Configuration
-#
-# CONFIG_IP_NF_CONNTRACK is not set
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=y
-# CONFIG_IP_NF_MATCH_LIMIT is not set
-# CONFIG_IP_NF_MATCH_MAC is not set
-# CONFIG_IP_NF_MATCH_MARK is not set
-# CONFIG_IP_NF_MATCH_MULTIPORT is not set
-# CONFIG_IP_NF_MATCH_TOS is not set
-# CONFIG_IP_NF_MATCH_AH_ESP is not set
-# CONFIG_IP_NF_MATCH_LENGTH is not set
-# CONFIG_IP_NF_MATCH_TTL is not set
-# CONFIG_IP_NF_MATCH_TCPMSS is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-# CONFIG_IP_NF_MANGLE is not set
-CONFIG_IP_NF_TARGET_LOG=y
-# CONFIG_IP_NF_TARGET_ULOG is not set
-# CONFIG_IP_NF_TARGET_TCPMSS is not set
-CONFIG_IPV6=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=y
-# CONFIG_IP6_NF_MATCH_LIMIT is not set
-# CONFIG_IP6_NF_MATCH_MAC is not set
-# CONFIG_IP6_NF_MATCH_MULTIPORT is not set
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-# CONFIG_IP6_NF_MATCH_MARK is not set
-CONFIG_IP6_NF_FILTER=y
-CONFIG_IP6_NF_TARGET_LOG=y
-# CONFIG_IP6_NF_MANGLE is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-CONFIG_IPSEC=m
-
-#
-# IPSec options (Openswan)
-#
-CONFIG_IPSEC_IPIP=y
-CONFIG_IPSEC_AH=y
-# CONFIG_IPSEC_AUTH_HMAC_MD5 is not set
-CONFIG_IPSEC_AUTH_HMAC_SHA1=y
-CONFIG_IPSEC_ESP=y
-CONFIG_IPSEC_ENC_3DES=y
-# CONFIG_IPSEC_ENC_AES is not set
-CONFIG_IPSEC_ALG=y
-CONFIG_IPSEC_IPCOMP=y
-CONFIG_IPSEC_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=y
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=y
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPP_DEFLATE is not set
-CONFIG_PPP_BSDCOMP=y
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-
-#
-# Wireless Pcmcia cards support
-#
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=y
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_NET_PCMCIA_RADIO is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=y
-
-#
-# IrDA protocols
-#
-# CONFIG_IRLAN is not set
-CONFIG_IRNET=m
-CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=y
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-# CONFIG_SCSI is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-# CONFIG_INPUT is not set
-# CONFIG_INPUT_KEYBDEV is not set
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-CONFIG_SERIAL_SL_SERIES=y
-# CONFIG_SL_TS_PRESSURE is not set
-# CONFIG_BOOT_PRESSURE_ON is not set
-CONFIG_SL7X0_POWER_KEY_OFF=y
-CONFIG_BOOT_POWER_KEY_OFF=y
-# CONFIG_SL_3BUTTON_PATCH is not set
-# CONFIG_BOOT_3BUTTON_PATCH_ON is not set
-# CONFIG_SL_WRITE_TS is not set
-# CONFIG_BLUETOOTH_SL is not set
-# CONFIG_KBD_DEV_FILE is not set
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-
-#
-# Other L3 adapters
-#
-# CONFIG_L3_SA1111 is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-
-#
-# Input core support is needed for gameports
-#
-
-#
-# Input core support is needed for joysticks
-#
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_INTEL_RNG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_COTULLA_RTC=y
-CONFIG_ADS7846_TS=y
-# CONFIG_TOSA_TS is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=y
-CONFIG_PCMCIA_CHRDEV=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FS_SYNC is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_NAND=y
-CONFIG_JFFS2_PROC_FS=y
-CONFIG_JFFS2_NODEMERGE=y
-CONFIG_JFFS2_DYNFRAGTREE=y
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-CONFIG_MINIX_FS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_POSIX=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-CONFIG_ZLIB_FS_INFLATE=y
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-CONFIG_NLS_CODEPAGE_932=y
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_UNICON is not set
-# CONFIG_FB_COLLIE is not set
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_COTULLA is not set
-# CONFIG_FB_POODLE is not set
-CONFIG_FB_CORGI=y
-# CONFIG_FB_TOSA is not set
-# CONFIG_SHARP_LOGO_SCREEN is not set
-# CONFIG_SL_SYSCLK100 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-CONFIG_FBCON_ROTATE_R=y
-# CONFIG_FBCON_ROTATE_L is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_COLLIE_SSP is not set
-# CONFIG_SOUND_COLLIE_TC35143 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-# CONFIG_SOUND_POODLE is not set
-CONFIG_SOUND_CORGI=y
-# CONFIG_SOUND_TOSA is not set
-# CONFIG_BUZZER_TOSA is not set
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-
-#
-# USB Controllers
-#
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SA1111 is not set
-# CONFIG_USB_OHCI_TC6393 is not set
-# CONFIG_USB_USE_INTERNAL_MEMORY is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_AUDIO is not set
-
-#
-# USB Bluetooth can only be used with disabled Bluetooth subsystem
-#
-
-#
-# SCSI support is needed for USB Storage
-#
-# CONFIG_USB_STORAGE is not set
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# USB Human Interface Devices (HID)
-#
-
-#
-# Input core support is needed for USB HID
-#
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-
-#
-# USB Multimedia devices
-#
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# USB Network adaptors
-#
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_RIO500 is not set
-
-#
-# USB Device Support
-#
-CONFIG_USBD=m
-CONFIG_USBD_VENDORID=04DD
-CONFIG_USBD_PRODUCTID=8007
-CONFIG_USBD_PRODUCT_NAME="SL-C700"
-CONFIG_USBD_MANUFACTURER="Sharp"
-# CONFIG_USBD_USE_SERIAL_NUMBER is not set
-CONFIG_USBD_SELFPOWERED=y
-CONFIG_USBD_MONITOR=m
-
-#
-#
-#
-# CONFIG_USBD_PROCFS is not set
-
-#
-# USB Device functions
-#
-
-#
-# Network Function
-#
-CONFIG_USBD_NET=m
-CONFIG_USBD_NET_VENDORID=04DD
-CONFIG_USBD_NET_PRODUCTID=8007
-CONFIG_USBD_NET_IFNAME="usbd"
-CONFIG_USBD_NET_OUT_ENDPOINT=1
-CONFIG_USBD_NET_OUT_PKTSIZE=64
-CONFIG_USBD_NET_IN_ENDPOINT=2
-CONFIG_USBD_NET_IN_PKTSIZE=64
-CONFIG_USBD_NET_INT_ENDPOINT=3
-CONFIG_USBD_NET_INT_PKTSIZE=16
-# CONFIG_USBD_NET_ALWAYSUP is not set
-# CONFIG_USBD_NET_SAFE is not set
-CONFIG_USBD_NET_MDLM=y
-# CONFIG_USBD_NET_CDC is not set
-CONFIG_USBD_NET_REMOTE_MACADDR="400001000002"
-CONFIG_USBD_NET_REMOTE_OUI=400002
-CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y
-CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-CONFIG_USBD_NET_LOCAL_OUI=400001
-
-#
-# Serial Function
-#
-# CONFIG_USBD_SERIAL is not set
-
-#
-# Mass Storage Function
-#
-CONFIG_USBD_STORAGE=m
-CONFIG_USBD_STORAGE_VENDORID=0000
-CONFIG_USBD_STORAGE_PRODUCTID=0000
-CONFIG_USBD_STORAGE_OUT_ENDPOINT=1
-CONFIG_USBD_STORAGE_OUT_PKTSIZE=64
-CONFIG_USBD_STORAGE_IN_ENDPOINT=2
-CONFIG_USBD_STORAGE_IN_PKTSIZE=64
-CONFIG_USBD_STORAGE_INT_ENDPOINT=3
-CONFIG_USBD_STORAGE_INT_PKTSIZE=16
-CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="SL-C700"
-
-#
-# USB Device bus interfaces
-#
-
-#
-# USB Device Bus Interface Support
-#
-CONFIG_USBD_PXA_BUS=m
-# CONFIG_USBD_GENERIC_BUS is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=y
-CONFIG_BLUEZ_L2CAP=y
-CONFIG_BLUEZ_SCO=y
-CONFIG_BLUEZ_RFCOMM=y
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=y
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-# CONFIG_BLUEZ_HIDP is not set
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-CONFIG_BLUEZ_HCIUSB_SCO=y
-CONFIG_BLUEZ_HCIUART=y
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y
-CONFIG_BLUEZ_HCIBFUSB=m
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-CONFIG_BLUEZ_HCIVHCI=m
-CONFIG_BLUEZ_BT950=m
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-husky b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-husky
deleted file mode 100644
index ddcc8bb9f1..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-husky
+++ /dev/null
@@ -1,1304 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-
-#
-# Archimedes/A5000 Implementations (select only ONE)
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_COLLIE is not set
-# CONFIG_LOCOMO is not set
-# CONFIG_COLLIE_TS is not set
-# CONFIG_COLLIE_TR0 is not set
-# CONFIG_COLLIE_TR1 is not set
-# CONFIG_COLLIE_DEV is not set
-# CONFIG_COLLIE_G is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_H3XXX is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_H3600_SLEEVE is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_COTULLA_DMA is not set
-# CONFIG_SABINAL_DISCOVERY is not set
-# CONFIG_ARCH_SABINAL is not set
-# CONFIG_ARCH_PXA_POODLE is not set
-# CONFIG_POODLE_TR0 is not set
-CONFIG_ARCH_PXA_CORGI=y
-# CONFIG_CORGI_TR0 is not set
-CONFIG_CORGI_LCD_BUFF=y
-CONFIG_ARCH_PXA_SHEPHERD=y
-CONFIG_ARCH_PXA_HUSKY=y
-CONFIG_ARCH_PXA_BOXER=y
-# CONFIG_ARCH_PXA_TOSA is not set
-# CONFIG_ARCH_PXA_TOSA_SKIP is not set
-CONFIG_ARCH_SHARP_SL=y
-CONFIG_SL_CCCR_CHANGE=y
-# CONFIG_SL_CCCR242 is not set
-# CONFIG_SL_CCCR162 is not set
-
-#
-# Language type
-#
-CONFIG_ARCH_SHARP_SL_E=y
-# CONFIG_ARCH_SHARP_SL_V is not set
-# CONFIG_ARCH_SHARP_SL_G is not set
-# CONFIG_ARCH_SHARP_SL_J is not set
-# CONFIG_ARCH_SHARP_SL_S is not set
-# CONFIG_ARCH_SHARP_SL_I is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-
-#
-# Processor Type
-#
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_BATT=y
-# CONFIG_XSCALE_CACHE_ERRATA is not set
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_FCSE=y
-# CONFIG_DISCONTIGMEM is not set
-# CONFIG_PREEMPT is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=y
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-
-#
-# At least one math emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-CONFIG_APM_CPU_IDLE=y
-CONFIG_APM_DISPLAY_BLANK=y
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="<see .oe file>"
-# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_FREEPG_SIGNAL=y
-CONFIG_OOM_KILL_SURVIVAL=y
-CONFIG_DEVICEINFO=m
-CONFIG_CORGI_DEVICEINFO=m
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-# CONFIG_MTD_GEN_PROBE is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_PXA_CERF is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_DISCOVERY is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PCI is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDROM_SA1100 is not set
-# CONFIG_MTD_MTDRAM_SA1100 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-# CONFIG_MTD_BLKMTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-CONFIG_MTD_NAND_POST_BADBLOCK=y
-# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
-CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
-CONFIG_MTD_NAND_PAGE_CACHE=y
-CONFIG_MTD_NAND_SHARP_SL_CORGI=y
-CONFIG_MTD_NAND_SHARP_SL=y
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-CONFIG_SYN_COOKIES=y
-
-#
-# IP: Netfilter Configuration
-#
-# CONFIG_IP_NF_CONNTRACK is not set
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=y
-# CONFIG_IP_NF_MATCH_LIMIT is not set
-# CONFIG_IP_NF_MATCH_MAC is not set
-# CONFIG_IP_NF_MATCH_MARK is not set
-# CONFIG_IP_NF_MATCH_MULTIPORT is not set
-# CONFIG_IP_NF_MATCH_TOS is not set
-# CONFIG_IP_NF_MATCH_AH_ESP is not set
-# CONFIG_IP_NF_MATCH_LENGTH is not set
-# CONFIG_IP_NF_MATCH_TTL is not set
-# CONFIG_IP_NF_MATCH_TCPMSS is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-# CONFIG_IP_NF_MANGLE is not set
-CONFIG_IP_NF_TARGET_LOG=y
-# CONFIG_IP_NF_TARGET_ULOG is not set
-# CONFIG_IP_NF_TARGET_TCPMSS is not set
-CONFIG_IPV6=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=y
-# CONFIG_IP6_NF_MATCH_LIMIT is not set
-# CONFIG_IP6_NF_MATCH_MAC is not set
-# CONFIG_IP6_NF_MATCH_MULTIPORT is not set
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-# CONFIG_IP6_NF_MATCH_MARK is not set
-CONFIG_IP6_NF_FILTER=y
-CONFIG_IP6_NF_TARGET_LOG=y
-# CONFIG_IP6_NF_MANGLE is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-CONFIG_IPSEC=m
-
-#
-# IPSec options (Openswan)
-#
-CONFIG_IPSEC_IPIP=y
-CONFIG_IPSEC_AH=y
-# CONFIG_IPSEC_AUTH_HMAC_MD5 is not set
-CONFIG_IPSEC_AUTH_HMAC_SHA1=y
-CONFIG_IPSEC_ESP=y
-CONFIG_IPSEC_ENC_3DES=y
-# CONFIG_IPSEC_ENC_AES is not set
-CONFIG_IPSEC_ALG=y
-CONFIG_IPSEC_IPCOMP=y
-CONFIG_IPSEC_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=y
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=y
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPP_DEFLATE is not set
-CONFIG_PPP_BSDCOMP=y
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-
-#
-# Wireless Pcmcia cards support
-#
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=y
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_NET_PCMCIA_RADIO is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=y
-
-#
-# IrDA protocols
-#
-# CONFIG_IRLAN is not set
-CONFIG_IRNET=m
-CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=y
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-# CONFIG_SCSI is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-# CONFIG_INPUT is not set
-# CONFIG_INPUT_KEYBDEV is not set
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-CONFIG_SERIAL_SL_SERIES=y
-# CONFIG_SL_TS_PRESSURE is not set
-# CONFIG_BOOT_PRESSURE_ON is not set
-CONFIG_SL7X0_POWER_KEY_OFF=y
-CONFIG_BOOT_POWER_KEY_OFF=y
-# CONFIG_SL_3BUTTON_PATCH is not set
-# CONFIG_BOOT_3BUTTON_PATCH_ON is not set
-# CONFIG_SL_WRITE_TS is not set
-# CONFIG_BLUETOOTH_SL is not set
-# CONFIG_KBD_DEV_FILE is not set
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-
-#
-# Other L3 adapters
-#
-# CONFIG_L3_SA1111 is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-
-#
-# Input core support is needed for gameports
-#
-
-#
-# Input core support is needed for joysticks
-#
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_INTEL_RNG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_COTULLA_RTC=y
-CONFIG_ADS7846_TS=y
-# CONFIG_TOSA_TS is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=y
-CONFIG_PCMCIA_CHRDEV=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FS_SYNC is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_NAND=y
-CONFIG_JFFS2_PROC_FS=y
-CONFIG_JFFS2_NODEMERGE=y
-CONFIG_JFFS2_DYNFRAGTREE=y
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-CONFIG_MINIX_FS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_POSIX=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-CONFIG_ZLIB_FS_INFLATE=y
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-CONFIG_NLS_CODEPAGE_932=y
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_UNICON is not set
-# CONFIG_FB_COLLIE is not set
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_COTULLA is not set
-# CONFIG_FB_POODLE is not set
-CONFIG_FB_CORGI=y
-# CONFIG_FB_TOSA is not set
-# CONFIG_SHARP_LOGO_SCREEN is not set
-# CONFIG_SL_SYSCLK100 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-CONFIG_FBCON_ROTATE_R=y
-# CONFIG_FBCON_ROTATE_L is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_COLLIE_SSP is not set
-# CONFIG_SOUND_COLLIE_TC35143 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-# CONFIG_SOUND_POODLE is not set
-CONFIG_SOUND_CORGI=y
-# CONFIG_SOUND_TOSA is not set
-# CONFIG_BUZZER_TOSA is not set
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-
-#
-# USB Controllers
-#
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SA1111 is not set
-# CONFIG_USB_OHCI_TC6393 is not set
-# CONFIG_USB_USE_INTERNAL_MEMORY is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_AUDIO is not set
-
-#
-# USB Bluetooth can only be used with disabled Bluetooth subsystem
-#
-
-#
-# SCSI support is needed for USB Storage
-#
-# CONFIG_USB_STORAGE is not set
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# USB Human Interface Devices (HID)
-#
-
-#
-# Input core support is needed for USB HID
-#
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-
-#
-# USB Multimedia devices
-#
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# USB Network adaptors
-#
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_RIO500 is not set
-
-#
-# USB Device Support
-#
-CONFIG_USBD=m
-CONFIG_USBD_VENDORID=04DD
-CONFIG_USBD_PRODUCTID=8007
-CONFIG_USBD_PRODUCT_NAME="SL-C750"
-CONFIG_USBD_MANUFACTURER="Sharp"
-# CONFIG_USBD_USE_SERIAL_NUMBER is not set
-CONFIG_USBD_SELFPOWERED=y
-CONFIG_USBD_MONITOR=m
-
-#
-#
-#
-# CONFIG_USBD_PROCFS is not set
-
-#
-# USB Device functions
-#
-
-#
-# Network Function
-#
-CONFIG_USBD_NET=m
-CONFIG_USBD_NET_VENDORID=04DD
-CONFIG_USBD_NET_PRODUCTID=8007
-CONFIG_USBD_NET_IFNAME="usbd"
-CONFIG_USBD_NET_OUT_ENDPOINT=1
-CONFIG_USBD_NET_OUT_PKTSIZE=64
-CONFIG_USBD_NET_IN_ENDPOINT=2
-CONFIG_USBD_NET_IN_PKTSIZE=64
-CONFIG_USBD_NET_INT_ENDPOINT=3
-CONFIG_USBD_NET_INT_PKTSIZE=16
-# CONFIG_USBD_NET_ALWAYSUP is not set
-# CONFIG_USBD_NET_SAFE is not set
-CONFIG_USBD_NET_MDLM=y
-# CONFIG_USBD_NET_CDC is not set
-CONFIG_USBD_NET_REMOTE_MACADDR="400001000002"
-CONFIG_USBD_NET_REMOTE_OUI=400002
-CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y
-CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-CONFIG_USBD_NET_LOCAL_OUI=400001
-
-#
-# Serial Function
-#
-# CONFIG_USBD_SERIAL is not set
-
-#
-# Mass Storage Function
-#
-CONFIG_USBD_STORAGE=m
-CONFIG_USBD_STORAGE_VENDORID=0000
-CONFIG_USBD_STORAGE_PRODUCTID=0000
-CONFIG_USBD_STORAGE_OUT_ENDPOINT=1
-CONFIG_USBD_STORAGE_OUT_PKTSIZE=64
-CONFIG_USBD_STORAGE_IN_ENDPOINT=2
-CONFIG_USBD_STORAGE_IN_PKTSIZE=64
-CONFIG_USBD_STORAGE_INT_ENDPOINT=3
-CONFIG_USBD_STORAGE_INT_PKTSIZE=16
-CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="SL-C760"
-
-#
-# USB Device bus interfaces
-#
-
-#
-# USB Device Bus Interface Support
-#
-CONFIG_USBD_PXA_BUS=m
-# CONFIG_USBD_GENERIC_BUS is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=y
-CONFIG_BLUEZ_L2CAP=y
-CONFIG_BLUEZ_SCO=y
-CONFIG_BLUEZ_RFCOMM=y
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=y
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-# CONFIG_BLUEZ_HIDP is not set
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-CONFIG_BLUEZ_HCIUSB_SCO=y
-CONFIG_BLUEZ_HCIUART=y
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y
-CONFIG_BLUEZ_HCIBFUSB=m
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-CONFIG_BLUEZ_HCIVHCI=m
-CONFIG_BLUEZ_BT950=m
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle
deleted file mode 100644
index e318a9f427..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle
+++ /dev/null
@@ -1,1158 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_COLLIE is not set
-# CONFIG_LOCOMO is not set
-# CONFIG_COLLIE_TS is not set
-# CONFIG_COLLIE_TR0 is not set
-# CONFIG_COLLIE_TR1 is not set
-# CONFIG_COLLIE_DEV is not set
-# CONFIG_COLLIE_G is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_H3XXX is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_H3600_SLEEVE is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_COTULLA_DMA is not set
-# CONFIG_SABINAL_DISCOVERY is not set
-# CONFIG_ARCH_SABINAL is not set
-CONFIG_ARCH_PXA_POODLE=y
-# CONFIG_POODLE_TR0 is not set
-# CONFIG_ARCH_PXA_CORGI is not set
-# CONFIG_CORGI_TR0 is not set
-# CONFIG_CORGI_LCD_BUFF is not set
-# CONFIG_ARCH_PXA_SHEPHERD is not set
-# CONFIG_ARCH_PXA_HUSKY is not set
-# CONFIG_ARCH_PXA_BOXER is not set
-# CONFIG_ARCH_PXA_TOSA is not set
-# CONFIG_ARCH_PXA_TOSA_SKIP is not set
-CONFIG_ARCH_SHARP_SL=y
-CONFIG_SL_CCCR_CHANGE=y
-CONFIG_SL_CCCR242=y
-CONFIG_ARCH_SHARP_SL_E=y
-# CONFIG_ARCH_SHARP_SL_V is not set
-# CONFIG_ARCH_SHARP_SL_G is not set
-# CONFIG_ARCH_SHARP_SL_J is not set
-# CONFIG_ARCH_SHARP_SL_S is not set
-# CONFIG_ARCH_SHARP_SL_I is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_BATT=y
-CONFIG_XSCALE_CACHE_ERRATA=y
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_FCSE=y
-# CONFIG_DISCONTIGMEM is not set
-# CONFIG_PREEMPT is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=y
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-CONFIG_BINFMT_AOUT=y
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-CONFIG_APM_CPU_IDLE=y
-CONFIG_APM_DISPLAY_BLANK=y
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="<see .oe file>"
-# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_FREEPG_SIGNAL=y
-CONFIG_OOM_KILL_SURVIVAL=y
-CONFIG_DEVICEINFO=m
-CONFIG_POODLE_DEVICEINFO=m
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-# CONFIG_MTD_GEN_PROBE is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_PXA_CERF is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_DISCOVERY is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PCI is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDROM_SA1100 is not set
-# CONFIG_MTD_MTDRAM_SA1100 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-CONFIG_MTD_NAND_POST_BADBLOCK=y
-# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
-CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
-CONFIG_MTD_NAND_PAGE_CACHE=y
-CONFIG_MTD_NAND_SHARP_SL_POODLE=y
-CONFIG_MTD_NAND_SHARP_SL=y
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-# CONFIG_IP_NF_CONNTRACK is not set
-# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
-# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-# CONFIG_IPV6 is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-# CONFIG_IPSEC is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=y
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=y
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPP_DEFLATE is not set
-CONFIG_PPP_BSDCOMP=y
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=y
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_NET_PCMCIA_RADIO is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=y
-# CONFIG_IRLAN is not set
-CONFIG_IRNET=m
-CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-CONFIG_IRTTY_SIR=y
-# CONFIG_IRPORT_SIR is not set
-# CONFIG_DONGLE is not set
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-# CONFIG_SCSI is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-CONFIG_SERIAL_SL_SERIES=y
-# CONFIG_SL_TS_PRESSURE is not set
-# CONFIG_BOOT_PRESSURE_ON is not set
-# CONFIG_SL7X0_POWER_KEY_OFF is not set
-# CONFIG_BOOT_POWER_KEY_OFF is not set
-# CONFIG_SL_3BUTTON_PATCH is not set
-# CONFIG_BOOT_3BUTTON_PATCH_ON is not set
-# CONFIG_SL_WRITE_TS is not set
-# CONFIG_BLUETOOTH_SL is not set
-# CONFIG_KBD_DEV_FILE is not set
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-# CONFIG_L3_SA1111 is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-# CONFIG_INPUT_SERIO is not set
-# CONFIG_INPUT_SERPORT is not set
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_INTEL_RNG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_COTULLA_RTC=y
-CONFIG_ADS7846_TS=y
-# CONFIG_TOSA_TS is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=y
-CONFIG_PCMCIA_CHRDEV=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FS_SYNC is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_NAND=y
-CONFIG_JFFS2_PROC_FS=y
-CONFIG_JFFS2_NODEMERGE=y
-CONFIG_JFFS2_DYNFRAGTREE=y
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-CONFIG_MINIX_FS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_POSIX=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-CONFIG_ZLIB_FS_INFLATE=y
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-CONFIG_NLS_CODEPAGE_932=y
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_UNICON is not set
-# CONFIG_FB_COLLIE is not set
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_COTULLA is not set
-CONFIG_FB_POODLE=y
-CONFIG_POODLE_CONSISTENT_ALLOC=y
-# CONFIG_FB_CORGI is not set
-# CONFIG_FB_TOSA is not set
-# CONFIG_SHARP_LOGO_SCREEN is not set
-# CONFIG_SL_SYSCLK100 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-CONFIG_FBCON_ROTATE_R=y
-# CONFIG_FBCON_ROTATE_L is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_5x8 is not set
-CONFIG_FONT_4x6=y
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_COLLIE_SSP is not set
-# CONFIG_SOUND_COLLIE_TC35143 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-CONFIG_SOUND_POODLE=y
-# CONFIG_SOUND_CORGI is not set
-# CONFIG_SOUND_TOSA is not set
-# CONFIG_BUZZER_TOSA is not set
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SA1111 is not set
-# CONFIG_USB_OHCI_TC6393 is not set
-# CONFIG_USB_USE_INTERNAL_MEMORY is not set
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_STORAGE is not set
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_HID is not set
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_RIO500 is not set
-
-#
-# USB Device Support
-#
-CONFIG_USBD=m
-CONFIG_USBD_VENDORID=04DD
-CONFIG_USBD_PRODUCTID=8006
-CONFIG_USBD_PRODUCT_NAME="SL-5600"
-CONFIG_USBD_MANUFACTURER="Sharp"
-# CONFIG_USBD_USE_SERIAL_NUMBER is not set
-CONFIG_USBD_SELFPOWERED=y
-CONFIG_USBD_MONITOR=m
-# CONFIG_USBD_PROCFS is not set
-
-#
-# Network Function
-#
-CONFIG_USBD_NET=m
-CONFIG_USBD_NET_VENDORID=04DD
-CONFIG_USBD_NET_PRODUCTID=8006
-CONFIG_USBD_NET_IFNAME="usbd"
-CONFIG_USBD_NET_OUT_ENDPOINT=1
-CONFIG_USBD_NET_OUT_PKTSIZE=64
-CONFIG_USBD_NET_IN_ENDPOINT=2
-CONFIG_USBD_NET_IN_PKTSIZE=64
-CONFIG_USBD_NET_INT_ENDPOINT=3
-CONFIG_USBD_NET_INT_PKTSIZE=16
-# CONFIG_USBD_NET_ALWAYSUP is not set
-# CONFIG_USBD_NET_SAFE is not set
-CONFIG_USBD_NET_MDLM=y
-# CONFIG_USBD_NET_CDC is not set
-CONFIG_USBD_NET_REMOTE_MACADDR="400001000002"
-CONFIG_USBD_NET_REMOTE_OUI=400002
-CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y
-CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-CONFIG_USBD_NET_LOCAL_OUI=400001
-
-#
-# Serial Function
-#
-# CONFIG_USBD_SERIAL is not set
-
-#
-# Mass Storage Function
-#
-CONFIG_USBD_STORAGE=m
-CONFIG_USBD_STORAGE_VENDORID=0000
-CONFIG_USBD_STORAGE_PRODUCTID=0000
-CONFIG_USBD_STORAGE_OUT_ENDPOINT=1
-CONFIG_USBD_STORAGE_OUT_PKTSIZE=64
-CONFIG_USBD_STORAGE_IN_ENDPOINT=2
-CONFIG_USBD_STORAGE_IN_PKTSIZE=64
-CONFIG_USBD_STORAGE_INT_ENDPOINT=3
-CONFIG_USBD_STORAGE_INT_PKTSIZE=16
-CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="/dev/hda1"
-
-#
-# USB Device Bus Interface Support
-#
-CONFIG_USBD_PXA_BUS=m
-# CONFIG_USBD_GENERIC_BUS is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-# CONFIG_BLUEZ_HIDP is not set
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-CONFIG_BLUEZ_HCIUSB_SCO=y
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y
-CONFIG_BLUEZ_HCIBFUSB=m
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-CONFIG_BLUEZ_HCIVHCI=m
-CONFIG_BLUEZ_BT950=m
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle255 b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle255
deleted file mode 100644
index 5115729ed7..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle255
+++ /dev/null
@@ -1,1158 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_COLLIE is not set
-# CONFIG_LOCOMO is not set
-# CONFIG_COLLIE_TS is not set
-# CONFIG_COLLIE_TR0 is not set
-# CONFIG_COLLIE_TR1 is not set
-# CONFIG_COLLIE_DEV is not set
-# CONFIG_COLLIE_G is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_H3XXX is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_H3600_SLEEVE is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_COTULLA_DMA is not set
-# CONFIG_SABINAL_DISCOVERY is not set
-# CONFIG_ARCH_SABINAL is not set
-CONFIG_ARCH_PXA_POODLE=y
-# CONFIG_POODLE_TR0 is not set
-# CONFIG_ARCH_PXA_CORGI is not set
-# CONFIG_CORGI_TR0 is not set
-# CONFIG_CORGI_LCD_BUFF is not set
-# CONFIG_ARCH_PXA_SHEPHERD is not set
-# CONFIG_ARCH_PXA_HUSKY is not set
-# CONFIG_ARCH_PXA_BOXER is not set
-# CONFIG_ARCH_PXA_TOSA is not set
-# CONFIG_ARCH_PXA_TOSA_SKIP is not set
-CONFIG_ARCH_SHARP_SL=y
-CONFIG_SL_CCCR_CHANGE=y
-CONFIG_SL_CCCR242=y
-CONFIG_ARCH_SHARP_SL_E=y
-# CONFIG_ARCH_SHARP_SL_V is not set
-# CONFIG_ARCH_SHARP_SL_G is not set
-# CONFIG_ARCH_SHARP_SL_J is not set
-# CONFIG_ARCH_SHARP_SL_S is not set
-# CONFIG_ARCH_SHARP_SL_I is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_BATT=y
-#CONFIG_XSCALE_CACHE_ERRATA is not set
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_FCSE=y
-# CONFIG_DISCONTIGMEM is not set
-# CONFIG_PREEMPT is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=y
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-CONFIG_BINFMT_AOUT=y
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-CONFIG_APM_CPU_IDLE=y
-CONFIG_APM_DISPLAY_BLANK=y
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="<see .oe file>"
-# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_FREEPG_SIGNAL=y
-CONFIG_OOM_KILL_SURVIVAL=y
-CONFIG_DEVICEINFO=m
-CONFIG_POODLE_DEVICEINFO=m
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-# CONFIG_MTD_GEN_PROBE is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_PXA_CERF is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_DISCOVERY is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PCI is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDROM_SA1100 is not set
-# CONFIG_MTD_MTDRAM_SA1100 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-CONFIG_MTD_NAND_POST_BADBLOCK=y
-# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
-CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
-CONFIG_MTD_NAND_PAGE_CACHE=y
-CONFIG_MTD_NAND_SHARP_SL_POODLE=y
-CONFIG_MTD_NAND_SHARP_SL=y
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-# CONFIG_IP_NF_CONNTRACK is not set
-# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
-# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-# CONFIG_IPV6 is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-# CONFIG_IPSEC is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=y
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=y
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPP_DEFLATE is not set
-CONFIG_PPP_BSDCOMP=y
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=y
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_NET_PCMCIA_RADIO is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=y
-# CONFIG_IRLAN is not set
-CONFIG_IRNET=m
-CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-CONFIG_IRTTY_SIR=y
-# CONFIG_IRPORT_SIR is not set
-# CONFIG_DONGLE is not set
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-# CONFIG_SCSI is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-CONFIG_SERIAL_SL_SERIES=y
-# CONFIG_SL_TS_PRESSURE is not set
-# CONFIG_BOOT_PRESSURE_ON is not set
-# CONFIG_SL7X0_POWER_KEY_OFF is not set
-# CONFIG_BOOT_POWER_KEY_OFF is not set
-# CONFIG_SL_3BUTTON_PATCH is not set
-# CONFIG_BOOT_3BUTTON_PATCH_ON is not set
-# CONFIG_SL_WRITE_TS is not set
-# CONFIG_BLUETOOTH_SL is not set
-# CONFIG_KBD_DEV_FILE is not set
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-# CONFIG_L3_SA1111 is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-# CONFIG_INPUT_SERIO is not set
-# CONFIG_INPUT_SERPORT is not set
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_INTEL_RNG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_COTULLA_RTC=y
-CONFIG_ADS7846_TS=y
-# CONFIG_TOSA_TS is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=y
-CONFIG_PCMCIA_CHRDEV=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FS_SYNC is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_NAND=y
-CONFIG_JFFS2_PROC_FS=y
-CONFIG_JFFS2_NODEMERGE=y
-CONFIG_JFFS2_DYNFRAGTREE=y
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-CONFIG_MINIX_FS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_POSIX=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-CONFIG_ZLIB_FS_INFLATE=y
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-CONFIG_NLS_CODEPAGE_932=y
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_UNICON is not set
-# CONFIG_FB_COLLIE is not set
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_COTULLA is not set
-CONFIG_FB_POODLE=y
-CONFIG_POODLE_CONSISTENT_ALLOC=y
-# CONFIG_FB_CORGI is not set
-# CONFIG_FB_TOSA is not set
-# CONFIG_SHARP_LOGO_SCREEN is not set
-# CONFIG_SL_SYSCLK100 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-CONFIG_FBCON_ROTATE_R=y
-# CONFIG_FBCON_ROTATE_L is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_5x8 is not set
-CONFIG_FONT_4x6=y
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_COLLIE_SSP is not set
-# CONFIG_SOUND_COLLIE_TC35143 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-CONFIG_SOUND_POODLE=y
-# CONFIG_SOUND_CORGI is not set
-# CONFIG_SOUND_TOSA is not set
-# CONFIG_BUZZER_TOSA is not set
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SA1111 is not set
-# CONFIG_USB_OHCI_TC6393 is not set
-# CONFIG_USB_USE_INTERNAL_MEMORY is not set
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_STORAGE is not set
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_HID is not set
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_RIO500 is not set
-
-#
-# USB Device Support
-#
-CONFIG_USBD=m
-CONFIG_USBD_VENDORID=04DD
-CONFIG_USBD_PRODUCTID=8006
-CONFIG_USBD_PRODUCT_NAME="SL-5600"
-CONFIG_USBD_MANUFACTURER="Sharp"
-# CONFIG_USBD_USE_SERIAL_NUMBER is not set
-CONFIG_USBD_SELFPOWERED=y
-CONFIG_USBD_MONITOR=m
-# CONFIG_USBD_PROCFS is not set
-
-#
-# Network Function
-#
-CONFIG_USBD_NET=m
-CONFIG_USBD_NET_VENDORID=04DD
-CONFIG_USBD_NET_PRODUCTID=8006
-CONFIG_USBD_NET_IFNAME="usbd"
-CONFIG_USBD_NET_OUT_ENDPOINT=1
-CONFIG_USBD_NET_OUT_PKTSIZE=64
-CONFIG_USBD_NET_IN_ENDPOINT=2
-CONFIG_USBD_NET_IN_PKTSIZE=64
-CONFIG_USBD_NET_INT_ENDPOINT=3
-CONFIG_USBD_NET_INT_PKTSIZE=16
-# CONFIG_USBD_NET_ALWAYSUP is not set
-# CONFIG_USBD_NET_SAFE is not set
-CONFIG_USBD_NET_MDLM=y
-# CONFIG_USBD_NET_CDC is not set
-CONFIG_USBD_NET_REMOTE_MACADDR="400001000002"
-CONFIG_USBD_NET_REMOTE_OUI=400002
-CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y
-CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-CONFIG_USBD_NET_LOCAL_OUI=400001
-
-#
-# Serial Function
-#
-# CONFIG_USBD_SERIAL is not set
-
-#
-# Mass Storage Function
-#
-CONFIG_USBD_STORAGE=m
-CONFIG_USBD_STORAGE_VENDORID=0000
-CONFIG_USBD_STORAGE_PRODUCTID=0000
-CONFIG_USBD_STORAGE_OUT_ENDPOINT=1
-CONFIG_USBD_STORAGE_OUT_PKTSIZE=64
-CONFIG_USBD_STORAGE_IN_ENDPOINT=2
-CONFIG_USBD_STORAGE_IN_PKTSIZE=64
-CONFIG_USBD_STORAGE_INT_ENDPOINT=3
-CONFIG_USBD_STORAGE_INT_PKTSIZE=16
-CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="/dev/hda1"
-
-#
-# USB Device Bus Interface Support
-#
-CONFIG_USBD_PXA_BUS=m
-# CONFIG_USBD_GENERIC_BUS is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-# CONFIG_BLUEZ_HIDP is not set
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-CONFIG_BLUEZ_HCIUSB_SCO=y
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y
-CONFIG_BLUEZ_HCIBFUSB=m
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-CONFIG_BLUEZ_HCIVHCI=m
-CONFIG_BLUEZ_BT950=m
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-shepherd b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-shepherd
deleted file mode 100644
index 72da41cf56..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-shepherd
+++ /dev/null
@@ -1,1303 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-
-#
-# Archimedes/A5000 Implementations (select only ONE)
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_COLLIE is not set
-# CONFIG_LOCOMO is not set
-# CONFIG_COLLIE_TS is not set
-# CONFIG_COLLIE_TR0 is not set
-# CONFIG_COLLIE_TR1 is not set
-# CONFIG_COLLIE_DEV is not set
-# CONFIG_COLLIE_G is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_H3XXX is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_H3600_SLEEVE is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_COTULLA_DMA is not set
-# CONFIG_SABINAL_DISCOVERY is not set
-# CONFIG_ARCH_SABINAL is not set
-# CONFIG_ARCH_PXA_POODLE is not set
-# CONFIG_POODLE_TR0 is not set
-CONFIG_ARCH_PXA_CORGI=y
-# CONFIG_CORGI_TR0 is not set
-CONFIG_CORGI_LCD_BUFF=y
-CONFIG_ARCH_PXA_SHEPHERD=y
-# CONFIG_ARCH_PXA_HUSKY is not set
-# CONFIG_ARCH_PXA_BOXER is not set
-# CONFIG_ARCH_PXA_TOSA is not set
-# CONFIG_ARCH_PXA_TOSA_SKIP is not set
-CONFIG_ARCH_SHARP_SL=y
-CONFIG_SL_CCCR_CHANGE=y
-# CONFIG_SL_CCCR242 is not set
-# CONFIG_SL_CCCR162 is not set
-
-#
-# Language type
-#
-CONFIG_ARCH_SHARP_SL_E=y
-# CONFIG_ARCH_SHARP_SL_V is not set
-# CONFIG_ARCH_SHARP_SL_G is not set
-# CONFIG_ARCH_SHARP_SL_J is not set
-# CONFIG_ARCH_SHARP_SL_S is not set
-# CONFIG_ARCH_SHARP_SL_I is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-
-#
-# Processor Type
-#
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_BATT=y
-# CONFIG_XSCALE_CACHE_ERRATA is not set
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_FCSE=y
-# CONFIG_DISCONTIGMEM is not set
-# CONFIG_PREEMPT is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=y
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-
-#
-# At least one math emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-CONFIG_APM_CPU_IDLE=y
-CONFIG_APM_DISPLAY_BLANK=y
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="<see .oe file>"
-# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_FREEPG_SIGNAL=y
-CONFIG_OOM_KILL_SURVIVAL=y
-CONFIG_DEVICEINFO=m
-CONFIG_CORGI_DEVICEINFO=m
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-# CONFIG_MTD_GEN_PROBE is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_PXA_CERF is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_DISCOVERY is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PCI is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDROM_SA1100 is not set
-# CONFIG_MTD_MTDRAM_SA1100 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-# CONFIG_MTD_BLKMTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-CONFIG_MTD_NAND_POST_BADBLOCK=y
-# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
-CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
-CONFIG_MTD_NAND_PAGE_CACHE=y
-CONFIG_MTD_NAND_SHARP_SL_CORGI=y
-CONFIG_MTD_NAND_SHARP_SL=y
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-CONFIG_SYN_COOKIES=y
-
-#
-# IP: Netfilter Configuration
-#
-# CONFIG_IP_NF_CONNTRACK is not set
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=y
-# CONFIG_IP_NF_MATCH_LIMIT is not set
-# CONFIG_IP_NF_MATCH_MAC is not set
-# CONFIG_IP_NF_MATCH_MARK is not set
-# CONFIG_IP_NF_MATCH_MULTIPORT is not set
-# CONFIG_IP_NF_MATCH_TOS is not set
-# CONFIG_IP_NF_MATCH_AH_ESP is not set
-# CONFIG_IP_NF_MATCH_LENGTH is not set
-# CONFIG_IP_NF_MATCH_TTL is not set
-# CONFIG_IP_NF_MATCH_TCPMSS is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-# CONFIG_IP_NF_MANGLE is not set
-CONFIG_IP_NF_TARGET_LOG=y
-# CONFIG_IP_NF_TARGET_ULOG is not set
-# CONFIG_IP_NF_TARGET_TCPMSS is not set
-CONFIG_IPV6=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=y
-# CONFIG_IP6_NF_MATCH_LIMIT is not set
-# CONFIG_IP6_NF_MATCH_MAC is not set
-# CONFIG_IP6_NF_MATCH_MULTIPORT is not set
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-# CONFIG_IP6_NF_MATCH_MARK is not set
-CONFIG_IP6_NF_FILTER=y
-CONFIG_IP6_NF_TARGET_LOG=y
-# CONFIG_IP6_NF_MANGLE is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-CONFIG_IPSEC=m
-
-#
-# IPSec options (Openswan)
-#
-CONFIG_IPSEC_IPIP=y
-CONFIG_IPSEC_AH=y
-# CONFIG_IPSEC_AUTH_HMAC_MD5 is not set
-CONFIG_IPSEC_AUTH_HMAC_SHA1=y
-CONFIG_IPSEC_ESP=y
-CONFIG_IPSEC_ENC_3DES=y
-# CONFIG_IPSEC_ENC_AES is not set
-CONFIG_IPSEC_ALG=y
-CONFIG_IPSEC_IPCOMP=y
-CONFIG_IPSEC_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=y
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=y
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPP_DEFLATE is not set
-CONFIG_PPP_BSDCOMP=y
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-
-#
-# Wireless Pcmcia cards support
-#
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=y
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_NET_PCMCIA_RADIO is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=y
-
-#
-# IrDA protocols
-#
-# CONFIG_IRLAN is not set
-CONFIG_IRNET=m
-CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=y
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-# CONFIG_SCSI is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-# CONFIG_INPUT is not set
-# CONFIG_INPUT_KEYBDEV is not set
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-CONFIG_SERIAL_SL_SERIES=y
-# CONFIG_SL_TS_PRESSURE is not set
-# CONFIG_BOOT_PRESSURE_ON is not set
-CONFIG_SL7X0_POWER_KEY_OFF=y
-CONFIG_BOOT_POWER_KEY_OFF=y
-# CONFIG_SL_3BUTTON_PATCH is not set
-# CONFIG_BOOT_3BUTTON_PATCH_ON is not set
-# CONFIG_SL_WRITE_TS is not set
-# CONFIG_BLUETOOTH_SL is not set
-# CONFIG_KBD_DEV_FILE is not set
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-
-#
-# Other L3 adapters
-#
-# CONFIG_L3_SA1111 is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-
-#
-# Input core support is needed for gameports
-#
-
-#
-# Input core support is needed for joysticks
-#
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_INTEL_RNG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_COTULLA_RTC=y
-CONFIG_ADS7846_TS=y
-# CONFIG_TOSA_TS is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=y
-CONFIG_PCMCIA_CHRDEV=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FS_SYNC is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_NAND=y
-CONFIG_JFFS2_PROC_FS=y
-CONFIG_JFFS2_NODEMERGE=y
-CONFIG_JFFS2_DYNFRAGTREE=y
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-CONFIG_MINIX_FS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_POSIX=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-CONFIG_ZLIB_FS_INFLATE=y
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-CONFIG_NLS_CODEPAGE_932=y
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_UNICON is not set
-# CONFIG_FB_COLLIE is not set
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_COTULLA is not set
-# CONFIG_FB_POODLE is not set
-CONFIG_FB_CORGI=y
-# CONFIG_FB_TOSA is not set
-# CONFIG_SHARP_LOGO_SCREEN is not set
-# CONFIG_SL_SYSCLK100 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-CONFIG_FBCON_ROTATE_R=y
-# CONFIG_FBCON_ROTATE_L is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_COLLIE_SSP is not set
-# CONFIG_SOUND_COLLIE_TC35143 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-# CONFIG_SOUND_POODLE is not set
-CONFIG_SOUND_CORGI=y
-# CONFIG_SOUND_TOSA is not set
-# CONFIG_BUZZER_TOSA is not set
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-
-#
-# USB Controllers
-#
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SA1111 is not set
-# CONFIG_USB_OHCI_TC6393 is not set
-# CONFIG_USB_USE_INTERNAL_MEMORY is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_AUDIO is not set
-
-#
-# USB Bluetooth can only be used with disabled Bluetooth subsystem
-#
-
-#
-# SCSI support is needed for USB Storage
-#
-# CONFIG_USB_STORAGE is not set
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# USB Human Interface Devices (HID)
-#
-
-#
-# Input core support is needed for USB HID
-#
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-
-#
-# USB Multimedia devices
-#
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# USB Network adaptors
-#
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_RIO500 is not set
-
-#
-# USB Device Support
-#
-CONFIG_USBD=m
-CONFIG_USBD_VENDORID=04DD
-CONFIG_USBD_PRODUCTID=8007
-CONFIG_USBD_PRODUCT_NAME="SL-7500"
-CONFIG_USBD_MANUFACTURER="Sharp"
-# CONFIG_USBD_USE_SERIAL_NUMBER is not set
-CONFIG_USBD_SELFPOWERED=y
-CONFIG_USBD_MONITOR=m
-
-#
-#
-#
-# CONFIG_USBD_PROCFS is not set
-
-#
-# USB Device functions
-#
-
-#
-# Network Function
-#
-CONFIG_USBD_NET=m
-CONFIG_USBD_NET_VENDORID=04DD
-CONFIG_USBD_NET_PRODUCTID=8007
-CONFIG_USBD_NET_IFNAME="usbd"
-CONFIG_USBD_NET_OUT_ENDPOINT=1
-CONFIG_USBD_NET_OUT_PKTSIZE=64
-CONFIG_USBD_NET_IN_ENDPOINT=2
-CONFIG_USBD_NET_IN_PKTSIZE=64
-CONFIG_USBD_NET_INT_ENDPOINT=3
-CONFIG_USBD_NET_INT_PKTSIZE=16
-# CONFIG_USBD_NET_ALWAYSUP is not set
-# CONFIG_USBD_NET_SAFE is not set
-CONFIG_USBD_NET_MDLM=y
-# CONFIG_USBD_NET_CDC is not set
-CONFIG_USBD_NET_REMOTE_MACADDR="400001000002"
-CONFIG_USBD_NET_REMOTE_OUI=400002
-CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y
-CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-CONFIG_USBD_NET_LOCAL_OUI=400001
-
-#
-# Serial Function
-#
-# CONFIG_USBD_SERIAL is not set
-
-#
-# Mass Storage Function
-#
-CONFIG_USBD_STORAGE=m
-CONFIG_USBD_STORAGE_VENDORID=04DD
-CONFIG_USBD_STORAGE_PRODUCTID=9050
-CONFIG_USBD_STORAGE_OUT_ENDPOINT=1
-CONFIG_USBD_STORAGE_OUT_PKTSIZE=64
-CONFIG_USBD_STORAGE_IN_ENDPOINT=2
-CONFIG_USBD_STORAGE_IN_PKTSIZE=64
-CONFIG_USBD_STORAGE_INT_ENDPOINT=3
-CONFIG_USBD_STORAGE_INT_PKTSIZE=16
-CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="/dev/hda1"
-
-#
-# USB Device bus interfaces
-#
-
-#
-# USB Device Bus Interface Support
-#
-CONFIG_USBD_PXA_BUS=m
-# CONFIG_USBD_GENERIC_BUS is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=y
-CONFIG_BLUEZ_L2CAP=y
-CONFIG_BLUEZ_SCO=y
-CONFIG_BLUEZ_RFCOMM=y
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=y
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-# CONFIG_BLUEZ_HIDP is not set
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BLUEZ_HCIUSB is not set
-CONFIG_BLUEZ_HCIUART=y
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y
-# CONFIG_BLUEZ_HCIBFUSB is not set
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-# CONFIG_BLUEZ_HCIVHCI is not set
-CONFIG_BLUEZ_BT950=m
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-tosa b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-tosa
deleted file mode 100644
index aa7f25a2a4..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-tosa
+++ /dev/null
@@ -1,1379 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-
-#
-# Archimedes/A5000 Implementations (select only ONE)
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_COLLIE is not set
-# CONFIG_LOCOMO is not set
-# CONFIG_COLLIE_TS is not set
-# CONFIG_COLLIE_TR0 is not set
-# CONFIG_COLLIE_TR1 is not set
-# CONFIG_COLLIE_DEV is not set
-# CONFIG_COLLIE_G is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_H3XXX is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_H3600_SLEEVE is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_COTULLA_DMA is not set
-# CONFIG_SABINAL_DISCOVERY is not set
-# CONFIG_ARCH_SABINAL is not set
-# CONFIG_ARCH_PXA_POODLE is not set
-# CONFIG_POODLE_TR0 is not set
-# CONFIG_ARCH_PXA_CORGI is not set
-# CONFIG_CORGI_TR0 is not set
-CONFIG_ARCH_PXA_TOSA=y
-CONFIG_ARCH_PXA_TOSA_SKIP=y
-CONFIG_ARCH_SHARP_SL=y
-CONFIG_SL_CCCR_CHANGE=y
-# CONFIG_SL_CCCR242 is not set
-# CONFIG_SL_CCCR162 is not set
-
-#
-# Language type
-#
-CONFIG_ARCH_SHARP_SL_E=y
-# CONFIG_ARCH_SHARP_SL_V is not set
-# CONFIG_ARCH_SHARP_SL_G is not set
-# CONFIG_ARCH_SHARP_SL_J is not set
-# CONFIG_ARCH_SHARP_SL_S is not set
-# CONFIG_ARCH_SHARP_SL_I is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-
-#
-# Processor Type
-#
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_BATT=y
-# CONFIG_XSCALE_CACHE_ERRATA is not set
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_FCSE=y
-# CONFIG_DISCONTIGMEM is not set
-# CONFIG_PREEMPT is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZWBOOT_ROM_BSS=0
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=y
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-
-#
-# At least one math emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-CONFIG_APM_CPU_IDLE=y
-CONFIG_APM_DISPLAY_BLANK=y
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="<see .oe file>"
-# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_FREEPG_SIGNAL=y
-CONFIG_OOM_KILL_SURVIVAL=y
-CONFIG_DEVICEINFO=m
-CONFIG_CORGI_DEVICEINFO=m
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-# CONFIG_MTD_GEN_PROBE is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_PXA_CERF is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_DISCOVERY is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PCI is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDROM_SA1100 is not set
-# CONFIG_MTD_MTDRAM_SA1100 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-# CONFIG_MTD_BLKMTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-CONFIG_MTD_NAND_POST_BADBLOCK=y
-# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
-CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
-CONFIG_MTD_NAND_PAGE_CACHE=y
-CONFIG_MTD_NAND_SHARP_SL_TC6393=y
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-CONFIG_SYN_COOKIES=y
-
-#
-# IP: Netfilter Configuration
-#
-# CONFIG_IP_NF_CONNTRACK is not set
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=y
-# CONFIG_IP_NF_MATCH_LIMIT is not set
-# CONFIG_IP_NF_MATCH_MAC is not set
-# CONFIG_IP_NF_MATCH_MARK is not set
-# CONFIG_IP_NF_MATCH_MULTIPORT is not set
-# CONFIG_IP_NF_MATCH_TOS is not set
-# CONFIG_IP_NF_MATCH_AH_ESP is not set
-# CONFIG_IP_NF_MATCH_LENGTH is not set
-# CONFIG_IP_NF_MATCH_TTL is not set
-# CONFIG_IP_NF_MATCH_TCPMSS is not set
-# CONFIG_IP_NF_MATCH_UNCLEAN is not set
-# CONFIG_IP_NF_MATCH_OWNER is not set
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-# CONFIG_IP_NF_TARGET_MIRROR is not set
-# CONFIG_IP_NF_MANGLE is not set
-CONFIG_IP_NF_TARGET_LOG=y
-# CONFIG_IP_NF_TARGET_ULOG is not set
-# CONFIG_IP_NF_TARGET_TCPMSS is not set
-CONFIG_IPV6=y
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=y
-# CONFIG_IP6_NF_MATCH_LIMIT is not set
-# CONFIG_IP6_NF_MATCH_MAC is not set
-# CONFIG_IP6_NF_MATCH_MULTIPORT is not set
-# CONFIG_IP6_NF_MATCH_OWNER is not set
-# CONFIG_IP6_NF_MATCH_MARK is not set
-CONFIG_IP6_NF_FILTER=y
-CONFIG_IP6_NF_TARGET_LOG=y
-# CONFIG_IP6_NF_MANGLE is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-CONFIG_IPSEC=m
-
-#
-# IPSec options (Openswan)
-#
-CONFIG_IPSEC_IPIP=y
-CONFIG_IPSEC_AH=y
-# CONFIG_IPSEC_AUTH_HMAC_MD5 is not set
-CONFIG_IPSEC_AUTH_HMAC_SHA1=y
-CONFIG_IPSEC_ESP=y
-CONFIG_IPSEC_ENC_3DES=y
-# CONFIG_IPSEC_ENC_AES is not set
-CONFIG_IPSEC_ALG=y
-CONFIG_IPSEC_IPCOMP=y
-CONFIG_IPSEC_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=y
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=y
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPP_DEFLATE is not set
-CONFIG_PPP_BSDCOMP=y
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-
-#
-# Wireless Pcmcia cards support
-#
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=y
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_NET_PCMCIA_RADIO is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=y
-
-#
-# IrDA protocols
-#
-# CONFIG_IRLAN is not set
-CONFIG_IRNET=m
-CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=y
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_SD_EXTRA_DEVS=40
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-# CONFIG_CHR_DEV_SG is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_SCSI_PCMCIA is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_KEYBDEV=y
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-CONFIG_INPUT_UINPUT=y
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-CONFIG_SERIAL_SL_SERIES=y
-CONFIG_BLUETOOTH_SL=y
-# CONFIG_KBD_DEV_FILE is not set
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-
-#
-# Other L3 adapters
-#
-# CONFIG_L3_SA1111 is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-# CONFIG_INPUT_SERIO is not set
-# CONFIG_INPUT_SERPORT is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_INTEL_RNG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_COTULLA_RTC=y
-# CONFIG_ADS7846_TS is not set
-CONFIG_TOSA_TS=y
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-# these shouldnt be here
-CONFIG_TOSA_POWER_KEY_OFF=y
-CONFIG_BOOT_TOSA_POWER_KEY_OFF=y
-CONFIG_SL7X0_POWER_KEY_OFF=y
-CONFIG_BOOT_POWER_KEY_OFF=y
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=y
-CONFIG_PCMCIA_CHRDEV=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FS_SYNC is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_NAND=y
-CONFIG_JFFS2_PROC_FS=y
-CONFIG_JFFS2_NODEMERGE=y
-CONFIG_JFFS2_DYNFRAGTREE=y
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-CONFIG_MINIX_FS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_POSIX=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-CONFIG_ZLIB_FS_INFLATE=y
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-CONFIG_NLS_CODEPAGE_932=y
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_UNICON is not set
-# CONFIG_FB_COLLIE is not set
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_COTULLA is not set
-# CONFIG_FB_POODLE is not set
-# CONFIG_FB_CORGI is not set
-CONFIG_FB_TOSA=y
-# CONFIG_SHARP_LOGO_SCREEN is not set
-# CONFIG_SL_SYSCLK100 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-# CONFIG_FBCON_ROTATE_R is not set
-# CONFIG_FBCON_ROTATE_L is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_COLLIE_SSP is not set
-# CONFIG_SOUND_COLLIE_TC35143 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-# CONFIG_SOUND_POODLE is not set
-# CONFIG_SOUND_CORGI is not set
-CONFIG_SOUND_TOSA=y
-CONFIG_BUZZER_TOSA=y
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# USB support
-#
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-
-#
-# USB Controllers
-#
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SA1111 is not set
-CONFIG_USB_OHCI_TC6393=m
-CONFIG_USB_USE_INTERNAL_MEMORY=y
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_BLUETOOTH is not set
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-CONFIG_USB_STORAGE_ISD200=y
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-CONFIG_USB_ACM=m
-# CONFIG_USB_PRINTER is not set
-
-#
-# USB Human Interface Devices (HID)
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDDEV is not set
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-# CONFIG_USB_WACOM is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-
-#
-# USB Multimedia devices
-#
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# USB Network adaptors
-#
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_RIO500 is not set
-
-#
-# USB Device Support
-#
-CONFIG_USBD=m
-CONFIG_USBD_VENDORID=04DD
-CONFIG_USBD_PRODUCTID=9032
-CONFIG_USBD_PRODUCT_NAME="SL-6000"
-CONFIG_USBD_MANUFACTURER="Sharp"
-# CONFIG_USBD_USE_SERIAL_NUMBER is not set
-CONFIG_USBD_SELFPOWERED=y
-CONFIG_USBD_MONITOR=m
-
-#
-#
-#
-CONFIG_USBD_PROCFS=y
-
-#
-# USB Device functions
-#
-
-#
-# Network Function
-#
-CONFIG_USBD_NET=m
-CONFIG_USBD_NET_VENDORID=04DD
-CONFIG_USBD_NET_PRODUCTID=9032
-CONFIG_USBD_NET_IFNAME="usbd"
-CONFIG_USBD_NET_OUT_ENDPOINT=1
-CONFIG_USBD_NET_OUT_PKTSIZE=64
-CONFIG_USBD_NET_IN_ENDPOINT=2
-CONFIG_USBD_NET_IN_PKTSIZE=64
-CONFIG_USBD_NET_INT_ENDPOINT=3
-CONFIG_USBD_NET_INT_PKTSIZE=16
-# CONFIG_USBD_NET_ALWAYSUP is not set
-# CONFIG_USBD_NET_SAFE is not set
-CONFIG_USBD_NET_MDLM=y
-# CONFIG_USBD_NET_CDC is not set
-CONFIG_USBD_NET_REMOTE_MACADDR="400002000001"
-CONFIG_USBD_NET_REMOTE_OUI=400002
-CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y
-CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-CONFIG_USBD_NET_LOCAL_OUI=400001
-
-#
-# Serial Function
-#
-# CONFIG_USBD_SERIAL is not set
-
-#
-# Mass Storage Function
-#
-CONFIG_USBD_STORAGE=m
-CONFIG_USBD_STORAGE_VENDORID=0000
-CONFIG_USBD_STORAGE_PRODUCTID=0000
-CONFIG_USBD_STORAGE_OUT_ENDPOINT=1
-CONFIG_USBD_STORAGE_OUT_PKTSIZE=64
-CONFIG_USBD_STORAGE_IN_ENDPOINT=2
-CONFIG_USBD_STORAGE_IN_PKTSIZE=64
-CONFIG_USBD_STORAGE_INT_ENDPOINT=3
-CONFIG_USBD_STORAGE_INT_PKTSIZE=16
-CONFIG_USBD_STORAGE_DEF_DEVICE_NAME=""
-
-#
-# USB Device bus interfaces
-#
-
-#
-# USB Device Bus Interface Support
-#
-CONFIG_USBD_PXA_BUS=m
-# CONFIG_USBD_GENERIC_BUS is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=y
-CONFIG_BLUEZ_L2CAP=y
-CONFIG_BLUEZ_SCO=y
-CONFIG_BLUEZ_RFCOMM=y
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=y
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-# CONFIG_BLUEZ_HIDP is not set
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-CONFIG_BLUEZ_HCIUSB_SCO=y
-CONFIG_BLUEZ_HCIUART=y
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y
-CONFIG_BLUEZ_HCIBFUSB=m
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-CONFIG_BLUEZ_HCIVHCI=m
-CONFIG_BLUEZ_BT950=m
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/deviceinfo.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/deviceinfo.patch
deleted file mode 100644
index 58343c5b55..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/deviceinfo.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- linux/arch/arm/mach-pxa/Makefile.old 2004-09-24 20:49:09.000000000 +0930
-+++ linux/arch/arm/mach-pxa/Makefile 2004-09-24 20:49:11.000000000 +0930
-@@ -94,6 +94,23 @@
- endif
- endif
-
-+ifeq ($(CONFIG_DEVICEINFO),m)
-+ obj-$(CONFIG_DEVICEINFO) += devinfo.o
-+ ifeq ($(CONFIG_SABINAL_DISCOVERY),y)
-+ devinfo-objs-m += deviceinfo.o
-+ devinfo-objs-$(CONFIG_DISCOVERY_DEVICEINFO) += discovery_deviceinfo.o
-+ endif
-+ ifeq ($(CONFIG_ARCH_PXA_POODLE),y)
-+ devinfo-objs-m += sharpsl_deviceinfo.o
-+ endif
-+ ifeq ($(CONFIG_ARCH_PXA_CORGI),y)
-+ devinfo-objs-m += sharpsl_deviceinfo.o
-+ endif
-+ ifeq ($(CONFIG_ARCH_PXA_TOSA),y)
-+ devinfo-objs-m += sharpsl_deviceinfo.o
-+ endif
-+endif
-+
- obj-m += registers.o
-
- include $(TOPDIR)/Rules.make
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/disable-pcmcia-probe.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/disable-pcmcia-probe.patch
deleted file mode 100644
index 79ba036323..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/disable-pcmcia-probe.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- linux/drivers/pcmcia/Config.in~disable-pcmcia-probe 2003-05-13 11:18:23.000000000 +0200
-+++ linux/drivers/pcmcia/Config.in 2004-05-27 13:59:50.000000000 +0200
-@@ -15,9 +15,6 @@
- tristate 'PCMCIA/CardBus support' CONFIG_PCMCIA
- if [ "$CONFIG_PCMCIA" != "n" ]; then
- # yes, I really mean the following...
-- if [ "$CONFIG_ISA" = "y" -o "$CONFIG_ARCH_SA1100" = "y" ]; then
-- define_bool CONFIG_PCMCIA_PROBE y
-- fi
- if [ "$CONFIG_PCI" != "n" ]; then
- bool ' CardBus support' CONFIG_CARDBUS
- fi
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/dumb-hack-for-wlan-ng.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/dumb-hack-for-wlan-ng.patch
deleted file mode 100644
index 2c412fdbb3..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/dumb-hack-for-wlan-ng.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux/arch/arm/tools/Makefile~dumb-hack-for-wlan-ng
-+++ linux/arch/arm/tools/Makefile
-@@ -16,7 +16,7 @@
- # any errors that occur along the way.
-
- constants.h: constants-hdr getconstants.c
-- $(CC) $(CFLAGS) -S -o $@.tmp.1 getconstants.c
-+ arm-linux-gcc-2.95 $(CFLAGS) -S -o $@.tmp.1 getconstants.c
- sed 's/^\(#define .* \)[#$$]\(.*\)/\1\2/;/^#define/!d' $@.tmp.1 > $@.tmp.2
- cat constants-hdr $@.tmp.2 > $@
- $(RM) $@.tmp*
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/enable-sysrq.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/enable-sysrq.patch
deleted file mode 100644
index b1ea85018b..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/enable-sysrq.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux/drivers/char/corgi_keyb.c~enable-sysrq
-+++ linux/drivers/char/corgi_keyb.c
-@@ -23,7 +23,7 @@
- #include <linux/init.h>
- #include <linux/poll.h>
- #include <linux/wait.h>
--#include <asm/arch/keyboard.h>
-+#include <asm/keyboard.h>
- #include <asm/uaccess.h>
- #include <linux/tqueue.h>
- #include <linux/kbd_ll.h>
-@@ -46,6 +46,18 @@
- #endif
-
- /*
-+ * This is the KeyCode [not ScanCode!] to ASCII Code mapping table
-+ */
-+
-+#ifdef CONFIG_MAGIC_SYSRQ
-+static unsigned char corgi_sysrq_xlate[128] =
-+ "\000abcdefghijklmno" /* 00-0f */
-+ "pqrstuvwxyz\000\000\000\000\000" /* 10-1f */
-+ " \000\000\000\000\000\000\000\0001234567" /* 20-2f */
-+ "890\000\000\000\000\000\000\000\000\000\000\000\000\000"; /* 30-3f */
-+#endif
-+
-+/*
- * common logical driver definition
- */
- extern void sharppda_kbd_press(int keycode);
-@@ -251,7 +263,13 @@
- corgi_wakeup_button_init();
- #endif // USE_WAKEUP_BUTTON
-
-- printk("keyboard initilaized.\n");
-+ printk("keyboard initialized.\n");
-+#ifdef CONFIG_MAGIC_SYSRQ
-+ k_sysrq_key = 0x28; // KEY_HOME
-+ k_sysrq_xlate = corgi_sysrq_xlate;
-+ printk("magic_sysrq initialized.\n");
-+#endif
-+
- }
-
- int corgi_kbd_translate(unsigned char scancode, unsigned char *keycode_p)
---- linux/drivers/char/keyboard.c~enable-sysrq
-+++ linux/drivers/char/keyboard.c
-@@ -366,7 +366,7 @@
- #ifdef CONFIG_MAGIC_SYSRQ /* Handle the SysRq Hack */
- if (keycode == SYSRQ_KEY) {
- sysrq_pressed = !up_flag;
-- goto out;
-+ // goto out;
- } else if (sysrq_pressed) {
- if (!up_flag) {
- handle_sysrq(kbd_sysrq_xlate[keycode], kbd_pt_regs, kbd, tty);
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/fix_tosa_apm.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/fix_tosa_apm.patch
deleted file mode 100644
index 092b0dcf49..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/fix_tosa_apm.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux/arch/arm/mach-pxa/sharpsl_apm.c~fix_tosa_apm.patch
-+++ linux/arch/arm/mach-pxa/sharpsl_apm.c
-@@ -254,6 +254,8 @@
- int magic;
- struct apm_user * next;
- int suser: 1;
-+ int reader: 1;
-+ int writer: 1;
- int suspend_wait: 1;
- int suspend_result;
- int suspends_pending;
-@@ -1596,12 +1598,12 @@
- {
- struct apm_user * as;
-
-- DPRINTK("event=%d\n",event);
-+ DPRINTK("event=%d, sender=%p\n",event,sender);
-
- if (user_list == NULL)
- return;
- for (as = user_list; as != NULL; as = as->next) {
-- if (as == sender)
-+ if ((as == sender) || (!as->reader))
- continue;
- as->event_head = (as->event_head + 1) % APM_MAX_EVENTS;
- if (as->event_head == as->event_tail) {
-@@ -1611,8 +1613,8 @@
- as->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS;
- }
- as->events[as->event_head] = event;
-- if (!as->suser)
-- continue;
-+ if ((!as->suser) || (!as->writer))
-+ continue;
- switch (event) {
- case APM_SYS_SUSPEND:
- case APM_USER_SUSPEND:
-@@ -1630,9 +1632,8 @@
- #ifdef SHARPSL_NEW_IDLE
- current->nice = save_nice;
- current->counter = save_counter;
--#else
-- wake_up_interruptible(&apm_waitqueue);
- #endif
-+ wake_up_interruptible(&apm_waitqueue);
- }
-
- static unsigned long get_cmos_time(void)
-@@ -2532,6 +2533,8 @@
- * privileged operation -- cevans
- */
- as->suser = capable(CAP_SYS_ADMIN);
-+ as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE;
-+ as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ;
- as->next = user_list;
- user_list = as;
- filp->private_data = as;
-@@ -3000,6 +3003,9 @@
- #endif
- #endif
-
-+ suspends_pending = 0;
-+ standbys_pending = 0;
-+
- apm_proc = create_proc_info_entry("apm", 0, NULL, apm_get_info);
- if (apm_proc)
- SET_MODULE_OWNER(apm_proc);
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/idecs.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/idecs.patch
deleted file mode 100644
index 62038c34e2..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/idecs.patch
+++ /dev/null
@@ -1,77 +0,0 @@
---- linux/drivers/ide/ide-cs.c 2003-02-28 17:04:00.000000000 -0600
-+++ linux.new/drivers/ide/ide-cs.c 2003-02-28 17:18:53.000000000 -0600
-@@ -2,7 +2,7 @@
-
- A driver for PCMCIA IDE/ATA disk cards
-
-- ide_cs.c 1.26 1999/11/16 02:10:49
-+ ide-cs.c 1.26 1999/11/16 02:10:49
-
- The contents of this file are subject to the Mozilla Public
- License Version 1.1 (the "License"); you may not use this file
-@@ -66,7 +66,7 @@
- MODULE_PARM(pc_debug, "i");
- #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args)
- static char *version =
--"ide_cs.c 1.26 1999/11/16 02:10:49 (David Hinds)";
-+"ide-cs.c 1.26 1999/11/16 02:10:49 (David Hinds)";
- #else
- #define DEBUG(n, args...)
- #endif
-@@ -110,7 +110,7 @@
- static int ide_event(event_t event, int priority,
- event_callback_args_t *args);
-
--static dev_info_t dev_info = "ide_cs";
-+static dev_info_t dev_info = "ide-cs";
-
- static dev_link_t *ide_attach(void);
- static void ide_detach(dev_link_t *);
-@@ -356,7 +356,7 @@
- }
-
- if (hd < 0) {
-- printk(KERN_NOTICE "ide_cs: ide_register() at 0x%03x & 0x%03x"
-+ printk(KERN_NOTICE "ide-cs: ide_register() at 0x%03x & 0x%03x"
- ", irq %u failed\n", io_base, ctl_base,
- link->irq.AssignedIRQ);
- goto failed;
-@@ -369,7 +369,7 @@
- info->node.minor = 0;
- info->hd = hd;
- link->dev = &info->node;
-- printk(KERN_INFO "ide_cs: %s: Vcc = %d.%d, Vpp = %d.%d\n",
-+ printk(KERN_INFO "ide-cs: %s: Vcc = %d.%d, Vpp = %d.%d\n",
- info->node.dev_name, link->conf.Vcc/10, link->conf.Vcc%10,
- link->conf.Vpp1/10, link->conf.Vpp1%10);
-
-@@ -409,9 +409,9 @@
- MOD_DEC_USE_COUNT;
- }
-
-- request_region(link->io.BasePort1, link->io.NumPorts1,"ide_cs");
-+ request_region(link->io.BasePort1, link->io.NumPorts1,"ide-cs");
- if (link->io.NumPorts2)
-- request_region(link->io.BasePort2, link->io.NumPorts2,"ide_cs");
-+ request_region(link->io.BasePort2, link->io.NumPorts2,"ide-cs");
-
- info->ndev = 0;
- link->dev = NULL;
-@@ -508,7 +508,7 @@
- DEBUG(0, "%s\n", version);
- CardServices(GetCardServicesInfo, &serv);
- if (serv.Revision != CS_RELEASE_CODE) {
-- printk(KERN_NOTICE "ide_cs: Card Services release "
-+ printk(KERN_NOTICE "ide-cs: Card Services release "
- "does not match!\n");
- return -1;
- }
-@@ -518,7 +518,7 @@
-
- static void __exit exit_ide_cs(void)
- {
-- DEBUG(0, "ide_cs: unloading\n");
-+ DEBUG(0, "ide-cs: unloading\n");
- unregister_pccard_driver(&dev_info);
- while (dev_list != NULL)
- ide_detach(dev_list);
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/initsh.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/initsh.patch
deleted file mode 100644
index a672631194..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/initsh.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- linux/init/main.c 2002-02-25 13:38:13.000000000 -0600
-+++ linux.new/init/main.c 2003-03-16 11:49:45.000000000 -0600
-@@ -830,8 +830,10 @@
- * trying to recover a really broken machine.
- */
-
-- if (execute_command)
-+ if (execute_command) {
-+ argv_init[0] = execute_command;
- execve(execute_command,argv_init,envp_init);
-+ }
- execve("/sbin/init",argv_init,envp_init);
- execve("/etc/init",argv_init,envp_init);
- execve("/bin/init",argv_init,envp_init);
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keyboard-ctrl+alt.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keyboard-ctrl+alt.patch
deleted file mode 100644
index 93a80bae3c..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keyboard-ctrl+alt.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-
-#
-# Made by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- linux/drivers/char/corgi_rawmap.h~keyboard-ctrl+alt 2003-09-15 14:30:08.000000000 +0200
-+++ linux/drivers/char/corgi_rawmap.h 2003-09-16 00:45:39.000000000 +0200
-@@ -55,7 +55,7 @@
- SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN};
-
- static unsigned char rawkeytable_table_NormalUpper[(NR_KEYCODES+1)] = {
-@@ -66,7 +66,7 @@
- SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN};
-
- static unsigned char rawkeytable_table_2ndLower[(NR_KEYCODES+1)] = {
-@@ -77,7 +77,7 @@
- SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN};
-
- static unsigned char rawkeytable_table_2ndUpper[(NR_KEYCODES+1)] = {
-@@ -88,7 +88,7 @@
- SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_PRINTSCREEN, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN};
-
- static unsigned char rawkeytable_table_NumlockLower[(NR_KEYCODES+1)] = {
-@@ -99,7 +99,7 @@
- SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN};
-
- static unsigned char rawkeytable_table_NumlockUpper[(NR_KEYCODES+1)] = {
-@@ -110,7 +110,7 @@
- SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN};
-
- static unsigned char rawkeytable_table_Num2ndLower[(NR_KEYCODES+1)] = {
-@@ -121,7 +121,7 @@
- SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN};
-
- static unsigned char rawkeytable_table_Num2ndUpper[(NR_KEYCODES+1)] = {
-@@ -132,7 +132,7 @@
- SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_PRINTSCREEN, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
- SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN};
-
-
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keymap-more-sane.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keymap-more-sane.patch
deleted file mode 100644
index a58dd13fbd..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keymap-more-sane.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- linux/drivers/char/corgi_keymap.map~keymap-more-sane 2003-08-30 01:05:14.000000000 +0200
-+++ linux/drivers/char/corgi_keymap.map 2003-09-03 20:44:27.000000000 +0200
-@@ -71,9 +71,11 @@
- # (Cancel:34) F9 -> Escape
- keycode 34 = Escape
- keycode 35 = Left
-+ alt keycode 35 = Decr_Console
- keycode 36 = Up
- keycode 37 = Down
- keycode 38 = Right
-+ alt keycode 38 = Incr_Console
- # (OK:39) F4 -> Return
- keycode 39 = Return
- keycode 40 =
-@@ -100,7 +102,7 @@
- keycode 60 = Shift_Lock
- keycode 61 = at
- keycode 62 = question
--keycode 63 = comma slash
-+keycode 63 = slash comma
- alt keycode 63 = less
- keycode 64 = period question
- alt keycode 64 = greater
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/logo.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/logo.patch
deleted file mode 100644
index fd8084254c..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/logo.patch
+++ /dev/null
@@ -1,2598 +0,0 @@
---- linux/drivers/video/fbcon.c 2003-02-27 21:47:36.000000000 -0600
-+++ linux.new/drivers/video/fbcon.c 2003-02-27 18:39:39.000000000 -0600
-@@ -126,8 +126,8 @@
- #define LOGO_H (320-16)
- #define LOGO_W 240
- #else
--#define LOGO_H 80
--#define LOGO_W 80
-+#define LOGO_H 52
-+#define LOGO_W 240
- #endif
- #define LOGO_LINE (LOGO_W/8)
- #if defined(CONFIG_SHARP_LOGO_SCREEN)
---- linux/include/linux/linux_logo.h 2001-06-11 21:15:27.000000000 -0500
-+++ linux.new/include/linux/linux_logo.h 2003-02-27 15:58:15.000000000 -0600
-@@ -1,4 +1,4 @@
--/* $Id: linux_logo.h,v 1.5 1998/07/30 16:30:58 jj Exp $
-+/* linux_logo.h created with fblogo, 2002/12/29 02:43:36
- * include/linux/linux_logo.h: This is a linux logo
- * to be displayed on boot.
- *
-@@ -7,907 +7,1673 @@
- *
- * You can put anything here, but:
- * LINUX_LOGO_COLORS has to be less than 224
-- * image size has to be 80x80
-- * values have to start from 0x20
-- * (i.e. RGB(linux_logo_red[0],
-- * linux_logo_green[0],
-- * linux_logo_blue[0]) is color 0x20)
-- * BW image has to be 80x80 as well, with MS bit
-- * on the left
-- * Serial_console ascii image can be any size,
-- * but should contain %s to display the version
-+ * Generated by fblogo version 0.5.0
-+ *
-+ *
-+ * Remember to modify drivers/video/fbcon.c:
-+ * Change "#define LOGO_H 80" to "#define LOGO_H 52"
-+ * Change "#define LOGO_W 80" to "#define LOGO_W 240"
- */
-
- #ifndef __HAVE_ARCH_LINUX_LOGO
--#define LINUX_LOGO_COLORS 187
-+#define LINUX_LOGO_COLORS 223
- #endif
--
- #ifdef INCLUDE_LINUX_LOGO_DATA
--
- #ifndef __HAVE_ARCH_LINUX_LOGO
--
- unsigned char linux_logo_red[] __initdata = {
-- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22,
-- 0x12, 0x00, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56,
-- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x02, 0x65,
-- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6,
-- 0xc3, 0x65, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6,
-- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7,
-- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x76, 0x79,
-- 0x62, 0x36, 0x9a, 0xe2, 0xec, 0xe1, 0xb8, 0xd7,
-- 0xaf, 0x25, 0xbc, 0xc0, 0xef, 0xea, 0xe8, 0xe8,
-- 0xf5, 0xf1, 0xda, 0xd3, 0x79, 0xdb, 0xf4, 0xf6,
-- 0xf6, 0xf6, 0xe2, 0x3d, 0xb4, 0xce, 0xe6, 0xee,
-- 0xf6, 0x68, 0xd8, 0xec, 0xf5, 0xc6, 0xc8, 0x9c,
-- 0x89, 0xd2, 0xee, 0xcb, 0xb9, 0xd2, 0x66, 0x5e,
-- 0x8b, 0xbe, 0xa8, 0xd5, 0xca, 0xb6, 0xae, 0x9c,
-- 0xc5, 0xbe, 0xbe, 0xca, 0x90, 0xb2, 0x9a, 0xa8,
-- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x12,
-- 0x4a, 0x8e, 0xf2, 0xf6, 0xf6, 0xee, 0xb5, 0xe4,
-- 0xf1, 0x26, 0x9a, 0xea, 0xf6, 0xe0, 0xd2, 0x16,
-- 0x9a, 0x2e, 0x70, 0xd6, 0x46, 0x7c, 0xb4, 0x62,
-- 0xd6, 0xa3, 0x74, 0xa7, 0xa2, 0xca, 0xe0, 0xae,
-- 0xbe, 0xce, 0xa3, 0x8e, 0x6d, 0x8e, 0x32, 0xaf,
-- 0x50, 0x9e, 0x5b, 0x8a, 0x98, 0x82, 0x7a, 0x82,
-- 0x56, 0x7c, 0x8a, 0x56, 0x5e, 0x86, 0x6a, 0x52,
-- 0x59, 0x64, 0x5e,
-+ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA,
-+ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE,
-+ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA,
-+ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36,
-+ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82,
-+ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6,
-+ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E,
-+ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x32, 0x7E,
-+ 0x3A, 0x16, 0x02, 0x02, 0x06, 0x1F, 0x02, 0x02,
-+ 0x06, 0x02, 0x22, 0x3A, 0x35, 0x16, 0x0A, 0x02,
-+ 0x2A, 0x3E, 0x39, 0x32, 0x2A, 0x1E, 0x16, 0x06,
-+ 0x22, 0x22, 0x1E, 0x16, 0x6E, 0x82, 0x6E, 0x2E,
-+ 0x1E, 0x2E, 0x1E, 0x0A, 0x3A, 0xDA, 0xFE, 0xFA,
-+ 0xFA, 0xE2, 0x6A, 0x3A, 0x1A, 0xFA, 0xF6, 0x9E,
-+ 0x02, 0x6E, 0xFE, 0xF6, 0x3E, 0x66, 0x52, 0x1B,
-+ 0xD6, 0x5A, 0xEE, 0xC6, 0x72, 0x36, 0x22, 0x1E,
-+ 0x02, 0x96, 0xF6, 0xDE, 0xA2, 0xD6, 0x39, 0x0E,
-+ 0xAA, 0x52, 0x5A, 0xD2, 0xDE, 0x61, 0x46, 0xDE,
-+ 0x7A, 0x57, 0x9E, 0xBA, 0xB6, 0x4A, 0x5A, 0xA6,
-+ 0x96, 0x23, 0x1E, 0x12, 0x9A, 0x4E, 0x76, 0xAE,
-+ 0x2E, 0xBE, 0x86, 0x48, 0xA6, 0x52, 0x06, 0x2E,
-+ 0x56, 0x13, 0x2A, 0x4A, 0x36, 0x56, 0x2E, 0x1E,
-+ 0x46, 0x3A, 0x66, 0x02, 0x3D, 0x3E, 0x2E, 0x3E,
-+ 0x4A, 0x32, 0x52, 0x72, 0x76, 0x67, 0x68, 0x5A,
-+ 0x3A, 0x1A, 0x0E, 0x2E, 0x4E, 0x02, 0x3E, 0x0A,
-+ 0x28, 0x42, 0x10, 0x26, 0x8E, 0x0A, 0x86, 0xC2,
-+ 0x02, 0x6E, 0x92, 0x02, 0x42, 0x02, 0xBE, 0x4E,
-+ 0x02, 0x22, 0x02, 0x3E, 0x3A, 0x32
- };
-
- unsigned char linux_logo_green[] __initdata = {
-- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22,
-- 0x12, 0x00, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56,
-- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x02, 0x65,
-- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6,
-- 0xc3, 0x62, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6,
-- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7,
-- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x62, 0x5c,
-- 0x4e, 0x26, 0x72, 0xaa, 0xba, 0xaf, 0x90, 0xae,
-- 0x92, 0x1a, 0xa4, 0x85, 0xb6, 0xbe, 0xc3, 0xc8,
-- 0xcf, 0xd0, 0xc2, 0xce, 0x57, 0xa2, 0xd6, 0xda,
-- 0xda, 0xd7, 0xb8, 0x2a, 0x7b, 0x91, 0xae, 0xca,
-- 0xda, 0x45, 0x9e, 0xb2, 0xd7, 0x9b, 0x90, 0x76,
-- 0x5c, 0xa2, 0xbe, 0xa6, 0x85, 0x96, 0x4e, 0x46,
-- 0x66, 0x92, 0x7a, 0x9a, 0x96, 0x9d, 0x9a, 0x6b,
-- 0x8a, 0x8e, 0xb2, 0xca, 0x90, 0xa6, 0x79, 0x7c,
-- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x0e,
-- 0x36, 0x86, 0xba, 0xbe, 0xe6, 0xcc, 0x8e, 0xb8,
-- 0xc4, 0x1e, 0x8e, 0xae, 0xba, 0xb2, 0xa6, 0x12,
-- 0x7a, 0x20, 0x64, 0xaa, 0x2f, 0x70, 0x85, 0x46,
-- 0xa6, 0x6e, 0x51, 0x72, 0x92, 0xa2, 0xa6, 0x87,
-- 0x96, 0xa2, 0x85, 0x7a, 0x6a, 0x6e, 0x22, 0x76,
-- 0x36, 0x76, 0x3c, 0x6e, 0x63, 0x53, 0x66, 0x62,
-- 0x42, 0x50, 0x56, 0x42, 0x56, 0x56, 0x56, 0x3e,
-- 0x51, 0x52, 0x56,
-+ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA,
-+ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE,
-+ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA,
-+ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36,
-+ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82,
-+ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6,
-+ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E,
-+ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x2E, 0x7E,
-+ 0x3A, 0x3E, 0x6A, 0xA2, 0x92, 0x30, 0x95, 0x76,
-+ 0x4E, 0x86, 0x36, 0x7E, 0x9A, 0x6E, 0x42, 0x56,
-+ 0x5A, 0xC2, 0xBE, 0xB2, 0xAA, 0x9A, 0x63, 0x1E,
-+ 0xA2, 0x9E, 0x96, 0x5A, 0x3A, 0x42, 0x4A, 0x52,
-+ 0x91, 0x46, 0x4E, 0x62, 0x22, 0x4A, 0x6E, 0x86,
-+ 0x92, 0x9A, 0x52, 0x4A, 0x76, 0x7A, 0x9E, 0x76,
-+ 0x62, 0x32, 0x5E, 0xAE, 0x3E, 0x66, 0x52, 0x81,
-+ 0xA6, 0x5A, 0xEE, 0xC6, 0x72, 0x5C, 0x6A, 0x8A,
-+ 0x36, 0x3E, 0xBA, 0xBA, 0xA2, 0xD6, 0xAA, 0x4E,
-+ 0x8A, 0x4E, 0x5A, 0xD2, 0xDE, 0x64, 0x32, 0x9A,
-+ 0x5E, 0x57, 0x9E, 0xBA, 0xB6, 0x52, 0x62, 0xA6,
-+ 0x9A, 0x47, 0x3E, 0x56, 0x02, 0x1A, 0x76, 0xAE,
-+ 0x4A, 0x02, 0x02, 0x38, 0x02, 0x4A, 0x46, 0x86,
-+ 0x1E, 0x2E, 0x7A, 0xD2, 0x5E, 0x26, 0x92, 0x62,
-+ 0xCA, 0x42, 0x66, 0x26, 0x67, 0xB6, 0x62, 0x92,
-+ 0x9E, 0x72, 0xB2, 0xF2, 0xFE, 0xDE, 0xFE, 0xFE,
-+ 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x8A, 0x2A,
-+ 0x42, 0x52, 0x6A, 0x26, 0x8E, 0x26, 0x86, 0xC2,
-+ 0xE2, 0x6E, 0x92, 0xBE, 0x42, 0xC6, 0xBE, 0x4E,
-+ 0xEE, 0x5A, 0xEA, 0x3E, 0x4A, 0x32
- };
-
- unsigned char linux_logo_blue[] __initdata = {
-- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22,
-- 0x12, 0x01, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56,
-- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x06, 0x65,
-- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6,
-- 0xc3, 0x59, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6,
-- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7,
-- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x2e, 0x08,
-- 0x0a, 0x06, 0x0a, 0x0b, 0x0b, 0x0f, 0x0c, 0x0f,
-- 0x3d, 0x09, 0x73, 0x09, 0x0d, 0x0a, 0x10, 0x1e,
-- 0x2d, 0x13, 0x86, 0xba, 0x19, 0x0a, 0x36, 0x3c,
-- 0x26, 0x14, 0x0d, 0x06, 0x07, 0x0a, 0x0b, 0x0f,
-- 0x4a, 0x06, 0x0a, 0x0c, 0x2b, 0x0a, 0x0b, 0x0a,
-- 0x06, 0x0a, 0x0a, 0x11, 0x0b, 0x0a, 0x0a, 0x1e,
-- 0x0f, 0x0d, 0x0a, 0x0b, 0x22, 0x6a, 0x72, 0x0b,
-- 0x0b, 0x22, 0x90, 0xca, 0x90, 0x92, 0x3c, 0x2c,
-- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x06,
-- 0x0e, 0x6a, 0x0e, 0x0e, 0xbe, 0x5b, 0x2c, 0x3e,
-- 0x0e, 0x0a, 0x5a, 0x0d, 0x0e, 0x3e, 0x0a, 0x06,
-- 0x2e, 0x06, 0x4e, 0x36, 0x06, 0x58, 0x24, 0x06,
-- 0x3a, 0x08, 0x08, 0x07, 0x5e, 0x45, 0x0a, 0x32,
-- 0x2e, 0x2a, 0x43, 0x48, 0x5f, 0x2e, 0x06, 0x06,
-- 0x07, 0x24, 0x06, 0x32, 0x06, 0x06, 0x46, 0x2e,
-- 0x22, 0x06, 0x06, 0x1e, 0x4c, 0x06, 0x3a, 0x22,
-- 0x42, 0x34, 0x42,
-+ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA,
-+ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE,
-+ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA,
-+ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36,
-+ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82,
-+ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6,
-+ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E,
-+ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x1A, 0x06,
-+ 0x1A, 0x2A, 0x36, 0x52, 0x46, 0x23, 0x4D, 0x3E,
-+ 0x2A, 0x42, 0x2A, 0x5A, 0x69, 0x42, 0x26, 0x2E,
-+ 0x42, 0x7E, 0x7C, 0x72, 0x6A, 0x5E, 0x3B, 0x12,
-+ 0x62, 0x5E, 0x5A, 0x36, 0x26, 0x1E, 0x26, 0x42,
-+ 0x56, 0x3A, 0x36, 0x36, 0x1E, 0x2E, 0x2A, 0x22,
-+ 0x22, 0x1A, 0x16, 0x42, 0x46, 0x26, 0x1E, 0x12,
-+ 0x32, 0x2A, 0x2E, 0x16, 0x2A, 0x1A, 0x2E, 0x4E,
-+ 0x12, 0x22, 0x02, 0x02, 0x12, 0x4A, 0x46, 0x52,
-+ 0x1E, 0x1E, 0x16, 0x0E, 0x02, 0x02, 0x6F, 0x2E,
-+ 0x0E, 0x1A, 0x06, 0x02, 0x02, 0x04, 0x22, 0x16,
-+ 0x0E, 0x12, 0x02, 0x02, 0x02, 0x0A, 0x5A, 0x02,
-+ 0x02, 0x1B, 0x2E, 0x32, 0x02, 0x02, 0x02, 0x02,
-+ 0x16, 0x02, 0x02, 0x10, 0x02, 0x02, 0x26, 0x5A,
-+ 0x02, 0x1F, 0x52, 0x8E, 0x22, 0x02, 0x5E, 0x3E,
-+ 0x86, 0x0E, 0x16, 0x16, 0x52, 0x7A, 0x4A, 0x66,
-+ 0x72, 0x52, 0x82, 0xB2, 0xBA, 0xA4, 0xB2, 0xAA,
-+ 0x9E, 0x8E, 0x88, 0x96, 0xA6, 0x82, 0x62, 0x1A,
-+ 0x34, 0x4A, 0x31, 0x16, 0x02, 0x1A, 0x02, 0x02,
-+ 0x72, 0x02, 0x02, 0x5E, 0x1A, 0x62, 0x02, 0x0E,
-+ 0x76, 0x1E, 0x76, 0x1E, 0x0A, 0x02
- };
-
- unsigned char linux_logo[] __initdata = {
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22, 0x22,
-- 0x22, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
-- 0x26, 0x26, 0x25, 0x28, 0x23, 0x22, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x23, 0x25, 0x2a, 0x2b, 0x2c, 0x2d, 0x2d,
-- 0x2d, 0x2e, 0x2c, 0x2b, 0x2a, 0x25, 0x28, 0x22,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x24, 0x2a, 0x2c, 0x2f, 0x2c, 0x30, 0x30, 0x24,
-- 0x25, 0x27, 0x2b, 0x2c, 0x2f, 0x31, 0x32, 0x25,
-- 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x25,
-- 0x33, 0x34, 0x35, 0x21, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x21, 0x2b, 0x2f, 0x2c,
-- 0x30, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24, 0x33,
-- 0x2d, 0x27, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x31,
-- 0x2d, 0x32, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x28, 0x2a, 0x34,
-- 0x25, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x23, 0x32, 0x27, 0x21, 0x36,
-- 0x2a, 0x2d, 0x2a, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x22, 0x26, 0x2c, 0x35,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x25, 0x2f, 0x37, 0x32, 0x22,
-- 0x36, 0x35, 0x31, 0x27, 0x22, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x23, 0x2a, 0x2f, 0x22,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x26, 0x38, 0x38, 0x35, 0x25,
-- 0x36, 0x21, 0x2d, 0x2b, 0x24, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x24, 0x39, 0x39, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x25, 0x2b, 0x30, 0x28, 0x22,
-- 0x36, 0x36, 0x27, 0x34, 0x30, 0x23, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x26, 0x2d, 0x26, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x22, 0x22, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x2d, 0x33, 0x28, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x23, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x2b, 0x2c, 0x25, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x34, 0x36, 0x36,
-- 0x36, 0x21, 0x22, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x21, 0x23, 0x22, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x28, 0x34, 0x27, 0x22, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x36,
-- 0x21, 0x21, 0x24, 0x27, 0x21, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x28, 0x27, 0x22, 0x33, 0x24, 0x36,
-- 0x36, 0x36, 0x36, 0x22, 0x2f, 0x2a, 0x23, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x36,
-- 0x30, 0x3a, 0x38, 0x24, 0x24, 0x36, 0x36, 0x36,
-- 0x23, 0x2f, 0x3b, 0x3c, 0x3d, 0x30, 0x25, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x2f, 0x32, 0x23, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x23,
-- 0x3e, 0x3f, 0x40, 0x3a, 0x22, 0x36, 0x36, 0x21,
-- 0x41, 0x42, 0x43, 0x44, 0x45, 0x3e, 0x23, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x2f, 0x33, 0x28, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x2b,
-- 0x44, 0x40, 0x46, 0x47, 0x35, 0x36, 0x36, 0x26,
-- 0x43, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x2e, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x31, 0x35, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x34, 0x36, 0x4d,
-- 0x4e, 0x25, 0x2f, 0x46, 0x4a, 0x22, 0x23, 0x32,
-- 0x4f, 0x50, 0x21, 0x31, 0x51, 0x52, 0x53, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x31, 0x35, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x2f, 0x21, 0x3a,
-- 0x4d, 0x21, 0x31, 0x54, 0x55, 0x28, 0x30, 0x2b,
-- 0x4b, 0x4d, 0x36, 0x23, 0x32, 0x50, 0x3f, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x2e, 0x39, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x20, 0x29, 0x20, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x38, 0x23, 0x37,
-- 0x55, 0x36, 0x28, 0x3a, 0x56, 0x57, 0x57, 0x58,
-- 0x3c, 0x4d, 0x36, 0x36, 0x36, 0x40, 0x40, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x2e, 0x39, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x29, 0x29, 0x20, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x51, 0x23, 0x35,
-- 0x43, 0x25, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e,
-- 0x5f, 0x60, 0x61, 0x36, 0x31, 0x47, 0x3b, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x31, 0x2c, 0x25, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x23, 0x22,
-- 0x40, 0x62, 0x63, 0x5d, 0x64, 0x65, 0x66, 0x67,
-- 0x68, 0x69, 0x66, 0x5e, 0x6a, 0x6b, 0x2a, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x33, 0x2e, 0x26, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x27, 0x2f, 0x23, 0x36,
-- 0x6c, 0x63, 0x6d, 0x64, 0x5c, 0x66, 0x69, 0x6e,
-- 0x6f, 0x70, 0x71, 0x69, 0x69, 0x72, 0x6c, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x33, 0x34, 0x27, 0x22,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x27, 0x34, 0x26, 0x73,
-- 0x74, 0x75, 0x76, 0x64, 0x65, 0x77, 0x69, 0x78,
-- 0x70, 0x71, 0x71, 0x71, 0x72, 0x5f, 0x5e, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x25, 0x38, 0x2a, 0x23,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2d, 0x33, 0x79,
-- 0x63, 0x7a, 0x7b, 0x5c, 0x66, 0x69, 0x6e, 0x7c,
-- 0x71, 0x71, 0x69, 0x7d, 0x7e, 0x7a, 0x7f, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x21, 0x51, 0x2b, 0x28,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2d, 0x32, 0x24,
-- 0x80, 0x81, 0x64, 0x82, 0x77, 0x69, 0x71, 0x71,
-- 0x69, 0x83, 0x84, 0x85, 0x7a, 0x85, 0x86, 0x36,
-- 0x21, 0x2b, 0x23, 0x36, 0x36, 0x39, 0x2e, 0x26,
-- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x27, 0x2d, 0x33, 0x21,
-- 0x87, 0x88, 0x89, 0x72, 0x67, 0x66, 0x5f, 0x89,
-- 0x8a, 0x63, 0x85, 0x8b, 0x8c, 0x8d, 0x41, 0x36,
-- 0x36, 0x2d, 0x3a, 0x35, 0x36, 0x24, 0x51, 0x32,
-- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x33, 0x21,
-- 0x55, 0x8e, 0x8f, 0x8a, 0x7d, 0x5e, 0x90, 0x7e,
-- 0x75, 0x75, 0x90, 0x62, 0x40, 0x3f, 0x49, 0x23,
-- 0x36, 0x24, 0x3a, 0x3a, 0x24, 0x36, 0x2e, 0x31,
-- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x21, 0x28, 0x33, 0x37, 0x25, 0x22,
-- 0x3b, 0x50, 0x8e, 0x8f, 0x90, 0x7e, 0x90, 0x63,
-- 0x74, 0x91, 0x92, 0x42, 0x93, 0x4b, 0x45, 0x2c,
-- 0x36, 0x36, 0x33, 0x39, 0x21, 0x36, 0x22, 0x51,
-- 0x33, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x22, 0x27, 0x2e, 0x2e, 0x36, 0x21,
-- 0x94, 0x3f, 0x50, 0x95, 0x96, 0x8f, 0x8f, 0x97,
-- 0x8e, 0x42, 0x50, 0x43, 0x47, 0x48, 0x48, 0x98,
-- 0x21, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x39,
-- 0x2e, 0x27, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x22, 0x24, 0x2b, 0x38, 0x28, 0x36, 0x32,
-- 0x4c, 0x4b, 0x50, 0x50, 0x50, 0x42, 0x42, 0x50,
-- 0x50, 0x40, 0x45, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x34, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x23,
-- 0x2f, 0x2b, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x28, 0x32, 0x51, 0x32, 0x28, 0x21, 0x98,
-- 0x48, 0x47, 0x9a, 0x50, 0x50, 0x50, 0x50, 0x50,
-- 0x9a, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x93, 0x23, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x2a, 0x2f, 0x2a, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x23, 0x30, 0x2e, 0x2c, 0x36, 0x21, 0x51, 0x9b,
-- 0x48, 0x48, 0x52, 0x3f, 0x50, 0x50, 0x40, 0x4b,
-- 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x34, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2d, 0x31, 0x27, 0x23, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
-- 0x27, 0x2c, 0x2d, 0x21, 0x36, 0x28, 0x44, 0x48,
-- 0x48, 0x48, 0x48, 0x47, 0x46, 0x4f, 0x47, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x9c, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x28, 0x51, 0x39, 0x26, 0x22, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x25,
-- 0x35, 0x51, 0x28, 0x36, 0x36, 0x9d, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x9b, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x4f, 0x28, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x28, 0x38, 0x2b, 0x25, 0x22, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24, 0x33,
-- 0x51, 0x25, 0x36, 0x36, 0x23, 0x40, 0x9b, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x9b, 0x99, 0x2b, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x30, 0x2f, 0x33, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x23, 0x30, 0x34,
-- 0x27, 0x36, 0x36, 0x36, 0x2a, 0x40, 0x47, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x99, 0x99, 0x9b, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x9b, 0x47, 0x52,
-- 0x46, 0x4f, 0x37, 0x21, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x30, 0x34, 0x2a, 0x23,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x22, 0x25, 0x39, 0x2c,
-- 0x36, 0x36, 0x36, 0x21, 0x31, 0x4e, 0x9a, 0x4c,
-- 0x47, 0x9b, 0x9b, 0x52, 0x46, 0x4f, 0x52, 0x9b,
-- 0x9b, 0x9b, 0x47, 0x4f, 0x45, 0x9a, 0x93, 0x93,
-- 0x3f, 0x93, 0x98, 0x28, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x39, 0x2c, 0x26,
-- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x23, 0x2a, 0x34, 0x28,
-- 0x36, 0x36, 0x36, 0x22, 0x38, 0x98, 0x44, 0x99,
-- 0x9b, 0x48, 0x48, 0x9b, 0x4c, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x47, 0x52, 0x46, 0x43, 0x93,
-- 0x40, 0x40, 0x43, 0x53, 0x21, 0x23, 0x33, 0x23,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x2f, 0x32,
-- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x24, 0x2b, 0x31, 0x36,
-- 0x36, 0x22, 0x36, 0x24, 0x9e, 0x4f, 0x9b, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x99, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x47,
-- 0x4f, 0x9a, 0x3f, 0x46, 0x38, 0x36, 0x21, 0x30,
-- 0x26, 0x36, 0x36, 0x36, 0x36, 0x36, 0x39, 0x2c,
-- 0x25, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2e, 0x33, 0x36,
-- 0x25, 0x25, 0x36, 0x4d, 0x52, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x47, 0x44, 0x93, 0x43, 0x23, 0x36, 0x36,
-- 0x26, 0x24, 0x36, 0x36, 0x36, 0x36, 0x28, 0x2f,
-- 0x2a, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x51, 0x24, 0x36,
-- 0x2a, 0x36, 0x28, 0x44, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x9b, 0x4b, 0x44, 0x37, 0x36, 0x23,
-- 0x28, 0x30, 0x22, 0x36, 0x36, 0x36, 0x36, 0x2d,
-- 0x35, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x21, 0x28, 0x2b, 0x34, 0x36, 0x25,
-- 0x24, 0x36, 0x4a, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x52, 0x3f, 0x21, 0x30,
-- 0x35, 0x25, 0x30, 0x36, 0x36, 0x36, 0x36, 0x32,
-- 0x2d, 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x22, 0x26, 0x2e, 0x35, 0x36, 0x2a,
-- 0x36, 0x24, 0x4f, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x47, 0x32, 0x30,
-- 0x2a, 0x23, 0x30, 0x23, 0x36, 0x36, 0x36, 0x21,
-- 0x2f, 0x32, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x23, 0x2a, 0x51, 0x28, 0x28, 0x25,
-- 0x36, 0x3a, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x9b, 0x52, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x38, 0x21,
-- 0x36, 0x36, 0x22, 0x27, 0x36, 0x36, 0x36, 0x36,
-- 0x2e, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x22, 0x25, 0x2c, 0x34, 0x36, 0x30, 0x21,
-- 0x23, 0x43, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x47, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x94, 0x36,
-- 0x36, 0x36, 0x36, 0x32, 0x36, 0x36, 0x36, 0x36,
-- 0x2a, 0x2e, 0x26, 0x22, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x23, 0x2a, 0x51, 0x25, 0x21, 0x2a, 0x36,
-- 0x2e, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x99, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x98, 0x36,
-- 0x36, 0x36, 0x36, 0x32, 0x36, 0x36, 0x36, 0x36,
-- 0x22, 0x2f, 0x30, 0x22, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x22, 0x25, 0x2c, 0x34, 0x36, 0x24, 0x28, 0x36,
-- 0x54, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x9a, 0x36,
-- 0x36, 0x36, 0x36, 0x30, 0x36, 0x36, 0x36, 0x36,
-- 0x21, 0x2f, 0x32, 0x23, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x28, 0x32, 0x2f, 0x28, 0x36, 0x27, 0x22, 0x21,
-- 0x43, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4b, 0x21,
-- 0x36, 0x36, 0x21, 0x26, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x34, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x25, 0x2c, 0x39, 0x36, 0x36, 0x30, 0x22, 0x25,
-- 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x52, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4f, 0x21,
-- 0x36, 0x36, 0x22, 0x26, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x30, 0x2d, 0x21, 0x36, 0x36, 0x32, 0x23, 0x2a,
-- 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4c, 0x22,
-- 0x36, 0x36, 0x24, 0x23, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x39, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x33, 0x2e, 0x36, 0x36, 0x23, 0x31, 0x27, 0x39,
-- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4c, 0x23,
-- 0x36, 0x36, 0x26, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x39, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x2b, 0x39, 0x36, 0x36, 0x36, 0x26, 0x32, 0x31,
-- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x46, 0x22,
-- 0x36, 0x21, 0x26, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24,
-- 0x35, 0x39, 0x36, 0x36, 0x36, 0x36, 0x26, 0x2d,
-- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x9a, 0x36,
-- 0x24, 0x27, 0x9f, 0x24, 0x25, 0x28, 0x21, 0x36,
-- 0x36, 0x34, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x25,
-- 0x39, 0x4d, 0xa0, 0x84, 0x81, 0x57, 0x21, 0x39,
-- 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x53, 0x28,
-- 0x23, 0x36, 0x36, 0x36, 0x21, 0x28, 0x2c, 0x30,
-- 0x21, 0x38, 0x33, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x22, 0x22, 0x28, 0x30,
-- 0x2d, 0xa1, 0x7a, 0xa2, 0xa3, 0xa3, 0x7f, 0x22,
-- 0x51, 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0xa4, 0xa5, 0xa5, 0xa6, 0x61,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x30, 0x32,
-- 0x25, 0x4d, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x23, 0x24, 0x26, 0x30, 0x33, 0x31,
-- 0x4d, 0x91, 0x5b, 0xa2, 0xa3, 0xa3, 0xa3, 0x5a,
-- 0x21, 0x2e, 0x46, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0xa7, 0xa8, 0x69, 0x66, 0xa9,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x26, 0x25,
-- 0x83, 0xaa, 0x2c, 0x25, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x28, 0x30, 0x35, 0x2d, 0x2f, 0x37, 0x4a,
-- 0x60, 0x85, 0xab, 0xac, 0xa3, 0xa3, 0xa3, 0x82,
-- 0x86, 0x36, 0x32, 0x3f, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0xad, 0xa2, 0xa8, 0xae, 0xaf,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x57,
-- 0x77, 0x66, 0x34, 0x27, 0x22, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x23, 0x30, 0x31, 0xb0, 0x91, 0x7e, 0x90, 0x90,
-- 0x8b, 0x5b, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0x5d, 0xb1, 0x36, 0x24, 0x53, 0x9b, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x9b, 0x99, 0xad, 0x64, 0x5c, 0x8b, 0xb1,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x73, 0x5d,
-- 0x82, 0x5c, 0xb2, 0x2a, 0x23, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x24, 0x2b, 0xb0, 0x8b, 0x5b, 0x76, 0x5b, 0x5b,
-- 0x7b, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa8, 0x5e, 0x22, 0x36, 0x21, 0x3a, 0x99, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x4f, 0x3f, 0xb3, 0x7b, 0x7b, 0x85, 0x80,
-- 0x9f, 0x36, 0x36, 0x36, 0x21, 0xb4, 0x7e, 0x7b,
-- 0x64, 0x64, 0xb5, 0x35, 0x24, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x31, 0xb6, 0x5b, 0x64, 0xa2, 0xa2, 0xac,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0x66, 0xb7, 0x36, 0x36, 0x36, 0x2c, 0x4b,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x9a, 0x3f, 0xb8, 0x76, 0x76, 0x7a, 0x63,
-- 0xb9, 0xba, 0x86, 0xba, 0xbb, 0x90, 0x5b, 0x64,
-- 0xa2, 0xa2, 0xbc, 0x2d, 0x27, 0x23, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x26, 0x2d, 0x91, 0x5b, 0x64, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa8, 0x83, 0xaf, 0x36, 0x36, 0x36, 0x30,
-- 0x44, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x9b, 0x9a, 0x3f, 0xbd, 0x5b, 0x7b, 0xbe, 0x85,
-- 0x7e, 0x90, 0x63, 0x90, 0x85, 0x5b, 0xa2, 0xa3,
-- 0xa3, 0xac, 0x5d, 0xb5, 0x39, 0x26, 0x23, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x2d, 0xbf, 0xbe, 0x64, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa8, 0x88, 0x36, 0x36, 0x36, 0x36,
-- 0x2d, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x9b, 0x45, 0x3f, 0xc0, 0x6d, 0x7b, 0xab, 0xbe,
-- 0x7a, 0x8b, 0x8b, 0x7a, 0x5b, 0x64, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa2, 0xc1, 0x37, 0x35, 0x26, 0x23,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x2e, 0xbf, 0x7a, 0x7b, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa8, 0x72, 0x73, 0x36, 0x36, 0x36,
-- 0x24, 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x46, 0x42, 0xb6, 0x7a, 0x7b, 0x64, 0x7b,
-- 0x76, 0x5b, 0x5b, 0x76, 0x7b, 0xa2, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xac, 0x64, 0xc1, 0x4d, 0x2c, 0x27,
-- 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x25, 0x31, 0xc2, 0x8b, 0x7b, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa8, 0x89, 0x9f, 0x36, 0x36,
-- 0x32, 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x4b, 0x2f, 0x8f, 0x7a, 0x7b, 0xa2, 0xac,
-- 0xa2, 0x64, 0x64, 0xa2, 0xa2, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x5d, 0xc3, 0x2c,
-- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x25, 0x31, 0xc2, 0x85, 0x7b, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0x66, 0x57, 0x27, 0x4d,
-- 0x4b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x99, 0x34, 0x9f, 0xb9, 0x7a, 0x7b, 0xa2, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0xc2,
-- 0x32, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x2d, 0xc2, 0x85, 0x7b, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa8, 0x5f, 0x92, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x44,
-- 0x35, 0x36, 0xaf, 0xbb, 0x7a, 0x7b, 0xac, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0xa2, 0xc0,
-- 0x2b, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
-- 0x30, 0x2f, 0xb6, 0x8b, 0x7b, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x66, 0x89, 0x45,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x9b, 0x4e, 0x25,
-- 0x36, 0x36, 0x61, 0xb9, 0x6d, 0x64, 0xac, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x7b, 0xbe, 0xc3,
-- 0x32, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x33, 0xc4, 0x63, 0xbe, 0xa2, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x72, 0x81, 0xc5,
-- 0x46, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x3f, 0x2c, 0x36, 0x36,
-- 0x36, 0x36, 0xc6, 0x8f, 0x6d, 0x64, 0xac, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa2, 0xab, 0x8b, 0xb0, 0x2c,
-- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24,
-- 0x35, 0x96, 0x75, 0xab, 0xa2, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x7b, 0x81, 0xb9,
-- 0x73, 0x3b, 0x44, 0x9b, 0x48, 0x48, 0x48, 0x9b,
-- 0x99, 0x43, 0x94, 0x2c, 0x21, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x73, 0xb9, 0x7a, 0x7b, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0x64, 0x76, 0x7a, 0x91, 0xb5, 0x31, 0x30,
-- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24,
-- 0x39, 0x97, 0x75, 0xbe, 0x7b, 0x64, 0xa2, 0xa2,
-- 0xac, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x7b, 0x7a, 0xc7,
-- 0xc8, 0x36, 0x21, 0x26, 0x2b, 0x39, 0x33, 0x30,
-- 0x23, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x21, 0xc8, 0xbb, 0x8b, 0x7b, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x64, 0x64,
-- 0x76, 0x85, 0xbf, 0xb5, 0x34, 0x2b, 0x27, 0x28,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x33, 0xc9, 0x63, 0x7e, 0x7a, 0x6d, 0xbe, 0x5b,
-- 0x76, 0x7b, 0x64, 0x64, 0xa2, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x76, 0x85, 0xb9,
-- 0x79, 0x22, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x21, 0xca, 0xbb, 0x75, 0x76, 0xa2, 0xa3,
-- 0xa3, 0xa3, 0xac, 0xa2, 0x64, 0x76, 0xbe, 0x8b,
-- 0xb6, 0xb5, 0x2f, 0x35, 0x30, 0x24, 0x22, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
-- 0x27, 0x31, 0xcb, 0xc9, 0xbb, 0x74, 0x63, 0x90,
-- 0x7e, 0x75, 0x8b, 0x6d, 0xbe, 0x76, 0x64, 0xa2,
-- 0xac, 0xac, 0xac, 0xac, 0x64, 0x7a, 0x84, 0xcc,
-- 0x79, 0x9f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x21, 0xc8, 0xcc, 0x63, 0x6d, 0x7b, 0x64,
-- 0xac, 0xa2, 0x64, 0x7b, 0xbe, 0x75, 0x63, 0x96,
-- 0x38, 0x39, 0x2a, 0x24, 0x23, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x28, 0x27, 0x35, 0x2d, 0x41, 0xb5, 0xc5, 0x8f,
-- 0xb9, 0xbb, 0xc7, 0x74, 0x84, 0x90, 0x85, 0x6d,
-- 0x5b, 0x7b, 0x7b, 0xab, 0x6d, 0x90, 0xb9, 0xcd,
-- 0xca, 0x22, 0x36, 0x36, 0x28, 0x30, 0x30, 0x30,
-- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x25, 0x36,
-- 0x36, 0x21, 0xb4, 0x80, 0xc7, 0x7e, 0x6d, 0x76,
-- 0xab, 0x76, 0x6d, 0x85, 0x63, 0xb9, 0xb5, 0x34,
-- 0x33, 0x26, 0x23, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x23, 0x24, 0x27, 0x2a, 0x35, 0x2e, 0x2f,
-- 0x41, 0xce, 0xcf, 0x6c, 0x80, 0xcc, 0xb9, 0x74,
-- 0x84, 0x90, 0x75, 0x7e, 0x74, 0x8f, 0xcd, 0x79,
-- 0xc6, 0x2b, 0x9d, 0x41, 0x2f, 0x34, 0x2d, 0x2d,
-- 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x34, 0x2f, 0x38,
-- 0x4d, 0x37, 0xd0, 0xd1, 0x8f, 0x74, 0x63, 0x7e,
-- 0x75, 0x7e, 0x63, 0xc7, 0x88, 0xc4, 0x31, 0x2a,
-- 0x24, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x21, 0x22, 0x23, 0x24, 0x26, 0x30,
-- 0x33, 0x39, 0x2e, 0x51, 0x41, 0xb2, 0x6c, 0xd1,
-- 0x80, 0xcc, 0xcc, 0xcc, 0xd2, 0xd1, 0xb7, 0xd3,
-- 0x41, 0x34, 0x35, 0x32, 0x30, 0x27, 0x27, 0x27,
-- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x30, 0x2a,
-- 0x2b, 0x34, 0xd4, 0xca, 0xd5, 0x8f, 0xbb, 0xc7,
-- 0xc7, 0xbb, 0xcc, 0x6c, 0x41, 0x39, 0x27, 0x28,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22,
-- 0x28, 0x24, 0x26, 0x2a, 0x33, 0x2c, 0x2f, 0x41,
-- 0xd6, 0xb7, 0x79, 0x79, 0x79, 0xca, 0xd7, 0x51,
-- 0x39, 0x30, 0x24, 0x23, 0x22, 0x22, 0x22, 0x22,
-- 0x22, 0x22, 0x21, 0x22, 0x22, 0x22, 0x22, 0x23,
-- 0x24, 0x2a, 0x31, 0xd8, 0xc8, 0x79, 0xd1, 0x80,
-- 0xd5, 0xba, 0xd9, 0x2f, 0x35, 0x26, 0x23, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x22, 0x23, 0x28, 0x25, 0x30, 0x2b,
-- 0x31, 0x2f, 0xd4, 0xd8, 0xd8, 0x2f, 0x2e, 0x33,
-- 0x26, 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x28, 0x27, 0x35, 0x34, 0xd8, 0xd8, 0xd8,
-- 0xda, 0xd4, 0x2e, 0x33, 0x25, 0x23, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x23, 0x28,
-- 0x26, 0x30, 0x32, 0x2b, 0x33, 0x2a, 0x26, 0x28,
-- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x23, 0x25, 0x30, 0x33, 0x35, 0x35,
-- 0x2b, 0x2a, 0x26, 0x28, 0x22, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x21, 0x22, 0x23, 0x28, 0x28, 0x23, 0x22, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x23, 0x28, 0x24, 0x24,
-- 0x28, 0x23, 0x22, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x33, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x61, 0x62, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x35, 0x61, 0x63, 0x64, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x65, 0x66, 0x66, 0x67, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B,
-+ 0x3B, 0x68, 0x64, 0x69, 0x62, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x22, 0x23, 0x23, 0x55, 0x6A, 0x6B,
-+ 0x6C, 0x6D, 0x6E, 0x6F, 0x6F, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x22, 0x23, 0x35, 0x33, 0x3B, 0x70, 0x71, 0x72,
-+ 0x73, 0x74, 0x75, 0x76, 0x77, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x23, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x23, 0x55,
-+ 0x2B, 0x34, 0x34, 0x42, 0x70, 0x71, 0x73, 0x78,
-+ 0x78, 0x78, 0x79, 0x7A, 0x7B, 0x34, 0x22, 0x21,
-+ 0x55, 0x33, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x3B, 0x7C, 0x7D, 0x7E, 0x34, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x35, 0x3B, 0x4C, 0x3C,
-+ 0x42, 0x3F, 0x56, 0x7F, 0x71, 0x74, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x79, 0x80, 0x81, 0x3C, 0x82,
-+ 0x83, 0x62, 0x61, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A,
-+ 0x3B, 0x21, 0x55, 0x55, 0x2B, 0x34, 0x39, 0x3F,
-+ 0x2A, 0x57, 0x8B, 0x72, 0x74, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x75, 0x8C, 0x6F, 0x63,
-+ 0x63, 0x66, 0x61, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x84, 0x85, 0x86, 0x8D, 0x88, 0x8E, 0x8F, 0x5E,
-+ 0x3C, 0x34, 0x3B, 0x34, 0x3F, 0x2A, 0x58, 0x57,
-+ 0x52, 0x46, 0x6C, 0x73, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x79, 0x7A, 0x6E, 0x69,
-+ 0x69, 0x90, 0x34, 0x33, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x91, 0x92, 0x8D, 0x87, 0x8E, 0x93, 0x8A, 0x35,
-+ 0x94, 0x95, 0x96, 0x56, 0x32, 0x32, 0x52, 0x5C,
-+ 0x4D, 0x82, 0x72, 0x78, 0x78, 0x78, 0x78, 0x79,
-+ 0x97, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6D, 0x6F,
-+ 0x62, 0x65, 0x34, 0x4C, 0x33, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B,
-+ 0x91, 0x86, 0x87, 0x88, 0x93, 0x98, 0x60, 0x3F,
-+ 0x99, 0x9A, 0x9A, 0x9B, 0x9C, 0x57, 0x5C, 0x36,
-+ 0x9D, 0x9E, 0x6D, 0x78, 0x78, 0x78, 0x97, 0x6E,
-+ 0x9F, 0x78, 0x78, 0x78, 0x78, 0x79, 0x80, 0xA0,
-+ 0x61, 0x51, 0x51, 0x3C, 0x4C, 0x55, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x3B, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C,
-+ 0xA1, 0x8D, 0x88, 0x8E, 0xA2, 0xA3, 0x94, 0x42,
-+ 0x51, 0xA4, 0x9A, 0x9A, 0x9A, 0xA5, 0x9C, 0x2A,
-+ 0xA6, 0x74, 0x8C, 0x75, 0x97, 0xA7, 0x76, 0x75,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6E,
-+ 0x46, 0x52, 0x56, 0x3F, 0x42, 0x34, 0x33, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x22, 0x21, 0x21, 0x22,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x3A,
-+ 0x5A, 0x53, 0x53, 0x29, 0x43, 0x50, 0x53, 0x5A,
-+ 0x5A, 0x29, 0x5A, 0x43, 0x53, 0x5D, 0x44, 0x2A,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55,
-+ 0x7D, 0x87, 0x8E, 0x93, 0xA8, 0xA9, 0xAA, 0x2A,
-+ 0x57, 0x94, 0xA4, 0x9B, 0xAB, 0xAC, 0x9A, 0x9B,
-+ 0xAD, 0x76, 0x79, 0x78, 0x75, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6D,
-+ 0x46, 0x5C, 0x57, 0x56, 0x51, 0x42, 0x4C, 0x55,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x24, 0x25, 0x26, 0x26, 0x27, 0x28, 0x27,
-+ 0x29, 0x2A, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x38, 0x30,
-+ 0x59, 0x3D, 0x3D, 0x3D, 0x27, 0x27, 0x26, 0x5D,
-+ 0x27, 0x27, 0x54, 0x37, 0x2E, 0x4A, 0x36, 0x2B,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0xAE, 0x88, 0xAF, 0xB0, 0xAA, 0x2A, 0x39, 0x34,
-+ 0x4C, 0x5C, 0x58, 0xB1, 0xB2, 0xB3, 0xAB, 0xA5,
-+ 0x9A, 0xB4, 0xB5, 0x8C, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x80,
-+ 0xB6, 0x38, 0x5C, 0x57, 0x56, 0x3F, 0x42, 0x3B,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x32,
-+ 0x31, 0x2C, 0x26, 0x2C, 0x33, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x34,
-+ 0x32, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x33,
-+ 0x33, 0x55, 0x55, 0x55, 0x23, 0x23, 0x35, 0x23,
-+ 0x23, 0x35, 0x2B, 0x4E, 0x4F, 0x2A, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x55, 0x38, 0x25,
-+ 0x2C, 0x52, 0x34, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x55, 0x8A, 0x8F, 0x39, 0x34, 0x3C, 0x57, 0x32,
-+ 0x46, 0x42, 0x52, 0x4A, 0x51, 0xAA, 0xB7, 0xB3,
-+ 0xAB, 0xAC, 0xAC, 0xB8, 0xB9, 0x79, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x7A,
-+ 0xBA, 0x70, 0x7B, 0xBB, 0x82, 0x56, 0x3F, 0x34,
-+ 0x4C, 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x36,
-+ 0x2D, 0x37, 0x38, 0x2A, 0x2B, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x39, 0x3A, 0x2C, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0x3C, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x24, 0x3D,
-+ 0x3E, 0x25, 0x3C, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x33, 0x29, 0x26, 0x2A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x54, 0x3E, 0x28,
-+ 0x28, 0x59, 0x59, 0x48, 0x51, 0x3F, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x2B, 0x56, 0x4D, 0x29, 0x5B, 0x34,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x55, 0x60, 0x3F, 0x42, 0x51, 0x32, 0x52,
-+ 0x40, 0x38, 0x40, 0x46, 0x42, 0xBC, 0xBD, 0xBE,
-+ 0xBF, 0x9B, 0xAB, 0x9B, 0xC0, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75,
-+ 0xA7, 0x63, 0x63, 0x66, 0x6F, 0x58, 0x56, 0x39,
-+ 0x34, 0x2B, 0x23, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x24, 0x2F,
-+ 0x3D, 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x40, 0x41, 0x3B, 0x21,
-+ 0x21, 0x22, 0x42, 0x38, 0x43, 0x44, 0x3A, 0x45,
-+ 0x34, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x46, 0x30, 0x47,
-+ 0x2A, 0x48, 0x48, 0x21, 0x21, 0x21, 0x21, 0x22,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x34, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x4D, 0x44, 0x2A, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x50, 0x4A, 0x57, 0x35,
-+ 0x35, 0x2B, 0x56, 0x27, 0x4B, 0x5D, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x3B, 0x52, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x38,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x3C, 0x42, 0x21, 0x33, 0x24, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x33, 0x38, 0x59, 0x37, 0x27, 0x27, 0x4A, 0x47,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x23, 0x4C, 0x4C, 0x2A, 0x56, 0x46, 0x31,
-+ 0x4D, 0x36, 0x50, 0x5A, 0x35, 0xC1, 0xC1, 0xC2,
-+ 0xC3, 0xB7, 0xB3, 0xBE, 0x76, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75,
-+ 0x6D, 0x62, 0x69, 0x6F, 0x58, 0x46, 0x32, 0x2A,
-+ 0x39, 0x34, 0x35, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x44, 0x49,
-+ 0x31, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x23, 0x29, 0x48, 0x22,
-+ 0x42, 0x3A, 0x4A, 0x49, 0x4B, 0x2E, 0x4B, 0x3E,
-+ 0x4A, 0x2C, 0x34, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x30, 0x40, 0x22,
-+ 0x21, 0x32, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x39,
-+ 0x36, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22,
-+ 0x31, 0x4F, 0x2A, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x31, 0x59, 0x2A, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x55, 0x27, 0x24, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4C, 0x44, 0x27, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x2A, 0x26, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3A,
-+ 0x40, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51, 0x49,
-+ 0x35, 0x21, 0x21, 0x21, 0x21, 0x22, 0x58, 0x25,
-+ 0x5A, 0x57, 0x21, 0x4C, 0x3D, 0x34, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x38,
-+ 0x47, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x3A, 0x4B, 0x53, 0x56, 0x55, 0x33, 0x42, 0x56,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x55, 0x4C, 0x42, 0x2A, 0x57, 0x5C, 0x38,
-+ 0x36, 0x47, 0x5A, 0xB6, 0x77, 0xC4, 0xC1, 0xC1,
-+ 0xC4, 0xC5, 0xB7, 0xB9, 0x79, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75,
-+ 0x97, 0xC6, 0x68, 0x57, 0x4D, 0x38, 0x46, 0x32,
-+ 0x51, 0x42, 0x2B, 0x35, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x4D, 0x2D, 0x38,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4E, 0x3C,
-+ 0x47, 0x4F, 0x50, 0x51, 0x3F, 0x44, 0x42, 0x34,
-+ 0x52, 0x53, 0x28, 0x2A, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x48, 0x54, 0x33, 0x21,
-+ 0x23, 0x3A, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x2A,
-+ 0x26, 0x33, 0x21, 0x21, 0x21, 0x21, 0x23, 0x45,
-+ 0x37, 0x3D, 0x41, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x31,
-+ 0x59, 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x28, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x27, 0x5B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x54, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4B,
-+ 0x46, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x49,
-+ 0x2B, 0x21, 0x21, 0x21, 0x23, 0x40, 0x43, 0x32,
-+ 0x35, 0x21, 0x21, 0x33, 0x28, 0x4C, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x4F,
-+ 0x5B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x50,
-+ 0x44, 0x39, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x3B, 0x34, 0x3F, 0x58, 0x46, 0x40, 0x36,
-+ 0x50, 0x41, 0x4D, 0xC7, 0x65, 0xC2, 0xC1, 0xC1,
-+ 0xC8, 0xBF, 0xB1, 0x97, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79,
-+ 0x80, 0xC9, 0x36, 0x50, 0x36, 0x38, 0x31, 0x32,
-+ 0x56, 0x39, 0x34, 0x33, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x2B, 0x3D, 0x28, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x40, 0x4D,
-+ 0x55, 0x2B, 0x21, 0x21, 0x2B, 0x28, 0x3B, 0x21,
-+ 0x21, 0x22, 0x52, 0x27, 0x56, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x2A, 0x30, 0x3F, 0x21, 0x22,
-+ 0x57, 0x44, 0x58, 0x21, 0x21, 0x21, 0x21, 0x56,
-+ 0x37, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x56, 0x3E,
-+ 0x36, 0x2A, 0x59, 0x23, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, 0x50, 0x3D,
-+ 0x42, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x40, 0x5A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x56, 0x49, 0x24, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x42, 0x54, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4D, 0x59,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x4A,
-+ 0x51, 0x21, 0x21, 0x33, 0x47, 0x47, 0x33, 0x21,
-+ 0x21, 0x21, 0x21, 0x55, 0x27, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x32, 0x4B,
-+ 0x4C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x34, 0x44,
-+ 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x33, 0x4C, 0x3C, 0x51, 0x57, 0x5C, 0x38, 0x38,
-+ 0x9D, 0xCA, 0x61, 0xCB, 0xCC, 0xCD, 0xC4, 0xC8,
-+ 0xA4, 0x9C, 0x76, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79,
-+ 0x7A, 0x7F, 0x41, 0x29, 0x47, 0x38, 0x40, 0x57,
-+ 0x32, 0x51, 0x42, 0x2B, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x57, 0x49, 0x32, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x57, 0x27,
-+ 0x35, 0x21, 0x21, 0x21, 0x2B, 0x59, 0x2A, 0x21,
-+ 0x21, 0x21, 0x21, 0x56, 0x54, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x4C, 0x2E, 0x5A, 0x23, 0x55, 0x5B,
-+ 0x49, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x21, 0x32,
-+ 0x3E, 0x3B, 0x21, 0x21, 0x21, 0x35, 0x54, 0x53,
-+ 0x23, 0x55, 0x4F, 0x55, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x25, 0x44, 0x42,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x41, 0x46, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x53, 0x2F, 0x2A, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x32, 0x28, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x59, 0x5B,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x54,
-+ 0x57, 0x21, 0x35, 0x53, 0x47, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x44, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x41, 0x43,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3F, 0x29,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x55, 0x4C, 0x3F, 0x2A, 0x46, 0x31, 0x36, 0x46,
-+ 0x71, 0x97, 0xCE, 0xCB, 0xCF, 0xA4, 0x9C, 0xA4,
-+ 0xAD, 0x76, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x8C,
-+ 0x7A, 0xA7, 0x36, 0x50, 0x3A, 0x36, 0x38, 0x52,
-+ 0x32, 0x2A, 0x3F, 0x2B, 0x22, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x22, 0x5A, 0x5A, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x28,
-+ 0x35, 0x21, 0x21, 0x21, 0x55, 0x30, 0x56, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x5B, 0x45, 0x21, 0x21,
-+ 0x21, 0x21, 0x2B, 0x2E, 0x25, 0x47, 0x3D, 0x2D,
-+ 0x25, 0x4C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x39,
-+ 0x44, 0x55, 0x21, 0x21, 0x21, 0x46, 0x59, 0x3B,
-+ 0x21, 0x23, 0x30, 0x34, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x2A, 0x28, 0x4E, 0x42, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x3C, 0x3D, 0x42, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x51, 0x4B, 0x49, 0x39, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x5C, 0x25, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x38, 0x4B, 0x3B,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x54,
-+ 0x56, 0x21, 0x5B, 0x3A, 0x35, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x51, 0x59, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x32, 0x2D, 0x42,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x3A,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x2B, 0x3C, 0x39, 0x56, 0x46, 0x40, 0x36, 0xB6,
-+ 0x73, 0x82, 0xCB, 0xD0, 0x75, 0xD1, 0xD2, 0xD1,
-+ 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x74, 0xCE,
-+ 0x9E, 0x6E, 0xD3, 0xC6, 0x6F, 0x81, 0x38, 0x5C,
-+ 0x52, 0x58, 0x39, 0x4C, 0x35, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x4C, 0x4A, 0x40, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x36, 0x3A,
-+ 0x21, 0x21, 0x21, 0x21, 0x55, 0x27, 0x3F, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x25, 0x3B, 0x21,
-+ 0x21, 0x21, 0x42, 0x2E, 0x2D, 0x2D, 0x26, 0x46,
-+ 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51,
-+ 0x44, 0x55, 0x21, 0x21, 0x35, 0x25, 0x40, 0x21,
-+ 0x21, 0x22, 0x4E, 0x58, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x39, 0x59, 0x38, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x56, 0x59, 0x23, 0x21, 0x21, 0x21,
-+ 0x21, 0x4C, 0x54, 0x5B, 0x59, 0x4C, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x57, 0x3A, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x4D, 0x49, 0x26, 0x23,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x53,
-+ 0x32, 0x51, 0x27, 0x42, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x42, 0x25, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x24, 0x37, 0x3E, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x48,
-+ 0x48, 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x3B, 0x39, 0x3F, 0x32, 0x5C, 0x38, 0x47, 0xD4,
-+ 0x7A, 0xC7, 0xCB, 0xD0, 0x74, 0x80, 0x8C, 0x9F,
-+ 0x80, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x73, 0x72, 0xD5, 0xCA, 0x61, 0xD3, 0x40, 0x5C,
-+ 0x46, 0x58, 0x51, 0x42, 0x33, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x39, 0x4B, 0x58, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x2A, 0x3D, 0x51,
-+ 0x21, 0x21, 0x21, 0x21, 0x55, 0x28, 0x42, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x47, 0x52, 0x21,
-+ 0x21, 0x21, 0x58, 0x59, 0x42, 0x3C, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x57,
-+ 0x4E, 0x23, 0x21, 0x22, 0x4D, 0x54, 0x35, 0x21,
-+ 0x21, 0x21, 0x5A, 0x46, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x56, 0x59, 0x36, 0x35, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x36, 0x5B, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x53, 0x48, 0x3F, 0x27, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x24, 0x47, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x22, 0x40, 0x27, 0x29, 0x29, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x47,
-+ 0x40, 0x41, 0x5C, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x39, 0x41, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x32, 0x26, 0x47, 0x28, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B,
-+ 0x53, 0x28, 0x36, 0x42, 0x23, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x4C, 0x39, 0x58, 0x32, 0x31, 0x38, 0x47, 0xD4,
-+ 0xCF, 0xD0, 0x6C, 0x9E, 0xD6, 0x6B, 0xD7, 0xD8,
-+ 0xD7, 0x6B, 0xCF, 0x7B, 0x80, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x74, 0x72, 0xD0, 0xA6, 0x70, 0x51,
-+ 0x46, 0x56, 0x51, 0x42, 0x55, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x5C, 0x27, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x32, 0x37, 0x54, 0x33,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x44, 0x2A, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x2C, 0x21,
-+ 0x21, 0x21, 0x47, 0x36, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52,
-+ 0x54, 0x23, 0x21, 0x24, 0x4F, 0x46, 0x21, 0x21,
-+ 0x21, 0x21, 0x38, 0x2C, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x42, 0x55, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x45, 0x54, 0x56, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x53, 0x24, 0x21, 0x21, 0x21, 0x21,
-+ 0x46, 0x5D, 0x4C, 0x52, 0x4E, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x31, 0x48, 0x22, 0x21, 0x21,
-+ 0x21, 0x22, 0x46, 0x54, 0x3B, 0x45, 0x29, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x47,
-+ 0x28, 0x28, 0x55, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x51, 0x41, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x56, 0x54, 0x39, 0x56, 0x28, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x34, 0x50, 0x30, 0x4E, 0x40, 0x34, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x4C, 0x39, 0x58, 0x52, 0x5C, 0x38, 0x47, 0x9D,
-+ 0xC9, 0xD9, 0xDA, 0xDB, 0xDC, 0xDC, 0xDC, 0xDC,
-+ 0xDC, 0xDC, 0xDC, 0xDD, 0x6B, 0x7B, 0x75, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x74, 0x71, 0xD0, 0x3F,
-+ 0x52, 0x57, 0x2A, 0x42, 0x2B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x47, 0x3A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x35, 0x45, 0x4A, 0x2C, 0x3B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x30, 0x56, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x58, 0x29, 0x21,
-+ 0x21, 0x21, 0x53, 0x3F, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x31,
-+ 0x43, 0x22, 0x3B, 0x28, 0x48, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x56, 0x25, 0x35, 0x21, 0x21, 0x21,
-+ 0x39, 0x54, 0x34, 0x21, 0x21, 0x21, 0x35, 0x3A,
-+ 0x30, 0x57, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0x39, 0x21, 0x21,
-+ 0x21, 0x35, 0x25, 0x3F, 0x21, 0x21, 0x21, 0x56,
-+ 0x30, 0x58, 0x21, 0x24, 0x43, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4D, 0x29, 0x22, 0x21, 0x21,
-+ 0x22, 0x32, 0x26, 0x42, 0x21, 0x46, 0x2C, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x48,
-+ 0x2E, 0x36, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x56, 0x28, 0x35, 0x21, 0x21,
-+ 0x21, 0x3F, 0x27, 0x32, 0x21, 0x51, 0x25, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x22, 0x39, 0x38, 0x25, 0x54, 0x50,
-+ 0x58, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x4C, 0x3F, 0x56, 0x52, 0x31, 0x4D, 0x47, 0x39,
-+ 0xD8, 0xDC, 0xDC, 0xDC, 0xDE, 0xDF, 0xDF, 0xDF,
-+ 0xDF, 0xDF, 0xDE, 0xDE, 0xDC, 0xDD, 0xD6, 0x97,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x97, 0x56,
-+ 0x46, 0x57, 0x2A, 0x42, 0x2B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x38, 0x29, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x35, 0x5B, 0x3D, 0x40, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x59, 0x3F, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x40, 0x5A, 0x21,
-+ 0x21, 0x22, 0x5D, 0x34, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x5B,
-+ 0x2C, 0x33, 0x29, 0x28, 0x3B, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x34, 0x59, 0x3C, 0x21, 0x21, 0x2B,
-+ 0x53, 0x36, 0x22, 0x21, 0x21, 0x34, 0x5A, 0x28,
-+ 0x3F, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x40, 0x41, 0x23, 0x21,
-+ 0x21, 0x3B, 0x28, 0x2B, 0x21, 0x21, 0x2A, 0x44,
-+ 0x38, 0x22, 0x21, 0x24, 0x50, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x50, 0x25, 0x23, 0x21, 0x23,
-+ 0x45, 0x5D, 0x52, 0x21, 0x21, 0x40, 0x50, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x50,
-+ 0x2D, 0x39, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x46, 0x30, 0x33, 0x21, 0x22,
-+ 0x24, 0x4E, 0x45, 0x22, 0x21, 0x58, 0x25, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, 0x3C, 0x48,
-+ 0x27, 0x39, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x34, 0x3F, 0x58, 0x57, 0x31, 0x4D, 0x47, 0x56,
-+ 0xDB, 0xDC, 0xDE, 0xE0, 0xE1, 0xE2, 0xE2, 0xE2,
-+ 0xE2, 0xE2, 0xE1, 0xE3, 0xE4, 0xDE, 0xDC, 0x6B,
-+ 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0xA7, 0x38,
-+ 0x46, 0x56, 0x2A, 0x39, 0x3B, 0x23, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x32, 0x44, 0x34, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x3F,
-+ 0x4D, 0x41, 0x29, 0x42, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x44, 0x46, 0x34,
-+ 0x2B, 0x55, 0x55, 0x2B, 0x56, 0x59, 0x36, 0x21,
-+ 0x21, 0x22, 0x59, 0x2B, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x55, 0x5C, 0x21, 0x21, 0x21, 0x40,
-+ 0x50, 0x4D, 0x4F, 0x32, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x55, 0x44, 0x31, 0x22, 0x3B, 0x5A,
-+ 0x41, 0x55, 0x21, 0x35, 0x57, 0x4A, 0x2E, 0x48,
-+ 0x57, 0x32, 0x3F, 0x55, 0x35, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x25, 0x47, 0x22, 0x21,
-+ 0x21, 0x4C, 0x28, 0x35, 0x21, 0x34, 0x30, 0x3A,
-+ 0x23, 0x21, 0x21, 0x58, 0x3A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4D, 0x4E, 0x35, 0x33, 0x48,
-+ 0x44, 0x56, 0x21, 0x21, 0x21, 0x58, 0x41, 0x23,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x29,
-+ 0x4A, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x32, 0x44, 0x2B, 0x23, 0x45,
-+ 0x3D, 0x31, 0x22, 0x21, 0x21, 0x4C, 0x27, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x53, 0x53, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x34, 0x3F, 0x58, 0x57, 0x40, 0x38, 0x47, 0xD4,
-+ 0xDC, 0xDE, 0xE0, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE2, 0xE1, 0xDF, 0xDC,
-+ 0xE6, 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x2A, 0x40,
-+ 0x46, 0x58, 0x2A, 0x42, 0x34, 0x34, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x2B, 0x54, 0x5A, 0x34, 0x23,
-+ 0x35, 0x23, 0x35, 0x33, 0x2B, 0x24, 0x54, 0x4B,
-+ 0x59, 0x5C, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4B, 0x44, 0x59,
-+ 0x27, 0x26, 0x26, 0x4A, 0x3E, 0x41, 0x55, 0x21,
-+ 0x21, 0x22, 0x41, 0x39, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x34, 0x53, 0x4D, 0x21, 0x21, 0x21, 0x5C,
-+ 0x4B, 0x4F, 0x40, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x48, 0x30, 0x50, 0x26, 0x54,
-+ 0x34, 0x21, 0x55, 0x4E, 0x2D, 0x2F, 0x4F, 0x37,
-+ 0x3E, 0x4B, 0x4B, 0x30, 0x27, 0x53, 0x2C, 0x57,
-+ 0x42, 0x4C, 0x55, 0x22, 0x22, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x39, 0x4A, 0x3F, 0x21, 0x21,
-+ 0x21, 0x55, 0x53, 0x55, 0x2A, 0x26, 0x54, 0x33,
-+ 0x21, 0x21, 0x21, 0x51, 0x54, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x51, 0x3D, 0x46, 0x5A, 0x4F,
-+ 0x52, 0x21, 0x21, 0x21, 0x21, 0x22, 0x27, 0x31,
-+ 0x33, 0x23, 0x42, 0x4C, 0x21, 0x21, 0x21, 0x5B,
-+ 0x54, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3B, 0x44, 0x45, 0x48, 0x4B,
-+ 0x38, 0x22, 0x21, 0x21, 0x21, 0x21, 0x53, 0x48,
-+ 0x33, 0x23, 0x34, 0x3C, 0x22, 0x57, 0x4D, 0x33,
-+ 0x21, 0x21, 0x21, 0x21, 0x22, 0x23, 0x34, 0x40,
-+ 0x44, 0x31, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x3B, 0x42, 0x2A, 0x57, 0x31, 0x38, 0x5C, 0xD8,
-+ 0xDC, 0xE4, 0xE2, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE2, 0xE0,
-+ 0xDE, 0xCA, 0x9F, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x80, 0x76, 0x57, 0x5C,
-+ 0x31, 0x6E, 0x34, 0x3C, 0xC9, 0x3B, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x33, 0x5B, 0x30, 0x25,
-+ 0x5D, 0x5A, 0x53, 0x27, 0x26, 0x59, 0x36, 0x56,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x3D, 0x2A, 0x55,
-+ 0x42, 0x51, 0x56, 0x24, 0x2A, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x45, 0x53, 0x3B, 0x22, 0x22, 0x35,
-+ 0x46, 0x59, 0x54, 0x55, 0x21, 0x21, 0x21, 0x31,
-+ 0x2D, 0x47, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x33, 0x50, 0x5D, 0x45, 0x55,
-+ 0x21, 0x21, 0x34, 0x4F, 0x29, 0x58, 0x33, 0x4C,
-+ 0x39, 0x3C, 0x2A, 0x40, 0x48, 0x54, 0x3D, 0x3D,
-+ 0x37, 0x4A, 0x59, 0x29, 0x5B, 0x36, 0x52, 0x2A,
-+ 0x42, 0x3C, 0x32, 0x30, 0x41, 0x35, 0x21, 0x21,
-+ 0x21, 0x33, 0x41, 0x26, 0x4B, 0x5A, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x3E, 0x41, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x41, 0x49, 0x30, 0x32,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x4F,
-+ 0x5D, 0x41, 0x27, 0x58, 0x21, 0x21, 0x21, 0x5B,
-+ 0x41, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x47, 0x49, 0x4F, 0x5C,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x39, 0x4A,
-+ 0x28, 0x43, 0x27, 0x5C, 0x35, 0x25, 0x49, 0x5B,
-+ 0x58, 0x52, 0x5C, 0x38, 0x48, 0x41, 0x4A, 0x4B,
-+ 0x50, 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x3B, 0x3C, 0x2A, 0x32, 0x5C, 0x40, 0x32, 0xDD,
-+ 0xDC, 0xE3, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE1, 0xE0, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x80, 0xE7, 0x58, 0x52,
-+ 0x5C, 0x67, 0xE7, 0x6C, 0xE8, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x23, 0x39, 0x5C,
-+ 0x29, 0x5A, 0x4D, 0x5C, 0x2A, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x44, 0x42, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x33, 0x27, 0x30, 0x5A, 0x2C, 0x25,
-+ 0x4B, 0x50, 0x3B, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x2C, 0x3B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4C, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x55, 0x2B,
-+ 0x39, 0x32, 0x4D, 0x29, 0x26, 0x3D, 0x2D, 0x2D,
-+ 0x4B, 0x4B, 0x2F, 0x30, 0x42, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x3B, 0x29, 0x2C, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x50, 0x4D, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x32, 0x3B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51,
-+ 0x48, 0x45, 0x34, 0x21, 0x21, 0x21, 0x21, 0x38,
-+ 0x44, 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0x32, 0x34, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3C,
-+ 0x5B, 0x4D, 0x42, 0x21, 0x21, 0x34, 0x4D, 0x47,
-+ 0x5A, 0x5D, 0x27, 0x4E, 0x25, 0x3A, 0x5C, 0x42,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x2B, 0x34, 0x51, 0x56, 0x46, 0x40, 0xE9, 0xDA,
-+ 0xDD, 0xE1, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE2, 0xEA, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x76, 0xD3, 0x67, 0x39,
-+ 0x3C, 0xCF, 0xD5, 0x9F, 0x3B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x28, 0x2B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x53, 0x44, 0x3D, 0x43,
-+ 0x57, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x35, 0x55, 0x3F, 0x2A,
-+ 0x57, 0x24, 0x3F, 0x3B, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55,
-+ 0x3C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x55, 0x4C, 0x3F, 0x58, 0x46, 0x31, 0x8B, 0xAD,
-+ 0xCC, 0xE2, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xEA, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x97, 0x35, 0x6E, 0xC6, 0x82,
-+ 0xA6, 0x73, 0x75, 0xBA, 0x2B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x34, 0x44, 0x3B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x33, 0x34, 0xEB, 0x34, 0x57, 0x5C, 0x4C, 0xA4,
-+ 0xEC, 0x64, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0x83, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x80, 0xED, 0xCF, 0xCE, 0x78, 0x78,
-+ 0x78, 0x7A, 0x6D, 0x34, 0x22, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x55, 0x25, 0x55, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x34, 0xEE, 0xEF, 0x5F, 0x96, 0x23, 0xB3,
-+ 0xBF, 0xB5, 0xF0, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x9F, 0x78, 0x78, 0x78, 0x78,
-+ 0x80, 0x9F, 0x65, 0x33, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x28, 0x55, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x4C, 0xF1, 0xA5, 0xAC, 0xAB, 0x60, 0xB3,
-+ 0xB3, 0xF2, 0xEA, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xF3, 0x6D, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x80, 0x61, 0x34, 0x23, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x25, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B, 0x5E,
-+ 0x4C, 0x3B, 0xF4, 0xA5, 0x9B, 0x9B, 0xB4, 0xEF,
-+ 0xEF, 0xBF, 0xAD, 0xF5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0x67, 0x75, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80,
-+ 0xA7, 0x3F, 0x55, 0x22, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4E, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B, 0x5F,
-+ 0x9B, 0xD2, 0x3C, 0xB7, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xB3, 0xB8, 0xEA, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xF0, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x82,
-+ 0x34, 0x3B, 0x33, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x5D, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x60,
-+ 0xAB, 0xA5, 0xB8, 0xB1, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xF6, 0xB7, 0xB5, 0xF0, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0x67, 0x80, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x80, 0x9F, 0xBA, 0x42,
-+ 0x4C, 0x2B, 0x22, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x3A, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55,
-+ 0xF2, 0x9B, 0x9B, 0xB4, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB4, 0x5F, 0x63, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xF5,
-+ 0x76, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x80, 0x6D, 0x65, 0x3C, 0x34,
-+ 0x3B, 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2A, 0x29, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0xF7, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB3, 0xB8, 0xEA, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xF8, 0x68,
-+ 0x7A, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x80, 0x97, 0x82, 0x39, 0x39, 0x34, 0x3B,
-+ 0x33, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2A, 0x29, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x3B, 0xB8, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xF6, 0xB2, 0xF9, 0xFA, 0xFA, 0xFA,
-+ 0xFA, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0x6F, 0x97,
-+ 0x80, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x8C, 0x61, 0x39, 0x2A, 0x3F, 0x3C, 0x4C, 0x55,
-+ 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x31, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0xFB, 0xF6, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB3, 0xB2, 0xF9, 0xF3, 0xF3, 0xF3,
-+ 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0x90, 0x6D, 0x97,
-+ 0x8C, 0x6D, 0x76, 0xBB, 0xC6, 0xB9, 0xC0, 0xFC,
-+ 0xAD, 0xFB, 0x2A, 0x58, 0x42, 0x4C, 0x55, 0x33,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x33, 0xD2, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB4, 0xB8, 0xEB, 0xE8, 0x7F, 0xD6,
-+ 0xD6, 0xD6, 0xD6, 0x9D, 0x9D, 0x52, 0xEB, 0x5F,
-+ 0x5F, 0x5F, 0xF2, 0xA4, 0xBF, 0xBF, 0xB4, 0xBF,
-+ 0xEE, 0x56, 0x2A, 0x42, 0x4C, 0x2B, 0x33, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x4C, 0xBE, 0xF6, 0xEF, 0xEF, 0xEF,
-+ 0xF6, 0xB4, 0xB2, 0xF1, 0x3C, 0x56, 0x46, 0x5C,
-+ 0x31, 0x38, 0x40, 0x40, 0x4D, 0x4D, 0xB8, 0xAC,
-+ 0xBF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xB4,
-+ 0xB1, 0x39, 0x39, 0x3B, 0x2B, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3B, 0xAD, 0xA4, 0xBF, 0xBF,
-+ 0xB7, 0xB2, 0xEE, 0x5E, 0x39, 0x51, 0x2A, 0x32,
-+ 0x52, 0x46, 0x5C, 0x31, 0x31, 0x2A, 0xA5, 0xEF,
-+ 0xFD, 0xB4, 0xEF, 0xF6, 0xF6, 0xEF, 0xF6, 0xB2,
-+ 0x3F, 0x34, 0x2B, 0x55, 0x23, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0xEB, 0xF7, 0xAA,
-+ 0xAA, 0xF7, 0xEB, 0x55, 0x3B, 0x3C, 0x39, 0x51,
-+ 0x2A, 0x56, 0x32, 0x57, 0x57, 0x2A, 0x96, 0x3C,
-+ 0x2A, 0xEE, 0xEF, 0x5F, 0xD2, 0xEF, 0xB4, 0xAA,
-+ 0x42, 0x55, 0x35, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x3B,
-+ 0x3B, 0x35, 0x21, 0x23, 0x33, 0x3B, 0x4C, 0x3C,
-+ 0x39, 0x3F, 0x51, 0x2A, 0x51, 0x51, 0x58, 0x32,
-+ 0x56, 0xF4, 0xB1, 0x42, 0x3C, 0xF2, 0x9C, 0x3F,
-+ 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x33, 0x55,
-+ 0x3B, 0x4C, 0x4C, 0x3C, 0x42, 0x42, 0x3C, 0x34,
-+ 0x34, 0x3F, 0x4C, 0x3B, 0x4C, 0x3B, 0x3C, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x35, 0x33, 0x55, 0x33, 0x33, 0x33, 0x55, 0x2B,
-+ 0x2B, 0x35, 0x35, 0x35, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
- };
-
- #endif /* !__HAVE_ARCH_LINUX_LOGO */
-@@ -994,7 +1760,7 @@
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
- };
-
- #endif /* !__HAVE_ARCH_LINUX_LOGOBW */
-@@ -1401,7 +2167,7 @@
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- };
-
- #endif /* !__HAVE_ARCH_LINUX_LOGO16 */
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/mkdep.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/mkdep.patch
deleted file mode 100644
index 4daeaa11be..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/mkdep.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Made by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- linux/Makefile~mkdep 2003-12-19 09:36:51.000000000 -0800
-+++ linux/Makefile 2003-12-19 09:57:44.000000000 -0800
-@@ -458,7 +458,7 @@
-
- dep-files: scripts/mkdep archdep include/linux/version.h
- scripts/mkdep -- init/*.c > .depend
-- scripts/mkdep -- `find $(FINDHPATH) -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` > .hdepend
-+ $(foreach, dir, $(FINDHPATH), scripts/mkdep -- `find $(dir) -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` >> .hdepend)
- $(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS)) _FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)"
- ifdef CONFIG_MODVERSIONS
- $(MAKE) update-modverfile
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/module_licence.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/module_licence.patch
deleted file mode 100644
index e70fc28031..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/module_licence.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux/drivers/usb/device/bi/sa1100.c~modulelicence
-+++ linux/drivers/usb/device/bi/sa1100.c
-@@ -43,6 +43,7 @@
- #include "../usbd-build.h"
- #include "../usbd-module.h"
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device SA-1100 Bus Interface");
-
---- linux/drivers/usb/device/usbd.c~modulelicence
-+++ linux/drivers/usb/device/usbd.c
-@@ -72,6 +72,7 @@
- #include "usbd-build.h"
- #include "usbd-module.h"
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device Core Support");
-
---- linux/drivers/usb/device/usbd-monitor.c~modulelicence
-+++ linux/drivers/usb/device/usbd-monitor.c
-@@ -35,6 +35,7 @@
- #include "usbd-build.h"
- #include "usbd-module.h"
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device Monitor");
- USBD_MODULE_INFO ("usbd_monitor 0.3");
---- linux/drivers/usb/device/net_fd/net-fd.c~modulelicence
-+++ linux/drivers/usb/device/net_fd/net-fd.c
-@@ -33,6 +33,7 @@
- #include "../usbd-build.h"
- #include "../usbd-module.h"
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device Network Function");
-
---- linux/arch/arm/mach-sa1100/deviceinfo.c~modulelicence
-+++ linux/arch/arm/mach-sa1100/deviceinfo.c
-@@ -28,6 +28,7 @@
-
- #define MODULE_NAME "deviceinfo"
- #define DEVINFO_DIRNAME "deviceinfo"
-+MODULE_LICENSE("GPL");
-
- static int proc_read_deviceinfo(struct file * file, char * buf,
- size_t nbytes, loff_t *ppos);
---- linux/arch/arm/mach-sa1100/gpio.c~modulelicence
-+++ linux/arch/arm/mach-sa1100/gpio.c
-@@ -15,7 +15,7 @@
-
- #include <asm/hardware.h>
-
--
-+MODULE_LICENSE("GPL");
-
- static int proc_gpio_read(char *page, char **start, off_t off,
- int count, int *eof, void *data)
---- linux/drivers/usb/device/serial_fd/serial.c~modulelicence
-+++ linux/drivers/usb/device/serial_fd/serial.c
-@@ -80,6 +80,7 @@
- #include "../usbd-module.h"
-
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device Serial Function");
-
---- linux/drivers/usb/device/usbd-serialnumber.c~modulelicence
-+++ linux/drivers/usb/device/usbd-serialnumber.c
-@@ -33,6 +33,7 @@
- #include "usbd-build.h"
- #include "usbd-module.h"
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device Monitor");
- USBD_MODULE_INFO ("usbd_monitor 0.2-alpha");
---- linux/drivers/usb/device/bi/pxa.c~modulelicence
-+++ linux/drivers/usb/device/bi/pxa.c
-@@ -48,6 +48,7 @@
- #include "../usbd-build.h"
- #include "../usbd-module.h"
-
-+MODULE_LICENSE ("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("Xscale USB Device Bus Interface");
-
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/piro.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/piro.patch
deleted file mode 100644
index ebde460369..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/piro.patch
+++ /dev/null
@@ -1,75444 +0,0 @@
-diff -Nur linux_c860_org/CREDITS linux/CREDITS
---- linux_c860_org/CREDITS 2002-08-26 14:43:17.000000000 +0900
-+++ linux/CREDITS 2004-06-10 21:09:10.000000000 +0900
-@@ -981,8 +981,8 @@
-
- N: Nigel Gamble
- E: nigel@nrg.org
--E: nigel@sgi.com
- D: Interrupt-driven printer driver
-+D: Preemptible kernel
- S: 120 Alley Way
- S: Mountain View, California 94040
- S: USA
-diff -Nur linux_c860_org/Documentation/Configure.help linux/Documentation/Configure.help
---- linux_c860_org/Documentation/Configure.help 2002-10-09 10:20:29.000000000 +0900
-+++ linux/Documentation/Configure.help 2004-06-10 21:09:10.000000000 +0900
-@@ -266,6 +266,29 @@
- If you have a system with several CPUs, you do not need to say Y
- here: the local APIC will be used automatically.
-
-+Preemptible Kernel
-+CONFIG_PREEMPT
-+ This option reduces the latency of the kernel when reacting to
-+ real-time or interactive events by allowing a low priority process to
-+ be preempted even if it is in kernel mode executing a system call.
-+ This allows applications to run more reliably even when the system is
-+ under load.
-+
-+ Say Y here if you are building a kernel for a desktop, embedded or
-+ real-time system. Say N if you are unsure.
-+
-+Break Selected Locks
-+CONFIG_LOCK_BREAK
-+ This option will break certain locks in high-latency regions
-+ throughout the kernel. It is intended for use in conjunction with
-+ the preemptible kernel (CONFIG_PREEMPT). Since in-kernel preemption
-+ can not occur while locks are held, temporarily releasing and then
-+ reacquiring long-held locks will further improve system response.
-+
-+ Say Y if you are compiling for a system with strict latency
-+ requirements such as an embedded, real-time, or audio processing
-+ system. Say N otherwise.
-+
- Kernel math emulation
- CONFIG_MATH_EMULATION
- Linux can emulate a math coprocessor (used for floating point
-diff -Nur linux_c860_org/Documentation/preempt-locking.txt linux/Documentation/preempt-locking.txt
---- linux_c860_org/Documentation/preempt-locking.txt 1970-01-01 09:00:00.000000000 +0900
-+++ linux/Documentation/preempt-locking.txt 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,104 @@
-+ Proper Locking Under a Preemptible Kernel:
-+ Keeping Kernel Code Preempt-Safe
-+ Robert Love <rml@tech9.net>
-+ Last Updated: 22 Jan 2002
-+
-+
-+INTRODUCTION
-+
-+
-+A preemptible kernel creates new locking issues. The issues are the same as
-+those under SMP: concurrency and reentrancy. Thankfully, the Linux preemptible
-+kernel model leverages existing SMP locking mechanisms. Thus, the kernel
-+requires explicit additional locking for very few additional situations.
-+
-+This document is for all kernel hackers. Developing code in the kernel
-+requires protecting these situations.
-+
-+
-+RULE #1: Per-CPU data structures need explicit protection
-+
-+
-+Two similar problems arise. An example code snippet:
-+
-+ struct this_needs_locking tux[NR_CPUS];
-+ tux[smp_processor_id()] = some_value;
-+ /* task is preempted here... */
-+ something = tux[smp_processor_id()];
-+
-+First, since the data is per-CPU, it may not have explicit SMP locking, but
-+require it otherwise. Second, when a preempted task is finally rescheduled,
-+the previous value of smp_processor_id may not equal the current. You must
-+protect these situations by disabling preemption around them.
-+
-+
-+RULE #2: CPU state must be protected.
-+
-+
-+Under preemption, the state of the CPU must be protected. This is arch-
-+dependent, but includes CPU structures and state not preserved over a context
-+switch. For example, on x86, entering and exiting FPU mode is now a critical
-+section that must occur while preemption is disabled. Think what would happen
-+if the kernel is executing a floating-point instruction and is then preempted.
-+Remember, the kernel does not save FPU state except for user tasks. Therefore,
-+upon preemption, the FPU registers will be sold to the lowest bidder. Thus,
-+preemption must be disabled around such regions.
-+
-+Note, some FPU functions are already explicitly preempt safe. For example,
-+kernel_fpu_begin and kernel_fpu_end will disable and enable preemption.
-+However, math_state_restore must be called with preemption disabled.
-+
-+
-+RULE #3: Lock acquire and release must be performed by same task
-+
-+
-+A lock acquired in one task must be released by the same task. This
-+means you can't do oddball things like acquire a lock and go off to
-+play while another task releases it. If you want to do something
-+like this, acquire and release the task in the same code path and
-+have the caller wait on an event by the other task.
-+
-+
-+SOLUTION
-+
-+
-+Data protection under preemption is achieved by disabling preemption for the
-+duration of the critical region.
-+
-+preempt_enable() decrement the preempt counter
-+preempt_disable() increment the preempt counter
-+preempt_enable_no_resched() decrement, but do not immediately preempt
-+preempt_get_count() return the preempt counter
-+
-+The functions are nestable. In other words, you can call preempt_disable
-+n-times in a code path, and preemption will not be reenabled until the n-th
-+call to preempt_enable. The preempt statements define to nothing if
-+preemption is not enabled.
-+
-+Note that you do not need to explicitly prevent preemption if you are holding
-+any locks or interrupts are disabled, since preemption is implicitly disabled
-+in those cases.
-+
-+Example:
-+
-+ cpucache_t *cc; /* this is per-CPU */
-+ preempt_disable();
-+ cc = cc_data(searchp);
-+ if (cc && cc->avail) {
-+ __free_block(searchp, cc_entry(cc), cc->avail);
-+ cc->avail = 0;
-+ }
-+ preempt_enable();
-+ return 0;
-+
-+Notice how the preemption statements must encompass every reference of the
-+critical variables. Another example:
-+
-+ int buf[NR_CPUS];
-+ set_cpu_val(buf);
-+ if (buf[smp_processor_id()] == -1) printf(KERN_INFO "wee!\n");
-+ spin_lock(&buf_lock);
-+ /* ... */
-+
-+This code is not preempt-safe, but see how easily we can fix it by simply
-+moving the spin_lock up two lines.
-diff -Nur linux_c860_org/MAINTAINERS linux/MAINTAINERS
---- linux_c860_org/MAINTAINERS 2002-08-26 14:43:17.000000000 +0900
-+++ linux/MAINTAINERS 2004-06-10 21:09:10.000000000 +0900
-@@ -1255,6 +1255,14 @@
- M: mostrows@styx.uwaterloo.ca
- S: Maintained
-
-+PREEMPTIBLE KERNEL
-+P: Robert M. Love
-+M: rml@tech9.net
-+L: linux-kernel@vger.kernel.org
-+L: kpreempt-tech@lists.sourceforge.net
-+W: http://tech9.net/rml/linux
-+S: Supported
-+
- PROMISE DC4030 CACHING DISK CONTROLLER DRIVER
- P: Peter Denison
- M: promise@pnd-pc.demon.co.uk
-diff -Nur linux_c860_org/arch/alpha/kernel/entry.S linux/arch/alpha/kernel/entry.S
---- linux_c860_org/arch/alpha/kernel/entry.S 2002-08-26 14:39:34.000000000 +0900
-+++ linux/arch/alpha/kernel/entry.S 2004-06-10 21:09:10.000000000 +0900
-@@ -231,12 +231,12 @@
- .end kernel_clone
-
- /*
-- * kernel_thread(fn, arg, clone_flags)
-+ * arch_kernel_thread(fn, arg, clone_flags)
- */
- .align 3
- .globl kernel_thread
- .ent kernel_thread
--kernel_thread:
-+arch_kernel_thread:
- ldgp $29,0($27) /* we can be called from a module */
- .frame $30, 4*8, $26
- subq $30,4*8,$30
-diff -Nur linux_c860_org/arch/arm/boot/compressed/head-xscale.S linux/arch/arm/boot/compressed/head-xscale.S
---- linux_c860_org/arch/arm/boot/compressed/head-xscale.S 2002-12-18 19:27:19.000000000 +0900
-+++ linux/arch/arm/boot/compressed/head-xscale.S 2004-06-10 21:09:10.000000000 +0900
-@@ -5,6 +5,7 @@
- *
- * ChangLog:
- * 12-Dec-2002 Lineo Japan, Inc.
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #include <linux/config.h>
-@@ -51,3 +52,7 @@
- #ifdef CONFIG_ARCH_PXA_CORGI
- mov r7, #MACH_TYPE_CORGI
- #endif
-+
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+ mov r7, #MACH_TYPE_TOSA
-+#endif
-diff -Nur linux_c860_org/arch/arm/config.in linux/arch/arm/config.in
---- linux_c860_org/arch/arm/config.in 2003-10-09 14:41:35.000000000 +0900
-+++ linux/arch/arm/config.in 2004-06-10 21:10:22.000000000 +0900
-@@ -196,16 +196,33 @@
- dep_bool ' Using Trial 0' CONFIG_POODLE_TR0 $CONFIG_ARCH_PXA_POODLE
- dep_bool ' SHARP Corgi' CONFIG_ARCH_PXA_CORGI $CONFIG_ARCH_PXA
- dep_bool ' Using Trial 0' CONFIG_CORGI_TR0 $CONFIG_ARCH_PXA_CORGI
-+dep_bool ' LCD Bufferable (EXPERIMENTAL)' CONFIG_CORGI_LCD_BUFF $CONFIG_ARCH_PXA_CORGI
- dep_bool ' SHARP Shepherd' CONFIG_ARCH_PXA_SHEPHERD $CONFIG_ARCH_PXA_CORGI
- dep_bool ' SHARP Husky' CONFIG_ARCH_PXA_HUSKY $CONFIG_ARCH_PXA_SHEPHERD
- dep_bool ' SHARP Boxer' CONFIG_ARCH_PXA_BOXER $CONFIG_ARCH_PXA_HUSKY
-+dep_bool ' SHARP Tosa' CONFIG_ARCH_PXA_TOSA $CONFIG_ARCH_PXA
-+dep_bool ' SHARP Tosa skipping' CONFIG_ARCH_PXA_TOSA_SKIP $CONFIG_ARCH_PXA_TOSA
-
- if [ "$CONFIG_SA1100_COLLIE" = "y" -o "$CONFIG_SABINAL_DISCOVERY" = "y" -o \
-- "$CONFIG_ARCH_PXA_POODLE" = "y" -o "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then
-+ "$CONFIG_ARCH_PXA_POODLE" = "y" -o "$CONFIG_ARCH_PXA_CORGI" = "y" -o \
-+ "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then
- define_bool CONFIG_ARCH_SHARP_SL y
- fi
-
--if [ "$CONFIG_ARCH_PXA_POODLE" = "y" -o "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then
-+
-+if [ "$CONFIG_ARCH_PXA_POODLE" = "y" -o "$CONFIG_ARCH_PXA_CORGI" = "y" -o \
-+ "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then
-+ bool 'Use clock change(cccr_change) enable (EXPERIMENTAL)' CONFIG_SL_CCCR_CHANGE
-+ if [ "$CONFIG_SL_CCCR162" != "y" -a "$CONFIG_SL_CCCR_CHANGE" = "y" ]; then
-+ bool 'Boot CCCR=0x242 (EXPERIMENTAL)' CONFIG_SL_CCCR242
-+ fi
-+ if [ "$CONFIG_SL_CCCR242" != "y" -a "$CONFIG_SL_CCCR_CHANGE" = "y" ]; then
-+ bool 'Boot CCCR=0x162 (DANGEROUS ESPECIALLY FOR SL-C700)' CONFIG_SL_CCCR162
-+ fi
-+fi
-+
-+if [ "$CONFIG_ARCH_PXA_POODLE" = "y" -o "$CONFIG_ARCH_PXA_CORGI" = "y" -o \
-+ "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then
- comment 'Language type'
- choice 'Language type' \
- "English CONFIG_ARCH_SHARP_SL_E \
-@@ -472,7 +489,10 @@
- else
- define_bool CONFIG_DISCONTIGMEM n
- fi
--
-+dep_bool 'Preemptible Kernel' CONFIG_PREEMPT $CONFIG_CPU_32
-+if [ "$CONFIG_PREEMPT" = "y" ]; then
-+ bool 'Break selected locks' CONFIG_LOCK_BREAK
-+fi
- endmenu
-
- mainmenu_option next_comment
-@@ -628,6 +648,9 @@
- if [ "$CONFIG_DEVICEINFO" = "m" -a "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then
- define_tristate CONFIG_CORGI_DEVICEINFO m
- fi
-+if [ "$CONFIG_DEVICEINFO" = "m" -a "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then
-+ define_tristate CONFIG_TOSA_DEVICEINFO m
-+fi
- endmenu
-
- source drivers/parport/Config.in
-diff -Nur linux_c860_org/arch/arm/def-configs/boxer-j linux/arch/arm/def-configs/boxer-j
---- linux_c860_org/arch/arm/def-configs/boxer-j 2003-11-07 11:37:08.000000000 +0900
-+++ linux/arch/arm/def-configs/boxer-j 2004-06-10 21:09:10.000000000 +0900
-@@ -299,6 +299,7 @@
- # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
- CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
- CONFIG_MTD_NAND_PAGE_CACHE=y
-+CONFIG_MTD_NAND_SHARP_SL_CORGI=y
- CONFIG_MTD_NAND_SHARP_SL=y
-
- #
-diff -Nur linux_c860_org/arch/arm/def-configs/corgi linux/arch/arm/def-configs/corgi
---- linux_c860_org/arch/arm/def-configs/corgi 2002-11-26 15:25:56.000000000 +0900
-+++ linux/arch/arm/def-configs/corgi 2004-06-10 21:09:10.000000000 +0900
-@@ -295,6 +295,7 @@
- # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
- CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
- CONFIG_MTD_NAND_PAGE_CACHE=y
-+CONFIG_MTD_NAND_SHARP_SL_CORGI=y
- CONFIG_MTD_NAND_SHARP_SL=y
-
- #
-diff -Nur linux_c860_org/arch/arm/def-configs/corgi_cramfs linux/arch/arm/def-configs/corgi_cramfs
---- linux_c860_org/arch/arm/def-configs/corgi_cramfs 2002-10-21 10:17:42.000000000 +0900
-+++ linux/arch/arm/def-configs/corgi_cramfs 2004-06-10 21:09:10.000000000 +0900
-@@ -297,6 +297,7 @@
- CONFIG_MTD_NAND_POST_BADBLOCK=y
- # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
- # CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS is not set
-+CONFIG_MTD_NAND_SHARP_SL_CORGI=y
- CONFIG_MTD_NAND_SHARP_SL=y
-
- #
-diff -Nur linux_c860_org/arch/arm/def-configs/corgi_initrd linux/arch/arm/def-configs/corgi_initrd
---- linux_c860_org/arch/arm/def-configs/corgi_initrd 2002-10-21 10:17:42.000000000 +0900
-+++ linux/arch/arm/def-configs/corgi_initrd 2004-06-10 21:09:10.000000000 +0900
-@@ -297,6 +297,7 @@
- CONFIG_MTD_NAND_POST_BADBLOCK=y
- # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
- # CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS is not set
-+CONFIG_MTD_NAND_SHARP_SL_CORGI=y
- CONFIG_MTD_NAND_SHARP_SL=y
-
- #
-diff -Nur linux_c860_org/arch/arm/def-configs/husky linux/arch/arm/def-configs/husky
---- linux_c860_org/arch/arm/def-configs/husky 2003-05-20 09:48:12.000000000 +0900
-+++ linux/arch/arm/def-configs/husky 2004-06-10 21:09:10.000000000 +0900
-@@ -298,6 +298,7 @@
- # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
- CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
- CONFIG_MTD_NAND_PAGE_CACHE=y
-+CONFIG_MTD_NAND_SHARP_SL_CORGI=y
- CONFIG_MTD_NAND_SHARP_SL=y
-
- #
-diff -Nur linux_c860_org/arch/arm/def-configs/husky-j linux/arch/arm/def-configs/husky-j
---- linux_c860_org/arch/arm/def-configs/husky-j 2003-05-20 09:48:12.000000000 +0900
-+++ linux/arch/arm/def-configs/husky-j 2004-06-10 21:09:10.000000000 +0900
-@@ -298,6 +298,7 @@
- # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
- CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
- CONFIG_MTD_NAND_PAGE_CACHE=y
-+CONFIG_MTD_NAND_SHARP_SL_CORGI=y
- CONFIG_MTD_NAND_SHARP_SL=y
-
- #
-diff -Nur linux_c860_org/arch/arm/def-configs/poodle linux/arch/arm/def-configs/poodle
---- linux_c860_org/arch/arm/def-configs/poodle 2002-11-26 15:25:56.000000000 +0900
-+++ linux/arch/arm/def-configs/poodle 2004-06-10 21:09:10.000000000 +0900
-@@ -295,6 +295,7 @@
- # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
- CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
- CONFIG_MTD_NAND_PAGE_CACHE=y
-+CONFIG_MTD_NAND_SHARP_SL_POODLE=y
- CONFIG_MTD_NAND_SHARP_SL=y
-
- #
-diff -Nur linux_c860_org/arch/arm/def-configs/poodle-j linux/arch/arm/def-configs/poodle-j
---- linux_c860_org/arch/arm/def-configs/poodle-j 2002-11-26 15:25:56.000000000 +0900
-+++ linux/arch/arm/def-configs/poodle-j 2004-06-10 21:09:10.000000000 +0900
-@@ -295,6 +295,7 @@
- # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
- CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
- CONFIG_MTD_NAND_PAGE_CACHE=y
-+CONFIG_MTD_NAND_SHARP_SL_POODLE=y
- CONFIG_MTD_NAND_SHARP_SL=y
-
- #
-diff -Nur linux_c860_org/arch/arm/def-configs/poodle_cramfs linux/arch/arm/def-configs/poodle_cramfs
---- linux_c860_org/arch/arm/def-configs/poodle_cramfs 2002-10-21 10:16:27.000000000 +0900
-+++ linux/arch/arm/def-configs/poodle_cramfs 2004-06-10 21:09:10.000000000 +0900
-@@ -298,6 +298,7 @@
- CONFIG_MTD_NAND_POST_BADBLOCK=y
- # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
- # CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS is not set
-+CONFIG_MTD_NAND_SHARP_SL_POODLE=y
- CONFIG_MTD_NAND_SHARP_SL=y
-
- #
-diff -Nur linux_c860_org/arch/arm/def-configs/shepherd linux/arch/arm/def-configs/shepherd
---- linux_c860_org/arch/arm/def-configs/shepherd 2003-04-04 08:55:58.000000000 +0900
-+++ linux/arch/arm/def-configs/shepherd 2004-06-10 21:09:10.000000000 +0900
-@@ -297,6 +297,7 @@
- # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
- CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
- CONFIG_MTD_NAND_PAGE_CACHE=y
-+CONFIG_MTD_NAND_SHARP_SL_CORGI=y
- CONFIG_MTD_NAND_SHARP_SL=y
-
- #
-diff -Nur linux_c860_org/arch/arm/def-configs/shepherd-j linux/arch/arm/def-configs/shepherd-j
---- linux_c860_org/arch/arm/def-configs/shepherd-j 2003-04-04 08:56:28.000000000 +0900
-+++ linux/arch/arm/def-configs/shepherd-j 2004-06-10 21:09:10.000000000 +0900
-@@ -297,6 +297,7 @@
- # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
- CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
- CONFIG_MTD_NAND_PAGE_CACHE=y
-+CONFIG_MTD_NAND_SHARP_SL_CORGI=y
- CONFIG_MTD_NAND_SHARP_SL=y
-
- #
-diff -Nur linux_c860_org/arch/arm/def-configs/tosa-j linux/arch/arm/def-configs/tosa-j
---- linux_c860_org/arch/arm/def-configs/tosa-j 1970-01-01 09:00:00.000000000 +0900
-+++ linux/arch/arm/def-configs/tosa-j 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,1156 @@
-+#
-+# Automatically generated by make menuconfig: don't edit
-+#
-+CONFIG_ARM=y
-+# CONFIG_EISA is not set
-+# CONFIG_SBUS is not set
-+# CONFIG_MCA is not set
-+CONFIG_UID16=y
-+CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-+# CONFIG_GENERIC_BUST_SPINLOCK is not set
-+# CONFIG_GENERIC_ISA_DMA is not set
-+
-+#
-+# Code maturity level options
-+#
-+CONFIG_EXPERIMENTAL=y
-+# CONFIG_OBSOLETE is not set
-+
-+#
-+# Loadable module support
-+#
-+CONFIG_MODULES=y
-+# CONFIG_MODVERSIONS is not set
-+CONFIG_KMOD=y
-+
-+#
-+# System Type
-+#
-+# CONFIG_ARCH_ANAKIN is not set
-+# CONFIG_ARCH_ARCA5K is not set
-+# CONFIG_ARCH_CLPS7500 is not set
-+# CONFIG_ARCH_CLPS711X is not set
-+# CONFIG_ARCH_CO285 is not set
-+CONFIG_ARCH_PXA=y
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_CAMELOT is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_INTEGRATOR is not set
-+# CONFIG_ARCH_L7200 is not set
-+# CONFIG_ARCH_MX1ADS is not set
-+# CONFIG_ARCH_RPC is not set
-+# CONFIG_ARCH_SA1100 is not set
-+# CONFIG_ARCH_SHARK is not set
-+
-+#
-+# Archimedes/A5000 Implementations
-+#
-+# CONFIG_ARCH_ARC is not set
-+# CONFIG_ARCH_A5K is not set
-+
-+#
-+# Footbridge Implementations
-+#
-+# CONFIG_ARCH_CATS is not set
-+# CONFIG_ARCH_PERSONAL_SERVER is not set
-+# CONFIG_ARCH_EBSA285_ADDIN is not set
-+# CONFIG_ARCH_EBSA285_HOST is not set
-+# CONFIG_ARCH_NETWINDER is not set
-+
-+#
-+# SA11x0 Implementations
-+#
-+# CONFIG_SA1100_ASSABET is not set
-+# CONFIG_ASSABET_NEPONSET is not set
-+# CONFIG_SA1100_ADSBITSY is not set
-+# CONFIG_SA1100_BRUTUS is not set
-+# CONFIG_SA1100_CEP is not set
-+# CONFIG_SA1100_CERF is not set
-+# CONFIG_SA1100_COLLIE is not set
-+# CONFIG_LOCOMO is not set
-+# CONFIG_COLLIE_TS is not set
-+# CONFIG_COLLIE_TR0 is not set
-+# CONFIG_COLLIE_TR1 is not set
-+# CONFIG_COLLIE_DEV is not set
-+# CONFIG_COLLIE_G is not set
-+# CONFIG_SA1100_H3100 is not set
-+# CONFIG_SA1100_H3600 is not set
-+# CONFIG_SA1100_H3800 is not set
-+# CONFIG_SA1100_H3XXX is not set
-+# CONFIG_SA1100_EXTENEX1 is not set
-+# CONFIG_SA1100_FLEXANET is not set
-+# CONFIG_SA1100_FREEBIRD is not set
-+# CONFIG_SA1100_FRODO is not set
-+# CONFIG_SA1100_GRAPHICSCLIENT is not set
-+# CONFIG_SA1100_GRAPHICSMASTER is not set
-+# CONFIG_SA1100_BADGE4 is not set
-+# CONFIG_SA1100_JORNADA720 is not set
-+# CONFIG_SA1100_HUW_WEBPANEL is not set
-+# CONFIG_SA1100_ITSY is not set
-+# CONFIG_SA1100_LART is not set
-+# CONFIG_SA1100_NANOENGINE is not set
-+# CONFIG_SA1100_OMNIMETER is not set
-+# CONFIG_SA1100_PANGOLIN is not set
-+# CONFIG_SA1100_PLEB is not set
-+# CONFIG_SA1100_PT_SYSTEM3 is not set
-+# CONFIG_SA1100_SHANNON is not set
-+# CONFIG_SA1100_SHERMAN is not set
-+# CONFIG_SA1100_SIMPAD is not set
-+# CONFIG_SA1100_PFS168 is not set
-+# CONFIG_SA1100_VICTOR is not set
-+# CONFIG_SA1100_XP860 is not set
-+# CONFIG_SA1100_YOPY is not set
-+# CONFIG_SA1100_USB is not set
-+# CONFIG_SA1100_USB_NETLINK is not set
-+# CONFIG_SA1100_USB_CHAR is not set
-+# CONFIG_H3600_SLEEVE is not set
-+
-+#
-+# Intel PXA250/210 Implementations
-+#
-+# CONFIG_ARCH_LUBBOCK is not set
-+# CONFIG_ARCH_PXA_IDP is not set
-+# CONFIG_ARCH_PXA_CERF is not set
-+# CONFIG_COTULLA_DMA is not set
-+# CONFIG_SABINAL_DISCOVERY is not set
-+# CONFIG_ARCH_SABINAL is not set
-+# CONFIG_ARCH_PXA_POODLE is not set
-+# CONFIG_POODLE_TR0 is not set
-+# CONFIG_ARCH_PXA_CORGI is not set
-+# CONFIG_CORGI_TR0 is not set
-+# CONFIG_ARCH_PXA_SHEPHERD is not set
-+# CONFIG_ARCH_PXA_HUSKY is not set
-+CONFIG_ARCH_PXA_TOSA=y
-+CONFIG_ARCH_PXA_TOSA_SKIP=y
-+CONFIG_ARCH_SHARP_SL=y
-+# CONFIG_ARCH_SHARP_SL_E is not set
-+# CONFIG_ARCH_SHARP_SL_V is not set
-+# CONFIG_ARCH_SHARP_SL_G is not set
-+CONFIG_ARCH_SHARP_SL_J=y
-+# CONFIG_ARCH_SHARP_SL_S is not set
-+# CONFIG_ARCH_SHARP_SL_I is not set
-+# CONFIG_PXA_USB is not set
-+# CONFIG_PXA_USB_NETLINK is not set
-+# CONFIG_PXA_USB_CHAR is not set
-+
-+#
-+# CLPS711X/EP721X Implementations
-+#
-+# CONFIG_ARCH_AUTCPU12 is not set
-+# CONFIG_ARCH_CDB89712 is not set
-+# CONFIG_ARCH_CLEP7312 is not set
-+# CONFIG_ARCH_EDB7211 is not set
-+# CONFIG_ARCH_P720T is not set
-+# CONFIG_ARCH_FORTUNET is not set
-+# CONFIG_ARCH_EP7211 is not set
-+# CONFIG_ARCH_EP7212 is not set
-+# CONFIG_ARCH_ACORN is not set
-+# CONFIG_FOOTBRIDGE is not set
-+# CONFIG_FOOTBRIDGE_HOST is not set
-+# CONFIG_FOOTBRIDGE_ADDIN is not set
-+CONFIG_CPU_32=y
-+# CONFIG_CPU_26 is not set
-+# CONFIG_CPU_32v3 is not set
-+# CONFIG_CPU_32v4 is not set
-+# CONFIG_CPU_ARM610 is not set
-+# CONFIG_CPU_ARM710 is not set
-+# CONFIG_CPU_ARM720T is not set
-+# CONFIG_CPU_ARM920T is not set
-+# CONFIG_CPU_ARM922T is not set
-+# CONFIG_PLD is not set
-+# CONFIG_CPU_ARM926T is not set
-+# CONFIG_CPU_ARM1020 is not set
-+# CONFIG_CPU_SA110 is not set
-+# CONFIG_CPU_SA1100 is not set
-+CONFIG_CPU_32v5=y
-+CONFIG_CPU_XSCALE=y
-+CONFIG_BATT=y
-+# CONFIG_XSCALE_CACHE_ERRATA is not set
-+CONFIG_ARM_THUMB=y
-+CONFIG_ARM_FCSE=y
-+# CONFIG_DISCONTIGMEM is not set
-+
-+#
-+# General setup
-+#
-+# CONFIG_PCI is not set
-+# CONFIG_ISA is not set
-+# CONFIG_ISA_DMA is not set
-+# CONFIG_ZBOOT_ROM is not set
-+CONFIG_ZBOOT_ROM_TEXT=0
-+CONFIG_ZBOOT_ROM_BSS=0
-+CONFIG_HOTPLUG=y
-+
-+#
-+# PCMCIA/CardBus support
-+#
-+CONFIG_PCMCIA=y
-+# CONFIG_I82092 is not set
-+# CONFIG_I82365 is not set
-+# CONFIG_TCIC is not set
-+# CONFIG_PCMCIA_CLPS6700 is not set
-+# CONFIG_PCMCIA_SA1100 is not set
-+CONFIG_PCMCIA_PXA=y
-+CONFIG_NET=y
-+CONFIG_SYSVIPC=y
-+# CONFIG_BSD_PROCESS_ACCT is not set
-+CONFIG_SYSCTL=y
-+CONFIG_FPE_NWFPE=y
-+# CONFIG_FPE_FASTFPE is not set
-+CONFIG_KCORE_ELF=y
-+# CONFIG_KCORE_AOUT is not set
-+CONFIG_BINFMT_AOUT=y
-+CONFIG_BINFMT_ELF=y
-+# CONFIG_BINFMT_MISC is not set
-+CONFIG_PM=y
-+CONFIG_APM=y
-+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-+CONFIG_APM_CPU_IDLE=y
-+CONFIG_APM_DISPLAY_BLANK=y
-+CONFIG_APM_RTC_IS_GMT=y
-+# CONFIG_ARTHUR is not set
-+CONFIG_CMDLINE="console=ttyS0 root=/dev/mtdblock2"
-+CONFIG_SHARPSL_BOOTLDR_PARAMS=y
-+CONFIG_ALIGNMENT_TRAP=y
-+CONFIG_FREEPG_SIGNAL=y
-+CONFIG_OOM_KILL_SURVIVAL=y
-+CONFIG_DEVICEINFO=y
-+
-+#
-+# Parallel port support
-+#
-+# CONFIG_PARPORT is not set
-+
-+#
-+# Memory Technology Devices (MTD)
-+#
-+CONFIG_MTD=y
-+# CONFIG_MTD_DEBUG is not set
-+CONFIG_MTD_PARTITIONS=y
-+# CONFIG_MTD_CONCAT is not set
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+CONFIG_MTD_CMDLINE_PARTS=y
-+# CONFIG_MTD_AFS_PARTS is not set
-+CONFIG_MTD_CHAR=y
-+CONFIG_MTD_BLOCK=y
-+# CONFIG_FTL is not set
-+# CONFIG_NFTL is not set
-+
-+#
-+# RAM/ROM/Flash chip drivers
-+#
-+# CONFIG_MTD_CFI is not set
-+# CONFIG_MTD_JEDECPROBE is not set
-+# CONFIG_MTD_GEN_PROBE is not set
-+# CONFIG_MTD_CFI_INTELEXT is not set
-+# CONFIG_MTD_CFI_AMDSTD is not set
-+# CONFIG_MTD_CFI_STAA is not set
-+# CONFIG_MTD_RAM is not set
-+CONFIG_MTD_ROM=y
-+# CONFIG_MTD_ABSENT is not set
-+# CONFIG_MTD_OBSOLETE_CHIPS is not set
-+# CONFIG_MTD_AMDSTD is not set
-+# CONFIG_MTD_SHARP is not set
-+# CONFIG_MTD_JEDEC is not set
-+
-+#
-+# Mapping drivers for chip access
-+#
-+# CONFIG_MTD_PHYSMAP is not set
-+# CONFIG_MTD_LUBBOCK is not set
-+# CONFIG_MTD_NORA is not set
-+# CONFIG_MTD_ARM_INTEGRATOR is not set
-+# CONFIG_MTD_CDB89712 is not set
-+# CONFIG_MTD_SA1100 is not set
-+# CONFIG_MTD_DC21285 is not set
-+# CONFIG_MTD_IQ80310 is not set
-+# CONFIG_MTD_FORTUNET is not set
-+# CONFIG_MTD_PXA_CERF is not set
-+# CONFIG_MTD_EPXA10DB is not set
-+# CONFIG_MTD_AUTCPU12 is not set
-+# CONFIG_MTD_EDB7312 is not set
-+# CONFIG_MTD_IMPA7 is not set
-+# CONFIG_MTD_DISCOVERY is not set
-+CONFIG_MTD_SHARP_SL=y
-+# CONFIG_MTD_PCI is not set
-+
-+#
-+# Self-contained MTD device drivers
-+#
-+# CONFIG_MTD_PMC551 is not set
-+# CONFIG_MTD_SLRAM is not set
-+# CONFIG_MTD_MTDROM_SA1100 is not set
-+# CONFIG_MTD_MTDRAM_SA1100 is not set
-+# CONFIG_MTD_MTDRAM is not set
-+# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-+# CONFIG_MTD_BLKMTD is not set
-+# CONFIG_MTD_DOC1000 is not set
-+# CONFIG_MTD_DOC2000 is not set
-+# CONFIG_MTD_DOC2001 is not set
-+# CONFIG_MTD_DOCPROBE is not set
-+
-+#
-+# NAND Flash Device Drivers
-+#
-+CONFIG_MTD_NAND=y
-+CONFIG_MTD_NAND_ECC=y
-+CONFIG_MTD_NAND_VERIFY_WRITE=y
-+CONFIG_MTD_NAND_POST_BADBLOCK=y
-+# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
-+CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
-+CONFIG_MTD_NAND_PAGE_CACHE=y
-+CONFIG_MTD_NAND_SHARP_SL_TC6393=y
-+# CONFIG_MTD_NAND_SHARP_SL is not set
-+
-+#
-+# Plug and Play configuration
-+#
-+# CONFIG_PNP is not set
-+# CONFIG_ISAPNP is not set
-+
-+#
-+# Block devices
-+#
-+# CONFIG_BLK_DEV_FD is not set
-+# CONFIG_BLK_DEV_XD is not set
-+# CONFIG_PARIDE is not set
-+# CONFIG_BLK_CPQ_DA is not set
-+# CONFIG_BLK_CPQ_CISS_DA is not set
-+# CONFIG_BLK_DEV_DAC960 is not set
-+# CONFIG_BLK_DEV_COLLIE_MMCSD is not set
-+CONFIG_BLK_DEV_SL_MMCSD=m
-+CONFIG_BLK_DEV_SL_MMCSD_PSAVE=y
-+CONFIG_BLK_DEV_LOOP=y
-+# CONFIG_BLK_DEV_NBD is not set
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_SIZE=8192
-+CONFIG_BLK_DEV_INITRD=y
-+
-+#
-+# Multi-device support (RAID and LVM)
-+#
-+# CONFIG_MD is not set
-+# CONFIG_BLK_DEV_MD is not set
-+# CONFIG_MD_LINEAR is not set
-+# CONFIG_MD_RAID0 is not set
-+# CONFIG_MD_RAID1 is not set
-+# CONFIG_MD_RAID5 is not set
-+# CONFIG_MD_MULTIPATH is not set
-+# CONFIG_BLK_DEV_LVM is not set
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+CONFIG_PACKET_MMAP=y
-+CONFIG_NETLINK_DEV=y
-+CONFIG_NETFILTER=y
-+# CONFIG_NETFILTER_DEBUG is not set
-+# CONFIG_FILTER is not set
-+CONFIG_UNIX=y
-+CONFIG_INET=y
-+# CONFIG_IP_MULTICAST is not set
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_ARPD is not set
-+# CONFIG_INET_ECN is not set
-+# CONFIG_SYN_COOKIES is not set
-+
-+#
-+# IP: Netfilter Configuration
-+#
-+# CONFIG_IP_NF_CONNTRACK is not set
-+# CONFIG_IP_NF_QUEUE is not set
-+# CONFIG_IP_NF_IPTABLES is not set
-+# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-+# CONFIG_IPV6 is not set
-+# CONFIG_KHTTPD is not set
-+# CONFIG_ATM is not set
-+# CONFIG_VLAN_8021Q is not set
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_LLC is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_FASTROUTE is not set
-+# CONFIG_NET_HW_FLOWCONTROL is not set
-+
-+#
-+# QoS and/or fair queueing
-+#
-+# CONFIG_NET_SCHED is not set
-+
-+#
-+# Network device support
-+#
-+CONFIG_NETDEVICES=y
-+
-+#
-+# ARCnet devices
-+#
-+# CONFIG_ARCNET is not set
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_ETHERTAP is not set
-+
-+#
-+# Ethernet (10 or 100Mbit)
-+#
-+CONFIG_NET_ETHERNET=y
-+# CONFIG_ARM_AM79C961A is not set
-+# CONFIG_SUNLANCE is not set
-+# CONFIG_SUNBMAC is not set
-+# CONFIG_SUNQE is not set
-+# CONFIG_SUNGEM is not set
-+# CONFIG_NET_VENDOR_3COM is not set
-+# CONFIG_LANCE is not set
-+# CONFIG_NET_VENDOR_SMC is not set
-+# CONFIG_NET_VENDOR_RACAL is not set
-+# CONFIG_NET_ISA is not set
-+# CONFIG_NET_PCI is not set
-+# CONFIG_NET_POCKET is not set
-+
-+#
-+# Ethernet (1000 Mbit)
-+#
-+# CONFIG_ACENIC is not set
-+# CONFIG_DL2K is not set
-+# CONFIG_MYRI_SBUS is not set
-+# CONFIG_NS83820 is not set
-+# CONFIG_HAMACHI is not set
-+# CONFIG_YELLOWFIN is not set
-+# CONFIG_SK98LIN is not set
-+# CONFIG_FDDI is not set
-+# CONFIG_HIPPI is not set
-+# CONFIG_PLIP is not set
-+CONFIG_PPP=y
-+# CONFIG_PPP_MULTILINK is not set
-+# CONFIG_PPP_FILTER is not set
-+CONFIG_PPP_ASYNC=y
-+# CONFIG_PPP_SYNC_TTY is not set
-+# CONFIG_PPP_DEFLATE is not set
-+CONFIG_PPP_BSDCOMP=y
-+# CONFIG_PPPOE is not set
-+# CONFIG_SLIP is not set
-+
-+#
-+# Wireless LAN (non-hamradio)
-+#
-+CONFIG_NET_RADIO=y
-+# CONFIG_STRIP is not set
-+# CONFIG_WAVELAN is not set
-+# CONFIG_ARLAN is not set
-+# CONFIG_AIRONET4500 is not set
-+# CONFIG_AIRONET4500_NONCS is not set
-+# CONFIG_AIRONET4500_PROC is not set
-+CONFIG_HERMES=y
-+CONFIG_PCMCIA_HERMES=y
-+# CONFIG_AIRO_CS is not set
-+CONFIG_NET_WIRELESS=y
-+
-+#
-+# Token Ring devices
-+#
-+# CONFIG_TR is not set
-+# CONFIG_NET_FC is not set
-+# CONFIG_RCPCI is not set
-+# CONFIG_SHAPER is not set
-+
-+#
-+# Wan interfaces
-+#
-+# CONFIG_WAN is not set
-+
-+#
-+# PCMCIA network device support
-+#
-+CONFIG_NET_PCMCIA=y
-+# CONFIG_PCMCIA_3C589 is not set
-+# CONFIG_PCMCIA_3C574 is not set
-+# CONFIG_PCMCIA_FMVJ18X is not set
-+CONFIG_PCMCIA_PCNET=y
-+# CONFIG_PCMCIA_AXNET is not set
-+# CONFIG_PCMCIA_NMCLAN is not set
-+# CONFIG_PCMCIA_SMC91C92 is not set
-+# CONFIG_PCMCIA_XIRC2PS is not set
-+# CONFIG_ARCNET_COM20020_CS is not set
-+# CONFIG_PCMCIA_IBMTR is not set
-+# CONFIG_NET_PCMCIA_RADIO is not set
-+
-+#
-+# Amateur Radio support
-+#
-+# CONFIG_HAMRADIO is not set
-+
-+#
-+# IrDA (infrared) support
-+#
-+CONFIG_IRDA=y
-+# CONFIG_IRLAN is not set
-+# CONFIG_IRNET is not set
-+CONFIG_IRCOMM=y
-+# CONFIG_IRDA_ULTRA is not set
-+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-+CONFIG_IRDA_FAST_RR=y
-+# CONFIG_IRDA_DEBUG is not set
-+
-+#
-+# Infrared-port device drivers
-+#
-+CONFIG_IRTTY_SIR=y
-+# CONFIG_IRPORT_SIR is not set
-+# CONFIG_DONGLE is not set
-+# CONFIG_USB_IRDA is not set
-+# CONFIG_NSC_FIR is not set
-+# CONFIG_WINBOND_FIR is not set
-+# CONFIG_TOSHIBA_FIR is not set
-+# CONFIG_SMC_IRCC_FIR is not set
-+# CONFIG_ALI_FIR is not set
-+# CONFIG_VLSI_FIR is not set
-+
-+#
-+# ATA/IDE/MFM/RLL support
-+#
-+CONFIG_IDE=y
-+
-+#
-+# IDE, ATA and ATAPI Block devices
-+#
-+CONFIG_BLK_DEV_IDE=y
-+# CONFIG_BLK_DEV_HD_IDE is not set
-+# CONFIG_BLK_DEV_HD is not set
-+CONFIG_BLK_DEV_IDEDISK=y
-+# CONFIG_IDEDISK_MULTI_MODE is not set
-+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-+# CONFIG_BLK_DEV_IDEDISK_WD is not set
-+# CONFIG_BLK_DEV_COMMERIAL is not set
-+# CONFIG_BLK_DEV_TIVO is not set
-+CONFIG_BLK_DEV_IDECS=y
-+# CONFIG_BLK_DEV_IDECD is not set
-+# CONFIG_BLK_DEV_IDETAPE is not set
-+# CONFIG_BLK_DEV_IDEFLOPPY is not set
-+# CONFIG_BLK_DEV_IDESCSI is not set
-+# CONFIG_BLK_DEV_CMD640 is not set
-+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-+# CONFIG_BLK_DEV_ISAPNP is not set
-+# CONFIG_IDE_CHIPSETS is not set
-+# CONFIG_IDEDMA_AUTO is not set
-+# CONFIG_DMA_NONPCI is not set
-+# CONFIG_BLK_DEV_IDE_MODES is not set
-+# CONFIG_BLK_DEV_ATARAID is not set
-+# CONFIG_BLK_DEV_ATARAID_PDC is not set
-+# CONFIG_BLK_DEV_ATARAID_HPT is not set
-+
-+#
-+# SCSI support
-+#
-+CONFIG_SCSI=y
-+CONFIG_BLK_DEV_SD=y
-+CONFIG_SD_EXTRA_DEVS=40
-+# CONFIG_CHR_DEV_ST is not set
-+# CONFIG_CHR_DEV_OSST is not set
-+# CONFIG_BLK_DEV_SR is not set
-+# CONFIG_CHR_DEV_SG is not set
-+# CONFIG_SCSI_DEBUG_QUEUES is not set
-+# CONFIG_SCSI_MULTI_LUN is not set
-+# CONFIG_SCSI_CONSTANTS is not set
-+# CONFIG_SCSI_LOGGING is not set
-+
-+#
-+# SCSI low-level drivers
-+#
-+# CONFIG_SCSI_7000FASST is not set
-+# CONFIG_SCSI_ACARD is not set
-+# CONFIG_SCSI_AHA152X is not set
-+# CONFIG_SCSI_AHA1542 is not set
-+# CONFIG_SCSI_AHA1740 is not set
-+# CONFIG_SCSI_AACRAID is not set
-+# CONFIG_SCSI_AIC7XXX is not set
-+# CONFIG_SCSI_AIC7XXX_OLD is not set
-+# CONFIG_SCSI_DPT_I2O is not set
-+# CONFIG_SCSI_ADVANSYS is not set
-+# CONFIG_SCSI_IN2000 is not set
-+# CONFIG_SCSI_AM53C974 is not set
-+# CONFIG_SCSI_MEGARAID is not set
-+# CONFIG_SCSI_BUSLOGIC is not set
-+# CONFIG_SCSI_DMX3191D is not set
-+# CONFIG_SCSI_DTC3280 is not set
-+# CONFIG_SCSI_EATA is not set
-+# CONFIG_SCSI_EATA_DMA is not set
-+# CONFIG_SCSI_EATA_PIO is not set
-+# CONFIG_SCSI_FUTURE_DOMAIN is not set
-+# CONFIG_SCSI_GDTH is not set
-+# CONFIG_SCSI_GENERIC_NCR5380 is not set
-+# CONFIG_SCSI_INITIO is not set
-+# CONFIG_SCSI_INIA100 is not set
-+# CONFIG_SCSI_NCR53C406A is not set
-+# CONFIG_SCSI_NCR53C7xx is not set
-+# CONFIG_SCSI_PAS16 is not set
-+# CONFIG_SCSI_PCI2000 is not set
-+# CONFIG_SCSI_PCI2220I is not set
-+# CONFIG_SCSI_PSI240I is not set
-+# CONFIG_SCSI_QLOGIC_FAS is not set
-+# CONFIG_SCSI_SIM710 is not set
-+# CONFIG_SCSI_SYM53C416 is not set
-+# CONFIG_SCSI_T128 is not set
-+# CONFIG_SCSI_U14_34F is not set
-+# CONFIG_SCSI_DEBUG is not set
-+
-+#
-+# PCMCIA SCSI adapter support
-+#
-+# CONFIG_SCSI_PCMCIA is not set
-+
-+#
-+# I2O device support
-+#
-+# CONFIG_I2O is not set
-+# CONFIG_I2O_BLOCK is not set
-+# CONFIG_I2O_LAN is not set
-+# CONFIG_I2O_SCSI is not set
-+# CONFIG_I2O_PROC is not set
-+
-+#
-+# ISDN subsystem
-+#
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input core support
-+#
-+CONFIG_INPUT=y
-+CONFIG_INPUT_KEYBDEV=y
-+CONFIG_INPUT_MOUSEDEV=y
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-+CONFIG_INPUT_JOYDEV=m
-+CONFIG_INPUT_EVDEV=m
-+
-+#
-+# Character devices
-+#
-+CONFIG_VT=y
-+CONFIG_VT_CONSOLE=y
-+CONFIG_SERIAL=y
-+# CONFIG_SERIAL_CONSOLE is not set
-+CONFIG_SERIAL_SL_SERIES=y
-+CONFIG_BLUETOOTH_SL=y
-+# CONFIG_SERIAL_EXTENDED is not set
-+# CONFIG_SERIAL_NONSTANDARD is not set
-+
-+#
-+# Serial drivers
-+#
-+# CONFIG_SERIAL_ANAKIN is not set
-+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-+# CONFIG_SERIAL_AMBA is not set
-+# CONFIG_SERIAL_AMBA_CONSOLE is not set
-+# CONFIG_SERIAL_CLPS711X is not set
-+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-+# CONFIG_SERIAL_21285 is not set
-+# CONFIG_SERIAL_21285_OLD is not set
-+# CONFIG_SERIAL_21285_CONSOLE is not set
-+# CONFIG_SERIAL_UART00 is not set
-+# CONFIG_SERIAL_UART00_CONSOLE is not set
-+# CONFIG_SERIAL_SA1100 is not set
-+# CONFIG_SERIAL_SA1100_CONSOLE is not set
-+# CONFIG_SERIAL_8250 is not set
-+# CONFIG_SERIAL_8250_CONSOLE is not set
-+# CONFIG_SERIAL_8250_EXTENDED is not set
-+# CONFIG_SERIAL_8250_MANY_PORTS is not set
-+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-+# CONFIG_SERIAL_8250_MULTIPORT is not set
-+# CONFIG_SERIAL_8250_HUB6 is not set
-+CONFIG_UNIX98_PTYS=y
-+CONFIG_UNIX98_PTY_COUNT=256
-+
-+#
-+# I2C support
-+#
-+# CONFIG_I2C is not set
-+
-+#
-+# L3 serial bus support
-+#
-+# CONFIG_L3 is not set
-+# CONFIG_L3_ALGOBIT is not set
-+# CONFIG_L3_BIT_SA1100_GPIO is not set
-+# CONFIG_L3_SA1111 is not set
-+# CONFIG_BIT_SA1100_GPIO is not set
-+
-+#
-+# Mice
-+#
-+# CONFIG_BUSMOUSE is not set
-+# CONFIG_MOUSE is not set
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_INPUT_GAMEPORT is not set
-+# CONFIG_INPUT_NS558 is not set
-+# CONFIG_INPUT_LIGHTNING is not set
-+# CONFIG_INPUT_PCIGAME is not set
-+# CONFIG_INPUT_CS461X is not set
-+# CONFIG_INPUT_EMU10K1 is not set
-+# CONFIG_INPUT_SERIO is not set
-+# CONFIG_INPUT_SERPORT is not set
-+# CONFIG_INPUT_ANALOG is not set
-+# CONFIG_INPUT_A3D is not set
-+# CONFIG_INPUT_ADI is not set
-+# CONFIG_INPUT_COBRA is not set
-+# CONFIG_INPUT_GF2K is not set
-+# CONFIG_INPUT_GRIP is not set
-+# CONFIG_INPUT_INTERACT is not set
-+# CONFIG_INPUT_TMDC is not set
-+# CONFIG_INPUT_SIDEWINDER is not set
-+# CONFIG_INPUT_IFORCE_USB is not set
-+# CONFIG_INPUT_IFORCE_232 is not set
-+# CONFIG_INPUT_WARRIOR is not set
-+# CONFIG_INPUT_MAGELLAN is not set
-+# CONFIG_INPUT_SPACEORB is not set
-+# CONFIG_INPUT_SPACEBALL is not set
-+# CONFIG_INPUT_STINGER is not set
-+# CONFIG_INPUT_DB9 is not set
-+# CONFIG_INPUT_GAMECON is not set
-+# CONFIG_INPUT_TURBOGRAFX is not set
-+# CONFIG_QIC02_TAPE is not set
-+
-+#
-+# Watchdog Cards
-+#
-+# CONFIG_WATCHDOG is not set
-+# CONFIG_INTEL_RNG is not set
-+# CONFIG_NVRAM is not set
-+# CONFIG_RTC is not set
-+CONFIG_COTULLA_RTC=y
-+# CONFIG_ADS7846_TS is not set
-+CONFIG_TOSA_TS=y
-+# CONFIG_DTLK is not set
-+# CONFIG_R3964 is not set
-+# CONFIG_APPLICOM is not set
-+
-+#
-+# Ftape, the floppy tape device driver
-+#
-+# CONFIG_FTAPE is not set
-+# CONFIG_AGP is not set
-+# CONFIG_DRM is not set
-+
-+#
-+# PCMCIA character devices
-+#
-+CONFIG_PCMCIA_SERIAL_CS=y
-+CONFIG_PCMCIA_CHRDEV=y
-+
-+#
-+# Multimedia devices
-+#
-+# CONFIG_VIDEO_DEV is not set
-+
-+#
-+# File systems
-+#
-+# CONFIG_QUOTA is not set
-+# CONFIG_AUTOFS_FS is not set
-+# CONFIG_AUTOFS4_FS is not set
-+CONFIG_FS_SYNC=y
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_REISERFS_CHECK is not set
-+# CONFIG_REISERFS_PROC_INFO is not set
-+# CONFIG_ADFS_FS is not set
-+# CONFIG_ADFS_FS_RW is not set
-+# CONFIG_AFFS_FS is not set
-+# CONFIG_HFS_FS is not set
-+# CONFIG_BFS_FS is not set
-+# CONFIG_EXT3_FS is not set
-+# CONFIG_JBD is not set
-+# CONFIG_JBD_DEBUG is not set
-+CONFIG_FAT_FS=y
-+# CONFIG_MSDOS_FS is not set
-+# CONFIG_UMSDOS_FS is not set
-+CONFIG_VFAT_FS=y
-+# CONFIG_EFS_FS is not set
-+# CONFIG_JFFS_FS is not set
-+CONFIG_JFFS2_FS=y
-+CONFIG_JFFS2_FS_DEBUG=0
-+CONFIG_JFFS2_FS_NAND=y
-+CONFIG_JFFS2_PROC_FS=y
-+CONFIG_JFFS2_NODEMERGE=y
-+CONFIG_JFFS2_DYNFRAGTREE=y
-+CONFIG_CRAMFS=y
-+CONFIG_TMPFS=y
-+# CONFIG_RAMFS is not set
-+# CONFIG_ISO9660_FS is not set
-+# CONFIG_JOLIET is not set
-+# CONFIG_ZISOFS is not set
-+CONFIG_MINIX_FS=y
-+# CONFIG_VXFS_FS is not set
-+# CONFIG_NTFS_FS is not set
-+# CONFIG_NTFS_RW is not set
-+# CONFIG_HPFS_FS is not set
-+CONFIG_PROC_FS=y
-+# CONFIG_DEVFS_FS is not set
-+# CONFIG_DEVFS_MOUNT is not set
-+# CONFIG_DEVFS_DEBUG is not set
-+CONFIG_DEVPTS_FS=y
-+# CONFIG_QNX4FS_FS is not set
-+# CONFIG_QNX4FS_RW is not set
-+# CONFIG_ROMFS_FS is not set
-+CONFIG_EXT2_FS=y
-+# CONFIG_SYSV_FS is not set
-+# CONFIG_UDF_FS is not set
-+# CONFIG_UDF_RW is not set
-+# CONFIG_UFS_FS is not set
-+# CONFIG_UFS_FS_WRITE is not set
-+
-+#
-+# Network File Systems
-+#
-+# CONFIG_CODA_FS is not set
-+# CONFIG_INTERMEZZO_FS is not set
-+CONFIG_NFS_FS=y
-+CONFIG_NFS_V3=y
-+# CONFIG_ROOT_NFS is not set
-+# CONFIG_NFSD is not set
-+# CONFIG_NFSD_V3 is not set
-+CONFIG_SUNRPC=y
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=y
-+CONFIG_SMB_FS=y
-+# CONFIG_SMB_NLS_DEFAULT is not set
-+# CONFIG_NCP_FS is not set
-+# CONFIG_NCPFS_PACKET_SIGNING is not set
-+# CONFIG_NCPFS_IOCTL_LOCKING is not set
-+# CONFIG_NCPFS_STRONG is not set
-+# CONFIG_NCPFS_NFS_NS is not set
-+# CONFIG_NCPFS_OS2_NS is not set
-+# CONFIG_NCPFS_SMALLDOS is not set
-+# CONFIG_NCPFS_NLS is not set
-+# CONFIG_NCPFS_EXTRAS is not set
-+# CONFIG_ZISOFS_FS is not set
-+CONFIG_ZLIB_FS_INFLATE=y
-+
-+#
-+# Partition Types
-+#
-+CONFIG_PARTITION_ADVANCED=y
-+# CONFIG_ACORN_PARTITION is not set
-+# CONFIG_OSF_PARTITION is not set
-+# CONFIG_AMIGA_PARTITION is not set
-+# CONFIG_ATARI_PARTITION is not set
-+# CONFIG_MAC_PARTITION is not set
-+CONFIG_MSDOS_PARTITION=y
-+# CONFIG_BSD_DISKLABEL is not set
-+# CONFIG_MINIX_SUBPARTITION is not set
-+# CONFIG_SOLARIS_X86_PARTITION is not set
-+# CONFIG_UNIXWARE_DISKLABEL is not set
-+# CONFIG_LDM_PARTITION is not set
-+# CONFIG_SGI_PARTITION is not set
-+# CONFIG_ULTRIX_PARTITION is not set
-+# CONFIG_SUN_PARTITION is not set
-+CONFIG_SMB_NLS=y
-+CONFIG_NLS=y
-+
-+#
-+# Native Language Support
-+#
-+CONFIG_NLS_DEFAULT="iso8859-1"
-+CONFIG_NLS_CODEPAGE_437=y
-+# CONFIG_NLS_CODEPAGE_737 is not set
-+# CONFIG_NLS_CODEPAGE_775 is not set
-+CONFIG_NLS_CODEPAGE_850=y
-+# CONFIG_NLS_CODEPAGE_852 is not set
-+# CONFIG_NLS_CODEPAGE_855 is not set
-+# CONFIG_NLS_CODEPAGE_857 is not set
-+# CONFIG_NLS_CODEPAGE_860 is not set
-+# CONFIG_NLS_CODEPAGE_861 is not set
-+# CONFIG_NLS_CODEPAGE_862 is not set
-+# CONFIG_NLS_CODEPAGE_863 is not set
-+# CONFIG_NLS_CODEPAGE_864 is not set
-+# CONFIG_NLS_CODEPAGE_865 is not set
-+# CONFIG_NLS_CODEPAGE_866 is not set
-+# CONFIG_NLS_CODEPAGE_869 is not set
-+# CONFIG_NLS_CODEPAGE_936 is not set
-+# CONFIG_NLS_CODEPAGE_950 is not set
-+CONFIG_NLS_CODEPAGE_932=y
-+# CONFIG_NLS_CODEPAGE_949 is not set
-+# CONFIG_NLS_CODEPAGE_874 is not set
-+# CONFIG_NLS_ISO8859_8 is not set
-+# CONFIG_NLS_CODEPAGE_1250 is not set
-+# CONFIG_NLS_CODEPAGE_1251 is not set
-+CONFIG_NLS_ISO8859_1=y
-+# CONFIG_NLS_ISO8859_2 is not set
-+# CONFIG_NLS_ISO8859_3 is not set
-+# CONFIG_NLS_ISO8859_4 is not set
-+# CONFIG_NLS_ISO8859_5 is not set
-+# CONFIG_NLS_ISO8859_6 is not set
-+# CONFIG_NLS_ISO8859_7 is not set
-+# CONFIG_NLS_ISO8859_9 is not set
-+# CONFIG_NLS_ISO8859_13 is not set
-+# CONFIG_NLS_ISO8859_14 is not set
-+# CONFIG_NLS_ISO8859_15 is not set
-+# CONFIG_NLS_KOI8_R is not set
-+# CONFIG_NLS_KOI8_U is not set
-+CONFIG_NLS_UTF8=y
-+
-+#
-+# Console drivers
-+#
-+CONFIG_PC_KEYMAP=y
-+# CONFIG_VGA_CONSOLE is not set
-+
-+#
-+# Frame-buffer support
-+#
-+CONFIG_FB=y
-+CONFIG_DUMMY_CONSOLE=y
-+# CONFIG_FB_COLLIE is not set
-+# CONFIG_FB_ACORN is not set
-+# CONFIG_FB_ANAKIN is not set
-+# CONFIG_FB_CLPS711X is not set
-+# CONFIG_FB_SA1100 is not set
-+# CONFIG_FB_PXA is not set
-+# CONFIG_FB_COTULLA is not set
-+# CONFIG_FB_POODLE is not set
-+# CONFIG_FB_CORGI is not set
-+CONFIG_FB_TOSA=y
-+CONFIG_SHARP_LOGO_SCREEN=y
-+# CONFIG_FB_CYBER2000 is not set
-+# CONFIG_FB_VIRTUAL is not set
-+CONFIG_FBCON_ADVANCED=y
-+# CONFIG_FBCON_MFB is not set
-+# CONFIG_FBCON_CFB2 is not set
-+# CONFIG_FBCON_CFB4 is not set
-+# CONFIG_FBCON_CFB8 is not set
-+CONFIG_FBCON_CFB16=y
-+# CONFIG_FBCON_CFB24 is not set
-+# CONFIG_FBCON_CFB32 is not set
-+# CONFIG_FBCON_AFB is not set
-+# CONFIG_FBCON_ILBM is not set
-+# CONFIG_FBCON_IPLAN2P2 is not set
-+# CONFIG_FBCON_IPLAN2P4 is not set
-+# CONFIG_FBCON_IPLAN2P8 is not set
-+# CONFIG_FBCON_MAC is not set
-+# CONFIG_FBCON_VGA_PLANES is not set
-+# CONFIG_FBCON_VGA is not set
-+# CONFIG_FBCON_HGA is not set
-+# CONFIG_FBCON_ROTATE_R is not set
-+# CONFIG_FBCON_ROTATE_L is not set
-+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-+CONFIG_FBCON_FONTS=y
-+CONFIG_FONT_8x8=y
-+CONFIG_FONT_8x16=y
-+# CONFIG_FONT_SUN8x16 is not set
-+# CONFIG_FONT_SUN12x22 is not set
-+# CONFIG_FONT_6x11 is not set
-+# CONFIG_FONT_PEARL_8x8 is not set
-+# CONFIG_FONT_ACORN_8x8 is not set
-+
-+#
-+# Sound
-+#
-+CONFIG_SOUND=y
-+# CONFIG_SOUND_BT878 is not set
-+# CONFIG_SOUND_COLLIE_SSP is not set
-+# CONFIG_SOUND_COLLIE_TC35143 is not set
-+# CONFIG_SOUND_CMPCI is not set
-+# CONFIG_SOUND_EMU10K1 is not set
-+# CONFIG_MIDI_EMU10K1 is not set
-+# CONFIG_SOUND_FUSION is not set
-+# CONFIG_SOUND_CS4281 is not set
-+# CONFIG_SOUND_ES1370 is not set
-+# CONFIG_SOUND_ES1371 is not set
-+# CONFIG_SOUND_ESSSOLO1 is not set
-+# CONFIG_SOUND_MAESTRO is not set
-+# CONFIG_SOUND_MAESTRO3 is not set
-+# CONFIG_SOUND_ICH is not set
-+# CONFIG_SOUND_RME96XX is not set
-+# CONFIG_SOUND_SONICVIBES is not set
-+# CONFIG_SOUND_TRIDENT is not set
-+# CONFIG_SOUND_MSNDCLAS is not set
-+# CONFIG_SOUND_MSNDPIN is not set
-+# CONFIG_SOUND_VIA82CXXX is not set
-+# CONFIG_MIDI_VIA82CXXX is not set
-+# CONFIG_SOUND_OSS is not set
-+# CONFIG_SOUND_WAVEARTIST is not set
-+# CONFIG_SOUND_PXA_AC97 is not set
-+# CONFIG_SOUND_POODLE is not set
-+# CONFIG_SOUND_CORGI is not set
-+CONFIG_SOUND_TOSA=y
-+CONFIG_BUZZER_TOSA=y
-+# CONFIG_SOUND_TVMIXER is not set
-+
-+#
-+# Multimedia Capabilities Port drivers
-+#
-+# CONFIG_MCP is not set
-+# CONFIG_MCP_SA1100 is not set
-+# CONFIG_MCP_UCB1200 is not set
-+# CONFIG_MCP_UCB1200_AUDIO is not set
-+# CONFIG_MCP_UCB1200_TS is not set
-+# CONFIG_MCP_UCB1400_TS is not set
-+
-+#
-+# USB support
-+#
-+CONFIG_USB=y
-+# CONFIG_USB_DEBUG is not set
-+CONFIG_USB_DEVICEFS=y
-+# CONFIG_USB_BANDWIDTH is not set
-+# CONFIG_USB_LONG_TIMEOUT is not set
-+# CONFIG_USB_UHCI is not set
-+# CONFIG_USB_UHCI_ALT is not set
-+# CONFIG_USB_OHCI is not set
-+# CONFIG_USB_OHCI_SA1111 is not set
-+CONFIG_USB_OHCI_TC6393=m
-+CONFIG_USB_USE_INTERNAL_MEMORY=y
-+# CONFIG_USB_AUDIO is not set
-+# CONFIG_USB_BLUETOOTH is not set
-+CONFIG_USB_STORAGE=m
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
-+CONFIG_USB_STORAGE_ISD200=y
-+# CONFIG_USB_STORAGE_DPCM is not set
-+# CONFIG_USB_STORAGE_HP8200e is not set
-+# CONFIG_USB_STORAGE_SDDR09 is not set
-+# CONFIG_USB_STORAGE_JUMPSHOT is not set
-+CONFIG_USB_ACM=m
-+# CONFIG_USB_PRINTER is not set
-+CONFIG_USB_HID=m
-+# CONFIG_USB_HIDDEV is not set
-+CONFIG_USB_KBD=m
-+CONFIG_USB_MOUSE=m
-+# CONFIG_USB_WACOM is not set
-+# CONFIG_USB_DC2XX is not set
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_SCANNER is not set
-+# CONFIG_USB_MICROTEK is not set
-+# CONFIG_USB_HPUSBSCSI is not set
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_CDCETHER is not set
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_USB_USS720 is not set
-+
-+#
-+# USB Serial Converter support
-+#
-+# CONFIG_USB_SERIAL is not set
-+# CONFIG_USB_SERIAL_GENERIC is not set
-+# CONFIG_USB_SERIAL_BELKIN is not set
-+# CONFIG_USB_SERIAL_WHITEHEAT is not set
-+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-+# CONFIG_USB_SERIAL_EMPEG is not set
-+# CONFIG_USB_SERIAL_FTDI_SIO is not set
-+# CONFIG_USB_SERIAL_VISOR is not set
-+# CONFIG_USB_SERIAL_IPAQ is not set
-+# CONFIG_USB_SERIAL_IR is not set
-+# CONFIG_USB_SERIAL_EDGEPORT is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-+# CONFIG_USB_SERIAL_KEYSPAN is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-+# CONFIG_USB_SERIAL_MCT_U232 is not set
-+# CONFIG_USB_SERIAL_KLSI is not set
-+# CONFIG_USB_SERIAL_PL2303 is not set
-+# CONFIG_USB_SERIAL_CYBERJACK is not set
-+# CONFIG_USB_SERIAL_XIRCOM is not set
-+# CONFIG_USB_SERIAL_OMNINET is not set
-+# CONFIG_USB_RIO500 is not set
-+
-+#
-+# USB Device Support
-+#
-+CONFIG_USBD=m
-+CONFIG_USBD_VENDORID=04DD
-+CONFIG_USBD_PRODUCTID=9032
-+CONFIG_USBD_PRODUCT_NAME="SL-6000"
-+CONFIG_USBD_MANUFACTURER="Sharp"
-+# CONFIG_USBD_USE_SERIAL_NUMBER is not set
-+CONFIG_USBD_SELFPOWERED=y
-+CONFIG_USBD_MONITOR=m
-+CONFIG_USBD_PROCFS=y
-+
-+#
-+# Network Function
-+#
-+CONFIG_USBD_NET=m
-+CONFIG_USBD_NET_VENDORID=04DD
-+CONFIG_USBD_NET_PRODUCTID=9032
-+CONFIG_USBD_NET_IFNAME="usbd"
-+CONFIG_USBD_NET_OUT_ENDPOINT=1
-+CONFIG_USBD_NET_OUT_PKTSIZE=64
-+CONFIG_USBD_NET_IN_ENDPOINT=2
-+CONFIG_USBD_NET_IN_PKTSIZE=64
-+CONFIG_USBD_NET_INT_ENDPOINT=3
-+CONFIG_USBD_NET_INT_PKTSIZE=16
-+# CONFIG_USBD_NET_ALWAYSUP is not set
-+# CONFIG_USBD_NET_SAFE is not set
-+CONFIG_USBD_NET_MDLM=y
-+# CONFIG_USBD_NET_CDC is not set
-+CONFIG_USBD_NET_REMOTE_MACADDR=""
-+CONFIG_USBD_NET_REMOTE_OUI=400002
-+CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y
-+CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-+CONFIG_USBD_NET_LOCAL_OUI=400001
-+
-+#
-+# Serial Function
-+#
-+# CONFIG_USBD_SERIAL is not set
-+
-+#
-+# USB Device Bus Interface Support
-+#
-+CONFIG_USBD_PXA_BUS=m
-+# CONFIG_USBD_GENERIC_BUS is not set
-+
-+#
-+# Bluetooth support
-+#
-+# CONFIG_BLUEZ is not set
-+
-+#
-+# Kernel hacking
-+#
-+CONFIG_FRAME_POINTER=y
-+# CONFIG_DEBUG_USER is not set
-+# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-+# CONFIG_DEBUG_INFO is not set
-+# CONFIG_NO_PGT_CACHE is not set
-+# CONFIG_DEBUG_KERNEL is not set
-+# CONFIG_DEBUG_SLAB is not set
-+# CONFIG_MAGIC_SYSRQ is not set
-+# CONFIG_DEBUG_SPINLOCK is not set
-+# CONFIG_DEBUG_WAITQ is not set
-+# CONFIG_DEBUG_BUGVERBOSE is not set
-+# CONFIG_DEBUG_ERRORS is not set
-+# CONFIG_DEBUG_LL is not set
-+# CONFIG_DEBUG_DC21285_PORT is not set
-+# CONFIG_DEBUG_CLPS711X_UART2 is not set
-diff -Nur linux_c860_org/arch/arm/kernel/entry-armv.S linux/arch/arm/kernel/entry-armv.S
---- linux_c860_org/arch/arm/kernel/entry-armv.S 2002-12-18 19:27:21.000000000 +0900
-+++ linux/arch/arm/kernel/entry-armv.S 2004-06-10 21:09:10.000000000 +0900
-@@ -769,6 +769,12 @@
- add r4, sp, #S_SP
- mov r6, lr
- stmia r4, {r5, r6, r7, r8, r9} @ save sp_SVC, lr_SVC, pc, cpsr, old_ro
-+#ifdef CONFIG_PREEMPT
-+ get_current_task r9
-+ ldr r8, [r9, #TSK_PREEMPT]
-+ add r8, r8, #1
-+ str r8, [r9, #TSK_PREEMPT]
-+#endif
- 1: get_irqnr_and_base r0, r6, r5, lr
- movne r1, sp
- @
-@@ -776,6 +782,25 @@
- @
- adrsvc ne, lr, 1b
- bne do_IRQ
-+#ifdef CONFIG_PREEMPT
-+2: ldr r8, [r9, #TSK_PREEMPT]
-+ subs r8, r8, #1
-+ bne 3f
-+ ldr r7, [r9, #TSK_NEED_RESCHED]
-+ teq r7, #0
-+ beq 3f
-+ ldr r6, .LCirqstat
-+ ldr r0, [r6, #IRQSTAT_BH_COUNT]
-+ teq r0, #0
-+ bne 3f
-+ mov r0, #MODE_SVC
-+ msr cpsr_c, r0 @ enable interrupts
-+ bl SYMBOL_NAME(preempt_schedule)
-+ mov r0, #I_BIT | MODE_SVC
-+ msr cpsr_c, r0 @ disable interrupts
-+ b 2b
-+3: str r8, [r9, #TSK_PREEMPT]
-+#endif
- ldr r0, [sp, #S_PSR] @ irqs are already disabled
- msr spsr, r0
- ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr
-@@ -833,6 +858,9 @@
- .LCprocfns: .word SYMBOL_NAME(processor)
- #endif
- .LCfp: .word SYMBOL_NAME(fp_enter)
-+#ifdef CONFIG_PREEMPT
-+.LCirqstat: .word SYMBOL_NAME(irq_stat)
-+#endif
-
- irq_prio_table
-
-@@ -873,6 +901,12 @@
- stmdb r8, {sp, lr}^
- alignment_trap r4, r7, __temp_irq
- zero_fp
-+ get_current_task tsk
-+#ifdef CONFIG_PREEMPT
-+ ldr r0, [tsk, #TSK_PREEMPT]
-+ add r0, r0, #1
-+ str r0, [tsk, #TSK_PREEMPT]
-+#endif
- 1: get_irqnr_and_base r0, r6, r5, lr
- movne r1, sp
- adrsvc ne, lr, 1b
-@@ -880,8 +914,12 @@
- @ routine called with r0 = irq number, r1 = struct pt_regs *
- @
- bne do_IRQ
-+#ifdef CONFIG_PREEMPT
-+ ldr r0, [tsk, #TSK_PREEMPT]
-+ sub r0, r0, #1
-+ str r0, [tsk, #TSK_PREEMPT]
-+#endif
- mov why, #0
-- get_current_task tsk
- b ret_to_user
-
- .align 5
-diff -Nur linux_c860_org/arch/arm/kernel/process.c linux/arch/arm/kernel/process.c
---- linux_c860_org/arch/arm/kernel/process.c 2003-06-18 16:12:25.000000000 +0900
-+++ linux/arch/arm/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -382,7 +382,7 @@
- * a system call from a "real" process, but the process memory space will
- * not be free'd until both the parent and the child have exited.
- */
--pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
-+pid_t arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
- {
- pid_t __ret;
-
-diff -Nur linux_c860_org/arch/arm/kernel/time.c linux/arch/arm/kernel/time.c
---- linux_c860_org/arch/arm/kernel/time.c 2002-08-26 14:39:49.000000000 +0900
-+++ linux/arch/arm/kernel/time.c 2004-06-10 21:09:10.000000000 +0900
-@@ -15,6 +15,7 @@
- * fixed set_rtc_mmss, fixed time.year for >= 2000, new mktime
- * 1998-12-20 Updated NTP code according to technical memorandum Jan '96
- * "A Kernel Model for Precision Timekeeping" by Dave Mills
-+ * 1-Nov-2003 Sharp Corporation for Tosa
- */
- #include <linux/config.h>
- #include <linux/module.h>
-@@ -149,6 +150,15 @@
- #define do_leds()
- #endif
-
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+#define AVOID_ROLLBACK
-+#ifdef AVOID_ROLLBACK
-+int rollback_cancel = 0;
-+static unsigned long last_sec = 0;
-+static unsigned long last_usec = 0;
-+#endif
-+#endif
-+
- void do_gettimeofday(struct timeval *tv)
- {
- unsigned long flags;
-@@ -172,6 +182,25 @@
- sec++;
- }
-
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+#ifdef AVOID_ROLLBACK
-+ if (rollback_cancel && last_sec) {
-+ if (last_sec>sec && last_sec-sec<4 ) {
-+ //X printk("ERROR: time was fixed!(-%d sec)\n",last_sec-sec);
-+ sec = last_sec;
-+ usec = last_usec+1;
-+ } else if (last_sec==sec) {
-+ if (last_usec>usec) { // usec is always fixed.
-+ //X printk("ERROR: time was fixed!!(-%d usec)\n",last_usec-usec);
-+ usec = last_usec+1;
-+ }
-+ }
-+ }
-+ last_sec = sec;
-+ last_usec = usec;
-+#endif
-+#endif
-+
- tv->tv_sec = sec;
- tv->tv_usec = usec;
- }
-@@ -199,6 +228,13 @@
- time_maxerror = NTP_PHASE_LIMIT;
- time_esterror = NTP_PHASE_LIMIT;
- write_unlock_irq(&xtime_lock);
-+
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+#ifdef AVOID_ROLLBACK
-+ last_sec = 0;
-+ last_usec = 0;
-+#endif
-+#endif
- }
-
- static struct irqaction timer_irq = {
-diff -Nur linux_c860_org/arch/arm/kernel/traps.c linux/arch/arm/kernel/traps.c
---- linux_c860_org/arch/arm/kernel/traps.c 2003-01-14 12:07:55.000000000 +0900
-+++ linux/arch/arm/kernel/traps.c 2004-06-10 21:09:10.000000000 +0900
-@@ -14,6 +14,7 @@
- *
- * Change Log
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- *
- */
- #include <linux/config.h>
-@@ -35,7 +36,7 @@
- #include <asm/unistd.h>
-
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- #include <asm/mach-types.h>
- #include <asm/hardware.h>
- #include <asm/memory.h>
-@@ -292,10 +293,12 @@
- mm_segment_t fs;
-
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
-+#if CONFIG_PM
- extern sharpsl_fataloff(void);
- sharpsl_fataloff();
- #endif
-+#endif
-
- console_verbose();
-
-diff -Nur linux_c860_org/arch/arm/mach-pxa/Makefile linux/arch/arm/mach-pxa/Makefile
---- linux_c860_org/arch/arm/mach-pxa/Makefile 2002-11-14 10:33:31.000000000 +0900
-+++ linux/arch/arm/mach-pxa/Makefile 2004-06-10 21:09:10.000000000 +0900
-@@ -16,7 +16,8 @@
-
- export-objs := generic.o irq.o dma.o sa1111.o \
- usb_ctl.o usb_recv.o usb_send.o \
-- discovery.o cotulla_dma.o pxa_ssp.o
-+ discovery.o cotulla_dma.o pxa_ssp.o tosa.o \
-+ tosa_ac97.o
-
- # Common support (must be linked before board specific support)
- obj-y += generic.o irq.o
-@@ -33,6 +34,8 @@
- obj-$(CONFIG_SABINAL_DISCOVERY) += discovery.o discovery_arch.o pxa_ssp.o
- obj-$(CONFIG_ARCH_PXA_POODLE) += poodle.o m62332.o pxa_ssp.o poodle_buzzer.o
- obj-$(CONFIG_ARCH_PXA_CORGI) += corgi.o pxa_ssp.o poodle_buzzer.o
-+obj-$(CONFIG_ARCH_PXA_TOSA) += tosa.o pxa_nssp.o tosa_ac97.o
-+obj-$(CONFIG_BUZZER_TOSA) += tosa_buzzer.o
-
- # Support for blinky lights
- leds-y := leds.o
-@@ -66,6 +69,10 @@
- obj-$(CONFIG_BATT) += sharpsl_battery.o sharpsl_param.o
- export-objs += sharpsl_battery.o
- endif
-+ ifeq ($(CONFIG_ARCH_PXA_TOSA),y)
-+ obj-$(CONFIG_BATT) += tosa_battery.o sharpsl_param.o
-+ export-objs += tosa_battery.o
-+ endif
- else
- obj-$(CONFIG_PM) += pm.o sleep.o
- endif
-@@ -82,6 +89,9 @@
- ifeq ($(CONFIG_ARCH_PXA_CORGI),y)
- devinfo-objs-m += sharpsl_deviceinfo.o
- endif
-+ ifeq ($(CONFIG_ARCH_PXA_TOSA),y)
-+ devinfo-objs-m += sharpsl_deviceinfo.o
-+ endif
- endif
-
- obj-m += registers.o
-diff -Nur linux_c860_org/arch/arm/mach-pxa/corgi.c linux/arch/arm/mach-pxa/corgi.c
---- linux_c860_org/arch/arm/mach-pxa/corgi.c 2003-06-18 16:12:25.000000000 +0900
-+++ linux/arch/arm/mach-pxa/corgi.c 2004-06-10 21:09:10.000000000 +0900
-@@ -298,7 +298,11 @@
-
- static struct map_desc corgi_io_desc[] __initdata = {
- /* virtual physical length domain r w c b */
-+#if defined(CONFIG_CORGI_LCD_BUFF)
-+ { 0xf1000000, 0x08000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 1 }, /* LCDC (readable for Qt driver) */
-+#else
- { 0xf1000000, 0x08000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* LCDC (readable for Qt driver) */
-+#endif
- { 0xf2000000, 0x10800000, 0x00001000, DOMAIN_IO, 0, 1, 0, 0 }, /* SCOOP */
- { 0xf2100000, 0x0C000000, 0x00001000, DOMAIN_IO, 0, 1, 0, 0 }, /* Nand Flash */
- { 0xef000000, 0x00000000, 0x00800000, DOMAIN_IO, 1, 1, 1, 0 }, /* Boot Flash */
-diff -Nur linux_c860_org/arch/arm/mach-pxa/pxa_nssp.c linux/arch/arm/mach-pxa/pxa_nssp.c
---- linux_c860_org/arch/arm/mach-pxa/pxa_nssp.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/arch/arm/mach-pxa/pxa_nssp.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,57 @@
-+/*
-+ * linux/arch/arm/mach-pxa/pxa_nssp.c
-+ *
-+ * NSSP read routines for tosa (SHARP)
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/interrupt.h>
-+#include <linux/random.h>
-+#include <linux/proc_fs.h>
-+#include <linux/delay.h>
-+#include <linux/init.h>
-+#include <asm/hardware.h>
-+
-+static spinlock_t pxa_nssp_lock = SPIN_LOCK_UNLOCKED;
-+static unsigned long flag;
-+static unsigned char initialized = 0;
-+
-+void pxa_nssp_output(unsigned char reg, unsigned char data)
-+{
-+ int i;
-+ unsigned char dat = ( ((reg << 5) & 0xe0) | (data & 0x1f) );
-+
-+ spin_lock_irqsave(&pxa_nssp_lock, flag);
-+
-+ GPCR(GPIO_TG_SPI_SCLK) |= GPIO_bit(GPIO_TG_SPI_SCLK);
-+ GPCR(GPIO_TG_SPI_CS) |= GPIO_bit(GPIO_TG_SPI_CS);
-+ for(i = 0; i < 8; i++) {
-+ if( !(dat & (1<<(7-i))) )
-+ GPCR(GPIO_TG_SPI_MOSI) |= GPIO_bit(GPIO_TG_SPI_MOSI);
-+ else
-+ GPSR(GPIO_TG_SPI_MOSI) |= GPIO_bit(GPIO_TG_SPI_MOSI);
-+ GPSR(GPIO_TG_SPI_SCLK) |= GPIO_bit(GPIO_TG_SPI_SCLK);
-+ GPCR(GPIO_TG_SPI_SCLK) |= GPIO_bit(GPIO_TG_SPI_SCLK);
-+ }
-+ GPSR(GPIO_TG_SPI_CS) |= GPIO_bit(GPIO_TG_SPI_CS);
-+ spin_unlock_irqrestore(&pxa_nssp_lock, flag);
-+}
-+
-+void pxa_nssp_init(void)
-+{
-+ /* initialize SSP */
-+ set_GPIO_mode(GPIO_TG_SPI_SCLK | GPIO_OUT);
-+ set_GPIO_mode(GPIO_TG_SPI_CS | GPIO_OUT);
-+ set_GPIO_mode(GPIO_TG_SPI_MOSI | GPIO_OUT);
-+ GPSR(GPIO_TG_SPI_CS) |= GPIO_bit(GPIO_TG_SPI_CS);
-+ GPCR(GPIO_TG_SPI_SCLK) |= GPIO_bit(GPIO_TG_SPI_SCLK);
-+}
-diff -Nur linux_c860_org/arch/arm/mach-pxa/registers.c linux/arch/arm/mach-pxa/registers.c
---- linux_c860_org/arch/arm/mach-pxa/registers.c 2002-09-18 18:42:27.000000000 +0900
-+++ linux/arch/arm/mach-pxa/registers.c 2004-06-10 21:09:10.000000000 +0900
-@@ -5,7 +5,10 @@
- This code is based on SA1110's register moniter
-
- ****************************************************************************/
--
-+/*
-+ * ChangeLog:
-+ * 1-Nov-2003 Sharp Corporation for Tosa
-+ */
- /****************************************************************************
-
- registers.c: Register monitor of SA-1110
-@@ -66,6 +69,7 @@
- #include <linux/ioport.h>
- #include <asm/uaccess.h> /* to copy to/from userspace */
- #include <asm/arch/hardware.h>
-+#include <asm/io.h>
-
- //typedef unsigned long Word;
-
-@@ -74,6 +78,10 @@
- #define USE_LOCOMO
- #elif defined(CONFIG_ARCH_PXA_CORGI)
- #define USE_SCOOP
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+#define USE_SCOOP
-+#define USE_SCOOP2
-+#define USE_KUROHYO
- #endif
-
- #define MODULE_NAME "regmon"
-@@ -83,6 +91,12 @@
- #ifdef USE_SCOOP
- #define SCOOP_DIRNAME "scoop"
- #endif
-+#ifdef USE_SCOOP2
-+#define SCOOP2_DIRNAME "scoop2"
-+#endif
-+#ifdef USE_KUROHYO
-+#define KUROHYO_DIRNAME "kurohyo"
-+#endif
- #ifdef USE_LOCOMO
- #define LOCOMO_DIRNAME "locomo"
- #endif
-@@ -183,6 +197,223 @@
- SCP_REG(current_reg->phyaddr)=newRegValue;
- return (count+endp-buffer);
- }
-+#endif
-+#ifdef USE_SCOOP2
-+static ssize_t proc_scoop2_read_reg(struct file * file, char * buf,
-+ size_t nbytes, loff_t *ppos);
-+static ssize_t proc_scoop2_write_reg(struct file * file, const char * buffer,
-+ size_t count, loff_t *ppos);
-+
-+
-+static struct file_operations proc_scoop2_reg_operations = {
-+ read: proc_scoop2_read_reg,
-+ write: proc_scoop2_write_reg
-+};
-+
-+typedef struct scoop2_reg_entry {
-+ u32 phyaddr;
-+ char* name;
-+ char* description;
-+ unsigned short low_ino;
-+} scoop2_reg_entry_t;
-+
-+
-+static scoop2_reg_entry_t scoop2_regs[] =
-+{
-+/* { phyaddr, name, description } */
-+ { 0x00, "MCR", " " },
-+ { 0x04, "CDR", " " },
-+ { 0x08, "CSR", " " },
-+ { 0x0C, "CPR", " " },
-+ { 0x10, "CCR", " " },
-+ { 0x14, "IRR", " " },
-+ { 0x18, "IMR", " " },
-+ { 0x1C, "ISR", " " },
-+ { 0x20, "GPCR", " " },
-+ { 0x24, "GPWR", " " },
-+ { 0x28, "GPRR", " " }
-+};
-+
-+
-+#define NUM_OF_SCOOP2_REG_ENTRY (sizeof(scoop2_regs)/sizeof(scoop2_reg_entry_t))
-+
-+
-+static int proc_scoop2_read_reg(struct file * file, char * buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ int i_ino = (file->f_dentry->d_inode)->i_ino;
-+ char outputbuf[15];
-+ int count;
-+ int i;
-+ scoop2_reg_entry_t* current_reg=NULL;
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ for (i=0;i<NUM_OF_SCOOP2_REG_ENTRY;i++) {
-+ if (scoop2_regs[i].low_ino==i_ino) {
-+ current_reg = &scoop2_regs[i];
-+ break;
-+ }
-+ }
-+ if (current_reg==NULL)
-+ return -EINVAL;
-+
-+ count = sprintf(outputbuf, "0x%04X\n",SCP_JC_REG(current_reg->phyaddr));
-+ *ppos+=count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t proc_scoop2_write_reg(struct file * file, const char * buffer,
-+ size_t count, loff_t *ppos)
-+{
-+ int i_ino = (file->f_dentry->d_inode)->i_ino;
-+ scoop2_reg_entry_t* current_reg=NULL;
-+ int i;
-+ unsigned long newRegValue;
-+ char *endp;
-+
-+ for (i=0;i<NUM_OF_SCOOP2_REG_ENTRY;i++) {
-+ if (scoop2_regs[i].low_ino==i_ino) {
-+ current_reg = &scoop2_regs[i];
-+ break;
-+ }
-+ }
-+ if (current_reg==NULL)
-+ return -EINVAL;
-+
-+ newRegValue = simple_strtoul(buffer,&endp,0);
-+ SCP_JC_REG(current_reg->phyaddr)=newRegValue;
-+ return (count+endp-buffer);
-+}
-+
-+#endif
-+#ifdef USE_KUROHYO
-+static ssize_t proc_kurohyo_read_reg(struct file * file, char * buf,
-+ size_t nbytes, loff_t *ppos);
-+static ssize_t proc_kurohyo_write_reg(struct file * file, const char * buffer,
-+ size_t count, loff_t *ppos);
-+
-+
-+static struct file_operations proc_kurohyo_reg_operations = {
-+ read: proc_kurohyo_read_reg,
-+ write: proc_kurohyo_write_reg
-+};
-+
-+typedef struct kurohyo_reg_entry {
-+ u32 phyaddr;
-+ char* name;
-+ char* description;
-+ unsigned short low_ino;
-+} kurohyo_reg_entry_t;
-+
-+
-+static kurohyo_reg_entry_t kurohyo_regs[] =
-+{
-+/* { phyaddr, name, description } */
-+ { 0x000, "PINTST", " " },
-+ { 0x008, "VHLIN", " " },
-+ { 0x00A, "CMDADR_L", " " },
-+ { 0x00C, "CMDADR_H", " " },
-+ { 0x00E, "CMDFIF", " " },
-+ { 0x010, "CMDFINT", " " },
-+ { 0x012, "BINTMSK", " " },
-+ { 0x014, "BINTST", " " },
-+ { 0x016, "FIPT", " " },
-+ { 0x018, "DMAST", " " },
-+ { 0x01C, "COMD_L", " "},
-+ { 0x01E, "COMD_H", " "},
-+ { 0x022, "FIFOR", " "},
-+ { 0x024, "COMSMD", " "},
-+
-+ { 0x100, "PLCNT", " " },
-+ { 0x102, "PLCST", " " },
-+ { 0x108, "PLIST", " " },
-+ { 0x10A, "PLIEN", " " },
-+ { 0x10C, "PLSEN", " " },
-+ { 0x122, "PLDSA_L", " " },
-+ { 0x124, "PLDSA_H", " " },
-+ { 0x12A, "PLPIT_L", " " },
-+ { 0x12C, "PLPIT_H", " " },
-+ { 0x12E, "PLGMD", " " },
-+ { 0x140, "PLHT", " " },
-+ { 0x142, "PLHDS", " " },
-+ { 0x144, "PLHSS", " " },
-+ { 0x146, "PLHSE", " " },
-+ { 0x14C, "PLHPX", " " },
-+ { 0x150, "PLVT", " " },
-+ { 0x152, "PLVDS", " " },
-+ { 0x154, "PLVSS", " " },
-+ { 0x156, "PLVSE", " " },
-+ { 0x160, "PLCLN", " " },
-+ { 0x162, "PLILN", " " },
-+ { 0x164, "PLMOD", " " },
-+ { 0x166, "MISC", " " },
-+ { 0x16A, "PWHSP", " " },
-+ { 0x16C, "PWVDS", " " },
-+ { 0x16E, "PWVDE", " " },
-+ { 0x170, "PWVSP", " " },
-+ { 0x180, "VWADR_L", " " },
-+ { 0x182, "VWADR_H", " " },
-+};
-+
-+
-+#define NUM_OF_KUROHYO_REG_ENTRY (sizeof(kurohyo_regs)/sizeof(kurohyo_reg_entry_t))
-+
-+#define KUROHYO_LCD_INNER_ADDRESS (TC6393_SYS_BASE+TC6393_GC_INTERNAL_REG_BASE)
-+
-+static int proc_kurohyo_read_reg(struct file * file, char * buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ int i_ino = (file->f_dentry->d_inode)->i_ino;
-+ char outputbuf[15];
-+ int count;
-+ int i;
-+ kurohyo_reg_entry_t* current_reg=NULL;
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ for (i=0;i<NUM_OF_KUROHYO_REG_ENTRY;i++) {
-+ if (kurohyo_regs[i].low_ino==i_ino) {
-+ current_reg = &kurohyo_regs[i];
-+ break;
-+ }
-+ }
-+ if (current_reg==NULL)
-+ return -EINVAL;
-+
-+ count = sprintf(outputbuf, "0x%04X\n",readw(KUROHYO_LCD_INNER_ADDRESS + current_reg->phyaddr));
-+ *ppos+=count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t proc_kurohyo_write_reg(struct file * file, const char * buffer,
-+ size_t count, loff_t *ppos)
-+{
-+ int i_ino = (file->f_dentry->d_inode)->i_ino;
-+ kurohyo_reg_entry_t* current_reg=NULL;
-+ int i;
-+ unsigned long newRegValue;
-+ char *endp;
-+
-+ for (i=0;i<NUM_OF_KUROHYO_REG_ENTRY;i++) {
-+ if (kurohyo_regs[i].low_ino==i_ino) {
-+ current_reg = &kurohyo_regs[i];
-+ break;
-+ }
-+ }
-+ if (current_reg==NULL)
-+ return -EINVAL;
-+
-+ newRegValue = simple_strtoul(buffer,&endp,0);
-+ writew(newRegValue,KUROHYO_LCD_INNER_ADDRESS + current_reg->phyaddr);
-+ return (count+endp-buffer);
-+}
-
- #endif
-
-@@ -814,6 +1045,14 @@
- static struct proc_dir_entry *scoop_regdir;
- static struct proc_dir_entry *scoopdir;
- #endif
-+#ifdef USE_SCOOP2
-+static struct proc_dir_entry *scoop2_regdir;
-+static struct proc_dir_entry *scoop2dir;
-+#endif
-+#ifdef USE_KUROHYO
-+static struct proc_dir_entry *kurohyo_regdir;
-+static struct proc_dir_entry *kurohyodir;
-+#endif
-
- #ifdef USE_LOCOMO
- static struct proc_dir_entry *locomo_regdir;
-@@ -879,6 +1118,62 @@
- }
- }
- #endif
-+#ifdef USE_SCOOP2
-+ scoop2dir = proc_mkdir(SCOOP2_DIRNAME, &proc_root);
-+ if (scoop2dir == NULL) {
-+ printk(KERN_ERR MODULE_NAME": can't create /proc/" SCOOP2_DIRNAME "\n");
-+ return(-ENOMEM);
-+ }
-+
-+ scoop2_regdir = proc_mkdir(REG_DIRNAME, scoop2dir);
-+ if (scoop2_regdir == NULL) {
-+ printk(KERN_ERR MODULE_NAME": can't create /proc/" SCOOP2_DIRNAME "/" REG_DIRNAME "\n");
-+ return(-ENOMEM);
-+ }
-+
-+ for(i=0;i<NUM_OF_SCOOP2_REG_ENTRY;i++) {
-+ entry = create_proc_entry(scoop2_regs[i].name,
-+ S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH,
-+ scoop2_regdir);
-+ if(entry) {
-+ scoop2_regs[i].low_ino = entry->low_ino;
-+ entry->proc_fops = &proc_scoop2_reg_operations;
-+ } else {
-+ printk( KERN_ERR MODULE_NAME
-+ ": can't create /proc/" REG_DIRNAME
-+ "/%s\n", scoop2_regs[i].name);
-+ return(-ENOMEM);
-+ }
-+ }
-+#endif
-+#ifdef USE_KUROHYO
-+ kurohyodir = proc_mkdir(KUROHYO_DIRNAME, &proc_root);
-+ if (kurohyodir == NULL) {
-+ printk(KERN_ERR MODULE_NAME": can't create /proc/" KUROHYO_DIRNAME "\n");
-+ return(-ENOMEM);
-+ }
-+
-+ kurohyo_regdir = proc_mkdir(REG_DIRNAME, kurohyodir);
-+ if (kurohyo_regdir == NULL) {
-+ printk(KERN_ERR MODULE_NAME": can't create /proc/" KUROHYO_DIRNAME "/" REG_DIRNAME "\n");
-+ return(-ENOMEM);
-+ }
-+
-+ for(i=0;i<NUM_OF_KUROHYO_REG_ENTRY;i++) {
-+ entry = create_proc_entry(kurohyo_regs[i].name,
-+ S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH,
-+ kurohyo_regdir);
-+ if(entry) {
-+ kurohyo_regs[i].low_ino = entry->low_ino;
-+ entry->proc_fops = &proc_kurohyo_reg_operations;
-+ } else {
-+ printk( KERN_ERR MODULE_NAME
-+ ": can't create /proc/" REG_DIRNAME
-+ "/%s\n", kurohyo_regs[i].name);
-+ return(-ENOMEM);
-+ }
-+ }
-+#endif
-
- #ifdef USE_LOCOMO
- locomodir = proc_mkdir(LOCOMO_DIRNAME, &proc_root);
-@@ -925,6 +1220,18 @@
- remove_proc_entry(REG_DIRNAME, scoopdir);
- remove_proc_entry(SCOOP_DIRNAME, &proc_root);
- #endif
-+#ifdef USE_SCOOP2
-+ for(i=0;i<NUM_OF_SCOOP2_REG_ENTRY;i++)
-+ remove_proc_entry(scoop2_regs[i].name,scoop2_regdir);
-+ remove_proc_entry(REG_DIRNAME, scoop2dir);
-+ remove_proc_entry(SCOOP2_DIRNAME, &proc_root);
-+#endif
-+#ifdef USE_KUROHYO
-+ for(i=0;i<NUM_OF_KUROHYO_REG_ENTRY;i++)
-+ remove_proc_entry(kurohyo_regs[i].name,kurohyo_regdir);
-+ remove_proc_entry(REG_DIRNAME, kurohyodir);
-+ remove_proc_entry(KUROHYO_DIRNAME, &proc_root);
-+#endif
- #ifdef USE_LOCOMO
- for(i=0;i<NUM_OF_LOCOMO_REG_ENTRY;i++)
- remove_proc_entry(locomo_regs[i].name,locomo_regdir);
-diff -Nur linux_c860_org/arch/arm/mach-pxa/sharpsl_apm.c linux/arch/arm/mach-pxa/sharpsl_apm.c
---- linux_c860_org/arch/arm/mach-pxa/sharpsl_apm.c 2003-06-18 16:12:25.000000000 +0900
-+++ linux/arch/arm/mach-pxa/sharpsl_apm.c 2004-06-10 21:09:10.000000000 +0900
-@@ -49,6 +49,8 @@
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
- * 16-Jan-2003 SHARP sleep_on -> interruptible_sleep_on
- * 13-Mar-2003 SHARP for PXA255
-+ * 29-Jan-2004 Sharp Corporation for Tosa
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #include <linux/config.h>
-@@ -72,6 +74,12 @@
- #include <asm/system.h>
- #include <asm/hardware.h>
-
-+extern int errno;
-+
-+// unistd.h is included for the configuration ioctl stuff
-+#define __KERNEL_SYSCALLS__ 1
-+#include <asm/unistd.h>
-+
- #ifdef CONFIG_ARCH_SHARP_SL
- #include <asm/irq.h>
- #include <asm/arch/irqs.h>
-@@ -91,7 +99,7 @@
- #define KBDOWN (0)
-
- #ifdef CONFIG_APM_CPU_IDLE
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- #define SHARPSL_NEW_IDLE
- #endif
- #endif
-@@ -99,9 +107,17 @@
- #if defined(CONFIG_SABINAL_DISCOVERY)
- extern int discovery_get_main_battery(void);
- #define get_main_battery discovery_get_main_battery
--#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
-+
- extern int sharpsl_get_main_battery(void);
- #define get_main_battery sharpsl_get_main_battery
-+
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+extern int sharpsl_jacket_battery;
-+extern int sharpsl_jacket_exist;
-+extern int sharpsl_get_cardslot_error(void);
-+#endif
-+
- #ifdef SHARPSL_NEW_IDLE
- static int chg_freq_mode = 0;
- #endif
-@@ -119,17 +135,25 @@
- extern int HWR_flag;
- #endif
-
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+extern unsigned int cccr_clkparam;
-+#endif
-+
- #if defined(CONFIG_SABINAL_DISCOVERY)
- #define SHARPSL_AC_LINE_STATUS (( ASIC3_GPIO_PSTS_D & AC_IN )? APM_AC_OFFLINE : APM_AC_ONLINE)
- #define BACKPACK_IN_DETECT() ( ASIC3_GPIO_PSTS_D & BACKPACK_DETECT ) /* 0: exist , 1: not in */
- #else
- #define SHARPSL_BATTERY_OK (( GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW) ) ? 1 : 0) /* 1: OK / 0: FATAL */
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+#define SHARPSL_AC_LINE_STATUS ((GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) ? APM_AC_OFFLINE : APM_AC_ONLINE)
-+#else
- #define SHARPSL_AC_LINE_STATUS ((GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) ? APM_AC_ONLINE : APM_AC_OFFLINE)
- #endif
-+#endif
-
-
- /// ioctl
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- static u32 apm_event_mask = (APM_EVT_POWER_BUTTON);
- #else
- static u32 apm_event_mask = (APM_EVT_POWER_BUTTON | APM_EVT_BATTERY_STATUS);
-@@ -151,6 +175,7 @@
-
- #endif
-
-+#define DEBUG
- #ifdef DEBUG
- #define DPRINTK(x, args...) printk(__FUNCTION__ ": " x,##args)
- #else
-@@ -339,6 +364,7 @@
- };
- #define ERROR_COUNT (sizeof(error_table)/sizeof(lookup_t))
-
-+#define APP_NAME_LIST "/etc/suspend.lst"
- /*
- * Function
- */
-@@ -347,6 +373,8 @@
- static int set_power_state(u_short what, u_short state);
- #ifndef CONFIG_SABINAL_DISCOVERY
- extern int sharpsl_main_battery;
-+extern int sharpsl_backup_battery;
-+extern int sharpsl_bu_battery;
- #endif
- static int apm_get_power_status(u_char *ac_line_status,
- u_char *battery_status,
-@@ -440,7 +468,8 @@
-
- #if defined(CONFIG_ARCH_PXA_POODLE)
- if (irq == IRQ_GPIO_ON_KEY) { /* suspend */
-- //DPRINTK("irq=%d count=%d sharpsl_suspend_request%d\n",irq, count, sharpsl_suspend_request);
-+
-+ DPRINTK("irq=%d count=%d sharpsl_suspend_request%d\n",irq, count, sharpsl_suspend_request);
- if ( GPLR(GPIO_ON_KEY) & GPIO_bit(GPIO_ON_KEY) ) {
- /* release */
- count = 0;
-@@ -623,24 +652,75 @@
- struct task_struct* p = NULL;
- struct task_struct* tsk = current;
-
-+ int fd,x;
-+ mm_segment_t old_fs = get_fs ();
-+ char line_buffer[256];
-+
- if (! spin_trylock(&lock))
- return;
-+
-+ // Try opening the send sig application name list
-+ set_fs(KERNEL_DS);
-+// printk("open sig file\n");
-+ fd = open(APP_NAME_LIST, O_RDONLY, 0);
-+ set_fs(old_fs);
-
- /* send signal to all procs except for kernel-threads */
- read_lock(&tasklist_lock);
-- for_each_task(p) {
-- struct siginfo si;
-
-- if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
-- continue;
-+ if(fd < 0){
-+ for_each_task(p) {
-+ struct siginfo si;
-+
-+ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
-+ continue;
-+ if (!strcmp(p->comm,"cardmgr")) { //Send sig to cardmgr
-+// printk ("Send SIG to application\n");
-+ si.si_signo = signo;
-+ si.si_errno = 0;
-+ si.si_code = SI_KERNEL;
-+ si.si_pid = tsk->pid;
-+ si.si_uid = tsk->uid;
-+ send_sig_info(signo, &si, p);
-+ }
-+ }
-+
-+ }else {
-+ for(;;){
-+ memset(line_buffer, '\0', 256);
-+ set_fs(KERNEL_DS);
-+ for (x = 0; x < 256; x++) {
-+ if (!read(fd, &line_buffer[x], 1))
-+ goto sig_send_done;
-+ if (line_buffer[x] == '\n' || line_buffer[x] == '\r')
-+ break;
-+ }
-+ set_fs(old_fs);
-+
-+ for_each_task(p) {
-+ struct siginfo si;
-+
-+ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
-+ continue;
-+ if (!strncmp(p->comm,line_buffer,strlen(p->comm))) { //Send sig to cardmgr
-+// printk ("Send SIG to application\n");
-+ si.si_signo = signo;
-+ si.si_errno = 0;
-+ si.si_code = SI_KERNEL;
-+ si.si_pid = tsk->pid;
-+ si.si_uid = tsk->uid;
-+ send_sig_info(signo, &si, p);
-+ }
-+ }
-+ }
-
-- si.si_signo = signo;
-- si.si_errno = 0;
-- si.si_code = SI_KERNEL;
-- si.si_pid = tsk->pid;
-- si.si_uid = tsk->uid;
-- send_sig_info(signo, &si, p);
-+ sig_send_done:
-+// printk("close sig\n");
-+ close(fd);
- }
-+
-+
-+
- read_unlock(&tasklist_lock);
-
- if (signo == SIGSTOP) {
-@@ -652,16 +732,58 @@
- schedule();
- set_current_state(state);
-
-+ set_fs(KERNEL_DS);
-+ fd = open(APP_NAME_LIST, O_RDONLY, 0);
-+// printk("open sigstop\n");
-+ set_fs(old_fs);
-+
- read_lock(&tasklist_lock);
-- for_each_task(p) {
-- if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
-- continue;
-
-- if (p->state != TASK_STOPPED) {
-- read_unlock(&tasklist_lock);
-- goto retry;
-+ if(fd < 0){
-+ for_each_task(p) {
-+ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
-+ continue;
-+ if (!strcmp(p->comm,"cardmgr")) {
-+// printk ("Check application stopped\n");
-+
-+ if (p->state != TASK_STOPPED) {
-+ read_unlock(&tasklist_lock);
-+ goto retry;
-+ }
-+ }
- }
-+ }else {
-+
-+ for(;;){
-+ memset(line_buffer, '\0', 256);
-+ old_fs = get_fs();
-+ set_fs(KERNEL_DS);
-+ for (x = 0; x < 256; x++) {
-+ if (!read(fd, &line_buffer[x], 1))
-+ goto sig_stop_done;
-+ if (line_buffer[x] == '\n' || line_buffer[x] == '\r')
-+ break;
-+ }
-+ set_fs(old_fs);
-+
-+ for_each_task(p) {
-+ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
-+ continue;
-+ if (!strncmp(p->comm,line_buffer,strlen(p->comm))) {
-+// printk ("Check application stopped\n");
-+
-+ if (p->state != TASK_STOPPED) {
-+ read_unlock(&tasklist_lock);
-+ goto retry;
-+ }
-+ }
-+ }
-+ }
-+ sig_stop_done:
-+// printk("close sigstop\n");
-+ close(fd);
- }
-+
- read_unlock(&tasklist_lock);
- }
-
-@@ -711,7 +833,11 @@
- }
-
- static spinlock_t locklockFCS = SPIN_LOCK_UNLOCKED;
-+#if 0 // for debug
-+static unsigned long lockFCS = 0x80000000;
-+#else
- static unsigned long lockFCS = 0;
-+#endif
- static int change_lockFCS = 0;
- static spinlock_t lock_power_mode = SPIN_LOCK_UNLOCKED;
- static unsigned long power_mode = 0;
-@@ -986,6 +1112,49 @@
-
- EXPORT_SYMBOL(lock_FCS);
-
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+static ssize_t cccr_change_read_params(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char outputbuf[32];
-+ int count;
-+
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(outputbuf, "0x%08X\n", (unsigned int)cccr_clkparam);
-+ count++;
-+ *ppos += count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count+1))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t cccr_change_write_params(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ unsigned int param=0;
-+
-+ sscanf(buf,"%x",&param);
-+ if (param) {
-+ printk("Change CCCR = %x.\n",param);
-+ cccr_clkparam = param;
-+ sharpsl_chg_freq = param;
-+ cpu_xscale_sl_change_speed_num();
-+ cccr_reg = CCCR;
-+ printk("Changed CCCR = %x.\n",cccr_reg);
-+
-+ }
-+ return nbytes;
-+}
-+
-+static struct file_operations proc_cccr_change_params_operations = {
-+ read: cccr_change_read_params,
-+ write: cccr_change_write_params,
-+};
-+#endif
-+
- #ifdef CONFIG_APM_CPU_IDLE
- #ifdef SHARPSL_NEW_IDLE
- static int save_icmr;
-@@ -1021,21 +1190,35 @@
- if ( !chg_freq_mode ) {
- //LCM_LPT1 = 0x0080;
- // if (!lockFCS || ((lockFCS == LOCK_FCS_FFUART) && (!(FFMSR & MSR_DSR)))) {
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if (!lockFCS) {
-+#else
- #if defined(CONFIG_ARCH_SHARP_SL_J)
- if (!(lockFCS & ~LOCK_FCS_FFUART)) {
- #else
- if (!lockFCS) {
- #endif
-+#endif
- #if defined(CONFIG_ARCH_PXA_POODLE)
- while(1) {
- if ( !( LCCR0 & 0x1 ) || ( GPLR(74) & GPIO_bit(74)) ) break;
- }
- #endif
-+
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ CKEN &= ~CKEN2_AC97;
-+#endif
-+
- if ( cccr_reg == 0x145 ) {
- cpu_xscale_sl_change_speed_121();
- } else {
- cpu_xscale_change_speed_121();
- }
-+
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ CKEN |= CKEN2_AC97;
-+#endif
-+
- }
- }
- chg_freq_mode = 1;
-@@ -1100,22 +1283,46 @@
- }
- #endif
- MDREFR &= ~MDREFR_APD;
--#if defined(CONFIG_ARCH_PXA_SHEPHERD)
-+
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ CKEN &= ~CKEN2_AC97;
-+#endif
-+
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
- if ( cccr_reg == 0x161 ) {
- cpu_xscale_sl_change_speed_161();
- }
- else if ( cccr_reg == 0x145 ) {
- cpu_xscale_sl_change_speed_145();
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ } else {
-+ cccr_clkparam = (unsigned int)cccr_reg;
-+ cpu_xscale_sl_change_speed_num();
-+ }
-+#else
- } else {
- cpu_xscale_change_speed_241();
- }
-+#endif
- #else
- if ( cccr_reg == 0x145 ) {
- cpu_xscale_sl_change_speed_145();
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ } else {
-+ cccr_clkparam = (unsigned int)cccr_reg;
-+ cpu_xscale_sl_change_speed_num();
-+ }
-+#else
- } else {
- cpu_xscale_change_speed_241();
- }
- #endif
-+#endif
-+
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ CKEN |= CKEN2_AC97;
-+#endif
-+
- } else {
- MDREFR &= ~MDREFR_APD;
- }
-@@ -1281,6 +1488,11 @@
- u_short *battery_life)
- {
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+u_char dumm_status;
-+u_short dumm_life;
-+#endif
-+
- #ifdef CONFIG_SABINAL_DISCOVERY
- discovery_apm_get_power_status(ac_line_status,
- battery_status, battery_flag, battery_percentage, battery_life);
-@@ -1290,7 +1502,11 @@
- #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
- sharpsl_apm_get_power_status(ac_line_status,
- battery_status, battery_flag, battery_percentage, battery_life);
--
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+ sharpsl_apm_get_power_status(ac_line_status,
-+ battery_status,&dumm_status,&dumm_status,battery_flag,
-+ battery_percentage,&dumm_status,&dumm_status,
-+ battery_life,&dumm_life,&dumm_life);
- #endif
- return APM_SUCCESS;
- }
-@@ -1302,12 +1518,15 @@
- u_short *battery_life)
- {
-
--#ifdef CONFIG_SABINAL_DISCOVERY
--
-+#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_TOSA)
-+#if defined(CONFIG_SABINAL_DISCOVERY)
- discovery_apm_get_bp_status(ac_line_status,
- battery_status, battery_flag, battery_percentage, battery_life);
--
-+#else
-+ sharpsl_apm_get_bp_status(ac_line_status,
-+ battery_status, battery_flag, battery_percentage, battery_life);
- #endif // CONFIG_SABINAL_DISCOVERY
-+#endif
- return APM_SUCCESS;
- }
-
-@@ -1475,6 +1694,9 @@
- is_goto_suspend = 1;
- #ifdef CONFIG_PCMCIA
- pcmcia_set_detect_interrupt(0, 0, 1);
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ pcmcia_set_detect_interrupt(1, 0, 1);
-+#endif
- #endif
- send_sig_to_all_procs(SIGSTOP);
- /* map all suspends to ACPI D3 */
-@@ -1498,6 +1720,9 @@
- resume_handling = 1;
- #ifdef CONFIG_PCMCIA
- pcmcia_set_detect_interrupt(0, 1, 0);
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ pcmcia_set_detect_interrupt(1, 1, 0);
-+#endif
- #endif
-
- #ifdef CONFIG_SABINAL_DISCOVERY
-@@ -1533,6 +1758,9 @@
- send_sig_to_all_procs(SIGCONT);
- #ifdef CONFIG_PCMCIA
- pcmcia_set_detect_interrupt(0, 1, 1);
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ pcmcia_set_detect_interrupt(1, 1, 1);
-+#endif
- #endif
- resume_handling = 0;
-
-@@ -1681,8 +1909,9 @@
- if (send_event(event)) {
- queue_event(event, NULL);
- waiting_for_resume = 1;
-- if (suspends_pending <= 0)
-+ if (suspends_pending <= 0){
- (void) suspend();
-+ }
- }
- break;
-
-@@ -1833,7 +2062,7 @@
-
- for (;;) {
- /* Nothing to do, just sleep for the timeout */
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- timeout = 2*timeout;
- if (timeout > APM_CHECK_TIMEOUT)
- #endif
-@@ -1863,7 +2092,7 @@
-
- for (;;) {
- /* Nothing to do, just sleep for the timeout */
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- timeout = 2*timeout;
- if (timeout > APM_CHECK_TIMEOUT)
- #endif
-@@ -2012,6 +2241,7 @@
- else
- queue_event(APM_USER_SUSPEND, as);
- if (suspends_pending <= 0) {
-+
- if (suspend() != APM_SUCCESS)
- return -EIO;
- } else {
-@@ -2040,7 +2270,7 @@
- case APM_IOC_GET_REGISTER: {
- } break;
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- case APM_IOC_RESET_PM: {
- extern int sharpsl_main_bk_flag;
- sharpsl_main_bk_flag = 1;
-@@ -2114,11 +2344,14 @@
-
- case APM_IOC_BATTERY_BACK_CHK: {
- //return collie_backup_battery;
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+ return sharpsl_bu_battery;
-+#endif
- } break;
-
- case APM_IOC_BATTERY_MAIN_CHK: {
- #ifndef CONFIG_SABINAL_DISCOVERY
-- return sharpsl_main_battery;
-+ return sharpsl_main_battery;
- #endif
- } break;
-
-@@ -2132,7 +2365,7 @@
- return 1;
- } break;
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- case APM_IOC_SFREQ: {
- int freq;
- get_user(freq, (unsigned int *)(arg));
-@@ -2179,11 +2412,11 @@
- unsigned long flags;
-
- sleeping = 1;
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- sharpsl_off_mode = 1;
- #endif
- save_flags_cli(flags);
--#if defined(CONFIG_ARCH_PXA_SHEPHERD)
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
- sharpsl_restart_nonstop();
- #else
- sharpsl_restart();
-@@ -2213,7 +2446,25 @@
- apm_event_mask = arg;
- return tmp;
- }
-+
-+ case APM_IOC_GET_CARDSLOT_ERROR: {
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ return sharpsl_get_cardslot_error();
-+#endif
-+ }
-+
-+ case APM_IOC_BATTERY_JACKET_CHK: {
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ return sharpsl_jacket_battery;
-+#endif
-+ } break;
-+
-+ case APM_IOC_GET_JACKET_STATE:
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ return sharpsl_jacket_exist;
-+#endif
- #endif
-+
- default:
- return -EINVAL;
- }
-@@ -2236,8 +2487,9 @@
- }
- if (as->suspends_pending > 0) {
- suspends_pending -= as->suspends_pending;
-- if (suspends_pending <= 0)
-+ if (suspends_pending <= 0){
- (void) suspend();
-+ }
- }
- if (user_list == as)
- user_list = as->next;
-@@ -2367,7 +2619,7 @@
- }
-
-
--#ifdef CONFIG_SABINAL_DISCOVERY
-+#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_TOSA)
- static int apm_bp_get_info(char *buf, char **start, off_t fpos, int length)
- {
- char * p;
-@@ -2446,8 +2698,7 @@
- }
- #endif
-
--
--#ifdef CONFIG_SABINAL_DISCOVERY
-+#if defined(CONFIG_SABINAL_DISCOVERY)
- static int discovery_key_check(void *unused)
- {
-
-@@ -2457,18 +2708,28 @@
-
- while(1) {
-
-- interruptiblee_sleep_on(&fl_key);
-+ interruptible_sleep_on(&fl_key);
-
- while(1) {
- interruptible_sleep_on_timeout((wait_queue_head_t*)&queue, KEY_TICK );
-- if ( (ASIC3_GPIO_PSTS_A & PWR_ON_KEY) != 0 ) { //key up
-- break;
-- }
-+#ifdef CONFIG_SABINAL_DISCOVERY
-+ if ( (ASIC3_GPIO_PSTS_A & PWR_ON_KEY) != 0 ) { //key up
-+ break;
-+ }
-+#else
-+ if ( GPLR(GPIO_ON_KEY) & GPIO_bit(GPIO_ON_KEY) ) {
-+ break;
-+ }
-+#endif
- if ( ( jiffies - on_press_time ) < 0 ) {
-
- if ( ( jiffies + (0xffffffff - on_press_time) ) > FLONT_LIGHT_TOGGLE_TIME ) {
- if ( apm_event_mask & APM_EVT_POWER_BUTTON ) {
-+#ifdef CONFIG_SABINAL_DISCOVERY
- discoveryfl_blank_power_button();
-+#else
-+ sharpslfl_blank_power_button();
-+#endif
- } else {
- handle_scancode(SLKEY_FRONTLIGHT|KBDOWN , 1);
- handle_scancode(SLKEY_FRONTLIGHT|KBUP , 0);
-@@ -2480,7 +2741,11 @@
- if ( ( jiffies - on_press_time ) > FLONT_LIGHT_TOGGLE_TIME ) {
-
- if ( apm_event_mask & APM_EVT_POWER_BUTTON ) {
-+#ifdef CONFIG_SABINAL_DISCOVERY
- discoveryfl_blank_power_button();
-+#else
-+ tosa_l_blank_power_button();
-+#endif
- } else {
- handle_scancode(SLKEY_FRONTLIGHT|KBDOWN , 1);
- handle_scancode(SLKEY_FRONTLIGHT|KBUP , 0);
-@@ -2623,6 +2888,7 @@
- struct proc_dir_entry *apm_proc;
- struct proc_dir_entry *lock_fcs_proc;
- struct proc_dir_entry *power_mode_proc;
-+ struct proc_dir_entry *cccr_change_proc;
-
- apm_info.bios = apm_bios_info;
- if (apm_info.bios.version == 0) {
-@@ -2640,19 +2906,35 @@
- }
-
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
--#if defined(CONFIG_ARCH_PXA_SHEPHERD)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
-+#if defined(CONFIG_SL_CCCR242)
-+ sharpsl_chg_freq = (unsigned int)0x00000242;
-+ cccr_clkparam = (unsigned int)sharpsl_chg_freq;
-+ cpu_xscale_sl_change_speed_num();
-+#elif defined(CONFIG_SL_CCCR162)
-+ sharpsl_chg_freq = (unsigned int)0x00000162;
-+ cccr_clkparam = (unsigned int)sharpsl_chg_freq;
-+ cpu_xscale_sl_change_speed_num();
-+#else
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
- sharpsl_chg_freq = (unsigned int)0x00000161;
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ cccr_clkparam = (unsigned int)sharpsl_chg_freq;
-+#endif
- cpu_xscale_sl_change_speed_161();
- #else
- #if 1 // default 400MHz
- sharpsl_chg_freq = (unsigned int)0x00000241;
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ cccr_clkparam = (unsigned int)sharpsl_chg_freq;
-+#endif
- #else
- cpu_xscale_sl_change_speed_145_without_lcd();
- #endif
- #endif
-+#endif
- cccr_reg = CCCR;
-- printk("FCS : CCCR = %x\n",cccr_reg);
-+// printk("FCS : CCCR = %x\n",cccr_reg);
- #endif
-
- /*
-@@ -2732,11 +3014,19 @@
- power_mode_proc->proc_fops = &proc_power_mode_params_operations;
- }
-
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ cccr_change_proc = create_proc_entry("cccr_change", 0, NULL);
-+ if (cccr_change_proc) {
-+ cccr_change_proc->proc_fops = &proc_cccr_change_params_operations;
-+ }
-+#endif
-+
- kernel_thread(apm_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-
--#ifdef CONFIG_SABINAL_DISCOVERY
-+#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_TOSA)
-+#if defined(CONFIG_SABINAL_DISCOVERY)
- kernel_thread( discovery_key_check, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
--
-+#endif
- {
- struct proc_dir_entry *apm_proc_backpack;
-
-diff -Nur linux_c860_org/arch/arm/mach-pxa/sharpsl_deviceinfo.c linux/arch/arm/mach-pxa/sharpsl_deviceinfo.c
---- linux_c860_org/arch/arm/mach-pxa/sharpsl_deviceinfo.c 2002-11-14 19:27:18.000000000 +0900
-+++ linux/arch/arm/mach-pxa/sharpsl_deviceinfo.c 2004-06-10 21:09:10.000000000 +0900
-@@ -14,6 +14,10 @@
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ * ChangeLog:
-+ * 1-Nov-2003 Sharp Corporation for Tosa
-+ *
- */
-
- #include <linux/config.h>
-@@ -63,7 +67,10 @@
- {"serial", "device individual id"},
- {"checksum", "ROM checksum"},
- {"bootstr", "boot string"},
-- {"hardno", "hardware number"}
-+ {"hardno", "hardware number"},
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ {"equipment", "built-in equipment"},
-+#endif
- };
-
- #define NUM_OF_DEVICEINFO_ENTRY (sizeof(deviceinfo)/sizeof(deviceinfo_entry_t))
-diff -Nur linux_c860_org/arch/arm/mach-pxa/sharpsl_param.c linux/arch/arm/mach-pxa/sharpsl_param.c
---- linux_c860_org/arch/arm/mach-pxa/sharpsl_param.c 2002-10-23 14:09:20.000000000 +0900
-+++ linux/arch/arm/mach-pxa/sharpsl_param.c 2004-06-10 21:09:10.000000000 +0900
-@@ -16,11 +16,12 @@
- * GNU General Public License for more details.
- *
- * ChangeLog:
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- *
- */
- #include <linux/types.h>
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- #include <asm/arch/sharpsl_param.h>
- #endif
-
-@@ -28,7 +29,7 @@
- sharpsl_flash_param_info sharpsl_flash_param;
-
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- int sharpsl_get_comadj()
- {
- if ( sharpsl_flash_param.comadj_keyword == FLASH_COMADJ_MAJIC ) {
-@@ -39,7 +40,7 @@
- }
- #endif
-
--#if defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- int sharpsl_get_phadadj()
- {
- if ( sharpsl_flash_param.phad_keyword == FLASH_PHAD_MAJIC ) {
-@@ -51,7 +52,7 @@
- #endif
-
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- void sharpsl_get_param(void)
- {
- // get comadj
-diff -Nur linux_c860_org/arch/arm/mach-pxa/sharpsl_power.c linux/arch/arm/mach-pxa/sharpsl_power.c
---- linux_c860_org/arch/arm/mach-pxa/sharpsl_power.c 2003-10-09 14:47:25.000000000 +0900
-+++ linux/arch/arm/mach-pxa/sharpsl_power.c 2004-06-10 21:09:10.000000000 +0900
-@@ -35,6 +35,8 @@
- * 16-Jan-2003 SHARP sleep_on -> interruptible_sleep_on
- * 09-Apr-2003 SHARP for Shaphard (software reset)
- * October-2003 SHARP for boxer
-+ * 28-Nov-2003 Sharp Corporation for Tosa
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- *
- */
-
-@@ -42,12 +44,17 @@
- /*
- * Debug macros
- */
-+//#define DEBUG 1
- #ifdef DEBUG
- # define DPRINTK(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ## args)
- #else
- # define DPRINTK(fmt, args...)
- #endif
-
-+//#define WUPSRC_DEBUG
-+#ifdef WUPSRC_DEBUG
-+unsigned int debug1,debug2,debug3,debug4;
-+#endif
-
- #include <linux/config.h>
- #include <linux/module.h>
-@@ -82,8 +89,15 @@
- #include <asm/arch/keyboard_poodle.h>
- #elif defined(CONFIG_ARCH_PXA_CORGI)
- #include <asm/arch/keyboard_corgi.h>
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+#include <asm/arch/keyboard_tosa.h>
-+#include <linux/ac97_codec.h>
- #endif
-
-+#ifdef LOGICAL_WAKEUP_SRC
-+#include <asm/arch/sharpsl_wakeup.h>
-+unsigned long logical_wakeup_src_mask = IDPM_WAKEUP_REC|IDPM_WAKEUP_SYNC;
-+#endif
- #include "sharpsl_param.h"
-
-
-@@ -116,9 +130,16 @@
- extern int cpu_pxa_do_suspend(void);
- extern unsigned short chkFatalBatt(void);
- extern int sharpsl_off_charge_battery(void);
--void pxa_ssp_init(void);
-+extern int charge_status;
-
- #if defined(CONFIG_ARCH_PXA_POODLE)
-+void pxa_ssp_init(void);
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+void tosa_ac97_init(void);
-+int pxa_ac97_get(struct ac97_codec **codec, unsigned char *ac97_on);
-+static unsigned char ac97_on = 0;
-+#endif
-+#if defined(CONFIG_ARCH_PXA_POODLE)
- #define PWER_RTC 0x80000000
- #define R_WAKEUP_SRC (GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_CF_STSCHG) /*|
- GPIO_bit(GPIO_CHRG_FULL) */ )
-@@ -139,6 +160,32 @@
- GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_MAIN_BAT_LOW))
- #define WAKEUP_SRC ( R_WAKEUP_SRC | F_WAKEUP_SRC | PWER_RTC )
- #define WAKEUP_DEF_SRC ( WAKEUP_SRC );
-+
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+/*
-+<F_WAKEUP_SRC>
-+GPIO_POWERON (0)
-+GPIO_AC_IN (2)
-+GPIO_RECORD_BTN (3)
-+GPIO_SYNC (4)
-+GPIO_USB_IN (5)
-+GPIO_JACKET_DETECT (7)
-+GPIO_nSD_DETECT (9)
-+GPIO_nSD_INT (10)
-+GPIO_BAT1_CRG (12)
-+GPIO_CF_CD (13)
-+GPIO_BAT0_CRG (14)
-+*/
-+#define PWER_RTC 0x80000000
-+#define R_WAKEUP_SRC (GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_JACKET_DETECT))
-+#define F_WAKEUP_SRC (GPIO_bit(GPIO_POWERON) | GPIO_bit(GPIO_RESET) | \
-+ GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_RECORD_BTN) | \
-+ GPIO_bit(GPIO_SYNC) | GPIO_bit(GPIO_USB_IN) | \
-+ GPIO_bit(GPIO_JACKET_DETECT) )
-+#define WAKEUP_SRC ( R_WAKEUP_SRC | F_WAKEUP_SRC | PWER_RTC )
-+#define WAKEUP_DEF_SRC ( GPIO_bit(GPIO_POWERON) | GPIO_bit(GPIO_RESET) | \
-+ GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_JACKET_DETECT) | \
-+ GPIO_bit(GPIO_RECORD_BTN) | GPIO_bit(GPIO_SYNC) )
- #endif
-
- #if defined(CONFIG_SABINAL_DISCOVERY)
-@@ -148,6 +195,7 @@
- u32 sharpsl_emergency_off = 0;
- unsigned int sharpsl_chg_freq = 0x0145;
- static DECLARE_WAIT_QUEUE_HEAD(wq_off);
-+static DECLARE_WAIT_QUEUE_HEAD(key_off);
- int sharpsl_off_mode = 0;
- int sharpsl_off_state = 0;
- int pass_charge_flag = 0;
-@@ -158,18 +206,26 @@
- extern int corgi_wakeup_remocon_hook(void);
- #endif
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- extern unsigned long cccr_reg;
- static int sharpsl_alarm_flag;
- #endif
-
-+//@@#if defined(CONFIG_ARCH_PXA_TOSA)
-+//@@extern int sharpsl_get_jacket_status(void);
-+//@@#endif
-+
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+extern unsigned int cccr_clkparam;
-+#endif
-+
- void PrintParamTable(void);
-
- #ifdef CONFIG_SABINAL_DISCOVERY
- static u32 alarm_enable=0;
- #endif
-
--#ifdef CONFIG_ARCH_PXA_SHEPHERD
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
- int sharpsl_restart(void)
- {
- return sharpsl_restart_core(0);
-@@ -183,16 +239,23 @@
- int sharpsl_restart_core(int nonstop_flag)
- {
- int flag = 1;
--
-+#if !defined(CONFIG_ARCH_PXA_TOSA)
- if (nonstop_flag) {
- SCP_REG_GPWR |= SCP_LED_GREEN;
- }
- else {
- SCP_REG_GPWR &= ~SCP_LED_GREEN;
- }
--
-+#endif
- RCSR = 0xf;
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if( nonstop_flag && ((MSC0 & 0xffff0000) == 0x7ff00000) )
-+ MSC0 = (MSC0 & 0xffff)|0x7ee00000;
-+ // GPIO reset
-+ set_GPIO_mode(GPIO_ON_RESET | GPIO_OUT);
-+ GPCR(GPIO_ON_RESET) |= GPIO_bit(GPIO_ON_RESET);
-+#else
- OSMR3 = OSCR+0x100;
- OWER = 0x01;
- OIER |= 0x08;
-@@ -200,7 +263,7 @@
- while(1) {
- if ( flag++ > 0x20000000 ) break;
- }
--
-+#endif
- return 0;
- }
- #else
-@@ -258,17 +321,47 @@
-
- #if !defined(CONFIG_SABINAL_DISCOVERY)
-
--#if defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- int sharpsl_wakeup_check_charge(void)
- {
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ unsigned int pfer;
-+ unsigned int prer;
-+
-+ pfer = F_WAKEUP_SRC & apm_wakeup_src_mask & WAKEUP_SRC;
-+ prer = R_WAKEUP_SRC & apm_wakeup_src_mask & WAKEUP_SRC;
-+ //printk("pfer = %08x",pfer);
-+ //printk("prer = %08x",prer);
-+
-+ pfer &= ~(F_WAKEUP_SRC & R_WAKEUP_SRC);
-+ prer &= ~(F_WAKEUP_SRC & R_WAKEUP_SRC);
-+ //printk("pfer = %08x",pfer);
-+ //printk("prer = %08x",prer);
-+
-+ pfer = ~GPLR0 & pfer;
-+ prer = GPLR0 & prer;
-+ //printk("pfer = %08x",pfer);
-+ //printk("prer = %08x",prer);
-+
-+ if(pfer != 0 || prer != 0){
-+ apm_wakeup_factor = pfer | prer;
-+ return 0; // wakeup
-+ }
-+
-+ if ( ( ( RTAR - RCNR ) < 20 ) && ( RTSR & RTSR_ALE ) ) {
-+ return -1; // go off.
-+ }
-+
-+ return 1; // continue.
-+#else
- unsigned int temp;
-
- temp = ~GPLR0 & ( GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_KEY_INT) | GPIO_bit(GPIO_WAKEUP) );
- if ( temp != 0 ) {
- apm_wakeup_factor = temp;
- }
--
- return temp;
-+#endif
- }
- #endif
-
-@@ -276,31 +369,71 @@
- {
- int i;
- u32 gplr;
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ int batt_fault = ((PSSR & 0x02) != 0);
-+#endif
-
- /* setting GPIO */
- GPDR0 = sys_ctx.gpdr0;
- GAFR0_L = sys_ctx.gafr0_l;
- GPDR0 &= ~WAKEUP_SRC;
-- GAFR0_L &= ~WAKEUP_SRC;
-+// GAFR0_L &= ~WAKEUP_SRC;
- gplr = GPLR0;
-
-+#ifdef WUPSRC_DEBUG
-+ debug1 = PEDR;
-+ debug2 = WAKEUP_SRC;
-+ debug3 = apm_wakeup_src_mask;
-+ debug4 = PSSR;
-+#endif
- apm_wakeup_factor = PEDR & WAKEUP_SRC & apm_wakeup_src_mask;
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- apm_wakeup_factor &= ~0x80000000; /* clear ALARM */
- if ( ( RTSR & 0x1 ) && ( RTSR & RTSR_ALE ) )
- #else
- if ( RTSR & 0x1 )
- #endif
- apm_wakeup_factor |= 0x80000000; /* ALARM */
-+
-+
- PEDR = WAKEUP_SRC;
-
-- if ( !apm_wakeup_factor )
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if(batt_fault) PSSR = 0x02; /* clear BFS bit */
-+#endif
-+
-+ if ( !apm_wakeup_factor ){
- return 0; /* no wakeup factor */
-+ }
-
- #if defined(CONFIG_ARCH_PXA_CORGI)
- gplr &= ~GPIO_bit(GPIO_KEY_INT);
- #endif
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ //if(PSSR & 0x02){
-+ if(batt_fault){
-+ // Asserted battery fault.
-+ // It must have changed the main battery.
-+ if(GPIO_bit(GPIO_POWERON) & apm_wakeup_factor){
-+ int change_ac_status = 0;
-+ if ( apm_wakeup_src_mask & GPIO_bit(GPIO_AC_IN)){
-+ if ( !charge_status && ( gplr & GPIO_bit(GPIO_AC_IN) ) == 0)
-+ change_ac_status = 1;
-+
-+ if ( charge_status && ( gplr & GPIO_bit(GPIO_AC_IN) ) != 0)
-+ change_ac_status = 1;
-+ }
-+ if(change_ac_status)
-+ apm_wakeup_factor |= GPIO_bit(GPIO_AC_IN);
-+
-+ return apm_wakeup_factor;
-+ }
-+ if(GPIO_bit(GPIO_RESET) & apm_wakeup_factor){
-+ return apm_wakeup_factor;
-+ }
-+ }
-+#endif
- /* Faulty operation check */
- for (i = 0; i <= 15; i++) {
- #if defined(CONFIG_ARCH_PXA_CORGI)
-@@ -329,27 +462,56 @@
- u32 gplr = GPLR0;
- int is_resume = 0;
-
-+ DPRINTK("GPLR0 = %x\n",gplr);
-+#ifdef WUPSRC_DEBUG
-+ printk("PEDR=%08x\n",debug1);
-+ printk("src=%08x\n",debug2);
-+ printk("src_mask=%08x\n",debug3);
-+ printk("PSSR=%08x->%08x\n",debug4,PSSR);
-+#endif
- if ( (apm_wakeup_factor & GPIO_bit(GPIO_AC_IN)) &&
- sharpsl_battery_charge_hook ) {
-+
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if ( !(gplr & GPIO_bit(GPIO_AC_IN)) ) {
-+#else
- if ( gplr & GPIO_bit(GPIO_AC_IN) ) {
-+#endif
- sharpsl_battery_charge_hook(2); /* charge on */
- } else
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if ( gplr & GPIO_bit(GPIO_AC_IN) ) {
-+#else
- if ( !( gplr & GPIO_bit(GPIO_AC_IN) ) ) {
-+#endif
- sharpsl_battery_charge_hook(1); /* charge off */
- }
- }
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if ( (apm_wakeup_factor & GPIO_bit(GPIO_BAT0_CRG)) &&
-+ sharpsl_battery_charge_hook ) {
-+ sharpsl_battery_charge_hook(0); /* tosa: main battery full */
-+ }
-+ if ( (apm_wakeup_factor & GPIO_bit(GPIO_BAT1_CRG)) &&
-+ sharpsl_battery_charge_hook ) {
-+ sharpsl_battery_charge_hook(3); /* tosa: jacket battery full */
-+ }
-+#else
- if ( (apm_wakeup_factor & GPIO_bit(GPIO_CHRG_FULL)) &&
- sharpsl_battery_charge_hook ) {
- sharpsl_battery_charge_hook(0); /* charge off */
- }
-+#endif
-+
- #if defined(CONFIG_ARCH_PXA_POODLE)
- if ( apm_wakeup_factor & GPIO_bit(GPIO_ON_KEY) )
- is_resume |= GPIO_bit(GPIO_ON_KEY);
- #endif
- #if defined(CONFIG_ARCH_PXA_CORGI)
- if ( apm_wakeup_factor & GPIO_bit(GPIO_KEY_INT) ) {
-- if (sharppda_kbd_is_wakeup())
-+ if (sharppda_kbd_is_wakeup()){
- is_resume |= GPIO_bit(GPIO_KEY_INT);
-+ }
- }
- #if defined(CONFIG_ARCH_PXA_SHEPHERD)
- if ((apm_wakeup_factor & GPIO_bit(GPIO_MAIN_BAT_LOW)) &&
-@@ -373,14 +535,15 @@
- ( sharpsl_battery_charge_hook )) {
- sharpsl_battery_charge_hook(1); /* charge off */
- }
--
- #else
- if ( apm_wakeup_factor & GPIO_bit(GPIO_MAIN_BAT_LOW) )
- apm_wakeup_src_mask = 0;
- #endif
- #endif
-+#if !defined(CONFIG_ARCH_PXA_TOSA)
- if ( apm_wakeup_factor & GPIO_bit(GPIO_WAKEUP) )
- is_resume |= GPIO_bit(GPIO_WAKEUP);
-+#endif
- #if defined(CONFIG_ARCH_PXA_POODLE)
- if ( (apm_wakeup_factor & GPIO_bit(GPIO_GA_INT)) && (LCM_KIC & 1) ) {
- LCM_KIC &= ~0x100;
-@@ -397,28 +560,116 @@
- #endif
- #if defined(CONFIG_ARCH_PXA_CORGI)
- if ( apm_wakeup_factor & GPIO_bit(GPIO_AK_INT) ) {
-- if ( corgi_wakeup_remocon_hook() )
-+ if ( corgi_wakeup_remocon_hook() ){
- is_resume |= GPIO_bit(GPIO_AK_INT);
-+ }
-+ }
-+#endif
-+
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if ( (apm_wakeup_factor & GPIO_bit(GPIO_AC_IN)) ) {
-+#ifdef LOGICAL_WAKEUP_SRC
-+ if (logical_wakeup_src_mask&IDPM_WAKEUP_AC) {
-+ is_resume |= GPIO_bit(GPIO_AC_IN);
-+ }
-+#endif
-+ }
-+ if (apm_wakeup_factor & GPIO_bit(GPIO_POWERON)) { // function key
-+ if (sharppda_kbd_is_wakeup()){
-+ is_resume |= GPIO_bit(GPIO_POWERON);
-+ }
-+ }
-+ if (apm_wakeup_factor & GPIO_bit(GPIO_RECORD_BTN)) { // rec key
-+ if (sharppda_kbd_is_wakeup()){
-+ is_resume |= GPIO_bit(GPIO_RECORD_BTN);
-+ }
-+ }
-+ if (apm_wakeup_factor & GPIO_bit(GPIO_SYNC)) { // sync key
-+ if (sharppda_kbd_is_wakeup()){
-+ is_resume |= GPIO_bit(GPIO_SYNC);
-+ }
-+ }
-+ if (apm_wakeup_factor & GPIO_bit(GPIO_USB_IN)) {
-+#ifdef LOGICAL_WAKEUP_SRC
-+ if (logical_wakeup_src_mask&IDPM_WAKEUP_USBD) {
-+ is_resume |= GPIO_bit(GPIO_USB_IN);
-+ }
-+#endif
-+ }
-+ if (apm_wakeup_factor & GPIO_bit(GPIO_JACKET_DETECT)){
-+ sharpsl_battery_charge_hook(4);
-+#ifdef LOGICAL_WAKEUP_SRC
-+ if (logical_wakeup_src_mask&IDPM_WAKEUP_JACKET) {
-+ is_resume |= GPIO_bit(GPIO_JACKET_DETECT);
-+ }
-+#endif
- }
- #endif
-
-- DPRINTK("alarm flag = %8x\n",sharpsl_alarm_flag);
-- if ( ( apm_wakeup_factor & PWER_RTC ) && !sharpsl_alarm_flag)
-+ if ( ( apm_wakeup_factor & PWER_RTC ) && !sharpsl_alarm_flag){
- is_resume |= PWER_RTC;
-+ }
-
- return is_resume;
- }
- #endif
-
--
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+#define BATTERY_CHECK_TIME (60*5) // 5 min
-+#else
- #define BATTERY_CHECK_TIME 60*10 // 10 min
--extern int charge_status;
-+#endif
-+
-+//extern int charge_status;
- extern int sharpsl_off_charge;
-
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+#if 0 /////////////////////////////////////////////////////////
-+static void tc6393_susx(void)
-+{
-+#if 1
-+ reset_scoop_jc_gpio(SCP_JC_TC3693_L3V_ON);
-+// reset_scoop_jc_gpio(SCP_JC_TC6393_SUSPEND);
-+// reset_scoop_gpio(SCP_TC6393_REST_IN);
-+#endif
-+
-+// TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_CARD_VCC_ON;
-+// TC6393_SYS_REG(TC6393_SYS_GPODSR1) = 0; /* CARD_VCC_OFF */
-+#if 1
-+// TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_GPO_OE;
-+// TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_CARD_VCC_ON;
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_CARD_VCC_ON;
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_GPO_OE;
-+#endif
-+}
-+
-+static void tc6393_resx(void)
-+{
-+ set_GPIO_mode(GPIO11_3_6MHz_MD);
-+ set_GPIO_mode(GPIO18_RDY_MD);
-+ mdelay(1);
-+ set_scoop_jc_gpio(SCP_JC_TC6393_SUSPEND);
-+ mdelay(10);
-+ set_scoop_gpio(SCP_TC6393_REST_IN);
-+ //set_scoop_jc_gpio(SCP_JC_TC3693_L3V_ON);
-+ TC6393_SYS_REG(TC6393_SYS_FER) = 0;
-+ /* clock setting */
-+ TC6393_SYS_REG(TC6393_SYS_PLL2CR) = 0x0cc1;
-+ TC6393_SYS_REG(TC6393_SYS_CCR) = 0x1310;
-+ TC6393_SYS_REG(TC6393_SYS_MCR) = 0x80AA;
-+ /* GPIO */
-+ TC6393_SYS_REG(TC6393_SYS_GPER) = 0x0030; /* 15-0 GPO */
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_GPO_OE;
-+ /* 15-0 GPO set H */
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) = TC6393_CARD_VCC_ON;
-+}
-+#endif ///////////////////////////////////////////////
-+#endif
-
- int pxa_suspend(void)
- {
-+
- unsigned long flags;
- #if defined (CONFIG_SABINAL_DISCOVERY)
- unsigned long RTAR_buffer;
-@@ -426,10 +677,11 @@
- #else
- unsigned long RTAR_buffer;
- unsigned long RTAR_buffer2;
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ unsigned long RCNR_buffer;
-+#endif
- #endif
-
--
--
- #ifndef CONFIG_SABINAL_DISCOVERY
- sharpsl_off_state = 1;
-
-@@ -459,13 +711,22 @@
- cpu_xscale_sl_change_speed_145_without_lcd();
- cccr_reg = CCCR;
- break;
--#if defined(CONFIG_ARCH_PXA_SHEPHERD)
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
- case 0x161:
- if ( CCCR == 0x0161 ) break;
- cpu_xscale_sl_change_speed_161();
- cccr_reg = CCCR;
- break;
- #endif
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ default:
-+ if ( (sharpsl_chg_freq & 0xffff) !=0 ){
-+ cccr_clkparam = (unsigned int)(sharpsl_chg_freq & 0xffff);
-+ cpu_xscale_sl_change_speed_num();
-+ cccr_reg = CCCR;
-+ }
-+ break;
-+#endif
- }
- sharpsl_chg_freq &= 0x0000ffff;
- mdelay(500);
-@@ -473,7 +734,7 @@
- }
- #endif
-
--#if defined(CONFIG_ARCH_PXA_SHEPHERD)
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
- if (sharpsl_off_mode == 2) sharpsl_restart(); /* off in maintenance */
- #endif
-
-@@ -553,7 +814,7 @@
- ASIC3_GPIO_INTSTAT_D = 0;
- #endif
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- if ( CCCR != 0x241 ) {
- cpu_xscale_sl_change_speed_241_without_lcd();
- }
-@@ -561,20 +822,39 @@
- DPRINTK("FCS : CCCR = %x\n",cccr_reg);
- #endif
-
--
--DO_SUSPEND:
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ // check jacket status.
-+ sharpsl_request_dac_init(); // in sharpsl_battery.c
-+ if(sharpsl_battery_charge_hook)
-+ sharpsl_battery_charge_hook(4); // check jacket.
-+#endif
-
-+DO_SUSPEND:
-
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
-+ DPRINTK("pass_charge_flag = %d\n",pass_charge_flag);
- if ( !pass_charge_flag ) {
- // not charging and AC-IN !
-- if ( !charge_status && ( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) != 0 ) {
-+
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ DPRINTK("check AC-adaptor\n");
-+ if ( !charge_status && ( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN) ) == 0){
-+#else
-+ if ( !charge_status && ( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) != 0){
-+#endif
- DPRINTK("kick charging\n");
- charge_status = 1;
- sharpsl_off_charge_battery();
- }
- }
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ tosa_check_ac_and_jacket_state();
-+ DPRINTK("ac97&tc6393 down\n");
-+ tc6393_suspend();
-+ tosa_ac97_exit();
-+#endif
-+
- if ( charge_status ) {
- if ( ( ( RTAR - RCNR ) < ( BATTERY_CHECK_TIME + 30 ) ) && ( RTSR & RTSR_ALE ) ) {
- // maybe alarm will occur
-@@ -611,6 +891,8 @@
- } else {
- PGSR1 &= ~GPIO_bit(GPIO43_BTTXD);
- }
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+// non
- #endif
-
- #endif
-@@ -657,12 +939,12 @@
- LCM_ICR &= ~0x100;
- #endif
-
--#if !defined(CONFIG_SABINAL_DISCOVERY)
-+#if !defined(CONFIG_SABINAL_DISCOVERY)
- /* Scoop suspend */
- sys_ctx.scp_gpwr = SCP_REG_GPWR;
- SCP_REG_GPWR = 0;
--#endif
-
-+#endif
- sys_ctx.gpdr0 = GPDR0;
- sys_ctx.gpdr1 = GPDR1;
- sys_ctx.gpdr2 = GPDR2;
-@@ -718,7 +1000,9 @@
- PWER = WAKEUP_SRC & apm_wakeup_src_mask;
- PRER = R_WAKEUP_SRC & apm_wakeup_src_mask;
- PFER = F_WAKEUP_SRC & apm_wakeup_src_mask;
-+
- PEDR = WAKEUP_SRC & apm_wakeup_src_mask;
-+
- for (i = 0; i <=15; i++) {
- if ( PRER & PFER & GPIO_bit(i) ) {
- if ( GPLR0 & GPIO_bit(i) )
-@@ -728,14 +1012,13 @@
- }
- }
-
--
- /* Clear reset status */
- RCSR = RCSR_HWR | RCSR_WDR | RCSR_SMR | RCSR_GPR;
-
- /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
- PCFR = PCFR_OPDE;
-
--#ifdef CONFIG_ARCH_PXA_CORGI
-+#if defined(CONFIG_ARCH_PXA_CORGI)
- /* GPIO Sleep Register */
- PGSR2 = (PGSR2 & ~GPIO_ALL_STROBE_BIT) | GPIO_STROBE_BIT(0);
-
-@@ -747,6 +1030,19 @@
- #endif
- GPDR1 = 0x00FFAFC3;
- GPDR2 = 0x0001C004;
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+ /* GPIO Sleep Register */
-+ PGSR1 = (PGSR1 & ~GPIO_LOW_STROBE_BIT);
-+ PGSR2 = (PGSR2 & ~GPIO_HIGH_STROBE_BIT);
-+#ifdef LOGICAL_WAKEUP_SRC
-+ if (logical_wakeup_src_mask &
-+ (IDPM_WAKEUP_ADDRESSBOOK|IDPM_WAKEUP_CALENDAR|IDPM_WAKEUP_MENU|IDPM_WAKEUP_MAIL)) {
-+ PGSR1 |= GPIO_STROBE_BIT(4);
-+ }
-+#endif
-+ GPDR0 = 0xC3810940;
-+ GPDR1 = 0xFCFFAB82;
-+ GPDR2 = 0x000F501f;
- #endif
- }
- #endif
-@@ -764,7 +1060,6 @@
-
- #if !defined(CONFIG_SABINAL_DISCOVERY)
- sharpsl_wakeup_check();
--
- FFMCR = sys_ctx.ffmcr;
- FFSPR = sys_ctx.ffspr;
- FFLCR = sys_ctx.fflcr;
-@@ -847,15 +1142,42 @@
- #endif
-
- #if !defined(CONFIG_SABINAL_DISCOVERY)
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if ( sharpsl_alarm_flag ) {
-+ RCNR_buffer = RCNR;
-+ }
-+ DPRINTK("ac97&tc6393 up\n");
-+ tosa_ac97_init();
-+ pxa_ac97_get(&codec,&ac97_on); // initialize 'codec' pointer
-+ i2c_init(1);
-+ tc6393_resume();
-+
-+ sharpsl_request_dac_init(); // in sharpsl_battery.c
-+#else
- pxa_ssp_init();
-+#endif
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- if ( sharpsl_alarm_flag ) {
- RTAR_buffer2 = RTAR;
- RTAR = RTAR_buffer;
- DPRINTK("back the ALARM Time\n");
- }
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if ( sharpsl_alarm_flag && ( RCNR_buffer == RTAR_buffer2 ) ) {
-+ //printk("RCNR_buffer=%d\n",RCNR_buffer);
-+ if(sharpsl_battery_charge_hook)
-+ sharpsl_battery_charge_hook(5);
-+#if 1
-+ if(tosa_check_charge_full(BATTERY_CHECK_TIME) < 0) {
-+ goto DO_SUSPEND;
-+ }
-+#else
-+ goto DO_SUSPEND;
-+#endif
-+ }
-+#else
- if ( sharpsl_alarm_flag && ( RCNR == RTAR_buffer2 ) ) {
- if ( sharpsl_off_charge_battery() ) {
- DPRINTK("charge timer \n");
-@@ -863,6 +1185,7 @@
- }
- }
- #endif
-+#endif
-
- /* ----- hardware resume ----- */
- if ( !sharpsl_wakeup_hook() ) {
-@@ -877,6 +1200,19 @@
- printk("return to suspend (fatal) ....\n");
- goto DO_SUSPEND;
- }
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+ if ( (GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) == 0){
-+ if(sharpsl_off_charge_battery() < 0){
-+ printk("return to suspend (no main batt) ....\n");
-+ goto DO_SUSPEND;
-+ }
-+ }
-+
-+ if ( ( (GPLR(GPIO_BAT_LOCKED) & GPIO_bit(GPIO_BAT_LOCKED)) == 0 )
-+ || ( !sharpsl_off_mode && chkFatalBatt() == 0 ) ) {
-+ printk("return to suspend (fatal) ....\n");
-+ goto DO_SUSPEND;
-+ }
- #else
- if ( ( (GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW)) == 0 )
- || ( chkFatalBatt() == 0 ) ) {
-@@ -888,7 +1224,7 @@
- #endif
-
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- PMCR = 0x01;
-
- if ( sharpsl_off_mode )
-@@ -896,24 +1232,33 @@
- #endif
-
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- if ( sharpsl_chg_freq == 0x0145 ) {
- cpu_xscale_sl_change_speed_145_without_lcd();
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
- }
--#if defined(CONFIG_ARCH_PXA_SHEPHERD)
- else if ( sharpsl_chg_freq == 0x0161 ) {
- cpu_xscale_sl_change_speed_161();
-+#endif
-+#if defined(CONFIG_SL_CCCR_CHANGE)
- }
-+ else if ( sharpsl_chg_freq != 0x0 ){
-+ cccr_clkparam = (unsigned int)sharpsl_chg_freq;
-+ cpu_xscale_sl_change_speed_num();
- #endif
-+ }
-+
- cccr_reg = CCCR;
- printk("FCS : CCCR = %x\n",cccr_reg);
- #if defined(CONFIG_ARCH_PXA_SHEPHERD) && !defined(CONFIG_ARCH_SHARP_SL_J)
- sharpsl_off_charge = 1;
- #else
-+
- sharpsl_off_charge = 0;
- #endif
- #endif
-
-+
- #if 1 // ensure that OS Timer irq occurs
- OSMR0 = sys_ctx.oscr + LATCH;
- #else
-@@ -1004,16 +1349,14 @@
- int pm_do_suspend(void)
- {
- int retval;
--
-- DPRINTK("yea\n");
--
- retval = pm_send_all(PM_SUSPEND, (void *)2);
-- if (retval)
-+ if (retval)
- return retval;
-
- retval = pxa_suspend();
-
- retval = pm_send_all(PM_RESUME, (void *)0);
-+
- if (retval)
- return retval;
-
-@@ -1040,7 +1383,7 @@
-
-
-
--int pxa_fatal_suspend(void)
-+static int pxa_fatal_suspend(void)
- {
- unsigned long flags;
- unsigned long RTAR_buffer;
-@@ -1056,7 +1399,7 @@
- save_flags_cli(flags);
- clf();
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- if ( CCCR != 0x241 ) {
- cpu_xscale_sl_change_speed_241_without_lcd();
- }
-@@ -1092,6 +1435,8 @@
- PGSR1 &= ~GPIO_bit(GPIO43_BTTXD);
- }
- #endif
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+// non
- #endif
-
- #if defined(CONFIG_ARCH_PXA_POODLE)
-@@ -1145,6 +1490,7 @@
- PRER = R_WAKEUP_SRC & apm_wakeup_src_mask;
- PFER = F_WAKEUP_SRC & apm_wakeup_src_mask;
- PEDR = WAKEUP_SRC & apm_wakeup_src_mask;
-+
- for (i = 0; i <=15; i++) {
- if ( PRER & PFER & GPIO_bit(i) ) {
- if ( GPLR0 & GPIO_bit(i) )
-@@ -1154,14 +1500,14 @@
- }
- }
-
--
- /* Clear reset status */
- RCSR = RCSR_HWR | RCSR_WDR | RCSR_SMR | RCSR_GPR;
-
- /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
- PCFR = PCFR_OPDE;
-
--#ifdef CONFIG_ARCH_PXA_CORGI
-+
-+#if defined(CONFIG_ARCH_PXA_CORGI)
- /* GPIO Sleep Register */
- PGSR2 = (PGSR2 & ~GPIO_ALL_STROBE_BIT) | GPIO_STROBE_BIT(0);
-
-@@ -1172,6 +1518,19 @@
- #endif
- GPDR1 = 0x00FFAFC3;
- GPDR2 = 0x0001C004;
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+ /* GPIO Sleep Register */
-+ PGSR1 = (PGSR1 & ~GPIO_LOW_STROBE_BIT);
-+ PGSR2 = (PGSR2 & ~GPIO_HIGH_STROBE_BIT);
-+#ifdef LOGICAL_WAKEUP_SRC
-+ if (logical_wakeup_src_mask &
-+ (IDPM_WAKEUP_ADDRESSBOOK|IDPM_WAKEUP_CALENDAR|IDPM_WAKEUP_MENU|IDPM_WAKEUP_MAIL)) {
-+ PGSR1 |= GPIO_STROBE_BIT(4);
-+ }
-+#endif
-+ GPDR0 = 0xC3810940;
-+ GPDR1 = 0xFCFFAB82;
-+ GPDR2 = 0x000F501f;
- #endif
- }
- #endif
-@@ -1228,14 +1587,20 @@
- }
- #endif
-
--#if defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- #define SCP_INIT_DATA(adr,dat) (((adr)<<16)|(dat))
- #define SCP_INIT_DATA_END ((unsigned long)-1)
- void sharpsl_corgi_fataloff(void)
- {
- #ifdef CONFIG_PM
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ tc6393_fatal_off();
-+ tc6393_suspend();
-+ tosa_ac97_exit();
-+#else
- w100_fatal_off();
- #endif
-+#endif
-
- {
- static const unsigned long scp_init[] =
-@@ -1253,12 +1618,37 @@
- SCP_INIT_DATA(SCP_GPWR,SCP_IO_OUT), // 24
- SCP_INIT_DATA_END
- };
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ static const unsigned long scp_jc_init[] =
-+ {
-+ SCP_INIT_DATA(SCP_MCR,0x0140), // 00
-+ SCP_INIT_DATA(SCP_MCR,0x0100),
-+ SCP_INIT_DATA(SCP_CDR,0x0000), // 04
-+ SCP_INIT_DATA(SCP_CPR,0x0000), // 0C
-+ SCP_INIT_DATA(SCP_CCR,0x0000), // 10
-+ SCP_INIT_DATA(SCP_IMR,0x0000), // 18
-+ SCP_INIT_DATA(SCP_IRM,0x00FF), // 14
-+ SCP_INIT_DATA(SCP_ISR,0x0000), // 1C
-+ SCP_INIT_DATA(SCP_IRM,0x0000),
-+ SCP_INIT_DATA(SCP_GPCR,SCP_JC_IO_DIR), // 20
-+ SCP_INIT_DATA(SCP_GPWR,SCP_JC_IO_OUT), // 24
-+ SCP_INIT_DATA_END
-+ };
-+#endif
- int i;
- for(i=0; scp_init[i] != SCP_INIT_DATA_END; i++)
- {
- int adr = scp_init[i] >> 16;
- SCP_REG(adr) = scp_init[i] & 0xFFFF;
- }
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ for(i=0; scp_jc_init[i] != SCP_INIT_DATA_END; i++)
-+ {
-+ int adr = scp_jc_init[i] >> 16;
-+ SCP_JC_REG(adr) = scp_jc_init[i] & 0xFFFF;
-+ }
-+#endif
-+
- }
-
- }
-@@ -1267,6 +1657,10 @@
-
- void sharpsl_fataloff(void)
- {
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ return;
-+#endif
-+
- if ( PSSR & 0x02 ) {
-
- printk("PSSR = %8x\n",PSSR);
-@@ -1278,19 +1672,18 @@
- PSPR = 0x00;
- RCSR = 0xf;
-
-- printk("off\n");
- pxa_fatal_suspend();
-- printk("off 2\n");
- #endif
--#if defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- sharpsl_corgi_fataloff();
-
- PSPR = 0x00;
- RCSR = 0xf;
-
-- printk("off\n");
- pxa_fatal_suspend();
-- printk("off 2\n");
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ sharpsl_restart();
-+#endif
- #endif
- }
- }
-@@ -1308,15 +1701,14 @@
- interruptible_sleep_on(&wq_off);
- DPRINTK("start off sequence ! \n");
-
--#if !defined(CONFIG_ARCH_PXA_SHEPHERD)
-+#if !defined(CONFIG_ARCH_PXA_SHEPHERD) && !defined(CONFIG_ARCH_PXA_TOSA)
- sharpsl_off_mode = 1;
- #endif
--
- handle_scancode(SLKEY_OFF|KBDOWN , 1);
- mdelay(10);
- handle_scancode(SLKEY_OFF|KBUP , 0);
-
--#if !defined(CONFIG_ARCH_PXA_SHEPHERD)
-+#if !defined(CONFIG_ARCH_PXA_SHEPHERD) && !defined(CONFIG_ARCH_PXA_TOSA)
- // wait off signal
- // if can not recieve off siganl , so force off.
- time_cnt = jiffies;
-@@ -1333,7 +1725,50 @@
- return 0;
- }
-
--#if defined(CONFIG_ARCH_PXA_SHEPHERD)
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF)
-+static int key_suspend_thread(void* unused)
-+{
-+ int time_cnt = 0;
-+
-+ // daemonize();
-+ strcpy(current->comm, "off_thread");
-+ sigfillset(&current->blocked);
-+
-+ while(1) {
-+ sleep_on(&key_off);
-+ printk("start off sequence ! \n");
-+
-+ handle_scancode(SLKEY_OFF|KBDOWN , 1);
-+ mdelay(10);
-+ handle_scancode(SLKEY_OFF|KBUP , 0);
-+
-+ // wait off signal
-+ // if can not recieve off siganl , so force off.
-+// time_cnt = jiffies;
-+// while(1) {
-+// if ( ( jiffies - time_cnt ) > 500 ) break;
-+// schedule();
-+// }
-+
-+ // maybe apps is dead, so we have to restart.
-+ pm_do_suspend();
-+ }
-+ return 0;
-+}
-+
-+void slc7x0_key_suspend(void)
-+{
-+ apm_wakeup_src_mask = 0;
-+ wake_up(&key_off);
-+}
-+
-+EXPORT_SYMBOL(slc7x0_key_suspend);
-+
-+#endif
-+
-+
-+
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
- static struct timer_list bat_switch_timer;
-
- void sharpsl_emerge_restart(void)
-@@ -1347,10 +1782,16 @@
- void sharpsl_emerge_off(int irq, void *dev_id, struct pt_regs *regs)
- {
-
-+ DPRINTK("DBG:sharpsl_emerge_off [non-battery]\n");
-+
- /* noise ? */
- mdelay(10);
-- if ( 0x1234ABCD != regs &&
-- GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW) ) {
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if ( 0x1234ABCD != regs && GPLR(GPIO_BAT_LOCKED) & GPIO_bit(GPIO_BAT_LOCKED) )
-+#else
-+ if ( 0x1234ABCD != regs && GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW) )
-+#endif
-+ {
- #if defined(CONFIG_ARCH_PXA_SHEPHERD)
- sharpsl_battery_charge_hook(1); /* charge off */
- if (sharppda_kbd_resetcheck()) {
-@@ -1364,11 +1805,10 @@
- return;
- }
-
--#if defined(CONFIG_ARCH_PXA_CORGI) && !defined(CONFIG_ARCH_PXA_SHEPHERD)
-+#if (defined(CONFIG_ARCH_PXA_CORGI)) && !defined(CONFIG_ARCH_PXA_SHEPHERD) && !defined(CONFIG_ARCH_PXA_TOSA)
- if (!(GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW)))
- apm_wakeup_src_mask = 0;
- #endif
--
- wake_up(&wq_off);
-
- }
-@@ -1386,6 +1826,8 @@
- /* Set transition detect */
- #ifdef CONFIG_ARCH_PXA_SHEPHERD
- set_GPIO_IRQ_edge( GPIO_MAIN_BAT_LOW , GPIO_BOTH_EDGES );
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+ set_GPIO_IRQ_edge( GPIO_BAT_LOCKED , GPIO_BOTH_EDGES );
- #else
- set_GPIO_IRQ_edge( GPIO_MAIN_BAT_LOW , GPIO_FALLING_EDGE );
- #endif
-@@ -1394,17 +1836,29 @@
- /* this registration can be done in init/main.c. */
- if(1){
- int err;
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ err = request_irq(IRQ_GPIO_BAT_LOCKED,sharpsl_emerge_off , SA_INTERRUPT, "batok", NULL);
-+#else
- err = request_irq(IRQ_GPIO_MAIN_BAT_LOW,sharpsl_emerge_off , SA_INTERRUPT, "batok", NULL);
-+#endif
- if( err ){
- printk("batok install error %d\n",err);
- }else{
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ enable_irq(IRQ_GPIO_BAT_LOCKED);
-+#else
- enable_irq(IRQ_GPIO_MAIN_BAT_LOW);
-+#endif
- printk("batok installed\n");
- }
- }
-
- kernel_thread(sharpsl_off_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
--#if defined(CONFIG_ARCH_PXA_SHEPHERD)
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF)
-+ kernel_thread(key_suspend_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+#endif
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
-+//#if defined(CONFIG_ARCH_PXA_SHEPHERD)
- init_timer(&bat_switch_timer);
- bat_switch_timer.function = sharpsl_emerge_restart;
- #endif
-@@ -1464,12 +1918,55 @@
-
- void set_apm_wakeup_src_mask(u32 SetValue)
- {
-+#ifdef LOGICAL_WAKEUP_SRC
-+ logical_wakeup_src_mask = 0;
-+ // RTC
-+ if (SetValue&IDPM_WAKEUP_RTC) {
-+ apm_wakeup_src_mask |= GPIO_bit(31);
-+ logical_wakeup_src_mask |= IDPM_WAKEUP_RTC;
-+ } else apm_wakeup_src_mask &= ~GPIO_bit(31);
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ // Sync key
-+ if (SetValue&IDPM_WAKEUP_SYNC) {
-+ apm_wakeup_src_mask |= GPIO_bit(GPIO_SYNC);
-+ logical_wakeup_src_mask |= IDPM_WAKEUP_SYNC;
-+ } else apm_wakeup_src_mask &= ~GPIO_bit(GPIO_SYNC);
-+ // Record key
-+ if (SetValue&IDPM_WAKEUP_REC) {
-+ apm_wakeup_src_mask |= GPIO_bit(GPIO_RECORD_BTN);
-+ logical_wakeup_src_mask |= IDPM_WAKEUP_REC;
-+ } else apm_wakeup_src_mask &= ~GPIO_bit(GPIO_RECORD_BTN);
-+ // USBD
-+ if (SetValue&IDPM_WAKEUP_USBD) {
-+ apm_wakeup_src_mask |= GPIO_bit(GPIO_USB_IN);
-+ logical_wakeup_src_mask |= IDPM_WAKEUP_USBD;
-+ } else apm_wakeup_src_mask &= ~GPIO_bit(GPIO_USB_IN);
-+ // only Logical
-+ if (SetValue&IDPM_WAKEUP_AC) logical_wakeup_src_mask |= IDPM_WAKEUP_AC;
-+ if (SetValue&IDPM_WAKEUP_JACKET) logical_wakeup_src_mask |= IDPM_WAKEUP_JACKET;
-+ if (SetValue&IDPM_WAKEUP_CALENDAR) logical_wakeup_src_mask |= IDPM_WAKEUP_CALENDAR;
-+ if (SetValue&IDPM_WAKEUP_ADDRESSBOOK) logical_wakeup_src_mask |= IDPM_WAKEUP_ADDRESSBOOK;
-+ if (SetValue&IDPM_WAKEUP_MAIL) logical_wakeup_src_mask |= IDPM_WAKEUP_MAIL;
-+ if (SetValue&IDPM_WAKEUP_MENU) logical_wakeup_src_mask |= IDPM_WAKEUP_MENU;
-+#ifdef WUPSRC_DEBUG
-+ printk("set_wakeup_src=%08x->%08x[%08x]\n",SetValue,logical_wakeup_src_mask,apm_wakeup_src_mask);
-+#endif
-+#endif
-+#else
- apm_wakeup_src_mask = SetValue;
-+#endif
- }
-
- u32 get_apm_wakeup_src_mask(void)
- {
-+#ifdef LOGICAL_WAKEUP_SRC
-+#ifdef WUPSRC_DEBUG
-+ printk("get_wakeup_src=%08x\n",logical_wakeup_src_mask);
-+#endif
-+ return (u32)logical_wakeup_src_mask;
-+#else
- return (u32)apm_wakeup_src_mask;
-+#endif
- }
-
- u32 get_apm_wakeup_factor(void)
-diff -Nur linux_c860_org/arch/arm/mach-pxa/sharpsl_suspend.S linux/arch/arm/mach-pxa/sharpsl_suspend.S
---- linux_c860_org/arch/arm/mach-pxa/sharpsl_suspend.S 2003-06-18 16:12:25.000000000 +0900
-+++ linux/arch/arm/mach-pxa/sharpsl_suspend.S 2004-06-10 21:09:10.000000000 +0900
-@@ -34,6 +34,7 @@
- * 12-Dec-2002 Lineo Japan, Inc.
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
- * 14-Mar-2003 Sharp for PXA255
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #include <linux/linkage.h>
-@@ -59,10 +60,17 @@
-
- .global sleep_param
- .global sleep_param_p
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ .global cccr_clkparam
-+#endif
-
- sleep_param: .word 0 @ virtual address of parameter array
- sleep_param_p: .word 0 @ physical address of parameter array
-
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+cccr_clkparam: .word 0
-+#endif
-+
- IC_BASE: .word io_p2v(0x40D00000)
-
-
-@@ -228,7 +236,7 @@
- str r1, [r0] @ turn off all GPIOs
- #endif
-
-- ldr r3, sleep_param
-+ ldr r3, sleep_param
- ldr r2, =Awake_address @ store Virtual return address
- str r2, [r3], #4
-
-@@ -1053,7 +1061,7 @@
- .align 5
- .text
-
--#if defined(CONFIG_ARCH_PXA_SHEPHERD)
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
-
- ENTRY(cpu_xscale_sl_change_speed_161)
- stmfd sp!, {r0, r1, r2, r3, r4, lr}
-@@ -1081,3 +1089,30 @@
- .text
-
- #endif
-+
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ENTRY(cpu_xscale_sl_change_speed_num)
-+ stmfd sp!, {r0, r1, r2, r3, r4, lr}
-+
-+ ldr r0, CMR_BASE
-+ ldr r1, cccr_clkparam
-+ str r1, [r0, #CMR_CCCR]
-+
-+ ldr r0, MD_BASE
-+ ldr r2, [r0, #MD_MDREFR]
-+
-+ bl CodeOnCache_num
-+
-+ .align 5
-+ .text
-+CodeOnCache_num:
-+ mov r1, #0x2
-+ mcr p14, 0, r1, c6, c0, 0
-+ str r2, [r0, #MD_MDREFR]
-+ ldr r2, [r0, #MD_MDREFR]
-+
-+ ldmfd sp!, {r0, r1, r2, r3, r4, pc}
-+
-+ .align 5
-+ .text
-+#endif
-diff -Nur linux_c860_org/arch/arm/mach-pxa/tosa.c linux/arch/arm/mach-pxa/tosa.c
---- linux_c860_org/arch/arm/mach-pxa/tosa.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/arch/arm/mach-pxa/tosa.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,483 @@
-+/*
-+ * arch/arm/mach-pxa/tosa.c
-+ *
-+ * Support for the SHARP Tosa Board.
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * Based on:
-+ * linux/arch/arm/mach-pxa/lubbock.c
-+ *
-+ * Support for the Intel DBPXA250 Development Platform.
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Jun 15, 2001
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * 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.
-+ *
-+ * Change Log
-+ * 26-Dec-2003 Sharp Corporation for Tosa
-+ *
-+ */
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/major.h>
-+#include <linux/fs.h>
-+#include <linux/interrupt.h>
-+#include <linux/sched.h>
-+#include <linux/delay.h>
-+
-+#include <asm/types.h>
-+#include <asm/setup.h>
-+#include <asm/memory.h>
-+#include <asm/mach-types.h>
-+#include <asm/hardware.h>
-+#include <asm/irq.h>
-+
-+#include <asm/mach/arch.h>
-+#include <asm/mach/map.h>
-+#include <asm/mach/irq.h>
-+
-+#include <asm/arch/irq.h>
-+
-+#include "generic.h"
-+#include <linux/ac97_codec.h>
-+#include <linux/pm.h>
-+#ifdef CONFIG_PM
-+static struct pm_dev *ga_pm_dev;
-+extern int pxa_suspend(void);
-+#endif
-+
-+extern void sharpsl_get_param(void);
-+extern void sharpsl_charge_start(void);
-+//extern unsigned short chkFatalBatt(void);
-+extern void pxa_nssp_init(void);
-+extern void tosa_ac97_init(void);
-+extern void i2c_init(int reset);
-+
-+unsigned short reset_scoop_gpio(unsigned short);
-+
-+static void tc6393_IRQ_demux( int irq, void *dev_id, struct pt_regs *regs )
-+{
-+ int req, i;
-+
-+ while ( (req = (TC6393_SYS_REG(TC6393_SYS_ISR)
-+ & ~(TC6393_SYS_REG(TC6393_SYS_IMR)))) ) {
-+ for (i = 0; i <= 7; i++) {
-+ if ((req & (0x0001<<i))) {
-+ switch (TC6393_IRQ(i)) {
-+ case TC6393_IRQ_USBINT:
-+#if 0
-+ if (!(TC6393_USB_REG(TC6393_USB_SVPMCS) & TC6393_USB_PM_PMES))
-+ continue;
-+#endif
-+ break;
-+ }
-+ do_IRQ( TC6393_IRQ(i) , regs );
-+ }
-+ }
-+ break;
-+ }
-+}
-+
-+static struct irqaction tc6393_irq = {
-+ name: "TC6393",
-+ handler: tc6393_IRQ_demux,
-+ flags: SA_INTERRUPT
-+};
-+
-+static void tc6393_mask_and_ack_irq(unsigned int irq)
-+{
-+ TC6393_SYS_REG(TC6393_SYS_IMR) |= (0x0001 << (irq - TC6393_IRQ(0)));
-+ switch (irq) {
-+ case TC6393_IRQ_USBINT:
-+ TC6393_USB_REG(TC6393_USB_SVPMCS) |= TC6393_USB_PM_PMES;
-+ break;
-+ }
-+}
-+
-+static void tc6393_mask_irq(unsigned int irq)
-+{
-+ TC6393_SYS_REG(TC6393_SYS_IMR) |= (0x0001 << (irq - TC6393_IRQ(0)));
-+}
-+
-+static void tc6393_unmask_irq(unsigned int irq)
-+{
-+ TC6393_SYS_REG(TC6393_SYS_IMR) &= ~(0x0001 << (irq - TC6393_IRQ(0)));
-+}
-+
-+static void __init scoop_init(void)
-+{
-+
-+#define SCP_INIT_DATA(adr,dat) (((adr)<<16)|(dat))
-+#define SCP_INIT_DATA_END ((unsigned long)-1)
-+ static const unsigned long scp_init[] =
-+ {
-+ SCP_INIT_DATA(SCP_MCR,0x0140), // 00
-+ SCP_INIT_DATA(SCP_MCR,0x0100),
-+ SCP_INIT_DATA(SCP_CDR,0x0000), // 04
-+ SCP_INIT_DATA(SCP_CPR,0x0000), // 0C
-+ SCP_INIT_DATA(SCP_CCR,0x0000), // 10
-+ SCP_INIT_DATA(SCP_IMR,0x0000), // 18
-+ SCP_INIT_DATA(SCP_IRM,0x00FF), // 14
-+ SCP_INIT_DATA(SCP_ISR,0x0000), // 1C
-+ SCP_INIT_DATA(SCP_IRM,0x0000),
-+ SCP_INIT_DATA(SCP_GPCR,SCP_IO_DIR), // 20
-+ SCP_INIT_DATA(SCP_GPWR,SCP_IO_OUT), // 24
-+ SCP_INIT_DATA_END
-+ };
-+ int i;
-+ for(i=0; scp_init[i] != SCP_INIT_DATA_END; i++)
-+ {
-+ int adr = scp_init[i] >> 16;
-+ SCP_REG(adr) = scp_init[i] & 0xFFFF;
-+ }
-+}
-+
-+static spinlock_t scoop_lock = SPIN_LOCK_UNLOCKED;
-+
-+unsigned short set_scoop_gpio(unsigned short bit)
-+{
-+ unsigned short gpio_bit;
-+ unsigned long flag;
-+
-+ spin_lock_irqsave(&scoop_lock, flag);
-+ gpio_bit = SCP_REG_GPWR | bit;
-+ SCP_REG_GPWR = gpio_bit;
-+ spin_unlock_irqrestore(&scoop_lock, flag);
-+
-+ return gpio_bit;
-+}
-+EXPORT_SYMBOL(set_scoop_gpio);
-+
-+unsigned short reset_scoop_gpio(unsigned short bit)
-+{
-+ unsigned short gpio_bit;
-+ unsigned long flag;
-+
-+ spin_lock_irqsave(&scoop_lock, flag);
-+ gpio_bit = SCP_REG_GPWR & ~bit;
-+ SCP_REG_GPWR = gpio_bit;
-+ spin_unlock_irqrestore(&scoop_lock, flag);
-+
-+ return gpio_bit;
-+}
-+EXPORT_SYMBOL(reset_scoop_gpio);
-+
-+
-+static void __init scoop_jc_init(void)
-+{
-+ static const unsigned long scp_jc_init[] =
-+ {
-+ SCP_INIT_DATA(SCP_MCR,0x0140), // 00
-+ SCP_INIT_DATA(SCP_MCR,0x0100),
-+ SCP_INIT_DATA(SCP_CDR,0x0000), // 04
-+ SCP_INIT_DATA(SCP_CPR,0x0000), // 0C
-+ SCP_INIT_DATA(SCP_CCR,0x0000), // 10
-+ SCP_INIT_DATA(SCP_IMR,0x0000), // 18
-+ SCP_INIT_DATA(SCP_IRM,0x00FF), // 14
-+ SCP_INIT_DATA(SCP_ISR,0x0000), // 1C
-+ SCP_INIT_DATA(SCP_IRM,0x0000),
-+ SCP_INIT_DATA(SCP_GPCR,SCP_JC_IO_DIR), // 20
-+ SCP_INIT_DATA(SCP_GPWR,SCP_JC_IO_OUT), // 24
-+ SCP_INIT_DATA_END
-+ };
-+ int i;
-+ for(i=0; scp_jc_init[i] != SCP_INIT_DATA_END; i++) {
-+ int adr = scp_jc_init[i] >> 16;
-+ SCP_JC_REG(adr) = scp_jc_init[i] & 0xFFFF;
-+ }
-+
-+ reset_scoop_gpio(SCP_IR_POWERDWN);
-+}
-+
-+static spinlock_t scoop_jc_lock = SPIN_LOCK_UNLOCKED;
-+
-+unsigned short set_scoop_jc_gpio(unsigned short bit)
-+{
-+ unsigned short gpio_bit;
-+ unsigned long flag;
-+
-+ spin_lock_irqsave(&scoop_jc_lock, flag);
-+ gpio_bit = SCP_JC_REG_GPWR | bit;
-+ SCP_JC_REG_GPWR = gpio_bit;
-+ spin_unlock_irqrestore(&scoop_jc_lock, flag);
-+
-+ return gpio_bit;
-+}
-+EXPORT_SYMBOL(set_scoop_jc_gpio);
-+
-+unsigned short reset_scoop_jc_gpio(unsigned short bit)
-+{
-+ unsigned short gpio_bit;
-+ unsigned long flag;
-+
-+ spin_lock_irqsave(&scoop_jc_lock, flag);
-+ gpio_bit = SCP_JC_REG_GPWR & ~bit;
-+ SCP_JC_REG_GPWR = gpio_bit;
-+ spin_unlock_irqrestore(&scoop_jc_lock, flag);
-+
-+ return gpio_bit;
-+}
-+EXPORT_SYMBOL(reset_scoop_jc_gpio);
-+
-+static void tc6393_init(void)
-+{
-+ reset_scoop_jc_gpio(SCP_JC_TC3693_L3V_ON);
-+ reset_scoop_jc_gpio(SCP_JC_TC6393_SUSPEND);
-+ reset_scoop_gpio(SCP_TC6393_REST_IN);
-+ set_GPIO_mode(GPIO11_3_6MHz_MD);
-+ set_GPIO_mode(GPIO18_RDY_MD);
-+ mdelay(1);
-+ set_scoop_jc_gpio(SCP_JC_TC6393_SUSPEND);
-+ mdelay(10);
-+ set_scoop_gpio(SCP_TC6393_REST_IN);
-+ set_scoop_jc_gpio(SCP_JC_TC3693_L3V_ON);
-+
-+ printk("init TC6369 Revision %d\n", TC6393_SYS_REG(TC6393_SYS_RIDR));
-+ TC6393_SYS_REG(TC6393_SYS_FER) = 0;
-+
-+ /* clock setting */
-+ TC6393_SYS_REG(TC6393_SYS_PLL2CR) = 0x0cc1;
-+ //TC6393_SYS_REG(TC6393_SYS_ConfigCR) = 0x1;
-+ //TC6393_SYS_REG(TC6393_SYS_PLL1CR1) = 0xdf00;
-+ //TC6393_SYS_REG(TC6393_SYS_PLL1CR2) = 0x002c;
-+ //TC6393_SYS_REG(TC6393_SYS_ConfigCR) = 0x0;
-+ TC6393_SYS_REG(TC6393_SYS_CCR) = 0x1310;
-+
-+ TC6393_SYS_REG(TC6393_SYS_MCR) = 0x80AA;
-+
-+ /* GPIO */
-+ TC6393_SYS_REG(TC6393_SYS_GPER) = 0x3300; /* 15-0 GPO */
-+// TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_GPO_OE;
-+// TC6393_SYS_REG(TC6393_SYS_GPODSR1) = TC6393_CARD_VCC_ON;/* 15-0 GPO set */
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) = TC6393_CARD_VCC_ON | TC6393_CHARGE_OFF_JC;/* 15-0 GPO set */
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_GPO_OE;
-+
-+}
-+
-+void tc6393_resume(void)
-+{
-+ tc6393_init();
-+}
-+EXPORT_SYMBOL(tc6393_resume);
-+
-+void tc6393_suspend(void)
-+{
-+ reset_scoop_jc_gpio(SCP_JC_TC3693_L3V_ON);
-+ reset_scoop_gpio(SCP_TC6393_REST_IN);
-+ reset_scoop_jc_gpio(SCP_JC_TC6393_SUSPEND);
-+ set_GPIO_mode(GPIO11_3_6MHz|GPIO_OUT);
-+ GPSR0 = GPIO_bit(GPIO11_3_6MHz);
-+}
-+EXPORT_SYMBOL(tc6393_suspend);
-+
-+#ifdef CONFIG_PM
-+static int ga_pm_callback(struct pm_dev* pm_dev, pm_request_t req, void *data)
-+{
-+ switch (req) {
-+ case PM_SUSPEND:
-+ break;
-+ case PM_RESUME:
-+ break;
-+ }
-+ return 0;
-+}
-+#endif
-+
-+void resume_init(void)
-+{
-+// MSC0 = 0x02da02da; //msc0
-+// MSC1 = 0x7FFC7FFC; //msc1
-+// MSC2 = 0x7FF47FFC; //msc2
-+
-+// GPDR0=0xDB828000;
-+// GPDR1=0xFFB6A887;
-+// GPDR2=0x0001FFFF;
-+
-+// PGSR0 = 0x01008000; //Sleep State
-+// PGSR1 = 0x00160802; //Sleep State
-+// PGSR2 = 0x0001C000; //Sleep State
-+
-+#if 0
-+ GRER0 = (GRER0 | 1); //raising
-+ GFER0 = (GFER0 | 1); //failing
-+
-+ ICLR = 0;
-+
-+ ICMR |= (1 << 10); //bit10, gpio02_80 enable
-+ ICMR |= (1 << 8); //bit8, gpio00 enable
-+
-+ ICCR = 1; //Only enabled and unmasked will bring the Cotulla out of IDLE mode.
-+#endif
-+
-+ CKEN |= 0x03;
-+ CKEN |= CKEN3_SSP;
-+ CKEN |= CKEN1_PWM1;
-+}
-+
-+static int __init tosa_hw_init(void)
-+{
-+
-+ /* scoop initialize */
-+ scoop_init();
-+ scoop_jc_init();
-+
-+ /* initialize I2C */
-+ i2c_init(1);
-+
-+ /* TC6393 initialize */
-+ tc6393_init();
-+
-+ /* initialize SSP & CS */
-+ pxa_nssp_init();
-+
-+ /* initialize AC97 */
-+ tosa_ac97_init();
-+
-+ return 0;
-+}
-+
-+static void __init tosa_init_irq(void)
-+{
-+ int irq;
-+
-+ pxa_init_irq();
-+
-+ /* setup extra tosa irqs */
-+ TC6393_SYS_REG(TC6393_SYS_IRR) = 0;
-+ TC6393_SYS_REG(TC6393_SYS_IMR) = 0xbf;
-+ for (irq = TC6393_IRQ(0); irq <= TC6393_IRQ(7); irq++) {
-+ irq_desc[irq].valid = 1;
-+ irq_desc[irq].probe_ok = 1;
-+ irq_desc[irq].mask_ack = tc6393_mask_and_ack_irq;
-+ irq_desc[irq].mask = tc6393_mask_irq;
-+ irq_desc[irq].unmask = tc6393_unmask_irq;
-+ }
-+ GPDR(GPIO_TC6393_INT) &= ~GPIO_bit(GPIO_TC6393_INT);
-+ set_GPIO_IRQ_edge( GPIO_TC6393_INT, GPIO_FALLING_EDGE );
-+ setup_arm_irq( IRQ_GPIO_TC6393_INT, &tc6393_irq );
-+
-+ tosa_hw_init();
-+}
-+
-+static int __init tosa_init(void)
-+{
-+#ifdef CONFIG_PM
-+ extern u32 sharpsl_emergency_off;
-+#endif
-+
-+ // enable batt_fault
-+ PMCR = 0x01;
-+
-+ /* charge check */
-+ if ((GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) == 0) {
-+ sharpsl_charge_start();
-+ }
-+
-+ //sharpsl_kick_jacket_check_queue();
-+
-+ printk("RCSR = %d\n",RCSR);
-+
-+#ifdef CONFIG_PM
-+ /* fatal check */
-+#ifndef CONFIG_ARCH_PXA_TOSA_SKIP
-+ if ( !(GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW)) ) {
-+ printk("corgi.c : main batt low\n");
-+ sharpsl_emergency_off = 1;
-+ pxa_suspend();
-+ }
-+#endif /* CONFIG_ARCH_PXA_TOSA_SKIP */
-+
-+ if ( RCSR == 0x01 || RCSR == 0x6) {
-+ printk("full reset !\n");
-+ sharpsl_emergency_off = 1;
-+ }
-+
-+ ga_pm_dev = pm_register(PM_SYS_DEV, 0, ga_pm_callback);
-+#endif
-+
-+ return 0;
-+}
-+
-+__initcall(tosa_init);
-+
-+static void __init fixup_tosa(struct machine_desc *desc,
-+ struct param_struct *params,
-+ char **cmdline, struct meminfo *mi)
-+{
-+ SET_BANK (0, 0xa0000000, 64*1024*1024);
-+ mi->nr_banks = 1;
-+#if defined(CONFIG_BLK_DEV_INITRD)
-+ setup_ramdisk (1, 0, 0, 8192);
-+ setup_initrd (__phys_to_virt(0xa1000000), 4*1024*1024);
-+ ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);
-+#elif defined(CONFIG_MTD)
-+ ROOT_DEV = MKDEV(31, 0); /* /dev/mtdblock0 */
-+#endif
-+
-+#ifdef CONFIG_SHARPSL_BOOTLDR_PARAMS
-+ if (params->u1.s.page_size != PAGE_SIZE) {
-+ params->u1.s.page_size = PAGE_SIZE;
-+ params->u1.s.nr_pages = 32 * 1024 * 1024 / PAGE_SIZE;
-+ params->u1.s.ramdisk_size = 0;
-+ params->u1.s.flags = FLAG_READONLY | FLAG_RDLOAD | FLAG_RDPROMPT;
-+ params->u1.s.rootdev = ROOT_DEV;
-+ params->u1.s.initrd_start = 0;
-+ params->u1.s.initrd_size = 0;
-+ params->u1.s.rd_start = 0;
-+ params->u1.s.system_rev = 0;
-+ params->u1.s.system_serial_low = 0;
-+ params->u1.s.system_serial_high = 0;
-+ strcpy(params->commandline, CONFIG_CMDLINE);
-+ }
-+#endif
-+
-+ sharpsl_get_param();
-+}
-+
-+static struct map_desc tosa_io_desc[] __initdata = {
-+ /* virtual physical length domain r w c b */
-+ /* TC6393 (LCDC, USBC, NANDC) */
-+ { 0xf1000000, TOSA_LCDC_PHYS, 0x00400000, DOMAIN_IO, 1, 1, 0, 0 },
-+ /* SCOOP2 for internel CF */
-+ { 0xf2000000, TOSA_CF_PHYS, 0x00001000, DOMAIN_IO, 0, 1, 0, 0 },
-+ /* SCOOP2 for Jacket CF */
-+ { 0xf2200000, TOSA_SCOOP_PHYS, 0x00001000, DOMAIN_IO, 0, 1, 0, 0 },
-+ /* Nor Flash */
-+ { 0xef000000, 0x00000000, 0x00800000, DOMAIN_IO, 1, 1, 1, 0 },
-+ LAST_DESC
-+};
-+
-+static void __init tosa_map_io(void)
-+{
-+ pxa_map_io();
-+ iotable_init(tosa_io_desc);
-+
-+ set_GPIO_mode(GPIO_ON_RESET | GPIO_IN);
-+
-+ /* setup sleep mode values */
-+ PWER = 0x00000002;
-+ PFER = 0x00000000;
-+ PRER = 0x00000002;
-+ PGSR0 = 0x00000000;
-+ PGSR1 = 0x00FF0002;
-+ PGSR2 = 0x00014000;
-+ PCFR |= PCFR_OPDE;
-+}
-+
-+MACHINE_START(TOSA, "SHARP Tosa")
-+ MAINTAINER("Lineo uSolutions, Inc.")
-+ BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
-+#ifdef CONFIG_SHARPSL_BOOTLDR_PARAMS
-+ BOOT_PARAMS(0xa0000100)
-+#endif
-+ FIXUP(fixup_tosa)
-+ MAPIO(tosa_map_io)
-+ INITIRQ(tosa_init_irq)
-+MACHINE_END
-+
-diff -Nur linux_c860_org/arch/arm/mach-pxa/tosa_ac97.c linux/arch/arm/mach-pxa/tosa_ac97.c
---- linux_c860_org/arch/arm/mach-pxa/tosa_ac97.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/arch/arm/mach-pxa/tosa_ac97.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,587 @@
-+/*
-+ * linux/asm/arch/mach-pxa/tosa_ac97.c
-+ *
-+ * AC97 interface for the Tosa chip
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * Based on:
-+ * linux/drivers/sound/pxa-ac97.c -- AC97 interface for the Cotula chip
-+ * Author: Nicolas Pitre
-+ * Created: Aug 15, 2001
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * linux/drivers/sound/ac97_codec.c -- Generic AC97 mixer/modem module
-+ * Derived from ac97 mixer in maestro and trident driver.
-+ * Copyright 2000 Silicon Integrated System Corporation
-+ *
-+ * ChangeLong:
-+ * 1-Nov-2003 Sharp Corporation for Tosa
-+ *
-+ * 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.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/bitops.h>
-+#include <linux/slab.h>
-+#include <linux/pci.h>
-+#include <linux/completion.h>
-+#include <linux/delay.h>
-+#include <linux/poll.h>
-+#include <linux/sound.h>
-+#include <linux/soundcard.h>
-+#include <linux/ac97_codec.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/irq.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+#include <asm/dma.h>
-+
-+#include <asm/arch/tosa_wm9712.h>
-+
-+#ifdef CONFIG_PM
-+#include <asm/sharp_apm.h>
-+#endif
-+
-+#define CODEC_ID_BUFSZ 14
-+
-+typedef struct {
-+ unsigned short ctl_val, pdown_val;
-+} power_mode_t;
-+
-+static power_mode_t pwr_values[] = {
-+ { 0x6F00, 0x7FFF }, // Off
-+ { 0x4600, 0x73FF }, // Rec with no HP
-+ { 0x4100, 0x1F77 }, // Play with no HP
-+ { 0x4600, 0x73FF }, // Rec with Stereo HP
-+ { 0x0100, 0x1CEF }, // Play with Stereo HP
-+ { 0x4600, 0x73FF }, // Rec with Mic HP
-+ { 0x0100, 0x1EEF }, // Play with Mic HP
-+ { 0x4700, 0x7FFF }, // Tablet (waiting for pen-down)
-+ { 0x4700, 0x7FFF }, // Tablet (continuous conversion)
-+ { 0x4700, 0x7BFF }, // Enable MICBIAS for detecting Mic HP
-+ { 0x0000, 0x0000 }, // Full power
-+};
-+static const int num_of_pwr_values = sizeof(pwr_values)/sizeof(pwr_values[0]);
-+
-+static power_mode_t power_mode_status[NUM_OF_WM9712_DEV];
-+static power_mode_t cur_power_status;
-+
-+struct ac97_codec *codec;
-+
-+static struct completion CAR_completion;
-+static DECLARE_MUTEX(CAR_mutex);
-+
-+/************************************************************
-+ * Debug
-+ ************************************************************/
-+#define DBG_LEVEL 0
-+#define DBG_L1 1
-+#define DBG_L2 2
-+#define DBG_L3 3
-+#define DEBUG(level, x, args...) \
-+ if ( level <= DBG_LEVEL ) printk("%s: " x,__FUNCTION__ ,##args)
-+
-+/************************************************************
-+ * AC97 Sequense
-+ ************************************************************/
-+typedef struct {
-+ u16 val;
-+ u8 seq;
-+} ac97_seq_t;
-+static volatile u32 *ac97_addr = NULL;
-+static ac97_seq_t ac97_seq;
-+
-+#define AC97_SEQ_READ1 0x01
-+#define AC97_SEQ_READ2 0x02
-+#define AC97_SEQ_READ_DONE 0x03
-+#define AC97_SEQ_WRITE_DONE 0x04
-+
-+/************************************************************
-+ * AC97 IDs
-+ ************************************************************/
-+typedef struct {
-+ u32 id;
-+ char *name;
-+ struct ac97_ops *ops;
-+ int flags;
-+} ac97_ids_t;
-+
-+static struct ac97_ops null_ops = { NULL, NULL, NULL };
-+
-+static ac97_ids_t ac97_ids[] = {
-+ { 0x574D4C12, "Wolfson WM9711/WM9712", &null_ops },
-+};
-+
-+/************************************************************
-+ * Timer interrupt for AC97 lost interrupt
-+ ************************************************************/
-+static unsigned char ac97_timer_on = 0;
-+static struct timer_list ac97_timer;
-+static void ac97_timer_set(unsigned long);
-+static void ac97_timer_clear(void);
-+
-+static void ac97_timer_func(unsigned long data)
-+{
-+ ac97_timer_on = 0;
-+ if ( (ac97_seq.seq == AC97_SEQ_READ_DONE) ||
-+ (ac97_seq.seq == AC97_SEQ_WRITE_DONE) ) {
-+ DEBUG(DBG_L2, "CAR_completion\n");
-+ complete(&CAR_completion);
-+ ac97_timer_set(data);
-+ } else {
-+ printk(KERN_WARNING "AC97: lost interrupt(%08lx)\n", data);
-+ ac97_timer_set(data);
-+ }
-+}
-+
-+static void ac97_timer_clear(void)
-+{
-+ if ( ac97_timer_on )
-+ del_timer(&ac97_timer);
-+ ac97_timer_on = 0;
-+}
-+
-+static void ac97_timer_set(unsigned long val)
-+{
-+ ac97_timer_clear();
-+ init_timer(&ac97_timer);
-+ ac97_timer.data = val;
-+ ac97_timer.function = ac97_timer_func;
-+ ac97_timer.expires = jiffies + HZ;
-+ add_timer(&ac97_timer);
-+ ac97_timer_on = 1;
-+}
-+
-+/************************************************************
-+ * AC97 functions
-+ ************************************************************/
-+#define AC97_TIMEOUT_VAL 0x10000
-+static u16 pxa_ac97_read(struct ac97_codec *codec, u8 reg)
-+{
-+ down(&CAR_mutex);
-+ lock_FCS(LOCK_FCS_AC97_SUB, 1);
-+ if ( !(CAR & CAR_CAIP) ) {
-+ ac97_addr = (volatile u32 *)&PAC_REG_BASE + (reg >> 1);
-+#ifdef USE_AC97_INTERRUPT
-+ ac97_seq.val = -1;
-+ ac97_seq.seq = AC97_SEQ_READ1;
-+
-+ init_completion(&CAR_completion);
-+
-+ ac97_timer_set(ac97_seq.seq);
-+
-+ (void)*ac97_addr;
-+ wait_for_completion(&CAR_completion);
-+
-+ ac97_timer_clear();
-+#else
-+ {
-+ u16 data=0;
-+ int timeout;
-+ // dummy
-+ GSR |= GSR_RDCS;
-+ GSR |= GSR_SDONE;
-+ data = *ac97_addr;
-+ timeout = 0;
-+ while((GSR & GSR_SDONE)==0 && timeout++<AC97_TIMEOUT_VAL);
-+ if ((GSR & GSR_RDCS)!=0 || timeout>=AC97_TIMEOUT_VAL) {
-+ GSR |= GSR_RDCS;
-+ printk(KERN_CRIT __FUNCTION__": AC97 is busy.\n");
-+ lock_FCS(LOCK_FCS_AC97_SUB, 0);
-+ up(&CAR_mutex);
-+ return data;
-+ }
-+
-+ // actual read
-+ GSR |= GSR_SDONE;
-+ data = *ac97_addr;
-+ timeout = 0;
-+ while((GSR & GSR_SDONE)==0 && timeout++<AC97_TIMEOUT_VAL);
-+ if ((GSR & GSR_RDCS)!=0 || timeout>=AC97_TIMEOUT_VAL) {
-+ GSR |= GSR_RDCS;
-+ printk(KERN_CRIT __FUNCTION__": AC97 is busy.\n");
-+ }
-+ lock_FCS(LOCK_FCS_AC97_SUB, 0);
-+ up(&CAR_mutex);
-+ return data;
-+ }
-+#endif // end USE_AC97_INTERRUPT
-+ } else {
-+ printk(KERN_CRIT __FUNCTION__": CAR_CAIP already set\n");
-+ }
-+ lock_FCS(LOCK_FCS_AC97_SUB, 0);
-+ up(&CAR_mutex);
-+ return ac97_seq.val;
-+}
-+
-+static void pxa_ac97_write(struct ac97_codec *codec, u8 reg, u16 val)
-+{
-+ down(&CAR_mutex);
-+ lock_FCS(LOCK_FCS_AC97_SUB, 1);
-+ if ( !(CAR & CAR_CAIP) ) {
-+ ac97_addr = (volatile u32 *)&PAC_REG_BASE + (reg >> 1);
-+#ifdef USE_AC97_INTERRUPT
-+ ac97_seq.val = val;
-+ ac97_seq.seq = AC97_SEQ_WRITE_DONE;
-+ init_completion(&CAR_completion);
-+
-+ ac97_timer_set(ac97_seq.seq);
-+
-+ *ac97_addr = ac97_seq.val;
-+ wait_for_completion(&CAR_completion);
-+
-+ ac97_timer_clear();
-+#else
-+ {
-+ int timeout=0;
-+ GSR |= GSR_CDONE;
-+ *ac97_addr = val;
-+ while((GSR & GSR_CDONE)==0 && timeout++<AC97_TIMEOUT_VAL);
-+ if (timeout>=AC97_TIMEOUT_VAL) {
-+ printk(KERN_CRIT __FUNCTION__": AC97 is busy.\n");
-+ }
-+ }
-+#endif // end USE_AC97_INTERRUPT
-+ } else {
-+ printk(KERN_CRIT __FUNCTION__": CAR_CAIP already set\n");
-+ }
-+ lock_FCS(LOCK_FCS_AC97_SUB, 0);
-+ up(&CAR_mutex);
-+}
-+
-+static void pxa_ac97_bit_clear(struct ac97_codec *codec, u8 reg, u16 val)
-+{
-+ unsigned short dat = codec->codec_read(codec, reg);
-+ dat &= ~val;
-+ codec->codec_write(codec, reg, dat);
-+}
-+
-+static void pxa_ac97_bit_set(struct ac97_codec *codec, u8 reg, u16 val)
-+{
-+ unsigned short dat = codec->codec_read(codec, reg);
-+ dat |= val;
-+ codec->codec_write(codec, reg, dat);
-+}
-+
-+static void pxa_ac97_irq(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ if (GSR & (GSR_SDONE|GSR_CDONE)) {
-+ GSR = GSR_SDONE|GSR_CDONE;
-+
-+ ac97_timer_set(ac97_seq.seq);
-+
-+ switch ( ac97_seq.seq ) {
-+ case AC97_SEQ_READ1:
-+ ac97_seq.seq = AC97_SEQ_READ2;
-+ (void)*ac97_addr;
-+ break;
-+ case AC97_SEQ_READ2:
-+ ac97_seq.seq = AC97_SEQ_READ_DONE;
-+ if ( GSR & GSR_RDCS ) {
-+ GSR |= GSR_RDCS;
-+ printk(KERN_CRIT __FUNCTION__": read codec register timeout.\n");
-+ }
-+ ac97_seq.val = *ac97_addr;
-+ break;
-+ case AC97_SEQ_READ_DONE:
-+ udelay(20);
-+ complete(&CAR_completion);
-+ break;
-+ case AC97_SEQ_WRITE_DONE:
-+ complete(&CAR_completion);
-+ break;
-+ }
-+ }
-+}
-+
-+static struct ac97_codec pxa_ac97_codec = {
-+ codec_read: pxa_ac97_read,
-+ codec_write: pxa_ac97_write,
-+ codec_bit_clear: pxa_ac97_bit_clear,
-+ codec_bit_set: pxa_ac97_bit_set,
-+};
-+
-+static DECLARE_MUTEX(pxa_ac97_mutex);
-+static int pxa_ac97_refcount = 0;
-+
-+static char *codec_id(u16 id1, u16 id2, char *buf)
-+{
-+ if(id1&0x8080) {
-+ snprintf(buf, CODEC_ID_BUFSZ, "0x%04x:0x%04x", id1, id2);
-+ } else {
-+ buf[0] = (id1 >> 8);
-+ buf[1] = (id1 & 0xFF);
-+ buf[2] = (id2 >> 8);
-+ snprintf(buf+3, CODEC_ID_BUFSZ - 3, "%d", id2&0xFF);
-+ }
-+ return buf;
-+}
-+
-+static int ac97_check_modem(struct ac97_codec *codec)
-+{
-+ /* Check for an AC97 1.0 soft modem (ID1) */
-+ if(codec->codec_read(codec, AC97_RESET) & 2)
-+ return 1;
-+ /* Check for an AC97 2.x soft modem */
-+ codec->codec_write(codec, AC97_EXTENDED_MODEM_ID, 0L);
-+ if(codec->codec_read(codec, AC97_EXTENDED_MODEM_ID) & 1)
-+ return 1;
-+ return 0;
-+}
-+
-+static int ac97_probe(struct ac97_codec *codec)
-+{
-+ u16 id1, id2;
-+ u16 audio;
-+ int i;
-+ char cidbuf[CODEC_ID_BUFSZ];
-+
-+ codec->codec_write(codec, AC97_RESET, 0L);
-+
-+ /* also according to spec, we wait for codec-ready state */
-+ if ( codec->codec_wait ) codec->codec_wait(codec);
-+ else udelay(10);
-+
-+ if ( (audio = codec->codec_read(codec, AC97_RESET)) & 0x8000 ) {
-+ printk(KERN_ERR "ac97_codec: %s ac97 codec not present\n",
-+ (codec->id & 0x2) ? (codec->id&1 ? "4th" : "Tertiary")
-+ : (codec->id&1 ? "Secondary": "Primary"));
-+ return 0;
-+ }
-+
-+ /* probe for Modem Codec */
-+ codec->modem = ac97_check_modem(codec);
-+ codec->name = NULL;
-+ codec->codec_ops = &null_ops;
-+
-+ id1 = codec->codec_read(codec, AC97_VENDOR_ID1);
-+ id2 = codec->codec_read(codec, AC97_VENDOR_ID2);
-+ for (i = 0; i < ARRAY_SIZE(ac97_ids); i++) {
-+ if (ac97_ids[i].id == ((id1 << 16) | id2)) {
-+ codec->type = ac97_ids[i].id;
-+ codec->name = ac97_ids[i].name;
-+ codec->codec_ops = ac97_ids[i].ops;
-+ codec->flags = ac97_ids[i].flags;
-+ break;
-+ }
-+ }
-+
-+ /* A device which thinks its a modem but isnt */
-+ if ( codec->flags & AC97_DELUDED_MODEM )
-+ codec->modem = 0;
-+
-+ if ( codec->name == NULL )
-+ codec->name = "Unknown";
-+ printk(KERN_INFO "ac97_codec: AC97 %s codec, id: %s (%s)\n",
-+ codec->modem ? "Modem" : (audio ? "Audio" : ""),
-+ codec_id(id1, id2, cidbuf), codec->name);
-+ return 1;
-+}
-+
-+int pxa_ac97_get(struct ac97_codec **codec, unsigned char *ac97_on)
-+{
-+ if ( *ac97_on != 0 ) return 0;
-+
-+ *codec = NULL;
-+ down(&pxa_ac97_mutex);
-+
-+ DEBUG(DBG_L1, "count(%d)\n", pxa_ac97_refcount);
-+ pxa_ac97_refcount++;
-+ up(&pxa_ac97_mutex);
-+ *codec = &pxa_ac97_codec;
-+ *ac97_on = 1;
-+
-+ return 0;
-+}
-+
-+void pxa_ac97_put(unsigned char *ac97_on)
-+{
-+ if ( *ac97_on == 0 ) return;
-+ down(&pxa_ac97_mutex);
-+ pxa_ac97_refcount--;
-+ DEBUG(DBG_L1, "count(%d)\n", pxa_ac97_refcount);
-+ up(&pxa_ac97_mutex);
-+ *ac97_on = 0;
-+}
-+
-+unsigned int ac97_set_dac_rate(struct ac97_codec *codec, unsigned int rate)
-+{
-+ unsigned int new_rate = rate;
-+ u32 dacp;
-+ u32 mast_vol, phone_vol, mono_vol, pcm_vol;
-+ u32 mute_vol = 0x8000; /* The mute volume? */
-+
-+ if( rate != codec->codec_read(codec, AC97_PCM_FRONT_DAC_RATE) ) {
-+ /* Mute several registers */
-+ mast_vol = codec->codec_read(codec, AC97_MASTER_VOL_STEREO);
-+ mono_vol = codec->codec_read(codec, AC97_MASTER_VOL_MONO);
-+ phone_vol = codec->codec_read(codec, AC97_HEADPHONE_VOL);
-+ pcm_vol = codec->codec_read(codec, AC97_PCMOUT_VOL);
-+ codec->codec_write(codec, AC97_MASTER_VOL_STEREO, mute_vol);
-+ codec->codec_write(codec, AC97_MASTER_VOL_MONO, mute_vol);
-+ codec->codec_write(codec, AC97_HEADPHONE_VOL, mute_vol);
-+ codec->codec_write(codec, AC97_PCMOUT_VOL, mute_vol);
-+
-+ /* Power down the DAC */
-+ dacp=codec->codec_read(codec, AC97_POWER_CONTROL);
-+ codec->codec_write(codec, AC97_POWER_CONTROL, dacp|0x0200);
-+ /* Load the rate and read the effective rate */
-+ codec->codec_write(codec, AC97_PCM_FRONT_DAC_RATE, rate);
-+ new_rate=codec->codec_read(codec, AC97_PCM_FRONT_DAC_RATE);
-+ /* Power it back up */
-+ codec->codec_write(codec, AC97_POWER_CONTROL, dacp);
-+
-+ /* Restore volumes */
-+ codec->codec_write(codec, AC97_MASTER_VOL_STEREO, mast_vol);
-+ codec->codec_write(codec, AC97_MASTER_VOL_MONO, mono_vol);
-+ codec->codec_write(codec, AC97_HEADPHONE_VOL, phone_vol);
-+ codec->codec_write(codec, AC97_PCMOUT_VOL, pcm_vol);
-+ }
-+ return new_rate;
-+}
-+
-+unsigned int ac97_set_adc_rate(struct ac97_codec *codec, unsigned int rate)
-+{
-+ unsigned int new_rate = rate;
-+ u32 dacp;
-+ if( rate != codec->codec_read(codec, AC97_PCM_LR_ADC_RATE) ) {
-+ /* Power "Up" the ADC */
-+ dacp=codec->codec_read(codec, AC97_POWER_CONTROL);
-+ dacp &= ~(0x1<<8);
-+ codec->codec_write(codec, AC97_POWER_CONTROL, dacp);
-+
-+ codec->codec_write(codec, AC97_PCM_LR_ADC_RATE, rate);
-+ new_rate=codec->codec_read(codec, AC97_PCM_LR_ADC_RATE);
-+
-+ /* Power it back up */
-+ codec->codec_write(codec, AC97_POWER_CONTROL, dacp);
-+ }
-+ return new_rate;
-+}
-+
-+void wm9712_power_mode(int dev, int mode)
-+{
-+ int i;
-+ power_mode_t new_power_status;
-+ dev %= NUM_OF_WM9712_DEV;
-+ mode %= num_of_pwr_values;
-+ // printk("wm9712_power_mode(%d,%d)\n",dev,mode);
-+ power_mode_status[dev] = pwr_values[mode];
-+ // create new state
-+ new_power_status = power_mode_status[0];
-+ for (i=1; i<NUM_OF_WM9712_DEV; i++) {
-+ new_power_status.ctl_val &= power_mode_status[i].ctl_val;
-+ new_power_status.pdown_val &= power_mode_status[i].pdown_val;
-+ }
-+ // compare with current state
-+ if (new_power_status.pdown_val != cur_power_status.pdown_val) {
-+ ac97_write(AC97_POWERDOWN, new_power_status.pdown_val);
-+ cur_power_status.pdown_val = new_power_status.pdown_val;
-+ // printk("change status PWDOWN = %04X\n", cur_power_status.pdown_val);
-+ }
-+ if (new_power_status.ctl_val != cur_power_status.ctl_val) {
-+ ac97_write(AC97_POWER_CONTROL, new_power_status.ctl_val);
-+ cur_power_status.ctl_val = new_power_status.ctl_val;
-+ // printk("change status PW_CTRL = %04X\n", cur_power_status.ctl_val);
-+ }
-+
-+}
-+
-+void tosa_ac97_init(void)
-+{
-+ int i;
-+ int ret,timeo;
-+
-+ lock_FCS(LOCK_FCS_AC97, 1);
-+ codec = NULL;
-+ pxa_ac97_refcount = 0;
-+ set_GPIO_mode(GPIO31_SYNC_AC97_MD);
-+ set_GPIO_mode(GPIO30_SDATA_OUT_AC97_MD);
-+ set_GPIO_mode(GPIO28_BITCLK_AC97_MD);
-+ set_GPIO_mode(GPIO29_SDATA_IN_AC97_MD);
-+ set_GPIO_mode(GPIO20_DREQ0_MD);
-+
-+ for (i=0; i<NUM_OF_WM9712_DEV; i++) {
-+ power_mode_status[i].ctl_val = pwr_values[WM9712_PWR_OFF].ctl_val;
-+ power_mode_status[i].pdown_val = pwr_values[WM9712_PWR_OFF].pdown_val;
-+ }
-+ memset(&cur_power_status,0,sizeof(cur_power_status));
-+
-+#if 1 // move from ac97_get
-+ CKEN |= CKEN2_AC97;
-+ /* AC97 power on sequense */
-+ while ( 1 ) {
-+ GCR = 0;
-+ udelay(100);
-+ GCR |= GCR_COLD_RST;
-+ udelay(5);
-+ GCR |= GCR_WARM_RST;
-+ udelay(5);
-+ for ( timeo = 0x10000; timeo > 0; timeo-- ) {
-+ if ( GSR & GSR_PCR ) break;
-+ //X schedule();
-+ mdelay(5);
-+ }
-+ if( timeo > 0 ) break;
-+ printk(KERN_WARNING "AC97 power on retry!!\n");
-+ }
-+
-+#ifdef USE_AC97_INTERRUPT
-+ if( (ret = request_irq(IRQ_AC97, pxa_ac97_irq, 0, "AC97", NULL)) ) {
-+ lock_FCS(LOCK_FCS_AC97, 0);
-+ return ret;
-+ }
-+ }
-+#endif
-+
-+ if ( (ret = ac97_probe(&pxa_ac97_codec)) != 1 ) {
-+#ifdef USE_AC97_INTERRUPT
-+ free_irq(IRQ_AC97, NULL);
-+#endif
-+ GCR = GCR_ACLINK_OFF;
-+ CKEN &= ~CKEN2_AC97;
-+ lock_FCS(LOCK_FCS_AC97, 0);
-+ return ret;
-+ }
-+ pxa_ac97_write(&pxa_ac97_codec, AC97_EXTENDED_STATUS, 1);
-+ /*
-+ * Setting AC97 GPIO
-+ * i/o function
-+ * GPIO1: input EAR_IN signal
-+ * GPIO2: output IRQ signal
-+ * GPIO3: output PENDOWN signal
-+ * GPIO4: input MASK signal
-+ * GPIO5: input DETECT MIC signal
-+ */
-+ pxa_ac97_bit_clear(&pxa_ac97_codec, AC97_GPIO_FUNC,
-+ ((1<<2)|(1<<3)|(1<<4)|(1<<5)));
-+ pxa_ac97_bit_clear(&pxa_ac97_codec, AC97_GPIO_CONFIG,(1<<2)|(1<<3));
-+ pxa_ac97_bit_set(&pxa_ac97_codec, AC97_GPIO_CONFIG, (1<<1)|(1<<4)|(1<<5));
-+#endif
-+ codec = &pxa_ac97_codec;
-+ lock_FCS(LOCK_FCS_AC97, 0);
-+}
-+
-+void tosa_ac97_exit(void)
-+{
-+#if 1 // move from ac97_put
-+ GCR = GCR_ACLINK_OFF;
-+ CKEN &= ~CKEN2_AC97;
-+#ifdef USE_AC97_INTERRUPT
-+ free_irq(IRQ_AC97, NULL);
-+#endif
-+ pxa_ac97_refcount = 0;
-+#endif
-+}
-+
-+EXPORT_SYMBOL(ac97_set_dac_rate);
-+EXPORT_SYMBOL(ac97_set_adc_rate);
-+EXPORT_SYMBOL(pxa_ac97_get);
-+EXPORT_SYMBOL(pxa_ac97_put);
-+EXPORT_SYMBOL(wm9712_power_mode);
-diff -Nur linux_c860_org/arch/arm/mach-pxa/tosa_battery.c linux/arch/arm/mach-pxa/tosa_battery.c
---- linux_c860_org/arch/arm/mach-pxa/tosa_battery.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/arch/arm/mach-pxa/tosa_battery.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,2603 @@
-+/*
-+ * linux/arch/arm/mach-pxa/tosa_battery.c
-+ *
-+ * Based on
-+ * linux/arch/arm/mach-sa1100/collie_battery.c
-+ * linux/arch/arm/mach-pxa/sharpsl_battery.c
-+ *
-+ * Battery routines for tosa (SHARP)
-+ *
-+ * Copyright (C) 2004 SHARP
-+ *
-+ * 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.
-+ *
-+ * ChangeLog:
-+ *
-+ */
-+
-+
-+/* this driver support the following functions
-+ * - apm_get_power_status
-+ * - charge proc
-+ */
-+
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/poll.h>
-+#include <linux/types.h>
-+#include <linux/stddef.h>
-+#include <linux/timer.h>
-+#include <linux/fcntl.h>
-+#include <linux/slab.h>
-+#include <linux/stat.h>
-+#include <linux/proc_fs.h>
-+#include <linux/miscdevice.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/pm.h>
-+#include <linux/kernel.h>
-+#include <linux/smp_lock.h>
-+#include <linux/apm_bios.h>
-+#include <linux/delay.h>
-+
-+#include <asm/io.h>
-+#include <asm/hardware.h>
-+#include <asm/irq.h>
-+#include <asm/mach/irq.h>
-+#include <asm/hardirq.h>
-+
-+#include <asm/sharp_char.h>
-+#include <asm/sharp_keycode.h>
-+#include <linux/ac97_codec.h>
-+#include <asm/arch/tosa_wm9712.h>
-+#include <asm/arch/keyboard_tosa.h>
-+#include <asm/arch/tosa.h>
-+#include <video/tosa_backlight.h>
-+#include <asm/arch/sharpsl_battery.h>
-+
-+#define TOSA_BATTERY_FAILSAFE_LOWBAT
-+#define TOSA_BATTERY_AD_OFFSET (0)
-+
-+#define TOSA_OFF_CHARGE_FAILSAFE
-+
-+#define TOSA_FOR_ENGLISH
-+
-+#ifdef DEBUG
-+#define DPRINTK(x, args...) printk(x,##args)
-+#else
-+#define DPRINTK(x, args...) if ( msglevel & 1 ) printk(x,##args);
-+#endif
-+
-+#ifdef DEBUG2
-+#define DPRINTK2(x, args...) printk( x,##args)
-+#else
-+#define DPRINTK2(x, args...) if ( msglevel & 2 ) printk(x,##args);
-+#endif
-+
-+#ifdef DEBUG3
-+#define DPRINTK3(x, args...) printk( x,##args)
-+#else
-+#define DPRINTK3(x, args...) if ( msglevel & 4 ) printk(x,##args);
-+#endif
-+
-+#ifdef DEBUG4
-+#define DPRINTK4(x, args...) printk( x,##args)
-+#else
-+#define DPRINTK4(x, args...) if ( msglevel & 8 ) printk(x,##args);
-+#endif
-+
-+#ifdef TOSA_FOR_ENGLISH
-+#ifdef DEBUG5
-+#define DPRINTK5(x, args...) printk( x,##args)
-+#else
-+#define DPRINTK5(x, args...) if ( msglevel & 16 ) printk("[CHKCHGFULL]: "x,##args);
-+#endif
-+#endif // TOSA_FOR_ENGLISH
-+
-+#define CHECK_LOG (0) // for DEBUG
-+#if CHECK_LOG
-+int gStartTime = 0;
-+#endif
-+
-+/*
-+ * The battery device is one of the misc char devices.
-+ * This is its minor number.
-+ */
-+#define BATTERY_MINOR_DEV 215
-+
-+#define SEL_MAIN 0
-+#define SEL_JACKET 1
-+#define SEL_BU 2
-+
-+static void tosa_charge_on_off(int,int);
-+
-+#define CHARGE_ON() ( { CHARGE_0_ON(); CHARGE_1_ON(); } )
-+#define CHARGE_OFF() ( { CHARGE_0_OFF(); CHARGE_1_OFF(); } )
-+
-+#define CHARGE_0_ON() tosa_charge_on_off(SEL_MAIN, 1)
-+#define CHARGE_0_OFF() tosa_charge_on_off(SEL_MAIN, 0)
-+
-+#define CHARGE_1_ON() tosa_charge_on_off(SEL_JACKET, 1)
-+#define CHARGE_1_OFF() tosa_charge_on_off(SEL_JACKET, 0)
-+
-+extern void sharpsl_charge_err_off(void);
-+#define CHARGE_LED_ON() set_led_status(SHARP_LED_CHARGER,LED_CHARGER_CHARGING)
-+#define CHARGE_LED_OFF() set_led_status(SHARP_LED_CHARGER,LED_CHARGER_OFF)
-+#define CHARGE_LED_ERR() set_led_status(SHARP_LED_CHARGER,LED_CHARGER_ERROR)
-+#define CHARGE_LED_ERR_OFF() sharpsl_charge_err_off()
-+
-+#define SHARPSL_BATTERY_STATUS_HIGH APM_BATTERY_STATUS_HIGH
-+#define SHARPSL_BATTERY_STATUS_LOW APM_BATTERY_STATUS_LOW
-+#define SHARPSL_BATTERY_STATUS_VERYLOW APM_BATTERY_STATUS_VERY_LOW
-+#define SHARPSL_BATTERY_STATUS_CRITICAL APM_BATTERY_STATUS_CRITICAL
-+
-+#define APM_BATL_CLOSE 0
-+#define APM_BATL_OPEN 1
-+#define SHARPSL_BAT_LOCKED_STATUS \
-+ (( GPLR(GPIO_BAT_LOCKED) & GPIO_bit(GPIO_BAT_LOCKED) ) ? APM_BATL_CLOSE : APM_BATL_OPEN)
-+
-+static int tosa_ac_line_status(int);
-+#define SHARPSL_AC_LINE_STATUS tosa_ac_line_status(20 /* msec */)
-+
-+#define SHARPSL_MAIN_BATT_FATAL \
-+ (( GPLR(GPIO_BAT0_LOW) & GPIO_bit(GPIO_BAT0_LOW) ) ? 0 : 1 )
-+
-+#define SHARPSL_JACKET_BATT_FATAL \
-+ (( GPLR(GPIO_BAT1_LOW) & GPIO_bit(GPIO_BAT1_LOW) ) ? 0 : 1 )
-+
-+#define SHARPSL_MAIN_BATT_FULL \
-+ (( GPLR(GPIO_BAT0_CRG) & GPIO_bit(GPIO_BAT0_CRG) ) ? 1 : 0 )
-+
-+#define SHARPSL_JACKET_BATT_FULL \
-+ (( GPLR(GPIO_BAT1_CRG) & GPIO_bit(GPIO_BAT1_CRG) ) ? 1 : 0 )
-+
-+
-+#define SHARPSL_APO_DEFAULT ( ( 3 * 60 ) * SHARPSL_PM_TICK ) // 3 min
-+#define SHARPSL_LPO_DEFAULT ( 20 * SHARPSL_PM_TICK ) // 20 sec
-+
-+
-+#define SHARPSL_PM_TICK ( HZ ) // 1 sec
-+#define SHARPSL_BATCHK_TIME ( SHARPSL_PM_TICK ) // 1 sec
-+#define SHARPSL_MAIN_GOOD_COUNT ( HZ / SHARPSL_PM_TICK ) // 1 sec
-+#define SHARPSL_MAIN_NOGOOD_COUNT ( HZ / SHARPSL_PM_TICK ) // 1 sec
-+
-+#define SHARPSL_BATTERY_CK_TIME ( 10*60*1*100 ) // 10min ( base jiffies )
-+#define TOSA_TEMP_READ_WAIT_TIME (5) // 5msec [Fix]
-+#define TOSA_BATTERY_READ_WAIT_TIME (5) // 5msec [Fix]
-+#define TOSA_DISCHARGE_WAIT_TIME (10) // 10msec
-+
-+#define TOSA_MAIN_BATTERY_EXIST_THRESH (3600) // 2.9V [Fix]
-+#define TOSA_JACKET_BATTERY_EXIST_THRESH (3600) // 2.9V [Fix]
-+
-+#define TOSA_MAIN_BATTERY_ERR_THRESH (1200) // 2.9V [Fix]
-+#define TOSA_JACKET_BATTERY_ERR_THRESH (1200) // 2.9V [Fix]
-+
-+
-+#define TOSA_MAIN_BATT_FATAL_ACIN_VOLT (1572+TOSA_BATTERY_AD_OFFSET) // 3.80V [Fix]
-+#define TOSA_JACKET_BATT_FATAL_ACIN_VOLT (1572+TOSA_BATTERY_AD_OFFSET) // 3.80V [Fix]
-+#define TOSA_MAIN_BATT_FATAL_NOACIN_VOLT (1551+TOSA_BATTERY_AD_OFFSET) // 3.75V [Fix]
-+#define TOSA_JACKET_BATT_FATAL_NOACIN_VOLT (1551+TOSA_BATTERY_AD_OFFSET) // 3.75V [Fix]
-+
-+
-+#define TOSA_JC_CHECK_WAIT_TIME 10 // 10*10mS Jacket Check [Fix]
-+#define TOSA_JC_CHECK_TIMES 5 // 5 times
-+
-+#define SHARPSL_TOSA_WAIT_CO_TIME 20 // 20 Sec
-+ //NOTICE !! you want to change this value , so you must change
-+ // alarm check mirgin time ( +30 ) in the sharpsl_power.c.
-+
-+#define SHARPSL_CAUTION_CONTRAST TOSA_BL_CAUTION_CONTRAST
-+#define SHARPSL_RESET_CONTRAST TOSA_BL_RESET_CONTRAST
-+#define SHARPSL_LIMIT_CONTRAST(x) tosa_bl_set_limit_contrast(x)
-+
-+#define CHARGE_STEP1 1
-+#define CHARGE_STEP2 2
-+#define CHARGE_STEP3 3
-+#define CHARGE_STEP4 4
-+#define CHARGE_STEP5 5
-+#define CHARGE_STEP6 6
-+#define CHARGE_STEP7 7
-+#define CHARGE_STEP_END 10
-+#define CHARGE_STEP_EXIT 11
-+#define CHARGE_STEP_ERROR 12
-+#define SHARPSL_CHARGE_RETRY_CNT 1 // 10 min
-+#define SHARPSL_AFTER_CHARGE_CNT 0 // 0
-+
-+#define SHARPSL_CNV_VALUE_NUM 10
-+#define SHARPSL_CNV_TEMP_NUM 10
-+
-+
-+typedef struct BatteryThresh {
-+ int voltage;
-+ int percentage;
-+ int status;
-+} BATTERY_THRESH;
-+
-+/*** prototype *********************************************************************/
-+static int tosa_get_jacket_status(void);
-+static void tosa_request_off(void);
-+static int tosa_battery_thread_main(void);
-+static int tosa_get_sel_battery(int); //[Fix]
-+static int tosa_read_battery(int); //[Fix]
-+static int tosa_read_temp(int); //[Fix]
-+static int tosa_read_battery_avg(int);
-+static int tosa_read_temp_avg(int); //[Fix]
-+static int tosa_check_battery_error(int,int);
-+static int tosa_check_battery_exist(int,int); //[Fix]
-+static int tosa_check_main_battery_error(void);
-+static int tosa_check_jacket_battery_error(void);
-+static int tosa_check_main_battery_not_exist(void); //[Fix]
-+static int tosa_check_jacket_battery_not_exist(void); //[Fix]
-+static int tosa_read_main_battery(void);
-+static int tosa_read_jacket_battery(void);
-+static int tosa_read_backup_battery(void);
-+static int tosa_check_main_batt_fatal(void);
-+static int tosa_check_jacket_batt_fatal(void);
-+static void tosa_charge_start(void); //[Fix]
-+static void tosa_charge_stop(void); //[Fix]
-+static void tosa_reset_battery_info(void);
-+static void tosa_jacket_kick_timer(void);
-+static void tosa_jacket_interrupt(int,void *,struct pt_regs *);
-+static void tosa_ac_interrupt(int,void *,struct pt_regs *);
-+static void tosa_main_batt_fatal_interrupt(int,void *,struct pt_regs *);
-+static void tosa_jacket_batt_fatal_interrupt(int,void *,struct pt_regs *);
-+static int tosa_cnv_battery(int,int);
-+static void tosa_get_all_battery(void); //[Fix]
-+static int tosa_get_sel_charge_percent(int,int);
-+static BATTERY_THRESH *tosa_get_sel_level(int,int);
-+static int tosa_get_dac_value(int); //[Fix]
-+static int get_select_val(int *);
-+static int tosa_get_jacket_status_for_on(void);
-+static void tosa_off_jc_card_limit(void);
-+
-+
-+/* thread */
-+static int tosa_charge_on(void*);
-+static int tosa_charge_off(void*);
-+static int tosa_battery_thread(void*);
-+static int tosa_fatal_check(void*);
-+static int tosa_jacket_check(void*);
-+
-+
-+/*** extern ***********************************************************************/
-+extern u32 apm_wakeup_src_mask;
-+extern int counter_step_contrast;
-+extern void handle_scancode(unsigned char,int);
-+extern unsigned long ssp_get_dac_val(unsigned long,int);
-+extern int sharpsl_is_power_mode_sensitive_battery(void);
-+extern int ac97_ad_input(int,unsigned short *);
-+extern int set_led_status(int,int);
-+extern unsigned short set_scoop_jc_gpio(unsigned short);
-+extern unsigned short reset_scoop_jc_gpio(unsigned short);
-+
-+#ifdef CONFIG_PM
-+extern int pass_charge_flag;
-+//extern int counter_step_save;
-+#endif
-+
-+/*** variables ********************************************************************/
-+
-+/* BL 5-3 */
-+BATTERY_THRESH sharpsl_main_battery_thresh_fl[] = {
-+ { 1663, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1605, 75, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1564, 50, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1510, 25, SHARPSL_BATTERY_STATUS_LOW},
-+ { 1435, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
-+ { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL},
-+};
-+
-+/* BL 2-0 */
-+BATTERY_THRESH sharpsl_main_battery_thresh_nofl[] = {
-+ { 1679, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1617, 75, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1576, 50, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1530, 25, SHARPSL_BATTERY_STATUS_LOW},
-+ { 1448, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
-+ { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL},
-+};
-+
-+/* BL 5-3 */
-+BATTERY_THRESH sharpsl_jacket_battery_thresh_fl[] = {
-+ { 1663, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1605, 75, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1564, 50, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1510, 25, SHARPSL_BATTERY_STATUS_LOW},
-+ { 1435, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
-+ { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL},
-+};
-+
-+/* BL 2-0 */
-+BATTERY_THRESH sharpsl_jacket_battery_thresh_nofl[] = {
-+ { 1679, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1617, 75, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1576, 50, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 1530, 25, SHARPSL_BATTERY_STATUS_LOW},
-+ { 1448, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
-+ { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL},
-+};
-+
-+BATTERY_THRESH sharpsl_bu_battery_thresh_fl[] = {
-+ { 3226, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 0, 0, SHARPSL_BATTERY_STATUS_VERYLOW},
-+};
-+
-+BATTERY_THRESH sharpsl_bu_battery_thresh_nofl[] = {
-+ { 3226, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 0, 0, SHARPSL_BATTERY_STATUS_VERYLOW},
-+};
-+
-+
-+#if 1
-+static struct file_operations sharpsl_battery_fops = {
-+};
-+#else
-+static struct file_operations sharpsl_battery_fops = {
-+ owner: THIS_MODULE,
-+ read: do_read,
-+ poll: do_poll,
-+ ioctl: do_ioctl,
-+ open: do_open,
-+ release: do_release,
-+};
-+#endif
-+
-+static struct miscdevice battery_device = {
-+ BATTERY_MINOR_DEV,
-+ "battery",
-+ &sharpsl_battery_fops
-+};
-+
-+
-+int charge_status = 0; /* charge status 1 : charge 0: not charge */
-+int sharpsl_off_charge = 0; /* 0: on , 1 : off */
-+
-+unsigned int APOCnt = SHARPSL_APO_DEFAULT;
-+unsigned int APOCntWk = 0;
-+unsigned int LPOCnt = SHARPSL_LPO_DEFAULT;
-+unsigned int LPOCntWk = 0;
-+static DECLARE_WAIT_QUEUE_HEAD(battery_queue);
-+static int msglevel;
-+
-+int sharpsl_main_battery = SHARPSL_BATTERY_STATUS_HIGH;
-+int sharpsl_main_battery_percentage = 100;
-+int sharpsl_jacket_battery = SHARPSL_BATTERY_STATUS_HIGH;
-+int sharpsl_jacket_battery_percentage = 100;
-+int sharpsl_bu_battery = SHARPSL_BATTERY_STATUS_HIGH;
-+int sharpsl_bu_battery_percentage = 100;
-+
-+int sharpsl_bat_locked = 0;
-+
-+int sharpsl_jacket_exist = 0;
-+int sharpsl_jacket_batt_exist = 0;
-+static int tosa_jacket_status_change = 0;
-+static int tosa_jacket_check_only = 0;
-+static int tosa_cardslot_error = 0;
-+#define ERR_CARDSLOT_CF1 (0x1<<0)
-+#define ERR_CARDSLOT_CF2 (0x1<<1)
-+#define ERR_CARDSLOT_SD (0x1<<2)
-+
-+int sharpsl_ac_status = APM_AC_OFFLINE;
-+
-+static int MainCntWk = SHARPSL_MAIN_GOOD_COUNT;
-+static int MainCnt = SHARPSL_MAIN_NOGOOD_COUNT;
-+static int back_ac_status = -1;
-+
-+static int back_battery_status = -1;
-+static int back_jacket_battery_status = -1;
-+static int back_bu_battery_status = -1;
-+static int sharpsl_check_time = SHARPSL_BATCHK_TIME;
-+
-+static int sharpsl_main_status_bk = SHARPSL_BATTERY_STATUS_HIGH;
-+static int sharpsl_main_percent_bk = 100;
-+static int sharpsl_jacket_status_bk = SHARPSL_BATTERY_STATUS_HIGH;
-+static int sharpsl_jacket_percent_bk = 100;
-+static int sharpsl_bu_status_bk = SHARPSL_BATTERY_STATUS_HIGH;
-+static int sharpsl_bu_percent_bk = 100;
-+
-+int sharpsl_main_bk_flag = 0;
-+
-+static struct timer_list ac_kick_timer;
-+static struct timer_list jacket_kick_timer;
-+
-+#ifdef CONFIG_PM
-+static struct pm_dev *battery_pm_dev; /* registered PM device */
-+#endif
-+
-+static int battery_off_flag = 0; /* charge : suspend while get adc */
-+static int is_ac_adaptor = 0; /* AC adaptor in/out */
-+
-+static DECLARE_WAIT_QUEUE_HEAD(charge_on_queue);
-+static DECLARE_WAIT_QUEUE_HEAD(charge_off_queue);
-+static DECLARE_WAIT_QUEUE_HEAD(battery_waitqueue);
-+static DECLARE_WAIT_QUEUE_HEAD(fatal_chk_queue);
-+static DECLARE_WAIT_QUEUE_HEAD(jacket_chk_queue);
-+
-+static int is_enabled_off = 1;
-+
-+int sharpsl_charge_cnt = 0;
-+int sharpsl_charge_dummy_cnt = 1;
-+
-+static int sharpsl_ad_main[SHARPSL_CNV_VALUE_NUM+1];
-+static int sharpsl_ad_index_main = 0;
-+static int sharpsl_ad_jacket[SHARPSL_CNV_VALUE_NUM+1];
-+static int sharpsl_ad_index_jacket = 0;
-+static int sharpsl_ad_bu[SHARPSL_CNV_VALUE_NUM+1];
-+static int sharpsl_ad_index_bu = 0;
-+
-+static int tosa_jacket_check_count = 0;
-+static unsigned int tosa_jacket_state = 0;
-+static int tosa_dac_init = 0;
-+
-+
-+static int sharpsl_change_battery_status = 0;
-+
-+static int tosa_jc_card_limit_sel = 0;
-+
-+static int tosa_off_main_batt_full = 0;
-+static int tosa_off_jacket_batt_full = 0;
-+
-+static int tosa_off_check_jacket_req = 0;
-+
-+// for DEBUG
-+static int sharpsl_debug_flag = 0;
-+
-+#ifdef TOSA_OFF_CHARGE_FAILSAFE
-+#define TOSA_CHARGE_FULL_MAX_TIME (4*60*60) // 4H
-+#define TOSA_CHARGE_FULL_DIFF_VOLT (20) // about 50mV
-+static int tosa_charge_full_enable = 0;
-+static int tosa_charge_full_counter = 0;
-+static int tosa_charge_full_main_batt = 0;
-+static int tosa_charge_full_jacket_batt = 0;
-+#endif //TOSA_OFF_CHARGE_FAILSAFE
-+
-+#ifdef TOSA_FOR_ENGLISH
-+static int tosa_charge_full_state = 0;
-+static int tosa_decide_charge_full_counter = 0;
-+int logo_lang = 0; // (default): En , (1): Jp
-+#define TOSA_DECIDE_CHARGE_FULL_COUNTER ( 60*100 ) // 1min ( base jiffies )
-+#define DISCONNECT_AC (0)
-+#define CONNECT_AC (1)
-+#define DETECT_CHARGE_FULL (2)
-+#define DECIDE_CHARGE_FULL (3)
-+#define GET_CHARGE_FULL_STATE() tosa_charge_full_state
-+#define SET_CHARGE_FULL_STATE(state) (tosa_charge_full_state = state)
-+#define IS_ENGLISH_MODEL() (logo_lang != 1)
-+#endif // TOSA_FOR_ENGLISH
-+
-+void set_jacketslot_error( int on )
-+{
-+ if (on) {
-+ if (!(tosa_cardslot_error&ERR_CARDSLOT_CF2)) {
-+ tosa_cardslot_error |= ERR_CARDSLOT_CF2;
-+ sharpsl_change_battery_status = 1;
-+ wake_up_interruptible(&battery_waitqueue);
-+ }
-+ } else {
-+ if (tosa_cardslot_error&ERR_CARDSLOT_CF2) {
-+ tosa_cardslot_error &= ~ERR_CARDSLOT_CF2;
-+ sharpsl_change_battery_status = 1;
-+ wake_up_interruptible(&battery_waitqueue);
-+ }
-+ }
-+}
-+
-+int current_cardslot_error( int num )
-+{
-+ if (num==0) {
-+ return (tosa_cardslot_error & ERR_CARDSLOT_CF1)?1:0;
-+ } else { // slot 1
-+ return (tosa_cardslot_error & ERR_CARDSLOT_CF2)?1:0;
-+ }
-+}
-+
-+/*** apm subroutines ***********************************************************/
-+static int tosa_get_jacket_status(void)
-+{
-+ if (tosa_jacket_check_count == 0){
-+ tosa_jacket_state = GPLR(GPIO_JACKET_DETECT) & GPIO_bit(GPIO_JACKET_DETECT);
-+ tosa_jacket_check_count++;
-+ return 0;
-+ }
-+
-+ if (tosa_jacket_state == (GPLR(GPIO_JACKET_DETECT) & GPIO_bit(GPIO_JACKET_DETECT))){
-+ if (tosa_jacket_check_count++ >= TOSA_JC_CHECK_TIMES){
-+ if (tosa_jacket_state){
-+ sharpsl_jacket_exist = 0; // non-exsistent (unit)
-+ sharpsl_jacket_batt_exist = 0; // non-exststent (battery)
-+ DPRINTK2("[BATT] jacket was removed.\n");
-+ }else{
-+ sharpsl_jacket_exist = 1; // exsistent (unit)
-+ DPRINTK2("JACKET STATUS [ EXIST ]\n");
-+ if(!tosa_check_jacket_battery_not_exist()){
-+ sharpsl_jacket_batt_exist = 1; // exsistent (battery)
-+ DPRINTK2("JACKET BATTERY STATUS [ EXIST ]\n");
-+ }else{
-+ sharpsl_jacket_batt_exist = 0; // non-exststent (battery)
-+ DPRINTK2("JACKET BATTERY STATUS [ NOT EXIST ]\n");
-+ }
-+ }
-+ // jacket battery charge control.
-+ if(sharpsl_jacket_batt_exist){
-+ CHARGE_1_ON();
-+ }else{
-+ CHARGE_1_OFF();
-+ }
-+
-+ tosa_jacket_status_change = 1; // jacket status is changed.
-+
-+ if(!tosa_jacket_check_only){
-+ sharpsl_change_battery_status = 1; // change status
-+ wake_up_interruptible(&battery_waitqueue);
-+ }
-+
-+ tosa_jacket_check_count = 0;
-+ return 1;
-+ }
-+ }else{
-+ tosa_jacket_check_count = 0;
-+ }
-+ return 0;
-+}
-+
-+static int tosa_get_jacket_status_for_on(void)
-+{
-+ tosa_jacket_check_count = 0;
-+ tosa_jacket_check_only = 1;
-+ while(1){
-+ if(tosa_get_jacket_status()){
-+ mdelay(TOSA_JC_CHECK_WAIT_TIME*10);
-+ break;
-+ }
-+ mdelay(TOSA_JC_CHECK_WAIT_TIME*10);
-+ }
-+ tosa_jacket_check_only = 0;
-+ return 0;
-+}
-+
-+int sharpsl_apm_get_power_status(u_char *ac_line_status,
-+ u_char *battery_main_status,
-+ u_char *battery_jacket_status,
-+ u_char *battery_bu_status,
-+ u_char *battery_flag,
-+ u_char *battery_main_percentage,
-+ u_char *battery_jacket_percentage,
-+ u_char *battery_bu_percentage,
-+ u_short *battery_main_life,
-+ u_short *battery_jacket_life,
-+ u_short *battery_bu_life)
-+
-+{
-+ // set ac status
-+ *ac_line_status = sharpsl_ac_status;
-+
-+ // set battery_status main
-+ *battery_main_status = sharpsl_main_battery;
-+ *battery_jacket_status = sharpsl_jacket_battery;
-+ *battery_bu_status = sharpsl_bu_battery;
-+
-+ // set battery percentage
-+ *battery_main_percentage = sharpsl_main_battery_percentage;
-+ *battery_jacket_percentage = sharpsl_jacket_battery_percentage;
-+ *battery_bu_percentage = sharpsl_bu_battery_percentage;
-+
-+ if ( *ac_line_status == APM_AC_ONLINE ){
-+ *battery_main_percentage = 100;
-+ *battery_jacket_percentage = 100;
-+ *battery_bu_percentage = 100;
-+ }
-+
-+ // set battery_flag
-+ if ( *battery_main_status == SHARPSL_BATTERY_STATUS_VERYLOW ){
-+ *battery_flag = (1 << 5);
-+ }else{
-+ *battery_flag = (1 << *battery_main_status);
-+ }
-+
-+ // chk charge status
-+#ifdef TOSA_FOR_ENGLISH
-+ if ( charge_status && (!IS_ENGLISH_MODEL() || (GET_CHARGE_FULL_STATE() != DECIDE_CHARGE_FULL))) {
-+#else
-+ if ( charge_status ) {
-+#endif // TOSA_FOR_ENGLISH
-+ *battery_main_status = APM_BATTERY_STATUS_CHARGING;
-+ *battery_jacket_status = APM_BATTERY_STATUS_CHARGING;
-+ *battery_bu_status = APM_BATTERY_STATUS_CHARGING;
-+ *battery_flag = (1 << 3);
-+ // charging now, so can not get battery percentage.
-+ *battery_main_percentage = -1;
-+ *battery_jacket_percentage = -1;
-+ *battery_bu_percentage = -1;
-+ }
-+
-+ // set battery life
-+ *battery_main_life = APM_BATTERY_LIFE_UNKNOWN;
-+ *battery_jacket_life = APM_BATTERY_LIFE_UNKNOWN;
-+ *battery_bu_life = APM_BATTERY_LIFE_UNKNOWN;
-+
-+ return APM_SUCCESS;
-+}
-+
-+
-+int sharpsl_apm_get_bp_status(u_char *ac_line_status,
-+ u_char *battery_status,
-+ u_char *battery_flag,
-+ u_char *battery_percentage,
-+ u_short *battery_life)
-+{
-+ *ac_line_status = APM_AC_OFFLINE;//collie_ac_status;
-+
-+ if ( sharpsl_jacket_batt_exist ){
-+ /* In charging stage ,battery status */
-+ if ( charge_status ){
-+#ifdef TOSA_FOR_ENGLISH
-+ if ( IS_ENGLISH_MODEL() && (GET_CHARGE_FULL_STATE() == DECIDE_CHARGE_FULL) ) {
-+ *battery_status = SHARPSL_BATTERY_STATUS_HIGH;
-+ *battery_percentage = 100;
-+ *battery_flag = (1 << SHARPSL_BATTERY_STATUS_HIGH);
-+ }else{
-+#endif // TOSA_FOR_ENGLISH
-+ *battery_status = APM_BATTERY_STATUS_CHARGING;
-+ *battery_flag = (1 << 3);//0x08;
-+ /* set battery percentage */
-+ *battery_percentage = -1;
-+#ifdef TOSA_FOR_ENGLISH
-+ }
-+#endif // TOSA_FOR_ENGLISH
-+ }else{
-+ *battery_status = sharpsl_jacket_battery;
-+ if( !(*battery_status) ){
-+ *battery_flag = 0x01;
-+ }else if(*battery_status == APM_BATTERY_STATUS_VERY_LOW){
-+ *battery_flag = 0x20;
-+ }else{
-+ *battery_flag = *battery_status << 1;
-+ }
-+ /* set battery percentage */
-+ *battery_percentage = sharpsl_jacket_battery_percentage;
-+ }
-+ }else{
-+ *battery_status = APM_BATTERY_STATUS_FAULT;
-+ *battery_flag = APM_BATTERY_STATUS_FAULT << 1;
-+ /* set battery percentage */
-+ *battery_percentage = 0;
-+ }
-+
-+ /* set battery life */
-+ *battery_life = APM_BATTERY_LIFE_UNKNOWN;
-+
-+ return APM_SUCCESS;
-+}
-+
-+
-+/*** battery main thread ***********************************************************/
-+// waitms : waitms*10 msec wait
-+// flag : 0 : check battery w/o reflcting battery status.
-+// 1 : check battery w/ reflcting battery status.
-+// 2 : check battery w/ refresh battery status.
-+void sharpsl_kick_battery_check(int before_waitms,int after_waitms,int flag)
-+{
-+ MainCntWk = MainCnt + 1;
-+
-+ // before check battery
-+ mdelay(before_waitms*10);
-+
-+ switch (flag) {
-+ case 0:
-+ tosa_battery_thread_main();
-+ break;
-+ case 1:
-+ if ( sharpsl_main_bk_flag == 0 ) {
-+ sharpsl_main_bk_flag = 1;
-+ tosa_battery_thread_main();
-+ sharpsl_main_bk_flag = 0;
-+ } else {
-+ tosa_battery_thread_main();
-+ }
-+ break;
-+ case 2:
-+ back_battery_status = -1;
-+ back_jacket_battery_status = -1;
-+ back_bu_battery_status = -1;
-+ tosa_battery_thread_main();
-+ break;
-+ }
-+
-+ // after check battery
-+ mdelay(after_waitms*10);
-+}
-+
-+static void tosa_request_off(void)
-+{
-+ is_enabled_off = 0;
-+ handle_scancode(SLKEY_OFF|KBDOWN , 1);
-+ mdelay(10);
-+ handle_scancode(SLKEY_OFF|KBUP , 0);
-+}
-+
-+static int tosa_battery_thread_main(void)
-+{
-+ // start battery check
-+ if ((jiffies > SHARPSL_BATTERY_CK_TIME) && (sharpsl_main_bk_flag == 0)) {
-+ sharpsl_main_bk_flag = 1;
-+ DPRINTK2("start check battery ! \n");
-+ }
-+
-+ // get ac status. if change ac status , chk main battery.
-+ sharpsl_ac_status = SHARPSL_AC_LINE_STATUS;
-+ if ( back_ac_status != sharpsl_ac_status ) {
-+ MainCntWk = MainCnt + 1; // chk battery
-+ sharpsl_change_battery_status = 1; // change status
-+ wake_up_interruptible(&battery_waitqueue);
-+ }
-+ back_ac_status = sharpsl_ac_status;
-+
-+ // get battery status.
-+ tosa_get_all_battery();
-+
-+ if ( sharpsl_ac_status == APM_AC_ONLINE ){
-+ set_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // non-limited
-+ tosa_jc_card_limit_sel = 0;
-+ }else if( !sharpsl_jacket_batt_exist ){
-+ reset_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // limited
-+ tosa_jc_card_limit_sel = 1;
-+ }else if(!sharpsl_main_bk_flag){
-+ //default.
-+ set_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // non-limited
-+ tosa_jc_card_limit_sel = 0;
-+ }else if (sharpsl_jacket_battery == SHARPSL_BATTERY_STATUS_VERYLOW ||
-+ sharpsl_jacket_battery == SHARPSL_BATTERY_STATUS_CRITICAL){
-+ reset_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // limited
-+ tosa_jc_card_limit_sel = 1;
-+ }else {
-+ set_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // non-limited
-+ tosa_jc_card_limit_sel = 0;
-+ }
-+
-+ // if battery is low , backlight driver become to save power.
-+ if ( ( ( sharpsl_main_battery == SHARPSL_BATTERY_STATUS_VERYLOW ) ||
-+ ( sharpsl_main_battery == SHARPSL_BATTERY_STATUS_CRITICAL ) ) &&
-+ ( (sharpsl_main_battery != back_battery_status) || (sharpsl_jacket_battery != back_jacket_battery_status) ) &&
-+ ( sharpsl_main_bk_flag ) &&
-+ ( ( !sharpsl_jacket_batt_exist ) || ( tosa_jc_card_limit_sel ) ) ) {
-+ SHARPSL_LIMIT_CONTRAST(SHARPSL_CAUTION_CONTRAST);
-+ } else if ( (sharpsl_main_battery != back_battery_status) ||
-+ (sharpsl_jacket_battery != back_jacket_battery_status) ) {
-+ SHARPSL_LIMIT_CONTRAST(SHARPSL_RESET_CONTRAST);
-+ }
-+
-+ back_battery_status = sharpsl_main_battery;
-+ back_jacket_battery_status = sharpsl_jacket_battery;
-+ back_bu_battery_status = sharpsl_bu_battery;
-+
-+ // good or ac in --> GOOD_COUNT
-+ // low or very low --> NOGOOD_COUNT
-+ if ( ( sharpsl_main_battery == SHARPSL_BATTERY_STATUS_HIGH ) || ( sharpsl_ac_status == APM_AC_ONLINE ) )
-+ MainCnt = SHARPSL_MAIN_GOOD_COUNT;
-+ else
-+ MainCnt = SHARPSL_MAIN_NOGOOD_COUNT;
-+ DPRINTK("[BATT] MainCnt = %d\n",MainCnt);
-+
-+ if(tosa_jacket_status_change && sharpsl_main_bk_flag){
-+ int battlow = 1;
-+
-+ tosa_jacket_status_change = 0; // status clear.
-+
-+ // main battery low irq control.
-+ if(tosa_check_main_batt_fatal()){
-+ DPRINTK2("[BATT] IRQ: Disable BAT0\n");
-+ disable_irq(IRQ_GPIO_BAT0_LOW);
-+ }else{
-+ DPRINTK2("[BATT] IRQ: Enable BAT0\n");
-+ enable_irq(IRQ_GPIO_BAT0_LOW);
-+ battlow = 0;
-+ }
-+
-+ // jacket battery low irq control.
-+ if(sharpsl_jacket_batt_exist){
-+ if(tosa_check_jacket_batt_fatal()){
-+ // jacket battery is fatal.
-+ DPRINTK2("[BATT] IRQ: Disable BAT1 (jacket battery fatal)\n");
-+ disable_irq(IRQ_GPIO_BAT1_LOW);
-+ }else{
-+ DPRINTK2("[BATT] IRQ: Enable BAT1 (status change)\n");
-+ enable_irq(IRQ_GPIO_BAT1_LOW);
-+ battlow = 0;
-+ }
-+ }else{
-+ // no jacket.
-+ DPRINTK2("[BATT] IRQ: Disable BAT1 (no jacket battery)\n");
-+ disable_irq(IRQ_GPIO_BAT1_LOW);
-+ }
-+ if(battlow)
-+ tosa_request_off();
-+ }
-+
-+#ifdef TOSA_BATTERY_FAILSAFE_LOWBAT
-+ // check critical ( check fatal )
-+ if ( ( sharpsl_main_battery == SHARPSL_BATTERY_STATUS_CRITICAL ) &&
-+ is_enabled_off && sharpsl_main_bk_flag ) {
-+
-+ if( !sharpsl_jacket_batt_exist ){
-+ tosa_request_off();
-+ DPRINTK2("[BATT] <* Fail-Safe *> Fatal Off by ADC \n");
-+ }else{
-+ if( sharpsl_jacket_battery == SHARPSL_BATTERY_STATUS_CRITICAL ){
-+ tosa_request_off();
-+ DPRINTK2("[BATT] <* Fail-Safe *>Fatal Off by ADC \n");
-+ }
-+ }
-+ }
-+#endif
-+
-+ DPRINTK("[BATT] LOWBAT0=%d\n",tosa_check_main_batt_fatal());
-+ DPRINTK("[BATT] LOWBAT1=%d\n",tosa_check_jacket_batt_fatal());
-+
-+#ifdef TOSA_BATTERY_FAILSAFE
-+ if( sharpsl_jacket_batt_exist ){
-+ // jacket battery exists. (main battery always exists.)
-+ if( sharpsl_main_bk_flag && is_enabled_off &&
-+ tosa_check_main_batt_fatal() && tosa_check_jacket_batt_fatal() ){
-+
-+ tosa_request_off();
-+ DPRINTK("Fatal Off by DETECTOR\n");
-+ }
-+ }else{
-+ if( sharpsl_main_bk_flag && is_enabled_off &&
-+ ( ( GPLR(GPIO_BAT0_LOW) & GPIO_bit(GPIO_BAT0_LOW) ) == 0 ) ){
-+ tosa_request_off();
-+ DPRINTK("Fatal Off by DETECTOR\n");
-+ }
-+ }
-+#endif
-+
-+ if(TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF){
-+ CHARGE_0_ON();
-+ }else{
-+ }
-+
-+#ifdef TOSA_FOR_ENGLISH
-+ if(IS_ENGLISH_MODEL() && sharpsl_main_bk_flag){
-+
-+ int detected_charge_full = 0;
-+
-+ // In other than the Japanese version,
-+ // the following processings are performed.
-+ // Charging LED is switched off on a full charge.
-+
-+ switch(GET_CHARGE_FULL_STATE()){
-+ case DISCONNECT_AC:
-+ DPRINTK5("DISCONNECT_AC\n");
-+ if( sharpsl_ac_status == APM_AC_ONLINE ){
-+ DPRINTK5("* (%d) ac in !\n",tosa_charge_full_state);
-+ SET_CHARGE_FULL_STATE(CONNECT_AC);
-+ }
-+ break;
-+ case CONNECT_AC:
-+ DPRINTK5("CONNECT_AC\n");
-+ if( sharpsl_ac_status == APM_AC_OFFLINE ){
-+ DPRINTK5("* (%d) ac out !\n",tosa_charge_full_state);
-+ SET_CHARGE_FULL_STATE(DISCONNECT_AC);
-+ break;
-+ }
-+
-+ DPRINTK5("* (%d) ac in !\n",tosa_charge_full_state);
-+ DPRINTK5("* TC6393_SYS_GPOOECR1 = %08x\n",TC6393_SYS_REG(TC6393_SYS_GPOOECR1));
-+ DPRINTK5("* TC6393_SYS_GPODSR1 = %08x\n",TC6393_SYS_REG(TC6393_SYS_GPODSR1));
-+ tosa_decide_charge_full_counter = 0;
-+ detected_charge_full = SHARPSL_MAIN_BATT_FULL;
-+ DPRINTK5("* (%d) main charge full = %d!\n",tosa_charge_full_state,detected_charge_full);
-+ if( detected_charge_full && sharpsl_jacket_exist && sharpsl_jacket_batt_exist ){
-+ detected_charge_full = SHARPSL_JACKET_BATT_FULL;
-+ DPRINTK5("* (%d) jacket charge full = %d!\n",tosa_charge_full_state,detected_charge_full);
-+ }
-+ if( detected_charge_full ){
-+ SET_CHARGE_FULL_STATE(DETECT_CHARGE_FULL);
-+ tosa_decide_charge_full_counter = jiffies;
-+ break;
-+ }
-+ break;
-+ case DETECT_CHARGE_FULL:
-+ DPRINTK5("DETECT_CHARGE_FULL !\n",tosa_charge_full_state);
-+ DPRINTK5("* TC6393_SYS_GPOOECR1 = %08x\n",TC6393_SYS_REG(TC6393_SYS_GPOOECR1));
-+ DPRINTK5("* TC6393_SYS_GPODSR1 = %08x\n",TC6393_SYS_REG(TC6393_SYS_GPODSR1));
-+ if( sharpsl_ac_status == APM_AC_OFFLINE ){
-+ DPRINTK5("* (%d) ac out !\n",tosa_charge_full_state);
-+ SET_CHARGE_FULL_STATE(DISCONNECT_AC);
-+ break;
-+ }
-+ DPRINTK5("* (%d) c = %d \n",tosa_charge_full_state,(jiffies - tosa_decide_charge_full_counter));
-+ detected_charge_full = SHARPSL_MAIN_BATT_FULL;
-+ DPRINTK5("* (%d) main charge full = %d!\n",tosa_charge_full_state,detected_charge_full);
-+ if( detected_charge_full && sharpsl_jacket_exist && sharpsl_jacket_batt_exist ){
-+ detected_charge_full = SHARPSL_JACKET_BATT_FULL;
-+ DPRINTK5("* (%d) jacket charge full = %d!\n",tosa_charge_full_state,detected_charge_full);
-+ }
-+ if( !detected_charge_full ){
-+ DPRINTK5("* (%d) canceled charge full !\n",tosa_charge_full_state);
-+ SET_CHARGE_FULL_STATE(CONNECT_AC);
-+ break;
-+ }
-+
-+ if((jiffies - tosa_decide_charge_full_counter) > TOSA_DECIDE_CHARGE_FULL_COUNTER){
-+ DPRINTK5("* (%d) fixed charge full !\n",tosa_charge_full_state);
-+ CHARGE_LED_OFF();
-+ SET_CHARGE_FULL_STATE(DECIDE_CHARGE_FULL);
-+ sharpsl_change_battery_status = 1;
-+ wake_up_interruptible(&battery_waitqueue);
-+ break;
-+ }
-+ break;
-+ case DECIDE_CHARGE_FULL:
-+ DPRINTK5("DECIDE_CHARGE_FULL !\n",tosa_charge_full_state);
-+ if( sharpsl_ac_status == APM_AC_OFFLINE ){
-+ DPRINTK5("* (%d)ac out !\n",tosa_charge_full_state);
-+ CHARGE_LED_OFF();
-+ SET_CHARGE_FULL_STATE(DISCONNECT_AC);
-+ break;
-+ }
-+ detected_charge_full = SHARPSL_MAIN_BATT_FULL;
-+ DPRINTK5("* (%d) main charge full = %d!\n",tosa_charge_full_state,detected_charge_full);
-+ if( detected_charge_full && sharpsl_jacket_exist && sharpsl_jacket_batt_exist ){
-+ detected_charge_full = SHARPSL_JACKET_BATT_FULL;
-+ DPRINTK5("* (%d) jacket charge full = %d!\n",tosa_charge_full_state,detected_charge_full);
-+ }
-+ if( !detected_charge_full ){
-+ DPRINTK5("* (%d)canceled charge full !\n",tosa_charge_full_state);
-+ CHARGE_LED_ON();
-+ SET_CHARGE_FULL_STATE(CONNECT_AC);
-+ sharpsl_change_battery_status = 1;
-+ wake_up_interruptible(&battery_waitqueue);
-+ break;
-+ }
-+ break;
-+ default:
-+ DPRINTK5("* (%d)error state !\n",tosa_charge_full_state);
-+ SET_CHARGE_FULL_STATE(DISCONNECT_AC);
-+ sharpsl_change_battery_status = 1;
-+ wake_up_interruptible(&battery_waitqueue);
-+ break;
-+ }
-+ }
-+#endif // TOSA_FOR_ENGLISH
-+ return 0;
-+}
-+
-+
-+static int tosa_battery_thread(void* unused)
-+{
-+ strcpy(current->comm, "sharpsl_bat");
-+ sharpsl_check_time = SHARPSL_BATCHK_TIME;
-+
-+ while(1) {
-+ interruptible_sleep_on_timeout((wait_queue_head_t*)&battery_queue, sharpsl_check_time );
-+
-+ // AC adapter is inserted , but charging not start.
-+ // SW can not confirm inserted AC adapter, so kick !
-+ if ( ( charge_status == 0 ) && ( sharpsl_ac_status == APM_AC_ONLINE )) {
-+ wake_up(&charge_on_queue);
-+ } else if ( ( charge_status == 1 ) && ( sharpsl_ac_status == APM_AC_OFFLINE )) {
-+ wake_up(&charge_off_queue);
-+ }
-+
-+ /* check battery ! */
-+ tosa_battery_thread_main();
-+ }
-+ return 0;
-+}
-+
-+
-+
-+// TOSA-FUNCTIONS
-+
-+static void tosa_charge_on_off(int nsel,int on)
-+{
-+ switch(nsel) {
-+ case SEL_MAIN:
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_CHARGE_OFF;
-+ if(on){
-+ if((TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF) != TC6393_CHARGE_OFF){
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_CHARGE_OFF;
-+ mdelay(1);
-+ }
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_CHARGE_OFF;
-+ mdelay(1);
-+ }else{
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_CHARGE_OFF;
-+ }
-+ break;
-+ case SEL_JACKET:
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_CHARGE_OFF_JC;
-+ if(on){
-+ if((TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF_JC) != TC6393_CHARGE_OFF_JC){
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_CHARGE_OFF_JC;
-+ mdelay(1);
-+ }
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_CHARGE_OFF_JC;
-+ mdelay(1);
-+ }else{
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_CHARGE_OFF_JC;
-+ }
-+ break;
-+ default:
-+ printk("%s: parameter error !\n",__func__);
-+ break;
-+ }
-+}
-+
-+//
-+// 0:main 1:jacket 2:backup
-+//
-+static int tosa_get_sel_battery(int nsel) //[Fix]
-+{
-+ int i = 0;
-+ BATTERY_THRESH *thresh;
-+ int voltage;
-+
-+ while(1) {
-+ voltage = tosa_read_battery(nsel);
-+ if ( voltage > 0 ) break;
-+ if ( i++ > 5 ) {
-+ switch(nsel) {
-+ case SEL_MAIN:
-+ voltage = sharpsl_main_battery_thresh_fl[0].voltage + TOSA_BATTERY_AD_OFFSET;
-+ break;
-+ case SEL_JACKET:
-+ voltage = sharpsl_jacket_battery_thresh_fl[0].voltage + TOSA_BATTERY_AD_OFFSET;
-+ break;
-+ case SEL_BU:
-+ voltage = sharpsl_bu_battery_thresh_fl[0].voltage + TOSA_BATTERY_AD_OFFSET;
-+ break;
-+ }
-+ printk("please fix me! can not read battery[%d] \n",nsel);
-+ break;
-+ }
-+ }
-+
-+ voltage = tosa_cnv_battery(nsel,voltage);
-+ thresh = tosa_get_sel_level(nsel,voltage);
-+
-+ switch(nsel) {
-+ case SEL_MAIN:
-+ if ( sharpsl_main_bk_flag == 0 ) {
-+ return sharpsl_main_battery;
-+ }
-+ sharpsl_main_battery = thresh->status;
-+ sharpsl_main_battery_percentage = thresh->percentage;
-+ break;
-+ case SEL_JACKET:
-+ if ( sharpsl_main_bk_flag == 0 ) {
-+ return sharpsl_jacket_battery;
-+ }
-+ sharpsl_jacket_battery = thresh->status;
-+ sharpsl_jacket_battery_percentage = thresh->percentage;
-+ break;
-+ case SEL_BU:
-+ sharpsl_bu_battery = thresh->status;
-+ sharpsl_bu_battery_percentage = thresh->percentage;
-+ break;
-+ }
-+
-+ // Value is kept until it will operate OFF and AC, once low AD comes out.
-+ switch(nsel){
-+ case SEL_MAIN:
-+ if ( sharpsl_main_battery_percentage < sharpsl_main_percent_bk ) {
-+ sharpsl_main_status_bk = sharpsl_main_battery;
-+ sharpsl_main_percent_bk = sharpsl_main_battery_percentage;
-+
-+ sharpsl_change_battery_status = 1;
-+ wake_up_interruptible(&battery_waitqueue);
-+ } else {
-+ sharpsl_main_battery = sharpsl_main_status_bk;
-+ sharpsl_main_battery_percentage = sharpsl_main_percent_bk;
-+ }
-+ return sharpsl_main_battery;
-+ break;
-+ case SEL_JACKET:
-+ if ( sharpsl_jacket_battery_percentage < sharpsl_jacket_percent_bk) {
-+ sharpsl_jacket_status_bk = sharpsl_jacket_battery;
-+ sharpsl_jacket_percent_bk = sharpsl_jacket_battery_percentage;
-+
-+ sharpsl_change_battery_status = 1;
-+ wake_up_interruptible(&battery_waitqueue);
-+ } else {
-+ sharpsl_jacket_battery = sharpsl_jacket_status_bk;
-+ sharpsl_jacket_battery_percentage = sharpsl_jacket_percent_bk;
-+ }
-+ return sharpsl_jacket_battery;
-+ break;
-+ case SEL_BU:
-+ if ( sharpsl_bu_battery_percentage < sharpsl_bu_percent_bk ) {
-+ sharpsl_bu_status_bk = sharpsl_bu_battery;
-+ sharpsl_bu_percent_bk = sharpsl_bu_battery_percentage;
-+
-+ sharpsl_change_battery_status = 1;
-+ wake_up_interruptible(&battery_waitqueue);
-+ } else {
-+ sharpsl_bu_battery = sharpsl_bu_status_bk;
-+ sharpsl_bu_battery_percentage = sharpsl_bu_percent_bk;
-+ }
-+ return sharpsl_bu_battery;
-+ break;
-+ }
-+ return sharpsl_main_battery;
-+}
-+
-+// 0:main 1:jacket 2:backup
-+static int tosa_read_battery(int nsel) //[Fix]
-+{
-+ int voltage = -1;
-+
-+ switch (nsel){
-+ case SEL_MAIN:
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= (TC6393_BAT0_V_ON | TC6393_BAT1_V_ON | TC6393_BAT_SW_ON);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT1_V_ON | TC6393_BAT_SW_ON);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT0_V_ON;
-+ mdelay(TOSA_BATTERY_READ_WAIT_TIME);
-+ voltage = tosa_get_dac_value(BATT_V);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT0_V_ON | TC6393_BAT1_V_ON | TC6393_BAT_SW_ON);
-+ DPRINTK("[BATT] main voltage = %d \n",voltage);
-+ break;
-+ case SEL_JACKET:
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= (TC6393_BAT0_V_ON | TC6393_BAT1_V_ON | TC6393_BAT_SW_ON);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT0_V_ON | TC6393_BAT_SW_ON);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT1_V_ON;
-+ mdelay(TOSA_BATTERY_READ_WAIT_TIME);
-+ voltage = tosa_get_dac_value(BATT_V);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT0_V_ON | TC6393_BAT1_V_ON | TC6393_BAT_SW_ON);
-+ DPRINTK("[BATT] jacket voltage = %d \n",voltage);
-+ break;
-+ case SEL_BU:
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= (TC6393_BU_CHRG_ON);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= (TC6393_BU_CHRG_ON);
-+ mdelay(TOSA_BATTERY_READ_WAIT_TIME);
-+ voltage = tosa_get_dac_value(BU_V);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BU_CHRG_ON;
-+ DPRINTK("[BATT] backup voltage = %d \n",voltage);
-+ break;
-+ default:
-+ printk("%s: parameter error !\n",__func__);
-+ break;
-+ }
-+ return voltage;
-+}
-+
-+static int tosa_read_temp(int nsel) //[Fix]
-+{
-+ int temp = -1;
-+
-+ switch (nsel){
-+ case SEL_MAIN:
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_BAT0_TH_ON | TC6393_BAT1_TH_ON;
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BAT0_TH_ON;
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT1_TH_ON;
-+ mdelay(TOSA_TEMP_READ_WAIT_TIME);
-+ temp = tosa_get_dac_value(BATT_TH);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT0_TH_ON|TC6393_BAT1_TH_ON);
-+ break;
-+ case SEL_JACKET:
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_BAT0_TH_ON | TC6393_BAT1_TH_ON;
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BAT1_TH_ON;
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT0_TH_ON;
-+ mdelay(TOSA_TEMP_READ_WAIT_TIME);
-+ temp = tosa_get_dac_value(BATT_TH);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT0_TH_ON|TC6393_BAT1_TH_ON);
-+ break;
-+ default:
-+ printk("%s: parameter error !\n",__func__);
-+ break;
-+ }
-+ return temp;
-+}
-+
-+static int tosa_read_battery_avg(int nsel)
-+{
-+ int temp,i;
-+ int buff[5];
-+
-+ for(i=0;i<5;i++) {
-+ buff[i] = tosa_read_battery(nsel);
-+ }
-+ temp = get_select_val(buff);
-+ return temp;
-+}
-+
-+static int tosa_read_temp_avg(int nsel) //[Fix]
-+{
-+ int temp,i;
-+ int buff[5];
-+
-+ for(i=0;i<5;i++) {
-+ buff[i] = tosa_read_temp(nsel);
-+ }
-+ temp = get_select_val(buff);
-+ return temp;
-+}
-+
-+static int tosa_check_battery_error(int nsel,int thresh)
-+{
-+ int temp;
-+
-+ if ( in_interrupt() ) {
-+ printk("%s: call in interrupt.\n",__func__);
-+ return 1;
-+ }
-+ temp = tosa_read_battery_avg(nsel);
-+
-+ if ( temp < thresh ) return 1; // (1) battery error!
-+
-+ return 0; // (0) battery ok!
-+}
-+
-+static int tosa_check_battery_exist(int nsel,int thresh) //[Fix]
-+{
-+ int temp;
-+
-+ if ( in_interrupt() ) {
-+ printk("%s: call in interrupt.<nsel:%d>\n",__func__,nsel);
-+ return 1;
-+ }
-+ temp = tosa_read_temp_avg(nsel);
-+ DPRINTK3("[BATT] batt exist check <nsel = %d, temp = %d>\n",nsel,temp);
-+
-+ if ( temp > thresh ) return 1; // (1) not exist
-+
-+ return 0; // (0) exist
-+}
-+
-+static int tosa_check_main_battery_error(void)
-+{
-+ // 0: not error , 1: error
-+ return tosa_check_battery_error(SEL_MAIN, TOSA_MAIN_BATTERY_ERR_THRESH);
-+}
-+
-+static int tosa_check_jacket_battery_error(void)
-+{
-+ // 0: not error , 1: error
-+ return tosa_check_battery_error(SEL_JACKET, TOSA_JACKET_BATTERY_ERR_THRESH);
-+}
-+
-+static int tosa_check_main_battery_not_exist(void) //[Fix]
-+{
-+#ifdef TOSA_BATTERY_SKIP
-+ return 0;
-+#endif //TOSA_BATTERY_SKIP
-+
-+ // 0: exist , 1: not exist
-+ return tosa_check_battery_exist(SEL_MAIN, TOSA_MAIN_BATTERY_EXIST_THRESH);
-+}
-+
-+static int tosa_check_jacket_battery_not_exist(void) //[Fix]
-+{
-+ // 0: exist , 1: not exist
-+ return tosa_check_battery_exist(SEL_JACKET, TOSA_JACKET_BATTERY_EXIST_THRESH);
-+}
-+
-+static int tosa_read_main_battery(void)
-+{
-+ return tosa_get_sel_battery(SEL_MAIN);
-+}
-+
-+static int tosa_read_jacket_battery(void)
-+{
-+ return tosa_get_sel_battery(SEL_JACKET);
-+}
-+
-+static int tosa_read_backup_battery(void)
-+{
-+ return tosa_get_sel_battery(SEL_BU);
-+}
-+
-+static int tosa_check_main_batt_fatal(void)
-+{
-+ int i;
-+ for(i=0;i<2;i++){
-+ udelay(1);
-+ if(!SHARPSL_MAIN_BATT_FATAL) return 0;
-+ }
-+ return 1; // (1) fatal
-+}
-+
-+static int tosa_check_jacket_batt_fatal(void)
-+{
-+ int i;
-+ for(i=0;i<2;i++){
-+ udelay(1);
-+ if(!SHARPSL_JACKET_BATT_FATAL) return 0;
-+ }
-+ return 1; // (1) fatal
-+}
-+
-+static void tosa_charge_start(void) //[Fix]
-+{
-+ if ( tosa_check_main_battery_not_exist() ) {
-+
-+ /* error led on */
-+ CHARGE_LED_ERR();
-+
-+ /* charge status flag reset */
-+ charge_status = 0;
-+
-+ } else {
-+
-+ /* led on */
-+ CHARGE_LED_OFF();
-+ CHARGE_LED_ON();
-+
-+ /* charge status flag set */
-+ charge_status = 1;
-+ }
-+ sharpsl_change_battery_status = 1;
-+ wake_up_interruptible(&battery_waitqueue);
-+}
-+
-+static void tosa_charge_stop(void) //[Fix]
-+{
-+ if ( tosa_check_main_battery_not_exist() ){
-+
-+ /* error led on */
-+ CHARGE_LED_ERR();
-+
-+ /* charge status flag reset */
-+ charge_status = 0;
-+
-+ }else{
-+ /* led off */
-+ CHARGE_LED_OFF();
-+
-+ /* charge status flag reset */
-+ charge_status = 0;
-+ }
-+ sharpsl_change_battery_status = 1;
-+ wake_up_interruptible(&battery_waitqueue);
-+}
-+
-+
-+static void tosa_reset_battery_info(void)
-+{
-+ sharpsl_main_status_bk = SHARPSL_BATTERY_STATUS_HIGH;
-+ sharpsl_main_percent_bk = 100;
-+ sharpsl_jacket_status_bk = SHARPSL_BATTERY_STATUS_HIGH;
-+ sharpsl_jacket_percent_bk = 100;
-+ sharpsl_bu_status_bk = SHARPSL_BATTERY_STATUS_HIGH;
-+ sharpsl_bu_percent_bk = 100;
-+
-+ sharpsl_ad_index_main = 0;
-+ sharpsl_ad_index_jacket = 0;
-+ sharpsl_ad_index_bu = 0;
-+}
-+
-+static int tosa_ac_line_status(int m_sec)
-+{
-+ int ac_status=(( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN) ) ? APM_AC_OFFLINE : APM_AC_ONLINE);
-+ int counter=0;
-+ if(m_sec == 0) return ac_status;
-+ while(1){
-+ mdelay(1);
-+ if(ac_status == (( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN) ) ? APM_AC_OFFLINE : APM_AC_ONLINE)){
-+ counter++;
-+ }else{
-+ ac_status = (( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN) ) ? APM_AC_OFFLINE : APM_AC_ONLINE);
-+ counter=0;
-+ }
-+ if(counter>m_sec) break;
-+ }
-+ return ac_status;
-+}
-+
-+//////////////////////
-+
-+void sharpsl_kick_battery_check_queue(void)
-+{
-+ MainCntWk = MainCnt + 1;
-+ wake_up(&battery_queue);
-+}
-+
-+void sharpsl_kick_jacket_check_queue(void)
-+{
-+ wake_up_interruptible(&jacket_chk_queue);
-+}
-+
-+void sharpsl_charge_start(void)
-+{
-+ tosa_charge_start();
-+}
-+
-+int sharpsl_get_main_battery(void)
-+{
-+ return tosa_read_main_battery();
-+}
-+
-+void sharpsl_request_dac_init(void)
-+{
-+ tosa_dac_init = 0;
-+}
-+
-+static int tosa_charge_on(void* unused)
-+{
-+
-+ // daemonize();
-+ strcpy(current->comm, "battchrgon");
-+ sigfillset(&current->blocked);
-+
-+ while(1) {
-+ interruptible_sleep_on(&charge_on_queue);
-+
-+ if (SHARPSL_AC_LINE_STATUS == APM_AC_OFFLINE) continue;
-+
-+ // flag clear
-+ tosa_reset_battery_info();
-+
-+ is_ac_adaptor = 1;
-+
-+ tosa_charge_start();
-+ }
-+ return 0;
-+}
-+
-+
-+static int tosa_charge_off(void* unused)
-+{
-+ // daemonize();
-+ strcpy(current->comm, "battchrgoff");
-+ sigfillset(&current->blocked);
-+
-+ while(1) {
-+ interruptible_sleep_on(&charge_off_queue);
-+
-+ if (SHARPSL_AC_LINE_STATUS == APM_AC_ONLINE) continue;
-+
-+ tosa_reset_battery_info();
-+
-+ is_ac_adaptor = 0;
-+
-+ tosa_charge_stop();
-+ }
-+ return 0;
-+}
-+
-+static int tosa_fatal_check(void* unused)
-+{
-+ int is_fatal;
-+
-+ // daemonize();
-+ strcpy(current->comm, "fatalchk");
-+ sigfillset(&current->blocked);
-+
-+ while(1) {
-+ interruptible_sleep_on(&fatal_chk_queue);
-+
-+ is_fatal=0;
-+
-+ DPRINTK2("[BATT] BAT0LOW OR BAT1LOW IRQ \n");
-+ if(tosa_check_main_batt_fatal()){
-+ disable_irq(IRQ_GPIO_BAT0_LOW);
-+ DPRINTK2("[BATT] IRQ: Disable BAT0\n");
-+ is_fatal = 1;
-+ }
-+ if(sharpsl_jacket_exist && sharpsl_jacket_batt_exist){
-+ if(tosa_check_jacket_batt_fatal()){
-+ disable_irq(IRQ_GPIO_BAT1_LOW);
-+ DPRINTK2("[BATT] IRQ: Disable BAT1\n");
-+ }else{
-+ is_fatal = 0;
-+ }
-+ }
-+
-+ if(is_fatal){
-+ DPRINTK2("[BATT] FATAL OFF !!!\n");
-+ tosa_request_off();
-+ }else{
-+ DPRINTK2("[BATT] FATAL OFF CANCEL !\n");
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int tosa_jacket_check(void* unused)
-+{
-+ int sts;
-+
-+ // daemonize();
-+ strcpy(current->comm, "jacketchk");
-+ sigfillset(&current->blocked);
-+
-+ while(1) {
-+ interruptible_sleep_on(&jacket_chk_queue);
-+
-+ sts = tosa_get_jacket_status();
-+ if (sts == 0){
-+ mod_timer(&jacket_kick_timer,
-+ jiffies + HZ / 100 * TOSA_JC_CHECK_WAIT_TIME);
-+ }else{
-+ sharpsl_kick_battery_check_queue();
-+ }
-+ }
-+ return 0;
-+}
-+
-+// card error ( System must eject the card )
-+// RET = 0:no error, bit0:pcmcia slot0, bit1:pcmcia slot1, bit2:sdslot0
-+int sharpsl_get_cardslot_error(void)
-+{
-+ int cardslot_err = tosa_cardslot_error;
-+ //printk("%s:\n",__func__);
-+ tosa_cardslot_error = 0; // clear
-+ return cardslot_err;
-+}
-+
-+/*** Int ***********************************************************************/
-+
-+static void tosa_jacket_kick_timer(void)
-+{
-+ sharpsl_kick_jacket_check_queue();
-+}
-+
-+static void sharpsl_ac_kick_timer(void)
-+{
-+ int level = tosa_ac_line_status(0);
-+ int match = 0;
-+ int err = 0;
-+
-+ while(1) {
-+ if ( level == tosa_ac_line_status(0) ) {
-+ match++;
-+ } else {
-+ level = tosa_ac_line_status(0);
-+ match = 0;
-+ err++;
-+ }
-+ if ( match > 1 ) break;
-+ if ( err > 50 ) {
-+ // if ac port is not stable , so use last port data.
-+ level = tosa_ac_line_status(0);
-+ printk("err : ac port\n");
-+ break;
-+ }
-+ }
-+
-+#if 1 // Hardware Issue.
-+ if ( charge_status == 1 && level == APM_AC_OFFLINE ){
-+ // AC IN -> OUT
-+ wake_up(&charge_off_queue);
-+ }else if ( charge_status == 0 && level == APM_AC_ONLINE ){
-+ // AC OUT -> IN
-+ wake_up(&charge_on_queue);
-+ }
-+#else
-+ if ( level == APM_AC_OFFLINE ) {
-+ /* High->Low : desert */
-+ wake_up(&charge_off_queue);
-+ } else {
-+ /* Low->High : assert */
-+ wake_up(&charge_on_queue);
-+ }
-+#endif
-+
-+ sharpsl_kick_battery_check_queue();
-+}
-+
-+static void tosa_jacket_interrupt(int irq, void *dummy, struct pt_regs *fp)
-+{
-+ mod_timer(&jacket_kick_timer, jiffies + HZ / 100);
-+}
-+
-+static void tosa_ac_interrupt(int irq, void *dummy, struct pt_regs *fp)
-+{
-+ mod_timer(&ac_kick_timer, jiffies + HZ / 100);
-+}
-+
-+static void tosa_main_batt_fatal_interrupt(int irq, void *dummy, struct pt_regs *fp)
-+{
-+ wake_up_interruptible(&fatal_chk_queue);
-+}
-+
-+static void tosa_jacket_batt_fatal_interrupt(int irq, void *dummy, struct pt_regs *fp)
-+{
-+ wake_up_interruptible(&fatal_chk_queue);
-+}
-+
-+/*** get adc *********************************************************************/
-+
-+static int tosa_cnv_battery(int nsel,int ad)
-+{
-+ int ad_val = 0;
-+ int ret = -1,i;
-+
-+ switch(nsel){
-+ case SEL_MAIN:
-+ if ( sharpsl_main_battery != SHARPSL_BATTERY_STATUS_HIGH ) {
-+ sharpsl_ad_index_main = 0;
-+ return ad;
-+ }
-+ sharpsl_ad_main[sharpsl_ad_index_main] = ad;
-+ sharpsl_ad_index_main++;
-+ if ( sharpsl_ad_index_main >= SHARPSL_CNV_VALUE_NUM ) {
-+ for(i=0;i<(SHARPSL_CNV_VALUE_NUM-1);i++)
-+ sharpsl_ad_main[i] = sharpsl_ad_main[i+1];
-+ sharpsl_ad_index_main = SHARPSL_CNV_VALUE_NUM -1;
-+ }
-+ for(i=0;i<sharpsl_ad_index_main;i++)
-+ ad_val += sharpsl_ad_main[i];
-+ ret = ( ad_val / sharpsl_ad_index_main );
-+ break;
-+ case SEL_JACKET:
-+ if ( sharpsl_jacket_battery != SHARPSL_BATTERY_STATUS_HIGH ) {
-+ sharpsl_ad_index_jacket = 0;
-+ return ad;
-+ }
-+ sharpsl_ad_jacket[sharpsl_ad_index_jacket] = ad;
-+ sharpsl_ad_index_jacket++;
-+ if ( sharpsl_ad_index_jacket >= SHARPSL_CNV_VALUE_NUM ) {
-+ for(i=0;i<(SHARPSL_CNV_VALUE_NUM-1);i++)
-+ sharpsl_ad_jacket[i] = sharpsl_ad_jacket[i+1];
-+ sharpsl_ad_index_jacket = SHARPSL_CNV_VALUE_NUM -1;
-+ }
-+ for(i=0;i<sharpsl_ad_index_jacket;i++)
-+ ad_val += sharpsl_ad_jacket[i];
-+ ret = ( ad_val / sharpsl_ad_index_jacket );
-+ break;
-+ case SEL_BU:
-+ if ( sharpsl_bu_battery != SHARPSL_BATTERY_STATUS_HIGH ) {
-+ sharpsl_ad_index_bu = 0;
-+ return ad;
-+ }
-+ sharpsl_ad_bu[sharpsl_ad_index_bu] = ad;
-+ sharpsl_ad_index_bu++;
-+ if ( sharpsl_ad_index_bu >= SHARPSL_CNV_VALUE_NUM ) {
-+ for(i=0;i<(SHARPSL_CNV_VALUE_NUM-1);i++)
-+ sharpsl_ad_bu[i] = sharpsl_ad_bu[i+1];
-+ sharpsl_ad_index_bu = SHARPSL_CNV_VALUE_NUM -1;
-+ }
-+ for(i=0;i<sharpsl_ad_index_bu;i++)
-+ ad_val += sharpsl_ad_bu[i];
-+ ret = ( ad_val / sharpsl_ad_index_bu );
-+ break;
-+ default:
-+ printk("%s: parameter error !\n",__func__);
-+ break;
-+ }
-+ return ret;
-+}
-+
-+static void tosa_get_all_battery(void) //[Fix]
-+{
-+ MainCntWk++;
-+
-+ if ( MainCntWk > MainCnt ) {
-+
-+ MainCntWk = 0;
-+
-+ // check main battery status.
-+ tosa_read_main_battery();
-+
-+ // check backup battery status.
-+ tosa_read_backup_battery();
-+
-+ if (sharpsl_jacket_exist && sharpsl_jacket_batt_exist){
-+ // jacket exists , and jacket's battery exists.
-+ // check jacket battery status.
-+ tosa_read_jacket_battery();
-+ DPRINTK3("[BATT] jacket-unit is existend, and battery is existent therein.\n");
-+ }else{
-+ if(!sharpsl_jacket_exist){
-+ DPRINTK3("[BATT] jacket-unit is non-existent.\n");
-+ }else{
-+ DPRINTK3("[BATT] jacket-unit is existent, but battery is non-existent therein.\n");
-+ }
-+ }
-+
-+ }else{
-+ DPRINTK("[BATT] MainCntWk = %d\n",MainCntWk);
-+ }
-+}
-+
-+static BATTERY_THRESH *tosa_get_sel_level(int nsel, int Volt )
-+{
-+ int i;
-+ BATTERY_THRESH *thresh;
-+
-+ //DPRINTK(" volt = %d \n",Volt);
-+
-+ switch(nsel){
-+ case SEL_MAIN:
-+ if (counter_step_contrast > 2)
-+ thresh = sharpsl_main_battery_thresh_fl;
-+ else
-+ thresh = sharpsl_main_battery_thresh_nofl;
-+ break;
-+ case SEL_JACKET:
-+ if (counter_step_contrast > 2)
-+ thresh = sharpsl_jacket_battery_thresh_fl;
-+ else
-+ thresh = sharpsl_jacket_battery_thresh_nofl;
-+ break;
-+ case SEL_BU:
-+ if (counter_step_contrast > 2)
-+ thresh = sharpsl_bu_battery_thresh_fl;
-+ else
-+ thresh = sharpsl_bu_battery_thresh_nofl;
-+ break;
-+ default:
-+ printk("%s: parameter error !\n",__func__);
-+ thresh = sharpsl_main_battery_thresh_fl;
-+ break;
-+ }
-+ for (i = 0; thresh[i].voltage > 0; i++) {
-+ if (Volt >= (thresh[i].voltage + TOSA_BATTERY_AD_OFFSET))
-+ return &thresh[i];
-+ }
-+ return &thresh[i];
-+}
-+
-+/*
-+ * Translate Analog signal to Digital data
-+ */
-+static int tosa_get_dac_value(int channel) //[Fix]
-+{
-+ unsigned short indata;
-+ int voltage;
-+
-+
-+ lock_FCS(POWER_MODE_BATTERY, 1);
-+
-+ battery_off_flag = 0;
-+
-+ if (tosa_dac_init == 0){
-+ ac97_write(AC97_TS_REG2, 0xc009);
-+ ac97_write(AC97_TS_REG1, 0x0030);
-+ //ac97_bit_set(AC97_ADITFUNC1, (1<<1));
-+ set_GPIO_mode(GPIO32_SDATA_IN1_AC97_MD);
-+ tosa_dac_init = 1;
-+ }
-+
-+ wm9712_power_mode_ts(WM9712_PWR_TP_CONV);
-+ if ((voltage = ac97_ad_input(channel,&indata)) == 0){
-+ voltage = (int)(indata & 0xfff);
-+ }
-+ wm9712_power_mode_ts(WM9712_PWR_TP_WAIT);
-+
-+#ifdef TOSA_BATTERY_SKIP
-+ voltage = 0xfff; // for TEST
-+#endif //TOSA_BATTERY_SKIP
-+
-+ lock_FCS(POWER_MODE_BATTERY, 0);
-+
-+ if ( battery_off_flag )
-+ voltage = -1;
-+
-+ return voltage;
-+}
-+
-+
-+static int get_select_val(int *val)
-+{
-+ int i,j,k,temp,sum = 0;
-+
-+ // Get MAX
-+ temp = val[0];
-+ j=0;
-+ for(i=1;i<5;i++) {
-+ if ( temp < val[i] ) { temp = val[i]; j = i; }
-+ }
-+
-+ // Get MIN
-+ temp = val[4];
-+ k=4;
-+ for(i=3;i>=0;i--) {
-+ if ( temp > val[i] ) { temp = val[i]; k = i; }
-+ }
-+
-+ for(i=0;i<5;i++) {
-+ if ( i == j || i == k ) continue;
-+ sum += val[i];
-+ }
-+ return ( sum / 3 );
-+}
-+
-+
-+/*** PM *************************************************************************/
-+
-+#ifdef CONFIG_PM
-+static int Sharpsl_battery_pm_callback(struct pm_dev *pm_dev, pm_request_t req, void *data)
-+{
-+ switch (req) {
-+ case PM_SUSPEND:
-+
-+ disable_irq(IRQ_GPIO_AC_IN);
-+ disable_irq(IRQ_GPIO_JACKET_DETECT);
-+#ifndef TOSA_BATTERY_SKIP
-+ disable_irq(IRQ_GPIO_BAT0_LOW);
-+ disable_irq(IRQ_GPIO_BAT1_LOW);
-+#endif
-+
-+ // flag clear
-+ tosa_reset_battery_info();
-+
-+ tosa_off_main_batt_full = 0;
-+ tosa_off_jacket_batt_full = 0;
-+ tosa_off_check_jacket_req = 0;
-+
-+ if ( !sharpsl_main_bk_flag )
-+ sharpsl_main_battery = SHARPSL_BATTERY_STATUS_HIGH;
-+
-+ battery_off_flag = 1;
-+
-+ CHARGE_LED_OFF();
-+ charge_status = 0;
-+ pass_charge_flag = 0;
-+
-+ apm_wakeup_src_mask |= ( GPIO_bit(GPIO_AC_IN) |
-+ GPIO_bit(GPIO_JACKET_DETECT) );
-+ apm_wakeup_src_mask &= ~( GPIO_bit(GPIO_BAT0_CRG) | GPIO_bit(GPIO_BAT1_CRG) );
-+
-+ // wake up by key
-+ apm_wakeup_src_mask |= GPIO_bit(0);
-+
-+#ifdef TOSA_OFF_CHARGE_FAILSAFE
-+ tosa_charge_full_enable = 0;
-+ tosa_charge_full_counter = 0;
-+ tosa_charge_full_main_batt = 0;
-+ tosa_charge_full_jacket_batt = 0;
-+#endif //TOSA_OFF_CHARGE_FAILSAFE
-+ break;
-+
-+ case PM_RESUME:
-+ is_enabled_off = 1;
-+ MainCntWk = MainCnt + 1; // chk battery
-+ back_battery_status = -1;
-+ back_jacket_battery_status = -1;
-+ back_bu_battery_status = -1;
-+ back_ac_status = -1;
-+ tosa_dac_init = 0;
-+ sharpsl_ad_index_main = 0;
-+ sharpsl_ad_index_jacket = 0;
-+ sharpsl_ad_index_bu = 0;
-+ tosa_off_check_jacket_req = 0;
-+#ifdef TOSA_FOR_ENGLISH
-+ if(IS_ENGLISH_MODEL()){
-+ SET_CHARGE_FULL_STATE(DISCONNECT_AC);
-+ tosa_decide_charge_full_counter = 0;
-+ }
-+#endif // TOSA_FOR_ENGLISH
-+
-+ DPRINTK("[BATT] kick ac check!\n");
-+ // AC insert , so kick the charging
-+ if (SHARPSL_AC_LINE_STATUS != APM_AC_OFFLINE) {
-+ wake_up(&charge_on_queue);
-+ } else {
-+ wake_up(&charge_off_queue);
-+ }
-+
-+ DPRINTK2("[BATT] kick jacket check!\n");
-+ tosa_get_jacket_status_for_on();
-+ tosa_off_jc_card_limit();
-+
-+ CHARGE_0_ON();
-+
-+ DPRINTK("[BATT] kick battery check!\n");
-+ sharpsl_kick_battery_check_queue();
-+
-+ DPRINTK("[BATT] enabled all irq!\n");
-+#ifndef TOSA_BATTERY_SKIP
-+ disable_irq(IRQ_GPIO_BAT1_LOW);
-+ disable_irq(IRQ_GPIO_BAT0_LOW);
-+#endif
-+ enable_irq(IRQ_GPIO_JACKET_DETECT);
-+ enable_irq(IRQ_GPIO_AC_IN);
-+ break;
-+ }
-+ return 0;
-+}
-+#endif
-+
-+/*** check fatal battery ************************************************/
-+// Fatal : 0
-+// OK : 1
-+unsigned short chkFatalBatt(void)
-+{
-+ int volt,thresh_mbat,thresh_jbat;
-+ int charge_value;
-+
-+ DPRINTK("[BATT] check fatal battery\n");
-+
-+ if (SHARPSL_AC_LINE_STATUS != APM_AC_OFFLINE ) {
-+ thresh_mbat = TOSA_MAIN_BATT_FATAL_ACIN_VOLT;
-+ thresh_jbat = TOSA_JACKET_BATT_FATAL_ACIN_VOLT;
-+ }else{
-+ thresh_mbat = TOSA_MAIN_BATT_FATAL_NOACIN_VOLT;
-+ thresh_jbat = TOSA_JACKET_BATT_FATAL_NOACIN_VOLT;
-+ }
-+
-+ charge_value = TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF; //Main
-+ CHARGE_0_OFF(); //Main
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_BAT_SW_ON;
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT_SW_ON;
-+ mdelay(TOSA_DISCHARGE_WAIT_TIME);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BAT_SW_ON;
-+
-+ volt = tosa_read_battery_avg(SEL_MAIN);
-+
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= charge_value;
-+ charge_value=0;
-+ mdelay(1);
-+
-+ DPRINTK3("[BATT] check batt exist(1)\n");
-+ if(tosa_check_jacket_battery_not_exist()){
-+ if( volt < thresh_mbat ){
-+ DPRINTK("[BATT] main fatal battery (no jacket)\n");
-+ return 0; // MAIN BATTERY FATAL
-+ }
-+ }else{
-+ if( volt < thresh_mbat ){
-+
-+ charge_value = TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF_JC; //Jacket
-+ CHARGE_1_OFF(); //Jacket
-+ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_BAT_SW_ON;
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT_SW_ON;
-+ mdelay(TOSA_DISCHARGE_WAIT_TIME);
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BAT_SW_ON;
-+
-+ volt = tosa_read_battery_avg(SEL_JACKET);
-+
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= charge_value;
-+ mdelay(1);
-+
-+ if( volt < thresh_jbat ){
-+ DPRINTK("[BATT] main & jacket fatal battery\n");
-+ return 0; // MAIN & JACKET BATTERY FATAL
-+ }
-+ }
-+ }
-+ DPRINTK("[BATT] not fatal\n");
-+
-+ return 1; // OK
-+}
-+
-+
-+/*** for suspend hook ***********************************************************/
-+#ifdef CONFIG_PM
-+int sharpsl_off_charge_battery(void)
-+{
-+ if ( tosa_check_main_battery_not_exist() ) {
-+
-+ DPRINTK("No main battery !\n");
-+
-+ // battery error!
-+ CHARGE_LED_ERR_OFF();
-+ CHARGE_LED_ERR();
-+ charge_status = 0; /* charge status flag reset */
-+
-+ // if error is occured , so led is blinking continue...
-+ while(1) {
-+ if (SHARPSL_AC_LINE_STATUS == APM_AC_OFFLINE) break;
-+ }
-+
-+ CHARGE_LED_OFF();
-+ return -1;
-+
-+ } else {
-+
-+ // charge start!
-+ CHARGE_LED_OFF();
-+ CHARGE_LED_ON(); /* led on */
-+ charge_status = 1; /* charge status flag set */
-+
-+ }
-+ return 0;
-+}
-+
-+static void tosa_off_jc_card_limit(void)
-+{
-+ if(SHARPSL_AC_LINE_STATUS != APM_AC_OFFLINE){
-+ // ac-in.
-+ set_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // non-limited
-+ tosa_jc_card_limit_sel = 0;
-+ }else if(sharpsl_jacket_exist && sharpsl_jacket_batt_exist){
-+ // ac-out, and jacket exist.
-+ int volt = tosa_read_battery_avg(SEL_JACKET);
-+ if(volt > TOSA_JACKET_BATT_FATAL_NOACIN_VOLT){
-+ set_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // non-limited
-+ tosa_jc_card_limit_sel = 0;
-+ }else{
-+ reset_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // limited
-+ tosa_jc_card_limit_sel = 1;
-+ }
-+ }else{
-+ reset_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // limited
-+ tosa_jc_card_limit_sel = 1;
-+ }
-+}
-+
-+int tosa_check_charge_full(int cktime)
-+{
-+ int time;
-+ unsigned int ret;
-+ int is_all_battery_full;
-+ int jacket_state, batt_sw_state;
-+ extern int sharpsl_wakeup_check_charge(void);
-+ time = RCNR;
-+
-+ jacket_state = (GPLR(GPIO_JACKET_DETECT) & GPIO_bit(GPIO_JACKET_DETECT));
-+ batt_sw_state = SHARPSL_BAT_LOCKED_STATUS;
-+
-+#if CHECK_LOG
-+ printk("*** CHG_CHK_START: time=%d(%08x) ***\n",RCNR-gStartTime,RCNR);
-+ printk(" MAIN AD: %08x JACKET AD %08x\n",tosa_read_battery(SEL_MAIN),tosa_read_battery(SEL_JACKET));
-+ printk(" TC6393_SYS_GPODSR1=%x\n",TC6393_SYS_REG(TC6393_SYS_GPODSR1));
-+#endif
-+
-+ if(TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF_JC /*Jacket*/){
-+ if(sharpsl_jacket_batt_exist){
-+#if CHECK_LOG
-+ printk(" jacket battery charge on !\n");
-+#endif
-+ CHARGE_1_ON();
-+ }
-+#if CHECK_LOG
-+ printk(" TC6393_SYS_GPODSR1=%x\n",TC6393_SYS_REG(TC6393_SYS_GPODSR1));
-+#endif
-+ }
-+
-+#ifdef TOSA_OFF_CHARGE_FAILSAFE
-+ if(!tosa_charge_full_enable){
-+ tosa_charge_full_enable = 1; // @ Start!!
-+ tosa_charge_full_counter = RCNR; // @ Reset Failsafe Counter.
-+ tosa_charge_full_main_batt = tosa_read_battery(SEL_MAIN);
-+ if(sharpsl_jacket_batt_exist)
-+ tosa_charge_full_jacket_batt = tosa_read_battery(SEL_JACKET);
-+#if CHECK_LOG
-+ printk("*** CHG_FAILSAFE_COUNTER_START: time=%d(%08x) ***\n",RCNR-tosa_charge_full_counter,RCNR);
-+#endif
-+ }
-+#endif //TOSA_OFF_CHARGE_FAILSAFE
-+
-+ while(1){
-+ int jacket_batt_exist_now = 0;
-+
-+ // ac out ?
-+ if ( SHARPSL_AC_LINE_STATUS == APM_AC_OFFLINE ) {
-+ charge_status = 0;
-+ CHARGE_LED_OFF();
-+ //printk("%s: [go off] ac out !\n",__func__);
-+#ifdef TOSA_OFF_CHARGE_FAILSAFE
-+ tosa_charge_full_enable = 0; // @ Stop!!
-+#endif
-+ ret = -1;
-+ break;
-+ }
-+
-+ // check wakeup interrupt.
-+ if ( ( ret = sharpsl_wakeup_check_charge() ) != 1 ) {
-+ break;
-+ }
-+
-+ // timeout ?
-+ if ( ( RCNR - time ) > SHARPSL_TOSA_WAIT_CO_TIME ) {
-+ //printk("%s: [go off] finished! not full !\n",__func__);
-+ ret = -1;
-+ break;
-+ }
-+
-+ // battery switch status change ?
-+ if(batt_sw_state != SHARPSL_BAT_LOCKED_STATUS){
-+ //printk("%s: [go off] battery switch status is changed !\n",__func__);
-+ ret = -1;
-+ break;
-+ }
-+
-+ // jacket detect status change ?
-+ if(jacket_state != (GPLR(GPIO_JACKET_DETECT) & GPIO_bit(GPIO_JACKET_DETECT))) {
-+ tosa_get_jacket_status_for_on();
-+#ifdef TOSA_OFF_CHARGE_FAILSAFE
-+ tosa_charge_full_enable = 0; // @ Stop!!
-+#endif
-+ //printk("%s: [go off] jacket status is changed !\n",__func__);
-+ ret = -1;
-+ break;
-+ }
-+
-+ // battery full ?
-+ tosa_off_main_batt_full = SHARPSL_MAIN_BATT_FULL;
-+ tosa_off_jacket_batt_full = 0;
-+ if(sharpsl_jacket_exist && sharpsl_jacket_batt_exist){
-+ tosa_off_jacket_batt_full = SHARPSL_JACKET_BATT_FULL;
-+ }
-+ is_all_battery_full = 0;
-+
-+#ifdef TOSA_OFF_CHARGE_FAILSAFE
-+ if(tosa_charge_full_enable){
-+ if((RCNR - tosa_charge_full_counter) > (TOSA_CHARGE_FULL_MAX_TIME-cktime)){
-+#if CHECK_LOG
-+ printk("*** ALL BATTERY is FULL by FAILSAFE.***\n");
-+ printk(" CHG_FAILSAFE_COUNTER: time=%d\n",RCNR - tosa_charge_full_counter);
-+#endif
-+ is_all_battery_full = 1;
-+ }
-+ }
-+#endif //TOSA_OFF_CHARGE_FAILSAFE
-+
-+ if(charge_status && tosa_off_main_batt_full){
-+ // main battery full !
-+#if CHECK_LOG
-+ printk("\n");
-+ printk(" MAIN BATTERY is FULL.\n");
-+#endif
-+ if(sharpsl_jacket_batt_exist){
-+ if(tosa_off_jacket_batt_full){
-+ // all battery full !
-+ is_all_battery_full = 1;
-+#if CHECK_LOG
-+ printk(" JACKET BATTERY is FULL.\n");
-+#endif
-+ }
-+ }else{
-+ // all battery full ! (non-jacket)
-+ is_all_battery_full = 1;
-+#if CHECK_LOG
-+ printk(" JACKET BATTERY is NON.\n");
-+#endif
-+ }
-+ }
-+#if CHECK_LOG
-+ else{
-+ printk(".");
-+ }
-+#endif
-+ if(is_all_battery_full){
-+
-+ // ac out ?
-+ if ( SHARPSL_AC_LINE_STATUS == APM_AC_OFFLINE ) {
-+ continue;
-+ }
-+
-+ // all battery full !!!!
-+ //printk("%s: [go off] all battery full !\n",__func__);
-+#if CHECK_LOG
-+ printk("\n");
-+ printk(" CHG_FAILSAFE_COUNTER: time=%d\n",RCNR - tosa_charge_full_counter);
-+ printk("*** CHG_CHK_END: t=%d (%08x) ***\n",RCNR-gStartTime,RCNR);
-+ printk("*** ALL BATTERY is FULL!! ***\n");
-+#endif
-+ CHARGE_LED_OFF(); // led off
-+ charge_status = 0;
-+ pass_charge_flag = 1;
-+ ret = -1; // go off.
-+ return ret;
-+ }
-+ }
-+
-+#ifdef TOSA_OFF_CHARGE_FAILSAFE
-+ if(tosa_charge_full_enable){
-+ int batt_now;
-+
-+#if CHECK_LOG
-+ printk("\n");
-+ printk(" MAIN VOLTAGE CHECK: ");
-+#endif
-+ batt_now = tosa_read_battery(SEL_MAIN);
-+ if((tosa_charge_full_main_batt - batt_now) >= TOSA_CHARGE_FULL_DIFF_VOLT){
-+#if CHECK_LOG
-+ printk("[NG] (%d->%d)\n",tosa_charge_full_main_batt,batt_now);
-+ printk(" * RESTART: time=%d \n",RCNR);
-+#endif
-+ tosa_charge_full_counter = RCNR; // @ Reset Failsafe Counter.
-+ }
-+#if CHECK_LOG
-+ else{
-+ printk("[OK] (%d->%d)\n",tosa_charge_full_main_batt,batt_now);
-+ }
-+#endif
-+ tosa_charge_full_main_batt = batt_now;
-+
-+#if CHECK_LOG
-+ printk(" JACKET VOLTAGE CHECK: ");
-+#endif
-+ if(sharpsl_jacket_batt_exist){
-+ batt_now = tosa_read_battery(SEL_JACKET);
-+ if((tosa_charge_full_jacket_batt - batt_now) >= TOSA_CHARGE_FULL_DIFF_VOLT){
-+ tosa_charge_full_counter = RCNR; // @ Reset Failsafe Counter.
-+#if CHECK_LOG
-+ printk("[NG] (%d->%d)\n",tosa_charge_full_main_batt,batt_now);
-+ printk(" * RESTART: time=%d ***\n",RCNR);
-+#endif
-+ }
-+#if CHECK_LOG
-+ else{
-+ printk("[OK] (%d->%d)\n",tosa_charge_full_jacket_batt,batt_now);
-+ }
-+#endif
-+ tosa_charge_full_jacket_batt = batt_now;
-+ }
-+#if CHECK_LOG
-+ else{
-+ printk("[OK] (NON-JACKET)\n");
-+ }
-+#endif
-+ }
-+#endif //TOSA_OFF_CHARGE_FAILSAFE
-+
-+#ifdef TOSA_OFF_CHARGE_FAILSAFE
-+#if CHECK_LOG
-+ if(tosa_charge_full_enable){
-+ printk(" CHG_FAILSAFE_COUNTER: time=%d\n",RCNR - tosa_charge_full_counter);
-+ }
-+#endif
-+#endif
-+
-+#if CHECK_LOG
-+ printk("*** CHG_CHK_END: time=%d(%08x) ***\n",RCNR-gStartTime,RCNR);
-+ printk("\n");
-+#endif
-+
-+ pass_charge_flag = 0;
-+ return ret;
-+}
-+
-+void tosa_check_ac_and_jacket_state(void)
-+{
-+ int is_all_battery_full = 0;
-+
-+ if(!pass_charge_flag){
-+ if(SHARPSL_AC_LINE_STATUS != APM_AC_OFFLINE){
-+ sharpsl_off_charge_battery();
-+ charge_status = 1;
-+ CHARGE_LED_ON();
-+ }else{
-+ charge_status = 0;
-+ CHARGE_LED_OFF();
-+ }
-+ }
-+ if(!tosa_off_check_jacket_req){
-+ return;
-+ }
-+ tosa_off_check_jacket_req = 0;
-+ // restart charge.
-+ CHARGE_ON();
-+
-+ // check jacket.
-+ tosa_get_jacket_status_for_on();
-+ mdelay(100);
-+
-+ tosa_off_main_batt_full = 0;
-+ tosa_off_jacket_batt_full = 0;
-+ charge_status = 0;
-+
-+ if(SHARPSL_AC_LINE_STATUS != APM_AC_OFFLINE){
-+ // ac in.
-+ tosa_off_main_batt_full = SHARPSL_MAIN_BATT_FULL;
-+ if(sharpsl_jacket_exist && sharpsl_jacket_batt_exist){
-+ tosa_off_jacket_batt_full = SHARPSL_JACKET_BATT_FULL;
-+ }
-+ //sharpsl_off_charge_battery();
-+ charge_status = 1;
-+ CHARGE_LED_ON();
-+#if CHECK_LOG
-+ printk("*** CHG_START: time=0(%08x) ***\n",RCNR);
-+ gStartTime = RCNR;
-+ printk(" MAIN AD: %d JACKET AD %d\n",tosa_read_battery(SEL_MAIN),tosa_read_battery(SEL_JACKET));
-+#endif
-+ }else{
-+ // ac out.
-+ charge_status = 0;
-+ CHARGE_LED_OFF();
-+ }
-+
-+ tosa_off_jc_card_limit();
-+
-+ DPRINTK4("[BATT]sharpsl_jacket_exist = %d\n",sharpsl_jacket_exist);
-+ DPRINTK4("[BATT]sharpsl_jacket_batt_exist = %d\n",sharpsl_jacket_batt_exist);
-+ DPRINTK4("[BATT]charge_status = %d\n",charge_status);
-+ DPRINTK4("[BATT]main_batt_full = %d\n",tosa_off_main_batt_full);
-+ DPRINTK4("[BATT]jacket_batt_full = %d\n",tosa_off_jacket_batt_full);
-+
-+ pass_charge_flag = 0;
-+ return;
-+}
-+
-+void sharpsl_battery_charge_hook(int mode)
-+{
-+ switch (mode){
-+ case 0: // Main Battery Full
-+ DPRINTK4("[IRQ]main battery full.\n");
-+ break;
-+ case 1: // Charge Off
-+ DPRINTK4("[IRQ]ac out.\n");
-+ break;
-+ case 2: // Charge On
-+ DPRINTK4("[IRQ]ac in.\n");
-+ break;
-+ case 3: // Jacket Battery Full
-+ DPRINTK4("[IRQ]jacket battery full.\n");
-+ break;
-+ case 4: // Jacket Detect
-+ DPRINTK4("[IRQ]check jacket.\n");
-+ break;
-+ case 5:
-+ DPRINTK4("[IRQ]timer.(%d)\n",RCNR);
-+ tosa_check_ac_and_jacket_state();
-+ tosa_off_check_jacket_req = 0;
-+ return;
-+ break;
-+ default:
-+ return;
-+ break;
-+ }
-+#ifdef TOSA_OFF_CHARGE_FAILSAFE
-+ if(tosa_charge_full_enable){
-+ tosa_charge_full_enable = 0;
-+ }
-+#endif //TOSA_OFF_CHARGE_FAILSAFE
-+ tosa_off_check_jacket_req = 1;
-+ return;
-+}
-+
-+#endif /* CONFIG_PM */
-+
-+
-+/*** Config & Setup **********************************************************/
-+void battery_init(void)
-+{
-+ int err;
-+
-+ init_timer(&ac_kick_timer);
-+ ac_kick_timer.function = (void*)sharpsl_ac_kick_timer;
-+
-+ init_timer(&jacket_kick_timer);
-+ jacket_kick_timer.function = (void*)tosa_jacket_kick_timer;
-+
-+ GPDR(GPIO_AC_IN) &= ~GPIO_bit(GPIO_AC_IN);
-+ GPDR(GPIO_BAT0_CRG) &= ~GPIO_bit(GPIO_BAT0_CRG);
-+ GPDR(GPIO_BAT1_CRG) &= ~GPIO_bit(GPIO_BAT1_CRG);
-+
-+ GPDR(GPIO_BAT0_LOW) &= ~GPIO_bit(GPIO_BAT0_LOW);
-+ GPDR(GPIO_BAT1_LOW) &= ~GPIO_bit(GPIO_BAT1_LOW);
-+
-+ printk("SHARPSL_AC_LINE_STATUS=%x\n",SHARPSL_AC_LINE_STATUS);
-+
-+ /* Set transition detect */
-+ set_GPIO_IRQ_edge( GPIO_AC_IN , GPIO_BOTH_EDGES ); /* AC IN */
-+ set_GPIO_IRQ_edge( GPIO_JACKET_DETECT , GPIO_BOTH_EDGES );
-+#ifndef TOSA_BATTERY_SKIP
-+ set_GPIO_IRQ_edge( GPIO_BAT0_LOW , GPIO_FALLING_EDGE );
-+ set_GPIO_IRQ_edge( GPIO_BAT1_LOW , GPIO_FALLING_EDGE );
-+#endif
-+
-+ /* Register interrupt handler. */
-+ if ((err = request_irq(IRQ_GPIO_AC_IN, tosa_ac_interrupt,
-+ SA_INTERRUPT, "ACIN", tosa_ac_interrupt))) {
-+ printk("Could not get irq %d.\n", IRQ_GPIO_AC_IN);
-+ return;
-+ }
-+ if ((err = request_irq(IRQ_GPIO_JACKET_DETECT, tosa_jacket_interrupt,
-+ SA_INTERRUPT, "JACKET_DETECT", tosa_jacket_interrupt))) {
-+ printk("Could not get irq %d.\n", IRQ_GPIO_JACKET_DETECT);
-+ return;
-+ }
-+
-+#ifndef TOSA_BATTERY_SKIP
-+ if ((err = request_irq(IRQ_GPIO_BAT0_LOW, tosa_main_batt_fatal_interrupt,
-+ SA_INTERRUPT, "MAIN_FATAL", tosa_main_batt_fatal_interrupt))) {
-+ printk("Could not get irq %d.\n", IRQ_GPIO_BAT0_LOW);
-+ return;
-+ }
-+ disable_irq(IRQ_GPIO_BAT0_LOW);
-+
-+ if ((err = request_irq(IRQ_GPIO_BAT1_LOW, tosa_jacket_batt_fatal_interrupt,
-+ SA_INTERRUPT, "JACKET_FATAL", tosa_jacket_batt_fatal_interrupt))) {
-+ printk("Could not get irq %d.\n", IRQ_GPIO_BAT1_LOW);
-+ return;
-+ }
-+ disable_irq(IRQ_GPIO_BAT1_LOW);
-+#endif
-+
-+ /* regist to Misc driver */
-+ misc_register(&battery_device);
-+
-+ /* Make threads */
-+ kernel_thread(tosa_charge_on, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+ kernel_thread(tosa_charge_off, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+ kernel_thread(tosa_battery_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+ kernel_thread(tosa_fatal_check, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+ kernel_thread(tosa_jacket_check, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+
-+ tosa_get_jacket_status_for_on();
-+}
-+
-+
-+
-+#ifdef CONFIG_PROC_FS
-+struct proc_dir_entry *proc_batt;
-+
-+typedef struct sharpsl_battery_entry {
-+ int* addr;
-+ int def_value;
-+ char* name;
-+ char* description;
-+ unsigned short low_ino;
-+} sharpsl_battery_entry_t;
-+
-+static sharpsl_battery_entry_t sharpsl_battery_params[] = {
-+/* { addr, def_value, name, description }*/
-+ { &msglevel, 0, "msglevel", "debug message output level" },
-+ { &sharpsl_debug_flag , 0 , "dflag", "debug flag" },
-+ { &sharpsl_change_battery_status , 0 , "chg_status", "Change status" }
-+};
-+#define NUM_OF_BATTERY_ENTRY (sizeof(sharpsl_battery_params)/sizeof(sharpsl_battery_entry_t))
-+
-+static ssize_t sharpsl_battery_read_params(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ int i_ino = (file->f_dentry->d_inode)->i_ino;
-+ char outputbuf[15];
-+ int count;
-+ int i;
-+ sharpsl_battery_entry_t *current_param = NULL;
-+
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ for (i=0; i<NUM_OF_BATTERY_ENTRY; i++) {
-+ if (sharpsl_battery_params[i].low_ino==i_ino) {
-+ current_param = &sharpsl_battery_params[i];
-+ break;
-+ }
-+ }
-+ if (current_param==NULL) {
-+ return -EINVAL;
-+ }
-+ count = sprintf(outputbuf, "0x%08X\n",
-+ *((volatile Word *) current_param->addr));
-+ *ppos += count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t sharpsl_battery_write_params(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ int i_ino = (file->f_dentry->d_inode)->i_ino;
-+ sharpsl_battery_entry_t *current_param = NULL;
-+ int i;
-+ unsigned long param;
-+ char *endp;
-+
-+ for (i=0; i<NUM_OF_BATTERY_ENTRY; i++) {
-+ if(sharpsl_battery_params[i].low_ino==i_ino) {
-+ current_param = &sharpsl_battery_params[i];
-+ break;
-+ }
-+ }
-+ if (current_param==NULL) {
-+ return -EINVAL;
-+ }
-+
-+ param = simple_strtoul(buf,&endp,0);
-+ if (param == -1) {
-+ *current_param->addr = current_param->def_value;
-+ } else {
-+ *current_param->addr = param;
-+ }
-+ return nbytes+endp-buf;
-+}
-+
-+static unsigned int sharpsl_battery_poll(struct file *fp, poll_table * wait)
-+{
-+ poll_wait(fp, &battery_waitqueue, wait);
-+ if ( sharpsl_change_battery_status ) {
-+ sharpsl_change_battery_status = 0;
-+ return POLLIN | POLLRDNORM;
-+ } else {
-+ return 0;
-+ }
-+}
-+
-+static struct file_operations proc_params_operations = {
-+ read: sharpsl_battery_read_params,
-+ write: sharpsl_battery_write_params,
-+ poll: sharpsl_battery_poll,
-+};
-+#endif
-+
-+int __init Sharpsl_battery_init(void)
-+{
-+#ifdef CONFIG_PM
-+ battery_pm_dev = pm_register(PM_SYS_DEV, 0, Sharpsl_battery_pm_callback);
-+#endif
-+
-+ battery_init();
-+
-+#ifdef CONFIG_PROC_FS
-+ {
-+ int i;
-+ struct proc_dir_entry *entry;
-+
-+ proc_batt = proc_mkdir("driver/battery", NULL);
-+ if (proc_batt == NULL) {
-+ free_irq(IRQ_GPIO_AC_IN, tosa_ac_interrupt);
-+ free_irq(IRQ_GPIO_JACKET_DETECT, tosa_jacket_interrupt);
-+#ifndef TOSA_BATTERY_SKIP
-+ free_irq(IRQ_GPIO_BAT0_LOW, tosa_main_batt_fatal_interrupt);
-+ free_irq(IRQ_GPIO_BAT1_LOW, tosa_jacket_batt_fatal_interrupt);
-+#endif
-+ misc_deregister(&battery_device);
-+ printk(KERN_ERR "can't create /proc/driver/battery\n");
-+ return -ENOMEM;
-+ }
-+ for (i=0; i<NUM_OF_BATTERY_ENTRY; i++) {
-+ entry = create_proc_entry(sharpsl_battery_params[i].name,
-+ S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH,
-+ proc_batt);
-+ if (entry) {
-+ sharpsl_battery_params[i].low_ino = entry->low_ino;
-+ entry->proc_fops = &proc_params_operations;
-+ } else {
-+ int j;
-+ for (j=0; j<i; j++) {
-+ remove_proc_entry(sharpsl_battery_params[i].name, proc_batt);
-+ }
-+ remove_proc_entry("driver/battery", &proc_root);
-+ proc_batt = 0;
-+ free_irq(IRQ_GPIO_AC_IN, tosa_ac_interrupt);
-+ free_irq(IRQ_GPIO_JACKET_DETECT, tosa_jacket_interrupt);
-+#ifndef TOSA_BATTERY_SKIP
-+ free_irq(IRQ_GPIO_BAT0_LOW, tosa_main_batt_fatal_interrupt);
-+ free_irq(IRQ_GPIO_BAT1_LOW, tosa_jacket_batt_fatal_interrupt);
-+#endif
-+ misc_deregister(&battery_device);
-+ printk(KERN_ERR "battery: can't create /proc/driver/battery\n");
-+ return -ENOMEM;
-+ }
-+ }
-+ }
-+#endif
-+ return 0;
-+}
-+
-+module_init(Sharpsl_battery_init);
-+
-+
-+
-+#ifdef MODULE
-+int init_module(void)
-+{
-+ Sharpsl_battery_init();
-+ return 0;
-+}
-+
-+void cleanup_module(void)
-+{
-+ free_irq(IRQ_GPIO_AC_IN, tosa_ac_interrupt);
-+ free_irq(IRQ_GPIO_JACKET_DETECT, tosa_jacket_interrupt);
-+#ifndef TOSA_BATTERY_SKIP
-+ free_irq(IRQ_GPIO_BAT0_LOW, tosa_main_batt_fatal_interrupt);
-+ free_irq(IRQ_GPIO_BAT1_LOW, tosa_jacket_batt_fatal_interrupt);
-+#endif
-+
-+#ifdef CONFIG_PROC_FS
-+ {
-+ int i;
-+ for (i=0; i<NUM_OF_BATTERY_ENTRY; i++) {
-+ remove_proc_entry(sharpsl_battery_params[i].name, proc_batt);
-+ }
-+ remove_proc_entry("driver/battery", NULL);
-+ proc_batt = 0;
-+ }
-+#endif
-+
-+ misc_deregister(&battery_device);
-+}
-+#endif /* MODULE */
-+
-diff -Nur linux_c860_org/arch/arm/mach-pxa/tosa_buzzer.c linux/arch/arm/mach-pxa/tosa_buzzer.c
---- linux_c860_org/arch/arm/mach-pxa/tosa_buzzer.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/arch/arm/mach-pxa/tosa_buzzer.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,279 @@
-+/*
-+ * arch/arm/mach-pxa/tosa_buzzer.c
-+ *
-+ * PXA buzzer ctrl for Tosa (SHARP)
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * Based on collie_buzzer
-+ *
-+ *
-+ * 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.
-+ *
-+ * ChangeLog:
-+ * 16-Jan-2003 SHARP sleep_on -> interruptible_sleep_on
-+ * 1-Nov-2003 Sharp Corporation for Tosa
-+ *
-+ */
-+#include <linux/module.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/poll.h>
-+#include <linux/major.h>
-+#include <linux/config.h>
-+#include <linux/fcntl.h>
-+#include <linux/errno.h>
-+#include <linux/mm.h>
-+#include <linux/malloc.h>
-+#include <linux/sound.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+
-+#ifdef CONFIG_PM
-+#include <linux/pm.h>
-+#endif /* CONFIG_PM */
-+
-+#include <asm/system.h>
-+#include <asm/irq.h>
-+#include <asm/pgtable.h>
-+#include <asm/uaccess.h>
-+#include <asm/io.h>
-+#include <linux/soundcard.h>
-+#include <asm/proc/cache.h>
-+
-+#include <asm/sharp_char.h>
-+#include <asm/arch/tosa_wm9712.h>
-+
-+#undef DEBUG
-+//#define DEBUG
-+#ifdef DEBUG
-+#define DPRINTK( x... ) printk( ##x )
-+#else
-+#define DPRINTK( x... )
-+#endif
-+
-+/*** sound data *********************************************************/
-+#include "poodle_key.h"
-+#include "poodle_tap.h"
-+#include "poodle_alarm.h"
-+
-+/*** Some declarations ***********************************************/
-+static DECLARE_WAIT_QUEUE_HEAD(buzzer_proc);
-+static int now_playing = 0 ;
-+static int buzzer_soundid = 0;
-+static int repeat_sound = 0;
-+
-+
-+// following functions include tosa audio driver.
-+int audio_buzzer_write(const char *,int);
-+int audio_buzzer_intmode(const short *,int,int);
-+int audio_buzzer_release(void);
-+int audio_buzzer_open(int);
-+
-+/*** buzzer ******************************************************************/
-+int tosa_buz_buffer_init()
-+{
-+ return 0;
-+}
-+
-+int tosa_play_sound_by_id(int soundid,int volume)
-+{
-+
-+ switch( soundid ){
-+
-+ case SHARP_BUZ_TOUCHSOUND:
-+ if ( wm9712_busy() && !repeat_sound ) {
-+ } else {
-+ while (buzzer_soundid) schedule();
-+ buzzer_soundid = soundid;
-+ wake_up(&buzzer_proc);
-+ }
-+ break;
-+
-+ case SHARP_BUZ_KEYSOUND:
-+ if ( wm9712_busy() && !repeat_sound ) {
-+ } else {
-+ while (buzzer_soundid) schedule();
-+ buzzer_soundid = soundid;
-+ wake_up(&buzzer_proc);
-+ }
-+ break;
-+
-+ case SHARP_BUZ_SCHEDULE_ALARM:
-+ if ( wm9712_busy() ) {
-+ buzzer_soundid = soundid;
-+ wake_up(&buzzer_proc);
-+ } else {
-+ while (buzzer_soundid) schedule();
-+ buzzer_soundid = soundid;
-+ wake_up(&buzzer_proc);
-+ }
-+ break;
-+
-+ case SHARP_PDA_WARNSOUND:
-+ break;
-+
-+ case SHARP_BUZ_GOT_MAIL:
-+ case SHARP_BUZ_DAILY_ALARM:
-+ case SHARP_PDA_ERRORSOUND:
-+ case SHARP_PDA_CRITICALSOUND:
-+ break;
-+
-+ default:
-+ return -EINVAL;
-+ break;
-+ }
-+
-+ return 0;
-+}
-+int tosa_buzzer_supported(int which)
-+{
-+ switch( which ){
-+ case SHARP_BUZ_TOUCHSOUND:
-+ case SHARP_BUZ_KEYSOUND:
-+ case SHARP_BUZ_SCHEDULE_ALARM:
-+ case SHARP_BUZ_DAILY_ALARM:
-+ case SHARP_BUZ_GOT_MAIL:
-+ case SHARP_PDA_WARNSOUND:
-+ case SHARP_PDA_ERRORSOUND:
-+ case SHARP_PDA_CRITICALSOUND:
-+ break;
-+ default:
-+ return -EINVAL;
-+ break;
-+ }
-+ return 4;
-+}
-+
-+int tosa_play_sound_by_hz(unsigned int hz,unsigned int msecs,int volume)
-+{
-+ return 0;
-+}
-+
-+int current_freq;
-+static void change_freq( int new_freq )
-+{
-+ if (current_freq!=new_freq) {
-+ audio_buzzer_release();
-+ audio_buzzer_open(new_freq);
-+ current_freq = new_freq;
-+ }
-+}
-+
-+static void tosa_buzzer_thread(void)
-+{
-+ // daemonize();
-+ strcpy(current->comm, "buzzer");
-+ sigfillset(&current->blocked);
-+
-+ while(1) {
-+ if (buzzer_soundid==0) {
-+ //while(buzzer_soundid==0)
-+ interruptible_sleep_on(&buzzer_proc);
-+ } else {
-+ if (wm9712_busy()) {
-+ if (buzzer_soundid==SHARP_BUZ_SCHEDULE_ALARM) {
-+ //audio_buzzer_intmode(alarm_data,sizeof(alarm_data),44100);
-+ audio_buzzer_intmode(alarm_data,sizeof(alarm_data),8000);
-+ }
-+ buzzer_soundid=0;
-+ continue;
-+ }
-+ now_playing = 1;
-+ current_freq = key_freq;
-+ audio_buzzer_open(current_freq);
-+ while ( buzzer_soundid!=0 ) {
-+ int tmpid = buzzer_soundid;
-+ buzzer_soundid=0;
-+
-+ switch( tmpid ) {
-+
-+ case SHARP_BUZ_TOUCHSOUND:
-+ repeat_sound = 1;
-+ change_freq(tap_freq);
-+ audio_buzzer_write(tap_data, sizeof(tap_data));
-+ audio_buzzer_sync();
-+ break;
-+
-+ case SHARP_BUZ_KEYSOUND:
-+ repeat_sound = 1;
-+ change_freq(key_freq);
-+ audio_buzzer_write(key_data, sizeof(key_data));
-+ audio_buzzer_sync();
-+ break;
-+
-+ case SHARP_BUZ_SCHEDULE_ALARM:
-+ {
-+ int alarm_data_size = sizeof(alarm_data);
-+ unsigned char *alarm_data0 = alarm_data;
-+ int cnt;
-+
-+ repeat_sound = 0;
-+ //change_freq(44100);
-+ change_freq(8000);
-+ while(1) {
-+ cnt = audio_buzzer_write(alarm_data0,alarm_data_size);
-+ audio_buzzer_sync();
-+ if ( cnt <= 0 ) break;
-+ alarm_data_size -= cnt;
-+ alarm_data0 += cnt;
-+ }
-+ break;
-+ }
-+
-+ case SHARP_PDA_WARNSOUND:
-+ case SHARP_BUZ_GOT_MAIL:
-+ case SHARP_BUZ_DAILY_ALARM:
-+ case SHARP_PDA_ERRORSOUND:
-+ case SHARP_PDA_CRITICALSOUND:
-+ repeat_sound = 0;
-+ break;
-+
-+ default:
-+ repeat_sound = 0;
-+ break;
-+ } // switch
-+ } // while loop
-+ audio_buzzer_release();
-+ repeat_sound = 0;
-+ now_playing = 0;
-+ }
-+ } // while(1) loop
-+}
-+
-+
-+int tosa_buzzer_dev_init(void)
-+{
-+ kernel_thread(tosa_buzzer_thread, NULL,
-+ CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+ return 0;
-+}
-+
-+int tosa_suspend_buzzer(void)
-+{
-+#if 0
-+ printk("tosa_suspend_buzzer\n");
-+ while ( now_playing ) {
-+ schedule();
-+ }
-+#endif
-+ return 0;
-+}
-+
-+int tosa_resume_buzzer(void)
-+{
-+ return 0;
-+}
-+
-+void tosa_stop_sound()
-+{
-+ return;
-+}
-diff -Nur linux_c860_org/arch/arm/mm/fault-armv.c linux/arch/arm/mm/fault-armv.c
---- linux_c860_org/arch/arm/mm/fault-armv.c 2003-06-18 16:12:26.000000000 +0900
-+++ linux/arch/arm/mm/fault-armv.c 2004-06-10 21:09:10.000000000 +0900
-@@ -11,6 +11,7 @@
- * Change Log
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
- * 04-Apr-2003 Sharp for ARM FCSE
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- *
- */
- #include <linux/config.h>
-@@ -126,12 +127,14 @@
- }
- #endif
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
-+#ifdef CONFIG_PM
- {
- extern sharpsl_fataloff(void);
- sharpsl_fataloff();
- }
- #endif
-+#endif
-
- if (!inf->fn(addr, error_code, regs))
- return;
-diff -Nur linux_c860_org/arch/arm/mm/proc-xscale.S linux/arch/arm/mm/proc-xscale.S
---- linux_c860_org/arch/arm/mm/proc-xscale.S 2003-10-15 16:42:00.000000000 +0900
-+++ linux/arch/arm/mm/proc-xscale.S 2004-06-10 21:09:10.000000000 +0900
-@@ -25,6 +25,7 @@
- * 20-Mar-2003 SHARP supported PXA255
- * 04-Apr-2003 Sharp for ARM FCSE
- * 15-Oct-2003 Sharp fix icache flush
-+ * 16-Jul-2003 Sharp Corporation
- */
-
- #include <linux/config.h>
-diff -Nur linux_c860_org/arch/arm/tools/getconstants.c linux/arch/arm/tools/getconstants.c
---- linux_c860_org/arch/arm/tools/getconstants.c 2002-08-26 14:39:51.000000000 +0900
-+++ linux/arch/arm/tools/getconstants.c 2004-06-10 21:09:10.000000000 +0900
-@@ -13,6 +13,7 @@
-
- #include <asm/pgtable.h>
- #include <asm/uaccess.h>
-+#include <asm/hardirq.h>
-
- /*
- * Make sure that the compiler and target are compatible.
-@@ -39,6 +40,11 @@
- DEFN("TSS_SAVE", OFF_TSK(thread.save));
- DEFN("TSS_FPESAVE", OFF_TSK(thread.fpstate.soft.save));
-
-+#ifdef CONFIG_PREEMPT
-+DEFN("TSK_PREEMPT", OFF_TSK(preempt_count));
-+DEFN("IRQSTAT_BH_COUNT", (unsigned long)&(((irq_cpustat_t *)0)->__local_bh_count));
-+#endif
-+
- #ifdef CONFIG_CPU_32
- DEFN("TSS_DOMAIN", OFF_TSK(thread.domain));
-
-diff -Nur linux_c860_org/arch/arm/tools/mach-types linux/arch/arm/tools/mach-types
---- linux_c860_org/arch/arm/tools/mach-types 2002-08-29 12:27:22.000000000 +0900
-+++ linux/arch/arm/tools/mach-types 2004-06-10 21:09:10.000000000 +0900
-@@ -205,3 +205,4 @@
- discovery SABINAL_DISCOVERY DISCOVERY 194
- poodle ARCH_PXA_POODLE POODLE 195
- corgi ARCH_PXA_CORGI CORGI 196
-+tosa ARCH_PXA_TOSA TOSA 197
-diff -Nur linux_c860_org/arch/cris/drivers/ds1302.c linux/arch/cris/drivers/ds1302.c
---- linux_c860_org/arch/cris/drivers/ds1302.c 2002-08-26 14:39:59.000000000 +0900
-+++ linux/arch/cris/drivers/ds1302.c 2004-06-10 21:09:10.000000000 +0900
-@@ -357,6 +357,7 @@
- {
- struct rtc_time rtc_tm;
-
-+ memset(&rtc_tm, 0, sizeof (struct rtc_time));
- get_rtc_time(&rtc_tm);
- if (copy_to_user((struct rtc_time*)arg, &rtc_tm, sizeof(struct rtc_time)))
- return -EFAULT;
-diff -Nur linux_c860_org/arch/i386/config.in linux/arch/i386/config.in
---- linux_c860_org/arch/i386/config.in 2002-08-26 14:45:20.000000000 +0900
-+++ linux/arch/i386/config.in 2004-06-10 21:09:10.000000000 +0900
-@@ -186,6 +186,10 @@
- bool 'Math emulation' CONFIG_MATH_EMULATION
- bool 'MTRR (Memory Type Range Register) support' CONFIG_MTRR
- bool 'Symmetric multi-processing support' CONFIG_SMP
-+bool 'Preemptible Kernel' CONFIG_PREEMPT
-+if [ "$CONFIG_PREEMPT" = "y" ]; then
-+ bool 'Break selected locks' CONFIG_LOCK_BREAK
-+fi
- if [ "$CONFIG_SMP" != "y" ]; then
- bool 'Local APIC support on uniprocessors' CONFIG_X86_UP_APIC
- dep_bool 'IO-APIC support on uniprocessors' CONFIG_X86_UP_IOAPIC $CONFIG_X86_UP_APIC
-@@ -199,9 +203,12 @@
- bool 'Multiquad NUMA system' CONFIG_MULTIQUAD
- fi
-
--if [ "$CONFIG_SMP" = "y" -a "$CONFIG_X86_CMPXCHG" = "y" ]; then
-- define_bool CONFIG_HAVE_DEC_LOCK y
-+if [ "$CONFIG_SMP" = "y" -o "$CONFIG_PREEMPT" = "y" ]; then
-+ if [ "$CONFIG_X86_CMPXCHG" = "y" ]; then
-+ define_bool CONFIG_HAVE_DEC_LOCK y
-+ fi
- fi
-+
- endmenu
-
- mainmenu_option next_comment
-diff -Nur linux_c860_org/arch/i386/kernel/entry.S linux/arch/i386/kernel/entry.S
---- linux_c860_org/arch/i386/kernel/entry.S 2002-08-26 14:39:33.000000000 +0900
-+++ linux/arch/i386/kernel/entry.S 2004-06-10 21:09:10.000000000 +0900
-@@ -71,7 +71,7 @@
- * these are offsets into the task-struct.
- */
- state = 0
--flags = 4
-+preempt_count = 4
- sigpending = 8
- addr_limit = 12
- exec_domain = 16
-@@ -79,8 +79,28 @@
- tsk_ptrace = 24
- processor = 52
-
-+/* These are offsets into the irq_stat structure
-+ * There is one per cpu and it is aligned to 32
-+ * byte boundry (we put that here as a shift count)
-+ */
-+irq_array_shift = CONFIG_X86_L1_CACHE_SHIFT
-+
-+irq_stat_local_irq_count = 4
-+irq_stat_local_bh_count = 8
-+
- ENOSYS = 38
-
-+#ifdef CONFIG_SMP
-+#define GET_CPU_INDX movl processor(%ebx),%eax; \
-+ shll $irq_array_shift,%eax
-+#define GET_CURRENT_CPU_INDX GET_CURRENT(%ebx); \
-+ GET_CPU_INDX
-+#define CPU_INDX (,%eax)
-+#else
-+#define GET_CPU_INDX
-+#define GET_CURRENT_CPU_INDX GET_CURRENT(%ebx)
-+#define CPU_INDX
-+#endif
-
- #define SAVE_ALL \
- cld; \
-@@ -247,12 +267,30 @@
- ALIGN
- ENTRY(ret_from_intr)
- GET_CURRENT(%ebx)
-+#ifdef CONFIG_PREEMPT
-+ cli
-+ decl preempt_count(%ebx)
-+#endif
- ret_from_exception:
- movl EFLAGS(%esp),%eax # mix EFLAGS and CS
- movb CS(%esp),%al
- testl $(VM_MASK | 3),%eax # return to VM86 mode or non-supervisor?
- jne ret_from_sys_call
-+#ifdef CONFIG_PREEMPT
-+ cmpl $0,preempt_count(%ebx)
-+ jnz restore_all
-+ cmpl $0,need_resched(%ebx)
-+ jz restore_all
-+ movl SYMBOL_NAME(irq_stat)+irq_stat_local_bh_count CPU_INDX,%ecx
-+ addl SYMBOL_NAME(irq_stat)+irq_stat_local_irq_count CPU_INDX,%ecx
-+ jnz restore_all
-+ incl preempt_count(%ebx)
-+ sti
-+ call SYMBOL_NAME(preempt_schedule)
-+ jmp ret_from_intr
-+#else
- jmp restore_all
-+#endif
-
- ALIGN
- reschedule:
-@@ -289,6 +327,9 @@
- GET_CURRENT(%ebx)
- call *%edi
- addl $8,%esp
-+#ifdef CONFIG_PREEMPT
-+ cli
-+#endif
- jmp ret_from_exception
-
- ENTRY(coprocessor_error)
-@@ -308,12 +349,18 @@
- movl %cr0,%eax
- testl $0x4,%eax # EM (math emulation bit)
- jne device_not_available_emulate
-+#ifdef CONFIG_PREEMPT
-+ cli
-+#endif
- call SYMBOL_NAME(math_state_restore)
- jmp ret_from_exception
- device_not_available_emulate:
- pushl $0 # temporary storage for ORIG_EIP
- call SYMBOL_NAME(math_emulate)
- addl $4,%esp
-+#ifdef CONFIG_PREEMPT
-+ cli
-+#endif
- jmp ret_from_exception
-
- ENTRY(debug)
-diff -Nur linux_c860_org/arch/i386/kernel/i387.c linux/arch/i386/kernel/i387.c
---- linux_c860_org/arch/i386/kernel/i387.c 2002-08-26 14:39:33.000000000 +0900
-+++ linux/arch/i386/kernel/i387.c 2004-06-10 21:09:10.000000000 +0900
-@@ -10,6 +10,7 @@
-
- #include <linux/config.h>
- #include <linux/sched.h>
-+#include <linux/spinlock.h>
- #include <asm/processor.h>
- #include <asm/i387.h>
- #include <asm/math_emu.h>
-@@ -65,6 +66,8 @@
- {
- struct task_struct *tsk = current;
-
-+ preempt_disable();
-+
- if (tsk->flags & PF_USEDFPU) {
- __save_init_fpu(tsk);
- return;
-diff -Nur linux_c860_org/arch/i386/kernel/process.c linux/arch/i386/kernel/process.c
---- linux_c860_org/arch/i386/kernel/process.c 2002-08-26 14:39:33.000000000 +0900
-+++ linux/arch/i386/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -485,7 +485,7 @@
- /*
- * Create a kernel thread
- */
--int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-+int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
- {
- long retval, d0;
-
-@@ -508,6 +508,7 @@
- "r" (arg), "r" (fn),
- "b" (flags | CLONE_VM)
- : "memory");
-+
- return retval;
- }
-
-diff -Nur linux_c860_org/arch/i386/kernel/smp.c linux/arch/i386/kernel/smp.c
---- linux_c860_org/arch/i386/kernel/smp.c 2002-08-26 14:39:33.000000000 +0900
-+++ linux/arch/i386/kernel/smp.c 2004-06-10 21:09:10.000000000 +0900
-@@ -354,10 +354,13 @@
-
- asmlinkage void smp_invalidate_interrupt (void)
- {
-- unsigned long cpu = smp_processor_id();
-+ unsigned long cpu;
-+
-+ preempt_disable();
-
-+ cpu = smp_processor_id();
- if (!test_bit(cpu, &flush_cpumask))
-- return;
-+ goto out;
- /*
- * This was a BUG() but until someone can quote me the
- * line from the intel manual that guarantees an IPI to
-@@ -378,6 +381,8 @@
- }
- ack_APIC_irq();
- clear_bit(cpu, &flush_cpumask);
-+out:
-+ preempt_enable();
- }
-
- static void flush_tlb_others (unsigned long cpumask, struct mm_struct *mm,
-@@ -427,17 +432,22 @@
- void flush_tlb_current_task(void)
- {
- struct mm_struct *mm = current->mm;
-- unsigned long cpu_mask = mm->cpu_vm_mask & ~(1 << smp_processor_id());
-+ unsigned long cpu_mask;
-
-+ preempt_disable();
-+ cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id());
- local_flush_tlb();
- if (cpu_mask)
- flush_tlb_others(cpu_mask, mm, FLUSH_ALL);
-+ preempt_enable();
- }
-
- void flush_tlb_mm (struct mm_struct * mm)
- {
-- unsigned long cpu_mask = mm->cpu_vm_mask & ~(1 << smp_processor_id());
-+ unsigned long cpu_mask;
-
-+ preempt_disable();
-+ cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id());
- if (current->active_mm == mm) {
- if (current->mm)
- local_flush_tlb();
-@@ -446,13 +456,16 @@
- }
- if (cpu_mask)
- flush_tlb_others(cpu_mask, mm, FLUSH_ALL);
-+ preempt_enable();
- }
-
- void flush_tlb_page(struct vm_area_struct * vma, unsigned long va)
- {
- struct mm_struct *mm = vma->vm_mm;
-- unsigned long cpu_mask = mm->cpu_vm_mask & ~(1 << smp_processor_id());
-+ unsigned long cpu_mask;
-
-+ preempt_disable();
-+ cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id());
- if (current->active_mm == mm) {
- if(current->mm)
- __flush_tlb_one(va);
-@@ -462,6 +475,7 @@
-
- if (cpu_mask)
- flush_tlb_others(cpu_mask, mm, va);
-+ preempt_enable();
- }
-
- static inline void do_flush_tlb_all_local(void)
-diff -Nur linux_c860_org/arch/i386/kernel/traps.c linux/arch/i386/kernel/traps.c
---- linux_c860_org/arch/i386/kernel/traps.c 2002-08-26 14:39:33.000000000 +0900
-+++ linux/arch/i386/kernel/traps.c 2004-06-10 21:09:10.000000000 +0900
-@@ -694,6 +694,8 @@
- *
- * Careful.. There are problems with IBM-designed IRQ13 behaviour.
- * Don't touch unless you *really* know how it works.
-+ *
-+ * Must be called with kernel preemption disabled.
- */
- asmlinkage void math_state_restore(struct pt_regs regs)
- {
-diff -Nur linux_c860_org/arch/i386/lib/dec_and_lock.c linux/arch/i386/lib/dec_and_lock.c
---- linux_c860_org/arch/i386/lib/dec_and_lock.c 2002-08-26 14:39:33.000000000 +0900
-+++ linux/arch/i386/lib/dec_and_lock.c 2004-06-10 21:09:10.000000000 +0900
-@@ -8,6 +8,7 @@
- */
-
- #include <linux/spinlock.h>
-+#include <linux/sched.h>
- #include <asm/atomic.h>
-
- int atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock)
-diff -Nur linux_c860_org/arch/ia64/kernel/process.c linux/arch/ia64/kernel/process.c
---- linux_c860_org/arch/ia64/kernel/process.c 2002-08-26 14:39:53.000000000 +0900
-+++ linux/arch/ia64/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -182,7 +182,7 @@
- * | | <-- sp (lowest addr)
- * +---------------------+
- *
-- * Note: if we get called through kernel_thread() then the memory
-+ * Note: if we get called through arch_kernel_thread() then the memory
- * above "(highest addr)" is valid kernel stack memory that needs to
- * be copied as well.
- *
-@@ -415,7 +415,7 @@
- }
-
- pid_t
--kernel_thread (int (*fn)(void *), void *arg, unsigned long flags)
-+arch_kernel_thread (int (*fn)(void *), void *arg, unsigned long flags)
- {
- struct task_struct *parent = current;
- int result, tid;
-diff -Nur linux_c860_org/arch/m68k/bvme6000/rtc.c linux/arch/m68k/bvme6000/rtc.c
---- linux_c860_org/arch/m68k/bvme6000/rtc.c 2002-08-26 14:39:46.000000000 +0900
-+++ linux/arch/m68k/bvme6000/rtc.c 2004-06-10 21:09:10.000000000 +0900
-@@ -54,6 +54,7 @@
- /* Ensure clock and real-time-mode-register are accessible */
- msr = rtc->msr & 0xc0;
- rtc->msr = 0x40;
-+ memset(&wtime, 0, sizeof(struct rtc_time));
- do {
- wtime.tm_sec = BCD2BIN(rtc->bcd_sec);
- wtime.tm_min = BCD2BIN(rtc->bcd_min);
-diff -Nur linux_c860_org/arch/m68k/kernel/process.c linux/arch/m68k/kernel/process.c
---- linux_c860_org/arch/m68k/kernel/process.c 2002-08-26 14:39:45.000000000 +0900
-+++ linux/arch/m68k/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -124,7 +124,7 @@
- /*
- * Create a kernel thread
- */
--int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-+int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
- {
- int pid;
- mm_segment_t fs;
-diff -Nur linux_c860_org/arch/m68k/mvme16x/rtc.c linux/arch/m68k/mvme16x/rtc.c
---- linux_c860_org/arch/m68k/mvme16x/rtc.c 2002-08-26 14:39:47.000000000 +0900
-+++ linux/arch/m68k/mvme16x/rtc.c 2004-06-10 21:09:10.000000000 +0900
-@@ -52,6 +52,7 @@
- cli();
- /* Ensure clock and real-time-mode-register are accessible */
- rtc->ctrl = RTC_READ;
-+ memset(&wtime, 0, sizeof(struct rtc_time));
- wtime.tm_sec = BCD2BIN(rtc->bcd_sec);
- wtime.tm_min = BCD2BIN(rtc->bcd_min);
- wtime.tm_hour = BCD2BIN(rtc->bcd_hr);
-diff -Nur linux_c860_org/arch/mips/kernel/process.c linux/arch/mips/kernel/process.c
---- linux_c860_org/arch/mips/kernel/process.c 2002-08-26 14:39:37.000000000 +0900
-+++ linux/arch/mips/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -154,7 +154,7 @@
- /*
- * Create a kernel thread
- */
--int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-+int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
- {
- long retval;
-
-diff -Nur linux_c860_org/arch/mips64/kernel/process.c linux/arch/mips64/kernel/process.c
---- linux_c860_org/arch/mips64/kernel/process.c 2002-08-26 14:39:55.000000000 +0900
-+++ linux/arch/mips64/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -150,7 +150,7 @@
- /*
- * Create a kernel thread
- */
--int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
-+int arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
- {
- int retval;
-
-diff -Nur linux_c860_org/arch/parisc/kernel/process.c linux/arch/parisc/kernel/process.c
---- linux_c860_org/arch/parisc/kernel/process.c 2002-08-26 14:39:58.000000000 +0900
-+++ linux/arch/parisc/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -118,7 +118,7 @@
- */
-
- extern pid_t __kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
--pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
-+pid_t arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
- {
-
- /*
-diff -Nur linux_c860_org/arch/ppc/kernel/misc.S linux/arch/ppc/kernel/misc.S
---- linux_c860_org/arch/ppc/kernel/misc.S 2002-08-26 14:39:39.000000000 +0900
-+++ linux/arch/ppc/kernel/misc.S 2004-06-10 21:09:10.000000000 +0900
-@@ -860,9 +860,9 @@
-
- /*
- * Create a kernel thread
-- * kernel_thread(fn, arg, flags)
-+ * arch_kernel_thread(fn, arg, flags)
- */
--_GLOBAL(kernel_thread)
-+_GLOBAL(arch_kernel_thread)
- mr r6,r3 /* function */
- ori r3,r5,CLONE_VM /* flags */
- li r0,__NR_clone
-diff -Nur linux_c860_org/arch/s390/kernel/process.c linux/arch/s390/kernel/process.c
---- linux_c860_org/arch/s390/kernel/process.c 2002-08-26 14:39:56.000000000 +0900
-+++ linux/arch/s390/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -93,7 +93,7 @@
- show_trace((unsigned long *) regs->gprs[15]);
- }
-
--int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-+int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
- {
- int clone_arg = flags | CLONE_VM;
- int retval;
-diff -Nur linux_c860_org/arch/s390x/kernel/process.c linux/arch/s390x/kernel/process.c
---- linux_c860_org/arch/s390x/kernel/process.c 2002-08-26 14:39:59.000000000 +0900
-+++ linux/arch/s390x/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -93,7 +93,7 @@
- show_trace((unsigned long *) regs->gprs[15]);
- }
-
--int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-+int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
- {
- int clone_arg = flags | CLONE_VM;
- int retval;
-diff -Nur linux_c860_org/arch/sh/config.in linux/arch/sh/config.in
---- linux_c860_org/arch/sh/config.in 2002-08-26 14:45:40.000000000 +0900
-+++ linux/arch/sh/config.in 2004-06-10 21:09:10.000000000 +0900
-@@ -125,6 +125,8 @@
- hex 'Physical memory start address' CONFIG_MEMORY_START 08000000
- hex 'Physical memory size' CONFIG_MEMORY_SIZE 00400000
- fi
-+bool 'Preemptible Kernel' CONFIG_PREEMPT
-+dep_bool 'Break selected locks' CONFIG_LOCK_BREAK $CONFIG_PREEMPT
- endmenu
-
- if [ "$CONFIG_SH_HP690" = "y" ]; then
-diff -Nur linux_c860_org/arch/sh/kernel/entry.S linux/arch/sh/kernel/entry.S
---- linux_c860_org/arch/sh/kernel/entry.S 2002-08-26 14:39:52.000000000 +0900
-+++ linux/arch/sh/kernel/entry.S 2004-06-10 21:09:10.000000000 +0900
-@@ -60,10 +60,18 @@
- /*
- * These are offsets into the task-struct.
- */
--flags = 4
-+preempt_count = 4
- sigpending = 8
- need_resched = 20
- tsk_ptrace = 24
-+flags = 84
-+
-+/*
-+ * These offsets are into irq_stat.
-+ * (Find irq_cpustat_t in asm-sh/hardirq.h)
-+ */
-+local_irq_count = 8
-+local_bh_count = 12
-
- PT_TRACESYS = 0x00000002
- PF_USEDFPU = 0x00100000
-@@ -143,7 +151,7 @@
- mov.l __INV_IMASK, r11; \
- stc sr, r10; \
- and r11, r10; \
-- stc k_g_imask, r11; \
-+ stc k_g_imask, r11; \
- or r11, r10; \
- ldc r10, sr
-
-@@ -304,8 +312,8 @@
- mov.l @(tsk_ptrace,r0), r0 ! Is current PTRACE_SYSCALL'd?
- mov #PT_TRACESYS, r1
- tst r1, r0
-- bt ret_from_syscall
-- bra syscall_ret_trace
-+ bf syscall_ret_trace
-+ bra ret_from_syscall
- nop
-
- .align 2
-@@ -505,8 +513,6 @@
- .long syscall_ret_trace
- __syscall_ret:
- .long syscall_ret
--__INV_IMASK:
-- .long 0xffffff0f ! ~(IMASK)
-
-
- .align 2
-@@ -518,7 +524,84 @@
- .align 2
- 1: .long SYMBOL_NAME(schedule)
-
-+#ifdef CONFIG_PREEMPT
-+ !
-+ ! Returning from interrupt during kernel mode: check if
-+ ! preempt_schedule should be called. If need_resched flag
-+ ! is set, preempt_count is zero, and we're not currently
-+ ! in an interrupt handler (local irq or bottom half) then
-+ ! call preempt_schedule.
-+ !
-+ ! Increment preempt_count to prevent a nested interrupt
-+ ! from reentering preempt_schedule, then decrement after
-+ ! and drop through to regular interrupt return which will
-+ ! jump back and check again in case such an interrupt did
-+ ! come in (and didn't preempt due to preempt_count).
-+ !
-+ ! NOTE: because we just checked that preempt_count was
-+ ! zero before getting to the call, can't we use immediate
-+ ! values (1 and 0) rather than inc/dec? Also, rather than
-+ ! drop through to ret_from_irq, we already know this thread
-+ ! is kernel mode, can't we go direct to ret_from_kirq? In
-+ ! fact, with proper interrupt nesting and so forth could
-+ ! the loop simply be on the need_resched w/o checking the
-+ ! other stuff again? Optimize later...
-+ !
-+ .align 2
-+ret_from_kirq:
-+ ! Nonzero preempt_count prevents scheduling
-+ stc k_current, r1
-+ mov.l @(preempt_count,r1), r0
-+ cmp/eq #0, r0
-+ bf restore_all
-+ ! Zero need_resched prevents scheduling
-+ mov.l @(need_resched,r1), r0
-+ cmp/eq #0, r0
-+ bt restore_all
-+ ! If in_interrupt(), don't schedule
-+ mov.l __irq_stat, r1
-+ mov.l @(local_irq_count,r1), r0
-+ mov.l @(local_bh_count,r1), r1
-+ or r1, r0
-+ cmp/eq #0, r0
-+ bf restore_all
-+ ! Allow scheduling using preempt_schedule
-+ ! Adjust preempt_count and SR as needed.
-+ stc k_current, r1
-+ mov.l @(preempt_count,r1), r0 ! Could replace this ...
-+ add #1, r0 ! ... and this w/mov #1?
-+ mov.l r0, @(preempt_count,r1)
-+ STI()
-+ mov.l __preempt_schedule, r0
-+ jsr @r0
-+ nop
-+ /* CLI */
-+ stc sr, r0
-+ or #0xf0, r0
-+ ldc r0, sr
-+ !
-+ stc k_current, r1
-+ mov.l @(preempt_count,r1), r0 ! Could replace this ...
-+ add #-1, r0 ! ... and this w/mov #0?
-+ mov.l r0, @(preempt_count,r1)
-+ ! Maybe should bra ret_from_kirq, or loop over need_resched?
-+ ! For now, fall through to ret_from_irq again...
-+#endif /* CONFIG_PREEMPT */
-+
- ret_from_irq:
-+ mov #OFF_SR, r0
-+ mov.l @(r0,r15), r0 ! get status register
-+ shll r0
-+ shll r0 ! kernel space?
-+#ifndef CONFIG_PREEMPT
-+ bt restore_all ! Yes, it's from kernel, go back soon
-+#else /* CONFIG_PREEMPT */
-+ bt ret_from_kirq ! From kernel: maybe preempt_schedule
-+#endif /* CONFIG_PREEMPT */
-+ !
-+ bra ret_from_syscall
-+ nop
-+
- ret_from_exception:
- mov #OFF_SR, r0
- mov.l @(r0,r15), r0 ! get status register
-@@ -564,6 +647,13 @@
- .long SYMBOL_NAME(do_signal)
- __irq_stat:
- .long SYMBOL_NAME(irq_stat)
-+#ifdef CONFIG_PREEMPT
-+__preempt_schedule:
-+ .long SYMBOL_NAME(preempt_schedule)
-+#endif /* CONFIG_PREEMPT */
-+__INV_IMASK:
-+ .long 0xffffff0f ! ~(IMASK)
-+
-
- .align 2
- restore_all:
-@@ -679,7 +769,7 @@
- __fpu_prepare_fd:
- .long SYMBOL_NAME(fpu_prepare_fd)
- __init_task_flags:
-- .long SYMBOL_NAME(init_task_union)+4
-+ .long SYMBOL_NAME(init_task_union)+flags
- __PF_USEDFPU:
- .long PF_USEDFPU
- #endif
-diff -Nur linux_c860_org/arch/sh/kernel/irq.c linux/arch/sh/kernel/irq.c
---- linux_c860_org/arch/sh/kernel/irq.c 2002-08-26 14:39:52.000000000 +0900
-+++ linux/arch/sh/kernel/irq.c 2004-06-10 21:09:10.000000000 +0900
-@@ -229,6 +229,14 @@
- struct irqaction * action;
- unsigned int status;
-
-+ /*
-+ * At this point we're now about to actually call handlers,
-+ * and interrupts might get reenabled during them... bump
-+ * preempt_count to prevent any preemption while the handler
-+ * called here is pending...
-+ */
-+ preempt_disable();
-+
- /* Get IRQ number */
- asm volatile("stc r2_bank, %0\n\t"
- "shlr2 %0\n\t"
-@@ -298,8 +306,17 @@
- desc->handler->end(irq);
- spin_unlock(&desc->lock);
-
-+
- if (softirq_pending(cpu))
- do_softirq();
-+
-+ /*
-+ * We're done with the handlers, interrupts should be
-+ * currently disabled; decrement preempt_count now so
-+ * as we return preemption may be allowed...
-+ */
-+ preempt_enable_no_resched();
-+
- return 1;
- }
-
-diff -Nur linux_c860_org/arch/sh/kernel/process.c linux/arch/sh/kernel/process.c
---- linux_c860_org/arch/sh/kernel/process.c 2002-08-26 14:39:52.000000000 +0900
-+++ linux/arch/sh/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -118,7 +118,7 @@
- * This is the mechanism for creating a new kernel thread.
- *
- */
--int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-+int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
- { /* Don't use this in BL=1(cli). Or else, CPU resets! */
- register unsigned long __sc0 __asm__ ("r0");
- register unsigned long __sc3 __asm__ ("r3") = __NR_clone;
-diff -Nur linux_c860_org/arch/sparc/kernel/process.c linux/arch/sparc/kernel/process.c
---- linux_c860_org/arch/sparc/kernel/process.c 2002-08-26 14:39:35.000000000 +0900
-+++ linux/arch/sparc/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -657,7 +657,7 @@
- * a system call from a "real" process, but the process memory space will
- * not be free'd until both the parent and the child have exited.
- */
--pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-+pid_t arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
- {
- long retval;
-
-diff -Nur linux_c860_org/arch/sparc64/kernel/process.c linux/arch/sparc64/kernel/process.c
---- linux_c860_org/arch/sparc64/kernel/process.c 2002-08-26 14:39:47.000000000 +0900
-+++ linux/arch/sparc64/kernel/process.c 2004-06-10 21:09:10.000000000 +0900
-@@ -661,7 +661,7 @@
- * a system call from a "real" process, but the process memory space will
- * not be free'd until both the parent and the child have exited.
- */
--pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-+pid_t arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
- {
- long retval;
-
-diff -Nur linux_c860_org/drivers/acorn/char/i2c.c linux/drivers/acorn/char/i2c.c
---- linux_c860_org/drivers/acorn/char/i2c.c 2002-08-26 14:45:01.000000000 +0900
-+++ linux/drivers/acorn/char/i2c.c 2004-06-10 21:09:10.000000000 +0900
-@@ -166,6 +166,7 @@
- break;
-
- case RTC_RD_TIME:
-+ memset(&rtctm, 0, sizeof(struct rtc_time));
- get_rtc_time(&rtc_raw, &year);
- rtctm.tm_sec = rtc_raw.secs;
- rtctm.tm_min = rtc_raw.mins;
-diff -Nur linux_c860_org/drivers/block/Config.in linux/drivers/block/Config.in
---- linux_c860_org/drivers/block/Config.in 2003-11-07 11:46:57.000000000 +0900
-+++ linux/drivers/block/Config.in 2004-06-10 21:09:10.000000000 +0900
-@@ -37,7 +37,6 @@
- dep_tristate 'Compaq Smart Array 5xxx support' CONFIG_BLK_CPQ_CISS_DA $CONFIG_PCI
- dep_tristate 'Mylex DAC960/DAC1100 PCI RAID Controller support' CONFIG_BLK_DEV_DAC960 $CONFIG_PCI
-
--
- tristate 'Loopback device support' CONFIG_BLK_DEV_LOOP
- dep_tristate 'Network block device support' CONFIG_BLK_DEV_NBD $CONFIG_NET
-
-diff -Nur linux_c860_org/drivers/char/Config.in linux/drivers/char/Config.in
---- linux_c860_org/drivers/char/Config.in 2002-08-29 12:25:54.000000000 +0900
-+++ linux/drivers/char/Config.in 2004-06-10 21:09:10.000000000 +0900
-@@ -17,10 +17,26 @@
- fi
- if [ "$CONFIG_SABINAL_DISCOVERY" = "y" -o \
- "$CONFIG_ARCH_PXA_POODLE" = "y" -o \
-- "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then
-+ "$CONFIG_ARCH_PXA_CORGI" = "y" -o \
-+ "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then
- bool ' SL-series serial port support' CONFIG_SERIAL_SL_SERIES
- fi
-+ if [ "$CONFIG_SABINAL_DISCOVERY" = "y" -o \
-+ "$CONFIG_ARCH_PXA_POODLE" = "y" -o \
-+ "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then
-+ bool ' SL-series touchscreen pressure value read (EXPERIMENTAL)' CONFIG_SL_TS_PRESSURE
-+ dep_bool ' Boot On touchscreen pressure value read' CONFIG_BOOT_PRESSURE_ON $CONFIG_SL_TS_PRESSURE
-+ bool ' SL-C Series power key suspend (EXPERIMENTAL)' CONFIG_SL7X0_POWER_KEY_OFF
-+ dep_bool ' Boot On power key suspend' CONFIG_BOOT_POWER_KEY_OFF $CONFIG_SL7X0_POWER_KEY_OFF
-+ bool ' SL-C Series 3 Button touch screen (EXPERIMENTAL)' CONFIG_SL_3BUTTON_PATCH
-+ dep_bool ' Boot On 3 Button touch screen' CONFIG_BOOT_3BUTTON_PATCH_ON $CONFIG_SL_3BUTTON_PATCH
-+ bool ' SL-series write ts data (EXPERIMENTAL)' CONFIG_SL_WRITE_TS
-+ fi
-+ if [ "$CONFIG_SERIAL_SL_SERIES" = "y" ]; then
-+ bool ' SL-series Bluetooth support' CONFIG_BLUETOOTH_SL
-+ fi
- fi
-+bool 'Use Keyboard device file (EXPERIMENTAL)' CONFIG_KBD_DEV_FILE
- if [ "$CONFIG_SA1100_COLLIE" = "y" ]; then
- bool 'COLLIE serial port support' CONFIG_SERIAL_COLLIE
- dep_bool ' Console on COLLIE serial port' CONFIG_SERIAL_COLLIE_CONSOLE $CONFIG_SERIAL_COLLIE
-@@ -216,6 +232,7 @@
- if [ "$CONFIG_ARCH_SHARP_SL" = "y" ]; then
- tristate 'Cotulla Real Time Clock' CONFIG_COTULLA_RTC
- tristate 'ADS7846 Touch Pannel' CONFIG_ADS7846_TS
-+ tristate 'Tosa Touch Pannel' CONFIG_TOSA_TS
- fi
- if [ "$CONFIG_SABINAL_DISCOVERY" = "y" ]; then
- tristate 'Discovery LED ' CONFIG_DISCOVERY_LED $(CONFIG_SABINAL_DISCOVERY)
-diff -Nur linux_c860_org/drivers/char/Makefile linux/drivers/char/Makefile
---- linux_c860_org/drivers/char/Makefile 2002-10-11 21:13:44.000000000 +0900
-+++ linux/drivers/char/Makefile 2004-06-10 21:09:10.000000000 +0900
-@@ -12,7 +12,8 @@
- #
- # This file contains the font map for the default (hardware) font
- #
--FONTMAPFILE = cp437.uni
-+#FONTMAPFILE = cp437.uni
-+FONTMAPFILE = direct.uni
-
- O_TARGET := char.o
-
-@@ -114,6 +115,11 @@
- KEYMAP := corgi_keymap.o
- # SERIAL =
- endif
-+ ifeq ($(CONFIG_ARCH_PXA_TOSA),y)
-+ KEYBD := tosa_keyb.o tosa_logkey.o
-+ KEYMAP := tosa_keymap.o
-+# SERIAL =
-+ endif
- endif
-
- ifeq ($(ARCH),sh)
-@@ -232,6 +238,9 @@
- obj-$(CONFIG_DISCOVERY_LED) += sharp_led.o discovery_led.o
- obj-$(CONFIG_ARCH_PXA_POODLE) += sharp_led.o sharp_kbdctl.o sharpsl_led.o sharp_buzzer.o
- obj-$(CONFIG_ARCH_PXA_CORGI) += sharp_led.o sharpsl_led.o sharp_kbdctl.o corgi_rc.o sharp_buzzer.o
-+obj-$(CONFIG_ARCH_PXA_TOSA) += sharp_led.o sharpsl_led.o sharp_kbdctl.o
-+obj-$(CONFIG_BUZZER_TOSA) += sharp_buzzer.o
-+
- obj-$(CONFIG_BUSMOUSE) += busmouse.o
- obj-$(CONFIG_DTLK) += dtlk.o
- obj-$(CONFIG_R3964) += n_r3964.o
-@@ -248,6 +257,7 @@
- obj-$(CONFIG_SA1100_RTC) += sa1100-rtc.o
- obj-$(CONFIG_COTULLA_RTC) += cotulla-rtc.o
- obj-$(CONFIG_ADS7846_TS) += ads7846_ts.o
-+obj-$(CONFIG_TOSA_TS) += tosa_ts.o
- ifeq ($(CONFIG_PPC),)
- obj-$(CONFIG_NVRAM) += nvram.o
- endif
-@@ -340,3 +350,7 @@
-
- corgi_keymap.c: corgi_keymap.map
- set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
-+
-+tosa_keymap.c: tosa_keymap.map
-+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
-+
-diff -Nur linux_c860_org/drivers/char/ads7846_ts.c linux/drivers/char/ads7846_ts.c
---- linux_c860_org/drivers/char/ads7846_ts.c 2003-06-18 16:12:26.000000000 +0900
-+++ linux/drivers/char/ads7846_ts.c 2004-06-10 21:09:10.000000000 +0900
-@@ -14,6 +14,7 @@
- * 31-Jul-2002 Lineo Japan, Inc. for ARCH_PXA
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
- * 27-Feb-2003 Sharp modified for Poodle
-+ * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
- *
- */
-
-@@ -85,7 +86,56 @@
- static DECLARE_WAIT_QUEUE_HEAD(queue);
- static int head, tail, sample;
- static char pendown = 0;
--unsigned long Pressure;
-+static unsigned long Pressure;
-+#if defined(CONFIG_SL_TS_PRESSURE) || defined(CONFIG_SL7X0_POWER_KEY_OFF) || \
-+ defined(CONFIG_SL_3BUTTON_PATCH) || defined(CONFIG_SL_WRITE_TS)
-+#include <linux/proc_fs.h>
-+#endif
-+
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+static unsigned long tsPressure;
-+#if defined(CONFIG_BOOT_PRESSURE_ON)
-+static unsigned int tspressure_mode = 1;
-+#else
-+static unsigned int tspressure_mode = 0;
-+#endif
-+
-+static ssize_t tspressure_read_params(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char outputbuf[32];
-+ int count;
-+
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(outputbuf, "%d\n", (unsigned int)tspressure_mode);
-+ count++;
-+ *ppos += count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count+1))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t tspressure_write_params(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ unsigned int param=0;
-+
-+ sscanf(buf,"%d",&param);
-+ if (tspressure_mode != param) {
-+ tspressure_mode = param;
-+ printk("tspressure = %d\n", tspressure_mode);
-+ }
-+ return nbytes;
-+}
-+
-+static struct file_operations proc_tspressure_operations = {
-+ read: tspressure_read_params,
-+ write: tspressure_write_params,
-+};
-+#endif
- #if defined(CONFIG_ARCH_PXA_CORGI)
- static char ispass = 1;
- #endif
-@@ -97,6 +147,88 @@
- static char PowerDownMode = PMPD_MODE_ACTIVE;
- #endif // CONFIG_PM
- #endif
-+
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF)
-+extern unsigned int power_key_off_mode;
-+
-+static ssize_t power_key_off_read_params(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char outputbuf[32];
-+ int count;
-+
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(outputbuf, "%d\n", (unsigned int)power_key_off_mode);
-+ count++;
-+ *ppos += count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count+1))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t power_key_off_write_params(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ unsigned int param=0;
-+
-+ sscanf(buf,"%d",&param);
-+ if (power_key_off_mode != param) {
-+ power_key_off_mode = param;
-+ printk("power_key_off = %d\n", power_key_off_mode);
-+ }
-+ return nbytes;
-+}
-+
-+static struct file_operations proc_power_key_off_operations = {
-+ read: power_key_off_read_params,
-+ write: power_key_off_write_params,
-+};
-+#endif
-+
-+#if defined(CONFIG_SL_3BUTTON_PATCH)
-+extern int pressure_alt;
-+extern unsigned int three_button_mode;
-+
-+static ssize_t three_button_read_params(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char outputbuf[32];
-+ int count;
-+
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(outputbuf, "%d\n", (unsigned int)three_button_mode);
-+ count++;
-+ *ppos += count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count+1))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t three_button_write_params(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ unsigned int param=0;
-+
-+ sscanf(buf,"%d",&param);
-+ if (three_button_mode != param) {
-+ three_button_mode = param;
-+ printk("three_button = %d\n", three_button_mode);
-+ }
-+ return nbytes;
-+}
-+
-+static struct file_operations proc_three_button_operations = {
-+ read: three_button_read_params,
-+ write: three_button_write_params,
-+};
-+#endif
-+
- //extern unsigned short touch_panel_intr;
-
- #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-@@ -147,7 +279,7 @@
-
- //#define WAIT_AFTER_SYNC_HS 151 /* 41us */
- //#define WAIT_AFTER_SYNC_HS 142 /* 38.5us */
--static unsigned long wait_after_sync_hs = 0;
-+static long wait_after_sync_hs = 0;
- #define WAIT_AFTER_SYNC_HS wait_after_sync_hs
- #define SyncHS() while((GPLR(GPIO_HSYNC) & GPIO_bit(GPIO_HSYNC)) == 0);\
- while((GPLR(GPIO_HSYNC) & GPIO_bit(GPIO_HSYNC)) != 0);
-@@ -157,20 +289,35 @@
- #if 1
- #define WAIT_HS_333_VGA 5791 // 17.995us
- #define WAIT_HS_400_VGA 7013 // 17.615us
-+#define WAIT_HS_471_VGA 8257 // 17.615us
-+#define WAIT_HS_400_VGA_FASTSYSCLK 5260 // 17.615us
-+#define WAIT_HS_471_VGA_FASTSYSCLK 6192 // 17.615us
-+
-+#define WAIT_HS_400_VGA640 21376 // 17.615us
-+#define WAIT_HS_471_VGA640 25170 // 17.615us
-+#define WAIT_HS_400_VGA640_FASTSYSCLK 16032 // 17.615us
-+#define WAIT_HS_471_VGA640_FASTSYSCLK 18878 // 17.615us
-+
-+
- #define WAIT_HS_333_QVGA 13969 // 42.100us
- #define WAIT_HS_400_QVGA 16621 // 41.750us
-+#define WAIT_HS_471_QVGA 19571 // 41.750us
-+
- #else
- #define WAIT_HS_333_VGA 6403 // 19.3us
- #define WAIT_HS_400_VGA 7683 // 19.3us
- #define WAIT_HS_333_QVGA 13935 // 42.0us
- #define WAIT_HS_400_QVGA 16720 // 42.0us
-+
- #endif
- #define LCD_MODE_480 0
- #define LCD_MODE_320 1
- #define LCD_MODE_240 2
-+#define LCD_MODE_640 3
- extern int w100fb_lcdMode;
- extern int w100fb_isblank;
- extern unsigned long cccr_reg;
-+extern int fastsysclk_mode;
-
- static int sync_receive_data_send_cmd(int doRecive,int doSend,int sCmd)
- {
-@@ -195,21 +342,54 @@
- // 332MHz
- if (w100fb_lcdMode == LCD_MODE_480) {
- wait_time = WAIT_HS_333_VGA - wait_after_sync_hs;
-- }
-- else {
-+ }else {
- wait_time = WAIT_HS_333_QVGA - wait_after_sync_hs;
- }
-- }
-- else {
-- // 400MHz
-- if (w100fb_lcdMode == LCD_MODE_480) {
-- wait_time = WAIT_HS_400_VGA - wait_after_sync_hs;
-+ }else if(cccr_reg == 0x242 || cccr_reg == 0x162) {
-+
-+ // 471MHz
-+ if (fastsysclk_mode == 100 ){
-+ if (w100fb_lcdMode == LCD_MODE_480) {
-+ wait_time = WAIT_HS_471_VGA_FASTSYSCLK - wait_after_sync_hs;
-+ }else if(w100fb_lcdMode == LCD_MODE_640){
-+ wait_time = WAIT_HS_471_VGA640_FASTSYSCLK - wait_after_sync_hs;
-+ }else {
-+ wait_time = WAIT_HS_471_QVGA - wait_after_sync_hs;
-+ }
-+ }else {
-+ if (w100fb_lcdMode == LCD_MODE_480) {
-+ wait_time = WAIT_HS_471_VGA - wait_after_sync_hs;
-+ }else if(w100fb_lcdMode == LCD_MODE_640){
-+ wait_time = WAIT_HS_471_VGA640 - wait_after_sync_hs;
-+ }else {
-+ wait_time = WAIT_HS_471_QVGA - wait_after_sync_hs;
-+ }
- }
-- else {
-- wait_time = WAIT_HS_400_QVGA - wait_after_sync_hs;
-+
-+ }else {
-+
-+ // 400MHz
-+ if (fastsysclk_mode == 100 ){
-+ if (w100fb_lcdMode == LCD_MODE_480) {
-+ wait_time = WAIT_HS_400_VGA_FASTSYSCLK - wait_after_sync_hs;
-+ }else if(w100fb_lcdMode == LCD_MODE_640){
-+ wait_time = WAIT_HS_400_VGA640_FASTSYSCLK - wait_after_sync_hs;
-+ }else {
-+ wait_time = WAIT_HS_400_QVGA - wait_after_sync_hs;
-+ }
-+ }else {
-+ if (w100fb_lcdMode == LCD_MODE_480) {
-+ wait_time = WAIT_HS_400_VGA - wait_after_sync_hs;
-+ }else if(w100fb_lcdMode == LCD_MODE_640){
-+ wait_time = WAIT_HS_400_VGA640 - wait_after_sync_hs;
-+ }else {
-+ wait_time = WAIT_HS_400_QVGA - wait_after_sync_hs;
-+ }
- }
- }
-
-+
-+
- CCNT_ON();
-
- /* polling HSync */
-@@ -229,7 +409,7 @@
-
- /* Wait after HSync */
- CCNT(timer2);
-- if (w100fb_lcdMode != LCD_MODE_480) {
-+ if ((w100fb_lcdMode != LCD_MODE_480) && (w100fb_lcdMode != LCD_MODE_640)) {
- while((timer2-timer1) < wait_time){
- CCNT(timer2);
- }
-@@ -324,7 +504,11 @@
- ((int)((x)-(y))<(int)(d)) && \
- ((int)((y)-(x))<(int)(d)) )
- unsigned long cmd;
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ unsigned int t,x,y,z[2],z2,dummy;
-+#else
- unsigned int t,x,y,z[2];
-+#endif
- int i,j,k;
- int d = 8, c = 10;
- int err = 0;
-@@ -335,7 +519,18 @@
- (3u << ADSCTRL_ADR_SH) | (1u << ADSCTRL_STS_SH);
- t = ads7846_rw(cmd);
- z[i] = ads7846_rw(cmd);
--
-+
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode) {
-+ /* Z2 */
-+ cmd = (1u << ADSCTRL_PD0_SH) | (1u << ADSCTRL_PD1_SH) |
-+ (4u << ADSCTRL_ADR_SH) | (1u << ADSCTRL_STS_SH);
-+ dummy = ads7846_rw(cmd);
-+ udelay(1);
-+ z2 = ads7846_rw(cmd);
-+ }
-+#endif
-+
- if( i ) break;
-
- /* X-axis */
-@@ -369,6 +564,10 @@
- }
- }
- Pressure = 1;
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode)
-+ if (z[1]) tsPressure = (15000 - x * (z2 - z[1]) / z[1]) >> 4;
-+#endif
- for(i=0;i<2;i++){
- if( !z[i] )
- Pressure = 0;
-@@ -482,12 +681,19 @@
-
- // printk("x=%d,y=%d\n",tp->xd,tp->yd);
-
-- if (z1 != 0)
-+ if (z1 != 0) {
- Pressure = Rx * (tp->xd) * ((10*z2/z1) - 1*10) >> 10;
-- else
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode)
-+ tsPressure = (15000 - x[3] * (z2 - z1) / z1) >> 4;
-+ }
-+#endif
-+ else
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ tsPressure = Pressure = 0;
-+#else
- Pressure = 0;
--
--
-+#endif
- cmd = (1u << ADSCTRL_PD0_SH) | (1u << ADSCTRL_PD1_SH) |
- (4u << ADSCTRL_ADR_SH) | (1u << ADSCTRL_STS_SH);
- /* Power-Down Enable */
-@@ -566,11 +772,25 @@
- // printk("fail %d\n", fail);
-
- if (fail == TOUCH_PANEL_AVERAGE) {
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ tsPressure = Pressure = 0;
-+#else
- Pressure = 0;
-+#endif
- // printk("pen up\n");
- }
- else {
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode) {
-+ if (z1) {
-+ tsPressure = Pressure = (15000 - x * (z2 - z1) / z1) >> 4;
-+ } else
-+ tsPressure = Pressure = 0;
-+ } else
-+ tsPressure = Pressure = 1;
-+#else
- Pressure = 1;
-+#endif
- tp->xd = tx / (TOUCH_PANEL_AVERAGE - fail);
- tp->yd = ty / (TOUCH_PANEL_AVERAGE - fail);
- // printk("pen position (%d,%d)\n", tx, ty);
-@@ -742,7 +962,11 @@
-
- static void new_data(void)
- {
-+#if !defined(CONFIG_ARCH_PXA_CORGI) && !defined(CONFIG_ARCH_PXA_POODLE)
-+#if !defined(CONFIG_POODLE_TR0)
- int diff0, diff1, diff2, diff3;
-+#endif
-+#endif
-
- #ifdef CONFIG_PM
- if( PowerDownMode != PMPD_MODE_ACTIVE )
-@@ -862,6 +1086,25 @@
- }
- #endif
-
-+/// write ts data
-+#if defined(CONFIG_SL_WRITE_TS)
-+static void write_new_data(TS_EVENT write_data)
-+{
-+ write_data.millisecs = jiffies;
-+ tbuf[head++] = write_data;
-+
-+ if (head >= BUFSIZE) { head = 0; }
-+
-+ if (head == tail && ++tail >= BUFSIZE) { tail = 0; }
-+
-+ if (fasync)
-+ kill_fasync(&fasync, SIGIO, POLL_IN);
-+
-+ wake_up_interruptible(&queue);
-+}
-+#endif
-+
-+
- static void cotulla_main_ts_timer(unsigned long irq)
- {
- // ts_interrupt(irq, NULL, NULL);
-@@ -896,6 +1139,7 @@
- // printk("!(%d,%d)",pos_dt.xd,pos_dt.yd);
- tc.x = pos_dt.xd;
- tc.y = pos_dt.yd;
-+
- #if defined(CONFIG_ARCH_PXA_POODLE)
- lock_FCS(POWER_MODE_TOUCH, 1); // not enter FCS mode.
- #if defined(CONFIG_POODLE_TR0)
-@@ -907,11 +1151,53 @@
- tc.pressure = 500;
- #elif defined(CONFIG_ARCH_PXA_CORGI)
- if( pos_dt.xd && pos_dt.yd && Pressure ) {
-+#if defined(CONFIG_SL_3BUTTON_PATCH)
-+ if (three_button_mode) {
-+ switch (pressure_alt) {
-+ case 0x00:
-+ tc.pressure = 500;
-+ break;
-+ case 0x01:
-+ tc.pressure = 1000;
-+ break;
-+ case 0x02:
-+ tc.pressure = 2000;
-+ break;
-+ default:
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode)
-+ tc.pressure = Pressure;
-+ else
-+ tc.pressure = 500;
-+#else
-+ tc.pressure = 500;
-+#endif
-+ break;
-+ }
-+
-+ /* printk("pressure = %d \n",tc.pressure); */
-+ } else
-+#endif
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode)
-+ tc.pressure = Pressure;
-+ else
-+ tc.pressure = 500;
-+#else
- tc.pressure = 500;
-+#endif
-+
- #else
- if( pos_dt.xd && pos_dt.yd ){
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode)
-+ tc.pressure = Pressure;
-+ else
-+ tc.pressure = 1;
-+#else
- tc.pressure = 1;
- #endif
-+#endif
- before_data = tc;
- pendown = 1;
- new_data();
-@@ -956,7 +1242,37 @@
- static void ts_hardware_init(void)
- {
- unsigned int dummy;
-+
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ struct proc_dir_entry *tspressure_proc;
-+#endif
-+
-+#if defined(CONFIG_SL_3BUTTON_PATCH)
-+ struct proc_dir_entry *three_button_proc;
-+#endif
-+
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF)
-+ struct proc_dir_entry *power_key_off_proc;
-+#endif
-+
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ tspressure_proc = create_proc_entry("tspressure", 0, NULL);
-+ if (tspressure_proc)
-+ tspressure_proc->proc_fops = &proc_tspressure_operations;
-+#endif
-
-+#if defined(CONFIG_SL_3BUTTON_PATCH)
-+ three_button_proc = create_proc_entry("three_button", 0, NULL);
-+ if (three_button_proc)
-+ three_button_proc->proc_fops = &proc_three_button_operations;
-+#endif
-+
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF)
-+ power_key_off_proc = create_proc_entry("power_key_off", 0, NULL);
-+ if (power_key_off_proc)
-+ power_key_off_proc->proc_fops = &proc_power_key_off_operations;
-+#endif
-+
- #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
- pxa_ssp_init();
- #else
-@@ -1043,6 +1359,7 @@
- y_rev = 0;
- xyswap = 1;
- #else
-+#ifdef CONFIG_FBCON_ROTATE_R
- res_x = 480;
- res_y = 640;
-
-@@ -1050,7 +1367,17 @@
- x_rev = 1;
- y_rev = 0;
- xyswap = 1;
-+#else
-+ res_x = 640;
-+ res_y = 480;
-+
-+ cal_ok = 1;
-+ x_rev = 0;
-+ y_rev = 0;
-+ xyswap = 0;
-+#endif
- #endif
-+
- #else
- #ifdef USE_SL5500_QT
- res_x = 240;
-@@ -1170,7 +1497,6 @@
-
- r.pressure = t.pressure;
- r.millisecs = t.millisecs;
-- //printk("ts:ts_read(x, y, p) = (%d, %d, %d)\n", (unsigned int)r.x, (unsigned int)r.y, (unsigned int)r.pressure);
-
- copy_to_user(buffer,&r,sizeof(TS_EVENT));
- }
-@@ -1180,10 +1506,54 @@
- static ssize_t ts_write(struct file *file, const char *buffer, size_t count, loff_t *ppos)
- {
- #if defined(CONFIG_ARCH_PXA_CORGI)
-- unsigned long param;
- char *endp;
-- wait_after_sync_hs = simple_strtoul(buffer, &endp, 0);
-+#if defined(CONFIG_SL_WRITE_TS)
-+
-+ static TS_EVENT data, raw_data;
-+ char tmp[50];
-+ int len;
-+ len=49;
-+ if(len>count) len=count;
-+ copy_from_user(tmp,buffer,len);
-+ tmp[len]='\0';
-+
-+ if (sscanf(tmp,"%d %d %d %d",&data.pressure, &data.x, &data.y, &data.millisecs) == 4) {
-+// printk("pressure= %d : x= %d : y= %d : millosecs= %d\n", data.pressure, data.x, data.y, data.millisecs);
-+
-+ if (cal_ok) {
-+ raw_data.x = (x_rev) ? raw_max_x - ((raw_max_x - raw_min_x) * data.x) / res_x
-+ : raw_min_x + ((raw_max_x - raw_min_x) * data.x) / res_x;
-+
-+ raw_data.y = (y_rev) ? raw_max_y - ((raw_max_y - raw_min_y) * data.y) / res_y
-+ : raw_min_y + ((raw_max_y - raw_min_y) * data.y) / res_y;
-+
-+ } else {
-+ raw_data.x = data.x;
-+ raw_data.y = data.y;
-+ }
-+
-+ if (xyswap) {
-+ short tmp = raw_data.x;
-+ raw_data.x = raw_data.y;
-+ raw_data.y = tmp;
-+ }
-+
-+ raw_data.pressure = data.pressure;
-+ raw_data.millisecs = data.millisecs;
-+
-+ write_new_data(raw_data);
-+ return count;
-+
-+ }else {
-+#endif
-+ wait_after_sync_hs = simple_strtol(buffer, &endp, 0);
-+ printk("Wait_after_sync_hs: %d\n",(int) wait_after_sync_hs);
- return count+endp-buffer;
-+
-+#if defined(CONFIG_SL_WRITE_TS)
-+ }
-+#endif
-+
- #else
- return 0;
- #endif
-@@ -1234,6 +1604,13 @@
- case 17: /* Clear all buffer data */
- print_par();
- break;
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ case 64: /* read Pressure */
-+ if (tspressure_mode) {
-+ copy_to_user((void *)arg, &tsPressure, sizeof(tsPressure));
-+ break;
-+ }
-+#endif
- default:
- return -EINVAL;
- }
-diff -Nur linux_c860_org/drivers/char/console.c linux/drivers/char/console.c
---- linux_c860_org/drivers/char/console.c 2002-12-18 19:27:56.000000000 +0900
-+++ linux/drivers/char/console.c 2004-06-10 21:09:10.000000000 +0900
-@@ -94,6 +94,11 @@
- #include <linux/slab.h>
- #include <linux/major.h>
- #include <linux/mm.h>
-+
-+#ifdef CONFIG_UNICON
-+#include <linux/fb_doublebyte.h>
-+#endif
-+
- #include <linux/console.h>
- #include <linux/init.h>
- #include <linux/devfs_fs_kernel.h>
-@@ -118,7 +123,10 @@
-
- #include "console_macros.h"
-
--
-+#ifdef CONFIG_UNICON
-+#define video_erase_char_ext ((video_erase_char)&0xff)
-+extern unsigned short translations[][256];
-+#endif
- const struct consw *conswitchp;
-
- /* A bitmap for codes <32. A bit of 1 indicates that the code
-@@ -244,6 +252,20 @@
- p = sw->con_screen_pos(vc_cons[currcons].d, offset);
- return p;
- }
-+#ifdef CONFIG_UNICON
-+static inline unsigned short *screenpos_ext(int currcons, int offset, int viewed)
-+{
-+ unsigned short *p;
-+
-+ if (!viewed)
-+ p = (unsigned short *)(origin + offset + screenbuf_size);
-+ else if (!sw->con_screen_pos)
-+ p = (unsigned short *)(visible_origin + offset + screenbuf_size);
-+ else
-+ p = sw->con_screen_pos(vc_cons[currcons].d, -offset-1);
-+ return p;
-+}
-+#endif
-
- static inline void scrolldelta(int lines)
- {
-@@ -270,6 +292,14 @@
- s = (unsigned short *) (origin+video_size_row*(t+nr));
- scr_memcpyw(d, s, (b-t-nr) * video_size_row);
- scr_memsetw(d + (b-t-nr) * video_num_columns, video_erase_char, video_size_row*nr);
-+
-+#ifdef CONFIG_UNICON
-+ d += (screenbuf_size>>1);
-+ s += (screenbuf_size>>1);
-+ scr_memcpyw(d, s, (b-t-nr) * video_size_row);
-+ scr_memsetw(d + (b-t-nr) * video_num_columns, video_erase_char_ext, video_size_row*nr);
-+#endif
-+
- }
-
- static void
-@@ -288,6 +318,11 @@
- step = video_num_columns * nr;
- scr_memmovew(s + step, s, (b-t-nr)*video_size_row);
- scr_memsetw(s, video_erase_char, 2*step);
-+#ifdef CONFIG_UNICON
-+ s += (screenbuf_size>>1);
-+ scr_memmovew(s + step, s, (b-t-nr)*video_size_row);
-+ scr_memsetw(s, video_erase_char_ext, 2*step);
-+#endif
- }
-
- static void do_update_region(int currcons, unsigned long start, int count)
-@@ -311,6 +346,10 @@
- int startx = xx;
- u16 *q = p;
- while (xx < video_num_columns && count) {
-+#ifdef CONFIG_UNICON
-+ //line by line, so the following putcs will be assured to
-+ //handle only in-line string.
-+#endif
- if (attrib != (scr_readw(p) & 0xff00)) {
- if (p > q)
- sw->con_putcs(vc_cons[currcons].d, q, p-q, yy, startx);
-@@ -440,6 +479,39 @@
- }
-
- /* used by selection: complement pointer position */
-+#ifdef CONFIG_UNICON
-+void complement_pos(int currcons, int offset)
-+{
-+ static unsigned short *p = NULL;
-+ static unsigned short old = 0;
-+ static unsigned short oldx = 0, oldy = 0;
-+ static unsigned short *p_ext = NULL;
-+ static unsigned short old_ext = 0;
-+
-+ if (p) {
-+ scr_writew(old, p);
-+ //scr_writew(old_ext, p_ext);
-+ if (DO_UPDATE)
-+ sw->con_putc(vc_cons[currcons].d, (old_ext<<16)| old, oldy, oldx);
-+ }
-+ if (offset == -1)
-+ p = NULL;
-+ else {
-+ unsigned short new;
-+ p = screenpos(currcons, offset, 1);
-+ p_ext = screenpos_ext(currcons, offset, 1);
-+ old = scr_readw(p);
-+ old_ext = scr_readw(p_ext);
-+ new = old ^ complement_mask;
-+ scr_writew(new, p);
-+ if (DO_UPDATE) {
-+ oldx = (offset >> 1) % video_num_columns;
-+ oldy = (offset >> 1) / video_num_columns;
-+ sw->con_putc(vc_cons[currcons].d, (old_ext<<16) | new, oldy, oldx);
-+ }
-+ }
-+}
-+#else
- void complement_pos(int currcons, int offset)
- {
- static unsigned short *p;
-@@ -466,15 +538,23 @@
- }
- }
- }
--
-+#endif
- static void insert_char(int currcons, unsigned int nr)
- {
- unsigned short *p, *q = (unsigned short *) pos;
-
- p = q + video_num_columns - nr - x;
-- while (--p >= q)
-+ while (--p >= q) {
- scr_writew(scr_readw(p), p + nr);
-+#ifdef CONFIG_UNICON
-+ scr_writew(scr_readw(p+(screenbuf_size>>1)),p+(screenbuf_size>>1)+nr);
-+#endif
-+ }
- scr_memsetw(q, video_erase_char, nr*2);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw(q+(screenbuf_size>>1),video_erase_char_ext,nr*2);
-+#endif
-+
- need_wrap = 0;
- if (DO_UPDATE) {
- unsigned short oldattr = attr;
-@@ -482,8 +562,9 @@
- video_num_columns-x-nr);
- attr = video_erase_char >> 8;
- while (nr--)
-- sw->con_putc(vc_cons[currcons].d,
-+ sw->con_putc(vc_cons[currcons].d,
- video_erase_char,y,x+nr);
-+
- attr = oldattr;
- }
- }
-@@ -492,12 +573,17 @@
- {
- unsigned int i = x;
- unsigned short *p = (unsigned short *) pos;
--
- while (++i <= video_num_columns - nr) {
- scr_writew(scr_readw(p+nr), p);
-+#ifdef CONFIG_UNICON
-+ scr_writew(scr_readw(p+nr+(screenbuf_size>>1)),p+(screenbuf_size>>1));
-+#endif
- p++;
- }
- scr_memsetw(p, video_erase_char, nr*2);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw(p+(screenbuf_size>>1), video_erase_char_ext, nr*2);
-+#endif
- need_wrap = 0;
- if (DO_UPDATE) {
- unsigned short oldattr = attr;
-@@ -506,8 +592,8 @@
- attr = video_erase_char >> 8;
- while (nr--)
- sw->con_putc(vc_cons[currcons].d,
-- video_erase_char, y,
-- video_num_columns-1-nr);
-+ video_erase_char, y,
-+ video_num_columns-1-nr);
- attr = oldattr;
- }
- }
-@@ -528,7 +614,11 @@
- if ((type & 0x40) && ((i & 0x700) == ((i & 0x7000) >> 4))) i ^= 0x0700;
- scr_writew(i, (u16 *) pos);
- if (DO_UPDATE)
-+#ifndef CONFIG_UNICON
- sw->con_putc(vc_cons[currcons].d, i, y, x);
-+#else
-+ sw->con_putc(vc_cons[currcons].d, scr_readw((u16 *) pos+ (screenbuf_size>>1))<<16 | (i & 0xffff), y, x);
-+#endif
- }
-
- static void hide_cursor(int currcons)
-@@ -538,7 +628,11 @@
- if (softcursor_original != -1) {
- scr_writew(softcursor_original,(u16 *) pos);
- if (DO_UPDATE)
-+#ifndef CONFIG_UNICON
- sw->con_putc(vc_cons[currcons].d, softcursor_original, y, x);
-+#else
-+ sw->con_putc(vc_cons[currcons].d, scr_readw((u16 *) pos+ (screenbuf_size>>1))<<16 | softcursor_original, y, x);
-+#endif
- softcursor_original = -1;
- }
- sw->con_cursor(vc_cons[currcons].d,CM_ERASE);
-@@ -685,7 +779,11 @@
- visual_init(currcons, 1);
- if (!*vc_cons[currcons].d->vc_uni_pagedir_loc)
- con_set_default_unimap(currcons);
-+#ifndef CONFIG_UNICON
- q = (long)kmalloc(screenbuf_size, GFP_KERNEL);
-+#else
-+ q = (long)kmalloc(screenbuf_size*2,GFP_KERNEL);
-+#endif
- if (!q) {
- kfree((char *) p);
- vc_cons[currcons].d = NULL;
-@@ -727,7 +825,11 @@
- (cc == video_num_columns && ll == video_num_lines))
- newscreens[currcons] = NULL;
- else {
-+#ifndef CONFIG_UNICON
- unsigned short *p = (unsigned short *) kmalloc(ss, GFP_USER);
-+#else
-+ unsigned short *p = (unsigned short *) kmalloc(ss*2, GFP_USER);
-+#endif
- if (!p) {
- for (i = first; i< currcons; i++)
- if (newscreens[i])
-@@ -769,13 +871,23 @@
-
- while (ol < scr_end) {
- scr_memcpyw((unsigned short *) nl, (unsigned short *) ol, rlth);
-+#ifdef CONFIG_UNICON
-+ scr_memcpyw((unsigned short *) (nl + ss), (unsigned short*) (ol + oss), rlth);
-+#endif
- if (rrem)
- scr_memsetw((void *)(nl + rlth), video_erase_char, rrem);
-+#ifdef CONFIG_UNICON
-+ if (rrem)
-+ scr_memsetw((void *)(nl + rlth + ss), video_erase_char_ext, rrem);
-+#endif
- ol += osr;
- nl += sr;
- }
- if (nlend > nl)
- scr_memsetw((void *) nl, video_erase_char, nlend - nl);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw((void *) (nl + ss), video_erase_char_ext, nlend - nl);
-+#endif
- if (kmalloced)
- kfree(screenbuf);
- screenbuf = newscreens[currcons];
-@@ -998,6 +1110,9 @@
- return;
- }
- scr_memsetw(start, video_erase_char, 2*count);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw(start + (screenbuf_size>>1), video_erase_char_ext, 2*count);
-+#endif
- need_wrap = 0;
- }
-
-@@ -1032,6 +1147,9 @@
- return;
- }
- scr_memsetw(start, video_erase_char, 2 * count);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw(start + (screenbuf_size>>1), video_erase_char_ext, 2*count);
-+#endif
- need_wrap = 0;
- }
-
-@@ -1044,6 +1162,9 @@
- count = (vpar > video_num_columns-x) ? (video_num_columns-x) : vpar;
-
- scr_memsetw((unsigned short *) pos, video_erase_char, 2 * count);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw((unsigned short *) pos + (screenbuf_size>>1), video_erase_char_ext, 2*count);
-+#endif
- if (DO_UPDATE)
- sw->con_clear(vc_cons[currcons].d, y, x, 1, count);
- need_wrap = 0;
-@@ -1720,7 +1841,12 @@
- if (ques) {
- clear_selection();
- if (par[0])
-+#ifndef CONFIG_UNICON
- complement_mask = par[0]<<8 | par[1];
-+#else
-+ // force the low byte to be zero
-+ complement_mask = par[0]<<8;
-+#endif
- else
- complement_mask = s_complement_mask;
- return 0;
-@@ -1966,6 +2092,11 @@
- const unsigned char *orig_buf;
- int orig_count;
-
-+#ifdef CONFIG_UNICON
-+#define GB_LEFT 0x8000
-+#define GB_RIGHT 0xc000
-+#endif
-+
- if (in_interrupt())
- return count;
-
-@@ -2076,6 +2207,56 @@
- ((attr << 8) & ~himask) + ((tc & 0x100) ? himask : 0) + (tc & 0xff) :
- (attr << 8) + tc,
- (u16 *) pos);
-+#ifdef CONFIG_UNICON
-+#define HIGH_WORD ((u16 *) ((long)pos + screenbuf_size))
-+#define HIGH_WORD_PREV ((u16 *) ((long)pos - 2 + screenbuf_size))
-+#define HIGH_WORD_NEXT ((u16 *) ((long)pos + 2 + screenbuf_size))
-+ /*
-+ * following condiction we do not tread the char as
-+ * double byte.
-+ * 1. default encoding is NULL. The encode module not
-+ * install yet.
-+ * 2. Current char set is not the default one. We are
-+ * possible drawing a table lines right now.
-+ * -Chris
-+ */
-+
-+ if (doublebyte_default && translate == translations[0]
-+ && (pos==origin||!(scr_readw(HIGH_WORD_PREV)&DB_HALF_MASK))
-+ && doublebyte_default->is_left(tc)){
-+ /*possible the left char of the Double Byte
-+ , but we don't know yet, because the right
-+ char is unknow right now. So mark it as
-+ Half char, the possible candidate
-+ -Chris
-+ */
-+ scr_writew(DB_HALF_MASK,HIGH_WORD);
-+
-+ } else if(doublebyte_default&& translate == translations
-+ && scr_readw(HIGH_WORD_PREV)==DB_HALF_MASK
-+ && doublebyte_default->is_right(tc)) {
-+ scr_writew(DB_LEFT|(tc & 0xff),HIGH_WORD_PREV);
-+ scr_writew(DB_RIGHT|(scr_readw((u16*)(pos-2))&0xff),HIGH_WORD);
-+ if (DO_UPDATE && draw_x < 0) {
-+ draw_from = pos-2 ;
-+ if (x>0) {
-+ draw_x = x-1;
-+ } else {
-+ draw_to = pos;
-+ draw_x = video_num_columns -1;
-+ y--;
-+ FLUSH
-+ y++;
-+ draw_x = 0;
-+ draw_from = pos;
-+ }
-+ }
-+ } else {
-+ /*normal ASCII or table lines, clean hight byte*/
-+ scr_writew(0,HIGH_WORD);
-+ }
-+
-+#endif
- if (DO_UPDATE && draw_x < 0) {
- draw_x = x;
- draw_from = pos;
-@@ -2234,6 +2415,9 @@
- continue;
- }
- scr_writew((attr << 8) + c, (unsigned short *) pos);
-+#ifdef CONFIG_UNICON
-+ scr_writew(0,(unsigned short *) pos + (screenbuf_size>>1));
-+#endif
- cnt++;
- if (myx == video_num_columns - 1) {
- need_wrap = 1;
-@@ -2591,7 +2775,11 @@
- vt_cons[currcons] = (struct vt_struct *)
- alloc_bootmem(sizeof(struct vt_struct));
- visual_init(currcons, 1);
-+#ifdef CONFIG_UNICON
-+ screenbuf = (unsigned short *) alloc_bootmem(screenbuf_size * 2);
-+#else
- screenbuf = (unsigned short *) alloc_bootmem(screenbuf_size);
-+#endif
- kmalloced = 0;
- vc_init(currcons, video_num_lines, video_num_columns,
- currcons || !sw->con_save_screen);
-@@ -3064,7 +3252,12 @@
- gotoxy(currcons, p[0], p[1]);
- set_cursor(currcons);
- }
--
-+#ifdef CONFIG_UNICON
-+/*
-+Now, the unicon doesn't support vcs!
-+To support it, first change the vc_screen.c!
-+*/
-+#endif
- u16 vcs_scr_readw(int currcons, const u16 *org)
- {
- if ((unsigned long)org == pos && softcursor_original != -1)
-@@ -3106,6 +3299,15 @@
- /*
- * Visible symbols for modules
- */
-+#ifdef CONFIG_UNICON
-+int (*Unicon_fnKeyHook)
-+ (struct tty_struct *tty, unsigned char ch, char flag) = NULL;
-+int (*Unicon_fnLowerKeyHook) (unsigned char ch) = NULL;
-+
-+EXPORT_SYMBOL(Unicon_fnLowerKeyHook);
-+EXPORT_SYMBOL(Unicon_fnKeyHook);
-+EXPORT_SYMBOL(vc_cons);
-+#endif
-
- EXPORT_SYMBOL(color_table);
- EXPORT_SYMBOL(default_red);
-diff -Nur linux_c860_org/drivers/char/consolemap.c linux/drivers/char/consolemap.c
---- linux_c860_org/drivers/char/consolemap.c 2002-08-26 14:38:30.000000000 +0900
-+++ linux/drivers/char/consolemap.c 2004-06-10 21:09:10.000000000 +0900
-@@ -22,7 +22,11 @@
- #include <linux/console_struct.h>
- #include <linux/vt_kern.h>
-
-+#ifndef CONFIG_UNICON
- static unsigned short translations[][256] = {
-+#else
-+unsigned short translations[][256] = {
-+#endif
- /* 8-bit Latin-1 mapped to Unicode -- trivial mapping */
- {
- 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
-diff -Nur linux_c860_org/drivers/char/corgi_logkey.c linux/drivers/char/corgi_logkey.c
---- linux_c860_org/drivers/char/corgi_logkey.c 2003-06-18 16:12:26.000000000 +0900
-+++ linux/drivers/char/corgi_logkey.c 2004-06-10 21:09:10.000000000 +0900
-@@ -605,6 +605,7 @@
-
- #if CHECK_ROLLOVER
- #define MAX_KEY_PRESS (6)
-+#define MAX_KEY_PRESS_THRESHOLD (6 + 1)
- #endif
-
- void sharppda_scan_key_gpio(void* dummy)
-@@ -707,8 +708,8 @@
- if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_FUNCTION)) {
- rollover_count--;
- }
-- if ((rollover_count > 3) ||
-- ((rollover_count == 3) &&
-+ if ((rollover_count > MAX_KEY_PRESS_THRESHOLD) ||
-+ ((rollover_count == MAX_KEY_PRESS_THRESHOLD) &&
- (!ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_TAB) ||
- ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_DIRECT_ON)) &&
- (!ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_VERTICAL) ||
-diff -Nur linux_c860_org/drivers/char/direct.uni linux/drivers/char/direct.uni
---- linux_c860_org/drivers/char/direct.uni 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/char/direct.uni 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,259 @@
-+0x00 U+0000
-+0x20 U+0020
-+0x21 U+0021
-+0x22 U+0022
-+0x23 U+0023
-+0x24 U+0024
-+0x25 U+0025
-+0x26 U+0026
-+0x27 U+0027
-+0x28 U+0028
-+0x29 U+0029
-+0x2a U+002a
-+0x2b U+002b
-+0x2c U+002c
-+0x2d U+002d
-+0x2e U+002e
-+0x2f U+002f
-+0x30 U+0030
-+0x31 U+0031
-+0x32 U+0032
-+0x33 U+0033
-+0x34 U+0034
-+0x35 U+0035
-+0x36 U+0036
-+0x37 U+0037
-+0x38 U+0038
-+0x39 U+0039
-+0x3a U+003a
-+0x3b U+003b
-+0x3c U+003c
-+0x3d U+003d
-+0x3e U+003e
-+0x3f U+003f
-+0x40 U+0040
-+0x41 U+0041
-+0x42 U+0042
-+0x43 U+0043
-+0x44 U+0044
-+0x45 U+0045
-+0x46 U+0046
-+0x47 U+0047
-+0x48 U+0048
-+0x49 U+0049
-+0x4a U+004a
-+0x4b U+004b
-+0x4c U+004c
-+0x4d U+004d
-+0x4e U+004e
-+0x4f U+004f
-+0x50 U+0050
-+0x51 U+0051
-+0x52 U+0052
-+0x53 U+0053
-+0x54 U+0054
-+0x55 U+0055
-+0x56 U+0056
-+0x57 U+0057
-+0x58 U+0058
-+0x59 U+0059
-+0x5a U+005a
-+0x5b U+005b
-+0x5c U+005c
-+0x5d U+005d
-+0x5e U+005e
-+0x5f U+005f
-+0x60 U+0060
-+0x61 U+0061
-+0x62 U+0062
-+0x63 U+0063
-+0x64 U+0064
-+0x65 U+0065
-+0x66 U+0066
-+0x67 U+0067
-+0x68 U+0068
-+0x69 U+0069
-+0x6a U+006a
-+0x6b U+006b
-+0x6c U+006c
-+0x6d U+006d
-+0x6e U+006e
-+0x6f U+006f
-+0x70 U+0070
-+0x71 U+0071
-+0x72 U+0072
-+0x73 U+0073
-+0x74 U+0074
-+0x75 U+0075
-+0x76 U+0076
-+0x77 U+0077
-+0x78 U+0078
-+0x79 U+0079
-+0x7a U+007a
-+0x7b U+007b
-+0x7c U+007c
-+0x7d U+007d
-+0x7e U+007e
-+0x7f U+007f
-+0x80 U+0080
-+0x81 U+0081
-+0x82 U+0082
-+0x83 U+0083
-+0x84 U+0084
-+0x85 U+0085
-+0x86 U+0086
-+0x87 U+0087
-+0x88 U+0088
-+0x89 U+0089
-+0x8a U+008a
-+0x8b U+008b
-+0x8c U+008c
-+0x8d U+008d
-+0x8e U+008e
-+0x8f U+008f
-+0x90 U+0090
-+0x91 U+0091
-+0x92 U+0092
-+0x93 U+0093
-+0x94 U+0094
-+0x95 U+0095
-+0x96 U+0096
-+0x97 U+0097
-+0x98 U+0098
-+0x99 U+0099
-+0x9a U+009a
-+0x9b U+009b
-+0x9c U+009c
-+0x9d U+009d
-+0x9e U+009e
-+0x9f U+009f
-+0xa0 U+00a0
-+0xa1 U+00a1
-+0xa2 U+00a2
-+0xa3 U+00a3
-+0xa4 U+00a4
-+0xa5 U+00a5
-+0xa6 U+00a6
-+0xa7 U+00a7
-+0xa8 U+00a8
-+0xa9 U+00a9
-+0xaa U+00aa
-+0xab U+00ab
-+0xac U+00ac
-+0xad U+00ad
-+0xae U+00ae
-+0xaf U+00af
-+0xb0 U+00b0
-+0xb1 U+00b1
-+0xb2 U+00b2
-+0xb3 U+00b3
-+0xb4 U+00b4
-+0xb5 U+00b5
-+0xb6 U+00b6
-+0xb7 U+00b7
-+0xb8 U+00b8
-+0xb9 U+00b9
-+0xba U+00ba
-+0xbb U+00bb
-+0xbc U+00bc
-+0xbd U+00bd
-+0xbe U+00be
-+0xbf U+00bf
-+0xc0 U+00c0
-+0xc1 U+00c1
-+0xc2 U+00c2
-+0xc3 U+00c3
-+0xc4 U+00c4
-+0xc5 U+00c5
-+0xc6 U+00c6
-+0xc7 U+00c7
-+0xc8 U+00c8
-+0xc9 U+00c9
-+0xca U+00ca
-+0xcb U+00cb
-+0xcc U+00cc
-+0xcd U+00cd
-+0xce U+00ce
-+0xcf U+00cf
-+0xd0 U+00d0
-+0xd1 U+00d1
-+0xd2 U+00d2
-+0xd3 U+00d3
-+0xd4 U+00d4
-+0xd5 U+00d5
-+0xd6 U+00d6
-+0xd7 U+00d7
-+0xd8 U+00d8
-+0xd9 U+00d9
-+0xda U+00da
-+0xdb U+00db
-+0xdc U+00dc
-+0xdd U+00dd
-+0xde U+00de
-+0xdf U+00df
-+0xe0 U+00e0
-+0xe1 U+00e1
-+0xe2 U+00e2
-+0xe3 U+00e3
-+0xe4 U+00e4
-+0xe5 U+00e5
-+0xe6 U+00e6
-+0xe7 U+00e7
-+0xe8 U+00e8
-+0xe9 U+00e9
-+0xea U+00ea
-+0xeb U+00eb
-+0xec U+00ec
-+0xed U+00ed
-+0xee U+00ee
-+0xef U+00ef
-+0xf0 U+00f0
-+0xf1 U+00f1
-+0xf2 U+00f2
-+0xf3 U+00f3
-+0xf4 U+00f4
-+0xf5 U+00f5
-+0xf6 U+00f6
-+0xf7 U+00f7
-+0xf8 U+00f8
-+0xf9 U+00f9
-+0xfa U+00fa
-+0xfb U+00fb
-+0xfc U+00fc
-+0xfd U+00fd
-+0xfe U+00fe
-+0xff U+00ff
-+0x07 U+2022
-+0x13 U+203c
-+0x4b U+212a
-+0x1b U+2190
-+0x18 U+2191
-+0x1a U+2192
-+0x19 U+2193
-+0x1d U+2194
-+0x12 U+2195
-+0x17 U+21a8
-+0x1c U+221f
-+0x16 U+25ac
-+0x1e U+25b2
-+0x10 U+25b6
-+0x10 U+25ba
-+0x1f U+25bc
-+0x11 U+25c0
-+0x11 U+25c4
-+0x04 U+25c6
-+0x09 U+25cb
-+0x08 U+25d8
-+0x0a U+25d9
-+0x01 U+263a
-+0x02 U+263b
-+0x0f U+263c
-+0x0c U+2640
-+0x0b U+2642
-+0x06 U+2660
-+0x05 U+2663
-+0x03 U+2665
-+0x04 U+2666
-+0x0d U+266a
-+0x0e U+266b
-+0x5f U+f804
-diff -Nur linux_c860_org/drivers/char/efirtc.c linux/drivers/char/efirtc.c
---- linux_c860_org/drivers/char/efirtc.c 2002-08-26 14:38:31.000000000 +0900
-+++ linux/drivers/char/efirtc.c 2004-06-10 21:09:10.000000000 +0900
-@@ -118,6 +118,7 @@
- static void
- convert_from_efi_time(efi_time_t *eft, struct rtc_time *wtime)
- {
-+ memset(wtime, 0, sizeof(struct rtc_time));
- wtime->tm_sec = eft->second;
- wtime->tm_min = eft->minute;
- wtime->tm_hour = eft->hour;
-diff -Nur linux_c860_org/drivers/char/keyboard.c linux/drivers/char/keyboard.c
---- linux_c860_org/drivers/char/keyboard.c 2002-12-18 19:27:58.000000000 +0900
-+++ linux/drivers/char/keyboard.c 2004-06-10 21:09:10.000000000 +0900
-@@ -40,6 +40,7 @@
-
- #include <asm/keyboard.h>
- #include <asm/bitops.h>
-+#include <asm/uaccess.h>
-
- #include <linux/kbd_kern.h>
- #include <linux/kbd_diacr.h>
-@@ -118,6 +119,23 @@
- static struct kbd_struct * kbd = kbd_table;
- static struct tty_struct * tty;
-
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF)
-+#if defined(CONFIG_BOOT_POWER_KEY_OFF)
-+unsigned int power_key_off_mode = 1;
-+#else
-+unsigned int power_key_off_mode = 0;
-+#endif
-+#endif
-+
-+#if defined(CONFIG_SL_3BUTTON_PATCH)
-+#if defined(CONFIG_BOOT_3BUTTON_PATCH_ON)
-+unsigned int three_button_mode = 1;
-+#else
-+unsigned int three_button_mode = 0;
-+#endif
-+int pressure_alt;
-+#endif
-+
- static void kbd_processkeycode(unsigned char scancode, char up_flag, int autorepeat);
- void compute_shiftstate(void);
-
-@@ -179,6 +197,8 @@
-
- static struct pm_dev *pm_kbd;
-
-+
-+
- /*
- * Many other routines do put_queue, but I think either
- * they produce ASCII, or they produce some user-assigned
-@@ -224,6 +244,55 @@
-
- void handle_scancode(unsigned char scancode, int down)
- {
-+
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF)
-+ /* printk("scancode = %x down = %x \n",scancode,down); */
-+ /* SL-C700 side power 0x6d */
-+ if ( power_key_off_mode && ( scancode == 0x6d ) && ( down == 0x01 ) ){
-+
-+ printk("power button\n");
-+ slc7x0_key_suspend();
-+
-+
-+ /* SL-C700 Calender down 0x58 */
-+ } else
-+#endif
-+#if defined(CONFIG_SL_3BUTTON_PATCH)
-+ if ( three_button_mode && ( scancode == 0x59 ) && ( down == 0x01 ) ){
-+
-+ pressure_alt=0x01;
-+ handle_scancode_main ( scancode, down );
-+
-+ /* SL-C700 Calender up 0xd8 */
-+ } else if ( three_button_mode && ( scancode == 0xd9 ) && ( down == 0x00 ) ){
-+
-+ pressure_alt=0x00;
-+ handle_scancode_main ( scancode, down );
-+
-+ /* SL-C700 Address down 0x59 */
-+ } else if ( three_button_mode && ( scancode == 0x28 ) && ( down == 0x01 ) ){
-+
-+ pressure_alt=0x02;
-+ handle_scancode_main ( scancode, down );
-+
-+ /* SL-C700 Address up 0xd9 */
-+ } else if ( three_button_mode && ( scancode == 0xa8 ) && ( down == 0x00 ) ){
-+
-+ pressure_alt=0x00;
-+ handle_scancode_main ( scancode, down );
-+ } else
-+#endif
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_SL_3BUTTON_PATCH)
-+ {
-+
-+ handle_scancode_main ( scancode, down );
-+
-+ }
-+}
-+
-+void handle_scancode_main(unsigned char scancode, int down)
-+{
-+#endif
- unsigned char keycode;
- char up_flag = down ? 0 : 0200;
- char raw_mode;
-@@ -274,8 +343,8 @@
- static void
- kbd_processkeycode(unsigned char keycode, char up_flag, int autorepeat)
- {
-- char raw_mode = (kbd->kbdmode == VC_RAW);
-
-+ char raw_mode = (kbd->kbdmode == VC_RAW);
- if (up_flag) {
- rep = 0;
- if(!test_and_clear_bit(keycode, key_down))
-@@ -1020,12 +1089,35 @@
-
- pm_callback pm_kbd_request_override = NULL;
-
-+#if defined(CONFIG_KBD_DEV_FILE)
-+#define KBD_MAJOR 241
-+struct fasync_struct *fasync_kbd;
-+
-+static int kbd_open(struct inode *, struct file *);
-+static int kbd_release(struct inode *, struct file *);
-+static int kbd_fasync(int fd, struct file *filp, int on);
-+static ssize_t kbd_read(struct file *, char *, size_t, loff_t *);
-+static ssize_t kbd_write(struct file *, const char *, size_t, loff_t *);
-+
-+struct file_operations kbd_fops = {
-+ open: kbd_open,
-+ release: kbd_release,
-+ fasync: kbd_fasync,
-+ read: kbd_read,
-+ write: kbd_write,
-+};
-+#endif
-+
- int __init kbd_init(void)
- {
- int i;
- struct kbd_struct kbd0;
- extern struct tty_driver console_driver;
-
-+#if defined(CONFIG_KBD_DEV_FILE)
-+ if ( register_chrdev(KBD_MAJOR,"kbd",&kbd_fops) )
-+ printk("unable to get major %d for keyboard\n", KBD_MAJOR);
-+#endif
- kbd0.ledflagstate = kbd0.default_ledflagstate = KBD_DEFLEDS;
- kbd0.ledmode = LED_SHOW_FLAGS;
- kbd0.lockstate = KBD_DEFLOCK;
-@@ -1047,3 +1139,56 @@
-
- return 0;
- }
-+
-+#if defined(CONFIG_KBD_DEV_FILE)
-+static int kbd_open(struct inode *inode, struct file *file)
-+{
-+ kdev_t dev = inode->i_rdev;
-+
-+ return 0;
-+}
-+
-+
-+static int kbd_release(struct inode *inode, struct file *file)
-+{
-+ kbd_fasync(-1, file, 0);
-+ return 0;
-+}
-+
-+static int kbd_fasync(int fd, struct file *filp, int on)
-+{
-+ int retval;
-+
-+ retval = fasync_helper(fd, filp, on, &fasync_kbd);
-+ if (retval < 0)
-+ return retval;
-+ return 0;
-+}
-+
-+static ssize_t kbd_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
-+{
-+// printk("kbd read\n");
-+ return 0;
-+}
-+
-+static ssize_t kbd_write(struct file *file, const char *buffer, size_t count, loff_t *ppos)
-+{
-+ char tmp[50];
-+ int len;
-+ int kbd_scancode,kbd_down;
-+
-+ len=49;
-+
-+ if(len>count) len=count;
-+ copy_from_user(tmp,buffer,len);
-+ tmp[len]='\0';
-+
-+ if (sscanf(tmp,"%d %d",&kbd_scancode, &kbd_down) == 2) {
-+// printk("kbd write %02x %02x\n",kbd_scancode,kbd_down);
-+ handle_scancode(kbd_scancode,kbd_down);
-+ }
-+
-+// printk("kbd write\n");
-+ return count;
-+}
-+#endif
-diff -Nur linux_c860_org/drivers/char/mem.c linux/drivers/char/mem.c
---- linux_c860_org/drivers/char/mem.c 2002-08-26 14:44:15.000000000 +0900
-+++ linux/drivers/char/mem.c 2004-06-10 21:09:10.000000000 +0900
-@@ -397,7 +397,7 @@
- if (count > size)
- count = size;
-
-- zap_page_range(mm, addr, count);
-+ zap_page_range(mm, addr, count, ZPR_NORMAL);
- zeromap_page_range(addr, count, PAGE_COPY);
-
- size -= count;
-diff -Nur linux_c860_org/drivers/char/pc_keyb.c linux/drivers/char/pc_keyb.c
---- linux_c860_org/drivers/char/pc_keyb.c 2002-08-26 14:38:31.000000000 +0900
-+++ linux/drivers/char/pc_keyb.c 2004-06-10 21:09:10.000000000 +0900
-@@ -464,14 +464,36 @@
-
- static unsigned char kbd_exists = 1;
-
--static inline void handle_keyboard_event(unsigned char scancode)
-+#ifdef CONFIG_UNICON
-+extern int (*Unicon_fnLowerKeyHook) (unsigned char ch);
-+extern int (*Unicon_fnKeyHook) (struct tty_struct *tty, \
-+ unsigned char ch, char flag);
-+#endif
-+static inline int handle_keyboard_event(unsigned char scancode)
- {
- #ifdef CONFIG_VT
- kbd_exists = 1;
-- if (do_acknowledge(scancode))
-- handle_scancode(scancode, !(scancode & 0x80));
-+ if (do_acknowledge(scancode)){
-+#ifdef CONFIG_UNICON
-+ if (Unicon_fnLowerKeyHook != NULL){
-+ /* return 1 ==> processed by kernel
-+ return 0 ==> processed by app */
-+ if (scancode == 0x58){ /* F12 kill unicode */
-+ Unicon_fnKeyHook = NULL;
-+ Unicon_fnLowerKeyHook = NULL;
-+ return 1;
-+ }
-+ if ((*Unicon_fnLowerKeyHook) (scancode) == 1)
-+ return 1;
-+ else
-+ handle_scancode(scancode,!(scancode & 0x80));
-+ } else
-+#endif
-+ handle_scancode(scancode, !(scancode & 0x80));
-+ }
- #endif
- tasklet_schedule(&keyboard_tasklet);
-+ return 0;
- }
-
- /*
-@@ -501,7 +523,8 @@
- if (status & KBD_STAT_MOUSE_OBF)
- handle_mouse_event(scancode);
- else
-- handle_keyboard_event(scancode);
-+ if(handle_keyboard_event(scancode))
-+ return status;
- }
-
- status = kbd_read_status();
-diff -Nur linux_c860_org/drivers/char/pcmcia/Config.in linux/drivers/char/pcmcia/Config.in
---- linux_c860_org/drivers/char/pcmcia/Config.in 2002-08-26 14:44:23.000000000 +0900
-+++ linux/drivers/char/pcmcia/Config.in 2004-06-10 21:09:10.000000000 +0900
-@@ -5,13 +5,7 @@
- mainmenu_option next_comment
- comment 'PCMCIA character devices'
-
--if [ "$CONFIG_SERIAL" = "y" -o "$CONFIG_SERIAL_8250" = "y" ]; then
-- dep_tristate 'PCMCIA serial device support' CONFIG_PCMCIA_SERIAL_CS y
--else
-- if [ "$CONFIG_SERIAL" = "m" -o "$CONFIG_SERIAL_8250" = "m" ]; then
-- dep_tristate 'PCMCIA serial device support' CONFIG_PCMCIA_SERIAL_CS m
-- fi
--fi
-+dep_tristate 'PCMCIA serial device support' CONFIG_PCMCIA_SERIAL_CS $CONFIG_SERIAL
- if [ "$CONFIG_PCMCIA_SERIAL_CS" = "y" ]; then
- define_bool CONFIG_PCMCIA_CHRDEV y
- fi
-diff -Nur linux_c860_org/drivers/char/rtc.c linux/drivers/char/rtc.c
---- linux_c860_org/drivers/char/rtc.c 2002-08-26 14:38:31.000000000 +0900
-+++ linux/drivers/char/rtc.c 2004-06-10 21:09:10.000000000 +0900
-@@ -326,7 +326,7 @@
- * means "don't care" or "match all". Only the tm_hour,
- * tm_min, and tm_sec values are filled in.
- */
--
-+ memset(&wtime, 0, sizeof(struct rtc_time));
- get_rtc_alm_time(&wtime);
- break;
- }
-@@ -374,6 +374,7 @@
- }
- case RTC_RD_TIME: /* Read the time/date from RTC */
- {
-+ memset(&wtime, 0, sizeof(struct rtc_time));
- get_rtc_time(&wtime);
- break;
- }
-diff -Nur linux_c860_org/drivers/char/serial.c linux/drivers/char/serial.c
---- linux_c860_org/drivers/char/serial.c 2003-01-14 12:07:55.000000000 +0900
-+++ linux/drivers/char/serial.c 2004-06-10 21:09:10.000000000 +0900
-@@ -61,6 +61,7 @@
- * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
- * 31-Jul-2002 Lineo Japan, Inc. for ARCH_PXA
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- static char *serial_version = "5.05c";
-@@ -98,11 +99,14 @@
-
- #include <linux/config.h>
- #include <linux/version.h>
-+
- #if defined(CONFIG_SABINAL_DISCOVERY) || \
- defined(CONFIG_ARCH_PXA_POODLE) || \
-- defined(CONFIG_ARCH_PXA_CORGI)
-+ defined(CONFIG_ARCH_PXA_CORGI) || \
-+ defined(CONFIG_ARCH_PXA_TOSA)
- #undef CONFIG_SERIAL_CONSOLE
- #endif
-+
- #if defined(CONFIG_SABINAL_DISCOVERY)
- #define CONFIG_REDEFINE_IO8BIT
- #endif
-@@ -259,7 +263,8 @@
- #elif defined(CONFIG_SA1100_COLLIE) || \
- defined(CONFIG_SABINAL_DISCOVERY) || \
- defined(CONFIG_ARCH_PXA_POODLE) || \
-- defined(CONFIG_ARCH_PXA_CORGI)
-+ defined(CONFIG_ARCH_PXA_CORGI) || \
-+ defined(CONFIG_ARCH_PXA_TOSA)
- #define SERIAL_DEV_OFFSET 3
- #else
- #define SERIAL_DEV_OFFSET 0
-@@ -1332,7 +1337,7 @@
- #ifdef CONFIG_ARCH_PXA
- if (state->type == PORT_PXA) {
- switch ((long)state->iomem_base) {
--#if defined(CONFIG_ARCH_SHARP_SL) && !defined(CONFIG_SABINAL_DISCOVERY)
-+#if defined(CONFIG_PM) && defined(CONFIG_ARCH_SHARP_SL) && !defined(CONFIG_SABINAL_DISCOVERY)
- case (long)&FFUART: lock_FCS(LOCK_FCS_FFUART, 1); CKEN |= CKEN6_FFUART; break;
- case (long)&BTUART: lock_FCS(LOCK_FCS_BTUART, 1); CKEN |= CKEN7_BTUART; break;
- case (long)&STUART: lock_FCS(LOCK_FCS_STUART, 1); CKEN |= CKEN5_STUART; break;
-@@ -1615,7 +1620,7 @@
- #ifdef CONFIG_ARCH_PXA
- if (state->type == PORT_PXA) {
- switch ((long)state->iomem_base) {
--#if defined(CONFIG_ARCH_SHARP_SL) && !defined(CONFIG_SABINAL_DISCOVERY)
-+#if defined(CONFIG_PM) && defined(CONFIG_ARCH_SHARP_SL) && !defined(CONFIG_SABINAL_DISCOVERY)
- case (long)&FFUART: CKEN &= ~CKEN6_FFUART; lock_FCS(LOCK_FCS_FFUART, 0); break;
- case (long)&BTUART: CKEN &= ~CKEN7_BTUART; lock_FCS(LOCK_FCS_BTUART, 0); break;
- case (long)&STUART: CKEN &= ~CKEN5_STUART; lock_FCS(LOCK_FCS_STUART, 0); break;
-@@ -6103,7 +6108,7 @@
- {
- register_console(&sercons);
- }
--#endif
-+#endif /* CONFIG_SERIAL_CONSOLE */
-
- /*
- Local variables:
-diff -Nur linux_c860_org/drivers/char/serial_pxa200.c linux/drivers/char/serial_pxa200.c
---- linux_c860_org/drivers/char/serial_pxa200.c 2003-01-29 16:14:45.000000000 +0900
-+++ linux/drivers/char/serial_pxa200.c 2004-06-10 21:09:10.000000000 +0900
-@@ -59,6 +59,8 @@
- *
- * Change Log
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 1-Nov-2003 Sharp Corporation for Tosa
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- static char *serial_version = "5.05c";
-@@ -228,8 +230,9 @@
- #endif
- #ifdef CONFIG_PM
- #include <linux/pm.h>
--#include <linux/apm_bios.h>
- #endif
-+#include <linux/apm_bios.h>
-+#include <asm/sharp_char.h>
-
- /*
- * All of the compatibilty code so we can compile serial.c against
-@@ -414,7 +417,7 @@
-
- #define CONFIG_DISCOVERY_DVT
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- #define CONFIG_SHARPSL_PXA
- #endif
-
-@@ -439,17 +442,24 @@
- #define XPA210_DISCOVERY_IRDA_LINE 1
- #define xpa210_discovery_is_irda_line(line) ((line) == XPA210_DISCOVERY_IRDA_LINE)
-
--void clr_discovery_irda(u8 x){
-+static void clr_discovery_irda(u8 x){
- #if defined(CONFIG_SABINAL_DISCOVERY)
- ASIC3_GPIO_PIOD_B &= ~(0x1000);
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+ reset_scoop_gpio(SCP_IR_POWERDWN);
-+ set_GPIO_mode(GPIO47_STTXD|GPIO_OUT);
-+ GPCR(GPIO47_STTXD) = GPIO_bit(GPIO47_STTXD);
- #elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
- GPSR(GPIO_IR_ON) = GPIO_bit(GPIO_IR_ON);
- #endif
- //printk("discovery_irda power on\n");
-- }
--void set_discovery_irda(u8 x){
-+}
-+static void set_discovery_irda(u8 x){
- #if defined(CONFIG_SABINAL_DISCOVERY)
- ASIC3_GPIO_PIOD_B |= 0x1000;
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+ set_GPIO_mode(GPIO47_STTXD_MD);
-+ set_scoop_gpio(SCP_IR_POWERDWN);
- #elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
- GPCR(GPIO_IR_ON) = GPIO_bit(GPIO_IR_ON);
- #endif
-@@ -470,14 +480,53 @@
-
- #endif
-
-+#if defined(CONFIG_BLUETOOTH_SL)
-+#define PXA_BLUETOOTH_LINE 2
-+#define pxa_is_bluetooth_line(line) ((line) == PXA_BLUETOOTH_LINE)
-+
-+static int has_bluetooth = -1;
-+static int bluetooth_open = 0;
-+struct async_struct *bluetooth_info = 0;
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+#define AVOID_ROLLBACK
-+#ifdef AVOID_ROLLBACK
-+extern int rollback_cancel;
-+#endif
-+#endif
-+static int pxa_check_bluetooth_unit()
-+{
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ set_GPIO_mode(GPIO42_BTRXD|GPIO_IN);
-+ set_GPIO_mode(GPIO43_BTTXD|GPIO_IN);
-+ set_GPIO_mode(GPIO44_BTCTS|GPIO_IN);
-+ set_GPIO_mode(GPIO45_BTRTS|GPIO_IN);
-+ set_scoop_gpio(SCP_BT_PWR_EN);
-+ mdelay(5);
-+ if ( (GPLR(GPIO42_BTRXD) & GPIO_bit(GPIO42_BTRXD))==0 &&
-+ (GPLR(GPIO44_BTCTS) & GPIO_bit(GPIO44_BTCTS))==0) {
-+ reset_scoop_gpio(SCP_BT_PWR_EN);
-+ has_bluetooth=0;
-+ return 0; // no bluetooth
-+ }
-+ reset_scoop_gpio(SCP_BT_PWR_EN);
-+ has_bluetooth=1;
-+ return 1;
-+#else
-+ return 0;
-+#endif
-+}
-+#endif // end CONFIG_BLUETOOTH_SL
-+
- #ifdef CONFIG_PM
- static struct pm_dev *serial_pm_dev;
- #endif
-
-
--#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI))
-+#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA))
-+#ifdef CONFIG_PM
- extern int change_power_mode(unsigned long,int);
- #endif
-+#endif
-
- /*
- * tmp_buf is used as a temporary buffer by serial_write. We need to
-@@ -544,6 +593,7 @@
- read &= ~UART_MSR_CTS;
- else
- read |= UART_MSR_CTS;
-+
- if ( read & UART_MSR_DSR )
- read &= ~UART_MSR_DSR;
- else
-@@ -633,9 +683,10 @@
- #define STUART_MCR *(volatile unsigned char*)(&STUART + UART_MCR*4)
- #define STUART_ISR *(volatile unsigned char*)(&STUART + 8*4)
-
-+#ifdef CONFIG_PM
- void xpa210_discovery_irda_resume (void) {
-
--#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI))
-+#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA))
- if ( !change_power_mode(LOCK_FCS_STUART, 1) ) return;
- #endif
-
-@@ -652,14 +703,17 @@
- //printk("xpa210_discovery_irda_resume\n");
-
- }
-+#endif
-
- int xpa210_discovery_irda_enable(struct async_struct * info, u8 x){
-
- if (x == 0) {
- CKEN &= ~(0x20); //stuart
-
--#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI))
-+#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA))
-+#ifdef CONFIG_PM
- change_power_mode(LOCK_FCS_STUART, 0);
-+#endif /* CONFIG_PM */
- #endif
-
- info->IER &= ~(UART_IER_UUE);
-@@ -675,8 +729,10 @@
-
- //printk("xpa210_discovery_irda_disable\n");
- } else {
--#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI))
-+#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA))
-+#ifdef CONFIG_PM
- if ( !change_power_mode(LOCK_FCS_STUART, 1) ) return 1;
-+#endif /* CONFIG_PM */
- #endif
-
- CKEN |= 0x20; //stuart
-@@ -696,9 +752,91 @@
- }
- return 0;
- }
-+#endif
-+
-+#if defined(CONFIG_BLUETOOTH_SL)
-+static int pxa_bluetooth_enable(struct async_struct * info, u8 x)
-+{
-+ if (has_bluetooth==0) return -ENODEV;
-+ if (x==0) { // off
-+ set_scoop_gpio(SCP_BT_RESET);
-+ CKEN &= ~(0x1<<7); //btuart
-+ set_GPIO_mode(GPIO42_BTRXD|GPIO_IN);
-+ set_GPIO_mode(GPIO43_BTTXD|GPIO_IN);
-+ set_GPIO_mode(GPIO44_BTCTS|GPIO_IN);
-+ set_GPIO_mode(GPIO45_BTRTS|GPIO_IN);
-+ mdelay(10); // wait 10ms
-+ reset_scoop_gpio(SCP_BT_RESET);
-+ reset_scoop_gpio(SCP_BT_PWR_EN);
-+ set_led_status(SHARP_LED_BLUETOOTH,0); // turn off BT LED
-+
-+ ICMR &= ~(1 << 21); //btuart
-+
-+ info->IER &= ~(UART_IER_UUE);
-+ serial_out(info, UART_IER, info->IER);
-+
-+ info->MCR = 0x0;
-+ serial_out(info, UART_MCR, info->MCR);
-+
-+ info->IER |= UART_IER_UUE; /* enable UUE */
-+ serial_out(info, UART_IER, info->IER);
-+
-+#ifdef CONFIG_PM
-+ change_power_mode(LOCK_FCS_BTUART, 0);
-+#endif /* CONFIG_PM */
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+#ifdef AVOID_ROLLBACK
-+ rollback_cancel = 0;
-+#endif
-+#endif
-+ // printk("bluetooth close success.\n");
-+ } else { // on
-+#ifdef CONFIG_PM
-+ if ( !change_power_mode(LOCK_FCS_BTUART, 1) ) return 1;
-+#endif /* CONFIG_PM */
-+ ICMR &= ~(1 << 21); //btuart
-+ reset_scoop_gpio(SCP_BT_RESET);
-+ set_scoop_gpio(SCP_BT_PWR_EN);
-+
-+ set_GPIO_mode(GPIO42_BTRXD_MD);
-+ set_GPIO_mode(GPIO43_BTTXD_MD);
-+ set_GPIO_mode(GPIO44_BTCTS_MD);
-+ set_GPIO_mode(GPIO45_BTRTS_MD);
-+
-+ CKEN |= (0x1<<7); //btuart
-
-+ info->IER &= ~(UART_IER_UUE);
-+ serial_out(info, UART_IER, info->IER);
-+
-+ info->MCR = UART_MCR_OUT2;
-+ serial_out(info, UART_MCR, info->MCR);
-+
-+ info->tty->termios->c_cflag &= ~CBAUD;
-+ info->tty->termios->c_cflag |= (17 & CBAUD); // set 115.2k
-+ change_speed(info, 0);
-+
-+ info->IER = UART_IER_UUE|UART_IER_RDI|UART_IER_MSI|UART_IER_RTOIE; /* enable UUE */
-+ serial_out(info, UART_IER, info->IER);
-+ serial_inp(info, UART_RX); // reset DR
-+
-+ ICMR |= (1 << 21); //btuart
-+
-+ set_scoop_gpio(SCP_BT_RESET);
-+ mdelay(20); // wait 20ms
-+ reset_scoop_gpio(SCP_BT_RESET);
-+ set_led_status(SHARP_LED_BLUETOOTH,1); // BT LED on
-+
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+#ifdef AVOID_ROLLBACK
-+ rollback_cancel = 1;
-+#endif
- #endif
-
-+ // printk("bluetooth open success.\n");
-+ }
-+ return 0;
-+}
-+#endif
-
- /*
- * For the 16C950
-@@ -824,11 +962,25 @@
-
- icount = &info->state->icount;
-
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) {
-+#else
- if (xpa2X0_is_st_uart(info->iomem_base)) {
-+#endif
- *status = serial_inp(info, UART_LSR);
- while (!(*status & UART_LSR_DR)) {
- printk("WoWWWW!\n");
- }
-+#if 1 //
-+ if (xpa2X0_is_bt_uart(info->iomem_base)) {
-+ if (*status & UART_LSR_OE) {
-+ printk("ERROR: Bluetooth Overrun!!\n");
-+ }
-+ if (*status & (UART_LSR_PE|UART_LSR_FE|0x80) ) {
-+ printk("ERROR: Bluetooth Error!!\n");
-+ }
-+ }
-+#endif
- }
-
- do {
-@@ -838,7 +990,11 @@
- return; // if TTY_DONT_FLIP is set
- }
-
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) {
-+#else
- if (xpa2X0_is_st_uart(info->iomem_base)) {
-+#endif
- while (!(*status & UART_LSR_DR))
- ;
- }
-@@ -851,7 +1007,11 @@
- #ifdef SERIAL_DEBUG_INTR
- printk("DR%02x:%02x...", ch, *status);
- #endif
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) {
-+#else
- if (xpa2X0_is_st_uart(info->iomem_base)) {
-+#endif
- goto IRDA_SKIP;
- }
- *tty->flip.flag_buf_ptr = 0;
-@@ -894,7 +1054,11 @@
- *status &= info->read_status_mask;
-
- #ifdef CONFIG_SERIAL_CONSOLE
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if (!xpa2X0_is_st_uart(info->iomem_base) && !xpa2X0_is_bt_uart(info->iomem_base)) {
-+#else
- if (!xpa2X0_is_st_uart(info->iomem_base)) {
-+#endif
- if (info->line == sercons.index) {
- /* Recover the break flag from console xmit */
- *status |= lsr_break_flag;
-@@ -996,7 +1160,19 @@
- // udelay(800);
-
- serial_outp(info, XPA2X0_UART_ISR, XPA210_DISCOVERY_IR_RECV);
--
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ } else if (xpa2X0_is_bt_uart(info->iomem_base)) {
-+
-+ while (!(serial_inp(info, UART_LSR) & UART_LSR_TEMT))
-+ ;
-+
-+ info->IER &= ~UART_IER_THRI;
-+ serial_out(info, UART_IER, info->IER);
-+ status0 = serial_inp(info, UART_IIR);
-+
-+ if (intr_done)
-+ *intr_done = 0;
-+#endif
- } else {
- info->IER &= ~UART_IER_THRI;
- serial_out(info, UART_IER, info->IER);
-@@ -1008,7 +1184,11 @@
- if( info->io_type == SERIAL_IO_MEM ){
- count = info->xmit_fifo_size / 2;
-
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) {
-+#else
- if (xpa2X0_is_st_uart(info->iomem_base)) {
-+#endif
- count = info->xmit_fifo_size ;
- }
- } else count = info->xmit_fifo_size;
-@@ -1039,7 +1219,6 @@
- } else {
- do {
- serial_out(info, UART_TX, info->xmit.buf[info->xmit.tail]);
--
- info->xmit.tail = (info->xmit.tail + 1) & (SERIAL_XMIT_SIZE-1);
- info->state->icount.tx++;
- if (info->xmit.head == info->xmit.tail)
-@@ -1064,6 +1243,10 @@
- // while (!(serial_inp(info, UART_LSR) & UART_LSR_TEMT))
- // ;
-
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ } else if (xpa2X0_is_bt_uart(info->iomem_base)) {
-+
-+#endif
- } else {
- info->IER &= ~UART_IER_THRI;
- serial_out(info, UART_IER, info->IER);
-@@ -1091,7 +1274,11 @@
-
- status = serial_in(info, UART_MSR);
-
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) {
-+#else
- if (xpa2X0_is_st_uart(info->iomem_base)) {
-+#endif
- // printk("check_modem_status: do nothing\n");
- return;
- }
-@@ -1325,12 +1512,21 @@
- goto IRDA_INTR_DONE;
- }
-
--
- do {
- status = serial_inp(info, UART_LSR);
- #ifdef SERIAL_DEBUG_INTR
- printk("status = %x...", status);
- #endif
-+#if 1 //
-+ if (xpa2X0_is_bt_uart(info->iomem_base)) {
-+ if (status & UART_LSR_OE) {
-+ printk("ERROR: Bluetooth Overrun!\n");
-+ }
-+ if (status & (UART_LSR_PE|UART_LSR_FE|0x80) ) {
-+ printk("ERROR: Bluetooth Error!\n");
-+ }
-+ }
-+#endif
- if (status & UART_LSR_DR)
- receive_chars(info, &status, regs);
-
-@@ -2230,6 +2426,35 @@
-
- return;
- }
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if (xpa2X0_is_bt_uart(info->iomem_base)) {
-+ cval = UART_LCR_WLEN8;
-+#if 1 // for BCSP unit
-+ if (cflag & PARENB) {
-+ cval |= UART_LCR_PARITY;
-+ printk("set even parity enable\n");
-+ }
-+ if (!(cflag & PARODD)) {
-+ cval |= UART_LCR_EPAR;
-+ }
-+#endif
-+ fcr = UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR |UART_FCR_CLEAR_XMIT | UART_FCR_TRIGGER_8;
-+
-+ save_flags(flags); cli();
-+ quot = 0x0008; // 115.2kbps
-+
-+ serial_outp(info, UART_LCR, cval | UART_LCR_DLAB); /* set DLAB */
-+ serial_outp(info, UART_DLL, quot & 0xff); /* LS of divisor */
-+ serial_outp(info, UART_DLM, quot >> 8); /* MS of divisor */
-+ serial_outp(info, UART_LCR, cval); /* reset DLAB */
-+ info->LCR = cval; /* Save LCR */
-+ serial_outp(info, UART_FCR, fcr); /* set fcr */
-+
-+ restore_flags(flags);
-+
-+ return;
-+ }
-+#endif
-
- /* Set up FIFO's */
- if (uart_config[info->state->type].flags & UART_USE_FIFO) {
-@@ -2448,7 +2673,11 @@
-
- #if defined(CONFIG_ARCH_SHARP_SL)
- if(info->io_type == SERIAL_IO_MEM){
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) {
-+#else
- if (xpa2X0_is_st_uart(info->iomem_base)) {
-+#endif
-
- info->IER |= UART_IER_THRI;
- serial_out(info, UART_IER, info->IER);
-@@ -3508,9 +3737,10 @@
-
-
- //close IR
-+#ifdef CONFIG_PM
- #if defined(CONFIG_ARCH_SHARP_SL)&& (CONFIG_IRDA)
- if (xpa2X0_is_st_uart(info->iomem_base)) {
-- ICMR &= ~(1 << 20); //btuart
-+ ICMR &= ~(1 << 20); //stuart
- xpa210_discovery_irda_power_off();
- xpa210_discovery_irda_enable(info, 0);
- irda_open = 0; irda_info = 0;
-@@ -3519,6 +3749,13 @@
- #endif
- }
- #endif
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if (xpa2X0_is_bt_uart(info->iomem_base)) {
-+ pxa_bluetooth_enable(info, 0);
-+ bluetooth_open = 0; bluetooth_info = 0;
-+ }
-+#endif // end CONFIG_BLUETOOTH_SL
-+#endif /* CONFIG_PM */
-
- shutdown(info);
- if (tty->driver.flush_buffer)
-@@ -3540,12 +3777,14 @@
- wake_up_interruptible(&info->close_wait);
- MOD_DEC_USE_COUNT;
-
--#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
-+#ifdef CONFIG_PM
- xpa210_discovery_serial_power_off();
- if (xpa2X0_is_ff_uart(info->iomem_base)) {
- CKEN &= ~CKEN6_FFUART;
- change_power_mode(LOCK_FCS_FFUART, 0);
- }
-+#endif /* CONFIG_PM */
- #endif
-
- }
-@@ -3906,12 +4145,14 @@
- #endif
- }
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
-+#ifdef CONFIG_PM
- xpa210_discovery_serial_power_on();
- if (xpa2X0_is_ff_uart(info->iomem_base)) {
-- CKEN |= CKEN6_FFUART;
- if ( !change_power_mode(LOCK_FCS_FFUART, 1) ) return -EAGAIN;
-+ CKEN |= CKEN6_FFUART;
- }
-+#endif /* CONFIG_PM */
- #endif
-
- /*
-@@ -3964,7 +4205,7 @@
- info->IER = 0x01;
- if ( xpa210_discovery_irda_enable(info, 1) ) return -EAGAIN;
- xpa210_discovery_irda_power_on();
-- ICMR |= (1 << 20); //btuart
-+ ICMR |= (1 << 20); //stuart
- irda_open = 1;
- irda_info = info;
- #if defined(CONFIG_SABINAL_DISCOVERY)
-@@ -3973,6 +4214,15 @@
- }
- #endif
-
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if (pxa_is_bluetooth_line(line)) {
-+ int ret;
-+ if ( (ret = pxa_bluetooth_enable(info, 1))!=0 ) return ret;
-+ bluetooth_open = 1;
-+ bluetooth_info = info;
-+ }
-+#endif // end CONFIG_BLUETOOTH_SL
-+
- #ifdef SERIAL_DEBUG_OPEN
- printk("\nrs_open ttys%d successful...", info->line);
- #endif
-@@ -6161,24 +6411,29 @@
-
- void cotulla_serial_suspend(void) {
-
--#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- xpa210_discovery_serial_power_off();
- #endif
-
- #ifdef CONFIG_IRDA
- if ( irda_open == 1 ) {
-- ICMR &= ~(1 << 20); //btuart
-+ ICMR &= ~(1 << 20); //stuart
- xpa210_discovery_irda_power_off();
- xpa210_discovery_irda_enable(irda_info, 0);
-
- }
- #endif
-
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if ( bluetooth_open ) {
-+ pxa_bluetooth_enable(bluetooth_info, 0);
-+ }
-+#endif // end CONFIG_BLUETOOTH_SL
- }
-
- void cotulla_serial_resume(void) {
-
--#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- xpa210_discovery_serial_power_on();
- #endif
-
-@@ -6192,7 +6447,7 @@
- #else
- #if defined(CONFIG_SABINAL_DISCOVERY)
- BTUART_MCR |= UART_MCR_OUT2;
--#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- FFUART_MCR |= UART_MCR_OUT2;
- #endif
- STUART_MCR |= UART_MCR_OUT2;
-@@ -6202,10 +6457,16 @@
- change_speed(irda_info, 0);
- if ( xpa210_discovery_irda_enable(irda_info, 1) ) return;
- xpa210_discovery_irda_power_on();
-- ICMR |= (1 << 20); //btuart
-+ ICMR |= (1 << 20); //stuart
- }
- #endif
-
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ if ( bluetooth_open == 1 ) {
-+ change_speed(bluetooth_info, 0);
-+ if ( pxa_bluetooth_enable(bluetooth_info, 1) ) return;
-+ }
-+#endif // end CONFIG_BLUETOOTH_SL
- #endif
-
- }
-@@ -6226,7 +6487,7 @@
-
- return 0;
- }
--#endif
-+#endif /* CONFIG_PM */
-
- /*
- * The serial driver boot-time initialization code!
-@@ -6289,7 +6550,7 @@
- serial_driver.subtype = SERIAL_TYPE_NORMAL;
- serial_driver.init_termios = tty_std_termios;
- serial_driver.init_termios.c_cflag =
-- B9600 | CS8 | CREAD | HUPCL | CLOCAL;
-+ B9600 | CS8 | CREAD | HUPCL | CLOCAL;
- serial_driver.flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS;
- serial_driver.refcount = &serial_refcount;
- serial_driver.table = serial_table;
-@@ -6368,6 +6629,9 @@
- if (state->flags & ASYNC_BOOT_AUTOCONF)
- autoconfig(state);
- }
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ pxa_check_bluetooth_unit();
-+#endif
- for (i = 0, state = rs_table; i < NR_PORTS; i++,state++) {
- if (state->type == PORT_UNKNOWN)
- continue;
-@@ -6384,6 +6648,16 @@
- state->iomem_base, state->irq,
- uart_config[state->type].name);
- printk(", using IRDA\n");
-+#if defined(CONFIG_BLUETOOTH_SL)
-+ } else if (xpa2X0_is_bt_uart(state->iomem_base)) {
-+ printk(KERN_INFO"ttyS%02d%s at 0x%px (irq = %d) is a %s",
-+ state->line + SERIAL_DEV_OFFSET,
-+ (state->flags & ASYNC_FOURPORT) ? " FourPort" : "",
-+ state->iomem_base, state->irq,
-+ uart_config[state->type].name);
-+ if (has_bluetooth==1) printk(", using Bluetooth\n");
-+ else printk("\n");
-+#endif // end CONFIG_BLUETOOTH_SL
- } else {
- printk(KERN_INFO"ttyS%02d%s at 0x%px (irq = %d) is a %s\n",
- state->line + SERIAL_DEV_OFFSET,
-@@ -6418,7 +6692,7 @@
- probe_serial_pnp();
- #endif
-
--#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- xpa210_discovery_serial_power_off();
- #endif
-
-@@ -6435,9 +6709,23 @@
- v2 |= 0x00008000;
- GPDR1 = v2;
-
--#if !defined(CONFIG_SABINAL_DISCOVERY)
-+#if !defined(CONFIG_SABINAL_DISCOVERY) && !defined(CONFIG_ARCH_PXA_TOSA)
- GPDR(GPIO_IR_ON) |= GPIO_bit(GPIO_IR_ON);
- #endif
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ SCP_REG_GPCR |= SCP_IR_POWERDWN;
-+ set_GPIO_mode(GPIO47_STTXD|GPIO_OUT);
-+ GPCR(GPIO47_STTXD) = GPIO_bit(GPIO47_STTXD);
-+ set_GPIO_mode(GPIO46_STRXD_MD);
-+
-+#endif
-+
-+#if defined(CONFIG_BLUETOOTH_SL)
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ SCP_REG_GPCR |= SCP_BT_RESET;
-+ SCP_REG_GPCR |= SCP_BT_PWR_EN;
-+#endif
-+#endif // end CONFIG_BLUETOOTH_SL
- #endif
-
- #ifdef CONFIG_PM
-diff -Nur linux_c860_org/drivers/char/sharp_buzzer.c linux/drivers/char/sharp_buzzer.c
---- linux_c860_org/drivers/char/sharp_buzzer.c 2003-01-14 12:07:55.000000000 +0900
-+++ linux/drivers/char/sharp_buzzer.c 2004-06-10 21:09:10.000000000 +0900
-@@ -18,6 +18,7 @@
- * ChangeLog:
- * 04-16-2001 Lineo Japan, Inc. ...
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #include <linux/config.h>
-@@ -52,7 +53,7 @@
- # define SHARP_BUZZER_MAJOR 227 /* number of bare sharp_buzzer driver */
- #endif
-
--#if !defined(CONFIG_SA1100_COLLIE) && !defined(CONFIG_ARCH_PXA_POODLE) && !defined(CONFIG_ARCH_PXA_CORGI)
-+#if !defined(CONFIG_SA1100_COLLIE) && !defined(CONFIG_ARCH_PXA_POODLE) && !defined(CONFIG_ARCH_PXA_CORGI) && !defined(CONFIG_ARCH_PXA_TOSA)
- #define USE_IMELODY_FORMAT
- #endif
-
-@@ -122,6 +123,22 @@
- #define resume_buzzer_arch() poodle_resume_buzzer()
- #endif
-
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+extern int tosa_play_sound_by_id(int soundid,int volume);
-+extern int tosa_play_sound_by_hz(unsigned int hz,unsigned int msecs,int volume);
-+extern int tosa_buzzer_dev_init(void);
-+extern int tosa_buzzer_supported(int which); /* return -EINVAL if unspoorted , otherwise return >= 0 value */
-+extern int tosa_suspend_buzzer(void);
-+extern int tosa_resume_buzzer(void);
-+#define play_sound_by_id(id,vol) tosa_play_sound_by_id((id),(vol))
-+#define stop_sound() tosa_stop_sound()
-+#define stop_sound_by_id(id) tosa_stop_sound()
-+#define play_sound_by_hz(hz,msecs,vol) tosa_play_sound_by_hz((hz),(msecs),(vol))
-+#define buzzer_dev_init() tosa_buzzer_dev_init()
-+#define buzzer_supported_arch(w) tosa_buzzer_supported((w))
-+#define suspend_buzzer_arch() tosa_suspend_buzzer()
-+#define resume_buzzer_arch() tosa_resume_buzzer()
-+#endif /* CONFIG_ARCH_PXA_TOSA */
-
- /*
- * logical level drivers
-@@ -498,7 +515,7 @@
- if( minor != SHARP_BUZZER_MINOR ) return -ENODEV;
- if( ! device_initialized ){
- int i;
--#if !defined(CONFIG_SA1100_COLLIE) && !defined(CONFIG_ARCH_PXA_POODLE) && !defined(CONFIG_ARCH_PXA_CORGI)
-+#if !defined(CONFIG_SA1100_COLLIE) && !defined(CONFIG_ARCH_PXA_POODLE) && !defined(CONFIG_ARCH_PXA_CORGI) && !defined(CONFIG_ARCH_PXA_TOSA)
- buzzer_dev_init();
- #endif
- for(i=0;i<=SHARP_BUZ_WHICH_MAX;i++){
-@@ -750,7 +767,7 @@
- #endif
-
-
--#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- buzzer_dev_init();
- #endif
-
-diff -Nur linux_c860_org/drivers/char/sharp_kbdctl.c linux/drivers/char/sharp_kbdctl.c
---- linux_c860_org/drivers/char/sharp_kbdctl.c 2003-01-14 12:07:55.000000000 +0900
-+++ linux/drivers/char/sharp_kbdctl.c 2004-06-10 21:09:10.000000000 +0900
-@@ -18,6 +18,7 @@
- * Change Log
- * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 1-Nov-2003 Sharp Corporation for Tosa
- */
-
- #include <linux/config.h>
-@@ -67,9 +68,10 @@
- extern int restore_all_holdkey_info(void);
- extern int customize_del_holdkey_info(int hardcode);
- extern int customize_restore_holdkey_info(int hardcode);
--
--
--
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+extern int set_port_key_setting( int num, int val );
-+extern int get_port_key_setting( int num );
-+#endif
-
- /*
- * operations....
-@@ -157,7 +159,11 @@
- break;
- case SHARP_EXTMODIF_NUMLOCK:
- sharppda_kbd_extmodif_togglestatus(c);
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ c = 32; f = 3; // numlock keycode
-+#else
- c = SLKEY_NUMLOCK; f = 3;
-+#endif
- break;
- default:
- return -EINVAL;
-@@ -195,6 +201,18 @@
- error = sharppda_kbd_extmodif_togglestatus(arg);
- if( error ) return error;
- }
-+ case SHARP_KBDCTL_SETMODIFSTAT:
-+ {
-+ int error;
-+ int val;
-+ sharp_kbdctl_modifstat* puser = (sharp_kbdctl_modifstat*)arg;
-+ if( ! puser ) return -EINVAL;
-+ val = sharppda_kbd_extmodif_showstatus(puser->which);
-+ if (puser->stat!=val) {
-+ error = sharppda_kbd_extmodif_togglestatus(puser->which);
-+ if( error ) return error;
-+ }
-+ }
- break;
- case SHARP_KBDCTL_SETHOLDTH:
- {
-@@ -311,6 +329,20 @@
- if( error ) return error;
- }
- break;
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ case SHARP_KBDCTL_SETSWKEY:
-+ {
-+ sharp_kbdctl_swkey* puser = (sharp_kbdctl_swkey*)arg;
-+ if( ! puser ) return -EINVAL;
-+ return set_port_key_setting(puser->key,puser->mode);
-+ }
-+ break;
-+ case SHARP_KBDCTL_GETSWKEY:
-+ {
-+ return get_port_key_setting(arg);
-+ }
-+ break;
-+#endif
- default:
- return -EINVAL;
- }
-diff -Nur linux_c860_org/drivers/char/sharp_led.c linux/drivers/char/sharp_led.c
---- linux_c860_org/drivers/char/sharp_led.c 2002-12-18 19:28:00.000000000 +0900
-+++ linux/drivers/char/sharp_led.c 2004-06-10 21:09:10.000000000 +0900
-@@ -19,6 +19,7 @@
- * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
- * 27-AUG-2002 Edward Chen, Steve Lin for Discovery
- * 12-Dec-2002 Lineo Japan, Inc.
-+ * 1-Nov-2003 Sharp Corporation for Tosa
- *
- */
- #include <linux/config.h>
-@@ -72,7 +73,7 @@
- #define suspend_led_arch() collie_suspend_led()
- #define resume_led_arch() collie_resume_led()
- #define standby_led_arch() (0)
--#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- extern int sharpsl_led_supported(int which); /* return -EINVAL if unspoorted , otherwise return >= 0 value */
- extern int sharpsl_turn_led_status(int which,int status); /* set LED status to directed value. */
- extern int sharpsl_init_led(void);
-@@ -209,33 +210,33 @@
- {
- switch (req) {
- case PM_STANDBY:
--#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- set_led_status(SHARP_LED_PDA,LED_PDA_SUSPENDED);
- standby_led_arch();
- #endif
- break;
-
- case PM_BLANK:
--#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- set_led_status(SHARP_LED_PDA,LED_PDA_SUSPENDED);
- #endif
- break;
-
- case PM_UNBLANK:
--#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- set_led_status(SHARP_LED_PDA,LED_PDA_RUNNING);
- #endif
- break;
-
- case PM_SUSPEND:
--#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- set_led_status(SHARP_LED_PDA,LED_PDA_OFF);
- suspend_led_arch();
- #endif
- break;
-
- case PM_RESUME:
--#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- set_led_status(SHARP_LED_PDA,LED_PDA_RUNNING);
- resume_led_arch();
- #endif
-diff -Nur linux_c860_org/drivers/char/sharpsl_led.c linux/drivers/char/sharpsl_led.c
---- linux_c860_org/drivers/char/sharpsl_led.c 2003-01-14 12:07:55.000000000 +0900
-+++ linux/drivers/char/sharpsl_led.c 2004-06-10 21:09:10.000000000 +0900
-@@ -18,6 +18,7 @@
- * ChangeLog:
- * based on collie_led.c Aug. 26 2002 LINEO
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 1-Nov-2003 Sharp Corporation for Tosa
- *
- */
-
-@@ -47,6 +48,9 @@
- #if defined(CONFIG_ARCH_PXA_CORGI)
- #include <asm/arch/corgi.h>
- #endif
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+#include <asm/arch/tosa.h>
-+#endif
- #include <asm/arch/hardware.h>
-
- #include <linux/timer.h>
-@@ -69,7 +73,8 @@
- {
- set_led_status(SHARP_LED_CHARGER,LED_CHARGER_ERROR);
- }
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
-+static int led_suspended=0;
- void sharpsl_charge_wait_ms(void)
- {
- unsigned long time = OSCR;
-@@ -88,6 +93,18 @@
- }
- }
-
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+void sharpsl_charge_err_off(void)
-+{
-+ while(1) {
-+ set_scoop_jc_gpio(SCP_LED_ORANGE);
-+ sharpsl_charge_wait( 250 );
-+ reset_scoop_jc_gpio(SCP_LED_ORANGE);
-+ sharpsl_charge_wait( 250 );
-+ if ((GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN))!=0) break;
-+ }
-+}
-+#else // for Corgi
- void sharpsl_charge_err_off(void)
- {
- while(1) {
-@@ -99,6 +116,7 @@
- }
- }
- #endif
-+#endif
-
- #if defined(CONFIG_ARCH_PXA_POODLE)
- #define LED_ONOFF_MASK (LCM_LPT_TOFL|LCM_LPT_TOFH)
-@@ -109,7 +127,7 @@
- #define LED_BLNK(REG,X,Y) ((REG)=((REG)&~LED_BLNK_MASK)|LED_BLNK_VAL(X,Y))
- #endif
-
--#if defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- struct timer_list orange_led_blink_timer;
- struct st_orange_blink {
- int blink_switch;
-@@ -120,16 +138,76 @@
- #define BLINK_SLOW 2
- #define ORANGE_LED_SW 1
- #define GREEN_LED_SW 2
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+#define BLUE_LED_SW 3
-+#define WLAN_LED_SW 4
-+#define LED_NUM 4
-+
-+static int get_ledport( int sw )
-+{
-+ int port=-1;
-+ switch(sw) {
-+ case ORANGE_LED_SW:
-+ port = SCP_LED_ORANGE;
-+ break;
-+ case GREEN_LED_SW:
-+ port = SCP_LED_GREEN;
-+ break;
-+ case BLUE_LED_SW:
-+ port = SCP_LED_BLUE;
-+ break;
-+ case WLAN_LED_SW:
-+ port = SCP_LED_WLAN;
-+ break;
-+ }
-+ return port;
-+}
-+
-+static void set_led( int sw, int on )
-+{
-+ int port=get_ledport(sw);
-+ if (port==-1) {
-+ printk(__FUNCTION__ ": unknown LED %d\n",sw);
-+ return;
-+ }
-+ if (on) set_scoop_jc_gpio(port);
-+ else reset_scoop_jc_gpio(port);
-+ // printk("setled(%d,%d)\n",sw,on);
-+}
-+
-+static int get_led( int sw )
-+{
-+ int port=get_ledport(sw);
-+ if (port==-1) {
-+ printk(__FUNCTION__ ": unknown LED %d\n",sw);
-+ return;
-+ }
-+ return (SCP_JC_REG_GPWR&port)?1:0;
-+}
-+
-+#define LED_OFF(n) set_led(n,0)
-+#define LED_ON(n) set_led(n,1)
-+#define LED_STATUS(n) get_led(n)
-+static int led_resume_buffer=0;
-+#endif
-
- static void blink_orange_led(unsigned long data)
- {
- struct st_orange_blink *orange = (struct st_orange_blink *)data;
-
- if (orange->blink_switch == 0) {
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+ LED_ON(ORANGE_LED_SW);
-+#else
- GPSR(GPIO_LED_ORANGE) = GPIO_bit(GPIO_LED_ORANGE);
-+#endif
- orange->blink_switch = 1;
- } else {
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+ LED_OFF(ORANGE_LED_SW);
-+#else
- GPCR(GPIO_LED_ORANGE) = GPIO_bit(GPIO_LED_ORANGE);
-+#endif
- orange->blink_switch = 0;
- }
-
-@@ -165,9 +243,11 @@
- del_timer(&orange_led_blink_timer);
- }
-
-+#if ! defined(CONFIG_ARCH_PXA_TOSA)
- #define LED_OFF(n) ( (n == ORANGE_LED_SW) ? (GPCR(GPIO_LED_ORANGE) = GPIO_bit(GPIO_LED_ORANGE)) : (reset_scoop_gpio(SCP_LED_GREEN)) )
-
- #define LED_ON(n) ( (n == ORANGE_LED_SW) ? (GPSR(GPIO_LED_ORANGE) = GPIO_bit(GPIO_LED_ORANGE)) : (set_scoop_gpio(SCP_LED_GREEN)) )
-+#endif
-
- #define LED_BLNK(n) orange_led_start_blink(n)
- #endif /* CONFIG_ARCH_PXA_CORGI */
-@@ -178,7 +258,7 @@
- {
- #if defined(CONFIG_ARCH_PXA_POODLE)
- LED_OFF(LCM_LPT0);
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- LED_OFF(ORANGE_LED_SW);
- orange_led_stop_blink();
- #endif
-@@ -188,7 +268,7 @@
- {
- #if defined(CONFIG_ARCH_PXA_POODLE)
- LED_ON(LCM_LPT0);
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- LED_ON(ORANGE_LED_SW);
- #endif
- }
-@@ -198,7 +278,7 @@
- led0_off();
- #if defined(CONFIG_ARCH_PXA_POODLE)
- LED_BLNK(LCM_LPT0,2,2);
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- LED_BLNK(BLINK_FAST);
- #endif
- }
-@@ -208,7 +288,7 @@
- led0_off();
- #if defined(CONFIG_ARCH_PXA_POODLE)
- LED_BLNK(LCM_LPT0,7,7);
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- LED_BLNK(BLINK_SLOW);
- #endif
- }
-@@ -219,7 +299,7 @@
- {
- #if defined(CONFIG_ARCH_PXA_POODLE)
- LED_OFF(LCM_LPT1);
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- LED_OFF(GREEN_LED_SW);
- #endif
- }
-@@ -228,7 +308,7 @@
- {
- #if defined(CONFIG_ARCH_PXA_POODLE)
- LED_ON(LCM_LPT1);
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- LED_ON(GREEN_LED_SW);
- #endif
- }
-@@ -376,7 +456,7 @@
- expires: -1,
- next: -1
- }
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- {
- ledstate: SHARPSLLED_ON ,
- expires: (HZ/10 + HZ/50),
-@@ -397,7 +477,7 @@
- expires: -1,
- next: -1
- }
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- {
- ledstate: SHARPSLLED_ON ,
- expires: ((4*HZ)/5 + (2*HZ)/25),
-@@ -418,7 +498,7 @@
- expires: -1,
- next: -1
- }
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- {
- ledstate: SHARPSLLED_ON ,
- expires: (HZ/10 + HZ/50),
-@@ -439,7 +519,7 @@
- expires: -1,
- next: -1
- }
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- {
- ledstate: SHARPSLLED_ON ,
- expires: HZ/4,
-@@ -460,7 +540,7 @@
- expires: -1,
- next: -1
- }
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- {
- ledstate: SHARPSLLED_ON ,
- expires: HZ/2,
-@@ -481,7 +561,7 @@
- expires: -1,
- next: -1
- }
--#elif defined(CONFIG_ARCH_PXA_CORGI)
-+#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- {
- ledstate: SHARPSLLED_ON ,
- expires: ((4*HZ)/5 + (2*HZ)/25),
-@@ -610,6 +690,98 @@
- led0_off();
- }
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+typedef struct {
-+ int status;
-+ int blink_switch;
-+ long blink_interval;
-+ struct timer_list timer;
-+} LED_BLINK;
-+static LED_BLINK st_led_status[LED_NUM+1];
-+static int led_status_initialized=0;
-+
-+static void led_on(int led)
-+{
-+ del_timer(&st_led_status[led].timer);
-+ st_led_status[led].status=1;
-+ LED_ON(led);
-+}
-+static void led_off(int led)
-+{
-+ del_timer(&st_led_status[led].timer);
-+ st_led_status[led].status=0;
-+ LED_OFF(led);
-+}
-+
-+static void led_blink_func(unsigned long data)
-+{
-+ int led = data;
-+ if (st_led_status[led].blink_switch==0 && led_suspended==0 ) {
-+ LED_ON(led);
-+ st_led_status[led].blink_switch=1;
-+ } else {
-+ LED_OFF(led);
-+ st_led_status[led].blink_switch=0;
-+ }
-+ init_timer(&st_led_status[led].timer);
-+ st_led_status[led].timer.function = led_blink_func;
-+ st_led_status[led].timer.expires = jiffies + st_led_status[led].blink_interval;
-+ st_led_status[led].timer.data = led;
-+ add_timer(&st_led_status[led].timer);
-+}
-+
-+static void led_start_blink(int led, int interval)
-+{
-+ del_timer(&st_led_status[led].timer);
-+ switch (interval) {
-+ case BLINK_SLOW:
-+ st_led_status[led].blink_interval = (4*HZ)/5 + (2*HZ)/25;
-+ st_led_status[led].status = 2;
-+ break;
-+ case BLINK_FAST:
-+ st_led_status[led].blink_interval = HZ / 4;
-+ st_led_status[led].status = 3;
-+ break;
-+ default :
-+ return;
-+ }
-+
-+ st_led_status[led].blink_switch=0;
-+ led_blink_func(led);
-+}
-+
-+static void sharpsl_led_process_ex(int led_sw)
-+{
-+ int *leds = sharpslled_internal_logical;
-+ int status=-1;
-+ switch(led_sw) {
-+ case BLUE_LED_SW:
-+ status = leds[SHARP_LED_BLUETOOTH];
-+ break;
-+ case WLAN_LED_SW:
-+ status = leds[SHARP_LED_WLAN];
-+ break;
-+ }
-+ if ( status == -1 || status == st_led_status[led_sw].status ) return;
-+ if (led_suspended) status=0; // force off
-+ switch(status) {
-+ case 0: // off
-+ led_off(led_sw);
-+ return;
-+ case 1: // on
-+ led_on(led_sw);
-+ return;
-+ case 2: // blink
-+ led_start_blink(led_sw,BLINK_SLOW);
-+ return;
-+ case 3: // blink fast
-+ led_start_blink(led_sw,BLINK_FAST);
-+ return;
-+ }
-+ led_off(led_sw);
-+}
-+#endif
-+
- static sharpled_pattern_item* decide_physical_led(void)
- {
- int *leds = sharpslled_internal_logical;
-@@ -632,7 +804,7 @@
- sharpslled_internal_logical[15]));
-
- /******* 1st: controlled *******/
--#if defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- if( (leds[SHARP_LED_COLLIE_1] > LED_COLLIE_1_ON) &&
- (leds[SHARP_LED_PDA] == LED_PDA_OFF) )
- return NULL;
-@@ -662,10 +834,10 @@
- sharpsl_ledpat_softflash : NULL;
- }
-
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- /* A3-1:R:SHARP_LED_CHARGER=LED_CHARGER_ERROR */
-
--#if defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- /* A3-non-spec:G:turn off */
- if( leds[SHARP_LED_PDA] == LED_PDA_OFF )
- return NULL;
-@@ -777,6 +949,14 @@
- if( which < 0 || which > SHARP_LED_WHICH_MAX ) return -EINVAL;
- sharpslled_internal_logical[which] = status;
- sharpsl_led0_process();
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ {
-+ int i;
-+ for (i=3; i<=LED_NUM; i++) {
-+ sharpsl_led_process_ex(i);
-+ }
-+ }
-+#endif
- if( curpat ) sharpled_pattern_end(&sharpsl_led1_player);
- if( ( pat = decide_physical_led() ) != NULL ){
- sharpled_pattern_start(&sharpsl_led1_player,pat);
-@@ -787,13 +967,44 @@
-
- int sharpsl_init_led(void)
- {
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if (!led_status_initialized) {
-+ memset(&st_led_status,0,sizeof(st_led_status));
-+ led_status_initialized=1;
-+ }
-+#endif
- return 0;
- }
- int sharpsl_suspend_led(void)
- {
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ led_suspended=1;
-+ {
-+ int i;
-+ led_resume_buffer = 0;
-+ for (i=1; i<=LED_NUM; i++) {
-+ if (LED_STATUS(i)) {
-+ led_resume_buffer |= 0x1<<i;
-+ LED_OFF(i);
-+ }
-+ }
-+ }
-+#endif
- return 0;
- }
- int sharpsl_resume_led(void)
- {
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ led_suspended=0;
-+ {
-+ int i;
-+ for (i=1; i<=LED_NUM; i++) {
-+ if (led_resume_buffer & (0x1<<i)) {
-+ LED_ON(i);
-+ }
-+ }
-+ led_resume_buffer = 0;
-+ }
-+#endif
- return 0;
- }
-diff -Nur linux_c860_org/drivers/char/tosa_keyb.c linux/drivers/char/tosa_keyb.c
---- linux_c860_org/drivers/char/tosa_keyb.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/char/tosa_keyb.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,234 @@
-+/*
-+ * linux/drivers/char/tosa_keyb.c
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * Based on:
-+ * drivers/char/corgi_keyb.c
-+ * drivers/char/collie_keyb.c
-+ * drivers/char/iris_keyb.c
-+ * drivers/char/kbd_linkup.c - Keyboard Driver for Linkup-7200
-+ * Copyright (C) Roger Gammans 1998
-+ * Written for Linkup 7200 by Xuejun Tao, ISDcorp
-+ * Refer to kbd_7110.c (Cirrus Logic 7110 Keyboard driver)
-+ *
-+ * ChangeLong:
-+ * 04-25-2001 Lineo Japan, Inc.
-+ * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
-+ * 12-Dec-2002 Sharp Corporation
-+ * 1-Nov-2003 Sharp Corporation for Tosa
-+ */
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/poll.h>
-+#include <linux/wait.h>
-+#include <asm/arch/keyboard.h>
-+#include <asm/uaccess.h>
-+#include <linux/tqueue.h>
-+#include <linux/kbd_ll.h>
-+#include <linux/delay.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+#ifdef USE_KBD_IRQ // could be defined in asm/arch/keyboard.h
-+#include <asm/irq.h> // for linkup keyboard interrupt
-+#endif
-+
-+#include <asm/arch/irqs.h>
-+
-+#ifndef TOSA_KBD_MAJOR
-+# define TOSA_KBD_MAJOR 61
-+#endif
-+
-+#ifdef CONFIG_PM
-+#include <linux/pm.h>
-+static struct pm_dev *corgi_kbd_pm_dev;
-+#endif
-+
-+/*
-+ * common logical driver definition
-+ */
-+extern void sharppda_kbd_press(int keycode);
-+extern void sharppda_kbd_release(int keycode);
-+extern void sharppda_scan_logdriver_init(void);
-+extern void sharppda_scan_key_gpio(void* dummy);
-+#define tosa_kbd_tick sharppda_scan_key_gpio
-+
-+/*
-+ * physical driver depending on TOSA target.
-+ */
-+void tosa_kbd_discharge_all(void)
-+{
-+ // STROBE All HiZ
-+ GPCR1 = GPIO_HIGH_STROBE_BIT;
-+ GPDR1 &= ~GPIO_HIGH_STROBE_BIT;
-+ GPCR2 = GPIO_LOW_STROBE_BIT;
-+ GPDR2 &= ~GPIO_LOW_STROBE_BIT;
-+}
-+
-+void tosa_kbd_charge_all(void)
-+{
-+}
-+
-+void tosa_kbd_activate_all(void)
-+{
-+ // STROBE ALL -> High
-+ GPSR1 = GPIO_HIGH_STROBE_BIT;
-+ GPDR1 |= GPIO_HIGH_STROBE_BIT;
-+ GPSR2 = GPIO_LOW_STROBE_BIT;
-+ GPDR2 |= GPIO_LOW_STROBE_BIT;
-+
-+ udelay(KB_DISCHARGE_DELAY);
-+
-+ // STATE CLEAR
-+ GEDR2 |= GPIO_ALL_SENSE_BIT;
-+}
-+
-+void tosa_kbd_activate_col(int col)
-+{
-+ if (col<=5) {
-+ // STROBE col -> High, not col -> HiZ
-+ GPSR1 = GPIO_STROBE_BIT(col);
-+ GPDR1 = (GPDR1 & ~GPIO_HIGH_STROBE_BIT) | GPIO_STROBE_BIT(col);
-+ } else {
-+ // STROBE col -> High, not col -> HiZ
-+ GPSR2 = GPIO_STROBE_BIT(col);
-+ GPDR2 = (GPDR2 & ~GPIO_LOW_STROBE_BIT) | GPIO_STROBE_BIT(col);
-+ }
-+}
-+
-+void tosa_kbd_reset_col(int col)
-+{
-+ if (col<=5) {
-+ // STROBE col -> Low
-+ GPCR1 = GPIO_STROBE_BIT(col);
-+ // STROBE col -> out, not col -> HiZ
-+ GPDR1 = (GPDR1 & ~GPIO_HIGH_STROBE_BIT) | GPIO_STROBE_BIT(col);
-+ } else {
-+ // STROBE col -> Low
-+ GPCR2 = GPIO_STROBE_BIT(col);
-+ // STROBE col -> out, not col -> HiZ
-+ GPDR2 = (GPDR2 & ~GPIO_LOW_STROBE_BIT) | GPIO_STROBE_BIT(col);
-+
-+ }
-+}
-+
-+
-+#ifdef USE_KBD_IRQ
-+
-+static void tosa_kbd_irq(int irq,void *dev_id,struct pt_regs *regs)
-+{
-+#ifdef CONFIG_APM
-+ extern int autoPowerCancel;
-+ extern int autoLightCancel;
-+#endif
-+ tosa_kbd_tick(NULL);
-+
-+#if CONFIG_APM // auto power/light cancel
-+ autoPowerCancel = 0;
-+ autoLightCancel = 0;
-+#endif
-+
-+}
-+#endif
-+
-+
-+#ifdef CONFIG_PM
-+extern void sharppda_scan_logdriver_suspend(void);
-+extern void sharppda_scan_logdriver_resume(void);
-+
-+extern int tosa_initial_keypress;
-+
-+static int tosa_kbd_pm_callback(struct pm_dev *pm_dev,
-+ pm_request_t req, void *data)
-+{
-+ int i;
-+
-+ switch (req) {
-+ case PM_SUSPEND:
-+ for (i = 0; i < KEY_SENSE_NUM; i++) {
-+ disable_irq(IRQ_GPIO_KEY_SENSE(i));
-+ }
-+ disable_irq(IRQ_GPIO_ON_KEY);
-+ disable_irq(IRQ_GPIO_RECORD_BTN);
-+ disable_irq(IRQ_GPIO_SYNC);
-+ sharppda_scan_logdriver_suspend();
-+ break;
-+ case PM_RESUME:
-+ // STROBE ALL -> High
-+ GPSR1 = GPIO_HIGH_STROBE_BIT;
-+ GPSR2 = GPIO_LOW_STROBE_BIT;
-+ GPDR1 |= GPIO_HIGH_STROBE_BIT;
-+ GPDR2 |= GPIO_LOW_STROBE_BIT;
-+ for (i = 0; i < KEY_SENSE_NUM; i++) {
-+ enable_irq(IRQ_GPIO_KEY_SENSE(i));
-+ }
-+ enable_irq(IRQ_GPIO_ON_KEY);
-+ enable_irq(IRQ_GPIO_RECORD_BTN);
-+ enable_irq(IRQ_GPIO_SYNC);
-+ sharppda_scan_logdriver_resume();
-+ tosa_initial_keypress = -1;
-+ break;
-+ }
-+ return 0;
-+}
-+#endif
-+
-+void tosa_kbd_hw_init(void)
-+{
-+ int i;
-+
-+ sharppda_scan_logdriver_init();
-+
-+ // STROBE ALL -> High
-+ // SENSE ALL -> In
-+ GPSR1 = GPIO_HIGH_STROBE_BIT;
-+ GPSR2 = GPIO_LOW_STROBE_BIT;
-+ GPDR2 &= ~GPIO_ALL_SENSE_BIT;
-+ GPDR1 |= GPIO_HIGH_STROBE_BIT;
-+ GPDR2 |= GPIO_LOW_STROBE_BIT;
-+ GEDR2 |= GPIO_ALL_SENSE_BIT;
-+ GAFR1_U &= ~GAFR_HIGH_STROBE_BIT;
-+ GAFR2_L &= ~(GAFR_LOW_STROBE_BIT | GAFR_ALL_SENSE_BIT);
-+
-+ /* SENSE:RisingEdge */
-+ for (i = 0; i < KEY_SENSE_NUM; i++) {
-+ set_GPIO_IRQ_edge(GPIO_KEY_SENSE(i), GPIO_RISING_EDGE);
-+ if (request_irq(IRQ_GPIO_KEY_SENSE(i), tosa_kbd_irq,
-+ SA_INTERRUPT, "keyboard", NULL)) {
-+ printk("Could not allocate KEYBD IRQ%d!\n", i);
-+ }
-+ }
-+ // Power&Rec Button
-+ set_GPIO_IRQ_edge(GPIO_ON_KEY, GPIO_FALLING_EDGE);
-+ set_GPIO_IRQ_edge(GPIO_RECORD_BTN, GPIO_FALLING_EDGE);
-+ set_GPIO_IRQ_edge(GPIO_SYNC, GPIO_FALLING_EDGE);
-+ if (request_irq(IRQ_GPIO_ON_KEY, tosa_kbd_irq, SA_INTERRUPT, "On key", NULL) ||
-+ request_irq(IRQ_GPIO_RECORD_BTN, tosa_kbd_irq, SA_INTERRUPT, "Record key", NULL) ||
-+ request_irq(IRQ_GPIO_SYNC, tosa_kbd_irq, SA_INTERRUPT, "Sync key", NULL)) {
-+ printk("Could not allocate KEYBD IRQ%d!\n", i);
-+ }
-+
-+
-+#ifdef CONFIG_PM
-+ corgi_kbd_pm_dev = pm_register(PM_SYS_DEV, 0, tosa_kbd_pm_callback);
-+#endif
-+
-+ printk("keyboard initilaized.\n");
-+}
-+
-+int tosa_kbd_translate(unsigned char scancode, unsigned char *keycode_p)
-+{
-+
-+ /*
-+ * We do this strangley to be more independent of
-+ * our headers..
-+ */
-+
-+ *keycode_p = scancode & ~(KBDOWN | KBUP);
-+
-+ return 1;
-+}
-+
-diff -Nur linux_c860_org/drivers/char/tosa_keymap.c linux/drivers/char/tosa_keymap.c
---- linux_c860_org/drivers/char/tosa_keymap.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/char/tosa_keymap.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,466 @@
-+
-+/* Do not edit this file! It was automatically generated by */
-+/* loadkeys --mktable defkeymap.map > defkeymap.c */
-+
-+#include <linux/types.h>
-+#include <linux/keyboard.h>
-+#include <linux/kd.h>
-+
-+u_short plain_map[] = {
-+ 0xf200, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66, 0xfb67,
-+ 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e, 0xfb6f,
-+ 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76, 0xfb77,
-+ 0xfb78, 0xfb79, 0xfb7a, 0xf700, 0xf201, 0xf101, 0xf703, 0xf008,
-+ 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
-+ 0xf200, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
-+ 0xf038, 0xf039, 0xf030, 0xf02d, 0xf05e, 0xf05c, 0xf05b, 0xf040,
-+ 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c,
-+ 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf301,
-+ 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
-+ 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e,
-+ 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf03b,
-+ 0xf03a, 0xf05d, 0xf02c, 0xf02e, 0xf02f, 0xf05f, 0xf200, 0xf700,
-+ 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-+ 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+};
-+
-+u_short shift_map[] = {
-+ 0xf200, 0xfb41, 0xfb42, 0xfb43, 0xfb44, 0xfb45, 0xfb46, 0xfb47,
-+ 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e, 0xfb4f,
-+ 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56, 0xfb57,
-+ 0xfb58, 0xfb59, 0xfb5a, 0xf700, 0xf201, 0xf101, 0xf702, 0xf008,
-+ 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
-+ 0xf200, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027,
-+ 0xf028, 0xf029, 0xf07e, 0xf03d, 0xf07e, 0xf07c, 0xf07b, 0xf060,
-+ 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf03b,
-+ 0xf03a, 0xf009, 0xf104, 0xf105, 0xf106, 0xf03f, 0xf022, 0xf301,
-+ 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
-+ 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e,
-+ 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf02b,
-+ 0xf02a, 0xf07d, 0xf03c, 0xf03e, 0xf03f, 0xf05f, 0xf200, 0xf700,
-+ 0xf114, 0xf117, 0xf20b, 0xf20a, 0xf701, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-+ 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+};
-+
-+u_short ctrl_map[] = {
-+ 0xf200, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007,
-+ 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f,
-+ 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017,
-+ 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008,
-+ 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf200,
-+ 0xf200, 0xf009, 0xf104, 0xf105, 0xf106, 0xf200, 0xf200, 0xf301,
-+ 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
-+ 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e,
-+ 0xf702, 0xf703, 0xf01b, 0xf020, 0xf000, 0xf310, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700,
-+ 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-+ 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+};
-+
-+u_short shift_ctrl_map[] = {
-+ 0xf200, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007,
-+ 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f,
-+ 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017,
-+ 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008,
-+ 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf200,
-+ 0xf200, 0xf009, 0xf104, 0xf105, 0xf106, 0xf200, 0xf200, 0xf301,
-+ 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
-+ 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e,
-+ 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700,
-+ 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-+ 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+};
-+
-+u_short alt_map[] = {
-+ 0xf200, 0xf021, 0xf02d, 0xf863, 0xf023, 0xf033, 0xf024, 0xf025,
-+ 0xf05f, 0xf038, 0xf026, 0xf02a, 0xf028, 0xf03d, 0xf02b, 0xf039,
-+ 0xf030, 0xf031, 0xf034, 0xf040, 0xf035, 0xf037, 0xf876, 0xf032,
-+ 0xf878, 0xf036, 0xf87a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf07f,
-+ 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf07d,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf029,
-+ 0xf03c, 0xf207, 0xf104, 0xf105, 0xf106, 0xf200, 0xf07e, 0xf301,
-+ 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
-+ 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e,
-+ 0xf702, 0xf703, 0xf01b, 0xf000, 0xf020, 0xf310, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700,
-+ 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-+ 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+};
-+
-+ushort *key_maps[MAX_NR_KEYMAPS] = {
-+ plain_map, shift_map, 0, 0,
-+ ctrl_map, shift_ctrl_map, 0, 0,
-+ alt_map, 0
-+};
-+
-+unsigned int keymap_count = 5;
-+
-+
-+/*
-+ * Philosophy: most people do not define more strings, but they who do
-+ * often want quite a lot of string space. So, we statically allocate
-+ * the default and allocate dynamically in chunks of 512 bytes.
-+ */
-+
-+char func_buf[] = {
-+ '\033', '[', '[', 'A', 0,
-+ '\033', '[', '[', 'B', 0,
-+ '\033', '[', '[', 'C', 0,
-+ '\033', '[', '[', 'D', 0,
-+ '\033', '[', '[', 'E', 0,
-+ '\033', '[', '1', '7', '~', 0,
-+ '\033', '[', '1', '8', '~', 0,
-+ '\033', '[', '1', '9', '~', 0,
-+ '\033', '[', '2', '0', '~', 0,
-+ '\033', '[', '2', '1', '~', 0,
-+ '\033', '[', '2', '3', '~', 0,
-+ '\033', '[', '2', '4', '~', 0,
-+ '\033', '[', '2', '5', '~', 0,
-+ '\033', '[', '2', '6', '~', 0,
-+ '\033', '[', '2', '8', '~', 0,
-+ '\033', '[', '2', '9', '~', 0,
-+ '\033', '[', '3', '1', '~', 0,
-+ '\033', '[', '3', '2', '~', 0,
-+ '\033', '[', '3', '3', '~', 0,
-+ '\033', '[', '3', '4', '~', 0,
-+ '\033', '[', '1', '~', 0,
-+ '\033', '[', '2', '~', 0,
-+ '\033', '[', '3', '~', 0,
-+ '\033', '[', '4', '~', 0,
-+ '\033', '[', '5', '~', 0,
-+ '\033', '[', '6', '~', 0,
-+ '\033', '[', 'M', 0,
-+ '\033', '[', 'P', 0,
-+};
-+
-+
-+char *funcbufptr = func_buf;
-+int funcbufsize = sizeof(func_buf);
-+int funcbufleft = 0; /* space left */
-+
-+char *func_table[MAX_NR_FUNC] = {
-+ func_buf + 0,
-+ func_buf + 5,
-+ func_buf + 10,
-+ func_buf + 15,
-+ func_buf + 20,
-+ func_buf + 25,
-+ func_buf + 31,
-+ func_buf + 37,
-+ func_buf + 43,
-+ func_buf + 49,
-+ func_buf + 55,
-+ func_buf + 61,
-+ func_buf + 67,
-+ func_buf + 73,
-+ func_buf + 79,
-+ func_buf + 85,
-+ func_buf + 91,
-+ func_buf + 97,
-+ func_buf + 103,
-+ func_buf + 109,
-+ func_buf + 115,
-+ func_buf + 120,
-+ func_buf + 125,
-+ func_buf + 130,
-+ func_buf + 135,
-+ func_buf + 140,
-+ func_buf + 145,
-+ 0,
-+ 0,
-+ func_buf + 149,
-+ 0,
-+};
-+
-+struct kbdiacr accent_table[MAX_DIACR] = {
-+ {'`', 'A', '\300'}, {'`', 'a', '\340'},
-+ {'\'', 'A', '\301'}, {'\'', 'a', '\341'},
-+ {'^', 'A', '\302'}, {'^', 'a', '\342'},
-+ {'~', 'A', '\303'}, {'~', 'a', '\343'},
-+ {'"', 'A', '\304'}, {'"', 'a', '\344'},
-+ {'O', 'A', '\305'}, {'o', 'a', '\345'},
-+ {'0', 'A', '\305'}, {'0', 'a', '\345'},
-+ {'A', 'A', '\305'}, {'a', 'a', '\345'},
-+ {'A', 'E', '\306'}, {'a', 'e', '\346'},
-+ {',', 'C', '\307'}, {',', 'c', '\347'},
-+ {'`', 'E', '\310'}, {'`', 'e', '\350'},
-+ {'\'', 'E', '\311'}, {'\'', 'e', '\351'},
-+ {'^', 'E', '\312'}, {'^', 'e', '\352'},
-+ {'"', 'E', '\313'}, {'"', 'e', '\353'},
-+ {'`', 'I', '\314'}, {'`', 'i', '\354'},
-+ {'\'', 'I', '\315'}, {'\'', 'i', '\355'},
-+ {'^', 'I', '\316'}, {'^', 'i', '\356'},
-+ {'"', 'I', '\317'}, {'"', 'i', '\357'},
-+ {'-', 'D', '\320'}, {'-', 'd', '\360'},
-+ {'~', 'N', '\321'}, {'~', 'n', '\361'},
-+ {'`', 'O', '\322'}, {'`', 'o', '\362'},
-+ {'\'', 'O', '\323'}, {'\'', 'o', '\363'},
-+ {'^', 'O', '\324'}, {'^', 'o', '\364'},
-+ {'~', 'O', '\325'}, {'~', 'o', '\365'},
-+ {'"', 'O', '\326'}, {'"', 'o', '\366'},
-+ {'/', 'O', '\330'}, {'/', 'o', '\370'},
-+ {'`', 'U', '\331'}, {'`', 'u', '\371'},
-+ {'\'', 'U', '\332'}, {'\'', 'u', '\372'},
-+ {'^', 'U', '\333'}, {'^', 'u', '\373'},
-+ {'"', 'U', '\334'}, {'"', 'u', '\374'},
-+ {'\'', 'Y', '\335'}, {'\'', 'y', '\375'},
-+ {'T', 'H', '\336'}, {'t', 'h', '\376'},
-+ {'s', 's', '\337'}, {'"', 'y', '\377'},
-+ {'s', 'z', '\337'}, {'i', 'j', '\377'},
-+};
-+
-+unsigned int accent_table_size = 68;
-diff -Nur linux_c860_org/drivers/char/tosa_keymap.map linux/drivers/char/tosa_keymap.map
---- linux_c860_org/drivers/char/tosa_keymap.map 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/char/tosa_keymap.map 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,277 @@
-+# =======================================================
-+# Iris-1 Default Kernel Keymap for Console Driver
-+# =======================================================
-+#
-+# Default kernel keymap. This uses 7 modifier combinations.
-+#
-+# 0 for no modifier
-+# 1 for [SHIFT]
-+# 4 for [CTRL] , to symbol input for debug
-+# 5 for [CTRL] [SHIFT] , to symbol input for debug
-+# 8 for [ALT]
-+#
-+keymaps 0,1,4,5,8
-+#
-+# loadkeys --mktable iris_keymap.map
-+#
-+# !!!!!! CAUTION !!!!!!
-+# This Keymap Defines Conversion to Console-Key from Soft-Keycode.
-+# Soft-Keycode is created from Hard-Keycode , using iris_rawkey_conv.c
-+#
-+#
-+keycode 1 = a
-+ alt keycode 1 = exclam
-+keycode 2 = b
-+ alt keycode 2 = minus
-+keycode 3 = c
-+keycode 4 = d
-+ alt keycode 4 = numbersign
-+keycode 5 = e
-+ alt keycode 5 = three
-+keycode 6 = f
-+ alt keycode 6 = dollar
-+keycode 7 = g
-+ alt keycode 7 = percent
-+keycode 8 = h
-+ alt keycode 8 = underscore
-+keycode 9 = i
-+ alt keycode 9 = eight
-+keycode 10 = j
-+ alt keycode 10 = ampersand
-+keycode 11 = k
-+ alt keycode 11 = asterisk
-+keycode 12 = l
-+ alt keycode 12 = parenleft
-+keycode 13 = m
-+ alt keycode 13 = equal
-+keycode 14 = n
-+ alt keycode 14 = plus
-+keycode 15 = o
-+ alt keycode 15 = nine
-+keycode 16 = p
-+ alt keycode 16 = zero
-+keycode 17 = q
-+ alt keycode 17 = one
-+keycode 18 = r
-+ alt keycode 18 = four
-+keycode 19 = s
-+ alt keycode 19 = at
-+keycode 20 = t
-+ alt keycode 20 = five
-+keycode 21 = u
-+ alt keycode 21 = seven
-+keycode 22 = v
-+keycode 23 = w
-+ alt keycode 23 = two
-+keycode 24 = x
-+keycode 25 = y
-+ alt keycode 25 = six
-+keycode 26 = z
-+keycode 27 = Shift
-+keycode 28 = Return
-+keycode 29 = F2
-+keycode 30 = Alt Control
-+keycode 31 = BackSpace
-+ alt keycode 31 = Delete
-+keycode 32 = Num_Lock
-+keycode 33 =
-+# (Cancel:34) F9 -> Escape
-+keycode 34 = Escape
-+keycode 35 = Left
-+keycode 36 = Up
-+keycode 37 = Down
-+keycode 38 = Right
-+# (OK:39) F4 -> Return
-+keycode 39 = Return
-+ alt keycode 39 = braceright
-+keycode 40 =
-+keycode 41 = one exclam
-+keycode 42 = two quotedbl
-+keycode 43 = three numbersign
-+keycode 44 = four dollar
-+keycode 45 = five percent
-+keycode 46 = six ampersand
-+keycode 47 = seven apostrophe
-+keycode 48 = eight parenleft
-+keycode 49 = nine parenright
-+keycode 50 = zero asciitilde
-+keycode 51 = minus equal
-+keycode 52 = asciicircum asciitilde
-+keycode 53 = backslash bar
-+keycode 54 = bracketleft braceleft
-+keycode 55 = at grave
-+keycode 56 = Control
-+keycode 57 = Alt
-+keycode 58 = Control
-+keycode 59 = plus
-+keycode 60 = Shift_Lock
-+keycode 61 = at
-+keycode 62 = question
-+keycode 63 = comma semicolon
-+ alt keycode 63 = parenright
-+keycode 64 = period colon
-+ alt keycode 64 = less
-+keycode 65 = Tab
-+ alt keycode 65 = Caps_Lock
-+keycode 66 = F5
-+keycode 67 = F6
-+keycode 68 = F7
-+keycode 69 = slash question
-+keycode 70 = apostrophe quotedbl
-+ alt keycode 70 = asciitilde
-+keycode 71 = KP_1
-+keycode 72 = KP_2
-+keycode 73 = KP_3
-+keycode 74 = KP_4
-+keycode 75 = KP_5
-+keycode 76 = KP_6
-+keycode 77 = KP_7
-+keycode 78 = KP_8
-+keycode 79 = KP_9
-+keycode 80 = KP_0
-+keycode 81 = Delete
-+keycode 82 = KP_Divide
-+keycode 83 = KP_Multiply
-+keycode 84 =
-+keycode 85 = KP_Subtract
-+keycode 86 = KP_Add
-+keycode 87 = KP_Enter
-+# (Activity:88) -> Ctrl
-+keycode 88 = Control
-+# (Contacts:89) -> Alt
-+keycode 89 = Alt
-+keycode 90 = Escape
-+# (select:91) F11 -> space
-+keycode 91 = space
-+ alt keycode 91 = nul
-+keycode 92 = space
-+ control keycode 92 = nul
-+keycode 93 = KP_Period
-+keycode 94 =
-+keycode 95 = semicolon plus
-+keycode 96 = colon asterisk
-+keycode 97 = bracketright braceright
-+keycode 98 = comma less
-+keycode 99 = period greater
-+keycode 100 = slash question
-+keycode 101 = underscore underscore
-+keycode 102 =
-+keycode 103 = Shift
-+keycode 104 = Find
-+keycode 105 = Select
-+keycode 106 = Prior
-+ shift keycode 106 = Scroll_Backward
-+keycode 107 = Next
-+ shift keycode 107 = Scroll_Forward
-+keycode 108 = AltGr
-+keycode 109 =
-+keycode 110 =
-+keycode 111 =
-+keycode 112 =
-+keycode 113 =
-+keycode 114 =
-+keycode 115 =
-+keycode 116 =
-+keycode 117 = Control
-+keycode 118 =
-+keycode 119 =
-+keycode 120 = Control
-+keycode 121 = Alt
-+
-+
-+string F1 = "\033[[A"
-+string F2 = "\033[[B"
-+string F3 = "\033[[C"
-+string F4 = "\033[[D"
-+string F5 = "\033[[E"
-+string F6 = "\033[17~"
-+string F7 = "\033[18~"
-+string F8 = "\033[19~"
-+string F9 = "\033[20~"
-+string F10 = "\033[21~"
-+string F11 = "\033[23~"
-+string F12 = "\033[24~"
-+string F13 = "\033[25~"
-+string F14 = "\033[26~"
-+string F15 = "\033[28~"
-+string F16 = "\033[29~"
-+string F17 = "\033[31~"
-+string F18 = "\033[32~"
-+string F19 = "\033[33~"
-+string F20 = "\033[34~"
-+string Find = "\033[1~"
-+string Insert = "\033[2~"
-+string Remove = "\033[3~"
-+string Select = "\033[4~"
-+string Prior = "\033[5~"
-+string Next = "\033[6~"
-+string Macro = "\033[M"
-+string Pause = "\033[P"
-+compose '`' 'A' to 'À'
-+compose '`' 'a' to 'à'
-+compose '\'' 'A' to 'Á'
-+compose '\'' 'a' to 'á'
-+compose '^' 'A' to 'Â'
-+compose '^' 'a' to 'â'
-+compose '~' 'A' to 'Ã'
-+compose '~' 'a' to 'ã'
-+compose '"' 'A' to 'Ä'
-+compose '"' 'a' to 'ä'
-+compose 'O' 'A' to 'Å'
-+compose 'o' 'a' to 'å'
-+compose '0' 'A' to 'Å'
-+compose '0' 'a' to 'å'
-+compose 'A' 'A' to 'Å'
-+compose 'a' 'a' to 'å'
-+compose 'A' 'E' to 'Æ'
-+compose 'a' 'e' to 'æ'
-+compose ',' 'C' to 'Ç'
-+compose ',' 'c' to 'ç'
-+compose '`' 'E' to 'È'
-+compose '`' 'e' to 'è'
-+compose '\'' 'E' to 'É'
-+compose '\'' 'e' to 'é'
-+compose '^' 'E' to 'Ê'
-+compose '^' 'e' to 'ê'
-+compose '"' 'E' to 'Ë'
-+compose '"' 'e' to 'ë'
-+compose '`' 'I' to 'Ì'
-+compose '`' 'i' to 'ì'
-+compose '\'' 'I' to 'Í'
-+compose '\'' 'i' to 'í'
-+compose '^' 'I' to 'Î'
-+compose '^' 'i' to 'î'
-+compose '"' 'I' to 'Ï'
-+compose '"' 'i' to 'ï'
-+compose '-' 'D' to 'Ð'
-+compose '-' 'd' to 'ð'
-+compose '~' 'N' to 'Ñ'
-+compose '~' 'n' to 'ñ'
-+compose '`' 'O' to 'Ò'
-+compose '`' 'o' to 'ò'
-+compose '\'' 'O' to 'Ó'
-+compose '\'' 'o' to 'ó'
-+compose '^' 'O' to 'Ô'
-+compose '^' 'o' to 'ô'
-+compose '~' 'O' to 'Õ'
-+compose '~' 'o' to 'õ'
-+compose '"' 'O' to 'Ö'
-+compose '"' 'o' to 'ö'
-+compose '/' 'O' to 'Ø'
-+compose '/' 'o' to 'ø'
-+compose '`' 'U' to 'Ù'
-+compose '`' 'u' to 'ù'
-+compose '\'' 'U' to 'Ú'
-+compose '\'' 'u' to 'ú'
-+compose '^' 'U' to 'Û'
-+compose '^' 'u' to 'û'
-+compose '"' 'U' to 'Ü'
-+compose '"' 'u' to 'ü'
-+compose '\'' 'Y' to 'Ý'
-+compose '\'' 'y' to 'ý'
-+compose 'T' 'H' to 'Þ'
-+compose 't' 'h' to 'þ'
-+compose 's' 's' to 'ß'
-+compose '"' 'y' to 'ÿ'
-+compose 's' 'z' to 'ß'
-+compose 'i' 'j' to 'ÿ'
-diff -Nur linux_c860_org/drivers/char/tosa_logkey.c linux/drivers/char/tosa_logkey.c
---- linux_c860_org/drivers/char/tosa_logkey.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/char/tosa_logkey.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,1617 @@
-+/*
-+ * linux/drivers/char/tosa_logkey.c
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * Based on:
-+ * linux/drivers/char/corgi_logkey.c
-+ *
-+ * Based on:
-+ * linux/drivers/char/poodle_logkey.c
-+ * linux/drivers/char/collie_logkey.c
-+ * linux/drivers/char/sharp_logkey.c
-+ *
-+ * Logical GPIO Keyboard driver includeing
-+ * Hard-Key to Soft-Key Mapper for SHARP PDA
-+ *
-+ * Copyright (C) 2001 SHARP
-+ *
-+ * 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.
-+ *
-+ * ChangeLog:
-+ * 04-16-2001 Lineo Japan, Inc.
-+ * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
-+ * 12-Dec-2002 Sharp Corporation
-+ */
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/poll.h>
-+#include <linux/wait.h>
-+#include <asm/arch/keyboard_tosa.h>
-+#include <asm/uaccess.h>
-+#include <linux/tqueue.h>
-+#include <linux/kbd_ll.h>
-+#include <linux/slab.h>
-+//#include <linux/spinlock.h>
-+#include <linux/delay.h>
-+
-+#define DEBUGPRINT(s) /* printk s */
-+#define CUS_DPRINTK(x, args...) /* printk(__FUNCTION__ ": " x,##args) */
-+
-+#ifdef LOGICAL_WAKEUP_SRC
-+#include <asm/arch/sharpsl_wakeup.h>
-+#endif
-+#define KEYMASK_ON (0x1<<0)
-+#define KEYMASK_REC (0x1<<1)
-+#define KEYMASK_SYNC (0x1<<2)
-+#define KEYMASK_ADDRESS (0x1<<3)
-+#define KEYMASK_CALENDAR (0x1<<4)
-+#define KEYMASK_MENU (0x1<<5)
-+#define KEYMASK_MAIL (0x1<<6)
-+
-+#ifndef USE_KBD_IRQ
-+# warning "this is not tested."
-+#endif
-+
-+#ifdef USE_KBD_IRQ // could be defined in asm/arch/keyboard.h
-+# include <asm/irq.h> /* for linkup keyboard interrupt */
-+#endif
-+
-+/*
-+ * physical driver definition
-+ */
-+# define WAIT_CHATTERING_DELAY udelay(100)
-+extern void tosa_kbd_discharge_all(void);
-+extern void tosa_kbd_charge_all(void);
-+extern void tosa_kbd_activate_col(int col);
-+extern void tosa_kbd_reset_col(int col);
-+extern void tosa_kbd_activate_all(void);
-+# define DISCHARGE_ALL tosa_kbd_discharge_all()
-+# define CHARGE_ALL tosa_kbd_charge_all()
-+# define WAIT_DISCHARGE_DELAY udelay(KB_DISCHARGE_DELAY)
-+# define ACTIVATE_COL(c) tosa_kbd_activate_col((c))
-+# define RESET_COL(c) tosa_kbd_reset_col((c))
-+# define WAIT_ACTIVATE_DELAY udelay(KB_ACTIVATE_DELAY)
-+# define GET_ROWS_STATUS(c) ((GPLR2 & GPIO_ALL_SENSE_BIT) >> GPIO_ALL_SENSE_RSHIFT)
-+# define DRIVE_ALL_COLS tosa_kbd_activate_all()
-+# define GET_REAL_COL_FROM_COL(c) (c)
-+# define RAW_MAP "tosa_rawmap.h"
-+# define RAW_MAP_ROLLOVER "tosa_rawmap_rollover.h"
-+
-+
-+static int isBrb = 0;
-+static int checkBrb(void)
-+{
-+ int rowd;
-+
-+ DISCHARGE_ALL;
-+ WAIT_DISCHARGE_DELAY;
-+
-+ rowd = GET_ROWS_STATUS(1);
-+ if (rowd!=0) return 1;
-+ else return 0;
-+}
-+
-+
-+#if ! defined(KB_COLS) || ! defined(KB_ROWS)
-+#error "KB_COLS or KB_ROWS not defined"
-+#endif
-+
-+/*
-+ * keyboard scancode mapper.
-+ */
-+#include <asm/sharp_keycode.h>
-+
-+#define CHECK_ROLLOVER 1
-+
-+#define CHECK_CHUTTER_BOUNCE 1
-+
-+/*
-+ sharppda_kbdstate.in - state
-+ 0 - not pressed
-+ PRESSING1 - pressing (check chutter)
-+ : - pressing (check chutter)
-+ CHECK_CHUTTER - pressing (check chutter)
-+ JUST_PRESSED - just pressed (throw key down)
-+ PRESSED - pressed
-+ RELEASING1 - releasing (check bounce)
-+ : - releasing (check bounce)
-+ PRESSED + CHECK_BOUNCE - releasing (check bounce)
-+ JUST_RELEASED - just released (throw key up)
-+*/
-+#define CHECK_CHUTTER (2) /* * 10ms */
-+#define CHECK_BOUNCE (4) /* * 10ms */
-+#define NOTPRESSED (0)
-+#define PRESSING1 (1)
-+#define JUST_PRESSED (CHECK_CHUTTER+1)
-+#define PRESSED (CHECK_CHUTTER+2)
-+#define RELEASING1 (CHECK_CHUTTER+3)
-+#define JUST_RELEASED (CHECK_CHUTTER+CHECK_BOUNCE+3)
-+#define ROLLOVERERROR (CHECK_CHUTTER+CHECK_BOUNCE+4)
-+#define IS_PRESSING(a) (((a) >= PRESSING1) && ((a) <= CHECK_CHUTTER))
-+#define IS_RELEASING(a) (((a) >= RELEASING1) && ((a) <= PRESSED + CHECK_BOUNCE))
-+#define CHUTTER_BOUNCE_LOG 0
-+
-+#include RAW_MAP
-+#if CHECK_ROLLOVER
-+#include RAW_MAP_ROLLOVER
-+#endif
-+
-+/*
-+ * This is the mapper for Hard-Key to Soft-Key conversion
-+ */
-+
-+int sharp_cur_keycode[(NR_KEYCODES+1)];
-+int sharp_cur_status;
-+int tosa_initial_keypress = -1;
-+
-+kbd_keyinfo sharppda_kbdstate[(NR_KEYCODES+1)]; /* this map is expoted... */
-+
-+static int keysdown = 0;
-+static struct tq_struct kbdhw_task;
-+
-+/*
-+ * for panel-touch sound
-+ */
-+extern void sharpbuz_make_keytouch_sound(void);
-+extern void sharpkbdctl_stat_changed(void);
-+
-+/*
-+ * Keyboard mapping routine.
-+ */
-+
-+int keypress_map(int hardkey)
-+{
-+ int softkey;
-+ unsigned char* pmodmap;
-+ int modif_ref = DOWN_NOP;
-+ int next_status = sharp_cur_status;
-+
-+ /* ======== get soft keycode ========= */
-+ pmodmap = state_to_keymap[sharp_cur_status];
-+ softkey = pmodmap[hardkey];
-+ sharp_cur_keycode[hardkey] = softkey;
-+
-+ /* ======== check automaton-map ======== */
-+ modif_ref = down_modifs_ref[hardkey];
-+ if( modif_ref != DOWN_NOP && modif_ref < DOWN_TABLES_SIZE ){
-+ /* ======== need to check state machine ========= */
-+ unsigned char* statemap;
-+ statemap = down_tables[modif_ref];
-+ next_status = statemap[sharp_cur_status];
-+ }
-+
-+ if( sharp_cur_status != next_status ){
-+ sharp_cur_status = next_status;
-+ sharpkbdctl_stat_changed();
-+ }else{
-+ sharp_cur_status = next_status;
-+ }
-+ return softkey;
-+}
-+
-+int keyrelease_map(int hardkey)
-+{
-+ int softkey;
-+ int modif_ref = UP_NOP;
-+ int next_status = sharp_cur_status;
-+
-+ /* ======== get soft keycode ========= */
-+ softkey = sharp_cur_keycode[hardkey];
-+ sharp_cur_keycode[hardkey] = KEY_IGN;
-+
-+ /* ======== check automaton-map ======== */
-+ modif_ref = up_modifs_ref[hardkey];
-+ if( modif_ref != UP_NOP && modif_ref < UP_TABLES_SIZE ){
-+ /* ======== need to check state machine ========= */
-+ unsigned char* statemap;
-+ statemap = up_tables[modif_ref];
-+ next_status = statemap[sharp_cur_status];
-+ }
-+
-+ if( sharp_cur_status != next_status ){
-+ sharp_cur_status = next_status;
-+ sharpkbdctl_stat_changed();
-+ }else{
-+ sharp_cur_status = next_status;
-+ }
-+ return softkey;
-+}
-+
-+/*
-+ * Keyboard Repeat , including key-mapping
-+ */
-+#include <linux/kd.h>
-+
-+int (*mach_kbdrate) (struct kbd_repeat *);
-+
-+
-+#define DEFAULT_KEYB_REP_DELAY (HZ*2)
-+#define DEFAULT_KEYB_REP_RATE (HZ)
-+
-+static void sharppda_kbd_rep( unsigned long ignore );
-+static unsigned char rep_scancode = 0;
-+static unsigned int key_repeat_delay = DEFAULT_KEYB_REP_DELAY;
-+static unsigned int key_repeat_rate = DEFAULT_KEYB_REP_RATE;
-+
-+static struct timer_list sharppda_kbd_rep_timer = { function: sharppda_kbd_rep };
-+
-+static void sharppda_kbd_rep( unsigned long ignore )
-+{
-+ unsigned long flags;
-+ /* Disable keyboard for the time we call handle_scancode(), else a race
-+ * in the keyboard tty queue may happen */
-+ //DEBUGPRINT(("?"));
-+ save_flags(flags); cli();
-+ del_timer( &sharppda_kbd_rep_timer );
-+ /* A keyboard int may have come in before we disabled the irq, so
-+ * double-check whether rep_scancode is still != 0 */
-+ if (rep_scancode) {
-+ init_timer(&sharppda_kbd_rep_timer);
-+ sharppda_kbd_rep_timer.expires = jiffies + key_repeat_rate;
-+ add_timer( &sharppda_kbd_rep_timer );
-+ DEBUGPRINT(("kbdrep_down %d (%x)\n",rep_scancode,rep_scancode));
-+ }
-+ restore_flags(flags);
-+ //DEBUGPRINT(("!"));
-+}
-+
-+static int sharppda_kbd_kbdrate( struct kbd_repeat *k )
-+{
-+ DEBUGPRINT(("sharppda_kbd_kbdrate\n"));
-+ if (k->delay > 0) {
-+ /* convert from msec to jiffies */
-+ key_repeat_delay = (k->delay * HZ + 500) / 1000;
-+ if (key_repeat_delay < 1)
-+ key_repeat_delay = 1;
-+ }
-+ if (k->rate > 0) {
-+ key_repeat_rate = (k->rate * HZ + 500) / 1000;
-+ if (key_repeat_rate < 1)
-+ key_repeat_rate = 1;
-+ }
-+ k->delay = key_repeat_delay * 1000 / HZ;
-+ k->rate = key_repeat_rate * 1000 / HZ;
-+ return( 0 );
-+}
-+
-+/*
-+ * Keyboard Press/Release function , including key-mapping , for HOLD-modified Key
-+ */
-+
-+static unsigned long key_hold_delay = 120 * HZ / 100;
-+
-+static unsigned char holdkey_pending = 0;
-+static int holdkey_pendinghardkey = 0;
-+static int holdkey_pendingmappedkey = 0;
-+static void sharppda_kbd_hold( unsigned long ignore );
-+static struct timer_list sharppda_kbd_hold_timer = { function: sharppda_kbd_hold };
-+
-+static shappda_holdkey_info **custom_holdkey_info = NULL;
-+
-+#if CHECK_ROLLOVER
-+// rollover_state
-+// 0 .. not detected roll over error in previous key scan
-+// 1 .. detected roll over error in previous key scan
-+static int rollover_state = 0;
-+
-+static unsigned char rep_hardkey = 0;
-+#endif
-+
-+static void sharppda_kbd_hold( unsigned long ignore )
-+{
-+ int hold_keycode;
-+ unsigned long flags;
-+ shappda_holdkey_info *hold_infop = NULL;
-+ save_flags(flags); cli();
-+ del_timer(&sharppda_kbd_hold_timer);
-+ DEBUGPRINT(("sharppda_kbd_hold\n"));
-+ CUS_DPRINTK("enter\n");
-+ if( holdkey_pending && holdkey_info ){
-+ CUS_DPRINTK("pending exists\n");
-+ if( holdkey_pendinghardkey ){
-+ CUS_DPRINTK("holdkey_pendinghardkey\n");
-+ hold_infop = holdkey_info[holdkey_pendinghardkey];
-+ if( custom_holdkey_info ){ /* use Customozed HoldKey */
-+ CUS_DPRINTK("customized holdkey\n");
-+ hold_infop = custom_holdkey_info[holdkey_pendinghardkey];
-+ }
-+ if( ! hold_infop ){
-+ DEBUGPRINT(("NO VALID INFO found for %x\n",holdkey_pendinghardkey));
-+ }else if( hold_infop->type == HOLDKEYTYPE_CHAR ){
-+ DEBUGPRINT(("HOLD eventtype is HOLDKEYTYPE_CHAR for %x\n",holdkey_pendinghardkey));
-+ hold_keycode = hold_infop->character;
-+ DEBUGPRINT(("Pending Key Exists for Hard-Key %x.\n",holdkey_pendinghardkey));
-+ DEBUGPRINT(("Current Keycode is %x , %x\n",
-+ holdkey_pendingmappedkey,sharp_cur_keycode[holdkey_pendinghardkey]));
-+ DEBUGPRINT(("Changing to HOLD-KEY %x\n",hold_keycode));
-+ sharp_cur_keycode[holdkey_pendinghardkey] = hold_keycode;
-+ DEBUGPRINT(("kbdhold %d (%x)\n",KBSCANCDE(hold_keycode,KBDOWN),KBSCANCDE(hold_keycode,KBDOWN)));
-+ handle_scancode(KBSCANCDE(hold_keycode,KBDOWN), 1);
-+ del_timer(&sharppda_kbd_rep_timer);
-+ init_timer(&sharppda_kbd_rep_timer);
-+ sharppda_kbd_rep_timer.expires = jiffies + key_repeat_delay;
-+/* 2001.09.05 Nami. delete hold-key repeat */
-+/* delete hold-key repeat on Iris , too. */
-+ rep_scancode = KBSCANCDE(hold_keycode,KBDOWN);
-+#if CHECK_ROLLOVER
-+ rep_hardkey = holdkey_pendinghardkey;
-+#endif
-+ }else if( hold_infop->type == HOLDKEYTYPE_FUNC ){
-+ DEBUGPRINT(("HOLD eventtype is HOLDKEYTYPE_FUNC for %x\n",holdkey_pendinghardkey));
-+ if( hold_infop->func ){
-+ DEBUGPRINT(("Executing FUNC\n"));
-+ (*(hold_infop->func))();
-+ }
-+ }else{
-+ DEBUGPRINT(("NO VALID TYPE found for %x\n",holdkey_pendinghardkey));
-+ }
-+ }
-+ }
-+ holdkey_pending = 0;
-+ holdkey_pendinghardkey = 0;
-+ holdkey_pendingmappedkey = 0;
-+ DEBUGPRINT(("Pending Key Released.\n"));
-+ restore_flags(flags);
-+}
-+
-+
-+
-+/*
-+ * Keyboard Press/Release function , including key-mapping
-+ */
-+
-+void sharppda_kbd_press(int keycode)
-+{
-+ unsigned long flags;
-+ unsigned char newpress = 0;
-+ int keycode_mapped = keycode;
-+
-+// printk("kbd_press=%d\n",keycode);
-+
-+ spin_lock_irqsave(&kbd_spinlock,flags);
-+#if CHECK_CHUTTER_BOUNCE
-+ if (IS_RELEASING(sharppda_kbdstate[keycode].in)) {
-+ // detected bounce ?
-+ sharppda_kbdstate[keycode].in = PRESSED;
-+#if CHUTTER_BOUNCE_LOG
-+ printk("BOUNCE? keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in);
-+#endif
-+ }
-+ else if (IS_PRESSING(sharppda_kbdstate[keycode].in) ||
-+ (sharppda_kbdstate[keycode].in == NOTPRESSED)) {
-+ // pressing
-+ sharppda_kbdstate[keycode].in++;
-+#if CHUTTER_BOUNCE_LOG
-+ printk("PRESSING keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in);
-+#endif
-+ }
-+ if (sharppda_kbdstate[keycode].in == JUST_PRESSED) {
-+ keysdown++;
-+ newpress = 1;
-+ sharppda_kbdstate[keycode].in = PRESSED;
-+#if CHUTTER_BOUNCE_LOG
-+ printk("JUST_PRESSED keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in);
-+#endif
-+ }
-+#else
-+ if (!sharppda_kbdstate[keycode].in) {
-+ keysdown++;
-+ newpress = 1;
-+#if CHECK_ROLLOVER
-+ sharppda_kbdstate[keycode].in=1;
-+#endif
-+ }
-+#endif
-+
-+ /*
-+ * We approximate a retriggable monostable
-+ * action.
-+ */
-+
-+#if !CHECK_ROLLOVER
-+ sharppda_kbdstate[keycode].in=1;
-+#endif
-+ spin_unlock_irqrestore(&kbd_spinlock,flags);
-+
-+ /* We only need to ensure keysdown consistent */
-+
-+ /* Map Keycode */
-+ if( newpress ){
-+ keycode_mapped = keypress_map(keycode);
-+ }
-+
-+ /* put into upper layer */
-+ if (newpress){
-+ shappda_holdkey_info **use_holdkey_info;
-+ use_holdkey_info = holdkey_info;
-+ if( custom_holdkey_info ){
-+ CUS_DPRINTK("customized holdkey\n");
-+ use_holdkey_info = custom_holdkey_info;
-+ }
-+ if( use_holdkey_info && use_holdkey_info[keycode] ){
-+ CUS_DPRINTK("keycode found\n");
-+ if( ! holdkey_pending ){
-+ DEBUGPRINT(("HOLD keyinfo found for %x. mapped=%x\n",keycode,keycode_mapped));
-+ holdkey_pendinghardkey = keycode;
-+ holdkey_pendingmappedkey = keycode_mapped;
-+ holdkey_pending = 1;
-+ del_timer(&sharppda_kbd_hold_timer);
-+ init_timer(&sharppda_kbd_hold_timer);
-+#ifdef HOLDKEY_INFO_HAS_TIMEOUT
-+ if( use_holdkey_info[keycode]->timeout )
-+ {
-+ unsigned long diff = use_holdkey_info[keycode]->timeout * HZ / 1000;
-+ CUS_DPRINTK("has timeout %d\n",use_holdkey_info[keycode]->timeout);
-+ sharppda_kbd_hold_timer.expires = jiffies + diff;
-+ }
-+ else{ /* set default value */
-+ CUS_DPRINTK("default timeout\n");
-+ sharppda_kbd_hold_timer.expires = jiffies + key_hold_delay;
-+ }
-+#else
-+ sharppda_kbd_hold_timer.expires = jiffies + key_hold_delay;
-+#endif
-+ add_timer( &sharppda_kbd_hold_timer );
-+ DEBUGPRINT(("holding...\n"));
-+ return;
-+ }else{
-+ DEBUGPRINT(("HOLD keyinfo found for %d but already pending...\n",keycode));
-+ }
-+ }
-+ DEBUGPRINT(("kbdpress %d (%x)\n",KBSCANCDE(keycode_mapped,KBDOWN),KBSCANCDE(keycode_mapped,KBDOWN)));
-+ handle_scancode(KBSCANCDE(keycode_mapped,KBDOWN), 1);
-+ // printk("handle_scankey=%x\n",KBSCANCDE(keycode_mapped,KBDOWN));
-+ del_timer(&sharppda_kbd_rep_timer);
-+ init_timer(&sharppda_kbd_rep_timer);
-+ sharppda_kbd_rep_timer.expires = jiffies + key_repeat_delay;
-+ add_timer( &sharppda_kbd_rep_timer );
-+ rep_scancode = KBSCANCDE(keycode_mapped,KBDOWN);
-+#if CHECK_ROLLOVER
-+ rep_hardkey = keycode;
-+#endif
-+ }
-+}
-+
-+#if CHECK_ROLLOVER
-+void sharppda_kbd_press_rollover(int keycode)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&kbd_spinlock,flags);
-+#if CHECK_CHUTTER_BOUNCE
-+ if (sharppda_kbdstate[keycode].in == NOTPRESSED) {
-+ keysdown++;
-+ sharppda_kbdstate[keycode].in=ROLLOVERERROR;
-+#if CHUTTER_BOUNCE_LOG
-+ printk("ROLLOVERERROR keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in);
-+#endif
-+ }
-+#else
-+ if (!sharppda_kbdstate[keycode].in) {
-+ keysdown++;
-+ sharppda_kbdstate[keycode].in=2;
-+ }
-+#endif
-+ // key is down but not handle_scancode()
-+ spin_unlock_irqrestore(&kbd_spinlock,flags);
-+}
-+
-+void sharppda_kbd_press_force_rollover(int keycode)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&kbd_spinlock,flags);
-+#if CHECK_CHUTTER_BOUNCE
-+ if ((sharppda_kbdstate[keycode].in != PRESSED) &&
-+ (sharppda_kbdstate[keycode].in != ROLLOVERERROR)) {
-+ keysdown++;
-+ }
-+ sharppda_kbdstate[keycode].in=ROLLOVERERROR;
-+#if CHUTTER_BOUNCE_LOG
-+ printk("force ROLLOVERERROR keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in);
-+#endif
-+#else
-+ if (!sharppda_kbdstate[keycode].in) {
-+ keysdown++;
-+ }
-+ sharppda_kbdstate[keycode].in=2;
-+#endif
-+ // key is down but not handle_scancode()
-+ spin_unlock_irqrestore(&kbd_spinlock,flags);
-+}
-+#endif
-+
-+void sharppda_kbd_release(int keycode)
-+{
-+ unsigned long flags;
-+ unsigned char newrelease = 0;
-+ int keycode_mapped = keycode;
-+
-+//printk("kbd_release=%d\n",keycode);
-+ spin_lock_irqsave(&kbd_spinlock,flags);
-+#if CHECK_CHUTTER_BOUNCE
-+ if (IS_PRESSING(sharppda_kbdstate[keycode].in)) {
-+ // detected chutter ?
-+ sharppda_kbdstate[keycode].in = NOTPRESSED;
-+#if CHUTTER_BOUNCE_LOG
-+ printk("CHUTTER? keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in);
-+#endif
-+ }
-+ else if (IS_RELEASING(sharppda_kbdstate[keycode].in) ||
-+ (sharppda_kbdstate[keycode].in == PRESSED)) {
-+ // releasing
-+ sharppda_kbdstate[keycode].in++;
-+#if CHUTTER_BOUNCE_LOG
-+ printk("RELEASING keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in);
-+#endif
-+ }
-+ else if (sharppda_kbdstate[keycode].in == ROLLOVERERROR) {
-+ keysdown--;
-+ sharppda_kbdstate[keycode].in = NOTPRESSED;
-+#if CHUTTER_BOUNCE_LOG
-+ printk("was ROLLOVERERROR keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in);
-+#endif
-+ }
-+ if (sharppda_kbdstate[keycode].in == JUST_RELEASED) {
-+ keysdown--;
-+ newrelease = 1;
-+ sharppda_kbdstate[keycode].in = NOTPRESSED;
-+#if CHUTTER_BOUNCE_LOG
-+ printk("JUST_RELEASED keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in);
-+#endif
-+ }
-+#else
-+ if (sharppda_kbdstate[keycode].in) {
-+ keysdown--;
-+#if CHECK_ROLLOVER
-+ if (sharppda_kbdstate[keycode].in==1) {
-+#endif
-+ newrelease = 1;
-+#if CHECK_ROLLOVER
-+ }
-+#endif
-+ }
-+#endif
-+
-+#if !CHECK_CHUTTER_BOUNCE
-+ sharppda_kbdstate[keycode].in=0;
-+#endif
-+ spin_unlock_irqrestore(&kbd_spinlock,flags);
-+
-+ /* We only need to ensure keysdown consistent */
-+
-+
-+ /* Map Keycode */
-+ if( newrelease ){
-+ keycode_mapped = keyrelease_map(keycode);
-+ }
-+
-+ if (newrelease){
-+ if( holdkey_pending ){
-+ DEBUGPRINT(("HOLD pending.\n"));
-+ if( holdkey_pendinghardkey == keycode ){
-+ DEBUGPRINT(("HOLDed key is same as pending-key. %x\n",keycode));
-+ DEBUGPRINT(("Current MappedKey is %x.\n",holdkey_pendingmappedkey));
-+ DEBUGPRINT(("kbdrel hold %d (%x)\n",KBSCANCDE(holdkey_pendingmappedkey,KBDOWN),KBSCANCDE(holdkey_pendingmappedkey,KBDOWN)));
-+ handle_scancode(KBSCANCDE(holdkey_pendingmappedkey,KBDOWN), 1);
-+ del_timer(&sharppda_kbd_hold_timer);
-+ holdkey_pending = 0;
-+ holdkey_pendinghardkey = 0;
-+ holdkey_pendingmappedkey = 0;
-+ DEBUGPRINT(("HOLDed key is released.\n"));
-+ }
-+ }
-+ DEBUGPRINT(("kbdrel nom %d (%x)\n",KBSCANCDE(keycode_mapped,KBUP),KBSCANCDE(keycode_mapped,KBUP)));
-+ handle_scancode(KBSCANCDE(keycode_mapped,KBUP), 0);
-+ // printk("handle_scankey=%x\n",KBSCANCDE(keycode_mapped,KBUP));
-+ if( rep_scancode == KBSCANCDE(keycode_mapped,KBDOWN) ){
-+ rep_scancode = 0;
-+#if CHECK_ROLLOVER
-+ rep_hardkey = 0;
-+#endif
-+ //DEBUGPRINT(("%%"));
-+ del_timer( &sharppda_kbd_rep_timer );
-+ }
-+ }
-+
-+}
-+
-+/*
-+ * Keyboard Scan routine , using GPIO
-+ */
-+
-+
-+#if CHECK_ROLLOVER
-+#define MAX_KEY_PRESS (6)
-+#endif
-+
-+static void port_key_delay_proc( unsigned long port_key );
-+#define PORT_KEY_NUM 3
-+#define IDPORT_ON 0
-+#define IDPORT_REC 1
-+#define IDPORT_SYNC 2
-+static int port_key_setting[PORT_KEY_NUM] = { 30, 90, 5 }; // -1:disable, 0~: x10ms wait for detect
-+static int port_key_delay_state[PORT_KEY_NUM] = {NOTPRESSED,NOTPRESSED,NOTPRESSED};
-+static struct timer_list port_key_delay_timer = { function: port_key_delay_proc };
-+static int port_key_pending = 0;
-+
-+static void reset_port_key_delay(void)
-+{
-+ int i;
-+ del_timer(&port_key_delay_timer);
-+ for (i=0; i<PORT_KEY_NUM; i++) port_key_delay_state[i]=NOTPRESSED;
-+ port_key_pending = 0;
-+}
-+
-+// num = 0:On key, 1:Rec key, 2:Sync key
-+// val = -1:disable, 0~: x10ms wait for detect
-+int set_port_key_setting( int num, int val )
-+{
-+ if (num<0 || num>=PORT_KEY_NUM) return -1;
-+ port_key_setting[num] = val;
-+ port_key_delay_state[num] = NOTPRESSED;
-+ port_key_pending = 0;
-+ return 0;
-+}
-+int get_port_key_setting( int num )
-+{
-+ if (num<0 || num>=PORT_KEY_NUM) return -1;
-+ return port_key_setting[num];
-+}
-+
-+static int read_port_key_status_raw(void)
-+{
-+ int val=0;
-+ // Power
-+ if ((GPLR0 & GPIO_bit(GPIO_ON_KEY))==0) val |= KEYMASK_ON;
-+ // Record
-+ if ((GPLR0 & GPIO_bit(GPIO_RECORD_BTN))==0) val |= KEYMASK_REC;
-+ // Sync
-+ if ((GPLR0 & GPIO_bit(GPIO_SYNC))==0) val |= KEYMASK_SYNC;
-+ return val;
-+}
-+
-+static void port_key_delay_proc( unsigned long port_key )
-+{
-+ int val=read_port_key_status_raw();
-+
-+ switch( port_key ) {
-+ case IDPORT_ON:
-+ if (port_key_delay_state[IDPORT_ON]!=PRESSING1 || (val&KEYMASK_ON) ) {
-+ port_key_delay_state[IDPORT_ON] = PRESSED;
-+ } else {
-+ port_key_delay_state[IDPORT_ON] = NOTPRESSED;
-+ }
-+ break;
-+ case IDPORT_REC:
-+ if (port_key_delay_state[IDPORT_REC]!=PRESSING1 || (val&KEYMASK_REC) ) {
-+ port_key_delay_state[IDPORT_REC] = PRESSED;
-+ } else {
-+ port_key_delay_state[IDPORT_REC] = NOTPRESSED;
-+ }
-+ break;
-+ case IDPORT_SYNC:
-+ if (port_key_delay_state[IDPORT_SYNC]!=PRESSING1 || (val&KEYMASK_SYNC) ) {
-+ port_key_delay_state[IDPORT_SYNC] = PRESSED;
-+ } else {
-+ port_key_delay_state[IDPORT_SYNC] = NOTPRESSED;
-+ }
-+ break;
-+ }
-+ port_key_pending = 0;
-+}
-+
-+static int read_port_key_status(void)
-+{
-+ int ret=0,val=read_port_key_status_raw();
-+
-+ // Power
-+ if (val & KEYMASK_ON) { // press
-+ if (port_key_setting[IDPORT_ON]==0) { // normal key
-+ ret |= KEYMASK_ON;
-+ } else if (port_key_setting[IDPORT_ON]>0) { // delay key
-+ if (port_key_delay_state[IDPORT_ON]==PRESSED) { // already detected
-+ ret |= KEYMASK_ON;
-+ } else if (port_key_delay_state[IDPORT_ON]==NOTPRESSED) { // start timer
-+ reset_port_key_delay();
-+ port_key_delay_state[IDPORT_ON]=PRESSING1;
-+ init_timer(&port_key_delay_timer);
-+ port_key_delay_timer.expires = jiffies + port_key_setting[IDPORT_ON];
-+ port_key_delay_timer.data = IDPORT_ON;
-+ add_timer(&port_key_delay_timer);
-+ port_key_pending = 1;
-+ return ret; // ignore following key
-+ }
-+ }
-+ } else { // release
-+ if (port_key_delay_state[IDPORT_ON]!=NOTPRESSED && port_key_setting[IDPORT_ON]>0) {
-+ del_timer(&port_key_delay_timer);
-+ port_key_pending = 0;
-+ port_key_delay_state[IDPORT_ON]=NOTPRESSED;
-+ }
-+ }
-+
-+
-+ // Record
-+ if (val & KEYMASK_REC) { // press
-+ if (port_key_setting[IDPORT_REC]==0) { // normal key
-+ ret |= KEYMASK_REC;
-+ } else if (port_key_setting[IDPORT_REC]>0) { // delay key
-+ if (port_key_delay_state[IDPORT_REC]==PRESSED) { // already detected
-+ ret |= KEYMASK_REC;
-+ } else if (port_key_delay_state[IDPORT_REC]==NOTPRESSED) { // start timer
-+ reset_port_key_delay();
-+ port_key_delay_state[IDPORT_REC]=PRESSING1;
-+ init_timer(&port_key_delay_timer);
-+ port_key_delay_timer.expires = jiffies + port_key_setting[IDPORT_REC];
-+ port_key_delay_timer.data = IDPORT_REC;
-+ add_timer(&port_key_delay_timer);
-+ port_key_pending = 1;
-+ return ret; // ignore following key
-+ }
-+ }
-+ } else { // release
-+ if (port_key_delay_state[IDPORT_REC]!=NOTPRESSED && port_key_setting[IDPORT_REC]>0) {
-+ del_timer(&port_key_delay_timer);
-+ port_key_pending = 0;
-+ port_key_delay_state[IDPORT_REC]=NOTPRESSED;
-+ }
-+ }
-+
-+ // Sync
-+ if (val & KEYMASK_SYNC) { // press
-+ if (port_key_setting[IDPORT_SYNC]==0) { // normal key
-+ ret |= KEYMASK_SYNC;
-+ } else if (port_key_setting[IDPORT_SYNC]>0) { // delay key
-+ if (port_key_delay_state[IDPORT_SYNC]==PRESSED) { // already detected
-+ ret |= KEYMASK_SYNC;
-+ } else if (port_key_delay_state[IDPORT_SYNC]==NOTPRESSED) { // start timer
-+ reset_port_key_delay();
-+ port_key_delay_state[IDPORT_SYNC]=PRESSING1;
-+ init_timer(&port_key_delay_timer);
-+ port_key_delay_timer.expires = jiffies + port_key_setting[IDPORT_SYNC];
-+ port_key_delay_timer.data = IDPORT_SYNC;
-+ add_timer(&port_key_delay_timer);
-+ port_key_pending = 1;
-+ return ret; // ignore following key
-+ }
-+ }
-+ } else { // release
-+ if (port_key_delay_state[IDPORT_SYNC]!=NOTPRESSED && port_key_setting[IDPORT_SYNC]>0) {
-+ del_timer(&port_key_delay_timer);
-+ port_key_pending = 0;
-+ port_key_delay_state[IDPORT_SYNC]=NOTPRESSED;
-+ }
-+ }
-+
-+ return ret;
-+}
-+
-+void sharppda_scan_key_gpio(void* dummy)
-+{
-+ int col,row;
-+ int rowd;
-+ unsigned long flags;
-+ int real_col;
-+ int count = 0;
-+#if CHECK_ROLLOVER
-+ int pressed_key[MAX_KEY_PRESS + 1];
-+ int i, rollover_count = 0, rollover_error = 0;
-+ unsigned long rollover_flag = 0;
-+#endif
-+#if CHECK_CHUTTER
-+ int loop;
-+#endif
-+
-+ WAIT_CHATTERING_DELAY;
-+
-+ spin_lock_irqsave(&kbd_spinlock,flags);
-+
-+ CHARGE_ALL;
-+
-+ for(col=0;col<KB_COLS+1;col++){
-+ real_col = GET_REAL_COL_FROM_COL(col);
-+ /*
-+ * Discharge the output driver capacitatance
-+ * in the keyboard matrix. (Yes it is significant..)
-+ */
-+ if (real_col<KB_COLS) { // matrix key
-+ DISCHARGE_ALL;
-+ WAIT_DISCHARGE_DELAY;
-+ ACTIVATE_COL(real_col);
-+
-+ WAIT_ACTIVATE_DELAY;
-+ rowd = GET_ROWS_STATUS(real_col);
-+
-+#if 1 // for BRB
-+ if (isBrb) {
-+ rowd &= 0x0000000f;
-+ }
-+#endif
-+ } else { // GPIO port key
-+ rowd = read_port_key_status();
-+ }
-+ for( row = 0 ; row < KB_ROWS ; row++ ){
-+
-+ if( rowd & KB_ROWMASK(row) ){
-+#if CHECK_ROLLOVER
-+ if ((rawkeytable_table_NormalLower[KEYCODE(row, col)] != KEY_IGN)) {
-+ pressed_key[count] = KEYCODE(row, col);
-+ rollover_flag |= rollover_flag_table[KEYCODE(row, col)];
-+ if (count < MAX_KEY_PRESS) {
-+ count++;
-+ }
-+ else {
-+ sharppda_kbd_press_rollover(KEYCODE(row,col));
-+ }
-+ }
-+#else
-+ sharppda_kbd_press(KEYCODE(row,col));
-+ count++;
-+#endif
-+ }
-+ else{
-+ if( sharppda_kbdstate[KEYCODE(row, col)].in ){
-+ sharppda_kbd_release(KEYCODE(row,col));
-+ }
-+ }
-+ }
-+ if (real_col<KB_COLS) {
-+ RESET_COL(real_col);
-+ }
-+ } /* end of for */
-+
-+#if CHECK_ROLLOVER
-+ if (count >= MAX_KEY_PRESS) {
-+ rollover_error = 1;
-+ }
-+ else {
-+ rollover_count = count;
-+ if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_LSHIFT)) {
-+ rollover_count--;
-+ }
-+ if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_RSHIFT)) {
-+ rollover_count--;
-+ }
-+ if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_FUNCTION)) {
-+ rollover_count--;
-+ }
-+ if ((rollover_count > 3) ||
-+ ((rollover_count == 3) &&
-+ (!ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_TAB) ||
-+ ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_DIRECT_ON)) &&
-+ (!ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_VERTICAL) ||
-+ !ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_HORIZONTAL) ||
-+ !ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_ENTQUESPC)))) {
-+ rollover_error = 1;
-+ }
-+ }
-+ // printk("count=%d,rollover_count=%d,rollover_error=%d\n",count,rollover_count,rollover_error);
-+ if (rollover_error == 0) {
-+#if 0
-+ if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_VERTICAL) &&
-+ ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_HORIZONTAL) &&
-+ ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_ENTQUESPC)) {
-+ printk("keyboard : vertical and horizontal and [Enter, ?, Space] pressed\n");
-+ }
-+#endif
-+ for (i = 0; i < count; i++) {
-+ sharppda_kbd_press(pressed_key[i]);
-+ }
-+ rollover_state = 0;
-+ }
-+ else {
-+ if (rollover_state == 0) {
-+#if 0
-+ printk("keyboard : roll over error!\n");
-+ if (count >= MAX_KEY_PRESS) {
-+ printk("keyboard : %d key pressed\n", count);
-+ }
-+ else if (rollover_count > 3) {
-+ printk("keyboard : %d rollover key pressed\n", rollover_count);
-+ }
-+ else if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_TAB) &&
-+ ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_DIRECT_ON)) {
-+ printk("keyboard : TAB and direct ON key pressed\n");
-+ }
-+#endif
-+ // stop repeat
-+ if (rep_hardkey) {
-+#if CHECK_CHUTTER_BOUNCE
-+ for (loop = 0; loop <= CHECK_BOUNCE; loop++) {
-+ sharppda_kbd_release(rep_hardkey);
-+ }
-+#else
-+ sharppda_kbd_release(rep_hardkey);
-+#endif
-+ sharppda_kbd_press_rollover(rep_hardkey);
-+ }
-+ }
-+ for (i = 0; i < count; i++) {
-+ sharppda_kbd_press_rollover(pressed_key[i]);
-+ }
-+ rollover_state = 1;
-+ }
-+#endif
-+
-+#ifdef USE_KBD_IRQ
-+ /*
-+ * drive all for next interrupts
-+ */
-+ DRIVE_ALL_COLS;
-+#endif
-+
-+ // press OK key to erase flash
-+ if (tosa_initial_keypress<0) {
-+#if CHECK_CHUTTER_BOUNCE
-+ if ((sharppda_kbdstate[0x38].in==PRESSED) ||
-+ IS_PRESSING(sharppda_kbdstate[0x38].in)) {
-+#else
-+#if CHECK_ROLLOVER
-+ if (sharppda_kbdstate[0x38].in==1) {
-+#else
-+ if (sharppda_kbdstate[0x38].in) {
-+#endif
-+#endif
-+ tosa_initial_keypress = 1;
-+ } else {
-+ tosa_initial_keypress = 0;
-+ }
-+ }
-+
-+
-+ /*
-+ * Re-queue ourselves
-+ */
-+#if CHECK_CHUTTER_BOUNCE
-+ for (loop = 0; loop < NR_KEYS; loop++) {
-+ if (port_key_pending) {
-+ queue_task(&kbdhw_task,&tq_timer);
-+ break;
-+ }
-+ if (sharppda_kbdstate[loop].in != NOTPRESSED) {
-+ queue_task(&kbdhw_task,&tq_timer);
-+ break;
-+ }
-+ }
-+#else
-+#ifdef USE_KBD_IRQ
-+ if ( count > 0 )
-+#endif
-+ queue_task(&kbdhw_task,&tq_timer);
-+#endif
-+ spin_unlock_irqrestore(&kbd_spinlock,flags);
-+}
-+
-+/*
-+ * Logical Keyboard Driver initialization
-+ */
-+
-+void sharppda_scan_logdriver_init(void)
-+{
-+ int ni;
-+ kbdhw_task.routine = sharppda_scan_key_gpio;
-+ kbdhw_task.sync = 0;
-+ mach_kbdrate = sharppda_kbd_kbdrate;
-+#ifndef USE_KBD_IRQ
-+ queue_task(&kbdhw_task,&tq_timer);
-+#endif
-+ for (ni=0;ni<NR_KEYCODES;ni++){
-+ sharppda_kbdstate[ni].in=0;
-+ }
-+ isBrb = checkBrb();
-+ init_timer(&port_key_delay_timer);
-+}
-+
-+void sharppda_scan_logdriver_suspend(void)
-+{
-+ del_timer( &sharppda_kbd_rep_timer );
-+ del_timer( &sharppda_kbd_hold_timer );
-+ rep_scancode = 0;
-+#if CHECK_ROLLOVER
-+ rep_hardkey = 0;
-+#endif
-+ holdkey_pending = 0;
-+ holdkey_pendinghardkey = 0;
-+ holdkey_pendingmappedkey = 0;
-+}
-+
-+void sharppda_scan_logdriver_resume(void)
-+{
-+ queue_task(&kbdhw_task,&tq_timer);
-+}
-+
-+
-+
-+/*
-+ * External Modifier Status Functions
-+ */
-+
-+int sharppda_kbd_extmodif_showstatus(int which)
-+{
-+#ifdef EXTMODIF_SHOWSTAT_KEYMAX
-+ unsigned char* pmodmap;
-+ if( which >= EXTMODIF_SHOWSTAT_KEYMAX ) return -EINVAL;
-+ if( ! extmodif_status_tables ) return -EINVAL;
-+ if( ! ( pmodmap = extmodif_status_tables[which] ) ) return -EINVAL;
-+ return(pmodmap[sharp_cur_status]);
-+#else /* ! EXTMODIF_SHOWSTAT_KEYMAX */
-+ return -EINVAL; /* not supported on this arch. */
-+#endif /* ! EXTMODIF_SHOWSTAT_KEYMAX */
-+}
-+
-+int sharppda_kbd_extmodif_togglestatus(int which)
-+{
-+#ifdef EXTMODIF_MOVESTAT_KEYMAX
-+ unsigned char* pmodmap;
-+ if( which >= EXTMODIF_MOVESTAT_KEYMAX ) return -EINVAL;
-+ if( ! extmodif_move_tables ) return -EINVAL;
-+ if( ! ( pmodmap = extmodif_move_tables[which] ) ) return -EINVAL;
-+ DEBUGPRINT(("moving from %d to %d\n",sharp_cur_status,pmodmap[sharp_cur_status]));
-+ if( sharp_cur_status != pmodmap[sharp_cur_status] ){
-+ sharp_cur_status = pmodmap[sharp_cur_status];
-+ sharpkbdctl_stat_changed();
-+ }else{
-+ sharp_cur_status = pmodmap[sharp_cur_status];
-+ }
-+ return 0;
-+#else /* ! EXTMODIF_MOVESTAT_KEYMAX */
-+ return -EINVAL; /* not supported on this arch. */
-+#endif /* ! EXTMODIF_MOVESTAT_KEYMAX */
-+}
-+
-+unsigned long sharppda_kbd_extmodif_packstatus(void)
-+{
-+#ifdef EXTMODIF_SHOWSTAT_KEYMAX
-+ unsigned long val = 0;
-+ return val;
-+#else /* ! EXTMODIF_SHOWSTAT_KEYMAX */
-+ return 0;
-+#endif /* ! EXTMODIF_SHOWSTAT_KEYMAX */
-+}
-+
-+/*
-+ * SL-Keycode Search Functions
-+ */
-+
-+static int find_hardcode_from_slcode(int stateno,unsigned char sl_char)
-+{
-+ int i;
-+ unsigned char* pmodmap;
-+ if( stateno < 0 || stateno >= STATE_NUMS_TOTAL ) return -EINVAL;
-+ pmodmap = state_to_keymap[stateno];
-+ for(i=0;i<(NR_KEYCODES+1);i++){
-+ if( pmodmap[i] == sl_char ) return i;
-+ }
-+ return -EINVAL;
-+}
-+
-+
-+/*
-+ * HoldKey Customizing Functions
-+ */
-+
-+static void delete_custom_holdkey_info(void)
-+{
-+ CUS_DPRINTK("\n");
-+ if( custom_holdkey_info ){
-+ int i;
-+ for(i=0;i<(NR_KEYCODES+1);i++){
-+ if( custom_holdkey_info[i] ){
-+ kfree(custom_holdkey_info[i]);
-+ custom_holdkey_info[i] = NULL;
-+ }
-+ }
-+ kfree(custom_holdkey_info);
-+ custom_holdkey_info = NULL;
-+ }
-+}
-+
-+static int duplicate_holdkey_info(void)
-+{
-+ int i;
-+ CUS_DPRINTK("\n");
-+ if( ! custom_holdkey_info ){
-+ custom_holdkey_info = (shappda_holdkey_info**)kmalloc(sizeof(shappda_holdkey_info*)*(NR_KEYCODES+1),GFP_KERNEL);
-+ if( ! custom_holdkey_info ) goto FAIL_SAFE;
-+ memset(custom_holdkey_info,0,sizeof(shappda_holdkey_info*)*(NR_KEYCODES+1));
-+ }
-+ for(i=0;i<(NR_KEYCODES+1);i++){
-+ if( holdkey_info[i] ){
-+ if( ! custom_holdkey_info[i] ){
-+ custom_holdkey_info[i] = (shappda_holdkey_info*)kmalloc(sizeof(shappda_holdkey_info),GFP_KERNEL);
-+ if( ! custom_holdkey_info[i] ) goto FAIL_SAFE;
-+ }
-+ memcpy(custom_holdkey_info[i],holdkey_info[i],sizeof(shappda_holdkey_info));
-+ }else{
-+ if( custom_holdkey_info[i] ){
-+ memset(custom_holdkey_info[i],0,sizeof(shappda_holdkey_info));
-+ kfree(custom_holdkey_info[i]);
-+ custom_holdkey_info[i] = NULL;
-+ }
-+ }
-+ }
-+ return 0;
-+FAIL_SAFE:
-+ delete_custom_holdkey_info();
-+ return -ENOMEM;
-+}
-+
-+static int add_custom_holdkey_info(int i)
-+{
-+ int error;
-+ CUS_DPRINTK(" %d(%x)\n",i,i);
-+ if( i < 0 || i >= (NR_KEYCODES+1) ) return -EINVAL;
-+ if( ! custom_holdkey_info ){
-+ if( ( error = duplicate_holdkey_info() ) ) return error;
-+ }
-+ if( ! custom_holdkey_info[i] ){
-+ custom_holdkey_info[i] = (shappda_holdkey_info*)kmalloc(sizeof(shappda_holdkey_info),GFP_KERNEL);
-+ if( ! custom_holdkey_info[i] ) goto FAIL_SAFE;
-+ if( holdkey_info[i] )
-+ memcpy(custom_holdkey_info[i],holdkey_info[i],sizeof(shappda_holdkey_info));
-+ else
-+ memset(custom_holdkey_info[i],0,sizeof(shappda_holdkey_info));
-+ }
-+ return 0;
-+FAIL_SAFE:
-+ return -ENOMEM;
-+}
-+
-+static int del_custom_holdkey_info(int i)
-+{
-+ int error;
-+ CUS_DPRINTK(" %d(%x)\n",i,i);
-+ if( i < 0 || i >= (NR_KEYCODES+1) ) return -EINVAL;
-+ if( ! custom_holdkey_info ){
-+ if( ( error = duplicate_holdkey_info() ) ) return error;
-+ }
-+ if( custom_holdkey_info[i] ){
-+ memset(custom_holdkey_info[i],0,sizeof(shappda_holdkey_info));
-+ kfree(custom_holdkey_info[i]);
-+ custom_holdkey_info[i] = NULL;
-+ }
-+ return 0;
-+FAIL_SAFE:
-+ return -ENOMEM;
-+}
-+
-+static int restore_one_holdkey_info(int i)
-+{
-+ int error;
-+ CUS_DPRINTK(" %d(%x)\n",i,i);
-+ if( i < 0 || i >= (NR_KEYCODES+1) ) return -EINVAL;
-+ if( ! custom_holdkey_info ) return 0;
-+ if( holdkey_info[i] ){
-+ if( ( error = add_custom_holdkey_info(i) ) ) return error;
-+ memcpy(custom_holdkey_info[i],holdkey_info[i],sizeof(shappda_holdkey_info));
-+ }else{
-+ if( ( error = del_custom_holdkey_info(i) ) ) return error;
-+ }
-+ return 0;
-+}
-+
-+int restore_all_holdkey_info(void)
-+{
-+ CUS_DPRINTK("\n");
-+ if( ! custom_holdkey_info ) return 0;
-+ delete_custom_holdkey_info();
-+ return 0;
-+}
-+
-+int customize_holdkey_char_info(int hardcode,int sl_char)
-+{
-+ int error;
-+ CUS_DPRINTK(" %d(%x) %d(%x)\n",hardcode,hardcode,sl_char,sl_char);
-+ if( ! custom_holdkey_info ){
-+ if( ( error = duplicate_holdkey_info() ) ) return error;
-+ }
-+ if( ( error = add_custom_holdkey_info(hardcode) ) ) return error;
-+ custom_holdkey_info[hardcode]->type = HOLDKEYTYPE_CHAR;
-+ custom_holdkey_info[hardcode]->character = sl_char;
-+ return 0;
-+}
-+
-+int customize_holdkey_char_info_by_slkey(unsigned char slcode,int sl_char)
-+{
-+ int hardcode;
-+ CUS_DPRINTK(" %d(%x) %d(%x)\n",slcode,slcode,sl_char,sl_char);
-+ hardcode = find_hardcode_from_slcode(0,slcode);
-+ if( hardcode < 0 ) return -EINVAL;
-+ return customize_holdkey_char_info(hardcode,sl_char);
-+}
-+
-+int customize_del_holdkey_info(int hardcode)
-+{
-+ CUS_DPRINTK(" %d(%x)\n",hardcode,hardcode);
-+ return del_custom_holdkey_info(hardcode);
-+}
-+
-+int customize_del_holdkey_info_by_slkey(int slcode)
-+{
-+ int hardcode;
-+ CUS_DPRINTK(" %d(%x)\n",slcode,slcode);
-+ hardcode = find_hardcode_from_slcode(0,slcode);
-+ if( hardcode < 0 ) return -EINVAL;
-+ return del_custom_holdkey_info(hardcode);
-+}
-+
-+int customize_restore_holdkey_info(int hardcode)
-+{
-+ CUS_DPRINTK(" %d(%x)\n",hardcode,hardcode);
-+ return restore_one_holdkey_info(hardcode);
-+}
-+
-+int customize_restore_holdkey_info_by_slkey(int slcode)
-+{
-+ int hardcode;
-+ CUS_DPRINTK(" %d(%x)\n",slcode,slcode);
-+ hardcode = find_hardcode_from_slcode(0,slcode);
-+ if( hardcode < 0 ) return -EINVAL;
-+ return restore_one_holdkey_info(hardcode);
-+}
-+
-+
-+int sharppda_kbd_set_hold_threshold(int msecs)
-+{
-+ if( holdkey_info ){
-+ key_hold_delay = (unsigned long)msecs * HZ / 1000;
-+#ifdef HOLDKEY_INFO_HAS_TIMEOUT
-+ if( ! custom_holdkey_info ) duplicate_holdkey_info();
-+ if( custom_holdkey_info ){
-+ int i;
-+ for(i=0;i<=NR_KEYCODES;i++){
-+ if( custom_holdkey_info[i] ){
-+ custom_holdkey_info[i]->timeout = msecs;
-+ }
-+ }
-+ }else{
-+ int i;
-+ for(i=0;i<=NR_KEYCODES;i++){
-+ if( holdkey_info[i] ){
-+ holdkey_info[i]->timeout = msecs;
-+ }
-+ }
-+ }
-+#endif
-+ return 0;
-+ }else{
-+ return -EINVAL; /* not supported on this architecture */
-+ }
-+}
-+
-+int sharppda_kbd_set_hold_threshold_group(int group,int msecs)
-+{
-+#ifdef HOLDKEY_INFO_HAS_TIMEOUT
-+ if( ! custom_holdkey_info ) duplicate_holdkey_info();
-+ if( custom_holdkey_info ){
-+ int i;
-+ for(i=0;i<=NR_KEYCODES;i++){
-+ if( custom_holdkey_info[i] && custom_holdkey_info[i]->setgroup == group ){
-+ custom_holdkey_info[i]->timeout = msecs;
-+ }
-+ }
-+ return 0;
-+ }else if( holdkey_info ){
-+ int i;
-+ for(i=0;i<=NR_KEYCODES;i++){
-+ if( holdkey_info[i] && holdkey_info[i]->setgroup == group ){
-+ holdkey_info[i]->timeout = msecs;
-+ }
-+ }
-+ return 0;
-+ }else{
-+ return -EINVAL; /* not supported on this architecture */
-+ }
-+#endif
-+ return -EINVAL; /* not supported on this architecture */
-+}
-+
-+#if 0
-+static int sharppda_kbd_keyscan(void)
-+{
-+ unsigned long flags;
-+ int row, col, rowd, press_row, press_col, real_col;
-+
-+ WAIT_CHATTERING_DELAY;
-+
-+ spin_lock_irqsave(&kbd_spinlock,flags);
-+
-+ press_col = -1;
-+ press_row = -1;
-+ CHARGE_ALL;
-+ for (col = 0; col < KB_COLS; col++) {
-+ real_col = (GET_REAL_COL_FROM_COL(col));
-+ DISCHARGE_ALL;
-+ WAIT_DISCHARGE_DELAY;
-+ ACTIVATE_COL(real_col);
-+
-+ WAIT_ACTIVATE_DELAY;
-+ rowd = GET_ROWS_STATUS(real_col);
-+ for (row = 0; row < KB_ROWS; row++) {
-+ if (rowd & KB_ROWMASK(row)) {
-+ if (press_row >= 0) {
-+ press_row = -1;
-+ col = KB_COLS;
-+ break;
-+ }
-+ press_row = row;
-+ press_col = col;
-+ }
-+ }
-+ RESET_COL(real_col);
-+ }
-+
-+ if (press_col != 0)
-+ press_row = -1;
-+
-+#ifdef USE_KBD_IRQ
-+ DRIVE_ALL_COLS;
-+#endif
-+
-+ spin_unlock_irqrestore(&kbd_spinlock,flags);
-+
-+ return press_row;
-+}
-+
-+static int sharppda_kbd_keycheck(int row, int col)
-+{
-+ unsigned long flags;
-+ int press, real_col;
-+
-+ WAIT_CHATTERING_DELAY;
-+
-+ spin_lock_irqsave(&kbd_spinlock,flags);
-+
-+ CHARGE_ALL;
-+ real_col = (GET_REAL_COL_FROM_COL(col));
-+ DISCHARGE_ALL;
-+ WAIT_DISCHARGE_DELAY;
-+ ACTIVATE_COL(real_col);
-+
-+ WAIT_ACTIVATE_DELAY;
-+ if (GET_ROWS_STATUS(real_col) & KB_ROWMASK(row))
-+ press = 1;
-+ else
-+ press = 0;
-+ RESET_COL(real_col);
-+
-+#ifdef USE_KBD_IRQ
-+ DRIVE_ALL_COLS;
-+#endif
-+
-+ spin_unlock_irqrestore(&kbd_spinlock,flags);
-+
-+ return press;
-+}
-+
-+#define KEYBOARD_WAKEUP_WAIT 300
-+
-+static void sharppda_kbd_holdkeycheck(int row, int col)
-+{
-+ int count;
-+
-+ for (count = 0; count < KEYBOARD_WAKEUP_WAIT; count++) {
-+ if (!sharppda_kbd_keycheck(row, col))
-+ break;
-+ mdelay(1);
-+ }
-+ if (row != 7) /* Power key */
-+ sharppda_kbd_press(KEYCODE(row, col));
-+ if (count >= KEYBOARD_WAKEUP_WAIT) {
-+ sharppda_kbd_press(KEYCODE(row, col));
-+ sharppda_kbd_hold(0);
-+ }
-+}
-+#endif
-+
-+static void sharppda_kbd_press_repeat( int code )
-+{
-+ int i;
-+ for (i=0; i<JUST_PRESSED; i++) sharppda_kbd_press(code);
-+}
-+static void sharppda_kbd_release_repeat( int code )
-+{
-+ int i;
-+ for (i=0; i<JUST_RELEASED-PRESSED; i++) sharppda_kbd_release(code);
-+}
-+
-+int sharppda_kbd_is_wakeup(void)
-+{
-+ unsigned long flags;
-+ int count = 0, err = 0;
-+ int cur_portkey,last_portkey=0;
-+ int cur_matrixkey,last_matrixkey=0;
-+ const int strobe_num = 4;
-+ const int success_count = 10;
-+
-+ while( !(count>success_count || err>50) ) {
-+ // read GPIO(On,Rec,Sync) key
-+ cur_portkey = read_port_key_status_raw();
-+
-+ // read Strobe4(Address,Calendar,Menu,Mail) key
-+ spin_lock_irqsave(&kbd_spinlock,flags);
-+ DISCHARGE_ALL;
-+ WAIT_DISCHARGE_DELAY;
-+ ACTIVATE_COL(strobe_num);
-+ WAIT_ACTIVATE_DELAY;
-+ cur_matrixkey = GET_ROWS_STATUS(strobe_num);
-+ spin_unlock_irqrestore(&kbd_spinlock,flags);
-+ // compare with last state
-+ if (cur_portkey != last_portkey ||
-+ cur_matrixkey != last_matrixkey) {
-+ count = 0;
-+ err++;
-+ last_portkey = cur_portkey;
-+ last_matrixkey = cur_matrixkey;
-+ } else {
-+ count++;
-+ }
-+ mdelay(10);
-+ }
-+ if (count>success_count) {
-+ printk("key interrupt on (%04x,%04x)\n",last_portkey,last_matrixkey);
-+ if (last_portkey & KEYMASK_ON) { // On ... only status change
-+ sharppda_kbdstate[KEYCODE(0, KB_COLS)].in = PRESSED;
-+ port_key_delay_state[IDPORT_ON]=PRESSED;
-+ }
-+ if (last_portkey & KEYMASK_REC) { // Rec
-+ if (logical_wakeup_src_mask&IDPM_WAKEUP_REC) {
-+ if (port_key_setting[IDPORT_REC]>=0) {
-+ sharppda_kbd_press_repeat(KEYCODE(1, KB_COLS));
-+ sharppda_kbd_release_repeat(KEYCODE(1, KB_COLS));
-+ }
-+ } else last_portkey &= ~KEYMASK_REC;
-+ }
-+ if (last_portkey & KEYMASK_SYNC) { // Sync
-+ if (logical_wakeup_src_mask&IDPM_WAKEUP_SYNC) {
-+ if (port_key_setting[IDPORT_SYNC]>=0) {
-+ sharppda_kbd_press_repeat(KEYCODE(2, KB_COLS));
-+ sharppda_kbd_release_repeat(KEYCODE(2, KB_COLS));
-+ }
-+ } else last_portkey &= ~KEYMASK_SYNC;
-+ }
-+ if (last_matrixkey & KEYMASK_ADDRESS) { // Address
-+ if (logical_wakeup_src_mask&IDPM_WAKEUP_ADDRESSBOOK) {
-+ sharppda_kbd_press_repeat(KEYCODE(3, strobe_num));
-+ sharppda_kbd_release_repeat(KEYCODE(3, strobe_num));
-+ } else last_matrixkey &= ~KEYMASK_ADDRESS;
-+ }
-+ if (last_matrixkey & KEYMASK_CALENDAR) { // Calendar
-+ if (logical_wakeup_src_mask&IDPM_WAKEUP_CALENDAR) {
-+ sharppda_kbd_press_repeat(KEYCODE(4, strobe_num));
-+ sharppda_kbd_release_repeat(KEYCODE(4, strobe_num));
-+ } else last_matrixkey &= ~KEYMASK_CALENDAR;
-+ }
-+ if (last_matrixkey & KEYMASK_MENU) { // Menu
-+ if (logical_wakeup_src_mask&IDPM_WAKEUP_MENU) {
-+ sharppda_kbd_press_repeat(KEYCODE(5, strobe_num));
-+ sharppda_kbd_release_repeat(KEYCODE(5, strobe_num));
-+ } else last_matrixkey &= ~KEYMASK_MENU;
-+ }
-+ if (last_matrixkey & KEYMASK_MAIL) { // Mail (Holdkey event)
-+ if (logical_wakeup_src_mask&IDPM_WAKEUP_MAIL) {
-+ sharppda_kbd_press_repeat(KEYCODE(6, strobe_num));
-+ sharppda_kbd_hold(0);
-+ } else last_matrixkey &= ~KEYMASK_MAIL;
-+ }
-+ return (last_portkey || last_matrixkey)?1:0;
-+ }
-+ return 0;
-+}
-+
-+#define MAX_RESET_KEY_COMBINATION 3
-+
-+#define RESET_KEY_NONE (0)
-+#define RESET_KEY_FUNC (KEYCODE(5, 10))
-+#define RESET_KEY_HOME (KEYCODE(4, 5))
-+#define RESET_KEY_A (KEYCODE(2, 0))
-+#define RESET_KEY_B (KEYCODE(4, 2))
-+#define RESET_KEY_C (KEYCODE(3, 2))
-+#define RESET_KEY_D (KEYCODE(2, 2))
-+#define RESET_KEY_K (KEYCODE(0, 5))
-+#define RESET_KEY_M (KEYCODE(5, 3))
-+#define RESET_KEY_P (KEYCODE(0, 7))
-+#define RESET_KEY_Q (KEYCODE(1, 0))
-+#define RESET_KEY_R (KEYCODE(4, 1))
-+#define RESET_KEY_T (KEYCODE(1, 2))
-+#define RESET_KEY_Z (KEYCODE(3, 0))
-+
-+static int reset_key_combination[][MAX_RESET_KEY_COMBINATION] = {
-+ {RESET_KEY_FUNC, RESET_KEY_HOME, RESET_KEY_NONE}, /* Fn + Home */
-+ {RESET_KEY_P, RESET_KEY_D, RESET_KEY_NONE}, /* P + D */
-+ {RESET_KEY_M, RESET_KEY_D, RESET_KEY_NONE}, /* M + D */
-+ {RESET_KEY_R, RESET_KEY_D, RESET_KEY_NONE}, /* R + D */
-+ {RESET_KEY_FUNC, RESET_KEY_P, RESET_KEY_D}, /* Fn + P + D */
-+ {RESET_KEY_FUNC, RESET_KEY_M, RESET_KEY_D}, /* Fn + M + D */
-+ {RESET_KEY_Q, RESET_KEY_T, RESET_KEY_NONE}, /* Q + T */
-+ {RESET_KEY_C, RESET_KEY_D, RESET_KEY_NONE}, /* C + D */
-+ {RESET_KEY_Z, RESET_KEY_D, RESET_KEY_NONE}, /* Z + D */
-+ {RESET_KEY_K, RESET_KEY_D, RESET_KEY_NONE}, /* K + D */
-+ {RESET_KEY_A, RESET_KEY_B, RESET_KEY_NONE}, /* A + B */
-+ {RESET_KEY_B, RESET_KEY_D, RESET_KEY_NONE}, /* B + D */
-+ {RESET_KEY_A, RESET_KEY_D, RESET_KEY_NONE}, /* A + D */
-+ {RESET_KEY_NONE, RESET_KEY_NONE, RESET_KEY_NONE} /* End Mark */
-+};
-+
-+static int sharppda_kbd_resetcheck_one(void)
-+{
-+ unsigned long flags;
-+ int row, col, rowd, real_col, i, j, k, press_num = 0, pressed, set_num;
-+ int press_key[MAX_RESET_KEY_COMBINATION] = {0, 0, 0};
-+
-+ WAIT_CHATTERING_DELAY;
-+ spin_lock_irqsave(&kbd_spinlock,flags);
-+ CHARGE_ALL;
-+ for (col = 0; col < KB_COLS; col++) {
-+ real_col = (GET_REAL_COL_FROM_COL(col));
-+ DISCHARGE_ALL;
-+ WAIT_DISCHARGE_DELAY;
-+ ACTIVATE_COL(real_col);
-+ WAIT_ACTIVATE_DELAY;
-+ rowd = GET_ROWS_STATUS(real_col);
-+ for (row = 0; row < KB_ROWS; row++) {
-+ if (rowd & KB_ROWMASK(row)) {
-+ if (press_num >= MAX_RESET_KEY_COMBINATION) {
-+ return 0; /* too many keys are pressed */
-+ }
-+ press_key[press_num++] = KEYCODE(row, col);
-+ }
-+ }
-+ RESET_COL(real_col);
-+ }
-+
-+#ifdef USE_KBD_IRQ
-+ DRIVE_ALL_COLS;
-+#endif
-+
-+ spin_unlock_irqrestore(&kbd_spinlock,flags);
-+
-+ for (i = 0; reset_key_combination[i][0] != 0; i++) {
-+ set_num = 0;
-+ for (j = 0; j < MAX_RESET_KEY_COMBINATION; j++) {
-+ if (reset_key_combination[i][j] == RESET_KEY_NONE) continue;
-+ set_num++;
-+ pressed = 0;
-+ for (k = 0; k < press_num; k++) {
-+ if (press_key[k] == reset_key_combination[i][j]) {
-+ pressed = 1;
-+ break;
-+ }
-+ }
-+ if (!pressed) break;
-+ }
-+ if ((j == MAX_RESET_KEY_COMBINATION) && (set_num == press_num)) {
-+ return i + 1;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+int sharppda_kbd_resetcheck(void)
-+{
-+ int state, i;
-+
-+ state = sharppda_kbd_resetcheck_one();
-+#if CHECK_CHUTTER_BOUNCE
-+ if (!state) return 0;
-+ for (i = 0; i < CHECK_CHUTTER; i++) {
-+ mdelay(5);
-+ if (sharppda_kbd_resetcheck_one() != state) return 0;
-+ }
-+#endif
-+ return state;
-+}
-+/*
-+ * end of source
-+ */
-diff -Nur linux_c860_org/drivers/char/tosa_rawmap.h linux/drivers/char/tosa_rawmap.h
---- linux_c860_org/drivers/char/tosa_rawmap.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/char/tosa_rawmap.h 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,340 @@
-+#ifndef __KEYTABLE_H_INCLUDED__
-+#define __KEYTABLE_H_INCLUDED__
-+
-+
-+#ifndef NR_KEYS
-+#define NR_KEYS 128
-+#endif /* ! NR_KEYS */
-+
-+
-+#ifndef NR_KEYCODES
-+#define NR_KEYCODES 128
-+#endif /* ! NR_KEYCODES */
-+
-+
-+#define MODIF_2ND 0x01
-+#define MODIF_CAPS 0x02
-+#define MODIF_NUM 0x03
-+
-+#ifndef KEY_IGN
-+#define KEY_IGN 0
-+#endif /* ! KEY_IGN */
-+
-+
-+static unsigned char rawkeytable_table_NormalLower[(NR_KEYCODES+1)] = {
-+KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+
-+static unsigned char rawkeytable_table_NormalUpper[(NR_KEYCODES+1)] = {
-+KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+
-+static unsigned char rawkeytable_table_2ndLower[(NR_KEYCODES+1)] = {
-+KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+
-+static unsigned char rawkeytable_table_2ndUpper[(NR_KEYCODES+1)] = {
-+KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_PRINTSCREEN,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+
-+static unsigned char rawkeytable_table_NumlockLower[(NR_KEYCODES+1)] = {
-+KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+
-+static unsigned char rawkeytable_table_NumlockUpper[(NR_KEYCODES+1)] = {
-+KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+
-+static unsigned char rawkeytable_table_Num2ndLower[(NR_KEYCODES+1)] = {
-+KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+
-+static unsigned char rawkeytable_table_Num2ndUpper[(NR_KEYCODES+1)] = {
-+KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_PRINTSCREEN,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+
-+
-+
-+#define STATE_S0 0
-+#define STATE_S1 1
-+#define STATE_S2 2
-+#define STATE_S3 3
-+#define STATE_S4 4
-+#define STATE_S5 5
-+#define STATE_S6 6
-+#define STATE_S7 7
-+#define STATE_S8 8
-+#define STATE_S9 9
-+#define STATE_S10 10
-+#define STATE_S11 11
-+#define STATE_S12 12
-+#define STATE_S13 13
-+#define STATE_S14 14
-+#define STATE_S15 15
-+#define STATE_S16 16
-+#define STATE_S17 17
-+#define STATE_S18 18
-+#define STATE_S19 19
-+#define STATE_S20 20
-+#define STATE_S21 21
-+#define STATE_S22 22
-+#define STATE_S23 23
-+#define STATE_S24 24
-+#define STATE_S25 25
-+#define STATE_S26 26
-+#define STATE_S27 27
-+#define STATE_S28 28
-+#define STATE_S29 29
-+#define STATE_S30 30
-+#define STATE_S31 31
-+#define STATE_S32 32
-+#define STATE_S33 33
-+#define STATE_S34 34
-+#define STATE_S35 35
-+#define STATE_S36 36
-+#define STATE_S37 37
-+#define STATE_S38 38
-+#define STATE_S39 39
-+#define STATE_S40 40
-+#define STATE_S41 41
-+#define STATE_S42 42
-+#define STATE_S43 43
-+#define STATE_S44 44
-+#define STATE_S45 45
-+#define STATE_S46 46
-+#define STATE_S47 47
-+#define STATE_S48 48
-+#define STATE_S49 49
-+#define STATE_S50 50
-+#define STATE_S51 51
-+#define STATE_S52 52
-+#define STATE_S53 53
-+#define STATE_S54 54
-+#define STATE_S55 55
-+#define STATE_S56 56
-+#define STATE_S57 57
-+#define STATE_S58 58
-+#define STATE_S59 59
-+#define STATE_S60 60
-+#define STATE_S61 61
-+#define STATE_S62 62
-+#define STATE_S63 63
-+#define STATE_S64 64
-+#define STATE_S65 65
-+#define STATE_S66 66
-+#define STATE_S67 67
-+#define STATE_S68 68
-+#define STATE_S69 69
-+#define STATE_S70 70
-+#define STATE_S71 71
-+#define STATE_S72 72
-+#define STATE_S73 73
-+#define STATE_S74 74
-+#define STATE_S75 75
-+#define STATE_S76 76
-+#define STATE_S77 77
-+#define STATE_S78 78
-+#define STATE_S79 79
-+
-+
-+#define STATE_NUMS_TOTAL 80
-+
-+
-+#ifdef RAWKEY_MAP_DEBUG
-+static char *state_names[STATE_NUMS_TOTAL] = {
-+ "S0",
-+ "S1",
-+ "S2",
-+ "S3",
-+ "S4",
-+ "S5",
-+ "S6",
-+ "S7",
-+ "S8",
-+ "S9",
-+ "S10",
-+ "S11",
-+ "S12",
-+ "S13",
-+ "S14",
-+ "S15",
-+ "S16",
-+ "S17",
-+ "S18",
-+ "S19",
-+ "S20",
-+ "S21",
-+ "S22",
-+ "S23",
-+ "S24",
-+ "S25",
-+ "S26",
-+ "S27",
-+ "S28",
-+ "S29",
-+ "S30",
-+ "S31",
-+ "S32",
-+ "S33",
-+ "S34",
-+ "S35",
-+ "S36",
-+ "S37",
-+ "S38",
-+ "S39",
-+ "S40",
-+ "S41",
-+ "S42",
-+ "S43",
-+ "S44",
-+ "S45",
-+ "S46",
-+ "S47",
-+ "S48",
-+ "S49",
-+ "S50",
-+ "S51",
-+ "S52",
-+ "S53",
-+ "S54",
-+ "S55",
-+ "S56",
-+ "S57",
-+ "S58",
-+ "S59",
-+ "S60",
-+ "S61",
-+ "S62",
-+ "S63",
-+ "S64",
-+ "S65",
-+ "S66",
-+ "S67",
-+ "S68",
-+ "S69",
-+ "S70",
-+ "S71",
-+ "S72",
-+ "S73",
-+ "S74",
-+ "S75",
-+ "S76",
-+ "S77",
-+ "S78",
-+ "S79"
-+};
-+#endif /* RAWKEY_MAP_DEBUG */
-+
-+
-+static unsigned char state_table_LSHIFT_up[STATE_NUMS_TOTAL] = {
-+STATE_S0,STATE_S0,STATE_S2,STATE_S2,STATE_S4,STATE_S4,STATE_S6,STATE_S6,STATE_S8,STATE_S8,STATE_S10,STATE_S10,STATE_S12,STATE_S12,STATE_S14,STATE_S14,STATE_S16,STATE_S16,STATE_S18,STATE_S18,STATE_S20,STATE_S20,STATE_S22,STATE_S22,STATE_S24,STATE_S24,STATE_S26,STATE_S26,STATE_S28,STATE_S28,STATE_S30,STATE_S30,STATE_S32,STATE_S32,STATE_S34,STATE_S34,STATE_S36,STATE_S36,STATE_S38,STATE_S38,STATE_S40,STATE_S40,STATE_S42,STATE_S42,STATE_S44,STATE_S44,STATE_S46,STATE_S46,STATE_S48,STATE_S48,STATE_S50,STATE_S50,STATE_S52,STATE_S52,STATE_S54,STATE_S54,STATE_S56,STATE_S56,STATE_S58,STATE_S58,STATE_S60,STATE_S60,STATE_S62,STATE_S62,STATE_S64,STATE_S64,STATE_S66,STATE_S66,STATE_S68,STATE_S68,STATE_S70,STATE_S70,STATE_S72,STATE_S72,STATE_S74,STATE_S74,STATE_S76,STATE_S76,STATE_S78,STATE_S78};
-+
-+static unsigned char state_table_RSHIFT_up[STATE_NUMS_TOTAL] = {
-+STATE_S0,STATE_S1,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S6,STATE_S7,STATE_S8,STATE_S9,STATE_S10,STATE_S11,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S16,STATE_S17,STATE_S18,STATE_S19,STATE_S20,STATE_S21,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S26,STATE_S27,STATE_S28,STATE_S29,STATE_S30,STATE_S31,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S36,STATE_S37,STATE_S38,STATE_S39,STATE_S0,STATE_S1,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S6,STATE_S7,STATE_S8,STATE_S9,STATE_S10,STATE_S11,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S16,STATE_S17,STATE_S18,STATE_S19,STATE_S20,STATE_S21,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S26,STATE_S27,STATE_S28,STATE_S29,STATE_S30,STATE_S31,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S36,STATE_S37,STATE_S38,STATE_S39};
-+
-+static unsigned char state_table_2nd_up[STATE_NUMS_TOTAL] = {
-+STATE_S0,STATE_S1,STATE_S6,STATE_S7,STATE_S0,STATE_S1,STATE_S6,STATE_S7,STATE_S0,STATE_S1,STATE_S10,STATE_S11,STATE_S16,STATE_S17,STATE_S10,STATE_S11,STATE_S16,STATE_S17,STATE_S10,STATE_S11,STATE_S20,STATE_S21,STATE_S26,STATE_S27,STATE_S20,STATE_S21,STATE_S26,STATE_S27,STATE_S20,STATE_S21,STATE_S30,STATE_S31,STATE_S36,STATE_S37,STATE_S30,STATE_S31,STATE_S36,STATE_S37,STATE_S30,STATE_S31,STATE_S40,STATE_S41,STATE_S46,STATE_S47,STATE_S40,STATE_S41,STATE_S46,STATE_S47,STATE_S40,STATE_S41,STATE_S50,STATE_S51,STATE_S56,STATE_S57,STATE_S50,STATE_S51,STATE_S56,STATE_S57,STATE_S50,STATE_S51,STATE_S60,STATE_S61,STATE_S66,STATE_S67,STATE_S60,STATE_S61,STATE_S66,STATE_S67,STATE_S60,STATE_S61,STATE_S70,STATE_S71,STATE_S76,STATE_S77,STATE_S70,STATE_S71,STATE_S76,STATE_S77,STATE_S70,STATE_S71};
-+
-+
-+
-+#define UP_TABLES_SIZE 3
-+
-+
-+static unsigned char *up_tables[UP_TABLES_SIZE] = {
-+ state_table_LSHIFT_up,state_table_RSHIFT_up,state_table_2nd_up
-+};
-+
-+
-+#define SEE_LSHIFT_UP 0
-+#define SEE_RSHIFT_UP 1
-+#define SEE_2nd_UP 2
-+#define UP_NOP -1
-+
-+
-+static char up_modifs_ref[(NR_KEYCODES+1)] = {
-+UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,SEE_LSHIFT_UP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,SEE_RSHIFT_UP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,SEE_2nd_UP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP};
-+
-+
-+static unsigned char state_table_LSHIFT_down[STATE_NUMS_TOTAL] = {
-+STATE_S1,STATE_S1,STATE_S3,STATE_S3,STATE_S5,STATE_S5,STATE_S7,STATE_S7,STATE_S9,STATE_S9,STATE_S11,STATE_S11,STATE_S13,STATE_S13,STATE_S15,STATE_S15,STATE_S17,STATE_S17,STATE_S19,STATE_S19,STATE_S21,STATE_S21,STATE_S23,STATE_S23,STATE_S25,STATE_S25,STATE_S27,STATE_S27,STATE_S29,STATE_S29,STATE_S31,STATE_S31,STATE_S33,STATE_S33,STATE_S35,STATE_S35,STATE_S37,STATE_S37,STATE_S39,STATE_S39,STATE_S41,STATE_S41,STATE_S43,STATE_S43,STATE_S45,STATE_S45,STATE_S47,STATE_S47,STATE_S49,STATE_S49,STATE_S51,STATE_S51,STATE_S53,STATE_S53,STATE_S55,STATE_S55,STATE_S57,STATE_S57,STATE_S59,STATE_S59,STATE_S61,STATE_S61,STATE_S63,STATE_S63,STATE_S65,STATE_S65,STATE_S67,STATE_S67,STATE_S69,STATE_S69,STATE_S71,STATE_S71,STATE_S73,STATE_S73,STATE_S75,STATE_S75,STATE_S77,STATE_S77,STATE_S79,STATE_S79};
-+
-+static unsigned char state_table_RSHIFT_down[STATE_NUMS_TOTAL] = {
-+STATE_S40,STATE_S41,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S46,STATE_S47,STATE_S48,STATE_S49,STATE_S50,STATE_S51,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S56,STATE_S57,STATE_S58,STATE_S59,STATE_S60,STATE_S61,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S66,STATE_S67,STATE_S68,STATE_S69,STATE_S70,STATE_S71,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S76,STATE_S77,STATE_S78,STATE_S79,STATE_S40,STATE_S41,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S46,STATE_S47,STATE_S48,STATE_S49,STATE_S50,STATE_S51,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S56,STATE_S57,STATE_S58,STATE_S59,STATE_S60,STATE_S61,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S66,STATE_S67,STATE_S68,STATE_S69,STATE_S70,STATE_S71,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S76,STATE_S77,STATE_S78,STATE_S79};
-+
-+static unsigned char state_table_2nd_down[STATE_NUMS_TOTAL] = {
-+STATE_S2,STATE_S3,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S8,STATE_S9,STATE_S8,STATE_S9,STATE_S12,STATE_S13,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S18,STATE_S19,STATE_S18,STATE_S19,STATE_S22,STATE_S23,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S28,STATE_S29,STATE_S28,STATE_S29,STATE_S32,STATE_S33,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S38,STATE_S39,STATE_S38,STATE_S39,STATE_S42,STATE_S43,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S48,STATE_S49,STATE_S48,STATE_S49,STATE_S52,STATE_S53,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S58,STATE_S59,STATE_S58,STATE_S59,STATE_S62,STATE_S63,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S68,STATE_S69,STATE_S68,STATE_S69,STATE_S72,STATE_S73,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S78,STATE_S79,STATE_S78,STATE_S79};
-+
-+static unsigned char state_table_caps_down[STATE_NUMS_TOTAL] = {
-+STATE_S0,STATE_S1,STATE_S14,STATE_S15,STATE_S14,STATE_S15,STATE_S10,STATE_S11,STATE_S14,STATE_S15,STATE_S10,STATE_S11,STATE_S4,STATE_S5,STATE_S4,STATE_S5,STATE_S0,STATE_S1,STATE_S4,STATE_S5,STATE_S20,STATE_S21,STATE_S34,STATE_S35,STATE_S34,STATE_S35,STATE_S30,STATE_S31,STATE_S34,STATE_S35,STATE_S30,STATE_S31,STATE_S24,STATE_S25,STATE_S24,STATE_S25,STATE_S20,STATE_S21,STATE_S24,STATE_S25,STATE_S40,STATE_S41,STATE_S54,STATE_S55,STATE_S54,STATE_S55,STATE_S50,STATE_S51,STATE_S54,STATE_S55,STATE_S50,STATE_S51,STATE_S44,STATE_S45,STATE_S44,STATE_S45,STATE_S40,STATE_S41,STATE_S44,STATE_S45,STATE_S60,STATE_S61,STATE_S74,STATE_S75,STATE_S74,STATE_S75,STATE_S70,STATE_S71,STATE_S74,STATE_S75,STATE_S70,STATE_S71,STATE_S64,STATE_S65,STATE_S64,STATE_S65,STATE_S60,STATE_S61,STATE_S64,STATE_S65};
-+
-+static unsigned char state_table_num_down[STATE_NUMS_TOTAL] = {
-+STATE_S0,STATE_S1,STATE_S24,STATE_S25,STATE_S24,STATE_S25,STATE_S20,STATE_S21,STATE_S24,STATE_S25,STATE_S10,STATE_S11,STATE_S34,STATE_S35,STATE_S34,STATE_S35,STATE_S30,STATE_S31,STATE_S34,STATE_S35,STATE_S20,STATE_S21,STATE_S4,STATE_S5,STATE_S4,STATE_S5,STATE_S0,STATE_S1,STATE_S4,STATE_S5,STATE_S30,STATE_S31,STATE_S14,STATE_S15,STATE_S14,STATE_S15,STATE_S10,STATE_S11,STATE_S14,STATE_S15,STATE_S40,STATE_S41,STATE_S64,STATE_S65,STATE_S64,STATE_S65,STATE_S60,STATE_S61,STATE_S64,STATE_S65,STATE_S50,STATE_S51,STATE_S74,STATE_S75,STATE_S74,STATE_S75,STATE_S70,STATE_S71,STATE_S74,STATE_S75,STATE_S60,STATE_S61,STATE_S44,STATE_S45,STATE_S44,STATE_S45,STATE_S40,STATE_S41,STATE_S44,STATE_S45,STATE_S70,STATE_S71,STATE_S54,STATE_S55,STATE_S54,STATE_S55,STATE_S50,STATE_S51,STATE_S54,STATE_S55};
-+
-+static unsigned char state_table_ANY_OTHER_down[STATE_NUMS_TOTAL] = {
-+STATE_S0,STATE_S1,STATE_S4,STATE_S5,STATE_S4,STATE_S5,STATE_S0,STATE_S1,STATE_S4,STATE_S5,STATE_S10,STATE_S11,STATE_S14,STATE_S15,STATE_S14,STATE_S15,STATE_S10,STATE_S11,STATE_S14,STATE_S15,STATE_S20,STATE_S21,STATE_S24,STATE_S25,STATE_S24,STATE_S25,STATE_S20,STATE_S21,STATE_S24,STATE_S25,STATE_S30,STATE_S31,STATE_S34,STATE_S35,STATE_S34,STATE_S35,STATE_S30,STATE_S31,STATE_S34,STATE_S35,STATE_S40,STATE_S41,STATE_S44,STATE_S45,STATE_S44,STATE_S45,STATE_S40,STATE_S41,STATE_S44,STATE_S45,STATE_S50,STATE_S51,STATE_S54,STATE_S55,STATE_S54,STATE_S55,STATE_S50,STATE_S51,STATE_S54,STATE_S55,STATE_S60,STATE_S61,STATE_S64,STATE_S65,STATE_S64,STATE_S65,STATE_S60,STATE_S61,STATE_S64,STATE_S65,STATE_S70,STATE_S71,STATE_S74,STATE_S75,STATE_S74,STATE_S75,STATE_S70,STATE_S71,STATE_S74,STATE_S75};
-+
-+
-+
-+#define DOWN_TABLES_SIZE 6
-+
-+
-+static unsigned char *down_tables[DOWN_TABLES_SIZE] = {
-+ state_table_LSHIFT_down,state_table_RSHIFT_down,state_table_2nd_down,state_table_caps_down,state_table_num_down,state_table_ANY_OTHER_down
-+};
-+
-+
-+#define SEE_LSHIFT_DOWN 0
-+#define SEE_RSHIFT_DOWN 1
-+#define SEE_2nd_DOWN 2
-+#define SEE_caps_DOWN 3
-+#define SEE_num_DOWN 4
-+#define SEE_ANY_OTHER_DOWN 5
-+#define DOWN_NOP -1
-+
-+
-+static char down_modifs_ref[(NR_KEYCODES+1)] = {
-+DOWN_NOP,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_LSHIFT_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_RSHIFT_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_2nd_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_caps_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_num_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN};
-+
-+
-+static unsigned char extmodif_map_2nd[STATE_NUMS_TOTAL] = {0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1};
-+static unsigned char extmodif_map_CAPS[STATE_NUMS_TOTAL] = {0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1};
-+static unsigned char extmodif_map_NUM[STATE_NUMS_TOTAL] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
-+
-+#define EXTMODIF_SHOWSTAT_KEYMAX 4
-+
-+static unsigned char *extmodif_status_tables[EXTMODIF_SHOWSTAT_KEYMAX] = {
-+NULL,extmodif_map_2nd,extmodif_map_CAPS,extmodif_map_NUM};
-+
-+
-+static unsigned char extmove_map_2nd[STATE_NUMS_TOTAL] = {STATE_S6,STATE_S7,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S0,STATE_S1,STATE_S8,STATE_S9,STATE_S16,STATE_S17,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S10,STATE_S11,STATE_S18,STATE_S19,STATE_S26,STATE_S27,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S20,STATE_S21,STATE_S28,STATE_S29,STATE_S36,STATE_S37,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S30,STATE_S31,STATE_S38,STATE_S39,STATE_S46,STATE_S47,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S40,STATE_S41,STATE_S48,STATE_S49,STATE_S56,STATE_S57,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S50,STATE_S51,STATE_S58,STATE_S59,STATE_S66,STATE_S67,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S60,STATE_S61,STATE_S68,STATE_S69,STATE_S76,STATE_S77,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S70,STATE_S71,STATE_S78,STATE_S79};
-+static unsigned char extmove_map_CAPS[STATE_NUMS_TOTAL] = {STATE_S10,STATE_S11,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S16,STATE_S17,STATE_S18,STATE_S19,STATE_S0,STATE_S1,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S6,STATE_S7,STATE_S8,STATE_S9,STATE_S30,STATE_S31,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S36,STATE_S37,STATE_S38,STATE_S39,STATE_S20,STATE_S21,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S26,STATE_S27,STATE_S28,STATE_S29,STATE_S50,STATE_S51,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S56,STATE_S57,STATE_S58,STATE_S59,STATE_S40,STATE_S41,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S46,STATE_S47,STATE_S48,STATE_S49,STATE_S70,STATE_S71,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S76,STATE_S77,STATE_S78,STATE_S79,STATE_S60,STATE_S61,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S66,STATE_S67,STATE_S68,STATE_S69};
-+static unsigned char extmove_map_NUM[STATE_NUMS_TOTAL] = {STATE_S20,STATE_S21,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S26,STATE_S27,STATE_S28,STATE_S29,STATE_S30,STATE_S31,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S36,STATE_S37,STATE_S38,STATE_S39,STATE_S0,STATE_S1,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S6,STATE_S7,STATE_S8,STATE_S9,STATE_S10,STATE_S11,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S16,STATE_S17,STATE_S18,STATE_S19,STATE_S60,STATE_S61,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S66,STATE_S67,STATE_S68,STATE_S69,STATE_S70,STATE_S71,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S76,STATE_S77,STATE_S78,STATE_S79,STATE_S40,STATE_S41,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S46,STATE_S47,STATE_S48,STATE_S49,STATE_S50,STATE_S51,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S56,STATE_S57,STATE_S58,STATE_S59};
-+
-+#define EXTMODIF_MOVESTAT_KEYMAX 4
-+
-+static unsigned char *extmodif_move_tables[EXTMODIF_MOVESTAT_KEYMAX] = {
-+NULL,extmove_map_2nd,extmove_map_CAPS,extmove_map_NUM};
-+
-+
-+
-+typedef struct shappda_holdkey_info {
-+ int type;
-+ int character;
-+ void (*func)(void);
-+} shappda_holdkey_info;
-+
-+#define HOLDKEYTYPE_CHAR 1
-+#define HOLDKEYTYPE_FUNC 2
-+
-+static shappda_holdkey_info shappda_holdkey_UserDef = {
-+ type: HOLDKEYTYPE_CHAR,
-+ character: SLKEY_EXCLAM,
-+ func: NULL
-+};
-+static shappda_holdkey_info shappda_holdkey_Mail = {
-+ type: HOLDKEYTYPE_CHAR,
-+ character: SLKEY_MAIL2,
-+ func: NULL
-+};
-+
-+static shappda_holdkey_info *holdkey_info[(NR_KEYCODES+1)] = {
-+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,&shappda_holdkey_UserDef,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,&shappda_holdkey_Mail,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
-+
-+
-+static unsigned char *state_to_keymap[STATE_NUMS_TOTAL] = {
-+rawkeytable_table_NormalLower,rawkeytable_table_NormalUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_NormalLower,rawkeytable_table_NormalUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_NumlockLower,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_NumlockLower,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_NormalUpper,rawkeytable_table_NormalUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_NormalUpper,rawkeytable_table_NormalUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper};
-+
-+
-+#endif /* ! __KEYTABLE_H_INCLUDED__ */
-diff -Nur linux_c860_org/drivers/char/tosa_rawmap_rollover.h linux/drivers/char/tosa_rawmap_rollover.h
---- linux_c860_org/drivers/char/tosa_rawmap_rollover.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/char/tosa_rawmap_rollover.h 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,27 @@
-+#ifndef __TOSA_RAWMAP_ROLLOVER_H__
-+#define __TOSA_RAWMAP_ROLLOVER_H__
-+
-+#define ROLLOVER_NO_FLAG 0x00
-+#define ROLLOVER_TAB 0x01
-+#define ROLLOVER_DIRECT_ON 0x02
-+#define ROLLOVER_HORIZONTAL 0x04
-+#define ROLLOVER_VERTICAL 0x08
-+#define ROLLOVER_ENTQUESPC 0x10
-+#define ROLLOVER_LSHIFT 0x20
-+#define ROLLOVER_RSHIFT 0x40
-+#define ROLLOVER_FUNCTION 0x80
-+
-+#define ROLLOVER_CHECK_FLAG(a, b) (((a) & (b)) != 0)
-+
-+static unsigned int rollover_flag_table[(NR_KEYCODES+1)] = {
-+ ROLLOVER_NO_FLAG,
-+ /*0*/ ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG,
-+ /*1*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG,
-+ /*2*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_ENTQUESPC/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG,
-+ /*3*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_DIRECT_ON/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_LSHIFT/**/, ROLLOVER_RSHIFT, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG,
-+ /*4*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_DIRECT_ON/**/, ROLLOVER_DIRECT_ON/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_RSHIFT/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG,
-+ /*5*/ROLLOVER_TAB/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_DIRECT_ON/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_VERTICAL/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_FUNCTION/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG,
-+ /*6*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_ENTQUESPC/**/, ROLLOVER_DIRECT_ON/**/, ROLLOVER_NO_FLAG, ROLLOVER_HORIZONTAL/**/, ROLLOVER_VERTICAL/**/, ROLLOVER_HORIZONTAL/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG,
-+ /*7*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG
-+};
-+#endif // end __TOSA_RAWMAP_ROLLOVER_H__
-diff -Nur linux_c860_org/drivers/char/tosa_ts.c linux/drivers/char/tosa_ts.c
---- linux_c860_org/drivers/char/tosa_ts.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/char/tosa_ts.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,807 @@
-+/*
-+ * drivers/char/tosa_ts.c
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * Based on:
-+ * cotulla_ts.c
-+ *
-+ */
-+
-+/***************************************************************************/
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/poll.h>
-+#include <linux/delay.h>
-+#include <linux/ioctl.h>
-+#include <linux/ac97_codec.h>
-+#include <linux/sched.h>
-+#include <linux/tqueue.h>
-+#include <linux/module.h>
-+#include <linux/proc_fs.h>
-+
-+#include <asm/segment.h>
-+#include <asm/uaccess.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/irqs.h>
-+#include <asm/arch/tosa_wm9712.h>
-+#include <asm/sharp_apm.h>
-+
-+#define TS_MAJOR 11
-+#define ADD_TS_TIMER (HZ / 120)
-+/* AC97 Touch Screen channel */
-+#define ADCH_TPX 0x01
-+#define ADCH_TPY 0x02
-+/* AC97 Touch Screen bits */
-+#define TSR1_POLL (1<<15)
-+#define TSR1_COO (1<<11)
-+#define TSR1_CTC (1<<10)
-+#define TSR1_SLEN (1<< 3)
-+#define TSR2_RPR (1<<13)
-+#define TSR2_45W (1<<12)
-+#define TSR2_PDEN (1<<11)
-+#define TSR2_WAIT (1<< 9)
-+#define TSR2_PIL (1<< 8)
-+#define CODEC_PENDOWN (1<< 3)
-+
-+#define TS_REG1_POLL 0x8000
-+#define TS_REG1_DEFVAL 0x0000
-+#define TS_REG2_DEFVAL 0xe030
-+
-+#define DBG_LEVEL 0
-+
-+#define DBG_L1 1
-+#define DBG_L2 2
-+#define DBG_L3 3
-+
-+#define DEBUG(level, x, args...) \
-+ if( level <= DBG_LEVEL ) printk("%s: " x, __FUNCTION__ , ## args)
-+
-+#define DEV_NAME "ts"
-+
-+int ts_type = 0;
-+
-+static DECLARE_WAIT_QUEUE_HEAD(ts_proc);
-+
-+static DECLARE_WAIT_QUEUE_HEAD(pd_mloop);
-+
-+static struct timer_list tp_main_timer;
-+static unsigned char tp_timer_on = 0;
-+static unsigned char ac97_on = 0;
-+static unsigned char penup_irq = 1;
-+
-+int ac97_ad_input(int, unsigned short *);
-+static void ts_interrupt(int, void*, struct pt_regs*);
-+
-+#define BUFSIZE 128
-+
-+typedef struct {
-+ unsigned short xd;
-+ unsigned short yd;
-+ unsigned char pressure;
-+} ts_pos_t;
-+
-+typedef struct {
-+ short pressure;
-+ short x;
-+ short y;
-+ short millisecs;
-+} TS_EVENT;
-+
-+static DECLARE_WAIT_QUEUE_HEAD(queue);
-+struct fasync_struct *fasync;
-+static TS_EVENT tbuf[BUFSIZE], tc;
-+static int raw_max_x, raw_max_y;
-+static int res_x, res_y;
-+static int raw_min_x, raw_min_y;
-+static int cal_ok, x_rev, y_rev, xyswap;
-+static int head = 0, tail = 0;
-+
-+#ifdef CONFIG_PM
-+static int tp_suspend = 0;
-+#endif /* CONFIG_PM */
-+
-+#define REMOVE_TP_NOISE_BY_SW
-+/* #define REMOVE_TP_NOISE_BY_HW */
-+
-+#if 1 // 2003/9/4 Noise reduction
-+#define TOUCH_PANEL_AVERAGE 5
-+#define DEFAULT_TP_WAIT_VGA 25
-+#define DEFAULT_TP_WAIT_QVGA 44
-+#define SIMPLE_AVERAGE
-+
-+#define CCNT(a) asm("mrc p14, 0, %0, C1, C0, 0" : "=r"(a))
-+#define CCNT_ON() {int pmnc = 1;asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(pmnc));}
-+#define CCNT_OFF() {int pmnc = 0;asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(pmnc));}
-+static unsigned long g_TpWaitVga = DEFAULT_TP_WAIT_VGA;
-+static unsigned long g_TpWaitQvga = DEFAULT_TP_WAIT_QVGA;
-+static unsigned short XBuf[TOUCH_PANEL_AVERAGE];
-+static unsigned short YBuf[TOUCH_PANEL_AVERAGE];
-+static int TpBufIdx = -1;
-+extern int tc6393fb_isblank; // no H-Sync while blanking
-+
-+#define PROC_DIRNAME "ts"
-+
-+struct proc_dir_entry *proc_ts = NULL;
-+typedef struct tosa_ts_entry {
-+ unsigned long* addr;
-+ unsigned long def_value;
-+ char* name;
-+ char* description;
-+ unsigned short low_ino;
-+} tosa_ts_entry_t;
-+static tosa_ts_entry_t tosa_ts_params[] = {
-+/* { addr, def_value, name, description }*/
-+ { &g_TpWaitVga, DEFAULT_TP_WAIT_VGA, "wait_vga","pen wait for VGA Screen" },
-+ { &g_TpWaitQvga, DEFAULT_TP_WAIT_QVGA, "wait_qvga","pen wait for QVGA Screen"}
-+};
-+#define NUM_OF_TOSA_TS_ENTRY (sizeof(tosa_ts_params)/sizeof(tosa_ts_entry_t))
-+
-+static ssize_t tosa_ts_read_params(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ int i_ino = (file->f_dentry->d_inode)->i_ino;
-+ char outputbuf[15];
-+ int count;
-+ int i;
-+ tosa_ts_entry_t *current_param = NULL;
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ for (i=0; i<NUM_OF_TOSA_TS_ENTRY; i++) {
-+ if (tosa_ts_params[i].low_ino==i_ino) {
-+ current_param = &tosa_ts_params[i];
-+ break;
-+ }
-+ }
-+ if (current_param==NULL) {
-+ return -EINVAL;
-+ }
-+ count = sprintf(outputbuf, "%d\n",
-+ *((volatile unsigned long *) current_param->addr));
-+ *ppos += count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t tosa_ts_write_params(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ int i_ino = (file->f_dentry->d_inode)->i_ino;
-+ tosa_ts_entry_t *current_param = NULL;
-+ int i;
-+ unsigned long param;
-+ char *endp;
-+
-+ for (i=0; i<NUM_OF_TOSA_TS_ENTRY; i++) {
-+ if(tosa_ts_params[i].low_ino==i_ino) {
-+ current_param = &tosa_ts_params[i];
-+ break;
-+ }
-+ }
-+ if (current_param==NULL) {
-+ return -EINVAL;
-+ }
-+
-+ param = simple_strtoul(buf,&endp,0);
-+ if (param == -1) {
-+ *current_param->addr = current_param->def_value;
-+ } else {
-+ *current_param->addr = param;
-+ }
-+ return nbytes+endp-buf;
-+}
-+
-+static struct file_operations proc_params_operations = {
-+ read: tosa_ts_read_params,
-+ write: tosa_ts_write_params,
-+};
-+
-+static int init_procinfo(void)
-+{
-+ int i;
-+ struct proc_dir_entry *entry;
-+
-+ proc_ts = proc_mkdir("driver/ts", NULL);
-+ if (proc_ts == NULL) {
-+ printk(KERN_ERR "ts: can't create /proc/driver/ts\n");
-+ return -ENOMEM;
-+ }
-+ for (i=0; i<NUM_OF_TOSA_TS_ENTRY; i++) {
-+ entry = create_proc_entry(tosa_ts_params[i].name,
-+ S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH,
-+ proc_ts);
-+ if (entry) {
-+ tosa_ts_params[i].low_ino = entry->low_ino;
-+ entry->proc_fops = &proc_params_operations;
-+ } else {
-+ int j;
-+ for (j=0; j<i; j++) {
-+ remove_proc_entry(tosa_ts_params[i].name,
-+ proc_ts);
-+ }
-+ remove_proc_entry("driver/ts", &proc_root);
-+ proc_ts = 0;
-+ return -ENOMEM;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static void cleanup_procinfo(void)
-+{
-+ int i;
-+ for (i=0; i<NUM_OF_TOSA_TS_ENTRY; i++) {
-+ remove_proc_entry(tosa_ts_params[i].name, proc_ts);
-+ }
-+ remove_proc_entry("driver/ts", NULL);
-+ proc_ts = 0;
-+}
-+#endif
-+
-+static int read_xydata(ts_pos_t *tp)
-+{
-+#if defined(REMOVE_TP_NOISE_BY_SW) || defined(REMOVE_TP_NOISE_BY_HW)
-+ unsigned short dx, dy;
-+ unsigned long tx, ty;
-+ int i, ret = 0, penstate = 0;
-+
-+ if (TpBufIdx<0) {
-+ for (i=0; i<TOUCH_PANEL_AVERAGE; i++) {
-+ if( (ret = ac97_ad_input(ADCH_TPX, &dx)) < 0 ) return ret;
-+ XBuf[i] = dx & 0x0fff;
-+ if( (ret = ac97_ad_input(ADCH_TPY, &dy)) < 0 ) return ret;
-+ YBuf[i] = dy & 0x0fff;
-+ }
-+ TpBufIdx = 0;
-+ } else {
-+ if( (ret = ac97_ad_input(ADCH_TPX, &dx)) < 0 ) return ret;
-+ XBuf[TpBufIdx] = dx & 0x0fff;
-+ if( (ret = ac97_ad_input(ADCH_TPY, &dy)) < 0 ) return ret;
-+ YBuf[TpBufIdx] = dy & 0x0fff;
-+ if (++TpBufIdx>=TOUCH_PANEL_AVERAGE) TpBufIdx = 0;
-+ }
-+
-+ /* If pen Up or Down */
-+ penstate = (dy & 0x8000)?1:0;
-+
-+#if TOUCH_PANEL_AVERAGE<3
-+#define SIMPLE_AVERAGE
-+#endif
-+ {
-+#ifndef SIMPLE_AVERAGE
-+ unsigned short max_dx=0,max_dy=0;
-+ unsigned short min_dx=0x0fff,min_dy=0x0fff;
-+#endif
-+
-+ for(i = 0, ty = 0, tx = 0; i < (TOUCH_PANEL_AVERAGE); i++) {
-+ dx = XBuf[i];
-+ dy = YBuf[i];
-+#ifndef SIMPLE_AVERAGE
-+ if(dx > max_dx) max_dx = dx;
-+ if(dx < min_dx) min_dx = dx;
-+ if(dy > max_dy) max_dy = dy;
-+ if(dy < min_dy) min_dy = dy;
-+#endif
-+ tx += dx;
-+ ty += dy;
-+ }
-+#ifndef SIMPLE_AVERAGE
-+ tp->xd = (tx - max_dx - min_dx)/ (TOUCH_PANEL_AVERAGE-2);
-+ tp->yd = (ty - max_dy - min_dy)/ (TOUCH_PANEL_AVERAGE-2);
-+#else
-+ tp->xd = tx/ TOUCH_PANEL_AVERAGE;
-+ tp->yd = ty/ TOUCH_PANEL_AVERAGE;
-+#endif
-+ }
-+#else
-+ unsigned short dx, dy, tx, ty;
-+ int i, ret = 0;
-+
-+ for(i = 0, ty = 0, tx = 0; i < TOUCH_PANEL_AVERAGE; i++) {
-+ /* X */
-+ if( (ret = ac97_ad_input(ADCH_TPX, &dx)) < 0 ) return ret;
-+ /* Y */
-+ if( (ret = ac97_ad_input(ADCH_TPY, &dy)) < 0 ) return ret;
-+
-+ tx += (dx & 0x0fff);
-+ ty += (dy & 0x0fff);
-+ }
-+
-+ /* If pen Up or Down */
-+ penstate = (dy & 0x8000)?1:0;
-+
-+ tp->xd = tx / TOUCH_PANEL_AVERAGE;
-+ tp->yd = ty / TOUCH_PANEL_AVERAGE;
-+#endif
-+ return penstate;
-+}
-+
-+static void print_par(void)
-+{
-+ printk(" Kernel ==> cal_ok = %d\n",cal_ok);
-+ printk(" Kernel ==> raw_max_x = %d\n",raw_max_x);
-+ printk(" Kernel ==> raw_max_y = %d\n",raw_max_y);
-+ printk(" Kernel ==> res_x = %d\n",res_x);
-+ printk(" Kernel ==> res_y = %d\n",res_y);
-+ printk(" Kernel ==> raw_min_x = %d\n",raw_min_x);
-+ printk(" Kernel ==> raw_min_y = %d\n",raw_min_y);
-+ printk(" Kernel ==> xyswap = %d\n",xyswap);
-+ printk(" Kernel ==> x_rev = %d\n",x_rev);
-+ printk(" Kernel ==> y_rev = %d\n",y_rev);
-+}
-+
-+void ts_clear(void)
-+{
-+ int i;
-+
-+ for (i = 0; i < BUFSIZE; i++) {
-+ tbuf[i].pressure = 0;
-+ tbuf[i].x = 0;
-+ tbuf[i].y = 0;
-+ tbuf[i].millisecs = 0;
-+ }
-+ head = tail = 0;
-+}
-+
-+static TS_EVENT get_data(void)
-+{
-+ int last = tail;
-+ if (++tail == BUFSIZE) { tail = 0; }
-+ return tbuf[last];
-+}
-+
-+static void new_data(void)
-+{
-+ tc.millisecs = jiffies;
-+ tbuf[head++] = tc;
-+ if( head >= BUFSIZE )
-+ head = 0;
-+ if( head == tail && ++tail >= BUFSIZE )
-+ tail = 0;
-+ if( fasync )
-+ kill_fasync(&fasync, SIGIO, POLL_IN);
-+ wake_up_interruptible(&queue);
-+}
-+
-+static void ts_timer(unsigned long irq);
-+
-+static void ts_timer_clear(void)
-+{
-+ if ( tp_timer_on )
-+ del_timer(&tp_main_timer);
-+ tp_timer_on = 0;
-+}
-+
-+static void ts_timer_set(void)
-+{
-+ ts_timer_clear();
-+ init_timer(&tp_main_timer);
-+ tp_main_timer.data = IRQ_GPIO_TP_INT;
-+ tp_main_timer.function = ts_timer;
-+ tp_main_timer.expires = jiffies + ADD_TS_TIMER;
-+ add_timer(&tp_main_timer);
-+ tp_timer_on = 1;
-+}
-+
-+static void ts_timer(unsigned long irq)
-+{
-+ wake_up(&ts_proc);
-+}
-+
-+static int ts_pendown(void *unuse)
-+{
-+ int penstate;
-+ ts_pos_t pos_dt;
-+
-+ while ( 1 ) {
-+ interruptible_sleep_on(&pd_mloop);
-+
-+#ifdef CONFIG_PM
-+ lock_FCS(POWER_MODE_TOUCH, 1); // not enter FCS mode.
-+#endif /* CONFIG_PM */
-+ wm9712_power_mode_ts(WM9712_PWR_TP_CONV);
-+ while ( 1 ) {
-+#ifdef CONFIG_PM
-+ if ( !tp_suspend )
-+#endif /* CONFIG_PM */
-+ {
-+ if ( (penstate = read_xydata(&pos_dt)) >= 0 ) {
-+ if ( !penstate ) //penup
-+ penup_irq = 1;
-+ tc.x = pos_dt.xd;
-+ tc.y = pos_dt.yd;
-+ tc.pressure = 1;
-+ new_data();
-+ DEBUG(DBG_L3, "pen position (%d,%d,%d)\n",
-+ (int)tc.y, (int)tc.x, tc.pressure);
-+ }
-+ /* wait */
-+ if ( !penup_irq ) {
-+ ts_timer_set();
-+ interruptible_sleep_on(&ts_proc);
-+ }
-+ if ( penup_irq ){
-+ ts_timer_clear();
-+ /* setting interrupt edge */
-+ set_GPIO_IRQ_edge(GPIO_TP_INT, GPIO_RISING_EDGE);
-+ GEDR(GPIO_TP_INT) = GPIO_bit(GPIO_TP_INT); //Clear detect
-+#ifdef CONFIG_PM
-+ lock_FCS(POWER_MODE_TOUCH, 0); // not enter FCS mode.
-+#endif /* CONFIG_PM */
-+ wm9712_power_mode_ts(WM9712_PWR_TP_WAIT);
-+ TpBufIdx = -1;
-+ if ( tc.pressure ){
-+ tc.pressure = 0;
-+ new_data();
-+ }
-+ break;
-+ }
-+ }
-+#ifdef CONFIG_PM
-+ else {
-+ DEBUG(DBG_L1, "suspend...\n");
-+#ifdef CONFIG_PM
-+ lock_FCS(POWER_MODE_TOUCH, 0); // enter FCS mode.
-+#endif /* CONFIG_PM */
-+ break;
-+ }
-+#endif
-+ }
-+ }
-+
-+}
-+
-+static void ts_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ if( (GPLR(GPIO_TP_INT) & GPIO_bit(GPIO_TP_INT)) == GPIO_bit(GPIO_TP_INT) ) {
-+ /* pen down irq */
-+ penup_irq = 0;
-+
-+ /* setting interrupt edge */
-+ set_GPIO_IRQ_edge(GPIO_TP_INT, GPIO_FALLING_EDGE);
-+ GEDR(GPIO_TP_INT) = GPIO_bit(GPIO_TP_INT); //Clear detect
-+ wake_up(&pd_mloop);
-+ } else {
-+ /* setting interrupt edge */
-+ set_GPIO_IRQ_edge(GPIO_TP_INT, GPIO_RISING_EDGE);
-+ GEDR(GPIO_TP_INT) = GPIO_bit(GPIO_TP_INT); //Clear detect
-+ /* pen up irq */
-+ penup_irq = 1;
-+ wake_up(&ts_proc);
-+ }
-+ return;
-+}
-+
-+static int ts_open(struct inode *, struct file *);
-+static int ts_release(struct inode *, struct file *);
-+static int ts_fasync(int fd, struct file *filp, int on);
-+static ssize_t ts_read(struct file *, char *, size_t, loff_t *);
-+static unsigned int ts_poll(struct file *, poll_table *);
-+static int ts_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
-+struct file_operations ts_fops = {
-+ open: ts_open,
-+ release: ts_release,
-+ fasync: ts_fasync,
-+ read: ts_read,
-+ poll: ts_poll,
-+ ioctl: ts_ioctl,
-+};
-+
-+static void ts_exit(void)
-+{
-+ ts_timer_clear();
-+ ts_clear();
-+ free_irq(IRQ_GPIO_TP_INT, NULL);
-+ wm9712_power_mode_ts(WM9712_PWR_OFF);
-+
-+ pxa_ac97_put(&ac97_on);
-+}
-+
-+#ifdef MODULE
-+static void __exit ac97_ts_cleanup(void)
-+{
-+ ts_exit();
-+ unregister_chrdev(TS_MAJOR, "ts");
-+}
-+module_exit(ac97_ts_cleanup);
-+#endif /* MODULE */
-+
-+extern int tc6393fb_lcdMode;
-+
-+int ac97_ad_input(int ch, unsigned short *dat)
-+{
-+ unsigned short val = 0;
-+ unsigned short adsel = (ch << 12) & 0x7000;
-+ unsigned long timeo;
-+ volatile unsigned long t1=0,t2=0;
-+ volatile int isVga=(tc6393fb_lcdMode==1)?1:0;
-+ volatile unsigned long tpwait=200;
-+
-+
-+ if (ch >= 4){
-+ /* Conversion start */
-+ ac97_write(AC97_TS_REG1, (adsel | TS_REG1_DEFVAL|TS_REG1_POLL));
-+
-+ for(timeo = 0x10000; timeo > 0; timeo--) {
-+ val = ac97_read(AC97_TS_REG1);
-+ //udelay(100);
-+ if( val & TS_REG1_POLL ) continue;
-+ val = ac97_read(AC97_TS_READBACK);
-+ if( (val & 0x7000) == adsel ) break;
-+ }
-+ if( !timeo ) return -EBUSY;
-+
-+ // *dat = val & 0xfff;
-+ *dat = val;
-+ return 0;
-+ }
-+
-+
-+#if defined(REMOVE_TP_NOISE_BY_SW) || defined(REMOVE_TP_NOISE_BY_HW)
-+
-+#ifndef REMOVE_TP_NOISE_BY_HW
-+ tpwait *= (isVga)?g_TpWaitVga:g_TpWaitQvga;
-+ CCNT_ON();
-+ if (!tc6393fb_isblank) {
-+ /* Sync */
-+ while((GPLR(GPIO_VGA_LINE) & GPIO_bit(GPIO_VGA_LINE)) == 0)
-+ ;
-+ while((GPLR(GPIO_VGA_LINE) & GPIO_bit(GPIO_VGA_LINE)) != 0)
-+ ;
-+ }
-+ if (tpwait>0) {
-+ CCNT(t1);
-+ CCNT(t2);
-+ while((t2-t1)<tpwait) {
-+ CCNT(t2);
-+ }
-+ }
-+#endif
-+
-+ /* Conversion start */
-+ ac97_write(AC97_TS_REG1, (adsel | TS_REG1_DEFVAL|TS_REG1_POLL));
-+
-+#ifndef REMOVE_TP_NOISE_BY_HW
-+ CCNT_OFF();
-+#endif
-+
-+ /* Busy wait */
-+ for(timeo = 0x10000; timeo > 0; timeo--) {
-+ val = ac97_read(AC97_TS_REG1);
-+ if((val & TS_REG1_POLL) == 0) break;
-+ }
-+ if( !timeo ) return -EBUSY;
-+
-+ /* Read AD */
-+ val = ac97_read(AC97_TS_READBACK);
-+
-+ if( (val & 0x8000) == 0) return -EBUSY;
-+
-+ if( (val & 0x7000) == adsel ) {
-+ *dat = val;
-+ return 0;
-+ }
-+ return -EBUSY;
-+#else
-+ /* Conversion start */
-+ ac97_write(AC97_TS_REG1, (adsel | TS_REG1_DEFVAL|TS_REG1_POLL));
-+
-+ for(timeo = 0x10000; timeo > 0; timeo--) {
-+ val = ac97_read(AC97_TS_REG1);
-+ //udelay(100);
-+ if( val & TS_REG1_POLL ) continue;
-+ val = ac97_read(AC97_TS_READBACK);
-+ if( (val & 0x7000) == adsel ) break;
-+ }
-+ if( !timeo ) return -EBUSY;
-+
-+ *dat = val;
-+ return 0;
-+#endif
-+}
-+
-+static int ts_init(void)
-+{
-+ pxa_ac97_get(&codec, &ac97_on);
-+
-+ wm9712_power_mode_ts(WM9712_PWR_TP_WAIT);
-+ /* Touch Screen Initialize */
-+#ifdef REMOVE_TP_NOISE_BY_HW
-+ ac97_write(AC97_TS_REG2, 0xe0f0);
-+#else
-+ ac97_write(AC97_TS_REG2, TS_REG2_DEFVAL);
-+#endif
-+ ac97_write(AC97_TS_REG1, TS_REG1_DEFVAL);
-+ ac97_bit_set(AC97_ADITFUNC1, (1<<1));
-+
-+ /* GPIO3/PENDOWN wakeup */
-+ ac97_bit_set(AC97_GPIO_WAKE_UP, CODEC_PENDOWN);
-+
-+ ts_clear();
-+
-+ /* Init queue */
-+ //X kernel_thread(ts_pendown, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+
-+ /* Interrupt setting */
-+ set_GPIO_mode(GPIO32_SDATA_IN1_AC97_MD);
-+ set_GPIO_IRQ_edge(GPIO_TP_INT, GPIO_RISING_EDGE);
-+ GEDR(GPIO_TP_INT) = GPIO_bit(GPIO_TP_INT);
-+ if( request_irq(IRQ_GPIO_TP_INT, ts_interrupt, SA_INTERRUPT, "ts", NULL) ) {
-+ DEBUG(DBG_L1, "IRQ error %d\n", IRQ_GPIO_TP_INT);
-+ return -EBUSY;
-+ }
-+
-+ // printk(KERN_INFO "Tosa Touch Screen driver initialized\n");
-+
-+ return 0;
-+}
-+
-+static int __init ac97_ts_init(void)
-+{
-+ ac97_on = 0;
-+
-+ raw_max_x = 1024;
-+ raw_max_y = 1024;
-+ raw_min_x = 0;
-+ raw_min_y = 0;
-+ res_x = 480;
-+ res_y = 640;
-+ cal_ok = 0;
-+ x_rev = 0;
-+ y_rev = 0;
-+ xyswap = 0;
-+
-+ ts_clear();
-+
-+ if( register_chrdev(TS_MAJOR,DEV_NAME, &ts_fops) ) {
-+ printk("unable to get major %d for touch screen\n", TS_MAJOR);
-+ ts_exit();
-+ }
-+
-+ init_procinfo();
-+
-+ kernel_thread(ts_pendown, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+
-+ return 0;
-+}
-+
-+module_init(ac97_ts_init);
-+
-+/*
-+ * Driver functions
-+ */
-+static int ts_open(struct inode *inode, struct file *file)
-+{
-+ if( ts_init() < 0 ) {
-+ ts_exit();
-+ return -EINVAL;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+ return 0;
-+}
-+
-+
-+static int ts_release(struct inode *inode, struct file *file)
-+{
-+ ts_exit();
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int ts_fasync(int fd, struct file *filp, int on)
-+{
-+ int retval;
-+
-+ retval = fasync_helper(fd, filp, on, &fasync);
-+ if( retval < 0 ) return retval;
-+ return 0;
-+}
-+
-+static ssize_t ts_read(struct file *file, char *buffer,
-+ size_t count, loff_t *ppos)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ TS_EVENT t, r;
-+ int i;
-+
-+ if( head == tail ) {
-+ if( file->f_flags & O_NONBLOCK )
-+ return -EAGAIN;
-+ add_wait_queue(&queue, &wait);
-+ current->state = TASK_INTERRUPTIBLE;
-+ while( (head == tail)&& !signal_pending(current) ) {
-+ schedule();
-+ current->state = TASK_INTERRUPTIBLE;
-+ }
-+ current->state = TASK_RUNNING;
-+ remove_wait_queue(&queue, &wait);
-+ }
-+
-+ for(i = count ; i >= sizeof(TS_EVENT);
-+ i -= sizeof(TS_EVENT), buffer += sizeof(TS_EVENT)) {
-+ if( head == tail ) break;
-+ t = get_data();
-+ if( xyswap ) {
-+ short tmp = t.x;
-+ t.x = t.y;
-+ t.y = tmp;
-+ }
-+ if( cal_ok ) {
-+ r.x = (x_rev) ?
-+ ((raw_max_x - t.x) * res_x) / (raw_max_x - raw_min_x) :
-+ ((t.x - raw_min_x) * res_x) / (raw_max_x - raw_min_x);
-+ r.y = (y_rev) ?
-+ ((raw_max_y - t.y) * res_y) / (raw_max_y - raw_min_y) :
-+ ((t.y - raw_min_y) * res_y) / (raw_max_y - raw_min_y);
-+ } else {
-+ r.x = t.x;
-+ r.y = t.y;
-+ }
-+
-+ r.pressure = t.pressure;
-+ r.millisecs = t.millisecs;
-+ DEBUG(DBG_L2, "ts_read(x, y, p) = (%d, %d, %d)\n",
-+ (unsigned int)r.x, (unsigned int)r.y, (unsigned int)r.pressure);
-+
-+ copy_to_user(buffer,&r,sizeof(TS_EVENT));
-+ }
-+ return count - i;
-+}
-+
-+static unsigned int ts_poll(struct file *filp, poll_table *wait)
-+{
-+ poll_wait(filp, &queue, wait);
-+ if( head != tail )
-+ return POLLIN | POLLRDNORM;
-+ return 0;
-+}
-+
-+static int ts_ioctl(struct inode *inode, struct file *file,
-+ unsigned int cmd, unsigned long arg)
-+{
-+ switch(cmd) {
-+ case 3: raw_max_x = arg; break;
-+ case 4: raw_max_y = arg; break;
-+ case 5: res_x = arg; break;
-+ case 6: res_y = arg; break;
-+ case 10: raw_min_x = arg; break;
-+ case 11: raw_min_y = arg; break;
-+ case 12: xyswap = arg; //New attribute for portrait modes
-+ case 13: cal_ok = arg; //0 = Enable calibration ; 1 = Calibration OK
-+ case 14: ts_clear(); break; //Clear all buffer data
-+ case 15: x_rev = arg; break; //X axis reversed setting
-+ case 16: y_rev = arg; break; //Y axis reversed setting
-+ case 17: print_par(); break;
-+ default: return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+void tosa_ts_suspend(void)
-+{
-+ DEBUG(DBG_L1, "in\n");
-+ tp_suspend = 1;
-+ ts_exit();
-+ DEBUG(DBG_L1, "out\n");
-+}
-+
-+void tosa_ts_resume(void)
-+{
-+ DEBUG(DBG_L1, "in\n");
-+ tp_suspend = 0;
-+ ts_init();
-+ DEBUG(DBG_L1, "out\n");
-+}
-+#endif /* CONFIG_PM */
-diff -Nur linux_c860_org/drivers/char/tty_io.c linux/drivers/char/tty_io.c
---- linux_c860_org/drivers/char/tty_io.c 2002-08-29 12:25:52.000000000 +0900
-+++ linux/drivers/char/tty_io.c 2004-06-10 21:09:10.000000000 +0900
-@@ -730,6 +730,7 @@
- ret = -ERESTARTSYS;
- if (signal_pending(current))
- break;
-+ debug_lock_break(551);
- if (current->need_resched)
- schedule();
- }
-diff -Nur linux_c860_org/drivers/ide/ide-cs.c linux/drivers/ide/ide-cs.c
---- linux_c860_org/drivers/ide/ide-cs.c 2002-08-29 12:26:32.000000000 +0900
-+++ linux/drivers/ide/ide-cs.c 2004-06-10 21:09:10.000000000 +0900
-@@ -32,6 +32,7 @@
- Change Log
- 12-Nov-2001 Lineo Japan, Inc.
- 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
-+ 26-Feb-2004 Lineo Solutions, Inc. 2 slot support
-
- ======================================================================*/
-
-@@ -72,7 +73,7 @@
- #endif
-
- #ifdef CONFIG_ARCH_SHARP_SL
--extern int ide_resume_handling;
-+extern int ide_resume_handling[];
- #endif
-
- /*====================================================================*/
-@@ -468,11 +469,11 @@
- mod_timer(&link->release, jiffies + HZ/20);
- break;
- case CS_EVENT_CARD_INSERTION:
--#ifdef CONFIG_ARCH_SHARP_SL
-- ide_resume_handling = 0;
--#endif
- link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
- ide_config(link);
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ ide_resume_handling[sharpsl_pcmcia_irq_to_sock(link->irq.AssignedIRQ)] = 0;
-+#endif
- break;
- case CS_EVENT_PM_SUSPEND:
- link->state |= DEV_SUSPEND;
-diff -Nur linux_c860_org/drivers/ide/ide-disk.c linux/drivers/ide/ide-disk.c
---- linux_c860_org/drivers/ide/ide-disk.c 2002-08-29 12:26:32.000000000 +0900
-+++ linux/drivers/ide/ide-disk.c 2004-06-10 21:09:10.000000000 +0900
-@@ -31,6 +31,7 @@
- * Change Log
- * 12-Nov-2001 Lineo Japan, Inc.
- * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
-+ * 26-Feb-2004 Lineo Solutions, Inc. 2 slot support
- */
-
- #define IDEDISK_VERSION "1.10"
-@@ -372,7 +373,8 @@
- static ide_startstop_t do_rw_disk (ide_drive_t *drive, struct request *rq, unsigned long block)
- {
- #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA)
-- if (!is_pcmcia_card_present(0)) {
-+ ide_hwif_t *hwif = HWIF(drive);
-+ if (!is_pcmcia_card_present(hwif->irq)) {
- ide_end_request(0, HWGROUP(drive));
- return ide_stopped;
- }
-diff -Nur linux_c860_org/drivers/ide/ide-proc.c linux/drivers/ide/ide-proc.c
---- linux_c860_org/drivers/ide/ide-proc.c 2002-08-29 12:26:32.000000000 +0900
-+++ linux/drivers/ide/ide-proc.c 2004-06-10 21:09:10.000000000 +0900
-@@ -57,6 +57,7 @@
- * Change Log
- * 12-Nov-2001 Lineo Japan, Inc.
- * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
-+ * 26-Feb-2004 Lineo Solutions, Inc. 2 slot support
- *
- */
-
-@@ -456,8 +457,8 @@
- }
-
- #ifdef CONFIG_ARCH_SHARP_SL
--static ide_drive_t *drive_save = NULL;
--static u8 ide_info_buf[SECTOR_WORDS * 4 + 4];
-+static ide_drive_t *drive_save[2] = { NULL, NULL };
-+static u8 ide_info_buf[2][SECTOR_WORDS * 4 + 4];
- #endif
-
- static int proc_ide_read_identify
-@@ -470,8 +471,8 @@
- unsigned short *val = ((unsigned short *)page) + 2;
- char *out = ((char *)val) + (SECTOR_WORDS * 4);
- #ifdef CONFIG_ARCH_SHARP_SL
-- drive_save = drive;
-- memcpy(ide_info_buf, page, SECTOR_WORDS * 4);
-+ drive_save[sharpsl_pcmcia_irq_to_sock(HWIF(drive)->irq)] = drive;
-+ memcpy(ide_info_buf[sharpsl_pcmcia_irq_to_sock(HWIF(drive)->irq)], page, SECTOR_WORDS * 4);
- #endif
- page = out;
- do {
-@@ -487,13 +488,15 @@
-
- #ifdef CONFIG_ARCH_SHARP_SL
-
--int proc_ide_verify_identify()
-+int proc_ide_verify_identify(int sock)
- {
- u8 buf[SECTOR_WORDS * 4 + 4];
-+ int ret;
-
-- if (drive_save == NULL || proc_ide_get_identify(drive_save, buf))
-+ if (drive_save[sock] == NULL || proc_ide_get_identify(drive_save[sock], buf))
- return 0;
-- return memcmp(ide_info_buf, buf, SECTOR_WORDS * 4);
-+ ret = memcmp(ide_info_buf[sock], buf, SECTOR_WORDS * 4);
-+ return ret;
- }
-
- #endif
-@@ -777,7 +780,8 @@
- drive->proc = NULL;
- }
- #ifdef CONFIG_ARCH_SHARP_SL
-- drive_save = NULL;
-+ for (d = 0; d < 2; d++)
-+ drive_save[d] = NULL;
- #endif
- }
-
-diff -Nur linux_c860_org/drivers/ide/ide.c linux/drivers/ide/ide.c
---- linux_c860_org/drivers/ide/ide.c 2002-08-29 12:26:33.000000000 +0900
-+++ linux/drivers/ide/ide.c 2004-06-10 21:09:10.000000000 +0900
-@@ -122,6 +122,7 @@
- * Change Log
- * 12-Nov-2001 Lineo Japan, Inc.
- * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
-+ * 26-Feb-2004 Lineo Solutions, Inc. 2 slot support
- *
- */
-
-@@ -201,7 +202,7 @@
- ide_hwif_t ide_hwifs[MAX_HWIFS]; /* master data repository */
-
- #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA)
--extern int ide_resume_handling;
-+extern int ide_resume_handling[];
- #endif
-
- #if (DISK_RECOVERY_TIME > 0)
-@@ -548,7 +549,7 @@
- {
- byte stat = 0;
- #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA)
-- if (ide_resume_handling == 2)
-+ if (ide_resume_handling[sharpsl_pcmcia_irq_to_sock(HWIF(drive)->irq)] == 2)
- return 0;
- #endif
- if (drive->waiting_for_dma)
-@@ -712,11 +713,11 @@
- byte tmp;
-
- #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA)
-- if (!is_pcmcia_card_present(0)) {
-+ if (!is_pcmcia_card_present(hwif->irq)) {
- hwgroup->poll_timeout = 0; /* done polling */
- return ide_stopped;
- }
-- if (ide_resume_handling == 2) {
-+ if (ide_resume_handling[sharpsl_pcmcia_irq_to_sock(hwif->irq)] == 2) {
- hwgroup->poll_timeout = 0; /* done polling */
- return ide_stopped;
- }
-@@ -1244,9 +1245,9 @@
- ide_hwif_t *hwif = HWIF(drive);
-
- #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA)
-- if (!is_pcmcia_card_present(0))
-+ if (!is_pcmcia_card_present(hwif->irq))
- goto kill_rq;
-- if (ide_resume_handling == 2)
-+ if (ide_resume_handling[sharpsl_pcmcia_irq_to_sock(hwif->irq)] == 2)
- goto kill_rq;
- #endif
-
-@@ -1625,7 +1626,7 @@
- if (hwgroup->poll_timeout != 0) {
- startstop = handler(drive);
- #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA)
-- } else if (!ide_resume_handling &&
-+ } else if (!ide_resume_handling[sharpsl_pcmcia_irq_to_sock(hwif->irq)] &&
- drive_is_ready(drive)) {
- #else
- } else if (drive_is_ready(drive)) {
-diff -Nur linux_c860_org/drivers/ieee1394/csr.c linux/drivers/ieee1394/csr.c
---- linux_c860_org/drivers/ieee1394/csr.c 2002-08-26 14:39:22.000000000 +0900
-+++ linux/drivers/ieee1394/csr.c 2004-06-10 21:09:10.000000000 +0900
-@@ -10,6 +10,7 @@
- */
-
- #include <linux/string.h>
-+#include <linux/sched.h>
-
- #include "ieee1394_types.h"
- #include "hosts.h"
-diff -Nur linux_c860_org/drivers/input/keybdev.c linux/drivers/input/keybdev.c
---- linux_c860_org/drivers/input/keybdev.c 2002-08-26 14:39:30.000000000 +0900
-+++ linux/drivers/input/keybdev.c 2004-06-10 21:09:10.000000000 +0900
-@@ -26,6 +26,9 @@
- * Should you need to contact me, the author, you can do so either by
- * e-mail - mail your message to <vojtech@suse.cz>, or by paper mail:
- * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic
-+ *
-+ * ChangeLog:
-+ * 29-Aug-2003 SHARP Supported USB keybord for Tosa
- */
-
- #include <linux/config.h>
-@@ -107,6 +110,15 @@
- }
- #endif /* CONFIG_MAC_ADBKEYCODES || CONFIG_ADB_KEYBOARD */
-
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ if (keycode > 255 || !keycode)
-+ return -1;
-+
-+ handle_scancode(keycode & 0x7f, down);
-+
-+ return 0;
-+#endif // end CONFIG_ARCH_SHARP_SL
-+
- if (keycode > 255 || !x86_keycodes[keycode])
- return -1;
-
-diff -Nur linux_c860_org/drivers/macintosh/rtc.c linux/drivers/macintosh/rtc.c
---- linux_c860_org/drivers/macintosh/rtc.c 2002-08-26 14:39:13.000000000 +0900
-+++ linux/drivers/macintosh/rtc.c 2004-06-10 21:09:10.000000000 +0900
-@@ -64,6 +64,7 @@
- case RTC_RD_TIME:
- if (ppc_md.get_rtc_time)
- {
-+ memset(&rtc_tm, 0, sizeof(struct rtc_time));
- get_rtc_time(&rtc_tm);
-
- if (copy_to_user((struct rtc_time*)arg, &rtc_tm, sizeof(struct rtc_time)))
-diff -Nur linux_c860_org/drivers/mtd/maps/sharpsl-flash.c linux/drivers/mtd/maps/sharpsl-flash.c
---- linux_c860_org/drivers/mtd/maps/sharpsl-flash.c 2002-08-26 15:19:16.000000000 +0900
-+++ linux/drivers/mtd/maps/sharpsl-flash.c 2004-06-10 21:09:10.000000000 +0900
-@@ -23,6 +23,7 @@
- * GNU General Public License for more details.
- *
- * ChangeLog:
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- *
- */
-
-@@ -34,7 +35,6 @@
- #include <linux/mtd/map.h>
- #include <linux/mtd/partitions.h>
-
--
- #define WINDOW_ADDR 0x00000000
- #define WINDOW_SIZE 0x01000000
- #define BUS_WIDTH 2
-@@ -122,6 +122,14 @@
- }
- };
-
-+static struct mtd_partition tosa_partitions[1] = {
-+ {
-+ name: "Filesystem",
-+ size: 0x006A0000,
-+ offset: 0x00160000
-+ }
-+};
-+
- #define NB_OF(x) (sizeof(x)/sizeof(x[0]))
-
-
-@@ -133,7 +141,6 @@
-
- printk(KERN_NOTICE "Sharp SL series flash device: %x at %x\n", WINDOW_SIZE, WINDOW_ADDR);
- sharpsl_map.map_priv_1 = (unsigned long)ioremap(WINDOW_ADDR, WINDOW_SIZE);
--
- if (!sharpsl_map.map_priv_1) {
- printk("Failed to ioremap\n");
- return -EIO;
-@@ -155,7 +162,10 @@
- #elif CONFIG_ARCH_PXA_CORGI
- parts = corgi_partitions;
- nb_parts = NB_OF(corgi_partitions);
--#endif
-+#elif CONFIG_ARCH_PXA_TOSA
-+ parts = tosa_partitions;
-+ nb_parts = NB_OF(tosa_partitions);
-+#endif /* CONFIG_ARCH_PXA_TOSA */
-
- printk(KERN_NOTICE "Using %s partision definition\n", part_type);
- add_mtd_partitions(mymtd, parts, nb_parts);
-diff -Nur linux_c860_org/drivers/mtd/nand/Config.in linux/drivers/mtd/nand/Config.in
---- linux_c860_org/drivers/mtd/nand/Config.in 2003-01-14 16:51:07.000000000 +0900
-+++ linux/drivers/mtd/nand/Config.in 2004-06-10 21:09:10.000000000 +0900
-@@ -29,10 +29,21 @@
- fi
-
- if [ "$CONFIG_ARCH_PXA_POODLE" = "y" ]; then
-- dep_tristate ' NAND Flash device on Sharp poodle' CONFIG_MTD_NAND_SHARP_SL $CONFIG_MTD_NAND
-+ dep_tristate ' NAND Flash device on Sharp poodle' CONFIG_MTD_NAND_SHARP_SL_POODLE $CONFIG_MTD_NAND
- fi
- if [ "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then
-- dep_tristate ' NAND Flash device on Sharp corgi' CONFIG_MTD_NAND_SHARP_SL $CONFIG_MTD_NAND
-+ dep_tristate ' NAND Flash device on Sharp corgi' CONFIG_MTD_NAND_SHARP_SL_CORGI $CONFIG_MTD_NAND
-+fi
-+
-+if [ "$CONFIG_MTD_NAND_SHARP_SL_POODLE" = "y" -o "$CONFIG_MTD_NAND_SHARP_SL_CORGI" = "y" ]; then
-+ define_tristate CONFIG_MTD_NAND_SHARP_SL y
-+else
-+ if [ "$CONFIG_MTD_NAND_SHARP_SL_POODLE" = "m" -o "$CONFIG_MTD_NAND_SHARP_SL_CORGI" = "m" ]; then
-+ define_tristate CONFIG_MTD_NAND_SHARP_SL m
-+ fi
-+fi
-+if [ "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then
-+ dep_tristate ' NAND Flash device on Sharp tosa' CONFIG_MTD_NAND_SHARP_SL_TC6393 $CONFIG_MTD_NAND
- fi
-
- endmenu
-diff -Nur linux_c860_org/drivers/mtd/nand/Makefile linux/drivers/mtd/nand/Makefile
---- linux_c860_org/drivers/mtd/nand/Makefile 2002-10-09 10:29:15.000000000 +0900
-+++ linux/drivers/mtd/nand/Makefile 2004-06-10 21:09:10.000000000 +0900
-@@ -17,6 +17,7 @@
- obj-$(CONFIG_MTD_NAND_AUTCPU12) += autcpu12.o
- obj-$(CONFIG_MTD_NAND_EDB7312) += edb7312.o
- obj-$(CONFIG_MTD_NAND_SHARP_SL) += sharp_sl.o
-+obj-$(CONFIG_MTD_NAND_SHARP_SL_TC6393) += sharp_sl_tc6393.o
- obj-$(CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS) += sharp_sl_logical.o
-
- include $(TOPDIR)/Rules.make
-diff -Nur linux_c860_org/drivers/mtd/nand/nand.c linux/drivers/mtd/nand/nand.c
---- linux_c860_org/drivers/mtd/nand/nand.c 2003-06-18 16:12:26.000000000 +0900
-+++ linux/drivers/mtd/nand/nand.c 2004-06-10 21:09:10.000000000 +0900
-@@ -102,7 +102,7 @@
- *
- * 09-04-2002 tglx: fixed write_verify (John Hall (john.hall@optionexist.co.uk))
- *
-- * $Id: nand.c,v 1.31 2002/09/04 11:19:33 gleixner Exp $
-+ * $Id: nand.c,v 1.1.1.1 2003/06/27 03:04:33 yasui Exp $
- *
- * 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
-@@ -121,7 +121,7 @@
- * add erase-by-force mode
- * 18-Sep-2002 Lineo Japan, Inc. add dev_ready() call after read
- * 17-Sep-2002 Lineo Japan, Inc. add code for post-badblock
-- * 14-Mar-2003 Sharp wait for ready in read_oob()
-+ * 09-Sep-2003 SHARP support TC6393XB controller for Tosa
- */
-
- #include <linux/delay.h>
-@@ -371,6 +371,10 @@
- int eccmode = oobsel ? this->eccmode : NAND_ECC_NONE;
- int *oob_config = oobconfigs[oobsel];
- int ecc_ret = 0;
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+ unsigned short data_w;
-+ u_char data_b;
-+#endif
-
- START_MEASUREMENT(nand_write_page);
- COUNTER_INC(nand_write_nr_pages);
-@@ -428,10 +432,17 @@
- /* No ecc and software ecc 3/256, write all */
- case NAND_ECC_NONE:
- case NAND_ECC_SOFT:
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+ for (i = 0; i < mtd->oobblock; i+=2) {
-+ writew ( (this->data_poi[i+1] << 8) | this->data_poi[i] , this->IO_ADDR_W);
-+ }
-+ break;
-+#else
- for (i = 0; i < mtd->oobblock; i++)
- writeb ( this->data_poi[i] , this->IO_ADDR_W);
- break;
--
-+#endif
-+
- /* Hardware ecc 3 byte / 256 data, write first half, get ecc, then second, if 512 byte pagesize */
- case NAND_ECC_HW3_256:
- this->enable_hwecc (NAND_ECC_WRITE); /* enable hardware ecc logic for write */
-@@ -465,8 +476,14 @@
- /* Hardware ecc 6 byte / 512 byte data, write full page */
- case NAND_ECC_HW6_512:
- this->enable_hwecc (NAND_ECC_WRITE); /* enable hardware ecc logic */
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+ for (i = 0; i < mtd->oobblock; i+=2) {
-+ writew ( (this->data_poi[i+1] << 8) | this->data_poi[i] , this->IO_ADDR_W);
-+ }
-+#else
- for (i = 0; i < mtd->oobblock; i++)
- writeb ( this->data_poi[i] , this->IO_ADDR_W);
-+#endif
- ecc_ret = this->calculate_ecc (NULL, &(ecc_code[0]));
- for (i = 0; i < 6; i++)
- oob_data[oob_config[i]] = ecc_code[i];
-@@ -484,8 +501,15 @@
- }
-
- /* Write out OOB data */
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+
-+ for (i = 0; i < mtd->oobsize; i+=2) {
-+ writew ( (oob_data[i+1] << 8) | oob_data[i] , this->IO_ADDR_W);
-+ }
-+#else
- for (i = 0; i < mtd->oobsize; i++)
- writeb ( oob_data[i] , this->IO_ADDR_W);
-+#endif
-
- /* Send command to actually program the data */
- this->cmdfunc (mtd, NAND_CMD_PAGEPROG, -1, -1);
-@@ -526,23 +550,55 @@
- }
- /* Loop through and verify the data */
- for (i = col; i < last; i++) {
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+ if((i-col) & 1){
-+ data_b = data_w >> 8;
-+ }else{
-+ data_w = readw (this->IO_ADDR_W);
-+ data_b = data_w & 0xff;
-+
-+ }
-+ if (this->data_poi[i] != data_b) {
-+ printk (KERN_WARNING "%s: Failed write verify, %d at page 0x%08x, col=%d last=%d\n", __func__, i, page, col, last);
-+ ACCUMULATE_ELAPSED_TIME(nand_write_verify);
-+ ACCUMULATE_ELAPSED_TIME(nand_write_page);
-+ return -EIO;
-+ }
-+#else
- if (this->data_poi[i] != readb (this->IO_ADDR_R)) {
- printk (KERN_WARNING "%s: Failed write verify, %d at page 0x%08x, col=%d last=%d\n", __func__, i, page, col, last);
- ACCUMULATE_ELAPSED_TIME(nand_write_verify);
- ACCUMULATE_ELAPSED_TIME(nand_write_page);
- return -EIO;
- }
-+#endif
- }
-
- /* check, if we have a fs-supplied oob-buffer */
- if (oob_buf) {
- for (i = 0; i < mtd->oobsize; i++) {
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+ if(i & 1){
-+ data_b = data_w >> 8;
-+ }else{
-+ data_w = readw (this->IO_ADDR_W);
-+ data_b = data_w & 0xff;
-+
-+ }
-+ if (oob_data[i] != data_b) {
-+ printk (KERN_WARNING "%s: Failed write verify, oob %d of page 0x%08x\n", __func__, i, page);
-+ ACCUMULATE_ELAPSED_TIME(nand_write_verify);
-+ ACCUMULATE_ELAPSED_TIME(nand_write_page);
-+ return -EIO;
-+ }
-+#else
- if (oob_data[i] != readb (this->IO_ADDR_R)) {
- printk (KERN_WARNING "%s: Failed write verify, oob %d of page 0x%08x\n", __func__, i, page);
- ACCUMULATE_ELAPSED_TIME(nand_write_verify);
- ACCUMULATE_ELAPSED_TIME(nand_write_page);
- return -EIO;
- }
-+#endif
- }
- } else {
- if (eccmode != NAND_ECC_NONE && !col && last == mtd->oobblock) {
-@@ -555,8 +611,19 @@
- case NAND_ECC_HW6_512: ecc_bytes = 6; break;
- }
-
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+ for (i = 0; i < mtd->oobsize; i++) {
-+ if(i & 1){
-+ oob_data[i] = data_w >> 8;
-+ }else{
-+ data_w = readw (this->IO_ADDR_R);
-+ oob_data[i] = data_w;
-+ }
-+ }
-+#else
- for (i = 0; i < mtd->oobsize; i++)
- oob_data[i] = readb (this->IO_ADDR_R);
-+#endif
-
- for (i = 0; i < ecc_bytes; i++) {
- if (oob_data[oob_config[i]] != ecc_code[i]) {
-@@ -826,7 +893,17 @@
- * oob data, let the device transfer the data !
- */
- for (i = 0; i < tmp_len; i++) {
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+ unsigned short data;
-+ if(i & 1){
-+ buf[i] = data >> 8;
-+ }else{
-+ data = readw (this->IO_ADDR_R);
-+ buf[i] = data;
-+ }
-+#else
- buf[i] = readb (this->IO_ADDR_R);
-+#endif
- if ((col++ & (mtd->oobsize - 1)) == (mtd->oobsize - 1))
- udelay (this->chip_delay);
- }
-@@ -972,6 +1049,10 @@
- {
- int i, column, page, status, ret = 0;
- struct nand_chip *this = mtd->priv;
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+ unsigned short tmp_buf[32]; // mtd->oobsize
-+ u_char *p_tmp_buf;
-+#endif
-
- DEBUG (MTD_DEBUG_LEVEL3, "nand_write_oob: to = 0x%08x, len = %i\n", (unsigned int) to, (int) len);
-
-@@ -1010,6 +1091,17 @@
-
- /* Write out desired data */
- this->cmdfunc (mtd, NAND_CMD_SEQIN, mtd->oobblock, page);
-+
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+ memset(tmp_buf,0xff,mtd->oobsize);
-+ p_tmp_buf = (u_char *)tmp_buf;
-+
-+ for (i = 0; i < len; i++)
-+ p_tmp_buf[i+column] = buf[i];
-+
-+ for (i = 0; i < mtd->oobsize; i++)
-+ writew (tmp_buf[i], this->IO_ADDR_W);
-+#else
- /* prepad 0xff for partial programming */
- for (i = 0; i < column; i++)
- writeb (0xff, this->IO_ADDR_W);
-@@ -1019,7 +1111,7 @@
- /* postpad 0xff for partial programming */
- for (i = len + column; i < mtd->oobsize; i++)
- writeb (0xff, this->IO_ADDR_W);
--
-+#endif
- /* Send command to program the OOB data */
- this->cmdfunc (mtd, NAND_CMD_PAGEPROG, -1, -1);
-
-@@ -1040,11 +1132,29 @@
-
- /* Loop through and verify the data */
- for (i = 0; i < len; i++) {
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+ unsigned short data;
-+ if(i & 1){
-+ if (buf[i] != (data >> 8)){
-+ DEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: " "Failed write verify, page 0x%08x\n", page);
-+ ret = -EIO;
-+ goto out;
-+ }
-+ }else{
-+ data = readw (this->IO_ADDR_R);
-+ if (buf[i] != (data & 0xff)){
-+ DEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: " "Failed write verify, page 0x%08x\n", page);
-+ ret = -EIO;
-+ goto out;
-+ }
-+ }
-+#else
- if (buf[i] != readb (this->IO_ADDR_R)) {
- DEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: " "Failed write verify, page 0x%08x\n", page);
- ret = -EIO;
- goto out;
- }
-+#endif
- }
- #endif
-
-@@ -1256,6 +1366,7 @@
- /* Check the WP bit */
- this->cmdfunc (mtd, NAND_CMD_STATUS, -1, -1);
- if (!(readb (this->IO_ADDR_R) & 0x80)) {
-+
- DEBUG (MTD_DEBUG_LEVEL0, "nand_erase: Device is write protected!!!\n");
- instr->state = MTD_ERASE_FAILED;
- goto erase_exit;
-@@ -1437,8 +1548,14 @@
- this->cmdfunc (mtd, NAND_CMD_READID, 0x00, -1);
-
- /* Read manufacturer and device IDs */
-+#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393
-+ nand_maf_id = readw (this->IO_ADDR_R);
-+ nand_dev_id = nand_maf_id >> 8;
-+ nand_maf_id = nand_maf_id & 0xff;
-+#else
- nand_maf_id = readb (this->IO_ADDR_R);
- nand_dev_id = readb (this->IO_ADDR_R);
-+#endif
-
- /* Print and store flash device information */
- for (i = 0; nand_flash_ids[i].name != NULL; i++) {
-@@ -1473,7 +1590,9 @@
- this->eccsize = 256; /* set default eccsize */
-
- switch (this->eccmode) {
--
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ case NAND_ECC_HW6_512:
-+#endif
- case NAND_ECC_HW3_512:
- if (mtd->oobblock == 256) {
- printk (KERN_WARNING "512 byte HW ECC not possible on 256 Byte pagesize, fallback to SW ECC \n");
-diff -Nur linux_c860_org/drivers/mtd/nand/sharp_sl_tc6393.c linux/drivers/mtd/nand/sharp_sl_tc6393.c
---- linux_c860_org/drivers/mtd/nand/sharp_sl_tc6393.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/mtd/nand/sharp_sl_tc6393.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,1236 @@
-+/*
-+ * drivers/mtd/nand/sharp_sl_tc6393.c
-+ *
-+ * Copyright (C) 2004 SHARP
-+ *
-+ * $Id: sharp_sl_tc6393.c,v 1.4 2004/03/04 06:34:39 yasui Exp $
-+ *
-+ * Based on:
-+ *
-+ * drivers/mtd/nand/sharp_sl.c
-+ *
-+ * Copyright (C) 2002 Lineo Japan, Inc.
-+ *
-+ * drivers/mtd/nand/spia.c
-+ *
-+ * Copyright (C) 2000 Steven J. Hill (sjhill@cotw.com)
-+ *
-+ *
-+ * 10-29-2001 TG change to support hardwarespecific access
-+ * to controllines (due to change in nand.c)
-+ * page_cache added
-+ *
-+ * 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.
-+ *
-+ * Overview:
-+ * This is a device driver for the NAND flash device found on the
-+ * SPIA board which utilizes the Toshiba TC58V64AFT part. This is
-+ * a 64Mibit (8MiB x 8 bits) NAND flash device.
-+ *
-+ * ChangLog:
-+ * 09-Sep-2003 SHARP support the Toshiba TC6393XB NAND flash controller.
-+ */
-+
-+#include <linux/slab.h>
-+#include <linux/module.h>
-+#include <linux/delay.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/nand.h>
-+#include <linux/mtd/nand_ecc.h>
-+#include <linux/mtd/partitions.h>
-+#include <asm/io.h>
-+#include <asm/hardware.h>
-+#ifdef CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS
-+#include <asm-arm/sharp_nand_logical.h>
-+#endif
-+
-+#undef DEBUG_PROC
-+#ifdef DEBUG_PROC
-+#include <linux/proc_fs.h>
-+#endif
-+#include "measure.h"
-+#include <asm/sharp_tc6393.h>
-+
-+#define MAX_ECC_RETRY 3
-+#define MAX_WRITE_RETRIES 32
-+#define MAX_COPIES 100
-+
-+#ifdef CONFIG_ARCH_SHARP_SL
-+#define FAILURECOUNTER_POS NAND_POSTBADBLOCK_POS
-+#else
-+#define FAILURECOUNTER_POS NAND_BADBLOCK_POS
-+#endif
-+
-+#define HWECC_MODE_DISABLE 0
-+#define HWECC_MODE_READ 1
-+#define HWECC_MODE_WRITE 2
-+static int hwecc_mode = HWECC_MODE_DISABLE;
-+
-+static TC6393XB_SysConfig *sysconfig = TC6393XB_SYSCONFIG_BASE;
-+static TC6393XB_NandConfig *nandconfig = TC6393XB_NANDCONFIG_BASE;
-+static TC6393XB_NandCtrl *nandctrl = TC6393XB_NANDCTRL_BASE;
-+
-+/*
-+ * NAND low-level MTD interface functions
-+ */
-+static int tc6393_nand_read (struct mtd_info *mtd, loff_t from, size_t len, size_t * retlen, u_char * buf);
-+static int tc6393_nand_read_ecc (struct mtd_info *mtd, loff_t from, size_t len,
-+ size_t * retlen, u_char * buf, u_char * eccbuf, int oobsel);
-+static int tc6393_nand_write (struct mtd_info *mtd, loff_t to, size_t len, size_t * retlen, const u_char * buf);
-+static int tc6393_nand_write_ecc (struct mtd_info *mtd, loff_t to, size_t len,
-+ size_t * retlen, const u_char * buf, u_char * eccbuf, int oobsel);
-+static int tc6393_nand_write_oob (struct mtd_info *mtd, loff_t to, size_t len, size_t * retlen, const u_char *buf);
-+static int tc6393_nand_writev (struct mtd_info *mtd, const struct iovec *vecs,
-+ unsigned long count, loff_t to, size_t * retlen);
-+static int tc6393_nand_writev_ecc (struct mtd_info *mtd, const struct iovec *vecs,
-+ unsigned long count, loff_t to, size_t * retlen, u_char *eccbuf, int oobsel);
-+/*
-+ * MTD structure for Poodle
-+ */
-+static struct mtd_info *sharp_sl_mtd = NULL;
-+
-+/*
-+ * original nand_* functions pointer
-+ */
-+static int (*orig_read_ecc)(struct mtd_info*, loff_t, size_t, size_t*, u_char*, u_char*, int);
-+static int (*orig_write_ecc)(struct mtd_info*, loff_t, size_t, size_t*, const u_char*, u_char*, int);
-+static int (*orig_writev_ecc)(struct mtd_info*, const struct iovec*, unsigned long, loff_t, size_t*, u_char*, int);
-+static int (*orig_write_oob)(struct mtd_info*, loff_t, size_t, size_t*, const u_char*);
-+
-+
-+/*
-+ * out of band configuration for different filesystems
-+ */
-+static int oobconfigs[][6] = {
-+ { 0,0,0,0,0,0},
-+
-+ { NAND_JFFS2_OOB_ECCPOS0, NAND_JFFS2_OOB_ECCPOS1, NAND_JFFS2_OOB_ECCPOS2,
-+ NAND_JFFS2_OOB_ECCPOS3, NAND_JFFS2_OOB_ECCPOS4, NAND_JFFS2_OOB_ECCPOS5 },
-+
-+ { NAND_YAFFS_OOB_ECCPOS0, NAND_YAFFS_OOB_ECCPOS1, NAND_YAFFS_OOB_ECCPOS2,
-+ NAND_YAFFS_OOB_ECCPOS3, NAND_YAFFS_OOB_ECCPOS4, NAND_YAFFS_OOB_ECCPOS5 }
-+};
-+
-+/*
-+ * Macros for low-level register control
-+ */
-+#define nand_select() this->hwcontrol(NAND_CTL_SETNCE);
-+
-+#define nand_deselect() this->hwcontrol(NAND_CTL_CLRNCE);
-+
-+
-+/*
-+ * Define partitions for flash device
-+ */
-+#define DEFAULT_NUM_PARTITIONS 3
-+static struct mtd_info** sharp_sl_nand_part_mtdp;
-+static int nr_partitions;
-+static struct mtd_partition sharp_sl_nand_default_partition_info[] = {
-+ {
-+ .name = "NAND flash partition 0",
-+ .offset = 0,
-+ .size = 7 * 1024 * 1024,
-+ },
-+ {
-+ .name = "NAND flash partition 1",
-+ .offset = 7 * 1024 * 1024,
-+ .size = 30 * 1024 * 1024,
-+ },
-+ {
-+ .name = "NAND flash partition 2",
-+ .offset = 37 * 1024 * 1024,
-+ .size = (64 - 37) * 1024 * 1024,
-+ },
-+};
-+static struct mtd_partition* sharp_sl_nand_partition_info;
-+
-+
-+/*
-+ * hardware specific access to control-lines
-+ */
-+static void
-+tc6393_nand_hwcontrol(int cmd)
-+{
-+ switch (cmd) {
-+ case NAND_CTL_SETCLE:
-+ nandctrl->smode |= SMODE_CLE;
-+ break;
-+ case NAND_CTL_CLRCLE:
-+ nandctrl->smode &= ~SMODE_CLE;
-+ break;
-+ case NAND_CTL_SETALE:
-+ nandctrl->smode |= SMODE_ALE;
-+ break;
-+ case NAND_CTL_CLRALE:
-+ nandctrl->smode &= ~SMODE_ALE;
-+ break;
-+ case NAND_CTL_SETNCE:
-+ nandctrl->smode = SMODE_SELECT;
-+ break;
-+ case NAND_CTL_CLRNCE:
-+ nandctrl->smode = SMODE_DESELECT;
-+ default:
-+ break;
-+ }
-+}
-+
-+
-+/*
-+ *
-+ */
-+static int
-+tc6393_nand_command_1(struct mtd_info* mtd,
-+ unsigned command,
-+ int column,
-+ int page_addr)
-+{
-+ register struct nand_chip *this = mtd->priv;
-+ register unsigned long NAND_IO_ADDR = this->IO_ADDR_W;
-+ int i;
-+
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ if (command != NAND_CMD_RESET &&
-+ command != NAND_CMD_STATUS) {
-+ for (i = 0; i < NAND_BUSY_TIMEOUT; i++)
-+ if (this->dev_ready())
-+ break;
-+ if (i == NAND_BUSY_TIMEOUT)
-+ return -EIO;
-+ }
-+#endif
-+ this->hwcontrol (NAND_CTL_SETCLE);
-+
-+ /*
-+ * Write out the command to the device.
-+ */
-+ if (command != NAND_CMD_SEQIN)
-+ writeb (command, NAND_IO_ADDR);
-+ else {
-+ if (mtd->oobblock == 256 && column >= 256) {
-+ column -= 256;
-+ writeb (NAND_CMD_READOOB, NAND_IO_ADDR);
-+ writeb (NAND_CMD_SEQIN, NAND_IO_ADDR);
-+ } else if (mtd->oobblock == 512 && column >= 256) {
-+ if (column < 512) {
-+ column -= 256;
-+ writeb (NAND_CMD_READ1, NAND_IO_ADDR);
-+ writeb (NAND_CMD_SEQIN, NAND_IO_ADDR);
-+ } else {
-+ column -= 512;
-+ writeb (NAND_CMD_READOOB, NAND_IO_ADDR);
-+ writeb (NAND_CMD_SEQIN, NAND_IO_ADDR);
-+ }
-+ } else {
-+ writeb (NAND_CMD_READ0, NAND_IO_ADDR);
-+ writeb (NAND_CMD_SEQIN, NAND_IO_ADDR);
-+ }
-+ }
-+
-+ /* Set ALE and clear CLE to start address cycle */
-+ this->hwcontrol (NAND_CTL_CLRCLE);
-+
-+ if (column != -1 || page_addr != -1) {
-+ this->hwcontrol (NAND_CTL_SETALE);
-+
-+ /* Serially input address */
-+ if (column != -1)
-+ writeb (column, NAND_IO_ADDR);
-+ if (page_addr != -1) {
-+ writeb ((unsigned char) (page_addr & 0xff), NAND_IO_ADDR);
-+ writeb ((unsigned char) ((page_addr >> 8) & 0xff), NAND_IO_ADDR);
-+ /* One more address cycle for higher density devices */
-+ if (mtd->size & 0x0c000000)
-+ writeb ((unsigned char) ((page_addr >> 16) & 0x0f), NAND_IO_ADDR);
-+ }
-+ /* Latch in address */
-+ this->hwcontrol (NAND_CTL_CLRALE);
-+ }
-+
-+ /*
-+ * program and erase have their own busy handlers
-+ * status and sequential in needs no delay
-+ */
-+ switch (command) {
-+ case NAND_CMD_PAGEPROG: /* wait in this->waitfunc() */
-+ case NAND_CMD_ERASE1:
-+ case NAND_CMD_ERASE2: /* wait in this->waitfunc() */
-+ case NAND_CMD_SEQIN:
-+/* case NAND_CMD_STATUS: */
-+ return 0;
-+
-+ case NAND_CMD_RESET:
-+ break;
-+ }
-+
-+ /* wait until command is processed */
-+ for (i = 0; i < NAND_BUSY_TIMEOUT; i++)
-+ if (this->dev_ready())
-+ return 0;
-+ return -EIO;
-+}
-+
-+
-+/*
-+ *
-+ */
-+static int
-+tc6393_nand_command(struct mtd_info* mtd,
-+ unsigned command,
-+ int column,
-+ int page_addr)
-+{
-+ if (command == NAND_CMD_SEQIN)
-+ /* ignore Ready/Busy error */
-+ tc6393_nand_command_1(mtd, NAND_CMD_READ0, column, page_addr);
-+ return tc6393_nand_command_1(mtd, command, column, page_addr);
-+}
-+
-+
-+/*
-+ * Get chip for selected access
-+ * (copy from nand.c)
-+ */
-+static inline void
-+nand_get_chip(struct nand_chip *this,
-+ struct mtd_info *mtd,
-+ int new_state)
-+{
-+
-+ DECLARE_WAITQUEUE (wait, current);
-+
-+ /*
-+ * Grab the lock and see if the device is available
-+ * For erasing, we keep the spinlock until the
-+ * erase command is written.
-+ */
-+ retry:
-+ spin_lock_bh (&this->chip_lock);
-+
-+ if (this->state == FL_READY) {
-+ this->state = new_state;
-+ if (new_state != FL_ERASING)
-+ spin_unlock_bh (&this->chip_lock);
-+ return;
-+ }
-+
-+#if 0
-+ if (this->state == FL_ERASING) {
-+ if (new_state != FL_ERASING) {
-+ this->state = new_state;
-+ spin_unlock_bh (&this->chip_lock);
-+ nand_select (); /* select in any case */
-+ this->cmdfunc(mtd, NAND_CMD_RESET, -1, -1);
-+ return;
-+ }
-+ }
-+#endif
-+
-+ set_current_state (TASK_UNINTERRUPTIBLE);
-+ add_wait_queue (&this->wq, &wait);
-+ spin_unlock_bh (&this->chip_lock);
-+ schedule ();
-+ remove_wait_queue (&this->wq, &wait);
-+ goto retry;
-+}
-+
-+
-+static inline void
-+tc6393_nand_read_page(struct mtd_info* mtd,
-+ struct nand_chip* this,
-+ u_char* data_poi,
-+ u_char* oob_data,
-+ u_char* ecc_calc,
-+ int ecc,
-+ int end)
-+{
-+ int j = 0;
-+
-+ START_MEASUREMENT(nand_read_page);
-+
-+ this->enable_hwecc (NAND_ECC_READ);
-+
-+ while (j < ecc){
-+ unsigned short data = readw (this->IO_ADDR_R);
-+ data_poi[j++] = data;
-+ data_poi[j++] = data >> 8;
-+ }
-+
-+ this->calculate_ecc (&data_poi[0], &ecc_calc[0]); /* read from hardware */
-+
-+ for (j = 0; j < mtd->oobsize; j+=2) {
-+ unsigned short data = readw (this->IO_ADDR_R);
-+ oob_data[j] = data;
-+ oob_data[j+1] = data >> 8;
-+ }
-+ ACCUMULATE_ELAPSED_TIME(nand_read_page);
-+ COUNTER_INC(nand_read_nr_pages);
-+}
-+
-+
-+/*
-+ * this function is registered only if eccmode == NAND_ECC_HW6_512 &&
-+ * oobblock == 512
-+ */
-+static int
-+tc6393_nand_read_ecc(struct mtd_info* mtd,
-+ loff_t from,
-+ size_t len,
-+ size_t* retlen,
-+ u_char* buf,
-+ u_char* oob_buf,
-+ int oobsel)
-+{
-+ int col, page, end, ecc;
-+ int read, ecc_failed, ret;
-+ struct nand_chip *this;
-+ u_char *oob_data;
-+ int *oob_config;
-+ u_char* data_poi = 0;
-+
-+ if (oob_buf || ! oobsel)
-+ return orig_read_ecc(mtd, from, len, retlen, buf, oob_buf, oobsel);
-+
-+ DEBUG (MTD_DEBUG_LEVEL3, "%s: from = 0x%08x, len = %i\n",
-+ __func__, (unsigned int) from, (int) len);
-+
-+ /* Do not allow reads past end of device */
-+ if ((from + len) > mtd->size) {
-+ DEBUG (MTD_DEBUG_LEVEL0, "%s: Attempt read beyond end of device\n", __func__);
-+ *retlen = 0;
-+ return -EINVAL;
-+ }
-+
-+ /* Grab the lock and see if the device is available */
-+ this = mtd->priv;
-+ nand_get_chip (this, mtd ,FL_READING);
-+
-+ /* Select the NAND device */
-+ nand_select ();
-+
-+ oob_config = oobconfigs[oobsel];
-+ page = from >> this->page_shift;
-+ col = from & (mtd->oobblock - 1);
-+ end = mtd->oobblock;
-+ ecc = mtd->eccsize;
-+ oob_data = &this->data_buf[end];
-+ read = 0;
-+ ecc_failed = 0;
-+ ret = 0;
-+
-+ /* Send the read command */
-+ if (this->cmdfunc (mtd, NAND_CMD_READ0, 0x00, page)) {
-+ printk(KERN_WARNING "%s: Failed in NAND_CMD_READ0 command, page 0x%08x\n",
-+ __func__, page);
-+ ret = -EIO;
-+ goto nand_read_ecc_exit;
-+ }
-+
-+ /* Loop until all data read */
-+ while (read < len) {
-+ int j;
-+ int ecc_status;
-+ int ecc_retry_counter = 0;
-+ u_char ecc_calc[6];
-+ u_char ecc_code[6];
-+
-+ /*
-+ * If the read is not page aligned, we have to read into data buffer
-+ * due to ecc, else we read into return buffer direct
-+ */
-+ if (!col && (len - read) >= end)
-+ data_poi = &buf[read];
-+ else
-+ data_poi = this->data_buf;
-+
-+#ifdef CONFIG_MTD_NAND_PAGE_CACHE
-+ if (page == this->cache_page) {
-+ memcpy(data_poi, this->data_cache, end);
-+
-+ if (this->cmdfunc (mtd, NAND_CMD_READ0, 0x00, page + 1)) {
-+ printk(KERN_WARNING "%s: Failed in NAND_CMD_READ0 command,"
-+ " page 0x%08x\n", __func__, page);
-+ ret = -EIO;
-+ goto nand_read_ecc_exit;
-+ }
-+
-+ goto loop_next;
-+ }
-+#endif
-+
-+ ecc_retry:
-+ tc6393_nand_read_page(mtd, this, data_poi, oob_data, ecc_calc, ecc, end);
-+
-+ /* Pick the ECC bytes out of the oob data */
-+ for (j = 0; j < 6; j++)
-+ ecc_code[j] = oob_data[oob_config[j]];
-+
-+ /* If we have consequent page reads, apply delay or wait for ready/busy pin */
-+ for (j = 0; j < NAND_BUSY_TIMEOUT; j++)
-+ if (this->dev_ready())
-+ break;
-+ if (j == NAND_BUSY_TIMEOUT) {
-+ ret = -EIO;
-+ goto nand_read_ecc_exit;
-+ }
-+
-+ /* correct data, if neccecary */
-+ ecc_status = this->correct_data (&data_poi[0], &ecc_code[0], &ecc_calc[0]);
-+ if (ecc_status == -1) {
-+ if (ecc_retry_counter++ < MAX_ECC_RETRY) {
-+ this->cmdfunc (mtd, NAND_CMD_RESET, -1, -1);
-+ if (this->cmdfunc (mtd, NAND_CMD_READ0, 0x00, page)) {
-+ printk(KERN_WARNING
-+ "%s: Failed in NAND_CMD_READ0 command, page 0x%08x\n",
-+ __func__, page);
-+ ret = -EIO;
-+ goto nand_read_ecc_exit;
-+ }
-+ goto ecc_retry;
-+ }
-+ else {
-+ printk (KERN_WARNING "%s: Failed ECC read, page 0x%08x\n",
-+ __func__, page);
-+ ecc_failed++;
-+ }
-+ }
-+
-+ ecc_status = this->correct_data (&data_poi[256], &ecc_code[3], &ecc_calc[3]);
-+ if (ecc_status == -1) {
-+ if (ecc_retry_counter++ < MAX_ECC_RETRY) {
-+ this->cmdfunc (mtd, NAND_CMD_RESET, -1, -1);
-+ if (this->cmdfunc (mtd, NAND_CMD_READ0, 0x00, page)) {
-+ printk(KERN_WARNING
-+ "%s: Failed in NAND_CMD_READ0 command, page 0x%08x\n",
-+ __func__, page);
-+ ret = -EIO;
-+ goto nand_read_ecc_exit;
-+ }
-+ goto ecc_retry;
-+ }
-+ else {
-+ printk (KERN_WARNING "%s: Failed ECC read, page 0x%08x\n",
-+ __func__, page);
-+ ecc_failed++;
-+ }
-+ }
-+
-+#ifdef CONFIG_MTD_NAND_PAGE_CACHE
-+ loop_next:
-+#endif
-+ if (col || (len - read) < end) {
-+ for (j = col; j < end && read < len; j++)
-+ buf[read++] = data_poi[j];
-+ } else
-+ read += mtd->oobblock;
-+ /* For subsequent reads align to page boundary. */
-+ col = 0;
-+ /* Increment page address */
-+ page++;
-+ }
-+
-+ nand_read_ecc_exit:
-+ ret = (ret == 0) ? (ecc_failed ? -EIO : 0) : ret;
-+ if (ret == -EIO)
-+ this->cmdfunc(mtd, NAND_CMD_RESET, -1, -1);
-+#ifdef CONFIG_MTD_NAND_PAGE_CACHE
-+ else if (page - 1 != this->cache_page && data_poi) {
-+ memcpy(this->data_cache, data_poi, end);
-+ this->cache_page = page - 1;
-+ }
-+#endif
-+
-+ /* De-select the NAND device */
-+ nand_deselect ();
-+
-+ /* Wake up anyone waiting on the device */
-+ spin_lock_bh (&this->chip_lock);
-+ this->state = FL_READY;
-+ wake_up (&this->wq);
-+ spin_unlock_bh (&this->chip_lock);
-+
-+ /*
-+ * Return success, if no ECC failures, else -EIO
-+ * fs driver will take care of that, because
-+ * retlen == desired len and result == -EIO
-+ */
-+ *retlen = read;
-+ return ret;
-+}
-+
-+
-+static int
-+tc6393_nand_read(struct mtd_info* mtd,
-+ loff_t from,
-+ size_t len,
-+ size_t* retlen,
-+ u_char* buf)
-+{
-+ return tc6393_nand_read_ecc(mtd, from, len, retlen, buf, NULL, NAND_JFFS2_OOB);
-+}
-+
-+
-+/* same as sharp_sl.c */
-+static inline int jffs2_hamming_distance(unsigned int a, unsigned int b)
-+{
-+#ifdef __ARM_ARCH_5TE__
-+ unsigned int n;
-+ a ^= b;
-+ asm (
-+ "clz %0, %1\n"
-+ : "=r" (n)
-+ : "r" (a)
-+ );
-+ return (a << (n + 1)) == 0;
-+#else
-+ unsigned int n;
-+ a ^= b;
-+ for (n = 0; n < 8; n++)
-+ if (! (a & ~(1 << n)))
-+ return 1;
-+ return 0;
-+#endif
-+}
-+
-+/* same as sharp_sl.c */
-+static inline void
-+jffs2_correct_badblock_val(u_char* oob)
-+{
-+#ifdef CONFIG_MTD_NAND_POST_BADBLOCK
-+ if (jffs2_hamming_distance(oob[NAND_POSTBADBLOCK_POS], 0xff))
-+ oob[NAND_POSTBADBLOCK_POS] = 0xff;
-+#endif
-+ if (jffs2_hamming_distance(oob[NAND_BADBLOCK_POS], 0xff))
-+ oob[NAND_BADBLOCK_POS] = 0xff;
-+}
-+
-+/* same as sharp_sl.c */
-+static inline void
-+jffs2_correct_failedblock_val(u_char* oob)
-+{
-+ if (jffs2_hamming_distance(oob[FAILURECOUNTER_POS], 0xff))
-+ oob[FAILURECOUNTER_POS] = 0xff;
-+}
-+
-+/* same as sharp_sl.c */
-+static inline void
-+jffs2_correct_cleanmarker(u_char* oob,
-+ u_char* correct_data,
-+ int len)
-+{
-+ int i;
-+ for (i = 0; i < len; i++)
-+ if (jffs2_hamming_distance(oob[i], correct_data[i]))
-+ oob[i] = correct_data[i];
-+}
-+
-+/* same as sharp_sl.c */
-+static int
-+tc6393_nand_prepare_rewrite(struct mtd_info* mtd,
-+ loff_t to,
-+ int oobsel)
-+{
-+ int i;
-+ loff_t block_addr = to & ~(mtd->erasesize - 1);
-+ size_t len = to & (mtd->erasesize - 1);
-+ int nr_oobpages = 2; // JFFS2 only (JFFS2 uses only 2 oobpages)
-+ int fsdata_pos = (mtd->oobblock == 256)
-+ ? NAND_JFFS2_OOB8_FSDAPOS : NAND_JFFS2_OOB16_FSDAPOS;
-+ int fsdata_len = (mtd->oobblock == 256)
-+ ? NAND_JFFS2_OOB8_FSDALEN : NAND_JFFS2_OOB16_FSDALEN;
-+ u_char* block_buf;
-+ u_char* oob_buf;
-+ int ret;
-+ int retlen;
-+ struct erase_info instr;
-+
-+ block_buf = kmalloc(len, GFP_KERNEL);
-+ if (! block_buf) {
-+ printk("Unable to allocate NAND block buffer (%u)\n", len);
-+ return -EIO;
-+ }
-+ oob_buf = kmalloc(mtd->oobsize * nr_oobpages, GFP_KERNEL);
-+ if (! oob_buf) {
-+ printk("Unable to allocate NAND oob buffer\n");
-+ kfree(block_buf);
-+ return -EIO;
-+ }
-+
-+ ret = mtd->read_ecc(mtd, block_addr, len, &retlen, block_buf, NULL, NAND_JFFS2_OOB);
-+ if (ret || retlen != len) {
-+ DEBUG(MTD_DEBUG_LEVEL0, "%s: read_ecc failed (%d)\n", __func__, ret);
-+ kfree(block_buf);
-+ kfree(oob_buf);
-+ return ret ? ret : -EIO;
-+ }
-+
-+ ret = mtd->read_oob(mtd, block_addr, mtd->oobsize * nr_oobpages, &retlen, oob_buf);
-+ if (ret || retlen != mtd->oobsize * nr_oobpages) {
-+ DEBUG(MTD_DEBUG_LEVEL0, "%s: read_oob failed (%d)\n", __func__, ret);
-+ kfree(block_buf);
-+ kfree(oob_buf);
-+ return ret ? ret : -EIO;
-+ }
-+#if 1 /* FIXME */
-+ {
-+ struct {
-+ /* All start like this */
-+ uint16_t magic;
-+ uint16_t nodetype;
-+ uint32_t totlen; /* So we can skip over nodes we don't grok */
-+ } __attribute__((packed)) n = {
-+ .magic = 0x1985,
-+ .nodetype = 0x2003,
-+ .totlen = 8,
-+ };
-+ u_char* p;
-+
-+ p = (u_char*)&n;
-+
-+ jffs2_correct_badblock_val(oob_buf);
-+ jffs2_correct_failedblock_val(&oob_buf[mtd->oobsize]);
-+ jffs2_correct_cleanmarker(&oob_buf[fsdata_pos], p, fsdata_len);
-+ }
-+#endif
-+
-+ for (i = 0; i < MAX_COPIES; i++) {
-+ int j;
-+
-+ memset(&instr, 0, sizeof instr);
-+ instr.mtd = mtd;
-+ instr.addr = block_addr;
-+ instr.len = mtd->erasesize;
-+ ret = mtd->erase(mtd, &instr);
-+ if (ret) {
-+ DEBUG(MTD_DEBUG_LEVEL0, "%s: erase failed (%d)\n", __func__, ret);
-+ continue;
-+ }
-+
-+ ret = orig_write_ecc(mtd, block_addr, len, &retlen, block_buf, NULL,
-+ NAND_JFFS2_OOB);
-+ if (ret || retlen != len) {
-+ DEBUG(MTD_DEBUG_LEVEL0, "%s: write_ecc failed (%d)\n", __func__, ret);
-+ continue;
-+ }
-+
-+ for (j = 0; j < nr_oobpages; j++) {
-+ loff_t addr = block_addr + mtd->oobblock * j;
-+
-+#ifdef CONFIG_MTD_NAND_POST_BADBLOCK
-+ ret = orig_write_oob(mtd, addr + NAND_POSTBADBLOCK_POS, 1, &retlen,
-+ oob_buf + mtd->oobsize * j + NAND_POSTBADBLOCK_POS);
-+ if (ret || retlen != 1) {
-+ DEBUG(MTD_DEBUG_LEVEL0, "%s: write_oob post_badblock(%d) failed (%d)\n",
-+ __func__, j, ret);
-+ break;
-+ }
-+#endif
-+
-+ ret = orig_write_oob(mtd, addr + NAND_BADBLOCK_POS, 1, &retlen,
-+ oob_buf + mtd->oobsize * j + NAND_BADBLOCK_POS);
-+ if (ret || retlen != 1) {
-+ DEBUG(MTD_DEBUG_LEVEL0, "%s: write_oob badblock(%d) failed (%d)\n",
-+ __func__, j, ret);
-+ break;
-+ }
-+
-+ ret = orig_write_oob(mtd, addr + fsdata_pos, fsdata_len, &retlen,
-+ oob_buf + mtd->oobsize * j + fsdata_pos);
-+ if (ret || retlen != fsdata_len) {
-+ DEBUG(MTD_DEBUG_LEVEL0, "%s: write_oob fsdata(%d) failed (%d)\n",
-+ __func__, j, ret);
-+ break;
-+ }
-+ }
-+ if (j < nr_oobpages)
-+ continue;
-+
-+ break;
-+ }
-+
-+ kfree(block_buf);
-+ kfree(oob_buf);
-+ DEBUG(MTD_DEBUG_LEVEL0,
-+ "%s: %d\n", __func__, (i < MAX_COPIES) ? 0 : (ret ? ret : -EIO));
-+ return (i < MAX_COPIES) ? 0 : (ret ? ret : -EIO);
-+}
-+
-+/* same as sharp_sl.c */
-+static int
-+tc6393_nand_write_ecc(struct mtd_info* mtd,
-+ loff_t to,
-+ size_t len,
-+ size_t* retlen,
-+ const u_char* buf,
-+ u_char* eccbuf,
-+ int oobsel)
-+{
-+ int i;
-+ int ret;
-+
-+ for (i = 0; i < MAX_WRITE_RETRIES; i++) {
-+ ret = orig_write_ecc(mtd, to, len, retlen, buf, eccbuf, oobsel);
-+ if (ret != -EIO){
-+ return ret;
-+ }
-+
-+ ret = tc6393_nand_prepare_rewrite(mtd, to, oobsel);
-+ if (ret)
-+ return ret;
-+ }
-+ return -EIO;
-+}
-+
-+
-+/* same as sharp_sl.c */
-+static int
-+tc6393_nand_write(struct mtd_info* mtd,
-+ loff_t to,
-+ size_t len,
-+ size_t* retlen,
-+ const u_char* buf)
-+{
-+ return tc6393_nand_write_ecc(mtd, to, len, retlen, buf, NULL, NAND_JFFS2_OOB);
-+}
-+
-+/* same as sharp_sl.c */
-+static int
-+tc6393_nand_writev_ecc(struct mtd_info* mtd,
-+ const struct iovec* vecs,
-+ unsigned long count,
-+ loff_t to,
-+ size_t* retlen,
-+ u_char* eccbuf,
-+ int oobsel)
-+{
-+ int i;
-+ int ret;
-+
-+ for (i = 0; i < MAX_WRITE_RETRIES; i++) {
-+ ret = orig_writev_ecc(mtd, vecs, count, to, retlen, eccbuf, oobsel);
-+ if (ret != -EIO)
-+ return ret;
-+
-+ ret = tc6393_nand_prepare_rewrite(mtd, to, oobsel);
-+ if (ret)
-+ return ret;
-+ }
-+ return -EIO;
-+}
-+
-+/* same as sharp_sl.c */
-+static int
-+tc6393_nand_writev(struct mtd_info* mtd,
-+ const struct iovec* vecs,
-+ unsigned long count,
-+ loff_t to,
-+ size_t* retlen)
-+{
-+ return tc6393_nand_writev_ecc(mtd, vecs, count, to, retlen, NULL, NAND_JFFS2_OOB);
-+}
-+
-+
-+/* same as sharp_sl.c */
-+static int
-+tc6393_nand_write_oob(struct mtd_info* mtd,
-+ loff_t to,
-+ size_t len,
-+ size_t* retlen,
-+ const u_char* buf)
-+{
-+ int i;
-+ int ret;
-+
-+ for (i = 0; i < MAX_WRITE_RETRIES; i++) {
-+ ret = orig_write_oob(mtd, to, len, retlen, buf);
-+ if (ret != -EIO)
-+ return ret;
-+
-+ ret = tc6393_nand_prepare_rewrite(mtd, to & ~(mtd->erasesize - 1), // JFFS2 only (JFFS2 calls write_oob only after erasing)
-+ NAND_JFFS2_OOB);
-+ if (ret)
-+ return ret;
-+ }
-+ return -EIO;
-+}
-+
-+
-+/* same as sharp_sl.c */
-+static int
-+tc6393_nand_flash_busy(void)
-+{
-+ return (nandctrl->sustus & SUSTUS_BUSY) == SUSTUS_BUSY;
-+}
-+
-+
-+/*
-+ *
-+ */
-+/* same as sharp_sl.c */
-+static int
-+tc6393_nand_dev_ready(void)
-+{
-+ int i;
-+ for (i = 0; i < 5; i++)
-+ tc6393_nand_flash_busy();
-+ return ! tc6393_nand_flash_busy();
-+}
-+
-+
-+/*
-+ *
-+ */
-+/* same as sharp_sl.c */
-+static int
-+tc6393_nand_suspend(struct mtd_info* mtd)
-+{
-+ int i;
-+ printk("%s", __func__);
-+ for (i = 0; i < nr_partitions; i++) {
-+ invalidate_device(MKDEV(MTD_BLOCK_MAJOR, sharp_sl_nand_part_mtdp[i]->index), 1);
-+ }
-+ mtd->sync(mtd);
-+
-+ printk("\n");
-+ return 0;
-+}
-+
-+/*
-+ *
-+ */
-+/* same as sharp_sl.c */
-+static void
-+tc6393_nand_resume(struct mtd_info* mtd)
-+{
-+ printk("%s\n", __func__);
-+ tc6393_nand_hw_init();
-+}
-+
-+
-+#ifdef CONFIG_MTD_NAND_ECC
-+/*
-+ *
-+ */
-+static void
-+tc6393_nand_enable_hwecc(int mode)
-+{
-+ volatile unsigned char dummy_read;
-+
-+ if(mode == NAND_ECC_WRITE){
-+ /* Hard_ECC Reset_Mode(Read) */
-+ nandctrl->smode = SMODE_HWECC_WRITE_RESET_ECC;
-+ /* Read dummy data (1byte) */
-+ dummy_read = nandctrl->sdata.data8.sdata0;
-+ /* Hard_ECC CALC_Mode(Read) */
-+ nandctrl->smode = SMODE_HWECC_WRITE_ECCCALC;
-+
-+ hwecc_mode = HWECC_MODE_WRITE;
-+ return;
-+ }else{
-+ /* Hard_ECC Reset_Mode(Write) */
-+ nandctrl->smode = SMODE_HWECC_READ_RESET_ECC;
-+ /* Read dummy data (1byte) */
-+ dummy_read = nandctrl->sdata.data8.sdata0;
-+ /* Hard_ECC CALC_Mode(Read) */
-+ nandctrl->smode = SMODE_HWECC_READ_ECCCALC;
-+
-+ hwecc_mode = HWECC_MODE_READ;
-+ return;
-+ }
-+}
-+
-+
-+/*
-+ *
-+ */
-+static int
-+tc6393_nand_calculate_ecc(const u_char* dat,
-+ u_char* ecc_code)
-+{
-+ unsigned short ecc1,ecc2,ecc3;
-+
-+ if(hwecc_mode == HWECC_MODE_READ){
-+ nandctrl->smode = SMODE_HWECC_READ_CALC_RESULT;
-+ }else if(hwecc_mode == HWECC_MODE_WRITE){
-+ nandctrl->smode = SMODE_HWECC_WRITE_CALC_RESULT;
-+ }else{
-+ printk("Unable to calcutate NAND ecc.");
-+ return -EIO;
-+ }
-+
-+ ecc1 = nandctrl->sdata.data16.sdata0_1;
-+ ecc2 = nandctrl->sdata.data16.sdata0_1;
-+ ecc3 = nandctrl->sdata.data16.sdata0_1;
-+
-+ ecc_code[0] = ecc1 >> 8; // 000-255 LP15-8
-+ ecc_code[1] = ecc1 >> 0; // 000-255 LP7-0
-+ ecc_code[2] = ecc2 >> 0; // 000-255 CP5-0,11b
-+ ecc_code[3] = ecc3 >> 0; // 256-511 LP15-8
-+ ecc_code[4] = ecc2 >> 8; // 256-511 LP7-0
-+ ecc_code[5] = ecc3 >> 8; // 256-511 CP5-0,11b
-+
-+ if(hwecc_mode == HWECC_MODE_READ){
-+ nandctrl->smode = SMODE_READ_DATAREAD;
-+ }else{
-+ nandctrl->smode = SMODE_WRITE_DATAWRITE;
-+ }
-+
-+ hwecc_mode = HWECC_MODE_DISABLE;
-+ return 0;
-+}
-+#endif
-+
-+
-+static void tc6393_nand_hw_init(void)
-+{
-+ /* (89h) SMD Buffer ON By TC6393XB SystemConfig */
-+ sysconfig->gpibfc1 = 0xff;
-+
-+ /* (4Ch) CLKRUN Enable 1st */
-+ nandconfig->spcrunc = 0x81;
-+
-+ /* (10h)BaseAddress 0x1000 */
-+ nandconfig->spba.spba2 = TC6393XB_NANDCTRL_OFFSET;
-+
-+ /* (04h)Command Register I/O */
-+ nandconfig->spcmd = 0x02;
-+
-+ /* (62h) Power Supply Control */
-+ /* HardPowerOFF - SuspendOFF - PowerSupplyWait_4MS */
-+ nandconfig->ssmpwc = 0x02;
-+
-+ /* (63h) Detect Control */
-+ nandconfig->ssmdtc = 0x02;
-+
-+ /* Interrupt status register clear */
-+ nandctrl->sintst = 0x0f;
-+
-+ /* After power supply, Media are reset */
-+ nandctrl->smode = SMODE_POWER_ON;
-+ nandctrl->smode = SMODE_READ_COMMAND;
-+ nandctrl->sdata.data8.sdata0 = NAND_CMD_RESET;
-+
-+ /* Stanby Mode */
-+ nandctrl->smode = SMODE_STANDBY;
-+
-+ mdelay(100);
-+
-+ return;
-+}
-+
-+/* same as sharp_sl.c */
-+#ifdef DEBUG_PROC
-+DEFINE_MEASUREMENT_VAR(nand_read_page);
-+DEFINE_COUNTER_VAR(nand_read_nr_pages);
-+DEFINE_MEASUREMENT_VAR(nand_write_page);
-+DEFINE_MEASUREMENT_VAR(nand_write_verify);
-+DEFINE_COUNTER_VAR(nand_write_nr_pages);
-+static int
-+sharp_sl_nand_read_proc(char* buf,
-+ char** start,
-+ off_t offset,
-+ int count,
-+ int* eof,
-+ void* data)
-+{
-+ int len = 0;
-+ PRINT_ELAPSED_TIME(nand_read_page, buf, len);
-+ len += sprintf(buf + len, "nand_read_nr_pages %d\n", nand_read_nr_pages);
-+ PRINT_ELAPSED_TIME(nand_write_page, buf, len);
-+ PRINT_ELAPSED_TIME(nand_write_verify, buf, len);
-+ len += sprintf(buf + len, "nand_write_nr_pages %d\n", nand_write_nr_pages);
-+ *eof = 1;
-+ return len;
-+}
-+
-+
-+static int sharp_sl_nand_write_proc(struct file* file,
-+ const char* buffer,
-+ unsigned long count,
-+ void* data)
-+{
-+ CLEAR_TIME_VER(nand_read_page);
-+ CLEAR_TIME_VER(nand_write_page);
-+ CLEAR_TIME_VER(nand_write_verify);
-+ nand_read_nr_pages = 0;
-+ nand_write_nr_pages = 0;
-+ return count;
-+}
-+#endif
-+
-+
-+/*
-+ * Main initialization routine
-+ */
-+int __init
-+tc6393_nand_init (void)
-+{
-+ extern int parse_cmdline_partitions(struct mtd_info *, struct mtd_partition **,
-+ const char *);
-+ struct nand_chip *this;
-+ int i;
-+
-+ //printk("**** %s:\n",__func__);
-+
-+ /* Allocate memory for MTD device structure and private data */
-+ sharp_sl_mtd = kmalloc (sizeof(struct mtd_info) + sizeof (struct nand_chip),
-+ GFP_KERNEL);
-+ if (!sharp_sl_mtd) {
-+ printk ("Unable to allocate Poodle NAND MTD device structure.\n");
-+ return -ENOMEM;
-+ }
-+
-+ /* Initialize NAND flash controller on TC6393XB */
-+ tc6393_nand_hw_init();
-+
-+ /* Get pointer to private data */
-+ this = (struct nand_chip *) (&sharp_sl_mtd[1]);
-+
-+ /* Initialize structures */
-+ memset((char *) sharp_sl_mtd, 0, sizeof(struct mtd_info));
-+ memset((char *) this, 0, sizeof(struct nand_chip));
-+
-+ /* Link the private data with the MTD structure */
-+ sharp_sl_mtd->priv = this;
-+
-+ /*
-+ * PXA initialize
-+ */
-+
-+ /* Set address of NAND IO lines */
-+ this->IO_ADDR_R = (unsigned long)&nandctrl->sdata.data8.sdata0;
-+ this->IO_ADDR_W = (unsigned long)&nandctrl->sdata.data8.sdata0;
-+
-+ /* Set address of hardware control function */
-+ this->hwcontrol = tc6393_nand_hwcontrol;
-+ this->dev_ready = tc6393_nand_dev_ready;
-+ this->cmdfunc = tc6393_nand_command;
-+
-+ /* 15 us command delay time */
-+ this->chip_delay = 15;
-+
-+ /* set eccmode using hardware ECC */
-+#ifdef CONFIG_MTD_NAND_ECC
-+ this->eccmode = NAND_ECC_HW6_512;
-+ this->enable_hwecc = tc6393_nand_enable_hwecc;
-+ this->calculate_ecc = tc6393_nand_calculate_ecc;
-+ this->correct_data = nand_correct_data;
-+#endif
-+
-+ /* Scan to find existence of the device */
-+ if (nand_scan (sharp_sl_mtd)) {
-+ kfree (sharp_sl_mtd);
-+ return -ENXIO;
-+ }
-+
-+#if 1
-+ sharp_sl_mtd->eccsize = this->eccsize;
-+#endif
-+
-+ if (this->eccmode == NAND_ECC_HW6_512 && sharp_sl_mtd->oobblock == 512) {
-+ orig_read_ecc = sharp_sl_mtd->read_ecc;
-+ sharp_sl_mtd->read = tc6393_nand_read;
-+ sharp_sl_mtd->read_ecc = tc6393_nand_read_ecc;
-+
-+ orig_write_ecc = sharp_sl_mtd->write_ecc;
-+ sharp_sl_mtd->write = tc6393_nand_write;
-+ sharp_sl_mtd->write_ecc = tc6393_nand_write_ecc;
-+
-+ orig_writev_ecc = sharp_sl_mtd->writev_ecc;
-+ sharp_sl_mtd->writev = tc6393_nand_writev;
-+ sharp_sl_mtd->writev_ecc = tc6393_nand_writev_ecc;
-+
-+ orig_write_oob = sharp_sl_mtd->write_oob;
-+ sharp_sl_mtd->write_oob = tc6393_nand_write_oob;
-+ }
-+ sharp_sl_mtd->suspend = tc6393_nand_suspend;
-+ sharp_sl_mtd->resume = tc6393_nand_resume;
-+#ifdef CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS
-+ sharp_sl_mtd->cleanup_laddr = sharp_sl_nand_cleanup_laddr;
-+ sharp_sl_mtd->read_laddr = sharp_sl_nand_read_laddr;
-+ sharp_sl_mtd->write_laddr = sharp_sl_nand_write_laddr;
-+#endif
-+
-+ /* Allocate memory for internal data buffer */
-+ this->data_buf = kmalloc (sizeof(u_char) * (sharp_sl_mtd->oobblock + sharp_sl_mtd->oobsize), GFP_KERNEL);
-+ if (!this->data_buf) {
-+ printk ("Unable to allocate NAND data buffer for Poodle.\n");
-+ kfree (sharp_sl_mtd);
-+ return -ENOMEM;
-+ }
-+
-+ /* Allocate memory for internal data buffer */
-+ this->data_cache = kmalloc (sizeof(u_char) * (sharp_sl_mtd->oobblock + sharp_sl_mtd->oobsize), GFP_KERNEL);
-+ if (!this->data_cache) {
-+ printk ("Unable to allocate NAND data cache for Poodle.\n");
-+ kfree (this->data_buf);
-+ kfree (sharp_sl_mtd);
-+ return -ENOMEM;
-+ }
-+
-+ /* Register the partitions */
-+ nr_partitions = parse_cmdline_partitions(sharp_sl_mtd,
-+ &sharp_sl_nand_partition_info,
-+ "sharpsl-nand");
-+ if (nr_partitions <= 0) {
-+ nr_partitions = DEFAULT_NUM_PARTITIONS;
-+ sharp_sl_nand_partition_info = sharp_sl_nand_default_partition_info;
-+ }
-+ sharp_sl_nand_part_mtdp = kmalloc(sizeof (struct mtd_info*) * nr_partitions,
-+ GFP_KERNEL);
-+ if (! sharp_sl_nand_part_mtdp) {
-+ printk("Unable to allocate memory for sharp_sl_nand_part_mtdp\n");
-+ kfree(this->data_buf);
-+ kfree(this->data_cache);
-+ kfree(sharp_sl_mtd);
-+ return -ENOMEM;
-+ }
-+ for (i = 0; i < nr_partitions; i++)
-+ sharp_sl_nand_partition_info[i].mtdp = &sharp_sl_nand_part_mtdp[i];
-+ add_mtd_partitions(sharp_sl_mtd, sharp_sl_nand_partition_info, nr_partitions);
-+
-+ for (i = 0; i < nr_partitions; i++)
-+ add_mtd_device(sharp_sl_nand_part_mtdp[i]);
-+
-+#ifdef DEBUG_PROC
-+ struct proc_dir_entry* res = create_proc_read_entry("mtd-debug", 0, NULL, sharp_sl_nand_read_proc, NULL);
-+ res->write_proc = sharp_sl_nand_write_proc;
-+#endif
-+
-+ /* Return happy */
-+ return 0;
-+}
-+module_init(tc6393_nand_init);
-+
-+/*
-+ * Clean up routine
-+ */
-+#ifdef MODULE
-+static void __exit sharp_sl_nand_cleanup (void)
-+{
-+ struct nand_chip *this = (struct nand_chip *) &sharp_sl_mtd[1];
-+
-+ /* Unregister the device */
-+ del_mtd_partitions (sharp_sl_mtd);
-+ int i;
-+ for (i = 0; i < NUM_PARTITIONS)
-+ del_mtd_device (sharp_sl_nand_part_mtdp[i]);
-+
-+ /* Free internal data buffer */
-+ kfree (this->data_buf);
-+ kfree (this->data_cache);
-+ kfree (this->page_cache);
-+
-+ /* Free the MTD device structure */
-+ kfree (sharp_sl_nand_part_mtdp);
-+ if (sharp_sl_nand_partition_info != sharp_sl_nand_default_partition_info)
-+ kfree (sharp_sl_nand_partition_info);
-+ kfree (sharp_sl_mtd);
-+}
-+module_exit(sharp_sl_nand_cleanup);
-+#endif
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("SHARP, Inc.");
-+MODULE_DESCRIPTION("Board-specific glue layer for NAND flash on Tosa");
-diff -Nur linux_c860_org/drivers/net/Config.in linux/drivers/net/Config.in
---- linux_c860_org/drivers/net/Config.in 2002-08-26 15:00:07.000000000 +0900
-+++ linux/drivers/net/Config.in 2004-06-10 21:09:10.000000000 +0900
-@@ -280,6 +280,7 @@
- dep_tristate ' PPP support for sync tty ports' CONFIG_PPP_SYNC_TTY $CONFIG_PPP
- dep_tristate ' PPP Deflate compression' CONFIG_PPP_DEFLATE $CONFIG_PPP
- dep_tristate ' PPP BSD-Compress compression' CONFIG_PPP_BSDCOMP $CONFIG_PPP
-+ dep_tristate ' Microsoft PPP encryption (MPPE)' CONFIG_PPP_MPPE $CONFIG_PPP
- if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
- dep_tristate ' PPP over Ethernet (EXPERIMENTAL)' CONFIG_PPPOE $CONFIG_PPP
- fi
-diff -Nur linux_c860_org/drivers/net/Makefile linux/drivers/net/Makefile
---- linux_c860_org/drivers/net/Makefile 2002-08-26 14:43:55.000000000 +0900
-+++ linux/drivers/net/Makefile 2004-06-10 21:09:10.000000000 +0900
-@@ -137,6 +137,14 @@
- obj-$(CONFIG_PPP_BSDCOMP) += bsd_comp.o
- obj-$(CONFIG_PPPOE) += pppox.o pppoe.o
-
-+ifeq ($(CONFIG_PPP_MPPE),y)
-+ obj-y += ppp_mppe.o
-+else
-+ ifeq ($(CONFIG_PPP_MPPE),m)
-+ obj-m += ppp_mppe.o
-+ endif
-+endif
-+
- obj-$(CONFIG_SLIP) += slip.o
- ifeq ($(CONFIG_SLIP_COMPRESSED),y)
- obj-$(CONFIG_SLIP) += slhc.o
-diff -Nur linux_c860_org/drivers/net/md32_common.h linux/drivers/net/md32_common.h
---- linux_c860_org/drivers/net/md32_common.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/net/md32_common.h 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,607 @@
-+/* crypto/md32_common.h */
-+/* ====================================================================
-+ * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ *
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in
-+ * the documentation and/or other materials provided with the
-+ * distribution.
-+ *
-+ * 3. All advertising materials mentioning features or use of this
-+ * software must display the following acknowledgment:
-+ * "This product includes software developed by the OpenSSL Project
-+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
-+ *
-+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
-+ * endorse or promote products derived from this software without
-+ * prior written permission. For written permission, please contact
-+ * licensing@OpenSSL.org.
-+ *
-+ * 5. Products derived from this software may not be called "OpenSSL"
-+ * nor may "OpenSSL" appear in their names without prior written
-+ * permission of the OpenSSL Project.
-+ *
-+ * 6. Redistributions of any form whatsoever must retain the following
-+ * acknowledgment:
-+ * "This product includes software developed by the OpenSSL Project
-+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
-+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
-+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-+ * OF THE POSSIBILITY OF SUCH DAMAGE.
-+ * ====================================================================
-+ *
-+ * This product includes cryptographic software written by Eric Young
-+ * (eay@cryptsoft.com). This product includes software written by Tim
-+ * Hudson (tjh@cryptsoft.com).
-+ *
-+ */
-+
-+/*
-+ * This is a generic 32 bit "collector" for message digest algorithms.
-+ * Whenever needed it collects input character stream into chunks of
-+ * 32 bit values and invokes a block function that performs actual hash
-+ * calculations.
-+ *
-+ * Porting guide.
-+ *
-+ * Obligatory macros:
-+ *
-+ * DATA_ORDER_IS_BIG_ENDIAN or DATA_ORDER_IS_LITTLE_ENDIAN
-+ * this macro defines byte order of input stream.
-+ * HASH_CBLOCK
-+ * size of a unit chunk HASH_BLOCK operates on.
-+ * HASH_LONG
-+ * has to be at lest 32 bit wide, if it's wider, then
-+ * HASH_LONG_LOG2 *has to* be defined along
-+ * HASH_CTX
-+ * context structure that at least contains following
-+ * members:
-+ * typedef struct {
-+ * ...
-+ * HASH_LONG Nl,Nh;
-+ * HASH_LONG data[HASH_LBLOCK];
-+ * int num;
-+ * ...
-+ * } HASH_CTX;
-+ * HASH_UPDATE
-+ * name of "Update" function, implemented here.
-+ * HASH_TRANSFORM
-+ * name of "Transform" function, implemented here.
-+ * HASH_FINAL
-+ * name of "Final" function, implemented here.
-+ * HASH_BLOCK_HOST_ORDER
-+ * name of "block" function treating *aligned* input message
-+ * in host byte order, implemented externally.
-+ * HASH_BLOCK_DATA_ORDER
-+ * name of "block" function treating *unaligned* input message
-+ * in original (data) byte order, implemented externally (it
-+ * actually is optional if data and host are of the same
-+ * "endianess").
-+ * HASH_MAKE_STRING
-+ * macro convering context variables to an ASCII hash string.
-+ *
-+ * Optional macros:
-+ *
-+ * B_ENDIAN or L_ENDIAN
-+ * defines host byte-order.
-+ * HASH_LONG_LOG2
-+ * defaults to 2 if not states otherwise.
-+ * HASH_LBLOCK
-+ * assumed to be HASH_CBLOCK/4 if not stated otherwise.
-+ * HASH_BLOCK_DATA_ORDER_ALIGNED
-+ * alternative "block" function capable of treating
-+ * aligned input message in original (data) order,
-+ * implemented externally.
-+ *
-+ * MD5 example:
-+ *
-+ * #define DATA_ORDER_IS_LITTLE_ENDIAN
-+ *
-+ * #define HASH_LONG MD5_LONG
-+ * #define HASH_LONG_LOG2 MD5_LONG_LOG2
-+ * #define HASH_CTX MD5_CTX
-+ * #define HASH_CBLOCK MD5_CBLOCK
-+ * #define HASH_LBLOCK MD5_LBLOCK
-+ * #define HASH_UPDATE MD5_Update
-+ * #define HASH_TRANSFORM MD5_Transform
-+ * #define HASH_FINAL MD5_Final
-+ * #define HASH_BLOCK_HOST_ORDER md5_block_host_order
-+ * #define HASH_BLOCK_DATA_ORDER md5_block_data_order
-+ *
-+ * <appro@fy.chalmers.se>
-+ */
-+
-+#if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN)
-+#error "DATA_ORDER must be defined!"
-+#endif
-+
-+#ifndef HASH_CBLOCK
-+#error "HASH_CBLOCK must be defined!"
-+#endif
-+#ifndef HASH_LONG
-+#error "HASH_LONG must be defined!"
-+#endif
-+#ifndef HASH_CTX
-+#error "HASH_CTX must be defined!"
-+#endif
-+
-+#ifndef HASH_UPDATE
-+#error "HASH_UPDATE must be defined!"
-+#endif
-+#ifndef HASH_TRANSFORM
-+#error "HASH_TRANSFORM must be defined!"
-+#endif
-+#ifndef HASH_FINAL
-+#error "HASH_FINAL must be defined!"
-+#endif
-+
-+#ifndef HASH_BLOCK_HOST_ORDER
-+#error "HASH_BLOCK_HOST_ORDER must be defined!"
-+#endif
-+
-+#if 0
-+/*
-+ * Moved below as it's required only if HASH_BLOCK_DATA_ORDER_ALIGNED
-+ * isn't defined.
-+ */
-+#ifndef HASH_BLOCK_DATA_ORDER
-+#error "HASH_BLOCK_DATA_ORDER must be defined!"
-+#endif
-+#endif
-+
-+#ifndef HASH_LBLOCK
-+#define HASH_LBLOCK (HASH_CBLOCK/4)
-+#endif
-+
-+#ifndef HASH_LONG_LOG2
-+#define HASH_LONG_LOG2 2
-+#endif
-+
-+/*
-+ * Engage compiler specific rotate intrinsic function if available.
-+ */
-+#undef ROTATE
-+#ifndef PEDANTIC
-+# if defined(_MSC_VER)
-+# define ROTATE(a,n) _lrotl(a,n)
-+# elif defined(__MWERKS__)
-+# if defined(__POWERPC__)
-+# define ROTATE(a,n) __rlwinm(a,n,0,31)
-+# elif defined(__MC68K__)
-+ /* Motorola specific tweak. <appro@fy.chalmers.se> */
-+# define ROTATE(a,n) ( n<24 ? __rol(a,n) : __ror(a,32-n) )
-+# else
-+# define ROTATE(a,n) __rol(a,n)
-+# endif
-+# elif defined(__GNUC__) && __GNUC__>=2 && !defined(NO_ASM) && !defined(NO_INLINE_ASM)
-+ /*
-+ * Some GNU C inline assembler templates. Note that these are
-+ * rotates by *constant* number of bits! But that's exactly
-+ * what we need here...
-+ *
-+ * <appro@fy.chalmers.se>
-+ */
-+# if defined(__i386)
-+# define ROTATE(a,n) ({ register unsigned int ret; \
-+ asm ( \
-+ "roll %1,%0" \
-+ : "=r"(ret) \
-+ : "I"(n), "0"(a) \
-+ : "cc"); \
-+ ret; \
-+ })
-+# elif defined(__powerpc) || defined(__ppc)
-+# define ROTATE(a,n) ({ register unsigned int ret; \
-+ asm ( \
-+ "rlwinm %0,%1,%2,0,31" \
-+ : "=r"(ret) \
-+ : "r"(a), "I"(n)); \
-+ ret; \
-+ })
-+# endif
-+# endif
-+
-+/*
-+ * Engage compiler specific "fetch in reverse byte order"
-+ * intrinsic function if available.
-+ */
-+# if defined(__GNUC__) && __GNUC__>=2 && !defined(NO_ASM) && !defined(NO_INLINE_ASM)
-+ /* some GNU C inline assembler templates by <appro@fy.chalmers.se> */
-+# if defined(__i386) && !defined(I386_ONLY)
-+# define BE_FETCH32(a) ({ register unsigned int l=(a);\
-+ asm ( \
-+ "bswapl %0" \
-+ : "=r"(l) : "0"(l)); \
-+ l; \
-+ })
-+# elif defined(__powerpc)
-+# define LE_FETCH32(a) ({ register unsigned int l; \
-+ asm ( \
-+ "lwbrx %0,0,%1" \
-+ : "=r"(l) \
-+ : "r"(a)); \
-+ l; \
-+ })
-+
-+# elif defined(__sparc) && defined(ULTRASPARC)
-+# define LE_FETCH32(a) ({ register unsigned int l; \
-+ asm ( \
-+ "lda [%1]#ASI_PRIMARY_LITTLE,%0"\
-+ : "=r"(l) \
-+ : "r"(a)); \
-+ l; \
-+ })
-+# endif
-+# endif
-+#endif /* PEDANTIC */
-+
-+#if HASH_LONG_LOG2==2 /* Engage only if sizeof(HASH_LONG)== 4 */
-+/* A nice byte order reversal from Wei Dai <weidai@eskimo.com> */
-+#ifdef ROTATE
-+/* 5 instructions with rotate instruction, else 9 */
-+#define REVERSE_FETCH32(a,l) ( \
-+ l=*(const HASH_LONG *)(a), \
-+ ((ROTATE(l,8)&0x00FF00FF)|(ROTATE((l&0x00FF00FF),24))) \
-+ )
-+#else
-+/* 6 instructions with rotate instruction, else 8 */
-+#define REVERSE_FETCH32(a,l) ( \
-+ l=*(const HASH_LONG *)(a), \
-+ l=(((l>>8)&0x00FF00FF)|((l&0x00FF00FF)<<8)), \
-+ ROTATE(l,16) \
-+ )
-+/*
-+ * Originally the middle line started with l=(((l&0xFF00FF00)>>8)|...
-+ * It's rewritten as above for two reasons:
-+ * - RISCs aren't good at long constants and have to explicitely
-+ * compose 'em with several (well, usually 2) instructions in a
-+ * register before performing the actual operation and (as you
-+ * already realized:-) having same constant should inspire the
-+ * compiler to permanently allocate the only register for it;
-+ * - most modern CPUs have two ALUs, but usually only one has
-+ * circuitry for shifts:-( this minor tweak inspires compiler
-+ * to schedule shift instructions in a better way...
-+ *
-+ * <appro@fy.chalmers.se>
-+ */
-+#endif
-+#endif
-+
-+#ifndef ROTATE
-+#define ROTATE(a,n) (((a)<<(n))|(((a)&0xffffffff)>>(32-(n))))
-+#endif
-+
-+/*
-+ * Make some obvious choices. E.g., HASH_BLOCK_DATA_ORDER_ALIGNED
-+ * and HASH_BLOCK_HOST_ORDER ought to be the same if input data
-+ * and host are of the same "endianess". It's possible to mask
-+ * this with blank #define HASH_BLOCK_DATA_ORDER though...
-+ *
-+ * <appro@fy.chalmers.se>
-+ */
-+#if defined(B_ENDIAN)
-+# if defined(DATA_ORDER_IS_BIG_ENDIAN)
-+# if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED) && HASH_LONG_LOG2==2
-+# define HASH_BLOCK_DATA_ORDER_ALIGNED HASH_BLOCK_HOST_ORDER
-+# endif
-+# elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
-+# ifndef HOST_FETCH32
-+# ifdef LE_FETCH32
-+# define HOST_FETCH32(p,l) LE_FETCH32(p)
-+# elif defined(REVERSE_FETCH32)
-+# define HOST_FETCH32(p,l) REVERSE_FETCH32(p,l)
-+# endif
-+# endif
-+# endif
-+#elif defined(L_ENDIAN)
-+# if defined(DATA_ORDER_IS_LITTLE_ENDIAN)
-+# if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED) && HASH_LONG_LOG2==2
-+# define HASH_BLOCK_DATA_ORDER_ALIGNED HASH_BLOCK_HOST_ORDER
-+# endif
-+# elif defined(DATA_ORDER_IS_BIG_ENDIAN)
-+# ifndef HOST_FETCH32
-+# ifdef BE_FETCH32
-+# define HOST_FETCH32(p,l) BE_FETCH32(p)
-+# elif defined(REVERSE_FETCH32)
-+# define HOST_FETCH32(p,l) REVERSE_FETCH32(p,l)
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED)
-+#ifndef HASH_BLOCK_DATA_ORDER
-+#error "HASH_BLOCK_DATA_ORDER must be defined!"
-+#endif
-+#endif
-+
-+#if defined(DATA_ORDER_IS_BIG_ENDIAN)
-+
-+#define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \
-+ l|=(((unsigned long)(*((c)++)))<<16), \
-+ l|=(((unsigned long)(*((c)++)))<< 8), \
-+ l|=(((unsigned long)(*((c)++))) ), \
-+ l)
-+#define HOST_p_c2l(c,l,n) { \
-+ switch (n) { \
-+ case 0: l =((unsigned long)(*((c)++)))<<24; \
-+ case 1: l|=((unsigned long)(*((c)++)))<<16; \
-+ case 2: l|=((unsigned long)(*((c)++)))<< 8; \
-+ case 3: l|=((unsigned long)(*((c)++))); \
-+ } }
-+#define HOST_p_c2l_p(c,l,sc,len) { \
-+ switch (sc) { \
-+ case 0: l =((unsigned long)(*((c)++)))<<24; \
-+ if (--len == 0) break; \
-+ case 1: l|=((unsigned long)(*((c)++)))<<16; \
-+ if (--len == 0) break; \
-+ case 2: l|=((unsigned long)(*((c)++)))<< 8; \
-+ } }
-+/* NOTE the pointer is not incremented at the end of this */
-+#define HOST_c2l_p(c,l,n) { \
-+ l=0; (c)+=n; \
-+ switch (n) { \
-+ case 3: l =((unsigned long)(*(--(c))))<< 8; \
-+ case 2: l|=((unsigned long)(*(--(c))))<<16; \
-+ case 1: l|=((unsigned long)(*(--(c))))<<24; \
-+ } }
-+#define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \
-+ *((c)++)=(unsigned char)(((l)>>16)&0xff), \
-+ *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
-+ *((c)++)=(unsigned char)(((l) )&0xff), \
-+ l)
-+
-+#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
-+
-+#define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++))) ), \
-+ l|=(((unsigned long)(*((c)++)))<< 8), \
-+ l|=(((unsigned long)(*((c)++)))<<16), \
-+ l|=(((unsigned long)(*((c)++)))<<24), \
-+ l)
-+#define HOST_p_c2l(c,l,n) { \
-+ switch (n) { \
-+ case 0: l =((unsigned long)(*((c)++))); \
-+ case 1: l|=((unsigned long)(*((c)++)))<< 8; \
-+ case 2: l|=((unsigned long)(*((c)++)))<<16; \
-+ case 3: l|=((unsigned long)(*((c)++)))<<24; \
-+ } }
-+#define HOST_p_c2l_p(c,l,sc,len) { \
-+ switch (sc) { \
-+ case 0: l =((unsigned long)(*((c)++))); \
-+ if (--len == 0) break; \
-+ case 1: l|=((unsigned long)(*((c)++)))<< 8; \
-+ if (--len == 0) break; \
-+ case 2: l|=((unsigned long)(*((c)++)))<<16; \
-+ } }
-+/* NOTE the pointer is not incremented at the end of this */
-+#define HOST_c2l_p(c,l,n) { \
-+ l=0; (c)+=n; \
-+ switch (n) { \
-+ case 3: l =((unsigned long)(*(--(c))))<<16; \
-+ case 2: l|=((unsigned long)(*(--(c))))<< 8; \
-+ case 1: l|=((unsigned long)(*(--(c)))); \
-+ } }
-+#define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
-+ *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
-+ *((c)++)=(unsigned char)(((l)>>16)&0xff), \
-+ *((c)++)=(unsigned char)(((l)>>24)&0xff), \
-+ l)
-+
-+#endif
-+
-+/*
-+ * Time for some action:-)
-+ */
-+
-+void HASH_UPDATE (HASH_CTX *c, const void *data_, unsigned long len)
-+ {
-+ const unsigned char *data=data_;
-+ register HASH_LONG * p;
-+ register unsigned long l;
-+ int sw,sc,ew,ec;
-+
-+ if (len==0) return;
-+
-+ l=(c->Nl+(len<<3))&0xffffffffL;
-+ /* 95-05-24 eay Fixed a bug with the overflow handling, thanks to
-+ * Wei Dai <weidai@eskimo.com> for pointing it out. */
-+ if (l < c->Nl) /* overflow */
-+ c->Nh++;
-+ c->Nh+=(len>>29);
-+ c->Nl=l;
-+
-+ if (c->num != 0)
-+ {
-+ p=c->data;
-+ sw=c->num>>2;
-+ sc=c->num&0x03;
-+
-+ if ((c->num+len) >= HASH_CBLOCK)
-+ {
-+ l=p[sw]; HOST_p_c2l(data,l,sc); p[sw++]=l;
-+ for (; sw<HASH_LBLOCK; sw++)
-+ {
-+ HOST_c2l(data,l); p[sw]=l;
-+ }
-+ HASH_BLOCK_HOST_ORDER (c,p,1);
-+ len-=(HASH_CBLOCK-c->num);
-+ c->num=0;
-+ /* drop through and do the rest */
-+ }
-+ else
-+ {
-+ c->num+=len;
-+ if ((sc+len) < 4) /* ugly, add char's to a word */
-+ {
-+ l=p[sw]; HOST_p_c2l_p(data,l,sc,len); p[sw]=l;
-+ }
-+ else
-+ {
-+ ew=(c->num>>2);
-+ ec=(c->num&0x03);
-+ l=p[sw]; HOST_p_c2l(data,l,sc); p[sw++]=l;
-+ for (; sw < ew; sw++)
-+ {
-+ HOST_c2l(data,l); p[sw]=l;
-+ }
-+ if (ec)
-+ {
-+ HOST_c2l_p(data,l,ec); p[sw]=l;
-+ }
-+ }
-+ return;
-+ }
-+ }
-+
-+ sw=len/HASH_CBLOCK;
-+ if (sw > 0)
-+ {
-+#if defined(HASH_BLOCK_DATA_ORDER_ALIGNED)
-+ /*
-+ * Note that HASH_BLOCK_DATA_ORDER_ALIGNED gets defined
-+ * only if sizeof(HASH_LONG)==4.
-+ */
-+ if ((((unsigned long)data)%4) == 0)
-+ {
-+ /* data is properly aligned so that we can cast it: */
-+ HASH_BLOCK_DATA_ORDER_ALIGNED (c,(HASH_LONG *)data,sw);
-+ sw*=HASH_CBLOCK;
-+ data+=sw;
-+ len-=sw;
-+ }
-+ else
-+#if !defined(HASH_BLOCK_DATA_ORDER)
-+ while (sw--)
-+ {
-+ memcpy (p=c->data,data,HASH_CBLOCK);
-+ HASH_BLOCK_DATA_ORDER_ALIGNED(c,p,1);
-+ data+=HASH_CBLOCK;
-+ len-=HASH_CBLOCK;
-+ }
-+#endif
-+#endif
-+#if defined(HASH_BLOCK_DATA_ORDER)
-+ {
-+ HASH_BLOCK_DATA_ORDER(c,data,sw);
-+ sw*=HASH_CBLOCK;
-+ data+=sw;
-+ len-=sw;
-+ }
-+#endif
-+ }
-+
-+ if (len!=0)
-+ {
-+ p = c->data;
-+ c->num = len;
-+ ew=len>>2; /* words to copy */
-+ ec=len&0x03;
-+ for (; ew; ew--,p++)
-+ {
-+ HOST_c2l(data,l); *p=l;
-+ }
-+ HOST_c2l_p(data,l,ec);
-+ *p=l;
-+ }
-+ }
-+
-+
-+void HASH_TRANSFORM (HASH_CTX *c, const unsigned char *data)
-+ {
-+#if defined(HASH_BLOCK_DATA_ORDER_ALIGNED)
-+ if ((((unsigned long)data)%4) == 0)
-+ /* data is properly aligned so that we can cast it: */
-+ HASH_BLOCK_DATA_ORDER_ALIGNED (c,(HASH_LONG *)data,1);
-+ else
-+#if !defined(HASH_BLOCK_DATA_ORDER)
-+ {
-+ memcpy (c->data,data,HASH_CBLOCK);
-+ HASH_BLOCK_DATA_ORDER_ALIGNED (c,c->data,1);
-+ }
-+#endif
-+#endif
-+#if defined(HASH_BLOCK_DATA_ORDER)
-+ HASH_BLOCK_DATA_ORDER (c,data,1);
-+#endif
-+ }
-+
-+
-+void HASH_FINAL (unsigned char *md, HASH_CTX *c)
-+ {
-+ register HASH_LONG *p;
-+ register unsigned long l;
-+ register int i,j;
-+ static const unsigned char end[4]={0x80,0x00,0x00,0x00};
-+ const unsigned char *cp=end;
-+
-+ /* c->num should definitly have room for at least one more byte. */
-+ p=c->data;
-+ i=c->num>>2;
-+ j=c->num&0x03;
-+
-+#if 0
-+ /* purify often complains about the following line as an
-+ * Uninitialized Memory Read. While this can be true, the
-+ * following p_c2l macro will reset l when that case is true.
-+ * This is because j&0x03 contains the number of 'valid' bytes
-+ * already in p[i]. If and only if j&0x03 == 0, the UMR will
-+ * occur but this is also the only time p_c2l will do
-+ * l= *(cp++) instead of l|= *(cp++)
-+ * Many thanks to Alex Tang <altitude@cic.net> for pickup this
-+ * 'potential bug' */
-+#ifdef PURIFY
-+ if (j==0) p[i]=0; /* Yeah, but that's not the way to fix it:-) */
-+#endif
-+ l=p[i];
-+#else
-+ l = (j==0) ? 0 : p[i];
-+#endif
-+ HOST_p_c2l(cp,l,j); p[i++]=l; /* i is the next 'undefined word' */
-+
-+ if (i>(HASH_LBLOCK-2)) /* save room for Nl and Nh */
-+ {
-+ if (i<HASH_LBLOCK) p[i]=0;
-+ HASH_BLOCK_HOST_ORDER (c,p,1);
-+ i=0;
-+ }
-+ for (; i<(HASH_LBLOCK-2); i++)
-+ p[i]=0;
-+
-+#if defined(DATA_ORDER_IS_BIG_ENDIAN)
-+ p[HASH_LBLOCK-2]=c->Nh;
-+ p[HASH_LBLOCK-1]=c->Nl;
-+#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
-+ p[HASH_LBLOCK-2]=c->Nl;
-+ p[HASH_LBLOCK-1]=c->Nh;
-+#endif
-+ HASH_BLOCK_HOST_ORDER (c,p,1);
-+
-+#ifndef HASH_MAKE_STRING
-+#error "HASH_MAKE_STRING must be defined!"
-+#else
-+ HASH_MAKE_STRING(c,md);
-+#endif
-+
-+ c->num=0;
-+ /* clear stuff, HASH_BLOCK may be leaving some stuff on the stack
-+ * but I'm not worried :-)
-+ memset((void *)c,0,sizeof(HASH_CTX));
-+ */
-+ }
-diff -Nur linux_c860_org/drivers/net/mppe.h linux/drivers/net/mppe.h
---- linux_c860_org/drivers/net/mppe.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/net/mppe.h 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,46 @@
-+#ifndef MPPE_H
-+#define MPPE_H
-+
-+typedef struct mppe_state {
-+ int us_unit; /* Interface unit number */
-+ u_char us_id; /* Current id */
-+ u_char us_allowed;
-+ int us_type;
-+ char *us_number; /* Telefone Number */
-+} mppe_state;
-+
-+
-+extern struct protent mppe_protent;
-+
-+#define MPPE_CONFOPTION 18
-+#define MPPC 0x01
-+#define MPPE_40BIT 0x20
-+#define MPPE_128BIT 0x40
-+
-+#define PPP_MPPE 0x00FD
-+#define PPP_MPPC PPP_MPPE
-+
-+#define MPPE_BIT_A 0x80
-+#define MPPE_BIT_B 0x40
-+#define MPPE_BIT_C 0x20
-+#define MPPE_BIT_D 0x10
-+#define MPPE_BIT_FLUSHED MPPE_BIT_A
-+#define MPPE_BIT_ENCRYPTED MPPE_BIT_D
-+#define MPPE_CCOUNT 0x0FFF
-+
-+#define MPPC_BIT_RESET MPPE_BIT_A
-+#define MPPC_BIT_FLUSH MPPE_BIT_B
-+#define MPPC_BIT_COMP MPPC_BIT_C
-+
-+#define MPPE_40_SALT0 0xD1
-+#define MPPE_40_SALT1 0x26
-+#define MPPE_40_SALT2 0x9E
-+
-+#define MPPE_MINLEN 4
-+
-+#define MPPE_REQ 1
-+#define MPPE_RESP 2
-+#define MPPE_ACK 3
-+
-+#endif
-+/*==FILEVERSION 970728==*/
-diff -Nur linux_c860_org/drivers/net/ppp_generic.c linux/drivers/net/ppp_generic.c
---- linux_c860_org/drivers/net/ppp_generic.c 2002-08-29 12:25:24.000000000 +0900
-+++ linux/drivers/net/ppp_generic.c 2004-06-10 21:09:10.000000000 +0900
-@@ -1014,7 +1014,10 @@
- /* try to do packet compression */
- if ((ppp->xstate & SC_COMP_RUN) && ppp->xc_state != 0
- && proto != PPP_LCP && proto != PPP_CCP) {
-- new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len,
-+ int comp_overhead = (ppp->xcomp->compress_proto == CI_MPPE) ?
-+ 4 : 0;
-+ new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len
-+ + comp_overhead,
- GFP_ATOMIC);
- if (new_skb == 0) {
- printk(KERN_ERR "PPP: no memory (comp pkt)\n");
-@@ -1027,7 +1030,8 @@
- /* compressor still expects A/C bytes in hdr */
- len = ppp->xcomp->compress(ppp->xc_state, skb->data - 2,
- new_skb->data, skb->len + 2,
-- ppp->dev->mtu + PPP_HDRLEN);
-+ ppp->dev->mtu + PPP_HDRLEN +
-+ comp_overhead);
- if (len > 0 && (ppp->flags & SC_CCP_UP)) {
- kfree_skb(skb);
- skb = new_skb;
-diff -Nur linux_c860_org/drivers/net/ppp_mppe.c linux/drivers/net/ppp_mppe.c
---- linux_c860_org/drivers/net/ppp_mppe.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/net/ppp_mppe.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,669 @@
-+/*
-+ * ==FILEVERSION 9906180==
-+ *
-+ * ppp_mppe.c - MPPE "compressor/decompressor" module.
-+ *
-+ * Copyright (c) 1994 ª¡rp«¡d Magos«¡nyi <mag@bunuel.tii.matav.hu>
-+ * All rights reserved.
-+ * Copyright (c) 1999 Tim Hockin, Cobalt Networks Inc. <thockin@cobaltnet.com>
-+ *
-+ * Permission to use, copy, modify, and distribute this software and its
-+ * documentation is hereby granted, provided that the above copyright
-+ * notice appears in all copies. This software is provided without any
-+ * warranty, express or implied. The Australian National University
-+ * makes no representations about the suitability of this software for
-+ * any purpose.
-+ *
-+ * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
-+ * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
-+ * THE AUSTRALIAN NATIONAL UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY
-+ * OF SUCH DAMAGE.
-+ *
-+ * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
-+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-+ * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
-+ * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
-+ * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
-+ * OR MODIFICATIONS.
-+ *
-+ * From: deflate.c,v 1.1 1996/01/18 03:17:48 paulus Exp
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/in.h>
-+#include <linux/malloc.h>
-+
-+#undef VERSION
-+/* a nice define to generate linux version numbers */
-+#define VERSION(major,minor,patch) (((((major)<<8)+(minor))<<8)+(patch))
-+
-+#if LINUX_VERSION_CODE >= VERSION(2,1,4)
-+#include <linux/vmalloc.h>
-+#endif
-+#include <linux/errno.h>
-+#include <linux/sched.h> /* to get the struct task_struct */
-+#include <linux/string.h> /* used in new tty drivers */
-+#include <linux/signal.h> /* used in new tty drivers */
-+
-+#include <asm/system.h>
-+
-+#include <linux/netdevice.h>
-+#include <linux/skbuff.h>
-+#include <linux/inet.h>
-+#include <linux/ioctl.h>
-+
-+#include <linux/ppp_defs.h>
-+#include <linux/ppp-comp.h>
-+#include "rc4_enc.c"
-+#include "rc4_skey.c"
-+#include "sha1dgst.c"
-+#include "mppe.h"
-+
-+/*
-+ * State for a mppe "(de)compressor".
-+ */
-+struct ppp_mppe_state {
-+ unsigned int ccount; /*coherency count */
-+ RC4_KEY RC4_send_key; /* chap-ms-v2 dictates 2 keys */
-+ RC4_KEY RC4_recv_key;
-+ unsigned char session_send_key[16];
-+ unsigned char session_recv_key[16];
-+ unsigned char master_send_key[16];
-+ unsigned char master_recv_key[16];
-+ int keylen;
-+ int stateless;
-+ int decomp_error;
-+ unsigned int bits;
-+ int unit;
-+ int debug;
-+ int mru;
-+ struct compstat stats;
-+};
-+
-+#define MPPE_CCOUNT_FROM_PACKET(ibuf) ((((ibuf)[4] & 0x0f) << 8) + (ibuf)[5])
-+#define MPPE_BITS(ibuf) ((ibuf)[4] & 0xf0 )
-+#define MPPE_CTRLHI(state) ((((state)->ccount & 0xf00)>>8)|((state)->bits))
-+#define MPPE_CTRLLO(state) ((state)->ccount & 0xff)
-+
-+#define MPPE_OVHD 4
-+
-+/* Procedures from the MPPE draft */
-+
-+/*
-+ * Pads used in key derivation
-+ */
-+static unsigned char SHAPad1[40] =
-+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-+static unsigned char SHAPad2[40] =
-+ {0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2,
-+ 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2,
-+ 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2,
-+ 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2};
-+
-+/*
-+ * SHAInit(), SHAUpdate() and SHAFinal() functions are an
-+ * implementation of Secure Hash Algorithm (SHA-1) [7]. These are
-+ * available in public domain or can be licensed from
-+ * RSA Data Security, Inc.
-+ *
-+ * 1) H is 8 bytes long for 40 bit session keys.
-+ * 2) H is 16 bytes long for 128 bit session keys.
-+ * 3) H' is same as H when this routine is called for the first time
-+ * for the session.
-+ * 4) The generated key is returned in H'. This is the "current" key.
-+ */
-+static void
-+GetNewKeyFromSHA(StartKey, SessionKey, SessionKeyLength, InterimKey)
-+ unsigned char *StartKey;
-+ unsigned char *SessionKey;
-+ unsigned long SessionKeyLength;
-+ unsigned char *InterimKey;
-+{
-+ SHA_CTX Context;
-+ unsigned char Digest[SHA_DIGEST_LENGTH];
-+
-+ SHA1_Init(&Context);
-+ SHA1_Update(&Context, StartKey, SessionKeyLength);
-+ SHA1_Update(&Context, SHAPad1, 40);
-+ SHA1_Update(&Context, SessionKey, SessionKeyLength);
-+ SHA1_Update(&Context, SHAPad2, 40);
-+ SHA1_Final(Digest,&Context);
-+ memcpy(InterimKey, Digest, SessionKeyLength);
-+}
-+
-+static void
-+mppe_synchronize_key(struct ppp_mppe_state *state)
-+{
-+ /* get new keys and flag our state as such */
-+ RC4_set_key(&(state->RC4_send_key),state->keylen,state->session_send_key);
-+ RC4_set_key(&(state->RC4_recv_key),state->keylen,state->session_recv_key);
-+
-+ state->bits=MPPE_BIT_FLUSHED|MPPE_BIT_ENCRYPTED;
-+}
-+
-+
-+static void
-+mppe_initialize_key(struct ppp_mppe_state *state)
-+{
-+ /* generate new session keys */
-+ GetNewKeyFromSHA(state->master_send_key, state->master_send_key,
-+ state->keylen, state->session_send_key);
-+ GetNewKeyFromSHA(state->master_recv_key, state->master_recv_key,
-+ state->keylen, state->session_recv_key);
-+
-+ if(state->keylen == 8) {
-+ /* cripple them from 64bit->40bit */
-+ state->session_send_key[0]=state->session_recv_key[0] = MPPE_40_SALT0;
-+ state->session_send_key[1]=state->session_recv_key[1] = MPPE_40_SALT1;
-+ state->session_send_key[2]=state->session_recv_key[2] = MPPE_40_SALT2;
-+ }
-+
-+ mppe_synchronize_key(state);
-+}
-+
-+
-+static void
-+mppe_change_key(struct ppp_mppe_state *state)
-+{
-+ unsigned char InterimSendKey[16];
-+ unsigned char InterimRecvKey[16];
-+
-+ /* get temp keys */
-+ GetNewKeyFromSHA(state->master_send_key, state->session_send_key,
-+ state->keylen, InterimSendKey);
-+ GetNewKeyFromSHA(state->master_recv_key, state->session_recv_key,
-+ state->keylen, InterimRecvKey);
-+
-+ /* build RC4 keys from the temp keys */
-+ RC4_set_key(&(state->RC4_send_key), state->keylen, InterimSendKey);
-+ RC4_set_key(&(state->RC4_recv_key), state->keylen, InterimRecvKey);
-+
-+ /* make new session keys */
-+ RC4(&(state->RC4_send_key), state->keylen, InterimSendKey,
-+ state->session_send_key);
-+ RC4(&(state->RC4_recv_key), state->keylen, InterimRecvKey,
-+ state->session_recv_key);
-+
-+ if(state->keylen == 8)
-+ {
-+ /* cripple them from 64->40 bits*/
-+ state->session_send_key[0]=state->session_recv_key[0] = MPPE_40_SALT0;
-+ state->session_send_key[1]=state->session_recv_key[1] = MPPE_40_SALT1;
-+ state->session_send_key[2]=state->session_recv_key[2] = MPPE_40_SALT2;
-+ }
-+
-+ /* make the final rc4 keys */
-+ RC4_set_key(&(state->RC4_send_key), state->keylen, state->session_send_key);
-+ RC4_set_key(&(state->RC4_recv_key), state->keylen, state->session_recv_key);
-+
-+ state->bits |= MPPE_BIT_FLUSHED;
-+}
-+
-+
-+#ifdef DEBUG
-+/* Utility procedures to print a buffer in hex/ascii */
-+static void
-+ppp_print_hex (register __u8 *out, const __u8 *in, int count)
-+{
-+ register __u8 next_ch;
-+ static char hex[] = "0123456789ABCDEF";
-+
-+ while (count-- > 0) {
-+ next_ch = *in++;
-+ *out++ = hex[(next_ch >> 4) & 0x0F];
-+ *out++ = hex[next_ch & 0x0F];
-+ ++out;
-+ }
-+}
-+
-+
-+static void
-+ppp_print_char (register __u8 *out, const __u8 *in, int count)
-+{
-+ register __u8 next_ch;
-+
-+ while (count-- > 0) {
-+ next_ch = *in++;
-+
-+ if (next_ch < 0x20 || next_ch > 0x7e)
-+ *out++ = '.';
-+ else {
-+ *out++ = next_ch;
-+ if (next_ch == '%') /* printk/syslogd has a bug !! */
-+ *out++ = '%';
-+ }
-+ }
-+ *out = '\0';
-+}
-+
-+
-+static void
-+ppp_print_buffer (const __u8 *name, const __u8 *buf, int count)
-+{
-+ __u8 line[44];
-+
-+ if (name != (__u8 *) NULL)
-+ printk (KERN_DEBUG "ppp: %s, count = %d\n", name, count);
-+
-+ while (count > 8) {
-+ memset (line, 32, 44);
-+ ppp_print_hex (line, buf, 8);
-+ ppp_print_char (&line[8 * 3], buf, 8);
-+ printk (KERN_DEBUG "%s\n", line);
-+ count -= 8;
-+ buf += 8;
-+ }
-+
-+ if (count > 0) {
-+ memset (line, 32, 44);
-+ ppp_print_hex (line, buf, count);
-+ ppp_print_char (&line[8 * 3], buf, count);
-+ printk (KERN_DEBUG "%s\n", line);
-+ }
-+}
-+#endif
-+
-+/* our 'compressor' proper */
-+static void *mppe_comp_alloc __P((unsigned char *, int));
-+static void mppe_comp_free __P((void *));
-+static int mppe_comp_init __P((void *, unsigned char *,
-+ int, int, int, int));
-+static int mppe_decomp_init __P((void *, unsigned char *,
-+ int, int, int, int, int));
-+static int mppe_compress __P((void *, unsigned char *,
-+ unsigned char *, int, int));
-+static void mppe_incomp __P((void *, unsigned char *, int));
-+static int mppe_decompress __P((void *, unsigned char *,
-+ int, unsigned char *, int));
-+static void mppe_comp_reset __P((void *));
-+static void mppe_comp_stats __P((void *, struct compstat *));
-+
-+
-+/* cleanup the compressor */
-+static void
-+mppe_comp_free(void *arg)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
-+
-+ if (state) {
-+ kfree(state);
-+ MOD_DEC_USE_COUNT;
-+ }
-+}
-+
-+
-+/* allocate space for a compressor. */
-+static void *
-+mppe_comp_alloc(unsigned char *options, int opt_len)
-+{
-+ struct ppp_mppe_state *state;
-+
-+ if (((2*8)+3 != opt_len && (2*16)+3 != opt_len) /* 2 keys + 3 */
-+ || options[0] != CI_MPPE || options[1] != CILEN_MPPE) {
-+ printk(KERN_DEBUG "compress rejected: opt_len=%u,o[0]=%x,o[1]=%x\n",
-+ opt_len,options[0],options[1]);
-+ return NULL;
-+ }
-+
-+ state = (struct ppp_mppe_state *)kmalloc(sizeof(*state), GFP_KERNEL);
-+ if (state == NULL)
-+ return NULL;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ memset (state, 0, sizeof (struct ppp_mppe_state));
-+
-+ /* write the data in options to the right places */
-+ memcpy(&state->stateless,options+2,1);
-+
-+ state->keylen = (opt_len-3)/2;
-+ memcpy(state->master_send_key,options+3,state->keylen);
-+ memcpy(state->master_recv_key,options+3+state->keylen,state->keylen);
-+
-+ mppe_initialize_key(state);
-+
-+ return (void *) state;
-+}
-+
-+
-+static int
-+mppe_comp_init(void *arg, unsigned char *options, int opt_len, int unit,
-+ int hdrlen, int debug)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+
-+ if (options[0] != CI_MPPE || options[1] != CILEN_MPPE) {
-+ printk(KERN_DEBUG "compress rejected: opt_len=%u,o[0]=%x,o[1]=%x\n",
-+ opt_len,options[0],options[1]);
-+ return 0;
-+ }
-+
-+ state->ccount = 0;
-+ state->unit = unit;
-+ state->debug = debug;
-+
-+ /* 19 is the min (2*keylen) + 3 */
-+ if(opt_len >= 19) {
-+ memcpy(&state->stateless,options+2,1);
-+
-+ state->keylen = (opt_len-3)/2;
-+ memcpy(state->master_send_key,options+3,state->keylen);
-+ memcpy(state->master_recv_key,options+3+state->keylen,state->keylen);
-+
-+ mppe_initialize_key(state);
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int
-+mppe_decomp_init(void *arg, unsigned char *options, int opt_len, int unit,
-+ int hdrlen, int mru, int debug)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+
-+ if (options[0] != CI_MPPE || options[1] != CILEN_MPPE) {
-+ printk(KERN_DEBUG"options are bad: %x %x\n",options[0],options[1]);
-+ return 0;
-+ }
-+
-+ state->ccount = 0;
-+ state->unit = unit;
-+ state->debug = debug;
-+ state->mru = mru;
-+
-+ /* 19 is the min (2*keylen)+3 */
-+ if(opt_len >= 19) {
-+ memcpy(&state->stateless,options+2,1);
-+
-+ state->keylen = (opt_len-3)/2;
-+ memcpy(state->master_send_key,options+3,state->keylen);
-+ memcpy(state->master_recv_key,options+3+state->keylen,state->keylen);
-+
-+ mppe_initialize_key(state);
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static void
-+mppe_comp_reset(void *arg)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+
-+ printk(KERN_DEBUG "mppe_comp_reset\n");
-+
-+ (state->stats).in_count = 0;
-+ (state->stats).bytes_out = 0;
-+ (state->stats).ratio = 0;
-+
-+ mppe_synchronize_key(state);
-+}
-+
-+
-+static void
-+mppe_update_count(struct ppp_mppe_state *state)
-+{
-+ if(!state->stateless)
-+ {
-+ if ( 0xff == (state->ccount&0xff)){
-+ /* time to change keys */
-+ if ( 0xfff == (state->ccount&0xfff)){
-+ state->ccount = 0;
-+ } else {
-+ (state->ccount)++;
-+ }
-+ mppe_change_key(state);
-+ } else {
-+ state->ccount++;
-+ }
-+ } else {
-+ if ( 0xFFF == (state->ccount & 0xFFF)) {
-+ state->ccount = 0;
-+ } else {
-+ (state->ccount)++;
-+ }
-+ mppe_change_key(state);
-+ }
-+}
-+
-+
-+/* the big nasty */
-+int
-+mppe_compress(void *arg, unsigned char *rptr, unsigned char *obuf,
-+ int isize, int osize)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
-+ int proto, olen;
-+ unsigned char *wptr;
-+
-+#ifdef DEBUG
-+ ppp_print_buffer("mppe_encrypt",rptr,isize);
-+#endif
-+
-+ if(osize < isize+MPPE_OVHD) {
-+ printk(KERN_DEBUG "Not enough space to encrypt packet: %d<%d+%d!\n",
-+ isize, osize, MPPE_OVHD);
-+ return 0;
-+ }
-+
-+ /* Check that the protocol is in the range we handle. */
-+ proto = PPP_PROTOCOL(rptr);
-+ if (proto < 0x0021 || proto > 0x00FA )
-+ return 0;
-+
-+ wptr = obuf;
-+
-+ /* Copy over the PPP header and store the 2-byte sequence number. */
-+ wptr[0] = PPP_ADDRESS(rptr);
-+ wptr[1] = PPP_CONTROL(rptr);
-+ wptr[2] = PPP_MPPE >>8;
-+ wptr[3] = PPP_MPPE;
-+ wptr += PPP_HDRLEN;
-+ wptr[0] = MPPE_CTRLHI(state);
-+ wptr[1] = MPPE_CTRLLO(state);
-+ wptr += 2;
-+
-+ state->bits=MPPE_BIT_ENCRYPTED;
-+ mppe_update_count(state);
-+
-+ /* read from rptr, write to wptr adjust for PPP_HDRLEN */
-+ RC4(&(state->RC4_send_key),isize-2,rptr+2,wptr);
-+ olen=isize+MPPE_OVHD;
-+
-+ (state->stats).comp_bytes += isize;
-+ (state->stats).comp_packets++;
-+
-+#ifdef DEBUG
-+ ppp_print_buffer("mppe_encrypt out",obuf,olen);
-+#endif
-+
-+ return olen;
-+}
-+
-+
-+static void
-+mppe_comp_stats(void *arg, struct compstat *stats)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+
-+ /* since we don't REALLY compress at all, this should be OK */
-+ (state->stats).in_count = (state->stats).unc_bytes;
-+ (state->stats).bytes_out = (state->stats).comp_bytes;
-+
-+ /* this _SHOULD_ always be 1 */
-+ (state->stats).ratio = 1.0;
-+// printk(" in count : %d , out bytes %d \n;",(state->stats).in_count,(state->stats).bytes_out);
-+
-+ *stats = state->stats;
-+
-+}
-+
-+
-+/* the other big nasty */
-+int
-+mppe_decompress(void *arg, unsigned char *ibuf, int isize,
-+ unsigned char *obuf, int osize)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+ int seq;
-+
-+ if (isize <= PPP_HDRLEN + MPPE_OVHD) {
-+ if (state->debug) {
-+ printk(KERN_DEBUG "mppe_decompress%d: short packet (len=%d)\n",
-+ state->unit, isize);
-+ }
-+
-+ return DECOMP_ERROR;
-+ }
-+
-+ /* Check the sequence number. */
-+ seq = MPPE_CCOUNT_FROM_PACKET(ibuf);
-+
-+ if(!state->stateless && (MPPE_BITS(ibuf) & MPPE_BIT_FLUSHED)) {
-+ state->decomp_error = 0;
-+ state->ccount = seq;
-+ }
-+
-+ if(state->decomp_error) {
-+ return DECOMP_ERROR;
-+ }
-+
-+ if (seq != state->ccount) {
-+ if (state->debug) {
-+ printk(KERN_DEBUG "mppe_decompress%d: bad seq # %d, expected %d\n",
-+ state->unit, seq, state->ccount);
-+ }
-+
-+ while(state->ccount != seq) {
-+ mppe_update_count(state);
-+ }
-+
-+ /*
-+ * Packets with bad sequence numbers can still be decrypted
-+ * successfully when stateless compression is in use.
-+ */
-+ if (!state->stateless) {
-+ mppe_update_count(state);
-+
-+ return DECOMP_ERROR;
-+ }
-+ }
-+
-+ /*
-+ * Fill in the first part of the PPP header. The protocol field
-+ * comes from the decompressed data.
-+ */
-+ obuf[0] = PPP_ADDRESS(ibuf);
-+ obuf[1] = PPP_CONTROL(ibuf);
-+ obuf += 2;
-+
-+ if(!(MPPE_BITS(ibuf) & MPPE_BIT_ENCRYPTED)) {
-+ printk(KERN_DEBUG"ERROR: not an encrypted packet");
-+ mppe_synchronize_key(state);
-+ return DECOMP_ERROR;
-+ } else {
-+ if(!state->stateless && (MPPE_BITS(ibuf) & MPPE_BIT_FLUSHED))
-+ mppe_synchronize_key(state);
-+ mppe_update_count(state);
-+
-+ /* decrypt - adjust for PPP_HDRLEN + MPPE_OVHD - mru should be OK */
-+ RC4(&(state->RC4_recv_key),isize-6,ibuf+6,obuf);
-+
-+ (state->stats).unc_bytes += (isize-MPPE_OVHD);
-+ (state->stats).unc_packets ++;
-+
-+ return isize-MPPE_OVHD;
-+ }
-+}
-+
-+
-+/* Incompressible data has arrived - add it to the history. */
-+static void
-+mppe_incomp(void *arg, unsigned char *ibuf, int icnt)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+
-+ (state->stats).inc_bytes += icnt;
-+ (state->stats).inc_packets++;
-+}
-+
-+/*
-+ * Help for Alpha users who have problems with undefined symbols on
-+ * module load
-+ */
-+#ifdef ALPHA
-+#include "../../arch/s390/kernel/floatlib.c"
-+#endif
-+
-+
-+/*************************************************************
-+ * Module interface table
-+ *************************************************************/
-+
-+/* These are in ppp.c */
-+extern int ppp_register_compressor (struct compressor *cp);
-+extern void ppp_unregister_compressor (struct compressor *cp);
-+
-+/*
-+ * Procedures exported to if_ppp.c.
-+ */
-+struct compressor ppp_mppe = {
-+ CI_MPPE, /* compress_proto */
-+ mppe_comp_alloc, /* comp_alloc */
-+ mppe_comp_free, /* comp_free */
-+ mppe_comp_init, /* comp_init */
-+ mppe_comp_reset, /* comp_reset */
-+ mppe_compress, /* compress */
-+ mppe_comp_stats, /* comp_stat */
-+ mppe_comp_alloc, /* decomp_alloc */
-+ mppe_comp_free, /* decomp_free */
-+ mppe_decomp_init, /* decomp_init */
-+ mppe_comp_reset, /* decomp_reset */
-+ mppe_decompress, /* decompress */
-+ mppe_incomp, /* incomp */
-+ mppe_comp_stats, /* decomp_stat */
-+};
-+
-+
-+#ifdef MODULE
-+/*************************************************************
-+ * Module support routines
-+ *************************************************************/
-+
-+int
-+init_module(void)
-+{
-+ int answer = ppp_register_compressor(&ppp_mppe);
-+ if (answer == 0) {
-+ printk(KERN_INFO "PPP MPPE compression module registered\n");
-+ }
-+ return answer;
-+}
-+
-+
-+void
-+cleanup_module(void)
-+{
-+ if (MOD_IN_USE) {
-+ printk (KERN_INFO "MPPE module busy, remove delayed\n");
-+ } else {
-+ ppp_unregister_compressor (&ppp_mppe);
-+ printk(KERN_INFO "PPP MPPE compression module unregistered\n");
-+ }
-+}
-+#endif /* MODULE */
-diff -Nur linux_c860_org/drivers/net/rc4_enc.c linux/drivers/net/rc4_enc.c
---- linux_c860_org/drivers/net/rc4_enc.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/net/rc4_enc.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,315 @@
-+/* crypto/rc4/rc4_enc.c */
-+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
-+ * All rights reserved.
-+ *
-+ * This package is an SSL implementation written
-+ * by Eric Young (eay@cryptsoft.com).
-+ * The implementation was written so as to conform with Netscapes SSL.
-+ *
-+ * This library is free for commercial and non-commercial use as long as
-+ * the following conditions are aheared to. The following conditions
-+ * apply to all code found in this distribution, be it the RC4, RSA,
-+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
-+ * included with this distribution is covered by the same copyright terms
-+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
-+ *
-+ * Copyright remains Eric Young's, and as such any Copyright notices in
-+ * the code are not to be removed.
-+ * If this package is used in a product, Eric Young should be given attribution
-+ * as the author of the parts of the library used.
-+ * This can be in the form of a textual message at program startup or
-+ * in documentation (online or textual) provided with the package.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * "This product includes cryptographic software written by
-+ * Eric Young (eay@cryptsoft.com)"
-+ * The word 'cryptographic' can be left out if the rouines from the library
-+ * being used are not cryptographic related :-).
-+ * 4. If you include any Windows specific code (or a derivative thereof) from
-+ * the apps directory (application code) you must include an acknowledgement:
-+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * The licence and distribution terms for any publically available version or
-+ * derivative of this code cannot be changed. i.e. this code cannot simply be
-+ * copied and put under another distribution licence
-+ * [including the GNU Public Licence.]
-+ */
-+
-+#include <openssl/rc4.h>
-+#include "rc4_locl.h"
-+
-+/* RC4 as implemented from a posting from
-+ * Newsgroups: sci.crypt
-+ * From: sterndark@netcom.com (David Sterndark)
-+ * Subject: RC4 Algorithm revealed.
-+ * Message-ID: <sternCvKL4B.Hyy@netcom.com>
-+ * Date: Wed, 14 Sep 1994 06:35:31 GMT
-+ */
-+
-+void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata,
-+ unsigned char *outdata)
-+ {
-+ register RC4_INT *d;
-+ register RC4_INT x,y,tx,ty;
-+ int i;
-+
-+ x=key->x;
-+ y=key->y;
-+ d=key->data;
-+
-+#if defined(RC4_CHUNK)
-+ /*
-+ * The original reason for implementing this(*) was the fact that
-+ * pre-21164a Alpha CPUs don't have byte load/store instructions
-+ * and e.g. a byte store has to be done with 64-bit load, shift,
-+ * and, or and finally 64-bit store. Peaking data and operating
-+ * at natural word size made it possible to reduce amount of
-+ * instructions as well as to perform early read-ahead without
-+ * suffering from RAW (read-after-write) hazard. This resulted
-+ * in ~40%(**) performance improvement on 21064 box with gcc.
-+ * But it's not only Alpha users who win here:-) Thanks to the
-+ * early-n-wide read-ahead this implementation also exhibits
-+ * >40% speed-up on SPARC and 20-30% on 64-bit MIPS (depending
-+ * on sizeof(RC4_INT)).
-+ *
-+ * (*) "this" means code which recognizes the case when input
-+ * and output pointers appear to be aligned at natural CPU
-+ * word boundary
-+ * (**) i.e. according to 'apps/openssl speed rc4' benchmark,
-+ * crypto/rc4/rc4speed.c exhibits almost 70% speed-up...
-+ *
-+ * Cavets.
-+ *
-+ * - RC4_CHUNK="unsigned long long" should be a #1 choice for
-+ * UltraSPARC. Unfortunately gcc generates very slow code
-+ * (2.5-3 times slower than one generated by Sun's WorkShop
-+ * C) and therefore gcc (at least 2.95 and earlier) should
-+ * always be told that RC4_CHUNK="unsigned long".
-+ *
-+ * <appro@fy.chalmers.se>
-+ */
-+
-+# define RC4_STEP ( \
-+ x=(x+1) &0xff, \
-+ tx=d[x], \
-+ y=(tx+y)&0xff, \
-+ ty=d[y], \
-+ d[y]=tx, \
-+ d[x]=ty, \
-+ (RC4_CHUNK)d[(tx+ty)&0xff]\
-+ )
-+
-+ if ( ( ((unsigned long)indata & (sizeof(RC4_CHUNK)-1)) |
-+ ((unsigned long)outdata & (sizeof(RC4_CHUNK)-1)) ) == 0 )
-+ {
-+ RC4_CHUNK ichunk,otp;
-+ const union { long one; char little; } is_endian = {1};
-+
-+ /*
-+ * I reckon we can afford to implement both endian
-+ * cases and to decide which way to take at run-time
-+ * because the machine code appears to be very compact
-+ * and redundant 1-2KB is perfectly tolerable (i.e.
-+ * in case the compiler fails to eliminate it:-). By
-+ * suggestion from Terrel Larson <terr@terralogic.net>
-+ * who also stands for the is_endian union:-)
-+ *
-+ * Special notes.
-+ *
-+ * - is_endian is declared automatic as doing otherwise
-+ * (declaring static) prevents gcc from eliminating
-+ * the redundant code;
-+ * - compilers (those I've tried) don't seem to have
-+ * problems eliminating either the operators guarded
-+ * by "if (sizeof(RC4_CHUNK)==8)" or the condition
-+ * expressions themselves so I've got 'em to replace
-+ * corresponding #ifdefs from the previous version;
-+ * - I chose to let the redundant switch cases when
-+ * sizeof(RC4_CHUNK)!=8 be (were also #ifdefed
-+ * before);
-+ * - in case you wonder "&(sizeof(RC4_CHUNK)*8-1)" in
-+ * [LB]ESHFT guards against "shift is out of range"
-+ * warnings when sizeof(RC4_CHUNK)!=8
-+ *
-+ * <appro@fy.chalmers.se>
-+ */
-+ if (!is_endian.little)
-+ { /* BIG-ENDIAN CASE */
-+# define BESHFT(c) (((sizeof(RC4_CHUNK)-(c)-1)*8)&(sizeof(RC4_CHUNK)*8-1))
-+ for (;len&-sizeof(RC4_CHUNK);len-=sizeof(RC4_CHUNK))
-+ {
-+ ichunk = *(RC4_CHUNK *)indata;
-+ otp = RC4_STEP<<BESHFT(0);
-+ otp |= RC4_STEP<<BESHFT(1);
-+ otp |= RC4_STEP<<BESHFT(2);
-+ otp |= RC4_STEP<<BESHFT(3);
-+ if (sizeof(RC4_CHUNK)==8)
-+ {
-+ otp |= RC4_STEP<<BESHFT(4);
-+ otp |= RC4_STEP<<BESHFT(5);
-+ otp |= RC4_STEP<<BESHFT(6);
-+ otp |= RC4_STEP<<BESHFT(7);
-+ }
-+ *(RC4_CHUNK *)outdata = otp^ichunk;
-+ indata += sizeof(RC4_CHUNK);
-+ outdata += sizeof(RC4_CHUNK);
-+ }
-+ if (len)
-+ {
-+ RC4_CHUNK mask=(RC4_CHUNK)-1, ochunk;
-+
-+ ichunk = *(RC4_CHUNK *)indata;
-+ ochunk = *(RC4_CHUNK *)outdata;
-+ otp = 0;
-+ i = BESHFT(0);
-+ mask <<= (sizeof(RC4_CHUNK)-len)<<3;
-+ switch (len&(sizeof(RC4_CHUNK)-1))
-+ {
-+ case 7: otp = RC4_STEP<<i, i-=8;
-+ case 6: otp |= RC4_STEP<<i, i-=8;
-+ case 5: otp |= RC4_STEP<<i, i-=8;
-+ case 4: otp |= RC4_STEP<<i, i-=8;
-+ case 3: otp |= RC4_STEP<<i, i-=8;
-+ case 2: otp |= RC4_STEP<<i, i-=8;
-+ case 1: otp |= RC4_STEP<<i, i-=8;
-+ case 0: ; /*
-+ * it's never the case,
-+ * but it has to be here
-+ * for ultrix?
-+ */
-+ }
-+ ochunk &= ~mask;
-+ ochunk |= (otp^ichunk) & mask;
-+ *(RC4_CHUNK *)outdata = ochunk;
-+ }
-+ key->x=x;
-+ key->y=y;
-+ return;
-+ }
-+ else
-+ { /* LITTLE-ENDIAN CASE */
-+# define LESHFT(c) (((c)*8)&(sizeof(RC4_CHUNK)*8-1))
-+ for (;len&-sizeof(RC4_CHUNK);len-=sizeof(RC4_CHUNK))
-+ {
-+ ichunk = *(RC4_CHUNK *)indata;
-+ otp = RC4_STEP;
-+ otp |= RC4_STEP<<8;
-+ otp |= RC4_STEP<<16;
-+ otp |= RC4_STEP<<24;
-+ if (sizeof(RC4_CHUNK)==8)
-+ {
-+ otp |= RC4_STEP<<LESHFT(4);
-+ otp |= RC4_STEP<<LESHFT(5);
-+ otp |= RC4_STEP<<LESHFT(6);
-+ otp |= RC4_STEP<<LESHFT(7);
-+ }
-+ *(RC4_CHUNK *)outdata = otp^ichunk;
-+ indata += sizeof(RC4_CHUNK);
-+ outdata += sizeof(RC4_CHUNK);
-+ }
-+ if (len)
-+ {
-+ RC4_CHUNK mask=(RC4_CHUNK)-1, ochunk;
-+
-+ ichunk = *(RC4_CHUNK *)indata;
-+ ochunk = *(RC4_CHUNK *)outdata;
-+ otp = 0;
-+ i = 0;
-+ mask >>= (sizeof(RC4_CHUNK)-len)<<3;
-+ switch (len&(sizeof(RC4_CHUNK)-1))
-+ {
-+ case 7: otp = RC4_STEP, i+=8;
-+ case 6: otp |= RC4_STEP<<i, i+=8;
-+ case 5: otp |= RC4_STEP<<i, i+=8;
-+ case 4: otp |= RC4_STEP<<i, i+=8;
-+ case 3: otp |= RC4_STEP<<i, i+=8;
-+ case 2: otp |= RC4_STEP<<i, i+=8;
-+ case 1: otp |= RC4_STEP<<i, i+=8;
-+ case 0: ; /*
-+ * it's never the case,
-+ * but it has to be here
-+ * for ultrix?
-+ */
-+ }
-+ ochunk &= ~mask;
-+ ochunk |= (otp^ichunk) & mask;
-+ *(RC4_CHUNK *)outdata = ochunk;
-+ }
-+ key->x=x;
-+ key->y=y;
-+ return;
-+ }
-+ }
-+#endif
-+#define LOOP(in,out) \
-+ x=((x+1)&0xff); \
-+ tx=d[x]; \
-+ y=(tx+y)&0xff; \
-+ d[x]=ty=d[y]; \
-+ d[y]=tx; \
-+ (out) = d[(tx+ty)&0xff]^ (in);
-+
-+#ifndef RC4_INDEX
-+#define RC4_LOOP(a,b,i) LOOP(*((a)++),*((b)++))
-+#else
-+#define RC4_LOOP(a,b,i) LOOP(a[i],b[i])
-+#endif
-+
-+ i=(int)(len>>3L);
-+ if (i)
-+ {
-+ for (;;)
-+ {
-+ RC4_LOOP(indata,outdata,0);
-+ RC4_LOOP(indata,outdata,1);
-+ RC4_LOOP(indata,outdata,2);
-+ RC4_LOOP(indata,outdata,3);
-+ RC4_LOOP(indata,outdata,4);
-+ RC4_LOOP(indata,outdata,5);
-+ RC4_LOOP(indata,outdata,6);
-+ RC4_LOOP(indata,outdata,7);
-+#ifdef RC4_INDEX
-+ indata+=8;
-+ outdata+=8;
-+#endif
-+ if (--i == 0) break;
-+ }
-+ }
-+ i=(int)len&0x07;
-+ if (i)
-+ {
-+ for (;;)
-+ {
-+ RC4_LOOP(indata,outdata,0); if (--i == 0) break;
-+ RC4_LOOP(indata,outdata,1); if (--i == 0) break;
-+ RC4_LOOP(indata,outdata,2); if (--i == 0) break;
-+ RC4_LOOP(indata,outdata,3); if (--i == 0) break;
-+ RC4_LOOP(indata,outdata,4); if (--i == 0) break;
-+ RC4_LOOP(indata,outdata,5); if (--i == 0) break;
-+ RC4_LOOP(indata,outdata,6); if (--i == 0) break;
-+ }
-+ }
-+ key->x=x;
-+ key->y=y;
-+ }
-diff -Nur linux_c860_org/drivers/net/rc4_locl.h linux/drivers/net/rc4_locl.h
---- linux_c860_org/drivers/net/rc4_locl.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/net/rc4_locl.h 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,4 @@
-+#ifndef HEADER_RC4_LOCL_H
-+#define HEADER_RC4_LOCL_H
-+#include <openssl/opensslconf.h>
-+#endif
-diff -Nur linux_c860_org/drivers/net/rc4_skey.c linux/drivers/net/rc4_skey.c
---- linux_c860_org/drivers/net/rc4_skey.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/net/rc4_skey.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,117 @@
-+/* crypto/rc4/rc4_skey.c */
-+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
-+ * All rights reserved.
-+ *
-+ * This package is an SSL implementation written
-+ * by Eric Young (eay@cryptsoft.com).
-+ * The implementation was written so as to conform with Netscapes SSL.
-+ *
-+ * This library is free for commercial and non-commercial use as long as
-+ * the following conditions are aheared to. The following conditions
-+ * apply to all code found in this distribution, be it the RC4, RSA,
-+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
-+ * included with this distribution is covered by the same copyright terms
-+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
-+ *
-+ * Copyright remains Eric Young's, and as such any Copyright notices in
-+ * the code are not to be removed.
-+ * If this package is used in a product, Eric Young should be given attribution
-+ * as the author of the parts of the library used.
-+ * This can be in the form of a textual message at program startup or
-+ * in documentation (online or textual) provided with the package.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * "This product includes cryptographic software written by
-+ * Eric Young (eay@cryptsoft.com)"
-+ * The word 'cryptographic' can be left out if the rouines from the library
-+ * being used are not cryptographic related :-).
-+ * 4. If you include any Windows specific code (or a derivative thereof) from
-+ * the apps directory (application code) you must include an acknowledgement:
-+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * The licence and distribution terms for any publically available version or
-+ * derivative of this code cannot be changed. i.e. this code cannot simply be
-+ * copied and put under another distribution licence
-+ * [including the GNU Public Licence.]
-+ */
-+
-+#include <openssl/rc4.h>
-+#include "rc4_locl.h"
-+#include <openssl/opensslv.h>
-+
-+const char *RC4_version="RC4" OPENSSL_VERSION_PTEXT;
-+
-+const char *RC4_options(void)
-+ {
-+#ifdef RC4_INDEX
-+ if (sizeof(RC4_INT) == 1)
-+ return("rc4(idx,char)");
-+ else
-+ return("rc4(idx,int)");
-+#else
-+ if (sizeof(RC4_INT) == 1)
-+ return("rc4(ptr,char)");
-+ else
-+ return("rc4(ptr,int)");
-+#endif
-+ }
-+
-+/* RC4 as implemented from a posting from
-+ * Newsgroups: sci.crypt
-+ * From: sterndark@netcom.com (David Sterndark)
-+ * Subject: RC4 Algorithm revealed.
-+ * Message-ID: <sternCvKL4B.Hyy@netcom.com>
-+ * Date: Wed, 14 Sep 1994 06:35:31 GMT
-+ */
-+
-+void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data)
-+ {
-+ register RC4_INT tmp;
-+ register int id1,id2;
-+ register RC4_INT *d;
-+ unsigned int i;
-+
-+ d= &(key->data[0]);
-+ for (i=0; i<256; i++)
-+ d[i]=i;
-+ key->x = 0;
-+ key->y = 0;
-+ id1=id2=0;
-+
-+#define SK_LOOP(n) { \
-+ tmp=d[(n)]; \
-+ id2 = (data[id1] + tmp + id2) & 0xff; \
-+ if (++id1 == len) id1=0; \
-+ d[(n)]=d[id2]; \
-+ d[id2]=tmp; }
-+
-+ for (i=0; i < 256; i+=4)
-+ {
-+ SK_LOOP(i+0);
-+ SK_LOOP(i+1);
-+ SK_LOOP(i+2);
-+ SK_LOOP(i+3);
-+ }
-+ }
-+
-diff -Nur linux_c860_org/drivers/net/sha1dgst.c linux/drivers/net/sha1dgst.c
---- linux_c860_org/drivers/net/sha1dgst.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/net/sha1dgst.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,73 @@
-+/* crypto/sha/sha1dgst.c */
-+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
-+ * All rights reserved.
-+ *
-+ * This package is an SSL implementation written
-+ * by Eric Young (eay@cryptsoft.com).
-+ * The implementation was written so as to conform with Netscapes SSL.
-+ *
-+ * This library is free for commercial and non-commercial use as long as
-+ * the following conditions are aheared to. The following conditions
-+ * apply to all code found in this distribution, be it the RC4, RSA,
-+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
-+ * included with this distribution is covered by the same copyright terms
-+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
-+ *
-+ * Copyright remains Eric Young's, and as such any Copyright notices in
-+ * the code are not to be removed.
-+ * If this package is used in a product, Eric Young should be given attribution
-+ * as the author of the parts of the library used.
-+ * This can be in the form of a textual message at program startup or
-+ * in documentation (online or textual) provided with the package.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * "This product includes cryptographic software written by
-+ * Eric Young (eay@cryptsoft.com)"
-+ * The word 'cryptographic' can be left out if the rouines from the library
-+ * being used are not cryptographic related :-).
-+ * 4. If you include any Windows specific code (or a derivative thereof) from
-+ * the apps directory (application code) you must include an acknowledgement:
-+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * The licence and distribution terms for any publically available version or
-+ * derivative of this code cannot be changed. i.e. this code cannot simply be
-+ * copied and put under another distribution licence
-+ * [including the GNU Public Licence.]
-+ */
-+
-+#if !defined(NO_SHA1) && !defined(NO_SHA)
-+
-+#undef SHA_0
-+#define SHA_1
-+
-+#include <openssl/opensslv.h>
-+
-+const char *SHA1_version="SHA1" OPENSSL_VERSION_PTEXT;
-+
-+/* The implementation is in ../md32_common.h */
-+
-+#include "sha_locl.h"
-+
-+#endif
-+
-diff -Nur linux_c860_org/drivers/net/sha_locl.h linux/drivers/net/sha_locl.h
---- linux_c860_org/drivers/net/sha_locl.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/net/sha_locl.h 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,473 @@
-+/* crypto/sha/sha_locl.h */
-+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
-+ * All rights reserved.
-+ *
-+ * This package is an SSL implementation written
-+ * by Eric Young (eay@cryptsoft.com).
-+ * The implementation was written so as to conform with Netscapes SSL.
-+ *
-+ * This library is free for commercial and non-commercial use as long as
-+ * the following conditions are aheared to. The following conditions
-+ * apply to all code found in this distribution, be it the RC4, RSA,
-+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
-+ * included with this distribution is covered by the same copyright terms
-+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
-+ *
-+ * Copyright remains Eric Young's, and as such any Copyright notices in
-+ * the code are not to be removed.
-+ * If this package is used in a product, Eric Young should be given attribution
-+ * as the author of the parts of the library used.
-+ * This can be in the form of a textual message at program startup or
-+ * in documentation (online or textual) provided with the package.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * "This product includes cryptographic software written by
-+ * Eric Young (eay@cryptsoft.com)"
-+ * The word 'cryptographic' can be left out if the rouines from the library
-+ * being used are not cryptographic related :-).
-+ * 4. If you include any Windows specific code (or a derivative thereof) from
-+ * the apps directory (application code) you must include an acknowledgement:
-+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * The licence and distribution terms for any publically available version or
-+ * derivative of this code cannot be changed. i.e. this code cannot simply be
-+ * copied and put under another distribution licence
-+ * [including the GNU Public Licence.]
-+ */
-+
-+#ifndef __KERNEL__
-+#include <stdlib.h>
-+#include <string.h>
-+#endif
-+
-+#include <openssl/opensslconf.h>
-+#include <openssl/sha.h>
-+
-+#ifndef SHA_LONG_LOG2
-+#define SHA_LONG_LOG2 2 /* default to 32 bits */
-+#endif
-+
-+#define DATA_ORDER_IS_BIG_ENDIAN
-+
-+#define HASH_LONG SHA_LONG
-+#define HASH_LONG_LOG2 SHA_LONG_LOG2
-+#define HASH_CTX SHA_CTX
-+#define HASH_CBLOCK SHA_CBLOCK
-+#define HASH_LBLOCK SHA_LBLOCK
-+#define HASH_MAKE_STRING(c,s) do { \
-+ unsigned long ll; \
-+ ll=(c)->h0; HOST_l2c(ll,(s)); \
-+ ll=(c)->h1; HOST_l2c(ll,(s)); \
-+ ll=(c)->h2; HOST_l2c(ll,(s)); \
-+ ll=(c)->h3; HOST_l2c(ll,(s)); \
-+ ll=(c)->h4; HOST_l2c(ll,(s)); \
-+ } while (0)
-+
-+#if defined(SHA_0)
-+
-+# define HASH_UPDATE SHA_Update
-+# define HASH_TRANSFORM SHA_Transform
-+# define HASH_FINAL SHA_Final
-+# define HASH_INIT SHA_Init
-+# define HASH_BLOCK_HOST_ORDER sha_block_host_order
-+# define HASH_BLOCK_DATA_ORDER sha_block_data_order
-+# define Xupdate(a,ix,ia,ib,ic,id) (ix=(a)=(ia^ib^ic^id))
-+
-+ void sha_block_host_order (SHA_CTX *c, const void *p,int num);
-+ void sha_block_data_order (SHA_CTX *c, const void *p,int num);
-+
-+#elif defined(SHA_1)
-+
-+# define HASH_UPDATE SHA1_Update
-+# define HASH_TRANSFORM SHA1_Transform
-+# define HASH_FINAL SHA1_Final
-+# define HASH_INIT SHA1_Init
-+# define HASH_BLOCK_HOST_ORDER sha1_block_host_order
-+# define HASH_BLOCK_DATA_ORDER sha1_block_data_order
-+# if defined(__MWERKS__) && defined(__MC68K__)
-+ /* Metrowerks for Motorola fails otherwise:-( <appro@fy.chalmers.se> */
-+# define Xupdate(a,ix,ia,ib,ic,id) do { (a)=(ia^ib^ic^id); \
-+ ix=(a)=ROTATE((a),1); \
-+ } while (0)
-+# else
-+# define Xupdate(a,ix,ia,ib,ic,id) ( (a)=(ia^ib^ic^id), \
-+ ix=(a)=ROTATE((a),1) \
-+ )
-+# endif
-+
-+# ifdef SHA1_ASM
-+# if defined(__i386) || defined(_M_IX86) || defined(__INTEL__)
-+# define sha1_block_host_order sha1_block_asm_host_order
-+# define DONT_IMPLEMENT_BLOCK_HOST_ORDER
-+# define sha1_block_data_order sha1_block_asm_data_order
-+# define DONT_IMPLEMENT_BLOCK_DATA_ORDER
-+# define HASH_BLOCK_DATA_ORDER_ALIGNED sha1_block_asm_data_order
-+# endif
-+# endif
-+ void sha1_block_host_order (SHA_CTX *c, const void *p,int num);
-+ void sha1_block_data_order (SHA_CTX *c, const void *p,int num);
-+
-+#else
-+# error "Either SHA_0 or SHA_1 must be defined."
-+#endif
-+
-+#include "md32_common.h"
-+
-+#define INIT_DATA_h0 0x67452301UL
-+#define INIT_DATA_h1 0xefcdab89UL
-+#define INIT_DATA_h2 0x98badcfeUL
-+#define INIT_DATA_h3 0x10325476UL
-+#define INIT_DATA_h4 0xc3d2e1f0UL
-+
-+void HASH_INIT (SHA_CTX *c)
-+ {
-+ c->h0=INIT_DATA_h0;
-+ c->h1=INIT_DATA_h1;
-+ c->h2=INIT_DATA_h2;
-+ c->h3=INIT_DATA_h3;
-+ c->h4=INIT_DATA_h4;
-+ c->Nl=0;
-+ c->Nh=0;
-+ c->num=0;
-+ }
-+
-+#define K_00_19 0x5a827999UL
-+#define K_20_39 0x6ed9eba1UL
-+#define K_40_59 0x8f1bbcdcUL
-+#define K_60_79 0xca62c1d6UL
-+
-+/* As pointed out by Wei Dai <weidai@eskimo.com>, F() below can be
-+ * simplified to the code in F_00_19. Wei attributes these optimisations
-+ * to Peter Gutmann's SHS code, and he attributes it to Rich Schroeppel.
-+ * #define F(x,y,z) (((x) & (y)) | ((~(x)) & (z)))
-+ * I've just become aware of another tweak to be made, again from Wei Dai,
-+ * in F_40_59, (x&a)|(y&a) -> (x|y)&a
-+ */
-+#define F_00_19(b,c,d) ((((c) ^ (d)) & (b)) ^ (d))
-+#define F_20_39(b,c,d) ((b) ^ (c) ^ (d))
-+#define F_40_59(b,c,d) (((b) & (c)) | (((b)|(c)) & (d)))
-+#define F_60_79(b,c,d) F_20_39(b,c,d)
-+
-+#define BODY_00_15(i,a,b,c,d,e,f,xi) \
-+ (f)=xi+(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
-+ (b)=ROTATE((b),30);
-+
-+#define BODY_16_19(i,a,b,c,d,e,f,xi,xa,xb,xc,xd) \
-+ Xupdate(f,xi,xa,xb,xc,xd); \
-+ (f)+=(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
-+ (b)=ROTATE((b),30);
-+
-+#define BODY_20_31(i,a,b,c,d,e,f,xi,xa,xb,xc,xd) \
-+ Xupdate(f,xi,xa,xb,xc,xd); \
-+ (f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
-+ (b)=ROTATE((b),30);
-+
-+#define BODY_32_39(i,a,b,c,d,e,f,xa,xb,xc,xd) \
-+ Xupdate(f,xa,xa,xb,xc,xd); \
-+ (f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
-+ (b)=ROTATE((b),30);
-+
-+#define BODY_40_59(i,a,b,c,d,e,f,xa,xb,xc,xd) \
-+ Xupdate(f,xa,xa,xb,xc,xd); \
-+ (f)+=(e)+K_40_59+ROTATE((a),5)+F_40_59((b),(c),(d)); \
-+ (b)=ROTATE((b),30);
-+
-+#define BODY_60_79(i,a,b,c,d,e,f,xa,xb,xc,xd) \
-+ Xupdate(f,xa,xa,xb,xc,xd); \
-+ (f)=xa+(e)+K_60_79+ROTATE((a),5)+F_60_79((b),(c),(d)); \
-+ (b)=ROTATE((b),30);
-+
-+#ifdef X
-+#undef X
-+#endif
-+#ifndef MD32_XARRAY
-+ /*
-+ * Originally X was an array. As it's automatic it's natural
-+ * to expect RISC compiler to accomodate at least part of it in
-+ * the register bank, isn't it? Unfortunately not all compilers
-+ * "find" this expectation reasonable:-( On order to make such
-+ * compilers generate better code I replace X[] with a bunch of
-+ * X0, X1, etc. See the function body below...
-+ * <appro@fy.chalmers.se>
-+ */
-+# define X(i) XX##i
-+#else
-+ /*
-+ * However! Some compilers (most notably HP C) get overwhelmed by
-+ * that many local variables so that we have to have the way to
-+ * fall down to the original behavior.
-+ */
-+# define X(i) XX[i]
-+#endif
-+
-+#ifndef DONT_IMPLEMENT_BLOCK_HOST_ORDER
-+void HASH_BLOCK_HOST_ORDER (SHA_CTX *c, const void *d, int num)
-+ {
-+ const SHA_LONG *W=d;
-+ register unsigned long A,B,C,D,E,T;
-+#ifndef MD32_XARRAY
-+ unsigned long XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
-+ XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15;
-+#else
-+ SHA_LONG XX[16];
-+#endif
-+
-+ A=c->h0;
-+ B=c->h1;
-+ C=c->h2;
-+ D=c->h3;
-+ E=c->h4;
-+
-+ for (;;)
-+ {
-+ BODY_00_15( 0,A,B,C,D,E,T,W[ 0]);
-+ BODY_00_15( 1,T,A,B,C,D,E,W[ 1]);
-+ BODY_00_15( 2,E,T,A,B,C,D,W[ 2]);
-+ BODY_00_15( 3,D,E,T,A,B,C,W[ 3]);
-+ BODY_00_15( 4,C,D,E,T,A,B,W[ 4]);
-+ BODY_00_15( 5,B,C,D,E,T,A,W[ 5]);
-+ BODY_00_15( 6,A,B,C,D,E,T,W[ 6]);
-+ BODY_00_15( 7,T,A,B,C,D,E,W[ 7]);
-+ BODY_00_15( 8,E,T,A,B,C,D,W[ 8]);
-+ BODY_00_15( 9,D,E,T,A,B,C,W[ 9]);
-+ BODY_00_15(10,C,D,E,T,A,B,W[10]);
-+ BODY_00_15(11,B,C,D,E,T,A,W[11]);
-+ BODY_00_15(12,A,B,C,D,E,T,W[12]);
-+ BODY_00_15(13,T,A,B,C,D,E,W[13]);
-+ BODY_00_15(14,E,T,A,B,C,D,W[14]);
-+ BODY_00_15(15,D,E,T,A,B,C,W[15]);
-+
-+ BODY_16_19(16,C,D,E,T,A,B,X( 0),W[ 0],W[ 2],W[ 8],W[13]);
-+ BODY_16_19(17,B,C,D,E,T,A,X( 1),W[ 1],W[ 3],W[ 9],W[14]);
-+ BODY_16_19(18,A,B,C,D,E,T,X( 2),W[ 2],W[ 4],W[10],W[15]);
-+ BODY_16_19(19,T,A,B,C,D,E,X( 3),W[ 3],W[ 5],W[11],X( 0));
-+
-+ BODY_20_31(20,E,T,A,B,C,D,X( 4),W[ 4],W[ 6],W[12],X( 1));
-+ BODY_20_31(21,D,E,T,A,B,C,X( 5),W[ 5],W[ 7],W[13],X( 2));
-+ BODY_20_31(22,C,D,E,T,A,B,X( 6),W[ 6],W[ 8],W[14],X( 3));
-+ BODY_20_31(23,B,C,D,E,T,A,X( 7),W[ 7],W[ 9],W[15],X( 4));
-+ BODY_20_31(24,A,B,C,D,E,T,X( 8),W[ 8],W[10],X( 0),X( 5));
-+ BODY_20_31(25,T,A,B,C,D,E,X( 9),W[ 9],W[11],X( 1),X( 6));
-+ BODY_20_31(26,E,T,A,B,C,D,X(10),W[10],W[12],X( 2),X( 7));
-+ BODY_20_31(27,D,E,T,A,B,C,X(11),W[11],W[13],X( 3),X( 8));
-+ BODY_20_31(28,C,D,E,T,A,B,X(12),W[12],W[14],X( 4),X( 9));
-+ BODY_20_31(29,B,C,D,E,T,A,X(13),W[13],W[15],X( 5),X(10));
-+ BODY_20_31(30,A,B,C,D,E,T,X(14),W[14],X( 0),X( 6),X(11));
-+ BODY_20_31(31,T,A,B,C,D,E,X(15),W[15],X( 1),X( 7),X(12));
-+
-+ BODY_32_39(32,E,T,A,B,C,D,X( 0),X( 2),X( 8),X(13));
-+ BODY_32_39(33,D,E,T,A,B,C,X( 1),X( 3),X( 9),X(14));
-+ BODY_32_39(34,C,D,E,T,A,B,X( 2),X( 4),X(10),X(15));
-+ BODY_32_39(35,B,C,D,E,T,A,X( 3),X( 5),X(11),X( 0));
-+ BODY_32_39(36,A,B,C,D,E,T,X( 4),X( 6),X(12),X( 1));
-+ BODY_32_39(37,T,A,B,C,D,E,X( 5),X( 7),X(13),X( 2));
-+ BODY_32_39(38,E,T,A,B,C,D,X( 6),X( 8),X(14),X( 3));
-+ BODY_32_39(39,D,E,T,A,B,C,X( 7),X( 9),X(15),X( 4));
-+
-+ BODY_40_59(40,C,D,E,T,A,B,X( 8),X(10),X( 0),X( 5));
-+ BODY_40_59(41,B,C,D,E,T,A,X( 9),X(11),X( 1),X( 6));
-+ BODY_40_59(42,A,B,C,D,E,T,X(10),X(12),X( 2),X( 7));
-+ BODY_40_59(43,T,A,B,C,D,E,X(11),X(13),X( 3),X( 8));
-+ BODY_40_59(44,E,T,A,B,C,D,X(12),X(14),X( 4),X( 9));
-+ BODY_40_59(45,D,E,T,A,B,C,X(13),X(15),X( 5),X(10));
-+ BODY_40_59(46,C,D,E,T,A,B,X(14),X( 0),X( 6),X(11));
-+ BODY_40_59(47,B,C,D,E,T,A,X(15),X( 1),X( 7),X(12));
-+ BODY_40_59(48,A,B,C,D,E,T,X( 0),X( 2),X( 8),X(13));
-+ BODY_40_59(49,T,A,B,C,D,E,X( 1),X( 3),X( 9),X(14));
-+ BODY_40_59(50,E,T,A,B,C,D,X( 2),X( 4),X(10),X(15));
-+ BODY_40_59(51,D,E,T,A,B,C,X( 3),X( 5),X(11),X( 0));
-+ BODY_40_59(52,C,D,E,T,A,B,X( 4),X( 6),X(12),X( 1));
-+ BODY_40_59(53,B,C,D,E,T,A,X( 5),X( 7),X(13),X( 2));
-+ BODY_40_59(54,A,B,C,D,E,T,X( 6),X( 8),X(14),X( 3));
-+ BODY_40_59(55,T,A,B,C,D,E,X( 7),X( 9),X(15),X( 4));
-+ BODY_40_59(56,E,T,A,B,C,D,X( 8),X(10),X( 0),X( 5));
-+ BODY_40_59(57,D,E,T,A,B,C,X( 9),X(11),X( 1),X( 6));
-+ BODY_40_59(58,C,D,E,T,A,B,X(10),X(12),X( 2),X( 7));
-+ BODY_40_59(59,B,C,D,E,T,A,X(11),X(13),X( 3),X( 8));
-+
-+ BODY_60_79(60,A,B,C,D,E,T,X(12),X(14),X( 4),X( 9));
-+ BODY_60_79(61,T,A,B,C,D,E,X(13),X(15),X( 5),X(10));
-+ BODY_60_79(62,E,T,A,B,C,D,X(14),X( 0),X( 6),X(11));
-+ BODY_60_79(63,D,E,T,A,B,C,X(15),X( 1),X( 7),X(12));
-+ BODY_60_79(64,C,D,E,T,A,B,X( 0),X( 2),X( 8),X(13));
-+ BODY_60_79(65,B,C,D,E,T,A,X( 1),X( 3),X( 9),X(14));
-+ BODY_60_79(66,A,B,C,D,E,T,X( 2),X( 4),X(10),X(15));
-+ BODY_60_79(67,T,A,B,C,D,E,X( 3),X( 5),X(11),X( 0));
-+ BODY_60_79(68,E,T,A,B,C,D,X( 4),X( 6),X(12),X( 1));
-+ BODY_60_79(69,D,E,T,A,B,C,X( 5),X( 7),X(13),X( 2));
-+ BODY_60_79(70,C,D,E,T,A,B,X( 6),X( 8),X(14),X( 3));
-+ BODY_60_79(71,B,C,D,E,T,A,X( 7),X( 9),X(15),X( 4));
-+ BODY_60_79(72,A,B,C,D,E,T,X( 8),X(10),X( 0),X( 5));
-+ BODY_60_79(73,T,A,B,C,D,E,X( 9),X(11),X( 1),X( 6));
-+ BODY_60_79(74,E,T,A,B,C,D,X(10),X(12),X( 2),X( 7));
-+ BODY_60_79(75,D,E,T,A,B,C,X(11),X(13),X( 3),X( 8));
-+ BODY_60_79(76,C,D,E,T,A,B,X(12),X(14),X( 4),X( 9));
-+ BODY_60_79(77,B,C,D,E,T,A,X(13),X(15),X( 5),X(10));
-+ BODY_60_79(78,A,B,C,D,E,T,X(14),X( 0),X( 6),X(11));
-+ BODY_60_79(79,T,A,B,C,D,E,X(15),X( 1),X( 7),X(12));
-+
-+ c->h0=(c->h0+E)&0xffffffffL;
-+ c->h1=(c->h1+T)&0xffffffffL;
-+ c->h2=(c->h2+A)&0xffffffffL;
-+ c->h3=(c->h3+B)&0xffffffffL;
-+ c->h4=(c->h4+C)&0xffffffffL;
-+
-+ if (--num <= 0) break;
-+
-+ A=c->h0;
-+ B=c->h1;
-+ C=c->h2;
-+ D=c->h3;
-+ E=c->h4;
-+
-+ W+=SHA_LBLOCK;
-+ }
-+ }
-+#endif
-+
-+#ifndef DONT_IMPLEMENT_BLOCK_DATA_ORDER
-+void HASH_BLOCK_DATA_ORDER (SHA_CTX *c, const void *p, int num)
-+ {
-+ const unsigned char *data=p;
-+ register unsigned long A,B,C,D,E,T,l;
-+#ifndef MD32_XARRAY
-+ unsigned long XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
-+ XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15;
-+#else
-+ SHA_LONG XX[16];
-+#endif
-+
-+ A=c->h0;
-+ B=c->h1;
-+ C=c->h2;
-+ D=c->h3;
-+ E=c->h4;
-+
-+ for (;;)
-+ {
-+
-+ HOST_c2l(data,l); X( 0)=l; HOST_c2l(data,l); X( 1)=l;
-+ BODY_00_15( 0,A,B,C,D,E,T,X( 0)); HOST_c2l(data,l); X( 2)=l;
-+ BODY_00_15( 1,T,A,B,C,D,E,X( 1)); HOST_c2l(data,l); X( 3)=l;
-+ BODY_00_15( 2,E,T,A,B,C,D,X( 2)); HOST_c2l(data,l); X( 4)=l;
-+ BODY_00_15( 3,D,E,T,A,B,C,X( 3)); HOST_c2l(data,l); X( 5)=l;
-+ BODY_00_15( 4,C,D,E,T,A,B,X( 4)); HOST_c2l(data,l); X( 6)=l;
-+ BODY_00_15( 5,B,C,D,E,T,A,X( 5)); HOST_c2l(data,l); X( 7)=l;
-+ BODY_00_15( 6,A,B,C,D,E,T,X( 6)); HOST_c2l(data,l); X( 8)=l;
-+ BODY_00_15( 7,T,A,B,C,D,E,X( 7)); HOST_c2l(data,l); X( 9)=l;
-+ BODY_00_15( 8,E,T,A,B,C,D,X( 8)); HOST_c2l(data,l); X(10)=l;
-+ BODY_00_15( 9,D,E,T,A,B,C,X( 9)); HOST_c2l(data,l); X(11)=l;
-+ BODY_00_15(10,C,D,E,T,A,B,X(10)); HOST_c2l(data,l); X(12)=l;
-+ BODY_00_15(11,B,C,D,E,T,A,X(11)); HOST_c2l(data,l); X(13)=l;
-+ BODY_00_15(12,A,B,C,D,E,T,X(12)); HOST_c2l(data,l); X(14)=l;
-+ BODY_00_15(13,T,A,B,C,D,E,X(13)); HOST_c2l(data,l); X(15)=l;
-+ BODY_00_15(14,E,T,A,B,C,D,X(14));
-+ BODY_00_15(15,D,E,T,A,B,C,X(15));
-+
-+ BODY_16_19(16,C,D,E,T,A,B,X( 0),X( 0),X( 2),X( 8),X(13));
-+ BODY_16_19(17,B,C,D,E,T,A,X( 1),X( 1),X( 3),X( 9),X(14));
-+ BODY_16_19(18,A,B,C,D,E,T,X( 2),X( 2),X( 4),X(10),X(15));
-+ BODY_16_19(19,T,A,B,C,D,E,X( 3),X( 3),X( 5),X(11),X( 0));
-+
-+ BODY_20_31(20,E,T,A,B,C,D,X( 4),X( 4),X( 6),X(12),X( 1));
-+ BODY_20_31(21,D,E,T,A,B,C,X( 5),X( 5),X( 7),X(13),X( 2));
-+ BODY_20_31(22,C,D,E,T,A,B,X( 6),X( 6),X( 8),X(14),X( 3));
-+ BODY_20_31(23,B,C,D,E,T,A,X( 7),X( 7),X( 9),X(15),X( 4));
-+ BODY_20_31(24,A,B,C,D,E,T,X( 8),X( 8),X(10),X( 0),X( 5));
-+ BODY_20_31(25,T,A,B,C,D,E,X( 9),X( 9),X(11),X( 1),X( 6));
-+ BODY_20_31(26,E,T,A,B,C,D,X(10),X(10),X(12),X( 2),X( 7));
-+ BODY_20_31(27,D,E,T,A,B,C,X(11),X(11),X(13),X( 3),X( 8));
-+ BODY_20_31(28,C,D,E,T,A,B,X(12),X(12),X(14),X( 4),X( 9));
-+ BODY_20_31(29,B,C,D,E,T,A,X(13),X(13),X(15),X( 5),X(10));
-+ BODY_20_31(30,A,B,C,D,E,T,X(14),X(14),X( 0),X( 6),X(11));
-+ BODY_20_31(31,T,A,B,C,D,E,X(15),X(15),X( 1),X( 7),X(12));
-+
-+ BODY_32_39(32,E,T,A,B,C,D,X( 0),X( 2),X( 8),X(13));
-+ BODY_32_39(33,D,E,T,A,B,C,X( 1),X( 3),X( 9),X(14));
-+ BODY_32_39(34,C,D,E,T,A,B,X( 2),X( 4),X(10),X(15));
-+ BODY_32_39(35,B,C,D,E,T,A,X( 3),X( 5),X(11),X( 0));
-+ BODY_32_39(36,A,B,C,D,E,T,X( 4),X( 6),X(12),X( 1));
-+ BODY_32_39(37,T,A,B,C,D,E,X( 5),X( 7),X(13),X( 2));
-+ BODY_32_39(38,E,T,A,B,C,D,X( 6),X( 8),X(14),X( 3));
-+ BODY_32_39(39,D,E,T,A,B,C,X( 7),X( 9),X(15),X( 4));
-+
-+ BODY_40_59(40,C,D,E,T,A,B,X( 8),X(10),X( 0),X( 5));
-+ BODY_40_59(41,B,C,D,E,T,A,X( 9),X(11),X( 1),X( 6));
-+ BODY_40_59(42,A,B,C,D,E,T,X(10),X(12),X( 2),X( 7));
-+ BODY_40_59(43,T,A,B,C,D,E,X(11),X(13),X( 3),X( 8));
-+ BODY_40_59(44,E,T,A,B,C,D,X(12),X(14),X( 4),X( 9));
-+ BODY_40_59(45,D,E,T,A,B,C,X(13),X(15),X( 5),X(10));
-+ BODY_40_59(46,C,D,E,T,A,B,X(14),X( 0),X( 6),X(11));
-+ BODY_40_59(47,B,C,D,E,T,A,X(15),X( 1),X( 7),X(12));
-+ BODY_40_59(48,A,B,C,D,E,T,X( 0),X( 2),X( 8),X(13));
-+ BODY_40_59(49,T,A,B,C,D,E,X( 1),X( 3),X( 9),X(14));
-+ BODY_40_59(50,E,T,A,B,C,D,X( 2),X( 4),X(10),X(15));
-+ BODY_40_59(51,D,E,T,A,B,C,X( 3),X( 5),X(11),X( 0));
-+ BODY_40_59(52,C,D,E,T,A,B,X( 4),X( 6),X(12),X( 1));
-+ BODY_40_59(53,B,C,D,E,T,A,X( 5),X( 7),X(13),X( 2));
-+ BODY_40_59(54,A,B,C,D,E,T,X( 6),X( 8),X(14),X( 3));
-+ BODY_40_59(55,T,A,B,C,D,E,X( 7),X( 9),X(15),X( 4));
-+ BODY_40_59(56,E,T,A,B,C,D,X( 8),X(10),X( 0),X( 5));
-+ BODY_40_59(57,D,E,T,A,B,C,X( 9),X(11),X( 1),X( 6));
-+ BODY_40_59(58,C,D,E,T,A,B,X(10),X(12),X( 2),X( 7));
-+ BODY_40_59(59,B,C,D,E,T,A,X(11),X(13),X( 3),X( 8));
-+
-+ BODY_60_79(60,A,B,C,D,E,T,X(12),X(14),X( 4),X( 9));
-+ BODY_60_79(61,T,A,B,C,D,E,X(13),X(15),X( 5),X(10));
-+ BODY_60_79(62,E,T,A,B,C,D,X(14),X( 0),X( 6),X(11));
-+ BODY_60_79(63,D,E,T,A,B,C,X(15),X( 1),X( 7),X(12));
-+ BODY_60_79(64,C,D,E,T,A,B,X( 0),X( 2),X( 8),X(13));
-+ BODY_60_79(65,B,C,D,E,T,A,X( 1),X( 3),X( 9),X(14));
-+ BODY_60_79(66,A,B,C,D,E,T,X( 2),X( 4),X(10),X(15));
-+ BODY_60_79(67,T,A,B,C,D,E,X( 3),X( 5),X(11),X( 0));
-+ BODY_60_79(68,E,T,A,B,C,D,X( 4),X( 6),X(12),X( 1));
-+ BODY_60_79(69,D,E,T,A,B,C,X( 5),X( 7),X(13),X( 2));
-+ BODY_60_79(70,C,D,E,T,A,B,X( 6),X( 8),X(14),X( 3));
-+ BODY_60_79(71,B,C,D,E,T,A,X( 7),X( 9),X(15),X( 4));
-+ BODY_60_79(72,A,B,C,D,E,T,X( 8),X(10),X( 0),X( 5));
-+ BODY_60_79(73,T,A,B,C,D,E,X( 9),X(11),X( 1),X( 6));
-+ BODY_60_79(74,E,T,A,B,C,D,X(10),X(12),X( 2),X( 7));
-+ BODY_60_79(75,D,E,T,A,B,C,X(11),X(13),X( 3),X( 8));
-+ BODY_60_79(76,C,D,E,T,A,B,X(12),X(14),X( 4),X( 9));
-+ BODY_60_79(77,B,C,D,E,T,A,X(13),X(15),X( 5),X(10));
-+ BODY_60_79(78,A,B,C,D,E,T,X(14),X( 0),X( 6),X(11));
-+ BODY_60_79(79,T,A,B,C,D,E,X(15),X( 1),X( 7),X(12));
-+
-+ c->h0=(c->h0+E)&0xffffffffL;
-+ c->h1=(c->h1+T)&0xffffffffL;
-+ c->h2=(c->h2+A)&0xffffffffL;
-+ c->h3=(c->h3+B)&0xffffffffL;
-+ c->h4=(c->h4+C)&0xffffffffL;
-+
-+ if (--num <= 0) break;
-+
-+ A=c->h0;
-+ B=c->h1;
-+ C=c->h2;
-+ D=c->h3;
-+ E=c->h4;
-+
-+ }
-+ }
-+#endif
-diff -Nur linux_c860_org/drivers/pcmcia/cs.c linux/drivers/pcmcia/cs.c
---- linux_c860_org/drivers/pcmcia/cs.c 2003-02-27 13:28:33.000000000 +0900
-+++ linux/drivers/pcmcia/cs.c 2004-06-10 21:09:10.000000000 +0900
-@@ -35,6 +35,8 @@
- 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
- 12-Dec-2002 Sharp Corporation for Poodle and Corgi
- 07-Feb-2003 Sharp Corporation
-+ 08-Jan-2004 Sharp Corporation for Tosa
-+ 26-Feb-2004 Lineo Solutions, Inc. 2 slot support
-
- ======================================================================*/
-
-@@ -73,6 +75,8 @@
- #include <asm/arch/keyboard_poodle.h>
- #elif defined(CONFIG_ARCH_PXA_CORGI)
- #include <asm/arch/keyboard_corgi.h>
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+#include <asm/arch/keyboard_tosa.h>
- #endif
- #include <asm/sharp_char.h>
- #include <asm/sharp_keycode.h>
-@@ -124,7 +128,11 @@
- INT_MODULE_PARM(shutdown_delay, 3); /* centiseconds */
- #ifdef CONFIG_ARCH_SHARP_SL
- //INT_MODULE_PARM(vcc_settle, 2); /* SL-5600@2 */
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+INT_MODULE_PARM(vcc_settle, 30); /* SL-6000 */
-+#else
- INT_MODULE_PARM(vcc_settle, 10); /* SL-C700+GW-CF11H@10 */
-+#endif
- INT_MODULE_PARM(reset_time, 1000);
- INT_MODULE_PARM(unreset_delay, 3);
- INT_MODULE_PARM(unreset_check, 1);
-@@ -490,6 +498,15 @@
- schedule_timeout( (n_cs * HZ + 99) / 100);
- }
-
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+static void cs_sleep2(unsigned int n_cs)
-+{
-+ current->state = TASK_UNINTERRUPTIBLE;
-+ schedule_timeout( (n_cs * HZ + 99) / 100);
-+}
-+
-+#endif
-+
- static void shutdown_socket(socket_info_t *s)
- {
- client_t **c;
-@@ -582,16 +599,45 @@
- #endif /* CONFIG_SABINAL_DISCOVERY */
-
-
--#if defined (CONFIG_ARCH_PXA_POODLE) || defined (CONFIG_ARCH_PXA_CORGI)
-+#if defined (CONFIG_ARCH_PXA_POODLE) || defined (CONFIG_ARCH_PXA_CORGI) || defined (CONFIG_ARCH_PXA_TOSA)
- {
- extern int sharpsl_main_battery;
- extern int sharpsl_main_bk_flag;
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+ extern int sharpsl_jacket_exist;
-+ extern int sharpsl_jacket_batt_exist;
-+ extern int sharpsl_jacket_battery;
-+#endif
-
- sharpsl_kick_battery_check(0,1,1); // check battery and wait 10msec
-
- if ( ( sharpsl_main_battery == 0x7F ) || ( sharpsl_main_battery == 0x02 ) ) {
- printk(KERN_ERR "cs: Main battery is critical low."
- " (%d)\n", sharpsl_main_battery);
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+ {
-+ int do_off = 0;
-+
-+ if(sharpsl_jacket_exist && sharpsl_jacket_batt_exist){
-+ if( sharpsl_jacket_battery == 0x7F || sharpsl_jacket_battery == 0x02 ){
-+ printk(KERN_ERR "cs: Jacket battery is critical low."
-+ " (%d)\n", sharpsl_jacket_battery);
-+ do_off = 1;
-+ }
-+ }else{
-+ do_off = 1;
-+ }
-+ if(do_off){
-+ if ( sharpsl_main_bk_flag ) {
-+ handle_scancode(SLKEY_OFF|KBDOWN , 1);
-+ mdelay(30);
-+ handle_scancode(SLKEY_OFF|KBUP , 0);
-+ }
-+ ret = 0;
-+ goto out;
-+ }
-+ }
-+#else
- if ( sharpsl_main_bk_flag ) {
- handle_scancode(SLKEY_OFF|KBDOWN , 1);
- mdelay(30);
-@@ -599,6 +645,7 @@
- }
- ret = 0;
- goto out;
-+#endif
- }
- }
- #endif
-@@ -644,17 +691,52 @@
- printk(KERN_NOTICE "cs: unsupported card type detected!\n");
- #endif
- }
-+
- set_socket(s, &s->socket);
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+ //printk(":start %d %d\n",jiffies,vcc_settle);
-+ cs_sleep2(vcc_settle);
-+ //cs_sleep(vcc_settle);
-+ //printk(":end %d\n",jiffies);
-+#else
- cs_sleep(vcc_settle);
-+#endif
- reset_socket(s);
-
--#if defined (CONFIG_ARCH_PXA_POODLE) || defined (CONFIG_ARCH_PXA_CORGI)
-+#if defined (CONFIG_ARCH_PXA_POODLE) || defined (CONFIG_ARCH_PXA_CORGI) || defined (CONFIG_ARCH_PXA_TOSA)
- {
- extern int sharpsl_main_battery;
- extern int sharpsl_main_bk_flag;
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+ extern int sharpsl_jacket_exist;
-+ extern int sharpsl_jacket_batt_exist;
-+ extern int sharpsl_jacket_battery;
-+#endif
-
- sharpsl_kick_battery_check(0,0,1); // check battery and wait 10msec
-
-+#if defined (CONFIG_ARCH_PXA_TOSA)
-+ if ( sharpsl_main_bk_flag && ( ( sharpsl_main_battery == 0x7F ) || ( sharpsl_main_battery == 0x02 ) ) ) {
-+ int do_remove = 0;
-+ if ( sharpsl_jacket_exist && sharpsl_jacket_batt_exist ) {
-+ if( sharpsl_jacket_battery == 0x7F || sharpsl_jacket_battery == 0x02 ){
-+ do_remove = 1;
-+ }
-+ }else{
-+ do_remove = 1;
-+ }
-+ if(do_remove){
-+ s->socket.Vcc = s->socket.Vpp = 0;
-+ s->state &= ~SOCKET_PRESENT;
-+ set_socket(s, &s->socket);
-+ cs_sleep(vcc_settle);
-+ reset_socket(s);
-+ send_event(s, CS_EVENT_CARD_REMOVAL, CS_EVENT_PRI_HIGH);
-+ ret = 0;
-+ goto out;
-+ }
-+ }
-+#else
- if ( sharpsl_main_bk_flag && ( ( sharpsl_main_battery == 0x7F ) || ( sharpsl_main_battery == 0x02 ) ) ) {
- s->socket.Vcc = s->socket.Vpp = 0;
- s->state &= ~SOCKET_PRESENT;
-@@ -665,6 +747,7 @@
- ret = 0;
- goto out;
- }
-+#endif
- }
- #endif
- ret = 1;
-@@ -701,8 +784,8 @@
- (SOCKET_SETUP_PENDING|SOCKET_SUSPEND|SOCKET_RESET_PENDING)
-
- #ifdef CONFIG_ARCH_SHARP_SL
--int ide_resume_handling = 0;
--int pcmcia_resume_handling = 0;
-+int ide_resume_handling[2] = { 0, 0 };
-+static int pcmcia_resume_handling = 0;
- #endif
-
- static void unreset_socket(socket_info_t *s)
-@@ -731,21 +814,21 @@
- s->state &= ~EVENT_MASK;
- #ifdef CONFIG_ARCH_SHARP_SL
- if (verify_cis_cache(s) != 0) {
-- if (is_pcmcia_card_present(0))
-- ide_resume_handling = 2;
-+ if (is_pcmcia_card_present(s->cap.pci_irq))
-+ ide_resume_handling[s->sock] = 2;
- parse_events(s, SS_DETECT);
- } else {
- cisparse_t parse;
- send_event(s, CS_EVENT_PM_RESUME, CS_EVENT_PRI_LOW);
- read_tuple(s->clients, CISTPL_FUNCID, &parse);
- #ifdef CONFIG_IDE
-- ide_resume_handling = 1;
-+ ide_resume_handling[s->sock] = 1;
- if (parse.funcid.func == CISTPL_FUNCID_FIXED &&
-- proc_ide_verify_identify() != 0) {
-- ide_resume_handling = 2;
-+ proc_ide_verify_identify(s->sock) != 0) {
-+ ide_resume_handling[s->sock] = 2;
- parse_events(s, SS_DETECT);
- } else {
-- ide_resume_handling = 0;
-+ ide_resume_handling[s->sock] = 0;
- }
- #endif
- /* power off serial card */
-@@ -854,7 +937,7 @@
- s->socket.flags |= SS_DEBOUNCED;
- if (setup_socket(s) == 0){
- s->state &= ~SOCKET_SETUP_PENDING;
--#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_POODLE)
-+#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_TOSA)
- /* If power-on failed in resume, then card eject. */
- if( s->state & SOCKET_SUSPEND )
- do_shutdown(s);
-@@ -960,6 +1043,19 @@
- return 0;
- } /* handle_pm_event */
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+void force_cardslot_suspend( int num )
-+{
-+ int i;
-+ socket_info_t *s;
-+ s = socket_table [num];
-+ if (s && !s->use_bus_pm) {
-+ //pcmcia_suspend_socket (socket_table [num]);
-+ suspend_socket (socket_table [num]);
-+ }
-+}
-+#endif
-+
- /*======================================================================
-
- Special stuff for managing IO windows, because they are scarce.
-@@ -2001,6 +2097,12 @@
- if (!req)
- return CS_UNSUPPORTED_MODE;
- c = CONFIG(handle);
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ if(c == NULL) {
-+ printk("%s: c is NULL\n",__func__);
-+ return CS_BAD_SOCKET;
-+ }
-+#endif
- if (c->state & CONFIG_LOCKED)
- return CS_CONFIGURATION_LOCKED;
- if (c->state & CONFIG_IO_REQ)
-@@ -2272,7 +2374,7 @@
- return CS_IN_USE;
-
- DEBUG(1, "cs: waking up socket %d\n", i);
--#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_POODLE)
-+#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_TOSA)
- /* If power-on failed, then card eject. */
- if( setup_socket(s) == 0 )
- do_shutdown(s);
-diff -Nur linux_c860_org/drivers/pcmcia/pxa/Makefile linux/drivers/pcmcia/pxa/Makefile
---- linux_c860_org/drivers/pcmcia/pxa/Makefile 2002-08-29 12:26:51.000000000 +0900
-+++ linux/drivers/pcmcia/pxa/Makefile 2004-06-10 21:09:10.000000000 +0900
-@@ -16,6 +16,7 @@
- pxa_cs-objs-$(CONFIG_SABINAL_DISCOVERY) += pxa_sharpsl.o
- pxa_cs-objs-$(CONFIG_ARCH_PXA_POODLE) += pxa_sharpsl.o
- pxa_cs-objs-$(CONFIG_ARCH_PXA_CORGI) += pxa_sharpsl.o
-+pxa_cs-objs-$(CONFIG_ARCH_PXA_TOSA) += pxa_sharpsl.o
-
- obj-$(CONFIG_PCMCIA_PXA) += $(pxa_cs-objs-y)
-
-diff -Nur linux_c860_org/drivers/pcmcia/pxa/pxa.c linux/drivers/pcmcia/pxa/pxa.c
---- linux_c860_org/drivers/pcmcia/pxa/pxa.c 2003-01-14 12:07:55.000000000 +0900
-+++ linux/drivers/pcmcia/pxa/pxa.c 2004-06-10 21:09:10.000000000 +0900
-@@ -14,6 +14,7 @@
- * ChangLog:
- * 12-Dec-2002 Lineo Japan, Inc.
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 26-Feb-2004 Lineo Solutions, Inc. Tosa and 2 slot support
- */
-
- /*======================================================================
-@@ -170,7 +171,7 @@
- #endif
-
- #ifdef CONFIG_ARCH_SHARP_SL
-- u8 first = 1;
-+ static u8 first[2] = {1, 1};
- u8 force_8bit_access_check_done = 0;
- #endif
-
-@@ -253,6 +254,8 @@
- pcmcia_low_level=&sharpsl_pcmcia_ops;
- } else if( machine_is_corgi()){
- pcmcia_low_level=&sharpsl_pcmcia_ops;
-+ } else if( machine_is_tosa() ) {
-+ pcmcia_low_level=&sharpsl_pcmcia_ops;
- }
-
- if (!pcmcia_low_level) {
-@@ -415,17 +418,20 @@
-
- #ifdef CONFIG_ARCH_SHARP_SL
- printk("pxa_pcmcia_init(%d)\n",sock);
-- if(!first){
-+ if(!first[sock]){
- socket_state_t state;
- pxa_pcmcia_get_socket(sock, &state);
- state.flags &= ~SS_OUTPUT_ENA;
- state.Vcc = state.Vpp = 0;
- pxa_pcmcia_set_socket(sock, &state);
- } else {
-- first = 0;
-+ first[sock] = 0;
- }
- set_GPIO_mode(GPIO53_nPCE_2_MD); // reset force 8bit access.
- force_8bit_access_check_done = 0;
-+
-+ if (pcmcia_low_level->socket_init)
-+ return pcmcia_low_level->socket_init(sock);
- #endif
- return 0;
- }
-diff -Nur linux_c860_org/drivers/pcmcia/pxa/pxa_sharpsl.c linux/drivers/pcmcia/pxa/pxa_sharpsl.c
---- linux_c860_org/drivers/pcmcia/pxa/pxa_sharpsl.c 2003-01-14 12:07:55.000000000 +0900
-+++ linux/drivers/pcmcia/pxa/pxa_sharpsl.c 2004-06-10 21:09:10.000000000 +0900
-@@ -16,6 +16,7 @@
- *
- * ChangLog:
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 26-Feb-2004 Lineo Solutions, Inc. 2 slot support for Tosa
- */
- #include <linux/config.h>
- #include <linux/kernel.h>
-@@ -36,7 +37,11 @@
- #include <asm/sharp_apm.h>
-
- #include <linux/delay.h>
--
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+#include <asm/arch/keyboard_tosa.h>
-+#include <asm/sharp_char.h>
-+#include <asm/sharp_keycode.h>
-+#endif
- //#define SHARPSL_PCMCIA_DEBUG
-
- #ifdef CONFIG_SABINAL_DISCOVERY
-@@ -73,9 +78,15 @@
- #define RESET_DONE 0x0001
- #endif
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+extern void set_jacketslot_error( int ); // tosa_battery.c
-+extern int current_jacketslot_error(void);
-+extern void force_cardslot_suspend(int num); // ../cs.c
-+#endif
-+
- void sharpsl_pcmcia_init_reset(void)
- {
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- #define SCP_INIT_DATA(adr,dat) (((adr)<<16)|(dat))
- #define SCP_INIT_DATA_END ((unsigned long)-1)
- static const unsigned long scp_init[] =
-@@ -99,6 +110,15 @@
- keep_vs[0] = NO_KEEP_VS;
- keep_rd[0] = 0;
- #endif
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ for(i=0; scp_init[i] != SCP_INIT_DATA_END; i++)
-+ {
-+ int adr = scp_init[i] >> 16;
-+ SCP_JC_REG(adr) = scp_init[i] & 0xFFFF;
-+ }
-+ keep_vs[1] = NO_KEEP_VS;
-+ keep_rd[1] = 0;
-+#endif
- }
-
- static void sharpsl_cf_status_change(int irq, void *dev, struct pt_regs *regs){
-@@ -167,10 +187,16 @@
- /* set GPIO_CF_CD & GPIO_CF_IRQ as inputs */
- GPDR(GPIO_CF_CD) &= ~GPIO_bit(GPIO_CF_CD);
- GPDR(GPIO_CF_IRQ) &= ~GPIO_bit(GPIO_CF_IRQ);
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ GPDR(GPIO_JC_CF_IRQ) &= ~GPIO_bit(GPIO_JC_CF_IRQ);
-+#endif
-
- /* Set transition detect */
- set_GPIO_IRQ_edge( GPIO_CF_CD, GPIO_FALLING_EDGE );
- set_GPIO_IRQ_edge( GPIO_CF_IRQ, GPIO_FALLING_EDGE );
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ set_GPIO_IRQ_edge( GPIO_JC_CF_IRQ, GPIO_FALLING_EDGE );
-+#endif
-
- /* Register interrupts */
- irq = IRQ_GPIO_CF_CD;
-@@ -181,6 +207,10 @@
- /* enable interrupt */
- SCP_REG_IMR = 0x00C0;
- SCP_REG_MCR = 0x0101;
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ SCP_JC_REG_IMR = 0x00C0;
-+ SCP_JC_REG_MCR = 0x0101;
-+#endif
- keep_vs[0] = keep_vs[1] = NO_KEEP_VS;
-
- /* There's only one slot, but it's "Slot 0": */
-@@ -240,6 +270,20 @@
- is16 = (ASIC3_GPIO_PSTS_D & CF_IOIS) ? 0 : 1;
- #else
- cpr = SCP_REG_CPR;
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if( (cpr & 0x0080) && ((cpr & 0x8040) != 0x8040) ){
-+ extern int sharpsl_main_bk_flag;
-+
-+ printk(KERN_ERR "%s(): CPR=%04X, Low voltage!\n",
-+ __FUNCTION__, cpr);
-+ if ( sharpsl_main_bk_flag ) {
-+ handle_scancode(SLKEY_OFF|KBDOWN , 1);
-+ mdelay(30);
-+ handle_scancode(SLKEY_OFF|KBUP , 0);
-+ mdelay(30);
-+ }
-+ }
-+#endif
- //SCP_REG_CDR = 0x0002;
- SCP_REG_IRM = 0x00FF;
- SCP_REG_ISR = 0x0000;
-@@ -277,9 +321,67 @@
- state_array->state[0].vs_Xv = (csr & 0x0080)? 0:1;
-
- if( (cpr & 0x0080) && ((cpr & 0x8040) != 0x8040) ){
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+#if 0
-+ if (!current_cardslot_error(0)) {
-+ force_cardslot_suspend(0);
-+ }
-+#endif
-+#else
- printk(KERN_ERR "%s(): CPR=%04X, Low voltage!\n",
- __FUNCTION__, cpr);
-+#endif
- }
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ cpr = SCP_JC_REG_CPR;
-+ //SCP_REG_CDR = 0x0002;
-+ SCP_JC_REG_IRM = 0x00FF;
-+ SCP_JC_REG_ISR = 0x0000;
-+ SCP_JC_REG_IRM = 0x0000;
-+ csr = SCP_JC_REG_CSR;
-+ if( csr & 0x0004 ){
-+ /* card eject */
-+ SCP_JC_REG_CDR = 0x0000;
-+ keep_vs[1] = NO_KEEP_VS;
-+ }
-+ else if( !(keep_vs[1] & NO_KEEP_VS) ){
-+ /* keep vs1,vs2 */
-+ SCP_JC_REG_CDR = 0x0000;
-+ csr |= keep_vs[1];
-+ }
-+ else if( cpr & 0x0003 ){
-+ /* power on */
-+ SCP_JC_REG_CDR = 0x0000;
-+ keep_vs[1] = (csr & 0x00C0);
-+ }
-+ else{ /* card detect */
-+ SCP_JC_REG_CDR = 0x0002;
-+ }
-+
-+#ifdef SHARPSL_PCMCIA_DEBUG
-+ printk("%s(): slot1 cpr=%04X, csr=%04X\n", __FUNCTION__, cpr, csr);
-+#endif
-+
-+ state_array->state[1].detect = (csr & 0x0004)? 0:1;
-+ state_array->state[1].ready = (csr & 0x0002)? 1:0;
-+ state_array->state[1].bvd1 = (csr & 0x0010)? 1:0;
-+ state_array->state[1].bvd2 = (csr & 0x0020)? 1:0;
-+ state_array->state[1].wrprot = (csr & 0x0008)? 1:0;
-+ state_array->state[1].vs_3v = (csr & 0x0040)? 0:1;
-+ state_array->state[1].vs_Xv = (csr & 0x0080)? 0:1;
-+
-+ if( (cpr & 0x0080) && ((cpr & 0x8040) != 0x8040) ){
-+#if 0
-+ printk(KERN_ERR "%s(): slot1 CPR=%04X, Low voltage!\n",
-+ __FUNCTION__, cpr);
-+#else
-+ if (!current_cardslot_error(1)) {
-+ force_cardslot_suspend(1);
-+ set_jacketslot_error(1);
-+ }
-+#endif
-+ }
-+#endif
- #endif
-
- return 1;
-@@ -296,6 +398,10 @@
- #else
- info->irq=IRQ_GPIO_CF_IRQ;
- #endif
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ } else if (info->sock == 1) {
-+ info->irq=IRQ_GPIO_JC_CF_IRQ;
-+#endif
- }
-
- return 0;
-@@ -313,8 +419,10 @@
- if (configure->sock > 1)
- return -1;
-
-+#if !defined(CONFIG_ARCH_PXA_TOSA)
- if (configure->sock != 0)
- return 0;
-+#endif
-
- #ifdef SHARPSL_PCMCIA_DEBUG
- printk("%s(): sk=%d, vc=%d, vp=%d, m=%04X, oe=%d, rs=%d, io=%d\n",
-@@ -419,88 +527,205 @@
-
- #else
-
-+#if defined(CONFIG_PM)
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if (configure->sock == 1) { // for socket1(Jacket)
-+ switch( configure->vcc ){
-+ case 0: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA2, 0); break;
-+ case 33: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA2, 1); break;
-+ case 50: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA2, 1); break;
-+ default:
-+ printk(KERN_ERR "%s(): unrecognized Vcc %u\n",
-+ __FUNCTION__, configure->vcc);
-+ return -1;
-+ }
-+ } else {
-+#endif
- switch( configure->vcc ){
- case 0: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA, 0); break;
- case 33: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA, 1); break;
-- case 50: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA, 1); break;
-+ case 50:
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if (configure->sock == 0) {
-+ printk(KERN_ERR "%s(): unrecognized Vcc %u\n",
-+ __FUNCTION__, configure->vcc);
-+ return -1;
-+ }
-+#endif
-+ sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA, 1); break;
- default:
- printk(KERN_ERR "%s(): unrecognized Vcc %u\n",
- __FUNCTION__, configure->vcc);
- return -1;
- }
--
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ }
-+#endif
- if ( !sharpsl_batt_err )
-- return -1;
-+ return -1;
-+#endif
-
-- if( (configure->vpp!=configure->vcc) && (configure->vpp!=0) ){
-- printk(KERN_ERR "%s(): CF slot cannot support Vpp %u\n",
-- __FUNCTION__, configure->vpp);
-- return -1;
-- }
-+ if (configure->sock == 0) {
-+ if( (configure->vpp!=configure->vcc) && (configure->vpp!=0) ){
-+ printk(KERN_ERR "%s(): CF slot cannot support Vpp %u\n",
-+ __FUNCTION__, configure->vpp);
-+ return -1;
-+ }
-+ save_flags_cli(flags);
-
-- save_flags_cli(flags);
-+ nmcr = (mcr = SCP_REG_MCR) & ~0x0010;
-+ ncpr = (cpr = SCP_REG_CPR) & ~0x0083;
-+ nccr = (ccr = SCP_REG_CCR) & ~0x0080;
-+ nimr = (imr = SCP_REG_IMR) & ~0x003E;
-+
-+ ncpr |= (configure->vcc == 33) ? 0x0001:
-+ (configure->vcc == 50) ? 0x0002:
-+ 0;
-+ nmcr |= (configure->flags&SS_IOCARD)? 0x0010: 0;
-+ ncpr |= (configure->flags&SS_OUTPUT_ENA)? 0x0080: 0;
-+ nccr |= (configure->flags&SS_RESET)? 0x0080: 0;
-+ nimr |= ((configure->masks&SS_DETECT) ? 0x0004: 0)|
-+ ((configure->masks&SS_READY) ? 0x0002: 0)|
-+ ((configure->masks&SS_BATDEAD)? 0x0010: 0)|
-+ ((configure->masks&SS_BATWARN)? 0x0020: 0)|
-+ ((configure->masks&SS_STSCHG) ? 0x0010: 0)|
-+ ((configure->masks&SS_WRPROT) ? 0x0008: 0);
-+
-+ if( !(ncpr & 0x0003) )
-+ keep_rd[0] = 0;
-+ else if( !(keep_rd[0] & RESET_DONE) ){
-+ if( nccr & 0x0080 )
-+ keep_rd[0] |= RESET_DONE;
-+ else nccr |= 0x0080;
-+ }
-+
-+ if( mcr != nmcr )
-+ SCP_REG_MCR = nmcr;
-+ if( cpr != ncpr )
-+ SCP_REG_CPR = ncpr;
-+ if( ccr != nccr )
-+ SCP_REG_CCR = nccr;
-+ if( imr != nimr )
-+ SCP_REG_IMR = nimr;
-+
-+ restore_flags(flags);
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ } else if (configure->sock == 1) {
-+ if( (configure->vpp!=configure->vcc) && (configure->vpp!=0) ){
-+ printk(KERN_ERR "%s(): CF slot1 cannot support Vpp %u\n",
-+ __FUNCTION__, configure->vpp);
-+ return -1;
-+ }
-+ save_flags_cli(flags);
-
-- nmcr = (mcr = SCP_REG_MCR) & ~0x0010;
-- ncpr = (cpr = SCP_REG_CPR) & ~0x0083;
-- nccr = (ccr = SCP_REG_CCR) & ~0x0080;
-- nimr = (imr = SCP_REG_IMR) & ~0x003E;
--
-- ncpr |= (configure->vcc == 33) ? 0x0001:
-- (configure->vcc == 50) ? 0x0002:
-- 0;
-- nmcr |= (configure->flags&SS_IOCARD)? 0x0010: 0;
-- ncpr |= (configure->flags&SS_OUTPUT_ENA)? 0x0080: 0;
-- nccr |= (configure->flags&SS_RESET)? 0x0080: 0;
-- nimr |= ((configure->masks&SS_DETECT) ? 0x0004: 0)|
-- ((configure->masks&SS_READY) ? 0x0002: 0)|
-- ((configure->masks&SS_BATDEAD)? 0x0010: 0)|
-- ((configure->masks&SS_BATWARN)? 0x0020: 0)|
-- ((configure->masks&SS_STSCHG) ? 0x0010: 0)|
-- ((configure->masks&SS_WRPROT) ? 0x0008: 0);
--
-- if( !(ncpr & 0x0003) )
-- keep_rd[0] = 0;
-- else if( !(keep_rd[0] & RESET_DONE) ){
-- if( nccr & 0x0080 )
-- keep_rd[0] |= RESET_DONE;
-- else nccr |= 0x0080;
-- }
--
-- if( mcr != nmcr )
-- SCP_REG_MCR = nmcr;
-- if( cpr != ncpr )
-- SCP_REG_CPR = ncpr;
-- if( ccr != nccr )
-- SCP_REG_CCR = nccr;
-- if( imr != nimr )
-- SCP_REG_IMR = nimr;
-+ nmcr = (mcr = SCP_JC_REG_MCR) & ~0x0010;
-+ ncpr = (cpr = SCP_JC_REG_CPR) & ~0x0083;
-+ nccr = (ccr = SCP_JC_REG_CCR) & ~0x0080;
-+ nimr = (imr = SCP_JC_REG_IMR) & ~0x003E;
-+
-+ ncpr |= (configure->vcc == 33) ? 0x0001:
-+ (configure->vcc == 50) ? 0x0002:
-+ 0;
-+ nmcr |= (configure->flags&SS_IOCARD)? 0x0010: 0;
-+ ncpr |= (configure->flags&SS_OUTPUT_ENA)? 0x0080: 0;
-+ nccr |= (configure->flags&SS_RESET)? 0x0080: 0;
-+ nimr |= ((configure->masks&SS_DETECT) ? 0x0004: 0)|
-+ ((configure->masks&SS_READY) ? 0x0002: 0)|
-+ ((configure->masks&SS_BATDEAD)? 0x0010: 0)|
-+ ((configure->masks&SS_BATWARN)? 0x0020: 0)|
-+ ((configure->masks&SS_STSCHG) ? 0x0010: 0)|
-+ ((configure->masks&SS_WRPROT) ? 0x0008: 0);
-+
-+ if( !(ncpr & 0x0003) )
-+ keep_rd[1] = 0;
-+ else if( !(keep_rd[1] & RESET_DONE) ){
-+ if( nccr & 0x0080 )
-+ keep_rd[1] |= RESET_DONE;
-+ else nccr |= 0x0080;
-+ }
-+
-+ if( mcr != nmcr )
-+ SCP_JC_REG_MCR = nmcr;
-+ if( cpr != ncpr )
-+ SCP_JC_REG_CPR = ncpr;
-+ if( ccr != nccr )
-+ SCP_JC_REG_CCR = nccr;
-+ if( imr != nimr )
-+ SCP_JC_REG_IMR = nimr;
-
-- restore_flags(flags);
-+ restore_flags(flags);
-+#endif
-+ }
-
- #endif
-
- return 0;
- }
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+static int sharpsl_pcmcia_socket_init(int sock)
-+{
-+ /* enable interrupt */
-+ switch(sock) {
-+ case 0:
-+ SCP_REG_IMR = 0x00C0;
-+ SCP_REG_MCR = 0x0101;
-+ break;
-+ case 1:
-+ SCP_JC_REG_IMR = 0x00C0;
-+ SCP_JC_REG_MCR = 0x0101;
-+ break;
-+ default:
-+ return -1;
-+ }
-+ return 0;
-+}
-+#endif
-+
- struct pcmcia_low_level sharpsl_pcmcia_ops = {
- sharpsl_pcmcia_init,
- sharpsl_pcmcia_shutdown,
- sharpsl_pcmcia_socket_state,
- sharpsl_pcmcia_get_irq_info,
-- sharpsl_pcmcia_configure_socket
-+ sharpsl_pcmcia_configure_socket,
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ sharpsl_pcmcia_socket_init,
-+#endif
- };
-
--int is_pcmcia_card_present(int slot)
-+int is_pcmcia_card_present(int irq)
- {
- int detect;
- #ifdef CONFIG_SABINAL_DISCOVERY
- detect = ((ASIC3_GPIO_PSTS_D & CF_DETECT) ? 0 : 1);
-+ //printk("is_card_present: irq=%d detect=%d\n", irq, detect);
-+ return detect;
- #else
-- int active;
-- active = (SCP_REG_CPR & 0x0003)? 1:0;
-- detect = (SCP_REG_CSR & 0x0004)? 0:1;
-+ int active = 0;
-+ if (irq == IRQ_GPIO_CF_IRQ) {
-+ active = (SCP_REG_CPR & 0x0003)? 1:0;
-+ detect = (SCP_REG_CSR & 0x0004)? 0:1;
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ } else if (irq == IRQ_GPIO_JC_CF_IRQ) {
-+ active = (SCP_JC_REG_CPR & 0x0003)? 1:0;
-+ detect = (SCP_JC_REG_CSR & 0x0004)? 0:1;
- #endif
-- //printk("is_card_present: detect=%d\n", detect);
-- //return detect;
-+ } else {
-+ /* unknown IRQ : return TRUE */
-+ return 1;
-+ }
-+ //printk("is_card_present: irq=%d detect=%d active=%d\n", irq, detect, active);
- return detect & active;
-+#endif
-+}
-+
-+int sharpsl_pcmcia_irq_to_sock(int irq)
-+{
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+ if (irq == IRQ_GPIO_JC_CF_IRQ) {
-+ return 1;
-+ }
-+#endif
-+ return 0;
- }
-+
-diff -Nur linux_c860_org/drivers/sbus/char/rtc.c linux/drivers/sbus/char/rtc.c
---- linux_c860_org/drivers/sbus/char/rtc.c 2002-08-26 14:39:04.000000000 +0900
-+++ linux/drivers/sbus/char/rtc.c 2004-06-10 21:09:10.000000000 +0900
-@@ -89,6 +89,7 @@
- switch (cmd)
- {
- case RTCGET:
-+ memset(&rtc_tm, 0, sizeof(struct rtc_time));
- get_rtc_time(&rtc_tm);
-
- if (copy_to_user((struct rtc_time*)arg, &rtc_tm, sizeof(struct rtc_time)))
-diff -Nur linux_c860_org/drivers/sound/Config.in linux/drivers/sound/Config.in
---- linux_c860_org/drivers/sound/Config.in 2002-10-11 21:13:04.000000000 +0900
-+++ linux/drivers/sound/Config.in 2004-06-10 21:09:10.000000000 +0900
-@@ -224,6 +224,8 @@
- dep_tristate ' Intel PXA250/210 AC97 audio' CONFIG_SOUND_PXA_AC97 $CONFIG_ARCH_PXA $CONFIG_SOUND
- dep_tristate ' Poodle audio support' CONFIG_SOUND_POODLE $CONFIG_ARCH_PXA $CONFIG_SOUND
- dep_tristate ' Corgi audio support' CONFIG_SOUND_CORGI $CONFIG_ARCH_PXA $CONFIG_SOUND
-+ dep_tristate ' Tosa audio support' CONFIG_SOUND_TOSA $CONFIG_AC97_TOSA $CONFIG_SOUND
-+ dep_tristate ' Tosa buzzer support' CONFIG_BUZZER_TOSA $CONFIG_SOUND_TOSA
- fi
-
- dep_tristate ' TV card (bt848) mixer support' CONFIG_SOUND_TVMIXER $CONFIG_SOUND $CONFIG_I2C
-diff -Nur linux_c860_org/drivers/sound/Makefile linux/drivers/sound/Makefile
---- linux_c860_org/drivers/sound/Makefile 2002-10-11 21:13:04.000000000 +0900
-+++ linux/drivers/sound/Makefile 2004-06-10 21:09:10.000000000 +0900
-@@ -11,7 +11,7 @@
- msnd.o opl3.o sb_common.o sequencer_syms.o \
- sound_core.o sound_syms.o uart401.o \
- nm256_audio.o ac97.o ac97_codec.o aci.o \
-- sa1100-audio.o pxa-audio.o pxa-ac97.o
-+ sa1100-audio.o pxa-audio.o pxa-ac97.o pxa-ac97_tosa.o
-
- # Each configuration option enables a list of files.
-
-@@ -88,6 +88,7 @@
- obj-$(CONFIG_SOUND_DISCOVERY) += discovery_audio.o i2sc.o
- obj-$(CONFIG_SOUND_POODLE) += pxa-i2s.o poodle_i2sc.o poodle_wm8731.o
- obj-$(CONFIG_SOUND_CORGI) += pxa-i2s_corgi.o poodle_i2sc.o poodle_wm8731.o
-+obj-$(CONFIG_SOUND_TOSA) += pxa-ac97_tosa.o tosa_wm9712.o
-
- ifeq ($(CONFIG_MIDI_EMU10K1),y)
- obj-$(CONFIG_SOUND_EMU10K1) += sound.o
-diff -Nur linux_c860_org/drivers/sound/pxa-ac97_tosa.c linux/drivers/sound/pxa-ac97_tosa.c
---- linux_c860_org/drivers/sound/pxa-ac97_tosa.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/sound/pxa-ac97_tosa.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,2250 @@
-+/*
-+ * linux/drivers/sound/pxa-ac97_tosa.c
-+ *
-+ * AC97 interface for the Tosa chip
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * Based on:
-+ * linux/drivers/sound/pxa-ac97.c -- AC97 interface for the Cotula chip
-+ * Author: Nicolas Pitre
-+ * Created: Aug 15, 2001
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * 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.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/slab.h>
-+#include <linux/pci.h>
-+#include <linux/completion.h>
-+#include <linux/delay.h>
-+#include <linux/poll.h>
-+#include <linux/sound.h>
-+#include <linux/soundcard.h>
-+#include <linux/ac97_codec.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/irq.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+#include <asm/dma.h>
-+
-+#include "pxa-audio.h"
-+
-+#include <asm/arch/tosa_wm9712.h>
-+
-+//struct ac97_codec *codec;
-+
-+/************************************************************
-+ * Debug
-+ ************************************************************/
-+#define DBG_LEVEL 0
-+
-+#define DBG_L0 0
-+#define DBG_L1 1
-+#define DBG_L2 2
-+#define DBG_L3 3
-+
-+#ifdef DBG_LEVEL
-+#define DEBUG(level, x, args...) \
-+ if ( level <= DBG_LEVEL ) printk("%s: " x,__FUNCTION__ ,##args)
-+#else
-+#define DEBUG(level, x, args...) \
-+ if ( !level ) printk("%s: " x,__FUNCTION__ ,##args)
-+#endif /* DBG_LEVEL */
-+
-+/************************************************************
-+ * Some declarations
-+ ************************************************************/
-+#define SND_DEV_STATUS 6 /* /dev/sndstat for Compatible for Collie */
-+
-+#define AUDIO_NBFRAGS_DEFAULT 8
-+#define AUDIO_FRAGSIZE_DEFAULT 8192
-+
-+#define MAX_DMA_SIZE 4096
-+#define DMA_DESC_SIZE sizeof(pxa_dma_desc)
-+
-+#define IOCTL_IN(arg, ret) \
-+ do { int error = get_user(ret, (int *)(arg)); \
-+ if (error) return error; \
-+ } while (0)
-+#define IOCTL_OUT(arg, ret) ioctl_return((int *)(arg), ret)
-+
-+#define DMA_NO_INITIALIZED 1
-+#define ALARM_NO_MALLOC 1
-+#ifdef CONFIG_BUZZER_TOSA
-+#define BUZZER_FORCE_CLOSE 1
-+#else
-+#undef BUZZER_FORCE_CLOSE
-+#endif /* CONFIG_BUZZER_TOSA */
-+
-+/************************************************************
-+ * Power maneagement
-+ ************************************************************/
-+#ifdef CONFIG_PM
-+#include <linux/pm.h>
-+static struct pm_dev* pxa_sound_pm_dev;
-+static int tosa_pm_callback(struct pm_dev *,pm_request_t, void *);
-+extern void tosa_ts_suspend(void);
-+extern void tosa_ts_resume(void);
-+#endif /* CONFIG_PM */
-+
-+/************************************************************
-+ * valiables
-+ ************************************************************/
-+static ssize_t (*ct_func)
-+ (const u_char *, size_t, u_char *, ssize_t *, ssize_t) = NULL;
-+static ssize_t (*ct_read_func)
-+ (const u_char *, size_t, u_char *, ssize_t *, ssize_t) = NULL;
-+
-+static int tosa_intmode = 0;
-+static int tosa_intmode_speed = 0;
-+static int tosa_intmode_direct = 0;
-+static short *int_data_org = NULL ;
-+#ifdef ALARM_NO_MALLOC
-+static int tosa_intmode_cur = 0;
-+static int tosa_intmode_step = 0;
-+#else /* ALARM_NO_MALLOC */
-+static short *int_data = NULL ;
-+#endif /* ALARM_NO_MALLOC */
-+
-+#if defined(BUZZER_FORCE_CLOSE) && defined(CONFIG_BUZZER_TOSA)
-+#define WAIT_BZ_RELEASE ( ( 2 * 1000 ) / 10 )
-+static int buzzer_open = 0;
-+static int buzzer_close = 0;
-+#endif /* BUZZER_FORCE_CLOSE */
-+
-+extern int wm9712_mono_out; // mix output data into mono
-+
-+/************************************************************
-+ * Prototype
-+ ************************************************************/
-+static int tosa_init(void);
-+static int tosa_set_volume(int);
-+static int tosa_set_stereo(int);
-+static int tosa_set_format(int);
-+static int tosa_set_gain(int);
-+static int tosa_get_gain(void);
-+static int tosa_get_volume(void);
-+static int tosa_set_freq(int);
-+static int mixer_ioctl
-+ (struct inode *, struct file *,unsigned int, unsigned long);
-+static void tosa_intmode_mix(unsigned char *,int);
-+
-+/************************************************************
-+ * Machine definitions
-+ ************************************************************/
-+typedef struct {
-+ ssize_t (*ct_ulaw)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-+ ssize_t (*ct_alaw)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-+ ssize_t (*ct_s8)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-+ ssize_t (*ct_u8)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-+ ssize_t (*ct_s16be)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-+ ssize_t (*ct_u16be)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-+ ssize_t (*ct_s16le)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-+ ssize_t (*ct_u16le)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-+} TRANS;
-+
-+typedef struct {
-+ int (*init)(void);
-+ void (*silence)(void);
-+ int (*setFormat)(int);
-+ int (*setVolume)(int);
-+ int (*getVolume)(void);
-+ int (*setStereo)(int);
-+ int (*setBass)(int);
-+ int (*setTreble)(int);
-+ int (*setGain)(int);
-+ int (*getGain)(void);
-+ int (*setFreq)(int);
-+ void (*play)(void);
-+} PLATFORM;
-+
-+static PLATFORM mach_tosa = {
-+ tosa_init, // void init(void)
-+ NULL, // void silence(void)
-+ tosa_set_format, // int setFormat(int)
-+ tosa_set_volume, // int setVolume(int)
-+ tosa_get_volume, // int getVolume(void)
-+ tosa_set_stereo, // int setStereo(int)
-+ NULL, // int setBass(int)
-+ NULL, // int setTreble(int)
-+ tosa_set_gain, // int setGain(int)
-+ tosa_get_gain, // int getGain(void)
-+ tosa_set_freq, // int setFreq(int)
-+ NULL, // void play(void)
-+};
-+
-+/************************************************************
-+ * /dev/setting
-+ ************************************************************/
-+struct sound_settings {
-+ PLATFORM mach; /* platform dependent things */
-+ TRANS *trans; /* supported translations */
-+ TRANS *trans_read; /* supported translations */
-+ unsigned short mode;
-+ int format; /* AFMT_* */
-+ int stereo; /* 0 = mono, 1 = stereo */
-+ int size; /* 8/16 bit*/
-+ int freq; /* freq */
-+ int volume_left; /* volume (range is 0 - 100%) */
-+ int volume_right;
-+ int gain_left; /* input gain (range is 0 - 100%) */
-+ int gain_right;
-+ int bass; /* tone (not support) */
-+ int treble;
-+ /* device independ */
-+ // int gain_shift; /* input gain shift */
-+ // int gain; /* input gain */
-+};
-+static struct sound_settings sound;
-+
-+/* /dev/sndstat */
-+struct sound_state {
-+ int dev_state;
-+ int busy;
-+ char buf[512];
-+ int len, ptr;
-+};
-+static struct sound_state tosa_sound_state;
-+
-+static audio_stream_t ac97_audio_out = {
-+ name: "AC97 audio out",
-+ dcmd: DCMD_TXPCDR,
-+ drcmr: &DRCMRTXPCDR,
-+ dev_addr: __PREG(PCDR),
-+};
-+
-+static audio_stream_t ac97_audio_in = {
-+ name: "AC97 audio in",
-+ dcmd: DCMD_RXPCDR,
-+ drcmr: &DRCMRRXPCDR,
-+ dev_addr: __PREG(PCDR),
-+};
-+
-+static audio_state_t ac97_audio_state = {
-+ output_stream: &ac97_audio_out,
-+ input_stream: &ac97_audio_in,
-+ sem: __MUTEX_INITIALIZER(ac97_audio_state.sem),
-+};
-+
-+#if 0
-+typedef struct {
-+ int shift;
-+ int gain;
-+} input_gain_t;
-+
-+static input_gain_t input_gain[7] = {
-+ { 2 , 0 },
-+ { 0 , 1 },
-+ { 1 , 1 },
-+ { 2 , 1 },
-+ { 3 , 1 },
-+ { 4 , 1 },
-+ { 5 , 1 }
-+};
-+#endif
-+
-+/************************************************************
-+ * data convert
-+ ************************************************************/
-+/* 16 bit mu-law */
-+static short ulaw2dma16[] = {
-+ -32124, -31100, -30076, -29052, -28028, -27004, -25980, -24956,
-+ -23932, -22908, -21884, -20860, -19836, -18812, -17788, -16764,
-+ -15996, -15484, -14972, -14460, -13948, -13436, -12924, -12412,
-+ -11900, -11388, -10876, -10364, -9852, -9340, -8828, -8316,
-+ -7932, -7676, -7420, -7164, -6908, -6652, -6396, -6140,
-+ -5884, -5628, -5372, -5116, -4860, -4604, -4348, -4092,
-+ -3900, -3772, -3644, -3516, -3388, -3260, -3132, -3004,
-+ -2876, -2748, -2620, -2492, -2364, -2236, -2108, -1980,
-+ -1884, -1820, -1756, -1692, -1628, -1564, -1500, -1436,
-+ -1372, -1308, -1244, -1180, -1116, -1052, -988, -924,
-+ -876, -844, -812, -780, -748, -716, -684, -652,
-+ -620, -588, -556, -524, -492, -460, -428, -396,
-+ -372, -356, -340, -324, -308, -292, -276, -260,
-+ -244, -228, -212, -196, -180, -164, -148, -132,
-+ -120, -112, -104, -96, -88, -80, -72, -64,
-+ -56, -48, -40, -32, -24, -16, -8, 0,
-+ 32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956,
-+ 23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764,
-+ 15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412,
-+ 11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316,
-+ 7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140,
-+ 5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092,
-+ 3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004,
-+ 2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980,
-+ 1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436,
-+ 1372, 1308, 1244, 1180, 1116, 1052, 988, 924,
-+ 876, 844, 812, 780, 748, 716, 684, 652,
-+ 620, 588, 556, 524, 492, 460, 428, 396,
-+ 372, 356, 340, 324, 308, 292, 276, 260,
-+ 244, 228, 212, 196, 180, 164, 148, 132,
-+ 120, 112, 104, 96, 88, 80, 72, 64,
-+ 56, 48, 40, 32, 24, 16, 8, 0,
-+};
-+
-+/* 16 bit A-law */
-+static short alaw2dma16[] = {
-+ -5504, -5248, -6016, -5760, -4480, -4224, -4992, -4736,
-+ -7552, -7296, -8064, -7808, -6528, -6272, -7040, -6784,
-+ -2752, -2624, -3008, -2880, -2240, -2112, -2496, -2368,
-+ -3776, -3648, -4032, -3904, -3264, -3136, -3520, -3392,
-+ -22016, -20992, -24064, -23040, -17920, -16896, -19968, -18944,
-+ -30208, -29184, -32256, -31232, -26112, -25088, -28160, -27136,
-+ -11008, -10496, -12032, -11520, -8960, -8448, -9984, -9472,
-+ -15104, -14592, -16128, -15616, -13056, -12544, -14080, -13568,
-+ -344, -328, -376, -360, -280, -264, -312, -296,
-+ -472, -456, -504, -488, -408, -392, -440, -424,
-+ -88, -72, -120, -104, -24, -8, -56, -40,
-+ -216, -200, -248, -232, -152, -136, -184, -168,
-+ -1376, -1312, -1504, -1440, -1120, -1056, -1248, -1184,
-+ -1888, -1824, -2016, -1952, -1632, -1568, -1760, -1696,
-+ -688, -656, -752, -720, -560, -528, -624, -592,
-+ -944, -912, -1008, -976, -816, -784, -880, -848,
-+ 5504, 5248, 6016, 5760, 4480, 4224, 4992, 4736,
-+ 7552, 7296, 8064, 7808, 6528, 6272, 7040, 6784,
-+ 2752, 2624, 3008, 2880, 2240, 2112, 2496, 2368,
-+ 3776, 3648, 4032, 3904, 3264, 3136, 3520, 3392,
-+ 22016, 20992, 24064, 23040, 17920, 16896, 19968, 18944,
-+ 30208, 29184, 32256, 31232, 26112, 25088, 28160, 27136,
-+ 11008, 10496, 12032, 11520, 8960, 8448, 9984, 9472,
-+ 15104, 14592, 16128, 15616, 13056, 12544, 14080, 13568,
-+ 344, 328, 376, 360, 280, 264, 312, 296,
-+ 472, 456, 504, 488, 408, 392, 440, 424,
-+ 88, 72, 120, 104, 24, 8, 56, 40,
-+ 216, 200, 248, 232, 152, 136, 184, 168,
-+ 1376, 1312, 1504, 1440, 1120, 1056, 1248, 1184,
-+ 1888, 1824, 2016, 1952, 1632, 1568, 1760, 1696,
-+ 688, 656, 752, 720, 560, 528, 624, 592,
-+ 944, 912, 1008, 976, 816, 784, 880, 848,
-+};
-+
-+static ssize_t tosa_ct_law(const u_char *userPtr, size_t userCount,
-+ u_char frame[], ssize_t *frameUsed, ssize_t frameLeft)
-+{
-+ short *table = sound.format == AFMT_MU_LAW ? ulaw2dma16: alaw2dma16;
-+ ssize_t count, used;
-+ short *p = (short *) &frame[*frameUsed];
-+ int val, stereo = sound.stereo;
-+
-+ frameLeft >>= 2;
-+ if (stereo)
-+ userCount >>= 1;
-+ used = count = min(userCount, frameLeft);
-+ while (count > 0) {
-+ u_char data;
-+ if (get_user(data, userPtr++)) {
-+ return -EFAULT;
-+ }
-+ val = table[data];
-+ *p++ = val; /* Left Ch. */
-+ if (stereo) {
-+ if (get_user(data, userPtr++)) {
-+ return -EFAULT;
-+ }
-+ val = table[data];
-+ }
-+ *p++ = val; /* Right Ch. */
-+ count--;
-+ }
-+ *frameUsed += used * 4;
-+ return stereo? used * 2: used;
-+}
-+
-+static ssize_t tosa_ct_u8(const u_char *userPtr, size_t userCount,
-+ u_char frame[], ssize_t *frameUsed, ssize_t frameLeft)
-+{
-+ int ch = (sound.stereo)?2:1;
-+ unsigned char *src = (unsigned char *)userPtr;
-+ short *dstct = (short *)frame;
-+ short tmpval;
-+ int frameMax = frameLeft >> 2;
-+ int userMax = userCount >> (ch-1);
-+ int idx,samplingCount = min(frameMax,userMax);
-+
-+ if (!wm9712_mono_out || ch==1) {
-+ for (idx=0; idx<samplingCount; idx++) {
-+ if (get_user(tmpval,src)) {
-+ return -EFAULT;
-+ }
-+ *dstct++ = (tmpval-128)<<8;
-+ if (ch>1) src++;
-+ if (get_user(tmpval,src++)) {
-+ return -EFAULT;
-+ }
-+ *dstct++ = (tmpval-128)<<8;
-+ }
-+ } else {
-+ short vall,valr;
-+ for (idx=0; idx<samplingCount; idx++) {
-+ if (get_user(vall,src++) || get_user(valr,src++)) {
-+ return -EFAULT;
-+ }
-+ vall = (vall-128)<<8;
-+ valr = (valr-128)<<8;
-+ vall = vall/2+valr/2;
-+ *dstct++ = vall;
-+ *dstct++ = vall;
-+ }
-+ }
-+
-+ *frameUsed = samplingCount * 2 * 2; // dma is always stereo 16bit
-+ return samplingCount * ch;
-+}
-+
-+static ssize_t tosa_ct_s16(const u_char *userPtr, size_t userCount,
-+ u_char frame[], ssize_t *frameUsed, ssize_t frameLeft)
-+{
-+ int ch = (sound.stereo)?2:1;
-+ short *src = (short *)userPtr;
-+ short *dstct = (short *)frame;
-+ int frameMax = frameLeft >> 2;
-+ int userMax = userCount >> ch;
-+ int samplingCount = min(frameMax,userMax);
-+
-+ if ( ch > 1 ) { // stereo
-+ if (!wm9712_mono_out) {
-+ if (copy_from_user(dstct,src,samplingCount * ch * 2)) {
-+ return -EFAULT;
-+ }
-+ } else {
-+ int idx;
-+ short vall,valr;
-+ for (idx=0; idx<samplingCount; idx++) {
-+ if (get_user(vall,src++) || get_user(valr,src++)) {
-+ return -EFAULT;
-+ }
-+ vall = vall/2+valr/2;
-+ *dstct++ = vall;
-+ *dstct++ = vall;
-+ }
-+ }
-+ } else { // mono
-+ int idx;
-+ for (idx=0; idx<samplingCount; idx++) {
-+ if (get_user(*dstct++,src) || get_user(*dstct++,src++)) {
-+ return -EFAULT;
-+ }
-+ }
-+ }
-+
-+ *frameUsed = samplingCount * 2 * 2; // dma is always stereo 16bit
-+ return samplingCount * ch * 2;
-+}
-+
-+static TRANS trans_tosa = {
-+ tosa_ct_law,tosa_ct_law,0,tosa_ct_u8,0,0,tosa_ct_s16,0
-+};
-+
-+/* data convert for recording */
-+static ssize_t tosa_ct_read_u8(const u_char *userPtr, size_t userCount,
-+ u_char frame[], ssize_t *frameUsed, ssize_t frameLeft)
-+{
-+ int ch = (sound.stereo)?2:1;
-+ unsigned char *usrbuf = (unsigned char *)userPtr;
-+ short *dmabuf = (short *)frame;
-+ short tmpval;
-+ int dmaMax = frameLeft >> 2; // dma is always stereo
-+ int userMax = userCount >> ch;
-+ int ct,samplingCount = min(dmaMax,userMax);
-+
-+ for (ct=0; ct<samplingCount; ct++) {
-+ dmabuf++; // use right data
-+ tmpval = *dmabuf>>8;
-+ if (tmpval>127) tmpval = 127;
-+ else if (tmpval<-128) tmpval = -128;
-+ if (put_user((unsigned char)(tmpval+128),usrbuf++)) { // left channel
-+ return -EFAULT;
-+ }
-+ if (ch>1) { // right channel
-+ tmpval = *dmabuf>>8;
-+ if (tmpval>127) tmpval = 127;
-+ else if (tmpval<-128) tmpval = -128;
-+ if (put_user((unsigned char)(tmpval+128),usrbuf++)) {
-+ return -EFAULT;
-+ }
-+ }
-+ dmabuf++;
-+ }
-+ *frameUsed = samplingCount * 2 * 2; // dma is always stereo
-+ return samplingCount * ch;
-+}
-+
-+static ssize_t tosa_ct_read_s16(const u_char *userPtr, size_t userCount,
-+ u_char frame[], ssize_t *frameUsed, ssize_t frameLeft)
-+{
-+ int ch = (sound.stereo)?2:1;
-+ short *usrbuf = (short *)userPtr;
-+ short *dmabuf = (short *)frame;
-+ int dmaMax = frameLeft >> 2; // dma is always stereo
-+ int userMax = userCount >> ch;
-+ int ct,samplingCount = min(dmaMax,userMax);
-+
-+ for (ct=0; ct<samplingCount; ct++) {
-+ dmabuf++; // use right data
-+ if (put_user((*dmabuf),usrbuf++)) { // left channel
-+ return -EFAULT;
-+ }
-+ if (ch>1) { // right channel
-+ if (put_user(*dmabuf,usrbuf++)) {
-+ return -EFAULT;
-+ }
-+ }
-+ dmabuf++;
-+ }
-+ *frameUsed = samplingCount * 2 * 2; // dma is always stereo
-+ return samplingCount * ch * 2;
-+}
-+
-+static TRANS trans_r_tosa = {
-+ 0,0,0,tosa_ct_read_u8,0,0,tosa_ct_read_s16,0
-+};
-+
-+/************************************************************
-+ * Common stuff
-+ ************************************************************/
-+static inline int ioctl_return(int *addr, int value)
-+{
-+ if ( value < 0 ) return value;
-+ return put_user(value, addr) ? -EFAULT: 0;
-+}
-+
-+static inline void tosa_ac97_write(unsigned int data)
-+{
-+ while ( 1 ) {
-+ if ( (GPLR(GPIO31_SYNC) & GPIO_bit(GPIO31_SYNC)) == GPIO_bit(GPIO31_SYNC) )
-+ break;
-+ }
-+ PCDR = data;
-+}
-+
-+/************************************************************
-+ * This function frees all buffers
-+ ************************************************************/
-+
-+#define audio_clear_buf pxa_audio_clear_buf
-+
-+void pxa_audio_clear_buf(audio_stream_t * s)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ int frag;
-+
-+ if (!s->buffers)
-+ return;
-+
-+ /* Ensure DMA isn't running */
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ add_wait_queue(&s->stop_wq, &wait);
-+ DCSR(s->dma_ch) = DCSR_STOPIRQEN;
-+ schedule();
-+ remove_wait_queue(&s->stop_wq, &wait);
-+
-+ /* free DMA buffers */
-+ for (frag = 0; frag < s->nbfrags; frag++) {
-+ audio_buf_t *b = &s->buffers[frag];
-+ if (!b->master)
-+ continue;
-+ consistent_free(b->data, b->master, b->dma_desc->dsadr);
-+ }
-+
-+ /* free descriptor ring */
-+ if (s->buffers->dma_desc)
-+ consistent_free(s->buffers->dma_desc,
-+ s->nbfrags * s->descs_per_frag * DMA_DESC_SIZE,
-+ s->dma_desc_phys);
-+
-+ /* free buffer structure array */
-+ kfree(s->buffers);
-+ s->buffers = NULL;
-+}
-+
-+/************************************************************
-+ * This function allocates the DMA descriptor array and buffer data space
-+ * according to the current number of fragments and fragment size.
-+ ************************************************************/
-+static int audio_setup_buf(audio_stream_t * s)
-+{
-+ pxa_dma_desc *dma_desc;
-+ dma_addr_t dma_desc_phys;
-+ int nb_desc, frag, i, buf_size = 0;
-+ char *dma_buf = NULL;
-+ dma_addr_t dma_buf_phys = 0;
-+
-+ DEBUG(DBG_L2, "Enter audio_setup buffer\n");
-+
-+ if (s->buffers)
-+ return -EBUSY;
-+
-+ /* Our buffer structure array */
-+ s->buffers = kmalloc(sizeof(audio_buf_t) * s->nbfrags, GFP_KERNEL);
-+ if (!s->buffers)
-+ goto err;
-+ memzero(s->buffers, sizeof(audio_buf_t) * s->nbfrags);
-+ /*
-+ * Our DMA descriptor array:
-+ * for Each fragment we have one checkpoint descriptor plus one
-+ * descriptor per MAX_DMA_SIZE byte data blocks.
-+ */
-+ nb_desc = (1 + (s->fragsize + MAX_DMA_SIZE - 1)/MAX_DMA_SIZE) * s->nbfrags;
-+ dma_desc = consistent_alloc(GFP_KERNEL,
-+ nb_desc * DMA_DESC_SIZE, &dma_desc_phys);
-+ if (!dma_desc)
-+ goto err;
-+ s->descs_per_frag = nb_desc / s->nbfrags;
-+ s->buffers->dma_desc = dma_desc;
-+ s->dma_desc_phys = dma_desc_phys;
-+ for (i = 0; i < nb_desc - 1; i++)
-+ dma_desc[i].ddadr = dma_desc_phys + (i + 1) * DMA_DESC_SIZE;
-+ dma_desc[i].ddadr = dma_desc_phys;
-+
-+ /* Our actual DMA buffers */
-+ for (frag = 0; frag < s->nbfrags; frag++) {
-+ audio_buf_t *b = &s->buffers[frag];
-+ /*
-+ * Let's allocate non-cached memory for DMA buffers.
-+ * We try to allocate all memory at once.
-+ * If this fails (a common reason is memory fragmentation),
-+ * then we'll try allocating smaller buffers.
-+ */
-+ if (!buf_size) {
-+ buf_size = (s->nbfrags - frag) * s->fragsize;
-+ do {
-+ dma_buf = consistent_alloc(GFP_KERNEL,
-+ buf_size,
-+ &dma_buf_phys);
-+ if (!dma_buf)
-+ buf_size -= s->fragsize;
-+ } while (!dma_buf && buf_size);
-+ if (!dma_buf)
-+ goto err;
-+ b->master = buf_size;
-+ memzero(dma_buf, buf_size);
-+ }
-+
-+ /*
-+ * is always zero, we'll abuse the dsadr and dtadr fields
-+ * just in case this one is picked up by the hardware.
-+ * while processing SOUND_DSP_GETPTR.
-+ */
-+ dma_desc->dsadr = dma_buf_phys;
-+ dma_desc->dtadr = dma_buf_phys;
-+ dma_desc->dcmd = DCMD_ENDIRQEN;
-+ if (s->output && !s->mapped)
-+ dma_desc->ddadr |= DDADR_STOP;
-+ b->dma_desc = dma_desc++;
-+
-+ /* set up the actual data descriptors */
-+ for (i = 0; (i * MAX_DMA_SIZE) < s->fragsize; i++) {
-+ dma_desc[i].dsadr = (s->output) ?
-+ (dma_buf_phys + i*MAX_DMA_SIZE) : s->dev_addr;
-+ dma_desc[i].dtadr = (s->output) ?
-+ s->dev_addr : (dma_buf_phys + i*MAX_DMA_SIZE);
-+ dma_desc[i].dcmd = s->dcmd |
-+ ((s->fragsize < MAX_DMA_SIZE) ?
-+ s->fragsize : MAX_DMA_SIZE);
-+
-+ DEBUG(DBG_L3, "dsadr[%8x],dtadr[%8x],dcmd[%8x]\n",
-+ dma_desc[i].dsadr,dma_desc[i].dtadr,dma_desc[i].dcmd);
-+
-+ }
-+ dma_desc += i;
-+
-+ /* handle buffer pointers */
-+ b->data = dma_buf;
-+ dma_buf += s->fragsize;
-+ dma_buf_phys += s->fragsize;
-+ buf_size -= s->fragsize;
-+ }
-+
-+ s->usr_frag = s->dma_frag = 0;
-+ s->bytecount = 0;
-+ s->fragcount = 0;
-+ sema_init(&s->sem, (s->output) ? s->nbfrags : 0);
-+ return 0;
-+
-+err:
-+ DEBUG(DBG_L0, "unable to allocate audio memory\n ");
-+ audio_clear_buf(s);
-+ return -ENOMEM;
-+}
-+
-+/************************************************************
-+ * Our DMA interrupt handler
-+ ************************************************************/
-+static void audio_dma_irq(int ch, void *dev_id, struct pt_regs *regs)
-+{
-+ audio_stream_t *s = dev_id;
-+ u_int dcsr;
-+
-+ dcsr = DCSR(ch);
-+ DCSR(ch) = dcsr & ~DCSR_STOPIRQEN;
-+
-+ DEBUG(DBG_L2, "dcsr(ch) = %8x(%d)\n",dcsr,ch);
-+
-+ if (!s->buffers) {
-+ DEBUG(DBG_L0, "DMA: wow... received IRQ for channel %d but no buffer exists\n", ch);
-+ return;
-+ }
-+
-+ if (dcsr & DCSR_BUSERR)
-+ DEBUG(DBG_L0, "DMA: bus error interrupt on channel %d\n", ch);
-+
-+ if (dcsr & DCSR_ENDINTR) {
-+ u_long cur_dma_desc;
-+ u_int cur_dma_frag;
-+
-+ /*
-+ * Find out which DMA desc is current. Note that DDADR
-+ * points to the next desc, not the current one.
-+ */
-+ cur_dma_desc = DDADR(ch) - s->dma_desc_phys - DMA_DESC_SIZE;
-+
-+ /*
-+ * Let the compiler nicely optimize constant divisors into
-+ * multiplications for the common cases which is much faster.
-+ * Common cases: x = 1 + (1 << y) for y = [0..3]
-+ */
-+ switch (s->descs_per_frag) {
-+ case 2: cur_dma_frag = cur_dma_desc / (2*DMA_DESC_SIZE); break;
-+ case 3: cur_dma_frag = cur_dma_desc / (3*DMA_DESC_SIZE); break;
-+ case 5: cur_dma_frag = cur_dma_desc / (5*DMA_DESC_SIZE); break;
-+ case 9: cur_dma_frag = cur_dma_desc / (9*DMA_DESC_SIZE); break;
-+ default: cur_dma_frag =
-+ cur_dma_desc / (s->descs_per_frag * DMA_DESC_SIZE);
-+ }
-+
-+ /* Account for possible wrap back of cur_dma_desc above */
-+ if (cur_dma_frag >= s->nbfrags)
-+ cur_dma_frag = s->nbfrags - 1;
-+
-+ while (s->dma_frag != cur_dma_frag) {
-+ if (!s->mapped) {
-+ /*
-+ * This fragment is done - set the checkpoint
-+ * descriptor to STOP until it is gets
-+ * processed by the read or write function.
-+ */
-+ s->buffers[s->dma_frag].dma_desc->ddadr |= DDADR_STOP;
-+ up(&s->sem);
-+ }
-+ if (++s->dma_frag >= s->nbfrags)
-+ s->dma_frag = 0;/* Accounting */
-+ s->bytecount += s->fragsize;
-+ s->fragcount++;
-+ }
-+
-+ /* ... and for polling processes */
-+ wake_up(&s->frag_wq);
-+ }
-+
-+ if ((dcsr & DCSR_STOPIRQEN) && (dcsr & DCSR_STOPSTATE))
-+ wake_up(&s->stop_wq);
-+}
-+
-+/************************************************************
-+ * Validate and sets up buffer fragments, etc.
-+ ************************************************************/
-+static int audio_set_fragments(audio_stream_t *s, int val)
-+{
-+ if (s->mapped || DCSR(s->dma_ch) & DCSR_RUN)
-+ return -EBUSY;
-+ if (s->buffers)
-+ audio_clear_buf(s);
-+ s->nbfrags = (val >> 16) & 0x7FFF;
-+ val &= 0xffff;
-+ if (val < 5)
-+ val = 5;
-+ if (val > 15)
-+ val = 15;
-+ s->fragsize = 1 << val;
-+ if (s->nbfrags < 2)
-+ s->nbfrags = 2;
-+ if (s->nbfrags * s->fragsize > 256 * 1024)
-+ s->nbfrags = 256 * 1024 / s->fragsize;
-+ if (audio_setup_buf(s))
-+ return -ENOMEM;
-+ return val|(s->nbfrags << 16);
-+}
-+
-+/************************************************************
-+ * Detect HP Jack
-+ ************************************************************/
-+static void tosa_hp_thread(void)
-+{
-+ while(1) {
-+ wm9712_checkjack_sleep();
-+ wm9712_update_jack_state();
-+ }
-+}
-+
-+/************************************************************
-+ * Prototype functions
-+ ************************************************************/
-+static int tosa_init(void)
-+{
-+ if ( wm9712_init() ) {
-+ DEBUG(DBG_L0, "Fail Init\n");
-+ }
-+
-+ /* Make threads */
-+ kernel_thread(tosa_hp_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+}
-+
-+static int tosa_set_volume(int volume)
-+{
-+ sound.volume_left = volume & 0xff;
-+ if ( sound.volume_left > 100 ) sound.volume_left = 100;
-+ sound.volume_right = ( (volume & 0xff00) >> 8);
-+ if ( sound.volume_right > 100 ) sound.volume_right = 100;
-+
-+ wm9712_set_output_volume(sound.volume_left, sound.volume_right);
-+
-+ return 0;
-+}
-+
-+static int tosa_get_volume(void)
-+{
-+ return ( sound.volume_right << 8 | sound.volume_left );
-+}
-+
-+static int tosa_set_stereo(int stereo)
-+{
-+ if ( stereo < 0 ) return sound.stereo;
-+ stereo = !!stereo; /* should be 0 or 1 now */
-+ sound.stereo = stereo;
-+ return stereo;
-+}
-+
-+static int tosa_set_format(int format)
-+{
-+ int size;
-+
-+ switch ( format ) {
-+ case AFMT_QUERY:
-+ return sound.format;
-+ case AFMT_MU_LAW:
-+ size = 8;
-+ ct_func = sound.trans->ct_ulaw;
-+ break;
-+ case AFMT_A_LAW:
-+ size = 8;
-+ ct_func = sound.trans->ct_alaw;
-+ break;
-+#if 0 // unsupport
-+ case AFMT_S8:
-+ size = 8;
-+ ct_func = sound.trans->ct_s8;
-+ break;
-+ case AFMT_S16_BE:
-+ size = 16;
-+ ct_func = sound.trans->ct_s16be;
-+ break;
-+ case AFMT_U16_BE:
-+ size = 16;
-+ ct_func = sound.trans->ct_u16be;
-+ break;
-+ case AFMT_U16_LE:
-+ size = 16;
-+ ct_func = sound.trans->ct_u16le;
-+ break;
-+#endif
-+ case AFMT_U8:
-+ size = 8;
-+ ct_func = sound.trans->ct_u8;
-+ ct_read_func = sound.trans_read->ct_u8;
-+ break;
-+ case AFMT_S16_LE:
-+ size = 16;
-+ ct_func = sound.trans->ct_s16le;
-+ ct_read_func = sound.trans_read->ct_s16le;
-+ break;
-+ default: /* :-) */
-+ size = 16;
-+ format = AFMT_S16_LE;
-+ }
-+
-+ sound.format = format;
-+ sound.size = size;
-+ return format;
-+}
-+
-+static int tosa_set_gain(int gain)
-+{
-+ sound.gain_left = gain & 0xff;
-+ if ( sound.gain_left > 100 ) sound.gain_left = 100;
-+
-+ sound.gain_right = ( (gain & 0xff00) >> 8);
-+ if ( sound.gain_right > 100 ) sound.gain_right = 100;
-+
-+ wm9712_set_input_gain(sound.gain_left,sound.gain_right);
-+ return 1;
-+}
-+
-+static int tosa_get_gain(void)
-+{
-+ return ( sound.gain_right << 8 | sound.gain_left );
-+}
-+
-+static int tosa_set_freq(int speed)
-+{
-+ if ( speed < 0 ) return sound.freq;
-+ sound.freq = speed;
-+ if( wm9712_busy() ) {
-+ SOUND_SETTINGS setting;
-+ setting.mode = sound.mode;
-+ setting.frequency = sound.freq;
-+ wm9712_set_freq(&setting);
-+ }
-+ return sound.freq;
-+}
-+
-+/************************************************************
-+ * Audio stuff
-+ ************************************************************/
-+static int audio_open(struct inode *inode, struct file *file)
-+{
-+ audio_state_t *state = &ac97_audio_state;
-+ audio_stream_t *is = state->input_stream;
-+ audio_stream_t *os = state->output_stream;
-+ SOUND_SETTINGS settings;
-+ int ret = 0;
-+
-+ down(&state->sem);
-+ ret = -ENODEV;
-+ /* access control */
-+ if ( (file->f_mode & FMODE_WRITE) && !os )
-+ goto out;
-+ if ( (file->f_mode & FMODE_READ) && !is )
-+ goto out;
-+ ret = -EBUSY;
-+
-+ if ( state->wr_ref || state->rd_ref )
-+#ifdef BUZZER_FORCE_CLOSE
-+ {
-+ if( !buzzer_open ) {
-+ goto out;
-+ } else {
-+ int now;
-+
-+ // force close buzzer
-+ DEBUG(DBG_L1, "force a buzzer stop!\n");
-+ buzzer_close = 1;
-+ if ( DCSR(os->dma_ch) & DCSR_RUN ) {
-+ DCSR(os->dma_ch) &=
-+ (DCSR_RUN|DCSR_ENDINTR|DCSR_STARTINTR|DCSR_BUSERR);
-+ }
-+ now = jiffies;
-+ while ( 1 ) {
-+ if ( !buzzer_open ) break;
-+ schedule();
-+ if ( jiffies > ( now + WAIT_BZ_RELEASE ) ) break;
-+ }
-+ buzzer_close = 0;
-+ if( buzzer_open ) goto out;
-+ }
-+ }
-+#else
-+ goto out;
-+#endif /* BUZZER_FORCE_CLOSE */
-+ /* request DMA channels */
-+ if ( file->f_mode & FMODE_WRITE) {
-+ ret = pxa_request_dma(os->name, DMA_PRIO_LOW, audio_dma_irq, os);
-+ if ( ret < 0 )
-+ goto out;
-+ os->dma_ch = ret;
-+ }
-+ if ( file->f_mode & FMODE_READ ) {
-+ ret = pxa_request_dma(is->name, DMA_PRIO_LOW, audio_dma_irq, is);
-+ if ( ret < 0 ) {
-+ if ( file->f_mode & FMODE_WRITE ) {
-+ *os->drcmr = 0;
-+ pxa_free_dma(os->dma_ch);
-+ }
-+ goto out;
-+ }
-+ is->dma_ch = ret;
-+ }
-+ file->private_data = state;
-+
-+ sound.mode = 0;
-+ if ( file->f_mode & FMODE_WRITE ) {
-+ sound.mode |= SOUND_PLAY_MODE;
-+ state->wr_ref = 1;
-+ os->fragsize = AUDIO_FRAGSIZE_DEFAULT;
-+ os->nbfrags = AUDIO_NBFRAGS_DEFAULT;
-+ os->output = 1;
-+ os->mapped = 0;
-+ init_waitqueue_head(&os->frag_wq);
-+ init_waitqueue_head(&os->stop_wq);
-+ *os->drcmr = os->dma_ch | DRCMR_MAPVLD;
-+ }
-+ if ( file->f_mode & FMODE_READ ) {
-+ sound.mode |= SOUND_REC_MODE;
-+ state->rd_ref = 1;
-+ is->fragsize = AUDIO_FRAGSIZE_DEFAULT;
-+ is->nbfrags = AUDIO_NBFRAGS_DEFAULT;
-+ is->output = 0;
-+ is->mapped = 0;
-+ init_waitqueue_head(&is->frag_wq);
-+ init_waitqueue_head(&is->stop_wq);
-+ *is->drcmr = is->dma_ch | DRCMR_MAPVLD;
-+ }
-+
-+ if ( (MINOR(inode->i_rdev) & 0x0f) == SND_DEV_AUDIO ) {
-+ tosa_set_freq(8000);
-+ tosa_set_stereo(0);
-+ tosa_set_format(AFMT_MU_LAW);
-+ }
-+
-+ settings.mode = sound.mode;
-+ settings.output.left = sound.volume_left;
-+ settings.output.right = sound.volume_right;
-+ settings.input.left = sound.gain_left;
-+ settings.input.right = sound.gain_right;
-+ settings.frequency = sound.freq;
-+ if ( (ret = wm9712_open(&settings)) < 0 ) {
-+ DEBUG(DBG_L0, "Can not open wm9712\n");
-+ goto error;
-+ }
-+ ret = 0;
-+
-+out:
-+ up(&state->sem);
-+ return ret;
-+
-+error:
-+ up(&state->sem);
-+ if ( (file->f_mode & FMODE_WRITE) && (os->dma_ch >= 0) ) {
-+ *os->drcmr = 0;
-+ pxa_free_dma(os->dma_ch);
-+ }
-+ if ( (file->f_mode & FMODE_READ) && (is->dma_ch >= 0) ) {
-+ *is->drcmr = 0;
-+ pxa_free_dma(is->dma_ch);
-+ }
-+ state->wr_ref = 0;
-+ state->rd_ref = 0;
-+ return ret;
-+}
-+
-+static int audio_write(struct file *file, const char *buffer,
-+ size_t count, loff_t * ppos)
-+{
-+ const char *buffer0 = buffer;
-+ audio_state_t *state = (audio_state_t *)file->private_data;
-+ audio_stream_t *s = state->output_stream;
-+ int ret = 0;
-+ ssize_t uUsed, bUsed, bLeft = 0;
-+ u_char *dest;
-+
-+ DEBUG(DBG_L2, "Enter audio_write\n");\
-+
-+ // wait playing int sound.
-+ while ( tosa_intmode_direct )
-+ schedule();
-+
-+ if ( ppos != &file->f_pos )
-+ return -ESPIPE;
-+ if ( s->mapped )
-+ return -ENXIO;
-+ if ( !s->buffers && audio_setup_buf(s) )
-+ return -ENOMEM;
-+ while ( count > 0 ) {
-+ audio_buf_t *b = &s->buffers[s->usr_frag];
-+ DEBUG(DBG_L3, "audio_write count = %d\n",count);
-+
-+ /* Grab a fragment */
-+ if ( file->f_flags & O_NONBLOCK ) {
-+ ret = -EAGAIN;
-+ if ( down_trylock(&s->sem) )
-+ break;
-+ } else {
-+ ret = -ERESTARTSYS;
-+ if ( down_interruptible(&s->sem) )
-+ break;
-+ }
-+
-+ /* Feed the current buffer */
-+ dest = b->data + b->offset;
-+ bUsed = 0;
-+ bLeft = s->fragsize - b->offset;
-+
-+ if ( ct_func ) {
-+ uUsed = ct_func(buffer, count, dest, &bUsed, bLeft);
-+ } else {
-+ return -EFAULT;
-+ }
-+
-+ if ( tosa_intmode ) {
-+ tosa_intmode_mix(dest,bUsed);
-+ }
-+
-+ if ( uUsed < 0 ) {
-+ up(&s->sem);
-+ return -EFAULT;
-+ }
-+ b->offset += bUsed;
-+ buffer += uUsed;
-+ count -= uUsed;
-+
-+ if ( b->offset < s->fragsize ) {
-+ up(&s->sem);
-+ break;
-+ }
-+ /*
-+ * Activate DMA on current buffer.
-+ * We unlock this fragment's checkpoint descriptor and
-+ * kick DMA if it is idle. Using checkpoint descriptors
-+ * allows for control operations without the need for
-+ * stopping the DMA channel if it is already running.
-+ */
-+ b->offset = 0;
-+ b->dma_desc->ddadr &= ~DDADR_STOP;
-+#ifdef DMA_NO_INITIALIZED
-+ if ( (DCSR(s->dma_ch) & DCSR_STOPSTATE) || !(DCSR(s->dma_ch) & DCSR_RUN) ){
-+ DDADR(s->dma_ch) = b->dma_desc->ddadr;
-+ DCSR(s->dma_ch) = DCSR_RUN;
-+ }
-+#else
-+ if ( DCSR(s->dma_ch) & DCSR_STOPSTATE ) {
-+ DDADR(s->dma_ch) = b->dma_desc->ddadr;
-+ DCSR(s->dma_ch) = DCSR_RUN;
-+ }
-+#endif /* DMA_NO_INITIALIZED */
-+
-+ /* move the index to the next fragment */
-+ if ( ++s->usr_frag >= s->nbfrags )
-+ s->usr_frag = 0;
-+ }
-+
-+ if ( (buffer - buffer0) )
-+ ret = buffer - buffer0;
-+ return ret;
-+}
-+
-+static int audio_read(struct file *file, char *buffer,
-+ size_t count, loff_t * ppos)
-+{
-+ char *buffer0 = buffer;
-+ audio_state_t *state = file->private_data;
-+ audio_stream_t *s = state->input_stream;
-+ int ret = 0;
-+ ssize_t uUsed, bUsed, bLeft = 0;
-+ u_char *dest;
-+
-+ if ( ppos != &file->f_pos )
-+ return -ESPIPE;
-+ if ( s->mapped )
-+ return -ENXIO;
-+ if ( !s->buffers && audio_setup_buf(s) )
-+ return -ENOMEM;
-+
-+ while ( count > 0 ) {
-+ audio_buf_t *b = &s->buffers[s->usr_frag];
-+
-+ /* prime DMA */
-+#ifdef DMA_NO_INITIALIZED
-+ if ( (DCSR(s->dma_ch) & DCSR_STOPSTATE) || !(DCSR(s->dma_ch) & DCSR_RUN) ){
-+ DDADR(s->dma_ch) = s->buffers[s->dma_frag].dma_desc->ddadr;
-+ DCSR(s->dma_ch) = DCSR_RUN;
-+ }
-+#else
-+ if (DCSR(s->dma_ch) & DCSR_STOPSTATE) {
-+ DDADR(s->dma_ch) = s->buffers[s->dma_frag].dma_desc->ddadr;
-+ DCSR(s->dma_ch) = DCSR_RUN;
-+ }
-+#endif /* DMA_NO_INITIALIZED */
-+
-+ /* Wait for a buffer to become full */
-+ if (file->f_flags & O_NONBLOCK) {
-+ ret = -EAGAIN;
-+ if (down_trylock(&s->sem))
-+ break;
-+ } else {
-+ ret = -ERESTARTSYS;
-+ if (down_interruptible(&s->sem))
-+ break;
-+ }
-+
-+ /* Grab data from current buffer */
-+ dest = b->data + b->offset;
-+ bUsed = 0;
-+ bLeft = s->fragsize - b->offset;
-+
-+ if (ct_read_func) {
-+ uUsed = ct_read_func(buffer, count, dest, &bUsed, bLeft);
-+ } else {
-+ return -EFAULT;
-+ }
-+ if ( uUsed < 0 ) {
-+ up(&s->sem);
-+ return -EFAULT;
-+ }
-+ b->offset += bUsed;
-+ buffer += uUsed;
-+ count -= uUsed;
-+
-+ if (b->offset < s->fragsize) {
-+ up(&s->sem);
-+ break;
-+ }
-+
-+ /*
-+ * Make this buffer available for DMA again.
-+ * We unlock this fragment's checkpoint descriptor and
-+ * kick DMA if it is idle. Using checkpoint descriptors
-+ * allows for control operations without the need for
-+ * stopping the DMA channel if it is already running.
-+ */
-+ b->offset = 0;
-+ b->dma_desc->ddadr &= ~DDADR_STOP;
-+
-+ /* move the index to the next fragment */
-+ if (++s->usr_frag >= s->nbfrags)
-+ s->usr_frag = 0;
-+ }
-+
-+ if ((buffer - buffer0))
-+ ret = buffer - buffer0;
-+ return ret;
-+}
-+
-+static int audio_sync(struct file *file)
-+{
-+ audio_state_t *state = file->private_data;
-+ audio_stream_t *s = state->output_stream;
-+ audio_buf_t *b;
-+ pxa_dma_desc *final_desc;
-+ u_long dcmd_save = 0;
-+ DECLARE_WAITQUEUE(wait, current);
-+
-+ if (!(file->f_mode & FMODE_WRITE) || !s->buffers || s->mapped)
-+ return 0;
-+
-+ /*
-+ * Send current buffer if it contains data. Be sure to send
-+ * a full sample count.
-+ */
-+ final_desc = NULL;
-+ b = &s->buffers[s->usr_frag];
-+ if (b->offset &= ~3) {
-+ final_desc = &b->dma_desc[1 + b->offset/MAX_DMA_SIZE];
-+ b->offset &= (MAX_DMA_SIZE-1);
-+ dcmd_save = final_desc->dcmd;
-+ final_desc->dcmd = b->offset | s->dcmd | DCMD_ENDIRQEN;
-+ final_desc->ddadr |= DDADR_STOP;
-+ b->offset = 0;
-+ b->dma_desc->ddadr &= ~DDADR_STOP;
-+
-+#ifdef DMA_NO_INITIALIZED
-+ if ((DCSR(s->dma_ch) & DCSR_STOPSTATE)||!(DCSR(s->dma_ch) & DCSR_RUN)){
-+ DDADR(s->dma_ch) = b->dma_desc->ddadr;
-+ DCSR(s->dma_ch) = DCSR_RUN;
-+ }
-+#else
-+ if (DCSR(s->dma_ch) & DCSR_STOPSTATE) {
-+ DDADR(s->dma_ch) = b->dma_desc->ddadr;
-+ DCSR(s->dma_ch) = DCSR_RUN;
-+ }
-+#endif /* DMA_NO_INITIALIZED */
-+ }
-+ /* Wait for DMA to complete. */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ add_wait_queue(&s->frag_wq, &wait);
-+ while ((DCSR(s->dma_ch) & DCSR_RUN) && !signal_pending(current)) {
-+ schedule();
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&s->frag_wq, &wait);
-+
-+ tosa_intmode = 0;
-+
-+ /* Restore the descriptor chain. */
-+ if (final_desc) {
-+ final_desc->dcmd = dcmd_save;
-+ final_desc->ddadr &= ~DDADR_STOP;
-+ b->dma_desc->ddadr |= DDADR_STOP;
-+ }
-+ return 0;
-+}
-+
-+static unsigned int audio_poll(struct file *file,
-+ struct poll_table_struct *wait)
-+{
-+ audio_state_t *state = file->private_data;
-+ audio_stream_t *is = state->input_stream;
-+ audio_stream_t *os = state->output_stream;
-+ unsigned int mask = 0;
-+
-+ if (file->f_mode & FMODE_READ) {
-+ /* Start audio input if not already active */
-+ if (!is->buffers && audio_setup_buf(is))
-+ return -ENOMEM;
-+#ifdef DMA_NO_INITIALIZED
-+ if ((DCSR(is->dma_ch) & DCSR_STOPSTATE)|| !(DCSR(is->dma_ch) & DCSR_RUN)){
-+ DDADR(is->dma_ch) = is->buffers[is->dma_frag].dma_desc->ddadr;
-+ DCSR(is->dma_ch) = DCSR_RUN;
-+ }
-+#else
-+ if (DCSR(is->dma_ch) & DCSR_STOPSTATE) {
-+ DDADR(is->dma_ch) = is->buffers[is->dma_frag].dma_desc->ddadr;
-+ DCSR(is->dma_ch) = DCSR_RUN;
-+ }
-+#endif /* DMA_NO_INITIALIZED */
-+ poll_wait(file, &is->frag_wq, wait);
-+ }
-+
-+ if (file->f_mode & FMODE_WRITE) {
-+ if (!os->buffers && audio_setup_buf(os))
-+ return -ENOMEM;
-+ poll_wait(file, &os->frag_wq, wait);
-+ }
-+
-+ if (file->f_mode & FMODE_READ)
-+ if (( is->mapped && is->bytecount > 0) ||
-+ (!is->mapped && atomic_read(&is->sem.count) > 0))
-+ mask |= POLLIN | POLLRDNORM;
-+
-+ if (file->f_mode & FMODE_WRITE)
-+ if (( os->mapped && os->bytecount > 0) ||
-+ (!os->mapped && atomic_read(&os->sem.count) > 0))
-+ mask |= POLLOUT | POLLWRNORM;
-+
-+ return mask;
-+}
-+
-+static int audio_ioctl(struct inode *inode, struct file *file,
-+ unsigned int cmd, unsigned long arg)
-+{
-+ audio_state_t *state = file->private_data;
-+ audio_stream_t *os = state->output_stream;
-+ audio_stream_t *is = state->input_stream;
-+ long val, fmt;
-+ int data;
-+
-+ switch(cmd) {
-+ case OSS_GETVERSION:
-+ return put_user(SOUND_VERSION, (int *)arg);
-+ case SNDCTL_DSP_GETBLKSIZE:
-+ if ( file->f_mode & FMODE_WRITE )
-+ return put_user(os->fragsize, (int *)arg);
-+ else
-+ return put_user(is->fragsize, (int *)arg);
-+ case SNDCTL_DSP_GETCAPS:
-+ val = DSP_CAP_REALTIME|DSP_CAP_TRIGGER|DSP_CAP_MMAP;
-+ if (is && os)
-+ val |= DSP_CAP_DUPLEX;
-+ return put_user(val, (int *)arg);
-+ case SNDCTL_DSP_SETFRAGMENT:
-+ if ( get_user(val, (long *) arg) )
-+ return -EFAULT;
-+ if ( file->f_mode & FMODE_READ ) {
-+ int ret = audio_set_fragments(is, val);
-+ if (ret < 0) return ret;
-+ if ( (ret = put_user(ret, (int *)arg)) )
-+ return ret;
-+ }
-+ if ( file->f_mode & FMODE_WRITE ) {
-+ int ret = audio_set_fragments(os, val);
-+ if (ret < 0) return ret;
-+ if ( (ret = put_user(ret, (int *)arg)) )
-+ return ret;
-+ }
-+ return 0;
-+ case SNDCTL_DSP_SYNC:
-+ return audio_sync(file);
-+ case SNDCTL_DSP_POST:
-+ return 0;
-+ case SNDCTL_DSP_GETTRIGGER:
-+ val = 0;
-+ if ( file->f_mode & FMODE_READ && DCSR(is->dma_ch) & DCSR_RUN )
-+ val |= PCM_ENABLE_INPUT;
-+ if ( file->f_mode & FMODE_WRITE && DCSR(os->dma_ch) & DCSR_RUN )
-+ val |= PCM_ENABLE_OUTPUT;
-+ return put_user(val, (int *)arg);
-+ case SNDCTL_DSP_SETTRIGGER:
-+ if ( get_user(val, (int *)arg) )
-+ return -EFAULT;
-+ if ( file->f_mode & FMODE_READ ) {
-+ if ( val & PCM_ENABLE_INPUT ) {
-+ if ( !is->buffers && audio_setup_buf(is) )
-+ return -ENOMEM;
-+ if ( !(DCSR(is->dma_ch) & DCSR_RUN) ) {
-+ audio_buf_t *b = &is->buffers[is->dma_frag];
-+ DDADR(is->dma_ch) = b->dma_desc->ddadr;
-+ DCSR(is->dma_ch) = DCSR_RUN;
-+ }
-+ } else {
-+ DCSR(is->dma_ch) = 0;
-+ }
-+ }
-+ if ( file->f_mode & FMODE_WRITE ) {
-+ if ( val & PCM_ENABLE_OUTPUT ) {
-+ if ( !os->buffers && audio_setup_buf(os) )
-+ return -ENOMEM;
-+ if ( !(DCSR(os->dma_ch) & DCSR_RUN) ) {
-+ audio_buf_t *b = &os->buffers[os->dma_frag];
-+ DDADR(os->dma_ch) = b->dma_desc->ddadr;
-+ DCSR(os->dma_ch) = DCSR_RUN;
-+ }
-+ } else {
-+ DCSR(os->dma_ch) = 0;
-+ }
-+ }
-+ return 0;
-+ case SNDCTL_DSP_GETOSPACE:
-+ {
-+ audio_buf_info inf = { 0, };
-+ audio_stream_t *s = os;
-+ int j,k;
-+ if ( (s == os && !(file->f_mode & FMODE_WRITE)) )
-+ return -EINVAL;
-+ if ( !s->buffers && audio_setup_buf(s) )
-+ return -ENOMEM;
-+ j = s->usr_frag;
-+ k = s->dma_frag;
-+ if ( atomic_read(&s->sem.count) > 0 ) {
-+ if ( j > k ) {
-+ inf.fragments = s->nbfrags - ( j - k );
-+ } else if ( j < k ) {
-+ inf.fragments = k - j;
-+ } else {
-+ inf.fragments = s->nbfrags;
-+ }
-+ }
-+ inf.bytes = s->fragsize * inf.fragments;
-+ inf.fragsize = s->fragsize;
-+ inf.fragstotal = s->nbfrags;
-+ return copy_to_user((void *)arg, &inf, sizeof(inf));
-+ }
-+ case SNDCTL_DSP_GETISPACE:
-+ {
-+ audio_buf_info inf = { 0, };
-+ audio_stream_t *s = is;
-+ int j,k;
-+
-+ if ( (s == is && !(file->f_mode & FMODE_READ)) )
-+ return -EINVAL;
-+ if (!s->buffers && audio_setup_buf(s))
-+ return -ENOMEM;
-+
-+ j = s->usr_frag;
-+ k = s->dma_frag;
-+ if ( atomic_read(&s->sem.count) <= 0 ) {
-+ inf.fragments = 0;
-+ } else {
-+ inf.fragments = atomic_read(&s->sem.count);
-+ }
-+ inf.bytes = s->fragsize * inf.fragments;
-+ inf.fragsize = s->fragsize;
-+ inf.fragstotal = s->nbfrags;
-+ return copy_to_user((void *)arg, &inf, sizeof(inf));
-+ }
-+ case SNDCTL_DSP_GETOPTR:
-+ case SNDCTL_DSP_GETIPTR:
-+ {
-+ count_info inf = { 0, };
-+ audio_stream_t *s = (cmd == SNDCTL_DSP_GETOPTR) ? os : is;
-+ dma_addr_t ptr;
-+ int bytecount, offset, flags;
-+ if ( (s == is && !(file->f_mode & FMODE_READ)) ||
-+ (s == os && !(file->f_mode & FMODE_WRITE)) )
-+ return -EINVAL;
-+ if ( DCSR(s->dma_ch) & DCSR_RUN ) {
-+ audio_buf_t *b;
-+ save_flags_cli(flags);
-+ ptr = (s->output) ? DSADR(s->dma_ch) : DTADR(s->dma_ch);
-+ b = &s->buffers[s->dma_frag];
-+ offset = ptr - b->dma_desc->dsadr;
-+ if ( offset >= s->fragsize )
-+ offset = s->fragsize - 4;
-+ } else {
-+ save_flags(flags);
-+ offset = 0;
-+ }
-+ inf.ptr = s->dma_frag * s->fragsize + offset;
-+ bytecount = s->bytecount + offset;
-+ s->bytecount = -offset;
-+ inf.blocks = s->fragcount;
-+ s->fragcount = 0;
-+ restore_flags(flags);
-+ if ( bytecount < 0 )
-+ bytecount = 0;
-+ inf.bytes = bytecount;
-+ return copy_to_user((void *)arg, &inf, sizeof(inf));
-+ }
-+ case SNDCTL_DSP_NONBLOCK:
-+ file->f_flags |= O_NONBLOCK;
-+ return 0;
-+ case SNDCTL_DSP_RESET:
-+ if ( file->f_mode & FMODE_WRITE )
-+ pxa_audio_clear_buf(os);
-+ if ( file->f_mode & FMODE_READ )
-+ pxa_audio_clear_buf(is);
-+ return 0;
-+ case SNDCTL_DSP_SPEED:
-+ audio_sync(file);
-+ IOCTL_IN(arg, data);
-+ return IOCTL_OUT(arg, (*sound.mach.setFreq)(data));
-+ case SNDCTL_DSP_STEREO:
-+ audio_sync(file);
-+ IOCTL_IN(arg, data);
-+ return IOCTL_OUT(arg, (*sound.mach.setStereo)(data));
-+ case SOUND_PCM_WRITE_CHANNELS:
-+ audio_sync(file);
-+ IOCTL_IN(arg, data);
-+ return IOCTL_OUT(arg, (*sound.mach.setStereo)(data-1)+1);
-+ case SNDCTL_DSP_SETFMT:
-+ audio_sync(file);
-+ IOCTL_IN(arg, data);
-+ return IOCTL_OUT(arg, (*sound.mach.setFormat)(data));
-+ case SNDCTL_DSP_GETFMTS:
-+ fmt = 0;
-+ if (sound.trans) {
-+ if (sound.trans->ct_ulaw)
-+ fmt |= AFMT_MU_LAW;
-+ if (sound.trans->ct_alaw)
-+ fmt |= AFMT_A_LAW;
-+ if (sound.trans->ct_s8)
-+ fmt |= AFMT_S8;
-+ if (sound.trans->ct_u8)
-+ fmt |= AFMT_U8;
-+ if (sound.trans->ct_s16be)
-+ fmt |= AFMT_S16_BE;
-+ if (sound.trans->ct_u16be)
-+ fmt |= AFMT_U16_BE;
-+ if (sound.trans->ct_s16le)
-+ fmt |= AFMT_S16_LE;
-+ if (sound.trans->ct_u16le)
-+ fmt |= AFMT_U16_LE;
-+ }
-+ return IOCTL_OUT(arg, fmt);
-+ default:
-+ return mixer_ioctl(inode, file, cmd, arg);
-+ }
-+ return 0;
-+}
-+
-+static int audio_mmap(struct file *file, struct vm_area_struct *vma)
-+{
-+ audio_state_t *state = file->private_data;
-+ audio_stream_t *s;
-+ unsigned long size, vma_addr;
-+ int i, ret;
-+
-+ if (vma->vm_pgoff != 0)
-+ return -EINVAL;
-+
-+ if (vma->vm_flags & VM_WRITE) {
-+ if (!state->wr_ref)
-+ return -EINVAL;;
-+ s = state->output_stream;
-+ } else if (vma->vm_flags & VM_READ) {
-+ if (!state->rd_ref)
-+ return -EINVAL;
-+ s = state->input_stream;
-+ } else return -EINVAL;
-+
-+ if (s->mapped)
-+ return -EINVAL;
-+ size = vma->vm_end - vma->vm_start;
-+ if (size != s->fragsize * s->nbfrags)
-+ return -EINVAL;
-+ if (!s->buffers && audio_setup_buf(s))
-+ return -ENOMEM;
-+ vma_addr = vma->vm_start;
-+ for (i = 0; i < s->nbfrags; i++) {
-+ audio_buf_t *buf = &s->buffers[i];
-+ if (!buf->master)
-+ continue;
-+ ret = remap_page_range(vma_addr, buf->dma_desc->dsadr,
-+ buf->master, vma->vm_page_prot);
-+ if (ret)
-+ return ret;
-+ vma_addr += buf->master;
-+ }
-+ for (i = 0; i < s->nbfrags; i++)
-+ s->buffers[i].dma_desc->ddadr &= ~DDADR_STOP;
-+ s->mapped = 1;
-+ return 0;
-+}
-+
-+static int audio_release(struct inode *inode, struct file *file)
-+{
-+ audio_state_t *state = file->private_data;
-+ int err;
-+
-+ down(&state->sem);
-+ if ( file->f_mode & FMODE_READ ) {
-+ pxa_audio_clear_buf(state->input_stream);
-+ *state->input_stream->drcmr = 0;
-+ pxa_free_dma(state->input_stream->dma_ch);
-+ state->rd_ref = 0;
-+ }
-+
-+ if ( file->f_mode & FMODE_WRITE ) {
-+ audio_sync(file);
-+ pxa_audio_clear_buf(state->output_stream);
-+ *state->output_stream->drcmr = 0;
-+ pxa_free_dma(state->output_stream->dma_ch);
-+ state->wr_ref = 0;
-+ }
-+
-+ // Close wm9712
-+ if( (err = wm9712_close()) ) {
-+ DEBUG(DBG_L0, "Can not close wm9712\n");
-+ return err;
-+ }
-+ sound.mode = 0;
-+ up(&state->sem);
-+ return 0;
-+}
-+
-+static struct file_operations ac97_audio_fops = {
-+ llseek: no_llseek,
-+ write: audio_write,
-+ read: audio_read,
-+ poll: audio_poll,
-+ ioctl: audio_ioctl,
-+ open: audio_open,
-+ release: audio_release,
-+ mmap: audio_mmap,
-+ owner: THIS_MODULE
-+};
-+
-+static void tosa_intmode_mix(unsigned char *dest,int bUsed)
-+#ifdef ALARM_NO_MALLOC
-+{
-+ int i;
-+ short *cdata = (short *)dest;
-+ int cnt = min(tosa_intmode, bUsed);
-+ int idx;
-+
-+ for ( i = 0; i < (cnt/4); i++ ) {
-+ idx = (tosa_intmode_cur>>8);
-+ *cdata++ = int_data_org[idx*2];
-+ *cdata++ = int_data_org[idx*2+1];
-+ tosa_intmode_cur += tosa_intmode_step;
-+ }
-+
-+ tosa_intmode -= cnt;
-+ if ( tosa_intmode <= 0 ) {
-+ tosa_intmode = 0;
-+ int_data_org = NULL;
-+ }
-+}
-+#else
-+{
-+ int i;
-+ short *cdata = (short *)dest;
-+ int cnt = min(tosa_intmode, bUsed);
-+
-+ for ( i = 0; i < (cnt/4); i++ ) {
-+ *cdata = *int_data;
-+ int_data++;
-+ cdata++;
-+ *cdata = *int_data;
-+ int_data++;
-+ cdata++;
-+ }
-+
-+ tosa_intmode -= cnt;
-+ if ( tosa_intmode <= 0 ) {
-+ tosa_intmode = 0;
-+ if ( int_data_org ) {
-+ kfree(int_data_org);
-+ int_data_org = NULL;
-+ }
-+ }
-+}
-+#endif /* ALARM_NO_MALLOC */
-+
-+/************************************************************
-+ * Buzzer
-+ ************************************************************/
-+#ifdef CONFIG_BUZZER_TOSA
-+
-+#ifdef ALARM_NO_MALLOC
-+int audio_buzzer_intmode(unsigned short *buffer,int count,int speed)
-+{
-+ int idx,i;
-+ unsigned long snddata;
-+ audio_state_t *state = &ac97_audio_state;
-+ audio_stream_t *os = state->output_stream;
-+ audio_stream_t *s = os;
-+
-+ int_data_org = buffer;
-+ tosa_intmode = (count * sound.freq / speed)&(~3);
-+ tosa_intmode_speed = speed;
-+ tosa_intmode_cur = 0;
-+ tosa_intmode_step = (speed << 8 ) / sound.freq; // fixed point (x256)
-+ tosa_intmode_direct = 1;
-+
-+ // pause during play or recording , so kick this place.
-+ if ( ((DCSR(s->dma_ch) & DCSR_STOPSTATE) && (state->wr_ref)) ||
-+ ((!state->wr_ref ) && ( state->rd_ref)) ) {
-+ for ( i = 0; i < (tosa_intmode/4) ; i++ ) {
-+ idx = (tosa_intmode_cur>>8);
-+ snddata = (buffer[idx*2]|(buffer[idx*2+1]<<16));
-+ tosa_intmode_cur += tosa_intmode_step;
-+ tosa_ac97_write(snddata);
-+ }
-+ tosa_intmode = 0;
-+ int_data_org = NULL;
-+ }
-+ tosa_intmode_direct = 0;
-+ return 1;
-+}
-+#else /* ALARM_NO_MALLOC */
-+int audio_buzzer_intmode(unsigned short *buffer,int count,int speed)
-+{
-+ int samplingCount = count * sound.hw_freq / speed;
-+ int idx,i ;
-+ int cur=0,step = (speed << 8 ) / sound.hw_freq; // fixed point (x256)
-+ unsigned short *dstct;
-+
-+ int_data = (unsigned short *)kmalloc(count * 6,GFP_KERNEL);
-+ if ( !int_data ) return 0;
-+ int_data_org = int_data;
-+
-+ samplingCount &= ~0x3;
-+
-+ dstct = int_data;
-+ for( i = 0; i < (samplingCount/4); i++ ) {
-+ idx = (cur>>8);
-+ *dstct++ = buffer[idx*2];
-+ *dstct++ = buffer[idx*2+1];
-+ cur += step;
-+ }
-+
-+ tosa_intmode = samplingCount;
-+ tosa_intmode_speed = speed;
-+ tosa_intmode_direct = 1;
-+
-+ {
-+ audio_state_t *state = &ac97_audio_state;
-+ audio_stream_t *os = state->output_stream;
-+ audio_stream_t *s = os;
-+
-+ // pause during play or recording , so kick this place.
-+ if ( ((DCSR(s->dma_ch) & DCSR_STOPSTATE) && (state->wr_ref)) ||
-+ ((!state->wr_ref) && (state->rd_ref)) ) {
-+ int i;
-+ for ( i = 0; i < (tosa_intmode/4); i++ ) {
-+ tosa_ac97_write(*(unsigned long *)int_data);
-+ int_data++;
-+ int_data++;
-+ }
-+ tosa_intmode = 0;
-+ kfree(int_data_org);
-+ int_data_org = NULL;
-+ }
-+ }
-+
-+ tosa_intmode_direct = 0;
-+ return 1;
-+}
-+#endif /* ALARM_NO_MALLOC */
-+
-+int audio_buzzer_write(const char *buffer,int count)
-+{
-+ const char *buffer0 = buffer;
-+ audio_state_t *state = &ac97_audio_state;
-+ audio_stream_t *s = state->output_stream;
-+ int chunksize, ret = 0;
-+
-+
-+ if (!s->buffers && audio_setup_buf(s))
-+ return -ENOMEM;
-+
-+ while ( count > 0 ) {
-+ audio_buf_t *b = &s->buffers[s->usr_frag];
-+
-+#ifdef BUZZER_FORCE_CLOSE
-+ if( buzzer_close ) break;
-+#endif
-+
-+ chunksize = s->fragsize - b->offset;
-+ if ( chunksize > count )
-+ chunksize = count;
-+ memcpy(b->data + b->offset, buffer, chunksize);
-+
-+ b->offset += chunksize;
-+ buffer += chunksize;
-+ count -= chunksize;
-+
-+ if ( b->offset < s->fragsize ) {
-+ up(&s->sem);
-+ break;
-+ }
-+
-+ b->offset = 0;
-+ b->dma_desc->ddadr &= ~DDADR_STOP;
-+#ifdef DMA_NO_INITIALIZED
-+ if ( (DCSR(s->dma_ch) & DCSR_STOPSTATE )|| !(DCSR(s->dma_ch) & DCSR_RUN) ){
-+ DDADR(s->dma_ch) = b->dma_desc->ddadr;
-+ DCSR(s->dma_ch) = DCSR_RUN;
-+ }
-+#else
-+ if ( DCSR(s->dma_ch) & DCSR_STOPSTATE ) {
-+ DDADR(s->dma_ch) = b->dma_desc->ddadr;
-+ DCSR(s->dma_ch) = DCSR_RUN;
-+ }
-+#endif
-+
-+ /* move the index to the next fragment */
-+ if ( ++s->usr_frag >= s->nbfrags )
-+ s->usr_frag = 0;
-+ }
-+
-+ if ( buffer - buffer0 )
-+ ret = buffer - buffer0;
-+
-+ return ret;
-+}
-+
-+void audio_buzzer_sync(void)
-+{
-+ audio_state_t *state = &ac97_audio_state;
-+ audio_stream_t *s = state->output_stream;
-+ audio_buf_t *b;
-+ pxa_dma_desc *final_desc;
-+ u_long dcmd_save = 0;
-+ DECLARE_WAITQUEUE(wait, current);
-+
-+#ifdef BUZZER_FORCE_CLOSE
-+ if( buzzer_close ) goto sync_end;
-+#endif
-+
-+ //audio_sync(file);
-+
-+ /*
-+ * Send current buffer if it contains data. Be sure to send
-+ * a full sample count.
-+ */
-+ final_desc = NULL;
-+ b = &s->buffers[s->usr_frag];
-+ if ( b->offset &= ~3 ) {
-+ final_desc = &b->dma_desc[1 + b->offset/MAX_DMA_SIZE];
-+ b->offset &= (MAX_DMA_SIZE-1);
-+ dcmd_save = final_desc->dcmd;
-+ final_desc->dcmd = b->offset | s->dcmd | DCMD_ENDIRQEN;
-+ final_desc->ddadr |= DDADR_STOP;
-+ b->offset = 0;
-+ b->dma_desc->ddadr &= ~DDADR_STOP;
-+#ifdef DMA_NO_INITIALIZED
-+ if ( (DCSR(s->dma_ch) & DCSR_STOPSTATE) || !(DCSR(s->dma_ch) & DCSR_RUN) ) {
-+ DDADR(s->dma_ch) = b->dma_desc->ddadr;
-+ DCSR(s->dma_ch) = DCSR_RUN;
-+ }
-+#else
-+ if ( DCSR(s->dma_ch) & DCSR_STOPSTATE ) {
-+ DDADR(s->dma_ch) = b->dma_desc->ddadr;
-+ DCSR(s->dma_ch) = DCSR_RUN;
-+ }
-+#endif
-+ }
-+
-+#ifdef BUZZER_FORCE_CLOSE
-+sync_end:;
-+#endif
-+
-+ /* Wait for DMA to complete. */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ add_wait_queue(&s->frag_wq, &wait);
-+ while ( (DCSR(s->dma_ch) & DCSR_RUN) && !signal_pending(current) ) {
-+ schedule();
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ }
-+
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&s->frag_wq, &wait);
-+}
-+
-+int audio_buzzer_release(void)
-+{
-+ audio_state_t *state = &ac97_audio_state;
-+ audio_stream_t *s = state->output_stream;
-+ int err, ret = 0;
-+ DECLARE_WAITQUEUE(wait, current);
-+
-+
-+ //audio_sync(file);
-+ /* Wait for DMA to complete. */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ add_wait_queue(&s->frag_wq, &wait);
-+ while ( (DCSR(s->dma_ch) & DCSR_RUN) && !signal_pending(current) ) {
-+ schedule();
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ }
-+
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&s->frag_wq, &wait);
-+
-+ audio_clear_buf(state->output_stream);
-+ *state->output_stream->drcmr = 0;
-+ pxa_free_dma(state->output_stream->dma_ch);
-+ state->wr_ref = 0;
-+
-+#ifdef ALARM_NO_MALLOC
-+ // wait playing int sound.
-+#ifdef BUZZER_FORCE_CLOSE
-+ while ( tosa_intmode_direct && !buzzer_close )
-+ schedule();
-+#else
-+ while ( tosa_intmode_direct )
-+ schedule();
-+#endif /* BUZZER_FORCE_CLOSE */
-+
-+ tosa_intmode = 0;
-+ int_data_org = NULL;
-+#else
-+ if ( int_data_org ) {
-+ kfree(int_data_org);
-+ int_data_org = NULL;
-+ }
-+#endif /* ALARM_NO_MALLOC */
-+ if( (err = wm9712_close()) < 0 ) {
-+ DEBUG(DBG_L0, "Can not close wm9712\n");
-+ ret = err;
-+ }
-+ state->wr_ref = 0;
-+#ifdef BUZZER_FORCE_CLOSE
-+ buzzer_open = 0;
-+#endif /* BUZZER_FORCE_CLOSE */
-+ return 0;
-+}
-+
-+int audio_buzzer_open(int speed)
-+{
-+ audio_state_t *state = &ac97_audio_state;
-+ audio_stream_t *os = state->output_stream;
-+ SOUND_SETTINGS settings;
-+ int err;
-+
-+ err = -EBUSY;
-+ if ( state->wr_ref || state->rd_ref )
-+ goto out;
-+
-+ state->wr_ref = 1;
-+
-+#ifdef BUZZER_FORCE_CLOSE
-+ buzzer_open = 1;
-+#endif /* BUZZER_FORCE_CLOSE */
-+
-+ /* request DMA channels */
-+ if ( (err = pxa_request_dma(os->name, DMA_PRIO_LOW, audio_dma_irq, os)) < 0 )
-+ goto error;
-+ os->dma_ch = err;
-+
-+ os->fragsize = AUDIO_FRAGSIZE_DEFAULT;
-+ os->nbfrags = AUDIO_NBFRAGS_DEFAULT;
-+ os->output = 1;
-+ os->mapped = 0;
-+ init_waitqueue_head(&os->frag_wq);
-+ init_waitqueue_head(&os->stop_wq);
-+ *os->drcmr = os->dma_ch | DRCMR_MAPVLD;
-+
-+ sound.mode = SOUND_PLAY_MODE;
-+ settings.mode = sound.mode;
-+ settings.output.left = sound.volume_left;
-+ settings.output.right = sound.volume_right;
-+ settings.input.left = sound.gain_left;
-+ settings.input.right = sound.gain_right;
-+ settings.frequency = speed;
-+
-+ if( (err = wm9712_open(&settings)) < 0 ) {
-+ DEBUG(DBG_L0, "Can not open wm9712\n");
-+ goto error;
-+ }
-+
-+ sound.freq = speed;
-+
-+ err = 0;
-+out:
-+#ifdef BUZZER_FORCE_CLOSE
-+ if( buzzer_close ){
-+ err = -EBUSY;
-+ goto error;
-+ }
-+#endif
-+ return err;
-+
-+error:
-+ *os->drcmr = 0;
-+ pxa_free_dma(os->dma_ch);
-+ state->wr_ref = 0;
-+ return err;
-+}
-+#endif /* CONFIG_BUZZER_TOSA */
-+
-+/************************************************************
-+ * /dev/sndstat
-+ * Audio Stat stuff
-+ ************************************************************/
-+static int state_open(struct inode *inode, struct file *file)
-+{
-+ char *buffer = tosa_sound_state.buf;
-+ int len = 0;
-+
-+ if ( tosa_sound_state.busy ) return -EBUSY;
-+
-+ MOD_INC_USE_COUNT;
-+ tosa_sound_state.ptr = 0;
-+ tosa_sound_state.busy = 1;
-+
-+ len += sprintf(buffer+len, " TOSA AC97 sound driver:\n");
-+ len += sprintf(buffer+len, "\tsound.speed = %dHz\n", sound.freq);
-+ len += sprintf(buffer+len, "\tsound.stereo = 0x%x (%s)\n",
-+ sound.stereo, sound.stereo ? "stereo" : "mono");
-+ tosa_sound_state.len = len;
-+ return 0;
-+}
-+
-+static int state_release(struct inode *inode, struct file *file)
-+{
-+ tosa_sound_state.busy = 0;
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static ssize_t state_read(struct file *file, char *buf, size_t count,
-+ loff_t *ppos)
-+{
-+ int n = tosa_sound_state.len - tosa_sound_state.ptr;
-+ if ( n > count ) n = count;
-+ if ( n <= 0 ) return 0;
-+ if ( copy_to_user(buf, &tosa_sound_state.buf[tosa_sound_state.ptr], n) )
-+ return -EFAULT;
-+ tosa_sound_state.ptr += n;
-+ return n;
-+}
-+
-+static struct file_operations state_fops =
-+{
-+ llseek: no_llseek,
-+ read: state_read,
-+ open: state_open,
-+ release: state_release,
-+};
-+
-+static void state_init(void)
-+{
-+ tosa_sound_state.dev_state =
-+ register_sound_special(&state_fops, SND_DEV_STATUS);
-+ if ( tosa_sound_state.dev_state < 0 ) return;
-+ tosa_sound_state.busy = 0;
-+}
-+
-+/************************************************************
-+ * /dev/mixer
-+ * Audio Mixer stuff
-+ ************************************************************/
-+static int mixer_ioctl( struct inode *inode, struct file *file,
-+ unsigned int cmd, unsigned long arg)
-+{
-+ int data;
-+
-+ switch (cmd) {
-+ case SOUND_MIXER_READ_DEVMASK:
-+ return IOCTL_OUT(arg, (SOUND_MASK_VOLUME|SOUND_MASK_MIC) );
-+ case SOUND_MIXER_READ_RECMASK:
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_READ_STEREODEVS:
-+ return IOCTL_OUT(arg, SOUND_MASK_VOLUME);
-+ case SOUND_MIXER_READ_CAPS:
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_WRITE_VOLUME:
-+ IOCTL_IN(arg, data);
-+ (*sound.mach.setVolume)(data);
-+ case SOUND_MIXER_READ_VOLUME:
-+ return IOCTL_OUT(arg, (*sound.mach.getVolume)());
-+ case SOUND_MIXER_READ_TREBLE:
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_WRITE_TREBLE:
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_READ_SPEAKER:
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_WRITE_SPEAKER:
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_WRITE_MIC:
-+ IOCTL_IN(arg, data);
-+ (*sound.mach.setGain)(data);
-+ case SOUND_MIXER_READ_MIC:
-+ return IOCTL_OUT(arg, (*sound.mach.getGain)());
-+ case SOUND_MIXER_AGC:
-+ IOCTL_IN(arg, data);
-+ return IOCTL_OUT(arg, wm9712_set_agc(data));
-+ }
-+ return -EINVAL;
-+}
-+
-+static int mixer_open(struct inode *inode, struct file *file)
-+{
-+ if ( codec->mixer_busy ) return -EBUSY;
-+ MOD_INC_USE_COUNT;
-+ codec->mixer_busy = 1;
-+ return 0;
-+}
-+
-+static int mixer_release(struct inode *inode, struct file *file)
-+{
-+ codec->mixer_busy = 0;
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static struct file_operations mixer_fops = {
-+ ioctl: mixer_ioctl,
-+ llseek: no_llseek,
-+ open: mixer_open,
-+ release: mixer_release,
-+ owner: THIS_MODULE
-+};
-+
-+static void mixer_init(void)
-+{
-+ codec->dev_mixer = register_sound_mixer(&mixer_fops, -1);
-+ if ( codec->dev_mixer < 0 ) return;
-+ codec->mixer_busy = 0;
-+}
-+
-+/************************************************************
-+ * /dev/dsp
-+ * Audio stuff
-+ ************************************************************/
-+static void sq_init(void)
-+{
-+ /* Regist /dev/dsp. */
-+ ac97_audio_state.dev_dsp = register_sound_dsp(&ac97_audio_fops, -1);
-+ if( ac97_audio_state.dev_dsp < 0 ) return;
-+
-+ ac97_audio_state.wr_ref = 0;
-+ ac97_audio_state.rd_ref = 0;
-+
-+ /* Set default settings */
-+ sound.format = AFMT_S16_LE;
-+ sound.stereo = 1;
-+ sound.freq = 48000;
-+ sound.size = 16;
-+ sound.trans = &trans_tosa;
-+ sound.trans_read = &trans_r_tosa;
-+ sound.volume_left = 80;
-+ sound.volume_right = 80;
-+ sound.gain_left = 40;
-+ sound.gain_right = 40;
-+
-+ /* Change Format */
-+ (*sound.mach.setFormat)(sound.format);
-+}
-+
-+static int __init pxa_ac97_init(void)
-+{
-+ sound.mach = mach_tosa;
-+
-+ if( (*sound.mach.init)() < 0 ) {
-+ wm9712_exit();
-+ return -EBUSY;
-+ }
-+ /* Set default settings. */
-+ sq_init();
-+ /* Set up /dev/sndstat. */
-+ state_init();
-+ /* Set up /dev/mixer. */
-+ mixer_init();
-+#ifdef CONFIG_PM
-+ pxa_sound_pm_dev = pm_register(PM_SYS_DEV, 0, tosa_pm_callback);
-+#endif /* CONFIG_PM */
-+
-+ printk(KERN_INFO "Tosa AC97 initialize\n");
-+
-+ return 0;
-+}
-+
-+static void __exit pxa_ac97_exit(void)
-+{
-+ if ( ac97_audio_state.dev_dsp >= 0 )
-+ unregister_sound_dsp(ac97_audio_state.dev_dsp);
-+ unregister_sound_mixer(codec->dev_mixer);
-+ if ( tosa_sound_state.dev_state >= 0 )
-+ unregister_sound_special(tosa_sound_state.dev_state);
-+ wm9712_exit();
-+}
-+
-+
-+module_init(pxa_ac97_init);
-+module_exit(pxa_ac97_exit);
-+
-+#ifdef CONFIG_PM
-+/************************************************************
-+ * Power Management
-+ ************************************************************/
-+static int tosa_pm_callback(struct pm_dev *pm_dev,pm_request_t req, void *data)
-+{
-+ int err;
-+ switch (req) {
-+ case PM_SUSPEND:
-+ DEBUG(DBG_L1, "PM_SUSPEND: start\n");
-+ wm9712_suspend();
-+#ifdef CONFIG_TOSA_TS
-+ tosa_ts_suspend();
-+#endif /* CONFIG_TOSA_TS */
-+ if ( ac97_audio_state.rd_ref != 0 ) {
-+ audio_clear_buf(ac97_audio_state.input_stream);
-+ *ac97_audio_state.input_stream->drcmr = 0;
-+ pxa_free_dma(ac97_audio_state.input_stream->dma_ch);
-+ }
-+
-+ if ( ac97_audio_state.wr_ref != 0 ) {
-+ audio_clear_buf(ac97_audio_state.output_stream);
-+ *ac97_audio_state.output_stream->drcmr = 0;
-+ pxa_free_dma(ac97_audio_state.output_stream->dma_ch);
-+ }
-+ DEBUG(DBG_L1, "PM_SUSPEND: done\n");
-+ break;
-+ case PM_RESUME:
-+ DEBUG(DBG_L1, "PM_RESUME: start\n");
-+ /* request DMA channels */
-+ if ( ac97_audio_state.wr_ref != 0 ) {
-+ init_waitqueue_head(&ac97_audio_state.output_stream->frag_wq);
-+ init_waitqueue_head(&ac97_audio_state.output_stream->stop_wq);
-+ *ac97_audio_state.output_stream->drcmr =
-+ ac97_audio_state.output_stream->dma_ch | DRCMR_MAPVLD;
-+ err = pxa_request_dma(ac97_audio_state.output_stream->name, DMA_PRIO_LOW,
-+ audio_dma_irq, ac97_audio_state.output_stream);
-+ if ( err < 0 ) {
-+ DEBUG(DBG_L0, "Can not get DMA\n");
-+ }
-+ ac97_audio_state.output_stream->dma_ch = err;
-+ }
-+ if ( ac97_audio_state.rd_ref != 0 ) {
-+ init_waitqueue_head(&ac97_audio_state.input_stream->frag_wq);
-+ init_waitqueue_head(&ac97_audio_state.input_stream->stop_wq);
-+ *ac97_audio_state.input_stream->drcmr =
-+ ac97_audio_state.input_stream->dma_ch | DRCMR_MAPVLD;
-+ err = pxa_request_dma(ac97_audio_state.input_stream->name, DMA_PRIO_LOW,
-+ audio_dma_irq, ac97_audio_state.input_stream);
-+ if ( err < 0 ) {
-+ DEBUG(DBG_L0, "Can not get DMA\n");
-+ }
-+ ac97_audio_state.input_stream->dma_ch = err;
-+ }
-+ wm9712_resume();
-+#ifdef CONFIG_TOSA_TS
-+ tosa_ts_resume();
-+#endif /* CONFIG_TOSA_TS */
-+ DEBUG(DBG_L1, "PM_RESUME: done\n");
-+ break;
-+ }
-+ return 0;
-+}
-+#endif /* CONFIG_PM */
-diff -Nur linux_c860_org/drivers/sound/pxa-audio.c linux/drivers/sound/pxa-audio.c
---- linux_c860_org/drivers/sound/pxa-audio.c 2002-08-26 15:00:56.000000000 +0900
-+++ linux/drivers/sound/pxa-audio.c 2004-06-10 21:09:10.000000000 +0900
-@@ -8,6 +8,9 @@
- * 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.
-+ *
-+ * ChangeLog:
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #include <linux/init.h>
-@@ -78,7 +81,11 @@
- * This function allocates the DMA descriptor array and buffer data space
- * according to the current number of fragments and fragment size.
- */
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+int audio_setup_buf(audio_stream_t * s)
-+#else
- static int audio_setup_buf(audio_stream_t * s)
-+#endif /* CONFIG_ARCH_PXA_TOSA */
- {
- pxa_dma_desc *dma_desc;
- dma_addr_t dma_desc_phys;
-@@ -258,7 +265,11 @@
- /*
- * Validate and sets up buffer fragments, etc.
- */
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+int audio_set_fragments(audio_stream_t *s, int val)
-+#else
- static int audio_set_fragments(audio_stream_t *s, int val)
-+#endif /* CONFIG_ARCH_PXA_TOSA */
- {
- if (s->mapped || DCSR(s->dma_ch) & DCSR_RUN)
- return -EBUSY;
-@@ -428,7 +439,11 @@
- }
-
-
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+int audio_sync(struct file *file)
-+#else
- static int audio_sync(struct file *file)
-+#endif /* CONFIG_ARCH_PXA_TOSA */
- {
- audio_state_t *state = file->private_data;
- audio_stream_t *s = state->output_stream;
-@@ -810,12 +825,16 @@
- }
-
- file->private_data = state;
-+#ifndef CONFIG_ARCH_PXA_TOSA
- file->f_op->release = audio_release;
-+#endif /* CONFIG_ARCH_PXA_TOSA */
- file->f_op->write = audio_write;
- file->f_op->read = audio_read;
- file->f_op->mmap = audio_mmap;
- file->f_op->poll = audio_poll;
-+#ifndef CONFIG_ARCH_PXA_TOSA
- file->f_op->ioctl = audio_ioctl;
-+#endif /* CONFIG_ARCH_PXA_TOSA */
- file->f_op->llseek = no_llseek;
-
- if ((file->f_mode & FMODE_WRITE)) {
-@@ -849,3 +868,8 @@
- EXPORT_SYMBOL(pxa_audio_attach);
- EXPORT_SYMBOL(pxa_audio_clear_buf);
-
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+EXPORT_SYMBOL(audio_set_fragments);
-+EXPORT_SYMBOL(audio_sync);
-+EXPORT_SYMBOL(audio_setup_buf);
-+#endif
-diff -Nur linux_c860_org/drivers/sound/sound_core.c linux/drivers/sound/sound_core.c
---- linux_c860_org/drivers/sound/sound_core.c 2002-08-26 14:38:55.000000000 +0900
-+++ linux/drivers/sound/sound_core.c 2004-06-10 21:09:10.000000000 +0900
-@@ -37,6 +37,7 @@
- #include <linux/config.h>
- #include <linux/module.h>
- #include <linux/init.h>
-+#include <linux/sched.h>
- #include <linux/slab.h>
- #include <linux/types.h>
- #include <linux/kernel.h>
-diff -Nur linux_c860_org/drivers/sound/tosa_wm9712.c linux/drivers/sound/tosa_wm9712.c
---- linux_c860_org/drivers/sound/tosa_wm9712.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/sound/tosa_wm9712.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,861 @@
-+/*
-+ * linux/drivers/sound/tosa_wm9712.c
-+ *
-+ * wm9712 ctrl funstions for PXA (SHARP)
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * Based on:
-+ * linux/drivers/sound/poodle_wm8731.c
-+ * wm8731 ctrl funstions for PXA (SHARP)
-+ * Copyright (C) 2002 SHARP
-+ *
-+ * 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/sched.h>
-+#include <linux/timer.h>
-+#include <linux/poll.h>
-+#include <linux/delay.h>
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/ac97_codec.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/irqs.h>
-+
-+#ifdef CONFIG_PM
-+#include <asm/sharp_apm.h>
-+#endif /* CONFIG_PM */
-+
-+#include <asm/arch/tosa_wm9712.h>
-+
-+/************************************************************
-+ * Debug
-+ ************************************************************/
-+#define DBG_LEVEL 0
-+
-+#define DBG_L0 0
-+#define DBG_L1 1
-+#define DBG_L2 2
-+#define DBG_L3 3
-+
-+#ifdef DBG_LEVEL
-+#define DEBUG(level, x, args...) \
-+ if ( level <= DBG_LEVEL ) printk("%s: " x,__FUNCTION__ ,##args)
-+#else
-+#define DEBUG(level, x, args...) \
-+ if ( !level ) printk("%s: " x,__FUNCTION__ ,##args)
-+#endif /* DBG_LEVEL */
-+
-+//X#define DISABLE_JACKCHECK_PLAYING
-+//X#define USE_HARDWARE_LMIX
-+
-+/*** Some valiables **************************************************/
-+typedef struct {
-+ unsigned char used; //used: open(1) close(0)
-+ unsigned char jack; //Jack: in(1) out(0)
-+ unsigned char mic; // Mic headPhone(1) no mic(0)
-+ unsigned char last_jack_state; // jack state
-+ unsigned char open_play;
-+ unsigned char open_rec;
-+ unsigned short mode; //Sound mode
-+ int out_left; //Volume out left
-+ int out_right; //Volume out right
-+ int in_left; //Volume in left
-+ int in_right; //Volume in right
-+ int rate; //Sampling rate
-+ int agc; //Agc: on(1) off(0)
-+ int vol0;
-+#ifdef DISABLE_JACKCHECK_PLAYING
-+ int need_after_check; // check jack after playing
-+#endif
-+#ifdef CONFIG_PM
-+ int suspend; //Suspend: on(1) off(0)
-+#endif /* CONFIG_PM */
-+} wm9712_stat_t;
-+
-+static wm9712_stat_t wm9712_stat;
-+static unsigned char ac97_on = 0;
-+int wm9712_mono_out = 0; // mix output data into mono
-+//static spinlock_t ear_in_lock = SPIN_LOCK_UNLOCKED;
-+//static struct tq_struct wm9712_queue;
-+static struct timer_list hp_wakeup_timer;
-+#define HP_WAKEUP_DELAY (HZ*3)
-+
-+static int wm9712_setup(SOUND_SETTINGS *);
-+static void wm9712_update_agc(int);
-+
-+#define MAKEJACKSTATE(jack,mic) ((jack)*2+(mic))
-+#define INVALID_JACKSTATE -1
-+#define DEV_OUTALL 0
-+#define DEV_SP 1
-+#define DEV_HP 2
-+#define DEV_HPL 3
-+#define DEV_MIC 4
-+
-+#define BIT_ZC (0x1<<7)
-+#define BIT_INV (0x1<<6)
-+#define VOLL_SHIFT 8
-+#define VOLL_MASK (0x3f<<VOLL_SHIFT)
-+#define VOLR_MASK (0x3f)
-+#define VOLL_MUTE (0x2000)
-+#define MASK_DACVOL (0x1f1f)
-+#define LDACVOLSHIFT 8
-+#define RDACVOLSHIFT 0
-+#define BOOSTSHIFT 14
-+#define MASK_BOOST (0x1<<BOOSTSHIFT)
-+#define MASK_RECVOL (0x3f3f)
-+#define RECVOLLSHIFT 8
-+#define RECVOLRSHIFT 0
-+#define DACVOL_MASK 0x1F1F
-+
-+#define RECSL_MASK 0x0707
-+#define RECSL_BITS_MIC 0x0000
-+#define RECSL_BITS_LINEIN 0x0304
-+#define D2H_BIT (0x1<<15)
-+#define D2S_BIT (0x1<<14)
-+#define AC97_GPIO1 (0x1<<1)
-+#define AC97_GPIO5 (0x1<<5)
-+#define ALCM_MASK 0x0c00
-+#define ALCM_MUTE 0x0c00
-+#define ALCM_HP 0x0800
-+#define ALC_MASK 0xc080
-+#define ALC_ON 0x4080
-+#define MS_MASK 0x0060
-+#define MS_MIC2 0x0040
-+#define MUTE_INPUT (0x1<<15)
-+#define BIT_VRA (0x1<<0)
-+
-+#define DEFAULT_OUT_VOLUME (75)
-+#define DEFAULT_IN_VOLUME (75)
-+#define DEFAULT_RATE (8000)
-+#define JACK_POLLING_WAIT (5)
-+
-+static DECLARE_WAIT_QUEUE_HEAD(hp_queue);
-+static DECLARE_WAIT_QUEUE_HEAD(hp_proc);
-+static int volume_table_initialized = FALSE;
-+static unsigned short SpVolToReal[101];
-+static unsigned short HpVolToReal[101];
-+static unsigned short MicVolToReal[101];
-+static unsigned short DacVolToReal[101];
-+static unsigned short VolCnvTbl[38][2] __initdata = {
-+ {8,31}, {8,31}, {8,30}, {8,29}, {8,28}, // 0 - 4
-+ {8,27}, {8,26}, {8,25}, {8,24}, {8,23}, // 5 - 9
-+ {8,22}, {8,21}, {8,20}, {8,19}, {8,18}, // 10 - 14
-+ {8,17}, {8,16}, {8,15}, {8,14}, {8,13}, // 15 - 19
-+ {8,12}, {8,11}, {8,10}, {8, 9}, {8, 8}, // 20 - 24
-+ {8, 7}, {8, 6}, {8, 5}, {8, 4}, {8, 3}, // 25 - 29
-+ {8, 2}, {8, 1}, {8, 0}, {7, 0}, {6, 0}, // 30 - 34
-+ {5, 0}, {4, 0}, {3, 0}, }; // 35 - 37
-+
-+static unsigned short VolInitTbl[101] __initdata = {
-+ 0, 1, 5, 9, 11, 13, 14, 15, 16, 17,
-+ 18, 19, 19, 20, 21, 21, 22, 22, 23, 23,
-+ 23, 24, 24, 25, 25, 25, 25, 26, 26, 26,
-+ 27, 27, 27, 27, 28, 28, 28, 28, 28, 29,
-+ 29, 29, 29, 29, 30, 30, 30, 30, 30, 30,
-+ 31, 31, 31, 31, 31, 31, 31, 32, 32, 32,
-+ 32, 32, 32, 32, 33, 33, 33, 33, 33, 33,
-+ 33, 33, 33, 34, 34, 34, 34, 34, 34, 34,
-+ 34, 34, 34, 35, 35, 35, 35, 35, 35, 35,
-+ 35, 35, 35, 35, 36 ,36, 36, 36, 36, 36,
-+ 37 };
-+
-+#ifdef CONFIG_PM
-+#define ADEV_MAIN 0
-+#define ADEV_HP 1
-+#define ADEV_VOL 2
-+#define ADEV_OFFON 3
-+#define ADEV_INIT 4
-+static int lockState = 0;
-+static void audioLockFCS( int dev, int bLock )
-+{
-+ int curLockState = lockState;
-+ int now,last;
-+ if (bLock) {
-+ curLockState |= 0x1<<dev;
-+ } else {
-+ curLockState &= ~(0x1<<dev);
-+ }
-+ if (curLockState!=lockState) {
-+ now = (curLockState!=0)?TRUE:FALSE;
-+ last = (lockState!=0)?TRUE:FALSE;
-+ if ( now != last ) {
-+ lock_FCS(LOCK_FCS_SOUND, (curLockState!=0)?TRUE:FALSE);
-+ }
-+ lockState = curLockState;
-+ }
-+}
-+#endif // end CONFIG_PM
-+
-+/************************************************************
-+ * Config & Setup
-+ ************************************************************/
-+int wm9712_busy(void)
-+{
-+ return wm9712_stat.used;
-+}
-+
-+void wm9712_checkjack_sleep(void)
-+{
-+ interruptible_sleep_on(&hp_proc);
-+}
-+
-+void wm9712_checkjack_wakeup(void)
-+{
-+ wake_up(&hp_proc);
-+}
-+
-+static int check_hp_jack(void)
-+{
-+ unsigned short gpio_status;
-+ int count = 0, err = 0;
-+ int state;
-+
-+ gpio_status = ac97_read(AC97_GPIO_STATUS);
-+ state = !(gpio_status & AC97_GPIO1); //Active L
-+
-+ while( !(count>10 || err>50) ) {
-+ if (wm9712_stat.suspend) mdelay(JACK_POLLING_WAIT);
-+ else interruptible_sleep_on_timeout((wait_queue_head_t*)&hp_queue, JACK_POLLING_WAIT ); // wait
-+
-+ gpio_status = ac97_read(AC97_GPIO_STATUS);
-+ if (state == !(gpio_status & AC97_GPIO1)) {
-+ count++;
-+ } else {
-+ err++;
-+ state = !(gpio_status & AC97_GPIO1);
-+ count=0;
-+ }
-+ }
-+
-+ if ( count > 10 ) {
-+ wm9712_stat.jack = (state)?TRUE:FALSE;
-+ } else { // error
-+ wm9712_stat.jack = FALSE;
-+ }
-+ return wm9712_stat.jack;
-+}
-+
-+static int check_hp_mic(void)
-+{
-+ unsigned short gpio_status;
-+ int count = 0, err = 0;
-+ volatile int state;
-+ int LchMute;
-+
-+ if (!wm9712_stat.jack) {
-+ wm9712_stat.mic = FALSE;
-+ return FALSE;
-+ }
-+#ifdef DISABLE_JACKCHECK_PLAYING
-+ if (wm9712_stat.open_play) { // cannot check mic while playing
-+ wm9712_stat.need_after_check=TRUE;
-+ return wm9712_stat.mic;
-+ }
-+ wm9712_stat.need_after_check=FALSE;
-+#endif
-+
-+ wm9712_power_mode_tmp(WM9712_PWR_ENMICBIAS); // MICBIAS on
-+ LchMute = !(TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_L_MUTE);
-+ if (!LchMute) TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_L_MUTE; // set L_Mute
-+
-+ gpio_status = ac97_read(AC97_GPIO_STATUS);
-+ state = (gpio_status & AC97_GPIO5); //Active H
-+
-+ while( !(count>10 || err>50) ) {
-+ if (wm9712_stat.suspend) mdelay(JACK_POLLING_WAIT);
-+ else interruptible_sleep_on_timeout((wait_queue_head_t*)&hp_queue, JACK_POLLING_WAIT ); // wait
-+
-+ gpio_status = ac97_read(AC97_GPIO_STATUS);
-+ if (state == (gpio_status & AC97_GPIO5)) {
-+ count++;
-+ } else {
-+ err++;
-+ state = (gpio_status & AC97_GPIO5);
-+ count=0;
-+ }
-+ }
-+
-+ wm9712_power_mode_tmp(WM9712_PWR_OFF); // restore MICBIAS
-+ if (!LchMute) TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_L_MUTE; // restore L_Mute
-+
-+ if ( count > 10 ) {
-+ wm9712_stat.mic = (state)?TRUE:FALSE;
-+ } else { // error
-+ wm9712_stat.mic = FALSE;
-+ }
-+ return wm9712_stat.mic;
-+}
-+
-+static void set_mute_registers( int dev, int mute )
-+{
-+ unsigned short val,val2;
-+#ifdef USE_HARDWARE_LMIX
-+ unsigned short val3;
-+#endif
-+
-+ switch(dev) {
-+ case DEV_MIC:
-+ if (mute) {
-+ ac97_bit_set(AC97_RECORD_GAIN, MUTE_INPUT);
-+ } else {
-+ ac97_bit_clear(AC97_RECORD_GAIN, MUTE_INPUT);
-+ }
-+ break;
-+ case DEV_OUTALL:
-+ set_mute_registers(DEV_SP,mute);
-+ set_mute_registers(DEV_HP,mute);
-+ break;
-+ case DEV_SP: // speaker
-+ val = ac97_read(AC97_MASTER_VOL_STEREO);
-+ val2 = ac97_read(AC97_DAC_VOL);
-+ if (mute || wm9712_stat.vol0) {
-+ val |= AC97_MUTE;
-+ val2 |= D2S_BIT;
-+ } else {
-+ val &= ~AC97_MUTE;
-+ val2 &= ~D2S_BIT;
-+ }
-+ ac97_write(AC97_MASTER_VOL_STEREO,val);
-+ ac97_write(AC97_DAC_VOL,val2);
-+ break;
-+ case DEV_HP: // headphone
-+ val = ac97_read(AC97_HEADPHONE_VOL);
-+ val2 = ac97_read(AC97_DAC_VOL);
-+ if (mute || wm9712_stat.vol0) {
-+ val |= AC97_MUTE;
-+ val2 |= D2H_BIT;
-+ } else {
-+ val &= ~AC97_MUTE;
-+ val2 &= ~D2H_BIT;
-+ }
-+ ac97_write(AC97_HEADPHONE_VOL,val);
-+ ac97_write(AC97_DAC_VOL,val2);
-+ break;
-+ case DEV_HPL: // headphone Lch only
-+ val = ac97_read(AC97_HEADPHONE_VOL);
-+#ifdef USE_HARDWARE_LMIX
-+ val2 = ac97_read(AC97_SIDETONE);
-+ val3 = ac97_read(AC97_DAC_VOL);
-+#endif
-+ if (mute) {
-+ wm9712_mono_out=1;
-+ val |= VOLL_MUTE; // mute bit
-+#ifdef USE_HARDWARE_LMIX
-+ val2 &= ~ALCM_MASK; // SP Mix to Rch
-+ val2 |= ALCM_HP;
-+ val3 |= D2H_BIT;
-+ val3 &= ~D2S_BIT;
-+ if (!wm9712_stat.open_rec) set_mute_registers(DEV_MIC,FALSE);
-+#endif
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_L_MUTE; // Mute Lch
-+ } else {
-+ wm9712_mono_out=0;
-+ val &= ~VOLL_MASK;
-+ val |= (val&VOLR_MASK)<<VOLL_SHIFT;
-+#ifdef USE_HARDWARE_LMIX
-+ val2 &= ~ALCM_MASK; // mute SP Mix
-+ val2 |= ALCM_MUTE;
-+ val3 &= ~D2H_BIT;
-+ val3 &= ~D2S_BIT;
-+ if (!wm9712_stat.open_rec) set_mute_registers(DEV_MIC,TRUE);
-+#endif
-+ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_L_MUTE; // Mute Lch off
-+ }
-+ ac97_write(AC97_HEADPHONE_VOL,val);
-+#ifdef USE_HARDWARE_LMIX
-+ ac97_write(AC97_SIDETONE,val2)
-+ ac97_write(AC97_DAC_VOL,val3);
-+#endif
-+ break;
-+ }
-+}
-+
-+static void set_audio_registers( int jackmode )
-+{
-+ char play = wm9712_stat.open_play;
-+ char rec = wm9712_stat.open_rec;
-+ unsigned short val;
-+
-+ switch( jackmode ) {
-+ case MAKEJACKSTATE(0,0): // Speaker (no HP)
-+ case MAKEJACKSTATE(0,1):
-+ // record from OnBoard Mic
-+ val = ac97_read(AC97_RECORD_SELECT);
-+ val &= ~RECSL_MASK;
-+ val |= RECSL_BITS_MIC;
-+ ac97_write(AC97_RECORD_SELECT,val);
-+ // power down
-+ wm9712_power_mode_audio((play)?WM9712_PWR_PLAY:WM9712_PWR_OFF);
-+ wm9712_power_mode_audioin((rec)?WM9712_PWR_REC:WM9712_PWR_OFF);
-+ // mute
-+ set_mute_registers(DEV_HP,TRUE);
-+ set_mute_registers(DEV_HPL,FALSE);
-+ set_mute_registers(DEV_SP,FALSE);
-+ break;
-+ case MAKEJACKSTATE(1,0): // Stereo HP
-+ // record from OnBoard Mic
-+ val = ac97_read(AC97_RECORD_SELECT);
-+ val &= ~RECSL_MASK;
-+ val |= RECSL_BITS_MIC;
-+ ac97_write(AC97_RECORD_SELECT,val);
-+ // power down
-+ wm9712_power_mode_audio((play)?WM9712_PWR_PLAY_HP:WM9712_PWR_OFF);
-+ wm9712_power_mode_audioin((rec)?WM9712_PWR_REC_HP:WM9712_PWR_OFF);
-+ // mute
-+ set_mute_registers(DEV_SP,TRUE);
-+ set_mute_registers(DEV_HPL,FALSE);
-+ set_mute_registers(DEV_HP,FALSE);
-+ break;
-+ case MAKEJACKSTATE(1,1): // Mic HP
-+ // record from HP Mic
-+ val = ac97_read(AC97_RECORD_SELECT);
-+ val &= ~RECSL_MASK;
-+ val |= RECSL_BITS_LINEIN;
-+ ac97_write(AC97_RECORD_SELECT,val);
-+ // power down
-+ wm9712_power_mode_audio((play)?WM9712_PWR_PLAY_MIC:WM9712_PWR_OFF);
-+ wm9712_power_mode_audioin((rec)?WM9712_PWR_REC_MIC:WM9712_PWR_OFF);
-+ // mute
-+ set_mute_registers(DEV_SP,TRUE);
-+ set_mute_registers(DEV_HPL,TRUE);
-+ set_mute_registers(DEV_HP,FALSE);
-+ break;
-+ }
-+}
-+
-+void wm9712_update_jack_state()
-+{
-+ int cur_jack_state;
-+
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_HP, 1 );
-+#endif
-+ check_hp_jack();
-+ check_hp_mic();
-+ cur_jack_state = MAKEJACKSTATE(wm9712_stat.jack,wm9712_stat.mic);
-+ if (wm9712_stat.last_jack_state == cur_jack_state) {
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_HP, 0 );
-+#endif
-+ return;
-+ }
-+
-+ DEBUG(DBG_L0, "HP jack state changed (Jack=%d,Mic=%d)\r\n",wm9712_stat.jack,wm9712_stat.mic);
-+
-+ set_audio_registers(cur_jack_state);
-+ wm9712_stat.last_jack_state = cur_jack_state;
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_HP, 0 );
-+#endif
-+}
-+
-+static void wm9712_ear_in_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ wm9712_checkjack_wakeup();
-+}
-+
-+
-+void wm9712_exit(void)
-+{
-+ set_mute_registers(DEV_OUTALL,TRUE);
-+
-+ free_irq(IRQ_GPIO_EAR_IN, NULL);
-+
-+ wm9712_power_mode_audio(WM9712_PWR_OFF);
-+ wm9712_power_mode_audioin(WM9712_PWR_OFF);
-+ wm9712_power_mode_tmp(WM9712_PWR_OFF);
-+
-+ pxa_ac97_put(&ac97_on);
-+}
-+
-+
-+int wm9712_init(void)
-+{
-+ unsigned short val;
-+
-+ printk("w9712_init\n");
-+
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_INIT, 1 );
-+#endif
-+ if (!volume_table_initialized) {
-+ int i;
-+ // initialize status
-+ memset(&wm9712_stat,0,sizeof(wm9712_stat));
-+ wm9712_stat.out_left = DEFAULT_OUT_VOLUME;
-+ wm9712_stat.out_right = DEFAULT_OUT_VOLUME;
-+ wm9712_stat.in_left = DEFAULT_IN_VOLUME;
-+ wm9712_stat.in_right = DEFAULT_IN_VOLUME;
-+ wm9712_stat.rate = DEFAULT_RATE;
-+
-+ // set volume table
-+ // volume '90' is 0dB, max volume is 7.5dB
-+ for (i=0; i<=100; i++) {
-+ SpVolToReal[i] = VolCnvTbl[VolInitTbl[i]][1];
-+ HpVolToReal[i] = VolCnvTbl[VolInitTbl[i]][1];
-+ DacVolToReal[i] = VolCnvTbl[VolInitTbl[i]][0];
-+ MicVolToReal[i] = 0xf * i / 100;
-+ }
-+ volume_table_initialized=TRUE;
-+ }
-+ wm9712_stat.last_jack_state = INVALID_JACKSTATE;
-+ pxa_ac97_get(&codec, &ac97_on);
-+ wm9712_power_mode_audio(WM9712_PWR_OFF);
-+ wm9712_power_mode_audioin(WM9712_PWR_OFF);
-+ wm9712_power_mode_tmp(WM9712_PWR_OFF);
-+
-+
-+ // set default values in wm9712 registers
-+ // 0x02 MASTER_VOLUME ... ZC=1, INV=1
-+ val = ac97_read(AC97_MASTER_VOL_STEREO);
-+ val |= BIT_ZC|BIT_INV;
-+ ac97_write(AC97_MASTER_VOL_STEREO,val);
-+
-+ // 0x04 HEADPHONE_VOLUME ... ZC=1
-+ val = ac97_read(AC97_HEADPHONE_VOL);
-+ val |= BIT_ZC;
-+ ac97_write(AC97_HEADPHONE_VOL,val);
-+
-+ // 0x0E MIC VOLUME ... set MS
-+ val = ac97_read(AC97_MIC_VOL);
-+ val &= ~MS_MASK;
-+ val |= MS_MIC2;
-+ ac97_write(AC97_MIC_VOL,val);
-+
-+ // 0x1A RECORD_SELECT ... set BOOST
-+ val = ac97_read(AC97_RECORD_SELECT);
-+ val |= MASK_BOOST;
-+ ac97_write(AC97_RECORD_SELECT,val);
-+
-+ // 0x1C RECORD_GAIN ... set ZC=1
-+ val = ac97_read(AC97_RECORD_GAIN);
-+ val |= BIT_ZC;
-+ ac97_write(AC97_RECORD_GAIN,val);
-+
-+ // 0x2A AC97_EXTENDED_STATUS set VRA=1
-+ val = ac97_read(AC97_EXTENDED_STATUS);
-+ val |= BIT_VRA;
-+ ac97_write(AC97_EXTENDED_STATUS,val);
-+
-+ // set default volume
-+ wm9712_set_output_volume(wm9712_stat.out_left, wm9712_stat.out_right);
-+ wm9712_set_input_gain(wm9712_stat.in_left, wm9712_stat.in_right);
-+
-+ // set default rate
-+ ac97_set_dac_rate(codec, (unsigned int)wm9712_stat.rate);
-+ ac97_set_adc_rate(codec, (unsigned int)wm9712_stat.rate);
-+
-+ wm9712_update_jack_state();
-+ init_timer(&hp_wakeup_timer);
-+ hp_wakeup_timer.function = wm9712_checkjack_wakeup;
-+
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_INIT, 0 );
-+#endif
-+
-+ set_GPIO_IRQ_edge(GPIO_HP_IN, GPIO_BOTH_EDGES);
-+ if( request_irq(IRQ_GPIO_EAR_IN, wm9712_ear_in_interrupt, SA_INTERRUPT, "ear_in", NULL) ) {
-+ DEBUG(DBG_L0, "IRQ error %d\n", IRQ_GPIO_EAR_IN);
-+ return -EBUSY;
-+ }
-+
-+ return 0;
-+}
-+
-+/************************************************************
-+ * Open & Close
-+ ************************************************************/
-+int wm9712_open(SOUND_SETTINGS *settings)
-+{
-+ DEBUG(DBG_L2, "wm9712 open\n");
-+
-+ if ( wm9712_stat.used ) {
-+ DEBUG(DBG_L0, "wm9712 device is busy now !\n");
-+ return -EBUSY;
-+ }
-+
-+ wm9712_stat.used = TRUE;
-+
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_MAIN, 1 );
-+#endif /* CONFIG_PM */
-+
-+ if ( wm9712_setup(settings) < 0 ) {
-+ wm9712_close();
-+ wm9712_stat.used = FALSE;
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+int wm9712_close(void)
-+{
-+ DEBUG(DBG_L2 ,"wm9712 close\n");
-+
-+ // set_mute_registers(DEV_OUTALL,TRUE);
-+ set_mute_registers(DEV_MIC,TRUE);
-+
-+ wm9712_stat.used = FALSE;
-+ wm9712_stat.open_play = FALSE;
-+ wm9712_stat.open_rec = FALSE;
-+
-+ wm9712_power_mode_audio(WM9712_PWR_OFF);
-+ wm9712_power_mode_audioin(WM9712_PWR_OFF);
-+ wm9712_power_mode_tmp(WM9712_PWR_OFF);
-+
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_MAIN, 0 );
-+#endif /* CONFIG_PM */
-+
-+#ifdef DISABLE_JACKCHECK_PLAYING
-+ if (wm9712_stat.need_after_check) {
-+ wm9712_checkjack_wakeup();
-+ }
-+#endif
-+
-+ return 0;
-+}
-+
-+/************************************************************
-+ * Setup
-+ ************************************************************/
-+static int wm9712_setup(SOUND_SETTINGS *setting)
-+{
-+ int ret = 0;
-+
-+ if( setting == NULL ) return -1;
-+
-+ if ( !wm9712_stat.used ) {
-+ DEBUG(DBG_L0, "not opened !\n");
-+ return -EINVAL;
-+ }
-+
-+ wm9712_stat.mode = setting->mode & SOUND_MODE_MASK;
-+ if (wm9712_stat.mode & SOUND_PLAY_MODE) {
-+ DEBUG(DBG_L2, "Sound Play Setting\n");
-+ // wm9712_set_output_volume(setting->output.left, setting->output.right);
-+ wm9712_stat.open_play=TRUE;
-+ }
-+ if (wm9712_stat.mode & SOUND_REC_MODE) {
-+ DEBUG(DBG_L2, "Sound Rec Mode\n");
-+ set_mute_registers(DEV_MIC,FALSE);
-+ // wm9712_set_input_gain(setting->input.left, setting->input.right);
-+ wm9712_stat.open_rec=TRUE;
-+ }
-+ if (!wm9712_stat.open_play && !wm9712_stat.open_rec) {
-+ DEBUG(DBG_L0, "Sound mode(%x) is not supported !\n", wm9712_stat.mode);
-+ return -EINVAL;
-+ }
-+
-+ set_audio_registers(wm9712_stat.last_jack_state);
-+
-+ if ( (ret = wm9712_set_freq(setting)) < 0 ) return ret;
-+
-+ return 0;
-+}
-+
-+// for Freq.
-+int wm9712_set_freq(SOUND_SETTINGS *setting)
-+{
-+ int ret = 0;
-+ unsigned int actual_val;
-+ wm9712_stat.rate = setting->frequency;
-+ DEBUG(DBG_L2, "rate = %d\n", wm9712_stat.rate);
-+
-+ if ( !wm9712_stat.used ) {
-+ DEBUG(DBG_L0, "not opened !\n");
-+ return -EINVAL;
-+ }
-+ if ( wm9712_stat.rate < 8000 ) wm9712_stat.rate = 8000;
-+ else if ( wm9712_stat.rate > 48000 ) wm9712_stat.rate = 48000;
-+
-+ if (wm9712_stat.open_play) {
-+ actual_val = ac97_set_dac_rate(codec, (unsigned int)wm9712_stat.rate);
-+ if ( actual_val != wm9712_stat.rate) {
-+ DEBUG(DBG_L1,"Set DAC rate error: %d->%d\n",wm9712_stat.rate,actual_val);
-+ }
-+ }
-+ if (wm9712_stat.open_rec) {
-+ actual_val = ac97_set_adc_rate(codec, (unsigned int)wm9712_stat.rate);
-+ if ( actual_val != wm9712_stat.rate) {
-+ DEBUG(DBG_L1,"Set ADC rate error: %d->%d\n",wm9712_stat.rate,actual_val);
-+ }
-+ }
-+
-+ DEBUG(DBG_L2, "Sampling rate: %d\n", wm9712_stat.rate);
-+
-+ return ret;
-+}
-+
-+
-+/************************************************************
-+ * Volume
-+ ************************************************************/
-+
-+int wm9712_set_output_volume(int left, int right)
-+{
-+ unsigned short real_left_vol,real_right_vol,val;
-+
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_VOL, 1 );
-+#endif
-+ // speaker volume
-+ real_left_vol = SpVolToReal[left];
-+ real_right_vol = SpVolToReal[right];
-+
-+ val = ac97_read(AC97_MASTER_VOL_STEREO);
-+ val &= ~(VOLL_MASK|VOLR_MASK);
-+ val |= (real_left_vol << VOLL_SHIFT) | real_right_vol;
-+ ac97_write(AC97_MASTER_VOL_STEREO,val);
-+
-+ // head phone volume
-+ real_left_vol = HpVolToReal[left];
-+ real_right_vol = HpVolToReal[right];
-+
-+ val = ac97_read(AC97_HEADPHONE_VOL);
-+ val &= ~(VOLL_MASK|VOLR_MASK);
-+ if (wm9712_stat.mic) { // minimize Lch volume
-+ val |= VOLL_MASK | real_right_vol;
-+ } else {
-+ val |= (real_left_vol << VOLL_SHIFT) | real_right_vol;
-+ }
-+ ac97_write(AC97_HEADPHONE_VOL,val);
-+
-+ // pcm volume
-+ real_left_vol = DacVolToReal[left];
-+ real_right_vol = DacVolToReal[right];
-+
-+ val = ac97_read(AC97_DAC_VOL);
-+ val &= ~DACVOL_MASK;
-+ val |= (real_left_vol << VOLL_SHIFT) | real_right_vol;
-+ ac97_write(AC97_DAC_VOL,val);
-+
-+ wm9712_stat.out_left = left;
-+ wm9712_stat.out_right = right;
-+
-+ // volume 0 means mute
-+ if ( (left==0 && right==0) && wm9712_stat.vol0!=TRUE) {
-+ wm9712_stat.vol0 = TRUE;
-+ set_mute_registers(DEV_OUTALL,TRUE);
-+ }
-+ if ( (left>0 || right>0) && wm9712_stat.vol0==TRUE) {
-+ wm9712_stat.vol0 = FALSE;
-+ set_audio_registers(wm9712_stat.last_jack_state);
-+ }
-+
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_VOL, 0 );
-+#endif
-+ return 0;
-+}
-+
-+int wm9712_set_input_gain(int left, int right)
-+{
-+ unsigned short real_left_vol,real_right_vol,val;
-+
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_VOL, 1 );
-+#endif
-+
-+ real_left_vol = MicVolToReal[left];
-+ real_right_vol = MicVolToReal[left]; // Rch use left volume
-+
-+ val = ac97_read(AC97_RECORD_GAIN);
-+ val &= ~(VOLL_MASK|VOLR_MASK);
-+ val |= (real_left_vol << VOLL_SHIFT) | real_right_vol;
-+ ac97_write(AC97_RECORD_GAIN,val);
-+
-+ wm9712_stat.in_left = left;
-+ wm9712_stat.in_right = right;
-+
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_VOL, 0 );
-+#endif
-+
-+ return 0;
-+}
-+
-+/*
-+ * AGC
-+ */
-+static void wm9712_update_agc(int agc)
-+{
-+ unsigned short val;
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_VOL, 1 );
-+#endif
-+ if ( wm9712_stat.mode | SOUND_REC_MODE ) {
-+ val = ac97_read(AC97_NOISE_CTL);
-+ val &= ~ALC_MASK;
-+ if (agc) val |= ALC_ON;
-+ ac97_write(AC97_NOISE_CTL,val);
-+ }
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_VOL, 0 );
-+#endif
-+
-+}
-+
-+int wm9712_set_agc(int agc)
-+{
-+ if ( agc < 0 ) return wm9712_stat.agc;
-+ agc = !!agc; /* should be 0 or 1 now */
-+ if ( wm9712_stat.agc != agc ) {
-+ wm9712_stat.agc = agc;
-+ wm9712_update_agc(wm9712_stat.agc);
-+ }
-+ return agc;
-+}
-+
-+/*** Suspend/Resume ***********************************************************/
-+#ifdef CONFIG_PM
-+void wm9712_suspend(void)
-+{
-+ DEBUG(DBG_L2, "in\n");
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_OFFON, 1 );
-+#endif
-+ wm9712_stat.suspend = 1;
-+ wm9712_exit();
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_OFFON, 0 );
-+#endif
-+ DEBUG(DBG_L2, "out\n");
-+}
-+
-+void wm9712_resume(void)
-+{
-+ DEBUG(DBG_L2, "in\n");
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_OFFON, 1 );
-+#endif
-+ wm9712_init();
-+ if (wm9712_stat.open_play) {
-+ ac97_set_dac_rate(codec, (unsigned int)wm9712_stat.rate);
-+ }
-+ if (wm9712_stat.open_rec) {
-+ set_mute_registers(DEV_MIC,FALSE);
-+ ac97_set_adc_rate(codec, (unsigned int)wm9712_stat.rate);
-+ }
-+ wm9712_stat.suspend = 0;
-+ //X wm9712_checkjack_wakeup();
-+ hp_wakeup_timer.expires = jiffies + HP_WAKEUP_DELAY;
-+ add_timer(&hp_wakeup_timer);
-+#ifdef CONFIG_PM
-+ audioLockFCS( ADEV_OFFON, 0 );
-+#endif
-+ DEBUG(DBG_L2, "out\n");
-+}
-+#endif /* CONFIG_PM */
-diff -Nur linux_c860_org/drivers/usb/Config.in linux/drivers/usb/Config.in
---- linux_c860_org/drivers/usb/Config.in 2002-08-29 12:26:42.000000000 +0900
-+++ linux/drivers/usb/Config.in 2004-06-10 21:09:10.000000000 +0900
-@@ -36,6 +36,12 @@
- fi
- dep_tristate ' OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support' CONFIG_USB_OHCI $CONFIG_USB
- dep_tristate ' SA1111 OHCI-compatible host interface support' CONFIG_USB_OHCI_SA1111 $CONFIG_USB
-+dep_tristate ' TC6393 OHCI-compatible host interface support' CONFIG_USB_OHCI_TC6393 $CONFIG_USB
-+if [ "$CONFIG_USB_OHCI_TC6393" != "n" ]; then
-+ define_bool CONFIG_USB_USE_INTERNAL_MEMORY y
-+else
-+ define_bool CONFIG_USB_USE_INTERNAL_MEMORY n
-+fi
-
- comment 'USB Device Class drivers'
- dep_tristate ' USB Audio support' CONFIG_USB_AUDIO $CONFIG_USB $CONFIG_SOUND
-diff -Nur linux_c860_org/drivers/usb/Makefile linux/drivers/usb/Makefile
---- linux_c860_org/drivers/usb/Makefile 2002-08-29 12:26:42.000000000 +0900
-+++ linux/drivers/usb/Makefile 2004-06-10 21:09:10.000000000 +0900
-@@ -16,10 +16,11 @@
-
- # Multipart objects.
-
--list-multi := usbcore.o hid.o pwc.o
-+list-multi := usbcore.o hid.o pwc.o usb_ohci_tc6393.o
- usbcore-objs := usb.o usb-debug.o hub.o
- hid-objs := hid-core.o hid-input.o
- pwc-objs := pwc-if.o pwc-misc.o pwc-ctrl.o pwc-uncompress.o
-+ohci-tc6393-objs := usb-ohci.o usb-ohci-tc6393.o pcipool.o mem-onchip.o
-
-
- # Optional parts of multipart objects.
-@@ -48,6 +49,7 @@
- obj-$(CONFIG_USB_UHCI_ALT) += uhci.o
- obj-$(CONFIG_USB_OHCI) += usb-ohci.o usb-ohci-pci.o
- obj-$(CONFIG_USB_OHCI_SA1111) += usb-ohci.o usb-ohci-sa1111.o
-+obj-$(CONFIG_USB_OHCI_TC6393) += usbcore.o usb_ohci_tc6393.o
-
- obj-$(CONFIG_USB_MOUSE) += usbmouse.o
- obj-$(CONFIG_USB_HID) += hid.o
-@@ -105,3 +107,6 @@
-
- pwc.o: $(pwc-objs)
- $(LD) -r -o $@ $(pwc-objs)
-+
-+usb_ohci_tc6393.o: $(ohci-tc6393-objs)
-+ $(LD) -r -o $@ $(ohci-tc6393-objs)
-diff -Nur linux_c860_org/drivers/usb/device/bi/pxa.c linux/drivers/usb/device/bi/pxa.c
---- linux_c860_org/drivers/usb/device/bi/pxa.c 2003-11-07 11:35:45.000000000 +0900
-+++ linux/drivers/usb/device/bi/pxa.c 2004-06-10 21:09:10.000000000 +0900
-@@ -24,6 +24,8 @@
- * Change Log
- * 28-Nov-2003 Lineo Solutions, Inc. Add module parameter. 'shortpacket'
- * and 'recvpacket'.
-+ * ChangeLog:
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa (support cable gpio)
- *
- */
-
-@@ -912,6 +914,10 @@
- PXA_REGS(UDCCS0," <-- ep0");
- }
-
-+#ifdef USBD_CABLE_GPIO
-+static int udc_connect_state = 0;
-+#endif
-+
- /* ********************************************************************************************* */
- /* Interrupt Handler
- */
-@@ -975,10 +981,24 @@
- // uncommon interrupts
- if ((udccr = UDCCR) & (UDCCR_RSTIR | UDCCR_RESIR | UDCCR_SUSIR)) {
-
-+#ifdef USBD_CABLE_GPIO
-+ if (!udc_connect_state && (udccr & UDCCR_RSTIR)) {
-+ // printk("ignore UDC Reset\n");
-+ UDCCR |= UDCCR_RSTIR;
-+ udccr &= ~UDCCR_RSTIR;
-+ }
-+ if (!udc_connect_state && (udccr & UDCCR_RESIR)) {
-+ // printk("ignore UDC Resume\n");
-+ UDCCR |= UDCCR_RESIR;
-+ udccr &= ~UDCCR_RESIR;
-+ }
-+#endif
-+
- // UDC Reset
-- if (udccr & UDCCR_RSTIR) {
-+ if (udccr & UDCCR_RSTIR) {
- #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_APM_CPU_IDLE)
- static int is1stReset = 1;
-+ // printk("UDC Reset\n");
- if (is1stReset) {
- is1stReset = 0;
- } else {
-@@ -995,7 +1015,8 @@
- }
-
- // UDC Resume
-- if (udccr & UDCCR_RESIR) {
-+ if (udccr & UDCCR_RESIR) {
-+ // printk("UDC Resume\n");
- PXA_CCR(udccr, "------------------------> Resume");
- if (udc_suspended) {
- #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_APM_CPU_IDLE)
-@@ -1009,6 +1030,7 @@
-
- // UDC Suspend
- if (udccr & UDCCR_SUSIR) {
-+ // printk("UDC Suspend\n");
- PXA_CCR(udccr, "------------------------> Suspend");
- if (!udc_suspended) {
- #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_APM_CPU_IDLE)
-@@ -1284,7 +1306,17 @@
- */
- int udc_connected ()
- {
-- return 1;
-+ int rc = 1;
-+#ifdef USBD_CABLE_GPIO
-+#ifdef USBD_CABLE_ACTIVE_HIGH
-+ rc = (GPLR(USBD_CABLE_GPIO) & GPIO_bit(USBD_CABLE_GPIO)) != 0;
-+ //dbg_udc (1, "udc_connected: ACTIVE_HIGH: %d", rc);
-+#else
-+ rc = (GPLR(USBD_CABLE_GPIO) & GPIO_bit(USBD_CABLE_GPIO)) == 0;
-+ //dbg_udc (1, "udc_connected: ACTIVE_LOW: %d", rc);
-+#endif
-+#endif
-+ return rc;
- }
-
- /**
-@@ -1294,6 +1326,9 @@
- */
- void udc_connect (void)
- {
-+#ifdef USBD_CABLE_GPIO
-+ udc_connect_state = 1;
-+#endif
- #ifdef CONFIG_SABINAL_DISCOVERY
- /* Set GPIO pin function to I/O */
- GAFR1_U &= ~(0x3 << ((USBD_CONNECT_GPIO & 0xF) << 1));
-@@ -1318,6 +1353,20 @@
- GPCR(USBD_CONNECT_GPIO) = GPIO_bit(USBD_CONNECT_GPIO);
- #endif
-
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+ if (!udc_connected()) {
-+ //printk("USB Cable not connected!!\n");
-+ return;
-+ }
-+ SCP_JC_REG_GPCR |= USBD_CONNECT_GPIO;
-+#if defined(USBD_CONNECT_HIGH)
-+ /* Set GPIO pin high to connect */
-+ set_scoop_jc_gpio(USBD_CONNECT_GPIO);
-+#else
-+ /* Set GPIO pin low to connect */
-+ reset_scoop_jc_gpio(USBD_CONNECT_GPIO);
-+#endif
-+
- #else
- #warning NO USB Device connect
- #endif
-@@ -1330,6 +1379,9 @@
- */
- void udc_disconnect (void)
- {
-+#ifdef USBD_CABLE_GPIO
-+ udc_connect_state = 0;
-+#endif
- #ifdef CONFIG_SABINAL_DISCOVERY
- /* Set GPIO pin function to I/O */
- GAFR1_U &= ~(0x3 << ((USBD_CONNECT_GPIO & 0xF) << 1));
-@@ -1354,18 +1406,35 @@
- GPSR(USBD_CONNECT_GPIO) = GPIO_bit(USBD_CONNECT_GPIO);
- #endif
-
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+ SCP_JC_REG_GPCR |= USBD_CONNECT_GPIO;
-+#if defined(USBD_CONNECT_HIGH)
-+ /* Set GPIO pin low to disconnect */
-+ reset_scoop_jc_gpio(USBD_CONNECT_GPIO);
-+#else
-+ /* Set GPIO pin high to disconnect */
-+ set_scoop_jc_gpio(USBD_CONNECT_GPIO);
-+#endif
-+
- #else
- #warning NO USB Device connect
- #endif
- }
-
--#if 0
-+#ifdef USBD_CABLE_GPIO
- /**
- * udc_int_hndlr_cable - interrupt handler for cable
- */
- static void udc_int_hndlr_cable (int irq, void *dev_id, struct pt_regs *regs)
- {
- // GPIOn interrupt
-+ //dbg_udc("udc_cradle_interrupt: ->%08x\n",GPLR(USBD_CABLE_GPIO));
-+ if (udc_connected()) {
-+ usbd_device_event(udc_device, DEVICE_HUB_RESET, 0);
-+ udc_cable_event ();
-+ } else {
-+ udc_disconnect();
-+ }
- }
- #endif
-
-@@ -1663,12 +1732,14 @@
- */
- int udc_request_cable_irq ()
- {
--#ifdef XXXX_CABLE_IRQ
-+#ifdef USBD_CABLE_GPIO
-+ set_GPIO_mode(USBD_CABLE_GPIO | GPIO_IN);
-+ set_GPIO_IRQ_edge(USBD_CABLE_GPIO, GPIO_BOTH_EDGES);
- // request IRQ and IO region
-- if (request_irq
-- (XXXX_CABLE_IRQ, int_hndlr, SA_INTERRUPT | SA_SAMPLE_RANDOM, UDC_NAME " Cable",
-- NULL) != 0) {
-- printk (KERN_INFO "usb_ctl: Couldn't request USB irq\n");
-+ if (request_irq (IRQ_GPIO(USBD_CABLE_GPIO), udc_int_hndlr_cable,
-+ SA_INTERRUPT | SA_SAMPLE_RANDOM, UDC_NAME " Cable", NULL) != 0)
-+ {
-+ printk (KERN_INFO "usb_ctl: Couldn't request USB cable irq\n");
- return -EINVAL;
- }
- #endif
-@@ -1921,8 +1992,8 @@
- */
- void udc_release_cable_irq ()
- {
--#ifdef XXXX_IRQ
-- free_irq (XXXX_CABLE_IRQ, NULL);
-+#ifdef USBD_CABLE_GPIO
-+ free_irq (IRQ_GPIO(USBD_CABLE_GPIO), NULL);
- #endif
- }
-
-diff -Nur linux_c860_org/drivers/usb/device/bi/pxa.h linux/drivers/usb/device/bi/pxa.h
---- linux_c860_org/drivers/usb/device/bi/pxa.h 2002-08-26 15:19:05.000000000 +0900
-+++ linux/drivers/usb/device/bi/pxa.h 2004-06-10 21:09:10.000000000 +0900
-@@ -21,6 +21,8 @@
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
-+ * ChangeLog:
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
-
-@@ -54,6 +56,15 @@
- #define USBD_CONNECT_HIGH 1
- #endif
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+/* SHARP SL-6000 specific GPIO assignments */
-+#define USBD_CONNECT_GPIO SCP_JC_USB_PULLUP
-+#define USBD_CONNECT_HIGH 1
-+#define USBD_CABLE_GPIO GPIO_USB_IN
-+// active low
-+//#define USBD_CABLE_ACTIVE_HIGH 1
-+#endif
-+
-
- /*
- * DMA Notes
-diff -Nur linux_c860_org/drivers/usb/device/usbd-arch.h linux/drivers/usb/device/usbd-arch.h
---- linux_c860_org/drivers/usb/device/usbd-arch.h 2003-10-16 13:59:01.000000000 +0900
-+++ linux/drivers/usb/device/usbd-arch.h 2004-06-10 21:09:10.000000000 +0900
-@@ -42,6 +42,9 @@
- * Typically during early development you will set these via the kernel
- * configuration and migrate the values into here once specific values
- * have been tested and will no longer change.
-+ *
-+ * Change Log
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
-
-@@ -442,13 +445,13 @@
- #define CONFIG_USBD_PRODUCT_NAME "SL-C750"
- #else
- #define CONFIG_USBD_PRODUCT_NAME "SL-7500"
--#endif
--#endif
--#endif
-+#endif // CONFIG_ARCH_SHARP_SL_J
-+#endif // CONFIG_ARCH_PXA_HUSKY
-+#endif // CONFIG_ARCH_PXA_SHEPHERD
-
- #ifdef CONFIG_ARCH_PXA_BOXER
-- #undef CONFIG_USBD_PRODUCT_NAME
-- #define CONFIG_USBD_PRODUCT_NAME "SL-C860"
-+ #undef CONFIG_USBD_PRODUCT_NAME
-+ #define CONFIG_USBD_PRODUCT_NAME "SL-C860"
- #endif
-
- #undef CONFIG_USBD_NET_CDC
-@@ -458,4 +461,38 @@
- #define CONFIG_USBD_NET_MDLM 1
- #define CONFIG_USBD_MAC_AS_SERIAL_NUMBER 1
-
--#endif
-+#endif // CONFIG_ARCH_PXA_CORGI
-+
-+
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+
-+ #warning CONFIGURING FOR TOSA
-+
-+ #undef CONFIG_USBD_VENDORID
-+ #define CONFIG_USBD_VENDORID 0x04dd
-+ #undef CONFIG_USBD_SERIAL_PRODUCT ID
-+ #define CONFIG_USBD_SERIAL_PRODUCT ID 0x9032
-+ #undef CONFIG_USBD_NET_PRODUCTID
-+ #define CONFIG_USBD_NET_PRODUCTID 0x9032
-+
-+ #undef CONFIG_USBD_SELFPOWERED
-+ #undef CONFIG_USBD_MANUFACTURER
-+ #undef CONFIG_USBD_PRODUCT_NAME
-+
-+ #define CONFIG_USBD_SELFPOWERED 1
-+ #define CONFIG_USBD_MANUFACTURER "Sharp"
-+#ifdef CONFIG_ARCH_SHARP_SL_J
-+ #define CONFIG_USBD_PRODUCT_NAME "SL-6000"
-+#else
-+ #define CONFIG_USBD_PRODUCT_NAME "SL-6000"
-+#endif // CONFIG_ARCH_SHARP_SL_J
-+
-+ #undef CONFIG_USBD_NET_CDC
-+ #undef CONFIG_USBD_NET_MDLM
-+ #undef CONFIG_USBD_NET_SAFE
-+
-+ #define CONFIG_USBD_NET_MDLM 1
-+ #define CONFIG_USBD_MAC_AS_SERIAL_NUMBER 1
-+
-+#endif // CONFIG_ARCH_PXA_TOSA
-+
-diff -Nur linux_c860_org/drivers/usb/device/usbd-monitor.c linux/drivers/usb/device/usbd-monitor.c
---- linux_c860_org/drivers/usb/device/usbd-monitor.c 2002-08-26 15:19:04.000000000 +0900
-+++ linux/drivers/usb/device/usbd-monitor.c 2004-06-10 21:09:10.000000000 +0900
-@@ -23,6 +23,8 @@
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
-+ * ChangeLog:
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
-
-@@ -62,7 +64,7 @@
- * Architecture specific includes
- */
-
--#if defined(CONFIG_ARCH_SA1100) || defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_SA1100) || defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
-
- #include <asm/irq.h>
- #include <asm/hardware.h>
-diff -Nur linux_c860_org/drivers/usb/inode.c linux/drivers/usb/inode.c
---- linux_c860_org/drivers/usb/inode.c 2002-08-26 14:39:15.000000000 +0900
-+++ linux/drivers/usb/inode.c 2004-06-10 21:09:10.000000000 +0900
-@@ -24,6 +24,9 @@
- *
- * History:
- * 0.1 04.01.2000 Created
-+ *
-+ * Change Log
-+ * 27-Dec-2003 SHARP fixed non-reentrant codes
- */
-
- /*****************************************************************************/
-@@ -628,6 +631,9 @@
- s->s_root = d_alloc_root(root_inode);
- if (!s->s_root)
- goto out_no_root;
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ lock_kernel();
-+#endif
- list_add_tail(&s->u.usbdevfs_sb.slist, &superlist);
- for (i = 0; i < NRSPECIAL; i++) {
- if (!(inode = iget(s, IROOT+1+i)))
-@@ -646,6 +652,9 @@
- recurse_new_dev_inode(bus->root_hub, s);
- }
- up (&usb_bus_list_lock);
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ unlock_kernel();
-+#endif
- return s;
-
- out_no_root:
-@@ -674,9 +683,15 @@
- struct list_head *slist;
-
- lock_kernel();
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ down (&usb_bus_list_lock);
-+#endif
- for (slist = superlist.next; slist != &superlist; slist = slist->next)
- new_bus_inode(bus, list_entry(slist, struct super_block, u.usbdevfs_sb.slist));
- update_special_inodes();
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ up (&usb_bus_list_lock);
-+#endif
- unlock_kernel();
- usbdevfs_conn_disc_event();
- }
-@@ -684,9 +699,15 @@
- void usbdevfs_remove_bus(struct usb_bus *bus)
- {
- lock_kernel();
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ down (&usb_bus_list_lock);
-+#endif
- while (!list_empty(&bus->inodes))
- free_inode(list_entry(bus->inodes.next, struct inode, u.usbdev_i.dlist));
- update_special_inodes();
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ up (&usb_bus_list_lock);
-+#endif
- unlock_kernel();
- usbdevfs_conn_disc_event();
- }
-@@ -696,9 +717,15 @@
- struct list_head *slist;
-
- lock_kernel();
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ down (&usb_bus_list_lock);
-+#endif
- for (slist = superlist.next; slist != &superlist; slist = slist->next)
- new_dev_inode(dev, list_entry(slist, struct super_block, u.usbdevfs_sb.slist));
- update_special_inodes();
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ up (&usb_bus_list_lock);
-+#endif
- unlock_kernel();
- usbdevfs_conn_disc_event();
- }
-@@ -709,6 +736,9 @@
- struct siginfo sinfo;
-
- lock_kernel();
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ down (&usb_bus_list_lock);
-+#endif
- while (!list_empty(&dev->inodes))
- free_inode(list_entry(dev->inodes.next, struct inode, u.usbdev_i.dlist));
- while (!list_empty(&dev->filelist)) {
-@@ -728,6 +758,9 @@
- }
-
- update_special_inodes();
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ up (&usb_bus_list_lock);
-+#endif
- unlock_kernel();
- usbdevfs_conn_disc_event();
- }
-diff -Nur linux_c860_org/drivers/usb/mem-onchip.c linux/drivers/usb/mem-onchip.c
---- linux_c860_org/drivers/usb/mem-onchip.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/usb/mem-onchip.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,364 @@
-+/*
-+ * linux/drivers/usb/mem-onchip.c
-+ *
-+ * memory allocate functions for RAM on chip
-+ *
-+ * Copyright (c) 2003 Lineo Solutions, Inc.
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ */
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/ioport.h>
-+#include <linux/interrupt.h>
-+#include <linux/slab.h>
-+#include <linux/usb.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/irq.h>
-+#include <asm/io.h>
-+
-+#include "mem-onchip.h"
-+
-+#if 0
-+#define dbg(format, arg...) printk(KERN_DEBUG __FILE__ ": " format "\n" , ## arg)
-+#else
-+#define dbg(format, arg...) do {} while (0)
-+#endif
-+
-+
-+
-+//#define MALLOCK_BOUNDART_32BYTE
-+#define MALLOCK_BOUNDART_16BYTE
-+
-+#define MAKE_POINTER(p, offset) ((oc_mem_head *)((u32)(p) + offset))
-+
-+#define INIT_OC_MEM_HEAD(p, s) \
-+ {\
-+ INIT_LIST_HEAD(&(p)->free_list);\
-+ (p)->size = s;\
-+ (p)->flag = 0;\
-+ }
-+
-+#define IS_ALLOCATED_MEMORY(p) ((struct list_head *)(p) == (p)->free_list.next \
-+ && (p)->free_list.next == (p)->free_list.prev)
-+
-+/* memory block header */
-+typedef struct __oc_mem_head {
-+ struct list_head free_list;
-+ size_t size;
-+ u32 flag;
-+#ifdef MALLOCK_BOUNDART_32BYTE
-+ u32 dummy[4]; // for 32byte boundary
-+#endif
-+} oc_mem_head;
-+
-+
-+u32 OC_MEM_TOP = 0;
-+static u32 OC_MEM_BASE = 0;
-+static u32 OC_MEM_SIZE = 0;
-+static u32 OC_MEM_HCCA_BASE = 0;
-+#define OC_MEM_HCCA_SIZE 0x100
-+
-+static spinlock_t oc_mem_list_lock = SPIN_LOCK_UNLOCKED;
-+static int is_oc_hcca_allocated = 0;
-+
-+static void oc_mem_list_add(oc_mem_head *cp);
-+static void* oc_malloc(size_t size, int gfp);
-+static void oc_mfree(void* fp);
-+static size_t oc_mem_check(int verbose);
-+
-+
-+/* mem_base is 256byte boundary */
-+void oc_mem_init(unsigned int mem_base, size_t size)
-+{
-+ oc_mem_head *top, *cp;
-+
-+ if (OC_MEM_BASE) return;
-+
-+ OC_MEM_TOP = mem_base;
-+ OC_MEM_HCCA_BASE = mem_base;
-+ OC_MEM_BASE = mem_base + OC_MEM_HCCA_SIZE; /* 0x100 for HCCA */
-+ OC_MEM_SIZE = size - OC_MEM_HCCA_SIZE;
-+
-+ top = MAKE_POINTER(OC_MEM_BASE, 0);
-+ INIT_OC_MEM_HEAD(top, 0);
-+
-+ cp = MAKE_POINTER(top, sizeof(oc_mem_head) + top->size);
-+ INIT_OC_MEM_HEAD(cp, OC_MEM_SIZE
-+ - sizeof(oc_mem_head) - top->size
-+ - sizeof(oc_mem_head));
-+
-+ list_add(&cp->free_list, &top->free_list);
-+
-+#if 0
-+ // for test
-+ {
-+ char *a, *b, *c;
-+ a = oc_malloc(oc_mem_check(1), 0);
-+ oc_mem_check(1);
-+
-+ a = oc_malloc(256, 0);
-+ oc_mem_check(1);
-+ b = oc_malloc(256, 0);
-+ oc_mem_check(1);
-+ c = oc_malloc(256, 0);
-+ oc_mem_check(1);
-+ oc_mfree(b);
-+ oc_mem_check(1);
-+ b = oc_malloc(256, 0);
-+ oc_mem_check();
-+
-+ oc_mfree(a);
-+ oc_mem_check(1);
-+ oc_mfree(b);
-+ oc_mem_check(1);
-+ oc_mfree(c);
-+ oc_mem_check(1);
-+
-+ a = oc_malloc(256, 0);
-+ oc_mem_check(1);
-+ b = oc_malloc(256, 0);
-+ oc_mem_check(1);
-+ c = oc_malloc(256, 0);
-+ oc_mem_check(1);
-+ oc_mfree(a);
-+ oc_mem_check(1);
-+ oc_mfree(c);
-+ oc_mem_check(1);
-+ oc_mfree(b);
-+ oc_mem_check(1);
-+ }
-+#endif
-+}
-+
-+static void oc_mem_list_add(oc_mem_head *cp)
-+{
-+ oc_mem_head *top = (oc_mem_head *)OC_MEM_BASE;
-+ struct list_head *n;
-+
-+ /* address order */
-+ list_for_each(n, &top->free_list) {
-+ if ((u32)n > (u32)cp) {
-+ list_add_tail(&cp->free_list, n);
-+ return;
-+ }
-+ }
-+ list_add_tail(&cp->free_list, &top->free_list);
-+}
-+
-+static void* oc_malloc(size_t size, int gfp)
-+{
-+ oc_mem_head *top = (oc_mem_head *)OC_MEM_BASE;
-+ oc_mem_head *cp = NULL;
-+ struct list_head *n;
-+
-+ if (!top)
-+ panic("oc_malloc: not set OC_MEM_BASE.");
-+
-+ if (size == 0)
-+ return (void*)0;
-+
-+#if defined(MALLOCK_BOUNDART_32BYTE)
-+ size = ((size + 32 - 1) / 32) * 32; // for 32byte boundary
-+#elif defined(MALLOCK_BOUNDART_16BYTE)
-+ size = ((size + 16 - 1) / 16) * 16; // for 16byte boundary
-+#else
-+ size = ((size + sizeof(u32) - 1) / sizeof(u32)) * sizeof(u32);
-+#endif
-+
-+ list_for_each(n, &top->free_list) {
-+ if (((oc_mem_head *)n)->size >= size) {
-+ cp = (oc_mem_head *)n;
-+ break;
-+ }
-+ }
-+ if (!cp) {
-+ return (void*)0;
-+ }
-+
-+ if (cp->size > size + sizeof(oc_mem_head)) {
-+ oc_mem_head *fp;
-+ size_t alloc = size + sizeof(oc_mem_head);
-+ size_t new_size = cp->size - alloc;
-+
-+ list_del(&cp->free_list);
-+ INIT_OC_MEM_HEAD(cp, size);
-+
-+ fp = MAKE_POINTER(cp, alloc);
-+ INIT_OC_MEM_HEAD(fp, new_size);
-+ oc_mem_list_add(fp);
-+ dbg("separate %08x-%04x %08x-%04x\n", (u32)cp, cp->size, (u32)fp, fp->size);
-+ } else if (cp->free_list.next == cp->free_list.prev
-+ && cp->free_list.next == &top->free_list) {
-+ dbg("mallock error %08x-%04x\n", (u32)cp, cp->size);
-+ return (void*)0;
-+ } else {
-+ dbg("alloc this %08x-%04x\n", (u32)cp, cp->size);
-+ list_del_init(&cp->free_list);
-+ }
-+
-+ return (void *)(cp + 1);
-+}
-+
-+static void oc_mfree(void* fp)
-+{
-+ oc_mem_head *top = (oc_mem_head *)OC_MEM_BASE;
-+ oc_mem_head *cp = (oc_mem_head *)fp - 1;
-+ struct list_head *n;
-+
-+ if (fp == (void*)0)
-+ return;
-+ if (!IS_ALLOCATED_MEMORY(cp)) {
-+ dbg("%08x is not allocated memory. n=%08x p=%08x s=%04x\n",
-+ (u32)fp, (u32)cp->free_list.next, (u32)cp->free_list.prev, cp->size);
-+ return;
-+ }
-+
-+ list_for_each(n, &top->free_list) {
-+ /* cp is just previous of this free block */
-+ if (MAKE_POINTER(cp, cp->size + sizeof(oc_mem_head))
-+ == (oc_mem_head *)n) {
-+ oc_mem_head *pp = (oc_mem_head *)n->prev;
-+ dbg("P %08x-%04x merged to %08x-%04x\n", (u32)n, ((oc_mem_head *)n)->size, (u32)cp, cp->size);
-+ list_del(n);
-+ INIT_OC_MEM_HEAD(cp, cp->size
-+ + ((oc_mem_head *)n)->size
-+ + sizeof(oc_mem_head));
-+ /* cp merge to previous free block */
-+ if (cp == MAKE_POINTER(pp,
-+ pp->size + sizeof(oc_mem_head)) && pp != top) {
-+ dbg("P %08x-%04x merged to %08x-%04x\n", (u32)cp, cp->size, (u32)pp, pp->size);
-+ list_del(&pp->free_list);
-+ INIT_OC_MEM_HEAD(pp, pp->size
-+ + cp->size + sizeof(oc_mem_head));
-+ cp = pp;
-+ }
-+ break;
-+ }
-+ /* cp is just next of this free block */
-+ if (cp == MAKE_POINTER(n, ((oc_mem_head *)n)->size
-+ + sizeof(oc_mem_head))) {
-+ oc_mem_head *np = (oc_mem_head *)n->next;
-+ dbg("N %08x-%04x merged to %08x-%04x\n", (u32)cp, cp->size, (u32)n, ((oc_mem_head *)n)->size);
-+ list_del(n);
-+ INIT_OC_MEM_HEAD((oc_mem_head *)n,
-+ ((oc_mem_head *)n)->size
-+ + cp->size + sizeof(oc_mem_head));
-+ cp = (oc_mem_head *)n;
-+ if (np == MAKE_POINTER(cp,
-+ cp->size + sizeof(oc_mem_head))) {
-+ dbg("N %08x-%04x merged to %08x-%04x\n", (u32)np, np->size, (u32)cp, cp->size);
-+ list_del(&np->free_list);
-+ INIT_OC_MEM_HEAD(cp, cp->size
-+ + np->size + sizeof(oc_mem_head));
-+ }
-+ break;
-+ }
-+ }
-+
-+ oc_mem_list_add(cp);
-+}
-+
-+
-+static size_t oc_mem_check(int verbose)
-+{
-+ oc_mem_head *top = (oc_mem_head *)OC_MEM_BASE;
-+ oc_mem_head *nhp = top;
-+ int bc = 0;
-+ int alloc_bc = 0;
-+ int free_bc = 0;
-+ size_t alloc_size = 0;
-+ size_t free_size = 0;
-+ size_t total = 0;
-+
-+ if (verbose) {
-+ printk("[No.] A HEAD PREV NEXT SIZE\n");
-+ printk("-----+-+--------+--------+--------+----\n");
-+ }
-+ while ((u32)nhp < OC_MEM_BASE + OC_MEM_SIZE) {
-+ char *mark;
-+ if (IS_ALLOCATED_MEMORY(nhp)) {
-+ mark = "*";
-+ alloc_bc++;
-+ alloc_size += nhp->size + sizeof(oc_mem_head);
-+ } else {
-+ mark = " ";
-+ free_bc++;
-+ free_size += nhp->size + sizeof(oc_mem_head);
-+ }
-+ total += nhp->size + sizeof(oc_mem_head);
-+ if (verbose) {
-+ printk("[%03d] %s %08x : %08x %08x %04x\n",
-+ bc++, mark, (u32)nhp,
-+ (u32)nhp->free_list.prev,
-+ (u32)nhp->free_list.next, nhp->size);
-+ }
-+ nhp = MAKE_POINTER(nhp, nhp->size+sizeof(oc_mem_head));
-+ }
-+ if (verbose) {
-+ printk("-----+-+--------+--------+--------+----\n");
-+ }
-+ printk("alloc=%08x(%d) free=%08x(%d) total=%08x\n",
-+ alloc_size, alloc_bc, free_size, free_bc, total);
-+
-+ return free_size;
-+}
-+
-+#undef kmalloc
-+#undef kfree
-+
-+void KFREE(void* p)
-+{
-+ dbg("KFREE %08x\n", p);
-+ spin_lock(&oc_mem_list_lock);
-+ oc_mfree((void*)p);
-+ spin_unlock(&oc_mem_list_lock);
-+}
-+
-+void* KMALLOC(size_t s, int v)
-+{
-+ void *p;
-+ spin_lock(&oc_mem_list_lock);
-+ p = oc_malloc(s, v);
-+ spin_unlock(&oc_mem_list_lock);
-+
-+//oc_mem_check(0);
-+ dbg("KMALLOC %08x - %04x\n", p , s);
-+ if (s != 0 && p == NULL) {
-+ oc_mem_check(1);
-+ panic("oc_malloc: no more memory on chip RAM (%dbyts)", s);
-+ }
-+ return p;
-+}
-+
-+void* oc_hcca_alloc(struct pci_dev *hwdev, size_t size, dma_addr_t *handle)
-+{
-+ void *p;
-+
-+ if (!size)
-+ return (void *)0;
-+
-+ if (!OC_MEM_HCCA_BASE)
-+ panic("oc_malloc: not set OC_MEM_BASE.");
-+ if (is_oc_hcca_allocated)
-+ panic("oc_hcca_alloc: HCCA memory was alrady allocated.");
-+ if (size > OC_MEM_HCCA_SIZE)
-+ panic("oc_hcca_alloc: no more memory on RAM0 (size=%d)", size);
-+
-+ p = (void *)OC_MEM_HCCA_BASE; /* 256byte boundary */
-+ //*handle = (dma_addr_t)OC_MEM_VAR_TO_OFFSET(p);
-+ return p;
-+}
-+
-+void oc_hcca_free(struct pci_dev *hwdev, size_t size, void *vaddr,
-+ dma_addr_t dma_handle)
-+{
-+ is_oc_hcca_allocated = 0;
-+}
-+
-diff -Nur linux_c860_org/drivers/usb/mem-onchip.h linux/drivers/usb/mem-onchip.h
---- linux_c860_org/drivers/usb/mem-onchip.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/usb/mem-onchip.h 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,144 @@
-+/*
-+ * linux/drivers/usb/mem-onchip.h
-+ *
-+ * Copyright (c) 2003 Lineo Solutions, Inc.
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ */
-+
-+#ifndef _MEM_ON_CHIP_H_
-+#define _MEM_ON_CHIP_H_ 1
-+
-+#include <linux/pci.h>
-+
-+#define OC_MEM_PCI_MAP_DEBUG
-+#define OC_MEM_PCI_MAP_USE_MEMCPY
-+
-+#define OC_MEM_VAR_TO_OFFSET(x) ((unsigned int)x - OC_MEM_TOP)
-+#define OC_MEM_OFFSET_TO_VAR(x) ((unsigned int)x + OC_MEM_TOP)
-+
-+#ifdef __LINUX_USB_H
-+#define pci_alloc_consistent(dev, size, dma_addr) \
-+ oc_hcca_alloc(dev, size, dma_addr)
-+#define pci_free_consistent(dev, size, var, dma_addr) \
-+ oc_hcca_free(dev, size, var, dma_addr)
-+#else
-+#define pci_alloc_consistent(dev, size, dma_addr) \
-+ PCI_ALLOC_CONSISTENT(dev, size, dma_addr)
-+#define pci_free_consistent(dev, size, var, dma_addr) \
-+ KFREE(var)
-+#endif
-+
-+#define pci_map_single(hwdev, ptr, size, direction) \
-+ PCI_MAP_SINGLE(hwdev, ptr, size, direction)
-+#define pci_unmap_single(hwdev, dma_addr, size, direction) \
-+ PCI_UNMAP_SINGLE(hwdev, dma_addr, size, direction)
-+
-+
-+extern u32 OC_MEM_TOP;
-+
-+void oc_mem_init(unsigned int top, size_t size);
-+void* KMALLOC(size_t s, int v);
-+void KFREE(void* p);
-+void* oc_hcca_alloc(struct pci_dev *hwdev, size_t size, dma_addr_t *handle);
-+void oc_hcca_free(struct pci_dev *hwdev,
-+ size_t size, void *vaddr, dma_addr_t dma_handle);
-+
-+
-+/*
-+ * replace PCI function
-+*/
-+static inline void* PCI_ALLOC_CONSISTENT(struct pci_dev *hwdev, size_t size, dma_addr_t *handle)
-+{
-+ void *p = KMALLOC(size, GFP_KERNEL | GFP_DMA);
-+ *handle = (dma_addr_t)OC_MEM_VAR_TO_OFFSET(p);
-+ return p;
-+}
-+
-+#ifdef OC_MEM_PCI_MAP_DEBUG
-+static inline char* PCI_DMA_FLAG_DESC(int direction)
-+{
-+ switch (direction) {
-+ case PCI_DMA_NONE: return "NONE";
-+ case PCI_DMA_FROMDEVICE: return "FROMDEVICE";
-+ case PCI_DMA_TODEVICE: return "TODEVICE";
-+ case PCI_DMA_BIDIRECTIONAL: return "BIDIRECTIONAL";
-+ }
-+ return "unknown";
-+}
-+#endif
-+
-+static inline dma_addr_t
-+PCI_MAP_SINGLE(struct pci_dev *hwdev, void *ptr, size_t size, int direction)
-+{
-+#ifndef OC_MEM_PCI_MAP_USE_MEMCPY
-+ return (dma_addr_t)OC_MEM_VAR_TO_OFFSET(ptr);
-+#else
-+ void *p;
-+ size_t l = ((size + 3) / 4) * 4 + 4;
-+
-+ switch (direction) {
-+ case PCI_DMA_NONE:
-+ BUG();
-+ break;
-+ case PCI_DMA_FROMDEVICE: /* invalidate only */
-+ p = KMALLOC(l, GFP_KERNEL | GFP_DMA);
-+ break;
-+ case PCI_DMA_TODEVICE: /* writeback only */
-+ case PCI_DMA_BIDIRECTIONAL: /* writeback and invalidate */
-+ p = KMALLOC(l, GFP_KERNEL | GFP_DMA);
-+ memcpy(p, ptr, size);
-+ break;
-+ }
-+
-+ *((volatile unsigned int *)((unsigned int)p + l - 4))
-+ = (unsigned int)ptr;
-+#ifdef OC_MEM_PCI_MAP_DEBUG
-+#if 0
-+ printk("PCI_MAP_SINGLE: %s %08x - %04x , %08x - %04x\n",
-+ PCI_DMA_FLAG_DESC(direction),
-+ ptr, size, OC_MEM_VAR_TO_OFFSET(p), l);
-+#endif
-+#endif
-+ return (dma_addr_t)OC_MEM_VAR_TO_OFFSET(p);
-+#endif
-+}
-+
-+static inline void
-+PCI_UNMAP_SINGLE(struct pci_dev *hwdev, dma_addr_t dma_addr, size_t size, int direction)
-+{
-+#ifndef OC_MEM_PCI_MAP_USE_MEMCPY
-+ /* nothing to do */
-+#else
-+ void *p, *ptr;
-+ size_t l = ((size + 3) / 4) * 4 + 4;
-+ p = (void *)OC_MEM_OFFSET_TO_VAR(dma_addr);
-+ ptr = (void *)*((volatile unsigned int *)((unsigned int)p + l - 4));
-+
-+ switch (direction) {
-+ case PCI_DMA_NONE:
-+ BUG();
-+ break;
-+ case PCI_DMA_FROMDEVICE: /* invalidate only */
-+ case PCI_DMA_BIDIRECTIONAL: /* writeback and invalidate */
-+ memcpy(ptr, p, size);
-+ KFREE(p);
-+ break;
-+ case PCI_DMA_TODEVICE: /* writeback only */
-+ KFREE(p);
-+ break;
-+ }
-+#ifdef OC_MEM_PCI_MAP_DEBUG
-+#if 0
-+ printk("PCI_UNMAP_SINGLE: %s %08x - %04x , %08x\n",
-+ PCI_DMA_FLAG_DESC(direction), ptr, size, dma_addr);
-+#endif
-+#endif
-+#endif
-+}
-+
-+
-+#endif /* _MEM_ON_CHIP_H_ */
-diff -Nur linux_c860_org/drivers/usb/pcipool.c linux/drivers/usb/pcipool.c
---- linux_c860_org/drivers/usb/pcipool.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/usb/pcipool.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,401 @@
-+/*
-+ * linux/arch/arm/mach-pxa/pcipool.c
-+ *
-+ * Copyright (c) 2003 Lineo Solutions, Inc.
-+ *
-+ * Based on linux/arch/arm/mach-sa1100/pcipool.c
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ */
-+/*
-+ NOTE:
-+
-+ this code was lifted straight out of drivers/pci/pci.c;
-+ when compiling for the Intel StrongARM SA-1110/SA-1111 the
-+ usb-ohci.c driver needs these routines even when the architecture
-+ has no pci bus...
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <linux/pci.h>
-+#include <linux/string.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/spinlock.h>
-+#include <linux/bitops.h>
-+
-+#include <asm/page.h>
-+
-+#if defined(CONFIG_USB_USE_INTERNAL_MEMORY)
-+#include "mem-onchip.h"
-+#endif
-+
-+
-+struct pci_pool *pci_pool_create (const char *name, struct pci_dev *dev,
-+ size_t size, size_t align, size_t allocation, int flags);
-+void pci_pool_destroy (struct pci_pool *pool);
-+
-+void *pci_pool_alloc (struct pci_pool *pool, int flags, dma_addr_t *handle);
-+void pci_pool_free (struct pci_pool *pool, void *vaddr, dma_addr_t addr);
-+
-+
-+/*
-+ * Pool allocator ... wraps the pci_alloc_consistent page allocator, so
-+ * small blocks are easily used by drivers for bus mastering controllers.
-+ * This should probably be sharing the guts of the slab allocator.
-+ */
-+
-+struct pci_pool { /* the pool */
-+ struct list_head page_list;
-+ spinlock_t lock;
-+ size_t blocks_per_page;
-+ size_t size;
-+ int flags;
-+ struct pci_dev *dev;
-+ size_t allocation;
-+ char name [32];
-+ wait_queue_head_t waitq;
-+};
-+
-+struct pci_page { /* cacheable header for 'allocation' bytes */
-+ struct list_head page_list;
-+ void *vaddr;
-+ dma_addr_t dma;
-+ unsigned long bitmap [0];
-+};
-+
-+#define POOL_TIMEOUT_JIFFIES ((100 /* msec */ * HZ) / 1000)
-+#define POOL_POISON_BYTE 0xa7
-+
-+// #define CONFIG_PCIPOOL_DEBUG
-+
-+
-+/**
-+ * pci_pool_create - Creates a pool of pci consistent memory blocks, for dma.
-+ * @name: name of pool, for diagnostics
-+ * @pdev: pci device that will be doing the DMA
-+ * @size: size of the blocks in this pool.
-+ * @align: alignment requirement for blocks; must be a power of two
-+ * @allocation: returned blocks won't cross this boundary (or zero)
-+ * @flags: SLAB_* flags (not all are supported).
-+ *
-+ * Returns a pci allocation pool with the requested characteristics, or
-+ * null if one can't be created. Given one of these pools, pci_pool_alloc()
-+ * may be used to allocate memory. Such memory will all have "consistent"
-+ * DMA mappings, accessible by the device and its driver without using
-+ * cache flushing primitives. The actual size of blocks allocated may be
-+ * larger than requested because of alignment.
-+ *
-+ * If allocation is nonzero, objects returned from pci_pool_alloc() won't
-+ * cross that size boundary. This is useful for devices which have
-+ * addressing restrictions on individual DMA transfers, such as not crossing
-+ * boundaries of 4KBytes.
-+ */
-+struct pci_pool *
-+pci_pool_create (const char *name, struct pci_dev *pdev,
-+ size_t size, size_t align, size_t allocation, int flags)
-+{
-+ struct pci_pool *retval;
-+
-+ if (align == 0)
-+ align = 1;
-+ if (size == 0)
-+ return 0;
-+ else if (size < align)
-+ size = align;
-+ else if ((size % align) != 0) {
-+ size += align + 1;
-+ size &= ~(align - 1);
-+ }
-+
-+ if (allocation == 0) {
-+ if (PAGE_SIZE < size)
-+ allocation = size;
-+ else
-+ allocation = PAGE_SIZE;
-+ // FIXME: round up for less fragmentation
-+ } else if (allocation < size)
-+ return 0;
-+
-+ if (!(retval = kmalloc (sizeof *retval, flags)))
-+ return retval;
-+
-+#ifdef CONFIG_PCIPOOL_DEBUG
-+ flags |= SLAB_POISON;
-+#endif
-+
-+ strncpy (retval->name, name, sizeof retval->name);
-+ retval->name [sizeof retval->name - 1] = 0;
-+
-+ retval->dev = pdev;
-+ INIT_LIST_HEAD (&retval->page_list);
-+ spin_lock_init (&retval->lock);
-+ retval->size = size;
-+ retval->flags = flags;
-+ retval->allocation = allocation;
-+ retval->blocks_per_page = allocation / size;
-+ init_waitqueue_head (&retval->waitq);
-+
-+#ifdef CONFIG_PCIPOOL_DEBUG
-+ printk (KERN_DEBUG "pcipool create %s/%s size %d, %d/page (%d alloc)\n",
-+ pdev ? pdev->slot_name : NULL, retval->name, size,
-+ retval->blocks_per_page, allocation);
-+#endif
-+
-+ return retval;
-+}
-+
-+
-+static struct pci_page *
-+pool_alloc_page (struct pci_pool *pool, int mem_flags)
-+{
-+ struct pci_page *page;
-+ int mapsize;
-+
-+ mapsize = pool->blocks_per_page;
-+ mapsize = (mapsize + BITS_PER_LONG - 1) / BITS_PER_LONG;
-+ mapsize *= sizeof (long);
-+
-+ page = (struct pci_page *) kmalloc (mapsize + sizeof *page, mem_flags);
-+ if (!page)
-+ return 0;
-+ page->vaddr = pci_alloc_consistent (pool->dev,
-+ pool->allocation, &page->dma);
-+ if (page->vaddr) {
-+ memset (page->bitmap, 0xff, mapsize); // bit set == free
-+ if (pool->flags & SLAB_POISON)
-+ memset (page->vaddr, POOL_POISON_BYTE, pool->allocation);
-+ list_add (&page->page_list, &pool->page_list);
-+ } else {
-+ kfree (page);
-+ page = 0;
-+ }
-+ return page;
-+}
-+
-+
-+static inline int
-+is_page_busy (int blocks, unsigned long *bitmap)
-+{
-+ while (blocks > 0) {
-+ if (*bitmap++ != ~0UL)
-+ return 1;
-+ blocks -= BITS_PER_LONG;
-+ }
-+ return 0;
-+}
-+
-+static void
-+pool_free_page (struct pci_pool *pool, struct pci_page *page)
-+{
-+ dma_addr_t dma = page->dma;
-+
-+ if (pool->flags & SLAB_POISON)
-+ memset (page->vaddr, POOL_POISON_BYTE, pool->allocation);
-+ pci_free_consistent (pool->dev, pool->allocation, page->vaddr, dma);
-+ list_del (&page->page_list);
-+ kfree (page);
-+}
-+
-+
-+/**
-+ * pci_pool_destroy - destroys a pool of pci memory blocks.
-+ * @pool: pci pool that will be destroyed
-+ *
-+ * Caller guarantees that no more memory from the pool is in use,
-+ * and that nothing will try to use the pool after this call.
-+ */
-+void
-+pci_pool_destroy (struct pci_pool *pool)
-+{
-+ unsigned long flags;
-+
-+#ifdef CONFIG_PCIPOOL_DEBUG
-+ printk (KERN_DEBUG "pcipool destroy %s/%s\n",
-+ pool->dev ? pool->dev->slot_name : NULL,
-+ pool->name);
-+#endif
-+
-+ spin_lock_irqsave (&pool->lock, flags);
-+ while (!list_empty (&pool->page_list)) {
-+ struct pci_page *page;
-+ page = list_entry (pool->page_list.next,
-+ struct pci_page, page_list);
-+ if (is_page_busy (pool->blocks_per_page, page->bitmap)) {
-+ printk (KERN_ERR "pci_pool_destroy %s/%s, %p busy\n",
-+ pool->dev ? pool->dev->slot_name : NULL,
-+ pool->name, page->vaddr);
-+ /* leak the still-in-use consistent memory */
-+ list_del (&page->page_list);
-+ kfree (page);
-+ } else
-+ pool_free_page (pool, page);
-+ }
-+ spin_unlock_irqrestore (&pool->lock, flags);
-+ kfree (pool);
-+}
-+
-+
-+/**
-+ * pci_pool_alloc - get a block of consistent memory
-+ * @pool: pci pool that will produce the block
-+ * @mem_flags: SLAB_KERNEL or SLAB_ATOMIC
-+ * @handle: pointer to dma address of block
-+ *
-+ * This returns the kernel virtual address of a currently unused block,
-+ * and reports its dma address through the handle.
-+ * If such a memory block can't be allocated, null is returned.
-+ */
-+void *
-+pci_pool_alloc (struct pci_pool *pool, int mem_flags, dma_addr_t *handle)
-+{
-+ unsigned long flags;
-+ struct list_head *entry;
-+ struct pci_page *page;
-+ int map, block;
-+ size_t offset;
-+ void *retval;
-+
-+restart:
-+ spin_lock_irqsave (&pool->lock, flags);
-+ list_for_each (entry, &pool->page_list) {
-+ int i;
-+ page = list_entry (entry, struct pci_page, page_list);
-+ /* only cachable accesses here ... */
-+ for (map = 0, i = 0;
-+ i < pool->blocks_per_page;
-+ i += BITS_PER_LONG, map++) {
-+ if (page->bitmap [map] == 0)
-+ continue;
-+ block = ffz (~ page->bitmap [map]);
-+ if ((i + block) < pool->blocks_per_page) {
-+ clear_bit (block, &page->bitmap [map]);
-+ offset = (BITS_PER_LONG * map) + block;
-+ offset *= pool->size;
-+ goto ready;
-+ }
-+ }
-+ }
-+ if (!(page = pool_alloc_page (pool, mem_flags))) {
-+ if (mem_flags == SLAB_KERNEL) {
-+ DECLARE_WAITQUEUE (wait, current);
-+
-+ current->state = TASK_INTERRUPTIBLE;
-+ add_wait_queue (&pool->waitq, &wait);
-+ spin_unlock_irqrestore (&pool->lock, flags);
-+
-+ schedule_timeout (POOL_TIMEOUT_JIFFIES);
-+
-+ current->state = TASK_RUNNING;
-+ remove_wait_queue (&pool->waitq, &wait);
-+ goto restart;
-+ }
-+ retval = 0;
-+ goto done;
-+ }
-+
-+ clear_bit (0, &page->bitmap [0]);
-+ offset = 0;
-+ready:
-+ retval = offset + page->vaddr;
-+ *handle = offset + page->dma;
-+done:
-+ spin_unlock_irqrestore (&pool->lock, flags);
-+ return retval;
-+}
-+
-+
-+static struct pci_page *
-+pool_find_page (struct pci_pool *pool, dma_addr_t dma)
-+{
-+ unsigned long flags;
-+ struct list_head *entry;
-+ struct pci_page *page;
-+
-+ spin_lock_irqsave (&pool->lock, flags);
-+ list_for_each (entry, &pool->page_list) {
-+ page = list_entry (entry, struct pci_page, page_list);
-+ if (dma < page->dma)
-+ continue;
-+ if (dma < (page->dma + pool->allocation))
-+ goto done;
-+ }
-+ page = 0;
-+done:
-+ spin_unlock_irqrestore (&pool->lock, flags);
-+ return page;
-+}
-+
-+
-+/**
-+ * pci_pool_free - put block back into pci pool
-+ * @pool: the pci pool holding the block
-+ * @vaddr: virtual address of block
-+ * @dma: dma address of block
-+ *
-+ * Caller promises neither device nor driver will again touch this block
-+ * unless it is first re-allocated.
-+ */
-+void
-+pci_pool_free (struct pci_pool *pool, void *vaddr, dma_addr_t dma)
-+{
-+ struct pci_page *page;
-+ unsigned long flags;
-+ int map, block;
-+
-+ if ((page = pool_find_page (pool, dma)) == 0) {
-+ printk (KERN_ERR "pci_pool_free %s/%s, %p/%x (bad dma)\n",
-+ pool->dev ? pool->dev->slot_name : NULL,
-+ pool->name, vaddr, dma);
-+ return;
-+ }
-+#ifdef CONFIG_PCIPOOL_DEBUG
-+ if (((dma - page->dma) + (void *)page->vaddr) != vaddr) {
-+ printk (KERN_ERR "pci_pool_free %s/%s, %p (bad vaddr)/%x\n",
-+ pool->dev ? pool->dev->slot_name : NULL,
-+ pool->name, vaddr, dma);
-+ return;
-+ }
-+#endif
-+
-+ block = dma - page->dma;
-+ block /= pool->size;
-+ map = block / BITS_PER_LONG;
-+ block %= BITS_PER_LONG;
-+
-+#ifdef CONFIG_PCIPOOL_DEBUG
-+ if (page->bitmap [map] & (1UL << block)) {
-+ printk (KERN_ERR "pci_pool_free %s/%s, dma %x already free\n",
-+ pool->dev ? pool->dev->slot_name : NULL,
-+ pool->name, dma);
-+ return;
-+ }
-+#endif
-+ if (pool->flags & SLAB_POISON)
-+ memset (vaddr, POOL_POISON_BYTE, pool->size);
-+
-+ spin_lock_irqsave (&pool->lock, flags);
-+ set_bit (block, &page->bitmap [map]);
-+ if (waitqueue_active (&pool->waitq))
-+ wake_up (&pool->waitq);
-+ /*
-+ * Resist a temptation to do
-+ * if (!is_page_busy(bpp, page->bitmap)) pool_free_page(pool, page);
-+ * it is not interrupt safe. Better have empty pages hang around.
-+ */
-+ spin_unlock_irqrestore (&pool->lock, flags);
-+}
-+
-+
-+/*
-+EXPORT_SYMBOL (pci_pool_create);
-+EXPORT_SYMBOL (pci_pool_destroy);
-+EXPORT_SYMBOL (pci_pool_alloc);
-+EXPORT_SYMBOL (pci_pool_free);
-+*/
-+
-diff -Nur linux_c860_org/drivers/usb/usb-ohci-tc6393.c linux/drivers/usb/usb-ohci-tc6393.c
---- linux_c860_org/drivers/usb/usb-ohci-tc6393.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/usb/usb-ohci-tc6393.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,516 @@
-+/*
-+ * linux/drivers/usb/usb-ohci-tc6393.c
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * Based on:
-+ *
-+ * linux/drivers/usb/usb-ohci-pci.c
-+ *
-+ * and
-+ *
-+ * linux/drivers/usb/usb-ohci-sa1111.c
-+ *
-+ * The outline of this code was taken from Brad Parkers <brad@heeltoe.com>
-+ * original OHCI driver modifications, and reworked into a cleaner form
-+ * by Russell King <rmk@arm.linux.org.uk>.
-+ */
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/ioport.h>
-+#include <linux/interrupt.h>
-+#include <linux/slab.h>
-+#include <linux/usb.h>
-+#include <linux/pm.h>
-+#include <linux/delay.h>
-+#include <linux/ioctl.h>
-+#include <linux/miscdevice.h>
-+#include <asm/uaccess.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/irq.h>
-+#include <asm/io.h>
-+#include <asm/sharp_tc6393_usb.h>
-+
-+#include "usb-ohci.h"
-+
-+#define TC6393_OHCI_CTL_MINOR_DEV 222
-+
-+static int tc6393_usb_internal_port_enable = 0; // default is disable
-+static int tc6393_usb_external_port_enable = 1; // default is enable
-+
-+//#define THREAD_RESUME
-+#ifdef THREAD_RESUME
-+static int resume_thread_alive = 0;
-+static int tc6393_ohci_pm_resume(void);
-+#endif
-+
-+int __devinit
-+hc_add_ohci(struct pci_dev *dev, int irq, void *membase, unsigned long flags,
-+ ohci_t **ohci, const char *name, const char *slot_name);
-+extern void hc_remove_ohci(ohci_t *ohci);
-+
-+static ohci_t *tc6393_ohci;
-+
-+#ifdef CONFIG_PM
-+static int tc6393_ohci_pm_callback(
-+ struct pm_dev *pm_device, pm_request_t rqst, void *data);
-+#endif
-+
-+
-+static int do_ioctl(struct inode * inode,
-+ struct file *filp, u_int cmd, u_long arg)
-+{
-+ long val,res;
-+
-+#ifdef THREAD_RESUME
-+ while(resume_thread_alive) udelay(100);
-+#endif
-+ switch (cmd) {
-+ case TC6393_OHCI_IOC_PDOWN: /* Power Down */
-+ //printk("TC6393_OHCI_IOC_PDOWN: %d\n",arg);
-+ if (arg == 0) {
-+ TC6393_USB_REG(TC6393_USB_SVPMCS)
-+ |= TC6393_USB_PM_USPW1;
-+ tc6393_usb_external_port_enable = 0;
-+ } else if (arg == 1) {
-+ TC6393_USB_REG(TC6393_USB_SVPMCS)
-+ |= TC6393_USB_PM_USPW2;
-+ tc6393_usb_internal_port_enable = 0;
-+ } else
-+ return -EINVAL;
-+ return 0;
-+ case TC6393_OHCI_IOC_PON: /* Power On */
-+ //printk("TC6393_OHCI_IOC_PON: %d\n",arg);
-+ if (arg == 0) {
-+ TC6393_USB_REG(TC6393_USB_SVPMCS)
-+ &= ~TC6393_USB_PM_USPW1;
-+ tc6393_usb_external_port_enable = 1;
-+ } else if (arg == 1) {
-+ TC6393_USB_REG(TC6393_USB_SVPMCS)
-+ &= ~TC6393_USB_PM_USPW2;
-+ tc6393_usb_internal_port_enable = 1;
-+ } else
-+ return -EINVAL;
-+ return 0;
-+ case TC6393_OHCI_IOC_PCHECK: /* Check Power */
-+ if ( get_user(val, (long *) arg) )
-+ return -EFAULT;
-+ if (val == 0) {
-+ res = (TC6393_USB_REG(TC6393_USB_SVPMCS)&TC6393_USB_PM_USPW1)?0:1;
-+ } else if (val == 1) {
-+ res = (TC6393_USB_REG(TC6393_USB_SVPMCS)&TC6393_USB_PM_USPW2)?0:1;
-+ } else return -EINVAL;
-+ return put_user(res, (int *)arg);
-+ default:
-+ break;
-+ }
-+ return -EOPNOTSUPP;
-+}
-+
-+static struct file_operations tc6393_ohci_fops = {
-+ owner: THIS_MODULE,
-+ ioctl: do_ioctl
-+};
-+
-+static struct miscdevice tc6393_ohci_ctl_device = {
-+ TC6393_OHCI_CTL_MINOR_DEV,
-+ "tc6393_ohci_ctl",
-+ &tc6393_ohci_fops
-+};
-+
-+
-+static void tc6393_ohci_configure(void)
-+{
-+ u16 portval;
-+#if 0
-+printk("TC6393_SYS_PLL2CR: %04x\n", TC6393_SYS_REG(TC6393_SYS_PLL2CR));
-+TC6393_SYS_REG(TC6393_SYS_PLL2CR) = 0x0cc1;
-+#endif
-+
-+ TC6393_SYS_REG(TC6393_SYS_CCR) |= 2; /* clock enable */
-+ TC6393_SYS_REG(TC6393_SYS_FER) |= 1; /* USB enable */
-+
-+ //TC6393_USB_REG(TC6393_USB_SPPCNF) |= 1;
-+ TC6393_USB_REG(TC6393_USB_SPBA1)
-+ = TC6393_USB_OHCI_OP_REG_BASE & 0xffff; /* LW */
-+ TC6393_USB_REG(TC6393_USB_SPBA2)
-+ = TC6393_USB_OHCI_OP_REG_BASE >> 16; /* HW */
-+ TC6393_USB_REG(TC6393_USB_ILME) = 1;
-+
-+ portval = TC6393_USB_PM_PMES | TC6393_USB_PM_PMEE | TC6393_USB_PM_CKRNEN | TC6393_USB_PM_GCKEN;
-+ if (!tc6393_usb_external_port_enable) portval |= TC6393_USB_PM_USPW1;
-+ if (!tc6393_usb_internal_port_enable) portval |= TC6393_USB_PM_USPW2;
-+ TC6393_USB_REG(TC6393_USB_SVPMCS) = portval;
-+
-+ TC6393_USB_REG(TC6393_USB_INTC) = 2;
-+
-+#if 0
-+printk("TC6393_SYS_ConfigCR: %04x\n", TC6393_SYS_REG(TC6393_SYS_ConfigCR));
-+printk("TC6393_SYS_CCR: %04x\n", TC6393_SYS_REG(TC6393_SYS_CCR));
-+printk("TC6393_SYS_PLL2CR: %04x\n", TC6393_SYS_REG(TC6393_SYS_PLL2CR));
-+printk("TC6393_SYS_PLL1CR: %08x\n", (*(int *)(TC6393_SYS_BASE+TC6393_SYS_PLL1CR1)));
-+printk("TC6393_SYS_MCR: %04x\n", TC6393_SYS_REG(TC6393_SYS_MCR));
-+printk("TC6393_SYS_FER: %04x\n", TC6393_SYS_REG(TC6393_SYS_FER));
-+printk("TC6393_USB_Rev: %d\n", TC6393_USB_REG(TC6393_USB_SPRID));
-+printk("TC6393_USB_SPBA: %08x\n", (*(int *)(TC6393_USB_BASE+TC6393_USB_SPBA1)));
-+printk("TC6393_USB_ILME: %04x\n", TC6393_USB_REG(TC6393_USB_ILME));
-+printk("TC6393_USB_SVPMCS: %04x\n", TC6393_USB_REG(TC6393_USB_SVPMCS));
-+printk("TC6393_USB_INTC: %04x\n", TC6393_USB_REG(TC6393_USB_INTC));
-+printk("OHCI Rev: %08x\n", (*(int *)(TC6393_SYS_BASE+TC6393_USB_OHCI_OP_REG_BASE)));
-+#endif
-+#if 0
-+ {
-+ unsigned int top = TC6393_RAM0_BASE + 0x100;
-+ volatile unsigned int *ip = (volatile unsigned int *)(top);
-+ volatile unsigned short *sp = (volatile unsigned short *)(top+4);
-+ volatile unsigned char *cp = (volatile unsigned char *)(top+8);
-+ *ip = 0x12345678;
-+ printk("int %08x\n", *ip);
-+ sp[0] = 0x9876;
-+ sp[1] = 0x5432;
-+ printk("short %04x %04x\n", sp[0], sp[1]);
-+ cp[0] = 0x12;
-+ cp[1] = 0x23;
-+ cp[2] = 0x34;
-+ cp[3] = 0x45;
-+ printk("byte: %02x %02x %02x %02x\n", cp[0], cp[1], cp[2], cp[3]);
-+ }
-+#endif
-+}
-+
-+static int __init tc6393_ohci_init(void)
-+{
-+ int ret;
-+
-+ /*
-+ * Request memory resources.
-+ */
-+// if (!request_mem_region(_USB_OHCI_OP_BASE, _USB_EXTENT, "usb-ohci"))
-+// return -EBUSY;
-+
-+ tc6393_ohci_configure();
-+ oc_mem_init(TC6393_RAM0_BASE, TC6393_RAM0_SIZE);
-+
-+ /*
-+ * Initialise the generic OHCI driver.
-+ */
-+ ret = hc_add_ohci((struct pci_dev *)1, TC6393_IRQ_USBINT,
-+ (void *)(TC6393_SYS_BASE+TC6393_USB_OHCI_OP_REG_BASE),
-+ 0, &tc6393_ohci, "usb-ohci", "tc6393");
-+
-+#ifdef CONFIG_PM
-+ pm_register(PM_SYS_DEV, PM_SYS_UNKNOWN, tc6393_ohci_pm_callback);
-+#endif
-+
-+ if (misc_register(&tc6393_ohci_ctl_device))
-+ printk("failed to register tc6393_ohci_ctl_device\n");
-+
-+// if (ret)
-+// release_mem_region(_USB_OHCI_OP_BASE, _USB_EXTENT);
-+
-+ return ret;
-+}
-+
-+static void __exit tc6393_ohci_exit(void)
-+{
-+ misc_deregister(&tc6393_ohci_ctl_device);
-+
-+#ifdef CONFIG_PM
-+ pm_unregister_all(tc6393_ohci_pm_callback);
-+#endif
-+ hc_remove_ohci(tc6393_ohci);
-+
-+ /*
-+ * Put the USB host controller into reset.
-+ */
-+ TC6393_SYS_REG(TC6393_SYS_FER) &= ~1;
-+
-+ /*
-+ * Stop the USB clock.
-+ */
-+ TC6393_SYS_REG(TC6393_SYS_CCR) &= ~2;
-+
-+ /*
-+ * Release memory resources.
-+ */
-+// release_mem_region(_USB_OHCI_OP_BASE, _USB_EXTENT);
-+
-+}
-+
-+module_init(tc6393_ohci_init);
-+module_exit(tc6393_ohci_exit);
-+
-+
-+#ifdef CONFIG_PM
-+static void* tc6393_sram0_backup;
-+static dma_addr_t tc6393_sram0_backup_phys;
-+
-+/* usb-ohci.c */
-+#define OHCI_CONTROL_INIT \
-+ (OHCI_CTRL_CBSR & 0x3) | OHCI_CTRL_IE | OHCI_CTRL_PLE
-+extern spinlock_t usb_ed_lock;
-+
-+extern td_t * dl_reverse_done_list (ohci_t * ohci);
-+extern void dl_done_list (ohci_t * ohci, td_t * td_list);
-+extern int hc_start (ohci_t * ohci);
-+extern int hc_reset (ohci_t * ohci);
-+
-+
-+/* controller died; cleanup debris, then restart */
-+/* must not be called from interrupt context */
-+
-+static void hc_restart (ohci_t *ohci)
-+{
-+ int temp;
-+ int i;
-+
-+ ohci->disabled = 1;
-+ ohci->sleeping = 0;
-+ if (ohci->bus->root_hub)
-+ usb_disconnect (&ohci->bus->root_hub);
-+
-+ /* empty the interrupt branches */
-+ for (i = 0; i < NUM_INTS; i++) ohci->ohci_int_load[i] = 0;
-+ for (i = 0; i < NUM_INTS; i++) ohci->hcca->int_table[i] = 0;
-+
-+ /* no EDs to remove */
-+ ohci->ed_rm_list [0] = NULL;
-+ ohci->ed_rm_list [1] = NULL;
-+
-+ /* empty control and bulk lists */
-+ ohci->ed_isotail = NULL;
-+ ohci->ed_controltail = NULL;
-+ ohci->ed_bulktail = NULL;
-+
-+ if ((temp = hc_reset (ohci)) < 0 || (temp = hc_start (ohci)) < 0) {
-+ err ("can't restart usb-%s, %d", ohci->ohci_dev->slot_name, temp);
-+ } else
-+ dbg ("restart usb-%s completed", ohci->ohci_dev->slot_name);
-+}
-+
-+static unsigned int tc6393_usb_pm_uspw = 0;
-+
-+static int tc6393_ohci_pm_suspend(u32 state)
-+{
-+ ohci_t *ohci = tc6393_ohci;
-+ unsigned long flags;
-+
-+ /* bus suspend */
-+ if ((ohci->hc_control & OHCI_CTRL_HCFS) != OHCI_USB_OPER) {
-+ dbg ("can't suspend usb-%s (state is %s)", ohci->slot_name,
-+ hcfs2string (ohci->hc_control & OHCI_CTRL_HCFS));
-+ return -EIO;
-+ }
-+
-+ /* act as if usb suspend can always be used */
-+ info ("USB suspend: usb-%s", ohci->slot_name);
-+ ohci->sleeping = 1;
-+
-+ /* First stop processing */
-+ spin_lock_irqsave (&usb_ed_lock, flags);
-+ ohci->hc_control &= ~(OHCI_CTRL_PLE|OHCI_CTRL_CLE|OHCI_CTRL_BLE|OHCI_CTRL_IE);
-+ writel (ohci->hc_control, &ohci->regs->control);
-+ writel (OHCI_INTR_SF, &ohci->regs->intrstatus);
-+ (void) readl (&ohci->regs->intrstatus);
-+ spin_unlock_irqrestore (&usb_ed_lock, flags);
-+
-+ /* Wait a frame or two */
-+ mdelay(1);
-+ if (!readl (&ohci->regs->intrstatus) & OHCI_INTR_SF)
-+ mdelay (1);
-+
-+ /* Enable remote wakeup */
-+ writel (readl(&ohci->regs->intrenable) | OHCI_INTR_RD, &ohci->regs->intrenable);
-+
-+ /* Suspend chip and let things settle down a bit */
-+ ohci->hc_control = OHCI_USB_SUSPEND;
-+ writel (ohci->hc_control, &ohci->regs->control);
-+#if 0
-+ (void) readl (&ohci->regs->control);
-+ mdelay (500); /* No schedule here ! */
-+ switch (readl (&ohci->regs->control) & OHCI_CTRL_HCFS) {
-+ case OHCI_USB_RESET:
-+ dbg("Bus in reset phase ???");
-+ break;
-+ case OHCI_USB_RESUME:
-+ dbg("Bus in resume phase ???");
-+ break;
-+ case OHCI_USB_OPER:
-+ dbg("Bus in operational phase ???");
-+ break;
-+ case OHCI_USB_SUSPEND:
-+ dbg("Bus suspended");
-+ break;
-+ }
-+ tc6393_usb_pm_uspw = TC6393_USB_REG(TC6393_USB_SVPMCS);
-+#else
-+ /* Power Down */
-+ tc6393_usb_pm_uspw = TC6393_USB_REG(TC6393_USB_SVPMCS);
-+ TC6393_USB_REG(TC6393_USB_SVPMCS) |= TC6393_USB_PM_USPW1;
-+ TC6393_USB_REG(TC6393_USB_SVPMCS) |= TC6393_USB_PM_USPW2;
-+#endif
-+
-+ /* store SRAM */
-+ tc6393_sram0_backup = consistent_alloc(GFP_KERNEL | GFP_DMA,
-+ TC6393_RAM0_SIZE, &tc6393_sram0_backup_phys);
-+ memcpy(tc6393_sram0_backup , TC6393_RAM0_BASE, TC6393_RAM0_SIZE);
-+//memset(TC6393_RAM0_BASE, 0xff, TC6393_RAM0_SIZE);
-+ /* device suspend */
-+ TC6393_SYS_REG(TC6393_SYS_FER) &= ~1;
-+ TC6393_SYS_REG(TC6393_SYS_CCR) &= ~2;
-+
-+ return 0;
-+}
-+
-+static int tc6393_ohci_pm_resume(void)
-+{
-+ ohci_t *ohci = tc6393_ohci;
-+ int temp;
-+ unsigned long flags;
-+ int ret = 0;
-+
-+#ifdef THREAD_RESUME
-+ resume_thread_alive = 1;
-+#endif
-+
-+ /* device resume */
-+ tc6393_ohci_configure();
-+
-+ /* restore SRAM */
-+ memcpy(TC6393_RAM0_BASE, tc6393_sram0_backup, TC6393_RAM0_SIZE);
-+ consistent_free(tc6393_sram0_backup,
-+ TC6393_RAM0_SIZE, tc6393_sram0_backup_phys);
-+
-+ /* Power On */
-+ if ( !(tc6393_usb_pm_uspw & TC6393_USB_PM_USPW1) )
-+ TC6393_USB_REG(TC6393_USB_SVPMCS) &= ~TC6393_USB_PM_USPW1;
-+ if ( !(tc6393_usb_pm_uspw & TC6393_USB_PM_USPW2) )
-+ TC6393_USB_REG(TC6393_USB_SVPMCS) &= ~TC6393_USB_PM_USPW2;
-+
-+ /* bus resume */
-+ /* guard against multiple resumes */
-+ atomic_inc (&ohci->resume_count);
-+ if (atomic_read (&ohci->resume_count) != 1) {
-+ err ("concurrent resumes for usb-%s", ohci->slot_name);
-+ atomic_dec (&ohci->resume_count);
-+#ifdef THREAD_RESUME
-+ resume_thread_alive = 0;
-+#endif
-+ return 0;
-+ }
-+
-+ /* did we suspend, or were we powered off? */
-+ ohci->hc_control = readl (&ohci->regs->control);
-+ temp = ohci->hc_control & OHCI_CTRL_HCFS;
-+
-+#ifdef DEBUG
-+ /* the registers may look crazy here */
-+ ohci_dump_status (ohci);
-+#endif
-+
-+ switch (temp) {
-+
-+ case OHCI_USB_RESET: // lost power
-+ info ("USB restart: usb-%s", ohci->slot_name);
-+ hc_restart (ohci);
-+ break;
-+
-+ case OHCI_USB_SUSPEND: // host wakeup
-+ case OHCI_USB_RESUME: // remote wakeup
-+ info ("USB continue: usb-%s from %s wakeup", ohci->slot_name,
-+ (temp == OHCI_USB_SUSPEND)
-+ ? "host" : "remote");
-+ ohci->hc_control = OHCI_USB_RESUME;
-+ writel (ohci->hc_control, &ohci->regs->control);
-+ (void) readl (&ohci->regs->control);
-+ mdelay (20); /* no schedule here ! */
-+ /* Some controllers (lucent) need a longer delay here */
-+ mdelay (15);
-+ temp = readl (&ohci->regs->control);
-+ temp = ohci->hc_control & OHCI_CTRL_HCFS;
-+ if (temp != OHCI_USB_RESUME) {
-+ err ("controller usb-%s won't resume", ohci->slot_name);
-+ ohci->disabled = 1;
-+#ifdef THREAD_RESUME
-+ resume_thread_alive = 0;
-+#endif
-+ return -EIO;
-+ }
-+
-+ /* Some chips likes being resumed first */
-+ writel (OHCI_USB_OPER, &ohci->regs->control);
-+ (void) readl (&ohci->regs->control);
-+ mdelay (3);
-+
-+ /* Then re-enable operations */
-+ spin_lock_irqsave (&usb_ed_lock, flags);
-+ ohci->disabled = 0;
-+ ohci->sleeping = 0;
-+ ohci->hc_control = OHCI_CONTROL_INIT | OHCI_USB_OPER;
-+ if (!ohci->ed_rm_list[0] && !ohci->ed_rm_list[1]) {
-+ if (ohci->ed_controltail)
-+ ohci->hc_control |= OHCI_CTRL_CLE;
-+ if (ohci->ed_bulktail)
-+ ohci->hc_control |= OHCI_CTRL_BLE;
-+ }
-+ writel (ohci->hc_control, &ohci->regs->control);
-+ writel (OHCI_INTR_SF, &ohci->regs->intrstatus);
-+ writel (OHCI_INTR_SF, &ohci->regs->intrenable);
-+ /* Check for a pending done list */
-+ writel (OHCI_INTR_WDH, &ohci->regs->intrdisable);
-+ (void) readl (&ohci->regs->intrdisable);
-+ spin_unlock_irqrestore (&usb_ed_lock, flags);
-+ if (ohci->hcca->done_head)
-+ dl_done_list (ohci, dl_reverse_done_list (ohci));
-+ writel (OHCI_INTR_WDH, &ohci->regs->intrenable);
-+ writel (OHCI_BLF, &ohci->regs->cmdstatus); /* start bulk list */
-+ writel (OHCI_CLF, &ohci->regs->cmdstatus); /* start Control list */
-+ break;
-+
-+ default:
-+ warn ("odd resume for usb-%s", ohci->slot_name);
-+ }
-+
-+ /* controller is operational, extra resumes are harmless */
-+ atomic_dec (&ohci->resume_count);
-+
-+#ifdef THREAD_RESUME
-+ resume_thread_alive = 0;
-+#endif
-+ return ret;
-+}
-+
-+static int
-+tc6393_ohci_pm_callback(struct pm_dev *pm_device, pm_request_t rqst, void *data)
-+{
-+ int error = 0;
-+
-+ switch (rqst) {
-+ case PM_SAVE_STATE:
-+ break;
-+ case PM_SUSPEND:
-+#ifdef THREAD_RESUME
-+ while(resume_thread_alive) udelay(100);
-+#endif
-+ error = tc6393_ohci_pm_suspend((u32)data);
-+ break;
-+ case PM_RESUME:
-+#ifdef THREAD_RESUME
-+ kernel_thread(tc6393_ohci_pm_resume, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+ error = 0;
-+#else
-+ error = tc6393_ohci_pm_resume();
-+#endif
-+ break;
-+ default:
-+ break;
-+ }
-+ return error;
-+}
-+#endif
-diff -Nur linux_c860_org/drivers/usb/usb-ohci.c linux/drivers/usb/usb-ohci.c
---- linux_c860_org/drivers/usb/usb-ohci.c 2002-08-26 14:45:02.000000000 +0900
-+++ linux/drivers/usb/usb-ohci.c 2004-06-10 21:09:10.000000000 +0900
-@@ -12,6 +12,7 @@
- *
- * History:
- *
-+ * 2004/02/26 Lineo Solutions, Inc. for Tosa (SHARP)
- * 2001/09/19 USB_ZERO_PACKET support (Jean Tourrilhes)
- * 2001/07/17 power management and pmac cleanup (Benjamin Herrenschmidt)
- * 2001/03/24 td/ed hashing to remove bus_to_virt (Steve Longerbeam);
-@@ -89,7 +90,7 @@
- #define OHCI_UNLINK_TIMEOUT (HZ / 10)
-
- static LIST_HEAD (ohci_hcd_list);
--static spinlock_t usb_ed_lock = SPIN_LOCK_UNLOCKED;
-+spinlock_t usb_ed_lock = SPIN_LOCK_UNLOCKED;
-
-
- /*-------------------------------------------------------------------------*/
-@@ -1295,7 +1296,7 @@
- err("internal OHCI error: TD index > length");
- return;
- }
--if (data & (1 << 20)) panic("td_fill: A20 = 1: %08x\n", data);
-+//if (data & (1 << 20)) panic("td_fill: A20 = 1: %08x\n", data);
-
- /* use this td as the next dummy */
- td_pt = urb_priv->td [index];
-@@ -1509,7 +1510,7 @@
- /* replies to the request have to be on a FIFO basis so
- * we reverse the reversed done-list */
-
--static td_t * dl_reverse_done_list (ohci_t * ohci)
-+td_t * dl_reverse_done_list (ohci_t * ohci)
- {
- __u32 td_list_hc;
- td_t * td_rev = NULL;
-@@ -1657,7 +1658,7 @@
-
- /* td done list */
-
--static void dl_done_list (ohci_t * ohci, td_t * td_list)
-+void dl_done_list (ohci_t * ohci, td_t * td_list)
- {
- td_t * td_list_next = NULL;
- ed_t * ed;
-@@ -2126,7 +2127,7 @@
-
- /* reset the HC and BUS */
-
--static int hc_reset (ohci_t * ohci)
-+int hc_reset (ohci_t * ohci)
- {
- int timeout = 30;
- int smm_timeout = 50; /* 0,5 sec */
-@@ -2171,7 +2172,7 @@
- * enable interrupts
- * connect the virtual root hub */
-
--static int hc_start (ohci_t * ohci)
-+int hc_start (ohci_t * ohci)
- {
- __u32 mask;
- unsigned int fminterval;
-@@ -2418,7 +2419,8 @@
- ohci_mem_cleanup (ohci);
-
- /* unmap the IO address space */
-- iounmap (ohci->regs);
-+ if ((int)ohci->ohci_dev != 1)
-+ iounmap (ohci->regs);
-
- pci_free_consistent (ohci->ohci_dev, sizeof *ohci->hcca,
- ohci->hcca, ohci->hcca_dma);
-@@ -2432,7 +2434,7 @@
- */
- int __devinit
- hc_add_ohci(struct pci_dev *dev, int irq, void *mem_base, unsigned long flags,
-- ohci_t **ohci, const char *name, const char *slot_name)
-+ ohci_t **ohcip, const char *name, const char *slot_name)
- {
- char buf[8], *bufp = buf;
- ohci_t * ohci;
-@@ -2447,6 +2449,7 @@
- (unsigned long) mem_base, bufp);
-
- ohci = hc_alloc_ohci (dev, mem_base);
-+ *ohcip = ohci;
- if (!ohci) {
- return -ENOMEM;
- }
-diff -Nur linux_c860_org/drivers/usb/usb-ohci.h linux/drivers/usb/usb-ohci.h
---- linux_c860_org/drivers/usb/usb-ohci.h 2002-08-26 14:45:02.000000000 +0900
-+++ linux/drivers/usb/usb-ohci.h 2004-06-10 21:09:10.000000000 +0900
-@@ -5,8 +5,15 @@
- * (C) Copyright 2000-2001 David Brownell <dbrownell@users.sourceforge.net>
- *
- * usb-ohci.h
-+ *
-+ * ChangeLog:
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa (SHARP)
- */
-
-+#if defined(CONFIG_USB_USE_INTERNAL_MEMORY)
-+#include "mem-onchip.h"
-+#endif
-+
-
- static int cc_to_error[16] = {
-
-diff -Nur linux_c860_org/drivers/usb/usbkbd.c linux/drivers/usb/usbkbd.c
---- linux_c860_org/drivers/usb/usbkbd.c 2002-08-26 14:39:14.000000000 +0900
-+++ linux/drivers/usb/usbkbd.c 2004-06-10 21:09:10.000000000 +0900
-@@ -7,7 +7,11 @@
- *
- * Sponsored by SuSE
- */
--
-+/*
-+ * ChangeLog:
-+ * 1-Nov-2003 Sharp Corporation for Tosa
-+ *
-+ */
- /*
- * 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
-@@ -46,6 +50,26 @@
- MODULE_DESCRIPTION( DRIVER_DESC );
- MODULE_LICENSE("GPL");
-
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+static unsigned char usb_kbd_keycode[256] = {
-+ 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
-+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 41, 42,
-+ 43, 44, 45, 46, 47, 48, 49, 50, 28, 34, 31, 65, 92, 51, 52, 55,
-+ 54, 0, 97, 95, 96, 70, 98, 99,100, 60, 33, 58, 94, 39, 88, 89,
-+ 90,110,117,120, 30, 40,115, 0, 0, 0,104,106, 81,105,107, 124,
-+ 121,123,122, 32, 82, 83, 85, 86, 87, 71, 72, 73, 74, 75, 76, 77,
-+ 78, 79, 80, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0,101, 69, 53, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 56, 27, 57, 29,111,112,113,114, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+};
-+#else
- static unsigned char usb_kbd_keycode[256] = {
- 0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38,
- 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3,
-@@ -64,6 +88,7 @@
- 29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,
- 150,158,159,128,136,177,178,176,142,152,173,140
- };
-+#endif
-
- struct usb_kbd {
- struct input_dev dev;
-@@ -84,6 +109,12 @@
-
- if (urb->status) return;
-
-+#if 0
-+ printk("kbd_irq[%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x]\n",
-+ kbd->new[0],kbd->new[1],kbd->new[2],kbd->new[3],kbd->new[4],
-+ kbd->new[5],kbd->new[6],kbd->new[7],kbd->new[8]);
-+#endif
-+
- for (i = 0; i < 8; i++)
- input_report_key(&kbd->dev, usb_kbd_keycode[i + 224], (kbd->new[0] >> i) & 1);
-
-@@ -200,7 +231,11 @@
-
- kbd->usbdev = dev;
-
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ kbd->dev.evbit[0] = BIT(EV_KEY) | BIT(EV_LED);
-+#else
- kbd->dev.evbit[0] = BIT(EV_KEY) | BIT(EV_LED) | BIT(EV_REP);
-+#endif
- kbd->dev.ledbit[0] = BIT(LED_NUML) | BIT(LED_CAPSL) | BIT(LED_SCROLLL) | BIT(LED_COMPOSE) | BIT(LED_KANA);
-
- for (i = 0; i < 255; i++)
-diff -Nur linux_c860_org/drivers/video/Config.in linux/drivers/video/Config.in
---- linux_c860_org/drivers/video/Config.in 2002-09-11 12:02:37.000000000 +0900
-+++ linux/drivers/video/Config.in 2004-06-10 21:09:10.000000000 +0900
-@@ -10,6 +10,21 @@
- if [ "$CONFIG_FB" = "y" ]; then
- define_bool CONFIG_DUMMY_CONSOLE y
- if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-+ bool "UNICON Support(EXPERIMENTAL)" CONFIG_UNICON
-+ if [ "$CONFIG_UNICON" = "y" ]; then
-+ tristate "Double Byte GB encode (module only)" CONFIG_UNICON_GB
-+ if [ "$CONFIG_UNICON_GB" = "y" ]; then
-+ define_bool CONFIG_UNICON_GB m
-+ fi
-+ tristate "Double Byte SJIS encode (module only)" CONFIG_UNICON_SJIS
-+ if [ "$CONFIG_UNICON_SJIS" = "y" ]; then
-+ define_bool CONFIG_UNICON_SJIS m
-+ fi
-+ tristate "Double Byte EUCJP encode (module only)" CONFIG_UNICON_EUCJP
-+ if [ "$CONFIG_UNICON_EUCJP" = "y" ]; then
-+ define_bool CONFIG_UNICON_EUCJP m
-+ fi
-+ fi
- if [ "$CONFIG_PCI" = "y" ]; then
- tristate ' nVidia Riva support (EXPERIMENTAL)' CONFIG_FB_RIVA
- fi
-@@ -58,7 +73,9 @@
- dep_bool ' Cached FB support' CONFIG_POODLE_CONSISTENT_ALLOC $CONFIG_FB_POODLE
- fi
- dep_bool ' Corgi LCD support' CONFIG_FB_CORGI $CONFIG_ARCH_PXA_CORGI
-+ dep_bool ' Tosa LCD support' CONFIG_FB_TOSA $CONFIG_ARCH_PXA_TOSA
- dep_bool ' SHARP LOGO screen support' CONFIG_SHARP_LOGO_SCREEN $CONFIG_ARCH_SHARP_SL
-+ dep_bool ' Boot fastsysclk 100MHz. (EXPERIMENTAL)' CONFIG_SL_SYSCLK100 $CONFIG_ARCH_PXA_CORGI
- fi
- dep_tristate ' CyberPro 2000/2010/5000 support' CONFIG_FB_CYBER2000 $CONFIG_PCI
- if [ "$CONFIG_APOLLO" = "y" ]; then
-diff -Nur linux_c860_org/drivers/video/Makefile linux/drivers/video/Makefile
---- linux_c860_org/drivers/video/Makefile 2002-10-04 21:01:43.000000000 +0900
-+++ linux/drivers/video/Makefile 2004-06-10 21:09:10.000000000 +0900
-@@ -41,6 +41,10 @@
- obj-$(CONFIG_PPC) += macmodes.o
- endif
-
-+obj-$(CONFIG_UNICON_GB) += encode-gb.o
-+obj-$(CONFIG_UNICON_BIG5) += encode-big5.o
-+obj-$(CONFIG_UNICON_SJIS) += encode-sjis.o
-+obj-$(CONFIG_UNICON_EUCJP) += encode-eucjp.o
- obj-$(CONFIG_FB_ACORN) += acornfb.o
- obj-$(CONFIG_FB_AMIGA) += amifb.o
- obj-$(CONFIG_FB_PM2) += pm2fb.o fbgen.o
-@@ -91,7 +95,7 @@
- obj-$(CONFIG_FB_COTULLA) += cotulla_fb.o discovery_frontlight.o
- obj-$(CONFIG_FB_POODLE) += cotulla_fb.o poodle_frontlight.o
- obj-$(CONFIG_FB_CORGI) += w100fb.o fbgen.o corgi_backlight.o
--
-+obj-$(CONFIG_FB_TOSA) += tc6393fb.o fbgen.o tosa_backlight.o
-
- subdir-$(CONFIG_FB_MATROX) += matrox
- ifeq ($(CONFIG_FB_MATROX),y)
-diff -Nur linux_c860_org/drivers/video/encode-eucjp.c linux/drivers/video/encode-eucjp.c
---- linux_c860_org/drivers/video/encode-eucjp.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/video/encode-eucjp.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,67 @@
-+/*
-+ * linux/video/encode_eucjp.c
-+ *
-+ * Copyright (C) 2000 Kazuhide Takahashi
-+ * HOLON Inc.
-+ * Copyright (C) 1999 Christopher Li, Jim Chen
-+ * GNU/Linux Research Center
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive
-+ * for more details.
-+ *
-+ *
-+ */
-+
-+
-+#include <linux/module.h>
-+#include <linux/fb_doublebyte.h>
-+#include "font_jis16.h"
-+#define min1 0xa1
-+#define max1 0xfe
-+
-+
-+int is_left(int c)
-+{
-+ return ( c >= min1 && c<=max1);
-+}
-+int is_right(int c)
-+{
-+ return ( c >= min1 && c<=max1);
-+}
-+int index_euc (int left, int right)
-+{
-+ if ( left == 0x8E )
-+ left = 0;
-+ else
-+ left &= 0x7F;
-+ right &= 0x7F;
-+
-+ if (left > 0x29)
-+ return ((right - 0x40 + (left - 0x25) * 96) << 5);
-+ else
-+ return ((right - 0x20 + (left - 0x20) * 96) << 5);
-+}
-+struct double_byte db_gb =
-+{
-+ 0,
-+ "EUCJP",
-+ is_left,
-+ is_right,
-+ index_euc,
-+ 16,16,
-+ max_jis16,
-+ font_jis16
-+};
-+
-+int init_module(void)
-+{
-+ if (doublebyte_default) return 1;
-+ doublebyte_default = &db_gb;
-+ return 0;
-+}
-+
-+void cleanup_module(void)
-+{
-+ doublebyte_default = (void*) 0;
-+}
-diff -Nur linux_c860_org/drivers/video/encode-gb.c linux/drivers/video/encode-gb.c
---- linux_c860_org/drivers/video/encode-gb.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/video/encode-gb.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,50 @@
-+/*
-+ * linux/video/encode_gb.c
-+ *
-+ * Copyright (C) 1999 Christopher Li, Jim Chen
-+ * GNU/Linux Research Center
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive
-+ * for more details.
-+ *
-+ *
-+ */
-+
-+
-+#include <linux/module.h>
-+#include <linux/fb_doublebyte.h>
-+#include "font_gb16.h"
-+#define min1 0xa1
-+#define max1 0xfe
-+int index_gb(int left, int right)
-+{
-+ return ((left-min1)*94+right-min1) << 5;
-+}
-+int is_hz(int c)
-+{
-+ return ( c >= min1 && c<=max1);
-+}
-+struct double_byte db_gb =
-+{
-+ 0,
-+ "GB",
-+ is_hz,
-+ is_hz,
-+ index_gb,
-+ 16,16,
-+ max_gb16,
-+ font_gb16
-+};
-+
-+int init_module(void)
-+{
-+ if (doublebyte_default) return 1;
-+ doublebyte_default = &db_gb;
-+ return 0;
-+}
-+
-+void cleanup_module(void)
-+{
-+ doublebyte_default = (void*) 0;
-+}
-diff -Nur linux_c860_org/drivers/video/encode-sjis.c linux/drivers/video/encode-sjis.c
---- linux_c860_org/drivers/video/encode-sjis.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/video/encode-sjis.c 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,84 @@
-+/*
-+ * linux/video/encode_sjis.c
-+ *
-+ * Copyright (C) 2000 Kazuhide Takahashi
-+ * HOLON Inc.
-+ * Copyright (C) 1999 Christopher Li, Jim Chen
-+ * GNU/Linux Research Center
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive
-+ * for more details.
-+ *
-+ *
-+ */
-+
-+
-+#include <linux/module.h>
-+#include <linux/fb_doublebyte.h>
-+#include "font_jis16.h"
-+#define min1 0x81
-+#define max1 0xfc
-+
-+
-+int is_left(int c)
-+{
-+ return ( (c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xfc) );
-+}
-+int is_right(int c)
-+{
-+ return ( (c >= 0x40 && c <= 0x7e) || (c >= 0x80 && c <= 0xfc) );
-+}
-+int index_sjis (int left, int right)
-+{
-+ int ch1, ch2;
-+
-+ if ( !is_left(left) || !is_right(right) ) return -512;
-+
-+ ch1 = left;
-+ ch2 = right;
-+
-+ if ( ch1 <= 0x9f )
-+ ch1 -= 0x71;
-+ else
-+ ch1 -= 0xb1;
-+ ch1 *= 2;
-+ ++ch1;
-+
-+ if ( ch2 >= 0x7f )
-+ --ch2;
-+ if ( ch2 >= 0x9e ) {
-+ ch2 -= 0x7d;
-+ ++ch1;
-+ } else {
-+ ch2 -= 0x1f;
-+ }
-+
-+ if (ch1 > 0x29)
-+ return ((ch2 - 0x40 + (ch1 - 0x25) * 96) << 5);
-+ else
-+ return ((ch2 - 0x20 + (ch1 - 0x20) * 96) << 5);
-+}
-+struct double_byte db_gb =
-+{
-+ 0,
-+ "SJIS",
-+ is_left,
-+ is_right,
-+ index_sjis,
-+ 16,16,
-+ max_jis16,
-+ font_jis16
-+};
-+
-+int init_module(void)
-+{
-+ if (doublebyte_default) return 1;
-+ doublebyte_default = &db_gb;
-+ return 0;
-+}
-+
-+void cleanup_module(void)
-+{
-+ doublebyte_default = (void*) 0;
-+}
-diff -Nur linux_c860_org/drivers/video/fbcon-cfb16.c linux/drivers/video/fbcon-cfb16.c
---- linux_c860_org/drivers/video/fbcon-cfb16.c 2003-01-14 14:43:43.000000000 +0900
-+++ linux/drivers/video/fbcon-cfb16.c 2004-06-10 21:09:10.000000000 +0900
-@@ -13,6 +13,7 @@
- * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
- * 31-Oct-2002 SHARP
- * added support for rotation logo screen on SHARP SL-C700
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #include <linux/module.h>
-@@ -217,9 +218,11 @@
-
- width *= fontwidth(p)/4;
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#if 0 /* c700 bug fix 0 */
- if (width * 8 == bytes)
- rectfill(dest, 1, lines * width * 4, bgx, bytes);
- else
-+#endif
- rectfill(dest, lines, width * 4, bgx, bytes);
- #else
- if (width * 8 == bytes)
-@@ -240,10 +243,17 @@
- u8 *dest, *cdat, bits;
- int bytes = p->next_line, rows;
- u32 eorx, fgx, bgx;
-+#ifdef CONFIG_UNICON
-+ u8 *temp;
-+#endif
-
- #if defined(CONFIG_FBCON_ROTATE_R)
- dest = p->screen_base +
-+#ifdef CONFIG_UNICON
-+ yy * fontwidth(p) * bytes + (p->var.xres - (xx+1) * fontheight(p) - 1) * 2;
-+#else
- yy * fontwidth(p) * bytes + (p->var.xres - xx * fontheight(p) - 1) * 2;
-+#endif
- #elif defined(CONFIG_FBCON_ROTATE_L)
- dest = p->screen_base +
- (p->var.yres - yy * fontwidth(p) - 1) * bytes + xx * fontheight(p) * 2;
-@@ -262,6 +272,32 @@
- case 8:
- cdat = p->fontdata + (c & p->charmask) * fontheight(p);
- #if defined(CONFIG_FBCON_ROTATE_R)
-+#ifdef CONFIG_UNICON
-+ rows = fontheight(p);
-+ temp = dest+rows*2;
-+ for (; rows--; dest += 2,temp -= 2) {
-+ bits = *cdat++;
-+ fb_writew((tab_cfb16[bits >> 7 & 1] & eorx) ^ bgx,
-+ temp);
-+ fb_writew((tab_cfb16[bits >> 6 & 1] & eorx) ^ bgx,
-+ temp+1*bytes);
-+ fb_writew((tab_cfb16[bits >> 5 & 1] & eorx) ^ bgx,
-+ temp+2*bytes);
-+ fb_writew((tab_cfb16[bits >> 4 & 1] & eorx) ^ bgx,
-+ temp+3*bytes);
-+ if (fontwidth(p) == 8) {
-+ fb_writew((tab_cfb16[bits >> 3 & 1] & eorx) ^ bgx,
-+ temp+4*bytes);
-+ fb_writew((tab_cfb16[bits >> 2 & 1] & eorx) ^ bgx,
-+ temp+5*bytes);
-+ fb_writew((tab_cfb16[bits >> 1 & 1] & eorx) ^ bgx,
-+ temp+6*bytes);
-+ fb_writew((tab_cfb16[bits & 1] & eorx) ^ bgx,
-+ temp+7*bytes);
-+ }
-+ }
-+ dest = temp;
-+#else
- for (rows = fontheight(p); rows--; dest += 2) {
- bits = *cdat++;
- fb_writew((tab_cfb16[bits >> 7 & 1] & eorx) ^ bgx,
-@@ -283,6 +319,7 @@
- dest+7*bytes);
- }
- }
-+#endif
- #elif defined(CONFIG_FBCON_ROTATE_L)
- for (rows = fontheight(p); rows--; dest += 2) {
- bits = *cdat++;
-@@ -734,6 +771,15 @@
- rectfill(p->screen_base +
- (p->var.xres - (p->var.xoffset + bottom_start) - 1) * 2,
- right_start, bottom_width, bgx, bytes);
-+#else
-+#ifdef CONFIG_FB_TOSA /* re_check */
-+ if (!bottom_only && (right_width = p->var.yres - right_start))
-+ rectfill(p->screen_base + right_start * bytes + (p->var.xres - 1) * 2,
-+ right_width, p->var.xres_virtual, bgx, bytes);
-+ if ((bottom_width = p->var.xres - bottom_start))
-+ rectfill(p->screen_base +
-+ (p->var.xres - (p->var.xoffset + bottom_start) - 1) * 2,
-+ right_start, bottom_width, bgx, bytes);
- #else // general R
- if (!bottom_only && (right_width = p->var.yres - right_start))
- rectfill(p->screen_base + right_start * bytes + (p->var.xres - 1) * 2,
-@@ -743,6 +789,7 @@
- (p->var.xres - (p->var.xoffset + bottom_start) - 1) * 2,
- right_start, bottom_width, bgx, bytes);
- #endif
-+#endif
- #elif defined(CONFIG_FBCON_ROTATE_L)
- #ifdef CONFIG_FB_CORGI
- if (!bottom_only && (right_width = p->var.yres - right_start))
-@@ -752,6 +799,15 @@
- rectfill(p->screen_base + (p->var.yres - 1) * bytes +
- (p->var.xoffset + bottom_start) * 2,
- right_start, bottom_width, bgx, bytes);
-+#else
-+#ifdef CONFIG_FB_TOSA /* re_check */
-+ if (!bottom_only && (right_width = p->var.yres - right_start))
-+ rectfill(p->screen_base + (p->var.yres - right_start - 1) * bytes,
-+ right_width, p->var.xres_virtual, bgx, bytes);
-+ if ((bottom_width = p->var.xres - bottom_start))
-+ rectfill(p->screen_base + (p->var.yres - 1) * bytes +
-+ (p->var.xoffset + bottom_start) * 2,
-+ right_start, bottom_width, bgx, bytes);
- #else // general L
- if (!bottom_only && (right_width = p->var.yres - right_start))
- rectfill(p->screen_base + (p->var.yres - right_start - 1) * bytes,
-@@ -761,6 +817,7 @@
- (p->var.xoffset + bottom_start) * 2,
- right_start, bottom_width, bgx, bytes);
- #endif
-+#endif
- #else
- if (!bottom_only && (right_width = p->var.xres-right_start))
- rectfill(p->screen_base+right_start*2, right_width,
-diff -Nur linux_c860_org/drivers/video/fbcon.c linux/drivers/video/fbcon.c
---- linux_c860_org/drivers/video/fbcon.c 2003-01-14 14:44:30.000000000 +0900
-+++ linux/drivers/video/fbcon.c 2004-06-10 21:09:10.000000000 +0900
-@@ -66,6 +66,7 @@
- * added support for rotation logo screen on SHARP SL-C700
- * 08-Nov-2002 SHARP
- * SHARP logo screen modification
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #undef FBCONDEBUG
-@@ -78,6 +79,11 @@
- #include <linux/kernel.h>
- #include <linux/delay.h> /* MSch: for IRQ probe */
- #include <linux/tty.h>
-+
-+#ifdef CONFIG_UNICON
-+#include <linux/fb_doublebyte.h>
-+#endif
-+
- #include <linux/console.h>
- #include <linux/string.h>
- #include <linux/kd.h>
-@@ -668,7 +674,12 @@
- if (con == fg_console && p->type != FB_TYPE_TEXT) {
- if (fbcon_softback_size) {
- if (!softback_buf) {
-+#ifndef CONFIG_UNICON
- softback_buf = (unsigned long)kmalloc(fbcon_softback_size, GFP_KERNEL);
-+#else
-+ softback_buf = (unsigned long)kmalloc(fbcon_softback_size*2, GFP_KERNEL);
-+#endif
-+
- if (!softback_buf) {
- fbcon_softback_size = 0;
- softback_top = 0;
-@@ -816,11 +827,18 @@
- (p->var.yres_virtual % fontwidth(p) < p->var.yres % fontwidth(p)))
- p->vrows--;
- #else
-+#ifdef CONFIG_FB_TOSA /* re_check */
-+ p->vrows = p->var.yres_virtual / fontwidth(p);
-+ if ((p->var.yres % fontwidth(p)) &&
-+ (p->var.yres_virtual % fontwidth(p) < p->var.yres % fontwidth(p)))
-+ p->vrows--;
-+#else
- p->vrows = p->var.xres_virtual / fontheight(p);
- if ((p->var.xres % fontheight(p)) &&
- (p->var.xres_virtual % fontheight(p) < p->var.xres % fontheight(p)))
- p->vrows--;
- #endif
-+#endif
- #else
- p->vrows = p->var.yres_virtual/fontheight(p);
- if ((p->var.yres % fontheight(p)) &&
-@@ -916,6 +934,27 @@
- * restriction is simplicity & efficiency at the moment.
- */
-
-+#ifdef CONFIG_UNICON
-+static inline unsigned short * hibyte_pos(struct vc_data * conp,unsigned short* p)
-+{
-+ unsigned long pos=(long)p;
-+
-+ if (pos >= conp->vc_origin && pos < conp->vc_scr_end) {
-+ /* pos in the vc buffer - Chrisl 99.11.12*/
-+ return (unsigned short*)(pos+conp->vc_screenbuf_size);
-+ } else if (conp->vc_num == fg_console){
-+ /*&& softback_lines,because the scroll will first change
-+ softback_lines, then call this function, so it is ignored here
-+ -JimChen 99.11.12*/
-+ return (unsigned short*)(pos+fbcon_softback_size);
-+ } else {
-+ /* Should not happen */
-+ printk("Warnning, changing not active console\n");
-+ return p;
-+ }
-+}
-+#endif
-+
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- static __inline__ int real_x(struct display *p, int xpos)
- {
-@@ -993,6 +1032,60 @@
- vbl_cursor_cnt = CURSOR_DRAW_DELAY;
- }
-
-+#ifdef CONFIG_UNICON
-+struct double_byte * doublebyte_default = NULL;
-+EXPORT_SYMBOL(doublebyte_default);
-+/* ypos is absolute y(relative to video buffer), not y in screen coordinate,
-+ and the validation is assured by the caller */
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+void fbcon_putc_tl(struct vc_data *conp, int c, int xpos, int ypos)
-+#else
-+void fbcon_putc_tl(struct vc_data *conp, int c, int ypos, int xpos)
-+#endif
-+{
-+ int unit = conp->vc_num;
-+ struct display *p = &fb_display[unit];
-+ int extendedchar;
-+ u_char * fontdata_save;
-+
-+ if (!doublebyte_default){
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ p->dispsw->putc(conp, p, c&0xffff, xpos, ypos);
-+#else
-+ p->dispsw->putc(conp, p, c&0xffff, ypos, xpos);
-+#endif
-+ return;
-+ }
-+ extendedchar = c & (DB_VALIDATE<<16);
-+ fontdata_save = p -> fontdata;
-+ if (extendedchar) {
-+ int index;
-+ if ( c & (DB_RIGHT_MASK << 16)) {// right half
-+ index = doublebyte_default->font_index((c>>16)&0xff, (c&0xff)) + 16;
-+ } else {
-+ index = doublebyte_default->font_index((c&0xff),(c>>16)&0xff);
-+ }
-+ //printk("<6>%d %x",(unsigned long)p->fontdata-(unsigned long) font_gb16,c);
-+ if (index >=0 && index < doublebyte_default->charcount) {
-+ p->fontdata = doublebyte_default->font_data +index;
-+ c = (c & 0xff00);
-+ }else c = c & 0xffff;
-+ } else {
-+ c = c & 0xffff;
-+ }
-+
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ p->dispsw->putc(conp, p, c, xpos, ypos);
-+#else
-+ p->dispsw->putc(conp, p, c, ypos, xpos);
-+#endif
-+
-+ if (extendedchar) {
-+ p->fontdata = fontdata_save;
-+ }
-+}
-+EXPORT_SYMBOL(fbcon_putc_tl);
-+#endif
-
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- static void fbcon_putc(struct vc_data *conp, int c, int xpos, int ypos)
-@@ -1019,16 +1112,39 @@
- redraw_cursor = 1;
- }
-
-+#ifdef CONFIG_UNICON
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ fbcon_putc_tl(conp, c, real_x(p, xpos), ypos);
-+#else
-+ fbcon_putc_tl(conp, c, real_y(p, ypos), xpos);
-+#endif
-+#else
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- p->dispsw->putc(conp, p, c, real_x(p, xpos), ypos);
- #else
- p->dispsw->putc(conp, p, c, real_y(p, ypos), xpos);
- #endif
-+#endif
-
- if (redraw_cursor)
- vbl_cursor_cnt = CURSOR_DRAW_DELAY;
- }
-
-+#ifdef CONFIG_UNICON
-+//ypos is absolute pos.
-+static void fbcon_putcs_tl(struct vc_data *conp, const unsigned short *s, int count,
-+ int ypos, int xpos)
-+{
-+ const unsigned short *str=s;
-+
-+ while (count--) {
-+ fbcon_putc_tl(conp, (scr_readw(hibyte_pos(conp,(unsigned short *)str))<<16)|scr_readw(str),
-+ ypos, xpos);
-+ str++;
-+ xpos++;
-+ }
-+}
-+#endif
-
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- static void fbcon_putcs(struct vc_data *conp, const unsigned short *s, int count, int xpos, int ypos)
-@@ -1057,11 +1173,19 @@
- cursor_undrawn();
- redraw_cursor = 1;
- }
-+#ifndef CONFIG_UNICON
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- p->dispsw->putcs(conp, p, s, count, real_x(p, xpos), ypos);
- #else
- p->dispsw->putcs(conp, p, s, count, real_y(p, ypos), xpos);
- #endif
-+#else
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ fbcon_putcs_tl(conp,s,count,real_x(p,xpos),ypos);
-+#else
-+ fbcon_putcs_tl(conp,s,count,real_y(p,ypos),xpos);
-+#endif
-+#endif
- if (redraw_cursor)
- vbl_cursor_cnt = CURSOR_DRAW_DELAY;
- }
-@@ -1362,6 +1486,9 @@
- unsigned short *start;
- unsigned short *le;
- unsigned short c;
-+#ifdef CONFIG_UNICON
-+ unsigned short c_ext;
-+#endif
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- int y = 0;
- #else
-@@ -1373,30 +1500,53 @@
- le = advance_row(s, 1);
- do {
- c = scr_readw(s);
-+#ifdef CONFIG_UNICON
-+ c_ext = scr_readw(hibyte_pos(conp,s));
-+#endif
- if (attr != (c & 0xff00)) {
- attr = c & 0xff00;
- if (s > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_x(p, line), y);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#endif
- y += s - start;
- #else
-- p->dispsw->putcs(conp, p, start, s - start,
-- real_y(p, line), x);
-+#ifndef CONFIG_UNICON
-+ p->dispsw->putcs(conp, p, start, s - start,
-+ real_y(p, line), x);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
- x += s - start;
- #endif
- start = s;
- }
- }
-+#ifndef CONFIG_UNICON
- if (c == scr_readw(d)) {
-+#else
-+ if (c == scr_readw(d) && c_ext == scr_readw(hibyte_pos(conp,d))) {
-+#endif
- if (s > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_x(p, line), y);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#endif
- y += s - start + 1;
- #else
-- p->dispsw->putcs(conp, p, start, s - start,
-- real_y(p, line), x);
-+#ifndef CONFIG_UNICON
-+ p->dispsw->putcs(conp, p, start, s - start,
-+ real_y(p, line), x);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
- x += s - start + 1;
- #endif
- start = s + 1;
-@@ -1414,9 +1564,17 @@
- } while (s < le);
- if (s > start)
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start, real_x(p, line), y);
- #else
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#endif
-+#else
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start, real_y(p, line), x);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
- #endif
- line++;
- if (d == (u16 *)softback_end)
-@@ -1441,6 +1599,9 @@
- unsigned short *start = s;
- unsigned short *le = advance_row(s, 1);
- unsigned short c;
-+#ifdef CONFIG_UNICON
-+ unsigned short c_ext;
-+#endif
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- int y = 0;
- #else
-@@ -1450,30 +1611,53 @@
-
- do {
- c = scr_readw(s);
-+#ifdef CONFIG_UNICON
-+ c_ext = scr_readw(hibyte_pos(conp,s));
-+#endif
- if (attr != (c & 0xff00)) {
- attr = c & 0xff00;
- if (s > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_x(p, line), y);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#endif
- y += s - start;
- #else
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_y(p, line), x);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
- x += s - start;
- #endif
- start = s;
- }
- }
-+#ifndef CONFIG_UNICON
- if (c == scr_readw(d)) {
-+#else
-+ if (c == scr_readw(d) && c_ext == scr_readw(hibyte_pos(conp,d))) {
-+#endif
- if (s > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_x(p, line), y);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#endif
- y += s - start + 1;
- #else
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_y(p, line), x);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
- x += s - start + 1;
- #endif
- start = s + 1;
-@@ -1487,17 +1671,28 @@
- }
- }
- scr_writew(c, d);
-+#ifdef CONFIG_UNICON
-+ scr_writew(scr_readw(s+(conp->vc_screenbuf_size>>1)),d+(conp->vc_screenbuf_size>>1));
-+#endif
- console_conditional_schedule();
- s++;
- d++;
- } while (s < le);
- if (s > start)
-+#ifndef CONFIG_UNICON
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- p->dispsw->putcs(conp, p, start, s - start, real_x(p, line), y);
- #else
- p->dispsw->putcs(conp, p, start, s - start, real_y(p, line), x);
- #endif
- console_conditional_schedule();
-+#else
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
-+#endif
- if (offset > 0)
- line++;
- else {
-@@ -1603,10 +1798,18 @@
- attr = c & 0xff00;
- if (d > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, d - start, dx, y);
-+#else
-+ fbcon_putcs_tl(conp,start,d-start,dx,y);
-+#endif
- y += d - start;
- #else
-- p->dispsw->putcs(conp, p, start, d - start, dy, x);
-+#ifndef CONFIG_UNICON
-+ p->dispsw->putcs(conp, p, start, d - start, dy, x);
-+#else
-+ fbcon_putcs_tl(conp,start,d-start,dy,x);
-+#endif
- x += d - start;
- #endif
- start = d;
-@@ -1615,10 +1818,18 @@
- if (s >= ls && s < le && c == scr_readw(s)) {
- if (d > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, d - start, dx, y);
-+#else
-+ fbcon_putcs_tl(conp,start,d-start,dx,y);
-+#endif
- y += d - start + 1;
- #else
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, d - start, dy, x);
-+#else
-+ fbcon_putcs_tl(conp,start,d-start,dy,x);
-+#endif
- x += d - start + 1;
- #endif
- start = d + 1;
-@@ -1636,9 +1847,17 @@
- } while (d < le);
- if (d > start)
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, d - start, dx, y);
- #else
-+ fbcon_putcs_tl(conp,start,d-start,dx,y);
-+#endif
-+#else
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, d - start, dy, x);
-+#else
-+ fbcon_putcs_tl(conp,start,d-start,dy,x);
-+#endif
- #endif
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- sx++;
-@@ -1660,6 +1879,9 @@
-
- while (count) {
- scr_memcpyw((u16 *)softback_in, p, conp->vc_size_row);
-+#ifdef CONFIG_UNICON
-+ scr_memcpyw((u16 *)softback_in+(fbcon_softback_size>>1),p+(conp->vc_screenbuf_size>>1),conp->vc_size_row);
-+#endif
- count--;
- p = advance_row(p, 1);
- softback_in += conp->vc_size_row;
-@@ -1764,6 +1986,13 @@
- conp->vc_size_row * (b-count)),
- conp->vc_video_erase_char,
- conp->vc_size_row * count);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw((unsigned short *)(conp->vc_origin +
-+ conp->vc_size_row * (b-count) +
-+ conp->vc_screenbuf_size),
-+ conp->vc_video_erase_char & 0xff,
-+ conp->vc_size_row * count);
-+#endif
- return 1;
- }
- #else
-@@ -1879,6 +2108,13 @@
- conp->vc_size_row * t),
- conp->vc_video_erase_char,
- conp->vc_size_row * count);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw((unsigned short *)(conp->vc_origin +
-+ conp->vc_size_row * t +
-+ conp->vc_screenbuf_size),
-+ conp->vc_video_erase_char & 0xff,
-+ conp->vc_size_row * count);
-+#endif
- return 1;
- }
- #else
-@@ -2566,11 +2802,31 @@
- return p->fb_info->fbops->fb_set_cmap(&palette_cmap, 1, unit, p->fb_info);
- }
-
-+#ifdef CONFIG_UNICON
-+/*offset:relative to softback_curr if softback valid in this vc
-+The return pos may exists in buffer pointed by conp->vc_origin or softback_top.
-+I assume the offset is always >=0 in normal case and I use the -offset-1 to mean to get the pos of the second word
-+*/
-+#endif
-+
- static u16 *fbcon_screen_pos(struct vc_data *conp, int offset)
- {
- int line;
- unsigned long p;
--
-+#ifdef CONFIG_UNICON
-+ if (offset < 0) {
-+ offset = -offset - 1;
-+ if (conp->vc_num != fg_console || !softback_lines)
-+ return (u16 *)(conp->vc_origin + offset + conp->vc_screenbuf_size);
-+ line = offset / conp->vc_size_row;
-+ if (line >= softback_lines)
-+ return (u16 *)(conp->vc_origin + offset - softback_lines * conp->vc_size_row + conp->vc_screenbuf_size);
-+ p = softback_curr + offset;
-+ if (p >= softback_end)
-+ p += softback_buf - softback_end;
-+ return (u16 *)(p+fbcon_softback_size);
-+ }
-+#endif
- if (conp->vc_num != fg_console || !softback_lines)
- return (u16 *)(conp->vc_origin + offset);
- line = offset / conp->vc_size_row;
-@@ -2582,6 +2838,10 @@
- return (u16 *)p;
- }
-
-+#ifdef CONFIG_UNICON
-+// pos is a pointer either pointing into softback or (vc_origin--vc_scr_end),
-+// return the pointer to the start of next row ( no matter in vi_origin or softback!)
-+#endif
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- static unsigned long fbcon_getxy(struct vc_data *conp, unsigned long pos, int *py, int *px)
- #else
-@@ -2684,6 +2944,11 @@
- p -= conp->vc_size_row;
- q -= conp->vc_size_row;
- scr_memcpyw((u16 *)q, (u16 *)p, conp->vc_size_row);
-+#ifdef CONFIG_UNICON
-+ scr_memcpyw((u16* )(q+conp->vc_screenbuf_size),
-+ (u16* )(p+fbcon_softback_size),
-+ conp->vc_size_row);
-+#endif
- }
- softback_in = p;
- update_region(unit, conp->vc_origin, logo_lines * conp->vc_cols);
-diff -Nur linux_c860_org/drivers/video/fbmem.c linux/drivers/video/fbmem.c
---- linux_c860_org/drivers/video/fbmem.c 2003-01-14 14:48:09.000000000 +0900
-+++ linux/drivers/video/fbmem.c 2004-06-10 21:09:10.000000000 +0900
-@@ -16,6 +16,8 @@
- * - Added support for ATI w100 on SHARP SL-C700
- * 11-Sep-2002 SHARP
- * - Allocated frame buffer to cache memory on SHARP SL-B500/5600
-+ * 24-Jul-2003 Lineo Solutions, Inc.
-+ * - Added support for TOSHIBA TC6393XB on SHARP SL-6
- */
-
- #include <linux/config.h>
-@@ -145,6 +147,8 @@
- extern int cotulla_fb_init(void);
- extern int w100fb_init(void);
- extern int w100fb_setup(char*);
-+extern int tc6393fb_init(void);
-+extern int tc6393fb_setup(char*);
-
- static struct {
- const char *name;
-@@ -322,6 +326,9 @@
- #ifdef CONFIG_FB_CORGI
- { "w100fb", w100fb_init, w100fb_setup },
- #endif
-+#ifdef CONFIG_FB_TOSA
-+ { "tc6393fb", tc6393fb_init, NULL },
-+#endif
-
- /*
- * Generic drivers that don't use resource management (yet)
-diff -Nur linux_c860_org/drivers/video/font_gb16.h linux/drivers/video/font_gb16.h
---- linux_c860_org/drivers/video/font_gb16.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/video/font_gb16.h 2004-06-10 21:09:10.000000000 +0900
-@@ -0,0 +1,8180 @@
-+#define max_gb16 261696
-+unsigned char font_gb16[max_gb16] = {
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x50,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0xc,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x2,0x2,0x4,0x4,0x9,0x9,0x12,0x24,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x4,0x4,0x8,0x8,0x1f,0x20,0x40,0x0,0x8,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0xc0,0x40,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x63,0x63,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x4,0x8,0xc,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x60,0x60,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x44,0x88,0x10,0x98,0x98,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x0,0x1,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x98,0x98,0x88,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x4,0x0,
-+0x0,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x0,0x0,
-+0x0,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x12,0x24,0x48,0x90,0x20,0x40,0x80,0x40,0x20,0x90,0x48,0x24,0x12,0x8,0x4,
-+0x20,0x90,0x48,0x24,0x12,0x9,0x4,0x2,0x4,0x9,0x12,0x24,0x48,0x90,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x4,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x7,0x0,0x0,0x0,0xc0,0x40,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x4,0x7,0x0,0x0,0x0,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x84,0x88,0x88,0x90,0x90,0x90,0x90,0x90,0x90,0x88,0x88,0x84,0xfe,0x0,
-+0x0,0xfe,0x42,0x22,0x22,0x12,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x42,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0xfc,0xf8,0xf0,0xf0,0xe0,0xe0,0xe0,0xe0,0xf0,0xf0,0xf8,0xfc,0xfe,0x0,
-+0x0,0xfe,0x7e,0x3e,0x1e,0x1e,0xe,0xe,0xe,0xe,0x1e,0x1e,0x3e,0x7e,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1,0x1,0x1,0xf,0x1,0x1,0x1,0x0,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1f,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x40,0x40,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x8,0x8,0x8,0x4,0x4,0x0,
-+0x0,0x40,0x40,0x20,0x20,0x20,0x10,0x10,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,
-+0x0,0x7f,0x20,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0xfc,0x0,0x0,
-+0x0,0x3f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x78,0x0,0x0,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3c,0x0,
-+0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x0,
-+0x0,0x7,0x18,0x20,0x20,0x40,0x40,0x7f,0x40,0x40,0x40,0x20,0x20,0x18,0x7,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,
-+0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x41,0xa2,0x14,0x8,0x0,0x0,0x0,0x0,0x0,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,
-+0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x4,0x4,0x4,0x9,0x9,0x9,0x9,0x9,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x18,0x20,0x20,0x40,0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x10,0x10,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x7,0x18,0x20,0x20,0x40,0x43,0x43,0x40,0x20,0x20,0x18,0x7,0x0,0x0,0x0,0x0,0x80,0x60,0x10,0x10,0x8,0x8,0x8,0x8,0x10,0x10,0x60,0x80,0x0,0x0,
-+0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x6,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1,0x1,0x7,0x9,0x9,0xa,0xa,0x7,0x2,0x2,0x4,0x24,0x18,0x60,0x90,0x80,0x0,0x0,0x80,0x40,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x7f,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x18,0x20,0x41,0x41,0x42,0x22,0x1c,0x0,0x7f,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x70,0x88,0x4,0x4,0x4,0x8,0x30,0x0,0xfc,0x0,0xfc,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x38,0x47,0x0,0x38,0x47,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0xf0,0x4,0x8,0xf0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x38,0x40,0x41,0x81,0x81,0x41,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78,0x84,0x2,0x2,0x2,0x2,0x4,0x38,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3c,0x42,0x41,0x81,0x81,0x41,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7e,0x80,0x0,0x0,0x0,0x0,0x80,0x7e,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x1,0x2,0x7f,0x4,0x4,0x8,0x10,0x10,0x20,0x10,0x20,0x20,0x40,0x40,0xfc,0x80,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x4,0x5,0x6,0x1c,0x64,0x84,0x64,0x1c,0x6,0x5,0x4,0x4,0x0,0x0,0x0,0x18,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x18,0x0,0x0,
-+0x0,0x30,0xc,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x30,0x0,0x0,0x0,0x40,0x40,0x40,0xc0,0x70,0x4c,0x42,0x4c,0x70,0xc0,0x40,0x40,0x40,0x0,0x0,
-+0x0,0x0,0x1,0x6,0x18,0x60,0x80,0x60,0x98,0x66,0x19,0x6,0x1,0x0,0x0,0x0,0x18,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x98,0x60,0x18,0x0,
-+0x30,0xc,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x33,0xc,0x30,0x0,0x0,0x0,0x0,0xc0,0x30,0xc,0x2,0xc,0x32,0xcc,0x30,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3c,0x42,0x81,0x81,0x81,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78,0x84,0x2,0x2,0x2,0x84,0x78,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,
-+0x0,0x1,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x3,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x0,
-+0x0,0x3,0x4,0x4,0x4,0x3,0x1,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x0,0x0,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x30,0x48,0x48,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x4,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x53,0x24,0x8,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x8,0x4,0x3,0x0,0x0,0xf4,0xc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x8,0xf0,0x0,
-+0x1,0xf,0x11,0x21,0x21,0x21,0x11,0xf,0x1,0x1,0x1,0x21,0x21,0x31,0x2f,0x1,0x0,0xe8,0x18,0x8,0x8,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0xe0,0x0,
-+0x0,0x40,0x27,0x18,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x18,0x27,0x40,0x0,0x0,0x2,0xe4,0x18,0x8,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x18,0xe4,0x2,0x0,
-+0x0,0x0,0xf,0x10,0x20,0x40,0x40,0x41,0x41,0x42,0x42,0x24,0x14,0xf,0x10,0x20,0x10,0x20,0xe8,0x58,0x48,0x80,0x80,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0,
-+0x1,0x2,0x2,0x2,0x2,0x2,0x3f,0x2,0x2,0x2,0x3a,0x46,0x42,0x45,0x38,0x0,0xc0,0x20,0x20,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0xf8,0x0,
-+0x0,0x30,0x48,0x48,0x48,0x49,0x32,0x4,0x8,0x11,0x22,0x42,0x82,0x2,0x1,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x8c,0x52,0x52,0x52,0x52,0x8c,0x0,
-+0x7,0x8,0x8,0x4,0x2,0x3,0x4,0x8,0x8,0x5,0x2,0x1,0x4,0x8,0x8,0x7,0x80,0x40,0xc0,0x0,0x0,0x0,0x80,0x40,0x40,0x80,0x0,0x0,0x80,0x40,0x40,0x80,
-+0x60,0x21,0x31,0x31,0x29,0x29,0x29,0x29,0x25,0x25,0x25,0x25,0x23,0x23,0xa1,0x41,0x80,0x40,0x0,0x0,0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x18,0x0,0x7e,0x0,
-+0x1,0x1,0x2,0x2,0x2,0x4,0xfc,0x40,0x30,0x8,0x8,0x11,0x16,0x18,0x20,0x0,0x0,0x0,0x80,0x80,0x80,0x40,0x7e,0x4,0x18,0x20,0x20,0x90,0x50,0x30,0x8,0x0,
-+0x1,0x1,0x3,0x3,0x3,0x7,0xff,0x3f,0x1f,0xf,0xf,0x1f,0x1e,0x18,0x20,0x0,0x0,0x0,0x80,0x80,0x80,0xc0,0xfe,0xf8,0xf0,0xe0,0xe0,0xf0,0xf0,0x30,0x8,0x0,
-+0x0,0x7,0x18,0x20,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x20,0x18,0x7,0x0,0x0,0x0,0xc0,0x30,0x8,0x8,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x30,0xc0,0x0,0x0,
-+0x0,0x7,0x1f,0x3f,0x3f,0x7f,0x7f,0x7f,0x7f,0x7f,0x3f,0x3f,0x1f,0x7,0x0,0x0,0x0,0xc0,0xf0,0xf8,0xf8,0xfc,0xfc,0xfc,0xfc,0xfc,0xf8,0xf8,0xf0,0xc0,0x0,0x0,
-+0x0,0x7,0x18,0x27,0x28,0x50,0x50,0x50,0x50,0x50,0x28,0x27,0x18,0x7,0x0,0x0,0x0,0xc0,0x30,0xc8,0x28,0x14,0x14,0x14,0x14,0x14,0x28,0xc8,0x30,0xc0,0x0,0x0,
-+0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x1,0x3,0x7,0xf,0x1f,0x3f,0x7f,0xff,0x7f,0x3f,0x1f,0xf,0x7,0x3,0x1,0x0,0x0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x0,0x0,
-+0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x0,0x0,0x0,0xfc,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x0,0x0,
-+0x0,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x0,0x0,0x0,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0x0,0x0,
-+0x0,0x1,0x2,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0xff,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x8,0x8,0x4,0x4,0xfe,0x0,0x0,
-+0x0,0x1,0x3,0x7,0x7,0xf,0xf,0x1f,0x1f,0x3f,0x3f,0x7f,0x7f,0xff,0x0,0x0,0x0,0x0,0x80,0xc0,0xc0,0xe0,0xe0,0xf0,0xf0,0xf8,0xf8,0xfc,0xfc,0xfe,0x0,0x0,
-+0x0,0x43,0x23,0x10,0x8,0x4,0x2,0x61,0x62,0x4,0x8,0x10,0x23,0x43,0x80,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0xc,0x8c,0x40,0x20,0x10,0x8,0x4,0x2,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x38,0xfe,0x38,0x20,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x8,0x38,0xff,0x38,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x3,0x3,0x7,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x80,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x3,0x3,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x80,0x80,0x0,0x0,
-+0x0,0x0,0x0,0xff,0xff,0xff,0x0,0x0,0x0,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0xfe,0xfe,0x0,0x0,0x0,0xfe,0xfe,0xfe,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x6,0xa,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,
-+0x0,0xf,0x10,0x10,0x0,0x0,0x0,0x1,0x6,0x8,0x10,0x10,0x10,0x10,0x1f,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x90,0x0,
-+0x0,0xf,0x10,0x10,0x0,0x0,0x1,0x6,0x1,0x0,0x0,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x10,0x0,
-+0x0,0x3,0x5,0x5,0x5,0x9,0x9,0x9,0x11,0x11,0x1f,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x8,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x10,0x0,
-+0x0,0xf,0x10,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x10,0x0,
-+0x0,0x1f,0x10,0x10,0x0,0x1,0x1,0x1,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0xc0,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,
-+0x0,0xf,0x10,0x10,0x10,0x10,0x9,0x6,0x9,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x10,0x0,
-+0x0,0xf,0x10,0x10,0x10,0x10,0x10,0x11,0xe,0x0,0x0,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x10,0x0,
-+0x0,0x23,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc8,0x0,
-+0x0,0x20,0x61,0xa2,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x90,0x0,
-+0x0,0x23,0x64,0xa4,0x20,0x20,0x20,0x20,0x21,0x22,0x24,0x24,0x24,0x24,0x27,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x20,0x20,0xe4,0x0,
-+0x0,0x23,0x64,0xa4,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x40,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0xc4,0x0,
-+0x0,0x20,0x61,0xa1,0x21,0x22,0x22,0x22,0x24,0x24,0x27,0x20,0x20,0x20,0x20,0x0,0x0,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xf0,0x40,0x40,0x40,0x48,0x0,
-+0x0,0x27,0x64,0xa4,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x20,0x24,0x24,0x23,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0xc4,0x0,
-+0x0,0x23,0x64,0xa4,0x24,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0xc4,0x0,
-+0x0,0x27,0x64,0xa4,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0xf0,0x10,0x10,0x20,0x40,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x0,
-+0x0,0x23,0x64,0xa4,0x24,0x24,0x22,0x21,0x22,0x24,0x24,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x40,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0xc4,0x0,
-+0x0,0x23,0x64,0xa4,0x24,0x24,0x24,0x24,0x23,0x20,0x20,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x20,0xc4,0x0,
-+0x0,0x38,0x45,0x45,0x5,0x5,0x5,0x19,0x21,0x41,0x41,0x41,0x45,0x45,0x7c,0x0,0x0,0xe0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xe4,0x0,
-+0x0,0x40,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x40,0x0,0x0,0x4,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x0,
-+0x0,0x40,0x87,0x88,0x88,0x80,0x80,0x80,0x80,0x83,0x84,0x88,0x88,0x8f,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x42,0x42,0x82,0x2,0x2,0x42,0x42,0xc2,0x4,0x0,
-+0x0,0x40,0x87,0x88,0x88,0x80,0x80,0x83,0x80,0x80,0x80,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x82,0x2,0x82,0x42,0x42,0x42,0x42,0x82,0x4,0x0,
-+0x0,0x41,0x82,0x82,0x82,0x84,0x84,0x88,0x88,0x8f,0x80,0x80,0x80,0x80,0x40,0x0,0x0,0x84,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xe2,0x82,0x82,0x82,0x82,0x4,0x0,
-+0x0,0x40,0x8f,0x88,0x88,0x88,0x8b,0x8c,0x88,0x80,0x80,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0xc2,0x2,0x2,0x2,0x82,0x42,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0,
-+0x0,0x40,0x87,0x88,0x88,0x88,0x88,0x8b,0x8c,0x88,0x88,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x2,0x2,0x82,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0,
-+0x0,0x40,0x8f,0x88,0x88,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x40,0x0,0x0,0x4,0xe2,0x22,0x22,0x42,0x82,0x82,0x82,0x2,0x2,0x2,0x2,0x2,0x4,0x0,
-+0x0,0x40,0x87,0x88,0x88,0x88,0x88,0x87,0x88,0x88,0x88,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x42,0x82,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0,
-+0x0,0x40,0x87,0x88,0x88,0x88,0x88,0x88,0x87,0x80,0x80,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x42,0xc2,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0,
-+0x0,0x40,0x88,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x88,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x40,0x0,0x0,0x4,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x4,0x0,
-+0x0,0x40,0x91,0x92,0x92,0x90,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0x22,0xc2,0x2,0x2,0x12,0x12,0xf2,0x4,0x0,
-+0x0,0x40,0x91,0x92,0x92,0x90,0x90,0x90,0x90,0x90,0x90,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x22,0xc2,0x22,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x90,0x90,0x90,0x90,0x91,0x91,0x92,0x92,0x93,0x90,0x90,0x90,0x40,0x0,0x0,0x4,0x62,0xa2,0xa2,0xa2,0x22,0x22,0x22,0x22,0xfa,0x22,0x22,0x22,0x4,0x0,
-+0x0,0x40,0x93,0x92,0x92,0x92,0x92,0x93,0x92,0x90,0x90,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xf2,0x2,0x2,0x2,0xe2,0x12,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x91,0x92,0x92,0x92,0x92,0x92,0x93,0x92,0x92,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x2,0x2,0xe2,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x93,0x92,0x92,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x40,0x0,0x0,0x4,0xf2,0x12,0x12,0x22,0x42,0x42,0x42,0x82,0x82,0x82,0x82,0x82,0x4,0x0,
-+0x0,0x40,0x91,0x92,0x92,0x92,0x92,0x91,0x92,0x92,0x92,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0xe2,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x91,0x92,0x92,0x92,0x92,0x92,0x91,0x90,0x90,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0x32,0xd2,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x9c,0xa2,0xa2,0x82,0x82,0x84,0x88,0x90,0xa0,0xa2,0xa2,0xbe,0x40,0x0,0x0,0x4,0x72,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x72,0x4,0x0,
-+0x7,0x18,0x20,0x41,0x41,0x81,0x81,0x81,0x81,0x81,0x41,0x41,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0x4,0x4,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x80,0x80,0x81,0x82,0x84,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x42,0x82,0x2,0x2,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x80,0x80,0x83,0x80,0x80,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0xc2,0x2,0xc2,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x43,0x45,0x85,0x85,0x89,0x89,0x8f,0x41,0x41,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0x4,0x4,0x2,0x2,0x2,0x2,0xc2,0x4,0x4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x87,0x80,0x80,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x4,0x2,0x2,0xc2,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x87,0x84,0x84,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x2,0x2,0xc2,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x80,0x80,0x80,0x81,0x81,0x41,0x41,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x82,0x82,0x2,0x2,0x4,0x4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x83,0x84,0x84,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x42,0x82,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x87,0x80,0x80,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x42,0xc2,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x4b,0x4a,0x8a,0x8a,0x8a,0x8a,0x8a,0x4a,0x4b,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xe4,0x24,0x22,0x22,0x22,0x22,0x22,0x24,0xe4,0x8,0x30,0xc0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x20,0x40,0x80,0x80,0x80,0x80,0xbf,0x80,0x80,0x80,0x80,0x80,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x2,0x12,0xfa,0x2,0x2,0x2,0x2,0x2,0x4,0x8,0x0,
-+0x0,0x20,0x40,0x80,0x9f,0x80,0x80,0x80,0x80,0x80,0xbf,0x80,0x80,0x40,0x20,0x0,0x0,0x8,0x4,0x22,0xf2,0x2,0x2,0x2,0x2,0x12,0xfa,0x2,0x2,0x4,0x8,0x0,
-+0x0,0x20,0x40,0x9f,0x80,0x80,0x80,0x8f,0x80,0x80,0x80,0xbf,0x80,0x40,0x20,0x0,0x0,0x8,0x24,0xf2,0x2,0x2,0x42,0xe2,0x2,0x2,0x12,0xfa,0x2,0x4,0x8,0x0,
-+0x0,0x20,0x40,0x80,0xbf,0xa4,0xa4,0xa4,0xa4,0xa4,0xbf,0x80,0x80,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0xfa,0x4a,0x4a,0x4a,0x4a,0x4a,0xfa,0x2,0x2,0x4,0x8,0x0,
-+0x0,0x20,0x40,0x9f,0x82,0x82,0x82,0x9f,0x84,0x84,0x84,0x84,0xbf,0x40,0x20,0x0,0x0,0x8,0x24,0xf2,0x2,0x2,0x22,0xf2,0x22,0x22,0x22,0x22,0xfa,0x4,0x8,0x0,
-+0x0,0x20,0x40,0x82,0x81,0x80,0xbf,0x80,0x80,0x84,0x84,0x88,0x90,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x12,0xfa,0x2,0x2,0x42,0x22,0x12,0x12,0x4,0x8,0x0,
-+0x0,0x20,0x42,0x82,0x82,0x82,0x82,0x83,0xbe,0x82,0x82,0x82,0x82,0x41,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x12,0x7a,0x82,0x2,0x2,0x2,0x22,0x22,0xe4,0x8,0x0,
-+0x0,0x20,0x40,0x84,0x84,0x84,0x84,0x84,0x88,0x88,0x90,0xa0,0x80,0x40,0x20,0x0,0x0,0x8,0x84,0x82,0x82,0x82,0x82,0x82,0x42,0x22,0x1a,0x12,0x2,0x4,0x8,0x0,
-+0x0,0x20,0x42,0x82,0x82,0x9f,0x82,0x82,0x82,0x84,0x84,0x88,0x90,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x42,0xe2,0x42,0x42,0x42,0x42,0x4a,0x4a,0x3a,0x4,0x8,0x0,
-+0x0,0x20,0x41,0x81,0x81,0x81,0xbf,0x81,0x81,0x81,0x81,0x81,0x81,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x12,0xfa,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x8,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,
-+0x0,0xe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xe,0x0,0x0,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xe0,0x0,
-+0x0,0x3b,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x3b,0x0,0x0,0xb8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xb8,0x0,
-+0x0,0x77,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x1c,0x8,0x8,0x8,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa0,0xa0,0x40,0x40,0x0,
-+0x0,0x70,0x20,0x10,0x10,0x8,0x8,0x8,0x4,0x4,0x4,0x2,0x2,0x1,0x1,0x0,0x0,0x1c,0x8,0x10,0x10,0x20,0x20,0x20,0x40,0x40,0x40,0x80,0x80,0x0,0x0,0x0,
-+0x0,0x71,0x20,0x20,0x20,0x11,0x11,0x11,0x11,0xa,0xa,0xa,0xa,0x4,0x4,0x0,0x0,0xdc,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,
-+0x0,0xe3,0x41,0x41,0x41,0x22,0x22,0x22,0x22,0x14,0x14,0x14,0x14,0x8,0x8,0x0,0x0,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x7e,0x0,
-+0x0,0xe3,0x41,0x41,0x41,0x22,0x22,0x22,0x22,0x14,0x14,0x14,0x14,0x8,0x8,0x0,0x0,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0xfe,0x0,
-+0x0,0xee,0x44,0x42,0x42,0x41,0x40,0x40,0x40,0x40,0x41,0x41,0x42,0x44,0xee,0x0,0x0,0xe,0x4,0x8,0x8,0x10,0xa0,0x40,0xa0,0xa0,0x10,0x10,0x8,0x4,0xe,0x0,
-+0x0,0x70,0x20,0x10,0x8,0x4,0x2,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x70,0x0,0x0,0x1c,0x8,0x10,0x20,0x40,0x80,0x0,0x80,0x80,0x40,0x20,0x10,0x8,0x1c,0x0,
-+0x0,0xe0,0x40,0x20,0x11,0xa,0xa,0x4,0xa,0xa,0x11,0x11,0x20,0x40,0xe0,0x0,0x0,0xee,0x44,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x84,0x44,0xee,0x0,
-+0x0,0xe0,0x40,0x20,0x11,0xa,0xa,0x4,0xa,0xa,0x11,0x11,0x20,0x40,0xe0,0x0,0x0,0xfe,0x54,0x94,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x94,0x54,0xfe,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x3f,0x4,0x4,0x4,0x4,0x3f,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x40,0x40,0x78,0xc0,0x40,0x40,0x40,0x78,0xc0,0x40,0x40,0x40,0x0,0x0,
-+0x0,0x38,0x10,0x8,0x4,0x2,0x2,0x1,0x1,0xf,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x38,0x10,0x20,0x40,0x80,0x80,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x80,0x0,
-+0x0,0x18,0x24,0x24,0x24,0x24,0x24,0x19,0x2,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x60,0x90,0x90,0x90,0x90,0x90,0x60,
-+0x0,0xf,0x10,0x10,0x10,0x10,0xb,0x4,0x1c,0x22,0x41,0x40,0x40,0x21,0x1e,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x70,0x20,0xa0,0x44,0xa4,0x18,0x0,
-+0x10,0x10,0x10,0x20,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x10,0x20,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x40,0x20,0x10,0xc,
-+0x60,0x10,0x8,0x4,0x4,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x1,0x21,0x11,0x9,0x5,0x1,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0x20,0x40,0x0,0x80,0x40,0x20,0x10,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1f,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x1,0x3,0x5,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x0,0x0,0x0,0x3,0x4,0x8,0x10,0x10,0x10,0x1f,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,0x10,0x10,0xf0,0x0,
-+0x0,0xf,0x10,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0xe0,0x10,0x10,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x3f,0x0,0x0,0x3,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xf0,0x80,0x80,0xe0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x0,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x1f,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x2,0x2,0x2,0x0,0x0,0xf0,0x10,0x10,0x20,0x20,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x8,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0xc0,0x20,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x30,0xd0,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x30,0x30,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3,0xc,0x30,0x40,0x30,0xc,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x30,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0xc,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x60,0x18,0x6,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x6,0x18,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x18,0x4,0x18,0x60,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x18,0x24,0x42,0x42,0x4,0x8,0x8,0x8,0x8,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x18,0x20,0x46,0x49,0x48,0x48,0x48,0x49,0x46,0x20,0x18,0x7,0x0,0x0,0x0,0xc0,0x20,0x10,0x90,0x88,0x88,0x88,0x88,0x90,0x90,0x64,0x8,0xf0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0xe0,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x10,0x10,0x20,0xc0,0x20,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0xf,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x20,0xe0,0x20,0x0,0x4,0x4,0xfc,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x20,0xe0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x1f,0x0,0x0,0x0,0x0,0x0,0xd0,0x30,0x10,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x71,0x21,0x22,0x24,0x38,0x24,0x22,0x21,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0xc0,0x60,0x50,0x48,0x44,0x42,0x41,0x40,0x40,0x40,0xe0,0x0,0x0,0x0,0x0,0x0,0x6,0xc,0x14,0x24,0x44,0x84,0x4,0x4,0x4,0x4,0xe,0x0,0x0,0x0,0x0,
-+0x0,0x60,0x30,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x88,0x48,0x28,0x18,0x8,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x11,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x90,0x60,0xc0,0x30,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x24,0x22,0x21,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x80,0x70,0x0,0x0,0x0,0x0,
-+0x0,0xf,0x10,0x20,0x20,0x10,0xf,0x0,0x0,0x20,0x30,0x2f,0x0,0x0,0x0,0x0,0x0,0xe8,0x18,0x8,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x10,0x10,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0xe3,0x41,0x41,0x41,0x22,0x22,0x22,0x14,0x14,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x8e,0x4,0x4,0x4,0x88,0x88,0x88,0x50,0x50,0x20,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x10,0x8,0x4,0x2,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x20,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xe,0x0,0x0,
-+0x0,0x40,0x20,0x10,0x8,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0x8,0x4,0x0,0x0,
-+0x0,0xe0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x2,0x2,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x10,0x10,0x8,0x8,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0xf,0x10,0x0,0xf,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0xc0,0x40,0x50,0xa0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x8,0x8,0xb,0xc,0x8,0x8,0x8,0xc,0xb,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x0,0x0,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x20,0x20,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0xf,0x10,0x10,0x1f,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0xc0,0x0,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x2,0x2,0xf,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x40,0x80,0x0,
-+0x0,0x8,0x8,0x8,0x8,0xb,0xc,0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x8,0x8,0x8,0x9,0xa,0xd,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1a,0xd,0x9,0x9,0x9,0x9,0x9,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x30,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1b,0xc,0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1b,0xc,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3,0x4,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x20,0x30,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x5,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x8,0x7,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x80,0x40,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x2,0x2,0xf,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0xc,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x11,0x9,0x9,0xa,0xa,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x20,0xa0,0xa0,0x40,0x40,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x4,0x2,0x1,0x1,0x2,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0xf,0x8,0x0,0x1,0x2,0x4,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x40,0x80,0x0,0x0,0x40,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x4,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x40,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x4,0x4,0x25,0x1e,0x4,0x7,0xc,0x14,0x23,0x22,0x25,0x18,0x0,0x0,0x0,0x0,0x0,0x20,0xc0,0x0,0x80,0xe0,0x90,0x88,0x8,0x8,0x10,0x20,0xc0,
-+0x4,0x4,0x4,0x47,0x3c,0x4,0x4,0x1f,0x24,0x42,0x42,0x41,0x22,0x1c,0x0,0x0,0x0,0x0,0x60,0x80,0x0,0x40,0x40,0xf0,0x48,0x84,0x84,0x4,0x84,0x8,0x30,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x10,0x18,0x10,0x10,0x10,0x10,0x11,0xa,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x8,0x18,0x10,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x20,0x30,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x14,0xc,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x8,0x4,0x4,0xc,0x8,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0xf,0x1,0x2,0x0,0x11,0xe,0x0,0x0,0x0,0x0,0x1,0x2,0xc,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0xc0,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0xf,0x0,0x1,0x0,0x21,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x0,0x0,0x80,0x40,0x80,0x0,0xe0,0x10,0x10,0x10,0x10,0x20,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x0,0x1,0x0,0x3,0x1c,0x1,0x3,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0xc0,0x80,0x0,0x0,0x80,0x80,0x40,0x38,0x0,
-+0x0,0xf,0x0,0x1,0x0,0x3,0x3c,0x1,0x2,0x3,0x4,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x80,0x0,0x0,0xc0,0x80,0x0,0x0,0x80,0x80,0x80,0x80,0x40,0x3c,0x0,
-+0x0,0x0,0x0,0x4,0x4,0x4,0x3f,0x4,0x7,0x4,0xc,0x14,0x34,0x15,0x8,0x0,0x0,0x0,0x0,0x0,0x10,0x8,0x4,0x8,0xe0,0x10,0x8,0x8,0x8,0x30,0xc0,0x0,
-+0x0,0x4,0x4,0x7,0x3c,0x4,0x5,0x6,0xc,0x14,0x24,0x64,0x35,0xc,0x4,0x0,0x0,0x0,0x10,0x88,0x4,0x18,0xc0,0x20,0x10,0x8,0x8,0x8,0x10,0xe0,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x2,0x43,0x3c,0x4,0x4,0x4,0x8,0x8,0x10,0x22,0x41,0x0,0x0,0x0,0x0,0x20,0x10,0xc8,0x44,0x54,0x4c,0x40,0x40,0x80,0x80,0x80,0x0,0x0,
-+0x0,0x4,0x4,0x4,0x4,0x87,0x78,0x8,0x8,0x8,0x10,0x11,0x21,0x45,0x82,0x0,0x8,0x4,0x12,0x48,0x24,0x90,0x88,0xa8,0x98,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x2,0x3,0x1d,0x0,0x3,0x1c,0x0,0x3,0x0,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x60,0x80,0x0,0xe0,0x80,0x40,0x40,0xe0,0x20,0x0,0x0,0x0,0xc0,0x0,
-+0x4,0x4,0x4,0x7,0x3a,0x1,0x7,0x38,0x0,0x7,0x0,0x20,0x20,0x10,0xf,0x0,0x0,0x8,0xc4,0x12,0x8,0xc4,0x0,0x80,0x80,0xc0,0x40,0x0,0x0,0x0,0x80,0x0,
-+0x0,0x1,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x8,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,
-+0x0,0x2,0x1,0x1,0x2,0x4,0x8,0x10,0x20,0x10,0x8,0x4,0x2,0x1,0x1,0x0,0x0,0x8,0x4,0x22,0x10,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x10,0x10,0x20,0x20,0x27,0x40,0x40,0x40,0x50,0x50,0x20,0x20,0x1,0x0,0x0,0x80,0x40,0x40,0x40,0x78,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0,
-+0x0,0x0,0x10,0x10,0x20,0x20,0x27,0x40,0x40,0x40,0x50,0x50,0x20,0x20,0x1,0x0,0x8,0x84,0x52,0x48,0x44,0x70,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0,
-+0x0,0x0,0x10,0xf,0x0,0x3,0x4,0x0,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,
-+0x0,0x0,0x10,0xf,0x0,0x3,0x4,0x0,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x8,0xe4,0x82,0x10,0x8,0x4,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x2,0x3f,0x1,0x0,0x0,0x1,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x30,0xc0,0x0,0x0,0x80,0x40,0xe0,0x20,0x0,0x0,0x0,0x0,0xe0,0x0,
-+0x0,0x4,0x2,0x2,0x3f,0x1,0x0,0x0,0x1,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x8,0x4,0xd2,0x8,0x4,0x80,0x40,0xe0,0x20,0x0,0x0,0x0,0x0,0xe0,0x0,
-+0x0,0x18,0xc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x9,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x0,0x18,0xc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x9,0x6,0x0,0x0,0x10,0x8,0x24,0x10,0x8,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x7f,0x1,0x7,0x9,0x9,0x9,0x6,0x0,0x1,0x1,0x2,0xc,0x0,0x0,0x0,0x0,0xf8,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,
-+0x3,0x1,0x1,0x1,0x7f,0x1,0x7,0x9,0x9,0x9,0x6,0x0,0x1,0x1,0x2,0xc,0x8,0x4,0x12,0x8,0xf4,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x10,0x8,0x8,0xb,0x7c,0x8,0x8,0x8,0x9,0x8,0x8,0x8,0x7,0x0,0x0,0x80,0x40,0x40,0x40,0xfc,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0,0xf0,0x0,
-+0x0,0x0,0x10,0x8,0x8,0xb,0x7c,0x8,0x8,0x8,0x9,0x8,0x8,0x8,0x7,0x0,0x8,0x84,0x52,0x48,0x44,0xf0,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0,0xf0,0x0,
-+0x0,0x10,0xf,0x1,0x2,0x4,0x8,0x1f,0x22,0x44,0x4,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,
-+0x0,0x10,0xf,0x1,0x2,0x4,0x8,0x1f,0x22,0x44,0x4,0x4,0x2,0x1,0x0,0x0,0x8,0x24,0x92,0x8,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,
-+0x0,0x4,0x4,0x47,0x3c,0x9,0x8,0x8,0x10,0x10,0x12,0x22,0x21,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x30,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,
-+0x0,0x4,0x4,0x47,0x3c,0x9,0x8,0x8,0x10,0x10,0x12,0x22,0x21,0x40,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0xe0,0x30,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x3,0x7e,0x4,0x7,0x4,0xc,0x8,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x80,0xc0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0x20,0xc0,0x0,
-+0x0,0x4,0x4,0x5,0x7,0x7c,0x8,0xb,0xc,0x18,0x10,0x0,0x0,0x0,0x0,0x3,0x0,0x8,0x4,0x12,0x88,0x4,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0x20,0xc0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f,0x8,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0x40,0x80,0x0,
-+0x0,0x0,0x0,0x1,0x6,0x78,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0xc,0xf0,0x40,0x0,0x0,0x0,0x0,0x0,0x1,0xe,0x0,0x0,0x8,0x4,0x12,0xc8,0x24,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7f,0x21,0x2,0x4,0x4,0x4,0x4,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x8,0xfc,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7f,0x21,0x2,0x4,0x4,0x4,0x4,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x8,0xfc,0xc0,0x8,0x4,0x12,0x8,0x4,0x0,0x0,0x0,0xf0,0x0,
-+0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x6,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,
-+0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x6,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x8,0x4,0x12,0x8,0x4,0x30,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,
-+0x0,0x0,0xc,0x4,0x7,0x7c,0x24,0x8,0x8,0x10,0x10,0x23,0x44,0x4,0x3,0x0,0x0,0x0,0x20,0x10,0x8,0x18,0x40,0x40,0x40,0x40,0x40,0xe0,0x50,0x48,0x84,0x0,
-+0x0,0x20,0x10,0x10,0x13,0x20,0x20,0x20,0x40,0x4a,0x4a,0x52,0x51,0x60,0x40,0x0,0x0,0x0,0x0,0x1c,0xe8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,
-+0x0,0x2,0x1,0x21,0x11,0x17,0x19,0x11,0x31,0x4a,0x4a,0x44,0x44,0x4a,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x4,0x4,0x4,0x74,0x8c,0x94,0x62,0x0,0x0,
-+0x0,0x10,0x8,0x8,0x8,0x1e,0x69,0xa,0xc,0x18,0x28,0x48,0xa9,0x29,0x18,0x0,0x0,0x0,0x0,0x0,0x60,0x90,0x10,0x10,0x10,0x10,0x10,0xf0,0x18,0x24,0xc2,0x0,
-+0x0,0x0,0x0,0x7,0x19,0x21,0x42,0x42,0x42,0x44,0x44,0x28,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0xc0,0x0,
-+0x0,0x20,0x10,0x10,0x10,0x27,0x20,0x20,0x40,0x48,0x48,0x53,0x54,0x64,0x43,0x0,0x0,0x80,0x40,0x50,0x78,0xc0,0x40,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x20,0x10,0x10,0x10,0x27,0x20,0x20,0x40,0x48,0x48,0x53,0x54,0x64,0x43,0x0,0x8,0x84,0x52,0x48,0x74,0xc0,0x40,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x20,0x10,0x10,0x10,0x27,0x20,0x20,0x40,0x48,0x48,0x53,0x54,0x64,0x43,0x0,0xc,0x92,0x52,0x4c,0x70,0xc0,0x40,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x0,0x2,0x3e,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x20,0x20,0x30,0x28,0x24,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0,
-+0x0,0x0,0x2,0x3e,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x8,0x4,0x12,0x28,0x24,0x30,0x28,0x24,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0,
-+0x0,0x0,0x2,0x3e,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0xc,0x12,0x12,0x2c,0x20,0x30,0x28,0x24,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x1,0x2,0x2,0x1,0x0,0x3,0x4,0x8,0x78,0x26,0x1,0x0,0x0,0x0,0x80,0xc0,0x0,0x0,0x0,0x0,0xe0,0x98,0x84,0x8c,0x90,0x80,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x1,0x2,0x2,0x1,0x0,0x3,0x4,0x8,0x78,0x26,0x1,0x0,0x8,0x4,0x92,0xc8,0x4,0x0,0x0,0x0,0xe0,0x98,0x84,0x8c,0x90,0x80,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x1,0x2,0x2,0x1,0x0,0x3,0x4,0x8,0x78,0x26,0x1,0x0,0xc,0x12,0x92,0xcc,0x0,0x0,0x0,0x0,0xe0,0x98,0x84,0x8c,0x90,0x80,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x18,0x6,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x84,0x40,0x20,0x18,0x6,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x24,0x18,0x80,0x40,0x20,0x18,0x6,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x20,0x17,0x10,0x10,0x20,0x27,0x20,0x40,0x48,0x48,0x51,0x52,0x62,0x41,0x0,0x0,0x70,0xc0,0x40,0x40,0x40,0xf8,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x20,0x17,0x10,0x10,0x20,0x27,0x20,0x40,0x48,0x48,0x51,0x52,0x62,0x41,0x0,0x8,0xe4,0x52,0x48,0x44,0x40,0xf8,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x20,0x17,0x10,0x10,0x20,0x27,0x20,0x40,0x48,0x48,0x51,0x52,0x62,0x41,0x0,0x0,0xec,0x52,0x52,0x4c,0x40,0xf0,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x1,0x1,0x1,0x3f,0x1,0x1,0x1f,0x1,0x1,0x1,0x1d,0x23,0x21,0x1e,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x0,
-+0x0,0x0,0x13,0xc,0x0,0x1,0x1,0x1,0x2,0x1a,0x27,0x44,0x48,0x30,0x0,0x1,0x0,0x0,0x80,0x80,0x80,0x0,0x10,0x10,0x10,0x10,0xa0,0x70,0x28,0x44,0x80,0x0,
-+0x0,0x8,0x4,0x4,0x7,0x7c,0x4,0x1c,0x24,0x24,0x24,0x1c,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x90,0xc8,0x4,0xc,0x10,0x0,0x0,0x10,0x10,0x10,0x18,0xf0,0x0,
-+0x0,0x1,0x10,0x10,0x10,0x1f,0x11,0x29,0x45,0x42,0x45,0x48,0x30,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0xc0,0x20,0x10,0x8,0x8,0x8,0x10,0x10,0x20,0xc0,0x0,
-+0x2,0x2,0x2,0x2,0x23,0x1e,0x4,0x4,0x44,0x3f,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x10,0x8,0xc8,0x8,0x8,0x8,0x8,0x8,0xf0,0x0,
-+0x0,0x0,0x2,0x1,0x0,0x0,0x3,0x24,0x1f,0x2,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x30,0x48,0x88,0x8,0x8,0x70,0x0,0x80,0x80,0x40,
-+0x0,0x2,0x1,0x0,0x6,0x9,0x10,0x11,0x7e,0x8,0x8,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x80,0x40,0x40,0x80,0x30,0xc8,0x4,0x4,0x88,0x70,0x0,0x0,0x0,0x80,
-+0x0,0x0,0x0,0x1,0x0,0x0,0x11,0x12,0x14,0x14,0x18,0x1a,0x11,0x10,0x1,0x2,0x0,0x0,0x0,0x0,0x80,0x80,0xe0,0x90,0x88,0x88,0x88,0x88,0x90,0xe0,0x0,0x0,
-+0x0,0x0,0x10,0x10,0x10,0x11,0x22,0x24,0x24,0x24,0x28,0x2a,0x31,0x10,0x0,0x3,0x0,0x80,0x40,0x40,0xf8,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x58,0xe0,0x80,0x0,
-+0x0,0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xf,0x11,0x11,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0xc0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x0,0x0,
-+0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1f,0x21,0x41,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x10,0x38,0xc0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x4,0x0,
-+0x0,0x1c,0x2,0x2,0x4,0x8,0x10,0x10,0x10,0x13,0x14,0x18,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x30,0xc0,0x0,
-+0x0,0x10,0x8,0x9,0xa,0xa,0x12,0x14,0x14,0x18,0x8,0x0,0x0,0x0,0x1,0x2,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,
-+0x0,0x0,0xf,0x0,0x0,0x0,0x1,0x2,0x7,0x8,0x10,0x3,0x4,0x4,0x3,0x0,0x0,0x40,0xa0,0x20,0x40,0x80,0x0,0xf0,0x8,0x4,0x4,0x84,0x44,0x28,0xf0,0x0,
-+0x0,0x8,0x8,0x8,0xe,0x79,0xa,0xc,0x8,0x18,0x28,0x28,0x68,0x18,0x8,0x0,0x0,0x0,0x20,0x50,0x88,0x8,0x10,0x10,0x10,0x10,0x10,0x12,0x14,0x8,0x0,0x0,
-+0x0,0x3,0x1c,0x0,0x1,0x2,0x4,0xf,0x18,0x20,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xc0,0x40,0x80,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0x10,0x60,0x80,0x0,
-+0x0,0x0,0x8,0x4,0x4,0x7,0x3c,0x7,0xc,0x14,0x24,0x34,0xc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,
-+0x0,0x10,0x8,0x8,0x4f,0x38,0xb,0xc,0x8,0x18,0x28,0x48,0x68,0x18,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x18,0x4,0x4,0x4,0x4,0x8,0x10,0x60,0x0,
-+0x0,0x0,0x3,0x1c,0x0,0x1,0x1,0x3,0xf,0x12,0x22,0x44,0x38,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0xf0,0x8,0x4,0x4,0x64,0x94,0x88,0x70,0x0,
-+0x0,0xf,0x0,0x1,0x3,0x6,0x8,0x13,0x24,0x3,0x2,0x4,0x18,0x26,0x41,0x0,0x0,0xc0,0x80,0x0,0xe0,0x10,0x10,0x90,0xa0,0xc0,0x0,0x0,0x38,0x44,0x88,0x0,
-+0x0,0x2,0x1,0x1,0x1f,0x1,0x2,0x3,0x4,0x8,0x11,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0xe0,0x0,0x8,0xc,0xd0,0x60,0xc0,0x40,0x40,0x40,0x0,0xf8,0x0,
-+0x0,0x2,0x1,0x1,0x1,0x2,0x2,0x2,0x3,0x2,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x22,0x22,0x24,0x24,0x18,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x1f,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0xf0,0x10,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x3f,0x0,0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x0,0x0,0x0,0xf8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1,0x3,0x5,0x9,0x11,0x21,0x1,0x1,0x1,0x1,0x1,0x0,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1,0x11,0x1f,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x3,0xc,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x21,0x3f,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x0,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x1f,0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x1,0x1,0x3f,0x3,0x5,0x9,0x11,0x21,0x1,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x42,0x1,0x0,0x0,0x80,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x3f,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x21,0x40,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,
-+0x0,0x2,0x2,0x2,0x3f,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x21,0x40,0x0,0x8,0x4,0x12,0x8,0xe4,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,
-+0x0,0x8,0x8,0x4,0x4,0x3f,0x2,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x70,0x80,0x80,0x40,0x40,0x20,0x20,0x0,
-+0x0,0x8,0x8,0x4,0x4,0x3f,0x2,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0xe4,0x0,0x0,0x0,0x70,0x80,0x80,0x40,0x40,0x20,0x20,0x0,
-+0x0,0x2,0x2,0x2,0x3,0x4,0x4,0x8,0x10,0x20,0x0,0x1,0x2,0xc,0x30,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x3,0x4,0x4,0x8,0x10,0x20,0x0,0x1,0x2,0xc,0x30,0x0,0x8,0x4,0x12,0x8,0xe4,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x8,0xf,0x10,0x20,0x41,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x10,0xf8,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x8,0xf,0x10,0x20,0x41,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x0,0x8,0x4,0x12,0x8,0xf4,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x20,0x20,0xf0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x24,0xf0,0x20,0x20,0x20,0x40,0xe0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x7f,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x1,0x0,0x0,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x80,0x80,0x0,0x0,
-+0x0,0x0,0x0,0x8,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0x9,0x1,0x2,0x0,0x8,0x4,0x92,0x88,0x84,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x18,0x4,0x2,0x30,0x8,0x4,0x0,0x0,0x1,0x2,0x24,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x18,0x4,0x2,0x30,0x8,0x4,0x0,0x0,0x1,0x2,0x24,0x18,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x1,0x3,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x40,0x40,0x80,0x0,0x0,0x80,0x40,0x30,0x10,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x1,0x3,0x4,0x8,0x10,0x20,0x0,0x8,0x4,0x12,0x8,0xe4,0x20,0x40,0x40,0x80,0x0,0x80,0x40,0x20,0x18,0x8,0x0,
-+0x0,0x4,0x4,0x4,0x4,0x7,0x7c,0x4,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x40,0x80,0x0,0x0,0x0,0x20,0xf0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x7,0x7c,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0xe0,0x20,0x40,0x80,0x0,0x0,0x20,0xf0,0x0,0x0,
-+0x0,0x0,0x0,0x20,0x10,0x8,0xc,0x4,0x0,0x0,0x0,0x1,0x2,0xc,0x30,0x0,0x0,0x0,0x20,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x18,0x8,0x0,0x0,0x1,0x2,0x4,0x18,0x60,0x8,0x4,0x12,0x48,0x24,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x4,0x7,0x4,0x8,0x8,0x10,0x24,0x2,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0xf,0x8,0x10,0x10,0x20,0x49,0x5,0x2,0x5,0x8,0x30,0xc0,0x0,0x8,0x4,0x52,0xe8,0x44,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x1f,0x1,0x1,0x7f,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x0,0x0,0x20,0xf0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x3e,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x8,0x4,0x52,0xe8,0x4,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x4,0x3,0x21,0x18,0x8,0x0,0x0,0x0,0x1,0x6,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x2,0x21,0x11,0x8,0x8,0x0,0x0,0x1,0x2,0x4,0x8,0x30,0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x8,0x4,0x42,0x22,0x10,0x10,0x0,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x8,0x4,0x12,0x28,0x24,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1f,0x0,0x0,0x0,0x7f,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x0,0x20,0xf0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x8,0x4,0x92,0xc8,0x4,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x6,0x5,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x4,0x4,0x4,0x6,0x5,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x0,0x80,0x60,0x20,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1f,0x0,0x0,0xc,0x2,0x1,0x0,0x0,0x1,0x2,0x4,0x8,0x30,0x0,0x0,0x10,0xf8,0x10,0x20,0x20,0x40,0x40,0x80,0xc0,0x30,0x10,0x0,0x0,0x0,0x0,
-+0x2,0x1,0x0,0x0,0x1f,0x0,0x1,0x3,0x5,0x9,0x11,0x21,0x1,0x1,0x1,0x0,0x0,0x80,0x80,0x0,0xc0,0x80,0x0,0x0,0x40,0x30,0x10,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0x20,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x10,0x8,0x8,0xc,0x4,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x44,0x20,0x10,0x10,0x8,0x8,0xc,0x4,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0xc,0x12,0x12,0x4c,0x20,0x10,0x10,0x8,0x8,0xc,0x4,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x8,0x8,0x8,0x8,0x9,0xe,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x60,0x80,0x0,0x0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x20,0x20,0x21,0x21,0x26,0x38,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0xc0,0x0,0x0,
-+0x0,0x0,0x0,0x20,0x20,0x21,0x21,0x26,0x38,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x0,0xc,0x12,0x12,0xc,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0xc0,0x0,0x0,
-+0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x20,0xf0,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x8,0x4,0x12,0x48,0xe4,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0xc,0x12,0x52,0xec,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x43,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x43,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x0,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x43,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x12,0x12,0xc,0x0,0x0,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x1,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x20,0x10,0x8,0x8,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x5,0x2,0x0,0x8,0x4,0x12,0x8,0x4,0x8,0xfc,0x0,0x0,0x20,0x10,0x8,0x8,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x5,0x2,0x0,0xc,0x12,0x12,0xc,0x0,0x8,0xfc,0x0,0x0,0x20,0x10,0x8,0x8,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x6,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x20,0x20,0x40,0x80,0x80,0x40,0x40,0x0,0x0,0x0,
-+0x0,0x0,0xe,0x1,0x0,0x0,0x1c,0x3,0x0,0x0,0x1c,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x20,0x0,0x0,0xc0,0x40,0x0,0x80,0x60,0x20,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x2,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x3f,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0xf8,0x8,0x8,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x4,0x2,0x1,0x0,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x20,0x10,0x20,0x20,0x40,0x80,0x80,0x60,0x20,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x3,0x3e,0x2,0x2,0x3,0x7e,0x2,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x40,0xe0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x5,0x3e,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x10,0x20,0x0,0x80,0x80,0x40,0x20,
-+0x0,0x10,0x8,0x8,0x4,0x5,0x7e,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x10,0x20,0x0,0x80,0x80,0x40,0x40,0x20,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x40,0x48,0xfc,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x20,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x0,0x0,0x1f,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x3f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0,
-+0x0,0x0,0xf,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x6,0x18,0x0,0x0,0x40,0xe0,0x0,0x10,0xf8,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x1,0x1,0x2,0x4,0x8,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x84,0x88,0x90,0xa0,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x20,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x40,0x40,0xe0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x10,0x1f,0x10,0x10,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x20,0x3f,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1f,0x9,0x9,0x9,0x9,0x7f,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0xe0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x0,0x2,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x80,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0xf8,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x10,0x8,0x6,0x2,0x0,0x0,0x0,0x1,0x2,0x24,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x2,0x22,0x3f,0x20,0x20,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x0,0x8,0x4,0x12,0x28,0xf4,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x1,0x1,0xf,0x1,0x1,0x2,0x2,0x2,0x5,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x7,0x8,0x10,0x21,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0xe0,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0xe0,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x10,0x10,0x20,0xc0,0x20,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x10,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0x10,0x8,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x40,0xc0,0x40,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x20,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x28,0x2f,0x28,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x28,0xe8,0x28,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x71,0x21,0x22,0x24,0x28,0x38,0x24,0x22,0x21,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x60,0x30,0x30,0x28,0x28,0x24,0x24,0x22,0x22,0x21,0x70,0x0,0x0,0x0,0x0,0x0,0xc,0x18,0x18,0x28,0x28,0x48,0x48,0x88,0x88,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x60,0x30,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x88,0x48,0x28,0x18,0xc,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x10,0x10,0x0,0x4,0x7,0x4,0x0,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x20,0xe0,0x20,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x10,0x8,0x4,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x41,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x6,0x9,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x40,0xa0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0xf,0x11,0x21,0x21,0x21,0x11,0xf,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0xe0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x43,0x21,0x11,0x11,0x11,0x11,0xf,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x84,0x8,0x10,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x10,0x48,0x44,0x7c,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x10,0x24,0x44,0x7c,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0x40,0xd0,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x0,0x0,0x80,0x40,0x40,0x80,0x0,0xc0,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0xc,0x12,0x22,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x4,0x2,0x1,0x2,0x4,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x4,0x4,0x2,0x1,0x2,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x0,0x80,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x4,0x4,0x3,0x2,0x4,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x3,0x0,0x0,0x0,0x40,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0xc0,0x0,
-+0x0,0x0,0x0,0x1,0xa,0x14,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,
-+0x0,0x3,0x4,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x18,0x8,0x8,0xd,0xa,0x9,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x40,0x80,0x0,0x0,0x0,0x80,0x40,0x70,0x0,0x0,0x0,0x0,
-+0x4,0xa,0x2,0x1,0x1,0x1,0x3,0x2,0x2,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x50,0x50,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xd0,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x18,0x8,0x4,0x4,0x4,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x8,0x7,0x8,0x8,0x7,0x4,0x8,0x8,0x8,0x7,0x0,0x2,0x1,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0xc0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x24,0x4,0x4,0x4,0x4,0x4,0x8,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x40,0x40,0x40,0x40,0x40,0x40,0x50,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x18,0x14,0x13,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x9,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x8,0x14,0x4,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x7,0x9,0x11,0x11,0x11,0x11,0x11,0x9,0x7,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x14,0x4,0x2,0x2,0x1,0x1,0x2,0x4,0x8,0x8,0x10,0x0,0x0,0x0,0x0,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x80,0x80,0x40,0x50,0x20,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x11,0x29,0x9,0x9,0x9,0x9,0x9,0x9,0x7,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x4,0x8,0x11,0x11,0x11,0x11,0x11,0xa,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0xe0,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x3f,0x20,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x8,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x20,0xe0,0x20,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x8,0x0,0x7f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x20,0x0,0xf8,0x8,0x8,0x20,0xe0,0x20,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x33,0x49,0x9,0x5,0x3,0x5,0x9,0x9,0x11,0x11,0x63,0x0,0x0,0x0,0x0,0x0,0x98,0x24,0x20,0x40,0x80,0x40,0x20,0x20,0x10,0x10,0x8c,0x0,0x0,0x0,0x0,
-+0x0,0x17,0x18,0x10,0x0,0x0,0x1,0x0,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x20,0x23,0x24,0x28,0x30,0x20,0x60,0x0,0x0,0x0,0x0,0x0,0xc,0x8,0x18,0x28,0xc8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x4,0x74,0x23,0x20,0x20,0x20,0x23,0x24,0x28,0x30,0x20,0x60,0x0,0x0,0x0,0x0,0x40,0x4c,0x88,0x18,0x28,0xc8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x21,0x22,0x3c,0x22,0x21,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x38,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x30,0x28,0x28,0x24,0x24,0x22,0x21,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x18,0x28,0x28,0x48,0x48,0x88,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0xf,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xd0,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x41,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x1c,0x8,0x8,0x4,0x4,0x2,0x1,0x0,0x1,0x12,0xc,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1f,0x21,0x41,0x41,0x41,0x21,0x1f,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0xf0,0x8,0x4,0x4,0x4,0x8,0xf0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x4,0x4,0x0,0x0,
-+0x0,0x38,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x10,0x30,0xd0,0x10,0x10,0x10,0x38,0x0,0x0,0x0,0x0,
-+0x0,0x73,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x7f,0x0,0x0,0x0,0x0,0x0,0x9c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x0,0x73,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x7f,0x0,0x0,0x0,0x0,0x0,0x9c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xfc,0x4,0x4,0x0,0x0,
-+0x0,0x3e,0x24,0x4,0x4,0x7,0x4,0x4,0x4,0x4,0x4,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x4,0x4,0x4,0x8,0xf0,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x88,0x48,0x48,0x48,0x88,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x1c,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x2f,0x30,0x20,0x0,0x0,0x1,0x0,0x0,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x4,0x4,0xfc,0x4,0x4,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x71,0x22,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x22,0x71,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0xf0,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x4,0x8,0x8,0x4,0x3,0x0,0x3,0x4,0x8,0x38,0x0,0x0,0x0,0x0,0x0,0xfc,0x8,0x8,0x8,0x8,0xf8,0x88,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x0,0xf,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0xc0,0x40,0x40,0xd0,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x17,0x18,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x20,0xc0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x1f,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xf0,0x10,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x1f,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x0,0x7,0x8,0x10,0x10,0x1f,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x20,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x33,0x9,0x9,0x5,0x7,0x9,0x9,0x11,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x98,0x20,0x20,0x40,0xc0,0x20,0x20,0x10,0x88,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0xb,0xc,0x8,0x0,0x1,0x0,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0xc0,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x3,0x38,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x30,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x70,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x9,0xe,0x9,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x80,0x80,0x0,0x0,0x0,0x80,0x90,0x60,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0xf,0x4,0x4,0x4,0x4,0x4,0x14,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x38,0x10,0x18,0x14,0x12,0x12,0x11,0x10,0x38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x30,0x50,0x90,0x90,0x10,0x10,0x38,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0xb,0x1c,0x8,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x0,0x0,0x0,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x11,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x4,0x4,0x4,0x2,0x1,0x1,0x2,0x14,0x8,0x0,0x0,0x0,0x0,0x70,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0xd,0x13,0x11,0x11,0x11,0x11,0x13,0xd,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x60,0x90,0x10,0x10,0x10,0x10,0x90,0x60,0x0,0x0,0x80,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xf0,0x10,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x40,0x40,0xc0,0x40,0x40,0x40,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3b,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3b,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x8,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3c,0x28,0x8,0x8,0xf,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x10,0x90,0x90,0x90,0x38,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x0,0x0,0x1,0x0,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0xe0,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x38,0x11,0x12,0x12,0x1e,0x12,0x12,0x11,0x38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x4,0x4,0x4,0x3,0x1,0x2,0xa,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x7,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x2,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x1,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x0,0x7,0x0,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x2,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x1,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x3,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x4,0x0,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x7,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x2,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x1,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0xf,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x2,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0x8,0x5,0x2,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0xf,0x0,0x2,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0xe0,0x0,0x80,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x0,0x2,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x4,0x2,0x1,0x0,0x2,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x2,0x1,0x0,0x0,0x2,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x2,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x4,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x40,0x80,0x0,
-+0x0,0x0,0x1,0x2,0x0,0x1a,0xd,0x9,0x9,0x9,0x9,0x9,0x9,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x2,0x0,0xd,0x6,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x1,0x0,0xd,0x6,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0xd,0x6,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,
-+0x0,0x4,0x4,0x8,0x1f,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3,0xc,0x30,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0x10,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x3f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,
-+0x0,0x4,0x4,0x8,0x1f,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x11,0x20,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,
-+0x0,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x2,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x8,0x0,0x0,
-+0x0,0x0,0x3f,0x0,0x0,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0xc0,0x40,0x80,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,
-+0x0,0x1,0x9,0x9,0x11,0x1f,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x50,0x20,
-+0x0,0x0,0x2,0x2,0x4,0x4,0x8,0x8,0x11,0x8,0x8,0x4,0x4,0x2,0x2,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x80,0x40,0x40,0x20,0x20,0x0,
-+0x0,0x0,0x7f,0x2,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x20,0xa0,0x40,
-+0x0,0x0,0x3f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x9,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x0,
-+0x0,0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x11,0x1f,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0xf0,0x0,0x0,0x0,0xfc,0x0,0x0,
-+0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x11,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x0,0x40,0x80,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1f,0x0,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0xf8,0x8,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0xf,0x8,0x8,0x8,0xa,0x9,0x8,0x8,0x8,0x8,0x8,0xf,0x0,0x0,0x0,0x0,0xe0,0x20,0x20,0x20,0x20,0x20,0xa0,0x20,0x20,0x20,0x20,0xe0,0x0,0x0,
-+0x0,0x0,0x3f,0x4,0x4,0x4,0x4,0x4,0x4,0x5,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x7f,0x4,0x4,0x4,0xf,0x0,0x0,0x0,0x0,0x0,0x2,0x1,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0xf0,0x10,0x10,0x20,0x20,0x40,0x80,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0xf0,0x8,0x0,0x0,
-+0x0,0x10,0x8,0x4,0x2,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x7f,0x1,0x1,0x1,0xf,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x7f,0x1,0x1,0xf,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,
-+0x0,0x0,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0x8,0x9,0x8,0x7,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0xfc,0x40,0x40,0x40,0x80,0x80,0x0,0x0,0xf0,0x0,0x0,
-+0x0,0x0,0x7f,0x9,0x9,0x11,0x1f,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x0,
-+0x0,0x0,0x1c,0x4,0x4,0x4,0x2,0x2,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x18,0x0,
-+0x0,0x2,0x2,0x4,0x4,0x8,0x8,0x1f,0x1,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x40,0x20,0xf0,0x10,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x0,0x0,0x4,0x2,0x1,0x0,0x0,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0xf0,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x40,0x20,0x0,0x0,0x0,
-+0x0,0x3f,0x8,0x8,0x8,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x20,0x20,0x40,0x40,0xf8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,
-+0x0,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x10,0x10,0x20,0x0,
-+0x0,0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0x2,0x4,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7c,0x0,
-+0x0,0x0,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x84,0x7c,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x8,0x4,0x2,0x1,0x0,0x0,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x40,0x20,0x10,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x78,0x88,0x8,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x73,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9c,0x9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x80,0x80,0x80,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x80,0x80,0x80,0x0,0x80,0x80,0x80,0x0,0x80,0x80,0x80,0x0,0x80,0x80,0x80,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x3,0x3,0x3,0x3,0x3,0x3,0x7f,0x7f,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x8,0x8,0x8,0x8,0x8,0x9,0x8,0xff,0x9,0x9,0x8,0x8,0x8,0x9,0xe,0x8,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0xfe,0x0,0x0,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x20,0x20,0x20,0x27,0xfc,0x24,0x24,0x27,0x24,0x24,0x3c,0xe6,0x45,0x4,0x8,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x90,0x30,0x4a,0x8a,0x6,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x0,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x0,0x0,0x0,0x3,0x4,0x8,0x10,0x10,0x10,0x1f,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,0x10,0x10,0xf0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2f,0xf9,0xa9,0xaa,0xaa,0xac,0xaa,0xaa,0xa9,0xe9,0xad,0xa,0x8,0x8,0x8,0x4,0x7e,0x4,0x4,0x14,0x7c,0x54,0x54,0x54,0x54,0x74,0x54,0x4,0x4,0x14,0xc,
-+0x0,0x7f,0x44,0x48,0x48,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x40,0x40,0x40,0x4,0xfe,0x8,0x8,0x28,0xf8,0x28,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x11,0x13,0xfc,0x11,0x11,0x12,0x10,0x17,0x1c,0xf0,0x40,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x10,0x10,0x10,0x11,0xff,0x10,0x11,0x15,0x1a,0x30,0xd7,0x10,0x10,0x10,0x51,0x26,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x0,0x0,0x8,0x7f,0x48,0x48,0x49,0x49,0x48,0x48,0x48,0x78,0x48,0x1,0x2,0x4,0x90,0x90,0x94,0xfe,0x90,0x90,0x8,0x8,0x90,0x90,0x60,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x0,0x8,0x7d,0x4b,0x48,0x49,0x49,0x4a,0x48,0x4f,0x78,0x48,0x0,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x2,0x1,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x5,0xc,0x14,0x24,0xc5,0x6,0x4,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x8,0x90,0x60,0x30,0xe,0x4,0x0,
-+0x10,0x10,0x25,0x7f,0x45,0x44,0x45,0x7c,0x44,0x45,0x45,0x45,0x7d,0x45,0x0,0x0,0x20,0x20,0x24,0x24,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x93,0x52,0x53,0x10,0x37,0x54,0xd7,0x10,0x24,0x24,0x47,0x4,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xbc,0xa4,0xbc,0x40,0x44,0x44,0xfc,0x4,
-+0x8,0xff,0x8,0x43,0x32,0x13,0x2,0xf3,0x11,0x13,0x14,0x12,0x16,0x1a,0x13,0x0,0x24,0xfe,0x20,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xa4,0x4,0xd4,0x8,
-+0x20,0x21,0x28,0x3c,0x53,0x90,0x15,0xfe,0x10,0x17,0x10,0x29,0x24,0x44,0x81,0x6,0x18,0xe0,0x40,0x48,0xfc,0xe0,0x5c,0x48,0x40,0xfe,0x90,0x10,0xa0,0x60,0x98,0x8,
-+0x4,0x4,0xff,0x4,0x4,0x0,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x40,0x20,0x20,0x40,0x40,0x80,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x5,0xff,0x11,0x11,0x21,0x24,0x7f,0xa4,0x27,0x25,0x24,0x3c,0x24,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfc,0x10,0xfe,0x10,0x90,0x90,0x10,0x50,0x20,
-+0x0,0x3f,0x11,0x9,0x7f,0x42,0x82,0x7f,0x4,0x7,0xa,0x9,0x10,0x11,0x22,0xc,0x78,0x80,0x10,0x20,0xfe,0x2,0x4,0xf8,0x0,0xf0,0x20,0x40,0x80,0x60,0x1c,0x8,
-+0x4,0x7a,0x49,0x48,0x57,0x60,0x51,0x4a,0x4c,0x4b,0x6a,0x52,0x42,0x42,0x4f,0x40,0x4,0x8,0x10,0x4,0xfe,0xa0,0x10,0x8,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x28,0x28,0xfe,0x29,0x39,0x12,0x7c,0x57,0x54,0x7c,0x11,0xfe,0x10,0x10,0x10,0x13,0x40,0x20,0x0,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x50,0x8c,0x4,
-+0x10,0x1f,0x20,0x5f,0x80,0x3f,0x2,0x3f,0x22,0x4,0xff,0x8,0x19,0x6,0x9,0x30,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x28,0x8,0xf8,0x88,0x8,0xa,0x8a,0x44,
-+0x2,0x1,0x7f,0x40,0x82,0x2,0x2,0xff,0x4,0x8,0x18,0x6,0x1,0x2,0xc,0x30,0x0,0x0,0xfe,0x2,0x4,0x0,0x4,0xfe,0x20,0x20,0x20,0x40,0x80,0x40,0x30,0x10,
-+0x8,0x8,0x8,0x17,0x10,0x31,0x52,0x94,0x1b,0x12,0x13,0x12,0x13,0x12,0x10,0x10,0x40,0x40,0x48,0xfc,0xa0,0x10,0x4e,0x44,0xf8,0x48,0xf8,0x48,0xf8,0x4a,0x42,0x3e,
-+0x10,0x10,0x10,0x13,0xfa,0x14,0x10,0x3f,0xd0,0x10,0x11,0x10,0x10,0x10,0x50,0x23,0x40,0x20,0x0,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x50,0x8c,0x4,
-+0x0,0x8,0x7f,0x48,0x49,0x48,0x4f,0x78,0x4b,0x4a,0x4a,0x4b,0x7a,0x4a,0x3,0x2,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x20,0x2f,0x20,0x20,0x3f,0x20,0x20,0x40,0x80,0x0,0x0,0x8,0x8,0xf8,0x0,0xfc,0x10,0xf8,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x80,
-+0x4,0x3e,0x24,0x25,0x25,0x3e,0x24,0x27,0x24,0x3c,0x25,0x24,0x24,0x44,0x94,0x9,0x40,0x20,0x0,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x50,0x8c,0x4,
-+0x1,0x7f,0x41,0x82,0x7f,0x4,0xc,0x3,0x1c,0x1,0xff,0x5,0x9,0x11,0x61,0x1,0x0,0xfe,0x2,0x4,0xfc,0x20,0x40,0x80,0x70,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x45,0x96,0x8,0x40,0x20,0x4,0xfe,0x10,0xf8,0x90,0x90,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x3f,0x20,0x3f,0x20,0x3f,0x0,0x6,0x78,0x40,0x40,0x40,0x46,0x58,0x60,0x0,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x84,0x84,0x84,0xa4,0x94,0x88,0x80,0x80,
-+0x1,0x1,0x3f,0x21,0x21,0xff,0x2,0xc,0x30,0xc0,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x8,0xfc,0x8,0x8,0xfe,0x80,0x60,0x1e,0x4,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x0,0x0,0x7c,0x44,0x44,0x44,0x44,0x44,0x44,0x47,0x40,0x40,0x40,0x7f,0x40,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x8,0x8,0xa,0x7f,0x8,0x3f,0x8,0xff,0x10,0x1e,0x12,0x22,0x22,0x54,0x89,0x2,0x40,0x40,0x44,0x7e,0x88,0x8,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0xa,0x7f,0x8,0x3e,0x9,0xfe,0x10,0x1e,0x22,0x4a,0x85,0x0,0x24,0x22,0x40,0x40,0x40,0x40,0x44,0xfe,0x8,0x48,0x50,0x20,0x50,0x8e,0x4,0x0,0x88,0x44,0x4,
-+0x10,0x20,0x7d,0x44,0x7c,0x45,0x7c,0x10,0xfe,0x28,0x55,0x92,0x7c,0x10,0x11,0x10,0x0,0x4,0xde,0x44,0x44,0x54,0xcc,0x44,0x44,0xcc,0x54,0x44,0x44,0x44,0x54,0x88,
-+0x20,0x10,0x13,0xfc,0x8,0x10,0x10,0x37,0x58,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x10,0x38,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x12,0x12,0x12,0x2f,0x22,0x6f,0xa2,0x3f,0x24,0x27,0x24,0x24,0x28,0x33,0x20,0x20,0x10,0x10,0x10,0x94,0x3e,0xc4,0x24,0xa8,0x28,0xa8,0x90,0x90,0xa8,0x28,0x46,0x84,
-+0x2,0x4,0x1f,0x11,0x15,0x11,0x1f,0x11,0x15,0x11,0x1,0xff,0x2,0x4,0x18,0x60,0x0,0x10,0xf8,0x10,0x50,0x10,0xf0,0x10,0x50,0x10,0x4,0xfe,0x80,0x60,0x1c,0x8,
-+0x10,0x11,0x17,0x14,0x5d,0x54,0x57,0x94,0x15,0x14,0x10,0x1f,0x10,0x11,0x12,0x1c,0x80,0x4,0xfe,0x44,0x54,0x44,0xfc,0x44,0x54,0x4,0x40,0xfe,0xa0,0x10,0xe,0x4,
-+0x0,0x41,0x37,0x14,0x85,0x64,0x27,0xc,0x15,0x24,0xe0,0x2f,0x20,0x21,0x22,0x2c,0x80,0x4,0xfe,0x44,0x54,0x44,0xfc,0x44,0x54,0x4,0x40,0xfe,0xa0,0x10,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x4,0x1f,0x11,0x11,0x11,0x1f,0x10,0x10,0x10,0x10,0xf,0x0,0x40,0x44,0xfe,0x40,0x50,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x11,0x19,0x37,0xd1,0x11,0x12,0x12,0x15,0x58,0x20,0x44,0xe4,0x44,0x54,0x54,0xd4,0x14,0x54,0xf4,0x54,0x54,0x44,0x44,0x44,0x94,0x8,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x12,0x12,0x12,0x14,0x58,0x20,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x18,0xe,0x4,0x0,
-+0x0,0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x7a,0x4a,0x4,0x8,0x10,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x18,0xe,0x4,0x0,
-+0x0,0x8,0x7f,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4a,0x4a,0x7a,0x4a,0x2,0x1,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0xf8,0x8,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0x80,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0x48,0x7c,0xa0,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x20,0x20,0x10,0x8,0xe,0x4,0x0,
-+0x0,0x0,0x1f,0x10,0x90,0x57,0x54,0x14,0x34,0x57,0xd4,0x14,0x24,0x24,0x43,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x44,0x44,0x44,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x0,0x3f,0x21,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0xfc,0x13,0x10,0x14,0x19,0x31,0xd1,0x12,0x12,0x14,0x14,0x58,0x23,0xa0,0x90,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x8,0x90,0x60,0x20,0x50,0x8e,0x4,
-+0x4,0x7e,0x44,0x44,0x47,0x7c,0x10,0x11,0x5d,0x51,0x52,0x52,0x5c,0x74,0xc8,0x3,0xa0,0x90,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x8,0x90,0x60,0x20,0x50,0x8e,0x4,
-+0x28,0x28,0xff,0x29,0x39,0x11,0x7d,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x15,0xff,0x11,0x7d,0x11,0xff,0x11,0x31,0x39,0x55,0x55,0x91,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0x0,0x0,0x3,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x3f,0x1,0x7f,0x89,0x22,0x7f,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0x7f,0x8,0x9,0xf8,0x0,0xfe,0x24,0x8,0x7c,0x48,0x48,0x78,0x48,0x48,0x78,0x48,0x48,0x88,0x18,
-+0x0,0x3f,0x24,0x24,0x3f,0x1,0x1,0x3f,0x1,0x1,0xff,0x2,0x4,0x8,0x1f,0x0,0x8,0xfc,0x48,0x48,0xf8,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x20,0x10,0xf8,0x8,
-+0x4,0x4,0xc,0x32,0x1,0x2,0xc,0x30,0xdf,0x11,0x11,0x1f,0x10,0x10,0x10,0xf,0x40,0x20,0x58,0x88,0x0,0x80,0x60,0x18,0xf6,0x10,0x10,0xf0,0x10,0x4,0x4,0xfc,
-+0x2,0x4,0x8,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x0,0x20,0x40,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0xff,0x1,0x2,0x4,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x17,0x14,0x14,0xff,0x14,0x10,0x1b,0x30,0xd0,0x1f,0x10,0x11,0x12,0x57,0x20,0x4,0xfe,0xa4,0xa4,0xfc,0x44,0x50,0xf8,0x40,0x44,0xfe,0x80,0x10,0x8,0xfc,0x4,
-+0x8,0x8,0xf,0x10,0x10,0x33,0x52,0x92,0x12,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x0,0x4,0xfe,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x7e,0x44,0x54,0x54,0x55,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x24,0x45,0x82,0x40,0x40,0x44,0x7e,0x88,0x8,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x4,0xe,0x78,0x8,0x8,0x7e,0x8,0x8,0xff,0x8,0x9,0x8,0x10,0x10,0x20,0x40,0x8,0xfc,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x8,0x1c,0xf1,0x11,0x11,0xfd,0x11,0x39,0x35,0x50,0x51,0x97,0x10,0x10,0x10,0x10,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x12,0xf9,0x20,0x2f,0x20,0x24,0xfa,0x21,0x21,0x22,0x22,0x3c,0xe4,0x48,0x0,0x0,0x4,0x7e,0x10,0xd0,0x10,0x90,0xfc,0x10,0x10,0x90,0x50,0x50,0x14,0xfe,0x0,
-+0x1,0x9,0xfd,0x21,0x25,0x25,0x25,0xf5,0x25,0x29,0x21,0x22,0x3a,0xe2,0x44,0x8,0x0,0x4,0x7e,0x10,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x21,0x22,0x27,0x24,0xfe,0x25,0x24,0x2f,0x34,0xe6,0x25,0x24,0x24,0x28,0xb2,0x41,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xc2,0xbc,0xa4,0xa4,0xa4,0x98,0x88,0x94,0xa4,0x42,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x11,0x15,0x19,0x31,0xd1,0x12,0x12,0x14,0x59,0x20,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x8e,0x4,0x0,
-+0x8,0x12,0x3f,0x22,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x22,0x4a,0x85,0x8,0x7c,0x48,0x48,0x48,0x86,0x0,0xfc,0x44,0x48,0x28,0x10,0x30,0x48,0x8e,0x4,
-+0x0,0x2b,0x28,0x24,0x45,0x43,0x85,0x7f,0x25,0x25,0x25,0x25,0x24,0x24,0x4c,0x83,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x12,0x12,0x14,0x19,0x10,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x8e,0x4,0x0,
-+0x8,0x48,0x49,0x49,0x49,0x7d,0x41,0x41,0x79,0x49,0x49,0x4a,0x4a,0x4c,0x89,0x8,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x8e,0x4,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x12,0x1c,0x33,0xd0,0x10,0x10,0x11,0x11,0x52,0x24,0x20,0xa0,0xa0,0x90,0x10,0xe,0x4,0x8,0xfc,0x88,0x88,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x12,0x11,0xfc,0x13,0x14,0x18,0x30,0xd7,0x10,0x10,0x10,0x10,0x50,0x20,0x40,0x40,0x48,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x8,0x8,0xa,0x11,0x10,0x37,0x30,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x40,0x20,0xf8,0x7,0x54,0x55,0xfd,0x25,0x25,0x25,0x3d,0xe5,0x26,0x4b,0x90,0x0,0x10,0x48,0xbe,0x40,0x54,0x54,0x7e,0x48,0x48,0x48,0x7e,0x48,0xa8,0x98,0x8,0x8,
-+0x1,0x21,0x19,0x9,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0x18,0x20,0x0,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x2,0x2,0x3f,0x2,0x2,0x12,0x32,0x22,0x44,0x84,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x30,0x2c,0x26,0x22,0x20,0x20,0xa0,0x40,0x0,
-+0x10,0x10,0x21,0x20,0x44,0xf8,0x11,0x20,0x40,0xfc,0x3,0x0,0x1c,0xe0,0x40,0x0,0x20,0x20,0x24,0xac,0xb0,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x8,0x8,0xa,0xff,0x8,0x8,0x7e,0x8,0xa,0xff,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xa,0xff,0x8,0x7e,0x8,0xff,0x8,0x11,0x3f,0xd1,0x11,0x11,0x11,0x11,0x1,0x0,0x7c,0x48,0x50,0x58,0x44,0x64,0x58,0x50,0xf0,0x10,0x10,0x10,0x50,0x20,0x0,
-+0x11,0x11,0x11,0x17,0xf9,0x11,0x37,0x39,0x55,0x57,0x91,0x11,0x12,0x12,0x14,0x10,0x0,0x3e,0x22,0xe4,0x24,0x28,0xe4,0x24,0x22,0xe2,0x22,0x34,0x28,0x20,0x20,0x20,
-+0x10,0x10,0x11,0x10,0xfc,0x13,0x32,0x38,0x57,0x50,0x90,0x10,0x10,0x11,0x12,0x14,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x8,0x28,0x10,
-+0x8,0x7c,0x49,0x48,0x48,0x7b,0x4a,0x48,0x4f,0x78,0x48,0x48,0x48,0x48,0x89,0x1a,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x88,0x28,0x10,
-+0x11,0x11,0x21,0x27,0x49,0xf1,0x27,0x41,0xf9,0x47,0x1,0x19,0xe2,0x42,0x4,0x0,0x0,0x3e,0x22,0xe4,0x24,0x28,0xe4,0x24,0x22,0xe2,0x22,0x34,0x28,0x20,0x20,0x20,
-+0x10,0x10,0x17,0x10,0xfd,0x10,0x37,0x39,0x55,0x52,0x95,0x10,0x13,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x20,0x50,0x4e,0xf4,0x40,0xf8,0x40,0x40,0x40,
-+0x0,0x8,0xfd,0x10,0x10,0x23,0x22,0x3c,0x67,0xa4,0x24,0x24,0x24,0x3c,0x25,0x2,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x88,0x28,0x10,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x55,0x54,0x7c,0x13,0x14,0x1c,0xe4,0x40,0x0,0x20,0x20,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x11,0x1c,0x20,0x23,0x7e,0x90,0x13,0x7c,0x10,0x10,0x14,0x18,0x11,0x2,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x88,0x28,0x10,
-+0x8,0x8,0xb,0x11,0x10,0x37,0x54,0x90,0x1f,0x11,0x11,0x11,0x11,0x11,0x12,0x14,0x80,0x50,0xf8,0x10,0xa0,0xfc,0x88,0x40,0xfe,0x0,0xf0,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x40,0x37,0x11,0x0,0xf,0xe8,0x20,0x2f,0x21,0x21,0x21,0x29,0x31,0x22,0x4,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x84,0x40,0xfe,0x0,0xf0,0x10,0x10,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x4,0xf,0x10,0x2f,0x48,0x8,0xf,0x8,0x8,0x8,0x7,0x0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x90,0x90,0x90,0x90,0x30,0x4,0x4,0xfc,0x0,
-+0x4,0x3e,0x24,0x25,0x26,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x45,0x94,0x8,0x80,0x88,0xfc,0x8,0x28,0xf8,0x28,0x28,0x28,0xe8,0x28,0x10,0x2,0x2,0xfe,0x0,
-+0x4,0x4,0x4,0xf,0x10,0x20,0x5f,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x10,0xf8,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x30,0x4,0x4,0xfc,0x0,
-+0x2,0x1,0x7f,0x8,0x17,0x14,0x37,0x50,0x9f,0x12,0x14,0x5,0xc,0x14,0x66,0x4,0x0,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x80,0xfc,0xa0,0x90,0x8,0xd0,0x20,0x5c,0x8,
-+0x1,0x7f,0x1,0x3f,0x1,0xff,0x8,0x49,0x29,0x2a,0x1c,0x2a,0xc9,0x8,0x28,0x10,0x4,0x84,0x4,0x24,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x84,0x84,0x14,0x8,
-+0x8,0xff,0x8,0x47,0x20,0x27,0x84,0x4f,0x14,0x27,0xe4,0x20,0x2f,0x22,0x21,0x20,0x20,0xfe,0x50,0xfc,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x10,0xfe,0x10,0x10,0x30,
-+0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0xf,0x10,0x2f,0x48,0xf,0x8,0x8,0x7,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x0,0xf0,0x90,0xd0,0x90,0x90,0xb4,0x4,0xfc,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x32,0x50,0x9f,0x10,0x10,0x11,0x12,0x14,0x18,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x10,0x17,0x14,0x24,0x27,0x60,0xbf,0x21,0x22,0x2c,0x1,0x3f,0x1,0x1,0xff,0x0,0x10,0xf8,0x10,0x10,0xf0,0x80,0xfc,0xc0,0xa0,0x9c,0x80,0xf8,0x0,0x4,0xfe,0x0,
-+0x20,0x20,0x20,0x3c,0x25,0x4a,0x45,0xa1,0x21,0x21,0x21,0x25,0x29,0x31,0x20,0x0,0x80,0x80,0x84,0xfe,0x4,0x14,0xfc,0x14,0x14,0xf4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x0,0x3f,0x1,0x1,0x1f,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0xfe,0x2,0x4,0x10,0xf8,0x0,0x20,0xf0,0x0,0x60,0x20,0x8,0xfc,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x11,0x1d,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x80,0x80,0x84,0xfe,0x4,0x14,0xfc,0x14,0x14,0xf4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x8,0xfc,0x8,0x8,0x28,0x10,0x0,0xf8,0x8,0x90,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x1f,0x10,0x1f,0x10,0x1f,0x4,0x7f,0x4,0xff,0x4,0x9,0x35,0xc3,0x9,0x11,0x3,0xf0,0x10,0xf0,0x10,0xf0,0x40,0xfc,0x40,0xfe,0x40,0x20,0x5e,0x84,0x20,0x10,0x0,
-+0x8,0x10,0x22,0xd4,0x48,0x31,0x2a,0xcc,0x14,0x24,0xcc,0x14,0x64,0x4,0x28,0x10,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x8,0x8,0x1e,0x14,0x28,0x7f,0xaa,0x2a,0x3e,0x2a,0x2a,0x3e,0x0,0xe,0x70,0x20,0x40,0x40,0x44,0x7e,0x84,0x14,0xf4,0x94,0x94,0xf4,0x94,0x88,0x82,0x82,0x7e,0x0,
-+0x13,0x12,0x13,0x16,0x5b,0x51,0x57,0x91,0x1f,0x11,0x12,0x2d,0x28,0x41,0x82,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x10,0xfc,0x10,0xfe,0x10,0x48,0x56,0xe4,0x50,0x48,0xc0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x30,0x38,0x55,0x52,0x94,0x18,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x48,0x46,0x42,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x8,0xfd,0x11,0x11,0x21,0x25,0x3f,0x65,0xa4,0x25,0x27,0x24,0x3c,0x24,0x0,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x4,0xfc,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x0,0x12,0x51,0x50,0x90,0xf,0x0,0x44,0x7e,0x40,0x48,0x7c,0x40,0x44,0x7e,0x40,0x0,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x1,0x2,0x1f,0x11,0x11,0x1f,0x11,0x12,0x1f,0x5,0x9,0xff,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x4,0x4,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0x4,0x4,0x4,0x1c,0xe4,0x44,0x0,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x4,0x7c,0x4,0x7c,0x4,0x7c,0x6,0x4,0x3f,0x9,0x1f,0x1,0xff,0x1,0x1,0x1,0x88,0xfc,0x80,0xfc,0x80,0xfc,0x80,0x10,0xf8,0x0,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x4,0x4,0x7c,0x4,0x1c,0xe4,0x40,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x40,0x44,0x78,0x42,0x42,0x3e,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x2,0x4,0x8,0x30,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0x18,0x8,
-+0x10,0x10,0x11,0x1d,0x21,0x41,0xbd,0x11,0x11,0xfd,0x11,0x11,0x14,0x18,0x11,0x2,0x0,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x50,0x88,0x6,0x2,
-+0x8,0x8,0xf,0x10,0x12,0x31,0x51,0x9f,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x80,0x48,0xfc,0x0,0x18,0x10,0x24,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x44,0x29,0x11,0x29,0x49,0x89,0x9,0x19,0x29,0x49,0x89,0x8,0x8,0x51,0x22,0x0,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x50,0x88,0x6,0x2,
-+0x4,0x7,0x8,0x14,0x23,0x2,0xc,0x30,0xdf,0x11,0x11,0x1f,0x11,0x11,0x1f,0x10,0x0,0xf0,0x20,0x40,0x80,0x80,0x60,0x1e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x8,0xf,0x14,0x12,0x23,0xc,0x30,0xdf,0x11,0x1f,0x11,0x1f,0x2,0x29,0x28,0x47,0x0,0xe0,0x40,0x80,0x80,0x60,0x1e,0xf4,0x10,0xf0,0x10,0xf0,0x0,0x88,0x94,0xf4,
-+0x10,0x10,0x17,0x14,0x5a,0x51,0x51,0x9f,0x10,0x13,0x12,0x2a,0x26,0x46,0x83,0x2,0x80,0x48,0xfc,0x0,0x18,0x10,0x24,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x10,0x10,0x5,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x12,0x12,0x14,0x18,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0x20,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x1,0x1,0x7f,0x2,0x5,0x9,0x37,0xc1,0x9,0x8,0x7f,0x8,0x8,0x8,0x10,0x20,0x0,0x8,0xfc,0x80,0x40,0x30,0xce,0x4,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x4,0xff,0x4,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x2f,0xc1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xee,0x4,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x7f,0x5,0x5,0x5,0x9,0x9,0x11,0x2f,0xc1,0x1,0x1,0x1,0x0,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x20,0x20,0x10,0xee,0x4,0x0,0x0,0x0,
-+0x8,0xa,0x1f,0x28,0x45,0x1,0x7f,0x3,0x5,0x9,0x11,0x2f,0xc1,0x1,0x1,0x1,0x40,0x48,0x7c,0xa0,0x10,0x0,0xfc,0x80,0x40,0x20,0x10,0xee,0x4,0x0,0x0,0x0,
-+0x1,0x21,0x21,0x3f,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x4a,0x85,0x0,0x8,0x8,0xf8,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0xa8,0x10,
-+0x10,0x17,0x24,0x24,0x44,0xff,0x14,0x24,0x44,0xff,0x44,0x4,0x1c,0xe4,0x4a,0x11,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xc4,0x94,0x8,
-+0x0,0xff,0x1,0x7,0x19,0xe1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x41,0x81,0x4,0xfe,0x0,0x60,0x18,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10,
-+0x0,0xff,0x4,0x8,0x1f,0x28,0xc8,0xf,0x9,0x1,0x7d,0x5,0x9,0x11,0x61,0x3,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x8,0x18,0xa0,0x40,0x20,0x1e,0x4,0x0,
-+0x0,0x7a,0x4a,0x4b,0x48,0x7b,0x12,0x12,0x13,0x5a,0x52,0x53,0x5a,0xe2,0x44,0x9,0x40,0x44,0x44,0xfc,0x4,0xbe,0xa4,0xa4,0xbc,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xcc,
-+0x4,0x42,0x21,0x2f,0x2,0x2,0xe2,0x2f,0x22,0x22,0x22,0x22,0x24,0x58,0x8f,0x0,0x10,0x20,0x40,0xf8,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x26,0xfc,0x0,
-+0x0,0x4f,0x20,0x27,0x4,0x4,0xe7,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x50,0x8f,0x0,0x10,0xf8,0x0,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x6,0xfc,0x0,
-+0x1,0x1f,0x12,0x11,0x10,0x1f,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x0,0xff,0x4,0x18,0x10,0xf8,0x10,0x10,0x90,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0x40,
-+0x0,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x26,0x38,0x60,0x0,0x80,0x80,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x82,0x82,0x82,0x7e,0x0,
-+0x2,0x3f,0x22,0x22,0x3e,0x9,0xff,0x8,0x7f,0x41,0x5d,0x55,0x5d,0x41,0x7f,0x41,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xa,0x1f,0x28,0x45,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x1,0x1,0x0,0x20,0x28,0x7c,0xa0,0x10,0x7c,0x80,0x10,0x78,0x80,0x8,0x7c,0x80,0x2,0x2,0xfe,
-+0x8,0x8,0x10,0x13,0x22,0x4a,0x8a,0x12,0x33,0x52,0x93,0x12,0x14,0x14,0x19,0x16,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0x40,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x4,0xfe,0x11,0x7d,0x11,0x1f,0xf1,0x0,0x7f,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x8,0xff,0x9,0x2,0x3f,0x24,0x23,0x24,0x3f,0x0,0x20,0x3e,0x20,0x26,0x78,0x20,0x24,0xfe,0x20,0x10,0xf8,0x90,0x10,0x90,0xf0,0x0,0x88,0x98,0xa0,0xc4,0x84,0x7c,
-+0x4,0x4,0xff,0x4,0x49,0x2a,0xc,0x7f,0x49,0x49,0x5d,0x6b,0x49,0x49,0x41,0x43,0x40,0x44,0xfe,0x40,0x20,0x24,0x3e,0x44,0xa4,0x24,0x24,0x28,0x10,0x28,0x46,0x84,
-+0x20,0x20,0x20,0x3e,0x20,0x22,0x2c,0x70,0x21,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x98,0xe0,0x80,0x84,0x84,0x7c,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x20,0x3e,0x20,0x2e,0x30,0x0,0xff,0x10,0x1e,0x22,0x52,0xc,0x8,0x10,0x60,0x80,0x98,0xe0,0x80,0x88,0x78,0x4,0xfe,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,
-+0x0,0x20,0x24,0x3e,0x20,0x20,0x2e,0x30,0x4,0x12,0x50,0x51,0x96,0x18,0x67,0x0,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,0x40,0x88,0x6,0x12,0x10,0xf0,0x0,
-+0x0,0x3,0x7d,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x1,0x38,0xc0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0,
-+0x1,0x0,0x3f,0x20,0x24,0x24,0x24,0x24,0x27,0x24,0x24,0x24,0x25,0x4e,0x84,0x0,0x0,0x88,0xfc,0x0,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x1,0x0,0x3f,0x20,0xaf,0x68,0x2f,0x28,0x2f,0x60,0xbf,0x24,0x24,0x44,0x88,0x10,0x0,0x88,0xfc,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x0,0xfe,0x10,0x10,0x10,0x10,0x10,
-+0x20,0x1b,0x8,0x40,0x40,0x5f,0x40,0x41,0x42,0x44,0x48,0x50,0x40,0x42,0x41,0x40,0x4,0xfe,0x4,0x84,0xa4,0xf4,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x14,0x8,
-+0x8,0x49,0x2b,0x2c,0x9,0x7f,0x49,0x49,0x5d,0x5b,0x69,0x49,0x49,0x4b,0x40,0x41,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x44,0x48,0x28,0x10,0x28,0x48,0x86,0x4,
-+0x8,0x49,0x2a,0x8,0x7f,0x49,0x5d,0x6b,0x49,0x43,0x8,0xff,0x8,0x8,0x10,0x20,0x20,0x20,0x24,0x3e,0x44,0xc4,0x28,0x10,0x28,0x46,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x2,0x1,0x1,0x1,0x8,0x8,0x48,0x48,0x48,0x89,0xa,0xc,0x18,0x28,0x47,0x0,0x0,0x0,0x20,0x30,0x20,0x40,0x48,0x46,0x82,0x0,0x0,0x10,0x10,0x10,0xf0,0x0,
-+0x0,0x0,0x3e,0x23,0x22,0x22,0x3e,0x23,0x20,0x3e,0x23,0x62,0xa2,0x3e,0x20,0x0,0x40,0x20,0x8,0xfc,0x0,0x88,0x50,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,
-+0x2,0x3f,0x22,0x22,0x3e,0x21,0x3e,0x62,0xa2,0x3e,0x20,0x1f,0x0,0x0,0x7f,0x0,0x20,0x14,0xfe,0x44,0x28,0xfe,0x10,0xfe,0x10,0x90,0x80,0xf8,0x80,0x84,0xfe,0x0,
-+0x2,0x3f,0x22,0x3e,0x21,0x3e,0x62,0xbe,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x1,0x4f,0x29,0x9,0x9,0xf,0xe8,0x28,0x2f,0x39,0x29,0x29,0x2f,0x50,0x8f,0x0,0x20,0x90,0x14,0xfe,0x0,0x44,0x28,0xfe,0x10,0x10,0x7c,0x10,0x10,0x16,0xfc,0x0,
-+0x2,0x7a,0x4a,0x53,0x52,0x62,0x52,0x4b,0x48,0x48,0x68,0x53,0x40,0x40,0x4f,0x40,0x20,0x20,0x24,0xac,0x30,0x20,0xa4,0x1c,0x40,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x28,0x28,0xfe,0x29,0x3b,0x15,0x7d,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0x11,0x84,0xfe,0x90,0x7c,0x54,0x54,0x7c,0x54,0x54,0x7c,0x10,0x50,0x20,0x30,0x4e,0x84,
-+0x0,0x20,0x10,0x10,0x7,0x0,0xf0,0x10,0x11,0x11,0x11,0x12,0x14,0x28,0x47,0x0,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x8,0x8,0x8,0x50,0x20,0x6,0xfc,0x0,
-+0x10,0x10,0x23,0x22,0x4a,0xfb,0x12,0x22,0x43,0xf6,0x4a,0x3,0x1a,0xe2,0x42,0x2,0x80,0x48,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0xc,
-+0x4,0x7e,0x45,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x54,0x10,0x28,0x47,0x82,0x0,0x8,0x1c,0xe0,0x0,0x40,0x20,0xfc,0x4,0x8,0x10,0x20,0x40,0x80,0x46,0x3c,0x0,
-+0x1,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x19,0x29,0x2f,0x49,0x89,0x9,0x8,0x0,0x88,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x10,0x17,0x10,0x10,0x27,0x24,0x67,0xa4,0x27,0x24,0x22,0x21,0x20,0x21,0x22,0x2c,0x4,0xfe,0x40,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x44,0x40,0x40,0x80,0x60,0x1e,0x4,
-+0x2,0x1,0x7f,0x4,0x14,0x14,0x24,0x44,0x1f,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0x0,0x8,0xfc,0x40,0x50,0x48,0x4c,0x44,0xf0,0x20,0x40,0x80,0x0,0xc0,0x3c,0x8,
-+0x2,0x1,0x1,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0x10,0x10,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x10,0x10,0x7c,0x8,0x2a,0x2a,0xfe,0x12,0x10,0xfc,0x11,0x11,0x12,0x24,0x40,0x10,0x88,0x88,0xbe,0x84,0x94,0x94,0xbe,0x88,0x88,0xbe,0x8,0x8,0x8,0x8,0x8,
-+0x20,0x12,0x11,0x7d,0x8,0x2f,0x29,0xfd,0x11,0x11,0xfd,0x11,0x11,0x11,0x21,0x40,0x20,0x10,0x10,0x7c,0x8,0x28,0x28,0x7e,0x10,0x10,0x7c,0x10,0x50,0x90,0x10,0x10,
-+0x20,0x10,0x10,0x7d,0x9,0x2b,0x28,0xfc,0x11,0x13,0xfc,0x10,0x10,0x13,0x20,0x40,0x10,0x88,0x88,0x3e,0x4,0xd4,0x54,0xbe,0x8,0xc8,0x3e,0x8,0xc8,0x8,0x8,0x8,
-+0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x27,0x26,0x26,0x2b,0x2a,0x32,0x50,0x8f,0x0,0x80,0x48,0xfc,0x8,0x8,0xf8,0x0,0xf8,0xa8,0xa8,0xf8,0xa8,0xa8,0x6,0xfc,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x37,0x38,0x54,0x51,0x91,0x12,0x14,0x10,0x11,0x10,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x40,0x40,0x50,0x48,0x4c,0x44,0x40,0x40,0x80,
-+0x5,0x7,0x4,0x3f,0x24,0x27,0x3c,0x27,0x20,0x2f,0x29,0x29,0x29,0x49,0x90,0x20,0x0,0x84,0xc,0xd0,0xa0,0x4,0x8c,0x90,0x20,0x44,0xc,0x10,0x22,0x42,0xfe,0x0,
-+0x0,0x7b,0x48,0x48,0x49,0x79,0x49,0x49,0x48,0x79,0x48,0x4b,0x48,0x49,0x4a,0x98,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x24,0x22,0x60,
-+0x1,0x1,0x7f,0x1,0x3f,0x1,0x1,0xff,0x2,0x5,0xc,0x34,0xc4,0x5,0x6,0x4,0x0,0x8,0xfc,0x0,0xf8,0x0,0x4,0xfe,0x0,0x10,0xa0,0x40,0x30,0xe,0x4,0x0,
-+0x8,0x2a,0x1c,0x7f,0x49,0x5d,0x6b,0x47,0x8,0x3f,0x51,0x1f,0x11,0x1f,0x0,0xff,0x20,0x24,0x3e,0x44,0xa8,0x10,0x2e,0xc4,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,
-+0x49,0x2a,0x8,0x7f,0x49,0x5d,0x6b,0x49,0x43,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x20,0x20,0x24,0x3e,0x48,0xa8,0x10,0x2e,0x44,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0,
-+0x1,0x3f,0x21,0x21,0x21,0x3f,0x28,0x9,0xff,0x9,0x9,0x11,0x11,0x25,0x42,0x0,0x4,0x84,0x4,0x24,0x24,0x24,0x24,0x24,0xa4,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x3f,0x21,0xa7,0x64,0x27,0x24,0x27,0x64,0xa7,0x21,0x22,0x26,0x3b,0x42,0x81,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x20,0x10,0x6e,0x84,0x8,0xf8,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x31,0x39,0x52,0x52,0x94,0x10,0x10,0x10,0x10,0x10,0x80,0x82,0x82,0x84,0xe8,0x90,0x82,0xc2,0xa4,0x88,0x92,0x82,0x84,0x88,0x90,0xa0,
-+0x0,0x20,0x11,0x0,0xfc,0xb,0x48,0x28,0x29,0x11,0x29,0x25,0x45,0x81,0x3,0x0,0x10,0x10,0xf4,0x12,0x10,0xfe,0x10,0x50,0x50,0x70,0x50,0x48,0x48,0x6a,0x86,0x2,
-+0x2,0x42,0x2a,0x2b,0xa,0x8a,0x5f,0x2,0x2a,0x2a,0xd3,0x42,0x44,0x48,0x50,0x1,0x4,0xfe,0x10,0xa4,0x7e,0x44,0xd4,0x54,0x54,0xd4,0x54,0x54,0x10,0x28,0x46,0x82,
-+0x0,0x40,0x2f,0x28,0x10,0x83,0x52,0x13,0x12,0x22,0xe2,0x3f,0x20,0x23,0x22,0x24,0x80,0x40,0xfe,0x2,0x64,0x80,0x10,0xf8,0x20,0x20,0x24,0xfe,0x0,0x20,0x18,0x8,
-+0x2,0x1,0x3f,0x20,0x40,0xf,0x8,0xf,0x8,0x8,0x8,0xff,0x0,0xc,0x8,0x10,0x0,0x0,0xfc,0x4,0xe8,0x0,0x20,0xf0,0x40,0x40,0x44,0xfe,0x0,0x40,0x30,0x10,
-+0x10,0x10,0x17,0x14,0xfc,0x11,0x15,0x19,0x31,0xd1,0x11,0x1f,0x10,0x11,0x51,0x22,0x40,0x20,0xfe,0x2,0x34,0xc0,0x10,0xf8,0x10,0x10,0x14,0xfe,0x0,0x90,0xc,0x4,
-+0x0,0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xff,0x0,0x4,0xc,0x10,0x20,0x20,0xf0,0x0,0x0,0x0,0x10,0xf8,0x40,0x40,0x44,0xfe,0x0,0x40,0x30,0x18,0x8,
-+0x0,0x40,0x30,0x10,0x0,0xf,0x11,0x12,0x22,0xe4,0x24,0x28,0x30,0x20,0x22,0x21,0x80,0x80,0x84,0x8c,0x90,0xa0,0xc0,0xc0,0xa0,0x90,0x88,0x8e,0x84,0x80,0x80,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x33,0x3a,0x56,0x52,0x92,0x13,0x12,0x12,0x12,0x12,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x64,0x9c,0xc,0x4,0x4,0x14,0x8,
-+0x0,0x0,0xff,0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x22,0x24,0x28,0x20,0x20,0x20,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x8,0x8,0x88,0x48,0x28,0x28,0x8,0x28,0x10,
-+0x0,0x3f,0x1,0x7f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x3,0x5,0x9,0x11,0x61,0x1,0x78,0x80,0x8,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x20,0x21,0x20,0x3c,0x47,0x48,0xa0,0x20,0x27,0x20,0x20,0x24,0x28,0x31,0x22,0x4,0x0,0x8,0x90,0x0,0xfc,0x90,0x90,0x94,0xfe,0x90,0x90,0x90,0x90,0x10,0x10,0x10,
-+0x0,0x20,0x2f,0x20,0x28,0xb0,0xa7,0xa4,0x24,0x24,0x24,0x25,0x54,0x4c,0x84,0x4,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x64,0x94,0x14,0x4,0x4,0x14,0x8,
-+0x0,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x37,0x54,0x94,0x14,0x25,0x24,0x44,0x4,0x80,0x44,0xfe,0x0,0x8,0xfc,0x40,0x44,0xfe,0x44,0x44,0xa4,0x14,0x4,0x14,0x8,
-+0x10,0xc,0x4,0x3f,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x10,0x30,0x40,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x8,0xfc,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x1e,0xf2,0x42,0x4,0x8,0x3,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x4,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x8,0xff,0x8,0x20,0x13,0x92,0x42,0xa,0x12,0xe2,0x24,0x24,0x24,0x29,0x32,0x20,0x24,0xfe,0x20,0x20,0xfe,0x22,0x24,0xf8,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x13,0x10,0x12,0xfd,0x17,0x11,0x1a,0x34,0xd3,0x12,0x12,0x13,0x12,0x52,0x23,0x38,0xc0,0x44,0x4c,0x50,0xfe,0x50,0x4e,0x44,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,
-+0x10,0x10,0x12,0x12,0xff,0x10,0x14,0x18,0x11,0x31,0xd2,0x12,0x14,0x18,0x51,0x22,0x40,0x50,0x48,0x40,0xfe,0x80,0x80,0xf8,0x8,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x20,0x20,0x20,0x38,0x47,0x80,0x78,0x20,0x21,0xfa,0x24,0x21,0x28,0x30,0x20,0x0,0x40,0x40,0x40,0x48,0xfc,0x40,0xe0,0xd0,0x48,0x4e,0x44,0xf0,0x40,0x40,0x40,0x40,
-+0x0,0x40,0x30,0x17,0x4,0x84,0x44,0xf,0x14,0x25,0xe4,0x24,0x28,0x29,0x32,0x24,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4,
-+0x20,0x20,0x2f,0x20,0x27,0xfc,0x27,0x24,0x27,0x24,0x20,0x2f,0x22,0x21,0x20,0x20,0x50,0x48,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x8,0xa,0x7f,0x8,0x8,0x7f,0x41,0x82,0x3e,0x4,0x8,0x7e,0x8,0x8,0x29,0x12,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x10,0x10,0x17,0x10,0xfb,0x12,0x13,0x1a,0x33,0xd2,0x10,0x1f,0x12,0x11,0x50,0x20,0x50,0x48,0xfc,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x11,0x11,0x15,0x19,0x11,0x0,0x40,0x40,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x20,0x10,0x83,0x42,0xa,0x13,0xe2,0x22,0x22,0x23,0x22,0x40,0x44,0x7e,0xa0,0x10,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x11,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x40,0x40,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x11,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x1,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0x0,
-+0x8,0x8,0x12,0x3f,0x22,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x4a,0x84,0x20,0x20,0x44,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,
-+0x8,0x7c,0x4b,0x48,0x4b,0x7a,0x4c,0x49,0x48,0x78,0x4f,0x48,0x48,0x48,0x49,0x98,0x40,0x48,0xfc,0x40,0xfc,0x4,0x8,0xf0,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x8,0x7c,0x4f,0x48,0x4b,0x7a,0x4b,0x4a,0x4b,0x7a,0x48,0x4f,0x4a,0x49,0x48,0x98,0x50,0x48,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x2,0x42,0x32,0x1f,0x82,0x5f,0x50,0xf,0x11,0x22,0xe3,0x2e,0x22,0x22,0x2a,0x25,0x10,0x10,0x90,0xd4,0x3e,0xd4,0x54,0x94,0x14,0x24,0xa4,0x24,0x44,0x44,0x94,0x8,
-+0x0,0x40,0x30,0x13,0x82,0x62,0x22,0xa,0x13,0x22,0xe2,0x22,0x22,0x23,0x22,0x20,0x40,0x40,0x88,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,
-+0x4,0x7f,0x4,0x24,0x24,0x24,0x24,0x25,0x3e,0x2,0x2,0x1e,0xe2,0x42,0xb,0x4,0x0,0x8,0x88,0x50,0x20,0x50,0x88,0x8,0x4,0x8c,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x20,0x20,0x20,0x2f,0xf8,0x27,0x24,0x2c,0x37,0xe4,0x24,0x27,0x24,0x24,0xa4,0x44,0x40,0x50,0x48,0xfe,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8,
-+0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x10,0x78,0x57,0x50,0x57,0x54,0x54,0x57,0x54,0x54,0x77,0x54,0x4,0x4,0x4,0x40,0x50,0x48,0xfe,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8,
-+0x10,0x8,0x8,0x2,0xfe,0x4,0x8,0xa,0x1c,0x2a,0x48,0x88,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x20,0x21,0x23,0x22,0xfb,0x22,0x23,0x22,0x23,0x22,0x38,0xe7,0x40,0x0,0x0,0x0,0x80,0x8,0xfc,0x8,0xf8,0x0,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0xff,0x0,0x0,0x1,0x1,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x1,0x1,0x4,0xfe,0x80,0x80,0x0,0x0,0x40,0x20,0x18,0xc,0x4,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x2,0xff,0x4,0x9,0x11,0x3f,0x51,0x91,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,
-+0x1,0x9,0x9,0x9,0x9,0x9,0xff,0x1,0x9,0xd,0x11,0x21,0x0,0x3,0xc,0x70,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x10,0x18,0x20,0x20,0xc0,0x0,0x0,0x0,
-+0x10,0x3e,0x49,0x0,0x27,0x10,0x13,0x82,0x43,0xa,0x13,0xe2,0x2f,0x21,0x20,0x20,0x40,0xfc,0x20,0x48,0xfc,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0xfe,0x10,0x90,0x30,
-+0x10,0x8,0x2,0x7f,0x0,0x22,0x14,0xff,0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x10,0x10,0x10,0x13,0x58,0x55,0x51,0x93,0x15,0x19,0x11,0x11,0x11,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x80,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,0x20,
-+0x20,0x20,0x2f,0x2a,0xfb,0x26,0x25,0x2b,0x32,0xe5,0x28,0x27,0x22,0x22,0xa5,0x40,0x80,0x40,0xfe,0x2,0xbc,0xa4,0x28,0x18,0x8,0xf6,0x0,0xfc,0x48,0x44,0x44,0x80,
-+0x0,0x48,0x2f,0x10,0x2b,0x48,0xf,0x18,0x2b,0x4a,0x8b,0xa,0xb,0xa,0x52,0x22,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x18,
-+0x4,0x4,0x3f,0x4,0xff,0x10,0x8,0x7f,0x8,0x11,0x3a,0x54,0x93,0x19,0x11,0x2,0x40,0x50,0x48,0x40,0xfe,0x40,0x44,0x44,0x48,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x48,0x89,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x30,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x0,0x0,0x0,0xff,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x2,0x1,0x80,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,
-+0x4,0x7e,0x44,0x54,0x57,0x54,0x54,0x54,0x54,0x54,0x55,0x2a,0x24,0x44,0x80,0x0,0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x8,0x7f,0x48,0x4a,0x49,0x78,0x48,0x4f,0x48,0x78,0x48,0x49,0x4a,0x7c,0x48,0x0,0x1c,0xe0,0x88,0x48,0x50,0x0,0x44,0xfe,0x40,0xc0,0xe0,0x50,0x4e,0x44,0x40,0x40,
-+0x4,0x7f,0x44,0x45,0x44,0x7c,0x10,0x13,0x5c,0x50,0x50,0x50,0x5d,0xe2,0x40,0x0,0x1c,0xe0,0x44,0x26,0xa8,0x0,0x24,0xfe,0x20,0x60,0x70,0xa8,0x26,0x24,0x20,0x20,
-+0x0,0x0,0x7f,0x0,0x11,0x8,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x1,0x8,0x7c,0x80,0x8,0x18,0xa0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,0x0,
-+0x1,0xe,0xf1,0x49,0x2a,0x20,0x8,0xff,0x8,0x1c,0x1b,0x29,0x48,0x88,0x8,0x8,0x0,0x8,0x18,0x20,0x40,0x84,0xc,0x10,0x20,0x40,0x4,0xc,0x10,0x20,0x40,0x80,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x12,0x9,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x40,0x44,0xfe,0x40,0x38,0xc0,0x10,0x20,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x4,0x4,0xff,0x14,0x16,0x12,0x2c,0x68,0x17,0x20,0x5f,0x81,0x9,0x19,0x21,0x3,0x40,0x44,0xfe,0x40,0xf8,0x90,0x60,0x20,0xd0,0xe,0xf4,0x0,0x20,0x18,0x8,0x0,
-+0x10,0x1e,0x10,0x3e,0x44,0x29,0x12,0x65,0xf,0x38,0xcf,0x8,0xf,0xa,0x9,0xc,0x0,0xf8,0x88,0x50,0x20,0x50,0x8c,0x44,0xe0,0x3e,0xe4,0x20,0xe0,0x10,0xa0,0x78,
-+0x2,0x2,0x4,0x1f,0x2,0xff,0x4,0x8,0x13,0x2c,0xc1,0xe,0x0,0x1,0xe,0x70,0x0,0x40,0x20,0xf0,0x4,0xfe,0x40,0xa0,0x10,0x4e,0x84,0x10,0x60,0x80,0x0,0x0,
-+0x0,0x3f,0x1,0x1,0xff,0x2,0x5,0x9,0x3f,0xd1,0x11,0x1f,0x1,0x1,0x3f,0x0,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0xfe,0x14,0x10,0xf0,0x0,0x10,0xf8,0x8,
-+0x0,0x4,0x7e,0x10,0x10,0x1f,0x22,0x22,0x65,0x94,0x8,0x8,0x10,0x20,0x43,0x80,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x21,0x21,0x21,0x2f,0xb2,0xad,0xa5,0x2f,0x21,0x21,0x21,0x2f,0x25,0x21,0x21,0x21,0x0,0x6,0x38,0xe0,0x20,0x20,0x3e,0xe8,0x28,0x28,0xe8,0x28,0x48,0x48,0x88,0x8,
-+0x20,0x20,0x21,0x27,0xb0,0xaf,0xa1,0x22,0x24,0x39,0x22,0x20,0x23,0x20,0x20,0x27,0x80,0xa0,0x10,0xf8,0x80,0xfe,0x20,0x50,0x8e,0x24,0x40,0x88,0x10,0x20,0xc0,0x0,
-+0x10,0x10,0x10,0x14,0x54,0x59,0x51,0x91,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x1,0x20,0x20,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x4,0x4,0xff,0x4,0x1,0x2,0x4,0x18,0x6f,0x88,0x8,0x8,0x8,0x8,0x7,0x0,0x40,0x44,0xfe,0x40,0x0,0x80,0x40,0x30,0xee,0x24,0xa0,0x40,0x10,0x10,0xf0,0x0,
-+0x8,0x10,0x3c,0x24,0x34,0x2d,0x26,0xfc,0x24,0x34,0x2c,0x24,0x24,0x24,0x54,0x88,0x20,0x20,0x50,0x50,0x88,0x6,0x4,0xf8,0x88,0x88,0xa8,0x90,0x80,0x84,0x84,0x7c,
-+0x1,0x1,0x2,0x2,0x4,0x8,0x30,0xcf,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x80,0x80,0x40,0x20,0x1e,0xe4,0x20,0x20,0xa0,0x40,0x8,0x8,0xf8,0x0,
-+0x0,0x40,0x31,0x11,0x82,0x44,0x48,0x13,0x12,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0xf4,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x4,0xff,0x4,0x4,0x5f,0x50,0x57,0x75,0x17,0x74,0x57,0x55,0x95,0x27,0x44,0x80,0x84,0xfe,0xa8,0xa4,0xfe,0x20,0xa0,0x24,0xa4,0xa4,0xa8,0x28,0x10,0xb2,0x4a,0x86,
-+0x10,0x11,0x11,0x11,0xfc,0x17,0x14,0x1f,0x30,0xd0,0x1f,0x10,0x11,0x12,0x54,0x20,0x10,0xf8,0x10,0xf0,0x4,0xbe,0xa4,0xbc,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x10,0x10,0x55,0x39,0x10,0xfc,0x10,0x33,0x39,0x55,0x91,0x11,0x11,0x12,0x14,0x10,0x10,0x50,0x50,0x7c,0x90,0x10,0xfe,0x4,0x7e,0x44,0x44,0x44,0x7c,0x80,0x7e,0x0,
-+0x10,0x10,0x17,0x10,0xff,0x12,0x33,0x3a,0x57,0x54,0x91,0x11,0x11,0x11,0x11,0x11,0x90,0x94,0xfe,0x90,0xfc,0x94,0xfc,0x94,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x3f,0x24,0x3f,0x24,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x44,0xfe,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x8,0x8,0x7f,0x8,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x1,0x1,0x20,0x28,0xfc,0x20,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x2f,0x28,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x22,0x45,0x44,0x88,0x10,0x4,0xfe,0x0,0x84,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x4,0x84,0x94,0x8,
-+0x10,0x3e,0x50,0x9,0x1,0xff,0x1,0x3f,0x21,0x23,0x25,0x5,0x9,0x11,0x61,0x1,0x20,0x7c,0xa0,0x10,0x4,0xfe,0x8,0xfc,0x8,0x88,0x58,0x20,0x10,0xe,0x4,0x0,
-+0x10,0x10,0x17,0x24,0x25,0x65,0xa5,0x25,0x25,0x25,0x25,0x21,0x22,0x24,0x28,0x20,0x0,0x44,0xe4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x44,0x4,0x84,0x44,0x14,0x8,
-+0x2,0x1f,0x12,0x12,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x12,0x12,0x26,0x41,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0xfe,0x48,0x48,0x48,0x48,0x48,0x48,0xa8,0x10,
-+0x0,0x40,0x27,0x24,0x85,0x65,0x25,0xd,0x15,0x25,0xe5,0x21,0x22,0x24,0x28,0x20,0x0,0x44,0xe4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x4,0x84,0x44,0x54,0x8,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x17,0x10,0x10,0x1f,0x11,0x22,0x24,0x4f,0x80,0x4,0xfe,0x4,0x4,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x10,0x8,0xfc,0x4,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x7a,0x12,0x53,0x5c,0x51,0x51,0x5d,0xf1,0x41,0x1,0x88,0x50,0x0,0xfe,0x22,0xaa,0x72,0x22,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,
-+0x10,0x10,0x17,0x10,0xf8,0x17,0x10,0x19,0x36,0xd4,0x14,0x17,0x14,0x14,0x57,0x24,0x10,0x38,0xc0,0x40,0x44,0xfe,0x40,0x44,0x5e,0x44,0x44,0x5c,0x44,0x44,0xfc,0x4,
-+0x0,0x0,0x3f,0x0,0x12,0x11,0x9,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0xf8,0x8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x8,0x8,0xff,0xa,0x2,0xff,0x4,0x8,0x10,0x17,0x30,0x50,0x90,0x10,0x1f,0x10,0x20,0x24,0xfe,0x20,0x4,0xfe,0x0,0x40,0x48,0xfc,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x1,0x2,0x4,0x19,0x21,0xdf,0x1,0x9,0x19,0x21,0x5,0x2,0x40,0x44,0xfe,0x40,0x0,0x80,0x40,0x30,0xe,0xf4,0x0,0x20,0x18,0x8,0x0,0x0,
-+0x1,0x1,0xff,0x5,0x9,0x11,0x3f,0xd0,0x10,0x1f,0x10,0x10,0x1f,0x0,0xff,0x0,0x0,0x4,0xfe,0x40,0x20,0x10,0xfe,0x14,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x0,
-+0x0,0x8,0xfc,0x17,0x10,0x21,0x22,0x7c,0xab,0x2a,0x2b,0x2a,0x2b,0x38,0x27,0x0,0x40,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x0,
-+0x11,0x11,0x17,0x11,0xfc,0x10,0x15,0x1a,0x34,0xd3,0x10,0x12,0x12,0x14,0x51,0x20,0x10,0x10,0xfc,0x10,0x40,0xa0,0x10,0x4e,0x44,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x2,0x1,0x7f,0x48,0x8e,0x12,0x2c,0x68,0x17,0x20,0x5f,0x81,0x9,0x11,0x25,0x2,0x0,0x0,0xfe,0x2,0xf4,0x90,0x60,0x20,0xd0,0xe,0xf4,0x0,0x20,0x18,0x8,0x0,
-+0x0,0x4,0x8,0x10,0x2f,0xc4,0x4,0x8,0x30,0x1,0x21,0x21,0x21,0x21,0x3f,0x20,0x80,0x40,0x20,0x10,0xee,0x24,0x20,0xa0,0x40,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x2,0xff,0x4,0x8,0x17,0x20,0x40,0x80,0x1f,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x20,0xf0,0x80,0x80,0x88,0xfc,
-+0x0,0x40,0x37,0x14,0x0,0x0,0xf7,0x10,0x10,0x10,0x17,0x10,0x14,0x18,0x10,0x0,0x80,0x40,0xfe,0x2,0x24,0x70,0x80,0x80,0x88,0xfc,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x11,0x1d,0x31,0xd1,0x11,0x11,0x11,0x12,0x54,0x20,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x20,0x20,0x30,0x2c,0x24,0x20,0x20,0x20,0x20,
-+0x8,0x8,0x28,0x2e,0x28,0x28,0x2e,0x71,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x1,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,0xff,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x4,0x8,0x12,0xea,0x2c,0x29,0x14,0xe6,0xa,0x12,0x66,0xa,0x13,0xe2,0x14,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x18,0x28,0x48,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x11,0x12,0xff,0x12,0x16,0x1b,0x30,0xd1,0x12,0x1c,0x10,0x11,0x50,0x20,0x40,0x80,0xf0,0x20,0xf8,0x48,0x48,0xf8,0xa0,0x22,0x1e,0xc0,0x30,0x80,0x60,0x10,
-+0x10,0x10,0x11,0x13,0xf8,0x17,0x10,0x19,0x32,0xd4,0x19,0x12,0x10,0x11,0x50,0x23,0x80,0xa0,0x10,0xf8,0x80,0xfe,0xa0,0x10,0x48,0x8e,0x24,0x40,0x90,0x20,0x40,0x80,
-+0x11,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x7d,0x11,0x14,0x1f,0xe4,0x40,0x0,0x0,0x4,0x8c,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20,
-+0x20,0x20,0x20,0x39,0x4b,0x56,0x82,0x23,0x20,0x21,0x26,0x20,0x28,0x31,0x20,0x0,0x80,0x80,0xf0,0x20,0xf8,0x48,0x48,0xf8,0xa2,0x22,0x1e,0xc0,0x30,0x80,0x60,0x10,
-+0x1,0x21,0x11,0x12,0x7,0x2,0xf2,0x13,0x10,0x11,0x16,0x10,0x10,0x15,0x18,0x0,0x0,0x0,0xf0,0x20,0xf8,0x48,0x48,0xf8,0xa2,0x22,0x1e,0xc0,0x30,0x80,0x60,0x10,
-+0x10,0x10,0x27,0x24,0x4d,0xf5,0x25,0x45,0xfd,0x5,0x5,0x1c,0xe5,0x48,0x13,0x20,0x40,0x24,0xfe,0x0,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x10,0x10,0x10,0x1d,0x20,0x20,0x7c,0x91,0x11,0xfd,0x11,0x11,0x15,0x19,0x12,0x4,0x20,0x10,0x4,0xfe,0x0,0x84,0x48,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x1,0x1,0x7f,0x8,0x4,0x4,0x1f,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x8,0xfc,0x10,0x20,0x48,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x17,0x50,0x44,0x42,0x4f,0x49,0x4f,0x49,0x4f,0x41,0x5f,0x41,0x41,0x41,0x40,0x4,0xfe,0x4,0x44,0x84,0xe4,0x24,0xe4,0x24,0xe4,0x4,0xf4,0x4,0x4,0x4,0xc,
-+0x8,0xff,0x0,0x7f,0x55,0x5d,0x55,0x7f,0x0,0x3e,0x32,0x2a,0x3e,0x0,0xff,0x0,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x46,0x82,
-+0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x1,0x45,0x29,0x11,0x29,0x49,0x9,0x18,0x2b,0x4a,0x8a,0xb,0xa,0xa,0x53,0x22,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x20,0x27,0x20,0x20,0xf8,0x21,0x27,0x21,0x21,0x21,0x3a,0xe2,0x44,0x8,0x11,0x0,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x1,0x11,0x9,0x1,0x7f,0x40,0x80,0x1f,0x0,0x0,0x7f,0x2,0x4,0x8,0x1f,0x0,0x0,0x10,0x20,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x40,0x20,0xf0,0x10,
-+0x1,0x11,0x9,0x7f,0x40,0x8f,0x8,0xf,0x1,0x1f,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x10,0x20,0xfe,0x2,0xe4,0x20,0xe0,0x10,0xf8,0x10,0x10,0x10,0x50,0x20,0x0,
-+0x8,0x8,0x8,0x8,0x8,0x9,0x8,0xff,0x9,0x9,0x8,0x8,0x8,0x9,0xe,0x8,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0xfe,0x0,0x0,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x8,0xa,0x9,0x10,0x17,0x34,0x58,0x93,0x10,0x10,0x1f,0x10,0x10,0x11,0x13,0x10,0x40,0x48,0x50,0x40,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x40,0x90,0x8,0xfc,0x4,
-+0x8,0x7f,0x48,0x48,0x48,0x79,0x4b,0x48,0x48,0x79,0x49,0x4a,0x4c,0x48,0x49,0x98,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x94,0x94,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x49,0x29,0x2a,0x8,0x7f,0x41,0x41,0x5d,0x55,0x55,0x55,0x5d,0x41,0x45,0x42,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x10,0x13,0x10,0x7c,0x54,0x55,0x57,0x7c,0x54,0x55,0x55,0x7e,0x54,0x10,0x11,0x10,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x94,0x94,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x1,0x9,0x7d,0x49,0x49,0x49,0x49,0x48,0x4b,0x4a,0x7a,0x4b,0x2,0x2,0x3,0x2,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x13,0x12,0x12,0x23,0x22,0x62,0xa3,0x20,0x27,0x24,0x24,0x27,0x24,0x24,0x27,0x24,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x10,0x7c,0x10,0x10,0xfd,0x12,0x51,0x5d,0x51,0x51,0x71,0x48,0x87,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x10,0x0,0xf8,0x8,0x8,0x8,0xf8,0x6,0xfc,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x15,0x1a,0x32,0xd4,0x10,0x10,0x10,0x10,0x50,0x27,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x50,0x10,0x20,0xc0,0x0,
-+0x10,0x10,0x10,0x1c,0x21,0x21,0x7d,0x92,0x12,0x7c,0x10,0x10,0x14,0x18,0x10,0x7,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x50,0x10,0x20,0xc0,0x0,
-+0x8,0xa,0x7f,0x8,0x9,0x7f,0x41,0x7f,0x41,0x7f,0x48,0xa,0xff,0x8,0x8,0x9,0x4,0x7e,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x94,0x8,
-+0x2,0x22,0xff,0xa2,0xa2,0xaf,0xa8,0xaf,0xa8,0xaf,0xaa,0xe2,0xbf,0x2,0x2,0x2,0x4,0x3e,0xa4,0x24,0xa4,0xfc,0xa4,0xa4,0xa4,0xbc,0x24,0xa4,0xe4,0x24,0x44,0x8c,
-+0x2,0x42,0x2f,0x22,0x2,0x8f,0x48,0x4f,0x8,0x1f,0x2a,0xe2,0x3f,0x22,0x22,0x22,0x4,0x3e,0xa4,0x24,0xa4,0xfc,0xa4,0xa4,0xa4,0xbc,0x24,0xa4,0xe4,0x24,0x44,0x8c,
-+0x11,0x11,0x22,0x11,0x3f,0x21,0x3f,0x21,0x3f,0x1,0xff,0x5,0x9,0x11,0x61,0x1,0x10,0x10,0x20,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x0,0x8,0x7c,0x48,0x49,0x49,0x49,0x4a,0x4a,0x4c,0x48,0x78,0x48,0x0,0x0,0x7,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x10,0x10,0x20,0xc0,0x0,
-+0x10,0x10,0x10,0x10,0x55,0x59,0x51,0x92,0x12,0x14,0x10,0x28,0x24,0x44,0x80,0x7,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x10,0x10,0x20,0xc0,0x0,
-+0x2,0x2,0x7f,0x4,0x9,0x11,0x21,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0x0,0x0,0x20,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x10,0xfc,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x17,0x50,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x3c,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x22,0x21,0x2f,0x22,0xf4,0x2f,0x20,0x37,0x24,0xe7,0x24,0x27,0x24,0x24,0xa4,0x45,0x10,0x10,0xd0,0x14,0xbe,0xc4,0x24,0xa8,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0xc6,0x84,
-+0x25,0x3f,0x44,0xbf,0x4,0x3f,0x24,0x25,0x0,0x3f,0x1,0x1f,0x1,0x7f,0x1,0x3,0x4,0x84,0x24,0xa4,0x24,0xa4,0xa4,0x8c,0x30,0xc0,0x0,0xf0,0x0,0xfc,0x0,0x0,
-+0x10,0x12,0x12,0x22,0x42,0x92,0x13,0x2e,0x62,0xa2,0x22,0x23,0x20,0x20,0x21,0x22,0x0,0x4,0xfe,0x24,0x24,0xa4,0xe4,0x24,0x24,0x64,0xa4,0x24,0x44,0x84,0x28,0x10,
-+0x2,0x41,0x2f,0x22,0x4,0x8f,0x40,0x47,0x14,0x27,0xe4,0x27,0x24,0x24,0x24,0x25,0x10,0x10,0xd0,0x14,0xbe,0xc4,0x24,0xa8,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0xc6,0x84,
-+0x11,0x11,0x11,0x11,0xff,0x11,0x33,0x3b,0x55,0x55,0x99,0x11,0x11,0x11,0x11,0x11,0x0,0x3e,0x22,0x24,0xe4,0x28,0x28,0xa4,0x62,0x22,0x22,0x32,0x2a,0x24,0x20,0x20,
-+0x0,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x3f,0x21,0x21,0x21,0x21,0x3f,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x8,0xfc,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x25,0x25,0x24,0x24,0x44,0x45,0x86,0x4,0x10,0xf8,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,0x10,0xa0,0x40,0x30,0xe,0x4,0x0,
-+0x1,0x1,0x5,0xd,0x11,0x21,0x41,0x0,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x40,0x20,0x18,0xc,0x4,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,
-+0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x25,0x44,0x44,0x87,0x4,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0xf0,0x4,0xfe,0x8,0x90,0x60,0x1e,0x4,
-+0x10,0x10,0x10,0x10,0x53,0x5a,0x54,0x90,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x40,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0x40,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x40,0x37,0x14,0x84,0x68,0x21,0x9,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x28,0x0,0x0,0xfc,0x4,0x8,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x78,0x48,0x57,0x50,0x60,0x51,0x4a,0x4b,0x48,0x69,0x51,0x42,0x44,0x40,0x40,0x40,0x40,0x44,0xfe,0x80,0xa0,0x20,0x28,0xfc,0x20,0x28,0x24,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x10,0x7d,0x11,0x12,0xfc,0x11,0x10,0x5c,0x51,0x50,0x70,0x48,0x87,0x0,0x40,0x40,0xa0,0x10,0x28,0x6e,0x84,0x20,0x60,0x88,0x18,0x20,0x40,0x86,0xfc,0x0,
-+0x20,0x10,0x10,0x0,0xfc,0xb,0x10,0x34,0x59,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x12,0x11,0x17,0x14,0xf9,0x11,0x11,0x18,0x37,0xd0,0x13,0x10,0x17,0x10,0x51,0x20,0x48,0x50,0xfe,0x2,0xf4,0x10,0xf0,0x18,0xe0,0x40,0xf8,0x40,0xfc,0x40,0x40,0x80,
-+0x4,0xe,0x78,0x8,0x9,0xfe,0x8,0x1c,0x1a,0x28,0x29,0x49,0x8a,0x8,0x8,0x8,0x40,0x40,0x80,0x80,0xfe,0x4,0x28,0x20,0xa8,0xa4,0x26,0x22,0x20,0x20,0xa0,0x40,
-+0x20,0x20,0x20,0x27,0xfc,0x24,0x24,0x27,0x24,0x24,0x3c,0xe6,0x45,0x4,0x8,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x90,0x30,0x4a,0x8a,0x6,
-+0x10,0x13,0x10,0x12,0xfd,0x12,0x37,0x38,0x57,0x52,0x92,0x13,0x11,0x10,0x1f,0x10,0x0,0xa8,0xb4,0xa8,0x10,0x8,0xfe,0x4,0xf8,0x8,0x8,0xf8,0x10,0xa0,0xfe,0x0,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x3e,0x22,0x22,0x22,0x2a,0x24,0x40,0x81,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x62,0x92,0xa,0x6,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x8,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x0,0x0,0x1f,0x1,0xff,0x5,0x3d,0x5,0xd,0x75,0x3,0x5,0x9,0x11,0x61,0x1,0x20,0xf0,0x0,0x4,0xfe,0x40,0x58,0x60,0x44,0x3c,0x80,0x40,0x30,0x1c,0x8,0x0,
-+0x8,0x1d,0xf1,0x11,0x11,0xff,0x11,0x38,0x37,0x54,0x50,0x91,0x10,0x10,0x17,0x10,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x0,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x1b,0x20,0x40,0x12,0x1a,0x32,0x52,0x97,0x10,0x2a,0x29,0x28,0x48,0x7,0x0,0x8,0xfc,0x40,0x50,0x78,0x40,0x40,0x48,0xfc,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0,
-+0x0,0x47,0x31,0x15,0x82,0x44,0x4f,0x10,0x17,0x24,0xe4,0x27,0x22,0x21,0x3f,0x20,0x0,0x50,0x68,0x50,0x20,0x10,0xfe,0x4,0xf0,0x10,0x10,0xf0,0x20,0x44,0xfe,0x0,
-+0x0,0x40,0x20,0x27,0x4,0x4,0xe4,0x27,0x24,0x24,0x24,0x2e,0x35,0x24,0x8,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x90,0x30,0x4a,0x8a,0x6,
-+0x1f,0x0,0x1,0x1,0x79,0xf,0x9,0x11,0x17,0x21,0x21,0x4f,0x81,0x1,0x5,0x2,0xf0,0x20,0x40,0x84,0x2c,0xf0,0x20,0x10,0xd0,0x8,0x4e,0xe4,0x0,0x0,0x0,0x0,
-+0x0,0x47,0x24,0x24,0x7,0x0,0xef,0x20,0x20,0x27,0x20,0x20,0x2f,0x50,0x8f,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0xf8,0x80,0xa0,0xf0,0x80,0x90,0xf8,0x6,0xfc,0x0,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x48,0x7f,0x4,0x5,0x1c,0xe4,0x44,0x14,0x8,0x20,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x4,0xfe,0x80,0xfc,0x4,0x4,0x4,0x28,0x10,
-+0x8,0x1c,0xf1,0x10,0x11,0xfc,0x10,0x38,0x37,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x0,0x8,0xfc,0x20,0x24,0xa4,0xa8,0x20,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x8,0x7c,0x48,0x49,0x4a,0x4d,0x48,0x48,0x48,0x48,0x79,0x4a,0x2,0x1,0x0,0x80,0x80,0x88,0xfc,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x1,0x0,0x1f,0x12,0x92,0x53,0x55,0x19,0x31,0x5f,0xd1,0x11,0x12,0x22,0x44,0x8,0x0,0x84,0xfe,0x0,0x4,0xfe,0x24,0x24,0x24,0xe4,0x24,0x24,0xa4,0x7c,0x24,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x17,0x18,0x30,0xd7,0x12,0x11,0x11,0x10,0x50,0x20,0x40,0x40,0x50,0xf8,0x40,0x48,0xfc,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x3f,0x22,0x22,0x3e,0x22,0x3e,0x2,0xff,0x8,0x2a,0x2f,0x28,0x58,0x87,0x0,0x40,0x40,0x40,0x40,0x48,0x58,0x60,0x40,0x40,0x44,0x44,0x3c,0x0,0x6,0xfc,0x0,
-+0x0,0x40,0x32,0x12,0x82,0x63,0x2e,0x2,0x12,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x40,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x48,0x48,0x68,0x50,0x42,0x2,0xfe,0x0,
-+0x0,0x43,0x22,0x22,0x2,0x3,0xe2,0x22,0x22,0x22,0x22,0x24,0x28,0x50,0x8f,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x80,0x80,0x40,0x20,0x1c,0x0,0x6,0xfc,0x0,
-+0x8,0x7c,0x9,0x9,0x9,0x79,0x41,0x47,0x41,0x79,0x9,0x9,0x9,0x9,0x50,0x20,0x20,0x20,0x20,0x20,0x24,0x3e,0xe4,0x24,0x24,0x24,0x34,0x28,0x22,0x2,0xfe,0x0,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x4b,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x28,0x10,0x20,0x20,0x20,0x20,0x24,0x3e,0xe4,0x24,0x24,0x24,0x34,0x28,0x22,0x2,0xfe,0x0,
-+0x2,0xff,0x24,0x24,0x3c,0x24,0x24,0x3c,0x24,0x24,0x3f,0xe4,0x44,0x7,0x4,0x4,0x10,0x10,0x10,0x90,0x94,0x9e,0x90,0x90,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,0x0,
-+0x1,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x21,0x21,0x22,0x24,0x28,0x20,0x3f,0x20,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x8,0x8,0x88,0x68,0x28,0x8,0xf8,0x8,
-+0x8,0x8,0x9,0x13,0x10,0x30,0x50,0x91,0x16,0x10,0x10,0x13,0x10,0x10,0x10,0x17,0x80,0xfc,0x8,0x10,0xa0,0x40,0x90,0x10,0x20,0x7e,0x84,0x48,0x30,0x20,0xc0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x14,0x14,0x12,0x11,0x10,0x20,0x20,0x40,0x80,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x1,0x1,0x1,0x3f,0x1,0x1,0xff,0x4,0x4,0x14,0x14,0x24,0x48,0x88,0x11,0x20,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x50,0x48,0x46,0x42,0x40,0x40,0x80,
-+0x20,0x20,0x27,0xf8,0x24,0x22,0x70,0x50,0x52,0x54,0x50,0x52,0x21,0x50,0x4f,0x80,0x0,0x4,0xbe,0x84,0xa4,0x94,0x84,0x84,0x94,0xa4,0x84,0x94,0x8,0x6,0xfc,0x0,
-+0x0,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x23,0x20,0x20,0x40,0x40,0x80,0x0,0x10,0x78,0x80,0x0,0x0,0x8,0xfc,0x80,0x80,0x80,0xe0,0xb0,0x90,0x80,0x80,0x80,
-+0x10,0x10,0x11,0x15,0x59,0x51,0x51,0x91,0x11,0x11,0x10,0x28,0x25,0x42,0x84,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x90,0x88,0xc,0x4,0x0,
-+0x2,0x1,0x1,0xff,0x2,0x4,0x8,0x1f,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0x4,0xfe,0x0,0x40,0x20,0xf0,0x50,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x40,0x20,0x20,0x7,0x14,0x14,0x14,0x24,0xe7,0x24,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x7e,0x20,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x10,0x8,0xfc,0x4,0x0,
-+0x1,0x21,0x21,0x3f,0x22,0x1,0x7f,0x40,0x9f,0x0,0x7f,0x1,0x11,0x11,0x25,0x2,0x0,0x8,0x8,0xf8,0x8,0x0,0xfe,0x2,0xf4,0x0,0xfc,0x0,0x20,0x18,0x8,0x0,
-+0x2,0x1,0x7f,0x42,0x82,0x2,0x3f,0x2,0x2,0x4,0x4,0x8,0x9,0x12,0x20,0x40,0x0,0x0,0xfe,0x2,0x84,0x50,0xf8,0x80,0x90,0xb0,0xc0,0x80,0x82,0x82,0x7e,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x2,0xff,0x28,0x2a,0xff,0xaa,0xaa,0xaa,0xc6,0x82,0xfe,0x82,0x82,0xfe,0x83,0x2,0x44,0x44,0x54,0x54,0x54,0x54,0xfc,0x54,0x54,0x54,0x54,0x54,0x94,0x94,0x4,0x4,
-+0x0,0x4,0x7f,0x54,0x57,0x54,0x57,0x7c,0x54,0x57,0x55,0x55,0x7e,0x44,0x8,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfe,0x8,0x48,0x28,0x8,0x28,0x10,
-+0x0,0x7c,0x47,0x44,0x47,0x44,0x7f,0x10,0x10,0x5f,0x51,0x51,0x5a,0xe4,0x48,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfe,0x8,0x48,0x28,0x8,0x28,0x10,
-+0x8,0x1f,0xf2,0x12,0x12,0xfe,0x12,0x3a,0x36,0x52,0x52,0x92,0x12,0x12,0x14,0x18,0x0,0xfe,0x22,0x22,0xfa,0x22,0x22,0xfa,0x2,0xfa,0x8a,0x8a,0x8a,0xfa,0x8a,0x4,
-+0x4,0xe,0x78,0x8,0xfe,0x8,0x1d,0x2a,0x48,0x9,0x2,0x29,0x28,0x48,0x7,0x0,0x20,0x20,0x20,0xa4,0xac,0xb0,0x50,0x48,0x8e,0x4,0x0,0x90,0xac,0x24,0xe0,0x0,
-+0x10,0x1f,0x28,0x45,0x1,0x7f,0x2,0x3f,0x4,0xff,0x8,0x1f,0x24,0x42,0x2,0x0,0x40,0x7c,0xa0,0x10,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xfc,0x10,0x10,0x50,0x20,
-+0x9,0x9,0x9,0x11,0x17,0x31,0x51,0x91,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x10,0x17,0x24,0x24,0x4d,0xfc,0x14,0x25,0x44,0xfd,0x5,0x5,0x1d,0xe5,0x48,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x44,0xf4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x14,0x8,
-+0x0,0x9,0x7f,0x49,0x49,0x7f,0x49,0x4b,0x4b,0x7d,0x49,0x49,0x49,0x79,0x49,0x1,0x80,0xd0,0x10,0x12,0x56,0xb8,0x10,0x90,0x50,0x10,0x28,0x28,0x28,0x46,0x84,0x0,
-+0x0,0x3f,0x2,0x2,0x2,0x2,0x2,0x1f,0x4,0x4,0x4,0x4,0x4,0x4,0xff,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x1,0x1,0xff,0x2,0x4,0x18,0x60,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x20,0x14,0xfe,0x80,0x60,0x1c,0x8,
-+0x20,0x10,0x10,0x5,0xfc,0x8,0x10,0x34,0x58,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x1,0x1,0x21,0x21,0x21,0x21,0x3f,0x21,0x1,0x41,0x41,0x41,0x41,0x41,0x7f,0x40,0x0,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x27,0x24,0x24,0xff,0x24,0x75,0x6d,0xa5,0x25,0x24,0x25,0x25,0x2b,0x30,0x20,0x4,0xfe,0x0,0x44,0xe4,0x4,0xde,0x44,0x44,0xd4,0xc,0x44,0x44,0xe4,0x14,0x8,
-+0x0,0x3f,0x20,0x3f,0x20,0x2f,0x29,0x29,0x29,0x2f,0x20,0x29,0x2a,0x23,0x5c,0x80,0x4,0xfe,0x0,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x8,0x8,0x88,0x28,0x10,
-+0x4,0x7f,0x44,0x44,0x47,0x7c,0x10,0x17,0x50,0x59,0x53,0x55,0x5d,0xf1,0x41,0x1,0x90,0xfe,0x90,0x48,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x20,0x20,0x23,0x7a,0x82,0x2,0xfb,0x22,0x22,0xfb,0x22,0x22,0x2f,0x30,0x20,0x0,0x10,0x10,0xd0,0x54,0x7e,0x54,0xd4,0x54,0x54,0xd4,0x54,0x54,0xf4,0x24,0x54,0x88,
-+0x10,0x10,0x20,0x3c,0x45,0x8a,0x14,0xfe,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x0,0x40,0x50,0x94,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x0,0x5e,0x32,0x34,0x14,0x95,0x5a,0x14,0x32,0x33,0xda,0x54,0x51,0x52,0x50,0x10,0x20,0x20,0x50,0x50,0x88,0x6,0xfc,0x20,0x24,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x0,0x78,0x48,0x50,0x51,0x62,0x55,0x48,0x48,0x4f,0x68,0x51,0x42,0x44,0x41,0x40,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x40,0x50,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x8,0x8,0x7e,0x8,0x1c,0x2a,0x48,0x3f,0x1,0x9,0x9,0x11,0x11,0x29,0x47,0x80,0x20,0x28,0xfc,0x20,0x78,0xa4,0x20,0xf8,0x10,0x40,0xe0,0x0,0x0,0x6,0xfc,0x0,
-+0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x7f,0xa4,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x18,0x25,0x24,0x60,0xbd,0x24,0x25,0x26,0x24,0x25,0x26,0x24,0x20,0x20,0x40,0x40,0x48,0xfc,0x50,0x64,0xfe,0x88,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,
-+0x1,0x3f,0x1,0xf,0x8,0x9,0x9,0x7f,0x8,0x7e,0x8,0x3e,0x22,0x2a,0x2a,0xff,0x10,0xf8,0x0,0xe0,0x20,0x20,0x28,0xfc,0x20,0xfc,0x20,0xf8,0x88,0xa8,0xa8,0xfe,
-+0x10,0x10,0x1f,0x10,0xfd,0x13,0x10,0x18,0x33,0xd0,0x17,0x14,0x17,0x14,0x57,0x24,0x80,0x44,0xfe,0x80,0x10,0xf0,0x40,0x88,0xf8,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x4,
-+0x20,0x20,0x3c,0x48,0x51,0xfd,0x55,0x55,0x7d,0x55,0x55,0x7d,0x54,0x54,0x55,0x8c,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x20,0x28,0x3c,0xe2,0x82,
-+0x0,0x10,0x10,0x10,0x1e,0x22,0x22,0x22,0x54,0x94,0x8,0x14,0x14,0x22,0x41,0x80,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x6,0xfc,0x0,
-+0x10,0x10,0x12,0x12,0xfb,0x10,0x17,0x18,0x30,0xd7,0x14,0x14,0x14,0x14,0x54,0x24,0x40,0x40,0x48,0x48,0xf8,0x4,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xb4,0x8,
-+0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x0,0x4,0x4,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x4,0x4,0x4,
-+0x2,0x1,0x7f,0x44,0x88,0x0,0x3f,0x8,0x10,0x3f,0x1,0x2,0x4,0x18,0x61,0x0,0x0,0x0,0xfe,0x42,0x24,0x0,0xf8,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x10,0x11,0xfc,0x13,0x30,0x39,0x56,0x50,0x91,0x16,0x10,0x17,0x10,0x10,0x80,0xf8,0x88,0xf8,0x14,0xfe,0x80,0x44,0x6c,0xb0,0x30,0x68,0xa6,0x24,0xa0,0x40,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x11,0x13,0x10,0x11,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x0,0xfc,0x8,0x10,0xa0,0x40,0x60,0x20,
-+0x8,0x12,0x3f,0x22,0x32,0x2a,0x22,0x23,0xfe,0x22,0x32,0x2a,0x22,0x42,0x8a,0x4,0x8,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x0,0x8,0x7e,0x4a,0x4b,0x48,0x4f,0x48,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x2,0x2,0x40,0x40,0x48,0x48,0xf8,0x4,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xb4,0x8,
-+0x1,0x1,0x3f,0x21,0x21,0x3f,0x1,0x1,0x7f,0x41,0x41,0x7f,0x41,0x1,0x1,0x1,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,
-+0x1,0x0,0x1f,0x10,0x91,0x52,0x54,0x1b,0x32,0x52,0xd2,0x12,0x22,0x22,0x41,0x0,0x0,0x84,0xfe,0x80,0x40,0x20,0x10,0xee,0x24,0x20,0xa0,0x40,0x8,0x8,0xf8,0x0,
-+0x2,0x1,0x7f,0x48,0x92,0x4,0x3f,0x22,0x23,0x24,0x2a,0x21,0x22,0x24,0x3f,0x20,0x0,0x0,0xfe,0x22,0x14,0x0,0xf8,0x8,0xc8,0x48,0x88,0x8,0x88,0x8,0xf8,0x8,
-+0x20,0x20,0x27,0xf9,0xa8,0xaf,0xa8,0xab,0xaa,0xab,0xaa,0xbb,0x20,0x23,0x20,0x2f,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x48,0xf8,0x48,0xf8,0x40,0xf8,0x40,0xfe,
-+0x1,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x21,0x21,0x22,0x24,0x48,0x50,0x80,0x0,0x0,0x84,0xfe,0x80,0x80,0x88,0xfc,0x80,0xc0,0xa0,0x90,0x88,0x8e,0x84,0x80,0x80,
-+0x20,0x17,0x50,0x40,0x4f,0x40,0x44,0x44,0x44,0x47,0x40,0x5f,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0x44,0x44,0xf4,0x14,0xd4,0x14,0x54,0x24,0xc,
-+0x8,0x8,0x14,0x12,0x21,0x20,0x7e,0xa2,0x22,0x2a,0x24,0x20,0x21,0x21,0x1f,0x0,0x4,0x4,0x4,0x24,0xa4,0xa4,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x0,0x8,0x7c,0x48,0x49,0x4a,0x48,0x48,0x48,0x48,0x48,0x78,0x49,0x2,0x4,0x8,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x10,0x10,0x10,0x10,0x55,0x5a,0x50,0x90,0x10,0x10,0x10,0x10,0x19,0x26,0x44,0x88,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x10,0x10,0x13,0x10,0xfc,0x17,0x11,0x19,0x37,0xd1,0x11,0x17,0x10,0x10,0x53,0x20,0x8,0x3c,0xc0,0x40,0x48,0xfc,0x50,0x54,0xfe,0x50,0x50,0xfc,0x40,0x50,0xf8,0x0,
-+0x10,0x10,0x13,0x1c,0x20,0x23,0x7d,0x91,0x17,0x79,0x11,0x13,0x14,0x18,0x13,0x0,0x8,0x3c,0xc0,0x40,0x48,0xfc,0x50,0x54,0xfe,0x50,0x50,0xfc,0x40,0x50,0xf8,0x0,
-+0x0,0x0,0x3f,0x1,0x1,0x7f,0x9,0x9,0xff,0x9,0x9,0x7f,0x1,0x1,0x3f,0x0,0x10,0x78,0x80,0x0,0x8,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x10,0xf8,0x0,
-+0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x8,0xf,0x8,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0xf0,0x2e,0x24,0xe0,0x20,0x20,0xe0,0x20,
-+0x10,0x17,0x10,0x13,0xfc,0x17,0x39,0x32,0x57,0x5a,0x92,0x13,0x12,0x12,0x13,0x12,0x40,0xfc,0x40,0xf8,0x80,0xfe,0x10,0x8,0xfe,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0xfe,0x29,0x28,0xfe,0xaa,0xaa,0xae,0xc2,0x82,0x82,0xfe,0x83,0x82,0xfe,0x82,0x20,0x10,0xfe,0x4,0xfe,0x84,0xfc,0x0,0xfc,0x8,0x30,0x24,0xfe,0x20,0xa0,0x40,
-+0x0,0x3f,0x20,0x2f,0x20,0x3f,0x2a,0x29,0x28,0x2e,0x40,0x9f,0x10,0x10,0x1f,0x10,0x10,0xf8,0x0,0xf0,0x0,0xfc,0x10,0xa0,0x60,0x1e,0x4,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x40,0x37,0x10,0x83,0x62,0x23,0x8,0x13,0x20,0xe0,0x2f,0x20,0x20,0x21,0x20,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x10,0x64,0xfe,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x20,0x27,0x48,0xfa,0x12,0x22,0x42,0xfb,0x42,0x0,0x18,0xe0,0x40,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,0x0,
-+0x1,0x7f,0x1,0x3f,0x2,0x7f,0x8,0x1f,0xe8,0xf,0x10,0x7c,0x54,0x7c,0x12,0xfe,0x8,0xfc,0x0,0xf8,0x0,0xfc,0x20,0xf0,0x2e,0xe4,0x20,0xf8,0xa8,0xf8,0x24,0xfc,
-+0x0,0xf7,0x52,0x31,0x52,0x94,0x10,0x14,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x3f,0x20,0x20,0xa0,0xa8,0xa4,0xa0,0xae,0xf0,0x20,0xa4,0x24,0x18,0x10,0x30,0x4a,0x8a,0x4,
-+0x10,0x10,0x20,0x20,0x4b,0xfa,0x13,0x22,0x43,0xf8,0x40,0x7,0x18,0xe0,0x40,0x0,0x48,0x7c,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x1,0x0,0x1f,0x11,0x91,0x51,0x55,0x15,0x35,0x55,0xd5,0x15,0x25,0x25,0x4e,0x4,0x0,0x84,0xfe,0x20,0x20,0x20,0x24,0x2c,0xf0,0x20,0x20,0x20,0x22,0xe2,0x1e,0x0,
-+0x8,0x8,0xff,0x8,0x1,0x41,0x33,0x12,0x4,0x10,0xe0,0x20,0x21,0x21,0x22,0xc,0x20,0x24,0xfe,0x20,0x0,0x8,0xfc,0x8,0x90,0x80,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x2,0x11,0xf8,0x27,0x21,0x41,0x42,0x77,0xd0,0x51,0x51,0x52,0x54,0x77,0x50,0x0,0x8,0x98,0xa0,0xfe,0x8,0x8,0x52,0xbc,0x84,0x8,0x8,0x10,0xa4,0xfe,0x42,0x0,
-+0x14,0x14,0x14,0x54,0x55,0x5e,0x54,0x54,0x54,0x54,0x54,0x54,0x5d,0xe6,0x44,0x0,0x50,0x50,0x84,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x8,0x1c,0xf0,0x11,0x10,0x14,0xfe,0x10,0x15,0x7e,0x44,0x45,0x44,0x44,0x7c,0x44,0x40,0x20,0x28,0xfc,0x0,0x88,0x50,0x4,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,
-+0x8,0x4,0xff,0x8,0x8,0x12,0x7c,0x8,0x12,0x7e,0x0,0xa,0x29,0x28,0x48,0x7,0x20,0x44,0xfe,0x20,0x20,0x44,0xf8,0x10,0x24,0xfc,0x0,0x0,0x88,0xa4,0x24,0xe0,
-+0x21,0x11,0x1,0xa,0x70,0x20,0x27,0x0,0xff,0x10,0x1f,0x10,0x13,0x10,0x16,0x38,0x0,0x8,0xfc,0x48,0x40,0xa0,0x1c,0x4,0xfe,0x0,0xe0,0x20,0x20,0xa4,0x24,0x1c,
-+0x20,0x13,0x10,0x0,0x7,0xf0,0x10,0x13,0x12,0x12,0x12,0x13,0x16,0x18,0x10,0x0,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8,
-+0x4,0x4,0x4,0x24,0x24,0x24,0x27,0x24,0x24,0x24,0x24,0x24,0x27,0xf8,0x40,0x0,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x8,0x9,0xff,0x8,0x7f,0x49,0x49,0x4b,0x18,0x1c,0x2b,0x49,0x88,0x8,0x8,0x4,0x4,0x4,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x7d,0x45,0x55,0x55,0x55,0x55,0x54,0x55,0x56,0x54,0x11,0x2a,0x44,0x81,0x0,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0x54,0x94,0x24,0x44,0x84,0x28,0x10,
-+0x0,0x40,0x30,0x11,0x1,0x2,0x8,0x10,0x20,0xe0,0x20,0x20,0x21,0x22,0x24,0x28,0x80,0x80,0x80,0x8,0xfc,0x8,0x50,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x5,0xfe,0x24,0x24,0x3d,0x25,0x25,0x25,0x3d,0x25,0x24,0x24,0xfd,0x6,0x4,0x4,0x4,0xcc,0x50,0x4,0xfe,0x4,0x4,0x4,0xfc,0x44,0x20,0xa4,0x8a,0x8a,0x78,0x0,
-+0x4,0x4,0xff,0x14,0x1f,0x12,0x2e,0x25,0x48,0x11,0x2,0x4,0x52,0x51,0x90,0xf,0x40,0x44,0xfe,0x40,0xf8,0x48,0x48,0x88,0xc8,0x28,0x10,0x0,0x4,0x92,0x92,0xf0,
-+0x4,0x8,0x7f,0x44,0x44,0x47,0x44,0x48,0x54,0x42,0x41,0x42,0x44,0x48,0x7f,0x40,0x0,0x4,0xfe,0x4,0x4,0xe4,0x24,0x44,0x44,0x84,0x4,0x84,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x8,0x1f,0x12,0x22,0x4a,0x86,0x5,0x4,0x8,0x11,0x22,0x44,0x8,0x0,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0xc4,0x34,0x14,0x4,0x28,0x10,
-+0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x21,0x21,0x42,0x84,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x50,0x50,0x88,0x88,0xc,0x6,0x4,
-+0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x21,0x41,0x82,0x0,0xff,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x50,0x90,0x88,0xe,0x4,0x0,0xfe,0x0,
-+0x0,0x40,0x2f,0x20,0x7,0x1,0xf,0x12,0x24,0xeb,0x30,0x27,0x20,0x21,0x22,0x24,0x80,0x88,0xfc,0x80,0xf8,0x0,0xfc,0x20,0x10,0xee,0x84,0xf0,0x80,0x40,0x30,0x10,
-+0x8,0x8,0x4a,0x2a,0x1c,0x8,0xfe,0x8,0x1c,0x1a,0x28,0x48,0x88,0x8,0xb,0x8,0x0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xfe,0x0,
-+0x2,0x7f,0x14,0x15,0x7f,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x41,0x7f,0x41,0x28,0x28,0xfe,0x28,0xa8,0x28,0xfe,0x4,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x44,
-+0x10,0x12,0x1f,0x24,0x42,0x10,0x8,0xff,0x10,0x1c,0x14,0x27,0x24,0x44,0x94,0xb,0x20,0x24,0x3e,0x48,0x84,0x80,0xfe,0x40,0x7c,0xa0,0x24,0xfe,0x20,0x50,0x8e,0x4,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x90,0x12,0x12,0x12,0x12,0x15,0x18,0x10,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0xc6,0x7c,0x0,
-+0x0,0x78,0x4b,0x4a,0x4d,0x78,0x11,0x11,0x5d,0x50,0x53,0x52,0x5f,0xe2,0x40,0x0,0x40,0x20,0xfe,0x8a,0x24,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x22,0xfe,0x22,0x20,0x20,
-+0x10,0x1f,0x28,0x5f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0xa,0x32,0xc4,0xf,0x40,0x7c,0xa0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x9e,0x44,0xe0,
-+0x2,0x1,0x7f,0x44,0x99,0x1,0x3f,0x21,0x3f,0x1,0x7f,0x41,0x7f,0x41,0x1,0x1,0x0,0x0,0xfe,0x42,0x34,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xfc,0x4,0x0,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x10,0x15,0x19,0x33,0xd5,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x24,0x24,0x24,0xfc,0xa0,0x14,0xfe,0x10,0xfc,0x10,0xfc,0x10,0x14,0xfe,0x0,
-+0x1,0x21,0x21,0x3f,0x28,0x11,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x8,0x8,0xf8,0x8,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0x84,0xfe,0x0,
-+0x8,0x9,0x9,0x11,0x11,0x30,0x51,0x93,0x15,0x19,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x24,0x24,0x24,0xfc,0xa0,0x14,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x8,0x7c,0x48,0x49,0x4a,0x79,0x49,0x49,0x49,0x79,0x49,0x49,0x49,0x49,0x5a,0x84,0x80,0x80,0xf8,0x10,0x24,0xfe,0x0,0x78,0x48,0x48,0x68,0x50,0x42,0x42,0x3e,0x0,
-+0x1,0x0,0x1f,0x10,0x90,0x57,0x51,0x11,0x32,0x54,0xd0,0x1f,0x20,0x20,0x40,0x0,0x0,0x84,0xfe,0x80,0x48,0xfc,0x10,0x10,0xac,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x55,0x38,0x10,0xfe,0x11,0x38,0x34,0x53,0x90,0x10,0x10,0x10,0x10,0x40,0x20,0x28,0xfc,0x88,0x88,0x88,0x54,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x40,0x30,0x17,0x1,0x81,0x61,0x22,0x4,0x10,0x2f,0xe0,0x20,0x20,0x20,0x20,0x20,0x80,0x48,0xfc,0x10,0x10,0x10,0xac,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x3e,0x2,0x12,0xa,0x12,0x1,0x7f,0x8,0x14,0x22,0x1,0xff,0x1,0x1,0x1,0x1,0xf8,0x8,0x48,0x28,0x48,0x0,0xfc,0x20,0x50,0x88,0x0,0xfe,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x14,0xff,0x10,0x30,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x2,0xff,0x4,0x8,0xb,0x10,0x10,0x30,0x5f,0x90,0x10,0x10,0x10,0x11,0x10,0x0,0x4,0xfe,0x0,0x0,0xf8,0x10,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x1,0x0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x4,0xfe,0x13,0x10,0x21,0x24,0x7f,0xa4,0x24,0x24,0x25,0x3d,0x22,0x4,0x0,0x88,0x4c,0x50,0xfe,0x20,0xfc,0x20,0xfe,0x40,0x88,0xfc,0x10,0x10,0x14,0xfe,0x0,
-+0x20,0x23,0x22,0x23,0xfa,0x23,0x20,0x2f,0x34,0xe7,0x24,0x27,0x24,0x2f,0xa0,0x40,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x80,0xfc,0x84,0xa8,0x90,0x90,0xae,0xc4,
-+0x11,0x10,0x10,0x17,0xfc,0x13,0x10,0x1f,0x30,0xd1,0x11,0x12,0x14,0x18,0x53,0x20,0x8,0x98,0xa0,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x8,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x11,0x11,0x11,0x17,0xfd,0x11,0x17,0x18,0x33,0xd2,0x12,0x13,0x12,0x12,0x53,0x22,0x10,0x10,0x10,0xfc,0x10,0x14,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x12,0x12,0xfa,0x12,0x15,0x18,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0xe2,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x1f,0x20,0x20,0x7f,0x90,0x11,0x7d,0x11,0x11,0x15,0x19,0x11,0x1,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x11,0x11,0x17,0x11,0xfc,0x10,0x11,0x1a,0x35,0xd0,0x13,0x12,0x12,0x12,0x53,0x22,0x10,0x10,0xfc,0x10,0x40,0xa0,0x10,0xe,0xf4,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x20,0x20,0x0,0xf,0xe0,0x21,0x21,0x22,0x22,0x24,0x28,0x50,0x8f,0x0,0x80,0x80,0x80,0x80,0x88,0xfc,0x80,0x0,0x40,0x20,0x10,0x18,0x8,0x6,0xfc,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x2,0x4,0x8,0x1f,0x20,0xcf,0x8,0x8,0x8,0xf,0x8,0x40,0x48,0x7c,0xa0,0x10,0x80,0x40,0x20,0xf8,0xe,0xe4,0x20,0x20,0x20,0xe0,0x20,
-+0x1,0x0,0x1f,0x92,0x52,0x5f,0x12,0x31,0x52,0xd7,0x18,0x17,0x24,0x24,0x47,0x4,0x0,0x84,0xfe,0x20,0x28,0xfc,0xa0,0x40,0x20,0xf0,0xe,0xf4,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x14,0x18,0x30,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x11,0x1,0xff,0x1,0x3,0x5,0x9,0x11,0x61,0x1,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x0,0xff,0x2,0x2,0x2,0x3,0x4,0xc,0xa,0x11,0x20,0x40,0x0,0x3,0xc,0x30,0x4,0xfe,0x0,0x0,0x0,0xf8,0x8,0x8,0x10,0x90,0xa0,0x40,0x80,0x0,0x0,0x0,
-+0x10,0x10,0x1f,0x20,0x2f,0x61,0xbf,0x22,0x24,0x2c,0x32,0x21,0x22,0x24,0x28,0x21,0x80,0x88,0xfc,0x80,0xf8,0x0,0xfe,0x20,0x90,0x9e,0xa4,0xc0,0xa0,0x98,0x88,0x80,
-+0x8,0x7f,0x8,0xff,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x22,0x7f,0x22,0xff,0x22,0x41,0x50,0x48,0x44,0xfe,0x40,0x48,0x48,0x50,0x50,0x20,0x20,0x60,0x90,0x92,0xa,0x6,
-+0x9,0x9,0x7f,0x9,0x9,0x7f,0x41,0x81,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x1,0x20,0x28,0xfc,0x20,0x20,0xfe,0x2,0x4,0xf0,0x10,0x10,0x10,0x10,0x50,0x20,0x0,
-+0x4,0xfe,0x20,0x20,0x3c,0x25,0x27,0x44,0xa5,0x15,0x9,0x9,0x11,0x21,0x41,0x0,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x5f,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0xa0,0x90,0x90,0x84,0xfe,0x80,0x40,0x40,0x40,0x20,0x20,0x12,0x12,0xa,0x6,
-+0x8,0x8,0x10,0x37,0x50,0x90,0x10,0x1f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0xa0,0x90,0xbc,0xc0,0x42,0x32,0xe,0xf0,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x10,
-+0x8,0x8,0x10,0x37,0xd0,0x10,0x12,0x11,0xff,0xa,0x9,0x18,0x28,0xc9,0xa,0xc,0xa0,0x90,0xfc,0x80,0x40,0x24,0x1c,0x0,0xfe,0x8,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x8,0x8,0x13,0x20,0x48,0x8,0x17,0x30,0x50,0x97,0x10,0x12,0x11,0x11,0x10,0x10,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x40,0x27,0x20,0xf,0x0,0xe7,0x20,0x24,0x22,0x24,0x28,0x22,0x51,0x8f,0x0,0x80,0x90,0xf8,0x90,0xfc,0x90,0xf0,0x80,0x90,0xa0,0x98,0x88,0x80,0x6,0xfc,0x0,
-+0x4,0x4,0x8,0x10,0x7f,0x0,0x3f,0x20,0x20,0x3f,0x2,0x11,0x50,0x50,0x8f,0x0,0x0,0x40,0x20,0x10,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x0,0x80,0x94,0x12,0xf2,0x0,
-+0x4,0xfe,0x48,0x4b,0x7a,0x4c,0x48,0x48,0x78,0x48,0x48,0x4d,0xf9,0xa,0xc,0x8,0x40,0x40,0x44,0xfe,0x44,0x48,0x60,0x60,0xa0,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x13,0x1e,0x32,0xd2,0x13,0x10,0x10,0x1f,0x50,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,
-+0x0,0x1f,0x10,0x12,0x11,0x11,0x10,0xff,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x8,0x4,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0xff,0x1,0x1,0x1,0x10,0x20,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x41,0x22,0x14,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x8,0x8,0xff,0x8,0x8,0x8,0x0,0x7c,0x44,0x48,0x48,0x50,0x50,0x48,0x44,0x44,0x44,0x64,0xd4,0x48,0x40,0x40,
-+0x11,0x10,0x10,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x10,0x17,0x10,0x10,0x50,0x20,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20,
-+0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x25,0x54,0x88,0x0,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0xfc,0x0,0x4,0xfe,0x0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0xff,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,
-+0x10,0x1f,0x10,0x3f,0x40,0xbf,0x12,0xa,0x5,0x38,0x2,0x12,0xa,0x5,0x8,0x70,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x50,0x90,0x10,0xf0,0x10,0x50,0x90,0x12,0xca,0x24,
-+0x10,0x10,0x17,0x24,0x24,0x64,0xa7,0x24,0x24,0x24,0x27,0x20,0x20,0x3f,0x20,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,
-+0x12,0x11,0x10,0x13,0x5a,0x56,0x53,0x92,0x12,0x13,0x10,0x1f,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x44,0x33,0x11,0x80,0x40,0x41,0xa,0x10,0x22,0xe1,0x20,0x20,0x21,0x22,0x2c,0x40,0x44,0x4c,0x50,0x40,0xa0,0x1c,0x48,0x40,0x48,0x58,0xa0,0x90,0x10,0xe,0x4,
-+0x0,0x40,0x2f,0x21,0x2,0x4,0xef,0x21,0x29,0x25,0x22,0x2a,0x33,0x24,0x8,0x10,0x8,0x1c,0x70,0x10,0x10,0x10,0x5c,0x50,0x50,0x50,0x50,0x7c,0x0,0x80,0x46,0x3c,
-+0xa,0x7d,0x8,0xb,0xa,0x7a,0x4b,0x42,0x42,0x7b,0x8,0xf,0x8,0x8,0x50,0x20,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0x40,0x40,0x40,
-+0x7f,0x1,0x9,0x9,0x9,0x15,0x23,0x41,0x1f,0x11,0x11,0x1f,0x11,0x1,0x7f,0x0,0xfc,0x8,0x20,0xf0,0x0,0x6,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x4,
-+0x1,0x21,0x19,0x9,0x1,0x1,0x7f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x7f,0x0,0x0,0x8,0x18,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x12,0x11,0xfd,0x10,0x17,0x18,0x30,0xd0,0x13,0x10,0x10,0x10,0x57,0x20,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x11,0xd,0x5,0x7f,0x40,0x8f,0x8,0x8,0x8,0xf,0x4,0x4,0x4,0x8,0x30,0x0,0x10,0x30,0x40,0xfe,0x22,0xf4,0x20,0x20,0x20,0xe0,0x80,0x80,0x84,0x84,0x7c,
-+0x8,0x8,0xff,0x8,0x47,0x30,0x10,0x81,0x47,0x11,0x21,0xe2,0x22,0x24,0x29,0x20,0x20,0x24,0xfe,0x20,0xf0,0x40,0x80,0x4,0xfe,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x10,0x10,0x12,0x11,0xfd,0x10,0x37,0x38,0x54,0x50,0x93,0x10,0x10,0x10,0x17,0x10,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x10,0x14,0x14,0x17,0x50,0x20,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x0,0xfe,0x82,0x92,0x92,0xf2,0xa,0x4,
-+0x4,0x7f,0x44,0x46,0x45,0x45,0x7c,0x13,0x12,0x5e,0x53,0x52,0x5e,0xf2,0x43,0x2,0x1c,0xe0,0x48,0x2c,0x28,0x10,0x44,0x9e,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x1f,0x22,0x22,0x64,0xaf,0x21,0x21,0x2f,0x21,0x21,0x21,0x2f,0x24,0x20,0x4,0x44,0xe4,0x4,0x94,0x54,0xd4,0x14,0x14,0xd4,0x14,0x14,0xc4,0x4,0x14,0x8,
-+0x1,0x2,0xf,0x8,0xa,0x9,0x8,0x8,0xf,0x8,0x2,0x22,0x22,0x3f,0x20,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x60,0x4,0xfe,0x4,0x4,0x24,0x24,0xe4,0x34,0x8,
-+0x20,0x10,0x13,0x0,0xfd,0x8,0x13,0x38,0x54,0x93,0x11,0x11,0x12,0x14,0x18,0x10,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfe,0x8,0x48,0x28,0x8,0x28,0x10,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x1f,0x0,0x0,0xff,0x0,0x8,0x4,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x14,0x4,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x1,0x7f,0x8,0x10,0x22,0x41,0x7f,0x8,0xa,0x7f,0x8,0x8,0x8,0xf,0xf8,0x0,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0xa4,0x24,0x24,0x24,0x24,0x4,0x84,0x14,0x8,
-+0x8,0x1f,0xf0,0x12,0x11,0xfd,0x10,0x3b,0x36,0x52,0x53,0x92,0x12,0x12,0x13,0x12,0x1c,0xe0,0x48,0x4c,0x48,0x10,0x44,0x9e,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x10,0x5b,0x56,0x53,0x92,0x13,0x12,0x10,0x1f,0x10,0x10,0x10,0x10,0x48,0x7c,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x2,0x41,0x37,0x10,0x1,0x3,0xf2,0x13,0x12,0x12,0x13,0x12,0x12,0x2b,0x44,0x3,0x8,0x10,0xfc,0x80,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x6,0xfc,
-+0x1,0x41,0x33,0x12,0x4,0x10,0x21,0xc6,0x40,0x1f,0x12,0x12,0x12,0x12,0xff,0x0,0x0,0x8,0xfc,0x48,0x40,0xa0,0x10,0xe,0x4,0xf0,0x90,0x90,0x90,0x94,0xfe,0x0,
-+0x10,0x10,0x2f,0x20,0x47,0x94,0x14,0x27,0x60,0xaf,0x20,0x21,0x25,0x25,0x28,0x20,0x40,0x44,0xfe,0x40,0xfc,0xa4,0xa4,0xfc,0x0,0xfe,0x40,0x20,0x24,0xa,0xfa,0x0,
-+0x8,0xb,0x12,0x13,0x22,0x4b,0x88,0x17,0x30,0x50,0x9f,0x12,0x11,0x11,0x10,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x10,0x14,0xfe,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x22,0x7f,0x42,0x43,0x42,0x42,0x7e,0x42,0x42,0x42,0x42,0x7e,0x42,0x0,0x40,0x40,0x44,0x7e,0x84,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x8,0x7f,0x48,0x4a,0x49,0x49,0x7b,0x14,0x13,0x5a,0x52,0x53,0x5d,0xe0,0x4f,0x0,0x20,0xa8,0xb0,0xa4,0x18,0x10,0xf8,0x6,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0x54,0x58,0x50,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x3e,0x2,0x12,0xc,0x8,0x1f,0x20,0xcf,0x8,0x8,0xf,0x4,0x2,0x7f,0x0,0x80,0x90,0xa0,0x48,0x50,0x20,0xf0,0x2e,0xf4,0x20,0x20,0xe0,0x40,0x88,0xfc,0x0,
-+0x10,0x14,0x3e,0x49,0x5,0x1,0x3f,0x1,0xff,0x0,0x0,0x3f,0x8,0x4,0x1,0x0,0x40,0x48,0xfc,0x20,0x10,0x0,0xf8,0x0,0xfe,0x40,0x50,0xf8,0x40,0x40,0x40,0x80,
-+0x8,0x7f,0x48,0x4a,0x49,0x79,0x4b,0x4c,0x4b,0x7a,0x4a,0x4b,0x49,0x78,0x4f,0x0,0x20,0xa8,0xb0,0xa4,0x18,0x8,0xfe,0x4,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0,
-+0x3e,0x12,0xc,0xf,0x10,0x2f,0xc8,0xf,0x4,0x7f,0x0,0x7,0x4,0x4,0x8,0x30,0x90,0xa0,0x48,0xf0,0x10,0xee,0x24,0xe0,0x48,0xfc,0x40,0xe0,0x40,0x44,0x44,0x3c,
-+0x0,0xfe,0x2,0x42,0x24,0x24,0x18,0x8,0x18,0x14,0x24,0x22,0x42,0x80,0x0,0x0,0x0,0xfc,0x84,0x88,0x88,0x90,0xa0,0x98,0x84,0x84,0x84,0xc4,0xa8,0x90,0x80,0x80,
-+0x23,0x22,0x22,0x23,0xfa,0x22,0x23,0x20,0x2f,0x20,0x3a,0xe2,0x42,0x5,0x8,0x10,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x40,0x50,0x78,0x40,0x40,0xc6,0x7c,
-+0x10,0x10,0x17,0x24,0x24,0x64,0xa4,0x27,0x24,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x8,0x3c,0xc0,0x40,0x40,0x40,0x44,0xfe,0x20,0x20,0x20,0x90,0x12,0x4a,0x2a,0x4,
-+0x0,0x40,0x2f,0x22,0x1,0x87,0x44,0x4d,0x14,0x25,0xe5,0x25,0x25,0x25,0x24,0x24,0x80,0x44,0xfe,0x8,0x14,0xfe,0x44,0xf4,0x44,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x0,0x40,0x20,0x2f,0x8,0x8,0xe8,0x2f,0x28,0x28,0x28,0x2f,0x28,0x50,0x8f,0x0,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x8,0x6,0xfc,0x0,
-+0x2,0x7,0x78,0x8,0x8,0xa,0xff,0x8,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x1,0x20,0x20,0x20,0x44,0x7e,0x88,0x48,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x12,0x1f,0x28,0x45,0x81,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x44,0x28,0x10,0x29,0x49,0x89,0xa,0x18,0x28,0x48,0x88,0x9,0x9,0x52,0x24,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x1,0x41,0x31,0x13,0x84,0x60,0x20,0x9,0x12,0x24,0xeb,0x21,0x22,0x24,0x21,0x20,0x0,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0x40,0xfc,0x50,0x4c,0x44,0x40,0x80,
-+0x0,0x7e,0x2,0x22,0x1a,0x12,0x23,0x8,0x1f,0x30,0x5f,0x90,0x1f,0x10,0x1f,0x10,0x8,0xfc,0x8,0x48,0x38,0x28,0x48,0x80,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x40,0x24,0xfe,0x88,0x54,0xfe,0x24,0xfc,0x24,0x74,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x12,0x13,0x52,0x20,0x8,0x3c,0xe0,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x50,0xd0,0x2a,0xa,0x4,
-+0x2,0x1,0x3f,0x20,0x20,0x2f,0x28,0x28,0x2f,0x28,0x28,0x28,0x4a,0x4d,0x88,0x0,0x0,0x4,0xfe,0x0,0x70,0x80,0x80,0x88,0xfc,0x80,0x80,0x40,0x40,0xa4,0x94,0xc,
-+0x0,0x20,0x22,0x22,0x22,0x22,0xfb,0x26,0x22,0x22,0x22,0x22,0x3a,0xe2,0x41,0x0,0x40,0x40,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x48,0x68,0x50,0x42,0x2,0xfe,0x0,
-+0x4,0x7f,0x4,0x1,0x3f,0x8,0x4,0x7f,0x41,0x81,0x1f,0x11,0x11,0x11,0x1,0x1,0x48,0xfc,0x40,0x10,0xf8,0x20,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0x50,0x20,0x0,
-+0x10,0x14,0x3e,0x49,0xbf,0x1,0x1,0x3f,0x21,0x21,0x3f,0x3,0x5,0x19,0x61,0x1,0x80,0x88,0xfc,0x20,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x24,0x18,0x0,
-+0x2,0x1,0x3f,0x8,0x4,0x7f,0x41,0x81,0x1f,0x11,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x10,0xf8,0x20,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0x10,0x50,0x20,0x0,0x0,
-+0x8,0x6,0x2,0x7f,0x1,0x1,0x3f,0x21,0x21,0x3f,0x3,0x5,0x19,0x61,0x1,0x1,0x20,0x60,0x88,0xfc,0x8,0x8,0xf8,0x8,0x0,0xfc,0x4,0x4,0x14,0x8,0x0,0x0,
-+0x4,0x42,0x2f,0x20,0x0,0xf,0xe8,0x28,0x2f,0x21,0x22,0x24,0x28,0x50,0x88,0x7,0x10,0x28,0xfc,0x88,0x88,0xf8,0x80,0x88,0xfc,0x88,0x88,0xa8,0x90,0x80,0x86,0xfc,
-+0x10,0x10,0x27,0x21,0x48,0xff,0x14,0x28,0x43,0xfa,0x42,0x2,0x1a,0xe2,0x40,0x0,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x48,0x58,0x40,0x40,
-+0x10,0x15,0xfe,0x10,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x7c,0x44,0xfe,0x0,0x28,0x45,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x40,0x48,0x86,0x2,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x14,0x14,0x58,0x20,0x40,0x20,0x4,0xfe,0x20,0x24,0x3e,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x0,0x40,0x37,0x10,0x83,0x62,0x23,0xa,0x13,0x22,0xe3,0x22,0x2f,0x21,0x23,0x24,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x27,0x24,0x3c,0x25,0x2,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0xfc,0x54,0x54,0x54,0xfe,0x0,0x88,0x86,0x2,
-+0x2,0x2,0x2,0x3,0x2,0x2,0x3f,0x20,0x20,0x20,0x3f,0x0,0x29,0x24,0x44,0x80,0x0,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x10,0xc8,0x44,0x4,
-+0x4,0x4,0x4,0x3f,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0xff,0x0,0x10,0x30,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xf8,0x48,0x48,0x48,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x7c,0x11,0x7d,0x12,0xff,0x4,0x7e,0x44,0x7c,0x44,0x7c,0x44,0x45,0x56,0x48,0x40,0x20,0xfe,0x2,0x4,0xfe,0x20,0x20,0xa8,0xbc,0xa0,0xa0,0xa0,0x60,0x26,0x1c,
-+0x8,0x8,0x7e,0x8,0xa,0x1c,0x68,0x8,0x2b,0x11,0x1,0x7f,0x1,0x1,0xff,0x0,0x40,0x48,0xfc,0x48,0xc8,0x68,0x58,0x8a,0x6,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x2,0x2,0x2,0x7f,0x42,0x42,0x7f,0x42,0x42,0x7f,0x42,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x10,0x27,0x24,0x64,0xa4,0x24,0x27,0x24,0x24,0x24,0x24,0x27,0x24,0x20,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0xfc,0x4,0x0,
-+0x8,0x8,0x1f,0x20,0x40,0x80,0x3f,0x22,0x22,0x3f,0x22,0x22,0x3f,0x20,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x14,0x8,
-+0x1,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x2f,0x28,0x28,0x28,0x48,0x48,0x8f,0x8,0x0,0x84,0xfe,0x80,0x88,0xfc,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x13,0x5a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x40,0x20,0x4,0xfe,0x20,0x24,0x3e,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x10,0x8,0x7f,0x4,0x1f,0x14,0x14,0x18,0x1f,0x10,0x1f,0x1,0xff,0x2,0x4,0x38,0x10,0x20,0xfc,0x50,0xf8,0x50,0x50,0x30,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x78,0x10,
-+0x0,0x40,0x30,0x17,0x84,0x68,0x27,0x0,0x12,0x22,0xe2,0x22,0x22,0x25,0x28,0x20,0x80,0x40,0x40,0xfe,0x4,0x8,0xfc,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0xc6,0x7c,
-+0x0,0x7f,0x41,0x41,0x7f,0x40,0x52,0x7f,0x52,0x52,0x7f,0x40,0x52,0x51,0xa0,0x1,0x8,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x88,0x50,0x20,0x50,0x88,0x86,0x4,
-+0x8,0xfd,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x25,0x25,0x3d,0x22,0x4,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x0,0x8,0x7d,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x7b,0x49,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x14,0x24,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10,
-+0x1,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x41,0x5d,0x55,0x55,0x5d,0x51,0x85,0x2,0x20,0xa8,0x40,0x7e,0xc8,0x48,0x7c,0x48,0x48,0x7c,0x48,0x48,0x48,0x7e,0x40,0x40,
-+0x0,0x7,0x44,0x24,0x25,0x4,0xc,0x17,0x24,0xe5,0x25,0x25,0x25,0x25,0x8,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x54,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x30,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x48,0x88,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20,0x0,
-+0x10,0x10,0x10,0x10,0xff,0x12,0x17,0x1a,0x33,0xd2,0x10,0x1f,0x10,0x10,0x50,0x20,0x48,0x7c,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x11,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0x0,0x0,
-+0x10,0x10,0x10,0x1c,0x20,0x21,0x7c,0x90,0x10,0xfc,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x44,0x7e,0x84,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x40,0x27,0x24,0x4,0x5,0xe4,0x24,0x27,0x24,0x25,0x25,0x2d,0x35,0x25,0x8,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x54,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x4,0x7e,0x45,0x45,0x45,0x7d,0x52,0x10,0x13,0x5c,0x50,0x50,0x5e,0xf0,0x41,0x2,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x8c,0x6,0x4,
-+0x4,0x8,0x34,0x3,0x6,0x1a,0x67,0x8c,0x13,0x6,0x19,0x2,0xd,0x1,0x6,0x38,0x40,0x20,0x58,0x80,0xc0,0x30,0xce,0x44,0x80,0x80,0xf0,0x20,0x40,0x80,0x0,0x0,
-+0x0,0x9,0xfd,0x13,0x11,0x21,0x25,0x3f,0x65,0xa4,0x27,0x24,0x24,0x3d,0x22,0x0,0x50,0x50,0x54,0xfe,0x50,0x50,0x70,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x50,0x17,0x1c,0xf4,0x41,0x2,0x0,0x50,0x50,0x54,0xfe,0x50,0x50,0x70,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x0,0x42,0x32,0x13,0x2,0x4,0xf0,0x17,0x10,0x10,0x10,0x11,0x12,0x28,0x44,0x3,0x40,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x40,0x80,0xa0,0x18,0x8,0x0,0x6,0xfc,
-+0x0,0x41,0x31,0x17,0x1,0x1,0xf1,0x11,0x11,0x10,0x17,0x10,0x14,0x19,0x12,0x0,0x50,0x50,0x54,0xfe,0x50,0x50,0x70,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x1f,0x4,0x3,0x3e,0x14,0x8,0x76,0x0,0x7f,0x40,0x9f,0x10,0x1e,0x11,0x10,0xff,0xf0,0x40,0x80,0xf8,0x50,0x20,0xdc,0x0,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x14,0xfe,
-+0x0,0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x78,0x4f,0x48,0x48,0x78,0x48,0x48,0x48,0x78,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x8,0x7f,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x13,0x1c,0x20,0x20,0x7c,0x90,0x10,0xfc,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0xb,0xfc,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x50,0x20,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x40,0x58,0x84,0x2,
-+0xf,0x8,0xf,0x28,0x2f,0x28,0x2f,0x20,0x3e,0x2,0xfe,0x12,0x12,0x22,0xc2,0x2,0xe0,0x20,0xe0,0x28,0xe8,0x28,0xe8,0x8,0xf8,0x80,0xfc,0x84,0x84,0x84,0x84,0x80,
-+0x10,0x10,0x10,0x1d,0x21,0x22,0x7d,0x90,0x10,0x7d,0x11,0x11,0x15,0x1a,0x14,0x8,0x40,0x20,0x20,0xfe,0x2,0x4,0xfc,0x20,0x28,0x3c,0x20,0x20,0x20,0xa0,0x66,0x3c,
-+0x2,0x1,0x7f,0x40,0x80,0x1f,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x29,0x47,0x80,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0,0x6,0xfc,0x0,
-+0x0,0x40,0x27,0x20,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x3f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x2,0x4,0x8,0x10,0x3f,0x0,0xf0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x20,0x10,0xf8,0x8,
-+0x2,0x2,0x2,0xff,0x4,0x9,0x9,0x11,0x3f,0x1,0x9,0x9,0x11,0x21,0x45,0x2,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x10,0xf8,0x0,0x40,0x20,0x10,0x18,0x8,0x0,
-+0x4,0x4,0x7,0x8,0x14,0x22,0x1,0x2,0xc,0x30,0xc6,0x1,0x0,0x6,0x1,0x0,0x0,0x0,0xf0,0x20,0x40,0x80,0x0,0xc0,0x30,0xe,0x4,0x80,0x0,0x0,0x80,0x40,
-+0x4,0xff,0x4,0x3f,0x1,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x1,0x7f,0x44,0xfe,0x40,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0xfc,
-+0x21,0x2f,0x21,0x27,0xb0,0xaf,0xa0,0x27,0x24,0x27,0x24,0x27,0x20,0x27,0x20,0x2f,0x14,0xfe,0x10,0xfc,0x40,0xfe,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x40,0xfc,0x40,0xfe,
-+0x0,0x8,0x7c,0x0,0x5,0xfe,0x10,0x10,0x20,0x24,0x42,0xfe,0x41,0x1,0x2,0x4,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x28,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x38,0x35,0x53,0x50,0x91,0x11,0x12,0x14,0x10,0x10,0x40,0x40,0x48,0xfc,0x80,0x80,0xa0,0x24,0xfe,0x20,0x28,0x24,0x22,0x22,0xa0,0x40,
-+0x8,0xb,0xa,0x12,0x13,0x32,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0xfe,0x4,0x14,0xfc,0x4,0x14,0xfc,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x10,0x13,0x12,0x12,0x5b,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0xfe,0x4,0x14,0xfc,0x4,0x14,0xfc,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x0,0x40,0x23,0x10,0x10,0x1,0x1,0xb,0x10,0x60,0x20,0x21,0x22,0x24,0x20,0x0,0x40,0x48,0xfc,0x80,0x80,0x20,0x24,0xfe,0x20,0xa0,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x0,0x43,0x32,0x12,0x83,0x42,0x4a,0x12,0x12,0x22,0xe2,0x22,0x22,0x22,0x22,0x22,0x4,0xfe,0x4,0x14,0xfc,0x4,0x14,0xfc,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x1,0xa,0x37,0x24,0x24,0x27,0x24,0x2c,0x37,0x20,0x4,0x4,0x4,0x8,0x10,0x60,0x0,0x8,0xdc,0x48,0x48,0xc8,0x48,0x48,0xd8,0x8,0x40,0x42,0x42,0x42,0x3e,0x0,
-+0x10,0x11,0x10,0x10,0xfc,0x11,0x14,0x18,0x30,0xd0,0x17,0x10,0x10,0x10,0x50,0x20,0x10,0x10,0xd0,0x50,0x10,0x10,0xd0,0x50,0x14,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x8,0x6,0x2,0x10,0xc,0x4,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0x7e,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x78,0x48,0x53,0x50,0x60,0x57,0x48,0x4a,0x4a,0x6a,0x52,0x45,0x44,0x48,0x40,0x40,0x40,0x50,0xf8,0x40,0x48,0xfc,0x40,0x50,0x78,0x40,0x40,0x40,0xc6,0x3c,0x0,
-+0x0,0x7f,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x0,0x8,0x4,0x2,0xff,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x0,0x20,0x40,0x84,0xfe,0x0,
-+0x0,0x47,0x20,0x20,0x3,0x2,0xf2,0x13,0x10,0x11,0x10,0x17,0x10,0x28,0x47,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x10,0xa0,0xfc,0x0,0x6,0xfc,0x0,
-+0x1,0x0,0x1f,0x10,0x97,0x50,0x53,0x12,0x32,0x52,0xd3,0x10,0x21,0x20,0x4f,0x0,0x0,0x84,0xfe,0x0,0xfc,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x10,0xa4,0xfe,0x0,
-+0x10,0x12,0x7f,0x12,0x14,0xff,0x8,0x12,0x3f,0x62,0xa2,0x3e,0x22,0x22,0x3e,0x22,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xe,0x8,0xff,0x28,0x2a,0x49,0x58,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0xf4,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x1,0x3f,0x1,0x1f,0x1,0x7f,0x0,0x1f,0x12,0x11,0xff,0x22,0x21,0x3f,0x0,0x0,0x10,0xf8,0x0,0xf0,0x0,0xfc,0x0,0xf0,0x10,0x14,0xfe,0x10,0x10,0xf8,0x10,0x60,
-+0x10,0x10,0x51,0x50,0x7c,0x53,0x90,0x14,0x19,0x30,0xd7,0x10,0x10,0x10,0x10,0x13,0x20,0x28,0xfc,0x20,0x20,0xfe,0x92,0x54,0x10,0x94,0xfe,0x20,0x20,0x50,0x8c,0x4,
-+0x0,0x44,0x28,0x10,0x2b,0x4a,0x8a,0x1a,0x2a,0x4b,0xa,0x8,0x8,0x8,0x57,0x20,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x48,0x78,0x84,0x4,
-+0x0,0x20,0x13,0x10,0x0,0x7,0xf0,0x10,0x11,0x10,0x17,0x10,0x14,0x18,0x10,0x3,0x20,0x28,0xfc,0x20,0x20,0xfe,0x92,0x54,0x10,0x94,0xfe,0x20,0x20,0x50,0x8c,0x4,
-+0x10,0x10,0x10,0x11,0xfc,0x10,0x17,0x10,0x10,0x11,0x1e,0xe4,0x48,0x10,0x0,0x0,0x40,0x40,0x44,0xf8,0x48,0x50,0xfe,0x48,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,
-+0x8,0x7c,0x48,0x49,0x48,0x78,0x4f,0x48,0x48,0x79,0x4a,0x4c,0x48,0x78,0x48,0x0,0x40,0x40,0x44,0xf8,0x48,0x50,0xfe,0x48,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,
-+0x4,0x7e,0x44,0x55,0x54,0x54,0x57,0x54,0x54,0x55,0x56,0x54,0x10,0x28,0x44,0x84,0x40,0x40,0x44,0xf8,0x48,0x50,0xfe,0x48,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,
-+0x10,0x10,0x10,0x14,0xfe,0x10,0x31,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x13,0x10,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x3b,0x42,0x82,0x7b,0x22,0x22,0xfa,0x23,0x22,0x2a,0x34,0x24,0x8,0x3,0x40,0x24,0xfe,0x50,0x50,0xfc,0x50,0x70,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x3e,0x24,0x24,0x24,0x3c,0x25,0x24,0x24,0x3c,0x24,0x24,0x24,0x27,0x54,0x88,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x1,0x0,0x3f,0x22,0x22,0x3f,0x22,0x23,0x20,0x2f,0x22,0x21,0x20,0x43,0x8c,0x30,0x0,0x84,0xfe,0x20,0x28,0xfc,0x20,0xe0,0x0,0xf0,0x20,0x40,0x80,0x60,0x1e,0x4,
-+0x0,0x40,0x37,0x14,0x84,0x67,0x24,0x4,0x14,0x25,0xe4,0x24,0x28,0x28,0x31,0x26,0x80,0x44,0xfe,0x90,0x94,0xfe,0x90,0xf0,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x10,0x10,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x2a,0x46,0x84,0x8,0x40,0x20,0x20,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x20,0x11,0x11,0xfd,0x1,0x48,0x4b,0x48,0x49,0x49,0x11,0x1d,0xe1,0x41,0x1,0x20,0x20,0x24,0x24,0x24,0xfc,0x0,0xfe,0x44,0xfe,0x54,0x54,0x54,0x54,0x4,0xc,
-+0x20,0x20,0x2b,0x3c,0x50,0x91,0x11,0x15,0xff,0x11,0x10,0x11,0x28,0x24,0x47,0x80,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x8,0x90,0x94,0xfe,0x0,
-+0x21,0x26,0x3c,0x44,0x87,0x7c,0x24,0x27,0xfd,0x24,0x24,0x27,0x2c,0x34,0x25,0x6,0x88,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x0,0x6,0x38,0x20,0x24,0x3e,0x21,0x24,0x3e,0x20,0x20,0x3e,0xe0,0x20,0x20,0x23,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xf8,0x88,0x90,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x44,0x64,0x55,0x4e,0x44,0x7f,0x44,0x4e,0x55,0x64,0x44,0x44,0x7f,0x40,0x1,0x0,0xc,0xf0,0x40,0x40,0x44,0x7e,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x88,0x8,
-+0x21,0x26,0x24,0x44,0x4f,0xf4,0x24,0x47,0x45,0xfc,0x4,0xf,0x34,0xc4,0x5,0x6,0x88,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x10,0x10,0x11,0xfd,0x13,0x15,0x11,0x11,0x1d,0xe1,0x41,0x1,0x1,0x1,0x80,0xa0,0x90,0x84,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,
-+0x10,0x8,0x4,0x1f,0x10,0x10,0x10,0x10,0x1f,0x14,0x4,0x4,0x8,0x8,0x10,0x60,0x10,0x20,0x50,0xf8,0x10,0x10,0x10,0x10,0xf0,0x50,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x7c,0x44,0x48,0x48,0x50,0x48,0x48,0x44,0x44,0x44,0x69,0x51,0x42,0x44,0x48,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0x10,0x8,0x6,0x4,
-+0x0,0x0,0x0,0xfc,0x7,0x4,0x48,0x29,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x24,0x22,0x3f,0x20,0x2f,0xf8,0x2f,0x20,0x2f,0x21,0x22,0x3f,0xe2,0x42,0xa,0x4,0x20,0xa0,0xe0,0x24,0xbe,0xc4,0xa4,0x24,0xa4,0x28,0x28,0x90,0x10,0x28,0x46,0x84,
-+0x0,0x8,0x7c,0x4f,0x48,0x48,0x4a,0x4a,0x4a,0x4a,0x4b,0x7a,0x48,0x0,0x0,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,
-+0x8,0x7f,0x48,0x49,0x49,0x49,0x79,0x51,0x11,0x59,0x50,0x57,0x59,0xe0,0x40,0x0,0x88,0xfe,0x54,0xfe,0x54,0xdc,0x4,0xfc,0x4,0xfc,0x8,0xfe,0x8,0x88,0x28,0x10,
-+0x10,0xa,0xff,0x0,0x7e,0x43,0x42,0x7e,0x0,0x7e,0x4,0x8,0xfe,0x8,0x29,0x12,0x40,0x40,0x44,0x7e,0x88,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x11,0x14,0xfe,0x11,0x55,0x55,0x55,0x55,0x7d,0x55,0x11,0x14,0x18,0x10,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x50,0x8c,0x4,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x49,0x49,0x49,0x4f,0x49,0x41,0x40,0x40,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0x24,0x24,0xe4,0x4,0x14,0xf4,0x4,0xfc,0x4,
-+0x10,0x10,0x1c,0x23,0x20,0x7d,0x91,0x11,0xfd,0x11,0x11,0x10,0x14,0x18,0x10,0x0,0x20,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x48,0x48,0x8f,0x8,0x78,0x80,0x80,0x84,0xfe,0x80,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x47,0x24,0x24,0x7,0x4,0xe5,0x25,0x25,0x25,0x25,0x29,0x21,0x50,0x8f,0x0,0x38,0xc0,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x6,0xfc,0x0,
-+0x20,0x2f,0x24,0x25,0xfa,0x25,0x28,0x20,0x3f,0xe0,0x28,0x25,0x22,0x25,0xa8,0x50,0x0,0xfc,0xa4,0x28,0x10,0x28,0xc4,0x0,0xbc,0x84,0xc4,0x28,0x10,0x28,0xce,0x84,
-+0x0,0x8,0x7c,0x49,0x4a,0x48,0x48,0x49,0x4e,0x48,0x49,0x7a,0x48,0x0,0x1,0x6,0x40,0x40,0xfc,0x8,0x90,0x60,0x40,0xa0,0x7e,0x84,0x88,0x50,0x20,0x40,0x80,0x0,
-+0x2,0x2,0x7,0x8,0x18,0x25,0x2,0xc,0x71,0x2,0xc,0x12,0x21,0x1,0xe,0x70,0x0,0x0,0xf0,0x20,0x40,0x80,0x80,0x80,0xfc,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,
-+0x1,0x1,0x7f,0x2,0x4,0x8,0x30,0xc0,0x0,0x7f,0x4,0x2,0x2,0x0,0x0,0x0,0x0,0x8,0xfc,0x80,0x40,0x30,0xe,0x24,0x20,0xfc,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x16,0x10,0x1f,0x10,0x1c,0xf1,0x42,0x4,0x8,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x4c,0x40,0xfe,0xc0,0xe0,0x50,0x48,0x46,0x44,0x40,
-+0x8,0x10,0x3c,0x24,0x3c,0x24,0x3d,0x24,0xff,0x14,0x14,0x24,0x24,0x45,0x96,0x8,0x8,0xfc,0x88,0x88,0x88,0x88,0x26,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x26,0x24,0x20,
-+0x0,0xf,0x8,0x8,0x8,0x8,0x31,0x1,0xff,0x3,0x3,0x5,0x9,0x11,0x61,0x1,0x20,0xf0,0x20,0x20,0x20,0x20,0x1c,0x0,0xfe,0x0,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x8,0x7d,0x49,0x49,0x49,0x49,0x7a,0x10,0x17,0x58,0x50,0x51,0x5d,0xe2,0x44,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xc,0x40,0xfe,0xc0,0xe0,0x50,0x4e,0x44,0x40,0x40,
-+0x8,0x10,0x3c,0x25,0x35,0x2e,0x24,0xfc,0x24,0x34,0x2c,0x24,0x24,0x44,0x94,0x8,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xa0,0xc0,0x80,0x84,0x84,0x7c,0x0,
-+0x2,0x3f,0x22,0x22,0x22,0x22,0x49,0x9,0xff,0x8,0x1c,0x2b,0x49,0x88,0x8,0x8,0x4,0x4,0x4,0x24,0x24,0x24,0xa4,0x24,0xa4,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x17,0x11,0x59,0x56,0x53,0x94,0x19,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0x84,0xfe,0x0,0xfc,0x20,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x0,0x7b,0x48,0x49,0x52,0x4c,0x48,0x68,0x50,0x41,0x41,0x3f,0x1,0x1,0xff,0x0,0x44,0xfe,0x88,0xfc,0x88,0xf8,0x88,0xf8,0x88,0x98,0x0,0xf8,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xf2,0x41,0x10,0xd4,0x92,0x90,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2,
-+0x10,0x10,0x13,0x54,0x54,0x57,0x54,0x54,0x54,0x57,0x54,0x54,0x5c,0x74,0x42,0x1,0x10,0xd0,0x94,0x92,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2,
-+0x8,0x38,0xec,0x2a,0x28,0xfe,0x28,0x28,0x38,0xea,0x2c,0x28,0x35,0x24,0xa5,0x42,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x80,0xfe,0x2,0x12,0xfa,0x2,0x14,0x8,
-+0x8,0x9,0xf,0x11,0x11,0x3f,0x51,0x91,0x11,0x13,0x1d,0x11,0x11,0x11,0x15,0x12,0x20,0xa8,0x24,0x20,0x24,0xfe,0x20,0x20,0xa4,0x18,0x10,0x30,0x48,0x8a,0x6,0x2,
-+0x10,0x8,0x7f,0x41,0x92,0x1e,0x22,0x54,0x8,0x14,0x22,0x7f,0xa2,0x22,0x3e,0x20,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x46,0x82,
-+0x1,0x41,0x31,0x11,0x1,0x3,0xf5,0x19,0x11,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x20,0x20,0x24,0x2c,0x30,0x20,0x60,0xa0,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x27,0x24,0x24,0x24,0x45,0x2a,0x10,0x28,0x44,0x86,0x1,0x10,0xd0,0x94,0x92,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2,
-+0x0,0x7f,0x4,0x24,0x14,0x14,0x4,0x4,0xff,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x8,0xfc,0x40,0x48,0x58,0x60,0x40,0x44,0xfe,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0,
-+0x0,0x3f,0x20,0x20,0x20,0x27,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x43,0x80,0x8,0xfc,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0xa0,0x40,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x14,0x58,0x20,0x0,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x90,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x47,0x24,0x27,0x4,0x7,0xe2,0x25,0x2c,0x34,0x25,0x24,0x27,0x50,0x8f,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x88,0x88,0x48,0x28,0xd0,0x6,0xfc,0x0,
-+0x0,0x77,0x55,0x55,0x77,0x0,0x7f,0x0,0xff,0x10,0x22,0x3f,0x2,0x2,0x12,0xc,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x20,0x23,0x3c,0x24,0x4b,0x40,0xa0,0x20,0x21,0x22,0x20,0x28,0x30,0x22,0x1,0x10,0xd0,0x94,0x92,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2,
-+0x0,0x3f,0x21,0x21,0x2f,0x21,0x22,0x24,0x28,0x3f,0x20,0x2,0x51,0x50,0x90,0xf,0x8,0xfc,0x8,0x48,0xe8,0x8,0x88,0x68,0x28,0xf8,0x8,0x0,0x84,0x92,0x12,0xf0,
-+0x0,0xff,0x2,0x2,0x4,0x7f,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0x4,0xfe,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x54,0x8,
-+0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0,
-+0x0,0x7f,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0x8,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0x3e,0xe0,0x20,0x20,0x20,0x20,
-+0x8,0xc,0x8,0x1f,0x20,0x41,0x81,0x1,0x9,0x9,0x11,0x11,0x21,0x1,0x5,0x2,0x0,0x0,0x8,0xfc,0x8,0x10,0x0,0x0,0x40,0x20,0x10,0x18,0x8,0x0,0x0,0x0,
-+0x20,0x23,0x21,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x27,0x20,0x28,0x30,0x20,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0x8,
-+0x0,0x47,0x32,0x12,0x83,0x62,0x22,0xb,0x12,0x22,0xe2,0x2f,0x20,0x20,0x20,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,
-+0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x0,0x0,0xff,0x0,0x3f,0x0,0x7f,0x0,0x3f,0x20,0x24,0x24,0x24,0xa,0x11,0x60,0x28,0x24,0xfe,0x20,0xa0,0x20,0xe0,0x20,0xa0,0x90,0x90,0x90,0x92,0xa,0x8a,0x84,
-+0x1,0x11,0x11,0x21,0x7f,0x2,0x2,0x7,0x6,0xa,0x9,0x10,0x21,0x42,0x8c,0x30,0x0,0x20,0x10,0x4,0xfe,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x7f,0x44,0x44,0x7f,0x20,0x18,0x8,0x0,0xf0,0x10,0x12,0x14,0x18,0x10,0x0,0x4,0xfe,0x44,0x44,0xfc,0x0,0x8,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x28,0x10,
-+0x10,0x1f,0x28,0x45,0x0,0x8,0x8,0x10,0x37,0x50,0x90,0x10,0x10,0x10,0x13,0x10,0x40,0x7c,0xa0,0x10,0x80,0x90,0x88,0xfe,0x80,0x50,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x57,0x90,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x10,0x80,0xa0,0x98,0x88,0x80,0xfc,0x80,0x88,0x88,0x50,0x60,0x40,0xa0,0x12,0xa,0x6,
-+0x0,0x0,0x7f,0x4,0x3,0x1,0x3f,0x0,0x0,0x1,0x6,0x8,0x30,0x48,0x7,0x0,0x10,0x78,0x80,0x0,0x0,0x0,0xf8,0x10,0x60,0x80,0x0,0x0,0x0,0x6,0xfc,0x0,
-+0x20,0x17,0x10,0x45,0x45,0x49,0x49,0x5f,0x69,0x48,0x48,0x49,0x4a,0x48,0x48,0x40,0x4,0xfe,0x4,0x44,0x24,0x4,0xf4,0x4,0x24,0xc4,0x84,0x44,0x54,0x34,0x4,0xc,
-+0x0,0x40,0x30,0x10,0x87,0x60,0x20,0x8,0x17,0x20,0xe0,0x20,0x21,0x22,0x27,0x20,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x0,0x10,0xf8,0x20,0x27,0x20,0x20,0xf8,0x2f,0x20,0x20,0x20,0x39,0xe2,0x47,0x0,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0x8,0x4,0xfe,0x2,
-+0x8,0xff,0x8,0x4f,0x24,0x22,0x8f,0x62,0x2a,0x14,0x2f,0xe4,0x27,0x24,0x27,0x24,0x24,0xfe,0x20,0xf8,0x90,0xa0,0xfc,0xa0,0x90,0x8e,0xf4,0x90,0xf0,0x90,0xf0,0x10,
-+0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x54,0x11,0x11,0x12,0x14,0x8,0xfc,0x88,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0x88,0xa,0xa,0x6,0x0,
-+0x0,0x3f,0x11,0xd,0x5,0xff,0x9,0x11,0x3f,0xd1,0x11,0x1f,0x11,0x11,0x1f,0x10,0x78,0x80,0x10,0x30,0x44,0xfe,0x20,0x10,0xfe,0x14,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0xe,0xf1,0x54,0x38,0xfe,0x11,0x54,0x92,0x7c,0x54,0x55,0x7c,0x54,0x54,0x7d,0x44,0x4,0xde,0x44,0x44,0x44,0x54,0xcc,0x44,0x44,0xcc,0x54,0x44,0x44,0x44,0x54,0x88,
-+0x10,0x14,0x12,0xfd,0x12,0x38,0x56,0x91,0x12,0x14,0x1,0xff,0x2,0x4,0x18,0x60,0x10,0x50,0x94,0x7e,0x90,0x38,0xd4,0x12,0x90,0x50,0x4,0xfe,0x80,0x40,0x3c,0x8,
-+0x8,0xfd,0x11,0x11,0x21,0x29,0x7d,0xa9,0x29,0x29,0x29,0x29,0x3a,0x2a,0x4,0x8,0x10,0xf8,0x10,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x10,0x11,0x3d,0x21,0x41,0xfd,0x11,0x11,0xfd,0x11,0x11,0x15,0x1a,0x12,0x4,0x8,0x10,0xf8,0x10,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x22,0x3f,0x40,0xbe,0x2a,0xff,0x2a,0x3e,0x2,0x1f,0x1,0x6,0x3f,0x9,0x19,0x22,0x20,0x24,0x7e,0xc4,0x28,0x90,0x2e,0xc4,0x20,0xc0,0x80,0x10,0xf8,0x20,0x18,0x8,
-+0x0,0xf,0x8,0x8,0x8,0xa,0x9,0x9,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xa0,0xa0,0x20,0x20,0x22,0x22,0x22,0x1e,0x0,
-+0x10,0x13,0x10,0x14,0x59,0x51,0x51,0x91,0x11,0x11,0x11,0x29,0x24,0x44,0x81,0x2,0x4,0xfe,0x40,0x88,0xfc,0x8,0x28,0x28,0x28,0x48,0x48,0x48,0x80,0x90,0xc,0x4,
-+0x0,0x0,0x3f,0x20,0x20,0x3f,0x24,0x24,0x22,0x22,0x21,0x20,0x41,0x42,0x84,0x18,0x10,0x78,0x80,0x0,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x40,0x33,0x12,0x2,0x2,0xf2,0x12,0x12,0x12,0x12,0x14,0x15,0x28,0x44,0x3,0x8,0x1c,0xe0,0x0,0x0,0xf8,0x8,0x90,0x50,0x20,0x50,0x8c,0x4,0x0,0x6,0xfc,
-+0x8,0x8,0xff,0x8,0x20,0x1b,0x4a,0x22,0x22,0xa,0xf2,0x22,0x22,0x22,0x21,0x20,0x20,0x24,0xfe,0x20,0x10,0xf8,0x10,0x10,0x10,0x50,0x20,0x0,0x2,0x2,0xfe,0x0,
-+0x4,0x7e,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x11,0x2a,0x44,0x81,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x48,0x8e,0x4,
-+0x2,0x44,0x29,0x11,0x29,0x49,0x89,0x9,0x19,0x29,0x49,0x89,0x9,0x9,0x50,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x20,0x20,0x21,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x21,0x25,0x29,0x32,0x24,0x9,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x48,0x8e,0x4,
-+0x0,0x40,0x37,0x10,0x80,0x40,0x47,0x10,0x10,0x20,0xe0,0x21,0x26,0x29,0x20,0x20,0x10,0x38,0xc0,0x80,0x40,0x40,0xfc,0x8,0x30,0x40,0x80,0x0,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x10,0x10,0x1c,0xf0,0x41,0x1,0x2,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x8,0x8,0xff,0x8,0xa,0x1,0xff,0x4,0x4,0x7,0x4,0x4,0x8,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x20,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x4,0x3,0x1,0x0,0xff,0x4,0x4,0x7,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x4,0x3e,0x24,0x24,0x27,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x25,0x25,0x4e,0x84,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x2,0x1,0x3f,0x20,0x3f,0x21,0x20,0x3f,0x22,0x22,0x23,0x22,0x44,0x44,0x88,0x10,0x0,0x8,0xfc,0x8,0xf8,0x0,0x84,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xa0,0x40,
-+0x0,0x7c,0x44,0x48,0x4f,0x50,0x48,0x48,0x44,0x44,0x44,0x68,0x51,0x41,0x42,0x44,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x10,0x10,0xff,0x24,0x24,0x24,0x24,0x44,0x28,0x10,0x29,0x45,0x82,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x0,0x20,0x10,0x10,0x7,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x20,0x20,0x47,0xfc,0x10,0x20,0x40,0xfc,0x40,0x0,0x1d,0xe1,0x42,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x20,0x10,0x10,0x0,0xff,0x20,0x24,0x3e,0x24,0x24,0x24,0x24,0x44,0x54,0x89,0x2,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x8,0x8,0xff,0x8,0x4,0x4,0x7c,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x4,0x4,0x20,0x24,0xfe,0x20,0x40,0x48,0x7c,0x40,0x48,0x7c,0x40,0x44,0x7e,0x40,0x40,0x40,
-+0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x40,0x40,0x44,0x7e,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,
-+0x0,0x8,0x7c,0x4f,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x4f,0x0,0x0,0x0,0x90,0x90,0x94,0x9e,0x90,0x90,0x94,0x9e,0x90,0x90,0x90,0x94,0x9e,0x90,0x90,0x90,
-+0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x24,0x2c,0x30,0x20,0x30,0x2c,0x24,0x20,0x20,0x10,0x12,0xa,0x4,
-+0x4,0x7f,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x54,0x88,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x2,0x2,0x2,0xfe,0x0,
-+0x0,0x7f,0x42,0x42,0x5e,0x42,0x42,0x5e,0x42,0x42,0x7e,0x42,0x42,0x42,0x7f,0x0,0x4,0xfe,0x40,0x50,0x78,0x40,0x50,0x78,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x10,0x10,0x7,0x0,0xf0,0x10,0x13,0x10,0x10,0x10,0x17,0x14,0x18,0x10,0x0,0x90,0x90,0x94,0x9e,0x90,0x90,0x90,0x9c,0x90,0x90,0x94,0x9e,0x90,0x90,0x90,0x90,
-+0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x49,0x79,0x4a,0x2,0x4,0x8,0x40,0x50,0x48,0x48,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,0x0,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x24,0x54,0x88,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,0x20,
-+0x1,0x0,0x3f,0x20,0x24,0x24,0x2f,0x21,0x23,0x22,0x25,0x24,0x28,0x30,0x43,0x8c,0x0,0x88,0xfc,0x80,0x90,0x88,0xfe,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x1,0x41,0x2f,0x21,0x1,0x8f,0x49,0x9,0x1f,0x29,0xe1,0x21,0x22,0x22,0x24,0x28,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xfe,0x22,0x22,0x2a,0x24,0x20,0x20,0x20,
-+0x4,0x7f,0x4,0x7f,0x44,0x7f,0x4,0x8,0x3f,0xd0,0x11,0x11,0x11,0x2,0xc,0x30,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x42,0x4a,0xf4,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x8,0x8,0xff,0x8,0x4,0x4,0x8,0x10,0x20,0xcf,0x4,0x4,0x4,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x80,0x80,0x40,0x30,0xe,0xe4,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x1,0x8,0x48,0x48,0x48,0x84,0x84,0x2,0xfc,0x44,0x44,0x44,0x44,0x44,0x44,0x94,0x8,
-+0x0,0x8,0x7c,0x48,0x48,0x49,0x49,0x4a,0x4d,0x48,0x48,0x78,0x49,0x1,0x2,0x4,0x20,0xa0,0xa0,0x90,0x90,0x8,0xe,0x4,0xf8,0x88,0x88,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0x1,0x9,0x8,0x10,0x3f,0x48,0x8,0x8,0x12,0x21,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x8,0x8,0x88,0x48,0xb8,0xa8,0x88,0x8a,0x8a,0x4,
-+0x0,0x4,0x4,0x8,0x8,0x10,0x20,0x4f,0x84,0x4,0x4,0x4,0x4,0x8,0x11,0x20,0x80,0x80,0x40,0x40,0x20,0x10,0x8,0xee,0x24,0x20,0x20,0x20,0x20,0x20,0x40,0x80,
-+0x10,0x10,0x20,0x20,0x48,0xf9,0x11,0x22,0x45,0xf8,0x40,0x0,0x19,0xe1,0x42,0x4,0x20,0xa0,0xa0,0x90,0x90,0x8,0xe,0x4,0xf8,0x88,0x88,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x10,0x10,0x10,0x1c,0xf0,0x40,0x1,0x6,0x40,0x20,0x20,0x4,0xfe,0x88,0x88,0x88,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x8,0x8,0xfe,0x18,0x2c,0x4b,0x8,0x1,0x11,0x9,0xa,0x4,0x8,0x30,0xc0,0x20,0x20,0x24,0xfe,0x60,0xb8,0x24,0x20,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x41,0x31,0x11,0x82,0x64,0x28,0x7,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x28,0x20,0x20,0x20,0x10,0x10,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x10,0x10,0x10,0x54,0x38,0x11,0xfd,0x12,0x39,0x34,0x50,0x90,0x11,0x11,0x12,0x14,0x20,0xa0,0xa0,0x90,0x90,0x8,0xe,0x4,0xf8,0x88,0x88,0x88,0x8,0x8,0x28,0x10,
-+0x1,0x1,0x1,0xff,0x2,0x4,0x8,0x30,0xdf,0x11,0x11,0x1f,0x11,0x11,0x1f,0x10,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0x1e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x8,0x9,0x9,0x11,0x12,0x32,0x54,0x9b,0x11,0x11,0x11,0x11,0x12,0x12,0x14,0x10,0x20,0x20,0x20,0x10,0x10,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x0,0x4,0x4,0x8,0x1f,0x24,0xc4,0x9,0x30,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x80,0x80,0x40,0x20,0xf0,0x2e,0x24,0x20,0xc0,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0,
-+0x10,0x10,0x13,0x10,0x59,0x57,0x51,0x93,0x12,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0x50,0xf8,0x40,0x54,0xfe,0x10,0xf8,0x8,0x48,0x48,0x48,0x48,0xa0,0x18,0x8,
-+0x11,0xd,0x5,0x7f,0x3,0x5,0x19,0x4,0x4,0x3f,0x4,0x4,0xff,0x8,0x18,0x20,0x10,0x30,0x40,0xfc,0x80,0x40,0x3c,0x48,0x40,0xf8,0x40,0x44,0xfe,0x20,0x18,0x8,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xa,0x7f,0x8,0xa,0xff,0x8,0xa,0x7f,0x8,0x8,0xf,0x78,0x20,0x0,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x3b,0x36,0x52,0x52,0x92,0x13,0x12,0x14,0x14,0x18,0x0,0x8,0xfc,0x8,0x8,0x8,0x18,0xa8,0x48,0x48,0xa8,0x18,0x8,0xa,0xa,0x6,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x57,0x54,0x7c,0x51,0x14,0x1d,0xe4,0x40,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x11,0x56,0x54,0x54,0x57,0x54,0x54,0x55,0x5c,0x65,0x0,0x0,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x1d,0x22,0x20,0x7c,0x93,0x10,0xfc,0x11,0x10,0x15,0x18,0x10,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20,
-+0x0,0x3f,0x20,0x28,0x24,0x22,0x22,0x21,0x21,0x22,0x22,0x24,0x28,0x30,0x40,0x80,0x10,0xf8,0x10,0x50,0x50,0x90,0x90,0x10,0x10,0x90,0x90,0x50,0x50,0x12,0xa,0x6,
-+0x1,0x0,0x1f,0x10,0x97,0x54,0x56,0x15,0x34,0x54,0xd4,0x14,0x25,0x2a,0x48,0x10,0x0,0x84,0xfe,0x8,0xfc,0x8,0x18,0x18,0xa8,0x48,0x48,0xa8,0x18,0x1a,0xa,0x6,
-+0x10,0x10,0x10,0x15,0x5a,0x50,0x50,0x93,0x10,0x10,0x29,0x24,0x45,0x40,0x80,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20,
-+0x0,0x41,0x23,0x24,0x0,0x1,0xee,0x20,0x27,0x20,0x23,0x20,0x27,0x20,0x50,0x8f,0x80,0xfc,0x8,0xb0,0x40,0xb0,0x4e,0x40,0xfc,0x40,0xf8,0x40,0xfc,0x40,0x46,0xfc,
-+0x0,0x47,0x30,0x12,0x2,0xa,0x12,0x12,0x23,0xe0,0x20,0x2f,0x20,0x20,0x20,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10,
-+0x10,0x10,0x24,0x23,0x4a,0xf8,0x17,0x22,0x42,0xfa,0x42,0x3,0x1a,0xe2,0x45,0x8,0x40,0x7c,0x88,0x50,0x20,0xd8,0x26,0xf8,0x20,0xf8,0x20,0xfc,0x20,0x20,0x26,0xfc,
-+0x0,0x47,0x24,0x24,0x6,0x5,0xe4,0x24,0x24,0x24,0x25,0x2e,0x34,0x24,0x8,0x10,0x8,0xfc,0x8,0x8,0x18,0x18,0xa8,0x48,0x48,0xa8,0x18,0x18,0x8,0xa,0xa,0x6,
-+0x1,0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x9,0x31,0xcf,0x1,0x1f,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0x1e,0xe4,0x0,0xf0,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x20,0x2f,0x20,0x28,0x24,0x22,0x21,0x22,0x24,0x28,0x20,0x40,0x80,0x10,0xf8,0x10,0x10,0xf0,0x50,0x50,0x90,0x90,0x10,0x90,0xd0,0x50,0x12,0xa,0x6,
-+0x10,0x12,0x12,0x2f,0x22,0x62,0xaf,0x2a,0x2a,0x2f,0x22,0x22,0x22,0x24,0x28,0x20,0x40,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x0,0xff,0x0,0x1,0x3,0x5,0x9,0x31,0xc1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x4,0xfe,0x80,0x0,0x0,0x60,0x18,0x6,0x12,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x40,0x30,0xe,0x4,
-+0x8,0xff,0x8,0x7f,0x49,0x7f,0x49,0x7f,0x49,0x8,0xff,0x10,0x1e,0x12,0x22,0x47,0x20,0xa0,0x20,0x24,0x7e,0x84,0x44,0x44,0x28,0x28,0x90,0x10,0x28,0x48,0x86,0x4,
-+0x4,0x3e,0x24,0x25,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x24,0x4d,0x86,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x20,0x57,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x77,0x14,0x24,0x24,0x44,0x84,0xc,0xf0,0x2,0x54,0x54,0x0,0x7c,0x8,0x10,0x14,0xfe,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x10,0x11,0xfc,0x10,0x14,0x1b,0x30,0xd0,0x10,0x10,0x10,0x10,0x51,0x26,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x11,0x11,0x17,0xf9,0x11,0x17,0x1d,0x35,0xd7,0x11,0x11,0x11,0x12,0x54,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xfe,0x22,0x22,0x2a,0x24,0x20,0x20,
-+0x10,0x17,0x20,0xfb,0x22,0x52,0x53,0xf8,0x17,0x14,0xfc,0x17,0x14,0x14,0x17,0x14,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x10,0x11,0x14,0x7e,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x11,0x8,0xfc,0x0,0xf8,0x88,0x88,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0xa,0x7f,0xa,0x7f,0x4a,0x7f,0xa,0xa,0x12,0x62,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x8,0xc8,0x48,0xc8,0x8,0xe8,0x28,0xaa,0x4a,0x4,
-+0x10,0x12,0x1f,0x28,0x45,0x88,0x8,0x17,0x30,0x52,0x91,0x11,0x10,0x10,0x10,0x10,0x40,0x44,0x7e,0xa0,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x8,0x8,0x8,0x10,0x10,0x3f,0x50,0x90,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x40,0x40,0x50,0x4c,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x10,0x10,0x17,0x20,0x22,0x62,0xa0,0x27,0x20,0x20,0x2f,0x20,0x20,0x20,0x21,0x20,0x8,0x3c,0xc0,0x8,0x48,0x50,0x0,0xf8,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x22,0x4a,0x84,0x8,0xfc,0x88,0x88,0x88,0x98,0x80,0xfc,0xa4,0xa4,0xa8,0x90,0xa8,0xa8,0xc6,0x84,
-+0x40,0x30,0x17,0x0,0x82,0x62,0x20,0xb,0x10,0x20,0xef,0x20,0x20,0x20,0x21,0x20,0x8,0x3c,0xc0,0x8,0x48,0x50,0x0,0xf8,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x40,0x30,0x17,0x0,0x81,0x60,0x20,0xf,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x48,0xfc,0x0,0x10,0xa0,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x17,0x10,0x3,0xfa,0xa,0x13,0x38,0x57,0x94,0x14,0x17,0x14,0x14,0x17,0x14,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x20,0x10,0x10,0x1,0xfd,0xb,0x15,0x31,0x55,0x99,0x15,0x11,0x11,0x11,0x11,0x11,0x90,0x90,0x94,0x12,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x28,0x28,0x46,0x84,0x0,
-+0x4,0x4,0x4,0x7f,0x4,0x4,0x7f,0x44,0x44,0x7f,0x44,0x4,0x8,0x30,0xc0,0x0,0x40,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x1,0x1,0xff,0x1,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x21,0x21,0x20,0x20,0x14,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x17,0x18,0x30,0xd0,0x10,0x11,0x11,0x12,0x54,0x28,0x0,0x8,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x15,0xfe,0x20,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x49,0x9,0x9,0x9,0x28,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x10,0x10,0x17,0x24,0x24,0x64,0xa5,0x25,0x27,0x25,0x25,0x25,0x29,0x29,0x31,0x21,0x80,0x44,0xfe,0x80,0x88,0x88,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x28,0x10,
-+0x4,0x8,0x14,0x62,0x1,0xe,0x30,0xdf,0x1,0x1,0x3f,0x1,0x9,0x5,0x7f,0x0,0x40,0x20,0x50,0x8c,0x0,0xe0,0x1e,0xf4,0x0,0x10,0xf8,0x0,0x20,0x48,0xfc,0x0,
-+0x4,0x8,0x34,0x3,0xc,0x30,0xc0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x20,0x40,0x0,0x40,0x20,0x58,0x80,0x60,0x1e,0xe4,0x0,0x0,0x10,0xf8,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x3c,0x27,0x24,0x24,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x25,0x45,0x8d,0x28,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x8,0x7c,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4b,0x7a,0x4a,0x4a,0x4a,0x5a,0x84,0x8,0x40,0x24,0xfe,0x40,0x44,0x44,0x84,0xfe,0x84,0xa4,0x94,0x94,0x84,0x84,0x94,0x88,
-+0x2,0x1,0x3f,0x22,0x22,0x22,0x24,0x27,0x2c,0x35,0x24,0x24,0x24,0x44,0x84,0x4,0x0,0x8,0xfc,0x0,0x10,0x10,0x14,0xfe,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x1,0x0,0x3f,0x22,0x22,0x25,0x2c,0x34,0x24,0x2f,0x29,0x2a,0x48,0x49,0x8a,0x8,0x0,0x84,0xfe,0x10,0x14,0xfe,0x90,0x10,0xb4,0xfe,0x44,0xa4,0x84,0x44,0x34,0x8,
-+0x8,0x8,0xa,0x7f,0x8,0xa,0xff,0x8,0x28,0x2a,0x2f,0x28,0x28,0x58,0x88,0x7,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x6,0xfc,
-+0x0,0xff,0x0,0x3f,0x20,0x20,0x3f,0x0,0x7f,0x44,0x44,0x7f,0x44,0x44,0x7f,0x40,0x44,0xe4,0x84,0xd4,0x94,0x94,0x94,0x54,0xf4,0x54,0x54,0xd4,0x44,0x44,0xd4,0x48,
-+0xff,0x4,0x3f,0x24,0x3f,0x12,0x23,0x4a,0x17,0x32,0x53,0x91,0x13,0x1d,0x10,0x17,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfc,0x0,0xf8,0x48,0xf8,0x0,0xf8,0x10,0xe2,0x1c,
-+0x4,0x7e,0x44,0x55,0x54,0x54,0x57,0x54,0x55,0x55,0x55,0x11,0x29,0x27,0x45,0x80,0x8,0x8,0x2c,0xfa,0x8,0x8,0xfe,0x48,0x48,0x78,0x48,0x48,0x78,0xca,0xa,0x4,
-+0x10,0x1f,0x20,0x2f,0x48,0x8f,0x8,0xf,0x4,0xf,0xc,0x12,0x21,0x42,0x4,0x38,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf0,0x20,0x40,0x80,0x40,0x30,0xe,
-+0x8,0x8,0xf,0x10,0x17,0x34,0x57,0x94,0x17,0x14,0x10,0x1f,0x12,0x11,0x10,0x10,0x50,0x48,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x8,0x8,0x8,0x10,0x10,0x37,0x50,0x90,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x1,0x2,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x11,0x1,0xff,0x1,0x1,0x1,0x0,0x10,0xf8,0x10,0xf0,0x0,0xf0,0x10,0x10,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x4,0x8,0x10,0x20,0x40,0x8,0x4,0x4,0x2,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x20,0x10,0xc,0x24,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x9,0x7d,0x49,0x4b,0x4d,0x79,0x49,0x49,0x49,0x79,0x4a,0x4c,0x48,0x48,0x49,0x9e,0x4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x4,0xf,0x10,0x20,0x5f,0x10,0x11,0x11,0x11,0x11,0x11,0x2,0x4,0x18,0x60,0x0,0x0,0xe0,0x40,0x90,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x18,0x8,
-+0x2,0x1,0x7f,0x40,0x9f,0x0,0x1f,0x10,0x1f,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x20,0x0,0x0,0xfe,0x22,0xf4,0x0,0xf0,0x10,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x20,0x18,0x8,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x7c,0x44,0x49,0x49,0x53,0x4d,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x24,0x25,0x48,0x28,0x10,0x28,0x47,0x84,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x10,0x10,0x27,0x20,0x43,0xfa,0x13,0x22,0x43,0xfa,0x40,0x7,0x1a,0xe1,0x40,0x0,0x50,0x48,0xfc,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0x10,0xfe,0x10,0x10,0x10,0x20,
-+0x0,0x8,0x7c,0x49,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10,
-+0x1,0xf,0x79,0x4b,0x4a,0x4b,0x4a,0x4b,0x49,0x49,0x4a,0x7c,0x4a,0x2,0x3,0x0,0x10,0xfe,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x64,0x94,0x4,0xe4,0xc,
-+0x7,0x8,0x7f,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x49,0x49,0x7f,0x48,0x0,0x1,0xe,0xfc,0x80,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x3e,0xc0,0xa0,0x42,0xb2,0xe,
-+0x1,0x40,0x2f,0x0,0x1,0x1,0xe2,0x27,0x20,0x20,0x20,0x25,0x2a,0x30,0x23,0xc,0x0,0x84,0xfe,0x80,0x0,0x10,0x10,0xe0,0x48,0x48,0x90,0x20,0x50,0x88,0x4,0x4,
-+0x0,0x4,0xfe,0x4,0x4,0x5,0x7e,0x44,0x40,0x40,0x40,0x40,0x4c,0x70,0x41,0x6,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x17,0x14,0xfc,0x17,0x34,0x3c,0x57,0x54,0x95,0x15,0x16,0x14,0x10,0x10,0x0,0x84,0xfe,0x88,0x88,0xa8,0xa8,0xbe,0x88,0x10,0x18,0xa8,0xaa,0x4a,0x86,0x0,
-+0x10,0x13,0x10,0x1c,0x21,0x21,0x7d,0x91,0x11,0x7c,0x10,0x10,0x14,0x18,0x10,0x0,0x4,0xfe,0x20,0x28,0x3c,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x1,0x7f,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x8,0xfc,0x0,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x41,0x2f,0x29,0x9,0x8f,0x49,0x49,0x1f,0x28,0x28,0xca,0x4b,0x4d,0x48,0x40,0x41,0x4,0xfe,0x10,0x10,0x50,0x50,0x54,0x7e,0x10,0x10,0x20,0x30,0x52,0x52,0x8e,0x0,
-+0x0,0x3f,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xf,0x8,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x20,0xe0,0x20,
-+0x10,0x10,0x11,0x10,0xfc,0x10,0x30,0x3b,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x11,0x11,0x11,0x11,0xff,0x11,0x39,0x35,0x51,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x12,0x1f,0x28,0x45,0x80,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3d,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x44,0x94,0x8,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x8,0x8,0x9,0x7e,0x8,0x8,0xfe,0x9,0x28,0x28,0x2e,0x28,0x28,0x38,0x48,0x87,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x6,0xfc,
-+0x0,0x0,0x7f,0x40,0x7f,0x40,0x5f,0x51,0x51,0x5f,0x90,0x2,0x29,0x28,0x48,0x7,0x50,0x48,0xfc,0x40,0xc0,0x48,0x48,0x50,0x22,0x52,0x8e,0x0,0x90,0xac,0x24,0xe0,
-+0x8,0x1d,0xf0,0x10,0x10,0xfc,0x10,0x3b,0x34,0x50,0x50,0x90,0x10,0x10,0x10,0x10,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x7c,0x4,0x8,0xff,0x24,0x24,0x3c,0x24,0x3c,0x24,0x24,0xfe,0x4,0x5,0x6,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x10,0xfe,0x44,0x29,0xfe,0x1,0x7c,0x44,0x7d,0x44,0x7c,0x10,0xfe,0x10,0x10,0x11,0x40,0x78,0xd0,0x20,0x58,0x86,0xf8,0x20,0xfc,0x0,0xf8,0x88,0xa8,0xa8,0x58,0x84,
-+0x0,0x7f,0x40,0x40,0x48,0x44,0x42,0x41,0x42,0x44,0x48,0x50,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0x64,0x84,0x4,0x84,0x64,0x34,0x14,0x4,0x4,0x14,0x8,
-+0x1,0x7f,0x41,0x41,0x63,0x63,0x55,0x55,0x49,0x55,0x53,0x63,0x41,0x41,0x45,0x42,0x4,0x84,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x10,0x13,0x12,0x1e,0x23,0x22,0x7e,0x92,0x12,0x7e,0x12,0x13,0x16,0x1a,0x12,0x2,0x4,0xfe,0x4,0x4,0xc,0x8c,0x54,0x24,0x24,0x54,0x8c,0xc,0x4,0x4,0x14,0x8,
-+0x20,0x22,0x3f,0x48,0x48,0x88,0x9,0xff,0x8,0x2a,0x2a,0x2a,0x2a,0x3e,0x23,0x2,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0xa0,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x3e,0x25,0x24,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x27,0x44,0x8c,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x20,0x23,0x22,0x4a,0x4b,0xf2,0x12,0x22,0x42,0xfa,0x42,0x3,0x1a,0xe2,0x42,0x2,0x4,0xfe,0x4,0x4,0xc,0x8c,0x54,0x24,0x24,0x54,0x8c,0xc,0x4,0x4,0x14,0x8,
-+0x1,0x41,0x41,0x7f,0x0,0x7f,0x40,0x48,0x44,0x42,0x41,0x42,0x44,0x48,0x50,0x40,0x0,0x4,0x4,0xfc,0x4,0xfe,0x4,0x24,0x44,0x84,0x4,0x84,0x44,0x34,0x14,0x8,
-+0x41,0x31,0x17,0x81,0x61,0x2f,0x1,0x12,0x27,0xea,0x22,0x23,0x22,0x22,0x21,0x20,0x10,0x10,0xfc,0x10,0x14,0xfe,0x20,0x10,0xfe,0x14,0x10,0xf0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x10,0x11,0xfc,0x10,0x30,0x38,0x54,0x50,0x90,0x10,0x10,0x13,0x10,0x10,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x20,0x3e,0x50,0x81,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x40,0x7c,0x90,0x0,0xfc,0x0,0xf0,0x10,0xf0,0x4,0xfe,0x4,0xe4,0x24,0xe4,0xc,
-+0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x2,0xff,0x4,0x9,0x11,0x2f,0xc1,0x1,0x1,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x40,0x20,0x50,0xee,0x4,0x0,0x0,
-+0x2,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x7f,0x40,0x4f,0x48,0x48,0x4f,0x40,0x0,0x4,0xfe,0x0,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x4,0xe4,0x24,0x24,0xe4,0xc,
-+0x1,0x7f,0x8,0xf,0x0,0x7f,0x48,0x8f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x8,0xfc,0x20,0xe0,0x0,0xfe,0x22,0xe4,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x10,0xc,0x4,0x7f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x20,0x24,0x22,0x40,0x10,0x30,0x40,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x10,0x88,0x44,0x4,
-+0x11,0x10,0x92,0x55,0x38,0x10,0xfe,0x11,0x38,0x34,0x54,0x53,0x90,0x12,0x12,0x14,0x4,0x88,0x50,0xfc,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0xa4,0x92,0x2,
-+0x10,0x10,0x1f,0x10,0xfb,0x12,0x12,0x1b,0x30,0xd7,0x14,0x15,0x15,0x15,0x54,0x24,0x80,0x44,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x14,0xf4,0x4,0xc,
-+0x10,0x10,0x1f,0x20,0x21,0x7d,0x91,0x11,0x7c,0x13,0x12,0x12,0x16,0x1a,0x12,0x2,0x40,0x24,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x94,0xf4,0x4,0xc,
-+0x8,0x1c,0xf3,0x10,0x11,0xfd,0x11,0x39,0x34,0x53,0x52,0x92,0x12,0x12,0x12,0x12,0x40,0x24,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x94,0xf4,0x4,0xc,
-+0x1,0x11,0x11,0x1f,0x11,0x21,0x1,0xff,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x7f,0x0,0x1f,0x10,0x10,0x1f,0x0,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xfc,0x10,0x90,0x90,0x90,0x90,0x14,0xfe,0x10,0x90,0x90,0x90,0x90,0x10,0x50,0x20,
-+0x2,0xff,0x2,0x7a,0x4a,0x4a,0x7b,0x2,0xff,0x2,0x7a,0x4a,0x4a,0x7a,0x4a,0x5,0x20,0x20,0x20,0x40,0x7c,0x84,0x28,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x8e,0x4,
-+0x10,0x14,0x12,0x10,0xfc,0x15,0x16,0x1c,0x34,0xd7,0x15,0x15,0x15,0x15,0x55,0x24,0x0,0x4,0xfe,0x44,0xf4,0x14,0xa4,0x44,0xa4,0x1c,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x4,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x2,0x2,0x1,0x2,0xc,0x70,0x0,0x0,0x80,0x40,0x4,0xfe,0x0,0x0,0x20,0x30,0x40,0x80,0x0,0x80,0x44,0x34,0xc,
-+0x10,0x10,0x29,0x29,0x25,0x43,0x89,0x7d,0x1,0x7d,0x44,0x44,0x47,0x44,0x7c,0x40,0x20,0x48,0xfc,0x8,0x48,0x28,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x24,0x24,0x3d,0x26,0x24,0x24,0x44,0x94,0x8,0x40,0x40,0x7c,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,0xf8,0x88,0x88,0x88,0xf8,0x88,
-+0x1,0x0,0x1f,0x12,0x92,0x53,0x54,0x18,0x37,0x50,0xd0,0x13,0x24,0x24,0x44,0x3,0x0,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0xf0,0x20,0xc0,0x0,0x0,0x2,0x2,0xfe,
-+0x8,0x4,0x7f,0x44,0xbf,0x4,0x3f,0x4,0x7f,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x4,0x4,0xe4,0x54,0x94,0x14,0x94,0x14,0xd4,0x94,0xd4,0x94,0x84,0x84,0x94,0x88,
-+0x8,0x8,0x7f,0x8,0xf,0x1,0x3f,0x21,0x21,0x3f,0x1,0xff,0x1,0x1,0x1,0x1,0x20,0x28,0xfc,0x20,0xe0,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xf,0x11,0x22,0x54,0x10,0x1f,0x0,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x4,0x84,0x44,0x4,0xd4,0x8,
-+0x11,0x11,0x11,0x12,0xff,0x14,0x38,0x34,0x51,0x52,0x97,0x1a,0x12,0x12,0x13,0x12,0x0,0x0,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x14,0x7e,0x55,0x56,0x55,0x54,0x7c,0x51,0x11,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x50,0x88,0x6,0x4,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x1b,0x4a,0x42,0x47,0x4c,0x52,0x41,0x46,0x58,0x60,0x4f,0x48,0x48,0x4f,0x40,0x4,0xfe,0x4,0x4,0xe4,0x44,0x84,0x4,0xc4,0x3c,0x14,0xe4,0x24,0x24,0xf4,0x8,
-+0x0,0x7f,0x48,0x53,0x52,0x62,0x53,0x48,0x4f,0x4d,0x6c,0x57,0x44,0x44,0x44,0x44,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xfc,0x44,0x44,0x54,0x8,
-+0x10,0x10,0x1c,0x11,0x21,0x3e,0x50,0x90,0x7c,0x13,0x11,0x11,0x15,0x19,0x11,0x1,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x1,0x2,0x4,0x8,0x11,0x21,0xc1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x4,0x7,0x8,0x14,0x22,0x1,0x6,0x18,0xe0,0xf,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x60,0x1e,0x4,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x20,0x20,0x49,0xfa,0x14,0x23,0x40,0xf8,0x43,0x2,0x1a,0xe2,0x43,0x2,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x39,0x35,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x0,0x7d,0x45,0x45,0x45,0x45,0x7d,0x11,0x51,0x5d,0x51,0x51,0x51,0x5d,0xe1,0x41,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x10,0x10,0x14,0xfe,0x11,0x7c,0x10,0xfe,0x13,0x38,0x34,0x54,0x51,0x91,0x12,0x10,0x88,0x88,0x88,0x88,0xfc,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x8,0x8,0x8,0x8,
-+0x0,0xff,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x29,0x5,0x2,0x5,0x18,0xe0,0x4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x0,0x0,0x80,0x70,0xe,
-+0x1,0x0,0x3f,0x20,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x20,0x21,0x41,0x42,0x84,0x18,0x0,0x84,0xfe,0x80,0x88,0xfc,0x88,0xfe,0x88,0xf8,0x88,0x40,0x40,0x30,0xe,0x4,
-+0x4,0x7f,0x1,0x3f,0x1,0xff,0x28,0x42,0x3f,0x1,0x1f,0x1,0xff,0x2,0xc,0x30,0x48,0xfc,0x0,0xf8,0x0,0xfe,0x28,0x84,0xf8,0x0,0xf0,0x4,0xfe,0x80,0x78,0x10,
-+0x20,0x2f,0x20,0x27,0xfc,0x24,0x27,0x24,0x24,0x27,0x3c,0xe3,0x40,0x1,0x6,0x18,0x4,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0x80,0x60,0x1e,0x4,
-+0x2,0xff,0x24,0x24,0x3c,0x24,0x24,0x3d,0x24,0x24,0x24,0x3e,0xe4,0x44,0x7,0x4,0x20,0x20,0x20,0x20,0xa4,0xac,0xb0,0x20,0x20,0x20,0x20,0x50,0x50,0x8e,0x4,0x0,
-+0x10,0x1f,0x10,0x13,0xfe,0x12,0x33,0x3a,0x52,0x53,0x92,0x11,0x10,0x11,0x12,0x1c,0x4,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x48,0x40,0x80,0x60,0x1e,0x4,
-+0x0,0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x0,0x0,0x8,0xfd,0x11,0x12,0x14,0x11,0x11,0x11,0x10,0x1c,0xf0,0x41,0x2,0xc,0x80,0x80,0x80,0x8,0xfc,0x10,0x10,0x10,0x20,0x20,0xc0,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x0,0x8,0xfc,0x10,0x17,0x10,0x10,0x10,0x10,0x1d,0xf1,0x41,0x2,0x4,0x8,0x80,0x80,0x80,0x80,0x84,0xfe,0x84,0x84,0x84,0x84,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x8,0x8,0x7f,0x8,0x8,0xff,0x4,0x9,0x11,0x21,0xc9,0x9,0x11,0x21,0x5,0x2,0x20,0x28,0xfc,0x20,0x24,0xfe,0x40,0x20,0x10,0xe,0x24,0x90,0x48,0x8,0x0,0x0,
-+0x2,0x2,0xff,0x5,0x5,0x9,0x32,0xc8,0x8,0x3f,0x8,0x8,0xff,0x8,0x18,0x20,0x20,0x14,0xfe,0x0,0x64,0x84,0xfc,0x20,0x20,0xf8,0x20,0x24,0xfe,0x20,0x18,0x8,
-+0x12,0x12,0x12,0x22,0x2f,0x62,0xa2,0x22,0x22,0x3f,0x20,0x22,0x22,0x24,0x28,0x20,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x10,0x8,0xc,0x4,0x0,
-+0x8,0x12,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xfe,0x6,0xa,0x12,0x22,0x4a,0x4,0x0,0x4,0xfe,0x4,0x4,0xfc,0x80,0x84,0xfe,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x0,0x4,0x4,0x8,0x8,0x11,0x21,0xc2,0x2,0x4,0x8,0x10,0x1f,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x40,0x20,0xf0,0x10,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0xf,0x8,0x8,0xf,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x2,0x24,0xf0,0x20,0x20,0xe0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x7f,0x0,0x0,0x0,0x3f,0x20,0x20,0x40,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0xe0,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x90,0x50,0x20,
-+0x0,0x9,0xfd,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x8,0x8,0xfc,0x8,0x8,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0xa,0xa,0x6,0x0,
-+0x0,0x3f,0x1,0x1,0xff,0x0,0x1,0x1,0x7d,0x5,0x9,0x11,0x21,0xc1,0x5,0x2,0x10,0xf8,0x0,0x4,0xfe,0x0,0x8,0x18,0xa0,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x11,0x11,0x11,0x11,0xfb,0x11,0x11,0x19,0x31,0xdf,0x10,0x11,0x11,0x12,0x54,0x20,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x10,0x8,0xc,0x4,0x0,
-+0x0,0x3f,0x1,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0x10,0xf8,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x8,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0x8,0xff,0x0,0x4,0xc,0x10,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x40,0x30,0x18,0x8,
-+0x10,0x10,0x10,0x1c,0x21,0x22,0x7c,0x90,0x10,0x7c,0x11,0x10,0x14,0x18,0x10,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x44,0x44,0x84,0xa4,0xf4,0x14,0x4,0x4,0x28,0x10,
-+0x8,0x8,0x8,0xf,0x10,0x22,0x42,0x84,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x84,0x44,0xc4,0x44,0x4,0x28,0x10,
-+0x2,0x42,0x32,0x13,0x84,0x68,0x20,0x1,0x9,0x12,0xe4,0x27,0x20,0x20,0x20,0x20,0x0,0x0,0x4,0xfe,0x4,0x84,0x84,0x4,0x4,0x44,0x24,0xe4,0x24,0x4,0x28,0x10,
-+0x8,0x8,0xff,0x8,0x10,0x1f,0x20,0x20,0x5f,0x90,0x10,0x10,0x1f,0x10,0x0,0x0,0x20,0x24,0xfe,0x20,0x8,0xfc,0x8,0x88,0xc8,0x88,0x88,0x88,0x88,0x8,0x50,0x20,
-+0x4,0x44,0x28,0x11,0x29,0x4a,0x8,0x9,0x19,0x29,0x49,0x89,0x9,0x8,0x50,0x20,0x80,0x80,0x84,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x4,0x4,0x28,0x10,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x12,0x12,0x12,0x12,0x16,0x1a,0xe4,0x44,0x8,0x0,0xc,0xf0,0x0,0x0,0x4,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x30,0x38,0x54,0x50,0x11,0x11,0x10,0x10,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x4,0x44,0x44,0x84,0xa4,0x14,0xf4,0x14,0x4,0x28,0x10,
-+0x4,0x7e,0x44,0x54,0x55,0x56,0x54,0x54,0x54,0x54,0x55,0x55,0x10,0x28,0x44,0x84,0x80,0x80,0x84,0xfe,0x4,0x4,0x44,0x44,0x84,0xa4,0x14,0xf4,0x14,0x4,0x28,0x10,
-+0x20,0x20,0x22,0x3f,0x42,0x83,0x7a,0x4a,0x4a,0x4b,0x4a,0x7a,0x42,0xa,0x4,0x0,0x20,0x20,0x7c,0x44,0x88,0x50,0x20,0x50,0x9e,0x22,0x44,0xa8,0x10,0x20,0x40,0x80,
-+0x1,0xff,0x1,0x3f,0x20,0x3f,0x1,0x3f,0x8,0x4,0xff,0x1,0x3f,0x1,0x1,0x1,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x20,0x44,0xfe,0x0,0xf8,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x10,0x10,0xff,0x12,0x12,0x22,0x22,0x14,0x8,0x14,0x22,0x40,0x40,0x44,0xfe,0x40,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x0,0x8,0x7c,0x48,0x4f,0x48,0x48,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x2,0x3,0x2,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x1f,0x28,0x45,0x90,0x13,0x12,0xfe,0x12,0x1a,0x32,0xd2,0x12,0x12,0x53,0x20,0x40,0x7e,0xa0,0x10,0x0,0xfc,0x20,0x28,0xfc,0xa8,0xa8,0xa8,0xb8,0x20,0xfe,0x0,
-+0x8,0x8,0x8,0x10,0x1f,0x30,0x50,0x90,0x13,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x10,0x87,0x60,0x20,0x8,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7c,0x7,0xa,0x12,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x14,0x15,0x58,0x20,0x8,0x3c,0xc0,0x10,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0xa8,0xee,0x24,0x0,
-+0x10,0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x45,0x25,0x19,0x11,0x29,0x45,0x81,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x14,0xfe,0x11,0x7c,0x0,0x7d,0x44,0x44,0x7c,0x0,0x44,0x28,0xfe,0x40,0x3,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x88,0x88,0x88,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x1,0x1f,0x11,0x11,0x1f,0x11,0x1,0x3f,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x4,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x1f,0x10,0x1f,0x11,0x11,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x8,0x8,0x10,0x21,0x41,0x2,0x4,0x8,0x30,0xc0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x30,0x18,0x8,0x0,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x25,0x24,0x3c,0x24,0x24,0x24,0x24,0x4d,0x86,0x8,0xfc,0x88,0x88,0x88,0xe,0x0,0xfc,0x84,0x88,0x48,0x70,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x10,0x14,0xfe,0x11,0x12,0x10,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44,0x3,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x88,0x88,0x50,0x20,0x20,0x50,0x8e,0x4,
-+0x4,0x7f,0x40,0x40,0x5e,0x52,0x52,0x52,0x5a,0x54,0x50,0x52,0x54,0x58,0x80,0x1,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x30,0x4c,0x86,0x2,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x41,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x4,0xfc,0x4,
-+0x2,0x1,0x3f,0x20,0x3f,0x22,0x22,0x27,0x24,0x2f,0x34,0x27,0x24,0x24,0x47,0x84,0x0,0x4,0xfe,0x4,0xfc,0x80,0x48,0xfc,0x40,0xf8,0x40,0xf8,0x40,0x48,0xfc,0x0,
-+0x1,0x7e,0x8,0x8,0x9,0xff,0x8,0x8,0x9,0x7f,0x41,0x41,0x41,0x41,0x7f,0x41,0x84,0x4,0x4,0x24,0x24,0xa4,0x24,0x24,0x24,0xa4,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x1,0x3e,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x42,0x83,0x0,0x38,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x88,0x68,0xa6,0x4,0x0,
-+0x0,0x3f,0x20,0x20,0x20,0x3f,0x24,0x4,0x7f,0x44,0x44,0x4a,0x51,0x40,0x41,0x40,0x84,0xc4,0x84,0x94,0x94,0x94,0x94,0x14,0xd4,0x54,0x54,0x54,0x44,0x44,0x54,0x88,
-+0x1,0x7f,0x40,0x9f,0x2,0xf,0xa,0x9,0x8,0x7f,0x4,0xf,0x32,0xc2,0x4,0x18,0x0,0xfe,0x22,0xf4,0x0,0xe0,0x20,0x20,0xa8,0xfc,0x40,0xe0,0x5e,0x44,0x40,0xc0,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x14,0x1f,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x41,0x21,0x21,0x7,0xf1,0x11,0x2f,0x71,0xa1,0x37,0x21,0x21,0x21,0x2f,0x24,0x20,0x10,0x10,0x10,0xd0,0x10,0x10,0xf8,0x16,0x12,0xd0,0x10,0x10,0xf0,0x10,0x10,0x10,
-+0x0,0x1f,0x1,0x1,0xff,0x1,0x9,0x9,0x79,0x9,0x9,0x39,0xc9,0x1,0x1,0x1,0x70,0x80,0x0,0x4,0xfe,0x0,0x24,0x2c,0x30,0x20,0x22,0x22,0x1e,0x0,0x0,0x0,
-+0x10,0x11,0x11,0xfd,0x11,0x15,0x18,0x30,0xd3,0x10,0x10,0x10,0x11,0x11,0x52,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x80,0x84,0xfe,0x84,0x84,0x84,0x4,0x4,0x14,0x8,
-+0x10,0x17,0x12,0x11,0x58,0x54,0x50,0x93,0x1c,0x10,0x17,0x10,0x10,0x10,0x1f,0x10,0x8,0xfc,0x8,0x10,0xa0,0x40,0xb0,0xe,0x44,0x40,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x13,0x12,0xfc,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x40,0x20,0xfe,0x2,0x4,0xfc,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0x4,0xfc,0x0,
-+0x10,0x8,0x4,0x4,0x7f,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x10,0x18,0x20,0x48,0xfc,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x2,0x1,0x7f,0x40,0x80,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x2,0x14,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,
-+0x0,0x7f,0x40,0x84,0x3e,0x0,0x2,0x7f,0x14,0x14,0x14,0x14,0x24,0x24,0x43,0x80,0x0,0xfe,0x2,0xc,0x8,0x8,0xfe,0x8,0x48,0x28,0x8,0x28,0x12,0x2,0xfe,0x0,
-+0x0,0x1,0x7d,0x5,0x45,0x29,0x29,0x11,0x11,0x29,0x25,0x44,0x80,0x1,0x6,0x18,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0x68,0xa0,0xa0,0x22,0x22,0x1e,
-+0x10,0x1f,0x28,0x45,0x1,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0x7c,0x90,0x8,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x0,0xf0,0x10,0x10,0xf0,0x0,
-+0x20,0x20,0x23,0x3a,0x4c,0x51,0x81,0x21,0x21,0x21,0x21,0x25,0x29,0x31,0x21,0x1,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x0,
-+0x20,0x23,0x3c,0x51,0x91,0x11,0xfe,0x10,0x55,0x56,0x54,0x54,0x54,0x7c,0x44,0x0,0x88,0xfe,0x88,0xdc,0x54,0xdc,0x90,0xfc,0x90,0xfc,0x90,0xfc,0x90,0x94,0xfe,0x80,
-+0x10,0x13,0x12,0x1f,0x5a,0x57,0x50,0x93,0x12,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x8,0xfc,0x48,0xfe,0x48,0xf8,0x0,0xf8,0x8,0x48,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x1,0x4f,0x31,0x17,0x84,0x67,0x22,0x3,0x16,0x2b,0xc2,0x43,0x42,0x42,0x43,0x42,0x10,0xfe,0x10,0xbc,0xa4,0xbc,0x20,0xfc,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x0,0x1f,0x11,0x11,0xff,0x11,0x1f,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x10,0xf8,0x10,0x14,0xfe,0x10,0xf0,0x0,0xf0,0x10,0x10,0x10,0x10,0x60,0x18,0x8,
-+0x1,0x21,0x11,0x9,0x9,0x1,0xff,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x8,0xc,0x10,0x20,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x1,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x84,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x40,0x29,0x27,0x2,0x6,0xea,0x22,0x26,0x2a,0x32,0x22,0x2b,0x24,0x50,0x8f,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0xf8,0x20,0x20,0x20,0x28,0xfc,0x0,0x6,0xfc,0x0,
-+0x0,0x11,0xfb,0x22,0x22,0x23,0xfa,0x22,0x23,0x22,0x20,0x39,0xe1,0x42,0x4,0x8,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xd0,0x68,0x78,0x42,0x42,0x3e,
-+0x10,0x10,0x11,0x11,0x7d,0x11,0x15,0xff,0x11,0x11,0x10,0x28,0x24,0x41,0x82,0x4,0x0,0x8,0xfc,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0x40,0x90,0x90,0x12,0x12,0xe,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0xff,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x4,0xfe,0x11,0x10,0x20,0x23,0x7c,0xa4,0x24,0x25,0x24,0x24,0x3c,0x27,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x4,0x25,0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x4,0x8,0x13,0x60,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x8,0x8,0x1f,0x10,0x20,0x7f,0xa1,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0x1,0x0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0xa,0x2,0x2,0xfe,
-+0x20,0x1b,0x49,0x41,0x4f,0x41,0x41,0x5f,0x41,0x41,0x4f,0x41,0x41,0x5f,0x40,0x40,0x4,0xfe,0x4,0x44,0xe4,0x4,0x24,0xf4,0x4,0x44,0xe4,0x4,0x24,0xf4,0x4,0xc,
-+0x10,0x10,0x14,0xfe,0x21,0x28,0x48,0x7e,0x8,0x8,0x8,0xfe,0x8,0x8,0x9,0xa,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x88,0x8a,0x8a,0x6,0x0,
-+0x2,0x4,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x22,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x88,0x80,0x90,0xa8,0xba,0x82,0x7e,
-+0x1,0x41,0x21,0x22,0x4,0xb,0xe2,0x22,0x22,0x22,0x22,0x26,0x2a,0x32,0x24,0x8,0x0,0x0,0xf0,0x20,0x44,0xfe,0x0,0xf8,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0,
-+0x0,0x3e,0x2,0x24,0x18,0x10,0x20,0x4f,0x81,0x1,0x3f,0x1,0x2,0x4,0x18,0x60,0x80,0x90,0xa0,0x48,0x50,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0xc0,0x30,0x18,0x8,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x54,0x50,0x93,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x32,0x3a,0x56,0x53,0x92,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0x7e,0x44,0x45,0x46,0x7d,0x51,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x44,0x8,0x80,0x80,0xf8,0x10,0x24,0xfe,0x8,0x7c,0x48,0x48,0x68,0x50,0x42,0x42,0x3e,0x0,
-+0x1,0x1,0x3f,0x21,0x3f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x0,0x8,0xfc,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x8,0x8,0x14,0x22,0x41,0xbe,0x0,0x2,0x7f,0x8,0x8,0x10,0x22,0x7f,0x1,0x0,0x4,0x4,0x4,0x24,0xa4,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x20,0x23,0x22,0xfe,0x43,0x42,0x92,0xff,0x12,0x12,0x1f,0xf2,0x52,0x12,0x13,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x24,0x2c,0xb0,0x20,0x22,0xa2,0x1e,0x0,
-+0x0,0x40,0x37,0x11,0x83,0x64,0x20,0x9,0x13,0x20,0xe1,0x23,0x25,0x29,0x21,0x21,0x80,0x48,0xfc,0x10,0x4c,0x44,0x80,0x10,0xf8,0x80,0x44,0x28,0x10,0x4e,0x84,0x0,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x93,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x24,0x2c,0xb0,0x20,0x22,0xa2,0x1e,0x0,
-+0x10,0x11,0x11,0x1d,0x21,0x21,0x7d,0x90,0x13,0xfe,0x12,0x12,0x17,0x1a,0x12,0x2,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x44,0x64,0x9c,0xc,0x4,0x14,0x8,
-+0x8,0x4,0xff,0x0,0x3f,0x21,0x21,0x3f,0x0,0x7f,0x2,0x4,0xff,0x4,0x14,0x8,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x0,0x7f,0x40,0x5f,0x41,0x41,0x41,0x4f,0x41,0x41,0x41,0x41,0x5f,0x40,0x7f,0x40,0x4,0xfe,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x44,0x24,0x4,0xf4,0x4,0xfc,0x4,
-+0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x1,0x7f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0xff,0x9,0x35,0xc,0x14,0x65,0x6,0x0,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x18,0xa0,0x40,0x3c,0x8,
-+0x0,0x40,0x20,0x17,0x0,0x0,0xf1,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20,0x6,0xfc,0x0,
-+0x0,0x0,0x8,0x7c,0x49,0x49,0x4a,0x4d,0x48,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0xf4,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x7e,0x44,0x77,0x54,0x54,0xfe,0x82,0x7c,0x44,0x7c,0x45,0x7c,0x44,0x54,0x4b,0x40,0x20,0x4,0xfe,0x20,0x20,0x44,0xfc,0x10,0x24,0x44,0x88,0x10,0x28,0xc6,0x2,
-+0x0,0xfc,0x4,0xb,0x10,0x10,0x15,0x1b,0x31,0xd0,0x10,0x11,0x16,0x10,0x51,0x26,0x80,0x40,0x4,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x50,0x8c,0x4,
-+0x2,0x42,0x33,0x14,0x8b,0x62,0x22,0xa,0x1f,0x24,0xe4,0x24,0x27,0x20,0x20,0x20,0x0,0x8,0xfc,0x0,0xf8,0x88,0x48,0x8,0xfe,0x88,0x48,0x8,0xfc,0x8,0x28,0x10,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0x2,0x3f,0x4,0x8,0x3f,0x2,0xc,0x31,0x46,0x18,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x8,0x88,0x8,0x8,0x88,0x8a,0x6a,0x24,
-+0x2,0x1,0x1,0xff,0x1,0x2,0x4,0x8,0x1f,0x2,0x4,0x8,0x31,0x6,0x18,0x60,0x0,0x0,0x4,0xfe,0x0,0x20,0x60,0x80,0x10,0x30,0x40,0xc0,0x20,0x10,0xc,0x4,
-+0x2,0x1,0x7f,0x41,0x9f,0x1,0x1f,0x1,0x7f,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x0,0xfc,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x8,0xfc,0x8,0x4f,0x48,0x48,0x49,0x4b,0x7d,0x4,0x4,0x1d,0xe6,0x44,0x15,0xa,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x58,0x8c,0x4,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x63,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x44,0xc4,0x44,0x44,0xfe,0x44,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44,
-+0x3e,0x4,0xff,0x22,0x3f,0x22,0x3e,0x22,0xff,0x2,0xa,0x29,0x28,0x48,0x7,0x0,0x40,0x44,0x7e,0x84,0x44,0x48,0x28,0x10,0x2e,0xc4,0x0,0x88,0xa4,0x24,0xe0,0x0,
-+0x22,0x22,0x22,0x22,0xff,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x22,0x3e,0x22,0x0,0x0,0x7c,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xa,0xff,0x8,0x8,0x7f,0x41,0x7f,0x41,0x7f,0x8,0x9,0xff,0x8,0x8,0x8,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0xfe,0x22,0x22,0xaa,0x24,0x20,0x20,
-+0x1,0x1,0x2,0x4,0xa,0x11,0x20,0xdf,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x80,0x40,0x20,0x90,0x8e,0xe4,0x40,0x90,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x40,0x37,0x10,0x0,0x84,0x44,0x46,0xd,0x14,0x25,0xe6,0x24,0x25,0x24,0x27,0x24,0x0,0xfc,0x8,0x10,0x64,0x44,0x4c,0x54,0xe4,0x54,0x4c,0x44,0x44,0x84,0xfc,0x4,
-+0x2,0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0x7f,0x4,0xb,0x10,0x20,0xc6,0x1,0x0,0x0,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x40,0xfc,0x40,0x20,0x90,0x4e,0x4,0x80,0x40,
-+0x0,0x1f,0x0,0x0,0x41,0x51,0x49,0x45,0x41,0x45,0x49,0x51,0x45,0x42,0x7f,0x40,0x0,0xf0,0x20,0x40,0x84,0x14,0x34,0x44,0x4,0x44,0x34,0x14,0x4,0x4,0xfc,0x4,
-+0x0,0x10,0x78,0x57,0x54,0x57,0x54,0x55,0x55,0x55,0x55,0x75,0x45,0x8,0x11,0x20,0x10,0x18,0x14,0xfe,0x10,0xf0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x28,0x4a,0x8a,0x4,
-+0x0,0x7f,0x40,0x84,0x8,0x0,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0xfe,0x2,0x44,0x20,0x0,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x14,0xfe,0x11,0x7e,0x45,0x7c,0x45,0x7c,0x10,0xfe,0x11,0x10,0x11,0x10,0x20,0x20,0x50,0x88,0x6,0x4,0xdc,0x44,0x54,0xcc,0x44,0xcc,0x54,0x44,0x54,0x88,
-+0x10,0x10,0x10,0x17,0xfc,0x17,0x14,0x1d,0x35,0xd5,0x15,0x14,0x19,0x13,0x55,0x20,0x10,0x14,0x10,0xfe,0x10,0xf0,0x14,0xd4,0x58,0x52,0xea,0x6,0x40,0x24,0xa,0xf8,
-+0x13,0x12,0x12,0x13,0xfa,0x12,0x13,0x18,0x37,0xd0,0x10,0x1f,0x10,0x10,0x50,0x20,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x17,0x5c,0x57,0x54,0x95,0x15,0x15,0x15,0x14,0x19,0x13,0x15,0x10,0x10,0x14,0x10,0xfe,0x10,0xf0,0x14,0xd4,0x58,0x52,0xea,0x6,0x40,0x24,0xa,0xf8,
-+0x13,0x12,0x12,0x13,0x5a,0x56,0x53,0x90,0x17,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x11,0x11,0x11,0x15,0x59,0x51,0x51,0x90,0x13,0x10,0x10,0x2b,0x24,0x44,0x80,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x0,0xfe,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x47,0x30,0x10,0x80,0x60,0x20,0xf,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x40,0x37,0x10,0x82,0x62,0x22,0x9,0x11,0x20,0xe0,0x20,0x21,0x22,0x24,0x8,0x0,0x8,0xfc,0x8,0x8,0x8,0x10,0x10,0x20,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4,
-+0x1,0x1,0x1,0x7f,0x2,0x4,0xa,0x32,0xc2,0x1f,0x2,0x2,0x2,0x4,0x8,0x30,0x0,0x0,0x8,0xfc,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x14,0x18,0x80,0x40,0x48,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x8,0x10,0x3e,0x23,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x22,0x4a,0x85,0x40,0x30,0x14,0xfe,0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x4a,0x4a,0x86,0x0,
-+0x20,0x23,0x20,0x21,0xf9,0x27,0x24,0x2b,0x20,0x23,0x20,0x3b,0xe0,0x47,0x0,0x0,0x40,0xfc,0x0,0xf8,0x8,0xfe,0x2,0xfc,0xc0,0x68,0xb0,0x28,0xe6,0x24,0xa0,0x40,
-+0x0,0x17,0xf8,0x91,0x91,0x97,0x94,0x9b,0x90,0x91,0x96,0xf1,0x96,0x1,0x6,0x0,0x48,0xfc,0x0,0xf0,0x10,0xfe,0x2,0xfc,0x80,0x48,0xf0,0x50,0xce,0x44,0x40,0xc0,
-+0x1,0x7f,0x0,0xf,0x8,0x7f,0x40,0x9f,0x6,0xb,0x35,0x9,0x33,0x5,0x39,0x3,0x8,0xfc,0x0,0xe0,0x20,0xfe,0x2,0xf4,0x10,0x20,0x40,0x80,0x60,0x1c,0x8,0x0,
-+0x1,0x7f,0x0,0xf,0x8,0xf,0x0,0x7f,0x40,0x9f,0x1,0xf,0x1,0x3f,0x1,0x0,0x8,0xfc,0x20,0xf0,0x20,0xe0,0x0,0xfe,0x2,0xf4,0x0,0xe0,0x0,0xf4,0x4,0xfc,
-+0x8,0x8,0xa,0x7f,0x8,0x9,0xff,0x14,0x14,0x56,0x55,0x95,0x24,0x24,0x4c,0x80,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x10,0x11,0x10,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x0,0xfc,0x4,0x8,0x10,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x15,0xfe,0x10,0x7c,0x11,0xfe,0x10,0x38,0x35,0x54,0x50,0x90,0x10,0x10,0x8,0x3c,0xc0,0x40,0x50,0x78,0xc0,0x40,0x48,0x7c,0xc0,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x0,0xff,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xa0,0x40,
-+0x40,0x32,0x12,0x3,0x84,0x68,0x20,0xf,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0xb,0x7c,0x48,0x48,0x4b,0x4a,0x4a,0x4a,0x4a,0x4b,0x7a,0x48,0x0,0x0,0x0,0x4,0xfe,0x8,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x48,0x8,0x8,0x28,0x10,
-+0x0,0xb,0x7e,0x4b,0x4a,0x4b,0x48,0x49,0x4a,0x4c,0x4a,0x7a,0x4a,0x3,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x84,0xfe,0x4,0x44,0x44,0xa4,0x4,0xe4,0x14,0x8,
-+0x8,0x8,0xff,0x8,0x10,0x1f,0x10,0x30,0x53,0x92,0x12,0x12,0x13,0x12,0x10,0x10,0x20,0x24,0xfe,0x20,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x8,0x8,0xff,0x8,0x40,0x3f,0x10,0x80,0x63,0x22,0xa,0x12,0xe3,0x22,0x20,0x20,0x20,0x24,0xfe,0x20,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x39,0x37,0x55,0x50,0x90,0x11,0x16,0x10,0x11,0x16,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x50,0x8c,0x4,
-+0x0,0x0,0x3f,0x1,0x1,0x1,0xff,0x1,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x10,0x38,0xc0,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x20,0x18,0xe,0x4,0x0,0x0,
-+0x2,0x7,0x78,0x8,0xa,0xff,0x8,0x18,0x1c,0x2a,0x2a,0x48,0x88,0x8,0x8,0x8,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x0,
-+0x8,0x8,0xf,0x10,0x10,0x33,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x48,0x8,0x8,0x28,0x10,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc0,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x2,0x4,0xf,0x10,0x2f,0xc8,0x8,0xf,0x0,0x1f,0x12,0x12,0x12,0xff,0x0,0x0,0x80,0x40,0xe0,0x10,0xee,0x24,0x20,0xe0,0x10,0xf8,0x90,0x90,0x94,0xfe,0x0,
-+0x8,0x10,0x24,0x54,0x89,0x52,0x28,0x4c,0x94,0x27,0x4c,0x94,0x24,0x44,0x14,0x8,0x40,0x40,0x7c,0x84,0x88,0x50,0x20,0x50,0x88,0xe,0xfc,0x88,0x88,0x88,0xf8,0x88,
-+0x20,0x1b,0x48,0x42,0x41,0x5f,0x41,0x42,0x44,0x4f,0x42,0x44,0x49,0x52,0x44,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x44,0x84,0x24,0x44,0x84,0x84,0x64,0x24,0xc,
-+0x40,0x3f,0x10,0x0,0x80,0x67,0x24,0xc,0x14,0x24,0xe7,0x24,0x20,0x20,0x20,0x20,0x4,0xfe,0x8,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x48,0x8,0x8,0x28,0x10,
-+0x40,0x37,0x14,0x4,0x87,0x64,0x24,0xd,0x15,0x25,0xe5,0x25,0x25,0x24,0x27,0x24,0x4,0xfe,0x44,0x54,0xfc,0x44,0x54,0xfc,0x14,0x14,0x14,0xf4,0x14,0x4,0xfc,0x4,
-+0x8,0x8,0x7e,0x8,0x8,0xff,0x14,0x14,0x36,0x75,0x94,0x14,0x14,0x14,0x24,0x4d,0x20,0x28,0xfc,0x20,0x24,0xfe,0x50,0x50,0xd8,0x56,0x52,0x50,0x50,0x50,0x90,0x30,
-+0x40,0x23,0x22,0x3,0xfa,0x13,0x21,0x6b,0xb4,0x28,0x22,0x22,0x22,0x23,0x20,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x4,0x44,0x44,0xa4,0x4,0xe4,0x14,0x8,
-+0x8,0x8,0x7f,0x52,0x90,0x28,0x7e,0xa8,0x3e,0x28,0x3e,0x28,0x29,0x3e,0x20,0x20,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x7f,0x11,0x11,0x25,0x42,0x9f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0x0,0x4,0x7e,0x44,0x44,0x7c,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x0,0xb,0x7e,0x4b,0x4a,0x4a,0x4a,0x4b,0x48,0x4b,0x48,0x4f,0x78,0x4a,0x2,0x4,0x8,0xfc,0x48,0x58,0xe8,0x48,0x48,0xf8,0x40,0xf8,0x40,0xfe,0x0,0xa8,0xa4,0x4,
-+0x0,0x3f,0x21,0x31,0x2d,0x25,0x21,0x3f,0x1,0x7f,0x1,0xff,0x0,0x28,0x24,0x44,0x8,0xfc,0x8,0x28,0x38,0x48,0x8,0xf8,0x0,0xfc,0x0,0xfe,0x0,0x90,0x4c,0x44,
-+0x1,0x0,0x1f,0x10,0x97,0x54,0x57,0x14,0x37,0x54,0xd4,0x14,0x24,0x25,0x46,0x4,0x0,0x84,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0xe,0x4,
-+0x8,0xb,0x12,0x12,0x23,0x4a,0x8a,0x13,0x32,0x52,0x92,0x12,0x12,0x12,0x13,0x12,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0x88,0xe,0x4,
-+0x0,0x8b,0x5a,0x22,0x53,0x8a,0xa,0x1b,0x2a,0x4a,0x8a,0xa,0xa,0xa,0x53,0x22,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0x88,0xe,0x4,
-+0x10,0x13,0x12,0x12,0x5b,0x56,0x52,0x93,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0x88,0xe,0x4,
-+0x0,0x8,0x7f,0x48,0x49,0x49,0x49,0x49,0x48,0x4b,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x24,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x8,0x30,0x20,0x20,0xa0,0x40,
-+0x2,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x0,0x1,0x1,0x1,0x5,0x3,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x0,0xf8,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x11,0x11,0x17,0x11,0xfd,0x17,0x30,0x3b,0x56,0x53,0x92,0x13,0x10,0x11,0x13,0x14,0x10,0x10,0xfc,0x10,0x14,0xfe,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x0,0x10,0xc,0x4,
-+0x12,0x13,0x24,0x49,0x9f,0x19,0x2f,0x69,0xaf,0x21,0x21,0x3f,0x22,0x24,0x28,0x20,0x0,0xc4,0x9e,0x0,0xe0,0x20,0xfe,0x24,0xe4,0x4,0x24,0xf4,0x84,0x44,0x54,0x8,
-+0x10,0x17,0x10,0x10,0x5b,0x56,0x52,0x93,0x12,0x12,0x13,0x10,0x10,0x1f,0x10,0x10,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,
-+0x2,0x7f,0x8,0x11,0x3f,0x1,0xff,0x1,0x1,0x7e,0x22,0x14,0x8,0x14,0x22,0xc1,0x8,0xfc,0x0,0x0,0xf8,0x0,0xfe,0x0,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x8,0x7c,0x48,0x4b,0x48,0x48,0x48,0x48,0x48,0x4f,0x78,0x48,0x0,0x1,0x2,0x90,0x90,0x90,0x90,0xfc,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,0x90,0x88,0xc,0x4,
-+0x10,0x10,0x10,0x10,0x57,0x58,0x50,0x90,0x10,0x10,0x17,0x28,0x24,0x44,0x81,0x2,0x90,0x90,0x90,0x90,0xfc,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,0x90,0x88,0xc,0x4,
-+0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x10,0x14,0x1e,0xe2,0x47,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x40,0x30,0x10,0x2,0x9f,0x64,0x24,0x4,0x14,0x14,0xe7,0x3c,0x29,0x20,0x20,0x20,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x42,0x32,0x12,0x2,0x8f,0x62,0x22,0xa,0x12,0x3f,0xe0,0x22,0x22,0x24,0x24,0x28,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x20,0x10,0x8,0xc,0x4,
-+0x2,0x1,0x7f,0x40,0x82,0x2,0xff,0x4,0x4,0x8,0x9,0x11,0x12,0x24,0x4f,0x0,0x0,0x0,0xfc,0x4,0x8,0x0,0xfe,0x0,0x80,0x80,0x0,0x0,0x20,0x10,0xf8,0x8,
-+0x4,0xfe,0x4,0x4,0x4,0x7c,0x40,0x40,0x44,0x7e,0x4,0x4,0x5,0x45,0x2b,0x10,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x40,0x80,0x80,0x80,0x90,0x8,0x4,0xfc,0x4,
-+0x10,0x10,0x23,0x20,0x44,0xf8,0x10,0x20,0x40,0xfc,0x40,0x0,0x1c,0xe0,0x47,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x1,0x9,0x7d,0x4a,0x4a,0x4e,0x4a,0x4a,0x4a,0x4a,0x4b,0x7a,0x4a,0x2,0x2,0x2,0x8,0x7c,0x8,0x8,0xfe,0x0,0x40,0x7e,0x90,0x14,0xfe,0x10,0x20,0x28,0x46,0x82,
-+0x8,0xb,0x8,0x10,0x17,0x32,0x52,0x93,0x14,0x10,0x1f,0x10,0x10,0x10,0x11,0x16,0x10,0xf8,0x10,0x10,0xfc,0x0,0x8,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x5,0x89,0x51,0x22,0x53,0x96,0x1a,0x12,0x33,0x52,0x93,0x12,0x12,0x12,0x52,0x23,0x8,0xfc,0x8,0x8,0xfe,0x0,0x88,0xfc,0x20,0x24,0xfe,0x20,0x20,0x50,0x8e,0x4,
-+0x0,0x7,0x78,0x48,0x49,0x49,0x49,0x49,0x49,0x4f,0x49,0x79,0x49,0x1,0x5,0x2,0x10,0xd0,0x50,0x90,0x10,0x10,0x10,0x50,0x90,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x3f,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x2f,0x20,0x20,0x5f,0x40,0x82,0x1,0x8,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x40,0x84,0xfe,0x80,0x80,0x0,
-+0x10,0x13,0x20,0x28,0x6f,0xa9,0x29,0x2b,0x2c,0x28,0x2f,0x28,0x28,0x21,0x22,0x24,0x10,0xf8,0x10,0x14,0xfe,0x0,0x8,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x27,0x24,0x24,0x24,0x44,0x44,0x87,0x4,0x10,0x78,0x80,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x8,0x7f,0x48,0x4a,0x49,0x49,0x48,0x4f,0x48,0x48,0x78,0x48,0x0,0x1,0x0,0x8,0x1c,0xe0,0x40,0x48,0x58,0x60,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x3f,0x1,0x1,0x11,0xd,0x5,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x78,0x80,0x0,0x0,0x10,0x30,0x40,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xf,0x12,0x12,0x22,0x44,0x4,0x9,0x12,0x2,0x29,0x28,0x48,0x7,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x88,0x88,0x28,0x10,0x0,0x88,0xa4,0x24,0xe0,0x0,
-+0x1,0x11,0xf9,0x27,0x21,0x21,0xf9,0x27,0x24,0x24,0x24,0x3c,0xe7,0x44,0x0,0x1,0x4,0x3e,0x24,0xe4,0x24,0x3c,0x24,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8,
-+0x1,0x1,0x7f,0x1,0x3f,0x1,0x7f,0x44,0x84,0x24,0x14,0xc,0x4,0x4,0x7f,0x0,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x44,0x40,0x48,0x58,0x60,0x40,0x48,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x9,0x7f,0x8,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x1,0x40,0x44,0xfe,0x40,0x7c,0x44,0xc4,0x7c,0x44,0x44,0x7c,0x44,0x44,0x44,0x94,0x8,
-+0x8,0x8,0x8,0x9,0xff,0x8,0x8,0xa,0x3f,0x22,0x22,0x22,0x22,0x3e,0x22,0x1,0x4,0x7e,0x44,0x44,0xc4,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x94,0x8,
-+0x21,0x21,0x21,0x21,0xf9,0xaf,0xa9,0xa9,0xab,0xfa,0xa2,0x2a,0x3b,0xea,0x0,0x1,0x4,0x3e,0x24,0x24,0x24,0xfc,0x24,0x24,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8,
-+0x0,0x88,0x53,0x22,0x52,0x92,0x12,0x12,0x32,0x52,0x92,0x12,0x14,0x15,0x58,0x20,0x8,0x1c,0xe0,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xa8,0x94,0xf6,0x4,0x0,
-+0x11,0x11,0x55,0x39,0x17,0x11,0xfd,0x33,0x3a,0x56,0x52,0x93,0x12,0x10,0x10,0x11,0x4,0x3e,0x24,0x24,0xe4,0x3c,0x24,0xa4,0xa4,0xbc,0xa4,0xa4,0x24,0x44,0x94,0x8,
-+0x42,0x32,0x12,0x2,0x9f,0x62,0x22,0xf,0x18,0x28,0xc8,0x48,0x48,0x4f,0x48,0x40,0x4,0x3e,0x24,0x24,0xe4,0x3c,0xa4,0xe4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0x54,0x88,
-+0x0,0xf8,0xb,0xa,0xa,0x7a,0x42,0x42,0x42,0x7a,0xa,0xa,0xa,0xa,0x54,0x28,0x8,0x1c,0xe8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xa8,0x94,0xf6,0x4,
-+0x1,0x1,0x1,0x3f,0x22,0x22,0x3f,0x22,0x21,0x20,0x27,0x24,0x24,0x24,0x48,0x90,0x20,0xf0,0x0,0xfc,0x4,0x68,0x80,0x8,0xf8,0x40,0xe0,0x40,0x40,0x44,0x44,0x3c,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x7a,0x4c,0x8,0x11,0x6,0x48,0x7c,0x40,0xfe,0x42,0x5c,0xe0,0x44,0x3c,0x10,0xf8,0x90,0x90,0x92,0x12,0xe,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x12,0x14,0x54,0x28,0x80,0x60,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0x10,0x1f,0x0,0x0,0x0,0xff,0x0,0x8,0xfc,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xe0,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x40,0x30,0x13,0x82,0x62,0x22,0xb,0x12,0x12,0xe2,0x22,0x22,0x24,0x24,0x28,0x80,0x60,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x0,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x80,0x84,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xff,0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x20,0x24,0xfe,0x20,0x20,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x8,0x7d,0x49,0x4b,0x4d,0x49,0x49,0x49,0x48,0x4f,0x78,0x48,0x0,0x0,0x0,0xa0,0xa4,0x2c,0x30,0x60,0x22,0x22,0x1e,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x4,0x4,0x8,0x8,0x18,0x29,0x4a,0x8,0x9,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x40,0x48,0x58,0x60,0xc0,0x40,0x44,0x44,0x3c,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x83,0x4a,0x2b,0x12,0x32,0x57,0x94,0x1b,0x32,0x53,0x92,0x13,0x12,0x12,0xa2,0x42,0xf8,0x8,0xc8,0x48,0x48,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x43,0x32,0x13,0x2,0x82,0x4f,0x48,0x13,0x12,0x23,0xe2,0x23,0x22,0x22,0x22,0x22,0xf8,0x8,0xc8,0x48,0x48,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x7f,0x0,0x1f,0x11,0x51,0x51,0x5f,0x51,0x51,0x51,0x5f,0x50,0x40,0x7f,0x40,0x8,0xfc,0x10,0xf8,0x10,0x14,0x14,0xf4,0x14,0x14,0x14,0xf4,0x14,0x4,0xfc,0x4,
-+0x10,0x14,0x12,0x10,0x13,0xfc,0x10,0x10,0x11,0xb,0xc,0x8,0x14,0x24,0x42,0x1,0x4,0x4,0x4,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x84,0x94,0x88,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x40,0x33,0x10,0x0,0x0,0xf7,0x10,0x10,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x10,0x38,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x3a,0x36,0x53,0x52,0x90,0x11,0x11,0x12,0x14,0x18,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x54,0x5c,0x42,0x42,0x3e,
-+0x8,0x8,0x13,0x12,0x22,0x4a,0x8a,0x12,0x32,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x0,0x4,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0xfc,0x4,0x0,
-+0x10,0x10,0x17,0x10,0x58,0x54,0x50,0x90,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40,
-+0x41,0x31,0x11,0x3,0x86,0x6a,0x23,0xa,0x12,0x23,0xe2,0x22,0x22,0x23,0x22,0x22,0x40,0x20,0x4,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x20,0x20,0x2f,0x20,0xf8,0x20,0x20,0x20,0x21,0x2a,0x34,0xe8,0x40,0x0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x0,0xfc,0x4,0x45,0x46,0x28,0x28,0x10,0x28,0x24,0x44,0x81,0x1,0x2,0xc,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x10,0xf8,0x27,0x20,0x20,0x20,0xf8,0x20,0x21,0x22,0x24,0x20,0x38,0xe0,0x40,0x0,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x17,0x10,0xff,0x12,0x3a,0x36,0x53,0x52,0x92,0x12,0x13,0x10,0x1f,0x10,0x0,0x8,0xfc,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x4,0xfe,0x0,
-+0x0,0x40,0x2f,0x20,0x0,0xe0,0x20,0x21,0x22,0x24,0x28,0x20,0x20,0x50,0x8f,0x0,0x0,0x4,0xfe,0x40,0x40,0x80,0x80,0xa0,0x98,0x8c,0x84,0x80,0x80,0x6,0xfc,0x0,
-+0x10,0x13,0x22,0x21,0x44,0xfb,0x10,0x27,0x40,0xfc,0x1,0x1,0x1a,0xe4,0x49,0x2,0xc,0xf0,0x48,0x50,0x20,0xfc,0x40,0xfe,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x11,0x12,0xfc,0x13,0x12,0x1e,0x32,0xd2,0x1f,0x10,0x10,0x11,0x52,0x2c,0x80,0x80,0xf0,0x20,0x48,0xfc,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x1,0x3f,0x21,0x21,0x3f,0x1,0x7f,0x41,0x41,0x7f,0x41,0x2,0x29,0x28,0x48,0x7,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x0,0x90,0xac,0x24,0xe0,
-+0x0,0x8,0x7c,0x49,0x4a,0x49,0x49,0x49,0x49,0x49,0x4f,0x78,0x48,0x0,0x1,0x6,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x88,0x6,0x4,
-+0x1,0x0,0x1f,0x11,0x51,0x32,0x14,0x33,0x52,0xd2,0x12,0x1f,0x20,0x21,0x42,0xc,0x0,0x84,0xfe,0x0,0xf0,0x20,0x48,0xfc,0x48,0x48,0x48,0xfe,0xa0,0x10,0xe,0x4,
-+0x9,0x5,0x7f,0x2,0xff,0x4,0xf,0x12,0x25,0xda,0x4,0x19,0x62,0xc,0x72,0x1,0x20,0x48,0xfc,0x0,0xfe,0x40,0xe0,0x10,0x1e,0xa4,0xc0,0xa0,0x98,0x88,0x80,0x0,
-+0x10,0x10,0x10,0x15,0x5a,0x51,0x51,0x91,0x11,0x11,0x17,0x28,0x24,0x40,0x81,0x6,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x88,0x6,0x4,
-+0x40,0x30,0x11,0x2,0x84,0x63,0x22,0xa,0x12,0x12,0xef,0x20,0x20,0x21,0x22,0x2c,0x80,0x80,0xf0,0x20,0x48,0xfc,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x2,0x1,0x7f,0x40,0x9f,0x11,0x11,0x1f,0x10,0x10,0x1f,0x11,0x11,0x11,0x1f,0x10,0x0,0x0,0xfe,0x2,0xf4,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x0,0x10,0xf8,0x0,
-+0x8,0x8,0xb,0x10,0x10,0x20,0x42,0xfe,0x4,0x8,0x10,0x20,0x42,0xff,0x1,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x4,0x4,0x7f,0x4,0x1,0xff,0x10,0x10,0x1f,0x0,0x11,0x11,0x11,0x11,0x21,0x41,0x40,0x48,0xfc,0x40,0x4,0xfe,0x0,0x20,0xf0,0x0,0x10,0x10,0x10,0x12,0x12,0xe,
-+0x11,0x11,0x1f,0x11,0x58,0x57,0x52,0x92,0x13,0x10,0x12,0x12,0x12,0x12,0x14,0x18,0x10,0x14,0xfe,0x10,0x44,0xfe,0x0,0x8,0xfc,0x0,0x48,0x48,0x48,0x4a,0x4a,0x46,
-+0x4,0x4,0x3f,0x4,0x4,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x10,0x4,0x18,0x60,0x40,0x50,0xf8,0x40,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x60,0x18,0x4,
-+0x0,0x8,0xfd,0x10,0x10,0x23,0x3c,0x65,0xa5,0x25,0x25,0x25,0x3c,0x24,0x1,0x6,0x88,0x88,0xfc,0x88,0x88,0xfe,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x0,0x88,0x6,0x2,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x54,0x57,0x7c,0x50,0x15,0x1c,0xf4,0x43,0x0,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x4,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x1f,0x28,0x45,0x4,0x7f,0x4,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0xc,0x30,0x40,0x7c,0xa0,0x50,0x40,0xfc,0x40,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x60,0x18,
-+0x2,0x4,0x3f,0x20,0x3f,0x20,0x3f,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x0,0x3f,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x2f,0x21,0x27,0x21,0x5f,0x40,0x80,0x8,0xfc,0x8,0xe8,0x28,0xe8,0x28,0xe8,0x8,0xe8,0x8,0xc8,0xa,0xfa,0xa,0x4,
-+0x10,0x10,0x13,0x12,0x5b,0x56,0x53,0x90,0x17,0x10,0x10,0x13,0x10,0x10,0x1f,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x13,0x16,0x5b,0x52,0x53,0x90,0x17,0x10,0x10,0x13,0x28,0x44,0x8f,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x1,0x11,0x9,0xff,0x4,0x4,0x4,0x8,0x10,0x60,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x10,0x24,0xfe,0x40,0x40,0x40,0x42,0x42,0x3e,
-+0x10,0x11,0x15,0x7f,0x55,0x55,0x54,0x55,0x54,0x54,0x57,0x5c,0x10,0x11,0x11,0x16,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0x24,0xac,0x30,0xfe,0x90,0x90,0x12,0x12,0xe,
-+0x10,0x10,0x12,0x11,0x59,0x54,0x57,0x90,0x10,0x10,0x11,0x11,0x11,0x12,0x12,0x1c,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0xa0,0xa0,0xa0,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0x41,0x2f,0x21,0x0,0xf,0xe2,0x22,0x23,0x20,0x22,0x22,0x2a,0x32,0x24,0x8,0x10,0x14,0xfe,0x10,0x44,0xfe,0x0,0x8,0xfc,0x0,0x48,0x48,0x48,0x4a,0x4a,0x46,
-+0x4,0x4,0x4,0xff,0x4,0x8,0x8,0xc,0x12,0x10,0x21,0x41,0x82,0x2,0x4,0x18,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0x98,0xa0,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x10,0x13,0x12,0x14,0xfb,0x10,0x11,0x1a,0x33,0xd0,0x10,0x17,0x10,0x10,0x50,0x20,0x0,0xfe,0x44,0x48,0xfc,0x80,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x95,0x56,0x38,0x11,0xfe,0x29,0x29,0x28,0x28,0x2b,0x4c,0x48,0x80,0x0,0x0,0xfe,0x4,0x40,0x48,0xfc,0x80,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x12,0x12,0x2a,0x2a,0x4f,0x90,0x1f,0x24,0x6f,0xa2,0x25,0x2f,0x22,0x2a,0x32,0x26,0x10,0x10,0x90,0x90,0xbe,0x44,0x84,0xa4,0x24,0x24,0x28,0x98,0x10,0xa8,0x46,0x84,
-+0x10,0x10,0x10,0x17,0x58,0x55,0x51,0x91,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x13,0x80,0x80,0x84,0xfe,0x80,0x20,0x20,0x24,0xac,0x70,0x20,0x20,0x50,0x50,0x8e,0x4,
-+0x10,0x10,0x11,0x11,0x7d,0x55,0x55,0x55,0x55,0x7d,0x11,0x11,0x15,0xfd,0x5,0x1,0x0,0x4,0xfe,0x4,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x7f,0x40,0x40,0x47,0x44,0x44,0x44,0x44,0x47,0x44,0x40,0x7f,0x40,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0x44,0x44,0xc4,0x44,0x4,0xfc,0x4,0x0,
-+0x10,0x66,0x42,0x42,0x66,0x42,0x43,0x7e,0x1,0x7e,0x8,0x8,0xe,0xf8,0x40,0x3,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x11,0x11,0x11,0x1a,0x55,0x51,0x51,0x91,0x1f,0x12,0x12,0x12,0x13,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x88,0x48,0xfc,0x8,0x28,0x10,
-+0x8,0x7e,0x8,0x3e,0x8,0x7e,0x8,0x3f,0x0,0xff,0x0,0x3f,0x9,0x28,0x48,0x7,0x20,0xfc,0x20,0xf8,0x20,0xfc,0x20,0xf8,0x8,0xfe,0x8,0xf8,0x0,0xa8,0x24,0xe0,
-+0x1,0x1,0x1,0x7f,0x1,0x9,0x9,0x8,0xff,0x8,0x8,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x8,0xfc,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x1,0x1,0xff,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x1,0x7f,0x2,0x29,0x28,0x48,0x7,0x0,0x4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x10,0xf8,0x4,0x90,0x8c,0x24,0xe0,
-+0x1,0x1,0x79,0x4a,0x4d,0x49,0x49,0x79,0x4f,0x4a,0x4a,0x4a,0x7b,0x48,0x0,0x0,0x0,0x8,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x88,0x48,0xfc,0x8,0x50,0x20,
-+0x4,0x7e,0x44,0x57,0x54,0x54,0x55,0x56,0x54,0x54,0x54,0x54,0x28,0x24,0x44,0x80,0x20,0x20,0x24,0xfe,0x40,0x84,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x94,0x88,
-+0x8,0x1c,0xf1,0x11,0x11,0xfd,0x11,0x38,0x34,0x51,0x52,0x90,0x10,0x10,0x10,0x17,0x20,0x20,0x24,0x24,0x24,0xfc,0x44,0x40,0xfe,0x4,0x84,0x48,0x30,0x20,0xc0,0x0,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc0,0x0,0x3f,0x2,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0x0,0x40,0x20,0xf0,0x10,
-+0x10,0x10,0x10,0x14,0x59,0x52,0x55,0x90,0x10,0x17,0x10,0x28,0x24,0x41,0x83,0x0,0x40,0x40,0xa0,0x90,0x8,0x26,0xf4,0x0,0x4,0xfe,0x40,0x40,0x90,0x8,0xfc,0x4,
-+0x0,0x40,0x37,0x14,0x4,0x84,0x64,0x24,0xc,0x14,0xe4,0x24,0x24,0x24,0x27,0x20,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x40,0x2f,0x20,0x0,0x7,0xe0,0x20,0x2f,0x20,0x20,0x24,0x28,0x30,0x20,0x0,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x1,0x41,0x31,0x12,0x5,0x1,0xf1,0x11,0x17,0x12,0x12,0x12,0x17,0x18,0x10,0x0,0x0,0x8,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x88,0x48,0xfc,0x8,0x28,0x10,
-+0x10,0x10,0x20,0x20,0x49,0xfa,0x15,0x20,0x40,0xfb,0x0,0x0,0x18,0xe1,0x43,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x8,0xfc,0x40,0x40,0x90,0x8,0xfc,0x4,
-+0x4,0x4,0x7f,0x4,0x7f,0x42,0x82,0x3f,0x5,0x9,0x1f,0x1,0xff,0x1,0x1,0x1,0x40,0x48,0xfc,0x40,0xfe,0x4,0x8,0xf8,0x0,0x20,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x0,0x3f,0x21,0x21,0x3f,0x20,0x28,0x30,0x20,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x78,0x80,0x0,0x10,0xf8,0x80,0x42,0x32,0xe,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x24,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0xc,0xf0,0x20,0x24,0xfe,0x10,0x50,0x8a,0x6,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,
-+0x0,0x11,0x7b,0x2,0xa,0xff,0x22,0x22,0x23,0x42,0x48,0xfd,0x5,0x2,0x4,0x8,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x48,0x54,0x5c,0x42,0x3e,
-+0x40,0x27,0x24,0x8,0x81,0x67,0x21,0xa,0x14,0x27,0xe0,0x20,0x2f,0x20,0x20,0x20,0x0,0xfe,0x84,0x88,0x0,0xfc,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,
-+0x40,0x37,0x14,0x4,0x87,0x64,0x24,0xf,0x10,0x24,0xe7,0x24,0x24,0x24,0x25,0x26,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x48,0x58,0x60,0x40,0xc2,0x42,0x3e,
-+0x20,0x10,0xfe,0x92,0x7d,0x10,0x7c,0x10,0xfe,0x11,0x7c,0x44,0x44,0x44,0x7c,0x44,0x0,0x50,0x48,0x84,0x20,0x20,0x50,0x48,0x86,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x40,0x30,0x17,0x0,0x80,0x60,0x2f,0x8,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x10,0x38,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x10,0x12,0x32,0x52,0x94,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x40,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x1,0x1,0x1,0x1,0x11,0x11,0x11,0x21,0x42,0x2,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x8,0x18,0x20,0x40,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x24,0x18,0x10,0x2b,0x48,0x8,0x18,0x28,0xc8,0x8,0x29,0x12,0x40,0x44,0xfe,0x40,0x28,0x24,0x20,0xfe,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x0,0x0,0x0,0xff,0x0,0x2,0x3f,0x22,0x22,0x22,0x3e,0x20,0x7,0x78,0x0,0x3,0x50,0x48,0x40,0xfe,0x40,0x40,0x48,0x48,0x48,0x50,0x50,0x20,0x22,0x52,0x8a,0x4,
-+0x0,0x0,0xff,0x0,0x3e,0x22,0x3e,0x20,0xe,0x70,0x0,0x2,0x29,0x28,0x48,0x7,0xa0,0x94,0xfe,0x80,0x88,0x88,0x50,0x50,0x22,0x52,0x8e,0x0,0x90,0xac,0x24,0xe0,
-+0x3f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0x1f,0x30,0x57,0x90,0x17,0x10,0x1f,0x10,0xf8,0x0,0xfe,0x2,0x74,0x0,0x70,0x80,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x0,
-+0x8,0x8,0x10,0x30,0x57,0x90,0x10,0x10,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x80,0x88,0x98,0xe0,0x82,0x82,0x7e,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x40,0x23,0x22,0x2,0xfa,0x13,0x20,0x70,0xaf,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x44,0x44,0xb4,0x14,0x4,0x14,0x8,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x17,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1e,0xf2,0x44,0x4,0x9,0x12,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x90,0xe,0x4,
-+0x8,0x8,0x7f,0x8,0xf,0x8,0xf,0x8,0xff,0x4,0x9,0x31,0xcf,0x1,0x1,0x3f,0x20,0x28,0xfc,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x40,0x30,0x4e,0xe4,0x0,0x10,0xf8,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x14,0x18,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x4,0x7f,0x54,0x54,0x54,0x7f,0x54,0x55,0x55,0x7d,0x45,0x1,0x1,0x0,0x0,0x20,0x28,0xfc,0x20,0x50,0x88,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x8,0x1c,0xf3,0x10,0x10,0xfd,0x13,0x31,0x39,0x55,0x50,0x91,0x11,0x11,0x11,0x11,0x50,0x48,0xfc,0xa0,0xa2,0x3e,0x0,0xf0,0x4,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x4,0xe,0x78,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x48,0x88,0x9,0xa,0x8,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x88,0xc4,0x6,0x2,0x0,
-+0x12,0x1f,0x28,0x45,0x88,0x3f,0x8,0xf,0x8,0xf,0x8,0xff,0x0,0x8,0x18,0x20,0x44,0x7e,0xa0,0x10,0x20,0xf8,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x0,0x20,0x18,0x8,
-+0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x24,0x4d,0x86,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x8a,0x8a,0x6,0x0,
-+0x20,0x20,0x21,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x21,0x25,0x29,0x32,0x24,0x8,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x1,0x40,0x20,0x2f,0x1,0x1,0xe5,0x25,0x25,0x29,0x21,0x21,0x22,0x50,0x8f,0x0,0x0,0xc0,0x48,0xfc,0x20,0x20,0x28,0x24,0x24,0x24,0x20,0x20,0x60,0x6,0xfc,0x0,
-+0x2,0x44,0x2f,0x28,0xf,0x88,0x4f,0x42,0x1f,0x24,0xc7,0x44,0x44,0x48,0x4a,0x51,0x10,0x90,0xd0,0x94,0xbe,0xc4,0xa4,0x28,0xa8,0x28,0x90,0x90,0xa8,0xa8,0xc6,0x84,
-+0x0,0x20,0x11,0x11,0x1,0xf1,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x12,0x4,0x8,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x0,0x1,0xfd,0x5,0x49,0x29,0x11,0x11,0x29,0x24,0x40,0x87,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x4,0xfe,0x10,0x10,0x14,0x7e,0x44,0x44,0x44,0x44,0x7c,0x10,0x10,0x14,0xfe,0x0,
-+0x10,0x10,0x27,0x20,0x49,0xf8,0x17,0x20,0x43,0xfa,0x2,0x2,0x1a,0xe0,0x41,0x6,0x40,0x48,0xfc,0x40,0xf0,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0x90,0xc,0x4,
-+0x10,0x11,0x21,0x21,0x49,0xf8,0x17,0x21,0x41,0xf9,0x1,0x1,0x19,0xe7,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,
-+0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x3f,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x17,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x92,0x12,0x12,0x14,0x19,0x12,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x14,0xfe,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x38,0x54,0x93,0x12,0x10,0x10,0x20,0x24,0xfe,0x20,0x28,0xfc,0xa8,0xa8,0xa8,0xa8,0x70,0xa8,0x26,0x24,0x20,0x20,
-+0x10,0x11,0x11,0xfd,0x21,0x28,0x4b,0x7d,0x9,0x9,0xf,0xf9,0x49,0xf,0x8,0x8,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,
-+0x10,0x14,0x3e,0x49,0x90,0x7d,0x10,0x7c,0x13,0xfe,0x11,0x39,0x55,0x91,0x11,0x11,0x40,0x48,0xfc,0x20,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x9,0x8,0x1f,0x31,0x5f,0x91,0x1f,0x11,0x1f,0x11,0xff,0x5,0x9,0x11,0x61,0x1,0x0,0x90,0xf8,0x0,0xf0,0x0,0xf0,0x0,0xf8,0x0,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x0,0x7f,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x11,0x20,0x21,0x42,0x84,0x8,0x0,0xf0,0x20,0x20,0x40,0x40,0xf8,0x8,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x4,0x4,0xf,0x8,0x10,0x3f,0x40,0x1f,0x0,0x3f,0x2,0x51,0x50,0x90,0xf,0x0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x1,0x0,0x1f,0x12,0x92,0x53,0x54,0x18,0x30,0x5f,0xd0,0x10,0x20,0x21,0x42,0xc,0x0,0x84,0xfe,0x0,0x8,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x40,0x37,0x11,0x1,0x81,0x61,0x25,0x9,0x11,0x21,0xe2,0x22,0x22,0x24,0x29,0x22,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x0,0x7e,0x42,0x42,0x7e,0x42,0x42,0x7e,0x40,0x44,0x44,0x4a,0x72,0x40,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xa4,0x94,0x88,0x80,0x80,0x80,0x80,
-+0x20,0x20,0x21,0x21,0xf9,0x4d,0x4b,0x49,0x49,0x8b,0x55,0x51,0x22,0x52,0x8c,0x8,0x20,0x14,0xfe,0x40,0x48,0x7c,0x50,0x90,0x14,0xfe,0x10,0x10,0x20,0x28,0x46,0x82,
-+0x10,0x17,0x21,0x21,0x49,0xf9,0x11,0x21,0x41,0xf9,0x2,0x2,0x1a,0xe4,0x49,0x2,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x17,0x10,0xfd,0x10,0x14,0x19,0x36,0xd1,0x11,0x11,0x11,0x11,0x52,0x24,0x80,0x48,0xfc,0x8,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0x40,0x40,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x1,0x21,0x11,0xa,0x12,0x24,0x8,0x1f,0x28,0xcf,0x8,0xf,0x8,0x8,0x8,0x8,0x0,0x8,0x10,0xa0,0x98,0x48,0x20,0xf0,0x2e,0xe4,0x20,0xe0,0x20,0x20,0xa0,0x40,
-+0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x1f,0x22,0x7f,0x24,0x3f,0x24,0x3f,0x20,0x3,0x7c,0x0,0x40,0x44,0xfe,0x40,0x4,0x24,0x24,0xa4,0xa4,0xa4,0xa4,0xa4,0x4,0x84,0x14,0x8,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x13,0x1a,0x31,0xd1,0x10,0x10,0x10,0x51,0x26,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0xf8,0x8,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x2,0x7e,0x2,0xfe,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x4,0x3f,0x4,0xff,0x10,0x60,0x80,0xf8,0x82,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xf8,0x40,0xfe,0x10,0xc,
-+0x0,0x1f,0x1,0x1,0x7f,0x5,0x9,0x11,0x6f,0x0,0x0,0xff,0x1,0x1,0x5,0x2,0xe0,0x0,0x0,0x8,0xfc,0x40,0x20,0x1c,0xe8,0x40,0x84,0xfe,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x93,0x12,0x11,0x11,0x10,0x10,0x10,0x11,0x16,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xf8,0x8,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x10,0x10,0x1e,0x22,0x52,0xcc,0x28,0x17,0x20,0xc0,0x1f,0x1,0x9,0x11,0x25,0x2,0x0,0x0,0xfc,0x88,0x50,0x20,0x20,0xd0,0xe,0x24,0xf0,0x0,0x40,0x30,0x10,0x0,
-+0x8,0x4,0x7f,0x11,0xa,0x4,0xa,0x31,0xd1,0x11,0x11,0x11,0x11,0x21,0x41,0x0,0x4,0x84,0xc4,0x24,0x24,0x24,0x24,0xa4,0x64,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x10,0x13,0x10,0x18,0x57,0x50,0x51,0x92,0x15,0x10,0x10,0x1f,0x10,0x10,0x11,0x10,0x38,0xc0,0x40,0x48,0xfc,0xe0,0x50,0x4e,0xf4,0x20,0x44,0xfe,0x40,0x40,0x40,0x80,
-+0x0,0x40,0x37,0x11,0x80,0x60,0x21,0xe,0x11,0x21,0xe1,0x21,0x21,0x22,0x24,0x20,0x80,0x44,0xfe,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x2,0x1,0x7f,0x41,0x81,0x1f,0x2,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0xfe,0x2,0x24,0xf0,0x80,0x44,0xfe,0x10,0x90,0x90,0x90,0x90,0x50,0x20,
-+0x2,0x1,0x7f,0x40,0x88,0xe,0x8,0x8,0xff,0x8,0x2c,0x2b,0x49,0x88,0x28,0x13,0x0,0x0,0xfe,0x2,0x4,0xf8,0x8,0x88,0x88,0x50,0x50,0x20,0x20,0x50,0x8e,0x4,
-+0x0,0x20,0x10,0x10,0x0,0x0,0xf7,0x10,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x20,0x17,0x10,0x0,0x0,0xf0,0x13,0x12,0x12,0x12,0x12,0x16,0x1a,0x11,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x2,0x2,0x2,0xfe,0x0,
-+0x0,0x7d,0x44,0x44,0x7d,0x45,0x45,0x45,0x7c,0x40,0x48,0x44,0x5c,0x60,0x41,0x6,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x92,0x92,0xe,0x0,
-+0x0,0x7f,0x0,0x0,0x3f,0x20,0x20,0x20,0x1f,0x0,0x52,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x4,0x4,0xfc,0x0,0x4,0x82,0x92,0x12,0xf0,0x0,
-+0x0,0x7d,0x44,0x48,0x48,0x50,0x4b,0x48,0x44,0x44,0x44,0x69,0x52,0x40,0x40,0x40,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0xa8,0xa4,0x22,0x22,0x20,0xa0,0x40,
-+0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x25,0x25,0x44,0x28,0x10,0x28,0x44,0x84,0x3,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x12,0x22,0x23,0x4a,0xfa,0x12,0x23,0x42,0xfa,0x42,0x3,0x1a,0xe2,0x43,0x0,0x20,0x20,0x20,0x24,0xac,0x70,0x20,0xfc,0x20,0x70,0xac,0x24,0x20,0x24,0xfe,0x0,
-+0x8,0x8,0x13,0x10,0x24,0xfc,0x8,0x11,0x21,0xfd,0x41,0x1,0x1d,0xe1,0x40,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x1,0x7f,0x1,0x3f,0x0,0x1f,0x10,0x1f,0x4,0xff,0x10,0x7e,0x12,0x12,0x2a,0x44,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x44,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x88,
-+0x12,0x12,0x12,0x12,0xfe,0x17,0x32,0x3a,0x56,0x52,0x92,0x12,0x14,0x15,0x18,0x10,0x0,0x0,0x0,0x4,0x1e,0xd4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x94,0x0,
-+0x1,0x1,0x1,0x7f,0x1,0x11,0x9,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x8,0xfc,0x0,0x10,0x20,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x10,0x10,0x17,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x3f,0x4,0x1a,0x63,0x5,0x19,0x63,0x5,0x19,0x65,0x2,0x0,0x0,0xfe,0x2,0x4,0xf8,0x0,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x10,0x10,0x10,0x12,0xff,0x12,0x12,0x12,0x12,0x22,0x22,0x22,0x22,0x4a,0x84,0x0,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,
-+0x4,0x4,0xff,0x4,0x1,0x7f,0x1,0x9,0x5,0xff,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x20,0x44,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x13,0x10,0xfe,0x11,0x55,0x39,0x11,0xff,0x11,0x11,0x29,0x25,0x44,0x81,0x2,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x44,0x54,0x8c,0x4,0x2,
-+0x0,0xff,0x4,0x7f,0x44,0x44,0x7f,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x4,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x10,0xf8,0x10,0x10,0x10,0x10,0x60,0x18,0x8,
-+0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x1,0x1,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,
-+0x10,0x17,0x14,0x24,0x24,0x67,0xa4,0x24,0x27,0x24,0x24,0x27,0x24,0x24,0x25,0x26,0x4,0xbe,0x84,0x84,0x84,0xbc,0x0,0x7c,0x84,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x1c,0xf3,0x12,0x10,0xfd,0x10,0x39,0x36,0x54,0x51,0x92,0x14,0x11,0x12,0x10,0x40,0x20,0xfe,0x2,0x4,0xfc,0x80,0x44,0x6c,0xb0,0x30,0x68,0xa8,0x26,0xa4,0x40,
-+0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x99,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x14,0x40,0x40,0x40,0xa0,0x10,0x8,0x6,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x7e,0x12,0x12,0x12,0x2a,0x44,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x80,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x10,0x10,0x7f,0x11,0x11,0x25,0x42,0x9f,0x0,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x0,0x4,0x7e,0x44,0x44,0x7c,0x44,0xe0,0x20,0x20,0x24,0xfe,0x4,0xc4,0x14,0x8,
-+0x10,0x10,0x13,0x12,0xfc,0x25,0x24,0x25,0x26,0x44,0x29,0x12,0x28,0x45,0x84,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x80,0x44,0x6c,0xb0,0x30,0x68,0xa8,0x26,0xa4,0x40,
-+0x4,0x7e,0x11,0x10,0x10,0x3e,0x22,0x63,0x92,0xc,0x4,0x8,0x10,0x20,0x40,0x0,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x4,0x24,0x24,0x24,0x25,0x24,0x24,0x4,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x40,0x40,0x48,0x7c,0xa0,0x18,0x8,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x4,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x27,0x5,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0xf8,0x8,0x90,0x90,0x60,0x20,0xd0,0xe,0x4,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x1,0x1,0x9,0xd,0x11,0x21,0x0,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x20,0x10,0x18,0x8,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x14,0x3e,0x48,0x2,0x2,0x7f,0x2,0x1,0x7f,0x1,0x1,0x0,0x7,0x38,0x0,0x40,0x48,0xfc,0x20,0x80,0x50,0xf8,0x0,0x4,0xfe,0x10,0x20,0xc0,0x44,0x24,0x1c,
-+0x20,0x1b,0x8,0x40,0x4f,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0xe4,0x24,0x14,0x8,
-+0x8,0x4,0xff,0x2,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x22,0x26,0x0,0x24,0x22,0x40,0x20,0x44,0xfe,0x0,0x8,0x48,0x48,0x48,0x48,0x48,0x8,0x18,0x0,0x90,0x4c,0x4,
-+0x10,0x8,0x7f,0x4,0x3f,0x4,0x4,0xff,0x4,0x4,0x3f,0xc,0x14,0x24,0xc4,0x4,0x20,0x48,0xfc,0x90,0xf8,0x90,0x94,0xfe,0x90,0x90,0xf0,0xc0,0xb0,0x8e,0x84,0x80,
-+0x2,0x1,0x1f,0x10,0x10,0x1f,0x10,0x17,0x14,0x17,0x14,0x27,0x24,0x44,0x84,0x4,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x1,0x7d,0x5,0x45,0x29,0x29,0x11,0x11,0x29,0x29,0x45,0x85,0x1,0x1,0x1,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x4c,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x10,0x11,0x10,0x14,0xfe,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x20,0x27,0x44,0xfc,0x15,0x24,0x45,0xfd,0x45,0x5,0x1d,0xe5,0x48,0x10,0x10,0x18,0x14,0xfe,0x10,0x10,0xd0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x2a,0x46,0x82,
-+0x8,0x8,0xff,0x8,0x9,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x7f,0x0,0x20,0x24,0xfe,0x20,0x20,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x10,0xf8,0x4,0x4,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x35,0x30,0x58,0x56,0x91,0x11,0x11,0x10,0x1f,0x10,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0,
-+0x1,0x1,0xff,0x1,0x3f,0x21,0x29,0x25,0x21,0x3f,0x23,0x5,0x9,0x31,0xc1,0x1,0x0,0x4,0xfe,0x8,0xfc,0x8,0x28,0x48,0x8,0xf8,0x88,0x40,0x30,0xe,0x4,0x0,
-+0x0,0x10,0xf8,0x27,0x24,0x44,0x55,0x7c,0xd5,0x55,0x55,0x55,0x55,0x75,0x48,0x10,0x10,0x18,0x14,0xfe,0x10,0x10,0xd0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x2a,0x46,0x82,
-+0x0,0x8,0xfc,0x10,0x11,0x22,0x2d,0x78,0xa8,0x2a,0x29,0x29,0x29,0x38,0x27,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x13,0x11,0x1e,0x33,0xd0,0x10,0x10,0x11,0x12,0x54,0x20,0x40,0x44,0xfe,0x80,0x80,0xe0,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0xa2,0x40,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x15,0x18,0x30,0xd2,0x11,0x11,0x11,0x10,0x57,0x20,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0x90,0x2b,0x20,0x27,0x24,0x24,0x27,0x24,0x24,0x27,0x20,0x20,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x8,0xc8,0x48,0x48,0xc8,0x48,0x48,0xc8,0x28,0x10,
-+0x8,0x8,0x8,0x10,0x11,0x32,0x55,0x98,0x10,0x12,0x11,0x11,0x11,0x10,0x1f,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x4,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0,
-+0x8,0x4,0xff,0x2,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x26,0x7f,0x4,0x4,0x18,0x60,0x20,0x44,0xfe,0x0,0x48,0x48,0x48,0x48,0x48,0x18,0x8,0xfc,0x8,0x8,0x28,0x10,
-+0x0,0x40,0x30,0x17,0x4,0x4,0xd,0x14,0x25,0xe5,0x25,0x25,0x25,0x25,0x8,0x10,0x10,0x18,0x14,0xfe,0x10,0x10,0xd0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x2a,0x46,0x82,
-+0x8,0x8,0xff,0xa,0x2,0x7f,0x4,0xb,0x10,0x10,0x3f,0x50,0x90,0x10,0x11,0x10,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0xf0,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x12,0x12,0xfe,0x12,0x32,0x38,0x54,0x53,0x92,0x12,0x12,0x12,0x1f,0x10,0x80,0x90,0x94,0xbe,0xd0,0x8c,0x84,0x80,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x4,0x24,0x24,0x25,0x26,0x25,0x1,0x6,0x18,0x6f,0x81,0x1f,0x9,0x5,0x7f,0x0,0x40,0x48,0xfc,0x40,0x30,0x10,0x0,0xc0,0x30,0xee,0x4,0xf0,0x20,0x48,0xfc,0x0,
-+0x4,0x7e,0x44,0x44,0x44,0x7d,0x10,0x10,0x53,0x5c,0x50,0x50,0x5c,0x70,0xc3,0x0,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x4,0x7e,0x44,0x54,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x54,0x10,0x28,0x47,0x84,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x4,0x4,0x8,0x30,0xc0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0x80,0x82,0x82,0x7e,0x0,
-+0x20,0x27,0x39,0x41,0x82,0x7a,0x24,0x27,0xf9,0x21,0x25,0x22,0x2a,0x35,0x28,0x0,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0x14,0xfe,0x10,0x10,0x96,0x7c,
-+0x10,0x1e,0x28,0x45,0x8,0x4,0xff,0x2,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x2a,0x24,0x40,0x7c,0x90,0x8,0x20,0x44,0xfe,0x8,0x8,0x48,0x48,0x48,0x48,0x48,0x8,0x18,
-+0x10,0x10,0x12,0x22,0x23,0x64,0xa4,0x28,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x2e,0x23,0x62,0xa4,0x28,0x2f,0x22,0x32,0x2d,0x24,0x2a,0x31,0x20,0x20,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfe,0x20,0x24,0xfe,0x20,0x20,0x26,0xfc,
-+0x8,0x10,0x3e,0x22,0x22,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x4a,0x85,0x0,0x4,0xfe,0x84,0x94,0x94,0x94,0x94,0xa4,0xa4,0x20,0x50,0x50,0x52,0x92,0xe,
-+0x4,0x4,0xa,0x11,0x20,0x42,0xbf,0x0,0x24,0x14,0x15,0x15,0x3,0x7c,0x20,0x0,0x4,0x4,0x4,0x24,0xa4,0x64,0x24,0x24,0xa4,0xa4,0x24,0x24,0x84,0x4,0x14,0x8,
-+0x20,0x20,0x20,0x3c,0x24,0x4b,0x40,0xa0,0x23,0x20,0x20,0x24,0x28,0x30,0x23,0x0,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x2,0x42,0x22,0x2f,0x4,0x85,0x69,0x2f,0x11,0x21,0xe1,0x3f,0x29,0x21,0x21,0x21,0x0,0xc,0x30,0xe0,0x20,0x24,0x3e,0xe8,0x28,0x28,0xe8,0x28,0x28,0x48,0x88,0x8,
-+0x0,0x40,0x2f,0x28,0xa,0x8a,0x4a,0x4a,0x1a,0x2a,0xca,0x4a,0x42,0x45,0x48,0x50,0x20,0x20,0xa4,0xae,0xf0,0xa0,0xae,0xf0,0xa4,0xa4,0xa8,0x90,0x30,0x4a,0x8a,0x6,
-+0x2,0x41,0x34,0x14,0x84,0x65,0x25,0xd,0x15,0x25,0xe5,0x25,0x25,0x24,0x24,0x24,0x4,0xbe,0x84,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x14,0x4,0x14,0x8,
-+0x0,0x0,0xfb,0x8,0x17,0x10,0x3b,0x8,0x8b,0x50,0x50,0x37,0x20,0x50,0x88,0x7,0x40,0x48,0xfc,0x48,0xfe,0x48,0xf8,0x40,0xf8,0x40,0x48,0xfc,0x40,0x40,0x46,0xfc,
-+0x10,0x1f,0x10,0x27,0x24,0x67,0xa4,0x2f,0x20,0x27,0x24,0x27,0x24,0x27,0x20,0x2f,0x4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,
-+0x8,0x4,0x7f,0x1,0x3f,0x1,0x7f,0x2,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x20,0x48,0xfc,0x0,0xf8,0x0,0xfc,0x0,0x4,0xfe,0x20,0x20,0xc0,0x80,0x60,0x10,
-+0x10,0x10,0x11,0x91,0x73,0x34,0x10,0x10,0x1f,0x30,0x52,0xd1,0x10,0x10,0x10,0x10,0x80,0x80,0xf8,0x8,0x10,0xa0,0x40,0x94,0xfe,0x10,0x10,0x90,0x90,0x10,0x50,0x20,
-+0x4,0x44,0x24,0x4,0x15,0x24,0x64,0x5,0x1,0x7d,0x5,0x9,0x9,0x11,0x65,0x2,0x40,0x40,0x7c,0x84,0x48,0x30,0x20,0x40,0x8,0x98,0x60,0x20,0x10,0xe,0x4,0x0,
-+0x40,0x30,0x17,0x0,0x80,0x60,0x20,0x8,0x10,0x20,0xe0,0x20,0x20,0x2f,0x20,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0,
-+0x0,0xff,0x4,0x5,0x7d,0x45,0x41,0x43,0x7c,0x25,0x75,0x25,0x35,0xc5,0x14,0xb,0x4,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xfe,
-+0x4,0x4,0xff,0x4,0x4,0x8,0x49,0x2a,0x28,0x8,0x1f,0x28,0x49,0x88,0x8,0x8,0x40,0x44,0xfe,0x40,0x40,0xf8,0x8,0xb0,0x50,0x94,0xfe,0x10,0x10,0x90,0x10,0x30,
-+0x4,0x44,0x24,0x4,0x15,0x24,0x64,0x5,0x1,0xff,0x5,0x9,0x11,0x21,0xc1,0x1,0x40,0x40,0x7c,0x84,0x48,0x30,0x20,0x40,0x4,0xfe,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x4,0x44,0x24,0x4,0x15,0x24,0x64,0x4,0x1,0xff,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x40,0x7c,0x84,0x48,0x30,0x20,0x40,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x1,0x21,0x11,0x17,0x1,0x1,0xf1,0x11,0x1f,0x11,0x11,0x15,0x19,0x11,0x2,0x0,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x7f,0x40,0x40,0x4f,0x48,0x48,0x4f,0x48,0x48,0x48,0x50,0x60,0x40,0x7f,0x0,0x8,0xfc,0x20,0x70,0x80,0x0,0x10,0xf8,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x4,0x44,0x24,0xd,0x16,0x64,0x4,0xff,0x4,0x3f,0x24,0x38,0x27,0x20,0x3f,0x20,0x80,0xf8,0x88,0x90,0x60,0x40,0x84,0xfe,0x40,0xf8,0x48,0x38,0xc8,0x8,0xf8,0x8,
-+0x0,0x7c,0x45,0x4a,0x48,0x50,0x49,0x4a,0x44,0x45,0x45,0x69,0x53,0x40,0x40,0x40,0x80,0x80,0xf8,0x10,0xa0,0x40,0xb0,0x4e,0x44,0xf0,0x40,0x48,0xfc,0x40,0x40,0x40,
-+0x8,0x8,0xff,0x9,0x8,0x1f,0x10,0x3f,0x50,0x1f,0x10,0x1f,0x10,0x24,0x22,0x40,0x20,0x24,0xfe,0x20,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x0,0x48,0x26,0x2,
-+0x22,0x22,0x22,0x23,0xfa,0x22,0x7f,0x6a,0xa2,0x27,0x2a,0x32,0x22,0x2a,0x24,0x21,0x0,0x0,0x7c,0xc4,0x44,0x24,0x28,0x28,0x28,0x10,0x90,0x28,0x28,0x46,0x84,0x0,
-+0x1,0x9,0xfd,0x11,0x13,0x25,0x21,0x79,0xa9,0x29,0x29,0x29,0x29,0x3a,0x22,0x4,0x20,0x14,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x14,0xfe,0x0,0xa4,0x92,0x2,
-+0x9,0x8,0xf,0x10,0x10,0x3f,0x50,0x90,0x1f,0x10,0x10,0x1f,0x10,0x24,0x22,0x40,0x0,0x88,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x84,0xfe,0x0,0x90,0x4c,0x4,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x26,0x24,0x3c,0x24,0x24,0x24,0x44,0x95,0xa,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x2,0x1,0x1,0xff,0x8,0x8,0x10,0x28,0x44,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x4,0xfe,0x20,0x10,0xc,0x24,0x40,0x80,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x8,0x9,0xff,0x0,0x14,0x22,0x41,0xa2,0x14,0x8,0x14,0x12,0x22,0x40,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x41,0x31,0x10,0x7,0x80,0x60,0x20,0xb,0x10,0x27,0xe1,0x21,0x21,0x21,0x22,0x2c,0x0,0x8,0xfc,0x80,0xa0,0x44,0xa4,0x1c,0x0,0xfc,0x20,0x20,0x20,0x22,0x22,0x1e,
-+0x8,0xfd,0x8,0x48,0x4b,0x48,0x48,0x49,0x7e,0x4,0x1c,0xe4,0x44,0x14,0x9,0x2,0xc,0xf0,0x20,0x24,0xfe,0x50,0x88,0x6,0x8c,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x10,0x13,0x10,0x10,0xfc,0x27,0x24,0x25,0x27,0x45,0x29,0x11,0x29,0x45,0x82,0x4,0x18,0xe0,0x40,0x40,0x44,0xfe,0xa0,0x10,0x1e,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0xf,0x2,0xef,0xa9,0xaf,0xa0,0xaf,0xa8,0xaf,0xa8,0xaf,0xe8,0x89,0xf,0x0,0x1c,0xe0,0x48,0xfc,0x24,0xfc,0x0,0x88,0x88,0xfe,0x88,0xa8,0x28,0x8,0xa8,0x10,
-+0x12,0x11,0x11,0x17,0xfc,0x14,0x13,0x1a,0x32,0xd2,0x12,0x12,0x12,0x10,0x51,0x26,0x44,0x24,0x28,0xfe,0x2,0x4,0xf8,0x8,0x48,0x48,0x48,0x48,0x48,0xa2,0x22,0x1e,
-+0x10,0x10,0x10,0x1f,0x20,0x20,0x7d,0x92,0x10,0x7c,0x10,0x10,0x14,0x18,0x11,0x2,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x20,0x23,0x28,0x3c,0x50,0x97,0x10,0xfd,0x13,0x15,0x11,0x29,0x25,0x41,0x82,0x4,0x18,0xe0,0x40,0x40,0x44,0xfe,0xa0,0x10,0x1e,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x9,0x9,0x8,0x17,0x10,0x30,0x50,0x93,0x10,0x17,0x11,0x11,0x11,0x11,0x12,0x1c,0x0,0x8,0xfc,0x80,0xa0,0x44,0xa4,0x1c,0x0,0xfc,0x20,0x20,0x20,0x22,0x22,0x1e,
-+0x9,0x7d,0x49,0x4f,0x49,0x79,0x49,0x4f,0x49,0x79,0x4a,0x4a,0x4f,0x48,0x88,0x18,0x0,0x4,0x3e,0xe4,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0xb4,0xe8,0x60,0x20,0x20,
-+0x8,0x88,0x50,0x27,0x50,0x89,0xa,0x1c,0x29,0x48,0x88,0x8,0x8,0x9,0x52,0x24,0x80,0x40,0x44,0xfe,0x0,0x10,0xc,0x4,0x10,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x8,0xf,0x10,0x20,0x5f,0x91,0x11,0x1f,0x11,0x11,0x1f,0x11,0x11,0x21,0x41,0x80,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0x28,0x10,
-+0x20,0x20,0x20,0x3f,0x24,0x48,0x41,0xa2,0x20,0x20,0x20,0x24,0x28,0x30,0x21,0x2,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x22,0x24,0x2f,0x48,0x4f,0xf8,0x1f,0x22,0x5f,0x84,0xf7,0x4,0x34,0xc8,0x49,0x10,0x10,0x90,0xd0,0x94,0xbe,0xc4,0xa4,0x28,0xe8,0x28,0x90,0x90,0xa8,0xa8,0xc6,0x84,
-+0x10,0x10,0x20,0x23,0x44,0xf8,0x11,0x22,0x40,0xfc,0x0,0x0,0x1c,0xe0,0x41,0x2,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x24,0x24,0x49,0x24,0x3f,0x24,0x3f,0x24,0x3f,0x4,0xff,0x15,0x14,0x24,0x44,0x4,0x84,0x84,0x24,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0xe4,0x24,0x84,0x84,0x14,0x8,
-+0x8,0x8,0x7f,0x9,0xa,0xff,0x8,0x1f,0x22,0xcc,0x8,0xe,0x78,0x8,0x29,0x12,0x40,0x40,0x40,0x44,0x7e,0x88,0x8,0x48,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x2,0xff,0x28,0x28,0xfe,0xab,0xaa,0xaa,0xc7,0x82,0x83,0xfe,0x82,0x82,0xfe,0x82,0x20,0x24,0xfc,0x28,0x28,0xfe,0x10,0x20,0xfc,0x88,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x10,0x13,0x20,0xfc,0x20,0x57,0x50,0xfd,0x13,0x15,0x1d,0xf1,0x51,0x11,0x12,0x14,0xc,0xf0,0x40,0x40,0x44,0xfe,0x90,0x18,0x1e,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x20,0xff,0x20,0x50,0x51,0xfe,0x10,0x10,0x1e,0xf0,0x50,0x10,0x11,0x12,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x0,0x4,0x4,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x9c,0xe4,0x84,0x4,0x4,0x4,
-+0x2,0x1,0x7f,0x48,0x91,0x9,0xf,0x11,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x22,0x14,0x0,0xf0,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x10,0x13,0x12,0x13,0xfe,0x13,0x14,0x19,0x33,0xd4,0x1c,0x14,0x15,0x17,0x50,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x4,0xfe,0x44,0x44,0xa4,0x14,0xe4,0x28,0x10,
-+0x10,0x10,0x17,0x10,0xfd,0x10,0x17,0x18,0x30,0xdf,0x10,0x11,0x10,0x10,0x50,0x23,0x80,0x48,0xfc,0x0,0x10,0xa0,0xfc,0x80,0x84,0xfe,0x90,0x10,0xa0,0x60,0x98,0x8,
-+0x20,0x24,0x3e,0x20,0x20,0x26,0x78,0x2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x80,0x88,0x98,0xe0,0x82,0x82,0x7e,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x4,0xe,0x78,0xb,0x8,0xfe,0x8,0x19,0x1c,0x2a,0x29,0x49,0x89,0x9,0x9,0x9,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x12,0x12,0x22,0x4f,0x82,0x12,0x1f,0x22,0x62,0xaf,0x22,0x22,0x23,0x3e,0x28,0x20,0x0,0x8,0x7c,0x80,0x0,0x4,0xfe,0x8,0x8,0x88,0x8,0x8,0xc8,0x8,0x28,0x10,
-+0x0,0x78,0x48,0x50,0x51,0x62,0x55,0x49,0x49,0x49,0x69,0x51,0x41,0x41,0x42,0x44,0x40,0x40,0xa0,0xa0,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x4,0x4,0x7f,0x4,0xff,0x10,0x15,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x24,0x3f,0x20,0x40,0x50,0x48,0x40,0xfe,0x40,0x40,0xa0,0x24,0x28,0x30,0x20,0x52,0x92,0x8a,0x4,
-+0x8,0x8,0xa,0x7f,0x8,0x8,0x9,0xff,0x10,0x10,0x20,0x24,0x42,0x7e,0x1,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0xa4,0x24,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x4,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x48,0x28,0x10,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x38,0x54,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x0,0x24,0x22,0x22,0x40,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x90,0x48,0x44,0x4,
-+0x10,0x10,0x17,0x10,0xfb,0x10,0x17,0x18,0x33,0xd0,0x12,0x12,0x12,0x13,0x54,0x28,0x40,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x40,0x48,0x7c,0x40,0x40,0xc6,0x3c,
-+0x0,0x0,0x7f,0x48,0x4b,0x48,0x7f,0x48,0x4b,0x78,0x4a,0x4a,0x4a,0x7b,0x44,0x8,0x40,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x40,0x48,0x7c,0x40,0x40,0xc6,0x3c,
-+0x20,0x13,0x12,0xff,0x2,0x4b,0x48,0x49,0x4a,0x54,0x12,0x1e,0xe2,0x43,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x4,0xfe,0x44,0x44,0xa4,0x4,0xe4,0x28,0x10,
-+0x0,0x40,0x30,0x17,0x0,0x80,0x67,0x20,0x8,0x13,0xe2,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x10,0x23,0x44,0x78,0x9,0x10,0x20,0x7d,0x1,0x1,0xd,0x71,0x21,0x1,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x11,0x3e,0x24,0x48,0xbe,0x2b,0x2a,0x3e,0x2a,0x2a,0x3f,0x2a,0x2a,0x42,0x86,0x4,0xfe,0x44,0x44,0x54,0x88,0x10,0x50,0x7c,0x90,0x14,0xfe,0x10,0x10,0x10,0x10,
-+0x10,0x11,0x11,0x15,0xff,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x87,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x0,0x0,0x0,0xff,0x0,0x12,0x12,0x12,0x7f,0x12,0x12,0x12,0x12,0x22,0x41,0x2,0x40,0x50,0x48,0xfe,0x40,0x40,0x44,0x44,0x48,0x48,0x50,0x20,0x62,0x92,0xa,0x4,
-+0x4,0xff,0x4,0x10,0x7f,0x10,0x7c,0x13,0x7c,0x11,0x39,0x35,0x51,0x91,0x11,0x11,0x44,0xfe,0x40,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x8,0x8,0xff,0x8,0x9,0x2,0x4,0x8,0x14,0x24,0xc4,0x4,0x4,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x20,0x80,0x40,0x20,0x50,0x4e,0x44,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x2,0x4,0xc,0x34,0xc4,0x4,0x8,0x10,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x80,0x60,0x50,0x4e,0x44,0x40,0x40,0x40,
-+0x9,0x9,0x9,0x17,0x11,0x31,0x5f,0x90,0x13,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x10,0x10,0x10,0xfc,0x10,0x14,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x24,0xc4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0x4e,0x44,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x0,0x1f,0x10,0x90,0x50,0x51,0x12,0x3d,0x51,0xd1,0x11,0x22,0x22,0x44,0x0,0x80,0x44,0xfe,0x40,0x40,0xa0,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x40,0x20,0x2f,0x0,0xe5,0x25,0x25,0x2f,0x25,0x25,0x2d,0x35,0x24,0x9,0x0,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0x24,0xe8,0x28,0x30,0x20,0x60,0x92,0xa,0x4,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x2f,0x28,0x28,0x2f,0x28,0x48,0x8f,0x8,0x8,0xfc,0x8,0x8,0xf8,0x80,0x80,0x88,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x8,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0,
-+0x10,0x14,0x3e,0x49,0x80,0x3e,0x22,0x23,0x3e,0x22,0x22,0x3e,0x22,0x22,0x4a,0x85,0x40,0x48,0xfc,0x10,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x94,0x8,
-+0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x0,0x10,0x38,0xc0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc1,0x1,0x1f,0x1,0x11,0x9,0x5,0x7f,0x0,0x0,0x0,0x80,0x40,0x20,0x50,0xee,0x4,0x0,0xf0,0x0,0x10,0x20,0x48,0xfc,0x0,
-+0x1,0x1,0x2,0x4,0x8,0x12,0x21,0xc0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0x8e,0x84,0x0,0xf0,0x10,0x20,0x20,0x40,0x80,0x0,
-+0x0,0x40,0x37,0x10,0xf,0x80,0x67,0x20,0x8,0x17,0xe0,0x20,0x2f,0x20,0x20,0x20,0x80,0x88,0xfc,0x88,0xfe,0x88,0xf8,0x80,0x90,0xf8,0x80,0x88,0xfc,0x80,0x80,0x80,
-+0x41,0x31,0x17,0x1,0xfb,0xd,0x11,0x29,0x73,0xa8,0x2f,0x20,0x21,0x22,0x24,0x20,0x10,0x10,0xfc,0x10,0xb8,0x56,0x10,0x10,0xf8,0x0,0xfe,0x40,0x50,0x4c,0x44,0xc0,
-+0x4,0x25,0x25,0x24,0x24,0x24,0x7,0x4,0x1f,0x1,0x2,0x7f,0x1,0x9,0x11,0x63,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe,0x24,0xc0,0x0,0x10,0xf8,0x8,0x20,0x18,0x8,
-+0x20,0x20,0x3b,0x42,0x83,0x7a,0x23,0x20,0xff,0x24,0x24,0x24,0x2c,0x30,0x20,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfc,0x44,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x8,0x8,0xb,0x10,0x11,0x31,0x51,0x91,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x0,0x4,0xfe,0x4,0x4,0x4,0x8,0x8,0x88,0x90,0x50,0x20,0x50,0x88,0x6,0x4,
-+0x41,0x21,0x2f,0x1,0x1,0xe0,0x27,0x24,0x27,0x20,0x27,0x20,0x2b,0x30,0x2f,0x0,0x10,0x14,0xfe,0x10,0xf0,0x44,0xfe,0x44,0xfc,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x0,
-+0x2,0x42,0x22,0x2f,0x2,0x2,0xe2,0x22,0x2f,0x22,0x22,0x22,0x24,0x50,0x8f,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x26,0xfc,0x0,
-+0x22,0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x49,0x7f,0x8,0xff,0x8,0x8,0x9,0x8,0x2,0x6,0xf8,0x40,0x40,0x44,0x7e,0x48,0x48,0x48,0x48,0xc8,0x48,0x88,0x8,0x8,
-+0x0,0x7f,0x4,0x24,0x14,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x8,0xfc,0x40,0x48,0x50,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x8,0x8,0x7e,0x18,0x2c,0x4b,0x88,0x0,0x3f,0x0,0xff,0x1,0x9,0x11,0x25,0x2,0x20,0x28,0xfc,0x70,0xa8,0x24,0x22,0x0,0xf8,0x0,0xfe,0x0,0x20,0x18,0x8,0x0,
-+0x0,0x40,0x33,0x12,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x14,0x10,0x28,0x44,0x3,0x8,0x1c,0xe0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6,0xfc,
-+0x10,0x11,0x11,0x15,0x59,0x51,0x51,0x92,0x12,0x14,0x10,0x10,0x28,0x44,0x84,0x0,0x8,0xfc,0x8,0x8,0xf8,0x28,0x20,0x10,0xe,0xc4,0x20,0x10,0xc0,0x30,0x8,0x0,
-+0x40,0x33,0x10,0x1,0x80,0x63,0x20,0x7,0x14,0x29,0xe1,0x20,0x20,0x20,0x23,0x2c,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x2,0xf4,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x1f,0x10,0x10,0x1f,0x11,0x10,0x10,0x10,0x16,0x21,0x40,0x86,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x80,0x80,0x40,0x20,0x90,0xe,0x4,0x80,0xc0,0x40,
-+0x0,0xff,0x2,0x4,0xc,0x12,0x21,0x40,0xfe,0x8,0x8,0x8,0xf,0x71,0x22,0x0,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x4,0x28,0x10,
-+0x12,0x12,0xff,0x12,0x0,0x7f,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x22,0x42,0x2,0x4,0x84,0xc4,0x24,0x24,0xa4,0x24,0xa4,0xe4,0x24,0x24,0x24,0x24,0x4,0x14,0x8,
-+0x8,0x8,0x8,0xfe,0x8,0x7e,0x42,0x42,0x42,0x7e,0x14,0x15,0x16,0x24,0x41,0x82,0x20,0x20,0x24,0xfe,0x20,0xfc,0x84,0x84,0x84,0xfc,0x50,0x50,0x50,0x92,0x12,0xe,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0x1,0xe,0x70,0x1f,0x1,0x1,0x1,0xff,0x0,0x40,0x44,0xfe,0x40,0x0,0xf8,0x20,0xc0,0x38,0x6,0xf0,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x8,0x7f,0x48,0x4b,0x48,0x7f,0x48,0x4b,0x7a,0x4b,0x4a,0x4b,0x7a,0x4a,0x2,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x7e,0x42,0x42,0x7e,0x42,0x42,0x7e,0x42,0xe0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x24,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x10,0x10,0x1e,0x25,0x48,0xbe,0x2a,0x2a,0x3e,0x2a,0x2a,0x3e,0x0,0xf,0x70,0x20,0x40,0x20,0x24,0xfe,0x8,0xfc,0x88,0x88,0x88,0xf8,0x20,0x70,0xac,0x24,0xa0,0x40,
-+0x2,0x1,0x1,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x1,0x9,0x9,0x11,0x25,0x2,0x0,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x40,0x30,0x18,0x8,0x0,
-+0x10,0x10,0x17,0x10,0x58,0x57,0x52,0x92,0x12,0x13,0x10,0x11,0x12,0x14,0x11,0x10,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x10,0x10,0x93,0x54,0x19,0xfc,0x13,0x10,0x39,0x35,0x51,0x91,0x11,0x11,0x11,0x11,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x4,0xc,
-+0x10,0x13,0x92,0x54,0x19,0xfd,0x11,0x31,0x39,0x55,0x90,0x10,0x10,0x10,0x11,0x16,0x4,0xfe,0x20,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x24,0xa0,0x40,0x60,0x90,0xe,0x4,
-+0x10,0x13,0x20,0x20,0x44,0xfc,0x8,0x13,0x20,0x41,0xfc,0x0,0x1c,0xe0,0x47,0x0,0x0,0xfc,0x8,0x10,0x30,0x48,0x86,0x2,0x0,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x8,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0x10,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x14,0x7f,0x10,0x3f,0x55,0x1d,0x3,0xff,0x0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x40,0x7c,0xc8,0x28,0x10,0x6e,0x4,0xfe,0x0,0xf0,0x0,0xf0,0x0,0xf0,0x10,0xf0,
-+0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x9,0x11,0x65,0x2,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x20,0x18,0x8,0x0,
-+0x0,0xfd,0x4,0x8,0x18,0x26,0xc2,0x0,0x7c,0x10,0x10,0x10,0x1e,0xe0,0x40,0x3,0x4,0xfe,0x10,0x24,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x20,0x58,0x84,0x2,
-+0x8,0x8,0x7e,0x9,0x3e,0x8,0xff,0x0,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x22,0x26,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xa0,0x40,
-+0x20,0x20,0x27,0x21,0x20,0xff,0x20,0x23,0x22,0x23,0x22,0x3b,0xe1,0x41,0x2,0xc,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x20,0x22,0x22,0x1e,
-+0x12,0x12,0xff,0x12,0x20,0x3f,0x41,0xbd,0x25,0x25,0x25,0x25,0x3d,0x21,0x5,0x2,0x20,0x20,0xa0,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x20,0x20,0x27,0x79,0x40,0x87,0x78,0x23,0x22,0xfb,0x22,0x23,0x29,0x31,0x22,0xc,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x20,0x22,0x22,0x1e,
-+0x8,0xb,0x10,0x20,0x40,0x8,0x11,0x36,0x50,0x93,0x10,0x10,0x10,0x10,0x17,0x10,0x0,0xf8,0x10,0x20,0x60,0x98,0xe,0x2,0x0,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x57,0x30,0x10,0x13,0x3c,0x50,0x97,0x10,0x20,0x20,0x4f,0x80,0x80,0x44,0xfe,0x0,0xf8,0x30,0xc0,0x38,0x6,0x0,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x10,0x13,0xfc,0x3,0x48,0x4f,0x48,0x4b,0x12,0x13,0x1e,0xe3,0x42,0x2,0x2,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x2,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x14,0x4,0x8,0x70,0x0,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x50,0x42,0x42,0x3e,
-+0x2,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x14,0x4,0x4,0x8,0x70,0x0,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x50,0x40,0x42,0x42,0x3e,
-+0x1,0x1,0x83,0x64,0x28,0x7,0x10,0x20,0x3f,0xe0,0x20,0x2f,0x20,0x20,0x22,0x21,0x0,0x0,0xf0,0x20,0x48,0xfc,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x80,0x80,0x0,
-+0x10,0x10,0x13,0x12,0x56,0x5a,0x52,0x92,0x12,0x12,0x12,0x12,0x2a,0x46,0x82,0x2,0x0,0x4,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x2,0x1,0x7f,0x44,0x88,0x3f,0x4,0xff,0x4,0x3f,0x8,0xf,0x18,0x28,0xcf,0x8,0x0,0x0,0xfe,0x42,0x24,0xf0,0x14,0xfe,0x10,0xf0,0x0,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x17,0x11,0xf9,0x17,0x11,0x1b,0x33,0xd5,0x19,0x11,0x11,0x11,0x51,0x21,0x10,0xd0,0x10,0x12,0x54,0xb8,0x10,0x10,0x90,0x50,0x10,0x10,0x28,0x46,0x84,0x0,
-+0x2,0x1,0x7f,0x44,0x88,0x12,0x2,0x3f,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0xfe,0x42,0x34,0x10,0x20,0xf0,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x20,0x21,0x45,0xfd,0x9,0x11,0x21,0xfd,0x41,0x0,0x1c,0xe0,0x40,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x78,0x88,0x8,0x8,0x8,0x8,0x8,
-+0x0,0x4,0xfe,0x10,0x11,0x11,0xfe,0x10,0x10,0x10,0x1e,0xf0,0x40,0x1,0x2,0xc,0x40,0x40,0x88,0xfc,0x8,0x8,0x10,0x10,0x20,0x20,0x50,0x50,0x88,0xe,0x4,0x0,
-+0x4,0x4,0x7c,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0xff,0x0,0x40,0x48,0x7c,0x40,0x40,0x48,0x7c,0x40,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0,
-+0x4,0x4,0x7,0x8,0x8,0x10,0x20,0x0,0x1,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x40,0xe0,0x40,0x40,0x80,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0xe,0x4,0x0,
-+0x4,0x7,0x8,0x10,0x21,0x2,0xc,0x11,0x69,0x9,0x9,0x11,0x2,0x4,0x18,0xe0,0x20,0xf0,0x20,0x40,0x80,0x60,0x10,0xc,0x24,0x30,0x20,0x40,0x0,0x40,0x30,0xe,
-+0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x40,0x2f,0x20,0x0,0x87,0x64,0x24,0xc,0x15,0x26,0xe4,0x25,0x24,0x24,0x27,0x24,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0x1c,0x4,0x4,0xf4,0x4,0x4,0xfc,0x4,
-+0x0,0x3f,0x20,0x2f,0x29,0x29,0x2f,0x29,0x29,0x2f,0x2a,0x29,0x2e,0x48,0x41,0x82,0x4,0xfe,0x0,0x7c,0x10,0x50,0x50,0x54,0x7e,0x20,0x30,0x50,0xd2,0x92,0xe,0x0,
-+0x10,0x14,0x12,0x10,0xfe,0x11,0x92,0x54,0x18,0x30,0x54,0xd2,0x10,0x10,0x50,0x23,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x90,0x50,0x50,0x20,0x50,0x50,0x8e,0x4,
-+0x0,0x20,0x23,0x22,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x22,0x20,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x0,0x1,0x6,0x78,0x40,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x40,0x40,0x7f,0x40,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x3e,0x20,0x3c,0x20,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x7f,0x2,0xc,0x70,0x78,0x8,0x78,0x8,0xf8,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x8,0x48,0x30,
-+0x10,0x10,0x1f,0x21,0x62,0x14,0x8,0x14,0x23,0xc0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x40,0x50,0x4c,0x44,0x40,0x46,0xfc,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x8,0x2,0xff,0x0,0x3f,0x22,0x22,0x22,0x3e,0x8,0x2a,0x49,0x88,0x29,0x12,0x40,0x50,0x48,0x40,0x44,0xfe,0x40,0x50,0x50,0x50,0x50,0x50,0x52,0x92,0xe,0x0,
-+0x1,0x0,0x1f,0x11,0x91,0x51,0x52,0x14,0x30,0x50,0xd0,0x11,0x22,0x24,0x48,0x10,0x0,0x84,0xfe,0x0,0x0,0xf8,0x10,0x20,0x20,0x40,0xc0,0x20,0x10,0x8,0xe,0x4,
-+0x28,0x28,0xfe,0x29,0x3a,0x11,0x7c,0x54,0x57,0x7c,0x10,0xfe,0x11,0x12,0x10,0x10,0x80,0x84,0xfe,0x4,0x44,0x54,0xe4,0x44,0xfc,0x44,0xe4,0xd4,0x54,0x44,0x54,0x48,
-+0x10,0x10,0x11,0x11,0xfe,0x14,0x11,0x1d,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x80,0x80,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0xe4,0x4,0x14,0x8,
-+0x0,0x45,0x2d,0x11,0x29,0x49,0x89,0x19,0x29,0x49,0x89,0x9,0x9,0x9,0x57,0x20,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x1,0x0,0x1f,0x10,0x93,0x52,0x12,0x13,0x32,0x52,0xd3,0x12,0x12,0x22,0x2f,0x40,0x0,0x84,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x28,0x48,0x48,0x8f,0x8,0x8,0xfc,0x8,0x8,0xf8,0x80,0x84,0xfe,0x80,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0xfc,0x9,0x49,0x4a,0x4c,0x49,0x49,0x49,0x7d,0x5,0x1d,0xe5,0x4,0x28,0x10,0x80,0x80,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8,
-+0x8,0x8,0xff,0x8,0x10,0x1f,0x22,0x52,0x8a,0x7f,0x6,0xb,0xa,0x12,0x22,0x2,0x20,0x24,0xfe,0x20,0x4,0xfe,0x4,0x44,0x84,0xf4,0x4,0x84,0xc4,0x44,0x14,0x8,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x27,0x24,0x24,0x27,0x24,0x40,0x80,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0xe4,0x24,0x24,0xe4,0x4,0x14,0x8,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0xf,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x20,0x23,0x2a,0x3e,0x52,0x93,0x12,0xfe,0x12,0x12,0x13,0x2a,0x26,0x42,0x83,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0xfe,0x0,
-+0x22,0x19,0x9,0x0,0xff,0x4,0x9,0x11,0x2f,0xc1,0x1,0x3f,0x1,0x1,0x1,0x1,0x8,0x18,0x20,0x44,0xfe,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0x0,0x0,0x0,
-+0x40,0x33,0x12,0x2,0x82,0x63,0x22,0xa,0x12,0x23,0xe2,0x22,0x22,0x22,0x3f,0x20,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0xff,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x3f,0x5,0x9,0x33,0x5,0x9,0x71,0x1,0x80,0xfe,0x44,0x28,0x10,0x28,0xc6,0x70,0x88,0x18,0xa0,0x40,0x30,0xe,0x4,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x16,0x1a,0x32,0xd2,0x13,0x12,0x12,0x12,0x53,0x20,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x16,0x1b,0x32,0xd2,0x13,0x15,0x15,0x15,0x59,0x21,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x3f,0x0,0x10,0xf8,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x8,0xfc,0x0,
-+0x0,0xf,0x8,0x8,0xf,0x8,0xf,0x8,0xf,0x8,0x8,0xff,0x4,0xc,0x10,0x20,0x20,0xf0,0x20,0x20,0xe0,0x20,0xe0,0x20,0xe0,0x20,0x24,0xfe,0x40,0x20,0x18,0x8,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x11,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x11,0x11,0x51,0x5d,0x51,0x52,0x5e,0xe4,0x48,0x0,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x20,0x21,0x3d,0x41,0x81,0x7d,0x21,0x21,0xfd,0x21,0x25,0x2a,0x32,0x24,0x8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x8,0xb,0xa,0x12,0x13,0x32,0x53,0x92,0x13,0x12,0x12,0x1f,0x10,0x11,0x13,0x14,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x10,0xc,0x4,
-+0x4,0x4,0x8,0xf,0x10,0x20,0x4f,0x8,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0x44,0x44,0xc4,0x44,0x4,0x28,0x10,
-+0x10,0x13,0x12,0x12,0x5b,0x56,0x53,0x92,0x13,0x12,0x12,0x1f,0x10,0x11,0x13,0x14,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x11,0x11,0x15,0x59,0x51,0x51,0x91,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x24,0x25,0x3f,0x24,0x24,0x3f,0x50,0x50,0x50,0x9f,0x10,0x84,0xc4,0xa4,0xa4,0xa4,0x24,0x24,0xa4,0x24,0xa4,0xe4,0xa4,0x84,0x84,0x94,0x88,
-+0x10,0x11,0x11,0x11,0xfd,0x10,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0xc,
-+0x2,0x7f,0x42,0x42,0x7e,0x0,0x7e,0x42,0x42,0x7e,0x42,0x42,0x7f,0x42,0x4a,0x44,0x20,0x44,0xfe,0x84,0xa4,0x84,0x94,0x88,0x80,0xfe,0x2,0x12,0xfa,0x2,0x14,0x8,
-+0x10,0x11,0x11,0x11,0xfd,0x24,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x81,0x1,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8,
-+0x8,0xa,0x9,0x10,0x17,0x30,0x5f,0x91,0x12,0x15,0x19,0x11,0x11,0x11,0x11,0x10,0x40,0x48,0x50,0x40,0xfc,0xa0,0xfe,0x10,0x8,0xf6,0x14,0x10,0x50,0x24,0x4,0xfc,
-+0x1,0x11,0x9,0x7f,0x2,0xff,0x4,0x8,0x1f,0x28,0xcf,0x8,0xf,0x8,0xf,0x8,0x0,0x10,0x20,0xfc,0x0,0xfe,0x40,0x20,0xf0,0x2e,0xe4,0x20,0xe0,0x20,0xe0,0x20,
-+0x1,0x11,0x9,0x1,0x7f,0x2,0xff,0x4,0x8,0x1f,0x28,0xc8,0x9,0x8,0x8,0x7,0x0,0x10,0x20,0x8,0xfc,0x80,0xfe,0x40,0x20,0xf0,0x2e,0x24,0x20,0xc8,0x8,0xf8,
-+0x8,0x9,0x11,0x21,0x45,0xfc,0x9,0x11,0x21,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8,
-+0x20,0x2f,0x28,0x2a,0xf9,0x2f,0x38,0x6a,0xaa,0x2a,0x2b,0x2a,0x28,0x31,0xa1,0x42,0x4,0xfe,0x8,0x28,0x4e,0xf2,0xa0,0xa8,0xa8,0xa8,0xe8,0x94,0x94,0x24,0x22,0x40,
-+0x27,0x26,0x25,0x24,0xff,0x20,0x23,0x26,0x3b,0xe2,0x22,0x20,0x23,0x20,0xa0,0x47,0xbc,0xb4,0xac,0xa4,0xbc,0x40,0xfc,0x40,0xf8,0x40,0x7c,0x0,0xf8,0x90,0x60,0x9e,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x14,0x18,0x30,0xd7,0x10,0x11,0x11,0x12,0x54,0x28,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x20,0x27,0x24,0x24,0xff,0x24,0x25,0x2d,0x35,0xe5,0x24,0x25,0x25,0x29,0xb1,0x41,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x17,0x14,0x24,0x27,0x64,0xa5,0x25,0x25,0x25,0x24,0x25,0x25,0x29,0x31,0x21,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0xfc,0x4,
-+0x0,0x7f,0x11,0x9,0x7f,0x44,0x7f,0x0,0x7e,0x43,0x7e,0x42,0x7e,0x44,0x7e,0x2,0x38,0xd0,0x10,0x24,0xfe,0x44,0xfc,0x8,0x8,0xfe,0x8,0x88,0x48,0x8,0x28,0x10,
-+0x12,0x9,0x9,0x7f,0x40,0x80,0x1f,0x10,0x11,0x11,0x11,0x12,0x12,0x4,0x8,0x70,0x10,0x10,0x20,0xfe,0x2,0x14,0xf8,0x10,0x10,0x10,0x90,0x90,0x90,0x84,0x84,0x7c,
-+0x0,0x40,0x30,0x10,0x7,0x8,0x10,0x10,0x20,0xef,0x20,0x21,0x21,0x22,0x24,0x28,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x0,0x40,0x30,0x10,0x7,0x0,0xf0,0x10,0x10,0x1f,0x10,0x15,0x19,0x12,0x4,0x8,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x10,0x10,0x10,0x20,0x45,0xff,0x9,0x11,0x21,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x0,0x40,0x40,0x78,0x90,0x24,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x2,0x2,0xfe,
-+0x10,0x10,0x10,0x10,0x11,0xfd,0x12,0x10,0x10,0x10,0x10,0x1d,0xf0,0x40,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x84,0x44,0x14,0x24,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x8,0x8,0xff,0x8,0x7f,0x40,0x41,0x4f,0x41,0x7f,0x45,0x49,0x51,0x41,0x7f,0x40,0x20,0x24,0xfe,0x20,0xfc,0x44,0xe4,0x4,0x24,0xf4,0x44,0x34,0x14,0x4,0xfc,0x4,
-+0x10,0x10,0x14,0x1e,0x21,0x41,0xbe,0x10,0x10,0x7c,0x10,0x11,0x14,0x18,0x10,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x84,0x44,0x14,0x24,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x0,0x7f,0x42,0x82,0x3f,0x4,0x9,0x11,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0xfe,0x2,0x14,0xf8,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x4,0x4,0xff,0x4,0x4,0x3f,0x8,0x8,0x1f,0x18,0x28,0x48,0x8f,0x8,0x10,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x11,0x57,0x54,0x55,0x56,0x54,0x55,0x56,0x7c,0x44,0x0,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x90,0xc,0x84,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x8,0x8,0x11,0x17,0x31,0x52,0x95,0x11,0x12,0x13,0x14,0x18,0x10,0x11,0x16,0x40,0x40,0x90,0x8,0xfc,0x10,0xc,0x4,0xf0,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x40,0x30,0x10,0xff,0x0,0x49,0x4a,0x48,0x49,0x51,0x12,0x1c,0xe0,0x40,0x3,0x20,0x20,0x48,0x84,0xfe,0x88,0x6,0x82,0xf8,0x8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x40,0x30,0x10,0x1,0x87,0x61,0x22,0x5,0x11,0x22,0xe3,0x24,0x28,0x20,0x21,0x26,0x40,0x40,0x90,0x8,0xfc,0x10,0xc,0x4,0xf0,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x7f,0x11,0x11,0xff,0x11,0x11,0x7f,0x20,0x41,0xbf,0x21,0x21,0x21,0x3f,0x21,0x0,0x7c,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0xc2,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xfc,0x8,0x48,0x4b,0x48,0x49,0x4a,0x48,0x7d,0x6,0x4,0x34,0xc4,0x14,0xb,0x20,0x20,0x48,0x84,0xfe,0x88,0x6,0x82,0xf8,0x8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x0,0xf7,0x94,0x98,0x91,0x92,0x90,0x91,0x9e,0x93,0xf2,0x92,0x2,0x3,0x2,0x80,0x40,0xfe,0x82,0xf4,0x10,0xa0,0x40,0xb0,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0x74,0x54,0x5f,0x54,0x54,0x54,0x54,0x54,0x54,0x74,0x48,0xa,0x11,0x20,0x0,0x0,0x4,0xbe,0xe4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0x24,0x0,
-+0x2,0x2,0x3,0x2,0x2,0x2,0xff,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x80,0x60,0x30,0x10,0x0,0x0,0x0,
-+0x0,0x8,0x7c,0x49,0x4b,0x4c,0x48,0x48,0x49,0x4e,0x49,0x79,0x49,0x1,0x1,0x1,0x80,0x80,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7f,0x8,0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x12,0x12,0x13,0xfe,0x12,0x17,0x1a,0x30,0xd3,0x12,0x12,0x13,0x12,0x52,0x23,0x20,0x20,0x24,0xac,0x30,0xa2,0x22,0x1e,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x10,0x12,0x12,0x13,0xfe,0x12,0x3b,0x36,0x50,0x53,0x92,0x12,0x13,0x12,0x12,0x13,0x20,0x20,0x24,0xac,0x30,0xa2,0x22,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x8,0x49,0x49,0x49,0x7f,0x2,0xff,0x2,0x2,0x7e,0x42,0x40,0x46,0x58,0x61,0x2,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8a,0x8a,0x6,0x0,
-+0x20,0x27,0x24,0x24,0xb7,0xac,0xa4,0x27,0x24,0x24,0x25,0x24,0x27,0x24,0x20,0x21,0x4,0xbe,0x88,0xa8,0xa8,0xa8,0xa8,0xbe,0x8,0x10,0x18,0xa8,0xaa,0x4a,0x86,0x0,
-+0x1,0x3f,0x4,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0xe4,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x11,0x11,0x17,0x11,0xfd,0x11,0x11,0x11,0x11,0x1f,0x12,0x1e,0xf3,0x42,0x3,0x0,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0x0,0x90,0x8,0x0,0xfc,0x0,
-+0x22,0x22,0x7f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x54,0x62,0x40,0x7e,0x1,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xa4,0x24,0x44,0x44,0x84,0x14,0x8,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x14,0x10,0x10,0x10,0x10,0x1c,0xe1,0x42,0x4,0x8,0x80,0x80,0x80,0xfc,0x4,0x8,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x4,0xfe,0x10,0x11,0x22,0x24,0x7e,0xa4,0x24,0x24,0x24,0x25,0x3e,0x24,0x8,0x80,0x80,0x80,0xfc,0x4,0x8,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x7f,0x2,0x7f,0x4,0xff,0x8,0x1f,0x30,0x5f,0x90,0x1f,0x10,0x10,0x1f,0x10,0x70,0x80,0x10,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x1,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x28,0x24,0x22,0x44,0x48,0x92,0x1,0x0,0x84,0xfe,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0xc4,0xa8,0x90,0x8e,0x84,0x0,
-+0x20,0x20,0x27,0x24,0xb7,0xac,0xa7,0xa4,0x27,0x24,0x25,0x24,0x25,0x2a,0x30,0x20,0x80,0x44,0xfe,0x40,0xfc,0x44,0xfe,0x44,0xfc,0x48,0x50,0xe0,0x50,0x4e,0x44,0xc0,
-+0x20,0x20,0x27,0xac,0x77,0x24,0xff,0x24,0x77,0x6c,0xa5,0x24,0x25,0x2a,0x30,0x20,0x80,0x44,0xfe,0x40,0xfc,0x44,0xfe,0x44,0xfc,0x48,0x50,0xe0,0x50,0x4e,0x44,0xc0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x14,0x18,0x30,0xd0,0x10,0x10,0x10,0x1f,0x50,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x12,0x52,0x24,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x2,0x1,0x1,0xff,0x0,0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x4,0xfe,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x10,0x17,0x54,0x58,0x51,0x91,0x11,0x11,0x11,0x29,0x25,0x42,0x82,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x2,0x2,0x3f,0x2,0x2,0xff,0x2,0x4,0xf,0x12,0x27,0x40,0x80,0x2,0x1,0x0,0x0,0x10,0xe0,0x40,0x84,0xfe,0x0,0x10,0xf8,0x0,0xf0,0x10,0x10,0x20,0x20,0xc0,
-+0x10,0x10,0x13,0x10,0xfc,0x17,0x10,0x19,0x33,0xd4,0x19,0x10,0x10,0x11,0x50,0x20,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x80,0x8,0xfc,0x80,0xf8,0x8,0x8,0x10,0x90,0x60,
-+0x10,0x10,0x13,0x54,0x58,0x53,0x90,0x11,0x13,0x14,0x19,0x28,0x24,0x45,0x80,0x0,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x80,0x8,0xfc,0x80,0xf8,0x8,0x8,0x10,0x90,0x60,
-+0x11,0x1f,0x21,0xff,0x0,0x1f,0x10,0x1f,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x2,0x20,0xf0,0x4,0xfe,0x0,0xf0,0x10,0xf0,0x80,0xfc,0x80,0xf8,0x80,0xfc,0x80,0x80,
-+0x10,0x10,0x17,0x10,0x10,0xfd,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0x0,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x28,0x10,
-+0x8,0x8,0x7f,0x8,0x0,0xff,0x0,0x1,0x1f,0x11,0x11,0x11,0x1f,0x11,0x0,0x0,0x20,0x28,0xfc,0x20,0x4,0xfe,0x20,0x20,0xa0,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x17,0x10,0xfc,0x11,0x39,0x35,0x51,0x51,0x91,0x11,0x11,0x10,0x10,0x10,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x28,0x10,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x3a,0x37,0x50,0x5f,0x90,0x10,0x11,0x12,0x1c,0x10,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x0,0x4,0xff,0x10,0x10,0x21,0x20,0x7c,0xa5,0x24,0x25,0x25,0x25,0x3d,0x23,0x0,0x20,0x28,0xfc,0x20,0x24,0xfe,0x40,0x88,0xfc,0x0,0xfc,0x54,0x54,0x54,0xfe,0x0,
-+0x0,0x7f,0x54,0x54,0x7d,0x55,0x55,0x7d,0x11,0xff,0x31,0x39,0x55,0x54,0x90,0x13,0x4,0xfe,0x40,0x84,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x8c,0x4,
-+0x4,0xe,0xf8,0x8,0x8,0xfe,0x8,0x1c,0x1a,0x29,0x28,0x48,0x88,0x8,0x8,0x8,0x10,0x10,0x90,0x50,0x10,0x90,0x50,0x14,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x1,0x1,0x7f,0x1,0x3f,0x0,0x7f,0x40,0x8f,0x8,0x8,0x8,0x8,0x8,0x10,0x60,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x22,0xf4,0x20,0x20,0x20,0x24,0x24,0x1c,0x0,
-+0x0,0x0,0x8,0x7f,0x48,0x48,0x49,0x4b,0x48,0x48,0x48,0x79,0x4e,0x0,0x1,0x6,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x50,0x8c,0x4,
-+0x0,0xff,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x0,0x4,0xfe,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x47,0x34,0x17,0x84,0x67,0x22,0x3,0x14,0x24,0xe8,0x35,0x24,0x27,0x20,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xa4,0x14,0x4,0xe4,0x14,0x8,
-+0x1,0x1,0xff,0x1,0x1,0x1f,0x10,0x10,0x10,0x1f,0x14,0x4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x50,0x40,0x40,0x42,0x42,0x3e,
-+0x8,0x4,0x4,0xff,0x4,0x8,0x10,0x7f,0x2,0x4,0x9,0x72,0x6,0x19,0xe0,0x0,0x4,0x4,0x84,0xc4,0x4,0xa4,0xa4,0x24,0x24,0xa4,0x24,0x24,0x4,0x84,0x94,0x8,
-+0x2,0x1,0x7f,0x48,0x8f,0x8,0x14,0x23,0xc,0x30,0xcf,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0xfe,0x2,0xf4,0x20,0x40,0x80,0x60,0x1e,0xe4,0x20,0x20,0x20,0xe0,0x20,
-+0x0,0x43,0x22,0x22,0x3,0x2,0xe2,0x23,0x20,0x2f,0x20,0x29,0x32,0x24,0x8,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x1,0x9,0x9,0x9,0x9,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x10,0xf8,0x0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x0,0x9,0x7d,0x49,0x49,0x4f,0x48,0x4b,0x4a,0x4b,0x4a,0x7b,0x4a,0x2,0x2,0x2,0x40,0x48,0x7c,0x40,0x44,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x22,0x21,0x24,0x38,0x1,0x7f,0x1,0x1,0xff,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0x90,0x60,0x1c,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x22,0x21,0x24,0x38,0x2,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0x90,0x60,0x1c,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x2,0x2,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x8,0x7c,0x4f,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x2,0x2,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x2,0x1,0x7f,0x40,0x84,0xc,0x10,0x20,0x0,0x3f,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0xfe,0x2,0x44,0x30,0x18,0x8,0x0,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0xfe,0x10,0x10,0x10,0x10,0x1e,0xf1,0x42,0x0,0x52,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x90,0x90,0xd0,0xb0,0x92,0x12,0xe,0x0,0x4,0x82,0x92,0x12,0xf0,0x0,
-+0x0,0x7f,0x21,0x2,0xc,0x8,0x8,0xb,0x1c,0xe8,0x8,0x8,0x8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x13,0x12,0xfc,0x10,0x15,0x18,0x30,0xd3,0x10,0x10,0x10,0x10,0x57,0x20,0x40,0x20,0xfe,0x2,0x54,0x88,0x4,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x13,0x12,0x13,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x13,0x12,0x12,0x53,0x20,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x98,0x8,0x0,0x4,0xfe,0x0,
-+0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,
-+0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0xa,0xc,0x18,0xe8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x0,
-+0x2,0x1,0x7f,0x40,0x84,0x3e,0x0,0x1,0x7f,0x14,0x14,0x14,0x25,0x26,0x44,0x83,0x0,0x0,0xfe,0x42,0x74,0x40,0x40,0xf0,0x10,0xa0,0x40,0xa0,0x18,0xa,0x2,0xfe,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x38,0x34,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x1,0x1,0xff,0x1,0x2,0x4,0x8,0x30,0xc0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x88,0x40,0x24,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x2,0x1,0x7f,0x44,0x88,0x1f,0x10,0x1f,0x10,0x14,0x17,0x10,0x28,0x28,0x4f,0x88,0x0,0x0,0xfe,0x42,0x24,0xf8,0x8,0xf8,0x80,0x90,0xf0,0x80,0x88,0x88,0xf8,0x8,
-+0x8,0x8,0x7f,0x8,0x9,0x1,0xff,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x20,0x28,0xfc,0x20,0x20,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x57,0x61,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x50,0x7c,0x50,0x90,0x10,0xfe,0x4,0x7e,0x44,0x44,0x44,0x44,0x7c,0x44,
-+0x1,0x0,0x3f,0x21,0x21,0x3f,0x22,0x24,0x28,0x2f,0x20,0x20,0x3f,0x40,0x40,0x80,0x0,0x88,0xfc,0x0,0x8,0xfc,0x0,0x80,0x90,0xf8,0x80,0x84,0xfe,0x80,0x80,0x80,
-+0x40,0x30,0x13,0x2,0xfe,0xb,0x12,0x37,0x5b,0x96,0x12,0x13,0x12,0x14,0x18,0x10,0x40,0x24,0xfe,0x40,0x48,0xfc,0x80,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x1,0x1,0x7f,0x2,0x4,0x18,0xe7,0x0,0x3f,0x4,0xf,0x0,0x0,0x4,0x2,0x1,0x0,0x8,0xfc,0x80,0x40,0x30,0xce,0x4,0xf8,0x0,0xe0,0x20,0x20,0x20,0x40,0x80,
-+0x20,0x20,0x20,0x27,0xf8,0x21,0x22,0x25,0x28,0x23,0x38,0xe1,0x40,0x0,0x0,0x0,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60,
-+0x10,0x10,0x10,0x17,0xf8,0x11,0x1a,0x35,0xd0,0x17,0x10,0x11,0x10,0x10,0x50,0x20,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60,
-+0x4,0x7e,0x44,0x47,0x44,0x7d,0x12,0x15,0x5c,0x53,0x50,0x51,0x5c,0xf0,0x40,0x0,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60,
-+0x0,0x78,0x48,0x4f,0x48,0x79,0x4a,0x4d,0x48,0x7b,0x48,0x49,0x48,0x48,0x48,0x98,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60,
-+0x10,0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x10,0x17,0x1c,0xf1,0x41,0x2,0x4,0x8,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x12,0x1f,0x28,0x45,0x90,0x10,0x13,0x58,0x54,0x50,0x97,0x10,0x10,0x11,0x12,0x1c,0x44,0x7e,0xa0,0x10,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x10,0x10,0x11,0x21,0x22,0x64,0xa8,0x33,0x20,0x20,0x2f,0x21,0x21,0x22,0x27,0x20,0x80,0x80,0x40,0x40,0x20,0x10,0x4e,0xe4,0x0,0x8,0xfc,0x0,0x20,0x10,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x90,0x10,0x1f,0x10,0x11,0x11,0x12,0x14,0x18,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x2,0x1,0x7f,0x44,0x84,0x7f,0x4,0x1f,0x10,0x11,0x11,0x11,0x12,0x4,0x8,0x70,0x0,0x0,0xfe,0x42,0x44,0xfc,0x50,0xf8,0x10,0x10,0x10,0x90,0x90,0x82,0x82,0x7e,
-+0x8,0x9,0xff,0x8,0xa,0x7f,0x0,0x7f,0x0,0xff,0x8,0x2a,0x49,0x88,0x29,0x12,0x20,0x20,0xa0,0x7e,0x82,0x4,0x28,0x20,0x20,0xa0,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x7f,0x40,0x5f,0x41,0x41,0x41,0x4f,0x41,0x41,0x41,0x5f,0x40,0x40,0x7f,0x0,0x8,0xfc,0x0,0xf0,0x0,0x0,0x40,0xe0,0x0,0x0,0x20,0xf0,0x0,0x4,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0xbf,0x20,0x2f,0x20,0x20,0x27,0x20,0x20,0x2f,0x20,0x3f,0x0,0x48,0x7c,0xa0,0x10,0xfc,0x0,0xf8,0x80,0xa0,0xf0,0x80,0x90,0xf8,0x0,0xfc,0x0,
-+0x82,0x47,0x28,0x10,0x28,0x48,0x88,0x9,0x18,0x28,0x48,0x88,0x8,0x8,0x57,0x20,0x4,0xfe,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x3a,0x36,0x52,0x52,0x92,0x12,0x13,0x12,0x13,0x10,0x8,0xfc,0x0,0xf8,0x20,0x20,0x20,0xf8,0x20,0x20,0x20,0x28,0xfc,0x0,0xfe,0x0,
-+0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x3d,0x22,0x4,0x8,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0xb,0x7e,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4b,0x7a,0x4b,0x0,0x8,0xfc,0x0,0xf8,0x20,0x20,0x20,0xf8,0x20,0x20,0x20,0x28,0xfc,0x0,0xfe,0x0,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x8,0x10,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x47,0x34,0x14,0x4,0x4,0xf,0x12,0x22,0xe2,0x22,0x22,0x24,0x24,0x28,0x30,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x3f,0x0,0x0,0x0,0xff,0x4,0x4,0x8,0xf,0x0,0x0,0x0,0x2,0x1,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x20,0xc0,
-+0x2,0x2,0xff,0x4,0x4,0xa,0x9,0x11,0x22,0x44,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x4,0xfe,0x80,0x90,0xa0,0x40,0x20,0x1c,0x8,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x1,0x21,0x21,0x3f,0x20,0x8,0x4f,0x48,0x48,0x4b,0x48,0x50,0x10,0x27,0x40,0x80,0x0,0x8,0x8,0xf8,0x8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x2,0x1,0x7f,0x44,0x88,0x8,0x3e,0x8,0x8,0x7e,0x8,0x8,0x14,0x12,0x20,0x43,0x0,0x0,0xfe,0x42,0x24,0xf8,0x88,0xa8,0xa8,0xa8,0xa8,0x30,0x52,0x52,0x8e,0x0,
-+0x8,0x8,0xff,0x8,0x3e,0x22,0x14,0x8,0x3f,0xc1,0x1,0x3f,0x1,0x2,0xc,0x30,0x20,0x24,0xfe,0x20,0xa0,0x48,0x30,0x10,0xee,0x4,0x10,0xf8,0x0,0xc0,0x30,0x8,
-+0x1,0x1,0xff,0x4,0x9,0x11,0x2f,0xc1,0x3f,0x1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x0,0x4,0xfe,0x40,0x20,0x10,0xee,0x4,0xf8,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,
-+0x10,0x20,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x49,0xc,0x15,0x15,0x27,0x44,0x83,0x0,0x8,0x48,0x28,0x8,0x48,0x28,0x8,0xe,0xf8,0x8,0x8,0x48,0xc8,0x2,0xfe,
-+0x10,0x11,0x17,0x24,0x24,0x67,0xa4,0x24,0x27,0x24,0x20,0x21,0x21,0x22,0x24,0x28,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x88,0xf8,0x88,0x90,0x50,0x68,0x7a,0x42,0x3e,
-+0x20,0x20,0x23,0x3a,0x4b,0x50,0x8f,0x20,0x23,0x22,0x22,0x22,0x2a,0x30,0x21,0x6,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x10,0x11,0x13,0x12,0x5a,0x57,0x52,0x92,0x13,0x12,0x10,0x11,0x11,0x12,0x14,0x18,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x48,0x54,0x5e,0x42,0x3e,
-+0x0,0x40,0x33,0x12,0x83,0x60,0x2f,0x8,0x13,0x22,0xe2,0x22,0x22,0x20,0x21,0x26,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x20,0x20,0x20,0x27,0xfc,0x24,0x24,0x27,0x24,0x24,0x3c,0xe7,0x44,0x0,0x0,0x0,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x0,0x20,0x24,0x3e,0x20,0x20,0x2e,0x70,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x80,0x84,0x98,0xe0,0x80,0x82,0x82,0x7e,
-+0x10,0x17,0x14,0x14,0xfc,0x17,0x14,0x1c,0x34,0xd5,0x16,0x14,0x14,0x14,0x57,0x24,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0xc4,0xe4,0x5c,0x4c,0x44,0x44,0x4,0xfc,0x4,
-+0x0,0x7f,0x41,0x41,0x41,0x5f,0x41,0x43,0x43,0x45,0x49,0x51,0x41,0x41,0x7f,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x4,0x84,0x64,0x34,0x14,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x17,0x18,0x30,0xd3,0x12,0x12,0x12,0x12,0x53,0x22,0x8,0x3c,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x14,0x54,0x28,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x22,0x3f,0x20,0x2f,0x28,0x2f,0x20,0x3f,0x21,0x22,0x5f,0x42,0x8a,0x4,0x84,0xfe,0x0,0xc0,0x3e,0xa2,0xa4,0xa8,0x24,0xa2,0x22,0x32,0xac,0x20,0x20,0x20,
-+0x10,0xd,0x44,0x50,0x4b,0x40,0x60,0x57,0x40,0x48,0x53,0x72,0x52,0x53,0x52,0x40,0x4,0xfe,0x4,0x64,0x84,0x84,0xa4,0xf4,0x84,0xa4,0xf4,0x24,0x24,0xe4,0x14,0x8,
-+0x10,0x10,0x10,0x13,0x10,0xfd,0x11,0x11,0x10,0x10,0x10,0x1c,0xe0,0x40,0x7,0x0,0x80,0x40,0x48,0xfc,0x0,0x8,0x8,0x8,0x90,0x90,0x90,0xa0,0x20,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x11,0x15,0x19,0x30,0xd0,0x10,0x10,0x10,0x10,0x57,0x20,0x80,0x40,0x48,0xfc,0x0,0x8,0x8,0x8,0x90,0x90,0x90,0xa0,0x20,0x44,0xfe,0x0,
-+0x1,0x11,0x7f,0x51,0x51,0x57,0x55,0x55,0x55,0x57,0x51,0x73,0x45,0x9,0x1,0x1,0x4,0x44,0xe4,0x4,0x54,0xf4,0x54,0x54,0x54,0xd4,0x14,0x84,0x44,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x13,0x7c,0x54,0x57,0x54,0x55,0x7d,0x51,0x15,0x1d,0xf5,0x41,0x1,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x8,0x7c,0x48,0x4b,0x48,0x78,0x4f,0x48,0x49,0x79,0x49,0x49,0x49,0x49,0x89,0x19,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x20,0x10,0x13,0xfe,0x44,0x29,0x29,0xff,0x11,0x15,0xfe,0x10,0x11,0x12,0x20,0x40,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x70,0xa8,0x2e,0x24,0x20,0x20,
-+0x2,0x2,0x72,0x5f,0x52,0x52,0x52,0x53,0x52,0x5e,0x52,0x72,0x52,0x2,0xb,0x4,0x20,0x10,0x14,0xfe,0x0,0x44,0xc4,0x44,0x44,0x48,0x28,0x28,0x28,0x0,0xfe,0x0,
-+0x8,0x8,0xff,0x9,0x1,0x7f,0x1,0x9,0x5,0xff,0x3,0x5,0x9,0x31,0xc1,0x1,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0x20,0x44,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x1,0x1,0x1,0x7f,0x1,0x21,0x19,0x9,0xff,0x3,0x5,0x9,0x31,0xc1,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x10,0x30,0x44,0xfe,0x80,0x40,0x30,0x1e,0x4,0x0,0x0,
-+0x10,0x14,0xfe,0x10,0x7d,0x56,0x54,0x54,0x7c,0x10,0x38,0x34,0x54,0x90,0x10,0x13,0x20,0x20,0x7c,0x88,0x14,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0x20,0x58,0x84,0x2,
-+0x8,0x8,0xff,0x8,0x4,0x24,0x25,0x26,0x24,0x4,0x3f,0x24,0x24,0x24,0xff,0x0,0x20,0x24,0xfe,0x20,0x90,0xf8,0x0,0x40,0x20,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0,
-+0x8,0x8,0x7e,0x8,0x1c,0x2a,0x49,0xa,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x18,0x20,0x28,0xfc,0x20,0x70,0xac,0x24,0x20,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x12,0x11,0x10,0xff,0x10,0x30,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0x10,0xa4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x10,0x12,0x11,0x10,0xff,0x10,0x14,0x18,0x33,0xd0,0x10,0x10,0x10,0x10,0x5f,0x20,0x0,0x8,0x10,0xa4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0x84,0x24,0x25,0x26,0x24,0x4,0x3f,0x24,0x24,0x24,0xff,0x0,0x48,0x7c,0xa0,0x10,0x80,0xfc,0x40,0x20,0x20,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0,
-+0x20,0x1b,0x49,0x41,0x7f,0x41,0x5f,0x59,0x55,0x51,0x5f,0x43,0x45,0x49,0x51,0x41,0x4,0xfe,0x4,0x14,0xfc,0x4,0xf4,0x34,0x54,0x14,0xf4,0x84,0x44,0x34,0x14,0xc,
-+0x10,0x8,0x4,0x7f,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x10,0x20,0x48,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x42,0x31,0x15,0x4,0x87,0x64,0x25,0xd,0x15,0x25,0xe5,0x24,0x25,0x26,0x24,0x24,0x4,0x7e,0x4,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x44,0xc,
-+0x2,0x41,0x25,0x24,0x7,0x4,0xe5,0x25,0x25,0x25,0x25,0x24,0x2d,0x36,0x24,0x4,0x4,0x7e,0x4,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x44,0xc,
-+0x10,0x12,0x12,0x12,0xfe,0x12,0x14,0x1b,0x32,0xd2,0x12,0x12,0x12,0x10,0x51,0x26,0x90,0x94,0x9e,0xa8,0xc4,0x84,0x88,0xfc,0x8,0x48,0x48,0x68,0xa8,0xa2,0x22,0x1e,
-+0x8,0x48,0x48,0x49,0x4a,0x48,0x1f,0x10,0x11,0x11,0x11,0x11,0x12,0x4,0x18,0xe0,0x80,0x84,0xfe,0x20,0x10,0x10,0xf8,0x10,0x10,0x10,0x10,0x90,0x90,0x82,0x82,0x7e,
-+0x22,0x22,0x3f,0x22,0xaf,0xaa,0xaa,0xaa,0x2f,0x22,0x27,0x2a,0x32,0x22,0x22,0x22,0x10,0x10,0xdc,0x24,0xc8,0xbe,0xa2,0xaa,0xaa,0x2a,0x2a,0xaa,0x2a,0x8,0x14,0x62,
-+0x10,0x12,0x22,0x22,0x42,0xfe,0x8,0x13,0x22,0xfe,0x2,0x2,0x1c,0xe0,0x41,0xe,0x90,0x90,0x9e,0xa8,0xc4,0x84,0x88,0xfc,0x8,0x48,0x48,0x68,0xa0,0xa2,0x22,0x1e,
-+0x10,0x11,0x10,0x54,0x58,0x57,0x50,0x90,0x10,0x13,0x10,0x28,0x24,0x40,0x8f,0x0,0x0,0x8,0x90,0xa0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x1,0x41,0x35,0x15,0x85,0x65,0x25,0x1,0x10,0x27,0xe5,0x25,0x25,0x25,0x3f,0x20,0x20,0x20,0x24,0x3e,0x50,0x88,0x8,0x0,0x8,0xfc,0x28,0x28,0x28,0x28,0xfe,0x0,
-+0x0,0x8,0xff,0x12,0x12,0x13,0x12,0xfe,0x13,0x12,0x12,0x12,0x1e,0xf2,0x43,0x2,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0,
-+0x22,0x21,0x20,0x27,0xfc,0x24,0x77,0x6c,0xa4,0x27,0x24,0x25,0x25,0x26,0x24,0x20,0x0,0x0,0x3e,0xa2,0xa4,0xa4,0xa8,0xa4,0xa4,0xa2,0x22,0x22,0xb4,0xa8,0x20,0x20,
-+0x0,0x44,0x2b,0x12,0x2a,0x4b,0x8a,0xa,0x1b,0x2a,0x4a,0x8a,0xa,0xa,0x53,0x22,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0,
-+0x0,0x3f,0x24,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x28,0x29,0x2b,0x4c,0x48,0x80,0x0,0x84,0xfe,0x0,0x0,0xbe,0xa2,0xa4,0xa8,0xa4,0x22,0x22,0xa2,0xb4,0x28,0x20,0x20,
-+0x8,0x5,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x20,0x24,0x26,0x79,0x20,0x0,0x0,0x0,0xfc,0x44,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,0x40,
-+0x8,0x5,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x20,0x24,0x26,0x79,0x21,0x2,0x4,0x7e,0xc4,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x84,0x14,0x8,
-+0x0,0x40,0x33,0x12,0x82,0x63,0x26,0xa,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0,
-+0x11,0x11,0x17,0x11,0xf8,0x17,0x14,0x18,0x33,0xd0,0x10,0x10,0x10,0x11,0x51,0x2e,0x10,0x10,0xfc,0x10,0x0,0xfe,0x82,0x84,0xf8,0x88,0x88,0x88,0x88,0x8,0x28,0x10,
-+0x4,0x4,0x7f,0x4,0x4,0x7f,0x42,0x82,0x1f,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x2,0x1,0x7f,0x41,0x91,0x11,0x1f,0x11,0x21,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0xfe,0x2,0x4,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x2,0x3f,0x2,0x2,0xff,0x1,0x2,0x4,0xc,0x14,0x27,0x44,0x84,0x3,0x0,0x0,0x88,0xd8,0x20,0x44,0xfe,0x0,0x0,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x9f,0x11,0x13,0x15,0x19,0x11,0x11,0x10,0x10,0x80,0x80,0x84,0xec,0x90,0xa0,0xc4,0xfe,0x0,0x8,0x30,0xc0,0x4,0x4,0xfc,0x0,
-+0x20,0x20,0x20,0x27,0xf8,0x48,0x48,0x4f,0x49,0x8b,0x55,0x21,0x51,0x49,0x80,0x0,0x80,0x80,0x84,0xec,0x90,0xa0,0xc4,0xfe,0x0,0x8,0x30,0xc0,0x4,0x4,0xfc,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x7f,0x41,0x20,0xa0,0x3c,0x44,0xc4,0x28,0x10,0x28,0xc6,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44,
-+0x10,0x10,0x10,0x15,0x59,0x52,0x50,0x90,0x11,0x16,0x11,0x11,0x29,0x25,0x41,0x81,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x41,0x31,0x17,0x81,0x60,0x2f,0x8,0x10,0x10,0x27,0xe0,0x21,0x21,0x22,0x24,0x28,0x10,0x10,0xfc,0x10,0x0,0xfe,0x2,0x84,0x88,0xfc,0x88,0x8,0x8,0x8,0x50,0x20,
-+0x22,0x22,0xff,0x22,0x22,0x3e,0x8,0x7f,0x49,0x49,0x7f,0x8,0xff,0x8,0x9,0xa,0x20,0x20,0xa0,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x44,0x44,0xc4,0x84,0x14,0x8,
-+0x0,0x0,0x1f,0x10,0x11,0x11,0x21,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x45,0x2,0x20,0xf0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x20,0x10,0x8,0xc,0x4,0x0,
-+0x0,0x3f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x10,0xf8,0x0,0xfe,0x2,0x74,0x0,0x70,0x0,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x20,0x23,0x38,0x47,0x84,0x7b,0x20,0x23,0xf8,0x27,0x24,0x24,0x2f,0x34,0x24,0x7,0x8,0xfc,0x40,0xfe,0x42,0x58,0x40,0x58,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,
-+0x4,0x7f,0x4,0x3f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x48,0xfc,0x40,0xf8,0x0,0xfe,0x2,0x74,0x0,0x70,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x3f,0x4,0x8,0x1f,0x28,0x48,0x8f,0x4,0xfe,0x10,0x20,0x7e,0xa3,0x22,0x3e,0x20,0xf8,0x0,0x10,0xf8,0x10,0x10,0xf0,0x4,0xfe,0x20,0x44,0xfe,0x44,0x44,0x7c,0x40,
-+0x0,0x3f,0x21,0x3f,0x21,0x3f,0x22,0x4,0x3f,0x2,0x4,0x3f,0x9,0x11,0x65,0x2,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x20,0xc0,0x10,0x8,0xf8,0x20,0x18,0x8,0x0,
-+0x13,0x12,0x12,0x23,0x22,0x62,0xa3,0x20,0x2f,0x2a,0x2a,0x2f,0x2a,0x2a,0x2f,0x28,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xbe,0xaa,0xaa,0xbe,0xaa,0xaa,0xbe,0xa2,
-+0x1,0x2,0x4,0x8,0x3f,0x8,0x10,0x24,0x7e,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0x0,0x20,0x10,0xf8,0x10,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x20,0x23,0x20,0x27,0xfc,0x2b,0x20,0x2b,0x30,0xe7,0x24,0x24,0x27,0x24,0xa4,0x47,0x8,0xfc,0x40,0xfe,0x42,0x5c,0x40,0x58,0x0,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,
-+0x2,0x3f,0x22,0x22,0x22,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x22,0x4b,0x84,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x28,0x10,
-+0x1,0x11,0x9,0x1,0x7f,0x1,0x5,0x9,0x11,0x1,0xff,0x2,0x4,0x8,0x10,0x60,0x0,0x10,0x20,0x8,0xfc,0x0,0x40,0x30,0x10,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,
-+0x0,0x47,0x34,0x14,0x4,0x87,0x64,0x24,0xc,0x17,0xe4,0x24,0x24,0x24,0x27,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x10,0xfc,0x17,0x39,0x36,0x54,0x51,0x91,0x12,0x14,0x10,0x11,0x16,0x40,0x50,0xf8,0x40,0x44,0xfe,0x10,0x8c,0xf4,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x30,0x38,0x57,0x54,0x90,0x10,0x11,0x11,0x12,0x14,0x4,0xfe,0x94,0x94,0x94,0xfc,0x40,0x24,0xfe,0x80,0xf8,0x88,0x8,0x8,0x28,0x10,
-+0x0,0x40,0x31,0x12,0x4,0x9,0x10,0x10,0x27,0xe0,0x20,0x20,0x22,0x21,0x20,0x0,0x80,0x80,0x40,0x20,0x10,0x8,0x8e,0x84,0xf0,0x10,0x20,0x40,0x80,0x0,0xc0,0x40,
-+0x0,0x3f,0x20,0x2f,0x28,0x28,0x2f,0x28,0x28,0x2f,0x20,0x2f,0x20,0x20,0x5f,0x80,0x4,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x80,0xf8,0x80,0x84,0xfe,0x0,
-+0x3,0x3c,0x4,0x7f,0x4,0xe,0x15,0x64,0x5,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x8,0x8,0x48,0xc8,0x48,0x48,0x48,0x8,0x18,0x4,0xfe,0x80,0x40,0x3c,0x8,0x0,
-+0x3,0x3c,0x4,0x7f,0x4,0xe,0x15,0x65,0x11,0x1f,0x21,0x1,0xff,0x1,0x1,0x1,0x8,0x8,0x48,0xc8,0x48,0x48,0x48,0x18,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x6,0x78,0x8,0xfe,0x9,0x1c,0x2a,0x49,0x2,0xc,0x31,0xc9,0x5,0x9,0x11,0x3,0x40,0x44,0x7e,0xa4,0x24,0x44,0x94,0x8,0x80,0x60,0x1e,0x24,0x40,0x30,0x10,0x0,
-+0x12,0x1f,0x28,0x45,0x1,0xff,0x14,0x13,0x14,0x1f,0x1,0x3f,0x22,0x27,0x20,0x20,0x48,0x7c,0xa0,0x10,0x4,0xfe,0x50,0x90,0x50,0xf0,0x8,0xfc,0x48,0xe8,0x28,0x10,
-+0x4,0x44,0x2b,0x12,0x2a,0x4b,0x8a,0xa,0x1b,0x28,0x48,0x8b,0x8,0x8,0x57,0x20,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x2,0x1,0xff,0x4,0x12,0x11,0x12,0x14,0x1f,0x1,0x7f,0x42,0x44,0x4f,0x40,0x40,0x0,0x4,0xfe,0x40,0x90,0x10,0x90,0x50,0xf0,0x4,0xfe,0x4,0x44,0xe4,0x14,0x8,
-+0x0,0x40,0x2f,0x10,0x85,0x64,0x25,0x7,0x10,0x2f,0xe8,0x29,0x2b,0x28,0x28,0x28,0x80,0x48,0xfc,0x0,0x28,0xc8,0x28,0xf8,0x84,0xfe,0x84,0x24,0xf4,0x4,0x14,0x8,
-+0x0,0x13,0xfa,0x22,0x23,0x22,0xfa,0x23,0x20,0x20,0x23,0x3c,0xe0,0x40,0xf,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x1,0x1,0x7f,0x1,0x5,0x9,0x31,0xc1,0xf,0x0,0x1,0x7f,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0x40,0x30,0xe,0x4,0xe0,0x40,0x88,0xfc,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x20,0x20,0x3d,0x49,0x95,0x7f,0x55,0x55,0x7d,0x54,0x54,0x7d,0x0,0x1c,0xe3,0x40,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x20,0x18,0x8,0x0,0xfe,0x4,0x8,0x1c,0x2a,0x4a,0x88,0x8,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x8,0xff,0x8,0x6,0x78,0x8,0x8,0xff,0x8,0x1c,0x1a,0x2a,0x48,0x88,0x8,0x20,0x24,0xfe,0x20,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x28,0x10,
-+0x8,0xff,0xa,0x2,0x1f,0x4,0x4,0x8,0x10,0x10,0x7e,0x12,0x12,0x22,0x4a,0x85,0x20,0xfe,0x20,0x0,0xf0,0x10,0x90,0x60,0x20,0x24,0xfe,0x24,0x24,0x44,0x94,0x8,
-+0x1,0x1,0x1,0xff,0x1,0x3f,0x21,0x21,0x21,0x3f,0x29,0x5,0x2,0x5,0x18,0x60,0x0,0x0,0x4,0xfe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x80,0x70,0xe,
-+0x0,0xff,0x4,0x3f,0x24,0x24,0x3f,0x1,0x1,0xff,0x3,0x3,0x5,0x19,0x61,0x1,0x4,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x0,0xff,0x0,0x0,0x3e,0x22,0x22,0x22,0x32,0x2a,0x22,0x22,0x22,0x22,0x2a,0x24,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0xc8,0xa8,0x88,0x88,0x88,0x88,0xa8,0x90,
-+0x0,0x3f,0x20,0x20,0x3f,0x22,0x22,0x23,0x22,0x22,0x22,0x22,0x44,0x44,0x88,0x10,0x8,0xfc,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x1,0x7f,0x40,0x41,0x7f,0x48,0x49,0x4f,0x49,0x49,0x49,0x49,0x55,0x52,0xa0,0x1,0x20,0xa0,0x20,0x20,0xa4,0x7e,0x24,0xa4,0x24,0x24,0x24,0x44,0x44,0x84,0xa8,0x10,
-+0x0,0x8,0xfd,0x11,0x11,0x21,0x25,0x7f,0xa4,0x24,0x24,0x25,0x3d,0x22,0x4,0x0,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x0,0x3f,0x21,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x22,0x42,0x44,0x88,0x10,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x1,0x7,0x7c,0x4,0x4,0x5,0xff,0xc,0xe,0x15,0x14,0x24,0x44,0x4,0x4,0x4,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0x24,0x24,0xa4,0xa4,0x24,0x4,0x4,0x14,0x8,
-+0x10,0x1f,0x10,0x27,0x24,0x64,0xa4,0x27,0x20,0x20,0x2f,0x20,0x21,0x22,0x2c,0x20,0x4,0xfe,0xa4,0xfe,0xa4,0xa4,0xa4,0xfc,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x10,0x10,0x1f,0x22,0x22,0x67,0xa4,0x28,0x34,0x22,0x21,0x22,0x24,0x28,0x20,0x20,0x4,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x94,0x94,0x14,0x4,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x1f,0x21,0x21,0x7f,0xa1,0x23,0x23,0x25,0x25,0x29,0x31,0x21,0x21,0x21,0x84,0xc4,0x4,0x4,0x14,0xf4,0x14,0x14,0x94,0x54,0x54,0x4,0x4,0x4,0x14,0x8,
-+0x1,0x0,0x1f,0x10,0x97,0x51,0x51,0x1f,0x31,0x53,0xd3,0x15,0x29,0x21,0x41,0x1,0x0,0x84,0xfe,0x44,0x84,0x14,0x54,0xf4,0x14,0x94,0x54,0x54,0x4,0x4,0x14,0x8,
-+0x2,0x1,0x1,0x0,0x7f,0x0,0x0,0x10,0x8,0x8,0x4,0x4,0x4,0x0,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x54,0x3b,0x10,0xfd,0x11,0x38,0x34,0x54,0x90,0x10,0x10,0x17,0x10,0x80,0x40,0x40,0x8,0xfc,0x0,0x8,0x8,0x90,0x90,0x90,0xa0,0xa0,0x24,0xfe,0x0,
-+0x0,0x47,0x34,0x14,0x4,0x84,0x67,0x24,0xc,0x14,0xe4,0x24,0x24,0x28,0x29,0x32,0x4,0xfe,0x40,0x40,0x44,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x14,0x8,
-+0x1,0x3f,0x1,0x1,0xff,0x1,0x1,0x3f,0x21,0x11,0xd,0x9,0x31,0xc1,0x5,0x2,0x10,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x8,0x98,0x60,0x20,0x18,0xe,0x4,0x0,
-+0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x70,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x0,0x10,0xff,0x20,0x22,0x22,0xfb,0x23,0x20,0x27,0x24,0x3c,0xe5,0x44,0x4,0x4,0x40,0x24,0xfe,0x90,0x64,0x94,0xc,0xfc,0x40,0xfe,0x42,0x92,0xfa,0x2,0xa,0x4,
-+0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x48,0x4b,0x78,0x48,0x0,0xf,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x1f,0x21,0x21,0x6f,0xa9,0x29,0x29,0x29,0x2a,0x2c,0x28,0x28,0x28,0x28,0x0,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xd4,0x8c,0x4,0x4,0x14,0x8,
-+0x1,0xfe,0x24,0x24,0x3d,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0x3e,0xe4,0x5,0x6,0x4,0xcc,0x50,0x0,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x4,0x4,0xff,0x24,0x10,0x17,0x1,0x71,0x13,0x10,0x10,0x17,0x10,0x28,0x47,0x0,0x40,0x44,0xfe,0x40,0x90,0xf8,0x0,0x50,0xf8,0x40,0x48,0xfc,0x40,0x46,0xfc,0x0,
-+0x0,0x40,0x2f,0x21,0x1,0x2,0xe7,0x20,0x20,0x20,0x2f,0x20,0x20,0x50,0x8f,0x0,0x80,0x88,0xfc,0x0,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x46,0xfc,0x0,
-+0x20,0x27,0x25,0x3f,0x44,0x85,0x7c,0x27,0x24,0xfd,0x24,0x25,0x2d,0x36,0x28,0x0,0x44,0xfe,0x8,0xfe,0x90,0xfc,0x94,0xfe,0x94,0xfc,0x94,0x98,0x98,0x96,0x90,0x90,
-+0x1,0x3f,0x24,0x22,0x3f,0x22,0x2f,0x22,0x3f,0x22,0x2f,0x26,0x4a,0x52,0xa2,0x2,0x8,0xfc,0x20,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x68,0x50,0x4e,0x44,0x40,
-+0x10,0x10,0x10,0x18,0x55,0x52,0x54,0x98,0x10,0x13,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x0,0x88,0x65,0x24,0x0,0x81,0x6d,0x24,0xc,0x14,0xe7,0x24,0x24,0x2a,0x31,0x20,0x20,0x28,0xfc,0x40,0xa0,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x26,0xfc,0x0,
-+0x2,0x1,0x7f,0x40,0x89,0x11,0x21,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x1,0x0,0x0,0xfe,0x2,0x24,0x10,0x8,0xf0,0x10,0x10,0x10,0x10,0x10,0x50,0x20,0x0,
-+0x8,0x8,0x14,0x13,0x21,0x40,0xbe,0x0,0x11,0x49,0x2a,0x2a,0x2a,0x7,0x78,0x21,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x8,0x7c,0x48,0x48,0x49,0x7a,0x4d,0x48,0x4a,0x7a,0x49,0x49,0x49,0x48,0x4f,0x98,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x88,0x48,0x48,0x50,0x50,0x24,0xfe,0x0,
-+0x20,0x24,0x3a,0x42,0x40,0xf8,0x26,0x22,0xfa,0x22,0x23,0x2a,0x32,0x25,0x8,0x0,0x10,0x14,0xfe,0x20,0x50,0x94,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x16,0xfc,0x0,
-+0x2,0x1,0xff,0x4,0xc,0xc,0x14,0x24,0x44,0x2,0x29,0x29,0x28,0x48,0x7,0x0,0x0,0x4,0xfe,0x40,0x60,0x58,0x4c,0x44,0x40,0x0,0x10,0x28,0x24,0x24,0xe0,0x0,
-+0x10,0x10,0x17,0x14,0x58,0x57,0x51,0x91,0x12,0x13,0x10,0x28,0x25,0x42,0x84,0x0,0x40,0x48,0xfc,0x80,0xa0,0xf0,0x20,0x20,0x24,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x27,0x40,0x48,0xfb,0x11,0x21,0x42,0xfb,0x0,0x0,0x39,0xc2,0x44,0x0,0x40,0x48,0xfc,0x80,0xa0,0xf0,0x20,0x20,0x24,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x57,0x3a,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0,
-+0x0,0x40,0x2f,0x10,0x3,0x2,0xa,0x12,0x23,0xe2,0x20,0x21,0x22,0x24,0x29,0x0,0x80,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x48,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x10,0xb,0x40,0x22,0xa,0x54,0x21,0x22,0x25,0x1,0xff,0x5,0x9,0x11,0x61,0x1,0x8,0xfc,0x88,0x8c,0x8a,0x88,0x8,0x28,0x10,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x10,0xb,0x40,0x22,0xa,0x55,0x22,0x21,0x9,0x5,0xff,0x5,0x9,0x11,0x61,0x1,0x8,0xfc,0x88,0x8c,0x8a,0x28,0x10,0x0,0x20,0x44,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x2,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x24,0x24,0x22,0x21,0x28,0x30,0x20,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf8,0x10,0x20,0x40,0x80,0x60,0x1c,0x8,
-+0x0,0xff,0x4,0x4,0x7f,0x44,0x44,0x44,0x44,0x44,0x4a,0x51,0x62,0x40,0x40,0x40,0x4,0xfe,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0xa4,0x1c,0xc,0x4,0x14,0x8,
-+0x10,0x13,0xfc,0x20,0x33,0x52,0x52,0xfe,0x12,0x12,0x1f,0xf2,0x52,0x12,0x12,0x12,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x94,0x54,0x2c,0x4,0x4,0x14,0x8,
-+0x0,0x1f,0x10,0x1f,0x10,0xff,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x1f,0x1,0x7f,0x10,0xf8,0x10,0xf0,0x14,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf0,0x0,0xfc,
-+0x0,0x0,0x78,0x4f,0x48,0x4b,0x4a,0x7a,0x4a,0x4b,0x48,0x49,0x7a,0x44,0x9,0x0,0x80,0x40,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x1,0x7f,0x0,0x1f,0x10,0x10,0x1f,0x0,0x7f,0x40,0x8f,0x8,0x8,0x8,0x10,0x60,0x8,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x0,0xfe,0x22,0xf4,0x20,0x20,0x22,0x22,0x1e,
-+0x0,0x40,0x2f,0x20,0x3,0x2,0xe2,0x22,0x23,0x20,0x24,0x29,0x32,0x24,0x9,0x0,0x80,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x50,0x4c,0x46,0x42,0x80,
-+0x10,0x10,0x1f,0x10,0xfd,0x12,0x17,0x1a,0x33,0xd2,0x13,0x10,0x11,0x12,0x55,0x20,0x40,0x44,0xfe,0xa0,0x14,0x8,0xfe,0x8,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x8,0xfd,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x4a,0xfc,0x8,0x9,0xa,0x80,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0xa0,0x20,0x20,
-+0x10,0x10,0x1f,0x21,0x2a,0x64,0xaf,0x34,0x27,0x24,0x27,0x20,0x22,0x24,0x2a,0x21,0x80,0x88,0xfc,0x40,0x28,0x10,0xfe,0x14,0xf0,0x10,0xf0,0x80,0xa0,0x98,0x88,0x0,
-+0x1,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x22,0x41,0x0,0x0,0x84,0xfe,0x0,0x0,0xf8,0x10,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x17,0x10,0x56,0x59,0x53,0x96,0x1b,0x12,0x13,0x28,0x25,0x42,0x84,0x0,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0xc0,
-+0x1,0x7f,0x40,0xbc,0x24,0x14,0x25,0x6,0x8,0x33,0xcc,0x1,0xe,0x0,0x3,0x1c,0x0,0xfe,0x2,0xfc,0x48,0x28,0x48,0x88,0x40,0x30,0x4e,0x84,0x20,0xc0,0x0,0x0,
-+0x40,0x37,0x10,0x0,0x0,0x70,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x28,0x47,0x0,0x0,0xfc,0x8,0x10,0x60,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x6,0xfc,0x0,
-+0x0,0x40,0x2f,0x10,0x82,0x61,0x23,0xe,0x13,0x22,0xe3,0x20,0x21,0x22,0x25,0x20,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x0,0x7f,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x13,0x12,0x13,0xfe,0x13,0x14,0x19,0x33,0xd0,0x13,0x1f,0x12,0x12,0x53,0x22,0x8,0xfc,0x48,0xf8,0x48,0xf8,0x80,0xf8,0x10,0xe0,0x18,0xfe,0x8,0x8,0xf8,0x8,
-+0x20,0x20,0x3f,0x40,0x82,0x79,0x23,0x26,0xfb,0x22,0x23,0x20,0x29,0x32,0x25,0x0,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x0,0x3f,0x20,0x3f,0x29,0x25,0x29,0x23,0x2c,0x31,0x26,0x21,0x46,0x40,0x83,0xc,0x88,0xfc,0x0,0x78,0x48,0x28,0xc8,0x60,0x5e,0x84,0x40,0x90,0x20,0xc0,0x0,0x0,
-+0x8,0x49,0x2a,0x2c,0x8,0xff,0x8,0x18,0x1c,0x2b,0x2a,0x48,0x88,0x8,0x8,0x8,0x8,0x8,0x48,0x28,0x8,0x48,0x28,0x28,0xe,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,
-+0x1,0x7f,0x10,0x10,0x1f,0x21,0x21,0x52,0x8a,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x1,0xff,0x10,0x1f,0x31,0x4a,0x4,0x39,0x1,0xff,0x2,0x4,0xc,0x15,0x66,0x4,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0xc,0x4,0xfe,0x8,0x90,0x60,0x30,0xe,0x4,
-+0x1,0x7f,0x10,0x10,0x1f,0x21,0x21,0x52,0xc,0x8,0x30,0x40,0x28,0x24,0x44,0x80,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0xc,0x0,0x90,0x4c,0x46,0x2,
-+0x1,0x9,0x9,0x11,0x21,0x41,0x6,0x19,0xe1,0x1f,0x1,0x2,0x2,0x4,0x8,0x30,0x0,0x20,0x18,0xc,0x34,0xc0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x0,0x44,0x2c,0x13,0x28,0x48,0x8f,0x8,0x19,0x29,0x49,0x89,0x9,0x9,0x51,0x21,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x2,0x12,0xfa,0x22,0x2f,0x22,0xfa,0x27,0x26,0x2a,0x3a,0xe2,0x42,0x2,0x2,0x2,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x38,0xb8,0x54,0x54,0x92,0x10,0x10,0x10,0x10,
-+0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x49,0x8a,0x8,0x8,0x8,0x8,0x20,0x20,0x20,0x24,0xfe,0x20,0x60,0x70,0xa8,0xae,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x8,0xfd,0x10,0x13,0x20,0x20,0x7d,0xa6,0x24,0x25,0x26,0x25,0x24,0x3d,0x22,0x0,0x20,0x24,0xa8,0xfe,0x70,0xa8,0x26,0xa4,0xa4,0xde,0x54,0x54,0xbe,0x4,0x4,0x4,
-+0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0x8,0x7e,0x8,0x1c,0x2a,0x49,0x8,0x8,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x20,0x28,0xfc,0x20,0x70,0xae,0x24,0x20,0x20,
-+0x10,0x10,0x51,0x51,0x52,0x54,0x58,0x50,0x57,0x54,0x54,0x54,0x54,0x14,0x17,0x14,0x80,0x80,0x4,0xfe,0x0,0x80,0x60,0x24,0xfe,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x8,0x8,0x14,0x12,0x21,0x50,0x88,0x0,0x7f,0x1,0x2,0x14,0x8,0x4,0x4,0x0,0x0,0x7c,0x44,0x44,0xc8,0xc8,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x21,0x3c,0x4b,0x90,0x7c,0x55,0x56,0x7c,0x55,0x56,0x7d,0x0,0x1d,0xe2,0x40,0x20,0x24,0xa8,0xfe,0x70,0xa8,0x26,0xa4,0x84,0xde,0x54,0x54,0xbe,0x4,0x4,0x4,
-+0x2,0x42,0x22,0x22,0x1f,0x82,0x42,0x47,0x16,0x2a,0xea,0x32,0x22,0x22,0x22,0x22,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x38,0xb8,0x54,0x54,0x92,0x10,0x10,0x10,0x10,
-+0x0,0x9f,0x60,0x2f,0xa,0xb,0x1a,0x1f,0x20,0xe7,0x20,0x3f,0x24,0x28,0x32,0x1,0x80,0xfc,0x8,0xfc,0x28,0xe8,0x28,0xf8,0x0,0xf0,0x0,0xfc,0x90,0x8c,0x84,0x0,
-+0x8,0x17,0x30,0x5f,0x90,0x17,0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0x18,0xe0,0x44,0xfe,0x40,0xfc,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x2,0x1,0x7f,0x4,0x2,0x1,0x6,0x18,0xe0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x40,0x80,0x0,0xc0,0x30,0xe,0xf4,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x14,0x18,0x30,0xd3,0x10,0x10,0x10,0x10,0x50,0x20,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x0,0x10,0xf8,0x20,0x21,0x22,0xfc,0x28,0x20,0x23,0x20,0x38,0xc0,0x0,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x8,0xff,0x9,0x1,0x3f,0x1,0xff,0x8,0xa,0x13,0x24,0xc,0x12,0x1,0xe,0x70,0x24,0xfe,0x20,0x0,0xf8,0x0,0xfe,0x20,0x18,0xe8,0x20,0x20,0x40,0x80,0x70,0xe,
-+0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x2,0xc,0x32,0xc1,0xf,0x0,0x2,0x1,0x0,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x80,0x60,0x18,0x6,0xe0,0x40,0x80,0x0,0x80,
-+0x8,0x28,0x28,0x2f,0x28,0x29,0xff,0x0,0x49,0x49,0x49,0x55,0x63,0x41,0x7f,0x41,0x20,0x20,0x50,0x50,0x88,0x4e,0x24,0x20,0x0,0xfc,0x4,0x8,0x50,0x20,0x10,0x10,
-+0x10,0x10,0x10,0x1c,0x21,0x22,0x7c,0x90,0x10,0x7d,0x10,0x10,0x14,0x18,0x10,0x0,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x98,0x10,0x13,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x0,0x44,0x28,0xfe,0x11,0x12,0x7c,0x10,0x10,0x13,0xfc,0x10,0x10,0x20,0x20,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x40,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x0,0x40,0x37,0x10,0x0,0xf,0x9,0x12,0x24,0xe1,0x23,0x24,0x28,0x20,0x23,0xc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x8c,0xf4,0x10,0x10,0xa0,0x40,0xa0,0x1e,0x4,
-+0x0,0x7f,0x0,0x3f,0x0,0x7f,0x1,0x1,0x21,0x19,0xa,0x2,0x4,0x8,0x30,0xc0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x0,0x8,0x18,0xa0,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x7c,0x45,0x48,0x48,0x53,0x48,0x49,0x46,0x44,0x45,0x6a,0x50,0x40,0x41,0x46,0x20,0x28,0xfc,0x20,0x24,0xfe,0x88,0x44,0x7a,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x10,0x10,0x54,0x55,0x56,0x54,0x54,0x55,0x54,0x5c,0x74,0x44,0x0,0x0,0x20,0x20,0x50,0x50,0x88,0x4e,0x24,0x20,0x0,0xfc,0x4,0x8,0x50,0x20,0x10,0x10,
-+0x10,0x13,0x28,0x24,0x43,0xa1,0x11,0x1,0xff,0x3,0x5,0x29,0x10,0x8,0x8,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x12,0x2,0x7f,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x1,0x1,0x2,0x4,0xa,0x11,0x21,0xc0,0x1f,0x0,0x0,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0xf0,0x10,0x20,0x40,0x80,0x0,0x80,0x80,
-+0x0,0x47,0x34,0x15,0x84,0x65,0x26,0x8,0x17,0x24,0xe4,0x27,0x24,0x24,0x27,0x24,0x84,0x7e,0x24,0x24,0xa4,0x24,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x0,0x8,0xff,0x10,0x10,0x11,0x7f,0x10,0x11,0x11,0x1d,0xf1,0x41,0x1,0x2,0x4,0x80,0x48,0xfc,0x40,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x40,
-+0x20,0x27,0x24,0x25,0xfc,0x25,0x66,0x70,0xaf,0x24,0x24,0x27,0x24,0x24,0x27,0x24,0x84,0x7e,0x24,0x24,0xa4,0x24,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x0,0x8,0xff,0x10,0x10,0x21,0x23,0x3c,0x65,0xa5,0x25,0x25,0x25,0x3d,0x22,0x4,0x80,0x48,0xfc,0x40,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x40,
-+0x20,0x27,0x24,0x3d,0x4c,0x55,0x86,0x20,0x27,0x24,0x24,0x27,0x2c,0x34,0x27,0x4,0x84,0x7e,0x24,0x24,0xa4,0x24,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x2,0x7c,0x40,0x48,0x46,0x4a,0xf0,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x20,0x4,0xfe,0x44,0x44,0x44,0x44,0x94,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x20,0x18,0x9,0xff,0x2,0x42,0x22,0x14,0x14,0x8,0x8,0x14,0x22,0x43,0x81,0x0,0x4,0x4,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x1f,0x10,0x97,0x54,0x55,0x15,0x16,0x30,0x57,0xd4,0x14,0x27,0x24,0x44,0x7,0x84,0xfe,0x80,0x7c,0x24,0x24,0xa4,0x4c,0x80,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,
-+0x0,0x40,0x37,0x10,0x80,0x61,0x27,0x8,0x11,0x21,0xe1,0x21,0x21,0x21,0x22,0x24,0x80,0x48,0xfc,0x40,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x40,
-+0x20,0x27,0x24,0x24,0xfc,0x24,0x64,0x74,0xac,0x25,0x26,0x24,0x20,0x21,0x22,0x24,0x84,0x3e,0x24,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0x20,0x20,0x20,
-+0x0,0x4,0x2,0x3,0x1,0xff,0x0,0x0,0x4,0xc,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0x10,0x18,0xc,0xc,0x4,0x0,
-+0x2,0x2,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x4,0x8,0x8,0x11,0x16,0x20,0x40,0x0,0x40,0x20,0x4,0xfe,0x80,0x88,0x88,0x90,0xa0,0xc0,0x82,0x82,0x82,0x7e,0x0,
-+0x2,0x2,0xff,0x2,0x4,0x18,0x23,0x7f,0x8,0xf,0x8,0xf,0x8,0xff,0x0,0x0,0x40,0x24,0xfe,0xa0,0xc4,0xfc,0x0,0xfc,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x20,0x20,
-+0x0,0x8,0x7c,0x48,0x4f,0x48,0x48,0x48,0x49,0x49,0x49,0x7a,0x42,0x4,0xb,0x10,0x80,0xa0,0x90,0x84,0xfe,0xa0,0xa4,0xa4,0x28,0x28,0x30,0x20,0x62,0xa2,0x1e,0x0,
-+0x10,0x1f,0x28,0x45,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x11,0x26,0x40,0x40,0x7c,0xa0,0x10,0x40,0x24,0xfe,0x80,0x90,0x90,0xa0,0xc2,0x82,0x82,0x7e,0x0,
-+0x1,0x7f,0x48,0x91,0x79,0x4a,0x54,0x61,0x56,0x49,0x4a,0x6b,0x54,0x43,0x40,0x4f,0x0,0xfe,0x22,0x14,0xf0,0xa0,0x40,0xb0,0xe,0xf4,0x40,0xf8,0x40,0xf8,0x40,0xfc,
-+0x0,0x7c,0x45,0x4a,0x48,0x50,0x4b,0x48,0x44,0x45,0x45,0x6a,0x51,0x40,0x47,0x40,0x80,0xfc,0x88,0x50,0x20,0xd8,0x6,0xf8,0x20,0x28,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x2,0x2,0xff,0x5,0x5,0x9,0x11,0x27,0xc0,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x80,0x44,0xfe,0x0,0x10,0x20,0xc4,0x4,0xfc,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x14,0x18,0x31,0xd1,0x11,0x12,0x12,0x14,0x54,0x28,0x80,0xa0,0x90,0x90,0x84,0xfe,0xa0,0xa0,0x24,0x24,0x28,0x32,0x22,0x62,0x9e,0x0,
-+0x0,0x7c,0x44,0x48,0x48,0x57,0x48,0x48,0x45,0x45,0x65,0x5a,0x42,0x44,0x44,0x48,0x80,0xa0,0x90,0x90,0x84,0xfe,0xa0,0xa0,0x24,0x24,0x28,0x32,0x22,0x62,0x9e,0x0,
-+0x10,0x12,0x11,0x10,0xff,0x11,0x3a,0x34,0x50,0x5f,0x91,0x12,0x11,0x10,0x11,0x16,0x40,0x48,0x50,0x44,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x8,0x8,0xb0,0x40,0xb0,0x8,
-+0x11,0xd,0x5,0x7f,0x5,0xd,0x11,0x21,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x10,0x30,0x40,0xfc,0x40,0x20,0x1c,0x8,0x0,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x12,0x11,0x10,0xff,0x11,0x12,0x1c,0x30,0xd7,0x11,0x12,0x11,0x10,0x51,0x26,0x40,0x48,0x50,0x44,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x8,0x8,0xb0,0x40,0xb0,0x8,
-+0x10,0x1f,0x28,0x45,0x9,0x5,0x7f,0x5,0x9,0x11,0xff,0x4,0xc,0x3,0x4,0x38,0x40,0x7c,0xa0,0x10,0x20,0x48,0xfc,0x40,0x20,0x14,0xfe,0x20,0x40,0x80,0x60,0x10,
-+0x40,0x2f,0x28,0x8,0x8f,0x68,0x2f,0x8,0x2f,0x4c,0xd5,0x54,0x55,0x64,0x44,0x44,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfe,0x4,0xfe,0x44,0x54,0x44,0x54,0x44,0x54,0x48,
-+0x0,0x7b,0x48,0x50,0x52,0x62,0x52,0x4a,0x4a,0x4a,0x6a,0x52,0x42,0x42,0x43,0x40,0x4,0xfe,0x20,0x24,0xfe,0xa4,0xa4,0xa4,0xd4,0xcc,0x84,0x94,0x88,0x0,0xfe,0x0,
-+0x8,0x8,0xff,0x8,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x20,0x24,0xfe,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x15,0x1e,0x10,0x12,0x7f,0x42,0x42,0x42,0x7e,0x42,0x40,0x40,0x40,0x80,0x3,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x50,0x48,0x86,0x2,
-+0x1,0x0,0x3f,0x21,0x20,0x27,0x24,0x24,0x24,0x27,0x24,0x24,0x44,0x44,0x88,0x10,0x0,0x84,0xfe,0x0,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x12,0x15,0x59,0x51,0x51,0x91,0x11,0x11,0x11,0x11,0x29,0x45,0x82,0x4,0x40,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x17,0x1a,0x32,0xd2,0x13,0x12,0x12,0x14,0x54,0x29,0x48,0x7c,0x40,0xfe,0x44,0x70,0xc4,0x7c,0x0,0x44,0xfe,0x44,0x44,0x84,0x94,0x8,
-+0x1,0x1,0x1,0x1,0x3f,0x20,0x28,0x24,0x22,0x21,0x21,0x22,0x24,0x28,0x3f,0x20,0x4,0xfe,0x0,0x8,0xfc,0x8,0x28,0x68,0x88,0x8,0x88,0x48,0x28,0x18,0xf8,0x8,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x2f,0x21,0x20,0x21,0x2f,0x21,0x41,0x41,0x82,0x1c,0x10,0xf8,0x0,0xfe,0x2,0xf4,0x0,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0x28,0x10,
-+0x4,0xf,0x10,0x3f,0xe1,0x3f,0x21,0x3f,0x0,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0xe0,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,
-+0x8,0x8,0xff,0x1c,0x2a,0x49,0x3f,0x22,0x3f,0x22,0x3f,0x28,0x2f,0x28,0x4f,0x88,0x20,0x24,0xfe,0x70,0xae,0x24,0xfc,0x40,0xf8,0x48,0xf8,0x48,0x50,0x62,0x42,0x3e,
-+0x8,0xff,0x10,0x11,0x20,0x23,0x3c,0x64,0xa5,0x24,0x24,0x24,0x25,0x3e,0x20,0x0,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x20,0x24,0x2c,0xb0,0x20,0xb0,0x2e,0x24,0xa0,0x40,
-+0x3f,0x1,0x7f,0x49,0x85,0x9,0x3e,0x22,0x22,0x3f,0x8,0x2e,0x29,0x2e,0x70,0x20,0xf8,0x0,0xfe,0x22,0x44,0x20,0x40,0x78,0x88,0x50,0x20,0x50,0xfe,0x88,0x88,0xf8,
-+0x4,0x7e,0x44,0x45,0x46,0x44,0x7c,0x50,0x13,0x5d,0x51,0x51,0x51,0x5d,0xe1,0x1,0x40,0x40,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x7e,0x44,0x55,0x56,0x54,0x54,0x54,0x57,0x55,0x55,0x55,0x29,0x25,0x45,0x81,0x40,0x40,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x0,0x3f,0x22,0x22,0x3f,0x22,0x22,0x3f,0x28,0x28,0x2f,0x48,0x49,0x8a,0xc,0x0,0x84,0xfe,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x48,0x58,0x60,0x42,0x42,0x3e,
-+0x40,0x2f,0x28,0x8,0x88,0x4f,0x4a,0x2,0x1a,0x2b,0xca,0x4a,0x4a,0x4b,0x5c,0x8,0x20,0xa0,0xbc,0xc4,0xc4,0xa8,0x90,0x28,0x46,0x84,0x7c,0x44,0x44,0xc4,0x7c,0x44,
-+0x20,0x13,0x10,0x1,0xf8,0xb,0x10,0x38,0x56,0x91,0x10,0x11,0x12,0x14,0x11,0x10,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x40,0x44,0x68,0x70,0xd0,0x48,0x4e,0x44,0x40,0x80,
-+0x0,0x3f,0x0,0x0,0x1f,0x0,0x0,0xff,0x1,0x11,0x9,0x5,0x9,0x11,0x65,0x2,0x10,0xf8,0x10,0x10,0xf0,0x10,0x14,0xfe,0x8,0x10,0xa0,0x40,0x20,0x1e,0x4,0x0,
-+0x0,0x7c,0x44,0x49,0x48,0x50,0x48,0x4b,0x44,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x1,0xf7,0x11,0x55,0x33,0x55,0x9,0x14,0x2b,0xd1,0x24,0x48,0x12,0x24,0x9,0x10,0x20,0xa8,0x24,0x20,0x3e,0xe0,0x20,0x24,0x24,0x28,0x10,0x30,0x52,0x8a,0xa,0x4,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x2a,0x14,0x40,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x10,0x7c,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x90,0x17,0x14,0x14,0x14,0x14,0x14,0x17,0x14,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x10,0x10,0xfd,0x22,0x20,0x3d,0x25,0x25,0x25,0x25,0x25,0x25,0x45,0x95,0x9,0x80,0x80,0x88,0xfc,0x10,0x60,0x84,0x4c,0x50,0x20,0x20,0x10,0x10,0x4e,0x84,0x0,
-+0x3f,0x20,0x3f,0x25,0x29,0x32,0x25,0x29,0x39,0x29,0x29,0x29,0x4b,0x4c,0x88,0xb,0xfc,0x4,0xfc,0x0,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x90,0x60,0x9c,
-+0x3f,0x20,0x3f,0x24,0x22,0x3f,0x22,0x24,0x28,0x21,0x3f,0x22,0x46,0x41,0x82,0xc,0xfc,0x4,0xfc,0x90,0xa4,0xfe,0xa0,0x98,0x88,0x0,0xfe,0x10,0x20,0xc0,0x30,0x8,
-+0x10,0x12,0x21,0x20,0x47,0xf9,0x12,0x24,0x40,0xff,0x1,0x2,0x19,0xe0,0x41,0x6,0x40,0x48,0x50,0x40,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x8,0x8,0xb0,0x40,0xb0,0x8,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x2f,0x21,0x20,0x20,0x20,0x2a,0x4a,0x52,0x81,0x0,0x10,0xf8,0x0,0xfe,0x2,0xf4,0x0,0x8,0xf8,0x0,0x80,0x48,0x46,0x12,0xf0,0x0,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0x0,0x3f,0x0,0x1f,0x0,0xff,0x12,0xa,0x32,0x6,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x48,0xe8,0x48,0xc8,0x48,0xf8,0x48,0x8a,0x6a,0x4,
-+0x8,0x8,0x13,0x10,0x27,0x48,0x8b,0x10,0x30,0x57,0x90,0x10,0x1f,0x10,0x10,0x10,0x40,0x48,0xfc,0x48,0xfe,0x48,0xf8,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,
-+0x2,0x1,0x7f,0x1,0x42,0x27,0x11,0x22,0x4f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0x44,0x88,0x10,0x48,0xe4,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x0,0x40,0x20,0x2f,0x8,0x88,0x5f,0x48,0x18,0x28,0xc9,0x4b,0x4d,0x51,0x50,0x60,0x90,0xf8,0x80,0xfe,0x82,0xf4,0x80,0x88,0x78,0x0,0x40,0x24,0x2a,0xa,0xf8,0x0,
-+0x10,0x13,0x20,0x21,0x44,0xff,0x10,0x22,0x41,0xf9,0x0,0x1,0x1a,0xe4,0x41,0x0,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x40,0x44,0x4c,0x50,0xe0,0x50,0x48,0x4e,0x44,0x80,
-+0x2,0x1,0xff,0x4,0x14,0x14,0x24,0x24,0x44,0x1,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x4,0xfe,0x40,0x50,0x48,0x44,0x44,0x40,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x1,0xff,0x4,0x14,0x34,0x44,0x3f,0x1,0x1f,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x4,0xfe,0x40,0x50,0x4c,0x74,0x80,0x0,0xf0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x2,0x1,0xff,0x4,0x14,0x24,0x44,0x1f,0x0,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0xe0,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x40,0x3f,0x22,0x6,0x8a,0x52,0x42,0x10,0x2f,0xc1,0x42,0x44,0x48,0x50,0x40,0x0,0x84,0xfe,0x20,0x30,0x2c,0x24,0xa0,0x84,0xfe,0xc0,0xa0,0x90,0x8e,0x84,0x80,
-+0xc,0x70,0x44,0x44,0x64,0x54,0x54,0x44,0x44,0x5c,0xe4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x84,0x84,0xa4,0x94,0x94,0x84,0x84,0xc4,0xa8,0x90,0x80,0x80,0x80,0x80,
-+0x2,0x7,0x78,0x8,0x8,0x9,0xff,0x8,0xa,0x3f,0x22,0x22,0x22,0x22,0x3e,0x22,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x13,0x16,0x1a,0x32,0xd3,0x10,0x11,0x12,0x14,0x51,0x20,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x0,0x4,0x7e,0x55,0x56,0x54,0x7c,0x54,0x55,0x57,0x55,0x7d,0x41,0x1,0x1,0x1,0x80,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x12,0x1d,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x20,0xfc,0x21,0x51,0x52,0xfd,0x11,0x11,0x1d,0xf1,0x51,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x99,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x1,0x1,0x2,0x2,0x4,0x8,0x30,0xc8,0x8,0x9,0xe,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x80,0x80,0x40,0x30,0x1e,0x24,0x60,0x80,0x0,0x0,0x8,0x8,0xf8,0x0,
-+0x0,0x40,0x30,0x10,0x1,0x82,0x64,0x29,0x11,0x11,0xe1,0x21,0x21,0x21,0x20,0x20,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x10,0x20,0x25,0x7e,0x4,0x9,0x11,0x7d,0x1,0x1,0xd,0x71,0x20,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0x0,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x0,0x40,0x30,0x10,0x1,0x2,0xf4,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0x0,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x3f,0x24,0x24,0x3f,0x2,0x7,0x18,0x64,0x2,0x1,0x6,0x78,0x40,0x44,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x0,0xf8,0x8,0x10,0x60,0x80,0x0,0x0,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x54,0x54,0x55,0x7c,0x51,0x14,0x1c,0xe5,0x42,0x0,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x20,0x48,0xf0,0x24,0xfc,0x20,0xa8,0x26,0xa2,0x40,
-+0x0,0x7f,0x44,0x44,0x44,0x7f,0x42,0x2,0x7,0x8,0x14,0x62,0x1,0x6,0x18,0xe0,0x4,0xfe,0x44,0x44,0x44,0xfc,0x4,0x0,0xf0,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x4f,0x29,0x29,0xf,0x8,0xe1,0x23,0x26,0x29,0x20,0x20,0x27,0x50,0x8f,0x0,0x4,0xfe,0x24,0x24,0xfc,0x84,0x0,0xf8,0x8,0x10,0xa0,0xc0,0x0,0x6,0xfc,0x0,
-+0x10,0x13,0x22,0x3e,0x42,0x83,0x7e,0x10,0x10,0x7d,0x13,0x10,0x14,0x18,0x11,0x6,0x4,0xfe,0x94,0x94,0x94,0xfc,0x44,0x80,0xfc,0x4,0x8,0x90,0x60,0x40,0x80,0x0,
-+0x22,0x3f,0x50,0x89,0x7f,0x44,0x44,0x7f,0x44,0xf,0x10,0x28,0x4,0x3,0xe,0x70,0x44,0x7e,0xa0,0x14,0xfe,0x44,0x44,0xfc,0x4,0xf0,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x8,0xfd,0x9,0x49,0x49,0x49,0x48,0x48,0x7d,0x4,0x5,0x1c,0xe4,0x45,0x16,0x8,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x20,0x48,0xf0,0x24,0xfc,0x20,0xa8,0x26,0xa2,0x40,
-+0x40,0x33,0x12,0x2,0xfb,0xa,0x12,0x33,0x58,0x97,0x18,0x11,0x12,0x1c,0x10,0x10,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,0x40,
-+0x8,0x8,0xff,0x9,0x41,0x23,0x24,0x80,0x49,0x12,0x2f,0xe2,0x22,0x22,0x23,0x22,0x20,0x24,0xfe,0x20,0xf8,0x10,0xa0,0x40,0xb0,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x41,0x31,0x13,0x84,0x60,0x20,0x9,0x12,0x27,0xea,0x22,0x22,0x22,0x23,0x22,0x0,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0xe,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0xfc,0x8,0x49,0x4a,0x48,0x48,0x48,0x7d,0x7,0x5,0x1d,0xe5,0x45,0x15,0x9,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x20,0x21,0x4a,0xf8,0x10,0x20,0x41,0xfb,0x5,0x1,0x19,0xe1,0x41,0x1,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x10,0x11,0xfd,0x25,0x25,0x25,0x25,0x44,0x28,0x13,0x28,0x44,0x84,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10,
-+0x2,0x1,0x7f,0x44,0x44,0x44,0x7f,0x44,0x4e,0x4d,0x54,0x54,0x65,0x44,0x84,0x4,0x0,0x8,0xfc,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xae,0xa4,0x20,0x20,0x20,0x20,
-+0x0,0xb,0xfc,0x11,0x11,0x11,0x7d,0x11,0x11,0x10,0x1c,0xf3,0x40,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8,
-+0x8,0xff,0x10,0x11,0x21,0x25,0x3f,0x65,0xa5,0x24,0x24,0x27,0x24,0x3c,0x24,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8,
-+0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x55,0x55,0x7c,0x10,0x17,0x1c,0xe4,0x40,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xfc,0x4,0x24,0xf4,0x4,0x4,0x14,0x8,
-+0x0,0x3f,0x0,0x8,0x8,0x8,0x8,0x8,0xf,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10,
-+0x7e,0x42,0x42,0x7e,0x0,0x3f,0x0,0x8,0x8,0x8,0xf,0x0,0x0,0xff,0x0,0x0,0xfc,0x84,0x84,0xfc,0x20,0xf0,0x20,0x20,0x20,0x24,0xfe,0x4,0x24,0xf4,0x14,0x8,
-+0x0,0x20,0xff,0xa9,0xa9,0xa9,0xaf,0xa9,0xab,0xab,0xad,0xe9,0x89,0x11,0x21,0x1,0x80,0x44,0xfe,0x10,0x10,0x14,0xfe,0x10,0x30,0xb8,0x56,0x54,0x90,0x10,0x10,0x10,
-+0x0,0xb,0x7c,0x49,0x49,0x49,0x49,0x49,0x49,0x48,0x48,0x7f,0x48,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8,
-+0x20,0x27,0x24,0x24,0xff,0x24,0x24,0x24,0x27,0x20,0x38,0xe7,0x40,0x0,0x1f,0x0,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x0,0x7f,0x0,0x8,0x6,0x2,0x20,0x19,0x9,0xff,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0xfc,0x84,0x88,0x80,0x80,0x80,0x0,0x4,0xfe,0x0,0xc0,0x30,0x18,0xc,0x4,
-+0x1,0x1,0x7f,0x1,0x3f,0x1,0x1,0xff,0x4,0xf,0xa,0x11,0x20,0x43,0xc,0x30,0x0,0x8,0xfc,0x0,0xf8,0x0,0x4,0xfe,0x0,0xf0,0x20,0x40,0x80,0x40,0x30,0xe,
-+0x1,0x1,0x3f,0x1,0x1,0x7f,0x8,0x6,0x22,0x18,0x8,0xff,0x1,0x2,0xc,0x30,0x0,0x10,0xf8,0x0,0x0,0xfc,0x4,0x88,0x80,0x80,0x84,0xfe,0x40,0x30,0x18,0x8,
-+0x0,0x47,0x31,0x11,0x1,0x1,0xf1,0x11,0x11,0x11,0x12,0x14,0x10,0x28,0x47,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20,0x6,0xfc,0x0,
-+0x8,0x7c,0x48,0x4b,0x48,0x78,0x4f,0x48,0x49,0x79,0x4a,0x4a,0x4c,0x48,0x49,0x98,0x80,0x40,0x0,0xc4,0x4c,0x50,0xe0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x80,
-+0x1,0x79,0x4f,0x49,0x48,0x7f,0x48,0x48,0x4b,0x7a,0x4a,0x4b,0x4a,0x7a,0x4a,0x2,0x10,0x14,0xfe,0x10,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0x6c,0x4,0x4,0x14,0x8,
-+0x23,0x22,0x23,0x3a,0x2b,0x48,0x57,0x84,0x27,0x20,0x23,0x21,0x28,0x30,0x21,0x6,0xfc,0x4,0xfc,0x4,0xfc,0x0,0xfe,0x92,0xfe,0x0,0xfc,0x8,0x90,0x60,0x9e,0x4,
-+0x2,0x1,0xff,0x4,0x14,0x24,0x45,0x1,0x1f,0x11,0x11,0x1f,0x1,0x1,0x7f,0x0,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,
-+0x41,0x31,0x1f,0x1,0x80,0x6f,0x21,0x1,0x1f,0x29,0xe9,0x2a,0x2c,0x28,0x28,0x28,0x20,0x24,0xfe,0x20,0x8,0xfc,0x20,0x24,0xfe,0x24,0x24,0xd4,0xc,0x4,0x14,0x8,
-+0x8,0xff,0x8,0x1f,0x11,0x1f,0x0,0x7f,0x44,0x7f,0x40,0x1f,0x4,0x3,0xc,0x70,0x24,0xfe,0x20,0xf0,0x10,0xf0,0x4,0xfe,0x44,0xfc,0x4,0xf0,0x40,0x80,0x60,0x1c,
-+0x1f,0x10,0x1f,0x10,0x1f,0x0,0x7f,0x44,0x44,0x7f,0x40,0x1f,0x4,0x3,0xc,0x70,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x44,0x44,0xfc,0x4,0xf0,0x40,0x80,0x60,0x1c,
-+0x13,0x12,0x13,0x5a,0x57,0x50,0x97,0x14,0x14,0x17,0x10,0x13,0x11,0x10,0x11,0x16,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xf8,0x10,0xe0,0x18,0x6,
-+0x47,0x34,0x17,0x4,0x87,0x60,0x2f,0x9,0x19,0x2f,0xe0,0x27,0x22,0x21,0x26,0x38,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x0,0xf0,0x20,0xc0,0x30,0xe,
-+0x47,0x24,0x27,0x4,0x7,0xe0,0x2f,0x29,0x2f,0x28,0x23,0x22,0x29,0x30,0x23,0xc,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x24,0xfc,0x4,0xf0,0x10,0x20,0xc0,0x30,0xe,
-+0x8,0x8,0xff,0x8,0x8,0x2,0x1,0xff,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0x0,0x20,0x24,0xfe,0x20,0x20,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,
-+0x8,0x8,0xff,0x8,0x20,0x10,0x90,0x47,0x41,0x9,0x11,0xe1,0x21,0x21,0x21,0x20,0x20,0x24,0xfe,0x20,0x0,0x80,0x44,0xfe,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x2,0x1,0xff,0x10,0x10,0x10,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x20,0x13,0x12,0x2,0xfe,0x43,0x42,0x42,0x43,0x42,0x42,0x4a,0x7e,0x2,0x3,0x2,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x20,0x20,0x10,0x92,0xa,0x6,
-+0x10,0x10,0x10,0x10,0x5f,0x5a,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x13,0x10,0x10,0x80,0x60,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x5,0x2,0xff,0x4,0x8,0x34,0xc4,0x3f,0x4,0x4,0x8,0x30,0x40,0x44,0xfe,0x40,0x50,0x8,0xfe,0x40,0x30,0x4e,0x44,0xf8,0x40,0x40,0x40,0x40,
-+0x1,0x89,0x51,0x2f,0x51,0x91,0x17,0x14,0x34,0x54,0x97,0x14,0x14,0x14,0x57,0x24,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x4,0x4,0xff,0x4,0x1f,0x0,0x1,0x0,0xff,0x1,0x2,0x4,0x8,0x10,0x22,0x1,0x40,0x44,0xfe,0x40,0xf0,0x20,0x40,0x80,0xfe,0x82,0x84,0x80,0x80,0x80,0x80,0x0,
-+0x21,0x21,0x39,0x27,0x41,0x79,0xa7,0x24,0xfc,0x24,0x27,0x24,0x2c,0x34,0x27,0x4,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x0,0x0,0x3f,0x2,0x2,0x3,0x3e,0x2,0x3,0xfe,0x2,0x2,0x2,0x2,0x1,0x0,0x10,0x78,0x80,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x1f,0x0,0x2,0x1,0x0,0xff,0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x2,0x1,0x0,0xf0,0x20,0x40,0x80,0x80,0xfe,0x84,0x88,0x80,0x80,0x80,0x80,0x80,0x80,0x0,
-+0x21,0x26,0x3c,0x44,0x84,0x7c,0x24,0x24,0xfd,0x26,0x24,0x20,0x29,0x31,0x22,0x4,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0xa0,0x20,0x20,0x20,0x20,
-+0x4,0xe,0x30,0x22,0x22,0x22,0x22,0x22,0x22,0x2e,0x32,0x2,0x4,0x18,0x60,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x54,0x48,0x40,0x40,0x40,0x40,
-+0x8,0x8,0xff,0x8,0x9,0x1,0x3f,0x21,0x20,0x20,0x20,0x20,0x20,0x23,0x4c,0x80,0x40,0x44,0xfe,0x40,0x20,0x10,0xfc,0x0,0x88,0x88,0x50,0x60,0xa0,0x12,0xa,0x6,
-+0x0,0x7f,0x40,0x5f,0x40,0x5f,0x40,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x10,0x4,0xfe,0x4,0xf4,0x4,0xf4,0x4,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x20,0x23,0x22,0xfa,0xaa,0xaa,0xa8,0xa9,0xa9,0xa9,0xa9,0xb9,0x21,0x21,0x21,0x21,0x4,0xfe,0x4,0xf4,0x4,0xf4,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0x8,0x35,0xd5,0x49,0x39,0x25,0xcd,0x15,0x65,0xc,0x14,0x64,0x4,0x29,0x12,0x40,0x84,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x54,0x50,0x50,0x92,0x92,0xe,0x0,
-+0x6,0x78,0x40,0x48,0x4e,0x72,0xc1,0x1f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x70,0x4,0xfe,0x44,0x44,0x54,0x88,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x38,0x8,
-+0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x21,0x41,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x80,0x0,0x0,0x0,0x20,0x10,0x8,0xfc,0x4,0x0,
-+0x0,0x8,0xfc,0x10,0x10,0x11,0x12,0x7c,0x10,0x10,0x10,0x10,0x1c,0xe0,0x41,0x6,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x10,0x10,0xfc,0x11,0x32,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x11,0x16,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x12,0x12,0x13,0x14,0xff,0x12,0x32,0x3a,0x57,0x52,0x94,0x14,0x17,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x8,0x88,0x48,0xfe,0x8,0x88,0x48,0xfc,0x8,0x28,0x10,
-+0x2,0xff,0x28,0x2a,0xff,0xaa,0xaa,0xae,0xc2,0x83,0x82,0xfe,0x82,0x82,0xfe,0x82,0x40,0x44,0x7e,0x80,0x4,0x7e,0x44,0x64,0x54,0xfe,0x84,0xa4,0x94,0xfc,0x4,0x18,
-+0x1f,0x1,0x7f,0x49,0x85,0x9,0x10,0x1f,0x20,0x5f,0x12,0xff,0x20,0x3f,0x0,0x0,0xf0,0x0,0xfe,0x22,0x44,0x20,0x0,0xf8,0x0,0xf0,0x14,0xfe,0x90,0xf8,0x10,0x30,
-+0x11,0x11,0x11,0x17,0x55,0x59,0x51,0x91,0x10,0x1f,0x10,0x10,0x29,0x46,0x84,0x0,0x10,0x10,0x14,0xfe,0x10,0xf0,0x10,0xf0,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x40,0x31,0x11,0x1,0x81,0x62,0x24,0x3,0x12,0x21,0xe1,0x20,0x20,0x20,0x23,0x2c,0x10,0xf8,0x10,0x10,0x10,0xe,0x0,0xf8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x1e,0x8,
-+0x0,0x3f,0x21,0x21,0x3f,0x20,0x2f,0x28,0x28,0x2f,0x28,0x2f,0x28,0x48,0x8f,0x8,0x8,0xfc,0x8,0x8,0xf8,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x21,0x21,0x21,0x27,0xf9,0x49,0x49,0x49,0x48,0x8f,0x50,0x20,0x51,0x4a,0x84,0x0,0x10,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x21,0x20,0x3f,0x20,0x43,0x78,0xa0,0x27,0xf8,0x20,0x2f,0x20,0x28,0x31,0x22,0xc,0x10,0xa0,0xfc,0x40,0xf8,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x10,0x10,0x1f,0x20,0x5f,0x12,0x11,0x10,0xff,0x12,0x21,0x20,0x3f,0x0,0x0,0x0,0x0,0x8,0xfc,0x10,0xf8,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0xf8,0x20,0xa0,0x40,
-+0x8,0x6,0x2,0x7f,0x1,0x3f,0x1,0xff,0x1,0x1,0x7f,0x1,0x2,0x4,0x18,0xe0,0x20,0x60,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x0,0x8,0xfc,0x0,0x80,0x60,0x1e,0x4,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x7f,0x48,0x48,0x48,0x49,0x7a,0x44,0x8,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,
-+0x2,0x1,0x7f,0x40,0xa4,0x24,0x25,0x3c,0x4,0xff,0x24,0x24,0x24,0x25,0x46,0x4,0x0,0x0,0xfe,0x2,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x70,0xa8,0x2e,0x24,0x20,
-+0x20,0x20,0x20,0x23,0xf8,0x48,0x48,0x4f,0x48,0x88,0x50,0x21,0x52,0x4c,0x88,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x46,0x84,0x0,0x4,0xfe,0x24,0x24,0xfc,0x0,0x7c,0x44,0x44,0x7c,0x44,0x7c,0x44,0x44,0x7c,0x44,
-+0x20,0x1b,0x48,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x20,0x1b,0x48,0x42,0x41,0x44,0x54,0x54,0x64,0x44,0x44,0x43,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x84,0x94,0xc,0xc,0x24,0x24,0xe4,0x4,0x4,0x14,0x8,
-+0x10,0x12,0x11,0x24,0x24,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x0,0x4,0x7e,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x8,0x8,0xff,0x8,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7d,0x41,0x2,0xc,0x20,0x24,0xfe,0x28,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x8,0x8,0x28,0x10,
-+0x4,0x7f,0x4,0x7f,0x40,0x8f,0x0,0x7f,0x6,0x3b,0x5,0x1a,0x64,0x18,0x62,0x1,0x48,0xfc,0x40,0xfe,0x2,0xe4,0x0,0xfc,0x10,0x30,0xc0,0xa0,0x90,0x8e,0x84,0x0,
-+0x10,0x10,0x17,0x10,0xff,0x14,0x39,0x34,0x53,0x50,0x97,0x10,0x13,0x10,0x17,0x10,0x90,0x94,0xfe,0x90,0xfe,0x2,0xf4,0x0,0xfc,0xc0,0x68,0xb0,0x68,0xae,0x24,0x60,
-+0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x21,0x2,0x4,0x3f,0x24,0x24,0x24,0xff,0x0,0xf8,0x88,0x88,0xf8,0x88,0x88,0xf8,0x8,0x28,0x10,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x20,0x23,0x38,0x40,0x80,0x7b,0x20,0x21,0xf8,0x23,0x22,0x22,0x2a,0x32,0x2f,0x0,0x0,0xf8,0x10,0x60,0x48,0xfc,0x40,0x40,0x88,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x0,0x8b,0x50,0x20,0x50,0x97,0x10,0x11,0x30,0x53,0x92,0x12,0x12,0x12,0xaf,0x40,0x0,0xf8,0x10,0x60,0x48,0xfc,0x40,0x40,0x88,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x8,0x8,0xff,0x8,0x1c,0x2a,0x49,0x8c,0x7,0xc,0x14,0x22,0x1,0x1,0xe,0x70,0x20,0x24,0xfe,0x20,0x70,0xae,0x24,0x20,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x1f,0x0,0x0,0x1,0xff,0x1,0x5,0x2,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x0,0xf0,0x20,0xc0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x8,0x7c,0x4a,0x49,0x49,0x78,0x4f,0x48,0x78,0x48,0x49,0x49,0x7a,0x44,0x0,0x0,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x40,0xe0,0xe0,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x2,0xff,0x28,0x29,0xfe,0xaa,0xaa,0xaf,0xc2,0x82,0x82,0xfe,0x82,0x82,0xff,0x82,0x10,0x10,0x52,0x34,0xb8,0x10,0x7e,0x90,0xb0,0xb8,0xd6,0x92,0x90,0x90,0x46,0x3c,
-+0x1,0x0,0x7f,0x44,0x5f,0x4e,0x55,0x64,0x41,0x5f,0x41,0x4f,0x41,0x5f,0x81,0x1,0x0,0x84,0xfe,0x10,0x7c,0x38,0x54,0x92,0x40,0x7c,0x40,0x78,0x40,0x7c,0x40,0x40,
-+0x1,0x0,0x7f,0x44,0x5f,0x4e,0x55,0x64,0x44,0x42,0x7f,0x41,0x42,0x4c,0xb0,0x0,0x0,0x84,0xfe,0x10,0x7c,0x38,0x54,0x92,0x90,0xa4,0xfe,0xc0,0xb0,0x8e,0x84,0x80,
-+0x0,0x40,0x32,0x11,0x0,0x0,0xf7,0x10,0x11,0x11,0x12,0x14,0x10,0x28,0x44,0x83,0x40,0x40,0x48,0x50,0x40,0x44,0xfe,0x40,0x60,0x50,0x48,0x48,0x40,0x40,0x6,0xfc,
-+0x0,0x40,0x29,0x24,0x4,0x0,0xe3,0x2c,0x24,0x24,0x24,0x2d,0x34,0x24,0xa,0x11,0x20,0x20,0x24,0xa8,0x20,0x24,0xfe,0x20,0x70,0x68,0xa4,0x24,0x20,0x20,0x6,0xfc,
-+0x8,0xfc,0x8,0x8,0x9,0x79,0x4a,0x40,0x48,0x7c,0x9,0xa,0x8,0x8,0x50,0x20,0x80,0x80,0x80,0xfe,0x2,0x4,0x20,0x20,0xa8,0xa4,0x26,0x22,0x20,0x20,0xa0,0x40,
-+0x1,0x21,0x19,0xd,0x5,0x1,0xff,0x3,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x0,0x8,0x18,0x20,0x40,0x4,0xfe,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x8,0x1c,0xf0,0x10,0x11,0xfd,0x11,0x39,0x35,0x55,0x55,0x99,0x13,0x15,0x18,0x10,0x0,0x80,0x60,0x2c,0x8,0x10,0x10,0x20,0x28,0x44,0x86,0x2,0x8,0x8,0xf8,0x0,
-+0x0,0x7f,0x11,0x9,0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x12,0x2,0x4,0x18,0x60,0xfc,0x0,0x10,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x90,0x80,0x82,0x82,0x7e,
-+0x40,0x30,0x10,0x0,0x81,0x61,0x21,0x9,0x15,0x25,0xe5,0x29,0x23,0x25,0x28,0x20,0x0,0x80,0x60,0x2c,0x8,0x10,0x10,0x20,0x28,0x44,0x86,0x2,0x8,0x8,0xf8,0x0,
-+0x2,0x1,0x7f,0x42,0x89,0x28,0x4b,0xc,0x77,0x1,0x3f,0x21,0x3f,0x1,0x7f,0x20,0x0,0x0,0xfe,0x2,0x24,0xc8,0x4,0x10,0xf0,0x0,0xf8,0x8,0xf8,0x4,0xfc,0x4,
-+0x2,0x1,0x7f,0x42,0x89,0x28,0x4b,0xc,0x77,0x1,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0xfe,0x2,0x24,0xc8,0x4,0x10,0xf0,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x9,0x1f,0x29,0xc9,0x9,0x1,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0xf0,0x2e,0x24,0x60,0x0,
-+0x10,0x10,0x13,0x12,0xff,0x12,0x33,0x38,0x57,0x54,0x94,0x14,0x14,0x14,0x10,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x0,0x7b,0x4a,0x4a,0x4a,0x7b,0x4a,0x4a,0x4b,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x2,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x20,0x20,0x10,0x92,0xa,0x6,
-+0x10,0x10,0x23,0x22,0x4b,0xfa,0x13,0x20,0x47,0xfc,0x4,0x4,0x1c,0xe4,0x40,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x7f,0x40,0x5f,0x40,0x5f,0x8,0xf,0x10,0x1f,0x31,0x51,0x9f,0x12,0x4,0x18,0x60,0xfc,0x4,0xf4,0x4,0xf4,0x0,0xe0,0x48,0xfc,0x8,0x8,0xf8,0x88,0x82,0x82,0x7e,
-+0x8,0x8,0x1f,0x10,0x20,0x7f,0xa1,0x21,0x21,0x3f,0x22,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x88,0x80,0x80,0x82,0x82,0x7e,
-+0x10,0x10,0x3e,0x24,0x48,0xff,0x49,0x49,0x7f,0x55,0x14,0x24,0x25,0x44,0x83,0x0,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0xa,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0xfe,0x25,0x25,0x25,0x25,0x45,0x28,0x10,0x28,0x45,0x82,0x4,0x80,0x80,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfc,0x54,0x50,0x90,0x92,0x12,0xe,0x0,
-+0x10,0x17,0x20,0x20,0x4b,0xfa,0x12,0x22,0x42,0xfa,0x2,0x2,0x1a,0xe2,0x43,0x2,0x4,0xfe,0x40,0x84,0xfe,0x94,0x94,0xf4,0x94,0x94,0xf4,0x94,0x94,0x94,0xfc,0x4,
-+0x0,0xff,0x2,0x4,0x7f,0x44,0x44,0x47,0x44,0x44,0x44,0x47,0x44,0x44,0x7f,0x40,0x4,0xfe,0x0,0x4,0xfe,0x44,0x44,0xc4,0x44,0x44,0x44,0xc4,0x44,0x44,0xfc,0x4,
-+0x4,0x4,0xff,0x4,0x4,0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x40,0x44,0xfe,0x40,0x40,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x21,0x21,0x21,0x2f,0xf9,0x21,0x27,0x2c,0x34,0xe4,0x27,0x24,0x24,0x24,0xa7,0x44,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x9,0x7d,0x49,0x4f,0x49,0x79,0x4b,0x4a,0x4a,0x7a,0x4b,0x4a,0x4a,0x7a,0x4b,0x2,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x8,0xff,0xa,0xc,0x12,0x6b,0x2d,0x31,0xc9,0x15,0x24,0xcc,0x14,0xe4,0x29,0x12,0x24,0xfe,0x20,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x90,0x90,0x92,0x92,0xe,0x0,
-+0x4,0xe,0x78,0x8,0x8,0xfe,0x8,0x1d,0x1a,0x28,0x28,0x48,0x88,0x8,0x8,0xb,0x20,0x20,0x20,0x20,0xa8,0xa6,0xa2,0x20,0x24,0x24,0x28,0x10,0x20,0x40,0x80,0x0,
-+0x80,0x61,0x2f,0x9,0x9,0x8f,0x69,0x29,0x9,0x1f,0x29,0xc9,0x4f,0x48,0x41,0x46,0x10,0x10,0x90,0x10,0x10,0x54,0x52,0x52,0x90,0x14,0x14,0x8,0x10,0x60,0x80,0x0,
-+0x1,0x0,0x3f,0x20,0x20,0x20,0x2f,0x28,0x28,0x28,0x2f,0x28,0x48,0x48,0x8f,0x8,0x0,0x84,0xfe,0x0,0x80,0x88,0xfc,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0xfc,0x24,0x24,0x25,0x24,0x44,0x28,0x10,0x28,0x44,0x80,0x3,0x20,0x20,0x20,0x20,0xa8,0xa6,0xa2,0x20,0x24,0x24,0x28,0x10,0x20,0x40,0x80,0x0,
-+0x4,0xff,0x4,0x3f,0x24,0x24,0x3f,0x1,0x3f,0x21,0x21,0x28,0x24,0x40,0x41,0x8e,0x44,0xfe,0x40,0xf8,0x48,0x48,0xf8,0x20,0xfc,0x0,0x8,0x90,0xa0,0x42,0xa2,0x1e,
-+0x0,0xff,0x1,0x1,0x11,0x11,0x11,0x21,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x0,0x0,0x8,0x18,0x20,0x40,0x80,0x80,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x0,0x7f,0x40,0x40,0x40,0x7f,0x42,0x42,0x7f,0x42,0x41,0x41,0x48,0x50,0x60,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x80,0x42,0x32,0xe,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x16,0x1a,0x33,0xd2,0x12,0x12,0x12,0x12,0x53,0x22,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x20,0x20,0x10,0x92,0xa,0x6,
-+0x0,0x0,0x3f,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xff,0x0,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xfe,0x0,0x0,
-+0x10,0x11,0x3f,0x20,0x7f,0xa9,0x25,0x21,0xff,0x29,0x45,0x41,0x7f,0x1,0xa,0x4,0x20,0x20,0xa0,0x24,0x7e,0x84,0x44,0x44,0xc8,0x28,0x28,0x10,0xa8,0x28,0x46,0x84,
-+0x12,0x11,0x10,0x12,0x5a,0x57,0x52,0x92,0x12,0x12,0x12,0x13,0x12,0x12,0x12,0x12,0x4,0x7e,0x4,0x44,0x24,0xfc,0x94,0x54,0x54,0x24,0x54,0x8c,0x4,0x4,0x14,0x8,
-+0x20,0x1b,0x48,0x41,0x41,0x4f,0x49,0x49,0x49,0x4f,0x49,0x41,0x41,0x5f,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x4,0x24,0xf4,0x14,0x14,0x8,
-+0x0,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x1,0x1,0x2,0x4,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0xfc,0x84,0x84,0x4,0x4,0x14,0x8,
-+0x10,0x13,0x12,0x14,0x7d,0x55,0x55,0x55,0x7d,0x54,0x10,0x17,0x1c,0xe4,0x41,0x2,0x0,0xfe,0x2,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x40,0x24,0xfe,0x0,0x88,0x6,0x2,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x78,0x48,0x7,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x1e,0x20,0x21,0x7e,0x90,0x10,0x7c,0x11,0x12,0x10,0x14,0x18,0x10,0x0,0x40,0x40,0xfc,0x84,0x88,0x50,0x20,0x40,0x84,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x2,0x2,0x7,0x4,0xc,0x12,0x1,0x6,0x18,0xef,0x8,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x2,0x4,0x8,0x3f,0xc0,0x3e,0x22,0x22,0x22,0x22,0x3e,0x22,0x0,0x0,0x0,0x0,0x80,0x40,0x30,0xfe,0x8,0xfc,0x88,0x88,0x88,0xc8,0xa8,0x90,0x80,0x80,
-+0x0,0x4f,0x24,0x22,0x4,0xe0,0x21,0x22,0x2c,0x21,0x22,0x20,0x2b,0x30,0x20,0x3,0x84,0xfe,0xa4,0x94,0xa4,0xc4,0x20,0x50,0x8e,0x24,0x40,0x90,0x20,0x40,0x80,0x0,
-+0x11,0x11,0x1f,0x11,0xfd,0x13,0x16,0x1b,0x32,0xd3,0x10,0x1f,0x10,0x10,0x51,0x26,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xa0,0x1c,0x8,
-+0x8,0xff,0x8,0x3f,0x21,0x3f,0x2,0xff,0x4,0x1f,0x21,0xdf,0x1,0x3f,0x1,0x3,0x24,0xfe,0x20,0xf8,0x8,0xf8,0x0,0xfe,0x40,0xf0,0x8,0xf6,0x0,0xf8,0x0,0x0,
-+0x8,0xff,0x9,0x7f,0x44,0x7f,0x4c,0x56,0x65,0x7f,0x42,0x44,0x4f,0x74,0x84,0x7,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x70,0xae,0x24,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,
-+0x11,0x11,0x1f,0x11,0xfd,0x13,0x32,0x3b,0x56,0x53,0x90,0x1f,0x10,0x10,0x11,0x16,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xb0,0xe,0x4,
-+0x1,0x79,0x4f,0x49,0x49,0x7b,0x4a,0x4b,0x4a,0x7b,0x48,0x4f,0x48,0x48,0x49,0x9e,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xb0,0xe,0x4,
-+0x1,0x7f,0x44,0x44,0x7f,0x4e,0x55,0x64,0x7f,0x42,0x44,0x4f,0x54,0x64,0x87,0x4,0x4,0xfe,0x20,0x24,0xfe,0x70,0xa8,0x24,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,
-+0x1,0x7f,0x44,0x44,0x7f,0x4e,0x55,0x64,0x5f,0x41,0x4f,0x41,0x7f,0x41,0x85,0x2,0x8,0xfc,0x20,0x20,0xfc,0x70,0xae,0x24,0xf0,0x0,0xf0,0x0,0xfc,0x0,0x0,0x0,
-+0x0,0x3f,0x22,0x3f,0x26,0x2b,0x32,0x2f,0x28,0x2f,0x28,0x2f,0x49,0x42,0x8c,0x30,0x84,0xfe,0x20,0xfc,0x30,0x6e,0xa4,0xf8,0x88,0xf8,0x88,0xf8,0x40,0x52,0x42,0x3e,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x13,0x1c,0x30,0xd0,0x11,0x12,0x14,0x10,0x50,0x20,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,0x40,
-+0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x7f,0x3,0x3,0x5,0x9,0x11,0x61,0x1,0x1,0x0,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x80,0x40,0x20,0x18,0xe,0x4,0x0,0x0,
-+0x4,0x4,0x7f,0x4,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x2,0xc,0x70,0x40,0x48,0xfc,0x40,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x80,0x60,0x1c,
-+0x0,0x3f,0x29,0x25,0x3f,0x1,0x3f,0x1,0x7f,0x24,0x42,0x81,0x3f,0x1,0x1,0x7f,0x8,0xfc,0x28,0x48,0xf8,0x0,0xf8,0x0,0xfc,0x48,0x26,0x12,0xf8,0x0,0x8,0xfc,
-+0x1,0x7f,0x49,0x6b,0x5d,0x7f,0x8,0x7f,0x8,0xf,0x78,0x5,0x55,0x54,0x91,0x2,0x20,0xb0,0x28,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x40,0x30,0x1f,0x80,0x60,0x27,0x8,0x10,0x20,0xe1,0x22,0x24,0x20,0x20,0x20,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,0x40,
-+0x1,0x41,0x2f,0x11,0x81,0x63,0x22,0xb,0x12,0x23,0xe0,0x3f,0x20,0x20,0x23,0x2c,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xb0,0xe,0x4,
-+0x1,0x7f,0x44,0x84,0x3f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x2,0xc,0x30,0x0,0xfe,0x42,0x54,0xf8,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1c,
-+0x0,0x7f,0x44,0x48,0x48,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x4,0xfe,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x42,0x3f,0x12,0x3,0x2,0xf2,0x13,0x10,0x1f,0x10,0x10,0x15,0x1a,0x14,0x0,0x8,0x8,0xfe,0x8,0xf8,0x8,0x8,0xf8,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x1,0x2,0x4,0x8,0x3f,0x1,0x11,0x1f,0x21,0x41,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x0,0x20,0x10,0xf8,0x8,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x7f,0x8,0xf,0x8,0x8,0xf,0x1,0xff,0x1,0x3,0x5,0x19,0x61,0x1,0x20,0x28,0xfc,0x20,0xe0,0x20,0x20,0xe0,0x4,0xfe,0x0,0x80,0x60,0x1c,0x8,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x12,0x1f,0x34,0xd4,0x14,0x14,0x17,0x10,0x50,0x20,0x8,0xfc,0x8,0x88,0x48,0x8,0x8,0xfe,0x8,0x88,0x48,0x8,0xfc,0x8,0x50,0x20,
-+0x8,0x8,0x48,0x4a,0x7f,0x48,0x89,0x8,0x8,0xe,0x18,0xe8,0x8,0x8,0xb,0x8,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x2,0x1,0xff,0x0,0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0xfc,0x24,0x24,0x27,0x25,0x45,0x29,0x11,0x29,0x44,0x84,0x0,0x4,0xfe,0x84,0xa4,0x94,0x84,0x84,0xfe,0x4,0x24,0x14,0x4,0xfe,0x4,0x28,0x10,
-+0x0,0x1f,0x10,0x12,0x11,0x10,0x10,0xff,0x20,0x22,0x21,0x20,0x3f,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x90,0x90,0x14,0xfe,0x10,0x10,0x90,0x90,0xf8,0x10,0xa0,0x40,
-+0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x2,0xff,0x4,0x9,0x37,0xc1,0x1,0x1f,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x40,0x30,0xce,0x4,0x20,0xf0,
-+0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x8,0x1f,0x28,0xcf,0x8,0xf,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0xf0,0x28,0xe6,0x20,0xe0,
-+0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x11,0x3f,0xd1,0x11,0x11,0x1,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xfe,0x14,0x50,0x20,0x0,
-+0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x12,0x22,0xdf,0x4,0x8,0x30,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xe,0xe4,0x20,0xa0,0x40,
-+0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x12,0x22,0xcb,0x12,0x22,0x6,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xe,0x24,0x90,0x90,0x0,
-+0x1,0x1,0x1,0x1,0xff,0x1,0x3,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x1,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x20,0x10,0x8,0xe,0x4,0x0,0x0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x0,
-+0x8,0x7c,0x4b,0x48,0x48,0x78,0x4f,0x49,0x4a,0x7c,0x4b,0x48,0x48,0x78,0x4f,0x0,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x10,0x4c,0x44,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0x8,0x48,0x48,0x7e,0x49,0x8a,0x8,0xe,0x18,0xe8,0x8,0x8,0x8,0x9,0xe,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x1c,0xf3,0x12,0x13,0xfe,0x33,0x39,0x52,0x54,0x53,0x90,0x13,0x10,0x10,0x17,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x50,0x64,0x42,0x90,0x20,0xc8,0x10,0x60,0x80,
-+0x1,0x2,0xc,0x37,0xc0,0x1f,0x10,0x1f,0x0,0x3f,0x1,0x1f,0x1,0x7f,0x1,0x3,0x0,0x80,0x60,0xde,0x4,0xf0,0x10,0xf0,0x30,0xc0,0x0,0xf0,0x0,0xfc,0x0,0x0,
-+0x0,0xf,0x72,0x52,0x5f,0x52,0x52,0x52,0x5f,0x52,0x52,0x74,0x54,0x9,0x10,0x0,0x0,0xde,0x52,0x54,0xd4,0x54,0x58,0x54,0xd2,0x52,0x52,0x52,0x5a,0x54,0x90,0x10,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4a,0x7a,0x4a,0x2,0x2,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0x4,0x14,0x8,
-+0x20,0x20,0x38,0x23,0x42,0x7a,0xa2,0x22,0xfa,0x22,0x23,0x22,0x2a,0x32,0x22,0x2,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0x4,0x14,0x8,
-+0x0,0x7f,0x9,0x9,0x7f,0x9,0x9,0x9,0x7f,0x9,0x9,0x11,0x11,0x25,0x42,0x0,0x4,0x7e,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x27,0x22,0x22,0xfa,0x4f,0x4a,0x4a,0x8a,0x57,0x22,0x52,0x4d,0x84,0x8,0x0,0x0,0xde,0x52,0x52,0x54,0xd4,0x58,0x54,0x54,0xd2,0x52,0x5a,0x54,0x90,0x10,0x10,
-+0x10,0x10,0x20,0x23,0x4a,0xfa,0x12,0x22,0x42,0xfa,0x3,0x2,0x1a,0xe2,0x42,0x2,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0x4,0x14,0x8,
-+0x10,0x1f,0x10,0x2f,0x40,0x9f,0x0,0x7f,0x8,0x8,0x9,0x8,0x10,0x10,0x21,0x40,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x88,0xc8,0x88,0x88,0xe8,0x28,0x2a,0x2a,0x4a,0x84,
-+0x0,0x7f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x40,0x80,0x0,0x10,0xf8,0x10,0x10,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x17,0x10,0x10,0xfc,0x24,0x24,0x24,0x24,0x49,0x29,0x11,0x2a,0x4a,0x84,0x8,0x8,0xfc,0x88,0x88,0x88,0x90,0x94,0xbe,0x84,0x4,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x1,0xff,0x8,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x43,0x0,0x8,0x88,0x8,0x8,0xfe,0x8,0x8,0x88,0x68,0x28,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x1,0x1,0x7f,0x2,0x4,0x8,0x10,0xef,0x0,0x0,0x3f,0x1,0x9,0x11,0x65,0x2,0x0,0x8,0xfc,0x80,0x40,0x30,0x4e,0xe4,0x0,0x10,0xf8,0x0,0x20,0x18,0x8,0x0,
-+0x1,0x1,0xff,0x1,0x1,0x7f,0x48,0x44,0x5f,0x41,0x41,0x5f,0x41,0x41,0x41,0x40,0x0,0x4,0xfe,0x0,0x4,0xfe,0x24,0x44,0xf4,0x4,0x4,0xf4,0x4,0x4,0x14,0x8,
-+0x0,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0xff,0x2,0x2,0x4,0x18,0x60,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x4,0xfe,0x4,0x44,0x45,0x2a,0x28,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x60,0x50,0x44,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x1,0x3f,0x9,0x7f,0x52,0x9e,0x4,0x7f,0x4,0x3f,0x4,0x7f,0xc,0x14,0x65,0x6,0x10,0xf8,0x20,0xfe,0x92,0xf4,0x40,0xfc,0x40,0xf8,0x40,0xfc,0x90,0x60,0x1c,0x8,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x10,0x1f,0x30,0xd7,0x11,0x11,0x11,0x11,0x52,0x2c,0x80,0x88,0xfc,0x80,0x48,0x32,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x8,0x7c,0x48,0x4f,0x48,0x7a,0x4b,0x4a,0x4a,0x7a,0x4a,0x4b,0x4a,0x4a,0x4b,0x9a,0x80,0x40,0x4,0xfe,0x0,0x14,0x14,0xa4,0xa4,0x44,0xa4,0x1c,0xc,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x17,0x58,0x52,0x53,0x92,0x12,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x80,0x40,0x4,0xfe,0x0,0x14,0x14,0xa4,0xa4,0x44,0xa4,0x1c,0xc,0x4,0xfc,0x4,
-+0x40,0x37,0x10,0x42,0x41,0x5f,0x41,0x41,0x4f,0x49,0x49,0x49,0x49,0x41,0x41,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0x64,0x4,0x14,0x8,
-+0x40,0x30,0x10,0x0,0x87,0x64,0x27,0xc,0x17,0x20,0xe0,0x3f,0x20,0x20,0x20,0x20,0x88,0xfc,0x80,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x0,0xb,0x7e,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7c,0x44,0x8,0x10,0x20,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0,
-+0x20,0x27,0x20,0x3a,0x49,0x51,0x80,0x20,0x2f,0x21,0x22,0x21,0x28,0x30,0x21,0x6,0x1c,0xe0,0x0,0x44,0x24,0x28,0x80,0x84,0xfe,0x8,0x8,0x10,0xa0,0xe0,0x18,0x8,
-+0x1,0x1,0x1,0x1,0x7f,0x41,0x41,0x42,0x42,0x44,0x48,0x50,0x40,0x40,0x40,0x40,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x84,0x64,0x34,0x14,0x4,0x4,0x14,0x8,
-+0x21,0x21,0x2f,0x21,0xf1,0x57,0x55,0x55,0x55,0x97,0x53,0x23,0x55,0x49,0x81,0x1,0x10,0x50,0xf4,0x1e,0x24,0xd4,0x54,0x54,0x54,0xd4,0x14,0x88,0x54,0x14,0x24,0x42,
-+0x10,0x10,0x24,0x44,0xfe,0x2,0x7c,0x44,0x7c,0x44,0x44,0x7c,0x44,0x44,0x54,0x48,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x49,0x29,0x12,0x2a,0x46,0x84,0x8,0x4,0xfe,0x4,0x4,0x4,0xfc,0x0,0x40,0x44,0x4c,0x50,0x60,0x42,0x42,0x3e,0x0,
-+0x1f,0x1,0x7f,0x49,0x85,0x9,0x2,0x3c,0x20,0x3e,0x20,0x3f,0x24,0x4,0x18,0x60,0xf0,0x0,0xfe,0x22,0x44,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x48,0x42,0x42,0x3e,
-+0x8,0x8,0xb,0x12,0x12,0x33,0x52,0x92,0x13,0x12,0x10,0x10,0x11,0x11,0x12,0x14,0x40,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0xfc,0x94,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x40,0x37,0x14,0x4,0x84,0x67,0x25,0xd,0x15,0x25,0xe5,0x25,0x25,0x29,0x28,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x8,0x18,0x20,0x40,0x80,0x2,0x2,0xfe,0x0,
-+0x0,0x3f,0x20,0x20,0x20,0x3f,0x24,0x24,0x24,0x24,0x27,0x24,0x24,0x44,0x43,0x80,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x10,0x30,0xc0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x13,0x12,0x50,0x20,0x0,0x8,0x88,0x48,0x68,0x28,0x8,0x8,0x8,0x8,0x48,0x88,0x14,0x22,0x42,0x80,
-+0x11,0x11,0x11,0x23,0x22,0x64,0xa8,0x20,0x21,0x21,0x22,0x24,0x20,0x20,0x21,0x20,0x0,0x0,0x0,0xfc,0x4,0x8,0x40,0x40,0x50,0x48,0x4c,0x44,0x40,0x40,0x40,0x80,
-+0x0,0x7f,0x44,0x44,0x7f,0x44,0x41,0x7f,0x42,0x47,0x4c,0x54,0x47,0x40,0x7f,0x0,0x8,0xfc,0x40,0x50,0xf8,0x40,0x8,0xfc,0x0,0xf0,0x10,0x10,0xf0,0x8,0xfc,0x0,
-+0x0,0x78,0x4f,0x48,0x4b,0x78,0x4f,0x48,0x4b,0x7a,0x4a,0x4a,0x4a,0x4a,0x49,0x9a,0x14,0x10,0xfe,0x10,0xd0,0x10,0xf0,0x10,0xe8,0x28,0xa8,0xa8,0xaa,0xaa,0x4a,0x24,
-+0x2,0x41,0x30,0x17,0x0,0x2,0xf2,0x12,0x12,0x13,0x12,0x10,0x10,0x29,0x47,0x0,0x8,0x10,0xa0,0xfc,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x80,0x6,0xfc,0x0,
-+0x0,0x47,0x30,0x10,0x87,0x64,0x24,0xf,0x10,0x24,0xe2,0x22,0x24,0x20,0x22,0x21,0x0,0xbc,0x84,0x84,0xbc,0x20,0x24,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x84,0x94,0x8,
-+0x8,0xff,0x8,0x3f,0x1,0x9,0x9,0xff,0x10,0x1f,0x10,0x1f,0x29,0x24,0x44,0x0,0x24,0xfe,0x20,0xf8,0x0,0xf0,0x4,0xfe,0x0,0xf8,0x0,0xfc,0x24,0x94,0x94,0xc,
-+0x10,0x10,0x10,0x10,0xfc,0x10,0x14,0x18,0x33,0xd2,0x12,0x12,0x12,0x12,0x53,0x22,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x1f,0x11,0x21,0x41,0x1f,0x11,0x11,0x11,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0xb,0xfe,0x12,0x13,0x22,0x2b,0x7e,0xaa,0x2b,0x2a,0x2a,0x3c,0x24,0x8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x50,0xfc,0x50,0x54,0xfe,0xc4,0xa8,0x90,0x8e,0xc4,0x80,
-+0x21,0x21,0x27,0x21,0xff,0x21,0x22,0x3c,0x67,0xa1,0x22,0x27,0x20,0x3f,0xa0,0x40,0x10,0x10,0xfc,0x10,0xfe,0x10,0xae,0x84,0xf8,0x0,0x40,0xf8,0x40,0xfe,0x40,0x40,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x14,0x18,0x33,0xd0,0x10,0x12,0x16,0x1a,0x52,0x21,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x0,0xf8,0x10,0x20,0x80,0x64,0x22,0x8,0xf8,
-+0x1,0x2,0x4,0x8,0x12,0x21,0xc1,0x1f,0x0,0x0,0x4,0x13,0x51,0x50,0x8f,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0xf8,0x20,0x40,0x0,0x0,0x14,0x12,0xf2,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x10,0x4e,0x84,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x57,0x61,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0x94,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x60,0x52,0x54,0x48,0x48,0x64,0x42,
-+0x2,0x4,0x1f,0x10,0x14,0x12,0x12,0x10,0x10,0x1f,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0xa0,0x44,0xfe,0x4,0x24,0xf4,0x4,0x28,0x10,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2e,0x22,0x22,0x24,0x24,0x48,0x50,0x82,0x1,0x4,0xfe,0x4,0x4,0xfc,0x84,0x80,0xa4,0xa8,0xb0,0xa0,0x90,0x8e,0x84,0x80,0x0,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x16,0x1b,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x7f,0x8,0xf,0x8,0xf,0x8,0x7f,0x0,0x7e,0x2,0x24,0x14,0x8,0x16,0x62,0x8,0xfc,0x20,0xe0,0x20,0xe0,0x28,0xfc,0x20,0xfc,0x4,0x48,0x28,0x10,0x2e,0xc4,
-+0x4,0xff,0x10,0x7e,0x42,0x7e,0x41,0x7e,0x42,0x7e,0x40,0xf,0x0,0x7f,0x1,0x3,0x44,0xfe,0x20,0xf8,0x50,0x50,0xfc,0x20,0xf8,0x20,0x20,0xe0,0x88,0xfc,0x0,0x0,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x4f,0x48,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x3,0x2,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0,0x44,0x44,0x44,0xb4,0x14,0x4,0xfc,0x4,
-+0x23,0x21,0x39,0x41,0x81,0x79,0x27,0x20,0xff,0x24,0x22,0x22,0x29,0x32,0x22,0xc,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xfe,0x62,0x94,0x94,0x8,0x98,0xa4,0x42,
-+0x20,0x21,0x3b,0x42,0x83,0x7a,0x23,0x22,0xfb,0x20,0x2f,0x20,0x29,0x32,0x24,0x0,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x40,0x37,0x14,0x4,0x87,0x64,0x24,0xf,0x10,0x20,0xe7,0x20,0x20,0x20,0x2f,0x20,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x9,0x9,0x13,0x12,0x34,0x59,0x91,0x12,0x14,0x11,0x10,0x2,0x51,0x50,0x90,0xf,0x0,0x0,0xfc,0x4,0x48,0x40,0x50,0x4c,0x44,0x40,0x80,0x0,0x84,0x92,0x12,0xf0,
-+0x10,0x10,0x10,0x13,0xfe,0x14,0x30,0x3b,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x44,0x2c,0x13,0x2a,0x4c,0x88,0xb,0x18,0x28,0x48,0x88,0x8,0x8,0x50,0x20,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x8,0x89,0x6e,0x28,0x8,0x7,0x28,0x2f,0x32,0xc2,0x5f,0x42,0x45,0x44,0x48,0x11,0x0,0x7c,0x4,0x28,0x90,0x88,0x7e,0x82,0x14,0x50,0xdc,0x50,0x70,0xd0,0x8e,0x4,
-+0x2,0x1,0x7f,0x40,0x80,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x0,0xfe,0x2,0x4,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x13,0xfa,0x14,0x10,0x1b,0x30,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x40,0x30,0x10,0x7,0x84,0x68,0x20,0xf,0x10,0x20,0xe0,0x20,0x20,0x20,0x21,0x20,0x80,0x40,0x40,0xfe,0x2,0x4,0x0,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x1,0x11,0x11,0x1f,0x21,0x21,0x41,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x13,0x10,0x10,0xfc,0x10,0x14,0x1b,0x30,0xd0,0x10,0x10,0x10,0x10,0x57,0x20,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0xfe,0x0,
-+0x20,0x27,0x39,0x41,0x81,0x79,0x21,0x27,0xf9,0x21,0x21,0x29,0x31,0x21,0xf,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x10,0x17,0x21,0x21,0x49,0xf9,0x11,0x27,0x41,0xf9,0x1,0x1,0x19,0xe1,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x8,0x7c,0x4b,0x4a,0x4c,0x78,0x48,0x49,0x4b,0x7d,0x49,0x49,0x49,0x49,0x49,0x99,0x40,0x40,0xfc,0x44,0x48,0x80,0x84,0x4c,0x50,0x20,0x20,0x10,0xe,0x44,0x80,0x0,
-+0x40,0x30,0x17,0x4,0x88,0x60,0x20,0x9,0x13,0x25,0xe9,0x21,0x21,0x21,0x21,0x21,0x40,0x40,0xfc,0x44,0x48,0x80,0x84,0x4c,0x50,0x20,0x20,0x10,0xe,0x44,0x80,0x0,
-+0x1,0x1,0x7f,0x41,0x81,0x2,0x2,0x5,0x9,0x18,0x28,0x48,0x88,0xa,0xc,0x8,0x0,0x0,0xfe,0x2,0x4,0x0,0x8,0x18,0x20,0xc0,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0x7f,0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x60,0x8,0xfc,0x0,0x10,0xf8,0x0,0x8,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x11,0x10,0xfe,0x22,0x22,0x22,0x42,0x24,0x14,0x8,0x14,0x22,0x41,0x6,0x0,0x0,0xfc,0x4,0x84,0x84,0x88,0x88,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x10,0xfe,0x22,0x24,0x64,0x18,0x14,0x62,0x2,0x3f,0x2,0x4,0x4,0x18,0x60,0x0,0x0,0xfc,0x84,0x48,0x30,0x20,0x50,0x8e,0x4,0xf0,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x10,0xfe,0x22,0x24,0x64,0x18,0x14,0x62,0x0,0x12,0x51,0x50,0x90,0xf,0x0,0x0,0x0,0xfc,0x84,0x48,0x30,0x20,0x50,0x8e,0x4,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x2,0x2,0x2,0x2,0x2,0xff,0x4,0x4,0x8,0x10,0xc,0x2,0x1,0x6,0x18,0x60,0x0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x40,0x80,0x80,0x60,0x18,0x8,
-+0x0,0xb,0x7c,0x4a,0x49,0x4b,0x48,0x7f,0x48,0x48,0x49,0x49,0x7a,0x44,0x8,0x3,0xc,0xf0,0x84,0x4c,0x50,0xfc,0x80,0xfe,0x80,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x3f,0x21,0x20,0x20,0x27,0x24,0x3f,0x24,0x47,0x80,0x10,0xf8,0x0,0xfc,0x4,0xe8,0x0,0x8,0xf8,0x0,0xf0,0x4,0xfe,0x0,0xf8,0x0,
-+0x1,0x0,0x1f,0x10,0x90,0x53,0x52,0x12,0x32,0x5f,0xd2,0x12,0x22,0x22,0x43,0x0,0x0,0x84,0xfe,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x10,0x17,0x12,0x12,0xfa,0x17,0x12,0x1a,0x32,0xd7,0x12,0x12,0x14,0x19,0x50,0x20,0x0,0xde,0x52,0x54,0x54,0xd4,0x58,0x58,0x54,0xd2,0x52,0x52,0x5a,0x54,0x90,0x10,
-+0x20,0x27,0x20,0x2f,0xba,0xa9,0xa2,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x24,0x24,0x8,0xfc,0x40,0xfe,0x4a,0x50,0x48,0x40,0xfc,0x80,0xfc,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x10,0x11,0x54,0x3b,0x12,0xfc,0x10,0x30,0x3b,0x54,0x53,0x92,0x12,0x12,0x12,0x12,0x8,0xfc,0x20,0xfe,0xaa,0x70,0xa8,0x20,0xfe,0x40,0xfe,0x52,0x52,0x52,0x52,0x6,
-+0x1,0x41,0x37,0x11,0x1,0x0,0xef,0x20,0x21,0x23,0x2d,0x21,0x29,0x31,0x21,0x1,0x10,0x10,0xfc,0x10,0x50,0x44,0xfe,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x8,0x7f,0x49,0x49,0x4f,0x49,0x49,0x49,0x49,0x4f,0x49,0x79,0x41,0x5,0x2,0x20,0xb0,0x28,0x20,0x24,0xfe,0x20,0x20,0x20,0xd4,0x18,0x10,0x30,0x4a,0x8a,0x6,
-+0x4,0x7e,0x40,0x42,0x62,0x55,0x54,0x48,0x54,0x52,0x62,0x40,0x44,0x7e,0x1,0x2,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,0x0,
-+0x4,0x7e,0x40,0x42,0x62,0x54,0x54,0x48,0x54,0x52,0x62,0x40,0x45,0x7e,0x0,0x0,0x10,0x24,0xfe,0x84,0xa4,0x84,0x94,0x88,0x80,0xfe,0x2,0x12,0xfa,0x2,0x14,0x8,
-+0x4,0x7e,0x40,0x42,0x62,0x54,0x55,0x48,0x55,0x52,0x62,0x40,0x44,0x7e,0x0,0x3,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x4,0xff,0x14,0x11,0x7d,0x11,0x7d,0x11,0xfc,0x13,0x3a,0x56,0x92,0x12,0x12,0x40,0x44,0xfe,0x40,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0xa,0x4,
-+0x0,0xb,0x7e,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x3,0x0,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x50,0x88,0x8,0x4,0xfe,0x0,
-+0x10,0x17,0x14,0x24,0x27,0x64,0xa4,0x27,0x20,0x2f,0x28,0x28,0x2b,0x28,0x28,0x28,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0xfe,0x42,0x4a,0xfa,0x2,0xa,0x4,
-+0x0,0x43,0x32,0x13,0x82,0x62,0x22,0xa,0x12,0x22,0xe2,0x22,0x23,0x22,0x23,0x20,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x50,0x88,0x8,0x4,0xfe,0x0,
-+0x2,0x12,0x7a,0x5f,0x52,0x52,0x52,0x52,0x53,0x5e,0x52,0x72,0x52,0x2,0xa,0x4,0x10,0x10,0x24,0xfe,0x44,0x44,0x44,0xc4,0x7c,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,
-+0x4,0x7e,0x44,0x44,0x44,0x7c,0x10,0x10,0x5c,0x51,0x51,0x51,0x5e,0xe2,0x44,0x8,0x10,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x10,0x10,0x10,0x8,0xe,0x4,0x0,
-+0x7,0x78,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x52,0x52,0x51,0x90,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x0,0x2,0x2,0xfe,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x11,0x59,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x7e,0x8,0x3e,0x8,0x7e,0x0,0x3f,0x21,0x21,0x3f,0x20,0x20,0x20,0x1f,0x0,0x8,0xfc,0x20,0xf8,0x20,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x14,0x1b,0x30,0xd0,0x10,0x1f,0x10,0x10,0x50,0x20,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0,
-+0x8,0x48,0x49,0x49,0x49,0x7d,0x41,0x41,0x79,0x48,0x49,0x4f,0x48,0x48,0x88,0x8,0x40,0x84,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x8,0x8,0x10,0x2f,0x40,0x88,0x8,0x17,0x30,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0,
-+0x40,0x3f,0x12,0x2,0x82,0x6f,0x22,0xa,0x12,0x22,0xef,0x22,0x22,0x24,0x24,0x28,0x88,0x7c,0x10,0x10,0x7c,0x90,0x10,0x7c,0x10,0x10,0x94,0xfe,0x10,0x10,0x10,0x10,
-+0x40,0x37,0x14,0x4,0x85,0x65,0x25,0xd,0x15,0x25,0xe5,0x25,0x25,0x29,0x29,0x11,0x1c,0xe0,0x8,0x3c,0xc0,0x40,0x40,0x24,0x2c,0x30,0x20,0x10,0x10,0x4e,0x84,0x0,
-+0x22,0x21,0xfa,0x22,0x71,0xaa,0x22,0xff,0x4,0xf,0x31,0xcf,0x1,0x3f,0x1,0x3,0x88,0x8,0xbe,0x88,0x1c,0xaa,0x8,0xfe,0x40,0xe0,0x18,0xe6,0x0,0xf8,0x0,0x0,
-+0x0,0x47,0x32,0x11,0x8f,0x61,0x22,0xc,0x17,0x24,0xe4,0x27,0x24,0x24,0x27,0x24,0x3c,0xc0,0x48,0x50,0xfe,0x50,0x48,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x2,0x1f,0x10,0x12,0x11,0xff,0x10,0x12,0x21,0x40,0x3f,0x24,0x24,0x24,0xff,0x0,0x10,0xf8,0x10,0x10,0x14,0xfe,0x10,0x10,0x50,0x20,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x10,0x3e,0x22,0x2a,0xff,0x22,0x2a,0x22,0x46,0xff,0x4,0xf,0x18,0x68,0xf,0x8,0x78,0x48,0x48,0x86,0x78,0x48,0x30,0x4e,0x84,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x0,0x8,0x7c,0x49,0x49,0x7a,0x4a,0x4d,0x48,0x78,0x48,0x48,0x49,0x79,0x42,0x4,0x20,0xa0,0xa0,0x10,0x10,0x8,0xe,0xf4,0x90,0x90,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x4,0x7f,0x54,0x54,0x54,0x55,0x7c,0x54,0x54,0x57,0x54,0x7c,0x44,0x0,0x0,0x20,0x20,0x24,0xa8,0xa8,0x20,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x44,0x34,0x15,0x4,0x7f,0x4,0x4,0x5,0xff,0x4,0x8,0x8,0x10,0x20,0x0,0x4,0x44,0xc4,0x24,0x24,0xa4,0x24,0x24,0x24,0xa4,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x93,0x55,0x39,0x11,0x7d,0x11,0x11,0xfd,0x11,0x11,0x22,0x22,0x44,0x89,0x8,0x1c,0xe0,0x0,0x0,0x0,0xf8,0x8,0x88,0x48,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xff,0x0,0x0,0x0,0x0,0x0,0x30,0xc0,0x0,0x0,0x10,0xf8,0x20,0x20,0x20,0x24,0xfe,0x0,0x40,0x30,0x18,0x8,
-+0x2,0x1,0x7f,0x42,0x42,0x42,0x7f,0x42,0x42,0x44,0x44,0x44,0x48,0x4b,0x90,0x20,0x0,0x4,0xfe,0x0,0x40,0x28,0xfc,0x80,0x80,0x88,0x90,0xa0,0xc2,0x82,0x82,0x7e,
-+0x2,0x1,0x7f,0x8,0x4,0x7f,0x42,0x81,0x7f,0x4,0x7,0x4,0x8,0x8,0x10,0x60,0x0,0x8,0xfc,0x20,0x40,0xfe,0x2,0x4,0xfc,0x0,0xf0,0x10,0x10,0x10,0xa0,0x40,
-+0x10,0x10,0x13,0xfc,0x10,0x7f,0x12,0xfc,0x13,0x38,0x34,0x50,0x90,0x11,0x12,0x14,0x40,0x24,0xfe,0x88,0x50,0xfe,0x42,0x24,0xfe,0x80,0xf8,0x88,0x88,0x8,0x28,0x10,
-+0x0,0x78,0x4c,0x4a,0x49,0x78,0x4f,0x48,0x48,0x78,0x4f,0x48,0x48,0x48,0x48,0x98,0x40,0x40,0x44,0x48,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x12,0x12,0x12,0x12,0xfe,0x17,0x12,0x1a,0x32,0xd2,0x12,0x12,0x12,0x12,0x54,0x28,0x20,0x20,0x20,0x24,0x7e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xd4,0x8a,0x82,0x7e,0x0,
-+0x0,0x8,0x7c,0x49,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x0,0x0,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x1f,0x21,0x21,0x7d,0xa5,0x25,0x25,0x3d,0x25,0x22,0x20,0x20,0x1f,0x0,0x4,0x4,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x84,0x84,0x94,0x8,
-+0x10,0x10,0x10,0x15,0x59,0x53,0x55,0x91,0x11,0x11,0x11,0x29,0x25,0x45,0x80,0x0,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x20,0x10,0x10,0x1,0xf9,0xb,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x10,0x10,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x4,0x7e,0x44,0x45,0x45,0x7f,0x15,0x11,0x5d,0x51,0x51,0x51,0x5d,0xe1,0x40,0x0,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x1,0x41,0x31,0x12,0x82,0x67,0x2a,0x2,0xa,0x13,0xe2,0x22,0x22,0x22,0x21,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x0,0x7,0x78,0x48,0x48,0x48,0x48,0x49,0x49,0x4a,0x4c,0x78,0x48,0x0,0xf,0x0,0x8,0xfc,0x20,0x20,0x40,0xc0,0xc0,0x50,0x4c,0x46,0x42,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0x7f,0x48,0x48,0x48,0x78,0x48,0x49,0x49,0x7a,0x4c,0x48,0x48,0x48,0x4f,0x98,0x8,0xfc,0x20,0x20,0x40,0xc0,0xc0,0x50,0x4c,0x46,0x42,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x20,0x27,0x20,0x21,0xf8,0x20,0x2f,0x20,0x23,0x22,0x22,0x3a,0xe2,0x43,0x2,0x80,0x48,0xfc,0x0,0x10,0xa0,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x1,0xff,0x2,0x4,0xc,0x35,0xc6,0x4,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfc,0x80,0x4,0xfe,0x80,0x88,0x50,0x30,0xe,0x4,
-+0x0,0x7c,0x45,0x54,0x54,0x54,0x54,0x57,0x54,0x55,0x55,0x55,0x11,0x29,0x45,0x81,0x40,0x20,0xfc,0x0,0x88,0x50,0x4,0xfe,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x78,0x4f,0x50,0x51,0x50,0x60,0x57,0x48,0x4b,0x6a,0x52,0x42,0x42,0x43,0x42,0x80,0x48,0xfc,0x0,0x10,0xa0,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x41,0x7f,0x41,0x4,0xfe,0x4,0x4,0x4,0x4,0x7c,0x44,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x1f,0x28,0x2f,0x68,0xa8,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x28,0x30,0x20,0x8,0xfc,0x8,0xf8,0x88,0xa8,0xf8,0xa8,0xa8,0xa8,0xa8,0xa8,0xea,0x8a,0x86,0x80,
-+0x0,0x40,0x20,0x2f,0x80,0x60,0x27,0xc,0x14,0x24,0xe4,0x24,0x24,0x20,0x20,0x20,0x40,0x40,0x44,0xfe,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x54,0x48,0x40,0x40,0x40,
-+0x0,0xb,0x7c,0x49,0x4f,0x49,0x48,0x4b,0x4a,0x4a,0x4a,0x7a,0x4a,0x0,0x1,0x6,0x48,0xfc,0x40,0x14,0xfe,0x10,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0x90,0xc,0x4,
-+0x0,0x4,0x8,0x10,0x2f,0xc4,0x4,0x9,0x30,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x80,0x80,0x40,0x20,0xd0,0x4e,0x44,0x40,0x80,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0,
-+0x4,0xff,0x10,0x10,0x21,0x24,0x3e,0x64,0xa7,0x24,0x24,0x24,0x24,0x3c,0x24,0x0,0x8,0xfc,0x20,0x20,0x24,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x10,0x10,0xfd,0x10,0x14,0x18,0x33,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x8,0xfc,0x20,0x20,0x24,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x0,0x1,0x5,0x3,0x48,0x44,0x84,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x0,0xf0,0x40,0x80,0x0,0x0,0x48,0x24,0x24,
-+0x41,0x21,0x2f,0x1,0x87,0x60,0x27,0xc,0x14,0x27,0xe0,0x24,0x22,0x20,0x2f,0x0,0x0,0x42,0xe6,0x8,0xd0,0x2,0xc6,0x48,0x50,0xc0,0x2,0x46,0x88,0xf0,0x20,0x40,
-+0x8,0x9,0xff,0x8,0x7f,0x0,0x7f,0x41,0x41,0x7f,0x0,0x22,0x14,0xf,0xf0,0x40,0x4,0xc,0x90,0x20,0x40,0x4,0xc,0x10,0x20,0x42,0x6,0x8,0x10,0x20,0x40,0x80,
-+0x4,0xff,0x5,0x41,0x33,0x14,0x1,0xf6,0x1b,0x10,0x13,0x10,0x17,0x10,0x28,0x47,0x44,0xfe,0x40,0xf8,0x10,0xe0,0x18,0x46,0xf8,0x40,0xf8,0x40,0xfc,0x40,0x46,0xfc,
-+0x20,0x27,0x24,0x24,0xfc,0x27,0x64,0x74,0xac,0x27,0x24,0x24,0x24,0x24,0x25,0x28,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0xa4,0x4c,
-+0x10,0xff,0x24,0x24,0x44,0x47,0x74,0xd4,0x54,0x57,0x54,0x54,0x54,0x74,0x45,0x8,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0xa4,0x4c,
-+0x10,0x3e,0x49,0x81,0x43,0x24,0x1,0xf6,0x1b,0x10,0x13,0x10,0x17,0x10,0x28,0x47,0x40,0xfc,0x20,0xf8,0x10,0xe0,0x18,0x46,0xf8,0x40,0xf8,0x40,0xfc,0x40,0x46,0xfc,
-+0x0,0x78,0x4f,0x48,0x4b,0x78,0x4b,0x4a,0x4a,0x7b,0x48,0x4a,0x49,0x4f,0x48,0x98,0x80,0xa2,0xf2,0x84,0xe8,0x12,0xe2,0x24,0x28,0xf0,0x2,0x22,0x44,0xe8,0x10,0x60,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x4a,0x44,0x81,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x84,0x94,0x8,
-+0x0,0x77,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x55,0x8b,0x0,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0xa,0xfe,0x2,0xa,0x4,
-+0x10,0x10,0x17,0xfc,0x13,0x10,0x17,0x18,0x31,0xd2,0x1d,0x10,0x17,0x10,0x50,0x20,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0xa0,0x50,0x4e,0xf4,0x40,0xfc,0x40,0x40,0x40,
-+0x1,0x8,0xfc,0x20,0x23,0x40,0x48,0x7c,0xca,0x4a,0x4a,0x48,0x48,0x78,0x47,0x0,0x8,0x88,0x90,0x8,0xfc,0x90,0x90,0x92,0x96,0x94,0x98,0x90,0x90,0x94,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0x10,0xfc,0x10,0x10,0x10,0x11,0x12,0x1c,0xf0,0x40,0x7,0x0,0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x68,0xa4,0x22,0x22,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x5,0xff,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x25,0x3d,0x25,0x0,0x10,0x10,0x10,0x10,0x12,0x16,0xd8,0x10,0x10,0x10,0x10,0x10,0x12,0x52,0x8e,0x0,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3e,0x23,0x22,0x3e,0x21,0x3e,0x62,0xa2,0x3e,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x20,0xfc,0x88,0x50,0xfe,0x20,0xfc,0x20,0x20,0x20,
-+0x12,0x12,0x12,0x12,0xfe,0x12,0x13,0x1a,0x32,0xd2,0x12,0x12,0x12,0x13,0x52,0x20,0x20,0x20,0x20,0x20,0x24,0x2c,0xb0,0x20,0x20,0x20,0x20,0x20,0xa4,0x24,0x1c,0x0,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x12,0x14,0x54,0x29,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x88,0x88,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x0,0x3e,0x23,0x22,0x3e,0x21,0x3e,0x62,0xa2,0x3e,0x0,0x7f,0x4,0x4,0x8,0x30,0x40,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0x8,0xfc,0x8,0x8,0x50,0x20,
-+0x4,0x7e,0x8,0x8,0x3e,0x8,0x8,0x7e,0x0,0x20,0x24,0x3e,0x20,0x20,0x2e,0x30,0x8,0xfc,0x20,0x20,0xf8,0x20,0x28,0xfc,0x0,0x80,0x98,0xe0,0x80,0x82,0x82,0x7e,
-+0x0,0x5,0x7f,0x55,0x55,0x55,0x55,0x7d,0x55,0x55,0x55,0x55,0x7d,0x45,0x1,0x0,0x10,0x10,0x10,0x10,0x10,0x12,0xdc,0x10,0x10,0x10,0x10,0x10,0x52,0x92,0xe,0x0,
-+0x0,0x8,0x7f,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x49,0x4f,0x78,0x48,0x0,0x0,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x88,0xf8,0x80,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3c,0x24,0x27,0x24,0x24,0x54,0x88,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0x40,0xa4,0xfe,0x20,0x20,0x20,0x20,
-+0x1,0x0,0x1f,0x90,0x50,0x57,0x14,0x14,0x37,0x54,0xd5,0x14,0x24,0x24,0x49,0x12,0x0,0x84,0xfe,0x40,0x40,0xfc,0x44,0x40,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x2f,0x20,0x24,0x22,0x21,0x20,0x41,0x46,0x98,0x80,0x80,0x80,0xfc,0x84,0x88,0x80,0xf8,0x8,0x10,0x20,0x40,0x80,0x60,0x1e,0x4,
-+0x0,0x0,0x7f,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0x44,0x3c,0x0,0x4,0xfe,0x0,
-+0x1,0x0,0x1f,0x90,0x57,0x50,0x10,0x10,0x31,0x56,0xdb,0x12,0x22,0x22,0x43,0x2,0x0,0x84,0xfe,0x8,0xfc,0x20,0x40,0xd8,0x46,0x42,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x1f,0x29,0x29,0x69,0xaf,0x28,0x28,0x2f,0x29,0x39,0x29,0x2f,0x28,0x20,0x20,0x10,0x14,0xfe,0x44,0x28,0x10,0xfe,0x10,0x10,0xfe,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x28,0x28,0x2a,0x2f,0x28,0x28,0x29,0x4e,0x48,0x80,0x8,0xfc,0x8,0x8,0xf8,0x48,0x40,0x40,0x4c,0x70,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x3f,0x21,0x3f,0x20,0x7f,0xa1,0x3f,0x21,0x7f,0x0,0x3f,0x0,0x0,0x1f,0x10,0x1f,0x10,0x7c,0x28,0xfe,0x10,0x7c,0x10,0x14,0xfe,0x0,0x0,0xf8,0x0,0xf0,0x10,0xf0,
-+0x12,0x1f,0x28,0x45,0x80,0x3f,0x20,0x3f,0x20,0x3f,0x32,0x52,0x5f,0x52,0x92,0x10,0x44,0x7e,0xa0,0x10,0x80,0xf8,0x8,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x34,0x8,
-+0x10,0x10,0x17,0x24,0x24,0x67,0xa4,0x24,0x27,0x26,0x2a,0x2b,0x2a,0x32,0x22,0x22,0x80,0x44,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0xc,
-+0x0,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x80,0x80,0x80,0x80,0x84,0xfe,0x0,0x0,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0xf8,0x13,0x52,0x52,0x53,0x52,0x52,0x7b,0xa,0xa,0x3b,0xce,0xa,0x2a,0x12,0x40,0x28,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0xc,
-+0x4,0xfe,0x28,0xfe,0xaa,0xaa,0xfe,0x0,0x7c,0x0,0xfe,0x10,0x58,0x55,0x92,0x34,0x8,0xfc,0x88,0x88,0x88,0xd8,0xd8,0xa8,0xa8,0xd8,0xd8,0x88,0x8a,0xa,0x6,0x0,
-+0x40,0x3f,0x10,0x7,0x84,0x64,0x27,0x8,0x13,0x20,0xef,0x20,0x22,0x24,0x29,0x20,0x4,0xfe,0xa0,0xfc,0xa4,0xa4,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x50,0x4c,0x44,0x80,
-+0x4,0xfe,0x28,0xfe,0xaa,0xaa,0xfe,0x0,0x7c,0x0,0xfe,0x10,0x59,0x55,0x92,0x30,0x4,0xf8,0x80,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0x24,0x52,0x78,0x0,
-+0x0,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x0,0x1f,0x0,0xff,0x1,0x11,0x21,0x45,0x2,0x8,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0xf0,0x4,0xfe,0x0,0x20,0x18,0x8,0x0,
-+0x22,0x22,0x2a,0x27,0xf2,0x2f,0x2a,0x2a,0x3a,0xef,0x2e,0x2a,0x2a,0x29,0xa8,0x40,0x10,0x10,0x90,0x24,0x3e,0xc4,0xa4,0xa4,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0x46,0x84,
-+0x8,0x49,0x2a,0x7f,0x49,0x5d,0x6b,0x49,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x20,0x20,0x7e,0xc4,0x28,0x10,0x2e,0x44,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x12,0x11,0x10,0x13,0xfd,0x11,0x15,0x19,0x37,0xd1,0x11,0x11,0x11,0x11,0x52,0x24,0x8,0x18,0xa0,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x13,0x54,0x5e,0x51,0x55,0xff,0x11,0x55,0x55,0x55,0x95,0x8,0x10,0x20,0x43,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x50,0x8c,0x4,
-+0x0,0x4,0x8,0x1f,0x24,0xc4,0x9,0x30,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x40,0x40,0x20,0xd0,0x4e,0x44,0x40,0x90,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x2,0x7f,0x42,0x42,0x42,0x42,0x42,0x7e,0x42,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x8,0xfc,0x4b,0x4a,0x7b,0x4a,0x4b,0x78,0x4f,0x48,0x5c,0xe9,0x48,0x8,0x8,0x8,0x40,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x0,0xfe,0x80,0x80,0xf8,0x8,0x8,0x50,0x20,
-+0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xff,0x0,0x2,0x6,0x8,0x10,0x30,0xc0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x17,0x10,0x10,0x12,0xfd,0x11,0x11,0x10,0x1f,0x10,0x1c,0xe0,0x40,0x0,0x0,0x8,0xfc,0x40,0x40,0x48,0x48,0x50,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x1,0x11,0x9,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x10,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x20,0x17,0x80,0x4a,0x11,0x20,0xef,0x20,0x20,0x20,0x20,0x20,0x40,0x44,0xfe,0x40,0x8,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x7f,0x1,0x11,0x11,0x9,0x9,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x8,0xfc,0x0,0x10,0x10,0x20,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0xb,0x10,0x10,0x37,0x50,0x90,0x13,0x10,0x7,0x4,0x4,0x4,0x4,0x8,0x30,0x30,0xc0,0x40,0x48,0xfc,0x40,0x50,0xf8,0x20,0xf0,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x42,0x25,0x28,0xfe,0x24,0x24,0x24,0x24,0xff,0x24,0x24,0x25,0x25,0x45,0x85,0x4,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x8,0x28,0xca,0xa,0x6,
-+0x0,0x47,0x30,0x10,0x4,0x3,0xf1,0x10,0x1f,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0xfc,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x3f,0x20,0x20,0x3f,0x22,0x21,0x2f,0x22,0x22,0x3f,0x22,0x22,0x42,0x84,0x8,0x8,0xfc,0x8,0x8,0xf8,0x20,0x48,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x12,0x13,0x12,0x12,0x1e,0xe2,0x42,0x4,0x8,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x84,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x42,0x32,0x14,0x87,0x60,0x20,0x9,0x11,0x23,0xe2,0x24,0x28,0x20,0x21,0x26,0x40,0x50,0x48,0x40,0xfe,0x80,0x80,0xf8,0x8,0x10,0x90,0xa0,0x40,0xb0,0xe,0x4,
-+0x8,0x9,0x8,0x7f,0x49,0x4a,0x48,0x7e,0x42,0x54,0x54,0x48,0x54,0x52,0xa2,0x1,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x20,0x50,0x8c,0x4,
-+0x20,0x1b,0x4a,0x22,0x3,0x12,0x22,0x64,0x28,0x22,0xff,0x8,0x4,0x3,0xc,0x30,0x20,0xfe,0x22,0x24,0xf8,0x88,0x50,0x20,0x50,0x8c,0xfe,0x20,0x40,0x80,0x60,0x10,
-+0x0,0x8,0xfc,0x13,0x12,0x22,0x22,0x7b,0xaa,0x2a,0x2a,0x2a,0x3c,0x24,0x8,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x84,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x10,0x23,0x7a,0x4a,0x4b,0x4a,0x7a,0x4b,0x48,0x48,0x49,0x79,0x42,0x4,0x8,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x88,0xf8,0x80,0xd0,0x54,0x7c,0x42,0x42,0x3e,
-+0x0,0x40,0x33,0x12,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x54,0x39,0x11,0xff,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x4,0x7f,0x21,0x11,0x12,0xff,0x1,0x3f,0x21,0x21,0x21,0x21,0x3f,0x21,0x0,0x4,0x4,0x84,0x24,0x24,0x24,0xe4,0x24,0xa4,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x8,0x8,0x8,0xa,0x7f,0x8,0xa,0xc,0x18,0x68,0x8,0x8,0x8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x50,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x1c,0x23,0x20,0x7d,0x91,0x11,0x7d,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x28,0x24,0xfe,0x20,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x34,0x28,
-+0x4,0x4,0x4,0x8,0x8,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x80,0x80,0x80,0xa0,0x98,0x8c,0x84,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x4,0x4,0x7f,0x4,0x5,0x1,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x11,0x11,0x11,0x40,0x48,0xfc,0x40,0x50,0x8,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x8,0x8,0xff,0x8,0x1f,0x21,0x7f,0x81,0x1f,0x11,0x1f,0x11,0x1f,0x11,0x11,0x11,0x20,0x24,0xfe,0x20,0xfc,0x44,0xfc,0x4,0xf4,0x14,0xf4,0x14,0xf4,0x14,0x34,0xc,
-+0x4,0x4,0xff,0x4,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0xff,0x4,0x40,0x2f,0x0,0x87,0x54,0x17,0x24,0xe7,0x24,0x24,0x24,0x24,0x40,0x44,0xfe,0x50,0x48,0xfe,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x20,0x20,0x20,0x2f,0xf8,0x27,0x24,0x24,0x27,0x24,0x3c,0xe7,0x44,0x4,0x4,0x4,0x40,0x50,0x48,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x40,0x40,0x40,0x60,0x58,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x4f,0x49,0x4f,0x49,0x4f,0x49,0x49,0x40,0x7f,0x40,0x4,0xfe,0x4,0x44,0xf4,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0x64,0x4,0xfc,0x4,
-+0x8,0x4,0x7f,0x4,0x24,0x14,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x20,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,
-+0x0,0x40,0x30,0x1f,0x80,0x67,0x24,0x4,0x17,0x24,0xe4,0x27,0x24,0x24,0x24,0x24,0x40,0x50,0x48,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x1,0x40,0x27,0x20,0x2,0x1,0xef,0x20,0x23,0x22,0x22,0x23,0x2a,0x32,0x23,0x2,0x10,0xa0,0xfc,0xa0,0xa8,0xb0,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x3,0xa,0x7f,0x4a,0x4b,0x49,0x7b,0x49,0x4f,0x49,0x4a,0x7d,0x48,0x1,0x2,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x10,0xf8,0x10,0xfe,0x10,0x48,0x56,0xe0,0x58,0x48,0xc0,
-+0x3,0x42,0x33,0x12,0x83,0x61,0x27,0x1,0x1f,0x21,0xe2,0x25,0x28,0x21,0x22,0x20,0xf8,0x8,0xf8,0x8,0xf8,0x10,0xfc,0x10,0xfe,0x10,0x48,0x56,0xe0,0x58,0x48,0xc0,
-+0x22,0x22,0x22,0x7f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x0,0x24,0x22,0x41,0x82,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0xc4,0x44,0x44,0x84,0x14,0x8,
-+0x22,0x22,0x22,0x7f,0x22,0x3e,0x23,0x3e,0x22,0x22,0xff,0x0,0x24,0x22,0x41,0x82,0x40,0x40,0x40,0x7c,0x44,0x88,0x20,0x20,0x20,0x20,0xd0,0x50,0x50,0x88,0xe,0x4,
-+0x20,0x20,0x2f,0x20,0xf8,0x27,0x64,0x74,0xac,0x24,0x24,0x25,0x26,0x24,0x27,0x24,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0x1c,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x0,0x3f,0x22,0x23,0x22,0x22,0x3f,0x22,0x2b,0x2a,0x32,0x42,0x8a,0x4,0x20,0x28,0x24,0xfe,0x20,0xa0,0x24,0xa4,0xe8,0x28,0x10,0x90,0x30,0x4a,0x8a,0x6,
-+0x1,0x7f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0xff,0x4,0x8,0x6,0x1,0x6,0x18,0x8,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x2,0x2,0x2,0x2,0x2,0x2,0x3,0xfe,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0xfc,0x0,
-+0x0,0x8f,0x60,0x27,0x0,0x1f,0x0,0x17,0x20,0xe1,0x3f,0x22,0x26,0x21,0x22,0xc,0x88,0xfc,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0x4,0xfe,0x20,0x20,0xc0,0x30,0x8,
-+0x0,0x40,0x37,0x11,0x81,0x62,0x24,0x1,0x12,0x2c,0xe2,0x21,0x22,0x24,0x21,0x20,0x40,0x48,0xfc,0x50,0x4c,0x44,0xa0,0x10,0x4e,0x44,0x48,0x50,0x4c,0x44,0x40,0x80,
-+0x20,0x10,0x40,0x20,0xf,0x10,0x60,0x20,0x21,0xff,0x5,0x5,0x9,0x11,0x61,0x1,0x80,0x80,0x88,0xfc,0x80,0x88,0x88,0x78,0x4,0xfe,0x40,0x20,0x10,0x1c,0x8,0x0,
-+0x44,0x34,0x14,0x4,0x85,0x5f,0x44,0x4,0x14,0x24,0xe5,0x26,0x24,0x20,0x21,0x22,0x0,0x4,0xfe,0x24,0x24,0xa4,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0x14,0x8,
-+0x8,0x8,0x3f,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x0,0x8,0x18,0x20,0x20,0x20,0xf8,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0,0x20,0x18,0x8,
-+0x11,0x11,0x13,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x17,0x10,0x11,0x13,0x14,0x8,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x8,0x6,0x2,
-+0x1,0x1,0x3f,0x2,0x4,0x8,0xff,0x0,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x10,0xf8,0x80,0x60,0x24,0xfe,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x50,0x20,
-+0x10,0x10,0x10,0x17,0x50,0x5c,0x53,0x52,0x51,0x51,0x50,0x5c,0xe0,0x41,0x6,0x18,0x40,0x40,0x48,0xfc,0x40,0x40,0xf8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x4,0x7e,0x55,0x54,0x54,0x54,0x7f,0x54,0x54,0x54,0x55,0x7c,0x44,0x0,0x3,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,
-+0x10,0x10,0x13,0x54,0x54,0x55,0x57,0x54,0x55,0x55,0x55,0x55,0x7d,0x45,0x0,0x0,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x0,0x78,0x4f,0x49,0x48,0x78,0x48,0x49,0x4e,0x79,0x49,0x49,0x49,0x4a,0x8c,0x18,0x80,0x48,0xfc,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x2,0x1,0x7f,0x8,0x4,0x2,0x1,0x6,0x18,0x20,0xc8,0x8,0x8,0x8,0x10,0x20,0x0,0x8,0xfc,0x20,0x40,0x80,0x0,0xc0,0x30,0x2e,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x20,0x10,0x10,0xff,0x22,0x21,0x3c,0x24,0x24,0x24,0x24,0x27,0x24,0x34,0x49,0x82,0x80,0x84,0xfe,0x0,0x88,0xfc,0x88,0xf8,0x88,0xf8,0x88,0xfe,0x0,0x88,0x86,0x2,
-+0x20,0x10,0x11,0xfd,0x5,0x9,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x12,0x14,0x10,0x0,0xc,0xf0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x8,0x8,0xfe,0x2,0x4,0x8,0x1c,0x2a,0x48,0x88,0x8,0x8,0x8,0x8,0x8,0x0,0xf8,0x88,0x88,0x90,0x90,0xa0,0x90,0x88,0x84,0x84,0xc4,0xa8,0x90,0x80,0x80,
-+0x8,0xfc,0xb,0x48,0x48,0x49,0x4f,0x48,0x7d,0x5,0x5,0x1d,0xe5,0x45,0x14,0x8,0x40,0x48,0xfc,0x40,0xb0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x8,0x8,0x8,0x7e,0x8,0x8,0xfe,0x8,0x28,0x2e,0x28,0x28,0x28,0x58,0x8f,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x88,0x80,0x84,0x84,0x7c,0x0,0x6,0xfc,0x0,
-+0x1,0x21,0x21,0x21,0x3f,0x0,0x7f,0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0x8,0x8,0x8,0xf8,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x2,0x2,0xfe,
-+0x8,0x8,0x10,0x1f,0x20,0x40,0x9f,0x0,0x1,0x6,0x8,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x8,0xfc,0x0,0x0,0xe0,0x40,0x80,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,
-+0x1,0x1,0x2,0x4,0x9,0x11,0x21,0xc9,0x9,0x9,0x9,0x9,0x9,0x9,0xff,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x24,0xf0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x1,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x1f,0x18,0x28,0x28,0x48,0x8f,0x8,0x0,0x84,0xfe,0x4,0x4,0x4,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xa,0x7f,0x8,0x3e,0x8,0x7f,0x8,0x9,0x1,0xff,0x1,0x2,0x4,0x18,0x60,0x0,0x4,0x7e,0x24,0x24,0x24,0x44,0x54,0x88,0x0,0xfe,0x0,0x80,0x60,0x1c,0x8,
-+0x1,0x9,0xfd,0x11,0x11,0x21,0x27,0x79,0xa9,0x29,0x29,0x29,0x29,0x38,0x20,0x1,0x0,0x4,0x7e,0x24,0x24,0xe4,0x24,0x24,0x24,0x24,0x64,0xa4,0x24,0x44,0x94,0x8,
-+0x3e,0x22,0x22,0x22,0x3e,0x1,0x1,0xff,0x2,0xc,0x30,0xfe,0x22,0x22,0x22,0x3e,0xf8,0x88,0x88,0x88,0xf8,0x20,0x14,0xfe,0x80,0x60,0x18,0xfe,0x88,0x88,0x88,0xf8,
-+0x10,0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0xf0,0x0,0xe0,0x20,0x20,0x20,0x20,0x20,0x22,0x12,0xa,0x4,
-+0x1,0x41,0x31,0x12,0x4,0x1,0xf0,0x10,0x11,0x12,0x12,0x12,0x11,0x10,0x28,0x47,0x0,0x8,0xfc,0x0,0x0,0xf8,0x10,0x60,0x80,0x0,0x4,0x4,0xfc,0x0,0x6,0xfc,
-+0x2,0x1,0x7f,0x2,0x4,0x8,0x1f,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x30,0x0,0x0,0x8,0xfc,0x0,0x40,0x20,0xf0,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x42,0x33,0x14,0x87,0x68,0x27,0x0,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x0,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0xa,0xa,0x6,
-+0x0,0x40,0x30,0x17,0x0,0x82,0x42,0x4a,0x12,0x21,0xe1,0x21,0x21,0x20,0x2f,0x20,0x80,0x40,0x48,0xfc,0x0,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x20,0x44,0xfe,0x0,
-+0x1,0x41,0x21,0x22,0x2,0x4,0xeb,0x20,0x20,0x20,0x20,0x21,0x2a,0x32,0x21,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x11,0x12,0xfc,0x10,0x17,0x1a,0x32,0xd2,0x13,0x12,0x12,0x12,0x53,0x22,0x80,0x80,0xfc,0x8,0x10,0xa4,0x1e,0x4,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x10,0x59,0x56,0x54,0x9b,0x10,0x10,0x13,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x10,0x81,0x62,0x2c,0x3,0x10,0x20,0xe3,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x3f,0x2,0x4,0x8,0x7f,0x49,0x89,0x1f,0x21,0x1,0x7f,0x1,0x1,0x1,0x0,0x10,0xf8,0x80,0x60,0x20,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x14,0x1f,0x30,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x10,0x38,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x11,0x1c,0x20,0x40,0xbc,0x13,0x10,0xfc,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x1c,0x20,0x40,0xbd,0x12,0x10,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x3f,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x20,0xf0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x40,0x33,0x10,0x0,0x0,0xf7,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x10,0x38,0xc0,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x6,0xfc,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x2,0x4,0x8,0x30,0xcf,0x0,0x12,0x9,0x9,0x0,0x3f,0x40,0x48,0x7c,0xa0,0x10,0x80,0x40,0x30,0x4e,0xe4,0x0,0x10,0x10,0x20,0x40,0xf8,
-+0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x42,0x21,0x2f,0x1,0x7,0xe1,0x21,0x3f,0x21,0x21,0x27,0x29,0x33,0x25,0x9,0x1,0x10,0x20,0xfc,0x20,0xf8,0x28,0x28,0xfe,0x28,0x28,0xf8,0x20,0x30,0x2e,0x24,0x20,
-+0x10,0x14,0xfe,0x10,0x10,0x7d,0x46,0x7c,0x44,0x7c,0x10,0x14,0xfe,0x10,0x10,0x10,0x40,0x40,0x44,0x7e,0x80,0x0,0xf8,0x10,0x20,0x40,0x40,0x80,0x82,0x82,0x7e,0x0,
-+0x1,0x7f,0x49,0x6b,0x5d,0x49,0x7f,0x8,0x7f,0x8,0x7f,0x0,0x55,0x55,0x94,0x0,0x10,0x90,0x28,0x28,0x44,0x86,0x20,0x10,0x0,0x7c,0x4,0x4,0x8,0x8,0x90,0x0,
-+0x10,0x10,0x10,0x3c,0x43,0x80,0x3c,0x10,0x13,0xfc,0x10,0x10,0x14,0x18,0x11,0x0,0x40,0x50,0x48,0x7c,0xc0,0x40,0x44,0x7e,0xc0,0x44,0x4c,0x30,0x20,0x52,0x8a,0x6,
-+0x10,0x10,0x10,0x1c,0x23,0x40,0xbc,0x10,0x10,0xfc,0x10,0x10,0x14,0x18,0x10,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x10,0xc,0x4,0xff,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x2a,0x24,0x10,0x30,0x44,0xfe,0x0,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x8,0x28,0x10,
-+0x42,0x22,0x2f,0x82,0x62,0x2f,0x2,0x15,0x28,0xe7,0x24,0x24,0x27,0x24,0x24,0x27,0x10,0x10,0xbc,0x10,0x10,0xfe,0x10,0x28,0xc6,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x0,0x43,0x32,0x13,0x0,0xf,0xf0,0x13,0x12,0x13,0x12,0x13,0x12,0x13,0x2a,0x47,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x8,0xf8,0x6,0xfc,
-+0x40,0x30,0x10,0x0,0x87,0x60,0x20,0x8,0x17,0x20,0xe0,0x20,0x20,0x23,0x2c,0x20,0x80,0xa0,0x90,0xfc,0x80,0x80,0x88,0xfc,0x80,0x90,0xa0,0x40,0xc0,0x24,0x14,0xc,
-+0x40,0x21,0x29,0x5,0x0,0xef,0x24,0x25,0x25,0x25,0x25,0x2d,0x35,0x25,0xa,0x11,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x0,0xfc,0x4,0xfc,0x0,0xfe,
-+0x10,0xfe,0x20,0x28,0x7e,0x8,0xf,0xf9,0x4a,0x9,0x1,0x3f,0x1,0x1,0xff,0x0,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x10,0x10,0x10,0x0,0xf8,0x0,0x4,0xfe,0x0,
-+0x1,0x21,0x21,0x3f,0x22,0x22,0xff,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x21,0x0,0x8,0x8,0xf8,0x28,0x20,0x7c,0x44,0xa8,0x20,0x20,0x20,0x50,0x48,0x8e,0x4,
-+0x8,0x8,0x8,0x1f,0x10,0x21,0x41,0x81,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0xfc,0x4,0x8,0x10,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x22,0x14,0xff,0x14,0x7f,0x15,0x15,0xff,0x15,0x15,0x7f,0x14,0x36,0x55,0x94,0x15,0x20,0x20,0xa0,0x3e,0x42,0x94,0x10,0xd0,0x10,0x10,0x28,0x28,0x48,0x4c,0x86,0x4,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x0,0x8,0x7c,0x48,0x49,0x4a,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x8,0x7c,0x4b,0x4a,0x4c,0x79,0x4a,0x4c,0x48,0x7b,0x48,0x48,0x48,0x48,0x4f,0x98,0x80,0x40,0xfe,0x2,0x4,0x10,0x8,0x4,0x0,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x2,0x2,0x2,0x4,0x8,0x10,0x60,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,
-+0x20,0x20,0x27,0x20,0xfa,0x21,0x2f,0x20,0x23,0x22,0x3a,0xe2,0x42,0x2,0x3,0x2,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x8,0xfc,0x8,0xe8,0xa8,0xe8,0x8,0xf8,0x8,
-+0x8,0x7f,0x9,0x1,0x7f,0x9,0x5,0xff,0x0,0x1f,0x10,0x17,0x14,0x17,0x10,0x1f,0x28,0xfc,0x20,0x8,0xfc,0x20,0x44,0xfe,0x10,0xf8,0x10,0xd0,0x50,0xd0,0x10,0xf0,
-+0x8,0xfd,0x9,0x9,0x9,0x79,0x48,0x43,0x42,0x7a,0xb,0xa,0x8,0x88,0x53,0x20,0x4,0xfe,0x4,0x4,0xfc,0x24,0x20,0xfe,0x22,0x22,0xfe,0x22,0x20,0x24,0xfe,0x2,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x13,0x10,0x11,0x10,0xff,0x10,0x30,0x38,0x57,0x51,0x97,0x11,0x1f,0x11,0x11,0x11,0xf8,0x40,0xf0,0x40,0xf8,0x42,0x7e,0x0,0xbc,0x10,0xbc,0x10,0xbe,0x10,0x52,0x8e,
-+0x20,0x27,0x39,0x41,0x41,0xff,0x21,0x23,0xfb,0x25,0x29,0x21,0x29,0x31,0x21,0x1,0xd0,0x10,0x10,0x52,0x34,0xd8,0x10,0x10,0x90,0x50,0x28,0x28,0x44,0x44,0x82,0x0,
-+0x10,0x9,0xff,0x0,0x3e,0x22,0x3e,0x0,0x7f,0x41,0x5d,0x55,0x5d,0x41,0x45,0x42,0x10,0x10,0x94,0x1e,0x10,0x10,0xfc,0x4,0x44,0x44,0x28,0x28,0x10,0x28,0x4e,0x84,
-+0x10,0x12,0x11,0x11,0x58,0x57,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x12,0x12,0x12,0x40,0x44,0x48,0x50,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x10,0x13,0x10,0x10,0xfc,0x17,0x31,0x39,0x56,0x55,0x99,0x11,0x11,0x12,0x14,0x10,0x38,0xc0,0x40,0x40,0x84,0xfe,0x20,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x9,0x7d,0x49,0x4b,0x4d,0x79,0x49,0x49,0x49,0x79,0x49,0x49,0x49,0x7a,0x42,0x4,0x40,0x28,0xfc,0x20,0x20,0xf8,0x20,0x20,0xf8,0x20,0x28,0xfc,0x0,0xa8,0xa6,0x2,
-+0x0,0x1f,0x2,0x2,0xff,0x4,0x4,0x8,0x34,0xc4,0x4,0x4,0x8,0x8,0x10,0x0,0xf0,0x0,0x0,0x4,0xfe,0x40,0x20,0x50,0x4e,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x8,0xb,0x8,0x10,0x10,0x3f,0x51,0x91,0x12,0x15,0x19,0x11,0x11,0x12,0x14,0x10,0x38,0xc0,0x40,0x40,0x84,0xfe,0x20,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0xb,0xfc,0x10,0x10,0x10,0x10,0x11,0x10,0x10,0x1e,0xf0,0x40,0x0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x80,0x84,0xfe,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x44,0x45,0xfe,0x44,0x7c,0x11,0x7d,0x55,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x13,0x10,0x11,0x10,0xff,0x10,0x14,0x18,0x37,0xd1,0x17,0x11,0x1f,0x11,0x51,0x21,0xf8,0x40,0xf0,0x40,0xf8,0x42,0x7e,0x0,0xbc,0x10,0xbc,0x10,0xbe,0x10,0x52,0x8e,
-+0x20,0x21,0xfe,0x28,0x11,0x2a,0xc6,0x0,0xfd,0x2a,0x28,0x29,0x28,0x28,0x47,0x80,0x4,0xde,0x44,0x44,0x54,0xcc,0x44,0xcc,0x54,0x64,0x44,0x54,0x88,0x2,0xfe,0x0,
-+0x10,0x11,0x10,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x45,0x1,0x1,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8,
-+0x8,0x9,0x8,0x10,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8,
-+0x2,0x1,0x7f,0x44,0x88,0x10,0x3,0x7e,0x8,0x9,0x8,0x8,0xe,0x78,0x20,0x0,0x0,0x0,0xfe,0x42,0x34,0x10,0xfc,0x80,0x88,0xfc,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x10,0x10,0x11,0x10,0x14,0x1e,0xf0,0x10,0x10,0x12,0x14,0x18,0x10,0x1,0x2,0xc,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x14,0x12,0xff,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x4a,0x84,0x40,0x44,0xfe,0x40,0x40,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,
-+0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xff,0x0,0x20,0xf0,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x90,0x17,0x10,0x10,0x10,0x11,0x12,0x17,0x10,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x80,0x80,0x10,0x8,0xfc,0x4,
-+0x2,0x1,0x7f,0x44,0x88,0x10,0x0,0x11,0x14,0xfe,0x10,0x10,0x14,0x18,0x11,0x2,0x0,0x0,0xfe,0x42,0x34,0x10,0x4,0xfe,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x10,0x10,0x10,0x1c,0x20,0x21,0x7e,0x90,0x10,0xfc,0x10,0x12,0x14,0x18,0x11,0x2,0x40,0x40,0x40,0x7c,0x84,0x8,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,0x0,
-+0x8,0xb,0x8,0x13,0x10,0x33,0x50,0x97,0x14,0x19,0x11,0x10,0x10,0x10,0x11,0x16,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x2,0xf4,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x2,0x1,0x7f,0x8,0x4,0x2,0xff,0x1,0x1,0x7f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x8,0xfc,0x20,0x40,0x84,0xfe,0x0,0x8,0xfc,0x0,0x20,0x18,0xc,0x4,0x0,
-+0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x37,0xc1,0x1f,0x1,0x5,0x9,0x31,0x1,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0xe0,0x1e,0x24,0xf0,0x0,0x60,0x18,0x8,0x0,
-+0x4,0x7e,0x8,0x3e,0x8,0x7e,0x1,0x2,0xc,0x32,0xc1,0xf,0x0,0x0,0x0,0x1,0x8,0xfc,0x20,0xf8,0x20,0xfc,0x0,0x80,0x60,0x1e,0x4,0xe0,0x20,0x40,0x80,0x0,
-+0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x49,0x7f,0x8,0x7f,0x8,0x3e,0x8,0xff,0x1,0x20,0xa0,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8,
-+0x8,0x8,0xff,0x8,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x20,0x20,0xfe,0x20,0x18,0xe0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x11,0x12,0xfd,0x10,0x12,0x1a,0x33,0xd0,0x17,0x14,0x14,0x15,0x54,0x24,0x40,0xa0,0x10,0x48,0xf6,0xa4,0x48,0xa8,0xf8,0x44,0xfe,0x84,0xa4,0xf4,0x4,0xc,
-+0x1,0x2,0x6,0x8,0x3f,0xc4,0x13,0x14,0x1f,0x1,0x3f,0x22,0x24,0x2f,0x20,0x20,0x0,0x80,0x40,0x30,0xfe,0x44,0x90,0x50,0xf0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x18,
-+0x1,0x7f,0x40,0x97,0x10,0x97,0x50,0x57,0x10,0x37,0x58,0x93,0x11,0x10,0x11,0x16,0x0,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xf0,0x20,0xc0,0x20,0x1c,
-+0x20,0x18,0x8,0x80,0x61,0x21,0x1,0x15,0x25,0x25,0xe9,0x29,0x21,0x21,0x20,0x20,0x0,0x80,0x40,0x60,0x20,0x20,0x0,0x8,0x4,0x6,0x2,0x8,0x8,0x8,0xf8,0x0,
-+0x1,0x1,0x7f,0x1,0x3f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x10,0x11,0x14,0xfe,0x20,0x28,0x4b,0x7c,0x8,0x9,0xe,0xf8,0x48,0x8,0xb,0x8,0x0,0xfc,0x8,0x10,0x38,0xcc,0x2,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0x0,0x3f,0x2,0xd,0x70,0x1f,0x2,0x2,0x7f,0x0,0x8,0xfc,0x0,0xf8,0x10,0xf8,0x10,0x90,0x10,0x90,0x70,0xd0,0x10,0x52,0xea,0x6,
-+0x10,0x13,0x10,0x28,0x29,0x69,0xaf,0x29,0x29,0x29,0x2b,0x2d,0x28,0x20,0x20,0x23,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x4c,0x86,0x2,
-+0x8,0x77,0x44,0x54,0x54,0x57,0x54,0x54,0x54,0x57,0x74,0x55,0x14,0x25,0x46,0x80,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x34,0xa8,0xa0,0x20,0x20,
-+0x0,0x40,0x37,0x10,0x83,0x60,0x2f,0x8,0x13,0x22,0xe3,0x22,0x23,0x22,0x22,0x22,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x24,0xff,0x24,0x3f,0x41,0xbd,0x25,0x3d,0x2,0x3f,0x1,0x1f,0x1,0xff,0x1,0x3,0x20,0x24,0x3e,0x44,0xa8,0x10,0x2e,0x44,0x70,0x80,0x0,0xf0,0x4,0xfe,0x0,0x0,
-+0x0,0x8,0x7f,0x48,0x4b,0x48,0x4f,0x78,0x4b,0x4a,0x4b,0x4a,0x7b,0x4a,0x2,0x2,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0x4,0x3f,0x4,0x3f,0x4,0x7f,0x0,0x9,0x6,0x2,0x8,0xfc,0x0,0xf8,0x10,0xf8,0x10,0x90,0x10,0x90,0x10,0xd0,0x90,0x12,0xa,0x6,
-+0x10,0x17,0x10,0x13,0x58,0x57,0x50,0x93,0x12,0x13,0x12,0x13,0x12,0x12,0x12,0x12,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x4f,0x40,0x40,0x53,0x7a,0x42,0x42,0x42,0x4a,0x52,0x62,0x40,0x1,0x2,0xc,0x4,0xfe,0x40,0x88,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x88,0xa0,0x18,0xc,0x4,
-+0x0,0x47,0x20,0x23,0x0,0xef,0x20,0x23,0x22,0x23,0x22,0x23,0x2a,0x32,0x22,0x2,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x1,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x21,0x21,0x22,0x22,0x44,0x88,0x30,0x0,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0xe,0x4,
-+0x0,0x10,0xf8,0x27,0x20,0x23,0xfa,0x22,0x22,0x23,0x20,0x39,0xe3,0x44,0x1,0x0,0x80,0x40,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x2,0x1,0x7f,0x40,0x84,0xc,0x12,0x2,0x3f,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x0,0x0,0xfe,0x2,0x44,0x30,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x8,0x1c,0xf0,0x10,0x11,0xfd,0x11,0x32,0x38,0x54,0x50,0x91,0x11,0x12,0x14,0x18,0x40,0x40,0x40,0x40,0x44,0x4c,0x50,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x0,
-+0x0,0x0,0x1,0xe,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0x8,0x8,0xff,0x0,0x20,0x70,0x80,0x0,0x0,0x0,0x10,0xf8,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x2,0x6,0x38,0x20,0x20,0x21,0x3f,0x22,0x22,0x22,0x22,0x22,0x3f,0xe0,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40,
-+0x0,0x8,0xfc,0x13,0x10,0x12,0x7d,0x11,0x10,0x10,0x11,0x1e,0xe4,0x0,0x1,0x0,0x40,0x50,0x48,0xfe,0x40,0x44,0x4c,0x50,0x60,0xd0,0x50,0x4e,0x44,0x40,0x40,0x80,
-+0x1,0x1,0x1,0x7f,0x1,0x21,0x19,0x9,0x3,0x5,0x9,0x11,0x61,0x1,0x5,0x2,0x0,0x40,0x28,0xfc,0x0,0x8,0x18,0xa0,0x40,0x40,0x30,0xe,0x4,0x0,0x0,0x0,
-+0x0,0x7f,0x40,0x41,0x41,0x41,0x41,0x42,0x42,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x84,0x84,0x44,0x24,0x3c,0x14,0x4,0xfc,0x4,
-+0x10,0xc,0x4,0xff,0x4,0x4,0x3f,0x24,0x24,0x38,0x20,0x2f,0x20,0x20,0x3f,0x20,0x10,0x30,0x44,0xfe,0x40,0x48,0xfc,0x48,0x48,0x38,0x8,0xe8,0x8,0x8,0xf8,0x8,
-+0x40,0x37,0x14,0x4,0x84,0x44,0x54,0x14,0x14,0x24,0xe4,0x25,0x26,0x24,0x27,0x24,0x4,0xfe,0x4,0x44,0x44,0x44,0x44,0xa4,0xa4,0xa4,0x94,0x1c,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x8,0x7e,0x9,0x8,0xff,0x8,0x28,0x2e,0x28,0x28,0x29,0x58,0x88,0x7,0x40,0x40,0x78,0x88,0x10,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x0,0x6,0xfc,
-+0x0,0x3f,0x20,0x28,0x24,0x22,0x21,0x20,0x21,0x22,0x24,0x28,0x20,0x20,0x3f,0x0,0x8,0xfc,0x0,0x8,0x18,0x20,0x40,0x80,0x40,0x30,0x18,0x8,0x0,0x4,0xfe,0x0,
-+0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xf5,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x4,0x4,0x4,0x4,0x7f,0x44,0x44,0x44,0x44,0x7f,0x44,0x44,0x44,0x44,0x7f,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x8,0x11,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x45,0xfd,0x15,0x25,0x45,0x85,0x15,0x8,0x4,0xfe,0x0,0x44,0x44,0x28,0x28,0x10,0x10,0x28,0x28,0x44,0x84,0x0,0xfe,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x28,0x28,0x28,0x2f,0x20,0x30,0x50,0x50,0x9f,0x10,0x4,0xfe,0x4,0x4,0xfc,0x80,0x88,0x88,0x88,0xf8,0x80,0x84,0x84,0x84,0xfc,0x4,
-+0x8,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x45,0x15,0x8,0x4,0xfe,0x0,0x44,0x44,0x28,0x28,0x10,0x10,0x28,0x28,0x44,0x84,0x0,0xfe,0x0,
-+0x23,0x12,0x43,0x22,0xa,0x13,0x62,0x23,0x20,0x0,0xff,0x5,0x9,0x11,0x61,0x1,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x0,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x1,0xff,0x22,0x23,0x3e,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0xe2,0x42,0x3,0x2,0x0,0x80,0x0,0xfc,0x4,0x84,0x88,0x88,0x48,0x50,0x20,0x50,0x48,0x8e,0x4,0x0,
-+0x0,0x7f,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x1,0xff,0x4,0xc,0x2,0x1,0xe,0x0,0x0,0xfc,0x44,0x48,0x28,0x10,0x2e,0x44,0x0,0xfe,0x20,0x20,0x40,0x80,0x70,
-+0x10,0x13,0x10,0x5d,0x51,0x51,0xfd,0x0,0x55,0x55,0x55,0x6d,0x45,0x7d,0x45,0x1,0xc,0xf0,0x24,0xfe,0x24,0x24,0xfc,0x20,0xfc,0x24,0x24,0x54,0x74,0x4,0x14,0x8,
-+0x10,0x17,0x12,0x7e,0x13,0x12,0xfe,0x13,0x52,0x5e,0x52,0x57,0x70,0x50,0x8f,0x0,0x40,0xe0,0x40,0x7c,0xc4,0x54,0x54,0xd4,0x48,0x54,0x52,0xe2,0x40,0x46,0xfc,0x0,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0x10,0xf8,0x8,
-+0x0,0x7f,0x49,0x45,0x5f,0x42,0x7f,0x44,0x4f,0x74,0x45,0x44,0x43,0x40,0x7f,0x40,0x4,0xfe,0x24,0x44,0xf4,0x4,0xfc,0x44,0xe4,0x5c,0x84,0x24,0xe4,0x4,0xfc,0x4,
-+0x22,0x22,0xff,0x22,0x77,0x55,0x77,0x24,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x3f,0x20,0x4,0xfe,0x90,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x46,0x82,
-+0x10,0x10,0x13,0x10,0xfe,0x12,0x31,0x39,0x55,0x50,0x90,0x10,0x11,0x12,0x14,0x10,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4,0x0,
-+0x4,0xfe,0x2b,0x28,0xfe,0xaa,0xaa,0xab,0xc6,0x82,0xfe,0x82,0x82,0xfe,0x83,0x0,0x88,0x88,0xfe,0x88,0x20,0x50,0x8e,0x4,0xf8,0x20,0x20,0xf8,0x20,0x24,0xfe,0x0,
-+0x2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x1,0x7d,0x5,0x9,0x11,0x21,0xc5,0x2,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0x8c,0x50,0x20,0x10,0xe,0x4,0x0,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc1,0x1,0x1,0xf,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x80,0x40,0x20,0x50,0xee,0x4,0x0,0x40,0xe0,0x0,0x0,0x8,0xfc,0x0,
-+0x0,0x0,0x1f,0x10,0x90,0x51,0x52,0x1d,0x30,0x50,0xd3,0x10,0x20,0x20,0x4f,0x0,0x80,0x44,0xfe,0x40,0xa0,0x10,0xe,0xf4,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x1,0x9,0x5,0x7f,0x2,0xff,0x4,0x9,0x1f,0x21,0xcf,0x1,0x3f,0x1,0x5,0x2,0x0,0x20,0x48,0xfc,0x0,0xfe,0x40,0xe0,0x10,0xe,0xe4,0x0,0xf8,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x40,0x30,0x10,0x4,0xfe,0x0,0x0,0x80,0x80,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x1,0x9,0x5,0x7f,0x2,0xff,0x4,0x8,0x1f,0x22,0xc2,0x4,0x4,0x8,0x10,0x20,0x0,0x20,0x48,0xfc,0x0,0xfe,0x40,0x20,0xf0,0x2e,0x24,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x0,0x7e,0x2,0x23,0x22,0x14,0x14,0x8,0x14,0x14,0x22,0x42,0x81,0x2,0x4,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x20,0x20,0x24,0x3e,0x51,0x90,0x14,0xfe,0x13,0x54,0x54,0x54,0x54,0x7d,0x46,0x4,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x10,0x10,0x12,0x56,0x59,0x50,0x90,0x10,0x17,0x28,0x28,0x24,0x44,0x41,0x82,0x4,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x0,0x1f,0x12,0x9f,0x52,0x52,0x12,0x15,0x38,0x57,0xd4,0x15,0x24,0x24,0x45,0x4,0x84,0xfe,0x0,0xbc,0xa4,0xa4,0xa4,0xbc,0x44,0xfe,0x44,0xb4,0x44,0xa4,0x14,0x8,
-+0x8,0x8,0xa,0x7f,0x8,0x8,0x9,0xff,0x8,0x10,0x10,0x24,0x22,0x7f,0x1,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0xc4,0x44,0x44,0x64,0x54,0x48,0x40,0x40,0x40,
-+0x24,0x24,0x24,0x7e,0x24,0x24,0xff,0x0,0x7e,0x42,0x42,0x7e,0x43,0x42,0x7e,0x42,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x14,0xfc,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x12,0xfc,0x11,0x31,0x3b,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x40,0x40,0xfe,0xa2,0xa4,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x0,0x4,0xfe,0x10,0x11,0x23,0x25,0x7d,0xa5,0x25,0x25,0x25,0x25,0x3d,0x22,0x4,0x40,0x40,0x78,0x90,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x1,0x9,0xd,0x11,0x21,0x3,0xc,0x30,0xdf,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x20,0x18,0x4c,0x84,0x0,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x0,
-+0x20,0x11,0x10,0x0,0xfb,0x8,0x10,0x35,0x58,0x95,0x11,0x12,0x14,0x10,0x10,0x10,0x4,0xfe,0x84,0x84,0xfe,0x84,0x84,0xfc,0x80,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x2,0x7f,0x22,0x22,0xff,0x22,0x22,0x7e,0x20,0x42,0xbf,0x22,0x22,0x22,0x3e,0x22,0x82,0x44,0x28,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x10,0x1e,0x22,0x33,0x4a,0xa4,0x14,0x8,0x11,0x22,0x40,0x24,0x24,0x40,0x20,0x20,0x28,0x24,0x20,0xfe,0x20,0x50,0x50,0x88,0xe,0x4,0x0,0x48,0x46,0x2,
-+0x11,0x11,0x11,0x15,0x5a,0x53,0x54,0x9a,0x11,0x12,0x20,0x28,0x44,0x42,0x82,0x4,0x10,0x18,0xd4,0x50,0x7e,0x50,0x90,0x90,0x28,0x28,0x46,0x84,0x0,0xa8,0xa4,0x4,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0xff,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x20,0x10,0x43,0x20,0x8,0x51,0x22,0x25,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x80,0x90,0xf8,0x90,0x90,0x12,0x12,0xe,0x0,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x10,0xfe,0x0,0xee,0xaa,0xee,0x28,0xfe,0x28,0x7c,0x28,0xfe,0x24,0x68,0xa5,0x32,0x8,0x1c,0xe0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0xaa,0x38,0x0,
-+0x20,0x27,0x20,0x23,0xfa,0x23,0x21,0x27,0x21,0x23,0x39,0xef,0x41,0x3,0xd,0x1,0x44,0xfe,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0xe,0x84,
-+0x10,0x17,0x10,0x13,0xfe,0x13,0x11,0x1f,0x31,0xd3,0x11,0x1f,0x11,0x13,0x55,0x21,0x44,0xfe,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0xe,0x84,
-+0x0,0xf,0x70,0x53,0x52,0x53,0x51,0x57,0x51,0x53,0x51,0x5f,0x71,0x43,0xd,0x1,0x44,0xfe,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0xe,0x84,
-+0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x12,0x14,0x18,0x17,0x0,0x40,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x20,0x20,0x38,0x4f,0x50,0x80,0x20,0x27,0x20,0x27,0x21,0x29,0x31,0x22,0xc,0x80,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x14,0x18,0x30,0xd0,0x10,0x10,0x11,0x11,0x52,0x24,0x40,0x50,0x48,0x40,0x44,0xfe,0x40,0x60,0xa0,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x20,0x20,0x47,0xf8,0x10,0x20,0x47,0xf8,0x7,0x1,0x19,0xe1,0x42,0xc,0x80,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e,
-+0x8,0x8,0x7f,0xa,0x2,0xff,0x4,0xf,0x18,0x28,0xcf,0x2,0x29,0x28,0x48,0x7,0x20,0x28,0xfc,0x20,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x0,0x88,0x84,0x14,0xf0,
-+0x8,0x8,0x8,0x7f,0x8,0xa,0x1c,0x68,0x8,0x8,0x29,0x12,0x0,0x48,0x44,0x84,0x40,0x40,0x48,0xfc,0x48,0x48,0xc8,0x48,0xa8,0x8a,0xa,0x4,0x0,0x88,0x46,0x42,
-+0x0,0x0,0x3f,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x10,0x78,0x80,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x0,0x7f,0x2,0x12,0x12,0x22,0x4,0x18,0x60,0x0,0x4,0x13,0x51,0x50,0x8f,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x50,0x20,0x0,0x0,0x0,0x14,0x12,0xf2,0x0,
-+0x10,0x10,0x15,0xfe,0x10,0x10,0x7c,0x10,0x11,0xfe,0x12,0x12,0x1a,0x14,0x10,0x13,0x0,0x4,0xfe,0x24,0x24,0xa4,0xa4,0xa4,0x24,0x24,0x24,0x44,0x44,0x84,0x94,0x8,
-+0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x10,0x0,0x18,0xe0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0,
-+0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x11,0x11,0x15,0x1a,0x12,0x4,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0x10,0x10,0x8,0x8,0x6,0x4,
-+0x0,0x7f,0x1,0x1,0x1,0x9,0x9,0x11,0x21,0x1,0x2,0x2,0x4,0x8,0x10,0x60,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x11,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x85,0x0,0x8,0x3c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x0,
-+0x10,0x10,0x23,0x20,0x44,0xf9,0x11,0x22,0x40,0xfc,0x0,0x0,0x1c,0xe1,0x42,0x4,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x84,0x4,0x28,0x10,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x14,0x18,0x30,0xd0,0x11,0x11,0x11,0x12,0x54,0x28,0x0,0x8,0xfc,0x88,0x88,0x90,0x94,0xbe,0x84,0x84,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x1f,0x21,0x21,0x61,0xa1,0x21,0x21,0x21,0x22,0x22,0x22,0x24,0x28,0x30,0x0,0x8,0xfc,0x8,0x8,0x8,0x10,0x14,0x3e,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,
-+0x0,0x0,0x0,0xff,0x0,0x8,0x8,0x8,0x7e,0x8,0x8,0x10,0x11,0x22,0x4c,0x0,0x80,0xa0,0x94,0xfe,0x80,0x80,0x88,0x88,0x90,0x60,0x40,0xc0,0x20,0x12,0xa,0x6,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x8,0xf,0x8,0xf,0x8,0x8,0x7f,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x20,0xe0,0x20,0xe0,0x28,0x3c,0xe0,0x20,0x20,0x20,
-+0x8,0x8,0xff,0x8,0x1,0x7f,0x40,0x89,0x12,0x4,0x1f,0x28,0xc8,0x8,0xf,0x8,0x20,0x24,0xfe,0x20,0x0,0xfe,0x2,0x24,0x90,0x40,0xf0,0x2e,0x24,0x20,0xe0,0x20,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x41,0x81,0x1,0x7f,0x3,0x5,0x9,0x11,0x61,0x1,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x4,0x0,0xfc,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x2,0x7f,0x0,0x3e,0x22,0x22,0x3e,0x0,0x7f,0x63,0x55,0x7f,0x49,0x49,0x49,0x43,0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x54,0x10,0x10,0x14,0xfe,0x2,
-+0x10,0x10,0x17,0x14,0x59,0x52,0x54,0x91,0x12,0x14,0x1b,0x12,0x2a,0x26,0x43,0x82,0x80,0x40,0xfe,0x2,0x14,0x48,0xa4,0x10,0xe,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x40,0x30,0x17,0x4,0x89,0x62,0x24,0x1,0x12,0x24,0xeb,0x22,0x22,0x22,0x23,0x22,0x80,0x40,0xfe,0x2,0x14,0x48,0xa4,0x10,0xe,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x1,0x7f,0x40,0x84,0x9,0x12,0x4,0x8,0x10,0x2f,0xc8,0x8,0x8,0xf,0x8,0x0,0x0,0xfe,0x2,0x44,0x30,0x90,0x40,0x20,0x10,0xee,0x24,0x20,0x20,0xe0,0x20,
-+0x10,0x10,0x20,0x27,0x44,0xf9,0x11,0x21,0x47,0xf9,0x1,0x1,0x1a,0xe2,0x45,0x0,0x20,0x30,0x28,0xfe,0x20,0x24,0x24,0x28,0xe8,0x28,0x30,0x20,0x50,0x92,0xa,0x6,
-+0x0,0x0,0x7f,0x40,0x80,0xf,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0xfe,0x2,0x44,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0x44,0x3c,0x0,
-+0x10,0x13,0x10,0x10,0xfb,0x10,0x11,0x1a,0x30,0xd7,0x10,0x11,0x11,0x12,0x54,0x20,0x0,0xf8,0x90,0x60,0xfc,0xa8,0x20,0x60,0x44,0xfe,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x0,0x1f,0x2,0x1,0x7f,0x2,0x4,0x19,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0xe0,0x40,0x80,0xfc,0x88,0x90,0x80,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x1,0x1,0x1,0x7f,0x41,0x41,0x42,0x44,0x49,0x41,0x42,0x44,0x48,0x40,0x40,0x40,0x0,0x0,0x4,0xfe,0x4,0x4,0x84,0x64,0x24,0x4,0x84,0x64,0x24,0x4,0x14,0x8,
-+0x4,0x4,0xff,0x4,0x14,0x10,0xfe,0x22,0x22,0x22,0x42,0x24,0x14,0x8,0x14,0x62,0x40,0x44,0xfe,0x40,0x40,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,
-+0x20,0x23,0x20,0x27,0xfd,0xac,0xa9,0xa8,0xaf,0xf8,0xa3,0x22,0x2a,0xfa,0x4a,0x2,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x40,0xfc,0x88,0xfc,0xa8,0xa8,0xa8,0xa8,0x18,
-+0x10,0x13,0x10,0x27,0x25,0x68,0xa1,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x24,0x24,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x44,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x0,0xfb,0x8,0x17,0x25,0x28,0x21,0x28,0x37,0xe0,0x27,0x24,0x24,0x24,0xa4,0x44,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x44,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x10,0x10,0x10,0x10,0xfe,0x22,0x22,0x22,0x22,0x42,0x24,0x14,0x8,0x14,0x22,0x40,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,
-+0x0,0x3f,0x20,0x2f,0x20,0x3f,0x29,0x28,0x4a,0x8c,0x0,0xff,0x4,0x2,0x0,0x0,0x10,0xf8,0x0,0xf0,0x0,0xfc,0x10,0xa0,0x60,0x1c,0x20,0xfe,0x20,0x20,0xa0,0x40,
-+0x2,0xf,0x70,0x29,0x2a,0x7f,0x2,0xc,0x8,0xb,0xc,0x38,0xc8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0,
-+0x20,0x18,0x8,0x80,0x60,0x2f,0x1,0x9,0x12,0x24,0xe2,0x21,0x20,0x21,0x22,0x2c,0x80,0x80,0x80,0x80,0x84,0xfe,0x8,0x8,0x8,0x10,0x10,0x20,0xc0,0x20,0x18,0x8,
-+0x4,0x2,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0xe,0x4,
-+0x20,0x13,0x12,0x3,0xfe,0xb,0x12,0x36,0x5a,0x94,0x10,0x17,0x11,0x10,0x10,0x10,0x8,0xfc,0x0,0xfc,0x0,0xfe,0xc4,0xa8,0x90,0xce,0x8,0xfe,0x8,0x88,0x28,0x10,
-+0x10,0x10,0x14,0xfe,0x20,0x29,0x48,0x7e,0x8,0x8,0xe,0xf8,0x48,0x8,0x9,0xa,0x40,0x40,0x40,0x7c,0x84,0x8,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x0,0x7d,0x44,0x48,0x48,0x53,0x48,0x48,0x44,0x44,0x44,0x68,0x51,0x41,0x42,0x44,0x8,0xfc,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x8,0x8,0xff,0x8,0x2,0x29,0x29,0x48,0x7,0x10,0x8,0x20,0x66,0xa5,0x3c,0x0,0x20,0x24,0xfe,0x20,0x0,0x8,0x24,0x24,0xe0,0x20,0x10,0x40,0xcc,0x4a,0x78,0x0,
-+0x0,0x14,0xfc,0x24,0x24,0x27,0x20,0xff,0x20,0x27,0x24,0x24,0x3c,0xe4,0x44,0x4,0x40,0x44,0x44,0x44,0x44,0xfc,0x0,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x11,0x10,0x10,0x1c,0x21,0x21,0x7d,0x91,0x11,0x7c,0x10,0x10,0x15,0x19,0x12,0x4,0x4,0x88,0x50,0x4,0xfe,0x4,0x4,0x4,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x20,0x1b,0x8,0x40,0x5f,0x41,0x41,0x41,0x4f,0x41,0x41,0x41,0x5f,0x40,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x4,0x43,0x31,0x14,0x85,0x44,0x44,0x14,0x15,0x24,0xe4,0x24,0x25,0x24,0x24,0x24,0x4,0x7e,0x4,0x24,0xf4,0x44,0x44,0x44,0xf4,0x44,0x44,0x44,0xf4,0x4,0x14,0x8,
-+0x8,0x8,0x7f,0x8,0xa,0x2,0xff,0x4,0x8,0x1f,0x28,0x48,0x88,0x8,0xf,0x8,0x20,0x28,0xfc,0x20,0x20,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x7e,0x2,0x2,0x7e,0x40,0x40,0x7e,0x22,0x12,0x6,0x1a,0x62,0x22,0x2,0x4,0x4,0xfe,0x4,0x4,0xfc,0x80,0x84,0xfe,0x44,0x24,0xc,0x34,0xc4,0x44,0x14,0x8,
-+0x22,0x22,0x27,0x22,0xfa,0x2f,0x20,0x2f,0x34,0xe7,0x24,0x27,0x24,0x24,0xa5,0x44,0x90,0x90,0xd4,0x9e,0xa4,0xf4,0x14,0xd4,0x54,0xd4,0x48,0xc8,0x54,0x54,0x62,0x80,
-+0x0,0x40,0x3f,0x10,0x0,0x87,0x44,0x4c,0x14,0x24,0xe5,0x26,0x24,0x24,0x27,0x24,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0x1c,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x4,0xff,0x4,0x7c,0x45,0x48,0x50,0x49,0x45,0x45,0x65,0x59,0x41,0x42,0x44,0x40,0x44,0xfe,0x40,0x20,0xfc,0x88,0x50,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x7d,0x49,0x49,0x49,0x79,0x49,0x49,0x49,0x78,0x48,0x4a,0x4a,0x4c,0x48,0x98,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x0,0x40,0xa4,0xa2,0x8a,0x88,0x78,
-+0x20,0x21,0x7d,0x89,0x11,0x7d,0x55,0x55,0x7d,0x54,0x54,0x7e,0x2,0x1c,0xe0,0x40,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x0,0x40,0xa4,0xa2,0x8a,0x88,0x78,
-+0x2,0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0x7f,0x5,0x19,0x67,0x81,0x1,0x7f,0x0,0x0,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x40,0xfc,0x40,0x30,0xce,0x4,0x10,0xf8,0x0,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0x7f,0x8,0x1f,0x28,0xc9,0x9,0x1,0x6,0x18,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x40,0xfc,0x20,0xf0,0x2e,0x24,0x20,0x0,0xc0,0x30,
-+0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x2,0x4,0x8,0x3f,0x2,0x2,0xff,0x4,0xf,0x10,0x20,0xcf,0x0,0x0,0x3f,0x0,0x0,0x40,0x20,0xf0,0x10,0x4,0xfe,0x40,0xe0,0x10,0x4e,0xe4,0x0,0x10,0xf8,0x0,
-+0x1,0x1,0x2,0x4,0x9,0x11,0x21,0xd1,0xd,0x5,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x14,0x30,0x44,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x24,0x24,0x7e,0x24,0x24,0xff,0x2,0x7f,0x42,0x7e,0x42,0x7e,0x42,0x42,0x4a,0x45,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x1f,0x8,0x4,0x3,0x4,0x8,0x7f,0x24,0x18,0x66,0x1,0xff,0x5,0x19,0x61,0x1,0xf0,0x20,0x40,0x80,0x40,0x20,0xfc,0x48,0x30,0xcc,0x0,0xfe,0x40,0x30,0xc,0x0,
-+0x3,0x11,0xf8,0x91,0x92,0x97,0x94,0x93,0x94,0x90,0x9f,0x90,0xf1,0x92,0xc,0x0,0xf8,0x10,0xe0,0x10,0x8,0xbc,0xa4,0x18,0xa4,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x1,0x1,0x3f,0x1,0x11,0xd,0x5,0xff,0x10,0x12,0x11,0x10,0x10,0x14,0x18,0x10,0x0,0x10,0xf8,0x0,0x10,0x30,0x44,0xfe,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x17,0x10,0x11,0xfc,0x11,0x16,0x18,0x33,0xd2,0x12,0x13,0x12,0x10,0x57,0x20,0x0,0xfc,0x48,0x10,0xe0,0x10,0x4e,0x48,0xfc,0x48,0x48,0xf8,0x40,0x48,0xfc,0x4,
-+0x8,0xff,0x9,0x48,0x48,0x48,0x4b,0x48,0x7d,0x5,0x1d,0xe5,0x45,0x4,0x15,0x8,0x0,0xfc,0x24,0x88,0x70,0x88,0x26,0x24,0xfe,0x24,0x24,0xfc,0x20,0x28,0xfc,0x4,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x14,0x19,0x30,0xd0,0x10,0x10,0x10,0x13,0x50,0x20,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x24,0x45,0x28,0x10,0x28,0x44,0x84,0x3,0xa0,0x2c,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x7e,0x8,0x8,0x3e,0x8,0x8,0x7e,0x2,0x1,0x11,0x50,0x51,0x96,0x18,0x6f,0x8,0xfc,0x20,0x20,0xf8,0x20,0x28,0xfc,0x0,0x20,0x40,0x84,0x2,0xa,0x8,0xf8,
-+0x4,0x4,0x7,0x8,0x8,0x1f,0x28,0x48,0x8,0xf,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0xf0,0x20,0x48,0xfc,0x88,0x88,0x88,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0,
-+0x20,0x1b,0x8,0x81,0x62,0x20,0x9,0x12,0x24,0xe2,0x22,0x22,0x22,0x22,0x2f,0x20,0x4,0xfe,0x44,0x44,0x44,0x84,0x14,0x8,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0,
-+0x1,0x1,0x3f,0x3,0x5,0x19,0x61,0x9,0x8,0x7e,0x8,0x1c,0x2a,0xc9,0x8,0x8,0x0,0x8,0xfc,0x80,0x60,0x1c,0x8,0x20,0x28,0xfc,0x20,0x70,0xae,0x24,0x20,0x20,
-+0x12,0x11,0x17,0x24,0x25,0x64,0xa7,0x20,0x23,0x22,0x22,0x23,0x22,0x22,0x23,0x22,0x8,0x14,0xfe,0x44,0x54,0x44,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0xff,0x8,0x20,0x10,0x81,0x49,0x12,0x24,0xe0,0x20,0x20,0x20,0x23,0x2c,0x20,0x24,0xfe,0x20,0x40,0x40,0x48,0x46,0x42,0x48,0x50,0x20,0x40,0x80,0x0,0x0,
-+0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x3d,0x64,0xa4,0x24,0x24,0x24,0x3c,0x23,0xc,0x20,0x20,0x20,0x20,0xa8,0xa6,0xa2,0x20,0x24,0x28,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x10,0x8,0x6,0x1,0x2,0xc,0x31,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x5,0x2,0x10,0x30,0xc0,0x0,0xc0,0x30,0x8,0x0,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,0x0,
-+0x20,0x11,0xa,0x4,0xa,0x11,0x64,0x4,0xff,0x4,0x15,0x14,0x24,0x44,0x14,0x8,0x84,0x84,0x24,0x24,0x24,0xa4,0xa4,0x24,0xe4,0x24,0x24,0x84,0x84,0x4,0x14,0x8,
-+0x0,0x20,0x18,0x8,0x81,0x61,0x22,0xa,0x14,0x20,0xe0,0x20,0x20,0x20,0x23,0x2c,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x50,0x20,0x40,0x80,0x0,0x0,
-+0x10,0x10,0x20,0x20,0x49,0xf9,0x12,0x22,0x44,0xf8,0x0,0x0,0x18,0xe0,0x43,0xc,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x50,0x20,0x40,0x80,0x0,0x0,
-+0x10,0x11,0x17,0x25,0x24,0x65,0xa7,0x22,0x25,0x29,0x23,0x24,0x28,0x20,0x23,0x2c,0x80,0x4,0xfe,0x14,0xe4,0x14,0xfc,0x8,0x6,0xfa,0x8,0x90,0x60,0x90,0xe,0x4,
-+0x0,0x8,0x7c,0x49,0x4b,0x4c,0x48,0x4f,0x48,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x40,0x40,0xa0,0x10,0xfe,0x44,0x40,0xfc,0x40,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x1e,0x24,0x48,0xff,0x1,0x1,0x7f,0x1,0x1,0x7f,0x0,0x44,0x42,0x80,0x20,0x24,0x3e,0x44,0xa4,0x24,0x24,0x28,0x10,0x28,0x46,0x84,0x0,0x88,0x46,0x2,
-+0x12,0x1f,0x28,0x45,0x8,0x4b,0x48,0x49,0x49,0x49,0x49,0x49,0x11,0x11,0x20,0x40,0x48,0x7c,0xa0,0x10,0x4,0xfe,0x20,0xfc,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x0,0x7,0x78,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4b,0x7a,0x4a,0x3,0x2,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x94,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x17,0xfc,0x24,0x24,0x24,0xfc,0x2f,0x24,0x24,0x3c,0xe4,0x44,0x5,0x8,0x10,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x44,0x8c,
-+0x8,0x8,0xff,0x8,0x9,0x1,0x1,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x20,0x24,0xfe,0x20,0x20,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x2a,0x48,0x88,0x8,0x8,0x8,0x9,0x4,0x8,0x10,0x20,0xc0,0x4,0x8,0x10,0x20,0xc0,0x2,0x4,0x8,0x10,0x60,0x80,
-+0x1,0x1,0x1,0x1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x7f,0x40,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x0,0x7b,0x4a,0x4a,0x4a,0x4a,0x4a,0xff,0x4a,0x4a,0x4a,0x4a,0x4a,0x5a,0x42,0x84,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0x44,0x54,0xc8,
-+0x10,0x10,0x13,0x16,0x5a,0x53,0x52,0x92,0x13,0x12,0x13,0x2a,0x25,0x44,0x89,0x0,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x44,0xfe,0x44,0x54,0xcc,0x54,0x44,0x54,0x88,
-+0x10,0x8,0x8,0xfe,0x2,0x4,0x8,0xa,0x1c,0x2a,0x48,0x8,0x8,0x8,0x8,0x9,0x4,0x8,0x10,0x20,0xc0,0x4,0x8,0x10,0x20,0xc0,0x2,0x4,0x8,0x10,0x60,0x80,
-+0x20,0x1b,0x8,0x40,0x41,0x41,0x41,0x41,0x42,0x42,0x44,0x48,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x84,0x44,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x78,0x48,0x57,0x50,0x62,0x51,0x48,0x4f,0x48,0x68,0x50,0x41,0x42,0x44,0x48,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x10,0x17,0x10,0x13,0xfe,0x12,0x16,0x1b,0x30,0xd1,0x11,0x11,0x11,0x11,0x50,0x27,0x40,0xfe,0x0,0xfc,0x94,0xf4,0x94,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,
-+0x0,0x7c,0x45,0x57,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x2a,0x44,0x88,0x80,0xfc,0x8,0xfe,0x44,0x92,0xfe,0x0,0x7c,0x0,0x7c,0x0,0x7c,0x44,0x44,0x7c,
-+0x2,0x79,0x4f,0x48,0x4b,0x78,0x4f,0x4a,0x49,0x7f,0x48,0x4b,0x4a,0x4a,0x4b,0x9a,0x8,0x10,0xfc,0x40,0xf8,0x40,0xfc,0x48,0x50,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,
-+0x8,0x4,0x7f,0x1,0x3f,0x1,0x7f,0x9,0x5,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x20,0x48,0xfc,0x0,0xf8,0x0,0xfc,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x0,0x40,0x30,0x10,0x84,0x64,0x24,0xc,0x14,0x24,0xe4,0x24,0x24,0x24,0x27,0x24,0x40,0x40,0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x2,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x21,0x29,0x25,0x29,0x51,0x85,0x2,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0x7e,0x4,0x24,0x14,0x24,0x44,0x14,0x8,
-+0x12,0x11,0x27,0x20,0x4b,0xf8,0x17,0x22,0x41,0xff,0x40,0x3,0x1a,0xe2,0x43,0x2,0x8,0x10,0xfc,0x40,0xf8,0x40,0xfc,0x48,0x50,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x17,0x11,0xfc,0x13,0x12,0x12,0x13,0x12,0x1e,0xf2,0x42,0x2,0x2,0x2,0x40,0x24,0xfe,0x8,0x94,0xfe,0x4,0x94,0xc,0xf4,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x9,0x9,0xa,0x13,0x14,0x38,0x50,0x97,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x8,0x8,0x8,0x50,0x20,
-+0x2,0x1,0xff,0x8,0x4,0x3f,0x20,0x24,0x28,0x37,0x24,0x24,0x24,0x27,0x20,0x20,0x0,0x4,0xfe,0x20,0x48,0xfc,0x8,0x48,0x28,0xd8,0x48,0x48,0x48,0xc8,0x28,0x10,
-+0x1,0x11,0x9,0x7f,0x40,0x8f,0x8,0xf,0x0,0x1f,0x10,0x11,0x11,0x2,0xc,0x30,0x0,0x10,0x20,0xfe,0x2,0xe4,0x20,0xe0,0x10,0xf8,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x2,0x2,0x20,0x40,0x84,0xfe,0x4,0x14,0xfc,0x94,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x1,0x21,0x19,0x9,0x1,0x7f,0x40,0x40,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x0,0x8,0x18,0x20,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x14,0x8,
-+0x1,0x9,0x5,0x7f,0x40,0x8f,0x8,0xf,0x1,0x7f,0x5,0xc,0x14,0x25,0x46,0x4,0x0,0x20,0x40,0xfe,0x2,0xe4,0x20,0xe0,0x8,0xfc,0x10,0xa0,0x40,0x20,0x1c,0x8,
-+0x10,0x11,0x10,0x10,0xfc,0x11,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x10,0x10,0xfc,0x11,0x15,0x19,0x11,0x31,0xd1,0x11,0x11,0x11,0x51,0x21,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x8,0x1d,0xf0,0x10,0x10,0xfd,0x11,0x39,0x35,0x51,0x51,0x91,0x11,0x11,0x11,0x11,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x14,0x5f,0x50,0x50,0x90,0x17,0x10,0x17,0x29,0x25,0x45,0x82,0xc,0x80,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e,
-+0x4,0x4,0xff,0x4,0x10,0x1f,0x10,0x20,0x24,0x43,0x81,0x0,0x0,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x10,0x3f,0x20,0x40,0x80,0x4,0x2,0x3,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x8,0x7f,0x0,0x22,0x14,0xff,0x2,0x3f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x4,0xfe,0x24,0x24,0x24,0x44,0x54,0x88,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x1,0x1,0x1,0x9,0x9,0x11,0x11,0x21,0x41,0x1,0x1,0x0,0x1,0x2,0xc,0x70,0x0,0x0,0x0,0x20,0x10,0xc,0x4,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x9,0x7c,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x2,0xff,0x22,0x22,0x22,0x42,0x4a,0x84,0x2,0x7f,0x42,0x42,0x42,0x7e,0x42,0x0,0x0,0xfc,0x84,0x84,0x88,0x88,0x90,0x88,0x84,0x82,0xc2,0xa2,0x94,0x88,0x80,0x80,
-+0x10,0x13,0x20,0x20,0x44,0xf9,0x11,0x22,0x44,0xfc,0x1,0x1,0x1d,0xe1,0x41,0x1,0x4,0xfe,0x84,0x84,0x84,0x4,0x4,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x2,0xff,0x4,0xa,0x32,0xcf,0x2,0x7f,0x4,0xf,0x38,0xcf,0x8,0xf,0x8,0x0,0x8,0xfc,0x40,0x20,0x5e,0xe4,0x80,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x4,0x7e,0x44,0x54,0x55,0x56,0x54,0x54,0x57,0x54,0x54,0x10,0x29,0x26,0x44,0x80,0x20,0x20,0x50,0x88,0x6,0xf8,0x0,0x4,0xfe,0x20,0x20,0xa8,0xa6,0x22,0xa0,0x40,
-+0x10,0x10,0x10,0x11,0x7d,0x56,0x54,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x40,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x80,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x0,0x1f,0x1,0x1,0xff,0x1,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x1,0x2,0x4,0x8,0x37,0xc1,0x1,0x3f,0x1,0x1,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x80,0x40,0x30,0xce,0x4,0x10,0xf8,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x8,0x8,0xa,0x7f,0x8,0xa,0xff,0x14,0x14,0x56,0x55,0x94,0x14,0x24,0x44,0x8c,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x10,0x13,0x11,0x11,0xfd,0x11,0x15,0x1b,0x30,0xd7,0x14,0x12,0x11,0x12,0x54,0x28,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xbc,0xa4,0xa8,0x10,0xa8,0x46,0x4,
-+0x8,0x12,0x3f,0x22,0x22,0x3f,0x22,0x3e,0x22,0x22,0xfe,0xa,0x12,0x22,0xca,0x4,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x13,0x11,0x59,0x55,0x51,0x91,0x17,0x10,0x17,0x14,0x12,0x11,0x12,0x14,0x18,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xbc,0xa4,0xa8,0x10,0xa8,0x46,0x4,
-+0x0,0x40,0x32,0x12,0x82,0x62,0x2f,0x8,0x10,0x22,0xe2,0x24,0x20,0x20,0x23,0x2c,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x40,0x44,0x44,0x48,0x50,0x20,0xc0,0x0,0x0,
-+0x20,0x10,0x10,0x0,0xfc,0xb,0x10,0x38,0x54,0x90,0x10,0x10,0x10,0x17,0x10,0x10,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0,
-+0x1,0x21,0x11,0x11,0x1,0x2,0xf4,0x13,0x11,0x11,0x10,0x10,0x14,0x18,0x13,0xc,0xf0,0x10,0x10,0x10,0x10,0xe,0x0,0xf8,0x8,0x10,0x90,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x3d,0x24,0x0,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,
-+0x0,0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x0,0x0,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x8,0x8,0x8,0x17,0x14,0x34,0x54,0x97,0x14,0x14,0x14,0x17,0x14,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,
-+0x1,0x2,0xf,0x8,0xf,0x8,0xf,0x8,0x8,0x7f,0x0,0x0,0x3,0x1c,0xe0,0x0,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf2,0x14,0x18,0xf0,0x50,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x47,0x34,0x18,0x81,0x62,0x20,0x8,0x17,0x20,0xe1,0x22,0x2c,0x20,0x20,0x20,0x0,0xfe,0x2,0xa4,0x10,0x48,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,0x40,0x40,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x12,0x2a,0x44,0x88,0x0,0x4,0xfe,0x0,0x8,0x7c,0x0,0x4,0xfe,0x54,0x58,0x50,0x48,0x48,0x56,0x64,0x40,
-+0x10,0x10,0x20,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe0,0x40,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x20,0x10,0x10,0xfd,0x9,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x0,0x40,0x30,0x17,0x84,0x68,0x20,0x9,0x11,0x21,0xe1,0x22,0x22,0x24,0x28,0x30,0x80,0x80,0x80,0xfc,0x84,0x88,0xc0,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x2,0x1,0x7f,0x41,0x81,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x0,0x0,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,
-+0x10,0x10,0x13,0x12,0xfc,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x44,0x80,0x0,0x40,0x20,0xfe,0x22,0x20,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x8,0x8,0xff,0x8,0xf,0x8,0xf,0x8,0x8,0xff,0x10,0x12,0x14,0x10,0x1f,0x0,0x20,0x28,0xfc,0x20,0xe0,0x20,0xe0,0x20,0x24,0xfe,0x0,0x20,0x10,0x0,0xf8,0x0,
-+0x8,0x4b,0x49,0x48,0x48,0x48,0x49,0x4a,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0xe,0xf4,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x10,0x10,0x17,0x10,0x5b,0x56,0x53,0x92,0x13,0x12,0x13,0x12,0x1f,0x11,0x12,0x14,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x40,0x31,0x12,0x7,0x80,0x6f,0x21,0xa,0x14,0x29,0xe2,0x20,0x23,0x20,0x21,0x26,0x80,0x20,0x10,0xf8,0x80,0xfc,0x20,0x50,0x8e,0x24,0x40,0x90,0x20,0x40,0x80,0x0,
-+0x1,0x1,0xff,0x1,0x7f,0x0,0x3f,0x21,0x21,0x3f,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x4,0xfe,0x0,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x11,0x11,0x11,0x3f,0x21,0x41,0x41,0x81,0x3f,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x10,0x11,0x51,0x51,0x7d,0x91,0x11,0x11,0x7c,0x13,0x10,0x10,0x1c,0xf0,0x41,0x2,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x40,0xfc,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x8,0x28,0x29,0x29,0x3f,0x4a,0x8c,0xa,0xd,0x38,0xc8,0x8,0x8,0xb,0x8,0x8,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x1,0x7,0x7c,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x20,0xa0,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x13,0x22,0x22,0x4b,0xf8,0x17,0x24,0x44,0xff,0x44,0x4,0x1f,0xe4,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0x42,0x3e,
-+0x1,0x9,0x9,0x11,0x11,0x20,0x3,0xc,0x3f,0xc8,0xf,0x8,0xf,0x8,0xf,0x8,0x0,0x20,0x10,0xc,0x24,0xc0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x0,0x3f,0x20,0x20,0x3e,0x22,0x22,0x4a,0x44,0x80,0x1f,0x12,0x12,0xff,0x0,0xa0,0x90,0xfc,0x80,0x88,0x88,0x50,0x50,0x22,0xd2,0xe,0xf0,0x90,0x94,0xfe,0x0,
-+0x3,0x3c,0x4,0xff,0x4,0x15,0x75,0x15,0x75,0xc,0x16,0x25,0x44,0x4,0x4,0x4,0x84,0x4,0x84,0xd4,0x14,0x14,0xd4,0x14,0xd4,0x14,0x14,0x94,0x84,0x4,0x14,0x8,
-+0x8,0x7c,0x49,0x49,0x49,0x79,0x4a,0x4c,0x48,0x79,0x48,0x48,0x48,0x48,0x4b,0x98,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x3f,0x10,0xc,0x2,0x1,0x2,0xc,0x31,0xc1,0x1f,0x1,0x1,0x1,0xff,0x0,0x0,0xf8,0x10,0x60,0x80,0x0,0xc0,0x30,0xe,0x24,0xf0,0x0,0x0,0x4,0xfe,0x0,
-+0x8,0xb,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x11,0x11,0x20,0x40,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x1,0x11,0x11,0x11,0x1f,0x21,0x41,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x1,0x89,0x51,0x25,0x55,0x95,0x15,0x15,0x35,0x55,0x95,0x15,0x11,0x12,0x54,0x20,0x4,0xfe,0x10,0x10,0x7c,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x10,0x10,
-+0x20,0x10,0x14,0xfe,0x21,0x22,0x3d,0x25,0x25,0x27,0x25,0x25,0x25,0x45,0x94,0x8,0x80,0x80,0x84,0xfe,0x20,0x20,0x24,0x3e,0xe4,0x24,0x34,0x28,0x22,0x2,0xfe,0x0,
-+0x0,0x47,0x34,0x14,0x87,0x64,0x24,0xf,0x11,0x21,0xe9,0x25,0x23,0x21,0x3f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x20,0x20,0x24,0x28,0x30,0x24,0xfe,0x0,
-+0x0,0x20,0x13,0x10,0x0,0x7,0xf0,0x10,0x17,0x10,0x11,0x10,0x14,0x18,0x10,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x14,0xfe,0x10,0x10,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x0,0x3,0x7c,0x4,0x3f,0x24,0x24,0x24,0x3f,0x4,0x4,0x7,0x7c,0x20,0x10,0xf8,0x90,0xd0,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x10,0x92,0xca,0x46,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0xff,0x2,0x2,0x4,0x4,0x8,0x1f,0x28,0x48,0x88,0x8,0x8,0xf,0x8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x15,0x1c,0x30,0xd3,0x12,0x12,0x12,0x12,0x53,0x22,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x4,0x7e,0x44,0x47,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x48,0x28,0x10,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x5f,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x2,0x4,0xa,0x31,0xdf,0x10,0x1f,0x10,0x1f,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x80,0x40,0x30,0xe,0xf4,0x10,0xf0,0x10,0xf8,0x10,0x20,0xc0,0x30,0x18,0x8,
-+0x20,0x20,0x20,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x21,0x24,0x28,0x30,0x23,0x1,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x24,0x3e,0xc2,0x0,
-+0x2,0x1,0x7f,0x48,0x86,0x2,0x10,0xc,0x4,0xff,0x1,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0xfe,0x2,0x84,0x80,0x80,0x80,0x84,0xfe,0x0,0x40,0x20,0x10,0xc,0x4,
-+0x20,0x13,0x12,0x2,0x2,0xf2,0x12,0x12,0x13,0x12,0x10,0x15,0x19,0x12,0x4,0x8,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x20,0x10,0x8,0x4,0x4,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x9,0x5,0x2,0x5,0x8,0x30,0xc0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x80,0x60,0x1e,0x4,
-+0x10,0x10,0x10,0x1f,0x11,0x21,0x41,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x20,0x1c,0x8,
-+0x10,0x10,0x1f,0x20,0x27,0x64,0xa4,0x24,0x27,0x24,0x22,0x21,0x20,0x21,0x26,0x28,0x40,0x44,0xfe,0x40,0xfc,0x44,0x44,0x44,0xfc,0x44,0x40,0x80,0xc0,0x30,0xe,0x4,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x24,0x22,0x3f,0x20,0x21,0x22,0x44,0x48,0x90,0x0,0x4,0xfe,0x4,0x4,0xfc,0x84,0x90,0xa4,0xfe,0x80,0xc0,0xa0,0x90,0x8e,0x84,0x80,
-+0x8,0xfc,0x8,0x49,0x49,0x49,0x49,0x49,0x7d,0x4,0x4,0x1c,0xe4,0x44,0x15,0xa,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x20,0xa0,0x40,0x60,0x90,0xe,0x4,
-+0x10,0x10,0x10,0x10,0xfc,0x25,0x27,0x24,0x24,0x49,0x29,0x11,0x29,0x45,0x85,0x1,0x40,0x40,0x40,0x80,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x3e,0x8,0x8,0x8,0x9,0xe,0x70,0x20,0x0,0x80,0xa0,0x90,0x84,0xfe,0x80,0x80,0x80,0x80,0x40,0x40,0x20,0x22,0x12,0xa,0x4,
-+0x0,0x3f,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x9,0x19,0x21,0x41,0x1,0x5,0x2,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x20,0x18,0xc,0x4,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,
-+0x1,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x1f,0x0,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x8,0xfc,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x10,0x10,0x40,0x20,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x1,0x1,0xff,0x1,0x3f,0x21,0x3f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x5,0x2,0x0,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x8,0xfe,0x8,0xf8,0x8,0x0,0x0,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x14,0x1b,0x31,0xd1,0x11,0x11,0x11,0x17,0x52,0x20,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0xe0,0x20,0x10,0x10,0x10,0xd2,0x12,0xa,0x4,
-+0x8,0x7e,0x8,0x1c,0x68,0xa,0x19,0xff,0x0,0x3f,0x0,0x3f,0x0,0x1f,0x10,0x1f,0x8,0xf0,0x80,0xfc,0x90,0x90,0x14,0xfe,0x0,0xf8,0x0,0xf8,0x0,0xf0,0x10,0xf0,
-+0x2,0x42,0x22,0x2f,0x2,0x2,0xe3,0x26,0x2a,0x22,0x22,0x2b,0x24,0x50,0x8f,0x0,0x4,0x78,0x40,0xc0,0x40,0x7e,0x48,0x48,0x48,0x48,0x88,0x8,0x8,0x6,0xfc,0x0,
-+0x8,0x8,0x7d,0x8,0x1c,0xe9,0x8,0x29,0x12,0x2,0x7f,0x2,0x4,0x8,0x10,0x60,0x40,0x48,0xfc,0x48,0x48,0x88,0xca,0x2a,0x6,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x0,0xff,0x1,0x9,0x9,0x9,0x15,0x23,0x40,0xe0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x4,0xfe,0x0,0x20,0xf0,0x0,0x0,0x6,0xfc,
-+0x0,0x0,0x7b,0x48,0x4f,0x48,0x49,0x4a,0x4c,0x48,0x4b,0x7a,0x4b,0x2,0x3,0x2,0x80,0x88,0xf0,0xa4,0xfe,0x80,0xf0,0x82,0x7e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x2,0x2,0x7b,0x4d,0x48,0x48,0x4f,0x48,0x4a,0x4a,0x4a,0x7d,0x48,0x0,0xf,0x0,0x10,0x10,0xde,0x28,0x84,0x0,0xfc,0x40,0x48,0x48,0x48,0x54,0xe2,0x40,0xfe,0x0,
-+0x0,0x47,0x30,0x10,0xf,0x0,0xf0,0x13,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x38,0xc0,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0,
-+0x8,0x8,0x8,0x10,0x10,0x3f,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x10,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x10,0x17,0x10,0x12,0x11,0x11,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x10,0xfc,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x4,0xf9,0x10,0x54,0x38,0x10,0xfe,0x13,0x30,0x39,0x54,0x50,0x93,0x10,0x10,0x10,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x20,0x20,0x20,0x3c,0x25,0x4a,0x41,0xa1,0x21,0x21,0x21,0x25,0x29,0x31,0x20,0x0,0x80,0x80,0x84,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x0,0x20,0x3f,0x21,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x24,0x28,0x30,0x60,0x0,0x20,0xf0,0x0,0x0,0x0,0x0,0x8,0xfc,0x80,0x80,0x40,0x40,0x22,0x12,0xa,0x6,
-+0x2,0x1,0x0,0xff,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x0,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,
-+0x10,0x10,0x10,0x13,0x58,0x54,0x57,0x90,0x10,0x17,0x10,0x12,0x11,0x11,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x10,0xfc,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x1,0x7f,0x40,0x80,0x3f,0x4,0x8,0x1f,0x1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x0,0x0,0xfe,0x2,0x14,0xf8,0x0,0x20,0xf0,0x10,0x0,0xf0,0x0,0x8,0xfc,0x0,
-+0x20,0x13,0x12,0x2,0xfe,0xa,0x12,0x32,0x5a,0x96,0x12,0x10,0x11,0x11,0x12,0x14,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x68,0xa8,0xa0,0x22,0x22,0x1e,0x0,
-+0x0,0x40,0x20,0x20,0xf,0x0,0xe0,0x27,0x21,0x21,0x21,0x21,0x29,0x37,0x22,0x0,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0xe0,0x20,0x10,0x10,0x10,0xd2,0x12,0xa,0x4,
-+0x8,0x8,0x8,0x48,0x48,0x49,0x49,0x4a,0x48,0x58,0x68,0x48,0x8,0x8,0x9,0xe,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x0,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x5,0x2,0x10,0xf8,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x4,0xff,0x1,0x2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x20,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x2,0x1,0x7f,0x40,0x80,0x0,0x0,0x7f,0x0,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x24,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x2,0x2,0x7f,0x2,0x3f,0x4,0xff,0x8,0x8,0x17,0x10,0x22,0x41,0x81,0x0,0x0,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x13,0x10,0x11,0xfc,0x13,0x12,0x1c,0x31,0xd1,0x10,0x10,0x10,0x10,0x51,0x26,0xc,0xf0,0x0,0x24,0xa8,0xfe,0x2,0x4,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x9,0x8,0xf,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x3f,0x11,0x9,0x9,0x7f,0x40,0x80,0x1f,0x8,0x4,0x2,0x1,0x6,0x18,0x60,0x78,0x80,0x10,0x10,0x20,0xfe,0x2,0x4,0xf0,0x20,0x40,0x80,0x0,0xc0,0x3c,0x8,
-+0x1,0x0,0x3f,0x22,0xac,0x68,0x2e,0x28,0x2f,0x60,0xaf,0x22,0x21,0x40,0x83,0x1c,0x0,0x88,0xfc,0x80,0xb8,0x88,0xb8,0x88,0xf8,0x80,0xf0,0x20,0x40,0x80,0x60,0x1c,
-+0x8,0x4,0x3f,0x21,0x3f,0x21,0x3f,0x0,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x20,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0xff,0x4,0x0,0xfd,0x8,0x10,0x51,0x5c,0x50,0x50,0x5e,0xf0,0x41,0x2,0x40,0x44,0xfe,0x40,0x24,0xfe,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xaa,0xaa,0x26,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x48,0x88,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x30,0x39,0x54,0x50,0x90,0x10,0x10,0x11,0x12,0x14,0x40,0x20,0x24,0xfe,0x20,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0xaa,0x2a,0x26,0x20,
-+0x0,0xa,0xfe,0x23,0x22,0x3c,0x48,0x4f,0x48,0xb0,0x11,0x22,0x44,0x88,0x0,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xc0,0xe0,0x50,0x4e,0x44,0x40,0x40,0x40,
-+0x10,0x13,0x10,0x10,0xfc,0x10,0x17,0x18,0x30,0xd0,0x10,0x10,0x10,0x10,0x51,0x20,0x0,0xf8,0x10,0xa0,0x40,0x40,0xfe,0x42,0x44,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x20,0x20,0x28,0xfd,0x22,0x45,0x50,0x93,0xfa,0x13,0x3a,0xd3,0x12,0x12,0x12,0x12,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0xc4,0x54,0xd4,0x54,0xd4,0x54,0x44,0x44,0xcc,
-+0x8,0xa,0xf,0x8,0x8,0xa,0xff,0x8,0x8,0x2c,0x2b,0x49,0x48,0x88,0x29,0x12,0x0,0x0,0x0,0xfc,0x84,0x84,0x48,0x48,0x48,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x8,0x8,0x14,0x22,0x41,0xbe,0x9,0x8,0x7f,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x0,0xfc,0x4,0x48,0x28,0x10,0xfe,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x42,0x33,0x12,0x82,0x62,0x2f,0xa,0x12,0x27,0xea,0x32,0x22,0x2a,0x24,0x21,0x0,0x0,0x80,0x7c,0x44,0x44,0xc4,0x44,0x28,0x28,0x90,0x10,0x28,0x46,0x84,0x0,
-+0x0,0x0,0x3c,0xb,0x10,0x10,0x10,0x5d,0x50,0x50,0x50,0x50,0x5c,0xf1,0x42,0x4,0x40,0x20,0x24,0xfe,0x20,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0xaa,0x2a,0x26,0x20,
-+0x2,0x2,0x2,0x7f,0x2,0x2,0x2,0x2,0xff,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x10,0xc,0xe4,0x20,0x20,0x20,0x20,0xfc,0x4,0x4,0x4,0x4,0x28,0x10,0x0,
-+0x4,0x7e,0x45,0x54,0x54,0x57,0x54,0x54,0x55,0x54,0x54,0x55,0x28,0x24,0x44,0x83,0x20,0x28,0xfc,0x20,0x20,0xfe,0x82,0x54,0x10,0x90,0x14,0xfe,0x20,0x50,0x8c,0x4,
-+0x10,0xa,0xff,0x0,0x7f,0x42,0x7e,0x0,0x7e,0x4,0x8,0x1e,0xe8,0x9,0x2a,0x14,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xc8,0x68,0x58,0x88,0x89,0x9,0x3,0x0,
-+0x8,0xff,0x0,0x7e,0x42,0x7e,0x0,0x7e,0x4,0x8,0x7c,0x9,0x1a,0x44,0x42,0x82,0x40,0x40,0x48,0xfc,0x48,0x48,0xc8,0x48,0xa8,0x8a,0x8a,0x6,0x0,0x88,0x46,0x42,
-+0x4,0xff,0x4,0x3f,0x24,0x3f,0x2,0x3f,0x2,0xff,0xc,0x1f,0x30,0xdf,0x10,0x1f,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x20,0xf0,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x1f,0x10,0x1f,0x10,0x1f,0x2,0x3f,0x2,0xff,0x4,0xf,0x38,0xcf,0x8,0xf,0x8,0xf0,0x10,0xf0,0x14,0xf8,0x20,0xf0,0x84,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0xb,0x7e,0x4a,0x4b,0x48,0x4b,0x78,0x4f,0x48,0x49,0x49,0x7b,0x4d,0x1,0x1,0x4,0xfe,0x94,0x94,0xfc,0x48,0xfc,0x50,0xfe,0x40,0xfc,0x4,0xfc,0x4,0xfc,0x4,
-+0x3f,0x24,0x24,0x3f,0x2,0x3f,0x2,0xff,0x3,0xc,0x3f,0xc8,0xf,0x8,0xf,0x8,0xf8,0x48,0x48,0xf8,0x20,0xf0,0x44,0xfe,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x3f,0x24,0x24,0x3f,0x10,0x3f,0x42,0xbf,0x22,0x22,0x3f,0x2,0x3,0x7e,0x20,0x8,0xfc,0x48,0x48,0xf8,0x4,0xfe,0x4,0xe4,0x24,0x24,0xe4,0x24,0xf4,0x14,0x8,
-+0x0,0x3f,0x1,0xff,0x5,0x9,0x32,0x4,0x9,0x39,0xc5,0x3,0xd,0x31,0x5,0x2,0xf0,0x0,0x4,0xfe,0x40,0x30,0x90,0x40,0x30,0x2e,0x44,0x80,0x60,0x18,0x8,0x0,
-+0xc,0x71,0x40,0x7c,0x40,0x7f,0x2,0x52,0x4a,0x42,0x52,0x4a,0x42,0x73,0xc6,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x90,0x50,0x10,0x90,0x50,0x10,0x8a,0xa,0x6,
-+0x3f,0x20,0x3f,0x20,0x2f,0x20,0x2f,0x28,0x2f,0x20,0x3f,0x50,0x50,0x57,0x90,0x10,0xf8,0x8,0xf8,0x0,0xf8,0x80,0xf8,0x88,0xf8,0x84,0xfe,0x84,0x94,0xf4,0x14,0x8,
-+0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x1,0x0,0x40,0x30,0x10,0x4,0xfe,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x0,
-+0x0,0x40,0x20,0x20,0xf,0x0,0xe1,0x22,0x24,0x28,0x20,0x20,0x20,0x50,0x8f,0x0,0x80,0xa0,0x90,0x80,0xfc,0x80,0xc0,0xa0,0x98,0x88,0x80,0x80,0x80,0x6,0xfc,0x0,
-+0x10,0x10,0x10,0x17,0xfc,0x14,0x32,0x3a,0x51,0x51,0x92,0x12,0x14,0x18,0x10,0x10,0x8,0x8,0x8,0xc8,0x7e,0x48,0x88,0xa8,0x18,0x8,0x88,0x48,0x48,0x8,0x28,0x10,
-+0x1,0x1,0xff,0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x23,0x5,0x9,0x31,0xc1,0x1,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x88,0x40,0x30,0xe,0x4,0x0,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x28,0x26,0x22,0x20,0x20,0x20,0x21,0x42,0x84,0x80,0xa0,0x90,0xfc,0x80,0x80,0x88,0x48,0x50,0x50,0x20,0x60,0x90,0x12,0xa,0x6,
-+0x4,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x7,0x1,0x3f,0x8,0x8,0x4,0xff,0x0,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,0x10,0xf8,0x20,0x20,0x44,0xfe,0x0,
-+0x7f,0x49,0x7f,0x49,0x7f,0x8,0x7f,0x8,0xf,0x79,0x1,0x3f,0x1,0x1,0xff,0x0,0x7c,0x4,0x28,0x10,0xfe,0x12,0x14,0x10,0x50,0x20,0x0,0xf8,0x0,0x4,0xfe,0x0,
-+0x1,0x0,0x3f,0x20,0x22,0x22,0x3f,0x22,0x22,0x22,0x23,0x22,0x40,0x4a,0x89,0x11,0x0,0x84,0xfe,0x0,0x20,0x24,0xfe,0x20,0x20,0x20,0xe0,0x20,0x0,0x48,0x26,0x22,
-+0x8,0x49,0x2a,0x8,0xff,0x19,0x2c,0x4a,0x10,0xfe,0x22,0x22,0x14,0x18,0x25,0x42,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x2,0x42,0x3f,0x22,0x82,0x4f,0x4a,0xa,0x1f,0x22,0xe7,0x2a,0x32,0x22,0x22,0x23,0x10,0x90,0xd0,0x10,0xbe,0xc2,0x94,0x90,0x90,0x10,0x10,0xa8,0x28,0x48,0x86,0x4,
-+0x10,0x10,0x10,0xfe,0x22,0x22,0x14,0x8,0x14,0x62,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,0x0,0x10,0x88,0xa4,0x24,0xe0,
-+0x0,0x3f,0x20,0x20,0x3f,0x22,0x22,0x3f,0x32,0x32,0x52,0x52,0x53,0x92,0x2,0x2,0x44,0xe4,0x44,0x54,0xd4,0x14,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0x84,0x14,0x8,
-+0x0,0x7f,0x2,0x3f,0x24,0x24,0x24,0x22,0x2,0xff,0x4,0x8,0x4,0x3,0xc,0x30,0x8,0xfc,0x0,0xf8,0x48,0x48,0x48,0x18,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x10,0x13,0x10,0xfc,0x12,0x15,0x1a,0x30,0xd0,0x17,0x10,0x10,0x10,0x50,0x20,0x40,0x24,0xfe,0x20,0x48,0xf2,0x24,0x52,0xf8,0x20,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x2,0x1,0x7f,0x0,0x1f,0x10,0xff,0x10,0x1f,0x4,0x9,0x18,0x28,0x4a,0x8c,0x8,0x0,0x8,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x8,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x41,0x80,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x28,0x12,0x2,0xfe,
-+0x8,0x8,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x9,0x11,0x11,0x20,0x40,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x10,0x10,0x10,0x11,0xfe,0x14,0x33,0x38,0x54,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0xfe,0x14,0x13,0x1c,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0x8,0x7e,0x8,0x1c,0x2a,0x48,0x8,0x8,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x4,0xfe,0x84,0xfc,0x84,0xfc,0x84,0xfc,0x84,
-+0x0,0x0,0xfd,0x4,0x44,0x44,0x28,0x28,0x10,0x10,0x28,0x28,0x44,0x44,0x81,0x6,0x0,0x4,0xfe,0x84,0x84,0x84,0x88,0x48,0x48,0x50,0x20,0x30,0x50,0x88,0xe,0x4,
-+0x1,0x1,0xff,0x1,0x29,0x11,0x29,0x1,0x29,0x11,0x29,0x2,0x4,0x8,0x30,0xc0,0x0,0x4,0xfe,0x0,0x28,0x10,0x28,0x0,0x28,0x10,0x28,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x20,0x11,0x11,0x3,0x5,0xf1,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x80,0xa0,0x14,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x7d,0x5,0x5,0x9,0x9,0x11,0x21,0x41,0x81,0x5,0x2,0x0,0x0,0x0,0x8,0x18,0x20,0xc0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x0,
-+0x0,0x8,0x7b,0x48,0x48,0x4f,0x79,0x49,0x4f,0x79,0x49,0x49,0x4f,0x78,0x48,0x3,0x0,0x18,0xe0,0x40,0x48,0xfc,0x50,0x54,0xfe,0x50,0x50,0x50,0xfc,0x40,0x50,0xf8,
-+0x8,0x1d,0xf0,0x10,0x11,0xfd,0x11,0x39,0x35,0x51,0x90,0x10,0x10,0x10,0x11,0x12,0x0,0x4,0x88,0x50,0xfc,0x4,0x4,0x4,0xfc,0x54,0x50,0x50,0x92,0x92,0xe,0x0,
-+0x0,0x8,0x7c,0x48,0x49,0x4b,0x48,0x48,0x48,0x48,0x49,0x79,0x4a,0x2,0x4,0x8,0x40,0x40,0x80,0x80,0x8,0xfc,0x94,0x90,0x90,0x90,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x8,0x7f,0x49,0x48,0x4b,0x7a,0x4d,0x49,0x7a,0x4d,0x48,0x48,0x79,0x4a,0x0,0x8,0x3c,0xc0,0x24,0xa8,0xfe,0x2,0x4,0xde,0x44,0x54,0x94,0xbe,0x4,0x4,0x4,
-+0x0,0x47,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x44,0x84,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x0,0x3f,0x11,0x9,0x7f,0x48,0x88,0x1e,0x12,0x22,0x54,0xd,0x8,0x10,0x20,0x40,0x78,0x80,0x10,0x20,0xfe,0x22,0x24,0xf8,0x20,0xa0,0xa8,0xfc,0x20,0x20,0x20,0x20,
-+0x0,0x22,0x11,0x10,0x3,0x2,0xf2,0x12,0x13,0x12,0x10,0x10,0x15,0x19,0x12,0x4,0x0,0x8,0x10,0xa0,0xf8,0x8,0x8,0x8,0xf8,0xa8,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x8,0xfd,0x10,0x10,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x25,0x3c,0x24,0x0,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x41,0x22,0x14,0xff,0x8,0x49,0x49,0x49,0x49,0x49,0x7f,0x9,0x8,0x10,0x21,0x42,0x4,0x7e,0x44,0xc4,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x84,0x84,0x14,0x8,
-+0x10,0x10,0x13,0x16,0x5a,0x52,0x52,0x93,0x10,0x10,0x10,0x29,0x26,0x44,0x80,0x0,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x22,0x22,0x7f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0xff,0x0,0x15,0x22,0x40,0x8,0x1c,0x60,0x40,0x40,0x40,0x7e,0x48,0x48,0x48,0x48,0x48,0x88,0x8,0x8,0x8,
-+0x24,0x24,0x2f,0x24,0xfc,0x27,0x2c,0x34,0x27,0xe4,0x24,0x3f,0x20,0x24,0xa8,0x40,0x80,0x8c,0xf0,0xa0,0xa0,0xa4,0xbe,0xa8,0xa8,0xa8,0xa8,0xe8,0x28,0xa8,0x48,0x8,
-+0x4,0x14,0x7f,0x54,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x7f,0x50,0x4,0x8,0x0,0x80,0x8c,0xf0,0xa0,0xa0,0xa4,0xbe,0xa8,0xa8,0xa8,0xa8,0xe8,0x28,0xa8,0x48,0x8,
-+0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x2,0x51,0x50,0x90,0xf,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x88,0x96,0x12,0xf0,
-+0x4,0xe,0xf8,0x8,0xa,0xff,0x8,0x1c,0x1a,0x28,0x48,0x89,0x9,0xb,0x8,0x8,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x40,0x80,0x80,0x80,0x8,0x4,0xfe,0x2,0x0,
-+0x0,0x3f,0x0,0x0,0xff,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x88,0xc8,0x88,0x88,0x88,0x88,0x88,0x88,0x28,0x10,
-+0x8,0x8,0x8,0x10,0x10,0x22,0x7e,0x4,0x8,0x10,0x20,0x7e,0x0,0x0,0xff,0x0,0x10,0x10,0x10,0x20,0x20,0x44,0xfc,0x8,0x10,0x20,0x40,0xfc,0x0,0x4,0xfe,0x0,
-+0x0,0xff,0x8,0x8,0x10,0x1f,0x21,0x21,0x62,0x92,0xc,0x4,0x8,0x10,0x20,0x40,0x4,0xfe,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x4,0x3e,0x21,0x24,0x3f,0x20,0x25,0x3e,0x20,0x21,0xff,0x10,0x25,0x7e,0x2,0x0,0x20,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x0,0x0,0x7f,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x2,0x3f,0x22,0x22,0x3e,0x0,0x7f,0x55,0x55,0x55,0x7f,0x55,0x55,0x55,0x55,0x43,0x4,0x7e,0x4,0x4,0xfc,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x0,0x0,0x7f,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x3c,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x8,0xb,0x8,0x10,0x17,0x30,0x50,0x93,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x4,0x14,0x8,
-+0x10,0x11,0x10,0x20,0x24,0x64,0xa4,0x24,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x21,0x0,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x8,0x10,0x90,0x20,0x28,0x46,0x82,0x0,
-+0x20,0x23,0x20,0x3c,0x27,0x48,0x40,0xa3,0x22,0x22,0x22,0x26,0x2b,0x32,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0xf4,0x24,0x24,0x24,0x24,0xe4,0x4,0x14,0x8,
-+0x0,0x7f,0x40,0x40,0x40,0x40,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x39,0x36,0x54,0x50,0x90,0x10,0x11,0x13,0x10,0x10,0x10,0x90,0x90,0x90,0x8,0x8,0x4,0x42,0x40,0x40,0x80,0x88,0x4,0xfc,0x4,0x0,
-+0x8,0x8,0x18,0x24,0x43,0x82,0x7f,0x10,0x1f,0x10,0x1f,0x10,0x10,0xff,0x0,0x0,0x20,0x20,0x50,0x88,0x6,0x0,0xfc,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x10,0x10,0x10,
-+0x8,0x8,0x8,0x8,0x14,0x14,0x22,0x22,0x41,0x80,0x2a,0x29,0x28,0x48,0x7,0x0,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0,
-+0x0,0x2b,0x28,0x28,0x45,0x53,0x91,0x11,0x21,0x21,0x29,0x45,0x7c,0x4,0x0,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x2,0x41,0x30,0x17,0x0,0x0,0xf0,0x1f,0x10,0x10,0x10,0x10,0x11,0x2a,0x44,0x3,0x8,0x10,0xa0,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0xa0,0x18,0x8,0x6,0xfc,
-+0x2,0x1,0x7f,0x40,0x81,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x0,0x0,0xfe,0x2,0x4,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,0x0,0x0,
-+0x0,0x40,0x31,0x11,0x1,0x2,0xf2,0x14,0x18,0x10,0x10,0x10,0x15,0x1b,0x10,0x0,0x40,0x20,0x20,0x20,0x10,0x8,0xe,0x44,0x40,0x40,0x80,0x90,0x8,0xf8,0x8,0x0,
-+0x0,0x47,0x20,0x20,0x0,0x7,0xe4,0x24,0x27,0x24,0x24,0x27,0x2c,0x34,0x24,0x4,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x30,0xd3,0x10,0x10,0x10,0x10,0x50,0x23,0x24,0xae,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x10,0x3d,0x25,0x35,0x2d,0x25,0x25,0xfc,0x27,0x34,0x2c,0x44,0x44,0x94,0xb,0x24,0xae,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x22,0x2a,0x27,0x22,0xff,0x22,0x37,0x2a,0x62,0xbf,0x24,0x28,0x25,0x22,0xa5,0x48,0x10,0x90,0x10,0x14,0xbe,0x44,0x24,0xa4,0x28,0xe8,0x90,0x90,0x28,0x28,0x46,0x84,
-+0x2,0x22,0xff,0xa2,0xa2,0xaf,0xaa,0xaa,0xaf,0xa2,0xa7,0xea,0x92,0x2,0x2,0x3,0x10,0x90,0xd0,0x10,0xbe,0xc2,0x94,0x90,0x90,0x10,0x10,0xa8,0x28,0x48,0x86,0x4,
-+0x8,0x8,0xff,0x8,0xa,0x2,0x3f,0x2,0x2,0x22,0x24,0x44,0x8,0x10,0x20,0x40,0x20,0x24,0xfe,0x20,0x20,0x10,0xf8,0x10,0x10,0x18,0x16,0x12,0x10,0x10,0x50,0x20,
-+0x4,0xfe,0x29,0x28,0xfe,0xaa,0xab,0xaa,0xae,0xc2,0x82,0xff,0x82,0xfe,0x82,0x0,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xae,0x24,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x11,0x22,0x24,0x60,0xa1,0x22,0x24,0x2b,0x22,0x22,0x22,0x22,0x23,0x22,0x0,0x10,0xc,0x44,0x40,0xa0,0x10,0xe,0x4,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x7f,0x1,0x3f,0x1,0xff,0x4,0x1f,0x1,0x2,0x1f,0x1,0x9,0x15,0x22,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x20,0xc0,0x0,0x20,0xf0,0x0,0x20,0x18,0x8,
-+0x0,0x40,0x37,0x10,0x7,0x4,0xf4,0x17,0x14,0x10,0x11,0x12,0x14,0x28,0x47,0x0,0x40,0x44,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0xe0,0x58,0x48,0x40,0x46,0xfc,0x0,
-+0x0,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x1,0x11,0x9,0xff,0x5,0x9,0x31,0xc1,0x1,0x8,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0x10,0x24,0xfe,0x40,0x30,0xe,0x4,0x0,
-+0x10,0x1f,0x10,0x27,0x24,0x64,0xa7,0x20,0x22,0x21,0x2f,0x21,0x22,0x24,0x28,0x20,0x4,0xfe,0xa0,0xfc,0xa4,0xa4,0xfc,0x40,0x48,0x50,0xfe,0x50,0x48,0x46,0x44,0x40,
-+0x22,0x14,0xff,0x8,0x2a,0x2a,0x2a,0x3e,0x8,0x11,0x21,0x7f,0x1,0x1,0xff,0x0,0x4,0x7e,0xc4,0x7c,0x44,0x7c,0x44,0x44,0x94,0x8,0x0,0xfc,0x0,0x4,0xfe,0x0,
-+0x48,0x25,0x20,0x1f,0x82,0x4a,0x4a,0xa,0x1a,0x2a,0xef,0x22,0x22,0x24,0x28,0x21,0x84,0x3e,0x24,0xe4,0x24,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0x44,0x44,0x94,0x8,
-+0x2,0x1,0x7f,0x40,0x88,0xf,0x8,0x10,0x13,0x32,0x52,0x93,0x12,0x12,0x13,0x12,0x0,0x0,0xfe,0x2,0x4,0xfe,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x43,0x32,0x12,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x16,0x1a,0x14,0x8,0x0,0x1c,0xe0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x60,0x30,0x2c,0x24,0x20,0x20,
-+0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x21,0x25,0x25,0x25,0x29,0x21,0x41,0x81,0x0,0x8,0xfc,0x8,0xfe,0x8,0xf8,0x0,0x8,0x48,0x48,0x28,0x28,0x8,0x8,0x8,
-+0x4,0xfe,0x28,0x28,0xff,0xaa,0xaa,0xab,0xae,0xc2,0x83,0xfe,0x82,0xfe,0x82,0x1,0x20,0x20,0x40,0x84,0xfe,0x48,0x86,0x42,0x78,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x8,0xff,0x8,0x4,0x7e,0x0,0x4,0xfe,0x8,0x2c,0x2a,0x48,0x89,0x28,0x10,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0x4,0xfe,0x10,0x58,0x56,0x92,0x10,0x50,0x20,
-+0x20,0x3e,0x49,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x8,0xff,0x8,0x8,0x10,0x20,0x80,0xfc,0x20,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x1f,0x10,0x10,0x1f,0x1,0x1,0x3f,0x21,0x21,0x3f,0x1,0x1,0x1,0x7f,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x10,0xfc,0x4,0x0,
-+0x0,0x78,0x4f,0x51,0x51,0x62,0x55,0x48,0x4b,0x4a,0x6b,0x52,0x43,0x42,0x42,0x42,0x80,0x84,0xfe,0x0,0xf8,0x40,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x0,0x78,0x4a,0x51,0x51,0x60,0x57,0x49,0x49,0x49,0x69,0x51,0x41,0x41,0x42,0x44,0x20,0x24,0xfe,0x20,0x44,0xfe,0x44,0x7c,0x44,0x7c,0x44,0x44,0x54,0x48,0x80,0x7e,
-+0x10,0x17,0x20,0x22,0x41,0xf8,0x10,0x2f,0x41,0xf9,0x42,0x1,0x18,0xe0,0x41,0x6,0x1c,0xe0,0x0,0x48,0x50,0x20,0x84,0xfe,0x8,0x8,0x10,0x10,0xa0,0x40,0xb0,0x8,
-+0x0,0x7d,0x44,0x76,0x55,0x55,0xfe,0x83,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x56,0x48,0x20,0xfe,0x40,0x7c,0x90,0x7c,0x0,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x4c,0x80,0x7e,
-+0x0,0x8,0xfd,0x10,0x10,0x21,0x22,0x7c,0xa4,0x27,0x24,0x24,0x24,0x3c,0x20,0x0,0x40,0x20,0xfc,0x88,0x88,0x54,0x22,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x1,0x21,0x21,0x21,0x3f,0x24,0x4,0xf,0x10,0x24,0x42,0x1,0x1,0x3,0x1c,0xe0,0x0,0x8,0x8,0x8,0xf8,0x8,0x0,0xfc,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x8,0x1c,0xf3,0x10,0x11,0xff,0x11,0x31,0x39,0x54,0x51,0x90,0x12,0x12,0x14,0x10,0x20,0x24,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x28,0xfc,0x40,0xa4,0xa2,0x8a,0x78,
-+0x2,0x81,0x60,0x2f,0x1,0x2,0xe4,0x29,0x22,0x24,0x29,0x22,0x25,0x50,0x8f,0x0,0x10,0x20,0x48,0xfc,0x0,0x88,0xd0,0x60,0x40,0xe0,0x58,0x48,0x40,0x86,0xfc,0x0,
-+0x0,0x78,0x49,0x54,0x52,0x60,0x50,0x4e,0x4a,0x4a,0x6a,0x52,0x42,0x45,0x48,0x40,0x44,0x28,0xfe,0x20,0x40,0xa4,0x38,0x50,0x98,0x34,0x54,0x90,0x30,0x6,0xfc,0x0,
-+0x1,0x21,0x21,0x3f,0x1,0x41,0x7f,0x0,0x3f,0x0,0x0,0xff,0x9,0x11,0x25,0x2,0x0,0x8,0x8,0xf8,0x0,0x4,0xfc,0x0,0xf8,0x0,0x4,0xfe,0x20,0x18,0x8,0x0,
-+0x0,0x7e,0x2,0x4,0x8,0xa,0xc,0x39,0xc9,0xa,0xc,0x8,0x8,0x8,0x28,0x10,0x20,0x20,0x20,0x20,0x20,0xb0,0xa8,0x24,0x26,0x22,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x11,0x11,0x11,0xfd,0x10,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x10,0x50,0x23,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x50,0x8c,0x4,
-+0x10,0x12,0x1f,0x28,0x45,0xbf,0x4,0x4,0xff,0x4,0x4,0x3f,0x4,0x8,0x10,0x60,0x40,0x44,0x7e,0xa0,0x10,0xf0,0x10,0x14,0xfe,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,
-+0x8,0x8,0xff,0x9,0x7f,0x0,0x1f,0x10,0xff,0x10,0x1f,0x9,0x18,0x2a,0xcc,0x8,0x20,0x24,0xfe,0x20,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x8,0x90,0x60,0x1c,0x8,
-+0x10,0x10,0x11,0x13,0xfc,0x10,0x31,0x3a,0x54,0x51,0x92,0x14,0x10,0x10,0x11,0x16,0x40,0x90,0x8,0xfc,0x4,0x88,0x6,0x82,0xf8,0x8,0x90,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x8,0x7d,0x4b,0x48,0x48,0x49,0x4a,0x48,0x49,0x4a,0x7c,0x48,0x0,0x1,0x6,0x40,0x90,0x8,0xfc,0x4,0x88,0x6,0x82,0xf8,0x8,0x90,0x50,0x20,0x50,0x8e,0x4,
-+0x20,0x20,0x27,0x44,0x49,0xf1,0x12,0x26,0x4a,0xfa,0x42,0x2,0x1a,0xe2,0x42,0x2,0x40,0x20,0xfe,0x2,0x4,0xfe,0x20,0x44,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x0,0x9,0xfc,0x10,0x10,0x11,0x11,0x7d,0x11,0x11,0x11,0x1d,0xf0,0x40,0x1,0x6,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x1,0x1,0x3f,0x1,0x7f,0x42,0x84,0xf,0x1,0x2,0x3f,0x1,0x9,0x11,0x25,0x2,0x0,0x10,0xf8,0x0,0xfe,0x2,0x24,0xc0,0x0,0x10,0xf8,0x8,0x20,0x18,0x8,0x0,
-+0x10,0x11,0x10,0x1c,0x20,0x21,0x7d,0x91,0x11,0x7d,0x11,0x11,0x14,0x18,0x11,0x6,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x2,0x7,0x38,0x20,0x20,0x3e,0x22,0x22,0x22,0x3e,0x22,0x20,0x21,0x42,0x84,0x0,0x8,0x1c,0xe0,0x80,0x80,0x84,0xfe,0x88,0x88,0x88,0x88,0x88,0x8,0x8,0x8,0x8,
-+0x20,0x23,0x22,0x23,0x22,0xfb,0x20,0x27,0x20,0x24,0x22,0x39,0xe2,0x44,0x2,0x1,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xbe,0x84,0xa4,0x94,0x8c,0x94,0xa4,0x94,0x8,
-+0x8,0x8,0x8,0x10,0x12,0x32,0x53,0x9e,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x40,0x40,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x68,0x50,0x40,0x42,0x2,0xfe,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x8,0x8,0x8,0x9,0xe,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0xfe,0x2,0x4,0x0,0x20,0x60,0x80,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x25,0x25,0x27,0x25,0x45,0x29,0x11,0x29,0x45,0x84,0x0,0x20,0x20,0x20,0x20,0x24,0x3e,0xe4,0x24,0x24,0x34,0x28,0x20,0x22,0x2,0xfe,0x0,
-+0x21,0x21,0x27,0x21,0x20,0xf8,0x21,0x22,0x2d,0x20,0x23,0x3a,0xe2,0x42,0x3,0x2,0x10,0x10,0xfc,0x10,0x40,0xa0,0x10,0xe,0xf4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x8a,0x52,0x2f,0x62,0xaf,0x2a,0x2a,0x6a,0xaf,0x22,0x27,0x2a,0x32,0x22,0xa2,0x42,0x10,0x10,0x9c,0x24,0xc8,0xbe,0xa2,0xaa,0xaa,0x2a,0x2a,0xaa,0x8,0x14,0x22,0x42,
-+0x10,0x12,0x11,0x11,0xfc,0x10,0x17,0x19,0x31,0xd1,0x11,0x11,0x11,0x12,0x54,0x20,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x28,0x28,0x46,0x84,0x0,0x86,0x7c,0x0,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x10,0x13,0x5c,0x51,0x50,0x51,0x5e,0xf0,0x41,0x0,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xdc,0x44,0x54,0xcc,0x54,0x64,0x44,0x54,0x88,
-+0x0,0x7d,0x44,0x44,0x44,0x7d,0x12,0x10,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x41,0x1,0x20,0x24,0xa8,0x70,0xa8,0x26,0x24,0x60,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x27,0x24,0x24,0x3d,0x25,0x25,0x25,0x45,0x95,0x9,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0xff,0x8,0x2,0x4,0x8,0x3f,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x20,0x24,0xfe,0x20,0x0,0x20,0x10,0xf8,0x8,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x10,0xfc,0x11,0x17,0x18,0x30,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x20,0x10,0x8,0xfc,0x4,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x9,0x39,0xc5,0x3,0xd,0x11,0x5,0x2,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0x30,0x4e,0x84,0x60,0x10,0x0,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x10,0x10,0x14,0xfe,0x10,0x10,0x28,0x28,0x28,0x28,0x44,0x54,0x82,0x0,
-+0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x2,0x2,0x4,0x6,0x9,0x31,0xc0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x80,0x80,0x40,0x40,0x30,0xe,0x4,0x0,
-+0x1,0x1,0xff,0x1,0x2,0x4,0xa,0x31,0xc0,0x2,0x29,0x29,0x28,0x48,0x7,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,0x0,0x10,0x8,0x24,0x24,0xe0,0x0,
-+0x0,0x40,0x30,0x10,0x87,0x60,0x20,0x8,0x10,0x20,0xe1,0x21,0x22,0x24,0x28,0x20,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x90,0x48,0x4e,0x4,0x0,
-+0x20,0x23,0x22,0x22,0x22,0xfa,0x22,0x22,0x2f,0x22,0x22,0x3a,0xe2,0x44,0x4,0x8,0x8,0xfc,0x8,0x8,0x88,0x48,0x48,0x8,0xfe,0x8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x20,0x20,0x20,0x2e,0xf3,0x2a,0x2a,0x3a,0x6a,0xa4,0x2a,0x29,0x31,0x20,0xa0,0x40,0x40,0x50,0x44,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x1,0x2,0x6,0x9,0x37,0xc0,0x0,0x1f,0x10,0x11,0x11,0x11,0x12,0x4,0x8,0x30,0x0,0x80,0x40,0x30,0xce,0x44,0x90,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x51,0x19,0x35,0x52,0x92,0x15,0x25,0x28,0x40,0x0,0x80,0x44,0xfe,0x20,0x28,0x7e,0x48,0xc8,0x7e,0x48,0x48,0x7e,0x48,0x48,0x7e,0x40,
-+0x0,0x40,0x30,0x1f,0x81,0x69,0x29,0x6,0x12,0x25,0xe9,0x30,0x20,0x20,0x20,0x20,0x20,0x28,0x20,0x7e,0x48,0xc8,0x7c,0x48,0x48,0x7c,0x48,0x48,0x48,0x7e,0x40,0x40,
-+0x10,0x10,0x13,0x10,0x10,0xfc,0x17,0x10,0x10,0x10,0x10,0x1d,0xf1,0x43,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x40,0x40,0x80,0x90,0x8,0x4,0xfc,0x4,0x0,
-+0x10,0x17,0x10,0x17,0xfd,0x15,0x3d,0x37,0x50,0x53,0x92,0x13,0x12,0x13,0x10,0x1f,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,
-+0x1,0x0,0x1f,0x10,0x92,0x51,0x50,0x11,0x36,0x50,0x92,0x11,0x20,0x21,0x42,0xc,0x0,0x84,0xfe,0x40,0x48,0x50,0xa0,0x10,0x4c,0x40,0x48,0x50,0xa0,0x10,0xe,0x4,
-+0x40,0x3f,0x10,0x7,0x84,0x67,0x20,0xb,0x12,0x23,0xe2,0x23,0x20,0x2f,0x20,0x20,0x4,0xfe,0xa0,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,
-+0x40,0x2f,0x20,0x7,0x4,0xe7,0x20,0x23,0x22,0x23,0x22,0x23,0x28,0x37,0x20,0x0,0x4,0xfe,0xa0,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,
-+0x0,0x40,0x32,0x11,0x0,0x0,0xf1,0x16,0x10,0x12,0x11,0x10,0x14,0x19,0x12,0x4,0x40,0x40,0x48,0x50,0xa0,0x90,0xe,0x44,0x40,0x48,0x50,0xa0,0xa0,0x10,0xe,0x4,
-+0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0xf,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x0,
-+0x4,0xe,0xf0,0x11,0x10,0x7c,0x11,0x10,0xfe,0x10,0x11,0x10,0x10,0x13,0x10,0xf,0x20,0xa4,0xa8,0x30,0x50,0x8c,0x24,0x20,0xa8,0xb0,0x20,0x50,0x8c,0x6,0x2,0xfe,
-+0x20,0x10,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x10,0x17,0x10,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x0,
-+0x0,0x8,0xfd,0x11,0x11,0x20,0x23,0x7c,0xa4,0x25,0x25,0x26,0x24,0x3c,0x25,0x2,0x20,0x20,0x24,0x24,0xfc,0x80,0xfe,0x80,0xa0,0x24,0xa8,0x50,0x50,0x88,0xe,0x4,
-+0x10,0x13,0x12,0x14,0xfc,0x11,0x14,0x18,0x33,0xd0,0x10,0x10,0x11,0x12,0x50,0x20,0x0,0xfe,0x2,0x54,0x88,0x4,0x20,0x24,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20,0x20,
-+0x0,0x8,0x7f,0x4a,0x4a,0x49,0x49,0x48,0x48,0x48,0x48,0x78,0x49,0x2,0x4,0x18,0x0,0x0,0xf8,0x8,0x8,0x10,0x10,0xa0,0xa0,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x1,0x21,0x21,0x3f,0x8,0xff,0x9,0x9,0x15,0x15,0x2a,0x22,0x44,0x84,0x8,0x30,0x0,0x8,0x8,0xf8,0x4,0xfe,0x0,0x10,0x30,0x40,0x80,0x80,0x40,0x20,0x1c,0x8,
-+0x0,0x23,0x18,0x8,0x80,0x60,0x23,0x8,0x10,0x21,0xe1,0x22,0x24,0x29,0x22,0x20,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0x24,0x44,0x44,0x84,0x4,0x28,0x10,
-+0x10,0x10,0x13,0x12,0x13,0xfe,0x13,0x12,0x13,0x12,0x13,0x1d,0xf5,0x45,0x9,0x1,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x13,0x12,0xff,0x12,0x17,0x1a,0x33,0xd2,0x13,0x15,0x15,0x15,0x59,0x21,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x11,0x9,0x7f,0x40,0x9f,0x10,0x10,0x1f,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x0,0x10,0x20,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x1,0x9,0x5,0x7f,0x40,0x8f,0x8,0x8,0xf,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x20,0x40,0xfe,0x2,0xe4,0x20,0x20,0xe0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x8,0x7d,0x48,0x4b,0x4a,0x7d,0x49,0x49,0x49,0x78,0x48,0x49,0x48,0x48,0x8b,0x18,0x20,0x24,0xa8,0xfe,0x2,0xfc,0x4,0x4,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x1,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x20,0x2f,0x28,0x48,0x48,0x8f,0x8,0x0,0x88,0xfc,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x57,0x3a,0x13,0xfe,0x13,0x32,0x3b,0x56,0x53,0x93,0x15,0x15,0x19,0x11,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xa,0x9,0x11,0x10,0x37,0x54,0x94,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x10,0x22,0x79,0x49,0x48,0x7b,0x4a,0x7a,0x4a,0x4a,0xfa,0x2a,0x4a,0x8a,0x2a,0x12,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x84,0x14,0x8,
-+0x0,0x42,0x31,0x11,0x80,0x67,0x24,0xc,0x15,0x25,0xe5,0x25,0x25,0x25,0x24,0x24,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x10,0x12,0x11,0x7d,0x10,0x13,0xfe,0x12,0x52,0x5e,0x52,0x72,0x52,0x48,0x87,0x0,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0xf4,0x94,0x94,0x94,0xf4,0xc,0x6,0xfc,0x0,
-+0x23,0x10,0x40,0x23,0x9,0x71,0x11,0x12,0x14,0x1,0x9,0xa,0x12,0x4,0x18,0x60,0xf0,0x40,0x84,0xfe,0x24,0x24,0x24,0x54,0x88,0x0,0x10,0xa0,0x80,0x60,0x1c,0x8,
-+0x11,0x11,0x11,0x13,0xfc,0x12,0x13,0x1c,0x30,0xd3,0x10,0x12,0x12,0x13,0x50,0x20,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x84,0xa4,0xf4,0x84,0xa4,0xa4,0xe4,0x14,0x8,
-+0x0,0x40,0x37,0x10,0x83,0x60,0x2f,0x9,0x11,0x23,0xe2,0x25,0x28,0x30,0x20,0x20,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfe,0x8,0x8,0xfe,0x8,0x8,0x88,0x88,0x28,0x10,
-+0x40,0x30,0x17,0x0,0x82,0x61,0x20,0xf,0x14,0x24,0xe7,0x24,0x24,0x24,0x27,0x24,0x8,0x3c,0xc0,0x4,0x4c,0x50,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x21,0x23,0x4c,0xf8,0x10,0x21,0x46,0xf8,0x47,0x0,0x19,0xe2,0x45,0x0,0x80,0x80,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0x44,0xfc,0x40,0x50,0x4c,0x44,0x80,
-+0x4,0x4,0xff,0x14,0x1f,0x28,0x4f,0x11,0x21,0xff,0x1,0x11,0x11,0x1f,0x0,0x0,0x40,0x44,0xfe,0x40,0xfc,0x4,0xf4,0x4,0x14,0xfc,0x4,0x14,0x14,0xf4,0x14,0x8,
-+0x10,0x10,0x10,0x10,0xfc,0x12,0x39,0x34,0x51,0x52,0x94,0x11,0x11,0x12,0x14,0x18,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0x41,0x29,0x25,0x5,0x1,0xe3,0x25,0x29,0x21,0x22,0x24,0x28,0x50,0x88,0x7,0x40,0x40,0x48,0x58,0x60,0x40,0x60,0x50,0x50,0x40,0x44,0x44,0x3c,0x0,0x6,0xfc,
-+0x42,0x32,0x13,0x5,0x89,0x63,0x24,0x0,0x1f,0x20,0xe4,0x24,0x27,0x20,0x20,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x84,0x94,0xfc,0x84,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x1,0x79,0x49,0x52,0x55,0x61,0x52,0x48,0x4f,0x48,0x69,0x51,0x41,0x40,0x40,0x40,0x0,0x4,0xfe,0x4,0x24,0xf4,0x44,0x54,0xfc,0x44,0x54,0x54,0xf4,0x4,0x14,0x8,
-+0x0,0x40,0x30,0x10,0x7,0x0,0xf0,0x11,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x8,0x88,0x88,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x1,0x1,0xff,0x2,0x4,0xf,0x18,0x2f,0xc8,0xf,0x8,0xff,0x4,0x8,0x1f,0x0,0x0,0x4,0xfe,0x80,0x40,0xe0,0x10,0xee,0x4,0xe0,0x4,0xfe,0x0,0x20,0xf0,0x10,
-+0x10,0x10,0x50,0x53,0x7c,0x90,0x17,0x18,0x30,0xd7,0x11,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x14,0xfe,0x10,0x90,0x90,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x7a,0x49,0x4b,0x78,0x4f,0x49,0x7a,0x4d,0x48,0x49,0x8a,0x18,0x20,0x24,0xfe,0x20,0x48,0x50,0xfc,0x80,0xfe,0x10,0x4e,0x54,0xe0,0x58,0x48,0xc0,
-+0x0,0x7a,0x49,0x4b,0x48,0x7f,0x49,0x4a,0x4d,0x78,0x49,0x49,0x48,0x4f,0x88,0x18,0x40,0x48,0x50,0xfc,0x80,0xfe,0x10,0xe,0xf4,0x10,0x14,0xfe,0x4,0xe4,0x14,0x8,
-+0x1,0x0,0x1f,0x11,0x91,0x53,0x55,0x10,0x30,0x50,0x93,0x2c,0x20,0x40,0x80,0x0,0x0,0x84,0xfe,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x8e,0x64,0x20,0x80,0x60,0x20,
-+0x11,0x9,0x7f,0x2,0xff,0x4,0x9,0x3f,0xc0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x20,0xfc,0x0,0xfe,0x40,0x20,0xfe,0x4,0xf0,0x0,0xf0,0x0,0xf0,0x10,0xf0,
-+0x12,0x11,0x10,0x13,0xfc,0x10,0x33,0x3a,0x56,0x53,0x90,0x11,0x12,0x14,0x18,0x10,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40,
-+0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x10,0x3f,0x54,0x94,0x14,0x24,0x4a,0x11,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0xa4,0xe4,0xa4,0x84,0x84,0x84,0x94,0x8,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x11,0x11,0x5c,0x51,0x52,0x54,0x5c,0xf1,0x42,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x54,0x88,
-+0x22,0x21,0x38,0x43,0x80,0x78,0x23,0x22,0xfa,0x23,0x20,0x29,0x32,0x24,0x8,0x0,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x19,0x30,0xd7,0x10,0x11,0x11,0x11,0x52,0x24,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x20,0x28,0x3c,0x20,0xa6,0x7c,
-+0x3e,0x23,0x22,0x3e,0x22,0x22,0x3e,0x0,0xff,0x8,0x2a,0x2f,0x28,0x58,0x49,0x87,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0x20,0x58,0x84,0x6,0xfc,
-+0x0,0x7c,0x45,0x44,0x44,0x7f,0x12,0x14,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x40,0x0,0x40,0x20,0xfc,0x88,0x50,0xfe,0x22,0x24,0xfe,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,
-+0x0,0x8,0x7d,0x48,0x48,0x4b,0x4a,0x4c,0x49,0x49,0x49,0x79,0x49,0x1,0x0,0x0,0x40,0x20,0xfc,0x88,0x50,0xfe,0x22,0x24,0xfe,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,
-+0x10,0x10,0x10,0x20,0x2f,0x62,0xa2,0x24,0x24,0x28,0x2b,0x30,0x20,0x20,0x20,0x20,0x80,0x80,0x80,0x88,0xfc,0xa0,0xa0,0x90,0x90,0x88,0xee,0x84,0x80,0x80,0x80,0x80,
-+0x8,0x8,0x7e,0x8,0xfe,0x8,0x14,0x22,0xdf,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x20,0x28,0xfc,0x20,0xfe,0x20,0x50,0x8e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x13,0x78,0x57,0x54,0x5b,0x52,0x53,0x52,0x53,0x50,0x77,0x52,0x3,0x4,0x8,0x50,0xf8,0x40,0xfe,0x2,0xfc,0x48,0xf8,0x48,0xf8,0x0,0xfc,0x44,0x70,0xc0,0x7e,
-+0x10,0x11,0x11,0x11,0x59,0x55,0x51,0x91,0x10,0x11,0x12,0x14,0x10,0x11,0x12,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x54,0x88,
-+0x2,0x41,0x30,0x17,0x80,0x60,0x27,0xc,0x14,0x27,0xe0,0x21,0x22,0x24,0x28,0x20,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40,
-+0x41,0x22,0x14,0x7f,0x9,0x9,0x7f,0x48,0x49,0x7f,0x19,0x29,0x4d,0x8a,0x8,0x8,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xa4,0x24,0x24,0x24,0x4,0x14,0x8,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x24,0x24,0x3f,0x24,0x24,0x24,0x24,0x44,0x87,0x0,0x8,0xfc,0x8,0x8,0xf8,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0x8,0xfc,0x0,
-+0x0,0x7f,0x1,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0xc0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x40,0x37,0x10,0x0,0x8f,0x61,0x21,0xa,0x14,0x28,0xe2,0x22,0x24,0x20,0x22,0x21,0x8,0xfc,0x80,0x84,0xfe,0x20,0x10,0x90,0x8e,0x84,0xd0,0xa8,0xa8,0x88,0x80,0x0,
-+0x10,0x10,0x17,0x10,0x13,0xfe,0x13,0x12,0x13,0x12,0x1f,0xf2,0x4f,0x1,0x3,0x4,0x40,0x44,0xfe,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x0,0x3f,0x21,0x21,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,
-+0x4,0xe,0xf8,0x8,0xb,0x8,0xff,0x8,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x10,0x10,0x17,0x10,0x58,0x54,0x57,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x78,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0xc,0xf3,0x10,0x10,0x13,0xfe,0x10,0x11,0x7d,0x46,0x45,0x45,0x46,0x7c,0x45,0x0,0x8,0xfc,0x40,0x44,0xfe,0x90,0x88,0x48,0x46,0x44,0x48,0x64,0x54,0x54,0x40,0x80,
-+0x8,0x7c,0x48,0x4b,0x4a,0x7a,0x4a,0x4b,0x4a,0x7a,0x4a,0x4f,0x48,0x49,0x8b,0x1c,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0xfc,0x94,0x94,0x94,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x10,0x10,0x10,0xfc,0x12,0x15,0x18,0x31,0xd2,0x14,0x11,0x11,0x12,0x54,0x28,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0,
-+0x8,0xf,0x18,0x24,0x43,0xc,0x30,0xc1,0x1,0x3f,0x1,0x9,0x11,0x21,0x5,0x2,0x0,0xf0,0x20,0x40,0x80,0x60,0x1e,0x4,0x10,0xf8,0x0,0x20,0x18,0x8,0x0,0x0,
-+0x0,0x47,0x31,0x11,0x1,0x2,0xf4,0x1b,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0xf8,0x8,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0,
-+0x8,0x7c,0x48,0x48,0x48,0x7a,0x49,0x48,0x49,0x7a,0x4c,0x49,0x49,0x7a,0x44,0x8,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0,
-+0x4,0x7e,0x44,0x44,0x44,0x7e,0x11,0x10,0x5d,0x52,0x54,0x51,0x5d,0xf2,0x44,0x8,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0,
-+0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x11,0x29,0x45,0x81,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x11,0x11,0x1d,0x21,0x22,0x7c,0x93,0x10,0x7c,0x10,0x10,0x15,0x19,0x12,0x4,0x40,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x82,0x1,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x7a,0x44,0x8,0x0,0x10,0x38,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x13,0x10,0x14,0x58,0x50,0x51,0x96,0x10,0x11,0x10,0x28,0x24,0x40,0x87,0x0,0x0,0xfc,0x8,0x10,0x20,0x58,0x86,0x2,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x40,0x30,0x17,0x0,0x80,0x60,0x20,0x8,0x10,0x20,0xe0,0x20,0x20,0x20,0x21,0x20,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x0,0xfb,0x8,0x10,0x20,0x47,0x78,0x8,0x8,0x48,0x2b,0x10,0x28,0x47,0x80,0x10,0x38,0xc0,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x50,0xf8,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x17,0x20,0x23,0x62,0xa3,0x20,0x2f,0x28,0x33,0x20,0x20,0x20,0x21,0x20,0x80,0x48,0xfc,0x0,0xf8,0x8,0xf8,0x0,0xfe,0x2,0xf4,0x40,0x40,0x40,0x40,0x80,
-+0x2,0x1,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x7f,0x40,0x9f,0x1,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x10,0xf8,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x0,0x3f,0x20,0x3f,0x22,0x24,0x28,0x2f,0x21,0x21,0x2a,0x44,0x4a,0x91,0x20,0x0,0x88,0xfc,0x0,0x1c,0x70,0x10,0x14,0xfe,0x10,0x10,0x10,0x7c,0x0,0x6,0xfc,
-+0x20,0x20,0x2f,0x21,0xf2,0x24,0x28,0x2f,0x31,0xe1,0x29,0x25,0x22,0x25,0xa8,0x50,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x7c,0x0,0x0,0x86,0x7c,
-+0x10,0x20,0x7f,0x48,0x49,0x6a,0x5c,0x4f,0xf8,0x48,0x48,0x6c,0x5a,0x49,0x8a,0x1c,0x0,0xc,0xf0,0x90,0x10,0x14,0x7e,0x90,0x90,0x90,0x90,0xfc,0x80,0x0,0x86,0x7c,
-+0x3,0x40,0x30,0x10,0x3,0x2,0xf2,0x13,0x12,0x12,0x13,0x12,0x12,0x2a,0x44,0x3,0xf8,0x10,0xa0,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x48,0x68,0x50,0x6,0xfc,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xae,0xc2,0x82,0x82,0xfe,0x82,0x82,0xfe,0x82,0x0,0xfe,0x82,0x82,0xfe,0x82,0x82,0xba,0xaa,0xaa,0xaa,0xba,0x82,0x82,0x8a,0x84,
-+0x0,0x0,0x7b,0x49,0x48,0x4f,0x78,0x4b,0x4a,0x7b,0x4a,0x4b,0x48,0x7b,0x40,0xf,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x0,0xf8,0x48,0xf8,0x48,0xf8,0x40,0xf8,0x40,0xfe,
-+0x0,0x7f,0x40,0x40,0x5f,0x40,0x40,0x4f,0x48,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x14,0x8,
-+0x20,0x23,0x3e,0x42,0x82,0x7a,0x22,0x22,0xfa,0x22,0x22,0x26,0x2a,0x32,0x22,0x2,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x2,0x3f,0x22,0x22,0x32,0x2a,0x2a,0x22,0xff,0x22,0x22,0x22,0x22,0x42,0x4a,0x85,0x4,0xc,0x10,0x20,0x40,0x84,0xc,0x10,0xa0,0x42,0x6,0x8,0x10,0x20,0x40,0x80,
-+0x2,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x1,0x7f,0x0,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0xfc,
-+0x20,0x27,0x20,0x20,0xf8,0x27,0x74,0x6c,0xa7,0x24,0x24,0x27,0x24,0x24,0x24,0x24,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x20,0x27,0x20,0x20,0xf8,0x27,0x24,0x2c,0x37,0xe4,0x24,0x27,0x24,0x24,0xa4,0x44,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x10,0x14,0x3e,0x49,0x84,0x3f,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x27,0x20,0x20,0x40,0x44,0xfe,0x20,0x10,0xf8,0x8,0xe8,0x8,0xc8,0x48,0x48,0x48,0xc8,0x28,0x10,
-+0x10,0x10,0x20,0x27,0x48,0xf9,0x12,0x27,0x41,0xf9,0x41,0x1,0x1a,0xe2,0x44,0x8,0x80,0x40,0x48,0xfc,0x80,0x10,0x8,0xfc,0x24,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0x0,0x1f,0x10,0x97,0x50,0x50,0x17,0x34,0x57,0xd4,0x17,0x24,0x24,0x44,0x4,0x0,0x84,0xfe,0x0,0xf8,0xa0,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x10,0x10,0x11,0x22,0x24,0x6b,0xb0,0x27,0x24,0x27,0x24,0x27,0x24,0x24,0x24,0x25,0x80,0x80,0x40,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x1a,0x33,0xd0,0x11,0x10,0x10,0x10,0x51,0x26,0x10,0xf8,0x10,0x10,0x10,0x14,0xe,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x0,0x8,0x6,0x22,0x18,0x8,0x0,0xff,0x0,0x1,0x1,0x2,0x4,0x18,0x60,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0xfe,0x80,0x0,0x60,0x10,0x8,0xc,0x4,
-+0x0,0x43,0x30,0x17,0x0,0x1,0xf2,0x17,0x11,0x11,0x12,0x12,0x14,0x28,0x44,0x3,0x18,0xe0,0x40,0xfc,0xe0,0x50,0x4e,0xf4,0x10,0x38,0x8,0x8,0x50,0x20,0x6,0xfc,
-+0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x78,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x40,0x20,0xf0,0x20,0x20,0x20,0x20,0x24,0x3e,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x3f,0x1,0x1,0xff,0x5,0x9,0x11,0x27,0x44,0x4,0x4,0x8,0x8,0x10,0x60,0xf0,0x0,0x0,0x4,0xfe,0x40,0x20,0x10,0xce,0x44,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x2,0x1,0x7f,0x44,0x88,0x11,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0xfe,0x42,0x34,0x10,0x40,0x24,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x7f,0x44,0x47,0x4c,0x52,0x41,0x42,0x46,0x49,0x70,0x46,0x41,0x40,0x7f,0x40,0x4,0xfe,0x4,0xe4,0x44,0x84,0x4,0x84,0x44,0x3c,0x94,0x4,0x4,0x84,0xfc,0x4,
-+0x8,0x8,0x10,0x27,0x48,0x8,0x17,0x30,0x52,0x92,0x12,0x12,0x15,0x14,0x18,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x48,0x7c,0x40,0x40,0x40,0xc6,0x7c,0x0,
-+0x0,0x40,0x30,0x11,0x2,0x5,0xf0,0x10,0x17,0x10,0x11,0x12,0x14,0x29,0x44,0x3,0x40,0x40,0xa0,0x10,0xe,0xf4,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x86,0xfc,
-+0x0,0x40,0x31,0x12,0x84,0x48,0x57,0x0,0x10,0x2f,0xe0,0x22,0x24,0x28,0x22,0x21,0x80,0x80,0x40,0x20,0x10,0x2e,0xf4,0x80,0x88,0xfc,0x80,0xa0,0x98,0x88,0x80,0x0,
-+0x0,0x3f,0x20,0x3f,0x21,0x2f,0x21,0x3f,0x21,0x22,0x27,0x2c,0x57,0x64,0x87,0x4,0x8,0xfc,0x8,0xf8,0x10,0xe0,0x44,0xfe,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0xf,0x0,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0xf,0x10,0x20,0x7f,0xa1,0x21,0x21,0x3f,0x22,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x88,0xa0,0x90,0x92,0x82,0x7e,0x0,
-+0x0,0x44,0x34,0x14,0x87,0x40,0x4f,0x8,0x17,0x24,0xe4,0x24,0x24,0x24,0x24,0x24,0x40,0x44,0x44,0x44,0xfc,0x0,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x0,0x7f,0x40,0x40,0x40,0x7f,0x41,0x42,0x44,0x48,0x50,0x60,0x42,0x41,0x7f,0x40,0x4,0xfe,0x84,0x84,0x94,0xfc,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x11,0xfd,0x13,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0xa0,0x90,0x84,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xff,0x0,0x0,
-+0xc,0xf1,0x10,0x14,0xfe,0x10,0x38,0x56,0x92,0x38,0x28,0x28,0x2a,0x4c,0x48,0x81,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0x20,0x58,0x44,0x82,0x2,
-+0x0,0x78,0x4c,0x4a,0x48,0x78,0x4e,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4d,0x88,0x18,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x84,0xa8,0x90,0x8c,0xc4,0x80,0x86,0x7c,
-+0x10,0x11,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7c,0x50,0x14,0x1d,0xf5,0x42,0x4,0x0,0x8,0x90,0x8,0xfc,0x8,0x8,0x8,0xf8,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x40,0x34,0x13,0x1,0xfc,0x8,0x17,0x39,0x55,0x91,0x11,0x11,0x11,0x12,0x14,0x10,0x4,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x42,0x54,0x48,0x66,0x42,0x80,0x46,0x3c,
-+0x3,0x42,0x32,0x13,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x13,0x12,0x28,0x44,0x3,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfc,0x8,0xd0,0x20,0x90,0xc,0x4,0x0,0x6,0xfc,
-+0x0,0x3f,0x2,0x2,0xff,0x4,0x4,0x8,0x10,0x2f,0x48,0x88,0x8,0x8,0xf,0x8,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x20,0x10,0xee,0x24,0x20,0x20,0x20,0xe0,0x20,
-+0x1,0x1,0x1,0xff,0x1,0x21,0x21,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x2,0x2,0xfe,0x0,
-+0x7f,0x41,0x7f,0x52,0x7f,0x52,0x7f,0x52,0xa1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x78,0x48,0x4c,0x80,0xfc,0x48,0x30,0x4e,0x84,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x11,0x1d,0x31,0xd7,0x11,0x11,0x11,0x11,0x50,0x20,0x80,0x80,0x84,0xfe,0x20,0x20,0x24,0x3e,0xe4,0x24,0x34,0x28,0x22,0x2,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x14,0x18,0x37,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x10,0x38,0xc0,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x7d,0x48,0x48,0x4b,0x7a,0x4a,0x4a,0x4b,0x7a,0x48,0x48,0x49,0x49,0x8a,0x1c,0x0,0x10,0xa0,0x8,0xfc,0x8,0x8,0x8,0xf8,0xa8,0xa0,0xa0,0x20,0x22,0x22,0x1e,
-+0x10,0x20,0x7c,0x45,0x55,0x46,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x14,0x8,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xe0,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x7c,0x44,0x49,0x49,0x52,0x48,0x48,0x44,0x44,0x44,0x68,0x50,0x40,0x40,0x40,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xe0,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x4,0x7e,0x4,0x24,0x24,0x27,0x24,0x24,0x3e,0x2,0x2,0x1a,0xe2,0x42,0x15,0xa,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x50,0x50,0x50,0x90,0x88,0xe,0x4,
-+0x4,0x7e,0x4,0x25,0x25,0x26,0x24,0x24,0x3e,0x2,0x2,0x1a,0xe2,0x42,0x14,0x8,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xe0,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x20,0x27,0x24,0x25,0xfd,0x26,0x75,0x6d,0xa4,0x24,0x26,0x25,0x24,0x24,0x24,0x24,0x10,0x90,0x94,0x7e,0x10,0x24,0x7e,0xa4,0xa4,0xbc,0xa4,0x24,0x3c,0x24,0x24,0x2c,
-+0x0,0x3f,0x2,0x11,0xd,0x4,0x2,0x2,0xff,0x4,0x8,0x18,0x6,0x1,0x6,0x18,0x78,0x80,0x8,0x18,0x20,0x40,0x0,0x4,0xfe,0x10,0x10,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x10,0x13,0x10,0xfc,0x11,0x15,0x19,0x33,0xd5,0x19,0x11,0x11,0x11,0x51,0x21,0x0,0x4,0xfe,0x80,0x80,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0xb,0x7c,0x48,0x4f,0x49,0x49,0x49,0x4f,0x49,0x49,0x79,0x4f,0x0,0x0,0x7,0x38,0xc0,0x40,0x44,0xfe,0x50,0x50,0x54,0xfe,0x50,0x50,0x54,0xfe,0x40,0x48,0xfc,
-+0x10,0x10,0x10,0x13,0xfa,0x14,0x11,0x1a,0x31,0xd0,0x10,0x11,0x12,0x12,0x52,0x21,0x40,0x20,0x0,0xfe,0x2,0x94,0x8,0x4,0xf8,0x10,0x60,0x80,0x0,0x2,0x2,0xfe,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x4f,0x48,0x48,0x48,0x4f,0x78,0x48,0x0,0xf,0x0,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0x7c,0x54,0x57,0x54,0x54,0x7c,0x51,0x14,0x1c,0xf4,0x43,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x40,0x30,0x17,0x80,0x60,0x2f,0x8,0x10,0x20,0xe7,0x20,0x20,0x20,0x2f,0x20,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0xfc,0x24,0x27,0x24,0x24,0x44,0x29,0x10,0x28,0x44,0x87,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x7f,0x8,0x8,0xf,0x8,0x8,0xa,0x11,0x11,0x10,0x24,0x28,0x30,0x60,0x0,0x8,0xfc,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x22,0x1e,0x0,
-+0x40,0x30,0x10,0x7,0xfc,0x8,0x10,0x37,0x58,0x94,0x11,0x11,0x12,0x14,0x10,0x10,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,0x40,
-+0x0,0x7f,0x3,0x5,0x19,0x61,0x1,0x7f,0x1,0x9,0x9,0x9,0x9,0x9,0xff,0x0,0x8,0xfc,0x0,0x60,0x18,0x8,0x0,0xfc,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,
-+0x8,0x8,0x8,0x10,0x1f,0x21,0x21,0x62,0x92,0xa,0x4,0x8,0x10,0x20,0x40,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x48,0x46,0x42,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x8,0xfc,0x3,0x2,0x7d,0x49,0x49,0x49,0x7a,0x2,0x4d,0x48,0x10,0xf9,0x2,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0x54,0x5c,0x94,0x90,0x12,0xe,0x0,
-+0x1,0xff,0x4,0x14,0x34,0x44,0x3f,0x0,0x1f,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0xf0,0x10,0xf0,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x40,0x3f,0x10,0x2,0x86,0x68,0x27,0x8,0x17,0x24,0xe7,0x20,0x20,0x20,0x20,0x20,0x44,0xfe,0xa0,0xa8,0xa6,0xa2,0xf8,0x8,0xf8,0x0,0xfc,0x4,0x4,0x44,0x28,0x10,
-+0x8,0xfd,0x10,0x10,0x10,0x13,0x7c,0x10,0x10,0x10,0x10,0x1c,0xf1,0x41,0x2,0x4,0x8,0xfc,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x8,0x7d,0x0,0x0,0x4,0xfe,0x28,0x28,0x28,0x28,0x28,0x2a,0x2c,0x48,0x80,0x1,0x4,0xfe,0x10,0x24,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x58,0x44,0x82,0x2,
-+0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0xe,0x2,0x5,0x4,0x4,0x8,0x8,0x30,0xc0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xa0,0xa2,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x13,0x16,0x5a,0x51,0x50,0x90,0x13,0x10,0x10,0x28,0x25,0x45,0x82,0x4,0x40,0x20,0xfe,0x2,0x14,0xf8,0x0,0x8,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x1f,0x0,0x0,0x7f,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x8,0xff,0x12,0x15,0x21,0x21,0x79,0xaa,0x2a,0x2d,0x28,0x28,0x39,0x22,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0x54,0x5c,0x94,0x90,0x12,0xe,0x0,
-+0x10,0x10,0x11,0x12,0xfc,0x13,0x12,0x1a,0x32,0xd3,0x12,0x10,0x10,0x11,0x52,0x24,0x80,0x80,0xf8,0x10,0x24,0xfe,0x44,0x44,0x44,0xfc,0x64,0xa0,0xa2,0x22,0x1e,0x0,
-+0x0,0x8,0x7d,0x4a,0x4c,0x4b,0x4a,0x7a,0x4a,0x4b,0x4a,0x48,0x78,0x49,0x2,0x4,0x80,0x80,0xf8,0x10,0x24,0xfe,0x44,0x44,0x44,0xfc,0x64,0xa0,0xa2,0x22,0x1e,0x0,
-+0x10,0x10,0x21,0x7d,0x46,0x44,0x44,0x7c,0x47,0x44,0x44,0x44,0x7d,0x45,0x2,0x4,0x40,0x20,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x20,0x20,0x27,0x34,0xaa,0xa2,0xa3,0xa4,0x24,0x24,0x2a,0x21,0x21,0x22,0x24,0x28,0x80,0x40,0xfe,0x2,0x4,0x0,0xbc,0xa4,0xa4,0xb4,0xa8,0x20,0x22,0x22,0x1e,0x0,
-+0x2,0x1,0x7f,0x40,0x90,0x1e,0x12,0x12,0x22,0x32,0x4a,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0xfe,0x2,0x4,0xf8,0x88,0x88,0x88,0xa8,0x90,0x80,0x82,0x82,0x7e,0x0,
-+0x20,0x20,0x23,0x22,0xfd,0x49,0x49,0x49,0x4a,0x92,0x55,0x20,0x50,0x49,0x82,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0x5c,0x54,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x0,0xff,0x2,0x2,0x2,0x3,0x2,0x2,0x4,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x8,0x7c,0x4b,0x4a,0x4d,0x79,0x49,0x49,0x4a,0x7a,0x4d,0x48,0x48,0x49,0x4a,0x9c,0x40,0x20,0xfe,0x2,0x4,0xdc,0x54,0x54,0x54,0x54,0x5c,0x94,0x90,0x12,0xe,0x0,
-+0x0,0x40,0x37,0x10,0x80,0x60,0x20,0xb,0x10,0x20,0xe0,0x20,0x20,0x20,0x2f,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x2,0x1,0x1,0x0,0xff,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x30,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x7f,0x40,0x42,0x62,0x54,0x54,0x48,0x48,0x54,0x52,0x62,0x61,0x42,0x40,0x40,0x4,0xfe,0x4,0xc,0x8c,0x54,0x54,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x14,0x8,
-+0x8,0x8,0x10,0x27,0x40,0x8,0x8,0x10,0x37,0x50,0x90,0x10,0x10,0x10,0x1f,0x10,0x80,0x40,0x8,0xfc,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x0,0x7,0x78,0x48,0x48,0x48,0x78,0x4f,0x48,0x48,0x48,0x78,0x40,0xf,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0xa,0xff,0x20,0x20,0x26,0x38,0x20,0x0,0x3f,0x1,0x1f,0x1,0x1,0xff,0x0,0x4,0x7e,0x44,0x7c,0x44,0x7c,0x44,0x8c,0x0,0xf8,0x0,0xf0,0x0,0x4,0xfe,0x0,
-+0x2,0x1,0xff,0x10,0x10,0x10,0x10,0x1f,0x0,0x2,0x11,0x50,0x50,0x90,0xf,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x2,0x1,0x7f,0x10,0x10,0x10,0x1f,0x2,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x0,0x8,0xfc,0x0,0x0,0x20,0xf0,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x0,0x0,0x0,0x3f,0x20,0x3f,0x24,0x24,0x3f,0x29,0x31,0x2a,0x24,0x4a,0x91,0x2,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0xc8,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x1,0x21,0x3f,0x0,0x7c,0x11,0xff,0x39,0x55,0x11,0xfd,0x24,0x48,0x30,0x29,0x46,0x0,0x8,0xf8,0x20,0x44,0xfe,0x24,0xfc,0x24,0xfc,0x44,0x60,0xa8,0xa2,0x22,0x1e,
-+0x12,0x12,0x2a,0x4a,0x8a,0x1f,0x20,0x7f,0xa0,0x2f,0x29,0x29,0x29,0x29,0x30,0x20,0x10,0x10,0x90,0xa4,0xbe,0xc4,0x24,0xa8,0x28,0x28,0x10,0x50,0xa8,0x28,0x46,0x84,
-+0x8,0xf,0x10,0x20,0x5f,0x10,0x10,0x13,0x12,0x12,0x12,0x12,0x22,0x22,0x41,0x80,0x0,0xe0,0x40,0x88,0xfc,0x0,0x10,0xf8,0x10,0x10,0x50,0x20,0x2,0x2,0xfe,0x0,
-+0x1,0x1,0x1,0xff,0x1,0x1,0x3f,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x4,0xfe,0x0,0x10,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x28,0x10,0x0,
-+0x0,0x40,0x2f,0x20,0x0,0x7,0xe0,0x20,0x2f,0x20,0x20,0x20,0x20,0x50,0x8f,0x0,0x80,0x88,0xfc,0x80,0x90,0xf8,0x80,0x88,0xfc,0x88,0x88,0xa8,0x90,0x86,0xfc,0x0,
-+0x10,0x10,0x11,0x12,0xff,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x12,0x14,0x14,0x18,0x80,0xf8,0x10,0x24,0xfe,0x0,0x8,0xfc,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x4f,0x41,0x5f,0x41,0x41,0x41,0x41,0x41,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0xe4,0x4,0xf4,0x14,0x14,0x54,0x24,0x4,0xfc,0x4,
-+0x0,0x8,0x7c,0x49,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x10,0x10,0x10,0x11,0x59,0x57,0x55,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x0,0x10,0xc,0x4,0x0,0xff,0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x40,0x0,0x80,0x80,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x28,0x10,
-+0x0,0x44,0x24,0x24,0x88,0x5f,0x42,0x4,0x28,0x5f,0xc0,0x40,0x43,0x5c,0x48,0x40,0x40,0x50,0x44,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x10,0x10,0x20,0x21,0x49,0xfb,0x15,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe1,0x41,0x1,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x8,0x8,0xff,0x9,0x1,0x7f,0x1,0x3f,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0xf8,0x0,0xfc,0x4,0x4,0x4,0x28,0x10,0x0,
-+0x4,0x4,0xff,0x4,0x1f,0x1,0x7f,0x5,0x19,0x2,0xff,0x4,0x8,0x7,0x4,0x18,0x40,0x44,0xfe,0x40,0xf0,0x0,0xfc,0x40,0x30,0x4,0xfe,0x20,0x40,0x80,0x60,0x10,
-+0x0,0x3f,0x1,0x1,0xff,0x5,0x9,0x31,0x5,0xff,0x4,0x8,0x4,0x3,0xc,0x30,0x30,0xc0,0x0,0x4,0xfe,0x40,0x38,0x10,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x57,0x90,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x8,0xa,0x9,0x10,0x17,0x30,0x50,0x90,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x10,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xc4,0xa4,0x14,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x2f,0x21,0x21,0x2f,0x21,0x21,0x5f,0x41,0x81,0x0,0x8,0xfc,0x8,0x8,0xf8,0x20,0xf0,0x8,0xfc,0x0,0x8,0xfc,0x0,0x2,0x2,0xfe,
-+0x10,0x10,0x20,0x27,0x48,0xf8,0x17,0x20,0x40,0xff,0x0,0x0,0x1c,0xe0,0x40,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x8,0x8,0xff,0x8,0x3f,0x21,0x3f,0x20,0x3f,0x20,0x3f,0x44,0x56,0x95,0x24,0xc,0x20,0x24,0xfe,0x20,0x8,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x28,0x10,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x4f,0x48,0x48,0x49,0x7a,0x44,0x8,0x0,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xe0,0x50,0x50,0x4e,0x44,0x40,0x40,
-+0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x0,0xff,0x10,0x12,0x11,0x10,0x14,0x18,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x0,0x20,0x40,0x80,0x60,0x1c,0x8,
-+0x0,0x3f,0x21,0x3f,0x21,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x4f,0x4a,0x7a,0x4a,0x2,0x3,0x2,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x88,0x50,0x20,0x90,0xe,0x4,
-+0x6,0xf8,0x11,0x11,0xff,0x39,0x55,0x91,0x11,0xfe,0x24,0x44,0x28,0x11,0x2a,0x44,0x40,0x84,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0x40,0x60,0xa0,0xa8,0x22,0x22,0x1e,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x52,0x92,0x11,0x11,0x10,0x10,0x10,0x1f,0x10,0x10,0x80,0x40,0x40,0x8,0xfc,0x0,0x8,0x8,0x10,0x10,0x90,0xa0,0x24,0xfe,0x0,0x0,
-+0x0,0x47,0x34,0x17,0x84,0x67,0x20,0xb,0x12,0x23,0xe2,0x23,0x22,0x22,0x22,0x22,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x47,0x24,0x27,0x4,0x7,0xe0,0x23,0x22,0x23,0x22,0x23,0x2a,0x32,0x22,0x2,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x1,0x3f,0x21,0x21,0x3f,0x20,0x3f,0x20,0x3f,0x24,0x24,0x55,0x54,0xa4,0x14,0x8,0x8,0x88,0x8,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x88,0x8,0x28,0x10,
-+0x3f,0x21,0x3f,0x20,0x3f,0x20,0x3f,0x24,0x56,0x95,0x2c,0x2,0x51,0x50,0x90,0xf,0x8,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x28,0x10,0x0,0x84,0x92,0x12,0xf0,
-+0x0,0x0,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0xff,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x4,0xfe,0x0,
-+0x1,0x0,0x1f,0x10,0x93,0x52,0x53,0x12,0x33,0x50,0xd7,0x14,0x24,0x24,0x4f,0x0,0x0,0x84,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xfe,0x0,
-+0x0,0x43,0x32,0x12,0x83,0x62,0x22,0xb,0x10,0x27,0xe4,0x24,0x24,0x24,0x2f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xa4,0xfe,0x0,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1e,0xe2,0x41,0x2,0x40,0x20,0x20,0x4,0xfe,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x2,0x1,0x1,0xff,0x10,0x8,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x80,0x60,0x10,0xe,0x4,
-+0x20,0x1b,0x48,0x40,0x5f,0x44,0x47,0x44,0x47,0x44,0x44,0x5f,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x44,0xc4,0x44,0xc4,0x44,0x44,0xf4,0x44,0x44,0x54,0x8,
-+0x10,0x10,0x20,0x20,0x4f,0xfa,0x11,0x21,0x40,0xfc,0x0,0x0,0x1c,0xe1,0x42,0x4,0x80,0x40,0x40,0x4,0xfe,0x8,0x10,0x10,0xa0,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x1,0x9,0x7d,0x49,0x4a,0x4c,0x48,0x48,0x49,0x49,0x49,0x7a,0x4c,0x1,0x2,0x0,0x0,0x0,0x4,0xfe,0xa4,0xa4,0xa4,0xa4,0x24,0x24,0x44,0x44,0x84,0x4,0x28,0x10,
-+0x8,0x1c,0xf0,0x11,0x12,0xff,0x10,0x33,0x38,0x57,0x50,0x95,0x15,0x19,0x10,0x10,0x40,0x40,0xf8,0x10,0x24,0xfe,0x4,0xfc,0x4,0xfc,0x40,0x24,0x22,0xa,0xf8,0x0,
-+0x2,0x1,0x7f,0x8,0x4,0x3,0x1c,0xe2,0x1f,0x1,0x2,0x3f,0x9,0x11,0x25,0x2,0x0,0x8,0xfc,0x20,0x40,0x80,0x70,0x4e,0x80,0x20,0x10,0xf0,0x20,0x18,0x8,0x0,
-+0x20,0x1b,0x8,0x40,0x40,0x4f,0x48,0x48,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8,
-+0x0,0x10,0x79,0x52,0x54,0x59,0x53,0x50,0x57,0x50,0x54,0x72,0x54,0x0,0x2,0x1,0x20,0xa0,0x10,0x48,0x86,0x14,0xf8,0x0,0xbc,0x84,0xa4,0x94,0xa4,0x84,0x94,0x8,
-+0x4,0x4,0x9,0x12,0xe4,0xf,0x0,0x3e,0x2,0x22,0x12,0xa,0x12,0x22,0xa,0x4,0x40,0x40,0x20,0x10,0x4e,0xe0,0x8,0xfc,0x8,0x88,0x48,0x28,0x48,0x88,0x28,0x10,
-+0x4,0x4,0x9,0x12,0xe4,0xf,0x0,0x7f,0x8,0x8,0xf,0x9,0x8,0xb,0x1c,0x0,0x40,0x40,0x20,0x10,0x4e,0xe0,0x8,0xfc,0x0,0x20,0xf0,0x20,0xa0,0x22,0x22,0x1e,
-+0x10,0x10,0x14,0x12,0xf8,0x10,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x15,0x58,0x20,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x28,0x16,0xfc,0x0,
-+0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x55,0x7d,0x55,0x11,0x15,0x1d,0xe5,0x41,0x1,0x8,0xfc,0x88,0x88,0x88,0xf8,0x24,0xfe,0x24,0x24,0x54,0x8c,0x4,0x4,0x14,0x8,
-+0x0,0x43,0x32,0x12,0x82,0x63,0x20,0xf,0x14,0x24,0xe4,0x24,0x25,0x24,0x24,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x44,0xfe,0x44,0x44,0x44,0xa4,0x14,0x4,0x14,0x8,
-+0x2,0x1,0x7f,0x44,0x88,0x1f,0x28,0x8,0xf,0x1,0x3f,0x21,0x22,0x2c,0x20,0x20,0x0,0x0,0xfe,0x42,0x24,0xf0,0x28,0x20,0xe0,0x8,0xfc,0x8,0x88,0x68,0x28,0x10,
-+0x4,0xe,0x78,0x8,0x8,0xff,0x8,0x8,0xa,0xc,0x18,0x68,0x9,0xa,0x28,0x10,0x80,0xa0,0x90,0x90,0x84,0xfe,0x80,0x90,0x90,0x60,0x40,0xa0,0x20,0x14,0x14,0xc,
-+0x10,0x14,0xfe,0x10,0x7c,0x45,0x7e,0x44,0x7d,0x10,0xfe,0x11,0x10,0x10,0x10,0x10,0x20,0x20,0x50,0x50,0x88,0x16,0x94,0x50,0x10,0x94,0x1e,0xf0,0x10,0x10,0x10,0x10,
-+0x2,0x7f,0x48,0x48,0x48,0x7e,0x42,0x42,0x42,0x7e,0x48,0x48,0x4a,0x7f,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x17,0x1a,0x32,0xd3,0x12,0x12,0x14,0x14,0x5b,0x20,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x40,0x88,0xfc,0x20,0xf8,0x20,0x24,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x80,0x60,0x2f,0x8,0x10,0x20,0xe0,0x20,0x21,0x22,0x24,0x28,0x8,0x3c,0xc0,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x0,0x7f,0x1,0x11,0x11,0x11,0x11,0x29,0x29,0x45,0x85,0x1,0x1,0xff,0x0,0x0,0x8,0xfc,0x0,0x10,0x10,0x10,0x10,0x28,0x28,0x44,0x84,0x0,0x4,0xfe,0x0,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x48,0x78,0x47,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x10,0x10,0x17,0x18,0x10,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x2,0x4,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0xa0,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x28,0x10,
-+0x0,0x23,0x18,0x8,0x80,0x6f,0x21,0x9,0x11,0x23,0xe0,0x20,0x20,0x20,0x20,0x20,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x40,0x37,0x10,0x0,0x2,0xe2,0x22,0x22,0x25,0x29,0x20,0x28,0x30,0x20,0x1f,0x0,0x8,0xfc,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0x64,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x3f,0x20,0x3f,0x20,0x2f,0x21,0x22,0x27,0x20,0x20,0x3f,0x40,0x40,0xbf,0x0,0x8,0xfc,0x8,0xf8,0x0,0xfc,0x0,0x20,0xf0,0x80,0x88,0xfc,0x80,0x84,0xfe,0x0,
-+0x0,0x3f,0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x20,0xf0,0x0,0x0,0x0,0x8,0xfc,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x2,0x2,0x7f,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x0,0xf0,0x0,0x8,0xfc,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x10,0x13,0x10,0x10,0xfd,0x10,0x39,0x35,0x57,0x50,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7f,0x4,0x4,0x3f,0x8,0x8,0xff,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x8,0xfc,0x0,0x20,0xf0,0x20,0x24,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x1f,0x10,0x10,0x1f,0x0,0x0,0x3f,0x1,0x1,0xff,0x2,0x2,0x4,0x18,0x60,0x10,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,
-+0x0,0x1f,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x22,0x22,0x3f,0x8,0x10,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0xfc,0x10,0x50,0x20,
-+0x0,0x2,0x3f,0x0,0x0,0xff,0x4,0x4,0x27,0x24,0x24,0x24,0x27,0xf8,0x40,0x0,0x40,0x50,0x48,0x48,0x40,0xfe,0x40,0x40,0x40,0x40,0x20,0x20,0xa0,0x12,0xa,0x6,
-+0x0,0x0,0x7f,0x2,0x2,0x2,0x2,0x3f,0x4,0x4,0x4,0x8,0x8,0x8,0xff,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xfc,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x10,0x13,0x10,0x10,0xfd,0x10,0x15,0x19,0x37,0xd0,0x11,0x11,0x11,0x11,0x51,0x21,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0xf,0x11,0x11,0x21,0x41,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x3f,0x52,0x92,0x7f,0x12,0x12,0xff,0x10,0x1e,0x22,0x52,0xd,0x18,0xe0,0x0,0x8,0xfc,0x90,0x90,0xfc,0x90,0x94,0xfe,0x10,0xfc,0x90,0x94,0xfe,0x10,0x10,0x10,
-+0x10,0x10,0x17,0x20,0x20,0x60,0xa0,0x27,0x21,0x21,0x21,0x22,0x22,0x22,0x3f,0x20,0x0,0x8,0xfc,0x80,0x80,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x9,0x9,0x9,0x12,0x15,0x31,0x51,0x91,0x1f,0x12,0x12,0x12,0x13,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x48,0x28,0x8,0xfe,0x48,0x28,0x8,0xfc,0x8,0x28,0x10,
-+0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x10,0x1c,0xf3,0x40,0x0,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x83,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x3f,0x1,0x7f,0x51,0x89,0x14,0x7,0xc,0x13,0xc,0xf2,0xf,0x2,0x4,0x8,0x30,0xf8,0x0,0xfe,0x12,0x24,0x10,0xe0,0x40,0x80,0x60,0x1e,0xe4,0x20,0x20,0xa0,0x40,
-+0x0,0xb,0x7c,0x48,0x49,0x48,0x49,0x79,0x4f,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x11,0x11,0x51,0x51,0x7b,0x54,0x90,0x1c,0x31,0xd1,0x12,0x12,0x14,0x10,0x11,0x10,0x0,0x0,0x0,0x4,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x10,0x10,0x10,0x1f,0x24,0x44,0x84,0x8,0x8,0x8,0x10,0x11,0x21,0x42,0x4,0x8,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x84,0x84,0x84,0x4,0x4,0x4,0x28,0x10,
-+0x8,0x8,0xf,0x18,0x26,0x41,0x6,0x1a,0xe2,0x1f,0x2,0x2,0x4,0x4,0x8,0x30,0x0,0x0,0xf0,0x20,0xc0,0x0,0xc0,0x30,0xe,0xf4,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x10,0x13,0x10,0x10,0x59,0x54,0x51,0x91,0x17,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x43,0x32,0x12,0x3,0x0,0xe7,0x20,0x20,0x2f,0x20,0x20,0x28,0x31,0x22,0x4,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x4,0x4,0x3f,0x4,0x4,0x4,0xff,0x0,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,
-+0x2,0x7f,0x44,0x44,0x5f,0x51,0x51,0x5f,0x44,0x44,0x7f,0x0,0x24,0x22,0x42,0x80,0x4,0x7e,0x44,0x44,0x44,0x7c,0x40,0x40,0x44,0x44,0x3c,0x0,0x88,0x44,0x42,0x2,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x12,0x12,0x14,0x10,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x0,0xff,0x4,0x4,0x4,0x7f,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x34,0x4,0x4,0xfc,0x4,
-+0x0,0xb,0xfc,0x10,0x10,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x4,0xfe,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0x5c,0x84,0x4,0x4,0xfc,0x4,
-+0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x7d,0xa6,0x24,0x24,0x24,0x24,0x3c,0x24,0x1,0x40,0x40,0x40,0x7e,0x42,0x82,0x84,0x44,0x24,0x18,0x8,0x10,0x20,0x40,0x80,0x0,
-+0x1,0x9,0x7d,0x49,0x4f,0x49,0x4b,0x7b,0x4d,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x0,0x6,0x38,0x20,0xe0,0x20,0xbe,0x68,0x28,0x28,0x28,0x28,0x48,0x48,0x88,0x8,
-+0x0,0x8,0x7f,0x48,0x4b,0x48,0x4b,0x4a,0x4b,0x49,0x4f,0x78,0x4b,0x2,0x2,0x3,0x40,0x48,0xfc,0x40,0xf8,0x0,0xf8,0x8,0xf8,0x10,0xfe,0x8,0xfc,0x8,0x8,0xf8,
-+0x0,0x7,0x7a,0x4a,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x7a,0x4c,0x8,0x11,0x2,0x8,0xfc,0x8,0x8,0x10,0x20,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x11,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x12,0x10,0x15,0x1a,0x10,0x0,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x54,0x54,0xa4,0x24,0x44,0xa8,0x10,
-+0x10,0x10,0x57,0x50,0x7c,0x50,0x97,0x1a,0x32,0xd2,0x12,0x12,0x13,0x12,0x13,0x12,0x0,0x4,0xfe,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x8c,0x4,0x4,0xfc,0x4,
-+0x9,0x1c,0xf0,0x10,0x11,0xfc,0x13,0x38,0x35,0x51,0x53,0x95,0x11,0x10,0x10,0x10,0x4,0xd8,0x20,0xd8,0x4,0x80,0xfe,0xa0,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x2,0x4,0x1f,0x10,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x2,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0xf0,0x10,0x10,0xf0,0x0,0x84,0x92,0x12,0xf0,
-+0x8,0x6,0x1,0x6,0x3a,0x2,0xff,0x4,0x8,0x1f,0x28,0xc8,0x8,0x8,0x0,0x0,0x30,0xc0,0x0,0xc0,0x38,0x0,0xfe,0x80,0x88,0xfc,0x88,0x88,0xa8,0x90,0x80,0x80,
-+0x0,0x3f,0x11,0x9,0x5,0xff,0x3,0x5,0x9,0x31,0x0,0x12,0x51,0x50,0x90,0xf,0xf8,0x0,0x10,0x20,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0,0x0,0x84,0x92,0x12,0xf0,
-+0x0,0x78,0x4f,0x48,0x49,0x7a,0x48,0x49,0x4e,0x7a,0x49,0x48,0x49,0x4a,0x48,0x98,0x40,0x44,0xfe,0xe0,0x58,0x48,0xa0,0x10,0x4e,0x48,0x50,0xe0,0x58,0x48,0x40,0xc0,
-+0x2,0x2,0x2,0x7,0x4,0x8,0x10,0x24,0x43,0x1,0x0,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0x8,0xfc,0x8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x11,0x11,0x17,0x11,0x59,0x55,0x5f,0x90,0x13,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x12,0x56,0x5b,0x52,0x93,0x12,0x12,0x13,0x28,0x2a,0x46,0x8a,0x1,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x80,0x60,0x2c,0xa,0xf8,
-+0x11,0x10,0x10,0x14,0x59,0x50,0x57,0x90,0x11,0x11,0x13,0x2d,0x29,0x45,0x80,0x0,0x4,0xd8,0x20,0xd8,0x4,0x80,0xfe,0xa0,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x40,0x37,0x12,0x1,0x80,0x61,0x23,0x8,0x10,0x27,0xe0,0x3f,0x20,0x21,0x22,0x2c,0x1c,0xe0,0x48,0x50,0x80,0x10,0xf8,0x40,0x84,0xfc,0x40,0xfe,0xa0,0x10,0xe,0x4,
-+0x20,0x18,0x8,0x0,0x81,0x61,0x22,0xb,0x14,0x20,0xe0,0x20,0x20,0x21,0x22,0x2c,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x8,0xc8,0x50,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x3f,0x24,0x22,0x24,0x28,0x24,0x27,0x28,0x3f,0x40,0x40,0x80,0x0,0x8,0xfc,0x8,0xf8,0x90,0xa0,0x98,0x88,0x80,0xf0,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x21,0x22,0x27,0x24,0xff,0x24,0x77,0x62,0xbf,0x24,0x27,0x24,0x24,0x2a,0x31,0x20,0x10,0x10,0x90,0x94,0xbe,0xc4,0xa4,0x28,0xe8,0x28,0x90,0x90,0xa8,0xa8,0x46,0x84,
-+0x2,0x2,0x7f,0x4,0x4,0xb,0x10,0x22,0x1,0xff,0x5,0x9,0x38,0xca,0xc,0x8,0x40,0x28,0xfc,0x80,0xf0,0x84,0x7c,0x0,0x4,0xfe,0x8,0x10,0xa0,0x60,0x1c,0x8,
-+0x1,0x0,0x3f,0x22,0x22,0x3f,0x22,0x22,0x23,0x20,0x2f,0x28,0x48,0x48,0x88,0x0,0x0,0x88,0xfc,0x20,0x24,0xfe,0x20,0x20,0xe0,0x88,0xfc,0x88,0x88,0xa8,0x90,0x80,
-+0x0,0x0,0xff,0x0,0x8,0x4,0x2,0x2,0x0,0x3,0xc,0x30,0x10,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x24,0xc4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x10,0x29,0x47,0x85,0x0,0x40,0x84,0xfe,0x4,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfc,0x40,0x20,0x2c,0xa,0xf8,
-+0x1,0x7f,0x1,0x3f,0x0,0x1f,0x10,0x1f,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x10,0x11,0x11,0x1d,0x21,0x22,0x7c,0x93,0x10,0x7c,0x10,0x10,0x14,0x19,0x12,0x4,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x50,0x50,0x50,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x42,0x32,0x13,0x82,0x64,0x20,0xf,0x10,0x20,0xe0,0x21,0x21,0x22,0x24,0x28,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xa0,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x7f,0x4,0x4,0x8,0x3f,0x1,0x2,0x4,0x3f,0x1,0x9,0x9,0x11,0x25,0x2,0x38,0xc0,0x0,0x10,0x20,0xc0,0x0,0x20,0x10,0xf8,0x8,0x20,0x10,0x8,0x8,0x0,
-+0x0,0x79,0x4b,0x54,0x50,0x63,0x52,0x4b,0x4a,0x4b,0x68,0x51,0x42,0x44,0x41,0x40,0x40,0x50,0x4c,0x44,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x0,0x0,0x7e,0x2,0x43,0x24,0x14,0x14,0x8,0x14,0x12,0x22,0x40,0x80,0x1,0x2,0x40,0x50,0x48,0x40,0xfe,0x40,0x44,0x44,0x48,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x10,0x10,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe1,0x41,0x1,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x0,0x0,0x7b,0x4a,0x4d,0x78,0x48,0x48,0x7f,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x40,0x20,0xfe,0x22,0xfc,0x20,0xf8,0x20,0xfe,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x13,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1e,0xf2,0x40,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x30,0x28,0x24,0x24,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x7f,0x40,0x5f,0x51,0x51,0x5f,0x51,0x51,0x5f,0x51,0x41,0x41,0x41,0x7f,0x0,0x8,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x0,0x0,0x4,0xfe,0x0,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3e,0x22,0x3e,0x20,0x3e,0x20,0x3e,0x20,0x20,0x23,0xf0,0x0,0xfe,0x12,0x64,0x10,0xf8,0x8,0xf8,0x0,0xf8,0x88,0x50,0x20,0xde,0x4,
-+0x10,0x10,0x23,0xfe,0x25,0x50,0x51,0xfc,0x13,0x10,0x1d,0xf1,0x51,0x11,0x11,0x11,0x40,0x20,0xfe,0x22,0xfc,0x20,0xf8,0x20,0xfe,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x17,0x7c,0x54,0x54,0x57,0x54,0x74,0x57,0x54,0x54,0x57,0x74,0x54,0x4,0x4,0x4,0xbe,0x84,0x84,0x84,0xbc,0x0,0x7c,0xc4,0x44,0x28,0x90,0x28,0x28,0x46,0x84,
-+0x10,0x10,0x10,0x55,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x7c,0x4,0x0,0x1,0x6,0x20,0x20,0x28,0xfc,0x20,0x24,0xa8,0x20,0xfe,0x20,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x8,0x8,0x8,0x17,0x10,0x32,0x51,0x90,0x1f,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x44,0x2c,0x11,0x28,0x49,0x88,0x8,0x1b,0x28,0x48,0x88,0x8,0x8,0x51,0x26,0x20,0x20,0x28,0xfc,0x20,0x24,0xa8,0x20,0xfe,0x20,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0xff,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0xfe,0x0,0x0,0x0,0x80,0x40,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x3f,0x20,0x3f,0x22,0x27,0x24,0x27,0x24,0x27,0x24,0x27,0x22,0x47,0x4a,0x81,0x1e,0xfe,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xf0,0x20,0xc0,0x3e,
-+0x7f,0x2,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x8,0xf,0x14,0x22,0x41,0x6,0x38,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf0,0x20,0x40,0x80,0x60,0x1c,
-+0x0,0xf,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x20,0x20,0x27,0x24,0xfc,0x24,0x27,0x2d,0x35,0xe5,0x25,0x25,0x25,0x29,0xa1,0x40,0x10,0x90,0x10,0x20,0x3e,0x42,0x94,0x10,0x10,0x10,0x28,0x28,0x28,0x44,0x44,0x82,
-+0x20,0x20,0x27,0x3c,0x44,0x84,0x7f,0x25,0x25,0xfd,0x25,0x25,0x2d,0x35,0x29,0x0,0x10,0x90,0x10,0x20,0x3e,0x42,0x94,0x10,0x10,0x10,0x28,0x28,0x28,0x44,0x44,0x82,
-+0x1,0x11,0x11,0x1f,0x11,0x21,0x1,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x10,0x10,0x10,0x20,0x24,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x27,0x24,0x40,0x40,0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x11,0x10,0x1e,0x25,0x28,0x7e,0xaa,0x2b,0x3e,0x2a,0x2a,0x3f,0x0,0xe,0xf0,0x40,0x4,0x88,0x54,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x8,0x8,0x11,0x10,0x22,0x7e,0x8,0x13,0x20,0x7e,0x0,0x0,0x1e,0xe0,0x40,0x0,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x3f,0x20,0x2f,0x29,0x29,0x29,0x4f,0x48,0x83,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x8,0x4b,0x49,0x48,0x48,0x48,0x4b,0x1f,0x10,0x11,0x11,0x11,0x12,0x2,0xc,0x30,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x1e,0xf4,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x9,0x9,0x11,0x23,0x42,0xc,0x13,0x31,0x51,0x97,0x11,0x11,0x11,0x11,0x10,0x10,0x4,0x3e,0x0,0xc0,0x4,0x7e,0x88,0x8,0x8,0xc8,0x8,0x48,0x88,0x8,0x28,0x10,
-+0x8,0x12,0x3f,0x23,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x43,0x8a,0x4,0x40,0x20,0x4,0xfe,0x20,0x20,0x40,0x84,0xf8,0x10,0x20,0x40,0x88,0xfc,0x4,0x0,
-+0x20,0x1b,0x48,0x41,0x41,0x41,0x5f,0x41,0x43,0x45,0x49,0x51,0x41,0x41,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x24,0xf4,0x4,0x84,0x44,0x34,0x14,0x4,0x4,0x14,0x8,
-+0x40,0x20,0x2f,0x1,0x82,0x42,0x44,0x7,0x11,0x29,0xe6,0x22,0x25,0x24,0x28,0x30,0x0,0xc,0x70,0x10,0x10,0x50,0x5c,0x50,0x50,0x50,0x54,0xfe,0x0,0x80,0x7e,0x0,
-+0x0,0xf8,0x8,0xf,0x8,0x78,0x40,0x41,0x41,0x78,0x8,0x8,0x9,0xb,0x50,0x20,0x80,0x40,0x4,0xfe,0x40,0x40,0x80,0x8,0xf0,0x20,0x40,0x80,0x8,0xfc,0x4,0x0,
-+0x21,0x20,0x2f,0x20,0xfb,0x48,0x4f,0x48,0x4b,0x88,0x51,0x22,0x52,0x4c,0x88,0x0,0x10,0xa4,0xfe,0xa0,0xf8,0xa8,0xfe,0xa8,0xf8,0xa0,0xb0,0xa8,0xa8,0xa6,0xa0,0xa0,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x14,0x44,0x34,0x14,0x4,0x4,0xff,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x50,0x44,0x4c,0x50,0x40,0x44,0xfe,0x0,
-+0x0,0x78,0x48,0x51,0x52,0x65,0x50,0x4a,0x4a,0x49,0x69,0x51,0x41,0x40,0x4f,0x40,0x40,0x40,0xa0,0x10,0x2e,0xf4,0x0,0x48,0x48,0x48,0x48,0x50,0x50,0x24,0xfe,0x0,
-+0x0,0x9,0xfd,0x11,0x11,0x11,0x11,0x7d,0x11,0x11,0x10,0x1c,0xf0,0x41,0x2,0xc,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0x40,0xa0,0xa0,0x22,0x22,0x1e,
-+0x8,0x8,0x9,0xff,0x8,0x9,0x7f,0x55,0x55,0x7f,0x49,0x7f,0x49,0x49,0x43,0x41,0x10,0x10,0x18,0x94,0x10,0x14,0xfe,0x10,0x10,0x10,0x28,0x28,0x28,0x44,0x44,0x82,
-+0x0,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x4,0x8,0x10,0x3f,0x0,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0,0x20,0x10,0xf8,0x8,
-+0x8,0x7c,0x4b,0x4a,0x4b,0x7a,0x4b,0x48,0x48,0x7f,0x49,0x49,0x4a,0x4c,0x49,0x98,0x40,0x88,0xfc,0x8,0xf8,0x8,0xfc,0x48,0x50,0xe0,0x60,0x50,0x4e,0x44,0x40,0x80,
-+0x20,0x20,0x20,0x3d,0x26,0x48,0x41,0xa2,0x22,0x22,0x23,0x26,0x2a,0x32,0x23,0x2,0x80,0x80,0xf8,0x8,0x10,0x24,0x9e,0x4,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x2,0x7f,0x1,0x3f,0x1,0xff,0x0,0x44,0x29,0x12,0x20,0x60,0x20,0x23,0x2c,0x40,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x80,0xfc,0x4,0x48,0x40,0xa0,0x90,0xe,0x4,
-+0x2,0x1,0x7f,0x49,0x89,0xf,0x11,0x21,0xff,0x2,0x2,0x2,0x4,0x4,0x18,0x60,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x4,0xfe,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x78,0x48,0x51,0x52,0x64,0x51,0x4a,0x4a,0x4a,0x6b,0x52,0x42,0x42,0x43,0x42,0x80,0x80,0xf8,0x8,0x10,0x24,0x9e,0x4,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x7d,0x45,0x49,0x49,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0x88,0x50,0x20,0x10,0x4e,0x84,0x0,
-+0x8,0x8,0x10,0x10,0x22,0x7f,0x8,0x10,0x23,0x7c,0x0,0x0,0x1c,0xe0,0x43,0x0,0x40,0x50,0x48,0x40,0x7c,0xc0,0x44,0x7e,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x3f,0x22,0x22,0x22,0x3f,0x22,0x26,0x27,0x2a,0x2a,0x32,0x42,0x42,0x82,0x2,0x4,0xfe,0x0,0x4,0x7e,0xc4,0x44,0x7c,0x44,0xc4,0x7c,0x44,0x44,0x44,0x7c,0x44,
-+0x20,0x27,0x38,0x43,0x82,0x7b,0x21,0x27,0xf9,0x23,0x21,0x2f,0x29,0x33,0x2d,0x1,0x40,0xfc,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4,
-+0x0,0x3f,0x1,0x1,0xff,0x5,0x9,0x31,0xcf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x30,0xc0,0x0,0x4,0xfe,0x40,0x30,0xe,0xe4,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,
-+0x12,0x1f,0x28,0x45,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x48,0x88,0x8,0x8,0x44,0x7e,0xa0,0x10,0x4,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x1,0xff,0x0,0x3e,0x22,0x3e,0x4,0x7f,0x4,0x3f,0x4,0xff,0x9,0x18,0x6c,0x8,0x4,0xfe,0x0,0xf8,0x88,0xf8,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x10,0xa0,0x70,0xe,
-+0x2,0x42,0x32,0x12,0x8f,0x62,0x26,0x7,0x1a,0x2a,0xf2,0x22,0x22,0x22,0x22,0x22,0x0,0x4,0x7e,0x44,0xc4,0x44,0x7c,0x44,0xc4,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,
-+0x2,0x2,0x4,0x8,0x10,0x3f,0x1,0x2,0x4,0x3f,0x0,0x0,0x0,0x3,0xc,0x70,0x0,0x0,0x20,0x20,0x40,0x80,0x0,0x8,0x8,0xf0,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x82,0x44,0x29,0xfe,0x10,0x11,0x7c,0x10,0x10,0xfe,0x11,0x12,0x10,0x20,0x21,0x40,0x0,0x4,0xde,0x44,0x44,0x54,0xcc,0x44,0x44,0xcc,0x54,0x64,0x44,0x44,0x54,0x88,
-+0x22,0x11,0x10,0xff,0x8,0x10,0x3b,0x54,0x90,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x41,0x30,0x17,0x0,0x0,0xf3,0x10,0x10,0x10,0x1f,0x10,0x14,0x18,0x10,0x0,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x11,0x11,0xff,0x11,0x31,0x39,0x55,0x91,0x11,0x0,0x12,0x51,0x50,0x90,0xf,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x0,0x84,0x92,0x12,0xf0,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x2,0x2,0x2,0x20,0x40,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x2,0x1,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x3f,0x0,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x0,0xf8,0x40,0x84,0xfe,0x0,0x0,0x0,0x0,
-+0x0,0xb,0xfc,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x0,0x0,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x58,0x84,0x2,
-+0x8,0x8,0x7f,0x8,0x8,0xff,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x8,0x8,0x7,0x20,0x28,0xfc,0x20,0x24,0xfe,0x40,0x20,0xf0,0x2e,0x24,0xe0,0x20,0x8,0x8,0xf8,
-+0x11,0x11,0x12,0x17,0xfc,0x17,0x30,0x39,0x56,0x51,0x96,0x10,0x11,0x16,0x10,0x10,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x80,0x44,0x68,0xb0,0x30,0x68,0xa6,0x20,0xa0,0x40,
-+0x9,0x9,0xa,0x17,0x1c,0x37,0x50,0x91,0x16,0x10,0x17,0x10,0x11,0x16,0x10,0x10,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x80,0x44,0x68,0xb0,0x30,0x68,0xa6,0x20,0xa0,0x40,
-+0x2,0x4,0x8,0x7f,0x40,0x40,0x4f,0x48,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x40,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8,
-+0x8,0xf,0x10,0x3f,0x61,0xa1,0x3f,0x6,0x19,0x62,0xc,0x31,0x6,0x18,0x62,0x1,0x0,0xe0,0x48,0xfc,0x8,0x8,0xf8,0x10,0x20,0xc0,0xc0,0xa0,0x90,0x8e,0x84,0x0,
-+0x8,0xff,0x9,0x3f,0x1,0xff,0x1,0x3f,0x1,0x21,0x25,0x25,0x25,0x29,0x41,0x1,0x24,0xfe,0x20,0xf8,0x8,0xfe,0x8,0xf8,0x0,0x8,0x48,0x28,0x28,0x28,0x8,0x8,
-+0x0,0x5,0xfe,0x10,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8,
-+0x1f,0x1,0x7f,0x51,0x89,0x11,0x5,0x3,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0xf0,0x0,0xfe,0x12,0x24,0x10,0x40,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x8,0x49,0x2a,0x9,0x7f,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x41,0x41,0x45,0x42,0x4,0x4,0x4,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x8,0x7f,0x48,0x48,0x4f,0x48,0x49,0x4a,0x4c,0x4b,0x48,0x78,0x48,0x0,0x0,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0xf8,0x10,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x3e,0x22,0x3e,0x0,0xff,0x2,0x1f,0x10,0x11,0x12,0x4,0x78,0x0,0x3e,0x22,0x3e,0xf8,0x88,0xf8,0x4,0xfe,0x0,0xf0,0x10,0x10,0x90,0x40,0x3c,0x0,0xf8,0x88,0xf8,
-+0x10,0x11,0x10,0x3c,0x21,0x41,0xbd,0x11,0x11,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8,
-+0x0,0x42,0x31,0x10,0x83,0x62,0x22,0xb,0x12,0x22,0xe3,0x22,0x22,0x22,0x22,0x22,0x40,0x48,0x50,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0x28,0x10,
-+0x2,0x1,0x7f,0x41,0x89,0x5,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x0,0x0,0xfe,0x2,0x24,0x50,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x50,0x20,
-+0x2,0x41,0x30,0x11,0x82,0x6f,0x20,0x9,0x13,0x25,0xe9,0x21,0x21,0x21,0x21,0x21,0x8,0xb0,0x40,0xb0,0x48,0xfe,0x80,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x8,0x7c,0x4f,0x48,0x48,0x78,0x4b,0x48,0x4b,0x48,0x78,0x49,0x1,0x2,0xc,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x0,0xfc,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x5,0x5,0x9,0x9,0x11,0x21,0x41,0x1,0x1,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x3f,0x2,0x2,0xff,0x2,0x4,0x3f,0x10,0x21,0x5f,0x81,0x1,0x5,0x2,0x0,0x10,0xe0,0x40,0x84,0xfe,0x0,0x0,0xe0,0x80,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x3a,0x54,0x50,0x90,0x10,0x10,0x10,0x13,0x1c,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x1,0x11,0x9,0x5,0x1,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x0,0x0,0x7b,0x48,0x4f,0x48,0x4b,0x48,0x4a,0x4a,0x4a,0x7b,0x42,0x4,0x8,0x0,0x40,0x48,0xfc,0x48,0xfe,0x48,0xf8,0x40,0x48,0xe8,0xd8,0x58,0x48,0x48,0x48,0x40,
-+0x10,0x12,0x1f,0x28,0x45,0x0,0x3f,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x10,0x60,0x40,0x48,0x7c,0xa0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x8,0x2,0xff,0x24,0x22,0x41,0xa4,0x14,0x8,0x14,0x24,0x22,0x42,0x80,0x1,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x21,0x21,0x27,0x21,0xff,0x21,0x77,0x69,0xa1,0x20,0x2f,0x20,0x20,0x20,0x23,0x2c,0x0,0x4,0xfe,0x14,0xd4,0x14,0xd4,0x24,0x4c,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x4,0x4,0x24,0x27,0x24,0x24,0x24,0x27,0xfc,0x0,0x0,0x1f,0x0,0x0,0x7f,0x0,0x40,0x40,0x40,0x4c,0x70,0x40,0x42,0x42,0x3e,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,
-+0x1,0x3f,0x21,0x3f,0x21,0x3f,0x10,0x10,0x3f,0x48,0xc8,0x54,0x40,0x7c,0x5,0x2,0x20,0xa0,0x20,0x3e,0x42,0x94,0x10,0x90,0xd0,0x90,0x90,0xa8,0xa8,0xa4,0x44,0x82,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x54,0x54,0x55,0x7e,0x51,0x15,0x1d,0xf5,0x40,0x0,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x80,0x80,0xfe,0x22,0x22,0x52,0x2,0xfa,0xa,0x4,
-+0x28,0x28,0xfe,0x29,0x38,0x10,0x7f,0x54,0x54,0x7c,0x11,0xfe,0x10,0x10,0x13,0x10,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x20,0x20,0xfb,0x20,0x20,0x24,0x24,0x24,0x29,0x21,0x21,0x22,0x24,0x20,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x8c,0x8a,0x8a,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x17,0xf8,0x12,0x11,0x18,0x37,0xd0,0x10,0x10,0x11,0x11,0x52,0x24,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x12,0x12,0x13,0x16,0xfb,0x12,0x13,0x1a,0x33,0xd2,0x17,0x11,0x11,0x11,0x52,0x24,0x80,0x48,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x0,0xf8,0x10,0x3c,0x4,0x14,0x8,
-+0x2,0x7f,0x4,0x24,0x24,0x45,0x7f,0xc,0xc,0x14,0x24,0x44,0x84,0x4,0x14,0x8,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x8,0x14,0x22,0x41,0xbe,0x8,0x8,0x7f,0x8,0x2a,0x29,0x49,0x8,0x28,0x10,0x8,0x8,0x8,0x48,0x28,0x8,0x48,0x28,0xe,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,
-+0x8,0x7c,0x48,0x48,0x4b,0x78,0x48,0x4a,0x4a,0x7a,0x4d,0x49,0x49,0x4a,0x4c,0x98,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x8c,0x8a,0x8a,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x4,0x24,0x17,0x14,0x4,0x5,0xf6,0x10,0x13,0x12,0x12,0x13,0x16,0x1a,0x13,0x2,0x20,0x24,0xa8,0x30,0x22,0xa2,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x7f,0x40,0x88,0x8,0xf,0x8,0x8,0xf,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x4,0x20,0xf0,0x0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x10,0x17,0xfc,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x14,0x18,0x10,0x13,0x20,0x28,0x24,0xfe,0x20,0xa0,0xa0,0xa4,0xe4,0xa8,0xa8,0x90,0xb0,0x52,0x8a,0x6,
-+0x20,0x22,0x3f,0x48,0x88,0xa,0xff,0x8,0x28,0x2e,0x28,0x28,0x2f,0xf8,0x40,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x54,0x48,0x40,0x40,
-+0x20,0x3e,0x44,0xbe,0x2a,0x3e,0x2a,0x3f,0x2a,0x41,0x9f,0x11,0x1f,0x1,0x7f,0x20,0x0,0xfc,0x24,0x4c,0xd0,0x7c,0x90,0xfe,0x10,0x10,0xf8,0x10,0xf0,0x8,0xfc,0x4,
-+0x22,0x22,0x27,0x29,0xbf,0xaa,0xaa,0x2f,0x2a,0x2a,0x2f,0x2a,0x2a,0x2a,0x31,0x20,0x4,0x7e,0xa4,0x24,0xa4,0xc8,0xa8,0xbe,0xc8,0x88,0xfe,0x88,0x88,0x88,0x88,0x8,
-+0x2,0x42,0x32,0x12,0x82,0x62,0x2f,0xa,0x12,0x22,0xe2,0x22,0x22,0x22,0x23,0x20,0x48,0x48,0x48,0x48,0x48,0x48,0xfe,0x48,0x48,0x48,0x48,0x78,0x40,0x8,0xfc,0x0,
-+0x40,0x27,0x24,0x9,0x81,0x61,0x21,0x9,0x11,0x20,0xe0,0x2f,0x20,0x20,0x20,0x20,0x0,0xfe,0x2,0x4,0x0,0xfc,0x0,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8,
-+0x2,0x44,0x2f,0x28,0xf,0x8,0xef,0x28,0x28,0x3f,0x21,0x2a,0x34,0x28,0x12,0x1,0x8,0x88,0xc8,0x88,0x88,0xfe,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xa8,0x10,
-+0x3f,0x20,0x3f,0x20,0x24,0x22,0x2f,0x28,0x28,0x2f,0x28,0x28,0x4f,0x48,0x88,0x8,0xf8,0x8,0xf8,0x80,0x90,0xa8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10,
-+0x4,0xff,0x14,0x8,0x7f,0x22,0x14,0xff,0x8,0xa,0x7f,0x2a,0x49,0x88,0x29,0x10,0x40,0xfe,0x40,0x6,0x78,0x40,0x44,0xfe,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8,
-+0x8,0x8,0xff,0x8,0x8,0x0,0x2,0x1,0x50,0x50,0x50,0x90,0x10,0x10,0xf,0x0,0x20,0x24,0xfe,0x20,0x20,0x0,0x0,0x0,0x84,0x82,0x2,0x2,0x8,0x8,0xf8,0x0,
-+0x10,0x10,0x1d,0x20,0x20,0x7c,0x93,0x10,0x7c,0x10,0x11,0x10,0x14,0x18,0x10,0x0,0x40,0x20,0xfc,0x0,0x88,0x50,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,
-+0x2,0x7,0x38,0x20,0x20,0x20,0x3f,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x85,0x2,0x40,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x2,0x1,0x3f,0x8,0x4,0x4,0xff,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x20,0x20,0x44,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,
-+0x10,0xa,0x7f,0x0,0x22,0x14,0xff,0xa,0x7f,0x8,0xa,0x29,0x48,0x89,0x28,0x10,0x8,0x1c,0x60,0x40,0x40,0x44,0xfe,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8,0x8,
-+0x10,0x10,0x11,0x11,0x59,0x55,0x51,0x91,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x10,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x2,0x1,0x0,0x0,0x8,0x8,0x28,0x28,0x28,0x48,0x88,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x80,0xc0,0x80,0x0,0x8,0x4,0x2,0x2,0x2,0x0,0x10,0x10,0xf0,0x0,
-+0x8,0x8,0xf,0x10,0x10,0x37,0x50,0x90,0x17,0x10,0x13,0x12,0x12,0x12,0x13,0x12,0x80,0x44,0xfe,0x0,0x8,0xfc,0x0,0x8,0xfc,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xf8,0x40,0x0,0x0,0x10,0x92,0x54,0x54,0x10,0xfe,0x10,0x10,0x14,0xfe,0x10,0x90,0x10,0x10,0x10,0x10,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x1,0x21,0x3f,0x21,0x41,0xbf,0x1,0x1,0xff,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x8,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x0,0x7b,0x4a,0x4b,0x4a,0x7b,0x48,0x4a,0x4b,0x7c,0x48,0x4b,0x48,0x48,0x8f,0x18,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x2,0x45,0x29,0x11,0x29,0x49,0x88,0x9,0x19,0x2a,0x4c,0x89,0x8,0x8,0x57,0x20,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x13,0x12,0x13,0x5a,0x57,0x50,0x92,0x13,0x14,0x18,0x13,0x10,0x10,0x1f,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x2,0x2,0x21,0x11,0x19,0x9,0x0,0x0,0xff,0x0,0x0,0x4,0xc,0x10,0x20,0x40,0x0,0x8,0x8,0x10,0x10,0x20,0x20,0x44,0xfe,0x0,0x0,0x40,0x20,0x18,0xc,0x4,
-+0x0,0x7f,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x21,0x21,0x41,0x1,0x84,0xc4,0x4,0x24,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x1,0x7f,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x23,0x41,0x7f,0x1,0x1,0xff,0x0,0x4,0x84,0x24,0x24,0x24,0xa4,0x24,0x24,0x4,0x14,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x21,0x21,0x41,0x1,0x80,0xc4,0xc,0x10,0x20,0x44,0xc,0xd0,0x20,0x42,0x6,0x8,0x10,0x20,0x40,0x80,
-+0x0,0x7f,0x12,0x12,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x22,0x22,0x42,0x2,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xb,0x10,0x20,0x40,0x8,0x17,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xae,0xc2,0x83,0x82,0xfe,0x82,0x82,0xff,0x82,0x4,0xfe,0x84,0xfc,0x84,0xfc,0x20,0xa0,0xfc,0x20,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x1,0x1,0x3f,0x1,0x1,0xff,0x8,0x4,0x3f,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x0,0x4,0xfe,0x20,0x50,0xf8,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x31,0xc1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x12,0x12,0x5b,0x54,0x54,0x98,0x10,0x13,0x10,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x50,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x26,0x24,0x24,0x45,0x28,0x10,0x28,0x44,0x87,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x14,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x50,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x0,0x20,0x50,0x48,0x44,0x42,0x41,0x42,0x44,0x48,0x50,0x40,0x7f,0x40,0x0,0x0,0x10,0x10,0x24,0x24,0x44,0x84,0x4,0x84,0x44,0x34,0x14,0x4,0xfc,0x4,0x0,
-+0x8,0x7c,0x49,0x49,0x4a,0x7c,0x49,0x4a,0x4a,0x7a,0x4b,0x4a,0x4b,0x4a,0x88,0x18,0x80,0x80,0x0,0xfe,0x2,0x2,0x12,0xaa,0x4a,0xaa,0x1a,0xa,0xfa,0x2,0x14,0x8,
-+0x8,0x8,0x10,0x1f,0x20,0x40,0x90,0x28,0x25,0x22,0x25,0x28,0x20,0x3f,0x20,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x44,0xa4,0x24,0x24,0x24,0xa4,0x24,0xe4,0x14,0x8,
-+0x0,0x42,0x31,0x14,0x84,0x64,0x24,0xc,0x14,0x25,0xe5,0x26,0x24,0x27,0x24,0x20,0x0,0x8,0x10,0x94,0xa4,0x44,0x44,0xa4,0xa4,0x14,0xc,0xc,0x4,0xfc,0x4,0x0,
-+0x10,0x10,0x10,0xfd,0x11,0x13,0x25,0x21,0x51,0x51,0x91,0x25,0x45,0x7d,0x1,0x1,0x40,0xa0,0x88,0xfc,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x10,0x10,0x22,0x7f,0x0,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x26,0x0,0x48,0x44,0x80,0x80,0x98,0xe0,0x84,0x84,0x7c,0x80,0x98,0xe0,0x84,0x84,0x7c,0x0,0x88,0x46,0x2,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x40,0x40,0x40,0x44,0xfe,0x40,0xe0,0xe0,0x50,0x50,0x48,0x46,0x44,0x40,0x40,0x40,
-+0x11,0x11,0x11,0x21,0x2a,0x6c,0xa9,0x2e,0x28,0x2b,0x28,0x28,0x23,0x20,0x21,0x26,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x2e,0xc0,0x10,0x60,0x88,0x10,0x60,0x80,0x0,
-+0x8,0x4,0x2,0x7f,0x1,0x3f,0x2,0xff,0x4,0xf,0x11,0x2f,0x42,0x84,0x3f,0x0,0x20,0x40,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0x14,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x31,0x39,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x80,0x80,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x0,0x8,0x7f,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x48,0x48,0x7f,0x48,0x1,0x2,0xc,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x50,0x48,0xfe,0xa0,0x10,0xe,0x4,
-+0x10,0x13,0x1c,0x20,0x27,0x7c,0x91,0x12,0x7d,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x18,0xe0,0x40,0x48,0xfc,0xe0,0x50,0x4e,0xf8,0x88,0x90,0x9c,0x4,0x4,0x28,0x10,
-+0x0,0x3f,0x1,0x1,0x7f,0x5,0x9,0x31,0xcf,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x78,0x80,0x0,0x8,0xfc,0x40,0x30,0xe,0xe4,0x20,0x40,0x70,0x10,0x10,0xa0,0x40,
-+0x20,0x10,0x10,0x0,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x13,0x20,0x20,0x4f,0xf8,0x11,0x22,0x45,0xf8,0x0,0x0,0x19,0xe1,0x42,0x4,0x18,0xe0,0x40,0x48,0xfc,0xe0,0x50,0x4e,0xf8,0x88,0x90,0x9c,0x4,0x4,0x28,0x10,
-+0x20,0x20,0x20,0x27,0xfc,0x24,0x27,0x24,0x24,0x24,0x3e,0xe5,0x48,0x8,0x17,0x20,0x88,0xfc,0x80,0xfe,0x82,0xf0,0x84,0xfc,0x0,0xa0,0xa8,0xb0,0xa0,0xa4,0xfe,0x0,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x40,0x40,0x83,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x1,0xff,0x2,0x4,0x3f,0x24,0x24,0x24,0x24,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x10,
-+0x2,0x3,0x2,0x3f,0x22,0x23,0x3e,0x23,0x20,0x22,0x32,0x2a,0x4a,0x42,0xbf,0x0,0x10,0xf8,0x0,0xfe,0x2,0xe4,0x8,0xf8,0x0,0x40,0x48,0x58,0x60,0x40,0xfe,0x0,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4b,0x7a,0x4c,0x4,0xb,0x0,0x48,0x7c,0x40,0xfe,0x42,0x70,0xc4,0x7c,0x0,0x50,0x54,0xd8,0x50,0x54,0xfe,0x0,
-+0x4,0xb,0x10,0x20,0x41,0x5,0x9,0x11,0x21,0x41,0x5,0x9,0x11,0x20,0x40,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2,
-+0x8,0x8,0x10,0x21,0x42,0xc,0x13,0x30,0x50,0x97,0x10,0x11,0x12,0x14,0x11,0x10,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x2,0x42,0x33,0x12,0x4,0x0,0xf0,0x1f,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x8,0x7f,0x9,0x7f,0x2,0x4,0x1f,0x1,0x2,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x20,0xfc,0x20,0xfc,0x0,0x10,0xe0,0x0,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xae,0xa2,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x0,0x0,0x44,0x44,0xaa,0xaa,0xaa,0x92,0x92,0xaa,0xaa,0xa6,0xc6,0x82,0xfe,0x82,
-+0x8,0x8,0x14,0x12,0x21,0x5e,0x88,0x8,0x7e,0x8,0x2c,0x2a,0x4a,0x8,0x29,0x12,0x0,0x0,0x8,0xfc,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x10,0x10,0xfe,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x41,0x80,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xfa,0x2,0xfe,0x0,
-+0x1,0x0,0x3f,0x20,0x2f,0x20,0x21,0x20,0x2f,0x20,0x20,0x20,0x40,0x40,0x82,0x1,0x0,0x88,0xfc,0x0,0xf8,0x20,0x40,0x80,0xfc,0x88,0x90,0x80,0x80,0x80,0x80,0x0,
-+0x2,0x1,0xff,0x2,0x4,0x1f,0x1,0x2,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x10,0x0,0x4,0xfe,0x0,0x10,0xe0,0x0,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x10,0x10,0x11,0x13,0x5a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x1f,0x10,0x10,0x80,0x80,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,0x0,
-+0x10,0xfe,0x22,0x64,0x18,0x14,0x62,0x4,0x1f,0x3,0xc,0x3f,0x1,0x11,0x65,0x2,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x20,0xc0,0x0,0x10,0xf8,0x0,0x30,0x8,0x0,
-+0x10,0x13,0x10,0x11,0xfd,0x25,0x26,0x24,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x0,0xfe,0x42,0x70,0x40,0x40,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x4,0xc,
-+0x10,0x10,0x23,0x20,0x48,0xf8,0x17,0x21,0x43,0xfd,0x9,0x1,0x1d,0xe1,0x41,0x1,0x40,0x44,0xf8,0x50,0x60,0x44,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x23,0x20,0x48,0xff,0x11,0x20,0x42,0xf9,0x7,0x0,0x1c,0xe0,0x41,0x2,0x40,0x50,0xf8,0x40,0x40,0xfc,0x24,0xa8,0x20,0x24,0xfe,0x40,0x60,0x90,0xc,0x4,
-+0x10,0x11,0x14,0xfe,0x20,0x28,0x48,0x7f,0x8,0x8,0xe,0xf8,0x48,0x8,0x8,0x8,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x7b,0x4a,0x4c,0x4b,0x48,0x4b,0x4a,0x4b,0x4a,0x7b,0x48,0x0,0x7,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0x4,0xfe,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0xff,0x0,0x0,0x0,0xfe,0x2,0x14,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x4,0xfe,0x0,
-+0x1f,0x10,0x1f,0x10,0x1f,0x10,0xff,0x4,0x8,0x1f,0x2,0x51,0x50,0x90,0xf,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x0,0x20,0xf0,0x10,0x84,0x82,0x12,0xf0,0x0,
-+0x20,0x10,0x14,0xfe,0x21,0x22,0x3c,0x24,0x24,0x24,0x24,0x24,0x44,0x55,0x8a,0x4,0x80,0x84,0xfe,0x80,0x0,0xfe,0x22,0x24,0xa0,0xa8,0xbc,0xa0,0xa0,0x60,0x26,0x1c,
-+0x2,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x3f,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0x20,0xc0,0x0,0x0,0x0,0x10,0x10,0xf8,0x8,
-+0x0,0x42,0x32,0x13,0x2,0x4,0xf7,0x10,0x10,0x10,0x11,0x11,0x12,0x2c,0x44,0x3,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,0x6,0xfc,
-+0x1,0x0,0x3f,0x24,0xa4,0x6f,0x32,0x2f,0x6a,0xaf,0x2a,0x2f,0x40,0x43,0x9c,0x8,0x0,0x84,0xfe,0x44,0x28,0x7c,0x10,0x90,0xfc,0x90,0x94,0xfe,0x10,0x90,0x10,0x10,
-+0x0,0x8,0x7c,0x4f,0x48,0x48,0x79,0x4a,0x4b,0x78,0x48,0x49,0x4a,0x7b,0x48,0x0,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0x10,0xe0,0x40,0x80,0x0,0x8,0xfc,0x4,0x0,
-+0x10,0x10,0x20,0x20,0x45,0xfa,0x11,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe0,0x40,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x28,0x28,0xfe,0x29,0x29,0x3b,0x15,0x7d,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0xa0,0xa0,0xa0,0x20,0x24,0x28,0x30,0x20,0x60,0xa0,0x20,0x22,0x22,0x22,0x1e,0x0,
-+0x8,0x8,0xff,0x8,0x20,0x7c,0x45,0x44,0x7c,0x43,0x7c,0x44,0x45,0x7c,0x40,0x0,0x20,0x24,0xfe,0x20,0x40,0x28,0xfc,0x88,0x50,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,
-+0x22,0x11,0x11,0x0,0x7f,0x40,0x80,0x1f,0x0,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x8,0x8,0x10,0x20,0xfe,0x2,0x4,0xe0,0x40,0x84,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x1,0x1,0x7f,0x40,0x80,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0xfe,0x2,0x84,0x80,0x80,0x40,0x40,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x1,0x3f,0x0,0x0,0x1f,0x0,0x0,0x3f,0x0,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x1,0x1,0x2,0x3f,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x2,0x3f,0x22,0x22,0x3e,0x0,0x7f,0x41,0x49,0x49,0x49,0x49,0x49,0x14,0x23,0xc1,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8,
-+0x0,0x3f,0x1,0xff,0x1,0x3f,0x29,0x25,0x3f,0x1,0x3f,0x1,0x7f,0x24,0x22,0x40,0x38,0xc0,0x4,0xfe,0x0,0xf8,0x28,0x48,0xf8,0x0,0xf8,0x0,0xfc,0x48,0x24,0x4,
-+0x10,0x17,0x24,0x24,0x47,0x94,0x25,0x65,0xa5,0x25,0x25,0x25,0x29,0x29,0x31,0x21,0x1c,0xe0,0x20,0x24,0xfe,0x20,0xfc,0x4,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0xf,0x10,0x10,0x2f,0x48,0x88,0xf,0x8,0x8,0xf,0x8,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x4,0x28,0x10,
-+0x2,0x42,0x33,0x14,0x4,0x9,0xf1,0x11,0x11,0x11,0x11,0x13,0x15,0x18,0x10,0x0,0x0,0x4,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x14,0x4,0x14,0x8,
-+0x0,0x3f,0x0,0x0,0x1f,0x0,0x0,0x3f,0x0,0x0,0xff,0x8,0x4,0x4,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x9,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x1d,0xe5,0x45,0x15,0xa,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,
-+0x0,0x41,0x31,0x12,0x2,0x4,0xf9,0x14,0x12,0x12,0x11,0x11,0x11,0x28,0x44,0x3,0x0,0x24,0x24,0x48,0x48,0x90,0x20,0x90,0x48,0x48,0x24,0x24,0x24,0x0,0x6,0xfc,
-+0x0,0x4,0xfe,0x21,0x21,0x3f,0x45,0x45,0xa5,0x19,0x9,0x11,0x21,0x40,0x80,0x0,0x80,0x84,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x14,0x4,0x14,0x8,
-+0x0,0x47,0x30,0x11,0x81,0x61,0x21,0x9,0x17,0x21,0xe1,0x21,0x21,0x21,0x21,0x21,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x50,0xf0,0x10,0x10,0x10,0xa,0xa,0x6,0x0,
-+0x1,0x41,0x31,0x11,0x1,0x1,0xf1,0x11,0x11,0x11,0x11,0x11,0x16,0x1a,0x14,0x8,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,
-+0x0,0x47,0x30,0x11,0x1,0x1,0xf1,0x11,0x17,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x50,0xf0,0x10,0x10,0x10,0xa,0xa,0x6,0x0,
-+0x0,0x40,0x3f,0x21,0x2,0x4,0xe4,0x27,0x3c,0x24,0x25,0x24,0x2c,0x54,0x88,0x7,0x10,0x10,0x10,0x10,0x10,0x10,0x58,0x54,0x94,0x92,0x12,0x50,0x20,0x0,0x6,0xfc,
-+0x0,0x47,0x30,0x11,0x1,0x1,0xf7,0x11,0x11,0x11,0x11,0x11,0x11,0x29,0x44,0x3,0x10,0xf8,0x10,0x10,0x10,0x50,0xf0,0x10,0x10,0x10,0x12,0xa,0x6,0x0,0x6,0xfc,
-+0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x2f,0x20,0x20,0x20,0x20,0x40,0x40,0x9f,0x0,0x8,0xfc,0x80,0x80,0x80,0x80,0x88,0xfc,0x80,0xa0,0x98,0x88,0x80,0x84,0xfe,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x10,0x10,0x10,0x50,0x20,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x4,0xfe,0x9,0x29,0x29,0x49,0xff,0x9,0x19,0x29,0x48,0x88,0xb,0x8,0x28,0x10,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x2,0xff,0x92,0x92,0x92,0xfe,0x92,0x92,0x92,0xfe,0x92,0x10,0x11,0x10,0x10,0x10,0x20,0x44,0xfe,0x84,0xa4,0x84,0x94,0x88,0x80,0xfe,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x0,0xb,0x7c,0x48,0x48,0x49,0x49,0x4b,0x48,0x48,0x48,0x79,0x46,0x0,0x0,0x0,0x8,0xfc,0x10,0x90,0x90,0x10,0x14,0xfe,0x10,0x30,0x50,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x20,0x10,0xc,0x4,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x10,0x30,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xff,0x8,0x0,0x3f,0x8,0x8,0x10,0x3f,0x0,0x3,0xc,0x30,0xc0,0x0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x20,0x20,0x24,0xfe,0xa0,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x7f,0x0,0x10,0x10,0x20,0x20,0x7f,0x1,0x2,0x4,0x8,0x30,0xc0,0x1,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x11,0x14,0x7e,0x54,0x55,0x55,0x57,0x7c,0x10,0x14,0x1c,0xf4,0x41,0x2,0x0,0x8,0xfc,0x8,0x88,0x88,0x8,0x8,0xfe,0x28,0x28,0x48,0x48,0x88,0x8,0x28,0x10,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x20,0x2f,0x40,0x5f,0x80,0x0,0x8,0x8,0xf8,0x0,0xfc,0x80,0xf8,0x80,0xfe,0x80,0x80,0xf8,0x80,0xfe,0x0,
-+0x10,0x1f,0x22,0x42,0x8f,0x14,0x24,0x7f,0xa0,0x2f,0x28,0x28,0x28,0x2f,0x28,0x20,0x80,0xc4,0x3e,0x0,0x84,0xfe,0x88,0xe8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x28,0x10,
-+0x0,0x43,0x32,0x12,0x83,0x62,0x22,0xb,0x12,0x22,0xe3,0x22,0x24,0x24,0x2b,0x30,0x8,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x2,0x7f,0x4,0x24,0x24,0x45,0xfe,0x4,0xc,0x14,0x24,0x44,0x84,0x4,0x14,0x8,0x40,0x50,0x54,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x0,0xb,0x7c,0x48,0x48,0x48,0x4c,0x4a,0x4a,0x49,0x48,0x78,0x48,0x0,0x7,0x0,0x8,0xfc,0x90,0x90,0x90,0x90,0x92,0x94,0x94,0x98,0x90,0x90,0x90,0x94,0xfe,0x0,
-+0x0,0x7f,0x4,0x4,0x4,0x4,0x44,0x24,0x24,0x14,0x14,0x4,0x4,0x4,0xff,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0x4c,0x50,0x50,0x60,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x47,0x20,0x22,0x2,0x4,0xef,0x20,0x20,0x20,0x24,0x29,0x32,0x24,0x8,0x0,0x8,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x7f,0x1,0x11,0x11,0x11,0xff,0x10,0x1f,0x10,0x1f,0x0,0x29,0x24,0x40,0x0,0x8,0xfc,0x0,0xf0,0x0,0x4,0xfe,0x0,0xf0,0x4,0xfe,0x4,0x24,0x94,0x14,0x8,
-+0x0,0x17,0x7c,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x54,0x75,0x56,0x4,0x7,0x4,0x4,0xfe,0x4,0x44,0x44,0x44,0xfc,0x44,0x44,0xa4,0x94,0xc,0xc,0x4,0xfc,0x4,
-+0x20,0x1b,0x49,0x41,0x5f,0x42,0x44,0x49,0x5f,0x69,0x4f,0x49,0x4f,0x41,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x84,0x44,0x24,0xfc,0x24,0xe4,0x24,0xe4,0x14,0xf4,0x8,
-+0x20,0x27,0x24,0x24,0x2c,0xb4,0xa7,0xa4,0x24,0x24,0x24,0x25,0x56,0x4c,0x87,0x4,0x4,0xfe,0x4,0x44,0x44,0x44,0xfc,0x44,0x44,0xa4,0x94,0xc,0xc,0x4,0xfc,0x4,
-+0x0,0x40,0x37,0x10,0x81,0x62,0x27,0xa,0x12,0x23,0xe2,0x22,0x23,0x20,0x20,0x20,0x40,0x48,0xfc,0xa0,0x10,0x8,0xfe,0x48,0x48,0xf8,0x48,0x48,0xf8,0x42,0x42,0x3e,
-+0x8,0x8,0x8,0x7f,0x8,0x8,0xf,0x78,0x0,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x40,0x40,0x40,0x50,0x48,0x44,0x44,0x40,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x0,0x7f,0x2,0x12,0xa,0x2,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x8,0xfc,0x40,0x48,0x50,0x44,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0xfd,0x10,0x10,0x20,0x20,0x7c,0xa7,0x24,0x24,0x24,0x25,0x3d,0x22,0x4,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x8,
-+0x20,0x20,0x27,0x20,0xf9,0xa9,0xaa,0xaf,0xa8,0xf8,0x22,0x29,0x39,0xea,0x44,0x8,0x0,0x6,0xb8,0x88,0x8,0x8,0x2e,0xa8,0xa8,0xa8,0xa8,0x3e,0x0,0x86,0x7c,0x0,
-+0x1,0x21,0x21,0x21,0x3f,0x0,0xff,0x2,0x4,0xf,0x18,0x28,0x48,0x8,0xf,0x8,0x0,0x8,0x8,0x8,0xf8,0x0,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x0,0x7d,0x4,0x8,0x11,0x21,0x7d,0x5,0x5,0x49,0x29,0x10,0x28,0x47,0x80,0x8,0x1c,0xe0,0x20,0x20,0x28,0x3c,0x20,0x20,0x20,0x28,0xfc,0x0,0x6,0xfc,0x0,
-+0x2,0x1,0xff,0x0,0x0,0x1f,0x0,0x1f,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x0,0x20,0xf0,0x0,0xf0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x9,0x7f,0x22,0x14,0x7f,0x44,0x48,0x52,0x44,0x48,0x52,0x44,0x48,0x90,0x21,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0xa4,0x48,0x86,0x2,
-+0x20,0x1b,0x4a,0x42,0x47,0x48,0x51,0x4e,0x48,0x48,0x4e,0x48,0x48,0x4f,0x40,0x40,0x4,0xfe,0x4,0x4,0xc4,0x84,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x14,0x8,
-+0x1,0x1,0x11,0x11,0x22,0x4,0x19,0x61,0x1,0x11,0x11,0x22,0x2,0x4,0x18,0x60,0x0,0x8,0x18,0x20,0xc0,0x30,0xc,0x4,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x41,0x31,0x11,0x81,0x61,0x22,0xc,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x7f,0x2,0xc,0x31,0xdf,0x11,0x11,0x1f,0x11,0x11,0x1f,0x11,0x1,0x0,0x0,0x8,0xfc,0x80,0x60,0x1e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x14,0x4,0xfc,
-+0x10,0x10,0x10,0x13,0xfc,0x11,0x13,0x1e,0x32,0xd3,0x12,0x12,0x13,0x10,0x50,0x20,0x40,0x40,0x48,0xfc,0xa0,0x50,0xf8,0x4e,0x48,0xf8,0x48,0x48,0xf8,0x42,0x42,0x3e,
-+0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x7a,0x4b,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x2,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x88,0x50,0x20,0x10,0x8e,0x4,0x0,
-+0x10,0x14,0x23,0x41,0x80,0x14,0x23,0x61,0xa0,0x21,0x22,0x2e,0x22,0x22,0x22,0x22,0x8,0x7c,0x0,0x0,0x0,0x4,0x7e,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x40,0x20,0x2f,0x8,0x90,0x67,0x20,0xf,0x14,0x27,0xe4,0x27,0x20,0x21,0x23,0x24,0x80,0x40,0xfe,0x2,0x4,0xfc,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x0,0x10,0xc,0x4,
-+0x10,0x10,0x10,0xff,0x11,0x13,0x7d,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0x12,0xfe,0x12,0x12,0x12,0x13,0x1e,0xf2,0x42,0x2,0x3,0x0,0x8,0xfc,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x20,0xfe,0x48,0xc8,0x30,0x48,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x14,0x17,0xf0,0x17,0x14,0x14,0x34,0xc7,0x0,0x48,0x44,0x80,0x40,0x44,0xfe,0x40,0x50,0xd0,0x12,0xdc,0x50,0x52,0x52,0xce,0x0,0x88,0x46,0x2,
-+0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x21,0x21,0x22,0x42,0x44,0x88,0x10,0x8,0xfc,0x80,0xa0,0x90,0x94,0xfe,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0xe,0x4,
-+0x4,0x7f,0x11,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x24,0x24,0x3c,0x25,0x2,0x4,0x8,0xfc,0x8,0x28,0x28,0x28,0x48,0x48,0x48,0x48,0x60,0xa0,0xa2,0x22,0x1e,0x0,
-+0x0,0x3f,0x24,0x24,0x29,0x29,0x3b,0x2d,0x29,0x29,0x29,0x29,0x49,0x49,0x89,0x9,0x8,0xfc,0x80,0xa0,0x14,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x14,0xfe,0x0,
-+0x0,0x8,0x7f,0x48,0x48,0x4b,0x48,0x4b,0x48,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x40,0x24,0xfe,0x0,0x8,0xfc,0x0,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x1,0x3f,0x8,0x4,0x3f,0x20,0x20,0x23,0x2c,0x20,0x23,0x4c,0x40,0x83,0x1c,0x0,0x10,0xf8,0x20,0x44,0xfe,0x20,0xc0,0x10,0x20,0xc0,0x8,0x10,0x60,0x80,0x0,
-+0x10,0x10,0x10,0x15,0x5a,0x50,0x53,0x92,0x12,0x12,0x13,0x2a,0x26,0x46,0x83,0x2,0x80,0x80,0xfc,0x8,0x10,0x84,0x3e,0x4,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x1,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x2,0xff,0x4,0xc,0x3,0xc,0x30,0x0,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x40,0x80,0x60,0x18,
-+0x0,0x40,0x33,0x10,0x0,0x3,0xf2,0x12,0x12,0x12,0x12,0x12,0x16,0x1a,0x14,0x9,0x40,0x24,0xfe,0x88,0x50,0xfe,0x10,0x20,0x48,0x90,0x24,0x44,0x88,0x10,0x60,0x80,
-+0x8,0xfc,0x8,0x48,0x49,0x4a,0x4d,0x48,0x7c,0x6,0x5,0x1d,0xe5,0x44,0x17,0x8,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x48,0x48,0x48,0x50,0x10,0x24,0xfe,0x0,
-+0x4,0xfe,0x20,0x21,0x3d,0x25,0x25,0x45,0x65,0x9b,0x8,0x10,0x20,0x40,0x81,0x2,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x1,0x1,0x1,0x1f,0x11,0x11,0x11,0x11,0x11,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,0x80,0x80,0x60,0x1c,0x8,
-+0x1,0x1f,0x11,0x11,0xff,0x4,0xa,0x3f,0xca,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x10,0xf8,0x10,0x14,0xfe,0x40,0x30,0xee,0x24,0xa0,0x44,0xfe,0x4,0xc4,0x14,0x8,
-+0x8,0x1c,0xf0,0x11,0x15,0xff,0x11,0x39,0x35,0x53,0x50,0x90,0x10,0x10,0x11,0x12,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x10,0x13,0x10,0x10,0xfc,0x10,0x33,0x38,0x54,0x50,0x91,0x11,0x12,0x14,0x11,0x10,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x10,0x13,0x10,0x10,0xfc,0x10,0x17,0x18,0x30,0xd0,0x11,0x11,0x12,0x14,0x51,0x20,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x84,0x28,0x10,
-+0xa,0x9,0x8,0x17,0x10,0x30,0x53,0x90,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x0,0x1f,0x10,0x97,0x50,0x50,0x11,0x37,0x51,0xd1,0x12,0x22,0x24,0x49,0x0,0x0,0x84,0xfe,0x0,0xf0,0x40,0x80,0x4,0xfe,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x8,0x4,0x2,0x7f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x20,0x40,0x88,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x2,0x41,0x30,0x17,0x80,0x60,0x23,0x8,0x10,0x20,0xef,0x20,0x20,0x20,0x20,0x20,0x8,0x10,0xa0,0xfc,0x40,0x40,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x7d,0x45,0x49,0x49,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x8,0x5,0x3f,0x2,0x1f,0x2,0x7f,0x2,0x2,0x2,0x0,0xfc,0x0,0xf8,0x0,0xf8,0x88,0x8,0xe8,0x8,0xc8,0x8,0xfa,0xa,0x4,0x0,
-+0x10,0x11,0x12,0x24,0x24,0x64,0xa4,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x20,0x20,0x80,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x54,0x48,0x40,0x40,0x40,
-+0x1,0x0,0x1f,0x11,0x90,0x5f,0x50,0x10,0x37,0x50,0xd0,0x1f,0x20,0x20,0x40,0x0,0x0,0x84,0xfe,0x10,0xa4,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x8,0x4,0x2,0x7f,0x1,0x3f,0x1,0xff,0x4,0x8,0x34,0xc4,0x4,0x4,0x8,0x10,0x20,0x40,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x30,0x4e,0x44,0x40,0x40,0x40,0x40,
-+0x12,0x11,0x10,0x17,0xfc,0x10,0x3b,0x34,0x50,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x40,0x3f,0x10,0x87,0x60,0x2f,0x8,0x10,0x23,0xe0,0x27,0x21,0x22,0x2d,0x20,0x10,0xa4,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x40,0xc8,0x50,0x60,0x50,0x4e,0x44,0x80,
-+0x2,0x44,0x2f,0x28,0xf,0x8,0xef,0x22,0x3f,0x24,0x27,0x24,0x28,0x52,0x89,0x7,0x10,0x10,0x94,0xbe,0xc4,0xa4,0xa4,0x28,0xa8,0x10,0x90,0xa8,0xa4,0xc4,0x6,0xfc,
-+0x8,0x7f,0x48,0x4b,0x4a,0x7a,0x4b,0x48,0x48,0x7f,0x48,0x49,0x48,0x48,0x88,0x1b,0x4,0xfe,0x90,0xfc,0x94,0x94,0xfc,0x40,0x40,0xfe,0x88,0x8,0x90,0x60,0x98,0x4,
-+0x10,0x10,0x11,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x45,0x82,0x4,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x8,0x6,0x4,
-+0x8,0xfd,0x10,0x11,0x10,0x10,0x7d,0x11,0x12,0x14,0x13,0x1c,0xf1,0x41,0x1,0x1,0x1c,0xe0,0x0,0x24,0xa4,0xa8,0x0,0xfc,0x20,0x24,0xfe,0x20,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x17,0x12,0xfd,0x11,0x16,0x1b,0x34,0xd0,0x1f,0x10,0x12,0x12,0x53,0x22,0x8,0x3c,0xc0,0x48,0x48,0x50,0x0,0xfc,0x40,0x44,0xfe,0x40,0x48,0x48,0xf8,0x8,
-+0x4,0x4,0x3,0x7e,0x1,0x0,0x7,0x38,0x0,0x7f,0x2,0x2,0x4,0x4,0x8,0x70,0x0,0x8,0xfc,0x20,0x40,0x84,0x64,0x1c,0x8,0xfc,0x40,0x40,0x40,0x42,0x42,0x3e,
-+0x0,0x47,0x32,0x11,0x2,0x3,0xf4,0x10,0x1f,0x10,0x12,0x13,0x12,0x28,0x47,0x0,0x38,0xc0,0x48,0x50,0x40,0xf8,0x40,0x44,0xfe,0x40,0x48,0xf8,0x8,0x6,0xfc,0x0,
-+0x2,0x1,0x7f,0x48,0x90,0x28,0xf,0x11,0x21,0xff,0x1,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0xfe,0x22,0x14,0x8,0xf0,0x0,0x4,0xfe,0x0,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x27,0x22,0x1,0x1,0xe2,0x23,0x24,0x20,0x2f,0x20,0x2a,0x32,0x23,0x2,0x8,0x3c,0xc0,0x48,0x48,0x50,0x0,0xfc,0x40,0x44,0xfe,0x40,0x48,0x48,0xf8,0x8,
-+0x10,0x10,0x10,0x12,0xfd,0x25,0x24,0x24,0x24,0x45,0x2a,0x10,0x28,0x45,0x82,0x4,0x50,0x50,0x50,0x52,0x54,0x58,0x50,0x50,0xd8,0x54,0x54,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x8,0x7c,0x4f,0x48,0x49,0x4a,0x4d,0x49,0x48,0x48,0x48,0x78,0x49,0x2,0xc,0x80,0x40,0x44,0xfe,0x0,0x10,0x8,0x14,0x10,0xa0,0xa0,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x0,0x7f,0x2,0x21,0x11,0x11,0x4,0x38,0x20,0x20,0x3e,0x20,0x20,0x3f,0x20,0x10,0x78,0x80,0x8,0x8,0x10,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x8,0x10,0x22,0x7c,0x9,0x10,0x7e,0x0,0xe,0x70,0x20,0x0,0x40,0x44,0xfe,0x40,0x40,0x44,0x7e,0x84,0x4,0x44,0x24,0x24,0x4,0x4,0x28,0x10,
-+0x0,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x2,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x8,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x13,0x11,0x54,0x39,0x10,0xfd,0x29,0x2b,0x2d,0x29,0x2b,0x2d,0x49,0x81,0x1,0x0,0xfc,0x54,0xcc,0x54,0x44,0x20,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x17,0x12,0x12,0xfe,0x13,0x3a,0x36,0x53,0x52,0x92,0x13,0x1e,0x10,0x10,0x10,0x0,0xfe,0x52,0x54,0x54,0xd8,0x54,0x52,0xd2,0x52,0x5a,0xd4,0x50,0x50,0x50,0x50,
-+0x0,0x17,0x78,0x53,0x50,0x57,0x54,0x5b,0x50,0x53,0x52,0x73,0x41,0x0,0xf,0x0,0x48,0xfc,0x40,0xf8,0x0,0xfe,0x2,0xfc,0x0,0xf8,0x8,0xf8,0x10,0xa4,0xfe,0x0,
-+0x2,0x7f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x27,0xfa,0x42,0x2,0x2,0x2,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x64,0x58,0x40,0x40,0x40,
-+0x4,0x8,0x14,0x2,0x1,0x6,0x18,0xe0,0x1f,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x40,0x20,0x50,0x80,0x0,0xc0,0x30,0xe,0xf0,0x10,0x10,0x10,0x50,0x20,0x0,0x0,
-+0x0,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x8,0xa,0x7f,0x8,0x8,0xf,0xf8,0x40,0x0,0x7c,0x4,0x28,0x10,0x10,0xfe,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x40,0x30,0x10,0x1,0x2,0xf,0x10,0x20,0xe3,0x22,0x22,0x22,0x22,0x23,0x2,0x40,0x40,0x80,0x80,0x10,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x1,0x11,0x11,0x11,0x1f,0xf1,0x11,0x11,0x11,0x11,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x30,0xd0,0x10,0x10,0x10,0x50,0x20,0x2,0x2,0x2,0xfe,0x0,
-+0x0,0xff,0x2,0x4,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x4,0x8,0x30,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0x60,0x18,0x8,
-+0x10,0x10,0x17,0x10,0xf9,0x11,0x12,0x1a,0x36,0xdb,0x12,0x12,0x12,0x12,0x53,0x22,0x80,0x44,0xfe,0x20,0x20,0x3c,0x44,0x64,0x98,0x48,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x4,0x4,0x4,0x4,0x44,0x24,0x24,0x14,0x14,0x14,0x14,0x4,0x4,0x4,0xff,0x0,0x40,0x40,0x40,0x40,0x44,0x44,0x48,0x48,0x50,0x50,0x60,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x2,0x3f,0x22,0x22,0x3f,0x22,0x22,0x3f,0x22,0x1,0x1,0x6,0x18,0xe0,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x20,0xc0,0x80,0x44,0x34,0xc,
-+0x0,0x78,0x4f,0x48,0x49,0x79,0x4a,0x4a,0x4e,0x7b,0x4a,0x4a,0x4a,0x4a,0x8b,0x1a,0x80,0x44,0xfe,0x20,0x20,0x3c,0x44,0x64,0x98,0x48,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x2,0x1,0xff,0x8,0x8,0x10,0x11,0x32,0x56,0x99,0x10,0x10,0x10,0x11,0x12,0x1c,0x0,0x4,0xfe,0x80,0x80,0xf8,0x8,0x88,0x50,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x40,0x37,0x10,0x81,0x61,0x22,0xa,0x16,0x2b,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x44,0xfe,0x20,0x20,0x3c,0x44,0x64,0x98,0x48,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x7f,0x1,0x3f,0x0,0x7f,0x40,0x9f,0x0,0x1f,0x10,0x10,0x1f,0x4,0xff,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x10,0x10,0xf0,0x44,0xfe,0x0,
-+0x0,0x7f,0x44,0x44,0x4f,0x50,0x40,0x5f,0x40,0x41,0x41,0x42,0x4c,0x40,0x7f,0x0,0x8,0xfc,0x0,0x10,0xf8,0x80,0x88,0xfc,0x80,0x40,0x30,0x18,0x8,0x0,0xfc,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x10,0x17,0x19,0x31,0xd1,0x11,0x11,0x11,0x17,0x50,0x20,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfe,0x8,0xf8,0x8,0xf8,0x8,0xe,0xf8,0x8,0x8,
-+0x10,0x10,0x10,0x1f,0x20,0x20,0x7c,0x90,0x11,0x7e,0x14,0x10,0x14,0x18,0x10,0x0,0x40,0x20,0x24,0xfe,0x40,0x40,0xa0,0xa4,0xa8,0x90,0x90,0x88,0x8e,0xa4,0xc0,0x80,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0x24,0xfe,0x40,0x40,0xa0,0xa4,0xa8,0x90,0x90,0x88,0x8e,0xa4,0xc0,0x80,
-+0x8,0xb,0x8,0x10,0x10,0x3f,0x50,0x90,0x10,0x13,0x10,0x10,0x11,0x11,0x12,0x14,0x8,0xfc,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0xf8,0x88,0x80,0x0,0x0,0x0,0x0,
-+0x2,0x1,0x1,0xff,0x2,0x2,0x5,0x5,0xc,0x14,0x24,0xc4,0x4,0x5,0x6,0x4,0x0,0x0,0x4,0xfe,0x0,0x8,0x18,0x20,0xc0,0x80,0x40,0x20,0x18,0xe,0x4,0x0,
-+0x4,0x7f,0x48,0x48,0x48,0x5e,0x52,0x52,0x52,0x5e,0x48,0x48,0x48,0x48,0x7e,0x1,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x58,0x86,0x2,
-+0x1,0x1,0xff,0x1,0x3f,0x1,0x1,0x3f,0x21,0x21,0x3f,0x1,0x2,0xc,0x30,0xc0,0x0,0x4,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8,0x0,0xfc,0x4,0x94,0x48,0x30,0xe,
-+0x0,0x43,0x32,0x13,0x0,0xf,0xf0,0x13,0x12,0x12,0x12,0x10,0x11,0x2a,0x44,0x3,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0xa0,0x18,0x8,0x6,0xfc,
-+0x8,0x1c,0xf0,0x11,0x12,0xfc,0x10,0x39,0x34,0x54,0x90,0x11,0x10,0x10,0x10,0x17,0x40,0x40,0xfc,0x84,0x48,0x30,0x60,0xa0,0x3e,0x42,0xc4,0x24,0x18,0x30,0xc0,0x0,
-+0x8,0x8,0x8,0x12,0x12,0x32,0x51,0x91,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x0,0x80,0x64,0x24,0x4,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x78,0x4f,0x48,0x4b,0x78,0x4b,0x4a,0x4a,0x7b,0x48,0x48,0x48,0x48,0x89,0x1e,0x40,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x48,0x40,0xfe,0x42,0x4a,0xa4,0x90,0xe,0x4,
-+0x20,0x26,0x38,0x22,0x1e,0x21,0x3e,0x48,0x8,0xfe,0x8,0x8,0x14,0x22,0x41,0x2,0x0,0xfc,0x8,0x50,0x20,0xfe,0x22,0x24,0xa0,0xb8,0xa0,0xa0,0xe0,0xa0,0x1e,0x4,
-+0x0,0x40,0x33,0x12,0x82,0x62,0x23,0xa,0x12,0x22,0xe2,0x22,0x24,0x24,0x28,0x20,0x8,0x3c,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x2,0x1,0x7f,0x40,0x80,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x0,0x0,0x0,0xfe,0x2,0x24,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x2f,0x20,0xfb,0x48,0x4b,0x4a,0x4a,0x93,0x50,0x20,0x50,0x48,0x81,0x6,0x40,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x48,0x40,0xfe,0x42,0x4a,0xa4,0x90,0xe,0x4,
-+0x8,0xf,0x10,0x1f,0x0,0xff,0x49,0x2a,0x7f,0x1c,0x2a,0x48,0xff,0x8,0x10,0x60,0x20,0xf0,0x20,0xe0,0x24,0xfe,0x20,0x78,0x24,0xfe,0x54,0x92,0xfe,0x10,0x10,0x10,
-+0x10,0x10,0x17,0x10,0xfc,0x11,0x37,0x38,0x57,0x52,0x92,0x12,0x13,0x12,0x10,0x10,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x12,0x7e,0x55,0x55,0x55,0x54,0x7c,0x10,0x14,0x1c,0xf5,0x42,0xc,0x0,0x80,0x64,0x24,0x4,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x90,0x8,0xe,0x4,
-+0x8,0x8,0xf,0x10,0x10,0x31,0x5f,0x90,0x13,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x0,0x7f,0x0,0x0,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x4,0x4,0x4,0xfc,0x0,
-+0x0,0x0,0x7f,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x10,0x20,0x20,0x20,0x1f,0x0,0x0,0x0,0xe0,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0xfc,0x0,
-+0x2,0x4,0x8,0x10,0x3f,0x8,0x8,0x1f,0x21,0x1,0xff,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x20,0x10,0xf8,0x8,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x30,0x1c,0x8,
-+0x0,0x4,0x42,0x43,0x41,0x40,0x40,0x40,0x41,0x42,0x44,0x48,0x50,0x60,0x1,0x6,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x30,0x48,0x84,0x4,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x20,0x20,0x1f,0x40,0x44,0xfe,0x40,0x0,0xc0,0x80,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0xfe,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x13,0x12,0x10,0x50,0x20,0x40,0x84,0x3e,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xa4,0x34,0x28,0x20,0x20,0x20,
-+0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x8,0x1f,0x24,0x44,0x88,0x10,0x21,0x2,0x4,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x44,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x1f,0x10,0x10,0x1f,0x0,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0xf0,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x10,0x10,0x55,0x56,0x55,0x54,0x54,0x54,0x54,0x55,0x7d,0x45,0x0,0x0,0x80,0x80,0x88,0xfc,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x91,0x12,0x12,0x14,0x14,0x14,0x14,0x13,0x10,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x8,0x9,0x11,0x21,0x41,0xa,0x14,0x33,0x51,0x91,0x10,0x10,0x10,0x10,0x13,0x1c,0x10,0xf8,0x10,0x10,0x10,0xe,0x0,0xf8,0x8,0x10,0x90,0xe0,0x40,0xb0,0xe,0x4,
-+0x0,0x7b,0x49,0x48,0x4f,0x78,0x4b,0x4a,0x4b,0x7a,0x4b,0x48,0x4b,0x4b,0x8d,0x18,0x40,0xf8,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x68,0x26,0xa,0xf8,
-+0x2,0x43,0x24,0x28,0x1f,0x8,0xe8,0x2f,0x20,0x21,0x21,0x22,0x24,0x58,0x88,0x7,0x0,0xe0,0x20,0x48,0xfc,0x88,0x88,0xf8,0x80,0x40,0x54,0x44,0x3c,0x0,0x6,0xfc,
-+0x40,0x4c,0x71,0x40,0x47,0x3c,0x41,0x7c,0x91,0x10,0xfe,0x13,0x28,0x24,0x44,0x80,0x20,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x1f,0x10,0x91,0x51,0x51,0x12,0x34,0x53,0xd1,0x10,0x20,0x21,0x46,0x18,0x80,0x44,0xfe,0x0,0xf0,0x10,0x10,0xc,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x2,0x1,0x1,0xff,0x4,0x4,0x4,0x14,0x14,0x24,0x44,0x4,0x8,0x8,0x11,0x0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x80,
-+0x2,0x1,0xff,0x5,0xc,0x34,0xc5,0x6,0x3f,0x24,0x28,0x37,0x24,0x24,0x27,0x20,0x0,0x4,0xfe,0x10,0xa0,0x60,0x1c,0x8,0xfc,0x48,0x28,0xd8,0x48,0x48,0xc8,0x18,
-+0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x2,0x51,0x50,0x90,0xf,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x84,0x92,0x12,0xf0,
-+0x10,0x8,0x7f,0x22,0x14,0xff,0x20,0x52,0x9c,0x28,0x4c,0x1b,0x29,0xc8,0x28,0x11,0x8,0x7c,0x48,0x48,0x48,0x86,0x0,0xf8,0x48,0x48,0x48,0x30,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x13,0x10,0x58,0x54,0x50,0x91,0x12,0x12,0x14,0x14,0x14,0x14,0x13,0x10,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x2,0x21,0x21,0x10,0x10,0x8,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x80,0x60,0x18,0xe,0x4,
-+0x8,0x4,0x0,0x7f,0x0,0x4,0x8,0x10,0x0,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x20,0x40,0x8,0xfc,0x0,0x40,0x30,0x10,0x0,0xf8,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x2,0x41,0x30,0x17,0x80,0x61,0x22,0xc,0x10,0x27,0xe5,0x25,0x25,0x25,0x3f,0x20,0x10,0x20,0x8,0xfc,0x0,0x20,0x18,0x8,0x0,0xf8,0x28,0x28,0x28,0x28,0xfe,0x0,
-+0x2,0x42,0x33,0x12,0x2,0x1,0xf0,0x10,0x13,0x12,0x12,0x13,0x16,0x1a,0x13,0x2,0x0,0x38,0xc0,0x2,0x2,0xfe,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x0,0x40,0x30,0x12,0x2,0x2,0xf1,0x11,0x10,0x10,0x10,0x14,0x19,0x12,0x4,0x8,0x0,0x80,0x44,0x44,0x4,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x40,0x2f,0x28,0x10,0x3,0xe2,0x22,0x23,0x22,0x22,0x23,0x2a,0x32,0x2f,0x0,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x0,
-+0x0,0x47,0x22,0x21,0x0,0x0,0xe3,0x2c,0x20,0x23,0x20,0x24,0x2f,0x30,0x20,0x0,0x0,0xfc,0x8,0xb0,0x40,0xa0,0x1e,0x44,0x50,0xf8,0x40,0x48,0xfc,0x40,0x40,0x40,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x1f,0x8,0x8,0xff,0x8,0x8,0x8,0x10,0x20,0x10,0xf8,0x10,0x10,0xf0,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x7e,0x22,0x1a,0x22,0x2,0x1f,0x11,0x1f,0x11,0x1f,0x4,0x3f,0x4,0xff,0x8,0x30,0xf8,0x88,0x68,0x88,0x8,0xf0,0x10,0xf0,0x10,0xf0,0x40,0xf8,0x40,0xfe,0x20,0x10,
-+0x0,0x7e,0x22,0x12,0x6,0x1a,0x62,0x1,0x1,0x7f,0x0,0x8,0x4,0x4,0xff,0x0,0x4,0xfe,0x44,0x24,0xc,0x34,0xc4,0x0,0x8,0xfc,0x20,0x20,0x40,0x44,0xfe,0x0,
-+0x10,0x11,0x20,0x20,0x44,0xf8,0x10,0x23,0x40,0xfd,0x0,0x0,0x1d,0xe0,0x40,0x0,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x4,0x4,0xff,0x4,0x3f,0x21,0x21,0x2f,0x21,0x22,0x22,0x24,0x28,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0xe8,0x8,0x88,0x88,0x48,0x28,0x8,0xf8,0x8,
-+0x8,0x8,0xff,0x8,0x7c,0x44,0x48,0x50,0x48,0x44,0x44,0x64,0x59,0x41,0x42,0x44,0x20,0x24,0xfe,0x20,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x4,0x4,0x14,0x8,
-+0x0,0x7f,0x41,0x41,0x41,0x5f,0x41,0x41,0x42,0x42,0x44,0x48,0x50,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x4,0x84,0x84,0x44,0x34,0x14,0x4,0xfc,0x4,
-+0xc,0x70,0x44,0x7e,0x44,0x7d,0x46,0x7d,0x40,0x7c,0x44,0x44,0x44,0x54,0x48,0x83,0x8,0xfc,0x88,0x88,0x88,0x6,0x0,0xfc,0x88,0x88,0x50,0x20,0x50,0x50,0x8e,0x4,
-+0x2,0x1,0x3f,0x8,0x4,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x10,0xf8,0x20,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x7c,0x44,0x48,0x48,0x50,0x48,0x48,0x44,0x44,0x44,0x68,0x51,0x41,0x42,0x44,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0xfc,0x84,0x84,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x54,0x54,0x54,0x8c,0x4,0x4,0xfc,0x4,
-+0x0,0x8,0x7c,0x48,0x49,0x49,0x4a,0x4c,0x48,0x4b,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8e,0x44,0x40,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,
-+0x10,0x11,0x11,0x3d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x13,0x15,0x19,0x11,0x1,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0x8c,0x50,0x20,0x10,0x4e,0x84,0x0,
-+0x40,0x30,0x17,0x0,0x84,0x62,0x22,0x7,0x10,0x20,0xef,0x20,0x20,0x20,0x27,0x20,0x8,0x3c,0xc0,0x4,0x84,0x48,0x10,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x3f,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x0,0xc,0x30,0x40,0x0,0x0,0xfe,0x2,0x14,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0x60,0x18,0x4,
-+0x10,0x10,0x10,0x10,0x1e,0x22,0x25,0x50,0x90,0x10,0x10,0x12,0x14,0x18,0x11,0x2,0x20,0x20,0x20,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x50,0x50,0x90,0x88,0xe,0x4,
-+0x0,0x0,0x3f,0x4,0x4,0xff,0x4,0x4,0x3f,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x10,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x7f,0x1,0x1,0x1,0x3f,0x20,0x20,0x41,0x7f,0x1,0x1,0x1,0x11,0xa,0x4,0x8,0x88,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x88,0x8,0x8,0x8,0x8,0x8,0x8,
-+0x0,0x78,0x48,0x51,0x52,0x67,0x50,0x4b,0x48,0x4b,0x68,0x52,0x42,0x46,0x4a,0x41,0x80,0x80,0xf0,0x10,0x24,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x80,0x60,0x2c,0xa,0xf8,
-+0x6,0x78,0x40,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x40,0x4e,0x70,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xa8,0x90,0x80,0x80,0x80,
-+0x8,0x8,0x7f,0x8,0x1,0x1f,0x11,0x11,0x11,0xff,0x1,0x2,0x2,0x4,0x18,0x60,0x20,0x28,0xfc,0x20,0x10,0xf8,0x10,0x10,0x14,0xfe,0x0,0x80,0x80,0x60,0x1c,0x8,
-+0x10,0x17,0x14,0x15,0xfd,0x16,0x3b,0x34,0x50,0x5f,0x90,0x11,0x10,0x10,0x11,0x16,0x0,0xbc,0xa4,0xac,0xac,0xb4,0x18,0xa4,0x80,0xfe,0x90,0x10,0xa0,0x40,0xb0,0x8,
-+0x0,0x3e,0x22,0x2a,0x2a,0x2a,0x14,0x62,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x8,0xfc,0x88,0xa8,0xa8,0xa8,0x50,0x88,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x0,0x3f,0x22,0x24,0x2c,0x35,0x24,0x24,0x21,0x27,0x24,0x24,0x47,0x40,0x9f,0x0,0x80,0xfe,0x50,0x7c,0xd0,0x7c,0x50,0x5c,0x0,0xf0,0x90,0x20,0xfc,0x4,0xe4,0xc,
-+0x1,0x0,0x3f,0x20,0x21,0x28,0x24,0x24,0x22,0x22,0x22,0x22,0x40,0x40,0x9f,0x0,0x0,0x84,0xfe,0x0,0x4,0x84,0x84,0x48,0x48,0x48,0x10,0x10,0x20,0x44,0xfe,0x0,
-+0x10,0x17,0x24,0x25,0x45,0xfe,0x13,0x24,0x40,0xff,0x0,0x1,0x1c,0xe0,0x41,0x6,0x0,0xbc,0xa4,0xac,0xac,0xb4,0x18,0xa4,0x80,0xfe,0x90,0x10,0xa0,0x40,0xb0,0x8,
-+0x4,0x4,0x7f,0x4,0x4,0x7f,0x40,0xbf,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0xf4,0x0,0x10,0xf8,0x0,0x40,0x24,0xfe,0x0,
-+0x4,0x4,0x7f,0x4,0x4,0x7f,0x41,0x81,0x1f,0x11,0x11,0x1f,0x1,0x1,0x3f,0x0,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x8,
-+0x4,0x4,0x7f,0x4,0x7f,0x40,0x8f,0x8,0x8,0xf,0x0,0x1f,0x10,0x10,0x1f,0x10,0x40,0x48,0xfc,0x40,0xfe,0x2,0xe4,0x20,0x20,0xe0,0x0,0xf0,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0x7f,0x4,0x4,0x7f,0x41,0x81,0x9,0x9,0x11,0x2,0x2,0x4,0x18,0x60,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x14,0x30,0x40,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x10,0x14,0x7e,0x54,0x54,0x55,0x55,0x55,0x7d,0x11,0x15,0x1d,0xf4,0x40,0x0,0x8,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x22,0x1e,
-+0x0,0x41,0x26,0x14,0x4,0x4,0xf4,0x14,0x15,0x16,0x14,0x10,0x10,0x28,0x47,0x0,0x0,0x84,0x7e,0x44,0x44,0x44,0x44,0xc4,0x44,0x54,0x48,0x40,0x40,0x46,0xfc,0x0,
-+0x1,0xff,0x10,0x1f,0x0,0x1f,0x10,0x1f,0x0,0x77,0x54,0x75,0x55,0x71,0x52,0xb4,0x0,0xfe,0x0,0xf0,0x0,0xf0,0x10,0xf0,0x0,0xdc,0x54,0x54,0x5c,0x14,0x96,0x62,
-+0x0,0x7f,0x10,0x17,0x14,0x12,0x21,0x22,0x44,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x10,0xf8,0x10,0xd0,0x7c,0x84,0x4,0xd4,0x48,0x0,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x4,0xff,0x0,0x3f,0x20,0x3f,0x15,0x24,0x54,0x8,0x84,0xc4,0x88,0x90,0xa0,0x84,0x4,0xe8,0x10,0xa2,0x82,0x84,0x8,0x90,0xa0,0x40,
-+0x40,0x4b,0x70,0x40,0x45,0x3d,0x1,0x1d,0xf1,0x15,0xff,0x11,0x38,0x54,0x91,0x16,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x4,0xff,0x10,0x10,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x24,0x3d,0x24,0x0,0x3,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xa0,0x60,0x9e,0x4,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x7a,0x4a,0x4f,0x48,0x48,0x78,0x49,0x2,0xc,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x0,0x11,0x79,0x52,0x52,0x54,0x5f,0x52,0x54,0x5f,0x50,0x71,0x4e,0x4,0x0,0x0,0x20,0x20,0x24,0x3e,0x44,0x84,0x4,0x44,0x24,0xa4,0x4,0x84,0x4,0x44,0x28,0x10,
-+0x20,0x27,0x24,0x24,0xfc,0x27,0x2c,0x34,0x64,0xa7,0x24,0x24,0x28,0x28,0xb0,0x40,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0x54,0x8,
-+0x10,0x17,0x14,0x24,0x24,0x67,0xa4,0x24,0x24,0x27,0x24,0x24,0x28,0x28,0x30,0x20,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0x54,0x8,
-+0x0,0x78,0x4f,0x49,0x4a,0x7a,0x4f,0x49,0x4a,0x7c,0x4f,0x48,0x48,0x49,0x4a,0x9c,0x40,0x24,0xfe,0x10,0x28,0xbe,0x68,0x28,0xbe,0xa8,0xa8,0xbe,0xa8,0x28,0x3e,0x20,
-+0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x17,0x34,0x54,0xd7,0x14,0x24,0x24,0x48,0x10,0x80,0x44,0xfe,0x0,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x44,0x54,0x8,
-+0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x20,0x2f,0x28,0x2f,0x48,0x4f,0x88,0x8,0x84,0xfe,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0xf8,0x88,0xf8,0x88,0xf8,0x88,0x98,
-+0x1,0x0,0xff,0x8,0x10,0x21,0x49,0xfb,0x11,0x25,0x45,0xf9,0x9,0x11,0x21,0x41,0x0,0x84,0xfe,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x14,0xfe,0x0,
-+0x0,0x7d,0x44,0x44,0x44,0x7d,0x11,0x11,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x41,0x1,0x0,0xfc,0x8,0x50,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x10,0x11,0x10,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xf5,0x41,0x1,0x0,0xfc,0x8,0x50,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x4f,0x48,0x49,0x49,0x4a,0x7a,0x44,0x8,0x1,0x0,0x80,0x40,0x0,0xc0,0x44,0x4c,0xf0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x80,
-+0x0,0x40,0x30,0x13,0x80,0x60,0x27,0x8,0x11,0x21,0xe2,0x22,0x24,0x28,0x21,0x20,0x80,0x40,0x0,0xc0,0x44,0x4c,0xf0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x80,
-+0x0,0x47,0x30,0x10,0x80,0x67,0x24,0xc,0x17,0x24,0xe4,0x27,0x24,0x24,0x24,0x24,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8,
-+0x2,0x1,0x0,0x1f,0x1,0x1,0x7d,0x5,0x5,0x9,0x9,0x11,0x21,0x41,0x5,0x2,0x0,0x0,0x0,0x0,0x8,0x18,0xa0,0x40,0x40,0x20,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x3f,0x2,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x21,0x21,0x2,0x51,0x50,0x90,0xf,0x0,0xf0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x18,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x3f,0x2,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x21,0x21,0x7f,0x2,0x2,0x4,0x18,0x60,0xf0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x10,0xf8,0x8,0x8,0x8,0x50,0x20,
-+0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x41,0x41,0x80,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x1,0x1,0x9,0x49,0x49,0x51,0x53,0x7d,0x45,0x49,0x55,0x7f,0x43,0x41,0x7f,0x40,0x0,0x0,0x20,0x24,0x24,0x44,0x4c,0xf4,0x14,0x24,0x54,0xfc,0xc,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x20,0x20,0x7f,0xa1,0x21,0x21,0x22,0x22,0x22,0x24,0x24,0x28,0x30,0x80,0xa0,0x90,0x90,0x84,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x8,0x10,0x15,0x36,0x54,0x94,0x14,0x14,0x11,0x2,0x51,0x50,0x90,0xf,0x0,0x80,0x84,0xfe,0x8,0x88,0x50,0x20,0x50,0x8e,0x4,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x10,0x10,0x10,0x10,0x58,0x57,0x51,0x91,0x11,0x11,0x12,0x12,0x12,0x14,0x14,0x18,0x80,0xa0,0x90,0x90,0x84,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x1,0x1,0x1,0x1,0x1,0xff,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x40,0x20,0x20,0x4,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x1,0x1,0x1,0x1,0x7f,0x41,0x41,0x41,0x41,0x7f,0x41,0x41,0x41,0x41,0x7f,0x40,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x9,0x7f,0x49,0x49,0x49,0x49,0x7f,0x49,0x49,0x49,0x49,0x7f,0x41,0x0,0x0,0x0,0x7c,0xc4,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x10,0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x11,0x11,0x15,0x19,0x11,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,
-+0x0,0x44,0x2c,0x10,0x28,0x4f,0x89,0x9,0x19,0x29,0x49,0x8a,0xa,0xa,0x54,0x28,0x80,0xa0,0x90,0x90,0x84,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x40,0x30,0x10,0x87,0x64,0x24,0xc,0x14,0x27,0xe4,0x24,0x24,0x24,0x27,0x24,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x2,0x41,0x20,0x2f,0x82,0x62,0x23,0x2,0x12,0x22,0xe2,0x24,0x24,0x28,0x31,0x20,0x10,0x14,0x1e,0xe0,0x40,0x3e,0x84,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xa8,0x10,
-+0x0,0xff,0x4,0x4,0x3f,0x24,0x24,0x24,0x24,0x28,0x30,0x2f,0x20,0x20,0x3f,0x20,0x4,0xfe,0x40,0x48,0xfc,0x48,0x48,0x48,0x78,0x8,0x48,0xe8,0x8,0x8,0xf8,0x8,
-+0x2,0x2,0xff,0x4,0x4,0xf,0x8,0x18,0x2f,0x48,0x88,0xf,0x8,0x8,0x8,0x8,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x4,0x4,0x4,0xff,0x4,0x4,0xf,0x8,0x14,0x12,0x21,0x40,0x81,0x6,0x18,0x60,0x0,0x0,0x4,0xfe,0x0,0x0,0xf0,0x10,0x20,0x20,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x2,0x2,0x2,0xff,0x4,0x4,0x8,0x8,0x1f,0x28,0x48,0x88,0x8,0x8,0xf,0x8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x10,0x1f,0x31,0x51,0x92,0x13,0x15,0x19,0x11,0x11,0x11,0x11,0x11,0x80,0x80,0x80,0x84,0xfe,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0xe,0xf0,0x12,0x57,0x39,0x11,0xff,0x11,0x39,0x35,0x55,0x91,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x0,0x47,0x20,0x20,0xf,0x1,0xe2,0x24,0x2b,0x21,0x21,0x21,0x2a,0x32,0x24,0x8,0x38,0xc0,0x40,0x44,0xfe,0x60,0x50,0x4e,0xf4,0x10,0x20,0x3c,0x4,0x4,0x28,0x10,
-+0x0,0x7f,0x10,0x10,0x10,0x8,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0xf0,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x10,0x10,0x10,0x20,0x25,0x44,0xf8,0x10,0x10,0x20,0x48,0xfc,0x45,0x2,0x4,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x0,0x43,0x30,0x10,0x0,0x7,0xf0,0x10,0x10,0x10,0x10,0x11,0x10,0x28,0x47,0x0,0x10,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x6,0xfc,0x0,
-+0x4,0x42,0x22,0x3f,0x84,0x44,0x47,0xd,0x15,0x25,0xe5,0x25,0x25,0x29,0x35,0x22,0x10,0x10,0x90,0xd0,0x28,0x28,0x44,0x82,0x20,0x18,0x8,0x0,0x20,0x18,0xc,0x4,
-+0x0,0x3f,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x1,0x1,0xff,0x1,0x1,0x5,0x2,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0xfe,0x14,0x33,0x3a,0x56,0x53,0x92,0x12,0x13,0x12,0x12,0x12,0x40,0x60,0x90,0x8,0xf6,0x0,0xc4,0x54,0x54,0xd4,0x54,0x54,0xc4,0x44,0x54,0xc8,
-+0x1,0x1,0x3f,0x20,0x2f,0x20,0x27,0x24,0x27,0x20,0x2f,0x20,0x5f,0x41,0x86,0x18,0xf8,0x0,0xfe,0x84,0xf0,0x84,0xfc,0x10,0xf0,0x80,0xf8,0x80,0xfe,0x40,0x30,0xc,
-+0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x21,0x22,0x27,0x22,0x51,0x50,0x90,0xf,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x8,0x48,0xe8,0x10,0x84,0x92,0x12,0xf0,
-+0x1,0x9,0x31,0x27,0x22,0x3d,0x27,0x21,0x39,0x27,0x21,0xff,0x0,0x10,0x30,0x40,0x0,0x8,0x3c,0xc8,0x8,0x38,0xc8,0x8,0x38,0xc8,0x8,0xfe,0x0,0x10,0xc,0x4,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc1,0x1,0x3f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0x20,0x18,0xc,0x4,0x0,
-+0x1,0x2,0x4,0x8,0x37,0xc0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x26,0x0,0x80,0x40,0x30,0xce,0x4,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x18,
-+0x0,0x41,0x22,0x24,0xb,0x10,0xe7,0x24,0x27,0x24,0x27,0x24,0x25,0x50,0x8f,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0x88,0x98,0x6,0xfc,0x0,
-+0x4,0x4,0xf,0x10,0x20,0x7f,0xa1,0x21,0x3f,0x21,0x21,0x3f,0x20,0x0,0xff,0x0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x4,0xfe,0x0,
-+0x20,0x20,0x21,0x22,0xb5,0xa8,0xa7,0x24,0x24,0x27,0x24,0x24,0x27,0x24,0x24,0x25,0x40,0xc0,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x0,0x40,0x31,0x12,0x85,0x68,0x27,0xc,0x14,0x27,0xe4,0x24,0x27,0x24,0x24,0x25,0x40,0xc0,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x1,0x41,0x31,0x12,0x84,0x6f,0x24,0xc,0x17,0x24,0xe4,0x27,0x24,0x20,0x2f,0x20,0x0,0x0,0xf8,0x10,0x24,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,0x0,0xfe,0x0,
-+0x0,0x7b,0x4a,0x52,0x53,0x62,0x52,0x4b,0x48,0x4f,0x6c,0x54,0x45,0x44,0x44,0x44,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x44,0xfe,0x44,0x54,0xf4,0x84,0x14,0x8,
-+0x0,0x3f,0x0,0x2,0x1,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x40,0x80,0x0,0x80,0xfc,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x24,0x25,0x24,0x44,0x2f,0x10,0x28,0x45,0x82,0x4,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0xff,0x1,0x1,0x3f,0x21,0x21,0x29,0x25,0x21,0x21,0x29,0x25,0x21,0x21,0x20,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x48,0x28,0x8,0x8,0x48,0x28,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x48,0xe8,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x10,0x10,0x54,0x54,0x54,0x54,0x54,0x54,0x57,0x7c,0x44,0x0,0x0,0x0,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x0,0x7f,0x1,0x3f,0x21,0x21,0x3f,0x1,0x7f,0x41,0x41,0x5f,0x48,0x40,0x40,0x10,0x78,0x80,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x44,0xe4,0x24,0x4,0xc,
-+0x2,0x1,0x7f,0x40,0x80,0x1f,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4f,0x21,0x21,0x7,0x2,0xe2,0x3f,0x20,0x20,0x27,0x24,0x2c,0x34,0x27,0x4,0x8,0xfc,0x0,0x10,0xf8,0x10,0x14,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7e,0x2,0x2,0x22,0x12,0x12,0x2,0xa,0x12,0x62,0x22,0x2,0x2,0x14,0x8,0x4,0xfe,0x4,0x4,0x44,0x24,0x24,0x4,0x14,0x24,0xc4,0x44,0x4,0x4,0x28,0x10,
-+0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x40,0x30,0x10,0x4,0xfe,0x0,
-+0x20,0x20,0x20,0x27,0xf8,0x20,0x27,0x24,0x24,0x24,0x3f,0xe0,0x43,0xc,0x0,0x1,0x20,0x28,0x24,0xfe,0x20,0xa0,0xe0,0xa4,0xa4,0xa8,0x90,0x10,0xaa,0x4a,0x86,0x0,
-+0x8,0x8,0xff,0x8,0x0,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x20,0x24,0xfe,0x20,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x11,0xff,0x20,0x22,0x7f,0x62,0xa2,0x3e,0x22,0x22,0x3e,0x22,0x22,0x2a,0x24,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x0,0xb,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x1,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x47,0x24,0x27,0x4,0x7,0xe0,0x2f,0x28,0x28,0x2b,0x28,0x28,0x50,0x88,0x7,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x84,0xfe,0x84,0xa4,0xf4,0x4,0x14,0x8,0x6,0xfc,
-+0x0,0x10,0x79,0x52,0x55,0x58,0x57,0x54,0x54,0x57,0x54,0x74,0x57,0x4,0x4,0x5,0x40,0xc0,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x10,0x10,0x10,0x55,0x54,0x54,0x54,0x55,0x56,0x55,0x55,0x7d,0x45,0x1,0x1,0x1,0x50,0x50,0x88,0x24,0x50,0x50,0x88,0x6,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x14,0x14,0x27,0x4a,0x82,0x12,0x2f,0x62,0xaa,0x2b,0x2a,0x2a,0x2b,0x3c,0x28,0x20,0x0,0x4,0xbe,0x24,0x24,0xa4,0xe4,0x24,0x24,0xa4,0x24,0x34,0xa8,0x20,0x20,0x20,
-+0x1,0x2,0x4,0xf,0x30,0xde,0x12,0x1e,0x12,0x1e,0x12,0x16,0x29,0x28,0x48,0x7,0x0,0x80,0x40,0xf0,0xe,0x14,0x90,0x90,0x90,0x90,0x10,0x30,0x4,0x92,0x12,0xf0,
-+0x28,0x28,0x44,0x92,0x10,0x29,0x46,0x82,0x7c,0x44,0x44,0x44,0x44,0x7c,0x45,0x2,0x40,0x40,0x40,0x7c,0x84,0x28,0x20,0x20,0x20,0x20,0x50,0x50,0x90,0x88,0xe,0x4,
-+0x4,0x88,0x54,0x22,0x52,0x91,0x1e,0x12,0x32,0x52,0x92,0x13,0x12,0x10,0xa1,0x42,0x20,0x20,0x30,0x28,0x20,0xfe,0x20,0x20,0x20,0x20,0xd0,0x50,0x88,0x88,0x6,0x4,
-+0x2,0x1,0xff,0x4,0x8,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x0,0x10,0xf8,0x8,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x22,0x11,0x9,0xff,0x4,0x9,0x1f,0x20,0xdf,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x8,0x10,0x24,0xfe,0x40,0x20,0xf0,0xe,0xf4,0x0,0xf0,0x0,0xf0,0x10,0xf0,0x10,
-+0x1,0x41,0x32,0x14,0x80,0x60,0x20,0x9,0x12,0x27,0xea,0x22,0x22,0x22,0x23,0x22,0x10,0x10,0x8,0x44,0x40,0xa0,0xa0,0x10,0x8,0xfe,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x1,0x7f,0x40,0x9f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x21,0x21,0x2f,0x20,0x20,0x0,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x8,0x28,0xe8,0x28,0x10,
-+0x21,0x11,0x12,0xfc,0x8,0x10,0x10,0x35,0x5a,0x97,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x8,0x44,0x40,0xa0,0xa0,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7d,0x4,0x8,0x29,0x11,0xff,0x15,0x11,0x11,0x11,0x11,0x11,0x10,0x50,0x23,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x58,0x84,0x2,
-+0x0,0x7c,0x4,0x9,0x2b,0x11,0xff,0x15,0x10,0x11,0x12,0x11,0x16,0x10,0x53,0x20,0x40,0x78,0x90,0x24,0xfe,0x24,0x44,0xfc,0x84,0x48,0xb0,0x30,0x68,0xa6,0x24,0x60,
-+0x4,0x7e,0x5,0x24,0x24,0x24,0x24,0x24,0x3e,0x2,0x2,0x1e,0xe2,0x42,0x14,0xb,0x0,0x0,0xfc,0x4,0x4,0x84,0x84,0x88,0x88,0x50,0x20,0x50,0x50,0x88,0x8e,0x4,
-+0x10,0x1e,0x22,0x52,0x14,0x8,0x12,0xef,0xa,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x8,0xfc,0x88,0xa8,0x98,0x82,0x7e,0xe0,0x20,0xa0,0x48,0xfc,0x8,0xe8,0x8,0x18,
-+0x0,0x44,0x36,0x15,0x85,0x64,0x27,0x4,0xc,0x14,0x25,0xe5,0x26,0x24,0x28,0x30,0x4,0x44,0x4c,0x54,0x64,0x44,0xfc,0x44,0xc4,0xe4,0x5c,0x4c,0x44,0x44,0x44,0x4,
-+0x0,0x7f,0x44,0x87,0x8,0x10,0x3f,0x51,0x11,0x1f,0x12,0x2,0x4,0x8,0x10,0x60,0x0,0xfe,0x2,0xe4,0x40,0x90,0xf8,0x10,0x10,0xf0,0x90,0x80,0xa2,0x92,0x7e,0x0,
-+0x0,0x3f,0x0,0x0,0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0xc0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x13,0x10,0x10,0xfd,0x11,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0x7,0x0,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x0,
-+0x1,0x1,0x3f,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x5,0x8,0x18,0xea,0xc,0x8,0x0,0x10,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x8,0x90,0x60,0x30,0xe,0x4,
-+0x0,0x3f,0x21,0x21,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x24,0x44,0x48,0x92,0x1,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x90,0x88,0x84,0x84,0x0,
-+0x10,0x17,0x12,0x11,0xff,0x10,0x10,0x1f,0x30,0xd1,0x11,0x12,0x12,0x14,0x59,0x22,0x1c,0xe8,0x48,0x50,0xfc,0x80,0x84,0xfe,0x80,0xf8,0x8,0x90,0x60,0x90,0xe,0x4,
-+0x10,0x10,0x23,0xfc,0x27,0x40,0x93,0xfe,0x12,0x13,0x1d,0xf1,0x53,0x15,0x11,0x11,0x40,0x48,0xfc,0x40,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x44,0x28,0x10,0x4e,0x84,0x0,
-+0x0,0x7f,0x40,0x4f,0x40,0x40,0x5f,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x4,0xfe,0x44,0xe4,0x4,0x24,0xf4,0x84,0x84,0x84,0x94,0x94,0x74,0x4,0xfc,0x4,
-+0x0,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x20,0x21,0x21,0x21,0x21,0x22,0x4,0x18,0x60,0x10,0xf8,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x60,0x18,0x4,
-+0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x5f,0x50,0x51,0x51,0x52,0x44,0x48,0x7f,0x40,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x4,0xf4,0x14,0x14,0x14,0x94,0x44,0x24,0xfc,0x4,
-+0x2,0x44,0x2b,0x10,0x2f,0x48,0x8b,0xa,0x1a,0x2b,0x49,0x89,0xb,0xd,0x51,0x21,0x40,0x48,0xfc,0x40,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x44,0x28,0x10,0x4e,0x84,0x0,
-+0x0,0x47,0x34,0x14,0x84,0x65,0x25,0xd,0x15,0x25,0xe4,0x24,0x29,0x2a,0x30,0x20,0x4,0xfe,0x20,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x20,0xa8,0xa6,0x22,0xa0,0x40,
-+0x10,0x10,0x21,0x23,0x48,0xff,0x10,0x21,0x42,0xfc,0x1,0x2,0x1c,0xe1,0x46,0x0,0x80,0xf8,0x8,0xf0,0x14,0xfe,0x80,0x88,0x50,0xe0,0x60,0x50,0xc8,0x4e,0x44,0xc0,
-+0x0,0x43,0x30,0x10,0x0,0x7,0xf1,0x11,0x11,0x11,0x12,0x12,0x14,0x28,0x47,0x0,0x10,0xf8,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0x24,0x1c,0x0,0x6,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x10,0x1e,0x12,0x22,0x22,0x64,0x94,0x8,0x8,0x10,0x20,0x40,0x40,0x44,0xfe,0x40,0x8,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0,
-+0x0,0x3f,0x21,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x44,0x89,0x9,0x28,0x28,0x47,0x8,0xfc,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x90,0x88,0x0,0x94,0x12,0xf2,
-+0x10,0x1e,0x12,0x22,0x22,0x54,0x8c,0x8,0x10,0x20,0x42,0x11,0x51,0x50,0x8f,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x90,0x84,0x84,0x7c,0x0,0x0,0x14,0x12,0xf2,0x0,
-+0x0,0x78,0x4f,0x54,0x58,0x63,0x50,0x48,0x4f,0x48,0x68,0x50,0x41,0x41,0x42,0x4c,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0x8,0xfc,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x0,0x0,0x7f,0x40,0x40,0x40,0x40,0x7f,0x40,0x40,0x40,0x40,0x7f,0x40,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,
-+0x10,0x10,0x20,0x21,0x45,0xfa,0x14,0x20,0x40,0xfc,0x0,0x0,0x1c,0xe0,0x40,0x0,0x80,0x80,0x80,0x4,0xfe,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x10,0x7d,0x11,0x11,0xff,0x11,0x51,0x5d,0x51,0x50,0x70,0x49,0x44,0x83,0x20,0x28,0x28,0xfc,0x20,0x20,0x28,0x28,0x70,0xa0,0x24,0x54,0x8c,0x0,0x6,0xfc,
-+0x0,0x7c,0x47,0x44,0x44,0x7c,0x10,0x13,0x5c,0x50,0x50,0x51,0x5d,0xf2,0x44,0x8,0x8,0x1c,0xe0,0x40,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x10,0x11,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x15,0x19,0x12,0x4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0xff,0x1,0x11,0x11,0x11,0x11,0x1f,0x10,0xf0,0x0,0x0,0x10,0xf8,0x80,0x80,0x84,0xfe,0x0,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x2,0x1f,0x15,0x11,0x1f,0x11,0x15,0x1f,0x0,0xff,0x4,0xf,0x0,0x0,0x0,0x0,0x10,0xf8,0x50,0x10,0xf0,0x10,0x50,0xf0,0x4,0xfe,0x0,0xf0,0x10,0x10,0xa0,0x40,
-+0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x10,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x12,0x11,0x10,0x13,0x5a,0x56,0x52,0x92,0x13,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x8,0x18,0xa0,0xf8,0x8,0x8,0x8,0x8,0xf8,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x20,0x17,0x50,0x44,0x42,0x4f,0x48,0x48,0x4f,0x4a,0x42,0x42,0x44,0x48,0x50,0x40,0x4,0xfe,0x4,0x44,0x84,0xe4,0x24,0x24,0xe4,0xa4,0x84,0x94,0x94,0x74,0x4,0xc,
-+0x8,0x8,0x7e,0x8,0x8,0x7e,0x9,0x8,0xfe,0x18,0x1c,0x2a,0x28,0x49,0x8,0x8,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0x88,0x84,0xfc,0x4,0x0,
-+0x0,0x0,0x1f,0x0,0x0,0x0,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x3f,0x0,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0xf8,0x8,
-+0x2,0x3f,0x22,0x22,0x3e,0x1,0x7f,0x41,0x49,0x49,0x49,0x49,0x14,0x12,0x21,0x41,0x0,0x7c,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,0x40,
-+0x8,0x8,0xf,0x10,0x10,0x26,0x43,0x81,0x0,0x0,0x3,0x1c,0x8,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x24,0xc4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x7c,0x44,0x48,0x48,0x50,0x49,0x49,0x45,0x45,0x45,0x69,0x50,0x40,0x40,0x43,0x8,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x50,0x48,0x84,0x4,
-+0x2,0x2,0x4,0x8,0x10,0x7f,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0xc0,0x0,0x0,0x40,0x20,0x10,0xf8,0x88,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x43,0x30,0x10,0x0,0x7,0xf0,0x10,0x11,0x11,0x12,0x17,0x10,0x28,0x47,0x0,0x10,0xf8,0x0,0x0,0x8,0xfc,0x80,0x80,0x0,0x20,0x10,0xf8,0x8,0x6,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x11,0x21,0x45,0x79,0x11,0x20,0x7f,0x2,0x1e,0xe2,0x47,0x0,0x40,0x44,0xfe,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x94,0x94,0x94,0xfe,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x53,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x0,0x88,0x7c,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x20,0x20,0x44,0xfe,0x2,0x0,
-+0x1f,0x10,0x1f,0x10,0x1f,0x0,0x7f,0x42,0x9f,0x4,0x9,0x1f,0x1,0x7f,0x1,0x1,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x0,0x0,0xf0,0x0,0xfc,0x0,0x0,
-+0x10,0x8,0x7f,0x0,0x22,0x14,0xff,0x2,0x3f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x20,0x20,0x24,0x7e,0x84,0x4,0x44,0x24,0x24,0xc,0x34,0xc4,0x4,0x4,0x28,0x10,
-+0x0,0x3f,0x8,0x8,0x8,0x10,0x1f,0x20,0x40,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x20,0xf0,0x20,0x24,0x7e,0x4,0xc4,0x54,0x88,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x20,0x20,0x2f,0x28,0x28,0x28,0x28,0x28,0x28,0x20,0x20,0x3f,0x0,0x8,0xfc,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x84,0xfe,0x0,
-+0x8,0xfd,0x11,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x0,0x4,0xfe,0x10,0x10,0x7c,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x10,0x14,0xfe,0x0,
-+0x4,0x4,0x3f,0x4,0x4,0x8,0x8,0x11,0x21,0x1,0xff,0x1,0x9,0x11,0x25,0x2,0x0,0x20,0xf0,0x20,0x20,0x24,0x24,0x1c,0x0,0x4,0xfe,0x0,0x20,0x18,0x8,0x0,
-+0x8,0xa,0x7f,0x8,0x8,0xff,0x8,0xa,0x7f,0x8,0x1c,0x1a,0x2a,0x48,0x89,0xa,0x40,0x50,0x48,0x48,0x40,0xfe,0x40,0x40,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x8,0x8,0xa,0x7f,0x8,0x8,0xff,0x2,0x3f,0x22,0x22,0x22,0x22,0x3e,0x21,0x2,0x40,0x60,0x58,0x48,0x40,0x44,0xfe,0x40,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x2,0x1,0x7f,0x40,0x81,0x1,0x11,0x11,0x11,0x21,0x2,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0xfe,0x2,0x4,0x0,0x10,0x18,0x20,0x40,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x2,0x1,0x7f,0x42,0x81,0x3f,0x8,0x4,0x2,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0x0,0x0,0xfe,0x2,0x14,0xf8,0x20,0x40,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0x0,
-+0x8,0xa,0x7f,0x8,0x8,0xff,0x10,0xff,0x20,0x28,0x7e,0x8,0xf,0xf8,0x9,0xa,0x40,0x50,0x48,0x48,0x40,0xfe,0x40,0x40,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x0,0x7f,0x1,0x1,0x1f,0x11,0x11,0x1f,0x11,0x11,0xff,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x14,0xfe,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x2,0x2,0xff,0x4,0x4,0x8,0x8,0x13,0x30,0x50,0x90,0x10,0x10,0x17,0x10,0x0,0x0,0x4,0xfe,0x0,0x40,0x40,0x50,0xf8,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x20,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x22,0x2a,0x2f,0x32,0xff,0x25,0x25,0x29,0x33,0xe2,0x22,0x22,0x22,0x20,0xa3,0x4c,0x8,0x28,0xbe,0x48,0xfe,0x14,0x14,0xa6,0xf8,0x8,0x48,0x48,0x48,0xa0,0x18,0x4,
-+0x10,0x7e,0x10,0x28,0x7e,0x8,0xfe,0x9,0xa,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x10,0x10,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x8,0x28,0x3e,0x48,0xff,0x14,0x16,0x24,0x40,0x1f,0x10,0x11,0x11,0x12,0xc,0x30,0x10,0x50,0x7c,0x90,0xfe,0x28,0x28,0x4a,0x86,0xf0,0x10,0x10,0x10,0x90,0x60,0x18,
-+0x4,0x7e,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x29,0x45,0x82,0x20,0x14,0xfe,0x0,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x45,0x95,0xa,0x20,0x14,0xfe,0x0,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x4,0xff,0x4,0x7f,0x10,0x1e,0x22,0x54,0x8,0x70,0x4,0xff,0x4,0x4,0x8,0x10,0x44,0xfe,0x40,0xfc,0x80,0x98,0xe0,0x84,0x84,0x7c,0x40,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x4f,0x30,0x17,0x4,0x7,0xf4,0x17,0x10,0x13,0x12,0x13,0x12,0x13,0x28,0x47,0xa4,0xfe,0xa0,0xfc,0xa4,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x6,0xfc,
-+0x20,0x20,0xaf,0x70,0x27,0x24,0xff,0x24,0x77,0x68,0xa3,0x22,0x23,0x22,0x23,0x22,0xa0,0xa4,0xfe,0xa0,0xfc,0xa4,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x4,0x24,0x14,0x4,0xff,0x0,0x4,0x22,0x2f,0x21,0x21,0x2f,0x21,0x21,0x3f,0x20,0x40,0x48,0x50,0x44,0xfe,0x0,0x40,0x88,0xe8,0x8,0x48,0xe8,0x8,0x8,0xf8,0x8,
-+0x4,0xff,0x4,0x23,0x1a,0x8b,0x40,0x4f,0x14,0x27,0xe0,0x2f,0x20,0x21,0x22,0x24,0x44,0xfe,0x40,0xf8,0x8,0xf8,0x0,0xbc,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x44,
-+0x1,0x1,0xff,0x1,0x3f,0x21,0x23,0x25,0x9,0x30,0xc7,0x0,0x0,0xe,0x1,0x0,0x0,0x4,0xfe,0x0,0xf8,0x8,0x88,0x50,0x30,0xe,0x4,0xc0,0x40,0x0,0xc0,0x40,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x11,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x3,0x42,0x32,0x13,0x80,0x67,0x24,0xc,0x17,0x20,0xef,0x20,0x21,0x22,0x24,0x28,0xf8,0x8,0x8,0xf8,0x0,0xbc,0xa4,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x3f,0x0,0x11,0x9,0x4,0x3,0xd,0x11,0x7f,0x91,0x11,0x1f,0x1,0x1,0x3f,0x10,0xf8,0x8,0x10,0x20,0x40,0x80,0x60,0x10,0xfe,0x14,0x10,0xf0,0x20,0xf0,0x8,0x8,
-+0x4,0x7e,0x44,0x44,0x44,0x7d,0x11,0x51,0x5d,0x50,0x53,0x50,0x5c,0xf1,0x42,0x0,0xf8,0x88,0x88,0xf8,0x0,0xdc,0x54,0x54,0xdc,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20,
-+0x3,0x12,0x7a,0x53,0x50,0x57,0x54,0x54,0x57,0x50,0x5f,0x70,0x51,0x2,0x4,0x0,0xf8,0x8,0x8,0xf8,0x0,0xbc,0xa4,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x0,0x42,0x32,0x13,0x4,0x0,0xf7,0x10,0x13,0x12,0x12,0x12,0x13,0x28,0x47,0x0,0x40,0x40,0x50,0xf8,0x40,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x6,0xfc,0x0,
-+0x2,0x4,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x1,0x1,0xff,0x1,0x1,0x1,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x0,0x0,0x4,0x4,0xfc,
-+0x10,0x10,0x10,0x12,0x54,0x58,0x53,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x87,0x0,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x12,0x54,0x59,0x51,0x91,0x11,0x10,0x13,0x28,0x24,0x45,0x82,0x0,0xf8,0x88,0x88,0xf8,0x0,0xdc,0x54,0x54,0xdc,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20,
-+0x1,0x1,0x3f,0x1,0x1f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x12,0x2,0xc,0x30,0x0,0x10,0xf8,0x0,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x10,0x13,0x11,0x10,0xfc,0x10,0x15,0x1a,0x35,0xd0,0x10,0x17,0x10,0x10,0x50,0x20,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0xf4,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,
-+0x1,0x7f,0x41,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x14,0x12,0x21,0xc1,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x40,0x33,0x11,0x0,0x80,0x60,0x21,0xa,0x15,0x20,0xe0,0x27,0x20,0x20,0x20,0x20,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0xf4,0x40,0x40,0xfc,0x40,0x40,0x40,0x40,
-+0x4,0x7e,0x44,0x54,0x57,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x29,0x25,0x42,0x84,0x20,0x28,0x24,0x20,0xfe,0xa0,0xa0,0x94,0xf4,0x98,0x98,0x90,0x28,0x2a,0x4a,0x86,
-+0x8,0x8,0xf,0x14,0x24,0x47,0x4,0x4,0x7,0x4,0x4,0x52,0x51,0x90,0xf,0x0,0x0,0x8,0xfc,0x0,0x20,0xf0,0x0,0x20,0xf0,0x0,0x0,0x4,0x92,0x92,0xf0,0x0,
-+0x22,0x21,0x20,0x20,0x27,0xfc,0x25,0x24,0x27,0x20,0x3b,0xe2,0x43,0x2,0x3,0x2,0x8,0x10,0xa0,0x4,0xfe,0x44,0x54,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x12,0x11,0x10,0x10,0x5f,0x54,0x55,0x94,0x17,0x10,0x13,0x12,0x13,0x12,0x13,0x12,0x8,0x10,0xa0,0x4,0xfe,0x44,0x54,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x10,0x8,0x4,0x0,0x3f,0x21,0x29,0x21,0x3f,0x0,0xf,0x8,0xf,0x8,0xf,0x8,0x10,0x20,0x40,0x8,0xfc,0x8,0x28,0x8,0xf8,0x20,0xf0,0x20,0xe0,0x20,0xe0,0x20,
-+0x1,0x7c,0x44,0x54,0x55,0x55,0x55,0x55,0x55,0x54,0x54,0x54,0x20,0x28,0x44,0x80,0x4,0x88,0x50,0x4,0xfe,0x24,0xac,0x24,0xfc,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x88,
-+0x8,0x8,0x8,0xa,0xff,0x8,0xa,0xc,0x38,0xc8,0x8,0x8,0x8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x8,0x7c,0x4f,0x48,0x49,0x4a,0x4c,0x4b,0x4a,0x4b,0x7a,0x4b,0x0,0xf,0x0,0x40,0x40,0x48,0xfc,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0,
-+0x0,0x40,0x30,0x17,0x80,0x61,0x22,0xc,0x13,0x22,0xe3,0x22,0x23,0x20,0x2f,0x20,0x40,0x40,0x48,0xfc,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0,
-+0x8,0x8,0x8,0x8,0xff,0x8,0x18,0x1c,0x2a,0x28,0x48,0x8,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x12,0xff,0x20,0x28,0x4a,0x7f,0x8,0x8,0xf,0xf8,0x48,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x20,0x27,0x3c,0x45,0x85,0x7d,0x25,0x25,0xfd,0x25,0x25,0x21,0x2a,0x32,0x24,0x8,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x14,0x84,0x44,0x54,0x8,
-+0x20,0x1b,0x48,0x40,0x4f,0x49,0x49,0x4f,0x49,0x49,0x4f,0x49,0x41,0x41,0x41,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x4,0x4,0x14,0x8,
-+0x8,0x7c,0x4b,0x48,0x48,0x78,0x4b,0x48,0x48,0x78,0x48,0x49,0x4e,0x7d,0x48,0x0,0xc,0x30,0xc0,0x80,0x40,0x40,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x6,0xfc,0x0,
-+0x20,0x27,0x24,0x24,0xfc,0x24,0x74,0x6f,0xa4,0x24,0x24,0x24,0x24,0x29,0x30,0x20,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x54,0x88,
-+0x10,0x10,0x13,0x12,0xfd,0x10,0x38,0x35,0x52,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0xfe,0x8a,0x4,0x40,0xfe,0x80,0x88,0xfc,0x80,0x84,0xfe,0x80,0x80,0x80,
-+0x1,0x9,0x7d,0x49,0x4a,0x4a,0x4c,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x8,0x8,0xf,0x12,0x12,0x22,0x43,0x82,0x2,0x2,0x3,0x2,0x2,0x2,0x2,0x2,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,
-+0x11,0x11,0x11,0x15,0x5a,0x52,0x54,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x1,0x41,0x31,0x11,0x2,0x2,0xf4,0x10,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x10,0x10,0x17,0x11,0xf8,0x17,0x14,0x1c,0x37,0xd4,0x15,0x15,0x15,0x15,0x55,0x24,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x44,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x2,0x1,0xff,0x8,0x4,0x3,0x1c,0xe0,0x1f,0x2,0x4,0x3f,0x24,0x24,0x24,0x20,0x0,0x4,0xfe,0x20,0x40,0x80,0x70,0xe,0xf0,0x0,0x8,0xfc,0x48,0x48,0x48,0x18,
-+0x2,0x1,0x7f,0x40,0x80,0x3,0x3e,0x2,0x3,0x7e,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0xfe,0x2,0x34,0xc0,0x0,0x8,0xfc,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x2,0x1,0x7f,0x48,0x94,0x4,0xb,0x12,0x22,0x43,0x2,0x2,0x3,0x2,0x2,0x2,0x0,0x0,0xfe,0x22,0x14,0x0,0xfc,0x0,0x20,0xf0,0x0,0x10,0xf8,0x0,0x0,0x0,
-+0x8,0xf,0x8,0x13,0x10,0x3f,0x50,0x93,0x12,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0xb0,0x8,0x4,
-+0x2,0x1,0x7f,0x44,0xbf,0x4,0x1f,0x4,0xff,0x4,0x9,0x3f,0xc5,0x9,0x15,0x2,0x0,0x0,0xfe,0x42,0xfc,0x40,0xf0,0x44,0xfe,0x40,0x20,0xf8,0x46,0x30,0x10,0x0,
-+0x8,0x7c,0x49,0x4b,0x4a,0x7b,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x44,0x8,0x80,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x84,0xfc,0x84,
-+0x4,0xe,0xf0,0x10,0x14,0x1e,0x70,0x14,0x1f,0xf1,0x11,0x11,0x11,0x11,0xf,0x0,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0xfa,0xa,0xfe,0x0,
-+0x10,0x1f,0x20,0x7f,0xa5,0x28,0x3f,0x20,0x27,0x20,0x27,0x20,0x47,0x44,0x87,0x4,0x0,0xf0,0x44,0xfe,0x10,0x88,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xfc,0x8,0xf8,0x8,
-+0x8,0x8,0x49,0x2a,0x8,0xff,0x8,0x18,0x1d,0x2b,0x29,0x49,0x89,0x9,0x9,0x8,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x0,0x40,0x30,0x10,0x80,0x60,0x20,0xf,0x14,0x24,0xe4,0x24,0x24,0x24,0x27,0x24,0x80,0x80,0x84,0xfe,0x80,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x2,0x3,0x7e,0x3,0x7e,0x1,0x1,0xe,0x70,0x3f,0x24,0x24,0x24,0xff,0x0,0x40,0x20,0xf8,0x0,0xfc,0x20,0x40,0x82,0x62,0x1e,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x10,0x10,0x14,0xfe,0x20,0x28,0x48,0x7e,0x8,0x8,0xe,0xf8,0x49,0x9,0xa,0x8,0x8,0x1c,0xe0,0x80,0x80,0x84,0xfe,0x90,0x90,0x90,0x90,0x90,0x10,0x10,0x10,0x10,
-+0x20,0x23,0x2a,0xff,0x42,0x52,0x93,0xfe,0x12,0x13,0x1e,0xf2,0x54,0x14,0x18,0x10,0x4,0xfe,0x4,0xfc,0x50,0x50,0xfc,0x50,0x54,0xfe,0xa4,0xa8,0x90,0x88,0xce,0x84,
-+0x1,0x21,0x3f,0x10,0x14,0xfe,0x20,0x48,0x7e,0x8,0xe,0xf8,0x49,0x9,0xa,0x8,0x0,0x8,0xf8,0x0,0x1c,0xe0,0x80,0x84,0xfe,0x90,0x90,0x90,0x10,0x10,0x10,0x10,
-+0x0,0x3f,0x20,0x3f,0x22,0x22,0x2f,0x22,0x22,0x3f,0x24,0x24,0x24,0x45,0x86,0x4,0x8,0xfc,0x8,0xf8,0x20,0x20,0xf8,0x20,0x24,0xfe,0x88,0x50,0x30,0xe,0x4,0x0,
-+0x8,0xff,0x8,0xfe,0x28,0x29,0x7e,0x54,0x54,0x54,0x6c,0x44,0x7c,0x45,0x7d,0x46,0x20,0xfe,0x20,0x90,0x90,0xfe,0x90,0xfc,0x90,0xfc,0x90,0xfe,0x0,0x54,0x52,0x2,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x30,0x38,0x57,0x50,0x10,0x10,0x10,0x11,0x16,0x10,0x80,0x90,0x88,0x80,0xf8,0x80,0x88,0xfc,0x80,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x2,0x2,0x2,0x3,0x2,0x2,0x2,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x12,0x1f,0x10,0x13,0x10,0x7e,0x42,0x42,0x42,0x42,0x42,0x7e,0x41,0x2,0x40,0x50,0x48,0x48,0x7e,0xc0,0x40,0x40,0x48,0x28,0x30,0x20,0x50,0x92,0xa,0x6,
-+0x0,0x20,0x10,0x10,0xfe,0x0,0x44,0x44,0x25,0x25,0x29,0x9,0x1f,0xe1,0x41,0x1,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x41,0x37,0x11,0x81,0x61,0x21,0x9,0x11,0x2f,0xe4,0x25,0x26,0x24,0x27,0x20,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0xa0,0x18,0x8,0x0,0xfc,0x0,
-+0x10,0x10,0x23,0x22,0x44,0xf8,0x13,0x20,0x40,0xfc,0x40,0x1,0x1d,0xe2,0x44,0x0,0x40,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0xa8,0xbc,0xa0,0x20,0xa0,0x66,0x1c,0x0,
-+0x10,0x17,0x11,0x10,0xff,0x10,0x33,0x3a,0x57,0x52,0x93,0x10,0x1f,0x10,0x10,0x10,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40,
-+0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x1,0x0,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x4,0x7f,0x11,0xa,0xff,0x0,0x3f,0x20,0x3f,0x20,0x3f,0x4,0xff,0x4,0x4,0x4,0x4,0xc4,0x8,0x10,0xe0,0x84,0xc4,0x88,0x90,0xa2,0x82,0x4,0xe8,0x10,0x20,0xc0,
-+0x0,0x47,0x31,0x10,0x8f,0x60,0x23,0xa,0x13,0x22,0xe3,0x20,0x2f,0x20,0x20,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40,
-+0x9,0xfd,0x9,0x9,0x9,0x79,0x41,0x47,0x41,0x79,0x9,0x9,0x9,0x9,0x51,0x21,0x0,0x8,0x8,0x10,0x20,0x40,0x4,0xfe,0x40,0x40,0x20,0x20,0x10,0x4e,0x84,0x0,
-+0x11,0x9,0x7f,0x40,0x9f,0x10,0x1f,0x0,0x7f,0x1,0x3f,0x1,0xff,0x1,0x5,0x2,0x10,0x20,0xfe,0x2,0xf4,0x10,0xf0,0x38,0xc0,0x0,0xf8,0x0,0xfe,0x0,0x0,0x0,
-+0x40,0x2f,0x21,0x1,0x81,0x4f,0x48,0x8,0x18,0x2f,0xe1,0x21,0x21,0x21,0x2a,0x24,0x40,0x40,0x44,0x44,0x48,0x50,0x44,0xfe,0x50,0x50,0x50,0x48,0x48,0x44,0x62,0x40,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x31,0x39,0x54,0x50,0x90,0x10,0x10,0x10,0x11,0x16,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0xa0,0xa0,0x40,0x60,0x90,0xe,0x4,
-+0x0,0x0,0x0,0x0,0xff,0x0,0x8,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x18,0xe0,0x80,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80,0x60,0x1e,0x4,
-+0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x5c,0x10,0x10,0x10,0x10,0x80,0x84,0x84,0x88,0x90,0xa0,0x84,0xfe,0xa0,0xa0,0x90,0x90,0x88,0x8e,0xc4,0x80,
-+0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x54,0x10,0x28,0x44,0x80,0x80,0x84,0x84,0x88,0x90,0xa0,0x84,0xfe,0xa0,0xa0,0x90,0x90,0x88,0x8e,0xc4,0x80,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x51,0x91,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0xa0,0xa0,0x40,0x60,0x90,0xe,0x4,
-+0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x44,0x94,0x8,0x80,0x84,0x84,0x88,0x90,0xa0,0x84,0xfe,0xa0,0xa0,0x90,0x90,0x88,0x8e,0xc4,0x80,
-+0x0,0x1f,0x10,0x97,0x51,0x5f,0x10,0x17,0x34,0x57,0x94,0x17,0x20,0x2f,0x40,0x0,0x80,0xfe,0x40,0xfc,0x10,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x40,0xfe,0x40,0x40,
-+0x0,0x7b,0x49,0x50,0x57,0x60,0x53,0x4a,0x4b,0x4a,0x6b,0x50,0x4f,0x40,0x40,0x40,0x40,0xf8,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40,
-+0x10,0x13,0x10,0x10,0xfc,0x10,0x15,0x19,0x32,0xd5,0x11,0x11,0x11,0x11,0x51,0x21,0x4,0xfe,0x84,0x84,0x84,0x84,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0xb,0x7c,0x48,0x48,0x48,0x49,0x79,0x4a,0x4d,0x49,0x49,0x79,0x49,0x1,0x1,0x4,0xfe,0x84,0x84,0x84,0x84,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x10,0x1c,0x30,0xd0,0x10,0x10,0x11,0x12,0x54,0x20,0x80,0xa0,0x90,0x84,0x9e,0xe0,0x80,0x88,0x50,0x60,0x40,0xc0,0x20,0x12,0xa,0x6,
-+0x40,0x33,0x10,0x0,0x80,0x60,0x21,0x9,0x12,0x25,0xe1,0x21,0x21,0x21,0x21,0x21,0x4,0xfe,0x84,0x84,0x84,0x84,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x8,0x7e,0x8,0xa,0xff,0x8,0x28,0x2e,0x28,0x39,0x48,0x44,0x83,0x0,0x0,0x8,0x88,0x88,0x50,0x50,0x20,0x20,0x50,0x48,0x8c,0x4,0x0,0x6,0xfc,0x0,
-+0x0,0x7d,0x44,0x44,0x44,0x44,0x7d,0x44,0x44,0x44,0x44,0x7c,0x0,0x24,0x62,0x82,0x4,0xfe,0x44,0x44,0x84,0x94,0x8,0xfc,0x84,0x84,0x84,0xfc,0x0,0x88,0x46,0x42,
-+0x7f,0x44,0x7f,0x1,0x1,0x1,0x3f,0x20,0x3f,0x20,0x3f,0x1,0xff,0x1,0x1,0x1,0xfc,0x44,0xfc,0x0,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0,0x0,0x0,
-+0x4,0x4,0x4,0x24,0x14,0x14,0x4,0x4,0x1c,0x64,0x4,0x8,0x8,0x10,0x20,0x40,0x80,0x80,0x80,0x90,0xa0,0xc0,0x80,0xc0,0xb0,0x90,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x8,0x3e,0x22,0x3e,0x21,0x5f,0x81,0xff,0x1,0x1f,0x1,0x3f,0x1,0xff,0x1,0x1,0x44,0x7e,0xa8,0x10,0x6e,0xf0,0x14,0xfe,0x10,0xf0,0x0,0xf8,0x0,0xfe,0x0,0x0,
-+0x0,0x3f,0x4,0x4,0x4,0x8,0x8,0x10,0x3f,0x50,0x10,0x10,0x10,0x10,0x1f,0x10,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x24,0x24,0x24,0x25,0x29,0x32,0x50,0x88,0x7,0x40,0x20,0xfc,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0x54,0x52,0x52,0x0,0x6,0xfc,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x12,0x12,0x54,0x20,0x8,0x3c,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x8,0x8,0xfe,0x8,0xe,0x78,0x9,0x9,0x2a,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x10,0x10,0x10,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x8,0x8,0xff,0x8,0xe,0x78,0x8,0x29,0x11,0x1f,0x11,0x11,0x1f,0x1,0x7f,0x0,0x40,0x48,0xfc,0x48,0xc8,0x48,0x6a,0x8a,0x6,0xf0,0x10,0x10,0xf0,0x4,0xfc,0x4,
-+0x22,0x21,0x27,0xfa,0x24,0x57,0x50,0xff,0x14,0x17,0x1c,0xf7,0x54,0x14,0x14,0x15,0x20,0x20,0xe4,0x3e,0xc4,0xa4,0xa4,0xa4,0xa4,0xa8,0x90,0x90,0xa8,0xa8,0xc6,0x84,
-+0x2,0x2,0x3f,0x2,0x2,0xff,0x2,0x4,0xf,0x18,0x28,0x4f,0x88,0x8,0xf,0x8,0x0,0x10,0xe0,0x40,0x84,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x13,0x1c,0x20,0x23,0x7c,0x91,0x13,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0xff,0x9,0x0,0x3f,0x22,0x22,0x3f,0x22,0x22,0x23,0x40,0x49,0x89,0x10,0x20,0x24,0xfe,0x20,0x88,0xfc,0x20,0x28,0xfc,0x20,0x20,0xe0,0x0,0x24,0x22,0x2,
-+0x0,0x40,0x30,0x17,0x0,0x2,0xf1,0x10,0x10,0x10,0x10,0x11,0x12,0x28,0x47,0x0,0x80,0x40,0x48,0xfc,0x10,0x10,0x20,0xa0,0x40,0x40,0xa0,0x10,0x10,0x6,0xfc,0x0,
-+0x2,0x42,0x32,0x12,0x8f,0x62,0x22,0xa,0x13,0x2e,0xe2,0x22,0x22,0x22,0x2b,0x24,0x0,0xc,0x70,0x40,0xc0,0x44,0x7e,0xc8,0x48,0x48,0x48,0x48,0x48,0x88,0x8,0x8,
-+0x0,0x8,0xfc,0x10,0x11,0x12,0x14,0x7d,0x10,0x10,0x11,0x1c,0xf0,0x40,0x0,0x3,0x40,0x40,0xa0,0xa0,0x10,0x2e,0x44,0x80,0x10,0x60,0x84,0x8,0x10,0x20,0xc0,0x0,
-+0x22,0x22,0x7f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x40,0x54,0x62,0x40,0x7f,0x0,0x8,0x8,0x48,0x28,0x8,0x88,0x48,0x8,0x8,0x8e,0xf8,0x8,0x8,0x8,0x8,0x8,
-+0x1,0x1,0x7f,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xff,0x8,0x10,0x20,0x0,0x8,0xfc,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x20,0x18,0x8,
-+0x2,0xff,0x14,0x15,0x7f,0x55,0x55,0x7f,0x49,0x8,0x7f,0x8,0x8,0xf,0x78,0x20,0x4,0xfe,0x40,0x40,0xc8,0x7c,0x48,0x48,0x68,0x58,0x58,0x88,0x88,0xaa,0xca,0x6,
-+0x4,0xfe,0x10,0x10,0x20,0x24,0x7e,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x1,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xfc,0x23,0x20,0x4b,0xfc,0x27,0x21,0xfa,0x25,0x20,0x3b,0xe1,0x42,0x4,0x0,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0xe,0xf4,0x40,0xf8,0x50,0x4c,0x44,0x40,
-+0x1,0x1,0x1,0x1,0x1,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x2,0x4,0x18,0x60,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x30,0x8,0x4,
-+0x10,0x10,0x10,0x1e,0x20,0x20,0x7d,0x90,0x10,0xfe,0x10,0x12,0x14,0x18,0x10,0x0,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x8,0x8,0x8,0x10,0x10,0x37,0x54,0x94,0x14,0x14,0x14,0x14,0x10,0x11,0x16,0x18,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x44,0x44,0x44,0x44,0x44,0x90,0xc,0x6,0x2,
-+0x10,0x10,0x10,0x13,0xfe,0x14,0x30,0x38,0x54,0x50,0x90,0x10,0x11,0x11,0x12,0x14,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0x60,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x1,0x0,0x1f,0x10,0x90,0x51,0x52,0x14,0x39,0x52,0xd4,0x11,0x22,0x20,0x43,0xc,0x0,0x88,0xfc,0x80,0x80,0x40,0x30,0x8e,0x24,0x40,0x80,0x10,0x20,0xc0,0x0,0x0,
-+0x0,0x40,0x20,0x21,0x2,0x4,0xe8,0x20,0x23,0x20,0x20,0x23,0x28,0x30,0x23,0xc,0x40,0x40,0xa0,0x20,0x10,0x2e,0x44,0x90,0x20,0x40,0x88,0x10,0x20,0xc0,0x0,0x0,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3f,0x20,0x2f,0x20,0x3f,0x2a,0x29,0x48,0x8c,0x8,0xf0,0x0,0xfe,0x12,0x64,0x10,0xf8,0x0,0xf0,0x0,0xf8,0x10,0x20,0xc0,0x30,0xc,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x14,0x14,0x58,0x20,0x4,0xfe,0x0,0x8,0xfc,0x0,0x4,0xfe,0xa0,0xa2,0xa4,0x98,0x90,0x8e,0xc4,0x80,
-+0x10,0x10,0x13,0x1c,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x17,0x18,0x11,0x2,0x20,0x24,0xfe,0x20,0xfc,0x4,0xfc,0x4,0xfc,0x4,0xfc,0x4,0xfe,0x88,0x6,0x2,
-+0x0,0x78,0x4f,0x50,0x50,0x61,0x51,0x4b,0x48,0x48,0x68,0x57,0x40,0x40,0x40,0x40,0x80,0x84,0xfe,0x80,0xa0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x8,0x8,0xff,0x8,0x1f,0x0,0x3d,0x5,0x5,0x9,0x35,0xc2,0xf,0x20,0x24,0x42,0x20,0x24,0xfe,0x20,0xe0,0x48,0x98,0x20,0x40,0x30,0xe,0x4,0xe0,0x10,0x8c,0x44,
-+0x10,0x10,0x11,0x12,0xfc,0x13,0x14,0x18,0x37,0xd0,0x10,0x13,0x10,0x10,0x51,0x20,0x80,0x80,0xf8,0x10,0x20,0xf8,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80,
-+0x8,0x7c,0x49,0x4a,0x48,0x7b,0x48,0x48,0x4f,0x78,0x48,0x4b,0x48,0x78,0x49,0x0,0x80,0x80,0xf8,0x10,0x20,0xf8,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80,
-+0x8,0xb,0x10,0x10,0x20,0x48,0x88,0x12,0x32,0x52,0x92,0x12,0x12,0x12,0x1f,0x10,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x2,0x44,0x29,0x12,0x28,0x4b,0x88,0x8,0x1f,0x28,0x48,0x8b,0x8,0x8,0x29,0x10,0x80,0x80,0xf8,0x10,0x20,0xf8,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80,
-+0x8,0xf,0x8,0x10,0x3f,0x41,0x1,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0x5,0x2,0x0,0xe0,0x40,0x90,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0,
-+0x10,0x17,0x10,0x10,0x58,0x54,0x50,0x92,0x12,0x12,0x12,0x12,0x12,0x12,0x1f,0x10,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0x7f,0x8,0x7f,0x49,0x7f,0x1c,0x2a,0xc8,0x3f,0x1,0x9,0x9,0x9,0xff,0x0,0x40,0x44,0x7e,0x88,0x48,0x50,0x20,0x50,0x8e,0xf8,0x0,0xf0,0x0,0x4,0xfe,0x0,
-+0x10,0x13,0x10,0x10,0xfc,0x13,0x15,0x19,0x31,0xd2,0x14,0x10,0x11,0x10,0x5f,0x20,0x0,0xf8,0x10,0x20,0x44,0x48,0x70,0x50,0x50,0x4e,0x44,0x40,0x40,0x84,0xfe,0x0,
-+0x0,0x7f,0x1,0x1,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x4,0xfe,0x10,0x10,0x11,0x5e,0x50,0x50,0x50,0x50,0x5e,0xf0,0x40,0x1,0x2,0x40,0x40,0x44,0xfe,0x88,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x10,0x7c,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x10,0x10,0x13,0x20,0x24,0x3e,0x20,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x84,0x2,
-+0x0,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x32,0x52,0xd2,0x12,0x22,0x22,0x5f,0x0,0x80,0x48,0xfc,0x0,0x8,0xfc,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x41,0x22,0x14,0x7f,0x8,0x8,0x9,0xff,0x8,0x8,0x8,0x14,0x12,0x22,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x17,0x10,0x0,0x0,0xf0,0x11,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x17,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x8,0x8,0xff,0x8,0x2,0x1,0x3f,0x0,0x0,0x3,0xc,0x10,0x60,0x90,0xf,0x0,0x20,0x24,0xfe,0x20,0x0,0x0,0xf0,0x20,0xc0,0x0,0x0,0x0,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x39,0x54,0x50,0x90,0x10,0x10,0x10,0x11,0x16,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x1,0x1,0x1,0xff,0x1,0x1,0x3f,0x8,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0xc0,0x0,0x0,0x4,0xfe,0x0,0x0,0xf0,0x20,0x20,0x40,0x80,0x0,0x80,0x60,0x1e,0x4,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x49,0x49,0x48,0x48,0x48,0x78,0x48,0x0,0x1,0x6,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x22,0x22,0x22,0xfb,0xad,0xa9,0xa9,0xaf,0xf9,0xa1,0x29,0x39,0xea,0x42,0x4,0x8,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0x24,0xbc,0x64,0x40,0x0,
-+0x20,0x20,0x22,0x3f,0x28,0x48,0x88,0x9,0xff,0x8,0x8,0x14,0x12,0x22,0x40,0x80,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0xc4,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x25,0x24,0x3c,0x24,0x24,0x24,0x44,0x95,0xa,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x5,0x3f,0x25,0x25,0x25,0x3d,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x45,0x95,0x9,0x0,0x8,0x1c,0xe0,0x2,0x2,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x0,0x40,0x30,0x10,0x80,0x60,0x27,0x8,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x1,0x1,0x0,0x7f,0x0,0x0,0x0,0x0,0x1,0x2,0xc,0x30,0x48,0x7,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x40,0x0,0x1c,0xe0,0x41,0x2,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x50,0x48,0x84,0x2,0x2,
-+0x4,0xfe,0x24,0x24,0x3c,0x24,0x24,0x3c,0x24,0x24,0x27,0xfc,0x44,0x4,0x5,0x4,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x48,0x48,0x84,0x86,0x2,0x0,
-+0x1,0x1,0x7f,0x1,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0xff,0x0,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x13,0x32,0x3b,0x56,0x53,0x92,0x13,0x12,0x12,0x1f,0x10,0x40,0x48,0xfc,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,
-+0x4,0xfe,0x13,0x10,0x10,0x3d,0x25,0x45,0xa5,0x19,0x9,0x11,0x21,0x41,0x87,0x0,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x14,0x18,0x31,0xd0,0x11,0x11,0x11,0x12,0x54,0x28,0x80,0x80,0x80,0x90,0xf8,0x90,0x90,0x90,0x90,0x90,0x50,0x52,0x12,0x12,0xe,0x0,
-+0x8,0x8,0xf,0x10,0x10,0x33,0x52,0x93,0x12,0x13,0x12,0x13,0x12,0x12,0x1f,0x10,0x40,0x48,0xfc,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,
-+0x8,0x8,0xf,0x10,0x11,0x32,0x57,0x90,0x10,0x10,0x17,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x80,0x0,0x8,0xfc,0x44,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x15,0xff,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x1d,0xf1,0x47,0x0,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x11,0x11,0x11,0x11,0xfd,0x11,0x14,0x18,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x0,0x8,0x1c,0xe0,0x2,0x2,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x1,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0x7e,0x44,0x44,0x45,0x7d,0x11,0x51,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x47,0x0,0x20,0x20,0x20,0x20,0x28,0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x4,0xc,0x10,0x20,0x40,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x40,0x20,0x18,0xc,0x4,
-+0x20,0x20,0x21,0x3e,0x20,0x20,0x1f,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x18,0xe0,0x0,0x4,0x4,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x23,0x22,0x46,0xfa,0x12,0x23,0x42,0xfe,0x2,0x2,0x1e,0xe2,0x43,0x2,0x0,0x3c,0xe0,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x10,0x92,0xa,0x6,
-+0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x3f,0x0,0x2,0x11,0x50,0x50,0x90,0xf,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x0,0x80,0x84,0x12,0x12,0xf0,0x0,
-+0x8,0x8,0x7e,0x8,0xe,0xf8,0x48,0x19,0x3f,0x1,0x1f,0x1,0xff,0x1,0x1,0x3,0x40,0x48,0xfc,0x48,0xc8,0x68,0x8a,0x36,0xc0,0x0,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x28,0x25,0x20,0x2f,0xf2,0x22,0x22,0x2a,0x3f,0xe2,0x22,0x25,0x24,0x28,0xb0,0x40,0x80,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0xd4,0x48,0x40,0x40,
-+0x0,0x7f,0x2,0x4,0x8,0x10,0x3f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x0,0x0,0x20,0x10,0xf8,0x8,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0xfe,0x10,0x10,0x20,0x45,0xfe,0x10,0x10,0x7c,0x10,0x10,0x1e,0xf0,0x41,0x6,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x3f,0x24,0x3f,0x1,0x7f,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xff,0x0,0xf8,0x48,0xf8,0x0,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x0,
-+0x10,0x10,0x15,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x5c,0x10,0x10,0x11,0x12,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x50,0x48,0x84,0x6,0x2,
-+0x10,0x10,0x11,0x54,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x54,0x7c,0x44,0x0,0x0,0x20,0x28,0xfc,0x20,0x24,0xfe,0x8,0x8,0xfe,0x8,0x88,0x48,0x48,0x8,0x28,0x10,
-+0x4,0x24,0x25,0x3f,0x24,0x44,0xff,0x4,0x3f,0x24,0x24,0x24,0x26,0x25,0x4,0x4,0x4,0x4,0x4,0xa4,0x24,0xa4,0xe4,0x24,0xa4,0xa4,0xa4,0x84,0x84,0x4,0x14,0x8,
-+0x20,0x22,0x3f,0x48,0x8,0xff,0x10,0x14,0x22,0x42,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x4,0x7e,0x44,0x44,0xc4,0x44,0x7c,0x44,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x8,0x1c,0xf2,0x12,0x13,0xfe,0x14,0x30,0x3b,0x54,0x50,0x90,0x11,0x11,0x12,0x1c,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x8,0x1c,0xf0,0x11,0x13,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0xa0,0x90,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x28,0x28,0x28,0x28,0x49,0x42,0x8c,0x30,0x78,0x80,0x80,0x84,0xfe,0x80,0x88,0xfc,0x8,0x88,0x88,0x88,0x8,0x70,0xc,0x4,
-+0x4,0x4,0xf,0x11,0x28,0x44,0x3,0xc,0x71,0x9,0x9,0x12,0x4,0x8,0x30,0xc0,0x0,0x0,0xf8,0x10,0xa0,0xc0,0x0,0x0,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x1,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x3f,0x50,0xd7,0x12,0x21,0x21,0x40,0x0,0x0,0x88,0xfc,0x80,0x90,0xf8,0x80,0x84,0xfe,0x10,0xfc,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x42,0x2f,0x22,0x80,0x67,0x24,0x8,0x13,0x22,0xe2,0x22,0x22,0x22,0x20,0x20,0x48,0x48,0xfe,0x48,0x0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x48,0x58,0x40,0x40,
-+0x0,0x40,0x31,0x11,0x82,0x67,0x20,0x8,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x80,0x0,0x10,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x1,0x7f,0x44,0x88,0x3f,0x2,0x4,0x1f,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x0,0x0,0xfe,0x42,0x24,0xf8,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x1,0x1,0x1,0x7f,0x41,0x41,0x41,0x41,0x7f,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0,
-+0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x12,0x51,0x51,0x90,0xf,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x4,0x12,0x12,0xf0,0x0,
-+0x10,0x10,0x10,0x1c,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x10,0x14,0x18,0x10,0x0,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x2,0x1,0xff,0x1,0x1f,0x11,0x11,0x1f,0x11,0x5,0x8,0x18,0x28,0xca,0xc,0x8,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x8,0x18,0xa0,0x40,0x30,0xe,0x4,0x0,
-+0x10,0x10,0x20,0x21,0x45,0xfa,0x10,0x20,0x40,0xfd,0x2,0x0,0x1c,0xe0,0x40,0x0,0x80,0x80,0xfc,0x8,0x90,0x50,0x20,0x50,0x88,0xe,0x64,0x10,0x8,0xc0,0x30,0x8,
-+0x8,0x1c,0xf0,0x10,0x11,0xff,0x11,0x39,0x35,0x55,0x51,0x90,0x10,0x10,0x10,0x10,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x3e,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x24,0x24,0x44,0x94,0x8,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x3f,0x1,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x1,0x1,0xff,0x0,0x38,0xc0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0,
-+0x8,0x8,0x8,0x10,0x17,0x34,0x54,0x94,0x14,0x17,0x14,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x1,0x1,0x2,0x4,0x8,0x30,0x0,0x8,0x8,0x14,0x12,0x22,0x41,0x82,0x0,0x0,0x0,0x0,0x80,0x40,0x38,0x10,0x0,0x20,0x20,0x50,0x50,0x88,0xe,0x4,0x0,
-+0x2,0x4,0x1f,0x10,0x12,0x11,0x11,0xff,0x10,0x12,0x11,0x11,0x10,0x20,0x40,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x3f,0x21,0x21,0x2f,0x21,0x21,0x3f,0x20,0x27,0x24,0x24,0x24,0x47,0x84,0x0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x28,0xf8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x28,0x10,
-+0x10,0x10,0x10,0x10,0x54,0x52,0x52,0x90,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x0,0x4,0x84,0x84,0x84,0xa4,0x94,0x94,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x4,0x4,
-+0x1,0x41,0x31,0x11,0x81,0x65,0x23,0xb,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x20,0x4,0x4,0x24,0x24,0x24,0xb4,0x6c,0x6c,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,
-+0x1,0x41,0x21,0x22,0x4,0x8,0xe7,0x20,0x20,0x20,0x23,0x20,0x28,0x30,0x27,0x0,0x0,0x0,0xf8,0x10,0x20,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x9,0xfd,0x9,0x9,0xd,0x7b,0x41,0x47,0x41,0x79,0xb,0xd,0x9,0x89,0x51,0x21,0x4,0x3e,0x4,0x4,0x44,0xbc,0x20,0xe0,0x24,0x3e,0x84,0x44,0x4,0x4,0x28,0x10,
-+0x10,0x10,0x14,0xfe,0x21,0x21,0x49,0x7f,0x9,0x9,0xf,0xf9,0x49,0x9,0x9,0x8,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x44,0x94,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x28,0x10,
-+0x0,0x3f,0x0,0x1f,0x0,0x3f,0x1,0x7f,0x41,0x9f,0x11,0x11,0x11,0x11,0x1,0x1,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x10,0x10,0x50,0x20,0x0,0x0,
-+0x4,0x7e,0x44,0x44,0x44,0x7c,0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0x40,0x8,0xfc,0x88,0x88,0x88,0xf8,0x40,0xe0,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x1e,0x22,0xc4,0x8,0x7e,0x2,0x2,0x7e,0x2,0x2,0x7f,0x1,0x2,0x0,0x10,0x10,0x10,0xfe,0x92,0x94,0x90,0xfc,0x84,0xc4,0xa8,0xa8,0x10,0x28,0x4e,0x84,
-+0x2,0x1,0x7f,0x40,0x81,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0xfe,0x2,0x4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x20,0x3f,0x50,0x9f,0x10,0x1f,0x0,0x7f,0x0,0x10,0xf8,0x10,0x10,0xf0,0x90,0x40,0x20,0xfe,0x14,0xf0,0x10,0xf0,0x0,0xfc,0x0,
-+0x10,0xff,0x12,0x53,0x52,0x53,0x52,0x57,0x78,0xb,0x8,0x3b,0xc8,0x9,0x2e,0x10,0x0,0xfc,0x44,0xd4,0x48,0xd4,0x62,0xd8,0x60,0xa4,0x68,0xb0,0x68,0xa6,0x20,0x20,
-+0x0,0x9,0xfd,0x11,0x11,0x12,0x7c,0x13,0x10,0x10,0x1c,0xf0,0x41,0x2,0x4,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x2e,0x24,0x20,0x20,
-+0x10,0x11,0x11,0x11,0xfd,0x12,0x30,0x3b,0x54,0x50,0x90,0x10,0x11,0x12,0x14,0x10,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x2e,0x24,0x20,0x20,
-+0x10,0x11,0x11,0x11,0x7d,0x56,0x54,0x57,0x54,0x7c,0x10,0x14,0x1d,0xf6,0x44,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x2e,0x24,0x20,0x20,
-+0x1,0x11,0x11,0x1f,0x11,0x21,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,0x0,0x0,
-+0x2,0x44,0x2b,0x10,0x28,0x4b,0x88,0x9,0x1b,0x2d,0x49,0x89,0x9,0x9,0x29,0x11,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x20,0x1b,0x8,0x0,0x7,0xf0,0x11,0x13,0x15,0x19,0x11,0x15,0x19,0x11,0x1,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x42,0x22,0x23,0x2,0x4,0xe0,0x2f,0x20,0x20,0x21,0x29,0x32,0x24,0x8,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xc0,0xe0,0x60,0x50,0x4e,0x44,0x40,0x40,
-+0x0,0x4f,0x20,0x21,0x3,0xc,0xe1,0x22,0x2c,0x21,0x22,0x2c,0x21,0x50,0x8f,0x0,0x8,0xfc,0x80,0x0,0x88,0xd8,0x60,0x40,0xe0,0x50,0x48,0x48,0x40,0x86,0xfc,0x0,
-+0x10,0x10,0x10,0x12,0x1f,0x28,0x49,0x8a,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x44,0x7e,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x10,0x12,0x55,0x59,0x51,0x91,0x11,0x11,0x11,0x28,0x24,0x44,0x83,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x24,0x3c,0xe2,0x2,
-+0x2,0x2,0x3f,0x2,0xff,0x2,0xf,0x38,0xc8,0xf,0x8,0x8,0xf,0x20,0x24,0x42,0x0,0x20,0xf0,0x84,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x8,0x84,0x44,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x14,0x18,0x31,0xd0,0x10,0x10,0x10,0x10,0x57,0x20,0x40,0x20,0x4,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x7,0x74,0x57,0x54,0x75,0x54,0x55,0x75,0x55,0x54,0x77,0x4a,0x12,0x22,0x2,0x4,0xfe,0x4,0xfc,0x0,0xfc,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0x6,
-+0x0,0x7,0x74,0x57,0x54,0x55,0x54,0x55,0x55,0x55,0x54,0x77,0x4a,0x12,0x22,0x2,0x4,0xfe,0x4,0xfc,0x0,0xfc,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0x6,
-+0x2,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x8,0x8,0xff,0x9,0x1,0x1f,0x1,0xff,0x1,0x2,0xf,0x18,0x2f,0xc8,0xf,0x8,0x20,0x24,0xfe,0x20,0x10,0xe0,0x44,0xfe,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x30,0x38,0x55,0x50,0x90,0x10,0x10,0x10,0x17,0x10,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x2,0x3f,0x22,0x22,0x23,0x3e,0x22,0x22,0x3e,0x22,0x22,0x22,0x2f,0xf0,0x41,0x2,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0x28,0x10,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x55,0x7c,0x54,0x10,0x14,0xfc,0x47,0x0,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x7e,0x44,0x54,0x55,0x55,0x56,0x54,0x54,0x54,0x54,0x54,0x10,0x2b,0x44,0x84,0x40,0x20,0x20,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x10,0x10,0x13,0x1c,0x20,0x23,0x7c,0x90,0x13,0xfd,0x12,0x15,0x10,0x14,0x18,0x0,0x40,0x48,0xfc,0x40,0x48,0xfc,0x80,0x84,0xfe,0x8,0x8,0xfe,0x8,0x88,0x48,0x18,
-+0x10,0x12,0x1f,0x28,0x45,0x80,0x8,0x7d,0x11,0x11,0x11,0x11,0x1d,0xf2,0x44,0x8,0x40,0x44,0x7e,0xa0,0x10,0x0,0x10,0xf8,0x10,0x10,0x90,0x50,0x52,0x12,0xe,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x90,0x17,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x80,0x40,0x44,0xfe,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x40,0x30,0x17,0x80,0x60,0x20,0x8,0x17,0x20,0xe0,0x20,0x20,0x20,0x2f,0x20,0x80,0x40,0x44,0xfe,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x13,0x12,0x2,0xfe,0xa,0x12,0x3b,0x56,0x90,0x10,0x11,0x11,0x12,0x14,0x18,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0xa8,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x8,0xfc,0x8,0x4b,0x48,0x48,0x48,0x48,0x7d,0x4,0x4,0x1c,0xe4,0x44,0x17,0x8,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x14,0x14,0x58,0x20,0x8,0x1c,0xe0,0x50,0x50,0x50,0x50,0x50,0x50,0x48,0x48,0x48,0x44,0x44,0x42,0x40,
-+0x0,0x0,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x21,0x21,0x41,0x81,0x1,0x10,0x78,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x8,0xe,0x4,0x0,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x17,0x1a,0x32,0xd3,0x12,0x10,0x10,0x10,0x57,0x20,0x40,0x40,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xfc,0x48,0x50,0x20,0xd2,0xa,0x6,
-+0x1,0x1,0x1,0x3f,0x2,0x2,0xff,0x4,0x4,0xf,0x0,0x0,0x0,0x6,0x1,0x0,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x80,0x40,
-+0x0,0x4,0xfe,0x11,0x10,0x20,0x23,0x7c,0xa4,0x25,0x24,0x24,0x24,0x3c,0x24,0x0,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x80,0xfc,0x8,0x10,0x90,0x60,0x20,0x10,
-+0x10,0x10,0x10,0xfd,0x20,0x28,0x4b,0x7c,0x8,0x9,0x1c,0xe8,0x48,0x8,0x8,0x8,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x80,0xfc,0x8,0x10,0x90,0x60,0x20,0x10,
-+0x10,0x17,0x14,0x14,0xff,0x14,0x13,0x19,0x31,0xd7,0x11,0x11,0x1f,0x11,0x52,0x24,0x4,0xbe,0xa4,0xa4,0xbc,0x62,0xde,0x10,0x10,0xfc,0x10,0x14,0xfe,0x10,0xc,0x4,
-+0x0,0x7c,0x47,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x55,0x54,0x10,0x29,0x46,0x80,0x88,0x50,0xfe,0x50,0xfc,0x54,0x54,0xfe,0x54,0x54,0xfc,0x50,0xd8,0x56,0x54,0x50,
-+0x10,0x1e,0x28,0x4f,0x8,0x1f,0x0,0xff,0x2,0xd,0x71,0x6,0x39,0x6,0x78,0x3,0x40,0x7c,0xa0,0xc0,0x40,0x80,0x84,0xfe,0x10,0x20,0xc0,0xa0,0x90,0x8e,0x84,0x0,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x14,0x14,0x1b,0x10,0x40,0x20,0x24,0xfe,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x1,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x2f,0x20,0x20,0x20,0x40,0x40,0xbf,0x0,0x0,0x80,0x88,0xfc,0x0,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x84,0xfe,0x0,
-+0x8,0x48,0x2b,0x8,0x18,0x29,0x4a,0x9,0xff,0x2,0x4,0xc,0x14,0x65,0x6,0x4,0x40,0x48,0xfc,0x40,0x50,0xf8,0x0,0x4,0xfe,0x8,0x90,0xa0,0x40,0x30,0xe,0x4,
-+0x8,0x8,0x8,0x48,0x28,0x2f,0x9,0x9,0x19,0x2a,0x49,0xc8,0x8,0x8,0x9,0xa,0x40,0x40,0x40,0x80,0x84,0xfe,0x8,0x8,0x8,0x8,0x10,0xa0,0x40,0xb0,0xc,0x4,
-+0x10,0x17,0x11,0x10,0xff,0x10,0x17,0x1a,0x33,0xd2,0x13,0x10,0x17,0x10,0x5f,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x48,0xf8,0x48,0xf8,0x40,0xfc,0x40,0xfe,0x0,
-+0x10,0x10,0x10,0x90,0x50,0x50,0x1f,0x10,0x30,0x50,0xd0,0x10,0x10,0x17,0x10,0x10,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0,
-+0x8,0x8,0x8,0x48,0x28,0x2f,0x8,0x8,0x18,0x28,0x49,0xc9,0x9,0xa,0xc,0x8,0x40,0x50,0x48,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,0x0,
-+0x10,0x10,0x10,0x11,0xfd,0x13,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0xa0,0xa0,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x10,0x10,0x10,0x1d,0x21,0x23,0x7d,0x91,0x11,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0xa0,0xa0,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x0,0x40,0x33,0x12,0x2,0x3,0xf2,0x12,0x13,0x12,0x12,0x12,0x13,0x2a,0x47,0x0,0x40,0x90,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x6,0xfc,0x0,
-+0x8,0x7f,0x8,0x3e,0x8,0xff,0x10,0x1e,0x22,0xcc,0x1f,0x10,0x11,0x11,0x6,0x38,0x40,0x44,0x7e,0x84,0xc4,0x28,0x10,0x28,0x46,0x90,0xf8,0x10,0x10,0x10,0xc0,0x38,
-+0x0,0x7c,0x44,0x48,0x50,0x48,0x45,0x65,0x5a,0x44,0x41,0x5f,0x1,0x1,0xff,0x0,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0x8,0xe,0x4,0x0,0xf0,0x0,0x0,0xfe,0x0,
-+0x10,0x17,0x24,0x22,0x41,0xfa,0x12,0x24,0x47,0xfc,0x4,0x2,0x19,0xe2,0x44,0x8,0x0,0xbc,0xa4,0xa8,0x10,0xa8,0xa6,0x40,0xbc,0xa4,0xa4,0xa8,0x10,0xa8,0x46,0x4,
-+0x0,0x4f,0x30,0x13,0x2,0x2,0xf3,0x10,0x13,0x10,0x10,0x17,0x14,0x18,0x11,0x0,0x44,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x0,0xf8,0x20,0x44,0xfe,0x40,0x40,0x40,0x80,
-+0x1,0x41,0x31,0x13,0x2,0x16,0x1b,0x12,0x22,0xe3,0x22,0x22,0x22,0x23,0x22,0x2,0x40,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x17,0x1a,0x30,0xd2,0x12,0x12,0x13,0x14,0x58,0x20,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x48,0x40,0x48,0x7c,0x40,0x40,0xc6,0x7c,0x0,
-+0x10,0x10,0x12,0x12,0xfe,0x12,0x17,0x18,0x30,0xd4,0x14,0x14,0x14,0x14,0x57,0x20,0x40,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x1,0x1,0x1,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x11,0x1,0xff,0x1,0x1,0x1,0x1,0x8,0xfc,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x3,0x5,0x9,0x31,0x1,0x8,0xfc,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x0,0x17,0xf8,0x20,0x21,0x22,0x26,0xf9,0x22,0x24,0x20,0x21,0x3a,0xe4,0x41,0x0,0x4,0xfe,0x40,0x80,0x84,0x4c,0xb0,0x20,0xb0,0x68,0xa8,0x24,0x22,0x20,0x40,0x80,
-+0x8,0x8,0xff,0x8,0x1,0x21,0x21,0x21,0x3f,0x1,0x41,0x41,0x41,0x41,0x7f,0x40,0x20,0x24,0xfe,0x20,0x0,0x8,0x8,0x8,0xf8,0x0,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0xa0,0x20,0x24,0x7e,0x84,0x4,0x44,0x24,0x24,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x0,0xb,0x7c,0x48,0x49,0x4a,0x4e,0x49,0x4a,0x4c,0x48,0x79,0x4a,0x4,0x1,0x0,0x4,0xfe,0x40,0x80,0x84,0x4c,0xb0,0x20,0xb0,0x68,0xa8,0x24,0x22,0x20,0x40,0x80,
-+0x8,0x4,0x7f,0x1,0x3f,0x2,0xff,0x4,0xf,0x18,0x2f,0xc8,0xf,0x8,0xf,0x8,0x20,0x48,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x12,0x54,0x59,0x52,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x40,0x30,0x10,0x87,0x64,0x24,0xc,0x14,0x27,0xe4,0x20,0x20,0x20,0x2f,0x24,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x50,0x48,0x7c,0xc4,0x4,
-+0x10,0xc,0x4,0x0,0xff,0x10,0x10,0x22,0x24,0x78,0x8,0x10,0x14,0x22,0x7e,0x2,0x10,0x30,0x40,0x4,0xfe,0x20,0x20,0x44,0x48,0xf0,0x10,0x20,0x28,0x44,0xfc,0x4,
-+0x41,0x31,0x11,0x2,0xa,0xf4,0x20,0x20,0x21,0x26,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0xfc,0x4,0x48,0x40,0xa0,0x90,0xe,0x4,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x41,0x21,0x21,0xa,0x34,0xe0,0x21,0x26,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x0,0x0,0xfc,0x44,0x48,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x20,0x10,0x10,0x5,0xa,0x70,0x10,0x13,0x12,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x80,0xfc,0x84,0x28,0x20,0x50,0x8e,0x4,0x0,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x44,0x22,0x21,0xf,0x82,0x42,0x44,0x14,0x1f,0x21,0xe2,0x24,0x29,0x2f,0x21,0x20,0x8,0x10,0x24,0xfe,0x10,0x10,0x20,0xa4,0x78,0x8,0x10,0x20,0x44,0x7c,0x4,0x0,
-+0x2,0x42,0x24,0x29,0x84,0x62,0x22,0x8,0x17,0x24,0xe4,0x27,0x24,0x24,0x27,0x24,0x48,0x48,0x90,0x20,0x90,0x48,0x48,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x0,0x0,0xfe,0x4,0x8,0x11,0x15,0x1a,0xf0,0x50,0x10,0x10,0x10,0x10,0x51,0x26,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x28,0x2e,0x28,0x2e,0xf8,0x42,0x4,0x3f,0x1,0x2,0x3f,0x1,0x9,0x11,0x23,0x80,0x80,0x98,0xe2,0x82,0x7e,0x0,0x10,0xe0,0x0,0x10,0xf8,0x8,0x20,0x18,0x8,
-+0x8,0xb,0x8,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x0,0xf8,0x8,0x10,0x20,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x11,0x52,0x34,0x18,0xfe,0x10,0x33,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x10,0x0,0xfc,0x4,0x8,0x10,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x40,0x37,0x14,0x88,0x67,0x20,0x9,0x10,0x2f,0xe0,0x20,0x27,0x20,0x20,0x20,0x80,0x40,0xfe,0x2,0x44,0xfc,0x0,0x10,0xa4,0xfe,0x40,0x48,0xfc,0x40,0x40,0x40,
-+0x0,0x3f,0x0,0x0,0x0,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x10,0x20,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x2,0x4,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x47,0x30,0x13,0x80,0x6f,0x20,0xb,0x12,0x22,0xe2,0x22,0x22,0x20,0x23,0x2c,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x2,0x1,0x3f,0x20,0x40,0x1f,0x0,0x0,0x1,0xff,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x0,0xfc,0x4,0x8,0xe0,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x13,0x1c,0x10,0x7f,0x14,0x3e,0x1,0x7f,0x40,0x9f,0x0,0x7f,0x9,0x11,0x23,0x4,0x18,0x64,0x18,0x64,0x18,0x60,0x0,0xfe,0x2,0xf4,0x0,0xfc,0x20,0x18,0x8,
-+0x10,0x10,0x13,0x12,0xfc,0x11,0x30,0x38,0x57,0x50,0x90,0x11,0x11,0x12,0x10,0x10,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x0,0x78,0x4b,0x4a,0x4c,0x79,0x50,0x10,0x13,0x5c,0x50,0x51,0x5d,0xf2,0x40,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x2,0x1,0x7f,0x40,0x80,0x1f,0x0,0x0,0xff,0x1,0x9,0x9,0x11,0x21,0x5,0x2,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x4,0xfe,0x0,0x20,0x10,0x8,0x8,0x0,0x0,
-+0x10,0x10,0x23,0x22,0x44,0xf9,0x10,0x20,0x43,0xf8,0x0,0x1,0x19,0xe2,0x40,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x10,0x8,0x4,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x2,0x51,0x50,0x90,0xf,0x0,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x11,0x11,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x42,0x2,0x1c,0xe4,0x48,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xa8,0xa8,0x48,0x44,0x82,0x0,
-+0x10,0x10,0x10,0x3f,0x42,0x84,0x7f,0x1,0x1,0x3f,0x1,0x1,0x7f,0x1,0x0,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x1,0x1,0x1,0x3f,0x1,0x1,0xff,0x1,0x9,0x9,0x9,0x9,0x9,0x15,0x23,0x40,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x0,0x6,0xfc,0x0,
-+0x1,0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x37,0xc1,0x1f,0x1,0x2,0x4,0x38,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x30,0xce,0x4,0xf0,0x0,0xc0,0x30,0x8,
-+0x10,0x10,0x17,0x10,0xfb,0x10,0x17,0x19,0x32,0xdd,0x10,0x17,0x10,0x10,0x51,0x26,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0xe,0xf4,0x40,0xfc,0x40,0xb0,0xc,0x4,
-+0x8,0x1c,0xf1,0x11,0x15,0xff,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x1f,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x11,0x1,0x11,0x11,0x11,0x11,0x29,0x47,0x80,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x10,0xf8,0x0,0x0,0x6,0xfc,0x0,
-+0x2,0x1,0x7f,0x8,0x8,0x8,0x14,0x22,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x20,0x20,0x20,0x50,0x88,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x18,0x8,0x0,0xfe,0x21,0x20,0x3c,0x24,0x25,0x27,0x24,0x44,0x44,0x94,0x9,0x40,0x40,0x48,0x7c,0x80,0x48,0x7c,0xa0,0xa0,0x24,0xfe,0x20,0x50,0x50,0x8e,0x4,
-+0x20,0x10,0x11,0x1,0xfd,0x9,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x11,0x17,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x40,0x30,0x11,0x1,0x1,0xf1,0x11,0x11,0x11,0x11,0x11,0x13,0x15,0x19,0x17,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x0,0x7c,0x45,0x49,0x49,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x47,0x40,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x10,0x10,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x41,0x1,0x1d,0xe1,0x47,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x10,0x10,0x10,0x1e,0x20,0x20,0x7c,0x91,0x11,0xff,0x11,0x13,0x15,0x19,0x11,0x1,0x20,0x20,0x24,0x3e,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x3e,0x48,0x9f,0x12,0x10,0x1f,0x8,0xff,0x14,0x2f,0x41,0x9f,0x5,0x9,0x13,0x40,0x7e,0x90,0xf0,0x10,0x90,0xf0,0x4,0xfe,0x50,0x88,0x2e,0xe4,0x40,0x30,0x10,
-+0x1,0x5,0x75,0x55,0x55,0x5f,0x51,0x52,0x57,0x5a,0x53,0x72,0x43,0x2,0x4,0x8,0x20,0x20,0xe6,0x38,0xe2,0x1e,0xf0,0x28,0xfc,0x48,0xf8,0x48,0xf8,0x48,0x48,0x58,
-+0x4,0xfe,0x29,0x28,0xfe,0xaa,0xaa,0xab,0xa6,0xc2,0x83,0xfe,0x82,0x82,0xfe,0x82,0x20,0x24,0xfe,0x0,0x88,0x88,0x88,0x54,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x1f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x22,0x3f,0x22,0x3e,0x22,0x3e,0xe2,0x2,0x3,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0xfc,0x84,0x88,0x50,0x20,0x58,0x8e,0x4,
-+0x0,0x7f,0x44,0x44,0x7f,0x0,0x4,0xfc,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x4,0x4,0xfe,0x44,0x44,0xfc,0x0,0x44,0x7e,0x40,0x48,0x7c,0x40,0x44,0x7e,0x40,0x40,
-+0x8,0x7f,0x4,0x3f,0x24,0x24,0x28,0x3f,0x20,0x3f,0x0,0xff,0x8,0x4,0x4,0x0,0x40,0xfc,0x80,0xf8,0x88,0xe8,0x8,0xf8,0x8,0xf8,0x20,0xfe,0x20,0x20,0xa0,0x40,
-+0x2,0x5f,0x21,0x2f,0x9,0xa,0xe8,0x2b,0x28,0x2f,0x20,0x3f,0x24,0x22,0x50,0x8f,0x20,0xfc,0x40,0xf8,0x48,0x38,0x8,0xe8,0x8,0xf8,0x20,0xfe,0x20,0xa0,0x46,0xfc,
-+0x1,0x9,0x7d,0x49,0x4a,0x4c,0x48,0x78,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x90,0xf8,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x2,0x2,0x2,0xff,0x4,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x40,0x80,0x7f,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x80,0x80,0x80,0x80,0x84,0xfe,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x51,0x91,0x11,0x12,0x14,0x18,0x10,0x10,0x17,0x10,0x80,0x80,0x84,0xfe,0x80,0x80,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x11,0x11,0x11,0x11,0xfe,0x14,0x30,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x90,0xf8,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x10,0x12,0x12,0x22,0x3f,0x62,0xa2,0x22,0x2f,0x28,0x28,0x28,0x28,0x2f,0x28,0x20,0x20,0x20,0x20,0x24,0xfe,0x84,0x44,0x44,0xc8,0xa8,0xa8,0x90,0xa8,0xa8,0x46,0x84,
-+0x9,0x9,0x9,0x11,0x12,0x32,0x54,0x98,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x90,0xf8,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,
-+0x1,0x0,0x3f,0x20,0x24,0x24,0x24,0x2a,0x29,0x31,0x20,0x2f,0x40,0x40,0xbf,0x0,0x0,0x84,0xfe,0x80,0x90,0x90,0x90,0xa8,0xa4,0xc4,0x90,0xf8,0x80,0x84,0xfe,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0xff,0x1,0x1,0x21,0x21,0x21,0x21,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xf,0x8,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xe0,0x20,
-+0x10,0x11,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x11,0x21,0x20,0x40,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x7f,0x0,0x0,0x1,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x80,0x80,0x0,0x0,0x60,0x10,0x8,0x4,0x4,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x0,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xff,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x0,0x4,0xfe,0x0,
-+0x0,0x3f,0x0,0x0,0x1,0x7d,0x5,0x9,0x9,0x11,0x11,0x21,0x45,0x2,0xff,0x0,0x20,0xf0,0x40,0x80,0x8,0x18,0xa0,0x40,0x20,0x10,0xe,0x4,0x0,0x4,0xfe,0x0,
-+0x0,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x7f,0x44,0x42,0x5f,0x41,0x41,0x41,0x40,0x4,0xfe,0x0,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x44,0x84,0xf4,0x4,0x4,0x14,0x8,
-+0x0,0x7f,0x3,0x5,0x19,0x61,0x10,0x10,0xfe,0x22,0x22,0x23,0x14,0x8,0x14,0x62,0x8,0xfc,0x0,0x60,0x18,0x4,0x0,0xf8,0x8,0x10,0x24,0xfe,0x20,0x20,0xa0,0x40,
-+0x0,0xff,0x1,0x3d,0x25,0x3d,0x1,0x7f,0x1,0x3d,0x25,0x25,0x3d,0x1,0xff,0x0,0x4,0xfe,0x0,0x78,0x48,0x78,0x0,0xfc,0x0,0x78,0x48,0x48,0x78,0x4,0xfe,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x1,0x7f,0x41,0x41,0x4f,0x40,0x40,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x4,0x24,0xe4,0x24,0x14,0x8,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x20,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x0,0x3,0x7e,0x2,0x2,0x2,0x2,0x3,0xfe,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x10,0xf8,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,
-+0x0,0x1,0x3f,0x1,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x4,0x8,0x30,0xc0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x0,0x10,0xc,0x2,0x1,0x2,0xc,0x70,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0xc0,0x10,0x30,0x40,0x80,0x0,0xc0,0x30,0x28,0x40,0x40,0x80,0x0,0x80,0x60,0x1e,0x4,
-+0x0,0x1,0x3e,0x20,0x3f,0x20,0x20,0x27,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x3,0x10,0xf8,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x90,0x50,0x20,0x2,0x2,0xfe,
-+0x0,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x22,0x24,0x28,0x33,0x20,0x0,0x10,0xf8,0x80,0x80,0x80,0x84,0xfe,0x80,0x80,0x40,0x40,0x20,0x20,0x12,0x8a,0x6,
-+0x2,0x2,0x4,0x3f,0x20,0x28,0x24,0x22,0x21,0x22,0x24,0x28,0x30,0x20,0x3f,0x20,0x0,0x0,0x8,0xfc,0x8,0x28,0x48,0x88,0x8,0x88,0x48,0x28,0x18,0x8,0xf8,0x8,
-+0x1,0x12,0x14,0x1f,0x11,0x12,0x1f,0x10,0x17,0x14,0x17,0x24,0x27,0x44,0x85,0x4,0x0,0x10,0x50,0x90,0x10,0x50,0xf0,0x10,0xd0,0x50,0xd0,0x50,0xd2,0x52,0x4e,0x80,
-+0x10,0x10,0x10,0x13,0xfc,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x24,0x24,0x43,0x80,0x0,0x88,0x50,0xfe,0x20,0xf8,0x88,0xf8,0x88,0xf8,0x88,0xf8,0x8a,0x2,0xfe,0x0,
-+0x20,0x20,0x24,0x7f,0x80,0x7c,0x44,0x55,0x44,0xfe,0x44,0x54,0x44,0x7e,0x5,0x1a,0x40,0x20,0x24,0xfe,0x40,0x50,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0xaa,0xaa,0x2e,0x0,
-+0x4,0x8,0x3f,0x24,0x3f,0x1,0x1f,0x1,0xff,0x4,0x1f,0x1,0x7f,0x1,0x1,0x1,0x0,0x8,0xfc,0x48,0xf8,0x0,0xf0,0x4,0xfe,0x40,0xf0,0x0,0xfc,0x0,0x0,0x0,
-+0x12,0xa,0x12,0x2,0x3c,0x8,0x7e,0x9,0xff,0x0,0x3e,0x22,0x3e,0x14,0x7e,0x1,0x48,0x50,0x48,0x44,0x3c,0x20,0x28,0xfc,0x20,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e,
-+0x0,0x0,0x0,0x0,0x0,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x0,0x0,0x1,0x3d,0x25,0x25,0x25,0x25,0x25,0x3d,0x1,0x2,0xff,0x0,0x20,0xf0,0x40,0x80,0x8,0x7c,0x8,0x48,0x30,0x10,0x28,0x48,0x0,0x4,0xfe,0x0,
-+0x7f,0x10,0x17,0x14,0x27,0x24,0x57,0x94,0x17,0x10,0x1e,0x2,0x7e,0x12,0x12,0x62,0xf0,0x10,0xd4,0x5e,0xc4,0x44,0xd4,0x5c,0xd0,0x10,0xf0,0x80,0xf8,0x88,0x88,0x88,
-+0x0,0x8,0x8,0x8,0x8,0x9,0xe,0x18,0x68,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x20,0x70,0xa0,0x20,0x20,0x20,0x20,0xa0,0x44,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x12,0x1f,0x10,0x10,0x10,0x12,0x7f,0x42,0x42,0x42,0x42,0x42,0x7e,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0,
-+0x0,0x3f,0x0,0x0,0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x10,0xf8,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x9,0x9,0x79,0x9,0x9,0x9,0x7f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x20,0x28,0x3c,0x20,0x20,0x28,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x7f,0x1,0x41,0x7f,0x40,0x9f,0x0,0x1,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0x0,0xfe,0x2,0xe4,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x7f,0x1,0x9,0x5,0xff,0x0,0x3f,0x20,0x27,0x24,0x27,0x20,0x3f,0x20,0x0,0x8,0xfc,0x0,0x20,0x44,0xfe,0x0,0xf8,0x8,0xc8,0x48,0xc8,0x8,0xf8,0x8,
-+0x20,0x27,0x24,0xfc,0x24,0x27,0x24,0x74,0x57,0x54,0x54,0x57,0x74,0x54,0x4,0x4,0x4,0xbe,0x84,0x84,0x84,0xbc,0x84,0x0,0xbc,0x4,0x24,0xa8,0x10,0x28,0x2e,0xc4,
-+0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x44,0x48,0x90,0x20,0x8,0xfc,0x0,0x80,0x80,0x80,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0xe,0x4,
-+0x0,0x3f,0x21,0x21,0x2f,0x22,0x22,0x24,0x2f,0x20,0x20,0x3f,0x40,0x40,0x80,0x0,0x8,0xfc,0x0,0x8,0xfc,0x40,0x40,0x50,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x3f,0x22,0x22,0x2f,0x22,0x3f,0x20,0x27,0x24,0x24,0x27,0x44,0x44,0x87,0x4,0x8,0xfc,0x20,0x28,0xfc,0x20,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x3f,0x20,0x20,0x2f,0x21,0x3e,0x20,0x2f,0x28,0x2f,0x28,0x4f,0x48,0x80,0x0,0x8,0xfc,0xa0,0x90,0xfc,0x40,0x3c,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x88,0x80,0x80,
-+0x0,0x3f,0x20,0x28,0x25,0x3f,0x22,0x2a,0x2a,0x2a,0x2f,0x22,0x42,0x44,0x88,0x10,0x8,0xfc,0x20,0xa0,0x20,0xbe,0x22,0xd4,0x90,0x90,0x90,0x90,0x28,0x28,0x44,0x82,
-+0x0,0x3f,0x29,0x29,0x3f,0x29,0x2f,0x29,0x2f,0x29,0x29,0x3f,0x42,0x49,0x90,0x1,0x8,0xfc,0x0,0xc,0xf0,0x40,0x44,0x7e,0x48,0x48,0x48,0xc8,0x48,0x48,0x88,0x8,
-+0x0,0x3f,0x20,0x2f,0x21,0x26,0x38,0x2f,0x20,0x2f,0x29,0x29,0x49,0x49,0x89,0xf,0x8,0xfc,0xa0,0xfc,0x40,0x30,0xe,0xfc,0x80,0xfc,0x24,0xe4,0x24,0xe4,0x24,0xfc,
-+0x0,0x3f,0x22,0x24,0x2d,0x36,0x24,0x24,0x24,0x2f,0x28,0x28,0x48,0x41,0x86,0x18,0x8,0xfc,0x50,0xfc,0x90,0xfc,0x90,0x9e,0x80,0xf8,0x8,0x88,0x88,0x60,0x18,0x4,
-+0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x40,0x40,0x47,0x44,0x44,0x44,0x44,0x44,0x47,0x44,0x40,0x40,0x7f,0x0,0x8,0xfc,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xe0,0x20,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x48,0x4a,0x7f,0x50,0x54,0x7f,0x44,0x44,0x7f,0x44,0x44,0x45,0x7f,0x0,0x8,0xfc,0x40,0x40,0x50,0xf8,0x50,0x50,0x50,0x50,0x54,0x54,0x8c,0x0,0xfe,0x0,
-+0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x7f,0x40,0x4f,0x48,0x48,0x43,0x4c,0x7f,0x0,0x8,0xfc,0x80,0xf8,0x88,0xf8,0x80,0xfc,0x8,0xfc,0x88,0x88,0x60,0x18,0xfe,0x0,
-+0x0,0x7f,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x59,0x69,0x4f,0x49,0x49,0x48,0x7f,0x0,0x8,0xfc,0x80,0xf8,0x8,0xf8,0x0,0xfc,0x24,0x24,0xfc,0x24,0x2c,0x4,0xfe,0x0,
-+0x0,0x4,0x7f,0x48,0x49,0x48,0x5f,0x54,0x55,0x55,0x5d,0x49,0x49,0x48,0x7e,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x4,0xfe,0x4,0x24,0x24,0x24,0x50,0x4c,0x84,
-+0x8,0x8,0xa,0x7f,0x8,0x9,0xff,0x8,0xa,0x7f,0x8,0x8,0xf,0x78,0x20,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0xd0,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x1,0x1,0x1,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x88,0xc8,0x88,0x88,0x88,0x88,0x8,0xf8,0x8,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x0,0x41,0x21,0x11,0x12,0xa,0xa,0x4,0x4,0xa,0x9,0x11,0x10,0x20,0x40,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x84,0x84,0x14,0x8,
-+0x20,0x20,0x20,0x3f,0x2a,0x4a,0x4a,0x8a,0x12,0x14,0x14,0x24,0x48,0x12,0x1,0x0,0x4,0x4,0xa4,0xe4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x84,0x84,0x14,0x8,
-+0x0,0x7f,0x1,0x2,0x4,0xb,0x30,0xc0,0x3f,0x4,0x4,0x4,0x7,0x7c,0x20,0x0,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0x24,0xa4,0x24,0x24,0x4,0x84,0x4,0x14,0x8,
-+0x8,0x9,0xff,0x14,0x12,0x21,0xde,0x0,0xff,0x10,0x3f,0x1,0x1,0x11,0xa,0x4,0x4,0x4,0x84,0x24,0x24,0xa4,0xa4,0x24,0xa4,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x4,0x4,0x24,0x24,0x3f,0x8,0x8,0xf,0x10,0x11,0x31,0x4a,0x4,0x8,0x10,0x60,0x4,0x4,0x84,0xa4,0xa4,0xa4,0x24,0xa4,0xa4,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x8,0x8,0x49,0x49,0x7f,0x0,0x7f,0x1,0x1,0x3f,0x21,0x20,0x21,0x26,0x38,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x84,0x4,0x14,0x8,
-+0x8,0x9,0xff,0x8,0x9,0x7f,0x49,0x49,0x7f,0x59,0x1c,0x2a,0x29,0x49,0x88,0x8,0x4,0x4,0x84,0x24,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x8,0x9,0xff,0x8,0x14,0x22,0xff,0x1,0x3d,0x25,0x25,0x25,0x3d,0x21,0x5,0x2,0x4,0x4,0x84,0x24,0x24,0xa4,0xe4,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x8,0x49,0x29,0x2a,0x8,0x16,0x21,0xc8,0x8,0x29,0x2a,0x48,0x16,0x21,0xc0,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0xa4,0xa4,0x24,0x24,0x24,0x4,0x4,0x84,0x94,0x8,
-+0x8,0x44,0x7f,0x40,0xa0,0x3b,0x2a,0x4a,0x6a,0x93,0x12,0x22,0x22,0x42,0x83,0x0,0x4,0x4,0xc4,0x54,0x94,0xd4,0x94,0x94,0x94,0x94,0x14,0x4,0x44,0x84,0x14,0x8,
-+0x11,0x11,0xff,0x11,0x7b,0x4a,0x4a,0x7b,0x4a,0x4a,0x7b,0x4a,0x4a,0x4a,0x9c,0x8,0x4,0x44,0xe4,0x14,0xd4,0x54,0x54,0xd4,0x54,0x54,0xd4,0x44,0x44,0x44,0xd4,0x48,
-+0x0,0xff,0xa,0xa,0x7f,0x4a,0x4a,0x7f,0x0,0x7f,0x0,0xff,0x15,0x24,0x44,0xc,0x84,0xc4,0x4,0x54,0xf4,0x54,0x54,0xd4,0x14,0xd4,0x14,0xe4,0x4,0xc4,0x54,0x8,
-+0x0,0x7f,0x40,0x51,0x4a,0x7f,0x44,0x55,0x55,0x55,0x5f,0x44,0x44,0x48,0x91,0x22,0x22,0xf2,0x2,0x4a,0x4a,0x7a,0x9a,0xa,0x4a,0x4a,0x4a,0x4a,0xa2,0x92,0x16,0x2,
-+0x4,0x25,0x3f,0x24,0x25,0x7f,0xa4,0x25,0x3f,0x24,0x25,0x3f,0x20,0x54,0x4a,0x8a,0x4,0x4,0x84,0x24,0x24,0xa4,0x24,0x24,0xa4,0x24,0x24,0x84,0x4,0x84,0x54,0x48,
-+0x11,0x7f,0x11,0x12,0x3f,0x52,0x1f,0x12,0x13,0x10,0x3f,0x11,0xa,0x4,0x1b,0x60,0x4,0xc4,0x4,0x24,0xa4,0x24,0xa4,0x24,0xa4,0x24,0xa4,0x4,0x4,0x4,0x14,0x88,
-+0x4,0x3f,0x28,0x24,0x3f,0x0,0x7f,0x44,0x7f,0x44,0x7f,0x0,0xff,0x11,0x11,0x21,0x4,0x84,0x84,0x94,0x94,0x14,0xd4,0x54,0xd4,0x54,0xd4,0x4,0xc4,0x4,0x14,0x8,
-+0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x0,0x7f,0x48,0x44,0x42,0x5f,0x42,0x41,0x5f,0x48,0x48,0x48,0x4f,0x40,0x40,0x40,0x4,0xfe,0x24,0x44,0x84,0xf4,0x4,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x14,0x8,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x10,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x8,0x8,0x9,0x11,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x50,0x90,0x10,0x10,0x11,0x11,0x11,0x12,0x14,0x18,0x80,0x80,0x80,0x84,0xfe,0x84,0x84,0x84,0x84,0x84,0x4,0x4,0x4,0x48,0x28,0x10,
-+0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x93,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x10,0x0,0x8,0xfc,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x9,0x9,0x9,0x12,0x12,0x37,0x58,0x90,0x10,0x10,0x11,0x12,0x12,0x12,0x11,0x10,0x0,0x8,0xfc,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x51,0x92,0x14,0x18,0x11,0x12,0x14,0x17,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0xa0,0x20,0x40,0x40,0x80,0x0,0x10,0x8,0xfc,0x4,0x0,
-+0x8,0x8,0xf,0x10,0x10,0x32,0x52,0x92,0x12,0x14,0x10,0x11,0x11,0x12,0x14,0x18,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10,
-+0x8,0x8,0xb,0x12,0x12,0x32,0x52,0x92,0x12,0x12,0x12,0x12,0x13,0x12,0x13,0x10,0x0,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x88,0x8,0x4,0xfe,0x0,
-+0x8,0xa,0xa,0x12,0x12,0x32,0x53,0x92,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x20,0x20,0x20,0x20,0x22,0x24,0xb8,0x20,0x20,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e,
-+0x8,0x8,0xb,0x10,0x11,0x31,0x53,0x90,0x10,0x10,0x10,0x11,0x12,0x14,0x10,0x10,0x0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x30,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x8,0x8,0xf,0x11,0x11,0x31,0x51,0x91,0x11,0x12,0x12,0x12,0x13,0x16,0x10,0x10,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x90,0x50,0x30,0x10,0xd2,0x12,0xe,0x0,
-+0x9,0x9,0xa,0x13,0x14,0x38,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x9,0x9,0x9,0x11,0x11,0x31,0x51,0x9f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0,0x8,0x10,0x20,0x40,0x80,0x4,0xfe,0x40,0x40,0x20,0x10,0x8,0x46,0x84,0x0,
-+0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x99,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf0,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x51,0x91,0x11,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x8,0x8,0x8,0x13,0x12,0x34,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x80,0x40,0x40,0xfc,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x8,0xb,0x8,0x10,0x17,0x30,0x50,0x9f,0x11,0x11,0x12,0x11,0x10,0x10,0x11,0x16,0x10,0xf8,0x0,0x8,0xfc,0x80,0x84,0xfe,0x10,0x10,0x10,0xa0,0x40,0xa0,0x18,0x4,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x90,0xf8,0x80,0x80,0x84,0xfe,0x80,0xc0,0xa0,0x98,0x88,0x80,0x80,0x80,
-+0x8,0x8,0x8,0x10,0x15,0x35,0x56,0x94,0x14,0x14,0x14,0x14,0x14,0x10,0x11,0x16,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x90,0xe,0x4,
-+0x8,0x8,0xa,0x12,0x13,0x34,0x58,0x90,0x1f,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x9,0x9,0x9,0x13,0x12,0x34,0x5b,0x92,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x44,0x28,0x10,
-+0x9,0x9,0x9,0x12,0x15,0x38,0x50,0x90,0x11,0x12,0x1c,0x10,0x11,0x10,0x10,0x10,0x0,0x0,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0x8e,0x64,0x20,0x80,0x60,0x30,0x10,
-+0x8,0x8,0x8,0x13,0x12,0x35,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x80,0x40,0x40,0xfc,0x4,0x8,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0x4,0xfc,0x0,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x52,0x92,0x12,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x80,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e,0x0,
-+0x14,0x14,0x14,0x24,0x3f,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x28,0x28,0x32,0x21,0x0,0x0,0x4,0xbe,0xe4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0xa4,0x0,
-+0x8,0x8,0x8,0x1f,0x10,0x30,0x57,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0xf,0x9,0x11,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x17,0x10,0x10,0x10,0x10,0x4,0xfe,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x7e,0x88,0x8,0x8,0x8,0x8,
-+0x8,0x8,0x8,0x17,0x11,0x31,0x53,0x95,0x19,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0x80,0x84,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10,
-+0x8,0x8,0x8,0x1f,0x10,0x31,0x52,0x9c,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0xa0,0x10,0xee,0x4,0xf8,0x0,0xf8,0x8,0x8,0x90,0x50,0x20,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x92,0x12,0x12,0x12,0x12,0x12,0x14,0x18,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x48,0x48,0x48,0x48,0x48,0x4a,0x4a,0x4e,0x0,
-+0x8,0xa,0xa,0x13,0x14,0x38,0x50,0x9f,0x10,0x10,0x11,0x12,0x14,0x18,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xc0,0xe0,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x8,0x9,0x9,0x12,0x14,0x3b,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x12,0x12,0x12,0x40,0x40,0x20,0x10,0xe,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x8,0x8,0x8,0x14,0x12,0x32,0x50,0x91,0x12,0x14,0x10,0x11,0x11,0x12,0x14,0x18,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xac,0xa4,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x8,0x8,0xf,0x11,0x10,0x30,0x50,0x93,0x1d,0x11,0x11,0x11,0x11,0x11,0x12,0x14,0x40,0x28,0xfc,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x8,0x8,0x8,0x17,0x11,0x31,0x52,0x95,0x11,0x10,0x10,0x10,0x10,0x11,0x12,0x1c,0x80,0x40,0x48,0xfc,0x20,0x10,0xc,0x14,0x10,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x8,0x8,0x8,0x17,0x14,0x38,0x51,0x91,0x13,0x15,0x19,0x11,0x11,0x11,0x11,0x11,0x40,0x40,0x40,0xfe,0x82,0x84,0x40,0x48,0x30,0x20,0x10,0x10,0x8,0x4e,0x84,0x0,
-+0x8,0x8,0x9,0x12,0x17,0x32,0x52,0x93,0x14,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x10,0x8,0xfc,0x44,0x50,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x8,0x8,0xf,0x10,0x17,0x31,0x5f,0x91,0x12,0x13,0x15,0x18,0x10,0x10,0x10,0x10,0x80,0x88,0xfc,0x80,0xf8,0x0,0xfe,0x10,0x14,0xfe,0x10,0x90,0x90,0x10,0x50,0x20,
-+0x8,0xf,0x8,0x14,0x12,0x30,0x57,0x94,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x18,0x8,0xfc,0xa0,0xa4,0xa8,0xa0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xf,0x10,0x10,0x37,0x54,0x94,0x16,0x15,0x14,0x14,0x14,0x14,0x14,0x15,0x0,0x4,0xfe,0x0,0x4,0xbe,0xa4,0xa4,0xb4,0xac,0xa4,0xa4,0xa4,0xa4,0xa4,0xac,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x54,0x92,0x12,0x10,0x11,0x12,0x14,0x10,0x11,0x10,0x40,0x50,0x48,0x48,0xfe,0x40,0x48,0x50,0x60,0xd0,0x50,0x48,0x4e,0x44,0x40,0x80,
-+0x8,0x8,0xf,0x14,0x14,0x37,0x54,0x94,0x17,0x14,0x10,0x17,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0xfc,0x40,0x44,0xfe,0x0,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x97,0x10,0x10,0x1f,0x10,0x10,0x11,0x12,0x1c,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xe,0x4,
-+0x8,0x8,0xb,0x12,0x13,0x32,0x53,0x90,0x1f,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x40,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x8,0xb,0x8,0x10,0x10,0x37,0x54,0x94,0x17,0x14,0x14,0x17,0x14,0x14,0x14,0x14,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8,
-+0x8,0x8,0x9,0x12,0x17,0x31,0x51,0x91,0x12,0x14,0x1f,0x10,0x10,0x10,0x11,0x16,0x80,0x80,0x10,0x8,0xfc,0x4,0x0,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x8,0x8,0xf,0x10,0x13,0x30,0x5f,0x91,0x12,0x15,0x18,0x10,0x17,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0x48,0xfe,0x44,0x40,0xfc,0x40,0x40,0x40,
-+0x8,0x8,0xf,0x10,0x13,0x30,0x5f,0x90,0x13,0x12,0x13,0x12,0x13,0x12,0x12,0x12,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x9,0x9,0xf,0x11,0x11,0x30,0x5f,0x91,0x11,0x12,0x13,0x16,0x1a,0x12,0x13,0x12,0x10,0x10,0xfc,0x10,0x90,0x84,0xfe,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0,
-+0x8,0x8,0x8,0x10,0x13,0x32,0x53,0x92,0x13,0x12,0x10,0x1f,0x10,0x10,0x10,0x10,0x40,0x48,0x7c,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x11,0x11,0x11,0x29,0x2a,0x6c,0xa8,0x29,0x2e,0x28,0x2f,0x28,0x20,0x20,0x21,0x26,0x0,0x8,0xfc,0x10,0xa0,0x40,0xb0,0x4e,0x50,0x48,0xfc,0x40,0xa0,0x90,0xe,0x4,
-+0x8,0xf,0xc,0x14,0x17,0x34,0x54,0x97,0x14,0x10,0x1f,0x10,0x11,0x12,0x1c,0x10,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x8,0xb,0x8,0x10,0x17,0x31,0x52,0x94,0x10,0x1f,0x11,0x12,0x11,0x10,0x11,0x16,0x18,0xe0,0x40,0x48,0xfc,0x50,0x48,0x46,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0x8,
-+0x8,0x9,0xb,0x12,0x12,0x33,0x52,0x92,0x13,0x10,0x11,0x1f,0x10,0x10,0x10,0x10,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x8,0xf,0xc,0x14,0x17,0x34,0x54,0x95,0x14,0x15,0x15,0x15,0x15,0x14,0x14,0x18,0x4,0xfe,0x44,0x54,0xfc,0x44,0x44,0xf4,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x8,0x8,0xb,0x12,0x14,0x33,0x52,0x92,0x13,0x12,0x13,0x12,0x12,0x12,0x13,0x12,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x17,0x14,0x39,0x52,0x94,0x10,0x13,0x10,0x10,0x10,0x10,0x1f,0x10,0x80,0x40,0x40,0xfe,0x2,0x14,0x8,0x4,0x10,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0xb,0xa,0x12,0x13,0x32,0x52,0x93,0x12,0x12,0x13,0x13,0x15,0x15,0x19,0x11,0x4,0xfe,0x4,0x4,0xfc,0x24,0x20,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0xf,0x10,0x11,0x3f,0x51,0x90,0x13,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0x48,0xfc,0x40,0x54,0xfe,0x10,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x8,0xf,0xc,0x15,0x15,0x35,0x55,0x95,0x14,0x17,0x14,0x14,0x14,0x14,0x17,0x10,0x4,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x40,0xfe,0x48,0x90,0x70,0x88,0xfe,0x0,
-+0xa,0xa,0xb,0x12,0x12,0x33,0x56,0x90,0x13,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x20,0x24,0xac,0x30,0xa2,0x22,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x8,0xb,0xa,0x13,0x12,0x33,0x51,0x91,0x13,0x14,0x1a,0x12,0x12,0x13,0x10,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x44,0x44,0xa4,0x4,0xe4,0x14,0x8,
-+0x8,0xb,0xa,0x12,0x13,0x32,0x52,0x93,0x10,0x1f,0x12,0x12,0x12,0x12,0x13,0x12,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x4,0xfe,0x88,0x50,0x20,0x90,0xe,0x4,
-+0x9,0x9,0x9,0x12,0x13,0x34,0x59,0x92,0x14,0x11,0x10,0x15,0x15,0x19,0x10,0x10,0x0,0x4,0xfe,0xa4,0xa4,0xf4,0x2c,0x44,0x94,0x8,0x40,0x24,0x22,0xa,0xf8,0x0,
-+0x8,0xa,0x9,0x10,0x17,0x30,0x51,0x92,0x10,0x1f,0x11,0x12,0x11,0x10,0x11,0x16,0x40,0x48,0x50,0x40,0xfc,0xe0,0x50,0x4c,0x80,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8,
-+0x10,0x14,0x12,0x20,0x2f,0x68,0xb7,0x24,0x24,0x24,0x27,0x25,0x21,0x21,0x22,0x2c,0x80,0x90,0xa0,0x80,0xfc,0x4,0xf8,0x10,0x10,0x10,0xf0,0x50,0x40,0x44,0x44,0x3c,
-+0x8,0x8,0xb,0x12,0x14,0x31,0x51,0x91,0x11,0x11,0x11,0x1f,0x10,0x10,0x11,0x16,0x80,0x40,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x90,0xc,0x4,
-+0x10,0x10,0x10,0x2f,0x21,0x71,0xaa,0x2a,0x24,0x24,0x2a,0x29,0x31,0x20,0x20,0x20,0x20,0x30,0x28,0x7e,0x48,0xc8,0x7e,0x48,0x48,0x7e,0x48,0x48,0x48,0x7e,0x40,0x40,
-+0xa,0xa,0xb,0x14,0x1a,0x35,0x53,0x92,0x14,0x18,0x17,0x11,0x12,0x14,0x11,0x10,0x0,0x20,0xbc,0xa4,0xa8,0x10,0x10,0xe8,0x6,0x0,0xfc,0x50,0x4c,0x44,0x40,0x80,
-+0x8,0xf,0x8,0x13,0x10,0x33,0x52,0x93,0x11,0x1f,0x10,0x13,0x12,0x12,0x13,0x12,0x48,0xfc,0x40,0xf8,0x0,0xf8,0x8,0xf8,0x10,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,
-+0x15,0x15,0x1f,0x25,0x25,0x68,0xaf,0x28,0x30,0x2e,0x2a,0x2a,0x2e,0x20,0x22,0x21,0x20,0x20,0xa0,0x24,0x7e,0x84,0xc4,0xc4,0xa8,0xa8,0xa8,0x90,0xa8,0xa8,0xc6,0x4,
-+0x11,0x1f,0x1a,0x2a,0x2f,0x62,0xa6,0x2a,0x33,0x20,0x27,0x24,0x27,0x24,0x27,0x24,0x4,0xbe,0x28,0x28,0xbe,0x8,0x18,0xaa,0x4e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x9,0x9,0x9,0x12,0x16,0x3b,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x15,0x14,0x18,0x40,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0x24,0x92,0x2,
-+0x14,0x12,0x12,0x3f,0x20,0x6f,0xa8,0x28,0x28,0x2f,0x22,0x2b,0x2a,0x32,0x26,0x20,0x10,0x10,0x98,0xd4,0x10,0xfe,0x90,0x90,0x98,0x98,0x28,0x28,0xa8,0xca,0x4a,0x86,
-+0x8,0xf,0x9,0x10,0x1f,0x30,0x57,0x94,0x17,0x14,0x17,0x10,0x17,0x10,0x1f,0x10,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x40,0xfc,0x40,0xfe,0x0,
-+0x8,0xf,0xc,0x14,0x17,0x30,0x5f,0x90,0x13,0x12,0x13,0x10,0x11,0x13,0x1d,0x11,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xfe,0x8,0xfc,0x8,0xf8,0xc4,0x28,0x10,0x8e,0x4,
-+0x9,0x9,0xa,0x17,0x14,0x35,0x57,0x94,0x15,0x14,0x15,0x14,0x15,0x15,0x19,0x11,0x0,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x4,0xfc,0x4,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x20,0xc0,0x1f,0x1,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x24,0xf0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x1,0x1,0x2,0x4,0x9,0x31,0xc1,0x3d,0x5,0x9,0x9,0x11,0x21,0x41,0x5,0x2,0x0,0x0,0x80,0x40,0x30,0xe,0x4,0x90,0x60,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x1,0x1,0x2,0x4,0x8,0x30,0xcf,0x0,0x0,0x7f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x0,0x80,0x40,0x30,0x4e,0xe4,0x0,0x8,0xfc,0x0,0x20,0x18,0xc,0x4,0x0,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc0,0x12,0x9,0x9,0x9,0x8,0x0,0xff,0x0,0x0,0x0,0x80,0x40,0x20,0x50,0xee,0x4,0x10,0x10,0x20,0x20,0x40,0x84,0xfe,0x0,
-+0x10,0x11,0x11,0x29,0x29,0x45,0x95,0x11,0x11,0x29,0x29,0x45,0x45,0x81,0xf,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x1,0x1,0x2,0xc,0x37,0xc0,0x3b,0x2a,0x3b,0x0,0x3f,0x24,0x3f,0x24,0x24,0x20,0x0,0x0,0x80,0x60,0xd8,0x6,0xb8,0xa8,0xb8,0x0,0xf8,0x48,0xf8,0x48,0x48,0x18,
-+0x6,0x1,0x2,0xc,0x31,0xc1,0x1,0x3d,0x5,0x9,0x9,0x11,0x21,0x41,0x5,0x2,0x0,0x0,0x80,0x60,0x18,0x6,0x0,0x90,0x60,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x6,0x1,0x2,0xc,0x31,0xc1,0x11,0x9,0x1,0x7f,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0x0,0x80,0x60,0x18,0x6,0x10,0x20,0x8,0xfc,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x4,0x4,0x8,0x8,0x10,0x20,0x5f,0x88,0x8,0x1f,0x0,0x0,0x0,0x2,0x1,0x0,0x40,0x40,0x20,0x20,0x10,0x58,0xee,0x4,0x20,0xf0,0x20,0x20,0x20,0x20,0x40,0x80,
-+0x0,0x3e,0x22,0x22,0x3e,0x20,0x22,0x1e,0x4,0x3f,0x4,0x4,0xff,0x4,0x18,0x20,0x8,0xfc,0x88,0x88,0xf8,0x80,0x84,0x7c,0x40,0xf8,0x40,0x44,0xfe,0x40,0x30,0x8,
-+0x22,0x11,0x7f,0x44,0x9f,0x4,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x4,0x18,0x20,0x8,0x10,0xfe,0x42,0xf4,0x40,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x40,0x30,0x8,
-+0x0,0x44,0x28,0xff,0x10,0x20,0x7d,0x45,0x45,0x7d,0x45,0x7c,0x44,0x47,0x7c,0x44,0x10,0x18,0x14,0xfe,0x10,0x10,0xd4,0x54,0x54,0x54,0xd4,0x18,0xd2,0x2a,0x46,0x82,
-+0x44,0x25,0x29,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x12,0xfe,0x12,0x14,0x18,0x10,0x4,0xfe,0x4,0x4,0xfc,0x48,0xfc,0x48,0x48,0xfe,0xa4,0xa8,0x90,0x88,0xc6,0x80,
-+0x4,0xff,0x1,0x17,0x54,0x5f,0x54,0x57,0x5c,0xe7,0x14,0x27,0x4c,0x13,0xc,0x70,0x40,0xfe,0x0,0xdc,0x54,0xd4,0x5c,0xd0,0x52,0xce,0x10,0xc8,0x44,0x80,0x60,0x1c,
-+0x10,0x10,0x1f,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x1f,0x22,0x42,0xbf,0x2,0x3f,0x22,0x3f,0x22,0x3f,0x22,0x22,0x22,0x0,0x0,0x4,0xfe,0x84,0x44,0xf4,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0x64,0x34,0x8,
-+0x10,0x10,0x1f,0x24,0x42,0xbf,0x0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x10,0x1f,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x4,0xc4,0x4,0xc4,0x4,0xc4,0x44,0x44,0xd4,0x8,
-+0x10,0x10,0x1f,0x20,0x7f,0x80,0x1f,0x10,0x1f,0x0,0x3f,0x22,0x3f,0x22,0x3f,0x0,0x0,0x4,0xfe,0x44,0xe4,0x4,0xc4,0x44,0xc4,0x4,0xe4,0x24,0xe4,0x24,0xf4,0x8,
-+0x2,0x4,0x3f,0x20,0x24,0x22,0x20,0x3f,0x0,0xf,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x20,0xf0,0x20,0x20,0xa0,0x48,0xfc,0x8,0xa8,0x90,0x80,0x80,0x82,0x82,0x7e,
-+0x0,0x3f,0x20,0x20,0x2f,0x22,0x22,0x27,0x24,0x2c,0x32,0x21,0x22,0x44,0x48,0x80,0x10,0xf8,0x10,0x90,0xd0,0x10,0x10,0xd0,0x50,0x50,0x90,0x10,0x12,0x12,0xa,0x4,
-+0x0,0x3c,0x24,0x24,0x27,0x20,0x20,0x3f,0x24,0x4,0x4,0x4,0x8,0x10,0x20,0x40,0x8,0x7c,0x48,0x48,0xc8,0x8,0x8,0xf8,0x48,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x0,0x0,0x0,0x2,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x1,0xff,0x8,0x12,0x22,0x44,0x8,0x1f,0x4,0x4,0x4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x20,0x18,0xc,0x44,0x20,0xf0,0x90,0x80,0x80,0x84,0x84,0x7c,0x0,
-+0x1,0xff,0x0,0x1f,0x10,0x1f,0x40,0x7f,0x40,0x9f,0x1,0x1,0x3f,0x1,0x1,0x0,0x0,0xfe,0x0,0xf0,0x10,0xf0,0x0,0xfe,0x12,0xe4,0x0,0xf8,0x0,0x4,0x4,0xfc,
-+0x2,0x1,0xff,0x8,0x12,0x22,0x44,0x1f,0x2,0x6,0xd,0x14,0x24,0xc5,0x6,0x4,0x0,0x4,0xfe,0x20,0x18,0x4c,0x24,0xf0,0x0,0x18,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x1,0xff,0x0,0x1f,0x2,0x1,0x7f,0x4,0x8,0x32,0x1,0x2,0xc,0x15,0x66,0x4,0x0,0xfe,0x0,0xf0,0x40,0x80,0xfc,0x84,0x88,0x80,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x1,0xff,0x8,0x8,0x7e,0x8,0xe,0x78,0x9,0x1a,0x1,0x2,0xc,0x15,0x66,0x4,0x0,0xfe,0x40,0x48,0xfc,0x48,0xc8,0xa8,0xa,0x6,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x1,0xff,0x4,0x14,0x24,0x45,0x1,0x3f,0x22,0x24,0x29,0x22,0x24,0x28,0x20,0x20,0x0,0xfe,0x40,0x50,0x4c,0x44,0x0,0xf8,0x88,0x68,0x28,0x88,0x68,0x28,0x28,0x10,
-+0x1,0xff,0x2,0x1c,0x10,0x10,0x1c,0x10,0x10,0x1f,0x5,0x8,0x18,0x2a,0xcc,0x8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x8,0x90,0x60,0x30,0xe,0x4,
-+0x1,0xff,0x0,0x3f,0x24,0x27,0x24,0x3f,0x0,0x3f,0x0,0xff,0x9,0x11,0x21,0x3,0x0,0xfe,0x8,0xfc,0x48,0xc8,0x48,0xf8,0x0,0xf8,0x0,0xfe,0x20,0x18,0x8,0x0,
-+0x1,0xff,0x20,0x3f,0x0,0x1f,0x10,0x1f,0x79,0x49,0x7f,0x4a,0x7a,0x49,0x4e,0x98,0x0,0xfe,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x38,0x28,0xe8,0xb8,0xa8,0x2a,0xea,0x46,
-+0x1,0xff,0x20,0x3f,0x0,0x1f,0x10,0x1f,0x71,0x57,0x75,0x57,0x71,0x51,0x57,0xb0,0x0,0xfe,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x1c,0xd4,0x54,0xdc,0x14,0x54,0xd4,0x22,
-+0x1,0xff,0x20,0x3f,0x0,0x1f,0x10,0x1f,0x7a,0x4f,0x79,0x4f,0x79,0x4f,0x49,0x99,0x0,0xfe,0x0,0xf8,0x0,0xf0,0x10,0xf0,0xb8,0xe8,0x28,0xe8,0x38,0xea,0x2a,0x46,
-+0x0,0x40,0x20,0x10,0x10,0x0,0x0,0x10,0x20,0x20,0xe0,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4f,0x22,0x12,0x12,0x3,0x2,0x12,0x22,0x22,0xe7,0x20,0x20,0x20,0x2f,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x20,0x20,0x44,0xfe,0x0,
-+0x0,0x4f,0x22,0x12,0x13,0x2,0x14,0x14,0x26,0x29,0xe0,0x21,0x22,0x24,0x28,0x0,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x54,0x54,0x94,0x94,0x14,0x4,0x4,0x14,0x8,
-+0x0,0x42,0x22,0x13,0x12,0x4,0x0,0x17,0x21,0x21,0xe1,0x21,0x22,0x22,0x24,0x8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x2,0x42,0x22,0x22,0x1f,0x2,0x26,0x27,0x2a,0x4a,0xd2,0x42,0x42,0x42,0x42,0x2,0x0,0x28,0x28,0x28,0xc4,0x44,0x92,0x10,0x90,0xa0,0x20,0x48,0x44,0xfe,0x2,0x0,
-+0x0,0x0,0x0,0x0,0x40,0x7f,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x40,0x80,0x3f,0x6,0x9,0x1a,0x74,0xb,0x16,0x64,0x8,0x10,0x62,0x1,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0x90,0xe0,0xa0,0xa0,0x90,0x8e,0x84,0x80,0x0,
-+0x40,0x7f,0x40,0x80,0x1f,0x10,0x1f,0x10,0x1f,0x12,0x1,0xff,0x0,0x8,0x10,0x20,0x0,0xfe,0x2,0x14,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x4,0xfe,0x0,0x20,0x18,0x8,
-+0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x47,0x30,0x10,0x0,0x0,0xf0,0x17,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x40,0x37,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x12,0x14,0x1f,0x10,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0,
-+0x0,0x40,0x20,0x20,0x4,0x4,0xe4,0x24,0x24,0x24,0x24,0x24,0x2c,0x37,0x20,0x0,0x40,0x40,0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,0x0,
-+0x0,0x47,0x24,0x24,0x5,0x4,0xe4,0x24,0x24,0x24,0x25,0x26,0x2c,0x34,0x27,0x0,0x8,0xfc,0x0,0x4,0x4,0x88,0x50,0x20,0x50,0x88,0xc,0x4,0x0,0x4,0xfe,0x0,
-+0x0,0x43,0x32,0x12,0x2,0x3,0xf2,0x12,0x12,0x13,0x12,0x12,0x16,0x1a,0x13,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x40,0x20,0x20,0x7,0x4,0xe4,0x24,0x24,0x24,0x25,0x25,0x2e,0x34,0x24,0x4,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xa4,0xa4,0x14,0x14,0xc,0x4,0x14,0x8,
-+0x0,0x40,0x30,0x10,0x7,0x0,0xf0,0x10,0x13,0x12,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x37,0x10,0x0,0x3,0xf2,0x12,0x12,0x12,0x13,0x10,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x8,0x8,0x8,0x28,0x10,
-+0x0,0x40,0x27,0x24,0x4,0x4,0xe7,0x24,0x24,0x24,0x24,0x24,0x2d,0x36,0x24,0x0,0x10,0x78,0xc0,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x20,0xa0,0x12,0x92,0x4a,0x6,
-+0x0,0x47,0x30,0x10,0x0,0x1,0xf1,0x12,0x14,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x4,0xfe,0x84,0x84,0x84,0x4,0x14,0x8,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x40,0x22,0x22,0x2,0x2,0xe2,0x23,0x20,0x24,0x24,0x24,0x2c,0x34,0x27,0x0,0x40,0x40,0x48,0x48,0x48,0x48,0x48,0xf8,0x40,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x0,0x40,0x30,0x11,0x2,0x7,0xf0,0x10,0x13,0x12,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x80,0x8,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x43,0x32,0x12,0x3,0x2,0xf2,0x12,0x12,0x12,0x12,0x13,0x16,0x1a,0x13,0x0,0x8,0xfc,0x0,0x8,0xfc,0x20,0x20,0xf8,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x0,0x3,0xf0,0x10,0x1f,0x10,0x10,0x15,0x19,0x12,0x4,0x0,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0xc0,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x0,0x40,0x33,0x10,0x0,0x0,0xf7,0x10,0x10,0x10,0x13,0x10,0x14,0x18,0x17,0x0,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x0,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x40,0x30,0x1f,0x0,0x0,0xf7,0x10,0x10,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x17,0x1,0x1,0xf1,0x12,0x12,0x14,0x19,0x10,0x14,0x18,0x11,0x2,0x80,0x80,0x84,0xfe,0x0,0x20,0x20,0xa4,0xac,0xb0,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x42,0x32,0x13,0x4,0x0,0xf0,0x1f,0x11,0x11,0x11,0x15,0x1a,0x12,0x4,0x8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x40,0x33,0x12,0x2,0x3,0xf2,0x12,0x12,0x12,0x12,0x16,0x1a,0x12,0x4,0x8,0x8,0x1c,0xe0,0x0,0x4,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x0,0x40,0x30,0x11,0x2,0xc,0xf3,0x10,0x10,0x10,0x13,0x10,0x14,0x18,0x17,0x0,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x0,
-+0x1,0x41,0x31,0x12,0x4,0xb,0xf0,0x10,0x1f,0x10,0x10,0x13,0x14,0x18,0x11,0x0,0x0,0x0,0xf0,0x20,0x48,0xfc,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80,
-+0x0,0x47,0x34,0x18,0x7,0x1,0xf1,0x12,0x17,0x10,0x10,0x1f,0x10,0x14,0x18,0x0,0x0,0xfc,0x84,0x88,0xfc,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x40,0x37,0x10,0x0,0x4,0xf2,0x12,0x10,0x11,0x16,0x10,0x14,0x18,0x12,0x1,0x0,0x4,0xbe,0x84,0x84,0xa4,0x94,0x94,0x84,0x8c,0xb4,0x84,0x84,0x84,0x94,0x8,
-+0x0,0x42,0x31,0x11,0x0,0x3,0xf2,0x12,0x13,0x12,0x12,0x13,0x16,0x1a,0x12,0x2,0x40,0x48,0x58,0x60,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x42,0x32,0x13,0x4,0x8,0xf7,0x10,0x10,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x45,0x32,0x15,0x9,0x1,0xf1,0x13,0x15,0x19,0x11,0x11,0x15,0x19,0x15,0x2,0x80,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x0,0x40,0x31,0x12,0x7,0x1,0xf1,0x11,0x12,0x10,0x1f,0x10,0x14,0x18,0x11,0x6,0x80,0x80,0x10,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x0,0x5f,0x24,0x24,0x7,0x4,0xe4,0x27,0x24,0x24,0x24,0x2f,0x28,0x30,0x20,0x0,0x4,0xfe,0x80,0x80,0xbe,0x82,0xa2,0x94,0x94,0x94,0x88,0xc8,0x94,0x94,0xa2,0xc0,
-+0x0,0x4f,0x20,0x21,0x3,0x4,0xe8,0x25,0x22,0x26,0x29,0x21,0x2a,0x34,0x21,0x0,0x4,0xfe,0x80,0x0,0x4,0x8c,0xd0,0x60,0x60,0x50,0xd0,0x48,0x4e,0x44,0x40,0x80,
-+0x0,0x43,0x30,0x10,0x7,0x1,0xf2,0x14,0x10,0x1f,0x11,0x11,0x14,0x18,0x11,0x6,0x3c,0xc0,0x40,0x48,0xfc,0x50,0x4e,0x44,0x80,0xfe,0x10,0x10,0xa0,0x60,0x98,0x4,
-+0x0,0x41,0x36,0x14,0x4,0x7,0xf4,0x14,0x17,0x14,0x10,0x10,0x15,0x19,0x12,0xc,0x40,0x44,0x5e,0x44,0x44,0x5c,0x44,0x44,0xfc,0x44,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x40,0x20,0x21,0x2,0x4,0xe8,0x23,0x20,0x20,0x21,0x2d,0x35,0x25,0x9,0x0,0x40,0x40,0xa0,0x10,0x88,0x46,0x4,0xf0,0x10,0x20,0x0,0x48,0x24,0x4,0x10,0xf0,
-+0x0,0x40,0x30,0x11,0x2,0x4,0xf0,0x13,0x12,0x12,0x13,0x12,0x16,0x1a,0x13,0x2,0x80,0x80,0xfc,0x8,0x10,0x20,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x40,0x37,0x11,0x1,0x1,0xf2,0x14,0x10,0x1f,0x10,0x10,0x14,0x18,0x10,0x0,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x41,0x37,0x11,0x1,0x1,0xf1,0x11,0x11,0x1f,0x12,0x12,0x17,0x1a,0x13,0x0,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0x0,0x90,0x8,0x0,0xfc,0x0,
-+0x0,0x40,0x2f,0x20,0x7,0x4,0xe5,0x24,0x24,0x27,0x21,0x29,0x32,0x24,0x8,0x0,0x40,0x44,0xfe,0x40,0xfc,0x44,0x54,0xe4,0x44,0xfc,0x60,0x50,0x48,0x4e,0x44,0x40,
-+0x0,0x40,0x20,0x27,0x4,0x4,0xe7,0x24,0x24,0x24,0x25,0x2d,0x37,0x29,0x9,0x10,0x48,0x7c,0x40,0xfe,0x42,0x7c,0xc0,0x44,0x7c,0x0,0xfc,0x0,0xfe,0x0,0xfc,0x0,
-+0x0,0x43,0x22,0x23,0x2,0x3,0xe1,0x23,0x24,0x28,0x22,0x23,0x2a,0x33,0x20,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xb4,0x14,0x4,0xf4,0x14,0x8,
-+0x0,0x47,0x24,0x24,0x7,0x0,0xe3,0x20,0x2f,0x21,0x21,0x24,0x28,0x30,0x20,0x0,0x4,0xbe,0xa4,0xa4,0xbc,0x0,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x0,0x40,0x21,0x22,0x4,0xb,0xf0,0x27,0x24,0x27,0x24,0x27,0x2c,0x34,0x24,0x5,0x80,0x80,0x40,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x0,0x47,0x20,0x22,0x1,0xf,0xe0,0x20,0x2f,0x21,0x21,0x2b,0x32,0x24,0x8,0x3,0x3c,0xc0,0x88,0x48,0x50,0xfc,0x80,0x84,0xfe,0x0,0xf0,0x10,0xa0,0x40,0xb0,0xc,
-+0x0,0x40,0x37,0x12,0x1,0x0,0xf7,0x10,0x13,0x12,0x12,0x13,0x16,0x1a,0x13,0x2,0x80,0x48,0xfc,0x10,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x37,0x11,0x0,0x7,0xf4,0x18,0x13,0x12,0x12,0x12,0x16,0x1a,0x10,0x0,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x48,0x58,0x40,0x40,
-+0x0,0x48,0x24,0x24,0x1,0x6,0xe8,0x30,0x21,0x22,0x27,0x22,0x2a,0x32,0x23,0x2,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0xa0,0x10,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x24,0x27,0x24,0x2c,0x37,0x24,0x2c,0x34,0x4,0x80,0x48,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0xa4,0xa4,0xfc,0xa4,0xa4,0xb4,0x8,
-+0x1,0x41,0x37,0x11,0x0,0x3,0xf2,0x13,0x12,0x13,0x10,0x1f,0x10,0x19,0x12,0xc,0x10,0x14,0xfe,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x44,0xfe,0xa0,0x10,0xe,0x4,
-+0x0,0x42,0x21,0x2f,0x8,0x13,0xe2,0x22,0x22,0x23,0x20,0x21,0x29,0x32,0x24,0x8,0x40,0x48,0x50,0xfe,0x2,0xfc,0x8,0x8,0x8,0xf8,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x47,0x24,0x27,0x4,0x7,0xe2,0x25,0x29,0x22,0x25,0x20,0x28,0x30,0x23,0xc,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0x4,0xfa,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x4,0x42,0x21,0x2f,0x0,0x1,0xe2,0x24,0x23,0x22,0x22,0x22,0x2a,0x32,0x2f,0x0,0x4,0x8,0x10,0xfe,0x0,0x10,0xc,0x4,0xf8,0xa8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x1,0x40,0x30,0x15,0x5,0x9,0xf1,0x12,0x14,0x13,0x12,0x12,0x16,0x1a,0x17,0x0,0x0,0xc8,0x48,0x14,0x22,0x42,0x88,0xf8,0x0,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x0,0x40,0x2f,0x21,0x0,0x7,0xe4,0x24,0x27,0x24,0x25,0x25,0x2d,0x35,0x25,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x1,0x40,0x37,0x10,0x3,0x2,0xf3,0x12,0x13,0x12,0x10,0x13,0x14,0x18,0x11,0x6,0x8,0x90,0xfe,0x0,0xd4,0x54,0xd4,0x54,0xc4,0x4c,0x0,0xfc,0x84,0x84,0x14,0x8,
-+0x2,0x4f,0x22,0x2a,0xf,0x2,0xe6,0x2b,0x32,0x20,0x23,0x22,0x2b,0x32,0x23,0x2,0x4,0xbe,0x8,0x28,0xbe,0x8,0x98,0x2a,0x4e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x1,0x41,0x23,0x22,0x6,0xb,0xe2,0x22,0x23,0x22,0x22,0x23,0x2a,0x35,0x24,0x8,0x40,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0x24,0x92,0x2,
-+0x0,0x47,0x20,0x20,0xf,0x1,0xe2,0x2c,0x27,0x24,0x27,0x25,0x2d,0x35,0x24,0x4,0x0,0xf8,0x90,0x60,0xfe,0x44,0x40,0xc4,0xfe,0xa4,0x1c,0xf4,0x14,0xf4,0x14,0x8,
-+0x1,0x41,0x21,0x2f,0x1,0x1,0xef,0x2a,0x2a,0x2f,0x29,0x2f,0x29,0x39,0x28,0x0,0x8,0x8,0x4c,0xe8,0x3e,0x8,0xe8,0xa8,0xa8,0xe8,0x28,0xe8,0x28,0x74,0x24,0x42,
-+0x1,0x41,0x22,0x27,0xc,0x5,0xe7,0x24,0x25,0x24,0x25,0x2c,0x35,0x25,0x9,0x1,0x0,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x4,0xfc,0x4,
-+0x0,0x44,0x24,0x2b,0x0,0x1f,0xe2,0x2e,0x22,0x2e,0x22,0x2e,0x2a,0x32,0x2f,0x0,0x10,0x90,0x98,0x54,0x10,0xfe,0x90,0xf0,0x94,0xf4,0x94,0xe8,0x9a,0xaa,0xe6,0x2,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,0x20,0x20,
-+0x1f,0x0,0x1,0x3d,0x5,0x9,0x33,0xc1,0x3f,0x0,0x1f,0x10,0x10,0x10,0x10,0xf,0xf0,0x40,0x88,0xb0,0x40,0x30,0xe,0x4,0xf8,0x10,0xf8,0x10,0x90,0x64,0x4,0xfc,
-+0x0,0x78,0x48,0x48,0x50,0x50,0x60,0x50,0x50,0x48,0x48,0x68,0x50,0x40,0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x78,0x4f,0x49,0x51,0x51,0x61,0x51,0x51,0x49,0x49,0x69,0x52,0x42,0x44,0x48,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x7c,0x45,0x48,0x48,0x50,0x48,0x4b,0x44,0x44,0x44,0x68,0x50,0x40,0x40,0x40,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x1,0x79,0x49,0x49,0x57,0x51,0x61,0x51,0x51,0x4f,0x49,0x69,0x51,0x42,0x42,0x44,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x78,0x4b,0x4a,0x52,0x53,0x62,0x52,0x52,0x4a,0x4a,0x6a,0x54,0x44,0x49,0x42,0x8,0x3c,0xc0,0x0,0x8,0xfc,0x8,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x0,0x7c,0x44,0x48,0x48,0x50,0x48,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x7d,0x45,0x49,0x4a,0x52,0x4c,0x48,0x44,0x44,0x44,0x68,0x50,0x40,0x40,0x40,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x0,0x78,0x48,0x4b,0x52,0x52,0x62,0x53,0x52,0x4a,0x4a,0x6a,0x54,0x44,0x49,0x42,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x0,0x7b,0x48,0x48,0x50,0x50,0x61,0x56,0x50,0x4b,0x48,0x68,0x50,0x40,0x4f,0x40,0x0,0xf8,0x10,0x20,0x40,0xb0,0xc,0x4,0x10,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x78,0x48,0x4f,0x50,0x50,0x61,0x53,0x51,0x48,0x48,0x6b,0x50,0x40,0x43,0x4c,0x80,0x40,0x44,0xfe,0x80,0x90,0x10,0xe0,0x28,0x48,0x90,0x10,0x20,0xd8,0x6,0x2,
-+0x0,0x78,0x49,0x49,0x51,0x51,0x67,0x50,0x51,0x49,0x4a,0x68,0x50,0x40,0x43,0x4c,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x50,0x60,0x40,0x80,0x0,0x0,
-+0x0,0x7b,0x4a,0x4a,0x53,0x52,0x62,0x53,0x52,0x48,0x4b,0x68,0x50,0x40,0x4f,0x40,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x48,0x40,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x70,0x5f,0x54,0x54,0x57,0x64,0x54,0x57,0x54,0x54,0x5f,0x70,0x40,0x40,0x40,0x0,0x40,0xe0,0x80,0xbc,0x84,0xa4,0xa8,0xa8,0x90,0x90,0xe8,0xa8,0xc6,0x80,0x80,
-+0x0,0x78,0x4f,0x48,0x50,0x5f,0x61,0x51,0x57,0x49,0x49,0x6f,0x50,0x40,0x47,0x40,0x8,0x3c,0xc0,0x40,0x44,0xfe,0x50,0x50,0xfc,0x50,0x54,0xfe,0x40,0x48,0xfc,0x0,
-+0x0,0x79,0x4b,0x4a,0x52,0x53,0x62,0x52,0x53,0x48,0x49,0x6f,0x50,0x40,0x40,0x40,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x7b,0x4a,0x4a,0x53,0x52,0x62,0x53,0x50,0x4f,0x4a,0x6a,0x52,0x42,0x43,0x42,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x4,0xfe,0x88,0x50,0x20,0x90,0xe,0x4,
-+0x0,0x78,0x4b,0x4a,0x53,0x52,0x63,0x50,0x57,0x48,0x48,0x6b,0x50,0x40,0x4f,0x40,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x0,0x78,0x4b,0x4a,0x52,0x53,0x62,0x52,0x4b,0x48,0x68,0x51,0x41,0x42,0x44,0x48,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x54,0x5c,0x42,0x42,0x3e,
-+0x0,0x7b,0x4a,0x4b,0x52,0x53,0x61,0x52,0x57,0x49,0x4a,0x6f,0x50,0x45,0x44,0x48,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x8,0x10,0xbe,0x8,0x94,0xbe,0x0,0x24,0x92,0x2,
-+0x2,0x7f,0x8,0x8,0x8,0x9,0xff,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x0,0x2,0x7f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xf,0xf8,0x40,0x0,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x4,0x2,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x10,0x8,0x9,0xff,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x3f,0x0,0x0,0x0,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x12,0x3f,0x22,0x22,0x22,0x2a,0x24,0x20,0x3f,0x0,0x4,0xfe,0x0,0x2,0x1,0x0,0x3c,0x24,0x24,0x28,0x28,0x30,0x28,0xa4,0xe2,0xa2,0xa2,0xb4,0xa8,0xa0,0x20,
-+0x10,0x8,0x9,0xff,0x10,0x12,0x1f,0x12,0x12,0x12,0x12,0x22,0x22,0x4a,0x84,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x1,0xff,0x8,0x8,0x9,0x7f,0x49,0x49,0x49,0x55,0x63,0x41,0x41,0x45,0x42,0x0,0x0,0xfc,0x44,0x44,0x48,0xc8,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x1,0xff,0x4,0x8,0x18,0x1c,0x2a,0x29,0x49,0x88,0x8,0x8,0xf,0xf8,0x40,0x0,0x0,0xfc,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x14,0x14,0x14,0x14,0x15,0xf7,0x14,0x14,0x14,0x14,0x14,0x35,0xd6,0x14,0x0,0x0,0x0,0x7c,0x44,0x44,0x48,0xc8,0x50,0x48,0x44,0x42,0xc2,0x62,0x54,0x48,0x40,0x40,
-+0x14,0x14,0x14,0x14,0x94,0x54,0x55,0x35,0x36,0x14,0x14,0x17,0xf8,0x40,0x0,0x0,0x0,0x7c,0x44,0x44,0xc8,0xc8,0x50,0x48,0x44,0x42,0x42,0xe2,0x54,0x48,0x40,0x40,
-+0x2,0x7,0x78,0x48,0x48,0x4a,0x7f,0x48,0x48,0x48,0x44,0x44,0x52,0x69,0x44,0x0,0x0,0x3c,0x24,0x24,0x28,0x28,0x30,0x28,0x24,0x22,0x22,0xa2,0xb4,0xa8,0x20,0x20,
-+0x10,0x10,0x20,0x24,0x42,0xff,0x0,0x2,0x7f,0x42,0x42,0x42,0x42,0x7e,0x42,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x8,0x9,0xff,0x8,0x49,0x29,0x2a,0xff,0x8,0x8,0x14,0x12,0x23,0xc1,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x2,0xff,0x10,0x10,0x22,0x41,0x7f,0x8,0x8,0x7f,0x8,0x8,0xf,0xf8,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40,
-+0x8,0x8,0x4a,0x7f,0x48,0x88,0x9,0xff,0x8,0x1c,0x1c,0x2a,0x29,0x48,0x88,0x8,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x8,0x14,0x12,0x21,0x20,0x7f,0x80,0x1,0xff,0x10,0x14,0x22,0x7f,0x21,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0xc2,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x41,0x22,0x14,0x8,0x14,0x63,0x10,0xff,0x10,0x24,0x28,0x48,0x92,0x3f,0x1,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x21,0x3f,0x41,0x41,0xbd,0x25,0x25,0x3d,0x25,0x25,0x3d,0x25,0x1,0xa,0x4,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x0,0x7f,0x50,0x91,0x3f,0x10,0x14,0x25,0x7f,0x4,0x4,0x7,0xfc,0x44,0x4,0x4,0x0,0xfc,0xc4,0x44,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0xe2,0x54,0x48,0x40,0x40,
-+0x0,0xff,0x0,0x0,0x7b,0x4a,0x4a,0x4a,0x6b,0x5a,0x4a,0x4a,0x4a,0x4a,0x5a,0x0,0x40,0xfe,0x12,0x52,0xf4,0x54,0x58,0x54,0x54,0xd2,0x52,0x5a,0x54,0x50,0xd0,0x10,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x0,0xff,0x8,0xa,0x7f,0x8,0xf,0xf8,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40,
-+0x8,0x28,0x2a,0x3f,0x48,0x88,0x9,0xff,0x0,0x7f,0x41,0x41,0x41,0x7f,0x41,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x11,0xe,0x11,0x28,0x8,0xff,0x14,0x24,0x7f,0xa4,0x24,0x24,0x25,0x24,0x4,0x80,0x3c,0x24,0x24,0xa8,0x28,0xf0,0x28,0xa4,0xe2,0xa2,0xa2,0xb4,0xa8,0xa0,0x20,
-+0x1,0x3,0xfc,0x49,0x29,0x2,0x7f,0x2,0xc,0x8,0xff,0x48,0x8,0x8,0x28,0x10,0x0,0xfc,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x11,0x7f,0x49,0x49,0x7f,0x49,0x51,0x7f,0x10,0x29,0xff,0x8,0x8,0x8,0x8,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0xe2,0x54,0x48,0x40,0x40,
-+0x8,0x29,0x2a,0x4c,0x94,0x12,0x21,0xc8,0x8,0x29,0x2a,0x54,0x12,0x21,0xc1,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x1,0x7f,0x40,0x5f,0x51,0x5f,0x51,0x5f,0x48,0x7f,0x49,0x52,0x4e,0x51,0x7f,0x0,0x0,0xbc,0x24,0x24,0x28,0x28,0x30,0x28,0x24,0xe2,0x22,0x22,0x34,0x28,0xa0,0x20,
-+0x1,0xff,0x14,0x15,0x7f,0x55,0x55,0x55,0x7f,0x49,0x8,0x7f,0x8,0xf,0xf8,0x40,0x0,0xfc,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x1,0x7f,0x4,0x17,0x14,0xff,0x20,0x3f,0x20,0x3f,0x0,0xaa,0xaa,0x0,0x2,0x1,0x0,0xbc,0x24,0xa4,0x28,0xe8,0x30,0x28,0x24,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0x20,
-+0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0x7f,0x8,0x3e,0x8,0xf,0x78,0x20,0x0,0xfc,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x7f,0x22,0x14,0xff,0x0,0x7f,0x41,0x7f,0x41,0x7f,0x8,0xff,0x8,0x8,0x8,0x0,0x7c,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40,
-+0x3,0x7c,0x24,0x15,0x7f,0xc,0x15,0x24,0xff,0x24,0x24,0x3f,0x24,0x24,0x3f,0x20,0x80,0x3c,0xa4,0x24,0xe8,0x28,0x30,0xa8,0xe4,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0xa0,
-+0x11,0xa,0x7f,0x4,0x3f,0x4,0x7f,0x24,0x15,0xff,0x0,0x3f,0x20,0x20,0x3f,0x20,0x0,0x3c,0xe4,0x24,0xa8,0x28,0xf0,0xa8,0x24,0xe2,0x22,0xa2,0xb4,0xa8,0xa0,0xa0,
-+0xff,0x48,0x7b,0x4a,0x7a,0x49,0xfa,0x8,0x7f,0x14,0x25,0x4e,0x15,0x24,0xc4,0x4,0x80,0x3c,0xa4,0xa4,0xa8,0x28,0xb0,0x28,0x24,0xa2,0x22,0x22,0xb4,0xa8,0x20,0x20,
-+0x2,0x7f,0x8,0x7f,0x48,0xaa,0x8,0x2a,0x0,0x7f,0x55,0x55,0x55,0x55,0x7f,0x0,0x0,0x7c,0x44,0xc4,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x2a,0x7f,0xaa,0xff,0xaa,0xff,0xaa,0xff,0x0,0xff,0x1,0x7f,0x41,0x7f,0x22,0xff,0x0,0x3c,0xa4,0xa4,0xa8,0xa8,0xb0,0xa8,0x24,0xa2,0x22,0xa2,0x34,0x28,0x20,0xa0,
-+0x8,0x8,0xf,0x10,0x10,0x20,0x5f,0x80,0x0,0x0,0x1f,0x0,0x0,0x0,0x3f,0x0,0x0,0x20,0xf0,0x20,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0xf,0x10,0x10,0x20,0x5f,0x11,0x11,0x11,0xff,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0xe0,0x20,0x40,0x90,0xf8,0x10,0x10,0x14,0xfe,0x0,0x80,0x60,0x1c,0x8,
-+0x0,0x1,0xff,0x10,0x10,0x12,0x1f,0x12,0x12,0x12,0x12,0x22,0x22,0x4a,0x84,0x1,0x20,0x20,0xa0,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x20,0x22,0x3f,0x42,0x42,0x8a,0x7e,0x4a,0x4a,0x4a,0x4a,0x7a,0x42,0xa,0x4,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x2,0xff,0x22,0x22,0x22,0x2a,0x44,0x80,0x7e,0x42,0x42,0x42,0x42,0x7e,0x42,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x10,0x9,0xff,0x10,0x12,0x22,0x24,0x7c,0x8,0xa,0x12,0x24,0x4c,0x92,0x20,0x1,0x20,0x20,0xa0,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x8,0x8,0x7f,0x9,0x11,0x15,0x62,0x0,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x7c,0x0,0xfe,0x10,0x90,0x90,0x90,0x90,0x50,0x20,
-+0x0,0x7f,0x2,0x4,0x7e,0x4,0x14,0x8,0x7f,0x55,0x55,0x55,0x55,0xff,0x0,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x1,0xff,0x81,0xbd,0x81,0xbd,0x0,0x7e,0x42,0x7e,0x42,0x7e,0x42,0x7e,0x42,0x1,0x20,0xa0,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x10,0x12,0x7f,0x12,0x12,0x2a,0x44,0x0,0x44,0xff,0x55,0x55,0x55,0x55,0x99,0x33,0x0,0xfe,0x92,0x92,0xfe,0x92,0x92,0xfe,0x82,0x20,0x10,0x50,0xc2,0xc6,0x44,0x3c,
-+0x5,0x39,0x21,0x21,0x3d,0x21,0x21,0x3f,0x1,0x7f,0x8,0x6,0x1,0x6,0x18,0xe0,0x8,0x7c,0x8,0x8,0x78,0x8,0x8,0xf8,0x0,0xf0,0x20,0xc0,0x0,0xc0,0x30,0xe,
-+0x21,0x2f,0x20,0xaf,0x70,0x2f,0x20,0x27,0x54,0x87,0x0,0x1f,0x4,0x3,0xc,0x70,0x8,0xe8,0x8,0xea,0x1c,0xe8,0x8,0xc8,0x54,0xc2,0x0,0xe0,0x40,0x80,0x60,0x1c,
-+0x3e,0x32,0x2a,0x26,0x3e,0x8,0x1f,0x28,0x4f,0x8,0x8,0x1f,0x4,0x3,0x1c,0xe0,0xf8,0xc8,0xa8,0x98,0xf8,0x80,0xf8,0x80,0xf0,0x84,0x7c,0xe0,0x40,0x80,0x70,0xe,
-+0x0,0x0,0xf8,0x8,0x10,0x20,0x40,0x78,0x8,0x88,0x50,0x30,0x20,0x50,0x88,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0xfc,
-+0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x1,0x1,0x1,0x41,0x41,0x5f,0x43,0x45,0x45,0x49,0x51,0x61,0x45,0x42,0x7f,0x0,0x0,0x0,0x0,0x14,0x34,0x44,0x84,0x44,0x44,0x24,0x24,0x1c,0x4,0x4,0xfc,0x4,
-+0x9,0x4,0x22,0x29,0x22,0x24,0x29,0x20,0x3f,0x28,0x8,0x9,0xe,0x8,0x7,0x0,0x20,0x40,0x88,0x28,0x88,0x48,0x28,0x8,0xf8,0x8,0x60,0x80,0x0,0x4,0xfc,0x0,
-+0x0,0x0,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x8,0xfc,0x4,0x0,
-+0x1,0x1,0x2,0x4,0x1f,0x0,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x20,0xf0,0x10,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x4,0x8,0x1f,0x2,0xff,0x4,0x8,0x3f,0xd1,0x11,0x1f,0x11,0x11,0x1f,0x10,0x0,0x40,0x20,0xf0,0x4,0xfe,0x40,0x20,0xf8,0x16,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x0,0xfb,0x8,0x10,0x2d,0xc3,0x8,0x7d,0x11,0x11,0x11,0x1d,0xf2,0x44,0x8,0x80,0x44,0xfe,0x80,0x80,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x0,
-+0x1,0x4,0x4,0x8,0x10,0x2f,0xc4,0x4,0x8,0x31,0x1,0x3f,0x1,0x1,0xff,0x0,0x80,0x80,0x40,0x20,0x10,0xee,0x24,0x20,0xa0,0x40,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x2,0x22,0x1a,0xa,0x2,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x80,0x88,0x98,0xa0,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,
-+0x9,0x9,0x9,0x11,0x1f,0x30,0x50,0x90,0x11,0x17,0x1,0x3f,0x1,0x1,0xff,0x0,0x20,0x10,0x0,0xfc,0x0,0x90,0xa0,0x44,0xa4,0x1c,0x0,0xf8,0x0,0x4,0xfe,0x0,
-+0x8,0xff,0x0,0x3e,0x22,0x3e,0x0,0x7e,0x4,0x7e,0x9,0x19,0x7f,0x1,0x1,0xff,0x20,0xa0,0x28,0xfc,0x28,0x68,0x28,0x58,0x48,0x8a,0x6,0x10,0xfc,0x0,0x4,0xfe,
-+0x8,0xff,0x8,0x7f,0x49,0x7f,0x49,0x7f,0x8,0xff,0x49,0x7f,0x1,0x3f,0x1,0xff,0x8,0x7c,0x48,0x48,0x86,0x7c,0x44,0x44,0x28,0x90,0x28,0xc6,0x0,0xf8,0x0,0xfe,
-+0x1,0xff,0x10,0x14,0x25,0x7a,0x10,0x24,0x7c,0x8,0x11,0x61,0x3f,0x1,0x1,0xff,0x0,0xfe,0x90,0xfe,0x90,0xfc,0x90,0xfc,0x90,0xfe,0x80,0x10,0xf8,0x0,0x4,0xfe,
-+0x8,0xf,0x48,0x7f,0x40,0xbf,0x8,0x55,0x3e,0xe3,0x22,0x3e,0x1,0x3f,0x1,0xff,0x0,0x0,0x7c,0x84,0xc4,0x28,0x28,0x10,0x28,0xa8,0x46,0x0,0x10,0xf8,0x0,0xfe,
-+0x10,0x10,0x11,0x10,0x14,0xfe,0x10,0x13,0x10,0x10,0x1e,0xf0,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x11,0x10,0x14,0xfe,0x13,0x10,0x10,0x11,0x1e,0xf0,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x88,0xfc,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x10,0x10,0x10,0x10,0x15,0xfe,0x11,0x10,0x10,0x10,0x1e,0xf1,0x41,0x1,0x0,0x0,0x80,0x80,0x84,0xfe,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x11,0x11,0x15,0xff,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x0,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,
-+0x10,0x10,0x10,0x13,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x44,0x4,0x8,0x10,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x13,0x10,0x14,0xfe,0x10,0x13,0x12,0x12,0x1e,0xf2,0x42,0x2,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x13,0x12,0x12,0xfe,0x12,0x13,0x12,0x12,0x1e,0xf2,0x42,0x2,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x13,0x12,0x12,0xfe,0x13,0x12,0x12,0x12,0x1e,0xf2,0x44,0x4,0x9,0x12,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x10,0x10,0x11,0x11,0x15,0xff,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x8,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf2,0x42,0x4,0x9,0x12,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x88,0x48,0x50,0x30,0x20,0x50,0x88,0xe,0x4,
-+0x11,0x11,0x11,0x11,0x17,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x1,0x1,0x1,0x8,0x8,0x8,0xa,0xfe,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0x17,0xfc,0x10,0x10,0x10,0x11,0x1d,0xf1,0x42,0x2,0x4,0x8,0x80,0xa0,0x90,0x94,0xfe,0xa0,0xa0,0xa4,0xa4,0x28,0x28,0x30,0x62,0xa2,0x1e,0x0,
-+0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x13,0x12,0x12,0x1e,0xf2,0x42,0x3,0x2,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0x10,0xff,0x12,0x12,0x12,0x13,0x1e,0xf2,0x44,0x4,0x8,0x10,0x40,0x44,0x7e,0x40,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x0,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x50,0x30,0x18,0x14,0x10,0x10,0x10,
-+0x10,0x10,0x13,0x12,0x12,0xfe,0x13,0x12,0x12,0x12,0x1e,0xf2,0x42,0x3,0x6,0x0,0x8,0x3c,0xe0,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x10,0x90,0x52,0x2a,0x6,
-+0x10,0x10,0x10,0x13,0x12,0xfc,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x1,0x0,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0x10,0x30,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x1e,0xf2,0x44,0x4,0x8,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x80,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e,0x0,
-+0x10,0x11,0x11,0x11,0x11,0xfd,0x11,0x17,0x12,0x12,0x1e,0xf2,0x43,0x0,0x0,0x0,0x8,0xfc,0x8,0x48,0x28,0x28,0xa,0xfe,0x8,0x88,0x48,0x48,0xfc,0x8,0x50,0x20,
-+0x10,0x11,0x11,0x12,0x12,0xfc,0x17,0x11,0x12,0x14,0x17,0x1c,0xf0,0x40,0x0,0x1,0x20,0x20,0x20,0x24,0x7e,0xa4,0xa4,0x24,0x24,0xa4,0xa4,0x24,0x44,0x44,0x94,0x8,
-+0x10,0x17,0x10,0x10,0x10,0xfc,0x14,0x12,0x12,0x12,0x1c,0xf0,0x40,0x0,0xf,0x0,0x8,0xfc,0xa0,0xa0,0xa0,0xa4,0xa4,0xa4,0xa8,0xa8,0xa0,0xa0,0xa0,0xa4,0xfe,0x0,
-+0x10,0x17,0x10,0x10,0x11,0xfd,0x13,0x10,0x10,0x10,0x13,0x1c,0xf0,0x40,0xf,0x0,0x8,0xfc,0x80,0x80,0x10,0x8,0xfc,0x0,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x42,0x2,0x2,0x2,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x14,0x14,0x17,0xfc,0x10,0x13,0x10,0x10,0x13,0x1e,0xf2,0x42,0x2,0x1,0x40,0x40,0x44,0x44,0xfc,0x4,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,
-+0x20,0x20,0x2f,0x21,0x22,0xfa,0x24,0x2f,0x21,0x29,0x25,0x3a,0xe2,0x5,0x8,0x10,0x4,0xc,0x70,0x10,0x10,0x50,0x5c,0x50,0x50,0x50,0x50,0x50,0x7c,0x0,0x86,0x7c,
-+0x10,0x10,0x10,0x13,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x42,0x2,0x2,0x2,0x40,0x40,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x20,0x20,0x20,0x2f,0x20,0xf8,0x25,0x24,0x24,0x24,0x24,0x3c,0xe5,0x44,0x7,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0x14,0xa4,0xa4,0x44,0xa4,0x94,0x14,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x17,0x10,0xfc,0x11,0x13,0x11,0x10,0x1c,0xf1,0x46,0x0,0x3,0xc,0x80,0x40,0x44,0xfe,0x80,0x90,0x10,0xe0,0x28,0x48,0x90,0x10,0x20,0xd8,0x6,0x2,
-+0x10,0x13,0x12,0x12,0x13,0xfe,0x12,0x13,0x12,0x12,0x1e,0xf2,0x42,0x2,0x3,0x2,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x88,0x50,0x20,0x10,0x8e,0x4,0x0,
-+0x10,0x11,0x11,0x11,0x11,0xfd,0x11,0x10,0x13,0x10,0x10,0x1d,0xf0,0x40,0x7,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x20,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x27,0x24,0x24,0xfc,0x24,0x27,0x24,0x24,0x24,0x3c,0xe7,0x44,0x0,0x0,0x8,0x88,0xc8,0x88,0x8a,0xfe,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0x28,0x10,
-+0x10,0x11,0x11,0x11,0x11,0xfd,0x10,0x13,0x12,0x12,0x1e,0xf2,0x43,0x2,0x2,0x2,0x8,0xfc,0x8,0x8,0xf8,0x48,0x44,0xfe,0x44,0x44,0x44,0xb4,0x14,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x11,0x11,0xfc,0x13,0x12,0x12,0x12,0x1e,0xf2,0x42,0x0,0x3,0xc,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x24,0x24,0x24,0x44,0x44,0x98,0x4,0x2,
-+0x10,0x10,0x17,0x10,0x12,0xfd,0x10,0x10,0x17,0x11,0x10,0x1c,0xf0,0x40,0x0,0x0,0x8,0x3c,0xc0,0x44,0x24,0x28,0x10,0x14,0xfe,0x10,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x13,0x12,0x14,0xfd,0x10,0x10,0x17,0x10,0x1c,0xf0,0x41,0x1,0x2,0xc,0x80,0x40,0xfe,0x2,0x24,0xf0,0x0,0x4,0xfe,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x17,0x10,0x10,0xff,0x12,0x13,0x12,0x13,0x1e,0xf3,0x42,0x2,0xf,0x0,0x40,0x48,0xfc,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xa,0xfe,0x0,
-+0x10,0x10,0x10,0x17,0x11,0xfd,0x13,0x16,0x1a,0x13,0x1e,0xf2,0x43,0x2,0x0,0x0,0x80,0x80,0x84,0xfe,0x10,0x50,0xf8,0x4e,0x48,0xf8,0x48,0x48,0xf8,0x4a,0x42,0x3e,
-+0x10,0x13,0x12,0x13,0x12,0xff,0x11,0x11,0x13,0x14,0x10,0x1d,0xf1,0x42,0x4,0x1,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0xa4,0xa4,0x24,0x44,0x44,0x94,0x8,
-+0x10,0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x13,0x10,0x1d,0xf7,0x40,0x0,0x0,0x0,0x40,0x84,0xfe,0x24,0x24,0xfc,0x44,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x10,0x11,0xfe,0x14,0x13,0x10,0x10,0x1c,0xf0,0x45,0x5,0x9,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0xf8,0x10,0x20,0x80,0x40,0x44,0x12,0x12,0xf0,
-+0x20,0x27,0x24,0x24,0x24,0xff,0x24,0x24,0x24,0x27,0x3c,0xe4,0x44,0x8,0x9,0x10,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0xd4,0x88,
-+0x10,0x10,0x10,0x11,0x12,0xff,0x12,0x12,0x12,0x13,0x1e,0xf0,0x40,0x1,0x6,0x18,0x80,0x80,0xf8,0x10,0x24,0xfe,0x24,0x24,0x44,0xfc,0x44,0xa0,0xb0,0x2a,0x22,0x1e,
-+0x20,0x23,0x20,0x21,0x28,0xfb,0x20,0x27,0x24,0x2b,0x3a,0xe2,0x42,0x2,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x42,0xfc,0x48,0x48,0x48,0x58,0x40,0x40,
-+0x10,0x10,0x13,0x10,0x10,0xff,0x10,0x10,0x13,0x10,0x1e,0xf1,0x42,0xc,0x1,0x0,0x40,0x48,0xfc,0x48,0x4a,0xfe,0x48,0x48,0xf8,0x40,0x48,0x50,0x50,0x4e,0x44,0x80,
-+0x10,0x13,0x12,0x12,0x13,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf3,0x45,0x5,0x9,0x10,0x4,0xfe,0x4,0x4,0xfc,0x20,0xa8,0xa8,0xa8,0xf8,0x20,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x12,0x12,0x17,0x12,0xfe,0x12,0x12,0x13,0x10,0x1f,0xf0,0x41,0x2,0xc,0x0,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x10,0x17,0x10,0x10,0x17,0xfc,0x14,0x14,0x17,0x10,0x1c,0xf7,0x40,0x0,0xf,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0x12,0xff,0x12,0x10,0x17,0x10,0x1c,0xf0,0x41,0x1,0x2,0xc,0x4,0xfe,0x94,0x94,0x94,0xfc,0x44,0x20,0xfe,0x80,0xf8,0x88,0x8,0x8,0x28,0x10,
-+0x11,0x11,0x11,0x12,0x13,0xfe,0x16,0x1a,0x13,0x12,0x1f,0xf2,0x42,0x2,0x2,0x3,0x0,0x78,0x8,0x12,0xfe,0x0,0x88,0xfc,0x20,0x24,0xfe,0x20,0x20,0x50,0x8e,0x4,
-+0x10,0x17,0x10,0x13,0x12,0xfe,0x13,0x10,0x17,0x15,0x1c,0xf5,0x44,0x4,0x4,0x4,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xf4,0x44,0x44,0x54,0x8,
-+0x10,0x13,0x12,0x12,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x44,0x5,0xa,0x0,0x4,0xfe,0x20,0x44,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x20,0xa8,0x26,0x22,0x60,
-+0x13,0x12,0x13,0x12,0x13,0xfc,0x17,0x14,0x14,0x17,0x1c,0xf3,0x41,0x0,0x3,0xc,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xf8,0x10,0xe0,0x18,0x6,
-+0x20,0x27,0x24,0x25,0x24,0xff,0x24,0x25,0x24,0x25,0x3d,0xe5,0x49,0x9,0x11,0x1,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c,
-+0x24,0x22,0x28,0x24,0x21,0xfc,0x24,0x29,0x20,0x2f,0x38,0xe0,0x41,0x2,0xc,0x0,0x8,0xfc,0x48,0xc8,0x48,0x88,0xa8,0x10,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x20,0x27,0x24,0x27,0x24,0xfd,0x24,0x25,0x24,0x25,0x3e,0xe4,0x47,0x8,0x10,0x0,0x4,0xfe,0x4,0xfc,0x20,0x24,0xa8,0x24,0xa0,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x8,0x7f,0x8,0x7f,0x49,0x7f,0x40,0x4f,0x81,0x3f,0x5,0xf,0x18,0x2f,0x8,0xf,0x78,0x48,0x4c,0x80,0x7c,0x28,0x10,0xee,0x0,0xf8,0x0,0xf0,0x1c,0xf0,0x10,0xf0,
-+0x8,0x7f,0x8,0xff,0x22,0x3e,0x14,0x7f,0x2,0x1f,0x11,0x1f,0x12,0xff,0x1,0x1,0x10,0x10,0xfe,0x10,0x7c,0x28,0x10,0x6e,0x0,0xf0,0x10,0xf0,0x14,0xfe,0x0,0x0,
-+0x10,0xfe,0x11,0x7c,0x0,0xfe,0x82,0x7c,0x1,0x7c,0x44,0x44,0x7d,0x29,0xfe,0x0,0x20,0x20,0x20,0xbe,0x42,0x14,0x50,0x98,0x26,0x42,0x20,0x10,0x54,0x42,0x4a,0x38,
-+0x4,0x4,0xff,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x6,0x2,0x2,0x7f,0x2,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x40,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x3f,0x4,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x40,0x44,0xfe,0x40,0x40,0xf0,0x10,0x20,0x48,0xfc,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x4,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x0,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x50,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x3f,0x8,0x8,0xc,0x12,0x12,0x11,0x20,0x20,0x43,0xc,0x40,0x44,0xfe,0x40,0x40,0xf0,0x20,0x40,0xf0,0x10,0x20,0x20,0xc0,0xb0,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x6,0x2,0x3f,0x2,0x1a,0x4,0x6,0x5,0x8,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x40,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x3f,0x0,0x0,0x1f,0x10,0x20,0x3f,0x0,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x50,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x4,0x3f,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x40,0x44,0xfe,0x40,0x50,0xf8,0x10,0x10,0xf0,0x10,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x2,0x4,0x1f,0x0,0x3,0xc,0x3f,0x0,0x0,0x1,0xe,0x70,0x40,0x44,0xfe,0x40,0x0,0x20,0xc0,0x80,0x20,0x20,0xc0,0x40,0x80,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x5,0x1,0x3f,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x40,0x10,0xf8,0x0,0x4,0xfe,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0x0,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x0,0x3f,0x0,0x0,0xff,0x2,0x2,0x4,0x8,0x1f,0x0,0x40,0x44,0xfe,0x40,0x40,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0xf0,0x10,
-+0x4,0x4,0xff,0x4,0x1,0xff,0x1,0x1,0x1f,0x11,0x11,0x11,0x11,0x11,0x1,0x1,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x50,0x20,0x0,0x0,
-+0x4,0x4,0xff,0x5,0x1,0xff,0x1,0x1,0x3f,0x8,0x4,0x2,0x1,0x6,0x18,0xe0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x0,0xf0,0x20,0x40,0x80,0x0,0xc0,0x30,0xe,
-+0x4,0x4,0xff,0x4,0x4,0x3f,0x21,0x21,0x2f,0x21,0x21,0x22,0x42,0x44,0x88,0x10,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x4,0x1f,0x10,0x10,0x17,0x14,0x14,0x24,0x24,0x44,0x84,0x3,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x20,0xf0,0x20,0x20,0xa0,0x40,0x4,0x4,0xfc,
-+0x4,0x4,0xff,0x4,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x3f,0x0,0x40,0x44,0xfe,0x40,0xf8,0x0,0x20,0xf0,0x20,0x20,0xe0,0x20,0x0,0x8,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x26,0x38,0x20,0x0,0x40,0x44,0xfe,0x40,0x40,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x84,0x84,0x7c,0x0,
-+0x4,0x4,0xff,0x4,0x5,0x1,0x9,0x9,0x9,0x9,0x9,0x9,0x9,0x9,0xff,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x5,0x1,0x3f,0x21,0x21,0x22,0x22,0x24,0x28,0x20,0x20,0x20,0x40,0x44,0xfe,0x40,0x40,0x8,0xfc,0x8,0x8,0x88,0x48,0x68,0x28,0x8,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x0,0x1f,0x10,0x11,0x11,0x11,0x12,0x12,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0x10,0x90,0x90,0x90,0x80,0x84,0x84,0x7c,
-+0x4,0x4,0xff,0x4,0x8,0x8,0xb,0x8,0xff,0xa,0x9,0x8,0x8,0xa,0xc,0x8,0x40,0x44,0xfe,0x40,0x20,0xc0,0x0,0x4,0xfe,0x0,0x0,0x80,0x40,0x20,0x1c,0x8,
-+0x4,0x4,0xff,0x4,0x4,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x20,0x41,0x2,0x40,0x44,0xfe,0x40,0x40,0x20,0x20,0x20,0x20,0x50,0x50,0x50,0x88,0x88,0x4,0x2,
-+0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x33,0xc0,0x0,0x1f,0x0,0x0,0x0,0x0,0x1,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xe,0x84,0x20,0xf0,0x20,0x40,0x40,0x80,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x8,0xf,0x12,0x22,0x44,0x4,0x8,0x11,0x22,0x4,0x0,0x40,0x44,0xfe,0x40,0x0,0x8,0xfc,0x48,0x48,0x48,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x4,0x4,0xff,0x4,0xc,0x8,0xf,0x11,0x11,0x21,0x2,0x2,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x40,0x0,0xf8,0x10,0x20,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0xf8,0x80,0x80,0x80,0x88,0xfc,0x80,0x40,0x40,0x22,0x12,0xe,
-+0x4,0x4,0xff,0x4,0x0,0x7,0x4,0x8,0x30,0xf,0x4,0x2,0x1,0x2,0xc,0x70,0x40,0x44,0xfe,0x40,0x0,0xc0,0x48,0x7c,0x0,0xe0,0x40,0x80,0x0,0x80,0x60,0x1c,
-+0x4,0x4,0xff,0x4,0x6,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x40,0x4,0xfe,0x0,0x0,0x40,0x30,0x10,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x6,0x41,0x7f,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x2,0xc,0x8,0xf,0xf8,0x48,0x8,0x8,0x28,0x10,0x40,0x44,0xfe,0x40,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x24,0x22,0x21,0x21,0x20,0x20,0x24,0x28,0x30,0x1,0x6,0x40,0x44,0xfe,0x40,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x20,0x50,0x8c,0x4,0x0,
-+0x4,0x4,0xff,0x5,0x1,0xff,0x1,0x1,0x7f,0x3,0x5,0x9,0x31,0xc1,0x1,0x1,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x8,0xfc,0x80,0x40,0x30,0xe,0x4,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x8,0xff,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xf,0x8,0x40,0x44,0xfe,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0xe0,0x20,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x0,0x1,0x3,0x5,0x19,0x61,0x1,0x1,0xff,0x0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x80,0x0,0x0,0x60,0x18,0x4,0x0,0x4,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x11,0x26,0x40,0x40,0x44,0xfe,0x40,0x20,0x14,0xfe,0x80,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e,0x0,
-+0x4,0x4,0xff,0x4,0x2,0x2,0xff,0x4,0x4,0x7,0xa,0x9,0x10,0x21,0x46,0x18,0x40,0x44,0xfe,0x40,0x40,0x24,0xfe,0x0,0x0,0xf0,0x20,0x40,0x80,0x60,0x1c,0x8,
-+0x4,0x4,0xff,0x4,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0xff,0x4,0x0,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x0,0x40,0x44,0xfe,0x40,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x1,0x1f,0x11,0x11,0x1f,0x11,0x11,0xff,0x10,0x10,0x10,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x14,0xfe,0x10,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x20,0x27,0x24,0x24,0x24,0x27,0x24,0x20,0x20,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x48,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x1f,0x30,0x50,0x90,0x10,0x10,0x17,0x10,0x10,0x20,0x24,0xfe,0x20,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x17,0x30,0x51,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x44,0xfe,0x40,0x10,0x10,0x14,0xfe,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x5,0x2,0x4,0xa,0x31,0xc1,0x3f,0x0,0x0,0xc,0x3,0x0,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xe,0x4,0xf0,0x20,0x40,0x80,0x0,0xc0,0x40,
-+0x4,0x4,0xff,0x5,0x2,0xf,0x8,0xa,0x9,0x8,0xf,0x0,0xff,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x20,0xf0,0x20,0x20,0x60,0x8,0xfc,0x8,0xc8,0x8,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x6,0x38,0x20,0x20,0x3e,0x20,0x20,0x26,0x38,0x20,0x0,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x80,0x80,
-+0x4,0x4,0xff,0x4,0x6,0x38,0x22,0x22,0x22,0x22,0x22,0x3c,0x24,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x8,0xfc,0x88,0x88,0x88,0x88,0xc8,0xa8,0x90,0x80,0x80,0x80,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x41,0x81,0x1,0x3f,0x1,0x1,0x1,0x1,0x7f,0x0,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x4,0x10,0xf8,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x40,0x9f,0x4,0x5,0x3f,0x4,0x4,0x4,0x4,0x4,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0xe4,0x20,0x20,0xa0,0x20,0x20,0x24,0x14,0x8,
-+0x4,0x4,0xff,0x4,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x28,0x30,0x20,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0xf8,0x80,0x88,0xfc,0x40,0x40,0x22,0x12,0xe,
-+0x4,0x4,0xff,0x4,0x3f,0x4,0x4,0x8,0x10,0x60,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0x8,0x50,0x20,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0xff,0x4,0x0,0xff,0x4,0x4,0x3f,0x24,0x24,0x28,0x30,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0x4,0xfe,0x40,0x48,0xfc,0x48,0x48,0x38,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x1,0xff,0x1,0x3f,0x1,0x3f,0x21,0x3f,0x2,0xc,0x30,0xc0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x84,0x4c,0x30,0xe,
-+0x4,0x4,0xff,0x4,0x1,0x1,0x7f,0x1,0x3,0x3c,0x0,0x7f,0x4,0x4,0x8,0x70,0x40,0x44,0xfe,0x40,0x0,0xf8,0x20,0x44,0x84,0x7c,0x10,0xf8,0x80,0x82,0x82,0x7e,
-+0x4,0x4,0xff,0x4,0x20,0x20,0x3e,0x20,0x26,0x39,0x1,0xff,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x80,0x98,0xe0,0x80,0x84,0x7c,0x0,0xfe,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x4,0x24,0x27,0x24,0x24,0x24,0x24,0x27,0xf8,0x40,0x0,0x40,0x44,0xfe,0x40,0x0,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x4,0x4,0xff,0x4,0x1f,0x10,0x10,0x10,0x1f,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x3f,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x27,0x20,0x20,0x20,0x40,0x44,0xfe,0x40,0xf8,0x8,0xe8,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x20,0x27,0x24,0x24,0x27,0x20,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0xc8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x11,0x11,0x1f,0x21,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x40,0x44,0xfe,0x40,0x0,0x20,0xf0,0x0,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x7d,0x4,0x8,0x13,0x3c,0x4,0x24,0x19,0xc,0x32,0xc1,0x40,0x44,0xfe,0x40,0x1c,0xe0,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x0,0x6,0xfc,
-+0x4,0x4,0xff,0x4,0x1,0x3e,0x2,0xff,0x4,0x8,0x34,0xc4,0x4,0x4,0x8,0x10,0x40,0x44,0xfe,0x40,0xf0,0x0,0x4,0xfe,0x40,0x30,0x4e,0x44,0x40,0x40,0x40,0x40,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x1f,0x30,0x50,0x90,0x10,0x11,0x12,0x14,0x18,0x40,0x44,0xfe,0x40,0x50,0x48,0x40,0xfe,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x17,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x17,0x10,0x40,0x44,0xfe,0x40,0x8,0x3c,0xc0,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x9,0x10,0x64,0xb,0x18,0x28,0xc8,0x8,0x8,0x8,0x8,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x30,0xdf,0x1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xe,0xf4,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,
-+0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x30,0xcf,0x0,0x3f,0x2,0x4,0x8,0x1f,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0x4e,0xe4,0x0,0xf8,0x0,0x40,0x20,0xf0,0x10,
-+0x4,0x4,0xff,0x14,0x10,0x3f,0x20,0x5f,0x90,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xa8,0x10,
-+0x4,0x4,0xff,0x4,0x2,0x7,0x8,0x14,0x23,0x4,0xf,0x38,0xc8,0x8,0xf,0x8,0x40,0x44,0xfe,0x40,0x0,0xf0,0x20,0xc0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x1,0x7f,0x8,0x6,0x1,0x2,0xc,0x34,0xc4,0x4,0x8,0x10,0x40,0x44,0xfe,0x40,0x8,0xfc,0x20,0xc0,0x0,0xc0,0x70,0x4e,0x44,0x40,0x40,0x40,
-+0x4,0x4,0xff,0x4,0x1,0x7f,0x8,0x8,0x14,0x24,0x42,0x1,0x2,0x4,0x18,0x60,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x10,0x4c,0x44,0x80,0x0,0x80,0x60,0x1c,0x8,
-+0x4,0x4,0xff,0x4,0x1,0xff,0x2,0x4,0x8,0x1f,0x4,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x40,0x20,0xf0,0x90,0x80,0x80,0x84,0x84,0x7c,
-+0x4,0x4,0xff,0x4,0x20,0x18,0xb,0x40,0x20,0x28,0x10,0x20,0x60,0x20,0x2f,0x20,0x40,0x44,0xfe,0x40,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x40,0x7f,0x41,0x89,0xf,0x11,0x21,0x7f,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x40,0x7f,0x41,0x41,0xbd,0x5,0x9,0x9,0x11,0x61,0x5,0x2,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x14,0x20,0xc0,0x40,0x20,0x20,0x1c,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x1f,0x0,0xf,0x0,0x1f,0x0,0xff,0x8,0x4,0x4,0x0,0x0,0x40,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x4,0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x14,0x12,0x11,0x10,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf8,0x10,0x20,0x40,0x80,0x60,0x1c,0x8,
-+0x4,0x4,0xff,0x4,0x1f,0x10,0x10,0x1f,0x10,0x12,0x11,0x20,0x20,0x43,0x80,0x0,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0xf0,0x40,0x20,0x90,0x8e,0x4,0x0,0xc0,0x20,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0xc,0x2,0x18,0x4,0xff,0x1,0x2,0xc,0x30,0x40,0x44,0xfe,0x40,0x0,0xf8,0x8,0x90,0x80,0x80,0x84,0xfe,0x0,0x60,0x18,0x4,
-+0x4,0x4,0xff,0x4,0x0,0x7e,0x4,0x8,0xe,0x38,0xc9,0x9,0xa,0x8,0x28,0x10,0x40,0x44,0xfe,0x40,0x20,0x20,0x20,0xa0,0xa8,0xa4,0x24,0x22,0x22,0x20,0xa0,0x40,
-+0x4,0x4,0xff,0x4,0x10,0x10,0x23,0x7c,0x8,0x10,0x26,0x78,0x20,0xe,0x73,0x20,0x40,0x44,0xfe,0x40,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x10,0x10,0x22,0x7d,0x8,0x10,0x26,0x78,0x0,0xe,0x70,0x20,0x40,0x44,0xfe,0x40,0x8,0x8,0x8,0xfe,0x8,0x88,0x48,0x48,0x8,0x8,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x10,0x10,0x10,0xfd,0x12,0x10,0x10,0x10,0x1c,0xe1,0x42,0x4,0x40,0x44,0xfe,0x40,0x80,0x84,0xfe,0x4,0x48,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x4,0x4,0xff,0x5,0x1,0x3f,0x1,0x7f,0x40,0x9f,0x0,0x1,0x7f,0x1,0x5,0x2,0x40,0x44,0xfe,0x40,0x10,0xf8,0x0,0xfe,0x2,0xe4,0x80,0x8,0xfc,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x7c,0x44,0x47,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x0,0x40,0x44,0xfe,0x40,0x10,0x10,0x14,0xfe,0x10,0x90,0x50,0x50,0x10,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x4,0xf,0x8,0x8,0xf,0x1,0x3f,0x21,0x21,0x22,0x2c,0x20,0x20,0x40,0x44,0xfe,0x40,0xe0,0x20,0x20,0xe0,0x8,0xfc,0x8,0x8,0xc8,0x48,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x1,0x3f,0x1,0x7f,0x5,0x9,0x3f,0xc4,0x4,0x4,0x8,0x30,0x40,0x44,0xfe,0x40,0xf0,0x0,0x4,0xfe,0x40,0x30,0xce,0x44,0xf0,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x6,0x3c,0x4,0xff,0x4,0x5,0x6,0x1c,0x64,0x4,0x15,0x8,0x40,0x44,0xfe,0x40,0x60,0x50,0x44,0xfe,0x40,0x48,0x48,0x30,0x20,0x52,0x8a,0x6,
-+0x4,0x4,0xff,0x14,0x10,0x1f,0x20,0x5f,0x12,0x11,0xff,0x22,0x21,0x3f,0x0,0x0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x0,0xf0,0x10,0x14,0xfe,0x10,0x10,0xfc,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x14,0x15,0x36,0x54,0x94,0x14,0x14,0x10,0x11,0x12,0x40,0x44,0xfe,0x40,0x80,0x84,0xfe,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x17,0x30,0x52,0x91,0x11,0x11,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x80,0x40,0x48,0xfc,0x0,0x18,0x10,0x10,0x20,0x24,0xfe,0x0,
-+0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x3f,0xc1,0x1,0x3f,0x1,0x9,0x11,0x25,0x2,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xee,0x4,0x10,0xf8,0x0,0x20,0x18,0x8,0x0,
-+0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x3f,0xc0,0x2,0x11,0x9,0x9,0x0,0x7f,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xee,0x4,0x10,0x10,0x20,0x20,0x48,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x11,0x9,0x3f,0x0,0x1,0x1,0xff,0x1,0x5,0x2,0x40,0x44,0xfe,0x40,0xf8,0x10,0x10,0x20,0xf0,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x11,0x9,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x40,0x44,0xfe,0x40,0xf8,0x10,0x10,0x20,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x4,0x4,0xff,0x4,0x20,0x14,0xb,0x14,0x64,0xc,0x14,0x24,0xc5,0x5,0x2a,0x14,0x40,0x44,0xfe,0x40,0x50,0x48,0xfe,0x40,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x4,0x4,0xff,0x4,0x20,0x14,0x8,0x14,0x64,0xd,0x14,0x24,0xc4,0x4,0x29,0x12,0x40,0x44,0xfe,0x40,0x20,0x20,0xa4,0xa4,0xa8,0x20,0x50,0x50,0x90,0x88,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x1,0x3f,0x8,0x4,0x4,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x10,0xf8,0x20,0x40,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x1,0x7f,0x40,0x9f,0x0,0x7f,0x4,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0xf4,0x0,0xfc,0x80,0x80,0x80,0x84,0x84,0x7c,
-+0x4,0x4,0xff,0x4,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x12,0x11,0x10,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x20,0xc0,0x60,0x1e,0x4,
-+0x4,0x4,0xff,0x4,0x7f,0x42,0x8f,0x8,0xb,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x40,0x44,0xfe,0x40,0xfe,0x2,0xe4,0x20,0x20,0xa0,0x48,0xfc,0x8,0xc8,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x10,0x17,0x20,0x7e,0xa,0x12,0x23,0x7c,0x0,0xe,0x70,0x20,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,
-+0x4,0xff,0x5,0x3f,0x1,0x1f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x40,0xfe,0x40,0xf8,0x0,0xf0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x4,0x4,0xff,0x4,0x8,0x7f,0x8,0xf,0x8,0xf,0x8,0x8,0xff,0x4,0x8,0x30,0x40,0x44,0xfe,0x40,0x28,0xfc,0x20,0xe0,0x20,0xe0,0x20,0x24,0xfe,0x40,0x30,0x8,
-+0x4,0x4,0xff,0x4,0x8,0x8,0xfe,0x8,0x1c,0x1a,0x28,0x48,0x89,0x9,0xa,0x8,0x40,0x44,0xfe,0x40,0x1c,0xe0,0x80,0x84,0xfe,0x90,0x90,0x90,0x10,0x10,0x10,0x10,
-+0x4,0x4,0x7f,0x4,0x8,0xa,0x7f,0x8,0x1c,0x1a,0x29,0x48,0x88,0x8,0x9,0x8,0x40,0x44,0xfe,0x40,0x0,0x50,0x50,0x50,0x88,0xae,0x24,0x40,0x50,0x88,0xfc,0x4,
-+0x8,0x8,0xff,0x8,0xf,0x1,0x3f,0x21,0x3f,0x1,0x7f,0x1,0x3f,0x1,0xff,0x0,0x20,0x24,0xfe,0x20,0xe0,0x8,0xfc,0x8,0xf8,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x0,
-+0x4,0x4,0xff,0x5,0x1,0x7f,0x2,0x4,0xf,0x30,0xdf,0x1,0x9,0x11,0x25,0x2,0x40,0x44,0xfe,0x40,0x8,0xfc,0x80,0x40,0xf0,0xe,0xf4,0x0,0x20,0x18,0x8,0x0,
-+0x4,0xff,0x5,0x7f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x2,0xff,0x4,0x8,0x7,0x38,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x4,0xfe,0x40,0x80,0x80,0x78,
-+0x4,0x4,0xff,0x4,0x10,0x10,0xff,0x11,0x11,0x1d,0xf2,0x52,0x14,0x18,0x50,0x23,0x40,0x44,0xfe,0x40,0x90,0x88,0xfe,0x0,0xf8,0x88,0x90,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x4,0xff,0x4,0x8,0xf,0x8,0xa,0xff,0x8,0x2c,0x2b,0x49,0x88,0x28,0x11,0x40,0x44,0xfe,0x40,0x0,0x7c,0x4,0x44,0x44,0x28,0x28,0x10,0x28,0x48,0x86,0x4,
-+0x4,0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x10,0x10,0x7c,0x54,0x54,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x40,0x44,0xfe,0x40,0x20,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x4,0xff,0x4,0xd,0x31,0x21,0x21,0x3d,0x21,0x21,0x3f,0x2,0x4,0x18,0x60,0x40,0x44,0xfe,0x40,0x8,0x7c,0x8,0x8,0x78,0x8,0x8,0xf8,0x80,0x60,0x1c,0x8,
-+0x4,0xff,0x4,0x9,0x8,0x1f,0x10,0x30,0x5f,0x90,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0xfe,0x40,0x0,0x88,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x88,0xfc,0x0,
-+0x4,0x4,0xff,0x5,0x2,0x3f,0x21,0x3f,0x22,0x3f,0x5,0x9,0xff,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x3d,0x25,0x25,0x3d,0x25,0x25,0x3d,0x25,0x25,0x45,0x55,0x89,0x40,0x44,0xfe,0x40,0xf8,0x8,0x48,0x30,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x4,0xff,0x4,0xf,0x8,0x10,0x3f,0x51,0x11,0x1f,0x12,0x2,0x4,0x18,0x60,0x40,0x44,0xfe,0x40,0xe0,0x20,0x48,0xfc,0x8,0x8,0xf8,0x80,0xa0,0x94,0x84,0x7c,
-+0x4,0x4,0xff,0x4,0x8,0xf,0x10,0x26,0x78,0xa0,0x24,0x3e,0x20,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0x0,0xf0,0x20,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x1,0x7f,0x8,0x8,0x14,0x22,0x1,0xff,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x8,0xfc,0x20,0x20,0x50,0x88,0x0,0xfe,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x10,0x8,0xff,0x10,0x1e,0x13,0x12,0x22,0x22,0x42,0x8a,0x4,0x40,0x44,0xfe,0x40,0x20,0x20,0x50,0x50,0x8e,0x4,0x60,0x10,0x0,0xc0,0x30,0x8,
-+0x4,0x4,0xff,0x4,0x40,0x33,0x12,0x82,0x4b,0x12,0x22,0xe3,0x22,0x22,0x3f,0x20,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0,
-+0x4,0xff,0x4,0x41,0x7f,0x40,0x80,0x7f,0x4,0x4,0xf,0x18,0x28,0x48,0xf,0x8,0x40,0xfe,0x40,0x0,0xfe,0x2,0x4,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0xff,0x4,0x41,0x7f,0x40,0x8f,0x8,0x8,0xf,0x8,0xf,0x8,0x8,0xf,0x8,0x40,0xfe,0x40,0x0,0xfe,0x2,0xe4,0x20,0x20,0xe0,0x0,0xf0,0x10,0x10,0xf0,0x0,
-+0x4,0x4,0xff,0x4,0x41,0x7f,0x50,0x9e,0x12,0x22,0x52,0xc,0x4,0x8,0x30,0x40,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0xfc,0x88,0x88,0x88,0xa8,0x92,0x82,0x7e,0x0,
-+0x4,0x4,0xff,0x4,0x40,0x7f,0x42,0x84,0x1f,0x1,0x2,0x1f,0x9,0x9,0x31,0x3,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x24,0xc0,0x0,0x20,0xf0,0x20,0x18,0x8,0x0,
-+0x4,0x4,0xff,0x4,0x7c,0x9,0x11,0x11,0x15,0x39,0xd2,0x12,0x12,0x14,0x58,0x20,0x40,0x44,0xfe,0x40,0x1c,0xe0,0x50,0x50,0x50,0x50,0x50,0x48,0x48,0x54,0xf6,0x0,
-+0x4,0x4,0xff,0x4,0x1f,0x0,0x40,0x51,0x49,0x45,0x45,0x49,0x53,0x41,0x7f,0x40,0x40,0x44,0xfe,0x40,0xe0,0x20,0x44,0x94,0x24,0x44,0x44,0x34,0x14,0x4,0xfc,0x4,
-+0x4,0xff,0x4,0x8,0x7e,0x8,0x3e,0x8,0x7e,0x9,0x1,0xff,0x2,0x4,0x18,0x60,0x40,0xfe,0x40,0x8,0xfc,0x48,0x48,0x48,0xa8,0x10,0x4,0xfe,0x80,0x40,0x30,0xc,
-+0x4,0x4,0xff,0x4,0x8,0x7f,0x8,0x8,0x7f,0x0,0x8,0x7f,0x8,0xf,0x78,0x20,0x40,0x44,0xfe,0x40,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10,
-+0x4,0xff,0x4,0x8,0x3f,0x8,0xf,0x8,0xf,0x8,0xff,0x12,0x14,0x10,0x1f,0x0,0x40,0xfe,0x40,0x20,0xf8,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x80,0x40,0x10,0xf8,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x7e,0x8,0x18,0x1c,0x2a,0x28,0x48,0x88,0x8,0x8,0x40,0x44,0xfe,0x40,0x4,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x3f,0x24,0x3f,0x25,0x29,0x2a,0x44,0x5b,0x80,0x40,0x44,0xfe,0x50,0x48,0xfc,0x40,0xc8,0x48,0xd0,0x20,0x20,0x60,0xa2,0x12,0xe,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x2f,0x28,0x2a,0x2a,0x2a,0x2a,0x45,0x44,0x98,0x40,0x44,0xfe,0x50,0x28,0xfc,0x20,0xa0,0xa4,0xa4,0xa8,0xa8,0x90,0x32,0xca,0x86,
-+0x4,0x4,0xff,0x4,0x20,0x3e,0x20,0x2e,0x72,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x80,0x98,0xe0,0x84,0x7c,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x4,0xff,0x4,0xf,0x8,0xf,0x0,0xff,0x8,0xf,0x8,0xf,0x8,0x7f,0x0,0x0,0x44,0xfe,0x40,0xe0,0x20,0xe0,0x4,0xfe,0x20,0xe0,0x20,0xe0,0x28,0xfc,0x20,0x20,
-+0x4,0xff,0x5,0x1f,0x11,0x1f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x12,0xc,0x30,0x40,0xfe,0x40,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x90,0x60,0x1c,
-+0x4,0x4,0xff,0x4,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x2,0x29,0x29,0x48,0x7,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x8,0x24,0x24,0xe0,
-+0x4,0xff,0x4,0x3e,0x22,0x3e,0x0,0x1f,0x0,0xff,0x8,0xf,0x0,0x0,0x0,0x0,0x40,0xfe,0x40,0xf8,0x88,0xf8,0x0,0xf0,0x4,0xfe,0x0,0xf0,0x10,0x10,0xa0,0x40,
-+0x4,0x4,0xff,0x4,0xb,0xa,0x12,0x13,0x30,0x5f,0x90,0x10,0x11,0x12,0x14,0x10,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0xf8,0x40,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x4,0x4,0xff,0x14,0x20,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x7d,0x44,0x0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0xfe,0x0,
-+0x4,0xff,0x5,0x7f,0x0,0x1f,0x10,0x1f,0x40,0x7f,0x40,0x9f,0x1,0x1,0x5,0x2,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x11,0x9,0x7f,0x5,0x39,0x2,0xff,0x4,0xc,0x3,0x6,0x38,0x40,0x44,0xfe,0x40,0x10,0x20,0xfc,0x40,0x38,0x0,0xfe,0x40,0x40,0x80,0x60,0x18,
-+0x4,0x4,0xff,0x4,0x20,0x1b,0x4a,0x22,0xa,0x12,0x22,0x64,0x24,0x24,0x28,0x30,0x40,0x44,0xfe,0x40,0x1c,0xe0,0xc,0xf0,0xa4,0xa8,0x90,0x90,0x90,0xa8,0xce,0x84,
-+0x4,0xff,0x4,0x41,0x7f,0x40,0x9f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x0,0x40,0xfe,0x40,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x7e,0x42,0x42,0x7e,0x40,0x49,0x7c,0x40,0x44,0x7e,0x41,0x46,0x40,0x44,0xfe,0x40,0xfc,0x4,0x4,0xfc,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0xff,0x5,0x7f,0x1,0x1f,0x2,0xff,0x4,0xf,0x31,0xdf,0x5,0x9,0x31,0x1,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x4,0xfe,0x40,0xf0,0xe,0xf4,0x40,0x30,0x8,0x0,
-+0x4,0xff,0x5,0x3f,0x1,0xff,0x1,0x7,0x1c,0x67,0x0,0xf,0x8,0xf,0x8,0xf,0x40,0xfe,0x40,0xd0,0x24,0xfe,0x0,0xe8,0x8,0xf8,0x0,0xe0,0x20,0xe0,0x20,0xe0,
-+0x4,0xff,0x4,0x3f,0x20,0x2f,0x20,0x3f,0x29,0x2a,0x2c,0x20,0x5f,0x44,0x82,0x0,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x4,0xfe,0x10,0xe0,0x1e,0x20,0xfc,0x20,0x20,0x60,
-+0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0xff,0x8,0x3f,0xc0,0x8,0xf,0x0,0x3f,0x0,0x40,0xfe,0x40,0xf0,0x10,0xf0,0x14,0xfe,0x20,0xf8,0x26,0x20,0xf8,0x8,0xc8,0x30,
-+0x4,0x4,0xff,0x4,0x1f,0x11,0x11,0x1f,0x11,0x12,0x14,0x1f,0x29,0x28,0x48,0x7,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0xf0,0x10,0x90,0x50,0xf0,0x8,0x84,0x24,0xe0,
-+0x4,0x4,0xff,0x4,0x8,0xf,0x10,0x11,0x30,0x5f,0x90,0x13,0x12,0x12,0x13,0x12,0x40,0x44,0xfe,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0xff,0x4,0x5,0xa,0x14,0xef,0x0,0x7e,0x2,0x12,0x6,0x1a,0x63,0xa,0x4,0x40,0xfe,0x40,0x40,0x20,0x50,0xee,0x4,0xf8,0x8,0x48,0x18,0x68,0x88,0x28,0x10,
-+0x4,0xff,0x5,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x40,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x10,0xf0,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x14,0x8,
-+0x4,0x4,0x7f,0x5,0x1f,0x92,0x52,0x13,0x34,0x50,0x9f,0x10,0x20,0x21,0x42,0xc,0x40,0x44,0xfe,0x40,0xfc,0x0,0x10,0xf8,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xe,0x4,
-+0x4,0xff,0x4,0x1,0xff,0x14,0x13,0x14,0x1f,0x1,0x7f,0x42,0x44,0x4f,0x40,0x40,0x40,0xfe,0x40,0x4,0xfe,0x50,0x90,0x50,0xf0,0x4,0xfe,0x4,0x24,0xf4,0x14,0x8,
-+0x4,0xff,0x4,0x1,0x3f,0x4,0x7f,0x42,0x81,0x3f,0x4,0x7,0x8,0x8,0x10,0x60,0x40,0xfe,0x40,0x10,0xf8,0x40,0xfe,0x2,0x14,0xf8,0x0,0xe0,0x20,0x20,0xa0,0x40,
-+0x4,0xff,0x14,0x8,0x7f,0x4,0x3f,0x4,0xff,0x4,0x3f,0xc,0x14,0x24,0xc4,0x4,0x40,0xfe,0x50,0x20,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x60,0x50,0x4e,0x44,0x40,
-+0x4,0x4,0xff,0x4,0x22,0x14,0xff,0x8,0x49,0x49,0x7f,0x9,0x8,0x8,0x10,0x21,0x40,0x44,0xfe,0x40,0x7c,0x44,0xc4,0x7c,0x44,0x44,0x7c,0x44,0x44,0x84,0x94,0x8,
-+0x4,0x4,0xff,0x4,0x20,0x1b,0xa,0x43,0x26,0xb,0x12,0x72,0x12,0x12,0x13,0x12,0x40,0x44,0xfe,0x80,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x88,0x50,0x20,0x90,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x7f,0x41,0x82,0xc,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x40,0x44,0xfe,0x40,0xfe,0x2,0x84,0x60,0xde,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x7d,0x4,0x28,0x11,0xfd,0x15,0x11,0x11,0x11,0x10,0x50,0x23,0x40,0x44,0xfe,0x40,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x44,0x58,0x84,0x2,
-+0x4,0x4,0xff,0x4,0x9,0xff,0x8,0x7f,0x49,0x49,0x7f,0x18,0x1c,0x2a,0xc8,0x9,0x40,0x44,0xfe,0x40,0x20,0xa4,0x7e,0x44,0xa8,0x20,0x20,0x20,0x50,0x48,0x8e,0x4,
-+0x4,0xff,0x4,0x3f,0x24,0x3f,0x40,0x7f,0x40,0x9f,0x4,0x7,0xa,0x9,0x1f,0x0,0x40,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfe,0x22,0xf4,0x0,0xc0,0x40,0x44,0xc4,0x3c,
-+0x4,0x4,0xff,0x5,0xa,0x37,0x24,0x27,0x24,0x2f,0x30,0x4,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x48,0xc8,0x48,0xc8,0x38,0x40,0x40,0x42,0x42,0x3e,
-+0x4,0x4,0xff,0x4,0x8,0x11,0x25,0x49,0x17,0x30,0x52,0x92,0x13,0x12,0x14,0x18,0x40,0x44,0xfe,0x40,0x48,0x7c,0x40,0x44,0xfe,0x40,0x48,0x7c,0x40,0xc0,0x3e,0x8,
-+0x4,0x4,0xff,0x4,0x8,0x14,0x22,0x41,0xbe,0x0,0x49,0x29,0x2a,0x7,0x78,0x20,0x40,0x44,0xfe,0x40,0x20,0x24,0x3e,0x44,0xa4,0x24,0x24,0x28,0x10,0x28,0x46,0x84,
-+0x4,0x4,0xff,0x4,0x11,0x11,0xfe,0x24,0x20,0x3c,0x25,0x27,0x24,0x44,0x54,0x89,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x88,0xfc,0xa0,0x24,0xfe,0x50,0x50,0x8e,0x4,
-+0x4,0x4,0xff,0x4,0x17,0x45,0x44,0x4f,0x58,0x6f,0x48,0x4f,0x48,0x4f,0x48,0x40,0x40,0x44,0xfe,0x40,0xfc,0x4,0xa4,0xf4,0x84,0xe4,0x84,0xe4,0x84,0xf4,0x14,0x8,
-+0x4,0xff,0x24,0x13,0x42,0x2b,0x12,0x63,0x22,0x23,0x1,0xff,0x5,0x19,0x61,0x1,0x40,0xfe,0x40,0xfc,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x0,0xfe,0x40,0x30,0xc,0x0,
-+0x4,0xff,0x4,0x1,0x7f,0x40,0x84,0x3e,0x0,0xff,0x14,0x14,0x14,0x25,0x44,0x83,0x40,0xfe,0x40,0x0,0xfe,0x42,0x74,0x40,0xf8,0x8,0x50,0x20,0x50,0x8a,0x2,0xfe,
-+0x4,0xff,0x4,0x1,0x7f,0x48,0x88,0x17,0x30,0x53,0x92,0x13,0x12,0x12,0x13,0x12,0x40,0xfe,0x40,0x0,0xfe,0x2,0x8,0xfc,0x40,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0xff,0x4,0x3e,0x12,0xa,0x13,0x22,0xc,0x31,0xc6,0x18,0x7,0x18,0x3,0x3c,0x40,0xfe,0x40,0xf8,0x48,0x28,0x48,0x88,0x60,0x98,0x6,0xc0,0x18,0x60,0x80,0x0,
-+0x4,0xff,0x5,0x7f,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x7f,0x12,0x51,0x50,0x8f,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x0,0x14,0x12,0xf2,
-+0x4,0xff,0x4,0x7f,0x4,0x3f,0x24,0x3f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x40,0xfe,0x40,0xfc,0x40,0xf8,0x48,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,
-+0x4,0xff,0x4,0x3f,0x28,0x25,0x3f,0x22,0x2a,0x2a,0x2a,0x2f,0x42,0x42,0x84,0x8,0x40,0xfe,0x40,0xfc,0xa0,0x20,0xbe,0x42,0x94,0x90,0x90,0xa8,0xa8,0x28,0x46,0x84,
-+0x4,0xff,0x4,0xff,0x10,0x31,0x4a,0x96,0x25,0x4d,0x15,0x25,0x44,0x84,0x28,0x10,0x40,0xfe,0x40,0x10,0x50,0x7c,0x90,0x10,0x7c,0x10,0x14,0xfe,0x80,0x40,0x3e,0xc,
-+0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0xff,0x21,0x3f,0x21,0x3f,0x21,0xff,0x1,0x1,0x40,0xfe,0x40,0xf0,0x10,0xf0,0x14,0xfe,0x0,0x7c,0x44,0x28,0x10,0xa8,0x4e,0x84,
-+0x4,0xff,0x4,0x3e,0x22,0x3e,0x0,0xff,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x2,0x40,0xfe,0x40,0x10,0x48,0x48,0x40,0xfe,0x40,0x48,0x48,0x30,0x20,0x52,0x8a,0x4,
-+0x4,0xff,0x4,0x3f,0x24,0x3f,0x0,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x40,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x10,0xf0,
-+0x4,0xff,0x4,0x3f,0x9,0x5,0xff,0x5,0x9,0x31,0xdf,0x11,0x1f,0x11,0x1f,0x10,0x40,0xfe,0x40,0xf8,0x20,0x44,0xfe,0x40,0x20,0x18,0xf6,0x10,0xf0,0x10,0xf0,0x10,
-+0x4,0xff,0x4,0x22,0x14,0x7f,0x49,0x7f,0x49,0x7f,0x8,0xff,0x8,0x8,0x9,0x8,0x40,0xfe,0x40,0xc,0x70,0x40,0x40,0x7e,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8,
-+0x4,0x4,0xff,0x4,0x3e,0x20,0x3d,0x20,0x3c,0x20,0xff,0x10,0x24,0x24,0x7d,0x2,0x40,0x44,0xfe,0x40,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x0,0x90,0x88,0x4,0x4,
-+0x4,0xff,0x4,0x0,0x7e,0x11,0x10,0x1c,0x25,0x54,0x8,0x9,0x10,0x20,0x43,0x0,0x20,0xfe,0x20,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x54,0xfe,0x0,
-+0x4,0xff,0x4,0x3f,0x24,0x3f,0x0,0x7f,0x40,0x9f,0x8,0x1e,0x32,0x4c,0x8,0x70,0x40,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfe,0x2,0xf4,0x80,0x90,0xa0,0xc4,0x84,0x7c,
-+0x4,0xff,0x4,0x12,0x1a,0x2a,0x4f,0x90,0x2f,0x60,0xa7,0x25,0x25,0x29,0x28,0x30,0x40,0xfe,0x40,0x20,0xa4,0xbe,0xc4,0x24,0xa4,0x28,0x28,0x10,0x90,0x28,0x46,0x84,
-+0x4,0xff,0x5,0x3f,0x8,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x9,0x28,0x28,0x47,0x40,0xfe,0x40,0xf8,0x20,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x88,0x24,0xe4,
-+0x4,0x4,0xff,0x5,0xff,0x10,0x14,0x25,0x7a,0x10,0x24,0x7c,0x4,0x8,0x10,0x60,0x40,0x40,0xfe,0x40,0xfe,0xa0,0x94,0xfe,0x90,0xfc,0x90,0xfc,0x90,0x94,0xfe,0x80,
-+0x4,0x4,0xff,0x4,0x49,0x2a,0xff,0x2a,0x49,0x10,0xff,0x22,0x64,0x18,0x26,0x41,0x40,0x44,0xfe,0x40,0x20,0x24,0x7e,0x84,0x44,0x48,0x48,0x30,0x20,0x50,0x8e,0x4,
-+0x4,0x4,0xff,0x4,0x3e,0x23,0x22,0x3e,0x21,0x20,0x3e,0x53,0x52,0x92,0x1e,0x10,0x40,0x44,0xfe,0x40,0x20,0xfc,0x88,0x50,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,
-+0x4,0xff,0x24,0x23,0x22,0xfa,0x4a,0x4b,0x4a,0x92,0x52,0x22,0x55,0x4c,0x88,0x10,0x40,0xfe,0x40,0xfc,0x0,0xf8,0x0,0xfe,0xa8,0x90,0xce,0x8,0xfe,0x88,0x48,0x18,
-+0x4,0xff,0x8,0x3f,0xa,0x9,0x48,0x7f,0x40,0x9f,0x4,0xf,0x1,0x1f,0x1,0x7f,0x40,0xfe,0x20,0xf8,0x20,0x20,0xa0,0xfe,0x2,0xf4,0x40,0xe0,0x0,0xf0,0x0,0xfc,
-+0x4,0xff,0x4,0x7f,0x1,0x7f,0x51,0x8d,0x11,0x7f,0x2,0x3f,0x24,0x24,0x24,0x20,0x40,0xfe,0x40,0xfc,0x0,0xfe,0x12,0x64,0x10,0xfc,0x0,0xf8,0x48,0x48,0x48,0x18,
-+0x4,0xff,0x4,0x3f,0x1,0xff,0x1,0x3f,0x25,0x3f,0x1,0x3f,0x1,0x7f,0x24,0x42,0x40,0xfe,0x40,0xf8,0x0,0xfe,0x0,0xf8,0x48,0xf8,0x0,0xf8,0x0,0xfc,0x88,0x44,
-+0x4,0xff,0x14,0x10,0x3e,0x44,0x88,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xf,0xf0,0x0,0x40,0xfe,0x40,0x44,0x28,0xfe,0x10,0x10,0x7c,0x10,0x10,0xfe,0x10,0x10,0x10,0x10,
-+0x4,0xff,0x5,0x7f,0x9,0x8,0x7f,0x40,0x4f,0x48,0x4f,0x1,0xff,0x5,0x19,0x61,0x40,0xfe,0x40,0xfc,0x20,0xa0,0xfc,0x4,0xe4,0x24,0xec,0x0,0xfe,0x40,0x30,0xc,
-+0x4,0xff,0x4,0x3e,0x8,0x7e,0x18,0x2d,0x4a,0x4,0x19,0xe9,0x5,0x9,0x15,0x2,0x40,0xfe,0x40,0x44,0x7e,0x94,0x24,0x44,0x98,0x40,0x30,0x2e,0x40,0x20,0x10,0x0,
-+0x4,0xff,0x4,0x3f,0x1,0x7f,0x51,0x8d,0x10,0x1f,0x30,0x5f,0x90,0x1f,0x10,0x1f,0x40,0xfe,0x40,0xf8,0x0,0xfe,0x12,0x64,0x90,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,
-+0x4,0xff,0x4,0x40,0x30,0x17,0x4,0x5,0xf4,0x15,0x16,0x15,0x14,0x19,0x28,0x47,0x40,0xfe,0x40,0x78,0x40,0xfc,0x44,0xf0,0x44,0x3c,0xa8,0x68,0xa8,0x24,0x40,0xfe,
-+0x4,0xff,0x4,0x12,0x13,0x24,0x4f,0x95,0x27,0x65,0xa7,0x21,0x2f,0x21,0x22,0x2c,0x40,0xfe,0x40,0x0,0xdc,0x80,0xc0,0x7e,0xc8,0x48,0xc8,0x8,0xe8,0x8,0x88,0x58,
-+0x4,0xff,0x24,0x3f,0x40,0xbf,0x29,0xff,0x25,0x3f,0x2,0xf,0x2,0x1f,0x5,0x39,0x40,0xfe,0x20,0xa4,0x7e,0x84,0x24,0xa8,0x10,0x2e,0x44,0xe0,0x20,0xf0,0x40,0x38,
-+0x4,0xff,0x14,0x3f,0x62,0x3e,0x21,0x3e,0x23,0x3e,0x1,0xff,0x5,0x19,0x61,0x1,0x40,0xfe,0x20,0xfc,0x88,0x50,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x40,0x30,0xc,0x0,
-+0x2,0x7f,0x2,0x3f,0x22,0x3f,0x2b,0x32,0x21,0x2f,0x21,0x2f,0x41,0x5f,0x81,0x1,0x20,0xfe,0xa0,0xfc,0x10,0xfe,0x54,0x92,0x20,0x3c,0x20,0x3c,0x20,0x3e,0x20,0x20,
-+0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x1,0x7f,0x4,0x14,0x24,0x48,0x10,0x4,0x4,0xff,0x4,0x4,0x8,0x10,0x20,0x0,0x8,0xfc,0x40,0x50,0x4c,0xc4,0x0,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x1,0xff,0x2,0x4,0x8,0x30,0xc9,0x9,0x9,0x9,0x9,0x11,0x11,0x21,0x0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x24,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x1,0x1,0xff,0x2,0x4,0x8,0x3f,0xd0,0x14,0x12,0x11,0x12,0x14,0x18,0x1f,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0xf8,0x26,0x40,0x80,0x0,0x80,0x60,0x20,0xf8,0x0,
-+0x1,0x1,0xff,0x2,0x4,0x8,0x3f,0xc8,0xf,0x8,0xf,0x8,0x8,0x7f,0x0,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0xf8,0x26,0xe0,0x20,0xe0,0x28,0xfc,0x20,0x20,0x20,
-+0x2,0x1,0x7f,0x4,0x14,0x24,0x48,0x11,0x1,0xff,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x8,0xfc,0x40,0x50,0x4c,0xc4,0x0,0x4,0xfe,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x7f,0x22,0x11,0x12,0x4,0x1f,0x2,0x4,0x1f,0x1,0xff,0x1,0x2,0xc,0x70,0x3c,0xc8,0x8,0x10,0x40,0x20,0xf0,0x0,0x20,0xf0,0x4,0xfe,0x0,0x80,0x60,0x1c,
-+0x4,0x24,0x24,0x3d,0x4,0x7c,0x24,0x25,0x44,0x1,0xff,0x1,0x2,0x4,0x18,0x60,0x20,0x20,0x28,0xfc,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,
-+0x10,0x10,0x10,0xfe,0x29,0x46,0xfd,0x1,0xff,0x21,0x3d,0x5,0x5,0x5,0x28,0x10,0x80,0x80,0x88,0xfc,0x8,0x8,0xe8,0x28,0x28,0xe8,0x28,0x10,0x2,0x2,0xfe,0x0,
-+0x2,0x2,0x2,0x2,0xff,0x2,0x2,0x2,0x2,0x4,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x84,0x7c,0x0,
-+0x20,0x20,0x20,0x20,0xfd,0x29,0x2a,0x28,0x28,0x28,0x28,0x28,0x28,0x48,0x47,0x80,0x80,0x80,0x88,0xfc,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x88,0x52,0x22,0xfe,0x0,
-+0x20,0x20,0x20,0x20,0xfd,0x2a,0x2c,0x28,0x28,0x28,0x29,0x29,0x2a,0x48,0x47,0x80,0x20,0x20,0x50,0x90,0x8,0x6,0x94,0x90,0x90,0x90,0x10,0x10,0x12,0x2,0xfe,0x0,
-+0x20,0x22,0x22,0x22,0xfe,0x2a,0x28,0x28,0x2b,0x2a,0x2a,0x2a,0x2f,0x48,0x47,0x80,0x90,0x90,0xa0,0xfc,0x80,0x90,0x88,0x80,0xf8,0xa8,0xa8,0xa8,0xfe,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x14,0x18,0x30,0xd0,0x10,0x10,0x10,0x50,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x12,0x11,0x12,0xfe,0x12,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x52,0x20,0x0,0x4,0x7e,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x17,0x14,0x18,0x31,0xd0,0x13,0x10,0x10,0x50,0x20,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x80,0xf8,0x8,0x10,0xd0,0x20,0x10,0x8,
-+0x10,0x10,0x10,0x10,0xfb,0x12,0x12,0x1b,0x32,0xd2,0x13,0x12,0x10,0x10,0x50,0x20,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x11,0xfd,0x13,0x15,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x51,0x21,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x11,0xff,0x10,0x11,0x15,0x19,0x37,0xd1,0x11,0x11,0x11,0x52,0x24,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x11,0x11,0x12,0xfa,0x14,0x1f,0x11,0x1a,0x32,0xd4,0x1f,0x10,0x10,0x50,0x21,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xa4,0xa4,0x44,0x44,0x94,0x8,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x10,0x17,0x18,0x30,0xd3,0x12,0x12,0x12,0x53,0x22,0x40,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x17,0x10,0xfc,0x17,0x10,0x15,0x1a,0x35,0xd9,0x11,0x11,0x12,0x52,0x24,0x8,0x3c,0xc0,0x40,0x84,0xfe,0xa0,0x10,0x8,0x16,0x14,0x10,0x10,0x10,0x10,0x10,
-+0x11,0x11,0x12,0x11,0xfd,0x10,0x10,0x14,0x19,0x31,0xd2,0x14,0x10,0x10,0x50,0x23,0x24,0x24,0x48,0x24,0x24,0x80,0x84,0xfe,0x4,0x84,0x48,0x28,0x10,0x20,0xc0,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x10,0x13,0x16,0x1a,0x32,0xd3,0x12,0x12,0x12,0x52,0x21,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0x44,0xfc,0x4,0x0,0x2,0x2,0xfe,
-+0x10,0x10,0x17,0x12,0xfd,0x11,0x10,0x14,0x1b,0x30,0xd1,0x10,0x10,0x10,0x50,0x20,0x8,0x7c,0x80,0x48,0x48,0x50,0x20,0x8,0xfe,0x8,0x8,0x88,0x88,0x8,0x28,0x10,
-+0x10,0x17,0x11,0x11,0xff,0x11,0x11,0x17,0x19,0x32,0xd3,0x15,0x15,0x19,0x51,0x21,0x8,0xfc,0x8,0x8,0xfe,0x8,0x8,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x13,0x10,0x10,0xfc,0x17,0x10,0x15,0x1a,0x34,0xd9,0x11,0x12,0x14,0x51,0x20,0x8,0xfc,0x40,0x40,0x84,0xfe,0xa0,0x10,0x4e,0x44,0x68,0x54,0x54,0x44,0x40,0x80,
-+0x20,0x2f,0x24,0x24,0xfc,0x27,0x24,0x24,0x2f,0x34,0xe4,0x24,0x2f,0x20,0xa0,0x40,0x0,0xfc,0xa4,0xa4,0xa4,0xa8,0xa4,0xa4,0xa2,0xa2,0xa2,0xb4,0xe8,0xa0,0xa0,0xa0,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x17,0x1a,0x32,0xd3,0x12,0x14,0x14,0x5b,0x20,0x4,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x10,0x17,0xf8,0x11,0x12,0x15,0x18,0x30,0xd7,0x10,0x12,0x12,0x55,0x20,0x40,0x40,0x48,0xfc,0xa0,0x10,0x8,0xf6,0x4,0x8,0xfc,0x40,0x50,0x4c,0x44,0x80,
-+0x10,0x10,0x17,0x10,0xfc,0x11,0x17,0x10,0x18,0x33,0xd2,0x12,0x13,0x10,0x50,0x20,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0x8,0xc8,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x20,0x27,0x24,0x24,0xfd,0x24,0x24,0x25,0x2c,0x34,0xe4,0x27,0x24,0x24,0xa7,0x44,0x4,0xfe,0x4,0x4,0xf4,0x44,0x44,0xf4,0x44,0x54,0x44,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x12,0x16,0x1b,0x30,0xd1,0x1f,0x10,0x10,0x50,0x20,0x40,0x84,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x11,0x11,0x11,0x13,0xfe,0x14,0x12,0x10,0x1b,0x30,0xd1,0x12,0x14,0x10,0x50,0x20,0x0,0x0,0x4,0xfe,0x84,0x94,0xa4,0x84,0xf4,0x84,0xc4,0xb4,0x94,0x84,0x14,0x8,
-+0x10,0x10,0x10,0x17,0xfc,0x11,0x10,0x17,0x18,0x30,0xd3,0x12,0x12,0x12,0x53,0x22,0x80,0x40,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x12,0x16,0x1a,0x33,0xd2,0x12,0x14,0x14,0x59,0x22,0x40,0x24,0xfe,0x4,0x4,0xfc,0x20,0x28,0x24,0xfe,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x12,0x16,0x1a,0x32,0xd2,0x12,0x14,0x14,0x58,0x20,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x84,0x84,0x94,0x88,
-+0x10,0x13,0x12,0x17,0xfa,0x12,0x13,0x10,0x1b,0x32,0xd2,0x12,0x12,0x10,0x51,0x26,0x8,0xfc,0x48,0xfe,0x48,0x48,0xf8,0x0,0xf8,0x8,0x48,0x48,0x48,0xb0,0x8,0x4,
-+0x10,0x12,0x12,0x17,0xfa,0x12,0x12,0x16,0x1b,0x30,0xd7,0x10,0x11,0x12,0x54,0x20,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x10,0x10,0x17,0x10,0xfc,0x11,0x12,0x14,0x1b,0x32,0xd3,0x12,0x13,0x10,0x5f,0x20,0x40,0x48,0xfc,0x40,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0,
-+0x10,0x17,0x14,0x15,0xfd,0x15,0x15,0x15,0x1c,0x37,0xd4,0x15,0x14,0x14,0x57,0x20,0x8,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x88,0x90,0x60,0x98,0xfe,0x0,
-+0x20,0x24,0x24,0x27,0xf4,0x28,0x37,0x22,0x32,0x2f,0xe2,0x22,0x23,0x22,0xa0,0x41,0x20,0x20,0x20,0xa4,0x3e,0x44,0xa8,0x20,0x20,0xa0,0x20,0x50,0x50,0x88,0x8e,0x4,
-+0x10,0x10,0x10,0x11,0xfe,0x15,0x18,0x13,0x1a,0x33,0xd2,0x13,0x12,0x12,0x52,0x22,0x40,0x40,0xa0,0x10,0x8,0xf6,0x0,0xc4,0x54,0xd4,0x54,0xd4,0x54,0x44,0x54,0xc8,
-+0x10,0x10,0x17,0x10,0xfd,0x10,0x1f,0x14,0x1b,0x32,0xd2,0x13,0x12,0x12,0x53,0x22,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x14,0x17,0x14,0xfc,0x13,0x10,0x13,0x1a,0x33,0xd2,0x13,0x12,0x10,0x57,0x20,0x80,0x40,0xfe,0x2,0x8,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x4,0xfe,0x0,
-+0x20,0x27,0x24,0x24,0xff,0x25,0x24,0x27,0x2c,0x34,0xe7,0x24,0x28,0x28,0xb1,0x42,0x4,0xfe,0x4,0x4,0xfc,0x8,0x90,0xfc,0x90,0x94,0xfe,0x90,0x90,0x90,0x10,0x10,
-+0x10,0x17,0x10,0x14,0xfb,0x11,0x12,0x13,0x1c,0x30,0xd7,0x10,0x10,0x11,0x52,0x24,0x20,0xa8,0xb0,0xa4,0x28,0x10,0x8,0xf6,0x44,0x40,0xfc,0x80,0xa0,0x10,0x8,0x4,
-+0x10,0x10,0x10,0x11,0xfd,0x10,0x17,0x14,0x19,0x36,0xd1,0x16,0x11,0x16,0x50,0x20,0x80,0x80,0xf8,0x8,0xf0,0x14,0xfe,0x88,0x50,0xa0,0x30,0x68,0xae,0x24,0xa0,0x40,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x13,0x16,0x1a,0x32,0xd2,0x14,0x1a,0x12,0x54,0x20,0x48,0x7c,0x40,0xfc,0x44,0x48,0xf8,0x40,0x44,0x3c,0x0,0xa0,0x94,0x82,0x8a,0x78,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x17,0x1a,0x33,0xd0,0x11,0x15,0x15,0x59,0x20,0x8,0xfc,0x48,0x48,0xf8,0x48,0xa8,0x18,0x8,0xf8,0x0,0x40,0x44,0x12,0x12,0xf0,
-+0x10,0x10,0x17,0x14,0xfc,0x15,0x15,0x15,0x1d,0x35,0xd5,0x15,0x15,0x16,0x58,0x23,0x8,0x7c,0xa0,0x3c,0x20,0xfe,0x22,0xf8,0x24,0x3c,0x0,0x78,0x48,0x4a,0x8a,0x6,
-+0x12,0x11,0x10,0x17,0xf8,0x10,0x17,0x10,0x1f,0x30,0xd7,0x11,0x12,0x14,0x58,0x20,0x8,0x10,0xa4,0xfe,0xa0,0xa4,0xfe,0xa4,0xfe,0xa4,0xfc,0xb0,0xa8,0xa6,0xa4,0xa0,
-+0x20,0x28,0x25,0x20,0xff,0x22,0x2a,0x2a,0x2a,0x3a,0xef,0x22,0x22,0x24,0xa8,0x51,0x4,0xbe,0x24,0x24,0xe4,0x3c,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0x44,0x44,0x94,0x8,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x17,0x1a,0x32,0xd3,0x15,0x15,0x15,0x59,0x21,0x4,0xfe,0x4,0x4,0xfc,0x94,0x90,0xfc,0x90,0x94,0xfe,0x40,0x28,0x10,0x8e,0x4,
-+0x10,0x17,0x10,0x10,0xff,0x14,0x14,0x17,0x18,0x34,0xd2,0x12,0x14,0x10,0x52,0x21,0x4,0xbe,0x84,0x84,0xbc,0x20,0x24,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x84,0x94,0x8,
-+0x10,0x13,0x11,0x10,0xfb,0x10,0x17,0x14,0x1b,0x34,0xd0,0x1f,0x11,0x12,0x54,0x20,0x0,0xf8,0x10,0xe0,0x18,0x0,0xbc,0xa4,0x18,0xa4,0x40,0xfe,0x50,0x48,0x46,0x40,
-+0x10,0x17,0x14,0x17,0xfc,0x17,0x14,0x11,0x1b,0x30,0xd0,0x17,0x11,0x12,0x54,0x20,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x84,0x10,0xe0,0x40,0x88,0xfc,0x50,0x4c,0x44,0xc0,
-+0x10,0x17,0x14,0x15,0xfd,0x16,0x13,0x14,0x18,0x37,0xd1,0x12,0x11,0x10,0x51,0x26,0x0,0xbc,0xa4,0xac,0xac,0x34,0x18,0xa4,0x80,0xfe,0x10,0x10,0x20,0xe0,0x98,0x4,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x13,0x16,0x1a,0x32,0xd4,0x14,0x15,0x15,0x5a,0x20,0x40,0x24,0xfe,0x88,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x0,0x54,0x52,0x52,0x0,
-+0x20,0x20,0x27,0x21,0xfa,0x2f,0x24,0x27,0x2c,0x37,0xe4,0x24,0x3f,0x20,0xa0,0x40,0x0,0x10,0x90,0x24,0x3e,0xc4,0xa4,0xa8,0xa8,0xa8,0x90,0xd0,0xa8,0xa8,0xc6,0x84,
-+0x10,0x17,0x10,0x14,0xfa,0x12,0x14,0x10,0x1b,0x32,0xd2,0x13,0x12,0x12,0x53,0x22,0x4,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x12,0x12,0x12,0xff,0x12,0x12,0x17,0x18,0x37,0xd5,0x15,0x15,0x17,0x50,0x21,0x0,0x4,0x7e,0x10,0xa4,0x7e,0x44,0xd4,0x54,0x54,0x54,0x54,0x54,0x20,0x4c,0x82,
-+0x11,0x13,0x14,0x17,0xfc,0x17,0x14,0x17,0x18,0x37,0xd0,0x13,0x12,0x13,0x52,0x23,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x12,0x11,0x17,0x10,0xfb,0x12,0x13,0x12,0x1a,0x33,0xd0,0x1f,0x12,0x11,0x50,0x20,0x8,0x10,0xfc,0xa8,0xfc,0xa8,0x18,0xe8,0x8,0xf8,0x14,0xfe,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x17,0x15,0xfa,0x14,0x13,0x12,0x1b,0x30,0xd7,0x14,0x17,0x10,0x50,0x20,0x80,0x40,0xfe,0x12,0x48,0x44,0xf8,0x48,0xf8,0x40,0xfc,0x44,0xfc,0x40,0x40,0x40,
-+0x22,0x22,0x22,0x2f,0xf2,0x2f,0x28,0x2f,0x38,0xef,0x22,0x2f,0x22,0x22,0xa2,0x42,0x10,0x10,0x28,0xa8,0x44,0x82,0xfc,0x90,0x90,0x94,0x7e,0x90,0x10,0x10,0x10,0x10,
-+0x10,0x17,0x14,0x14,0xff,0x10,0x17,0x10,0x1b,0x32,0xd3,0x11,0x13,0x15,0x59,0x21,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x44,0x28,0x10,0x8e,0x4,
-+0x20,0x20,0x27,0x24,0xf4,0x27,0x24,0x34,0x27,0xe6,0x26,0x2a,0x2a,0x33,0xa2,0x40,0x10,0x8,0xc8,0x7e,0x40,0xd4,0x14,0x3e,0xc8,0x48,0x7e,0x48,0x48,0xc8,0x48,0x8,
-+0x10,0x13,0x12,0x12,0xfb,0x10,0x17,0x14,0x1f,0x34,0xd7,0x10,0x1f,0x11,0x51,0x26,0x80,0xf8,0x88,0x48,0xf8,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x10,0x10,0x10,
-+0x10,0x17,0x10,0x12,0xf8,0x12,0x11,0x11,0x1a,0x37,0xda,0x13,0x12,0x12,0x53,0x22,0x0,0xbc,0x84,0x94,0x84,0x94,0x20,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x20,0x27,0x20,0x2f,0xfa,0x21,0x22,0x28,0x37,0xe4,0x2f,0x34,0x27,0x24,0xa7,0x44,0x8,0xfc,0x40,0xfe,0x4a,0x50,0x48,0x40,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfe,0x0,
-+0x12,0x13,0x15,0x13,0xfe,0x12,0x13,0x18,0x17,0x31,0xd2,0x1d,0x10,0x13,0x51,0x26,0x10,0xde,0x28,0xf8,0x88,0x48,0xf8,0x80,0xfe,0x50,0x98,0xe6,0x90,0xf8,0x50,0x4c,
-+0x20,0x27,0x20,0x23,0xf2,0x2f,0x29,0x27,0x21,0x33,0xe1,0x27,0x21,0x23,0xad,0x41,0x40,0xfc,0x40,0xf8,0x48,0xfe,0x12,0xfc,0x10,0xf8,0x10,0xfc,0x48,0x30,0x8e,0x4,
-+0x2,0x2,0x2,0x2,0x3,0xfe,0x2,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x44,0x24,0x1c,0x0,
-+0x0,0x0,0x0,0x0,0xff,0x0,0x8,0x4,0x14,0x54,0x50,0x50,0x91,0x11,0xf,0x0,0x80,0xa0,0x94,0xfe,0x80,0x40,0x40,0x40,0x20,0xa0,0x60,0x50,0x12,0xa,0xa,0x4,
-+0x0,0x0,0x0,0x0,0xff,0x22,0x22,0xff,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x0,0x80,0xa0,0x94,0xfe,0x80,0x40,0x40,0xc0,0x40,0x40,0x20,0x20,0x12,0x12,0xa,0x4,
-+0x0,0x22,0x14,0xb,0x14,0x62,0x8,0x9,0xfe,0x8,0x2c,0x2a,0x48,0xb,0x28,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x20,0xd0,0x90,0x90,0x90,0x90,0xf2,0x8a,0xa,0x4,
-+0x0,0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0xa0,0x98,0x8c,0x84,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x49,0x4a,0x4c,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x4a,0x2,0x4,0x8,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xc8,0xa8,0x90,0x80,0x80,0x80,
-+0x0,0x8,0x7d,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x8,0x7c,0x48,0x4b,0x48,0x48,0x48,0x48,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x8,0x7d,0x48,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x8,0x1c,0xe0,0x40,0x40,0x44,0x7e,0xc0,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0xa,0x7d,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x4,0xc,0x90,0xa0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x8,0x7c,0x48,0x48,0x49,0x4b,0x48,0x48,0x48,0x48,0x78,0x49,0x2,0x3,0x0,0x40,0x40,0x40,0x80,0x84,0x4,0xf8,0x8,0x10,0x20,0x40,0x80,0x8,0x4,0xfe,0x2,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x0,0xb,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x49,0x79,0x4a,0x2,0x4,0x8,0x8,0xfc,0x80,0x80,0x80,0x84,0xfe,0xa0,0xa0,0xa0,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x0,0x7b,0x48,0x48,0x4b,0x48,0x48,0x48,0x48,0x49,0x7a,0x4a,0x2,0x1,0x0,0x90,0x94,0xfe,0x90,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x8,0x7c,0x48,0x4f,0x48,0x48,0x48,0x48,0x48,0x49,0x79,0x4a,0x4,0x8,0x10,0x40,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0xa0,0xa0,0x10,0x90,0x48,0x48,0x6,0x4,
-+0x0,0xb,0x7e,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x9,0x12,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x0,0xb,0x7e,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x8,0x10,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x2,0xa,0x7e,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x3,0x2,0x0,0x20,0x20,0x20,0x20,0x24,0x28,0xb0,0x20,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e,0x0,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x48,0x0,0x1,0x2,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x40,0x98,0x6,0x2,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x11,0x1,0x7f,0x42,0x42,0x44,0x48,0x40,0x40,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x84,0x44,0x24,0x24,0x4,0x14,0x8,
-+0x0,0x0,0x8,0x7c,0x48,0x48,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x0,0x0,0x0,0x40,0x20,0x20,0x20,0xa0,0x80,0x88,0x84,0x82,0x82,0x82,0x8a,0x8a,0x88,0x78,0x0,
-+0x0,0xb,0x7c,0x48,0x48,0x4b,0x4a,0x4a,0x4a,0x4b,0x48,0x78,0x48,0x2,0x1,0x0,0x24,0xf4,0x24,0x24,0x24,0xe4,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x44,0x84,
-+0x0,0x3,0x7a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x2,0x3,0x0,0x8,0xfc,0x20,0x28,0xfc,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xb8,0x20,0x24,0xfe,0x0,
-+0x0,0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0xa0,0x90,0x88,0x88,0x80,0x80,0x80,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x48,0x0,0x0,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x7b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x5,0x9,0x10,0x8,0x1c,0xe0,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xa4,0x14,0xf2,0x0,
-+0x0,0x0,0x8,0x7c,0x49,0x4a,0x4c,0x48,0x48,0x4b,0x48,0x79,0x48,0x0,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x64,0x20,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x0,0x8,0x7c,0x49,0x49,0x4a,0x48,0x48,0x49,0x4a,0x4c,0x78,0x49,0x0,0x0,0x0,0x80,0x80,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0x8e,0x64,0x20,0x80,0x60,0x10,0x0,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x48,0x4b,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x48,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x0,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x2,0x12,0x7a,0x52,0x5f,0x52,0x52,0x52,0x54,0x54,0x55,0x72,0x55,0x8,0x10,0x0,0x0,0x0,0x8,0x7c,0x88,0x88,0xa8,0xa8,0xa8,0x90,0x10,0x28,0x28,0xc4,0x44,0x82,
-+0x0,0x11,0x79,0x51,0x52,0x54,0x5f,0x51,0x52,0x52,0x54,0x7f,0x54,0x0,0x1,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xa4,0xc4,0x44,0x84,0x28,0x10,
-+0x0,0x11,0x79,0x51,0x52,0x52,0x57,0x51,0x52,0x52,0x54,0x77,0x50,0x0,0xf,0x0,0x0,0x8,0x8,0x8,0x10,0x94,0xbc,0x8,0x10,0x10,0x20,0xbc,0x0,0x4,0xfe,0x0,
-+0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x2,0x3,0x0,0x8,0xfc,0x0,0x8,0xfc,0x20,0x20,0xf8,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x0,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x49,0x48,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x7,0x8,0x7c,0x48,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x2,0x3,0x2,0x4,0xfe,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x8,0x7f,0x48,0x48,0x49,0x49,0x4a,0x4c,0x49,0x78,0x48,0x0,0x1,0x2,0x80,0x80,0x84,0xfe,0x80,0xa0,0x20,0x24,0xac,0xb0,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x0,0x70,0x54,0x52,0x52,0x50,0x5e,0x52,0x52,0x52,0x72,0x53,0x6,0x9,0x0,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x50,0x48,0x8c,0x4,0x0,0x6,0xfc,
-+0x0,0x7,0x9,0x7d,0x49,0x4a,0x4a,0x4a,0x4d,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x44,0xe4,0x4,0x4,0xd4,0x54,0x54,0x54,0x54,0x94,0x94,0x14,0x4,0x4,0x14,0x8,
-+0x0,0x0,0x7b,0x48,0x4b,0x48,0x48,0x4b,0x4a,0x4a,0x7b,0x48,0x0,0x1,0x2,0xc,0x40,0x48,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0x44,0xac,0x10,0x8,0x6,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x4b,0x48,0x4f,0x49,0x79,0x49,0x2,0x4,0x18,0x80,0x88,0xfc,0x80,0x48,0x50,0x62,0x92,0xe,0xf8,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x2,0x2,0x7a,0x4b,0x4a,0x4a,0x4a,0x4b,0x48,0x48,0x4f,0x78,0x48,0x0,0x0,0x0,0x20,0x20,0x24,0xa8,0x30,0x24,0xa4,0x1c,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x8,0x7c,0x48,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x3,0xc,0x0,0x90,0x90,0x90,0x90,0x92,0x94,0xf8,0x90,0x90,0x90,0x90,0xb0,0xd2,0x12,0xe,0x0,
-+0x0,0x0,0x7a,0x49,0x49,0x49,0x48,0x4f,0x49,0x49,0x49,0x79,0x4a,0x2,0x4,0x8,0x40,0x40,0x48,0x4c,0x50,0x50,0x44,0xfe,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x48,0x48,0x48,0x49,0x4a,0x78,0x48,0x0,0x1,0x6,0x20,0x20,0x24,0x24,0x24,0xfc,0x44,0x40,0xfc,0x84,0x44,0x28,0x10,0x60,0x80,0x0,
-+0x1,0x1,0x11,0x7a,0x52,0x57,0x5a,0x52,0x52,0x52,0x52,0x72,0x53,0x2,0x2,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xa8,0xa8,0xa6,0x24,0x20,0x20,0x20,
-+0x1,0x1,0x11,0x7a,0x52,0x56,0x5b,0x52,0x52,0x52,0x53,0x72,0x52,0x2,0x2,0x3,0x0,0x4,0xfe,0x44,0x44,0x44,0xfe,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x80,0x0,
-+0x0,0x0,0x7b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x8,0x0,0x8,0x3c,0xc0,0x4,0x18,0xe0,0xa0,0xa4,0xa8,0x90,0x90,0x90,0x88,0xae,0xc4,0x80,
-+0x0,0x0,0x8,0x7c,0x49,0x4a,0x4d,0x48,0x48,0x4f,0x48,0x78,0x49,0x2,0x7,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x0,0x4,0xfe,0x80,0x80,0x10,0x8,0xfc,0x4,
-+0x0,0x1,0x9,0x7d,0x49,0x49,0x4a,0x48,0x4f,0x48,0x48,0x78,0x49,0x2,0xc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x4c,0x40,0xfe,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,
-+0x0,0x0,0x78,0x4b,0x49,0x48,0x48,0x48,0x49,0x4e,0x48,0x78,0x48,0x1,0x2,0x4,0x80,0x40,0x24,0xfe,0x8,0x90,0x60,0x90,0xe,0x94,0x90,0x90,0x90,0x10,0x10,0x10,
-+0x2,0x9,0x7c,0x4b,0x48,0x48,0x48,0x4b,0x48,0x48,0x48,0x7f,0x48,0x0,0x0,0x0,0x8,0x10,0xa0,0xfc,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x8,0x7c,0x4a,0x49,0x48,0x4f,0x48,0x48,0x48,0x49,0x79,0x4a,0x4,0x8,0x0,0x40,0x40,0x44,0x48,0x50,0x44,0xfe,0x40,0xe0,0xd0,0x50,0x48,0x46,0x44,0x40,0x40,
-+0x0,0x0,0x7b,0x4a,0x4c,0x48,0x4b,0x48,0x48,0x4f,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x40,0xfe,0x2,0x4,0x38,0xc0,0x44,0x7e,0xc0,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x8,0x7c,0x49,0x49,0x4a,0x48,0x48,0x48,0x49,0x49,0x7a,0x44,0x8,0x0,0x0,0x20,0x20,0x20,0xfe,0x42,0x44,0x40,0xa0,0xa4,0x28,0x90,0x90,0x88,0xae,0xc4,0x80,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x0,0x0,0x8,0x7d,0x4b,0x48,0x49,0x49,0x49,0x4a,0x48,0x7b,0x48,0x0,0x0,0x0,0x20,0x40,0x88,0x4,0xfe,0x22,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x7b,0x48,0x4b,0x48,0x4f,0x48,0x49,0x49,0x49,0x7a,0x44,0x0,0x3,0xc,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x0,0x7b,0x48,0x48,0x48,0x4f,0x48,0x4a,0x4a,0x7a,0x45,0x9,0x2,0x4,0x0,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xa0,0xa8,0xa4,0xa4,0x24,0x20,0x20,0xa0,0x40,
-+0x0,0x0,0x7b,0x48,0x48,0x4b,0x4a,0x4c,0x4b,0x48,0x48,0x78,0x49,0x2,0x4,0x8,0x90,0x94,0xfe,0x90,0x90,0xfe,0x42,0x44,0xf8,0x48,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x0,0x3,0x78,0x48,0x4b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x7a,0x49,0x0,0x3,0xc,0x8,0xfc,0x40,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x40,0xc0,0x30,0xe,
-+0x0,0x3,0x8,0x7c,0x4b,0x49,0x49,0x49,0x4f,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x10,0xf8,0x80,0x90,0xf8,0x10,0x10,0x14,0xfe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x2,0x72,0x5f,0x52,0x52,0x52,0x52,0x53,0x5e,0x52,0x72,0x52,0x2,0xb,0x4,0x0,0xc,0x70,0xc0,0x40,0x44,0x7e,0xc8,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8,
-+0x0,0x2,0x9,0x7d,0x48,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x0,0x1,0x6,0x40,0x44,0x4c,0x50,0x48,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0xa8,0x90,0xc,0x4,
-+0x0,0x0,0x7b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x4a,0x78,0x40,0xf,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x44,0x7e,0xc0,0x44,0x44,0x3c,
-+0x1,0x8,0x7c,0x48,0x49,0x48,0x4f,0x48,0x49,0x4b,0x4d,0x79,0x49,0x1,0x0,0x0,0x8,0xd0,0x20,0x58,0x84,0x40,0xfe,0xa0,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x0,0x0,0x2,0x7a,0x4a,0x4a,0x4d,0x48,0x48,0x48,0x4b,0x78,0x48,0x0,0xf,0x0,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0xe2,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x7,0x74,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x55,0x74,0x55,0x6,0x0,0x0,0x80,0xc4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x24,0xb4,0x28,0x20,0x20,0x20,
-+0x0,0x8,0x7f,0x48,0x4b,0x48,0x4f,0x48,0x49,0x4b,0x4c,0x78,0x47,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0xfc,0x40,0xfe,0xa0,0x50,0xf8,0x46,0x40,0xfc,0x40,0x40,0x40,
-+0x0,0x8,0x7f,0x48,0x4b,0x48,0x4f,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x0,0x1,0x6,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x1,0x9,0x7f,0x49,0x48,0x48,0x4f,0x48,0x48,0x49,0x49,0x7b,0x45,0x9,0x1,0x1,0x10,0x10,0xfc,0x10,0x40,0x44,0xfe,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x11,0x7f,0x51,0x51,0x50,0x57,0x54,0x54,0x54,0x57,0x74,0x54,0x4,0x7,0x4,0x10,0x14,0xfe,0x10,0x10,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x1,0x11,0x79,0x51,0x5f,0x51,0x53,0x53,0x55,0x55,0x55,0x79,0x51,0x1,0x1,0x1,0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0xb8,0x58,0x54,0x54,0x92,0x10,0x10,0x10,0x10,
-+0x1,0x11,0x79,0x57,0x52,0x52,0x55,0x55,0x5f,0x51,0x51,0x73,0x4d,0x1,0x1,0x1,0x10,0x10,0x14,0xfe,0x10,0x14,0x7e,0x10,0x90,0x20,0x7e,0x84,0x28,0x10,0xc,0x4,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x4a,0x2,0x4,0x8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x2,0x12,0x7b,0x54,0x5a,0x53,0x54,0x50,0x5f,0x50,0x54,0x74,0x57,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x84,0x94,0xfc,0x84,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x1,0x9,0x7d,0x4a,0x4a,0x4c,0x49,0x49,0x4a,0x48,0x49,0x7d,0x45,0x9,0x0,0x0,0x0,0x4,0xfe,0x94,0x94,0x94,0x24,0x24,0x54,0x8,0x40,0x24,0x22,0xa,0xf8,0x0,
-+0x0,0x8,0x7f,0x49,0x49,0x49,0x4a,0x4a,0x4c,0x48,0x4f,0x78,0x48,0x0,0x0,0x0,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x0,0xb,0x7c,0x49,0x48,0x4f,0x48,0x48,0x4f,0x49,0x7a,0x49,0x0,0x1,0x6,0x80,0x50,0xf8,0x0,0x10,0xa0,0xfc,0x80,0x84,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8,
-+0x0,0x8,0x7f,0x48,0x49,0x4b,0x48,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x80,0x44,0xfe,0x80,0x8,0xfc,0x4,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x8,0x7d,0x49,0x4a,0x48,0x49,0x4a,0x48,0x49,0x49,0x7a,0x48,0x0,0x3,0xc,0x40,0x40,0x48,0x50,0x40,0xa0,0x10,0xc,0x40,0x48,0x50,0x40,0xa0,0x90,0xe,0x4,
-+0x0,0x4,0x72,0x52,0x58,0x54,0x50,0x52,0x52,0x54,0x5c,0x74,0x55,0x5,0x6,0x4,0x10,0x10,0x10,0xfe,0x92,0x94,0x90,0xfc,0xa4,0xa4,0xa8,0x90,0x28,0x28,0x46,0x84,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4c,0x48,0x4b,0x48,0x49,0x49,0x79,0x49,0x2,0x4,0x8,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x3c,0x20,0x20,0xa0,0x60,0x1e,
-+0x2,0x1,0x17,0x7c,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x75,0x54,0x5,0x6,0x0,0x0,0x0,0xbc,0xa4,0xa8,0xa8,0xb0,0xa8,0xa4,0x24,0x24,0x24,0xb4,0xa8,0x20,0x20,
-+0x0,0x8,0x7f,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4b,0x4a,0x7a,0x44,0x4,0x9,0x2,0x40,0x24,0xfe,0x4,0x4,0xfc,0x20,0x28,0x24,0xfe,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x17,0x7c,0x54,0x57,0x55,0x55,0x57,0x55,0x75,0x4d,0x15,0x15,0x25,0x1,0x1,0x4,0xc4,0x54,0x54,0xd4,0x14,0x14,0xd4,0x54,0x54,0x54,0x44,0x44,0xc4,0x14,0x8,
-+0x0,0xf,0x4,0x75,0x52,0x55,0x58,0x50,0x5f,0x50,0x55,0x75,0x52,0x5,0x8,0x10,0x0,0xfc,0xa4,0x28,0x10,0x28,0xc4,0x0,0xfc,0x84,0x28,0x28,0x10,0x28,0xc6,0x84,
-+0x0,0x2,0x12,0x7f,0x52,0x52,0x52,0x52,0x53,0x50,0x5f,0x70,0x51,0x2,0xc,0x0,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x1,0x1,0xf,0x79,0x48,0x48,0x49,0x4a,0x4d,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x10,0x14,0xfe,0x50,0x40,0xa0,0x10,0xe,0xf4,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x0,0xf,0x70,0x50,0x57,0x55,0x54,0x55,0x54,0x54,0x77,0x54,0x4,0x4,0x4,0x40,0x44,0xfe,0x40,0x44,0xfe,0x14,0xa4,0xf4,0x44,0x44,0xfc,0x44,0x44,0x54,0x8,
-+0x0,0x17,0x7c,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x74,0x49,0x8,0x10,0x3,0x4,0xfe,0x0,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,
-+0x0,0x0,0x0,0x77,0x50,0x51,0x53,0x5c,0x53,0x50,0x50,0x77,0x50,0x0,0xf,0x0,0x40,0x40,0x44,0xfe,0xa0,0x50,0xf8,0x46,0xf8,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x2,0x2,0x7b,0x4a,0x4a,0x4a,0x4b,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x1,0x20,0x24,0xa8,0x30,0x22,0xa2,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x13,0x7a,0x52,0x53,0x52,0x52,0x53,0x50,0x57,0x74,0x54,0x5,0x4,0x4,0x4,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x44,0xfe,0x44,0x54,0xf4,0x4,0x14,0x8,
-+0x0,0x7,0x74,0x57,0x54,0x57,0x50,0x53,0x52,0x53,0x72,0x53,0x2,0x2,0x2,0x2,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x1,0x77,0x51,0x51,0x51,0x57,0x51,0x53,0x53,0x55,0x75,0x49,0x11,0x1,0x1,0x90,0xd0,0x10,0x52,0x34,0x38,0xd0,0x10,0x90,0x50,0x28,0x28,0x28,0x44,0x44,0x82,
-+0x0,0x1,0x7a,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x7b,0x49,0x0,0x0,0x1,0xe,0x40,0x48,0x5c,0x48,0x48,0x58,0x48,0x48,0xf8,0x40,0xf8,0x10,0xa0,0x40,0xb0,0xe,
-+0x0,0x0,0x7,0x78,0x49,0x48,0x4f,0x48,0x4b,0x4a,0x4a,0x7b,0x4a,0x2,0x3,0x2,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x1,0x3f,0x8,0x4,0x7f,0x41,0x9f,0x11,0x11,0x11,0x1,0x1f,0x10,0x10,0x1f,0x10,0x0,0xf8,0x20,0x40,0xfe,0x2,0xf4,0x10,0x10,0x30,0x0,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x9,0x7c,0x4b,0x48,0x49,0x48,0x4f,0x48,0x48,0x49,0x7a,0x44,0x8,0x13,0x0,0x8,0x8,0x90,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0xa,0x7d,0x48,0x4f,0x48,0x49,0x4a,0x48,0x4f,0x49,0x7a,0x49,0x0,0x1,0x6,0x40,0x48,0x50,0x40,0xfc,0x40,0x50,0x48,0x80,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8,
-+0x22,0x11,0x0,0x7f,0x41,0x91,0x1f,0x21,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x8,0x10,0x20,0xfe,0x2,0x24,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x3,0x7a,0x4a,0x4b,0x4a,0x4b,0x4a,0x4a,0x4a,0x7a,0x42,0x4,0x4,0xb,0x10,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x40,0x88,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x1,0x1,0x7a,0x4b,0x48,0x4f,0x49,0x49,0x4a,0x4c,0x79,0x46,0x1,0xe,0x1,0x0,0x0,0xf0,0x10,0xf0,0x24,0xfe,0x0,0x88,0x50,0xe0,0x50,0xd0,0x4e,0x44,0x40,0x80,
-+0x0,0x0,0xb,0x7c,0x4b,0x48,0x4f,0x48,0x49,0x4b,0x4c,0x7b,0x48,0x1,0x6,0x0,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0xa0,0x10,0xf8,0x46,0xf8,0xc0,0x70,0x48,0x40,
-+0x1,0x1,0x17,0x79,0x57,0x51,0x5f,0x52,0x53,0x52,0x52,0x74,0x44,0x9,0x10,0x0,0x10,0x10,0xd0,0x14,0xfe,0x24,0xe4,0x28,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0x46,0x84,
-+0x0,0x0,0x7,0x78,0x4b,0x48,0x4f,0x48,0x48,0x4b,0x48,0x7b,0x49,0x2,0x4,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x40,0x90,0xe0,0x48,0xf8,0x50,0x4c,0x44,0x40,
-+0x2,0x12,0x7f,0x52,0x52,0x5f,0x52,0x57,0x5c,0x54,0x57,0x74,0x54,0x7,0x4,0x0,0x0,0x3c,0xa4,0x24,0xa4,0xe8,0x24,0xa4,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0xa0,0x20,
-+0x0,0x0,0xb,0x7c,0x48,0x4f,0x48,0x49,0x4b,0x48,0x4b,0x7a,0x4a,0x2,0xf,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x10,0xf8,0x0,0xf8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x0,0xf,0x72,0x53,0x52,0x53,0x52,0x5f,0x50,0x5f,0x50,0x74,0x55,0x2,0x5,0x8,0x8,0xfc,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x10,0xbc,0x84,0xa4,0x28,0x10,0x28,0xc6,
-+0x1,0x1,0x17,0x79,0x51,0x53,0x52,0x56,0x5a,0x52,0x52,0x72,0x52,0x2,0x2,0x2,0x20,0x28,0xfc,0x20,0x4,0xfe,0x8,0x8,0xe8,0xa8,0xa8,0xe8,0x8,0x8,0x28,0x10,
-+0x0,0x0,0x7,0x78,0x4b,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x7a,0x4f,0x1,0x2,0x4,0x40,0x44,0xfe,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x0,0x0,0x17,0x78,0x57,0x54,0x58,0x53,0x50,0x50,0x57,0x71,0x52,0x4,0x1,0x0,0x40,0x48,0xfc,0x40,0xfe,0x42,0x94,0xf0,0x40,0x88,0xfc,0x50,0x4c,0x44,0x40,0x80,
-+0x0,0x7,0x10,0x7b,0x52,0x52,0x53,0x50,0x57,0x55,0x54,0x75,0x54,0x4,0x4,0x4,0x4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xf4,0x44,0x44,0x54,0x8,
-+0x0,0x7,0x0,0x7b,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x49,0x79,0x4a,0x4,0x8,0x3,0x4,0xfe,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x90,0x60,0x90,0xe,
-+0x0,0x3,0x7a,0x4a,0x4b,0x4a,0x4a,0x4b,0x4a,0x4b,0x78,0x45,0x5,0x9,0x0,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0xa8,0x18,0x8,0xf8,0x0,0x44,0x22,0xa,0xf8,0x0,
-+0x0,0x0,0x7b,0x4a,0x4b,0x4a,0x4b,0x48,0x4f,0x48,0x49,0x7a,0x45,0x8,0x0,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x84,0xfe,0xa0,0x50,0x48,0xfe,0x44,0x40,0x40,
-+0x0,0x1,0xa,0x7c,0x49,0x4e,0x48,0x4b,0x48,0x4b,0x48,0x7b,0x48,0x0,0x0,0x7,0x90,0x18,0xa4,0x40,0xb0,0x4e,0xf0,0x90,0x60,0xa0,0x78,0x88,0x90,0x60,0xc0,0x0,
-+0x0,0x10,0x7b,0x52,0x51,0x57,0x54,0x58,0x57,0x51,0x51,0x73,0x52,0x4,0x8,0x3,0x10,0x78,0x80,0x48,0x50,0xfe,0x82,0x84,0xfc,0x0,0xf0,0x10,0xa0,0x40,0xb0,0xc,
-+0x0,0x2,0x1,0x78,0x4f,0x48,0x49,0x4a,0x48,0x4b,0x4a,0x7a,0x4a,0x2,0xf,0x0,0x0,0x8,0x10,0x4,0xfe,0xa0,0x18,0x8,0x0,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x8,0x4,0x12,0x7f,0x51,0x55,0x55,0x55,0x55,0x55,0x57,0x71,0x51,0x2,0x4,0x8,0x24,0x5e,0x94,0xf4,0x14,0x5c,0x54,0x54,0x54,0x5c,0xd4,0x54,0x24,0x24,0x54,0x88,
-+0x0,0x8,0x75,0x51,0x53,0x59,0x55,0x51,0x57,0x55,0x55,0x75,0x59,0x9,0x8,0x0,0x80,0x88,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x48,0x28,0x8,0xfc,0x8,0x30,
-+0x1,0x8,0x74,0x54,0x51,0x51,0x5d,0x55,0x55,0x55,0x55,0x75,0x55,0xa,0x11,0x0,0xfc,0x8,0x50,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x2c,0x6,0xfc,0x0,
-+0x0,0x2,0x7a,0x4b,0x48,0x4f,0x48,0x48,0x4b,0x4a,0x4a,0x7b,0x4a,0x0,0x7,0x0,0x40,0x48,0x48,0xf8,0x40,0xfe,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x48,0xfc,0x4,
-+0x11,0x11,0x27,0x22,0x7d,0x17,0x21,0x79,0x7,0xf9,0x1,0x1f,0x10,0x10,0x1f,0x10,0x8,0x8,0xd0,0x10,0x3c,0xc8,0x10,0x3c,0xc0,0x3e,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x2,0x12,0x7f,0x52,0x53,0x51,0x57,0x55,0x55,0x57,0x51,0x5f,0x71,0x1,0x1,0x1,0x90,0x90,0xf0,0x94,0xbe,0x14,0xd4,0x54,0x54,0xd4,0x14,0xf4,0x24,0x24,0x54,0x88,
-+0x0,0x0,0xf,0x70,0x57,0x54,0x57,0x54,0x57,0x50,0x53,0x72,0x53,0x2,0x3,0x2,0xa0,0xa4,0xfe,0xa0,0xfc,0xa4,0xfc,0xa4,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x7,0x70,0x50,0x57,0x54,0x54,0x57,0x50,0x57,0x50,0x7f,0x51,0x2,0x5,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x0,0xfc,0x0,0xfe,0x50,0x4c,0x44,0x80,
-+0x0,0x0,0x77,0x54,0x55,0x55,0x55,0x55,0x57,0x55,0x55,0x7b,0x4d,0x11,0x23,0x0,0x28,0x24,0xfe,0x20,0x20,0xe4,0x24,0x24,0xe8,0x28,0x28,0x90,0x50,0x2a,0x4a,0x84,
-+0x7,0x14,0x7d,0x55,0x56,0x56,0x55,0x58,0x50,0x5f,0x51,0x72,0x51,0x0,0x1,0x6,0xbc,0xa4,0xac,0xac,0xb4,0xb4,0x28,0xc4,0x80,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8,
-+0x0,0x14,0x7c,0x57,0x50,0x57,0x54,0x54,0x57,0x54,0x54,0x77,0x54,0x8,0xa,0x11,0x40,0x44,0x44,0xfc,0x4,0xbe,0xa4,0xa4,0xbc,0xa4,0xa4,0xbc,0xa4,0xa4,0xd4,0x8,
-+0x4,0x2,0x72,0x5f,0x54,0x54,0x57,0x55,0x55,0x55,0x55,0x75,0x49,0xb,0x10,0x0,0x20,0x24,0x3e,0x40,0xa0,0x24,0x3e,0x50,0x14,0xfe,0x10,0x10,0x28,0x28,0x44,0x82,
-+0x0,0x10,0x7f,0x51,0x50,0x57,0x54,0x54,0x57,0x54,0x55,0x75,0x55,0x5,0x4,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x44,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x0,0x0,0x7,0x74,0x58,0x51,0x55,0x55,0x59,0x52,0x5c,0x72,0x52,0x2,0x3,0x0,0x80,0x40,0xfe,0x2,0x94,0x50,0x24,0x4a,0x8a,0xf8,0x40,0x48,0x48,0x48,0xf8,0x8,
-+0x1,0x1,0xf,0x71,0x57,0x50,0x57,0x54,0x54,0x57,0x50,0x74,0x52,0xf,0x0,0x0,0x4,0x44,0xe4,0x8,0xc8,0x10,0xc4,0x44,0x48,0xd2,0x2,0x44,0x84,0xe8,0x10,0x20,
-+0x0,0x7,0x74,0x56,0x55,0x57,0x54,0x56,0x56,0x56,0x7b,0x48,0x8,0x11,0x22,0x0,0x4,0xfe,0x8,0x28,0x4e,0xf2,0x84,0xa8,0xa8,0xa8,0xe8,0xa8,0x88,0x14,0x24,0x42,
-+0x0,0x8,0x7f,0x48,0x4a,0x49,0x4b,0x4e,0x4b,0x4a,0x4b,0x78,0x49,0x2,0x5,0x0,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x0,0x2,0x79,0x48,0x4f,0x49,0x48,0x4b,0x48,0x4b,0x48,0x7f,0x48,0x1,0x1,0x6,0xa0,0xa8,0xb0,0xa4,0xfe,0x10,0xa0,0xf8,0x40,0xf8,0x40,0xfe,0xa0,0x10,0x10,0xc,
-+0x1,0x9,0x7d,0x49,0x49,0x48,0x4f,0x4a,0x4b,0x4a,0x4b,0x7a,0x43,0xe,0x4,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0xfc,0x44,0xe8,0x68,0xd0,0x68,0x46,0x40,
-+0x0,0x8,0x7d,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x2,0x2,0x4,0xa0,0x90,0xfc,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0xa8,0xa4,0x4,
-+0x0,0x1,0x77,0x54,0x55,0x54,0x57,0x54,0x55,0x56,0x70,0x4f,0x0,0x1,0x2,0xc,0x80,0x4,0xfe,0x44,0x54,0x44,0xfc,0xc4,0x74,0x4c,0x40,0xfe,0xa0,0x10,0x8,0x6,
-+0x0,0x0,0x10,0x79,0x52,0x55,0x58,0x52,0x52,0x53,0x50,0x77,0x54,0x5,0x4,0x4,0x40,0x40,0xa0,0x10,0x48,0xf6,0xa0,0x48,0xa8,0xf8,0x44,0xfe,0x94,0xf4,0x4,0xc,
-+0x1,0x11,0x7a,0x57,0x5c,0x57,0x54,0x57,0x50,0x5f,0x50,0x73,0x52,0x3,0x2,0x3,0x0,0xf0,0x20,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x2,0x11,0x78,0x57,0x54,0x55,0x54,0x57,0x50,0x53,0x52,0x72,0x53,0x2,0x2,0x3,0x8,0x10,0xa4,0xfe,0x44,0x54,0x44,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x0,0x7,0x71,0x55,0x52,0x53,0x54,0x5b,0x52,0x52,0x53,0x70,0x52,0x1,0x1f,0x0,0x40,0x48,0x30,0x24,0x18,0xf0,0x8,0xf6,0x10,0x10,0xf0,0x0,0x10,0x24,0xfe,0x0,
-+0x1,0xf,0x71,0x50,0x57,0x50,0x53,0x52,0x53,0x50,0x57,0x74,0x55,0x5,0x5,0x4,0x10,0xfe,0x10,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x14,0xf4,0xc,
-+0x1,0x11,0x7f,0x51,0x53,0x55,0x59,0x51,0x57,0x50,0x5f,0x70,0x52,0x4,0x9,0x0,0x10,0x14,0xfe,0x10,0xb8,0x54,0x12,0x10,0xfc,0x0,0xfe,0x40,0x48,0x46,0x42,0x80,
-+0x0,0x10,0x78,0x57,0x54,0x57,0x54,0x54,0x57,0x54,0x55,0x7a,0x49,0x10,0x23,0x0,0x48,0x7c,0x40,0xfe,0x42,0xf8,0x40,0x38,0xfe,0x80,0x48,0xb0,0x70,0xae,0x24,0x60,
-+0x0,0x0,0x77,0x52,0x51,0x5f,0x50,0x53,0x52,0x53,0x52,0x73,0x54,0x5,0x9,0x1,0x80,0x40,0xfc,0x8,0x10,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x44,0x42,0x12,0xf0,
-+0x0,0x0,0x77,0x55,0x5b,0x51,0x53,0x51,0x5f,0x51,0x52,0x75,0x48,0x0,0x7,0x0,0x80,0x40,0xfe,0x12,0xfc,0x10,0xf8,0x10,0xfe,0x50,0x48,0xf6,0x40,0x48,0xfc,0x0,
-+0x0,0x7,0x74,0x54,0x54,0x57,0x54,0x54,0x57,0x56,0x76,0x4a,0xa,0x13,0x22,0x0,0x10,0xc8,0x7e,0x40,0x54,0xd4,0x3e,0x8,0xc8,0x48,0x7e,0x48,0x48,0xc8,0x48,0x8,
-+0x0,0x7,0x70,0x57,0x54,0x5b,0x50,0x53,0x50,0x5f,0x50,0x77,0x54,0x4,0x4,0x4,0x8,0xfc,0x40,0xfe,0x42,0x5c,0x40,0x58,0x4,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xc,
-+0x0,0x0,0x77,0x55,0x59,0x52,0x56,0x51,0x53,0x54,0x5b,0x70,0x51,0x2,0x5,0x0,0x80,0x40,0xfe,0x2,0xbc,0xa8,0xb0,0x10,0xf8,0x6,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x0,0x7,0x70,0x57,0x55,0x58,0x51,0x51,0x53,0x56,0x5b,0x72,0x53,0x2,0x3,0x2,0x8,0xfc,0x40,0xfe,0x52,0xe4,0x50,0x20,0xfc,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x0,0x17,0x78,0x53,0x52,0x57,0x55,0x5b,0x51,0x57,0x51,0x7f,0x51,0x3,0xd,0x1,0x48,0xfc,0x40,0xf8,0x8,0xfe,0x12,0xfc,0x10,0xfc,0x10,0xfe,0x48,0x30,0x9e,0x4,
-+0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x7f,0x40,0x4f,0x40,0x40,0x41,0x5f,0x41,0x41,0x41,0x41,0x43,0x40,0x7f,0x40,0x4,0xfe,0x4,0xe4,0x44,0x84,0x24,0xf4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x7f,0x42,0x42,0x42,0x7f,0x44,0x44,0x48,0x44,0x43,0x42,0x44,0x48,0x7f,0x40,0x4,0xfe,0x4,0x4,0x14,0xfc,0x44,0x44,0x44,0x44,0x84,0x84,0x64,0x14,0xfc,0x4,
-+0x0,0x7f,0x41,0x41,0x42,0x44,0x48,0x54,0x64,0x45,0x46,0x44,0x43,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x84,0x44,0x24,0x5c,0x84,0x4,0x4,0x24,0xe4,0x4,0xfc,0x4,
-+0x0,0x7f,0x48,0x48,0x4f,0x54,0x54,0x64,0x48,0x49,0x51,0x62,0x44,0x40,0x7f,0x40,0x4,0xfe,0x4,0x14,0xfc,0x94,0x94,0x94,0x94,0x14,0x14,0x54,0x24,0x4,0xfc,0x4,
-+0x0,0x7f,0x41,0x41,0x42,0x44,0x4a,0x51,0x6f,0x40,0x44,0x42,0x41,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x84,0x44,0x24,0x1c,0xe4,0x24,0x44,0x84,0x4,0x84,0xfc,0x4,
-+0x0,0x7f,0x42,0x42,0x7f,0x44,0x47,0x4c,0x57,0x64,0x47,0x44,0x44,0x44,0x7f,0x40,0x4,0xfe,0x4,0x14,0xfc,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xa4,0x44,0xfc,0x4,
-+0x0,0x7f,0x40,0x5f,0x42,0x4f,0x44,0x7f,0x40,0x4f,0x48,0x48,0x4f,0x40,0x7f,0x40,0x4,0xfe,0x4,0xf4,0x4,0xe4,0x24,0xfc,0x4,0xe4,0x24,0x24,0xe4,0x4,0xfc,0x4,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x4f,0x41,0x5f,0x40,0x44,0x42,0x41,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0xf4,0x4,0xe4,0x4,0xf4,0x24,0x44,0x84,0x4,0x84,0xfc,0x4,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x7f,0x44,0x42,0x4f,0x41,0x5f,0x41,0x41,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0xfc,0x44,0x84,0xe4,0x4,0xf4,0x4,0x4,0xfc,0x4,
-+0x0,0x7f,0x40,0x5f,0x52,0x5f,0x40,0x7f,0x48,0x4f,0x45,0x4c,0x56,0x44,0x7f,0x40,0x4,0xfe,0x4,0xf4,0x94,0xf4,0x4,0xfc,0x24,0xe4,0x44,0x84,0x74,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x7f,0x54,0x54,0x55,0x54,0x54,0x57,0x5c,0x54,0x10,0x10,0x10,0x10,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0xfe,0x22,0x22,0x2a,0x24,0x20,0x20,
-+0x10,0x10,0x11,0x7d,0x55,0x55,0x56,0x54,0x57,0x54,0x5c,0x54,0x10,0x10,0x11,0x16,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x88,0x4,0x2,
-+0x10,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x55,0x12,0x12,0x14,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x8,0x48,0x50,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x8,0xfe,0x12,0x32,0xc,0x12,0x61,0x1,0x1f,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x0,0xfc,0x44,0x28,0x10,0x28,0x46,0x10,0xf8,0x10,0x10,0x50,0x20,0x0,0x0,
-+0x10,0x10,0x13,0x7c,0x55,0x54,0x57,0x54,0x54,0x55,0x5d,0x52,0x14,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x88,0x88,0xfe,0x8,0x88,0x48,0x8,0x28,0x10,
-+0x10,0x10,0x11,0x7c,0x55,0x54,0x57,0x54,0x55,0x55,0x5d,0x55,0x11,0x10,0x10,0x13,0x20,0x28,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0x24,0x24,0x20,0x58,0x86,0x2,
-+0x10,0x11,0x11,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x55,0x11,0x11,0x11,0x11,0x4,0xfe,0x4,0xfc,0x24,0x24,0xfc,0x24,0x34,0x2c,0x24,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x7d,0x55,0x57,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x11,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x10,0x11,0x11,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x56,0x12,0x14,0x19,0x10,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x20,0x48,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x21,0x21,0x21,0xf9,0xa9,0xa8,0xab,0xaa,0xab,0xa8,0xab,0xb9,0x20,0x20,0x21,0x2e,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x94,0xfc,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe,
-+0x10,0x11,0x10,0x7c,0x57,0x54,0x55,0x55,0x55,0x55,0x5d,0x54,0x13,0x10,0x10,0x10,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20,
-+0x10,0x11,0x10,0x7c,0x57,0x54,0x54,0x55,0x54,0x55,0x5c,0x57,0x10,0x10,0x10,0x13,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x50,0x88,0x6,
-+0x10,0x10,0x13,0x7d,0x54,0x57,0x54,0x54,0x57,0x54,0x5d,0x55,0x11,0x11,0x11,0x11,0x8,0x1c,0xe0,0x24,0xa8,0xfe,0x70,0xa8,0x26,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x4,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x8,0x8,0x8,0x14,0x12,0x21,0x20,0x41,0x86,0x18,0x0,0x8,0x8,0xf8,0x0,0xf0,0x20,0x40,0x80,0xf0,0x10,0x20,0xc0,0x40,0x30,0xe,
-+0x10,0x10,0x11,0x10,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x54,0x7d,0x5,0x2,0x4,0x0,0x4,0xfe,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x8,0x8,0x8,0x8,
-+0x10,0x10,0x10,0x13,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x54,0x7c,0x4,0x1,0x6,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xfc,0x84,0x88,0x50,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x0,0x4,0xfe,0x0,0x4,0x44,0x28,0x28,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0xfe,0x0,
-+0x10,0x10,0x11,0x10,0x55,0x55,0x55,0x54,0x54,0x54,0x54,0x55,0x7e,0x4,0x0,0x0,0x0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x54,0x7d,0x5,0x2,0xc,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x68,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x0,0x0,0x3f,0x2,0x2,0xff,0x4,0x8,0x31,0xc1,0x11,0x11,0x11,0x11,0x1f,0x0,0x10,0x38,0xc0,0x0,0x4,0xfe,0x40,0x30,0xe,0x4,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x21,0x21,0x3f,0x21,0x2,0x4,0xa,0x31,0xc0,0xf,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x8,0xf8,0x8,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x20,0x40,0x80,0x0,
-+0x1,0x21,0x21,0x3f,0x0,0x1f,0x10,0x10,0x14,0x12,0x11,0x12,0x24,0x28,0x40,0x80,0x0,0x8,0x8,0xf8,0x0,0xf0,0x10,0x10,0x50,0x90,0x10,0x90,0x50,0x52,0xa,0x4,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0x55,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x7d,0x5,0x1,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x21,0x21,0x3f,0x0,0xff,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x8,0x8,0xf8,0x4,0xfe,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x10,0x50,0x20,
-+0x1,0x21,0x21,0x3f,0x2,0x2,0xff,0x4,0x4,0x8,0x1f,0x0,0x8,0x10,0x62,0x1,0x0,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x80,0x90,0xf8,0x80,0x90,0x8c,0x84,0x0,
-+0x10,0x10,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7c,0x4,0x0,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x10,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x9,0x9,0x11,0x11,0x3f,0x50,0x90,0x10,0x11,0x1,0x21,0x21,0x21,0x21,0x3f,0x0,0x0,0x40,0x24,0xfe,0x0,0x80,0x84,0x44,0x3c,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0x55,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x4,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x28,0x10,
-+0x1,0x21,0x21,0x3f,0x4,0x78,0x42,0x42,0x42,0x42,0x4e,0x72,0x4,0x4,0x18,0x60,0x0,0x8,0x8,0xf8,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xa4,0x98,0x80,0x80,0x80,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x0,0x4,0xfe,0x4,0x4,0xfc,0x20,0x20,0x24,0xfe,0x10,0x10,0x10,0x8,0x4a,0x86,0x2,
-+0x10,0x13,0x10,0x10,0x54,0x54,0x57,0x54,0x55,0x54,0x54,0x57,0x7c,0x4,0x0,0x0,0x0,0xfc,0x88,0x50,0x20,0xd8,0x6,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x1,0x4,0xfe,0x4,0x14,0xfc,0x4,0x4,0x74,0x54,0x54,0x54,0x74,0x54,0x4,0x14,0x8,
-+0x20,0x20,0x23,0x20,0xa8,0xaf,0xa8,0xa9,0xa9,0xab,0xad,0xa9,0xf9,0x9,0x2,0x4,0x8,0x3c,0xc0,0x40,0x44,0xfe,0xa0,0x10,0x18,0x16,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x10,0x10,0x55,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10,
-+0x10,0x10,0x10,0x11,0x56,0x55,0x54,0x54,0x57,0x54,0x54,0x55,0x7c,0x4,0x0,0x0,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xa0,0x40,
-+0x10,0x10,0x17,0x10,0x54,0x57,0x56,0x54,0x55,0x54,0x54,0x54,0x7c,0x4,0x1,0x2,0x90,0x94,0xfe,0x90,0x0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x88,0x88,0x28,0x10,
-+0x10,0x10,0x10,0x13,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x54,0x7c,0x5,0x2,0x0,0x20,0x20,0x24,0xfe,0x20,0x24,0xa8,0x20,0xfe,0x20,0x70,0xa8,0xa8,0x24,0x22,0x20,
-+0x1,0x21,0x21,0x3f,0x8,0x8,0x8,0x7e,0x9,0x1d,0x2a,0x28,0x48,0x89,0x9,0x8,0x0,0x8,0x8,0xf8,0x0,0x10,0x90,0x90,0x8,0x48,0x46,0x80,0x90,0x8,0xfc,0x4,
-+0x10,0x10,0x10,0x13,0x54,0x54,0x55,0x57,0x55,0x55,0x55,0x55,0x7d,0x4,0x0,0x0,0x20,0x20,0x24,0xfe,0x50,0xa8,0xfc,0x26,0x24,0xfc,0x24,0x24,0xfc,0x20,0x22,0x1e,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x21,0x2f,0x21,0x27,0x24,0x24,0x27,0x20,0x3f,0x20,0x0,0x8,0x8,0xf8,0x0,0xf8,0x8,0xe8,0x8,0xc8,0x48,0x48,0xc8,0x8,0xf8,0x8,
-+0x11,0x10,0x10,0x10,0x55,0x54,0x57,0x54,0x54,0x55,0x56,0x54,0x7c,0x4,0x0,0x0,0x8,0x90,0x60,0x90,0x48,0x40,0xfe,0x80,0xf8,0x88,0xf8,0x88,0xf8,0x88,0xa8,0x90,
-+0x10,0x10,0x13,0x10,0x55,0x55,0x55,0x54,0x55,0x54,0x54,0x57,0x7c,0x4,0x1,0x0,0x80,0x48,0xfc,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x10,0x60,0xfe,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x10,0x11,0x55,0x56,0x54,0x55,0x54,0x55,0x54,0x54,0x7c,0x4,0x3,0x0,0x40,0x20,0x20,0xfe,0x2,0x54,0x88,0x4,0x0,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x2,0x4,0x8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x10,0x54,0x54,0x54,0x7c,0x10,0x12,0x92,0x92,0xfe,0x2,
-+0x10,0x10,0x13,0x10,0x54,0x55,0x55,0x56,0x54,0x55,0x54,0x54,0x7c,0x5,0x2,0x0,0x88,0x88,0xfe,0x88,0x0,0xfe,0x2,0x24,0x20,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20,
-+0x10,0x13,0x10,0x10,0x55,0x55,0x55,0x55,0x54,0x54,0x57,0x54,0x7c,0x4,0x0,0x3,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x40,0x44,0xfe,0x88,0x90,0x60,0x98,0x4,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x20,0x3f,0x24,0x3f,0x24,0x29,0x46,0x45,0x98,0x0,0x0,0x8,0x8,0xf8,0x50,0xfe,0x40,0xc4,0x44,0xc8,0xa8,0x30,0x20,0x52,0x8a,0x6,
-+0x1,0x21,0x21,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x2,0x51,0x51,0x90,0xf,0x0,0x0,0x8,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x0,0x8,0x6,0x12,0xf0,0x0,
-+0x1,0x21,0x21,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x12,0x2,0x4,0x8,0x30,0x40,0x0,0x8,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x90,0xa8,0xba,0x82,0x7e,0x0,
-+0x1,0x21,0x21,0x3f,0x1,0x6,0x38,0xcf,0x0,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x26,0x0,0x8,0x8,0xf8,0x0,0xc0,0x30,0xee,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x18,
-+0x11,0x10,0x10,0x13,0x54,0x55,0x54,0x57,0x54,0x54,0x55,0x55,0x7e,0x4,0xb,0x0,0x8,0x90,0xa0,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x11,0x10,0x54,0x57,0x54,0x54,0x55,0x54,0x57,0x54,0x55,0x7c,0x4,0x0,0x3,0x20,0x24,0xa8,0x20,0xfe,0x20,0xa8,0x24,0x40,0xfe,0x88,0x8,0x90,0x60,0x98,0x4,
-+0x11,0x10,0x10,0x13,0x54,0x54,0x55,0x55,0x57,0x54,0x55,0x55,0x7e,0x3,0x0,0x0,0x4,0x88,0x0,0xfe,0x88,0x88,0x10,0x54,0xb8,0x88,0x10,0x14,0xa4,0xfc,0x84,0x0,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x2,0x4,0x0,0x4,0xfe,0x24,0x24,0xfc,0x0,0x4,0x7e,0x44,0x7c,0x44,0x7c,0x44,0x44,0x7c,0x44,
-+0x20,0x20,0x27,0x20,0xaf,0xa8,0xa9,0xaf,0xa9,0xaf,0xa8,0xa9,0xf9,0xa,0x4,0x0,0x8,0x3c,0xc0,0x44,0xfe,0x40,0x50,0x5c,0x50,0x5c,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x1,0x21,0x3f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x2f,0x28,0x2f,0x20,0x0,0x8,0xf8,0x0,0xfe,0x0,0xf0,0x10,0xf0,0x0,0xf8,0x8,0xe8,0x28,0xe8,0x18,
-+0x20,0x22,0x21,0xaa,0xa8,0xa9,0xab,0xad,0xa9,0xa9,0xa9,0xa9,0xf9,0x9,0x1,0x1,0x40,0x48,0x50,0x48,0xa0,0x10,0xfe,0x14,0x10,0xf0,0x10,0x10,0xf0,0x10,0x50,0x20,
-+0x10,0x13,0x10,0x54,0x57,0x54,0x55,0x55,0x55,0x55,0x55,0x54,0x7f,0x4,0x0,0x0,0x20,0xfe,0x88,0x50,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20,
-+0x20,0x22,0x21,0x20,0xaf,0xa9,0xaa,0xac,0xaa,0xab,0xac,0xaa,0xf9,0x9,0x2,0x4,0x40,0x48,0x50,0x44,0xfe,0x50,0x48,0x44,0x8,0xbc,0xa8,0xa8,0x7e,0x8,0x8,0x8,
-+0x20,0x27,0x20,0x22,0xa9,0xa9,0xaa,0xac,0xab,0xaa,0xaa,0xab,0xf9,0x8,0x7,0x0,0x20,0xa8,0xb0,0xa4,0x18,0xf0,0xe,0x4,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0,
-+0x1,0x1,0x45,0x7f,0x51,0x59,0x6b,0x5d,0x69,0x5d,0x6b,0x49,0x59,0x41,0x7f,0x40,0x0,0x0,0x14,0xfc,0x44,0x64,0xac,0x74,0xa4,0x74,0xac,0x24,0x64,0x4,0xfc,0x4,
-+0x1,0x21,0x3f,0x0,0x26,0x38,0x21,0x1f,0x20,0x3e,0x48,0xa,0xff,0x14,0x22,0x41,0x0,0x8,0xf8,0x0,0xfc,0x8,0x30,0x10,0xfe,0x14,0x50,0x5c,0x50,0xb0,0x90,0xe,
-+0x1,0x21,0x3f,0x8,0xff,0x8,0x3e,0x22,0x2a,0x2a,0x2a,0x2a,0xff,0x8,0x14,0x62,0x0,0x8,0xf8,0x0,0xfe,0x20,0x7c,0x44,0x54,0x54,0x54,0x54,0x54,0x28,0x26,0xc2,
-+0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x1,0x3,0x5,0x9,0x31,0x1,0x1,0x1,0x1,0x80,0x80,0x0,0x0,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x10,0x27,0x40,0x8,0x10,0x20,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x10,0x80,0x40,0x44,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x8,0x8,0x11,0x21,0x49,0x9,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x1f,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x8,0x8,0x10,0x20,0x49,0xa,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10,
-+0xa,0x9,0x10,0x20,0x4b,0x8,0x10,0x37,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0x8,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x8,0x8,0x10,0x21,0x4b,0x8,0x10,0x37,0x51,0x91,0x12,0x15,0x10,0x10,0x11,0x16,0x40,0x40,0x88,0x10,0xe0,0x40,0x88,0xfc,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,
-+0x8,0x8,0x10,0x27,0x48,0xa,0x11,0x37,0x50,0x90,0x11,0x12,0x14,0x18,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x40,0xe0,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x8,0x8,0x12,0x22,0x4a,0xa,0x17,0x30,0x50,0x92,0x12,0x12,0x13,0x14,0x14,0x18,0x40,0x40,0x48,0x7c,0x40,0x44,0xfe,0x40,0x40,0x48,0x7c,0x40,0x40,0xc0,0x66,0x1c,
-+0x8,0x8,0x12,0x21,0x49,0x8,0x17,0x34,0x54,0x95,0x15,0x15,0x15,0x14,0x14,0x14,0x40,0x48,0x4c,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x8,0x8,0x13,0x22,0x4b,0xa,0x13,0x30,0x57,0x90,0x10,0x13,0x10,0x10,0x1f,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x8,0x8,0x17,0x22,0x49,0x9,0x12,0x33,0x54,0x90,0x1f,0x10,0x12,0x12,0x13,0x10,0x8,0x7c,0x80,0x48,0x48,0x50,0x0,0xfc,0x40,0x44,0xfe,0x40,0x48,0x48,0xf8,0x8,
-+0x12,0x12,0x2a,0x4a,0x8f,0x10,0x2f,0x60,0xaf,0x22,0x2f,0x22,0x23,0x2e,0x20,0x21,0x10,0x10,0x90,0xa4,0xbe,0x44,0xa4,0x28,0xa8,0x10,0x90,0x28,0xa8,0x44,0x86,0x0,
-+0x12,0x14,0x2f,0x48,0x8f,0x18,0x2f,0x62,0xbf,0x24,0x27,0x24,0x28,0x2b,0x30,0x21,0x10,0x10,0x90,0xa4,0xbe,0xc4,0xa4,0x28,0xa8,0x10,0x90,0xa8,0xa8,0x44,0x86,0x0,
-+0xe,0x1a,0x2e,0x4a,0x8e,0x1a,0x2e,0x64,0xa7,0x2c,0x37,0x24,0x27,0x24,0x27,0x24,0xe0,0xa4,0xfe,0xa0,0xe0,0xa0,0xfe,0x84,0xe4,0x84,0xe4,0x84,0xe4,0x84,0xf4,0x8,
-+0x0,0x0,0x8,0x10,0x20,0x40,0x8,0x10,0x20,0x40,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x88,0x50,0x20,0x50,0x88,0x8,0x18,0x28,0x48,0x88,0x8,0x8,0x8,0x50,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x88,0x50,0x20,0x57,0x88,0x8,0x18,0x28,0x49,0x89,0x9,0xa,0xa,0x54,0x28,0x80,0x80,0x80,0x90,0xf8,0x90,0x90,0x90,0x90,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x4,0x8b,0x50,0x20,0x50,0x88,0xf,0x18,0x28,0x48,0x88,0x8,0x8,0x8,0x50,0x20,0x10,0xf8,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x4,0x88,0x50,0x21,0x51,0x89,0x9,0x19,0x29,0x49,0x89,0x9,0xa,0xa,0x54,0x28,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x8b,0x50,0x21,0x51,0x89,0x9,0x19,0x29,0x48,0x88,0xf,0x8,0x8,0x50,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10,
-+0x4,0x88,0x53,0x20,0x50,0x88,0x8,0x18,0x2b,0x48,0x88,0x8,0x8,0x8,0x57,0x20,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0xfe,0x0,
-+0x4,0x88,0x50,0x20,0x51,0x8a,0xb,0x18,0x28,0x48,0x88,0x8,0x9,0x9,0x52,0x24,0x40,0x40,0x40,0x90,0x8,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x4,0x88,0x51,0x21,0x51,0x89,0x9,0x19,0x29,0x49,0x89,0x9,0x8,0x8,0x50,0x20,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,
-+0x5,0x89,0x51,0x22,0x52,0x8d,0x9,0x19,0x29,0x49,0x89,0x9,0x9,0x9,0x50,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x28,0x10,0x2,0x2,0xfe,0x0,
-+0x4,0x88,0x50,0x27,0x50,0x88,0xb,0x1a,0x2a,0x4b,0x88,0x8,0x9,0x9,0x52,0x24,0xa0,0xa0,0xa8,0xfc,0xa8,0xa8,0xf8,0xa0,0xa4,0xfe,0xa4,0xa4,0x34,0x28,0x20,0x20,
-+0x4,0x88,0x50,0x20,0x57,0x88,0x9,0x19,0x2f,0x49,0x89,0x9,0x9,0xa,0x50,0x20,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0x28,0xe8,0x28,0x28,0x10,0x12,0x2a,0xc6,0x2,
-+0x4,0x88,0x50,0x21,0x52,0x8c,0x9,0x18,0x28,0x4f,0x88,0x8,0x9,0xa,0x53,0x20,0x40,0x40,0xa0,0x10,0xe,0x24,0xf0,0x0,0x4,0xfe,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x4,0x88,0x53,0x22,0x54,0x88,0x8,0x1f,0x28,0x49,0x88,0x8,0x8,0x8,0x50,0x20,0x40,0x20,0xfe,0x2,0x14,0x10,0x14,0xfe,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x88,0x57,0x20,0x51,0x92,0x12,0x33,0x56,0x9a,0x12,0x12,0x12,0x1a,0xa4,0x40,0x10,0x10,0x90,0x90,0x10,0x10,0xd8,0x54,0x54,0x52,0x92,0x10,0x10,0x10,0x50,0x20,
-+0x4,0x8a,0x52,0x22,0x53,0x8a,0xa,0x1a,0x2b,0x48,0x88,0xb,0x8,0x8,0x57,0x20,0x0,0x20,0x24,0x28,0xb0,0x20,0x22,0xa2,0x1e,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x4,0x89,0x51,0x21,0x51,0x88,0xb,0x1a,0x2a,0x4b,0x8a,0xa,0xb,0xa,0x52,0x22,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8,
-+0x4,0x88,0x57,0x21,0x51,0x91,0x1f,0x31,0x53,0x93,0x15,0x15,0x19,0x11,0xa1,0x41,0x4,0xc4,0x4,0x14,0x14,0x54,0xf4,0x14,0x14,0x94,0x54,0x14,0x4,0x4,0x14,0x8,
-+0x4,0x88,0x50,0x21,0x52,0x8d,0x8,0x18,0x2f,0x48,0x89,0x9,0xa,0xc,0x51,0x20,0x40,0x40,0xa0,0x10,0x8,0xf6,0x40,0x48,0xfc,0x40,0x50,0x48,0x44,0x44,0x40,0x80,
-+0x4,0x88,0x50,0x21,0x52,0x8c,0xb,0x18,0x28,0x4a,0x89,0x9,0x9,0x8,0x57,0x20,0x40,0x40,0xa0,0x10,0x8,0x6,0xf8,0x0,0x8,0x48,0x48,0x50,0x50,0x4,0xfe,0x0,
-+0x4,0x88,0x57,0x20,0x50,0x8b,0x8,0x1b,0x28,0x48,0x8b,0xa,0xa,0xa,0x53,0x22,0x80,0x44,0xfe,0x0,0x0,0xfc,0x0,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x88,0x51,0x22,0x57,0x91,0x12,0x35,0x51,0x91,0x13,0x14,0x10,0x10,0xa1,0x46,0x40,0x80,0x10,0x8,0xfc,0x10,0x8,0x4,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x4,0x88,0x57,0x20,0x50,0x89,0xf,0x18,0x2b,0x4a,0x8a,0xa,0xb,0xa,0x50,0x20,0x40,0x44,0xfe,0x40,0xa0,0x14,0xfe,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x4,0x8b,0x52,0x22,0x53,0x8a,0xa,0x1b,0x28,0x4f,0x88,0x8,0x9,0xa,0x54,0x20,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x4,0x8f,0x54,0x24,0x54,0x97,0x14,0x10,0x31,0x52,0x95,0x10,0x10,0x10,0xa1,0x46,0x4,0xfe,0xa4,0xa4,0xa4,0xfc,0x84,0x80,0xf8,0x8,0x8,0x90,0x60,0x40,0x80,0x0,
-+0x4,0x88,0x53,0x22,0x52,0x8b,0xa,0x1a,0x2b,0x4a,0x88,0x8,0x8,0x9,0x52,0x24,0x0,0x44,0x9e,0x4,0x4,0x9c,0x4,0x4,0xfc,0x94,0x90,0x90,0x90,0x12,0x12,0xe,
-+0x4,0x88,0x50,0x21,0x52,0x95,0x18,0x30,0x57,0x90,0x13,0x12,0x12,0x12,0xa3,0x42,0x40,0x40,0xa0,0x10,0x8,0xf6,0x40,0x48,0xfc,0x40,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x88,0x57,0x21,0x51,0x89,0xa,0x1c,0x28,0x4f,0x88,0x8,0x8,0x8,0x50,0x20,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x8,0x8f,0x51,0x21,0x51,0x97,0x14,0x34,0x54,0x97,0x11,0x11,0x11,0x11,0xaa,0x44,0x20,0x20,0x20,0x40,0x7e,0x82,0x14,0x10,0x54,0x54,0x52,0x52,0x92,0x10,0x50,0x20,
-+0x5,0x89,0x51,0x21,0x5f,0x91,0x11,0x31,0x57,0x94,0x14,0x14,0x17,0x14,0xa0,0x41,0x4,0x3e,0x24,0x24,0xe4,0x3c,0x24,0x24,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8,
-+0x4,0x88,0x57,0x20,0x51,0x92,0x14,0x3b,0x52,0x93,0x12,0x13,0x12,0x10,0xaf,0x40,0x40,0x48,0xfc,0xe0,0x50,0x48,0x46,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0xfe,0x0,
-+0x4,0x8b,0x52,0x22,0x53,0x92,0x12,0x33,0x50,0x9f,0x12,0x12,0x12,0x12,0xa3,0x42,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x40,0x48,0x30,0x90,0xe,0x4,
-+0x0,0x8f,0x54,0x27,0x54,0x97,0x10,0x33,0x52,0x93,0x12,0x13,0x12,0x12,0xa2,0x42,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x4,0x8b,0x52,0x22,0x53,0x8a,0xa,0x1a,0x2a,0x4a,0x8a,0xa,0xa,0xa,0x54,0x28,0x4,0xfe,0x24,0x24,0xfc,0x0,0xfc,0x84,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x4,0x8b,0x50,0x20,0x57,0x88,0x9,0xa,0x18,0x2f,0x48,0x88,0x9,0xa,0x54,0x20,0x0,0xf8,0x90,0x60,0xfc,0xc4,0x48,0xc0,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x4,0x8f,0x51,0x20,0x5f,0x88,0xb,0x1a,0x2b,0x4a,0x8b,0x8,0xf,0x8,0x50,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40,
-+0x4,0x8f,0x51,0x20,0x5f,0x88,0xb,0x1a,0x2b,0x4a,0x8b,0x8,0x8,0x9,0x52,0x2c,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0xa0,0xa0,0x22,0x22,0x1e,
-+0x0,0x8f,0x58,0x2a,0x69,0xaf,0x28,0x2a,0x6a,0xaa,0x2b,0x28,0x28,0x29,0xb2,0x44,0x4,0xfe,0x0,0x28,0x48,0xee,0x92,0xa4,0xa8,0xa8,0xe8,0x88,0x94,0x14,0x24,0x42,
-+0x4,0x88,0x57,0x20,0x52,0x91,0x13,0x36,0x5b,0x92,0x13,0x10,0x12,0x14,0xa9,0x40,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x2,0x8a,0x53,0x24,0x59,0x97,0x15,0x35,0x57,0x95,0x15,0x17,0x15,0x15,0xa8,0x40,0x4,0x3e,0x94,0x94,0x14,0xec,0x40,0x58,0xde,0x68,0x48,0xfe,0x48,0x48,0xc8,0x8,
-+0x0,0x8b,0x50,0x2f,0x50,0x97,0x15,0x34,0x57,0x90,0x17,0x10,0x1f,0x15,0xa4,0x48,0x38,0xc0,0x44,0xfe,0x40,0xfc,0x54,0xe4,0xfc,0x40,0xfc,0x40,0xfe,0x24,0x92,0x2,
-+0x1,0x8f,0x51,0x27,0x54,0x97,0x11,0x32,0x57,0x9a,0x13,0x12,0x13,0x12,0xa3,0x42,0x10,0xfe,0x10,0xbc,0xa4,0xbc,0x40,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x0,0x10,0x10,0x10,0x1f,0x22,0x22,0x22,0x54,0x8c,0x8,0x8,0x10,0x20,0xc0,0x0,0x10,0x10,0x10,0x10,0xfc,0x10,0x90,0x90,0x90,0x94,0xfe,0x10,0x10,0x10,0x10,0x10,
-+0x1,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x8,0xff,0x8,0x1c,0x2a,0x49,0x88,0x8,0x20,0xa0,0x3c,0x44,0xa8,0x10,0x20,0x60,0xbe,0x22,0x44,0xa4,0x18,0x10,0x20,0xc0,
-+0x20,0x20,0x20,0x21,0x3a,0x4c,0x4b,0x4a,0xab,0x12,0x13,0x22,0x22,0x42,0x83,0x2,0x40,0x40,0xa0,0x10,0x8e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x48,0x30,0x90,0xc,0x4,
-+0x4,0xf,0x32,0x7,0x59,0x7f,0x40,0x9f,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x8,0x30,0x0,0xf0,0x60,0x80,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x20,0x18,
-+0x2,0x2,0x7,0x4,0xa,0x11,0x6,0x18,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x80,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x1e,0x24,0x28,0x40,0x90,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x23,0x20,0x3c,0x44,0x89,0x23,0x20,0x20,0x20,0x21,0x25,0x2a,0x32,0x24,0x0,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x94,0x94,0x94,0x24,0x24,0x44,0x44,0xa8,0x10,
-+0x20,0x20,0x20,0x3f,0x44,0x8a,0x22,0x22,0x22,0x22,0x23,0x20,0x28,0x30,0x20,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,
-+0x21,0x21,0x21,0x3d,0x46,0x89,0x20,0x23,0x20,0x20,0x20,0x24,0x28,0x30,0x20,0x0,0x0,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0xa,0xa,0x6,
-+0x20,0x20,0x23,0x3c,0x44,0x88,0x20,0x20,0x2f,0x20,0x20,0x24,0x28,0x30,0x27,0x0,0x8,0x3c,0xc0,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,
-+0x20,0x20,0x23,0x3c,0x44,0x88,0x20,0x2f,0x20,0x20,0x20,0x24,0x29,0x31,0x22,0xc,0x8,0x3c,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x20,0x20,0x21,0x3d,0x46,0x88,0x23,0x20,0x20,0x20,0x20,0x24,0x28,0x30,0x21,0x6,0x80,0x84,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x20,0x20,0x20,0x3c,0x45,0x8a,0x27,0x20,0x20,0x23,0x22,0x26,0x2a,0x32,0x23,0x2,0x40,0x40,0x80,0x80,0x10,0x8,0xfc,0x4,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x20,0x20,0x3f,0x46,0x8a,0x22,0x22,0x22,0x22,0x22,0x26,0x2a,0x32,0x22,0x2,0x40,0x40,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x20,0x20,0x23,0x3c,0x44,0x8b,0x22,0x24,0x21,0x20,0x20,0x27,0x28,0x30,0x21,0x0,0x40,0x48,0xfc,0x40,0x40,0xfc,0x4,0x8,0xf0,0x20,0x44,0xfe,0x40,0x40,0x40,0x80,
-+0x20,0x20,0x20,0x3c,0x45,0x8a,0x25,0x20,0x20,0x27,0x20,0x21,0x2a,0x34,0x21,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x20,0x23,0x22,0x3e,0x47,0x8a,0x22,0x23,0x22,0x22,0x23,0x26,0x2a,0x32,0x23,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x20,0x24,0xa8,0x30,0x22,0xa2,0x1e,0x0,
-+0x20,0x20,0x27,0x3c,0x45,0x8a,0x24,0x2b,0x22,0x23,0x22,0x23,0x2a,0x30,0x27,0x0,0x40,0x48,0xfc,0xe0,0x50,0x48,0x46,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0xfc,0x0,
-+0x20,0x20,0x21,0x3d,0x45,0x89,0x21,0x21,0x21,0x20,0x23,0x20,0x28,0x30,0x20,0x7,0x20,0xa4,0x2e,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0xd8,0x6,
-+0x21,0x21,0x27,0x39,0x49,0x93,0x2,0x23,0x22,0x23,0x20,0x27,0x28,0x31,0x22,0xc,0x10,0x14,0xfe,0x10,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0xa0,0x10,0xe,0x4,
-+0x21,0x20,0x27,0x38,0x4b,0x90,0xf,0x20,0x21,0x21,0x22,0x2b,0x34,0x28,0x17,0x0,0x10,0xa0,0xfc,0x40,0xfc,0x40,0xfe,0x88,0xfc,0x48,0x48,0xf8,0x88,0x88,0xfe,0x0,
-+0x21,0x21,0x27,0x39,0x49,0x90,0x3,0x22,0x23,0x20,0x27,0x20,0x2b,0x30,0x2f,0x0,0x10,0x14,0xfe,0x10,0xf0,0x40,0xf8,0x48,0xf8,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x0,
-+0x22,0x22,0x22,0x3f,0x4a,0x92,0xf,0x20,0x27,0x24,0x27,0x24,0x2f,0x34,0x25,0x4,0x88,0x88,0x88,0xd0,0x9e,0xa4,0xf4,0x14,0xd4,0x54,0xc8,0x48,0xd4,0x54,0x64,0x82,
-+0x20,0x27,0x24,0x3c,0x4f,0x94,0x4,0x27,0x21,0x27,0x21,0x21,0x2f,0x31,0x22,0x4,0x4,0xbe,0xa4,0xa4,0xbc,0x20,0xa4,0xbc,0x10,0xfc,0x10,0x14,0xfe,0x10,0xc,0x4,
-+0x20,0x2f,0x20,0x3b,0x4a,0x97,0x5,0x2b,0x21,0x23,0x21,0x27,0x29,0x33,0x2d,0x1,0x40,0xfe,0x40,0xf8,0x48,0xfe,0x12,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4,
-+0x1,0x0,0x3f,0x20,0x24,0x24,0x24,0x24,0x24,0x27,0x24,0x24,0x44,0x44,0x83,0x0,0x0,0x88,0xfc,0x0,0x0,0x0,0x8,0x30,0xc0,0x0,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x1,0x0,0x3f,0x20,0x20,0x2f,0x20,0x20,0x3f,0x21,0x21,0x21,0x42,0x42,0x84,0x18,0x0,0x88,0xfc,0x0,0x10,0xf8,0x80,0x84,0xfe,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,
-+0x1,0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x24,0x22,0x21,0x40,0x41,0x86,0x18,0x0,0x88,0xfc,0x80,0x84,0xfe,0x80,0x80,0xf8,0x10,0x20,0x40,0x80,0x60,0x1e,0x4,
-+0x1,0x0,0x3f,0x24,0x24,0x27,0x28,0x30,0x27,0x24,0x24,0x27,0x44,0x44,0x84,0x3,0x0,0x88,0xfc,0x0,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0xc8,0x28,0x12,0x2,0xfe,
-+0x1,0x0,0x3f,0x20,0x22,0x24,0x24,0x2f,0x34,0x24,0x24,0x24,0x45,0x46,0x84,0x4,0x0,0x88,0xfc,0x0,0x20,0x20,0x24,0xfe,0x60,0x70,0xa8,0xa8,0x26,0x24,0x20,0x20,
-+0x1,0x0,0x3f,0x24,0x22,0x3f,0x20,0x20,0x2f,0x20,0x20,0x3f,0x40,0x40,0x80,0x0,0x0,0x88,0xfc,0x10,0x20,0xfc,0x80,0x90,0xf8,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x1,0x0,0x3f,0x22,0x3f,0x22,0x23,0x20,0x27,0x24,0x27,0x24,0x44,0x48,0x88,0x10,0x0,0x88,0xfc,0x20,0xfc,0x20,0xe0,0x0,0xf0,0x10,0xf0,0x80,0x40,0x30,0xe,0x4,
-+0x1,0x0,0x3f,0x20,0x2f,0x21,0x22,0x24,0x2f,0x34,0x27,0x24,0x47,0x44,0x80,0x0,0x0,0x88,0xfc,0x80,0xfc,0x40,0xa0,0x90,0xfe,0x94,0xf0,0x90,0xf0,0x92,0x82,0x7e,
-+0x1,0x0,0x3f,0x22,0x2c,0x28,0x28,0x2e,0x28,0x28,0x2f,0x29,0x42,0x44,0x88,0x30,0x0,0x88,0xfc,0x80,0xb8,0x88,0x88,0xb8,0x88,0x88,0xf8,0x48,0x20,0x10,0xe,0x4,
-+0x1,0x0,0x3f,0x21,0x2f,0x28,0x2f,0x28,0x2f,0x21,0x22,0x3f,0x40,0x40,0x80,0x0,0x0,0x88,0xfc,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x3f,0x20,0x2f,0x20,0x3f,0x21,0x2f,0x22,0x27,0x2c,0x34,0x24,0x41,0x42,0x8c,0x80,0xfe,0x80,0xf8,0x88,0xfe,0x8,0xf8,0x20,0xf0,0x1e,0x94,0x90,0x40,0x30,0x8,
-+0x1,0x0,0x3f,0x22,0x2f,0x22,0x2f,0x22,0x3f,0x24,0x27,0x24,0x44,0x4a,0x91,0x0,0x0,0x88,0xfc,0x20,0xa4,0x3e,0xa8,0x48,0xa8,0x28,0xa8,0x90,0x90,0xa8,0x44,0x82,
-+0x0,0x3f,0x24,0x3f,0x24,0x27,0x20,0x2f,0x28,0x2f,0x20,0x2f,0x20,0x4f,0x40,0xbf,0x80,0xfe,0x10,0xfc,0x10,0xf0,0x80,0xf8,0x88,0xf8,0x80,0xf8,0x80,0xf8,0x80,0xfe,
-+0x0,0x3f,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x2f,0x20,0x3f,0x24,0x4b,0x40,0xbf,0x80,0xfe,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x80,0xf8,0x80,0xfe,0x90,0xe8,0x80,0xfe,
-+0x0,0x3f,0x24,0x27,0x29,0x2a,0x3f,0x2a,0x2f,0x2a,0x2f,0x2a,0x2a,0x4a,0x51,0x80,0x80,0xfe,0x0,0xfc,0x24,0x24,0xac,0xc8,0xa8,0xbe,0xc8,0x88,0xfe,0x88,0x88,0x8,
-+0x0,0x3f,0x20,0x3f,0x20,0x2f,0x2a,0x2b,0x2a,0x2f,0x20,0x27,0x20,0x5f,0x42,0x8c,0x80,0xfe,0x80,0xfe,0x0,0xf8,0x28,0xe8,0x28,0xf8,0x0,0xf0,0x0,0xfc,0xa0,0x98,
-+0x0,0x3f,0x22,0x24,0x2d,0x36,0x24,0x24,0x27,0x24,0x27,0x24,0x27,0x44,0x44,0x84,0x80,0xfe,0x50,0xfc,0x90,0xfc,0x90,0x9c,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x10,0x10,0x10,0x10,0x58,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x17,0x10,0x58,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x84,0x4,0x28,0x10,
-+0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x91,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x13,0x10,0x58,0x54,0x50,0x97,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x1c,0xe0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x17,0x10,0x58,0x54,0x5f,0x90,0x10,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x0,0x8,0xfc,0x40,0x40,0x44,0xfe,0x40,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x10,0x17,0x58,0x54,0x50,0x93,0x12,0x11,0x10,0x10,0x10,0x11,0x12,0x1c,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4,
-+0x10,0x13,0x12,0x12,0x5a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x13,0x12,0x13,0x10,0x8,0xfc,0x0,0x4,0x84,0x48,0x48,0x30,0x10,0x28,0x48,0x84,0x4,0x0,0xfe,0x0,
-+0x20,0x20,0x20,0x20,0xb7,0xac,0xa4,0xa4,0x24,0x27,0x24,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x10,0x59,0x56,0x50,0x90,0x17,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x11,0x11,0x11,0x12,0x5b,0x54,0x53,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x12,0xa,0x6,0x2,
-+0x11,0x11,0x11,0x11,0x59,0x55,0x51,0x9f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0,0x8,0x10,0x20,0x40,0x80,0x4,0xfe,0x40,0x40,0x20,0x20,0x10,0x4e,0x84,0x0,
-+0x10,0x10,0x10,0x10,0x59,0x56,0x54,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0x90,0x8,0xe,0x4,0xf0,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x10,0x10,0x59,0x55,0x52,0x94,0x10,0x10,0x10,0x11,0x12,0x13,0x10,0x10,0x0,0x20,0xa0,0x90,0x10,0x8,0xe,0x44,0x40,0x80,0x80,0x10,0x8,0xfc,0x4,0x0,
-+0x10,0x10,0x10,0x17,0x58,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x40,0x4,0xfe,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x13,0x10,0x58,0x54,0x50,0x93,0x10,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0x5f,0x54,0x50,0x90,0x13,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x40,0x50,0x48,0x40,0xfe,0x40,0xc0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x40,
-+0x10,0x17,0x10,0x12,0x59,0x55,0x51,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x40,0x48,0x48,0x48,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x13,0x12,0x5a,0x56,0x53,0x92,0x12,0x12,0x13,0x12,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x13,0x5a,0x56,0x52,0x92,0x12,0x1f,0x10,0x10,0x10,0x11,0x12,0x14,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x11,0x11,0x11,0x11,0x5a,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x10,0x13,0x12,0x12,0x5b,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x4,0xfe,0x4,0x4,0xfc,0x0,0x80,0x84,0x88,0x90,0xa0,0xc0,0x82,0x82,0x7e,0x0,
-+0x10,0x10,0x10,0x17,0x58,0x54,0x57,0x94,0x14,0x17,0x10,0x10,0x11,0x11,0x12,0x14,0xa0,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0xa4,0xa0,0xfe,0xa2,0xa2,0x2a,0x24,0x20,0x20,
-+0x10,0x10,0x13,0x10,0x58,0x54,0x51,0x92,0x14,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x0,0x4,0xfe,0x84,0x84,0x84,0x14,0x8,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x11,0x10,0x58,0x54,0x51,0x92,0x15,0x10,0x10,0x17,0x10,0x10,0x10,0x10,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x50,0x4e,0xf4,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x18,0x55,0x52,0x57,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x80,0x80,0x10,0x8,0xfc,0x4,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x21,0x2f,0x30,0xa8,0xa0,0xbf,0xa2,0x22,0x24,0x25,0x28,0x2f,0x20,0x20,0x21,0x10,0x10,0x90,0x14,0x7e,0x14,0xd4,0x14,0x14,0x14,0x24,0xa4,0xa4,0x44,0x94,0x8,
-+0x20,0x27,0x24,0x24,0xb4,0xac,0xa7,0xa4,0x24,0x24,0x24,0x24,0x28,0x29,0x31,0x26,0x4,0xfe,0x40,0x50,0x48,0x40,0xfe,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0xe,0x4,
-+0x20,0x27,0x24,0x24,0xb5,0xad,0xa5,0xa5,0x25,0x25,0x25,0x21,0x22,0x22,0x24,0x28,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x4,0x84,0x44,0x54,0x8,
-+0x10,0x12,0x12,0x12,0x5b,0x54,0x53,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x11,0x10,0x40,0x48,0x48,0x48,0xf8,0x0,0xf8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0x5a,0x54,0x53,0x92,0x12,0x13,0x12,0x12,0x13,0x12,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10,
-+0x10,0x10,0x11,0x11,0x5a,0x54,0x50,0x91,0x12,0x14,0x1b,0x12,0x12,0x12,0x13,0x12,0x80,0x80,0xf8,0x10,0xa0,0x40,0xa0,0x10,0xe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x27,0x24,0x28,0xb7,0xa9,0xa1,0xa2,0x27,0x20,0x20,0x2f,0x20,0x20,0x20,0x20,0x0,0xfe,0x82,0x84,0xf8,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x17,0x10,0x58,0x57,0x54,0x98,0x13,0x10,0x10,0x17,0x10,0x10,0x11,0x10,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x4,0xf8,0x10,0x24,0xfe,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x17,0x10,0x58,0x57,0x54,0x94,0x17,0x14,0x10,0x11,0x12,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0x44,0xfe,0x44,0x44,0xfc,0x44,0xe0,0x50,0x48,0x46,0x44,0x40,
-+0x21,0x25,0x25,0x25,0xb5,0xad,0xa5,0xa5,0x25,0x20,0x20,0x2f,0x20,0x20,0x3f,0x20,0x0,0x0,0xfc,0x4,0x28,0x10,0x28,0x46,0x80,0x80,0x90,0xf8,0x80,0x84,0xfe,0x0,
-+0x10,0x10,0x17,0x14,0x5c,0x57,0x54,0x94,0x17,0x10,0x10,0x17,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x10,0x17,0x14,0x14,0x5c,0x57,0x54,0x94,0x14,0x15,0x16,0x14,0x14,0x14,0x17,0x14,0x4,0xfe,0x44,0x44,0x54,0xfc,0x44,0xc4,0xe4,0x5c,0x4c,0x44,0x44,0x4,0xfc,0x4,
-+0x10,0x13,0x12,0x12,0x5b,0x54,0x57,0x94,0x14,0x14,0x17,0x14,0x14,0x14,0x13,0x10,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0x44,0xfc,0x0,0x2,0x2,0xfe,0x0,
-+0x12,0x11,0x10,0x13,0x58,0x50,0x57,0x94,0x14,0x17,0x10,0x11,0x12,0x14,0x10,0x10,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40,
-+0x10,0x10,0x11,0x1a,0x57,0x51,0x52,0x94,0x11,0x12,0x15,0x10,0x10,0x10,0x13,0x14,0x40,0x80,0x10,0x8,0xfc,0x10,0x8c,0x84,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x10,0x17,0x14,0x14,0x5d,0x54,0x54,0x94,0x17,0x14,0x14,0x14,0x14,0x15,0x17,0x10,0x8,0xfc,0x20,0x28,0xfc,0x20,0xa8,0x20,0xfe,0x20,0x50,0x50,0x88,0x4,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0x58,0x57,0x52,0x91,0x10,0x17,0x10,0x10,0x1f,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0x44,0xfe,0x8,0x10,0xa0,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x17,0x58,0x54,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa0,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0,
-+0x10,0x14,0x12,0x11,0x58,0x57,0x54,0x94,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x40,0x44,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x10,0x17,0x14,0x15,0x5c,0x57,0x54,0x94,0x17,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x4,0xfe,0x4,0x14,0xa4,0xfc,0x44,0x54,0xfc,0x4,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x17,0x14,0x14,0x5d,0x54,0x54,0x97,0x14,0x15,0x15,0x15,0x15,0x15,0x18,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x54,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x11,0x11,0x11,0x12,0x5c,0x55,0x51,0x92,0x14,0x11,0x11,0x15,0x15,0x19,0x10,0x10,0x0,0x4,0xfe,0xa4,0xa4,0x24,0x44,0x54,0x88,0x40,0x20,0x24,0xa,0xa,0xf8,0x0,
-+0x10,0x10,0x17,0x11,0x59,0x55,0x52,0x94,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x20,0x27,0x24,0x24,0xb7,0xac,0xa4,0xa7,0x20,0x2f,0x29,0x29,0x29,0x29,0x3f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x24,0x24,0x24,0x24,0xfe,0x0,
-+0x10,0x10,0x13,0x1a,0x53,0x50,0x5f,0x90,0x13,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0x8,0x4,
-+0x10,0x17,0x14,0x14,0x5f,0x54,0x53,0x90,0x1f,0x11,0x13,0x10,0x10,0x10,0x10,0x10,0x4,0xbe,0xa4,0xa4,0xbc,0x0,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x10,0x17,0x14,0x14,0x5f,0x54,0x50,0x9f,0x10,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x4,0xfe,0xa4,0xa4,0xfc,0x80,0x44,0xfe,0x80,0x88,0xfc,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x12,0x12,0x12,0x5b,0x54,0x50,0x97,0x10,0x10,0x17,0x14,0x14,0x14,0x14,0x14,0x40,0x48,0x48,0x48,0xf8,0x0,0x4,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x10,0x11,0x17,0x11,0x59,0x55,0x57,0x91,0x13,0x13,0x15,0x15,0x19,0x11,0x11,0x11,0x90,0xd0,0x10,0x10,0x52,0x34,0xd8,0x10,0x10,0x90,0x50,0x28,0x28,0x44,0x82,0x0,
-+0x11,0x11,0x11,0x1a,0x55,0x51,0x51,0x91,0x11,0x11,0x11,0x13,0x14,0x10,0x11,0x16,0x0,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe,
-+0x10,0x10,0x17,0x18,0x57,0x50,0x5f,0x90,0x11,0x13,0x10,0x17,0x11,0x12,0x14,0x10,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x10,0xe0,0x48,0xfc,0x50,0x4c,0x44,0xc0,
-+0x22,0x21,0x2f,0x21,0xb7,0xa9,0xa1,0xbf,0x21,0x21,0x27,0x21,0x23,0x25,0x29,0x21,0x10,0x24,0xfe,0x20,0xfc,0x24,0x24,0xfe,0x24,0x24,0xfc,0x20,0x30,0x2e,0x24,0x20,
-+0x10,0x13,0x12,0x13,0x5a,0x57,0x52,0x93,0x12,0x13,0x13,0x13,0x15,0x15,0x19,0x11,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c,
-+0x10,0x13,0x12,0x13,0x5a,0x57,0x50,0x9f,0x10,0x13,0x12,0x13,0x11,0x12,0x14,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x0,0xf8,0x8,0xf8,0x50,0x4c,0x44,0xc0,
-+0x11,0x11,0x11,0x1a,0x56,0x5b,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x12,0x12,0x14,0x40,0x24,0xfe,0x20,0x20,0xfc,0x20,0x20,0xfc,0x20,0x20,0xfe,0x0,0x94,0x4a,0x2,
-+0x10,0x17,0x11,0x10,0x5f,0x54,0x53,0x92,0x13,0x12,0x13,0x10,0x17,0x10,0x1f,0x10,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xf8,0x48,0xf8,0x48,0xf8,0x40,0xfc,0x40,0xfe,0x0,
-+0x11,0x11,0x1f,0x11,0x5b,0x55,0x51,0x97,0x10,0x12,0x12,0x12,0x13,0x12,0x14,0x18,0x10,0x14,0xfe,0x10,0xb8,0x54,0x10,0xfc,0x48,0x40,0x7c,0x40,0x40,0xc0,0x46,0x3c,
-+0x10,0x1f,0x10,0x17,0x5d,0x55,0x55,0x97,0x10,0x13,0x10,0x1f,0x11,0x12,0x14,0x10,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0xc0,
-+0x21,0x2f,0x21,0x23,0xb2,0xab,0xa0,0xaf,0x28,0x33,0x22,0x23,0x22,0x23,0x22,0x23,0x10,0xfe,0x10,0xf8,0xa8,0xf8,0x0,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,
-+0x0,0x3f,0x2,0x2,0xff,0x4,0x4,0x8,0x12,0x22,0xcb,0xa,0x12,0x22,0xa,0x4,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x24,0x90,0x48,0x48,0x0,0x0,
-+0x3c,0x27,0x24,0x29,0x26,0x24,0x34,0x28,0x21,0x26,0x18,0xe1,0x9,0x11,0x25,0x2,0x40,0xfc,0x80,0xf8,0x88,0xf8,0x88,0xf8,0x88,0xc0,0x30,0xe,0x50,0x28,0x28,0x0,
-+0x20,0x17,0x40,0x40,0x40,0x40,0x40,0x5f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x24,0xf4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x20,0x17,0x40,0x40,0x5f,0x40,0x40,0x40,0x4f,0x40,0x40,0x40,0x5f,0x40,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x20,0x17,0x41,0x41,0x5f,0x41,0x41,0x4f,0x41,0x41,0x5f,0x41,0x41,0x41,0x41,0x41,0x4,0xfe,0x4,0x24,0xf4,0x4,0x44,0xe4,0x4,0x14,0xfc,0x14,0x54,0x24,0xc,0x4,
-+0x20,0x17,0x42,0x42,0x42,0x5f,0x42,0x44,0x45,0x49,0x4a,0x52,0x67,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x84,0x4,0x4,0x44,0x24,0xe4,0x4,0x14,0x8,
-+0x20,0x17,0x40,0x42,0x41,0x5f,0x40,0x44,0x42,0x41,0x42,0x44,0x48,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x44,0x44,0x84,0x4,0x84,0x64,0x24,0x4,0x14,0x8,
-+0x20,0x17,0x40,0x42,0x41,0x5f,0x40,0x47,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0xc4,0x44,0x44,0x44,0x54,0x74,0x4,0x14,0x8,
-+0x20,0x17,0x40,0x50,0x48,0x47,0x40,0x58,0x49,0x49,0x4a,0x4c,0x53,0x60,0x40,0x40,0x4,0xfe,0x4,0x84,0xa4,0xf4,0x84,0x84,0x44,0x34,0x14,0x4,0xfc,0x4,0x14,0x8,
-+0x20,0x17,0x40,0x40,0x47,0x44,0x44,0x47,0x40,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0xc4,0x4,0xe4,0x24,0x24,0x24,0xe4,0x14,0x8,
-+0x20,0x17,0x40,0x40,0x5f,0x51,0x51,0x5f,0x51,0x53,0x55,0x59,0x51,0x5f,0x50,0x40,0x4,0xfe,0x4,0x4,0xf4,0x14,0x54,0xf4,0x14,0x94,0x54,0x34,0x14,0xf4,0x14,0x8,
-+0x20,0x17,0x42,0x47,0x48,0x51,0x4f,0x49,0x4f,0x49,0x4f,0x41,0x41,0x40,0x40,0x40,0x4,0xfe,0x4,0xc4,0x84,0x24,0xf4,0x24,0xe4,0x24,0xe4,0x4,0x14,0xf4,0x4,0xc,
-+0x20,0x17,0x42,0x41,0x4f,0x48,0x4f,0x48,0x4f,0x4a,0x49,0x48,0x4a,0x4c,0x48,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0xe4,0x24,0xe4,0x14,0x24,0xc4,0x44,0x34,0x4,0xc,
-+0x20,0x17,0x40,0x40,0x7f,0x40,0x5e,0x52,0x52,0x52,0x5e,0x40,0x7e,0x41,0x42,0x40,0x4,0xfe,0xa4,0x94,0xfc,0x84,0x84,0x94,0x54,0x64,0x44,0x54,0xb4,0x14,0x4,0xc,
-+0x20,0x17,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x40,0x5f,0x50,0x5f,0x50,0x5f,0x40,0x40,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x4,0xf4,0x14,0xf4,0x14,0xf4,0x14,0x8,
-+0x20,0x17,0x40,0x42,0x4c,0x48,0x4e,0x48,0x4f,0x42,0x42,0x44,0x44,0x48,0x50,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0xe4,0x24,0xe4,0x84,0x84,0x94,0x94,0x74,0x4,0xc,
-+0x20,0x17,0x40,0x40,0x5f,0x49,0x45,0x5f,0x50,0x67,0x44,0x42,0x41,0x46,0x58,0x40,0x4,0xfe,0x24,0xf4,0x4,0x24,0x44,0xfc,0xc,0xd4,0x44,0x84,0x4,0xc4,0x34,0x8,
-+0x20,0x17,0x40,0x4f,0x49,0x4f,0x48,0x4a,0x4c,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x40,0x4,0xfe,0x4,0xe4,0x4,0xf4,0x84,0x54,0x34,0x4,0xe4,0x24,0xe4,0x24,0xf4,0x8,
-+0x20,0x17,0x48,0x44,0x44,0x7f,0x48,0x49,0x4e,0x4a,0x4a,0x52,0x52,0x66,0x40,0x40,0x4,0xfe,0x4,0x44,0x44,0xa4,0xa4,0x14,0x8c,0x64,0x24,0x4,0x84,0x64,0x24,0xc,
-+0x20,0x17,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x48,0x4f,0x41,0x7f,0x41,0x46,0x58,0x40,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xe4,0x44,0xfc,0x4,0xc4,0x34,0xc,
-+0x20,0x17,0x40,0x5e,0x52,0x4a,0x44,0x4f,0x71,0x41,0x5f,0x41,0x42,0x44,0x58,0x40,0x4,0xfe,0x84,0xa4,0xcc,0x94,0x64,0xe4,0x1c,0x4,0xf4,0x4,0xc4,0x34,0x14,0x8,
-+0x20,0x17,0x41,0x4f,0x41,0x5f,0x42,0x44,0x4f,0x40,0x4f,0x4a,0x4a,0x4a,0x5f,0x40,0x4,0xfe,0x4,0xe4,0x4,0xf4,0x4,0x44,0xe4,0x4,0xe4,0xa4,0xa4,0xa4,0xf4,0x8,
-+0x20,0x17,0x41,0x5f,0x41,0x4f,0x48,0x4f,0x48,0x4f,0x48,0x4f,0x48,0x7f,0x44,0x48,0x4,0xfe,0x4,0xf4,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xfc,0x44,0x2c,
-+0x20,0x17,0x40,0x51,0x4a,0x7f,0x44,0x55,0x55,0x5f,0x54,0x44,0x48,0x51,0x40,0x40,0x4,0xfe,0x4,0x44,0x44,0xfc,0x94,0x44,0x44,0x44,0x44,0xa4,0xa4,0x14,0x14,0x8,
-+0x20,0x17,0x40,0x5c,0x44,0x7e,0x53,0x5e,0x52,0x5e,0x52,0x7e,0x43,0x42,0x42,0x40,0x4,0xfe,0x4,0x44,0x44,0xfc,0x14,0x94,0xa4,0xa4,0x44,0xa4,0x1c,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x8,0x8,0xf,0x0,0x0,0x7f,0x8,0x8,0x8,0x8,0x10,0x60,0x0,0x20,0x20,0x20,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x24,0x24,0x24,0x24,0x3c,0x7,0x4,0xfc,0x24,0x24,0x24,0x24,0x44,0x85,0x4,0x40,0x50,0x48,0x40,0x44,0x7e,0xc0,0x40,0x48,0x48,0x50,0x20,0x60,0x92,0xa,0x4,
-+0x0,0x40,0x30,0x10,0x80,0x48,0x48,0x10,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x41,0x31,0x11,0x82,0x4c,0x4b,0x10,0x10,0x20,0xe0,0x21,0x22,0x22,0x21,0x20,0x0,0x0,0x4,0xfe,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x40,0x33,0x12,0x82,0x4a,0x4a,0x13,0x12,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x82,0x4a,0x49,0x11,0x10,0x20,0xe0,0x20,0x20,0x21,0x22,0x2c,0x0,0x0,0xfc,0x8,0x88,0x50,0x50,0x10,0xa0,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x0,0x40,0x30,0x17,0x80,0x48,0x4b,0x10,0x10,0x20,0xef,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x47,0x30,0x10,0x80,0x4f,0x49,0x11,0x11,0x21,0xe1,0x22,0x22,0x24,0x28,0x30,0x8,0xfc,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x40,0x30,0x10,0x87,0x48,0x48,0x11,0x11,0x22,0xe2,0x24,0x28,0x20,0x20,0x20,0x40,0x40,0x40,0x44,0xfe,0x40,0xe0,0x50,0x50,0x48,0x48,0x44,0x46,0x40,0x40,0x40,
-+0x0,0x4f,0x30,0x10,0x82,0x4a,0x4a,0x12,0x12,0x23,0xe0,0x20,0x20,0x20,0x20,0x20,0x4,0xfe,0x40,0x40,0x44,0x7e,0x44,0x44,0x44,0xfc,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x40,0x20,0x2f,0x80,0x44,0x4c,0x14,0x14,0x27,0xe0,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x44,0xfe,0x40,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x40,0x33,0x12,0x82,0x4a,0x4a,0x12,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x17,0x84,0x44,0x4c,0x14,0x17,0x24,0xe4,0x24,0x24,0x27,0x24,0x20,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x1,0x40,0x30,0x10,0x8f,0x40,0x48,0x10,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x0,0x80,0x80,0x4,0xfe,0x80,0x80,0xa0,0x90,0x8c,0x84,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x40,0x30,0x17,0x80,0x4a,0x4a,0x11,0x11,0x20,0xe0,0x20,0x21,0x22,0x24,0x28,0x80,0x40,0x44,0xfe,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x40,0x30,0x17,0x80,0x48,0x49,0x11,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x28,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x40,0x34,0x13,0x81,0x4f,0x48,0x10,0x10,0x20,0xe1,0x21,0x22,0x22,0x24,0x28,0x40,0x40,0x40,0x40,0x44,0xfe,0x84,0x84,0x84,0xc4,0x34,0x14,0x4,0x44,0x28,0x10,
-+0x0,0x4f,0x39,0x1a,0x8a,0x4c,0x4a,0x19,0x19,0x29,0xed,0x2a,0x28,0x28,0x29,0x2a,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x2,0x42,0x22,0x22,0x9f,0x42,0x4a,0x12,0x12,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x40,0x30,0x10,0x87,0x48,0x48,0x11,0x11,0x22,0xe2,0x24,0x28,0x20,0x20,0x20,0x40,0x50,0x4c,0x44,0xfe,0x40,0xe0,0x50,0x50,0x48,0x48,0x44,0x46,0x40,0x40,0x40,
-+0x1,0x41,0x31,0x11,0x8f,0x49,0x49,0x11,0x11,0x22,0xe2,0x22,0x24,0x25,0x28,0x30,0x0,0x20,0x10,0x4,0xfe,0x40,0x48,0x48,0x50,0x50,0x60,0x40,0xc2,0x42,0x3e,0x0,
-+0x0,0x40,0x30,0x10,0x80,0x4b,0x4a,0x12,0x12,0x23,0xe2,0x22,0x22,0x24,0x24,0x28,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x40,0x30,0x13,0x82,0x4a,0x4a,0x12,0x12,0x2f,0xe0,0x20,0x20,0x21,0x22,0x2c,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x0,0x40,0x30,0x1f,0x89,0x49,0x59,0x19,0x29,0x29,0xca,0x4c,0x48,0x4f,0x48,0x40,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x1c,0x4,0x4,0xfc,0x4,0x0,
-+0x1,0x41,0x31,0x12,0x84,0x42,0x4a,0x13,0x16,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x0,0x8,0xfc,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x68,0x50,0x42,0x2,0xfe,0x0,
-+0x0,0x40,0x30,0x11,0x81,0x4a,0x4c,0x10,0x17,0x20,0xe0,0x21,0x20,0x20,0x20,0x20,0x40,0x40,0xa0,0x10,0x10,0x88,0x46,0x40,0xf8,0x8,0x10,0x20,0xc0,0x40,0x30,0x10,
-+0x0,0x41,0x36,0x14,0x84,0x44,0x4c,0x14,0x15,0x26,0xe0,0x21,0x21,0x22,0x24,0x28,0x80,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x40,0x37,0x14,0x84,0x44,0x44,0x17,0x10,0x20,0xe1,0x22,0x24,0x28,0x21,0x20,0x8,0x7c,0x80,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x50,0x48,0x46,0x42,0x40,0x80,
-+0x0,0x40,0x30,0x17,0x80,0x40,0x49,0x12,0x17,0x20,0xe0,0x21,0x22,0x24,0x27,0x20,0x80,0x40,0x44,0xfe,0x80,0x80,0x8,0x18,0xe0,0x40,0x80,0x0,0x10,0x8,0xfc,0x4,
-+0x0,0x44,0x33,0x11,0x80,0x47,0x48,0x10,0x10,0x2f,0xe0,0x20,0x20,0x20,0x20,0x20,0x40,0x44,0x4c,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x40,0x30,0x17,0x84,0x48,0x42,0x12,0x12,0x22,0xe3,0x22,0x22,0x22,0x21,0x20,0x80,0x40,0x40,0xfc,0x4,0x4,0x10,0x30,0x40,0x80,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x0,0x4f,0x30,0x10,0x80,0x47,0x4c,0x14,0x14,0x27,0xe0,0x20,0x20,0x21,0x25,0x22,0x0,0x90,0x90,0x90,0x90,0x90,0x10,0x20,0x20,0xa0,0xa0,0xa8,0xa4,0x42,0x7e,0x0,
-+0x0,0x47,0x34,0x14,0x84,0x47,0x4c,0x14,0x14,0x27,0xe4,0x24,0x24,0x25,0x26,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x44,0xfe,0x40,0x20,0x20,0x12,0xa,0x4,
-+0x0,0x40,0x37,0x10,0x80,0x48,0x49,0x12,0x14,0x27,0xe0,0x20,0x20,0x20,0x2f,0x20,0x0,0x10,0xf8,0x10,0x20,0xc0,0x18,0x6,0x2,0xfc,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x47,0x30,0x10,0x83,0x4a,0x4a,0x13,0x12,0x22,0xe2,0x23,0x22,0x20,0x2f,0x20,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x81,0x49,0x4b,0x15,0x11,0x21,0xe1,0x21,0x21,0x21,0x21,0x21,0x80,0x84,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x40,0x37,0x12,0x82,0x43,0x42,0x14,0x16,0x29,0xe0,0x20,0x21,0x21,0x22,0x24,0x4,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x54,0x94,0x94,0x94,0x4,0x4,0x14,0x8,
-+0x0,0x40,0x30,0x17,0x80,0x4a,0x49,0x10,0x1f,0x20,0xe0,0x20,0x21,0x21,0x22,0x2c,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x40,0x30,0x10,0x80,0x4b,0x4a,0x12,0x12,0x22,0xe2,0x22,0x20,0x20,0x21,0x26,0x40,0x44,0x7e,0x40,0x48,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0xa0,0x90,0xc,0x4,
-+0x0,0x47,0x34,0x14,0x84,0x4f,0x4c,0x14,0x14,0x24,0xe4,0x25,0x26,0x24,0x27,0x24,0x4,0xfe,0x44,0x44,0x54,0xfc,0x44,0x44,0xa4,0xa4,0xa4,0x14,0xc,0x4,0xfc,0x4,
-+0x0,0x4f,0x28,0x18,0x89,0x49,0x49,0x19,0x19,0x29,0xe9,0x29,0x28,0x28,0x2f,0x28,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x4,0xfc,0x4,
-+0x0,0x42,0x32,0x13,0x84,0x48,0x48,0x17,0x10,0x21,0xe1,0x22,0x24,0x28,0x20,0x20,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x0,0x40,0x33,0x12,0x82,0x4a,0x4b,0x12,0x12,0x22,0xe3,0x22,0x22,0x22,0x23,0x22,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x11,0x87,0x45,0x4d,0x15,0x15,0x25,0xe5,0x25,0x25,0x25,0x3f,0x20,0x40,0x40,0x80,0x8,0xfc,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0xfe,0x0,
-+0x0,0x40,0x30,0x11,0x82,0x4c,0x49,0x10,0x10,0x2f,0xe0,0x20,0x21,0x22,0x27,0x20,0x40,0x40,0xa0,0x10,0x8,0xe,0xf4,0x0,0x4,0xfe,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x0,0x40,0x30,0x14,0x82,0x4a,0x48,0x11,0x12,0x24,0xe0,0x21,0x21,0x22,0x24,0x28,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xac,0xa4,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0x41,0x31,0x11,0x82,0x4c,0x4b,0x12,0x12,0x23,0xe2,0x22,0x23,0x22,0x20,0x20,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10,
-+0x1,0x41,0x31,0x13,0x84,0x40,0x49,0x16,0x10,0x23,0xe2,0x22,0x27,0x20,0x20,0x20,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x4e,0x40,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,
-+0x2,0x41,0x31,0x1f,0x80,0x44,0x42,0x12,0x11,0x21,0xe2,0x22,0x24,0x28,0x20,0x20,0x4,0x4,0x14,0xf4,0x54,0x54,0x94,0x94,0x14,0x14,0x94,0x94,0x44,0x44,0x14,0x8,
-+0x0,0x48,0x24,0x24,0x80,0x51,0x5c,0x14,0x25,0x24,0xe4,0x25,0x26,0x24,0x20,0x20,0x40,0x40,0x48,0xfc,0xa0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x47,0x30,0x10,0x83,0x48,0x48,0x13,0x10,0x2f,0xe2,0x21,0x21,0x20,0x20,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x4,0x44,0x24,0x24,0x9f,0x44,0x44,0x14,0x14,0x28,0xe5,0x22,0x25,0x24,0x28,0x30,0x0,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x24,0x24,0xbc,0xa4,0x0,
-+0x0,0x40,0x37,0x10,0x80,0x4b,0x4a,0x12,0x12,0x23,0xe0,0x21,0x22,0x2c,0x20,0x20,0x40,0x44,0xfe,0x40,0x48,0xfc,0x48,0x48,0x48,0xf8,0xe0,0x50,0x4e,0x44,0x40,0x40,
-+0x0,0x47,0x30,0x10,0x87,0x49,0x49,0x11,0x1f,0x20,0xe3,0x22,0x22,0x22,0x23,0x22,0x8,0xfc,0x80,0x90,0xf8,0x10,0x10,0x14,0xfe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x17,0x80,0x42,0x49,0x10,0x17,0x20,0xe1,0x22,0x24,0x28,0x20,0x20,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0xd0,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x0,0x47,0x34,0x14,0x87,0x4c,0x4d,0x14,0x17,0x24,0xe4,0x24,0x24,0x24,0x27,0x24,0x4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x44,0xf4,0x54,0x54,0x74,0x44,0x44,0xfc,0x4,
-+0x0,0x43,0x32,0x12,0x82,0x4b,0x48,0x10,0x12,0x22,0xe2,0x22,0x23,0x22,0x24,0x28,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0xc0,0x30,0xe,
-+0x0,0x41,0x31,0x11,0x81,0x48,0x4b,0x12,0x12,0x23,0xe2,0x22,0x23,0x22,0x22,0x22,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8,
-+0x0,0x40,0x34,0x14,0x87,0x40,0x48,0x11,0x12,0x24,0xeb,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x44,0x44,0xfc,0x44,0xa0,0x10,0x4e,0x4,0xf8,0x8,0x10,0x20,0x40,0x80,
-+0x0,0x40,0x33,0x12,0x82,0x43,0x42,0x12,0x12,0x22,0xef,0x20,0x21,0x22,0x24,0x28,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x20,0x10,0xc,0x4,
-+0x2,0x41,0x30,0x11,0x82,0x40,0x4f,0x11,0x12,0x27,0xea,0x22,0x22,0x22,0x20,0x0,0x8,0xb0,0x40,0xb0,0x48,0x80,0xfe,0x40,0x48,0xfc,0x48,0x48,0x48,0x58,0x40,0x40,
-+0x1,0x41,0x31,0x12,0x84,0x47,0x4c,0x14,0x14,0x27,0xe4,0x20,0x21,0x21,0x22,0x2c,0x0,0x0,0xf8,0x10,0x24,0xfe,0x44,0x44,0x44,0xfc,0xa4,0xa0,0x20,0x22,0x22,0x1e,
-+0x0,0x44,0x37,0x14,0x88,0x43,0x48,0x10,0x17,0x21,0xe1,0x21,0x21,0x22,0x24,0x28,0x80,0x40,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x40,0x27,0x10,0x80,0x4f,0x48,0x10,0x13,0x22,0xe6,0x2b,0x32,0x22,0x23,0x22,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x2,0x42,0x37,0x12,0x82,0x4b,0x4a,0x12,0x13,0x22,0xe2,0x3f,0x20,0x22,0x24,0x28,0x10,0x10,0xfc,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x2,0x42,0x32,0x12,0x8f,0x42,0x56,0x17,0x2a,0x2a,0xf2,0x22,0x22,0x22,0x23,0x22,0x0,0xc,0x70,0x40,0xc0,0x44,0x7e,0x48,0xc8,0x48,0x48,0x48,0x88,0x88,0x8,0x8,
-+0x2,0x42,0x32,0x12,0x8f,0x42,0x56,0x17,0x2a,0x2a,0xf2,0x22,0x22,0x22,0x22,0x22,0x0,0x10,0x50,0x50,0xd0,0x48,0x88,0x26,0xa0,0x20,0x40,0x48,0x44,0xfc,0x4,0x0,
-+0x0,0x40,0x37,0x10,0x80,0x4f,0x41,0x10,0x12,0x21,0xe0,0x2f,0x20,0x20,0x21,0x26,0x40,0x48,0xfc,0x40,0x40,0xfe,0x22,0xa4,0x60,0x20,0xa4,0xfe,0x40,0x50,0x8c,0x4,
-+0x0,0x4f,0x30,0x11,0x86,0x40,0x55,0x12,0x16,0x29,0xe2,0x24,0x28,0x20,0x21,0x20,0x4,0xfe,0x80,0x0,0x88,0xd0,0x60,0x60,0xd0,0x50,0x48,0x4e,0x44,0x40,0x40,0x80,
-+0x0,0x47,0x34,0x14,0x87,0x54,0x54,0x17,0x10,0x2f,0xe1,0x21,0x21,0x22,0x24,0x28,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x0,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x43,0x32,0x12,0x83,0x48,0x4f,0x14,0x14,0x27,0xe4,0x24,0x27,0x20,0x20,0x20,0x8,0xfc,0x8,0x8,0xf8,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0x42,0x3e,
-+0x0,0x40,0x30,0x11,0x82,0x4d,0x48,0x10,0x17,0x20,0xe2,0x21,0x21,0x20,0x2f,0x20,0x40,0x40,0xa0,0x10,0xe,0xf4,0x40,0x48,0xfc,0x40,0x44,0x48,0x50,0x40,0xfe,0x0,
-+0x0,0x4f,0x29,0x29,0x89,0x4f,0x59,0x19,0x29,0x2f,0xe9,0x29,0x29,0x29,0x2b,0x10,0x4,0x7e,0x54,0x54,0x54,0x54,0x54,0x54,0x7c,0x44,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x40,0x37,0x14,0x88,0x43,0x48,0x10,0x17,0x20,0xe1,0x22,0x24,0x28,0x21,0x20,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x40,0x50,0x48,0x44,0x44,0x40,0x80,
-+0x0,0x40,0x37,0x14,0x88,0x47,0x44,0x14,0x17,0x24,0xe4,0x27,0x24,0x20,0x20,0x20,0x80,0x40,0xfe,0x42,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,
-+0x0,0x40,0x37,0x14,0x88,0x43,0x4a,0x12,0x13,0x22,0xe3,0x22,0x22,0x22,0x23,0x22,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x43,0x30,0x10,0x83,0x48,0x48,0x17,0x10,0x24,0xe2,0x21,0x22,0x2c,0x21,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xfe,0x40,0x44,0xe8,0x50,0x48,0x4e,0x44,0x80,
-+0x0,0x47,0x34,0x14,0x87,0x45,0x4d,0x17,0x15,0x2d,0xed,0x35,0x25,0x25,0x21,0x21,0x44,0xe4,0x44,0x54,0xd4,0x14,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0xc4,0x14,0x8,
-+0x0,0x42,0x32,0x17,0x82,0x4a,0x4a,0x12,0x13,0x20,0xe7,0x20,0x21,0x22,0x2c,0x20,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfc,0xe0,0x50,0x4e,0x44,0x40,
-+0x0,0x47,0x30,0x10,0x87,0x44,0x4c,0x14,0x17,0x24,0xe0,0x27,0x20,0x20,0x2f,0x20,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xfc,0x44,0x40,0xfc,0x40,0x44,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x81,0x4f,0x49,0x19,0x19,0x29,0xe9,0x29,0x29,0x29,0x2f,0x28,0x0,0x4,0xfe,0x80,0x4,0xfe,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x24,0xfc,0x4,
-+0x0,0x41,0x36,0x12,0x82,0x5f,0x42,0x16,0x17,0x2a,0xea,0x32,0x22,0x22,0x22,0x23,0x10,0x90,0x10,0x10,0x92,0xd4,0x38,0x10,0x10,0x90,0x28,0x28,0x48,0x48,0x84,0x2,
-+0x0,0x41,0x36,0x14,0x87,0x44,0x4c,0x17,0x10,0x27,0xe2,0x21,0x20,0x20,0x23,0x2c,0x40,0x44,0x5e,0x44,0x5c,0x44,0x44,0xfc,0x40,0xfc,0x8,0x10,0xe0,0xa0,0x10,0xe,
-+0x0,0x41,0x33,0x12,0x83,0x4a,0x4b,0x10,0x17,0x20,0xe0,0x27,0x20,0x20,0x2f,0x20,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x2,0x42,0x35,0x14,0x88,0x57,0x42,0x12,0x1f,0x22,0xe7,0x2a,0x32,0x22,0x2a,0x24,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x28,0xa8,0x28,0x10,0x90,0x28,0x28,0x44,0x82,
-+0x0,0x41,0x31,0x12,0x87,0x49,0x41,0x12,0x14,0x27,0xe5,0x25,0x25,0x25,0x3f,0x20,0x20,0x20,0x20,0x10,0xfe,0x14,0x10,0x50,0x20,0xf8,0x28,0x28,0x28,0x28,0xfe,0x0,
-+0x4,0x42,0x31,0x1f,0x80,0x47,0x44,0x14,0x17,0x24,0xe4,0x27,0x24,0x24,0x25,0x24,0x8,0x10,0x24,0xfe,0x0,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0x88,0xa8,0x90,
-+0x0,0x40,0x37,0x14,0x89,0x40,0x4b,0x12,0x12,0x23,0xe2,0x22,0x23,0x20,0x2f,0x20,0x80,0x40,0xfe,0x2,0xf4,0x0,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x0,
-+0x0,0x47,0x34,0x14,0x87,0x4c,0x4d,0x14,0x14,0x25,0xe4,0x25,0x28,0x28,0x33,0x20,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x40,0x88,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x0,0x47,0x34,0x14,0x87,0x44,0x4d,0x15,0x15,0x25,0xe5,0x25,0x25,0x29,0x29,0x31,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,
-+0x2,0x42,0x22,0x2f,0x82,0x42,0x4f,0x12,0x12,0x22,0xef,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x3c,0x48,0x94,0x7e,0xd4,0x54,0x54,0x54,0xfc,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x40,0x37,0x10,0x87,0x40,0x4f,0x11,0x12,0x25,0xe8,0x23,0x20,0x21,0x26,0x20,0x40,0x44,0xfe,0x40,0xfc,0x80,0xfe,0x10,0x8,0xfe,0x44,0xf8,0xe0,0x50,0x4c,0x40,
-+0x0,0x40,0x37,0x10,0x80,0x4f,0x48,0x11,0x13,0x20,0xe7,0x24,0x24,0x24,0x2f,0x20,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x10,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xfe,0x0,
-+0x0,0x4f,0x32,0x13,0x82,0x4b,0x4a,0x1f,0x10,0x2f,0xe8,0x25,0x22,0x25,0x28,0x30,0x8,0xfc,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x10,0xfc,0x84,0x28,0x10,0x28,0xc6,0x84,
-+0x1,0x41,0x3f,0x11,0x80,0x4f,0x40,0x11,0x12,0x2d,0xe1,0x27,0x21,0x21,0x22,0x24,0x10,0x10,0xfe,0x10,0x48,0xfe,0xa0,0x10,0xe,0x14,0x10,0xfc,0x10,0x10,0x10,0x10,
-+0x1,0x41,0x3f,0x11,0x8f,0x48,0x48,0x17,0x10,0x20,0xe3,0x20,0x20,0x20,0x2f,0x20,0x10,0x14,0xfe,0x10,0xfe,0x2,0x4,0xfc,0x40,0x50,0xf8,0x40,0x50,0x48,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x87,0x44,0x4f,0x14,0x17,0x24,0xe0,0x2f,0x21,0x20,0x20,0x20,0x50,0x48,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x40,0xfe,0x8,0x88,0x28,0x10,
-+0x0,0x47,0x30,0x10,0x87,0x44,0x44,0x17,0x10,0x20,0xef,0x20,0x21,0x22,0x2c,0x20,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x0,0x47,0x34,0x15,0x84,0x47,0x4d,0x15,0x15,0x29,0xe0,0x2f,0x22,0x21,0x20,0x20,0x8,0xfc,0x0,0xf8,0x0,0xfc,0x44,0x28,0x90,0xe,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x0,0x47,0x34,0x17,0x84,0x4f,0x48,0x17,0x10,0x24,0xe3,0x22,0x24,0x20,0x22,0x21,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xbe,0x84,0xa4,0x9c,0x94,0xa4,0x84,0x94,0x8,
-+0x0,0x47,0x34,0x17,0x84,0x45,0x4e,0x14,0x17,0x24,0xe7,0x24,0x25,0x24,0x27,0x24,0x4,0xfe,0x4,0xfc,0x84,0x8c,0x54,0xe4,0x44,0xe4,0x5c,0x4c,0x44,0x84,0xfc,0x4,
-+0x2,0x42,0x33,0x15,0x88,0x40,0x4f,0x10,0x17,0x20,0xe0,0x2f,0x20,0x20,0x20,0x20,0x20,0x24,0xbe,0x50,0x88,0x3c,0xc0,0x90,0xf8,0x80,0x84,0xfe,0x80,0x84,0x84,0x7c,
-+0x0,0x41,0x37,0x14,0x87,0x44,0x47,0x14,0x17,0x20,0xe0,0x3f,0x21,0x21,0x22,0x2c,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0xa0,0x94,0xfe,0x40,0x20,0x10,0xe,
-+0x1,0x42,0x35,0x10,0x80,0x49,0x4e,0x13,0x10,0x20,0xe7,0x22,0x21,0x20,0x2f,0x20,0x10,0xc,0x14,0xa0,0x40,0xb0,0xe,0xf8,0x40,0x40,0xfc,0x48,0x50,0x44,0xfe,0x0,
-+0x0,0x40,0x37,0x14,0x85,0x44,0x57,0x14,0x25,0x24,0xe5,0x25,0x25,0x29,0x29,0x31,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x40,0x37,0x11,0x80,0x4f,0x48,0x10,0x1f,0x21,0xe1,0x21,0x21,0x21,0x22,0x24,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x82,0x44,0xfe,0x10,0xf8,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x4f,0x28,0x10,0x83,0x4a,0x4b,0x12,0x13,0x20,0xe0,0x2f,0x20,0x21,0x22,0x24,0x0,0xfe,0x2,0x4,0xf8,0x8,0xf8,0x8,0xf8,0x80,0x44,0xfe,0x0,0x10,0xc,0x4,
-+0x1,0x41,0x37,0x11,0x81,0x4f,0x48,0x17,0x14,0x27,0xe4,0x27,0x24,0x21,0x22,0x24,0x10,0x10,0xfc,0x10,0x14,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x4,0x10,0xc,0x4,
-+0x1,0x41,0x2f,0x11,0x87,0x44,0x49,0x13,0x10,0x21,0xe7,0x20,0x22,0x24,0x29,0x20,0x10,0x14,0xfe,0x10,0xfe,0x82,0x14,0xe0,0x80,0x8,0xfc,0x44,0x50,0x4c,0x44,0x80,
-+0x1,0x4f,0x31,0x10,0x87,0x40,0x4f,0x10,0x17,0x20,0xe4,0x25,0x25,0x26,0x28,0x30,0x10,0xfe,0x10,0x40,0xfc,0x44,0xfe,0x44,0xfc,0x40,0x44,0x64,0x54,0x54,0x44,0x44,
-+0x2,0x42,0x2f,0x12,0x87,0x4a,0x52,0x12,0x10,0x2f,0xe1,0x22,0x21,0x20,0x23,0x2c,0x10,0x10,0xfc,0x10,0x38,0xd4,0x12,0x90,0x84,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8,
-+0x1,0x41,0x3f,0x11,0x8f,0x49,0x4f,0x19,0x2f,0x20,0xe7,0x24,0x27,0x24,0x27,0x24,0x20,0x24,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x17,0x84,0x45,0x44,0x14,0x14,0x25,0xe5,0x24,0x2b,0x28,0x30,0x20,0x48,0x7c,0x40,0xfe,0x44,0xf0,0x44,0x3c,0x8,0xf0,0x24,0xa8,0xfe,0x20,0xa0,0x40,
-+0x0,0x47,0x34,0x17,0x84,0x47,0x44,0x11,0x17,0x20,0xe1,0x27,0x22,0x24,0x29,0x20,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x84,0x8,0xf0,0x80,0x8,0xfc,0x50,0x4c,0x44,0x80,
-+0x0,0x40,0x37,0x14,0x84,0x47,0x40,0x17,0x14,0x24,0xe7,0x20,0x2a,0x2a,0x32,0x21,0x40,0x44,0xfe,0x44,0x44,0xfc,0x40,0xfc,0x44,0x44,0xfc,0x40,0x88,0x46,0xa,0xf8,
-+0x2,0x42,0x35,0x14,0x88,0x57,0x40,0x1a,0x1a,0x2a,0xea,0x21,0x23,0x3c,0x28,0x21,0x10,0x10,0x10,0xa4,0x7e,0xa4,0x24,0xa4,0xa8,0xa8,0x90,0x10,0xa8,0x28,0x44,0x82,
-+0x0,0x48,0x25,0x12,0x86,0x4a,0x4b,0x12,0x16,0x2b,0xf2,0x22,0x22,0x22,0x2a,0x24,0x20,0xa0,0x24,0xfc,0x28,0x30,0xfe,0x40,0xfc,0x44,0x44,0x7c,0x44,0x44,0x7c,0x44,
-+0x1,0x49,0x25,0x12,0x86,0x4a,0x53,0x12,0x26,0x2a,0xf2,0x22,0x22,0x22,0x2a,0x24,0x20,0x28,0xfc,0x20,0x50,0x88,0xfe,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x0,0x40,0x37,0x14,0x84,0x4f,0x4c,0x14,0x17,0x25,0xe5,0x25,0x29,0x29,0x31,0x21,0x80,0x44,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x20,0x24,0xe8,0x30,0x62,0xa2,0x1e,
-+0x4,0x42,0x32,0x1f,0x84,0x44,0x4f,0x15,0x15,0x25,0xe5,0x29,0x29,0x2d,0x32,0x21,0x20,0x20,0x24,0xfe,0x80,0x0,0x7e,0x12,0x14,0x50,0x5c,0x50,0x50,0x70,0x98,0x6,
-+0x0,0x47,0x30,0x11,0x8f,0x44,0x4c,0x17,0x14,0x24,0xe7,0x24,0x24,0x3f,0x20,0x20,0x10,0x90,0x90,0x24,0xfe,0xa4,0xa4,0xa4,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0xc4,0x82,
-+0x2,0x42,0x2f,0x22,0x8f,0x50,0x1f,0x28,0x28,0x4f,0xc0,0x48,0x45,0x5f,0x40,0x40,0x8,0x88,0xc8,0x8,0xbe,0x8,0x88,0xa8,0x98,0x88,0x8,0x88,0x8,0xc8,0x28,0x10,
-+0x9,0x49,0x29,0x1f,0x89,0x49,0x5f,0x19,0x2f,0x29,0xe9,0x3f,0x24,0x29,0x30,0x21,0x0,0xc,0x70,0xc0,0x40,0x44,0x7e,0x48,0x48,0x48,0x48,0xc8,0x48,0x48,0x88,0x8,
-+0x2,0x42,0x2f,0x12,0x87,0x4a,0x42,0x17,0x14,0x27,0xe4,0x24,0x27,0x24,0x24,0x24,0x10,0x10,0xfc,0x10,0x38,0xd6,0x10,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10,
-+0x0,0x41,0x2e,0x12,0x82,0x5f,0x42,0x16,0x17,0x2a,0xea,0x32,0x22,0x22,0x22,0x22,0x10,0x90,0x54,0x38,0x10,0xfc,0x44,0x44,0x7c,0xc4,0x44,0x7c,0x44,0x44,0x54,0x48,
-+0x0,0x47,0x31,0x10,0x8f,0x40,0x47,0x14,0x17,0x24,0xe7,0x20,0x27,0x20,0x2f,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x40,0xfc,0x40,0xfe,0x0,
-+0x7,0x44,0x37,0x14,0x85,0x44,0x4f,0x14,0x14,0x27,0xe4,0x25,0x2b,0x29,0x31,0x23,0xfc,0x4,0xfc,0x0,0xf8,0x10,0xfe,0x20,0x64,0xde,0x84,0x8,0xfe,0x8,0x8,0x18,
-+0x4,0x44,0x3f,0x24,0x84,0x5f,0x15,0x55,0x5f,0x44,0xcc,0x4e,0x55,0x64,0x44,0x44,0x20,0x20,0x7c,0x88,0x10,0x7c,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x28,0x46,0x82,
-+0x0,0x40,0x2f,0x29,0x89,0x49,0x5f,0x19,0x29,0x2f,0xe9,0x29,0x29,0x2f,0x29,0x20,0x20,0x30,0x48,0x7e,0xc8,0x48,0x7e,0x48,0x48,0x7e,0x48,0x48,0x48,0x7e,0x40,0x40,
-+0x0,0x40,0x37,0x14,0x87,0x44,0x57,0x10,0x27,0x20,0xe3,0x22,0x23,0x21,0x20,0x2f,0xa0,0xa4,0xfe,0xa4,0xfc,0xa4,0xfc,0x0,0xfc,0x0,0xf8,0x8,0xf8,0x10,0xa0,0xfe,
-+0x0,0x41,0x32,0x17,0x84,0x45,0x57,0x14,0x25,0x24,0xe5,0x24,0x29,0x29,0x31,0x21,0x80,0xf0,0x24,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x4,0x4,0xfc,
-+0x0,0x4f,0x20,0x27,0x85,0x45,0x45,0x17,0x10,0x23,0xe2,0x23,0x22,0x23,0x20,0x2f,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,
-+0x0,0x40,0x37,0x15,0x87,0x4c,0x4f,0x14,0x17,0x24,0xe7,0x24,0x29,0x2a,0x34,0x20,0x40,0x24,0xfe,0x8,0xfc,0x90,0xfc,0x94,0xfe,0x94,0xfc,0x90,0x98,0x94,0x92,0x90,
-+0x0,0x47,0x20,0x2f,0x88,0x53,0x40,0x13,0x10,0x2f,0xe0,0x27,0x24,0x24,0x24,0x24,0x8,0xfc,0x40,0xfe,0x42,0x58,0x40,0x58,0x40,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xc,
-+0x2,0x43,0x22,0x24,0x8f,0x54,0x44,0x17,0x14,0x25,0xe4,0x27,0x24,0x24,0x24,0x27,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfe,0x20,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x0,0x43,0x32,0x12,0x83,0x48,0x4f,0x14,0x17,0x24,0xe7,0x20,0x2f,0x21,0x21,0x22,0x80,0xf8,0x88,0x48,0xf8,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x10,0x10,0x10,
-+0x0,0x4f,0x30,0x13,0x82,0x4f,0x48,0x13,0x10,0x23,0xec,0x23,0x2c,0x23,0x2d,0x20,0x40,0xfe,0x0,0xf8,0x8,0xfe,0x2,0xfc,0x80,0x48,0x50,0x60,0xd0,0x4e,0x44,0x80,
-+0x0,0x4f,0x34,0x12,0x82,0x44,0x41,0x11,0x13,0x26,0xeb,0x22,0x23,0x22,0x23,0x22,0x0,0xbc,0xa4,0x94,0x94,0xa4,0x0,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x4,0x44,0x3f,0x4,0x9f,0x51,0x11,0x3f,0x51,0x51,0xdf,0x44,0x7f,0x44,0x44,0x44,0x10,0x10,0xa8,0x28,0x44,0x82,0xfc,0x24,0xb4,0x6c,0x6c,0xb4,0x24,0x24,0xb4,0x48,
-+0x2,0x43,0x32,0x17,0x84,0x4a,0x41,0x12,0x17,0x20,0xe7,0x20,0x27,0x20,0x2f,0x20,0x0,0xbc,0x24,0xa8,0x90,0xa8,0x46,0xa0,0xbc,0xa0,0xbc,0xa0,0xbc,0xa0,0xfe,0x0,
-+0x0,0x5f,0x24,0x27,0x80,0x47,0x4c,0x17,0x10,0x2e,0xeb,0x2e,0x2b,0x2f,0x2a,0x37,0x80,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xf8,0x80,0x9c,0xf4,0x9c,0x54,0x54,0x96,0x62,
-+0x0,0x41,0x22,0x24,0x8b,0x50,0x4f,0x19,0x2f,0x20,0xef,0x29,0x29,0x2f,0x29,0x28,0x80,0x40,0x20,0x10,0xee,0x4,0xfc,0x24,0xfc,0x0,0xfc,0x24,0x24,0xfc,0x24,0xc,
-+0x0,0x42,0x2f,0x21,0x82,0x4f,0x44,0x17,0x14,0x27,0xe1,0x27,0x21,0x2f,0x22,0x24,0x40,0x48,0xfe,0x50,0x48,0xfe,0x44,0xfc,0x44,0xfc,0x10,0xfc,0x10,0xfe,0x8,0x4,
-+0x40,0x3f,0x31,0x9f,0x51,0x5f,0x4,0x3f,0x20,0x5f,0xd1,0x5f,0x44,0x55,0x64,0x4c,0x4,0x7e,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82,
-+0x47,0x20,0x2f,0xa,0x95,0x4f,0x45,0x17,0x12,0x2f,0xea,0x2f,0x22,0x3f,0x22,0x22,0xfc,0x40,0xfe,0x4a,0x40,0xbc,0x24,0x24,0x3c,0xa4,0xa4,0xbc,0x24,0xe4,0x54,0x88,
-+0x0,0x0,0x0,0x2,0x1,0x1,0x7f,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x1,0x7f,0x42,0x82,0x2,0x3f,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0xfe,0x2,0x4,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0xff,0x4,0x4,0x8,0xf,0x18,0x28,0x48,0x8,0xf,0x8,0x0,0x0,0xfe,0x2,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x2,0x1,0x7f,0x40,0x82,0x1,0x9,0x8,0x28,0x28,0x29,0x4a,0xc,0x18,0x67,0x0,0x0,0x0,0xfe,0x2,0x4,0x10,0x10,0x20,0x48,0x84,0x4,0x4,0x10,0x10,0xf0,0x0,
-+0x2,0x1,0x7f,0x42,0x82,0xff,0x4,0xf,0x18,0x2f,0xc8,0xf,0x8,0x8,0x8,0x8,0x0,0x0,0xfe,0x2,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x2,0x1,0x7f,0x40,0x9f,0x10,0x17,0x10,0x1f,0x15,0x25,0x24,0x24,0x45,0x86,0x4,0x0,0x0,0xfe,0x2,0xf4,0x0,0xe0,0x8,0xfc,0x0,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x2,0x1,0x7f,0x42,0xa9,0x28,0x47,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x21,0x21,0x21,0x0,0x0,0xfe,0x2,0x14,0x28,0xe4,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x8,0x1f,0xe4,0x4,0x7,0x0,0x3f,0x0,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xd0,0x4e,0x40,0xf8,0x8,0xe8,0x10,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x8,0x17,0x21,0xcf,0x1,0x3f,0x1,0x3,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xd0,0xe,0xe4,0x0,0xf8,0x0,0x0,
-+0x2,0x1,0x7f,0x40,0xa5,0x24,0x25,0x3c,0x4,0xff,0x24,0x25,0x25,0x25,0x45,0x5,0x0,0x0,0xfe,0x2,0xfc,0x40,0xf8,0x88,0x88,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x4,
-+0x1,0x7f,0x41,0xbf,0x1,0xa,0x4,0x1f,0x30,0xdf,0x10,0x1f,0x9,0x11,0x25,0x2,0x0,0xfe,0x2,0xf8,0x0,0xa0,0x40,0xf0,0x1e,0xf4,0x10,0xf0,0x20,0x18,0x8,0x0,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x9,0x1f,0x22,0xc4,0xc,0x35,0x6,0x4,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xf0,0x1e,0xa4,0x40,0x20,0x1c,0x8,
-+0x1,0x7f,0x40,0xbf,0x24,0x3f,0x0,0xff,0x0,0x1f,0x10,0x1f,0x4,0xc,0x75,0x6,0x0,0xfe,0x2,0xfc,0x48,0xf8,0x0,0xfe,0x0,0xf0,0x10,0xf0,0x88,0x50,0x20,0x1c,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x8,0x1f,0x28,0xcf,0x9,0xd,0x13,0x20,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xf0,0x2e,0xe4,0x0,0xe0,0x0,0xf8,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x9,0x1f,0x27,0xc0,0xf,0x8,0x8,0xf,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xf0,0x8,0xe6,0xe0,0x20,0x20,0xe0,
-+0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0xfc,0x0,
-+0x0,0x40,0x37,0x10,0x2,0x2,0xf7,0x10,0x10,0x10,0x11,0x12,0x14,0x28,0x47,0x0,0x0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x50,0x50,0x90,0x10,0x10,0x50,0x26,0xfc,0x0,
-+0x1,0x41,0x31,0x12,0x4,0x0,0xf0,0x1f,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x46,0xfc,0x0,
-+0x0,0x40,0x27,0x24,0x4,0x5,0xe5,0x25,0x25,0x25,0x25,0x24,0x24,0x50,0x8f,0x0,0x0,0x8,0xfc,0x8,0x8,0xe8,0x28,0x28,0x28,0xe8,0x28,0x8,0x18,0x6,0xfc,0x0,
-+0x1,0x41,0x31,0x11,0x2,0x4,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x0,0x0,0x8,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x80,0x80,0x86,0xfc,0x0,
-+0x2,0x42,0x33,0x14,0x8,0x2,0xf3,0x16,0x12,0x12,0x12,0x11,0x10,0x28,0x47,0x0,0x0,0x8,0xfc,0x40,0x48,0x7c,0xc8,0x48,0x68,0x50,0x4,0xfc,0x0,0x6,0xfc,0x0,
-+0x1,0x41,0x21,0x21,0x2,0x4,0xf0,0x11,0x11,0x12,0x14,0x11,0x20,0x48,0x87,0x0,0x0,0x0,0x8,0xfc,0x8,0x10,0x40,0x50,0x48,0x44,0x44,0x40,0x80,0x6,0xfc,0x0,
-+0x4,0x44,0x2f,0x24,0x4,0x4,0xe4,0x24,0x24,0x24,0x28,0x32,0x21,0x50,0x8f,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0x20,0x6,0xfc,0x0,
-+0x0,0x43,0x30,0x10,0x1,0x6,0xf0,0x13,0x10,0x10,0x10,0x17,0x10,0x28,0x47,0x0,0x0,0xf8,0x10,0x60,0x98,0x4,0x10,0xf8,0x40,0x40,0x48,0xfc,0x0,0x6,0xfc,0x0,
-+0x0,0x40,0x31,0x12,0x4,0x7,0xf0,0x13,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x80,0x80,0x10,0x8,0x4,0xfc,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0,
-+0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x24,0x25,0x29,0x29,0x31,0x21,0x50,0x8f,0x0,0x0,0x18,0xe0,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0,
-+0x1,0x41,0x31,0x12,0x4,0x1,0xf6,0x10,0x13,0x12,0x12,0x17,0x10,0x28,0x47,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x4e,0x40,0xf8,0x40,0x48,0xfc,0x40,0x46,0xfc,0x0,
-+0x0,0x40,0x2f,0x20,0xf,0x8,0xe8,0x2f,0x28,0x28,0x2f,0x28,0x28,0x50,0x8f,0x0,0xa0,0x90,0xfc,0x80,0xf8,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x98,0x6,0xfc,0x0,
-+0x0,0x4f,0x30,0x17,0x4,0x4,0xf6,0x15,0x14,0x14,0x14,0x15,0x14,0x28,0x47,0x0,0x4,0xfe,0x0,0xbc,0xa4,0xa4,0xb4,0xac,0xa4,0xa4,0xa4,0xac,0xa4,0x2,0xfc,0x0,
-+0x0,0x40,0x30,0x17,0x0,0x2,0xf1,0x10,0x11,0x16,0x10,0x11,0x10,0x28,0x47,0x0,0x40,0x50,0x48,0xfc,0x40,0x48,0x50,0x40,0x50,0x4c,0x44,0x40,0x80,0x6,0xfc,0x0,
-+0x0,0x42,0x31,0x10,0x3,0x2,0xf2,0x13,0x12,0x12,0x13,0x12,0x12,0x28,0x47,0x0,0x40,0x48,0x50,0x40,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x18,0x6,0xfc,0x0,
-+0x0,0x48,0x25,0x22,0x5,0x9,0xe3,0x25,0x29,0x31,0x21,0x25,0x22,0x50,0x8f,0x0,0x10,0x90,0x10,0x10,0x52,0x54,0x58,0x90,0x28,0x28,0x28,0x44,0x82,0x6,0xfc,0x0,
-+0x0,0x41,0x32,0x17,0x1,0x2,0xf5,0x11,0x11,0x12,0x14,0x10,0x13,0x28,0x47,0x0,0x80,0x10,0x8,0xfc,0x10,0xc,0x4,0xf0,0x10,0xa0,0x40,0xa0,0x1c,0x6,0xfc,0x0,
-+0x0,0x40,0x37,0x10,0x0,0xf,0xf1,0x16,0x10,0x17,0x10,0x10,0x17,0x28,0x47,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x4c,0x40,0xfc,0x40,0x44,0xfe,0x0,0xfe,0x0,
-+0x0,0x43,0x30,0x17,0x0,0x1,0xf6,0x10,0x1f,0x11,0x13,0x10,0x11,0x2a,0x47,0x0,0x18,0xe0,0x48,0xfc,0xe0,0x50,0x4e,0x84,0xfe,0x10,0x10,0xe0,0x10,0x8,0xfe,0x0,
-+0x0,0x40,0x2f,0x28,0x13,0x2,0xe2,0x23,0x22,0x23,0x22,0x22,0x23,0x52,0x8f,0x0,0x80,0x40,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x0,0xf8,0x8,0x8,0xf8,0x6,0xfc,0x0,
-+0x0,0x47,0x20,0x13,0x0,0xf,0xf0,0x12,0x11,0x11,0x12,0x14,0x11,0x28,0x47,0x0,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x40,0x44,0x68,0x50,0x48,0x44,0x40,0x86,0xfc,0x0,
-+0x0,0x42,0x32,0x12,0x3,0x0,0xf7,0x10,0x17,0x14,0x14,0x14,0x14,0x28,0x47,0x0,0x40,0x48,0x48,0x48,0xf8,0x0,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xac,0x2,0xfc,0x0,
-+0x0,0x40,0x33,0x12,0x3,0x2,0xf3,0x10,0x17,0x10,0x13,0x10,0x17,0x28,0x47,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0xf8,0x40,0xfc,0x0,0xfe,0x0,
-+0x1,0x40,0x37,0x10,0x7,0x4,0xf4,0x14,0x15,0x16,0x15,0x14,0x17,0x28,0x47,0x0,0x10,0xa4,0xfe,0xa0,0xfc,0xa4,0xa4,0xa4,0x1c,0x4,0xf4,0x4,0xfc,0x0,0xfe,0x0,
-+0x0,0x47,0x34,0x14,0x7,0x4,0xf4,0x17,0x14,0x14,0x17,0x14,0x14,0x28,0x47,0x0,0x4,0xbe,0x84,0x84,0xbc,0x4,0x0,0x7c,0x44,0x44,0xa8,0x10,0x28,0x44,0xfe,0x0,
-+0x2,0x42,0x2f,0x22,0xf,0x2,0xff,0x24,0x27,0x24,0x24,0x28,0x29,0x50,0x8f,0x0,0x10,0x10,0x94,0x3e,0xa4,0x44,0xe4,0x14,0x94,0x88,0x94,0x94,0xa2,0x42,0xfe,0x0,
-+0x1,0x47,0x31,0x17,0x1,0xf,0xf0,0x13,0x12,0x13,0x12,0x1f,0x12,0x2a,0x47,0x0,0x10,0xfc,0x10,0xfc,0x10,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xfe,0x8,0x18,0xfe,0x0,
-+0x3,0x42,0x33,0x12,0x3,0x0,0xf7,0x10,0x14,0x12,0x12,0x14,0x11,0x28,0x47,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xbc,0x84,0xa4,0x94,0x94,0xa4,0x8c,0x86,0xfc,0x0,
-+0x1,0x46,0x34,0x15,0x6,0x4,0xf3,0x12,0x12,0x13,0x12,0x12,0x13,0x28,0x47,0x0,0x4,0xfe,0x24,0x24,0x54,0x88,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x6,0xfc,0x0,
-+0x7,0x44,0x27,0x24,0x7,0x2,0xe7,0x2c,0x37,0x24,0x27,0x24,0x27,0x54,0x8f,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x0,0xfe,0x0,
-+0x0,0x42,0x31,0x17,0x0,0x1,0xf6,0x12,0x13,0x14,0x1a,0x11,0x12,0x2c,0x47,0x0,0x40,0x48,0x50,0xfc,0xe0,0x50,0x4c,0x8,0xfe,0xa8,0xa8,0x3e,0x8,0x8,0xfe,0x0,
-+0x0,0x40,0x20,0x27,0x4,0x7,0xe4,0x25,0x26,0x25,0x2a,0x28,0x33,0x50,0x8f,0x0,0x48,0x7c,0x40,0xfc,0x84,0xf0,0x84,0x78,0xa0,0x30,0x68,0xa4,0x24,0x60,0xfe,0x0,
-+0x4,0x47,0x29,0x32,0xf,0xa,0xea,0x2f,0x2a,0x2a,0x2f,0x2a,0x2a,0x51,0x8f,0x0,0x4,0xfe,0x24,0x24,0xac,0xc4,0xa8,0xbe,0xc8,0x88,0xfe,0x88,0x88,0x88,0xfe,0x0,
-+0x0,0x43,0x3c,0x2a,0x5,0x6,0xeb,0x25,0x39,0x23,0x25,0x39,0x25,0x52,0x8f,0x0,0x90,0x24,0xfe,0xc4,0x44,0x7c,0x44,0x44,0x7c,0x28,0x28,0x2a,0x4e,0x80,0xfe,0x0,
-+0x0,0x40,0x2f,0x29,0x12,0x1,0xef,0x21,0x2e,0x21,0x2e,0x21,0x2e,0x50,0x8f,0x0,0x80,0x40,0xfe,0x12,0xc,0x10,0xfc,0x88,0x50,0xe0,0x50,0xce,0x40,0xc6,0xfc,0x0,
-+0x2,0x44,0x22,0x2f,0x9,0x8,0xe9,0x2f,0x24,0x26,0x24,0x26,0x24,0x56,0x88,0x7,0x48,0x90,0x48,0xfc,0x24,0xc4,0x24,0xfc,0x90,0xd0,0x90,0xd4,0x94,0xdc,0x0,0xfe,
-+0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,
-+0x10,0x14,0xfe,0x10,0x7c,0x10,0xfe,0x10,0x7f,0x0,0x0,0x3f,0x0,0x0,0x7f,0x0,0x10,0x14,0xfe,0x10,0x7c,0x10,0xfe,0x10,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0x7,0x8,0x1f,0x0,0xff,0x2,0x5,0x19,0x62,0x4,0x19,0x62,0xc,0x72,0x1,0x0,0xf0,0x10,0xe0,0x44,0xfe,0x8,0x10,0xa0,0xc0,0xa0,0x90,0x8e,0x84,0x80,0x0,
-+0x4,0x7,0x8,0x1f,0x0,0xff,0x2,0x22,0x27,0x39,0x21,0x2f,0x29,0x32,0x24,0x8,0x0,0xf0,0x20,0xe0,0x44,0xfe,0x0,0x20,0xe4,0x28,0x30,0xe0,0x22,0xa2,0x5e,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x22,0x22,0x22,0x3f,0x22,0x22,0x22,0x44,0x44,0x88,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x20,0xf0,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x2,0x3f,0x22,0x22,0x22,0x22,0x3e,0x28,0x28,0x24,0x24,0x22,0x41,0x40,0x80,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x7c,0x0,0x28,0x24,0x46,0x82,0x80,0x60,0x1e,0x4,
-+0x0,0x3f,0x20,0x3f,0x22,0x24,0x29,0x32,0x24,0x2d,0x34,0x24,0x44,0x44,0x84,0x5,0x4,0xfe,0x4,0xfc,0x20,0x28,0xfc,0x20,0x20,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x3f,0x20,0x3f,0x20,0x2f,0x2a,0x2a,0x2c,0x2a,0x2a,0x2e,0x4a,0x48,0x88,0x8,0x4,0xfe,0x4,0xfc,0x0,0xfe,0x8,0xe8,0xa8,0xa8,0xa8,0xa8,0xe8,0x8,0x28,0x10,
-+0x3f,0x20,0x3f,0x20,0x27,0x20,0x2f,0x20,0x21,0x3f,0x22,0x24,0x5f,0x44,0x84,0xc,0xfc,0x4,0xfc,0x0,0xe0,0x48,0xfc,0x80,0x80,0x7c,0x8,0x10,0x7e,0x10,0x10,0x30,
-+0x0,0x3f,0x20,0x3f,0x22,0x24,0x28,0x32,0x25,0x2c,0x34,0x24,0x44,0x45,0x86,0x4,0x4,0xfe,0x4,0xfc,0x20,0xbc,0xa0,0xa8,0xfc,0x20,0xa8,0xbc,0xa0,0x60,0x3e,0x0,
-+0x0,0x3f,0x20,0x3f,0x22,0x24,0x28,0x33,0x24,0x2d,0x34,0x27,0x44,0x44,0x84,0x5,0x4,0xfe,0x4,0xfc,0x20,0xa8,0x20,0xfc,0xa8,0x24,0x40,0xfe,0x88,0x70,0x48,0x84,
-+0x3f,0x20,0x3f,0x22,0x2f,0x20,0x27,0x20,0x3f,0x2a,0x3f,0x24,0x5f,0x44,0xbf,0x4,0xfc,0x4,0xfc,0x20,0xf8,0x80,0xf0,0x80,0xfc,0xa8,0x7c,0x10,0x7c,0x10,0xfe,0x10,
-+0x0,0x7d,0x4,0x4,0x4,0x7c,0x43,0x40,0x41,0x7c,0x4,0x4,0x4,0x4,0x2b,0x10,0x8,0xfc,0x8,0x30,0x58,0x86,0x2,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x8,0x7e,0x12,0x22,0x1c,0x14,0x62,0x3f,0x0,0x1f,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0xfc,0x44,0x48,0x30,0x48,0x86,0xf0,0x10,0xf0,0x0,0xf8,0x8,0x8,0x50,0x20,
-+0x0,0x7f,0x5,0x5,0x5,0x7d,0x41,0x41,0x41,0x7d,0x7,0x4,0x4,0x4,0x28,0x10,0x4,0xfe,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0x8,
-+0x14,0x14,0x7f,0x15,0x15,0x7f,0x54,0x54,0x54,0x7f,0x15,0x15,0x15,0x27,0x24,0x44,0x20,0x20,0x3c,0x48,0x90,0x7c,0x54,0x54,0x54,0x7c,0x44,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0xf0,0x1f,0x12,0x12,0x77,0x44,0x44,0x44,0x77,0x14,0x14,0x14,0x17,0xa4,0x40,0x4,0xbe,0xc4,0x4,0x4,0xbc,0xa0,0xa0,0xa4,0xbe,0x84,0x84,0x84,0x84,0xa8,0x10,
-+0x79,0xd,0x79,0x47,0x79,0xd,0x31,0xff,0x0,0xf,0x8,0x3f,0x24,0x2f,0x21,0x21,0x3c,0x44,0x3c,0xe0,0x3c,0x44,0x18,0xfe,0x0,0xe0,0x20,0xf8,0x48,0xe8,0x8,0x18,
-+0x1,0x11,0x11,0x11,0x11,0x1f,0x11,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x26,0x24,0x24,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x11,0x10,0xfc,0x24,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x84,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x17,0x10,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x81,0x2,0x4,0xfe,0x88,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x10,0x11,0x10,0x10,0xfc,0x24,0x27,0x24,0x24,0x44,0x28,0x10,0x28,0x45,0x82,0x4,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x50,0x50,0x50,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x4,0xfe,0x0,0x4,0x84,0x48,0x28,0x10,0x10,0x28,0x44,0x84,0x0,0x4,0xfe,0x0,
-+0x11,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x20,0x20,0x20,0x24,0x2c,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x25,0x26,0x24,0x24,0x45,0x28,0x10,0x28,0x44,0x84,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0x44,0x20,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,
-+0x10,0x10,0x10,0x11,0xfd,0x25,0x25,0x25,0x24,0x44,0x28,0x10,0x29,0x46,0x80,0x0,0x20,0x28,0x3c,0xe0,0x20,0x20,0x20,0xfe,0x22,0x62,0x6a,0xa4,0x20,0x20,0x20,0x20,
-+0x10,0x12,0x11,0x11,0xfc,0x27,0x24,0x24,0x24,0x44,0x28,0x10,0x29,0x45,0x82,0x4,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x4,0x4,0x28,0x10,
-+0x10,0x13,0x10,0x10,0xfc,0x24,0x24,0x25,0x24,0x44,0x28,0x10,0x28,0x44,0x87,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0xfe,0x0,
-+0x10,0x11,0x10,0x10,0xfc,0x24,0x27,0x24,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x0,0xf8,0x8,0x50,0x20,0x20,0xfe,0x22,0x24,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x44,0x84,0x0,0x0,0x8,0x48,0x28,0x28,0x28,0x8,0x8,0x8,0x8,0x48,0x90,0x10,0x28,0x46,0x82,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x28,0x44,0x87,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x27,0x25,0x45,0x29,0x11,0x29,0x45,0x82,0x4,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0xec,0x44,
-+0x2,0x1,0x7f,0x0,0x8,0x4,0xff,0x1,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x0,0x8,0xfc,0x0,0x20,0x44,0xfe,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x18,
-+0x10,0x10,0x17,0x10,0xfc,0x24,0x24,0x26,0x25,0x44,0x28,0x10,0x28,0x44,0x87,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x92,0x94,0x98,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x27,0x24,0x47,0x28,0x10,0x28,0x44,0x81,0x6,0x40,0x40,0x5c,0xe0,0x48,0x52,0x62,0x9e,0x0,0xf8,0x90,0x90,0x90,0x92,0x12,0xe,
-+0x10,0x11,0x11,0x11,0xfd,0x26,0x24,0x27,0x24,0x44,0x28,0x10,0x29,0x46,0x84,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x70,0xa8,0xa8,0x24,0x22,0x20,0x20,
-+0x2,0x1,0x7f,0x4,0x14,0x24,0x44,0x5,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x0,0x8,0xfc,0x40,0x50,0x4c,0x44,0x40,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x18,
-+0x10,0x10,0x10,0x13,0xfc,0x24,0x25,0x26,0x24,0x44,0x28,0x10,0x28,0x44,0x81,0x6,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x11,0x10,0x10,0x13,0xfc,0x24,0x24,0x24,0x27,0x44,0x28,0x10,0x28,0x44,0x81,0x2,0x4,0x88,0x0,0xfe,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x10,0x10,0x13,0x12,0xfc,0x24,0x25,0x24,0x24,0x47,0x28,0x10,0x28,0x44,0x84,0x0,0x40,0x20,0xfe,0x2,0x4,0x38,0xc0,0x40,0x44,0xfe,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x44,0x28,0x11,0x28,0x44,0x87,0x0,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x24,0x27,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x20,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x0,0xfe,0x80,0xfc,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x24,0x27,0x4a,0x2a,0x12,0x2a,0x46,0x82,0x2,0x4,0xfe,0x4,0x4,0x4,0xfc,0x24,0x20,0xfe,0x22,0x22,0x52,0x8a,0x2,0xa,0x4,
-+0x11,0x10,0x10,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x4,0xbe,0x84,0x24,0x24,0x24,0xfc,0x24,0x74,0x6c,0xac,0x24,0x24,0x4,0x14,0x8,
-+0x10,0x8,0x41,0x25,0x9,0x72,0x10,0x17,0x1,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x40,0x40,0x50,0x4c,0x44,0x50,0xe0,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x18,
-+0x10,0x10,0x10,0x11,0xfc,0x24,0x25,0x25,0x25,0x45,0x28,0x10,0x28,0x45,0x82,0x0,0x88,0x48,0x10,0xfc,0x24,0x24,0xfc,0x20,0x20,0xfe,0x62,0x62,0xaa,0x24,0x20,0x20,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x82,0x4,0x4,0xfe,0x4,0x4,0xfc,0x0,0xc,0xf0,0x20,0xfc,0x20,0xfe,0x20,0x22,0x22,0x1e,
-+0x20,0x27,0x24,0x25,0xf5,0x56,0x55,0x55,0x55,0x95,0x55,0x27,0x25,0x54,0x94,0x4,0x0,0x84,0xfe,0x4,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x10,0xfd,0x24,0x27,0x24,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x10,0xfc,0x25,0x24,0x24,0x27,0x44,0x28,0x11,0x2a,0x44,0x80,0x0,0x20,0x24,0xfe,0x20,0x20,0xfc,0x20,0x24,0xfe,0x40,0xa4,0xa8,0x90,0x88,0xc6,0x80,
-+0x20,0x20,0x27,0x20,0xfb,0x48,0x4f,0x48,0x4b,0x90,0x52,0x22,0x23,0x52,0x84,0x8,0x40,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x40,0x48,0x7c,0x40,0xc0,0x60,0x1e,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x24,0x27,0x4a,0x2a,0x13,0x2a,0x46,0x83,0x2,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x44,0x28,0x13,0x28,0x44,0x80,0x0,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x50,0x94,0xfe,0x10,0x10,0x10,0x10,
-+0x11,0x10,0x10,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x28,0x13,0x28,0x44,0x84,0x0,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20,
-+0x10,0x10,0xfe,0x12,0x34,0xc,0x32,0xc1,0x3f,0x21,0x22,0x24,0x21,0x22,0x24,0x20,0x0,0x0,0xfc,0x8,0x50,0x20,0xd8,0x6,0xf8,0x8,0x88,0x48,0x8,0x88,0x48,0x18,
-+0x20,0x23,0x22,0x22,0xfb,0x4a,0x4a,0x4b,0x48,0x97,0x54,0x24,0x24,0x54,0x8f,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xa4,0xfe,0x0,
-+0x10,0x10,0x13,0x11,0xfc,0x25,0x24,0x27,0x24,0x44,0x28,0x11,0x2a,0x44,0x84,0x3,0x8,0x1c,0xe0,0x24,0xa8,0xfc,0x40,0xfe,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x13,0x10,0xfd,0x25,0x25,0x24,0x27,0x4a,0x29,0x10,0x28,0x44,0x84,0x0,0x40,0x24,0xfe,0x0,0xfc,0x4,0xfc,0x0,0xfe,0x2,0xfc,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x7f,0x12,0xc,0x7f,0x15,0x24,0x4c,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x40,0x44,0x7e,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x10,0x13,0x10,0xfd,0x24,0x27,0x24,0x25,0x45,0x29,0x11,0x2b,0x45,0x85,0x1,0x88,0x88,0xfe,0x88,0xfc,0x88,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfe,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x10,0xfc,0x25,0x25,0x25,0x25,0x45,0x28,0x13,0x28,0x44,0x84,0x3,0x88,0x88,0xfe,0x88,0x88,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x81,0x0,0x20,0x44,0xfe,0x54,0x24,0x54,0x4,0xfc,0x10,0x12,0xd4,0x18,0x12,0x52,0x8e,0x0,
-+0x20,0x23,0x21,0x20,0xfb,0x4a,0x4c,0x4b,0x48,0x88,0x51,0x22,0x24,0x50,0x88,0x3,0x1c,0xe0,0x24,0xa8,0xfe,0x42,0x44,0xfe,0x80,0x80,0xfc,0x88,0x50,0x20,0xd8,0x6,
-+0x10,0x10,0x13,0x12,0xfc,0x24,0x24,0x24,0x24,0x44,0x28,0x13,0x28,0x44,0x85,0x2,0x40,0x20,0xfe,0x2,0x1c,0xe0,0x80,0xfc,0x88,0x88,0x88,0xfe,0x0,0x88,0x6,0x2,
-+0x10,0x11,0x11,0x11,0xfc,0x27,0x24,0x24,0x25,0x45,0x29,0x11,0x28,0x44,0x85,0x0,0x20,0x24,0x24,0xfc,0x20,0xfe,0x0,0x24,0xfe,0x24,0x24,0xfc,0x20,0x24,0xfe,0x2,
-+0x4,0x3f,0x4,0x7f,0xe,0x15,0x24,0x3f,0x21,0x21,0x3f,0x22,0x26,0x41,0x46,0x98,0x20,0x24,0x3e,0xe8,0x10,0x28,0x44,0xfe,0x0,0x4,0xfe,0x10,0x20,0xc0,0x30,0x8,
-+0x20,0x23,0x20,0x21,0xf9,0x4f,0x49,0x49,0x49,0x89,0x51,0x20,0x22,0x52,0x88,0x0,0x8,0xfc,0x20,0x3c,0x20,0xfe,0x0,0x8,0xfc,0x0,0xfe,0x2,0xaa,0xaa,0x2,0xc,
-+0x10,0x10,0x11,0x10,0xfd,0x24,0x27,0x24,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x20,0x28,0xfc,0x20,0x24,0xa8,0xfe,0x0,0xfc,0x4,0x74,0x54,0x74,0x4,0xfc,0x4,
-+0x10,0x13,0x10,0x10,0xfd,0x25,0x25,0x25,0x24,0x45,0x28,0x13,0x28,0x45,0x82,0x0,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x24,0x22,0x20,
-+0x10,0x11,0x10,0x13,0xfe,0x24,0x24,0x24,0x24,0x44,0x29,0x11,0x29,0x45,0x84,0x0,0x20,0x24,0xa8,0xfe,0x2,0xfc,0x88,0x88,0xf8,0x20,0xfc,0x24,0x24,0x2c,0x20,0x20,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x24,0x24,0x25,0x44,0x28,0x11,0x28,0x45,0x86,0x0,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x40,0x84,0xf8,0x20,0x48,0xfc,0xa8,0x26,0x22,0x60,
-+0x10,0x11,0x10,0x10,0xff,0x24,0x25,0x25,0x25,0x45,0x29,0x10,0x2b,0x44,0x84,0x0,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20,
-+0x10,0x13,0x10,0x11,0xfc,0x25,0x25,0x25,0x24,0x47,0x28,0x11,0x29,0x45,0x85,0x1,0x20,0xfe,0x20,0xfc,0x0,0xfc,0x4,0xfc,0x88,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x10,0x11,0xfd,0x25,0x25,0x25,0x24,0x45,0x29,0x11,0x29,0x45,0x84,0x3,0x20,0xfe,0x0,0xfc,0x54,0x74,0x54,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0xfe,
-+0x0,0x3e,0x23,0x3e,0x20,0x3f,0x52,0x52,0x9e,0x1,0xff,0x4,0xc,0x3,0x4,0x18,0x40,0x20,0xfc,0x88,0x50,0xfc,0x20,0xf8,0x20,0x20,0xfe,0x20,0x40,0x80,0x60,0x10,
-+0x2,0xfa,0xaa,0xaa,0xff,0xaa,0xaa,0xfa,0x22,0xfa,0x2a,0x2a,0x49,0x4a,0xac,0x10,0x0,0x3e,0x2a,0xaa,0xfe,0xaa,0xaa,0xbe,0x88,0xbe,0x8a,0x8a,0x12,0x92,0x6a,0x4,
-+0x40,0x40,0x47,0x44,0xf4,0x57,0x54,0x55,0x56,0x94,0x54,0x25,0x24,0x54,0x89,0x10,0x40,0x24,0xfe,0x88,0x88,0xfe,0x88,0xdc,0xaa,0x40,0x90,0x20,0x48,0x84,0xfc,0x4,
-+0x20,0x21,0x20,0x23,0xfa,0x4c,0x49,0x49,0x4f,0x89,0x53,0x23,0x25,0x55,0x89,0x1,0x8,0xfc,0x20,0xfe,0xaa,0x70,0xa8,0x20,0xfc,0x24,0x3c,0xa4,0x7c,0x24,0x3c,0x24,
-+0x0,0x3f,0x4,0x4,0x4,0x8,0x8,0x11,0x21,0x49,0x89,0x11,0x11,0x21,0x5,0x2,0x0,0xf0,0x10,0x24,0x7e,0x4,0x4,0x14,0x8,0x0,0x20,0x10,0x10,0xc,0x4,0x0,
-+0x1,0x9,0x9,0x11,0x23,0x0,0x1,0xff,0x2,0xc,0x31,0xc9,0x9,0x11,0x25,0x2,0x0,0x20,0x10,0x8,0x8,0x0,0x4,0xfe,0x80,0x60,0x1e,0x24,0x20,0x18,0x8,0x0,
-+0x0,0x0,0x3f,0x0,0x11,0x9,0x3f,0x0,0x0,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x10,0x78,0x80,0x10,0x10,0x20,0xf0,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0xfe,0x12,0x34,0xc,0x32,0xc1,0x1f,0x0,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x8,0x50,0x20,0xd8,0x6,0xe0,0x40,0x84,0xfe,0x0,0x0,0x0,0x0,
-+0x4,0xff,0x8,0x12,0x3c,0x8,0x14,0x3e,0x0,0x1f,0x0,0x1,0xff,0x1,0x5,0x2,0x40,0xfe,0x20,0x48,0xf0,0x20,0x50,0xf8,0x0,0xe0,0x40,0x84,0xfe,0x0,0x0,0x0,
-+0x0,0x3f,0x0,0x0,0x1,0x1,0x1,0x1,0x7,0x19,0x61,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x20,0x40,0x80,0xc,0x30,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x0,0x0,0x11,0x9,0x5,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x80,0x40,0x30,0xc,0x0,0x0,0x0,
-+0x0,0x0,0xfc,0x5,0xa,0x10,0x13,0x1e,0x32,0xd3,0x12,0x12,0x12,0x12,0x51,0x20,0x80,0x80,0x88,0xfc,0x8,0x8,0xe8,0x28,0x28,0xe8,0x8,0x28,0x12,0x2,0xfe,0x0,
-+0x8,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x17,0x8,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x8,0x0,0x4,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x9c,0x4,0x4,0xfc,0x4,0x0,
-+0x8,0xfc,0x8,0x49,0x49,0x4b,0x4d,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x8,0xfc,0x8,0x49,0x4a,0x48,0x4b,0x48,0x7c,0x4,0x5,0x1c,0xe4,0x4,0x17,0x8,0x80,0x80,0xf8,0x8,0x10,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xfd,0x8,0x48,0x48,0x48,0x48,0x4b,0x7c,0x5,0x4,0x1c,0xe7,0x4,0x14,0x8,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x10,0x10,0xfe,0x12,0x34,0xc,0x32,0xc1,0x1f,0x0,0x8,0xf,0x0,0x7f,0x0,0x0,0x0,0x0,0xfc,0x8,0x50,0x20,0xd8,0x6,0xe0,0x20,0x24,0xfe,0x4,0xf4,0x14,0x8,
-+0x8,0xfc,0x8,0x48,0x49,0x4b,0x48,0x48,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0x20,0x20,0x40,0x88,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xfc,0x8,0x4b,0x48,0x48,0x48,0x4b,0x7c,0x7,0x4,0x1c,0xe4,0x5,0x15,0xa,0x80,0x80,0xbc,0xc0,0x50,0x24,0xd4,0xc,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,
-+0x8,0xfc,0x9,0x49,0x4b,0x4d,0x49,0x49,0x7d,0x4,0x7,0x1c,0xe4,0x4,0x14,0x8,0xa0,0xa0,0x24,0x28,0x30,0x60,0xa2,0x1e,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x9,0xfc,0x8,0x4b,0x48,0x48,0x48,0x48,0x7f,0x4,0x4,0x1c,0xe4,0x4,0x15,0xa,0x4,0x88,0x50,0xfe,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x0,0xfb,0x8,0x48,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x8,0x4,0xfe,0x0,0x0,0xdc,0x54,0x54,0x54,0xdc,0x54,0x54,0x54,0x54,0x54,0x54,0x0,
-+0x8,0xfc,0xb,0x48,0x48,0x48,0x48,0x48,0x7c,0x4,0x4,0x1f,0xe4,0x4,0x15,0xa,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0xfe,0x0,0x88,0x6,0x2,
-+0x8,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7c,0x7,0x4,0x1c,0xe5,0x6,0x14,0x8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20,0x20,
-+0x8,0xfc,0x9,0x49,0x4b,0x4d,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0xa0,0x90,0x4,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x8,0xfc,0x9,0x4b,0x48,0x4f,0x48,0x49,0x7e,0x5,0x4,0x1c,0xe5,0x4,0x14,0xb,0x40,0x80,0x8,0xfc,0x44,0xfe,0x90,0x28,0x46,0x90,0x20,0x44,0x88,0x30,0xc0,0x0,
-+0x0,0x79,0x49,0x57,0x48,0x69,0x56,0x41,0x5f,0x0,0x8,0xf,0x0,0x7f,0x0,0x0,0x40,0x7c,0x40,0xfe,0x48,0x50,0x60,0x80,0xe0,0x20,0x24,0xfe,0x4,0xf4,0x14,0x8,
-+0x0,0xfe,0x14,0x8,0xfe,0x1a,0x28,0x49,0x1f,0x0,0x8,0xf,0x0,0x7f,0x0,0x0,0x80,0x88,0xfc,0x88,0x50,0x20,0xd0,0xe,0xe0,0x20,0x24,0xfe,0x4,0xf4,0x14,0x8,
-+0x8,0x7e,0x8,0x7e,0x8,0xff,0x10,0x3e,0x42,0x9f,0x0,0x8,0xf,0x0,0x7f,0x0,0x40,0x44,0xfe,0x88,0x50,0x20,0x58,0x86,0x0,0xf0,0x10,0x14,0xfe,0x4,0xf4,0x8,
-+0x8,0xff,0xa,0x4a,0x4a,0x4b,0x4a,0x48,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0x40,0xbe,0x12,0x12,0x92,0x2a,0x44,0x0,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x16,0x8,0x20,0x10,0xfe,0x2,0xfe,0x0,0xee,0x22,0x22,0xaa,0x66,0x66,0xaa,0x22,0xaa,0x44,
-+0x8,0xfd,0x8,0x48,0x49,0x49,0x49,0x49,0x7c,0x5,0x4,0x1f,0xe4,0x5,0x16,0x8,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x26,0x22,0x60,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x4,0x1c,0xe5,0x6,0x14,0x8,0x20,0x44,0xfe,0x44,0x74,0x54,0xb4,0x24,0x44,0xfc,0x0,0xa0,0xa4,0x8a,0x88,0x78,
-+0x13,0xfa,0x13,0x52,0x52,0x52,0x53,0x52,0x7a,0xb,0xa,0x3a,0xcb,0xa,0x2c,0x11,0xfc,0x4,0xfc,0x0,0xf8,0x10,0xfe,0x20,0x60,0xdc,0x44,0x88,0xfe,0x88,0x88,0x98,
-+0x8,0xfd,0x8,0x4b,0x48,0x49,0x49,0x49,0x7d,0x5,0x4,0x1d,0xe4,0x7,0x14,0x9,0x50,0xdc,0x50,0xde,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x88,0xfc,0x88,0xfe,0x88,0x4,
-+0x10,0xff,0x10,0x57,0x54,0x57,0x51,0x53,0x79,0xb,0x9,0x3f,0xc9,0xb,0x2d,0x11,0x40,0xfe,0x0,0xbc,0xa4,0xbc,0x10,0xf8,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4,
-+0x8,0x8,0x10,0x12,0x24,0x7c,0x8,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x10,0x11,0x22,0x7e,0x8,0x13,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x8,0x8,0x10,0x12,0x24,0x7d,0x8,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x28,0x10,
-+0x8,0x8,0x10,0x12,0x25,0x7c,0x9,0x10,0x20,0x7e,0x20,0x0,0xf,0x71,0x20,0x0,0x80,0x80,0x84,0xfe,0x0,0x0,0xf8,0x8,0x10,0x20,0x40,0x80,0x2,0x2,0xfe,0x0,
-+0x8,0x8,0x10,0x12,0x25,0x7c,0x8,0x11,0x20,0x7e,0x20,0x0,0xe,0x71,0x21,0x2,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xc8,0x48,0xa8,0x88,0x8a,0xa,0xa,0x4,
-+0x8,0x8,0x10,0x13,0x25,0x7d,0x9,0x11,0x21,0x7d,0x21,0x1,0xe,0x72,0x24,0x8,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x11,0x12,0x24,0x7c,0xb,0x10,0x20,0x7e,0x20,0x0,0xe,0x71,0x21,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x80,0x80,0x88,0x4,0xfc,0x4,
-+0x9,0x9,0x11,0x13,0x25,0x7d,0x9,0x11,0x21,0x7f,0x21,0x1,0xf,0x71,0x21,0x0,0x20,0x20,0x20,0x20,0x24,0x2c,0xf0,0x20,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0,
-+0x8,0x9,0x10,0x10,0x24,0x7c,0x9,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x8,0xfc,0x8,0x50,0x20,0x10,0xfe,0x22,0x24,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x8,0x8,0x10,0x12,0x27,0x7c,0x8,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x10,0x11,0x21,0x25,0x49,0xff,0x11,0x21,0x41,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x0,0x48,0x48,0x48,0x48,0x48,0xfe,0x48,0x48,0x48,0x48,0x48,0x78,0x0,0x0,0xfc,0x0,
-+0x10,0x10,0x20,0x24,0x4f,0xf8,0x10,0x21,0x41,0xfd,0x42,0x2,0x1c,0xe4,0x48,0x13,0xa0,0x90,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x8,0x90,0x60,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x20,0x25,0x4a,0xf8,0x13,0x20,0x40,0xfc,0x41,0x0,0x1c,0xe0,0x43,0x0,0x80,0x80,0xf8,0x8,0x10,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x20,0x27,0x48,0xf8,0x13,0x22,0x46,0xfb,0x40,0x0,0x1c,0xe1,0x41,0x2,0x90,0x90,0x94,0xfe,0x94,0x94,0xfc,0x90,0x90,0xfe,0x92,0x92,0x9a,0x14,0x10,0x10,
-+0x8,0x8,0x11,0x11,0x25,0x7d,0x9,0x10,0x21,0x7d,0x21,0x1,0xd,0x71,0x20,0x0,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,
-+0x10,0x10,0x20,0x20,0x48,0xf9,0x13,0x20,0x40,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x27,0x24,0x48,0xf9,0x13,0x24,0x43,0xfd,0x41,0x0,0x1c,0xe0,0x40,0x0,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xf8,0x6,0xfc,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x10,0x10,0x21,0x25,0x7f,0xf8,0x11,0x23,0x45,0xf9,0x41,0x1,0x1d,0xe1,0x41,0x1,0x80,0x88,0x7c,0x0,0xff,0x84,0xfe,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x11,0x11,0x23,0x24,0x40,0xf8,0x11,0x26,0x43,0xfa,0x42,0x7,0x18,0xe0,0x40,0x0,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x58,0x46,0xf8,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,
-+0x10,0x17,0x20,0x23,0x4a,0xfa,0x13,0x22,0x42,0xfb,0x42,0x1,0x18,0xe1,0x42,0x4,0x4,0xfe,0x40,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x40,0x80,0x60,0x1e,0x4,
-+0x8,0x9,0x10,0x10,0x24,0x7d,0x9,0x11,0x21,0x7f,0x21,0x1,0xf,0x71,0x21,0x1,0x20,0x24,0xa8,0xb0,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x12,0x11,0x20,0x27,0x48,0xf8,0x13,0x22,0x42,0xfb,0x40,0x4,0x19,0xe2,0x44,0x8,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0xc4,0x54,0x48,0x40,0x40,
-+0x10,0x10,0x21,0x24,0x48,0xfb,0x10,0x21,0x42,0xfc,0x40,0x1,0x1c,0xe0,0x41,0x6,0x20,0x28,0xfc,0x20,0x24,0xfe,0x88,0x46,0x7a,0x88,0x90,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x27,0x20,0x48,0xf9,0x17,0x20,0x43,0xfa,0x42,0x2,0x1b,0xe2,0x40,0x0,0x40,0x48,0xfc,0x40,0xb0,0x14,0xfe,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x10,0x10,0x20,0x23,0x48,0xf8,0x10,0x23,0x40,0xfc,0x40,0x3,0x1c,0xe0,0x40,0x0,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0x50,
-+0x10,0x12,0x21,0x21,0x48,0xff,0x14,0x24,0x45,0xfd,0x45,0x5,0x1d,0xe4,0x44,0x4,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x8,0x9,0x11,0x13,0x25,0x7d,0x9,0x11,0x20,0x7d,0x21,0x1,0xd,0x71,0x21,0x1,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x10,0x12,0x16,0xd8,0x10,0x52,0x92,0xe,
-+0x10,0x13,0x20,0x2f,0x49,0xf9,0x11,0x27,0x41,0xf9,0x41,0x7,0x18,0xe0,0x47,0x0,0x18,0xe0,0x44,0xfe,0x50,0x50,0x50,0xfc,0x50,0x50,0x54,0xfe,0x40,0x48,0xfc,0x0,
-+0x10,0x17,0x20,0x22,0x41,0xf7,0x14,0x28,0x41,0xfc,0x41,0x0,0x1c,0xe0,0x41,0x6,0x1c,0xe0,0x0,0x48,0x50,0xfe,0x2,0x4,0xf0,0x10,0x10,0xa0,0x40,0xa0,0x1e,0x4,
-+0x11,0x11,0x21,0x25,0x4a,0xfb,0x14,0x21,0x42,0xfc,0x41,0x1,0x1d,0xe1,0x41,0x1,0x10,0x10,0xd0,0x58,0x56,0x52,0x90,0x50,0x3e,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x12,0x21,0x20,0x47,0xf8,0x1f,0x20,0x41,0xfb,0x45,0x1,0x1d,0xe1,0x41,0x0,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0xfe,0x14,0x10,0x50,0x24,0x4,0xfc,
-+0x10,0x10,0x24,0x27,0x4c,0xf3,0x12,0x22,0x43,0xfe,0x43,0x2,0x1e,0xe2,0x43,0x2,0x80,0x40,0x40,0xfe,0x2,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x11,0x11,0x22,0x24,0x4a,0xf9,0x11,0x20,0x47,0xfc,0x44,0x7,0x1c,0xe4,0x47,0x4,0x24,0x24,0x48,0x90,0x48,0x24,0x24,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x11,0x11,0x2f,0x21,0x49,0xf8,0x13,0x22,0x42,0xfb,0x40,0x7,0x18,0xe0,0x40,0x0,0x10,0x14,0xfe,0x10,0xf0,0x40,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0x40,0x40,0x40,
-+0x11,0x11,0x21,0x21,0x4f,0xf9,0x13,0x23,0x45,0xfd,0x49,0x1,0x1d,0xe1,0x41,0x1,0x0,0x4,0x3e,0x24,0xe4,0x24,0x3c,0xa4,0x64,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,
-+0x13,0x12,0x22,0x23,0x4a,0xfa,0x13,0x20,0x47,0xf8,0x2,0x2,0x1a,0xe3,0x44,0x18,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x40,0x48,0x7c,0x40,0x40,0xc6,0x3c,
-+0x10,0x10,0x27,0x24,0x4c,0xfc,0x17,0x24,0x44,0xff,0x44,0x4,0x1c,0xe7,0x44,0x1,0x10,0x90,0xd0,0x90,0xb8,0xb6,0xd2,0x90,0x94,0x94,0x98,0x88,0x90,0xa0,0x40,0x80,
-+0x10,0x10,0x23,0x22,0x4b,0xf8,0x17,0x20,0x43,0xfa,0x42,0x2,0x1a,0xe0,0x41,0x6,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x0,0xf8,0x8,0x48,0x48,0x88,0xb0,0xc,0x4,
-+0x10,0x10,0x23,0x22,0x4a,0xfb,0x12,0x22,0x43,0xf8,0x41,0x5,0x1d,0xe5,0x48,0x0,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0x40,0x24,0x2,0xa,0xf8,0x0,
-+0x12,0x13,0x22,0x25,0x4d,0xf5,0x15,0x25,0x45,0xfd,0x44,0x4,0x1c,0xe4,0x44,0x7,0x4,0xfe,0x20,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0xa0,0xa0,0x40,0x60,0x98,0x6,
-+0x11,0x11,0x21,0x22,0x4b,0xf6,0x1a,0x22,0x43,0xfa,0x43,0x2,0x1a,0xe2,0x42,0x3,0x8,0x7c,0x8,0x8,0xfe,0x40,0x48,0xfc,0x20,0x24,0xfe,0x20,0x20,0x50,0x8e,0x4,
-+0x10,0x14,0x22,0x22,0x48,0xf8,0x16,0x22,0x42,0xfa,0x42,0x2,0x1a,0xe5,0x48,0x0,0x20,0x48,0xfc,0x88,0x88,0x88,0xf8,0x80,0xf8,0x88,0x88,0x88,0xf8,0x0,0x86,0x7c,
-+0x10,0x13,0x22,0x27,0x4a,0xfb,0x12,0x22,0x43,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x8,0xfc,0x8,0xf8,0x40,0xfc,0x20,0x92,0xe,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x10,0x13,0x20,0x22,0x49,0xf8,0x17,0x20,0x41,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x8,0xfc,0x90,0x94,0x98,0x90,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x27,0x20,0x4b,0xfa,0x13,0x22,0x43,0xfa,0x43,0x2,0x1f,0xe1,0x42,0x4,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x10,0x17,0x24,0x25,0x4c,0xf7,0x15,0x25,0x45,0xfc,0x47,0x4,0x1c,0xe4,0x48,0x0,0x4,0xfe,0x0,0xf8,0x0,0xfe,0x48,0x30,0x8e,0x10,0xfe,0x90,0x50,0x10,0x50,0x20,
-+0x10,0x10,0x27,0x20,0x49,0xf9,0x11,0x20,0x43,0xfa,0x42,0x2,0x1a,0xe2,0x42,0x2,0x40,0x24,0xfe,0x0,0xf8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x94,0x94,0xf4,0x14,0x8,
-+0x10,0x10,0x2f,0x21,0x4a,0xfa,0x12,0x23,0x40,0xff,0x44,0x4,0x1d,0xe4,0x44,0x4,0x80,0x44,0xfe,0x10,0xa8,0x48,0xa8,0xf8,0x44,0xfe,0x44,0x94,0xf4,0x4,0x14,0x8,
-+0x10,0x12,0x21,0x20,0x4b,0xf8,0x11,0x22,0x44,0xfb,0x42,0x2,0x1a,0xe2,0x4f,0x0,0x0,0x8,0x10,0x0,0xfc,0x0,0x10,0x8,0x4,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x11,0x10,0x2f,0x20,0x4b,0xf8,0x17,0x20,0x40,0xfb,0x40,0x1,0x1a,0xe4,0x48,0x0,0x10,0xa4,0xfe,0xa0,0xf8,0xa8,0xfe,0xa8,0xa8,0xf8,0xa0,0xb0,0xa8,0xae,0xa4,0xa0,
-+0x10,0x10,0x27,0x24,0x48,0xf9,0x11,0x21,0x41,0xf9,0x41,0x7,0x18,0xe1,0x42,0x4,0x40,0x20,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x17,0x20,0x28,0x4f,0xf4,0x14,0x27,0x40,0xfb,0x40,0xf,0x19,0xe2,0x45,0x0,0x8,0xfc,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0x80,
-+0x13,0x12,0x23,0x22,0x4b,0xf8,0x17,0x24,0x47,0xf8,0x43,0x2,0x19,0xe0,0x43,0xc,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfc,0xa4,0xfc,0x0,0xf8,0x8,0xb0,0x40,0xb0,0xe,
-+0x10,0x17,0x24,0x2f,0x54,0xf7,0x14,0x21,0x43,0xf8,0x40,0x7,0x19,0xe2,0x45,0x0,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x84,0x10,0xe0,0x40,0x88,0xfc,0x50,0x4c,0x44,0x80,
-+0x10,0x17,0x24,0x22,0x4a,0xf4,0x10,0x20,0x41,0xfa,0x45,0x0,0x19,0xe0,0x40,0x7,0x4,0xbe,0xa4,0x94,0x94,0xa4,0x50,0x88,0x24,0x42,0x90,0x60,0x88,0x30,0xc0,0x0,
-+0x12,0x12,0x24,0x22,0x4a,0xf7,0x14,0x27,0x44,0xf7,0x40,0xf,0x18,0xe1,0x46,0x0,0x48,0x48,0x90,0x48,0x48,0xfc,0x44,0xfc,0x44,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x40,
-+0x12,0x12,0x22,0x2f,0x42,0xfa,0x17,0x20,0x47,0xfd,0x45,0x5,0x1d,0xe7,0x40,0x0,0x4,0xfe,0x10,0xa4,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x28,0x26,0xc2,
-+0x10,0x10,0x2f,0x20,0x4a,0xf9,0x13,0x22,0x43,0xfa,0x43,0x1,0x1a,0xe4,0x41,0x0,0x40,0x44,0xfe,0xa0,0xa8,0x10,0xfe,0xc,0xf8,0x8,0xf8,0x50,0x4c,0x44,0x40,0x80,
-+0x12,0x11,0x27,0x24,0x4d,0xfc,0x17,0x24,0x43,0xfa,0x42,0x3,0x1a,0xe2,0x43,0x2,0x8,0x10,0xfc,0x44,0x54,0x44,0xfc,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x1f,0x20,0x27,0x4c,0xff,0x14,0x27,0x40,0xff,0x44,0x7,0x1c,0xe7,0x40,0xf,0x4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xfe,
-+0x10,0x11,0x25,0x23,0x4a,0xf9,0x10,0x2e,0x42,0xfa,0x42,0x2,0x1a,0xe5,0x48,0x0,0x24,0xfe,0x24,0xfc,0x20,0xfe,0x0,0xf8,0x88,0xf8,0x80,0xf8,0x88,0xf8,0x86,0x7c,
-+0x10,0x11,0x21,0x25,0x49,0xf8,0x17,0x24,0x44,0xff,0x40,0x7,0x18,0xe1,0x46,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0xbc,0xa4,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x40,
-+0x10,0x13,0x22,0x26,0x4b,0xf8,0x17,0x20,0x43,0xfa,0x43,0x1,0x1b,0xe5,0x49,0x1,0x8,0xfc,0xa8,0xa8,0xf8,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x44,0x48,0x30,0x8e,0x4,
-+0x11,0x15,0x27,0x29,0x47,0xfb,0x15,0x29,0x43,0xfa,0x42,0x2,0x1a,0xe0,0x41,0x6,0x8,0x28,0xbc,0x48,0xbe,0x18,0x2a,0x4e,0xf8,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x0,0x2,0x2,0x4,0x4,0x8,0x10,0x3f,0x0,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x20,0xc0,0x80,0x0,0x0,0x0,0x20,0x10,0xf8,0x8,
-+0x11,0x25,0x79,0x11,0x29,0x7d,0x1,0xff,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x40,0x3,0x10,0x24,0x78,0x10,0x28,0x7c,0x10,0xfe,0x80,0x88,0x48,0x50,0x50,0x22,0xd2,0xe,
-+0x0,0x0,0x4,0x4,0x4,0x9,0x9,0x12,0x9,0x9,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x90,0x90,0x90,0x20,0x20,0x40,0x20,0x20,0x90,0x90,0x90,0x0,0x0,0x0,
-+0x11,0x11,0x22,0x44,0x22,0x11,0x11,0x0,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x20,0x10,0x10,0x20,0x40,0x20,0x10,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x21,0x42,0x21,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x21,0x21,0x3f,0x20,0x20,0x1f,0x84,0x8,0x10,0x8,0x88,0xf0,0x10,0xf0,0x8,0xfc,0x8,0x8,0xf8,0xa,0x2,0xfe,
-+0x0,0x8,0x7d,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x10,0x1c,0x70,0x21,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x9,0x7d,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x1e,0x72,0x24,0x8,0x10,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x8,0x7c,0x13,0x10,0x10,0x7d,0x10,0x10,0x17,0x10,0x1c,0x70,0x20,0x0,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40,
-+0x0,0x8,0x7c,0x10,0x11,0x12,0x7c,0x13,0x10,0x10,0x10,0x1c,0x71,0x21,0x2,0x4,0x10,0x90,0x90,0x90,0x8,0x4,0x2,0xf8,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x0,0x8,0x7c,0x17,0x10,0x11,0x7d,0x11,0x10,0x10,0x10,0x1c,0x71,0x22,0x4,0x8,0x80,0x40,0x24,0xfe,0x8,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0xb,0x7c,0x10,0x10,0x10,0x7c,0x13,0x10,0x10,0x10,0x10,0x1c,0x70,0x27,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x50,0x48,0x48,0x40,0xfe,0x0,
-+0x0,0x8,0x7f,0x10,0x10,0x11,0x11,0x7d,0x11,0x11,0x11,0x1d,0x70,0x20,0x0,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x8,0x8,0x8,0x28,0x10,
-+0x0,0x8,0x7c,0x10,0x17,0x10,0x7c,0x10,0x11,0x11,0x11,0x1e,0x72,0x24,0x8,0x10,0x80,0xa0,0x98,0x88,0xfe,0xa0,0xa0,0xa4,0x24,0x28,0x30,0x20,0x62,0xa2,0x1e,0x0,
-+0x0,0x8,0x7c,0x10,0x10,0x10,0x7c,0x10,0x11,0x11,0x11,0x1d,0x71,0x21,0x1,0x1,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x8,0xfc,0x21,0x21,0x23,0xfd,0x21,0x21,0x21,0x25,0x39,0xe1,0x41,0x1,0x1,0xa0,0xa8,0xa4,0x24,0x20,0x3e,0xe0,0x20,0x20,0x20,0x10,0x10,0x12,0xa,0xa,0x4,
-+0x0,0x8,0x7c,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x11,0x1d,0x71,0x21,0x1,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x9,0x7d,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x11,0x1d,0x71,0x21,0x1,0x4,0xfe,0x4,0x4,0xfc,0x24,0x20,0x24,0xfe,0x20,0x20,0x10,0x10,0x4a,0x8a,0x6,
-+0x2,0x12,0xfa,0x2f,0x22,0x22,0xfa,0x22,0x22,0x22,0x22,0x3a,0xe4,0x4a,0x11,0x0,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0xa4,0x0,0x0,
-+0x0,0xb,0x7d,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x1d,0x73,0x20,0x0,0x0,0x4,0xfe,0x8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xe,0xf8,0x8,0x8,0x8,
-+0x1,0x11,0xf9,0x21,0x27,0x21,0xf9,0x21,0x21,0x21,0x2f,0x20,0x39,0xe2,0x44,0x8,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,0x10,0x8,0x4,0x4,
-+0x0,0xb,0x7c,0x10,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x1d,0x70,0x20,0x0,0x3,0x4,0xfe,0x20,0x40,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x0,0x17,0xf8,0x22,0x22,0x24,0xf7,0x21,0x21,0x22,0x2a,0x34,0xe4,0x4a,0x1,0x0,0x0,0xc0,0xbe,0xa2,0xa4,0xa4,0xe8,0xa4,0xa4,0xa2,0xa2,0xa2,0xb4,0xa8,0x20,0x20,
-+0x1,0x11,0xfa,0x24,0x29,0x21,0xfa,0x26,0x2a,0x22,0x22,0x3a,0xe2,0x42,0x2,0x2,0x0,0x8,0x7c,0x0,0x0,0x4,0xfe,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x1,0x11,0xf9,0x25,0x23,0x21,0xf9,0x21,0x23,0x2d,0x21,0x39,0xe2,0x42,0x4,0x18,0x20,0x20,0x24,0x2c,0x30,0x20,0x20,0x30,0x2c,0x24,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0x11,0xf9,0x22,0x25,0x20,0xf8,0x20,0x23,0x2c,0x23,0x3a,0xe2,0x42,0x3,0x2,0x0,0x0,0xfc,0x8,0x10,0xa0,0x40,0xa0,0x18,0x6,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x1f,0x21,0x49,0x11,0x23,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0x8,0xfc,0x8,0x20,0x18,0x8,0x0,0xfc,0x0,0x10,0xf8,0x40,0x24,0xfe,0x0,
-+0x0,0x13,0xfa,0x24,0x23,0x20,0xf8,0x21,0x23,0x20,0x28,0x37,0xe0,0x40,0x0,0x0,0x0,0xfe,0x42,0x44,0xfc,0x80,0xa0,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x14,0xfa,0x21,0x20,0x26,0xfa,0x22,0x22,0x22,0x22,0x3a,0xe2,0x45,0x8,0x0,0x20,0x20,0x24,0xfe,0x40,0x50,0x90,0xfc,0x10,0x14,0xfe,0x10,0x10,0x16,0xfc,0x0,
-+0x1,0x9,0x7f,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x17,0x1c,0x71,0x22,0x4,0x10,0x10,0xfc,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x1,0x11,0xff,0x21,0x20,0x23,0xfa,0x22,0x22,0x22,0x27,0x38,0xe0,0x41,0x2,0xc,0x10,0x14,0xfe,0x10,0x40,0xf8,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x10,0xfb,0x20,0x20,0x21,0xfb,0x20,0x23,0x22,0x22,0x3a,0xe3,0x42,0x0,0x0,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x0,0x10,0xf8,0x23,0x22,0x22,0xfb,0x22,0x22,0x22,0x22,0x3a,0xe2,0x44,0x9,0x2,0x48,0x7c,0x40,0xfe,0x42,0x78,0xc4,0x7c,0x0,0xf0,0x90,0x90,0x90,0x92,0x12,0xe,
-+0x0,0xb,0x7e,0x12,0x13,0x12,0x7e,0x13,0x12,0x12,0x13,0x1e,0x72,0x22,0x3,0x2,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x20,0x24,0xa8,0x30,0x20,0xa2,0x22,0x1e,
-+0x0,0x8,0x7d,0x11,0x12,0x10,0x7c,0x11,0x12,0x11,0x11,0x1e,0x70,0x21,0x2,0xc,0x40,0x40,0x48,0x50,0x40,0xa0,0x98,0x48,0x44,0x48,0x50,0xa0,0xa0,0x10,0xe,0x4,
-+0x0,0x14,0xff,0x24,0x28,0x23,0xf8,0x20,0x27,0x20,0x21,0x39,0xe2,0x44,0x1,0x0,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x40,0x50,0x48,0x44,0x44,0x40,0x80,
-+0x0,0x14,0xff,0x24,0x2a,0x23,0xfa,0x24,0x24,0x2a,0x21,0x39,0xe2,0x44,0x8,0x10,0x80,0x40,0xfe,0x2,0x4,0xbc,0xa4,0xa4,0xa4,0xa4,0x34,0x28,0x22,0x22,0x1e,0x0,
-+0x0,0x17,0xfc,0x28,0x21,0x22,0xf8,0x20,0x2f,0x20,0x20,0x39,0xe2,0x44,0x8,0x0,0x0,0xfe,0x2,0xa4,0x18,0x8,0x40,0x44,0xfe,0x40,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x0,0x13,0xfa,0x22,0x23,0x22,0xfa,0x23,0x22,0x22,0x23,0x3d,0xe5,0x49,0x11,0x1,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x7,0xfc,0x25,0x24,0x25,0xf8,0x20,0x23,0x22,0x23,0x3a,0xe3,0x42,0x3,0x2,0x4,0xfe,0x4,0xf4,0x4,0xf4,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x10,0xf9,0x22,0x25,0x28,0xff,0x24,0x24,0x27,0x24,0x3c,0xe7,0x44,0x4,0x5,0x40,0xc0,0x20,0x10,0xe8,0x6,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x0,0x17,0xfa,0x21,0x20,0x23,0xf8,0x27,0x21,0x21,0x22,0x3a,0xe4,0x48,0x1,0x6,0x1c,0xe0,0x48,0x50,0x20,0xfc,0x80,0xfe,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x17,0xfc,0x24,0x24,0x27,0xfc,0x24,0x27,0x24,0x24,0x3f,0xe4,0x44,0x4,0x4,0x4,0xbe,0x84,0x84,0x84,0xbc,0x4,0x0,0xbc,0x4,0x24,0xa8,0x10,0x28,0x46,0x84,
-+0x1,0x11,0xfa,0x21,0x21,0x20,0xf8,0x23,0x22,0x22,0x22,0x3a,0xe3,0x42,0x3,0x2,0x24,0x24,0x48,0x24,0x24,0x40,0x84,0xfe,0x4,0x94,0x64,0x94,0xc,0x4,0xfc,0x4,
-+0x0,0x17,0xfa,0x21,0x27,0x24,0xf8,0x27,0x21,0x21,0x22,0x3a,0xe4,0x48,0x1,0x6,0x38,0xc0,0x48,0x50,0xfe,0x82,0x84,0xfe,0x0,0xf0,0x10,0xa0,0x40,0xa0,0x1e,0x4,
-+0x0,0x10,0xfb,0x22,0x22,0x22,0xfb,0x22,0x22,0x22,0x23,0x3d,0xe5,0x49,0x11,0x1,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x11,0xff,0x21,0x21,0x20,0xff,0x24,0x27,0x20,0x27,0x38,0xe7,0x40,0xf,0x0,0x10,0x14,0xfe,0x10,0xf0,0x44,0xfe,0x44,0xfc,0x40,0xfc,0x40,0xfc,0x40,0xfe,0x0,
-+0x1,0x11,0xff,0x21,0x21,0x2f,0xf8,0x23,0x22,0x23,0x22,0x3b,0xe0,0x41,0x2,0x4,0x10,0x10,0xfc,0x10,0x14,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x0,0x10,0xc,0x4,
-+0x0,0x17,0xfd,0x25,0x26,0x26,0xfb,0x24,0x20,0x2f,0x20,0x39,0xe0,0x40,0x1,0x6,0x0,0xbc,0xac,0xac,0xb4,0xb4,0x18,0xa4,0x40,0xfe,0x90,0x10,0xa0,0x40,0xb0,0xc,
-+0x0,0x14,0xfc,0x27,0x21,0x21,0xfb,0x22,0x27,0x2a,0x23,0x3a,0xe2,0x43,0x2,0x2,0x40,0x44,0x44,0xfc,0x44,0x20,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,0x0,
-+0x0,0x10,0xfb,0x22,0x22,0x22,0xfa,0x23,0x22,0x22,0x23,0x38,0xe5,0x45,0x9,0x0,0x40,0x84,0xfe,0x44,0x74,0x94,0xd4,0x24,0x44,0x84,0xfc,0x40,0x24,0x2a,0xa,0xf8,
-+0x4,0x2,0xf2,0x2f,0x24,0x24,0xf7,0x25,0x25,0x25,0x35,0xe9,0x49,0x15,0x22,0x1,0x40,0x40,0x44,0xfe,0x80,0x0,0x7e,0x12,0x54,0x50,0x5e,0x50,0x50,0xb0,0x90,0xe,
-+0x0,0x17,0xf9,0x20,0x2f,0x20,0xfb,0x22,0x23,0x22,0x23,0x38,0xef,0x40,0x0,0x0,0x40,0xfc,0x10,0xa0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40,
-+0x0,0x14,0xfa,0x20,0x2f,0x21,0xf8,0x27,0x20,0x23,0x20,0x3f,0xe0,0x40,0x3,0xc,0xa0,0xa4,0xa8,0xa0,0xfe,0x10,0xa0,0xfc,0x40,0xf8,0x40,0xfe,0x40,0xa0,0x18,0x6,
-+0x2,0x13,0xfa,0x27,0x28,0x25,0xfa,0x24,0x2a,0x21,0x27,0x38,0xe1,0x42,0xc,0x0,0x0,0xbc,0x4,0xa8,0x90,0x28,0x46,0x40,0x48,0x50,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x0,0x10,0xff,0x24,0x24,0x27,0xfc,0x24,0x27,0x24,0x27,0x3c,0xe7,0x48,0x13,0x0,0x78,0x40,0xfe,0x82,0xf4,0x88,0xf8,0x0,0xfe,0xc0,0x68,0xb0,0x68,0xa6,0x24,0x40,
-+0x0,0xf,0xf8,0x28,0x28,0x2f,0xf2,0x22,0x2b,0x2a,0x2a,0x3a,0xcb,0x5e,0x0,0x0,0x20,0xa0,0xbe,0xc4,0xa4,0xa8,0x10,0x28,0xc4,0x82,0x7c,0x44,0xc4,0x44,0x7c,0x44,
-+0x3e,0x23,0x3e,0x20,0x3f,0x22,0x62,0xbe,0x0,0x7f,0x1,0x3f,0x1,0x1,0xff,0x0,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0xfc,0x0,0xf8,0x40,0x24,0xfe,0x0,
-+0x1,0x5,0xf7,0x29,0x2f,0x23,0xf5,0x29,0x23,0x22,0x22,0x3a,0xe2,0x40,0x1,0x6,0x8,0x28,0xbc,0x48,0xbe,0x18,0xaa,0x4e,0xf8,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0xf,0x78,0x4b,0x68,0x4b,0x6a,0x4b,0x48,0xff,0x80,0x3f,0x1,0x1f,0x1,0x1,0xff,0xe4,0x3e,0xa4,0x2c,0xa4,0xac,0xa4,0x24,0xfe,0x2,0xf8,0x0,0xf0,0x40,0x24,0xfe,
-+0x0,0x3e,0x22,0x3e,0x22,0x3e,0x0,0xff,0x9,0x28,0x2f,0x28,0x38,0x48,0x84,0x3,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x26,0xfc,
-+0x20,0x23,0x22,0xfa,0x23,0x22,0xfa,0x23,0x20,0xfb,0x2a,0x2a,0x3a,0x22,0x2f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x20,0x20,0x27,0xfa,0x21,0x21,0xf8,0x23,0x22,0xfa,0x2b,0x2a,0x3a,0x22,0x23,0x22,0x8,0x3c,0xc0,0x48,0x48,0x50,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x30,0x38,0x54,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x10,0x12,0x12,0xe,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x30,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x80,0x84,0xfe,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x30,0x3b,0x56,0x52,0x92,0x12,0x12,0x12,0x11,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x12,0x31,0x39,0x54,0x50,0x90,0x10,0x11,0x12,0x14,0x18,0x0,0x8,0xfc,0x8,0x88,0x50,0x50,0x10,0xa0,0xa0,0x40,0xa0,0x20,0x18,0xe,0x4,
-+0x10,0x10,0x13,0x10,0xfd,0x11,0x31,0x39,0x55,0x51,0x90,0x10,0x17,0x10,0x10,0x10,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x19,0x12,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x10,0x12,0x12,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x20,0x20,0x20,0x20,0x24,0x2c,0xb0,0x20,0x20,0x20,0x20,0x22,0xa2,0x22,0x1e,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x32,0x3a,0x54,0x50,0x90,0x10,0x10,0x10,0x13,0x1c,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x50,0x50,0x20,0xc0,0x0,0x0,
-+0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x31,0xdf,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x10,0xff,0x12,0x32,0x3a,0x56,0x52,0x92,0x13,0x12,0x12,0x12,0x12,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x9c,0xc,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x90,0x10,0x10,0x11,0x12,0x14,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x28,0x48,0x48,0x60,0xa0,0xa2,0x22,0x1e,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x32,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x11,0x11,0x11,0x11,0xfd,0x11,0x31,0x3b,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x0,0x8,0x18,0x20,0x40,0x80,0x4,0xfe,0x40,0x20,0x20,0x10,0x10,0x4e,0x84,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x52,0x92,0x14,0x14,0x18,0x11,0x10,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xa8,0xa8,0x48,0x44,0x84,0x2,0x0,
-+0x2,0x4,0x1f,0x10,0x12,0x11,0x10,0x1f,0x1,0x1,0x7f,0x3,0x5,0x19,0x61,0x1,0x0,0x10,0xf8,0x10,0x10,0x60,0x4,0xfe,0x4,0x4,0xf4,0x94,0x48,0x30,0xe,0x0,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x30,0x38,0x54,0x50,0x90,0x10,0x11,0x11,0x12,0x14,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x12,0x12,0x11,0x10,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0xf8,0x8,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x10,0x10,0xfc,0x10,0x33,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0xfc,0x8,0x90,0x60,0x20,0xfe,0x22,0x24,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x1,0x1,0x7f,0x5,0x9,0x11,0x20,0xdf,0x0,0x0,0x7f,0x1,0x9,0x11,0x25,0x2,0x0,0x8,0xfc,0x40,0x30,0xe,0x24,0xf0,0x0,0x8,0xfc,0x0,0x20,0x18,0x8,0x0,
-+0x11,0x11,0x11,0x17,0xfd,0x10,0x33,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x8,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x80,0x80,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x31,0x39,0x55,0x53,0x95,0x19,0x11,0x11,0x11,0x11,0x0,0x4,0xfe,0x80,0x80,0x80,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x30,0x38,0x54,0x50,0x91,0x11,0x12,0x12,0x14,0x18,0x80,0xa0,0x90,0x94,0xfe,0xa0,0xa0,0xa4,0xa4,0xa8,0x28,0x30,0x62,0xa2,0x1e,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x32,0x3b,0x56,0x52,0x92,0x12,0x13,0x12,0x13,0x10,0x8,0xfc,0x0,0x40,0x40,0x78,0x88,0x10,0x20,0x20,0x50,0x8c,0x4,0x0,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x12,0x31,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x8,0xfc,0x40,0x40,0x48,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x32,0x3a,0x56,0x53,0x92,0x12,0x12,0x14,0x14,0x18,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x30,0x3b,0x54,0x50,0x91,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0xfe,0x80,0x88,0xfc,0x8,0x8,0x88,0x50,0x20,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x32,0x3a,0x57,0x52,0x91,0x11,0x12,0x12,0x14,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x10,0x10,0x8,0x4,0x4,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x20,0x60,0x20,0x30,0x2c,0x24,0x20,0x20,0x20,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x32,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x8,0x1c,0xe0,0x0,0x8,0xfc,0x0,0xf8,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x34,0x38,0x54,0x53,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x40,0x0,0xf8,0x8,0x10,0x10,0xa0,0x40,0x20,
-+0x10,0x10,0x10,0x11,0xfd,0x12,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x10,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x28,0x10,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x10,0x52,0x8a,0x26,0x12,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x32,0x3b,0x54,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x10,0x10,0x10,0x13,0xfe,0x14,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x10,0x10,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x13,0x12,0x11,0xfc,0x10,0x30,0x3b,0x54,0x50,0x93,0x10,0x10,0x10,0x17,0x10,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x44,0x50,0xf8,0x40,0x40,0x48,0xfc,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x55,0x52,0x94,0x18,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0xf8,0x50,0x64,0xfe,0x80,0xfc,0x40,0x88,0xfc,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x54,0x51,0x92,0x14,0x18,0x10,0x10,0x10,0x40,0x40,0x44,0xf8,0x50,0x64,0xfe,0x40,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x32,0x3a,0x55,0x50,0x90,0x10,0x10,0x10,0x17,0x10,0x0,0x8,0xfc,0x90,0x90,0x90,0x94,0x94,0x94,0x98,0x90,0x90,0x90,0x94,0xfe,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x30,0x39,0x54,0x53,0x90,0x10,0x10,0x11,0x12,0x14,0x80,0x80,0x9c,0xe0,0x50,0x20,0x52,0x8e,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,
-+0x10,0x10,0x17,0x10,0xfc,0x11,0x32,0x3b,0x54,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x40,0x80,0x10,0x8,0xfc,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x32,0x3a,0x56,0x52,0x92,0x12,0x10,0x10,0x11,0x16,0x40,0x44,0x7e,0x40,0x48,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x80,0xb0,0xc,0x4,
-+0x10,0x10,0x14,0x12,0xfd,0x10,0x37,0x38,0x54,0x50,0x90,0x10,0x11,0x11,0x12,0x14,0x40,0x40,0x44,0x48,0x50,0x44,0xfe,0xa0,0xa0,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x12,0x12,0xff,0x10,0x33,0x38,0x54,0x53,0x92,0x12,0x12,0x12,0x11,0x10,0x40,0x40,0x48,0x48,0xf8,0x0,0xf8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x17,0x11,0xfd,0x12,0x3a,0x37,0x51,0x51,0x95,0x15,0x12,0x15,0x18,0x10,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x7c,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x37,0x38,0x54,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0x3c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x11,0xfe,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x12,0x12,0x13,0x12,0x0,0x40,0xc0,0x4,0x3e,0x4,0x4,0x4,0xbc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x11,0xfd,0x13,0x35,0x39,0x55,0x50,0x97,0x10,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa4,0x28,0x30,0x60,0xa4,0x1c,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x11,0x12,0xfe,0x14,0x31,0x39,0x53,0x55,0x91,0x11,0x11,0x11,0x11,0x11,0x80,0x88,0x7c,0x0,0x80,0x84,0x7e,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x11,0xfe,0x14,0x31,0x38,0x54,0x57,0x90,0x10,0x11,0x12,0x17,0x10,0x40,0x40,0xa0,0x10,0xe,0x24,0xf0,0x0,0x8,0xfc,0x80,0x80,0x10,0x8,0xfc,0x4,
-+0x10,0x10,0x1e,0x22,0x24,0x54,0x8,0x11,0x21,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x10,0x10,0xfc,0x10,0x50,0x90,0xfc,0x10,0x14,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x2,0x1,0x7f,0x4,0x14,0x14,0x24,0x45,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0x8,0xfc,0x40,0x50,0x48,0x44,0x44,0x0,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x1,0x11,0x9,0x3f,0x2,0x7f,0x4,0x8,0x31,0xc1,0x3f,0x1,0x9,0x11,0x25,0x2,0x0,0x10,0x20,0xf8,0x0,0xfc,0x40,0x30,0xe,0x4,0xf8,0x0,0x20,0x18,0x8,0x0,
-+0x10,0x10,0x12,0x13,0xfe,0x14,0x30,0x38,0x57,0x50,0x91,0x10,0x10,0x10,0x11,0x12,0x40,0x20,0x20,0xfe,0x2,0x44,0x40,0x84,0xfe,0x88,0x8,0x90,0x60,0x90,0xc,0x4,
-+0x10,0x10,0x17,0x10,0xfc,0x12,0x32,0x38,0x54,0x51,0x96,0x10,0x10,0x10,0x12,0x11,0x0,0x4,0xbe,0x84,0x84,0xa4,0x94,0x94,0x84,0x8c,0xb4,0x84,0x84,0x84,0x94,0x8,
-+0x8,0x8,0x8,0xfe,0x1c,0x2a,0x49,0x0,0xf,0x8,0xa,0x9,0x8,0x10,0x10,0x60,0x20,0x20,0x24,0xfe,0x70,0xa8,0x26,0x20,0xf0,0x20,0x20,0xa0,0xa0,0x22,0x22,0x1e,
-+0x10,0x11,0x11,0x11,0xfd,0x12,0x30,0x3b,0x54,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x17,0x12,0xfd,0x11,0x33,0x38,0x54,0x50,0x97,0x10,0x10,0x10,0x11,0x10,0x8,0x3c,0xc0,0x48,0x48,0x50,0xf8,0x10,0x60,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x10,0x11,0xfe,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x12,0x14,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x34,0x28,
-+0x10,0x10,0x10,0x17,0xfc,0x11,0x30,0x3f,0x54,0x50,0x90,0x17,0x10,0x10,0x10,0x10,0x80,0x40,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,
-+0x10,0x12,0x11,0x11,0xfc,0x12,0x32,0x38,0x55,0x51,0x92,0x16,0x12,0x12,0x10,0x13,0x10,0x10,0x10,0x10,0x54,0x52,0x90,0x14,0x14,0x18,0x8,0x10,0x20,0x40,0x80,0x0,
-+0x10,0x13,0x10,0x10,0xfd,0x10,0x30,0x3b,0x54,0x51,0x91,0x12,0x10,0x10,0x11,0x16,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x48,0x48,0x50,0xa0,0x90,0xe,0x4,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x55,0x53,0x95,0x19,0x11,0x11,0x11,0x11,0x40,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x7e,0x8,0x1c,0x2a,0x49,0x4,0x8,0x10,0x2f,0xc4,0x4,0x4,0x8,0x10,0x20,0x28,0xfc,0x20,0x70,0xac,0x20,0xc0,0x20,0x10,0xee,0x24,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x13,0x10,0xfc,0x13,0x31,0x38,0x56,0x51,0x90,0x17,0x10,0x10,0x11,0x16,0x40,0x48,0xfc,0x40,0x40,0xfe,0x22,0xa4,0x20,0x20,0x24,0xfe,0x40,0x58,0x86,0x2,
-+0x8,0xa,0x7f,0x14,0x14,0x3f,0x4,0x7f,0x4,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x8,0xc,0x70,0x40,0x44,0x7e,0x48,0x48,0x88,0x8,0xfe,0x80,0x40,0x30,0xe,0x0,
-+0x10,0x10,0x10,0x10,0xff,0x12,0x33,0x3a,0x57,0x52,0x90,0x1f,0x10,0x10,0x10,0x10,0x44,0x7e,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x48,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x30,0x38,0x55,0x51,0x92,0x14,0x10,0x10,0x13,0x1c,0x4,0xfe,0x94,0x94,0x94,0xfc,0x80,0x88,0xfc,0x8,0x88,0x50,0x20,0xc0,0x0,0x0,
-+0x10,0x10,0x17,0x10,0xff,0x12,0x32,0x3a,0x57,0x52,0x92,0x1f,0x10,0x10,0x17,0x10,0x10,0x38,0xc0,0x44,0xfe,0x48,0x48,0x48,0xfc,0x48,0x48,0xfe,0x40,0x48,0xfc,0x0,
-+0x10,0x10,0x10,0x17,0xf8,0x10,0x33,0x3a,0x56,0x52,0x93,0x10,0x12,0x14,0x19,0x10,0x80,0x40,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x48,0x46,0x42,0x80,
-+0x10,0x10,0x17,0x10,0xff,0x12,0x32,0x3b,0x54,0x53,0x90,0x1f,0x10,0x10,0x11,0x10,0x80,0x48,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x10,0xfe,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x17,0x11,0xfd,0x12,0x37,0x39,0x55,0x51,0x95,0x15,0x12,0x15,0x18,0x10,0x10,0x14,0x7e,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x16,0xfc,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x13,0x30,0x38,0x57,0x52,0x91,0x10,0x11,0x16,0x11,0x10,0x40,0x48,0xfc,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x50,0xe0,0x50,0x4e,0x44,0x80,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x93,0x13,0x15,0x15,0x19,0x11,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x13,0x10,0xfd,0x10,0x37,0x39,0x56,0x55,0x98,0x13,0x10,0x10,0x11,0x16,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfc,0x10,0x8,0xf6,0x40,0xf8,0x40,0xb0,0xc,0x4,
-+0x11,0x11,0x13,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x9f,0x12,0x12,0x12,0x13,0x10,0x10,0x10,0xfc,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x50,0x88,0x0,0xfc,0x0,
-+0x20,0x20,0x20,0x2f,0xf8,0x20,0x37,0x6d,0x64,0xa5,0x24,0x24,0x27,0x24,0x24,0x24,0x40,0x40,0x44,0xfe,0x40,0x44,0xfe,0x14,0xa4,0xf4,0x44,0x44,0xfc,0x44,0x54,0x8,
-+0x10,0x10,0x10,0x17,0xfc,0x11,0x32,0x3c,0x57,0x52,0x93,0x12,0x13,0x10,0x1f,0x10,0x40,0x40,0x48,0xfc,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xff,0x12,0x33,0x3a,0x56,0x53,0x90,0x10,0x11,0x12,0x14,0x10,0x40,0x44,0xfe,0x40,0xf8,0x48,0x58,0xe8,0x48,0xf8,0xc0,0xe0,0x50,0x4e,0x44,0x40,
-+0x11,0x15,0x15,0x15,0xfd,0x15,0x30,0x3b,0x56,0x52,0x92,0x12,0x12,0x10,0x11,0x16,0x20,0x20,0x24,0x3e,0x50,0x88,0x8,0xfc,0x8,0x48,0x48,0x48,0xa8,0xa2,0x22,0x1e,
-+0x10,0x13,0x12,0x12,0xfb,0x10,0x37,0x3a,0x57,0x52,0x93,0x12,0x12,0x1f,0x10,0x10,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfe,0x8,0xf8,0x8,0xf8,0x8,0xe,0xf8,0x8,0x8,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x38,0x54,0x57,0x94,0x14,0x14,0x14,0x17,0x14,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xbc,0xa4,
-+0x10,0x10,0x3e,0x48,0x8,0x7e,0x14,0x22,0x41,0x1,0xff,0x3,0x5,0x39,0xc1,0x1,0x8,0xfc,0x80,0xf8,0x88,0xf8,0x80,0xfc,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x0,
-+0x10,0x10,0x17,0x11,0xf9,0x17,0x31,0x3b,0x53,0x55,0x95,0x19,0x11,0x11,0x11,0x11,0x10,0xd0,0x10,0x10,0x54,0xd4,0x38,0x90,0x50,0x28,0x28,0x28,0x28,0x44,0x82,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x32,0x3a,0x57,0x52,0x92,0x13,0x1e,0x12,0x12,0x13,0x40,0xbc,0x24,0x24,0x24,0xa6,0x40,0x3c,0x84,0x24,0x28,0xa8,0x10,0x28,0x46,0x84,
-+0x10,0x14,0x12,0x12,0xfc,0x10,0x36,0x3a,0x56,0x52,0x92,0x12,0x12,0x15,0x18,0x10,0x20,0x44,0xfe,0x84,0x84,0xfc,0x80,0xfc,0x84,0x84,0x84,0xfc,0x80,0x6,0xfc,0x0,
-+0x10,0x10,0x17,0x10,0xfd,0x10,0x37,0x38,0x54,0x57,0x90,0x11,0x12,0x14,0x11,0x10,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x10,0x14,0x12,0x14,0xfc,0x15,0x35,0x3d,0x55,0x54,0x95,0x15,0x15,0x15,0x14,0x14,0x0,0x4,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x11,0x10,0x13,0x10,0xfc,0x13,0x30,0x38,0x57,0x50,0x91,0x12,0x14,0x18,0x13,0x10,0x8,0x90,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x80,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x14,0x12,0x10,0xfc,0x17,0x30,0x39,0x56,0x55,0x98,0x13,0x10,0x10,0x10,0x10,0x80,0x44,0x48,0x10,0x4,0xfe,0xa0,0x10,0x48,0xf6,0x40,0xf8,0x40,0x40,0x40,0x40,
-+0x10,0x14,0x17,0x14,0xf8,0x13,0x30,0x3b,0x56,0x53,0x92,0x13,0x12,0x10,0x1f,0x10,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x4,0xfe,0x24,0x24,0xfc,0x0,0xfc,0x84,0x84,0xfc,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x10,0x17,0x11,0x11,0xfd,0x12,0x3a,0x35,0x54,0x5b,0x92,0x12,0x12,0x12,0x1f,0x10,0x0,0xf8,0x10,0x1c,0xe4,0xa4,0x44,0xb4,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xff,0x10,0x37,0x39,0x52,0x55,0x98,0x17,0x10,0x11,0x16,0x10,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0x38,0xce,0x44,0xfc,0xe0,0x58,0x44,0x40,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x93,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x50,0x54,0xfe,0x0,
-+0x10,0x13,0x12,0x13,0xfe,0x13,0x38,0x37,0x50,0x54,0x92,0x11,0x16,0x10,0x12,0x11,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xbe,0x84,0xa4,0x94,0x8c,0xb4,0x84,0x94,0x8,
-+0x11,0x11,0x11,0xfa,0x17,0x32,0x3b,0x56,0x53,0x92,0x10,0x17,0x10,0x10,0x10,0x10,0x40,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x13,0x12,0xff,0x12,0x3b,0x36,0x52,0x57,0x90,0x11,0x12,0x14,0x11,0x10,0x84,0x4,0xc4,0x44,0xc4,0x7e,0xc4,0x64,0x54,0xd4,0xc4,0x44,0x44,0x44,0x54,0x88,
-+0x10,0x10,0x13,0x12,0xff,0x12,0x33,0x38,0x57,0x51,0x92,0x14,0x1b,0x10,0x10,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x80,0xfe,0x10,0x48,0x46,0xf8,0x40,0x40,0x40,
-+0x10,0x10,0x17,0x10,0xfd,0x11,0x37,0x39,0x55,0x50,0x91,0x13,0x15,0x19,0x11,0x11,0x40,0x24,0xfe,0x0,0xf8,0x8,0xfe,0x8,0xf8,0x84,0x48,0x30,0x10,0x4e,0x84,0x0,
-+0x10,0x10,0x17,0x10,0xfb,0x12,0x33,0x38,0x57,0x54,0x95,0x15,0x15,0x15,0x14,0x14,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x22,0x14,0xff,0x8,0x49,0x49,0x7f,0x8,0x11,0x21,0xff,0x3,0xd,0x31,0xc1,0x1,0x4,0x7e,0xc4,0x7c,0x44,0x7c,0x44,0x94,0x8,0x0,0xfe,0x80,0x40,0x30,0xe,0x0,
-+0x10,0x10,0x17,0x14,0xf8,0x11,0x31,0x39,0x55,0x51,0x91,0x1f,0x10,0x11,0x12,0x14,0x80,0x40,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x10,0x17,0x14,0xf8,0x11,0x32,0x38,0x55,0x52,0x97,0x1a,0x12,0x12,0x13,0x12,0x80,0x40,0xfe,0x2,0xa4,0x10,0x48,0xa0,0x10,0x8,0xfe,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x14,0x12,0x12,0xf8,0x16,0x33,0x3a,0x56,0x53,0x92,0x12,0x12,0x13,0x12,0x10,0x20,0x20,0x24,0xfc,0x28,0x30,0xfe,0x40,0xfc,0x44,0x44,0x7c,0xc4,0x44,0x7c,0x44,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x33,0x3a,0x57,0x53,0x95,0x15,0x15,0x15,0x19,0x11,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xa8,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x11,0x11,0x1f,0x11,0xfd,0x10,0x37,0x3c,0x57,0x50,0x97,0x10,0x13,0x10,0x1f,0x10,0x10,0x14,0xfe,0x10,0xf0,0x44,0xfe,0x44,0xfc,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xfa,0x11,0x37,0x38,0x57,0x54,0x95,0x15,0x15,0x14,0x17,0x14,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x0,0xfc,0x4,0xf4,0x14,0xf4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x32,0x3a,0x57,0x52,0x93,0x12,0x14,0x15,0x18,0x10,0x10,0x18,0x14,0xfe,0x10,0x90,0xd2,0x92,0xf4,0x94,0xd8,0xa8,0x9a,0xaa,0xc6,0x4,
-+0x10,0x13,0x10,0x17,0xfd,0x14,0x31,0x38,0x57,0x50,0x9f,0x11,0x11,0x10,0x10,0x10,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x40,0xfc,0x0,0xfe,0x0,0xf8,0x8,0x48,0x30,
-+0x10,0x12,0x11,0x14,0xff,0x14,0x31,0x39,0x55,0x51,0x90,0x17,0x10,0x10,0x17,0x10,0x40,0x48,0x50,0x40,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x40,0xfc,0x40,0x44,0xfe,0x0,
-+0x44,0x29,0x10,0x2f,0x48,0x19,0x2b,0x4d,0x9,0x29,0x11,0xff,0x5,0x19,0x61,0x1,0x48,0xf0,0x54,0xfe,0x80,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0x30,0xe,0x0,
-+0x22,0x22,0x23,0x24,0xff,0x25,0x75,0x6f,0x65,0xa5,0x27,0x25,0x25,0x25,0x29,0x30,0x4,0x4,0xd4,0x8c,0xcc,0x64,0x54,0xd4,0x46,0x7c,0xc4,0x44,0x44,0x44,0x44,0x84,
-+0x10,0x13,0x10,0x11,0xff,0x12,0x32,0x3b,0x56,0x53,0x92,0x12,0x17,0x10,0x10,0x10,0x8,0xc8,0x88,0x10,0xfe,0x64,0x54,0xd4,0x54,0xd4,0x48,0x68,0xc8,0x54,0x52,0x60,
-+0x22,0x22,0x22,0x2f,0xf2,0x22,0x7f,0x6a,0xa2,0x2b,0x2a,0x2a,0x2e,0x2a,0x31,0x20,0x10,0x18,0x14,0x94,0x7e,0x50,0xd0,0x54,0x54,0xc8,0x6a,0x56,0x20,0x6,0xfc,0x0,
-+0x14,0xff,0x14,0x3f,0x41,0xbd,0x25,0x3d,0x2,0x1,0xff,0x3,0xd,0x31,0xc1,0x1,0x20,0x24,0x3e,0x44,0xa4,0x28,0x10,0x28,0x46,0x0,0xfe,0x80,0x40,0x30,0xe,0x0,
-+0x1,0x3f,0x9,0x7f,0x40,0x9f,0x8,0x1f,0x68,0xf,0x1,0xff,0x5,0x19,0x61,0x1,0x0,0xf8,0x20,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x4,0xfe,0x40,0x30,0xe,0x0,
-+0x20,0x20,0x2f,0x28,0xfa,0x29,0x6f,0x78,0x6a,0xaa,0x2b,0x28,0x28,0x28,0x29,0x32,0x0,0x4,0xfe,0x8,0x28,0x48,0xee,0x92,0xa4,0xa8,0xe8,0xa8,0x88,0x94,0x14,0x22,
-+0x10,0x10,0x10,0x11,0xfd,0x13,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x12,0x14,0xa0,0x90,0x84,0xfe,0x10,0x10,0xfc,0x10,0xfc,0x10,0x14,0xfe,0x0,0xa8,0xa6,0x2,
-+0x10,0x10,0x11,0x12,0xfd,0x10,0x3a,0x36,0x53,0x50,0x97,0x14,0x14,0x15,0x14,0x14,0x40,0xa0,0x10,0x48,0xf6,0xa0,0x48,0xa8,0xf8,0x44,0xfe,0x44,0xa4,0xf4,0x14,0x8,
-+0x11,0x11,0x12,0x17,0xfc,0x17,0x3c,0x37,0x50,0x5f,0x90,0x13,0x12,0x13,0x12,0x13,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x11,0x10,0x17,0x10,0xff,0x12,0x33,0x3a,0x56,0x52,0x93,0x10,0x1f,0x12,0x11,0x10,0x10,0xa0,0xfc,0xa0,0xf8,0xa8,0x38,0x8,0xe8,0x8,0xf8,0x10,0xfe,0x10,0x50,0x20,
-+0x10,0x13,0x12,0x13,0xfe,0x13,0x32,0x3b,0x56,0x52,0x92,0x12,0x13,0x14,0x18,0x10,0x4,0xfe,0x4,0xfc,0x20,0xac,0x70,0xac,0x20,0xa8,0xfc,0x20,0xfe,0x20,0x20,0x20,
-+0x10,0x13,0x10,0x10,0xff,0x10,0x33,0x38,0x57,0x54,0x95,0x17,0x15,0x15,0x14,0x14,0x0,0xf8,0x90,0x60,0xfe,0xc4,0x48,0x44,0xfe,0xa4,0x14,0xfc,0x14,0xf4,0x14,0x8,
-+0x20,0x22,0x22,0x22,0xf4,0x2f,0x32,0x6c,0x64,0xaf,0x20,0x23,0x2c,0x20,0x21,0x20,0x40,0x78,0x48,0x48,0xf8,0x8,0xfe,0x20,0x54,0xb8,0x50,0xb8,0x54,0x92,0x10,0x30,
-+0x10,0x13,0x10,0x17,0xfd,0x14,0x31,0x38,0x57,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x40,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x8,
-+0x10,0x10,0x11,0x13,0xfe,0x13,0x33,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x80,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x84,0xfc,0x84,
-+0x10,0x1f,0x10,0x17,0xfd,0x15,0x35,0x3f,0x50,0x53,0x90,0x1f,0x11,0x12,0x15,0x10,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0x80,
-+0x0,0x3e,0x23,0x3e,0x20,0x3f,0x62,0xa2,0x3e,0x1,0xff,0x3,0xd,0x31,0xc1,0x1,0x20,0x28,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x24,0xfe,0x80,0x40,0x30,0xe,0x0,
-+0x10,0x14,0x17,0x15,0xf9,0x12,0x35,0x3b,0x52,0x54,0x9b,0x10,0x11,0x12,0x14,0x10,0x80,0x40,0xfe,0x2,0xbc,0xa8,0xb0,0x10,0xe8,0x6,0xf8,0x40,0x50,0x4c,0x44,0xc0,
-+0x0,0x22,0x14,0xff,0x14,0x7f,0x55,0x55,0x67,0x41,0x7f,0x41,0x41,0x7f,0x40,0x1,0x20,0x28,0x24,0xa4,0x20,0xfe,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,
-+0x8,0x7f,0x8,0x3e,0x8,0x7f,0x10,0x1e,0x22,0x4a,0x5,0xff,0x1,0x2,0xc,0x70,0x40,0x44,0x7e,0x48,0x88,0x28,0x10,0x28,0x46,0x90,0x8,0xfe,0x0,0x80,0x70,0xe,
-+0x0,0x4,0xfe,0x20,0x20,0x3d,0x26,0x45,0x64,0x98,0x8,0x10,0x10,0x20,0x41,0x6,0x8,0xfc,0x88,0x88,0x88,0xe,0x0,0xf8,0x8,0x88,0x50,0x20,0x50,0x90,0xe,0x4,
-+0x0,0x5,0xff,0x21,0x21,0x3d,0x25,0x45,0x65,0x99,0x9,0x11,0x11,0x21,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x0,0x4,0xfe,0x21,0x22,0x3c,0x24,0x45,0x64,0x98,0x9,0x11,0x12,0x24,0x41,0x0,0x80,0x84,0xfe,0x0,0xf8,0x10,0x24,0xfe,0x94,0x94,0x24,0x24,0x44,0x84,0x28,0x10,
-+0x0,0x4,0xfe,0x20,0x21,0x3e,0x24,0x44,0x67,0x98,0x8,0x11,0x10,0x20,0x41,0x6,0x40,0x40,0xa0,0xa0,0x18,0x26,0x40,0x88,0x10,0x20,0x44,0x88,0x10,0x60,0x80,0x0,
-+0x0,0x5,0xff,0x21,0x21,0x3c,0x25,0x45,0x65,0x99,0x9,0x11,0x11,0x20,0x40,0x3,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x50,0x8c,0x4,
-+0x0,0x4,0xfe,0x20,0x21,0x3e,0x25,0x44,0x64,0x99,0x9,0x11,0x11,0x20,0x47,0x0,0x20,0x20,0x50,0x88,0x4,0xa,0xfc,0x0,0x44,0x24,0x24,0x28,0x28,0x10,0xfe,0x0,
-+0x0,0x5,0xfe,0x21,0x20,0x3c,0x25,0x44,0x64,0x98,0xb,0x10,0x10,0x20,0x40,0x0,0x1c,0xe0,0x0,0x24,0xa8,0x0,0xfc,0x8,0x30,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x1,0x4,0xfe,0x21,0x21,0x3d,0x25,0x45,0x65,0x99,0x8,0x10,0x13,0x20,0x40,0x0,0x4,0x88,0x10,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x0,0x5,0xfe,0x20,0x20,0x3b,0x2a,0x4a,0x6a,0x9a,0xb,0x12,0x10,0x20,0x4f,0x0,0x0,0xfc,0x8,0x10,0x20,0xbe,0xa2,0xb4,0xb4,0xa8,0xb6,0x22,0xa0,0x44,0xfe,0x0,
-+0x0,0x4,0xff,0x22,0x24,0x3d,0x25,0x45,0x65,0x99,0x9,0x17,0x10,0x21,0x42,0x4,0x80,0x40,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x0,0xb,0xfc,0x21,0x20,0x3b,0x2a,0x4d,0x68,0x99,0x9,0x11,0x10,0x20,0x47,0x0,0x20,0xfe,0x20,0xfc,0x0,0xfe,0x2,0xfc,0x0,0xfc,0x4,0xfc,0x88,0x50,0xfe,0x0,
-+0x10,0x10,0x15,0xfe,0x20,0x28,0x48,0x7e,0x9,0x8,0xe,0xf8,0x48,0x8,0x9,0x8,0x0,0x4,0xfe,0x24,0x24,0xa4,0xa4,0xa4,0x24,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x20,0x21,0x29,0xfd,0x41,0x51,0x91,0xfd,0x11,0x11,0x1d,0xf2,0x52,0x14,0x18,0x10,0x4,0xfe,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x54,0x48,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x14,0xfe,0x23,0x28,0x48,0x7e,0x9,0x9,0xf,0xf9,0x49,0x9,0x9,0x9,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x15,0xfe,0x20,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x48,0x8,0x8,0x8,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x14,0xfe,0x20,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x49,0xa,0xa,0xc,0x20,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x14,0xfe,0x20,0x28,0x48,0x7e,0x8,0x8,0xe,0xf8,0x48,0x8,0x9,0xa,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x48,0x48,0x84,0x6,0x2,
-+0x10,0x10,0x14,0xfe,0x20,0x29,0x48,0x7e,0x9,0x8,0xe,0xf8,0x48,0x8,0x8,0xb,0x20,0xa0,0xa0,0xa8,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,
-+0x20,0x20,0x28,0xfc,0x41,0x52,0x94,0xfc,0x11,0x10,0x18,0xf1,0x50,0x10,0x11,0x16,0x40,0x40,0xa0,0xa0,0x18,0x26,0x40,0x80,0x10,0x20,0x40,0x88,0x10,0x60,0x80,0x0,
-+0x10,0x10,0x15,0xfe,0x20,0x29,0x48,0x7e,0x8,0x9,0xe,0xf8,0x48,0x8,0x8,0x8,0x8,0x1c,0xe0,0x20,0x24,0x24,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x15,0xff,0x21,0x29,0x49,0x7f,0x9,0x8,0xe,0xf8,0x49,0xa,0x8,0x8,0x8,0x1c,0xe0,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0xa8,0xa4,0x26,0x22,0xa0,0x40,
-+0x10,0x11,0x14,0xfe,0x20,0x28,0x48,0x7e,0x9,0x8,0xe,0xf8,0x48,0x8,0x8,0x8,0x4,0xfe,0x44,0x44,0x44,0x44,0x94,0x88,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x10,0x10,0x14,0xfe,0x21,0x28,0x48,0x7d,0x8,0x8,0xe,0xf8,0x4b,0x8,0x8,0x8,0x10,0x18,0x14,0x14,0xfe,0x10,0x10,0xf0,0x90,0x90,0x90,0xf0,0x88,0xa,0x6,0x2,
-+0x10,0x13,0x14,0xfe,0x20,0x29,0x49,0x7e,0x8,0x8,0xf,0xf8,0x48,0x8,0xb,0x8,0x4,0xfe,0x40,0x40,0x88,0x4,0xfe,0x22,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x14,0xfe,0x20,0x29,0x4a,0x7e,0x8,0x8,0xe,0xf8,0x48,0x8,0xb,0x8,0x20,0x20,0x50,0x50,0x88,0x4,0xfa,0x20,0x20,0x20,0xf8,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x14,0xff,0x21,0x2a,0x48,0x7e,0x8,0x9,0xf,0xf9,0x49,0x9,0x9,0x9,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x88,0x6,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x15,0xff,0x21,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x4b,0x9,0x8,0x8,0x4,0xfe,0x20,0x28,0xe8,0x28,0x28,0x28,0xe8,0x28,0x28,0x3a,0xea,0x2e,0x20,0x20,
-+0x8,0x8,0x7e,0x8,0x7e,0x14,0x22,0x42,0x3f,0x5,0x9,0x1f,0x1,0xff,0x1,0x1,0x20,0x20,0xfc,0x20,0xfc,0x50,0x88,0x6,0xf8,0x0,0x20,0xf0,0x4,0xfe,0x0,0x0,
-+0x20,0x20,0x2b,0xfe,0x42,0x52,0x93,0xfe,0x12,0x13,0x1e,0xf2,0x52,0x12,0x12,0x12,0x0,0x4,0xfe,0x4,0x94,0x94,0xfc,0x44,0x24,0xfc,0x84,0x84,0xf4,0x4,0x14,0x8,
-+0x20,0x2f,0x24,0xfd,0x42,0x55,0x90,0xf8,0x17,0x10,0x18,0xf5,0x52,0x15,0x18,0x10,0x0,0xfc,0xa4,0x28,0x10,0x28,0xc4,0x0,0xbc,0x84,0xc4,0x28,0x10,0x28,0xce,0x84,
-+0x20,0x21,0x29,0xfe,0x42,0x51,0x91,0xfc,0x11,0x11,0x1d,0xf1,0x51,0x11,0x11,0x11,0x0,0x24,0x24,0x48,0x48,0x24,0x24,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x13,0xfe,0x21,0x28,0x4b,0x7e,0x8,0x9,0xe,0xf9,0x48,0x8,0x8,0xb,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x50,0x88,0xfc,0x22,0xfc,0x20,0x58,0x86,0x2,
-+0x20,0x20,0x2b,0xfe,0x42,0x53,0x92,0xfe,0x13,0x12,0x1e,0xf2,0x52,0x12,0x14,0x10,0x40,0x24,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x92,0x94,0xf8,0x90,0xb2,0xd2,0x8e,
-+0x20,0x22,0x29,0xff,0x41,0x52,0x94,0xfa,0x13,0x12,0x1a,0xf5,0x51,0x11,0x12,0x14,0x40,0x48,0x50,0xfe,0x50,0x4c,0x44,0x8,0xbe,0x88,0xa8,0xa8,0x3e,0x8,0x8,0x8,
-+0x1,0x7f,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x1,0xff,0x1,0x1f,0x10,0x10,0x1f,0x10,0x0,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0x4,0x4,0x7f,0x4,0x2,0x2,0xff,0x1,0x1,0x0,0x1,0x6,0x38,0x0,0x0,0x80,0x48,0xfc,0x0,0x0,0x4,0xfe,0x0,0x10,0x20,0xc0,0x80,0x44,0x24,0x1c,
-+0x8,0x8,0x14,0x13,0x21,0x40,0xbf,0x22,0x22,0x2a,0x24,0x20,0x22,0x22,0x1e,0x0,0x40,0x50,0x48,0x48,0x40,0x7e,0xc0,0x24,0x24,0x28,0x28,0x10,0x12,0x2a,0x4a,0x84,
-+0x0,0x7f,0x1,0xf,0x8,0xf,0x8,0xf,0x8,0xf,0x1,0xff,0x1,0x0,0x7,0x38,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x44,0xfe,0x20,0xc4,0x44,0x3c,
-+0x8,0x9,0xff,0x8,0x9,0x7f,0x41,0x7f,0x41,0x7f,0x8,0x9,0xff,0x8,0x8,0x9,0x20,0x28,0xa4,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0xb2,0x4a,0x8a,0x4,
-+0x1,0x3f,0x21,0x3f,0x0,0xff,0x21,0x3f,0x21,0x3f,0x21,0x21,0xff,0x41,0x1,0x1,0x20,0xa8,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0xb2,0x4a,0x8a,0x4,
-+0x22,0x22,0xff,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x54,0x53,0x61,0x40,0x7f,0x1,0x20,0x28,0xa4,0x24,0x20,0xfe,0x20,0x20,0x24,0xa4,0x28,0x10,0x32,0x4a,0x8a,0x4,
-+0x1,0x7f,0x41,0x7f,0x41,0x7f,0x28,0x2a,0x3f,0x48,0xbe,0x8,0xf,0xf8,0x40,0x1,0x20,0xa8,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0x32,0x4a,0x8a,0x4,
-+0x1,0xff,0x21,0x22,0x3d,0x55,0x49,0x55,0x82,0x7f,0x55,0x55,0x55,0xff,0x0,0x1,0x20,0xa8,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0x32,0xca,0x8a,0x4,
-+0x2,0x7f,0x14,0x55,0x36,0x14,0xff,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x1,0x20,0x28,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0x32,0x4a,0x8a,0x4,
-+0x0,0x0,0x1f,0x50,0x57,0x55,0x75,0x17,0xf4,0x54,0x57,0x95,0x25,0x27,0x40,0x80,0x28,0x24,0xfe,0x20,0xa0,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x10,0x12,0xaa,0x4a,0x84,
-+0x0,0x3,0x7e,0x40,0x62,0x52,0x54,0x48,0x48,0x54,0x52,0x62,0x40,0x44,0x7e,0x0,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2,
-+0x8,0xb,0x14,0x14,0x22,0x51,0x88,0x0,0x7e,0x2,0x24,0x14,0x8,0x4,0x4,0x0,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2,
-+0x40,0x23,0xfe,0x0,0x44,0x28,0xfe,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x7c,0x44,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2,
-+0x8,0x7f,0x8,0x7f,0x22,0x3e,0x14,0x7f,0x0,0xff,0x8,0xf,0x9,0x8,0xe,0x10,0x4,0x8,0x74,0x8,0x74,0x8,0x10,0x60,0x4,0xfe,0x0,0xe0,0x20,0xa4,0x24,0x1c,
-+0x44,0x29,0xfe,0x92,0xd6,0xba,0x92,0xfe,0x4,0x7e,0x44,0x7c,0x44,0x44,0x7c,0x0,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2,
-+0x0,0x7f,0x42,0x7e,0x41,0x7e,0x62,0xbe,0x0,0xff,0x8,0xf,0x9,0x8,0xe,0x10,0x20,0xfc,0x88,0x50,0xfe,0x0,0xf8,0x20,0x24,0xfe,0x0,0xe0,0x20,0xa4,0x24,0x1c,
-+0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x8,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0xc0,0x0,0x8,0xfc,0x0,0x0,0xf0,0x10,0x20,0x20,0x40,0x80,0x0,0xc0,0x30,0xe,0x4,
-+0x2,0x2,0x7f,0x4,0x4,0x8,0x10,0x20,0xdf,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x20,0xf0,0x20,0x20,0x22,0x22,0x1e,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x2,0x2,0x7f,0x4,0x4,0x8,0x10,0x60,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x20,0xf0,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x4,0x7f,0x44,0x44,0x44,0x44,0x7c,0x47,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x1,0x1,0xff,0x1,0x2,0x4,0x18,0x60,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0,0x80,0x60,0x1c,0x8,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x0,0x0,0xff,0x2,0x4,0x8,0x1f,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0,0x40,0x20,0xf0,0x10,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x1,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x20,0x21,0x21,0x42,0x44,0x88,0x10,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x0,0x4,0x7f,0x45,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x7d,0x41,0x2,0x4,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x4,0x7e,0x44,0x45,0x46,0x44,0x7c,0x44,0x44,0x45,0x44,0x7c,0x44,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x84,0x44,0x44,0x14,0x64,0x84,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0x1,0x9,0xa,0x12,0x24,0x4,0x8,0x10,0x60,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x8,0x18,0xa0,0xc0,0x40,0x20,0x10,0xe,0x4,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x8,0x1f,0x21,0x61,0xa2,0x24,0x20,0x3f,0x0,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x4,0x4,0xc4,0x44,0x4,0xc4,0x28,0x10,
-+0x10,0x1e,0x22,0x34,0x48,0x16,0x21,0x40,0x9f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0x40,0x60,0x58,0x40,0x46,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x4,0x78,0x42,0x42,0x4e,0x72,0x2,0x4,0x18,0x60,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x84,0x84,0x84,0xa4,0x98,0x80,0x80,0x80,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x2,0x1,0x7f,0x8,0x4,0x4,0xff,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x8,0xfc,0x20,0x20,0x44,0xfe,0x0,
-+0x10,0xc,0x0,0x3c,0x4,0x5,0x7e,0x16,0x15,0x15,0x24,0x24,0x44,0x84,0x14,0x8,0x0,0x4,0x7e,0x44,0xc4,0x44,0x7c,0x44,0x44,0x44,0xfc,0x84,0x40,0x30,0xe,0x4,
-+0x0,0x5,0x7f,0x45,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x7e,0x42,0x4,0x8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x40,0x44,0x4c,0x50,0x60,0x40,0x42,0x42,0x3e,0x0,
-+0x2,0x3f,0x2,0xff,0x1,0xa,0xf,0x38,0xc7,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0xe0,0x44,0xfe,0x0,0x70,0x84,0x4,0xfc,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x0,0x3f,0x20,0x3e,0x22,0x22,0x2a,0x44,0x41,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x90,0xfc,0x80,0x88,0x50,0x60,0x40,0xa2,0x12,0xe,
-+0x0,0x8,0x7d,0x49,0x4b,0x4d,0x49,0x79,0x49,0x48,0x4f,0x48,0x78,0x48,0x0,0x0,0xa0,0xa4,0x2c,0x30,0x20,0x62,0xa2,0x1e,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x2,0x22,0x12,0x16,0xa,0x72,0x2,0x4,0x18,0x60,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x90,0xa0,0xc0,0xa0,0x98,0x8a,0x82,0x7e,0x0,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0x3f,0x22,0x42,0xff,0x4,0xc,0x3,0x4,0x18,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xfc,0x4,0x8,0xfe,0x20,0x40,0x80,0x60,0x10,
-+0x0,0x3,0x7a,0x4a,0x48,0x4b,0x48,0x79,0x4b,0x48,0x48,0x4b,0x78,0x48,0x0,0x0,0x0,0xfe,0x2,0x44,0x40,0xfc,0x80,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x78,0x4f,0x48,0x4b,0x4a,0x7a,0x4b,0x4a,0x4a,0x4b,0x7a,0x4a,0x2,0x2,0x50,0x48,0x40,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x48,0x48,0x68,0x50,
-+0x0,0x8,0x7c,0x48,0x49,0x4a,0x4c,0x7b,0x48,0x48,0x4b,0x4a,0x7a,0x4a,0x3,0x2,0x40,0x40,0xa0,0xa0,0x90,0x4e,0x4,0xf0,0x20,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x1f,0x10,0x1f,0x10,0x1f,0x8,0x1f,0x22,0xd4,0x8,0x37,0xc0,0x1f,0x10,0x10,0x1f,0xf0,0x10,0xf0,0x10,0xf0,0x40,0x60,0x58,0x40,0x46,0xfc,0x8,0xfc,0x8,0x8,0xf8,
-+0x0,0x8,0x7f,0x4c,0x4b,0x48,0x4b,0x7a,0x4a,0x4b,0x4a,0x4a,0x7b,0x40,0xf,0x0,0x80,0x40,0xfe,0x2,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x0,
-+0x0,0xb,0x7c,0x4a,0x49,0x49,0x4a,0x7d,0x48,0x48,0x4f,0x48,0x78,0x49,0x2,0x4,0x20,0xa8,0xb4,0xa8,0x10,0x10,0xe,0xf4,0x40,0x44,0xfe,0x40,0xa0,0x10,0xc,0x4,
-+0x0,0xb,0x7d,0x48,0x4f,0x4c,0x48,0x7b,0x48,0x48,0x49,0x49,0x7a,0x4c,0x1,0x6,0x1c,0xe0,0x24,0xa8,0xfe,0x42,0x44,0xfe,0x80,0xf8,0x8,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x3,0x7a,0x4c,0x4b,0x4a,0x4b,0x7a,0x4b,0x48,0x48,0x4f,0x78,0x49,0x2,0x4,0x0,0xfc,0x4,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x80,0x44,0xfe,0x0,0x10,0xc,0x4,
-+0x2,0x11,0x7f,0x50,0x57,0x54,0x54,0x77,0x50,0x5f,0x50,0x51,0x7f,0x51,0x5,0x2,0x10,0x10,0xd4,0x1e,0xa4,0xc4,0xa4,0xa4,0x24,0xa8,0x90,0x50,0xa8,0x28,0x44,0x82,
-+0x0,0x7,0x70,0x5f,0x50,0x57,0x55,0x75,0x57,0x50,0x57,0x50,0x7f,0x55,0x4,0x8,0x1c,0xe0,0x44,0xfe,0x40,0xfc,0x54,0x54,0xfc,0x40,0xfc,0x40,0xfe,0x24,0x92,0x92,
-+0x0,0x7,0x78,0x4a,0x49,0x4a,0x48,0x79,0x49,0x4b,0x4d,0x49,0x79,0x49,0x1,0x1,0x84,0xbe,0x84,0x94,0x8c,0x94,0xa4,0x10,0xfe,0x10,0xfc,0x10,0xfc,0x10,0xfe,0x0,
-+0x1,0x7,0x78,0x4b,0x48,0x4f,0x48,0x7b,0x49,0x4f,0x4d,0x4f,0x7a,0x4b,0x0,0x1,0x10,0xfc,0x40,0xf8,0x40,0xfc,0x10,0xd8,0x14,0xfe,0x10,0x94,0x8,0x9a,0xaa,0x84,
-+0x3f,0x20,0x3f,0x20,0x3f,0x1,0xff,0x4,0x3f,0x4,0x3f,0x4,0x7f,0xd,0x74,0x6,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x10,0xe0,0x1e,
-+0x1,0x1,0x3f,0x1,0x8,0xff,0x8,0x8,0x1f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x0,0x10,0xf8,0x0,0x24,0xfe,0x20,0x20,0xf0,0x10,0x10,0x10,0x10,0xc0,0x20,0x18,
-+0x12,0x12,0xff,0x12,0x13,0x10,0x1f,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x20,0x24,0xfe,0x20,0xe0,0x0,0xf8,0x0,0xf0,0x10,0x10,0x10,0x10,0xc0,0x20,0x18,
-+0x0,0x7d,0x45,0x55,0x55,0x55,0x55,0x55,0x54,0x54,0x54,0x10,0x28,0x25,0x42,0x84,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x90,0x90,0x90,0x90,0x92,0x12,0x12,0x1e,
-+0x4,0x7e,0x44,0x54,0x55,0x57,0x54,0x54,0x55,0x55,0x55,0x11,0x29,0x25,0x45,0x81,0x20,0x20,0x40,0x88,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0xfd,0x10,0x1d,0xf0,0x11,0x62,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x40,0x48,0xfc,0x48,0xc8,0xa8,0xa,0x6,0xf0,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x8,0x8,0x2e,0x28,0x28,0x2e,0xf0,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x80,0x84,0x98,0xe0,0x82,0x82,0x7e,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x4,0x7e,0x44,0x57,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x11,0x28,0x24,0x44,0x81,0x40,0x20,0x4,0xfe,0x40,0x44,0x88,0xf4,0x24,0x48,0x88,0x10,0x28,0x44,0x82,0x2,
-+0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x55,0x55,0x56,0x54,0x10,0x28,0x24,0x44,0x80,0x4,0xfe,0x84,0x84,0xfc,0xa0,0x90,0x8,0x4e,0x24,0x20,0x0,0xc0,0x30,0x18,0x8,
-+0x0,0x7d,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x11,0x2a,0x24,0x48,0x80,0x4,0xfe,0x0,0x0,0x7c,0x0,0x0,0xfe,0x52,0x54,0x48,0x48,0x44,0x54,0x62,0x40,
-+0x1,0x1,0x7f,0x9,0x5,0xff,0x5,0x9,0x3f,0xd0,0x11,0x11,0x11,0x12,0x4,0x38,0x0,0x8,0xfc,0x20,0x44,0xfe,0x40,0x20,0xf8,0x16,0x10,0x10,0x10,0xc0,0x20,0x18,
-+0x4,0x7e,0x44,0x57,0x54,0x55,0x54,0x54,0x54,0x54,0x54,0x13,0x28,0x24,0x44,0x80,0x20,0x28,0x24,0xfe,0x20,0x24,0xa8,0xb0,0x30,0x68,0xa8,0x24,0x22,0x20,0xa0,0x40,
-+0x1,0x1,0x7f,0x9,0x9,0x15,0x7f,0x40,0x9f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x0,0x8,0xfc,0x20,0x20,0x50,0xfe,0x2,0xf4,0x10,0x10,0x10,0x10,0xc0,0x20,0x18,
-+0x4,0x7e,0x44,0x54,0x55,0x54,0x54,0x55,0x54,0x54,0x54,0x11,0x28,0x24,0x44,0x83,0x20,0x24,0xac,0xb0,0x20,0x50,0x4c,0xa4,0x20,0xa4,0xa8,0x30,0x50,0x48,0x8e,0x4,
-+0x0,0x7c,0x47,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x13,0x29,0x24,0x44,0x80,0x30,0x28,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x8,0xfe,0x8,0x88,0xa8,0x10,
-+0x10,0x11,0x15,0x1f,0x11,0x11,0x15,0x7f,0x45,0x45,0x45,0x44,0x7c,0x44,0x1,0x6,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x50,0x50,0x92,0x12,0xe,
-+0x8,0x49,0x49,0x49,0x7f,0x0,0x7f,0x1,0x1,0x3f,0x21,0x20,0x23,0x2c,0x30,0x3,0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6,
-+0x0,0x1,0xff,0x8,0x8,0x2a,0x2a,0x2a,0x5d,0x88,0x8,0xf,0xf8,0x40,0x0,0x3,0x4,0x7e,0xc4,0x54,0x54,0x54,0x54,0x54,0x54,0xd4,0x18,0xa8,0x28,0x4a,0x8a,0x6,
-+0x8,0xa,0x7f,0x8,0x8,0xff,0x25,0x14,0x64,0x14,0xff,0x4,0x8,0xc,0x12,0x61,0x4,0x7e,0x44,0x54,0x54,0xd4,0x54,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6,
-+0x8,0x8,0x14,0x14,0x22,0x7f,0x80,0x71,0x55,0x75,0x55,0x75,0x51,0x55,0x52,0x3,0x4,0x7e,0x44,0x54,0x54,0x54,0xd4,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6,
-+0x14,0x14,0x7f,0x14,0x7f,0x14,0xff,0x8,0x7f,0x49,0x7f,0x49,0xff,0x41,0x45,0x43,0x4,0x7e,0x44,0x54,0x54,0x54,0xd4,0x54,0x54,0x54,0x18,0x28,0xa8,0x4a,0x8a,0x6,
-+0x22,0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0x7f,0x8,0x7f,0x8,0xff,0x1,0x4,0x7e,0xc4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6,
-+0xa,0xf,0x8,0x7f,0x49,0x4e,0x79,0x4f,0x40,0x4a,0x6a,0x5b,0x4a,0x4a,0xbf,0x1,0x4,0x7e,0x44,0xd4,0x54,0x54,0x54,0x54,0x54,0x54,0x98,0x28,0x28,0x4a,0x8a,0x6,
-+0x8,0x8,0x8,0x17,0x30,0x50,0x91,0x19,0x9,0xf,0x11,0x21,0xff,0x1,0x1,0x1,0xa0,0x94,0x9e,0xe0,0x80,0x44,0x34,0xc,0x20,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x7d,0x5,0x7d,0x44,0x41,0x7d,0x5,0x28,0x13,0x11,0x1f,0x21,0xff,0x1,0x1,0x1,0xfc,0x4,0xfc,0x20,0xfc,0x24,0xfc,0x28,0xfc,0x2,0xf8,0x0,0xfe,0x0,0x0,0x0,
-+0x8,0x8,0x28,0x28,0x3e,0x48,0x48,0x88,0xe,0x18,0x68,0x8,0x8,0x8,0x8,0x8,0x80,0x80,0x80,0x84,0x8c,0x90,0xa0,0xc0,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x8,0x8,0x2b,0x28,0x3e,0x48,0x49,0x88,0xe,0x18,0x6b,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0xe0,0x40,0x40,0x5c,0xe0,0x40,0x44,0x7e,0xc0,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x8,0x28,0x28,0x3e,0x4b,0x48,0x88,0xe,0x19,0x69,0x9,0x9,0x9,0x9,0x9,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xb,0x28,0x28,0x3f,0x48,0x48,0x88,0xf,0x18,0x69,0x9,0x9,0x9,0x9,0x9,0x8,0xfc,0x40,0x48,0xfc,0x88,0x88,0x88,0xfe,0x0,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x28,0x28,0x3e,0x49,0x48,0x8b,0xe,0x18,0x69,0x9,0x9,0x9,0x9,0x9,0x20,0x20,0xa0,0xa8,0xfc,0x20,0x24,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x2b,0x28,0x3e,0x49,0x4f,0x88,0xd,0x19,0x69,0x9,0x9,0x8,0x8,0x8,0x40,0x48,0xfc,0xa0,0x98,0x8,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x8,0x9,0x29,0x29,0x3f,0x49,0x4b,0x8d,0x9,0x19,0x6f,0x8,0x9,0x9,0xa,0xc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x10,0x8,0x4,0x4,
-+0x10,0x10,0x57,0x51,0x7d,0x92,0x14,0x17,0x19,0x35,0xd5,0x12,0x13,0x12,0x14,0x18,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x96,0x7c,0x0,
-+0x10,0x10,0x53,0x52,0x7e,0x93,0x12,0x12,0x1f,0x33,0xd3,0x15,0x15,0x19,0x11,0x11,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc,
-+0x10,0x10,0x5f,0x50,0x7b,0x92,0x13,0x10,0x1f,0x34,0xd5,0x15,0x15,0x15,0x14,0x14,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x8,0x7f,0x8,0x3e,0x8,0x7e,0x9,0x0,0x7f,0x1,0x3f,0x1,0xff,0x1,0x5,0x2,0x4,0xfe,0x44,0x44,0x44,0x94,0x8,0xf0,0x0,0x10,0xf8,0x0,0xfe,0x0,0x0,0x0,
-+0x10,0x9,0x41,0x26,0x8,0x70,0x23,0xc,0x7f,0x1,0x3f,0x1,0xff,0x1,0x5,0x2,0x40,0x50,0x4c,0x54,0x60,0xc0,0x0,0xf0,0x0,0x10,0xf8,0x0,0xfe,0x0,0x0,0x0,
-+0x0,0xc,0xf2,0x12,0x14,0x78,0x17,0x12,0x1e,0xf2,0x12,0x14,0x24,0x29,0x40,0x0,0x0,0x86,0xb8,0x88,0x48,0x3e,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x28,0x10,
-+0x0,0xd,0xf1,0x12,0x14,0x78,0x17,0x10,0x17,0xfc,0x14,0x14,0x24,0x27,0x20,0x40,0x0,0x6,0x38,0x88,0x48,0x3e,0xc8,0x8,0xc8,0x7e,0x48,0x48,0x48,0xc8,0x28,0x10,
-+0x0,0x3e,0x23,0x3e,0x21,0x3e,0x62,0xbe,0x0,0x3f,0x1,0x1f,0x1,0xff,0x1,0x3,0x40,0x28,0xfc,0x50,0xfe,0x20,0xf8,0x20,0x20,0xf8,0x0,0xf0,0x4,0xfe,0x0,0x0,
-+0x2,0x3f,0x2,0xff,0x2,0xf,0x34,0xc7,0x0,0x3f,0x2,0x1f,0x2,0xff,0x2,0x1,0x20,0xc0,0x84,0xfe,0x0,0xe0,0x8,0xf8,0x30,0xc0,0x0,0xf0,0x0,0xfa,0x2,0xfe,
-+0x4,0x1e,0xf0,0x10,0x11,0x10,0x7d,0x11,0x11,0x1e,0xf3,0x10,0x10,0x10,0xf,0x0,0x40,0x40,0x88,0x84,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x22,0x22,0xfe,0x0,
-+0x3f,0x1,0x1f,0x1,0x7f,0x1,0x0,0x4,0x79,0x10,0x7c,0x10,0xff,0x10,0x14,0x18,0xf8,0x0,0xf0,0x0,0xf8,0x2,0xfe,0x0,0xf8,0x40,0xf8,0x40,0xfc,0x40,0x42,0x3e,
-+0x0,0x18,0xe0,0x2e,0x23,0x24,0xf4,0x2e,0x22,0x22,0xfb,0x24,0x2a,0x31,0x20,0x1f,0x20,0x28,0xfc,0x28,0xfe,0x28,0xf8,0x20,0xf8,0x20,0xfc,0x20,0x22,0xfe,0x2,0xfe,
-+0x10,0x10,0x25,0x7e,0x10,0xff,0x28,0x4c,0x92,0x24,0x49,0x12,0x64,0x8,0x30,0xc0,0x8,0x3c,0xe0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x22,0x22,0x1e,
-+0x8,0x8,0x15,0x22,0x7f,0x80,0x71,0x55,0x55,0x75,0x55,0x55,0x75,0x51,0x55,0x52,0x8,0x3c,0xe0,0x20,0x20,0xa8,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x22,0x22,0x1e,
-+0x8,0x49,0x2a,0x7f,0x41,0x5d,0x55,0x5d,0x41,0x3f,0x2,0x1f,0x2,0xff,0x2,0x1,0x20,0x20,0x24,0x7e,0xa8,0x10,0x28,0xc6,0x30,0xc0,0x0,0xf0,0x0,0xfa,0x2,0xfe,
-+0x1,0x39,0xe2,0x27,0x2a,0x23,0xf2,0x2f,0x20,0x23,0xfa,0x23,0x22,0x23,0x20,0x1f,0x0,0xf0,0x20,0xf8,0x48,0xf8,0x48,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xfa,0x2,0xfe,
-+0x2,0x39,0xe7,0x21,0x25,0x23,0xf1,0x2f,0x20,0x23,0xfa,0x23,0x22,0x23,0x20,0x1f,0x10,0x20,0xfc,0x20,0x28,0x30,0x24,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf2,0x2,0xfe,
-+0x77,0x55,0x77,0x55,0x77,0x55,0x77,0x24,0x3f,0x64,0x7f,0xa4,0x3f,0x24,0x3f,0x20,0x8,0x3c,0xe0,0x20,0x20,0x28,0xfc,0x20,0xa0,0x24,0xfe,0x20,0x20,0x22,0xa2,0x1e,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xa,0xa,0x4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x88,0x88,0x88,0x88,0x88,0x88,0x8a,0x8a,0x84,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x2,0x2,0x22,0x22,0x22,0x22,0x22,0x3f,0x0,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x8,0x28,0x28,0x28,0x28,0x28,0xea,0x2a,0x4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x12,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x40,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x4a,0x44,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x4,0xf,0x10,0x6d,0x2,0xd,0x76,0x1,0xc,0x3,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xc8,0x88,0x8,0x8,0x88,0x78,0xa,0xa,0x4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x7f,0x9,0x49,0x29,0x29,0x9,0x9,0xff,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x8,0x28,0x48,0x88,0x8,0xa,0xfa,0x4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x3f,0x22,0x22,0x2f,0x22,0x25,0x28,0x3f,0x20,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x28,0x28,0xa8,0x28,0x28,0xaa,0xea,0x24,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x4,0x7f,0x4,0x3f,0x20,0x3f,0xa,0xa,0x12,0x61,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x8,0x88,0x88,0x88,0x8,0x2a,0x2a,0xe4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x3f,0x26,0x3f,0x0,0x7f,0x49,0x49,0xff,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xc8,0x48,0xc8,0x8,0xe8,0x28,0x2a,0xfa,0x4,
-+0x10,0x10,0x11,0x1f,0x22,0x42,0x12,0x12,0x12,0x14,0x14,0x8,0x14,0x22,0x43,0x81,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,
-+0x8,0x8,0xa,0xff,0x8,0x7f,0x49,0x49,0x7f,0x49,0x1c,0x2b,0x49,0x88,0x9,0xa,0x40,0x40,0x44,0x7e,0x48,0x88,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x10,0x7e,0x42,0x7e,0x42,0x7f,0x10,0xa,0xff,0x10,0x1e,0x22,0x22,0x4b,0x86,0x40,0x40,0x44,0x7e,0x88,0x88,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x48,0x4b,0x48,0x4b,0x7c,0x41,0x40,0x7a,0x49,0x48,0x4f,0x48,0x48,0x88,0x3,0x40,0x48,0xfc,0x40,0xfe,0x2,0x24,0xa0,0x20,0x20,0x24,0xfe,0x40,0x50,0x8c,0x4,
-+0x9,0x49,0x4f,0x49,0x49,0x7d,0x41,0x41,0x78,0x48,0x4b,0x48,0x48,0x49,0x8a,0x8,0x48,0x48,0xfe,0x48,0x48,0x78,0x0,0xfc,0x20,0x24,0xfe,0x70,0xa8,0x2e,0x24,0x20,
-+0x10,0x50,0x57,0x54,0x57,0x7c,0x47,0x44,0x75,0x55,0x55,0x55,0x55,0x55,0x99,0x11,0x40,0x24,0xfe,0x4,0xfc,0x28,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x24,0x2c,
-+0x0,0x0,0x3f,0x11,0x9,0x9,0x7f,0x2,0xff,0x4,0x7,0xa,0x11,0x20,0x43,0x1c,0x10,0x78,0x80,0x10,0x10,0x20,0xfc,0x0,0xfe,0x0,0xf0,0x20,0x40,0x80,0x60,0x1e,
-+0x4,0xe,0xf0,0x3,0x93,0x55,0x1,0x9,0xff,0x9,0x49,0x29,0x9,0xa,0x2c,0x11,0x24,0x3e,0x20,0xfe,0x22,0xf8,0x24,0x3c,0x0,0x78,0x48,0x48,0x48,0x4a,0x8a,0x6,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x42,0x42,0x8a,0x4,0x8,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x8,0x28,0x10,
-+0x4,0x3e,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x42,0x42,0x8a,0x4,0x8,0x18,0x20,0x40,0x84,0xc,0x10,0x20,0x40,0x80,0x4,0xc,0x10,0x20,0x40,0x80,
-+0x2,0x1,0xff,0x10,0x10,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x0,0x10,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x4,0x3e,0x24,0x24,0x25,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x44,0x45,0x95,0xa,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x8,0x8,0x8,
-+0x4,0x3f,0x24,0x24,0x24,0x3c,0x27,0x24,0x24,0x3c,0x24,0x24,0x44,0x45,0x96,0x8,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x4,0x3e,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x95,0xa,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x50,0x50,0x88,0xc8,0xa8,0x6,0x4,
-+0x4,0x3e,0x24,0x24,0x27,0x3c,0x24,0x24,0x24,0x3d,0x25,0x26,0x44,0x44,0x95,0x8,0x40,0x40,0x40,0x44,0xfe,0x80,0x80,0xa0,0xa0,0x20,0x40,0x50,0x48,0x84,0xfc,0x4,
-+0x4,0x3e,0x24,0x27,0x24,0x3d,0x25,0x25,0x25,0x3d,0x24,0x24,0x44,0x44,0x94,0x8,0x20,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x22,0x22,0x1e,0x0,
-+0x4,0x3e,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x14,0x8,
-+0x10,0xc,0x3,0xc,0x12,0xff,0x4,0x8,0x1f,0x28,0xcf,0x8,0xf,0x8,0x8,0x8,0x10,0x70,0x80,0x60,0x14,0xfe,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x95,0xa,0x80,0x80,0x80,0xfe,0x82,0x24,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x4,0x3e,0x24,0x24,0x27,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x45,0x45,0x96,0x8,0x80,0xa0,0x90,0x94,0xfe,0xa0,0xa4,0xa4,0xa8,0xa8,0xb0,0xa0,0x62,0x22,0x1e,0x0,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x25,0x27,0x3c,0x24,0x24,0x45,0x46,0x94,0x8,0x40,0x40,0x44,0xfe,0x80,0xa0,0x20,0x24,0xfe,0x20,0xa8,0xa4,0x26,0x22,0xa0,0x40,
-+0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x40,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,
-+0x4,0x3e,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0xa,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x24,0x44,0x44,0x94,0x8,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x3c,0x24,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x44,0x94,0x8,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x1,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x4,0x3e,0x24,0x24,0x25,0x3d,0x26,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x80,0x80,0x84,0xfe,0x40,0x40,0x48,0x7c,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40,
-+0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x96,0x8,0x8,0x1c,0xe0,0x10,0x50,0x50,0x50,0x50,0x48,0x48,0x48,0x44,0x54,0x54,0x72,0x0,
-+0x4,0x3e,0x24,0x24,0x25,0x3e,0x24,0x24,0x25,0x3c,0x24,0x25,0x44,0x44,0x94,0xb,0x40,0x40,0xa0,0xa0,0x18,0x36,0x40,0x88,0x10,0x20,0x44,0x88,0x10,0x20,0xc0,0x0,
-+0x4,0x3e,0x24,0x24,0x25,0x3e,0x24,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x80,0x80,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x84,0x4,0x14,0x8,
-+0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x10,0x10,0x10,0x2a,0x4a,0xa6,0x12,
-+0x4,0x3f,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3d,0x24,0x24,0x44,0x44,0x97,0x8,0x0,0xfc,0x8,0x10,0x20,0x58,0x86,0x2,0x0,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x3e,0x25,0x24,0x24,0x3c,0x27,0x24,0x24,0x3c,0x24,0x24,0x44,0x45,0x96,0x8,0x20,0x20,0x24,0xac,0xb0,0x24,0xfe,0x50,0x50,0x50,0x50,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x4,0xfe,0x4,0x14,0xfc,0x4,0x4,0x74,0x54,0x54,0x54,0x74,0x4,0x4,0x14,0x8,
-+0x0,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x4,0xfe,0x4,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0xfc,0x4,
-+0x4,0x3e,0x24,0x24,0x25,0x3e,0x24,0x24,0x24,0x3f,0x24,0x24,0x44,0x44,0x95,0x8,0x20,0x20,0x50,0x88,0x6,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x48,0x84,0xfc,0x4,
-+0x0,0x3d,0x24,0x24,0x24,0x3c,0x25,0x24,0x27,0x3c,0x24,0x25,0x46,0x44,0x94,0x8,0x0,0x8,0x90,0x60,0x50,0x8c,0x24,0x20,0xfe,0x20,0xa8,0x26,0x22,0x20,0xa0,0x40,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x24,0x25,0x24,0x3c,0x24,0x25,0x44,0x44,0x94,0x9,0x40,0x20,0x4,0xfe,0x40,0x48,0x88,0xf4,0x24,0x48,0x88,0x10,0x28,0x44,0x82,0x2,
-+0x5,0x3e,0x24,0x27,0x24,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x45,0x45,0x96,0x8,0x8,0x90,0x0,0xfc,0x90,0x90,0x90,0x94,0xfe,0x90,0x90,0x90,0x10,0x10,0x10,0x10,
-+0x4,0x3e,0x24,0x24,0x25,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x44,0x44,0x95,0xa,0x0,0x88,0x50,0x0,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x88,0x4,0x2,
-+0x4,0x3e,0x25,0x24,0x24,0x3c,0x27,0x24,0x24,0x3c,0x24,0x24,0x45,0x46,0x94,0x8,0x20,0x20,0x24,0xa4,0xa8,0x20,0xfe,0x20,0x60,0x70,0xa8,0xa8,0x26,0x24,0x20,0x20,
-+0x0,0x3c,0x27,0x24,0x24,0x3d,0x26,0x24,0x25,0x3e,0x24,0x25,0x46,0x44,0x94,0x8,0x0,0x4,0xfe,0x40,0x84,0x4c,0x70,0xa0,0x30,0x70,0xa8,0x28,0x26,0x24,0xa0,0x40,
-+0x0,0x3d,0x25,0x25,0x25,0x3d,0x24,0x24,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x4,0xfe,0x4,0x4,0x4,0xfc,0x20,0x24,0xfe,0x24,0x24,0x54,0x8c,0x4,0x14,0x8,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x24,0x24,0x3d,0x24,0x24,0x44,0x44,0x97,0x8,0x20,0x20,0xa8,0xa8,0xa8,0x74,0x22,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x3e,0x25,0x25,0x24,0x3c,0x25,0x24,0x24,0x3c,0x27,0x24,0x44,0x44,0x94,0x8,0x8,0x1c,0xe0,0x4,0xa4,0xa8,0xfc,0x10,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x4,0x3e,0x25,0x25,0x26,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x44,0x45,0x96,0x8,0x40,0x20,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x90,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x7b,0x4a,0x4a,0x4b,0x7a,0x4a,0x4b,0x4a,0x7a,0x4a,0x4a,0x4b,0x4a,0xac,0x10,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xa8,0xb0,0xa8,0xa8,0xa4,0x24,0x22,0xa0,0x40,
-+0x4,0x3e,0x27,0x24,0x25,0x3c,0x27,0x24,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x8,0x7c,0x48,0x4f,0x48,0x79,0x4a,0x4f,0x4a,0x7b,0x4a,0x4b,0x4a,0x48,0xa8,0x10,0x40,0x40,0x44,0xfe,0xa0,0x10,0x48,0xfe,0x48,0xf8,0x48,0xf8,0x48,0x40,0x44,0x3c,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x27,0x44,0x44,0x94,0x8,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0x50,
-+0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x24,0x24,0x44,0x45,0x96,0x8,0x20,0xa4,0x2e,0x24,0x24,0xac,0x24,0x24,0xfc,0x24,0x50,0x50,0x88,0x6,0x4,0x0,
-+0x0,0x7a,0x4b,0x4a,0x4c,0x79,0x48,0x48,0x4b,0x78,0x49,0x49,0x49,0x4a,0xa8,0x10,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0x20,0x28,0x26,0x22,0xa0,0x40,
-+0x0,0x78,0x4b,0x4a,0x4c,0x78,0x4b,0x48,0x48,0x79,0x49,0x49,0x49,0x4a,0xac,0x10,0x40,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x28,0x3c,0x20,0x20,0xa6,0x7c,0x0,
-+0x0,0x78,0x4f,0x49,0x49,0x79,0x4a,0x4f,0x49,0x79,0x4d,0x4b,0x49,0x4a,0xac,0x10,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x96,0x7c,0x0,
-+0x8,0x7c,0x4b,0x48,0x4b,0x78,0x4f,0x48,0x49,0x7b,0x4c,0x4b,0x48,0x48,0xa8,0x13,0x40,0x48,0xfc,0x40,0xfc,0x40,0xfe,0xa0,0x10,0xf8,0x46,0xf8,0x40,0xa0,0x98,0x8,
-+0x0,0x3c,0x27,0x24,0x24,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x54,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x8,0x7c,0x4b,0x48,0x48,0x7b,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4a,0xab,0x12,0x0,0x4,0xfe,0x40,0x84,0xfe,0x94,0x94,0xf4,0x94,0x94,0xf4,0x94,0x94,0xfc,0x4,
-+0x8,0x7d,0x49,0x49,0x49,0x79,0x49,0x49,0x48,0x7b,0x4a,0x4a,0x4a,0x4a,0xaf,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x94,0x94,0x94,0x94,0xfe,0x0,
-+0x0,0x7b,0x4a,0x4a,0x4b,0x78,0x4b,0x48,0x4f,0x79,0x49,0x48,0x48,0x48,0xa8,0x10,0x8,0xbc,0xa8,0xa8,0xb8,0x0,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x8,0x7c,0x48,0x49,0x4b,0x7c,0x4b,0x4a,0x4a,0x7b,0x4a,0x4a,0x4b,0x4a,0xaa,0x12,0x40,0x40,0xa0,0x10,0xf8,0x6,0xc4,0x54,0x54,0xd4,0x54,0x54,0xd4,0x44,0x54,0xc8,
-+0x0,0x7a,0x49,0x48,0x4b,0x78,0x4f,0x48,0x49,0x7a,0x4c,0x4b,0x48,0x48,0xab,0x10,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0x4e,0x44,0xf8,0x40,0x48,0xfc,0x0,
-+0x0,0x7a,0x49,0x4b,0x48,0x7f,0x48,0x49,0x4a,0x7c,0x4f,0x48,0x49,0x48,0xa9,0x16,0x40,0x48,0x50,0xfc,0x40,0xfe,0xa0,0x10,0x4e,0x44,0xfe,0x90,0x10,0xe0,0x18,0x4,
-+0x0,0x7b,0x48,0x49,0x49,0x79,0x49,0x48,0x4b,0x7a,0x4a,0x4b,0x4a,0x4a,0xaa,0x12,0x4,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x0,0xfe,0x8a,0x52,0xfe,0x22,0x22,0x2a,0x4,
-+0x10,0x8,0xfe,0x11,0x1e,0x22,0x2a,0x44,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x40,0x44,0xfe,0x18,0xe4,0xa8,0x90,0xc8,0xf6,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x8,0x7c,0x4b,0x4a,0x4c,0x79,0x49,0x49,0x49,0x79,0x49,0x4f,0x48,0x48,0xa9,0x12,0x40,0x20,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x90,0xc,0x4,
-+0x0,0x7a,0x49,0x48,0x4f,0x78,0x4f,0x48,0x49,0x7a,0x4d,0x49,0x48,0x49,0xaa,0x10,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0x4e,0x54,0x50,0xe0,0x50,0x4c,0xc0,
-+0x0,0x78,0x4b,0x4a,0x4d,0x78,0x4b,0x48,0x48,0x79,0x48,0x49,0x48,0x48,0xab,0x10,0x40,0x20,0xfe,0x52,0x8c,0x0,0xfe,0x40,0x88,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x8,0x7d,0x48,0x48,0x4b,0x7a,0x4d,0x49,0x49,0x79,0x48,0x49,0x49,0x49,0xa9,0x11,0x20,0xfc,0x88,0x50,0xfe,0x22,0xfc,0x24,0x24,0x2c,0x20,0xfc,0x4,0x4,0xfc,0x4,
-+0x1,0x79,0x4f,0x49,0x4b,0x78,0x4b,0x4a,0x4a,0x7a,0x4b,0x48,0x4a,0x49,0xae,0x10,0x8,0x8,0xc8,0x3e,0x88,0x8,0xbe,0xa2,0xa2,0x94,0x94,0x8,0x88,0xd4,0x14,0x62,
-+0x8,0x7f,0x48,0x4b,0x4a,0x7c,0x48,0x4b,0x48,0x79,0x4a,0x49,0x4a,0x49,0xaa,0x10,0x88,0xfe,0x88,0xfe,0x2,0xf8,0x0,0xfe,0x80,0x44,0xa8,0x70,0xa8,0x26,0xa4,0x40,
-+0x9,0x7d,0x49,0x49,0x48,0x7b,0x4a,0x4a,0x4b,0x78,0x4f,0x48,0x48,0x49,0xaa,0x10,0xfc,0x4,0x4,0xfc,0x0,0xde,0x52,0x52,0xde,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20,
-+0x8,0x7f,0x48,0x4b,0x4a,0x7a,0x4a,0x4b,0x48,0x7b,0x4a,0x4b,0x4a,0x4b,0xa8,0x17,0x40,0xfe,0x0,0xfc,0x94,0xf4,0x94,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0xfe,
-+0x8,0x7c,0x4b,0x4a,0x4b,0x7a,0x4b,0x4a,0x4b,0x7a,0x4b,0x4a,0x4a,0x4a,0xad,0x10,0x40,0x24,0xfe,0x88,0xfe,0x50,0xfc,0x54,0xfe,0x54,0xfc,0x50,0xd8,0xd4,0x52,0x50,
-+0x0,0x7a,0x49,0x4f,0x48,0x79,0x4a,0x4a,0x4b,0x7a,0x4c,0x4b,0x49,0x4a,0xac,0x10,0x40,0x48,0x50,0xfc,0xe0,0x50,0x48,0x8,0xbe,0xa8,0xa8,0x28,0x7e,0x8,0x8,0x8,
-+0x0,0x20,0x24,0x3e,0x20,0x21,0x22,0x3f,0x2,0x2,0x1a,0xe2,0x2,0x14,0x9,0x2,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x42,0x24,0x18,0x24,0x42,0x1,0xff,0x28,0x3e,0x6a,0xaa,0x2a,0x2a,0x2e,0x9,0xa,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x10,0x12,0xff,0x10,0x28,0x45,0xff,0x2,0x7a,0x4a,0x4a,0x4a,0x7a,0x2,0xb,0x6,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x2,0xf,0x78,0x8,0x8,0xff,0x28,0x4b,0x49,0x49,0x6b,0x49,0x49,0x7f,0x41,0x2,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x10,0xa,0x7f,0x0,0x22,0x15,0xff,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3f,0x22,0x40,0x40,0x40,0x7e,0x82,0x24,0xa0,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x8,0x14,0x22,0x7f,0x80,0x3e,0x23,0x3e,0x0,0x77,0x11,0x55,0x33,0x55,0x11,0x33,0x40,0x40,0x40,0x7e,0x42,0x84,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x4,0x7e,0x44,0x45,0x46,0x6d,0x6d,0x55,0x55,0x55,0x6d,0x6d,0x44,0x44,0x43,0x80,0x80,0x88,0xfc,0x8,0x8,0xe8,0x28,0x28,0xe8,0x28,0x10,0x4,0xfe,0x2,0xfe,0x0,
-+0x0,0x23,0x12,0x12,0xff,0x2,0x4a,0x4a,0x4a,0x52,0x52,0x1e,0xf3,0x44,0x4,0x18,0x8,0xfc,0x8,0x8,0x18,0x98,0xa8,0xa8,0x48,0x48,0xa8,0x98,0x1a,0xa,0xa,0x4,
-+0x4,0x7e,0x44,0x44,0x44,0x6c,0x6c,0x54,0x54,0x54,0x6f,0x6c,0x44,0x44,0x43,0x80,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x88,0xf8,0x88,0x88,0xfe,0x50,0x8a,0x2,0xfe,0x0,
-+0x0,0x7d,0x45,0x45,0x45,0x6d,0x6d,0x54,0x55,0x54,0x6c,0x6c,0x44,0x44,0x43,0x80,0x20,0xac,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x52,0x8a,0xfe,0x0,
-+0x10,0x18,0x14,0xfe,0x10,0x28,0x44,0x82,0x24,0x36,0xff,0x24,0x24,0x5a,0x49,0x92,0x8,0xfc,0x88,0x88,0x88,0xd8,0xd8,0xa8,0xa8,0xa8,0xd8,0xd8,0x8a,0x8a,0xa,0x4,
-+0x4,0x7e,0x44,0x44,0x45,0x6c,0x6d,0x54,0x56,0x55,0x6c,0x6d,0x46,0x44,0x43,0x80,0x20,0x20,0xa4,0xa8,0x50,0x88,0x6,0x88,0xaa,0xdc,0x88,0x54,0x22,0x2,0xfe,0x0,
-+0x2,0x3f,0x22,0x22,0x22,0x22,0x41,0x80,0x7f,0x21,0x22,0x14,0x8,0x14,0x23,0xc1,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,
-+0x10,0xfe,0x10,0x7c,0x0,0xfe,0x83,0xbe,0x1,0x7c,0x4,0x7c,0x40,0x7c,0x4,0x1b,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x7f,0x8,0x3e,0x0,0xff,0x91,0x92,0x7f,0x28,0x28,0x7e,0x8,0xff,0x8,0xb,0x8,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x7f,0x8,0x3e,0x0,0xff,0x91,0x9c,0x25,0x7e,0xaa,0x3e,0x2a,0x3e,0x4a,0x8b,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x2,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x1,0xff,0x8,0x4,0x3,0x2,0xc,0x70,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfc,0x80,0x4,0xfe,0x20,0x40,0x80,0x80,0x60,0x1c,
-+0x1,0xff,0x18,0x6,0x1,0xe,0xf2,0x2e,0x22,0x2e,0x22,0x2e,0x22,0x3f,0x20,0x40,0x0,0xfe,0x30,0xc0,0x0,0xe0,0x9e,0xe8,0x88,0xe8,0x88,0xe8,0x88,0xf8,0x8,0x8,
-+0x4,0x42,0x20,0x4,0xff,0x14,0x55,0x25,0x25,0x55,0x55,0x4c,0x8d,0x6,0x4,0x4,0x4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x54,0x48,
-+0x20,0x18,0x8,0x0,0xfe,0x20,0x25,0x3e,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x44,0x30,0x10,0x80,0x40,0x30,0x18,0x8,0x0,
-+0x20,0x18,0x8,0x1,0xfe,0x20,0x25,0x3e,0x25,0x25,0x25,0x25,0x45,0x45,0x94,0x8,0x80,0x80,0x84,0xfe,0x20,0x24,0xfe,0x20,0xfc,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x20,0x18,0x8,0x1,0xfe,0x21,0x24,0x3e,0x25,0x24,0x24,0x27,0x44,0x44,0x94,0x8,0x80,0x84,0xfe,0x0,0x18,0xe0,0x28,0x3c,0xe0,0x24,0x3e,0xe0,0x20,0x22,0x22,0x1e,
-+0x21,0x19,0x9,0xfe,0x24,0x21,0x3d,0x25,0x25,0x27,0x25,0x25,0x45,0x45,0x95,0xa,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x48,0x28,0xfe,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x20,0x18,0x8,0x1,0xfe,0x21,0x21,0x3d,0x26,0x24,0x25,0x24,0x44,0x44,0x97,0x8,0x80,0x80,0x84,0xfe,0x20,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x18,0x8,0x0,0xfd,0x22,0x20,0x3c,0x24,0x24,0x24,0x24,0x44,0x45,0x95,0xa,0x80,0x80,0x84,0xfe,0x0,0xfc,0x84,0x84,0xfc,0x80,0xa4,0xa8,0xb0,0x22,0x22,0x1e,
-+0x20,0x18,0x8,0x1,0xfe,0x23,0x20,0x3c,0x25,0x24,0x24,0x24,0x44,0x45,0x95,0xa,0x80,0x84,0xfe,0x40,0x24,0xfe,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0x2a,0x2a,0x26,
-+0x20,0x18,0x9,0x2,0xfe,0x20,0x20,0x3c,0x27,0x24,0x25,0x25,0x45,0x45,0x94,0x8,0x80,0x84,0xfe,0x20,0xf8,0x20,0x50,0x88,0xfe,0x8,0xe8,0x28,0x28,0xe8,0x8,0x18,
-+0x10,0x13,0x10,0x14,0x54,0x58,0x53,0x90,0x10,0x10,0x19,0x25,0x22,0x44,0x81,0x0,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x10,0x10,0x10,0x17,0x54,0x58,0x53,0x90,0x10,0x17,0x10,0x28,0x24,0x44,0x80,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x10,0x10,0x10,0x17,0x54,0x5a,0x52,0x92,0x12,0x13,0x10,0x28,0x24,0x44,0x80,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x10,0x14,0x55,0x59,0x52,0x95,0x19,0x11,0x11,0x29,0x25,0x45,0x80,0x0,0x40,0x40,0xa0,0xa0,0x10,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x24,0x4,0xfc,0x0,
-+0x10,0x10,0x17,0x10,0x54,0x54,0x58,0x91,0x13,0x15,0x11,0x29,0x25,0x45,0x41,0x81,0x0,0x4,0xfe,0x40,0x40,0x80,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x10,0x55,0x54,0x58,0x90,0x17,0x10,0x10,0x28,0x24,0x44,0x40,0x80,0x8,0x1c,0xe0,0x20,0x24,0xac,0xb0,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x10,0x13,0x54,0x54,0x58,0x90,0x11,0x10,0x10,0x28,0x24,0x44,0x43,0x80,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x10,0x17,0x54,0x58,0x50,0x91,0x13,0x10,0x10,0x28,0x25,0x42,0x47,0x80,0x40,0x20,0x4,0xfe,0x40,0x40,0x80,0x8,0xf0,0x20,0x40,0x80,0x8,0x4,0xfc,0x4,
-+0x1,0x2,0x4,0x8,0x3f,0x0,0x1f,0x10,0x10,0x1f,0x1,0x11,0x11,0x22,0xc,0x70,0x0,0x0,0x20,0x10,0xf8,0x0,0xf0,0x10,0x10,0xf0,0x8,0x10,0x20,0x80,0x60,0x1c,
-+0x10,0x10,0x10,0x15,0x55,0x59,0x53,0x95,0x11,0x10,0x17,0x28,0x24,0x44,0x40,0x80,0xa0,0xa0,0xa0,0x24,0x28,0x30,0x64,0x1c,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x12,0x11,0x10,0x14,0x57,0x58,0x50,0x93,0x10,0x10,0x17,0x28,0x24,0x44,0x40,0x80,0x8,0x10,0xa0,0x8,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x13,0x10,0x14,0x57,0x59,0x51,0x91,0x17,0x10,0x11,0x29,0x25,0x45,0x41,0x81,0x8,0xfc,0x80,0x88,0xfc,0x8,0x8,0x8,0xfe,0x0,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x14,0x55,0x59,0x52,0x95,0x18,0x10,0x13,0x2a,0x26,0x46,0x43,0x82,0x40,0x40,0xa0,0xa0,0x10,0x90,0x48,0xf6,0x14,0x20,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x24,0x22,0x20,0x24,0xac,0xb4,0xa4,0x24,0x25,0x26,0x24,0x24,0x54,0x4c,0x84,0x4,0x4,0xfe,0x4,0x4,0x44,0x24,0xa4,0x84,0x94,0xac,0xa4,0xe4,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x14,0x57,0x5a,0x53,0x92,0x13,0x10,0x10,0x2b,0x24,0x44,0x40,0x80,0x48,0x7c,0x40,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x1,0x11,0x11,0x11,0x22,0xc,0x30,0xc8,0x8,0x2a,0x2a,0x4d,0x14,0x12,0x20,0xc1,0x0,0x10,0x30,0x40,0x80,0x60,0x1e,0x24,0x20,0xa4,0xa8,0x30,0x50,0x48,0x8e,0x4,
-+0x21,0x21,0x21,0x2f,0xa9,0xb1,0xa1,0x27,0x24,0x24,0x24,0x24,0x57,0x48,0x80,0x1,0x4,0x3e,0x24,0xe4,0x24,0x3c,0x24,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8,
-+0x10,0x13,0x12,0x12,0x57,0x5a,0x52,0x93,0x10,0x10,0x13,0x29,0x24,0x40,0x47,0x80,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x40,0x20,0xfc,0x8,0x88,0x90,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0x57,0x5a,0x52,0x93,0x10,0x1f,0x12,0x12,0x2a,0x26,0x43,0x82,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x88,0x50,0x20,0x90,0xe,0x4,
-+0x10,0x13,0x12,0x12,0x57,0x5a,0x52,0x93,0x12,0x12,0x12,0x17,0x2a,0x2a,0x42,0x82,0x44,0xbe,0x24,0x24,0xa4,0x42,0x0,0xbc,0x4,0x24,0x28,0x90,0x10,0x28,0x4e,0x84,
-+0x8,0xb,0xa,0x13,0x30,0x5f,0x90,0x11,0x16,0x11,0x9,0x9,0x12,0x4,0x18,0x60,0x8,0xfc,0x8,0xf8,0x40,0xfe,0xe0,0x50,0x4e,0x40,0x10,0x20,0xc0,0x40,0x30,0xe,
-+0x10,0x10,0x17,0x14,0x54,0x5b,0x50,0x93,0x12,0x13,0x12,0x2b,0x24,0x40,0x47,0x80,0x80,0x40,0xfe,0x2,0x4,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x13,0x12,0x56,0x5b,0x52,0x92,0x13,0x15,0x15,0x29,0x25,0x45,0x41,0x81,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc,
-+0x10,0x10,0x14,0x12,0x56,0x58,0x50,0x96,0x12,0x12,0x12,0x2a,0x26,0x45,0x88,0x0,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0xa4,0xa8,0x90,0xc8,0x84,0x6,0xfc,0x0,
-+0x20,0x27,0x24,0x25,0xac,0xb5,0xa6,0x20,0x27,0x24,0x24,0x27,0x54,0x4c,0x87,0x4,0x84,0x7e,0x24,0x24,0xa4,0xa4,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x11,0x11,0x11,0x15,0x55,0x58,0x53,0x92,0x13,0x10,0x13,0x29,0x24,0x44,0x41,0x86,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x94,0xfc,0x0,0xfc,0x8,0x90,0x60,0x90,0xe,
-+0x20,0x20,0x2f,0x21,0xa8,0xb7,0xa4,0x25,0x26,0x25,0x25,0x25,0x55,0x4c,0x84,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0xa4,0x14,0xc,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x0,0x3f,0x21,0x3f,0x20,0x3f,0x40,0x7f,0x95,0x24,0xd,0x11,0x11,0x22,0xc,0x70,0x8,0x8,0x8,0x8,0x7e,0x8,0x28,0xa8,0x8,0xa8,0x10,0x10,0x20,0x80,0x60,0x1c,
-+0x20,0x2f,0x24,0x22,0xa8,0xb2,0xa4,0x20,0x23,0x22,0x22,0x23,0x52,0x4a,0x83,0x2,0x84,0xfe,0xa4,0x94,0x84,0x94,0xa4,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x20,0x20,0x27,0x24,0xad,0xb4,0xa7,0x24,0x25,0x26,0x24,0x2f,0x50,0x49,0x86,0x18,0x40,0x84,0xfe,0x44,0x54,0x44,0xfc,0x44,0x54,0x4c,0x44,0xfe,0xa0,0x10,0xe,0x4,
-+0x10,0x17,0x12,0x11,0x57,0x59,0x52,0x94,0x1b,0x12,0x12,0x13,0x2a,0x26,0x43,0x82,0x1c,0xe0,0x48,0x50,0xfe,0x50,0x48,0x4e,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x8,
-+0x21,0x28,0x24,0x23,0xa8,0xb0,0xad,0x26,0x24,0x27,0x24,0x27,0x54,0x4a,0x91,0x0,0x4,0x88,0x0,0xfe,0x40,0xc0,0x24,0x68,0xb0,0x70,0xa8,0x26,0xa0,0x46,0xfc,0x0,
-+0x4,0xfe,0x10,0x32,0xdc,0x28,0xdc,0x2a,0xd9,0x1,0x9,0x9,0x12,0x4,0x18,0xe0,0x4,0xfe,0x10,0x32,0xdc,0x28,0xdc,0x2a,0xd8,0x0,0x10,0x20,0x80,0x40,0x30,0xe,
-+0x27,0x22,0x21,0x27,0xac,0xb7,0xa0,0x27,0x24,0x27,0x24,0x27,0x55,0x4d,0x86,0x4,0xfc,0x48,0x50,0xfc,0xa4,0xfc,0x0,0x88,0x88,0xfe,0x88,0xc8,0x28,0x8,0xa8,0x10,
-+0x11,0x9,0x7f,0x48,0xbe,0x1c,0x2a,0x9,0x7f,0x2,0xd,0x39,0xc5,0x2,0x4,0x18,0x10,0x20,0xfe,0x22,0xfc,0x70,0xa8,0x20,0xfc,0x80,0x60,0x38,0x46,0x80,0x40,0x38,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x48,0x44,0x44,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x88,0x44,0x42,0x2,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x7f,0x2,0x3f,0x4,0xff,0x8,0x1f,0x24,0x42,0x80,0x0,0x24,0x22,0x42,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x20,0xfc,0x20,0x20,0xa0,0x40,0x88,0x44,0x44,
-+0x0,0x78,0x48,0x49,0x4a,0x79,0x49,0x49,0x49,0x79,0x49,0x0,0x28,0x24,0x44,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x90,0x48,0x46,0x2,
-+0x1,0x7f,0x1,0x3f,0x0,0x1f,0x10,0x1f,0x4,0xff,0x0,0x1f,0x10,0x1f,0x24,0x42,0x0,0xfc,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x44,0xfe,0x0,0xf0,0x10,0xf0,0x88,0x44,
-+0x2,0x1,0x3f,0x20,0x20,0x3f,0x21,0x21,0x3f,0x21,0x21,0x22,0x42,0x44,0x88,0x30,0x0,0x8,0xfc,0x8,0x8,0xf8,0x40,0x24,0xfe,0x0,0x0,0x80,0x80,0x60,0x1c,0x8,
-+0x2,0x1,0x3f,0x20,0x20,0x3f,0x24,0x23,0x29,0x26,0x22,0x3f,0x40,0x40,0x80,0x0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x20,0x20,0x20,0x24,0x3e,0xe0,0x20,0x20,0x20,0x20,
-+0x2,0x1,0x3f,0x20,0x20,0x3f,0x20,0x2f,0x28,0x28,0x2b,0x2a,0x4a,0x4b,0x88,0x8,0x0,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x4,0x8,
-+0x1,0x0,0x3f,0x20,0x3f,0x20,0x2f,0x28,0x2f,0x20,0x2f,0x28,0x4f,0x48,0x88,0x7,0x0,0x88,0xfc,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x0,0xf8,0x88,0xf8,0x2,0x2,0xfe,
-+0x1,0x0,0x3f,0x20,0x3f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x42,0x5e,0x82,0x2,0x0,0x88,0xfc,0x8,0xf8,0x40,0x48,0x7c,0x40,0x50,0x78,0x40,0x48,0x7c,0x40,0x40,
-+0x2,0x1,0x0,0x1f,0x0,0x1,0x1,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0xc0,0x80,0x0,0x0,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x13,0x2,0xfe,0xa,0x12,0x12,0x3b,0x56,0x92,0x12,0x12,0x12,0x12,0x11,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x20,0x10,0x3,0xfc,0x8,0x10,0x10,0x3b,0x54,0x90,0x10,0x11,0x11,0x12,0x14,0x18,0x8,0x7c,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x20,0x10,0x0,0xfd,0x9,0x11,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x11,0x17,0x10,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x10,0x0,0xfc,0xb,0x10,0x10,0x38,0x57,0x90,0x10,0x10,0x11,0x12,0x17,0x10,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x20,0x10,0x0,0xfb,0x8,0x10,0x10,0x38,0x57,0x92,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x10,0x0,0xfb,0x8,0x10,0x10,0x39,0x55,0x91,0x12,0x12,0x14,0x18,0x11,0x12,0xa0,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x21,0x11,0x1,0xfd,0xa,0x14,0x10,0x38,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x20,0x10,0x0,0xfc,0x9,0x12,0x10,0x38,0x54,0x90,0x11,0x11,0x12,0x10,0x10,0x10,0x80,0x80,0x80,0xfe,0x2,0x4,0x20,0x20,0xa8,0xa4,0x24,0x22,0x22,0x20,0xa0,0x40,
-+0x20,0x10,0x3,0xfa,0xa,0x12,0x13,0x3a,0x56,0x92,0x12,0x12,0x12,0x13,0x12,0x10,0x8,0x3c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x50,0x90,0x4a,0x2a,0x4,
-+0x20,0x13,0x0,0xfc,0xb,0x10,0x10,0x3b,0x56,0x92,0x12,0x13,0x12,0x10,0x10,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8,
-+0x20,0x10,0x0,0xfc,0xb,0x12,0x12,0x3a,0x56,0x92,0x12,0x12,0x10,0x10,0x11,0x16,0x40,0x48,0x7c,0x40,0xf8,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0xa0,0x98,0xc,0x4,
-+0x20,0x10,0x0,0xfc,0xa,0x11,0x10,0x38,0x55,0x92,0x14,0x10,0x11,0x11,0x12,0x14,0x20,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xa0,0xb0,0xac,0xa4,0xa0,0x22,0x22,0x1e,0x0,
-+0x21,0x11,0x7,0xf9,0x9,0x11,0x11,0x39,0x55,0x91,0x11,0x1f,0x10,0x11,0x12,0x14,0x10,0x10,0xfc,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x21,0x10,0x0,0xfd,0x9,0x11,0x11,0x39,0x55,0x91,0x10,0x17,0x10,0x10,0x10,0x10,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20,
-+0x21,0x11,0x7,0xf9,0x17,0x11,0x17,0x39,0x55,0x90,0x17,0x10,0x10,0x10,0x13,0x14,0x0,0x4,0xfe,0x14,0xd4,0x14,0xd4,0x24,0x4c,0x40,0xfe,0x40,0x40,0xa0,0x1e,0x4,
-+0x21,0x10,0x0,0xfb,0x8,0x10,0x11,0x38,0x54,0x90,0x13,0x10,0x12,0x12,0x14,0x10,0x4,0x88,0x50,0xfe,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0,0xa4,0x52,0x52,0x0,
-+0x20,0x17,0x0,0xff,0x8,0x13,0x1a,0x37,0x51,0x9f,0x10,0x13,0x12,0x12,0x13,0x12,0x40,0xfe,0x40,0xfc,0x0,0xf8,0x8,0xf8,0x10,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8,
-+0x20,0x17,0x0,0xff,0xc,0x17,0x11,0x3b,0x55,0x93,0x11,0x1f,0x11,0x13,0x1d,0x11,0x40,0xfe,0x0,0xbc,0xa4,0xbc,0x10,0xf8,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4,
-+0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0xa,0x29,0x28,0x48,0x88,0x7,0x0,0x4,0xfe,0x0,0x80,0x60,0x30,0x10,0x0,0x0,0x0,0x88,0x84,0x12,0x12,0xf0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7f,0x0,0xa,0x29,0x28,0x48,0x88,0x7,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x88,0x84,0x12,0x12,0xf0,0x0,
-+0x0,0x0,0x7e,0x3,0x24,0x14,0x8,0x14,0x22,0x40,0x2a,0x29,0x48,0x88,0x7,0x0,0x10,0x10,0x14,0xfe,0x10,0x90,0x50,0x10,0x50,0x20,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x8,0x8,0x7f,0x8,0x3e,0x8,0x7f,0x8,0x8,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x0,0x4,0x7e,0x24,0x24,0x24,0x44,0x54,0x88,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0xff,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x0,0x10,0xf8,0x0,0xfe,0x0,0xf8,0x0,0xfe,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x0,0xff,0x2,0x4,0x3f,0x24,0x24,0x24,0x24,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x4,0xfe,0x0,0x8,0xfc,0x48,0x48,0x48,0x58,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x10,0x17,0x10,0x2a,0x29,0x48,0x88,0x7,0x0,0x8,0x1c,0xe0,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x40,0x30,0x10,0x5,0xa,0x10,0xe0,0x21,0x26,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x80,0x80,0xfc,0x4,0x48,0x40,0xa0,0x10,0xe,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x1,0x7f,0x1,0x3f,0x0,0x7f,0x40,0x8f,0x8,0x8,0x30,0xa,0x29,0x48,0x88,0x7,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x2,0xe4,0x20,0x28,0x38,0x0,0x84,0x92,0x12,0xf0,
-+0x8,0x12,0x21,0x4c,0x12,0x30,0x51,0x96,0x12,0x10,0xa,0x29,0x28,0x48,0x88,0x7,0x8,0x7c,0x0,0x4,0xfe,0x88,0x8,0x8,0x28,0x10,0x0,0x88,0x84,0x12,0x12,0xf0,
-+0x0,0x7e,0x42,0x7e,0x49,0x7e,0x48,0x49,0x65,0x42,0x0,0x2a,0x29,0x48,0x88,0x7,0x40,0x40,0x44,0xfe,0x48,0x28,0x10,0x28,0x4e,0x84,0x0,0x8,0x84,0x92,0x12,0xf0,
-+0x3f,0x22,0x2f,0x22,0x3f,0x22,0x27,0x2a,0x23,0x20,0x3f,0xa,0x29,0x48,0x88,0x7,0xfc,0x20,0xf8,0xa0,0xfc,0x0,0xf0,0x10,0xf0,0x0,0xfc,0x0,0x84,0x92,0x12,0xf0,
-+0xe,0x78,0x8,0xff,0x8,0x3e,0x22,0x22,0x22,0x3e,0x0,0x2a,0x29,0x48,0x88,0x7,0x20,0x24,0xfe,0x84,0xfc,0x84,0xfc,0x84,0xfc,0x84,0x0,0x8,0x84,0x92,0x12,0xf0,
-+0x8,0xff,0x0,0x7e,0x43,0x7e,0x0,0x7f,0x4,0xff,0x8,0x1a,0x51,0x50,0x90,0xf,0x40,0x40,0x44,0xfe,0x4,0x44,0x28,0x10,0x28,0x46,0x84,0x0,0x84,0x92,0x12,0xf0,
-+0x10,0x17,0x12,0xf9,0x17,0x39,0x33,0x55,0x91,0x13,0x0,0x2a,0x29,0x48,0x88,0x7,0x10,0xd0,0x94,0x7e,0xd0,0x58,0x34,0x52,0x90,0x10,0x0,0x8,0x84,0x92,0x12,0xf0,
-+0x41,0x2f,0x11,0x87,0x61,0x2f,0x15,0x26,0xe4,0x24,0x0,0x2a,0x29,0x48,0x88,0x7,0x10,0xfe,0x10,0xfc,0x10,0xfc,0x14,0xac,0x44,0xc,0x0,0x8,0x84,0x92,0x12,0xf0,
-+0x8,0xff,0x14,0xff,0x22,0x3e,0x22,0x3e,0x8,0x7f,0x8,0xa,0x51,0x50,0x90,0xf,0x40,0x7e,0xa8,0x10,0xee,0x0,0x7c,0x44,0x54,0x54,0x28,0x44,0x84,0x92,0x12,0xf0,
-+0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x8,0xfe,0x8,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x7f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x8,0xfe,0x8,0xf8,0x0,0xfc,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x7d,0x5,0x9,0x11,0x25,0xc2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x8,0x18,0xa0,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x22,0x11,0x9,0x0,0x7f,0x41,0x81,0x1,0x3d,0x5,0x9,0x11,0x21,0xc1,0x5,0x2,0x8,0x18,0x20,0x40,0xfe,0x2,0x4,0x10,0xa0,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x1,0x1,0x7d,0x5,0x9,0x11,0x25,0x42,0x8,0x9,0xfa,0x1c,0x2c,0xcb,0x28,0x10,0x8,0x10,0xa0,0xc0,0x40,0x30,0xe,0x4,0x20,0x24,0xe8,0x70,0xa8,0x26,0xa4,0x40,
-+0x4,0xfe,0x10,0x10,0x20,0x24,0x3e,0x64,0xa4,0x24,0x24,0x24,0x25,0x3d,0x22,0x4,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xa,0xa,0x6,0x0,
-+0x4,0xfd,0x10,0x10,0x20,0x20,0x3c,0x67,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x1,0xfe,0x10,0x20,0x20,0x21,0x7c,0xa4,0x24,0x24,0x24,0x25,0x3d,0x22,0x0,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0x54,0x54,0x54,0x94,0xa4,0x24,0x44,0x54,0x88,
-+0x1,0x7f,0x1,0x3f,0x1,0x7f,0x1,0xff,0x4,0x4,0xf,0x18,0x28,0xc8,0xf,0x8,0x0,0xfc,0x0,0xf8,0x0,0xfc,0x0,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0xfe,0x13,0x10,0x20,0x21,0x3d,0x67,0xa4,0x24,0x24,0x27,0x24,0x3c,0x20,0x0,0x40,0x48,0xfc,0x80,0xa0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x4,0xfe,0x11,0x10,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x24,0x24,0x3c,0x20,0x0,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x22,0x1e,0x0,
-+0x4,0xfe,0x10,0x10,0x20,0x21,0x3d,0x64,0xa4,0x24,0x24,0x24,0x25,0x3e,0x24,0x0,0x4,0xfe,0x8,0x88,0x88,0x8,0xfe,0x28,0x28,0x48,0x48,0x88,0x8,0x8,0x28,0x10,
-+0x4,0xfe,0x11,0x11,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x25,0x3d,0x21,0x2,0x4,0x0,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x4,0xfe,0x13,0x10,0x20,0x24,0x3f,0x64,0xa4,0x24,0x24,0x24,0x25,0x3f,0x22,0x0,0x8,0x3c,0xc0,0x40,0x20,0x20,0xfc,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x86,0x7c,
-+0x4,0xff,0x12,0x12,0x23,0x22,0x3a,0x6a,0xaa,0x2a,0x2a,0x2a,0x3b,0x24,0x8,0x10,0x8,0xfc,0x8,0x8,0x18,0x98,0xa8,0xa8,0x48,0x48,0xa8,0x98,0x1a,0xa,0xa,0x4,
-+0x4,0xfe,0x10,0x11,0x20,0x20,0x3c,0x67,0xa4,0x24,0x24,0x24,0x25,0x3d,0x20,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x40,0x80,0x8,0xfc,0x4,0x0,
-+0x4,0xfe,0x13,0x10,0x20,0x20,0x3d,0x65,0xa4,0x24,0x24,0x24,0x24,0x3c,0x21,0x6,0x88,0x88,0xfe,0x88,0x88,0x0,0x4,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0xff,0x12,0x12,0x23,0x22,0x3a,0x6a,0xaa,0x2a,0x2a,0x2a,0x3a,0x24,0x9,0x12,0x8,0xfc,0x0,0x4,0xfe,0x40,0x44,0x7e,0x44,0x44,0x44,0x84,0x84,0x84,0x28,0x10,
-+0x4,0x4,0x7f,0x5,0x5,0x9,0x37,0xc1,0x0,0xff,0x4,0xf,0x18,0x28,0xcf,0x8,0x40,0x28,0xfc,0x0,0x30,0xc4,0x4,0xfc,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x4,0xfe,0x10,0x10,0x21,0x22,0x3c,0x64,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x80,0x80,0x84,0xfe,0x40,0x40,0x48,0x7c,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,
-+0x4,0xfe,0x10,0x10,0x20,0x25,0x3e,0x64,0xa5,0x24,0x24,0x24,0x24,0x3c,0x23,0x0,0x20,0x20,0x50,0x50,0x88,0x4,0x2,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0xfe,0x11,0x11,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x25,0x25,0x3d,0x21,0x0,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x10,0x50,0x4a,0xaa,0x4,
-+0x4,0xfe,0x10,0x13,0x20,0x20,0x3d,0x65,0xa4,0x24,0x24,0x24,0x24,0x3c,0x27,0x0,0x40,0x20,0x24,0xfe,0x0,0x8,0x8,0x8,0x90,0x90,0x90,0x90,0x20,0x24,0xfe,0x0,
-+0x4,0xfe,0x10,0x13,0x22,0x24,0x3e,0x64,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x40,0x20,0x20,0xfe,0x2,0x84,0x80,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x0,0xfc,0x13,0x20,0x20,0x23,0x7a,0xaa,0x2b,0x28,0x28,0x28,0x38,0x1,0x2,0x90,0x90,0x94,0xfe,0x94,0x94,0xfc,0x90,0x90,0xfe,0x92,0x92,0x9a,0x94,0x10,0x10,
-+0x8,0xff,0x12,0x12,0x22,0x22,0x3a,0x6f,0xaa,0x2a,0x2a,0x2a,0x3a,0x22,0x4,0x8,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0x44,0x54,0x48,
-+0x4,0xfe,0x13,0x10,0x20,0x20,0x3c,0x67,0xa5,0x25,0x25,0x25,0x25,0x3d,0x20,0x0,0x88,0x88,0xfe,0x88,0x88,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x8,0xfc,0x17,0x10,0x22,0x21,0x39,0x68,0xaf,0x28,0x28,0x29,0x29,0x3a,0x24,0x8,0x40,0x48,0xfc,0x40,0x48,0x48,0x50,0x44,0xfe,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x4,0xfe,0x10,0x13,0x20,0x20,0x3c,0x65,0xa4,0x27,0x24,0x24,0x24,0x3d,0x21,0x6,0x40,0x48,0x7c,0xc0,0x28,0x12,0x6a,0x86,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,
-+0x4,0x4,0x27,0x24,0x24,0x3f,0xe0,0x0,0x7f,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x40,0x40,0x4c,0x70,0x42,0x42,0x3e,0x0,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x8,0xff,0x12,0x12,0x22,0x22,0x3a,0x6a,0xaa,0x2a,0x2a,0x2a,0x2a,0x3a,0x22,0x2,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x4,0xfe,0x10,0x11,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x25,0x25,0x3d,0x21,0x1,0x20,0x20,0x44,0xfe,0x4,0x8c,0x54,0x54,0x24,0x54,0x4c,0x8c,0x4,0x4,0xfc,0x4,
-+0x0,0x4,0xfe,0x11,0x21,0x22,0x20,0x7c,0xa4,0x25,0x27,0x25,0x25,0x3d,0x21,0x1,0x80,0x88,0xfc,0x8,0x88,0x50,0x20,0x50,0x8e,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0xfe,0x13,0x10,0x20,0x23,0x3c,0x64,0xa4,0x24,0x27,0x24,0x24,0x3c,0x22,0x1,0x10,0x58,0x94,0x94,0x90,0xfe,0x90,0x90,0xb4,0xd4,0x98,0x90,0xaa,0xca,0x8a,0x4,
-+0x8,0xfc,0x13,0x10,0x21,0x24,0x3f,0x64,0xa5,0x25,0x25,0x25,0x25,0x3c,0x20,0x3,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0x24,0x24,0x24,0x58,0x84,0x2,
-+0x4,0xfe,0x10,0x10,0x20,0x25,0x3e,0x64,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x60,0x50,0x44,0xfe,0x90,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,
-+0x4,0xfe,0x13,0x10,0x21,0x20,0x3c,0x67,0xa4,0x25,0x25,0x25,0x25,0x3d,0x21,0x1,0x40,0x28,0xfc,0x0,0x8,0x90,0x4,0xfe,0x0,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0xfe,0x13,0x12,0x24,0x21,0x3c,0x64,0xa5,0x25,0x25,0x25,0x25,0x3d,0x22,0x4,0x40,0x20,0xfe,0x2,0x4,0xfc,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0xa6,0x7c,
-+0x8,0xfc,0x11,0x13,0x20,0x27,0x38,0x69,0xaa,0x2d,0x28,0x28,0x2b,0x38,0x20,0x3,0x40,0x90,0x8,0xfc,0x40,0xfe,0x90,0x28,0x46,0x94,0x20,0xc8,0x10,0x20,0xc0,0x0,
-+0x4,0xff,0x10,0x11,0x20,0x23,0x3c,0x65,0xa5,0x25,0x27,0x25,0x25,0x3d,0x20,0x0,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x44,0x24,0xfe,0x44,0x24,0xfe,0x4,0x18,
-+0x8,0xfd,0x11,0x11,0x21,0x29,0x3d,0x69,0xaa,0x2c,0x2a,0x2b,0x2a,0x3b,0x20,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xb4,0x14,0x4,0xfc,0x4,0x8,
-+0x4,0xfe,0x11,0x10,0x20,0x23,0x3e,0x64,0xa5,0x25,0x25,0x25,0x25,0x3c,0x20,0x0,0x40,0x24,0xfe,0x88,0x50,0xfe,0x22,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20,0x20,
-+0x4,0xfe,0x13,0x12,0x24,0x21,0x3c,0x65,0xa5,0x25,0x25,0x25,0x24,0x3c,0x23,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0x4,0xfe,0x0,
-+0x8,0xfc,0x13,0x12,0x22,0x23,0x3a,0x6a,0xab,0x2b,0x2b,0x2d,0x29,0x39,0x21,0x1,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc,
-+0x9,0xfd,0x11,0x12,0x26,0x21,0x39,0x6a,0xa8,0x2f,0x28,0x28,0x29,0x3a,0x2c,0x0,0x8,0x8,0xfc,0x48,0xa8,0x3e,0x8,0x48,0x44,0xfe,0xc0,0xe0,0x50,0x4e,0x44,0x40,
-+0x8,0xfc,0x17,0x11,0x22,0x24,0x39,0x6b,0xa8,0x28,0x29,0x2b,0x2d,0x39,0x21,0x1,0x40,0x24,0xfe,0x8,0x46,0x92,0x8,0xfc,0x80,0x88,0x50,0x20,0x10,0x48,0x8e,0x4,
-+0x5,0xfe,0x10,0x10,0x21,0x23,0x3d,0x64,0xa5,0x24,0x27,0x24,0x24,0x3d,0x22,0x0,0xfc,0x88,0x70,0x88,0x6,0xfc,0x54,0x88,0x54,0x22,0xfe,0x70,0xa8,0x26,0x20,0x20,
-+0x8,0x7f,0x8,0x3e,0x0,0x7f,0x49,0x7f,0x40,0x40,0xbf,0x4,0xf,0x18,0x68,0xf,0x78,0x48,0x48,0x48,0x86,0x78,0x48,0x30,0x48,0x86,0xfc,0x0,0xf0,0x10,0x10,0xf0,
-+0xa,0xff,0x11,0x14,0x22,0x20,0x39,0x6a,0xaa,0x28,0x2f,0x28,0x29,0x3a,0x24,0x0,0x4,0x7e,0x40,0x7c,0x44,0xfc,0x40,0x7e,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x9,0xfd,0x17,0x10,0x27,0x24,0x3f,0x68,0xaf,0x28,0x29,0x29,0x2f,0x39,0x25,0x2,0x10,0x10,0xd0,0x1e,0xe4,0x44,0xd4,0x14,0xd4,0x94,0x8,0xc8,0x14,0x14,0x22,0x40,
-+0x8,0xff,0x10,0x12,0x21,0x21,0x3b,0x6c,0xab,0x2a,0x2a,0x2b,0x29,0x38,0x27,0x0,0x20,0xa8,0xb0,0xa4,0x18,0x10,0xf8,0x6,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0,
-+0xb,0xfc,0x11,0x11,0x21,0x25,0x3f,0x64,0xa5,0x25,0x25,0x25,0x25,0x3c,0x23,0x0,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xfe,0x0,
-+0x1,0xff,0x21,0x22,0x23,0x44,0x7b,0xd6,0x55,0x58,0x57,0x50,0x51,0x72,0x44,0x0,0x10,0xfe,0x10,0x20,0xbc,0xa4,0x18,0x8,0xf4,0x2,0xfc,0x40,0x50,0x4c,0x44,0xc0,
-+0x1,0xff,0x21,0x27,0x24,0x49,0x70,0xd7,0x50,0x51,0x56,0x50,0x57,0x70,0x47,0x0,0x10,0xfe,0x10,0xfe,0x2,0xf4,0x0,0xfc,0x80,0x48,0x70,0xb0,0x68,0xa6,0x20,0x60,
-+0x1,0xff,0x21,0x2b,0x24,0x41,0x79,0xd5,0x55,0x51,0x55,0x57,0x54,0x78,0x48,0x0,0x10,0xfe,0x28,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0xfe,0x88,0x48,0x8,0x18,
-+0x1,0x2,0xc,0x3f,0xc0,0x1f,0x10,0x1f,0x2,0xff,0x2,0x4,0x4,0x9,0x12,0x60,0x0,0x80,0x60,0xf8,0x6,0xf0,0x10,0xf0,0x24,0xfe,0x80,0xa0,0xc0,0x84,0x84,0x7c,
-+0x4,0x24,0x14,0x4,0xff,0x9,0x5,0x3f,0x21,0x21,0x23,0x25,0x29,0x21,0x21,0x21,0x40,0x48,0x50,0x44,0xfe,0x20,0x48,0xfc,0x8,0x8,0x88,0x68,0x28,0x8,0x28,0x10,
-+0x14,0x55,0x36,0x14,0xff,0x49,0x2a,0x7f,0x49,0x49,0x5d,0x6b,0x49,0x49,0x49,0x43,0x20,0x28,0x24,0x24,0xfe,0x20,0x20,0x3c,0x54,0x54,0x54,0x48,0x54,0x94,0x24,0x42,
-+0x28,0xaa,0x6c,0x29,0xfe,0x54,0x39,0x7d,0x55,0x55,0x7d,0x55,0x55,0x55,0x55,0x45,0x20,0x28,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x2c,
-+0x0,0x5,0x7e,0x44,0x44,0x7c,0x44,0x47,0x7c,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x3,0x7c,0x45,0x45,0x7d,0x45,0x45,0x7d,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x4,0xfe,0x20,0x20,0x24,0x3e,0x24,0x24,0xfc,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x1,0x7d,0x45,0x45,0x7d,0x45,0x45,0x7d,0x45,0x45,0x45,0x7d,0x45,0x1,0x0,0x4,0xfe,0x0,0x4,0x84,0x48,0x28,0x10,0x28,0x28,0x44,0x84,0x0,0x4,0xfe,0x0,
-+0x0,0x0,0x78,0x4f,0x48,0x7a,0x4a,0x4a,0x7a,0x4a,0x4b,0x48,0x78,0x48,0x0,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0x48,0xf8,0x48,0x42,0x42,0x3e,0x0,
-+0x0,0x8,0x7c,0x48,0x49,0x79,0x4a,0x4a,0x7c,0x48,0x48,0x48,0x78,0x48,0x3,0xc,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x4a,0x48,0x50,0x50,0x20,0x40,0x80,0x0,0x0,
-+0x0,0x8,0x7c,0x4b,0x4a,0x7c,0x48,0x48,0x78,0x48,0x48,0x48,0x79,0x49,0x2,0xc,0x40,0x40,0x40,0xfe,0x42,0x44,0x40,0x40,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x11,0x11,0x1f,0x21,0x5f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x10,0xf8,0x0,0xf0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x10,0x1e,0x12,0x32,0x4a,0x4,0x8,0x30,0xdf,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x8,0xfc,0x88,0x88,0xa8,0x90,0x82,0x7e,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x0,0x4,0x7e,0x44,0x44,0x7d,0x47,0x44,0x7c,0x45,0x45,0x45,0x7d,0x45,0x1,0x1,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x7d,0x44,0x44,0x7c,0x47,0x44,0x7c,0x44,0x45,0x44,0x7c,0x44,0x3,0x0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x8,0x7c,0x48,0x4a,0x7a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x6,0x0,0x10,0x90,0x90,0x90,0x90,0x92,0xf6,0x98,0x90,0x90,0x90,0x90,0xf2,0x92,0x1e,0x0,
-+0x0,0x4,0x7e,0x45,0x46,0x7c,0x44,0x44,0x7f,0x44,0x44,0x45,0x7c,0x44,0x0,0x3,0x40,0x40,0xfc,0x8,0x90,0x60,0x40,0xa0,0x3e,0x42,0x84,0x44,0x28,0x10,0x60,0x80,
-+0x0,0x8,0x7c,0x49,0x4b,0x78,0x49,0x49,0x7a,0x48,0x4f,0x48,0x78,0x48,0x0,0x0,0x40,0x40,0x90,0x8,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x78,0x4f,0x48,0x7a,0x49,0x48,0x7f,0x48,0x48,0x49,0x79,0x4a,0x4,0x0,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x64,0xfe,0xc0,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x0,0x8,0x7c,0x49,0x4a,0x7c,0x49,0x48,0x7a,0x4a,0x49,0x49,0x79,0x48,0x7,0x0,0x40,0x40,0xa0,0x10,0xe,0x24,0xf0,0x0,0x48,0x48,0x48,0x50,0x50,0x24,0xfe,0x0,
-+0x2,0x9,0x7c,0x4b,0x48,0x78,0x4b,0x4a,0x7a,0x4b,0x48,0x49,0x7a,0x44,0x0,0x0,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40,
-+0x0,0x8,0x7c,0x49,0x4b,0x78,0x49,0x4a,0x78,0x49,0x49,0x4a,0x7c,0x48,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x90,0xc,0x84,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x18,0x6,
-+0x0,0xb,0x7e,0x4a,0x4a,0x7a,0x4a,0x4b,0x7a,0x4a,0x4a,0x4a,0x7a,0x42,0x5,0x8,0x4,0xfe,0x20,0x20,0xf8,0x20,0x20,0xfc,0x20,0x20,0xf8,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x7d,0x44,0x44,0x44,0x7c,0x41,0x2,0xc,0x44,0x9e,0x4,0x4,0xdc,0x4,0x4,0xfc,0x54,0x50,0x50,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x8,0x7c,0x49,0x49,0x7b,0x4d,0x49,0x79,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0xc0,0xa0,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x0,0x8,0x7f,0x4a,0x4a,0x7b,0x4a,0x4a,0x7b,0x48,0x49,0x4f,0x78,0x48,0x0,0x0,0x40,0x84,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x1,0x1,0x41,0x7f,0x40,0x9f,0x9,0x32,0xc,0x3f,0xd0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xf8,0x0,0xfe,0x2,0xf4,0x20,0x98,0x60,0xf0,0x1e,0xf0,0x10,0xf0,0x10,0xf0,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x7c,0x47,0x44,0x44,0x7c,0x44,0x1,0x6,0x24,0xae,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x3,0x78,0x4a,0x49,0x79,0x4a,0x4d,0x78,0x48,0x4b,0x48,0x78,0x48,0x1,0x6,0x28,0xb0,0xa4,0xa8,0x10,0x8,0xe,0xf4,0x40,0x48,0xfc,0x40,0xa0,0xa0,0x1c,0x8,
-+0x7e,0x24,0x18,0xfe,0x2b,0x28,0x48,0x89,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x44,0x7e,0x88,0x50,0x20,0x50,0x8e,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x0,0x0,0x7b,0x48,0x4f,0x78,0x49,0x4b,0x78,0x4b,0x4a,0x4a,0x7a,0x4a,0x7,0x0,0x40,0x48,0xfc,0x40,0xfe,0x80,0x10,0xf8,0x0,0xfc,0x94,0x94,0x94,0x94,0xfe,0x0,
-+0x0,0x7b,0x4a,0x4c,0x49,0x79,0x49,0x49,0x79,0x48,0x48,0x4f,0x78,0x48,0x1,0x2,0x0,0xfe,0x2,0x4,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x24,0xfe,0x0,0x88,0x6,0x2,
-+0x0,0x7,0x78,0x48,0x4b,0x7a,0x4a,0x4b,0x78,0x49,0x48,0x4f,0x79,0x4a,0x4,0x0,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0xc0,
-+0x0,0x9,0x7c,0x48,0x4b,0x7a,0x4d,0x49,0x79,0x49,0x48,0x49,0x78,0x48,0x3,0x0,0x20,0x24,0xa8,0x20,0xfe,0x2,0xfc,0x4,0x4,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x0,0xb,0x7c,0x48,0x4f,0x7a,0x4a,0x4b,0x7a,0x4a,0x4b,0x4a,0x7a,0x4f,0x0,0x0,0x10,0x90,0x90,0x9e,0xe4,0x54,0x54,0xd4,0x54,0x4c,0xc8,0x54,0xf4,0x54,0x62,0x40,
-+0x0,0x2,0x79,0x4f,0x49,0x7a,0x4c,0x4a,0x7b,0x4a,0x4a,0x4d,0x79,0x42,0x4,0x0,0x40,0x48,0x50,0xfe,0x50,0x48,0x46,0x8,0xbc,0xa8,0xa8,0x28,0x7e,0x8,0x8,0x8,
-+0x8,0xff,0x8,0x7f,0x22,0x3e,0x14,0x1f,0xf0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xfe,0x10,0x7c,0x44,0x28,0x10,0x28,0x46,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,
-+0x0,0x3,0x7c,0x54,0x54,0x54,0x54,0x7c,0x54,0x54,0x54,0x54,0x7c,0x44,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x0,0xff,0x8,0x8,0x8,0x8,0x10,0x20,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x4,0x7e,0x54,0x54,0x57,0x54,0x7c,0x54,0x54,0x54,0x55,0x7d,0x42,0x4,0x8,0x40,0x60,0x50,0x50,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x0,0x4,0x7e,0x54,0x54,0x55,0x56,0x7c,0x54,0x54,0x54,0x54,0x7c,0x44,0x1,0x2,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x0,0x4,0x7f,0x55,0x55,0x55,0x55,0x7d,0x55,0x55,0x55,0x55,0x7e,0x42,0x4,0x1,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x44,0x82,
-+0x0,0x4,0x7e,0x54,0x55,0x56,0x54,0x7c,0x57,0x54,0x54,0x55,0x7c,0x44,0x0,0x3,0x40,0x40,0xa0,0xa0,0x18,0x16,0x20,0xc8,0x10,0x20,0x44,0x88,0x10,0x20,0xc0,0x0,
-+0x1,0x2,0xc,0x17,0xe0,0x1f,0x9,0x11,0x25,0x2,0x1f,0x11,0x1f,0x11,0x1f,0x10,0x0,0x80,0x60,0xd0,0xe,0xf0,0x20,0x18,0x8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x0,0x4,0x7f,0x56,0x55,0x55,0x55,0x7d,0x55,0x56,0x54,0x54,0x7c,0x45,0x2,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0xd4,0x5c,0x94,0x90,0x12,0xe,0x0,
-+0x0,0x5,0x7e,0x54,0x57,0x54,0x55,0x7d,0x55,0x55,0x55,0x54,0x7d,0x44,0x3,0x0,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x0,0x3f,0x24,0x24,0x24,0x3f,0x0,0xff,0x0,0x1,0x3,0x5,0x19,0x61,0x1,0x1,0x8,0xfc,0x48,0x48,0x48,0xf8,0x4,0xfe,0x80,0x0,0x0,0x60,0x18,0x4,0x0,0x0,
-+0x0,0x3f,0x24,0x24,0x24,0x3f,0x0,0x3f,0x1,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x8,0xfc,0x48,0x48,0x48,0xf8,0x0,0xfc,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x44,0x44,0x7f,0x1,0x1,0xff,0x1,0x1,0x1f,0x10,0x10,0x10,0x1f,0x10,0x4,0xfe,0x44,0x44,0xfc,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x7f,0x44,0x44,0x7f,0x1,0xff,0x0,0x3f,0x0,0x3f,0x0,0x1f,0x10,0x10,0x1f,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x0,0xf8,0x0,0xf0,0x10,0x10,0xf0,
-+0x0,0x7f,0x44,0x44,0x7f,0x2,0xff,0x4,0x9,0x3f,0xd1,0x1f,0x11,0x1f,0x1,0x0,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfe,0x40,0x20,0xf8,0x16,0xf0,0x10,0xf4,0x4,0xfc,
-+0x0,0x7f,0x44,0x44,0x7f,0x1,0x3f,0x1,0xff,0x2,0x4,0x1f,0x0,0x24,0x22,0x42,0x4,0xfe,0x44,0x44,0xfc,0x0,0xf8,0x0,0xfe,0x0,0x20,0xf0,0x0,0x88,0x44,0x44,
-+0x0,0x7f,0x44,0x44,0x7f,0x1,0xff,0x1,0x3f,0x24,0x2f,0x21,0x3f,0x21,0x21,0x20,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfe,0x8,0xfc,0x48,0xe8,0x8,0xf8,0x8,0x28,0x10,
-+0x0,0x7f,0x44,0x44,0x7f,0x11,0x11,0x5b,0x52,0x97,0x1a,0x13,0x12,0x12,0x13,0x12,0x4,0xfe,0x44,0x44,0xfc,0x40,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x0,0x7f,0x44,0x7f,0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0xff,0x8,0x8,0x4,0xfe,0x44,0xfc,0x0,0xf8,0x8,0x48,0x48,0x48,0x7c,0x4,0xf4,0x4,0x14,0x8,
-+0x0,0x3f,0x24,0x3f,0x8,0x7f,0x51,0x49,0x7f,0x40,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x8,0xfc,0x48,0xf8,0x20,0xfc,0x14,0x24,0xfc,0x4,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x1,0x1,0x3f,0x1,0x1,0x7f,0x4,0x8,0x1f,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x10,0xf8,0x0,0x8,0xfc,0x0,0x20,0xf0,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0,
-+0x9,0x71,0x4d,0x45,0x75,0x49,0x41,0x75,0x42,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x4,0x3e,0xc4,0x84,0x5c,0x44,0x24,0x1c,0x4,0xf8,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x0,0x45,0x29,0xff,0x1,0x28,0x44,0x1,0x7f,0x45,0x65,0x55,0x4c,0x44,0xff,0x0,0x4,0xfe,0x54,0x54,0xfc,0x84,0xfe,0x44,0xf4,0x54,0x54,0xf4,0x54,0x74,0x94,0x8,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x82,0x7e,0x0,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x11,0x15,0x19,0x10,0x0,0x0,0x0,0xfc,0x8,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x12,0x1f,0x20,0x24,0x7e,0x90,0x12,0xff,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x4,0x4,0x4,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x4,0x4,0x14,0x8,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0xfc,0x4,0x8,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x91,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x13,0x0,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x13,0x15,0x19,0x12,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,
-+0x10,0x12,0x1f,0x20,0x24,0x7e,0x90,0x12,0xff,0x10,0x10,0x12,0x14,0x18,0x11,0x6,0x4,0xc,0x10,0x20,0x40,0x84,0xc,0x10,0x20,0x42,0x6,0x8,0x10,0x60,0x80,0x0,
-+0x12,0x11,0x1c,0x22,0x22,0x7e,0x92,0x12,0xfe,0x12,0x12,0x12,0x16,0x1a,0x12,0x2,0x4,0x7e,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x10,0x14,0x1e,0x20,0x21,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x11,0x6,0x0,0x4,0xfe,0x4,0x44,0xa8,0xa8,0x48,0x50,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x14,0x1e,0x20,0x20,0x7f,0x90,0x14,0xfe,0x11,0x10,0x12,0x14,0x18,0x11,0x6,0x40,0x40,0x40,0x40,0x44,0xfe,0x88,0x88,0x88,0x8,0x88,0x50,0x20,0x50,0x8c,0x4,
-+0x10,0x14,0x1f,0x20,0x20,0x7c,0x90,0x14,0xfe,0x11,0x12,0x10,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x60,0xa8,0x26,0x22,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x14,0x1e,0x20,0x20,0x7f,0x90,0x14,0xfe,0x10,0x10,0x15,0x19,0x12,0x4,0x8,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x90,0x10,0x88,0x48,0x46,0x4,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x19,0x11,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x1a,0x12,0x5,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x44,0x48,0x48,0x30,0x10,0x28,0x48,0x86,0x4,
-+0x10,0x14,0x1e,0x20,0x21,0x7e,0x94,0x10,0xfe,0x11,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x40,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,
-+0x10,0x14,0x1e,0x21,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x40,0x20,0x24,0xfe,0x40,0x44,0x7e,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x28,0x10,
-+0x10,0x14,0x1e,0x21,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x15,0x19,0x12,0x4,0x40,0x20,0x4,0xfe,0x0,0x10,0xf8,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x10,0x14,0x1e,0x20,0x24,0x7e,0x90,0x14,0xfe,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x8,0x88,0x48,0x48,0x8,0x88,0x48,0x48,0xe,0x78,0x88,0x8,0x8,0x8,0x8,0x8,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x11,0xfe,0x10,0x10,0x12,0x14,0x18,0x11,0x2,0x20,0x20,0x20,0x20,0xa4,0xac,0xb0,0x20,0x20,0x50,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x13,0x15,0x19,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x15,0x1e,0x20,0x20,0x7c,0x90,0x11,0xfe,0x10,0x10,0x12,0x14,0x18,0x13,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x30,0x28,0x28,0x20,0x24,0xfe,0x0,
-+0x10,0x13,0x1e,0x20,0x20,0x7c,0x91,0x11,0xfd,0x11,0x11,0x11,0x15,0x19,0x17,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x14,0x1e,0x20,0x23,0x7c,0x90,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x14,0x1f,0x20,0x20,0x7d,0x91,0x11,0xff,0x11,0x11,0x11,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x11,0x15,0x19,0x11,0x0,0x4,0xfe,0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x1e,0x23,0x20,0x7c,0x91,0x13,0xfd,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x40,0x40,0x44,0xfe,0x80,0xa0,0x24,0xfe,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x10,0x14,0x1e,0x20,0x23,0x7c,0x90,0x14,0xfe,0x10,0x10,0x13,0x15,0x19,0x12,0x4,0x40,0x50,0x48,0x48,0xfe,0x40,0x40,0xfc,0x84,0xa4,0xa8,0x28,0x10,0x28,0x46,0x84,
-+0x10,0x14,0x1e,0x20,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x13,0x15,0x19,0x10,0x0,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x24,0x18,0x50,0x92,0x2a,0x4a,0x84,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x13,0x15,0x19,0x11,0x1,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x11,0x14,0x18,0x13,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0xfe,0x0,
-+0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x15,0xfe,0x10,0x10,0x10,0x15,0x1a,0x10,0x0,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0xa4,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x1e,0x23,0x20,0x7c,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x40,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,
-+0x10,0x10,0x1e,0x23,0x20,0x7c,0x90,0x11,0xfd,0x10,0x10,0x12,0x14,0x19,0x13,0x0,0x40,0x20,0x24,0xfe,0x40,0x40,0x88,0x8,0xf0,0x20,0x40,0x40,0x88,0x4,0xfc,0x4,
-+0x10,0x10,0x1e,0x23,0x22,0x7c,0x90,0x14,0xfc,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x40,0x20,0x20,0xfe,0x2,0x84,0x80,0x90,0xb0,0xc0,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x12,0xfe,0x12,0x14,0x10,0x15,0x1a,0x14,0x0,0x0,0x44,0x24,0x28,0x88,0x90,0x90,0xa4,0xa2,0xc2,0x82,0x80,0x84,0x84,0x7c,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x19,0x12,0x4,0x4,0xfe,0x4,0x4,0xfc,0x0,0x40,0x44,0x4c,0x50,0x60,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x14,0x1e,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x1a,0x12,0x5,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x8,0x48,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x10,0x15,0x1e,0x20,0x20,0x7c,0x90,0x13,0xfe,0x10,0x10,0x11,0x14,0x18,0x10,0x0,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0xf8,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,
-+0x10,0x14,0x1f,0x20,0x24,0x7f,0x90,0x10,0xfd,0x12,0x14,0x12,0x14,0x18,0x10,0x0,0x40,0x44,0xf8,0x50,0x64,0xfe,0x40,0x88,0xfc,0x40,0x7c,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x1d,0x20,0x20,0x7c,0x93,0x10,0xfd,0x12,0x14,0x10,0x14,0x18,0x10,0x0,0x40,0x44,0xfc,0x48,0x50,0x64,0xfe,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,
-+0x10,0x17,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x11,0x17,0x18,0x10,0x0,0x4,0xfe,0x8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x3e,0xc8,0x8,0x8,0x8,
-+0x10,0x14,0x1f,0x20,0x21,0x7d,0x93,0x15,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x80,0x84,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x1c,0x23,0x22,0x7e,0x92,0x13,0xfe,0x12,0x12,0x17,0x1a,0x12,0x4,0x8,0x10,0x18,0x14,0xfe,0x10,0x10,0x10,0xd4,0x54,0x54,0x54,0x58,0x88,0xa,0xa,0x6,
-+0x10,0x10,0x1e,0x23,0x20,0x7e,0x91,0x10,0xff,0x10,0x10,0x10,0x15,0x19,0x12,0xc,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x10,0x10,0x1e,0x23,0x20,0x7c,0x91,0x14,0xff,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x40,0x40,0x5c,0xe0,0x28,0x32,0xce,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x20,0x2f,0x38,0x22,0x42,0x7c,0xa4,0x27,0xf9,0x21,0x22,0x2a,0x34,0x24,0xa,0x1,0x0,0xfc,0xa4,0xa4,0xa4,0xa8,0xa4,0xe4,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0xa0,0x20,
-+0x10,0x15,0x1e,0x20,0x20,0x7c,0x93,0x10,0xfe,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x20,0x24,0xa4,0xa8,0xb0,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x23,0x3a,0x22,0x43,0x78,0xa0,0x27,0xfc,0x24,0x24,0x24,0x2c,0x34,0x20,0x0,0x8,0xfc,0x8,0x8,0xf8,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x20,0x27,0x3c,0x24,0x44,0x7c,0xa7,0x24,0xfc,0x24,0x24,0x25,0x2c,0x34,0x27,0x4,0x4,0xfe,0x4,0x44,0x44,0x54,0xfc,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0xfc,0x4,
-+0x10,0x15,0x1f,0x21,0x21,0x7c,0x91,0x14,0xfe,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x20,0x24,0x24,0x24,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x1d,0x21,0x22,0x7e,0x90,0x13,0xfc,0x10,0x10,0x14,0x19,0x12,0x4,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xa8,0xa8,0x24,0x26,0x20,0x20,
-+0x10,0x10,0x1c,0x27,0x20,0x7d,0x92,0x13,0xfc,0x10,0x14,0x12,0x15,0x19,0x12,0x4,0x0,0xc,0x70,0x90,0x90,0x14,0x7e,0x90,0x90,0x90,0x94,0xfe,0x0,0x80,0x46,0x3c,
-+0x10,0x10,0x1d,0x20,0x20,0x7d,0x90,0x10,0xfc,0x13,0x10,0x12,0x14,0x19,0x13,0x0,0x8,0x3c,0xe0,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x40,0x40,0x90,0x8,0xfc,0x4,
-+0x10,0x10,0x1c,0x20,0x21,0x7e,0x94,0x10,0xfc,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x50,0x50,0x94,0x98,0x90,0xb0,0xd2,0x8e,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x1c,0x21,0x22,0x7f,0x90,0x10,0xfc,0x13,0x10,0x10,0x14,0x18,0x17,0x0,0x40,0x40,0xa0,0x10,0x8,0xfe,0x44,0x40,0x40,0xf8,0x40,0x40,0x40,0x48,0xfc,0x0,
-+0x10,0x10,0x1e,0x20,0x21,0x7e,0x91,0x10,0xfe,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x20,0x50,0x88,0x4,0x2,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x11,0x14,0x1e,0x20,0x20,0x7c,0x91,0x10,0xfd,0x10,0x10,0x12,0x15,0x1a,0x10,0x0,0x4,0x8c,0x50,0x20,0x50,0x8c,0x24,0x20,0xfe,0x20,0xa8,0xa4,0x22,0x22,0xa0,0x40,
-+0x10,0x14,0x1e,0x20,0x24,0x7e,0x91,0x10,0xfc,0x11,0x16,0x10,0x15,0x19,0x12,0x4,0x20,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xa0,0xb0,0xa8,0xa8,0x22,0x22,0x1e,0x0,
-+0x10,0x14,0x1e,0x21,0x20,0x7d,0x90,0x10,0xfd,0x10,0x10,0x11,0x14,0x18,0x10,0x0,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x20,0xa0,0x40,
-+0x10,0x14,0x1e,0x21,0x22,0x7d,0x91,0x15,0xff,0x11,0x11,0x13,0x15,0x19,0x10,0x0,0x80,0x80,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x14,0x1e,0x23,0x20,0x7c,0x90,0x15,0xfe,0x10,0x10,0x12,0x14,0x19,0x12,0x0,0x40,0x20,0x24,0xfe,0x40,0x88,0x84,0xfc,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x20,0x24,0x3b,0x41,0x40,0x74,0xa2,0x22,0xf8,0x21,0x22,0x22,0x2c,0x35,0x22,0x0,0x0,0xfc,0x8,0x10,0x20,0x44,0xfe,0x54,0x54,0x54,0x54,0x94,0xa4,0x24,0x54,0x88,
-+0x10,0x10,0x1e,0x23,0x22,0x7c,0x90,0x17,0xfc,0x10,0x11,0x10,0x14,0x18,0x11,0x2,0x40,0x20,0x20,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x90,0xc,0x4,
-+0x11,0x11,0x1d,0x27,0x21,0x7d,0x91,0x11,0xfd,0x12,0x11,0x14,0x19,0x12,0x4,0x0,0x0,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x94,0x54,0x5c,0x14,0x0,
-+0x10,0x10,0x1f,0x20,0x20,0x7b,0x92,0x12,0xfd,0x10,0x10,0x10,0x14,0x18,0x11,0x2,0x88,0x88,0xfe,0x88,0x88,0xfe,0x42,0x44,0xfe,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x20,0x20,0x3b,0x40,0x42,0x79,0xa0,0x27,0xf8,0x20,0x21,0x21,0x2a,0x34,0x28,0x0,0x40,0x40,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xe0,0x50,0x50,0x48,0x46,0x44,0x40,
-+0x20,0x20,0x38,0x47,0x40,0x7a,0xa1,0x20,0xfa,0x22,0x26,0x2a,0x2a,0x32,0x21,0x0,0x20,0x28,0x24,0xfe,0x20,0x20,0xa0,0xa0,0x10,0x90,0x50,0x50,0x90,0x8a,0x86,0x2,
-+0x20,0x22,0x3a,0x42,0x42,0x7a,0xa2,0x22,0xf8,0x20,0x20,0x25,0x28,0x30,0x23,0x0,0x80,0xfc,0xa4,0xa8,0x90,0xa8,0xa6,0xc4,0x80,0xa0,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x90,0x13,0xfc,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x0,0xfe,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x1c,0x21,0x21,0x7e,0x90,0x13,0xfc,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0xa0,0xa4,0xfe,0x20,0x20,0x24,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x1c,0x23,0x20,0x7f,0x90,0x10,0xfc,0x11,0x12,0x10,0x14,0x18,0x12,0x1,0x10,0x58,0x94,0x90,0x90,0xfe,0x90,0x94,0xd4,0x98,0x90,0xb0,0xd2,0x92,0x8a,0x4,
-+0x10,0x14,0x1e,0x21,0x21,0x7d,0x91,0x12,0xfc,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x20,0x20,0x20,0x24,0x24,0x28,0xac,0x72,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x14,0x1f,0x20,0x21,0x7c,0x90,0x10,0xfd,0x10,0x11,0x10,0x14,0x18,0x10,0x0,0x8,0x1c,0xe0,0x44,0x24,0xa8,0x90,0x8,0xfe,0x8,0x8,0x88,0x88,0x8,0x28,0x10,
-+0x10,0x14,0x1f,0x20,0x20,0x7d,0x93,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x12,0x4,0x40,0x24,0xfe,0x80,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x0,
-+0x12,0x11,0x1c,0x22,0x22,0x7f,0x92,0x12,0xfe,0x13,0x12,0x12,0x16,0x1b,0x12,0x2,0x4,0x7e,0x84,0x4,0x4,0xfc,0x94,0x94,0x94,0xfc,0x94,0x94,0x94,0x14,0x4,0xc,
-+0x12,0x11,0x1c,0x22,0x22,0x7e,0x92,0x12,0xfe,0x12,0x12,0x12,0x16,0x1a,0x12,0x2,0x4,0x7e,0x84,0x4,0x4,0xf4,0x94,0x94,0xf4,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x13,0x15,0x19,0x11,0x1,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xfc,0x48,0x50,0x20,0x10,0x48,0x86,0x0,
-+0x10,0x11,0x1e,0x20,0x20,0x7d,0x90,0x13,0xfe,0x14,0x10,0x12,0x14,0x18,0x10,0x3,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xfe,0x2,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x13,0x1e,0x22,0x23,0x7e,0x92,0x13,0xfe,0x12,0x12,0x16,0x1a,0x12,0x4,0x8,0x4,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x4,0xf4,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x20,0x27,0x3d,0x45,0x45,0x7e,0xa5,0x25,0xfd,0x25,0x27,0x25,0x2c,0x34,0x24,0x4,0x0,0x4,0xfe,0x4,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x44,0x4,0x14,0x8,
-+0x10,0x14,0x1f,0x20,0x21,0x7c,0x93,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x10,0x10,0x1f,0x20,0x20,0x7c,0x97,0x10,0xfc,0x11,0x13,0x15,0x11,0x19,0x11,0x1,0x88,0x88,0xfe,0x88,0x40,0x44,0xfe,0x80,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x1f,0x20,0x21,0x7e,0x95,0x10,0xfd,0x11,0x1f,0x11,0x15,0x19,0x12,0x4,0x40,0x44,0xfe,0xa0,0x10,0x4e,0xf4,0x40,0x50,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x90,0x15,0xfe,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xfc,0x8,0x8,0xfe,0x88,0x48,0x8,0x28,0x10,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfc,0x13,0x10,0x10,0x14,0x19,0x12,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfe,0x11,0x11,0x13,0x15,0x19,0x11,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x10,0x14,0xd8,0x10,0x12,0x52,0x8e,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x13,0x15,0x19,0x11,0x1,0x4,0xfe,0x4,0x24,0x24,0xfc,0x24,0x24,0x74,0x54,0x54,0x74,0x54,0x4,0xfc,0x4,
-+0x11,0x11,0x1d,0x22,0x22,0x7c,0x91,0x11,0xfe,0x10,0x13,0x13,0x15,0x19,0x10,0x0,0x0,0x4,0xfe,0x94,0x94,0xa4,0x24,0x54,0x8,0x40,0x28,0x26,0xa,0x8,0xf8,0x0,
-+0x10,0x14,0x1f,0x20,0x21,0x7c,0x90,0x13,0xfc,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x40,0x28,0xfc,0x0,0x8,0x90,0x4,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x12,0x1d,0x20,0x23,0x7c,0x97,0x10,0xfd,0x13,0x15,0x11,0x15,0x19,0x11,0x0,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0xf8,0x16,0x10,0x50,0x24,0x4,0xfc,
-+0x10,0x14,0x1e,0x20,0x21,0x7c,0x90,0x13,0xfe,0x10,0x10,0x11,0x14,0x18,0x10,0x3,0x20,0x24,0xac,0xb0,0x20,0x58,0x86,0x22,0x20,0xa4,0xac,0x30,0x50,0x50,0x8e,0x4,
-+0x21,0x21,0x3a,0x44,0x42,0x79,0xa1,0x27,0xfc,0x24,0x27,0x24,0x2c,0x34,0x27,0x4,0x24,0x24,0x48,0x90,0x48,0x24,0x24,0xfe,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x21,0x21,0x3f,0x41,0x47,0x79,0xa7,0x21,0xf9,0x20,0x27,0x20,0x28,0x30,0x21,0x6,0x0,0x4,0xfe,0x14,0xd4,0x14,0xd4,0x24,0x4c,0x40,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x10,0x12,0x1f,0x22,0x22,0x7e,0x93,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x24,0xa8,0x30,0x22,0xa2,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x10,0x12,0x12,0x14,0x18,0x10,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x40,0xa8,0xa4,0x8a,0x8a,0x78,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7c,0x91,0x10,0xff,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0xdc,0x54,0x54,0xdc,0x8,0xfc,0x0,0xfe,0x80,0xf8,0x8,0x8,0x8,0x50,0x20,
-+0x20,0x20,0x3b,0x40,0x48,0x7f,0xa0,0x21,0xfe,0x24,0x24,0x27,0x2c,0x34,0x27,0x4,0x8,0x7c,0xc0,0x40,0x44,0xfe,0x40,0x44,0x5e,0x44,0x44,0x5c,0x44,0x44,0xfc,0x4,
-+0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfe,0x11,0x10,0x12,0x14,0x18,0x11,0x6,0x20,0xac,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x13,0x1c,0x21,0x20,0x7d,0x90,0x13,0xfc,0x10,0x11,0x11,0x16,0x1a,0x14,0x1,0x3c,0xc0,0x24,0x24,0xa8,0xfc,0x40,0xfe,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x14,0x1f,0x20,0x21,0x7d,0x91,0x11,0xfe,0x10,0x10,0x10,0x15,0x1a,0x14,0x0,0x40,0x24,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x40,0x44,0xa8,0x90,0x90,0xa8,0xc6,0x84,
-+0x10,0x11,0x1c,0x20,0x23,0x7c,0x90,0x11,0xfc,0x13,0x10,0x11,0x14,0x18,0x10,0x3,0x20,0x24,0xa8,0x20,0xfe,0x70,0xa8,0x26,0x40,0xfe,0x88,0x8,0xd0,0x30,0xcc,0x4,
-+0x21,0x21,0x39,0x45,0x43,0x79,0xa1,0x21,0xfb,0x25,0x29,0x21,0x29,0x31,0x21,0x1,0x20,0x20,0x3c,0x44,0xa8,0x10,0x28,0x48,0xfe,0x8,0x48,0x28,0x28,0x8,0x28,0x10,
-+0x21,0x21,0x3f,0x41,0x47,0x7d,0xa7,0x21,0xfb,0x22,0x22,0x22,0x2a,0x30,0x21,0x6,0x10,0x14,0xfe,0x14,0xfc,0x10,0xfe,0x12,0xfe,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfe,0x12,0x12,0x16,0x1a,0x12,0x4,0x8,0x4,0xfe,0x24,0x24,0xfc,0x0,0xfc,0x84,0x84,0xfc,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x11,0x11,0x1f,0x21,0x23,0x7e,0x93,0x12,0xff,0x10,0x10,0x17,0x14,0x18,0x11,0x6,0x10,0x14,0xfe,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x1c,0x8,
-+0x20,0x27,0x38,0x43,0x42,0x7a,0xa3,0x20,0xff,0x25,0x24,0x27,0x2c,0x34,0x24,0x4,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xfc,0x44,0x44,0x54,0x8,
-+0x10,0x10,0x1d,0x21,0x23,0x7d,0x91,0x11,0xfd,0x11,0x13,0x10,0x14,0x19,0x12,0x4,0xa0,0xa8,0xfc,0x20,0xf8,0x20,0xf8,0x20,0xfe,0x0,0xf8,0x88,0x9c,0x4,0x28,0x10,
-+0x20,0x20,0x39,0x43,0x44,0x7b,0xa2,0x23,0xf8,0x27,0x20,0x23,0x28,0x37,0x20,0x0,0x40,0xa0,0x10,0xf8,0x6,0xf8,0x8,0xf8,0x1c,0xe0,0x40,0xf8,0x40,0xfe,0x40,0xc0,
-+0x20,0x27,0x3c,0x44,0x45,0x7d,0xa6,0x20,0xff,0x24,0x24,0x27,0x2c,0x34,0x27,0x4,0x84,0x7e,0x24,0x24,0x24,0xa4,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x10,0x14,0x1e,0x20,0x23,0x7c,0x90,0x15,0xfe,0x11,0x11,0x11,0x15,0x19,0x13,0x0,0x0,0x88,0x50,0x4,0xfe,0x50,0x8c,0x4,0x0,0xfc,0x54,0x54,0x54,0x54,0xfe,0x0,
-+0x10,0x12,0x1f,0x22,0x24,0x7f,0x90,0x10,0xff,0x10,0x13,0x10,0x14,0x1b,0x10,0x0,0x40,0x20,0xfe,0x2,0x4,0xfe,0x40,0xc4,0x68,0xb0,0x30,0x68,0xa8,0x26,0xa4,0x40,
-+0x10,0x12,0x1f,0x22,0x24,0x7d,0x91,0x11,0xfd,0x11,0x11,0x17,0x14,0x19,0x12,0x4,0x40,0x20,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x13,0x1c,0x20,0x21,0x7d,0x91,0x15,0xfe,0x11,0x10,0x13,0x14,0x19,0x12,0x0,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x26,0x22,0x60,
-+0x20,0x22,0x39,0x40,0x47,0x7c,0xa9,0x21,0xf9,0x21,0x20,0x23,0x28,0x30,0x2f,0x0,0x40,0x48,0x50,0x40,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x40,0xf8,0x40,0x44,0xfe,0x0,
-+0x20,0x23,0x3a,0x43,0x42,0x7b,0xa0,0x27,0xfc,0x27,0x20,0x23,0x29,0x30,0x23,0xc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0xa4,0xfc,0x0,0xf8,0x10,0xe0,0x10,0xe,
-+0x20,0x27,0x3c,0x47,0x44,0x7f,0xa0,0x21,0xfb,0x20,0x20,0x27,0x29,0x32,0x24,0x0,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x80,0x8,0xf0,0x20,0x48,0xfc,0x50,0x4c,0x44,0xc0,
-+0x20,0x27,0x3c,0x45,0x44,0x7f,0xa4,0x25,0xfc,0x25,0x25,0x25,0x2d,0x35,0x29,0x11,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c,
-+0x22,0x21,0x39,0x47,0x42,0x7a,0xa3,0x22,0xfa,0x22,0x22,0x22,0x2c,0x34,0x29,0x0,0x20,0x20,0x24,0xfe,0x40,0x20,0xbc,0xd0,0x94,0xfe,0x90,0x90,0xa8,0xa6,0xc2,0x0,
-+0x24,0x22,0x38,0x4f,0x44,0x7c,0xa7,0x25,0xfd,0x25,0x25,0x2d,0x35,0x25,0xb,0x11,0x40,0x40,0x44,0xfe,0x80,0x0,0x7e,0x14,0x10,0x54,0x5e,0x50,0x50,0x70,0x9e,0x4,
-+0x20,0x28,0x3f,0x41,0x40,0x7f,0xa4,0x24,0xff,0x24,0x25,0x25,0x2d,0x35,0x24,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x4,0xc,
-+0x10,0x13,0x1c,0x21,0x21,0x7d,0x90,0x15,0xff,0x11,0x11,0x11,0x14,0x1b,0x10,0x0,0x4,0xfe,0x50,0xfc,0x54,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,
-+0x20,0x2f,0x38,0x4a,0x49,0x7f,0xa8,0x2a,0xfa,0x2a,0x2b,0x28,0x38,0x29,0x12,0x24,0x4,0xfe,0x8,0x28,0x48,0xee,0x92,0xa4,0xa8,0xa8,0xe8,0xa8,0x94,0x14,0x24,0x42,
-+0x20,0x24,0x3a,0x40,0x4f,0x79,0xa0,0x27,0xf8,0x23,0x20,0x27,0x28,0x30,0x21,0x6,0xa0,0xa4,0xa8,0xa0,0xfe,0x10,0xa0,0xfc,0x40,0xf8,0x40,0xfc,0x40,0xa0,0x1c,0x8,
-+0x10,0x10,0x1d,0x23,0x21,0x7d,0x91,0x11,0xfc,0x13,0x10,0x11,0x15,0x19,0x11,0x1,0x80,0xf8,0x10,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,
-+0x22,0x21,0x3f,0x40,0x47,0x7c,0xa4,0x27,0xf8,0x27,0x20,0x21,0x2f,0x31,0x25,0x2,0x10,0x10,0xf4,0x1e,0xe4,0x54,0x54,0xd4,0x14,0xc8,0x88,0xd4,0x14,0x24,0x22,0x40,
-+0x24,0x22,0x39,0x44,0x47,0x7c,0xa5,0x25,0xfd,0x25,0x25,0x24,0x2d,0x36,0x24,0x4,0x4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x44,0x4c,
-+0x11,0x10,0x1f,0x20,0x22,0x7d,0x90,0x17,0xfc,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x8,0x90,0xfc,0x90,0x94,0x98,0x90,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x20,0x20,0x3f,0x45,0x4a,0x78,0xa3,0x22,0xfb,0x20,0x23,0x22,0x2b,0x32,0x20,0x0,0x80,0x40,0xfe,0x12,0x4c,0x40,0xf8,0x48,0xf8,0x40,0xf8,0x48,0xf8,0x48,0x40,0x40,
-+0x20,0x27,0x39,0x41,0x41,0x7f,0xa4,0x24,0xfc,0x27,0x21,0x21,0x29,0x31,0x2a,0x4,0x4,0x7e,0x44,0x44,0x7c,0x10,0xfe,0x92,0x92,0x92,0xfe,0x10,0x10,0x14,0xfe,0x42,
-+0x20,0x23,0x38,0x42,0x41,0x7b,0xa4,0x23,0xfa,0x22,0x23,0x20,0x29,0x30,0x2f,0x0,0x28,0xb0,0xa4,0x98,0x10,0xf8,0x4,0xfa,0x8,0x8,0xf8,0x0,0x10,0xa4,0xfe,0x0,
-+0x21,0x27,0x39,0x41,0x42,0x7f,0xa2,0x23,0xfa,0x23,0x22,0x23,0x29,0x30,0x23,0xc,0x8,0xfe,0x28,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xf8,0x10,0xe0,0x18,0x6,
-+0x20,0x27,0x3c,0x44,0x47,0x79,0xa3,0x24,0xf8,0x27,0x24,0x27,0x28,0x30,0x27,0x0,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xfc,0x84,0x84,0xf4,0x94,0xf4,0x84,0xa4,0xf4,0x8,
-+0x20,0x28,0x3f,0x41,0x48,0x7f,0xa0,0x23,0xfe,0x23,0x22,0x2b,0x30,0x25,0x9,0x0,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x24,0xa,0xf8,
-+0x20,0x20,0x3f,0x45,0x41,0x7a,0xa7,0x2d,0xf3,0x24,0x2b,0x20,0x29,0x32,0x24,0x0,0x80,0x40,0xfe,0x2,0xbc,0xa4,0xa8,0x10,0xf8,0x6,0xf8,0x40,0x50,0x4c,0x44,0xc0,
-+0x20,0x20,0x3f,0x44,0x47,0x7c,0xa7,0x25,0xfd,0x25,0x25,0x2d,0x34,0x25,0x9,0x12,0x40,0x24,0xfe,0x90,0xfc,0x94,0xfc,0x10,0xd4,0x18,0x52,0x8e,0x0,0x54,0x52,0x2,
-+0x20,0x20,0x3b,0x40,0x4f,0x78,0xa3,0x2a,0xff,0x22,0x23,0x20,0x2b,0x30,0x2f,0x0,0x8,0x1c,0xe0,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x40,0xf8,0x40,0xfe,0x0,
-+0x20,0x23,0x20,0x3c,0x50,0x93,0x12,0xfe,0x12,0x13,0x10,0x28,0x24,0x44,0x81,0x0,0x44,0xe4,0x44,0x44,0x44,0xc4,0x44,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x44,0x84,
-+0x20,0x20,0x22,0x3e,0x52,0x92,0x15,0xfc,0x10,0x10,0x13,0x28,0x24,0x40,0x8f,0x0,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0xe2,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x20,0x20,0x3d,0x51,0x93,0x15,0xfd,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x1,0x80,0xa0,0x94,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x0,0xe,0xf2,0x12,0x12,0xfe,0x13,0x32,0x3a,0x56,0x52,0x92,0x12,0x13,0x12,0x10,0x20,0x20,0x20,0x20,0x20,0x24,0xac,0x30,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e,0x0,
-+0x0,0xc,0xf0,0x13,0x12,0xfe,0x12,0x33,0x38,0x54,0x51,0x92,0x14,0x10,0x10,0x10,0x40,0x50,0x78,0xc0,0x40,0x40,0x44,0xfe,0x44,0xc4,0x44,0x54,0x48,0x40,0x40,0x40,
-+0x0,0xc,0xf0,0x17,0x10,0xfc,0x13,0x30,0x38,0x55,0x51,0x92,0x14,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0xc0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x0,0xc,0xf0,0x10,0x17,0xfc,0x10,0x30,0x38,0x55,0x51,0x91,0x12,0x14,0x18,0x10,0x40,0x50,0x48,0x48,0xfe,0x40,0x40,0xc0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x0,0xd,0xf1,0x11,0x11,0xfd,0x11,0x30,0x38,0x57,0x52,0x92,0x12,0x12,0x13,0x12,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0xc,0xf0,0x17,0x10,0xfc,0x11,0x31,0x3a,0x54,0x50,0x92,0x12,0x12,0x13,0x10,0x80,0xa0,0x94,0xfe,0xa0,0xa0,0x22,0x22,0x1e,0x40,0x40,0x48,0x48,0x48,0xf8,0x8,
-+0x8,0xc,0xf7,0x12,0x11,0xfc,0x13,0x30,0x38,0x54,0x57,0x90,0x10,0x10,0x11,0x10,0x8,0x3c,0xc0,0x48,0x50,0x0,0xf8,0x10,0x60,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x0,0xc,0xf3,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x4c,0x50,0x20,0x90,0xe,0x4,
-+0x4,0xf,0xf1,0x11,0x15,0xff,0x11,0x31,0x38,0x57,0x50,0x90,0x10,0x11,0x12,0x10,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20,
-+0x0,0xc,0xf0,0x10,0x11,0xfe,0x14,0x31,0x38,0x54,0x50,0x95,0x15,0x19,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0xf0,0x10,0xa0,0x40,0x44,0x12,0x12,0xf0,0x0,
-+0x0,0xc,0xf7,0x10,0x13,0xfe,0x13,0x32,0x3b,0x56,0x53,0x92,0x1f,0x11,0x12,0x14,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x0,0xd,0xf1,0x11,0x11,0xfd,0x11,0x31,0x39,0x56,0x50,0x91,0x12,0x10,0x11,0x16,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x44,0x7a,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0xc,0xf7,0x10,0x12,0xf9,0x17,0x30,0x3f,0x54,0x55,0x95,0x15,0x14,0x17,0x14,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x4,0xfe,0x4,0xf4,0x14,0xf4,0x4,0xfc,0x4,
-+0x0,0x6,0x78,0x9,0xff,0x1c,0x2a,0x48,0x14,0x2a,0x6b,0x9c,0x1a,0x69,0x8,0x18,0x20,0x20,0x24,0x3e,0xa0,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x4,0xe,0xf1,0x12,0xfe,0x10,0x38,0x56,0x92,0x7c,0x44,0x7d,0x46,0x7c,0x44,0x1,0x84,0xfe,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x40,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e,
-+0x4,0xb,0xf0,0x17,0x14,0xff,0x11,0x37,0x39,0x57,0x51,0x9f,0x11,0x13,0x1d,0x11,0x40,0xfe,0x0,0xbc,0xa4,0xbc,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4,
-+0x10,0x10,0x21,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x7e,0x42,0x4,0xb,0x8,0x1c,0xe0,0x0,0x0,0x0,0xfc,0x4,0x84,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x20,0x7f,0x48,0x49,0x4a,0x4d,0x79,0x48,0x48,0x48,0x48,0x79,0x42,0xc,0x80,0x40,0x44,0xfe,0x0,0x10,0xc,0x14,0x10,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x10,0x11,0x21,0x79,0x49,0x4a,0x48,0x4f,0x78,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0xfe,0x8,0x1c,0x2a,0x48,0x89,0xa,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x10,0x10,0xf8,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x10,0x17,0x20,0x7a,0x4f,0x48,0x49,0x4a,0x7f,0x4a,0x4a,0x4b,0x4a,0x7a,0x4b,0x2,0x38,0xc0,0x48,0x54,0xfe,0xe0,0x50,0x48,0xfe,0x48,0x48,0xf8,0x48,0x48,0xf8,0x8,
-+0x2,0x7,0x7a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x2a,0x5e,0x40,0x80,0x10,0x10,0x50,0x54,0x7e,0x90,0x14,0xfe,0x10,0x28,0x26,0x42,0x80,0x40,0x3e,0x4,
-+0x10,0x12,0xff,0x28,0x26,0x42,0xbc,0x0,0xfe,0x20,0x7c,0x4,0x4,0x44,0x29,0x12,0x0,0xc,0xf8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xc8,0xd4,0x74,0x2,
-+0x0,0x7f,0x4,0x2,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x21,0x21,0x20,0x10,0xf8,0x20,0xc0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x20,0x20,0x21,0x29,0xfd,0x29,0x29,0x29,0x29,0x29,0x28,0x2a,0x4d,0x48,0x80,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x4,0x4,0x2,0xff,0x0,0x4,0x1f,0x14,0x12,0x10,0x10,0x1f,0x0,0x7f,0x0,0x0,0x80,0x44,0x7e,0x80,0x82,0x62,0xfe,0x20,0x20,0xa0,0x44,0xfe,0x4,0xe4,0x14,0x8,
-+0x0,0x40,0x49,0x59,0x61,0x45,0x45,0x3d,0x11,0x11,0xfe,0x10,0x13,0x10,0x10,0x10,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x11,0x51,0x7f,0x53,0x95,0x11,0x11,0x29,0x28,0x2a,0x4d,0x48,0x80,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x11,0x15,0xff,0x11,0x11,0x11,0x7d,0x45,0x44,0x44,0x47,0x7c,0x44,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x15,0xff,0x21,0x51,0x95,0xff,0x11,0x39,0x34,0x54,0x93,0x10,0x50,0x20,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x14,0x1f,0x11,0x15,0x7f,0x45,0x45,0x7d,0x45,0x40,0x40,0x43,0x40,0x80,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x20,0x20,0x25,0x7f,0x85,0x5,0x75,0x55,0x55,0x55,0x74,0x54,0x5,0x8,0x28,0x10,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x0,0x6,0x79,0x51,0x51,0x55,0x7f,0x49,0x49,0x49,0x48,0x44,0x45,0x54,0x6a,0x1,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x94,0x8,
-+0x8,0x8,0x32,0xc,0x10,0x3e,0x0,0xff,0x2,0x1f,0x12,0x11,0x1f,0x0,0x7f,0x0,0x20,0x20,0xc8,0x30,0x40,0xf8,0x4,0xfe,0x0,0xf0,0x10,0x24,0xfe,0x4,0xe4,0xc,
-+0x0,0x1,0xff,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x43,0x0,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x8,0x8,0xfe,0x8,0xe,0x78,0x9,0x1a,0x1f,0x12,0x11,0x1f,0x0,0x7f,0x0,0x0,0x40,0x48,0xfc,0x48,0xc8,0xaa,0xa,0x6,0xe0,0x20,0x44,0xfe,0x4,0xf4,0x4,0x18,
-+0x0,0xc,0x71,0x11,0x11,0x15,0xff,0x11,0x15,0x7f,0x44,0x44,0x47,0x7c,0x44,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x12,0x12,0x12,0x22,0x3f,0x62,0xa6,0x27,0x2a,0x2a,0x32,0x22,0x22,0x22,0x22,0x22,0x10,0x24,0x7e,0x44,0xd4,0x44,0x54,0x48,0xc0,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x2,0x1,0xff,0x4,0x14,0x25,0x46,0x1f,0x12,0x11,0x10,0x1f,0x0,0x7f,0x0,0x0,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0xe0,0x20,0x20,0x44,0xfe,0x4,0xf4,0x4,0x18,
-+0x8,0xa,0x7f,0x8,0x48,0x7f,0x41,0x82,0x3e,0x4,0x8,0xfe,0xb,0x8,0x28,0x10,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x0,0x1,0xff,0x0,0x0,0x77,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x55,0x55,0x0,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x8,0x28,0x2a,0x3f,0x48,0x88,0xa,0xff,0x0,0x3e,0x22,0x22,0x23,0x22,0x3e,0x22,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x0,0x28,0x45,0x93,0x11,0x29,0x45,0x83,0x7d,0x45,0x44,0x44,0x47,0x7c,0x44,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x40,0x2f,0x11,0x49,0x49,0x7f,0x49,0x59,0x5d,0x5b,0x69,0x49,0x49,0x41,0x45,0x42,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x22,0x14,0x7f,0x9,0x9,0x7f,0x48,0x48,0x7f,0x9,0x19,0x1d,0x2a,0xc8,0x8,0x8,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x4,0x6,0x7d,0x4,0x4,0xff,0x14,0x54,0x5c,0x54,0x52,0x52,0x5e,0xf1,0x40,0x0,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x82,0x8a,0x4,
-+0x22,0x22,0xff,0x22,0x22,0x0,0x7f,0x49,0x49,0x49,0x7f,0x49,0x49,0x49,0x7f,0x41,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x8,0x9,0xff,0x14,0x12,0x29,0x7f,0xc9,0x7f,0x49,0x49,0x7f,0x8,0xa,0xc,0x8,0x10,0x24,0xfe,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x8,0x11,0x7f,0x49,0x49,0x7f,0x49,0x51,0x7f,0x10,0x29,0xff,0x8,0x8,0x8,0x8,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x92,0xfa,0x2,0xa,0x4,
-+0x10,0xa,0xff,0x0,0x3e,0x22,0x22,0x3e,0x0,0x7e,0x4,0xff,0x9,0x8,0x28,0x10,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x20,0x27,0x25,0xfd,0x25,0x27,0x25,0x75,0x55,0x57,0x55,0x55,0x75,0x49,0x13,0x0,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x0,0x77,0x55,0x55,0x77,0x0,0x7f,0x0,0xff,0x20,0x3e,0x2,0x2,0x2,0x14,0x8,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0xc0,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x0,0x41,0x22,0x0,0xff,0x0,0x22,0x22,0x55,0xff,0x22,0x22,0x55,0xff,0x11,0x0,0x10,0x24,0x7e,0x44,0xd4,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x1,0x7f,0x49,0x49,0x7f,0x40,0x5f,0x51,0x51,0x5f,0x51,0x5f,0x51,0x51,0x9f,0x11,0x10,0xa4,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x7c,0x8,0xff,0x32,0x54,0x91,0x32,0x1f,0x12,0x11,0x10,0x1f,0x0,0x7f,0x0,0x0,0x80,0xfe,0x88,0x50,0x20,0x50,0x8e,0xe0,0x20,0x20,0x44,0xfe,0x4,0xf4,0x4,0x18,
-+0x2,0x7,0xf8,0x41,0x2a,0x2a,0x40,0x7e,0x88,0x9,0xff,0x8,0x49,0x49,0x7f,0x1,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x82,0x12,0xfa,0x2,0xa,0x4,
-+0x22,0x14,0x7f,0x14,0x7f,0x15,0xff,0x15,0x7f,0x14,0x36,0x55,0x94,0x14,0x14,0x14,0x10,0x24,0x7e,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x0,0x77,0x55,0x55,0x55,0x55,0x22,0x55,0x10,0xff,0x22,0x22,0x14,0x8,0x16,0x61,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0xfe,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x8,0x5,0x7f,0x52,0x52,0x52,0x7f,0x52,0x52,0x5e,0x40,0x52,0x52,0x6d,0x80,0x0,0x10,0x24,0xfe,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x0,0xee,0x22,0xaa,0x66,0xaa,0x32,0x10,0x28,0x46,0x9a,0x60,0x19,0x64,0x8,0x70,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x8,0x9,0xff,0x55,0x22,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x8,0x2a,0x49,0x88,0x18,0x10,0x24,0xfe,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x8a,0x4,
-+0x14,0x14,0x3f,0x24,0x64,0xbf,0x24,0x24,0x3f,0x24,0x24,0x3f,0x20,0x55,0x54,0x80,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x8a,0x84,
-+0x8,0xff,0x22,0x3e,0x2a,0x49,0x9a,0x1f,0x12,0x11,0x10,0x1f,0x0,0x7f,0x0,0x0,0x28,0xa4,0xfe,0x20,0x52,0x92,0xe,0xe0,0x20,0x20,0x44,0xfe,0x4,0xe4,0x14,0x8,
-+0x2,0x7f,0x14,0x8,0xff,0x1a,0x28,0x49,0x7f,0x55,0x63,0x5d,0x55,0x5d,0x41,0x43,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0xc0,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x10,0x23,0x7c,0x45,0x57,0x45,0x55,0x49,0x41,0x7f,0x2,0x12,0xfa,0x2,0xa,0x5,0x88,0xfe,0xa8,0xfc,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xf8,0x48,0x30,0x48,0x86,
-+0x0,0x7c,0x45,0x7c,0x10,0x5d,0x50,0xfe,0x4,0x1f,0x12,0x11,0x1f,0x0,0x7f,0x0,0x80,0xf8,0x50,0x20,0x50,0xfe,0x88,0xf8,0x0,0xe0,0x20,0x44,0xfe,0x4,0xe4,0x18,
-+0x22,0xff,0x22,0x77,0x55,0x77,0x24,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x24,0x3f,0x20,0x10,0xa4,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x8a,0x4,
-+0x0,0x0,0x1f,0x10,0x90,0x50,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x20,0x41,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0xa4,0x94,0x88,0x80,0x80,0x80,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x51,0x11,0x31,0x51,0xd1,0x12,0x22,0x24,0x48,0x10,0x80,0x44,0xfe,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x0,0x0,0x1f,0x10,0x90,0x50,0x54,0x14,0x34,0x54,0xd4,0x14,0x24,0x27,0x40,0x0,0x80,0x44,0xfe,0x0,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,0x4,
-+0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x14,0x35,0x54,0xd4,0x14,0x28,0x28,0x51,0x2,0x80,0x44,0xfe,0x0,0xfc,0x0,0x40,0x44,0xfe,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x0,0x0,0x1f,0x10,0x90,0x50,0x5f,0x10,0x30,0x51,0xd1,0x11,0x22,0x22,0x44,0x8,0x80,0x44,0xfe,0x80,0xa0,0x94,0xfe,0xa0,0xa0,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x0,0x1f,0x12,0x92,0x52,0x5f,0x12,0x32,0x52,0xd3,0x12,0x22,0x22,0x43,0x2,0x80,0x44,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x10,0x33,0x52,0xd2,0x12,0x23,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x8,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x0,0x0,0x1f,0x10,0x90,0x53,0x52,0x12,0x33,0x52,0xd2,0x13,0x22,0x20,0x4f,0x0,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x0,0xfe,0x0,
-+0x0,0x0,0x1f,0x11,0x91,0x51,0x52,0x12,0x34,0x58,0xd0,0x10,0x20,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x8,0xfc,0x80,0x90,0xf8,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x1f,0x12,0x92,0x53,0x54,0x1b,0x32,0x52,0xd3,0x12,0x22,0x22,0x41,0x0,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0xc8,0x48,0x48,0xc8,0x28,0x12,0x2,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x90,0x50,0x57,0x10,0x30,0x50,0xd3,0x10,0x20,0x20,0x4f,0x0,0x80,0x44,0xfe,0x0,0x80,0x48,0xfc,0x40,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x11,0x32,0x57,0xd0,0x10,0x21,0x22,0x47,0x0,0x80,0x44,0xfe,0x80,0x44,0xfe,0x80,0x0,0x10,0xe0,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x0,0x0,0x1f,0x12,0x92,0x52,0x5f,0x12,0x32,0x52,0xd2,0x12,0x24,0x24,0x4a,0x11,0x80,0x44,0xfe,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0x24,
-+0x0,0x0,0x1f,0x10,0x9f,0x51,0x51,0x19,0x35,0x55,0xd5,0x15,0x21,0x21,0x5f,0x0,0x80,0x44,0xfe,0x0,0xfc,0x20,0x20,0x24,0x24,0x28,0x28,0x30,0x20,0x24,0xfe,0x0,
-+0x1,0x0,0x3f,0x20,0xbf,0x60,0x2f,0x20,0x6f,0xa8,0x2f,0x20,0x41,0x41,0x86,0x18,0x0,0x84,0xfe,0x80,0xfe,0x80,0xf8,0x88,0xf8,0x80,0xfc,0x84,0x54,0x48,0x20,0x1c,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x10,0x37,0x50,0xd0,0x15,0x25,0x29,0x40,0x0,0x80,0x44,0xfe,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x80,0x64,0x2a,0xa,0xf8,0x0,
-+0x0,0x0,0x1f,0x11,0x97,0x51,0x51,0x17,0x34,0x58,0xd3,0x10,0x20,0x21,0x42,0xc,0x80,0x44,0xfe,0x10,0xfc,0x10,0x10,0xfe,0x82,0x84,0xf8,0x88,0x88,0x8,0x28,0x10,
-+0x0,0x0,0x1f,0x10,0x97,0x50,0x53,0x11,0x31,0x5f,0xd0,0x13,0x22,0x22,0x43,0x2,0x80,0x44,0xfe,0x0,0xfc,0x80,0xf0,0x10,0x14,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x0,0x1f,0x10,0x92,0x52,0x52,0x15,0x38,0x50,0xd7,0x10,0x20,0x20,0x4f,0x0,0x80,0x44,0xfe,0x40,0x48,0x48,0x48,0x54,0xe2,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x0,0x1f,0x12,0x91,0x55,0x54,0x17,0x34,0x54,0xd4,0x15,0x26,0x24,0x44,0x4,0x80,0x44,0xfe,0x0,0xfc,0x44,0x44,0xf4,0x44,0xc4,0xe4,0x54,0x4c,0x44,0x54,0x8,
-+0x0,0x0,0x1f,0x10,0x94,0x52,0x52,0x18,0x35,0x50,0xd2,0x14,0x2c,0x24,0x44,0x3,0x80,0x44,0xfe,0x20,0x20,0xa8,0xa4,0xa2,0x2a,0x28,0x30,0x10,0x20,0x40,0x80,0x0,
-+0x0,0x0,0x1f,0x10,0x9f,0x50,0x53,0x1c,0x35,0x52,0xdd,0x11,0x22,0x2c,0x41,0x0,0x80,0x44,0xfe,0x0,0xfc,0x80,0x8,0x98,0x60,0x40,0xe0,0x50,0x4e,0x44,0x40,0x80,
-+0x0,0x0,0x1f,0x11,0x91,0x5f,0x51,0x11,0x3f,0x51,0xd1,0x1f,0x21,0x21,0x41,0x1,0x80,0x44,0xfe,0x20,0x24,0x3e,0x20,0x28,0x3c,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x17,0x34,0x55,0xd5,0x15,0x25,0x24,0x47,0x4,0x80,0x44,0xfe,0x0,0xfc,0x44,0x44,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x4,0xfc,0x4,
-+0x0,0x0,0x1f,0x10,0x93,0x50,0x5f,0x11,0x36,0x50,0xdf,0x11,0x23,0x20,0x41,0x6,0x80,0x44,0xfe,0x0,0xf8,0x40,0xfe,0x50,0x4c,0x80,0xfe,0x10,0x20,0xc0,0x30,0x8,
-+0x1,0x0,0x3f,0x22,0xac,0x68,0x28,0x2e,0x68,0xa8,0x2f,0x28,0x41,0x42,0x8c,0x30,0x0,0x84,0xfe,0x80,0xb8,0x88,0x88,0xb8,0x88,0x88,0xf8,0x88,0x40,0x20,0x1e,0x4,
-+0x0,0x0,0x1f,0x14,0x92,0x50,0x5f,0x12,0x33,0x52,0xd2,0x14,0x24,0x2a,0x51,0x0,0x80,0x44,0xfe,0x0,0x10,0x10,0xe8,0x28,0xa4,0xc6,0xb0,0x88,0xa0,0x98,0x8,0x0,
-+0x1,0x0,0x3f,0x24,0xa2,0x6f,0x28,0x2f,0x68,0xaf,0x20,0x3f,0x40,0x40,0x80,0x0,0x0,0x84,0xfe,0x10,0x20,0xf8,0x88,0xf8,0x88,0xf8,0x80,0xfe,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x1f,0x11,0x9f,0x51,0x57,0x15,0x35,0x57,0xd1,0x13,0x25,0x29,0x41,0x1,0x80,0x44,0xfe,0x0,0xe4,0x4,0xd4,0x54,0x54,0xd4,0x14,0x94,0x54,0x44,0x14,0x8,
-+0x1,0x0,0x3f,0x20,0xaf,0x64,0x22,0x3f,0x62,0xa4,0x28,0x37,0x40,0x40,0x9f,0x0,0x0,0x84,0xfe,0x80,0xf8,0x90,0xa4,0xfe,0x20,0x90,0x8e,0xf4,0x80,0x88,0xfc,0x0,
-+0x0,0x0,0x1f,0x12,0x92,0x54,0x55,0x1c,0x34,0x55,0xd4,0x17,0x24,0x24,0x44,0x7,0x80,0x44,0xfe,0x0,0xf8,0x8,0xfe,0x40,0xfc,0x20,0x24,0xfe,0x20,0x50,0x8e,0x4,
-+0x0,0x0,0x1f,0x11,0x9f,0x50,0x57,0x10,0x3f,0x51,0xd2,0x17,0x28,0x30,0x47,0x0,0x80,0x44,0xfe,0x20,0xfc,0x80,0xf8,0x80,0xfe,0x0,0x8,0xfc,0x40,0x44,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x92,0x51,0x57,0x11,0x36,0x50,0xdf,0x11,0x23,0x20,0x41,0x6,0x80,0x44,0xfe,0x40,0x48,0x50,0xfc,0x50,0x4c,0x80,0xfe,0x10,0x20,0xc0,0x30,0x8,
-+0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x17,0x34,0x57,0xd4,0x14,0x27,0x24,0x44,0x5,0x80,0x44,0xfe,0x0,0xbc,0x84,0x84,0xbc,0x0,0xfc,0x24,0x28,0x90,0x28,0x46,0x84,
-+0x1,0x0,0x3f,0x20,0xaf,0x64,0x22,0x21,0x62,0xbc,0x27,0x24,0x47,0x40,0x9f,0x0,0x0,0x84,0xfe,0x0,0xf8,0x90,0x20,0xc0,0x20,0x9e,0xf4,0x90,0xf0,0x88,0xfc,0x4,
-+0x0,0x0,0x1f,0x12,0x9f,0x52,0x5f,0x12,0x3f,0x52,0xd1,0x12,0x2a,0x2a,0x51,0x0,0x80,0x44,0xfe,0x0,0xfc,0x24,0xa4,0x24,0xd4,0x88,0x0,0xc0,0x54,0x12,0xf2,0x0,
-+0x1,0x0,0x3f,0x22,0xbf,0x62,0x2f,0x28,0x6f,0xa8,0x2f,0x20,0x5f,0x41,0x86,0x18,0x0,0x84,0xfe,0x20,0xfc,0x20,0xf8,0x8,0xf8,0x8,0xf8,0x80,0xfe,0x40,0x20,0x1c,
-+0x1,0x0,0x3f,0x24,0xaf,0x69,0x2d,0x2b,0x7f,0xa9,0x2d,0x2b,0x49,0x49,0x93,0x20,0x0,0x84,0xfe,0x0,0x78,0x48,0x48,0x46,0x80,0x78,0x48,0x28,0x10,0x28,0x46,0x84,
-+0x1,0x0,0x3f,0x28,0xa4,0x69,0x22,0x24,0x6f,0xb4,0x27,0x24,0x47,0x44,0x84,0x4,0x0,0x84,0xfe,0x88,0x90,0x48,0x20,0x10,0xfe,0x14,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x1,0x0,0x3f,0x22,0xaf,0x62,0x3f,0x20,0x6f,0xa8,0x2f,0x28,0x4f,0x42,0x84,0x8,0x0,0x84,0xfe,0x20,0xf8,0x20,0xfe,0x88,0xf8,0x88,0xf8,0x88,0xf8,0x20,0x18,0x8,
-+0x0,0x3f,0x20,0x3f,0xa1,0x6f,0x29,0x2f,0x60,0xaf,0x20,0x3f,0x44,0x48,0x92,0x1,0x80,0xfe,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x0,0xf8,0x0,0xfe,0x90,0x8c,0x84,0x0,
-+0x0,0x3f,0x20,0x2f,0xa8,0x6f,0x28,0x2f,0x61,0xaf,0x21,0x2f,0x44,0x48,0x92,0x1,0x80,0xfe,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x10,0xe0,0x8,0xfc,0x90,0x8c,0x84,0x0,
-+0x0,0x3f,0x20,0x2f,0xa9,0x6b,0x2b,0x26,0x69,0xa1,0x3f,0x22,0x46,0x41,0x82,0xc,0x80,0xfe,0x0,0x78,0x48,0x58,0x58,0x30,0x48,0x0,0xfe,0x20,0x40,0xc0,0x30,0x10,
-+0x0,0x3f,0x24,0x27,0xa9,0x75,0x2a,0x24,0x6b,0xb0,0x2f,0x20,0x44,0x44,0x8a,0x1,0x80,0xfe,0x40,0x78,0x48,0x50,0x20,0x18,0xe6,0x0,0xf8,0x80,0x90,0x8c,0x84,0x0,
-+0x0,0x3f,0x20,0x2f,0xa9,0x6a,0x2c,0x2a,0x69,0xa9,0x2d,0x2a,0x48,0x48,0x89,0x8,0x80,0xfe,0x20,0x3c,0x68,0x90,0x28,0xc6,0x38,0x50,0x7c,0x90,0x7c,0x10,0xfe,0x0,
-+0x0,0x3f,0x20,0x2e,0xaa,0x6a,0x2c,0x2a,0x69,0xa9,0x2d,0x2a,0x49,0x49,0x8a,0x8,0x80,0xfe,0x40,0x78,0x90,0xfc,0x4,0xfc,0x4,0xfc,0x20,0x10,0x44,0x4a,0x4a,0x38,
-+0x0,0x3f,0x20,0xaf,0x69,0x25,0x25,0x69,0xa6,0x28,0x37,0x20,0x47,0x40,0x80,0xf,0x80,0xfc,0x0,0x78,0x48,0x28,0xa8,0x48,0x70,0x8e,0x24,0x40,0x90,0x20,0xc0,0x0,
-+0x0,0x3f,0x21,0x20,0xbc,0x6b,0x28,0x29,0x69,0xbd,0x28,0x29,0x4a,0x4e,0xb8,0x0,0x80,0xfe,0x0,0x80,0x1e,0xe8,0x48,0x48,0x48,0x5c,0x88,0x48,0x28,0x8,0x3e,0x0,
-+0x0,0x3f,0x22,0x22,0xaf,0x62,0x2f,0x2a,0x6a,0xaf,0x22,0x27,0x4a,0x52,0x82,0x2,0x80,0xfe,0x20,0x3c,0xa4,0x48,0xbe,0xa2,0xaa,0xaa,0x2a,0x2a,0xaa,0x10,0x14,0x22,
-+0x0,0x3f,0x20,0x2f,0xa2,0x7f,0x20,0x2f,0x68,0xaf,0x28,0x2f,0x40,0x4a,0x92,0x21,0x80,0xfe,0x80,0xf8,0x20,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x80,0x44,0x14,0xf0,
-+0x0,0x3f,0x20,0x2f,0xa8,0x6f,0x28,0x2a,0x6f,0xaa,0x2a,0x2f,0x50,0x52,0xa4,0x0,0x80,0xfe,0x0,0xdc,0x54,0xd4,0x14,0xa6,0xc0,0xbc,0x94,0xd4,0x8,0x94,0x62,0x0,
-+0x1,0x0,0x3f,0x20,0xaf,0x69,0x29,0x2f,0x68,0xaf,0x39,0x29,0x49,0x4f,0x89,0x0,0x0,0x84,0xfe,0x20,0x14,0xfe,0x4,0x8,0xfe,0x10,0x10,0x7c,0x10,0x10,0x10,0x10,
-+0x0,0x3f,0x22,0xbf,0x62,0x2f,0x28,0x6f,0xa8,0x2f,0x28,0x2f,0x48,0x5f,0x85,0x8,0x80,0xfe,0x0,0xfe,0x10,0xbe,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xd0,0x14,0xa2,
-+0x0,0x3f,0x20,0x2f,0xad,0x6b,0x2f,0x22,0x67,0xac,0x37,0x24,0x47,0x44,0x87,0x4,0x80,0xfe,0x0,0x78,0x68,0x58,0x78,0x40,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x0,
-+0x20,0x10,0x13,0x0,0xfe,0x1,0x5,0x44,0x24,0x29,0x2a,0x8,0x16,0xf8,0x1,0x0,0x0,0x4,0xfe,0x44,0x64,0x54,0x54,0x44,0xcc,0x54,0x64,0x44,0x44,0x44,0x54,0x88,
-+0x20,0x10,0x13,0x0,0xfe,0x1,0x5,0x45,0x25,0x29,0x28,0x8,0x16,0xf9,0x2,0x0,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x20,0x70,0xa8,0x26,0x24,0x20,
-+0x2,0x41,0x7f,0x40,0x88,0x12,0x22,0x7,0x8,0x14,0x22,0x1,0x1,0x6,0x18,0x60,0x0,0x0,0xfe,0x2,0x24,0x10,0x8,0xf0,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x2,0x41,0x7f,0x48,0x90,0x2f,0x0,0x0,0x1f,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x22,0x14,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x50,0x20,
-+0x2,0x41,0x7f,0x48,0x91,0x1,0xff,0x1,0x11,0x11,0x11,0x1f,0x1,0x1,0x1,0x0,0x0,0x0,0xfe,0x22,0x14,0x0,0xfe,0x0,0x10,0x10,0x10,0xf0,0x10,0x2,0x2,0xfe,
-+0x2,0x41,0x7f,0x48,0x90,0x0,0x1f,0x2,0x1,0x3f,0x0,0x1,0xe,0x30,0x48,0x7,0x0,0x0,0xfe,0x22,0x14,0x70,0x80,0x0,0x20,0xf0,0x40,0x80,0x0,0x0,0x6,0xfc,
-+0x2,0x41,0x7f,0x48,0x90,0x4,0x8,0x11,0x7e,0x4,0x8,0x14,0x22,0x7e,0x1,0x2,0x0,0x0,0xfe,0x22,0x14,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x88,0x88,0x28,0x10,
-+0x2,0x41,0x7f,0x48,0x92,0x2,0x22,0x12,0x16,0xa,0x12,0x62,0x4,0x4,0x18,0x60,0x0,0x0,0xfe,0x22,0x94,0x80,0x90,0x98,0xa0,0xc0,0xa0,0x98,0x8a,0x82,0x7e,0x0,
-+0x41,0x7f,0x48,0x91,0x2f,0x1,0x3f,0x8,0x4,0x12,0x8,0xff,0x1,0x2,0xc,0x30,0x0,0xfe,0x22,0x14,0xe8,0x0,0xfc,0x84,0x88,0x80,0x84,0xfe,0x40,0x30,0x18,0x8,
-+0x41,0x7f,0x48,0x90,0x3f,0x11,0x1f,0x11,0x1f,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0xfe,0x22,0x14,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1e,0x8,0x0,
-+0x41,0x7f,0x48,0x91,0x22,0x4,0xf,0x30,0xde,0x12,0x1e,0x12,0x1e,0x12,0x12,0x16,0x0,0xfe,0x22,0x14,0x88,0x40,0xf0,0xe,0x14,0x90,0x90,0x90,0x90,0x90,0x10,0x30,
-+0x41,0x7f,0x48,0x92,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0xfe,0x22,0x14,0x0,0xf8,0x20,0x44,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x41,0x7f,0x49,0x91,0x29,0x5,0x7f,0x9,0x31,0x2,0xff,0x4,0xe,0x1,0x6,0x38,0x0,0xfe,0x22,0x14,0x28,0x40,0xfc,0x20,0x18,0x4,0xfe,0x20,0x40,0x80,0x70,0x8,
-+0x41,0x7f,0x48,0x90,0x26,0x38,0x2c,0x2c,0x2a,0x2a,0x29,0x29,0x34,0x5d,0x81,0x2,0x0,0xfe,0x22,0x14,0x18,0xe8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0x54,0x72,0x0,
-+0x20,0x10,0x10,0x0,0xfc,0x8,0x10,0x34,0x58,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x10,0x13,0x0,0xfd,0x8,0x10,0x34,0x58,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x0,0x4,0xfe,0x4,0x44,0xa8,0xa8,0x88,0x50,0x50,0x20,0x50,0x90,0x8,0x6,0x4,
-+0x20,0x10,0x10,0x0,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x4,0x14,0x8,
-+0x20,0x10,0x13,0x0,0xfc,0x8,0x10,0x35,0x58,0x94,0x10,0x10,0x10,0x10,0x13,0x10,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x10,0x10,0x0,0xfd,0xa,0x14,0x30,0x54,0x9b,0x14,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x64,0x20,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,
-+0x20,0x10,0x10,0x0,0xfd,0x8,0x10,0x34,0x5b,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x20,0x10,0x11,0x0,0xfc,0x8,0x11,0x34,0x58,0x94,0x13,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x24,0xac,0xb0,0x20,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x20,0x10,0x11,0x0,0xfc,0x8,0x11,0x34,0x58,0x94,0x11,0x10,0x10,0x10,0x13,0x10,0x20,0x20,0x24,0xac,0xb0,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x10,0x10,0x0,0xfd,0xa,0x15,0x30,0x54,0x99,0x15,0x11,0x11,0x11,0x11,0x11,0x40,0x40,0xa0,0x90,0x8,0xe,0xf4,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x10,0x10,0x1,0xfd,0xa,0x10,0x34,0x5b,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0x88,0xfc,0x88,0x50,0x20,0x50,0x88,0x6,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x11,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x40,0x24,0x22,0x2,0xf8,0x10,0x26,0x2a,0x72,0xaa,0x22,0x22,0x22,0x25,0x28,0x20,0x20,0x20,0x28,0xfc,0x40,0x50,0x90,0xfc,0x10,0x14,0xfe,0x10,0x10,0x16,0xfc,0x0,
-+0x20,0x11,0x11,0x1,0xfd,0x9,0x10,0x35,0x58,0x94,0x11,0x10,0x10,0x10,0x17,0x10,0x4,0xfe,0x4,0x4,0x4,0xfc,0x0,0xfc,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x10,0x10,0x1,0xfd,0xa,0x15,0x34,0x5a,0x95,0x11,0x11,0x11,0x10,0x17,0x10,0x40,0x40,0xa0,0x10,0x10,0x28,0xf6,0x0,0x48,0x48,0x48,0x50,0x50,0x24,0xfe,0x0,
-+0x22,0x11,0x10,0x2,0xfe,0xa,0x12,0x36,0x5a,0x96,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0xbe,0x84,0x4,0x4,0xf4,0x94,0x94,0xf4,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x20,0x10,0x10,0x3,0xfc,0x9,0x10,0x37,0x58,0x94,0x11,0x13,0x15,0x11,0x11,0x11,0x40,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x44,0xa8,0x30,0x20,0x10,0x48,0x8e,0x4,
-+0x20,0x10,0x10,0x3,0xfc,0x8,0x13,0x34,0x59,0x95,0x13,0x15,0x19,0x11,0x11,0x11,0x80,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x40,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x20,0x11,0x11,0x1,0xfd,0x9,0x11,0x34,0x58,0x95,0x12,0x14,0x11,0x12,0x10,0x11,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0x54,0x94,0xa4,0x24,0x44,0xa8,0x10,
-+0x20,0x10,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x94,0x11,0x17,0x10,0x10,0x10,0x10,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x20,0x11,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x12,0x12,0x14,0x18,0x10,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x40,0x2f,0x20,0x5,0xfa,0x15,0x20,0x68,0xb7,0x28,0x24,0x25,0x22,0x25,0x28,0x30,0x0,0xfc,0x84,0x28,0x10,0x28,0xc4,0x0,0xbc,0x84,0xc4,0x28,0x10,0x28,0xce,0x84,
-+0x21,0x11,0x17,0x1,0xfc,0x8,0x11,0x3a,0x55,0x98,0x13,0x12,0x12,0x12,0x13,0x12,0x10,0x14,0xfe,0x10,0x40,0xa0,0x10,0x8,0xf6,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x10,0x13,0x0,0xfc,0xb,0x10,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x90,0x94,0x98,0x90,0x92,0x8e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x21,0x11,0x11,0x1,0xfa,0xa,0x16,0x3a,0x52,0x9a,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0x7e,0x44,0x44,0x44,0x7c,0x10,0x10,0xfe,0x10,0x38,0x54,0x54,0x92,0x10,0x10,
-+0x20,0x12,0x11,0x0,0xff,0x9,0x12,0x34,0x58,0x97,0x19,0x12,0x11,0x10,0x11,0x16,0x40,0x48,0x50,0x44,0xfe,0x50,0x48,0x46,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0xc,
-+0x40,0x20,0x27,0x4,0xfc,0x17,0x24,0x6c,0xb7,0x2e,0x26,0x2b,0x2a,0x32,0x22,0x22,0x80,0x44,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0x8,
-+0x20,0x12,0x12,0x2,0xfe,0xa,0x12,0x34,0x58,0x97,0x12,0x12,0x12,0x12,0x17,0x10,0x90,0x90,0x94,0xbe,0xa0,0xd0,0x88,0x80,0x4,0xfe,0x94,0x94,0x94,0x94,0xfe,0x0,
-+0x40,0x27,0x24,0x4,0xfd,0x15,0x25,0x6d,0xb5,0x2d,0x25,0x25,0x29,0x2a,0x34,0x21,0x3c,0xe0,0x3c,0x20,0xfe,0x22,0xf8,0x24,0x1c,0x0,0x78,0x48,0x48,0x4a,0x8a,0x6,
-+0x40,0x2f,0x20,0x4,0xfa,0x12,0x24,0x68,0xb3,0x2a,0x22,0x23,0x22,0x22,0x23,0x22,0x4,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x40,0x2f,0x21,0x1,0xf9,0x17,0x24,0x6c,0xb7,0x29,0x21,0x21,0x21,0x21,0x2a,0x24,0x4,0x7e,0x44,0x44,0x44,0x7c,0x10,0x7c,0x54,0x54,0x54,0x7c,0x10,0x14,0xfe,0x2,
-+0x43,0x20,0x2f,0x8,0xfb,0x10,0x23,0x68,0xb7,0x28,0x27,0x24,0x24,0x24,0x24,0x24,0xf8,0x40,0xfe,0x42,0x5c,0x40,0x58,0x44,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xb4,0x8,
-+0x42,0x22,0x2f,0x2,0xf7,0x2a,0x22,0x77,0xa1,0x33,0x24,0x29,0x20,0x27,0x20,0x20,0xa8,0x48,0xbe,0xa8,0x5c,0xaa,0x8,0xfe,0x10,0xf8,0x44,0xf2,0x40,0xfc,0x40,0xc0,
-+0x0,0x0,0x7f,0x1,0x1,0x9,0x9,0x9,0x9,0x11,0x11,0x19,0x25,0x23,0x41,0x80,0x0,0x8,0xfc,0x8,0x10,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x86,0x7c,
-+0x7f,0x1,0x9,0x9,0x9,0x15,0x23,0xc0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0xfc,0x8,0x0,0xf0,0x0,0x6,0xfc,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x0,0x7f,0x52,0x91,0x7d,0x11,0x29,0x29,0x7d,0x9,0x9,0xfd,0xa,0xa,0xd,0xa,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x28,0x45,0xfd,0x45,0xa3,0x3d,0x25,0x45,0xa9,0x11,0x2a,0x44,0x89,0x2,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x7e,0x2,0x24,0x18,0x9,0xfe,0xa,0x18,0x19,0x28,0x48,0x88,0x8,0x28,0x10,0x20,0x20,0x50,0x50,0x88,0x46,0x24,0x20,0x8,0xfc,0x8,0x8,0x10,0x10,0x20,0x40,
-+0x1,0x1,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x0,0x8,0xfc,0x0,0x0,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x10,0x10,0x15,0xfe,0x10,0x7c,0x10,0xfe,0x33,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x0,0x8,0xfc,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x14,0xfe,0x10,0x10,0x7c,0x11,0xfd,0x30,0x38,0x54,0x50,0x90,0x11,0x16,0x20,0x20,0x20,0x20,0xa8,0xa4,0xa2,0x22,0x28,0x2c,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x10,0x11,0x15,0xff,0x11,0x7d,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x14,0xfe,0x11,0x7e,0x11,0xfe,0x30,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x40,0x40,0xa0,0x90,0x8,0x2e,0xf4,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0xfc,0x10,0x7f,0x12,0xfc,0x30,0x3b,0x54,0x54,0x91,0x11,0x12,0x14,0x88,0x88,0xfe,0x88,0x88,0xfe,0x2,0x84,0x80,0xf8,0x88,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x12,0x11,0xfd,0x11,0x7c,0x13,0xfe,0x32,0x3a,0x56,0x56,0x92,0x12,0x12,0x12,0x40,0x48,0x4c,0x48,0x50,0x44,0xfe,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x10,0x11,0x15,0xff,0x11,0x7d,0x11,0xfd,0x30,0x3b,0x56,0x56,0x92,0x12,0x12,0x12,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0x2,0xa,0x4,
-+0x10,0x12,0x11,0xfc,0x13,0x7d,0x12,0xfc,0x38,0x37,0x51,0x52,0x91,0x10,0x11,0x16,0x40,0x48,0x50,0x44,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0xc,
-+0x11,0x11,0x17,0xf9,0x13,0x79,0x17,0xf8,0x33,0x3a,0x57,0x52,0x9f,0x12,0x12,0x12,0x10,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xfe,0x8,0x28,0x10,
-+0x10,0x13,0x12,0xff,0x12,0x7f,0x12,0xfe,0x32,0x32,0x52,0x53,0x94,0x14,0x18,0x10,0x8,0xfc,0x0,0xf8,0x0,0xfe,0xa4,0x98,0xae,0xc4,0x8,0xfe,0x88,0x88,0x28,0x10,
-+0x10,0x10,0x13,0xfe,0x13,0x7e,0x12,0xff,0x32,0x3b,0x56,0x52,0x92,0x15,0x1a,0x10,0x40,0x24,0xfe,0x48,0xfe,0x58,0xec,0x4a,0x48,0xfe,0x40,0xfc,0x84,0x84,0xfc,0x84,
-+0x1,0x1f,0x1,0xff,0x4,0x1b,0x68,0x7,0x0,0x7f,0x10,0x3f,0x1,0x1f,0x1,0xff,0x20,0xc0,0x4,0xfe,0x0,0xe0,0x8,0xf8,0x0,0xfc,0x10,0xf8,0x4,0xf0,0x4,0xfe,
-+0x2,0xff,0x25,0x24,0x3c,0x24,0x24,0x3c,0x24,0x24,0x27,0x3c,0xe4,0x44,0x4,0x4,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x2,0xff,0x24,0x25,0x3d,0x25,0x25,0x3d,0x25,0x27,0x25,0x3f,0xe5,0x45,0x5,0x5,0x20,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfe,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x2,0xff,0x24,0x24,0x3c,0x25,0x26,0x3c,0x25,0x24,0x26,0x3c,0xe4,0x44,0x4,0x4,0x20,0x20,0x50,0x50,0x88,0x46,0x24,0x20,0xfc,0x4,0x8,0x90,0x60,0x20,0x10,0x0,
-+0x2,0xff,0x24,0x25,0x3d,0x26,0x24,0x3f,0x24,0x24,0x27,0x3c,0xe4,0x44,0x4,0x4,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x2,0xff,0x25,0x24,0x3c,0x27,0x24,0x3c,0x24,0x25,0x27,0x3d,0xe5,0x45,0x5,0x5,0x8,0x1c,0xe0,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0xff,0x25,0x25,0x3d,0x24,0x27,0x3c,0x25,0x25,0x27,0x3d,0xe5,0x44,0x4,0x5,0x20,0x24,0xfe,0x24,0xfc,0x20,0xfe,0x0,0xfc,0x4,0x24,0x24,0x24,0x50,0x8c,0x4,
-+0x8,0x7f,0x8,0x7f,0x8,0xff,0x10,0x2e,0x42,0xbf,0xc,0xb,0x8,0xff,0x0,0x0,0x40,0x44,0x7e,0x44,0xa8,0x10,0x28,0x46,0x84,0xf8,0x20,0xa0,0x64,0xfe,0x20,0x20,
-+0xff,0x4,0x3f,0x24,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x1,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x0,0xb,0x7c,0x10,0x11,0x11,0x15,0xff,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x13,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2,
-+0x4,0xf,0x70,0x40,0x41,0x41,0x7f,0x49,0x49,0x49,0x49,0x49,0x49,0x88,0x8,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2,
-+0x20,0x13,0x10,0xfe,0x1,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x4d,0x48,0x80,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2,
-+0x10,0x13,0x10,0xfe,0x11,0x11,0x7d,0x1,0x7d,0x45,0x45,0x45,0x44,0x7c,0x40,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x10,0x13,0x10,0x28,0x45,0x81,0x7d,0x1,0x7d,0x45,0x45,0x45,0x44,0x7c,0x40,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x40,0x45,0x48,0x70,0x45,0x7d,0x1,0x13,0xf5,0x39,0x39,0x55,0x54,0x90,0x30,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x20,0x13,0x10,0xfe,0x11,0x11,0x25,0x7d,0x9,0x11,0x25,0xc9,0x18,0x24,0xc2,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x10,0x13,0x28,0x26,0x53,0x81,0x7d,0x5,0x9,0x7d,0x45,0x45,0x44,0x7c,0x44,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x1,0x77,0x55,0x55,0x77,0x0,0x3e,0x0,0xff,0x20,0x3e,0x2,0x2,0x2,0x14,0x9,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x64,0x28,0x46,0x82,
-+0x8,0x49,0x49,0x49,0x7f,0x0,0xff,0x8,0x7f,0x55,0x55,0x55,0x55,0x55,0x43,0x0,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x64,0x28,0x46,0x82,
-+0x2,0xff,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x77,0x11,0x55,0x22,0x22,0x55,0x88,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0xd4,0x54,0x54,0x54,0x54,0x64,0x28,0x46,0x82,
-+0x24,0x24,0xff,0x24,0x2,0xff,0x24,0x24,0xff,0xa5,0xa5,0xdb,0x81,0x85,0x82,0x0,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82,
-+0x0,0x3e,0x14,0x8,0x14,0x77,0x55,0x22,0x55,0x8,0xff,0x18,0x2c,0x4b,0x89,0x8,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0xd4,0x54,0x20,0x28,0x46,0x82,
-+0x2,0x3f,0x22,0x3e,0x22,0x3e,0x8,0xff,0x0,0x3e,0x22,0x3e,0x8,0x2a,0x49,0x18,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0xd4,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82,
-+0x2,0x7f,0x8,0xff,0x88,0x6b,0x8,0x6b,0x8,0xff,0x10,0x7f,0x55,0x55,0x55,0x43,0x4,0xfe,0x10,0xa4,0xfe,0x44,0x54,0x54,0x54,0xd4,0x54,0x54,0x20,0x28,0x46,0x82,
-+0x9,0x2e,0x28,0xff,0x4a,0xc,0x32,0xdf,0x11,0x1f,0x12,0x1f,0x5,0xff,0x1,0x1,0xfe,0x20,0xfc,0x94,0x94,0x28,0xc4,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x3f,0x20,0x22,0x22,0x22,0x22,0x23,0x26,0x5a,0x42,0x81,0x0,0x0,0x10,0xf8,0x0,0xfc,0x4,0x8,0x20,0x60,0x80,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x1,0x1,0x1,0x3f,0x22,0x3f,0x22,0x23,0x21,0x20,0x2f,0x22,0x41,0x40,0x83,0x1c,0x10,0xf8,0x0,0xfc,0x4,0xc8,0x10,0xf0,0x0,0x88,0xfc,0x20,0x40,0x80,0x60,0x1c,
-+0x8,0x8,0x8,0x9,0x7f,0x49,0x49,0x49,0x49,0x7f,0x48,0x9,0xf,0xf1,0x40,0x0,0x40,0x40,0x40,0x40,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1d,0xe5,0x42,0x4,0x0,0x10,0xf8,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x0,0xff,0x4,0x4,0x7,0x8,0x31,0xc1,0x3f,0x21,0x21,0x3f,0x1,0x1,0x7f,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x50,0x28,0xfc,0x8,0x8,0xf8,0x0,0x8,0xfc,0x4,
-+0x0,0x2,0xff,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x44,0x43,0x80,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x20,0x24,0x3c,0xc6,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x55,0x54,0x54,0x7c,0x50,0x14,0x1d,0xe5,0x40,0x0,0x80,0x80,0x88,0xfc,0x0,0x0,0xf8,0x8,0x10,0x20,0x40,0x80,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x40,0x0,0x40,0x20,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x10,0x10,0x10,0x14,0x7d,0x54,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x6,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x0,0x20,0x20,0x20,0x20,0x24,0xec,0x30,0x20,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0,
-+0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x14,0x1c,0xe5,0x42,0xc,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0xa8,0xa0,0xa0,0x22,0x22,0x1e,
-+0x10,0x10,0x13,0x14,0x7e,0x54,0x57,0x54,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x8,0x1c,0xe0,0x40,0x48,0x7c,0xc0,0x40,0x44,0x7e,0xc0,0x40,0x40,0x42,0x42,0x3e,
-+0x10,0x10,0x10,0x14,0x7e,0x55,0x56,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x2,0x20,0x20,0x50,0x50,0x88,0xe,0x4,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x55,0x56,0x7c,0x50,0x14,0x1c,0xe5,0x41,0x0,0x0,0x10,0x58,0x50,0x50,0x88,0x88,0x26,0x24,0x20,0x40,0x40,0x90,0x8,0xfc,0x4,
-+0x10,0x10,0x11,0x14,0x7e,0x54,0x55,0x54,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x10,0x10,0x10,0xd0,0x50,0x10,0x10,0x90,0x94,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x13,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7c,0x50,0x14,0x1c,0xe4,0x1,0x0,0x24,0xf4,0x24,0x24,0xe4,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0x44,0x84,
-+0x1,0x21,0x21,0x3f,0x1,0xff,0x1,0x1,0x1f,0x11,0x11,0x1f,0x1,0x1,0x7f,0x0,0x0,0x8,0x8,0xf8,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x4,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x40,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x17,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1c,0xe4,0x40,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x8,0x28,0x10,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x44,0x9,0x4,0xfe,0x0,0x4,0xfe,0x20,0x24,0x3e,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8,
-+0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x10,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x17,0x1d,0xe5,0x41,0x1,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfe,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x14,0x7f,0x55,0x56,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x40,0x0,0x80,0xc0,0x84,0xfe,0x40,0x40,0x48,0x7c,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x47,0x0,0x8,0x1c,0xe0,0x80,0x80,0x80,0x88,0xfc,0x90,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,
-+0x10,0x10,0x10,0x14,0x7e,0x55,0x56,0x54,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x40,0x0,0x20,0x20,0x50,0x50,0x88,0x46,0x24,0x20,0x0,0xfc,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x10,0x11,0x11,0x14,0x7e,0x54,0x54,0x54,0x57,0x7c,0x51,0x14,0x1c,0xe4,0x43,0x0,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x10,0x14,0x7e,0x55,0x55,0x57,0x54,0x7c,0x51,0x17,0x1c,0xe4,0x40,0x1,0x10,0x90,0x90,0x94,0xbe,0x14,0x54,0xd4,0x94,0x94,0x54,0xf4,0x24,0x44,0x94,0x8,
-+0x4,0x7e,0x8,0x8,0x8,0xe,0xf1,0x1,0x1f,0x11,0x11,0x1f,0x11,0x1,0x7f,0x0,0x8,0xfc,0x88,0xc8,0xaa,0x8a,0x6,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x4,
-+0x10,0x10,0x10,0x15,0x7e,0x55,0x54,0x54,0x54,0x7f,0x50,0x14,0x1c,0xe4,0x41,0x2,0x20,0x20,0x28,0xfc,0x20,0x24,0xac,0xb0,0x24,0xfe,0x50,0x50,0x90,0x88,0x6,0x4,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x57,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x41,0x2,0x80,0x80,0x5c,0xe0,0x50,0x22,0xd2,0xe,0x0,0xfc,0x90,0x90,0x92,0x92,0xe,0x0,
-+0x10,0x10,0x11,0x14,0x7e,0x54,0x54,0x55,0x54,0x7c,0x51,0x14,0x1c,0xe4,0x43,0x0,0x0,0x8,0xfc,0x20,0x20,0x48,0x84,0xfe,0x22,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x22,0x2a,0xfe,0xaa,0xaa,0xaa,0xaa,0xfa,0xa2,0x2a,0x38,0xc9,0x1,0x2,0x80,0x84,0xbe,0x88,0x88,0xbe,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xae,0x8,0x8,0x8,
-+0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x50,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0xfc,0x54,0x54,0x54,0x54,0xfc,0x4,
-+0x20,0x20,0x27,0x29,0xfd,0xaa,0xaa,0xaf,0xa9,0xf9,0xa5,0x2b,0x39,0xca,0x4,0x8,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x7c,0x0,0x86,0x7c,0x0,
-+0x10,0x10,0x11,0x14,0x7e,0x54,0x57,0x54,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x2,0x40,0x20,0x24,0xfe,0x88,0x50,0x20,0xd8,0x6,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x55,0x56,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x1,0x6,0x40,0x20,0x4,0xfe,0x88,0x88,0x4,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0x6,0x4,
-+0x11,0x10,0x10,0x10,0x7d,0x54,0x54,0x55,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x4,0x8c,0x50,0x4,0xfe,0x20,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x55,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x20,0x20,0x40,0x88,0xfc,0x20,0xa8,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x3f,0x20,0x2f,0x20,0x3f,0x24,0x24,0x26,0x24,0x2f,0x28,0x28,0x4f,0x40,0xbf,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x88,0x50,0xb0,0x8e,0xf8,0x88,0x88,0xf8,0x84,0xfc,0x2,
-+0x8,0x8,0xfe,0x8,0xe,0xf8,0x9,0x2a,0x11,0x3f,0x21,0x21,0x3f,0x1,0x7f,0x0,0x4,0xf8,0x80,0x84,0xfe,0x90,0x10,0x10,0x10,0xf8,0x8,0x8,0xf8,0x4,0xfc,0x2,
-+0x10,0x11,0x10,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x24,0xa8,0xb0,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x54,0x57,0x54,0x7c,0x53,0x14,0x1c,0xe5,0x42,0x4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xe,0x4,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x55,0x55,0x7e,0x52,0x14,0x1c,0xe4,0x40,0x0,0x44,0xe4,0x84,0x84,0x94,0xf4,0x94,0x94,0xd4,0xb4,0x94,0x94,0x84,0x84,0x94,0x88,
-+0x10,0x10,0x10,0x14,0x7e,0x55,0x56,0x54,0x54,0x7d,0x50,0x14,0x1d,0xe6,0x40,0x0,0x20,0x20,0x50,0x88,0x88,0x6,0xf8,0x20,0x28,0xfc,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x13,0x11,0x7c,0x54,0x55,0x54,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x8,0x1c,0xe0,0x24,0xa4,0xa8,0xfc,0x8,0x30,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x11,0x10,0x13,0x14,0x7e,0x55,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x6,0x4,0x88,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x50,0x50,0x50,0x92,0x92,0xe,0x0,
-+0x10,0x10,0x13,0x10,0x7d,0x54,0x57,0x54,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x17,0x1c,0xe4,0x41,0x2,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0xfe,0x0,0x88,0x6,0x2,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x55,0x55,0x55,0x7e,0x52,0x14,0x1c,0xe4,0x40,0x0,0x80,0x86,0x98,0x90,0xf0,0x90,0x9e,0xd4,0xb4,0x94,0x94,0x94,0xa4,0xa4,0xc4,0x84,
-+0x20,0x20,0x20,0x27,0xf8,0xa8,0xab,0xaa,0xaa,0xfa,0xa3,0x28,0x39,0xce,0x4,0x0,0x20,0x28,0x24,0xfe,0x20,0x20,0xa4,0xa4,0xa4,0xa8,0xa8,0x10,0xb2,0x52,0x8a,0x4,
-+0x2,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x1,0x3f,0x21,0x21,0x3f,0x1,0xff,0x0,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfc,0x2,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x54,0x7f,0x50,0x14,0x1c,0xe5,0x42,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x70,0xa8,0x2e,0x24,0x20,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x4,0xfe,0x4,0x14,0xfc,0x24,0x24,0xfc,0x24,0x34,0x2c,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x54,0x54,0x7d,0x52,0x14,0x1d,0xe6,0x40,0x1,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0x54,0x94,0xa4,0x24,0x44,0xa8,0x10,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7c,0x50,0x17,0x1c,0xe4,0x40,0x0,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0x50,0x94,0xfe,0x10,0x10,0x10,0x10,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x42,0x4,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x10,0x11,0x10,0x10,0x7d,0x54,0x57,0x54,0x54,0x7d,0x52,0x14,0x1c,0xe4,0x40,0x0,0x20,0x24,0xa8,0x20,0xfc,0x20,0xfe,0x50,0x88,0xfe,0x88,0x88,0xa8,0x92,0x82,0x7e,
-+0x10,0x12,0x13,0x12,0x7d,0x55,0x55,0x55,0x56,0x7d,0x50,0x14,0x1c,0xe5,0x42,0x4,0x40,0x20,0xfe,0x2,0x4,0x0,0xdc,0x54,0x54,0x54,0xdc,0x90,0x92,0x12,0xe,0x0,
-+0x21,0x20,0x20,0x2b,0xfe,0xaa,0xab,0xaa,0xaa,0xfb,0xa2,0x2a,0x3a,0xcb,0x2,0x0,0x0,0x80,0x9e,0xd2,0x54,0x54,0xd8,0x54,0x54,0xd2,0x12,0x9a,0xd4,0x50,0x10,0x10,
-+0x10,0x11,0x10,0x14,0x7e,0x55,0x54,0x54,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x43,0x0,0x0,0xfc,0x8,0x30,0x24,0xfe,0x20,0xa0,0x44,0xfe,0x54,0x54,0x54,0x54,0xfe,0x0,
-+0x20,0x20,0x27,0x20,0xfb,0xa8,0xaf,0xa9,0xab,0xfe,0xaa,0x23,0x3a,0xca,0x3,0x2,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0xf8,0xc,0xa,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x56,0x54,0x55,0x7c,0x50,0x14,0x1c,0xe5,0x42,0x0,0x88,0x88,0xfe,0x88,0x88,0xfe,0x2,0x24,0xfc,0x20,0x70,0x68,0xa8,0x26,0x24,0x20,
-+0x10,0x10,0x10,0x13,0x7c,0x54,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x54,0xfc,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x10,0x13,0x10,0x14,0x7e,0x54,0x54,0x54,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x4,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x10,0x13,0x7c,0x54,0x55,0x56,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x43,0x0,0x20,0x20,0x24,0xfe,0x50,0x88,0x26,0xf8,0x20,0xfc,0x20,0xf8,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x55,0x55,0x7e,0x52,0x14,0x1c,0xe4,0x40,0x0,0x4,0x64,0x84,0xa4,0x94,0xc4,0xa4,0x94,0xc4,0xbe,0x84,0x84,0x84,0x84,0x84,0x84,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1d,0xe6,0x40,0x3,0x80,0x84,0xfe,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x80,0xfc,0x84,0x58,0x20,0xd8,0x6,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x40,0x3,0x20,0xac,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x20,0x20,0x20,0x28,0xfd,0xaa,0xac,0xab,0xaa,0xfb,0xa2,0x2b,0x3a,0xca,0x2,0x2,0x20,0x20,0x50,0x90,0x8,0xf4,0x2,0xc4,0x54,0xd4,0x54,0xd4,0x54,0x54,0x44,0xcc,
-+0x22,0x21,0x21,0x27,0xfa,0xaa,0xab,0xaa,0xfa,0xa2,0x22,0x2a,0x3a,0xcc,0x5,0x8,0x20,0x20,0x24,0xbe,0x40,0x0,0xbc,0x88,0x90,0xfe,0x90,0x90,0x90,0x90,0xd0,0x20,
-+0x20,0x22,0x21,0x28,0xff,0xa8,0xa9,0xaa,0xa8,0xff,0xa1,0x2a,0x39,0xe8,0x1,0x6,0x40,0x48,0x50,0x40,0xfc,0xe0,0x58,0x48,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0x8,
-+0x10,0x10,0x10,0x13,0x7c,0x54,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x0,0x88,0x50,0xfe,0x50,0x54,0xfe,0x54,0x54,0x54,0x9c,0x4,0x74,0x4,0xfc,0x4,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x53,0x15,0x1d,0xe5,0x41,0x1,0x40,0x24,0xfe,0x4,0x4,0xfc,0x4,0x0,0xfe,0x4a,0x4a,0xfe,0x4a,0x4a,0x4a,0x6,
-+0x0,0x7e,0x14,0x8,0xff,0x1a,0x28,0x49,0x19,0x3f,0x21,0x21,0x3f,0x1,0xff,0x0,0x40,0x44,0x7e,0xc8,0x28,0x10,0x28,0x46,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfc,0x2,
-+0x20,0x20,0x27,0x28,0xff,0xa8,0xaf,0xa8,0xa9,0xfb,0xa4,0x2b,0x38,0xc9,0x2,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0xa0,0x10,0xe8,0x46,0xf8,0x40,0x50,0x48,0x40,
-+0x8,0x7f,0x8,0x3e,0x8,0xff,0x10,0x1c,0x25,0x4d,0x3f,0x21,0x21,0x3f,0x1,0xff,0x20,0x20,0x24,0x7e,0xc8,0x28,0x10,0x28,0x46,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,
-+0x20,0x20,0x27,0x28,0xfc,0xab,0xa8,0xaa,0xab,0xfa,0xa2,0x2b,0x3a,0xca,0x2,0x2,0x90,0x94,0xfe,0x90,0x90,0xfc,0x90,0x94,0xfe,0x94,0x94,0x6c,0x44,0x4,0x14,0x8,
-+0x21,0x21,0x27,0x21,0xf8,0xaf,0xa8,0xa9,0xaa,0xfd,0xa1,0x2f,0x39,0xc9,0x2,0x4,0x10,0x14,0xfe,0x18,0x44,0xfe,0xa0,0x10,0xe,0x14,0x10,0xfe,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x13,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x50,0x17,0x1c,0xe4,0x40,0x3,0x88,0x88,0xfe,0x88,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x42,0x4,0x4,0xfe,0x10,0x24,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x10,0x58,0x56,0x92,0x30,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x14,0x1c,0xe6,0x42,0x4,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x48,0x20,0xa4,0x82,0x8a,0x78,
-+0x10,0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x40,0x24,0xfe,0x0,0x54,0x24,0x54,0xfc,0x24,0xfe,0x24,0x54,0x74,0x4,0x14,0x8,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x42,0x4,0x20,0x14,0xfe,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x44,0x44,0x44,0x7c,0x44,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x56,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe5,0x42,0x4,0x40,0x20,0xfe,0x88,0x50,0xfe,0x42,0x20,0xfe,0x80,0xf8,0x88,0x88,0x8,0x28,0x10,
-+0x8,0x7f,0x8,0xff,0x14,0x56,0x55,0x94,0x25,0x3f,0x21,0x21,0x3f,0x1,0xff,0x0,0x40,0x40,0x44,0x7e,0xc8,0x28,0x10,0x28,0x46,0xf8,0x8,0x8,0xf8,0x4,0xfc,0x2,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x55,0x55,0x7d,0x51,0x15,0x1c,0xe4,0x41,0x2,0x88,0x88,0xfe,0x88,0x88,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x0,0x88,0x6,0x2,
-+0x20,0x20,0x27,0x20,0xfb,0xaa,0xab,0xaa,0xab,0xf8,0xa1,0x29,0x39,0xc9,0x1,0x1,0x90,0x94,0xfe,0x90,0xfc,0x94,0xfc,0x94,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x10,0x13,0x10,0x10,0x7d,0x55,0x55,0x55,0x54,0x7c,0x50,0x17,0x1c,0xe5,0x42,0x0,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xf8,0x0,0xfe,0xa8,0x26,0x22,0x60,
-+0x10,0x11,0x10,0x10,0x7d,0x55,0x56,0x54,0x54,0x7c,0x50,0x15,0x1c,0xe4,0x43,0x0,0x20,0x24,0xa8,0x20,0xfe,0x2,0xf8,0x88,0x88,0xf8,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x11,0x10,0x11,0x7c,0x57,0x54,0x54,0x55,0x7e,0x50,0x14,0x1d,0xe2,0x44,0x0,0xc,0xf0,0x24,0x24,0xa8,0xfe,0x68,0xa8,0x26,0x24,0x0,0xa0,0xa4,0x8a,0x8a,0x78,
-+0x10,0x10,0x11,0x13,0x7d,0x55,0x55,0x54,0x54,0x7d,0x52,0x14,0x1f,0xe4,0x43,0x0,0x80,0xf8,0x10,0xfc,0x24,0x24,0xfc,0x40,0xc4,0x28,0x70,0xb0,0x68,0xae,0x24,0x60,
-+0x8,0xf,0x18,0x26,0x1,0xe,0xf2,0x1,0xa,0x9,0x3e,0x2a,0x3e,0x9,0x7f,0x1,0x0,0xf0,0x20,0xc0,0x0,0xe0,0x1e,0x0,0x20,0x20,0xf8,0xa8,0xf8,0x24,0xfc,0x4,
-+0x10,0x11,0x10,0x14,0x7f,0x54,0x55,0x55,0x55,0x7d,0x51,0x14,0x1f,0xe4,0x40,0x0,0x20,0xfc,0x88,0x50,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20,
-+0x10,0x10,0x13,0x10,0x7c,0x56,0x55,0x56,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x40,0x24,0xfe,0x20,0x48,0xf2,0x24,0x52,0xf8,0x20,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x1f,0x2,0x1,0x7f,0x2,0xc,0x30,0xca,0x9,0x3e,0x2a,0x3e,0x9,0x7f,0x1,0x0,0xf0,0x20,0x40,0xfe,0x82,0x84,0x80,0xa0,0x28,0xfc,0xa8,0xf8,0x24,0xfc,0x4,
-+0x20,0x20,0x27,0x20,0xfb,0xa8,0xab,0xaa,0xaa,0xfb,0xa0,0x2a,0x39,0xcf,0x0,0x0,0x82,0xa2,0xf4,0x84,0xe8,0x12,0xe2,0x24,0x28,0xf0,0x2,0x22,0x44,0xe8,0x10,0x60,
-+0x10,0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x55,0x7c,0x53,0x14,0x1c,0xe6,0x42,0x0,0x20,0x24,0xfe,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x22,0xfe,0x42,0xa0,0xa4,0x8a,0x78,
-+0x10,0x11,0x10,0x11,0x7c,0x57,0x54,0x54,0x55,0x7f,0x51,0x15,0x1d,0xe5,0x41,0x1,0xc,0xf0,0x20,0x24,0xa8,0xfe,0x70,0xa8,0x26,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,
-+0x10,0x10,0x13,0x10,0x7d,0x54,0x57,0x55,0x54,0x7f,0x50,0x15,0x1d,0xe5,0x41,0x1,0x88,0x50,0xfe,0x20,0xfc,0x20,0xfe,0x24,0xa8,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1c,0xe4,0x41,0x6,0x88,0xfe,0x88,0xa0,0xfc,0x20,0xfc,0x20,0x3c,0x0,0xfc,0x8,0x90,0x60,0x98,0x6,
-+0x20,0x20,0x27,0x20,0xfb,0xaa,0xad,0xa8,0xaf,0xf8,0xa3,0x28,0x3b,0xe8,0x43,0x0,0x90,0x94,0xfe,0x90,0xfe,0x2,0xf4,0x0,0xfe,0x40,0xa4,0x78,0xb0,0x68,0xa6,0x60,
-+0x10,0x10,0x11,0x13,0x7d,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x42,0x4,0x80,0xf8,0x10,0xfe,0x44,0x92,0xfe,0x0,0x7c,0x0,0x7c,0x0,0x7c,0x44,0x7c,0x44,
-+0x20,0x23,0x22,0x2a,0xff,0xaa,0xaa,0xaa,0xab,0xfa,0xa2,0x2a,0x3a,0xcd,0x6,0x8,0x20,0xfe,0x88,0x50,0xfe,0x50,0xfc,0x54,0xfe,0x54,0xfc,0x50,0xd8,0x54,0x52,0x50,
-+0x10,0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x42,0x4,0x88,0x88,0xfe,0x88,0xfc,0x54,0x54,0xfc,0x28,0xfe,0x20,0x24,0x98,0x52,0x2a,0x46,
-+0xf,0x8,0x1f,0x0,0xff,0xc,0x73,0xd,0x72,0x1c,0x6b,0x3e,0x2a,0x3e,0x9,0x7f,0xe0,0x20,0xe0,0x44,0xfe,0x10,0x20,0xc0,0xa0,0x9e,0x24,0xf8,0xa8,0xf8,0x24,0xfc,
-+0x1,0x7f,0x9,0x7f,0x40,0x9f,0x4,0xf,0x38,0xcf,0x8,0x3e,0x2a,0x3e,0x8,0x7f,0x0,0xfc,0x20,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x20,0xf8,0xa8,0xf8,0x24,0xfc,
-+0x27,0x26,0x25,0x27,0xf9,0xab,0xae,0xab,0xaa,0xfa,0xa0,0x2b,0x39,0xc8,0x1,0x6,0xbc,0xb4,0xac,0xbc,0x40,0xfc,0x40,0xf8,0x40,0x7c,0x0,0xf8,0x10,0xe0,0x10,0xe,
-+0x8,0x8,0x8,0x1f,0x21,0x41,0x1,0x1,0xff,0x1,0x21,0x21,0x21,0x21,0x3f,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x3e,0x22,0x2a,0x2a,0x2a,0x14,0x22,0x8,0xf,0x11,0x1,0xff,0x1,0x11,0x11,0x1f,0xf8,0x88,0xa8,0xa8,0xa8,0x50,0x88,0x20,0xf0,0x0,0x4,0xfe,0x0,0x10,0x10,0xf0,
-+0x8,0x7f,0x8,0x3e,0x0,0x7f,0x49,0x7f,0x44,0x4f,0x91,0x1,0xff,0x1,0x11,0x1f,0x78,0x48,0x4e,0x80,0x78,0x48,0x30,0x48,0x86,0xf0,0x0,0x4,0xfe,0x0,0x10,0xf0,
-+0x20,0x24,0x3e,0x51,0x91,0x15,0xff,0x11,0x11,0x55,0x55,0x55,0x55,0x7d,0x2,0x4,0x20,0x3c,0x20,0xfe,0x24,0xf8,0x24,0x38,0x0,0xfe,0x54,0x54,0xfe,0x10,0x10,0x30,
-+0x0,0x6,0x79,0x11,0x15,0xff,0x11,0x11,0x15,0x7f,0x45,0x45,0x45,0x7d,0x45,0x1,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x10,0x10,0x4a,0x8a,0x4,
-+0x10,0x12,0x1f,0x20,0x28,0x45,0x80,0x0,0x3f,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x40,0x44,0x7e,0x80,0x90,0x8,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x80,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x5,0x2,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x0,0x3f,0x8,0x8,0x9,0x14,0x12,0x11,0x21,0x46,0x98,0x40,0x44,0x7e,0xa0,0x10,0x20,0xf0,0x40,0x90,0xf8,0x20,0x40,0x80,0x60,0x1e,0x4,
-+0x10,0x12,0x1f,0x28,0x45,0x0,0x3f,0x8,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x20,0xf0,0x20,0x20,0x24,0xfe,0x4,0xf4,0x4,0x14,0x8,
-+0x10,0x12,0x1f,0x28,0x45,0x0,0x3f,0x4,0x4,0xff,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x12,0x1f,0x28,0xc5,0x0,0x1f,0x10,0x11,0x11,0x11,0x12,0x12,0x4,0x18,0xe0,0x40,0x44,0x7e,0xa0,0x10,0x10,0xf8,0x10,0x10,0x10,0x90,0x90,0x90,0x82,0x82,0x7e,
-+0x10,0x12,0x1f,0x28,0x45,0x0,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x21,0x41,0x1,0x40,0x44,0x7e,0xa0,0x10,0x38,0xe0,0x20,0x20,0x20,0x10,0x10,0x8,0xe,0x4,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x1,0x3f,0x21,0x21,0x3f,0x3,0x5,0x9,0x31,0xc1,0x1,0x40,0x44,0x7e,0xa0,0x10,0x8,0xf0,0x0,0x4,0xfe,0x4,0x4,0x44,0x28,0x10,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x8,0xf,0x12,0x12,0x22,0x44,0x4,0x8,0x11,0x22,0x0,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x50,0x20,
-+0x10,0x12,0x1f,0x28,0x45,0x0,0x7e,0x8,0x8,0x8,0x8,0xe,0x78,0x20,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0xfc,0x88,0x90,0x90,0x88,0xc4,0xa4,0x98,0x80,0x80,
-+0x10,0x12,0x1f,0x28,0xc5,0x3f,0x20,0x20,0x27,0x24,0x24,0x27,0x24,0x20,0x3f,0x0,0x40,0x44,0x7e,0xa0,0x10,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0xff,0x0,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x11,0x11,0x1f,0x21,0x41,0x1f,0x1,0x1,0x1,0xff,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0x10,0xf8,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x4,0xf,0xa,0x12,0x23,0x42,0x2,0x3,0x2,0x2,0x2,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x0,0x10,0xf8,0x0,0x8,0xfc,0x0,0x0,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x8,0xf,0x10,0x10,0x2f,0x48,0x8,0xf,0x8,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x10,0x12,0x1f,0x28,0xc5,0x2,0x1,0x7f,0x0,0x8,0x4,0x4,0x2,0x2,0x7f,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0x8,0xfc,0x0,0x20,0x20,0x40,0x40,0x84,0xfe,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x3f,0x0,0x7f,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x40,0x44,0x7e,0xa0,0x14,0xfe,0x4,0xe4,0x4,0x84,0x84,0x84,0x84,0x84,0x94,0x8,
-+0x10,0x12,0x1f,0x28,0xc5,0x3f,0x2,0x2,0x4,0x8,0x3f,0xd0,0x10,0x10,0x1f,0x10,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x8,0x10,0x50,0x20,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x12,0x1f,0x28,0xc5,0x8,0x8,0x7f,0x9,0x9,0x9,0x9,0x11,0x11,0x25,0xc2,0x40,0x44,0x7e,0xa0,0x10,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x20,0x10,0x7,0x70,0x10,0x11,0x11,0x12,0x2c,0x44,0x3,0x40,0x44,0x7e,0xa0,0x10,0x80,0x88,0xfc,0x88,0x88,0x8,0x8,0x28,0x10,0x6,0xfc,
-+0x10,0x12,0x1f,0x28,0x45,0x84,0x8,0x10,0x3f,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x44,0x7e,0xa0,0x10,0x0,0x20,0x10,0xf8,0x8,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x12,0x1f,0x28,0xc5,0x8,0x8,0xfe,0x8,0x8,0xe,0x78,0x8,0x8,0x28,0x10,0x40,0x44,0x7e,0xa0,0x10,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x10,0x1e,0x10,0x10,0x1e,0x1,0xff,0x1,0x1,0x1,0x1,0x40,0x44,0x7e,0xa0,0x10,0x80,0x98,0xe0,0x84,0xfc,0x0,0xfe,0x0,0x0,0x0,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x11,0x1f,0x21,0x1,0xff,0x4,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x0,0x4,0xfe,0x80,0x80,0x80,0x84,0x84,0x7c,
-+0x10,0x12,0x1f,0x28,0xc5,0x0,0x7d,0x10,0x21,0x7d,0x5,0x49,0x29,0x10,0x28,0xc7,0x40,0x44,0x7e,0xa0,0x10,0xc,0xf0,0x20,0x28,0x3c,0x20,0x28,0xfc,0x0,0x6,0xfc,
-+0x10,0x12,0x1f,0x28,0xc5,0x2,0x4,0x8,0x3f,0xc1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x40,0x44,0x7e,0xa0,0x10,0x80,0x40,0x20,0xfe,0x4,0x20,0xf0,0x0,0x8,0xfc,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x7,0x8,0x3f,0x1,0xff,0x1,0x3f,0x1,0x1,0x5,0x2,0x40,0x44,0x7e,0xa0,0x10,0xe0,0x48,0xfc,0x8,0xfe,0x8,0xf8,0x8,0x0,0x0,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x10,0x10,0x7c,0x11,0x12,0x10,0x1c,0xe1,0x40,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x84,0xfe,0x84,0x44,0x24,0x4,0x34,0xc4,0x84,0x14,0x8,
-+0x10,0x12,0x1f,0x28,0xc5,0x0,0x7f,0x1,0x11,0x11,0x11,0x29,0x45,0x1,0xff,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0xfc,0x0,0x10,0x10,0x10,0x28,0x44,0x0,0xfe,0x0,
-+0x10,0x1f,0x28,0x45,0xff,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x29,0x5,0x3,0xc,0x70,0x40,0x7e,0xa0,0x14,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0x0,0xe0,0x1e,
-+0x10,0x12,0x1f,0x28,0x45,0x8,0x9,0x7f,0x9,0xd,0x19,0x69,0x9,0x9,0x29,0x10,0x40,0x44,0x7e,0xa0,0x10,0x4,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0x2,0xfe,
-+0x10,0x12,0x1f,0x28,0xc5,0x9,0x5,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x40,0x44,0x7e,0xa0,0x10,0x20,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x10,0x12,0x1f,0x28,0xc5,0x8,0x8,0x14,0x35,0x56,0x94,0x14,0x14,0x14,0x11,0x12,0x40,0x44,0x7e,0xa0,0x10,0x84,0xfe,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x12,0x1f,0x68,0x85,0x7f,0x1,0x3f,0x1,0xff,0x10,0x1f,0x10,0x1f,0x10,0x10,0x40,0x44,0x7e,0xa0,0x10,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x12,0x1f,0x28,0x45,0x7f,0x1,0x1f,0x1,0xff,0x0,0x1f,0x10,0x11,0x12,0x4,0x38,0x48,0x7c,0xa0,0x10,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xd0,0x30,0x8,
-+0x12,0x1f,0x28,0xc5,0x3f,0x20,0x20,0x2f,0x24,0x22,0x3f,0x21,0x22,0x24,0x3f,0x0,0x44,0x7e,0xa0,0x10,0xfc,0x80,0x90,0xf8,0x90,0xa0,0xfc,0x40,0x30,0x14,0xfe,0x0,
-+0x10,0x12,0x1f,0x28,0xc2,0x3f,0x2,0x2,0xff,0x4,0xf,0x18,0x6f,0x8,0xf,0x8,0x40,0x44,0x7e,0xa0,0x10,0xe0,0x40,0x84,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x12,0x1f,0x28,0xc5,0x8,0x7f,0xa,0x2,0xff,0x4,0xf,0x38,0xc8,0x8,0xf,0x8,0x48,0x7c,0xa0,0x10,0x20,0xfc,0x20,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x12,0x1f,0x28,0x45,0x8,0x8,0xff,0x8,0x8,0xe,0xf8,0x48,0x8,0x28,0x10,0x40,0x48,0x7c,0xa0,0x10,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x88,
-+0x10,0x12,0x1f,0x28,0x45,0x13,0x11,0xfc,0x11,0x12,0x1d,0xf0,0x13,0x10,0x50,0x20,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x10,0xe0,0x10,0x4e,0xf4,0x40,0xf8,0x40,0x40,0x40,
-+0x10,0x12,0x1f,0x28,0x45,0x1f,0x11,0x1f,0x11,0x1f,0x0,0xff,0x8,0x8,0x10,0x20,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x20,0x20,0x20,
-+0x12,0x1f,0x28,0x45,0x8,0x4,0x1f,0x11,0x1f,0x11,0x1f,0x1,0xff,0x1,0x1,0x1,0x48,0x7c,0x90,0x8,0x20,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x12,0x1f,0x28,0x45,0x1,0x7f,0x40,0x88,0x10,0x20,0x1f,0x1,0x1,0x1,0xff,0x0,0x48,0x7c,0xa0,0x10,0x0,0xfe,0x2,0x24,0x18,0x8,0xf0,0x0,0x0,0x4,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0x1,0x7f,0x48,0x8e,0x12,0x12,0x32,0x4c,0x8,0x10,0x20,0x40,0x48,0x7c,0xa0,0x10,0x0,0xfe,0x2,0xf4,0x90,0x90,0x90,0xd0,0xa0,0x82,0x82,0x7e,
-+0x12,0x1f,0x28,0x45,0x3f,0x1,0xff,0x1,0x3f,0x1,0x25,0x25,0x29,0x29,0x31,0x41,0x48,0x7c,0xa0,0x10,0xf8,0x8,0xfe,0x8,0xf8,0x0,0x48,0x28,0x28,0x18,0x18,0x8,
-+0x12,0x1f,0x28,0x45,0x0,0x3f,0x20,0x3f,0x20,0x2f,0x29,0x29,0x4f,0x49,0x80,0x0,0x48,0x7c,0xa0,0x10,0x50,0xfc,0x40,0xc0,0x28,0x28,0x28,0x30,0x20,0x52,0x8a,0x4,
-+0x12,0x1f,0x28,0x41,0x3f,0x21,0x3f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x6,0x38,0x48,0x7c,0xa0,0x8,0xfc,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0x10,0x60,0x18,
-+0x12,0x1f,0x28,0x41,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x7f,0x1,0x3f,0x1,0xff,0x0,0x48,0x7c,0xa0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0x5,0x8,0x17,0x31,0x51,0x96,0x10,0x17,0x10,0x10,0x11,0x16,0x48,0x7c,0xa0,0x0,0xf0,0x10,0xfc,0x0,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x18,0x6,
-+0x12,0x1f,0x28,0x41,0x7f,0x4,0x3f,0x4,0xff,0x11,0x1f,0x11,0xff,0x10,0x10,0x10,0x48,0x7c,0xa0,0x50,0xfc,0x40,0xf8,0x40,0xfe,0x10,0xf0,0x14,0xfe,0x10,0x10,0x30,
-+0x10,0x1f,0x28,0x45,0x3f,0x22,0x22,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x22,0x3f,0x0,0x40,0x7c,0xa0,0x10,0xfc,0x40,0x50,0x78,0x40,0x78,0x40,0x78,0x40,0x48,0xfc,0x0,
-+0x10,0x1f,0x28,0x45,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x1,0xff,0x3,0xd,0x71,0x1,0x40,0x7c,0xa0,0x10,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x80,0x60,0x1c,0x0,
-+0x10,0x1f,0x28,0x45,0x1,0x3f,0x24,0x23,0x24,0x3f,0x20,0x3c,0x20,0x22,0x2c,0x30,0x40,0x7c,0xa0,0x10,0x8,0xfc,0x48,0x88,0x48,0xf8,0x80,0x8c,0xb0,0xc2,0x82,0x7e,
-+0x10,0x1f,0x28,0x45,0x1e,0x10,0x10,0x17,0x14,0x15,0x24,0x24,0x29,0x49,0x91,0x26,0x44,0x7e,0xa0,0xfc,0x80,0xf0,0x80,0xfe,0x44,0xf0,0x48,0x38,0xe0,0x22,0x22,0x1e,
-+0x10,0x1f,0x28,0x45,0x8,0xff,0x8,0x7f,0x49,0x7f,0x49,0x1c,0x2a,0x4a,0x88,0x9,0x40,0x7c,0xa0,0x50,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,
-+0x10,0x1f,0x28,0x45,0x3f,0x24,0x24,0x3f,0x1,0x3f,0x21,0x28,0x24,0x40,0x43,0x8c,0x40,0x7c,0xa0,0x10,0xf8,0x48,0x48,0xf8,0x40,0xfc,0x10,0xa0,0x40,0xa2,0x1a,0x6,
-+0x10,0x1f,0x28,0x45,0xa,0x37,0x24,0x27,0x24,0x2f,0x30,0x4,0x4,0x4,0x8,0x70,0x40,0x7c,0xa0,0x10,0x8,0xfc,0x48,0xc8,0x48,0xc8,0x38,0x40,0x40,0x42,0x42,0x3e,
-+0x10,0x1f,0x28,0x45,0x1,0x3f,0x22,0x3f,0x22,0x22,0x3f,0x28,0x2f,0x48,0x49,0x8e,0x40,0x7c,0xa0,0x10,0x0,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x44,0x48,0x72,0x42,0x3e,
-+0x10,0x1f,0x28,0x45,0x8,0x6a,0x5c,0x48,0x7e,0x48,0x58,0x6a,0x48,0x7e,0x1,0x0,0x40,0x7c,0xa0,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x90,0x90,0x90,0x10,0x10,
-+0x10,0x1f,0x28,0x5f,0x10,0x1f,0x10,0x1f,0x11,0x14,0x18,0x3f,0x24,0x24,0xff,0x0,0x40,0x7c,0xa0,0xf0,0x10,0xf0,0x10,0xf8,0x10,0xe0,0x1c,0xf8,0x48,0x48,0xfe,0x0,
-+0x10,0x1f,0x28,0x7f,0x4,0x3f,0x24,0x3f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x40,0x7c,0xa0,0xfc,0x40,0xf8,0x48,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,
-+0x10,0x1f,0x28,0x41,0x3e,0x28,0x7f,0x18,0x28,0xcd,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x7c,0xa0,0x10,0xf8,0xa0,0xfc,0x62,0xa2,0x1e,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x10,0x1f,0x28,0x45,0x3e,0x2,0x14,0xf,0x10,0x2f,0xc8,0xf,0x4,0x2,0x7f,0x0,0x40,0x7c,0xa0,0x10,0xa0,0xc8,0x50,0xe0,0x10,0xee,0x24,0xe0,0x40,0x88,0xfc,0x0,
-+0x10,0x1f,0x28,0x45,0x24,0x7e,0x24,0x3c,0x24,0x3c,0x24,0xfe,0x0,0x29,0x46,0x80,0x40,0x7c,0xa0,0x10,0x10,0xfe,0x92,0x90,0xfc,0xa4,0xa4,0xa8,0x90,0x28,0x46,0x84,
-+0x10,0x1f,0x28,0x45,0x8,0x7f,0x8,0x3f,0x2a,0x2a,0x3e,0x18,0x2c,0x4a,0x88,0x8,0x40,0x7c,0xa0,0x50,0x40,0x78,0x90,0xfc,0x84,0x94,0x94,0xa4,0xb4,0x48,0x46,0x82,
-+0x10,0x1f,0x28,0x45,0x10,0x17,0xfc,0x15,0x1e,0x34,0xd3,0x12,0x13,0x12,0x53,0x22,0x40,0x7c,0xa0,0x10,0x84,0x7e,0x24,0x24,0xd4,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x1,0x5,0x39,0x21,0x21,0x3d,0x21,0x21,0x21,0x3f,0x21,0x2,0x2,0x4,0x18,0xe0,0x0,0x8,0x7c,0x8,0x8,0x78,0x8,0x8,0x8,0xf8,0x8,0x80,0x80,0x40,0x30,0xe,
-+0x6,0x38,0x20,0x20,0x3e,0x20,0x20,0x3f,0x24,0x4,0xff,0x4,0x4,0x8,0x10,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x48,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x16,0x38,0xd0,0x1e,0x10,0x10,0x1f,0x10,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0x10,0xfe,0x14,0xf0,0x10,0x10,0xf0,0x10,
-+0x6,0x38,0x20,0x20,0x3e,0x20,0x20,0x3f,0x8,0x1f,0x20,0xe9,0x24,0x24,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x24,0x94,0x84,0x14,0x8,
-+0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x8,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5f,0xf0,0x1,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xa4,0x24,0xfe,0x0,
-+0x10,0x20,0x7d,0x44,0x64,0x54,0x44,0xfc,0x44,0x64,0x54,0x54,0x44,0x44,0x57,0x88,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x24,0x7e,0x44,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x88,0x20,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x24,0x7e,0x45,0x65,0x54,0x44,0xfc,0x44,0x64,0x54,0x54,0x44,0x45,0x56,0x88,0x0,0x44,0x24,0x24,0x28,0x88,0x88,0x90,0x50,0x20,0x50,0x50,0x88,0xe,0x4,0x0,
-+0x10,0x25,0x7f,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x88,0x20,0x20,0x20,0x20,0x20,0x24,0xec,0x30,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0,
-+0x10,0x24,0x7e,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x44,0x44,0x54,0x88,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,
-+0x10,0x24,0x7f,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x46,0x54,0x89,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x44,0x44,0x44,0x28,0x28,0x10,0x28,0x48,0x84,0x2,
-+0x10,0x24,0x7e,0x45,0x64,0x54,0x44,0xfc,0x44,0x64,0x54,0x54,0x44,0x45,0x55,0x8a,0x40,0x20,0x24,0xfe,0x40,0x40,0x44,0x7e,0x44,0x44,0x84,0x84,0x84,0x4,0x28,0x10,
-+0x10,0x24,0x7f,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x44,0x44,0x54,0x88,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x8,0x28,0x10,
-+0x10,0x24,0x7e,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x8a,0x20,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x24,0x7e,0x44,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x24,0x7e,0x44,0x65,0x55,0x46,0xfc,0x44,0x64,0x54,0x54,0x44,0x44,0x54,0x88,0x80,0x80,0x84,0xfe,0x40,0x40,0x50,0x78,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,
-+0x10,0x21,0x7c,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x4,0xfe,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0x5c,0x84,0x4,0x4,0xfc,0x4,
-+0x10,0x25,0x7e,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x20,0x24,0xa8,0xb0,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x10,0x25,0x7f,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x56,0x88,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x20,0x22,0x22,0x1e,
-+0x10,0x24,0x7e,0x44,0x64,0x57,0x44,0xfc,0x44,0x65,0x55,0x55,0x45,0x45,0x57,0x88,0x8,0xfc,0x10,0x20,0x24,0xfe,0x20,0xa0,0x44,0xfe,0x54,0x54,0x54,0x54,0xfe,0x0,
-+0x11,0x20,0x7c,0x47,0x64,0x54,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x4,0x88,0x50,0xfe,0x20,0x44,0xfe,0x4,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x24,0x7f,0x44,0x65,0x55,0x45,0xfd,0x45,0x64,0x55,0x55,0x45,0x45,0x55,0x89,0x50,0x54,0xfe,0x50,0xfc,0x54,0xfc,0x54,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,
-+0x10,0x25,0x7e,0x44,0x67,0x54,0x45,0xfd,0x45,0x65,0x55,0x54,0x45,0x44,0x57,0x88,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x10,0x24,0x7f,0x44,0x65,0x55,0x46,0xfc,0x47,0x64,0x57,0x54,0x47,0x44,0x57,0x88,0x50,0x54,0xfe,0x50,0xfe,0x2,0xf4,0x0,0xfe,0x84,0x48,0xb0,0x70,0xae,0x24,0x60,
-+0x1,0x2,0x6,0x9,0x37,0xc0,0x2,0x1,0xff,0x5,0xd,0x14,0x24,0xc5,0x6,0x4,0x0,0x80,0x40,0x30,0xee,0x24,0x40,0x4,0xfe,0x0,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x4,0x1f,0x10,0x14,0x12,0x10,0x1f,0x2,0x1,0xff,0x5,0xc,0x14,0x65,0x6,0x4,0x20,0xf0,0x20,0x20,0xa0,0x44,0xfe,0x4,0x24,0xf4,0x14,0xa8,0x40,0x3c,0x8,0x0,
-+0x10,0x10,0x7e,0x12,0x12,0x22,0x2a,0x45,0x1,0xff,0x5,0xc,0x34,0xc5,0x6,0x4,0x0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x0,0x4,0xfe,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x1,0x1,0x7f,0x11,0xd,0x5,0x9,0x33,0xff,0x5,0xd,0x14,0x24,0xc5,0x6,0x4,0x40,0x28,0xfc,0x10,0x60,0x80,0x60,0x14,0xfe,0x8,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x10,0x8,0x41,0x25,0xa,0x10,0x21,0x2e,0x1,0xff,0x5,0xc,0x34,0xc5,0x6,0x4,0x40,0x50,0x4c,0x44,0x50,0x60,0x80,0x0,0x4,0xfe,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x2,0x3f,0x22,0x3e,0x21,0x7e,0xa2,0x22,0x3f,0x1,0xff,0x4,0xc,0x15,0x66,0x4,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0x24,0xfe,0x90,0x60,0x1e,0x4,0x0,
-+0x44,0x24,0x29,0xff,0x11,0x11,0x7d,0x11,0x11,0xff,0x11,0x11,0x21,0x21,0x41,0x81,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x10,0x10,0x10,0x2a,0x4a,0xa6,0x12,
-+0x44,0x25,0x28,0xfe,0x10,0x10,0x7c,0x11,0x12,0xfe,0x10,0x10,0x20,0x20,0x43,0x80,0x8,0xfc,0x8,0x10,0x20,0x50,0x88,0x6,0x0,0xf8,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x44,0x24,0x28,0xfe,0x11,0x10,0x7d,0x12,0x10,0xfe,0x10,0x11,0x22,0x20,0x40,0x83,0x20,0x20,0x50,0x88,0xfc,0x88,0x6,0x82,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x44,0x25,0x29,0xfd,0x11,0x11,0x7c,0x10,0x11,0xfe,0x15,0x11,0x21,0x21,0x40,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x84,0xfe,0x4,0x24,0x24,0x54,0x4,0xe4,0x14,0x8,
-+0x44,0x25,0x29,0xfd,0x11,0x10,0x7c,0x13,0x10,0xfe,0x11,0x11,0x22,0x22,0x44,0x88,0x20,0x24,0x24,0x24,0xfc,0x80,0x84,0xfe,0x90,0x90,0x54,0x58,0xa8,0x28,0x44,0x82,
-+0x4,0x7f,0x1,0x3f,0x1,0xff,0x0,0x3e,0x8,0xff,0x2a,0x3d,0x51,0x9e,0x2,0xc,0x40,0xfc,0x0,0xf8,0x0,0xfe,0x80,0xa0,0x94,0xfe,0x80,0x48,0x50,0x22,0x52,0x8e,
-+0x10,0x10,0x94,0x54,0x59,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x10,0x10,0x20,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,
-+0x10,0x10,0x94,0x54,0x58,0x11,0xfe,0x30,0x38,0x54,0x54,0x90,0x10,0x10,0x11,0x12,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x10,0x10,0x95,0x55,0x59,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x95,0x55,0x59,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x12,0x12,0x14,0x11,0x0,0x4,0xfe,0x0,0x4,0xfe,0x40,0x44,0x7e,0x44,0x44,0x44,0x44,0x44,0x94,0x8,
-+0x1,0x11,0x11,0x1f,0x21,0x21,0x3f,0x11,0x9,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x10,0x10,0xf0,0x8,0x8,0xf8,0x10,0x30,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x10,0x10,0x97,0x54,0x58,0x10,0xff,0x32,0x3a,0x56,0x56,0x93,0x12,0x12,0x13,0x12,0x0,0x4,0xfe,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x41,0x31,0x12,0x4,0x11,0x26,0x50,0x9,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x0,0xfc,0x48,0xa0,0x10,0xe,0x10,0x30,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x8,0xf,0x28,0x3f,0x21,0x52,0x8c,0x19,0x69,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x7c,0x44,0x28,0x10,0x28,0xc6,0x10,0x30,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x8,0x49,0x2a,0xff,0x1c,0x2a,0x49,0x49,0x7f,0x95,0x55,0x37,0x21,0x41,0x81,0x1,0x0,0x12,0x12,0x92,0x24,0x24,0x24,0x48,0xa4,0x24,0x24,0x92,0x12,0x12,0x12,0x0,
-+0x10,0x10,0x95,0x55,0x59,0x12,0xfe,0x30,0x38,0x57,0x54,0x90,0x11,0x12,0x10,0x10,0x40,0x20,0x20,0xfe,0x2,0x4,0xf8,0x0,0x4,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x94,0x55,0x58,0x13,0xfe,0x30,0x39,0x56,0x54,0x90,0x11,0x10,0x10,0x17,0x20,0x40,0x88,0xfc,0x40,0xfe,0x50,0x98,0x24,0xca,0x10,0x64,0x88,0x30,0xc0,0x0,
-+0x10,0x10,0x94,0x55,0x59,0x13,0xfd,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x11,0x80,0xf8,0x88,0x8,0xfe,0x40,0x40,0x7c,0x90,0x14,0xfe,0x10,0x10,0x28,0x24,0xc2,
-+0x11,0x11,0x95,0x55,0x5a,0x11,0xfe,0x31,0x3a,0x54,0x55,0x91,0x11,0x11,0x11,0x11,0x10,0x10,0xd0,0x58,0x54,0x50,0x90,0x56,0x3c,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x10,0x10,0x94,0x54,0x5b,0x10,0xfe,0x30,0x39,0x57,0x54,0x90,0x11,0x11,0x13,0x10,0x0,0x88,0x50,0x4,0xfe,0x0,0x88,0x88,0x54,0xfc,0x88,0x88,0x10,0x54,0xfe,0x22,
-+0x10,0x11,0x94,0x54,0x58,0x12,0xfd,0x32,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x11,0x0,0xfc,0x24,0xa0,0xbc,0xe0,0x3e,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x10,0x11,0x94,0x54,0x59,0x10,0xfe,0x31,0x3a,0x54,0x55,0x90,0x10,0x11,0x12,0x10,0x0,0xf8,0x50,0x20,0xfe,0x62,0xa4,0x20,0x60,0x24,0xfe,0x70,0xa8,0x26,0x20,0x20,
-+0x10,0x10,0x95,0x55,0x59,0x11,0xff,0x31,0x39,0x54,0x50,0x97,0x10,0x10,0x10,0x13,0x40,0x84,0xfe,0x4,0xfc,0x4,0xfc,0x4,0xfc,0x28,0x24,0xfe,0x50,0x50,0x8e,0x4,
-+0x20,0x2f,0x21,0xa9,0x71,0x27,0xfc,0x24,0x77,0x69,0xa9,0x21,0x21,0x21,0x2a,0x24,0x4,0x7e,0x44,0x44,0x7c,0x10,0x14,0x7e,0x54,0x54,0x7c,0x10,0x10,0x14,0xfe,0x2,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x24,0x24,0x22,0x21,0x20,0x28,0x30,0x20,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x20,0x40,0x80,0x60,0x1e,0x4,0x0,
-+0x7d,0x44,0x7d,0x45,0x7c,0x48,0x5c,0x63,0x1f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x0,0xf8,0x20,0x24,0xfe,0x20,0x52,0x92,0xe,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,
-+0x2,0x7f,0x22,0x12,0x2,0x1a,0x63,0xa,0x4,0x8,0xff,0x8,0x8,0x8,0x10,0x20,0x8,0xfc,0x88,0x48,0x8,0x68,0x88,0x28,0x10,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x2b,0x24,0x50,0x8a,0x1,0x7c,0x4,0x8,0x49,0x32,0x10,0x8,0x9,0x0,0x0,0x44,0xfe,0x44,0x44,0x64,0x54,0xcc,0x44,0xcc,0x54,0x64,0x44,0x44,0x54,0x88,
-+0x1,0x2,0xc,0x37,0xc0,0x1f,0x10,0x1f,0x2,0x7f,0x12,0xa,0x12,0x22,0xa,0x4,0x0,0x80,0x60,0xd8,0x6,0xf0,0x10,0xf0,0x8,0xfc,0x48,0x28,0x48,0x88,0x28,0x10,
-+0x2,0x1f,0x2,0xff,0x2,0xf,0x38,0xcf,0x8,0xf,0x0,0x7e,0x22,0x1a,0x62,0x6,0x20,0xc0,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x34,0xc4,0xc,
-+0x2,0x2,0x7e,0x2,0x3e,0x2,0xfe,0x2,0x7f,0x22,0x12,0xa,0x12,0x63,0xa,0x4,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfe,0x88,0xfc,0x8,0x48,0x28,0x48,0x88,0x28,0x10,
-+0x8,0x4,0xff,0x0,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x7e,0x22,0x12,0x1a,0x62,0x6,0x20,0x44,0xfe,0x8,0x48,0x48,0x48,0x48,0x48,0x18,0xfc,0x44,0x24,0x34,0xc4,0xc,
-+0x10,0x9,0x7f,0x41,0x41,0x7f,0x40,0x40,0x7f,0x55,0x55,0x7f,0xd5,0x55,0x41,0x43,0x0,0x24,0xfe,0x24,0x24,0xb4,0x6c,0x24,0x24,0x6c,0xb4,0x24,0x24,0x24,0xb4,0x48,
-+0x2,0x7f,0x0,0x3e,0x22,0x3e,0x0,0x7f,0x41,0x55,0x55,0x7f,0x49,0x49,0x43,0x0,0x24,0xfe,0x24,0x24,0x24,0xb4,0x6c,0x24,0x24,0x6c,0xb4,0x24,0x24,0x24,0xb4,0x48,
-+0x7f,0x50,0x5e,0x68,0x7f,0x48,0x54,0x7f,0x0,0x7e,0x22,0x12,0x1a,0x62,0xa,0x4,0x7c,0x44,0x46,0x80,0x7c,0x28,0x10,0x6e,0x4,0xfe,0x44,0x24,0x34,0xc4,0x14,0x8,
-+0x1,0x3,0x4,0x8,0x10,0x3f,0x1,0x2,0x4,0x3f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x0,0x0,0x10,0x30,0xc0,0x0,0x20,0x10,0xf8,0x0,0x20,0x18,0xc,0x4,0x0,
-+0x8,0x8,0xfe,0x8,0x3e,0xc8,0x29,0x12,0x1f,0x1,0x2,0x3f,0x9,0x11,0x21,0x3,0x40,0x48,0xfc,0x48,0xc8,0x6a,0x8a,0x26,0xc0,0x0,0x10,0xf8,0x20,0x18,0x8,0x0,
-+0x8,0x8,0x7f,0xa,0x9,0x8,0xff,0x9,0x12,0x2f,0xc1,0x2,0x3f,0x9,0x11,0x23,0x20,0x28,0xfc,0x20,0x20,0xa4,0xfe,0x20,0x30,0xee,0x4,0x10,0xf8,0x20,0x18,0x8,
-+0x10,0x8,0x3e,0x23,0x22,0x3e,0x41,0x42,0x9f,0x1,0x2,0x3f,0x9,0x11,0x21,0x3,0x40,0x48,0xfc,0x48,0x30,0x48,0x86,0x20,0xc0,0x0,0x10,0xf8,0x20,0x18,0x8,0x0,
-+0x2,0xd,0xf0,0x94,0x54,0x49,0x7e,0x90,0x10,0xfd,0x10,0x54,0x55,0x56,0x7c,0x0,0x1c,0xe0,0x20,0x40,0x84,0xf8,0x10,0x20,0x44,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x1,0xff,0x1,0x1f,0x12,0xff,0x10,0x1f,0x0,0x3e,0x32,0x2a,0xff,0x28,0x4a,0x18,0x4,0xfe,0x0,0xf0,0x14,0xfe,0x90,0xf0,0x1c,0xe0,0x24,0xf8,0x24,0xfe,0x54,0xb2,
-+0x10,0x14,0xfe,0x11,0x7c,0x10,0xfe,0x21,0x3c,0x44,0xa4,0x28,0x10,0x28,0x41,0x82,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x14,0xfe,0x10,0x55,0xba,0x11,0x28,0x67,0xbc,0x24,0x29,0x5a,0x10,0x20,0xc0,0x80,0x80,0x84,0xfe,0x4,0x4c,0x54,0xe4,0xfc,0x44,0xe4,0x54,0x4c,0x44,0x54,0x48,
-+0x8,0xa,0x7f,0x8,0x9,0xff,0x8,0x28,0x2a,0x2f,0x28,0x28,0x58,0x48,0x87,0x0,0x8,0x8,0x48,0x48,0x48,0xc8,0x48,0x48,0x48,0x78,0x8,0x8,0x8,0x6,0xfc,0x0,
-+0x8,0x8,0x7f,0x8,0xa,0xff,0x8,0x28,0x28,0x2e,0x28,0x2b,0x58,0x48,0x87,0x0,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0x88,0xfe,0x0,0x6,0xfc,0x0,
-+0x10,0x17,0x7d,0x11,0x11,0xfd,0x12,0x55,0x50,0x5c,0x51,0x72,0x50,0x48,0x87,0x0,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x54,0xd4,0x94,0x4,0x14,0x8,0x6,0xfc,0x0,
-+0x10,0x12,0x7d,0x11,0x14,0xfe,0x10,0x50,0x51,0x5d,0x52,0x72,0x50,0x48,0x87,0x0,0x20,0x20,0x20,0x7e,0x82,0x14,0x90,0x90,0x10,0x28,0x26,0x42,0x80,0x6,0xfc,0x0,
-+0x11,0x15,0x7f,0x19,0x17,0xfb,0x15,0x59,0x57,0x5a,0x52,0x72,0x52,0x49,0x86,0x3,0x8,0x28,0xbc,0x48,0xfe,0x18,0xaa,0x4e,0xf8,0x8,0x48,0x48,0xb8,0x8,0x6,0xfc,
-+0x8,0x8,0xa,0x7f,0x8,0x8,0xff,0x14,0x54,0x56,0x55,0x94,0x14,0x14,0x24,0x4c,0x8,0xfc,0x88,0x88,0x88,0xa8,0x90,0xfc,0x84,0xc4,0xa8,0xa8,0x90,0xa8,0xc6,0x84,
-+0x8,0x8,0x8,0x7e,0x8,0x8,0xff,0x14,0x56,0x55,0x56,0x94,0x14,0x14,0x24,0x4c,0x20,0x20,0x24,0xfc,0x28,0x30,0xfe,0x40,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x0,0xff,0x1,0x0,0x7e,0x42,0x42,0x42,0x7e,0x0,0x44,0x24,0x28,0xe,0xf1,0x40,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x2,0xff,0x0,0x1,0x7e,0x42,0x42,0x42,0x7e,0x0,0x44,0x24,0x28,0xe,0xf0,0x43,0x20,0x20,0x24,0xfe,0x20,0x20,0xf8,0x8,0x88,0x50,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x0,0x84,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x1,0xff,0x14,0x15,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x0,0x88,0x7c,0x10,0x90,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x8,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x20,0x20,0x20,0x24,0xa6,0xbc,0xe4,0xa4,0xa4,0xb4,0xa8,0xa0,0x82,0x82,0x7e,0x0,
-+0x4,0xfe,0x28,0x28,0xff,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0xa0,0x20,0x24,0x7e,0x60,0xa4,0x3e,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0x90,0x10,0x7e,0x42,0x84,0x20,0x20,0x24,0x28,0x30,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x50,0x7c,0x50,0x90,0x14,0xfe,0x28,0x28,0x28,0x28,0x2a,0x4a,0x86,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x10,0x3e,0x44,0xa8,0x18,0x10,0x24,0x7e,0xc4,0x44,0x44,0x44,0x7c,0x44,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x40,0xc4,0x4c,0x50,0x62,0x42,0x7e,0x4,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x44,
-+0x4,0xff,0x28,0x28,0xfe,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x82,0xff,0x82,0x4,0xfe,0x28,0xaa,0x6c,0x28,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,
-+0x4,0xff,0x28,0x28,0x7d,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7d,0x45,0x4,0xfe,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0xdc,0x54,0x54,0x54,0x54,0x54,0x54,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xff,0x82,0x4,0xfe,0x84,0x84,0x84,0xfc,0x0,0xfe,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0xfe,0x28,0x28,0xfe,0xab,0xaa,0xaa,0xae,0xc3,0x82,0xfe,0x82,0x83,0xfe,0x82,0x20,0x20,0x50,0x50,0x8e,0x4,0xf8,0x20,0x24,0xfe,0x20,0x70,0xac,0x24,0xa0,0x40,
-+0x4,0xfe,0x29,0x28,0xff,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x8,0x1c,0xe0,0x4,0x24,0xa8,0x8,0xfe,0x8,0x88,0x48,0x48,0x8,0x8,0x28,0x10,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x4,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x10,0x90,0x92,0xf4,0x98,0xb2,0xd2,0x8e,
-+0x4,0xfe,0x28,0x29,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x20,0x10,0x14,0xfe,0x0,0x84,0x48,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x4,0xfe,0x28,0x28,0x7f,0x54,0x54,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7c,0x44,0x84,0x9e,0x94,0x94,0xf4,0x9c,0x94,0xd4,0x54,0x5c,0x54,0x54,0xd4,0x24,0x24,0x4c,
-+0x4,0xfe,0x28,0x28,0x7c,0x54,0x54,0x57,0x6c,0x44,0x44,0x7c,0x44,0x44,0x7d,0x46,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x0,0xfe,0x20,0xa8,0xbc,0xa0,0xa0,0xe6,0x3c,0x0,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x0,0xfe,0x12,0x50,0x5c,0x50,0xb0,0xe,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x54,0x48,
-+0x4,0xfe,0x2b,0x28,0x7c,0x55,0x56,0x54,0x6c,0x44,0x45,0x7d,0x45,0x45,0x7f,0x44,0x40,0x44,0xfe,0x40,0x88,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x54,0x54,0x54,0xfe,0x0,
-+0x4,0xfe,0x29,0x29,0x7d,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7e,0x44,0x20,0x14,0xfe,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x44,0x44,0x44,0x7c,0x44,
-+0x4,0xff,0x29,0x28,0x7d,0x54,0x54,0x54,0x6f,0x44,0x45,0x7c,0x45,0x44,0x7c,0x45,0x4,0xde,0x54,0xcc,0x54,0x64,0x50,0xa8,0x46,0x90,0x20,0x48,0x90,0x20,0x40,0x80,
-+0x2,0xff,0x28,0x28,0xff,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xff,0x82,0x82,0xfe,0x83,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x4,0xfe,0x28,0x28,0xff,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x83,0xff,0x82,0x40,0x60,0x94,0xfe,0x90,0xfc,0x90,0x90,0xfc,0x90,0x94,0xfe,0x80,0x54,0x52,0x2,
-+0x4,0xfe,0x29,0x28,0x7c,0x55,0x54,0x54,0x6d,0x46,0x45,0x7d,0x45,0x45,0x7f,0x44,0x40,0x24,0xfe,0x40,0x88,0xfc,0xa8,0xaa,0x2e,0x0,0xfc,0x54,0x54,0x54,0xfe,0x0,
-+0x4,0xfe,0x28,0x29,0x7d,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7e,0x44,0x20,0x3c,0x20,0xfe,0x22,0xfc,0x20,0xfe,0x20,0x54,0xb8,0x58,0xb6,0x54,0x90,0x30,
-+0x4,0xff,0x29,0x29,0x7d,0x55,0x54,0x55,0x6c,0x45,0x45,0x7d,0x44,0x44,0x7f,0x44,0x50,0xfc,0x54,0xfc,0x54,0xfc,0x0,0xfc,0x0,0xfc,0x4,0xfc,0x88,0x50,0xfe,0x0,
-+0x4,0xff,0x28,0x2b,0x7c,0x55,0x55,0x55,0x6d,0x44,0x45,0x7c,0x47,0x45,0x7d,0x46,0x1c,0xe0,0x24,0xfe,0x20,0xfc,0xac,0x74,0xfc,0x20,0xfc,0x20,0xfe,0x54,0x52,0x2,
-+0x0,0xff,0x2,0x6,0x9,0x11,0x62,0x4,0x8,0x31,0x2,0x4,0x18,0x60,0x2,0x1,0x4,0xfe,0x0,0x8,0x18,0xa0,0xc0,0xc0,0xa0,0xa0,0x90,0x8e,0x84,0x80,0x80,0x0,
-+0x11,0x10,0x1f,0x10,0x7d,0x44,0x47,0x6c,0x54,0x54,0x55,0x6d,0x46,0x44,0x7f,0x44,0x8,0x90,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0xff,0x4,0x7,0x4,0x8,0x30,0xdf,0x10,0x10,0x1f,0x9,0x9,0x19,0x27,0xc0,0x4,0xfe,0x0,0xf0,0x10,0x90,0x60,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc,
-+0x0,0x7e,0x8,0x8,0xe,0x71,0x2,0x1f,0x10,0x10,0x1f,0x9,0x9,0xd,0x33,0xc0,0x8,0xfc,0x88,0xc8,0xaa,0x6,0x10,0xf8,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc,
-+0x8,0x8,0xfe,0x8,0x1e,0xe8,0x9,0x1f,0x10,0x10,0x1f,0x9,0x9,0xd,0x33,0xc0,0xc,0xf0,0x84,0xfe,0x90,0x90,0x10,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc,
-+0x0,0x3f,0x24,0x27,0x24,0x3f,0x55,0x64,0x9f,0x10,0x1f,0x9,0x9,0xd,0x33,0xc0,0x48,0xfe,0x40,0x48,0x50,0xa0,0x52,0x8a,0xf6,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc,
-+0x49,0x2a,0x7f,0x49,0x5d,0x6b,0x49,0x1f,0x10,0x10,0x1f,0x9,0x9,0xd,0x33,0xc0,0x20,0x24,0x3e,0x44,0xa8,0x10,0x6e,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc,
-+0x4,0x7e,0x44,0x44,0x45,0x7d,0x56,0x10,0x50,0x5c,0x50,0x50,0x5c,0xf0,0x40,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x4,0x7f,0x44,0x44,0x44,0x7c,0x54,0x10,0x50,0x5c,0x51,0x51,0x5d,0xf2,0x44,0x9,0x0,0xfc,0x84,0x88,0x88,0x90,0xbc,0x84,0xc4,0xa8,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x4,0x7f,0x44,0x44,0x44,0x7c,0x10,0x13,0x50,0x5c,0x50,0x51,0x5d,0xf1,0x42,0x4,0x4,0xfe,0x88,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x8,
-+0x4,0x7e,0x44,0x45,0x44,0x7c,0x54,0x13,0x50,0x5c,0x50,0x50,0x5c,0xf1,0x42,0x4,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x90,0x88,0x8,0x6,0x4,
-+0x4,0x7e,0x44,0x44,0x44,0x7d,0x56,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x0,0x40,0x40,0xa0,0xa0,0x90,0x8,0x16,0xf8,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,
-+0x4,0x7f,0x44,0x44,0x44,0x7c,0x54,0x10,0x51,0x5e,0x50,0x50,0x5c,0xf0,0x40,0x0,0x4,0xfe,0x40,0x40,0x40,0x80,0x84,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x4,0x7e,0x44,0x45,0x45,0x7f,0x55,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x55,0x13,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x42,0x4,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0xe4,0xc,
-+0x4,0x7f,0x45,0x45,0x45,0x7d,0x55,0x11,0x50,0x5c,0x50,0x51,0x5e,0xf0,0x40,0x0,0x1c,0xe0,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x26,0x22,0x20,0xa0,0x40,
-+0x4,0x7e,0x44,0x45,0x45,0x7e,0x54,0x10,0x50,0x5c,0x50,0x52,0x5c,0xf0,0x40,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x80,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0,
-+0x9,0x7d,0x49,0x49,0x4f,0x79,0x51,0x11,0x51,0x5d,0x51,0x51,0x5e,0xf2,0x45,0x8,0x0,0x0,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x54,0x80,
-+0x4,0x7e,0x44,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x42,0x5,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x88,0x48,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x4,0x7e,0x44,0x44,0x45,0x7f,0x54,0x10,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x40,0x40,0x80,0x90,0x8,0xfc,0x2,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x7e,0x44,0x45,0x44,0x7c,0x53,0x10,0x50,0x5c,0x51,0x50,0x5c,0xf0,0x43,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x7e,0x44,0x47,0x44,0x7c,0x54,0x13,0x50,0x5d,0x50,0x50,0x5c,0xf1,0x42,0x4,0x40,0x48,0x7c,0xc0,0x50,0x22,0xd2,0xe,0x8,0xfc,0xa0,0xa0,0xa0,0x22,0x22,0x1e,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x55,0x11,0x50,0x5c,0x53,0x50,0x5c,0xf0,0x40,0x0,0x10,0x10,0x12,0xd4,0x18,0x12,0x52,0x8e,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x7e,0x45,0x45,0x45,0x7e,0x54,0x13,0x50,0x5c,0x50,0x50,0x5c,0xf1,0x42,0x4,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x4,0x7e,0x45,0x45,0x44,0x7c,0x57,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x44,0x0,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x86,0x7c,0x0,
-+0x0,0x7c,0x47,0x44,0x44,0x7c,0x54,0x10,0x53,0x5c,0x50,0x50,0x5c,0xf0,0x41,0x2,0x40,0x24,0xfe,0x88,0x50,0x20,0x50,0x8e,0x4,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x4,0x7e,0x44,0x47,0x44,0x7c,0x55,0x12,0x50,0x5c,0x50,0x50,0x5c,0xf0,0x41,0x2,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x24,0x28,0x10,0x4e,0x84,0x0,
-+0x0,0x7d,0x44,0x44,0x45,0x7d,0x55,0x11,0x50,0x5c,0x50,0x52,0x5e,0xf4,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0x4,0xfc,0x0,0x40,0xa4,0xa2,0x8a,0x78,0x0,
-+0x4,0x7e,0x44,0x44,0x45,0x7d,0x55,0x11,0x51,0x5c,0x50,0x53,0x5c,0xf0,0x40,0x0,0x24,0x3e,0x20,0x20,0xfc,0x4,0xfc,0x4,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x55,0x11,0x5c,0x53,0x50,0x50,0x5d,0xf2,0x40,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20,0x20,
-+0x9,0x7d,0x49,0x49,0x4a,0x7c,0x50,0x17,0x50,0x5c,0x50,0x51,0x5d,0xf2,0x44,0x0,0x0,0x0,0x0,0xfe,0x92,0x92,0x92,0xf2,0x92,0x92,0x92,0x52,0x32,0x1e,0x12,0x0,
-+0x4,0x7f,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5e,0xf2,0x44,0x0,0xc,0xf0,0x10,0x14,0xfe,0x10,0x7c,0x44,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82,
-+0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x52,0x52,0x5c,0xf4,0x48,0x0,0x20,0x10,0xfe,0x20,0x24,0x3e,0x20,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x4,0x7e,0x45,0x44,0x44,0x7c,0x54,0x13,0x50,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x40,0x28,0xfc,0x0,0x88,0x50,0x4,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x7a,0x4a,0x48,0x4f,0x79,0x51,0x11,0x5f,0x59,0x51,0x51,0x5a,0xf2,0x44,0x0,0x40,0x5e,0x92,0x14,0xd4,0x18,0x14,0x54,0xf2,0x12,0x1a,0x14,0x90,0x50,0x50,0x10,
-+0x0,0x78,0x4f,0x49,0x49,0x7a,0x57,0x11,0x51,0x5d,0x55,0x53,0x5d,0xf2,0x44,0x8,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x96,0x7c,0x0,
-+0x0,0x7d,0x47,0x45,0x45,0x7d,0x55,0x11,0x50,0x5c,0x53,0x50,0x5c,0xf1,0x42,0x0,0x48,0x48,0xfe,0x48,0x48,0x78,0x0,0xfc,0x20,0x24,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x8,0x7c,0x4a,0x4a,0x4b,0x78,0x57,0x10,0x58,0x57,0x54,0x54,0x5c,0xf4,0x44,0x4,0x40,0x40,0x48,0x48,0xf8,0x0,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x0,0x7d,0x44,0x44,0x47,0x7c,0x55,0x11,0x51,0x5d,0x51,0x50,0x5d,0xf0,0x43,0x0,0xc,0xf0,0x20,0x24,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x0,0x7d,0x44,0x45,0x45,0x7d,0x55,0x11,0x50,0x5f,0x52,0x52,0x5e,0xf2,0x42,0x2,0xc,0xf0,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xfe,0x22,0x2a,0xfa,0x2,0xa,0x4,
-+0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5e,0xf2,0x44,0xb,0x20,0x14,0xfe,0x48,0x48,0xfe,0x48,0x78,0x0,0xfc,0x4,0x48,0x30,0x28,0xc6,0x4,
-+0x1,0x7c,0x47,0x44,0x45,0x7c,0x57,0x10,0x50,0x5c,0x51,0x51,0x5e,0xf0,0x43,0x0,0x8,0x90,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x52,0x52,0x5c,0xf4,0x48,0x0,0x40,0x24,0xfe,0x4,0x4,0xfc,0x4,0x0,0xfe,0xaa,0xaa,0xfe,0xaa,0xaa,0xaa,0x84,
-+0x4,0x7e,0x44,0x44,0x45,0x7c,0x54,0x11,0x50,0x5c,0x53,0x50,0x5c,0xf1,0x42,0x0,0x0,0xfc,0x48,0x30,0xfe,0x32,0x54,0x90,0x30,0x24,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x8,0x7f,0x49,0x49,0x49,0x79,0x51,0x17,0x50,0x5f,0x54,0x52,0x59,0xf2,0x44,0x8,0x4,0xfe,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xbe,0xa2,0x94,0x8,0x94,0x24,0x42,
-+0x8,0x7c,0x4b,0x48,0x48,0x7f,0x50,0x13,0x52,0x5e,0x52,0x53,0x5f,0xf2,0x42,0x2,0x90,0x90,0xfc,0x90,0x94,0xfe,0x90,0xfc,0x94,0x94,0x94,0x6c,0x2c,0x44,0x14,0x8,
-+0x4,0x7f,0x45,0x44,0x44,0x7c,0x55,0x10,0x50,0x5d,0x50,0x53,0x5c,0xf0,0x40,0x3,0x1c,0xe0,0x24,0xa8,0x40,0x88,0xf0,0x20,0x44,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x8,0x7f,0x4a,0x4b,0x4a,0x7a,0x52,0x12,0x52,0x5a,0x52,0x52,0x5c,0xf5,0x48,0x0,0x4,0xfe,0x0,0xf4,0x4,0xe4,0xbe,0xa4,0xb4,0xec,0xc,0xa4,0xa4,0xf4,0x14,0x8,
-+0x10,0xff,0x94,0x96,0x95,0xf7,0xa4,0x26,0xa6,0xb7,0xa4,0xa4,0xa9,0xe9,0x92,0x24,0x4,0xfe,0x0,0x28,0x48,0xee,0x92,0xa4,0xa8,0xe8,0xa8,0x88,0x14,0x14,0x24,0x42,
-+0x0,0x7d,0x44,0x44,0x47,0x7c,0x50,0x11,0x50,0x5d,0x50,0x53,0x5c,0xf0,0x41,0x6,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x4,0x7f,0x45,0x44,0x47,0x7c,0x54,0x13,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x1c,0xe0,0x24,0xa8,0xfe,0x70,0xae,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x14,0xfa,0x90,0x9f,0x90,0xff,0xa8,0x28,0xaf,0xb2,0xa7,0xaa,0xb2,0xe2,0x86,0x1,0x20,0x28,0x24,0xa0,0x7e,0xa8,0xa8,0xa8,0xa8,0x28,0x28,0xa8,0x4a,0x4a,0x86,0x0,
-+0x4,0x7f,0x45,0x45,0x45,0x7c,0x55,0x12,0x55,0x5d,0x51,0x50,0x5c,0xf3,0x40,0x0,0x4,0xfe,0x54,0x54,0xfc,0x84,0xfe,0x44,0xf4,0x54,0xf4,0x44,0x54,0xfc,0x14,0x8,
-+0x11,0xff,0x91,0x94,0x92,0xf5,0xa5,0x25,0xa5,0xbd,0xa5,0xa5,0xbd,0xe5,0x84,0x4,0x10,0xfe,0x10,0x4,0xfe,0x44,0xf4,0x44,0xf4,0x44,0xf4,0x44,0xfc,0x4,0x14,0x8,
-+0x10,0xff,0x94,0x95,0x95,0xf5,0xa5,0x25,0xa4,0xbd,0xa4,0xa7,0xbd,0xea,0x90,0x3,0x40,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x24,0xfa,0x20,0xfe,
-+0x9,0x7d,0x4a,0x49,0x4b,0x7a,0x52,0x12,0x53,0x5e,0x53,0x52,0x5f,0xf2,0x43,0x2,0x24,0x24,0x48,0x24,0xfe,0x94,0x64,0x94,0xfc,0x48,0x68,0x48,0x68,0x4a,0x6a,0x46,
-+0x1,0xf5,0x97,0x99,0x97,0xf3,0xa5,0x29,0xa3,0xba,0xa2,0xa2,0xba,0xe0,0x81,0x6,0x8,0x28,0xbc,0x48,0xbe,0x18,0xaa,0x4e,0xf8,0xc,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x10,0xff,0x90,0x95,0x94,0xf7,0xac,0x25,0xab,0xb1,0xa0,0xa3,0xb9,0xe0,0x83,0xc,0x40,0xfe,0x0,0xf4,0x4,0xf6,0xc,0xf4,0x1a,0xf2,0x0,0xf8,0x10,0xe0,0x10,0xe,
-+0x0,0x3f,0x2,0x11,0x8,0x7,0x78,0x0,0x1,0x6,0x38,0x1,0x6,0x38,0x1,0x0,0xe0,0x8,0xc,0x30,0xc0,0x0,0x80,0xc0,0x20,0x50,0x90,0x10,0x10,0x10,0x20,0xc0,
-+0x8,0x10,0x35,0xcc,0x28,0x10,0x30,0xc8,0x15,0x26,0xcc,0x14,0x24,0xc4,0x14,0x8,0x0,0x4,0xfe,0x44,0x44,0x44,0x94,0x88,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x8,0x13,0x34,0xcc,0x28,0x11,0x31,0xc9,0x15,0x25,0xcd,0x15,0x25,0xc5,0x15,0x9,0x4,0xfe,0x40,0x40,0x84,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x10,0x34,0xcc,0x29,0x11,0x33,0xcd,0x15,0x25,0xcd,0x15,0x25,0xc5,0x15,0x9,0x10,0x90,0x90,0x90,0x14,0xfe,0x10,0x38,0x34,0x54,0x54,0x92,0x10,0x10,0x10,0x10,
-+0x8,0x10,0x37,0xcc,0x29,0x11,0x31,0xc9,0x15,0x24,0xcf,0x14,0x24,0xc4,0x15,0xa,0x88,0x88,0xfe,0x88,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x50,0x88,0x6,0x4,
-+0x8,0x10,0x35,0xcd,0x29,0x11,0x31,0xc9,0x15,0x24,0xcd,0x15,0x25,0xc5,0x15,0x9,0x20,0x44,0xfe,0x4,0x54,0x24,0x54,0x4,0xfc,0x10,0x12,0xd4,0x18,0x12,0xd2,0xe,
-+0x10,0x10,0x1e,0x24,0x28,0x7e,0xaa,0x2a,0x3e,0x2b,0x2a,0x3e,0x2a,0x4a,0x42,0x86,0x10,0x90,0x50,0x50,0x10,0x90,0x50,0x54,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x1e,0x24,0x28,0x7e,0xaa,0x2a,0x3e,0x2b,0x2a,0x3e,0x2a,0x4a,0x42,0x87,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfe,0x20,0x20,0x50,0x48,0x86,0x4,
-+0x10,0x10,0x1e,0x25,0x28,0x7e,0xaa,0x2a,0x3e,0x2a,0x2a,0x3e,0x2a,0x4b,0x42,0x86,0x80,0x84,0xfe,0x0,0xf8,0x20,0x44,0xfe,0x54,0x54,0x54,0x94,0xa4,0x24,0x54,0x8,
-+0x10,0x10,0x1f,0x24,0x28,0x7e,0xaa,0x2a,0x3e,0x2a,0x2a,0x3e,0x2a,0x4a,0x43,0x86,0x4,0xe,0xf0,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0xac,0x7a,0x8,
-+0x8,0x8,0x2e,0x28,0x2e,0xf4,0x44,0xf,0x10,0x3f,0x51,0x1f,0x11,0x1f,0x21,0x41,0x80,0x84,0x98,0xe2,0x82,0x7e,0x0,0xe0,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x10,0x10,0x1d,0x24,0x28,0x7e,0xaa,0x2b,0x3e,0x2a,0x2a,0x3e,0x2a,0x4a,0x42,0x87,0x20,0x20,0x24,0xac,0xb0,0x20,0x24,0xfe,0x50,0x50,0x50,0x50,0x52,0x92,0x8e,0x0,
-+0x20,0x20,0x3d,0x48,0x50,0xfd,0x55,0x55,0x7d,0x55,0x54,0x7c,0x55,0x56,0x44,0x8c,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x70,0xa8,0x26,0x24,0x20,0x20,
-+0x21,0x20,0x3c,0x49,0x51,0xfd,0x55,0x55,0x7d,0x55,0x54,0x7f,0x54,0x54,0x44,0x8c,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20,
-+0x8,0x2f,0x28,0x2f,0x7a,0x1,0xff,0x0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x40,0x58,0x60,0x44,0x7c,0x0,0xfe,0x0,0xf0,0x0,0xf0,0x0,0xf0,0x10,0xf0,0x10,
-+0x8,0xff,0x8,0x3e,0x2b,0x3e,0x22,0x41,0xff,0x0,0x1e,0x0,0x0,0x1f,0x10,0x1f,0x78,0x48,0x48,0x86,0x78,0x48,0x30,0x4c,0xfe,0x0,0x0,0xf0,0x0,0xf0,0x10,0xf0,
-+0x10,0x14,0xfe,0x10,0x7c,0x10,0xfe,0x0,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x55,0x4a,0x0,0x8,0xfc,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x50,0x52,0x92,0xe,0x0,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x1,0x3f,0x0,0xff,0x8,0xf,0x0,0x0,0x0,0x0,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0xf8,0x0,0xfe,0x0,0xf0,0x10,0x10,0xa0,0x40,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3f,0x21,0x21,0x2f,0x21,0x21,0x21,0x42,0x4c,0x90,0xf0,0x0,0xfe,0x12,0x64,0x10,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x2,0x1,0xff,0x8,0x4,0x2,0x1,0x6,0x18,0x60,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0x4,0xfe,0x20,0x40,0x80,0x0,0xc0,0x3c,0x8,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x78,0xb,0x10,0x78,0xf,0x28,0x10,0x2b,0x44,0x83,0xf0,0x0,0xfe,0x12,0x64,0x10,0x38,0xc0,0x40,0x48,0xfc,0x40,0x50,0xf8,0x46,0xfc,
-+0x1f,0x1,0x7f,0x51,0x8d,0x12,0x1,0x7f,0x8,0x4,0x3,0x1c,0xe8,0x8,0x10,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0xfc,0x20,0x40,0x80,0x70,0x2e,0x20,0x20,0x20,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x41,0x20,0x8f,0x60,0x2b,0x12,0x62,0x22,0x22,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x40,0x44,0xfe,0x40,0xf8,0x48,0x48,0x48,0x58,0x40,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x2,0x7e,0x2,0x2,0x3e,0x2,0x2,0x7e,0x2,0x2,0xf0,0x0,0xfe,0x12,0x64,0x10,0x88,0xfc,0x80,0x90,0xf8,0x80,0x88,0xfc,0x80,0x80,
-+0x1f,0x1,0x7f,0x51,0x8d,0x12,0x1,0x1f,0x4,0xff,0x1,0x7f,0x4,0xc,0x3,0x1c,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0xf0,0x44,0xfe,0x0,0xfc,0x40,0x40,0x80,0x70,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x20,0x17,0x42,0x21,0xb,0x10,0x6f,0x20,0x20,0x27,0xf0,0x0,0xfe,0x12,0x64,0x10,0x38,0xc0,0x48,0x50,0xf8,0x40,0xfe,0x40,0x48,0xfc,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x23,0x12,0x2,0xf3,0x11,0x13,0x1c,0x12,0x1b,0x10,0xf0,0x0,0xfe,0x12,0x64,0x10,0xf8,0x88,0x48,0xf8,0x0,0xfc,0x44,0xa4,0xf4,0x8,
-+0x1f,0x1,0x7f,0x51,0x8d,0x12,0x3f,0x12,0xff,0x21,0x3f,0x21,0x3f,0x21,0x25,0x22,0xf0,0x0,0xfe,0x12,0x64,0x10,0x20,0x24,0xfe,0x4,0x44,0x28,0x10,0x28,0x46,0x84,
-+0x1f,0x1,0x7f,0x51,0x8d,0x10,0x2b,0xe5,0x19,0x69,0x95,0x64,0x5,0x64,0x17,0x8,0xf0,0x0,0xfe,0x12,0x64,0x10,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x8,0x8,0x2a,0x2f,0x28,0x29,0xff,0x0,0x49,0x49,0x49,0x55,0x63,0x41,0x7f,0x1,0x40,0x40,0x40,0x40,0x40,0x44,0xcc,0x50,0x60,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x8,0x2a,0x2f,0x28,0x29,0xff,0x0,0x49,0x49,0x49,0x55,0x63,0x41,0x7f,0x1,0x0,0x4,0x7e,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0xfe,0x0,
-+0x10,0x10,0x50,0x5d,0x52,0x50,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7c,0x4,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x50,0x5c,0x50,0x54,0xfe,0x1,0x54,0x54,0x54,0x6c,0x44,0x44,0x7c,0x4,0x4,0xfe,0x44,0x44,0x44,0x44,0x94,0x8,0x0,0xfc,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x10,0x10,0x50,0x5d,0x51,0x55,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7f,0x4,0x50,0x50,0x50,0x50,0x52,0x74,0x58,0x50,0x50,0x50,0x50,0x50,0x50,0x72,0x92,0xe,
-+0x10,0x11,0x51,0x5d,0x51,0x55,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x5,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x10,0x11,0x50,0x5c,0x51,0x54,0xfe,0x0,0x57,0x54,0x54,0x6c,0x44,0x44,0x7c,0x4,0x8,0xfc,0x20,0x28,0xfc,0x48,0x48,0x48,0xfe,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x10,0x10,0x50,0x5c,0x50,0x54,0xfe,0x0,0x54,0x54,0x54,0x6c,0x44,0x45,0x7e,0x4,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0xa0,0x28,0xbc,0xa0,0xa0,0xa0,0x66,0x3c,0x0,
-+0x10,0x11,0x51,0x5d,0x51,0x55,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7e,0x4,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfe,0x20,0x48,0xfc,0x10,0x7c,0x10,0x14,0xfe,0x0,
-+0x0,0x1f,0x10,0x1f,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0x1,0x0,0x10,0xf8,0x10,0xf0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x2,0x2,0xfe,
-+0x1f,0x0,0xff,0x4,0x78,0x1f,0x10,0x1f,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x1,0x0,0xf0,0x4,0xfe,0x40,0x3c,0xf0,0x10,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xfa,0x2,0xfe,
-+0x3e,0x22,0x3e,0x1f,0x11,0x1f,0x11,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x0,0xf8,0x88,0xf8,0xf0,0x10,0xf0,0x14,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf4,0x4,0xfc,
-+0x9,0x8,0x8,0x1f,0x10,0x30,0x3f,0x50,0x90,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x0,0x80,0x88,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x80,0x84,0xfe,0x0,0x0,
-+0x9,0x8,0xf,0x10,0x3f,0x50,0x1f,0x10,0x1f,0x10,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x9,0x8,0x1f,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x7f,0x4,0x4,0x8,0x10,0x60,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x0,0xe0,0x28,0x7c,0x8,0x28,0x10,
-+0x0,0x8,0x7d,0x49,0x4b,0x7d,0x49,0x49,0x79,0x49,0x49,0x4d,0xf1,0x41,0x1,0x1,0xc0,0xa0,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x10,0x10,0x1e,0x22,0x65,0x99,0xa,0x14,0x22,0x7f,0xa2,0x22,0x22,0x3e,0x22,0x0,0x60,0x50,0x84,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x3e,0x22,0x2a,0x2a,0x22,0x3e,0x9,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x1f,0x10,0xf8,0x88,0xa8,0xa8,0x88,0xf8,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x0,
-+0x20,0x32,0x21,0x3d,0x50,0xd7,0x79,0x51,0x51,0x7d,0x51,0x51,0x51,0x7d,0x40,0x40,0x10,0x18,0x10,0x3e,0x68,0x28,0x3e,0x28,0x28,0x3e,0x28,0x68,0xa8,0x3e,0x20,0x20,
-+0x4,0x7e,0x10,0x10,0x1e,0x71,0x2,0xc,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x8,0xfc,0x88,0xc8,0xaa,0xe,0x80,0x60,0xde,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0,
-+0x2,0x1,0x7f,0x4,0x14,0x25,0x42,0xc,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x0,0x8,0xfc,0x40,0x50,0x4c,0x84,0x30,0xee,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0,
-+0x20,0x13,0x40,0x27,0x8,0x73,0x22,0x2c,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x38,0xc0,0x48,0xfc,0xa0,0x18,0x88,0x60,0xde,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0,
-+0x8,0x7e,0x10,0x28,0x7e,0x8,0x7d,0xa,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0xc,0xf0,0x80,0x88,0xfc,0x90,0x10,0x90,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0,
-+0x0,0x7e,0x14,0x8,0xfe,0x1a,0x29,0x4a,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0x40,0x44,0x7e,0xc8,0x48,0x30,0x48,0x86,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0,
-+0x8,0x7f,0x8,0x3e,0x9,0xfe,0x11,0x1e,0x24,0xdf,0x31,0xdf,0x9,0x5,0x7f,0x0,0x40,0x44,0x7e,0xc8,0x48,0x30,0x48,0x86,0x40,0xf0,0xe,0xf4,0x20,0x48,0xfc,0x0,
-+0x20,0x17,0x40,0x23,0x9,0x71,0x23,0x22,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0x40,0xfe,0x90,0xf8,0x50,0x50,0x52,0x8e,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0,
-+0x3f,0x21,0x3f,0x20,0x3f,0x51,0x9f,0x2,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0x10,0x7c,0x28,0xfe,0x10,0x7c,0x10,0x90,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0,
-+0x1,0x6,0x18,0xef,0x1,0x1f,0x5,0x3f,0x10,0x28,0x7c,0x93,0x7c,0x10,0x54,0xfe,0x0,0xc0,0x30,0xee,0x0,0xf0,0x40,0xf8,0x10,0x28,0x7c,0x92,0x7c,0x10,0x54,0xfe,
-+0x20,0x20,0x3c,0x48,0x90,0x7f,0x54,0x54,0x7c,0x54,0x54,0x7c,0x0,0x1d,0xe2,0x44,0x40,0x60,0x50,0x50,0x44,0xfe,0x40,0x50,0x50,0x50,0x50,0x90,0x90,0x12,0x12,0xe,
-+0x20,0x20,0x3c,0x48,0x93,0x7c,0x54,0x54,0x7c,0x54,0x54,0x7c,0x0,0x1d,0xe1,0x42,0x40,0x20,0x20,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x88,0x8,0x28,0x10,
-+0x20,0x20,0x3c,0x48,0x93,0x7c,0x54,0x54,0x7c,0x54,0x55,0x7d,0x1,0x1e,0xe2,0x45,0x40,0x60,0x50,0x44,0xfe,0x80,0x80,0xfc,0x84,0xc4,0x48,0x28,0x10,0x28,0x46,0x84,
-+0x20,0x20,0x3d,0x48,0x91,0x7c,0x54,0x54,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x0,0x8,0xfc,0x20,0x24,0xa8,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x20,0x20,0x3c,0x48,0x90,0x7c,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x20,0x3c,0x48,0x90,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe2,0x44,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x20,0x3d,0x48,0x90,0x7c,0x57,0x54,0x7c,0x54,0x54,0x7d,0x2,0x1c,0xe0,0x40,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xa8,0x26,0x24,0x20,0x20,0x20,
-+0x20,0x20,0x3c,0x48,0x90,0x7d,0x56,0x54,0x7c,0x54,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x48,0x48,0x48,0x88,0x88,0xfe,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xa8,0x90,
-+0x11,0x9,0x49,0x7f,0x44,0x84,0xf,0x10,0x3f,0x51,0x1f,0x11,0x1f,0x0,0xff,0x0,0x10,0x20,0x40,0xfe,0x2,0x4,0xc0,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,
-+0x20,0x20,0x3c,0x48,0x91,0x7f,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x20,0x20,0x40,0x88,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x20,0x3d,0x48,0x90,0x7c,0x57,0x54,0x7c,0x54,0x55,0x7c,0x0,0x1c,0xe3,0x40,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x3c,0x4b,0x90,0x7c,0x55,0x54,0x7c,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x20,0x3c,0x4b,0x90,0x7c,0x55,0x56,0x7c,0x54,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x40,0x40,0x44,0xfe,0x80,0x88,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0xa8,0x90,
-+0x20,0x23,0x3c,0x48,0x90,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x40,0x4,0xfe,0x20,0x20,0x44,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x4,0x14,0x8,
-+0x20,0x20,0x3c,0x4b,0x90,0x7c,0x54,0x54,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe1,0x42,0x40,0x20,0x4,0xfe,0x88,0x50,0x20,0x50,0x8e,0x4,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x20,0x20,0x3c,0x4b,0x90,0x7c,0x55,0x56,0x7c,0x54,0x54,0x7c,0x0,0x1c,0xe1,0x46,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0x6,0x4,
-+0x9,0x5,0x3f,0x2,0xff,0x4,0xa,0x37,0xc8,0x1f,0x31,0x1f,0x11,0x1f,0x0,0x7f,0x20,0x40,0xf8,0x0,0xfe,0x40,0x30,0xce,0x84,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xfc,
-+0x20,0x21,0x3c,0x48,0x91,0x7c,0x54,0x55,0x7c,0x54,0x57,0x7c,0x0,0x1c,0xe0,0x40,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x8,0x8,0xfe,0x88,0x48,0x8,0x28,0x10,
-+0x20,0x23,0x3c,0x48,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7c,0x0,0x1c,0xe0,0x43,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0xa0,0xa0,0x40,0xb0,0xe,
-+0x20,0x23,0x3c,0x48,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x4,0xfe,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0xdc,0x54,0x54,0x54,0x54,0x54,0x54,
-+0x20,0x20,0x3c,0x4a,0x91,0x7d,0x54,0x57,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe2,0x44,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0xfc,0x10,0x14,0xfe,0x10,0x10,0x96,0x7c,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7c,0x54,0x55,0x7c,0x0,0x1c,0xe3,0x40,0x40,0x40,0x7e,0x62,0x54,0x48,0x54,0x62,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe0,0x40,0x4,0x44,0xe4,0x44,0x44,0x7e,0x44,0xc4,0x64,0x54,0x54,0x44,0xc4,0x44,0x14,0x8,
-+0x20,0x20,0x3c,0x48,0x91,0x7c,0x54,0x54,0x7f,0x54,0x55,0x7c,0x0,0x1d,0xe2,0x40,0x40,0x40,0x7c,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0xa8,0x26,0xa2,0x40,
-+0x20,0x21,0x3c,0x48,0x90,0x7d,0x54,0x54,0x7c,0x55,0x54,0x7c,0x1,0x1e,0xe0,0x40,0x1c,0xe0,0x40,0x40,0x88,0xf0,0x20,0x40,0x88,0xfc,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x20,0x10,0x40,0x25,0x8,0x77,0x22,0x27,0x8,0x1f,0x31,0x5f,0x11,0x1f,0x0,0xff,0x20,0xa8,0xa6,0x3a,0x60,0x80,0x0,0xc0,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,
-+0x20,0x20,0x3c,0x4b,0x92,0x7c,0x54,0x54,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe1,0x46,0x40,0x20,0x20,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x90,0x90,0x90,0x92,0x12,0xe,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe0,0x40,0x0,0x4,0xde,0x54,0x54,0xd4,0x54,0x54,0xd4,0x14,0x94,0x54,0x5c,0x90,0x10,0x10,
-+0x20,0x20,0x3d,0x48,0x90,0x7c,0x57,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x20,0x28,0xfc,0x20,0xf8,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x20,0x20,0x3d,0x48,0x90,0x7f,0x54,0x55,0x7e,0x54,0x55,0x7e,0x0,0x1c,0xe0,0x43,0x20,0x28,0xfc,0x20,0x24,0xfe,0x88,0x46,0x7a,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x20,0x23,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1f,0xe0,0x40,0x20,0xf0,0x44,0x7e,0x44,0xd4,0x54,0x54,0x54,0xd4,0x54,0x68,0xc8,0x54,0x52,0x60,
-+0x20,0x20,0x3c,0x4b,0x90,0x7c,0x54,0x55,0x7c,0x54,0x54,0x7f,0x0,0x1c,0xe0,0x40,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0xdc,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0x50,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7c,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x10,0x12,0xd6,0x18,0x10,0x52,0x92,0xe,
-+0x20,0x20,0x3c,0x48,0x90,0x7c,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x8,0xfc,0x88,0xf8,0x88,0x88,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x4,0xfe,0x4,0x24,0x24,0xfc,0x24,0x24,0x74,0x54,0x54,0x74,0x4,0x4,0xfc,0x4,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x54,0x7c,0x0,0x1c,0xe1,0x46,0x0,0x44,0x8e,0x4,0x4,0xdc,0x4,0x4,0xfc,0x54,0x50,0x50,0x90,0x92,0x12,0xe,
-+0x20,0x20,0x3c,0x48,0x91,0x7e,0x54,0x55,0x7c,0x54,0x54,0x7c,0x1,0x1e,0xe2,0x40,0x20,0x20,0x50,0x88,0x46,0x24,0x20,0xf8,0x8,0x10,0x40,0xa0,0xa4,0x8a,0x8a,0x78,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe2,0x44,0x4,0xfe,0x24,0x24,0x74,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x20,0x23,0x3c,0x48,0x91,0x7c,0x55,0x55,0x7d,0x55,0x55,0x7c,0x0,0x1c,0xe1,0x40,0x4,0xfe,0x4,0x74,0xc4,0x44,0xf4,0x54,0x54,0x54,0xf4,0x44,0x54,0x76,0xca,0x0,
-+0x20,0x20,0x3c,0x49,0x92,0x7d,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x0,0x92,0x92,0x24,0x48,0x24,0x92,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x20,0x21,0x3c,0x48,0x93,0x7c,0x54,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1c,0xe0,0x43,0x20,0xfc,0x20,0x88,0xfe,0x88,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x58,0x86,0x2,
-+0x20,0x21,0x3d,0x4b,0x91,0x7d,0x55,0x55,0x7d,0x54,0x57,0x7c,0x0,0x1d,0xe2,0x40,0x48,0x48,0x48,0xfe,0x48,0x48,0x78,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x55,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x4,0xde,0x54,0x54,0x54,0xdc,0x0,0xfc,0x0,0xfe,0x80,0xfc,0x4,0x4,0x28,0x10,
-+0x20,0x20,0x3b,0x48,0x90,0x7f,0x54,0x55,0x7d,0x55,0x56,0x7c,0x0,0x1c,0xe0,0x40,0x8,0x68,0x88,0x88,0x8a,0xea,0x9c,0x88,0xc8,0xa8,0x88,0x88,0x94,0x94,0xa2,0xc0,
-+0x20,0x20,0x3c,0x49,0x93,0x7d,0x55,0x55,0x7d,0x54,0x54,0x7d,0x2,0x1c,0xe0,0x43,0x80,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x80,0xf8,0x88,0x50,0x20,0xd0,0xe,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x54,0x7d,0x54,0x54,0x7d,0x0,0x1c,0xe3,0x40,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x57,0x7d,0x1,0x1d,0xe1,0x41,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc,
-+0x20,0x21,0x3d,0x48,0x90,0x7c,0x55,0x56,0x7d,0x55,0x55,0x7d,0x0,0x1c,0xe3,0x40,0x0,0xfc,0x24,0x88,0x70,0x88,0x26,0x24,0xfe,0x24,0x24,0xfc,0x20,0x24,0xfc,0x2,
-+0x8,0x7f,0x8,0xfe,0x11,0x1e,0x22,0x4f,0x88,0x1f,0x31,0x5f,0x11,0x1f,0x0,0xff,0x40,0x44,0x7e,0xc8,0x48,0x30,0x48,0xc6,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfc,
-+0x20,0x20,0x3d,0x48,0x93,0x7c,0x54,0x55,0x7e,0x54,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x40,0x48,0xf8,0x50,0xfe,0x40,0xf0,0x84,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x57,0x7c,0x56,0x55,0x7d,0x2,0x1c,0xe1,0x40,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xde,0x42,0x52,0xce,0x4a,0x52,0x42,0x4a,0x84,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x54,0x7c,0x55,0x54,0x7c,0x0,0x1d,0xe2,0x40,0x4,0xfe,0x54,0x54,0x54,0xfc,0x20,0xa8,0xa8,0x24,0x20,0xa8,0xa4,0x22,0x22,0x20,
-+0x20,0x20,0x3d,0x48,0x91,0x7c,0x54,0x54,0x7d,0x54,0x57,0x7c,0x1,0x1d,0xe1,0x41,0x8,0x1c,0xe0,0x4,0x24,0xa8,0x80,0xfc,0x20,0x24,0xfe,0x20,0x24,0x24,0xfc,0x4,
-+0x21,0x21,0x7f,0x91,0x21,0xf8,0xab,0xaa,0xfa,0xaa,0xab,0xf8,0x7,0x18,0xe0,0x40,0x48,0x48,0xf8,0x48,0xc8,0x9e,0xea,0xaa,0xaa,0xaa,0xea,0x8a,0xea,0x8a,0x92,0xa6,
-+0x20,0x23,0x3c,0x48,0x91,0x7d,0x55,0x55,0x7c,0x55,0x54,0x7f,0x0,0x1d,0xe2,0x40,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x26,0x22,0x60,
-+0x20,0x21,0x3c,0x4b,0x92,0x7d,0x54,0x55,0x7c,0x54,0x55,0x7c,0x0,0x1c,0xe1,0x40,0x8,0xfc,0x20,0xfe,0x22,0xac,0x20,0xac,0x20,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,
-+0x20,0x20,0x3c,0x48,0x90,0x7c,0x55,0x55,0x7d,0x55,0x54,0x7c,0x0,0x1c,0xe0,0x43,0xfc,0x84,0xfc,0x84,0xfc,0x0,0xfe,0x4a,0x4a,0xfe,0x0,0xfc,0x48,0x30,0xc8,0x6,
-+0x20,0x3f,0x40,0xbf,0x29,0xff,0x25,0x3f,0x8,0x1f,0x31,0x5f,0x11,0x1f,0x0,0xff,0x40,0x44,0xfe,0x4,0x44,0xa8,0x10,0xe8,0x86,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,
-+0x20,0x23,0x7a,0x93,0x22,0xfb,0xaa,0xab,0xfa,0xab,0xab,0xfb,0x5,0x1d,0xe5,0x49,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c,
-+0x20,0x23,0x7a,0x92,0x22,0xfa,0xab,0xaa,0xfb,0xab,0xab,0xfb,0x2,0x1c,0xe4,0x49,0x4,0xfe,0x8,0xa8,0xae,0x12,0xf4,0x44,0x54,0x54,0x54,0xf4,0x54,0x4a,0x8a,0x10,
-+0x21,0x20,0x3f,0x48,0x91,0x7c,0x57,0x55,0x7c,0x57,0x54,0x7d,0x1,0x1d,0xe1,0x41,0x4,0x88,0xfe,0x20,0xfc,0x20,0xfe,0x24,0xa8,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4,
-+0x21,0x20,0x3f,0x48,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7c,0x3,0x1c,0xe0,0x40,0x4,0x88,0xfe,0x50,0xfc,0x54,0x54,0x8c,0x74,0x4,0xfc,0x8,0xfe,0x88,0x48,0x18,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x57,0x7c,0x55,0x55,0x7d,0x0,0x1c,0xe3,0x40,0x50,0xfc,0x54,0xfc,0x54,0xfc,0x0,0xfe,0x0,0xfc,0x4,0xfc,0x88,0x50,0xfe,0x0,
-+0x28,0x28,0xfc,0x28,0x38,0x10,0x7c,0x54,0x54,0x7c,0x10,0xfe,0x10,0x10,0x13,0x10,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0x84,0xfc,0x0,0x4,0xfe,0x0,
-+0x28,0x28,0xfe,0x29,0x39,0x11,0x7d,0x55,0x55,0x7f,0x10,0xfe,0x10,0x10,0x11,0x12,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x28,0x28,0xfe,0x29,0x39,0x10,0x7f,0x55,0x55,0x7d,0x11,0xfd,0x11,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x28,0x28,0x24,0x44,0x0,0x86,0x7c,0x0,
-+0x28,0x29,0xfe,0x28,0x3b,0x10,0x7c,0x55,0x56,0x7c,0x10,0xfe,0x10,0x10,0x11,0x12,0x1c,0xe0,0x20,0x24,0xfe,0x50,0x88,0x6,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x28,0x28,0xfe,0x28,0x39,0x13,0x7d,0x55,0x55,0x7d,0x10,0xfe,0x10,0x10,0x11,0x12,0x40,0x40,0x78,0x90,0x24,0xfe,0x24,0x24,0x24,0xfc,0x50,0x50,0x90,0x92,0x12,0xe,
-+0x28,0x28,0xff,0x28,0x38,0x13,0x7c,0x54,0x55,0x7f,0x11,0xff,0x11,0x11,0x11,0x11,0x90,0x90,0xfc,0x90,0x44,0xfe,0x80,0xfc,0x8,0x10,0xfe,0x10,0x10,0x10,0x50,0x20,
-+0x28,0x28,0xfe,0x29,0x3a,0x13,0x7c,0x55,0x54,0x7d,0x10,0xff,0x11,0x11,0x11,0x10,0x80,0x84,0xfe,0x4,0x44,0xfc,0x4,0xf4,0x4,0xf4,0x4,0xf4,0x14,0x14,0xf4,0x8,
-+0x28,0x29,0xfe,0x28,0x3b,0x10,0x7c,0x55,0x56,0x7c,0x13,0xfc,0x10,0x11,0x12,0x10,0x0,0xfc,0x48,0x20,0xfe,0xa2,0xa4,0x20,0x60,0x24,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x28,0x28,0xff,0x28,0x39,0x10,0x7f,0x54,0x55,0x7d,0x11,0xfd,0x13,0x11,0x11,0x11,0x88,0x88,0xfe,0x88,0xfc,0x88,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfe,0x4,0x14,0x8,
-+0x28,0x28,0xfd,0x28,0x3b,0x10,0x7d,0x57,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0x11,0x88,0x88,0xfc,0x88,0xfe,0x88,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x24,0x24,0x34,0x28,
-+0x2,0x3f,0x22,0x3a,0x2a,0x7f,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x22,0x22,0x2a,0x25,0x20,0x20,0x50,0x50,0x88,0x6,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x88,0x8,
-+0x2,0x3f,0x22,0x3a,0x2a,0x7f,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x22,0x22,0x2a,0x25,0x8,0x7c,0x48,0x48,0x48,0x86,0x0,0xfc,0x44,0x48,0x28,0x10,0x30,0x48,0x8e,0x4,
-+0x2,0x3f,0x22,0x3a,0x2a,0x7f,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x22,0x22,0x2a,0x24,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x4,0x7e,0x44,0x74,0x54,0xfe,0x82,0x7c,0x44,0x7c,0x44,0x7c,0x45,0x44,0x54,0x48,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x28,0x10,
-+0x4,0x7e,0x45,0x75,0x55,0xff,0x83,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x45,0x55,0x49,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x10,0x10,0x28,0x4a,0xa6,0x12,
-+0x4,0x7e,0x45,0x75,0x55,0xff,0x83,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x45,0x56,0x48,0x8,0x1c,0xe0,0x0,0x4,0xfe,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,
-+0x4,0x7e,0x44,0x74,0x54,0xff,0x82,0x7c,0x44,0x7f,0x44,0x7c,0x44,0x44,0x54,0x48,0x40,0x40,0x7c,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,0xf8,0x88,0x88,0x88,0xf8,0x88,
-+0x0,0x7d,0x45,0x75,0x55,0xff,0x83,0x7d,0x44,0x7f,0x44,0x7c,0x44,0x45,0x56,0x48,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x60,0x70,0xa8,0x26,0x24,0x20,
-+0x0,0x7c,0x45,0x75,0x55,0xff,0x83,0x7d,0x45,0x7c,0x45,0x7f,0x44,0x44,0x54,0x48,0x40,0x84,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x7d,0x44,0x74,0x55,0xfe,0x82,0x7d,0x44,0x7f,0x44,0x7c,0x44,0x44,0x54,0x49,0x20,0x24,0xa8,0x20,0xfe,0x20,0xa8,0x24,0x40,0xfe,0x48,0x88,0x70,0x50,0x8c,0x4,
-+0x4,0x7e,0x45,0x75,0x54,0xfe,0x83,0x7c,0x44,0x7d,0x44,0x7c,0x44,0x44,0x54,0x48,0x40,0x20,0xfe,0x42,0x7c,0x88,0x50,0x20,0x50,0x8e,0xf8,0x88,0x88,0x88,0xf8,0x88,
-+0x4,0x7e,0x45,0x75,0x54,0xff,0x82,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x44,0x54,0x49,0x20,0x10,0xfe,0x2,0x48,0xfe,0x48,0xfc,0x94,0x94,0xa4,0xa4,0x50,0x52,0x92,0xe,
-+0x4,0x7e,0x45,0x75,0x54,0xfe,0x82,0x7c,0x44,0x7c,0x44,0x7f,0x44,0x44,0x55,0x4a,0x40,0x20,0xfe,0x2,0x1c,0xe0,0x84,0xfe,0x88,0x88,0x88,0xfe,0x0,0x88,0x6,0x2,
-+0x0,0x7d,0x45,0x75,0x55,0xfe,0x82,0x7d,0x47,0x7d,0x45,0x7d,0x44,0x47,0x54,0x48,0x4,0xfe,0x54,0x54,0xfc,0x84,0xfe,0x44,0xf4,0x54,0x54,0xf4,0x4c,0xfc,0x14,0x8,
-+0x10,0x24,0x7e,0x55,0x54,0x7c,0x55,0x54,0x7c,0x10,0x19,0x28,0x2a,0x48,0x87,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x70,0xac,0x24,0x20,0x22,0x2,0xfe,0x0,
-+0x10,0x24,0x7e,0x55,0x54,0x7c,0x54,0x54,0x7d,0x12,0x18,0x28,0x2a,0x48,0x87,0x0,0x50,0x48,0x40,0xfe,0x40,0x40,0xfc,0x84,0x28,0x10,0x2c,0xc4,0x2,0x2,0xfe,0x0,
-+0x3f,0x20,0x20,0x3f,0x21,0x26,0x39,0x27,0x24,0x27,0x24,0x27,0x41,0x42,0x84,0x18,0xfc,0xa0,0x94,0xfe,0x40,0x30,0xe,0xf8,0x88,0xf8,0x88,0xf8,0x40,0x52,0x42,0x3e,
-+0x10,0x25,0x7e,0x54,0x55,0x7d,0x55,0x55,0x7d,0x11,0x19,0x2d,0x29,0x48,0x87,0x0,0x8,0xfc,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0xac,0x4,0x4,0xc,0x2,0xfe,0x0,
-+0x10,0x25,0x7e,0x54,0x54,0x7c,0x54,0x54,0x7c,0x10,0x18,0x2a,0x28,0x48,0x87,0x0,0x20,0x24,0xa8,0x20,0xf8,0x88,0xf8,0x88,0xf8,0x88,0x88,0xa8,0x92,0x2,0xfe,0x0,
-+0x10,0x25,0x7f,0x55,0x55,0x7d,0x55,0x55,0x7d,0x11,0x19,0x2d,0x29,0x48,0x87,0x0,0x4,0xfe,0x4,0x54,0xfc,0x24,0xfc,0x44,0x44,0x74,0x4,0x14,0xa,0x2,0xfe,0x0,
-+0x10,0x24,0x7f,0x54,0x55,0x7d,0x55,0x54,0x7d,0x11,0x19,0x2d,0x29,0x48,0x87,0x0,0x40,0x24,0xfe,0x50,0x24,0x54,0xfc,0x20,0xfc,0x44,0x54,0x74,0xc,0x2,0xfe,0x0,
-+0x20,0x20,0x20,0x48,0x49,0xf2,0x27,0x4a,0xfb,0xa,0x13,0x12,0x22,0x42,0x83,0x2,0x40,0x40,0xa0,0xa0,0x90,0x48,0xff,0x8,0xf8,0x8,0xf8,0x88,0x50,0x20,0x1e,0x4,
-+0x3f,0x20,0x3f,0x21,0x26,0x38,0x21,0x26,0x2f,0x34,0x27,0x24,0x47,0x44,0x85,0x6,0xfc,0x90,0xfc,0x40,0x30,0x8e,0x44,0xb0,0xf8,0x16,0xf0,0x10,0xf4,0x48,0x30,0xc,
-+0x7f,0x10,0x1e,0x23,0x54,0x9,0x32,0x4,0x1f,0x28,0xcf,0x8,0xf,0x8,0xa,0xc,0x20,0x50,0x98,0x26,0x48,0x10,0xa4,0x48,0xf0,0x2e,0xe4,0x20,0xf0,0xa0,0x60,0x18,
-+0x7c,0x44,0x7d,0x1,0xff,0x21,0x7d,0x5,0x1a,0x5,0xf,0x39,0xcf,0xa,0x9,0xc,0x38,0x20,0xfc,0x24,0xf8,0x24,0x7c,0x50,0x9c,0x40,0xf0,0x2e,0xe4,0x20,0xc0,0x30,
-+0x1,0x7f,0x8,0x12,0x7d,0xa,0x7c,0x9,0x32,0x45,0xf,0x39,0xcf,0xa,0x9,0xc,0x4,0xfe,0x90,0xfc,0x90,0xfc,0x90,0x9e,0x80,0x40,0xf0,0x2e,0xe4,0x20,0xc0,0x30,
-+0x2,0x3f,0x20,0x24,0x3e,0x20,0x24,0x3e,0x20,0x22,0xff,0x10,0x10,0x20,0x7f,0x1,0x4,0x4,0x8,0x8,0x10,0x24,0x44,0x88,0x10,0x22,0x42,0x4,0x8,0x10,0x20,0x40,
-+0x1,0x3f,0x20,0x3f,0x20,0x3f,0x20,0xff,0x12,0x3f,0x0,0xff,0x4,0x4,0x18,0x60,0x4,0x88,0x10,0x24,0x48,0x10,0x24,0x88,0x10,0x60,0x4,0xfe,0x40,0x42,0x42,0x3e,
-+0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x0,0x1f,0x1,0xf,0x1,0x7f,0x1,0x0,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x18,0xe0,0x0,0xf0,0x0,0xfa,0x2,0xfe,
-+0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x1,0x1f,0x11,0x1f,0x11,0xff,0x10,0x10,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x10,0xf8,0x10,0xf0,0x14,0xfe,0x10,0x30,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x0,0x3f,0x4,0x18,0x60,0x1f,0x10,0x10,0x1f,0x10,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x0,0xf8,0x8,0x48,0x30,0xf0,0x10,0x10,0xf0,0x10,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x1,0xff,0x1,0x1,0x3f,0x0,0x1f,0x10,0x10,0x1f,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x4,0xfe,0x0,0x10,0xf8,0x0,0xf0,0x10,0x10,0xf0,
-+0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x4,0x24,0x27,0x24,0x24,0x2f,0xf0,0x40,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x40,0x44,0x48,0x70,0x40,0x42,0x3e,0x0,
-+0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x4,0x8,0x17,0x30,0xd1,0x12,0x14,0x10,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x11,0x9,0x3f,0x2,0x7f,0x8,0x3f,0xc8,0x8,0x7,0x8,0xf0,0x8,0xf0,0x4,0xf8,0x10,0x20,0xf8,0x0,0xfc,0x20,0xd8,0x46,0xd0,0xf0,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x0,0x6,0x78,0x8,0xff,0x18,0x2c,0xca,0x8,0x9,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x20,0x24,0xac,0xb0,0x20,0x50,0x50,0x88,0x86,0x4,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x1,0x7f,0x40,0x8f,0x8,0xf,0x8,0xff,0x8,0x30,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x0,0xfe,0x62,0x84,0x20,0xf0,0x44,0xfe,0x20,0x18,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x0,0x1f,0x12,0xff,0x8,0xf,0x5,0x18,0x6c,0x8,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x0,0xf0,0x94,0xfe,0x20,0xf0,0x20,0xc0,0x3c,0x8,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x9,0x1f,0x14,0x13,0x14,0x1f,0x22,0x3b,0x22,0x3b,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x20,0xf0,0x50,0x90,0x50,0xf0,0x20,0xa2,0x22,0x9e,
-+0x1,0x0,0x3f,0x22,0x3f,0x22,0x27,0x2a,0x32,0x21,0x22,0x24,0x49,0x42,0x87,0x0,0x0,0x84,0xfe,0x10,0xfc,0x10,0x38,0xd6,0x10,0x0,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x1,0x0,0x3f,0x22,0x3f,0x26,0x2b,0x32,0x3f,0x20,0x2f,0x20,0x5f,0x40,0x80,0x0,0x0,0x84,0xfe,0x10,0xfc,0x38,0x56,0x90,0xf0,0x80,0xf8,0x80,0xf8,0x82,0x82,0xfe,
-+0x1,0x0,0x3f,0x22,0x3f,0x22,0x27,0x2a,0x32,0x27,0x21,0x22,0x4f,0x42,0x84,0x9,0x0,0x84,0xfe,0x10,0xfc,0x10,0x38,0x56,0x90,0x20,0xc0,0x10,0xf8,0xa0,0x98,0x88,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x28,0x2f,0x28,0x2f,0x20,0x27,0x44,0x44,0x84,0x18,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x40,0x78,0x44,0x3c,0x20,0xf8,0x20,0x22,0x22,0x1e,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x2a,0x2c,0x2f,0x20,0x27,0x20,0x5f,0x42,0x9c,0x0,0x0,0xfe,0x40,0xf8,0x48,0xf8,0x50,0x64,0x7c,0x30,0xc0,0x88,0xfc,0xa0,0x9c,0x80,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x28,0x2f,0x28,0x2f,0x20,0x3f,0x40,0x4f,0x80,0x3f,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x40,0x78,0x44,0x3c,0x88,0xfc,0x80,0xf8,0x80,0xfe,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x28,0x2f,0x28,0x2f,0x24,0x22,0x5f,0x42,0x9c,0x0,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x40,0x78,0x44,0x3c,0x90,0xa0,0xfc,0xa0,0x9c,0x80,
-+0x10,0xa,0x7f,0x54,0x54,0x7f,0x55,0x55,0x7f,0x44,0x55,0x5e,0x54,0x5f,0x94,0x1,0x48,0x48,0xfc,0x48,0x48,0x78,0x48,0x48,0x78,0x48,0x48,0xfe,0x0,0x48,0x86,0x2,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x2a,0x2c,0x2e,0x21,0x27,0x38,0x4f,0x44,0x82,0x1f,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x50,0x64,0xbc,0x40,0xf0,0x8e,0xf8,0x90,0xa0,0xfc,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x2a,0x2c,0x2f,0x24,0x2f,0x3c,0x4a,0x4f,0x84,0x39,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x50,0x64,0x3c,0x8,0x88,0xfe,0x88,0xa8,0x88,0x98,
-+0x10,0xa,0x7f,0x54,0x54,0x7f,0x55,0x55,0x7f,0x44,0x55,0x5e,0x54,0x5f,0x94,0x1,0x10,0x54,0x10,0xfe,0x10,0x54,0x10,0x48,0x48,0xfe,0x28,0xa8,0x5e,0x48,0x88,0x8,
-+0x8,0x10,0x30,0x5f,0x90,0x10,0x1f,0x19,0x15,0x1f,0x1,0x3f,0x1,0xff,0x24,0x42,0xa0,0x90,0xfc,0x40,0x32,0xe,0xf0,0x30,0x50,0xf0,0x0,0xf8,0x0,0xfe,0x88,0x44,
-+0x4,0x7e,0x55,0x55,0x7d,0x55,0x55,0x7c,0x10,0x7d,0x11,0xff,0x1,0xab,0xab,0x0,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x4,0x7e,0x54,0x54,0x7d,0x55,0x57,0x7c,0x10,0x7c,0x11,0xff,0x1,0xaa,0xaa,0x0,0x10,0x90,0x90,0x94,0x3e,0x54,0xd4,0x94,0x94,0x94,0x14,0x54,0xd4,0x24,0x24,0x4c,
-+0x4,0x7e,0x54,0x57,0x7c,0x54,0x55,0x7c,0x10,0x7c,0x10,0xfe,0x0,0xaa,0xaa,0x0,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x4,0x7e,0x54,0x54,0x7d,0x54,0x54,0x7d,0x10,0x7c,0x10,0xff,0x0,0xaa,0xaa,0x1,0x20,0x20,0x7c,0x84,0x48,0x30,0x60,0x90,0x3e,0x42,0xc4,0x28,0x10,0x20,0x40,0x80,
-+0x4,0x7e,0x54,0x54,0x7d,0x54,0x55,0x7e,0x10,0x7c,0x11,0xfe,0x0,0xaa,0xaa,0x1,0x20,0x20,0x40,0x88,0xfc,0x88,0x6,0x82,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x7e,0x55,0x54,0x7c,0x57,0x54,0x7c,0x11,0x7c,0x13,0xfc,0x0,0xaa,0xaa,0x1,0x20,0x28,0xfc,0x20,0x20,0xfe,0x92,0x54,0x10,0x94,0xfe,0x20,0x20,0x58,0x86,0x2,
-+0x3e,0x8,0xfe,0x1c,0x2a,0x48,0x1f,0x19,0x15,0x1f,0x1,0x3f,0x1,0xff,0x24,0x44,0x44,0x7e,0xa4,0x24,0x54,0x88,0xf0,0x30,0x50,0xf0,0x0,0xf8,0x0,0xfe,0x48,0x44,
-+0x4,0x7e,0x54,0x57,0x7c,0x54,0x54,0x7c,0x10,0x7c,0x10,0xfe,0x1,0xaa,0xaa,0x0,0x40,0x20,0x4,0xfe,0x0,0xf8,0x88,0x88,0x88,0xf8,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x4,0x7e,0x54,0x55,0x7c,0x54,0x57,0x7c,0x10,0x7d,0x10,0xfe,0x0,0xaa,0xaa,0x1,0x20,0x40,0x88,0xfc,0x20,0x24,0xfe,0x50,0x98,0x26,0xc8,0x30,0xc4,0x18,0x60,0x80,
-+0x4,0x7e,0x55,0x54,0x7c,0x54,0x57,0x7c,0x10,0x7c,0x10,0xfe,0x0,0xaa,0xaa,0x0,0x40,0x28,0xfc,0x0,0x88,0x50,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,
-+0x12,0x6f,0x42,0x6e,0x42,0x7e,0x1,0x54,0x7c,0x54,0x7c,0x54,0x54,0x7d,0x52,0x1,0x10,0x50,0x50,0x50,0x88,0x88,0x6,0xf8,0x48,0x48,0x48,0x48,0x48,0x88,0xa8,0x10,
-+0x12,0x6f,0x42,0x6e,0x42,0x7e,0x0,0x54,0x7c,0x54,0x7c,0x54,0x54,0x7d,0x52,0x0,0x10,0x10,0x10,0x10,0xfe,0x92,0x92,0x92,0x92,0xfe,0x92,0x92,0x92,0x92,0xfe,0x82,
-+0x12,0x6f,0x42,0x6e,0x42,0x7e,0x0,0x55,0x7c,0x54,0x7c,0x54,0x54,0x7d,0x52,0x0,0x8,0xfc,0x40,0x48,0xfc,0x48,0x48,0xfe,0x0,0xfc,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x12,0x6f,0x42,0x6e,0x42,0x7e,0x0,0x55,0x7d,0x56,0x7f,0x54,0x54,0x7e,0x52,0x1,0x4,0xfe,0x84,0xfc,0x84,0xfc,0x20,0xfe,0x22,0x24,0xfe,0x48,0x88,0x70,0x58,0x84,
-+0x12,0x6f,0x42,0x6e,0x42,0x7e,0x1,0x54,0x7c,0x55,0x7c,0x57,0x54,0x7d,0x52,0x1,0x1c,0xe0,0xa4,0xa8,0x50,0x84,0xf8,0x20,0x48,0xfc,0x20,0xfe,0x20,0x50,0x4e,0x84,
-+0x10,0x3e,0x32,0x2a,0x3e,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xff,0x22,0x22,0x43,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x8a,0x86,0x0,
-+0x10,0x3e,0x32,0x2a,0x3e,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xff,0x22,0x22,0x42,0x0,0x8,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x3e,0x32,0x2a,0x3e,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xff,0x22,0x22,0x42,0x10,0x14,0xfe,0x10,0x38,0x56,0x90,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x0,0xfe,0x0};
-diff -Nur linux_c860_org/drivers/video/font_jis16.h linux/drivers/video/font_jis16.h
---- linux_c860_org/drivers/video/font_jis16.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/video/font_jis16.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,30231 @@
-+#define max_jis16 241824
-+unsigned char font_jis16[max_jis16] = {
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x40, 0x30, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x30, 0x48, 0x48, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x60, 0x60, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07,
-+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x04, 0x08, 0x0c, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x60, 0x60, 0x60, 0xc0, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01,
-+ 0x01, 0x01, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-+ 0x10, 0x48, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x30, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x90, 0x40, 0x00, 0x80, 0x40,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
-+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
-+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x90, 0x40, 0x00, 0x80, 0xc0,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x08,
-+ 0x08, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x60, 0x0f,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x0c, 0xe0,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x03, 0x04,
-+ 0x04, 0x08, 0x12, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x20,
-+ 0x20, 0x40, 0x80, 0x80, 0x40, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x09,
-+ 0x12, 0x14, 0x18, 0x10, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x20, 0x40, 0x80, 0x00,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x18, 0x20, 0x20, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x20, 0x20, 0x18, 0x07, 0x00, 0x00,
-+ 0x00, 0xc0, 0x30, 0x08, 0x08, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x30, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3f,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
-+ 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x22, 0x41,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
-+ 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x18, 0x20, 0x30, 0x38, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x70, 0x30, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x98, 0x20, 0x30, 0xb8, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x22, 0x77, 0x33, 0x11, 0x66, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0x20, 0x60, 0x40, 0xc0, 0xc0, 0xc0,
-+ 0xc0, 0x40, 0x60, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x18, 0x08, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x08, 0x18, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
-+ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0x00, 0x00,
-+ 0x7c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x18, 0x20, 0x60, 0x60, 0x60, 0x40, 0x80, 0x40,
-+ 0x60, 0x60, 0x60, 0x60, 0x20, 0x18, 0x00, 0x00,
-+ 0x60, 0x10, 0x18, 0x18, 0x18, 0x08, 0x06, 0x08,
-+ 0x18, 0x18, 0x18, 0x18, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02,
-+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01,
-+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
-+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0x90, 0x20, 0x20, 0x40, 0x40,
-+ 0x20, 0x20, 0x90, 0x90, 0x48, 0x48, 0x00, 0x00,
-+ 0x48, 0x48, 0x24, 0x24, 0x12, 0x12, 0x09, 0x09,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x48, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x7e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x07, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
-+ 0x05, 0x05, 0x05, 0x7d, 0x41, 0x7f, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0,
-+ 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, 0xf8, 0x00, 0x00,
-+ 0x7c, 0x3c, 0x1c, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x1c, 0x1c, 0x3c, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x01, 0x01,
-+ 0x01, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02,
-+ 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x80,
-+ 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x3f, 0x00,
-+ 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01,
-+ 0x3f, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x80, 0xf8, 0x00, 0x00, 0x00,
-+ 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x04, 0x18, 0x20, 0x18,
-+ 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00,
-+ 0x20, 0x18, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x04, 0x18, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x10, 0x60,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0c, 0x30, 0x0c, 0x03, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-+ 0x30, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x03, 0x0c,
-+ 0x30, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x30, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1c, 0x36, 0x23, 0x23,
-+ 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x88, 0x88,
-+ 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x22,
-+ 0x41, 0x41, 0x41, 0x22, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x18, 0x28, 0x48, 0x88, 0x08, 0x08,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x04, 0x08, 0x08, 0x08, 0x04, 0x03,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x18, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x18, 0x18, 0x30, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1b, 0x1b, 0x36, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x30, 0x48, 0x49, 0x33, 0x06, 0x06, 0x06,
-+ 0x06, 0x06, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xe8, 0x18, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x10, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x18, 0x0c, 0x3f, 0x06, 0x03,
-+ 0x3f, 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x10, 0x20, 0x40, 0xf0, 0x80, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x07, 0x09, 0x11, 0x19, 0x0f, 0x03,
-+ 0x01, 0x19, 0x19, 0x09, 0x07, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x20, 0x30, 0x30, 0x00, 0xc0,
-+ 0x60, 0x30, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x05, 0x09, 0x19, 0x19,
-+ 0x1a, 0x0a, 0x06, 0x07, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x80, 0x40, 0x60, 0x60, 0x00,
-+ 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x02, 0x06, 0x06, 0x3f,
-+ 0x06, 0x36, 0x4c, 0x4f, 0x39, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x20, 0x30, 0x20, 0x00, 0x00, 0xe0,
-+ 0x00, 0x00, 0x08, 0xf0, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x18, 0x24, 0x66, 0x66, 0x24, 0x19, 0x02,
-+ 0x04, 0x09, 0x11, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x60,
-+ 0x90, 0x98, 0x98, 0x90, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x02, 0x02, 0x1f, 0x04, 0x04, 0x04,
-+ 0x04, 0x3f, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x20, 0xf8, 0x40, 0x40, 0x40,
-+ 0x40, 0xf0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x07, 0x08, 0x18, 0x19, 0x0e, 0x0c, 0x16,
-+ 0x33, 0x31, 0x30, 0x19, 0x0e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x78, 0x30,
-+ 0x20, 0xc0, 0xc0, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x03, 0x19, 0x1d, 0x03, 0x03,
-+ 0x1d, 0x19, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x30, 0x70, 0x80, 0x80,
-+ 0x70, 0x30, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x10, 0x23, 0x24, 0x44, 0x48,
-+ 0x49, 0x27, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x10, 0xc8, 0xc8, 0xc8, 0x88,
-+ 0x90, 0x60, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00,
-+ 0x03, 0x04, 0x04, 0x06, 0x03, 0x03, 0x04, 0x06,
-+ 0x03, 0x01, 0x00, 0x04, 0x04, 0x03, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0x00, 0x00, 0x80, 0xc0, 0x40,
-+ 0x80, 0x80, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x02, 0x02, 0x7c, 0x30, 0x0c,
-+ 0x04, 0x09, 0x0a, 0x1c, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x7c, 0x18, 0x60,
-+ 0x40, 0x20, 0xa0, 0x70, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x7f, 0x3f, 0x0f,
-+ 0x07, 0x0f, 0x0e, 0x1c, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xfc, 0xf8, 0xe0,
-+ 0xc0, 0xe0, 0xe0, 0x70, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0c, 0x10, 0x10, 0x20, 0x20,
-+ 0x20, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x60, 0x10, 0x10, 0x08, 0x08,
-+ 0x08, 0x10, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1f, 0x3f, 0x3f,
-+ 0x3f, 0x1f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8,
-+ 0xf8, 0xf0, 0xf0, 0xe0, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0c, 0x13, 0x14, 0x28, 0x28,
-+ 0x28, 0x14, 0x13, 0x0c, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x60, 0x90, 0x50, 0x28, 0x28,
-+ 0x28, 0x50, 0x90, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40,
-+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04,
-+ 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f,
-+ 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc,
-+ 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
-+ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
-+ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x20,
-+ 0x20, 0x10, 0x10, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f,
-+ 0x0f, 0x1f, 0x1f, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0,
-+ 0xe0, 0xf0, 0xf0, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04,
-+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x07,
-+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xf0, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x21, 0x13, 0x09, 0x04, 0x12, 0x39,
-+ 0x12, 0x04, 0x09, 0x13, 0x21, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x90, 0x20, 0x40, 0x90, 0x38,
-+ 0x90, 0x40, 0x20, 0x90, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x3f, 0x00, 0x00, 0x7f, 0x7f, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xf8, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7f, 0x00,
-+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0xf8, 0x60,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x02, 0x04, 0x18, 0x7f, 0x18,
-+ 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x05, 0x09, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x20, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09,
-+ 0x05, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x00, 0x00,
-+ 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00,
-+ 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0c, 0x10, 0x20, 0x3f, 0x20,
-+ 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0xf0, 0x10,
-+ 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x10, 0x20, 0x20, 0x20, 0x10,
-+ 0x0f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x3f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x10, 0x20,
-+ 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0c, 0x10, 0x20, 0x20, 0x20,
-+ 0x20, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x10,
-+ 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04,
-+ 0x08, 0x08, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40,
-+ 0x20, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04,
-+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x7f,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x08, 0xf0,
-+ 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x08, 0x10, 0x3f, 0x40, 0x3f,
-+ 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x08, 0xf0,
-+ 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x10, 0x1f, 0x08, 0x08, 0x04,
-+ 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0x10, 0xf0, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20,
-+ 0x20, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
-+ 0x04, 0x08, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x00, 0x00, 0x03, 0x06, 0x04,
-+ 0x0c, 0x0c, 0x0c, 0x05, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x60, 0x20, 0x20, 0xa0, 0x60, 0x60,
-+ 0x60, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x1f, 0x18, 0x08, 0x0c, 0x04,
-+ 0x06, 0x02, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xf0, 0x10, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x3f, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x1c, 0x08, 0x3f, 0x00, 0x00,
-+ 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
-+ 0xf0, 0x40, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x04, 0x08, 0x11, 0x22, 0x11,
-+ 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x22, 0x11, 0x08, 0x04, 0x02, 0x01, 0x02,
-+ 0x04, 0x08, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x20,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
-+ 0x22, 0x74, 0x1c, 0x0c, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x21, 0x21,
-+ 0x12, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x60, 0x90, 0x08, 0x08,
-+ 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x10,
-+ 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x80, 0x80,
-+ 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x01, 0x01,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
-+ 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-+ 0xc0, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x06, 0x0e, 0x11, 0x11, 0x19, 0x19, 0x0c, 0x0c,
-+ 0x06, 0x06, 0x02, 0x02, 0x1d, 0x19, 0x00, 0x00,
-+ 0x60, 0xe0, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0,
-+ 0x60, 0x60, 0x20, 0x20, 0xc0, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x04, 0x04, 0x03, 0x01, 0x03, 0x03, 0x04,
-+ 0x04, 0x08, 0x0f, 0x10, 0x38, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0xc0,
-+ 0xc0, 0x60, 0xe0, 0x30, 0x78, 0x00, 0x00, 0x00,
-+ 0x00, 0x18, 0x24, 0x66, 0x66, 0x25, 0x1a, 0x03,
-+ 0x06, 0x0e, 0x16, 0x12, 0x21, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x10,
-+ 0xa8, 0xec, 0xec, 0xa8, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x04, 0x07, 0x1f, 0x1c, 0x04, 0x04,
-+ 0x07, 0x1f, 0x1c, 0x04, 0x04, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xe0, 0xe0, 0x80, 0x80, 0x80, 0xe0,
-+ 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x06,
-+ 0x04, 0x04, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60,
-+ 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x07, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x60, 0x20, 0x30, 0x10, 0x10,
-+ 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x03, 0x01, 0x09, 0x1f, 0x09, 0x03, 0x03,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x00, 0x20, 0xf0, 0x20, 0x80, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x03, 0x09, 0x1f, 0x09, 0x03, 0x01, 0x01,
-+ 0x03, 0x09, 0x1f, 0x09, 0x03, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x20, 0xf0, 0x20, 0x80, 0x00, 0x00,
-+ 0x80, 0x20, 0xf0, 0x20, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x07, 0x07, 0x07, 0x03, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x18, 0x20, 0x20, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x20, 0x20, 0x18, 0x07, 0x00, 0x00,
-+ 0x00, 0xc0, 0x30, 0x08, 0x08, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x30, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x0f, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x08, 0x18, 0x1c, 0x08, 0x00, 0x01,
-+ 0x02, 0x04, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x60, 0x60, 0xc0, 0x80, 0x00,
-+ 0x00, 0x20, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x08, 0x18, 0x18, 0x00, 0x03, 0x00,
-+ 0x18, 0x18, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x60, 0x60, 0xc0, 0x80, 0x40,
-+ 0x60, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x02, 0x04, 0x08, 0x18,
-+ 0x1f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
-+ 0xf0, 0xc0, 0xc0, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x00,
-+ 0x00, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0x00, 0x00, 0x80, 0xc0, 0x60,
-+ 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x04, 0x0c, 0x08, 0x1b, 0x1c, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x0f, 0x10, 0x00, 0x00, 0x01, 0x01,
-+ 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0xe0, 0x40, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x08, 0x18, 0x1c, 0x0e, 0x07, 0x0d,
-+ 0x18, 0x18, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x60, 0x60, 0xc0, 0x80, 0xc0,
-+ 0xe0, 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x07,
-+ 0x00, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x60, 0x60, 0x60, 0xe0, 0x60,
-+ 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08,
-+ 0x0f, 0x10, 0x10, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60,
-+ 0xe0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x30,
-+ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xd0, 0x30, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xd0, 0x30, 0x10, 0x00, 0x00, 0xf8, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-+ 0x38, 0x30, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1a, 0x1c,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x80, 0xc0, 0xc0,
-+ 0x60, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x18, 0x1c, 0x1c, 0x16, 0x16, 0x17,
-+ 0x13, 0x12, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x30, 0x70, 0x70, 0xb0, 0xb0, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x18, 0x1c, 0x16, 0x16, 0x13, 0x11,
-+ 0x11, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa0,
-+ 0xa0, 0xe0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x33, 0x1c, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0xb0, 0x60, 0xe0, 0x18, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0xc0,
-+ 0x60, 0x60, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x08, 0x18, 0x1c, 0x0f, 0x03, 0x00,
-+ 0x10, 0x18, 0x1c, 0x13, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xa0, 0x60, 0x20, 0x00, 0x00, 0xc0, 0xe0,
-+ 0x30, 0x30, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x23, 0x43, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06,
-+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3b, 0x19, 0x19, 0x19, 0x0d, 0x0e, 0x0e,
-+ 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xb8, 0x90, 0x90, 0x90, 0xd0, 0xe0, 0xe0,
-+ 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03,
-+ 0x04, 0x08, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80,
-+ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x20, 0x01, 0x01, 0x03, 0x06,
-+ 0x06, 0x0c, 0x18, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x60, 0xc0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x0c, 0x03,
-+ 0x0c, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x60, 0xe0,
-+ 0x60, 0x60, 0xe0, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1c, 0x0c, 0x0c, 0x0d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0e, 0x1d, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x20, 0x00,
-+ 0x00, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x60, 0x60, 0x60, 0xe0, 0x60, 0x60,
-+ 0x60, 0x60, 0xe0, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x18, 0x1f,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x30, 0xf0,
-+ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x06, 0x06, 0x1f, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x60, 0x60, 0x00, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x08, 0x08,
-+ 0x07, 0x0c, 0x0f, 0x18, 0x08, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0xc0, 0x80,
-+ 0x00, 0x00, 0xc0, 0xe0, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x1c, 0x0c, 0x0c, 0x0d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x01, 0x00, 0x0f, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x01, 0x00, 0x0f, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x19, 0x19, 0x0e, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0d, 0x0e,
-+ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x70, 0x40, 0x80, 0xc0, 0xc0,
-+ 0x60, 0x60, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x76, 0x3b, 0x33, 0x33,
-+ 0x33, 0x33, 0x33, 0x7b, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xb8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0e, 0x0d, 0x0c, 0x1e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x60, 0x60,
-+ 0x60, 0x60, 0xe0, 0x60, 0x60, 0xf0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x60, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x1c, 0x0f,
-+ 0x03, 0x10, 0x18, 0x17, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00,
-+ 0xc0, 0xe0, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x02, 0x06, 0x06, 0x1f, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x70, 0x98, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x18, 0x0c, 0x0c,
-+ 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3d, 0x19, 0x19, 0x0e,
-+ 0x0e, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xb8, 0x90, 0x90, 0xd0,
-+ 0xe0, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x06, 0x03,
-+ 0x03, 0x04, 0x08, 0x1c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x40, 0x80,
-+ 0x80, 0xc0, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x06, 0x06,
-+ 0x03, 0x03, 0x01, 0x19, 0x19, 0x0e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x01, 0x03,
-+ 0x06, 0x0c, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0x80, 0x00,
-+ 0x00, 0x00, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x04, 0x02, 0x13, 0x0e, 0x04,
-+ 0x07, 0x0d, 0x16, 0x26, 0x2a, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80,
-+ 0xe0, 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x04, 0x02, 0x02, 0x1f, 0x04, 0x04, 0x07, 0x0d,
-+ 0x15, 0x22, 0x26, 0x2a, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x00, 0x80, 0x80, 0xe0, 0x10,
-+ 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10,
-+ 0x10, 0x10, 0x0a, 0x0c, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20,
-+ 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x20, 0x20, 0x20, 0x22,
-+ 0x24, 0x14, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x08, 0x08,
-+ 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x13,
-+ 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80,
-+ 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x02, 0x01, 0x00, 0x00, 0x03, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01,
-+ 0x0e, 0x01, 0x02, 0x07, 0x09, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xc0,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
-+ 0x04, 0x03, 0x00, 0x00, 0x11, 0x0e, 0x01, 0x02,
-+ 0x04, 0x0e, 0x11, 0x21, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x00, 0x00, 0xc0, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x0c, 0x38,
-+ 0x0b, 0x0c, 0x18, 0x28, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x30, 0x20, 0x00,
-+ 0xc0, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x05, 0x06, 0x1c, 0x04, 0x05,
-+ 0x06, 0x0c, 0x34, 0x0c, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x30, 0x08, 0x0c, 0x00, 0x60, 0x90,
-+ 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08,
-+ 0x08, 0x10, 0x11, 0x25, 0x22, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x60, 0x10, 0x88, 0x98, 0x80,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08,
-+ 0x08, 0x10, 0x11, 0x25, 0x22, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x10, 0x40, 0x20, 0x90, 0x88, 0x98,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x01, 0x01, 0x0f, 0x00, 0x00, 0x1f, 0x00,
-+ 0x00, 0x07, 0x08, 0x08, 0x06, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x60, 0x80, 0x80, 0xf0, 0x40, 0x20,
-+ 0x20, 0xf0, 0x10, 0x00, 0x00, 0xc0, 0x00, 0x00,
-+ 0x04, 0x02, 0x02, 0x1f, 0x01, 0x01, 0x3e, 0x00,
-+ 0x00, 0x0f, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00,
-+ 0x08, 0x24, 0xd0, 0x00, 0x00, 0xe0, 0x80, 0x40,
-+ 0x40, 0xe0, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x08, 0x08,
-+ 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x08, 0x08,
-+ 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0x88, 0x24, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x10, 0x10, 0x23, 0x20, 0x20,
-+ 0x20, 0x20, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x20, 0x20, 0x3c, 0xe0, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00,
-+ 0x01, 0x40, 0x20, 0x20, 0x20, 0x47, 0x40, 0x40,
-+ 0x40, 0x40, 0x30, 0x20, 0x20, 0x01, 0x00, 0x00,
-+ 0x08, 0xa4, 0x50, 0x40, 0x78, 0xc0, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x10, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x10, 0x0f, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0xf0, 0x88, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x00,
-+ 0x04, 0x02, 0x01, 0x21, 0x1e, 0x00, 0x00, 0x07,
-+ 0x08, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x30, 0xc0, 0x80, 0x40, 0x40, 0xe0,
-+ 0x20, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
-+ 0x04, 0x02, 0x01, 0x21, 0x1e, 0x00, 0x00, 0x07,
-+ 0x08, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x30, 0xc8, 0x80, 0x40, 0x40, 0xe0,
-+ 0x20, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x90, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x40, 0x3f, 0x00, 0x03, 0x04, 0x04,
-+ 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x80, 0xf8, 0x80, 0x80, 0x80, 0xc0, 0x40,
-+ 0xc0, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x40, 0x3f, 0x00, 0x03, 0x04, 0x04,
-+ 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x28, 0x94, 0xf8, 0x80, 0x80, 0x80, 0xc0, 0x40,
-+ 0xc0, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x4b, 0x3c, 0x08,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x40, 0x78, 0xc0, 0x40, 0x40,
-+ 0x40, 0xc0, 0x40, 0x00, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x4b, 0x3c, 0x08,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x08, 0x84, 0x50, 0x48, 0x78, 0xc0, 0x40, 0x40,
-+ 0x40, 0xc0, 0x40, 0x00, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x09, 0x06, 0x00, 0x01, 0x02, 0x07, 0x38,
-+ 0x01, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x80, 0x00, 0x38, 0xc0, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
-+ 0x00, 0x09, 0x06, 0x00, 0x01, 0x02, 0x07, 0x38,
-+ 0x01, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xc8, 0x64, 0x90, 0x00, 0x38, 0xc0, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x07, 0x3c, 0x08, 0x08, 0x08,
-+ 0x10, 0x10, 0x11, 0x21, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0xf0, 0x18, 0x20,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x07, 0x3c, 0x08, 0x08, 0x08,
-+ 0x10, 0x10, 0x11, 0x21, 0x20, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x90, 0x00, 0x00, 0xf0, 0x18, 0x20,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08, 0x0b,
-+ 0x1c, 0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x20,
-+ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08, 0x0b,
-+ 0x1c, 0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0x08, 0xc4, 0x10, 0x08, 0x00, 0xc0, 0x20,
-+ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06,
-+ 0x38, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20,
-+ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0x08,
-+ 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x10, 0xe0, 0x10, 0x08, 0x08, 0x08,
-+ 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x43, 0x3c, 0x01, 0x01, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x43, 0x3c, 0x01, 0x01, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0xc0, 0x88, 0x24, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x06,
-+ 0x08, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x06,
-+ 0x08, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x24, 0x10, 0x00, 0x70, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x04, 0x02, 0x02, 0x3f, 0x04, 0x08, 0x08, 0x10,
-+ 0x10, 0x20, 0x03, 0x04, 0x04, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x70, 0x18, 0x20, 0x40,
-+ 0x40, 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x10, 0x13, 0x20, 0x20, 0x20,
-+ 0x20, 0x22, 0x2a, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x18, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x00, 0x00, 0x13, 0x15, 0x19, 0x12,
-+ 0x2a, 0x4c, 0x4c, 0x54, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0xe0, 0x10, 0x08, 0x08,
-+ 0x08, 0x08, 0x68, 0x90, 0x68, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x08, 0x4c, 0x3f, 0x0c, 0x08,
-+ 0x18, 0x18, 0x28, 0x59, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0xf0, 0x18, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0d, 0x11, 0x11, 0x22, 0x22,
-+ 0x24, 0x24, 0x28, 0x10, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x20, 0x10, 0x08, 0x08, 0x08,
-+ 0x08, 0x10, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x14, 0x13, 0x20, 0x20, 0x20,
-+ 0x20, 0x29, 0x12, 0x12, 0x11, 0x00, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0x38, 0xe0, 0x20, 0x20, 0x20,
-+ 0x20, 0xe0, 0x30, 0x28, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0x28, 0x27, 0x40, 0x40, 0x40,
-+ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00,
-+ 0x88, 0x44, 0x50, 0x78, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0x28, 0x27, 0x40, 0x40, 0x40,
-+ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00,
-+ 0x98, 0x64, 0x64, 0x78, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x04, 0x3c, 0x08, 0x08, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0x40, 0x40, 0x20, 0x20, 0x30, 0x28, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x04, 0x3c, 0x08, 0x08, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x08, 0x44, 0x50, 0x28, 0x20, 0x30, 0x28, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x04, 0x3c, 0x08, 0x08, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x30, 0x48, 0x48, 0x30, 0x20, 0x30, 0x28, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0x02, 0x01,
-+ 0x02, 0x4c, 0x38, 0x24, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0xb0, 0x88, 0x9c, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0x02, 0x01,
-+ 0x02, 0x4c, 0x38, 0x24, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x88, 0xa4, 0x10, 0x00, 0x00, 0x00,
-+ 0xb0, 0x88, 0x9c, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0x02, 0x01,
-+ 0x02, 0x4c, 0x38, 0x24, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x98, 0xa4, 0x24, 0x18, 0x00, 0x00,
-+ 0xb0, 0x88, 0x9c, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x50, 0x20,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x50, 0x20,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x48, 0x20, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x50, 0x20,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x30, 0x48, 0x48, 0x30, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x22, 0x11, 0x10, 0x10, 0x23, 0x20, 0x20,
-+ 0x20, 0x29, 0x12, 0x12, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x30, 0xc0, 0x40, 0x38, 0xe0, 0x20, 0x20,
-+ 0x20, 0xe0, 0x30, 0x28, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x44, 0x23, 0x20, 0x20, 0x47, 0x40, 0x40,
-+ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00,
-+ 0x00, 0x68, 0x84, 0x90, 0x78, 0xc0, 0x40, 0x40,
-+ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x44, 0x23, 0x20, 0x20, 0x47, 0x40, 0x40,
-+ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00,
-+ 0x18, 0x64, 0xa4, 0x98, 0x70, 0xc0, 0x40, 0x40,
-+ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x10, 0x0f, 0x00, 0x10, 0x0f, 0x00,
-+ 0x00, 0x0f, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xf0, 0x80, 0x80, 0xe0, 0x80, 0x80,
-+ 0x80, 0x80, 0xe0, 0x90, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x07, 0x01, 0x01, 0x02, 0x02, 0x0f,
-+ 0x34, 0x44, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x00, 0x00, 0x20, 0x10, 0xf0,
-+ 0x18, 0x24, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x27, 0x1c, 0x04, 0x1c, 0x24, 0x24,
-+ 0x2c, 0x18, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x30, 0x08, 0x0c, 0x00, 0x00,
-+ 0x20, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x00, 0x10, 0x13, 0x1c, 0x11, 0x29,
-+ 0x2a, 0x46, 0x44, 0x4a, 0x30, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0xc0, 0xa0, 0x10, 0x08,
-+ 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x02, 0x01, 0x11, 0x0e, 0x03, 0x12, 0x24, 0x1c,
-+ 0x07, 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x20,
-+ 0x10, 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x09, 0x0e,
-+ 0x3c, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x10,
-+ 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x01, 0x18, 0x10, 0x0b, 0x4c, 0x34,
-+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x00, 0xf0, 0x08, 0x08, 0x08,
-+ 0x70, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x21, 0x27,
-+ 0x29, 0x31, 0x23, 0x21, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10,
-+ 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x40, 0x21, 0x22, 0x24, 0x28, 0x30,
-+ 0x34, 0x22, 0x21, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0xe0, 0x90, 0x88, 0x88, 0x88,
-+ 0x88, 0x90, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x0f, 0x11, 0x11, 0x0e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc0, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00, 0x00,
-+ 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x1f, 0x21, 0x21, 0x1e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x01, 0x01, 0x06, 0x08, 0x08, 0x08, 0x09,
-+ 0x0e, 0x08, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xe0,
-+ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x10, 0x09, 0x0a, 0x0c, 0x0c, 0x08, 0x08, 0x08,
-+ 0x08, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x07, 0x00, 0x01, 0x02, 0x07, 0x0c,
-+ 0x10, 0x20, 0x03, 0x04, 0x04, 0x03, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x80, 0x00, 0x00, 0xc0, 0x20,
-+ 0x10, 0x10, 0x90, 0x60, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x09, 0x0a, 0x1c, 0x6c, 0x08,
-+ 0x18, 0x18, 0x28, 0x48, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x18, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x0e, 0x01, 0x02, 0x04, 0x0f, 0x08,
-+ 0x10, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x20,
-+ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x06,
-+ 0x1d, 0x06, 0x0c, 0x0c, 0x14, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x08, 0x4c, 0x3f, 0x0c, 0x08,
-+ 0x18, 0x18, 0x28, 0x48, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08,
-+ 0x08, 0x08, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x09, 0x06, 0x01, 0x01, 0x03, 0x0e, 0x12,
-+ 0x24, 0x24, 0x28, 0x19, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x10, 0x08,
-+ 0x08, 0x08, 0xc8, 0x30, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x09, 0x07, 0x02, 0x07, 0x08, 0x10, 0x06,
-+ 0x09, 0x07, 0x08, 0x1c, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0x80, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20,
-+ 0xc0, 0x00, 0x00, 0xe0, 0x10, 0x38, 0x00, 0x00,
-+ 0x04, 0x02, 0x12, 0x0f, 0x04, 0x04, 0x0f, 0x18,
-+ 0x21, 0x02, 0x04, 0x08, 0x08, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x20, 0x38, 0xc0,
-+ 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00,
-+ 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x0f,
-+ 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x88, 0x90, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x1e,
-+ 0x02, 0x01, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x21, 0x1e, 0x00, 0x02, 0x01, 0x01,
-+ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x20, 0x40, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-+ 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x30,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x1e,
-+ 0x08, 0x08, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x01, 0x3e, 0x10, 0x10,
-+ 0x08, 0x08, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f,
-+ 0x01, 0x01, 0x01, 0x01, 0x1e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x01, 0x01,
-+ 0x01, 0x01, 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x0f,
-+ 0x01, 0x02, 0x04, 0x08, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x1f, 0x00, 0x01,
-+ 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x40, 0x78, 0xc0, 0xc0, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x40, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x11, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0x20, 0x20, 0x20, 0x40, 0xc0, 0x80, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x11, 0x20, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x10, 0xf0, 0x10, 0x10, 0x10,
-+ 0x20, 0x20, 0x20, 0x40, 0xc0, 0x80, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x02, 0x03, 0x1d, 0x01, 0x01,
-+ 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x78,
-+ 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x02, 0x03, 0x1d, 0x01, 0x01,
-+ 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x70, 0x80, 0x00, 0x00, 0x78,
-+ 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x03, 0x02, 0x04, 0x04, 0x08,
-+ 0x10, 0x00, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x70, 0x90, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x07, 0x04, 0x08, 0x08, 0x10,
-+ 0x21, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x08, 0x24, 0xd4, 0x50, 0x40, 0x40, 0x80, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x04, 0x0f, 0x09, 0x10,
-+ 0x20, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x38, 0xc0, 0x00, 0x80,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x04, 0x0f, 0x09, 0x10,
-+ 0x20, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x10, 0x38, 0xc0, 0x00, 0x80,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x21, 0x1e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x1c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10,
-+ 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x43, 0x3c, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0xd0, 0x40, 0x40, 0x40, 0x40,
-+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x04, 0x04, 0x24, 0x1f, 0x04,
-+ 0x04, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x04, 0x04, 0x24, 0x1f, 0x04,
-+ 0x04, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x08, 0xa4, 0x54, 0x50, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0c, 0x02, 0x00, 0x18, 0x04, 0x00,
-+ 0x00, 0x00, 0x00, 0x13, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0c, 0x02, 0x00, 0x18, 0x04, 0x00,
-+ 0x00, 0x00, 0x00, 0x13, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x24, 0x14, 0x10, 0x00, 0x08, 0x10,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0x40, 0x40, 0x80, 0x80,
-+ 0x40, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x21, 0x1e, 0x00, 0x00, 0x01, 0x01,
-+ 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0xd4, 0x50, 0x80, 0x80, 0x00, 0x00,
-+ 0x80, 0x40, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x04, 0x05, 0x26, 0x1c,
-+ 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x88, 0x10, 0x20,
-+ 0x40, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x04, 0x05, 0x26, 0x1c,
-+ 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x10, 0x78, 0x88, 0x10, 0x20,
-+ 0x40, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x04, 0x04, 0x04, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x10, 0x10, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x10, 0x08, 0x08, 0x08, 0x00,
-+ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x08, 0xa4, 0x54, 0x50, 0x40, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x02, 0x02, 0x05, 0x08,
-+ 0x10, 0x00, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0xc0,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x03, 0x04, 0x04, 0x0a, 0x11,
-+ 0x20, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0xf0, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x1e, 0x01, 0x00, 0x23, 0x1c,
-+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x40, 0x80, 0x00, 0x00, 0xf8, 0x80, 0x80,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x1e, 0x01, 0x00, 0x23, 0x1c,
-+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x08, 0x64, 0x94, 0x10, 0x00, 0xf8, 0x80, 0x80,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x12,
-+ 0x0a, 0x08, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x04, 0x22, 0x11, 0x09, 0x08, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x10, 0x10, 0x20,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x44, 0x24, 0x10, 0x10,
-+ 0x00, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x94, 0x50, 0x40, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x11, 0x0e, 0x00, 0x00, 0x23, 0x1c,
-+ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x00, 0x00, 0x78, 0x80, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x11, 0x0e, 0x00, 0x20, 0x1f, 0x00,
-+ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x08, 0x24, 0xd4, 0x10, 0x00, 0xf0, 0x00, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x0e, 0x09,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x90, 0x50, 0x40, 0x00, 0x00, 0x00, 0x80,
-+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x00, 0x00, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0xf8, 0x80, 0x80, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x0e, 0x01,
-+ 0x00, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0x40, 0xc0,
-+ 0xc0, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x1e, 0x00, 0x00, 0x01,
-+ 0x03, 0x0d, 0x31, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x40, 0x80, 0x00,
-+ 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0x20, 0x20, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10,
-+ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x24, 0x14, 0x90, 0x40, 0x20, 0x10,
-+ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x18, 0x24, 0x24, 0x18, 0x80, 0x40, 0x20, 0x10,
-+ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x0f, 0x08,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x0f,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x48, 0x28, 0x20, 0x00, 0xe0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x0f,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x30, 0x48, 0x48, 0x30, 0x00, 0xe0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x23, 0x1c, 0x00, 0x00, 0x00, 0x01,
-+ 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0xd4, 0x50, 0x40, 0x80, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x23, 0x1c, 0x00, 0x00, 0x00, 0x01,
-+ 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00,
-+ 0x18, 0x24, 0xe4, 0x58, 0x40, 0x80, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x48, 0x30,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x48, 0x30,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x90, 0x50, 0x40, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x48, 0x30,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x60, 0x90, 0x90, 0x60, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x01, 0x01,
-+ 0x09, 0x09, 0x11, 0x21, 0x03, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x40,
-+ 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x01, 0x01,
-+ 0x09, 0x09, 0x11, 0x21, 0x03, 0x01, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x10, 0xf0, 0x00, 0x00, 0x40,
-+ 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x01, 0x01,
-+ 0x09, 0x09, 0x11, 0x21, 0x03, 0x01, 0x00, 0x00,
-+ 0x18, 0x24, 0x24, 0x18, 0xf0, 0x00, 0x00, 0x40,
-+ 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x20, 0x1f, 0x00, 0x00, 0x00,
-+ 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x08, 0x10, 0x20, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x03, 0x00, 0x00, 0x08, 0x06, 0x01,
-+ 0x00, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00, 0x80,
-+ 0x40, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
-+ 0x04, 0x04, 0x29, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
-+ 0x20, 0x30, 0xc8, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x40,
-+ 0xa0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x0f, 0x02, 0x02, 0x23, 0x1e,
-+ 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x03,
-+ 0x1e, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x90,
-+ 0x20, 0x40, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x03, 0x26, 0x1a, 0x01,
-+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x78, 0x88, 0x10, 0x20, 0x40,
-+ 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e,
-+ 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40,
-+ 0x40, 0x80, 0xe0, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x11, 0x0e, 0x00, 0x00,
-+ 0x00, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80,
-+ 0x80, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00,
-+ 0x01, 0x0e, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20,
-+ 0xe0, 0x40, 0x40, 0xc0, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x01, 0x0e,
-+ 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x20,
-+ 0x20, 0x20, 0x20, 0xe0, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x11, 0x0e, 0x00, 0x23, 0x1c, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x00, 0x70, 0x90, 0x10, 0x10,
-+ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x08, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x88, 0x88,
-+ 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x0b, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x21, 0x1e, 0x10, 0x10, 0x08,
-+ 0x08, 0x09, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x20,
-+ 0x20, 0xe0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0f,
-+ 0x08, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10,
-+ 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x21, 0x1e, 0x10, 0x08, 0x08, 0x08,
-+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x20, 0x20,
-+ 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x1e, 0x08, 0x04,
-+ 0x05, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80,
-+ 0xf0, 0x88, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x1e, 0x02, 0x01, 0x01,
-+ 0x01, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x40, 0x80, 0x00,
-+ 0x00, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x01, 0x0e,
-+ 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20, 0xe0, 0x20,
-+ 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x18, 0x04, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x13, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x10,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x02, 0x43, 0x3c, 0x20, 0x10,
-+ 0x10, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x10, 0xe0, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x11,
-+ 0x0e, 0x02, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-+ 0x20, 0x20, 0x20, 0x20, 0xc0, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04,
-+ 0x07, 0x08, 0x10, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-+ 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08,
-+ 0x0f, 0x10, 0x10, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60,
-+ 0xe0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x30,
-+ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60,
-+ 0x60, 0x30, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x20, 0x01, 0x01, 0x03, 0x06,
-+ 0x06, 0x0c, 0x18, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x60, 0xc0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x34, 0x37, 0x34,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x58, 0xd8, 0x58,
-+ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1a, 0x1c,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x80, 0xc0, 0xc0,
-+ 0x60, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60,
-+ 0x60, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x18, 0x1c, 0x1c, 0x16, 0x16, 0x17,
-+ 0x13, 0x12, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x30, 0x70, 0x70, 0xb0, 0xb0, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x18, 0x1c, 0x16, 0x16, 0x13, 0x11,
-+ 0x11, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa0,
-+ 0xa0, 0xe0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x20, 0x00, 0x10, 0x1f, 0x1f,
-+ 0x10, 0x00, 0x10, 0x1f, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0xe0, 0x20, 0x00, 0x20, 0xe0, 0xe0,
-+ 0x20, 0x00, 0x10, 0xe0, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x01,
-+ 0x02, 0x04, 0x08, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x00, 0x80, 0x00,
-+ 0x00, 0x10, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x23, 0x43, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0c, 0x17, 0x23, 0x23, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0xa0, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x07, 0x1b, 0x33, 0x33, 0x33,
-+ 0x1b, 0x07, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x80, 0x60, 0x30, 0x30, 0x30,
-+ 0x60, 0x80, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03,
-+ 0x04, 0x08, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80,
-+ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x63, 0x33, 0x33, 0x33, 0x13,
-+ 0x0f, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x18, 0x30, 0x30, 0x30, 0x20,
-+ 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x18,
-+ 0x08, 0x04, 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x30,
-+ 0x20, 0x40, 0x88, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x18, 0x10,
-+ 0x10, 0x10, 0x19, 0x0e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x20, 0x20, 0xa0, 0x60, 0x60,
-+ 0x40, 0xc0, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x02, 0x04, 0x05, 0x04,
-+ 0x0c, 0x08, 0x0c, 0x1b, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xe0, 0x10, 0x10, 0x10, 0x20, 0xc0, 0x20,
-+ 0x20, 0x20, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x01, 0x01,
-+ 0x01, 0x03, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x04, 0x04, 0x02, 0x03, 0x04, 0x0c,
-+ 0x08, 0x08, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xe0, 0x10, 0x00, 0x80, 0xc0, 0x40,
-+ 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x04, 0x03,
-+ 0x06, 0x0c, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x80,
-+ 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x0c, 0x07, 0x02, 0x04, 0x04, 0x08,
-+ 0x08, 0x0e, 0x07, 0x00, 0x06, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0xc0, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x17, 0x02, 0x04,
-+ 0x04, 0x0c, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20,
-+ 0x20, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x06, 0x04, 0x0f, 0x0c,
-+ 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x10, 0x10, 0x10, 0x30, 0xf0, 0x20,
-+ 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x06,
-+ 0x04, 0x04, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x0d, 0x0e,
-+ 0x09, 0x19, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0xa0, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
-+ 0x06, 0x04, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x40, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x0c,
-+ 0x08, 0x08, 0x0c, 0x1b, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x60, 0x40,
-+ 0x40, 0x40, 0xe8, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x04, 0x04,
-+ 0x04, 0x07, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x04, 0x03, 0x02, 0x04, 0x04, 0x03, 0x04,
-+ 0x08, 0x08, 0x0e, 0x07, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0x60, 0xe0, 0x00, 0x00, 0x00, 0xc0, 0xc0,
-+ 0x00, 0x00, 0x00, 0x80, 0xc0, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x0c,
-+ 0x0c, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x30,
-+ 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x0c, 0x1f, 0x22, 0x04, 0x04,
-+ 0x08, 0x08, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x08, 0xf0, 0x40, 0x40, 0x80,
-+ 0x80, 0x80, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04,
-+ 0x0c, 0x0c, 0x0c, 0x1b, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0x10,
-+ 0x30, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0c, 0x18,
-+ 0x10, 0x10, 0x11, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x40, 0x40,
-+ 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x11, 0x03,
-+ 0x02, 0x04, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x30, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x0c, 0x0c,
-+ 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, 0x20,
-+ 0x60, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x19, 0x31,
-+ 0x32, 0x12, 0x0e, 0x07, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, 0x20, 0x30,
-+ 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x06, 0x0b, 0x01, 0x01, 0x01, 0x01, 0x03,
-+ 0x07, 0x05, 0x09, 0x19, 0x31, 0x20, 0x00, 0x00,
-+ 0x00, 0x10, 0x30, 0x60, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xa0, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x31, 0x59, 0x09, 0x09,
-+ 0x12, 0x12, 0x12, 0x0f, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x80, 0xa0, 0x30, 0x10, 0x10,
-+ 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x31, 0x23,
-+ 0x22, 0x22, 0x36, 0x19, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x10, 0x10,
-+ 0x30, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08,
-+ 0x0f, 0x10, 0x10, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60,
-+ 0xe0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x00, 0x80, 0x60,
-+ 0x30, 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x30,
-+ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x1f, 0x30, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0x60, 0xf8, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x0c, 0x0c, 0x3f, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0xc0, 0xc0, 0xe0, 0x10, 0x00, 0x40, 0xc0, 0x40,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x67, 0x73, 0x13, 0x13, 0x13, 0x0f, 0x0b,
-+ 0x13, 0x33, 0x23, 0x77, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x98, 0x38, 0x20, 0x20, 0x20, 0xc0, 0x40,
-+ 0x20, 0x30, 0x10, 0xb8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x1c, 0x10, 0x00, 0x00, 0x03, 0x00,
-+ 0x00, 0x10, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x60,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1a,
-+ 0x1c, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x70, 0xb0, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x06, 0x03, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1a,
-+ 0x1c, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0xc0, 0x80, 0x78, 0x30, 0x70, 0xb0, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1f, 0x19,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x58, 0x80, 0x80, 0x00, 0x00, 0x80,
-+ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-+ 0x02, 0x34, 0x34, 0x18, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x18, 0x18, 0x1c, 0x1c, 0x17, 0x26,
-+ 0x22, 0x22, 0x20, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x70, 0x60, 0x60, 0xe0, 0xe0, 0x60, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xd0, 0x30, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x23, 0x43, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06,
-+ 0x03, 0x03, 0x01, 0x19, 0x1a, 0x0c, 0x00, 0x00,
-+ 0x00, 0x78, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x07, 0x1b, 0x33, 0x33, 0x33,
-+ 0x1b, 0x07, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x80, 0x60, 0x30, 0x30, 0x30,
-+ 0x60, 0x80, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03,
-+ 0x04, 0x08, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80,
-+ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x18, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xf8, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0f,
-+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x77, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-+ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xb8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x77, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-+ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xb8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xf8, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x26, 0x46, 0x06, 0x07, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x30, 0x18,
-+ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x1e, 0x19, 0x18,
-+ 0x18, 0x18, 0x19, 0x3e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xb0, 0xf0,
-+ 0xf0, 0xf0, 0xb0, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x1c, 0x10, 0x00, 0x06, 0x0b, 0x00,
-+ 0x00, 0x10, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x10, 0x18, 0xb8, 0xd8,
-+ 0x10, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x33, 0x32, 0x36, 0x36, 0x3e, 0x36,
-+ 0x36, 0x32, 0x33, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x30, 0x10, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x07,
-+ 0x03, 0x06, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0xf0,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x0c, 0x03,
-+ 0x0c, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x60, 0xe0,
-+ 0x60, 0x60, 0xe0, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x04, 0x05, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0xe0, 0xc0, 0x00, 0x80, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x0c, 0x0f,
-+ 0x0c, 0x0c, 0x0c, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x60, 0xc0,
-+ 0x20, 0x30, 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x10, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x3f, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0x60, 0xe0, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x18, 0x1f,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x30, 0xf0,
-+ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x06, 0x06, 0x00, 0x07, 0x08, 0x18, 0x1f,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x60, 0x60, 0x00, 0xc0, 0x20, 0x30, 0xf0,
-+ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x67, 0x73, 0x0b, 0x0f,
-+ 0x0b, 0x13, 0x33, 0x67, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x38, 0x40, 0xc0,
-+ 0x40, 0x20, 0x30, 0x98, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x10, 0x03,
-+ 0x00, 0x10, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x60, 0xc0,
-+ 0x60, 0x60, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x19,
-+ 0x1a, 0x1c, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0xe0, 0x60,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x06, 0x03, 0x00, 0x3c, 0x18, 0x18, 0x19,
-+ 0x1a, 0x1c, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0x00, 0xf0, 0x60, 0xe0, 0x60,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x19, 0x1f,
-+ 0x19, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0x00, 0x00,
-+ 0x80, 0xc0, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02,
-+ 0x02, 0x34, 0x34, 0x18, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x1c, 0x16,
-+ 0x16, 0x13, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x70, 0xb0,
-+ 0xb0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x1f,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0xe0,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0e, 0x0d, 0x0c, 0x1e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x20, 0x00,
-+ 0x00, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x13, 0x23, 0x03,
-+ 0x03, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x10, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x06, 0x06,
-+ 0x03, 0x03, 0x01, 0x19, 0x19, 0x0e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x03, 0x1b, 0x37, 0x63, 0x63,
-+ 0x63, 0x63, 0x37, 0x1b, 0x03, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x60, 0xb0, 0x18, 0x18,
-+ 0x18, 0x18, 0xb0, 0x60, 0x00, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x06, 0x03,
-+ 0x03, 0x04, 0x08, 0x1c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x40, 0x80,
-+ 0x80, 0xc0, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0x60, 0xf0, 0x30, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18,
-+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0xe0, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x77, 0x33, 0x33, 0x33,
-+ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x77, 0x33, 0x33, 0x33,
-+ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xf8, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x26, 0x46, 0x07,
-+ 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-+ 0x30, 0x30, 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x1f,
-+ 0x19, 0x19, 0x19, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x30, 0x30,
-+ 0xb0, 0xb0, 0xb0, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0f,
-+ 0x0c, 0x0c, 0x0c, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-+ 0x30, 0x30, 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x10, 0x03,
-+ 0x05, 0x10, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x70,
-+ 0xb0, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x19, 0x1b, 0x1f,
-+ 0x1b, 0x1b, 0x19, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x18, 0x18,
-+ 0x18, 0x18, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x18, 0x18,
-+ 0x0f, 0x06, 0x0c, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0xe0, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24,
-+ 0x3f, 0x24, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90,
-+ 0xf0, 0x90, 0x80, 0x80, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x4a, 0x4a,
-+ 0x4b, 0x7a, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x28, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28,
-+ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x03, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0x20, 0xe8,
-+ 0x08, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x09, 0x3f, 0x25, 0x54, 0x13,
-+ 0x22, 0x07, 0x3a, 0x01, 0x06, 0x78, 0x00, 0x00,
-+ 0x30, 0xd0, 0x10, 0x20, 0xfc, 0x88, 0x50, 0xc8,
-+ 0x08, 0xe0, 0x40, 0x80, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x79, 0x17, 0x11, 0x11, 0x1a,
-+ 0x74, 0x17, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00,
-+ 0x80, 0xa0, 0x90, 0x38, 0xc8, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x32, 0x2c, 0x04, 0x0a, 0x10, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x21, 0x16, 0x10, 0x01, 0x0e, 0x73, 0x10,
-+ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x07, 0x11, 0x0a, 0x04, 0x1f,
-+ 0x61, 0x1f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0x28, 0xc8, 0x50, 0xf0,
-+ 0x0c, 0xf0, 0x00, 0x80, 0x60, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x7f, 0x04, 0x3f, 0x24,
-+ 0x24, 0x28, 0x30, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x80, 0xf8, 0x88,
-+ 0x98, 0x78, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x19, 0x76, 0x11, 0x11, 0x7d, 0x11, 0x1b,
-+ 0x36, 0x37, 0x52, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xf0, 0x50, 0xf0, 0xf0, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x1f, 0x12, 0x1f, 0x02, 0x7f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0xf0, 0x90, 0xf0, 0x80, 0xfc,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x1a,
-+ 0x73, 0x14, 0x17, 0x18, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x60, 0x90,
-+ 0xe8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x02,
-+ 0x13, 0x12, 0x25, 0x24, 0x4f, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x50, 0x98,
-+ 0xe4, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x0a, 0x0a, 0x0a,
-+ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0x88, 0xf8, 0x88, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x0f, 0x02, 0x7f, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xfc, 0xe0, 0x20,
-+ 0xe0, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x00, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x41, 0x00, 0x00,
-+ 0x20, 0x30, 0x48, 0xf4, 0x20, 0xfc, 0x50, 0x98,
-+ 0x64, 0x10, 0x64, 0x08, 0x30, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x29, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x17, 0x10,
-+ 0x10, 0x10, 0x20, 0x20, 0x4f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x88, 0x54, 0x30, 0x90, 0x50,
-+ 0x50, 0x1c, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d,
-+ 0x72, 0x12, 0x12, 0x14, 0x15, 0x3e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x20, 0x20, 0xf8, 0x88, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x28, 0x48, 0x0e, 0x12, 0x12,
-+ 0x2a, 0x44, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x88, 0x88,
-+ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x08, 0x13, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x78, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x2a, 0x48, 0x3e, 0x23, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x48, 0x9c, 0xe4, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x15, 0x65, 0x1a, 0x13, 0x29, 0x7d,
-+ 0x15, 0x19, 0x35, 0x34, 0x50, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x64, 0x1f, 0x10, 0x29, 0x7e,
-+ 0x14, 0x39, 0x36, 0x34, 0x51, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c,
-+ 0xf0, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x1e, 0x12, 0x12,
-+ 0x1e, 0x10, 0x03, 0x0c, 0x71, 0x06, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x09,
-+ 0x05, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x20,
-+ 0x40, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x09, 0x0b, 0x12, 0x3c,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x42, 0x02, 0x7f, 0x04,
-+ 0x04, 0x0f, 0x08, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x40,
-+ 0x40, 0x40, 0xc0, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x11, 0x1f, 0x12, 0x14, 0x1f,
-+ 0x14, 0x17, 0x24, 0x27, 0x44, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0xa0, 0x90, 0xfc,
-+ 0x90, 0xf0, 0x90, 0xf0, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x10, 0x17, 0x18,
-+ 0x70, 0x11, 0x11, 0x10, 0x10, 0x37, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x40, 0x40, 0xfc, 0x90,
-+ 0x90, 0x90, 0x60, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x49, 0x48, 0x4f, 0x78, 0x49,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x7f, 0x04, 0x0f, 0x03,
-+ 0x1d, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x40, 0x80, 0x60,
-+ 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x2f, 0x22,
-+ 0x3f, 0x27, 0x24, 0x27, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xe8, 0x88,
-+ 0xf8, 0xc8, 0x48, 0xc8, 0xc8, 0x58, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x08, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7e, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x20, 0x20, 0xfc, 0x48,
-+ 0x48, 0xf0, 0x90, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x12, 0x11, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x16, 0x18, 0x61, 0x06, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x90, 0x90, 0x10, 0x10,
-+ 0x10, 0x30, 0x28, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x17, 0x30, 0x50, 0x13,
-+ 0x10, 0x10, 0x10, 0x10, 0x11, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xfc, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x1f, 0x30, 0x52, 0x11,
-+ 0x11, 0x11, 0x11, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x10, 0x10, 0x10,
-+ 0x10, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x51, 0x13,
-+ 0x15, 0x11, 0x11, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x80, 0xc8, 0x48, 0x50,
-+ 0x20, 0x20, 0x10, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x17, 0x10, 0x33, 0x52, 0x13,
-+ 0x10, 0x13, 0x12, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xf0, 0x90, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x22, 0x22, 0x2f, 0x22, 0x22,
-+ 0x3f, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x48, 0x48, 0xe8, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x01, 0x3f, 0x21,
-+ 0x3f, 0x23, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xfc, 0x04, 0x84, 0x58, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x02,
-+ 0x7f, 0x04, 0x0f, 0x10, 0x03, 0x3c, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00,
-+ 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x1f, 0x14,
-+ 0x14, 0x1f, 0x11, 0x22, 0x2c, 0x40, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0xc8, 0xd0,
-+ 0xb0, 0x30, 0x24, 0xd4, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x20, 0x3e, 0x20, 0x3f,
-+ 0x24, 0x2e, 0x2d, 0x35, 0x44, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x19, 0x37, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x90, 0x90, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x04, 0x7f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x25, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x08, 0x84, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x2e, 0x20, 0x3f, 0x56,
-+ 0x25, 0x4d, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x90, 0x50, 0x50, 0x10,
-+ 0x10, 0x30, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x02, 0x07,
-+ 0x19, 0x62, 0x0c, 0x31, 0x06, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xf8,
-+ 0x28, 0x48, 0x88, 0x08, 0x10, 0xe0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x29, 0x29, 0x49, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x60, 0x50, 0x88, 0xfc, 0x08,
-+ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x3f, 0x02, 0x02, 0x07, 0x04,
-+ 0x0f, 0x08, 0x15, 0x32, 0x4a, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x40, 0xf0, 0x10,
-+ 0xfc, 0x04, 0x44, 0xa4, 0xa4, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x00, 0x7f,
-+ 0x09, 0x08, 0x08, 0x0b, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x10, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x04, 0x3f,
-+ 0x04, 0x04, 0x7f, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x09, 0x08, 0x7e, 0x09, 0x1c,
-+ 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x40, 0x78, 0x88, 0x50, 0x20, 0x40, 0xa0, 0x3c,
-+ 0x44, 0xa8, 0x18, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x08, 0x14, 0x7e,
-+ 0x0a, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0xf8, 0x48, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x10, 0xf8, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x00, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x7f, 0x05, 0x19,
-+ 0x62, 0x3f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xc0, 0x00, 0xfc, 0x40, 0x30,
-+ 0x0c, 0xf8, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x03, 0x04, 0x1c,
-+ 0x64, 0x04, 0x04, 0x05, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x08, 0x88, 0x90,
-+ 0x60, 0x40, 0x20, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x24, 0xfc, 0x24, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x17, 0x01, 0x01, 0x71, 0x10,
-+ 0x11, 0x11, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x90, 0xfc, 0xf0, 0x10, 0xf0, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00,
-+ 0x00, 0x21, 0x11, 0x11, 0x07, 0x01, 0x71, 0x11,
-+ 0x11, 0x11, 0x11, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x50, 0xf0, 0xfc, 0xf0, 0x10, 0xf0,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x08, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x27, 0x24, 0x28, 0x3f,
-+ 0x21, 0x21, 0x22, 0x2c, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x80, 0x80, 0xf8,
-+ 0x40, 0x20, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x04,
-+ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x02, 0x1a, 0x04, 0x03,
-+ 0x02, 0x0c, 0x11, 0x06, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x40, 0x40, 0x90, 0x20,
-+ 0x40, 0xc0, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x17, 0x10, 0x7f, 0x12, 0x12,
-+ 0x13, 0x16, 0x18, 0x63, 0x0c, 0x00, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0xc8, 0xa8,
-+ 0xa8, 0x30, 0x94, 0x34, 0x4c, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x04, 0x3f, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x70, 0x88, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x08, 0x08, 0x1f, 0x11, 0x3f,
-+ 0x51, 0x1f, 0x11, 0x11, 0x11, 0x13, 0x00, 0x00,
-+ 0x00, 0x78, 0xc8, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x7d, 0x12, 0x16, 0x11, 0x3a, 0x2f, 0x68,
-+ 0x2b, 0x2b, 0x3a, 0x2a, 0x04, 0x08, 0x00, 0x00,
-+ 0x50, 0x50, 0x68, 0xd8, 0x50, 0xe8, 0xfc, 0x50,
-+ 0xfc, 0x28, 0xa8, 0x94, 0x2c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x24,
-+ 0x44, 0x07, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x08,
-+ 0x60, 0x80, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x24, 0x12, 0x12, 0x4f, 0x22, 0x22, 0x04, 0x1f,
-+ 0x15, 0x15, 0x25, 0x25, 0x5f, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0x10, 0xf8,
-+ 0x54, 0x50, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x11, 0x12, 0x07, 0x02, 0x72, 0x13,
-+ 0x12, 0x10, 0x11, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xc8, 0xc0, 0x44, 0x3c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x02, 0x0f, 0x3a, 0x09, 0x09, 0x7e, 0x19, 0x1d,
-+ 0x2b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x18, 0xe4, 0x44, 0x28, 0x30, 0x00, 0x78, 0x48,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x21, 0x11, 0x11,
-+ 0x02, 0x04, 0x18, 0x61, 0x06, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x48,
-+ 0x50, 0x40, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x1f, 0x01, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7f, 0x2b, 0x3f, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2f, 0x28, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x20, 0xf8, 0x48,
-+ 0x68, 0xd8, 0xd8, 0x68, 0x48, 0xb0, 0x00, 0x00,
-+ 0x02, 0x02, 0x04, 0x08, 0x7f, 0x04, 0x04, 0x04,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x40, 0x30, 0x68, 0x84, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x06, 0x38, 0x20, 0x20, 0x3e, 0x20, 0x20,
-+ 0x20, 0x3e, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x4a,
-+ 0x4a, 0x7a, 0x4b, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0xa8, 0x98, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x21, 0x23,
-+ 0x22, 0x24, 0x28, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08,
-+ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0x68, 0x98, 0x98, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x20, 0x3f,
-+ 0x21, 0x01, 0x01, 0x01, 0x02, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1a, 0x29, 0x7e, 0x23, 0x3e,
-+ 0x22, 0x3e, 0x28, 0x24, 0x3b, 0x62, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x22, 0x22, 0x03, 0x10,
-+ 0x10, 0x13, 0x20, 0x20, 0x4f, 0x40, 0x00, 0x00,
-+ 0x0c, 0x74, 0x84, 0x88, 0x50, 0x38, 0xc0, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x1e, 0x12, 0x11, 0x1f, 0x10, 0x17,
-+ 0x14, 0x17, 0x14, 0x27, 0x24, 0x44, 0x00, 0x00,
-+ 0x10, 0x50, 0x50, 0x90, 0x50, 0xf0, 0x30, 0xd0,
-+ 0x50, 0xd0, 0x50, 0xd4, 0x54, 0xcc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3c, 0x27, 0x2c, 0x31, 0x28,
-+ 0x25, 0x24, 0x27, 0x38, 0x21, 0x23, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xa0, 0xf0, 0x0c, 0xf0, 0x20,
-+ 0xf8, 0x00, 0xfc, 0xa0, 0x30, 0xc8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x2a, 0x30, 0x2b, 0x24, 0x27,
-+ 0x24, 0x24, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0xfc,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x32, 0x28, 0x25, 0x24,
-+ 0x25, 0x24, 0x3f, 0x20, 0x21, 0x27, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xe8, 0x04, 0xf0, 0x20,
-+ 0xf0, 0x00, 0xfc, 0xa0, 0x30, 0xc8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x26, 0x29, 0x31, 0x28, 0x25, 0x24,
-+ 0x25, 0x24, 0x3a, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x18, 0xe4, 0x44, 0x28, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x00, 0x3c,
-+ 0x24, 0x3c, 0x24, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x4f, 0x48, 0x49, 0x48,
-+ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x04, 0x08, 0x0f,
-+ 0x18, 0x18, 0x28, 0x48, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x1f, 0x01, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x29, 0x24, 0x24, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x48, 0xa8, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x22, 0x12, 0x12, 0x02,
-+ 0x06, 0x1a, 0x63, 0x02, 0x02, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x88, 0x48, 0x48, 0x08,
-+ 0x18, 0x68, 0x88, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x10, 0x00, 0x07, 0x70, 0x10,
-+ 0x10, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0xc0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x29, 0x25, 0x25,
-+ 0x21, 0x29, 0x25, 0x25, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x48, 0x28, 0x28,
-+ 0x08, 0x48, 0x28, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x0c, 0x30, 0x22, 0x22, 0x22, 0x22, 0x22,
-+ 0x22, 0x3e, 0x64, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x24, 0x14, 0x18, 0x7e, 0x0a, 0x3e, 0x28, 0x3e,
-+ 0x3a, 0x1a, 0x2e, 0x49, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x48, 0x19, 0x09, 0x3f, 0x09,
-+ 0x7f, 0x09, 0x15, 0x14, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x78, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x02, 0x02, 0x02, 0x3f, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x11, 0x3f, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x06, 0x38, 0x20, 0x20, 0x20, 0x20, 0x3e,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x07, 0x14,
-+ 0x15, 0x15, 0x25, 0x25, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0x90, 0xf8, 0x08,
-+ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x70, 0x57, 0x54, 0x57, 0x54, 0x54,
-+ 0x56, 0x75, 0x49, 0x08, 0x17, 0x00, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xfc, 0xf8, 0x88, 0x78, 0xa0,
-+ 0xa8, 0xa8, 0xb0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x3d, 0x25, 0x25, 0x25, 0x25, 0x25,
-+ 0x25, 0x3d, 0x25, 0x20, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x12, 0x7d, 0x3a, 0x55, 0x1f, 0x12, 0x1f, 0x3e,
-+ 0x23, 0x3e, 0x3e, 0x24, 0x3e, 0x60, 0x00, 0x00,
-+ 0x90, 0xfc, 0xb8, 0xd4, 0xf0, 0x90, 0xf0, 0x10,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x21, 0x3f, 0x20, 0x2e,
-+ 0x20, 0x3f, 0x2e, 0x2d, 0x55, 0x0c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x08, 0x08, 0xfc, 0x08, 0x48,
-+ 0x28, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3f, 0x2b,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x10, 0x7c, 0x27, 0x24, 0x24,
-+ 0x78, 0x49, 0x0e, 0x14, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x20, 0xc0,
-+ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x2f, 0x29, 0x2f, 0x29, 0x2f,
-+ 0x28, 0x2a, 0x29, 0x2b, 0x4c, 0x31, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x78, 0x50, 0x50, 0x50, 0xfc,
-+ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x22, 0x02, 0x0b,
-+ 0x0a, 0x0a, 0x13, 0x12, 0x22, 0x22, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x2e, 0x40, 0x00, 0x00,
-+ 0x10, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x10, 0x90, 0x50, 0xe8, 0x28, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f,
-+ 0x21, 0x27, 0x21, 0x2f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8,
-+ 0x08, 0xc8, 0x08, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x00, 0x7f, 0x48, 0x4b, 0x4a, 0x4b, 0x4b,
-+ 0x4b, 0x78, 0x4f, 0x41, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0x38, 0xf8,
-+ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x01,
-+ 0x01, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x70, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x27, 0x14, 0x1f, 0x00, 0x03, 0x72, 0x13,
-+ 0x12, 0x13, 0x10, 0x17, 0x2c, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x3d, 0x4f, 0x00,
-+ 0x1f, 0x00, 0x7f, 0x02, 0x04, 0x3f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x04, 0x78, 0x38, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0b, 0x10, 0x10,
-+ 0x37, 0x50, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x18, 0xe0, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x0d, 0x12, 0x2a, 0x48, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x27, 0x3a, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x48, 0x78, 0x48, 0x48, 0x78,
-+ 0x48, 0x4c, 0x78, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x0e, 0x08, 0x7f, 0x5d, 0x5a, 0x2d, 0x52, 0x1f,
-+ 0x32, 0x5e, 0x12, 0x1e, 0x12, 0x1f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x48, 0x48, 0x50, 0x50, 0x30,
-+ 0x20, 0x30, 0x50, 0x48, 0x88, 0x04, 0x00, 0x00,
-+ 0x12, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f,
-+ 0x02, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x3e,
-+ 0x15, 0x7f, 0x04, 0x0f, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x50, 0xfc, 0x20, 0x40, 0xe0, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x04, 0x7f,
-+ 0x1f, 0x11, 0x1f, 0x15, 0x64, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x20, 0x48, 0x08, 0x10, 0x90,
-+ 0x24, 0x04, 0x08, 0x08, 0x90, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4b, 0x4a, 0x4a, 0x7a, 0x4f,
-+ 0x48, 0x48, 0x78, 0x49, 0x02, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x11, 0x00, 0x00, 0x03, 0x3c, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf8,
-+ 0x10, 0xa0, 0xc0, 0x44, 0x34, 0x0c, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x3f, 0x20, 0x41, 0x01, 0x7f,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x00, 0x00, 0x0f, 0x01, 0x01, 0x7f, 0x05,
-+ 0x05, 0x09, 0x11, 0x61, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x80, 0x00, 0x00, 0x08, 0x88, 0x90, 0x60,
-+ 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x20, 0x20, 0x07, 0x10,
-+ 0x11, 0x11, 0x22, 0x24, 0x40, 0x40, 0x00, 0x00,
-+ 0xc0, 0x20, 0x00, 0xc0, 0x48, 0x48, 0xf0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x0b,
-+ 0x0a, 0x08, 0x10, 0x10, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x30, 0x20, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x11, 0x10, 0x13, 0x7e, 0x12,
-+ 0x17, 0x10, 0x1c, 0x60, 0x03, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x40, 0xf8, 0x48, 0x48,
-+ 0xfc, 0x40, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x04, 0x04, 0x0f, 0x0c, 0x13, 0x22,
-+ 0x4c, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0xf8, 0x88, 0x08, 0x88,
-+ 0x70, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x20, 0x25, 0x38, 0x22, 0x1c, 0x02, 0x3c, 0x08,
-+ 0x7e, 0x18, 0x1c, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x20, 0x25, 0x38, 0x22, 0x1e, 0x00, 0x3e, 0x00,
-+ 0x7f, 0x0c, 0x2a, 0x2a, 0x48, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x1f, 0x11, 0x11,
-+ 0x11, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0x10,
-+ 0x10, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x11, 0x17, 0x22, 0x4f, 0x08, 0x17, 0x14, 0x37,
-+ 0x51, 0x17, 0x15, 0x1f, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xb8, 0x80, 0xc0, 0x7c, 0x90, 0x90, 0x90,
-+ 0x10, 0x90, 0x10, 0xd0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x26, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0xe0, 0x28, 0x28, 0xf0, 0x70,
-+ 0xb0, 0xa8, 0x28, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x41, 0x21, 0x22, 0x02, 0x16,
-+ 0x1b, 0x12, 0x22, 0x22, 0x42, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x78, 0x48, 0xa8, 0x98,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x29, 0x29, 0x09, 0x1a,
-+ 0x2f, 0x49, 0x10, 0x10, 0x21, 0x4e, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xe0, 0x24, 0x24, 0x1c,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x7f, 0x08, 0x08, 0x10, 0x1f,
-+ 0x2a, 0x4a, 0x0a, 0x0a, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xfc, 0x20, 0x20, 0x10, 0xf0,
-+ 0xa8, 0xa4, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3a, 0x33, 0x45, 0x1a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0x90, 0x90, 0x08, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x1b, 0x36, 0x36, 0x33, 0x52,
-+ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x08, 0x08, 0xf8, 0xa8,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x00, 0x3d,
-+ 0x03, 0x3d, 0x25, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8,
-+ 0x28, 0xc8, 0x28, 0xe8, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x09, 0x09, 0x7f, 0x09, 0x29,
-+ 0x2f, 0x29, 0x3b, 0x28, 0x46, 0x41, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x28, 0x28, 0x30,
-+ 0x50, 0x94, 0x2c, 0x44, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x22,
-+ 0x27, 0x24, 0x27, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x88,
-+ 0xc8, 0x48, 0xc8, 0x88, 0xa8, 0x78, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x28, 0x4b, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x08, 0xf8, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x2f, 0x29, 0x2f, 0x2f, 0x20,
-+ 0x2f, 0x29, 0x2f, 0x2f, 0x29, 0x4b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x28, 0x24, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x70, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3f,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x2f, 0x21, 0x3f, 0x27, 0x24,
-+ 0x27, 0x23, 0x2d, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xf8, 0xc8, 0x48,
-+ 0xe8, 0xa8, 0x48, 0x28, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7e, 0x12, 0x12, 0x12,
-+ 0x16, 0x1b, 0x62, 0x02, 0x02, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x20, 0xfc, 0xd0, 0x30, 0xc8, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x0d, 0x71, 0x1f, 0x11,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x14, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x01, 0x7f, 0x04, 0x0e, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xfc, 0x40, 0x80, 0xc0, 0x30, 0x00, 0x00,
-+ 0x00, 0x78, 0x0b, 0x10, 0x10, 0x3d, 0x05, 0x25,
-+ 0x25, 0x15, 0x1b, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x1c, 0xe0, 0x20, 0x20, 0x20, 0x38, 0x20,
-+ 0x20, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x11, 0x2a, 0x46, 0x04, 0x18,
-+ 0x61, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0xb0, 0x84, 0x7c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x12, 0x1f, 0x12,
-+ 0x33, 0x52, 0x13, 0x12, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x50, 0x48, 0xfc, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x48, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x11, 0x13, 0x10, 0x1f,
-+ 0x71, 0x11, 0x12, 0x14, 0x18, 0x33, 0x00, 0x00,
-+ 0x08, 0x30, 0xc8, 0x48, 0x10, 0xf8, 0x80, 0xfc,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x41, 0x21, 0x22, 0x02, 0x17,
-+ 0x12, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0x10, 0x10, 0x08, 0xf4,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x2f, 0x20, 0x03, 0x12,
-+ 0x13, 0x12, 0x23, 0x20, 0x43, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0x40, 0xf8, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x13, 0x02, 0x0c, 0x31, 0x01,
-+ 0x11, 0x13, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x00, 0xc0, 0x30, 0x08, 0x10,
-+ 0x10, 0x20, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x0a, 0x2b, 0x2c, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x10, 0x20, 0x78, 0x48,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x17, 0x36, 0x3a, 0x33, 0x52,
-+ 0x18, 0x17, 0x24, 0x20, 0x47, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x48,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x0f, 0x78, 0x0b, 0x1a,
-+ 0x6a, 0x0b, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xe4, 0x28, 0xb0, 0xa0,
-+ 0xa4, 0x9c, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00,
-+ 0x08, 0x4b, 0x30, 0x17, 0x30, 0x49, 0x09, 0x19,
-+ 0x28, 0x4f, 0x09, 0x09, 0x31, 0x16, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0xc8, 0x48, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x14, 0x65, 0x18, 0x1b, 0x24, 0x7c,
-+ 0x13, 0x38, 0x37, 0x34, 0x53, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc, 0x40, 0xe4,
-+ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x14, 0x7f, 0x55, 0x7f, 0x55, 0x7f, 0x00, 0x7f,
-+ 0x3e, 0x22, 0x3e, 0x24, 0x1e, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8,
-+ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x1e, 0x12,
-+ 0x22, 0x54, 0x0c, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x88, 0x88,
-+ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x21, 0x27, 0x3f, 0x24,
-+ 0x27, 0x23, 0x2e, 0x22, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xc8, 0xf8, 0x48,
-+ 0xe8, 0xa8, 0x48, 0x28, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x17, 0x00, 0x03, 0x72, 0x13,
-+ 0x10, 0x11, 0x1e, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x88, 0xd0, 0xb0, 0x88, 0x80, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x70, 0x10, 0x90, 0x90, 0x88, 0x08, 0x04, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x1f, 0x72, 0x0c, 0x1a, 0x6f, 0x0b, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x15, 0x25, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xb0, 0x84, 0xfc, 0xc0, 0xc0,
-+ 0xf8, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x12, 0x7f, 0x15, 0x11, 0x10,
-+ 0x17, 0x1a, 0x62, 0x02, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x0f, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x50, 0x88, 0x44, 0x20,
-+ 0x20, 0x00, 0x40, 0x20, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x40, 0x27, 0x20, 0x00, 0x09,
-+ 0x09, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0xfc, 0x80, 0x80, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x08, 0x2b, 0x2a, 0x3e, 0x2b, 0x4a, 0x0a, 0x3f,
-+ 0x08, 0x0b, 0x0c, 0x18, 0x61, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x24, 0x24, 0x24, 0x27,
-+ 0x24, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8,
-+ 0x48, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x11,
-+ 0x7f, 0x03, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10,
-+ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x19, 0x15, 0x15, 0x1f, 0x13,
-+ 0x15, 0x19, 0x7f, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x50, 0x50, 0x90, 0xf0, 0x90,
-+ 0x50, 0x30, 0xfc, 0x80, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x27, 0x44, 0x08, 0x08, 0x1b,
-+ 0x28, 0x48, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x11, 0x11, 0x15,
-+ 0x15, 0x15, 0x29, 0x29, 0x41, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x40, 0x20, 0x20, 0x08,
-+ 0x04, 0x04, 0x04, 0x10, 0x10, 0xf0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x12, 0x1f,
-+ 0x72, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x44, 0x44, 0x44, 0x7c, 0x47, 0x44,
-+ 0x44, 0x7c, 0x44, 0x40, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x17, 0x10, 0x3b, 0x36,
-+ 0x37, 0x52, 0x53, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8, 0x48,
-+ 0xf8, 0x48, 0xf8, 0xa0, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x32, 0x2b, 0x24, 0x26,
-+ 0x2a, 0x29, 0x31, 0x20, 0x3f, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x32, 0x2a, 0x25, 0x24,
-+ 0x2a, 0x2a, 0x30, 0x20, 0x3e, 0x23, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x1f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x05, 0x04, 0x19, 0x61, 0x02, 0x3f, 0x00, 0x7f,
-+ 0x22, 0x12, 0x06, 0x1a, 0x63, 0x06, 0x00, 0x00,
-+ 0xe0, 0x20, 0x10, 0xcc, 0x60, 0x90, 0x00, 0xf8,
-+ 0x88, 0x48, 0x18, 0x68, 0x88, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7f, 0x0a, 0x0b, 0x16, 0x1b,
-+ 0x36, 0x57, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x58, 0xe8, 0xf8, 0xe8, 0x58,
-+ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x12, 0x09, 0x3f, 0x22, 0x4f, 0x08, 0x0f, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0xe0,
-+ 0xfc, 0x00, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x22, 0x22, 0x32, 0x2c, 0x24,
-+ 0x26, 0x2a, 0x30, 0x21, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x7f, 0x01, 0x1f, 0x11,
-+ 0x1f, 0x11, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x24, 0x24, 0x3f, 0x21, 0x29,
-+ 0x29, 0x29, 0x2f, 0x28, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xf8, 0x08, 0x28,
-+ 0x28, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0b, 0x0a, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x34, 0x08, 0x18,
-+ 0x65, 0x0d, 0x14, 0x64, 0x05, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x28, 0xa8, 0xb0,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x17, 0x10, 0x31, 0x51, 0x11,
-+ 0x11, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0xa0, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x48, 0x24, 0x14, 0xf0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x11, 0x12,
-+ 0x1f, 0x10, 0x27, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x40, 0x30,
-+ 0xc8, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x17, 0x38, 0x35, 0x35, 0x51,
-+ 0x11, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x48, 0x24, 0x14, 0xf0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x25, 0x25, 0x3d,
-+ 0x25, 0x25, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x20, 0xfc, 0x90, 0xfc, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x13, 0x12, 0x3a, 0x37,
-+ 0x36, 0x52, 0x53, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0x28, 0x28, 0x3e, 0x29, 0x28, 0x48,
-+ 0x0e, 0x78, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08,
-+ 0x10, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x12, 0x34, 0x5f, 0x14,
-+ 0x17, 0x14, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x40, 0xa0, 0x98, 0xf4, 0x90,
-+ 0xf0, 0x90, 0xf0, 0x94, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x24, 0x44, 0x7f, 0x04, 0x27,
-+ 0x24, 0x24, 0x27, 0x3c, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48,
-+ 0x48, 0x48, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x12, 0x1c, 0x1f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xd0, 0x30, 0xf0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x10,
-+ 0x17, 0x15, 0x25, 0x25, 0x4f, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x28, 0x28, 0x28, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x1b, 0x72, 0x11, 0x11, 0x7c, 0x11, 0x18,
-+ 0x35, 0x34, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x10, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x7f, 0x00, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10,
-+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x18, 0x28, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x12,
-+ 0x12, 0x12, 0x14, 0x14, 0x19, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x13, 0x32, 0x52, 0x12,
-+ 0x13, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48,
-+ 0xc8, 0x48, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0a, 0x1f, 0x12, 0x32, 0x52, 0x12,
-+ 0x12, 0x12, 0x14, 0x14, 0x19, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x33, 0x52, 0x12,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x13, 0x10, 0x30, 0x57, 0x10,
-+ 0x10, 0x13, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x09, 0x09, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x44,
-+ 0x44, 0x44, 0x44, 0x7c, 0x44, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x00, 0x1f, 0x11, 0x11, 0x11,
-+ 0x1f, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x09, 0x33, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x40, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x0f, 0x08, 0x0f, 0x0f, 0x08,
-+ 0x0f, 0x07, 0x3c, 0x03, 0x06, 0x78, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x40, 0x80, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x12, 0x7f, 0x24, 0x24, 0x27,
-+ 0x78, 0x4b, 0x0c, 0x17, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0x40, 0xe4, 0x68,
-+ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x7f, 0x02, 0x0d, 0x33,
-+ 0x0d, 0x32, 0x04, 0x18, 0x60, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x00, 0x48, 0xc8,
-+ 0xb0, 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x2f, 0x42, 0x0f, 0x08, 0x0f, 0x0f,
-+ 0x0f, 0x7f, 0x0f, 0x72, 0x04, 0x19, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe8, 0x00, 0xe0, 0x20, 0xe0, 0xe0,
-+ 0xe0, 0xfc, 0xe0, 0x5c, 0x40, 0x80, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x08, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c,
-+ 0x70, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x07, 0x74, 0x54, 0x57, 0x54, 0x74, 0x57,
-+ 0x54, 0x54, 0x77, 0x54, 0x44, 0x04, 0x00, 0x00,
-+ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x88, 0x00, 0x78,
-+ 0x48, 0x28, 0x30, 0x10, 0x28, 0xc4, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x7e, 0x12, 0x12, 0x22, 0x4d, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x3a, 0x2a, 0x3a, 0x03, 0x7f,
-+ 0x02, 0x3a, 0x2a, 0x3a, 0x2b, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x23, 0x22, 0x02, 0x02,
-+ 0x0b, 0x0a, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48,
-+ 0xc8, 0x48, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x11, 0x11, 0x11, 0x21, 0x22,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x08, 0x10, 0x20, 0x80, 0x80,
-+ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7c, 0x10, 0x11, 0x11, 0x7d, 0x11,
-+ 0x11, 0x11, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28,
-+ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x13, 0x1a,
-+ 0x36, 0x56, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x70, 0x50, 0x50, 0xf8, 0x08,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x03,
-+ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80,
-+ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x18, 0x73, 0x12, 0x17, 0x7c, 0x10, 0x3b,
-+ 0x34, 0x57, 0x50, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x40, 0xe4, 0x68,
-+ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x21, 0x2f, 0x21,
-+ 0x27, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x08, 0xe8, 0x08,
-+ 0xc8, 0x48, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x04, 0x08, 0x08,
-+ 0x18, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x80, 0x88, 0x90,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x7f, 0x00, 0x1f,
-+ 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x14, 0x10, 0x7e, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0b, 0x10, 0x13,
-+ 0x32, 0x52, 0x13, 0x12, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x10, 0xd0,
-+ 0x50, 0x50, 0xd0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x09, 0x7f, 0x09,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x7d,
-+ 0x51, 0x19, 0x15, 0x1d, 0x65, 0x01, 0x00, 0x00,
-+ 0x00, 0xd8, 0x48, 0x48, 0xd8, 0x08, 0x00, 0xf8,
-+ 0x28, 0x28, 0xd0, 0x10, 0x28, 0x44, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3c,
-+ 0x03, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x49, 0x4b, 0x49, 0x4f, 0x49,
-+ 0x4b, 0x78, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x50, 0xfc, 0x50,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x18, 0x68, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x80, 0x8c, 0xf0, 0x84, 0x7c, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x02, 0x22, 0x12, 0x1f, 0x02, 0x02, 0x72, 0x12,
-+ 0x14, 0x14, 0x18, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xb8, 0x28, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x12, 0x02, 0x07, 0x74, 0x15,
-+ 0x15, 0x15, 0x15, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0xf8, 0x08, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x18, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3e,
-+ 0x22, 0x3e, 0x3d, 0x20, 0x3c, 0x21, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf8,
-+ 0x08, 0xf8, 0xf8, 0x50, 0x70, 0x8c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x0f, 0x11, 0x11, 0x3f, 0x51, 0x11,
-+ 0x11, 0x13, 0x1d, 0x11, 0x13, 0x11, 0x00, 0x00,
-+ 0x60, 0xa8, 0x24, 0x24, 0x20, 0xfc, 0x20, 0xa8,
-+ 0x28, 0x10, 0x10, 0x34, 0x4c, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x54, 0x57, 0x54, 0x54,
-+ 0x54, 0x55, 0x7e, 0x44, 0x40, 0x01, 0x00, 0x00,
-+ 0x60, 0xa8, 0xa4, 0xa4, 0xa0, 0xfc, 0xa4, 0xa8,
-+ 0xd8, 0x90, 0xb0, 0xcc, 0x8c, 0x84, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08,
-+ 0x0e, 0x78, 0x08, 0x08, 0x0b, 0x18, 0x00, 0x00,
-+ 0x80, 0x90, 0x88, 0x88, 0x80, 0xfc, 0x88, 0x88,
-+ 0x50, 0x50, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x7f, 0x00,
-+ 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x40, 0x40, 0x40, 0x40, 0xfc, 0xc0,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x2f, 0x29, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x28, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x21, 0x21, 0x21,
-+ 0x3f, 0x24, 0x24, 0x3f, 0x21, 0x02, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60,
-+ 0x50, 0x50, 0x90, 0x88, 0x08, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x08, 0x08, 0x7f,
-+ 0x00, 0x01, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x40, 0x40, 0xfc,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x54, 0x57, 0x54, 0x7c,
-+ 0x50, 0x1b, 0x14, 0x1e, 0x60, 0x01, 0x00, 0x00,
-+ 0x60, 0xb0, 0xa8, 0xa8, 0xa0, 0xfc, 0xa0, 0xa8,
-+ 0xe8, 0xb0, 0x90, 0xb4, 0xcc, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x12, 0x16, 0x2f, 0x48, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x24, 0x24, 0x25, 0x7e, 0x0c, 0x0c,
-+ 0x14, 0x14, 0x24, 0x44, 0x04, 0x0c, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0xfc, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x17, 0x1a, 0x28, 0x7f, 0x24, 0x3c,
-+ 0x24, 0x3f, 0x28, 0x24, 0x3e, 0x61, 0x00, 0x00,
-+ 0x20, 0x68, 0xa4, 0xa4, 0xa0, 0xfc, 0xa0, 0xa8,
-+ 0xe8, 0x90, 0x94, 0xac, 0xcc, 0x84, 0x00, 0x00,
-+ 0x08, 0x7e, 0x12, 0x12, 0x26, 0x5f, 0x11, 0x1f,
-+ 0x1f, 0x11, 0x1f, 0x2a, 0x25, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf0, 0x00, 0xe0,
-+ 0xe0, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x64, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0x4c, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x67, 0x00, 0x00,
-+ 0x3f, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xcc, 0x00, 0x00,
-+ 0xf8, 0x40, 0x20, 0xf0, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x48, 0x3f, 0x2a, 0x2a, 0x3f,
-+ 0x2a, 0x3f, 0x22, 0x22, 0x22, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x88, 0x30, 0xa0, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x24, 0x24,
-+ 0x24, 0x27, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48,
-+ 0x48, 0xc8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12,
-+ 0x10, 0x1d, 0x61, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xd0, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x10,
-+ 0x17, 0x18, 0x63, 0x0d, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8, 0x40,
-+ 0xfc, 0xc8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x0a, 0x12, 0x12, 0x3a, 0x0a,
-+ 0x4a, 0x2a, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x13, 0x38, 0x34, 0x34, 0x53,
-+ 0x10, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x60, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x10, 0x38, 0x37, 0x34, 0x50,
-+ 0x13, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xa0, 0xc0, 0x30, 0x4c, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x1a, 0x35, 0x35, 0x31, 0x57,
-+ 0x12, 0x12, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x3a, 0x36, 0x36, 0x52,
-+ 0x13, 0x12, 0x12, 0x14, 0x1b, 0x1c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x20, 0x28, 0xa8, 0xb0, 0xa0,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x36, 0x33, 0x50,
-+ 0x17, 0x10, 0x13, 0x1d, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8, 0x40,
-+ 0xfc, 0xc8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x12, 0x12, 0x12,
-+ 0x7f, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x50,
-+ 0xd0, 0x20, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x10, 0x1f,
-+ 0x70, 0x10, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xf8,
-+ 0x88, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7c, 0x04, 0x04, 0x05, 0x7d, 0x46, 0x40,
-+ 0x40, 0x44, 0x44, 0x3c, 0x03, 0x0c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x2b, 0x3e, 0x2a, 0x3e, 0x2d,
-+ 0x0d, 0x0d, 0x16, 0x17, 0x24, 0x43, 0x00, 0x00,
-+ 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c, 0xf0,
-+ 0x10, 0x10, 0x90, 0xd4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4a, 0x4d, 0x49, 0x79, 0x4f,
-+ 0x4a, 0x4a, 0x7b, 0x4a, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x12, 0x3a, 0x36,
-+ 0x37, 0x52, 0x52, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xa8, 0xa8, 0xa8,
-+ 0xf0, 0x90, 0x94, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x11, 0x09, 0x0b, 0x42, 0x25, 0x21, 0x01, 0x1f,
-+ 0x12, 0x12, 0x27, 0x24, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x12, 0x12, 0x14,
-+ 0x10, 0x11, 0x21, 0x22, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x80, 0x88, 0x88, 0x90, 0xa0,
-+ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x02,
-+ 0x0c, 0x74, 0x04, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x80,
-+ 0x60, 0x5c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1d, 0x62, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00, 0x00,
-+ 0xfc, 0x40, 0x50, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x02, 0x04, 0x1c,
-+ 0x64, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x80, 0x40, 0x70,
-+ 0x4c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x1d, 0x28, 0x7e, 0x2b, 0x3e, 0x2b, 0x3f,
-+ 0x23, 0x5f, 0x11, 0x1f, 0x01, 0x3f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x98, 0xa0, 0xf8, 0x20, 0xfc,
-+ 0x20, 0xf0, 0x10, 0xf0, 0xf0, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f,
-+ 0x22, 0x3f, 0x22, 0x24, 0x28, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x26, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x20, 0x24, 0xbc, 0x40, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2a, 0x3e, 0x00, 0x7e, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x14, 0x1f, 0x62, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x10, 0x15, 0x64, 0x18, 0x0a,
-+ 0x12, 0x24, 0x0c, 0x12, 0x21, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x09, 0x11, 0x19, 0x26,
-+ 0x42, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x40, 0x60, 0x58,
-+ 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x48, 0x4a, 0x49, 0x48, 0x48,
-+ 0x48, 0x7b, 0x48, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x90, 0xa0, 0x48,
-+ 0x90, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x21, 0x5f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x17, 0x10,
-+ 0x1f, 0x10, 0x27, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x00, 0xfc, 0x80, 0xf0, 0x80,
-+ 0xf8, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x15, 0x3f, 0x3d, 0x35, 0x57,
-+ 0x15, 0x14, 0x15, 0x16, 0x1c, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x50, 0x50, 0x50, 0xfc, 0x10,
-+ 0x30, 0xb0, 0xd0, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7d, 0x17, 0x15, 0x3d, 0x37,
-+ 0x36, 0x55, 0x55, 0x16, 0x1c, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x50, 0x50, 0x50, 0xfc, 0x30,
-+ 0x30, 0x30, 0xd0, 0xd4, 0x94, 0x0c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x03, 0x02,
-+ 0x12, 0x12, 0x24, 0x24, 0x4b, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7d, 0x11, 0x11, 0x11, 0x3d, 0x24, 0x65,
-+ 0x24, 0x27, 0x3d, 0x20, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x10, 0xfc, 0x10, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x02, 0x3f,
-+ 0x00, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0x40, 0xf0,
-+ 0x08, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x27, 0x49, 0x09, 0x17, 0x11, 0x31,
-+ 0x57, 0x11, 0x11, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0xc0, 0x00, 0x00, 0xfc, 0x08, 0x08,
-+ 0xc8, 0x08, 0x08, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x00, 0x3d, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68,
-+ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa8, 0xf8, 0x00, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x2e, 0x2a, 0x7f, 0x42, 0x7e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68,
-+ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0b,
-+ 0x08, 0x0b, 0x10, 0x10, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x3e, 0x2a, 0x3e, 0x27, 0x41,
-+ 0x7f, 0x05, 0x1f, 0x67, 0x04, 0x07, 0x00, 0x00,
-+ 0x70, 0x54, 0x9c, 0xf0, 0x50, 0x70, 0xcc, 0x00,
-+ 0xfc, 0x40, 0xf0, 0xcc, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2b, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x00, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x24,
-+ 0x24, 0x24, 0x24, 0x2c, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0b, 0x0f, 0x72, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xfc, 0xa0, 0xa0, 0xbc,
-+ 0xa4, 0xa4, 0x44, 0x44, 0x84, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5e, 0x08, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x48, 0x48, 0xc8,
-+ 0xa8, 0xd8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x3f, 0x09, 0x7f, 0x09, 0x3f, 0x3f, 0x7f,
-+ 0x3f, 0x29, 0x3f, 0x3f, 0x07, 0x78, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x48, 0xc8,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x52, 0x5f, 0x55, 0x55,
-+ 0x5d, 0x7d, 0x55, 0x49, 0x09, 0x13, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x10, 0xfc, 0x28, 0x68,
-+ 0xec, 0xac, 0x6c, 0x48, 0x48, 0x98, 0x00, 0x00,
-+ 0x02, 0x02, 0x07, 0x0c, 0x12, 0x21, 0x03, 0x0c,
-+ 0x7f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x20, 0x40, 0x80, 0x40, 0x30,
-+ 0xec, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x10, 0x17, 0x14, 0x17,
-+ 0x10, 0x17, 0x21, 0x2f, 0x41, 0x03, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xfc, 0x24, 0xa8, 0xb0, 0xa8,
-+ 0x24, 0xa4, 0xa4, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d,
-+ 0x71, 0x11, 0x12, 0x12, 0x17, 0x38, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x50, 0x48, 0x7c, 0x84, 0x04, 0x00, 0x00,
-+ 0x12, 0x11, 0x13, 0x7e, 0x15, 0x11, 0x11, 0x1d,
-+ 0x71, 0x11, 0x11, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x09, 0x18, 0x1c, 0x1a,
-+ 0x2b, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x09, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x29, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x48, 0x88, 0x50, 0x20,
-+ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x22,
-+ 0x5c, 0x14, 0x14, 0x16, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x54, 0x54, 0x8c, 0x00, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x09, 0x4f, 0x31, 0x11, 0x33, 0x4d, 0x09, 0x19,
-+ 0x29, 0x4b, 0x08, 0x08, 0x30, 0x17, 0x00, 0x00,
-+ 0x10, 0xfc, 0x30, 0xfc, 0x20, 0xf8, 0xf8, 0x20,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x11, 0x12, 0x3c, 0x25, 0x67,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x90, 0xa0, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x0b, 0x70, 0x11, 0x13, 0x7d, 0x11, 0x19,
-+ 0x35, 0x37, 0x50, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x90, 0xfc, 0xb0, 0xfc, 0x20, 0xf8, 0xf8, 0x20,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x12, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x02, 0x07, 0x18, 0x61, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xe0, 0x80, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x14, 0x36,
-+ 0x35, 0x55, 0x16, 0x24, 0x24, 0x4d, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x50, 0xd0,
-+ 0xd8, 0x54, 0x54, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x88, 0x94, 0x90,
-+ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x00, 0x1f, 0x11, 0x1f, 0x00, 0x3f,
-+ 0x02, 0x07, 0x7c, 0x04, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x23, 0x2e,
-+ 0x21, 0x22, 0x3f, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x48,
-+ 0x88, 0xc8, 0xf8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x29, 0x29, 0x31, 0x28, 0x27,
-+ 0x26, 0x27, 0x3a, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0xa8, 0x38, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x01, 0x1f, 0x11,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xc0, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x3f, 0x20, 0x4f, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x40, 0x80,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x7f,
-+ 0x01, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0xc0, 0x00, 0x00, 0xf8, 0x40, 0x40, 0xfc,
-+ 0x00, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x22, 0x17, 0x14, 0x07, 0x1c, 0x67, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x08, 0xc8, 0x50, 0xe0, 0x58, 0xc4, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x3f, 0x29, 0x4e, 0x12, 0x34, 0x0c,
-+ 0x12, 0x3f, 0x52, 0x12, 0x1e, 0x13, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x77, 0x55, 0x55, 0x77, 0x00, 0x3e, 0x00,
-+ 0x7f, 0x10, 0x1e, 0x22, 0x02, 0x0f, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x79, 0x11, 0x17, 0x19, 0x11,
-+ 0x37, 0x51, 0x11, 0x11, 0x1e, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0xd0, 0x10, 0x10, 0xf8, 0x14, 0x14,
-+ 0xf0, 0x10, 0x10, 0xd0, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x18, 0x25, 0x45, 0x01, 0x3f,
-+ 0x00, 0x08, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0x00, 0xf8,
-+ 0x20, 0x20, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x3a, 0x37,
-+ 0x34, 0x53, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xe8, 0x50, 0xd0, 0xa8, 0xc4,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x37,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x17, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x50, 0xf0, 0x50, 0xf0, 0xf8,
-+ 0xf0, 0x50, 0xf0, 0x50, 0xf0, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x0a, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf0, 0x40, 0xf8,
-+ 0x40, 0xfc, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3f, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x30, 0xd0, 0x90, 0x94, 0xb4, 0xf4, 0xb8, 0xd0,
-+ 0xf0, 0xa8, 0xa8, 0xc8, 0xc4, 0x84, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x01, 0x13,
-+ 0x16, 0x2a, 0x25, 0x45, 0x48, 0x40, 0x00, 0x00,
-+ 0x80, 0x38, 0x08, 0xb8, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x24, 0x94, 0x54, 0x44, 0x04, 0x18, 0x00, 0x00,
-+ 0x08, 0x7f, 0x49, 0x7f, 0x08, 0x3e, 0x08, 0x7f,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x48, 0x49,
-+ 0x4e, 0x7b, 0x4a, 0x42, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8,
-+ 0x68, 0x88, 0x08, 0x28, 0xe8, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x18, 0x35, 0x37, 0x34, 0x50,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x1c,
-+ 0x73, 0x12, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x27, 0x00, 0x10,
-+ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x01, 0x13,
-+ 0x16, 0x1b, 0x22, 0x22, 0x41, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x48, 0x88, 0x08, 0x28, 0xe8, 0x30, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x27, 0x04, 0x17,
-+ 0x1a, 0x13, 0x22, 0x23, 0x42, 0x42, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0xfc, 0x04, 0xf8,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x07, 0x18, 0x6f, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xf8, 0xc8, 0x08, 0x48, 0xc8, 0x70, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x14, 0x19,
-+ 0x37, 0x55, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8,
-+ 0x28, 0xc8, 0x08, 0x28, 0xe8, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3f, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x24, 0xf8, 0x20, 0xf8, 0x20,
-+ 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x0f, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x20,
-+ 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x44, 0xf4, 0x28, 0xe8, 0x54, 0xe4,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x48, 0x4f, 0x48, 0x48,
-+ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x08, 0x1c, 0x1a, 0x1b,
-+ 0x29, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0x40, 0x64, 0xa4, 0xa8,
-+ 0xb0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x13, 0x19, 0x37, 0x35,
-+ 0x33, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x50, 0xfc, 0x50,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x88, 0xe8, 0x28, 0x28, 0xe8,
-+ 0xb0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1f, 0x1a,
-+ 0x2a, 0x28, 0x49, 0x0a, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0x20, 0x20, 0xfc, 0x60,
-+ 0x70, 0xb0, 0x28, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x09, 0x37, 0x24, 0x27, 0x24, 0x37, 0x20,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x80, 0x00, 0xf8, 0x48, 0xc8, 0x48, 0xd8, 0x08,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x2d, 0x77, 0x3f, 0x0f, 0x0f, 0x09,
-+ 0x0f, 0x1f, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0xf8, 0xe0, 0xe0, 0x20,
-+ 0xe0, 0xf0, 0xf0, 0x14, 0xf4, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x0f, 0x48, 0x23,
-+ 0x2a, 0x0b, 0x12, 0x13, 0x22, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x48, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x02, 0x0c, 0x32, 0x01, 0x02, 0x0c, 0x7f, 0x01,
-+ 0x1f, 0x09, 0x05, 0x05, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x30, 0x48, 0x80, 0xc0, 0x30, 0xec, 0x00,
-+ 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x10, 0x1b, 0x24, 0x27, 0x78, 0x13, 0x7c,
-+ 0x13, 0x54, 0x39, 0x32, 0x1c, 0x60, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8,
-+ 0xf8, 0xa8, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x4f, 0x4b, 0x4a, 0x4a,
-+ 0x4b, 0x7a, 0x4b, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0xfc, 0x58, 0xd8, 0xe8,
-+ 0xf8, 0xe8, 0x58, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7c, 0x55, 0x55, 0x7d, 0x55, 0x55, 0x7d,
-+ 0x55, 0x11, 0x11, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x20, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x04, 0x03, 0x7f,
-+ 0x01, 0x03, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0xc0, 0x00, 0xfc,
-+ 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x20, 0x7f, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x71, 0x19, 0x15, 0x75, 0x41, 0x4f, 0x71,
-+ 0x53, 0x13, 0x15, 0x19, 0x11, 0x61, 0x00, 0x00,
-+ 0x00, 0x38, 0x48, 0x48, 0xb8, 0x20, 0xe0, 0x38,
-+ 0xa8, 0x48, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x22, 0x12, 0x0c, 0x04, 0x06,
-+ 0x0a, 0x09, 0x11, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x02, 0x22, 0x12,
-+ 0x0c, 0x04, 0x0c, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x08, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x07, 0x04, 0x04, 0x06,
-+ 0x09, 0x09, 0x08, 0x09, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0xc4, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x00, 0xf8, 0x10, 0x20,
-+ 0x40, 0x40, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x50, 0x12,
-+ 0x12, 0x12, 0x12, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x90,
-+ 0x90, 0x90, 0x90, 0x94, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x7e, 0x00, 0x01, 0x7f, 0x14,
-+ 0x14, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x10, 0x10, 0xfc, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x34, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x1f, 0x04, 0x7f,
-+ 0x04, 0x1b, 0x60, 0x06, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf0, 0x40, 0xfc,
-+ 0x40, 0x30, 0x8c, 0x00, 0x80, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12,
-+ 0x7f, 0x2c, 0x2d, 0x33, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0xc8, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x3f, 0x28, 0x5f, 0x14, 0x3f, 0x64,
-+ 0x3f, 0x24, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x3f, 0x02, 0x7f, 0x04, 0x1f,
-+ 0x60, 0x0f, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x80, 0xfc, 0x40, 0xf0,
-+ 0x4c, 0xc0, 0x40, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x4a, 0x4f, 0x4a, 0x4a, 0x4a,
-+ 0x4b, 0x7a, 0x4f, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0xa8, 0xa8, 0xb8,
-+ 0x28, 0x48, 0xfc, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x01, 0x17, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x17,
-+ 0x12, 0x1a, 0x63, 0x02, 0x03, 0x02, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xfc,
-+ 0xa0, 0xa8, 0x18, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x04, 0x0e, 0x03, 0x1c, 0x08,
-+ 0x7f, 0x12, 0x34, 0x0c, 0x1a, 0x61, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x40, 0x80, 0xc0, 0x30, 0x20,
-+ 0xfc, 0x48, 0xd0, 0x30, 0x68, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x00, 0x00, 0x7f,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x00, 0x00, 0xfc,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x0f, 0x08, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xe0, 0x20, 0xe0,
-+ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22,
-+ 0x3f, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x88, 0x04, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x0f, 0x09, 0x0f, 0x01, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x2f, 0x29,
-+ 0x4f, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0x88, 0x48, 0x50, 0x20, 0x54,
-+ 0x8c, 0x04, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x17, 0x3a, 0x37, 0x37, 0x52,
-+ 0x13, 0x13, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xfc, 0x50, 0xf0, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x33, 0x55,
-+ 0x18, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x28, 0xfc, 0x20, 0xe8, 0x28, 0xd0, 0x54, 0xec,
-+ 0x84, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7f, 0x12, 0x12, 0x13, 0x1a,
-+ 0x70, 0x17, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0xf8, 0xa8, 0xa8, 0x38, 0x58,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x04, 0x7f, 0x12, 0x1f, 0x12,
-+ 0x1e, 0x13, 0x1e, 0x62, 0x02, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88,
-+ 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x00,
-+ 0x7f, 0x0c, 0x2a, 0x2a, 0x49, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x7f, 0x14, 0x1f, 0x34,
-+ 0x5f, 0x14, 0x1f, 0x14, 0x1f, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x40, 0x20, 0x20, 0x07, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x23, 0x22, 0x03, 0x10,
-+ 0x13, 0x10, 0x27, 0x20, 0x41, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x08, 0x0b,
-+ 0x1a, 0x1b, 0x2a, 0x2b, 0x4a, 0x48, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x08, 0xe8,
-+ 0x28, 0xe8, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x0b, 0x42, 0x27, 0x29, 0x03, 0x12,
-+ 0x17, 0x2a, 0x23, 0x42, 0x43, 0x42, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x80, 0xfc, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x13, 0x10, 0x17, 0x7d, 0x11,
-+ 0x11, 0x14, 0x19, 0x66, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x00, 0xfc, 0xf0, 0x10,
-+ 0xf8, 0xc8, 0xb0, 0x90, 0x8c, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20,
-+ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3f, 0x24, 0x3f,
-+ 0x20, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x80, 0x00, 0x78, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x3f, 0x02, 0x7f, 0x04, 0x07,
-+ 0x0c, 0x0f, 0x14, 0x27, 0x44, 0x07, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xf8, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x25, 0x42, 0x3f, 0x01,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xf8, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x45, 0x3f, 0x20, 0x4f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xfc, 0x08, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x3f, 0x24, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x48, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x17, 0x0c, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x29, 0x4a, 0x0b, 0x00, 0x00,
-+ 0x1c, 0xe4, 0xa8, 0x50, 0xfc, 0x40, 0xfc, 0x40,
-+ 0x78, 0xc8, 0xb0, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x7f, 0x01,
-+ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x23, 0x3e, 0x23,
-+ 0x3e, 0x08, 0x7f, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x90, 0x08, 0xfc, 0x48, 0x68,
-+ 0xd8, 0xd8, 0x68, 0x68, 0x48, 0xd8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3c, 0x27, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x11, 0x3d, 0x25, 0x35, 0x2d, 0x2d, 0x7f,
-+ 0x24, 0x2d, 0x2d, 0x2d, 0x25, 0x4f, 0x00, 0x00,
-+ 0x10, 0xf0, 0x50, 0xfc, 0x30, 0xe0, 0x5c, 0xe0,
-+ 0x00, 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x3f, 0x20, 0x4f,
-+ 0x00, 0x3f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x08, 0xe0,
-+ 0x00, 0xfc, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x3e, 0x48, 0x7f, 0x14, 0x3f, 0x68,
-+ 0x3e, 0x28, 0x3e, 0x28, 0x3f, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x7f, 0x12, 0x1f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xfc, 0x40, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x27, 0x15, 0x17, 0x00, 0x0f, 0x73, 0x12,
-+ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xf8, 0x00, 0xfc, 0xf0, 0x10,
-+ 0xf8, 0xc8, 0xb0, 0x88, 0x80, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x27, 0x26, 0x7b, 0x12, 0x7f,
-+ 0x12, 0x55, 0x39, 0x31, 0x1f, 0x60, 0x00, 0x00,
-+ 0x10, 0xd0, 0x90, 0xdc, 0x60, 0xc0, 0x9c, 0xc0,
-+ 0x00, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x27,
-+ 0x24, 0x27, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21,
-+ 0x2f, 0x23, 0x25, 0x29, 0x21, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08,
-+ 0xe8, 0x88, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x22,
-+ 0x27, 0x21, 0x2f, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x88,
-+ 0xc8, 0x08, 0xe8, 0x88, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x28, 0x31, 0x2a, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x90, 0x10, 0x20, 0x78, 0x48,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x09, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x08, 0x7e, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0xf8, 0x28, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x10, 0xf8, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x1b, 0x28, 0x7e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x39, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0xf0, 0x90, 0x90, 0xf0,
-+ 0x80, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x7e, 0x08, 0x7e,
-+ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0xf0, 0x90, 0x90, 0xf0,
-+ 0x80, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x1a,
-+ 0x06, 0x05, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0xc4, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1f, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x40,
-+ 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x17,
-+ 0x10, 0x10, 0x2f, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x80, 0x80, 0xf8, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x11, 0x1f, 0x09, 0x3f, 0x2f, 0x22, 0x3f,
-+ 0x29, 0x2f, 0x2f, 0x2f, 0x39, 0x41, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x10, 0xfc, 0x20, 0x20, 0xbc,
-+ 0x48, 0xa8, 0x10, 0xb0, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x01, 0x7c, 0x10, 0x10, 0x13, 0x7c, 0x10,
-+ 0x10, 0x11, 0x1d, 0x62, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0xa0, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x49, 0x29, 0x29, 0x0f, 0x1c,
-+ 0x2f, 0x4c, 0x12, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0xbc, 0xa4,
-+ 0xbc, 0x44, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x79, 0x49, 0x49, 0x79, 0x49, 0x49, 0x79,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x06, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf8,
-+ 0x48, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x7f, 0x04, 0x04,
-+ 0x0f, 0x0c, 0x14, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x4c, 0x2a, 0x1b, 0x6c, 0x19, 0x08,
-+ 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0x80, 0x80, 0xfc, 0xb0, 0x30,
-+ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x14, 0x1d, 0x16, 0x14, 0x13,
-+ 0x13, 0x13, 0x22, 0x23, 0x43, 0x1c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0xfc, 0xf8, 0xf8, 0xfc, 0xf0,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x14, 0x14, 0x1d, 0x16,
-+ 0x14, 0x14, 0x24, 0x24, 0x44, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x01, 0x3e, 0x00, 0x00, 0x7f, 0x14, 0x14,
-+ 0x14, 0x15, 0x23, 0x20, 0x41, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x22, 0x14, 0x3f, 0x24, 0x28,
-+ 0x32, 0x24, 0x39, 0x22, 0x4c, 0x33, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x24, 0x2f, 0x29, 0x2f, 0x29,
-+ 0x2f, 0x26, 0x2d, 0x35, 0x44, 0x0d, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x19, 0x61, 0x01, 0x09,
-+ 0x09, 0x09, 0x09, 0x09, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x53, 0x11,
-+ 0x11, 0x10, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08,
-+ 0x10, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x02, 0x07, 0x18, 0x61, 0x1f, 0x10, 0x13, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0x00, 0xfc, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x60, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x04, 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x00, 0x1e, 0x12, 0x12, 0x1e, 0x01, 0x7f, 0x04,
-+ 0x18, 0x7e, 0x12, 0x12, 0x1e, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0xf0, 0x00, 0xfc, 0x40,
-+ 0x30, 0xfc, 0x90, 0x90, 0xf0, 0x90, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x07, 0x04, 0x07, 0x04, 0x7f,
-+ 0x09, 0x1f, 0x61, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xc0, 0x40, 0xc0, 0x40, 0xfc,
-+ 0x20, 0xf0, 0x0c, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x02, 0x04, 0x18, 0x7f, 0x00,
-+ 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x80, 0x40, 0x20, 0xfc, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x13, 0x7d, 0x25, 0x25, 0x24,
-+ 0x7b, 0x48, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xf8, 0x08, 0xf8, 0x90,
-+ 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x21, 0x5f, 0x02, 0x0c, 0x7f,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x40, 0x20, 0xfc,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x17, 0x54, 0x54, 0x57, 0x55,
-+ 0x54, 0x7c, 0x44, 0x40, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x06, 0x01, 0x07, 0x39, 0x02, 0x7f, 0x04, 0x0f,
-+ 0x18, 0x28, 0x48, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x20, 0xc0, 0x60, 0x10, 0x00, 0xfc, 0x80, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00,
-+ 0x11, 0x15, 0x65, 0x19, 0x0d, 0x13, 0x7f, 0x01,
-+ 0x3f, 0x08, 0x0c, 0x12, 0x21, 0x46, 0x00, 0x00,
-+ 0x20, 0x28, 0xc8, 0x30, 0x30, 0x48, 0xfc, 0x10,
-+ 0xfc, 0x90, 0xa0, 0x44, 0xb4, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x0f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x08, 0xf8,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x10, 0x13, 0x12, 0x1f,
-+ 0x72, 0x13, 0x10, 0x17, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x10, 0x1c, 0x14,
-+ 0x14, 0x14, 0x27, 0x24, 0x44, 0x1b, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0x90,
-+ 0xf0, 0x90, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x23, 0x3e,
-+ 0x28, 0x24, 0x26, 0x3a, 0x61, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0x50, 0x50, 0x50, 0xfc, 0x30,
-+ 0x30, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e,
-+ 0x12, 0x7f, 0x14, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xc8, 0x78, 0x48, 0x48, 0x78,
-+ 0x48, 0xc8, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x2b, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x90, 0xfc, 0x90, 0x88, 0x04, 0x04, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x1f, 0x09, 0x7f, 0x09, 0x0f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xe0, 0x30, 0xfc, 0x20, 0xe0,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x16, 0x7e, 0x11, 0x1a, 0x37, 0x34,
-+ 0x33, 0x52, 0x53, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xd4, 0x48, 0xd4, 0xfc, 0x50,
-+ 0xfc, 0x28, 0x28, 0x90, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x09, 0x28, 0x2b, 0x28, 0x4f,
-+ 0x0c, 0x0b, 0x0a, 0x12, 0x12, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x44, 0xf8, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x12, 0x0c, 0x7f, 0x19, 0x6d,
-+ 0x16, 0x6d, 0x15, 0x64, 0x04, 0x1b, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x2f, 0x40, 0x3f, 0x01,
-+ 0x01, 0x1a, 0x06, 0x05, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xe0, 0x20,
-+ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x0b, 0x42, 0x25, 0x20, 0x07, 0x00,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x14, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x11, 0x15, 0x65, 0x19, 0x15, 0x7f, 0x02, 0x7f,
-+ 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x21, 0x00, 0x00,
-+ 0x20, 0x28, 0xc8, 0x30, 0x28, 0xfc, 0xa4, 0xfc,
-+ 0x88, 0x48, 0x50, 0x20, 0x54, 0x8c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x08, 0x0c, 0x1a,
-+ 0x2a, 0x48, 0x09, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f,
-+ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x07, 0x00, 0x00,
-+ 0x60, 0x80, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec,
-+ 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x09, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1b, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0xd0, 0x30, 0xc8, 0x40, 0xfc, 0xa0, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x12, 0x1a, 0x2a, 0x4f, 0x14, 0x15, 0x3d, 0x62,
-+ 0x25, 0x3f, 0x2a, 0x2b, 0x32, 0x22, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0x7c, 0x48, 0xc8, 0x28,
-+ 0x28, 0xb0, 0x90, 0x30, 0xc8, 0x84, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x3f, 0x09, 0x09, 0x7f, 0x09,
-+ 0x09, 0x08, 0x15, 0x15, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x7f, 0x00, 0x3e, 0x00, 0x3e,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x0f, 0x09, 0x0f, 0x7f, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x28,
-+ 0x2f, 0x28, 0x38, 0x28, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80,
-+ 0x80, 0x84, 0x84, 0x7c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x70, 0xd0, 0x50, 0x50, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x4b, 0x2b, 0x2c, 0x08, 0x7f, 0x14,
-+ 0x14, 0x15, 0x16, 0x25, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x28, 0xfc, 0x20, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1a, 0x28, 0x7e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x28, 0x25, 0x3b, 0x62, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3e, 0x28, 0x3e, 0x29, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x50, 0x88, 0xfc, 0x08,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x15,
-+ 0x05, 0x05, 0x09, 0x09, 0x11, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0x20, 0x20, 0x50, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x02, 0x03, 0x0c, 0x7f, 0x09, 0x0f, 0x0f, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0xe0, 0x20, 0xe0, 0xe0, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x0a, 0x09, 0x09, 0x17, 0x10, 0x30, 0x51, 0x11,
-+ 0x13, 0x15, 0x1c, 0x12, 0x12, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xf8, 0x08,
-+ 0xfc, 0x54, 0xac, 0x84, 0x04, 0x18, 0x00, 0x00,
-+ 0x09, 0x08, 0x0f, 0x10, 0x13, 0x30, 0x57, 0x13,
-+ 0x11, 0x1f, 0x11, 0x17, 0x11, 0x13, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8,
-+ 0x24, 0xfc, 0xa8, 0x10, 0x6c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x13, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x88, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xc0, 0x40, 0x40, 0xc0,
-+ 0x40, 0xc0, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x07, 0x04, 0x3f, 0x27, 0x3d, 0x23, 0x2a,
-+ 0x2a, 0x3b, 0x3a, 0x2b, 0x4c, 0x30, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xa0, 0x3c, 0xe0, 0x28, 0x28,
-+ 0xb0, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x13, 0x1d,
-+ 0x70, 0x10, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x14, 0x15, 0x16, 0x7c, 0x13, 0x12, 0x13, 0x1d,
-+ 0x77, 0x11, 0x13, 0x12, 0x14, 0x39, 0x00, 0x00,
-+ 0x00, 0xfc, 0x28, 0x90, 0x90, 0x7c, 0x98, 0x50,
-+ 0xdc, 0x50, 0x50, 0xf0, 0x90, 0x0c, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x13, 0x1e,
-+ 0x12, 0x7f, 0x12, 0x11, 0x21, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x7c, 0xa8, 0x30, 0x20,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x09, 0x08, 0x2b, 0x28, 0x3d, 0x28, 0x4b, 0x0d,
-+ 0x18, 0x6f, 0x08, 0x0b, 0x08, 0x09, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xe8,
-+ 0xa4, 0xfc, 0xe8, 0x94, 0xac, 0xc4, 0x00, 0x00,
-+ 0x20, 0x27, 0x38, 0x22, 0x1e, 0x11, 0x1e, 0x28,
-+ 0x7e, 0x08, 0x14, 0x13, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0x20, 0xfc, 0x28, 0xb0,
-+ 0xa0, 0xb8, 0xa0, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x05, 0x09, 0x09, 0x19,
-+ 0x35, 0x55, 0x11, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x10, 0x14, 0x14, 0xcc, 0x0c, 0x04, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x06, 0x38,
-+ 0x7f, 0x08, 0x0e, 0x78, 0x08, 0x1b, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x90, 0x88,
-+ 0xfc, 0x48, 0x50, 0x24, 0xd4, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x54, 0x57, 0x54, 0x7f,
-+ 0x53, 0x18, 0x14, 0x1f, 0x60, 0x01, 0x00, 0x00,
-+ 0x90, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0xa4,
-+ 0xfc, 0xa8, 0xd8, 0x94, 0xec, 0x84, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7e, 0x03, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x38, 0x07, 0x78, 0x03, 0x38, 0x07, 0x3b,
-+ 0x01, 0x3f, 0x29, 0x2f, 0x39, 0x2b, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8,
-+ 0x24, 0xfc, 0xa8, 0x14, 0x6c, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x12, 0x14, 0x12, 0x1a,
-+ 0x77, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x88, 0xa8, 0xa8, 0xc8,
-+ 0xf8, 0xc8, 0xa8, 0x98, 0x88, 0xb0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x0c, 0x08, 0x1f, 0x12, 0x2a,
-+ 0x4a, 0x3f, 0x07, 0x0a, 0x32, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x48, 0x48,
-+ 0x88, 0xe8, 0x08, 0xc8, 0x28, 0x30, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x0b, 0x3e, 0x2b,
-+ 0x3e, 0x08, 0x7f, 0x0a, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0xc8, 0x58, 0x58, 0xe8, 0xf8,
-+ 0xe8, 0xd8, 0x58, 0x48, 0x48, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x3f, 0x00,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x79, 0x4a, 0x4a, 0x4d, 0x48,
-+ 0x48, 0x78, 0x49, 0x42, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x20,
-+ 0x40, 0x80, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x5f, 0x52, 0x53, 0x5e,
-+ 0x50, 0x7f, 0x50, 0x41, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0x28, 0xa8, 0x28, 0xc8, 0x58,
-+ 0x80, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x1b, 0x34, 0x37,
-+ 0x32, 0x53, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0xa0, 0xfc, 0xc8, 0x50, 0xc0, 0xf8,
-+ 0xa8, 0x38, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x01, 0x3c,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1e, 0x32,
-+ 0x52, 0x12, 0x12, 0x1e, 0x10, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1b,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x03,
-+ 0x0d, 0x79, 0x07, 0x0d, 0x31, 0x03, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x80,
-+ 0x60, 0x3c, 0xc0, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x08,
-+ 0x0c, 0x12, 0x13, 0x7d, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x47, 0x0c, 0x32, 0x03,
-+ 0x0c, 0x7f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x40, 0x80, 0x80,
-+ 0x70, 0xec, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x39, 0x29, 0x2f, 0x39, 0x29, 0x2f, 0x39,
-+ 0x29, 0x2a, 0x2a, 0x2f, 0x28, 0x58, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0xe8, 0x28, 0x28, 0xe8, 0x28,
-+ 0x28, 0xa8, 0xf8, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x12, 0x1f, 0x11, 0x10,
-+ 0x17, 0x14, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x02, 0x21, 0x11, 0x17, 0x00, 0x02, 0x02, 0x72,
-+ 0x13, 0x12, 0x10, 0x18, 0x27, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x80, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x03, 0x04, 0x04, 0x08, 0x10,
-+ 0x20, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x40, 0x40,
-+ 0xc0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x11, 0x11, 0x3f, 0x51, 0x11,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x24, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x10,
-+ 0x11, 0x11, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0xe0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x04, 0x04, 0x06, 0x0a, 0x09,
-+ 0x09, 0x08, 0x10, 0x10, 0x23, 0x4c, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x40, 0x40, 0xf0, 0x10, 0x10,
-+ 0x20, 0xa0, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x07, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49,
-+ 0x7a, 0x4a, 0x42, 0x04, 0x09, 0x16, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x20, 0x20, 0xf8, 0x88, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f,
-+ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x10, 0xe0, 0x00, 0x00,
-+ 0x02, 0x07, 0x08, 0x3f, 0x00, 0x0f, 0x00, 0x1f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x7f, 0x08, 0x4a, 0x2b, 0x2c,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x1b, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x50, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x29, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0xf8, 0x88, 0x88,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x31, 0x09,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0x10, 0x10, 0xfc, 0x00, 0x88, 0x88, 0x50,
-+ 0x60, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00,
-+ 0x20, 0x17, 0x12, 0x42, 0x22, 0x23, 0x03, 0x12,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x53, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x20, 0x20, 0x78, 0x08, 0x90,
-+ 0x90, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x22, 0x01, 0x09,
-+ 0x08, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x10, 0x10, 0x10, 0x10,
-+ 0x90, 0xa0, 0xa0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x03, 0x0c, 0x31, 0x02, 0x0d, 0x71, 0x01,
-+ 0x11, 0x12, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x10,
-+ 0x10, 0xa0, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x13, 0x10, 0x12, 0x7d, 0x11,
-+ 0x10, 0x14, 0x19, 0x66, 0x00, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x68, 0x70,
-+ 0x50, 0xd0, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x04, 0x09, 0x11,
-+ 0x3f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x80, 0x88, 0x78, 0x00,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x48, 0x14, 0x1e, 0x12, 0x1e,
-+ 0x1e, 0x12, 0x7e, 0x06, 0x1a, 0x66, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x90, 0x70, 0xf0, 0x10, 0xf0,
-+ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x5f, 0x04, 0x04,
-+ 0x06, 0x0a, 0x09, 0x10, 0x23, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xe0, 0x20, 0x40,
-+ 0xf0, 0x10, 0x20, 0xc0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2b, 0x49, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xb8, 0xc8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d,
-+ 0x08, 0x2c, 0x2b, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x10, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x9c, 0xf0, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x20, 0x27, 0x24, 0x24, 0x24, 0x24, 0x27, 0x24,
-+ 0x24, 0x24, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x7f,
-+ 0x02, 0x02, 0x04, 0x08, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x40, 0x20, 0xf0, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10,
-+ 0x10, 0x17, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x80, 0xfc, 0x80,
-+ 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x20, 0x20,
-+ 0x3f, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20,
-+ 0xe0, 0x20, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x0f,
-+ 0x79, 0x09, 0x09, 0x09, 0x09, 0x19, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x7a, 0x17, 0x15, 0x15, 0x1b,
-+ 0x72, 0x12, 0x15, 0x19, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x90, 0x94, 0x14, 0x0c, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x7f, 0x04, 0x08, 0x1f, 0x61,
-+ 0x1f, 0x01, 0x3f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x60, 0x98, 0x04,
-+ 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x4a, 0x23, 0x22, 0x0b, 0x0a, 0x13,
-+ 0x21, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x11,
-+ 0x19, 0x15, 0x25, 0x21, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x08, 0xf8, 0x40,
-+ 0x48, 0x48, 0x50, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3e, 0x00, 0x3f,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x41, 0x22, 0x27, 0x02, 0x13,
-+ 0x12, 0x13, 0x20, 0x25, 0x44, 0x48, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x12, 0x13, 0x2d, 0x4f, 0x11, 0x35, 0x55, 0x15,
-+ 0x1e, 0x1f, 0x00, 0x7f, 0x19, 0x63, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xe8, 0x28, 0xe8, 0x28, 0xf8,
-+ 0x20, 0xf0, 0x00, 0xfc, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x07, 0x08, 0x11, 0x3f, 0x51, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x1f,
-+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xe0,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x1f,
-+ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xe0,
-+ 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x01, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x11, 0x17, 0x31, 0x51, 0x11,
-+ 0x1f, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20,
-+ 0xfc, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x12, 0x31, 0x51, 0x1f,
-+ 0x10, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x48, 0x50, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x1f, 0x11, 0x33, 0x55, 0x19,
-+ 0x17, 0x14, 0x15, 0x15, 0x15, 0x14, 0x00, 0x00,
-+ 0x30, 0xc0, 0x80, 0xfc, 0x20, 0xf0, 0x28, 0xe4,
-+ 0xf8, 0x08, 0xe8, 0x28, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x20, 0x2d, 0x23, 0x22, 0x24, 0x28, 0x3f,
-+ 0x24, 0x04, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x80, 0x90, 0x10, 0x10, 0x90, 0x90, 0x10, 0xf0,
-+ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x14, 0x14, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x14, 0x15, 0x26, 0x45, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x50, 0x50, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x50, 0x50, 0x94, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x04,
-+ 0x7f, 0x00, 0x04, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40,
-+ 0xfc, 0x00, 0x40, 0x20, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x40, 0x58, 0x46, 0x41, 0x41, 0x42,
-+ 0x44, 0x48, 0x50, 0x7f, 0x40, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x88, 0x88, 0x08, 0x88, 0x48,
-+ 0x28, 0x28, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x10, 0x7c, 0x11, 0x12, 0x12,
-+ 0x1f, 0x12, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x88, 0x08, 0x30, 0x10,
-+ 0xfc, 0x94, 0x94, 0xa4, 0xa4, 0xcc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x2f, 0x20, 0x20, 0x27, 0x20,
-+ 0x20, 0x20, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x80, 0x80, 0xf0, 0x80,
-+ 0x80, 0x80, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x33, 0x22, 0x2a, 0x2b, 0x2a, 0x2a, 0x2b,
-+ 0x2a, 0x3b, 0x6a, 0x13, 0x16, 0x20, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0x28, 0xa8, 0xf0, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49,
-+ 0x49, 0x79, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x1c, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x0f, 0x01, 0x7f, 0x04, 0x1f, 0x64, 0x07,
-+ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0x60, 0x80, 0x00, 0xfc, 0x40, 0xf0, 0x4c, 0xc0,
-+ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x00, 0x13, 0x11, 0x10, 0x7f, 0x10, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0xf8, 0x20, 0xa0, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xa0, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x56, 0x55, 0x55, 0x57,
-+ 0x54, 0x7c, 0x44, 0x41, 0x02, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x48, 0x48, 0x50, 0xfc,
-+ 0x40, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x78, 0x08, 0x0f, 0x78, 0x4b, 0x42, 0x7a,
-+ 0x4b, 0x4a, 0x08, 0x08, 0x17, 0x60, 0x00, 0x00,
-+ 0x40, 0x50, 0x88, 0xfc, 0x44, 0xf8, 0x48, 0x48,
-+ 0xf8, 0x50, 0x48, 0x7c, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x7b, 0x09, 0x09, 0x79, 0x49, 0x43, 0x79,
-+ 0x49, 0x49, 0x09, 0x09, 0x17, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0xf0, 0x50, 0xf0, 0xf8, 0xf0,
-+ 0x50, 0xf0, 0x50, 0xf0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x13, 0x38, 0x34, 0x34, 0x57,
-+ 0x10, 0x10, 0x10, 0x11, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x90, 0x88, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x09, 0x09, 0x0f, 0x72, 0x04,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x90, 0x54, 0x54, 0x0c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04, 0x0a,
-+ 0x12, 0x62, 0x12, 0x12, 0x22, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x20,
-+ 0x10, 0x0c, 0x90, 0x48, 0x48, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x78, 0x12, 0x11, 0x11, 0x1f,
-+ 0x70, 0x10, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x48, 0x50, 0xfc,
-+ 0x40, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x3f, 0x0a, 0x0a, 0x7f, 0x09, 0x1f,
-+ 0x22, 0x47, 0x3c, 0x04, 0x05, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x19, 0x36, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xa0, 0xf0, 0xa8, 0xe4,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x23, 0x02, 0x10,
-+ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x4f, 0x30, 0x10, 0x30, 0x48, 0x0b, 0x18,
-+ 0x28, 0x48, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x44, 0x28, 0x17, 0x32, 0x49, 0x09, 0x1f,
-+ 0x28, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x48, 0x50, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x3f, 0x28, 0x49, 0x0a, 0x7e,
-+ 0x0b, 0x0e, 0x16, 0x12, 0x22, 0x42, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xa0, 0xf0, 0xa8, 0xe4,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x25, 0x3e, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x24, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x24, 0x24, 0xd4, 0x74,
-+ 0xb4, 0x14, 0xf4, 0x14, 0x04, 0x18, 0x00, 0x00,
-+ 0x02, 0x0f, 0x02, 0x0c, 0x7f, 0x12, 0x26, 0x4f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0xc0, 0xf8, 0x48, 0x98, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x37, 0x24, 0x27, 0x3c, 0x27, 0x3e, 0x27,
-+ 0x24, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xc8, 0x78, 0xc8, 0xf8, 0xc8,
-+ 0x48, 0xfc, 0x00, 0x60, 0x10, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x3f, 0x07, 0x1c,
-+ 0x67, 0x1f, 0x17, 0x14, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xc0, 0x00, 0xf8, 0xc0, 0x70,
-+ 0xcc, 0xf0, 0xd0, 0x50, 0xd0, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x12, 0x1b,
-+ 0x2b, 0x7a, 0x12, 0x13, 0x2c, 0x40, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0x24, 0xa4, 0xe4, 0x78, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x20, 0xf8, 0x90, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x13, 0x6a, 0x2b, 0x1f, 0x6a, 0x13, 0x3f, 0x04,
-+ 0x7f, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0xb8, 0xa8, 0xb8, 0xa4, 0xf8, 0x60, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x11, 0x5b, 0x2b, 0x16, 0x7f, 0x0b, 0x33, 0x07,
-+ 0x1f, 0x67, 0x07, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x38, 0xa8, 0xb0, 0xa8, 0xe4, 0xf8, 0xa0, 0xc0,
-+ 0xf0, 0xcc, 0xc0, 0xb0, 0x60, 0x18, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x3f, 0x7a, 0x2a, 0x3f, 0x08,
-+ 0x0f, 0x0f, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x30, 0xcc, 0xf0, 0x80,
-+ 0xe0, 0xe0, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x32, 0x52, 0x12,
-+ 0x12, 0x13, 0x1e, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0xc8, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x4e, 0x28, 0x27, 0x04, 0x17, 0x1a,
-+ 0x22, 0x3f, 0x46, 0x45, 0x48, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xb0, 0x90, 0x7c, 0x98, 0x50,
-+ 0x5c, 0xd0, 0x50, 0x70, 0x90, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x09, 0x7f, 0x08, 0x08,
-+ 0x7f, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x20, 0xfc, 0x20, 0x20,
-+ 0xfc, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x49, 0x4f, 0x79, 0x49,
-+ 0x4f, 0x48, 0x78, 0x49, 0x42, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x50, 0xfc, 0x10, 0x10,
-+ 0xfc, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x02, 0x12, 0x0a, 0x7f, 0x04, 0x3f, 0x01, 0x1f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x80, 0x90, 0xa0, 0xfc, 0x40, 0xf8, 0x00, 0xf0,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x13, 0x12, 0x12, 0x23, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xfc, 0x04,
-+ 0xe4, 0x24, 0x24, 0xe4, 0x24, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24, 0x3f,
-+ 0x24, 0x24, 0x24, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7c, 0x11, 0x11, 0x3b, 0x36,
-+ 0x36, 0x53, 0x52, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xdc, 0x24, 0xb4, 0xa8,
-+ 0xa8, 0xb4, 0x24, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x1f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x20, 0x10, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x3a, 0x36,
-+ 0x36, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x09, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x09, 0x09, 0x0f, 0x11, 0x13, 0x32, 0x53, 0x10,
-+ 0x13, 0x10, 0x13, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x3e, 0x2b, 0x2a, 0x3e, 0x08,
-+ 0x3e, 0x08, 0x3e, 0x08, 0x0e, 0x79, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x11, 0x7e, 0x13, 0x14, 0x10,
-+ 0x10, 0x14, 0x1b, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88, 0x88,
-+ 0x28, 0xc8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20,
-+ 0xfc, 0x24, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x10, 0x60, 0x80, 0x00, 0x00, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x02, 0x1c, 0x10, 0x10, 0x1f, 0x15, 0x14,
-+ 0x14, 0x14, 0x24, 0x24, 0x45, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x08, 0x3e, 0x08, 0x0f, 0x72, 0x04,
-+ 0x1f, 0x60, 0x0f, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x80, 0x40,
-+ 0xf0, 0x0c, 0xe0, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x0f,
-+ 0x00, 0x7f, 0x09, 0x11, 0x61, 0x03, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x60, 0x70, 0xa8, 0x24, 0xe0,
-+ 0x00, 0xfc, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x05, 0x1f, 0x6a, 0x09, 0x0e, 0x0f,
-+ 0x01, 0x1f, 0x12, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0xac, 0xa0, 0x60, 0xe0,
-+ 0x00, 0xf0, 0x90, 0xd0, 0x50, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x40, 0x1e, 0x13,
-+ 0x1e, 0x12, 0x1e, 0x22, 0x22, 0x47, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x40, 0x40, 0xf8,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3e, 0x3f, 0x21,
-+ 0x0e, 0x01, 0x7f, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x20,
-+ 0x60, 0x98, 0xe4, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x70, 0xc0, 0x00, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x20, 0x2f, 0x21, 0x3f,
-+ 0x23, 0x25, 0x39, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x68, 0x88, 0x08, 0xf8,
-+ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3c,
-+ 0x55, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x60, 0xa0, 0x90, 0xf8, 0x04, 0x00,
-+ 0xf8, 0x10, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x09, 0x0a, 0x14, 0x19,
-+ 0x34, 0x57, 0x11, 0x11, 0x12, 0x10, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0xd0, 0xb8, 0xd4, 0x90, 0xf8,
-+ 0x00, 0xfc, 0x28, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x03, 0x3e, 0x03, 0x3c,
-+ 0x03, 0x3c, 0x27, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x13, 0x12, 0x02, 0x03, 0x02, 0x72,
-+ 0x12, 0x14, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x60, 0x80, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x67, 0x01, 0x3f,
-+ 0x01, 0x09, 0x05, 0x05, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xcc, 0x00, 0xf8,
-+ 0x00, 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x49, 0x4b, 0x4c, 0x48,
-+ 0x4b, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf8, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0xf8,
-+ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x44, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x53, 0x12,
-+ 0x13, 0x10, 0x1f, 0x11, 0x12, 0x1c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x2f, 0x48, 0x08,
-+ 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x2c, 0x23, 0x20,
-+ 0x21, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
-+ 0x40, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x48, 0x30, 0x11, 0x31, 0x4a, 0x0d, 0x19,
-+ 0x29, 0x49, 0x09, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0xe8, 0x28,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x10, 0x11, 0x11, 0x7e, 0x10,
-+ 0x10, 0x14, 0x18, 0x61, 0x02, 0x0c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf0, 0x10, 0x10, 0x20, 0x20,
-+ 0x60, 0x60, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x3f, 0x28, 0x48, 0x08, 0x7f,
-+ 0x08, 0x0c, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x01,
-+ 0x01, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x23,
-+ 0x3e, 0x66, 0x0a, 0x12, 0x62, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x88, 0x88, 0xc8, 0xb0, 0x90,
-+ 0x90, 0xa8, 0xc8, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0xc8, 0xb0, 0x90, 0x90,
-+ 0xa8, 0xa8, 0xc0, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x00, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xfc, 0x60, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3f, 0x21,
-+ 0x2f, 0x21, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x48,
-+ 0xe8, 0x38, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x15, 0x15,
-+ 0x15, 0x17, 0x20, 0x3f, 0x46, 0x18, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0xe8, 0x08, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0xe0, 0x20, 0xfc, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x4e, 0x49, 0x49, 0x49,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x0f, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x0c, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf8, 0x48, 0x30, 0xd8, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x00,
-+ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x80, 0x88, 0x78, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x50, 0x17,
-+ 0x14, 0x14, 0x17, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x80, 0xf8,
-+ 0xa8, 0xf8, 0x18, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x4f, 0x09, 0x0f, 0x09, 0x0f,
-+ 0x01, 0x3f, 0x21, 0x2f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xf8, 0x48, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x02, 0x03, 0x70, 0x17,
-+ 0x14, 0x14, 0x17, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x80, 0xf8,
-+ 0xa8, 0xf8, 0x08, 0x18, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x25, 0x24,
-+ 0x27, 0x26, 0x3a, 0x23, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xfc, 0x54, 0x7c, 0x8c, 0x04, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x3f,
-+ 0x21, 0x21, 0x3f, 0x21, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x12, 0x13, 0x13, 0x7c, 0x10, 0x1b, 0x36, 0x37,
-+ 0x32, 0x53, 0x53, 0x12, 0x13, 0x1c, 0x00, 0x00,
-+ 0x20, 0xfc, 0x30, 0xc8, 0x00, 0xb8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0x28, 0xb0, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x19, 0x0e, 0x74, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0x28, 0x28, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x14, 0x12, 0x17, 0x14,
-+ 0x17, 0x14, 0x27, 0x24, 0x44, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x90, 0xa0, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x14, 0x14, 0x17,
-+ 0x14, 0x18, 0x28, 0x28, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x90, 0x90, 0xf0,
-+ 0x90, 0x88, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x12, 0x12, 0x1e,
-+ 0x72, 0x13, 0x15, 0x15, 0x19, 0x31, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0xfc, 0x24, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x26, 0x58, 0x1f, 0x10, 0x1f, 0x14,
-+ 0x14, 0x17, 0x28, 0x28, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x78, 0xf8, 0x08, 0xf8, 0x90,
-+ 0x90, 0xf0, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x05, 0x09, 0x11, 0x63, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x08, 0x90, 0x60, 0x20, 0x10, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x60, 0x60, 0x60, 0xa4, 0xa4, 0xa8, 0xb0, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x21, 0x2f, 0x4f, 0x35, 0x2f, 0x7d, 0x37, 0x5f,
-+ 0x11, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0xd4, 0xe4, 0x58, 0xd4, 0x7c, 0xd8, 0xf4,
-+ 0x10, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x0b, 0x48,
-+ 0x27, 0x20, 0x0b, 0x08, 0x17, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0xf8, 0x40,
-+ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x12, 0x7f, 0x01, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x22, 0x26, 0x14, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x48, 0x70, 0x44, 0x3c, 0x40, 0x4c, 0x70,
-+ 0x40, 0x44, 0x3c, 0x90, 0x48, 0x44, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x24, 0x27,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc,
-+ 0x48, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x07, 0x18, 0x01, 0x07, 0x79, 0x09, 0x05,
-+ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0xc0, 0x30, 0x2c, 0x20, 0x40,
-+ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x13, 0x7f,
-+ 0x08, 0x2d, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xdc, 0x54, 0xdc,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x04, 0x03, 0x3e, 0x12, 0x0d, 0x1b,
-+ 0x61, 0x3f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xf8, 0x48, 0x30, 0xc8,
-+ 0x04, 0xf8, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x24, 0x24, 0x7b, 0x10, 0x7d,
-+ 0x11, 0x55, 0x3a, 0x30, 0x1c, 0x60, 0x00, 0x00,
-+ 0x50, 0x90, 0x90, 0x94, 0xb4, 0xf4, 0xb8, 0xd0,
-+ 0xb0, 0x98, 0xa8, 0xa8, 0xc4, 0x84, 0x00, 0x00,
-+ 0x02, 0x3c, 0x7f, 0x3f, 0x2a, 0x3e, 0x2a, 0x3e,
-+ 0x3e, 0x0f, 0x79, 0x00, 0x24, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x88, 0x88, 0x30, 0x00, 0x88, 0x44, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x1f,
-+ 0x04, 0x0f, 0x14, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x7f, 0x0f, 0x09, 0x0f,
-+ 0x09, 0x0f, 0x1f, 0x7f, 0x12, 0x61, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xc0, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0xf0, 0xfc, 0x48, 0x24, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x7f, 0x00, 0x3e, 0x00, 0x3e,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3f, 0x22, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x12, 0x13, 0x7f, 0x12, 0x3e, 0x10,
-+ 0x1e, 0x33, 0x32, 0x52, 0x1e, 0x10, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x7f, 0x01, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x09, 0x7f, 0x09, 0x3f, 0x08,
-+ 0x0f, 0x19, 0x19, 0x29, 0x4f, 0x09, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0xd0, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04,
-+ 0x04, 0x3f, 0x04, 0x04, 0x07, 0x7c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xa0, 0x20, 0x30, 0xe8, 0x24,
-+ 0x24, 0xa0, 0x20, 0x20, 0xa0, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x7e, 0x12, 0x12, 0x22, 0x4d, 0x01,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x02, 0x04, 0x08, 0x1c,
-+ 0x2a, 0x4a, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x84, 0x84, 0xc4, 0xb8, 0x80, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x30, 0x50, 0x11,
-+ 0x17, 0x10, 0x12, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x90, 0x90, 0x20, 0xd0, 0x98, 0xe4,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x14, 0x15, 0x35, 0x56, 0x14,
-+ 0x14, 0x15, 0x15, 0x13, 0x10, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x42, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x15, 0x05,
-+ 0x05, 0x09, 0x09, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00,
-+ 0x00, 0x00, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3f, 0x22, 0x22, 0x3e, 0x23,
-+ 0x20, 0x4f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x90, 0x60, 0x60, 0x90,
-+ 0x0c, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01,
-+ 0x3f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x10, 0x10, 0x17, 0x7c, 0x10,
-+ 0x13, 0x14, 0x18, 0x60, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x22,
-+ 0x41, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x18,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x08, 0x0f, 0x71,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x08, 0x30,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x42, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x20, 0x48, 0x08, 0x90, 0x10,
-+ 0x24, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x08, 0x0b, 0x11, 0x24, 0x04, 0x09, 0x1e, 0x28,
-+ 0x4b, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xa0, 0x40, 0xf0, 0x4c, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x1f, 0x15,
-+ 0x19, 0x13, 0x2d, 0x20, 0x43, 0x1c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xfc, 0x58,
-+ 0xe4, 0xf4, 0x20, 0xc0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x0f, 0x78, 0x0f, 0x07,
-+ 0x00, 0x0f, 0x25, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0xfc, 0x20, 0xe0, 0xe0,
-+ 0x20, 0xe0, 0x08, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x02, 0x3c, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x3e,
-+ 0x20, 0x05, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x20, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x88, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x10, 0x1d,
-+ 0x73, 0x15, 0x11, 0x11, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80, 0xfc,
-+ 0x34, 0xc4, 0x04, 0x14, 0xf4, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x13, 0x7f, 0x15, 0x11, 0x11, 0x15,
-+ 0x1f, 0x71, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc,
-+ 0xe0, 0x20, 0x3c, 0x04, 0x04, 0x18, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x10, 0x1e, 0x23, 0x7a,
-+ 0x2a, 0x2a, 0x3a, 0x22, 0x02, 0x0d, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x01, 0x7f,
-+ 0x0f, 0x08, 0x0f, 0x05, 0x09, 0x33, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0xe0, 0x20, 0xe0, 0x60, 0x10, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1b, 0x1c, 0x1a,
-+ 0x2b, 0x28, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x21, 0x21, 0x00, 0x13,
-+ 0x10, 0x17, 0x20, 0x20, 0x41, 0x46, 0x00, 0x00,
-+ 0x08, 0x70, 0x88, 0x48, 0x50, 0x20, 0x40, 0xf8,
-+ 0x40, 0xfc, 0xc0, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x54, 0x54, 0x57, 0x7c, 0x54,
-+ 0x57, 0x54, 0x7c, 0x44, 0x07, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x0d, 0x78, 0x08, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x28, 0xfc, 0x60, 0xa4, 0x9c, 0xf0, 0x84, 0x7c,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x1c, 0x03, 0x01, 0x7f,
-+ 0x01, 0x09, 0x09, 0x11, 0x21, 0x01, 0x00, 0x00,
-+ 0x38, 0xc0, 0x20, 0x20, 0x40, 0x90, 0x08, 0xfc,
-+ 0x04, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0x70, 0xac, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x0b, 0x73, 0x15, 0x0d, 0x13, 0x7f,
-+ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xa8, 0x68, 0x70, 0x20, 0xfc, 0x20,
-+ 0x70, 0xa8, 0x28, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3f, 0x2a, 0x3e, 0x7f,
-+ 0x0a, 0x0e, 0x01, 0x7f, 0x0d, 0x31, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x90, 0x60, 0xb0,
-+ 0x4c, 0xc0, 0x70, 0x88, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x04, 0x3f, 0x04, 0x7f,
-+ 0x04, 0x3f, 0x04, 0x07, 0x78, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x20, 0x20, 0x30, 0xa8,
-+ 0x24, 0x24, 0x20, 0xa0, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x04, 0x03, 0x0d,
-+ 0x71, 0x0f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x60, 0x80, 0x60,
-+ 0x1c, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x12, 0x12,
-+ 0x7f, 0x12, 0x12, 0x12, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x48, 0x48, 0x48,
-+ 0xc8, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x3f, 0x21, 0x41, 0x0f, 0x09,
-+ 0x09, 0x0f, 0x09, 0x01, 0x01, 0x3e, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x08, 0x00, 0xe0, 0x20,
-+ 0x20, 0xe0, 0x20, 0x10, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x12, 0x7f, 0x1f, 0x3d, 0x55, 0x1e, 0x07, 0x7f,
-+ 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc8, 0x50, 0x30, 0xcc, 0xc0, 0xfc,
-+ 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x08, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xf0, 0x2c, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x34, 0x0c, 0x1a, 0x29, 0x48,
-+ 0x3e, 0x08, 0x08, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x02, 0x0c, 0x72, 0x4a, 0x2c, 0x08, 0x3e, 0x08,
-+ 0x7e, 0x08, 0x14, 0x13, 0x21, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x38, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x1f, 0x00, 0x00,
-+ 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf0, 0x00, 0x00,
-+ 0xfc, 0x40, 0x20, 0xf0, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x20, 0x13, 0x12, 0x02, 0x02, 0x72, 0x12,
-+ 0x13, 0x1e, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x80, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0xc8, 0x70, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x20, 0xb0, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x04, 0x07, 0x3f, 0x26, 0x3b, 0x3f, 0x26, 0x3c,
-+ 0x27, 0x3b, 0x26, 0x3a, 0x42, 0x0c, 0x00, 0x00,
-+ 0x08, 0xa8, 0xe8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0x28, 0xa8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x5c, 0xe0, 0x48, 0x48, 0x50,
-+ 0x30, 0x20, 0x60, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3f, 0x3e, 0x7f, 0x08,
-+ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x21, 0x12, 0x17, 0x44, 0x27, 0x24, 0x07, 0x12,
-+ 0x1f, 0x13, 0x24, 0x24, 0x4b, 0x50, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0xa0, 0xfc, 0xc8, 0xa8, 0x28,
-+ 0xe8, 0x90, 0x90, 0xa8, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x2a, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1c, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x80, 0xf8, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x09, 0x09, 0x0b, 0x12, 0x15, 0x31, 0x52, 0x14,
-+ 0x1f, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0xfc, 0xa8, 0xa8, 0x7c, 0x48, 0x48,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x41,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x10, 0x20,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x00, 0x1f,
-+ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90, 0xfc,
-+ 0xc0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x22, 0x1f, 0x12, 0x4f, 0x22, 0x23, 0x0c, 0x11,
-+ 0x17, 0x10, 0x2f, 0x22, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0x28, 0xd8, 0xa0, 0x20,
-+ 0x50, 0xb8, 0xc8, 0xb0, 0x88, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x01, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xc0, 0x40, 0x40,
-+ 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x02, 0x1f, 0x12, 0x12, 0x12,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3f,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x0f, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x13, 0x12, 0x34, 0x50, 0x17,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x12, 0x17, 0x38, 0x57, 0x14,
-+ 0x17, 0x14, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0xf0, 0x88, 0xf0, 0x90,
-+ 0xf0, 0x90, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x13, 0x10, 0x37, 0x50, 0x11,
-+ 0x12, 0x15, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xf8, 0x40, 0xfc, 0xa0, 0xf0,
-+ 0x28, 0xe4, 0x20, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x08, 0x08, 0x0e, 0x13, 0x12, 0x34, 0x5f, 0x11,
-+ 0x15, 0x15, 0x12, 0x13, 0x14, 0x18, 0x00, 0x00,
-+ 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20, 0xf8,
-+ 0x20, 0xfc, 0x20, 0x20, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x04, 0x3f, 0x04, 0x7f, 0x04,
-+ 0x3f, 0x04, 0x1c, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90,
-+ 0xf0, 0xc0, 0xb0, 0x8c, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x11, 0x09, 0x3f, 0x02, 0x7f, 0x04, 0x18,
-+ 0x6f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x10, 0x20, 0xf8, 0x80, 0xfc, 0x40, 0x30,
-+ 0xec, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x0a, 0x11, 0x7f, 0x04, 0x3f, 0x25,
-+ 0x3f, 0x24, 0x0a, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x48, 0x49, 0x49,
-+ 0x49, 0x79, 0x49, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x08, 0xf8, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x2f, 0x22, 0x3f, 0x24, 0x2f,
-+ 0x30, 0x27, 0x24, 0x23, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xe8, 0x88, 0xf8, 0x48, 0xe8,
-+ 0x58, 0xc8, 0x28, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3e, 0x24, 0x3f,
-+ 0x21, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x10, 0x13, 0x10, 0x7d, 0x24, 0x27, 0x24,
-+ 0x79, 0x48, 0x0d, 0x16, 0x24, 0x40, 0x00, 0x00,
-+ 0x08, 0x90, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8,
-+ 0xf8, 0xa0, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x08, 0x17, 0x10, 0x3b, 0x08,
-+ 0x4b, 0x28, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x21, 0x7f, 0x1f, 0x01, 0x7f, 0x1f,
-+ 0x12, 0x1f, 0x25, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0xf0, 0x00, 0xfc, 0xf0,
-+ 0x90, 0xf0, 0x08, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x1e, 0x52, 0x5e, 0x5e, 0x52, 0x5f, 0x7e, 0x2a,
-+ 0x29, 0x49, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x18, 0xe0, 0x28, 0xd0, 0x28, 0xfc, 0x64, 0xa8,
-+ 0x24, 0x20, 0x80, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x09, 0x11, 0x1f, 0x02, 0x7f, 0x08, 0x1f, 0x61,
-+ 0x1f, 0x01, 0x3f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0x10, 0xf0, 0x80, 0xfc, 0x20, 0xd8, 0x04,
-+ 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7f, 0x10, 0x17, 0x11, 0x13,
-+ 0x1c, 0x71, 0x11, 0x11, 0x11, 0x30, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xf8, 0xa0, 0xfc, 0x10, 0xe8,
-+ 0x24, 0xe0, 0x20, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x0b, 0x18, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x48, 0x08, 0x0b, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x30, 0x39, 0x37,
-+ 0x55, 0x51, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x40, 0xfc, 0x90, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x06, 0x03, 0x7f, 0x44, 0x5f,
-+ 0x09, 0x0f, 0x11, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xc0, 0x00, 0xfc, 0x48, 0xe0,
-+ 0x10, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x03, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x80,
-+ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x33, 0x2d, 0x3f,
-+ 0x25, 0x3f, 0x25, 0x25, 0x25, 0x23, 0x00, 0x00,
-+ 0x20, 0x28, 0xa4, 0x24, 0xfc, 0x20, 0x20, 0x30,
-+ 0x50, 0x50, 0x48, 0x88, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1f, 0x32,
-+ 0x52, 0x12, 0x12, 0x1f, 0x11, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x11, 0x3d, 0x25,
-+ 0x65, 0x24, 0x24, 0x3d, 0x22, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x00, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x07, 0x24, 0x27, 0x24, 0x27, 0x24, 0x27,
-+ 0x20, 0x3f, 0x25, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xfc, 0x60, 0x18, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x14, 0x17, 0x24, 0x47, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x0a, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0xa0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x38, 0x03, 0x7c, 0x03, 0x38, 0x07, 0x38,
-+ 0x03, 0x38, 0x29, 0x2a, 0x3c, 0x20, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8,
-+ 0xf8, 0xa0, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x3e, 0x3f, 0x2f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x70, 0x8c, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x00, 0x0f, 0x71, 0x11,
-+ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xf8, 0x40, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x24, 0x25, 0x79, 0x13, 0x7c,
-+ 0x12, 0x56, 0x39, 0x31, 0x1a, 0x64, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0xa8, 0xfc, 0x28, 0xf8, 0xa0,
-+ 0xf8, 0xa0, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x2b, 0x30, 0x2b, 0x26,
-+ 0x26, 0x27, 0x38, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3e, 0x22, 0x3e, 0x14, 0x15,
-+ 0x55, 0x36, 0x34, 0x16, 0x18, 0x63, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x29, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x88, 0xfc, 0x20, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0x60, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x1e, 0x10, 0x7f, 0x52, 0x4e, 0x76,
-+ 0x6e, 0x5a, 0x76, 0x4a, 0x7e, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x88, 0xfc, 0x20, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80,
-+ 0x80, 0x80, 0x84, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x13, 0x12, 0x13, 0x12, 0x13,
-+ 0x10, 0x12, 0x22, 0x24, 0x48, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x80, 0xa0, 0x90, 0x88, 0x88, 0x80, 0x00, 0x00,
-+ 0x09, 0x04, 0x1f, 0x10, 0x1f, 0x12, 0x1f, 0x15,
-+ 0x17, 0x17, 0x25, 0x3f, 0x41, 0x01, 0x00, 0x00,
-+ 0x08, 0x90, 0xfc, 0x20, 0xa0, 0x20, 0xbc, 0x48,
-+ 0xa8, 0x30, 0x10, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x0a, 0x72, 0x12, 0x0c, 0x04,
-+ 0x0c, 0x0a, 0x12, 0x7d, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7c, 0x07, 0x04, 0x3c, 0x27, 0x20, 0x3c,
-+ 0x24, 0x24, 0x04, 0x04, 0x0b, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x88, 0x90, 0x50,
-+ 0x20, 0x20, 0x50, 0x88, 0xf4, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x24, 0x27, 0x04, 0x17,
-+ 0x16, 0x16, 0x27, 0x2a, 0x48, 0x51, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xa8,
-+ 0xb0, 0x90, 0xb4, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x02, 0x12,
-+ 0x12, 0x12, 0x24, 0x24, 0x49, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x20, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x02, 0x1a, 0x06,
-+ 0x01, 0x00, 0x01, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0xa0, 0x10, 0x78, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x01, 0x7d, 0x11, 0x11, 0x11, 0x7d, 0x11,
-+ 0x11, 0x10, 0x1c, 0x61, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x28, 0xc8, 0x50,
-+ 0x30, 0x20, 0x30, 0x48, 0xfc, 0x04, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x17, 0x7f,
-+ 0x12, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x28, 0xc8, 0x50,
-+ 0x30, 0x10, 0x28, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x00, 0x7f, 0x00, 0x0f, 0x00, 0x0f,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xe0, 0x00, 0xfc, 0x00, 0xe0, 0x00, 0xe0,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x00, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x25, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x10, 0x20,
-+ 0xc8, 0x10, 0x64, 0x08, 0x30, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x48,
-+ 0x48, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x30, 0xc0, 0x10, 0x10, 0x20, 0x40, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x55, 0x15,
-+ 0x15, 0x15, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xe8, 0x28,
-+ 0x28, 0xe8, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x1f,
-+ 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4a, 0x49, 0x49, 0x48, 0x4f,
-+ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x48, 0x48, 0x50, 0x60, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x21, 0x27, 0x24,
-+ 0x24, 0x27, 0x24, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xc8, 0x48,
-+ 0x48, 0xc8, 0x48, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x09, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x03, 0x05, 0x05, 0x09, 0x0d, 0x19,
-+ 0x69, 0x09, 0x0a, 0x0a, 0x0f, 0x18, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x68, 0x58, 0x78, 0x94, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00,
-+ 0x00, 0x00, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x20, 0x3f, 0x40, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf8, 0x80, 0xf0, 0x90, 0xf0,
-+ 0x90, 0xf0, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x7c, 0x05, 0x05, 0x3d, 0x25, 0x21, 0x3d,
-+ 0x25, 0x25, 0x05, 0x06, 0x0b, 0x34, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x68, 0x58, 0x7c, 0x94, 0x14, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x3e,
-+ 0x22, 0x22, 0x22, 0x3e, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x20, 0x12, 0x12, 0x42, 0x2f, 0x22, 0x02, 0x0f,
-+ 0x19, 0x19, 0x2f, 0x29, 0x40, 0x41, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0xc8, 0x78, 0x48, 0x48,
-+ 0x48, 0x78, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x04, 0x44, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x0a, 0x33, 0x14, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x68, 0x58, 0x78, 0x94, 0x04, 0x00, 0x00,
-+ 0x10, 0x55, 0x35, 0x39, 0x17, 0x7d, 0x11, 0x1b,
-+ 0x36, 0x36, 0x53, 0x12, 0x10, 0x11, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0x28, 0xe8, 0x38, 0x28, 0xa8,
-+ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7c, 0x08, 0x0b, 0x12, 0x3d,
-+ 0x54, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x88, 0xfc, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x25, 0x26, 0x3d,
-+ 0x24, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x94, 0x14, 0x0c, 0xf8,
-+ 0x88, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x3e,
-+ 0x22, 0x22, 0x22, 0x3f, 0x23, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0x88, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x05, 0x09,
-+ 0x0d, 0x19, 0x69, 0x0a, 0x0b, 0x1c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x18, 0xf0, 0x50, 0x50,
-+ 0x50, 0x50, 0x68, 0x58, 0xf4, 0x14, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x10,
-+ 0x12, 0x12, 0x22, 0x24, 0x48, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0xf0, 0x08, 0xf8,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3e, 0x00, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x09, 0x28, 0x2f,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x88, 0x74, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x17,
-+ 0x1c, 0x17, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xfc,
-+ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3f, 0x21, 0x3f, 0x2a, 0x2f,
-+ 0x3a, 0x2f, 0x2f, 0x4a, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0xc8,
-+ 0x78, 0x48, 0x78, 0x30, 0xc8, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x01, 0x3e, 0x22,
-+ 0x3e, 0x22, 0x14, 0x16, 0x18, 0x63, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x88, 0x88,
-+ 0x50, 0x70, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x02, 0x02, 0x3f, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x07, 0x04, 0x04, 0x04,
-+ 0x0f, 0x08, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20,
-+ 0xe0, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x30, 0x57, 0x11,
-+ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0x80, 0x80, 0x80, 0xf0, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x21, 0x01, 0x7f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x12, 0x12, 0x13, 0x10, 0x1f, 0x10,
-+ 0x00, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf0, 0x10,
-+ 0x10, 0xfc, 0x00, 0x60, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x1f, 0x04, 0x04, 0x7f,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0xfc,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x48, 0x0f, 0x14, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00,
-+ 0xf0, 0x10, 0xfc, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x48, 0x08, 0x10, 0x17, 0x30,
-+ 0x51, 0x17, 0x10, 0x10, 0x11, 0x1e, 0x00, 0x00,
-+ 0x40, 0x50, 0x90, 0xa0, 0x50, 0x88, 0xf4, 0x84,
-+ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x12, 0x12, 0x23, 0x4d, 0x09, 0x17, 0x11, 0x35,
-+ 0x55, 0x15, 0x15, 0x15, 0x1e, 0x10, 0x00, 0x00,
-+ 0x00, 0x38, 0xe8, 0x28, 0x28, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x28, 0x78, 0xa0, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x18, 0x35, 0x34, 0x30, 0x57,
-+ 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x1c, 0x1a, 0x1b,
-+ 0x28, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x12, 0x7f, 0x12, 0x1a, 0x37, 0x37,
-+ 0x30, 0x57, 0x55, 0x17, 0x14, 0x14, 0x00, 0x00,
-+ 0x80, 0x40, 0xb0, 0xfc, 0xb0, 0x50, 0xb0, 0xf0,
-+ 0x80, 0xf8, 0x28, 0xd8, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x7a, 0x17, 0x12, 0x12, 0x7f, 0x15,
-+ 0x15, 0x15, 0x1f, 0x64, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xc8, 0x48, 0x78, 0x48, 0x48,
-+ 0x78, 0x48, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x07, 0x07, 0x04, 0x7f, 0x08,
-+ 0x1f, 0x62, 0x0f, 0x34, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xc0, 0xc0, 0x40, 0xfc, 0x20,
-+ 0xf0, 0x0c, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3c, 0x00, 0x3f,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3c, 0x25, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x00, 0xf8, 0x08,
-+ 0x08, 0xfc, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x3b, 0x00, 0x7d, 0x03, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3f, 0x24, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x90, 0xfc, 0xb0, 0xfc, 0x20, 0xf8, 0xf8, 0x20,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2e, 0x2e, 0x3f,
-+ 0x37, 0x27, 0x3f, 0x23, 0x3e, 0x22, 0x00, 0x00,
-+ 0x80, 0xb8, 0xa8, 0xa8, 0xe8, 0xb8, 0xa8, 0xe8,
-+ 0x78, 0x68, 0xe8, 0x48, 0x48, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x20, 0x4f, 0x01,
-+ 0x02, 0x04, 0x08, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00,
-+ 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x04, 0x08, 0x14, 0x22,
-+ 0x02, 0x01, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x20, 0x50, 0x48, 0x48,
-+ 0x80, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x32, 0x55, 0x11,
-+ 0x10, 0x10, 0x10, 0x11, 0x16, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x20, 0x10, 0x28, 0x28, 0x20,
-+ 0xc0, 0xc0, 0xc0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x09, 0x08, 0x08, 0x17, 0x11, 0x31, 0x51, 0x12,
-+ 0x14, 0x17, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0xf0, 0x10, 0x10, 0xfc, 0x00, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x09, 0x08, 0x0c, 0x17, 0x34, 0x54, 0x15, 0x16,
-+ 0x17, 0x14, 0x14, 0x14, 0x11, 0x16, 0x00, 0x00,
-+ 0xf0, 0x10, 0x10, 0xfc, 0x80, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x37, 0x51, 0x11,
-+ 0x17, 0x10, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x20,
-+ 0xfc, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x20, 0x00, 0xfc, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x04, 0x04, 0x08, 0x08, 0x11, 0x21, 0x41,
-+ 0x02, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0xc0, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00,
-+ 0x40, 0x20, 0x10, 0x70, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7c, 0x13, 0x10, 0x10, 0x10,
-+ 0x10, 0x15, 0x19, 0x61, 0x02, 0x04, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0x88, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x14, 0x12, 0x23, 0x52,
-+ 0x0c, 0x04, 0x0a, 0x12, 0x21, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x12, 0x22, 0x42, 0x03,
-+ 0x04, 0x05, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08,
-+ 0x88, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x13, 0x12, 0x13, 0x12, 0x13, 0x10,
-+ 0x13, 0x10, 0x2f, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf0, 0x20, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x04, 0x3f, 0x20, 0x20, 0x27, 0x24,
-+ 0x24, 0x24, 0x27, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48,
-+ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x13,
-+ 0x12, 0x12, 0x22, 0x22, 0x43, 0x02, 0x00, 0x00,
-+ 0x38, 0xc0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4b, 0x4a, 0x4e, 0x4a, 0x4a,
-+ 0x4b, 0x7b, 0x4a, 0x42, 0x02, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0x40, 0x40, 0xfc, 0xa0,
-+ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x10, 0x7c, 0x11, 0x11, 0x11,
-+ 0x11, 0x1d, 0x62, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x12,
-+ 0x12, 0x1e, 0x64, 0x04, 0x08, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x13,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x10, 0x10, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3e, 0x02, 0x04, 0x04, 0x08, 0x08, 0x0e,
-+ 0x78, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x07,
-+ 0x18, 0x60, 0x1f, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x20, 0x40, 0xfc, 0x00, 0xe0,
-+ 0x40, 0x80, 0xf8, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x42, 0x7f, 0x02, 0x04,
-+ 0x04, 0x08, 0x11, 0x21, 0x4f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xfc, 0x00, 0x80,
-+ 0x80, 0x80, 0x20, 0x30, 0xc8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x00, 0x7c, 0x10, 0x10, 0x11, 0x11,
-+ 0x10, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04, 0x0f,
-+ 0x10, 0x6f, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0xe0,
-+ 0x50, 0xcc, 0x40, 0x10, 0x10, 0xf0, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x08, 0x04, 0x7f,
-+ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x20, 0x40, 0xfc,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x11, 0x11, 0x22, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x20, 0x10, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x10,
-+ 0x17, 0x10, 0x11, 0x21, 0x22, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90,
-+ 0xf0, 0x90, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x10,
-+ 0x17, 0x1c, 0x23, 0x26, 0x58, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90,
-+ 0xf0, 0xc8, 0xb0, 0x90, 0x8c, 0x80, 0x00, 0x00,
-+ 0x00, 0x7e, 0x02, 0x02, 0x3e, 0x22, 0x20, 0x3e,
-+ 0x22, 0x02, 0x02, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40,
-+ 0x40, 0x50, 0x88, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x11, 0x39, 0x35, 0x35, 0x51,
-+ 0x11, 0x11, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x18, 0x37, 0x35, 0x31, 0x50,
-+ 0x11, 0x11, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0x40, 0xfc, 0x00, 0x00, 0xf8,
-+ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x12, 0x12, 0x34, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x12, 0x14, 0x13, 0x12,
-+ 0x1a, 0x73, 0x12, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x10, 0x11, 0x16,
-+ 0x1b, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0xa4, 0x1c, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7e, 0x11, 0x11, 0x12, 0x10,
-+ 0x14, 0x18, 0x60, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x06, 0x38,
-+ 0x20, 0x20, 0x26, 0x38, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x11, 0x09,
-+ 0x09, 0x7f, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x10, 0x10,
-+ 0x20, 0xfc, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x19, 0x05, 0x03, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x09, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1d, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x90, 0x88, 0x94, 0x94,
-+ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x3a, 0x37,
-+ 0x36, 0x51, 0x50, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7f, 0x08, 0x1b, 0x1c, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x0b, 0x09, 0x09, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x40, 0x20, 0x20, 0x00, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x41, 0x27, 0x21, 0x01, 0x01,
-+ 0x1f, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20,
-+ 0xfc, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x43, 0x22, 0x24, 0x0f, 0x00,
-+ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x2f, 0x21, 0x02, 0x17,
-+ 0x18, 0x13, 0x22, 0x22, 0x42, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x10, 0xec,
-+ 0x20, 0xe0, 0x20, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x11, 0x0f, 0x09, 0x47, 0x21, 0x2f, 0x00, 0x13,
-+ 0x12, 0x13, 0x22, 0x2f, 0x42, 0x42, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x80, 0xf0,
-+ 0x90, 0xf0, 0x90, 0xfc, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x21, 0x21, 0x3f,
-+ 0x21, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x13, 0x12, 0x23, 0x3e, 0x67,
-+ 0x26, 0x25, 0x3c, 0x20, 0x23, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x1b, 0x70, 0x11, 0x11, 0x7d, 0x10, 0x1b,
-+ 0x36, 0x36, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x08, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x3a, 0x12, 0x7f, 0x12, 0x1a,
-+ 0x37, 0x36, 0x52, 0x14, 0x17, 0x18, 0x00, 0x00,
-+ 0x40, 0xfc, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8,
-+ 0x24, 0xa8, 0x70, 0xa8, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2b, 0x29, 0x4b, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x50, 0x90,
-+ 0x90, 0xa0, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x90, 0x88, 0x94, 0x94, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x17, 0x66, 0x1a, 0x1b, 0x26, 0x7f,
-+ 0x13, 0x3b, 0x37, 0x37, 0x52, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0x58,
-+ 0x58, 0x58, 0xf8, 0x18, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x08, 0x7f, 0x08,
-+ 0x1d, 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0xfc, 0x48, 0x48, 0x48, 0x48,
-+ 0xfc, 0x48, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x03, 0x0f,
-+ 0x72, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x20, 0xfc, 0x80, 0x00, 0xf8,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x00, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x24, 0x24,
-+ 0x3c, 0x25, 0x25, 0x26, 0x25, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xa0, 0xa0,
-+ 0xa0, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x26, 0x24, 0x3c, 0x25, 0x26,
-+ 0x3f, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0xa8, 0x18, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x07, 0x04, 0x07, 0x3f, 0x27, 0x47,
-+ 0x0f, 0x08, 0x0f, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0xc0, 0x40, 0xc0, 0xfc, 0xc8, 0xc0,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x16, 0x7f,
-+ 0x12, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x00, 0x70, 0x50, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x08, 0x08,
-+ 0x07, 0x09, 0x09, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0xf0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x09, 0x10, 0x24, 0x04, 0x0b, 0x08, 0x18,
-+ 0x28, 0x48, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x12, 0x13, 0x24, 0x49, 0x0f, 0x15, 0x37, 0x55,
-+ 0x17, 0x11, 0x1f, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xbc, 0x80, 0x00, 0xfc, 0x48, 0xc8, 0x48,
-+ 0xc8, 0x08, 0xe8, 0x88, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x7f, 0x00, 0x3f, 0x00, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x27, 0x3d, 0x25, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x27, 0x3c, 0x25,
-+ 0x25, 0x3d, 0x19, 0x17, 0x25, 0x41, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x7f, 0x12, 0x11, 0x22, 0x52,
-+ 0x0c, 0x04, 0x0a, 0x12, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xd0, 0x50, 0x60, 0xd0, 0xc8,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x24, 0xfc, 0x28, 0x28, 0xfc, 0x20, 0xf8,
-+ 0x88, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x80, 0xa0, 0xa0, 0xa0,
-+ 0xa0, 0xb0, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x26, 0x23, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20,
-+ 0x20, 0x30, 0x48, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x1b, 0x26, 0x26, 0x7b, 0x12, 0x7f,
-+ 0x13, 0x57, 0x3b, 0x33, 0x1e, 0x62, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0x58,
-+ 0x58, 0x58, 0xf8, 0x18, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x22,
-+ 0x2f, 0x30, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x88,
-+ 0xe8, 0x18, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x32, 0x28, 0x27, 0x24,
-+ 0x24, 0x24, 0x3b, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x78, 0x88, 0x50, 0x30, 0xdc, 0x10, 0xf8,
-+ 0x90, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x07, 0x00, 0x7c, 0x11, 0x11, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00,
-+ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x20, 0x10, 0x11, 0x0f, 0x45, 0x25, 0x25, 0x05,
-+ 0x15, 0x17, 0x39, 0x22, 0x42, 0x44, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x32, 0x2a, 0x2c, 0x3f, 0x24, 0x35,
-+ 0x35, 0x35, 0x3f, 0x31, 0x20, 0x21, 0x00, 0x00,
-+ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x09, 0x08, 0x7f, 0x08,
-+ 0x0c, 0x12, 0x16, 0x79, 0x01, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x7f, 0x04,
-+ 0x07, 0x08, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xfc, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x00,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x17, 0x11, 0x11, 0x7d, 0x17, 0x14, 0x17,
-+ 0x14, 0x1f, 0x63, 0x00, 0x07, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0xfc, 0x08, 0xf8,
-+ 0xc8, 0x70, 0xb0, 0xe8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x1c,
-+ 0x71, 0x12, 0x14, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x40, 0xf8,
-+ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x41, 0x21, 0x27, 0x04, 0x0f,
-+ 0x10, 0x17, 0x23, 0x21, 0x46, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0xfc, 0x08, 0xf8,
-+ 0xc8, 0x70, 0xf0, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x08, 0x0f, 0x3f, 0x20, 0x7f,
-+ 0x07, 0x3a, 0x1d, 0x06, 0x38, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xfc, 0x08, 0xf8,
-+ 0x88, 0xd0, 0xe0, 0xb0, 0x8c, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x07, 0x07, 0x07, 0x3f, 0x09, 0x7f,
-+ 0x3e, 0x3e, 0x2a, 0x3e, 0x7f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0xc0, 0xc0, 0xc0, 0xf8, 0x20, 0xfc,
-+ 0xf8, 0xf8, 0xa8, 0xf8, 0xfc, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x08, 0x7f, 0x08,
-+ 0x1e, 0x12, 0x2d, 0x44, 0x1b, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0x2c, 0xb4, 0x64, 0xfc,
-+ 0x74, 0xac, 0x2c, 0x38, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x12, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x08, 0x0a, 0x32, 0x0c, 0x05,
-+ 0x09, 0x12, 0x26, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x7f, 0x00,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x2f, 0x21, 0x21, 0x2f, 0x21,
-+ 0x21, 0x21, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0x08, 0xe8, 0x08,
-+ 0x48, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x26, 0x79,
-+ 0x08, 0x7f, 0x1c, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x0c, 0x00, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x10, 0xd0, 0x50, 0x7c, 0x90, 0x10, 0xfc, 0x00,
-+ 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x08, 0x28, 0x28, 0x3e, 0x28, 0x48, 0x7f, 0x00,
-+ 0x3e, 0x22, 0x22, 0x3f, 0x21, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x01, 0x3f,
-+ 0x01, 0x7f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x00, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x4b, 0x30, 0x1f, 0x30, 0x4b, 0x08, 0x1b,
-+ 0x28, 0x4b, 0x0a, 0x0b, 0x32, 0x10, 0x00, 0x00,
-+ 0x10, 0x98, 0x14, 0xd4, 0x10, 0xfc, 0x10, 0x90,
-+ 0x10, 0xa8, 0xa8, 0xa8, 0x44, 0x84, 0x00, 0x00,
-+ 0x20, 0x10, 0x17, 0x44, 0x27, 0x24, 0x04, 0x17,
-+ 0x15, 0x15, 0x25, 0x29, 0x49, 0x56, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x20, 0xe8, 0x30, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x2b, 0x2a, 0x3a, 0x2b, 0x28,
-+ 0x3f, 0x28, 0x29, 0x28, 0x28, 0x5b, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x40,
-+ 0xfc, 0x90, 0xd0, 0x20, 0xd0, 0x08, 0x00, 0x00,
-+ 0x22, 0x14, 0x7f, 0x49, 0x7f, 0x49, 0x7f, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58,
-+ 0x58, 0x88, 0x88, 0xec, 0x8c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x12, 0x22, 0x44, 0x08, 0x01,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0x48, 0x88, 0x88, 0x30,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x1a, 0x34, 0x35, 0x32, 0x50,
-+ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x28, 0x48, 0xb0,
-+ 0x80, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x09, 0x09, 0x3f, 0x20, 0x4f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x08, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x44, 0x28, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x31, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x21, 0x10, 0x10, 0x00, 0x00, 0x70, 0x11,
-+ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0xa0, 0x20,
-+ 0x10, 0x10, 0x08, 0x04, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x24, 0x27, 0x24, 0x24,
-+ 0x24, 0x24, 0x25, 0x26, 0x38, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0xd0, 0x60, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x27, 0x20, 0x20, 0x27, 0x39, 0x21, 0x21,
-+ 0x25, 0x25, 0x1d, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x67, 0x00, 0x00,
-+ 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xcc, 0x00, 0x00,
-+ 0xe0, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x23, 0x23, 0x25,
-+ 0x25, 0x29, 0x31, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x88, 0x48,
-+ 0x48, 0x28, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12,
-+ 0x16, 0x1b, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x0c, 0x79, 0x26, 0x18, 0x6c, 0x36, 0x1a, 0x62,
-+ 0x0d, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xc8, 0xb0, 0xd8,
-+ 0x84, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x27,
-+ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x20, 0x10, 0xd4, 0x0c,
-+ 0xfc, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4,
-+ 0x44, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x0c, 0x78, 0x26, 0x18, 0x78, 0x1c, 0x6c, 0x14,
-+ 0x65, 0x19, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xa4, 0xb8,
-+ 0xc8, 0x04, 0x90, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x70, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x70, 0x80, 0x80, 0xfc, 0x40, 0x24, 0x1c, 0xf4,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1e, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x80,
-+ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x09, 0x7f, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x0e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4,
-+ 0x44, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x3a, 0x36,
-+ 0x36, 0x53, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0xe8,
-+ 0xd8, 0x58, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x03, 0x12,
-+ 0x12, 0x13, 0x22, 0x22, 0x43, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x40,
-+ 0x48, 0xf0, 0x40, 0x44, 0xc4, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0b, 0x1a,
-+ 0x2b, 0x4a, 0x12, 0x12, 0x23, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf8, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x17, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x11, 0x11, 0x10, 0x13, 0x1c, 0x70, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x20, 0xe8,
-+ 0x08, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x02, 0x03, 0x7e, 0x13, 0x1a,
-+ 0x14, 0x27, 0x7b, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xd0, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x28, 0x2f, 0x28, 0x28, 0x2e, 0x70,
-+ 0x00, 0x1f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x50, 0x11,
-+ 0x11, 0x12, 0x14, 0x18, 0x13, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x80, 0x80, 0x80, 0xf8,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x09, 0x09, 0x04, 0x04, 0x02,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x4f, 0x49, 0x49, 0x4a, 0x4c,
-+ 0x49, 0x7b, 0x4c, 0x40, 0x01, 0x0e, 0x00, 0x00,
-+ 0x80, 0x90, 0x18, 0xe4, 0x20, 0x24, 0x9c, 0xf0,
-+ 0x10, 0x20, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x10, 0x13, 0x10, 0x55, 0x54, 0x57, 0x54,
-+ 0x55, 0x7d, 0x46, 0x44, 0x0b, 0x00, 0x00, 0x00,
-+ 0x08, 0x90, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x80,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x04, 0x07,
-+ 0x08, 0x08, 0x10, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x08, 0x0f, 0x10, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x42, 0x22, 0x22, 0x04, 0x14,
-+ 0x18, 0x10, 0x20, 0x20, 0x41, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x50, 0x48, 0x48, 0x4c, 0x54,
-+ 0xd0, 0x60, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x7c, 0x13, 0x10, 0x11, 0x7c, 0x17,
-+ 0x11, 0x13, 0x1a, 0x64, 0x0b, 0x00, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc,
-+ 0x00, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1f, 0x33,
-+ 0x52, 0x12, 0x12, 0x1e, 0x10, 0x03, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0x24, 0x2c,
-+ 0x68, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3d, 0x02, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x7c, 0x40,
-+ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x09, 0x49, 0x22, 0x2c, 0x08, 0x17, 0x21,
-+ 0x7f, 0x02, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x4c, 0xd4, 0x60, 0x80, 0x00,
-+ 0xfc, 0x90, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x19, 0x15, 0x23, 0x41,
-+ 0x3f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x20, 0x60, 0x50, 0x88, 0x04,
-+ 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x14, 0x14, 0x16, 0x19,
-+ 0x10, 0x17, 0x20, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x90, 0x90, 0x98, 0xa4,
-+ 0xc4, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x12, 0x1c,
-+ 0x70, 0x13, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x50, 0x50, 0x50, 0x58, 0xe4, 0x44,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x10, 0x3f, 0x53, 0x12,
-+ 0x13, 0x13, 0x12, 0x13, 0x13, 0x1c, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x08, 0x00, 0x00,
-+ 0x08, 0x0a, 0x0a, 0x13, 0x12, 0x31, 0x53, 0x16,
-+ 0x1b, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x98, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x11,
-+ 0x11, 0x7f, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x7f, 0x12,
-+ 0x1e, 0x1e, 0x12, 0x1e, 0x73, 0x02, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00,
-+ 0xf8, 0x48, 0x30, 0x70, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x22, 0x22, 0x3e, 0x22, 0x20, 0x00, 0x00,
-+ 0x80, 0x90, 0x88, 0x88, 0x80, 0xfc, 0x48, 0x48,
-+ 0x50, 0x30, 0x20, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x1f, 0x04, 0x7f,
-+ 0x05, 0x19, 0x6f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf0, 0x40, 0xfc,
-+ 0x40, 0x30, 0xec, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f,
-+ 0x02, 0x7f, 0x04, 0x0f, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0,
-+ 0x00, 0xfc, 0x20, 0x40, 0xe0, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x21, 0x7f, 0x08, 0x04, 0x7f,
-+ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x20, 0x40, 0xfc,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x06, 0x79, 0x49, 0x2a, 0x24, 0x08, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x10, 0x24,
-+ 0x44, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x01,
-+ 0x02, 0x0c, 0x30, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0xa0, 0xc0, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x10, 0x10, 0x1f,
-+ 0x70, 0x10, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0x20, 0x40, 0x40, 0xfc,
-+ 0xe0, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x09, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, 0x48, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x3f, 0x00, 0x1f, 0x10, 0x1f,
-+ 0x12, 0x17, 0x16, 0x2a, 0x32, 0x46, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x50, 0xfc, 0x40, 0xc8,
-+ 0x28, 0x30, 0x90, 0xb4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x41, 0x20, 0x20, 0x07, 0x09,
-+ 0x09, 0x09, 0x11, 0x12, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xe0, 0x1c, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x11, 0x22, 0x11, 0x08, 0x01, 0x01,
-+ 0x11, 0x12, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x88, 0x88, 0x10, 0x20, 0x10, 0x88, 0x00, 0x08,
-+ 0x08, 0x90, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x11, 0x08, 0x08, 0x01, 0x7f,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x18, 0xe8, 0x08, 0x10, 0xa0, 0x40, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x16, 0x10, 0x16,
-+ 0x12, 0x17, 0x28, 0x2f, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0xb0, 0x80, 0xb0,
-+ 0x80, 0xf0, 0x80, 0xf8, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x08, 0x08, 0x10, 0x1f, 0x32,
-+ 0x52, 0x13, 0x12, 0x1e, 0x10, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x94, 0x94, 0x0c, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x2f, 0x28, 0x28, 0x2e, 0x70, 0x3f,
-+ 0x02, 0x07, 0x1c, 0x64, 0x07, 0x04, 0x00, 0x00,
-+ 0x80, 0x88, 0x90, 0xe4, 0x84, 0x7c, 0x00, 0xf8,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x0f, 0x11, 0x2a, 0x64, 0x18, 0x1f, 0x60,
-+ 0x1f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0x10, 0xec, 0x00,
-+ 0xf8, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x03, 0x06, 0x78, 0x17,
-+ 0x10, 0x1f, 0x15, 0x15, 0x29, 0x43, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x80, 0xc0, 0x3c, 0xd0,
-+ 0x10, 0xf0, 0x90, 0x50, 0x50, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x12, 0x09, 0x08, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x70, 0x90, 0x10, 0x20, 0x40, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x7f, 0x08, 0x7f, 0x08,
-+ 0x19, 0x36, 0x52, 0x15, 0x19, 0x60, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x04, 0x1f, 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x15,
-+ 0x1f, 0x15, 0x1f, 0x7f, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0x48,
-+ 0x50, 0x30, 0x24, 0xd4, 0x8c, 0x04, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x2a, 0x32, 0x2d, 0x25, 0x26,
-+ 0x27, 0x24, 0x39, 0x21, 0x22, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xe8, 0xb0, 0x90, 0xf8, 0x04,
-+ 0xf8, 0x40, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x11, 0x0e, 0x1b, 0x71, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x08, 0x48, 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x0c, 0x08, 0x0b,
-+ 0x18, 0x28, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x49, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x30, 0x30, 0x50,
-+ 0x50, 0x90, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x02, 0x3e, 0x02,
-+ 0x3e, 0x02, 0x1c, 0x64, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x40, 0x78, 0x40,
-+ 0x78, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3f, 0x22, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x15, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x30, 0x30, 0x50,
-+ 0x50, 0x90, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x03, 0x21, 0x11, 0x11, 0x01, 0x0f, 0x10,
-+ 0x10, 0x20, 0x20, 0x43, 0x4c, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x30,
-+ 0x30, 0x50, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11,
-+ 0x11, 0x1e, 0x62, 0x04, 0x0b, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x29, 0x25,
-+ 0x25, 0x25, 0x3a, 0x22, 0x25, 0x2e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x13, 0x12, 0x10,
-+ 0x1d, 0x73, 0x0d, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48, 0xa0,
-+ 0x30, 0x28, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x10, 0x18, 0x35, 0x35,
-+ 0x33, 0x55, 0x59, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0xd4, 0xd4, 0x7c, 0x54,
-+ 0xd4, 0xfc, 0x54, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x02, 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x07, 0x0c,
-+ 0x17, 0x64, 0x07, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x20, 0xc0, 0x60, 0x10, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x02, 0x01, 0x79, 0x4b, 0x48, 0x48, 0x48, 0x4f,
-+ 0x48, 0x78, 0x48, 0x41, 0x06, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x2a, 0x2a, 0x2a, 0x2b, 0x2a,
-+ 0x2a, 0x2a, 0x3e, 0x22, 0x20, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x50, 0x88, 0xfc, 0x08,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x7c, 0x13, 0x17, 0x10,
-+ 0x17, 0x1a, 0x62, 0x03, 0x02, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x60, 0x90, 0x08, 0xfc, 0x08,
-+ 0xc8, 0x48, 0x48, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3d, 0x27, 0x64,
-+ 0x25, 0x25, 0x3d, 0x21, 0x21, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x60, 0x90, 0x10, 0xfc, 0x08,
-+ 0xe8, 0x28, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x3e, 0x2f, 0x3e, 0x6f, 0x08,
-+ 0x0f, 0x0f, 0x0f, 0x0f, 0x2a, 0x45, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x70, 0xfc, 0x70, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0xfc, 0xf8, 0x88, 0x70, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x13, 0x12, 0x34, 0x58, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x80,
-+ 0x80, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x08, 0x49, 0x29, 0x2a, 0x08, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x22, 0x22, 0x26, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4b, 0x4a, 0x4c, 0x48, 0x48,
-+ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x80,
-+ 0x80, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x11, 0x13, 0x19,
-+ 0x72, 0x14, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa8, 0x18, 0x00, 0xfc,
-+ 0x40, 0x78, 0x40, 0x78, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x49, 0x4a, 0x4a, 0x7c, 0x48,
-+ 0x48, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x7c, 0x40,
-+ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x2a, 0x2a, 0x2a,
-+ 0x3e, 0x2a, 0x28, 0x08, 0x11, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x17, 0x36,
-+ 0x32, 0x52, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x0a, 0x12, 0x07,
-+ 0x19, 0x61, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x7f, 0x01, 0x1f,
-+ 0x11, 0x13, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xe0, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x22, 0x4c, 0x03,
-+ 0x02, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x48, 0x80, 0x40,
-+ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0xfc, 0x50, 0x50, 0xfc, 0x00,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x7f, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x29, 0x49, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x88, 0x48, 0x48, 0x10, 0x60, 0x40, 0xfc, 0x90,
-+ 0x90, 0xd0, 0x20, 0x30, 0xc8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x49, 0x09, 0x7f,
-+ 0x09, 0x09, 0x09, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x00, 0x7f,
-+ 0x04, 0x17, 0x14, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0x50, 0x60, 0xc0,
-+ 0x40, 0x44, 0x44, 0x3c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x12, 0x12, 0x12, 0x7f,
-+ 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0xfc,
-+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x24, 0x24, 0x3f,
-+ 0x35, 0x55, 0x55, 0x17, 0x14, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x28, 0x4f, 0x19, 0x66, 0x14, 0x1f,
-+ 0x60, 0x3f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x90, 0x60, 0x30, 0xec,
-+ 0x00, 0xf8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x7c, 0x12, 0x11, 0x10, 0x14,
-+ 0x18, 0x71, 0x12, 0x10, 0x10, 0x33, 0x00, 0x00,
-+ 0x24, 0x24, 0x48, 0x90, 0x48, 0xa4, 0x40, 0x78,
-+ 0x88, 0x90, 0x50, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x1f, 0x1c,
-+ 0x77, 0x17, 0x14, 0x17, 0x1c, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x80,
-+ 0xf8, 0xc8, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x13, 0x7d, 0x13, 0x16, 0x11, 0x1b,
-+ 0x74, 0x13, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf8, 0x68, 0xf0, 0x90, 0xf8,
-+ 0x04, 0xf8, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x29, 0x29, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x02, 0x02, 0x34, 0x0c, 0x1a, 0x69, 0x0a, 0x7f,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x0c, 0x00, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x28, 0x31, 0x29,
-+ 0x25, 0x25, 0x25, 0x3a, 0x25, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xfc, 0x88, 0x50, 0xfc, 0x60,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7c, 0x14, 0x15, 0x23, 0x48, 0x08,
-+ 0x7f, 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x02, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x1d,
-+ 0x01, 0x1d, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x70,
-+ 0x00, 0x70, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x7c, 0x14, 0x17, 0x12, 0x1a,
-+ 0x73, 0x12, 0x14, 0x14, 0x18, 0x33, 0x00, 0x00,
-+ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x28, 0x28,
-+ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54,
-+ 0x50, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x12, 0x12, 0x12,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x7a, 0x4a,
-+ 0x4a, 0x4b, 0x7a, 0x4a, 0x43, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xb8, 0x38, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x05, 0x19, 0x69, 0x09, 0x15, 0x2b,
-+ 0x09, 0x15, 0x23, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x30, 0x2c, 0x20, 0x50, 0xa8,
-+ 0x20, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x04, 0x3f, 0x02, 0x7f, 0x04, 0x09,
-+ 0x16, 0x61, 0x0e, 0x00, 0x01, 0x1e, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x90, 0x00, 0xfc, 0xc0, 0x20,
-+ 0x50, 0x8c, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1b, 0x34, 0x37, 0x30, 0x51,
-+ 0x16, 0x11, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0x60, 0x90, 0xe8, 0x40, 0xfc, 0xa0, 0x10,
-+ 0x4c, 0xa0, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x12, 0x12, 0x17, 0x7a, 0x12, 0x1f, 0x10, 0x1f,
-+ 0x74, 0x17, 0x14, 0x17, 0x14, 0x35, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xe0, 0xbc, 0xa8, 0xc8, 0x28, 0xa8,
-+ 0xb0, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x14, 0x14, 0x3f, 0x14, 0x14, 0x7f, 0x01, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x19, 0x1c, 0x1b,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x28, 0x28, 0x10, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x17, 0x36, 0x3d, 0x51, 0x16,
-+ 0x11, 0x17, 0x18, 0x29, 0x26, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xe8, 0x90, 0xa8, 0x44, 0x48,
-+ 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x12, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x1e, 0x62, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x04, 0x02, 0x1f, 0x12, 0x12, 0x17,
-+ 0x18, 0x17, 0x20, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xfc, 0x80, 0x80, 0xf8,
-+ 0x80, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x4f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x4f, 0x08, 0x0f, 0x0f, 0x0f,
-+ 0x7f, 0x16, 0x63, 0x3f, 0x0d, 0x31, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xe0, 0x20, 0xe0, 0xe0, 0xe0,
-+ 0xfc, 0x90, 0x6c, 0xf0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x1f, 0x02, 0x05, 0x19, 0x6f,
-+ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x80, 0x40, 0x30, 0xec,
-+ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x01, 0x3b, 0x01, 0x7f, 0x02, 0x3f, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x26, 0x00, 0x00,
-+ 0x10, 0xf8, 0x10, 0xfc, 0xa8, 0xf4, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x90, 0x0c, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x7f, 0x0a, 0x1f, 0x68, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x50, 0xe8, 0x24, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0xb0, 0x28, 0xfc, 0x50, 0x54, 0xac, 0x38,
-+ 0x48, 0x50, 0xb0, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x0f, 0x1f, 0x72, 0x0d, 0x33, 0x0d, 0x77,
-+ 0x04, 0x07, 0x07, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x30, 0x48, 0x84, 0x60, 0xdc,
-+ 0x40, 0xc0, 0xd0, 0xa0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x3e, 0x7f, 0x09,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x13, 0x1c, 0x27, 0x24, 0x57,
-+ 0x18, 0x08, 0x10, 0x10, 0x20, 0x43, 0x00, 0x00,
-+ 0x50, 0x48, 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x28, 0x28, 0x10, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x10, 0x37, 0x50, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x10, 0x30, 0x50, 0x17,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x20, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x17, 0x10, 0x33, 0x52, 0x12,
-+ 0x12, 0x13, 0x12, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xc8, 0x48, 0x48,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x32, 0x52, 0x13,
-+ 0x12, 0x11, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x25, 0x25, 0x27,
-+ 0x0c, 0x0e, 0x15, 0x25, 0x44, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x10,
-+ 0x10, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xc8, 0x08, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f,
-+ 0x11, 0x0a, 0x06, 0x07, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x00, 0x00, 0x00, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x00, 0x7f, 0x55,
-+ 0x55, 0x7f, 0x55, 0x55, 0x55, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0x74, 0x04, 0x74, 0x54, 0x54,
-+ 0x54, 0x74, 0x54, 0x04, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x44, 0x44, 0x44, 0x44, 0x48, 0x48,
-+ 0x50, 0x60, 0x40, 0x7f, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x98,
-+ 0x78, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x7c, 0x24, 0x27, 0x24,
-+ 0x75, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x50, 0x88, 0x9c, 0xe4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb0, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x31, 0x0b, 0x02, 0x0c, 0x11, 0x66, 0x01,
-+ 0x7f, 0x02, 0x07, 0x08, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0xc0, 0x30, 0x0c, 0x00,
-+ 0xfc, 0x20, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x01, 0x7f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0x80, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x12, 0x13,
-+ 0x14, 0x1d, 0x23, 0x22, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x40, 0xc8,
-+ 0xf0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x11, 0x11,
-+ 0x11, 0x11, 0x11, 0x11, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x20,
-+ 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xb0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x01,
-+ 0x04, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x00,
-+ 0x90, 0x88, 0x04, 0x24, 0x20, 0xe0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x11, 0x10, 0x10, 0x1d,
-+ 0x71, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x00, 0x18, 0xe0, 0x00, 0x04, 0xfc, 0x00, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x04,
-+ 0x04, 0x02, 0x01, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x20,
-+ 0x40, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x02, 0x04, 0x09, 0x09, 0x0e, 0x78,
-+ 0x08, 0x08, 0x08, 0x08, 0x0b, 0x1c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e,
-+ 0x12, 0x7f, 0x14, 0x12, 0x23, 0x40, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x11, 0x12, 0x1c, 0x17,
-+ 0x14, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0xa0, 0xb8, 0xe8, 0xa8,
-+ 0xa8, 0xa8, 0xb8, 0xa0, 0x84, 0x7c, 0x00, 0x00,
-+ 0x20, 0x20, 0x3f, 0x20, 0x20, 0x1f, 0x00, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x70, 0x80, 0x08, 0x08, 0xf8, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1b,
-+ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x11, 0x11, 0x11, 0x11, 0x11,
-+ 0x11, 0x11, 0x11, 0x11, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x2a,
-+ 0x44, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0,
-+ 0xc0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x10,
-+ 0x10, 0x10, 0x10, 0x13, 0x1c, 0x60, 0x00, 0x00,
-+ 0x60, 0x80, 0x00, 0x00, 0x00, 0x78, 0x80, 0x80,
-+ 0x40, 0x40, 0x24, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x12, 0x52, 0x34, 0x27, 0x35, 0x55, 0x17, 0x34,
-+ 0x37, 0x55, 0x15, 0x17, 0x14, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x10, 0x7c, 0x54, 0x54, 0x54,
-+ 0x54, 0x54, 0x5c, 0x50, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x08, 0x0c, 0x1a,
-+ 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xa0, 0xbc, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x7f, 0x0c, 0x0e,
-+ 0x15, 0x15, 0x24, 0x44, 0x07, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40,
-+ 0x60, 0x50, 0x88, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x1c, 0x03, 0x01, 0x02, 0x7f,
-+ 0x01, 0x09, 0x09, 0x11, 0x21, 0x01, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x40, 0x80, 0x20, 0x18, 0xe4,
-+ 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0xa0, 0xa0, 0xfc, 0xa0, 0xa0,
-+ 0x90, 0x90, 0x94, 0xac, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x2f, 0x28, 0x28, 0x2f, 0x72, 0x0c,
-+ 0x03, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x40, 0xc0,
-+ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x27, 0x3d,
-+ 0x24, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x25, 0x25, 0x3c, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0x18, 0xe0, 0x04, 0x04, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x01, 0x01,
-+ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x40, 0x30, 0xc8, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x11, 0x19,
-+ 0x35, 0x54, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3c, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0x28,
-+ 0x28, 0xe8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3f, 0x00, 0x3c,
-+ 0x03, 0x3d, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x20, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0x20, 0xe0, 0xa0,
-+ 0x90, 0xb0, 0xd4, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3d, 0x25, 0x26, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0xb0, 0xa8, 0x84, 0x94, 0x90, 0x70, 0x00, 0x00,
-+ 0x00, 0x3e, 0x01, 0x7d, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa4, 0x28, 0xb0, 0x50, 0x48,
-+ 0x84, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x09, 0x0a, 0x04, 0x19, 0x6f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0xe0, 0x30, 0xec, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x3c, 0x27,
-+ 0x25, 0x3d, 0x1a, 0x14, 0x25, 0x42, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0a, 0x0a, 0x2a, 0x2f, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2f, 0x3b, 0x61, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x1a, 0x2a, 0x7e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x29, 0x25, 0x3f,
-+ 0x23, 0x25, 0x29, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x28, 0x48, 0xf8,
-+ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x0f, 0x09, 0x0f, 0x01, 0x1f,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0,
-+ 0x10, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00,
-+ 0x08, 0x0a, 0x0b, 0x12, 0x12, 0x32, 0x52, 0x12,
-+ 0x12, 0x12, 0x12, 0x13, 0x1c, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x90, 0x50, 0x50, 0x10, 0x10,
-+ 0x10, 0x10, 0xb0, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x37, 0x50, 0x10,
-+ 0x17, 0x12, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x13, 0x12, 0x12, 0x13,
-+ 0x12, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x00, 0x01, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x40, 0x80, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x7f, 0x00, 0x00,
-+ 0x7f, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x08, 0x32, 0x0c, 0x12, 0x7f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x20, 0xc8, 0x30, 0x48, 0xfc,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x10,
-+ 0x1f, 0x71, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x78, 0x48,
-+ 0x4f, 0x49, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x21, 0x11, 0x11, 0x02, 0x02, 0x14,
-+ 0x10, 0x20, 0x20, 0x41, 0x46, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x48, 0x50, 0x40,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x08, 0x08, 0x47, 0x21, 0x21, 0x01, 0x06,
-+ 0x12, 0x11, 0x21, 0x22, 0x4f, 0x40, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x10, 0x10, 0x54, 0x64,
-+ 0xa8, 0x98, 0x10, 0xa8, 0xfc, 0x44, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x21, 0x21, 0x0f, 0x00,
-+ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xa0, 0x10, 0x38, 0xc4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x61, 0x3f, 0x23, 0x2d, 0x2b,
-+ 0x33, 0x2d, 0x25, 0x2b, 0x31, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x0c, 0xf8, 0x18, 0x68, 0x58,
-+ 0x98, 0x68, 0x28, 0x58, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x3f, 0x5b, 0x15, 0x1b, 0x15,
-+ 0x1b, 0x3f, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0xf8, 0xb4, 0x70, 0xb0, 0x50,
-+ 0xb0, 0xf8, 0xf0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2b, 0x08, 0x1f,
-+ 0x28, 0x4f, 0x12, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x7c, 0x10, 0x17, 0x11, 0x21, 0x39, 0x6e,
-+ 0x29, 0x28, 0x39, 0x2a, 0x27, 0x00, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x10, 0x10, 0x54, 0x64,
-+ 0x98, 0x88, 0x10, 0xa8, 0xfc, 0x44, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x09,
-+ 0x09, 0x11, 0x11, 0x21, 0x41, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x20,
-+ 0x10, 0x08, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x02, 0x3f, 0x24, 0x24, 0x24,
-+ 0x24, 0x24, 0x24, 0x24, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x08, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x20, 0x38, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x1f, 0x10, 0x10, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3d, 0x24, 0x27,
-+ 0x3c, 0x27, 0x25, 0x3c, 0x20, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x10, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x02, 0x04, 0x39, 0x08, 0x08, 0x7e, 0x09, 0x08,
-+ 0x3e, 0x23, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x21, 0x21, 0x02, 0x0c,
-+ 0x08, 0x08, 0x10, 0x10, 0x23, 0x2c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x90, 0x50,
-+ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x1f,
-+ 0x14, 0x17, 0x24, 0x24, 0x47, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xc8, 0x70, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x3f, 0x04,
-+ 0x04, 0x04, 0x04, 0x07, 0x78, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0xc0, 0x20,
-+ 0x20, 0x20, 0x14, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x39, 0x07, 0x7a, 0x02, 0x3f, 0x00, 0x3b,
-+ 0x02, 0x3b, 0x2a, 0x2b, 0x3a, 0x20, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x28, 0xa8,
-+ 0xb0, 0x90, 0xb4, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x00, 0x7d, 0x55, 0x55, 0x55, 0x7d, 0x55,
-+ 0x55, 0x55, 0x7d, 0x42, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1f, 0x28, 0x24, 0x45, 0x00,
-+ 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xa0, 0x90, 0x10, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x41, 0x01, 0x01, 0x7f,
-+ 0x00, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x40, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x00,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00,
-+ 0xfc, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x7c, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x44, 0x44,
-+ 0x47, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x09, 0x7f, 0x22, 0x12, 0x14,
-+ 0x7f, 0x08, 0x3e, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0, 0x50,
-+ 0x70, 0xb0, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x7f,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc,
-+ 0x00, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x15, 0x7b, 0x2b, 0x29, 0x29,
-+ 0x7b, 0x55, 0x1a, 0x12, 0x24, 0x49, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0xa0, 0x20,
-+ 0xfc, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x7f, 0x02, 0x04, 0x3f,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x80, 0x60, 0x90,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x09, 0x7f, 0x03, 0x0d, 0x71,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x30, 0xd0, 0x10, 0x20, 0xfc, 0x80, 0x60, 0x1c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x10,
-+ 0x14, 0x12, 0x22, 0x20, 0x4f, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xa8, 0xa0,
-+ 0xa8, 0xa8, 0xb0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x21, 0x26, 0x00, 0x13,
-+ 0x1e, 0x11, 0x20, 0x21, 0x46, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xa0, 0x58,
-+ 0x4c, 0x50, 0xe0, 0x50, 0x4c, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2b, 0x0a, 0x1c,
-+ 0x2f, 0x48, 0x10, 0x11, 0x22, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x40, 0x40,
-+ 0xfc, 0xc0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x06, 0x38, 0x3f, 0x24, 0x25, 0x4f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x30, 0xc0, 0xfc, 0x90, 0x10, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x21, 0x41, 0x1f, 0x01, 0x0f,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0xe0,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x22, 0x14,
-+ 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0x78, 0x48, 0x50, 0x50,
-+ 0x48, 0x44, 0x44, 0x44, 0x58, 0x40, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x08, 0x0c, 0x17, 0x14,
-+ 0x37, 0x55, 0x14, 0x15, 0x16, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0x40, 0xf8, 0x90, 0xe0,
-+ 0x5c, 0xf8, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13,
-+ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0x20, 0x28, 0x04, 0x14, 0xf0, 0x00, 0x00,
-+ 0x08, 0x08, 0x2f, 0x28, 0x28, 0x2e, 0x71, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x3f, 0x00,
-+ 0x00, 0x00, 0x13, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x10,
-+ 0x20, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x14, 0x12, 0x1f, 0x13,
-+ 0x1c, 0x1f, 0x11, 0x23, 0x20, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x90, 0xa0, 0xfc, 0xe0,
-+ 0x98, 0xfc, 0x20, 0xa0, 0xe0, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x01, 0x14, 0x14, 0x24, 0x03,
-+ 0x08, 0x36, 0x35, 0x51, 0x55, 0x0c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0x90, 0x88, 0x28, 0xe0,
-+ 0x20, 0xd8, 0xd4, 0x44, 0x50, 0x30, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x08, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x19, 0x61, 0x0f, 0x01, 0x3f,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x30, 0x0c, 0xe0, 0x00, 0xf8,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x44, 0x07, 0x04, 0x07, 0x04,
-+ 0x00, 0x7f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0xc0, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x04, 0x08, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x73, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0xfc, 0x08, 0x48, 0xa8,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x16, 0x11, 0x10, 0x1f,
-+ 0x70, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x50, 0x4c, 0xf0, 0x40, 0xfc,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x14, 0x36,
-+ 0x35, 0x55, 0x14, 0x24, 0x24, 0x4d, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x48, 0x48, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x7e, 0x08, 0x7e,
-+ 0x08, 0x2d, 0x2a, 0x2a, 0x48, 0x18, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c,
-+ 0x70, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x07, 0x1c, 0x67,
-+ 0x04, 0x07, 0x04, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x10, 0xf0, 0x20, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x09, 0x0c, 0x1a,
-+ 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x24,
-+ 0x28, 0x78, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x07,
-+ 0x1c, 0x67, 0x04, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x20, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x39, 0x03, 0x7e, 0x03, 0x3a, 0x03, 0x3a,
-+ 0x07, 0x38, 0x29, 0x2e, 0x38, 0x20, 0x00, 0x00,
-+ 0x88, 0x08, 0xc8, 0x48, 0xfc, 0x48, 0xe8, 0x78,
-+ 0xd8, 0xc8, 0x48, 0x48, 0x48, 0xd8, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x13, 0x12, 0x03, 0x02, 0x72, 0x12,
-+ 0x14, 0x15, 0x19, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0x90,
-+ 0x00, 0xa8, 0x54, 0x54, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x48, 0x48,
-+ 0x50, 0x60, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x06, 0x06,
-+ 0x0a, 0x0a, 0x12, 0x22, 0x42, 0x06, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x17, 0x11, 0x31, 0x5f, 0x10,
-+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x10, 0x10, 0x24, 0x42,
-+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x09, 0x09,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2d, 0x29, 0x4a,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x88, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x3f, 0x24, 0x3f, 0x1e, 0x13,
-+ 0x1e, 0x12, 0x1e, 0x14, 0x1e, 0x61, 0x00, 0x00,
-+ 0x78, 0x90, 0x20, 0xf8, 0x48, 0xf8, 0x10, 0xfc,
-+ 0x90, 0x50, 0x50, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0xc0, 0x40, 0x78, 0x88, 0x88, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x03, 0x0c, 0x79, 0x49, 0x2a, 0x2c, 0x7f, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x49, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80, 0xfc,
-+ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x01, 0x7f, 0x02,
-+ 0x07, 0x1c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x00, 0xfc, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x28, 0x48, 0x0e, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x29, 0x49, 0x08, 0x19, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x88, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x02, 0x02, 0x3e, 0x20, 0x3e, 0x22,
-+ 0x12, 0x0e, 0x1a, 0x62, 0x02, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x80, 0xf8, 0x88,
-+ 0x48, 0x38, 0x68, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x7f, 0x04, 0x1f, 0x64,
-+ 0x07, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x02, 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x1f,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf0,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x13, 0x12, 0x1e, 0x12, 0x12, 0x1e,
-+ 0x12, 0x12, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x48, 0x50,
-+ 0x50, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x00, 0x7f, 0x00,
-+ 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x01, 0x01, 0x3f, 0x01, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x0f, 0x11, 0x21, 0x7f, 0x03,
-+ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x80,
-+ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x1e, 0x24, 0x27, 0x54,
-+ 0x08, 0x09, 0x0a, 0x14, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x48, 0x33, 0x12, 0x34, 0x48, 0x0f, 0x18,
-+ 0x29, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x10, 0xfc, 0x10,
-+ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x01, 0x7d, 0x11, 0x12, 0x14, 0x7f, 0x10,
-+ 0x10, 0x11, 0x1e, 0x64, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x19, 0x70, 0x17, 0x10, 0x7f, 0x12, 0x1b,
-+ 0x36, 0x37, 0x50, 0x13, 0x10, 0x17, 0x00, 0x00,
-+ 0x08, 0xf0, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3b, 0x28, 0x2f, 0x38, 0x2b, 0x2a, 0x3b,
-+ 0x2a, 0x2b, 0x28, 0x2b, 0x28, 0x4f, 0x00, 0x00,
-+ 0x08, 0xf0, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00,
-+ 0x08, 0x0b, 0x3d, 0x09, 0x09, 0x7f, 0x09, 0x29,
-+ 0x2f, 0x29, 0x3b, 0x28, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x78, 0xc8, 0x68, 0x58, 0xd0,
-+ 0x58, 0x68, 0xe4, 0x44, 0x40, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x41, 0x27, 0x25, 0x05, 0x15,
-+ 0x16, 0x14, 0x27, 0x24, 0x47, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x58,
-+ 0x38, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x01, 0x02, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x17, 0x17, 0x3b, 0x50, 0x17,
-+ 0x10, 0x13, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xfc, 0x58, 0x58, 0x00, 0xfc,
-+ 0x40, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x00, 0x01, 0x3e, 0x12, 0x09, 0x3f, 0x20, 0x5f,
-+ 0x04, 0x02, 0x01, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x30, 0xd0, 0x10, 0x20, 0x40, 0xfc, 0x08, 0xe0,
-+ 0x20, 0x40, 0x80, 0x80, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x48,
-+ 0x48, 0x79, 0x49, 0x42, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04,
-+ 0x7f, 0x08, 0x14, 0x22, 0x42, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x20,
-+ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x13, 0x12, 0x15,
-+ 0x1c, 0x70, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0x20, 0xfc, 0x08, 0xf0,
-+ 0x90, 0xa0, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x79, 0x17, 0x10, 0x3b, 0x36,
-+ 0x37, 0x54, 0x52, 0x13, 0x1e, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0xc8, 0x3c, 0xc8, 0x28, 0xd8, 0x58,
-+ 0xc8, 0x48, 0x88, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x0b, 0x72, 0x14, 0x0d, 0x13, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0e, 0x00, 0x00,
-+ 0x08, 0xf4, 0x44, 0xa8, 0x90, 0xfc, 0x08, 0xf0,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x7f,
-+ 0x02, 0x3f, 0x24, 0x24, 0x24, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xfc,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22,
-+ 0x22, 0x24, 0x28, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x88,
-+ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x05, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-+ 0x26, 0x3c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x50, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x17, 0x11, 0x1f, 0x10,
-+ 0x17, 0x14, 0x14, 0x27, 0x24, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x08, 0xe8, 0x08,
-+ 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x00, 0x00, 0x7f,
-+ 0x01, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x00, 0x00, 0xfc,
-+ 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x00, 0x3f, 0x22, 0x22, 0x3e,
-+ 0x08, 0x2c, 0x2a, 0x2b, 0x4a, 0x18, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x60, 0x60,
-+ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x2c, 0x2a, 0x2a, 0x48,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x08, 0x88, 0x88, 0x88, 0xc8, 0xa8, 0xa8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0c, 0x15, 0x16, 0x34, 0x57, 0x14,
-+ 0x15, 0x14, 0x15, 0x14, 0x10, 0x13, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0xa0, 0xe0, 0x3c, 0x40,
-+ 0x90, 0x60, 0x88, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x02, 0x3c, 0x08, 0x7e, 0x1d, 0x2a, 0x4a, 0x09,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x50, 0x50, 0x88, 0x04,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x13, 0x14, 0x1c,
-+ 0x71, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x42, 0x27, 0x26, 0x0a, 0x02,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x68, 0xd8, 0xd8, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f,
-+ 0x02, 0x02, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xcc,
-+ 0x40, 0x78, 0x48, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x24, 0xa4, 0xa8, 0xb0, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0xc8, 0x30, 0x20, 0xd0, 0x08,
-+ 0x64, 0x10, 0x00, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x67, 0x28, 0x1b, 0x26, 0x7f,
-+ 0x12, 0x3b, 0x36, 0x37, 0x52, 0x14, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x48, 0x58,
-+ 0xe8, 0xf8, 0xe8, 0x58, 0x58, 0x48, 0x00, 0x00,
-+ 0x00, 0x7f, 0x22, 0x16, 0x1a, 0x63, 0x06, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x58, 0x68, 0x88, 0x18, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x01, 0x7f, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xfc, 0x80, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x0a, 0x09, 0x09, 0x08, 0x7f,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x02, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x05, 0x05, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x20, 0x50, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x09,
-+ 0x17, 0x61, 0x09, 0x11, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x40, 0x88,
-+ 0x90, 0x60, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x04, 0x3f, 0x12, 0x7f, 0x1e, 0x1e, 0x1e, 0x12,
-+ 0x17, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0x78, 0x88, 0x78, 0x70, 0x70, 0x74,
-+ 0x3c, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x12, 0x1f, 0x34, 0x5f, 0x1e, 0x1f, 0x07, 0x7f,
-+ 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x48, 0x7c, 0xd0, 0x78, 0x78, 0xfc, 0xc0, 0xfc,
-+ 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x3d, 0x27, 0x24, 0x3f, 0x0a, 0x2a, 0x2f,
-+ 0x29, 0x2b, 0x2b, 0x3d, 0x61, 0x03, 0x00, 0x00,
-+ 0x10, 0x18, 0xd4, 0x14, 0x90, 0xfc, 0x90, 0x90,
-+ 0x30, 0xb0, 0x70, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x8c, 0xf8, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x02, 0x03, 0x72, 0x13,
-+ 0x15, 0x15, 0x19, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x18, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x7f, 0x02, 0x1f, 0x12, 0x14,
-+ 0x18, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xfc, 0x80, 0xf0, 0x90, 0xb0,
-+ 0x70, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7e, 0x18, 0x18, 0x7e, 0x5b, 0x5b, 0x5e,
-+ 0x6e, 0x46, 0x7e, 0x43, 0x7f, 0x42, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x28, 0x28, 0x08, 0x00, 0x00,
-+ 0x08, 0x0f, 0x18, 0x1f, 0x28, 0x4f, 0x08, 0x0f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xf8,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x60,
-+ 0x68, 0x68, 0xb4, 0xbc, 0x24, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x28, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x50, 0x13,
-+ 0x10, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x20, 0x70, 0x88, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x12, 0x11, 0x21, 0x4f, 0x08, 0x10, 0x12, 0x32,
-+ 0x52, 0x12, 0x13, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x40, 0x40, 0x78,
-+ 0x40, 0x40, 0x40, 0xc0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x08, 0x08, 0x0b,
-+ 0x7c, 0x08, 0x08, 0x10, 0x11, 0x20, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x60, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x04, 0x03, 0x7f, 0x03, 0x0d, 0x33,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0x00, 0xf8, 0x30, 0x40, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x20, 0x27, 0x00, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x0a, 0x42, 0x22, 0x22, 0x0f, 0x10,
-+ 0x16, 0x11, 0x20, 0x20, 0x43, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00,
-+ 0x08, 0x30, 0x00, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x11, 0x49, 0x22, 0x3e, 0x2a, 0x3f, 0x2a, 0x3e,
-+ 0x7f, 0x00, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0x24, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x15, 0x65, 0x2a, 0x18, 0x24, 0x7d,
-+ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x88, 0xc8, 0x28, 0x30, 0xfc, 0x90, 0x90, 0x50,
-+ 0x5c, 0x50, 0x50, 0xb0, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x01, 0x3f, 0x01, 0x7f, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x9c, 0xf4, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x0f, 0x08, 0x08, 0x7f, 0x08,
-+ 0x0a, 0x29, 0x29, 0x28, 0x49, 0x1a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x50, 0x50, 0x50,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x11, 0x11, 0x12, 0x12,
-+ 0x15, 0x18, 0x10, 0x21, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xd0, 0x50, 0x50,
-+ 0x50, 0x90, 0x94, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x48, 0x0f, 0x10, 0x13,
-+ 0x32, 0x53, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x80, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0b, 0x42, 0x22, 0x2f, 0x02, 0x13,
-+ 0x16, 0x16, 0x2a, 0x2a, 0x42, 0x47, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0x48, 0xc8, 0x28, 0x30,
-+ 0xb0, 0x90, 0x30, 0x48, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x11, 0x18,
-+ 0x34, 0x54, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x15, 0x65, 0x2a, 0x18, 0x24, 0x7d,
-+ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x80, 0xf8, 0xa0, 0x78,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x29, 0x25,
-+ 0x3f, 0x23, 0x25, 0x39, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x28, 0x48,
-+ 0xf8, 0x88, 0x48, 0x38, 0x08, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x1f, 0x12, 0x1f, 0x3e, 0x0c, 0x74,
-+ 0x0d, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd0, 0x70, 0x54, 0x8c,
-+ 0x04, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x01, 0x1e, 0x12, 0x1f, 0x3e, 0x06,
-+ 0x7c, 0x05, 0x0e, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0, 0x50, 0x74,
-+ 0x8c, 0x0c, 0x04, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x21,
-+ 0x21, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x08,
-+ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x21, 0x49, 0x0f, 0x11, 0x11, 0x35,
-+ 0x55, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xbc, 0x40, 0x40, 0xc0, 0x3c, 0x88, 0x88,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x1f, 0x00, 0x02, 0x72, 0x12,
-+ 0x14, 0x14, 0x18, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0x90, 0x88, 0xfc, 0x80, 0xa0, 0x90, 0x90,
-+ 0x88, 0x88, 0x88, 0x80, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x17, 0x11, 0x31, 0x52, 0x14,
-+ 0x11, 0x13, 0x14, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x80, 0x90, 0x18, 0xe4, 0x20, 0x24, 0x9c, 0xf0,
-+ 0x10, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x57, 0x54, 0x54, 0x55, 0x56,
-+ 0x54, 0x7d, 0x46, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x50, 0x98, 0xe4, 0xa0, 0xa4, 0x9c, 0xf0,
-+ 0x90, 0xa0, 0x40, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04,
-+ 0x1f, 0x68, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x40,
-+ 0xf0, 0x2c, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7b, 0x4a, 0x49, 0x79, 0x4f, 0x4d, 0x79,
-+ 0x4a, 0x4e, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0x20, 0xfc, 0x18, 0xf8,
-+ 0xd0, 0xd0, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x13, 0x7e, 0x04, 0x45, 0x26,
-+ 0x28, 0x29, 0x0e, 0x70, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x50, 0x88, 0xfc, 0xa4, 0xa4, 0x9c, 0xf0,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x01, 0x3e, 0x11, 0x09, 0x3f, 0x28, 0x4e,
-+ 0x12, 0x32, 0x0d, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x30, 0xd0, 0x10, 0x20, 0x40, 0xfc, 0x18, 0xf8,
-+ 0x90, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0a, 0x3e, 0x3f, 0x32, 0x44, 0x1b, 0x00, 0x00,
-+ 0x20, 0x30, 0x48, 0xf4, 0x50, 0x54, 0xcc, 0x78,
-+ 0x48, 0xd0, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x22, 0x13, 0x16, 0x06, 0x0b, 0x12,
-+ 0x12, 0x23, 0x22, 0x42, 0x43, 0x02, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x4a, 0x0b, 0x12, 0x12, 0x32,
-+ 0x52, 0x12, 0x12, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0xfc, 0x20, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x1f, 0x28, 0x48, 0x0f,
-+ 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x1a, 0x36, 0x36,
-+ 0x32, 0x52, 0x54, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0xfc, 0x20, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x1f, 0x25, 0x25, 0x55,
-+ 0x09, 0x09, 0x09, 0x11, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x28, 0x28, 0xe8, 0x28, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x41, 0x21, 0x21, 0x00, 0x13,
-+ 0x10, 0x10, 0x27, 0x20, 0x40, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x10, 0x60, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x11, 0x09, 0x4b, 0x22, 0x27, 0x0a, 0x0b, 0x12,
-+ 0x23, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x20, 0xf8, 0x40, 0xf0, 0x40, 0xf0, 0x40,
-+ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x08, 0x0b,
-+ 0x18, 0x1b, 0x28, 0x2b, 0x48, 0x48, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x08, 0xe8,
-+ 0x88, 0xe8, 0x88, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14,
-+ 0x17, 0x14, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0d, 0x13, 0x7f,
-+ 0x09, 0x2d, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x4c, 0x70, 0xc0, 0x48, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x02, 0x42, 0x22, 0x24, 0x04, 0x09, 0x04, 0x74,
-+ 0x12, 0x12, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0x90, 0x90, 0x20, 0x90, 0x90,
-+ 0x48, 0x48, 0x48, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x20, 0x17, 0x10, 0x03, 0x02, 0x73, 0x13,
-+ 0x13, 0x10, 0x1f, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xc0, 0xf8, 0xd8, 0x38, 0xf8,
-+ 0xf8, 0x10, 0xfc, 0x90, 0x30, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x00, 0x78,
-+ 0x08, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x23, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x22, 0x22, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x32, 0x4a,
-+ 0x0c, 0x04, 0x0d, 0x12, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x94, 0x14, 0x0c, 0x80, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x04, 0x05, 0x09, 0x1e,
-+ 0x2a, 0x49, 0x08, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1e, 0x12, 0x12, 0x12, 0x1e,
-+ 0x12, 0x10, 0x11, 0x11, 0x22, 0x40, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x1f, 0x01, 0x1f, 0x01,
-+ 0x7f, 0x07, 0x1f, 0x64, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0xe0, 0x40,
-+ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x48, 0x4b, 0x78, 0x4f,
-+ 0x48, 0x4b, 0x7c, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x44, 0xf8, 0x50, 0xfc,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x27, 0x00, 0x10,
-+ 0x13, 0x1d, 0x21, 0x21, 0x41, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0xfc, 0x40, 0x80,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11,
-+ 0x11, 0x11, 0x20, 0x2a, 0x49, 0x11, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xe0, 0x20, 0x00, 0x48, 0x24, 0x24, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x0c, 0x0f, 0x12, 0x7e,
-+ 0x09, 0x2e, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x40, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x10, 0xe0, 0x40, 0xfc,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x1f, 0x01, 0x1f, 0x01,
-+ 0x7f, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0x00, 0xf0, 0x00,
-+ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x1f, 0x12, 0x1f, 0x0f, 0x01, 0x7f,
-+ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0x90, 0xf0, 0xf0, 0x40, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3c, 0x01, 0x7e, 0x03, 0x3c,
-+ 0x3c, 0x01, 0x3e, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x48, 0xf8, 0x50, 0xfc, 0x40,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7c, 0x00, 0x3f, 0x00, 0x3c,
-+ 0x01, 0x3e, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x40, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x26, 0x38, 0x61, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x7e, 0x08, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x1a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x50, 0x50, 0x50,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x04, 0x04, 0x04,
-+ 0x0f, 0x08, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x40,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x17, 0x11, 0x10, 0x1f,
-+ 0x10, 0x10, 0x20, 0x20, 0x40, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x20, 0xc0, 0xfc,
-+ 0x88, 0x90, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x49, 0x0a, 0x15, 0x10, 0x37,
-+ 0x50, 0x11, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0x08, 0xf4, 0x40, 0xfc,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x12, 0x12, 0x3c, 0x06, 0x18,
-+ 0x61, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x26, 0x27, 0x7a, 0x12, 0x7f,
-+ 0x12, 0x56, 0x3b, 0x36, 0x1c, 0x61, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xc8, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x28, 0x31, 0x2b, 0x24, 0x27,
-+ 0x24, 0x25, 0x39, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x90, 0x08, 0xf4, 0x40, 0xfc,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x09, 0x09, 0x0b, 0x15, 0x19, 0x31, 0x51, 0x1f,
-+ 0x12, 0x13, 0x14, 0x19, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x0a, 0x09, 0x0f, 0x15, 0x19, 0x31, 0x53, 0x12,
-+ 0x13, 0x13, 0x12, 0x13, 0x13, 0x1c, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0xe8, 0x20, 0xe0, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x27, 0x24, 0x3f, 0x24, 0x25,
-+ 0x3e, 0x27, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xf8, 0x40, 0xfc, 0xa0, 0x50,
-+ 0x48, 0xf4, 0x90, 0x90, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x27, 0x24,
-+ 0x24, 0x28, 0x28, 0x30, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0xc0, 0x00, 0x00, 0xf8, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x04, 0x7f, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x4a, 0x4c, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x04, 0x3f, 0x24, 0x24,
-+ 0x2f, 0x34, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0x98,
-+ 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x48,
-+ 0x7b, 0x4a, 0x43, 0x02, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x12, 0x09, 0x3f, 0x27, 0x44, 0x17, 0x1f, 0x10,
-+ 0x0f, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0xc8, 0x40, 0xf0, 0xc0, 0x08,
-+ 0xf8, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x4b, 0x2a, 0x29, 0x08, 0x1f, 0x69, 0x08,
-+ 0x09, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x1c, 0xe4, 0x48, 0x30, 0x10, 0xfc, 0x10, 0x90,
-+ 0x30, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x7f, 0x01, 0x02,
-+ 0x7f, 0x04, 0x0f, 0x10, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0x00,
-+ 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x24,
-+ 0x7b, 0x4a, 0x0f, 0x16, 0x23, 0x42, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x29, 0x45, 0x05, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x28, 0x20, 0x40, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x4a, 0x29, 0x29, 0x08, 0x0f,
-+ 0x19, 0x68, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x18, 0x60, 0x88, 0x48, 0x50, 0x20, 0x10, 0xfc,
-+ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x09, 0x09, 0x11, 0x11,
-+ 0x21, 0x41, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x08,
-+ 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x09, 0x09, 0x11, 0x11, 0x21, 0x41,
-+ 0x03, 0x00, 0x00, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x10, 0x08, 0x14, 0x14, 0x20,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x09, 0x09, 0x3f, 0x20, 0x27, 0x24,
-+ 0x24, 0x27, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x20, 0xf8, 0x08, 0xc8, 0x48,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x10, 0x20, 0x3f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x80, 0x80, 0x80, 0xf8,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x11,
-+ 0x11, 0x12, 0x12, 0x24, 0x28, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x80, 0x80, 0xfc, 0xc0,
-+ 0xa0, 0xa0, 0x90, 0x88, 0x84, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x1a, 0x17, 0x1f, 0x18,
-+ 0x1f, 0x1d, 0x2f, 0x2c, 0x48, 0x09, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0xa0, 0x20, 0xbc, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x04, 0x3f, 0x0a, 0x7f, 0x00, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x04, 0x7f, 0x04, 0x04, 0x00, 0x00,
-+ 0x10, 0x90, 0x20, 0xa8, 0x48, 0x10, 0x10, 0x24,
-+ 0x44, 0x08, 0x08, 0x90, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x00, 0x00, 0x79, 0x0f, 0x09, 0x0f,
-+ 0x11, 0x1f, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x84, 0x24, 0xe8, 0x30, 0xe0,
-+ 0x10, 0xf0, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x12, 0x12, 0x1c,
-+ 0x70, 0x10, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00,
-+ 0x40, 0x40, 0x60, 0x50, 0x48, 0x48, 0x54, 0x54,
-+ 0xe0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x11, 0x11, 0x16,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x12, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x1f,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xf0, 0xc0,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x10, 0x1b,
-+ 0x70, 0x11, 0x11, 0x13, 0x14, 0x38, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x03, 0x3c,
-+ 0x04, 0x7f, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00,
-+ 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x48, 0x48, 0x49, 0x79, 0x4a,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00,
-+ 0x7c, 0x44, 0x7c, 0x44, 0x7c, 0x44, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1d, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x48, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x70, 0x10, 0x90, 0x90, 0x90, 0x08, 0x48, 0x44,
-+ 0x40, 0xa0, 0x90, 0x18, 0xe4, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x0b, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0xfc, 0x50, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7f, 0x13, 0x15, 0x39, 0x35,
-+ 0x35, 0x51, 0x50, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x90, 0x90, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xf8,
-+ 0x20, 0xfc, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x21, 0x21, 0x02, 0x04,
-+ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0c, 0x0a, 0x41, 0x21, 0x23, 0x02, 0x13,
-+ 0x12, 0x13, 0x22, 0x22, 0x42, 0x42, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x50, 0x60, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x0a, 0x42, 0x22, 0x2f, 0x00, 0x12,
-+ 0x12, 0x14, 0x28, 0x20, 0x41, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x50, 0x48,
-+ 0x54, 0xd4, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x22, 0x07, 0x16,
-+ 0x16, 0x1a, 0x2a, 0x22, 0x42, 0x42, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xc8, 0x48, 0x78, 0x48, 0xc8,
-+ 0xf8, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x0a, 0x2c, 0x2b, 0x28, 0x48,
-+ 0x0f, 0x08, 0x14, 0x13, 0x22, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xd0, 0xf8, 0x90, 0x90,
-+ 0xfc, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x08, 0x0f, 0x18, 0x2f, 0x48, 0x0f,
-+ 0x08, 0x0f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xf0,
-+ 0x80, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x25, 0x3f, 0x25, 0x25,
-+ 0x3d, 0x25, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x30, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18,
-+ 0x2a, 0x4a, 0x12, 0x12, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x09, 0x11, 0x63, 0x00, 0x07, 0x7f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x20, 0x18, 0x24, 0xc0, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x11, 0x10, 0x11, 0x3d, 0x25,
-+ 0x65, 0x25, 0x25, 0x3d, 0x25, 0x01, 0x00, 0x00,
-+ 0x40, 0x44, 0x44, 0x48, 0x50, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x11, 0x3f, 0x25, 0x65,
-+ 0x25, 0x25, 0x3c, 0x22, 0x22, 0x04, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0xf8, 0x20, 0xf8,
-+ 0x20, 0xfc, 0x00, 0xa8, 0x54, 0x04, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7f, 0x08, 0x08, 0x13, 0x18,
-+ 0x34, 0x57, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x09, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2b, 0x49, 0x0a, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0, 0xa8,
-+ 0xa8, 0x24, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x1f, 0x04, 0x7f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x40, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x25, 0x42, 0x01, 0x1f,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xe0, 0x00,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2d, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x0a, 0x0b, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20, 0xf8,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0xb0, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x21, 0x11, 0x11, 0x01, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0x10, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x4a, 0x29, 0x28,
-+ 0x0b, 0x19, 0x68, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x3c, 0xc8, 0x48, 0x30, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x18, 0x1f, 0x28,
-+ 0x4f, 0x08, 0x0f, 0x14, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x80, 0xf8, 0x80, 0xf0, 0x80,
-+ 0xf0, 0x80, 0xf8, 0x90, 0x48, 0x44, 0x00, 0x00,
-+ 0x10, 0x17, 0x21, 0x4f, 0x0f, 0x15, 0x17, 0x35,
-+ 0x57, 0x11, 0x17, 0x11, 0x1e, 0x10, 0x00, 0x00,
-+ 0xc0, 0x3c, 0x00, 0xc0, 0xfc, 0x48, 0xc8, 0x48,
-+ 0xc8, 0x08, 0xc8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x01,
-+ 0x7f, 0x02, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xfc, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x01, 0x3e,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x60, 0x20, 0xa0, 0x90, 0x90, 0x48, 0x48, 0x44,
-+ 0x40, 0x60, 0x90, 0x90, 0xe8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xa0, 0xa0, 0xb8, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3e,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x02, 0x07, 0x18, 0x7f, 0x11, 0x1f, 0x13, 0x0d,
-+ 0x72, 0x0d, 0x32, 0x0c, 0x30, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xf0, 0x10, 0xf0, 0x18, 0x90,
-+ 0xa0, 0xc0, 0xa0, 0x98, 0x84, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x27, 0x44, 0x07, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0xc8, 0x40, 0xc0, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x4f, 0x29, 0x1f, 0x69, 0x08, 0x7f, 0x02,
-+ 0x1f, 0x14, 0x18, 0x1f, 0x1f, 0x10, 0x00, 0x00,
-+ 0x3c, 0xc8, 0x50, 0xfc, 0x10, 0xb0, 0xfc, 0x80,
-+ 0xf0, 0xb0, 0xf0, 0xf0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xa0, 0xa0, 0xb8, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x18, 0xe0, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0xf8, 0x90, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x2b, 0x28, 0x31, 0x29, 0x25,
-+ 0x25, 0x25, 0x38, 0x27, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0xf8, 0x90, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x15, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x11, 0x09,
-+ 0x05, 0x03, 0x03, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x00, 0x00, 0x3d, 0x05, 0x09, 0x09,
-+ 0x11, 0x21, 0x43, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x88, 0x48, 0x50, 0x20, 0x20,
-+ 0x10, 0x08, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x09, 0x7f, 0x09, 0x3f,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x60, 0x80, 0x00, 0xf8, 0x20, 0xfc, 0x20, 0xf8,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x40, 0x07, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x00, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x01, 0x1e, 0x04, 0x3f, 0x15, 0x7f, 0x15, 0x15,
-+ 0x3f, 0x0e, 0x15, 0x25, 0x44, 0x04, 0x00, 0x00,
-+ 0x08, 0x28, 0x28, 0xa8, 0x28, 0xe8, 0x28, 0x28,
-+ 0xa8, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12,
-+ 0x16, 0x1a, 0x64, 0x06, 0x09, 0x10, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0xa8, 0xa8,
-+ 0xb0, 0x90, 0x90, 0xb4, 0xcc, 0x04, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x10, 0x17,
-+ 0x15, 0x1b, 0x64, 0x01, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x17, 0x11, 0x12, 0x7f, 0x10, 0x13, 0x10,
-+ 0x17, 0x18, 0x63, 0x0d, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x10, 0xa8, 0xfc, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0xc8, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x12, 0x7f, 0x24, 0x25, 0x24,
-+ 0x7b, 0x48, 0x0f, 0x14, 0x20, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa8, 0xa4, 0xfc, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0xc8, 0xb0, 0x90, 0xc8, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x01,
-+ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x19, 0x34, 0x37, 0x30, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x11, 0x17, 0x1e,
-+ 0x72, 0x14, 0x11, 0x16, 0x10, 0x37, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf0, 0xf0, 0xf0, 0xfc, 0xd4,
-+ 0xf8, 0xf4, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x02, 0x02, 0x07, 0x0c, 0x32, 0x03, 0x0d, 0x71,
-+ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c,
-+ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1d, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xa0,
-+ 0xa0, 0x60, 0x60, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x42, 0x24, 0x23, 0x00, 0x0f,
-+ 0x10, 0x13, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0xfc,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x48, 0x2f, 0x28, 0x08, 0x08,
-+ 0x18, 0x28, 0x49, 0x0a, 0x0c, 0x08, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x40,
-+ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3f, 0x2f,
-+ 0x48, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0xe8,
-+ 0x20, 0xe0, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x1b, 0x71, 0x12, 0x17, 0x7c, 0x13, 0x18,
-+ 0x37, 0x34, 0x57, 0x10, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0x10, 0xa8, 0xfc, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0xe8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x00, 0x3d, 0x05, 0x19,
-+ 0x63, 0x0f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x48, 0x88, 0x50, 0x30,
-+ 0x0c, 0xe0, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x7e, 0x03, 0x3c, 0x01, 0x3c,
-+ 0x03, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x40, 0xfc, 0x10, 0xa8, 0xfc, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0xe8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0d, 0x3f, 0x2e, 0x2e, 0x36,
-+ 0x37, 0x22, 0x3f, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x20, 0xfc, 0x88, 0x54, 0xfc, 0x50, 0xf8, 0x50,
-+ 0xfc, 0x68, 0xd0, 0x50, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0x60, 0x20, 0x1c, 0x00, 0x00,
-+ 0x00, 0x07, 0x74, 0x57, 0x54, 0x57, 0x55, 0x55,
-+ 0x55, 0x77, 0x4a, 0x4b, 0x12, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x38, 0xc0, 0xf0, 0x50,
-+ 0xf0, 0xf8, 0xa8, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x7e, 0x12, 0x12, 0x12,
-+ 0x16, 0x1a, 0x62, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x29, 0x7e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x20, 0x20, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x17, 0x11,
-+ 0x19, 0x71, 0x11, 0x11, 0x1e, 0x30, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x20, 0xe0, 0x20,
-+ 0x20, 0x10, 0x50, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x10, 0x1d, 0x25, 0x25, 0x55,
-+ 0x19, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x17, 0x35, 0x39, 0x52,
-+ 0x17, 0x1a, 0x17, 0x24, 0x20, 0x47, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0x00, 0xf8, 0x88,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0xf8, 0x30, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x66, 0x2a, 0x1b, 0x24, 0x7f,
-+ 0x12, 0x3b, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x20, 0xa8,
-+ 0xa8, 0x90, 0x90, 0xb4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x01, 0x7d, 0x2f, 0x2a, 0x3a, 0x2f, 0x28, 0x3b,
-+ 0x2a, 0x2f, 0x3a, 0x6b, 0x0a, 0x08, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x20, 0xa8,
-+ 0xa8, 0xb0, 0x90, 0xb4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x04, 0x07, 0x08, 0x10, 0x7f, 0x11, 0x11, 0x11,
-+ 0x1f, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x10, 0x10, 0x10,
-+ 0xf0, 0x10, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x1e, 0x24, 0x48, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x2a, 0x3e, 0x22, 0x22, 0x22, 0x47, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0x20, 0x30, 0x28, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x19, 0x6f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x09, 0x08, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x20, 0xe0,
-+ 0x20, 0xf0, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x2a, 0x48, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x61, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0x20, 0x30, 0x28, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x12, 0x23,
-+ 0x5c, 0x00, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x48, 0xb0,
-+ 0x2c, 0x20, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x11, 0x11, 0x12, 0x22, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xe0,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x33, 0x52, 0x12,
-+ 0x13, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x17, 0x10, 0x33, 0x50, 0x13,
-+ 0x10, 0x13, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xf8,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x13, 0x10, 0x33, 0x50, 0x17,
-+ 0x14, 0x1b, 0x11, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xf0, 0x20, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x14, 0x27,
-+ 0x58, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x90, 0x60,
-+ 0x1c, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x4d, 0x0a, 0x12, 0x24, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x68,
-+ 0x68, 0x70, 0x50, 0x50, 0x68, 0x84, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x49, 0x08, 0x49, 0x29, 0x2b,
-+ 0x0a, 0x1f, 0x68, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0xf0, 0xfc,
-+ 0x08, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5f, 0x05, 0x7f, 0x05, 0x19,
-+ 0x6f, 0x09, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x68, 0xa0, 0x40, 0xfc, 0x40, 0x30,
-+ 0xec, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x00, 0x00, 0x02, 0x02, 0x02, 0x12, 0x12,
-+ 0x12, 0x22, 0x42, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x40, 0x00, 0x00, 0x10, 0x08,
-+ 0x04, 0x04, 0x00, 0x10, 0x10, 0xf0, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x17, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0xfc, 0xa0, 0x10, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x12, 0x13, 0x1e,
-+ 0x72, 0x12, 0x14, 0x14, 0x18, 0x33, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0xc8,
-+ 0xc8, 0xb0, 0xa0, 0x90, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x12, 0x14, 0x7f, 0x08,
-+ 0x7e, 0x1c, 0x1b, 0x29, 0x4a, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x14, 0x14, 0x7f, 0x00, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x50, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x03, 0x0d, 0x31, 0x09, 0x08,
-+ 0x7f, 0x18, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x80, 0x60, 0x18, 0x20, 0x20,
-+ 0xfc, 0x60, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x39, 0x36,
-+ 0x34, 0x53, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x10, 0xe8,
-+ 0x44, 0xf8, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x43, 0x20, 0x23, 0x00, 0x17,
-+ 0x14, 0x1b, 0x21, 0x20, 0x41, 0x4e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xf0, 0x20, 0xc0, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x44, 0x20, 0x21, 0x02, 0x10,
-+ 0x17, 0x10, 0x21, 0x22, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa0, 0xa4, 0x1c, 0x40, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x21, 0x21, 0x3f, 0x21, 0x21,
-+ 0x3f, 0x21, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x29, 0x2a, 0x0c, 0x19,
-+ 0x28, 0x48, 0x13, 0x10, 0x20, 0x47, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x40, 0x30, 0x4c, 0x80,
-+ 0x20, 0xc8, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x0a, 0x0a, 0x13, 0x1a,
-+ 0x36, 0x57, 0x12, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04, 0x0f,
-+ 0x11, 0x6f, 0x03, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x40, 0xa0,
-+ 0x10, 0xec, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x67, 0x1a, 0x1a, 0x27, 0x7e,
-+ 0x12, 0x1b, 0x36, 0x34, 0x50, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x20,
-+ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0xf0, 0x10, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x00, 0x01, 0x04,
-+ 0x14, 0x14, 0x24, 0x44, 0x04, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, 0x90,
-+ 0x48, 0x44, 0x04, 0x20, 0x20, 0xe0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x3f, 0x12, 0x14, 0x7f,
-+ 0x08, 0x7f, 0x1c, 0x2a, 0x4a, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x0c, 0x70, 0x40, 0x40, 0x7c,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x68, 0x60, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x02, 0x3d,
-+ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x23, 0x00, 0x00,
-+ 0x40, 0x40, 0x60, 0xa0, 0x90, 0x28, 0x44, 0x90,
-+ 0x20, 0x44, 0x88, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x78, 0x01, 0x06, 0x38, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x24, 0xe8, 0x30,
-+ 0xe0, 0x60, 0xa0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x04, 0x7f, 0x01,
-+ 0x01, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x20, 0x40, 0xfc, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x21, 0x12, 0x13, 0x06, 0x0a, 0x73, 0x12,
-+ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x00,
-+ 0x1f, 0x13, 0x1f, 0x14, 0x27, 0x58, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00,
-+ 0xf8, 0xe0, 0xfc, 0x90, 0x60, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-+ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x30, 0x50, 0x10,
-+ 0x10, 0x10, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x02, 0x02, 0x1e, 0x07,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x88, 0x48, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x17, 0x14,
-+ 0x27, 0x58, 0x0f, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xcc, 0x70,
-+ 0x44, 0xbc, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x3d, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x3e, 0x08,
-+ 0x0e, 0x30, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x88,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x07, 0x04, 0x07, 0x04, 0x7f,
-+ 0x12, 0x12, 0x14, 0x18, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xc0, 0x40, 0xc0, 0x40, 0xfc,
-+ 0x80, 0x88, 0x78, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x09, 0x10, 0x10,
-+ 0x23, 0x40, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x80, 0x40,
-+ 0x30, 0x8c, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3f, 0x3f, 0x2f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x60, 0x90, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x01, 0x3c, 0x24, 0x25, 0x3d, 0x22, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0xb0, 0xd0,
-+ 0x90, 0x90, 0x94, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x27, 0x11, 0x11, 0x01, 0x01, 0x0f, 0x71,
-+ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20,
-+ 0x10, 0x14, 0x0c, 0x04, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x28, 0x2b, 0x32, 0x2b, 0x26,
-+ 0x27, 0x24, 0x27, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x15, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x68, 0x58,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x00, 0x7f, 0x00, 0x3f,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x08, 0xe8,
-+ 0x08, 0x88, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x7a, 0x03, 0x3a, 0x02, 0x3b,
-+ 0x02, 0x3a, 0x2b, 0x2e, 0x38, 0x20, 0x00, 0x00,
-+ 0x00, 0xc0, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x98,
-+ 0x90, 0xd0, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x17, 0x20, 0x48, 0x09, 0x11, 0x25, 0x45,
-+ 0x09, 0x09, 0x11, 0x20, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0xc0, 0x40, 0x7c, 0xa0, 0xa0, 0x3c, 0x20,
-+ 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x22, 0x29, 0x25, 0x24, 0x20,
-+ 0x27, 0x20, 0x23, 0x2c, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x28, 0x28, 0x28, 0x48, 0x48,
-+ 0x88, 0xc8, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x14,
-+ 0x17, 0x14, 0x12, 0x23, 0x23, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xc8, 0x08, 0x88, 0xfc, 0xc8,
-+ 0xa8, 0xa8, 0x88, 0x08, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x13, 0x02, 0x02, 0x73, 0x12,
-+ 0x11, 0x11, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x10,
-+ 0x10, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x49, 0x49, 0x4a, 0x4a, 0x4c,
-+ 0x48, 0x78, 0x48, 0x41, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x48, 0x50, 0x40,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x09, 0x09, 0x7f, 0x09,
-+ 0x09, 0x3f, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x21,
-+ 0x3d, 0x25, 0x25, 0x3c, 0x24, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x24, 0x24, 0x24, 0x24,
-+ 0x24, 0x24, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x13, 0x15, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x90, 0x90, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x05, 0x05, 0x09,
-+ 0x09, 0x11, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x88, 0x90, 0x60, 0x40, 0x20,
-+ 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2c, 0x29, 0x4a,
-+ 0x08, 0x0c, 0x12, 0x12, 0x21, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7b, 0x48, 0x4b, 0x79, 0x49, 0x4f, 0x79,
-+ 0x49, 0x4b, 0x78, 0x48, 0x07, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50,
-+ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7e, 0x09, 0x1c,
-+ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x54, 0x94, 0x2c, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x12, 0x0e, 0x32, 0x07, 0x01, 0x3f,
-+ 0x04, 0x0b, 0x11, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x38, 0xc8, 0x18, 0x00, 0xf8,
-+ 0x20, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x7f, 0x08, 0x0f,
-+ 0x03, 0x0d, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xfc, 0x20, 0xe0,
-+ 0x10, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x21, 0x17, 0x10, 0x01, 0x0e, 0x71, 0x16,
-+ 0x11, 0x16, 0x10, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x80, 0x88, 0xc8, 0x70, 0xe0,
-+ 0x50, 0x48, 0x44, 0x80, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x50, 0x54, 0x94, 0x2c,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5e, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8,
-+ 0xa8, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x29, 0x30, 0x28, 0x27, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0x78, 0xc8, 0x78, 0x48,
-+ 0x78, 0x48, 0x48, 0x58, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x02, 0x7e, 0x13, 0x10, 0x17, 0x7c, 0x13,
-+ 0x12, 0x16, 0x1a, 0x62, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x2d, 0x2c, 0x7e, 0x43, 0x7d,
-+ 0x25, 0x3d, 0x25, 0x3d, 0x26, 0x2c, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0xf8, 0x48,
-+ 0x78, 0x48, 0x48, 0x58, 0x80, 0x7c, 0x00, 0x00,
-+ 0x11, 0x11, 0x1f, 0x01, 0x3f, 0x20, 0x4f, 0x00,
-+ 0x7f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x08, 0xe0, 0x00,
-+ 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x1f, 0x01, 0x7f, 0x0f, 0x08, 0x0f,
-+ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x00, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x49, 0x29, 0x2a, 0x7f, 0x1c, 0x1a, 0x2b, 0x48,
-+ 0x7f, 0x12, 0x3a, 0x04, 0x1a, 0x61, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x08, 0x08, 0x48, 0x30, 0x10,
-+ 0x30, 0x48, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x09, 0x09, 0x7e, 0x09, 0x28,
-+ 0x2f, 0x29, 0x39, 0x28, 0x27, 0x41, 0x00, 0x00,
-+ 0x80, 0xf8, 0x48, 0x58, 0xf8, 0x88, 0xb0, 0xf8,
-+ 0x48, 0x58, 0xf8, 0x88, 0x30, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x3e, 0x52, 0x57, 0x7f, 0x52, 0x2c,
-+ 0x3e, 0x52, 0x56, 0x7e, 0x52, 0x2c, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x12, 0x13, 0x1e,
-+ 0x72, 0x15, 0x15, 0x19, 0x11, 0x31, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40, 0xfc, 0x40,
-+ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x40, 0x88, 0x08, 0x10, 0x20,
-+ 0xc4, 0x04, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7f, 0x11, 0x19, 0x35, 0x34,
-+ 0x33, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x3f, 0x20, 0x4f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x09, 0x3f, 0x2a, 0x2c, 0x28, 0x3e, 0x22,
-+ 0x32, 0x2c, 0x24, 0x2a, 0x32, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x05, 0x19, 0x63, 0x00, 0x03, 0x0f, 0x78,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x60, 0x18, 0x24, 0xc0, 0x40, 0xf8, 0x80,
-+ 0xf0, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x1d,
-+ 0x35, 0x53, 0x12, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x23, 0x10, 0x15, 0x43, 0x23, 0x24, 0x0b, 0x12,
-+ 0x13, 0x12, 0x21, 0x21, 0x4f, 0x40, 0x00, 0x00,
-+ 0x90, 0x90, 0x64, 0x28, 0xf0, 0x08, 0xf4, 0x10,
-+ 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x7e, 0x13, 0x14, 0x11, 0x1c,
-+ 0x73, 0x12, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xa8, 0xb8, 0xc8, 0x98, 0x80,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x08, 0x04,
-+ 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x12,
-+ 0x13, 0x12, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20,
-+ 0xe0, 0x20, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0a, 0x0f,
-+ 0x12, 0x17, 0x26, 0x2a, 0x52, 0x42, 0x00, 0x00,
-+ 0x00, 0x7c, 0x90, 0x78, 0xc8, 0xf8, 0xc8, 0xf8,
-+ 0x48, 0x78, 0xb0, 0xa8, 0x44, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x2b, 0x2a,
-+ 0x3e, 0x2a, 0x2a, 0x3e, 0x23, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x88, 0x88, 0x10, 0x10,
-+ 0x30, 0x30, 0x48, 0x88, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x7f,
-+ 0x09, 0x09, 0x09, 0x15, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x40, 0x23, 0x20, 0x0f, 0x00, 0x13,
-+ 0x10, 0x2f, 0x21, 0x43, 0x40, 0x0f, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90, 0xf0,
-+ 0x80, 0xfc, 0x20, 0xe0, 0xd0, 0x08, 0x00, 0x00,
-+ 0x14, 0x14, 0x1f, 0x24, 0x44, 0x7f, 0x04, 0x3f,
-+ 0x25, 0x25, 0x25, 0x26, 0x24, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x3e, 0x09, 0x7f, 0x15, 0x2b, 0x7e, 0x08,
-+ 0x7f, 0x01, 0x3f, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd0, 0x50, 0x70, 0x94,
-+ 0x0c, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x26, 0x26, 0x24,
-+ 0x79, 0x48, 0x0c, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x10, 0x24, 0x45, 0x09, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x13, 0x3a, 0x34, 0x34, 0x53,
-+ 0x10, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1e, 0x12,
-+ 0x12, 0x12, 0x12, 0x2c, 0x21, 0x40, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x29, 0x2f, 0x2a, 0x28,
-+ 0x28, 0x28, 0x2e, 0x38, 0x63, 0x0c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3f, 0x1c, 0x2a, 0x49,
-+ 0x3f, 0x01, 0x09, 0x09, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xc8, 0x04,
-+ 0xf8, 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x09, 0x09,
-+ 0x1f, 0x21, 0x0f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0xf8, 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x49, 0x48, 0x4f, 0x78, 0x49,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x10, 0x1b, 0x34, 0x35,
-+ 0x30, 0x57, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x40, 0xfc, 0x90, 0xd0, 0x70, 0x88, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7c, 0x10, 0x13, 0x3a, 0x36,
-+ 0x36, 0x53, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8,
-+ 0xb8, 0x38, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x11, 0x11, 0x11,
-+ 0x11, 0x11, 0x11, 0x11, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x47, 0x20, 0x2f, 0x00, 0x03,
-+ 0x12, 0x13, 0x22, 0x23, 0x42, 0x42, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x28, 0x28, 0x3f, 0x29, 0x2a, 0x48,
-+ 0x0d, 0x78, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x41,
-+ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1e, 0x12, 0x22, 0x4c,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0x90, 0x90, 0x60, 0x64, 0x9c,
-+ 0xf4, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x4b, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x1e, 0x1e, 0x13, 0x7e, 0x02,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00,
-+ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x00, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x14, 0x1f, 0x24, 0x7f, 0x3f, 0x24, 0x27, 0x01,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0xc8, 0xc8, 0xc8, 0x18, 0x00,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x04, 0x3f, 0x24, 0x24,
-+ 0x28, 0x28, 0x30, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0x80, 0xf8, 0x88, 0x88,
-+ 0x98, 0x98, 0x78, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x28, 0xe8, 0x68,
-+ 0x50, 0x50, 0x54, 0xec, 0x4c, 0x84, 0x00, 0x00,
-+ 0x08, 0x7e, 0x08, 0x0e, 0x78, 0x19, 0x07, 0x7f,
-+ 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x10, 0xc0, 0xfc,
-+ 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3f, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x02, 0x22, 0x12, 0x1f, 0x02, 0x02, 0x03, 0x7e,
-+ 0x12, 0x12, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0xc0, 0x7c, 0x50, 0xd0, 0x50,
-+ 0x90, 0x90, 0x10, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x78, 0x48, 0x78, 0x50, 0x7c,
-+ 0x90, 0x78, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x09, 0x7f, 0x00, 0x3f,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x90, 0x20, 0xf8, 0x28, 0xfc,
-+ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x02, 0x03, 0x0c, 0x78,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x80, 0x80, 0x60, 0x3c,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x03, 0x04, 0x38, 0x09, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x08, 0x08, 0xf8, 0x68,
-+ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x27, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xfc, 0x00, 0x78, 0x48,
-+ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x18, 0x1f, 0x28, 0x4f, 0x08, 0x0f,
-+ 0x08, 0x3f, 0x02, 0x01, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xfc,
-+ 0x00, 0xf0, 0x60, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x13, 0x10,
-+ 0x17, 0x14, 0x24, 0x24, 0x44, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xe0, 0x80,
-+ 0xf8, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1b, 0x34, 0x34, 0x37, 0x50,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xfc, 0x90, 0x90, 0xfc, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x13, 0x12, 0x1f, 0x12,
-+ 0x17, 0x16, 0x2a, 0x32, 0x42, 0x06, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0xc8, 0x28,
-+ 0x30, 0xb0, 0xb4, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x09, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x10, 0x60, 0x80, 0x00, 0x00, 0xfc, 0x40, 0x40,
-+ 0xc0, 0x70, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x00, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x02, 0x04, 0x07, 0x0c,
-+ 0x0c, 0x14, 0x24, 0x44, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x1b, 0x70, 0x13, 0x10, 0x7f, 0x11, 0x19,
-+ 0x35, 0x35, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x08, 0x7f, 0x08, 0x3f,
-+ 0x08, 0x7f, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x50, 0x50, 0xfc, 0x50, 0xfc,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0f, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x01, 0x39, 0x01, 0x3a, 0x02, 0x04, 0x1f, 0x68,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0xb8, 0x40, 0x20, 0xf0, 0x2c,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x02, 0x12,
-+ 0x12, 0x22, 0x44, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x40, 0x50,
-+ 0x48, 0x44, 0x44, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x29, 0x2a, 0x2e, 0x38, 0x61, 0x02, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x50, 0xd8, 0xd8,
-+ 0x54, 0x54, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x2b, 0x08, 0x2e,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x20, 0x23, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x13, 0x1c, 0x70, 0x10, 0x10,
-+ 0x12, 0x12, 0x0e, 0x01, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x12, 0x7e, 0x12, 0x13, 0x12, 0x10,
-+ 0x1a, 0x72, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x40,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x17, 0x10, 0x17,
-+ 0x18, 0x70, 0x11, 0x10, 0x10, 0x37, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x40, 0xfc,
-+ 0x90, 0x90, 0xe0, 0x30, 0xc8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x1f,
-+ 0x71, 0x10, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x9c, 0xf0,
-+ 0x18, 0xb0, 0x00, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d,
-+ 0x71, 0x12, 0x12, 0x14, 0x18, 0x30, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x02, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x23, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x0c, 0x00, 0xf8,
-+ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x13,
-+ 0x1c, 0x70, 0x10, 0x12, 0x0f, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xf8,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x1e, 0x12, 0x1e,
-+ 0x12, 0x1e, 0x14, 0x12, 0x1d, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x78, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x08, 0x08, 0xf8, 0x68,
-+ 0x60, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x01,
-+ 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8,
-+ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x44, 0x24, 0xa8, 0x90, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x12, 0x12, 0x32, 0x52, 0x12,
-+ 0x12, 0x12, 0x12, 0x13, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x0f, 0x11, 0x21, 0x7f, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x3f,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x5f, 0x00, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf0, 0x00, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x00, 0x7f, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x09, 0x09, 0x11, 0x21, 0x03, 0x01,
-+ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x11, 0x49, 0x2a, 0x24, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc0, 0x48, 0x48,
-+ 0x50, 0x30, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f,
-+ 0x19, 0x15, 0x27, 0x39, 0x41, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x48, 0x28, 0x38, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x14, 0x14, 0x13, 0x19,
-+ 0x77, 0x11, 0x1f, 0x11, 0x16, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x40, 0xc8, 0xb8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x09, 0x1e, 0x1b, 0x1a,
-+ 0x28, 0x2b, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x08, 0xfc, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x0a, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0xa8, 0xa8,
-+ 0xa8, 0xfc, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x01,
-+ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x08,
-+ 0x90, 0xe0, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x23, 0x00, 0x17,
-+ 0x10, 0x10, 0x20, 0x21, 0x46, 0x40, 0x00, 0x00,
-+ 0x90, 0x88, 0xf8, 0x80, 0xf0, 0x80, 0xf8, 0x90,
-+ 0x50, 0x60, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x22, 0x24, 0x07, 0x10,
-+ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x48, 0x2b, 0x20, 0x08, 0x11, 0x22, 0x41,
-+ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xe0, 0xa0, 0xa4, 0x24, 0x1c, 0x00,
-+ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x2f, 0x23, 0x02, 0x14,
-+ 0x1b, 0x12, 0x23, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x30, 0xd0, 0x88,
-+ 0xf4, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x3e,
-+ 0x22, 0x26, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x00, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x18, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x13, 0x16, 0x37, 0x3a, 0x53,
-+ 0x12, 0x1b, 0x16, 0x23, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x48, 0x68, 0xd8, 0x68, 0x48, 0xd8, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x11, 0x11, 0x1e, 0x14,
-+ 0x14, 0x14, 0x24, 0x24, 0x45, 0x1a, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x28, 0xb0,
-+ 0xa0, 0xbc, 0xa0, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x48, 0x10, 0x0f, 0x08,
-+ 0x08, 0x7f, 0x03, 0x0c, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x4d, 0x04, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x30, 0x40, 0xfc, 0x00, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x0d, 0x2a, 0x2a, 0x29, 0x4a, 0x08, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20,
-+ 0xe4, 0x78, 0xb0, 0x28, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x64, 0x18, 0x1b, 0x25, 0x7d,
-+ 0x13, 0x3b, 0x35, 0x31, 0x56, 0x10, 0x00, 0x00,
-+ 0x90, 0x98, 0xf4, 0x94, 0x90, 0xfc, 0x50, 0x74,
-+ 0x74, 0x58, 0x78, 0x94, 0x2c, 0x44, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x0f, 0x01, 0x7f, 0x10, 0x08,
-+ 0x41, 0x22, 0x0c, 0x10, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x80, 0x80,
-+ 0xfc, 0x48, 0x50, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x24,
-+ 0x3d, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x20,
-+ 0xe4, 0x78, 0xb0, 0x28, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x32, 0x4a,
-+ 0x05, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x90, 0x90, 0x90, 0x90,
-+ 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x17, 0x1e,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0x04, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x1f, 0x12, 0x1f, 0x12, 0x1f,
-+ 0x13, 0x12, 0x23, 0x2a, 0x49, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0xfc, 0x00, 0xfc, 0xa4, 0x54, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3e, 0x03, 0x3c,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x08, 0xfc, 0x40,
-+ 0x40, 0xf0, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x27, 0x3c, 0x27,
-+ 0x24, 0x3c, 0x18, 0x14, 0x27, 0x40, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc0, 0x78, 0xc0, 0x7c, 0xc8,
-+ 0x48, 0x30, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x09, 0x28, 0x2f,
-+ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0x50, 0x48, 0x78, 0xc0, 0x78, 0xc0, 0x7c, 0xc8,
-+ 0x48, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x17, 0x04, 0x03, 0x71, 0x17,
-+ 0x11, 0x1f, 0x10, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x44, 0xfc, 0x20, 0xf8,
-+ 0x20, 0xfc, 0xa0, 0x18, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x13, 0x02, 0x03, 0x70, 0x1f,
-+ 0x13, 0x1c, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x80, 0xfc,
-+ 0xf0, 0x28, 0xe4, 0x10, 0xf0, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x48, 0x28, 0x30, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21,
-+ 0x22, 0x22, 0x24, 0x28, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08,
-+ 0x88, 0x88, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x7f, 0x00, 0x3e, 0x22, 0x22,
-+ 0x3e, 0x22, 0x3e, 0x22, 0x22, 0x26, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xfc, 0x00, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x3f, 0x09,
-+ 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xf8, 0x20,
-+ 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0f, 0x0a,
-+ 0x1f, 0x12, 0x3f, 0x22, 0x42, 0x42, 0x00, 0x00,
-+ 0x08, 0x08, 0xd0, 0x20, 0xa0, 0xbc, 0xa8, 0xa8,
-+ 0xa8, 0x28, 0xe8, 0x48, 0x48, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x19, 0x15, 0x32, 0x4a, 0x0c,
-+ 0x19, 0x60, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x60, 0x50, 0x90,
-+ 0x08, 0x04, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x60, 0x1f, 0x01,
-+ 0x01, 0x0f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0x0c, 0xf0, 0x00,
-+ 0x00, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7d, 0x0b, 0x0a, 0x13, 0x1a,
-+ 0x37, 0x54, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0x20, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0f, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x88, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0xa8, 0x70,
-+ 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x3c, 0x27, 0x24, 0x25, 0x3c, 0x27, 0x25,
-+ 0x3f, 0x24, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x50,
-+ 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x3a, 0x12, 0x7e, 0x12, 0x1a,
-+ 0x36, 0x36, 0x52, 0x14, 0x17, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x7b, 0x4a, 0x4b, 0x4a, 0x4b, 0x48,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x22, 0x14, 0x7f, 0x2a, 0x2a, 0x3e, 0x2a, 0x09,
-+ 0x11, 0x2f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x08,
-+ 0x18, 0xe0, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x7d, 0x45, 0x41, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x17, 0x10, 0x1f,
-+ 0x72, 0x13, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x04, 0x18, 0x7f, 0x15, 0x13, 0x1f, 0x10,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0xc0, 0x20, 0x10, 0xfc, 0x50, 0x90, 0xf0, 0x10,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x20,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x0e, 0x15, 0x65, 0x04, 0x7f,
-+ 0x01, 0x11, 0x11, 0x19, 0x27, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x60, 0xb0, 0x2c, 0x20, 0xf8,
-+ 0x10, 0x20, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x19, 0x29, 0x49, 0x09, 0x0f, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x03, 0x0c, 0x08, 0x2b, 0x28, 0x2d,
-+ 0x29, 0x29, 0x29, 0x2f, 0x3a, 0x64, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x98, 0xe4, 0x10, 0x50,
-+ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x07, 0x08, 0x0b, 0x2a, 0x2e, 0x2b,
-+ 0x28, 0x28, 0x29, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xe0, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x7d, 0x17, 0x11, 0x13, 0x3b, 0x2d, 0x6b,
-+ 0x28, 0x2a, 0x3a, 0x23, 0x24, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xb8, 0x54, 0x10, 0xfc,
-+ 0x48, 0x40, 0x78, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x11, 0x19,
-+ 0x35, 0x57, 0x11, 0x11, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x0c,
-+ 0x03, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x40, 0xc0,
-+ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x1e, 0x24, 0x7e, 0x2b,
-+ 0x3e, 0x2a, 0x3e, 0x3b, 0x2d, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x18, 0xe0, 0x20, 0x20, 0xfc,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0xb0, 0x98, 0x14, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x29, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x22, 0x13, 0x1f, 0x01, 0x05, 0x05, 0x77,
-+ 0x15, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xb8, 0x28, 0xe8, 0x38, 0x68, 0x68, 0xf8,
-+ 0x28, 0x48, 0x48, 0x98, 0x00, 0xfc, 0x00, 0x00,
-+ 0x03, 0x1c, 0x10, 0x1e, 0x10, 0x1f, 0x00, 0x15,
-+ 0x13, 0x19, 0x15, 0x15, 0x19, 0x66, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x50,
-+ 0x30, 0x90, 0x54, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x09, 0x08, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x10,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x06, 0x09, 0x14, 0x3f, 0x51, 0x1f, 0x11,
-+ 0x1f, 0x10, 0x3f, 0x31, 0x5f, 0x11, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x22, 0x12, 0x0c, 0x04,
-+ 0x04, 0x0a, 0x0a, 0x10, 0x21, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x50, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x12, 0x0a, 0x7f, 0x04, 0x3f, 0x1f, 0x01, 0x7f,
-+ 0x12, 0x1f, 0x1e, 0x12, 0x7e, 0x03, 0x00, 0x00,
-+ 0x90, 0xa0, 0xfc, 0x40, 0xf8, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x0f, 0x08, 0x0f,
-+ 0x0f, 0x08, 0x1f, 0x18, 0x2f, 0x08, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x20, 0xe0,
-+ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x3d, 0x25, 0x3d, 0x25, 0x01,
-+ 0x7f, 0x08, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x48, 0x00,
-+ 0xfc, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x48, 0x28, 0x2f, 0x08, 0x08,
-+ 0x18, 0x18, 0x28, 0x48, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04,
-+ 0x1f, 0x61, 0x1f, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0xc0,
-+ 0x30, 0x0c, 0xf0, 0x80, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x05, 0x35, 0x09, 0x1d, 0x65,
-+ 0x19, 0x15, 0x66, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x68, 0x10, 0x68, 0xc8,
-+ 0x30, 0xa8, 0xc8, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x41, 0x01, 0x7f, 0x03,
-+ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x80,
-+ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x17, 0x17, 0x14,
-+ 0x17, 0x13, 0x23, 0x22, 0x43, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xf8, 0xf8, 0x88,
-+ 0xf8, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x24, 0x24,
-+ 0x24, 0x24, 0x24, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0xe0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x29, 0x3f, 0x2a, 0x4c, 0x19, 0x6a, 0x08,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x28, 0x48, 0xb0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x2a, 0x48,
-+ 0x09, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13, 0x10,
-+ 0x1f, 0x71, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7d, 0x10, 0x11, 0x10, 0x1f,
-+ 0x74, 0x13, 0x12, 0x12, 0x12, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x48, 0xf8, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x17, 0x10, 0x13, 0x1e,
-+ 0x73, 0x12, 0x13, 0x12, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0xfc, 0x40, 0xf8, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x48, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x17, 0x10, 0x1f,
-+ 0x72, 0x13, 0x12, 0x10, 0x10, 0x37, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x50, 0x78, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x17, 0x14, 0x1f,
-+ 0x70, 0x17, 0x10, 0x11, 0x16, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xbc, 0xa4, 0xbc,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x11,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x3f, 0x24, 0x3f,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x15, 0x39, 0x35,
-+ 0x35, 0x51, 0x53, 0x15, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0,
-+ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x3a, 0x37,
-+ 0x35, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x02, 0x0b,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x15, 0x34, 0x3b, 0x32, 0x53,
-+ 0x10, 0x17, 0x18, 0x25, 0x26, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x01, 0x03, 0x0c, 0x30, 0x1f, 0x01, 0x7f, 0x01,
-+ 0x01, 0x1f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x10, 0xfc, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x4b, 0x2a, 0x2b, 0x0a, 0x1b,
-+ 0x28, 0x4b, 0x10, 0x10, 0x21, 0x4e, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x45, 0x09, 0x12, 0x0f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x38, 0x40, 0x30, 0xc8,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x57, 0x34, 0x3b, 0x12, 0x7f, 0x12, 0x3b,
-+ 0x35, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x29, 0x4a, 0x08, 0x00, 0x00,
-+ 0x30, 0x90, 0x90, 0xa8, 0x24, 0x50, 0xf8, 0x48,
-+ 0x20, 0xe8, 0xc4, 0x54, 0x50, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x29, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x20, 0xa8, 0xa4, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x25, 0x3e, 0x24, 0x25, 0x3c,
-+ 0x24, 0x25, 0x3d, 0x66, 0x04, 0x04, 0x00, 0x00,
-+ 0x70, 0x90, 0x90, 0x48, 0x64, 0x90, 0xf8, 0x48,
-+ 0xa0, 0xa8, 0x84, 0x94, 0x90, 0x70, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x48, 0x28, 0x2f,
-+ 0x08, 0x18, 0x28, 0x48, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x7f, 0x08, 0x1f, 0x72, 0x0c,
-+ 0x74, 0x04, 0x7f, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x80, 0x98, 0xe0, 0x84,
-+ 0x7c, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x7f, 0x09, 0x02, 0x0f, 0x7f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x17, 0x14, 0x27, 0x44, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0x80, 0xe0, 0xfc, 0x20, 0xe0,
-+ 0x20, 0xe0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x11, 0x09, 0x49, 0x23, 0x22,
-+ 0x0b, 0x08, 0x17, 0x11, 0x26, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0xb8, 0xa8,
-+ 0xf8, 0x40, 0xfc, 0xf0, 0x4c, 0x40, 0x00, 0x00,
-+ 0x04, 0x24, 0x17, 0x04, 0x1c, 0x65, 0x05, 0x01,
-+ 0x7f, 0x04, 0x1c, 0x64, 0x07, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x90, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x7f, 0x01, 0x09,
-+ 0x09, 0x09, 0x09, 0x15, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x02, 0x21, 0x11, 0x17, 0x00, 0x00, 0x7f, 0x10,
-+ 0x11, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x80, 0x80, 0xfc, 0xc0,
-+ 0x20, 0x10, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x27, 0x13, 0x12, 0x03, 0x02, 0x73, 0x11,
-+ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0xf8, 0x04, 0xf8, 0x88, 0xf8,
-+ 0xf8, 0x80, 0xfc, 0x84, 0xfc, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x3d, 0x5d, 0x00, 0x08,
-+ 0x7f, 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf8,
-+ 0x88, 0xf8, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x70, 0xac, 0x20, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0x28, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x08, 0x09, 0x0e, 0x13, 0x12, 0x33, 0x50, 0x11,
-+ 0x16, 0x11, 0x16, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0xf8, 0x48, 0xf8, 0x40, 0x88,
-+ 0xd0, 0x60, 0xb0, 0x28, 0x24, 0xc0, 0x00, 0x00,
-+ 0x01, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x10,
-+ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x11, 0x10, 0x13, 0x1a, 0x37, 0x36, 0x33, 0x50,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x29, 0x28, 0x3b, 0x2a, 0x2b, 0x3b,
-+ 0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x58, 0x00, 0x00,
-+ 0x20, 0xfc, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0xa8,
-+ 0xe8, 0x50, 0xd4, 0x9c, 0xec, 0x44, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x00, 0x1f, 0x10, 0x1f, 0x19,
-+ 0x1f, 0x18, 0x1f, 0x29, 0x2f, 0x48, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x28,
-+ 0xa8, 0xb0, 0x90, 0x34, 0xcc, 0x84, 0x00, 0x00,
-+ 0x01, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x3d, 0x24,
-+ 0x25, 0x3d, 0x19, 0x15, 0x25, 0x41, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x22, 0x12, 0x13, 0x04, 0x0f, 0x70, 0x13,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x50, 0x12,
-+ 0x12, 0x12, 0x12, 0x13, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x54, 0x17,
-+ 0x14, 0x14, 0x17, 0x13, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x08, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x3e,
-+ 0x28, 0x24, 0x26, 0x3a, 0x62, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x10, 0x16,
-+ 0x1a, 0x72, 0x12, 0x13, 0x14, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x13, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x90, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x44, 0x27, 0x24, 0x07, 0x14,
-+ 0x14, 0x17, 0x23, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0x08, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x01, 0x11,
-+ 0x11, 0x11, 0x19, 0x15, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x20, 0x17, 0x10, 0x03, 0x02, 0x72, 0x13,
-+ 0x10, 0x11, 0x16, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xe0, 0x50, 0x4c, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0x09, 0x09, 0x0a, 0x14, 0x10, 0x31, 0x51, 0x12,
-+ 0x17, 0x1a, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x20, 0x10, 0x08, 0x88, 0x80, 0x40, 0x20, 0x10,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x17, 0x14,
-+ 0x17, 0x1f, 0x18, 0x2f, 0x28, 0x48, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x78, 0x80, 0xf0, 0x90,
-+ 0xf0, 0xf8, 0xa8, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x3c, 0x27,
-+ 0x24, 0x3c, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xa8, 0xa8, 0xe8,
-+ 0x90, 0x90, 0xb4, 0xac, 0xcc, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x10, 0x1d, 0x16,
-+ 0x17, 0x14, 0x24, 0x24, 0x45, 0x1a, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x80, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7f,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xfc, 0x08,
-+ 0x50, 0x50, 0x50, 0x94, 0x94, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x0c, 0x12, 0x23,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x40, 0x60, 0x90, 0x10,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x07, 0x04, 0x07, 0x04,
-+ 0x04, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xc0, 0x40, 0xc0, 0x40,
-+ 0x40, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x12, 0x11, 0x11, 0x7f, 0x10, 0x17, 0x14, 0x17,
-+ 0x1c, 0x77, 0x14, 0x14, 0x14, 0x35, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x00, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x05, 0x08, 0x18,
-+ 0x28, 0x4f, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0xf8, 0x10, 0x20,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7c, 0x07, 0x08, 0x0b, 0x10, 0x10, 0x1b,
-+ 0x70, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x50, 0x90, 0xa0, 0x48, 0xf4,
-+ 0x44, 0x50, 0x48, 0x44, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x02, 0x1f, 0x12, 0x14, 0x1f,
-+ 0x1f, 0x00, 0x7f, 0x08, 0x04, 0x00, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x80, 0xf0, 0xd0, 0x50, 0xf0,
-+ 0xf0, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x13, 0x12, 0x1f,
-+ 0x72, 0x13, 0x12, 0x13, 0x11, 0x36, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x2f, 0x11, 0x12, 0x02, 0x03, 0x0e, 0x72,
-+ 0x12, 0x12, 0x13, 0x1e, 0x26, 0x41, 0x00, 0x00,
-+ 0x0c, 0xf0, 0x28, 0x48, 0xd0, 0x30, 0x48, 0xfc,
-+ 0xa8, 0xa4, 0x24, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x12, 0x12, 0x33, 0x5e, 0x12,
-+ 0x12, 0x12, 0x12, 0x12, 0x12, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x78, 0xc8, 0x48, 0x48,
-+ 0x48, 0x58, 0x40, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x02, 0x03, 0x04, 0x0a, 0x31, 0x01, 0x06, 0x38,
-+ 0x03, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x40, 0x80, 0x40, 0x7c, 0x84,
-+ 0x88, 0x50, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x02, 0x02,
-+ 0x04, 0x04, 0x0a, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80, 0x80,
-+ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x27, 0x20, 0x00, 0x10,
-+ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xc0,
-+ 0xa0, 0x20, 0x90, 0x50, 0x48, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3e, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x08, 0x80, 0x80, 0x98,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4b, 0x49, 0x49, 0x4f, 0x49,
-+ 0x49, 0x7b, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50,
-+ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x48, 0x71, 0x53, 0x4d, 0x49, 0x71,
-+ 0x41, 0x41, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0x08, 0x18, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x12, 0x09, 0x08, 0x01, 0x7f,
-+ 0x02, 0x04, 0x07, 0x08, 0x03, 0x3c, 0x00, 0x00,
-+ 0x18, 0xe8, 0x08, 0x10, 0x20, 0x40, 0x00, 0xfc,
-+ 0x20, 0x20, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x19, 0x36, 0x37, 0x30, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0xfc, 0x80, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x08, 0x08, 0x0e,
-+ 0x78, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x0a, 0x18, 0x18, 0x1c,
-+ 0x2a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x80, 0x80, 0x88, 0x90,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1b, 0x16, 0x16, 0x7f,
-+ 0x12, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x48, 0x50,
-+ 0x60, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7f, 0x09, 0x1b, 0x1c, 0x1b,
-+ 0x2b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x80, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x29, 0x32, 0x28, 0x24,
-+ 0x24, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x08, 0x80, 0x80, 0x98,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x29, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x70,
-+ 0x50, 0x50, 0xc8, 0xa8, 0x24, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3f, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x44, 0x24, 0xa8, 0x90, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x11,
-+ 0x11, 0x12, 0x15, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50,
-+ 0x50, 0x48, 0xf4, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x13, 0x7f, 0x15, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x04, 0x04, 0x24, 0x14,
-+ 0x0c, 0x0c, 0x0a, 0x12, 0x20, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x10, 0x7f, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x43, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x10, 0x11,
-+ 0x01, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0xc0, 0x40, 0x24, 0x14, 0x0c,
-+ 0x00, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x09, 0x09, 0x7f, 0x09, 0x0f, 0x00, 0x3f, 0x21,
-+ 0x5f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xe0, 0x00, 0xfc, 0x08,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x13, 0x24, 0x04, 0x0f, 0x18, 0x28,
-+ 0x4f, 0x09, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x02, 0x02, 0x04, 0x7f, 0x00, 0x0f, 0x08, 0x08,
-+ 0x0f, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x40, 0x30, 0xe8, 0x04, 0xe0, 0x20, 0x20,
-+ 0xe0, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x12, 0x7f, 0x3e, 0x22, 0x3e, 0x3e, 0x22,
-+ 0x26, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x48, 0x70, 0x44, 0x3c, 0x48, 0x70, 0x44,
-+ 0x3c, 0x10, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x04, 0x1f, 0x04, 0x7f, 0x1f, 0x15, 0x1f, 0x15,
-+ 0x1f, 0x3f, 0x0a, 0x7f, 0x19, 0x60, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xfc, 0x40, 0x48, 0x48, 0x28,
-+ 0x28, 0xb0, 0x14, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x7f, 0x14, 0x12, 0x22,
-+ 0x4f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x30, 0x50, 0x88,
-+ 0xe4, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x0f, 0x02, 0x7f, 0x05,
-+ 0x19, 0x6d, 0x03, 0x0d, 0x31, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x80, 0xfc, 0x40,
-+ 0x30, 0x6c, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x20, 0x07, 0x04,
-+ 0x1b, 0x12, 0x22, 0x22, 0x42, 0x40, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0xf0, 0x00, 0xfc, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x27, 0x3c,
-+ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x50, 0x88, 0x9c, 0xe4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x25, 0x24, 0x3c, 0x24, 0x27,
-+ 0x3d, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x78, 0x64,
-+ 0x58, 0x50, 0x68, 0x84, 0x80, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x02, 0x04, 0x7f,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x40, 0x30, 0xc8,
-+ 0x04, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x04, 0x18, 0x6f, 0x08, 0x09, 0x09, 0x7f,
-+ 0x03, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x90, 0x88, 0x7c, 0xc0, 0x20, 0x14, 0x0c, 0xfc,
-+ 0x10, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x04, 0x1b, 0x68, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0x40, 0x34, 0xec, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x02, 0x03, 0x72, 0x12,
-+ 0x12, 0x12, 0x1f, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x88, 0x48,
-+ 0x30, 0xd0, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x17, 0x00, 0x03, 0x74, 0x12,
-+ 0x12, 0x11, 0x16, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x48, 0x50,
-+ 0xe0, 0x50, 0x48, 0xc8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3c, 0x24, 0x2b, 0x28, 0x30, 0x2b, 0x24,
-+ 0x27, 0x24, 0x38, 0x23, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0xe8, 0x68, 0xb0,
-+ 0x30, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00,
-+ 0x02, 0x04, 0x1f, 0x68, 0x08, 0x1f, 0x11, 0x1f,
-+ 0x1f, 0x3f, 0x01, 0x7f, 0x24, 0x42, 0x00, 0x00,
-+ 0x90, 0xbc, 0xc0, 0x24, 0x1c, 0xf4, 0x10, 0xf0,
-+ 0xf0, 0xf8, 0x00, 0xfc, 0x88, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88,
-+ 0xf8, 0xd8, 0xf8, 0x58, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x28, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0x80, 0xfc, 0x40, 0x40, 0x40,
-+ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x08, 0x7f, 0x00, 0x00,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x30, 0xc8, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80,
-+ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x29, 0x46, 0x3f, 0x01, 0x3f,
-+ 0x21, 0x3f, 0x23, 0x05, 0x19, 0x61, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x20, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x2f,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x78, 0x48, 0x78, 0x00, 0xfc,
-+ 0x10, 0x50, 0x5c, 0x50, 0xb0, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3e, 0x22, 0x3e, 0x00, 0x7f,
-+ 0x08, 0x2e, 0x28, 0x38, 0x2d, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x50, 0x88, 0x08, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x15, 0x1f, 0x15, 0x15, 0x13,
-+ 0x13, 0x13, 0x23, 0x23, 0x4d, 0x12, 0x00, 0x00,
-+ 0x80, 0xfc, 0xa0, 0xfc, 0xf0, 0xf0, 0xfc, 0xe0,
-+ 0xe0, 0xe0, 0xf8, 0xf8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x42, 0x21, 0x2f, 0x00, 0x17,
-+ 0x14, 0x17, 0x24, 0x27, 0x44, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x90, 0xf0, 0x90, 0xf4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x45, 0x25, 0x3f, 0x00, 0x0f,
-+ 0x19, 0x1f, 0x29, 0x2f, 0x49, 0x4b, 0x00, 0x00,
-+ 0x40, 0x78, 0xc0, 0x78, 0x08, 0xf8, 0x40, 0x78,
-+ 0x40, 0x78, 0x40, 0x78, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x49, 0x4e, 0x48, 0x49,
-+ 0x7e, 0x48, 0x43, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x88, 0xc8, 0x50, 0xe0, 0x20,
-+ 0x70, 0xa8, 0x24, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x01, 0x1e, 0x02,
-+ 0x03, 0x7e, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x60, 0x80, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x08, 0x08, 0x0f,
-+ 0x18, 0x68, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0x7c, 0xc0,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d,
-+ 0x71, 0x11, 0x12, 0x12, 0x14, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x48, 0x40,
-+ 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x11, 0x13,
-+ 0x1d, 0x79, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x80, 0x80, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x23, 0x02, 0x12,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x48, 0x40,
-+ 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x20, 0x17, 0x10, 0x47, 0x20, 0x27, 0x02, 0x13,
-+ 0x16, 0x1b, 0x23, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20, 0xf8,
-+ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x7c, 0x10, 0x11, 0x16, 0x7c, 0x11,
-+ 0x16, 0x10, 0x1b, 0x6c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xc8, 0x48, 0xf0, 0x20,
-+ 0x70, 0xa8, 0x24, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0x7c, 0xc0,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7f,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x54, 0xfc, 0x20, 0xf8, 0x20, 0xfc,
-+ 0x50, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x00,
-+ 0x20, 0x17, 0x15, 0x47, 0x22, 0x23, 0x05, 0x1f,
-+ 0x15, 0x17, 0x25, 0x21, 0x4e, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0xf0, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x48, 0xe8, 0x28, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3f, 0x00, 0x3c,
-+ 0x00, 0x3d, 0x26, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0xd0, 0x40, 0xfc, 0x40, 0x80,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x7f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x38, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x17, 0x15, 0x15, 0x15,
-+ 0x15, 0x15, 0x15, 0x21, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xd0, 0x50, 0x50, 0x50,
-+ 0x50, 0x50, 0xd4, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f,
-+ 0x10, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x40, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x44, 0x44,
-+ 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x52, 0x12,
-+ 0x12, 0x13, 0x12, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x17, 0x01, 0x00, 0x77, 0x10,
-+ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x10, 0x1f, 0x12,
-+ 0x12, 0x12, 0x22, 0x22, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x88,
-+ 0x48, 0x50, 0x20, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x7f, 0x06, 0x1a, 0x67, 0x0c, 0x17, 0x07,
-+ 0x04, 0x07, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xb0, 0xfc, 0x80, 0xe0, 0xe0,
-+ 0x80, 0xf0, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x3c, 0x24, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3c, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x08, 0x88, 0x90, 0xf8, 0x08, 0x08, 0xf8, 0x68,
-+ 0x60, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x02, 0x3e, 0x20, 0x22, 0x1e, 0x04,
-+ 0x3f, 0x04, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x80, 0x88, 0x78, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3e, 0x24, 0x3f,
-+ 0x01, 0x3f, 0x08, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x30, 0x30, 0xc8, 0x04,
-+ 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x12, 0x12, 0x02, 0x02, 0x72, 0x12,
-+ 0x12, 0x13, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x3a, 0x36,
-+ 0x37, 0x52, 0x52, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x04, 0x04, 0x08, 0x11, 0x01, 0x02, 0x04, 0x18,
-+ 0x6f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x10, 0x00, 0x80, 0x40, 0x30,
-+ 0xec, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x4a, 0x0a, 0x1b,
-+ 0x28, 0x4b, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3b, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0xfc, 0x24, 0xf8, 0xf8, 0x20,
-+ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x10, 0x17, 0x78, 0x13, 0x1a, 0x37, 0x37,
-+ 0x33, 0x50, 0x57, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xb8, 0x18, 0xf8,
-+ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3f, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0a, 0x09, 0x09, 0x08, 0x7f,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x1f, 0x11, 0x1f, 0x11, 0x11,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf0, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x49, 0x4b, 0x4a, 0x4b, 0x48,
-+ 0x4b, 0x78, 0x4f, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x00, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7c, 0x11, 0x12, 0x10, 0x1f,
-+ 0x70, 0x11, 0x12, 0x14, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa0, 0x24, 0x5c, 0x40, 0xfc,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x08, 0x0f, 0x08, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x20,
-+ 0x20, 0xe0, 0x20, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x3e, 0x2b, 0x3e, 0x08,
-+ 0x3e, 0x08, 0x7f, 0x14, 0x23, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x0a, 0x42, 0x24, 0x21, 0x06, 0x10,
-+ 0x12, 0x12, 0x24, 0x21, 0x42, 0x4c, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xd0, 0xa0, 0x18, 0x44, 0x48,
-+ 0x48, 0xd0, 0xa0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x11, 0x0f, 0x09, 0x41, 0x21, 0x21, 0x01, 0x1f,
-+ 0x14, 0x14, 0x25, 0x26, 0x47, 0x44, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xfc,
-+ 0xa0, 0xa4, 0x1c, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x10,
-+ 0x14, 0x15, 0x29, 0x22, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x80, 0x88,
-+ 0x88, 0x50, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x3f, 0x29, 0x49, 0x09, 0x7f,
-+ 0x09, 0x08, 0x14, 0x12, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08,
-+ 0x08, 0x90, 0x90, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x12, 0x12, 0x13, 0x7c, 0x0b, 0x48, 0x2b,
-+ 0x2a, 0x32, 0x1e, 0x72, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x12, 0x09, 0x1f, 0x11,
-+ 0x1f, 0x11, 0x1f, 0x01, 0x7f, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x10, 0x20, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0d, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2b, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x00, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x25, 0x3d, 0x26, 0x24, 0x3c,
-+ 0x24, 0x26, 0x3c, 0x64, 0x05, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x40, 0x60,
-+ 0x60, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d,
-+ 0x25, 0x25, 0x25, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x09, 0x1d, 0x23, 0x41, 0x0f,
-+ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xe0,
-+ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x7d, 0x02, 0x3a, 0x07, 0x39,
-+ 0x05, 0x3b, 0x2a, 0x2b, 0x3c, 0x28, 0x00, 0x00,
-+ 0x00, 0x0c, 0xf0, 0x10, 0x50, 0x50, 0x5c, 0x50,
-+ 0x50, 0x50, 0xfc, 0x00, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x1b, 0x0d, 0x71, 0x00, 0x00,
-+ 0x40, 0xb8, 0x28, 0x28, 0xe8, 0x4c, 0x04, 0xf8,
-+ 0x48, 0x28, 0xf0, 0x10, 0x28, 0xc4, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x24, 0x22,
-+ 0x22, 0x20, 0x20, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x17, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x11,
-+ 0x15, 0x19, 0x61, 0x01, 0x00, 0x0f, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7a, 0x09, 0x0b, 0x7a, 0x4b, 0x42, 0x7b,
-+ 0x48, 0x4f, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x88, 0x48, 0x10, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x65, 0x55, 0x56, 0x44, 0x7f, 0x4c,
-+ 0x4e, 0x55, 0x65, 0x44, 0x7f, 0x40, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0x40, 0x40, 0x7c, 0xc8, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x07, 0x7a, 0x49, 0x4b, 0x48, 0x7f, 0x48,
-+ 0x49, 0x49, 0x7a, 0x4c, 0x09, 0x16, 0x00, 0x00,
-+ 0x1c, 0xe4, 0x48, 0x30, 0xf8, 0x80, 0xfc, 0x80,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x17, 0x13, 0x7e, 0x12, 0x12, 0x3b, 0x35,
-+ 0x35, 0x51, 0x51, 0x11, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x06, 0x38, 0x20, 0x20, 0x3c, 0x21, 0x22, 0x3d,
-+ 0x20, 0x20, 0x3c, 0x60, 0x20, 0x23, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x94, 0x14, 0x0c, 0xf8,
-+ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x20, 0x28, 0xa8, 0xb0, 0x20, 0x50, 0x88, 0x24,
-+ 0xa4, 0xa8, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x15, 0x35, 0x55, 0x15,
-+ 0x15, 0x15, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x3f, 0x28, 0x48, 0x08, 0x7f,
-+ 0x08, 0x0c, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x00, 0x12, 0x12, 0x12, 0x7e, 0x13, 0x16, 0x12,
-+ 0x12, 0x16, 0x1a, 0x62, 0x02, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x78, 0xc8, 0x48, 0x48,
-+ 0x48, 0x70, 0x40, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7c, 0x04, 0x04, 0x3c, 0x24, 0x23, 0x3c,
-+ 0x24, 0x24, 0x04, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa8, 0xb8, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0xb8, 0xa0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x24, 0x25, 0x3d,
-+ 0x25, 0x26, 0x3e, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x20, 0x10, 0x10, 0x40, 0x40, 0x40, 0x48, 0x44,
-+ 0x44, 0x44, 0x40, 0x48, 0x48, 0x38, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x24, 0x7f, 0x0c, 0x0a, 0x12,
-+ 0x2f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x10, 0x0a, 0x0a, 0x42, 0x22, 0x23, 0x0e, 0x02,
-+ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x78, 0xc8, 0x48, 0x48,
-+ 0x48, 0x70, 0x40, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x4a, 0x2a, 0x2b, 0x0d, 0x19,
-+ 0x2f, 0x49, 0x11, 0x12, 0x24, 0x48, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x28, 0x28,
-+ 0xe8, 0x28, 0x28, 0xb8, 0xa8, 0x00, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x09, 0x0b, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x7f, 0x07, 0x24,
-+ 0x27, 0x27, 0x24, 0x27, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x80, 0xfc, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x14, 0x23, 0x7f, 0x0a, 0x08,
-+ 0x3e, 0x08, 0x08, 0x0e, 0x71, 0x06, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x56, 0x56, 0x54, 0x7f,
-+ 0x50, 0x18, 0x15, 0x1f, 0x62, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xe8, 0xa8, 0xa8, 0xa8, 0xe8,
-+ 0xa8, 0xa8, 0x68, 0x78, 0x28, 0x00, 0x00, 0x00,
-+ 0x00, 0x27, 0x14, 0x17, 0x05, 0x04, 0x77, 0x14,
-+ 0x15, 0x14, 0x1b, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x10, 0xa0, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa8, 0xb8, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xb8, 0xa0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x7e, 0x08, 0x0e, 0x71,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf0, 0x90, 0xd4, 0x2c,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x1c, 0x05, 0x03, 0x7e,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0xc0, 0x20, 0xf0, 0x08,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x1f, 0x14, 0x25, 0x44,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x42, 0x7f, 0x11,
-+ 0x11, 0x11, 0x1e, 0x72, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x90, 0x50, 0x50, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x7f, 0x02, 0x0c, 0x03, 0x7f,
-+ 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xc0, 0x30, 0xc8,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x11, 0x0e, 0x01, 0x76, 0x10,
-+ 0x13, 0x1c, 0x10, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x88, 0xc8, 0x50, 0x60, 0xd0,
-+ 0x48, 0x44, 0x44, 0x80, 0x00, 0xfc, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7e, 0x09, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x44, 0x08, 0x3f, 0x02, 0x04,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x90, 0x70, 0xf8, 0x40, 0x70,
-+ 0x88, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x19, 0x61,
-+ 0x1f, 0x01, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0x30, 0x0c,
-+ 0xf0, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x11, 0x78, 0x2b, 0x2a, 0x2b,
-+ 0x2a, 0x7a, 0x5a, 0x16, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xe8, 0xa8, 0xe8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x0f, 0x0c,
-+ 0x17, 0x14, 0x27, 0x44, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x21, 0x21,
-+ 0x3f, 0x21, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x14, 0x34, 0x54, 0x14,
-+ 0x17, 0x14, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x44, 0x44, 0x44, 0x44,
-+ 0xfc, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x41, 0x01, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x12, 0x12, 0x1e,
-+ 0x73, 0x12, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x17, 0x14,
-+ 0x27, 0x44, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0x40, 0xe0, 0x50,
-+ 0xc8, 0x44, 0xc0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1b,
-+ 0x2a, 0x28, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x00, 0x13,
-+ 0x10, 0x10, 0x20, 0x20, 0x4f, 0x40, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f,
-+ 0x11, 0x01, 0x01, 0x01, 0x7e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x20, 0x10, 0xf8, 0x04, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x03, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0x08, 0xb0, 0xc0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3f,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x08, 0x88, 0x08, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x48,
-+ 0xfc, 0x48, 0xa8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x17, 0x13, 0x39, 0x34,
-+ 0x37, 0x50, 0x50, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0xf0, 0x00,
-+ 0xfc, 0x80, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x20, 0x1f, 0x12, 0x42, 0x26, 0x2a, 0x03, 0x17,
-+ 0x1b, 0x22, 0x26, 0x5a, 0x42, 0x4c, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xb0, 0xfc, 0x20, 0x78,
-+ 0xc8, 0xf8, 0xc8, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x04, 0x44, 0x2b, 0x10, 0x30, 0x4f, 0x08, 0x19,
-+ 0x2b, 0x4d, 0x09, 0x09, 0x31, 0x11, 0x00, 0x00,
-+ 0x80, 0x88, 0xf8, 0x90, 0xa0, 0xfc, 0x80, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x20, 0x40,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x08, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x09, 0x01, 0x1f, 0x01, 0x7f, 0x01,
-+ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0x08, 0xf0, 0x20, 0xfc, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3e, 0x24, 0x3d, 0x24,
-+ 0x24, 0x3c, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x24, 0x14, 0x14, 0x04, 0x06,
-+ 0x0c, 0x78, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0xa0,
-+ 0x90, 0x90, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x07, 0x44, 0x24, 0x27, 0x04, 0x17, 0x14,
-+ 0x25, 0x25, 0x45, 0x49, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xe8, 0x88, 0xf8, 0x08,
-+ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x49, 0x49, 0x49, 0x49, 0x48,
-+ 0x4f, 0x78, 0x49, 0x46, 0x18, 0x00, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x70, 0x00, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x3f, 0x28, 0x7f, 0x14, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x78, 0x40, 0x78, 0x08, 0x78,
-+ 0x40, 0x78, 0x78, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x54, 0x54, 0x54, 0x55,
-+ 0x55, 0x5d, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x57,
-+ 0x55, 0x5d, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x48, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x3f, 0x22, 0x22, 0x3f,
-+ 0x22, 0x22, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x79, 0x09, 0x09, 0x79, 0x49, 0x41, 0x7f,
-+ 0x49, 0x49, 0x09, 0x09, 0x11, 0x66, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x48, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x2e, 0x24, 0x3f, 0x20,
-+ 0x2e, 0x2a, 0x2a, 0x2e, 0x2a, 0x41, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xa0, 0xc8, 0x88, 0x90, 0x90,
-+ 0xa4, 0x84, 0x88, 0x88, 0x90, 0xa0, 0x00, 0x00,
-+ 0x12, 0x1a, 0x2a, 0x4a, 0x1f, 0x10, 0x2f, 0x62,
-+ 0x22, 0x2f, 0x22, 0x23, 0x2c, 0x20, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x48, 0xc8, 0x28,
-+ 0x28, 0xb0, 0x10, 0xb0, 0x48, 0x84, 0x00, 0x00,
-+ 0x22, 0x2a, 0x4f, 0x10, 0x3f, 0x52, 0x17, 0x13,
-+ 0x1c, 0x01, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x20, 0xa0, 0xbc, 0x48, 0xa8, 0x28, 0x90, 0xb0,
-+ 0x48, 0x04, 0x90, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7e, 0x11, 0x11, 0x10, 0x1d,
-+ 0x72, 0x14, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x7d, 0x54, 0x7f,
-+ 0x55, 0x53, 0x14, 0x11, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x29, 0x0f, 0x19,
-+ 0x1f, 0x22, 0x3f, 0x42, 0x42, 0x43, 0x00, 0x00,
-+ 0x00, 0x78, 0xc8, 0x48, 0x48, 0x78, 0x48, 0x48,
-+ 0x78, 0x48, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x29, 0x29, 0x2b, 0x29, 0x3d, 0x21, 0x21, 0x39,
-+ 0x28, 0x2f, 0x28, 0x29, 0x2e, 0x48, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x50, 0x70, 0x00, 0xf8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x24,
-+ 0x24, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x4a, 0x79, 0x49, 0x48, 0x79,
-+ 0x4e, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x7c, 0x2b, 0x28, 0x3b, 0x2a, 0x2a, 0x3b,
-+ 0x2a, 0x2c, 0x3a, 0x6a, 0x0c, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x48, 0xa0, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3f,
-+ 0x24, 0x24, 0x24, 0x24, 0x24, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xfc,
-+ 0xc8, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x24, 0x27,
-+ 0x3d, 0x25, 0x26, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00,
-+ 0xa8, 0xa8, 0xfc, 0xa8, 0xa8, 0xb8, 0x80, 0xfc,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x08,
-+ 0xe8, 0xa8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x3d, 0x03, 0x7d, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x00, 0x3f, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x50, 0x70, 0x00, 0xf8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x3e, 0x08, 0x08, 0x7e, 0x09, 0x28,
-+ 0x2e, 0x28, 0x38, 0x28, 0x46, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xb0, 0x00, 0xf8,
-+ 0x88, 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x26, 0x3d, 0x09, 0x28, 0x2d,
-+ 0x2a, 0x28, 0x2d, 0x39, 0x62, 0x04, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0x54, 0xd4, 0xd8, 0x50, 0xd8,
-+ 0x54, 0x54, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x7f,
-+ 0x09, 0x08, 0x08, 0x08, 0x0f, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xfc,
-+ 0x10, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11,
-+ 0x11, 0x11, 0x11, 0x10, 0x33, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x0f,
-+ 0x08, 0x0f, 0x29, 0x24, 0x24, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc,
-+ 0x00, 0xfc, 0x24, 0x94, 0x04, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x2a, 0x2a, 0x3e,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x17, 0x11, 0x1d,
-+ 0x72, 0x14, 0x10, 0x10, 0x11, 0x3e, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x50, 0x48,
-+ 0x54, 0xd4, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x00, 0x27, 0x24, 0x27, 0x24,
-+ 0x27, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x3d, 0x24, 0x24, 0x3f, 0x24, 0x24, 0x3f,
-+ 0x24, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x08, 0x08, 0x90, 0xa0, 0xf8, 0x40, 0x40, 0xfc,
-+ 0x40, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x23, 0x22, 0x04, 0x10,
-+ 0x10, 0x20, 0x20, 0x41, 0x42, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x60,
-+ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x10, 0x11, 0x12, 0x7c, 0x13,
-+ 0x10, 0x11, 0x1c, 0x60, 0x00, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x48, 0x84, 0x20,
-+ 0x40, 0x88, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x04, 0x19, 0x77, 0x10, 0x13, 0x1f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x30, 0xc0, 0xfc, 0x40, 0xf8, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x28, 0x2b, 0x32, 0x2b, 0x26,
-+ 0x27, 0x24, 0x39, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x27, 0x20, 0x03, 0x10,
-+ 0x13, 0x10, 0x27, 0x20, 0x40, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x3c, 0x2b, 0x30, 0x2f, 0x24, 0x27, 0x38,
-+ 0x23, 0x21, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xc8, 0x68, 0xb0, 0x70, 0xa8,
-+ 0x24, 0xc0, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1b, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7d, 0x10, 0x10, 0x3b, 0x35,
-+ 0x35, 0x51, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x48, 0x78, 0x40, 0x78,
-+ 0x48, 0x48, 0x78, 0x48, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x20, 0x13, 0x12, 0x02, 0x03, 0x72, 0x13,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x12, 0x19, 0x25, 0x24, 0x78, 0x13, 0x7d,
-+ 0x11, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x48, 0x78, 0x40, 0x78,
-+ 0x48, 0x48, 0x78, 0x48, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x29, 0x08, 0x1b,
-+ 0x2a, 0x4b, 0x12, 0x13, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x20, 0xc0, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x27, 0x11, 0x10, 0x03, 0x02, 0x73, 0x12,
-+ 0x13, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0xc0, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x48, 0x48, 0x58, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x17, 0x7c, 0x11, 0x16, 0x10,
-+ 0x13, 0x1c, 0x61, 0x06, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x40, 0xc8, 0x68, 0xb0,
-+ 0x30, 0x68, 0xa4, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x0b, 0x0a, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0x88, 0xfc, 0x08,
-+ 0x48, 0x28, 0x08, 0xfc, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x12, 0x13, 0x1e,
-+ 0x72, 0x12, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x68, 0x58, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1a, 0x37, 0x36,
-+ 0x32, 0x53, 0x52, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xc8, 0x78, 0x48, 0xf8, 0x48,
-+ 0x48, 0x78, 0xb0, 0xb4, 0x54, 0x8c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x32, 0x53, 0x12,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x41, 0x20, 0x27, 0x01, 0x11,
-+ 0x11, 0x11, 0x21, 0x21, 0x41, 0x46, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2b, 0x29, 0x4a, 0x0c, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x80, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x10, 0x00, 0x07, 0x70, 0x10,
-+ 0x10, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xfc, 0x00, 0xfc, 0x24, 0x94, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x65, 0x18, 0x11, 0x2a, 0x7f,
-+ 0x1a, 0x35, 0x34, 0x31, 0x52, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xb0, 0x90, 0x68, 0x48, 0xf8,
-+ 0x48, 0x68, 0xb0, 0x90, 0x28, 0x44, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x18, 0x37, 0x35,
-+ 0x33, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xf0, 0xa0, 0xfc, 0x10,
-+ 0xf8, 0x14, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x20, 0x2f, 0x03, 0x12,
-+ 0x13, 0x13, 0x22, 0x23, 0x43, 0x4c, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xf0, 0x80, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x12, 0x7d, 0x11, 0x10, 0x17,
-+ 0x10, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x22, 0x5f,
-+ 0x12, 0x1f, 0x12, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x88, 0xf0,
-+ 0x90, 0xf0, 0x90, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x13, 0x7f, 0x2b, 0x28, 0x2f,
-+ 0x28, 0x73, 0x5a, 0x16, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0x40, 0xfc,
-+ 0x40, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x64, 0x1b, 0x1a, 0x26, 0x7e,
-+ 0x13, 0x1a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x10, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x10, 0x10, 0x10, 0x08, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x01, 0x3f,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x88, 0x88, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x52, 0x14, 0x28, 0x3e, 0x68,
-+ 0x3e, 0x28, 0x3e, 0x29, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f,
-+ 0x20, 0x5f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x52, 0x12,
-+ 0x12, 0x13, 0x1c, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0x40, 0x40, 0xfc, 0x20, 0x20,
-+ 0x20, 0x90, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x11, 0x11, 0x31, 0x50, 0x17,
-+ 0x14, 0x1b, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xf8, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x13, 0x32, 0x53, 0x12,
-+ 0x13, 0x12, 0x13, 0x11, 0x16, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x80, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x22, 0x12, 0x14, 0x7f, 0x09, 0x7f, 0x48, 0x7f,
-+ 0x59, 0x19, 0x2e, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x3f, 0x01,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xf8, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x10, 0x17,
-+ 0x10, 0x1e, 0x62, 0x03, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x3f, 0x01, 0x09,
-+ 0x09, 0x09, 0x09, 0x15, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x3f, 0x21, 0x5f,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x08, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x13, 0x12, 0x12, 0x13,
-+ 0x12, 0x12, 0x13, 0x1c, 0x27, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x30, 0xc0, 0x40, 0x40, 0xfc,
-+ 0x20, 0x20, 0x90, 0x14, 0xec, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1e, 0x12, 0x14, 0x1f,
-+ 0x12, 0x1a, 0x14, 0x26, 0x29, 0x50, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x18, 0xe0, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0xf8, 0x00, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x08, 0x10, 0x10, 0x3f, 0x08,
-+ 0x48, 0x28, 0x13, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x3f, 0x21, 0x3f,
-+ 0x23, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x1b, 0x34, 0x37, 0x32, 0x53,
-+ 0x12, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d,
-+ 0x71, 0x11, 0x16, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0xd0, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7a, 0x12, 0x17, 0x11, 0x1d,
-+ 0x75, 0x12, 0x12, 0x15, 0x18, 0x30, 0x00, 0x00,
-+ 0x00, 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0xf8, 0x00, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x10, 0x1f,
-+ 0x70, 0x12, 0x12, 0x13, 0x14, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x09, 0x08, 0x08, 0x7f, 0x08, 0x1b, 0x1e, 0x1b,
-+ 0x2a, 0x28, 0x49, 0x0a, 0x0c, 0x08, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x40, 0x20, 0x20, 0x00, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x11, 0x12, 0x3f, 0x24, 0x64,
-+ 0x24, 0x24, 0x3c, 0x25, 0x22, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x09, 0x09, 0x11, 0x19,
-+ 0x35, 0x55, 0x11, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x0d, 0x39, 0x09, 0x09, 0x7e, 0x09, 0x1c,
-+ 0x1a, 0x2b, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x65, 0x28, 0x1b, 0x22, 0x7c,
-+ 0x13, 0x3a, 0x36, 0x36, 0x52, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x48, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00,
-+ 0x08, 0x13, 0x3c, 0x25, 0x35, 0x2f, 0x2c, 0x7e,
-+ 0x26, 0x2d, 0x2d, 0x2e, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0x8c, 0xf0, 0x10, 0x10, 0x90, 0xfc, 0x90,
-+ 0x90, 0x10, 0x7c, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3d, 0x01, 0x3e,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x24, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x29, 0x09, 0x2f,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x28, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x27, 0x14, 0x17, 0x04, 0x07, 0x04, 0x77,
-+ 0x1a, 0x1a, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0x40, 0xfc, 0x40, 0xf8,
-+ 0x48, 0x48, 0x70, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x3c, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x24,
-+ 0x22, 0x3a, 0x61, 0x00, 0x7e, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0xe0, 0x50, 0x48,
-+ 0x44, 0xc4, 0xe4, 0xd8, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x0a, 0x7f, 0x0c, 0x3f, 0x2f, 0x33, 0x3f,
-+ 0x3f, 0x04, 0x7f, 0x0a, 0x11, 0x20, 0x00, 0x00,
-+ 0x00, 0x78, 0xc8, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0xe4, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x07, 0x24, 0x27, 0x27, 0x24, 0x27, 0x3e,
-+ 0x02, 0x7e, 0x12, 0x12, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xc0, 0x48, 0xc8, 0xc8, 0x48, 0xc8, 0xf8,
-+ 0x80, 0xfc, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x02,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x80, 0x98,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7d, 0x10, 0x13, 0x12, 0x1f,
-+ 0x72, 0x12, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x11, 0x1f,
-+ 0x76, 0x13, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20, 0xf8,
-+ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x49, 0x7f,
-+ 0x49, 0x5d, 0x55, 0x5d, 0x41, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x7c, 0x90, 0x90, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x42, 0x21, 0x27, 0x04, 0x17,
-+ 0x14, 0x15, 0x25, 0x25, 0x45, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xe8, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x7c, 0x45, 0x45, 0x46, 0x7c,
-+ 0x44, 0x44, 0x44, 0x7c, 0x40, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x41, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x20, 0x17, 0x10, 0x03, 0x02, 0x73, 0x12,
-+ 0x12, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x25, 0x24, 0x7b, 0x12, 0x7f,
-+ 0x12, 0x56, 0x3a, 0x32, 0x1e, 0x62, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x27, 0x24, 0x07, 0x10,
-+ 0x14, 0x13, 0x22, 0x24, 0x40, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x40, 0xf8, 0x88,
-+ 0xc8, 0xb8, 0xa8, 0xc8, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x0e, 0x78, 0x09, 0x1a,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x10, 0x10,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x11, 0x11, 0x2f, 0x4b, 0x0a, 0x1f, 0x10, 0x37,
-+ 0x54, 0x17, 0x14, 0x17, 0x14, 0x15, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xc8, 0x48, 0xa8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7b, 0x12, 0x1f, 0x10, 0x1f,
-+ 0x74, 0x17, 0x14, 0x17, 0x14, 0x35, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xc8, 0x48, 0xa8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x11, 0x11, 0x7f, 0x11, 0x7e, 0x57, 0x7c, 0x57,
-+ 0x7e, 0x13, 0x7e, 0x13, 0x12, 0x12, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xbc, 0xc8, 0x68, 0xa8,
-+ 0xa8, 0x90, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x22, 0x12, 0x13, 0x04, 0x08, 0x7f, 0x10,
-+ 0x10, 0x11, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xc0,
-+ 0xa0, 0x10, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x12,
-+ 0x12, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x90,
-+ 0x90, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x10, 0x7d, 0x11, 0x11, 0x11,
-+ 0x11, 0x1d, 0x61, 0x07, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x90, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x3f, 0x01, 0x03,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x80,
-+ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x12, 0x1f, 0x12,
-+ 0x1f, 0x12, 0x12, 0x22, 0x23, 0x5c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40, 0xf8, 0x40,
-+ 0xfc, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x17, 0x14, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x80, 0xfc, 0x80, 0x80,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x47, 0x20, 0x21, 0x02, 0x14,
-+ 0x12, 0x12, 0x24, 0x28, 0x40, 0x41, 0x00, 0x00,
-+ 0x38, 0xc0, 0x40, 0xfc, 0xa0, 0x10, 0x88, 0x84,
-+ 0xd0, 0xa8, 0xa4, 0xa4, 0x80, 0x80, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2a, 0x1a, 0x26, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x36, 0x52, 0x15, 0x00, 0x00,
-+ 0x20, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf8,
-+ 0xfc, 0xb4, 0x2c, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x50, 0x48, 0x78, 0xc4, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x22, 0x3e, 0x3e,
-+ 0x22, 0x3e, 0x7f, 0x0c, 0x12, 0x63, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x0f, 0x08, 0x08, 0x08,
-+ 0x0f, 0x08, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x20, 0x20, 0x20,
-+ 0xe0, 0x20, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x10, 0x37, 0x50, 0x10,
-+ 0x10, 0x11, 0x11, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80,
-+ 0xa0, 0x10, 0x08, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x2a, 0x2a, 0x3f,
-+ 0x2a, 0x3f, 0x2c, 0x4a, 0x52, 0x23, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x8c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x20, 0x1f, 0x18, 0x08, 0x4f, 0x2a, 0x2a, 0x0f,
-+ 0x1a, 0x1a, 0x2f, 0x2b, 0x54, 0x48, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xac, 0xc4, 0xfc,
-+ 0xa8, 0xa8, 0xd0, 0x30, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x3f, 0x21,
-+ 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x01, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x13, 0x03, 0x05, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x40, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x4b, 0x48, 0x48, 0x48,
-+ 0x48, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x7c, 0x17, 0x10, 0x11,
-+ 0x17, 0x1d, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x60, 0xfc, 0x40, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x30, 0x08, 0x61, 0x17, 0x00, 0x0f, 0x11, 0x26,
-+ 0x21, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xa0, 0x10, 0xfc, 0x40, 0xfc, 0x50, 0x48,
-+ 0xc0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x25, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x40, 0x40, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x10, 0x1f,
-+ 0x11, 0x17, 0x19, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0xf0, 0xa0, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x48, 0x08, 0x17, 0x10, 0x32,
-+ 0x52, 0x12, 0x12, 0x15, 0x18, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x0c, 0x02, 0x00, 0x18, 0x04, 0x00, 0x00,
-+ 0x07, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x19, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x27, 0x24, 0x04, 0x14,
-+ 0x17, 0x15, 0x24, 0x28, 0x49, 0x56, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0x00,
-+ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x0e, 0x02, 0x24, 0x14, 0x08, 0x1f, 0x20, 0x4f,
-+ 0x08, 0x0f, 0x04, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0x90, 0x90, 0x64, 0x44, 0x28, 0xf0, 0x08, 0xe4,
-+ 0x20, 0xe0, 0x40, 0x80, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x18, 0x7f, 0x11,
-+ 0x11, 0x1f, 0x13, 0x05, 0x19, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x80, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x44, 0x24, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x3c, 0x24,
-+ 0x25, 0x3e, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x40, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x20, 0x11, 0x11, 0x02, 0x0f, 0x70, 0x1f,
-+ 0x12, 0x12, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0xf8, 0x84, 0xf8,
-+ 0xa0, 0x90, 0x88, 0x88, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x09, 0x0a, 0x7f, 0x08, 0x1f,
-+ 0x31, 0x5f, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0xe0, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x23, 0x7d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x1a, 0x0e, 0x75, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0xfc, 0x50, 0x70, 0x00,
-+ 0xf8, 0x48, 0x50, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x21, 0x3d, 0x65,
-+ 0x25, 0x25, 0x27, 0x3c, 0x25, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x10, 0xd0, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3e, 0x22, 0x24, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x20, 0x20, 0x38,
-+ 0x28, 0x28, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x12, 0x12, 0x3c, 0x06, 0x19,
-+ 0x61, 0x3f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x48, 0x50, 0x20, 0xd0, 0x0c,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x13, 0x10,
-+ 0x17, 0x12, 0x11, 0x20, 0x23, 0x5c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xe0, 0x00,
-+ 0xf0, 0x20, 0x40, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x48, 0x50, 0x50,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x04, 0x1b,
-+ 0x61, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x0f, 0x09, 0x11, 0x12, 0x3f, 0x51, 0x11,
-+ 0x17, 0x11, 0x11, 0x11, 0x1e, 0x10, 0x00, 0x00,
-+ 0x08, 0xe8, 0x28, 0xa8, 0x68, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x28, 0x28, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x08,
-+ 0x0f, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0x20,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x01, 0x03, 0x0c, 0x32, 0x01, 0x03, 0x0c,
-+ 0x73, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x20, 0x40, 0x80, 0x40, 0x30,
-+ 0x0c, 0x80, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x27, 0x10, 0x13, 0x02, 0x0b, 0x0a,
-+ 0x13, 0x10, 0x21, 0x22, 0x2c, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x10, 0x17,
-+ 0x10, 0x17, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90, 0xf0,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x11, 0x17, 0x11, 0x7d, 0x10, 0x11, 0x17,
-+ 0x14, 0x1b, 0x62, 0x02, 0x03, 0x02, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x50, 0xa0, 0x10, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x13, 0x12, 0x13,
-+ 0x12, 0x1f, 0x65, 0x05, 0x09, 0x11, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x1f, 0x64, 0x07, 0x04,
-+ 0x07, 0x04, 0x7f, 0x02, 0x04, 0x3f, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0xf0, 0x0c, 0xc0, 0x00,
-+ 0xc0, 0x00, 0xfc, 0x80, 0x60, 0x90, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x7f, 0x04, 0x04,
-+ 0x0f, 0x0c, 0x14, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x22, 0x22, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x00, 0xfc, 0x24, 0x24, 0xe4, 0x38, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x7d, 0x47, 0x42, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x18, 0x37, 0x36, 0x33, 0x52,
-+ 0x13, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x12, 0x14, 0x1f,
-+ 0x71, 0x11, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0xf0,
-+ 0x10, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x10, 0x1b, 0x15,
-+ 0x30, 0x53, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x50, 0xa0, 0x18, 0xf4,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7e, 0x11, 0x39, 0x34, 0x35,
-+ 0x56, 0x50, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x10, 0x3f, 0x34,
-+ 0x37, 0x51, 0x52, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x12, 0x3b, 0x36,
-+ 0x37, 0x50, 0x51, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x21, 0x11, 0x02, 0x0a, 0x14, 0x21, 0x22,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x50, 0xa0, 0x10, 0x0c,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x43, 0x23, 0x25, 0x0a, 0x17,
-+ 0x10, 0x12, 0x22, 0x23, 0x42, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x88, 0xf8,
-+ 0x88, 0xa8, 0xa8, 0xe8, 0x28, 0x30, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x00, 0x1f,
-+ 0x12, 0x23, 0x24, 0x49, 0x42, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x20, 0x07, 0x08,
-+ 0x0f, 0x11, 0x12, 0x24, 0x28, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x48,
-+ 0x08, 0x0c, 0x12, 0x12, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x11, 0x10, 0x16, 0x15, 0x39, 0x32, 0x35, 0x51,
-+ 0x11, 0x19, 0x14, 0x24, 0x27, 0x40, 0x00, 0x00,
-+ 0xc8, 0x48, 0xb0, 0xa4, 0xf8, 0x08, 0xf4, 0x10,
-+ 0xf0, 0x10, 0x90, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x11, 0x09, 0x09, 0x01, 0x3f, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x20, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x0b, 0x1a,
-+ 0x2a, 0x4b, 0x12, 0x11, 0x21, 0x4f, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x05, 0x08, 0x0b, 0x14,
-+ 0x37, 0x51, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x90,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x01, 0x3f,
-+ 0x00, 0x7f, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x42, 0x04, 0x1f,
-+ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x90, 0x80, 0x40, 0xf0,
-+ 0x0c, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x5f, 0x10, 0x17,
-+ 0x10, 0x13, 0x12, 0x12, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x08, 0xe8,
-+ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x3b, 0x12, 0x7f, 0x12, 0x1b,
-+ 0x36, 0x37, 0x53, 0x15, 0x15, 0x19, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0x50, 0x98, 0xe4, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x0c, 0x12, 0x7d, 0x09, 0x08,
-+ 0x7f, 0x08, 0x08, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x7f, 0x0f, 0x09, 0x0f,
-+ 0x09, 0x0f, 0x3f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x80, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x11, 0x09, 0x49, 0x21, 0x21,
-+ 0x0f, 0x09, 0x13, 0x1c, 0x23, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0x00, 0xf8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x39, 0x28, 0x2b, 0x38, 0x2f,
-+ 0x29, 0x3b, 0x2c, 0x2b, 0x28, 0x58, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x50, 0xe0, 0xf8, 0xa0, 0xfc,
-+ 0x50, 0x58, 0xe4, 0x50, 0x48, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3c, 0x01, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x02, 0x3d, 0x27, 0x24, 0x3f, 0x25, 0x26, 0x27,
-+ 0x3c, 0x24, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x48, 0x50, 0xf8, 0xa0, 0xfc, 0x10, 0xf8, 0xfc,
-+ 0xf0, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10,
-+ 0x08, 0x04, 0x04, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x20, 0x20, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x29, 0x08, 0x2e,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x70, 0xa8, 0x24, 0x60, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x20, 0x14, 0x12, 0x02, 0x00, 0x71, 0x12,
-+ 0x1d, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0x28, 0x24, 0x24, 0x1c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x17, 0x00, 0x01, 0x77, 0x10,
-+ 0x10, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0xec, 0xa0,
-+ 0xb8, 0x28, 0x08, 0x30, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5d, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0xe8, 0x68, 0x74, 0x94, 0xf8, 0x08, 0xfc, 0x88,
-+ 0xf8, 0x90, 0x50, 0x60, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x79, 0x49, 0x53, 0x65, 0x59, 0x4a, 0x4f,
-+ 0x48, 0x4a, 0x72, 0x43, 0x42, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x88, 0xf8,
-+ 0x88, 0xa8, 0xa8, 0xe8, 0x28, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22,
-+ 0x12, 0x14, 0x08, 0x0e, 0x71, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x02, 0x39, 0x2b, 0x28, 0x2f, 0x39, 0x2b, 0x2d,
-+ 0x39, 0x29, 0x29, 0x2b, 0x2a, 0x5c, 0x00, 0x00,
-+ 0x48, 0x50, 0xf8, 0xa0, 0xfc, 0xf0, 0x48, 0xf4,
-+ 0xf0, 0x40, 0xfc, 0x54, 0xac, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x3f,
-+ 0x2f, 0x2a, 0x2e, 0x2a, 0x27, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x28, 0x28,
-+ 0xf8, 0xa8, 0xa8, 0x28, 0x28, 0x78, 0x00, 0x00,
-+ 0x11, 0x1e, 0x12, 0x3f, 0x2f, 0x6a, 0x2f, 0x2a,
-+ 0x2f, 0x22, 0x2f, 0x22, 0x23, 0x2c, 0x00, 0x00,
-+ 0xa0, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0x28, 0xa8, 0x28, 0xc8, 0x98, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x3e, 0x08, 0x0f, 0x72, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x40, 0x40, 0x5f, 0x40, 0x4f, 0x48,
-+ 0x48, 0x48, 0x4f, 0x48, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0x08, 0xc8, 0x48,
-+ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x21, 0x1f, 0x10, 0x03, 0x72, 0x13, 0x13, 0x1a,
-+ 0x67, 0x03, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0xf0, 0x10,
-+ 0xf0, 0xf8, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x17, 0x3b, 0x36, 0x37, 0x52,
-+ 0x13, 0x10, 0x13, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7f, 0x13, 0x12, 0x13, 0x16,
-+ 0x1b, 0x70, 0x13, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0c, 0x44, 0x27, 0x24, 0x05, 0x15,
-+ 0x15, 0x15, 0x25, 0x24, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0x28,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7b, 0x49, 0x4f, 0x7b, 0x4a, 0x4b, 0x7a,
-+ 0x4b, 0x48, 0x7b, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x04, 0x7f, 0x0f, 0x09, 0x0f, 0x09,
-+ 0x0f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d,
-+ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0x04, 0xfc, 0x04, 0x74, 0x54,
-+ 0x54, 0x54, 0x74, 0x44, 0x04, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x0c, 0x08, 0x1f, 0x24, 0x4f,
-+ 0x12, 0x3f, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x08, 0xe8, 0x48, 0x48, 0xc8, 0x30, 0x00, 0x00,
-+ 0x02, 0x21, 0x1f, 0x10, 0x03, 0x02, 0x73, 0x12,
-+ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8,
-+ 0xa8, 0xa8, 0xe8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x10, 0x54, 0x57, 0x54, 0x57,
-+ 0x54, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc,
-+ 0x60, 0x50, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x20, 0x26, 0x39, 0x21, 0x23, 0x1f, 0x11, 0x11,
-+ 0x7f, 0x11, 0x11, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x2f, 0x22, 0x21, 0x3f, 0x22,
-+ 0x27, 0x2a, 0x33, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0x00, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x21, 0x49, 0x09, 0x11, 0x10, 0x37,
-+ 0x50, 0x17, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x10, 0xfc, 0x10, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x27, 0x48, 0x0b, 0x12, 0x12, 0x33,
-+ 0x53, 0x10, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x08, 0xd0, 0x28, 0x04, 0x14, 0xf0, 0x00, 0x00,
-+ 0x20, 0x10, 0x17, 0x40, 0x23, 0x20, 0x03, 0x12,
-+ 0x14, 0x10, 0x20, 0x21, 0x42, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x08,
-+ 0xa0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x2b, 0x28, 0x3c, 0x2b, 0x28, 0x48,
-+ 0x0f, 0x79, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x7f, 0x2a, 0x29, 0x5f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0xec, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x80, 0xf0, 0x80,
-+ 0xf0, 0x80, 0xfc, 0x24, 0x94, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x0f,
-+ 0x09, 0x7f, 0x09, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xc0, 0x00, 0x00,
-+ 0x04, 0x44, 0x28, 0x13, 0x32, 0x4a, 0x0a, 0x1b,
-+ 0x2a, 0x48, 0x08, 0x08, 0x37, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8,
-+ 0x48, 0x50, 0x48, 0x78, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3c, 0x01, 0x3d,
-+ 0x02, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x08,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x2a, 0x4a, 0x0c, 0x09, 0x0a, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x78,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x11, 0x16, 0x7f, 0x12, 0x13, 0x38, 0x35,
-+ 0x36, 0x51, 0x56, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x80, 0xf0, 0x40, 0xf8, 0x48, 0xf8, 0x80, 0xe8,
-+ 0x68, 0xb0, 0x68, 0xa4, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x3c, 0x24,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x78, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x11, 0x01,
-+ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x80, 0x88, 0x78, 0x00,
-+ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x3a, 0x37,
-+ 0x36, 0x52, 0x53, 0x16, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0xb8, 0x28, 0x28, 0xac, 0x4c, 0x04, 0xf8,
-+ 0x28, 0xa8, 0x10, 0x30, 0x48, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x18,
-+ 0x18, 0x1f, 0x28, 0x28, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x80, 0xf8, 0x88,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x04, 0x1f, 0x1f, 0x10, 0x1f,
-+ 0x1f, 0x10, 0x1f, 0x15, 0x25, 0x40, 0x00, 0x00,
-+ 0x10, 0xfc, 0x80, 0x40, 0xe4, 0xdc, 0x44, 0xc0,
-+ 0xf0, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x01, 0x01,
-+ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x5f, 0x01, 0x1f, 0x11,
-+ 0x1f, 0x11, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf0, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24,
-+ 0x28, 0x30, 0x3f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x98, 0x98,
-+ 0x78, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x24, 0x1f, 0x14, 0x4f, 0x24, 0x3f, 0x00, 0x1f,
-+ 0x19, 0x2f, 0x29, 0x4f, 0x49, 0x4b, 0x00, 0x00,
-+ 0x20, 0x20, 0x78, 0x90, 0x20, 0xf8, 0x28, 0xfc,
-+ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x02, 0x02, 0x73, 0x5e, 0x52, 0x5a, 0x5a, 0x5a,
-+ 0x7f, 0x5a, 0x4a, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x7c, 0x90, 0x20, 0xf8, 0xc8, 0xf8, 0xc8,
-+ 0xf8, 0xc8, 0x78, 0xb0, 0xa8, 0xc4, 0x00, 0x00,
-+ 0x02, 0x02, 0x03, 0x7e, 0x22, 0x22, 0x22, 0x22,
-+ 0x3f, 0x22, 0x22, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x30, 0xc0, 0x00, 0x20, 0x20, 0x20, 0x20,
-+ 0xe0, 0x20, 0x20, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x19, 0x35, 0x35, 0x30, 0x53,
-+ 0x10, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf0,
-+ 0x20, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x22, 0x3f, 0x00,
-+ 0x3e, 0x04, 0x0e, 0x78, 0x09, 0x1e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x22, 0x02, 0x0a,
-+ 0x0b, 0x0a, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc0, 0x48, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x27, 0x3c, 0x24, 0x27,
-+ 0x3c, 0x24, 0x27, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x88, 0x48, 0x70, 0xa0, 0x30,
-+ 0x70, 0xa8, 0x24, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x02, 0x02, 0x72, 0x12,
-+ 0x12, 0x14, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x0f, 0x78, 0x08, 0x2a, 0x2a, 0x2a,
-+ 0x2a, 0x3e, 0x28, 0x0a, 0x0a, 0x07, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x02, 0x04, 0x18,
-+ 0x6f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30,
-+ 0xec, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x0f, 0x08, 0x0f, 0x0f, 0x3f, 0x01, 0x3f, 0x2d,
-+ 0x4d, 0x1f, 0x00, 0x7f, 0x04, 0x3f, 0x00, 0x00,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0x00, 0xfc, 0x68,
-+ 0x60, 0xf0, 0x00, 0xfc, 0x60, 0x90, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x3c, 0xe0, 0x28, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x02, 0x04, 0x18, 0x67, 0x00,
-+ 0x3f, 0x01, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x80, 0x40, 0x30, 0xcc, 0x00,
-+ 0xf8, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x09, 0x3f, 0x09, 0x09, 0x3f,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x22, 0x22,
-+ 0x24, 0x28, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88, 0x48,
-+ 0x28, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x0f, 0x09, 0x11, 0x21, 0x41,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x11, 0x11, 0x15, 0x15, 0x15,
-+ 0x15, 0x15, 0x15, 0x3f, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xd0, 0x10,
-+ 0x10, 0x10, 0x14, 0xec, 0x0c, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x14, 0x10, 0x3e, 0x28, 0x49,
-+ 0x7e, 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x90, 0xfc, 0x90,
-+ 0xf8, 0x90, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x3a, 0x01, 0x7d, 0x00, 0x38, 0x07, 0x39,
-+ 0x01, 0x39, 0x29, 0x2b, 0x3c, 0x28, 0x00, 0x00,
-+ 0x20, 0x28, 0xa8, 0x70, 0x20, 0xfc, 0x70, 0x70,
-+ 0xa8, 0xa4, 0x20, 0x20, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x25, 0x15, 0x1f, 0x45, 0x2f, 0x2a, 0x0f, 0x12,
-+ 0x1f, 0x22, 0x2f, 0x43, 0x44, 0x58, 0x00, 0x00,
-+ 0x28, 0x28, 0xb0, 0x7c, 0xd0, 0xd0, 0xfc, 0x50,
-+ 0xd0, 0x7c, 0xd0, 0x50, 0xfc, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x13, 0x1c,
-+ 0x77, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xa0, 0x10, 0xf8, 0x04,
-+ 0xf8, 0x40, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xb8, 0xa8, 0xa8, 0xfc, 0x04,
-+ 0x74, 0x54, 0x54, 0x74, 0x04, 0x0c, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7f, 0x14, 0x13, 0x3a, 0x36,
-+ 0x36, 0x53, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8,
-+ 0xb8, 0x18, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x24, 0x7f,
-+ 0x12, 0x3b, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x03, 0x7c, 0x56, 0x55, 0x55, 0x7e, 0x57,
-+ 0x54, 0x56, 0x7d, 0x45, 0x42, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xa8, 0x10, 0xb0, 0x48, 0xf8,
-+ 0xa8, 0xa8, 0x10, 0x90, 0x68, 0x44, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x3f, 0x24, 0x22,
-+ 0x2f, 0x21, 0x2f, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x48, 0x88,
-+ 0xe8, 0x08, 0xe8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x13, 0x3a, 0x37,
-+ 0x36, 0x53, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x28, 0xc8, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0x48, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x3e, 0x2b, 0x3e, 0x08,
-+ 0x3e, 0x08, 0x7f, 0x14, 0x22, 0x40, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x27, 0x21, 0x01, 0x09,
-+ 0x0b, 0x0a, 0x10, 0x10, 0x21, 0x26, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x10, 0x10, 0x10,
-+ 0x90, 0x60, 0x20, 0x50, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x12, 0x12, 0x12,
-+ 0x13, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x38,
-+ 0xc0, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x1f,
-+ 0x00, 0x00, 0x01, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40, 0x20,
-+ 0x20, 0x20, 0x90, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x21, 0x11, 0x13, 0x02, 0x04, 0x79, 0x11,
-+ 0x12, 0x14, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x50, 0x48,
-+ 0x44, 0x44, 0x40, 0xc0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x28, 0x49, 0x0e,
-+ 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88, 0x08,
-+ 0x08, 0x48, 0x48, 0xc8, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x3d, 0x25,
-+ 0x25, 0x3d, 0x19, 0x15, 0x22, 0x45, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x78, 0x00, 0xfc, 0x60,
-+ 0x64, 0x58, 0x50, 0x50, 0x68, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x21, 0x21, 0x22, 0x25, 0x29,
-+ 0x21, 0x22, 0x24, 0x28, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x88, 0x48, 0x28, 0x28,
-+ 0x88, 0x48, 0x28, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a,
-+ 0x3e, 0x2c, 0x0a, 0x0f, 0x19, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x03, 0x7c, 0x11, 0x49, 0x2a, 0x24, 0x3f, 0x02,
-+ 0x04, 0x07, 0x7c, 0x04, 0x04, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x0f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-+ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x11, 0x12, 0x24, 0x38, 0x40, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x80, 0x88, 0xc8,
-+ 0xb0, 0xa0, 0x90, 0x88, 0x84, 0x80, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x04, 0x3c, 0x04,
-+ 0x3c, 0x04, 0x3c, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x40, 0x78, 0x40,
-+ 0x78, 0x40, 0x78, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x10, 0x30, 0x57, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x12, 0x13,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x20, 0x00, 0x00,
-+ 0x00, 0x1c, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x0d, 0x03, 0x02, 0x0c, 0x30,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x90, 0x10, 0x60,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3c, 0x01, 0x3c,
-+ 0x00, 0x3d, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xc8, 0x68, 0x88, 0x30, 0x40,
-+ 0xa0, 0xa8, 0x84, 0x94, 0x90, 0x70, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x47, 0x27, 0x23, 0x00, 0x0f,
-+ 0x08, 0x13, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0x40, 0xfc,
-+ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7e, 0x07, 0x0a, 0x0b, 0x1a,
-+ 0x37, 0x56, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0x4c, 0xf8, 0xd8, 0xf8, 0xd8,
-+ 0x68, 0xd8, 0xf8, 0xd8, 0x68, 0x58, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0a, 0x10, 0x18,
-+ 0x34, 0x55, 0x11, 0x12, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0, 0xa8,
-+ 0xa8, 0x24, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x3f, 0x23, 0x54, 0x14, 0x23, 0x1f, 0x12,
-+ 0x1f, 0x00, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xa0, 0x50, 0xc8, 0xf0, 0x90,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0f, 0x12, 0x2f, 0x44, 0x09,
-+ 0x13, 0x00, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xc8, 0xe8, 0x08,
-+ 0x30, 0x80, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x09, 0x49, 0x37, 0x11, 0x31, 0x48, 0x0b, 0x1a,
-+ 0x2a, 0x4b, 0x0a, 0x0a, 0x33, 0x12, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x10, 0x00, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x7f, 0x15, 0x2b, 0x7e,
-+ 0x08, 0x0f, 0x70, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0, 0x50, 0x74,
-+ 0x94, 0x0c, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x20, 0x4f, 0x08, 0x08,
-+ 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x80, 0x80, 0xf0, 0x80, 0x80,
-+ 0x80, 0xfc, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x1f, 0x60, 0x0f, 0x00,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x40,
-+ 0x80, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x13, 0x1c,
-+ 0x70, 0x11, 0x15, 0x15, 0x19, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0x10,
-+ 0xa0, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00,
-+ 0x12, 0x12, 0x13, 0x7a, 0x16, 0x15, 0x1d, 0x13,
-+ 0x1a, 0x74, 0x18, 0x15, 0x14, 0x38, 0x00, 0x00,
-+ 0x30, 0x28, 0xa8, 0xa0, 0xfc, 0xa0, 0x30, 0x50,
-+ 0x48, 0x84, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x11, 0x11, 0x15, 0x15, 0x3b, 0x32, 0x36, 0x59,
-+ 0x12, 0x14, 0x18, 0x25, 0x24, 0x48, 0x00, 0x00,
-+ 0x20, 0x28, 0xe4, 0x64, 0x7c, 0xa0, 0xa0, 0x50,
-+ 0x50, 0x88, 0x04, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x78, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x08, 0x13, 0x12, 0x3a, 0x0a,
-+ 0x4b, 0x2a, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xb8,
-+ 0x38, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x1a, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0x40,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x09,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x09, 0x0f, 0x3f, 0x2a, 0x7f,
-+ 0x0f, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xfc, 0xa8, 0xf8,
-+ 0xe0, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x19, 0x34, 0x34, 0x33, 0x52,
-+ 0x12, 0x12, 0x12, 0x13, 0x13, 0x12, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0x20, 0x40, 0x20, 0x28, 0xa8,
-+ 0x48, 0x48, 0xa8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x07, 0x05,
-+ 0x14, 0x17, 0x25, 0x25, 0x49, 0x56, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xfc, 0xf0,
-+ 0x00, 0xfc, 0x48, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x67, 0x1a, 0x1a, 0x26, 0x7e,
-+ 0x12, 0x1b, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xa8,
-+ 0x98, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0c, 0x12, 0x7d, 0x01, 0x3e, 0x22,
-+ 0x3e, 0x22, 0x3e, 0x22, 0x22, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0x4c, 0x70, 0x44, 0x44, 0x3c, 0x40,
-+ 0x4c, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x25, 0x3c, 0x25, 0x25, 0x3d,
-+ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x88, 0x48, 0x48, 0x10, 0x20, 0x18, 0x98, 0x68,
-+ 0x28, 0x58, 0x98, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3b, 0x2a, 0x2b, 0x3a, 0x2b, 0x2b, 0x3a,
-+ 0x2a, 0x2b, 0x2a, 0x2a, 0x2c, 0x5b, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xfc, 0xf8,
-+ 0x00, 0xfc, 0xc8, 0xb0, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x02, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x1f, 0x17,
-+ 0x10, 0x1f, 0x12, 0x12, 0x23, 0x5c, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0xf8, 0xf0,
-+ 0x00, 0xfc, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x02, 0x7e, 0x02, 0x3a, 0x2a, 0x2a,
-+ 0x2a, 0x3a, 0x2a, 0x02, 0x02, 0x0d, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x12, 0x09, 0x07, 0x19, 0x6f,
-+ 0x09, 0x09, 0x0f, 0x01, 0x01, 0x7e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0x80, 0xc0, 0x30, 0xec,
-+ 0x20, 0x20, 0xe0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x3f, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x12, 0x13, 0x1e,
-+ 0x72, 0x12, 0x12, 0x12, 0x12, 0x31, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x17, 0x10, 0x11, 0x1a,
-+ 0x77, 0x12, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x10, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x48,
-+ 0xfc, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x1f, 0x12, 0x1f, 0x14, 0x7f, 0x1c,
-+ 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x90, 0xf0, 0x00, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x22, 0x03, 0x13,
-+ 0x12, 0x12, 0x24, 0x24, 0x49, 0x56, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x22, 0x02, 0x12,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00,
-+ 0x20, 0xc0, 0x08, 0x30, 0xc0, 0xc8, 0xc8, 0xb0,
-+ 0xa0, 0x90, 0x90, 0x88, 0x84, 0x80, 0x00, 0x00,
-+ 0x00, 0x3e, 0x08, 0x3e, 0x08, 0x0e, 0x70, 0x1f,
-+ 0x11, 0x1f, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x11, 0x11, 0x21, 0x3d, 0x65,
-+ 0x25, 0x25, 0x26, 0x3e, 0x25, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x28, 0x30, 0x20, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x30, 0x0b, 0x62, 0x0b, 0x12, 0x24, 0x27, 0x09,
-+ 0x7f, 0x02, 0x07, 0x08, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xf8, 0x90, 0x60, 0x9c, 0x00,
-+ 0xfc, 0x20, 0x40, 0xe0, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0xf8, 0x80, 0xf0, 0x80,
-+ 0xf0, 0x80, 0xfc, 0x24, 0x94, 0x38, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x1f, 0x11, 0x11,
-+ 0x1f, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x00, 0x09, 0x24, 0x24, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x04, 0x24, 0x94, 0x04, 0x04, 0x38, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x57, 0x10,
-+ 0x10, 0x17, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0,
-+ 0xa0, 0xbc, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x13, 0x18, 0x15, 0x12, 0x1f,
-+ 0x11, 0x1f, 0x21, 0x22, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0x90, 0xd4, 0x24, 0x18, 0xf8,
-+ 0x44, 0xf8, 0x40, 0x40, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x13, 0x10, 0x10, 0x13,
-+ 0x18, 0x70, 0x17, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x17, 0x18,
-+ 0x70, 0x17, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0,
-+ 0xa0, 0xbc, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3f, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x29, 0x4a, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x70, 0x68, 0xa8,
-+ 0xa4, 0x24, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x03, 0x0d, 0x71, 0x01, 0x1f,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xc0, 0x30, 0x08, 0x04, 0xf0,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x28, 0x28, 0x2b, 0x2a, 0x3f, 0x22, 0x23, 0x3a,
-+ 0x28, 0x29, 0x2f, 0x28, 0x28, 0x48, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa8,
-+ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7c, 0x04, 0x1c, 0x64, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x88, 0xf0, 0x80, 0x84, 0x7c, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x25, 0x3d,
-+ 0x25, 0x25, 0x25, 0x25, 0x24, 0x4c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x24,
-+ 0x24, 0x24, 0x24, 0x2c, 0x20, 0x20, 0x00, 0x00,
-+ 0x02, 0x7e, 0x02, 0x3e, 0x7f, 0x05, 0x7f, 0x0f,
-+ 0x09, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0x40, 0x78, 0x7c, 0x40, 0xfc, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x78, 0x48, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x12, 0x11, 0x31, 0x5f, 0x10,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x20, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x11, 0x7c, 0x10, 0x17, 0x10,
-+ 0x11, 0x1d, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x10, 0x7c, 0x24, 0x24, 0x24,
-+ 0x7f, 0x48, 0x0d, 0x16, 0x24, 0x40, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x0a, 0x18, 0x1c, 0x1b,
-+ 0x2a, 0x28, 0x49, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0xa8, 0xa8, 0xfc,
-+ 0xa8, 0xa8, 0xfc, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2b, 0x28, 0x49, 0x0e, 0x08, 0x08, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x0a, 0x2c, 0x28, 0x28, 0x48,
-+ 0x0b, 0x08, 0x14, 0x13, 0x26, 0x40, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x40,
-+ 0xfc, 0xe0, 0xd0, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x19, 0x29, 0x48, 0x08, 0x09, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0x08, 0xf8, 0x90, 0x88, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x20,
-+ 0x44, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x08,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x22, 0x3f, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x29, 0x28, 0x30, 0x2b, 0x24,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x21, 0x10, 0x17, 0x00, 0x01, 0x70, 0x11,
-+ 0x10, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xf0,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x20, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x02, 0x0d, 0x38, 0x09, 0x08, 0x7e, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x28, 0xa8, 0xb0, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x3e, 0x29, 0x49, 0x09, 0x7f,
-+ 0x09, 0x0c, 0x12, 0x12, 0x20, 0x41, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x08, 0x08, 0xc8,
-+ 0x48, 0x48, 0x48, 0x48, 0x48, 0x88, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7e,
-+ 0x1c, 0x1b, 0x2a, 0x48, 0x08, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x24, 0xa4, 0xa8,
-+ 0xb0, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x13, 0x32, 0x52, 0x12,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x02, 0x3e, 0x02, 0x7f, 0x04, 0x25,
-+ 0x15, 0x16, 0x1d, 0x64, 0x04, 0x0c, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13,
-+ 0x10, 0x17, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x10, 0xfc, 0x10, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x11, 0x11, 0x1d,
-+ 0x71, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x13,
-+ 0x12, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x1f, 0x10, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x43, 0x10, 0x09, 0x41,
-+ 0x29, 0x09, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x30, 0x40, 0xf8, 0x08,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x7f,
-+ 0x12, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x0f, 0x4b, 0x22, 0x23,
-+ 0x12, 0x13, 0x2f, 0x21, 0x40, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0x48, 0xfc, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x20, 0x11, 0x13, 0x02, 0x02, 0x73, 0x12,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x79, 0x49, 0x49, 0x49, 0x78, 0x4b, 0x48,
-+ 0x4f, 0x49, 0x7b, 0x4c, 0x43, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0x50, 0x58, 0xe4, 0x58, 0xc0, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x23, 0x22, 0x03, 0x12,
-+ 0x13, 0x10, 0x2f, 0x20, 0x43, 0x4c, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x80, 0xfc, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x15, 0x35, 0x38, 0x33, 0x50,
-+ 0x17, 0x19, 0x17, 0x24, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0x50, 0x58, 0xe4, 0x58, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x64, 0x2b, 0x1a, 0x27, 0x7e,
-+ 0x13, 0x38, 0x37, 0x35, 0x50, 0x10, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0a, 0x3e, 0x3a, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x08, 0x08, 0xd0, 0x30, 0x28, 0x44, 0x88, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x01,
-+ 0x03, 0x0e, 0x31, 0x01, 0x06, 0x78, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00,
-+ 0xf0, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x42, 0x47, 0x51, 0x49, 0x4b,
-+ 0x45, 0x59, 0x43, 0x40, 0x7f, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x08, 0x28, 0x28, 0xc8, 0x48,
-+ 0x28, 0x28, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x7f,
-+ 0x08, 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x00, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x12, 0x10, 0x3c, 0x24, 0x65,
-+ 0x27, 0x25, 0x3d, 0x21, 0x21, 0x01, 0x00, 0x00,
-+ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0xa0, 0x10,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x01, 0x7f, 0x03,
-+ 0x0f, 0x74, 0x07, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x20, 0xfc, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x3e, 0x23, 0x3e, 0x21, 0x4f, 0x7f,
-+ 0x01, 0x0f, 0x3f, 0x01, 0x7f, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x30, 0xcc, 0xe0, 0xfc,
-+ 0x20, 0xe0, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x5f, 0x01, 0x7f,
-+ 0x01, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x18, 0xe0, 0x00, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x54, 0x55, 0x19, 0x11, 0x17, 0x00, 0x00,
-+ 0x70, 0xfc, 0x58, 0xe8, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x00, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x57, 0x54, 0x55, 0x57,
-+ 0x55, 0x5d, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0xf8,
-+ 0x54, 0xf0, 0x50, 0x50, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x24, 0x25, 0x25, 0x4e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x94, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x48,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00,
-+ 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x07, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20,
-+ 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8,
-+ 0xa8, 0x24, 0xf8, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x23, 0x10, 0x15, 0x43, 0x22, 0x27, 0x09, 0x01,
-+ 0x1f, 0x11, 0x21, 0x22, 0x44, 0x58, 0x00, 0x00,
-+ 0x90, 0x90, 0x64, 0x28, 0x10, 0xf8, 0x24, 0x20,
-+ 0xfc, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x1e, 0x02, 0x24, 0x14, 0x08, 0x1f, 0x22, 0x42,
-+ 0x3f, 0x02, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x90, 0x90, 0x64, 0x44, 0x28, 0xf0, 0x48, 0x44,
-+ 0xf8, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x21, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x68, 0x28, 0xd4, 0x54, 0x88, 0xfc, 0x50, 0x50,
-+ 0xfc, 0x50, 0x50, 0x94, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01,
-+ 0x7f, 0x02, 0x07, 0x1a, 0x61, 0x1e, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xfc, 0x00, 0xf0, 0x20, 0xc0, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x28, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc8, 0x48, 0x50,
-+ 0x30, 0x20, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x1e, 0x7f, 0x00,
-+ 0x1e, 0x1e, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x1c,
-+ 0x70, 0x11, 0x11, 0x12, 0x14, 0x3b, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x80, 0x80, 0xf8, 0x88,
-+ 0xc8, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x44, 0x04, 0x0b,
-+ 0x18, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x50, 0x48, 0xfc,
-+ 0x48, 0x30, 0x20, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x25, 0x25,
-+ 0x29, 0x3f, 0x28, 0x2b, 0x28, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x28,
-+ 0xe8, 0x48, 0xa8, 0x68, 0x28, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x15, 0x15, 0x15, 0x17,
-+ 0x17, 0x13, 0x21, 0x22, 0x42, 0x04, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x54, 0x52, 0x53, 0x5f, 0x52,
-+ 0x5f, 0x77, 0x56, 0x4a, 0x12, 0x02, 0x00, 0x00,
-+ 0x04, 0x08, 0xf0, 0xa0, 0xa0, 0x3c, 0xe8, 0x28,
-+ 0xe8, 0x28, 0xa8, 0xc8, 0x48, 0x88, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x10, 0x7d, 0x11, 0x11, 0x10,
-+ 0x17, 0x1c, 0x65, 0x05, 0x05, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x08, 0xe8, 0x28, 0xe8, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x18, 0x2f, 0x48, 0x0f, 0x08,
-+ 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80,
-+ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x11, 0x10, 0x33, 0x50, 0x10,
-+ 0x17, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x50, 0x40, 0xf8, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x49, 0x29, 0x2a, 0x08, 0x7f, 0x08, 0x08,
-+ 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x11, 0x09, 0x09, 0x3f, 0x01, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x20, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x12, 0x12, 0x12,
-+ 0x11, 0x11, 0x10, 0x21, 0x26, 0x58, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20,
-+ 0x20, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0a, 0x4a, 0x2c, 0x28, 0x7e, 0x08, 0x08,
-+ 0x0f, 0x79, 0x11, 0x12, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0xc8,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x5d, 0x51, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x90, 0x50, 0x50,
-+ 0x50, 0x10, 0x10, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x12, 0x12, 0x17, 0x7c, 0x16, 0x15, 0x15, 0x1f,
-+ 0x74, 0x16, 0x16, 0x1a, 0x18, 0x31, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xac, 0xac, 0xc4, 0xf8,
-+ 0xa8, 0xa8, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x01, 0x7d, 0x11, 0x17, 0x10, 0x14, 0x7a, 0x13,
-+ 0x11, 0x11, 0x1e, 0x62, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x7c, 0x10, 0xd0, 0x90, 0x90, 0xfc, 0x10,
-+ 0x10, 0x10, 0x90, 0x90, 0x7c, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x0a, 0x0a, 0x0d, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x21, 0x21, 0x01, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x30,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x21, 0x21, 0x01, 0x09,
-+ 0x09, 0x09, 0x11, 0x12, 0x22, 0x24, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x90, 0x50, 0x50,
-+ 0x10, 0x10, 0x10, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x28, 0x29, 0x29, 0x29, 0x3f, 0x21, 0x21, 0x3d,
-+ 0x25, 0x25, 0x26, 0x26, 0x45, 0x46, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x09, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x30,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7c, 0x12, 0x12, 0x12, 0x12, 0x7e, 0x12,
-+ 0x12, 0x10, 0x1d, 0x61, 0x02, 0x04, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x7d, 0x55, 0x54, 0x57, 0x7c, 0x54,
-+ 0x57, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x50, 0x40, 0xf8, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x3f, 0x5f, 0x15, 0x7f, 0x15, 0x3f, 0x23,
-+ 0x0c, 0x03, 0x3f, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x40, 0xc0, 0x7c, 0xc8, 0x48, 0x30, 0xd8, 0x44,
-+ 0xc0, 0x30, 0xc8, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x17, 0x7f,
-+ 0x12, 0x1a, 0x1a, 0x2a, 0x22, 0x47, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x0b, 0x49, 0x27, 0x20,
-+ 0x0b, 0x0d, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x38, 0xc8, 0x50, 0xfc, 0xe0,
-+ 0xf8, 0x54, 0xf0, 0x50, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x19, 0x15, 0x22, 0x47, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xc8,
-+ 0xa8, 0xb0, 0x10, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x4d, 0x7f, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x2a, 0x3e, 0x08, 0x7f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x88, 0x88, 0x88,
-+ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x01, 0x3f, 0x11, 0x09, 0x09, 0x7f, 0x01,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x30, 0xc0, 0x10, 0x10, 0x20, 0x40, 0xfc, 0x00,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x0a, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x12, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x1c, 0x05, 0x14, 0x14, 0x12, 0x22, 0x3f, 0x52,
-+ 0x12, 0x12, 0x12, 0x22, 0x2d, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x2a, 0x48, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x27, 0x39, 0x63, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x17, 0x12, 0x12, 0x1f,
-+ 0x72, 0x10, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x68, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x4a, 0x4f, 0x4a, 0x7a, 0x4b,
-+ 0x4a, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x11, 0x09, 0x7f, 0x03, 0x05, 0x19,
-+ 0x7f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x30, 0xd0, 0x10, 0x20, 0xfc, 0x80, 0x40, 0x30,
-+ 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x3e, 0x32, 0x2a, 0x7f, 0x2a, 0x2a, 0x47,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x70, 0x8c,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x3e, 0x32, 0x2a, 0x7f, 0x2a, 0x2a, 0x47,
-+ 0x3f, 0x02, 0x0f, 0x74, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc,
-+ 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x09, 0x7f, 0x05, 0x19,
-+ 0x6f, 0x09, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xd0, 0x20, 0xfc, 0x40, 0x30,
-+ 0xec, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x12, 0x12, 0x24, 0x49, 0x0f,
-+ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x50, 0x48, 0x44, 0xc4, 0xe0,
-+ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x2f, 0x21, 0x2f, 0x21,
-+ 0x2f, 0x22, 0x22, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x40, 0x78, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x04, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x04, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x03, 0x05, 0x19, 0x61, 0x01,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xc0, 0x30, 0x08, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x14, 0x14, 0x14, 0x17,
-+ 0x14, 0x14, 0x14, 0x25, 0x26, 0x58, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x40, 0x40, 0x44, 0xc8,
-+ 0x70, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x4a, 0x0a, 0x12, 0x13, 0x32,
-+ 0x52, 0x12, 0x12, 0x14, 0x15, 0x1e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x88,
-+ 0x90, 0x50, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x02, 0x02, 0x3e, 0x02, 0x3e, 0x02, 0x7e, 0x04,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x80, 0xf8, 0x80, 0xfc, 0x80,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x21, 0x3e, 0x42, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x40, 0x78,
-+ 0x40, 0x78, 0x40, 0x7c, 0x40, 0x40, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7e, 0x12, 0x13, 0x12, 0x1e,
-+ 0x72, 0x12, 0x12, 0x12, 0x13, 0x3c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0xe4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x12, 0x13, 0x1e,
-+ 0x72, 0x12, 0x12, 0x14, 0x15, 0x3e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x88,
-+ 0x90, 0x50, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x02, 0x3e, 0x02, 0x3e, 0x02, 0x7c, 0x05, 0x09,
-+ 0x7f, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x7c, 0x40, 0x7c, 0x40, 0x7c, 0x40, 0x00,
-+ 0xfc, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x10,
-+ 0x10, 0x10, 0x11, 0x16, 0x18, 0x60, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x20, 0x22, 0x02, 0x12,
-+ 0x14, 0x14, 0x28, 0x21, 0x42, 0x44, 0x00, 0x00,
-+ 0x40, 0x28, 0x28, 0x88, 0x90, 0x90, 0xb0, 0xa8,
-+ 0xc4, 0xc4, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b,
-+ 0x2b, 0x4a, 0x12, 0x14, 0x25, 0x4e, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0xfc, 0x48, 0x50, 0xf0,
-+ 0x10, 0xa0, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x12,
-+ 0x11, 0x11, 0x10, 0x20, 0x23, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x88, 0x90, 0x80, 0xf0, 0x10,
-+ 0x20, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7c, 0x10, 0x13, 0x12, 0x13, 0x3e, 0x27,
-+ 0x64, 0x25, 0x27, 0x3c, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x18, 0x70, 0x10, 0x10, 0x7e, 0x12, 0x1a,
-+ 0x36, 0x34, 0x50, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x20, 0x28, 0x88, 0x88, 0x90, 0x90, 0xb0,
-+ 0xa8, 0xc4, 0x84, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x67, 0x18, 0x10, 0x2b, 0x7c,
-+ 0x18, 0x37, 0x35, 0x31, 0x52, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0,
-+ 0xa0, 0xbc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x08, 0x12, 0x7f, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x40, 0x58, 0x60, 0x44,
-+ 0x3c, 0x40, 0x58, 0x60, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x12, 0x12, 0x15, 0x1e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x28, 0x30, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0xdc, 0x50, 0x50, 0xdc, 0x50,
-+ 0x50, 0xdc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x02, 0x3f, 0x02, 0x3f, 0x3f, 0x44, 0x1f, 0x68,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x80, 0xf8, 0x88, 0xf8, 0xfc, 0x84, 0xf8, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x27, 0x14, 0x14, 0x07, 0x04, 0x77, 0x1c,
-+ 0x14, 0x14, 0x17, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x90, 0xfc, 0xc8, 0xa8, 0x30, 0xfc, 0x90,
-+ 0x90, 0xfc, 0x90, 0x10, 0x10, 0xfc, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x3e, 0x02, 0x02, 0x3e, 0x02,
-+ 0x02, 0x7e, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x7c, 0x40,
-+ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x0e, 0x32, 0x12, 0x12, 0x7f,
-+ 0x12, 0x12, 0x22, 0x22, 0x42, 0x02, 0x00, 0x00,
-+ 0x00, 0xc8, 0x70, 0x50, 0x48, 0x28, 0x18, 0xc8,
-+ 0x50, 0x70, 0x28, 0x24, 0x14, 0x0c, 0x00, 0x00,
-+ 0x10, 0x15, 0x12, 0x7e, 0x10, 0x10, 0x3e, 0x36,
-+ 0x36, 0x52, 0x52, 0x12, 0x15, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0xa8, 0xa8, 0x98, 0x80, 0x7c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x12, 0x7f, 0x12, 0x1e,
-+ 0x12, 0x1e, 0x12, 0x7f, 0x15, 0x63, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0x20, 0xfc, 0xa8, 0xb0,
-+ 0xf8, 0xc8, 0xa8, 0x90, 0x68, 0x84, 0x00, 0x00,
-+ 0x09, 0x09, 0x0f, 0x11, 0x17, 0x34, 0x57, 0x16,
-+ 0x17, 0x16, 0x17, 0x1a, 0x12, 0x12, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x48, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x17, 0x10,
-+ 0x17, 0x10, 0x1f, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x68, 0x80, 0xf0,
-+ 0x80, 0xfc, 0x80, 0x80, 0x84, 0x7c, 0x00, 0x00,
-+ 0x12, 0x1a, 0x2a, 0x4a, 0x1f, 0x18, 0x20, 0x7f,
-+ 0x26, 0x26, 0x2a, 0x2b, 0x32, 0x20, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x48, 0xc8, 0xe8,
-+ 0x28, 0x30, 0x90, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x80,
-+ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x08, 0x3e, 0x08, 0x0e, 0x70, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x80, 0x80,
-+ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x17, 0x14,
-+ 0x17, 0x14, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x0f, 0x08, 0x0f, 0x0f, 0x0f, 0x1f, 0x11,
-+ 0x1f, 0x1f, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xe0, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1d, 0x1a, 0x1a,
-+ 0x28, 0x29, 0x48, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x90, 0x50, 0x20, 0x50,
-+ 0xc8, 0x24, 0x00, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x04, 0x18, 0x73, 0x12, 0x13, 0x7e, 0x13, 0x18,
-+ 0x35, 0x37, 0x50, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa8,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x22, 0x22, 0x22, 0x24,
-+ 0x24, 0x28, 0x30, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48,
-+ 0x48, 0x38, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x09, 0x09, 0x09, 0x09,
-+ 0x09, 0x09, 0x15, 0x13, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x10, 0x20, 0x00, 0x00, 0xf0,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x04,
-+ 0x14, 0x17, 0x14, 0x14, 0x17, 0x78, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x80,
-+ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x04, 0x02, 0x1f, 0x10, 0x10,
-+ 0x17, 0x10, 0x13, 0x20, 0x20, 0x47, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x40, 0xfc, 0x20, 0xc0,
-+ 0x10, 0x60, 0x84, 0x18, 0x60, 0x80, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3d, 0x26, 0x24, 0x3f,
-+ 0x26, 0x25, 0x24, 0x27, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xa0, 0x58,
-+ 0x4c, 0x50, 0xe0, 0x58, 0x44, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x01, 0x7f, 0x04, 0x1a,
-+ 0x63, 0x06, 0x19, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0x88, 0x78,
-+ 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x27, 0x3c, 0x25, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x78, 0x0f, 0x09, 0x39, 0x23, 0x22, 0x3a,
-+ 0x2b, 0x0a, 0x0a, 0x0b, 0x0a, 0x30, 0x00, 0x00,
-+ 0x00, 0x78, 0xc8, 0x08, 0x38, 0xa0, 0xa0, 0xb8,
-+ 0xa8, 0x88, 0x88, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x02, 0x01, 0x00, 0x04, 0x04, 0x04, 0x24, 0x24,
-+ 0x24, 0x45, 0x46, 0x04, 0x1c, 0x63, 0x00, 0x00,
-+ 0x00, 0x10, 0x90, 0x90, 0x20, 0x20, 0x50, 0x48,
-+ 0x84, 0x04, 0x00, 0x10, 0x10, 0xf0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x09, 0x7f,
-+ 0x09, 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x20, 0xfc,
-+ 0x20, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x5f, 0x01, 0x7f, 0x01, 0x1f,
-+ 0x01, 0x1f, 0x01, 0x3f, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x20, 0xf0, 0x10, 0xfc, 0x10, 0xf0,
-+ 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x11, 0x01, 0x01, 0x70, 0x13,
-+ 0x12, 0x13, 0x12, 0x13, 0x2c, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x1b, 0x34, 0x34,
-+ 0x37, 0x50, 0x50, 0x11, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xfc, 0xa0, 0x90, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x11, 0x7f, 0x24, 0x27, 0x24,
-+ 0x74, 0x48, 0x09, 0x16, 0x24, 0x43, 0x00, 0x00,
-+ 0x1c, 0xe4, 0x48, 0x30, 0xfc, 0x40, 0xfc, 0x40,
-+ 0xf8, 0xc8, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xfc, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x02, 0x1f, 0x10, 0x10, 0x10,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x7b, 0x02, 0x3c, 0x01, 0x38,
-+ 0x03, 0x3d, 0x28, 0x29, 0x38, 0x2b, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xb8, 0xa8, 0xc8, 0x98, 0xc0,
-+ 0x30, 0xcc, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x30, 0x57, 0x10,
-+ 0x11, 0x13, 0x15, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xc0,
-+ 0x48, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x07, 0x04, 0x3f, 0x29, 0x2e, 0x38, 0x27,
-+ 0x2a, 0x2a, 0x2a, 0x2a, 0x32, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xa8, 0x48, 0x10, 0x94, 0x24,
-+ 0x08, 0x08, 0x10, 0x20, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x1b, 0x34, 0x35,
-+ 0x30, 0x57, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf0,
-+ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x01, 0x11, 0x09, 0x09, 0x01, 0x7d, 0x05, 0x09,
-+ 0x09, 0x11, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x88, 0x90, 0x60, 0x40, 0x20,
-+ 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x00, 0x13,
-+ 0x10, 0x17, 0x21, 0x22, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf8,
-+ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x19, 0x7f, 0x5b, 0x7f, 0x01, 0x3d,
-+ 0x01, 0x7f, 0x19, 0x36, 0x53, 0x34, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x70, 0x50, 0x78, 0xd8, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x1f, 0x00, 0x1f,
-+ 0x00, 0x7f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0xf0, 0x00, 0xf0,
-+ 0x00, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x03,
-+ 0x04, 0x1c, 0x64, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x10,
-+ 0x90, 0xa0, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3f,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x28, 0xa8, 0xb0, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x18, 0x66, 0x14, 0x19, 0x6a, 0x0c, 0x14,
-+ 0x64, 0x0c, 0x14, 0x64, 0x04, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x24, 0x2f, 0x29, 0x2f,
-+ 0x29, 0x2f, 0x24, 0x3f, 0x44, 0x45, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0x48, 0x48, 0x78, 0x48,
-+ 0x48, 0x78, 0x48, 0xc8, 0x88, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x10, 0x1b, 0x12,
-+ 0x32, 0x53, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x10, 0x00, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x28, 0x0b, 0x1a,
-+ 0x6a, 0x0a, 0x13, 0x12, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x40, 0xf8, 0x48,
-+ 0x68, 0x98, 0x18, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa4, 0xa4, 0x28,
-+ 0x68, 0x30, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x1f, 0x11, 0x11,
-+ 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x7c, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0x90, 0x00, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x08, 0xf0, 0x80, 0x80, 0xfc, 0x90, 0x90, 0x90,
-+ 0xfc, 0x00, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x00, 0x7f, 0x08,
-+ 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x20,
-+ 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x50, 0x88, 0xfc, 0x24, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0xf8, 0x28, 0xfc, 0x68, 0x70, 0xc4, 0x3c,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00,
-+ 0x7c, 0x44, 0x44, 0x44, 0x7c, 0x44, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0x40, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x11, 0x19, 0x37, 0x37,
-+ 0x33, 0x55, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xe0, 0x08, 0x08, 0x90, 0x50,
-+ 0x64, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x08, 0x08, 0x4a, 0x2a,
-+ 0x12, 0x12, 0x1a, 0x2a, 0x27, 0x40, 0x00, 0x00,
-+ 0x20, 0xe8, 0x24, 0xfc, 0xa0, 0xa0, 0xa0, 0xe0,
-+ 0x90, 0x90, 0xb4, 0xcc, 0x0c, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x12,
-+ 0x1f, 0x20, 0x22, 0x42, 0x44, 0x48, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0xf8, 0x20, 0x20, 0x20,
-+ 0xfc, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x22, 0x12, 0x1a, 0x4b, 0x2a, 0x3f, 0x03, 0x16,
-+ 0x16, 0x2f, 0x29, 0x42, 0x44, 0x49, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0xa0, 0x78, 0xc8, 0x78, 0xc8,
-+ 0xf8, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x01, 0x04, 0x1f, 0x62, 0x0c, 0x3f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x80, 0x40, 0xf0, 0x4c, 0xc0, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5f, 0x09, 0x33, 0x7f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x30, 0xc8, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x2e, 0x28, 0x28, 0x7f, 0x0c, 0x2a,
-+ 0x29, 0x49, 0x1a, 0x04, 0x18, 0x63, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x3f, 0x40, 0x3e, 0x2a, 0x2b,
-+ 0x7f, 0x2a, 0x2a, 0x7f, 0x43, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x22, 0x13, 0x14, 0x7f, 0x14, 0x14, 0x14, 0x7f,
-+ 0x14, 0x14, 0x14, 0x24, 0x27, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x90, 0xd0, 0xb0,
-+ 0xb0, 0x90, 0x94, 0xec, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x00, 0x01, 0x03, 0x05, 0x19,
-+ 0x61, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0x00, 0x80, 0x60, 0x10,
-+ 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x0b, 0x18, 0x29, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12,
-+ 0x13, 0x1c, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x7f,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x11, 0x7c, 0x25, 0x24, 0x27,
-+ 0x7a, 0x4b, 0x0e, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x44, 0xf8, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5f, 0x07, 0x04, 0x07, 0x00,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0xc0, 0x40, 0xc0, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x5f, 0x0f, 0x08, 0x0f, 0x00,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x04, 0x0f, 0x08,
-+ 0x18, 0x28, 0x48, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x11, 0x11, 0x12, 0x13, 0x16,
-+ 0x1a, 0x12, 0x12, 0x22, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x10, 0x10, 0xfc, 0x10,
-+ 0x90, 0x50, 0x50, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x17, 0x38, 0x35, 0x35, 0x53,
-+ 0x15, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xa0, 0x20, 0xfc, 0x24,
-+ 0x24, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x1f,
-+ 0x70, 0x10, 0x10, 0x11, 0x16, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x0a, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e,
-+ 0x08, 0x7f, 0x1e, 0x12, 0x23, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x0c, 0x32, 0x03, 0x0c, 0x70, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x60, 0x30, 0x48, 0x80, 0x60, 0xdc, 0x00, 0x00,
-+ 0xf8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x22, 0x12, 0x12, 0x7f, 0x00,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x90, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x22, 0x22, 0x03, 0x10,
-+ 0x10, 0x17, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x70, 0x88, 0x48, 0x50, 0x00, 0xf8, 0x30,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x08, 0x10, 0x24, 0x04, 0x04, 0x02,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x08, 0x48, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x17,
-+ 0x11, 0x30, 0x50, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0x10, 0xfc,
-+ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x13, 0x16, 0x1a, 0x12, 0x12,
-+ 0x2f, 0x29, 0x4a, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0x90, 0x50, 0x50, 0xb0,
-+ 0xf8, 0xc8, 0xa8, 0x48, 0x28, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x17, 0x11, 0x17, 0x17, 0x14,
-+ 0x17, 0x13, 0x22, 0x23, 0x43, 0x02, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0x28, 0xe0, 0xf8, 0xf8, 0x88,
-+ 0xf8, 0xf0, 0x10, 0xf0, 0xf0, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x1f, 0x01,
-+ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf0, 0x00,
-+ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3c, 0x03, 0x7e, 0x01, 0x3d, 0x03, 0x3c,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00,
-+ 0x08, 0x90, 0xfc, 0xa8, 0xa8, 0xb0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x02, 0x07, 0x18, 0x61, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3f, 0x24, 0x3d, 0x25,
-+ 0x25, 0x3d, 0x19, 0x15, 0x27, 0x40, 0x00, 0x00,
-+ 0x10, 0xf8, 0x14, 0x14, 0xfc, 0x50, 0x50, 0x70,
-+ 0x50, 0x50, 0x74, 0xcc, 0x0c, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04, 0x14,
-+ 0x17, 0x14, 0x14, 0x2c, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0x20, 0x20, 0xf0, 0x28, 0x24,
-+ 0xa4, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x29, 0x33, 0x2b, 0x25,
-+ 0x25, 0x25, 0x25, 0x39, 0x21, 0x21, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x12, 0x13, 0x35, 0x51, 0x1f,
-+ 0x12, 0x12, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x16, 0x12, 0x17, 0x1a,
-+ 0x72, 0x17, 0x10, 0x15, 0x14, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8,
-+ 0xa8, 0xfc, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x7f, 0x04, 0x04, 0x17,
-+ 0x14, 0x14, 0x14, 0x17, 0x78, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40, 0xc0,
-+ 0x40, 0x20, 0x24, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x2a, 0x7f, 0x0a, 0x3f, 0x08,
-+ 0x0f, 0x12, 0x6a, 0x0d, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa0, 0xfc, 0xa0, 0xf8, 0x20,
-+ 0xf8, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x14, 0x1f, 0x12, 0x3f, 0x22, 0x5f,
-+ 0x12, 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xe8, 0x28, 0xc8,
-+ 0x48, 0xc8, 0x48, 0xc8, 0x48, 0xf0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x1f, 0x2a, 0x4a, 0x7f,
-+ 0x0a, 0x0a, 0x7f, 0x14, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0xa0, 0xa0, 0xfc,
-+ 0xa0, 0xa0, 0xfc, 0x90, 0x48, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x12, 0x14, 0x7f, 0x00,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x09, 0x08, 0x7f, 0x08, 0x08,
-+ 0x3e, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x37, 0x37,
-+ 0x33, 0x53, 0x52, 0x14, 0x17, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x38, 0xc8, 0x48, 0xf8, 0x58, 0x58,
-+ 0xf8, 0x6c, 0x5c, 0x7c, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x11, 0x17, 0x15, 0x15,
-+ 0x17, 0x15, 0x11, 0x21, 0x2e, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0xd0, 0x10, 0x10, 0xd0, 0x50, 0x50,
-+ 0xd0, 0x10, 0x54, 0xec, 0x2c, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x7f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0xfc, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x3c, 0xe0, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x23, 0x3e,
-+ 0x08, 0x2f, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x78, 0xc8, 0x50, 0x30,
-+ 0xc8, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x10, 0x37, 0x50, 0x10,
-+ 0x10, 0x10, 0x10, 0x11, 0x16, 0x18, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x7f,
-+ 0x49, 0x7f, 0x49, 0x49, 0x7f, 0x41, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x21, 0x4b, 0x0d, 0x11, 0x11, 0x31,
-+ 0x50, 0x11, 0x16, 0x10, 0x11, 0x1e, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x80, 0xf0, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x55, 0x55, 0x54, 0x57,
-+ 0x56, 0x5f, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x30, 0x00, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x09, 0x09, 0x10, 0x1b,
-+ 0x36, 0x57, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x27, 0x24, 0x24, 0x4f, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x11, 0x11, 0x13, 0x7d, 0x09, 0x0b, 0x13, 0x1d,
-+ 0x34, 0x51, 0x16, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x80, 0xf0, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x1f, 0x12, 0x1f, 0x11, 0x29, 0x4b,
-+ 0x15, 0x31, 0x50, 0x13, 0x10, 0x17, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x90, 0xf0, 0x00, 0xfc, 0xf0,
-+ 0xf0, 0xf0, 0xf0, 0xa0, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x42, 0x23, 0x22, 0x03, 0x12,
-+ 0x13, 0x12, 0x22, 0x24, 0x44, 0x48, 0x00, 0x00,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xb8, 0x08, 0xf8, 0x08,
-+ 0xb8, 0xa8, 0xa8, 0xa8, 0xa8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x3f, 0x24, 0x24,
-+ 0x3f, 0x24, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x90, 0x80,
-+ 0xf8, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x08, 0x08, 0x0c,
-+ 0x78, 0x08, 0x09, 0x09, 0x0f, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80,
-+ 0xa0, 0x90, 0x08, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x27, 0x05, 0x15,
-+ 0x17, 0x15, 0x21, 0x22, 0x42, 0x44, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0x28, 0xf8, 0x28, 0x20,
-+ 0xfc, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x30, 0x51,
-+ 0x11, 0x11, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
-+ 0x20, 0x10, 0x08, 0x78, 0x84, 0x04, 0x00, 0x00,
-+ 0x09, 0x29, 0x29, 0x29, 0x3e, 0x2a, 0x4c, 0x09,
-+ 0x0d, 0x7a, 0x08, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0x28,
-+ 0x28, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0x88, 0xfc, 0x88, 0xc8, 0xa8,
-+ 0xa8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x07, 0x00, 0x08, 0x08, 0x10, 0x10, 0x3f, 0x42,
-+ 0x02, 0x02, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x20, 0x20, 0x10, 0xe8, 0x24,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4b, 0x4a, 0x4a, 0x4c, 0x49,
-+ 0x49, 0x7a, 0x4c, 0x40, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0x28,
-+ 0x48, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x03, 0x79, 0x4f, 0x49, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x43, 0x01, 0x0e, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x13, 0x11, 0x17, 0x7d, 0x13, 0x12, 0x13,
-+ 0x16, 0x1b, 0x62, 0x03, 0x03, 0x1c, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x1f, 0x35, 0x37, 0x32, 0x53,
-+ 0x12, 0x13, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x12, 0x13, 0x1c,
-+ 0x70, 0x10, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf8, 0x94,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x29, 0x48, 0x01,
-+ 0x09, 0x09, 0x12, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x60, 0xb0, 0x28, 0x24, 0x10,
-+ 0x10, 0xa0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x7f, 0x06, 0x1c, 0x6f, 0x1f, 0x2f, 0x08,
-+ 0x0f, 0x1f, 0x11, 0x1f, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x60, 0x90, 0xfc, 0xe0, 0xe0, 0x80,
-+ 0xf8, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7f, 0x09, 0x1e,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0xe0, 0x20, 0xa0, 0xa0, 0x90, 0x10, 0xf8, 0x54,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x60, 0x00, 0x00,
-+ 0x09, 0x3f, 0x07, 0x19, 0x6f, 0x09, 0x0f, 0x09,
-+ 0x0f, 0x3f, 0x04, 0x7f, 0x0c, 0x30, 0x00, 0x00,
-+ 0x20, 0xf8, 0xc0, 0x30, 0xfc, 0x20, 0xe0, 0x20,
-+ 0xe0, 0xf8, 0x40, 0xfc, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0xe0, 0x20, 0xa0, 0xa0, 0x90, 0x10, 0xf8, 0x54,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x07,
-+ 0x04, 0x18, 0x6f, 0x02, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xc0,
-+ 0x40, 0x30, 0xec, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x08, 0x08, 0x04, 0x04,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x2f, 0x24,
-+ 0x27, 0x24, 0x27, 0x24, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xe8, 0x48,
-+ 0xc8, 0x48, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x22,
-+ 0x22, 0x24, 0x28, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88,
-+ 0x48, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x0a, 0x09, 0x09, 0x17, 0x11, 0x31, 0x51, 0x1f,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08,
-+ 0x08, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x40, 0x40, 0x40,
-+ 0x40, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x12, 0x13, 0x12,
-+ 0x16, 0x1b, 0x64, 0x04, 0x09, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0xfc, 0x8c, 0x50, 0xfc, 0x50,
-+ 0x50, 0xfc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x49, 0x2a, 0x7f, 0x5d, 0x5b, 0x6b, 0x41,
-+ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x30, 0x30, 0xc8, 0x04,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x10, 0x10, 0x20, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x2a, 0x1c, 0x7f, 0x5d, 0x5b, 0x69, 0x4b,
-+ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xc8, 0x44,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68,
-+ 0x98, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x7f, 0x04, 0x04, 0x24, 0x14,
-+ 0x14, 0x14, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xfc, 0x40, 0x40, 0x48, 0x48,
-+ 0x50, 0x60, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x4d, 0x29, 0x2a, 0x7f,
-+ 0x49, 0x5d, 0x5b, 0x6b, 0x49, 0x4b, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x7c, 0xc8, 0x48,
-+ 0x28, 0x30, 0x10, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x20,
-+ 0x2f, 0x21, 0x22, 0x24, 0x28, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x88,
-+ 0xe8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x29, 0x27,
-+ 0x24, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x20, 0x24, 0x28, 0xf0, 0x20, 0x24, 0xe4, 0x5c,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f, 0x03, 0x03,
-+ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x20, 0x00, 0xfc, 0x80, 0x80,
-+ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x52, 0x12,
-+ 0x17, 0x16, 0x1a, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x10, 0x90, 0xfc, 0xa8, 0xa8, 0xa8, 0x7c, 0x10,
-+ 0x90, 0xfc, 0x90, 0x90, 0x90, 0x10, 0x00, 0x00,
-+ 0x00, 0x1e, 0x13, 0x1e, 0x10, 0x3f, 0x32, 0x5f,
-+ 0x12, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20, 0xfc,
-+ 0x20, 0x20, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b,
-+ 0x2a, 0x4b, 0x16, 0x16, 0x2b, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x90, 0xfc, 0xa8, 0xb0,
-+ 0x7c, 0x90, 0xfc, 0x90, 0x90, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x3e, 0x08, 0x0f, 0x70, 0x00,
-+ 0x7f, 0x02, 0x07, 0x1c, 0x67, 0x04, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x29, 0x08,
-+ 0x0f, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x49, 0x2a, 0x7f, 0x49, 0x5d, 0x6b, 0x4f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x7c, 0xc8, 0x30, 0xd0, 0xec, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x00, 0x1f,
-+ 0x10, 0x14, 0x12, 0x22, 0x20, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x90, 0xfc,
-+ 0x48, 0x48, 0x30, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x5f, 0x11, 0x12, 0x14,
-+ 0x10, 0x1f, 0x10, 0x13, 0x1c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0xf0, 0x10, 0x90, 0x50,
-+ 0x88, 0x90, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x52, 0x13,
-+ 0x16, 0x16, 0x1b, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x12, 0x12, 0x24, 0x4a,
-+ 0x03, 0x04, 0x1a, 0x01, 0x06, 0x78, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x50, 0x48, 0xc4, 0x04,
-+ 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7f, 0x00, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x29, 0x2f, 0x49, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xfc, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x65, 0x19, 0x19, 0x25, 0x7f,
-+ 0x11, 0x3b, 0x37, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x54, 0xfc, 0x54, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x00, 0x20, 0x17, 0x10, 0x00, 0x00, 0x70, 0x11,
-+ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x08,
-+ 0x08, 0x08, 0x30, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x12, 0x03, 0x03, 0x72, 0x12,
-+ 0x12, 0x14, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x90, 0x60,
-+ 0x20, 0xd0, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x13, 0x02, 0x03, 0x72, 0x13,
-+ 0x16, 0x17, 0x1a, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0xfc, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x52, 0x13,
-+ 0x12, 0x11, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x2a, 0x3e,
-+ 0x2c, 0x0c, 0x15, 0x16, 0x24, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x88, 0x88, 0x08, 0x34, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x13, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x48, 0x0c, 0x14, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x68, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x3f, 0x04, 0x04, 0x04,
-+ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x40, 0x30, 0xc8, 0x40, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x28, 0x28, 0x7c, 0x29, 0x39, 0x13, 0x7d, 0x55,
-+ 0x55, 0x7d, 0x11, 0x7d, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0x7c, 0x54, 0x7c, 0x54, 0x7c,
-+ 0x54, 0x50, 0x20, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x50, 0x17,
-+ 0x10, 0x11, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x17, 0x1a, 0x29, 0x7f, 0x09, 0x7f,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x2f, 0x29, 0x2f,
-+ 0x29, 0x2f, 0x29, 0x29, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xf8, 0x08, 0xe8, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x68, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x12, 0x12, 0x1f,
-+ 0x72, 0x12, 0x13, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x09, 0x7f, 0x01, 0x09,
-+ 0x09, 0x11, 0x23, 0x01, 0x06, 0x78, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x20,
-+ 0x10, 0x28, 0x48, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x20, 0x10, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x0b, 0x0a, 0x16, 0x3b,
-+ 0x56, 0x16, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x04, 0x18, 0x77, 0x10, 0x13, 0x7e, 0x13, 0x1a,
-+ 0x37, 0x34, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x7f, 0x05, 0x1f, 0x61, 0x06, 0x18, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xfc, 0x40, 0xf0, 0x2c, 0x20, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x7f, 0x19, 0x6f, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xfc, 0x30, 0xec, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x7f, 0x0a, 0x1b, 0x6a, 0x12, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xfc, 0x20, 0x50, 0xac, 0xa0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x21, 0x26, 0x40, 0x00, 0x00,
-+ 0x80, 0x90, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x0f, 0x7f,
-+ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0xe0, 0xfc,
-+ 0xc0, 0x70, 0xcc, 0x40, 0xc0, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x08, 0x08, 0x7f, 0x12, 0x11,
-+ 0x11, 0x10, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x90, 0x90, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0xfc, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x17, 0x09, 0x49, 0x21,
-+ 0x29, 0x09, 0x17, 0x11, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x58, 0xfc, 0xf0, 0x50, 0xf0,
-+ 0x50, 0xf0, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x08, 0x04, 0x7f,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x40, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0a, 0x1f, 0x12, 0x32, 0x53, 0x12,
-+ 0x12, 0x12, 0x14, 0x14, 0x18, 0x13, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xa0, 0x7c, 0x48, 0xc8, 0xa8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x13, 0x30, 0x57, 0x11,
-+ 0x13, 0x14, 0x13, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xf8, 0xa0, 0xfc, 0x50,
-+ 0xf8, 0x44, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x00,
-+ 0x1f, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88,
-+ 0x88, 0xb0, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x01, 0x7f,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x7f, 0x22, 0x12, 0x14,
-+ 0x7f, 0x08, 0x3e, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xb0, 0x80, 0xf8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x09,
-+ 0x17, 0x61, 0x1f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x20,
-+ 0xd0, 0x0c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x1f, 0x01, 0x01,
-+ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0x00,
-+ 0xf0, 0x00, 0x20, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x54, 0x57, 0x57, 0x54,
-+ 0x55, 0x7c, 0x47, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0xf8, 0x90, 0x60, 0xb0, 0x4c, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x1f, 0x02, 0x07, 0x3c, 0x03, 0x0d, 0x77,
-+ 0x01, 0x0f, 0x01, 0x3f, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0xf0, 0x00, 0xe0, 0x40, 0x80, 0x60, 0xdc,
-+ 0x00, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x1e, 0x12, 0x1e,
-+ 0x12, 0x1e, 0x12, 0x22, 0x22, 0x47, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0x78, 0x48, 0x78,
-+ 0x48, 0x78, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x11, 0x11, 0x12, 0x17, 0x18,
-+ 0x13, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x08, 0xc8, 0x48,
-+ 0xc8, 0x70, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7e, 0x13, 0x14, 0x10, 0x1f,
-+ 0x72, 0x12, 0x12, 0x12, 0x12, 0x31, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0x48, 0xc8,
-+ 0x48, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x10, 0x1f, 0x11,
-+ 0x33, 0x54, 0x13, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xf0, 0xa0, 0xfc, 0x50,
-+ 0xf8, 0x44, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x0f, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x43, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x02, 0x02, 0x03, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x00, 0x1e, 0x12, 0x12, 0x12, 0x1e, 0x12, 0x12,
-+ 0x1e, 0x12, 0x12, 0x22, 0x23, 0x46, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x48,
-+ 0x78, 0x48, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x20, 0x20, 0x07, 0x00,
-+ 0x08, 0x08, 0x10, 0x11, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x90, 0x88, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x43, 0x22, 0x27, 0x08, 0x03,
-+ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x21, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xc8,
-+ 0x70, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x3f, 0x00,
-+ 0x01, 0x01, 0x03, 0x14, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xf8, 0x60,
-+ 0x80, 0x00, 0x00, 0x90, 0x48, 0x44, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x13, 0x20, 0x3c, 0x65,
-+ 0x25, 0x25, 0x25, 0x3d, 0x25, 0x20, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x30, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x12, 0x15, 0x65, 0x28, 0x18, 0x27, 0x7d,
-+ 0x19, 0x35, 0x35, 0x31, 0x52, 0x14, 0x00, 0x00,
-+ 0x20, 0x38, 0xc8, 0x30, 0xe8, 0x24, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xe0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3d, 0x26, 0x24, 0x3d,
-+ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x04, 0xe4, 0x24, 0x24, 0xe4,
-+ 0x38, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x01,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x7c, 0x44, 0x44, 0x7c,
-+ 0x44, 0x44, 0x7c, 0x44, 0x41, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0xf8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x21, 0x1f, 0x10, 0x03, 0x7f,
-+ 0x10, 0x13, 0x10, 0x17, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xf0, 0x20, 0xe0, 0x5c, 0xf8,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x40, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x40, 0x78, 0xd0, 0x20, 0x70, 0xac, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x7f, 0x09, 0x09, 0x11, 0x77, 0x11, 0x16,
-+ 0x11, 0x03, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0xfc, 0x50, 0x4c,
-+ 0x40, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x02, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x00, 0x7f,
-+ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x00, 0xfc,
-+ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x3f, 0x04, 0x04,
-+ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x78, 0xc8, 0x50, 0x50, 0xe0, 0x50, 0x48,
-+ 0xc4, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x78, 0xd0, 0x20, 0x70, 0xac, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x2a, 0x49, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xe8, 0x28, 0x28, 0xe8,
-+ 0xb0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x17, 0x14, 0x17,
-+ 0x17, 0x17, 0x14, 0x27, 0x2d, 0x52, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xd0, 0x50, 0xd0,
-+ 0xd0, 0xf4, 0x0c, 0xfc, 0x54, 0xe4, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x2d, 0x2d,
-+ 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x5b, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, 0x78, 0x7c,
-+ 0x40, 0x7c, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x01, 0x01, 0x1f, 0x00, 0x00,
-+ 0x00, 0x09, 0x0e, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x10, 0x37, 0x54, 0x1f,
-+ 0x10, 0x10, 0x10, 0x11, 0x16, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x44, 0xfc,
-+ 0x40, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x11, 0x09, 0x0a, 0x7f, 0x00,
-+ 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00,
-+ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x17, 0x7c, 0x10, 0x10, 0x10,
-+ 0x10, 0x1c, 0x61, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x78,
-+ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x09, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x56, 0x57, 0x55, 0x55,
-+ 0x55, 0x55, 0x59, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x08, 0x07, 0x01,
-+ 0x04, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x80, 0x90, 0x08, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x17, 0x39, 0x35, 0x35, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x10, 0x11, 0x22, 0x2c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x80, 0xfc,
-+ 0x80, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x3f, 0x04,
-+ 0x7f, 0x09, 0x15, 0x67, 0x19, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x40,
-+ 0xfc, 0x20, 0x50, 0xcc, 0x30, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x20, 0x20, 0x20, 0x1f, 0x02,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x30,
-+ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x0f, 0x08, 0x0f, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x1c, 0x1b, 0x1b,
-+ 0x2b, 0x2c, 0x4b, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x50,
-+ 0xf8, 0x44, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x2f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xe8, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7d,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x39, 0x2f, 0x29, 0x2f, 0x38, 0x2b, 0x2a,
-+ 0x3b, 0x2a, 0x29, 0x29, 0x2e, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0xd0, 0x10, 0xe0, 0x08, 0xc8, 0x50,
-+ 0xe4, 0x44, 0x88, 0xc8, 0x10, 0x20, 0x00, 0x00,
-+ 0x01, 0x39, 0x03, 0x7d, 0x01, 0x3d, 0x01, 0x3c,
-+ 0x03, 0x3c, 0x25, 0x26, 0x3c, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x04, 0x18, 0x6a, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x65, 0x0c, 0x14, 0x64, 0x05, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0x68, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x06, 0x38, 0x24, 0x26, 0x3a, 0x6f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xf8, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7f,
-+ 0x09, 0x2a, 0x1d, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x50, 0x88, 0xf4, 0xa0, 0xa0, 0xf8,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x2b, 0x28, 0x30, 0x28, 0x24,
-+ 0x24, 0x24, 0x24, 0x39, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x48, 0x4f, 0x48, 0x48,
-+ 0x48, 0x78, 0x48, 0x41, 0x06, 0x18, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40,
-+ 0x60, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x0a, 0x4a, 0x2c, 0x28,
-+ 0x7f, 0x0c, 0x12, 0x12, 0x20, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x7c, 0x04, 0x04, 0x04,
-+ 0x04, 0x1c, 0x64, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x17, 0x11, 0x30, 0x57, 0x10,
-+ 0x13, 0x10, 0x17, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xfc, 0x40,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x1f, 0x01,
-+ 0x7f, 0x15, 0x2f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf0, 0x00,
-+ 0xfc, 0x50, 0xe8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7f, 0x11, 0x10, 0x13, 0x1c,
-+ 0x71, 0x10, 0x17, 0x10, 0x13, 0x3c, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x60, 0x50, 0x48, 0x44,
-+ 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x28, 0x28, 0x3e, 0x29, 0x29, 0x4a,
-+ 0x0e, 0x78, 0x08, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90,
-+ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x78, 0x4b, 0x48, 0x7f, 0x49, 0x49, 0x7a,
-+ 0x4c, 0x4b, 0x78, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x24, 0x5c,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x19, 0x71, 0x11, 0x11, 0x7d, 0x10, 0x19,
-+ 0x36, 0x35, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40, 0x58,
-+ 0x64, 0x90, 0x60, 0x88, 0x30, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x3f, 0x22, 0x7e, 0x04,
-+ 0x08, 0x0e, 0x78, 0x08, 0x09, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x21, 0x22, 0x04, 0x0b,
-+ 0x09, 0x10, 0x10, 0x20, 0x21, 0x2e, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0xf0,
-+ 0x10, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x12, 0x13, 0x2a,
-+ 0x45, 0x05, 0x09, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x50, 0x88, 0x8c, 0xf4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x12, 0x12, 0x12,
-+ 0x16, 0x1b, 0x65, 0x05, 0x09, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0xfc, 0x20, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x56, 0x55,
-+ 0x57, 0x54, 0x58, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48, 0x50,
-+ 0xfc, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x09, 0x1f, 0x61, 0x05,
-+ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x20, 0xf0, 0x0c, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x03, 0x05, 0x05,
-+ 0x09, 0x11, 0x2f, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x40,
-+ 0x20, 0x10, 0xe8, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x06, 0x7b, 0x2a, 0x1c, 0x7f, 0x1c, 0x1a, 0x2a,
-+ 0x7e, 0x2b, 0x3e, 0x2a, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x68, 0xd8, 0xd8, 0x48,
-+ 0xd8, 0x68, 0x48, 0x48, 0x48, 0xd8, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0a, 0x09, 0x09,
-+ 0x09, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x03, 0x08, 0x08, 0x1f, 0x21, 0x42, 0x0c, 0x30,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0xc0, 0x40, 0x20, 0xf0, 0x28, 0x24, 0x20, 0xc0,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x17, 0x1a, 0x12, 0x17,
-+ 0x10, 0x17, 0x20, 0x3f, 0x40, 0x01, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0x38, 0xd4, 0x30, 0xc0,
-+ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x17, 0x1a, 0x12,
-+ 0x17, 0x10, 0x23, 0x2e, 0x43, 0x02, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0xfc, 0x38, 0xd4, 0x90,
-+ 0xfc, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x1f, 0x12, 0x1f, 0x17, 0x1a, 0x17, 0x14,
-+ 0x17, 0x17, 0x25, 0x22, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xfc, 0x70, 0xa8, 0xf4, 0x90,
-+ 0xf0, 0xf0, 0xa8, 0xfc, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x1f, 0x12, 0x17,
-+ 0x16, 0x1a, 0x13, 0x22, 0x42, 0x02, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0x20, 0xfc, 0x20, 0x70,
-+ 0xf0, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x13,
-+ 0x10, 0x1f, 0x60, 0x00, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x09, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3c, 0x24, 0x07, 0x0a, 0x12, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x70,
-+ 0x70, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4b, 0x48, 0x48, 0x7f, 0x48,
-+ 0x48, 0x49, 0x7a, 0x4c, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x2f, 0x49, 0x09, 0x7f,
-+ 0x09, 0x09, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4b, 0x4a, 0x4a, 0x4b,
-+ 0x48, 0x7b, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x0f, 0x09, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x90, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x0f, 0x08, 0x0f, 0x7f,
-+ 0x05, 0x1f, 0x69, 0x09, 0x09, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0xe0, 0x20, 0xe0, 0xfc,
-+ 0x40, 0xf0, 0x2c, 0x20, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x24, 0x27, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x60, 0x60,
-+ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x78, 0xc8, 0xf8,
-+ 0x48, 0x78, 0x48, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3b, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0x30, 0xf8, 0xb8, 0xd8, 0xf8,
-+ 0xf8, 0x10, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x12, 0x12, 0x3e, 0x35,
-+ 0x34, 0x51, 0x51, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0xfc, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xfc, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x02, 0x02, 0x12, 0x12,
-+ 0x22, 0x42, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x50, 0x48,
-+ 0x44, 0x44, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x30, 0x53, 0x10,
-+ 0x10, 0x17, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x13, 0x1c,
-+ 0x70, 0x11, 0x12, 0x14, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x01,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x00,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x08,
-+ 0x08, 0x09, 0x11, 0x12, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0xe0,
-+ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x21, 0x11, 0x12, 0x07, 0x00, 0x70, 0x11,
-+ 0x12, 0x12, 0x11, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x40, 0x80, 0x00,
-+ 0x04, 0x04, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x12,
-+ 0x14, 0x14, 0x18, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x28, 0x20, 0x90,
-+ 0x50, 0x48, 0x04, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x29, 0x2b, 0x3b, 0x25,
-+ 0x2b, 0x3f, 0x25, 0x2f, 0x35, 0x25, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xd8, 0xd8,
-+ 0xf8, 0x68, 0x58, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x13, 0x16, 0x1b, 0x12,
-+ 0x13, 0x10, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0x30, 0xd8, 0xf4, 0x10,
-+ 0xf0, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x33, 0x52,
-+ 0x13, 0x17, 0x10, 0x10, 0x11, 0x1e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0xa8,
-+ 0xf8, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x21, 0x11, 0x1f, 0x41, 0x2f, 0x20, 0x0f, 0x18,
-+ 0x1a, 0x2a, 0x2b, 0x4a, 0x48, 0x48, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x80, 0xf8, 0x88,
-+ 0xa8, 0xa8, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x07, 0x15,
-+ 0x17, 0x23, 0x21, 0x40, 0x41, 0x4e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0x28,
-+ 0xf8, 0xf0, 0x20, 0xc0, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x0f, 0x1f, 0x12,
-+ 0x1f, 0x3f, 0x04, 0x02, 0x07, 0x78, 0x00, 0x00,
-+ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0xf0, 0x90,
-+ 0xf0, 0xe0, 0x40, 0x80, 0x80, 0x78, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x48,
-+ 0x49, 0x7a, 0x4c, 0x48, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0, 0xe0,
-+ 0x50, 0x48, 0x44, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x03,
-+ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x80,
-+ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e, 0x2c,
-+ 0x0d, 0x0d, 0x16, 0x17, 0x24, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x70, 0x70,
-+ 0xa8, 0x24, 0xa0, 0xa0, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10,
-+ 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x4d, 0x3f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x30, 0xf8, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x24, 0x24, 0xfc, 0x24, 0x24, 0xfc,
-+ 0x24, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x45, 0x15, 0x14, 0x25,
-+ 0x07, 0x19, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x50, 0x48, 0x84, 0x24,
-+ 0xe0, 0x00, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x23, 0x54, 0x15, 0x27, 0x19,
-+ 0x0f, 0x09, 0x0f, 0x01, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x90, 0x28, 0xe4, 0x00,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x20, 0x07, 0x11,
-+ 0x13, 0x14, 0x23, 0x20, 0x41, 0x46, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x10,
-+ 0xe8, 0x44, 0xf8, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x0f, 0x08, 0x7f,
-+ 0x08, 0x0f, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0xe0, 0x20, 0xfc,
-+ 0x20, 0xe0, 0x88, 0x50, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x18, 0x70, 0x11, 0x12, 0x7c, 0x13, 0x18,
-+ 0x34, 0x34, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xe8, 0x04, 0xf8, 0x10,
-+ 0x60, 0x28, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d,
-+ 0x25, 0x25, 0x25, 0x26, 0x26, 0x4c, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x0c, 0x70, 0x64, 0x64, 0x68,
-+ 0x50, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x13,
-+ 0x3d, 0x24, 0x06, 0x0a, 0x10, 0x23, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x2c,
-+ 0x28, 0x70, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1b, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x10, 0x16, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x80, 0xfc,
-+ 0x40, 0x40, 0x24, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x79, 0x49, 0x49, 0x79, 0x49, 0x49, 0x79,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x10, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x04, 0x19, 0x0a, 0x7e, 0x0a, 0x1b,
-+ 0x1c, 0x2b, 0x48, 0x08, 0x09, 0x1a, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x90, 0x50, 0x20, 0xd0, 0x4c,
-+ 0x40, 0xf8, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x00, 0x3f,
-+ 0x21, 0x43, 0x1e, 0x01, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xe0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x1a, 0x2a, 0x7f, 0x0a, 0x0a,
-+ 0x0a, 0x7f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa0, 0xa0, 0xf8, 0xa0, 0xa0,
-+ 0xa0, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x04, 0x3f, 0x09, 0x0f, 0x11,
-+ 0x21, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0xf0, 0x08, 0x00, 0xf0, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x01, 0x00, 0x7f, 0x00, 0x01,
-+ 0x02, 0x04, 0x18, 0x60, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0x80, 0xfc, 0x88, 0x90,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3e,
-+ 0x14, 0x7f, 0x1b, 0x2c, 0x48, 0x19, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x40, 0x7c,
-+ 0xd0, 0x70, 0xac, 0xf8, 0x48, 0x98, 0x00, 0x00,
-+ 0x04, 0x3e, 0x05, 0x04, 0x7f, 0x14, 0x14, 0x3c,
-+ 0x34, 0x34, 0x36, 0x3f, 0x63, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x11, 0x7d, 0x25, 0x26, 0x25,
-+ 0x75, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x50, 0x78, 0xc0, 0x3c, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3a, 0x24, 0x06, 0x0a, 0x10, 0x23, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8,
-+ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x01, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x02, 0x02, 0x07, 0x04, 0x0c, 0x12, 0x21, 0x02,
-+ 0x07, 0x1c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x3c, 0x24,
-+ 0x24, 0x24, 0x3c, 0x24, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x7c, 0x44, 0x44, 0x44, 0x7c, 0x44, 0x44,
-+ 0x44, 0x7c, 0x45, 0x41, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0x88, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x02,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x18,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x24, 0x12, 0x12, 0x00, 0x0f, 0x71, 0x11,
-+ 0x12, 0x14, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0x90, 0x90, 0xa0, 0x80, 0xf8, 0xc0, 0xa0,
-+ 0x90, 0x88, 0x80, 0x80, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x90, 0x50, 0x20, 0x40,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x4a, 0x4b, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x45, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x10, 0x7d, 0x27, 0x24, 0x24,
-+ 0x77, 0x48, 0x0c, 0x14, 0x27, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xa0, 0x10, 0xf8, 0x48, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x28, 0x28, 0x28, 0x3e, 0x28, 0x48, 0x08,
-+ 0x0e, 0x78, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x24, 0x27, 0x05, 0x17,
-+ 0x17, 0x15, 0x25, 0x2a, 0x4c, 0x50, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0x68,
-+ 0xb0, 0x10, 0xb0, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x04, 0x07, 0x08, 0x11, 0x7f, 0x11, 0x11, 0x1f,
-+ 0x12, 0x02, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x08, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20,
-+ 0xfc, 0x24, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x15, 0x65, 0x19, 0x19, 0x25, 0x7c,
-+ 0x13, 0x3a, 0x36, 0x32, 0x52, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x64, 0x1b, 0x1a, 0x26, 0x7e,
-+ 0x12, 0x3a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0xa8, 0xa8, 0xe8,
-+ 0xa8, 0xe8, 0xa8, 0xa8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x02, 0x3f, 0x24, 0x24, 0x27,
-+ 0x24, 0x27, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x48, 0x48, 0xc8,
-+ 0x48, 0xc8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x08, 0x3f, 0x09, 0x7f, 0x11,
-+ 0x1d, 0x25, 0x55, 0x09, 0x16, 0x61, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xfc, 0x54, 0x74, 0x54,
-+ 0x74, 0x54, 0xfc, 0x04, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x11, 0x11, 0x19, 0x11,
-+ 0x31, 0x50, 0x17, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xa0, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x28, 0x4f, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x01, 0x1f, 0x11,
-+ 0x10, 0x10, 0x10, 0x10, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x10, 0x08, 0xfc, 0x00,
-+ 0x90, 0x90, 0x60, 0x64, 0x9c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x07, 0x01, 0x02,
-+ 0x7f, 0x04, 0x0f, 0x10, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x20, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x1f, 0x00, 0x01, 0x01, 0x7f, 0x01, 0x03, 0x1f,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0xf0, 0x60, 0x80, 0x00, 0xfc, 0x00, 0x00, 0xf0,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x1e, 0x02, 0x02, 0x3f, 0x02, 0x02,
-+ 0x7f, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x4b, 0x30, 0x10, 0x37, 0x48, 0x08, 0x1b,
-+ 0x2a, 0x4a, 0x0a, 0x0a, 0x0f, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x60, 0xfc, 0x40, 0xc0, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x07, 0x00, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x17, 0x66, 0x1a, 0x1b, 0x26, 0x7f,
-+ 0x12, 0x3a, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0xf8,
-+ 0x88, 0x88, 0x88, 0x78, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x7e, 0x09, 0x7e, 0x08,
-+ 0x1d, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x58, 0xe0, 0x40, 0x5c,
-+ 0xe0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x2f, 0x40, 0x7f, 0x03,
-+ 0x3d, 0x06, 0x39, 0x06, 0x78, 0x03, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xe8, 0x00, 0xfc, 0x48,
-+ 0xd0, 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x1f, 0x10, 0x37, 0x50, 0x17,
-+ 0x10, 0x17, 0x15, 0x15, 0x17, 0x15, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0x30, 0xfc, 0x20, 0x78,
-+ 0xc8, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x03, 0x03, 0x05,
-+ 0x09, 0x11, 0x21, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0x40,
-+ 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x3f, 0x25, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0x20, 0x50, 0x50,
-+ 0x88, 0x04, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x10,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01,
-+ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x12, 0x12, 0x22, 0x44,
-+ 0x04, 0x08, 0x10, 0x01, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x09, 0x0c, 0x12, 0x2b, 0x48, 0x3c, 0x24, 0x3f,
-+ 0x24, 0x3c, 0x28, 0x25, 0x3b, 0x62, 0x00, 0x00,
-+ 0x08, 0x88, 0x90, 0xfc, 0x90, 0x90, 0x90, 0xfc,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x03, 0x03, 0x03,
-+ 0x05, 0x05, 0x09, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x10,
-+ 0x1f, 0x10, 0x21, 0x22, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x80,
-+ 0xfc, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x0c,
-+ 0x1a, 0x1a, 0x28, 0x48, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x68,
-+ 0x58, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x09, 0x7f, 0x09, 0x09, 0x0f, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xe0, 0xf8, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x27,
-+ 0x24, 0x24, 0x27, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8,
-+ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x20,
-+ 0x22, 0x2a, 0x2a, 0x32, 0x21, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x88,
-+ 0x88, 0x28, 0x58, 0x58, 0xc8, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x09, 0x15, 0x13, 0x21,
-+ 0x42, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10,
-+ 0xd0, 0x30, 0x1c, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x11, 0x11, 0x17, 0x19, 0x71,
-+ 0x11, 0x11, 0x11, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x30, 0xd0, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x60, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x10, 0x11, 0x01, 0x07, 0x10,
-+ 0x13, 0x22, 0x22, 0x42, 0x43, 0x02, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xa0, 0x10, 0x38, 0xc4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x10, 0x11, 0x31,
-+ 0x53, 0x14, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x90, 0x50,
-+ 0x20, 0xa0, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x02, 0x0c, 0x32, 0x01, 0x06, 0x78, 0x3f, 0x12,
-+ 0x1e, 0x12, 0x1e, 0x13, 0x7e, 0x02, 0x00, 0x00,
-+ 0xc0, 0x30, 0x48, 0x80, 0x60, 0x1c, 0xf8, 0x50,
-+ 0x70, 0x48, 0x44, 0x44, 0x78, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x12, 0x1e, 0x12, 0x12, 0x1e,
-+ 0x12, 0x13, 0x1e, 0x62, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x2a, 0x3e, 0x2b, 0x2a, 0x3e,
-+ 0x08, 0x3e, 0x08, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0x20, 0xfc, 0x28, 0x30,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x7c, 0x04, 0x05, 0x3d, 0x26, 0x20, 0x3c,
-+ 0x24, 0x25, 0x05, 0x06, 0x08, 0x30, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0, 0xa8,
-+ 0xa8, 0x24, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x01, 0x7f,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x13, 0x12, 0x12, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0x10, 0x60, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x11, 0x21, 0x49, 0x09, 0x12, 0x14, 0x37,
-+ 0x51, 0x11, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0xf0,
-+ 0x10, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x27, 0x14, 0x0f, 0x14, 0x67,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xc8, 0x50, 0xe0, 0x58, 0xc4,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x2b, 0x08, 0x2d,
-+ 0x2b, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90, 0xfc,
-+ 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x00, 0x09, 0x08, 0x08, 0x7e, 0x05, 0x24, 0x14,
-+ 0x14, 0x08, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x53, 0x14, 0x11, 0x11, 0x12, 0x00, 0x00,
-+ 0x40, 0x80, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x2a, 0x1c, 0x7f, 0x1c, 0x2a,
-+ 0x7f, 0x12, 0x3c, 0x04, 0x1a, 0x63, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x7c, 0x90, 0x90,
-+ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x12, 0x19, 0x25, 0x24, 0x79, 0x10, 0x7f,
-+ 0x11, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0x20, 0xfc, 0x70, 0x50,
-+ 0x70, 0x78, 0x48, 0x78, 0xc0, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x19, 0x37, 0x34, 0x37, 0x54,
-+ 0x17, 0x14, 0x17, 0x14, 0x14, 0x15, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x7e, 0x12, 0x1e, 0x1e,
-+ 0x12, 0x17, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x9c, 0x90, 0x90, 0x90,
-+ 0x10, 0x30, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x23, 0x22, 0x02, 0x0a,
-+ 0x0b, 0x0a, 0x12, 0x12, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x4f, 0x29, 0x2b, 0x0a, 0x1b,
-+ 0x2b, 0x4a, 0x10, 0x15, 0x25, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0xc0, 0x30, 0xfc, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0x98, 0xc0, 0x28, 0x14, 0xf4, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0x7d, 0x03, 0x3c, 0x03, 0x3a,
-+ 0x03, 0x3a, 0x2b, 0x2a, 0x3a, 0x2a, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x7e, 0x10, 0x7d, 0x57, 0x7c, 0x57,
-+ 0x7e, 0x13, 0x7e, 0x13, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x49, 0x4b, 0x4b, 0x4d, 0x49,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x90, 0x90, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x11, 0x31, 0x52, 0x13,
-+ 0x15, 0x19, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x11, 0x11, 0x31, 0x57, 0x17,
-+ 0x1a, 0x14, 0x11, 0x16, 0x11, 0x1e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf0, 0xf0, 0xf0, 0xfc, 0x58,
-+ 0xe8, 0xf4, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x04, 0x03, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x07, 0x06,
-+ 0x05, 0x09, 0x08, 0x11, 0x26, 0x58, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10,
-+ 0x20, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x02, 0x3f, 0x22, 0x7f, 0x04, 0x07, 0x0c,
-+ 0x0f, 0x14, 0x27, 0x44, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x05, 0x25, 0x39, 0x2b, 0x2b, 0x25, 0x27,
-+ 0x2b, 0x3f, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x20, 0x28, 0xc8, 0x58, 0x58, 0x28, 0x38,
-+ 0x58, 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x15, 0x36, 0x54, 0x15, 0x16,
-+ 0x11, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0xa0, 0x40, 0xb0, 0x0c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x0f, 0x0f, 0x0f, 0x3f, 0x25,
-+ 0x57, 0x23, 0x0e, 0x31, 0x07, 0x78, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0xe0, 0xe0, 0xfc, 0x38,
-+ 0xe8, 0xe4, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x17, 0x11, 0x1d,
-+ 0x71, 0x11, 0x11, 0x11, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x1c, 0xf0, 0x10, 0x10, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x04, 0x04, 0x0f, 0x0c, 0x17,
-+ 0x24, 0x47, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x12, 0x3a, 0x36,
-+ 0x37, 0x52, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x23, 0x22, 0x03, 0x12,
-+ 0x13, 0x20, 0x2f, 0x40, 0x43, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x84, 0x04, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x40, 0x23, 0x22, 0x02, 0x0b,
-+ 0x0a, 0x0a, 0x13, 0x12, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0xb0, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x09, 0x48, 0x30, 0x17, 0x30, 0x4b, 0x0a, 0x1a,
-+ 0x2b, 0x4a, 0x0b, 0x0a, 0x33, 0x12, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8,
-+ 0x38, 0x18, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x21, 0x11, 0x12, 0x7f, 0x0c, 0x3f, 0x2d, 0x2d,
-+ 0x37, 0x33, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xa4, 0x20, 0xfc, 0x20, 0x20,
-+ 0x30, 0x50, 0x50, 0x88, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x21,
-+ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x08, 0x08, 0x18, 0x14,
-+ 0x35, 0x51, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x80, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x08, 0x0a, 0x14, 0x19,
-+ 0x37, 0x55, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0xa0, 0x10,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3d, 0x02, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3d, 0x22, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x48, 0xe4,
-+ 0xa0, 0xb8, 0xa8, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x02, 0x22, 0x12, 0x1f, 0x02, 0x02, 0x73, 0x12,
-+ 0x12, 0x14, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x7c, 0x88, 0x90,
-+ 0xfc, 0x90, 0x90, 0xb0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x3f, 0x21,
-+ 0x21, 0x3f, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xf8, 0x08,
-+ 0x08, 0xf8, 0x08, 0x00, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3e, 0x04, 0x3f, 0x15, 0x15, 0x7f, 0x15,
-+ 0x15, 0x3f, 0x04, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x80, 0x78, 0x48, 0xd0, 0x50, 0x60, 0xd0, 0x48,
-+ 0x44, 0xc4, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x0a, 0x0c, 0x0c,
-+ 0x14, 0x16, 0x29, 0x4f, 0x38, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x7f,
-+ 0x55, 0x67, 0x5f, 0x49, 0x49, 0x4b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0x30, 0x28, 0x38, 0xe4, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x05, 0x08, 0x10,
-+ 0x00, 0x00, 0x00, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0x10, 0x90, 0x60,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x01, 0x01, 0x7f, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0x80, 0xfc, 0x08, 0x10,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x6f, 0x01, 0x01,
-+ 0x3f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x00,
-+ 0xf8, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x07, 0x04, 0x04, 0x07, 0x04, 0x00,
-+ 0x7f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00,
-+ 0x12, 0x09, 0x7f, 0x10, 0x17, 0x3f, 0x40, 0x07,
-+ 0x07, 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x20, 0xd0, 0xf8, 0x04, 0xc0,
-+ 0xc0, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x09, 0x31, 0x2f, 0x27, 0x35, 0x27, 0x25, 0x37,
-+ 0x2f, 0x21, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x38, 0xe8, 0xc8, 0x58, 0xc8, 0x48, 0xd8,
-+ 0xe8, 0x08, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x0c, 0x08, 0x7f, 0x09, 0x0a,
-+ 0x0c, 0x08, 0x08, 0x08, 0x08, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x27, 0x24, 0x67, 0x27, 0x24,
-+ 0x27, 0x26, 0x2b, 0x2b, 0x32, 0x22, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0xf8, 0x40,
-+ 0xf8, 0x48, 0xf8, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x12, 0x53, 0x24, 0x14, 0x08,
-+ 0x0c, 0x12, 0x16, 0x3a, 0x61, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x22, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x09, 0x12, 0x04,
-+ 0x18, 0x6f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x20, 0x10, 0x90, 0x40,
-+ 0x30, 0xec, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x17, 0x10,
-+ 0x17, 0x14, 0x27, 0x27, 0x44, 0x04, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0xf0, 0x80,
-+ 0xf0, 0x90, 0xf0, 0xf0, 0x90, 0xb0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x10, 0x1f,
-+ 0x71, 0x13, 0x14, 0x11, 0x12, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x10, 0x13, 0x18,
-+ 0x77, 0x10, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x38, 0xc8, 0x48, 0x50, 0x20, 0x40, 0xf8, 0x40,
-+ 0xfc, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x79, 0x11, 0x16, 0x12, 0x19,
-+ 0x72, 0x17, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x28, 0x28, 0xfc, 0xd0, 0x7c,
-+ 0xd0, 0xfc, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4b, 0x48, 0x4f, 0x79, 0x4b,
-+ 0x4e, 0x4b, 0x7a, 0x4b, 0x42, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xb8, 0x88, 0xf8, 0x20, 0xf8,
-+ 0x40, 0xf0, 0x40, 0xf0, 0x40, 0xf8, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x34, 0x37,
-+ 0x31, 0x53, 0x54, 0x11, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x18, 0x1d, 0x1b,
-+ 0x2a, 0x28, 0x48, 0x0b, 0x08, 0x08, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x24,
-+ 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x11, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x08,
-+ 0x08, 0x0f, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x21, 0x02, 0x10,
-+ 0x11, 0x23, 0x25, 0x41, 0x41, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x48, 0x48, 0xa0,
-+ 0x10, 0xf8, 0x14, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x16, 0x35, 0x35, 0x3a, 0x50,
-+ 0x11, 0x1f, 0x15, 0x25, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x48, 0x48, 0xa0,
-+ 0x10, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11,
-+ 0x1f, 0x11, 0x11, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x4c, 0x12, 0x3f, 0x01, 0x0f,
-+ 0x01, 0x3f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x48, 0xb8, 0xf0, 0x00, 0xe0,
-+ 0x00, 0xf8, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x01, 0x1f, 0x01,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x4a, 0x2b, 0x2c, 0x09, 0x7e, 0x19,
-+ 0x1b, 0x19, 0x1b, 0x2d, 0x29, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90, 0xfc,
-+ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x09, 0x7f, 0x09, 0x09, 0x0f,
-+ 0x01, 0x3f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0xfc, 0x20, 0xe0, 0xf0,
-+ 0x00, 0xf8, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x01, 0x3f, 0x24, 0x49, 0x12,
-+ 0x04, 0x1f, 0x68, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x48, 0x20, 0x90,
-+ 0x40, 0xf0, 0x2c, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x02,
-+ 0x7f, 0x04, 0x0f, 0x08, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x00,
-+ 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7e, 0x01, 0x3d, 0x03, 0x3c,
-+ 0x03, 0x38, 0x2a, 0x2a, 0x3b, 0x22, 0x00, 0x00,
-+ 0x08, 0x30, 0xc8, 0x48, 0x50, 0x20, 0xf8, 0x40,
-+ 0xfc, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3d, 0x29, 0x09, 0x2f,
-+ 0x29, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa0, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x27, 0x12, 0x11, 0x01, 0x03, 0x70, 0x17,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x3c, 0xc8, 0x48, 0x50, 0x20, 0xf8, 0x40, 0xfc,
-+ 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x28, 0x27,
-+ 0x25, 0x25, 0x3a, 0x24, 0x21, 0x22, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x05, 0x1f,
-+ 0x67, 0x04, 0x07, 0x05, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x40, 0xf0,
-+ 0xcc, 0x40, 0xe0, 0x20, 0xc0, 0x38, 0x00, 0x00,
-+ 0x14, 0x12, 0x2a, 0x0c, 0x13, 0x3e, 0x52, 0x1f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa8, 0x30, 0x20, 0x50, 0x88,
-+ 0x04, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x12, 0x12, 0x1e,
-+ 0x72, 0x13, 0x1e, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x80, 0x80, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0xc8, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x12, 0x22, 0x48, 0x08, 0x14, 0x13, 0x22,
-+ 0x7e, 0x22, 0x22, 0x3e, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x20, 0x07, 0x10,
-+ 0x10, 0x20, 0x20, 0x41, 0x42, 0x4c, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x0a, 0x42, 0x24, 0x20, 0x01, 0x12,
-+ 0x17, 0x1a, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x20, 0x10, 0x08, 0x48, 0x40, 0xa0, 0x20, 0x10,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x0a, 0x0e, 0x32, 0x07, 0x01,
-+ 0x3f, 0x04, 0x02, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x28, 0x38, 0xc8, 0x18, 0x00,
-+ 0xf8, 0x40, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x1a, 0x6f, 0x09, 0x0f, 0x09,
-+ 0x0f, 0x1f, 0x04, 0x7f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x98, 0x68, 0xf8, 0x20, 0xe0, 0x20,
-+ 0xe0, 0xf0, 0x40, 0xfc, 0x60, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x24, 0x27, 0x00, 0x12,
-+ 0x12, 0x22, 0x22, 0x43, 0x44, 0x48, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xfc, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x10, 0x14, 0x64, 0x19,
-+ 0x16, 0x7e, 0x2c, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x88, 0x90, 0xfc, 0x90,
-+ 0xf8, 0x90, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x48, 0xd0,
-+ 0x28, 0xfc, 0xa4, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x0b, 0x0a, 0x17, 0x18,
-+ 0x37, 0x54, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x09, 0x05, 0x05, 0x7f, 0x01,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x20, 0x40, 0xfc, 0x00,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x09, 0x05,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x40,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x2a, 0x2a, 0x3e,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x00,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x41, 0x23, 0x24, 0x00, 0x13,
-+ 0x1f, 0x22, 0x22, 0x42, 0x43, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xc0, 0xc0, 0x30,
-+ 0xfc, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x09, 0x4a, 0x20,
-+ 0x25, 0x0f, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xc0, 0xf0, 0x90, 0x60, 0x60,
-+ 0x90, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0xa0, 0x38, 0x48, 0xd0, 0x30, 0x30, 0x48,
-+ 0xfc, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x02, 0x0c, 0x32, 0x22, 0x32, 0x2a, 0x2a, 0x22,
-+ 0x22, 0x2e, 0x74, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0xa8, 0x88,
-+ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x11, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x1f, 0x17,
-+ 0x15, 0x17, 0x15, 0x21, 0x2e, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0xf0, 0x00, 0xf0, 0xd0, 0x10, 0xd0,
-+ 0x50, 0xd0, 0x54, 0xec, 0x2c, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x7f, 0x17, 0x34, 0x3f, 0x3d,
-+ 0x55, 0x55, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xbc, 0xa4, 0xbc, 0xbc, 0x44, 0xfc, 0xf4,
-+ 0xf4, 0x54, 0xf4, 0xe4, 0x5c, 0x4c, 0x00, 0x00,
-+ 0x20, 0x17, 0x15, 0x47, 0x24, 0x27, 0x05, 0x17,
-+ 0x10, 0x17, 0x25, 0x25, 0x5f, 0x40, 0x00, 0x00,
-+ 0x20, 0xe0, 0x20, 0xbc, 0xc0, 0x80, 0x38, 0xc0,
-+ 0x00, 0xf8, 0x28, 0x28, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x3e, 0x3f, 0x24,
-+ 0x3f, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0x7c, 0x80, 0x00, 0x78,
-+ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x2f,
-+ 0x27, 0x27, 0x27, 0x23, 0x2d, 0x21, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xe8,
-+ 0xc8, 0xc8, 0xc8, 0x88, 0x68, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x48, 0x7d, 0x7c, 0x7e, 0x4f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x78, 0x00, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x7f, 0x0c, 0x0e,
-+ 0x15, 0x15, 0x24, 0x44, 0x04, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x19, 0x05, 0x02, 0x05, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x00, 0x00, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x14, 0x1b, 0x12,
-+ 0x14, 0x1c, 0x14, 0x27, 0x24, 0x47, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x80, 0xfc, 0xf0, 0xf0,
-+ 0x90, 0xf0, 0xf8, 0x90, 0x60, 0x9c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x0f,
-+ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0xe0,
-+ 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x3e, 0x04, 0x7f, 0x0e, 0x15, 0x64, 0x05,
-+ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x98, 0x00,
-+ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x12, 0x13, 0x12, 0x7e, 0x13,
-+ 0x10, 0x13, 0x18, 0x60, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x7e, 0x12, 0x12, 0x12, 0x7f, 0x10,
-+ 0x17, 0x14, 0x1c, 0x67, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0x28, 0xa8, 0x68, 0x98, 0xf8, 0x40,
-+ 0xfc, 0x64, 0x94, 0xf4, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x29, 0x2f, 0x09, 0x1f,
-+ 0x29, 0x4b, 0x13, 0x15, 0x29, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x48, 0xa8, 0x28, 0x28, 0xe8,
-+ 0x28, 0xa8, 0x68, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3f,
-+ 0x01, 0x7f, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8,
-+ 0x00, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x0b, 0x0a, 0x16, 0x1b,
-+ 0x34, 0x57, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x01, 0x3f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x26, 0x3a, 0x37, 0x3e, 0x08,
-+ 0x7f, 0x4d, 0x53, 0x7f, 0x41, 0x43, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0xd0, 0x50, 0x78, 0x50,
-+ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x28, 0x2b, 0x30, 0x29, 0x26,
-+ 0x24, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x5c,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x48, 0x0f, 0x10, 0x13, 0x30,
-+ 0x53, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x21, 0x16, 0x02, 0x19, 0x62,
-+ 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x50, 0x80, 0xb0, 0x4c,
-+ 0xa0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x00, 0x08, 0x04, 0x04,
-+ 0x02, 0x02, 0x02, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x13, 0x10, 0x2f, 0x48, 0x13,
-+ 0x30, 0x57, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xf0, 0x90, 0xfc, 0x90, 0xf0,
-+ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x12, 0x12, 0x1f,
-+ 0x70, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x54, 0x55, 0x56, 0x7c, 0x55,
-+ 0x56, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x37, 0x32, 0x2a, 0x3c, 0x65, 0x0a, 0x1f,
-+ 0x64, 0x3f, 0x15, 0x0e, 0x07, 0x78, 0x00, 0x00,
-+ 0x04, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0x24, 0x24,
-+ 0xa4, 0xa4, 0x24, 0x04, 0x84, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x21, 0x27, 0x00, 0x12,
-+ 0x12, 0x22, 0x22, 0x42, 0x44, 0x48, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xe8, 0x08, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x21, 0x16, 0x14, 0x45, 0x24, 0x25, 0x0e, 0x10,
-+ 0x17, 0x24, 0x27, 0x44, 0x47, 0x44, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0x28, 0xa8, 0xc8, 0x58, 0x80,
-+ 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x10, 0x10, 0x13, 0x7c, 0x11,
-+ 0x11, 0x11, 0x1e, 0x62, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x60, 0x90, 0xf8, 0x08, 0x50,
-+ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x06, 0x39, 0x20, 0x24, 0x26, 0x39, 0x62, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x08, 0x30, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3f, 0x24, 0x65,
-+ 0x25, 0x25, 0x3d, 0x25, 0x22, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x60, 0x90, 0xe8, 0x08, 0x50,
-+ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x08, 0x88, 0x48,
-+ 0x48, 0x50, 0x50, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x2a, 0x30, 0x2b, 0x25,
-+ 0x25, 0x26, 0x39, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0x40,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x04, 0x7f, 0x00, 0x1f, 0x11,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x14, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xf8, 0x08, 0xf8, 0x80, 0xf8,
-+ 0x80, 0xf8, 0x80, 0xf8, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x50, 0x11,
-+ 0x17, 0x14, 0x14, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x80, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x17, 0x14,
-+ 0x17, 0x14, 0x27, 0x2a, 0x4a, 0x11, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0xe8, 0x10, 0xf0, 0xf0, 0x90,
-+ 0xf0, 0x90, 0xf8, 0x44, 0x34, 0xf0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x09, 0x0e, 0x0a,
-+ 0x0a, 0x13, 0x12, 0x22, 0x42, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xa0, 0x28, 0x48, 0x70,
-+ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x17, 0x11, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x2f, 0x20, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0x28, 0xe0, 0xf0, 0x90, 0xf0,
-+ 0x90, 0xf0, 0xf8, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f,
-+ 0x20, 0x44, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x08, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x14, 0x13, 0x33, 0x55, 0x11,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0x18, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x29, 0x29,
-+ 0x29, 0x29, 0x2f, 0x28, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x28, 0x28,
-+ 0x28, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x23, 0x10, 0x17, 0x00, 0x11, 0x16,
-+ 0x20, 0x21, 0x46, 0x40, 0x01, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x21, 0x7f, 0x24, 0x1f, 0x68, 0x0f,
-+ 0x08, 0x0f, 0x05, 0x09, 0x31, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xfc, 0x48, 0xf0, 0x2c, 0xe0,
-+ 0x20, 0xe0, 0x60, 0x10, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c,
-+ 0x70, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x0b, 0x40, 0x22, 0x0a, 0x0d, 0x12, 0x21,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x98, 0x14, 0x64, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x22, 0x02, 0x13,
-+ 0x10, 0x12, 0x22, 0x24, 0x48, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x0c, 0x4a, 0x32, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x0a, 0x0a, 0x0c, 0x38, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
-+ 0x50, 0xf0, 0x54, 0x4c, 0x4c, 0x44, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x4f, 0x2a, 0x29, 0x0b, 0x1d,
-+ 0x29, 0x49, 0x11, 0x12, 0x24, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14,
-+ 0xf0, 0x10, 0xf0, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x78, 0x4f, 0x4a, 0x79, 0x4b, 0x4d, 0x79,
-+ 0x49, 0x49, 0x7a, 0x4a, 0x44, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x04, 0x18, 0x73, 0x10, 0x17, 0x7c, 0x11, 0x1a,
-+ 0x34, 0x35, 0x52, 0x10, 0x11, 0x1e, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c,
-+ 0xf0, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x10, 0x55, 0x35, 0x39, 0x11, 0x7f, 0x11, 0x19,
-+ 0x35, 0x35, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0xf0, 0x10, 0xf0, 0xfc, 0xf0, 0x50,
-+ 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x0a, 0x09, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0xf0,
-+ 0x10, 0x20, 0xc0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x20, 0x17, 0x12, 0x01, 0x03, 0x75, 0x11,
-+ 0x11, 0x11, 0x12, 0x14, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x48, 0x44, 0xc0, 0xfc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x0f, 0x7f, 0x0f, 0x09,
-+ 0x0f, 0x0f, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x28, 0x33, 0x28, 0x25, 0x26,
-+ 0x24, 0x25, 0x3a, 0x20, 0x21, 0x2e, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x00, 0x7e,
-+ 0x12, 0x12, 0x12, 0x1c, 0x10, 0x13, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x11, 0x14, 0x65, 0x18, 0x1b, 0x26, 0x7d,
-+ 0x19, 0x34, 0x35, 0x36, 0x50, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc, 0x40, 0x64,
-+ 0x68, 0xd0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x11, 0x13, 0x34, 0x5b, 0x12,
-+ 0x12, 0x13, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x14, 0x17,
-+ 0x10, 0x17, 0x10, 0x20, 0x3f, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x80, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x0c, 0x1a, 0x1a,
-+ 0x29, 0x4a, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x60, 0xe0, 0xd0,
-+ 0x50, 0x48, 0x44, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x23, 0x06, 0x16,
-+ 0x1a, 0x1b, 0x22, 0x22, 0x42, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x30, 0xf0, 0xe8,
-+ 0xa8, 0x24, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x17, 0x34, 0x39, 0x56, 0x11,
-+ 0x11, 0x1a, 0x16, 0x21, 0x22, 0x44, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x48,
-+ 0xfc, 0xa8, 0xa8, 0x7c, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x7d, 0x17, 0x11, 0x11, 0x7f, 0x13,
-+ 0x13, 0x15, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x78, 0x78,
-+ 0x54, 0x94, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x01, 0x7d, 0x51, 0x52, 0x7b, 0x4d, 0x49, 0x49,
-+ 0x78, 0x53, 0x52, 0x7e, 0x43, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xb8, 0xa8, 0x00, 0x00,
-+ 0x10, 0x10, 0x7e, 0x10, 0x7d, 0x57, 0x7c, 0x57,
-+ 0x7e, 0x12, 0x7f, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x2b, 0x30, 0x29, 0x26, 0x25,
-+ 0x25, 0x26, 0x3b, 0x24, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x48,
-+ 0xfc, 0x68, 0xa8, 0xfc, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x05, 0x3b, 0x2e, 0x28, 0x41, 0x00, 0x00,
-+ 0x20, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24, 0xa8,
-+ 0xfc, 0x68, 0xe8, 0x7c, 0x88, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x2a, 0x3f, 0x2b, 0x2b, 0x3f,
-+ 0x2a, 0x2f, 0x2a, 0x2a, 0x2f, 0x59, 0x00, 0x00,
-+ 0x20, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x64, 0x48,
-+ 0xfc, 0xa8, 0xa8, 0x7c, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x12, 0x12, 0x13, 0x7c, 0x13,
-+ 0x12, 0x13, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x80, 0x7c, 0x14, 0x94, 0xd4, 0x24, 0x4c, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x30, 0x09,
-+ 0x0d, 0x71, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x08, 0x30,
-+ 0x60, 0x18, 0xf4, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x02, 0x12,
-+ 0x13, 0x24, 0x24, 0x48, 0x53, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40,
-+ 0xfc, 0x40, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x02, 0x1c,
-+ 0x03, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0xc0,
-+ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x7f, 0x1c, 0x1a, 0x2a,
-+ 0x48, 0x7f, 0x08, 0x14, 0x22, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x1f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x09, 0x1b, 0x2c, 0x4b,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0a, 0x12, 0x13, 0x34, 0x54, 0x1a,
-+ 0x11, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0xe8, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x21, 0x11, 0x12, 0x05, 0x08, 0x17,
-+ 0x10, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0xe8, 0x04, 0xf8,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x1e, 0x10, 0x10, 0x1f, 0x14, 0x14, 0x17,
-+ 0x15, 0x15, 0x15, 0x29, 0x29, 0x57, 0x00, 0x00,
-+ 0xa0, 0x20, 0x20, 0x20, 0xfc, 0x24, 0x24, 0x24,
-+ 0x24, 0x24, 0x44, 0x44, 0x84, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x1f, 0x18, 0x0d, 0x12, 0x1e, 0x20,
-+ 0x7e, 0x0a, 0x0a, 0x0c, 0x08, 0x0b, 0x00, 0x00,
-+ 0x10, 0x10, 0xf0, 0x10, 0xfc, 0x20, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x18, 0x35, 0x37, 0x34, 0x53,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x10, 0x11, 0x12, 0x7c, 0x13,
-+ 0x10, 0x14, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xe8, 0x04, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x08, 0x08, 0x1c,
-+ 0x2a, 0x4a, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x1f, 0x60,
-+ 0x1f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0xf0, 0x0c,
-+ 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5d, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xe8, 0x04, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x08, 0x3f, 0x00, 0x3e, 0x01,
-+ 0x7e, 0x08, 0x2c, 0x2b, 0x4a, 0x18, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20,
-+ 0xa4, 0xb8, 0x70, 0xa8, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x02,
-+ 0x0f, 0x70, 0x1f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x80,
-+ 0xe0, 0x1c, 0xf0, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x0f,
-+ 0x00, 0x3f, 0x12, 0x0a, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xe0,
-+ 0x00, 0xf8, 0x90, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x3e, 0x22, 0x2b, 0x1f, 0x12, 0x1f,
-+ 0x12, 0x1f, 0x17, 0x24, 0x47, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x88, 0xa8, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x58, 0x60, 0x44, 0x3c, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x24, 0x35, 0x2e,
-+ 0x3f, 0x2e, 0x35, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0xa8, 0x28, 0xc4, 0xfc, 0x80, 0xfc,
-+ 0x94, 0x94, 0x98, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3f, 0x27, 0x2a, 0x32, 0x22,
-+ 0x27, 0x24, 0x27, 0x44, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xfc, 0x30, 0xe8, 0xa4, 0x20,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x3f, 0x27, 0x2a, 0x32,
-+ 0x20, 0x24, 0x24, 0x44, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xfc, 0x70, 0xa8, 0xa4,
-+ 0x80, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x2a,
-+ 0x46, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x11, 0x23, 0x01, 0x06, 0x78,
-+ 0x0f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x28, 0x44, 0x84, 0x80, 0x80,
-+ 0xf8, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x0f, 0x11, 0x29, 0x06, 0x04,
-+ 0x18, 0x60, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x08, 0x88, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x08, 0x18, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x0f, 0x19, 0x26, 0x0d, 0x31,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x18,
-+ 0xfc, 0x10, 0xa0, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x11, 0x17, 0x11, 0x1f,
-+ 0x11, 0x17, 0x23, 0x2d, 0x71, 0x01, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xfc, 0x40, 0xf0, 0x50, 0xfc,
-+ 0x50, 0xf0, 0x60, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x12, 0x12, 0x22, 0x44,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x50, 0x48, 0x44, 0xc4,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x1b, 0x34, 0x35, 0x36, 0x52,
-+ 0x13, 0x12, 0x15, 0x11, 0x12, 0x1c, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x48,
-+ 0xfc, 0xa8, 0xa8, 0x7c, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x15, 0x12, 0x42, 0x20, 0x20, 0x0e, 0x12,
-+ 0x12, 0x23, 0x22, 0x42, 0x45, 0x48, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x20, 0xfc, 0x20, 0x20, 0xa0, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x10, 0x17, 0x36, 0x3b, 0x52,
-+ 0x13, 0x10, 0x19, 0x26, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x5f, 0x12, 0x1f, 0x17, 0x11,
-+ 0x1f, 0x11, 0x2f, 0x27, 0x59, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xfc, 0x20, 0xfc, 0xf0, 0x50,
-+ 0xfc, 0x50, 0xf0, 0x70, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x64, 0x1b, 0x1a, 0x27, 0x7e,
-+ 0x1b, 0x34, 0x35, 0x32, 0x54, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x7d, 0x2e, 0x2a, 0x39, 0x2a, 0x2f, 0x38,
-+ 0x2a, 0x2e, 0x3b, 0x6a, 0x09, 0x0a, 0x00, 0x00,
-+ 0x10, 0x10, 0xe8, 0xa8, 0x10, 0xa8, 0xfc, 0xa4,
-+ 0xa8, 0xa8, 0xb8, 0xa8, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x20, 0x17, 0x13, 0x02, 0x73,
-+ 0x12, 0x13, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0xfc, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x00, 0x20, 0x17, 0x10, 0x03, 0x02, 0x73, 0x12,
-+ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x09, 0x02,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x07, 0x19, 0x7f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x12, 0x6f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x48, 0xe4, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x16, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x32, 0x53, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0xf0, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0xa8, 0xf4, 0x14, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x48,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x3e, 0x22,
-+ 0x23, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x50, 0x20, 0x50,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x08, 0x2e,
-+ 0x29, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3e,
-+ 0x23, 0x3e, 0x0f, 0x28, 0x2e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x78, 0x70, 0x00, 0x78,
-+ 0xd0, 0x70, 0xfc, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x3f, 0x20, 0x41, 0x01, 0x3f,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x01, 0x0f, 0x09, 0x7f, 0x09, 0x0f, 0x0f, 0x09,
-+ 0x0f, 0x7f, 0x04, 0x0f, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xfc, 0x20, 0xe0, 0xe0, 0x20,
-+ 0xe0, 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x25, 0x25, 0x46, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x38, 0xa8, 0xa8, 0xb0,
-+ 0xa8, 0xa4, 0x24, 0xb8, 0xa0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x0f, 0x01, 0x01, 0x3f, 0x04,
-+ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xe0, 0x00, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e,
-+ 0x28, 0x24, 0x27, 0x39, 0x62, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x7f, 0x08, 0x0d, 0x1a, 0x1a,
-+ 0x2b, 0x48, 0x09, 0x08, 0x08, 0x0f, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x48, 0x40,
-+ 0xfc, 0x90, 0xd0, 0x20, 0xd0, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7c, 0x14, 0x17, 0x3c, 0x3f,
-+ 0x36, 0x55, 0x54, 0x15, 0x16, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0xa4, 0xa8, 0xa8, 0xb0, 0xa8, 0xa4,
-+ 0x24, 0x24, 0xa4, 0x78, 0x60, 0x20, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x13,
-+ 0x12, 0x22, 0x22, 0x42, 0x43, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x88, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x47, 0x24, 0x27, 0x04, 0x17,
-+ 0x17, 0x16, 0x2a, 0x2b, 0x52, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x40, 0xf8,
-+ 0x68, 0xd8, 0x48, 0x68, 0xd8, 0x58, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x49, 0x09, 0x0f, 0x11,
-+ 0x21, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x44, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x09, 0x36, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x48, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x45, 0x3f, 0x04, 0x7f, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x40, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x03, 0x02,
-+ 0x06, 0x1b, 0x62, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x20, 0x40, 0xfc, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x04, 0x3f, 0x0a, 0x7f, 0x1e, 0x12, 0x1e, 0x1e,
-+ 0x16, 0x7f, 0x07, 0x07, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0xf8, 0xf0, 0x10, 0xf0, 0xf0, 0xf0, 0xf4,
-+ 0x7c, 0xfc, 0xc0, 0xf8, 0xc0, 0x40, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x7d,
-+ 0x51, 0x19, 0x15, 0x1d, 0x62, 0x04, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
-+ 0x50, 0xf0, 0x54, 0x4c, 0x4c, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e,
-+ 0x24, 0x22, 0x27, 0x39, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x04, 0x04,
-+ 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x40, 0x20,
-+ 0x10, 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0e, 0x15, 0x25, 0x5f, 0x12, 0x1f,
-+ 0x12, 0x1f, 0x17, 0x24, 0x47, 0x18, 0x00, 0x00,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x58, 0x60, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7d, 0x08, 0x0b, 0x18, 0x16,
-+ 0x35, 0x50, 0x11, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc, 0x40, 0x64,
-+ 0x68, 0xd0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x27, 0x3c, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xfc, 0x20, 0x24,
-+ 0xb8, 0x70, 0x68, 0xa4, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0x7c, 0x01, 0x3b, 0x04, 0x3b,
-+ 0x02, 0x3a, 0x2b, 0x2a, 0x3a, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x17, 0x10, 0x31, 0x52, 0x10,
-+ 0x17, 0x10, 0x11, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x48, 0x40,
-+ 0xfc, 0x90, 0xd0, 0x20, 0xd0, 0x08, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3f, 0x00, 0x3c,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x03, 0x0d, 0x71, 0x01, 0x3f,
-+ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xc0, 0x30, 0x08, 0x00, 0xf8,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x24, 0x3c, 0x25,
-+ 0x26, 0x3c, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x24, 0x25, 0x3d,
-+ 0x27, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x10,
-+ 0xfc, 0x54, 0x54, 0x54, 0x64, 0xcc, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x00, 0x1e, 0x12, 0x1e, 0x07,
-+ 0x79, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0x90, 0x90, 0x60, 0x64, 0x9c,
-+ 0x04, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x0c, 0x1b, 0x1a,
-+ 0x28, 0x4b, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x50, 0x94, 0x54, 0x4c,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3f, 0x22, 0x3e, 0x2b, 0x5f, 0x08,
-+ 0x0f, 0x0f, 0x0f, 0x0f, 0x29, 0x44, 0x00, 0x00,
-+ 0x30, 0x28, 0xfc, 0x60, 0xa4, 0x1c, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0xfc, 0xfc, 0x24, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x07, 0x05, 0x04, 0x04,
-+ 0x0a, 0x09, 0x09, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0xa0, 0xa0,
-+ 0x20, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x08, 0x0f, 0x08, 0x00, 0x7f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x20, 0x20, 0xe0, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x1f, 0x25, 0x7e, 0x2a, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x02, 0x3d, 0x00, 0x3c,
-+ 0x03, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x18, 0xe0, 0x40, 0x7c,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x7f, 0x07, 0x07, 0x3f, 0x27,
-+ 0x24, 0x27, 0x7f, 0x05, 0x19, 0x61, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xc0, 0xc0, 0xf8, 0xc8,
-+ 0x48, 0xd8, 0xfc, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x14, 0x13, 0x1f, 0x1a,
-+ 0x1a, 0x1f, 0x1a, 0x12, 0x24, 0x48, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xa0, 0x20, 0xfc, 0xb4,
-+ 0xd8, 0x90, 0xb0, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x15, 0x19, 0x35, 0x37,
-+ 0x32, 0x54, 0x50, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68,
-+ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x42, 0x24, 0x29, 0x03, 0x10,
-+ 0x13, 0x12, 0x27, 0x24, 0x40, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa4, 0x64, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x12, 0x11, 0x21, 0x3d, 0x65,
-+ 0x26, 0x26, 0x3c, 0x25, 0x22, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68,
-+ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x26, 0x25, 0x3d, 0x25, 0x27,
-+ 0x3e, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68,
-+ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40, 0x20,
-+ 0x20, 0xa0, 0x10, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x21, 0x21, 0x21, 0x3f,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x01, 0x03, 0x05, 0x09, 0x31,
-+ 0x41, 0x01, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0x00, 0x80, 0x60, 0x10, 0x08,
-+ 0x04, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x11, 0x21,
-+ 0x41, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08,
-+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
-+ 0x7c, 0x44, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x80, 0x80, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x3f, 0x04, 0x05, 0x04, 0x04,
-+ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xa0, 0xa0,
-+ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x09, 0x79,
-+ 0x09, 0x09, 0x19, 0x69, 0x01, 0x01, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x00, 0x20, 0x2c,
-+ 0x30, 0x20, 0x24, 0x1c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x05, 0x3d, 0x05, 0x1d,
-+ 0x65, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x60, 0x80, 0x00, 0xfc, 0x48, 0x70, 0x40, 0x48,
-+ 0x38, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x07, 0x7a, 0x29, 0x3f, 0x56, 0x08, 0x7f, 0x55,
-+ 0x7d, 0x5d, 0x55, 0x49, 0x55, 0x63, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x19, 0x08, 0x7e, 0x12, 0x14,
-+ 0x1b, 0x10, 0x13, 0x10, 0x13, 0x30, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0xf8, 0xa8, 0xa8, 0xfc, 0x64,
-+ 0xf8, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x11, 0x09, 0x09, 0x1f, 0x01,
-+ 0x7f, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x10, 0x10, 0x20, 0xf0, 0x10,
-+ 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x7f, 0x08, 0x7e,
-+ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0x20, 0xfc, 0x24, 0x28,
-+ 0x30, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3f,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x40, 0x20,
-+ 0x20, 0x20, 0x10, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x04, 0x3c, 0x20, 0x20,
-+ 0x3c, 0x24, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x78, 0x08, 0x08,
-+ 0x78, 0x48, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x07, 0x3c, 0x24, 0x24,
-+ 0x24, 0x3c, 0x20, 0x03, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0xc8, 0xa8, 0xb0,
-+ 0x90, 0xa8, 0xc4, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x7f,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x00, 0x07, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f,
-+ 0x20, 0x4f, 0x01, 0x3f, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0xc8, 0x00, 0xf8, 0x00, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x0c, 0x12, 0x12, 0x11, 0x21, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60,
-+ 0x50, 0x50, 0x90, 0x88, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x0f, 0x09, 0x11, 0x11, 0x31, 0x51, 0x11,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x38, 0x28,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11,
-+ 0x11, 0x12, 0x22, 0x24, 0x48, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40,
-+ 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x18, 0x28, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x60, 0x50, 0x48, 0x44,
-+ 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x1f, 0x30, 0x50, 0x10,
-+ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0x88, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x32, 0x52, 0x11,
-+ 0x11, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40,
-+ 0xc0, 0x80, 0xc0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x30, 0x52, 0x12,
-+ 0x14, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x34, 0x52, 0x11,
-+ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x68, 0x1c, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x30, 0x5f, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x11, 0x11, 0x32, 0x55, 0x19,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xc0, 0x40, 0x20, 0x10, 0x28, 0x24,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x10, 0x31, 0x51, 0x11,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x0a, 0x0a, 0x12, 0x13, 0x34, 0x58, 0x1f,
-+ 0x10, 0x10, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc,
-+ 0xc0, 0xa0, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x50, 0x13,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x10, 0x37, 0x54, 0x14,
-+ 0x17, 0x14, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa0, 0xa0,
-+ 0xfc, 0xa4, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x13, 0x12, 0x34, 0x53, 0x12,
-+ 0x12, 0x12, 0x13, 0x12, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48,
-+ 0x48, 0x48, 0xc8, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x50, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x04, 0x88, 0x80, 0x88, 0x90,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x57, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x04, 0x08, 0x00, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x30, 0x53, 0x10,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x12, 0x14, 0x30, 0x51, 0x16,
-+ 0x10, 0x13, 0x10, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x80, 0xf8, 0x08, 0x90, 0x60, 0x40, 0xa0, 0x7c,
-+ 0x84, 0x48, 0x30, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x13, 0x12, 0x34, 0x5f, 0x10,
-+ 0x10, 0x11, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x53, 0x10,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x04, 0x18, 0x60, 0xc0, 0x40,
-+ 0x7c, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x14, 0x12, 0x32, 0x50, 0x11,
-+ 0x12, 0x1c, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x57, 0x16,
-+ 0x16, 0x16, 0x16, 0x1a, 0x18, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x90, 0xf0, 0xb0,
-+ 0xb0, 0xb0, 0xf4, 0x8c, 0x8c, 0x84, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x13, 0x32, 0x52, 0x12,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x11, 0x31, 0x53, 0x15,
-+ 0x19, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x0a, 0x09, 0x09, 0x17, 0x10, 0x30, 0x53, 0x10,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x09, 0x09, 0x0d, 0x13, 0x23,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x30, 0x48, 0x88,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1f, 0x12,
-+ 0x12, 0x1f, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xf0, 0x90,
-+ 0x90, 0xf0, 0x90, 0x90, 0x90, 0xb0, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x2f, 0x27, 0x60, 0x3f, 0x2a,
-+ 0x31, 0x27, 0x25, 0x25, 0x3f, 0x20, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xfc, 0xf0, 0x80, 0xfc, 0x48,
-+ 0x24, 0xf0, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x13,
-+ 0x12, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x11, 0x17, 0x31, 0x51, 0x12,
-+ 0x14, 0x1f, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x80, 0xa0, 0x90, 0x38, 0xc8, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x25, 0x25, 0x51, 0x11,
-+ 0x19, 0x15, 0x25, 0x21, 0x4f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x53, 0x10,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x48, 0x44, 0x04, 0xf8, 0x30,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x12, 0x17, 0x32, 0x52, 0x13,
-+ 0x12, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x68, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x13, 0x32, 0x52, 0x13,
-+ 0x12, 0x12, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13,
-+ 0x10, 0x13, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x0f, 0x11, 0x11, 0x3f, 0x51, 0x13,
-+ 0x13, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x48, 0xa8, 0x28, 0x28, 0x28, 0xe8, 0x28, 0x28,
-+ 0xa8, 0x68, 0x68, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x09, 0x08, 0x08, 0x13, 0x10, 0x33, 0x52, 0x13,
-+ 0x12, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x32, 0x53, 0x12,
-+ 0x13, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x11, 0x32, 0x5f, 0x10,
-+ 0x13, 0x12, 0x12, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xfc, 0x08,
-+ 0xc8, 0x48, 0x48, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13,
-+ 0x12, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc,
-+ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x32, 0x52, 0x12,
-+ 0x12, 0x13, 0x15, 0x15, 0x19, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0xfc, 0x20, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13,
-+ 0x12, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x80, 0x38, 0x08, 0x08, 0xb8, 0x08, 0x08, 0xf8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x51, 0x12,
-+ 0x13, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0xa8, 0xa4, 0x1c, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x31, 0x52, 0x14,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x30, 0xc8, 0x48,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x11, 0x31, 0x52, 0x14,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xe0, 0xa0, 0x24, 0x24, 0x1c, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0a, 0x13, 0x12, 0x32, 0x5f, 0x12,
-+ 0x13, 0x16, 0x16, 0x1a, 0x12, 0x16, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x88, 0x48, 0x48, 0xc8, 0x28,
-+ 0x30, 0x90, 0xb0, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x10,
-+ 0x17, 0x14, 0x17, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x13, 0x10, 0x37, 0x50, 0x13,
-+ 0x12, 0x12, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x13, 0x32, 0x53, 0x12,
-+ 0x13, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x10,
-+ 0x10, 0x11, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x14, 0x14, 0x34, 0x55, 0x15,
-+ 0x17, 0x15, 0x15, 0x19, 0x19, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x88, 0x88, 0x88, 0xfc, 0x48,
-+ 0x28, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x17, 0x14, 0x37, 0x54, 0x14,
-+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0xbc, 0xa4, 0xbc, 0xa4, 0xbc, 0x04, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x17, 0x34, 0x57, 0x15,
-+ 0x15, 0x16, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xfc, 0x44, 0x74, 0x54,
-+ 0x54, 0xec, 0xcc, 0x44, 0x44, 0x4c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0d, 0x15, 0x15, 0x35, 0x55, 0x14,
-+ 0x17, 0x15, 0x14, 0x15, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40,
-+ 0xfc, 0x90, 0x60, 0xd8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x54, 0x17,
-+ 0x14, 0x14, 0x17, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x88, 0x00, 0x78,
-+ 0x48, 0x28, 0x30, 0x10, 0x28, 0xc4, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1f, 0x19, 0x15,
-+ 0x1f, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xf0, 0x30, 0x50,
-+ 0xf0, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0b, 0x12, 0x12, 0x33, 0x5e, 0x10,
-+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x20, 0x24, 0xe8, 0x30, 0x20, 0xa4, 0x5c, 0x80,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x11, 0x33, 0x52, 0x12,
-+ 0x13, 0x12, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0x60, 0x90, 0xfc, 0x10, 0x60,
-+ 0x88, 0x30, 0xc4, 0x08, 0x30, 0xc0, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x13,
-+ 0x14, 0x1c, 0x15, 0x16, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x88, 0xc8, 0x28, 0x08, 0xe8, 0x30, 0x00, 0x00,
-+ 0x08, 0x0a, 0x0a, 0x12, 0x1f, 0x32, 0x52, 0x17,
-+ 0x14, 0x14, 0x14, 0x17, 0x14, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x48, 0xc8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0xa8, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x37, 0x50, 0x10,
-+ 0x13, 0x1d, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x60, 0x90,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x09, 0x09, 0x0b, 0x12, 0x15, 0x39, 0x52, 0x14,
-+ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x68, 0x68, 0xb0,
-+ 0x80, 0x50, 0x48, 0x04, 0x14, 0xf0, 0x00, 0x00,
-+ 0x09, 0x08, 0x08, 0x11, 0x17, 0x38, 0x57, 0x14,
-+ 0x16, 0x15, 0x16, 0x15, 0x14, 0x15, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x12,
-+ 0x10, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xd0, 0xd0, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x1f, 0x15, 0x34, 0x54, 0x1b,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x48, 0xc8, 0xa8, 0x28,
-+ 0x30, 0x10, 0x90, 0xa8, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x52, 0x13,
-+ 0x12, 0x10, 0x1f, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x58, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x14, 0x14, 0x34, 0x54, 0x15,
-+ 0x15, 0x15, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0f, 0x12, 0x1f, 0x32, 0x52, 0x1f,
-+ 0x12, 0x13, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0x7c, 0xc8, 0x48, 0xa8, 0xa8,
-+ 0x30, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1e, 0x12, 0x12,
-+ 0x1e, 0x08, 0x0c, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xf0, 0x90, 0x90,
-+ 0xf0, 0x20, 0x20, 0x50, 0x88, 0x08, 0x00, 0x00,
-+ 0x08, 0x0f, 0x09, 0x17, 0x15, 0x37, 0x50, 0x1f,
-+ 0x11, 0x17, 0x1a, 0x13, 0x12, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0x80, 0xfc,
-+ 0x20, 0xf8, 0x24, 0xe0, 0x08, 0xf8, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x53, 0x10,
-+ 0x17, 0x10, 0x1f, 0x12, 0x11, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xf8, 0x48,
-+ 0xfc, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x17, 0x12, 0x33, 0x53, 0x12,
-+ 0x13, 0x10, 0x1f, 0x11, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0xf8, 0x48,
-+ 0xf8, 0x80, 0xfc, 0x90, 0x70, 0x88, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x10, 0x33, 0x52, 0x13,
-+ 0x11, 0x1f, 0x10, 0x13, 0x12, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x10, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0a, 0x14, 0x13, 0x32, 0x53, 0x12,
-+ 0x13, 0x12, 0x15, 0x14, 0x1a, 0x12, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x44, 0xf0, 0x10, 0xf8, 0x08,
-+ 0xfc, 0x54, 0x2c, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x17, 0x11, 0x37, 0x51, 0x11,
-+ 0x16, 0x17, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00,
-+ 0x09, 0x0f, 0x0d, 0x15, 0x17, 0x33, 0x55, 0x19,
-+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x10, 0xfc, 0x50, 0x50, 0xfc, 0x30, 0xb4, 0x4c,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x09, 0x09, 0x0f, 0x11, 0x1f, 0x33, 0x52, 0x14,
-+ 0x1b, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x30, 0xb0, 0xc8,
-+ 0xf4, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x0f, 0x09, 0x1f, 0x10, 0x33, 0x52, 0x13,
-+ 0x12, 0x13, 0x10, 0x13, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xf8, 0x20, 0xfc, 0x00, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00,
-+ 0x08, 0x0f, 0x09, 0x17, 0x15, 0x37, 0x53, 0x12,
-+ 0x13, 0x13, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x17,
-+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x17, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x11, 0x17, 0x30, 0x53, 0x12,
-+ 0x12, 0x13, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xfc, 0x00, 0xb8, 0xa8,
-+ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00,
-+ 0x09, 0x09, 0x0b, 0x12, 0x17, 0x3a, 0x53, 0x12,
-+ 0x13, 0x10, 0x17, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0xf8, 0x40, 0xf8, 0x40,
-+ 0xfc, 0x00, 0xbc, 0xa4, 0xe4, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x50, 0x17,
-+ 0x14, 0x17, 0x15, 0x19, 0x19, 0x17, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xf8,
-+ 0xe0, 0xfc, 0x48, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0d, 0x17, 0x14, 0x37, 0x55, 0x17,
-+ 0x10, 0x13, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0xe0, 0x20, 0xbc, 0xc0, 0x80, 0x38, 0xc0,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x11, 0x3e, 0x2a, 0x6a, 0x2e, 0x32,
-+ 0x23, 0x22, 0x23, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x80, 0xfc, 0x48, 0xb8, 0xa8, 0xb8, 0xe8, 0x14,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x1f, 0x33, 0x50, 0x13,
-+ 0x1f, 0x10, 0x17, 0x15, 0x17, 0x14, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xfc, 0xe8, 0x40, 0xf8,
-+ 0xfc, 0x08, 0xfc, 0x48, 0x28, 0x18, 0x00, 0x00,
-+ 0x09, 0x0f, 0x09, 0x13, 0x12, 0x33, 0x50, 0x17,
-+ 0x14, 0x18, 0x13, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0x00, 0xfc,
-+ 0x44, 0xf8, 0x90, 0x60, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x10,
-+ 0x17, 0x15, 0x17, 0x15, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00,
-+ 0xfc, 0x54, 0xfc, 0x54, 0xfc, 0x44, 0x00, 0x00,
-+ 0x15, 0x1f, 0x15, 0x17, 0x22, 0x2f, 0x6a, 0x2f,
-+ 0x22, 0x2f, 0x22, 0x2f, 0x25, 0x28, 0x00, 0x00,
-+ 0x28, 0xa8, 0x28, 0x7c, 0x50, 0xd0, 0xfc, 0xd0,
-+ 0x50, 0xfc, 0x50, 0xd0, 0x7c, 0xc0, 0x00, 0x00,
-+ 0x0f, 0x08, 0x0f, 0x15, 0x10, 0x37, 0x54, 0x17,
-+ 0x14, 0x17, 0x15, 0x19, 0x19, 0x17, 0x00, 0x00,
-+ 0xbc, 0x00, 0xbc, 0xb4, 0x40, 0xfc, 0xa0, 0xf8,
-+ 0xa8, 0xf8, 0xe4, 0x38, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x13, 0x12, 0x13, 0x20, 0x2f, 0x6b, 0x29, 0x2f,
-+ 0x2a, 0x2b, 0x2b, 0x32, 0x37, 0x20, 0x00, 0x00,
-+ 0xb8, 0xa8, 0xb8, 0x00, 0xfc, 0xa0, 0x20, 0xfc,
-+ 0xe8, 0xa8, 0x90, 0xd0, 0xa8, 0xc4, 0x00, 0x00,
-+ 0x09, 0x0f, 0x0d, 0x11, 0x13, 0x33, 0x52, 0x13,
-+ 0x10, 0x13, 0x10, 0x17, 0x12, 0x14, 0x00, 0x00,
-+ 0x50, 0xfc, 0x18, 0xf0, 0xf8, 0x58, 0xe8, 0xf8,
-+ 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0xa4, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x02, 0x3c, 0x20, 0x20, 0x3e, 0x20, 0x20, 0x3f,
-+ 0x24, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x88, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x04, 0x08, 0x10, 0x6f, 0x08, 0x08, 0x08,
-+ 0x0f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0xc0, 0x40, 0x20, 0x10, 0xec, 0x20, 0x20, 0x20,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x02, 0x03, 0x04, 0x18, 0x7f, 0x11, 0x11, 0x1f,
-+ 0x13, 0x03, 0x05, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x40, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x22, 0x3e,
-+ 0x14, 0x14, 0x15, 0x26, 0x2c, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x50, 0x50, 0x50, 0x94, 0x94, 0x0c, 0x00, 0x00,
-+ 0x08, 0x3e, 0x14, 0x7f, 0x00, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x14, 0x15, 0x26, 0x4d, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x2d, 0x25,
-+ 0x25, 0x2b, 0x33, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x68, 0x28,
-+ 0x28, 0x58, 0x98, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x07, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x3e, 0x22,
-+ 0x3a, 0x27, 0x3a, 0x26, 0x22, 0x26, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x48, 0x48,
-+ 0x90, 0x20, 0x90, 0x90, 0x48, 0x48, 0x00, 0x00,
-+ 0x01, 0x04, 0x08, 0x10, 0x6f, 0x04, 0x04, 0x07,
-+ 0x08, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0xc0, 0x40, 0x20, 0x10, 0xec, 0x00, 0x00, 0xe0,
-+ 0x20, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00,
-+ 0x04, 0x3c, 0x04, 0x1f, 0x69, 0x0f, 0x09, 0x0f,
-+ 0x04, 0x3f, 0x04, 0x7f, 0x08, 0x30, 0x00, 0x00,
-+ 0x48, 0x70, 0x44, 0xfc, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x24, 0x27,
-+ 0x24, 0x24, 0x24, 0x23, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, 0x48, 0xc8,
-+ 0x08, 0x28, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1e, 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x47, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0xfc, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x11,
-+ 0x11, 0x7f, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x28, 0x28, 0x30, 0x27,
-+ 0x24, 0x24, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x98, 0x78, 0x08, 0xc8,
-+ 0x48, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x00, 0x1f,
-+ 0x10, 0x17, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf0,
-+ 0x10, 0xd0, 0x10, 0xd0, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x1f, 0x04, 0x7f, 0x01, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x7f, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xfc, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x07, 0x18,
-+ 0x7f, 0x11, 0x1f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xc0, 0x80,
-+ 0xf0, 0x10, 0xf0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x20, 0x40,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x08, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x47, 0x18, 0x7f, 0x11, 0x11,
-+ 0x1f, 0x13, 0x03, 0x05, 0x19, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xc0, 0x80, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x40, 0x24, 0x24, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x5e, 0x00, 0x00, 0x7f, 0x14,
-+ 0x14, 0x14, 0x14, 0x25, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x40, 0x7c, 0x40, 0xf8, 0x88,
-+ 0x50, 0x30, 0x68, 0x8c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x5f, 0x02, 0x06, 0x19, 0x6b,
-+ 0x0c, 0x35, 0x06, 0x0c, 0x30, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x00, 0x48, 0x48, 0x50,
-+ 0xa0, 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x5c, 0x10, 0x1e, 0x10, 0x1f,
-+ 0x04, 0x1f, 0x6a, 0x25, 0x25, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x48, 0x28, 0x28, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x7f, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x7f, 0x09, 0x1f, 0x69, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0xfc, 0x20, 0xf0, 0x2c, 0x60, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x17, 0x10, 0x00, 0x00, 0x1f,
-+ 0x10, 0x21, 0x21, 0x42, 0x44, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90, 0xfc,
-+ 0xc0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x22, 0x12, 0x13, 0x02, 0x02, 0x12,
-+ 0x13, 0x22, 0x20, 0x40, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x13, 0x12, 0x02, 0x02, 0x12,
-+ 0x13, 0x22, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x10, 0x17, 0x00, 0x00, 0x11,
-+ 0x11, 0x22, 0x24, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x44, 0xe4, 0xe8, 0xf0, 0x60,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x03, 0x22, 0x12, 0x12, 0x03, 0x02, 0x10,
-+ 0x10, 0x21, 0x21, 0x42, 0x44, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x22, 0x12, 0x13, 0x04, 0x04, 0x1a,
-+ 0x13, 0x21, 0x22, 0x42, 0x44, 0x08, 0x00, 0x00,
-+ 0x08, 0xc8, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x07, 0x24, 0x14, 0x17, 0x04, 0x04, 0x15,
-+ 0x15, 0x25, 0x25, 0x44, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0xe8,
-+ 0x28, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x27, 0x10, 0x13, 0x02, 0x02, 0x13,
-+ 0x10, 0x22, 0x22, 0x44, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x07, 0x20, 0x13, 0x12, 0x02, 0x02, 0x13,
-+ 0x11, 0x20, 0x27, 0x41, 0x42, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8,
-+ 0xf0, 0x00, 0xfc, 0x50, 0x48, 0x48, 0x00, 0x00,
-+ 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x12, 0x1f, 0x11, 0x14,
-+ 0x17, 0x15, 0x1d, 0x22, 0x25, 0x58, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x10, 0xf0, 0x00,
-+ 0x70, 0x54, 0x54, 0xcc, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x13,
-+ 0x13, 0x15, 0x15, 0x29, 0x31, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x90,
-+ 0x50, 0x50, 0x34, 0x2c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x10, 0x17, 0x30, 0x50, 0x13, 0x10,
-+ 0x07, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x17, 0x14, 0x17, 0x14, 0x17,
-+ 0x10, 0x1f, 0x11, 0x27, 0x21, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xd0, 0x50, 0xd0, 0x50, 0xd0,
-+ 0x10, 0xf0, 0x14, 0xcc, 0x0c, 0xe4, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x0f, 0x00, 0x40, 0x41, 0x5d, 0x55, 0x55, 0x55,
-+ 0x5d, 0x55, 0x41, 0x46, 0x7f, 0x40, 0x00, 0x00,
-+ 0xe0, 0x40, 0x88, 0x08, 0xf8, 0x98, 0x68, 0x28,
-+ 0x58, 0x98, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x22, 0x12, 0x0a, 0x06,
-+ 0x05, 0x04, 0x08, 0x10, 0x20, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x90, 0x70, 0x1c, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x04, 0x7f, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x09, 0x09, 0x09, 0x7f,
-+ 0x08, 0x0c, 0x12, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1f, 0x2a, 0x2a, 0x4a, 0x12,
-+ 0x14, 0x24, 0x08, 0x11, 0x01, 0x06, 0x00, 0x00,
-+ 0x08, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x08,
-+ 0x0a, 0x09, 0x11, 0x1f, 0x70, 0x00, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x2a, 0x2a, 0x2a, 0x7f, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x21, 0x00, 0x00,
-+ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xe8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x7f, 0x04, 0x04,
-+ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x14, 0x22, 0x5d, 0x00, 0x7f,
-+ 0x10, 0x1e, 0x22, 0x02, 0x02, 0x0c, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x3c, 0x06, 0x19, 0x64, 0x04, 0x7f,
-+ 0x0c, 0x0e, 0x15, 0x25, 0x44, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x22, 0x12, 0x15, 0x7e, 0x14, 0x15, 0x14, 0x7f,
-+ 0x14, 0x14, 0x14, 0x24, 0x25, 0x46, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x68, 0x58, 0x8c, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2a, 0x2a, 0x54, 0x54, 0x2a, 0x2a,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0f, 0x78, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x22,
-+ 0x3e, 0x14, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x08, 0x1c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x7f, 0x49, 0x49, 0x7f,
-+ 0x4c, 0x1a, 0x19, 0x29, 0x48, 0x08, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x0c, 0x12, 0x22, 0x7f, 0x01,
-+ 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x03, 0x00, 0x00,
-+ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x10, 0x1f,
-+ 0x2b, 0x4b, 0x15, 0x25, 0x09, 0x16, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x3e, 0x2a, 0x36, 0x2a, 0x2a,
-+ 0x26, 0x00, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x18, 0x00, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2a, 0x3e, 0x00, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x14, 0x1e, 0x70, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x7f, 0x15, 0x75, 0x15, 0x35,
-+ 0x5c, 0x0e, 0x15, 0x24, 0x44, 0x04, 0x00, 0x00,
-+ 0x88, 0x28, 0x28, 0xe8, 0x28, 0xe8, 0x28, 0x68,
-+ 0xe8, 0x28, 0x28, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x12, 0x12, 0x7f, 0x12, 0x14, 0x0a, 0x11, 0x1f,
-+ 0x20, 0x5f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0x48, 0xc8,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x24, 0x49, 0x24, 0x3f, 0x24, 0x3f, 0x24, 0x3f,
-+ 0x04, 0x7f, 0x0e, 0x15, 0x64, 0x04, 0x00, 0x00,
-+ 0x88, 0x28, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0xe8, 0x28, 0x08, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x14, 0x7f, 0x55, 0x7f, 0x00, 0x3e,
-+ 0x00, 0x7f, 0x2a, 0x29, 0x49, 0x18, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d,
-+ 0x3f, 0x12, 0x1a, 0x15, 0x24, 0x48, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x88, 0x98, 0x00, 0x00,
-+ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d,
-+ 0x3f, 0x12, 0x12, 0x2d, 0x25, 0x49, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xa8, 0x68, 0x68, 0x28,
-+ 0x38, 0x28, 0x4c, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d,
-+ 0x3f, 0x12, 0x12, 0x2d, 0x25, 0x49, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0x28, 0x68, 0x68, 0xa8, 0xa8,
-+ 0x28, 0x28, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x3e, 0x49, 0x3e, 0x2a,
-+ 0x2a, 0x3e, 0x14, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x68, 0x58, 0x8c, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x21, 0x3e, 0x32, 0x5e,
-+ 0x10, 0x3f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0a, 0x7f, 0x2e, 0x2e, 0x3f, 0x51,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x08, 0xe8, 0xa8, 0x28, 0xa8, 0xe8, 0x68, 0x28,
-+ 0x28, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x7c, 0x28, 0x2a, 0x2a, 0x7e, 0x12,
-+ 0x1e, 0x70, 0x10, 0x11, 0x21, 0x42, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0xa8, 0xa8, 0xa8, 0xfc, 0x90,
-+ 0x90, 0xfc, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x2a, 0x2a, 0x2a, 0x7e, 0x12,
-+ 0x1e, 0x72, 0x12, 0x14, 0x24, 0x49, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0xa8, 0xa8, 0xa8, 0xfc, 0x90,
-+ 0x90, 0xfc, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1e, 0x23, 0x22, 0x7a, 0x2a,
-+ 0x2a, 0x2a, 0x3a, 0x22, 0x03, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7e, 0x12, 0x12, 0x13, 0x22, 0x4c, 0x00,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x08, 0x3e, 0x00,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x1f, 0x21, 0x02, 0x7f, 0x06,
-+ 0x0a, 0x1f, 0x62, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0xf8, 0x08, 0x80, 0xfc, 0x40,
-+ 0x20, 0xf0, 0x2c, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2a, 0x2a, 0x55, 0x54, 0x2a, 0x2a,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x79, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x00, 0x3f, 0x22, 0x22, 0x3e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x3e, 0x22,
-+ 0x3f, 0x22, 0x3e, 0x22, 0x3f, 0x61, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0x40,
-+ 0xf8, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x0c, 0x2a, 0x2a, 0x59, 0x14, 0x22, 0x3f,
-+ 0x22, 0x5f, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x20, 0x30, 0xa8, 0xa8, 0x60, 0x50, 0x88, 0xfc,
-+ 0x08, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x08, 0x7f, 0x3e, 0x22,
-+ 0x3e, 0x3e, 0x22, 0x3e, 0x12, 0x61, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x2a, 0x54, 0x2a, 0x3e, 0x2b, 0x3e, 0x2a, 0x3e,
-+ 0x08, 0x7e, 0x1c, 0x2a, 0x49, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7e, 0x23, 0x3e,
-+ 0x22, 0x3e, 0x3e, 0x20, 0x3e, 0x21, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0xf8, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2b, 0x5d, 0x2b, 0x4d, 0x1a, 0x61,
-+ 0x09, 0x34, 0x0a, 0x34, 0x09, 0x32, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x06, 0x38, 0x7f, 0x08, 0x7f, 0x6b, 0x5d, 0x7f,
-+ 0x08, 0x7f, 0x08, 0x7e, 0x3a, 0x55, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x3f, 0x25, 0x2f, 0x2a, 0x2f,
-+ 0x2a, 0x2f, 0x3f, 0x33, 0x3f, 0x50, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0xa0, 0x78, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xe8, 0x68, 0xc8, 0xd8, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x24, 0x3f,
-+ 0x24, 0x7e, 0x24, 0x3e, 0x24, 0x3f, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x10, 0x10, 0x20, 0x40,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x12, 0x12, 0x2e, 0x45,
-+ 0x04, 0x08, 0x10, 0x01, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8,
-+ 0x48, 0xa8, 0x88, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x10, 0x11, 0x39, 0x57,
-+ 0x13, 0x14, 0x18, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x48, 0x48,
-+ 0x48, 0xc8, 0x48, 0xc8, 0x48, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x10, 0x3f, 0x52, 0x12,
-+ 0x1f, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, 0x48,
-+ 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x12, 0x3f, 0x42, 0x1f, 0x12,
-+ 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0xe8, 0x08, 0xc8, 0x48,
-+ 0xc8, 0x48, 0xc8, 0x48, 0xc8, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x4f, 0x08, 0x0f,
-+ 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x88, 0x88, 0x88,
-+ 0xc8, 0x48, 0xc8, 0x48, 0xc8, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x14, 0x12, 0x3f, 0x40, 0x7e,
-+ 0x10, 0x1e, 0x22, 0x02, 0x02, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x1c,
-+ 0x70, 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x04, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x27, 0x24, 0x27, 0x24, 0x27,
-+ 0x24, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x90, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x24, 0x35, 0x2b, 0x29, 0x21,
-+ 0x25, 0x25, 0x29, 0x29, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0xa0, 0xf8, 0x20, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x27, 0x24, 0x3f, 0x27, 0x24,
-+ 0x27, 0x27, 0x27, 0x2c, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0xf0, 0x18, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x21, 0x27, 0x38, 0x27, 0x25,
-+ 0x27, 0x22, 0x25, 0x29, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0x40, 0xf0, 0x08, 0x70, 0x50,
-+ 0x70, 0x20, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x20, 0x23, 0x22, 0x23, 0x20, 0x2f,
-+ 0x29, 0x2f, 0x29, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0x78,
-+ 0x48, 0x78, 0x48, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x3f, 0x04, 0x04, 0x08, 0x11, 0x21,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x7f, 0x11,
-+ 0x11, 0x11, 0x11, 0x21, 0x21, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x7f, 0x11, 0x11,
-+ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x01, 0x09, 0x09, 0x08,
-+ 0x7f, 0x08, 0x08, 0x10, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x20, 0x20, 0x20,
-+ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x01, 0x21, 0x13, 0x12, 0x07, 0x1a, 0x13, 0x22,
-+ 0x23, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x20, 0xf8, 0x40, 0xf0, 0x40, 0xf0, 0x40,
-+ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0x80, 0x40, 0x20,
-+ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x09, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x13, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x60, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x1e, 0x12, 0x12, 0x32, 0x2a, 0x4c,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0xb0, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x21, 0x49, 0x0c, 0x12, 0x11,
-+ 0x3f, 0x52, 0x12, 0x12, 0x1e, 0x10, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x1f, 0x02, 0x7f, 0x04, 0x08,
-+ 0x17, 0x64, 0x04, 0x05, 0x04, 0x03, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0xf0, 0x80, 0xfc, 0x40, 0x20,
-+ 0xd0, 0x4c, 0x40, 0x80, 0x10, 0xf0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x13, 0x12, 0x12, 0x12, 0x1f, 0x12,
-+ 0x13, 0x13, 0x25, 0x25, 0x49, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x90, 0xa8, 0x28, 0xd0, 0x14,
-+ 0x24, 0x08, 0x10, 0x24, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x14, 0x17,
-+ 0x14, 0x14, 0x17, 0x23, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x88, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x28, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x10, 0x13, 0x12, 0x13, 0x13,
-+ 0x12, 0x13, 0x11, 0x27, 0x20, 0x4f, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x80, 0xf0, 0x10, 0xf0, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0x20, 0xe0, 0x38, 0x00, 0x00,
-+ 0x00, 0x1f, 0x18, 0x14, 0x15, 0x1f, 0x12, 0x1a,
-+ 0x1a, 0x1f, 0x1a, 0x22, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0x20, 0xfc, 0x54, 0x98,
-+ 0x90, 0x90, 0xb0, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x1f, 0x15, 0x15, 0x1f, 0x15, 0x17, 0x15,
-+ 0x17, 0x15, 0x1f, 0x25, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x10, 0xe0, 0x40, 0x7c, 0x50,
-+ 0x50, 0x50, 0xd0, 0x50, 0x90, 0x90, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x17, 0x16, 0x1a, 0x1f, 0x18,
-+ 0x1f, 0x1d, 0x1d, 0x2f, 0x28, 0x49, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xa0, 0xfc, 0xc8, 0xa8,
-+ 0xa8, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x10, 0x08, 0xf8, 0x04, 0x04, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x08, 0x15, 0x7e, 0x04, 0x18,
-+ 0x63, 0x0c, 0x01, 0x0e, 0x00, 0x1f, 0x00, 0x00,
-+ 0x00, 0x40, 0xf0, 0x10, 0x28, 0xfc, 0x40, 0xb0,
-+ 0x0c, 0x40, 0x90, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x5f, 0x10, 0x1f, 0x17, 0x1f,
-+ 0x02, 0x7f, 0x1a, 0x64, 0x19, 0x07, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0xf0, 0x10, 0xd0, 0xf0, 0xf0,
-+ 0x00, 0xfc, 0xb0, 0xcc, 0x20, 0xd0, 0x00, 0x00,
-+ 0x12, 0x1f, 0x24, 0x7f, 0x24, 0x3e, 0x24, 0x3f,
-+ 0x20, 0x1f, 0x02, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x48, 0xfc, 0x90, 0xf8, 0x90, 0xf8, 0x90, 0xfc,
-+ 0x80, 0xf0, 0x60, 0x80, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x05, 0x39, 0x21, 0x3d, 0x21, 0x21, 0x3f, 0x01,
-+ 0x3f, 0x04, 0x02, 0x01, 0x06, 0x78, 0x00, 0x00,
-+ 0x00, 0x78, 0x08, 0x78, 0x08, 0x08, 0xf8, 0x00,
-+ 0xf0, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x3f, 0x24,
-+ 0x3f, 0x0f, 0x02, 0x01, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x40, 0x80, 0xc0, 0x38, 0x00, 0x00,
-+ 0x13, 0x17, 0x54, 0x5b, 0x33, 0x1b, 0x2a, 0x23,
-+ 0x40, 0x1f, 0x04, 0x03, 0x06, 0x38, 0x00, 0x00,
-+ 0x90, 0xd4, 0x34, 0xb8, 0xd0, 0x98, 0xa4, 0xc4,
-+ 0x00, 0xe0, 0x40, 0x80, 0xc0, 0x38, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x00, 0x78, 0x48, 0x49, 0x49, 0x49, 0x49,
-+ 0x49, 0x79, 0x4a, 0x42, 0x04, 0x08, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x10, 0x10, 0x10, 0x08, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x79, 0x49, 0x42, 0x04, 0x08, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0xa0,
-+ 0xa0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x48, 0x48, 0x48, 0x4f, 0x48,
-+ 0x48, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x4a, 0x4a, 0x4c,
-+ 0x4f, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4a, 0x4a, 0x4a, 0x4b, 0x48,
-+ 0x48, 0x48, 0x79, 0x4a, 0x44, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x60,
-+ 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49,
-+ 0x49, 0x49, 0x7a, 0x42, 0x44, 0x00, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4f, 0x48, 0x49, 0x49, 0x49,
-+ 0x49, 0x79, 0x49, 0x42, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x00, 0xe0, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x48, 0x49, 0x49, 0x49,
-+ 0x4f, 0x79, 0x49, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0xe0, 0x60, 0xa0, 0xa0, 0x20, 0x60, 0xa0,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x49, 0x4f, 0x48, 0x48,
-+ 0x48, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x90, 0x88, 0x3c, 0xe4, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x00, 0x78, 0x4b, 0x4a, 0x4a, 0x4a, 0x4a,
-+ 0x4a, 0x4b, 0x7a, 0x4a, 0x42, 0x02, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xa8,
-+ 0x98, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x4a, 0x4a, 0x4f, 0x48,
-+ 0x48, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0x60, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf8, 0x94,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x02, 0x01, 0x06, 0x78,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x40, 0x80, 0x60, 0x1c,
-+ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49,
-+ 0x79, 0x4a, 0x42, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x88,
-+ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x48, 0x48, 0x4f, 0x48,
-+ 0x48, 0x49, 0x79, 0x42, 0x44, 0x00, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0xc0, 0x44, 0x64, 0xe8, 0xf0,
-+ 0xe0, 0x50, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x4a, 0x4a,
-+ 0x4a, 0x4b, 0x7a, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x12, 0x34, 0x4c, 0x0d, 0x13,
-+ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x60, 0x50, 0x88, 0x08, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4f, 0x48, 0x48, 0x4a, 0x49,
-+ 0x48, 0x48, 0x78, 0x48, 0x41, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0x90,
-+ 0xa0, 0x60, 0x50, 0x88, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
-+ 0x4a, 0x4a, 0x7a, 0x4c, 0x47, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
-+ 0xa0, 0x90, 0xd0, 0xa8, 0xf8, 0x14, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x4a,
-+ 0x4a, 0x7b, 0x4a, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x28, 0x2f, 0x28, 0x28, 0x2e, 0x38,
-+ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x80, 0x88, 0x90, 0xe0, 0x80, 0x84, 0x84, 0x7c,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x07,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0xc0,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4a, 0x4b, 0x4a, 0x4a,
-+ 0x4b, 0x7a, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49,
-+ 0x49, 0x49, 0x79, 0x49, 0x47, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x72, 0x52, 0x5f, 0x55, 0x55, 0x55,
-+ 0x5d, 0x53, 0x72, 0x52, 0x44, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0xc8, 0x48, 0x48, 0x30,
-+ 0x30, 0x10, 0xb0, 0xa8, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x02, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x48,
-+ 0x4a, 0x4a, 0x7a, 0x4a, 0x43, 0x02, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x40,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x49, 0x4b, 0x4d, 0x49,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4a, 0x4a, 0x4d, 0x49, 0x49,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x48,
-+ 0x4b, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x1f, 0x00, 0x7f,
-+ 0x04, 0x07, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x17, 0x10, 0x17,
-+ 0x14, 0x14, 0x14, 0x27, 0x24, 0x40, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0xc8, 0x28, 0xa8,
-+ 0xb0, 0x90, 0xb4, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x49, 0x4f, 0x48, 0x48,
-+ 0x4b, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0x88, 0x3c, 0xc4, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x49, 0x49, 0x4b, 0x4c, 0x48,
-+ 0x48, 0x78, 0x48, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x08, 0x14, 0x94, 0x90,
-+ 0x60, 0x60, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x49, 0x4f, 0x49, 0x49, 0x49,
-+ 0x49, 0x7f, 0x49, 0x41, 0x02, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20,
-+ 0x20, 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x49, 0x4b, 0x4c, 0x48,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x02, 0x04, 0x00, 0x19, 0x62,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x44, 0x48, 0xb0, 0x10, 0x08,
-+ 0xe4, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1e, 0x12, 0x12, 0x12, 0x12, 0x1e, 0x1a,
-+ 0x18, 0x14, 0x15, 0x22, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0xf8, 0x60,
-+ 0x50, 0x88, 0x08, 0x00, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x4a, 0x4a,
-+ 0x4b, 0x7b, 0x4a, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0x38, 0x38, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4c, 0x4b, 0x48, 0x48,
-+ 0x4f, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x30, 0xc0, 0x40, 0x7c,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x48,
-+ 0x49, 0x4e, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x40, 0x88,
-+ 0x90, 0xe0, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x09, 0x09, 0x09, 0x3f, 0x20,
-+ 0x27, 0x24, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0x20, 0xf8, 0x08,
-+ 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7a, 0x4c, 0x48, 0x48, 0x49, 0x4b,
-+ 0x4d, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x78, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x11, 0x1f, 0x00, 0x7f,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x01, 0x7f, 0x49, 0x49, 0x4f, 0x49, 0x49,
-+ 0x49, 0x7f, 0x49, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0xa0, 0x28, 0x24, 0x24, 0x20, 0xfc, 0x28, 0x28,
-+ 0x90, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x01, 0x78, 0x4b, 0x48, 0x4f, 0x49, 0x4a,
-+ 0x4b, 0x7e, 0x4a, 0x42, 0x02, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xe0, 0x90, 0x80, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x49, 0x49, 0x4f,
-+ 0x48, 0x7b, 0x4a, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x10, 0x10, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4b, 0x4a, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x79, 0x48, 0x41, 0x02, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x40, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x49,
-+ 0x4b, 0x7c, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x88, 0xe8, 0x90, 0x90, 0xfc, 0x40, 0xf8,
-+ 0x30, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x01, 0x01,
-+ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x20, 0x10,
-+ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x48, 0x4b, 0x4a, 0x4a, 0x4b,
-+ 0x4a, 0x7a, 0x4b, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x49, 0x48, 0x48, 0x4f, 0x49,
-+ 0x49, 0x7f, 0x49, 0x41, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0x40, 0xfc, 0x10,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4f, 0x4a, 0x4a, 0x4a, 0x4b,
-+ 0x4a, 0x7a, 0x4c, 0x44, 0x08, 0x13, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xe8, 0x28, 0x44, 0xa4, 0x90,
-+ 0x90, 0x80, 0xa0, 0x90, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4a, 0x4b, 0x4a,
-+ 0x4a, 0x7a, 0x4c, 0x44, 0x0b, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x72, 0x57, 0x55, 0x59, 0x5f, 0x51,
-+ 0x55, 0x75, 0x55, 0x45, 0x07, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xe8, 0x28, 0x28, 0xe8, 0x28,
-+ 0xe8, 0x28, 0x28, 0xf0, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4c, 0x49, 0x4a, 0x48,
-+ 0x4b, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0x24, 0x1c, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x18, 0x1f, 0x28, 0x4f, 0x08, 0x0f,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0xfc, 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x07, 0x7c, 0x4a, 0x49, 0x4a, 0x4c, 0x4f,
-+ 0x4c, 0x7a, 0x49, 0x41, 0x02, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xa8, 0x10, 0xa8, 0xc8, 0xf8,
-+ 0xc8, 0xa8, 0x30, 0x90, 0xa8, 0x44, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x4b, 0x4a, 0x4b, 0x4a,
-+ 0x4b, 0x78, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x7a, 0x4a, 0x4c, 0x49, 0x4a, 0x48,
-+ 0x4a, 0x7a, 0x4c, 0x41, 0x02, 0x0c, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xd0, 0xa0, 0x10, 0x50, 0x40,
-+ 0x48, 0xc8, 0xb0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x4a, 0x4c, 0x4b, 0x4a,
-+ 0x4a, 0x7b, 0x4a, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x08, 0x10, 0xe0, 0x38, 0x08,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x4e, 0x48, 0x4b, 0x48,
-+ 0x48, 0x78, 0x4d, 0x45, 0x09, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xec, 0x00, 0xf8, 0x10,
-+ 0xa0, 0x50, 0x48, 0x04, 0x14, 0xf0, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4b, 0x4a, 0x4a, 0x4b, 0x4a,
-+ 0x4a, 0x7b, 0x4c, 0x44, 0x09, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x50,
-+ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x01, 0x7f, 0x49, 0x49, 0x4f, 0x49, 0x4b,
-+ 0x4b, 0x7d, 0x45, 0x09, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x80, 0x38, 0x28, 0x28, 0xe8, 0x28, 0xa8,
-+ 0xa8, 0x78, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4b, 0x48, 0x4f, 0x48, 0x49,
-+ 0x4e, 0x79, 0x4e, 0x41, 0x06, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xe0, 0x20, 0xfc, 0x88, 0xc8,
-+ 0xf0, 0x60, 0xd0, 0x48, 0x44, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4c, 0x48, 0x49, 0x4a,
-+ 0x48, 0x7b, 0x4d, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x88, 0xf0, 0x90, 0xa0, 0x60,
-+ 0x90, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x49, 0x4b, 0x4c, 0x48, 0x49,
-+ 0x4f, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xa0, 0x60, 0x98,
-+ 0xf4, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x70, 0x57, 0x54, 0x57, 0x54, 0x57,
-+ 0x56, 0x76, 0x57, 0x4a, 0x08, 0x10, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0xc8, 0x28, 0xa8,
-+ 0xb0, 0x90, 0xb4, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x48, 0x49,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x3f, 0x04, 0x02, 0x3f, 0x21, 0x5f, 0x11,
-+ 0x11, 0x01, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x80, 0xfc, 0x08, 0xf0, 0x10,
-+ 0x30, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x01, 0x7f, 0x49, 0x49, 0x4f, 0x49, 0x49,
-+ 0x4b, 0x7b, 0x4d, 0x49, 0x01, 0x01, 0x00, 0x00,
-+ 0x50, 0x90, 0x10, 0x14, 0x34, 0xf8, 0x50, 0x90,
-+ 0x50, 0x70, 0x28, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x00, 0x02, 0x7a, 0x4b, 0x48, 0x4f, 0x48, 0x4b,
-+ 0x4a, 0x7a, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x77, 0x54, 0x57, 0x54, 0x57, 0x54,
-+ 0x54, 0x77, 0x54, 0x47, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0xa8, 0x30, 0xa0, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x49, 0x48, 0x4b, 0x4a, 0x4c,
-+ 0x4b, 0x7a, 0x4a, 0x42, 0x02, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x48, 0x4b, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x28, 0xa8, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x71, 0x52, 0x57, 0x58, 0x57, 0x54,
-+ 0x56, 0x75, 0x56, 0x45, 0x04, 0x05, 0x00, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0xf0, 0x08, 0xac, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x51, 0x57, 0x55, 0x55, 0x57,
-+ 0x51, 0x73, 0x53, 0x45, 0x09, 0x01, 0x00, 0x00,
-+ 0x08, 0x08, 0xe8, 0x28, 0xe8, 0x68, 0x68, 0xe8,
-+ 0x28, 0xa8, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x49, 0x49, 0x49, 0x48, 0x4b,
-+ 0x4a, 0x7c, 0x48, 0x40, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4a, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x45, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x54, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x4a, 0x4b, 0x4a,
-+ 0x4b, 0x78, 0x4f, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x88, 0xfc, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x00, 0x7b, 0x48, 0x49, 0x48, 0x4f, 0x49,
-+ 0x49, 0x7a, 0x4a, 0x44, 0x0b, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4b, 0x4a, 0x4b, 0x4b, 0x4a,
-+ 0x4b, 0x79, 0x4b, 0x44, 0x01, 0x0e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x20, 0xc0, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4f, 0x48, 0x49, 0x4e, 0x48,
-+ 0x4b, 0x7a, 0x4b, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x80, 0xf8, 0x90, 0xfc, 0xd8, 0xe0, 0x88, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x02, 0x7a, 0x4b, 0x48, 0x4f, 0x48, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x40, 0x00, 0x0f, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x80, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x50, 0x48, 0x7c, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x48, 0x4a, 0x4a, 0x4a, 0x4a,
-+ 0x4a, 0x7a, 0x4a, 0x43, 0x01, 0x0e, 0x00, 0x00,
-+ 0x18, 0xe0, 0x04, 0xfc, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0xfc, 0x98, 0x04, 0x00, 0x00,
-+ 0x00, 0x07, 0x74, 0x54, 0x54, 0x54, 0x54, 0x55,
-+ 0x55, 0x75, 0x55, 0x44, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0xf8, 0x68, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x52, 0x5f, 0x52, 0x5f,
-+ 0x52, 0x73, 0x54, 0x44, 0x08, 0x13, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0x20, 0x7c, 0xc8, 0x48, 0xa8,
-+ 0x28, 0x90, 0x90, 0xa8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x49, 0x48, 0x4f, 0x49, 0x49,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x02, 0x02, 0x7a, 0x4f, 0x4a, 0x4a, 0x4b, 0x4a,
-+ 0x4a, 0x7a, 0x4c, 0x44, 0x08, 0x13, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xbc, 0x40, 0x60, 0xbc, 0xd0,
-+ 0x90, 0xfc, 0xb0, 0xa8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x5f, 0x5a, 0x5a, 0x5a,
-+ 0x7f, 0x57, 0x46, 0x0a, 0x12, 0x02, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xd4, 0x98, 0x90,
-+ 0x90, 0x30, 0xa8, 0xa8, 0x44, 0x84, 0x00, 0x00,
-+ 0x00, 0x00, 0x77, 0x54, 0x54, 0x57, 0x54, 0x55,
-+ 0x55, 0x75, 0x55, 0x4a, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x90, 0xfc, 0x90, 0xd8,
-+ 0xf8, 0xf8, 0xfc, 0xbc, 0xd4, 0x90, 0x00, 0x00,
-+ 0x00, 0x04, 0x73, 0x52, 0x58, 0x54, 0x54, 0x50,
-+ 0x5e, 0x72, 0x53, 0x42, 0x05, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x49, 0x4b, 0x4a, 0x4f, 0x49,
-+ 0x49, 0x79, 0x49, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0xfc, 0x08, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1e, 0x12, 0x12, 0x1e, 0x00, 0x3f, 0x01,
-+ 0x7f, 0x00, 0x1e, 0x12, 0x1e, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0xf0, 0x00, 0xf8, 0x00,
-+ 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x90, 0x00, 0x00,
-+ 0x05, 0x16, 0x2c, 0x12, 0x3f, 0x20, 0x4f, 0x08,
-+ 0x0f, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x28, 0x70, 0xb0, 0x48, 0xfc, 0x08, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x05, 0x75, 0x55, 0x57, 0x5c, 0x51, 0x5f,
-+ 0x52, 0x73, 0x52, 0x43, 0x04, 0x08, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x20, 0xa4, 0xfc, 0x20, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x05, 0x05, 0x75, 0x5f, 0x55, 0x57, 0x55, 0x57,
-+ 0x55, 0x7f, 0x55, 0x45, 0x08, 0x11, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0x50, 0x50,
-+ 0x50, 0xd0, 0x50, 0x90, 0x90, 0x10, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x57, 0x54, 0x57, 0x54,
-+ 0x57, 0x72, 0x5f, 0x42, 0x02, 0x03, 0x00, 0x00,
-+ 0x00, 0x38, 0xe8, 0x28, 0xa8, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0x28, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x73, 0x56, 0x5a, 0x5f, 0x52, 0x52,
-+ 0x52, 0x77, 0x50, 0x45, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8, 0xa8,
-+ 0xa8, 0xfc, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x49, 0x4f, 0x49, 0x49, 0x49,
-+ 0x49, 0x79, 0x48, 0x45, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x20, 0xfc, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0xc0, 0x28, 0x14, 0xf4, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x4b, 0x4b, 0x4d, 0x49, 0x4b,
-+ 0x48, 0x7f, 0x4a, 0x42, 0x04, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0xb0, 0x78, 0x54, 0x10, 0xf8,
-+ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x00, 0x07, 0x70, 0x5f, 0x50, 0x57, 0x55, 0x57,
-+ 0x54, 0x77, 0x54, 0x47, 0x05, 0x09, 0x00, 0x00,
-+ 0x80, 0xf8, 0x88, 0xfc, 0x88, 0xf8, 0xa8, 0xb8,
-+ 0x88, 0xf8, 0x88, 0xb8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x02, 0x02, 0x7b, 0x4d, 0x48, 0x48, 0x4f, 0x49,
-+ 0x49, 0x79, 0x4a, 0x44, 0x1f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x88, 0x00, 0xfc, 0x50,
-+ 0x50, 0x58, 0xe4, 0x44, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x48, 0x4b, 0x4a, 0x4b,
-+ 0x48, 0x7f, 0x48, 0x41, 0x06, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x01, 0x07, 0x79, 0x48, 0x4f, 0x49, 0x49, 0x49,
-+ 0x4b, 0x7a, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x10, 0xfc, 0x50, 0x40, 0xfc, 0xf0, 0x10, 0xf0,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4c, 0x4a, 0x4a, 0x4c, 0x4b,
-+ 0x4a, 0x7f, 0x48, 0x47, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xa8, 0xa4, 0x94, 0x70, 0xf8,
-+ 0xa8, 0xfc, 0x00, 0xfc, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x4b,
-+ 0x4b, 0x7a, 0x4b, 0x47, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0xf0, 0xf8,
-+ 0xf8, 0x48, 0xf8, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x01, 0x06, 0x76, 0x55, 0x5f, 0x51, 0x52, 0x57,
-+ 0x59, 0x77, 0x55, 0x43, 0x03, 0x0c, 0x00, 0x00,
-+ 0x04, 0xf4, 0xb4, 0xb4, 0x74, 0x94, 0x94, 0xf4,
-+ 0x34, 0xd4, 0x54, 0x84, 0xc4, 0x0c, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4b, 0x4b, 0x4d, 0x49, 0x49,
-+ 0x49, 0x78, 0x4b, 0x42, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0xf8, 0x50, 0xf0, 0x50,
-+ 0xf0, 0xa0, 0xf0, 0x78, 0xc0, 0x7c, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4b, 0x4b, 0x4d, 0x49, 0x49,
-+ 0x49, 0x7f, 0x4a, 0x42, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0xf8, 0x50, 0xf0, 0x50,
-+ 0xf0, 0xfc, 0x48, 0x78, 0xc0, 0x7c, 0x00, 0x00,
-+ 0x01, 0x0f, 0x71, 0x55, 0x54, 0x5d, 0x55, 0x55,
-+ 0x5d, 0x75, 0x50, 0x45, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xd0, 0x14, 0xd8, 0x50, 0x54,
-+ 0xd4, 0x4c, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x17, 0x13, 0x6a, 0x2b, 0x13, 0x2a, 0x7b, 0x13,
-+ 0x21, 0x3f, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0xf8, 0xa8, 0xb0, 0xb0, 0xa8, 0x28, 0xb8, 0xa0,
-+ 0x00, 0xf8, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x7c, 0x4f, 0x43, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8,
-+ 0xa8, 0xc4, 0xfc, 0x20, 0xe0, 0x18, 0x00, 0x00,
-+ 0x1e, 0x12, 0x1e, 0x3f, 0x20, 0x2f, 0x22, 0x3f,
-+ 0x29, 0x2f, 0x2f, 0x29, 0x3f, 0x41, 0x00, 0x00,
-+ 0x78, 0x48, 0x78, 0xfc, 0x20, 0xa0, 0x20, 0xfc,
-+ 0x48, 0xa8, 0x30, 0xb0, 0x48, 0x84, 0x00, 0x00,
-+ 0x1e, 0x12, 0x1e, 0x7f, 0x02, 0x1f, 0x1f, 0x13,
-+ 0x1f, 0x0c, 0x7e, 0x12, 0x1e, 0x12, 0x00, 0x00,
-+ 0xf0, 0x90, 0xf0, 0xfc, 0x00, 0xf0, 0x90, 0xf0,
-+ 0xf0, 0x60, 0xfc, 0x90, 0xf0, 0x90, 0x00, 0x00,
-+ 0x00, 0x07, 0x74, 0x5f, 0x55, 0x57, 0x57, 0x54,
-+ 0x57, 0x77, 0x54, 0x47, 0x07, 0x04, 0x00, 0x00,
-+ 0x18, 0xf0, 0x88, 0xfc, 0x28, 0xf8, 0x88, 0x88,
-+ 0xfc, 0xc8, 0x28, 0xa8, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x79, 0x49, 0x49, 0x4b, 0x48, 0x4f,
-+ 0x4a, 0x7b, 0x4b, 0x42, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xf0, 0xf0, 0xf8, 0x10, 0xfc,
-+ 0xa8, 0xb8, 0xb8, 0xac, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x55, 0x55, 0x57, 0x5a, 0x52,
-+ 0x5f, 0x77, 0x56, 0x4a, 0x12, 0x02, 0x00, 0x00,
-+ 0x28, 0x28, 0xa8, 0x7c, 0x68, 0xa8, 0xbc, 0x28,
-+ 0xa8, 0x3c, 0xa8, 0xa8, 0x3c, 0x20, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x5f, 0x5a, 0x5f, 0x5a,
-+ 0x5f, 0x72, 0x5f, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x7c, 0xd4, 0xfc, 0xd4, 0xfc,
-+ 0xa8, 0x7c, 0x88, 0x7c, 0x28, 0x18, 0x00, 0x00,
-+ 0x01, 0x0f, 0x73, 0x57, 0x52, 0x5f, 0x57, 0x5f,
-+ 0x53, 0x7e, 0x53, 0x4f, 0x01, 0x07, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xa0, 0xf8, 0xa8, 0xe8, 0xbc,
-+ 0xac, 0x44, 0xf0, 0xfc, 0x10, 0xf8, 0x00, 0x00,
-+ 0x00, 0x07, 0x75, 0x55, 0x57, 0x55, 0x55, 0x57,
-+ 0x55, 0x75, 0x57, 0x46, 0x05, 0x09, 0x00, 0x00,
-+ 0x30, 0x50, 0x48, 0xfc, 0xac, 0xf4, 0xfc, 0x00,
-+ 0x78, 0x48, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x0f, 0x08, 0x7f, 0x5b, 0x5b, 0x5f, 0x5d, 0x5f,
-+ 0x5b, 0x7b, 0x4e, 0x0b, 0x10, 0x27, 0x00, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x58, 0x58, 0xf8, 0x28, 0xf8,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xa8, 0xf0, 0x00, 0x00,
-+ 0x03, 0x0e, 0x73, 0x5e, 0x53, 0x5c, 0x52, 0x5f,
-+ 0x55, 0x76, 0x57, 0x45, 0x06, 0x07, 0x00, 0x00,
-+ 0x80, 0x78, 0xa8, 0x28, 0xc8, 0x98, 0xf0, 0xfc,
-+ 0x28, 0xd8, 0xf8, 0x28, 0xd8, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x22, 0x22, 0x24, 0x2c, 0x34,
-+ 0x24, 0x24, 0x24, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x88, 0x98, 0xa8, 0xc8, 0x88,
-+ 0x98, 0x98, 0x78, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x22, 0x2c, 0x37, 0x20, 0x2f,
-+ 0x21, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x88, 0x68, 0xd8, 0x08, 0xe8,
-+ 0x28, 0x28, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x29, 0x21, 0x2f, 0x21,
-+ 0x21, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x98, 0x78, 0x08, 0xe8, 0x08,
-+ 0xe8, 0x28, 0x28, 0xc8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3f, 0x22, 0x27, 0x26, 0x2b,
-+ 0x32, 0x23, 0x22, 0x22, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xe8, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x68, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x2f, 0x21, 0x2f, 0x22, 0x3f,
-+ 0x27, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xc8, 0x48, 0xf8,
-+ 0xc8, 0x48, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x27, 0x21, 0x2f, 0x24, 0x22,
-+ 0x2f, 0x21, 0x27, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xc8, 0x08, 0xe8, 0x48, 0x88,
-+ 0xe8, 0x08, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x37, 0x22, 0x3f, 0x24, 0x2f,
-+ 0x34, 0x25, 0x24, 0x23, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xd8, 0x88, 0xf8, 0x48, 0xe8,
-+ 0x58, 0x88, 0x28, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x2e, 0x2a,
-+ 0x2e, 0x23, 0x3c, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xa8, 0xf8, 0x88, 0xa8, 0xa8,
-+ 0x58, 0x78, 0xb8, 0x18, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x27, 0x22, 0x2f, 0x27, 0x27,
-+ 0x27, 0x24, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xe8, 0xc8, 0xc8,
-+ 0xe8, 0x48, 0xe8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x27, 0x24, 0x2f, 0x28, 0x2f, 0x2f,
-+ 0x28, 0x2f, 0x26, 0x38, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0x48, 0xe8, 0x28, 0xe8, 0xe8,
-+ 0x28, 0xe8, 0x68, 0x18, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x2f, 0x27, 0x25, 0x27, 0x25,
-+ 0x27, 0x2f, 0x20, 0x2f, 0x22, 0x3f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0xc8, 0x48, 0xc8, 0x48,
-+ 0xe8, 0xe8, 0x48, 0xe8, 0x48, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x27, 0x24, 0x27, 0x21, 0x3f, 0x2f,
-+ 0x2b, 0x2a, 0x2b, 0x2f, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0x48, 0xc8, 0x08, 0xf8, 0xe8,
-+ 0xa8, 0xa8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x09, 0x15, 0x25, 0x7f, 0x00,
-+ 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x50, 0x90, 0xfc, 0x00,
-+ 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2f, 0x2a, 0x2f, 0x3f, 0x27, 0x24,
-+ 0x27, 0x3e, 0x27, 0x2c, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xc8, 0x48,
-+ 0xd8, 0xa8, 0x48, 0x38, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x10, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10,
-+ 0x14, 0x19, 0x61, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0xa0,
-+ 0xa0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x13, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10,
-+ 0x14, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x60, 0x50, 0x48,
-+ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x12, 0x7e, 0x12, 0x12, 0x12,
-+ 0x16, 0x1a, 0x62, 0x03, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x11, 0x7e, 0x12, 0x14, 0x10,
-+ 0x14, 0x18, 0x61, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x44, 0x48, 0x50, 0xc0,
-+ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11,
-+ 0x15, 0x1a, 0x62, 0x04, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x12, 0x7e, 0x12, 0x12, 0x12,
-+ 0x16, 0x1a, 0x62, 0x02, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x13, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x11,
-+ 0x16, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x40, 0x60, 0xd0, 0x48,
-+ 0x44, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x17, 0x7d, 0x11, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x05, 0x3d, 0x05, 0x0d,
-+ 0x35, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x48, 0x50, 0x60, 0x48,
-+ 0x38, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x08, 0x0b, 0x18, 0x28, 0x49, 0x09,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x5c, 0xe0, 0x20, 0x10, 0x14, 0x0c,
-+ 0x04, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x13,
-+ 0x16, 0x1a, 0x64, 0x04, 0x09, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x11, 0x7d, 0x13, 0x15, 0x11,
-+ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0x10, 0xfc, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x13, 0x7e, 0x17, 0x12, 0x12,
-+ 0x17, 0x1a, 0x62, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0x48,
-+ 0xc8, 0x70, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x7c, 0x11, 0x10, 0x10,
-+ 0x14, 0x18, 0x61, 0x00, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68,
-+ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x13,
-+ 0x16, 0x1a, 0x62, 0x02, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4,
-+ 0x44, 0x48, 0x30, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0x11, 0x12, 0x7c, 0x10, 0x11, 0x13,
-+ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x80, 0xf8, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x13, 0x10, 0x10, 0x7c, 0x13, 0x10, 0x10,
-+ 0x17, 0x18, 0x60, 0x00, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x50, 0x88, 0xfc, 0x44, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x10, 0x10, 0x13, 0x7c, 0x10, 0x10, 0x10,
-+ 0x17, 0x18, 0x61, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x08, 0x88, 0x90, 0xfc, 0x90, 0x90, 0x90, 0x90,
-+ 0xfc, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x10, 0x7c, 0x13, 0x10, 0x13,
-+ 0x14, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc,
-+ 0x40, 0x70, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x12,
-+ 0x10, 0x1f, 0x60, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x50, 0x88, 0xfc, 0x84, 0x80, 0xf8, 0x40,
-+ 0x40, 0xfc, 0xc0, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x10, 0x11, 0x16, 0x7f, 0x12, 0x12, 0x13,
-+ 0x16, 0x1a, 0x63, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x10, 0x7f, 0x12, 0x12, 0x13,
-+ 0x16, 0x1a, 0x63, 0x02, 0x02, 0x02, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x11, 0x7d, 0x12, 0x10, 0x10,
-+ 0x17, 0x19, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x48, 0x44, 0x44, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x11, 0x7c, 0x10, 0x13, 0x10,
-+ 0x17, 0x19, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x44, 0xa4, 0x18, 0x90, 0xe0, 0x90, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1e, 0x10, 0x1e, 0x12, 0x02,
-+ 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x90, 0x80,
-+ 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x17, 0x11, 0x7c, 0x10, 0x10, 0x11,
-+ 0x15, 0x1b, 0x65, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xa0, 0xa0, 0xa4, 0x28,
-+ 0x30, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x11, 0x7d, 0x11, 0x12, 0x14,
-+ 0x10, 0x1f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x98, 0x64, 0x44,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7e, 0x13, 0x12, 0x12,
-+ 0x13, 0x1e, 0x64, 0x04, 0x08, 0x11, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12,
-+ 0x14, 0x1b, 0x60, 0x00, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x48,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x13, 0x12,
-+ 0x16, 0x1a, 0x62, 0x02, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x70, 0x50, 0x50, 0xf8, 0x08,
-+ 0xe8, 0xa8, 0xa8, 0xe8, 0x88, 0x18, 0x00, 0x00,
-+ 0x01, 0x11, 0x13, 0x15, 0x7d, 0x11, 0x11, 0x11,
-+ 0x17, 0x1a, 0x63, 0x05, 0x09, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0x00, 0xf8, 0x48, 0x48, 0xb0, 0x00, 0x00,
-+ 0x08, 0x09, 0x11, 0x11, 0x30, 0x57, 0x10, 0x13,
-+ 0x14, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x40, 0xfc, 0xe0, 0x58,
-+ 0x44, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x13,
-+ 0x16, 0x1b, 0x62, 0x05, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x54, 0x18, 0x00, 0x00,
-+ 0x08, 0x0c, 0x2a, 0x2a, 0x59, 0x14, 0x22, 0x3f,
-+ 0x21, 0x5f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x30, 0xa8, 0xa8, 0x60, 0x50, 0x88, 0xfc,
-+ 0x08, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x4a, 0x25, 0x21, 0x0f, 0x12, 0x23,
-+ 0x21, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x68, 0xfc, 0x68, 0xfc,
-+ 0x30, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x36, 0x22, 0x36, 0x22, 0x23, 0x3e, 0x2b,
-+ 0x08, 0x3e, 0x08, 0x08, 0x0e, 0x73, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x94, 0x14, 0x0c, 0xf8,
-+ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x15, 0x7d, 0x15, 0x17, 0x15,
-+ 0x15, 0x1d, 0x67, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7f, 0x10, 0x17, 0x10,
-+ 0x14, 0x1c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0x00, 0xfc, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x7f,
-+ 0x0a, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10,
-+ 0x10, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e, 0x08, 0x3e,
-+ 0x0c, 0x71, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0x28, 0x30, 0x20,
-+ 0x60, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x2f, 0x29, 0x2f, 0x79, 0x2f, 0x28, 0x2b,
-+ 0x2a, 0x3b, 0x6a, 0x0b, 0x0a, 0x08, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x08, 0xe8,
-+ 0x28, 0xe8, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x17, 0x7c, 0x14, 0x17, 0x14,
-+ 0x16, 0x1e, 0x6b, 0x08, 0x1f, 0x00, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xfc, 0xb8, 0xc8, 0x78, 0xa0,
-+ 0xa8, 0xa8, 0xb8, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x13,
-+ 0x16, 0x1b, 0x60, 0x0f, 0x01, 0x00, 0x00, 0x00,
-+ 0x60, 0x10, 0xfc, 0xa0, 0xf8, 0xb8, 0x38, 0xf8,
-+ 0x08, 0xf8, 0x10, 0xfc, 0x10, 0xb0, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12,
-+ 0x17, 0x18, 0x6f, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8,
-+ 0x58, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x13, 0x7e, 0x13, 0x10, 0x13,
-+ 0x17, 0x18, 0x63, 0x0d, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0x58,
-+ 0x58, 0xc8, 0x28, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x11, 0x7d, 0x12, 0x17, 0x10,
-+ 0x17, 0x1a, 0x62, 0x02, 0x03, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0xd8, 0x64, 0xfc, 0x00,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x17, 0x11, 0x10, 0x7d, 0x10, 0x17, 0x10,
-+ 0x15, 0x1f, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0xfc, 0x50, 0x48, 0xf8, 0x50, 0xfc, 0x50,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x29, 0x3a, 0x25, 0x25, 0x39,
-+ 0x21, 0x21, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x20, 0xf8, 0xf8, 0x08, 0xf8,
-+ 0xf8, 0x18, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x10, 0x14, 0x65, 0x1a, 0x14, 0x7c,
-+ 0x09, 0x11, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0xfc, 0x90, 0xf8, 0xf8, 0x90,
-+ 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2f, 0x2e, 0x2f, 0x2f, 0x28, 0x2f,
-+ 0x2f, 0x49, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x98, 0x94, 0xfc, 0x90, 0xb0, 0xa8,
-+ 0xc8, 0x84, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0e, 0x3f, 0x2d, 0x52, 0x2c, 0x1e, 0x73,
-+ 0x1e, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x50, 0x20, 0x50, 0x88,
-+ 0x04, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x13, 0x10, 0x17, 0x7c, 0x13, 0x10, 0x17,
-+ 0x16, 0x1a, 0x67, 0x02, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xa8, 0x94, 0xf8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x12, 0x13, 0x12,
-+ 0x16, 0x1a, 0x62, 0x04, 0x04, 0x0b, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0xfc, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3e, 0x2a,
-+ 0x3e, 0x2b, 0x3f, 0x1f, 0x01, 0x7f, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0xa8,
-+ 0xf8, 0xa8, 0xf8, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7e, 0x12, 0x12, 0x12,
-+ 0x17, 0x1a, 0x65, 0x05, 0x08, 0x13, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0xa8, 0xf8, 0xf8, 0x20, 0xf8,
-+ 0xfc, 0xe8, 0x74, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x11, 0x7f, 0x10, 0x17, 0x14,
-+ 0x17, 0x1b, 0x61, 0x07, 0x00, 0x03, 0x00, 0x00,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x48,
-+ 0x58, 0x58, 0xf0, 0xfc, 0x90, 0xf8, 0x00, 0x00,
-+ 0x00, 0x17, 0x13, 0x12, 0x7f, 0x10, 0x17, 0x13,
-+ 0x10, 0x1f, 0x61, 0x0f, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xfc, 0xf8,
-+ 0xa0, 0xfc, 0x48, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x3e, 0x14, 0x7f, 0x3e, 0x22, 0x3e, 0x3e,
-+ 0x26, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0xf8, 0xf8, 0x08, 0xf8, 0xf0, 0xb8, 0x9c,
-+ 0x7c, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x24, 0x24, 0x24, 0x3c, 0x27, 0x04, 0x04,
-+ 0x7c, 0x24, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x22, 0x5e,
-+ 0x10, 0x1e, 0x12, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x88, 0xf0,
-+ 0x10, 0xf0, 0x90, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x00, 0x3f, 0x20, 0x5f,
-+ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x08, 0xf0,
-+ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x11, 0x7d, 0x12, 0x14, 0x13,
-+ 0x16, 0x1b, 0x62, 0x03, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x50, 0x70, 0xc0, 0x3c, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x3f, 0x20, 0x5f, 0x02,
-+ 0x1e, 0x10, 0x1e, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0xfc, 0x08, 0xf0, 0x80,
-+ 0xf0, 0x10, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x00, 0x7f, 0x0f, 0x01,
-+ 0x0f, 0x7f, 0x1e, 0x13, 0x1e, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0xe8, 0x00,
-+ 0xe0, 0xfc, 0x10, 0xfc, 0x90, 0x30, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x07, 0x04, 0x0c, 0x14, 0x22,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x22, 0x22, 0x17, 0x14, 0x08, 0x18, 0x24,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x03, 0x0c, 0x7f, 0x12, 0x14, 0x0f, 0x08, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x3c, 0x03, 0x7c, 0x00, 0x00,
-+ 0xc0, 0x80, 0xf0, 0x90, 0x50, 0xe0, 0x20, 0xe0,
-+ 0xe0, 0x20, 0xe0, 0x40, 0x80, 0x78, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x7f, 0x01, 0x03,
-+ 0x0c, 0x32, 0x01, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x00, 0xf0,
-+ 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x01,
-+ 0x06, 0x1a, 0x01, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0xf0,
-+ 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e, 0x08, 0x7e,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0x9c,
-+ 0x24, 0x68, 0x98, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x7f,
-+ 0x01, 0x03, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xfc,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x03,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x02, 0x04, 0x19, 0x61,
-+ 0x01, 0x1f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x04, 0x1f, 0x60, 0x1f,
-+ 0x02, 0x03, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0xf0, 0x0c, 0xf0,
-+ 0x00, 0xe0, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x09, 0x09, 0x09, 0x15, 0x15,
-+ 0x23, 0x02, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x20, 0x50, 0x48,
-+ 0x88, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x04, 0x7f, 0x00,
-+ 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x20, 0x40, 0xfc, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x12, 0x12, 0x24, 0x09,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x50, 0x48, 0x48, 0xc0,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x03, 0x0c, 0x70, 0x1f, 0x12, 0x12, 0x14,
-+ 0x11, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x90, 0xb0, 0x70,
-+ 0x10, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x05, 0x19, 0x6f, 0x01,
-+ 0x1f, 0x01, 0x0f, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec, 0x00,
-+ 0xf0, 0x00, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x22, 0x0e, 0x01, 0x03,
-+ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x30, 0xe0, 0x10, 0x08, 0x48, 0x40, 0xa0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x24, 0x24, 0x3c, 0x05, 0x7c, 0x24, 0x24, 0x45,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x00,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x09, 0x1f, 0x61, 0x1f, 0x02,
-+ 0x0f, 0x74, 0x07, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0xf0, 0x4c, 0xf8, 0x40,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x07, 0x10, 0x2f, 0x42, 0x1f, 0x12, 0x14, 0x1f,
-+ 0x10, 0x1f, 0x01, 0x7f, 0x0c, 0x70, 0x00, 0x00,
-+ 0xe0, 0x20, 0xf0, 0x8c, 0xf0, 0xb0, 0x70, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xfc, 0x60, 0x1c, 0x00, 0x00,
-+ 0x02, 0x04, 0x1f, 0x13, 0x15, 0x13, 0x1f, 0x13,
-+ 0x15, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x90, 0x50, 0x90, 0xf0, 0x90,
-+ 0x50, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x24, 0x24, 0x3f, 0x25, 0x04, 0x7f, 0x25, 0x24,
-+ 0x44, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0xfc, 0x10, 0x90,
-+ 0x30, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x0c, 0x7f, 0x13, 0x12,
-+ 0x13, 0x17, 0x15, 0x17, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x30, 0xfc, 0xe0, 0x20,
-+ 0xe0, 0x70, 0x50, 0x70, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3e, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x13, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x04, 0x7c,
-+ 0x15, 0x15, 0x14, 0x24, 0x25, 0x46, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90,
-+ 0x10, 0xa0, 0x60, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x17, 0x30, 0x50, 0x17,
-+ 0x11, 0x11, 0x13, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xfc,
-+ 0x10, 0x10, 0xe0, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x12, 0x12, 0x31, 0x50, 0x17,
-+ 0x11, 0x11, 0x13, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xf8, 0x80, 0xfc,
-+ 0x10, 0x10, 0xe0, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x13, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3e, 0x24, 0x06, 0x0b, 0x11, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0xa8, 0xfc, 0x88,
-+ 0xc8, 0xa8, 0xa8, 0xfc, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3d, 0x24, 0x06, 0x08, 0x11, 0x26, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0xa0,
-+ 0xfc, 0x24, 0x78, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x02,
-+ 0x7f, 0x04, 0x0f, 0x11, 0x06, 0x38, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00,
-+ 0xfc, 0x40, 0x40, 0xc0, 0x20, 0x10, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0b, 0x11, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x11, 0x7d, 0x27, 0x25, 0x25,
-+ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x80, 0x8c, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc,
-+ 0x10, 0x10, 0x10, 0x10, 0x7c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x12, 0x11, 0x7d, 0x24, 0x24, 0x25,
-+ 0x7a, 0x48, 0x0d, 0x15, 0x22, 0x44, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x10, 0x7c, 0x27, 0x24, 0x24,
-+ 0x78, 0x4b, 0x0c, 0x14, 0x20, 0x41, 0x00, 0x00,
-+ 0x60, 0xa8, 0xa4, 0xa4, 0xa0, 0xfc, 0xa8, 0xa8,
-+ 0xd8, 0x90, 0x94, 0xac, 0xcc, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x24, 0x25, 0x25,
-+ 0x75, 0x49, 0x0d, 0x15, 0x25, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x49, 0x29, 0x22, 0x0c, 0x10, 0x20, 0x27,
-+ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x54, 0xd4, 0x60, 0xc0, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x12, 0x7f, 0x2a, 0x2a, 0x2f,
-+ 0x2a, 0x72, 0x12, 0x1c, 0x27, 0x48, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0xa4, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x13,
-+ 0x3c, 0x04, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x05, 0x06, 0x0a, 0x10, 0x23, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x20, 0xfc, 0x24, 0x44, 0x84, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x15, 0x7e, 0x2e, 0x2d, 0x2d,
-+ 0x75, 0x55, 0x1f, 0x2c, 0x24, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x11, 0x7e, 0x24, 0x25, 0x24,
-+ 0x78, 0x08, 0x0c, 0x10, 0x27, 0x40, 0x00, 0x00,
-+ 0x08, 0x30, 0xc8, 0x24, 0x24, 0x18, 0xe0, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x11, 0x7e, 0x24, 0x24, 0x25,
-+ 0x6b, 0x18, 0x0c, 0x14, 0x21, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x04, 0x88, 0xb8, 0xe8, 0x68,
-+ 0x68, 0xf0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x12, 0x7b, 0x2a, 0x2a, 0x2b,
-+ 0x6a, 0x12, 0x13, 0x1c, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12, 0x7f,
-+ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c,
-+ 0x00, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3a, 0x24, 0x07, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x50, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x08,
-+ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20,
-+ 0x00, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x7f, 0x2a, 0x2a, 0x2a,
-+ 0x6a, 0x12, 0x1a, 0x14, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x00, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x24,
-+ 0x6b, 0x1a, 0x0e, 0x12, 0x2f, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x68, 0x98, 0x08, 0xf8, 0x00,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x13, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0b, 0x10, 0x20, 0x00, 0x00,
-+ 0x50, 0xfc, 0x50, 0xf8, 0x50, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xfc, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x10, 0x7f, 0x2a, 0x2a, 0x2b,
-+ 0x29, 0x72, 0x11, 0x1a, 0x20, 0x43, 0x00, 0x00,
-+ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x20, 0x20, 0xb8,
-+ 0x98, 0xa8, 0x98, 0xa8, 0x88, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x7b, 0x2a, 0x2a, 0x2b,
-+ 0x28, 0x73, 0x11, 0x18, 0x20, 0x47, 0x00, 0x00,
-+ 0xc0, 0x58, 0x48, 0x48, 0x58, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x10, 0xa0, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x75, 0x08, 0x0d, 0x16, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0x20, 0xf8, 0x20,
-+ 0xfc, 0x54, 0x2c, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x10, 0x7c, 0x27, 0x24, 0x24,
-+ 0x78, 0x08, 0x0d, 0x16, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xb8, 0xa0, 0xfc, 0x80, 0xf8,
-+ 0x80, 0xfc, 0x54, 0xac, 0xac, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x7a, 0x2a, 0x2a, 0x2b,
-+ 0x2b, 0x73, 0x13, 0x1a, 0x23, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x13, 0x7a, 0x2d, 0x29, 0x29,
-+ 0x28, 0x73, 0x1a, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xf8, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x17, 0x79, 0x2f, 0x2d, 0x2d,
-+ 0x2f, 0x73, 0x13, 0x1d, 0x29, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xd0, 0x3c, 0xe8, 0x68, 0x68,
-+ 0xd8, 0x98, 0x50, 0x58, 0x28, 0x44, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x13, 0x7a, 0x2a, 0x2b, 0x28,
-+ 0x29, 0x70, 0x17, 0x19, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x50, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x13, 0x7a, 0x2b, 0x2a, 0x2a,
-+ 0x2a, 0x72, 0x12, 0x1a, 0x22, 0x43, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x08, 0xe8,
-+ 0xa8, 0xe8, 0xa8, 0xe8, 0xa8, 0x78, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x13, 0x7a, 0x2b, 0x2a, 0x2a,
-+ 0x2b, 0x72, 0x12, 0x1b, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x48, 0x48,
-+ 0xf8, 0xe8, 0xd8, 0x58, 0x48, 0x58, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x13, 0x7c, 0x25, 0x26, 0x24,
-+ 0x7b, 0x0a, 0x0e, 0x12, 0x22, 0x42, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xf8, 0xa0, 0xf0, 0xa8, 0xe4,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x98, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x13, 0x7c, 0x2b, 0x2a, 0x2b,
-+ 0x2a, 0x73, 0x18, 0x17, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x21, 0x3e, 0x32, 0x5e,
-+ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0x50, 0xfc, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x01, 0x7d, 0x55, 0x55, 0x7f, 0x56, 0x7e, 0x12,
-+ 0x7f, 0x15, 0x15, 0x26, 0x26, 0x4c, 0x00, 0x00,
-+ 0x00, 0x7c, 0x54, 0x54, 0xfc, 0xd4, 0xfc, 0x90,
-+ 0xfc, 0x14, 0x94, 0xa4, 0x24, 0x4c, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x15, 0x7f, 0x2d, 0x2f, 0x29,
-+ 0x2f, 0x71, 0x12, 0x1a, 0x24, 0x48, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0xfc, 0x54, 0xd4, 0x14,
-+ 0xd4, 0x78, 0x48, 0x48, 0x54, 0xe4, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x13, 0x7d, 0x26, 0x24, 0x27,
-+ 0x24, 0x78, 0x08, 0x14, 0x20, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf8, 0x50, 0x60, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x27,
-+ 0x7a, 0x0b, 0x0f, 0x17, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0xf0, 0xf8,
-+ 0x48, 0xf8, 0xf8, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x11, 0x7f, 0x2d, 0x2d, 0x2f,
-+ 0x2b, 0x73, 0x15, 0x19, 0x29, 0x41, 0x00, 0x00,
-+ 0x00, 0x3c, 0xd4, 0x14, 0xec, 0x7c, 0x64, 0xfc,
-+ 0x24, 0xbc, 0x64, 0x3c, 0x18, 0x64, 0x00, 0x00,
-+ 0x10, 0x17, 0x13, 0x12, 0x7b, 0x28, 0x2b, 0x29,
-+ 0x28, 0x77, 0x11, 0x1f, 0x29, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0,
-+ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x12, 0x12, 0x13, 0x15, 0x78, 0x2f, 0x2a, 0x2e,
-+ 0x2a, 0x76, 0x12, 0x1e, 0x23, 0x4e, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xe8, 0x68, 0x20, 0xfc, 0xa0, 0xe8,
-+ 0xa8, 0xd0, 0xd4, 0xac, 0xcc, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x13, 0x7b, 0x2d, 0x29, 0x29,
-+ 0x2f, 0x73, 0x13, 0x1d, 0x29, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x50, 0x78, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
-+ 0x0f, 0x71, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0x80, 0x00, 0x30, 0xc0,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x20,
-+ 0x40, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x78, 0x08, 0x08, 0xe8, 0x70,
-+ 0x80, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x1e, 0x11, 0x11, 0x2f, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x30, 0xe0, 0x10, 0x08, 0x08, 0xe0, 0x40, 0x80,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x20, 0x4f, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x08, 0xe0, 0x40,
-+ 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x06, 0x19, 0x6f,
-+ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0xe0,
-+ 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7c, 0x07, 0x08, 0x0a, 0x11, 0x10, 0x14,
-+ 0x18, 0x70, 0x11, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68,
-+ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x00, 0x3f, 0x22, 0x3f, 0x00,
-+ 0x3e, 0x04, 0x0e, 0x78, 0x09, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0,
-+ 0x50, 0x70, 0xb4, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x0a, 0x34, 0x0a, 0x3f, 0x01,
-+ 0x1f, 0x00, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x28, 0xd0, 0x28, 0xfc, 0x04,
-+ 0xf0, 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x37, 0x2d, 0x2d, 0x3f, 0x3f, 0x2d,
-+ 0x2d, 0x2d, 0x7d, 0x16, 0x14, 0x24, 0x00, 0x00,
-+ 0x04, 0x78, 0x58, 0x54, 0x94, 0x00, 0x7c, 0x08,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x1a, 0x11, 0x1e, 0x12, 0x1d, 0x12, 0x3f,
-+ 0x20, 0x4f, 0x00, 0x3f, 0x01, 0x03, 0x00, 0x00,
-+ 0x80, 0xf0, 0x10, 0xf0, 0x90, 0x70, 0x90, 0xfc,
-+ 0x08, 0xe0, 0xc0, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x02, 0x03, 0x0c, 0x77,
-+ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x80, 0x80, 0x60, 0xdc,
-+ 0x80, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x04, 0x0b, 0x0b, 0x15, 0x10, 0x1f,
-+ 0x70, 0x13, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x50, 0x40, 0xfc,
-+ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x3f, 0x20, 0x20,
-+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x08,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x22, 0x42, 0x02, 0x02,
-+ 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x04, 0x08, 0x00, 0x10, 0x60,
-+ 0x80, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x3f, 0x51, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x04, 0xf8, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5f, 0x10, 0x17, 0x10, 0x1f,
-+ 0x12, 0x12, 0x12, 0x22, 0x23, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x80, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x47, 0x18, 0x7f, 0x11, 0x11,
-+ 0x1f, 0x12, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xc0, 0x80, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x90, 0xa0, 0x94, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x3e, 0x40, 0x7f, 0x14,
-+ 0x14, 0x14, 0x14, 0x25, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x44, 0x78, 0x40, 0xf8, 0x88,
-+ 0x50, 0x30, 0x70, 0x88, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x0f, 0x18,
-+ 0x2f, 0x48, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x40, 0x80, 0xf8, 0x80,
-+ 0xf0, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x00, 0x7f, 0x11, 0x19, 0x27, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x64, 0x25, 0x3c, 0x27,
-+ 0x04, 0x7c, 0x15, 0x16, 0x24, 0x44, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x40, 0xf8, 0x40, 0xfc,
-+ 0xe0, 0xd0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x65, 0x24, 0x3d, 0x24,
-+ 0x07, 0x7c, 0x15, 0x15, 0x25, 0x45, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x40, 0xf0, 0x90,
-+ 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x3f, 0x27, 0x45, 0x7f, 0x09, 0x0f, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe8, 0x20, 0xfc, 0x40, 0xc0, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x25, 0x64, 0x27, 0x3c, 0x25, 0x07,
-+ 0x7e, 0x15, 0x14, 0x14, 0x24, 0x47, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x10, 0xfc, 0x10, 0xf0, 0xfc,
-+ 0x08, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x5f, 0x04, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x01, 0x7f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf0, 0x40, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x00, 0xfc, 0xc0, 0x38, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5e, 0x0a, 0x16, 0x0b, 0x12,
-+ 0x0c, 0x77, 0x01, 0x06, 0x01, 0x0e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x50, 0xb0, 0x50, 0x80,
-+ 0xe0, 0x5c, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x5c, 0x10, 0x1e, 0x10, 0x1f,
-+ 0x08, 0x1f, 0x65, 0x12, 0x12, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x48, 0xa8, 0xa8, 0x30, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5f, 0x12, 0x1f, 0x7f, 0x0f,
-+ 0x08, 0x0f, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x90, 0xf0, 0xfc, 0xe0,
-+ 0x20, 0xe0, 0x88, 0x50, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x3e, 0x49, 0x3f, 0x0e, 0x38, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x08, 0x0f, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x20, 0xfc, 0xa8, 0xf8, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0x20, 0xe0, 0x38, 0x00, 0x00,
-+ 0x01, 0x3f, 0x3e, 0x48, 0x3f, 0x0e, 0x39, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x08, 0x0f, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0xf8, 0xb0, 0xa8, 0x68, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0x20, 0xe0, 0x38, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x22, 0x3e,
-+ 0x14, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x34, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x24, 0x24, 0x24, 0x3d, 0x26, 0x04, 0x7c,
-+ 0x17, 0x15, 0x14, 0x24, 0x44, 0x04, 0x00, 0x00,
-+ 0x40, 0x78, 0x88, 0xd0, 0x30, 0xa0, 0xd0, 0x90,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x3f, 0x00, 0x7f, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf8, 0x48, 0xfc, 0x40, 0xc0, 0x00, 0x00,
-+ 0x0a, 0x4a, 0x2a, 0x2b, 0x7f, 0x11, 0x0a, 0x3f,
-+ 0x04, 0x3f, 0x04, 0x04, 0x07, 0x78, 0x00, 0x00,
-+ 0x08, 0x88, 0x88, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x49, 0x09,
-+ 0x11, 0x11, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x20, 0x10,
-+ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x12, 0x12, 0x3f, 0x12, 0x1e, 0x12, 0x1e, 0x13,
-+ 0x7f, 0x2c, 0x2d, 0x33, 0x20, 0x1f, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x2c,
-+ 0x68, 0x30, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x02, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x14, 0x12, 0x12, 0x7e, 0x15, 0x14, 0x14,
-+ 0x14, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0x50, 0x90, 0x20, 0x28, 0x48,
-+ 0x90, 0x10, 0x20, 0x44, 0x84, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f,
-+ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xfc, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x14, 0x14, 0x14,
-+ 0x17, 0x14, 0x14, 0x24, 0x27, 0x5c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0x44,
-+ 0xc8, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x14, 0x17,
-+ 0x14, 0x14, 0x15, 0x24, 0x27, 0x44, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x80, 0x88, 0xf8,
-+ 0x88, 0x88, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x14, 0x12, 0x12,
-+ 0x1f, 0x11, 0x12, 0x24, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x90, 0x90, 0xa0,
-+ 0xfc, 0xc0, 0xa0, 0x90, 0x8c, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x14, 0x27, 0x23, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x12, 0x15, 0x1a,
-+ 0x13, 0x14, 0x1c, 0x24, 0x24, 0x47, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x11, 0x17, 0x11,
-+ 0x11, 0x1f, 0x11, 0x22, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x10, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x13, 0x10, 0x1f, 0x10,
-+ 0x17, 0x11, 0x13, 0x3e, 0x22, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0xe0, 0x40, 0xf8, 0x80,
-+ 0xfc, 0x08, 0x10, 0xfc, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x16, 0x16, 0x17, 0x15,
-+ 0x17, 0x17, 0x1d, 0x27, 0x21, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0xb0, 0xb0, 0xf0, 0x50,
-+ 0xf0, 0xf8, 0x48, 0xc8, 0x68, 0xf0, 0x00, 0x00,
-+ 0x01, 0x01, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3f,
-+ 0x21, 0x22, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x54, 0x54, 0x54, 0x54, 0x54,
-+ 0x54, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x84, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x7f,
-+ 0x02, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x55, 0x55, 0x56, 0x55, 0x54,
-+ 0x54, 0x54, 0x7c, 0x45, 0x41, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf0, 0x20,
-+ 0x40, 0x80, 0x80, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x00, 0x3f, 0x04, 0x04, 0x07,
-+ 0x04, 0x0a, 0x09, 0x10, 0x23, 0x4c, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xc0, 0x40, 0x40, 0xf0,
-+ 0x10, 0x20, 0x40, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x21, 0x02, 0x04, 0x18,
-+ 0x67, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x40, 0x30,
-+ 0xcc, 0x00, 0xc0, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x07, 0x04, 0x18, 0x6f, 0x02, 0x02, 0x0c, 0x30,
-+ 0x01, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0xc0, 0x40, 0x30, 0xec, 0x20, 0x20, 0x20, 0xc0,
-+ 0x00, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x7f, 0x02, 0x3f,
-+ 0x04, 0x04, 0x0f, 0x08, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xf8,
-+ 0x40, 0x40, 0x80, 0xe0, 0x10, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x54, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x46, 0x43, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x10, 0x50, 0x94, 0x0c, 0xec, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x55, 0x55, 0x56, 0x54, 0x57,
-+ 0x54, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x28, 0x20, 0xfc,
-+ 0x20, 0x20, 0x10, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x54, 0x57, 0x54, 0x54, 0x54,
-+ 0x57, 0x7c, 0x45, 0x41, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x90, 0x98, 0xe4, 0x90, 0x90, 0x90,
-+ 0xfc, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x54, 0x54, 0x54, 0x54, 0x55,
-+ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x21, 0x02, 0x04, 0x1f,
-+ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x40, 0xf0,
-+ 0x0c, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x54, 0x54, 0x57, 0x54, 0x54,
-+ 0x57, 0x55, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x20, 0x06, 0x38, 0x08, 0x7f,
-+ 0x08, 0x0e, 0x78, 0x08, 0x09, 0x18, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x08, 0x50, 0x48, 0x40, 0xfc,
-+ 0x48, 0x48, 0x30, 0x74, 0x8c, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x55, 0x55, 0x55, 0x56, 0x56,
-+ 0x54, 0x54, 0x7c, 0x45, 0x42, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x50, 0x50, 0xe8, 0x44,
-+ 0x44, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x57, 0x55, 0x7c, 0x44, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x56, 0x54, 0x55, 0x55, 0x55,
-+ 0x55, 0x7d, 0x45, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x01, 0x0f, 0x08, 0x0f, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xe0, 0x20, 0xe0, 0xe0,
-+ 0x00, 0xfc, 0xf8, 0x88, 0x48, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x56, 0x54, 0x54, 0x54, 0x55,
-+ 0x57, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00,
-+ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0xa0, 0x10,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x00, 0x3f, 0x09, 0x7f, 0x09,
-+ 0x09, 0x3f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x46, 0x43, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x00, 0x3f, 0x24, 0x22, 0x3f,
-+ 0x21, 0x29, 0x29, 0x2f, 0x28, 0x20, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x48, 0x88, 0xf8,
-+ 0x08, 0x28, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x01, 0x3f, 0x08, 0x04, 0x7f,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x20, 0x40, 0xfc,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x22, 0x04, 0x1f, 0x61,
-+ 0x1f, 0x09, 0x05, 0x05, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x88, 0x40, 0xf0, 0x0c,
-+ 0xf0, 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x7e, 0x47, 0x45, 0x09, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0x04, 0xfc, 0x20, 0xa8, 0xa8,
-+ 0xf8, 0x20, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x20, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1e, 0x10, 0x1c, 0x70, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x08, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x24, 0x04, 0x0f, 0x08,
-+ 0x1f, 0x28, 0x4f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x48, 0x80, 0xf8, 0x80,
-+ 0xf0, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x56, 0x55, 0x54, 0x57,
-+ 0x54, 0x55, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x04, 0xf8, 0x48, 0xfc,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x57, 0x54, 0x54, 0x55, 0x56,
-+ 0x54, 0x55, 0x7e, 0x44, 0x41, 0x0e, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0xa4, 0x5c, 0x40,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x22, 0x04, 0x1f, 0x60,
-+ 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x88, 0x40, 0xf0, 0x0c,
-+ 0xf0, 0x90, 0xf0, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x55, 0x57, 0x54, 0x57, 0x56,
-+ 0x56, 0x57, 0x7e, 0x46, 0x42, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x24, 0x24, 0x7f, 0x24,
-+ 0x25, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x48, 0x40, 0x7c, 0xa8,
-+ 0x30, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x01, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x88, 0x00, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x54,
-+ 0x57, 0x56, 0x7e, 0x47, 0x42, 0x02, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x40,
-+ 0xf8, 0x68, 0x58, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x46, 0x42, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0x28, 0xf8, 0x00, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x02, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x12, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0xb0, 0xa8, 0xfc, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x04, 0x7f, 0x01, 0x1f, 0x01,
-+ 0x7f, 0x08, 0x0f, 0x11, 0x3f, 0x40, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x00,
-+ 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x54, 0x57, 0x56, 0x56, 0x57,
-+ 0x55, 0x56, 0x7d, 0x46, 0x40, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x40, 0x40, 0xf8,
-+ 0x98, 0xe8, 0x98, 0xe8, 0x88, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x56, 0x56, 0x56, 0x56, 0x57,
-+ 0x57, 0x57, 0x7f, 0x46, 0x43, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x08, 0x7f, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x2a, 0x3e, 0x09, 0x7f, 0x0a, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x08, 0x30, 0xc0, 0x80, 0xfc,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x57, 0x54, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7c, 0x47, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0xf8, 0x20, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x57, 0x55, 0x57, 0x55, 0x55,
-+ 0x56, 0x7f, 0x44, 0x40, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x54, 0x55, 0x56, 0x55, 0x55,
-+ 0x55, 0x7d, 0x45, 0x40, 0x03, 0x00, 0x00, 0x00,
-+ 0xe0, 0x68, 0x50, 0x94, 0xf8, 0x08, 0xf4, 0x10,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x10, 0x13, 0x54, 0x55, 0x54, 0x57, 0x54,
-+ 0x57, 0x57, 0x7d, 0x47, 0x41, 0x03, 0x00, 0x00,
-+ 0x08, 0x90, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8,
-+ 0x24, 0xfc, 0xa8, 0x14, 0x2c, 0xc4, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x54, 0x55, 0x57, 0x54, 0x57,
-+ 0x56, 0x7f, 0x45, 0x41, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xb8,
-+ 0xa8, 0xb8, 0x10, 0x90, 0xa8, 0x44, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x08, 0x2b, 0x17, 0x18, 0x2b,
-+ 0x4b, 0x18, 0x2b, 0x4a, 0x0b, 0x32, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x18, 0x94, 0xd4, 0x7c, 0x90,
-+ 0x90, 0x10, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x00, 0x3c, 0x27, 0x28, 0x33,
-+ 0x29, 0x25, 0x25, 0x3b, 0x20, 0x27, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x40, 0xf8, 0x90, 0x60, 0x9c,
-+ 0xf0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x24, 0x38, 0x22, 0x1e, 0x21,
-+ 0x3e, 0x48, 0x7e, 0x08, 0x15, 0x62, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x50, 0x20, 0xfc,
-+ 0x28, 0xa0, 0xb8, 0xa0, 0x60, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7f, 0x44, 0x41, 0x02, 0x00, 0x00,
-+ 0x40, 0xd8, 0x68, 0x48, 0xf8, 0x28, 0x68, 0xf8,
-+ 0x68, 0x68, 0xfc, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x54, 0x55, 0x55, 0x55, 0x57,
-+ 0x54, 0x57, 0x7d, 0x45, 0x40, 0x03, 0x00, 0x00,
-+ 0x70, 0xa0, 0xf8, 0x88, 0xf8, 0xb0, 0xe4, 0x5c,
-+ 0xe0, 0xf0, 0x50, 0xf4, 0xac, 0x1c, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x0c, 0x39, 0x7f, 0x1d, 0x2b,
-+ 0x49, 0x7e, 0x14, 0x3c, 0x0d, 0x32, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x40, 0xf0, 0x50, 0xf0, 0x50,
-+ 0xf0, 0xd0, 0xe8, 0xfc, 0x44, 0x3c, 0x00, 0x00,
-+ 0x21, 0x3f, 0x24, 0x3b, 0x1e, 0x5e, 0x52, 0x5e,
-+ 0x5e, 0x52, 0x5e, 0x3e, 0x14, 0x63, 0x00, 0x00,
-+ 0x08, 0xf8, 0x00, 0xfc, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x84, 0x00, 0x00,
-+ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7c, 0x3b, 0x56,
-+ 0x13, 0x01, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0x7c, 0xb8, 0xd4,
-+ 0x90, 0x00, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x21, 0x3f, 0x1e, 0x12, 0x1e, 0x3f, 0x2f, 0x24,
-+ 0x3f, 0x29, 0x2f, 0x2f, 0x3f, 0x41, 0x00, 0x00,
-+ 0x08, 0xf8, 0xf0, 0x90, 0xf0, 0xfc, 0x20, 0x20,
-+ 0xfc, 0x48, 0xb0, 0x90, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x11, 0x11, 0x22, 0x44,
-+ 0x22, 0x11, 0x11, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x88, 0x10, 0x10, 0x20, 0x40,
-+ 0x20, 0x10, 0x10, 0x88, 0x88, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x09, 0x09, 0x09, 0x09, 0x0d,
-+ 0x13, 0x13, 0x21, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x20, 0x20, 0x20, 0x20, 0x60,
-+ 0x50, 0x88, 0x08, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x20, 0x20, 0x3f, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10,
-+ 0x00, 0x00, 0x04, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x14,
-+ 0x17, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x00, 0xf0, 0x90, 0x90,
-+ 0xf0, 0x10, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x10, 0x1e, 0x71, 0x01,
-+ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x64, 0x1c, 0x04,
-+ 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x00, 0x7f, 0x00, 0x0f, 0x00, 0x3f,
-+ 0x21, 0x5f, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xfc, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x08, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x56, 0x54, 0x57,
-+ 0x54, 0x58, 0x50, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x06, 0x19,
-+ 0x7f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01,
-+ 0x3f, 0x21, 0x21, 0x21, 0x21, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x7f, 0x0a, 0x0b, 0x10, 0x3f, 0x21,
-+ 0x5f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xa0, 0xa8, 0x18, 0xfc, 0x08,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x55, 0x57, 0x55, 0x55,
-+ 0x55, 0x55, 0x59, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x59, 0x12, 0x13, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x50, 0x58,
-+ 0xe8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x54, 0x55, 0x55, 0x55,
-+ 0x54, 0x55, 0x59, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x59, 0x10, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x55, 0x55, 0x55, 0x55,
-+ 0x54, 0x57, 0x58, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x57, 0x56, 0x57, 0x57,
-+ 0x57, 0x56, 0x5b, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0x58, 0xf8, 0x48, 0xd8, 0x58,
-+ 0xe8, 0x78, 0xb8, 0x58, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x57, 0x56,
-+ 0x57, 0x55, 0x58, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0xa8,
-+ 0xf8, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7d, 0x55, 0x57, 0x54, 0x57,
-+ 0x56, 0x57, 0x5a, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xe8, 0x68, 0xa0, 0xfc, 0x20, 0xe8,
-+ 0x68, 0xd8, 0x50, 0xd4, 0x2c, 0x44, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x54, 0x5b, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0xa0, 0xfc, 0xf0, 0x50, 0xf0, 0x50,
-+ 0xf0, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x2a, 0x49, 0x7f, 0x5d, 0x55, 0x5d, 0x41,
-+ 0x3f, 0x21, 0x21, 0x21, 0x21, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x88, 0x50, 0x30, 0xcc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00,
-+ 0x08, 0x3e, 0x09, 0x7e, 0x08, 0x3e, 0x0f, 0x71,
-+ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x90, 0x50, 0x10, 0x30, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x04, 0x7f,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x01, 0x1a, 0x06, 0x01, 0x00,
-+ 0x00, 0x01, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x00, 0x10, 0x10, 0x20, 0x20, 0xc0,
-+ 0x80, 0x20, 0x10, 0x78, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x16, 0x16, 0x1a, 0x12,
-+ 0x11, 0x17, 0x10, 0x21, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xfc, 0x68, 0xec, 0xec, 0xa0,
-+ 0x10, 0x20, 0xd0, 0x08, 0xfc, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x11, 0x1f, 0x10, 0x17,
-+ 0x10, 0x10, 0x1f, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0x40, 0xf8, 0x80, 0xf0,
-+ 0x80, 0x80, 0xfc, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x13, 0x22, 0x24, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0x88, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0x28, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x1f, 0x12, 0x13,
-+ 0x16, 0x16, 0x1a, 0x32, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x78, 0xc8, 0x48, 0x78,
-+ 0xc8, 0xf8, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x13, 0x13, 0x13,
-+ 0x12, 0x13, 0x11, 0x27, 0x20, 0x4f, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xfc, 0x80, 0xf0, 0xf0, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0x20, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x17, 0x15, 0x17, 0x15,
-+ 0x17, 0x14, 0x15, 0x26, 0x24, 0x43, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x78, 0x50, 0x50, 0x7c,
-+ 0x50, 0x10, 0x30, 0x34, 0xd4, 0x8c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x17, 0x15, 0x17, 0x15,
-+ 0x17, 0x14, 0x15, 0x26, 0x24, 0x43, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x70, 0x50, 0x54, 0x8c,
-+ 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x8c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x11, 0x16, 0x11, 0x16,
-+ 0x13, 0x1c, 0x13, 0x21, 0x20, 0x47, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0x98, 0xe8, 0x98, 0xe8,
-+ 0x70, 0xdc, 0x60, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x13, 0x1f, 0x10, 0x17,
-+ 0x14, 0x17, 0x24, 0x27, 0x43, 0x0c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xf8, 0xe0, 0xfc, 0x80, 0xf0,
-+ 0x90, 0xf0, 0x90, 0xf0, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x15, 0x15, 0x1f, 0x15, 0x17, 0x15,
-+ 0x17, 0x15, 0x3f, 0x25, 0x44, 0x08, 0x00, 0x00,
-+ 0x80, 0xfc, 0x08, 0x70, 0xc0, 0x40, 0x7c, 0x50,
-+ 0x50, 0x50, 0xd0, 0x50, 0x90, 0x90, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x17, 0x10, 0x17,
-+ 0x14, 0x17, 0x14, 0x23, 0x23, 0x4c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x08, 0xc8, 0x08, 0xfc, 0x08, 0xc8,
-+ 0xa8, 0xa8, 0x88, 0x08, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x14, 0x17, 0x14, 0x17, 0x17,
-+ 0x1f, 0x12, 0x14, 0x3b, 0x20, 0x5f, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0xf0,
-+ 0xfc, 0x28, 0xb8, 0xe0, 0x80, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x19, 0x16, 0x17, 0x19,
-+ 0x17, 0x14, 0x1f, 0x21, 0x21, 0x46, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xd4, 0x24, 0x18, 0x7c, 0x50,
-+ 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x13, 0x16, 0x1a, 0x1f,
-+ 0x12, 0x12, 0x17, 0x25, 0x24, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc,
-+ 0xa8, 0xa8, 0xfc, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x29, 0x32, 0x2f, 0x2a,
-+ 0x2f, 0x2a, 0x2f, 0x28, 0x28, 0x51, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0x78, 0x28, 0x28, 0xd8, 0xb0,
-+ 0xb0, 0xfc, 0xd0, 0xfc, 0x90, 0x90, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x17, 0x15, 0x15, 0x15,
-+ 0x17, 0x10, 0x13, 0x3f, 0x26, 0x58, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf8, 0xf0, 0xd0, 0x50, 0xd0,
-+ 0xf0, 0xe0, 0x80, 0xfc, 0xb0, 0x8c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x15, 0x15,
-+ 0x15, 0x15, 0x25, 0x2b, 0x4a, 0x17, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf0, 0xfc, 0xe8, 0x78, 0xf0, 0x50,
-+ 0xf0, 0x50, 0xf0, 0xf8, 0xa8, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x35, 0x2a, 0x2f, 0x29, 0x2f,
-+ 0x20, 0x2f, 0x2a, 0x2f, 0x28, 0x47, 0x00, 0x00,
-+ 0x80, 0xfc, 0xa8, 0x28, 0xbc, 0x68, 0x68, 0xbc,
-+ 0x28, 0xbc, 0xa8, 0xa8, 0x7c, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x3f, 0x29, 0x2f, 0x29, 0x2f, 0x29,
-+ 0x3f, 0x3f, 0x25, 0x2f, 0x25, 0x4f, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xfc, 0xb4, 0xfc,
-+ 0x00, 0xfc, 0x28, 0xd4, 0xcc, 0x38, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x3f, 0x2a, 0x2b, 0x2f, 0x2b,
-+ 0x2e, 0x2a, 0x2f, 0x3a, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xfc, 0x54, 0xfc,
-+ 0x20, 0x58, 0xd4, 0xc4, 0x48, 0x38, 0x00, 0x00,
-+ 0x00, 0x3c, 0x04, 0x08, 0x08, 0x10, 0x3c, 0x04,
-+ 0x24, 0x28, 0x18, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x78, 0x08, 0x10, 0x13, 0x22, 0x7a, 0x0b,
-+ 0x4a, 0x32, 0x13, 0x2a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x7f, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x04,
-+ 0x04, 0x7f, 0x04, 0x08, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x20, 0x10, 0xf8, 0x48,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x24, 0x24, 0x3c, 0x07, 0x7c, 0x24, 0x25, 0x44,
-+ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x03, 0x07, 0x7f, 0x2a, 0x1c, 0x7e, 0x1d,
-+ 0x2a, 0x49, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xfc, 0x28, 0xd0, 0x28, 0xfc,
-+ 0xa8, 0x24, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x03, 0x07, 0x7f, 0x2a, 0x1c, 0x7f, 0x1c,
-+ 0x2a, 0x48, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xfc, 0x50, 0x88, 0xfc, 0x48,
-+ 0x48, 0x98, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x07, 0x78, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x10, 0x10, 0x0c, 0xf0, 0x80, 0x80, 0x40,
-+ 0x40, 0x20, 0x24, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x34, 0x0d, 0x1a, 0x6a, 0x09, 0x7e,
-+ 0x18, 0x1c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x18, 0x14, 0x14, 0xfc, 0x10, 0x10, 0xf0, 0x50,
-+ 0x50, 0x54, 0x4c, 0x6c, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x10, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8,
-+ 0x08, 0x08, 0x10, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x12, 0x3a, 0x06, 0x19, 0x6f,
-+ 0x00, 0x0f, 0x08, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x09, 0x79, 0x49, 0x41, 0x41,
-+ 0x79, 0x49, 0x09, 0x0f, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x7b, 0x0a, 0x0a, 0x7a, 0x4b, 0x42, 0x7a,
-+ 0x4a, 0x0b, 0x0a, 0x0c, 0x14, 0x69, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8,
-+ 0xa8, 0xb8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x0b, 0x7a, 0x4b, 0x40, 0x7f,
-+ 0x48, 0x0b, 0x0a, 0x0b, 0x0a, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0xfc,
-+ 0x08, 0xc8, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x7b, 0x0a, 0x0b, 0x78, 0x4b, 0x42, 0x7b,
-+ 0x4a, 0x0b, 0x08, 0x0f, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x0e, 0x7b, 0x4a, 0x43, 0x7a,
-+ 0x4b, 0x0a, 0x0b, 0x0a, 0x0b, 0x32, 0x00, 0x00,
-+ 0x00, 0xfc, 0x58, 0x44, 0xf8, 0xd8, 0xf8, 0xd8,
-+ 0x68, 0xd8, 0xf8, 0xd8, 0x68, 0x58, 0x00, 0x00,
-+ 0x13, 0x6f, 0x2b, 0x17, 0x7f, 0x3a, 0x57, 0x1f,
-+ 0x00, 0x0f, 0x08, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x90, 0xe8, 0xa8, 0x94, 0xfc, 0xb8, 0xd4, 0xe0,
-+ 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x12, 0x12, 0x24, 0x4f, 0x00,
-+ 0x0f, 0x08, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x50, 0x48, 0xc4, 0xe4, 0x20,
-+ 0xe0, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x07, 0x04, 0x04, 0x04, 0x04,
-+ 0x0f, 0x08, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20,
-+ 0xe0, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x03, 0x04, 0x0f, 0x00, 0x7f, 0x01, 0x07,
-+ 0x79, 0x06, 0x39, 0x06, 0x38, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0x80, 0xfc, 0x00, 0x48,
-+ 0xd0, 0xe0, 0xa0, 0x90, 0x8c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x08, 0x3e, 0x08, 0x0e, 0x78,
-+ 0x1f, 0x00, 0x7f, 0x00, 0x1f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x20,
-+ 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x07, 0x0f, 0x7f, 0x00, 0x3f, 0x2f, 0x49,
-+ 0x0f, 0x09, 0x0f, 0x7f, 0x0d, 0x31, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xfc, 0x00, 0xfc, 0xe8, 0x20,
-+ 0xe0, 0x20, 0xe0, 0xfc, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x01,
-+ 0x02, 0x04, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, 0x90, 0x10,
-+ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3e, 0x22,
-+ 0x3e, 0x22, 0x12, 0x14, 0x1e, 0x70, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x14, 0x24,
-+ 0x48, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x00, 0x01,
-+ 0x03, 0x05, 0x09, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x17, 0x24, 0x08, 0x08, 0x18,
-+ 0x28, 0x48, 0x08, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x12, 0x22, 0x2a, 0x4b, 0x14, 0x14, 0x38,
-+ 0x53, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x11, 0x15, 0x25, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x13, 0x14, 0x24, 0x4b, 0x0a, 0x1a,
-+ 0x2b, 0x4a, 0x08, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa0,
-+ 0xfc, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x22, 0x4a, 0x0a, 0x12, 0x12, 0x32,
-+ 0x52, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x11, 0x15, 0x25, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x09, 0x0e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4,
-+ 0x44, 0x48, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x22, 0x4a, 0x0c, 0x12, 0x12, 0x30,
-+ 0x53, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x48, 0x90, 0x48, 0x48, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x09, 0x11, 0x15, 0x26, 0x4b, 0x0d, 0x19,
-+ 0x29, 0x49, 0x09, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x11, 0x11, 0x21, 0x4a, 0x0a, 0x14, 0x10, 0x32,
-+ 0x52, 0x12, 0x12, 0x15, 0x14, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xa8, 0xa4, 0x44, 0x40, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x22, 0x4a, 0x0a, 0x12, 0x17, 0x30,
-+ 0x52, 0x12, 0x12, 0x13, 0x14, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x4f, 0x08, 0x10, 0x17, 0x30,
-+ 0x50, 0x1f, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xb8, 0xa0,
-+ 0xa0, 0xbc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x27, 0x49, 0x09, 0x13, 0x12, 0x34,
-+ 0x50, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x50, 0x58, 0xe4, 0x44,
-+ 0xe0, 0xd0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x11, 0x15, 0x25, 0x49, 0x09, 0x18,
-+ 0x2f, 0x48, 0x0b, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x21, 0x4e, 0x09, 0x11, 0x17, 0x31,
-+ 0x52, 0x17, 0x10, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0x60, 0x40, 0x80, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x12, 0x27, 0x4c, 0x0f, 0x14, 0x17, 0x32,
-+ 0x5f, 0x12, 0x13, 0x12, 0x14, 0x19, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0xa0, 0xfc, 0xc8, 0xa8, 0x28,
-+ 0xb0, 0x10, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x18, 0x37, 0x34, 0x31, 0x50,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x19, 0x36, 0x34, 0x30, 0x57,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x19, 0x35, 0x35, 0x37, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x13, 0x3a, 0x36, 0x34, 0x50,
-+ 0x10, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x44, 0x48, 0x60, 0x60,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x04, 0x1a,
-+ 0x62, 0x0b, 0x0a, 0x12, 0x22, 0x06, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30,
-+ 0x0c, 0x20, 0x90, 0x48, 0x48, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x27, 0x24, 0x27, 0x27, 0x24,
-+ 0x27, 0x3f, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0x10,
-+ 0xf0, 0xfc, 0x00, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x01, 0x04, 0x08, 0x10, 0x6f, 0x02, 0x04, 0x18,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0xc0, 0x40, 0x20, 0x10, 0xec, 0x20, 0x20, 0xc0,
-+ 0x00, 0x90, 0x88, 0x04, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x18, 0x34, 0x34, 0x31, 0x57, 0x10,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x90, 0x88, 0x1c, 0xe4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1b, 0x35, 0x35, 0x32, 0x56,
-+ 0x1a, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0x20, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x3b, 0x34, 0x34, 0x50, 0x13,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x3b, 0x36, 0x34, 0x53, 0x12,
-+ 0x12, 0x12, 0x13, 0x12, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48,
-+ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x36, 0x37, 0x32, 0x52, 0x12,
-+ 0x12, 0x12, 0x14, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x88,
-+ 0x90, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x21, 0x41, 0x01,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xf0, 0x00,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x12, 0x2e, 0x45, 0x08, 0x01,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0x48, 0x88, 0xc8, 0x30,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x18, 0x34, 0x37, 0x32, 0x52,
-+ 0x13, 0x12, 0x10, 0x10, 0x11, 0x12, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa0, 0xa0,
-+ 0xfc, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x19, 0x35, 0x36, 0x30, 0x57,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1b, 0x36, 0x36, 0x32, 0x57,
-+ 0x10, 0x10, 0x10, 0x11, 0x12, 0x1c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x40, 0xc0, 0xa0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x19, 0x34, 0x34, 0x33, 0x50,
-+ 0x11, 0x11, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0xc0, 0x48, 0x68, 0xf0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x0b, 0x10, 0x10, 0x37, 0x50, 0x10, 0x13,
-+ 0x11, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x19, 0x35, 0x36, 0x30, 0x50,
-+ 0x11, 0x17, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0xa0, 0x60, 0x60, 0x90,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x17, 0x10, 0x30, 0x51, 0x12, 0x14,
-+ 0x11, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50, 0x48, 0x44,
-+ 0x40, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x1b, 0x34, 0x36, 0x39, 0x54,
-+ 0x15, 0x16, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x48, 0x48, 0xa8, 0xa8,
-+ 0x68, 0x28, 0xe8, 0x28, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x18, 0x34, 0x35, 0x32, 0x52,
-+ 0x1f, 0x12, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x10,
-+ 0xfc, 0x94, 0x94, 0xa4, 0xa4, 0xcc, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x13, 0x12, 0x12, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x90, 0x50, 0x50,
-+ 0x10, 0xa0, 0xa0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x12, 0x19, 0x35, 0x34, 0x37, 0x50,
-+ 0x10, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x02, 0x04, 0x18, 0x61, 0x06,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x50, 0xa0, 0x10, 0x0c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x18, 0x34, 0x37, 0x30, 0x50,
-+ 0x17, 0x11, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x18, 0x37, 0x36, 0x32, 0x52,
-+ 0x12, 0x12, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x80, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x19, 0x36, 0x37, 0x32, 0x53,
-+ 0x12, 0x13, 0x12, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xc8,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x18, 0x34, 0x37, 0x30, 0x50,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1a, 0x37, 0x36, 0x32, 0x52,
-+ 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x01, 0x7f,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0x00, 0xfc,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1a, 0x37, 0x34, 0x33, 0x52,
-+ 0x13, 0x12, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x30, 0x53,
-+ 0x10, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x17, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1a, 0x36, 0x37, 0x32, 0x52,
-+ 0x12, 0x13, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0xe8,
-+ 0xd8, 0x58, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x10, 0x3b, 0x36, 0x36, 0x53,
-+ 0x12, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xc8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x1a, 0x34, 0x37, 0x32, 0x53,
-+ 0x12, 0x13, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1b, 0x34, 0x34, 0x31, 0x52,
-+ 0x10, 0x11, 0x12, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x50, 0x88, 0xfc, 0xa4, 0xa0, 0x24, 0x9c,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x14, 0x37, 0x32, 0x35, 0x50,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xf0, 0x20,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x1a, 0x37, 0x36, 0x32, 0x53,
-+ 0x12, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0xe0, 0xd0, 0x54, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x34, 0x37, 0x32, 0x52,
-+ 0x13, 0x12, 0x12, 0x12, 0x12, 0x11, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, 0x48, 0x48,
-+ 0xf8, 0x08, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x19, 0x35, 0x37, 0x31, 0x53,
-+ 0x13, 0x15, 0x19, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x48, 0xa8, 0x28, 0x28, 0x28, 0xe8, 0x28, 0xa8,
-+ 0x68, 0x68, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x19, 0x34, 0x34, 0x31, 0x56,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0x40, 0xb0, 0x0c,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1e, 0x10, 0x1e, 0x02, 0x7f,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x80, 0xfc,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x18, 0x17, 0x34, 0x31, 0x36, 0x51,
-+ 0x10, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xf0,
-+ 0x20, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x3f, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf8, 0x00, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x1b, 0x34, 0x37, 0x31, 0x53,
-+ 0x15, 0x11, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xf8, 0xa0, 0xfc, 0x10, 0xf8,
-+ 0x14, 0x10, 0x60, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x19, 0x35, 0x35, 0x32, 0x54,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x98, 0x64, 0x44,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x18, 0x34, 0x35, 0x31, 0x52,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xe0, 0xa0, 0xa4, 0x24, 0x1c, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x34, 0x37, 0x30, 0x53,
-+ 0x10, 0x17, 0x11, 0x13, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x80, 0xfc, 0x10, 0xe0, 0xd0, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1a, 0x36, 0x36, 0x32, 0x52,
-+ 0x12, 0x12, 0x12, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xe8, 0x48, 0xe8, 0x48,
-+ 0xe8, 0xa8, 0xa8, 0xe8, 0x88, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x57,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x48, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x13, 0x1a, 0x36, 0x37, 0x32, 0x53,
-+ 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0xf8,
-+ 0x88, 0x88, 0xe8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x50,
-+ 0x13, 0x12, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0x50, 0xb0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x34, 0x35, 0x30, 0x57,
-+ 0x10, 0x10, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x80, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x12, 0x11, 0x24, 0x4a, 0x08, 0x11, 0x32, 0x52,
-+ 0x10, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x78, 0x00, 0x00, 0xfc, 0x10, 0x10, 0x10,
-+ 0x30, 0x00, 0x88, 0x84, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x19, 0x35, 0x35, 0x31, 0x50,
-+ 0x13, 0x10, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x0f, 0x02, 0x7f, 0x0f, 0x14, 0x67,
-+ 0x04, 0x07, 0x21, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0xe0, 0x80, 0xfc, 0xe0, 0x50, 0xcc,
-+ 0x40, 0xc0, 0x08, 0x84, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x19, 0x35, 0x37, 0x31, 0x51,
-+ 0x13, 0x13, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x50, 0x90, 0x10, 0x14, 0x34, 0xf8, 0x50, 0x90,
-+ 0x50, 0x50, 0x28, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x12, 0x3b, 0x34, 0x37, 0x50,
-+ 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x80,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x31, 0x51,
-+ 0x13, 0x14, 0x13, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40, 0x40,
-+ 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x1a, 0x37, 0x34, 0x31, 0x51,
-+ 0x11, 0x11, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x1a, 0x35, 0x35, 0x32, 0x50,
-+ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x68, 0x58, 0xb0,
-+ 0x80, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x1c, 0x3f, 0x3c, 0x37, 0x54,
-+ 0x14, 0x17, 0x13, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0x28, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x1a, 0x35, 0x35, 0x30, 0x53,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x28, 0x28, 0x50, 0x50, 0x28, 0x68, 0x80, 0xf8,
-+ 0x28, 0xc8, 0x68, 0x98, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x29, 0x3f, 0x24, 0x3b,
-+ 0x61, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x48, 0x30, 0x30, 0xc8,
-+ 0x04, 0x10, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x1d, 0x35, 0x35, 0x31, 0x51,
-+ 0x10, 0x11, 0x16, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x80, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x06, 0x38, 0x3e, 0x22, 0x3f, 0x3e, 0x3e, 0x23,
-+ 0x4c, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x94, 0xfc, 0x90, 0x60, 0xb0,
-+ 0x0c, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x1a, 0x35, 0x34, 0x37, 0x54,
-+ 0x12, 0x12, 0x17, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xf0, 0xb0,
-+ 0xb0, 0xd0, 0xf4, 0xcc, 0xac, 0x84, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x22, 0x5e,
-+ 0x00, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x70, 0x50, 0x54, 0x8c, 0xf8, 0x48, 0x30, 0xd8,
-+ 0x04, 0x10, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x1a, 0x37, 0x36, 0x33, 0x52,
-+ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xd0, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x1f, 0x34, 0x37, 0x30, 0x57,
-+ 0x10, 0x13, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x48, 0xb0, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc,
-+ 0xa8, 0xf8, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x17, 0x14, 0x27, 0x24,
-+ 0x59, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0xf0, 0x10, 0xf0, 0xb0,
-+ 0x8c, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x18, 0x34, 0x36, 0x32, 0x52,
-+ 0x12, 0x12, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00,
-+ 0x10, 0x64, 0x84, 0xf8, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0xfc, 0x98, 0x04, 0x00, 0x00,
-+ 0x22, 0x14, 0x7f, 0x08, 0x2a, 0x2a, 0x3e, 0x09,
-+ 0x13, 0x20, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x08,
-+ 0x18, 0x80, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x19, 0x36, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x12, 0x13, 0x15, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x32, 0x53,
-+ 0x12, 0x10, 0x17, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x13, 0x08, 0x4b, 0x22, 0x23, 0x0a, 0x13, 0x22,
-+ 0x22, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0xf0, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0x58, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x36, 0x33, 0x50,
-+ 0x17, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x1f, 0x34, 0x37, 0x35, 0x57,
-+ 0x14, 0x13, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x24, 0xa8, 0x98, 0x90, 0x68, 0x84,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x32, 0x53,
-+ 0x12, 0x13, 0x14, 0x17, 0x18, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x48, 0x68, 0xd0, 0x50, 0x4c, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x19, 0x35, 0x36, 0x37, 0x50,
-+ 0x11, 0x17, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0x90, 0xf8, 0x10, 0x18, 0xa4, 0xfc, 0xa0,
-+ 0x50, 0xac, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x7f,
-+ 0x08, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x08, 0xf0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10,
-+ 0x10, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x11, 0x3f, 0x3d, 0x37, 0x55,
-+ 0x17, 0x11, 0x17, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x04, 0x38, 0xe0, 0x20, 0xe0, 0x7c, 0xe8, 0x68,
-+ 0xe8, 0x28, 0xe8, 0x48, 0x48, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x22, 0x4c, 0x0a, 0x12, 0x33, 0x54,
-+ 0x18, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x10, 0x10, 0xa8, 0x44, 0x40, 0x78, 0x40, 0xc0,
-+ 0x3c, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x1a, 0x35, 0x36, 0x34, 0x51,
-+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x13, 0x15, 0x39, 0x35, 0x35, 0x51,
-+ 0x17, 0x11, 0x13, 0x14, 0x11, 0x12, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0x00, 0xf8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x19, 0x34, 0x37, 0x33, 0x50,
-+ 0x16, 0x12, 0x12, 0x12, 0x15, 0x18, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x88, 0x88, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x32, 0x53,
-+ 0x10, 0x17, 0x10, 0x17, 0x11, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xfc, 0x10, 0xfc, 0x10, 0xb0, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x17, 0x39, 0x3f, 0x35, 0x57,
-+ 0x15, 0x17, 0x11, 0x17, 0x11, 0x17, 0x00, 0x00,
-+ 0x50, 0x90, 0x10, 0xd0, 0x3c, 0xd4, 0x54, 0xd4,
-+ 0x54, 0xd4, 0x14, 0xe4, 0xe4, 0x4c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x25, 0x3f, 0x27, 0x3a,
-+ 0x23, 0x3f, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0xf8, 0x00, 0xa8, 0x24, 0xe4, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x30, 0x53,
-+ 0x10, 0x17, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf8,
-+ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x1d, 0x3c, 0x3f, 0x34, 0x55,
-+ 0x17, 0x16, 0x17, 0x1a, 0x1b, 0x12, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x58, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1f, 0x0f, 0x08, 0x0f, 0x04, 0x7f,
-+ 0x0f, 0x08, 0x0f, 0x25, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0xe0, 0x20, 0xe0, 0x40, 0xfc,
-+ 0xe0, 0x20, 0xe0, 0x08, 0xa4, 0xe4, 0x00, 0x00,
-+ 0x08, 0x7f, 0x2a, 0x2a, 0x5d, 0x1c, 0x2a, 0x4b,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0x30, 0x48, 0x84,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x02, 0x3c, 0x09, 0x7e, 0x08, 0x3e, 0x22, 0x3e,
-+ 0x20, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x88, 0x88, 0xfc, 0x88, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x88, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x30, 0x57,
-+ 0x11, 0x11, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0x50, 0x48, 0xc8, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x1b, 0x37, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x10, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xf8,
-+ 0x20, 0xfc, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x34, 0x37, 0x32, 0x53,
-+ 0x12, 0x13, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x0b, 0x10, 0x17, 0x31, 0x53, 0x1d, 0x11,
-+ 0x11, 0x11, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa0, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x58, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x03, 0x0a, 0x13, 0x25,
-+ 0x24, 0x09, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x54,
-+ 0xac, 0x18, 0x80, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x32, 0x53,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x48, 0xf8,
-+ 0xa8, 0x48, 0x68, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x12, 0x12, 0x13, 0x1e, 0x36, 0x37, 0x32, 0x52,
-+ 0x12, 0x17, 0x10, 0x15, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8, 0xa8,
-+ 0xa8, 0xfc, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x34, 0x37, 0x30, 0x57,
-+ 0x11, 0x17, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x1a, 0x37, 0x36, 0x33, 0x52,
-+ 0x13, 0x10, 0x17, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8,
-+ 0x58, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x15, 0x1e, 0x14, 0x14,
-+ 0x14, 0x14, 0x20, 0x2a, 0x4a, 0x11, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0xfc, 0x90, 0xf8, 0x90, 0xf8,
-+ 0x90, 0xfc, 0x80, 0x48, 0x14, 0xf4, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x30, 0x57,
-+ 0x17, 0x11, 0x1f, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0x5c,
-+ 0x5c, 0xc8, 0x28, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x12, 0x13, 0x14, 0x19, 0x37, 0x3d, 0x3d, 0x57,
-+ 0x15, 0x15, 0x17, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x00, 0xbc, 0x94, 0x14, 0xe4, 0x4c, 0x68, 0xe8,
-+ 0x7c, 0x48, 0xfc, 0x48, 0x48, 0xc8, 0x00, 0x00,
-+ 0x14, 0x7f, 0x1c, 0x3f, 0x2a, 0x3e, 0x7f, 0x3e,
-+ 0x0f, 0x71, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x88, 0x88,
-+ 0x30, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x34, 0x37, 0x32, 0x53,
-+ 0x10, 0x17, 0x10, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x1b, 0x36, 0x36, 0x33, 0x53,
-+ 0x12, 0x12, 0x14, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0xa8, 0x98, 0x70, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x17, 0x7a, 0x11, 0x3f, 0x3b, 0x35, 0x59,
-+ 0x13, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x10, 0xd0, 0xbc, 0x10, 0xf8, 0xb8, 0x34, 0x54,
-+ 0x10, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x11, 0x11, 0x1b, 0x36,
-+ 0x37, 0x52, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x10, 0x20, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x36, 0x32, 0x53,
-+ 0x13, 0x10, 0x17, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8,
-+ 0xf0, 0x40, 0xfc, 0xf0, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x1b, 0x36, 0x37, 0x33, 0x50,
-+ 0x17, 0x10, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40,
-+ 0xfc, 0x80, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x11, 0x0f, 0x49, 0x21, 0x27, 0x0f, 0x15, 0x15,
-+ 0x26, 0x24, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf0, 0xfc, 0x74, 0x54, 0x54,
-+ 0xec, 0x44, 0x00, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x11, 0x3f, 0x3d, 0x35, 0x57,
-+ 0x13, 0x13, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0x3c, 0xd4, 0x14, 0xec, 0x7c, 0x64, 0xfc,
-+ 0x24, 0xbc, 0x64, 0x7c, 0x28, 0x44, 0x00, 0x00,
-+ 0x12, 0x12, 0x13, 0x1d, 0x38, 0x3f, 0x32, 0x56,
-+ 0x12, 0x16, 0x12, 0x16, 0x13, 0x1e, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xe8, 0x68, 0x20, 0xfc, 0xa0, 0xe8,
-+ 0xa8, 0xd0, 0xd4, 0xac, 0xcc, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x19, 0x3f, 0x32, 0x36, 0x52,
-+ 0x16, 0x12, 0x16, 0x12, 0x13, 0x1e, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0x28, 0xfc, 0xa0, 0xe8, 0xa8,
-+ 0xd8, 0x90, 0xd4, 0xac, 0xcc, 0x04, 0x00, 0x00,
-+ 0x10, 0x7c, 0x13, 0x38, 0x7c, 0x45, 0x7e, 0x00,
-+ 0x3c, 0x24, 0x3d, 0x25, 0x1e, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa8, 0x30, 0x30, 0x48, 0xc4,
-+ 0x20, 0x20, 0x48, 0x44, 0x54, 0x30, 0x00, 0x00,
-+ 0x11, 0x17, 0x11, 0x1b, 0x36, 0x37, 0x31, 0x51,
-+ 0x13, 0x15, 0x19, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xb8, 0xa8, 0xb8, 0x20, 0xfc,
-+ 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x37, 0x36, 0x33, 0x51,
-+ 0x11, 0x13, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xb8, 0xa8, 0xb8, 0x20,
-+ 0xfc, 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x19, 0x35, 0x37, 0x30, 0x57,
-+ 0x12, 0x13, 0x13, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xf0, 0xf0, 0xf8, 0x10, 0xfc,
-+ 0xa8, 0xb8, 0xb8, 0xac, 0xf8, 0x88, 0x00, 0x00,
-+ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7c, 0x3b, 0x56,
-+ 0x13, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0x7c, 0xb8, 0xd4,
-+ 0x90, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x08, 0xfc, 0x80, 0x88, 0x88,
-+ 0x50, 0x60, 0xe4, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x12, 0x14, 0x18, 0x61, 0x06, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x18, 0x14,
-+ 0x12, 0x12, 0x10, 0x20, 0x21, 0x46, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10,
-+ 0x1f, 0x10, 0x10, 0x20, 0x21, 0x46, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x1e, 0x01,
-+ 0x7f, 0x00, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00,
-+ 0x20, 0x10, 0xfc, 0x90, 0x64, 0xb4, 0x2c, 0x10,
-+ 0xfc, 0x90, 0x60, 0xe4, 0x1c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1f, 0x10, 0x1f, 0x1f, 0x10,
-+ 0x1f, 0x01, 0x7f, 0x00, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0x10,
-+ 0xf0, 0x08, 0xfc, 0xb0, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x0f, 0x08, 0x0f, 0x0f, 0x08,
-+ 0x3f, 0x21, 0x5f, 0x00, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0x20,
-+ 0xfc, 0x28, 0xf8, 0xa0, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12,
-+ 0x7f, 0x2a, 0x2b, 0x31, 0x20, 0x1f, 0x00, 0x00,
-+ 0x28, 0x24, 0xa4, 0x3c, 0xe0, 0x28, 0x28, 0x28,
-+ 0xb0, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x7f, 0x12, 0x1f, 0x32,
-+ 0x3f, 0x52, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0xa8, 0x28,
-+ 0xb8, 0x10, 0x94, 0x2c, 0xcc, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x19, 0x2a, 0x5d, 0x2a, 0x4c, 0x16,
-+ 0x69, 0x34, 0x09, 0x32, 0x0c, 0x70, 0x00, 0x00,
-+ 0x30, 0xa8, 0xa8, 0xa0, 0xbc, 0xe0, 0xa8, 0x28,
-+ 0x10, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x77, 0x55, 0x77, 0x00, 0x3e, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0x20, 0x3c, 0xe0, 0x28, 0x28,
-+ 0x18, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x04, 0x07, 0x3f, 0x2b, 0x3d, 0x27, 0x3f, 0x20,
-+ 0x2f, 0x29, 0x2f, 0x2a, 0x27, 0x5c, 0x00, 0x00,
-+ 0x30, 0x28, 0xa8, 0x20, 0x3c, 0xe0, 0x28, 0x28,
-+ 0x18, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x19, 0x2a, 0x5d, 0x2a, 0x5a, 0x1f,
-+ 0x24, 0x7f, 0x24, 0x3f, 0x24, 0x3f, 0x00, 0x00,
-+ 0x30, 0xa8, 0xa8, 0xa0, 0xbc, 0xe0, 0xa8, 0xa8,
-+ 0x18, 0x10, 0x14, 0x2c, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f,
-+ 0x19, 0x19, 0x2f, 0x29, 0x49, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x84, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7c, 0x10, 0x10, 0x13, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x1f, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x11, 0x11, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x48, 0x28, 0x30, 0x90, 0xa0,
-+ 0x60, 0x40, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x12, 0x11, 0x14,
-+ 0x18, 0x70, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0xd0, 0xb0, 0x1c, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x12, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88,
-+ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7c, 0x10, 0x10, 0x13, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x17,
-+ 0x18, 0x70, 0x11, 0x12, 0x14, 0x38, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90, 0xfc,
-+ 0x80, 0xc0, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x13, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x13, 0x30, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc8, 0x48, 0x50,
-+ 0x30, 0x20, 0x54, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x17, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0x40, 0xfc, 0x48, 0x50,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x12, 0x12, 0x14, 0x38, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x50, 0x50, 0x48, 0x48, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x11, 0x10, 0x14,
-+ 0x18, 0x70, 0x13, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x10, 0x90, 0x90,
-+ 0x1c, 0x70, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x15,
-+ 0x19, 0x71, 0x12, 0x12, 0x14, 0x39, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x90, 0x90, 0xd0,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x60, 0x50,
-+ 0x48, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x15,
-+ 0x1a, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x60, 0x60, 0xd0, 0x48,
-+ 0x44, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x16, 0x12, 0x12, 0x15,
-+ 0x19, 0x72, 0x12, 0x1f, 0x10, 0x30, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x78, 0xa8, 0xa8, 0x28,
-+ 0x28, 0xa8, 0xa8, 0xc8, 0x48, 0x98, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x11, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x12, 0x13, 0x16,
-+ 0x1a, 0x73, 0x12, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x06, 0x19, 0x60,
-+ 0x0f, 0x1f, 0x01, 0x3f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0xe0,
-+ 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x70, 0x0f, 0x08, 0x0f, 0x01,
-+ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x80, 0xe0, 0x1c, 0xe0, 0x20, 0xe0, 0xc0,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0xa0,
-+ 0x60, 0x30, 0x28, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7f, 0x12, 0x12, 0x13, 0x16,
-+ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0xa4, 0x9c, 0x70, 0xf8,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x14,
-+ 0x1b, 0x72, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x02, 0x05, 0x38, 0x08, 0x08, 0x3e, 0x08, 0x08,
-+ 0x0e, 0x79, 0x08, 0x10, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x12, 0x11, 0x10, 0x14,
-+ 0x1b, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x50, 0x48, 0x48, 0xf0, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x13, 0x12, 0x16, 0x16,
-+ 0x1a, 0x72, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x13, 0x12, 0x16,
-+ 0x1b, 0x70, 0x10, 0x10, 0x11, 0x32, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa0, 0xa0,
-+ 0xfc, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x17, 0x16,
-+ 0x1a, 0x72, 0x12, 0x13, 0x12, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x48, 0x28, 0x28, 0xfc, 0x08,
-+ 0x88, 0x48, 0x48, 0xfc, 0x08, 0x30, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7e, 0x17, 0x12, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x78, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xc8, 0x98, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x12, 0x11, 0x15,
-+ 0x18, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x10, 0x10, 0x10, 0x10,
-+ 0xa0, 0xa0, 0xa0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x13, 0x14, 0x10, 0x14,
-+ 0x19, 0x77, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xa0, 0x40, 0xa0,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x11, 0x14,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x17, 0x11, 0x11, 0x15,
-+ 0x19, 0x77, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20,
-+ 0x20, 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x12, 0x14, 0x15,
-+ 0x19, 0x72, 0x14, 0x10, 0x10, 0x31, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x98, 0x98, 0xa8, 0xc8, 0x98,
-+ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x14,
-+ 0x1b, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x0a, 0x0d, 0x3a, 0x0c, 0x3a, 0x0c, 0x39, 0x00,
-+ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x30, 0xe0,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7c, 0x13, 0x10, 0x10, 0x15,
-+ 0x19, 0x72, 0x14, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0xc8, 0xe8, 0xf0, 0x50,
-+ 0x50, 0x48, 0x44, 0xc0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x11, 0x11, 0x12, 0x16,
-+ 0x1a, 0x73, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x08, 0x10,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x10, 0x13, 0x16,
-+ 0x1b, 0x72, 0x13, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x11, 0x11, 0x11, 0x16,
-+ 0x1a, 0x70, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x58, 0xe4,
-+ 0x44, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x10, 0x17,
-+ 0x18, 0x70, 0x17, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x13, 0x10,
-+ 0x1f, 0x71, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0x58, 0x48, 0x58, 0x48, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x10,
-+ 0x18, 0x73, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x11, 0x11, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x12, 0x12, 0x33, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x20, 0x20, 0x38, 0x48, 0x68,
-+ 0x98, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x13, 0x14,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x90, 0x10, 0xfc, 0x08,
-+ 0xe8, 0x28, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x16, 0x7c, 0x14, 0x17, 0x15, 0x15,
-+ 0x1d, 0x75, 0x15, 0x19, 0x19, 0x31, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x40, 0x7c, 0xa4, 0xa8, 0x20,
-+ 0x20, 0x30, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x7e, 0x13, 0x12, 0x12, 0x17,
-+ 0x1a, 0x72, 0x13, 0x16, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0xc8, 0x88, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x11, 0x11, 0x17, 0x11,
-+ 0x19, 0x73, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50,
-+ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x28, 0x3e, 0x48, 0x7f, 0x08, 0x3e, 0x2a, 0x2e,
-+ 0x07, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x08, 0xd8,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7e, 0x15, 0x11, 0x12, 0x17,
-+ 0x18, 0x72, 0x12, 0x13, 0x12, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xe8, 0x88, 0xe8,
-+ 0x88, 0xa8, 0xa8, 0xe8, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x12, 0x13, 0x16,
-+ 0x1b, 0x70, 0x17, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x17, 0x10, 0x16,
-+ 0x1a, 0x72, 0x12, 0x13, 0x14, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xfc, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x13, 0x16,
-+ 0x1a, 0x72, 0x13, 0x12, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x30, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x12, 0x1e,
-+ 0x73, 0x12, 0x14, 0x14, 0x1b, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40,
-+ 0xfc, 0x40, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x10, 0x17, 0x10, 0x14,
-+ 0x1b, 0x70, 0x13, 0x10, 0x13, 0x30, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xe0, 0x20, 0xfc, 0x40, 0xe8,
-+ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x16, 0x10,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x20, 0x20, 0xe4, 0x5c, 0x80,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x13, 0x12, 0x16,
-+ 0x1b, 0x70, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x58, 0xd8, 0xe8,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x11, 0x10, 0x12, 0x7d, 0x11, 0x12, 0x11, 0x14,
-+ 0x18, 0x73, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0xd0, 0x54, 0xa4, 0xa8, 0x10, 0x08, 0xf4, 0x40,
-+ 0x40, 0xf8, 0xa0, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x7e, 0x13, 0x10, 0x17, 0x10,
-+ 0x1b, 0x72, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x17, 0x10, 0x13, 0x14,
-+ 0x18, 0x77, 0x10, 0x11, 0x16, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0xa0, 0x40, 0xfc, 0xc8, 0x50, 0xc0,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x11, 0x12,
-+ 0x1a, 0x73, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x58,
-+ 0x48, 0x58, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x7e, 0x13, 0x12, 0x12, 0x17,
-+ 0x1a, 0x72, 0x13, 0x16, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0xa4, 0xa4, 0xa4, 0xb8, 0xa0, 0xa0, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x17, 0x14,
-+ 0x1e, 0x75, 0x16, 0x15, 0x14, 0x35, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x11, 0x11, 0x17, 0x12,
-+ 0x1f, 0x30, 0x52, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0x60, 0x40, 0x80, 0xf8, 0x40,
-+ 0xfc, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x5f, 0x0f, 0x02, 0x3f, 0x08,
-+ 0x17, 0x6f, 0x01, 0x3f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0xf0, 0xe0, 0x80, 0xf8, 0xe0,
-+ 0x10, 0xec, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x10, 0x17,
-+ 0x1a, 0x77, 0x12, 0x17, 0x12, 0x32, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xfc, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x10, 0x13, 0x7c, 0x11, 0x10, 0x17, 0x11,
-+ 0x19, 0x72, 0x14, 0x18, 0x17, 0x30, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x13, 0x12, 0x12, 0x17,
-+ 0x19, 0x72, 0x15, 0x12, 0x14, 0x33, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xb8, 0x20, 0x20, 0xb8,
-+ 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x12, 0x15, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x13, 0x15, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7d, 0x11, 0x17, 0x10, 0x17,
-+ 0x1a, 0x73, 0x13, 0x12, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0xf0, 0xf0, 0xfc, 0x10, 0xfc,
-+ 0xa8, 0xb8, 0xb8, 0xac, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xfc, 0x00, 0xfc, 0xa4, 0xe4, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x10, 0x17,
-+ 0x19, 0x72, 0x15, 0x12, 0x14, 0x31, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x12, 0x17,
-+ 0x1a, 0x70, 0x17, 0x11, 0x10, 0x30, 0x00, 0x00,
-+ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x7f, 0x12, 0x10, 0x11, 0x15,
-+ 0x1b, 0x75, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x98, 0xa0, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x3e, 0x08, 0x7f, 0x14, 0x7f, 0x3f, 0x08,
-+ 0x07, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd4, 0xb4, 0x0c, 0x60,
-+ 0x80, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x12, 0x17,
-+ 0x18, 0x73, 0x10, 0x17, 0x11, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x50, 0xf8, 0x10, 0xfc, 0x10, 0xb0, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7a, 0x15, 0x12, 0x14, 0x11,
-+ 0x1e, 0x71, 0x10, 0x11, 0x10, 0x33, 0x00, 0x00,
-+ 0x00, 0xf8, 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x20,
-+ 0x50, 0xac, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x11, 0x12, 0x13, 0x7f, 0x12, 0x17, 0x15, 0x1d,
-+ 0x71, 0x11, 0x11, 0x11, 0x11, 0x36, 0x00, 0x00,
-+ 0xb8, 0x68, 0xb8, 0x78, 0xa8, 0xfc, 0xf8, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0xa4, 0x3c, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x17,
-+ 0x1a, 0x77, 0x13, 0x12, 0x14, 0x38, 0x00, 0x00,
-+ 0x84, 0x88, 0xb0, 0xe0, 0xa0, 0xbc, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0x28, 0xc8, 0x48, 0x88, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x11, 0x17, 0x11, 0x11,
-+ 0x1e, 0x73, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xfc, 0x10, 0xfc,
-+ 0x00, 0xf8, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00,
-+ 0x11, 0x12, 0x11, 0x7d, 0x12, 0x17, 0x11, 0x17,
-+ 0x1c, 0x77, 0x15, 0x11, 0x11, 0x36, 0x00, 0x00,
-+ 0xd0, 0x54, 0xa4, 0x18, 0x08, 0x74, 0x50, 0x54,
-+ 0x8c, 0xf8, 0x48, 0x30, 0x28, 0xc4, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x17, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0x18, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x11, 0x15, 0x13, 0x79, 0x12, 0x14, 0x13, 0x12,
-+ 0x1c, 0x73, 0x10, 0x10, 0x11, 0x32, 0x00, 0x00,
-+ 0x10, 0x54, 0xb4, 0x18, 0xa8, 0x44, 0xfc, 0x48,
-+ 0x40, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13, 0x17,
-+ 0x1b, 0x74, 0x12, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xd0, 0x54,
-+ 0xec, 0x44, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13, 0x16,
-+ 0x1b, 0x72, 0x13, 0x14, 0x15, 0x38, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x78, 0xc8, 0x38, 0xfc, 0x68,
-+ 0xb8, 0x70, 0xb8, 0x58, 0x94, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7f, 0x12, 0x12, 0x13, 0x17,
-+ 0x18, 0x77, 0x14, 0x15, 0x14, 0x34, 0x00, 0x00,
-+ 0x40, 0xa0, 0x58, 0xfc, 0xa8, 0x68, 0x98, 0xf8,
-+ 0x40, 0xfc, 0xa4, 0xf4, 0x14, 0x0c, 0x00, 0x00,
-+ 0x10, 0x17, 0x13, 0x7e, 0x12, 0x12, 0x13, 0x15,
-+ 0x19, 0x71, 0x11, 0x11, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x10, 0x13, 0x10, 0x17,
-+ 0x19, 0x77, 0x10, 0x13, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x12, 0x12, 0x79, 0x14, 0x12, 0x13, 0x10,
-+ 0x1e, 0x72, 0x13, 0x12, 0x15, 0x38, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3e, 0x52, 0x1e,
-+ 0x07, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x12, 0x17, 0x13, 0x10,
-+ 0x1b, 0x72, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x16,
-+ 0x1b, 0x72, 0x13, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x88, 0xe8,
-+ 0xa8, 0x48, 0xf8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x0a, 0x13, 0x1a, 0x13, 0x18, 0x12, 0x7f, 0x08,
-+ 0x17, 0x6f, 0x01, 0x3f, 0x01, 0x03, 0x00, 0x00,
-+ 0x30, 0x90, 0x30, 0x90, 0xb0, 0x90, 0xfc, 0xe0,
-+ 0x10, 0xec, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x06, 0x1b, 0x12, 0x1b, 0x12, 0x1a, 0x12, 0x7f,
-+ 0x09, 0x17, 0x61, 0x1f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xb0, 0x10, 0xb0, 0x90, 0xb0, 0x90, 0xfc,
-+ 0x20, 0xd0, 0x0c, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x2f, 0x21, 0x7e, 0x2a, 0x2a, 0x36, 0x22,
-+ 0x33, 0x62, 0x23, 0x22, 0x24, 0x68, 0x00, 0x00,
-+ 0x80, 0xfc, 0x48, 0xb8, 0xa8, 0xa8, 0xb4, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x11, 0x11, 0x11, 0x17,
-+ 0x1d, 0x70, 0x11, 0x10, 0x11, 0x37, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0xf8, 0x90, 0xf8, 0x40, 0xf0, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x11, 0x17, 0x14,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x90, 0x88, 0x1c, 0xe4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x10, 0x17, 0x11, 0x14,
-+ 0x19, 0x77, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0xe8, 0x40,
-+ 0xf0, 0xfc, 0x88, 0xfc, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x14, 0x11, 0x17,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf8, 0x58, 0xe4, 0xf4, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x20, 0x2f, 0x2a, 0x7f, 0x2f, 0x2a, 0x2f, 0x2b,
-+ 0x32, 0x63, 0x23, 0x23, 0x21, 0x6e, 0x00, 0x00,
-+ 0x40, 0xfc, 0x80, 0x78, 0xfc, 0xb4, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x14, 0x17, 0x15, 0x79, 0x10, 0x17, 0x10, 0x17,
-+ 0x1c, 0x77, 0x14, 0x17, 0x14, 0x35, 0x00, 0x00,
-+ 0x20, 0xfc, 0x50, 0x18, 0xa0, 0xfc, 0x00, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x3b, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xfc, 0xf0, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x24, 0x27, 0x2b, 0x7f, 0x2b, 0x2d, 0x2f, 0x28,
-+ 0x3f, 0x62, 0x2f, 0x23, 0x24, 0x68, 0x00, 0x00,
-+ 0x80, 0xf8, 0x68, 0xe8, 0x70, 0xf0, 0xe8, 0x68,
-+ 0xe4, 0x24, 0xe4, 0x38, 0xa0, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x14, 0x1f, 0x10,
-+ 0x1f, 0x74, 0x17, 0x17, 0x14, 0x35, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x20, 0xa8, 0xf0, 0x64,
-+ 0x9c, 0xa0, 0xa8, 0xb0, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x10, 0x13, 0x7d, 0x1a, 0x36, 0x51, 0x13, 0x7f,
-+ 0x05, 0x1f, 0x6f, 0x3f, 0x01, 0x03, 0x00, 0x00,
-+ 0x90, 0x90, 0x7c, 0xb0, 0xd8, 0x94, 0x50, 0xfc,
-+ 0xc0, 0x30, 0xec, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x12, 0x12, 0x15, 0x7d, 0x12, 0x13, 0x15, 0x17,
-+ 0x18, 0x77, 0x10, 0x11, 0x16, 0x30, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xb4, 0xe8, 0xac, 0xb4, 0xfc,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x13, 0x7a, 0x13, 0x10, 0x13, 0x11,
-+ 0x18, 0x77, 0x10, 0x17, 0x11, 0x33, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0,
-+ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x12, 0x13, 0x11, 0x7f, 0x12, 0x17, 0x13, 0x12,
-+ 0x1b, 0x77, 0x15, 0x17, 0x15, 0x35, 0x00, 0x00,
-+ 0x48, 0xf8, 0x20, 0xf8, 0x40, 0xf0, 0xf0, 0x40,
-+ 0xf8, 0xf8, 0x58, 0xf8, 0x48, 0xd8, 0x00, 0x00,
-+ 0x11, 0x17, 0x11, 0x7f, 0x11, 0x12, 0x15, 0x1d,
-+ 0x71, 0x11, 0x11, 0x11, 0x11, 0x36, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0xb0, 0x48, 0xf4, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x25, 0x2f, 0x25, 0x7f, 0x2f, 0x2a, 0x2f, 0x22,
-+ 0x3f, 0x62, 0x2f, 0x23, 0x24, 0x68, 0x00, 0x00,
-+ 0x28, 0xa8, 0x28, 0x7c, 0xd0, 0xd0, 0xfc, 0x50,
-+ 0xd0, 0x7c, 0xd0, 0x50, 0xfc, 0x40, 0x00, 0x00,
-+ 0x13, 0x6f, 0x2b, 0x17, 0x7c, 0x3b, 0x56, 0x13,
-+ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x90, 0xe8, 0xa8, 0x94, 0x7c, 0xb8, 0xd4, 0xe0,
-+ 0x80, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x13, 0x12, 0x13, 0x7f, 0x13, 0x11, 0x13, 0x16,
-+ 0x1a, 0x73, 0x13, 0x10, 0x10, 0x37, 0x00, 0x00,
-+ 0xb8, 0xa8, 0xb8, 0xb8, 0xb8, 0x20, 0xfc, 0xf0,
-+ 0xf0, 0xfc, 0xf0, 0xa0, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x04, 0x02,
-+ 0x02, 0x01, 0x00, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x20,
-+ 0x20, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x0f, 0x0c, 0x14, 0x22,
-+ 0x02, 0x01, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x10, 0x11, 0x1d, 0x26, 0x24,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x33, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x24, 0x25, 0x25, 0x26, 0x24, 0x24,
-+ 0x26, 0x3c, 0x64, 0x04, 0x05, 0x06, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0c, 0x14, 0x15, 0x35, 0x56, 0x14,
-+ 0x14, 0x14, 0x14, 0x14, 0x10, 0x13, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x54, 0x55, 0x55, 0x7e, 0x54,
-+ 0x54, 0x54, 0x7c, 0x44, 0x01, 0x06, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x14, 0x12, 0x26, 0x65, 0x14,
-+ 0x0c, 0x0c, 0x0a, 0x12, 0x20, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x90, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x7f,
-+ 0x08, 0x0e, 0x12, 0x12, 0x22, 0x4d, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50, 0x50,
-+ 0x60, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x2a, 0x3e,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x3e, 0x49, 0x08, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x1b, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0x40, 0xf8, 0x88, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x3e, 0x49, 0x0a, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x1b, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x2a, 0x29, 0x49, 0x08, 0x7f, 0x41, 0x5d,
-+ 0x55, 0x55, 0x5d, 0x55, 0x41, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xc8, 0xc8, 0x48, 0x48,
-+ 0x30, 0x30, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x2a, 0x29, 0x49, 0x08, 0x7f, 0x49, 0x6b,
-+ 0x6b, 0x6b, 0x6b, 0x49, 0x49, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xc8, 0xc8, 0x48, 0x48,
-+ 0x30, 0x30, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x00,
-+ 0x7f, 0x41, 0x5d, 0x55, 0x5d, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0x3c, 0x20, 0x20, 0xf8, 0x48, 0x48,
-+ 0x28, 0x30, 0x10, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x04, 0x3f, 0x25, 0x7f, 0x25, 0x3f, 0x3f, 0x25,
-+ 0x3f, 0x08, 0x7f, 0x12, 0x1e, 0x71, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x48, 0xc8, 0x48, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x3f, 0x40, 0x77, 0x55,
-+ 0x77, 0x12, 0x12, 0x2d, 0x25, 0x49, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xc8, 0xc8, 0x28, 0x28,
-+ 0x30, 0x10, 0x30, 0x48, 0x88, 0x04, 0x00, 0x00,
-+ 0x49, 0x2a, 0x7f, 0x49, 0x5d, 0x6b, 0x4b, 0x00,
-+ 0x7f, 0x08, 0x1e, 0x72, 0x0c, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x7c, 0xc8, 0x30, 0x30, 0xcc, 0x00,
-+ 0xfc, 0x88, 0xb0, 0xc4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7f, 0x3a, 0x57,
-+ 0x12, 0x07, 0x3c, 0x03, 0x0e, 0x70, 0x00, 0x00,
-+ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0xfc, 0xb8, 0xd4,
-+ 0x10, 0xf8, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x1e, 0x24, 0x7e, 0x2a, 0x2a, 0x3e, 0x2a,
-+ 0x2a, 0x3e, 0x23, 0x22, 0x22, 0x46, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x50, 0x50,
-+ 0x1c, 0x70, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12,
-+ 0x7f, 0x2a, 0x2b, 0x33, 0x20, 0x1f, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x50, 0x50,
-+ 0x1c, 0x70, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x08, 0x10, 0x1e, 0x32,
-+ 0x32, 0x52, 0x13, 0x1f, 0x12, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x12, 0x5b, 0x6d, 0x52, 0x6d, 0x7f, 0x7f, 0x5b,
-+ 0x6d, 0x52, 0x6d, 0x7f, 0x7f, 0x40, 0x00, 0x00,
-+ 0x08, 0x70, 0x40, 0x40, 0x40, 0x7c, 0x50, 0x50,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x11, 0x12, 0x1c, 0x14,
-+ 0x14, 0x15, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0xa8, 0xa8,
-+ 0xa8, 0xfc, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x12, 0x13, 0x1c, 0x14,
-+ 0x14, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0x20, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x04, 0x02, 0x3f, 0x21, 0x41,
-+ 0x3f, 0x01, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x40, 0x80, 0xfc, 0x08, 0x00,
-+ 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x10, 0x1c, 0x15,
-+ 0x14, 0x14, 0x27, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0xe0, 0x40, 0x78, 0xc0,
-+ 0x40, 0x7c, 0xc0, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x11, 0x12, 0x1c, 0x14,
-+ 0x15, 0x14, 0x24, 0x24, 0x45, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xa0, 0xa0, 0xf8, 0xa0,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x10, 0x1c, 0x17,
-+ 0x14, 0x15, 0x25, 0x25, 0x45, 0x1a, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0xfc, 0x50, 0x98, 0xe8,
-+ 0x10, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x10, 0x11, 0x1c, 0x14,
-+ 0x17, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0xfc, 0x18, 0xe8, 0xb0, 0xfc, 0x70, 0xa8,
-+ 0xfc, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7c, 0x13, 0x10, 0x1c, 0x17,
-+ 0x14, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x18, 0xe8, 0x28, 0xb0, 0xfc, 0x70, 0xa8, 0x24,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x21, 0x21, 0x21, 0x3f, 0x21,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x3f,
-+ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x7f,
-+ 0x01, 0x3f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x1f,
-+ 0x10, 0x10, 0x11, 0x21, 0x26, 0x58, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x80, 0x80, 0xc0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01, 0x7f,
-+ 0x04, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x40, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4b, 0x4a, 0x7a, 0x4a,
-+ 0x4a, 0x4a, 0x7a, 0x4c, 0x44, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x88,
-+ 0x90, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x00, 0x3c, 0x05, 0x05, 0x7e, 0x0e,
-+ 0x0d, 0x15, 0x14, 0x24, 0x44, 0x0c, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x48, 0x48,
-+ 0x78, 0x48, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x02, 0x3c,
-+ 0x22, 0x22, 0x2e, 0x72, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x7f,
-+ 0x08, 0x0f, 0x12, 0x22, 0x04, 0x09, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01, 0x3f,
-+ 0x22, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xf8, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x7a, 0x49, 0x49, 0x48, 0x7f, 0x48,
-+ 0x48, 0x48, 0x79, 0x49, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x14, 0x3e, 0x02, 0x7f, 0x00,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x50, 0xf8, 0x08, 0xfc, 0x00,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x02, 0x12,
-+ 0x0a, 0x0a, 0x1c, 0x64, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x90, 0x90,
-+ 0xe0, 0xa0, 0x90, 0x94, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x01, 0x78, 0x4b, 0x48, 0x4f, 0x79, 0x4b,
-+ 0x4e, 0x4a, 0x7a, 0x4a, 0x02, 0x00, 0x00, 0x00,
-+ 0x08, 0xd0, 0x70, 0x88, 0x80, 0xfc, 0x40, 0xf8,
-+ 0x48, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x1f, 0x0f, 0x01, 0x3f,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x7f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0xe0, 0x00, 0xf8,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x48, 0x78, 0x4f,
-+ 0x48, 0x49, 0x79, 0x49, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x4a, 0x4c, 0x7f, 0x48,
-+ 0x4b, 0x4a, 0x7a, 0x4a, 0x03, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x3f, 0x20,
-+ 0x2f, 0x20, 0x3f, 0x24, 0x26, 0x5c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x90, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x3f,
-+ 0x20, 0x3e, 0x24, 0x24, 0x38, 0x43, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x88, 0xfc,
-+ 0x80, 0x48, 0x50, 0x24, 0xd4, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x0e, 0x78, 0x09, 0x1a,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x10, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4f, 0x49, 0x49, 0x7b, 0x4b,
-+ 0x4b, 0x4d, 0x7d, 0x49, 0x01, 0x01, 0x00, 0x00,
-+ 0x04, 0x08, 0x30, 0xe0, 0x20, 0xbc, 0x68, 0x68,
-+ 0x28, 0x28, 0x48, 0x48, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x02, 0x7e,
-+ 0x02, 0x3e, 0x02, 0x0e, 0x74, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xfc,
-+ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x0f, 0x3f, 0x21, 0x7f,
-+ 0x0f, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0x08, 0xf8,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x49, 0x48, 0x4b, 0x7a, 0x4a,
-+ 0x4a, 0x4f, 0x78, 0x48, 0x03, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x50, 0x40, 0xf8, 0x48, 0x48,
-+ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4f, 0x48, 0x4b, 0x7a, 0x4b,
-+ 0x4a, 0x4b, 0x78, 0x4f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4f, 0x48, 0x79, 0x49,
-+ 0x49, 0x49, 0x79, 0x48, 0x07, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x78, 0x4f,
-+ 0x49, 0x4b, 0x7c, 0x49, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4d, 0x49, 0x49, 0x79, 0x49,
-+ 0x48, 0x4f, 0x78, 0x48, 0x01, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x3e, 0x22, 0x3f, 0x3e, 0x26, 0x39, 0x1f,
-+ 0x04, 0x07, 0x04, 0x07, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0xfc, 0x30, 0xd4, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x23, 0x13, 0x11, 0x01, 0x73,
-+ 0x15, 0x11, 0x11, 0x19, 0x27, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0xf8, 0x10, 0xfc, 0x20,
-+ 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4f, 0x49, 0x4f, 0x79, 0x49,
-+ 0x4e, 0x4b, 0x78, 0x40, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc,
-+ 0x00, 0xf8, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x48, 0x4b, 0x4a, 0x7b, 0x48,
-+ 0x4f, 0x48, 0x79, 0x4f, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x3c, 0xc8, 0xe8, 0xa8, 0x28,
-+ 0xf0, 0x90, 0x98, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x08, 0x2a, 0x49, 0x7f, 0x49, 0x5d, 0x6b, 0x49,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x48, 0x30, 0x30, 0xc8,
-+ 0xf4, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x07, 0x79, 0x4b, 0x49, 0x49, 0x7f, 0x49,
-+ 0x49, 0x4b, 0x78, 0x4f, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf8, 0x50, 0x50, 0xfc, 0x50,
-+ 0x50, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x07, 0x7a, 0x49, 0x4b, 0x4d, 0x79, 0x49,
-+ 0x49, 0x49, 0x79, 0x42, 0x04, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xb0, 0x18, 0xf4, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x49, 0x4b, 0x4a, 0x7d, 0x49,
-+ 0x4a, 0x48, 0x7b, 0x48, 0x00, 0x07, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x10, 0xfc, 0x68, 0x98, 0xf4,
-+ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x07, 0x79, 0x4b, 0x4a, 0x4c, 0x7f, 0x48,
-+ 0x4f, 0x48, 0x7b, 0x48, 0x07, 0x00, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xfc, 0xe8, 0x00, 0xfc, 0xc8,
-+ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x7a, 0x4a,
-+ 0x4a, 0x4a, 0x7c, 0x44, 0x08, 0x03, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xfc, 0xf0, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4b, 0x4a, 0x4a, 0x7a, 0x4a,
-+ 0x4a, 0x4a, 0x7a, 0x44, 0x07, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x00, 0x20, 0x20, 0x20,
-+ 0x40, 0x50, 0x88, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x49, 0x4f, 0x4b, 0x79, 0x4f,
-+ 0x4b, 0x4d, 0x7f, 0x47, 0x04, 0x01, 0x00, 0x00,
-+ 0x90, 0xf8, 0x40, 0xf0, 0xfc, 0xa8, 0x24, 0xfc,
-+ 0xa8, 0x28, 0xd0, 0xb4, 0xcc, 0x84, 0x00, 0x00,
-+ 0x1f, 0x17, 0x1f, 0x01, 0x7f, 0x1e, 0x12, 0x1e,
-+ 0x3f, 0x0f, 0x7f, 0x0c, 0x77, 0x1c, 0x00, 0x00,
-+ 0xf0, 0xd0, 0xf0, 0x00, 0xfc, 0xf0, 0x90, 0xf0,
-+ 0xf8, 0xe0, 0xfc, 0x90, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20,
-+ 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x90, 0x10,
-+ 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x11, 0x00, 0x00, 0x03, 0x3c, 0x00, 0x00, 0x00,
-+ 0x20, 0x10, 0xf0, 0x10, 0xd0, 0x10, 0x10, 0xf8,
-+ 0x10, 0xa0, 0xc0, 0x44, 0x34, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x12, 0x07,
-+ 0x19, 0x71, 0x12, 0x14, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x08, 0x88, 0x48, 0x08, 0xe8, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x24,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x20, 0x24, 0x24, 0x24, 0x24, 0xfc, 0x24, 0x20,
-+ 0x24, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4f, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x48, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x07, 0x07, 0x04, 0x7f, 0x08,
-+ 0x17, 0x64, 0x07, 0x07, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xc0, 0xc0, 0x40, 0xfc, 0x20,
-+ 0xd0, 0x48, 0xc4, 0xc0, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x25, 0x25, 0x3e, 0x27, 0x24,
-+ 0x3f, 0x24, 0x27, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0xfc, 0x08, 0xf0, 0xfc, 0xc8,
-+ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x01, 0x39, 0x2f, 0x2a, 0x2a, 0x3f, 0x28, 0x2b,
-+ 0x3a, 0x2b, 0x2a, 0x2b, 0x2a, 0x5a, 0x00, 0x00,
-+ 0x20, 0x3c, 0xe0, 0xb8, 0x88, 0xf8, 0x20, 0xb8,
-+ 0xa0, 0xb8, 0xa0, 0xbc, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x4f, 0x15, 0x7f,
-+ 0x14, 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0xe8, 0x70, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x09, 0x09, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x01, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0xfc, 0x00, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x11,
-+ 0x11, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0x60, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x04, 0x08, 0x10, 0x21, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x78, 0x08, 0x08, 0x70, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x09, 0x08, 0x08, 0x7e, 0x08, 0x0c, 0x1a, 0x1a,
-+ 0x18, 0x28, 0x29, 0x49, 0x0a, 0x0c, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xe0,
-+ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1d, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc0, 0x40, 0x20,
-+ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7e, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x13, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x78, 0x48, 0x48,
-+ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x03, 0x05, 0x09, 0x11,
-+ 0x61, 0x01, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x20, 0x10,
-+ 0x0c, 0x00, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x04,
-+ 0x08, 0x11, 0x61, 0x02, 0x04, 0x1f, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x40,
-+ 0x30, 0x08, 0x04, 0x20, 0x70, 0x88, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1f, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x60, 0x20, 0xfc, 0x24, 0x28,
-+ 0x30, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa4, 0x2c, 0x28,
-+ 0x70, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7d, 0x11, 0x1a, 0x37, 0x34,
-+ 0x30, 0x50, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xe0, 0xa0, 0xa0, 0x10, 0x10, 0x08, 0xf4, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x0a, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x18, 0x37, 0x34,
-+ 0x30, 0x50, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x50, 0x90, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x80, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28,
-+ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1a, 0x1b,
-+ 0x2a, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xf8,
-+ 0x48, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x19, 0x15, 0x15,
-+ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0x90,
-+ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x00, 0x90, 0x88, 0x04, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x37, 0x36,
-+ 0x32, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x70, 0x90, 0x20, 0x20,
-+ 0x50, 0x88, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x11, 0x3a, 0x35, 0x35,
-+ 0x51, 0x51, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0xe8, 0x28,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1e, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x78, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x4a, 0x0a, 0x0c, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x60,
-+ 0x30, 0x28, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x0f, 0x09, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x10, 0x10, 0xd4, 0x0c, 0xec, 0x04, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x7e, 0x12, 0x1b, 0x36, 0x34,
-+ 0x32, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x40,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x12, 0x1b, 0x35, 0x35,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x19, 0x37, 0x35,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x88, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x12, 0x39, 0x35,
-+ 0x34, 0x50, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x10, 0x10, 0x10, 0x10,
-+ 0x90, 0xa0, 0xa0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x0a, 0x0b, 0x0c, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x50, 0x70, 0x58, 0xf8, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x13, 0x3a, 0x37,
-+ 0x35, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0xa0, 0x10, 0xe8, 0xfc, 0x58, 0xe8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x09, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x1a, 0x34, 0x35,
-+ 0x31, 0x52, 0x54, 0x10, 0x10, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x98, 0x98, 0xa8, 0xc8, 0x98,
-+ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x22, 0x54, 0x0f, 0x18, 0x61,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x90, 0x90, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x19, 0x36, 0x37,
-+ 0x30, 0x50, 0x51, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x90, 0xf8, 0x04, 0xf8,
-+ 0x80, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1f, 0x1a, 0x1a,
-+ 0x29, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x40, 0xfc,
-+ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x1f, 0x34, 0x34,
-+ 0x33, 0x50, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x50, 0x88, 0xfc, 0x44, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x11, 0x1f, 0x34, 0x35,
-+ 0x31, 0x51, 0x51, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x18, 0xe4, 0x00, 0x50,
-+ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x18, 0x35, 0x35,
-+ 0x33, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x80, 0xf8, 0x08, 0x10,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1b,
-+ 0x2a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x50, 0x88, 0xfc, 0xa4, 0xa0, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x12, 0x7d, 0x11, 0x18, 0x37, 0x34,
-+ 0x30, 0x53, 0x50, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xf8, 0x08,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x1a, 0x36, 0x37,
-+ 0x32, 0x52, 0x53, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x34, 0x37,
-+ 0x30, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x0f, 0x0f, 0x08, 0x0f, 0x0f, 0x08, 0x0f,
-+ 0x09, 0x01, 0x7f, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0xe0, 0x20, 0xe0, 0xf8, 0x00, 0xf0,
-+ 0x10, 0x60, 0xfc, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x12, 0x1c, 0x37, 0x34,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x29, 0x4a, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x40, 0x50, 0x98, 0xe4, 0xa0, 0xa4, 0x5c, 0x40,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x52, 0x54, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xa8,
-+ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0d, 0x16, 0x14, 0x37, 0x54,
-+ 0x17, 0x14, 0x15, 0x16, 0x14, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0xa0, 0x60, 0xdc, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x7a, 0x17, 0x1a, 0x3a, 0x37,
-+ 0x32, 0x52, 0x54, 0x14, 0x18, 0x13, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0xa4, 0xa4, 0xa4, 0xb8, 0xa0, 0x20, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7d, 0x12, 0x1a, 0x37, 0x31,
-+ 0x35, 0x55, 0x52, 0x12, 0x15, 0x18, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x17, 0x11, 0x38, 0x35,
-+ 0x37, 0x50, 0x53, 0x12, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0,
-+ 0xfc, 0x08, 0xfc, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x35,
-+ 0x31, 0x57, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0xfc, 0x10, 0x10, 0x10,
-+ 0x10, 0xfc, 0x10, 0x08, 0x04, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x11, 0x1a, 0x35, 0x34,
-+ 0x30, 0x53, 0x50, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xc8, 0x24, 0x24, 0x00, 0xf8, 0x10,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x07,
-+ 0x04, 0x06, 0x05, 0x09, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0xc0,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x34, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x40, 0x80,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x2a, 0x4b, 0x08, 0x7f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0xfc,
-+ 0x00, 0xc0, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x1b, 0x36, 0x36,
-+ 0x33, 0x52, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa0, 0xa0, 0xa0, 0xb8, 0x08, 0x08,
-+ 0xb8, 0xa8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x34,
-+ 0x30, 0x50, 0x53, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80,
-+ 0x9c, 0xe0, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x17, 0x10, 0x38, 0x37,
-+ 0x35, 0x51, 0x53, 0x15, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x90, 0x90, 0xf0,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x19, 0x34, 0x37,
-+ 0x30, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x10, 0x60, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x07, 0x04, 0x07, 0x04, 0x7f,
-+ 0x09, 0x1f, 0x63, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xc0, 0x40, 0xc0, 0x40, 0xfc,
-+ 0x20, 0xf0, 0x8c, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7e, 0x14, 0x12, 0x39, 0x37,
-+ 0x35, 0x51, 0x52, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0xa8, 0xa8, 0xc8, 0xf8,
-+ 0xc8, 0xa8, 0xa8, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x2a, 0x2a,
-+ 0x2e, 0x0c, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xb8, 0x30, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1a, 0x37, 0x36,
-+ 0x32, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x68, 0x58, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7f, 0x10, 0x1b, 0x34, 0x35,
-+ 0x36, 0x53, 0x50, 0x10, 0x11, 0x12, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xf8, 0x40, 0xfc, 0xa0, 0x50,
-+ 0x4c, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7c, 0x14, 0x1f, 0x3c, 0x35,
-+ 0x35, 0x55, 0x55, 0x15, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0x58,
-+ 0x58, 0x58, 0xf8, 0x18, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x18, 0x35, 0x36,
-+ 0x33, 0x50, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0xa4, 0x1c, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x0f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x20,
-+ 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x20, 0x10, 0xd4, 0x0c,
-+ 0xfc, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x2b, 0x48, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x34, 0xcc, 0x54,
-+ 0x7c, 0xc8, 0x30, 0x14, 0x6c, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x0a, 0x1c, 0x1a, 0x1b,
-+ 0x28, 0x28, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x10, 0x12, 0x13, 0x7e, 0x12, 0x1b, 0x34, 0x35,
-+ 0x32, 0x50, 0x51, 0x16, 0x10, 0x17, 0x00, 0x00,
-+ 0x20, 0x28, 0xc8, 0x68, 0x98, 0xf8, 0xa0, 0x24,
-+ 0x9c, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x11, 0x17, 0x39, 0x35,
-+ 0x37, 0x53, 0x55, 0x19, 0x11, 0x13, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x24, 0x24, 0xe8, 0x28, 0x18,
-+ 0x90, 0x50, 0x68, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1f, 0x34, 0x37,
-+ 0x30, 0x50, 0x51, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x40, 0xfc,
-+ 0x90, 0x90, 0xe0, 0x30, 0xc8, 0x08, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x13, 0x1d, 0x31, 0x7f,
-+ 0x01, 0x1f, 0x13, 0x1d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0x60, 0x10, 0xfc,
-+ 0x00, 0xf0, 0x90, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x18, 0x37, 0x36,
-+ 0x31, 0x51, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x48,
-+ 0x68, 0x70, 0xd0, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x15, 0x19, 0x3f, 0x35,
-+ 0x35, 0x51, 0x52, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xe8, 0x28, 0x28, 0xe8, 0x28,
-+ 0x28, 0xa8, 0x68, 0x78, 0x28, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x1a, 0x37, 0x36,
-+ 0x33, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x39, 0x34,
-+ 0x34, 0x50, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf0, 0x20,
-+ 0x40, 0xa0, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x1a, 0x36, 0x36,
-+ 0x33, 0x52, 0x54, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x48, 0x48, 0x48, 0xfc, 0xc8,
-+ 0xa8, 0xa8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7f, 0x10, 0x1a, 0x36, 0x35,
-+ 0x31, 0x51, 0x51, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0xa0, 0xa8, 0xa8, 0xa8,
-+ 0xb0, 0xb0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x1a, 0x37, 0x36,
-+ 0x32, 0x57, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xfc, 0xa0, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7d, 0x12, 0x17, 0x39, 0x35,
-+ 0x37, 0x51, 0x51, 0x11, 0x17, 0x10, 0x00, 0x00,
-+ 0x08, 0xc8, 0x28, 0xa8, 0xa8, 0xe8, 0x68, 0x28,
-+ 0xe8, 0x28, 0x28, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x3b, 0x36,
-+ 0x36, 0x53, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x11, 0x19, 0x36, 0x36,
-+ 0x33, 0x52, 0x52, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x9c, 0xf4, 0x54, 0x64, 0x98,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1f, 0x1a,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x20, 0x24, 0xe8, 0x30, 0x20, 0xe4, 0x3c, 0x40,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x11, 0x19, 0x37, 0x36,
-+ 0x32, 0x52, 0x53, 0x12, 0x10, 0x11, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0xe8, 0x28, 0x38, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7d, 0x11, 0x17, 0x39, 0x35,
-+ 0x37, 0x53, 0x55, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x50, 0x90, 0x10, 0x14, 0x34, 0xf8, 0x58, 0x90,
-+ 0x50, 0x50, 0x28, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x1f, 0x35, 0x35,
-+ 0x31, 0x51, 0x51, 0x11, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x1c, 0xf0, 0x10, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x79, 0x17, 0x11, 0x39, 0x37,
-+ 0x35, 0x57, 0x50, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x24, 0xe4, 0x24, 0xc4, 0x18,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x34,
-+ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48,
-+ 0xe8, 0xf0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x1f, 0x34, 0x34,
-+ 0x31, 0x57, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x60, 0x90,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x19, 0x35, 0x35,
-+ 0x37, 0x52, 0x52, 0x13, 0x13, 0x12, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xfc, 0xa0, 0xa8, 0x18, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1b, 0x36, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x12, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x10, 0x1f, 0x34, 0x37,
-+ 0x30, 0x53, 0x50, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0xf8, 0x10, 0xf0, 0x20, 0xfc, 0xc8, 0x68,
-+ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x11, 0x17, 0x39, 0x35,
-+ 0x37, 0x53, 0x55, 0x19, 0x11, 0x13, 0x00, 0x00,
-+ 0x10, 0xd0, 0x90, 0x7c, 0x10, 0xd0, 0x78, 0xb8,
-+ 0x38, 0x54, 0x54, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x7e, 0x13, 0x1a, 0x36, 0x37,
-+ 0x32, 0x52, 0x53, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0xa4, 0xe4, 0xa4, 0xb8, 0xa0, 0xa0, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x3f, 0x3c,
-+ 0x36, 0x55, 0x56, 0x15, 0x14, 0x15, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x38, 0x37,
-+ 0x34, 0x50, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0x48, 0x40, 0xfc,
-+ 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x1b, 0x36, 0x36,
-+ 0x33, 0x50, 0x51, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x58, 0xd8, 0xe8,
-+ 0xf8, 0xe0, 0x50, 0x4c, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x17, 0x18, 0x35, 0x37,
-+ 0x30, 0x53, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0xa0, 0x10, 0xe8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x19, 0x35, 0x34,
-+ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x70, 0x00, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1b, 0x37, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x68, 0x98, 0x08, 0xf8, 0x00,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2c, 0x49, 0x14, 0x22, 0x3f, 0x21,
-+ 0x5f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x20, 0xa4, 0xa8, 0x30, 0x48, 0x88, 0xfc, 0x08,
-+ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x1b, 0x36, 0x37,
-+ 0x31, 0x51, 0x51, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x50, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x7f, 0x10, 0x1f, 0x34, 0x35,
-+ 0x31, 0x51, 0x51, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x11, 0x19, 0x35, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x0e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x1b, 0x36, 0x35,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x78, 0x48, 0xfc, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x10, 0x17, 0x7c, 0x13, 0x18, 0x37, 0x35,
-+ 0x31, 0x52, 0x54, 0x18, 0x17, 0x10, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x1f, 0x04, 0x7f,
-+ 0x09, 0x1f, 0x63, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf0, 0x40, 0xfc,
-+ 0x20, 0xf0, 0x8c, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x22, 0x14, 0x7f, 0x08, 0x2a, 0x2a, 0x3e, 0x09,
-+ 0x11, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x18,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x32, 0x53, 0x54, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xfc, 0x94, 0x94, 0xf4, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x34, 0x37,
-+ 0x31, 0x56, 0x51, 0x16, 0x10, 0x11, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x98, 0xe8, 0x98, 0xe8, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x3e, 0x32, 0x2b, 0x2f, 0x7a, 0x2a, 0x47,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0xf0, 0x90, 0x94, 0x0c, 0xf8, 0x90, 0x60, 0x9c,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x1a, 0x37, 0x36,
-+ 0x33, 0x52, 0x52, 0x13, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0x50, 0xdc, 0x50, 0xdc, 0x70,
-+ 0xdc, 0x50, 0x90, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x1a, 0x37, 0x34,
-+ 0x32, 0x52, 0x54, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x40,
-+ 0x48, 0x48, 0xd0, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x32, 0x50, 0x57, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x19, 0x35, 0x35,
-+ 0x30, 0x57, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1b, 0x36, 0x37,
-+ 0x30, 0x50, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0xf8,
-+ 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x15, 0x19, 0x36, 0x34,
-+ 0x31, 0x53, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x48, 0x48, 0xa0,
-+ 0x10, 0xf8, 0x14, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x37, 0x34,
-+ 0x33, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0xbc, 0x14, 0x94, 0x54, 0xe4, 0x2c, 0x40,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1f, 0x34, 0x37,
-+ 0x32, 0x53, 0x52, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x00, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x44, 0x3c, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7c, 0x13, 0x12, 0x3b, 0x34,
-+ 0x37, 0x50, 0x51, 0x17, 0x11, 0x13, 0x00, 0x00,
-+ 0x00, 0x38, 0xe8, 0x28, 0xb0, 0xb0, 0xa8, 0x28,
-+ 0xa4, 0xa4, 0xa4, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x11, 0x11, 0x6b, 0x2a, 0x13, 0x1a, 0x2e, 0x77,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0xe8, 0xa8, 0x90, 0x98, 0xac, 0xf4,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x12, 0x19, 0x36, 0x35,
-+ 0x36, 0x51, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x00, 0xfc, 0xcc, 0x54, 0xec, 0x54, 0x64, 0xb0,
-+ 0x4c, 0xa0, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x11, 0x17, 0x11, 0x7d, 0x13, 0x1a, 0x37, 0x34,
-+ 0x33, 0x50, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xe0, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x17, 0x11, 0x7f, 0x12, 0x1b, 0x35, 0x35,
-+ 0x33, 0x53, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xb8, 0xa8, 0xb8, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x34,
-+ 0x33, 0x50, 0x53, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40,
-+ 0x58, 0x40, 0x58, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x12, 0x13, 0x14, 0x7d, 0x17, 0x15, 0x3d, 0x3f,
-+ 0x35, 0x55, 0x57, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0xe8, 0x98, 0x18, 0xc8, 0x68, 0x58, 0xd8,
-+ 0x4c, 0x78, 0xc8, 0x48, 0x48, 0xc8, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x7f,
-+ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x7c, 0x11, 0x19, 0x36, 0x36,
-+ 0x36, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0x48, 0xb4, 0xa4, 0x00, 0x20,
-+ 0xa0, 0xb8, 0xa0, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x17, 0x39, 0x35,
-+ 0x34, 0x51, 0x57, 0x11, 0x11, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0,
-+ 0xc8, 0x48, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x36, 0x37,
-+ 0x33, 0x53, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x1a, 0x36, 0x36,
-+ 0x33, 0x52, 0x55, 0x15, 0x1a, 0x11, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xa8, 0xe8, 0xa8,
-+ 0xe8, 0x90, 0xd0, 0xb4, 0xac, 0xc4, 0x00, 0x00,
-+ 0x12, 0x14, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x30, 0x57, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x48, 0x90, 0x48, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x34,
-+ 0x37, 0x50, 0x57, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x50,
-+ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x11, 0x3a, 0x34, 0x57, 0x51,
-+ 0x13, 0x7f, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x90, 0x90, 0x7c, 0x90, 0xb8, 0xb8, 0x54, 0x94,
-+ 0x10, 0xfc, 0x00, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x12, 0x3a, 0x34,
-+ 0x35, 0x56, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x98, 0x50, 0xa8, 0xa4, 0xd4,
-+ 0xf0, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7c, 0x12, 0x1a, 0x34, 0x35,
-+ 0x36, 0x53, 0x52, 0x13, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xfc, 0x98, 0x50, 0xa8, 0xa4, 0xd4, 0xf0,
-+ 0x40, 0xf8, 0x48, 0xf8, 0x58, 0xe4, 0x00, 0x00,
-+ 0x11, 0x10, 0x13, 0x7c, 0x11, 0x18, 0x37, 0x34,
-+ 0x31, 0x50, 0x57, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xc0,
-+ 0xc8, 0x68, 0xf0, 0x50, 0x4c, 0xc0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x37, 0x36,
-+ 0x33, 0x50, 0x57, 0x11, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0xf8, 0x48,
-+ 0xf8, 0x80, 0xfc, 0x90, 0x70, 0x88, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7f, 0x12, 0x1a, 0x37, 0x36,
-+ 0x33, 0x52, 0x53, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x20, 0xe0, 0x20, 0xe0, 0xbc, 0xe8, 0xe8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7f, 0x12, 0x1b, 0x35, 0x35,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xfc, 0x50, 0xf0, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x10, 0x19, 0x35, 0x35,
-+ 0x30, 0x57, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x00, 0xf0, 0x10, 0xf0,
-+ 0xa0, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x37, 0x36,
-+ 0x33, 0x52, 0x53, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x80,
-+ 0xf8, 0xa8, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x34,
-+ 0x33, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xa8, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x1b, 0x34, 0x35,
-+ 0x36, 0x53, 0x56, 0x13, 0x16, 0x11, 0x00, 0x00,
-+ 0x30, 0xc0, 0xf0, 0x80, 0xf8, 0x88, 0x78, 0x98,
-+ 0x60, 0xb8, 0x60, 0xbc, 0x64, 0xdc, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7d, 0x16, 0x17, 0x3d, 0x3d,
-+ 0x35, 0x55, 0x56, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0x78, 0x90, 0xfc, 0x00, 0x78,
-+ 0x48, 0x78, 0x48, 0x78, 0x48, 0x58, 0x00, 0x00,
-+ 0x11, 0x10, 0x12, 0x7d, 0x11, 0x1b, 0x34, 0x35,
-+ 0x31, 0x51, 0x51, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0xd0, 0x50, 0xa8, 0xa8, 0x10, 0xf8, 0x04, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7f, 0x13, 0x1a, 0x37, 0x36,
-+ 0x33, 0x50, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x11, 0x1b, 0x35, 0x35,
-+ 0x36, 0x57, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7f, 0x11, 0x18, 0x37, 0x34,
-+ 0x31, 0x50, 0x57, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x32, 0x53, 0x52, 0x15, 0x15, 0x18, 0x00, 0x00,
-+ 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x32, 0x52, 0x55, 0x15, 0x19, 0x11, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0xa8, 0x58, 0x40, 0xfc,
-+ 0xf0, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7f, 0x10, 0x19, 0x35, 0x35,
-+ 0x31, 0x51, 0x50, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x48, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x1e, 0x23, 0x7a, 0x2a, 0x3b,
-+ 0x0d, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x90, 0x50, 0x20, 0x50, 0x8c,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x11, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x35, 0x37,
-+ 0x31, 0x51, 0x52, 0x12, 0x14, 0x11, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xbc, 0xe8, 0xe8, 0x28, 0xe8,
-+ 0x10, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x3b, 0x36,
-+ 0x37, 0x51, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8,
-+ 0xb8, 0x10, 0x10, 0xa8, 0x64, 0x44, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7d, 0x11, 0x1a, 0x37, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x50, 0xe8, 0xfc, 0x00,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3f, 0x52, 0x1f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xfc, 0x20, 0x20,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x3f, 0x3e, 0x32,
-+ 0x5f, 0x01, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xf8, 0x50, 0xfc, 0x20, 0xf8,
-+ 0x20, 0x00, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7f, 0x14, 0x17, 0x3d, 0x3f,
-+ 0x34, 0x53, 0x52, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x20, 0xe0, 0x20, 0xbc, 0xc0, 0x80, 0x38, 0xc0,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1b, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x13, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0xa8, 0xfc, 0xf8, 0xe8,
-+ 0xb8, 0xf8, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x1b, 0x34, 0x35,
-+ 0x33, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0xcc, 0x74, 0xcc, 0x74, 0x90, 0xfc,
-+ 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x12, 0x3b, 0x36,
-+ 0x37, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x70, 0xf8, 0xa8,
-+ 0xfc, 0x00, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x12, 0x39, 0x37,
-+ 0x35, 0x51, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf8, 0x50, 0x60, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x88, 0x04, 0x00, 0x00,
-+ 0x11, 0x17, 0x11, 0x7f, 0x12, 0x15, 0x3f, 0x34,
-+ 0x37, 0x50, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xfc, 0x08, 0xf0, 0xfc, 0xc8,
-+ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x11, 0x11, 0x16, 0x7e, 0x11, 0x19, 0x36, 0x37,
-+ 0x31, 0x55, 0x55, 0x15, 0x19, 0x11, 0x00, 0x00,
-+ 0x10, 0x3c, 0xa8, 0xf8, 0x08, 0xfc, 0xa0, 0xf4,
-+ 0x34, 0xd8, 0xb8, 0xd4, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x34,
-+ 0x37, 0x55, 0x57, 0x15, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00,
-+ 0xfc, 0x54, 0xfc, 0x54, 0xfc, 0x44, 0x00, 0x00,
-+ 0x12, 0x12, 0x15, 0x7f, 0x12, 0x15, 0x3f, 0x34,
-+ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xac, 0xe8, 0xb4, 0xfc, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x14, 0x13, 0x7d, 0x13, 0x13, 0x3d, 0x34,
-+ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x84, 0xf4, 0x18, 0xf8, 0x14, 0xf4, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xe8, 0xa8,
-+ 0xe8, 0x48, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7c, 0x17, 0x15, 0x3e, 0x3c,
-+ 0x34, 0x55, 0x55, 0x19, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x90, 0xfc, 0xf0, 0xd8, 0x94,
-+ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x13, 0x12, 0x3b, 0x36,
-+ 0x34, 0x57, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xb8, 0xa8, 0xb8, 0xa8,
-+ 0x44, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00,
-+ 0x11, 0x12, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x31,
-+ 0x33, 0x55, 0x50, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x98, 0xe8, 0x98, 0xe8, 0xb8, 0xa8, 0xfc, 0x70,
-+ 0xc8, 0xf4, 0x40, 0xf8, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x14, 0x3e, 0x22, 0x3f, 0x3e, 0x22,
-+ 0x3f, 0x01, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xf8, 0x50, 0xfc, 0x20, 0xf8,
-+ 0x20, 0x00, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x12, 0x17, 0x3b, 0x34,
-+ 0x37, 0x55, 0x55, 0x15, 0x17, 0x15, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40,
-+ 0xfc, 0xb4, 0xb4, 0xb4, 0xfc, 0xb4, 0x00, 0x00,
-+ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7f, 0x3a, 0x57,
-+ 0x11, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0xfc, 0xb8, 0xd4,
-+ 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7f, 0x17, 0x15, 0x3f, 0x37,
-+ 0x36, 0x53, 0x53, 0x13, 0x11, 0x1e, 0x00, 0x00,
-+ 0x20, 0xfc, 0x40, 0xb8, 0xfc, 0x74, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x12, 0x7f, 0x17, 0x3d, 0x57, 0x3f, 0x2a, 0x7b,
-+ 0x36, 0x2b, 0x3f, 0x26, 0x38, 0x1f, 0x00, 0x00,
-+ 0x10, 0xfc, 0xd0, 0x78, 0xd4, 0xfc, 0x88, 0x90,
-+ 0xe8, 0x90, 0xe4, 0x08, 0xb0, 0xc0, 0x00, 0x00,
-+ 0x14, 0x1f, 0x14, 0x7f, 0x1b, 0x1f, 0x35, 0x3f,
-+ 0x3d, 0x57, 0x57, 0x15, 0x17, 0x14, 0x00, 0x00,
-+ 0x80, 0xf8, 0xa8, 0xe8, 0x78, 0xe8, 0x38, 0xe8,
-+ 0x28, 0xb8, 0xb0, 0x54, 0xd4, 0x8c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0c, 0x12, 0x7d, 0x20, 0x3f, 0x28,
-+ 0x48, 0x7f, 0x08, 0x14, 0x23, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x34, 0x1c, 0x6a, 0x08, 0x7f, 0x11, 0x28,
-+ 0x7e, 0x2a, 0x2a, 0x2e, 0x29, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x41, 0x21, 0x0a, 0x14, 0x20, 0x21,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x50, 0x60, 0x90, 0x0c,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x0c, 0x12, 0x22, 0x7f, 0x02,
-+ 0x3a, 0x2a, 0x2a, 0x3a, 0x02, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x1e, 0x20, 0x7e, 0x23, 0x3e,
-+ 0x22, 0x3e, 0x3e, 0x20, 0x3e, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x11, 0x1f,
-+ 0x29, 0x6d, 0x2b, 0x33, 0x3d, 0x27, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x03, 0x3c, 0x08, 0x7f, 0x08, 0x18, 0x6b, 0x49,
-+ 0x49, 0x6b, 0x49, 0x49, 0x7f, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x12, 0x34, 0x7f, 0x14, 0x3f, 0x15, 0x7f, 0x15,
-+ 0x3f, 0x16, 0x35, 0x35, 0x54, 0x15, 0x00, 0x00,
-+ 0x40, 0x40, 0xc0, 0x40, 0x7c, 0xa4, 0xa8, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x40, 0x5e, 0x52, 0x5e, 0x40, 0x7f,
-+ 0x6d, 0x6d, 0x7f, 0x40, 0x7f, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x7c, 0xa4, 0xa8, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x3f, 0x5e, 0x12, 0x1f, 0x7f,
-+ 0x1b, 0x2d, 0x5b, 0x2d, 0x49, 0x1b, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x07, 0x04, 0x3f, 0x2b, 0x3d, 0x27, 0x2a,
-+ 0x3b, 0x3b, 0x3b, 0x2a, 0x4f, 0x39, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xc0, 0x7c, 0xa4, 0xa8, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d,
-+ 0x3f, 0x12, 0x1a, 0x17, 0x24, 0x49, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x18, 0x29, 0x2e, 0x28, 0x3f, 0x22, 0x2a, 0x3b,
-+ 0x2a, 0x2a, 0x7f, 0x0a, 0x11, 0x61, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0xe4, 0xa8, 0xb0,
-+ 0xa0, 0xa0, 0xd0, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x3f, 0x24,
-+ 0x7f, 0x24, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x3e, 0x22, 0x3f, 0x20, 0x3e, 0x22, 0x3f,
-+ 0x09, 0x2e, 0x28, 0x28, 0x2e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x28, 0xf8, 0xa8, 0xa8, 0xb8, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x03, 0x04, 0x04, 0x0a,
-+ 0x11, 0x21, 0x00, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x10, 0x1e, 0x13, 0x32, 0x2b,
-+ 0x4c, 0x04, 0x08, 0x10, 0x20, 0x47, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0xf8,
-+ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x10, 0x1e, 0x22, 0x33, 0x4a,
-+ 0x0c, 0x04, 0x08, 0x11, 0x22, 0x44, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x1f, 0x22, 0x32, 0x4b,
-+ 0x0c, 0x04, 0x09, 0x10, 0x20, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x28, 0x44, 0x80,
-+ 0x10, 0x60, 0x88, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x1d, 0x25, 0x25, 0x57,
-+ 0x18, 0x08, 0x10, 0x11, 0x22, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x11, 0x1d, 0x26, 0x27, 0x54,
-+ 0x18, 0x0f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x48, 0x24, 0x04, 0xf8, 0x10,
-+ 0x60, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x13, 0x1c, 0x24, 0x25, 0x54,
-+ 0x08, 0x0b, 0x10, 0x10, 0x20, 0x43, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54,
-+ 0x7c, 0xc8, 0x50, 0x34, 0xdc, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x11, 0x1c, 0x24, 0x27, 0x54,
-+ 0x19, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7d, 0x11, 0x11, 0x1c, 0x25, 0x25, 0x55,
-+ 0x19, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x01, 0x7f, 0x11, 0x13, 0x1d, 0x25, 0x25, 0x57,
-+ 0x19, 0x09, 0x12, 0x14, 0x21, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x11, 0x1c, 0x27, 0x26, 0x57,
-+ 0x19, 0x09, 0x11, 0x10, 0x27, 0x40, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x00, 0xfc, 0x08, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x13, 0x1c, 0x27, 0x26, 0x57,
-+ 0x1a, 0x0b, 0x10, 0x17, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x15, 0x1d, 0x26, 0x25, 0x57,
-+ 0x19, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf8, 0x50, 0x60, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x02, 0x7e, 0x13, 0x15, 0x38, 0x2f, 0x2a, 0x6e,
-+ 0x5a, 0x1e, 0x12, 0x16, 0x23, 0x4e, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xe8, 0x68, 0x20, 0xfc, 0xa0, 0xe8,
-+ 0xa8, 0xd0, 0xd4, 0x9c, 0xec, 0x44, 0x00, 0x00,
-+ 0x01, 0x7d, 0x17, 0x11, 0x3f, 0x2a, 0x2e, 0x6a,
-+ 0x5e, 0x1a, 0x16, 0x13, 0x2e, 0x40, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0x28, 0xfc, 0xa0, 0xe8, 0xa8,
-+ 0xe8, 0xd0, 0x94, 0xec, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x10, 0x60, 0x3f,
-+ 0x08, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0xe0,
-+ 0x20, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x06, 0x38, 0x20, 0x3e, 0x22, 0x3e, 0x23, 0x3f,
-+ 0x20, 0x3e, 0x22, 0x22, 0x22, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x8c, 0x00, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x22, 0x5d,
-+ 0x00, 0x1c, 0x14, 0x16, 0x24, 0x4b, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x54, 0x8c, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x40, 0x5e, 0x52, 0x5e, 0x41, 0x7f,
-+ 0x6d, 0x6d, 0x7f, 0x40, 0x7f, 0x41, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x11, 0x11, 0x7f, 0x11,
-+ 0x11, 0x11, 0x11, 0x3f, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10,
-+ 0x10, 0x10, 0x10, 0xfc, 0x20, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x20, 0x7e, 0x33, 0x2a, 0x7f,
-+ 0x32, 0x2a, 0x3f, 0x22, 0x05, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x30, 0x48, 0xfc, 0x04, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xac, 0x2c, 0x04, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x23, 0x41, 0x0e, 0x70, 0x1f,
-+ 0x03, 0x3e, 0x03, 0x7e, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x10, 0x18, 0x64, 0x84, 0x00, 0xe0, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x08, 0x73, 0x10, 0x1e, 0x71, 0x11, 0x1c,
-+ 0x71, 0x16, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x50, 0x48, 0xf8, 0x40, 0x48, 0x68, 0x70, 0xd0,
-+ 0x48, 0x44, 0x40, 0xc4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x3f, 0x20,
-+ 0x4f, 0x03, 0x1e, 0x03, 0x3e, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xfc, 0xc8,
-+ 0x00, 0xf0, 0x00, 0xf8, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x1e, 0x03, 0x3e, 0x01, 0x06,
-+ 0x38, 0x0e, 0x38, 0x0f, 0x79, 0x0f, 0x00, 0x00,
-+ 0xc0, 0x00, 0xe0, 0x00, 0xf0, 0x08, 0xf8, 0x18,
-+ 0xe0, 0x38, 0xe0, 0x3c, 0xe4, 0x3c, 0x00, 0x00,
-+ 0x04, 0x09, 0x71, 0x12, 0x1c, 0x71, 0x12, 0x1d,
-+ 0x71, 0x12, 0x10, 0x11, 0x12, 0x0f, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0x60, 0x90, 0x50, 0x48, 0x48,
-+ 0x50, 0x60, 0x90, 0x14, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x26, 0x36, 0x37, 0x24,
-+ 0x27, 0x21, 0x2f, 0x21, 0x3f, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xfc, 0xb0, 0xb4, 0x2c, 0x60,
-+ 0x80, 0xf0, 0x00, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x3f, 0x2e, 0x2a, 0x2e, 0x3f, 0x1f,
-+ 0x11, 0x1f, 0x1f, 0x11, 0x1f, 0x70, 0x00, 0x00,
-+ 0x08, 0xd0, 0xe0, 0xa0, 0xb8, 0xe0, 0xa0, 0x20,
-+ 0x3c, 0xe0, 0x20, 0x24, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x7f, 0x42, 0x42, 0x43,
-+ 0x42, 0x46, 0x3e, 0x02, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc,
-+ 0x40, 0x20, 0x24, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x14, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x0f,
-+ 0x10, 0x7f, 0x04, 0x08, 0x10, 0x63, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x10,
-+ 0x90, 0xf0, 0x94, 0x8c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x1f,
-+ 0x12, 0x1f, 0x15, 0x18, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xf0, 0xd0,
-+ 0x50, 0xd0, 0x54, 0xcc, 0xcc, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x12,
-+ 0x0a, 0x3f, 0x07, 0x0a, 0x32, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xf0, 0x50,
-+ 0x90, 0xd0, 0x14, 0x8c, 0x4c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x7d,
-+ 0x05, 0x09, 0x09, 0x11, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x88, 0x88,
-+ 0x50, 0x60, 0x20, 0x10, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x42, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x23, 0x22, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x20, 0x23, 0x00, 0x08,
-+ 0x08, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x20, 0x20, 0x03, 0x08,
-+ 0x08, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x24, 0x24, 0x28, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x21, 0x21, 0x01, 0x09,
-+ 0x0b, 0x12, 0x10, 0x20, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x10, 0x10, 0x10,
-+ 0xf0, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x42, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x2f, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x20, 0x20, 0x02, 0x0a,
-+ 0x0a, 0x14, 0x14, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0x80, 0x80, 0x80, 0x88, 0x84,
-+ 0x84, 0x80, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x41, 0x22, 0x22, 0x07, 0x08,
-+ 0x08, 0x10, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x10, 0x10, 0x08, 0xf4, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x03, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x24, 0x27, 0x2c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x41, 0x22, 0x24, 0x00, 0x0b,
-+ 0x09, 0x10, 0x10, 0x20, 0x21, 0x2e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x70, 0x00, 0xf8,
-+ 0x08, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x27, 0x20, 0x00, 0x08,
-+ 0x09, 0x11, 0x12, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0xe0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x42, 0x27, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0x50, 0xfc, 0x50, 0x50, 0x50,
-+ 0x50, 0x70, 0x50, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0f, 0x10, 0x10, 0x20, 0x23, 0x2c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0xfc, 0x40, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x41, 0x27, 0x24, 0x04, 0x0f,
-+ 0x0d, 0x11, 0x11, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x30, 0x48, 0x48, 0x5c, 0xe4, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x00, 0x0b,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0d, 0x45, 0x25, 0x25, 0x05, 0x0d,
-+ 0x0e, 0x16, 0x14, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x58,
-+ 0x58, 0x38, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0c, 0x44, 0x24, 0x24, 0x04, 0x0c,
-+ 0x0d, 0x15, 0x16, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88, 0x88, 0xc8,
-+ 0x48, 0x28, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x24, 0x24, 0x28, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0xe0,
-+ 0x30, 0x28, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x21, 0x21, 0x01, 0x09,
-+ 0x09, 0x11, 0x11, 0x21, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x21, 0x01, 0x09,
-+ 0x09, 0x11, 0x11, 0x21, 0x21, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0x00, 0x08, 0x30,
-+ 0xc0, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x20, 0x20, 0x00, 0x0b,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x03, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x27, 0x00, 0x08,
-+ 0x08, 0x10, 0x12, 0x23, 0x24, 0x28, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xf8, 0x08, 0x10,
-+ 0x10, 0x20, 0x40, 0x80, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0b,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x2e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc,
-+ 0x20, 0x20, 0x10, 0x14, 0xcc, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x41, 0x21, 0x22, 0x00, 0x0f,
-+ 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x23, 0x02, 0x0a,
-+ 0x0b, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x20, 0x03, 0x0a,
-+ 0x0b, 0x12, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xfc, 0x44, 0x58, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x12, 0x11, 0x21, 0x48, 0x0c, 0x12, 0x12, 0x30,
-+ 0x51, 0x11, 0x12, 0x12, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0x78, 0x00, 0x00, 0x00, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x43, 0x22, 0x24, 0x0e, 0x15,
-+ 0x14, 0x25, 0x26, 0x47, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x48, 0x68, 0xa8,
-+ 0xa8, 0x68, 0x28, 0xe8, 0x28, 0x30, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x21, 0x23, 0x04, 0x08,
-+ 0x0b, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0a, 0x41, 0x21, 0x20, 0x07, 0x08,
-+ 0x08, 0x10, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x22, 0x24, 0x07, 0x08,
-+ 0x08, 0x11, 0x11, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x41, 0x22, 0x23, 0x06, 0x0b,
-+ 0x0a, 0x13, 0x12, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xc8,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x41, 0x2f, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x17, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0x28, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x78, 0x28, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x41, 0x27, 0x25, 0x05, 0x0d,
-+ 0x0d, 0x16, 0x16, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x58,
-+ 0x58, 0x38, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0a, 0x42, 0x23, 0x24, 0x04, 0x0e,
-+ 0x09, 0x11, 0x11, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x08, 0xc8, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x27, 0x20, 0x00, 0x0f,
-+ 0x08, 0x10, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x00, 0x00, 0xfc,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x20, 0x03, 0x0a,
-+ 0x0b, 0x12, 0x13, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x24, 0x20, 0x07, 0x08,
-+ 0x09, 0x11, 0x12, 0x24, 0x28, 0x23, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x80, 0x80, 0xfc, 0x80,
-+ 0x20, 0x20, 0x50, 0x48, 0xfc, 0x84, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x21, 0x21, 0x02, 0x0c,
-+ 0x09, 0x13, 0x14, 0x20, 0x21, 0x2e, 0x00, 0x00,
-+ 0x40, 0x50, 0x98, 0xe4, 0x20, 0x24, 0x9c, 0xf0,
-+ 0x10, 0x20, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x21, 0x21, 0x01, 0x0a,
-+ 0x0c, 0x10, 0x10, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x58, 0xe4,
-+ 0x44, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x4f, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0b, 0x1e, 0x12, 0x22, 0x22, 0x27, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0x50, 0xd0,
-+ 0x50, 0x50, 0x50, 0x90, 0x90, 0x10, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x41, 0x22, 0x22, 0x07, 0x09,
-+ 0x0d, 0x15, 0x12, 0x23, 0x24, 0x28, 0x00, 0x00,
-+ 0x04, 0x08, 0x70, 0x10, 0x10, 0x50, 0x5c, 0x50,
-+ 0x50, 0x50, 0x50, 0x3c, 0x80, 0x7c, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x47, 0x20, 0x23, 0x02, 0x0b,
-+ 0x0a, 0x10, 0x11, 0x22, 0x2c, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x20, 0x17, 0x10, 0x43, 0x2f, 0x23, 0x00, 0x13,
-+ 0x1f, 0x20, 0x27, 0x45, 0x47, 0x40, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xf0, 0xfc, 0xe8, 0x80, 0xf0,
-+ 0xfc, 0x10, 0xfc, 0x50, 0x30, 0x30, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x08,
-+ 0x0b, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x41, 0x21, 0x22, 0x07, 0x0a,
-+ 0x0b, 0x12, 0x13, 0x22, 0x20, 0x20, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x50, 0x48, 0xfc, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x0c, 0x0a, 0x43, 0x27, 0x21, 0x01, 0x0f,
-+ 0x09, 0x11, 0x12, 0x24, 0x28, 0x20, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0x28, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x28, 0xa8, 0x68, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0b, 0x42, 0x22, 0x22, 0x03, 0x0a,
-+ 0x0a, 0x12, 0x13, 0x26, 0x24, 0x28, 0x00, 0x00,
-+ 0x08, 0x48, 0x58, 0xd8, 0xe8, 0x48, 0xf8, 0x48,
-+ 0xe8, 0xd8, 0x58, 0x48, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x1f, 0x11, 0x41, 0x29, 0x2e, 0x0a, 0x1a,
-+ 0x19, 0x2e, 0x28, 0x49, 0x4f, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xa8, 0xa8, 0xc8, 0xc8,
-+ 0xa8, 0xa8, 0x98, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x47, 0x21, 0x21, 0x01, 0x09,
-+ 0x09, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x41, 0x23, 0x24, 0x00, 0x0b,
-+ 0x08, 0x12, 0x11, 0x21, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0x40, 0xf8,
-+ 0x40, 0x48, 0x48, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xe8,
-+ 0xa8, 0xa8, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x09, 0x08, 0x43, 0x27, 0x20, 0x01, 0x09,
-+ 0x0b, 0x15, 0x19, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x10, 0xe0, 0xd0, 0x48, 0xfc, 0x80, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x41, 0x21, 0x21, 0x02, 0x0c,
-+ 0x08, 0x17, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x18, 0xa4, 0x44,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x23, 0x06, 0x16,
-+ 0x16, 0x2a, 0x2a, 0x42, 0x43, 0x42, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0xd0, 0x48, 0x48, 0xa4, 0xa0,
-+ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x42, 0x24, 0x23, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xe8,
-+ 0xa8, 0xa8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x24, 0x23, 0x00, 0x0f,
-+ 0x08, 0x13, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x44, 0x04, 0xf8, 0x48, 0xfc,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x20, 0x27, 0x00, 0x0b,
-+ 0x08, 0x17, 0x10, 0x21, 0x20, 0x27, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x40, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x23, 0x06, 0x16,
-+ 0x16, 0x2a, 0x2a, 0x52, 0x43, 0x42, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0xd0, 0xd0,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x08,
-+ 0x08, 0x17, 0x10, 0x20, 0x20, 0x27, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0x90, 0x50, 0x64, 0x9c, 0xa4,
-+ 0xfc, 0x90, 0x50, 0x24, 0xdc, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x20, 0x00, 0x0f,
-+ 0x08, 0x11, 0x11, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x00, 0x00, 0xfc,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x42, 0x2f, 0x22, 0x02, 0x0b,
-+ 0x0a, 0x12, 0x14, 0x24, 0x28, 0x33, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0xd0, 0x88, 0x24, 0x90,
-+ 0x90, 0xc0, 0xa0, 0x90, 0x88, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x27, 0x21, 0x01, 0x0a,
-+ 0x0c, 0x13, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x24, 0x5c,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x41, 0x23, 0x24, 0x03, 0x0a,
-+ 0x0a, 0x13, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x43, 0x22, 0x22, 0x07, 0x0a,
-+ 0x0a, 0x13, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0c, 0x47, 0x24, 0x27, 0x04, 0x0b,
-+ 0x0a, 0x13, 0x12, 0x23, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x47, 0x25, 0x25, 0x06, 0x0f,
-+ 0x08, 0x17, 0x10, 0x20, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0x58, 0x38, 0xf8,
-+ 0x80, 0xf8, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x27, 0x00, 0x0b,
-+ 0x0a, 0x12, 0x13, 0x22, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x10, 0xfc, 0x08, 0xc8,
-+ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x20, 0x11, 0x12, 0x4f, 0x25, 0x25, 0x05, 0x16,
-+ 0x14, 0x2f, 0x20, 0x41, 0x46, 0x58, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0xf8, 0x48, 0x58, 0x58, 0x38,
-+ 0x88, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x25, 0x20, 0x07, 0x08,
-+ 0x09, 0x11, 0x12, 0x24, 0x28, 0x23, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x44, 0xf4, 0x80, 0xfc, 0x80,
-+ 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x23, 0x22, 0x03, 0x08,
-+ 0x0f, 0x10, 0x13, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x47, 0x20, 0x23, 0x02, 0x0b,
-+ 0x0a, 0x13, 0x10, 0x27, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x21, 0x26, 0x01, 0x09,
-+ 0x09, 0x11, 0x11, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x20, 0x11, 0x1e, 0x42, 0x22, 0x2f, 0x02, 0x17,
-+ 0x16, 0x2a, 0x2a, 0x52, 0x42, 0x43, 0x00, 0x00,
-+ 0xa0, 0x20, 0x20, 0x24, 0x64, 0xe8, 0x70, 0xa0,
-+ 0xb0, 0xb0, 0x50, 0x48, 0x88, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x21, 0x01, 0x08,
-+ 0x0f, 0x10, 0x11, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x70, 0x00, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x23, 0x22, 0x03, 0x08,
-+ 0x0f, 0x10, 0x11, 0x22, 0x2c, 0x20, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x44,
-+ 0xe4, 0xe8, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x10, 0x0a, 0x0a, 0x42, 0x23, 0x20, 0x07, 0x08,
-+ 0x0b, 0x12, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x80,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x41, 0x21, 0x21, 0x00, 0x0b,
-+ 0x0a, 0x17, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xf8, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x09, 0x0f, 0x41, 0x21, 0x27, 0x01, 0x09,
-+ 0x09, 0x17, 0x11, 0x22, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0xfc, 0x10, 0x10, 0x7c, 0x90, 0x10, 0x7c,
-+ 0x90, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x49, 0x2f, 0x29, 0x09, 0x1f,
-+ 0x19, 0x29, 0x2f, 0x49, 0x40, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x70, 0x68, 0x68, 0xa4, 0x2c,
-+ 0x28, 0x70, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x41, 0x27, 0x25, 0x05, 0x0d,
-+ 0x0d, 0x15, 0x15, 0x25, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x00, 0xf8, 0x28, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x28, 0xf8, 0x08, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x28, 0x17, 0x11,
-+ 0x12, 0x23, 0x2e, 0x42, 0x42, 0x47, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xf8, 0xa8, 0x28, 0x28,
-+ 0x28, 0xa8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x22, 0x1f, 0x12, 0x43, 0x20, 0x2f, 0x08, 0x1e,
-+ 0x1a, 0x2a, 0x2d, 0x48, 0x48, 0x48, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xe0, 0x80, 0xf8, 0x88, 0xe8,
-+ 0xa8, 0xa8, 0xd8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x11, 0x08, 0x08, 0x41, 0x23, 0x2c, 0x07, 0x0c,
-+ 0x0e, 0x15, 0x16, 0x25, 0x24, 0x25, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x42, 0x2f, 0x22, 0x02, 0x0b,
-+ 0x0a, 0x12, 0x12, 0x24, 0x24, 0x2b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0xc0, 0xf8, 0x08, 0x90,
-+ 0x90, 0xfc, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0a, 0x1f,
-+ 0x12, 0x27, 0x26, 0x4a, 0x52, 0x42, 0x00, 0x00,
-+ 0x08, 0x28, 0xe8, 0x28, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0x28, 0xa8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x24, 0x21, 0x00, 0x08,
-+ 0x0b, 0x10, 0x17, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x18, 0xf0, 0x88, 0x44, 0x54, 0x90, 0xa0, 0x50,
-+ 0xf8, 0x48, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x27, 0x20, 0x01, 0x0f,
-+ 0x08, 0x13, 0x12, 0x22, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0xf8,
-+ 0x08, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x09,
-+ 0x09, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48, 0x48,
-+ 0x50, 0xfc, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0c, 0x47, 0x24, 0x25, 0x06, 0x0d,
-+ 0x0e, 0x15, 0x16, 0x25, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0xd8, 0xd8, 0x68,
-+ 0xe8, 0x58, 0x58, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x24, 0x23, 0x01, 0x08,
-+ 0x0f, 0x10, 0x13, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x40, 0xf8, 0x10, 0xa0,
-+ 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x27, 0x05, 0x09,
-+ 0x0f, 0x10, 0x17, 0x21, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xfc, 0x28, 0xd0,
-+ 0x1c, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x28, 0x14, 0x15, 0x4f, 0x22, 0x2a, 0x0a, 0x1a,
-+ 0x1f, 0x2a, 0x22, 0x42, 0x44, 0x49, 0x00, 0x00,
-+ 0x80, 0xb8, 0x28, 0xe8, 0x28, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0x48, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x41, 0x22, 0x25, 0x01, 0x09,
-+ 0x09, 0x12, 0x13, 0x25, 0x29, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0,
-+ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x0a, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x08,
-+ 0x0b, 0x11, 0x10, 0x20, 0x21, 0x2e, 0x00, 0x00,
-+ 0x40, 0x58, 0x48, 0x58, 0x48, 0x58, 0x48, 0x40,
-+ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x24, 0x20, 0x03, 0x0a,
-+ 0x0a, 0x13, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x24, 0x80, 0x38, 0x08,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x27, 0x24, 0x3f, 0x25, 0x26,
-+ 0x3d, 0x24, 0x24, 0x27, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xf8, 0xa0, 0xfc, 0x50, 0x48,
-+ 0x54, 0xd0, 0xe0, 0x50, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x25, 0x24, 0x07, 0x14,
-+ 0x15, 0x24, 0x25, 0x49, 0x49, 0x51, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x02, 0x0b,
-+ 0x0a, 0x10, 0x17, 0x21, 0x20, 0x20, 0x00, 0x00,
-+ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x41, 0x20, 0x27, 0x04, 0x08,
-+ 0x0f, 0x10, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40,
-+ 0xfc, 0x40, 0x78, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x45, 0x21, 0x21, 0x01, 0x09,
-+ 0x08, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x23, 0x3c, 0x20, 0x22, 0x1e, 0x08, 0x0a,
-+ 0x7a, 0x1c, 0x2c, 0x2a, 0x49, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x49, 0x29, 0x2f, 0x09, 0x1f,
-+ 0x18, 0x2f, 0x28, 0x4f, 0x48, 0x49, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x50, 0x50, 0x50, 0xfc, 0x20,
-+ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x01, 0x13,
-+ 0x16, 0x1b, 0x23, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0x20, 0xfc,
-+ 0x40, 0xf8, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x20, 0x1f, 0x10, 0x47, 0x24, 0x27, 0x05, 0x15,
-+ 0x15, 0x27, 0x26, 0x4b, 0x4a, 0x51, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0xf8, 0x48, 0xf8, 0x04, 0xfc, 0x00, 0x00,
-+ 0x20, 0x17, 0x10, 0x4f, 0x20, 0x27, 0x00, 0x17,
-+ 0x10, 0x27, 0x25, 0x45, 0x47, 0x45, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x90, 0x10, 0x10,
-+ 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x42, 0x2f, 0x22, 0x02, 0x0b,
-+ 0x08, 0x11, 0x1f, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0xfc, 0x10, 0x08, 0xf4, 0x10, 0x10, 0xf0,
-+ 0xc8, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x24, 0x24, 0x3f, 0x04, 0x7f, 0x15, 0x24, 0x45,
-+ 0x01, 0x7f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0xf0, 0x90, 0xfc, 0x90, 0x30,
-+ 0x08, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x41, 0x21, 0x22, 0x07, 0x08,
-+ 0x0b, 0x1d, 0x10, 0x21, 0x20, 0x23, 0x00, 0x00,
-+ 0x40, 0x90, 0xf8, 0x10, 0x98, 0x64, 0xfc, 0xa0,
-+ 0x50, 0xac, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0a, 0x1f,
-+ 0x13, 0x26, 0x26, 0x4a, 0x52, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0x20, 0xfc, 0xe4, 0xa8, 0xb0,
-+ 0x20, 0xa0, 0xd0, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x25, 0x15, 0x1f, 0x45, 0x25, 0x28, 0x0f, 0x18,
-+ 0x17, 0x24, 0x24, 0x44, 0x44, 0x40, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0xd4, 0x0c, 0xfc, 0x88,
-+ 0xf0, 0x90, 0x90, 0x90, 0xe0, 0x80, 0x00, 0x00,
-+ 0x20, 0x1e, 0x12, 0x42, 0x2e, 0x28, 0x08, 0x1f,
-+ 0x1a, 0x22, 0x22, 0x42, 0x42, 0x4d, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xfc,
-+ 0xa8, 0xa8, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x45, 0x25, 0x2d, 0x15, 0x15,
-+ 0x15, 0x25, 0x25, 0x45, 0x45, 0x44, 0x00, 0x00,
-+ 0x20, 0x20, 0x7c, 0x48, 0xb0, 0x30, 0xec, 0x20,
-+ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x11, 0x0f, 0x08, 0x43, 0x20, 0x27, 0x03, 0x09,
-+ 0x08, 0x17, 0x10, 0x21, 0x26, 0x20, 0x00, 0x00,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xf0, 0xc0,
-+ 0x68, 0xe8, 0xd0, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x20, 0x1f, 0x14, 0x47, 0x24, 0x25, 0x07, 0x10,
-+ 0x1f, 0x28, 0x29, 0x4f, 0x48, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0x50, 0x50, 0xd0, 0x30, 0xf0, 0x80,
-+ 0xf8, 0xc8, 0x28, 0xd8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x27, 0x24, 0x06, 0x0d,
-+ 0x0e, 0x15, 0x15, 0x26, 0x27, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf8, 0xa8, 0x68, 0x68,
-+ 0xd8, 0xc8, 0xa8, 0x58, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x47, 0x21, 0x27, 0x01, 0x09,
-+ 0x0e, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x47, 0x25, 0x24, 0x07, 0x14,
-+ 0x17, 0x24, 0x29, 0x4f, 0x51, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0xf0, 0x60, 0xfc, 0x40,
-+ 0xf8, 0x88, 0x90, 0x7c, 0x10, 0x30, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2a, 0x2a, 0x0a, 0x13,
-+ 0x12, 0x23, 0x22, 0x43, 0x44, 0x48, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xd8, 0xdc, 0x94, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x20, 0x12, 0x12, 0x42, 0x22, 0x2f, 0x02, 0x1a,
-+ 0x1b, 0x2a, 0x2a, 0x4b, 0x4e, 0x58, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x10, 0x50,
-+ 0xdc, 0x50, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x20, 0x1f, 0x12, 0x4a, 0x26, 0x24, 0x0b, 0x12,
-+ 0x1b, 0x2a, 0x2a, 0x4b, 0x4e, 0x58, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xe8, 0xa8, 0xc8, 0xb0, 0x10,
-+ 0xdc, 0x50, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x47, 0x20, 0x23, 0x07, 0x09,
-+ 0x09, 0x16, 0x17, 0x21, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0xb8, 0x28,
-+ 0xb8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x22, 0x1f, 0x1a, 0x4a, 0x2f, 0x26, 0x07, 0x1a,
-+ 0x13, 0x22, 0x23, 0x42, 0x43, 0x42, 0x00, 0x00,
-+ 0x10, 0xfc, 0x50, 0x50, 0xfc, 0xb0, 0x34, 0x4c,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x26, 0x16, 0x1f, 0x4a, 0x3f, 0x25, 0x05, 0x15,
-+ 0x1b, 0x22, 0x23, 0x42, 0x43, 0x42, 0x00, 0x00,
-+ 0x30, 0x30, 0xfc, 0x50, 0xfc, 0x30, 0xb4, 0x4c,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x01, 0x09,
-+ 0x09, 0x11, 0x11, 0x27, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x22, 0x1a, 0x1a, 0x4a, 0x2f, 0x20, 0x0f, 0x10,
-+ 0x1f, 0x22, 0x2f, 0x42, 0x43, 0x5c, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xbc, 0x48, 0xe8, 0xa8,
-+ 0xb0, 0x10, 0x90, 0x28, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x0b, 0x09, 0x47, 0x23, 0x22, 0x03, 0x0a,
-+ 0x0b, 0x10, 0x13, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x41, 0x2f, 0x20, 0x01, 0x0e,
-+ 0x0b, 0x12, 0x13, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x27, 0x20, 0x07, 0x0c,
-+ 0x0f, 0x14, 0x12, 0x22, 0x23, 0x2c, 0x00, 0x00,
-+ 0x10, 0x10, 0xe0, 0x28, 0xc8, 0x10, 0xd0, 0x64,
-+ 0xc4, 0x88, 0x88, 0xd0, 0x20, 0x40, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x22, 0x03, 0x08,
-+ 0x0b, 0x12, 0x13, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xb8, 0xa8, 0xa8, 0xb8, 0xa0,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x47, 0x24, 0x27, 0x04, 0x17,
-+ 0x14, 0x27, 0x25, 0x4a, 0x4c, 0x50, 0x00, 0x00,
-+ 0x40, 0xfc, 0xd8, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc,
-+ 0xa8, 0xf8, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x23, 0x23, 0x0d, 0x09,
-+ 0x09, 0x11, 0x12, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x23, 0x22, 0x03, 0x0a,
-+ 0x0b, 0x10, 0x17, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8,
-+ 0x58, 0x40, 0xfc, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x29, 0x0f, 0x19,
-+ 0x1f, 0x22, 0x3f, 0x42, 0x42, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0xb0, 0x50, 0x48, 0xfc, 0x20, 0x20,
-+ 0xfc, 0x20, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x20, 0x27, 0x04, 0x0f,
-+ 0x08, 0x17, 0x10, 0x21, 0x26, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xbc, 0xa4, 0xbc,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x20, 0x23, 0x00, 0x0f,
-+ 0x09, 0x17, 0x10, 0x23, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x20, 0x13, 0x1c, 0x47, 0x24, 0x27, 0x04, 0x17,
-+ 0x14, 0x24, 0x25, 0x49, 0x49, 0x51, 0x00, 0x00,
-+ 0x80, 0xf0, 0x40, 0xfc, 0xa4, 0x1c, 0xf0, 0xfc,
-+ 0xf0, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x09, 0x07, 0x41, 0x23, 0x22, 0x0b,
-+ 0x0a, 0x13, 0x12, 0x23, 0x21, 0x2e, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x43, 0x22, 0x27, 0x03, 0x08,
-+ 0x0b, 0x1c, 0x13, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0xa0,
-+ 0xf8, 0x04, 0xf8, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x20, 0x1f, 0x11, 0x4f, 0x25, 0x25, 0x07, 0x1a,
-+ 0x13, 0x22, 0x23, 0x42, 0x44, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0x48, 0xb0, 0xa8, 0xa8, 0xb8, 0x14,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x01, 0x0e,
-+ 0x0b, 0x12, 0x17, 0x23, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x10, 0xe8,
-+ 0x30, 0xa8, 0xfc, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x21, 0x02, 0x09,
-+ 0x0f, 0x11, 0x11, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0xe8, 0x10, 0x48, 0xa8, 0xf0,
-+ 0x1c, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x20, 0x1f, 0x12, 0x4c, 0x2f, 0x29, 0x0e, 0x1b,
-+ 0x1c, 0x29, 0x2e, 0x4b, 0x4c, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0xb0, 0x88, 0xf8, 0x98, 0xe8, 0xa8,
-+ 0xd8, 0x98, 0xe8, 0xa8, 0xd8, 0x98, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x45, 0x22, 0x24, 0x03, 0x0a,
-+ 0x0f, 0x10, 0x13, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x74, 0xf8, 0xa8,
-+ 0xfc, 0x00, 0xf8, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x45, 0x22, 0x24, 0x01, 0x0f,
-+ 0x09, 0x11, 0x11, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf0, 0x58, 0xe4, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x22, 0x13, 0x12, 0x47, 0x24, 0x2c, 0x05, 0x14,
-+ 0x14, 0x24, 0x25, 0x44, 0x44, 0x45, 0x00, 0x00,
-+ 0x50, 0x54, 0xd8, 0xfc, 0x88, 0x50, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x11, 0x0f, 0x09, 0x43, 0x22, 0x24, 0x07, 0x08,
-+ 0x0f, 0x10, 0x13, 0x20, 0x23, 0x20, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xfc, 0xe8, 0x00, 0xfc, 0xc8,
-+ 0x68, 0xf0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x47, 0x22, 0x23, 0x02, 0x0b,
-+ 0x08, 0x13, 0x1e, 0x29, 0x25, 0x24, 0x00, 0x00,
-+ 0x40, 0xfc, 0x88, 0x38, 0x08, 0xb8, 0x08, 0xf8,
-+ 0x80, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x47, 0x21, 0x27, 0x00, 0x0b,
-+ 0x0f, 0x12, 0x13, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0xfc, 0x28, 0xc8, 0x50, 0xfc, 0xe0, 0x58,
-+ 0xfc, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x49, 0x2f, 0x29, 0x09, 0x1f,
-+ 0x19, 0x29, 0x2f, 0x46, 0x49, 0x51, 0x00, 0x00,
-+ 0x50, 0x48, 0x5c, 0xe8, 0x28, 0x34, 0xcc, 0x54,
-+ 0x5c, 0xe8, 0x28, 0x14, 0x6c, 0x84, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x47, 0x24, 0x27, 0x0f, 0x12,
-+ 0x1f, 0x26, 0x39, 0x42, 0x4c, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0x20,
-+ 0xfc, 0xb0, 0xcc, 0xb0, 0x88, 0x80, 0x00, 0x00,
-+ 0x11, 0x0f, 0x08, 0x41, 0x27, 0x21, 0x02, 0x0d,
-+ 0x09, 0x11, 0x11, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x10, 0xfc, 0x40, 0xf0, 0xfc, 0x10, 0xe8, 0xf4,
-+ 0x10, 0xf0, 0xf8, 0x50, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x22, 0x1f, 0x1d, 0x4b, 0x3e, 0x22, 0x05, 0x1f,
-+ 0x12, 0x2f, 0x2a, 0x47, 0x43, 0x4e, 0x00, 0x00,
-+ 0x08, 0xc8, 0x68, 0x68, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x28, 0xe8, 0xa8, 0x08, 0x88, 0x18, 0x00, 0x00,
-+ 0x20, 0x10, 0x17, 0x44, 0x27, 0x24, 0x05, 0x15,
-+ 0x15, 0x25, 0x25, 0x4a, 0x4a, 0x54, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0xe8, 0x88, 0x78, 0xf0, 0x50,
-+ 0xf0, 0x50, 0xf8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x20, 0x1f, 0x12, 0x41, 0x27, 0x24, 0x07, 0x1e,
-+ 0x1b, 0x2f, 0x2b, 0x4e, 0x4a, 0x57, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0xf0, 0x10, 0xf0, 0xb8,
-+ 0xe8, 0x68, 0x78, 0xbc, 0xec, 0x44, 0x00, 0x00,
-+ 0x24, 0x14, 0x1f, 0x44, 0x2e, 0x2b, 0x0f, 0x1a,
-+ 0x1e, 0x25, 0x3e, 0x45, 0x44, 0x44, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0xf8, 0x48,
-+ 0xd8, 0x68, 0xd8, 0x68, 0x48, 0xd8, 0x00, 0x00,
-+ 0x22, 0x12, 0x1b, 0x44, 0x24, 0x2b, 0x02, 0x16,
-+ 0x17, 0x2a, 0x2a, 0x42, 0x42, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x50, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x20, 0x17, 0x15, 0x44, 0x27, 0x25, 0x06, 0x14,
-+ 0x15, 0x25, 0x25, 0x49, 0x4f, 0x50, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x90, 0xfc, 0xf8, 0xd4, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x20, 0x10, 0x17, 0x44, 0x27, 0x25, 0x05, 0x15,
-+ 0x15, 0x25, 0x27, 0x4a, 0x57, 0x40, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0xc8, 0x78, 0xf0, 0x50, 0xf0,
-+ 0x50, 0xf0, 0xf8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x22, 0x1f, 0x12, 0x47, 0x20, 0x3f, 0x07, 0x1a,
-+ 0x1e, 0x2f, 0x28, 0x4e, 0x4a, 0x52, 0x00, 0x00,
-+ 0x20, 0xfc, 0xa0, 0xf0, 0x90, 0xfc, 0xf0, 0xa8,
-+ 0xb8, 0xf8, 0x88, 0xb8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x20, 0x1f, 0x12, 0x43, 0x2f, 0x29, 0x09, 0x1f,
-+ 0x1b, 0x23, 0x23, 0x43, 0x43, 0x4d, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0x24, 0xfc, 0x6c, 0xfc, 0x6c,
-+ 0xb4, 0x6c, 0xfc, 0x6c, 0xb4, 0x2c, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x0f, 0x1b,
-+ 0x1b, 0x2a, 0x2b, 0x49, 0x4e, 0x48, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0x48, 0xf8, 0xf8, 0xe8,
-+ 0xe8, 0xa8, 0xe8, 0xc8, 0xb8, 0x98, 0x00, 0x00,
-+ 0x22, 0x12, 0x13, 0x44, 0x27, 0x28, 0x0f, 0x1b,
-+ 0x1b, 0x2f, 0x24, 0x44, 0x4b, 0x52, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xa0, 0xfc, 0x48, 0xe8, 0x68,
-+ 0x68, 0xd0, 0x90, 0xa8, 0x68, 0x44, 0x00, 0x00,
-+ 0x20, 0x1f, 0x10, 0x4f, 0x2d, 0x2f, 0x09, 0x1f,
-+ 0x19, 0x2f, 0x2b, 0x4a, 0x53, 0x6c, 0x00, 0x00,
-+ 0x00, 0x7c, 0x00, 0x78, 0xe8, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0xc8, 0x70, 0xc4, 0x3c, 0x00, 0x00,
-+ 0x24, 0x17, 0x1a, 0x44, 0x2e, 0x25, 0x0f, 0x1d,
-+ 0x17, 0x20, 0x27, 0x47, 0x48, 0x40, 0x00, 0x00,
-+ 0xc8, 0xec, 0x14, 0xc8, 0xdc, 0xe8, 0x3c, 0xec,
-+ 0xf0, 0x10, 0xf0, 0xf8, 0x08, 0xf0, 0x00, 0x00,
-+ 0x01, 0x03, 0x0d, 0x34, 0x02, 0x07, 0x79, 0x09,
-+ 0x09, 0x11, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xa0, 0xc0, 0x00, 0x08, 0x08,
-+ 0x10, 0x20, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x49,
-+ 0x08, 0x0c, 0x12, 0x12, 0x21, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x2c,
-+ 0x68, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x16, 0x36, 0x3a, 0x32, 0x52,
-+ 0x12, 0x1a, 0x16, 0x26, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x16, 0x36, 0x3b, 0x32, 0x52,
-+ 0x12, 0x1a, 0x16, 0x26, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xb8, 0x38, 0x18, 0xe8,
-+ 0xa8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x0a, 0x2d, 0x29, 0x2a, 0x48,
-+ 0x08, 0x0c, 0x12, 0x12, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x78, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x0a, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68,
-+ 0x98, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x0a, 0x2d, 0x29, 0x2b, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0x68, 0x98, 0x98, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x11, 0x12,
-+ 0x14, 0x10, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50, 0x48,
-+ 0x44, 0x40, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x0f, 0x00, 0x01, 0x3f, 0x05, 0x09, 0x11,
-+ 0x63, 0x1f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x88, 0x48, 0x50, 0x20, 0x10,
-+ 0x0c, 0xf0, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2d, 0x28, 0x48,
-+ 0x0b, 0x0c, 0x12, 0x12, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x50, 0x20, 0xd8,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x09, 0x09, 0x7f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x1a, 0x15, 0x24, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x00, 0xf8, 0x48, 0x28, 0x08, 0x70, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x0b, 0x2e, 0x28, 0x2f, 0x4b,
-+ 0x08, 0x0d, 0x12, 0x13, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0xf8,
-+ 0x40, 0xf0, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x47, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x20,
-+ 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x0b, 0x2a, 0x2c, 0x2b, 0x48,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x16, 0x37, 0x3a, 0x32, 0x53,
-+ 0x12, 0x1f, 0x14, 0x24, 0x21, 0x46, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0xa8, 0xb8, 0x18,
-+ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x2b, 0x29, 0x29, 0x2b, 0x22,
-+ 0x3f, 0x20, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x40, 0x44,
-+ 0x44, 0x3c, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x2f, 0x2a, 0x2f, 0x29, 0x29, 0x2f, 0x2a,
-+ 0x2f, 0x48, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x78, 0x48, 0x40, 0x44,
-+ 0xc4, 0x3c, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x27, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x24, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x28, 0x08, 0x30, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2c, 0x55, 0x22, 0x3f, 0x20, 0x5f,
-+ 0x02, 0x02, 0x1f, 0x02, 0x02, 0x02, 0x00, 0x00,
-+ 0x20, 0xa8, 0xb0, 0x50, 0x88, 0xfc, 0x08, 0xf0,
-+ 0x10, 0x10, 0xd4, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x48,
-+ 0x0b, 0x08, 0x15, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x0b, 0x2a, 0x2d, 0x28, 0x4b,
-+ 0x08, 0x0c, 0x12, 0x11, 0x22, 0x45, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x04, 0xf8, 0x40, 0xfc,
-+ 0x40, 0xf8, 0xc8, 0x30, 0x70, 0x8c, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x28, 0x4b,
-+ 0x09, 0x0d, 0x16, 0x14, 0x21, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x1f, 0x15, 0x13, 0x1f,
-+ 0x01, 0x3f, 0x01, 0x7f, 0x24, 0x42, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0xf0, 0x50, 0x90, 0xf0,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x88, 0x44, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x17, 0x37, 0x3b, 0x32, 0x53,
-+ 0x10, 0x1b, 0x14, 0x27, 0x22, 0x44, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xf8, 0x58, 0xe8, 0xf8,
-+ 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0x54, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0c, 0x12, 0x12, 0x24, 0x40, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x0b, 0x2a, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x2e, 0x3f, 0x36, 0x55,
-+ 0x2d, 0x09, 0x09, 0x12, 0x0c, 0x70, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0xfc, 0x48, 0xa8, 0x28, 0x08,
-+ 0x18, 0x10, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x3e, 0x08, 0x7f, 0x08, 0x7f, 0x08, 0x0e,
-+ 0x12, 0x23, 0x4c, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x50, 0x50, 0x20,
-+ 0x50, 0x88, 0x04, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x17, 0x36, 0x3b, 0x32, 0x52,
-+ 0x12, 0x1a, 0x16, 0x26, 0x23, 0x42, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xe8, 0xa8,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x68, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x0f, 0x08, 0x0f, 0x04,
-+ 0x7f, 0x0f, 0x08, 0x0f, 0x24, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0xe0, 0x20, 0xe0, 0x40,
-+ 0xfc, 0xe0, 0x20, 0xe0, 0x88, 0x44, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x14, 0x36, 0x3f, 0x30, 0x53,
-+ 0x12, 0x1b, 0x16, 0x27, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x20, 0xe8,
-+ 0x58, 0xd0, 0x54, 0xec, 0x4c, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x17, 0x35, 0x3b, 0x31, 0x51,
-+ 0x16, 0x1b, 0x14, 0x24, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x14, 0x37, 0x3a, 0x33, 0x50,
-+ 0x13, 0x18, 0x15, 0x27, 0x21, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xc8, 0xa8, 0x28,
-+ 0xb0, 0x90, 0xd0, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x15, 0x37, 0x38, 0x31, 0x52,
-+ 0x17, 0x1a, 0x17, 0x26, 0x23, 0x42, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x48,
-+ 0xfc, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x16, 0x35, 0x3b, 0x35, 0x51,
-+ 0x11, 0x19, 0x15, 0x25, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x16, 0x37, 0x3a, 0x33, 0x52,
-+ 0x12, 0x1b, 0x17, 0x24, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8,
-+ 0xd8, 0x48, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x11, 0x16, 0x15, 0x14, 0x3f, 0x3c, 0x34, 0x57,
-+ 0x11, 0x1b, 0x15, 0x25, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xac, 0xac, 0xc4, 0xf8,
-+ 0x28, 0xa8, 0x10, 0x10, 0xa8, 0x44, 0x00, 0x00,
-+ 0x12, 0x11, 0x11, 0x14, 0x36, 0x39, 0x31, 0x57,
-+ 0x11, 0x19, 0x15, 0x25, 0x22, 0x44, 0x00, 0x00,
-+ 0x30, 0x50, 0x48, 0x84, 0xfc, 0x24, 0xf4, 0x38,
-+ 0xd8, 0x34, 0xd4, 0x10, 0xe0, 0x7c, 0x00, 0x00,
-+ 0x12, 0x11, 0x11, 0x15, 0x36, 0x39, 0x31, 0x57,
-+ 0x11, 0x19, 0x15, 0x25, 0x22, 0x44, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x48, 0x50, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x17, 0x34, 0x3b, 0x30, 0x57,
-+ 0x12, 0x1c, 0x17, 0x22, 0x22, 0x47, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xa8, 0x54, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x7a, 0x1e, 0x6c, 0x1a, 0x6a,
-+ 0x31, 0x09, 0x09, 0x12, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf4, 0x34, 0xd8, 0x34, 0xd4,
-+ 0x60, 0x10, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x15, 0x36, 0x34, 0x3a, 0x53,
-+ 0x16, 0x1f, 0x17, 0x26, 0x23, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xd8, 0xa8, 0xc8, 0x20, 0xf8,
-+ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x12, 0x12, 0x15, 0x17, 0x36, 0x3d, 0x37, 0x50,
-+ 0x17, 0x10, 0x19, 0x26, 0x24, 0x40, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xac, 0xe8, 0xb4, 0xfc, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x14, 0x3f, 0x3d, 0x35, 0x55,
-+ 0x15, 0x15, 0x1f, 0x26, 0x2a, 0x57, 0x00, 0x00,
-+ 0x80, 0xf8, 0xfc, 0xc8, 0x78, 0xf0, 0x50, 0xf0,
-+ 0x50, 0xf0, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x1f, 0x3c, 0x37, 0x37, 0x55,
-+ 0x15, 0x15, 0x1d, 0x2c, 0x27, 0x44, 0x00, 0x00,
-+ 0x00, 0xbc, 0xa4, 0xbc, 0xa4, 0xfc, 0xfc, 0xf4,
-+ 0x54, 0xf4, 0xf4, 0xe4, 0x54, 0x4c, 0x00, 0x00,
-+ 0x0f, 0x15, 0x1f, 0x1e, 0x17, 0x3f, 0x24, 0x7f,
-+ 0x0e, 0x35, 0x7f, 0x15, 0x6a, 0x1c, 0x00, 0x00,
-+ 0xf0, 0xd0, 0xf0, 0xf0, 0xd0, 0xfc, 0x28, 0xfc,
-+ 0x70, 0xac, 0xfc, 0x30, 0xcc, 0x70, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x11, 0x21, 0x5f, 0x01, 0x7f,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x30, 0xe0, 0x10, 0x08, 0x08, 0xf0, 0x10, 0xfc,
-+ 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x06, 0x3a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-+ 0x2a, 0x29, 0x29, 0x28, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x80,
-+ 0x84, 0x84, 0x7c, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x10, 0x2f, 0x42, 0x7f, 0x04,
-+ 0x07, 0x0a, 0x09, 0x10, 0x23, 0x5c, 0x00, 0x00,
-+ 0x30, 0xe0, 0x10, 0x88, 0xf8, 0x00, 0xfc, 0x00,
-+ 0xf0, 0x20, 0x40, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x11, 0x2f, 0x48, 0x0f, 0x08,
-+ 0x08, 0x0f, 0x15, 0x1a, 0x2a, 0x50, 0x00, 0x00,
-+ 0x30, 0xe0, 0x10, 0x08, 0xe8, 0x20, 0xf0, 0x10,
-+ 0x10, 0xfc, 0x24, 0x94, 0x04, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x01, 0x06, 0x38, 0x04, 0x04,
-+ 0x02, 0x02, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x20, 0x40, 0x80, 0x60, 0x10, 0x40, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x05, 0x65, 0x19, 0x09, 0x15, 0x21, 0x45,
-+ 0x25, 0x19, 0x09, 0x15, 0x27, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, 0x3f,
-+ 0x02, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x04, 0x7c,
-+ 0x15, 0x15, 0x16, 0x24, 0x24, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0xe0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x28, 0x2f, 0x29, 0x3b, 0x2c, 0x0f, 0x78,
-+ 0x2b, 0x2a, 0x2a, 0x2a, 0x2b, 0x4a, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x58, 0xe4, 0xfc, 0x00,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x24, 0x24, 0x24, 0x25, 0x3e, 0x20, 0x21, 0x3c,
-+ 0x24, 0x27, 0x24, 0x24, 0x25, 0x44, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54,
-+ 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x04, 0x00, 0x00,
-+ 0x28, 0x2f, 0x29, 0x2b, 0x3e, 0x23, 0x23, 0x39,
-+ 0x29, 0x29, 0x29, 0x29, 0x29, 0x4e, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0xf8, 0xa8, 0x38, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x29, 0x29, 0x3f, 0x29, 0x29, 0x49,
-+ 0x0f, 0x79, 0x0b, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0xd0, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x28, 0x28, 0x3f, 0x28, 0x28, 0x4b,
-+ 0x0c, 0x79, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x1d, 0x1a, 0x2a, 0x49,
-+ 0x11, 0x1f, 0x21, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0xa8, 0x28, 0x48, 0x88, 0x30,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x3c, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49,
-+ 0x11, 0x1f, 0x21, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x08, 0x18,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x09, 0x0f, 0x11, 0x3f, 0x01, 0x09, 0x28,
-+ 0x3e, 0x28, 0x4f, 0x79, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x20, 0xa0,
-+ 0xf8, 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x2b, 0x28, 0x3d, 0x29, 0x29, 0x48,
-+ 0x0f, 0x7a, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2c, 0x49, 0x14, 0x22, 0x3f, 0x29,
-+ 0x4f, 0x11, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x20, 0xa8, 0xb0, 0x20, 0x50, 0x88, 0xfc, 0x08,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x29, 0x2b, 0x3e, 0x2b, 0x2b, 0x49,
-+ 0x0d, 0x79, 0x09, 0x09, 0x09, 0x0e, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0xf8, 0xb8, 0x18, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x28, 0x29, 0x3f, 0x29, 0x28, 0x4b,
-+ 0x0d, 0x7a, 0x0b, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x90, 0xfc, 0x40, 0xf8, 0xfc, 0xe8, 0xa4, 0xfc,
-+ 0xe8, 0xa8, 0xd8, 0xd4, 0x6c, 0xc4, 0x00, 0x00,
-+ 0x04, 0x44, 0x28, 0x10, 0x37, 0x48, 0x08, 0x18,
-+ 0x28, 0x49, 0x09, 0x0a, 0x34, 0x18, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0xfc, 0xc0, 0xc0, 0xc0,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x04, 0x44, 0x28, 0x10, 0x37, 0x48, 0x08, 0x18,
-+ 0x28, 0x49, 0x0a, 0x0c, 0x30, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x60, 0x60, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x47, 0x28, 0x10, 0x30, 0x48, 0x0b, 0x18,
-+ 0x28, 0x48, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x48, 0x30, 0x13, 0x32, 0x4a, 0x0a, 0x1b,
-+ 0x2a, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x48, 0x30, 0x11, 0x31, 0x49, 0x0a, 0x1a,
-+ 0x28, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x50, 0x60, 0x40, 0x60,
-+ 0x60, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x4a, 0x0a, 0x1b,
-+ 0x2a, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x44, 0x2b, 0x10, 0x30, 0x4b, 0x0a, 0x1a,
-+ 0x2b, 0x4a, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa0,
-+ 0xfc, 0xa4, 0xa4, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x48, 0x31, 0x11, 0x33, 0x4c, 0x08, 0x19,
-+ 0x2f, 0x4a, 0x0a, 0x0a, 0x33, 0x12, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xc0, 0xc0, 0x30,
-+ 0xfc, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x31, 0x17, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4,
-+ 0x44, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x37, 0x11, 0x31, 0x4b, 0x0d, 0x18,
-+ 0x28, 0x48, 0x08, 0x09, 0x32, 0x1c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x08, 0x14, 0x14, 0xa0,
-+ 0xa0, 0x40, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x30, 0x17, 0x31, 0x49, 0x09, 0x1a,
-+ 0x2c, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x50, 0xe8,
-+ 0x44, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x48, 0x0b, 0x1a,
-+ 0x2b, 0x4a, 0x0b, 0x0a, 0x32, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x15, 0x16, 0x34, 0x57, 0x14,
-+ 0x14, 0x17, 0x14, 0x14, 0x11, 0x16, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x90, 0x60, 0xe0, 0x1c, 0x50,
-+ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x04, 0x44, 0x2b, 0x10, 0x30, 0x49, 0x0f, 0x18,
-+ 0x29, 0x49, 0x09, 0x09, 0x30, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xa0, 0x10, 0xfc, 0x08,
-+ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x4a, 0x0a, 0x1b,
-+ 0x28, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00,
-+ 0x80, 0x38, 0x08, 0x08, 0xb8, 0x08, 0x08, 0xf8,
-+ 0xa0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x4f, 0x30, 0x13, 0x30, 0x4f, 0x08, 0x1b,
-+ 0x2a, 0x4a, 0x0b, 0x0a, 0x32, 0x12, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x49, 0x31, 0x11, 0x31, 0x49, 0x09, 0x18,
-+ 0x2b, 0x4a, 0x0b, 0x0a, 0x33, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x48, 0x37, 0x11, 0x31, 0x4a, 0x0c, 0x18,
-+ 0x2f, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0xa8, 0x44, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x09, 0x49, 0x31, 0x12, 0x33, 0x4e, 0x0a, 0x1a,
-+ 0x2b, 0x4b, 0x0a, 0x0a, 0x32, 0x13, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xfc, 0x80, 0xf8, 0xa0,
-+ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x4a, 0x32, 0x13, 0x30, 0x4f, 0x08, 0x1b,
-+ 0x2a, 0x4a, 0x0a, 0x0a, 0x32, 0x12, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x13, 0x32, 0x4b, 0x09, 0x19,
-+ 0x2a, 0x4d, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40, 0xf8,
-+ 0x40, 0xf0, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x13, 0x32, 0x4b, 0x08, 0x1f,
-+ 0x29, 0x49, 0x09, 0x09, 0x31, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc,
-+ 0x48, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x12, 0x32, 0x4f, 0x0c, 0x1b,
-+ 0x2a, 0x4b, 0x0a, 0x0b, 0x32, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0xfc, 0x08, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x24, 0x24, 0x3f, 0x25, 0x04, 0x7f, 0x25, 0x24,
-+ 0x45, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0xfc, 0x10, 0xb0,
-+ 0x20, 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x09, 0x4f, 0x31, 0x13, 0x32, 0x4b, 0x0a, 0x1b,
-+ 0x28, 0x4f, 0x08, 0x08, 0x31, 0x16, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2e, 0x2c, 0x3f, 0x04, 0x3f,
-+ 0x04, 0x07, 0x78, 0x15, 0x2a, 0x40, 0x00, 0x00,
-+ 0x10, 0x98, 0x94, 0x94, 0x90, 0xfc, 0x10, 0x90,
-+ 0x10, 0x90, 0x28, 0x28, 0xc4, 0x84, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x25, 0x35, 0x57, 0x15, 0x17,
-+ 0x37, 0x37, 0x57, 0x19, 0x1a, 0x34, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0x50, 0x90, 0xfc, 0x34, 0x58,
-+ 0x58, 0xd0, 0x30, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x48, 0x31, 0x16, 0x33, 0x4b, 0x0a, 0x1b,
-+ 0x29, 0x49, 0x09, 0x09, 0x31, 0x11, 0x00, 0x00,
-+ 0x40, 0xa0, 0xf0, 0x0c, 0xf8, 0x58, 0xe8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x13, 0x31, 0x49, 0x0a, 0x1f,
-+ 0x2a, 0x4b, 0x08, 0x08, 0x37, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x00, 0xf8, 0x88, 0xe8,
-+ 0xa8, 0xe8, 0xa8, 0xf8, 0x18, 0x30, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x16, 0x32, 0x4c, 0x0b, 0x1a,
-+ 0x2b, 0x48, 0x0f, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x70, 0xf8, 0xa8,
-+ 0xf8, 0x00, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x77, 0x55, 0x77, 0x3f, 0x25, 0x3f, 0x25, 0x3f,
-+ 0x7f, 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0x24, 0x20, 0xfc, 0x20, 0x20,
-+ 0xa0, 0x30, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x0a, 0x4c, 0x32, 0x13, 0x32, 0x4b, 0x0b, 0x1b,
-+ 0x2a, 0x4b, 0x0a, 0x0a, 0x33, 0x16, 0x00, 0x00,
-+ 0x48, 0x90, 0x48, 0xf8, 0xe8, 0xa8, 0xf8, 0x68,
-+ 0xd8, 0x68, 0xd8, 0x4c, 0x6c, 0x44, 0x00, 0x00,
-+ 0x04, 0x07, 0x3f, 0x2d, 0x37, 0x3f, 0x2f, 0x29,
-+ 0x2f, 0x3f, 0x36, 0x3f, 0x32, 0x52, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa4, 0x24, 0x20, 0xfc, 0x20, 0x20,
-+ 0x30, 0xb0, 0xd0, 0xc8, 0x88, 0x84, 0x00, 0x00,
-+ 0x12, 0x52, 0x2f, 0x22, 0x3f, 0x5a, 0x1a, 0x3f,
-+ 0x32, 0x57, 0x16, 0x1a, 0x12, 0x62, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0x48, 0xf8, 0xc8, 0xf8, 0xc8,
-+ 0x78, 0x48, 0xf8, 0x30, 0x48, 0x88, 0x00, 0x00,
-+ 0x02, 0x02, 0x7a, 0x12, 0x1f, 0x12, 0x7a, 0x12,
-+ 0x12, 0x12, 0x1c, 0x64, 0x08, 0x13, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7d, 0x12, 0x12, 0x17, 0x7a, 0x12,
-+ 0x12, 0x12, 0x1a, 0x62, 0x02, 0x02, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0x24, 0x3c, 0xe0, 0x20, 0x20,
-+ 0x20, 0x10, 0x14, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7d, 0x11, 0x12, 0x14, 0x7c, 0x11,
-+ 0x11, 0x11, 0x1a, 0x64, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x48, 0x50, 0x40, 0x60,
-+ 0x50, 0x48, 0x44, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x12, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x1a, 0x64, 0x05, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x11, 0x11, 0x11, 0x7d, 0x11,
-+ 0x11, 0x11, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x07, 0x7d, 0x11, 0x11, 0x11, 0x7d, 0x11,
-+ 0x11, 0x11, 0x19, 0x67, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x07, 0x7c, 0x17, 0x14, 0x14, 0x7f, 0x16,
-+ 0x16, 0x16, 0x1e, 0x66, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0x90, 0xf0, 0xb0,
-+ 0xb0, 0xb0, 0xb4, 0xec, 0x8c, 0x84, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x11, 0x13, 0x14, 0x7c, 0x11,
-+ 0x17, 0x12, 0x1a, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xc0, 0xc0, 0x30,
-+ 0xfc, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x07, 0x7c, 0x13, 0x12, 0x12, 0x7f, 0x10,
-+ 0x13, 0x12, 0x1f, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xb8, 0xa8, 0xa8, 0xb8, 0xa0,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x7d, 0x11, 0x11, 0x11, 0x7d, 0x11,
-+ 0x11, 0x11, 0x1d, 0x61, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x24, 0x24, 0x18, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x14, 0x17, 0x14, 0x7c, 0x17,
-+ 0x14, 0x15, 0x1c, 0x65, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xe8,
-+ 0x64, 0xa4, 0xa4, 0x78, 0x60, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x13, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x1c, 0x64, 0x09, 0x12, 0x00, 0x00,
-+ 0x40, 0x78, 0x40, 0xfc, 0x48, 0x78, 0xc8, 0x38,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x03, 0x7c, 0x10, 0x11, 0x10, 0x7c, 0x17,
-+ 0x10, 0x11, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x17, 0x10, 0x10, 0x7f, 0x10,
-+ 0x10, 0x11, 0x1f, 0x61, 0x02, 0x04, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0,
-+ 0xa0, 0xbc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x02, 0x01, 0x7d, 0x14, 0x12, 0x12, 0x7d, 0x11,
-+ 0x11, 0x12, 0x1e, 0x64, 0x05, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x30, 0x48, 0x78, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x07, 0x7c, 0x14, 0x17, 0x14, 0x7c, 0x17,
-+ 0x14, 0x14, 0x1f, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x88, 0x00, 0xf8,
-+ 0x48, 0x28, 0xb0, 0x10, 0x28, 0xc4, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x17, 0x10, 0x13, 0x7e, 0x13,
-+ 0x12, 0x13, 0x18, 0x67, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7e, 0x08, 0x3e, 0x08, 0x7e, 0x02, 0x01,
-+ 0x05, 0x14, 0x14, 0x25, 0x46, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x20,
-+ 0x50, 0x48, 0x84, 0x14, 0x10, 0xf0, 0x00, 0x00,
-+ 0x02, 0x02, 0x7c, 0x12, 0x12, 0x10, 0x7f, 0x12,
-+ 0x13, 0x12, 0x1a, 0x63, 0x03, 0x02, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0x48, 0x48, 0x80, 0xf8, 0x28,
-+ 0xa8, 0x48, 0xa8, 0x18, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x12, 0x12, 0x12, 0x7d, 0x11,
-+ 0x11, 0x11, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xe8, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x00, 0x7c, 0x11, 0x13, 0x14, 0x7f, 0x14,
-+ 0x16, 0x15, 0x1e, 0x65, 0x04, 0x05, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x08, 0x0a, 0x2a, 0x2c, 0x55, 0x22, 0x3f, 0x20,
-+ 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x28, 0xa8, 0xb0, 0x50, 0x88, 0xfc, 0x08,
-+ 0xf8, 0x00, 0xf0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x12, 0x13, 0x12, 0x7e, 0x13,
-+ 0x10, 0x10, 0x1d, 0x61, 0x02, 0x0c, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xd0, 0xd0, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x01, 0x7d, 0x12, 0x17, 0x12, 0x7f, 0x12,
-+ 0x13, 0x12, 0x1b, 0x60, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0xfc, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0xb0, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x13, 0x12, 0x13, 0x7e, 0x13,
-+ 0x12, 0x10, 0x1e, 0x65, 0x09, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x24, 0x94, 0x54, 0x44, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x11, 0x11, 0x10, 0x7f, 0x10,
-+ 0x17, 0x12, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x38, 0xc8, 0x48, 0x50, 0x20, 0x40, 0xf8, 0x40,
-+ 0xfc, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x07, 0x7d, 0x11, 0x13, 0x12, 0x7f, 0x10,
-+ 0x13, 0x10, 0x1d, 0x60, 0x07, 0x00, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf0, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x7d, 0x10, 0x17, 0x11, 0x7d, 0x11,
-+ 0x11, 0x15, 0x18, 0x67, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x02, 0x7d, 0x17, 0x11, 0x10, 0x7f, 0x10,
-+ 0x11, 0x10, 0x1f, 0x60, 0x01, 0x06, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3e, 0x21, 0x3e, 0x53, 0x1e,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x00, 0xf0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x7e, 0x13, 0x12, 0x13, 0x7d, 0x11,
-+ 0x11, 0x15, 0x19, 0x67, 0x00, 0x07, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0xf8, 0xa8, 0xf8, 0x10, 0xf0,
-+ 0xf0, 0x10, 0xf8, 0x10, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x01, 0x07, 0x7a, 0x12, 0x17, 0x10, 0x7f, 0x14,
-+ 0x17, 0x14, 0x1f, 0x64, 0x04, 0x05, 0x00, 0x00,
-+ 0x20, 0xfc, 0xa0, 0xb8, 0xc8, 0x38, 0xa0, 0xb8,
-+ 0xa0, 0xb8, 0xa0, 0xb8, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x00, 0x07, 0x7c, 0x17, 0x17, 0x14, 0x7f, 0x13,
-+ 0x14, 0x17, 0x18, 0x61, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0xbc, 0xa4, 0xbc, 0xbc, 0xa4, 0xbc, 0x28,
-+ 0xc4, 0xfc, 0x90, 0xd0, 0x78, 0x84, 0x00, 0x00,
-+ 0x00, 0x04, 0x7a, 0x12, 0x10, 0x10, 0x7f, 0x11,
-+ 0x11, 0x13, 0x1c, 0x60, 0x01, 0x0e, 0x00, 0x00,
-+ 0x84, 0x44, 0x48, 0x10, 0x80, 0x80, 0xfc, 0x10,
-+ 0x10, 0xa0, 0x60, 0x50, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x19, 0x25, 0x5f, 0x01, 0x7f,
-+ 0x11, 0x1d, 0x25, 0x06, 0x06, 0x1d, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x50, 0x70, 0x58, 0x78, 0xc4, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x2b, 0x2b, 0x2b, 0x7f, 0x13,
-+ 0x1f, 0x73, 0x15, 0x15, 0x2f, 0x48, 0x00, 0x00,
-+ 0x50, 0x90, 0xfc, 0xa8, 0xa8, 0xa8, 0xfc, 0x90,
-+ 0x90, 0x7c, 0xd0, 0xd0, 0x30, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x13, 0x12, 0x1a,
-+ 0x16, 0x16, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x12, 0x1b, 0x16,
-+ 0x16, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00,
-+ 0x07, 0x04, 0x19, 0x61, 0x02, 0x1f, 0x00, 0x7f,
-+ 0x04, 0x07, 0x05, 0x08, 0x0f, 0x70, 0x00, 0x00,
-+ 0xc0, 0x40, 0x30, 0x8c, 0x60, 0x90, 0x00, 0xfc,
-+ 0x00, 0xe0, 0x20, 0xa4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x10, 0x1e, 0x12, 0x1a, 0x16,
-+ 0x16, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x20, 0x2c, 0xf0, 0x20, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0x20, 0x28, 0x1c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x13, 0x1a, 0x16,
-+ 0x16, 0x12, 0x13, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x48, 0x88, 0xfc, 0x48, 0x48,
-+ 0x48, 0x88, 0x30, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x10, 0x1e, 0x13, 0x1a, 0x16,
-+ 0x17, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x78, 0xc0, 0x40, 0x7c,
-+ 0xc0, 0x40, 0x44, 0x3c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x12, 0x1a, 0x16,
-+ 0x16, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0x88, 0xf8, 0x88, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x02, 0x1c, 0x61, 0x06, 0x7f,
-+ 0x08, 0x0f, 0x0a, 0x11, 0x1f, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0xd0, 0x20, 0x18, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x24, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x14, 0x7f, 0x55, 0x55, 0x7f, 0x49,
-+ 0x08, 0x7f, 0x08, 0x08, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58,
-+ 0x58, 0x48, 0x48, 0x5c, 0x6c, 0x84, 0x00, 0x00,
-+ 0x02, 0x3c, 0x08, 0x7e, 0x1d, 0x2a, 0x48, 0x7f,
-+ 0x04, 0x07, 0x05, 0x08, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x50, 0x48, 0x84, 0xfc,
-+ 0x00, 0xe0, 0x20, 0xa4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x21, 0x21, 0x3d, 0x25, 0x35, 0x2d,
-+ 0x2d, 0x26, 0x26, 0x2d, 0x34, 0x63, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x40, 0x5e, 0x52, 0x5e, 0x40, 0x7f,
-+ 0x6d, 0x6d, 0x7f, 0x40, 0x7f, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58,
-+ 0x58, 0x48, 0x4c, 0x5c, 0x64, 0x84, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x0a,
-+ 0x7f, 0x04, 0x7f, 0x24, 0x14, 0x0d, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58,
-+ 0x58, 0x48, 0x4c, 0x5c, 0x64, 0x84, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x3f, 0x20,
-+ 0x5f, 0x04, 0x3f, 0x09, 0x0f, 0x70, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0xfc, 0x08,
-+ 0xf0, 0x00, 0xe0, 0x24, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x01, 0x7f, 0x08, 0x32, 0x0d, 0x0a, 0x7e, 0x04,
-+ 0x08, 0x3f, 0x04, 0x3f, 0x09, 0x7e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0xfc, 0x90, 0xf8, 0xf8, 0x90,
-+ 0xfc, 0xf8, 0x00, 0xe4, 0x24, 0x9c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3e, 0x52, 0x1e,
-+ 0x7f, 0x04, 0x07, 0x09, 0x0f, 0x78, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x00, 0xe0, 0x24, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08,
-+ 0x7f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xfc, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2b, 0x3e,
-+ 0x6a, 0x28, 0x11, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0xf8,
-+ 0x20, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x03, 0x01, 0x3f, 0x21, 0x3f,
-+ 0x21, 0x21, 0x3f, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x60, 0x80, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x00,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x21, 0x11, 0x10, 0x00, 0x3f, 0x21, 0x21,
-+ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x20, 0x40, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x54, 0x54, 0x55, 0x7e, 0x54,
-+ 0x54, 0x54, 0x7d, 0x45, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xa8, 0xa4,
-+ 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x57, 0x54, 0x54, 0x7c, 0x54,
-+ 0x57, 0x54, 0x7d, 0x45, 0x02, 0x04, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xfc, 0x90, 0x90, 0x90, 0x90,
-+ 0xfc, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x57, 0x54, 0x54, 0x7c, 0x57,
-+ 0x54, 0x54, 0x7c, 0x45, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x54, 0x55, 0x56, 0x7c, 0x57,
-+ 0x54, 0x54, 0x7f, 0x44, 0x00, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x28, 0xc4, 0x10,
-+ 0x20, 0xc8, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x2a, 0x2a,
-+ 0x3e, 0x2a, 0x2a, 0x2a, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x30, 0x48, 0x48, 0x7c, 0x84, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x04, 0x3f, 0x01, 0x7f, 0x04, 0x18,
-+ 0x7f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xc0, 0x70, 0x88, 0x00, 0xfc, 0x40, 0x30,
-+ 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x57, 0x54, 0x54, 0x7d, 0x55,
-+ 0x57, 0x55, 0x7d, 0x45, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xc0, 0xc8, 0x48, 0x50,
-+ 0x20, 0x20, 0x10, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x54, 0x54, 0x57, 0x7c, 0x54,
-+ 0x57, 0x55, 0x7c, 0x44, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x02, 0x07,
-+ 0x3c, 0x03, 0x7f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf0,
-+ 0x40, 0x80, 0xfc, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x1f, 0x7f, 0x01, 0x1f, 0x0f, 0x7f, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0x10, 0xf0, 0xe0, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x55, 0x57, 0x54, 0x7c, 0x57,
-+ 0x54, 0x55, 0x7d, 0x46, 0x04, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0x40, 0xfc,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x54, 0x54, 0x55, 0x7f, 0x54,
-+ 0x55, 0x55, 0x7d, 0x45, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xa0, 0x10, 0xfc, 0x08,
-+ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x00,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x05, 0x05, 0x3d, 0x21, 0x3d, 0x27,
-+ 0x15, 0x3d, 0x15, 0x1d, 0x65, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc, 0x00, 0x00,
-+ 0x00, 0x03, 0x7c, 0x55, 0x57, 0x55, 0x7c, 0x55,
-+ 0x57, 0x54, 0x7f, 0x46, 0x03, 0x02, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0,
-+ 0xfc, 0x08, 0xfc, 0xa8, 0x98, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x54, 0x55, 0x54, 0x7f, 0x54,
-+ 0x57, 0x55, 0x7d, 0x46, 0x04, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x0f, 0x09, 0x0f, 0x0f, 0x3e, 0x2a, 0x3e, 0x3e,
-+ 0x3f, 0x3f, 0x4f, 0x0f, 0x08, 0x7f, 0x00, 0x00,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0xa8, 0xf8, 0xf8,
-+ 0xfc, 0xe8, 0xe0, 0xe0, 0x20, 0xfc, 0x00, 0x00,
-+ 0x0f, 0x09, 0x0f, 0x0f, 0x3e, 0x2a, 0x3e, 0x3f,
-+ 0x3f, 0x22, 0x47, 0x06, 0x09, 0x7f, 0x00, 0x00,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0xa8, 0xf8, 0xf8,
-+ 0xfc, 0x08, 0xe0, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x0f, 0x09, 0x0f, 0x0f, 0x38, 0x0e, 0x30, 0x3f,
-+ 0x2f, 0x4f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0x38, 0xe0, 0x18, 0xfc,
-+ 0xe8, 0xe0, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18,
-+ 0x28, 0x48, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x29, 0x09, 0x1a,
-+ 0x2c, 0x48, 0x10, 0x11, 0x26, 0x58, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x80, 0xf0, 0x10, 0x20,
-+ 0x20, 0x40, 0xc0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2a, 0x0a, 0x1a,
-+ 0x2a, 0x4a, 0x12, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0x40, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x28, 0x09, 0x1b,
-+ 0x2d, 0x49, 0x11, 0x11, 0x22, 0x44, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xa0, 0x10, 0x28,
-+ 0x24, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18,
-+ 0x28, 0x49, 0x11, 0x12, 0x24, 0x58, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x90, 0x88, 0xfc, 0x80, 0xc0,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x4a, 0x2a, 0x2f, 0x0a, 0x1a,
-+ 0x2a, 0x4a, 0x12, 0x12, 0x24, 0x49, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xb8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2f, 0x09, 0x19,
-+ 0x29, 0x49, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x10, 0xfc, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18,
-+ 0x2b, 0x48, 0x10, 0x10, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xfc, 0x40, 0x90,
-+ 0x90, 0x60, 0x50, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x51, 0x31, 0x35, 0x15, 0x15,
-+ 0x35, 0x55, 0x15, 0x25, 0x27, 0x5c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0x20, 0x20, 0x24, 0xe8,
-+ 0x30, 0x20, 0x20, 0xe4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b,
-+ 0x2a, 0x4b, 0x12, 0x12, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b,
-+ 0x2a, 0x4a, 0x13, 0x10, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x29, 0x0e, 0x18,
-+ 0x2b, 0x4c, 0x10, 0x13, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x10, 0xa0, 0xc0,
-+ 0x30, 0xcc, 0x20, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2b, 0x0c, 0x1b,
-+ 0x2a, 0x4b, 0x12, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x70, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x0b, 0x18, 0x2b,
-+ 0x4a, 0x0f, 0x14, 0x10, 0x23, 0x4c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x40, 0xfc, 0x44, 0xb8, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x28, 0x29, 0x0f, 0x18,
-+ 0x28, 0x4b, 0x10, 0x10, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xc0, 0xa0, 0x10, 0xfc, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x28, 0x2f, 0x08, 0x1b,
-+ 0x28, 0x48, 0x1f, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x40, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x2a, 0x0a, 0x1c,
-+ 0x2a, 0x4b, 0x10, 0x10, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x48, 0x48, 0x90,
-+ 0x48, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x1b,
-+ 0x28, 0x49, 0x15, 0x15, 0x29, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xfc, 0x40, 0xf8,
-+ 0x40, 0x20, 0x28, 0x04, 0x14, 0xf0, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x09, 0x1e,
-+ 0x28, 0x4b, 0x12, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x60, 0xd8, 0x44,
-+ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x50, 0x37, 0x35, 0x16, 0x16,
-+ 0x35, 0x55, 0x15, 0x26, 0x24, 0x44, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x08, 0xe8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x4b, 0x28, 0x2f, 0x09, 0x1e,
-+ 0x28, 0x4f, 0x11, 0x13, 0x20, 0x47, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf0, 0x40, 0xfc, 0xf0, 0x4c,
-+ 0xc0, 0xfc, 0x20, 0xe0, 0xd0, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x14,
-+ 0x35, 0x55, 0x15, 0x24, 0x27, 0x44, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xe8, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x29, 0x09, 0x1b,
-+ 0x2c, 0x48, 0x1f, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0xfc, 0x10, 0x10, 0x28,
-+ 0xc4, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2a, 0x2a, 0x0c, 0x19,
-+ 0x2e, 0x4a, 0x12, 0x14, 0x23, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x48, 0x48, 0x50, 0xb0, 0x4c,
-+ 0x48, 0x48, 0x50, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0b, 0x1a,
-+ 0x2b, 0x48, 0x11, 0x17, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2f, 0x09, 0x1b,
-+ 0x2b, 0x4b, 0x13, 0x15, 0x29, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x10, 0xfc, 0x10, 0xb8,
-+ 0xb8, 0xb8, 0xdc, 0x5c, 0x90, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2f, 0x09, 0x1b,
-+ 0x2b, 0x4b, 0x15, 0x15, 0x29, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x10, 0xfc, 0x10, 0xb8,
-+ 0xb8, 0x78, 0x54, 0x94, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x17, 0x36,
-+ 0x56, 0x17, 0x14, 0x28, 0x2f, 0x50, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf0, 0x70, 0x90, 0xf0, 0xb0,
-+ 0xb0, 0xf0, 0xac, 0xfc, 0x14, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x4b, 0x2a, 0x2b, 0x0a, 0x1b, 0x2f,
-+ 0x4a, 0x0b, 0x15, 0x19, 0x22, 0x45, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x4b, 0x29, 0x2b, 0x0c, 0x1f,
-+ 0x2e, 0x4d, 0x16, 0x15, 0x24, 0x45, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xc0, 0x20, 0xf0, 0x0c, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b, 0x2b,
-+ 0x48, 0x0b, 0x12, 0x12, 0x3f, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf0, 0x90, 0xd0, 0x30, 0xf0,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x28, 0x2b, 0x0a, 0x1b, 0x2a,
-+ 0x4a, 0x0a, 0x17, 0x14, 0x28, 0x50, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0x78, 0xfc, 0x78, 0xc8, 0x38,
-+ 0xf8, 0x80, 0xfc, 0x80, 0xf8, 0x80, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x0f, 0x19, 0x2f,
-+ 0x49, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0x5c, 0x40, 0xbc, 0x10, 0xfc,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x28, 0x29, 0x0f, 0x19, 0x29,
-+ 0x49, 0x09, 0x13, 0x13, 0x25, 0x49, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xa0, 0xf0, 0xfc, 0x10, 0xf0,
-+ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x51, 0x32, 0x37, 0x14, 0x16, 0x35,
-+ 0x5f, 0x16, 0x16, 0x26, 0x2a, 0x51, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0x38, 0xa8, 0xa8, 0xac, 0xc4,
-+ 0xf8, 0xa8, 0xa8, 0x90, 0xa8, 0xc4, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x4b, 0x2b, 0x2a, 0x0f, 0x18,
-+ 0x2b, 0x4a, 0x13, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0x78, 0x28, 0xa8, 0xd8, 0x80,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x2b, 0x28, 0x0f, 0x19, 0x29,
-+ 0x49, 0x09, 0x11, 0x17, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x4b, 0x2a, 0x2b, 0x0a, 0x1b, 0x28,
-+ 0x4b, 0x08, 0x1f, 0x11, 0x26, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90,
-+ 0x30, 0xc8, 0xfc, 0x58, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x2b, 0x2f, 0x0b, 0x18, 0x2b,
-+ 0x4b, 0x08, 0x17, 0x11, 0x20, 0x47, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0xfc, 0xf8, 0x40, 0xf8,
-+ 0xf8, 0x40, 0xfc, 0x90, 0x70, 0x88, 0x00, 0x00,
-+ 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x14, 0x37,
-+ 0x55, 0x15, 0x15, 0x25, 0x25, 0x45, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0xc8, 0xf8, 0xc8, 0xf8,
-+ 0xe8, 0x28, 0xe8, 0x28, 0xe8, 0x38, 0x00, 0x00,
-+ 0x00, 0x0f, 0x49, 0x2c, 0x2b, 0x0e, 0x1f, 0x29,
-+ 0x4f, 0x0c, 0x17, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x80, 0xfc, 0xd0, 0xd4, 0x24, 0x18, 0x74, 0x54,
-+ 0x9c, 0xf8, 0x48, 0x30, 0x30, 0xcc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x49, 0x2d, 0x2d, 0x0a, 0x1c, 0x2f,
-+ 0x4c, 0x0f, 0x10, 0x11, 0x22, 0x4c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x54, 0xb4, 0x58, 0xa8, 0xc4, 0xfc,
-+ 0x88, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x16, 0x37,
-+ 0x56, 0x16, 0x1f, 0x2a, 0x32, 0x44, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0x68, 0xec, 0xac, 0xc4,
-+ 0xb8, 0xa8, 0xf0, 0x90, 0x68, 0x44, 0x00, 0x00,
-+ 0x00, 0x0f, 0x49, 0x2f, 0x2b, 0x0a, 0x1b, 0x2a,
-+ 0x4b, 0x0f, 0x14, 0x14, 0x27, 0x44, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xfc, 0x54, 0x7c, 0x8c, 0x0c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x4a, 0x2a, 0x2b, 0x0a, 0x19, 0x2a,
-+ 0x4b, 0x0d, 0x1f, 0x13, 0x24, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xfc, 0x28, 0x90, 0xfc, 0x14,
-+ 0xd8, 0x5c, 0xd0, 0x70, 0xd0, 0x8c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x49, 0x2f, 0x28, 0x0b, 0x1f, 0x29,
-+ 0x4b, 0x0d, 0x11, 0x11, 0x21, 0x47, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0x40, 0xf8, 0xfc, 0x50,
-+ 0xf8, 0x14, 0xf0, 0xf8, 0x70, 0x88, 0x00, 0x00,
-+ 0x00, 0x0f, 0x4b, 0x28, 0x2f, 0x0f, 0x1b, 0x2b,
-+ 0x4e, 0x0b, 0x13, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0xf8,
-+ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x52, 0x3f, 0x32, 0x1f, 0x1a, 0x3a,
-+ 0x5f, 0x17, 0x16, 0x2a, 0x32, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0x28, 0xd8, 0xf8, 0xc8,
-+ 0xf8, 0x78, 0xc8, 0xf8, 0x28, 0xc4, 0x00, 0x00,
-+ 0x00, 0x1f, 0x51, 0x3e, 0x32, 0x12, 0x1f, 0x32,
-+ 0x57, 0x16, 0x1a, 0x32, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xf8, 0x70, 0xfc, 0xf8, 0x48,
-+ 0x78, 0xf8, 0xc8, 0x78, 0x28, 0xc4, 0x00, 0x00,
-+ 0x00, 0x1f, 0x50, 0x37, 0x37, 0x15, 0x17, 0x35,
-+ 0x57, 0x14, 0x15, 0x29, 0x2f, 0x50, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xfc, 0xb8, 0x10, 0xfc, 0x98,
-+ 0x74, 0x40, 0x78, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x52, 0x37, 0x39, 0x1f, 0x1a, 0x3f,
-+ 0x5a, 0x1f, 0x15, 0x2a, 0x2a, 0x50, 0x00, 0x00,
-+ 0x80, 0xfc, 0x48, 0xa8, 0x30, 0xfc, 0x90, 0xb8,
-+ 0x90, 0xfc, 0x90, 0xd0, 0xd0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x55, 0x3a, 0x35, 0x17, 0x14, 0x37,
-+ 0x5f, 0x1a, 0x1f, 0x28, 0x28, 0x47, 0x00, 0x00,
-+ 0x80, 0xfc, 0x68, 0xa8, 0x7c, 0xa8, 0xe8, 0xbc,
-+ 0xa8, 0xbc, 0xa8, 0x28, 0xbc, 0xa0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x54, 0x37, 0x34, 0x13, 0x1b, 0x3b,
-+ 0x5b, 0x1a, 0x1b, 0x2f, 0x22, 0x4c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0x7c, 0x90, 0xb8, 0xa8, 0xb8,
-+ 0xa8, 0xb8, 0xa8, 0xf8, 0x98, 0x64, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x01, 0x22, 0x12, 0x0c, 0x08,
-+ 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x20, 0xc8, 0x88, 0x50, 0x20,
-+ 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x1e, 0x02, 0x24, 0x14, 0x08, 0x1f, 0x21, 0x41,
-+ 0x3f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x90, 0x90, 0x64, 0x44, 0x28, 0xf0, 0x08, 0x04,
-+ 0xf8, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x1e, 0x02, 0x24, 0x18, 0x1c, 0x64, 0x04, 0x3d,
-+ 0x23, 0x3c, 0x24, 0x04, 0x08, 0x33, 0x00, 0x00,
-+ 0x90, 0x94, 0x64, 0x28, 0xf8, 0xa4, 0xa8, 0x18,
-+ 0xf0, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x02, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20,
-+ 0x10, 0x11, 0x1e, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0x30, 0xc0, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x01, 0x02, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x24,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x88,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x11, 0x21, 0x79, 0x49, 0x49, 0x79, 0x49,
-+ 0x49, 0x4a, 0x7a, 0x44, 0x09, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01, 0x7f,
-+ 0x02, 0x05, 0x19, 0x6f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0xec, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x27, 0x79, 0x49, 0x4a, 0x7d, 0x49,
-+ 0x48, 0x48, 0x78, 0x48, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x08, 0x14, 0x14, 0x10,
-+ 0xa0, 0xa0, 0x40, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x7a, 0x4d, 0x48, 0x78, 0x4f,
-+ 0x48, 0x78, 0x48, 0x01, 0x06, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x00, 0x00, 0xfc,
-+ 0xa0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x11, 0x21, 0x79, 0x4a, 0x4c, 0x7f, 0x48,
-+ 0x49, 0x49, 0x79, 0x49, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x1c, 0x1a, 0x28, 0x4a, 0x0d,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x12, 0x22, 0x7b, 0x48, 0x4f, 0x78, 0x4b,
-+ 0x4a, 0x4b, 0x79, 0x48, 0x07, 0x00, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0xf8,
-+ 0x08, 0xf8, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x2a, 0x2c, 0x29, 0x3e, 0x32,
-+ 0x2a, 0x24, 0x24, 0x2a, 0x32, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x84, 0xf4, 0x94, 0x94,
-+ 0xf4, 0x98, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x7d, 0x14, 0x15, 0x2b, 0x48,
-+ 0x1e, 0x32, 0x4c, 0x0d, 0x13, 0x62, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x7f, 0x08, 0x3e, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x2b, 0x2c, 0x28, 0x3e, 0x32,
-+ 0x2a, 0x24, 0x24, 0x2b, 0x32, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xfc, 0x20, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x1e, 0x2a, 0x6e, 0x3e, 0x2a, 0x14, 0x1e,
-+ 0x2a, 0x6e, 0x3e, 0x2a, 0x12, 0x25, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x03,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x04, 0x3f, 0x00,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x40, 0x70, 0x88, 0x00,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x0f, 0x08, 0x0f,
-+ 0x00, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x7f, 0x01, 0x01, 0x1e, 0x02, 0x7f, 0x01,
-+ 0x1e, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0x60, 0xc4, 0xb4, 0xec, 0x20, 0xc4,
-+ 0x34, 0xfc, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x1f, 0x01, 0x7f, 0x14,
-+ 0x22, 0x5f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0x00, 0xfc, 0x90,
-+ 0x48, 0xf4, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x31, 0x27, 0x3b, 0x23, 0x3d, 0x29, 0x23,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xb8, 0x88, 0x78, 0x28, 0x08,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x17, 0x14,
-+ 0x17, 0x14, 0x17, 0x2f, 0x29, 0x5f, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0xe8, 0x10, 0xf0, 0xf0, 0x90,
-+ 0xf0, 0x90, 0xf0, 0xf8, 0x48, 0xfc, 0x00, 0x00,
-+ 0x11, 0x09, 0x41, 0x21, 0x0f, 0x11, 0x13, 0x24,
-+ 0x21, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0xfc, 0x00, 0xfc, 0xa4,
-+ 0x58, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x23, 0x13, 0x43, 0x2f, 0x13,
-+ 0x2d, 0x42, 0x1f, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0xd0, 0xf0, 0xfc, 0xf8,
-+ 0x48, 0xb0, 0xf0, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x4a, 0x4c, 0x7b, 0x48, 0x48,
-+ 0x79, 0x49, 0x48, 0x78, 0x48, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x08, 0xf4, 0x80, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4b, 0x4a, 0x7a, 0x48, 0x48,
-+ 0x78, 0x48, 0x49, 0x7a, 0x4c, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x60, 0x60,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x49, 0x79, 0x4a, 0x4a,
-+ 0x7c, 0x48, 0x48, 0x78, 0x49, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x50, 0x48, 0x44, 0x4c, 0x48,
-+ 0x50, 0xd0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4a, 0x4a, 0x7a, 0x4a, 0x4a,
-+ 0x7b, 0x4a, 0x4a, 0x78, 0x48, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x48, 0x48,
-+ 0xf8, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4f, 0x48, 0x7a, 0x49, 0x48,
-+ 0x78, 0x48, 0x48, 0x79, 0x4f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0,
-+ 0x60, 0x60, 0x90, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4b, 0x7a, 0x4a, 0x4a,
-+ 0x7a, 0x4a, 0x4a, 0x7c, 0x4c, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x80, 0x88,
-+ 0xb0, 0xc0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x11, 0x1e, 0x0f, 0x27, 0x24, 0x27, 0x24,
-+ 0x27, 0x24, 0x27, 0x3f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x30, 0xc0, 0x08, 0xf8, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x17, 0x78, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x48, 0x70, 0x44, 0x44, 0x3c, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4a, 0x4a, 0x7a, 0x4a, 0x4a,
-+ 0x7a, 0x4a, 0x4a, 0x7a, 0x4b, 0x0c, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0x90, 0x94, 0xf8, 0x90, 0x90,
-+ 0x90, 0x90, 0xb0, 0xd4, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4b, 0x48, 0x78, 0x4f, 0x48,
-+ 0x78, 0x49, 0x4a, 0x7c, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x09, 0x0f, 0x12, 0x7f, 0x08, 0x1f, 0x68,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x20, 0xf0, 0x90, 0xfc, 0x20, 0xf0, 0x2c,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4f, 0x49, 0x79, 0x4b, 0x4c,
-+ 0x78, 0x4f, 0x48, 0x78, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0x60, 0x90, 0xe8, 0x48, 0x40, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x00, 0x78, 0x4b, 0x48, 0x7b, 0x4a, 0x4b,
-+ 0x7a, 0x48, 0x49, 0x7a, 0x4c, 0x00, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x7a, 0x4b, 0x4a,
-+ 0x7a, 0x4a, 0x4a, 0x7c, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x7a, 0x4b, 0x4a,
-+ 0x78, 0x48, 0x49, 0x79, 0x4a, 0x0c, 0x00, 0x00,
-+ 0x80, 0x38, 0x08, 0xb8, 0x08, 0x08, 0xf8, 0xa8,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4b, 0x48, 0x7f, 0x48, 0x4b,
-+ 0x78, 0x4a, 0x4a, 0x7b, 0x4c, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x48, 0x40, 0x7c, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7b, 0x48, 0x49, 0x78, 0x4f, 0x48, 0x7b,
-+ 0x4a, 0x4a, 0x7b, 0x4a, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x7a, 0x4b, 0x4a,
-+ 0x78, 0x49, 0x4f, 0x78, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x88,
-+ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x2f, 0x49, 0x12, 0x04, 0x1f,
-+ 0x68, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0xe8, 0x20, 0x90, 0x40, 0xf0,
-+ 0x2c, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x04, 0x3f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x40, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x7f, 0x48, 0x48,
-+ 0x79, 0x4f, 0x49, 0x79, 0x49, 0x01, 0x00, 0x00,
-+ 0x80, 0x88, 0xf8, 0x90, 0xa0, 0xfc, 0x50, 0x88,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4d, 0x48, 0x7b, 0x48, 0x4f,
-+ 0x78, 0x4b, 0x4a, 0x7a, 0x4b, 0x02, 0x00, 0x00,
-+ 0x40, 0xfc, 0x58, 0xe0, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x79, 0x49, 0x4a, 0x7a, 0x4a, 0x4a, 0x7a,
-+ 0x4a, 0x4a, 0x7a, 0x4b, 0x01, 0x06, 0x00, 0x00,
-+ 0x08, 0x34, 0xc4, 0xfc, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0xfc, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4d, 0x49, 0x79, 0x49, 0x49,
-+ 0x78, 0x4f, 0x48, 0x78, 0x49, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x7a, 0x49, 0x4b, 0x7a, 0x4d, 0x49, 0x79,
-+ 0x49, 0x48, 0x7b, 0x48, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x77, 0x51, 0x51, 0x70, 0x57, 0x54,
-+ 0x77, 0x55, 0x55, 0x76, 0x54, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x40, 0xfc, 0x44,
-+ 0x74, 0x54, 0x54, 0xec, 0x44, 0x4c, 0x00, 0x00,
-+ 0x00, 0x07, 0x72, 0x5f, 0x54, 0x74, 0x57, 0x54,
-+ 0x77, 0x54, 0x57, 0x7c, 0x50, 0x00, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0xe0, 0xbc, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4f, 0x7b, 0x4a, 0x4b,
-+ 0x7a, 0x4b, 0x4a, 0x7b, 0x49, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xf8, 0xfc, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x49, 0x4b, 0x7a, 0x4d, 0x4a,
-+ 0x78, 0x49, 0x4e, 0x78, 0x49, 0x0e, 0x00, 0x00,
-+ 0x18, 0xe4, 0x48, 0x30, 0xfc, 0x48, 0xa8, 0x94,
-+ 0xf0, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x3e, 0x22, 0x3e, 0x08, 0x0f,
-+ 0x18, 0x2f, 0x4f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0xf8, 0x88, 0xf8, 0xf8, 0x88, 0xf8, 0x40, 0xf8,
-+ 0x80, 0xf0, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x4b, 0x7c, 0x4b, 0x4a,
-+ 0x7a, 0x4b, 0x49, 0x79, 0x4a, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8,
-+ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x3e, 0x22, 0x3e, 0x17, 0x7f,
-+ 0x10, 0x1f, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x48, 0x30, 0xd8, 0xf4,
-+ 0x10, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x4b, 0x4a, 0x7a, 0x4b, 0x4b,
-+ 0x7a, 0x4a, 0x4a, 0x7c, 0x4c, 0x08, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0xa8, 0x98, 0x70, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x07, 0x79, 0x4b, 0x4a, 0x7c, 0x4f, 0x48,
-+ 0x7f, 0x49, 0x4e, 0x79, 0x4e, 0x00, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xfc, 0xe8, 0x00, 0xfc, 0xc8,
-+ 0x68, 0xf0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x3e, 0x22, 0x3e, 0x0f, 0x1b,
-+ 0x6b, 0x0f, 0x3f, 0x04, 0x03, 0x7c, 0x00, 0x00,
-+ 0xf8, 0x88, 0xf8, 0xf8, 0x88, 0xf8, 0xf8, 0xe0,
-+ 0xe0, 0xf8, 0xe0, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x07, 0x17, 0x17, 0x17, 0x1f, 0x7f,
-+ 0x1c, 0x5d, 0x5d, 0x5d, 0x7f, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xfc,
-+ 0x70, 0x70, 0x70, 0x70, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x74, 0x57, 0x57, 0x77, 0x57, 0x56,
-+ 0x77, 0x55, 0x57, 0x79, 0x48, 0x17, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0xfc, 0x58, 0x58, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0xf4, 0xf4, 0x7c, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x0c, 0x04, 0x7f, 0x0d, 0x0e,
-+ 0x14, 0x14, 0x24, 0x44, 0x04, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xf4, 0x00, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x3f, 0x08, 0x0f, 0x11,
-+ 0x21, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x40, 0x30, 0xc8, 0x00, 0xf8, 0x00,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x1f, 0x28, 0x28, 0x49, 0x7e,
-+ 0x09, 0x0c, 0x12, 0x12, 0x20, 0x43, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20,
-+ 0xfc, 0x48, 0xc8, 0x30, 0x68, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1e, 0x32,
-+ 0x52, 0x12, 0x12, 0x1e, 0x13, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x7e, 0x12, 0x12, 0x13, 0x3e, 0x2a, 0x6a,
-+ 0x2a, 0x2a, 0x39, 0x28, 0x20, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0x28, 0x28, 0x28, 0x28,
-+ 0xa8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x06, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x13, 0x12, 0x3a, 0x2b, 0x6a,
-+ 0x2a, 0x2a, 0x3a, 0x2c, 0x24, 0x0b, 0x00, 0x00,
-+ 0x20, 0xfc, 0x50, 0xfc, 0x50, 0x70, 0xfc, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x10, 0x10, 0x3c, 0x24, 0x64,
-+ 0x24, 0x24, 0x3c, 0x24, 0x23, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x13, 0x12, 0x3a, 0x2a, 0x6a,
-+ 0x2a, 0x2b, 0x3d, 0x25, 0x29, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x10, 0x10, 0x3f, 0x24, 0x64,
-+ 0x27, 0x24, 0x3c, 0x24, 0x27, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x10, 0x10, 0x3c, 0x25, 0x66,
-+ 0x24, 0x27, 0x3c, 0x24, 0x20, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x90, 0x90, 0x98, 0x64, 0x64,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3c, 0x24, 0x65,
-+ 0x27, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0x90, 0xa0, 0xa4, 0x28,
-+ 0x30, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x42, 0x23, 0x0a, 0x12, 0x24, 0x2b,
-+ 0x7f, 0x04, 0x1f, 0x68, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xf8, 0x90, 0x60, 0xf0, 0x0c,
-+ 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x12, 0x12, 0x3b, 0x2a, 0x6a,
-+ 0x2b, 0x2a, 0x3a, 0x2c, 0x24, 0x09, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x11, 0x10, 0x3c, 0x27, 0x64,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x11, 0x10, 0x3f, 0x26, 0x65,
-+ 0x25, 0x24, 0x3d, 0x26, 0x20, 0x00, 0x00, 0x00,
-+ 0x80, 0xf0, 0x10, 0xe0, 0x20, 0xfc, 0x68, 0x68,
-+ 0x50, 0xd0, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x24, 0x64,
-+ 0x25, 0x27, 0x3d, 0x25, 0x21, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8,
-+ 0x48, 0x68, 0x98, 0xe8, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x10, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x24, 0x21, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3c, 0x24, 0x64,
-+ 0x27, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x90,
-+ 0xfc, 0x50, 0x54, 0x8c, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x7a, 0x14, 0x12, 0x12, 0x38, 0x2b, 0x6a,
-+ 0x2b, 0x2a, 0x3a, 0x2b, 0x23, 0x02, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0x48, 0x48, 0x80, 0xf8, 0x28,
-+ 0xa8, 0x48, 0xa8, 0x18, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x10, 0x17, 0x3c, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x24, 0x27, 0x00, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3f, 0x26, 0x65,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x70, 0x50, 0xfc, 0x08, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x7c, 0x13, 0x10, 0x11, 0x3c, 0x27, 0x64,
-+ 0x24, 0x25, 0x3d, 0x26, 0x27, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x80,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7d, 0x11, 0x12, 0x16, 0x39, 0x29, 0x6a,
-+ 0x2f, 0x28, 0x39, 0x2a, 0x24, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0xbc, 0xa8, 0xa8, 0xfc, 0x48, 0x48,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x7d, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3e, 0x22, 0x04, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x50, 0x50, 0xf8, 0x50,
-+ 0x50, 0xfc, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x24, 0x3f, 0x22, 0x22, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x54, 0x2c, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x11, 0x10, 0x3f, 0x26, 0x64,
-+ 0x27, 0x24, 0x3c, 0x24, 0x21, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40,
-+ 0xfc, 0x40, 0x78, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x07, 0x1c, 0x67, 0x04, 0x7e,
-+ 0x10, 0x1e, 0x32, 0x53, 0x1e, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc,
-+ 0x40, 0x78, 0xc8, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x3f, 0x2a, 0x3e, 0x21,
-+ 0x7f, 0x04, 0x1f, 0x68, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x70, 0x8c,
-+ 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x11, 0x10, 0x3f, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x24, 0x27, 0x3c, 0x27, 0x20, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xfc, 0x10, 0xfc, 0x90, 0x70, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x17, 0x11, 0x3f, 0x29, 0x69,
-+ 0x2e, 0x2f, 0x38, 0x28, 0x21, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x7e, 0x12, 0x11, 0x11, 0x3f, 0x24, 0x65,
-+ 0x25, 0x25, 0x3c, 0x24, 0x27, 0x00, 0x00, 0x00,
-+ 0xd0, 0x54, 0xa4, 0xa8, 0x10, 0xf8, 0x04, 0xf8,
-+ 0x08, 0xf8, 0x90, 0x60, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x13, 0x12, 0x3b, 0x2a, 0x6b,
-+ 0x2a, 0x28, 0x3f, 0x28, 0x21, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8, 0x58,
-+ 0x48, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x01, 0x7f, 0x10, 0x13, 0x10, 0x3f, 0x28, 0x6f,
-+ 0x2f, 0x29, 0x39, 0x2f, 0x21, 0x03, 0x00, 0x00,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0x24,
-+ 0xfc, 0x28, 0x98, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x02, 0x7d, 0x13, 0x12, 0x15, 0x39, 0x29, 0x68,
-+ 0x2b, 0x2a, 0x3b, 0x2a, 0x23, 0x02, 0x00, 0x00,
-+ 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x7c, 0x17, 0x14, 0x13, 0x3a, 0x2b, 0x6d,
-+ 0x29, 0x2f, 0x3b, 0x2a, 0x24, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x28, 0x90, 0x90, 0x7c, 0x94, 0x58,
-+ 0x50, 0xdc, 0x50, 0xf0, 0x50, 0x8c, 0x00, 0x00,
-+ 0x10, 0x12, 0x7d, 0x1a, 0x36, 0x51, 0x12, 0x7f,
-+ 0x04, 0x1f, 0x62, 0x0f, 0x34, 0x07, 0x00, 0x00,
-+ 0x90, 0x90, 0x7c, 0x90, 0xb8, 0x54, 0x90, 0xfc,
-+ 0x20, 0xf0, 0x0c, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x02, 0x7e, 0x13, 0x15, 0x12, 0x3a, 0x2d, 0x6f,
-+ 0x28, 0x2f, 0x38, 0x29, 0x26, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0xec, 0xb4, 0xe8, 0xa8, 0xf4, 0x5c,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x01, 0x7e, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2b, 0x49, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xfc, 0xa0, 0x90,
-+ 0x90, 0xb4, 0xcc, 0x0c, 0xf4, 0x04, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x21, 0x3f, 0x20, 0x0f,
-+ 0x00, 0x7f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x08, 0xf8, 0x08, 0xe0,
-+ 0x00, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2b, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xa0, 0xa0, 0x3c, 0x20,
-+ 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a,
-+ 0x2b, 0x2b, 0x2a, 0x28, 0x48, 0x09, 0x00, 0x00,
-+ 0x20, 0x10, 0x50, 0x48, 0x48, 0xc8, 0xd8, 0xd4,
-+ 0x54, 0x64, 0x60, 0x48, 0xc8, 0x38, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x29, 0x4a, 0x0c, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x48, 0x68,
-+ 0x68, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x03, 0x7e, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2b, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x90, 0x90, 0xfc, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7e, 0x09, 0x2b, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x78, 0x88, 0xf0, 0x10, 0xfc, 0x20, 0xb4,
-+ 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x3d, 0x03, 0x01, 0x7f, 0x11, 0x37, 0x35,
-+ 0x34, 0x37, 0x34, 0x34, 0x51, 0x16, 0x00, 0x00,
-+ 0x00, 0x78, 0xa8, 0x28, 0xa8, 0xa8, 0x48, 0x98,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a,
-+ 0x2b, 0x2a, 0x2a, 0x2b, 0x48, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x50, 0x94,
-+ 0x4c, 0x70, 0xd0, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x7e, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2b, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x50, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x7d, 0x15, 0x15, 0x2d, 0x50,
-+ 0x1f, 0x10, 0x1f, 0x15, 0x25, 0x49, 0x00, 0x00,
-+ 0x00, 0xfc, 0x98, 0x70, 0x50, 0x50, 0xe8, 0x14,
-+ 0xf0, 0x10, 0xf0, 0x50, 0x30, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x7e, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x03, 0x7e, 0x13, 0x34, 0x37,
-+ 0x35, 0x35, 0x35, 0x30, 0x57, 0x10, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x03, 0x02, 0x7f, 0x10, 0x37, 0x35,
-+ 0x34, 0x37, 0x34, 0x37, 0x51, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0,
-+ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x01,
-+ 0x3f, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x38, 0xc0, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x48, 0x68, 0x98, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f, 0x01,
-+ 0x3f, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x48, 0x68, 0x98, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x01,
-+ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x70, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0xfc, 0x10,
-+ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x03, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x0b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x68,
-+ 0x68, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x09, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xf8,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x09, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x0b, 0x08, 0x7e, 0x0c, 0x1a,
-+ 0x1a, 0x28, 0x4b, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x90, 0x90, 0xfc, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x02, 0x04, 0x39, 0x08, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x0a, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x08,
-+ 0xe8, 0xa8, 0xa8, 0xe8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x00,
-+ 0x1f, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x60,
-+ 0x80, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x00,
-+ 0x1f, 0x00, 0x7f, 0x0d, 0x31, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x09, 0x7e, 0x0c, 0x1a,
-+ 0x1a, 0x28, 0x49, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0x20, 0xf8, 0xa8,
-+ 0xf8, 0xa8, 0xfc, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x02, 0x04, 0x39, 0x09, 0x0a, 0x7e, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x08, 0x30, 0xc8, 0x24, 0x24, 0x40, 0xb8, 0x08,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x08, 0x0f, 0x3f, 0x27, 0x24,
-+ 0x27, 0x1f, 0x7f, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xf8, 0xc8, 0x48,
-+ 0xf8, 0xc0, 0xfc, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x02, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x4b, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa0, 0x24,
-+ 0x5c, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x02, 0x04, 0x39, 0x09, 0x0a, 0x7e, 0x09, 0x1c,
-+ 0x1a, 0x2b, 0x4a, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x90, 0xa8, 0x24, 0x50,
-+ 0x88, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x05, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1b, 0x2a, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x20, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x28,
-+ 0xf4, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x02, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x0b, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xac, 0xac, 0x20,
-+ 0x60, 0x78, 0xa0, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x08, 0x77, 0x11, 0x11, 0x7e, 0x17, 0x38,
-+ 0x37, 0x56, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x50, 0xe8, 0xfc, 0x00,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x09, 0x71, 0x11, 0x17, 0x7c, 0x13, 0x3a,
-+ 0x37, 0x56, 0x53, 0x16, 0x14, 0x1b, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0xfc, 0x28, 0xfc, 0x20,
-+ 0xe8, 0xd8, 0xb4, 0xdc, 0xac, 0x44, 0x00, 0x00,
-+ 0x04, 0x09, 0x71, 0x13, 0x10, 0x7d, 0x11, 0x3b,
-+ 0x34, 0x55, 0x50, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x08, 0xf0, 0x48, 0xf4, 0x40, 0xf0, 0xf8, 0xfc,
-+ 0x08, 0xf8, 0x40, 0xa8, 0x94, 0x70, 0x00, 0x00,
-+ 0x04, 0x09, 0x76, 0x13, 0x12, 0x7f, 0x13, 0x3f,
-+ 0x37, 0x54, 0x53, 0x17, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xf8, 0xa8, 0xb8, 0xa0, 0xbc,
-+ 0xbc, 0xac, 0xb4, 0xbc, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x0f, 0x73, 0x12, 0x13, 0x7c, 0x13, 0x39,
-+ 0x34, 0x57, 0x50, 0x17, 0x11, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0,
-+ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x1f, 0x00,
-+ 0x1f, 0x10, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xf8, 0x08, 0x08, 0xf0, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x34, 0x04, 0x3f,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x08, 0x0a,
-+ 0x73, 0x14, 0x0c, 0x0a, 0x1f, 0x62, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0x40,
-+ 0xf8, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x49, 0x32, 0x1f, 0x11,
-+ 0x17, 0x1e, 0x11, 0x16, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x48, 0x38, 0xf0, 0x10,
-+ 0xd0, 0x50, 0x90, 0x50, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x48, 0x32, 0x02, 0x32,
-+ 0x0a, 0x0e, 0x74, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0xb0,
-+ 0xc0, 0xb0, 0x88, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x1f, 0x02, 0x7f,
-+ 0x02, 0x1f, 0x07, 0x1c, 0x67, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x10, 0xfc,
-+ 0x10, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x35, 0x05, 0x0f,
-+ 0x11, 0x7f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xf0,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x0f, 0x09,
-+ 0x09, 0x3f, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0xe0, 0xe0,
-+ 0x20, 0xf8, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x01, 0x3f, 0x29, 0x77, 0x3f, 0x1f, 0x12, 0x1e,
-+ 0x3e, 0x22, 0x3e, 0x3e, 0x22, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x28, 0xd8, 0xf8, 0xf0, 0x90, 0xf0,
-+ 0xf8, 0x88, 0xf8, 0xf8, 0x84, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x4c, 0x32, 0x07, 0x3a, 0x0b,
-+ 0x7f, 0x09, 0x7f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x60, 0x80,
-+ 0xf0, 0x00, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x3f, 0x25, 0x7f, 0x09, 0x7f, 0x0f, 0x0f,
-+ 0x09, 0x0f, 0x7f, 0x06, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x20, 0xfc, 0xe0, 0xe0,
-+ 0x20, 0xe0, 0xfc, 0x40, 0xe0, 0x10, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x4c, 0x38, 0x3e, 0x22, 0x3e,
-+ 0x3f, 0x08, 0x7f, 0x0e, 0x12, 0x67, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0x7c, 0x88,
-+ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x59, 0x1e, 0x10, 0x1e, 0x1f,
-+ 0x11, 0x1d, 0x1d, 0x11, 0x1d, 0x73, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x78, 0xf0, 0x10, 0xf0, 0xf0,
-+ 0x10, 0xd0, 0xd4, 0x0c, 0xcc, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x3c, 0x27, 0x38,
-+ 0x2b, 0x25, 0x26, 0x39, 0x20, 0x27, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x78, 0x40, 0xf8, 0x90, 0xe0,
-+ 0x5c, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x4b, 0x20, 0x27, 0x00, 0x77,
-+ 0x10, 0x13, 0x10, 0x13, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0xac, 0x3c, 0xa0, 0xfc, 0xc8, 0xe8,
-+ 0xf0, 0x70, 0xa8, 0x28, 0xc0, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x26, 0x59, 0x7f, 0x0f, 0x3f, 0x2c,
-+ 0x3f, 0x1f, 0x1f, 0x17, 0x1f, 0x78, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x78, 0xfc, 0xe0, 0xf8, 0xe8,
-+ 0xf8, 0xf0, 0xd0, 0xf0, 0xf0, 0x1c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x26, 0x58, 0x06, 0x7a, 0x2a, 0x1c,
-+ 0x7e, 0x19, 0x1d, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x78, 0x20, 0x3c, 0xf8, 0xa8,
-+ 0xd8, 0xfc, 0x54, 0xfc, 0x04, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x02, 0x22, 0x13, 0x12,
-+ 0x14, 0x14, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x02, 0x22, 0x13, 0x12,
-+ 0x14, 0x14, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x24, 0x15, 0x16,
-+ 0x14, 0x18, 0x0e, 0x18, 0x61, 0x02, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0xfc, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x04, 0x24, 0x15, 0x14,
-+ 0x14, 0x19, 0x0e, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x40, 0x40, 0x78, 0xc0, 0x40,
-+ 0x7c, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x04, 0x24, 0x14, 0x15,
-+ 0x15, 0x09, 0x0f, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x06, 0x24, 0x15, 0x14,
-+ 0x14, 0x18, 0x0e, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x02, 0x22, 0x12, 0x12,
-+ 0x14, 0x14, 0x06, 0x18, 0x63, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x08, 0x88, 0x48, 0x48,
-+ 0x50, 0x50, 0x10, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x05, 0x25, 0x15, 0x15,
-+ 0x15, 0x09, 0x0f, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x05, 0x24, 0x14, 0x14,
-+ 0x15, 0x09, 0x0e, 0x18, 0x60, 0x03, 0x00, 0x00,
-+ 0x20, 0x20, 0x30, 0x48, 0xf4, 0x84, 0xf8, 0xa0,
-+ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x04, 0x24, 0x14, 0x14,
-+ 0x14, 0x08, 0x0e, 0x19, 0x62, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x05, 0x25, 0x14, 0x14,
-+ 0x15, 0x0b, 0x0f, 0x19, 0x61, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8,
-+ 0x48, 0x68, 0x98, 0xf8, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x0a, 0x4a, 0x2a, 0x2a,
-+ 0x2a, 0x32, 0x16, 0x1c, 0x67, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1e, 0x29, 0x45, 0x01, 0x3f, 0x01,
-+ 0x0d, 0x03, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x20, 0x10, 0x00, 0xe0, 0x20,
-+ 0x20, 0x20, 0xa0, 0x64, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x0f, 0x12,
-+ 0x22, 0x44, 0x08, 0x11, 0x02, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x0f, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x18, 0xe0, 0x20,
-+ 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x7e,
-+ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x01, 0x01, 0x01,
-+ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x09, 0x1f,
-+ 0x11, 0x2f, 0x41, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0x00, 0xf8,
-+ 0x00, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x02, 0x02, 0x04,
-+ 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0x60, 0x38,
-+ 0xc4, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x10, 0x09, 0x49,
-+ 0x21, 0x25, 0x09, 0x11, 0x21, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x08,
-+ 0x08, 0x08, 0x30, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x01, 0x01, 0x7f,
-+ 0x03, 0x05, 0x19, 0x67, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0xcc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x0f, 0x11,
-+ 0x21, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x00,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x20,
-+ 0x27, 0x20, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x00, 0xf8, 0x80,
-+ 0xf0, 0x80, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x20,
-+ 0x27, 0x20, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x00, 0xf8, 0x80,
-+ 0xf0, 0x90, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x3f, 0x04,
-+ 0x04, 0x7f, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x04, 0x0f, 0x10,
-+ 0x6f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x08,
-+ 0x88, 0x88, 0x88, 0x88, 0x88, 0xb0, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x01, 0x7f,
-+ 0x01, 0x1f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0xfc,
-+ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x02, 0x04, 0x18,
-+ 0x6f, 0x01, 0x0f, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x80, 0x40, 0x30,
-+ 0xec, 0x00, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x0f, 0x11,
-+ 0x7f, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf0, 0x00,
-+ 0xfc, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x7b, 0x08, 0x11,
-+ 0x3d, 0x49, 0x29, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x1c, 0xf0, 0x20, 0x3c,
-+ 0x20, 0x20, 0x20, 0xfc, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x02, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x01, 0x7f, 0x09,
-+ 0x09, 0x16, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x20,
-+ 0x30, 0xc8, 0x88, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x29, 0x4f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x20, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x09, 0x12,
-+ 0x34, 0x50, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x40,
-+ 0x7c, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x14,
-+ 0x35, 0x56, 0x14, 0x14, 0x14, 0x13, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x80, 0x80, 0xfc,
-+ 0x90, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x1f, 0x10,
-+ 0x1e, 0x12, 0x12, 0x12, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x90, 0xfc, 0x88,
-+ 0x48, 0x50, 0x34, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x09, 0x09,
-+ 0x0d, 0x13, 0x23, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x20, 0x20,
-+ 0x30, 0x48, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x09, 0x7f,
-+ 0x09, 0x0d, 0x19, 0x69, 0x09, 0x19, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x10, 0x10, 0xfc,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x21,
-+ 0x3f, 0x27, 0x39, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x28, 0xc8, 0x08,
-+ 0xf8, 0xc8, 0x38, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1e, 0x60, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x88, 0x90, 0xe4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x10, 0x13, 0x7e, 0x12,
-+ 0x12, 0x1a, 0x72, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xa8, 0xb8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x01, 0x3f, 0x22, 0x4c,
-+ 0x30, 0x0f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x88, 0x88,
-+ 0x78, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x04, 0x06, 0x09,
-+ 0x1f, 0x60, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x08, 0x48, 0x48,
-+ 0xc8, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x01, 0x00, 0x1f,
-+ 0x02, 0x7f, 0x01, 0x00, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x18, 0xfc, 0x10, 0xe0, 0xb4,
-+ 0x4c, 0xf8, 0x20, 0xc4, 0xb4, 0x0c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x5f, 0x00, 0x7f, 0x1f, 0x3f,
-+ 0x21, 0x5f, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf0, 0x10, 0xfc, 0xf0, 0xfc,
-+ 0x08, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x11, 0x3f, 0x41,
-+ 0x7f, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x18, 0xf0, 0x08, 0xf4, 0x10,
-+ 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x03, 0x0c, 0x3f, 0x01,
-+ 0x7f, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xe0, 0x80, 0xf0, 0x10,
-+ 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3d, 0x25, 0x25, 0x3d,
-+ 0x25, 0x3d, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x08, 0x30, 0xf8,
-+ 0x48, 0x48, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x24,
-+ 0x26, 0x29, 0x22, 0x2c, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x80, 0xf8, 0x90,
-+ 0xb0, 0x48, 0x20, 0x18, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x47, 0x0f, 0x08, 0x0f, 0x0f,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xe0, 0x20, 0xe0, 0xe0,
-+ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x09, 0x08, 0x17, 0x11,
-+ 0x31, 0x52, 0x17, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0xfc, 0x00,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x12, 0x12, 0x7f,
-+ 0x12, 0x1f, 0x12, 0x12, 0x1e, 0x13, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x40, 0x40, 0xfc,
-+ 0xa4, 0x28, 0x70, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x00, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x17, 0x14, 0x17, 0x24, 0x41, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x50, 0xfc, 0x48, 0xc8,
-+ 0x48, 0xb0, 0xb4, 0xb4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x47, 0x04, 0x0f, 0x7f, 0x03,
-+ 0x7d, 0x07, 0x39, 0x06, 0x38, 0x03, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xe0, 0x40, 0xc0, 0xfc, 0x88,
-+ 0xd0, 0xe0, 0xa0, 0x90, 0x8c, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x1f, 0x04, 0x7f,
-+ 0x0f, 0x0f, 0x09, 0x7f, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x48, 0xf8, 0xf0, 0x40, 0xfc,
-+ 0xe0, 0xe0, 0x20, 0xfc, 0x20, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x3e, 0x22,
-+ 0x3e, 0x20, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x45, 0x7f, 0x0f, 0x08, 0x7f,
-+ 0x08, 0x0f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0xe0, 0x20, 0xfc,
-+ 0x20, 0xe8, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x45, 0x7f, 0x3f, 0x08, 0x7f,
-+ 0x08, 0x3f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0xf8, 0x20, 0xfc,
-+ 0x20, 0xf8, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x47, 0x3f, 0x26, 0x21, 0x2e,
-+ 0x3f, 0x10, 0x1f, 0x10, 0x1e, 0x70, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x48, 0xc8, 0x28,
-+ 0xf8, 0x88, 0x90, 0xe4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x7f, 0x04, 0x3f, 0x24,
-+ 0x3f, 0x01, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x40, 0xf8, 0x48,
-+ 0xf8, 0x00, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x49, 0x7e, 0x14, 0x7f, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x40, 0x7c, 0x78, 0x08, 0x78,
-+ 0x40, 0x78, 0x78, 0x78, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x45, 0x3f, 0x1f, 0x7f, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0xf0, 0xfc, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x7f, 0x08,
-+ 0x0f, 0x13, 0x12, 0x22, 0x44, 0x1f, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x80, 0xfc, 0x80, 0xf8,
-+ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x24, 0x3f, 0x24,
-+ 0x3f, 0x24, 0x2e, 0x2a, 0x2e, 0x41, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x90, 0x90, 0xa8, 0xc8,
-+ 0x90, 0xa4, 0x84, 0x88, 0x90, 0xa0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x5f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x7f, 0x09, 0x3f, 0x01, 0x3f, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0x20, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x10, 0x0b, 0x40, 0x27,
-+ 0x03, 0x71, 0x13, 0x10, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x90, 0xf0, 0xa0, 0xe0, 0x5c,
-+ 0xf8, 0xf0, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x13, 0x48, 0x22, 0x15,
-+ 0x23, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x98, 0x94, 0x14,
-+ 0x60, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x4f, 0x09, 0x7f, 0x0f, 0x0f,
-+ 0x09, 0x0f, 0x7f, 0x0e, 0x01, 0x3e, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xe0, 0x20, 0xfc, 0xe0, 0xe0,
-+ 0x20, 0xe0, 0xfc, 0x40, 0xe0, 0x10, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7f, 0x01, 0x09, 0x09, 0x7f,
-+ 0x07, 0x04, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0xf0, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x4f, 0x09, 0x0f, 0x7f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xe0, 0x20, 0xe0, 0xfc, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7f, 0x04, 0x07, 0x7f, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0xd0, 0xf8, 0x40, 0xc0, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x60, 0x18, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7e, 0x14, 0x7f, 0x0e, 0x14,
-+ 0x7f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf8, 0x50, 0xfc, 0x30, 0xd4,
-+ 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7f, 0x1f, 0x12, 0x1f, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xfc, 0xf0, 0x90, 0xf0, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x43, 0x0c, 0x7f, 0x12, 0x1d,
-+ 0x17, 0x11, 0x11, 0x13, 0x22, 0x43, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xe0, 0x80, 0xfc, 0x24, 0xfc,
-+ 0xf8, 0xe0, 0xe0, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x5f, 0x01, 0x7f, 0x1f, 0x15,
-+ 0x1d, 0x11, 0x1f, 0x1d, 0x25, 0x45, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf0, 0x10, 0xfc, 0xf0, 0x50,
-+ 0x70, 0x10, 0xf0, 0x70, 0x50, 0x50, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x02, 0x0c, 0x77, 0x00,
-+ 0x1e, 0x12, 0x1e, 0x0c, 0x12, 0x61, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x80, 0x60, 0xdc, 0x00,
-+ 0xf0, 0x90, 0xf0, 0x60, 0x90, 0x08, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x7f, 0x1f, 0x7f, 0x1f, 0x01,
-+ 0x1f, 0x7f, 0x1e, 0x13, 0x1e, 0x10, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xfc, 0xf0, 0xfc, 0xe8, 0x00,
-+ 0xe0, 0xfc, 0x10, 0xfc, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7f, 0x24, 0x3e, 0x3f, 0x24,
-+ 0x3f, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x40, 0x7c, 0x80, 0x00, 0x78,
-+ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x5f, 0x15, 0x7f, 0x1f, 0x1f,
-+ 0x15, 0x1f, 0x7f, 0x1a, 0x06, 0x39, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x20, 0x20, 0xfc, 0x48, 0xc8,
-+ 0x28, 0x30, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x4d, 0x09, 0x7e, 0x13, 0x1c,
-+ 0x14, 0x14, 0x14, 0x27, 0x24, 0x5b, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x90, 0xfc, 0x90, 0xfc, 0x90,
-+ 0xf0, 0xf0, 0x90, 0xfc, 0x90, 0x08, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x51, 0x13, 0x7e, 0x12, 0x17,
-+ 0x13, 0x1e, 0x73, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x40, 0xbc, 0x94, 0xe4, 0x58,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3e, 0x27, 0x24, 0x3f,
-+ 0x25, 0x3f, 0x24, 0x27, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x50, 0x48, 0xfc, 0xa0, 0xfc,
-+ 0x50, 0x58, 0xe4, 0x50, 0x4c, 0xc0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x41, 0x3f, 0x24, 0x27, 0x3d,
-+ 0x27, 0x3c, 0x27, 0x25, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x50, 0xf8, 0xa4, 0xfc, 0x50,
-+ 0xac, 0xd0, 0xf8, 0x54, 0x48, 0x48, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x49, 0x7f, 0x08, 0x3e, 0x2a,
-+ 0x2a, 0x3e, 0x1c, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf8, 0x48, 0x98, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x52, 0x12, 0x2d, 0x7f, 0x0a,
-+ 0x3b, 0x3b, 0x0a, 0x3b, 0x0f, 0x78, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x40, 0x50, 0x48, 0xfc, 0x28,
-+ 0xa8, 0xb0, 0x10, 0xb4, 0xcc, 0x84, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x44, 0x3f, 0x04, 0x7f, 0x0a,
-+ 0x3b, 0x3b, 0x0a, 0x3b, 0x0f, 0x70, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x40, 0xd0, 0x48, 0xfc, 0x28,
-+ 0xa8, 0xb0, 0x14, 0xb4, 0xcc, 0x84, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x46, 0x0c, 0x77, 0x3b, 0x2a,
-+ 0x3b, 0x3f, 0x24, 0x3f, 0x24, 0x24, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x90, 0x60, 0xdc, 0xb8, 0xa8,
-+ 0xb8, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x49, 0x7f, 0x26, 0x3a, 0x37,
-+ 0x3e, 0x7f, 0x4d, 0x7f, 0x41, 0x43, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x48, 0x50, 0x7c, 0xd0, 0x78,
-+ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x11, 0x55, 0x35, 0x39, 0x11, 0x7d, 0x11, 0x39,
-+ 0x35, 0x55, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x08, 0x4b, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x1f, 0x15, 0x13, 0x1f, 0x13, 0x1d, 0x1f,
-+ 0x00, 0x7f, 0x08, 0x0f, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0x90, 0xf0, 0x90, 0x50, 0xf0,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7f, 0x08, 0x1c,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7c, 0x01, 0x02, 0x0c, 0x71, 0x13, 0x09,
-+ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x48, 0xc0, 0x30, 0x2c, 0x20,
-+ 0x40, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x57, 0x34, 0x38, 0x10, 0x7f, 0x12, 0x3a,
-+ 0x36, 0x56, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x80, 0xf8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x3a, 0x13, 0x7e, 0x12, 0x3a,
-+ 0x36, 0x56, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x4b, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x4b, 0x2a, 0x2d, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0e, 0x08, 0x1f, 0x72, 0x0c, 0x73, 0x11,
-+ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0x10,
-+ 0x20, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x40, 0x2a, 0x12, 0x25, 0x22, 0x11,
-+ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x98, 0x94, 0x14, 0x60, 0x10,
-+ 0x20, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8,
-+ 0xa4, 0xa8, 0x90, 0x90, 0xe8, 0x04, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7e, 0x09, 0x1e,
-+ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x90, 0x90, 0xd8, 0x24, 0x24,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0xf8, 0x00, 0x00, 0xfc,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x10, 0x54, 0x37, 0x38, 0x10, 0x7c, 0x11, 0x39,
-+ 0x37, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xa0, 0xa0, 0x24, 0x28,
-+ 0x30, 0x60, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x55, 0x34, 0x38, 0x13, 0x7c, 0x13, 0x38,
-+ 0x34, 0x57, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0xe8, 0x30, 0x60,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x90,
-+ 0xfc, 0x50, 0x54, 0x8c, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2d, 0x0b, 0x7e, 0x09, 0x1c,
-+ 0x1b, 0x2a, 0x48, 0x0b, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0xfc, 0x40, 0xe4, 0x68,
-+ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00,
-+ 0x10, 0x57, 0x34, 0x38, 0x13, 0x7e, 0x12, 0x3a,
-+ 0x36, 0x56, 0x52, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0x00, 0xfc, 0x00, 0xf8, 0xa8,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x16, 0x16, 0x1a, 0x14,
-+ 0x12, 0x1f, 0x11, 0x26, 0x38, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0xb8, 0xbc, 0x54, 0x90,
-+ 0xa0, 0xfc, 0xc0, 0xb0, 0x8c, 0x80, 0x00, 0x00,
-+ 0x10, 0x54, 0x37, 0x38, 0x11, 0x7f, 0x11, 0x39,
-+ 0x35, 0x54, 0x53, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x3d, 0x0b, 0x3f, 0x3b, 0x0d, 0x31, 0x7f, 0x0f,
-+ 0x08, 0x0f, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00,
-+ 0x78, 0x48, 0xf8, 0xb8, 0x48, 0x30, 0xfc, 0xe0,
-+ 0x20, 0xe0, 0xf8, 0x58, 0xf8, 0x18, 0x00, 0x00,
-+ 0x10, 0x57, 0x34, 0x3b, 0x13, 0x7d, 0x10, 0x3b,
-+ 0x34, 0x57, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xfc, 0x58, 0xf8, 0x40, 0xfc,
-+ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x3b, 0x12, 0x7e, 0x12, 0x3a,
-+ 0x36, 0x57, 0x53, 0x15, 0x15, 0x19, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0x39, 0x08, 0x09, 0x14, 0x23, 0x48, 0x2a,
-+ 0x1d, 0x7e, 0x1c, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x50, 0xfc,
-+ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x2b, 0x2a, 0x3f, 0x4a, 0x7f, 0x4a, 0x2a,
-+ 0x1d, 0x7e, 0x1c, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x50, 0xfc,
-+ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d,
-+ 0x08, 0x2a, 0x29, 0x29, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7d,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7d,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x50, 0x48, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x15, 0x65, 0x19, 0x19, 0x25, 0x7d,
-+ 0x11, 0x39, 0x35, 0x35, 0x51, 0x16, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x03, 0x0d, 0x71, 0x02,
-+ 0x1e, 0x03, 0x7f, 0x05, 0x09, 0x31, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x80, 0x60, 0x1c, 0x40,
-+ 0xa0, 0x18, 0xe4, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x1a, 0x1a, 0x26, 0x7e,
-+ 0x12, 0x1a, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x15, 0x0d, 0x13, 0x7f,
-+ 0x0d, 0x2b, 0x2b, 0x29, 0x4b, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20,
-+ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x29, 0x49, 0x02,
-+ 0x1e, 0x03, 0x7f, 0x05, 0x09, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x40,
-+ 0xa0, 0x18, 0xe4, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x90, 0x88, 0xf4, 0x04,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x0d, 0x0c, 0x13, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x00, 0x00, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x0d, 0x0c, 0x12, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x50, 0x30, 0xdc, 0x10,
-+ 0xf8, 0x90, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xfc, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x15, 0x65, 0x1a, 0x18, 0x24, 0x7d,
-+ 0x13, 0x19, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x80, 0xf8, 0x00, 0x00, 0x80, 0xfc, 0x90, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x28, 0xc8, 0x50, 0x30, 0x48, 0xfc,
-+ 0x24, 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x64, 0x1b, 0x18, 0x24, 0x7c,
-+ 0x13, 0x38, 0x35, 0x35, 0x52, 0x10, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0x24, 0xfc, 0xa0, 0xa8, 0xe8,
-+ 0xa8, 0x90, 0x14, 0x2c, 0x4c, 0x84, 0x00, 0x00,
-+ 0x08, 0x7e, 0x12, 0x12, 0x3c, 0x04, 0x1b, 0x62,
-+ 0x1c, 0x03, 0x7f, 0x05, 0x09, 0x31, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x40,
-+ 0xa0, 0x18, 0xe4, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x73, 0x15, 0x0d, 0x13, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0x48, 0x30, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x50, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e,
-+ 0x0d, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa8, 0x50, 0xa8, 0xa8, 0x00,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x08, 0xf0, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0xf0,
-+ 0x50, 0x50, 0x9c, 0x84, 0x04, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x16, 0x14, 0x37, 0x54, 0x15,
-+ 0x14, 0x17, 0x15, 0x15, 0x12, 0x10, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0x60, 0xf0, 0x4c, 0x50, 0xb0,
-+ 0x48, 0xfc, 0x50, 0x48, 0x48, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0d, 0x12, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x08, 0x10, 0xe8, 0xa4, 0x94, 0x20, 0x20, 0xfc,
-+ 0x48, 0x48, 0xf0, 0x10, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x20, 0x40,
-+ 0xfc, 0x04, 0x04, 0x04, 0xfc, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x64, 0x29, 0x18, 0x25, 0x7e,
-+ 0x18, 0x35, 0x35, 0x32, 0x54, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xc8, 0xa8, 0x30, 0x40,
-+ 0xa0, 0xa8, 0x84, 0x84, 0x90, 0x70, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x60, 0x50, 0x88, 0xfc, 0x08,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x00, 0x3f, 0x22, 0x3e, 0x23, 0x22,
-+ 0x4e, 0x01, 0x7f, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x50, 0x60, 0x90, 0x4c,
-+ 0xc0, 0x30, 0xc8, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa4, 0xfc, 0x20, 0xfc, 0x50, 0x88,
-+ 0xf4, 0x90, 0x90, 0xb4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x0c, 0x0d, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0xe8, 0xa4, 0x94, 0x10, 0x20, 0x20,
-+ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x12, 0x12, 0x14, 0x66, 0x1a, 0x18, 0x27, 0x7e,
-+ 0x12, 0x3b, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0x48, 0x48, 0x00, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2b, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x3c, 0x20, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2d, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xe8, 0x28, 0x34, 0xcc, 0x50,
-+ 0x5c, 0xe8, 0x28, 0x14, 0x6c, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x26, 0x7f,
-+ 0x18, 0x34, 0x36, 0x32, 0x54, 0x10, 0x00, 0x00,
-+ 0x80, 0xf8, 0x48, 0xf8, 0xa8, 0x68, 0x98, 0xf8,
-+ 0x40, 0xa8, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x1b, 0x1a, 0x27, 0x7e,
-+ 0x1a, 0x36, 0x36, 0x32, 0x54, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x65, 0x1b, 0x19, 0x26, 0x7f,
-+ 0x10, 0x3a, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x88, 0xf8,
-+ 0x88, 0xa8, 0xa8, 0xe8, 0x28, 0x30, 0x00, 0x00,
-+ 0x08, 0x11, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x09,
-+ 0x7e, 0x4a, 0x4a, 0x4a, 0x4f, 0x08, 0x00, 0x00,
-+ 0x0c, 0xf0, 0x20, 0xc8, 0x50, 0x30, 0x48, 0xfc,
-+ 0x24, 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x64, 0x19, 0x1b, 0x24, 0x7f,
-+ 0x12, 0x3b, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x65, 0x19, 0x19, 0x25, 0x7d,
-+ 0x19, 0x35, 0x35, 0x32, 0x53, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x73, 0x16, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x90, 0x90, 0xf0,
-+ 0x80, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x67, 0x2a, 0x1b, 0x26, 0x7f,
-+ 0x13, 0x3b, 0x37, 0x33, 0x54, 0x18, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xe8,
-+ 0x50, 0x54, 0xdc, 0x6c, 0x44, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0f, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0xa8, 0xa8, 0xfc, 0xa8, 0xb8, 0x80, 0xfc, 0x20,
-+ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x26, 0x7f,
-+ 0x12, 0x3a, 0x37, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x80, 0x70, 0x50, 0x54, 0xd4, 0x4c, 0x80, 0xf8,
-+ 0x48, 0x28, 0xb0, 0x10, 0x28, 0xc4, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x69, 0x2a, 0x1a, 0x27, 0x7d,
-+ 0x17, 0x39, 0x35, 0x31, 0x56, 0x10, 0x00, 0x00,
-+ 0x20, 0xe0, 0x20, 0x20, 0xbc, 0xc8, 0x68, 0x28,
-+ 0xe8, 0x10, 0x50, 0xa8, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x26, 0x7f,
-+ 0x12, 0x3a, 0x37, 0x36, 0x50, 0x10, 0x00, 0x00,
-+ 0x10, 0x90, 0x90, 0xb8, 0xb8, 0xb4, 0xd4, 0xd4,
-+ 0xb8, 0x88, 0x90, 0xa0, 0x40, 0x80, 0x00, 0x00,
-+ 0x10, 0x11, 0x15, 0x65, 0x29, 0x19, 0x25, 0x7d,
-+ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xfc, 0x10, 0xcc,
-+ 0xfc, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x67, 0x2a, 0x1b, 0x26, 0x7f,
-+ 0x13, 0x3b, 0x37, 0x34, 0x55, 0x1a, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0xa8, 0xe8,
-+ 0x58, 0x50, 0x94, 0xec, 0x2c, 0x44, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x65, 0x2a, 0x18, 0x24, 0x7d,
-+ 0x13, 0x39, 0x35, 0x35, 0x53, 0x10, 0x00, 0x00,
-+ 0xf0, 0x10, 0x90, 0xf8, 0x04, 0xb0, 0x90, 0x08,
-+ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1e, 0x52, 0x5e, 0x52, 0x5e, 0x52, 0x5f,
-+ 0x40, 0x7e, 0x2c, 0x2a, 0x4b, 0x08, 0x00, 0x00,
-+ 0x04, 0xf8, 0x20, 0xc8, 0x50, 0x30, 0x48, 0xfc,
-+ 0x24, 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x66, 0x2c, 0x1b, 0x25, 0x7c,
-+ 0x13, 0x38, 0x37, 0x34, 0x50, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x40, 0xf8, 0x10, 0xa0,
-+ 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x0c, 0x2a, 0x2b, 0x2a, 0x4f, 0x08, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xfc,
-+ 0x80, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x6a, 0x2d, 0x19, 0x25, 0x7e,
-+ 0x16, 0x3a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0x50, 0xb8, 0xa4, 0x24, 0xa0,
-+ 0xa0, 0xb8, 0xa0, 0xe0, 0x20, 0x1c, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x26, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x34, 0x58, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xfc, 0xa8, 0xf0,
-+ 0x9c, 0x10, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x64, 0x29, 0x1b, 0x24, 0x7f,
-+ 0x11, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0x90, 0x68, 0xfc, 0x00, 0xfc,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x12, 0x11, 0x15, 0x64, 0x2a, 0x19, 0x25, 0x7c,
-+ 0x13, 0x39, 0x35, 0x35, 0x52, 0x14, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x48, 0x78, 0x40, 0x78,
-+ 0x48, 0x48, 0x78, 0x48, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x39, 0x29, 0x2a, 0x2f, 0x39, 0x2a, 0x2d,
-+ 0x38, 0x2f, 0x29, 0x29, 0x2a, 0x58, 0x00, 0x00,
-+ 0x40, 0x50, 0xf8, 0xa4, 0xfc, 0x50, 0x58, 0xb4,
-+ 0x48, 0xfc, 0x50, 0x48, 0x48, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x67, 0x28, 0x1b, 0x24, 0x7c,
-+ 0x13, 0x39, 0x34, 0x35, 0x50, 0x13, 0x00, 0x00,
-+ 0x00, 0xfc, 0xcc, 0x74, 0xcc, 0x74, 0x44, 0xa0,
-+ 0x70, 0x9c, 0x68, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x69, 0x2f, 0x14, 0x2c, 0x7f,
-+ 0x15, 0x39, 0x35, 0x35, 0x51, 0x16, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x20, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0x30, 0x28, 0xfc, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x16, 0x16, 0x1a, 0x11,
-+ 0x17, 0x10, 0x1f, 0x22, 0x2c, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0xb8, 0xbc, 0xd4, 0x20,
-+ 0x60, 0x98, 0xe4, 0xb0, 0x88, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7f,
-+ 0x09, 0x2d, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x6b, 0x2a, 0x1b, 0x24, 0x7d,
-+ 0x10, 0x3b, 0x35, 0x35, 0x52, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf0,
-+ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x12, 0x16, 0x67, 0x28, 0x1b, 0x26, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x34, 0x54, 0x19, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xb8, 0xa8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2d, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x48, 0xf0, 0x28, 0xc4, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x24, 0x7d,
-+ 0x10, 0x3b, 0x35, 0x35, 0x52, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90, 0xb0,
-+ 0x48, 0xf4, 0x50, 0x48, 0x48, 0x40, 0x00, 0x00,
-+ 0x12, 0x11, 0x15, 0x64, 0x2a, 0x19, 0x25, 0x7c,
-+ 0x13, 0x39, 0x35, 0x35, 0x52, 0x14, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xe0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x67, 0x2b, 0x1b, 0x24, 0x7d,
-+ 0x10, 0x3b, 0x34, 0x34, 0x53, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xfc, 0x58, 0xf8, 0x40, 0xf8,
-+ 0x00, 0xfc, 0x50, 0x88, 0xf4, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x26, 0x7e,
-+ 0x12, 0x3a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xe8, 0xa8,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x68, 0x08, 0x00, 0x00,
-+ 0x12, 0x12, 0x17, 0x6a, 0x2f, 0x18, 0x2b, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xe0, 0xa0, 0xfc, 0x48, 0xa8, 0xa8,
-+ 0xa8, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x14, 0x67, 0x29, 0x1b, 0x25, 0x7d,
-+ 0x13, 0x3b, 0x34, 0x34, 0x51, 0x12, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x17, 0x0c, 0x12, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x73, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x54, 0x88, 0xfc, 0x88, 0xf8,
-+ 0x88, 0xf8, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x28, 0x1b, 0x24, 0x7f,
-+ 0x11, 0x3f, 0x34, 0x37, 0x50, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x65, 0x2a, 0x1b, 0x27, 0x7e,
-+ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xfc, 0x58, 0xe8,
-+ 0xf8, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x29, 0x1a, 0x26, 0x7f,
-+ 0x12, 0x3a, 0x37, 0x36, 0x50, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xb8, 0xa0, 0xb8, 0xa8, 0xb8,
-+ 0xa8, 0xa8, 0xb8, 0xa4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x12, 0x17, 0x66, 0x2a, 0x1b, 0x27, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x37, 0x53, 0x12, 0x00, 0x00,
-+ 0x90, 0xd8, 0x68, 0xd0, 0xa8, 0xf8, 0xfc, 0xd8,
-+ 0x68, 0x90, 0x68, 0xf8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x14, 0x67, 0x2b, 0x1f, 0x24, 0x7f,
-+ 0x10, 0x3b, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0x40, 0xfc,
-+ 0x40, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x68, 0x2f, 0x12, 0x2a, 0x7d,
-+ 0x11, 0x39, 0x35, 0x35, 0x52, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0xf8, 0xe8, 0xf8, 0xe4,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0x70, 0x8c, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x0b, 0x73, 0x14, 0x0d, 0x12, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x20, 0xfc, 0x08, 0xfc, 0xa8, 0x70, 0x78, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0x88, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x7d, 0x2e, 0x2a, 0x29, 0x7e, 0x13,
-+ 0x1d, 0x75, 0x15, 0x25, 0x29, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x7c, 0xa8, 0xa8, 0x28, 0xfc, 0xd0,
-+ 0x10, 0xfc, 0x50, 0x50, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x26, 0x7f,
-+ 0x18, 0x37, 0x36, 0x32, 0x57, 0x10, 0x00, 0x00,
-+ 0x10, 0xd0, 0x90, 0xdc, 0x60, 0xc0, 0xb8, 0xc0,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x15, 0x67, 0x29, 0x19, 0x27, 0x7c,
-+ 0x13, 0x3a, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00,
-+ 0x00, 0x7c, 0x10, 0xd0, 0x38, 0x28, 0xb8, 0x28,
-+ 0xb8, 0xa8, 0xb8, 0xa8, 0xa4, 0x44, 0x00, 0x00,
-+ 0x11, 0x13, 0x15, 0x67, 0x29, 0x1a, 0x25, 0x7d,
-+ 0x11, 0x39, 0x35, 0x35, 0x50, 0x13, 0x00, 0x00,
-+ 0x10, 0xb8, 0x10, 0xfc, 0x10, 0xa8, 0xf4, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x67, 0x2a, 0x1b, 0x27, 0x7f,
-+ 0x11, 0x39, 0x35, 0x35, 0x51, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0xf8, 0xb8, 0x38, 0xf8, 0xf0,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2a, 0x1a, 0x26, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x34, 0x54, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf8,
-+ 0xfc, 0xa8, 0x74, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x11, 0x11, 0x15, 0x67, 0x2a, 0x1a, 0x24, 0x7e,
-+ 0x19, 0x35, 0x35, 0x32, 0x54, 0x10, 0x00, 0x00,
-+ 0x00, 0x7c, 0x10, 0xd0, 0xb8, 0x68, 0xf8, 0xa8,
-+ 0xb8, 0xa8, 0x78, 0x68, 0x24, 0x44, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2b, 0x1a, 0x27, 0x7d,
-+ 0x12, 0x3b, 0x34, 0x35, 0x50, 0x13, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xb8, 0xa8, 0xb8, 0xa8,
-+ 0x44, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00,
-+ 0x10, 0x11, 0x17, 0x65, 0x29, 0x19, 0x25, 0x7f,
-+ 0x10, 0x3b, 0x35, 0x35, 0x50, 0x17, 0x00, 0x00,
-+ 0xf0, 0x20, 0xf8, 0xf8, 0xe4, 0x38, 0xe4, 0x5c,
-+ 0xf0, 0xf0, 0x50, 0xf8, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x12, 0x12, 0x13, 0x6d, 0x2f, 0x1a, 0x2e, 0x7a,
-+ 0x16, 0x3a, 0x3e, 0x33, 0x56, 0x10, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xa8, 0x68, 0xfc, 0xa0, 0xe8, 0xa8,
-+ 0xe8, 0xd0, 0x90, 0xf4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x69, 0x2f, 0x1a, 0x2e, 0x7a,
-+ 0x16, 0x3a, 0x3e, 0x33, 0x56, 0x10, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0x28, 0xfc, 0xa0, 0xe8, 0xa8,
-+ 0xe8, 0xd0, 0x90, 0xf4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x01, 0x3f, 0x0f, 0x7f, 0x0f, 0x7f, 0x1f, 0x2e,
-+ 0x2f, 0x2e, 0x2e, 0x3f, 0x2a, 0x49, 0x00, 0x00,
-+ 0x00, 0xf8, 0xe0, 0xfc, 0xe0, 0xfc, 0xe0, 0xdc,
-+ 0xf8, 0xd0, 0x28, 0xfc, 0x58, 0x94, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x6f, 0x2f, 0x15, 0x2f, 0x7d,
-+ 0x19, 0x35, 0x35, 0x31, 0x50, 0x17, 0x00, 0x00,
-+ 0x20, 0xbc, 0x40, 0xf8, 0xfc, 0x74, 0xfc, 0xf0,
-+ 0xf0, 0xf0, 0x10, 0xf4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x10, 0x11, 0x1e, 0x28, 0x48, 0x7f, 0x08, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x3e, 0x23, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1e, 0x28, 0x48, 0x7f, 0x08, 0x2b,
-+ 0x2a, 0x2a, 0x2a, 0x3e, 0x23, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x28, 0x28, 0x28, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x3f, 0x29, 0x49, 0x7f, 0x09,
-+ 0x2d, 0x2d, 0x2d, 0x3e, 0x26, 0x24, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x58, 0xe8, 0x38, 0x18, 0xe8,
-+ 0xa8, 0x70, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x3e, 0x14, 0x66,
-+ 0x0f, 0x11, 0x7f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xf8, 0x50, 0x8c,
-+ 0xf0, 0x00, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x0f, 0x0f, 0x3e, 0x3e, 0x2a,
-+ 0x3e, 0x0f, 0x7f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0xf8, 0xa8,
-+ 0xf8, 0xe0, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x3f, 0x2b, 0x48, 0x7f, 0x0b,
-+ 0x2d, 0x2c, 0x2f, 0x3c, 0x24, 0x23, 0x00, 0x00,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x78,
-+ 0xd8, 0xf0, 0xfc, 0x90, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x3f, 0x29, 0x49, 0x7e, 0x09,
-+ 0x2f, 0x2d, 0x2d, 0x3d, 0x25, 0x21, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0xf8, 0x68, 0xf8, 0x90, 0xfc,
-+ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x44, 0x44, 0x44, 0x66, 0x55, 0x48,
-+ 0x4c, 0x4c, 0x53, 0x51, 0x62, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x88,
-+ 0xc8, 0xc8, 0x28, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x1f, 0x01,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xf0, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x22, 0x22, 0x3f, 0x21, 0x27,
-+ 0x24, 0x24, 0x24, 0x23, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xf8, 0x08, 0xe8,
-+ 0x08, 0x08, 0x08, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x00, 0x7f, 0x00,
-+ 0x01, 0x07, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x80,
-+ 0x80, 0x60, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x21, 0x01, 0x7f,
-+ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x1f, 0x10, 0x1f,
-+ 0x11, 0x1f, 0x10, 0x10, 0x1f, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x80, 0x44, 0x34, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x02, 0x7f, 0x09, 0x1f,
-+ 0x69, 0x0f, 0x09, 0x0f, 0x09, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xfc, 0x20, 0xf0,
-+ 0x2c, 0xe0, 0x20, 0xe8, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x01, 0x01, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x08, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x20, 0x20, 0xfc,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x1c, 0x7f, 0x00,
-+ 0x1c, 0x1c, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x10, 0x10, 0xfc, 0x10,
-+ 0x90, 0x50, 0x50, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x10, 0x14, 0x64, 0x19,
-+ 0x15, 0x7f, 0x2d, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0xf0, 0x90, 0xf0, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x14, 0x7e, 0x3e, 0x22,
-+ 0x3e, 0x3e, 0x22, 0x26, 0x24, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x90, 0xe0, 0x88, 0x78,
-+ 0x90, 0xe0, 0x88, 0x78, 0x88, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x7f, 0x0f, 0x08, 0x0f,
-+ 0x0f, 0x7f, 0x1f, 0x69, 0x09, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0xe0, 0xfc, 0xf0, 0x2c, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x14, 0x7f, 0x14, 0x1c,
-+ 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0xfc, 0xa0, 0xf8, 0xa0,
-+ 0xf8, 0xa0, 0xfc, 0xd4, 0x6c, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x14, 0x7f, 0x14, 0x1c,
-+ 0x3f, 0x2a, 0x3e, 0x7f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x20, 0xf8, 0x60, 0x90,
-+ 0xfc, 0xe8, 0xa8, 0xe8, 0x88, 0x18, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x01, 0x1f, 0x01,
-+ 0x01, 0x7f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x08,
-+ 0x0f, 0x11, 0x2f, 0x42, 0x3f, 0x00, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00,
-+ 0xe0, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x08, 0x3e, 0x08,
-+ 0x0e, 0x78, 0x10, 0x11, 0x27, 0x40, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xa0, 0xfc, 0x90,
-+ 0x90, 0x94, 0xcc, 0x8c, 0xf4, 0x04, 0x00, 0x00,
-+ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x09, 0x3e, 0x09,
-+ 0x0e, 0x78, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x1f, 0x07, 0x1c, 0x67,
-+ 0x04, 0x3f, 0x1f, 0x01, 0x7f, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0xf8, 0x08, 0xf8,
-+ 0x40, 0xf8, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x08, 0x3e, 0x08,
-+ 0x0f, 0x79, 0x11, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc,
-+ 0x24, 0x64, 0x94, 0xf4, 0x04, 0x18, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x06, 0x38,
-+ 0x7f, 0x1a, 0x7f, 0x1e, 0x02, 0x0d, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x50, 0x48,
-+ 0xfc, 0x28, 0x28, 0x14, 0x6c, 0x84, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x7f, 0x24, 0x4a, 0x3f,
-+ 0x0f, 0x7f, 0x01, 0x7f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0xfc, 0x88, 0x64, 0xf8,
-+ 0xe0, 0xfc, 0x00, 0xfc, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x24, 0x42,
-+ 0x3f, 0x0f, 0x01, 0x7f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x88, 0x44,
-+ 0xf8, 0xe0, 0x00, 0xfc, 0x60, 0x1c, 0x00, 0x00,
-+ 0x44, 0x2b, 0x7f, 0x12, 0x12, 0x3a, 0x13, 0x1d,
-+ 0x71, 0x11, 0x21, 0x21, 0x47, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x1f, 0x1f, 0x10, 0x1f, 0x3a,
-+ 0x2f, 0x3b, 0x29, 0x3f, 0x29, 0x59, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0xf0, 0x10, 0xf0, 0xb8,
-+ 0xe8, 0xa8, 0x38, 0xec, 0x2c, 0x44, 0x00, 0x00,
-+ 0x08, 0x3f, 0x01, 0x1f, 0x7f, 0x01, 0x19, 0x7f,
-+ 0x19, 0x19, 0x3d, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x20, 0xf8, 0x00, 0xf0, 0xfc, 0x00, 0x30, 0xfc,
-+ 0x30, 0x30, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x11, 0x12, 0x7c, 0x24,
-+ 0x15, 0x1a, 0x08, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0xd8, 0x68, 0x48, 0xd8, 0xd8,
-+ 0x68, 0x48, 0x48, 0xd8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x02, 0x3f,
-+ 0x04, 0x09, 0x31, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x00, 0xc0,
-+ 0x44, 0x3c, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x09, 0x4a, 0x2c, 0x28,
-+ 0x29, 0x11, 0x1a, 0x64, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x98, 0x98, 0xa8, 0xc8, 0x98,
-+ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x70, 0x0f, 0x08, 0x0f, 0x00,
-+ 0x7f, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00,
-+ 0x00, 0x80, 0xe0, 0x1c, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x44, 0x27, 0x28, 0x7c, 0x12, 0x11, 0x3d, 0x10,
-+ 0x19, 0x72, 0x14, 0x10, 0x20, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xc8, 0xa8, 0xa8, 0x88,
-+ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x04, 0x7c, 0x04, 0x3c, 0x04, 0x7c, 0x08, 0x7f,
-+ 0x06, 0x1a, 0x67, 0x1a, 0x63, 0x06, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf8, 0x80, 0xfc, 0x80, 0xf8,
-+ 0x18, 0x68, 0x98, 0x68, 0x88, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x3e, 0x3a, 0x26, 0x3a, 0x26, 0x26,
-+ 0x7f, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0x48, 0x48, 0x48, 0x48, 0x18,
-+ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3e,
-+ 0x2e, 0x7f, 0x6e, 0x2e, 0x2e, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xd8, 0xd8, 0x68, 0x48, 0xd8,
-+ 0xd8, 0x68, 0x48, 0x48, 0x48, 0xd8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2e, 0x34, 0x3f, 0x2c, 0x32, 0x3f,
-+ 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc,
-+ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x08, 0x3d, 0x08, 0x7e, 0x25, 0x7e, 0x24, 0x3e,
-+ 0x41, 0x7e, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0xd8, 0x68, 0x48, 0xd8, 0xd8,
-+ 0x68, 0x48, 0x48, 0xdc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x06, 0x7b, 0x2a, 0x1c, 0x7f, 0x1c, 0x1a, 0x29,
-+ 0x7e, 0x2a, 0x3e, 0x2a, 0x3f, 0x22, 0x00, 0x00,
-+ 0x00, 0xf4, 0x78, 0xb8, 0xb4, 0xac, 0xa4, 0xf4,
-+ 0xb8, 0xb8, 0xb4, 0xac, 0x2c, 0x24, 0x00, 0x00,
-+ 0x02, 0x1f, 0x02, 0x7f, 0x03, 0x0f, 0x72, 0x01,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0xe0, 0x40, 0xfc, 0x30, 0xc8, 0x08, 0xf8,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x02, 0x1f, 0x02, 0x7f, 0x03, 0x0f, 0x72, 0x01,
-+ 0x1f, 0x03, 0x3e, 0x03, 0x7e, 0x01, 0x00, 0x00,
-+ 0x10, 0xe0, 0x40, 0xfc, 0x30, 0xc8, 0x08, 0xf8,
-+ 0x80, 0xf0, 0x00, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x02, 0x1f, 0x02, 0x7f, 0x03, 0x0f, 0x71, 0x3f,
-+ 0x02, 0x3f, 0x0f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x10, 0xe0, 0x40, 0xfc, 0x30, 0xc4, 0xfc, 0xf8,
-+ 0x20, 0xf8, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x01, 0x7f,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0e, 0x78, 0x08, 0x3e, 0x09, 0x7e, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x08, 0x0e, 0x78, 0x08, 0x3e, 0x08, 0x7f, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0e, 0x78, 0x08, 0x3e, 0x08, 0x7e, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0xf0, 0x90, 0x80,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x1f, 0x72, 0x12, 0x3b, 0x12, 0x7e, 0x1b,
-+ 0x36, 0x36, 0x53, 0x16, 0x10, 0x11, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xc8, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x0f, 0x79, 0x09, 0x3f, 0x09, 0x7f, 0x0d,
-+ 0x1b, 0x1b, 0x29, 0x4a, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xfc, 0x54, 0x78,
-+ 0xcc, 0xfc, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x12, 0x1e, 0x12, 0x12, 0x1f,
-+ 0x12, 0x12, 0x1e, 0x72, 0x03, 0x02, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x24, 0xa4, 0xa8, 0xb0, 0x20,
-+ 0x30, 0x50, 0x50, 0x88, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x3c, 0x64, 0x07, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xa0, 0xb8, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2a, 0x2a, 0x3a, 0x2a, 0x2a, 0x3a,
-+ 0x2a, 0x2b, 0x3e, 0x68, 0x09, 0x0a, 0x00, 0x00,
-+ 0x80, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xb8, 0xa0, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x24, 0x3d, 0x27, 0x24, 0x3f,
-+ 0x24, 0x24, 0x3c, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x25, 0x24, 0x3c,
-+ 0x24, 0x24, 0x3c, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x7f, 0x25, 0x25, 0x3d, 0x25, 0x24, 0x3f,
-+ 0x24, 0x24, 0x3c, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x1e, 0x1e, 0x12, 0x1f, 0x72,
-+ 0x03, 0x09, 0x35, 0x09, 0x31, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0x30, 0x70, 0x88, 0x44,
-+ 0x90, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x1e, 0x28, 0x7f, 0x0c, 0x12, 0x20, 0x7f,
-+ 0x08, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0xfc,
-+ 0x20, 0xe0, 0xe0, 0x3c, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7e, 0x25, 0x25, 0x3e, 0x25, 0x24, 0x3c,
-+ 0x24, 0x24, 0x3c, 0x64, 0x05, 0x06, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0xe0, 0x20, 0x1c, 0x00, 0x00,
-+ 0x01, 0x7d, 0x2e, 0x2a, 0x39, 0x2a, 0x2f, 0x38,
-+ 0x28, 0x2f, 0x38, 0x68, 0x09, 0x0a, 0x00, 0x00,
-+ 0x10, 0x10, 0xe8, 0xa8, 0x10, 0xa8, 0xfc, 0x44,
-+ 0x90, 0xfc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x09, 0x31, 0x0a, 0x15, 0x71, 0x12, 0x14, 0x7f,
-+ 0x08, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x10, 0x90, 0x68, 0x44, 0x78, 0xc0, 0x7c, 0xfc,
-+ 0x20, 0xe0, 0xe0, 0x3c, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x3e, 0x2a, 0x3e, 0x21,
-+ 0x5f, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x70, 0x50, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc,
-+ 0xf8, 0xe0, 0xe0, 0x38, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d,
-+ 0x24, 0x25, 0x3d, 0x66, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0x78, 0xa8, 0x68, 0x98, 0xf8,
-+ 0x40, 0xa8, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x07, 0x07, 0x3f, 0x00, 0x7f,
-+ 0x12, 0x1e, 0x1e, 0x12, 0x7f, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xc0, 0xc0, 0xc0, 0x40, 0xfc,
-+ 0x90, 0xf0, 0xf0, 0x90, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2a, 0x2d, 0x3a, 0x2c, 0x2b, 0x3a,
-+ 0x2f, 0x28, 0x3f, 0x68, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x70, 0xf8, 0xa8,
-+ 0xfc, 0x00, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7c, 0x2f, 0x38, 0x3b, 0x2a, 0x3b, 0x68,
-+ 0x7f, 0x28, 0x7a, 0x3a, 0x6c, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xf8, 0x00,
-+ 0xfc, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x01,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x26, 0x38, 0x22, 0x1f, 0x10, 0x1e, 0x28,
-+ 0x7e, 0x08, 0x15, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x20, 0x3c, 0x21, 0x3c, 0x20, 0x7e,
-+ 0x10, 0x18, 0x25, 0x2a, 0x72, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x15, 0x1d,
-+ 0x11, 0x1f, 0x11, 0x1d, 0x25, 0x45, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x50, 0x70,
-+ 0x10, 0xf0, 0x10, 0x70, 0x50, 0x50, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3c, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x20, 0x1f, 0x00, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3c, 0x24, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x68,
-+ 0x98, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xe8, 0x08, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x60, 0x60,
-+ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x09, 0x17, 0x61, 0x00, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xf8, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x25, 0x3e, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x7c, 0x40,
-+ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x27, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0xd4, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x00, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3c, 0x24, 0x25,
-+ 0x3e, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x40, 0x60, 0xd0, 0x48,
-+ 0x44, 0x44, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x26, 0x3f, 0x24, 0x24,
-+ 0x3f, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x50, 0x48, 0x44, 0xf8, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x24, 0x3f, 0x24, 0x24,
-+ 0x3d, 0x25, 0x26, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0xc0, 0x48, 0xe8, 0xf0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x25, 0x3e, 0x24, 0x27,
-+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xe8, 0x04, 0xf8,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x26, 0x25, 0x25, 0x3c, 0x27, 0x24,
-+ 0x3c, 0x24, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x50, 0x60, 0x40, 0xfc, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x25, 0x3d, 0x24, 0x24,
-+ 0x3d, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x15, 0x16, 0x34, 0x57, 0x14,
-+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x90, 0x60, 0xf0, 0x0c, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x10, 0x1f, 0x14, 0x37, 0x2c,
-+ 0x5f, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x00, 0xfc, 0x90, 0x60, 0x1c,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x24, 0x3d, 0x25, 0x27,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0xa0, 0x38, 0x48, 0x68,
-+ 0xd0, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x28, 0x29, 0x32, 0x28, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0x2b, 0x2a, 0x3a, 0x2b, 0x2a,
-+ 0x3a, 0x2f, 0x28, 0x28, 0x29, 0x5a, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xfc, 0xa0, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3c, 0x24, 0x27, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x50, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x27, 0x24,
-+ 0x3c, 0x27, 0x24, 0x25, 0x25, 0x4e, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0,
-+ 0xe0, 0xbc, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x38, 0x2b, 0x2a, 0x2a, 0x3a, 0x2a, 0x2b,
-+ 0x3a, 0x2a, 0x2a, 0x2c, 0x2c, 0x58, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x48, 0x48, 0x88, 0xfc, 0xc8,
-+ 0xa8, 0xa8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x24, 0x27,
-+ 0x3c, 0x24, 0x24, 0x25, 0x25, 0x4e, 0x00, 0x00,
-+ 0x08, 0x88, 0x90, 0xfc, 0x90, 0x90, 0x90, 0xfc,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x38, 0x2f, 0x29, 0x2a, 0x3a, 0x2f, 0x29,
-+ 0x3d, 0x2d, 0x2b, 0x2b, 0x2c, 0x58, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xe0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3c, 0x25, 0x25, 0x26, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xa8, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x24, 0x24,
-+ 0x3d, 0x26, 0x25, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xa0, 0xa0,
-+ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x24, 0x3c, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0x40, 0xf8, 0x28,
-+ 0xe8, 0x28, 0x58, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x26, 0x26, 0x27, 0x3e, 0x26, 0x27,
-+ 0x3e, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x58, 0x48, 0x48, 0x58, 0x48, 0x48, 0x58,
-+ 0x48, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x24,
-+ 0x3d, 0x25, 0x25, 0x25, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0x28, 0x58, 0x88, 0xf8, 0x00,
-+ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3b, 0x28, 0x29, 0x29, 0x39, 0x28, 0x2b,
-+ 0x3a, 0x2b, 0x2a, 0x2a, 0x2a, 0x5a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0xa8, 0x38, 0xe8, 0x48, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x24, 0x27, 0x25, 0x24, 0x4c, 0x00, 0x00,
-+ 0x50, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0x58, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x25, 0x24, 0x3f, 0x26, 0x27,
-+ 0x3c, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x48, 0xfc,
-+ 0x40, 0x78, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x7e, 0x11, 0x1e, 0x14, 0x24, 0x39, 0x4f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xe8, 0x90, 0xe8, 0x84, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x26, 0x25, 0x3e, 0x24, 0x25,
-+ 0x3e, 0x25, 0x24, 0x25, 0x24, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xd8, 0xa8, 0xc8, 0x40, 0xb0,
-+ 0x4c, 0xa0, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x00, 0x3b, 0x2a, 0x2a, 0x2b, 0x3a, 0x2b, 0x2b,
-+ 0x3b, 0x2a, 0x2b, 0x2a, 0x2b, 0x5a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x38, 0x28, 0xf8, 0x28, 0xe8, 0x78,
-+ 0xf8, 0x68, 0xb8, 0x58, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x26, 0x3f, 0x27, 0x24,
-+ 0x3d, 0x24, 0x27, 0x24, 0x25, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x00,
-+ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x26, 0x24, 0x3d, 0x27, 0x24,
-+ 0x3d, 0x24, 0x25, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa4, 0x1c, 0xf8, 0x90,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x26, 0x27, 0x3c, 0x24, 0x27,
-+ 0x3c, 0x25, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0x50, 0x88, 0xf4,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x27, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3f, 0x25, 0x25, 0x26, 0x25, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0x00, 0xf8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x38, 0x2f, 0x2b, 0x28, 0x3f, 0x2b, 0x2a,
-+ 0x3b, 0x2b, 0x2a, 0x2b, 0x29, 0x5a, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0x50,
-+ 0xd0, 0xd4, 0x4c, 0xcc, 0x84, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x24, 0x27, 0x3c, 0x25, 0x26,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0xd0, 0xfc, 0xe0, 0x50, 0x4c,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x24, 0x3f, 0x25, 0x25,
-+ 0x3e, 0x24, 0x27, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0xd0, 0x40, 0xfc, 0x50, 0x50,
-+ 0xe8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x26, 0x27, 0x3f, 0x26, 0x27,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x40, 0xa0, 0xf0, 0x08, 0xfc, 0x58, 0xe8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x3d, 0x25, 0x24, 0x26, 0x3d, 0x25, 0x24,
-+ 0x3f, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x78, 0x90, 0xfc, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x48, 0xd8, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x27, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x26, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0x54, 0x8c, 0x70, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x3f, 0x2a, 0x3f, 0x52,
-+ 0x3f, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x9c, 0xf8, 0x50, 0x30, 0xcc,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x3e, 0x32, 0x5e, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x15, 0x1e, 0x14, 0x14,
-+ 0x13, 0x12, 0x13, 0x23, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0xfc, 0xf8, 0xf8, 0x90, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x27, 0x3c, 0x27, 0x26,
-+ 0x3e, 0x27, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8,
-+ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00,
-+ 0x00, 0x38, 0x2f, 0x28, 0x2f, 0x3a, 0x2b, 0x2c,
-+ 0x39, 0x29, 0x29, 0x29, 0x2a, 0x5c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0xf8, 0xe8, 0xf8, 0x44,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3b, 0x28, 0x2b, 0x2a, 0x3f, 0x2b, 0x28,
-+ 0x3b, 0x28, 0x2b, 0x2a, 0x2a, 0x5a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40,
-+ 0xf8, 0x80, 0xf8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x28, 0x29, 0x3f, 0x29, 0x29,
-+ 0x3b, 0x2d, 0x28, 0x2a, 0x2a, 0x5c, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xe0, 0x10, 0xf4, 0xb8, 0xb0,
-+ 0xf4, 0xac, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x02, 0x3a, 0x2c, 0x2a, 0x2b, 0x3a, 0x2a, 0x2b,
-+ 0x3b, 0x2a, 0x2b, 0x2a, 0x2b, 0x5e, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0x48, 0xf8, 0x68, 0xe8, 0xf8,
-+ 0x68, 0xd8, 0x68, 0xd8, 0x6c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3c, 0x27, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xf8, 0x48, 0x68, 0x98, 0xf8, 0x30, 0x00, 0x00,
-+ 0x00, 0x38, 0x2b, 0x2a, 0x2b, 0x3a, 0x2a, 0x2a,
-+ 0x3a, 0x2a, 0x2b, 0x2b, 0x2d, 0x5b, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x29, 0x28, 0x2d, 0x3d, 0x2f, 0x29,
-+ 0x3f, 0x2b, 0x2b, 0x2d, 0x2a, 0x5c, 0x00, 0x00,
-+ 0x10, 0xfc, 0x18, 0x14, 0xfc, 0x10, 0xf4, 0xd4,
-+ 0xf8, 0xb8, 0xf4, 0xdc, 0xec, 0x44, 0x00, 0x00,
-+ 0x13, 0x6f, 0x13, 0x2b, 0x7f, 0x3a, 0x57, 0x01,
-+ 0x3f, 0x22, 0x2d, 0x22, 0x2c, 0x20, 0x00, 0x00,
-+ 0x90, 0xe8, 0x90, 0xa8, 0xfc, 0xb8, 0xd4, 0x00,
-+ 0xf8, 0xc8, 0x28, 0xc8, 0x28, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x2f, 0x28, 0x2f, 0x3d, 0x2f, 0x0c,
-+ 0x7c, 0x2f, 0x2d, 0x57, 0x14, 0x20, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0xc8, 0xa8,
-+ 0xb0, 0xb0, 0x14, 0xf4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x01, 0x1f, 0x0f, 0x0f, 0x08, 0x0f, 0x3f, 0x2f,
-+ 0x42, 0x1f, 0x0f, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0xe0, 0xe0, 0x20, 0xe0, 0xfc, 0xe8,
-+ 0x40, 0xf0, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x18, 0x25, 0x7c, 0x13, 0x11,
-+ 0x7e, 0x13, 0x10, 0x1d, 0x62, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x30,
-+ 0xc8, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x01, 0x05, 0x39, 0x21, 0x21, 0x3d, 0x21, 0x21,
-+ 0x3d, 0x21, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x08, 0x08, 0x78, 0x08, 0x08,
-+ 0x78, 0x88, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x1c, 0x10, 0x1e, 0x10, 0x10, 0x1f, 0x12,
-+ 0x02, 0x7f, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x50,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04, 0x1a,
-+ 0x6c, 0x08, 0x0e, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x40, 0x30,
-+ 0xec, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x02, 0x3c, 0x3e, 0x20, 0x3f, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0xf8, 0x08, 0xf8, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x0a, 0x32, 0x23, 0x22, 0x3b, 0x20, 0x3a, 0x22,
-+ 0x22, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x38, 0x88, 0x08, 0xb8, 0x88, 0xb8, 0x88,
-+ 0x88, 0xfc, 0x00, 0x60, 0x18, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x1f, 0x71, 0x1f, 0x1f, 0x1f,
-+ 0x02, 0x1c, 0x1e, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xf8, 0x00, 0xe0, 0xe0, 0xf8,
-+ 0x00, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x18, 0x6f, 0x01, 0x01, 0x3f,
-+ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x00, 0xf8,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xa0, 0xfc, 0xa0,
-+ 0xa0, 0x90, 0x94, 0xac, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x3f, 0x49, 0x09, 0x7f,
-+ 0x09, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x17, 0x1f,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0x24, 0x20,
-+ 0x20, 0x50, 0x48, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x16, 0x1f,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x09, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x1f,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x1f,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x09, 0x1e, 0x12, 0x1b, 0x16, 0x17, 0x1e,
-+ 0x72, 0x1b, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x0c, 0xf0, 0xa8, 0xa4, 0x24, 0x10, 0xf8, 0x10,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1b, 0x16, 0x16, 0x1e,
-+ 0x72, 0x1a, 0x1b, 0x2b, 0x22, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0xf8, 0x04, 0xf8, 0xf8, 0x88,
-+ 0xf8, 0x80, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x10, 0x3d, 0x25, 0x35, 0x2d, 0x2d, 0x3f,
-+ 0x64, 0x37, 0x34, 0x34, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0xc0, 0x58, 0x48, 0xd8, 0x48, 0xd8, 0x48,
-+ 0x40, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x11, 0x3c, 0x27, 0x36, 0x2d, 0x2d, 0x3e,
-+ 0x65, 0x34, 0x37, 0x34, 0x25, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0xd8, 0xd8, 0x40,
-+ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x13, 0x3c, 0x27, 0x36, 0x2f, 0x2e, 0x3f,
-+ 0x65, 0x35, 0x35, 0x35, 0x25, 0x4d, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x16, 0x1e,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x10, 0x3f, 0x24, 0x35, 0x2c, 0x2f, 0x3c,
-+ 0x65, 0x37, 0x34, 0x37, 0x24, 0x4d, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x68,
-+ 0xa4, 0xfc, 0xe8, 0x94, 0xec, 0x84, 0x00, 0x00,
-+ 0x08, 0x10, 0x3f, 0x25, 0x35, 0x2e, 0x2f, 0x3c,
-+ 0x67, 0x36, 0x36, 0x36, 0x27, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x50, 0xe8, 0xfc, 0x00,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x13, 0x3c, 0x27, 0x36, 0x2c, 0x2f, 0x3c,
-+ 0x67, 0x34, 0x37, 0x34, 0x27, 0x4c, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0xfc, 0xe8, 0x00, 0xfc, 0x48,
-+ 0xe8, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x08, 0x10, 0x3f, 0x25, 0x35, 0x2d, 0x2d, 0x3d,
-+ 0x66, 0x35, 0x35, 0x35, 0x25, 0x4d, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xf8, 0x48, 0xf8, 0xf8, 0xa8,
-+ 0x54, 0xf8, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0x3d, 0x25, 0x35, 0x2d, 0x2d, 0x3d,
-+ 0x65, 0x35, 0x35, 0x36, 0x26, 0x4d, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00,
-+ 0x04, 0x09, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x1f,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x47, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x1c, 0x3e, 0x2a, 0x3e, 0x08,
-+ 0x3e, 0x08, 0x7e, 0x14, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0xa4,
-+ 0xa4, 0xa8, 0x90, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x5b, 0x7f, 0x5b, 0x7f, 0x7f, 0x5b, 0x7f, 0x00,
-+ 0x7f, 0x3e, 0x22, 0x3e, 0x16, 0x78, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-+ 0x3e, 0x2a, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x08, 0x08, 0x04,
-+ 0x04, 0x02, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x00, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x1f, 0x10,
-+ 0x22, 0x41, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x00, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x1f, 0x00, 0x7f,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x04, 0x04, 0x08,
-+ 0x3f, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xc0, 0x48, 0x48, 0x38,
-+ 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x12, 0x72, 0x1f, 0x12, 0x0c, 0x38,
-+ 0x0f, 0x12, 0x72, 0x1f, 0x04, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x30, 0x00,
-+ 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x04, 0x08, 0x10,
-+ 0x7f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xc0, 0x40, 0x20, 0x10,
-+ 0xec, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x10, 0x12, 0x11,
-+ 0x11, 0x10, 0x10, 0x16, 0x18, 0x63, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x30, 0x28, 0xc4, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x10, 0x2f,
-+ 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x11, 0x7f, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x06, 0x03, 0x0c, 0x32, 0x03,
-+ 0x0e, 0x71, 0x01, 0x00, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x40, 0x80, 0x80,
-+ 0x60, 0x1c, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x0f, 0x0a, 0x09, 0x7f,
-+ 0x12, 0x11, 0x11, 0x3f, 0x20, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0xf8, 0x40, 0x80, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x1f, 0x20, 0x4f, 0x09,
-+ 0x08, 0x7f, 0x12, 0x11, 0x3f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x00, 0xe0, 0x20,
-+ 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x09, 0x49, 0x21,
-+ 0x21, 0x09, 0x11, 0x11, 0x21, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x08,
-+ 0x08, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x17, 0x10,
-+ 0x31, 0x50, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x10, 0x10, 0xfc, 0x10,
-+ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x09, 0x09, 0x11,
-+ 0x21, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x20, 0x10, 0x08,
-+ 0x08, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x10, 0x2f,
-+ 0x48, 0x0f, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x88,
-+ 0x88, 0x88, 0xb0, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x24, 0x24,
-+ 0x24, 0x24, 0x3c, 0x64, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x01,
-+ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00,
-+ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x3f, 0x00,
-+ 0x08, 0x04, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x21, 0x2f,
-+ 0x21, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xe8,
-+ 0x08, 0x88, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x20, 0x27,
-+ 0x24, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x48, 0x48, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x03, 0x3c, 0x03,
-+ 0x06, 0x7f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xe0, 0x40, 0x80,
-+ 0x60, 0xfc, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x32, 0x12,
-+ 0x0c, 0x04, 0x0c, 0x12, 0x7f, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x20, 0xc8, 0x48,
-+ 0x30, 0x10, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x09, 0x09, 0x1f, 0x21,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x00, 0xf0, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x10, 0x2f,
-+ 0x48, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7e, 0x12,
-+ 0x12, 0x3a, 0x24, 0x06, 0x1a, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x7f, 0x02, 0x0f,
-+ 0x08, 0x18, 0x6f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x20, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x18, 0x6f,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0x30, 0xec,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x10, 0x17,
-+ 0x30, 0x50, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x48, 0x40, 0xfc,
-+ 0x40, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x08, 0x4b, 0x22,
-+ 0x22, 0x0a, 0x12, 0x12, 0x21, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x03, 0x0e, 0x31,
-+ 0x01, 0x0f, 0x74, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x20, 0x40,
-+ 0x80, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x06, 0x18,
-+ 0x00, 0x7f, 0x12, 0x12, 0x22, 0x4d, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0x10, 0x60,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x17, 0x10,
-+ 0x32, 0x51, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x80, 0xf8, 0x10,
-+ 0x10, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x78, 0x0b, 0x10, 0x3a,
-+ 0x0a, 0x4a, 0x32, 0x11, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x18, 0xe0, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7f,
-+ 0x08, 0x0e, 0x78, 0x08, 0x0b, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x48, 0x40, 0xfc,
-+ 0x48, 0x30, 0x20, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x1f, 0x60,
-+ 0x1f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0xf0, 0x0c,
-+ 0xe0, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x09, 0x09,
-+ 0x15, 0x23, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x20, 0x30,
-+ 0x48, 0x88, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x7f, 0x08, 0x11, 0x33,
-+ 0x08, 0x3f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x88, 0x10, 0x30,
-+ 0x88, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x13, 0x12, 0x13, 0x10,
-+ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf0, 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x09, 0x49, 0x22,
-+ 0x22, 0x0c, 0x10, 0x10, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x50, 0x48, 0x44,
-+ 0x4c, 0xd0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3c, 0x24, 0x25, 0x3c,
-+ 0x24, 0x3c, 0x24, 0x26, 0x39, 0x62, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x24, 0x24, 0x3c, 0x27,
-+ 0x04, 0x7c, 0x14, 0x14, 0x27, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x1f, 0x61,
-+ 0x1f, 0x01, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0xf0, 0x0c,
-+ 0xf0, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x1f, 0x11, 0x11,
-+ 0x1f, 0x11, 0x03, 0x05, 0x19, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x40, 0x24, 0x24, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x00, 0x0f, 0x08,
-+ 0x08, 0x0f, 0x04, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xe0, 0x20,
-+ 0x20, 0xe0, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x02, 0x0e, 0x05,
-+ 0x18, 0x61, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0x10, 0x90,
-+ 0x60, 0x00, 0x88, 0x84, 0x24, 0xe0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x7f, 0x05,
-+ 0x19, 0x6f, 0x02, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x70, 0xc0, 0x00, 0xfc, 0x40,
-+ 0x30, 0xcc, 0x40, 0x70, 0x10, 0xe0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x08, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x11, 0x10, 0x1e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf8, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x05, 0x1f,
-+ 0x69, 0x0f, 0x09, 0x0f, 0x09, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x40, 0xf0,
-+ 0x2c, 0xe0, 0x20, 0xe8, 0x08, 0xf8, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x3f, 0x20, 0x4f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x11, 0x1f, 0x01,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1e, 0x10, 0x1e, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0e, 0x08, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x19, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x48, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x0a,
-+ 0x31, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x50,
-+ 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7e, 0x08,
-+ 0x1d, 0x1a, 0x2a, 0x48, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x70, 0x10, 0x90, 0x88,
-+ 0x44, 0x40, 0x50, 0x88, 0xfc, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x1f, 0x01, 0x7f, 0x01,
-+ 0x1f, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xe0, 0x20, 0xfc, 0x20,
-+ 0xe0, 0xfc, 0x40, 0xc0, 0x60, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x1f, 0x11, 0x1f, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x00, 0x7f, 0x00, 0x0f,
-+ 0x3f, 0x21, 0x5f, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xfc, 0x20, 0xe0,
-+ 0xfc, 0x08, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x7f, 0x09, 0x08, 0x0e, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xe0, 0x00, 0xe0,
-+ 0x00, 0xfc, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x0b, 0x4a, 0x22,
-+ 0x23, 0x0a, 0x12, 0x12, 0x24, 0x2b, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x48, 0x50,
-+ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x02, 0x02, 0x3e, 0x02,
-+ 0x3e, 0x03, 0x7e, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x80, 0xf8, 0x80,
-+ 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x13, 0x09, 0x49, 0x22,
-+ 0x20, 0x0f, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x50, 0x48, 0x48,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x11, 0x09, 0x4a, 0x27,
-+ 0x20, 0x0b, 0x12, 0x12, 0x22, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x70, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1e, 0x12, 0x1a, 0x16,
-+ 0x12, 0x1a, 0x16, 0x12, 0x22, 0x47, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x78, 0x48, 0x68, 0x58,
-+ 0x48, 0x68, 0x58, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x7f, 0x02, 0x04,
-+ 0x1c, 0x64, 0x3f, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x80, 0x40,
-+ 0x70, 0x4c, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x19, 0x11, 0x1d,
-+ 0x11, 0x1d, 0x12, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x70, 0x10, 0x70,
-+ 0x10, 0x70, 0x90, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x0b, 0x48, 0x27, 0x21,
-+ 0x16, 0x11, 0x23, 0x24, 0x41, 0x4e, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x24,
-+ 0x9c, 0xf0, 0x20, 0xc0, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x20, 0xfc, 0x20,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x3e, 0x20,
-+ 0x3e, 0x20, 0x3e, 0x20, 0x20, 0x23, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7e,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x28, 0x28, 0x88,
-+ 0x48, 0x4c, 0x38, 0xc8, 0x08, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1e, 0x12, 0x1e, 0x00, 0x1f,
-+ 0x00, 0x7f, 0x04, 0x07, 0x08, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0x00, 0xf0,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x3e, 0x22, 0x3e,
-+ 0x0f, 0x7f, 0x08, 0x0f, 0x10, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xf8, 0x88, 0xf8,
-+ 0xe0, 0xfc, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x20, 0x5e, 0x01,
-+ 0x7e, 0x14, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x18, 0x10, 0xfc,
-+ 0x90, 0x50, 0x50, 0x14, 0x34, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x21, 0x7f, 0x0f, 0x09,
-+ 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x08,
-+ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x78, 0x48, 0x48,
-+ 0x78, 0x48, 0x78, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x06, 0x1f, 0x72, 0x1f, 0x0c, 0x34,
-+ 0x0f, 0x12, 0x72, 0x1f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xc8, 0x48, 0x30,
-+ 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x38, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x06, 0x1c, 0x10, 0x1e, 0x11,
-+ 0x1f, 0x10, 0x1e, 0x70, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x94, 0x94, 0x0c,
-+ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x3f,
-+ 0x21, 0x4f, 0x09, 0x09, 0x09, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0xfc,
-+ 0x08, 0xe0, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x11, 0x3d, 0x25,
-+ 0x25, 0x3d, 0x25, 0x25, 0x3d, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x48, 0x48,
-+ 0xf8, 0x08, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x09, 0x09, 0x11, 0x10,
-+ 0x37, 0x50, 0x11, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x09, 0x0f, 0x09, 0x0f,
-+ 0x01, 0x3f, 0x21, 0x21, 0x2e, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xf8, 0x48, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x14, 0x64, 0x19,
-+ 0x16, 0x7e, 0x2c, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x80, 0xf8, 0x08,
-+ 0x88, 0x48, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x08,
-+ 0x0e, 0x13, 0x12, 0x22, 0x42, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0xfc, 0x20, 0xb8,
-+ 0xe8, 0xa8, 0xb8, 0xa4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x09, 0x09, 0x3f,
-+ 0x20, 0x27, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xf8,
-+ 0x08, 0xc8, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x05, 0x19, 0x62, 0x1f, 0x00,
-+ 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xc0, 0x30, 0x4c, 0xe0, 0x00,
-+ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x19,
-+ 0x60, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0x30,
-+ 0x8c, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x06, 0x0c, 0x7f, 0x1f, 0x02, 0x7f,
-+ 0x02, 0x1f, 0x06, 0x1a, 0x62, 0x02, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xc0, 0xfc, 0xf0, 0x90, 0xfc,
-+ 0x90, 0xf0, 0xc0, 0xb0, 0x8c, 0x80, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x01, 0x7f, 0x0f, 0x08, 0x0f,
-+ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x06,
-+ 0x24, 0x14, 0x18, 0x1e, 0x70, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xc0, 0x80, 0xf8, 0x08, 0xe8,
-+ 0xa8, 0xa8, 0xe8, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x25, 0x25,
-+ 0x2b, 0x31, 0x2f, 0x21, 0x5f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x20,
-+ 0x50, 0x88, 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x07, 0x1e,
-+ 0x63, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0xe0, 0x40, 0xfc, 0xe0, 0x08,
-+ 0xf8, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x02, 0x3e, 0x20,
-+ 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xf8, 0x80,
-+ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0c, 0x08, 0x15, 0x16, 0x34,
-+ 0x57, 0x14, 0x14, 0x14, 0x14, 0x11, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xc0, 0xfc, 0x90, 0x60, 0xd0,
-+ 0x2c, 0xc0, 0x30, 0xc8, 0x30, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x17, 0x10, 0x1f, 0x12,
-+ 0x13, 0x1e, 0x3f, 0x22, 0x41, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x00, 0xfc, 0x48,
-+ 0xb0, 0x2c, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x01, 0x1f, 0x7f, 0x04,
-+ 0x1f, 0x6f, 0x03, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0xfc, 0xc0,
-+ 0x30, 0xec, 0xc0, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x22, 0x3f, 0x22, 0x23,
-+ 0x20, 0x2f, 0x28, 0x28, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xfc, 0x20, 0xfc, 0x20, 0xe0,
-+ 0x80, 0xf8, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x1f, 0x12, 0x11, 0x16,
-+ 0x1f, 0x10, 0x1e, 0x10, 0x1e, 0x70, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x50, 0x90, 0x50,
-+ 0xf0, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x3f, 0x21,
-+ 0x7f, 0x01, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0xfc, 0x08,
-+ 0xf8, 0x00, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x19, 0x66, 0x14, 0x1f,
-+ 0x60, 0x1f, 0x01, 0x09, 0x31, 0x03, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x78, 0x90, 0x60, 0x30, 0xcc,
-+ 0x00, 0xf0, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x28, 0x4f, 0x10,
-+ 0x13, 0x32, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x08, 0xf8, 0x80,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x7f, 0x1f, 0x11, 0x1f, 0x1f,
-+ 0x01, 0x3f, 0x00, 0x7f, 0x04, 0x02, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0xf0,
-+ 0x10, 0xf8, 0x20, 0xfc, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x01, 0x1f, 0x12, 0x12, 0x1f,
-+ 0x12, 0x12, 0x1f, 0x20, 0x2a, 0x51, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0x40, 0xf0,
-+ 0x40, 0x40, 0xf8, 0x00, 0x48, 0x24, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x02, 0x17, 0x29, 0x7e, 0x04,
-+ 0x19, 0x6e, 0x01, 0x0e, 0x01, 0x1e, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x80, 0xd0, 0x28, 0xfc, 0x40,
-+ 0xb0, 0x4c, 0x90, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x00, 0x7f, 0x0a, 0x0c, 0x29,
-+ 0x2e, 0x29, 0x29, 0x2d, 0x3a, 0x64, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0xfc, 0x20, 0x48, 0xfc,
-+ 0x00, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x09, 0x7e, 0x08,
-+ 0x0f, 0x13, 0x12, 0x22, 0x42, 0x0d, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xc0, 0x80, 0xfc, 0x80, 0xf8,
-+ 0x20, 0xfc, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0a, 0x7f, 0x0a, 0x33, 0x3f,
-+ 0x21, 0x5f, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xa0, 0xfc, 0xa4, 0x9c, 0xfc,
-+ 0x08, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x14, 0x1f, 0x10, 0x3f, 0x4f, 0x08,
-+ 0x0f, 0x1f, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xe8, 0x88, 0x88,
-+ 0x88, 0xc8, 0xc8, 0x48, 0xc8, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3e, 0x0a, 0x36, 0x0b, 0x32,
-+ 0x0d, 0x76, 0x01, 0x0e, 0x01, 0x1e, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x28, 0xd8, 0x28, 0xc8,
-+ 0x60, 0x5c, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x7f, 0x08, 0x3e, 0x2a,
-+ 0x2a, 0x2e, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0xfc, 0x20, 0xf8, 0xa8,
-+ 0xa8, 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x12, 0x09, 0x3f, 0x28,
-+ 0x4e, 0x12, 0x2a, 0x05, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x70, 0x90, 0x20, 0x40, 0xfc, 0x28,
-+ 0xf8, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x08, 0x3e,
-+ 0x0e, 0x71, 0x3f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0x20, 0xf8,
-+ 0x20, 0xfc, 0xf8, 0x80, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x12, 0x1f, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x90, 0xf0, 0xe0,
-+ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x00, 0x7f, 0x1f, 0x3e,
-+ 0x08, 0x3e, 0x7f, 0x08, 0x04, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xfc, 0xf0, 0xf8,
-+ 0x88, 0xf8, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x14, 0x14, 0x23, 0x1a, 0x35,
-+ 0x55, 0x0d, 0x7f, 0x05, 0x19, 0x61, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xb0, 0x48, 0xc0, 0x68, 0xd4,
-+ 0x54, 0x30, 0xfc, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x09, 0x09, 0x09, 0x3f, 0x08,
-+ 0x08, 0x2e, 0x28, 0x2e, 0x39, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x00, 0xf8, 0x20,
-+ 0xa0, 0xb8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x69, 0x13, 0x14, 0x2b,
-+ 0x4a, 0x1b, 0x2b, 0x4a, 0x0b, 0x32, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf8, 0xa4, 0xf8,
-+ 0xa8, 0x38, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x13, 0x0a, 0x4a, 0x23, 0x23,
-+ 0x10, 0x17, 0x25, 0x25, 0x4f, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xd0, 0x30, 0xf0,
-+ 0x00, 0xf8, 0x28, 0x28, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x7e, 0x10, 0x1f, 0x14,
-+ 0x27, 0x58, 0x0b, 0x10, 0x27, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xa0, 0xa0, 0xb8, 0xa0,
-+ 0xb8, 0xa0, 0xb8, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x09, 0x06, 0x1f, 0x7f, 0x19, 0x15,
-+ 0x1f, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xc0, 0xf0, 0xfc, 0x30, 0x50,
-+ 0xf0, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x1f, 0x11, 0x1f,
-+ 0x7f, 0x1f, 0x1f, 0x11, 0x1f, 0x7f, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0xf0, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0f, 0x12, 0x3f, 0x55, 0x1f,
-+ 0x15, 0x1f, 0x15, 0x2a, 0x2a, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x08, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0xc8, 0x88, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x3f, 0x20,
-+ 0x7f, 0x1e, 0x72, 0x0c, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0xfc, 0x08,
-+ 0xf8, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x1f, 0x15,
-+ 0x1d, 0x1f, 0x11, 0x1d, 0x25, 0x45, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xfc, 0xf0, 0x50,
-+ 0x70, 0xf0, 0x10, 0x70, 0x50, 0x50, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x09, 0x0d, 0x13, 0x7f,
-+ 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x20, 0x30, 0x48, 0xfc,
-+ 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x0c, 0x10, 0x3d, 0x24, 0x3c,
-+ 0x21, 0x3c, 0x25, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x60, 0x20, 0xfc, 0x88, 0x50,
-+ 0xfc, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x15, 0x7f, 0x1f, 0x1f,
-+ 0x15, 0x1f, 0x7f, 0x1a, 0x06, 0x39, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0x20, 0xfc, 0x48, 0xc8,
-+ 0x28, 0x30, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x22, 0x2a, 0x4a, 0x1f, 0x10,
-+ 0x2f, 0x60, 0x27, 0x25, 0x29, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0xa0, 0xa0, 0xfc, 0x48,
-+ 0xa8, 0x30, 0x10, 0xb0, 0x48, 0x84, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3c, 0x25, 0x24, 0x3c,
-+ 0x21, 0x3c, 0x65, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x60, 0x20, 0xfc, 0x88, 0x50,
-+ 0xfc, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x14, 0x08, 0x7f, 0x0a,
-+ 0x0c, 0x08, 0x08, 0x08, 0x08, 0x19, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x58, 0x84, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x01, 0x3f, 0x2d, 0x4d,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x68, 0x60,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x06, 0x39, 0x08, 0x7f, 0x08,
-+ 0x1d, 0x1a, 0x29, 0x48, 0x08, 0x0b, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa4,
-+ 0x5c, 0x70, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0e, 0x78, 0x08, 0x3f, 0x08,
-+ 0x7e, 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0x50, 0xf8, 0x50, 0xfc, 0x00,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x7f, 0x02, 0x7d, 0x15, 0x2d,
-+ 0x49, 0x0f, 0x08, 0x0f, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x88, 0x70, 0x50, 0xf8,
-+ 0x24, 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x00, 0x2f, 0x28, 0x3f, 0x0d,
-+ 0x7f, 0x2c, 0x2f, 0x55, 0x17, 0x24, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48,
-+ 0xa8, 0xb0, 0x90, 0x34, 0xcc, 0x84, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x1f, 0x08, 0x0f, 0x3f,
-+ 0x2f, 0x42, 0x0f, 0x1f, 0x01, 0x3f, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xf0, 0x20, 0xe0, 0xfc,
-+ 0xe8, 0x40, 0xf0, 0xf0, 0x00, 0xf8, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0e, 0x73, 0x55, 0x29, 0x19,
-+ 0x6d, 0x14, 0x6c, 0x14, 0x65, 0x1a, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0b, 0x7c, 0x08, 0x3e, 0x08,
-+ 0x7e, 0x1d, 0x1b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x20, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x3e, 0x7f, 0x2d, 0x5f, 0x0e,
-+ 0x39, 0x1f, 0x7f, 0x02, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x50, 0xd0, 0x74, 0x94,
-+ 0x0c, 0xf0, 0xfc, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x15, 0x6b, 0x2a, 0x13, 0x2a, 0x7f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0xe8, 0xa8, 0x90, 0xa8, 0xfc,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x06, 0x38, 0x09, 0x7e, 0x1d, 0x6a,
-+ 0x0e, 0x19, 0x65, 0x07, 0x39, 0x03, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xf8, 0x28, 0x48, 0x88, 0xb0,
-+ 0x40, 0x30, 0x4c, 0xc0, 0x38, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3c, 0x00, 0x7e, 0x00, 0x3c,
-+ 0x3c, 0x01, 0x3f, 0x25, 0x3d, 0x21, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0xfc, 0x44, 0x64, 0x94, 0xf4, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x11, 0x15, 0x65, 0x19, 0x15,
-+ 0x7e, 0x09, 0x2d, 0x2b, 0x4b, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x68, 0x98, 0xf8,
-+ 0x00, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x06, 0x38, 0x09, 0x7e, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x49, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x70, 0xa0, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x09, 0x28, 0x2e, 0x28, 0x7f,
-+ 0x28, 0x2a, 0x5a, 0x04, 0x18, 0x63, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x09, 0x7e, 0x08, 0x3f, 0x2a,
-+ 0x3e, 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x98, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0x58, 0x84, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x3e, 0x3e, 0x24,
-+ 0x27, 0x2f, 0x37, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x88, 0xf8, 0xf8, 0x88,
-+ 0xe8, 0xc8, 0xc8, 0x88, 0xe8, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x1f, 0x11, 0x1e, 0x17,
-+ 0x14, 0x17, 0x17, 0x2f, 0x29, 0x5f, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xfc, 0xc8, 0xf8, 0xf0,
-+ 0x90, 0xf0, 0xf0, 0xf8, 0x48, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x3e, 0x14, 0x7e, 0x00, 0x3c,
-+ 0x24, 0x3c, 0x24, 0x3c, 0x24, 0x2c, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xfc, 0xf8, 0x08, 0xf8, 0x80,
-+ 0xf8, 0xf8, 0x80, 0xfc, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0f, 0x12, 0x3f, 0x55, 0x1f,
-+ 0x15, 0x1f, 0x16, 0x2b, 0x2b, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc8, 0x48, 0x50, 0xfc, 0x20, 0xf8,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0a, 0x72, 0x14, 0x0d, 0x13,
-+ 0x7f, 0x0d, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0x88, 0xf8, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x3f, 0x14, 0x74,
-+ 0x1b, 0x7e, 0x2c, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x90, 0xfc,
-+ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x11,
-+ 0x1f, 0x11, 0x11, 0x21, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x10, 0x1c, 0xe0,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x17,
-+ 0x14, 0x14, 0x24, 0x24, 0x40, 0x00, 0x00, 0x00,
-+ 0x78, 0x80, 0x80, 0xfc, 0x80, 0xfc, 0x80, 0xf8,
-+ 0x88, 0x88, 0x88, 0xb0, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x10,
-+ 0x1f, 0x12, 0x11, 0x20, 0x23, 0x5c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x08, 0xf8, 0x80,
-+ 0xfc, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3d, 0x01, 0x7f, 0x11,
-+ 0x1d, 0x25, 0x05, 0x0a, 0x0a, 0x35, 0x00, 0x00,
-+ 0x40, 0x78, 0x40, 0xfc, 0x48, 0x70, 0xc4, 0x3c,
-+ 0x50, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x3f, 0x2f, 0x39, 0x27, 0x2a, 0x2f,
-+ 0x3a, 0x2f, 0x2f, 0x2a, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0x78, 0xa0, 0x20, 0x20, 0xfc, 0x40, 0xc0,
-+ 0x78, 0x48, 0x08, 0x08, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x03, 0x3c, 0x04, 0x3f, 0x24,
-+ 0x24, 0x3f, 0x25, 0x04, 0x07, 0x78, 0x00, 0x00,
-+ 0x00, 0xe0, 0xa0, 0x20, 0x20, 0x20, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0x14, 0x94, 0x4c, 0x44, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7c, 0x55, 0x55, 0x55, 0x7d,
-+ 0x55, 0x18, 0x14, 0x1e, 0x62, 0x01, 0x00, 0x00,
-+ 0x08, 0xe8, 0x28, 0x28, 0xe8, 0x08, 0x08, 0xe8,
-+ 0x28, 0x28, 0x28, 0x28, 0x28, 0xc8, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2b, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0x24, 0x20,
-+ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x02, 0x7f, 0x01, 0x1f,
-+ 0x11, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x08, 0x48, 0x28, 0x28, 0x88, 0x48, 0x48, 0x0c,
-+ 0x38, 0xc8, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x60, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xd8,
-+ 0xd8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0d, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00, 0xfc,
-+ 0x24, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x3f, 0x2b, 0x2b, 0x2b, 0x3f,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x73, 0x05, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x3f, 0x2b, 0x2b, 0x2b, 0x3f,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x7d, 0x11, 0x11, 0x11, 0x1e, 0x64, 0x01,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x90, 0x54, 0x54, 0x0c, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x7f, 0x05, 0x19, 0x6f,
-+ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x40, 0x30, 0xec,
-+ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2b, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x03, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2b, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x72, 0x00, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x70,
-+ 0x70, 0xa8, 0xa8, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x24, 0x28, 0xfc, 0x10, 0x60,
-+ 0x4c, 0xf0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x55, 0x55, 0x57, 0x7c,
-+ 0x52, 0x1a, 0x15, 0x1d, 0x62, 0x04, 0x00, 0x00,
-+ 0x04, 0x88, 0xf0, 0x90, 0x10, 0x5c, 0xd0, 0xd0,
-+ 0xd0, 0xd0, 0x3c, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x71, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0xe8, 0x60, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0b, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xb8, 0x80, 0xf8,
-+ 0xa8, 0x28, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x08, 0x0f, 0x12, 0x3f,
-+ 0x52, 0x1f, 0x12, 0x03, 0x7c, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x48, 0xe8, 0x28, 0x70, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x10, 0x1f, 0x14, 0x27, 0x79,
-+ 0x0f, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xf8, 0xf0, 0x00, 0xfc, 0x90, 0x60, 0x1c,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x71, 0x02, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x48, 0x88, 0xfc, 0x88, 0x88,
-+ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7d, 0x08, 0x3d, 0x15, 0x08, 0x1e, 0x61,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x0c, 0xf0, 0x20, 0x3c, 0x20, 0xfc, 0x00, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0xa8, 0xa4, 0x04, 0xf8, 0x10,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3f,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x72, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x20, 0xfc,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x54, 0x57, 0x54, 0x7d,
-+ 0x51, 0x1a, 0x14, 0x1c, 0x60, 0x00, 0x00, 0x00,
-+ 0x48, 0x88, 0xa8, 0xa8, 0xa8, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xe8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x29, 0x0e, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc,
-+ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x56, 0x54, 0x54, 0x7d,
-+ 0x57, 0x18, 0x14, 0x1e, 0x61, 0x02, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x80, 0xf8, 0xe8, 0x68,
-+ 0x68, 0xf8, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2b, 0x3e,
-+ 0x29, 0x0e, 0x0a, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x50, 0xfc, 0x88,
-+ 0xf4, 0x90, 0x90, 0xb4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x54, 0x55, 0x55, 0x7d,
-+ 0x52, 0x1a, 0x14, 0x1c, 0x64, 0x00, 0x00, 0x00,
-+ 0x84, 0x88, 0xb0, 0xe0, 0xa0, 0xbc, 0xe8, 0xe8,
-+ 0xa8, 0xa8, 0xc8, 0xc8, 0x88, 0x88, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x7d,
-+ 0x55, 0x19, 0x15, 0x1e, 0x62, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x3e, 0x02, 0x1e, 0x03, 0x7e, 0x04, 0x09,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x40, 0x7c, 0x40, 0x78, 0x40, 0x7c, 0x40, 0x40,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3f,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x3f, 0x2b, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x24, 0xfc, 0x24, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2b, 0x3f,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xf0, 0xd0, 0xd0, 0xf8, 0x08,
-+ 0xe8, 0xa8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x54, 0x57, 0x54, 0x7d,
-+ 0x51, 0x1a, 0x16, 0x1c, 0x60, 0x00, 0x00, 0x00,
-+ 0x48, 0xa8, 0x98, 0x98, 0x88, 0xe8, 0x98, 0x98,
-+ 0xcc, 0xb8, 0xa8, 0x88, 0x88, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x29, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc,
-+ 0xa4, 0xb4, 0xcc, 0xfc, 0x84, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x57, 0x55, 0x55, 0x7f,
-+ 0x52, 0x1a, 0x17, 0x1e, 0x60, 0x01, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0x28, 0xe8, 0x38, 0x28, 0xa8,
-+ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x29, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x3f, 0x02, 0x04, 0x08, 0x3e,
-+ 0x2a, 0x2a, 0x3e, 0x2a, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe4, 0x14, 0x0c, 0x24, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0b, 0x0e, 0x70, 0x07, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x55, 0x55, 0x55, 0x7d,
-+ 0x51, 0x19, 0x17, 0x1f, 0x65, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x68, 0x68, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x55, 0x56, 0x57, 0x7e,
-+ 0x53, 0x1a, 0x17, 0x1e, 0x62, 0x02, 0x00, 0x00,
-+ 0xe0, 0x20, 0x50, 0x90, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x57, 0x55, 0x55, 0x7d,
-+ 0x51, 0x19, 0x15, 0x1e, 0x62, 0x05, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0xc0, 0x7c, 0x08, 0xd0,
-+ 0x50, 0x7c, 0x50, 0x50, 0x50, 0xb0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3f,
-+ 0x28, 0x0d, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xfc,
-+ 0x80, 0xfc, 0x54, 0x94, 0x24, 0x58, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x54, 0x55, 0x56, 0x7f,
-+ 0x52, 0x1b, 0x16, 0x1c, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xb8, 0xa0, 0xb8, 0xa8, 0xb8,
-+ 0xa8, 0xb8, 0xa8, 0xa0, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2c, 0x49, 0x14, 0x22, 0x3f, 0x21,
-+ 0x5f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x20, 0xa8, 0xb0, 0x30, 0x48, 0x88, 0xfc, 0x08,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0f, 0x70, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x20, 0xfc, 0x00, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x13, 0x7e, 0x56, 0x57, 0x56, 0x7f,
-+ 0x52, 0x1b, 0x16, 0x1e, 0x63, 0x0c, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0x64, 0xa4, 0xb8, 0xe0, 0x60, 0x20, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x08, 0x7f, 0x0e, 0x12, 0x67,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x90, 0x50, 0x20, 0x50, 0x8c,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3f,
-+ 0x28, 0x0c, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00,
-+ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24,
-+ 0x40, 0x28, 0xc4, 0xd4, 0x50, 0x30, 0x00, 0x00,
-+ 0x01, 0x03, 0x1e, 0x01, 0x07, 0x78, 0x03, 0x08,
-+ 0x3e, 0x2a, 0x3e, 0x2a, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0x60, 0x9c, 0x80, 0x60,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2b, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xa8, 0x54, 0x20, 0xd8,
-+ 0x74, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x09, 0x08, 0x09, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x24, 0xa8, 0xfc, 0x08, 0xf8, 0x88, 0xf8, 0x20,
-+ 0xfc, 0x24, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x08, 0x3f, 0x2a, 0x2a,
-+ 0x3e, 0x28, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x7f, 0x2b, 0x2a, 0x56, 0x21,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x90, 0x68, 0x84,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x3e, 0x09, 0x7f, 0x14, 0x7f, 0x3e, 0x09,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x3e, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd0, 0x74, 0x94, 0x0c,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3f, 0x2b, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00,
-+ 0x20, 0x24, 0xa8, 0xfc, 0x08, 0xf8, 0x88, 0xf8,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x0f, 0x02, 0x7f,
-+ 0x09, 0x1f, 0x69, 0x0f, 0x01, 0x3e, 0x00, 0x00,
-+ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0x00, 0xfc,
-+ 0x20, 0xf0, 0x2c, 0xe0, 0xf0, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0b, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x20, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x50, 0xf0, 0x78, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x29, 0x0d, 0x0a, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x88, 0xdc, 0x88, 0xfc,
-+ 0x00, 0xfc, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x3e, 0x08,
-+ 0x3e, 0x2a, 0x3e, 0x2a, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x08, 0x20,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3f,
-+ 0x28, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x7c, 0x57, 0x56, 0x56, 0x7f,
-+ 0x52, 0x1a, 0x17, 0x1c, 0x64, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x54, 0x94, 0xec, 0xc8, 0xd8, 0xdc,
-+ 0xe8, 0xc8, 0xfc, 0x48, 0x48, 0xc8, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x56, 0x57, 0x55, 0x7f,
-+ 0x53, 0x1f, 0x16, 0x1f, 0x62, 0x00, 0x00, 0x00,
-+ 0x10, 0xd0, 0x50, 0xd0, 0x7c, 0xf4, 0x18, 0xd0,
-+ 0x50, 0x50, 0xe8, 0xe8, 0x44, 0xc4, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7f, 0x55, 0x55, 0x55, 0x7d,
-+ 0x51, 0x19, 0x16, 0x1e, 0x64, 0x00, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0x54, 0x9c, 0x78, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7d, 0x55, 0x55, 0x57, 0x7c,
-+ 0x51, 0x18, 0x14, 0x1c, 0x63, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x5c, 0xd4, 0xd4, 0x54, 0xdc, 0x58,
-+ 0xe0, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x08, 0x09, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00,
-+ 0x24, 0xa8, 0xfc, 0x08, 0xf0, 0x90, 0xf0, 0x00,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3f,
-+ 0x28, 0x0c, 0x0b, 0x0e, 0x71, 0x02, 0x00, 0x00,
-+ 0x50, 0xfc, 0x50, 0x20, 0xfc, 0x50, 0xa8, 0xfc,
-+ 0x20, 0xa8, 0xfc, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x29, 0x0c, 0x0b, 0x0e, 0x70, 0x01, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x20, 0xfc, 0x50, 0x88,
-+ 0x54, 0x50, 0xfc, 0x50, 0x90, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x12, 0x7c, 0x55, 0x56, 0x55, 0x7d,
-+ 0x52, 0x1b, 0x14, 0x1c, 0x63, 0x00, 0x00, 0x00,
-+ 0x90, 0xf4, 0xf8, 0x90, 0x68, 0x44, 0xfc, 0x28,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x50, 0xfc, 0x50, 0xfc, 0xa0, 0xf8, 0xf8, 0xa0,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3f, 0x2b, 0x2b, 0x2b, 0x3f,
-+ 0x28, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xfc, 0x28, 0xac, 0xac, 0xfc,
-+ 0x20, 0xfc, 0x54, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x0f, 0x7f, 0x07, 0x1c, 0x67, 0x07,
-+ 0x08, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0xe0, 0xfc, 0xc0, 0x70, 0xcc, 0xc0,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00,
-+ 0x04, 0x07, 0x0f, 0x7f, 0x07, 0x3b, 0x1d, 0x3e,
-+ 0x0b, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xfc, 0x90, 0xe0, 0xb0, 0x8c,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00,
-+ 0x01, 0x0f, 0x09, 0x0f, 0x3f, 0x08, 0x3e, 0x3e,
-+ 0x0e, 0x71, 0x1f, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xf0, 0xf8, 0x20, 0xf8, 0xf8,
-+ 0x38, 0xc4, 0xf0, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x14, 0x7f, 0x1e, 0x6f, 0x0f, 0x08,
-+ 0x0f, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0xfc, 0x74, 0xec, 0xe0, 0x20,
-+ 0xe0, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x0f, 0x3f, 0x2f, 0x47, 0x3a,
-+ 0x0b, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0xe0, 0xfc, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x3f, 0x2f, 0x47, 0x1c, 0x67,
-+ 0x08, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0xfc, 0xf8, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00,
-+ 0x13, 0x17, 0x6b, 0x17, 0x7c, 0x3b, 0x36, 0x53,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x3e, 0x00, 0x00,
-+ 0x90, 0xd4, 0xa8, 0x98, 0x7c, 0xb8, 0xd4, 0x94,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x3f, 0x2d, 0x2d, 0x2d, 0x2d,
-+ 0x2d, 0x2d, 0x2f, 0x3c, 0x61, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xfc, 0x48,
-+ 0x48, 0x48, 0xc8, 0x48, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x10, 0x3f, 0x2d, 0x2d, 0x2d, 0x2d,
-+ 0x2d, 0x2d, 0x2f, 0x3c, 0x61, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x68,
-+ 0x58, 0x4c, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x12, 0x12, 0x22, 0x4f, 0x0a, 0x12, 0x1c, 0x35,
-+ 0x53, 0x13, 0x14, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0xc0, 0x00, 0xfc, 0x90, 0x10,
-+ 0x10, 0x10, 0x90, 0x50, 0x50, 0x30, 0x00, 0x00,
-+ 0x10, 0x1f, 0x22, 0x4f, 0x0a, 0x12, 0x1f, 0x30,
-+ 0x57, 0x14, 0x14, 0x17, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x80, 0x80, 0xbc, 0xd0, 0x10,
-+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x11, 0x17, 0x22, 0x4f, 0x0f, 0x14, 0x17, 0x3f,
-+ 0x51, 0x17, 0x15, 0x15, 0x15, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xe0, 0xc0, 0x7c, 0xc8, 0xe8,
-+ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x10, 0x1e, 0x2a, 0x4e, 0x1e, 0x1a, 0x2e, 0x27,
-+ 0x6c, 0x37, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xe0, 0xe0, 0xbc, 0xe8, 0xe8,
-+ 0x88, 0xc8, 0xc8, 0x88, 0xe8, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x05, 0x09, 0x1e,
-+ 0x2a, 0x49, 0x08, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x10, 0x24,
-+ 0x44, 0x88, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x02, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x88, 0x88, 0x50, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x02, 0x0c, 0x77, 0x00, 0x1f, 0x00, 0x01,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0xdc, 0x00, 0xf0, 0x20, 0x40,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x18, 0x6f, 0x08, 0x08,
-+ 0x0f, 0x06, 0x7c, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x60, 0x18, 0xe4, 0x20, 0x20,
-+ 0xe0, 0x88, 0x50, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7c, 0x08, 0x0a, 0x13, 0x3c,
-+ 0x54, 0x12, 0x10, 0x10, 0x11, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x8c, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc,
-+ 0x10, 0x10, 0x10, 0x10, 0x7c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xa8,
-+ 0xa8, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x08, 0x0a, 0x12, 0x3d,
-+ 0x54, 0x12, 0x10, 0x10, 0x11, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x40, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3d,
-+ 0x54, 0x12, 0x11, 0x10, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0x40, 0x60, 0xa0, 0x90, 0x28, 0x44, 0x90,
-+ 0x20, 0x48, 0x90, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3c,
-+ 0x54, 0x12, 0x11, 0x12, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0,
-+ 0xa8, 0xa8, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x08, 0x0a, 0x12, 0x3d,
-+ 0x54, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x02, 0x7f, 0x03, 0x0d, 0x73,
-+ 0x01, 0x7f, 0x03, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x80, 0xfc, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x07, 0x04, 0x7f, 0x09, 0x08, 0x1f, 0x01,
-+ 0x01, 0x7f, 0x03, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xfc, 0x10, 0x90, 0xfc, 0x60,
-+ 0x00, 0xfc, 0x88, 0x50, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7c, 0x08, 0x0b, 0x12, 0x3c,
-+ 0x55, 0x12, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x15, 0x39,
-+ 0x55, 0x15, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xa4, 0x24, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x50, 0x50, 0x88, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3d,
-+ 0x54, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc,
-+ 0x40, 0x70, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x08, 0x08, 0x15, 0x39,
-+ 0x57, 0x15, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0xb8, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x0c, 0x74, 0x07, 0x38, 0x3f,
-+ 0x24, 0x28, 0x37, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x50, 0x60, 0x30, 0x0c, 0xf8,
-+ 0x98, 0x78, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x39, 0x07, 0x19, 0x63, 0x01,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x10, 0xfc, 0x08, 0xb0, 0x60, 0x18, 0x04, 0x00,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7c, 0x0b, 0x08, 0x13, 0x3c,
-+ 0x54, 0x13, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xfc, 0x48, 0xf8, 0x80,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x24, 0x24, 0x3f, 0x04, 0x7c, 0x25, 0x45, 0x01,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x7f,
-+ 0x11, 0x63, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc,
-+ 0x30, 0x28, 0xc4, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x08, 0x0b, 0x14, 0x18,
-+ 0x37, 0x54, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x90, 0x90, 0xf0, 0x90, 0x90, 0xf8, 0x94, 0x94,
-+ 0xf0, 0x90, 0x90, 0xf0, 0x90, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x12, 0x3c,
-+ 0x55, 0x12, 0x14, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80, 0xfc,
-+ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x02, 0x7e, 0x02, 0x3e, 0x03, 0x7e, 0x04, 0x09,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0x40, 0x78, 0x40, 0x7c, 0x40, 0x40,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x1d,
-+ 0x34, 0x52, 0x13, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x50, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x0a, 0x0b, 0x16, 0x3a,
-+ 0x56, 0x17, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xd8, 0xd8,
-+ 0xd8, 0x68, 0x48, 0x48, 0x48, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x08, 0x0b, 0x14, 0x19,
-+ 0x34, 0x57, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x40, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x08, 0x0b, 0x15, 0x19,
-+ 0x35, 0x55, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x0a, 0x0b, 0x16, 0x1b,
-+ 0x36, 0x56, 0x17, 0x1a, 0x12, 0x12, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x15, 0x39,
-+ 0x55, 0x15, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0xf8, 0xc8, 0x48, 0x48, 0x78, 0x20, 0xfc,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x7f, 0x04, 0x38, 0x20, 0x3d, 0x20, 0x3d,
-+ 0x21, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x88, 0xf8, 0xfc, 0x70, 0xac,
-+ 0x20, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x15, 0x38,
-+ 0x57, 0x12, 0x12, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0x50, 0xb0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x0b, 0x0a, 0x16, 0x3b,
-+ 0x56, 0x17, 0x12, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x00, 0xfc, 0xa8, 0xf0, 0x8c,
-+ 0x10, 0xfc, 0x90, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x12, 0x11, 0x11, 0x7c, 0x0a, 0x09, 0x15, 0x38,
-+ 0x57, 0x15, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x7c, 0x44,
-+ 0x58, 0x48, 0x74, 0xc4, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x0a, 0x0a, 0x16, 0x1a,
-+ 0x36, 0x52, 0x15, 0x15, 0x1a, 0x11, 0x00, 0x00,
-+ 0x18, 0xe0, 0x38, 0x20, 0xfc, 0xb8, 0xe4, 0x9c,
-+ 0xf0, 0xd0, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x20, 0x27, 0x21, 0x79, 0x17, 0x14, 0x2c, 0x37,
-+ 0x6d, 0x29, 0x21, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x20, 0x30, 0x48, 0xfc, 0x24, 0xf8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0x30, 0x28, 0xf4, 0x04, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1e, 0x12, 0x1e, 0x04, 0x3f, 0x1f,
-+ 0x04, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x90, 0xf0, 0x40, 0xf8, 0xf0,
-+ 0x40, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x7f, 0x08, 0x3e, 0x7f, 0x2d, 0x4b, 0x3e,
-+ 0x0e, 0x31, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf0, 0x50, 0xd0, 0x70, 0x54,
-+ 0x94, 0x8c, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x0a, 0x09, 0x16, 0x18,
-+ 0x35, 0x55, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0xcc, 0x54, 0xec, 0x54, 0x64, 0x80,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7f, 0x09, 0x09, 0x15, 0x39,
-+ 0x55, 0x17, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0xf8, 0x48,
-+ 0xf8, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x08, 0x0b, 0x15, 0x19,
-+ 0x35, 0x55, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf0, 0x50, 0xf0,
-+ 0x50, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7d, 0x09, 0x0b, 0x15, 0x19,
-+ 0x35, 0x54, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0x20, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x12, 0x11, 0x13, 0x7e, 0x09, 0x0b, 0x15, 0x18,
-+ 0x37, 0x56, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3e, 0x21, 0x3e, 0x53, 0x1e,
-+ 0x11, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20, 0xfc, 0x20,
-+ 0x20, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x0a, 0x0b, 0x17, 0x1b,
-+ 0x34, 0x57, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0xf8,
-+ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x0a, 0x0b, 0x16, 0x3b,
-+ 0x54, 0x17, 0x12, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x10, 0xd0, 0x90, 0xdc, 0x60, 0xc0, 0xb8, 0xc0,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x09, 0x09, 0x17, 0x18,
-+ 0x37, 0x56, 0x12, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0x7c, 0x10, 0xe0, 0x38, 0x28, 0xf8, 0x28,
-+ 0xb8, 0xa8, 0xb8, 0x98, 0xa4, 0x44, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x0a, 0x0b, 0x14, 0x1b,
-+ 0x36, 0x57, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x28, 0xfc,
-+ 0x28, 0xa8, 0x10, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x0a, 0x0e, 0x17, 0x19,
-+ 0x37, 0x57, 0x13, 0x15, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xb8, 0x28, 0xe8, 0xb8, 0xa8, 0xf8, 0x28,
-+ 0xf8, 0xb0, 0x70, 0x34, 0x54, 0x8c, 0x00, 0x00,
-+ 0x20, 0x27, 0x24, 0x7f, 0x14, 0x17, 0x2c, 0x37,
-+ 0x6d, 0x2d, 0x25, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xbc, 0xa4, 0xbc, 0xa4, 0xbc, 0x44, 0xfc,
-+ 0xf4, 0xf4, 0xf4, 0xe4, 0x5c, 0x4c, 0x00, 0x00,
-+ 0x10, 0x11, 0x12, 0x7f, 0x0b, 0x0a, 0x17, 0x19,
-+ 0x36, 0x55, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0xf8, 0xe8, 0x38, 0xb8, 0xa8, 0xfc, 0x30,
-+ 0xc8, 0xf4, 0x40, 0xf8, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24,
-+ 0x27, 0x24, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xc8, 0x48, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x3f, 0x24, 0x27, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xc8, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x3f, 0x27, 0x08, 0x3e, 0x22,
-+ 0x3e, 0x3f, 0x7f, 0x1e, 0x22, 0x4d, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0xc8, 0x40, 0x40, 0xfc,
-+ 0x90, 0x90, 0x60, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x3f, 0x27, 0x14, 0x7f, 0x1c,
-+ 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0xc8, 0xfc, 0xa0, 0xf8,
-+ 0xf8, 0xa0, 0xfc, 0xd4, 0x6c, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x11, 0x21, 0x4f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x38, 0xd0, 0x08, 0x04, 0xe4, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x7d, 0x45,
-+ 0x45, 0x44, 0x7c, 0x45, 0x02, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a, 0x2a, 0x2a,
-+ 0x3f, 0x5d, 0x48, 0x0e, 0x71, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x3f, 0x0a, 0x0a, 0x7f, 0x0c, 0x12,
-+ 0x3e, 0x52, 0x1e, 0x12, 0x1f, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x0e, 0x06, 0x09, 0x10, 0x3f, 0x40, 0x3a, 0x2a,
-+ 0x3a, 0x2d, 0x3d, 0x2a, 0x2a, 0x2a, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xc8, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xf8, 0x30, 0x30, 0xb4, 0xd4, 0x8c, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2a, 0x3e, 0x00, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x14, 0x1e, 0x61, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x3e, 0x14, 0x7f, 0x08, 0x3e,
-+ 0x2a, 0x3e, 0x2a, 0x7f, 0x22, 0x27, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a, 0x3e,
-+ 0x08, 0x3e, 0x08, 0x3e, 0x0c, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x04, 0x1b, 0x12, 0x1a, 0x19, 0x12, 0x3f, 0x2f,
-+ 0x48, 0x0f, 0x0f, 0x0f, 0x06, 0x78, 0x00, 0x00,
-+ 0x80, 0x70, 0x90, 0xb0, 0x30, 0x90, 0xfc, 0xe8,
-+ 0x20, 0xe0, 0xe0, 0xe4, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x49, 0x7e, 0x7d, 0x49, 0x7f, 0x4f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x78, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0xfc, 0x54, 0xfc, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xe4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x7f, 0x57, 0x7f, 0x3e, 0x22,
-+ 0x3e, 0x3e, 0x22, 0x3e, 0x14, 0x63, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x30, 0x30, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x14, 0x3f,
-+ 0x64, 0x3f, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x30, 0x30, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x10, 0x1e, 0x25, 0x49, 0x3f, 0x2b, 0x2b, 0x3f,
-+ 0x2b, 0x3f, 0x23, 0x23, 0x23, 0x46, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x70, 0x58, 0x78, 0x94, 0x04, 0x00, 0x00,
-+ 0x08, 0x2f, 0x28, 0x2f, 0x72, 0x07, 0x18, 0x6f,
-+ 0x09, 0x0f, 0x09, 0x0f, 0x10, 0x20, 0x00, 0x00,
-+ 0x80, 0x98, 0xe4, 0x84, 0x7c, 0xc0, 0x80, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x1e, 0x24, 0x48, 0x3e, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x23, 0x22, 0x23, 0x46, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xfc, 0xa0, 0xa0,
-+ 0x90, 0xf4, 0x8c, 0x0c, 0xf4, 0x04, 0x00, 0x00,
-+ 0x10, 0x1e, 0x24, 0x49, 0x3e, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x3f, 0x22, 0x22, 0x22, 0x46, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x1e, 0x24, 0x49, 0x3e, 0x2a, 0x2a, 0x3e,
-+ 0x2b, 0x3e, 0x23, 0x22, 0x23, 0x46, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xf0, 0x90, 0xf0, 0x90, 0xf0,
-+ 0xfc, 0xf8, 0x68, 0xa8, 0x48, 0x30, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x49, 0x3e, 0x2a, 0x2b, 0x3f,
-+ 0x2b, 0x3f, 0x22, 0x22, 0x23, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0xf8, 0x80, 0xf8, 0x48, 0xf8,
-+ 0x58, 0xf8, 0x68, 0x78, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x7f, 0x00, 0x3e, 0x00, 0x3e,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x28, 0x24,
-+ 0x24, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3f, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x10, 0x20,
-+ 0x40, 0x80, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3d, 0x03, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x28, 0x28, 0x30,
-+ 0x60, 0x20, 0x24, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x90, 0x90, 0x90, 0xfc, 0x30,
-+ 0x30, 0x50, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x68,
-+ 0xa8, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28,
-+ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0xf0, 0x90, 0x90,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x48, 0x88, 0xf4, 0x04,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x27, 0x24, 0x3f, 0x24, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x10, 0xd0, 0x14, 0x0c, 0xec, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x0f, 0x00, 0x7f, 0x0f,
-+ 0x0f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0xe0, 0x00, 0xfc, 0xe0,
-+ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x01, 0x3e,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x25, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xa0, 0xa4, 0x24, 0xa8,
-+ 0xb0, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xfc, 0x00, 0x78, 0x48,
-+ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x26, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3f, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3e, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0x20, 0x20, 0xfc, 0x70,
-+ 0x70, 0xa8, 0x28, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0x7e, 0x01, 0x39, 0x00, 0x39,
-+ 0x06, 0x38, 0x29, 0x29, 0x3a, 0x2c, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3d, 0x26, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x40, 0x58, 0xe0, 0x40, 0xf8, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x02, 0x3c, 0x00, 0x3f,
-+ 0x01, 0x3d, 0x25, 0x27, 0x3c, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0xc8, 0xa8, 0xfc,
-+ 0x48, 0x28, 0x28, 0xfc, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0x7f, 0x00, 0x3a, 0x02, 0x3f,
-+ 0x02, 0x3a, 0x2a, 0x2a, 0x3c, 0x28, 0x00, 0x00,
-+ 0x28, 0x24, 0x24, 0xfc, 0x20, 0xa8, 0xa8, 0xe8,
-+ 0xb8, 0x90, 0x94, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x38, 0x02, 0x7d, 0x01, 0x3f, 0x00, 0x39,
-+ 0x01, 0x3a, 0x2c, 0x28, 0x38, 0x2b, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0x10, 0x10, 0x10, 0xfc, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3e, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x02, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3b, 0x00, 0x7d, 0x01, 0x39, 0x01, 0x39,
-+ 0x02, 0x3a, 0x2c, 0x28, 0x3f, 0x28, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0xe8, 0xe4, 0x44, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xf8, 0x10, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x02, 0x3d, 0x00, 0x3f,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x04, 0xf8, 0x48, 0xfc,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x00, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x88, 0x30, 0x40, 0xb8,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x02, 0x3d, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0xe0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x03, 0x3f, 0x02, 0x3e,
-+ 0x03, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x58, 0xd8, 0xe8,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x01, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x00,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x03, 0x3c,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x3c, 0x40,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x00, 0x3c, 0x00, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x10, 0xf8, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00,
-+ 0x20, 0x3c, 0x20, 0xfc, 0x38, 0xe4, 0x1c, 0x00,
-+ 0x7c, 0x40, 0xfc, 0x40, 0x7c, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x03, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0xfc, 0x00, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x00, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x24, 0x27, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3b, 0x02, 0x7f, 0x02, 0x3b, 0x03, 0x3b,
-+ 0x03, 0x3a, 0x2a, 0x2c, 0x3f, 0x28, 0x00, 0x00,
-+ 0x00, 0xf0, 0x30, 0xd0, 0x90, 0xf0, 0xb0, 0xb0,
-+ 0xf0, 0x90, 0xb4, 0xfc, 0x1c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x7f, 0x02, 0x3b, 0x02, 0x3b,
-+ 0x02, 0x3f, 0x2a, 0x2a, 0x3a, 0x2a, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3b, 0x02, 0x7e, 0x03, 0x3a, 0x02, 0x3b,
-+ 0x02, 0x38, 0x28, 0x29, 0x3a, 0x2c, 0x00, 0x00,
-+ 0xc0, 0x58, 0x48, 0x48, 0x58, 0x48, 0x48, 0xf8,
-+ 0x48, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0xfc,
-+ 0x08, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x5f, 0x0f, 0x7f, 0x04, 0x1f,
-+ 0x6f, 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0xf8, 0xe0, 0xfc, 0x40, 0xf0,
-+ 0xec, 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x00, 0x3c, 0x00, 0x3d,
-+ 0x03, 0x3d, 0x25, 0x25, 0x3f, 0x24, 0x00, 0x00,
-+ 0xf0, 0x90, 0x08, 0xf4, 0x00, 0xf0, 0x90, 0x08,
-+ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7d, 0x02, 0x3c, 0x00, 0x3c,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3f, 0x24, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xf8, 0x44, 0xf0, 0x10, 0x60,
-+ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x00, 0x3d,
-+ 0x02, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa4, 0x5c,
-+ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0x7e, 0x02, 0x3a, 0x04, 0x38,
-+ 0x03, 0x3a, 0x2a, 0x2a, 0x3f, 0x28, 0x00, 0x00,
-+ 0x40, 0x28, 0xa8, 0x90, 0x98, 0xa4, 0xd4, 0xf0,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3d, 0x01, 0x3e,
-+ 0x01, 0x3c, 0x24, 0x24, 0x3c, 0x25, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x28, 0x20,
-+ 0xfc, 0x20, 0x38, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7e, 0x00, 0x3f, 0x00, 0x3d,
-+ 0x03, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xb0, 0xe0, 0x80, 0xf8, 0x20,
-+ 0xfc, 0x20, 0x28, 0x28, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3b, 0x02, 0x7e, 0x02, 0x3a, 0x02, 0x3b,
-+ 0x03, 0x3b, 0x2b, 0x2a, 0x3b, 0x2a, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x1d, 0x0b, 0x3f, 0x2a, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0xf8, 0x08, 0xe8,
-+ 0xe8, 0x08, 0xe8, 0xa8, 0xe8, 0x30, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x3f, 0x2a, 0x3e, 0x23, 0x47,
-+ 0x3f, 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x70, 0x50, 0x94, 0xfc, 0x90, 0x60, 0x9c, 0xc0,
-+ 0xf8, 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x00, 0x38, 0x07, 0x7d, 0x00, 0x3b, 0x02, 0x3b,
-+ 0x02, 0x3a, 0x2a, 0x2a, 0x3a, 0x2a, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xe8, 0xa8, 0xe8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x24, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7e, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3c, 0x27, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x38, 0x07, 0x7c, 0x03, 0x39, 0x07, 0x39,
-+ 0x03, 0x38, 0x2f, 0x28, 0x38, 0x28, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xa0, 0xf8, 0x50, 0xfc, 0x50,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3b, 0x01, 0x7d, 0x03, 0x39, 0x01, 0x39,
-+ 0x01, 0x3a, 0x2a, 0x2d, 0x39, 0x2a, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0xe4, 0x20, 0xf0, 0x10,
-+ 0xfc, 0x04, 0xd4, 0x6c, 0x44, 0x18, 0x00, 0x00,
-+ 0x01, 0x39, 0x06, 0x7e, 0x01, 0x3a, 0x07, 0x38,
-+ 0x03, 0x39, 0x29, 0x2a, 0x3a, 0x2c, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xd4, 0x48, 0xd4, 0xfc, 0x50,
-+ 0xfc, 0x28, 0xa8, 0x94, 0x2c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x3b, 0x00, 0x7c, 0x07, 0x38, 0x03, 0x38,
-+ 0x03, 0x3a, 0x2b, 0x2a, 0x3a, 0x2a, 0x00, 0x00,
-+ 0x00, 0xf0, 0xa0, 0x40, 0xfc, 0xc8, 0x50, 0xc0,
-+ 0xf8, 0xb8, 0xf8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x01, 0x38, 0x02, 0x7d, 0x01, 0x3a, 0x05, 0x39,
-+ 0x01, 0x39, 0x29, 0x28, 0x3f, 0x28, 0x00, 0x00,
-+ 0xc8, 0x68, 0xb4, 0x94, 0xf8, 0x08, 0xf4, 0x10,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3b, 0x02, 0x7e, 0x03, 0x39, 0x01, 0x3a,
-+ 0x05, 0x39, 0x29, 0x29, 0x39, 0x29, 0x00, 0x00,
-+ 0x88, 0xfc, 0xa8, 0xa8, 0xfc, 0xd8, 0xac, 0x4c,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x39, 0x07, 0x79, 0x07, 0x39, 0x02, 0x3c,
-+ 0x01, 0x39, 0x29, 0x29, 0x39, 0x29, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xfc, 0x10, 0xa8, 0x44,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x7f, 0x02, 0x3b, 0x01, 0x39,
-+ 0x01, 0x39, 0x29, 0x2f, 0x38, 0x28, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x38, 0x03, 0x7f, 0x02, 0x3b, 0x02, 0x3b,
-+ 0x02, 0x3a, 0x2a, 0x2a, 0x3c, 0x28, 0x00, 0x00,
-+ 0x40, 0xf8, 0x20, 0xfc, 0x54, 0x8c, 0x70, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x39, 0x01, 0x7d, 0x00, 0x3b, 0x02, 0x3b,
-+ 0x00, 0x3f, 0x28, 0x29, 0x3e, 0x28, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x3e, 0x33, 0x5e, 0x0f,
-+ 0x7f, 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xfc, 0x20, 0xe0,
-+ 0xfc, 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3b, 0x02, 0x7f, 0x00, 0x3b, 0x00, 0x3f,
-+ 0x01, 0x3f, 0x28, 0x2b, 0x38, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3a, 0x01, 0x79, 0x04, 0x3b, 0x02, 0x38,
-+ 0x06, 0x3a, 0x2a, 0x2a, 0x3d, 0x28, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0x20, 0xfc, 0xf0, 0x90,
-+ 0xf0, 0xf8, 0x88, 0xf8, 0x80, 0xfc, 0x00, 0x00,
-+ 0x06, 0x1b, 0x13, 0x1c, 0x1e, 0x12, 0x7f, 0x17,
-+ 0x3f, 0x47, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xf0, 0xf0, 0x90, 0xfc, 0xd0,
-+ 0xf8, 0xc4, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x7f, 0x02, 0x3b, 0x03, 0x39,
-+ 0x01, 0x39, 0x29, 0x29, 0x39, 0x2e, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0xf8, 0xa8, 0x38, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x00, 0x38, 0x07, 0x7c, 0x01, 0x3f, 0x01, 0x3b,
-+ 0x05, 0x39, 0x28, 0x2a, 0x3a, 0x2c, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xa0, 0xf0, 0x14, 0xf8, 0xb0,
-+ 0xf4, 0xac, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x14, 0x17, 0x28, 0x3f, 0x68, 0x2b, 0x3c, 0x2b,
-+ 0x28, 0x3f, 0x2a, 0x2b, 0x3e, 0x20, 0x00, 0x00,
-+ 0x14, 0x94, 0x28, 0xfc, 0x68, 0xa8, 0x3c, 0xa8,
-+ 0x28, 0xbc, 0xa8, 0xa8, 0xbc, 0x20, 0x00, 0x00,
-+ 0x00, 0x38, 0x07, 0x7d, 0x01, 0x39, 0x01, 0x3b,
-+ 0x00, 0x3b, 0x29, 0x29, 0x38, 0x2f, 0x00, 0x00,
-+ 0x40, 0xf8, 0xf0, 0x10, 0xf4, 0xb8, 0xe4, 0x7c,
-+ 0xa0, 0xf0, 0x50, 0xf4, 0xac, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x03, 0x7e, 0x03, 0x38, 0x07, 0x3b,
-+ 0x00, 0x3f, 0x29, 0x2f, 0x39, 0x2e, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xfc, 0xf8,
-+ 0xa0, 0xfc, 0xa8, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x02, 0x3a, 0x02, 0x7d, 0x07, 0x3a, 0x06, 0x3a,
-+ 0x06, 0x3a, 0x2e, 0x2b, 0x3e, 0x28, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xa8, 0x68, 0xfc, 0xa0, 0xe8, 0xa8,
-+ 0xe8, 0xd0, 0x94, 0xfc, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x7f, 0x02, 0x3b, 0x00, 0x39,
-+ 0x03, 0x3d, 0x29, 0x29, 0x39, 0x29, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0x90, 0xfc,
-+ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x03, 0x3b, 0x05, 0x7f, 0x03, 0x3b, 0x05, 0x39,
-+ 0x01, 0x39, 0x29, 0x29, 0x39, 0x2e, 0x00, 0x00,
-+ 0x30, 0xb8, 0x50, 0xfc, 0x30, 0xb4, 0x4c, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x14, 0x12, 0x22, 0x48, 0x08, 0x14, 0x13, 0x22,
-+ 0x7e, 0x22, 0x22, 0x3f, 0x22, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x30,
-+ 0x30, 0x50, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x3f, 0x2a, 0x7e, 0x09, 0x3e, 0x08, 0x7f,
-+ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x50, 0x48, 0x88, 0xa0, 0x20, 0x50, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x3e, 0x29, 0x49, 0x0a, 0x32, 0x0c, 0x0a,
-+ 0x3f, 0x08, 0x7f, 0x0c, 0x12, 0x60, 0x00, 0x00,
-+ 0x50, 0x48, 0x88, 0x20, 0x20, 0x50, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x7f, 0x00, 0x0f,
-+ 0x08, 0x0f, 0x04, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x01, 0x3d, 0x26, 0x24, 0x24, 0x3d,
-+ 0x27, 0x14, 0x18, 0x1c, 0x61, 0x02, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x80, 0xb8, 0xe8, 0x68,
-+ 0x68, 0xf8, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x3e, 0x24, 0x3f, 0x3f,
-+ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0xf8,
-+ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x25, 0x2f, 0x25, 0x2f, 0x2f, 0x25, 0x3f, 0x7f,
-+ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x48, 0xe8, 0x48, 0xe8, 0xe8, 0x48, 0xf8, 0xfc,
-+ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x02, 0x0e, 0x73, 0x05, 0x19,
-+ 0x62, 0x04, 0x18, 0x60, 0x01, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x48, 0x48, 0x50, 0xa0,
-+ 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00, 0x00,
-+ 0x09, 0x09, 0x1f, 0x02, 0x7f, 0x04, 0x1f, 0x63,
-+ 0x3d, 0x06, 0x39, 0x06, 0x38, 0x03, 0x00, 0x00,
-+ 0x20, 0x10, 0xf8, 0x80, 0xfc, 0x40, 0xf0, 0x1c,
-+ 0x90, 0xa0, 0xe0, 0x98, 0x84, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x10, 0x32, 0x4b, 0x1c, 0x2c,
-+ 0x4a, 0x1b, 0x2a, 0x48, 0x08, 0x30, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x30, 0x48,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x3c, 0x02, 0x03, 0x7c, 0x01,
-+ 0x06, 0x38, 0x01, 0x06, 0x38, 0x01, 0x00, 0x00,
-+ 0x40, 0x80, 0x88, 0x50, 0x60, 0x80, 0x80, 0x40,
-+ 0x60, 0xa0, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x04, 0x18, 0x6a, 0x24, 0x1b, 0x70, 0x08, 0x1c,
-+ 0x64, 0x0c, 0x15, 0x66, 0x04, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x30, 0x30, 0x50,
-+ 0x50, 0x90, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x19, 0x6a, 0x24, 0x18, 0x68, 0x0d, 0x14,
-+ 0x65, 0x0d, 0x15, 0x65, 0x05, 0x19, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x30, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x18, 0x6a, 0x24, 0x19, 0x6a, 0x0c, 0x15,
-+ 0x66, 0x0d, 0x15, 0x65, 0x05, 0x19, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x88, 0x90, 0x60, 0x60, 0x90,
-+ 0x0c, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x09, 0x11, 0x6d, 0x29, 0x13, 0x72, 0x1e, 0x2a,
-+ 0x4a, 0x1a, 0x2b, 0x4a, 0x0a, 0x32, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x70, 0x70,
-+ 0xa8, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x19, 0x6a, 0x24, 0x18, 0x68, 0x0c, 0x14,
-+ 0x64, 0x0c, 0x14, 0x64, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x19, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x64, 0x0d, 0x14, 0x64, 0x07, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x19, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x64, 0x0c, 0x14, 0x64, 0x05, 0x1a, 0x00, 0x00,
-+ 0x40, 0xb8, 0x08, 0x08, 0xb8, 0x08, 0x08, 0xf8,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x04, 0x18, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x65, 0x0d, 0x15, 0x65, 0x05, 0x1e, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x28, 0xe8, 0x58, 0x88, 0xf8,
-+ 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x05, 0x19, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x65, 0x0d, 0x15, 0x65, 0x05, 0x1e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x24, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x04, 0x1b, 0x68, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x64, 0x0f, 0x14, 0x64, 0x05, 0x1e, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc8, 0x48, 0x50,
-+ 0x30, 0x20, 0x54, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x24, 0x27, 0x43, 0x1c, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x80, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x70, 0x0f, 0x00, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x80, 0xe0, 0x1c, 0xe0, 0x40, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3f, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x48, 0x88, 0xf4, 0x04,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x2f, 0x28, 0x2e, 0x78, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x84, 0x7c, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x1f, 0x00, 0x7f, 0x1f, 0x11,
-+ 0x1f, 0x1f, 0x11, 0x1f, 0x19, 0x60, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0x40, 0xc0, 0x40, 0x40,
-+ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x84, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x7f, 0x00, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x19, 0x60, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x40, 0x40,
-+ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x84, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x3c, 0x24,
-+ 0x24, 0x3c, 0x19, 0x15, 0x22, 0x44, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xf8, 0x08, 0x10,
-+ 0x10, 0x20, 0x40, 0x80, 0x40, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x3f, 0x24, 0x3f, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x1f, 0x05, 0x7f, 0x04, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x3d, 0x24,
-+ 0x24, 0x3f, 0x18, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54,
-+ 0x7c, 0xc8, 0x30, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1f, 0x3f, 0x24, 0x3f, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0xf8, 0x48, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x09, 0x17, 0x25, 0x19, 0x6f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0xa8, 0x48, 0x30, 0xec, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x1f, 0x04, 0x7f, 0x0f,
-+ 0x18, 0x6f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0xf0, 0x40, 0xfc, 0xe0,
-+ 0x30, 0xec, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x27, 0x24, 0x3f, 0x24, 0x3f, 0x24,
-+ 0x27, 0x3d, 0x19, 0x16, 0x24, 0x40, 0x00, 0x00,
-+ 0x48, 0xb0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8,
-+ 0xf8, 0xb0, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x25, 0x3d, 0x25, 0x3d, 0x25,
-+ 0x25, 0x3c, 0x1b, 0x15, 0x24, 0x40, 0x00, 0x00,
-+ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x14, 0x7f, 0x3e, 0x09, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd4, 0xb4, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7e, 0x09, 0x7f, 0x1e, 0x27, 0x4f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x50, 0x70, 0x8c, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x14, 0x1f, 0x25, 0x7f, 0x16, 0x25, 0x4f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0xa0, 0xf8, 0x20, 0xfc, 0x50, 0x94, 0xec, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x7f, 0x12, 0x0d, 0x1d, 0x63, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0xd4, 0xfc, 0x70, 0x50, 0x74, 0x8c, 0xe4, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x08, 0x07, 0x1f, 0x10, 0x1f, 0x3b,
-+ 0x2a, 0x3b, 0x2b, 0x3b, 0x2b, 0x5c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0xf0, 0x10, 0xf0, 0xb8,
-+ 0xa8, 0xb8, 0xb8, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x25, 0x3d, 0x25, 0x3d, 0x25,
-+ 0x25, 0x3d, 0x1a, 0x16, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0x54, 0x8c, 0x70, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x27, 0x3d, 0x24, 0x3f, 0x25,
-+ 0x26, 0x3d, 0x19, 0x15, 0x27, 0x40, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0xf8, 0x40, 0xfc, 0xa8,
-+ 0x54, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x3e, 0x15, 0x1d, 0x3f, 0x5f, 0x17,
-+ 0x14, 0x17, 0x17, 0x17, 0x22, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x50, 0x78, 0xf4, 0xf0, 0xd0,
-+ 0x50, 0xd0, 0xd0, 0xd0, 0x90, 0x50, 0x00, 0x00,
-+ 0x00, 0x38, 0x2d, 0x2d, 0x3d, 0x2f, 0x39, 0x2f,
-+ 0x2d, 0x3d, 0x15, 0x1a, 0x2a, 0x44, 0x00, 0x00,
-+ 0x18, 0x14, 0xfc, 0x10, 0xf4, 0xd4, 0xf4, 0xb8,
-+ 0xf8, 0xdc, 0xfc, 0x9c, 0x24, 0x44, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x3d, 0x25,
-+ 0x25, 0x3d, 0x1a, 0x16, 0x27, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x0f, 0x0f, 0x18, 0x3e,
-+ 0x22, 0x3e, 0x3e, 0x3e, 0x14, 0x63, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xe0, 0x30, 0xf8,
-+ 0x88, 0xf8, 0xf8, 0xf8, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x25, 0x3d, 0x25, 0x3d, 0x24,
-+ 0x24, 0x3c, 0x18, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x20, 0xfc, 0xf8, 0xfc, 0x54, 0x9c, 0xfc, 0xf8,
-+ 0x88, 0xf8, 0xf8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x14, 0x36,
-+ 0x36, 0x35, 0x55, 0x14, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x80, 0xf8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x14, 0x36,
-+ 0x37, 0x35, 0x55, 0x14, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x50, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x08, 0x04,
-+ 0x04, 0x10, 0x1b, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x28,
-+ 0x2e, 0x29, 0x38, 0x28, 0x46, 0x41, 0x00, 0x00,
-+ 0x10, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x9c,
-+ 0xf0, 0x90, 0x10, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x28,
-+ 0x2e, 0x28, 0x38, 0x28, 0x47, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x24, 0x40, 0x90,
-+ 0x24, 0xc8, 0x10, 0x60, 0x80, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x09, 0x08, 0x7f, 0x08, 0x28,
-+ 0x2e, 0x28, 0x38, 0x28, 0x46, 0x41, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0x88, 0x98, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x29, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xa0, 0xbc, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x29, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x27, 0x3d, 0x09, 0x29, 0x2d,
-+ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x09, 0x00, 0x00,
-+ 0x00, 0x00, 0x1c, 0xd4, 0x54, 0x54, 0x54, 0x54,
-+ 0x54, 0x54, 0x54, 0x5c, 0x54, 0x80, 0x00, 0x00,
-+ 0x00, 0x7b, 0x4a, 0x4a, 0x7a, 0x12, 0x57, 0x5e,
-+ 0x52, 0x52, 0x5e, 0x72, 0x42, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2f,
-+ 0x29, 0x2a, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x80, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x2b, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2e, 0x3a, 0x65, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x28, 0x20, 0x20, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x2f, 0x3a, 0x64, 0x0b, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x48, 0xc8,
-+ 0xb0, 0xb0, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3d, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x08, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xfc, 0x00, 0x78, 0x48,
-+ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x09, 0x0f, 0x71, 0x02, 0x1f,
-+ 0x10, 0x1f, 0x09, 0x09, 0x15, 0x63, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x90, 0x54, 0x54, 0x0c, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0xa4,
-+ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x29, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x02, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xfc, 0x04,
-+ 0xf4, 0x94, 0xf4, 0x94, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x39, 0x62, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x28, 0x08, 0x2e,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8,
-+ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x28, 0x2e,
-+ 0x28, 0x28, 0x2f, 0x39, 0x62, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x29, 0x28, 0x2e, 0x39, 0x62, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xf8, 0x20,
-+ 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x28, 0x20, 0xfc,
-+ 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x29, 0x2e,
-+ 0x28, 0x29, 0x2e, 0x38, 0x60, 0x03, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54,
-+ 0x7c, 0xc8, 0x30, 0x24, 0xdc, 0x04, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x0a, 0x28, 0x2f,
-+ 0x28, 0x28, 0x2f, 0x39, 0x62, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xe8, 0xa8, 0xa8, 0xa8, 0xe8,
-+ 0xa8, 0xa8, 0x68, 0x78, 0x28, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3f, 0x28, 0x09, 0x2e,
-+ 0x28, 0x29, 0x28, 0x2e, 0x39, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0x68, 0xa0, 0x60,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x28, 0x0b, 0x2e,
-+ 0x2b, 0x2a, 0x2b, 0x2e, 0x3a, 0x62, 0x00, 0x00,
-+ 0xe0, 0x60, 0x90, 0x08, 0xf4, 0x00, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x3e, 0x28, 0x08, 0x2e,
-+ 0x28, 0x28, 0x2b, 0x2c, 0x38, 0x63, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x44, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3e, 0x09, 0x28, 0x2e,
-+ 0x29, 0x28, 0x2f, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x54, 0x90, 0x60, 0x50,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x1f, 0x04, 0x7f, 0x0f,
-+ 0x14, 0x67, 0x09, 0x09, 0x17, 0x61, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0xf0, 0x40, 0xfc, 0xe0,
-+ 0x50, 0xcc, 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3c, 0x27, 0x24, 0x3d, 0x08, 0x2b, 0x2c,
-+ 0x28, 0x28, 0x2f, 0x3a, 0x67, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x80,
-+ 0xf8, 0xa0, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2f, 0x3b, 0x65, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0,
-+ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x29, 0x0b, 0x2f,
-+ 0x29, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00,
-+ 0x40, 0x58, 0x40, 0x58, 0xa0, 0x10, 0xf8, 0x14,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3e, 0x28, 0x09, 0x2f,
-+ 0x29, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x24, 0x40, 0xb8, 0x08,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x13, 0x1f, 0x17, 0x1a, 0x22,
-+ 0x4f, 0x08, 0x0f, 0x09, 0x17, 0x21, 0x00, 0x00,
-+ 0x50, 0xfc, 0x48, 0xa8, 0xf0, 0x30, 0xd4, 0x0c,
-+ 0xe4, 0x20, 0xe0, 0xf0, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x26, 0x3c, 0x08, 0x29, 0x2f,
-+ 0x2b, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00,
-+ 0xa8, 0xa8, 0x28, 0x54, 0xd4, 0x90, 0x10, 0x50,
-+ 0x5c, 0x50, 0x50, 0xb0, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2d,
-+ 0x29, 0x29, 0x2e, 0x3b, 0x65, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x50, 0xfc, 0x50, 0x50,
-+ 0x70, 0x50, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x23, 0x3e, 0x28, 0x08, 0x2f,
-+ 0x28, 0x28, 0x28, 0x2d, 0x3a, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x28, 0x0b, 0x2e,
-+ 0x2b, 0x2a, 0x2a, 0x2f, 0x3a, 0x62, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xa0, 0xe0, 0x40, 0xf8, 0x48,
-+ 0xf8, 0xd8, 0xd8, 0x68, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x3f, 0x26, 0x27, 0x3e, 0x2b, 0x09, 0x2f,
-+ 0x29, 0x2b, 0x28, 0x2f, 0x38, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x50, 0xfc,
-+ 0x50, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x27, 0x26, 0x3e, 0x0b, 0x2a, 0x2f,
-+ 0x2b, 0x2b, 0x2f, 0x3c, 0x65, 0x0a, 0x00, 0x00,
-+ 0x00, 0xfc, 0x30, 0xb0, 0xd0, 0xfc, 0xb4, 0xf8,
-+ 0xd0, 0xd0, 0x98, 0xa8, 0x24, 0x44, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x26, 0x3d, 0x29, 0x09, 0x2f,
-+ 0x29, 0x28, 0x2b, 0x2c, 0x38, 0x60, 0x00, 0x00,
-+ 0xf0, 0x90, 0xf8, 0x64, 0xf8, 0x78, 0x98, 0xf8,
-+ 0xf8, 0x10, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x27, 0x3d, 0x08, 0x2b, 0x2c,
-+ 0x29, 0x28, 0x2f, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x29, 0x2f,
-+ 0x28, 0x29, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xdc, 0x54, 0xdc,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3d, 0x28, 0x0b, 0x2e,
-+ 0x28, 0x2b, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0x48, 0xf8, 0x50, 0xfc, 0x50,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3c, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0xf8, 0x80, 0xfc, 0x44, 0xf4,
-+ 0x54, 0xf4, 0x54, 0x7c, 0x8c, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x3e, 0x32, 0x5e, 0x1f,
-+ 0x08, 0x0f, 0x09, 0x09, 0x17, 0x21, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3e, 0x0b, 0x2c, 0x2f,
-+ 0x29, 0x29, 0x2f, 0x39, 0x62, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa8, 0xf0, 0xe8, 0xf8, 0x64, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x25, 0x3f, 0x29, 0x08, 0x2f,
-+ 0x2b, 0x28, 0x2b, 0x2e, 0x3b, 0x62, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0,
-+ 0xfc, 0x08, 0xfc, 0xc8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x2a, 0x09, 0x2f,
-+ 0x29, 0x29, 0x2f, 0x39, 0x61, 0x06, 0x00, 0x00,
-+ 0x48, 0xb0, 0x20, 0xfc, 0x68, 0x48, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x02, 0x7a, 0x4f, 0x49, 0x7f, 0x15, 0x56, 0x5f,
-+ 0x57, 0x51, 0x5f, 0x72, 0x44, 0x08, 0x00, 0x00,
-+ 0x80, 0x78, 0xe8, 0xa8, 0xf0, 0xf0, 0xe8, 0xe8,
-+ 0xe4, 0x24, 0xe4, 0xb8, 0x60, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x26, 0x26, 0x3e, 0x0a, 0x2a, 0x2e,
-+ 0x2b, 0x2a, 0x2f, 0x3c, 0x6b, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf8,
-+ 0xfc, 0xac, 0xfc, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x26, 0x27, 0x3e, 0x2b, 0x0a, 0x2e,
-+ 0x2b, 0x2a, 0x2a, 0x2e, 0x3a, 0x62, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x68, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0xa8, 0xf8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3e, 0x2b, 0x0b, 0x2e,
-+ 0x2a, 0x2b, 0x2a, 0x2e, 0x3a, 0x62, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0xb8, 0x68,
-+ 0xf8, 0xf8, 0xf8, 0xa8, 0xf8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x09, 0x28, 0x2f,
-+ 0x2a, 0x2b, 0x2f, 0x3b, 0x66, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0xf0, 0xf0, 0xf0, 0x10, 0xfc,
-+ 0xa8, 0xb8, 0xb8, 0xb8, 0xe8, 0x88, 0x00, 0x00,
-+ 0x08, 0x11, 0x3c, 0x24, 0x3d, 0x25, 0x3d, 0x27,
-+ 0x7d, 0x0d, 0x14, 0x64, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x10, 0x3c, 0x27, 0x3c, 0x24, 0x3d, 0x27,
-+ 0x7e, 0x0d, 0x14, 0x64, 0x04, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50, 0x50,
-+ 0x48, 0xf4, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x13, 0x3e, 0x27, 0x3e, 0x27, 0x3c, 0x27,
-+ 0x7d, 0x0d, 0x15, 0x64, 0x07, 0x0c, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x11, 0x3c, 0x24, 0x3c, 0x25, 0x3e, 0x26,
-+ 0x7f, 0x0c, 0x15, 0x66, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0xe0, 0xa0, 0xb8, 0xa8, 0x08, 0x70, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x40, 0x00, 0x00,
-+ 0x09, 0x10, 0x3f, 0x24, 0x3d, 0x24, 0x3f, 0x26,
-+ 0x7c, 0x0f, 0x14, 0x64, 0x05, 0x0e, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x40,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x13, 0x3a, 0x2a, 0x3a, 0x2b, 0x3b, 0x2f,
-+ 0x7b, 0x1b, 0x2d, 0x4d, 0x09, 0x19, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa8, 0xb0, 0x7c, 0xd0, 0x78,
-+ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00,
-+ 0x08, 0x13, 0x3a, 0x2a, 0x3b, 0x2b, 0x3b, 0x2f,
-+ 0x7b, 0x1a, 0x2d, 0x4d, 0x0a, 0x18, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa8, 0xfc, 0xd0, 0x78, 0x78, 0x50,
-+ 0x7c, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xc8,
-+ 0xd8, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x7f,
-+ 0x01, 0x31, 0x0c, 0x06, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc,
-+ 0x00, 0x18, 0x60, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2b,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7e, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x24, 0xc0, 0x10,
-+ 0x20, 0xc4, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7e, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x28, 0x24, 0x24, 0xfc, 0x20, 0x20, 0xe0, 0xa0,
-+ 0x90, 0x90, 0xb4, 0xcc, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x30, 0x48, 0xf4, 0x24, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3f, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa8, 0x50, 0xa8, 0xa8, 0x00,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x7f, 0x09, 0x3d, 0x2d, 0x3d, 0x2d,
-+ 0x3d, 0x09, 0x7f, 0x0b, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0x50, 0xd0, 0x50, 0x50, 0xd0,
-+ 0x50, 0x50, 0xd4, 0x54, 0x54, 0x4c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x7f, 0x09, 0x3f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x09, 0x7f, 0x0b, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x68, 0x68, 0xe8,
-+ 0x50, 0x50, 0xd8, 0x68, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0xa8, 0x00, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x09, 0x3e, 0x2a, 0x3f, 0x2b,
-+ 0x3e, 0x09, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x68, 0x90, 0xd8, 0x24, 0xf8,
-+ 0x68, 0x68, 0x90, 0x90, 0x68, 0x44, 0x00, 0x00,
-+ 0x10, 0x13, 0x7c, 0x10, 0x7f, 0x56, 0x7f, 0x56,
-+ 0x7e, 0x13, 0x7e, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0xf8, 0xd8,
-+ 0xd8, 0x68, 0x48, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x10, 0x13, 0x7c, 0x10, 0x7f, 0x56, 0x7f, 0x57,
-+ 0x7f, 0x13, 0x7f, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x58, 0x58,
-+ 0x58, 0xf8, 0x18, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x3e, 0x08, 0x7f, 0x14, 0x23, 0x5f, 0x0f,
-+ 0x09, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x50, 0x88, 0xf4, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x09, 0x7e, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x50,
-+ 0xf8, 0x24, 0xf8, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0x90, 0xf0, 0x00,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf0, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x09, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x24, 0x64, 0xd8, 0x50, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x3f, 0x5e, 0x7f, 0x3e,
-+ 0x2a, 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x09, 0x3f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x09, 0x7f, 0x0a, 0x0c, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x50, 0xf8, 0x50,
-+ 0x50, 0xfc, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x09, 0x3f, 0x2b, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xfc, 0x28, 0xac, 0xac, 0x00,
-+ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x09, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x28, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x38, 0xe8, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x12, 0x7f, 0x56, 0x7e, 0x57,
-+ 0x7f, 0x13, 0x7f, 0x15, 0x15, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x24, 0xe8, 0x30, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x09, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x50, 0xf8, 0x54, 0x70,
-+ 0xfc, 0x04, 0x74, 0x54, 0x74, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x12, 0x7f, 0x56, 0x7f, 0x57,
-+ 0x7d, 0x10, 0x7e, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x28, 0xe8, 0x10, 0xd4, 0x6c,
-+ 0xc4, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x10, 0x13, 0x7c, 0x13, 0x7e, 0x57, 0x7f, 0x57,
-+ 0x7c, 0x13, 0x7e, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xfc, 0x48, 0x58, 0x58, 0xfc,
-+ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x12, 0x12, 0x7d, 0x15, 0x7a, 0x5a, 0x7d, 0x5f,
-+ 0x78, 0x17, 0x78, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xb4, 0xe8, 0xa8, 0xf4, 0x5c,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x7e, 0x13, 0x7f, 0x56, 0x7f, 0x56,
-+ 0x7e, 0x12, 0x7e, 0x14, 0x17, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xb0, 0xfc, 0xd0, 0xb8, 0x94,
-+ 0x20, 0xb8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x12, 0x7f, 0x57, 0x7f, 0x57,
-+ 0x7f, 0x13, 0x7f, 0x15, 0x15, 0x1b, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf0, 0x50, 0xf0,
-+ 0x50, 0xf0, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x10, 0x1f, 0x01, 0x3f,
-+ 0x08, 0x7f, 0x01, 0x3f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x20, 0xfc, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1e, 0x13, 0x12, 0x12, 0x1e, 0x13, 0x10,
-+ 0x3e, 0x33, 0x52, 0x1e, 0x12, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x24, 0x15, 0x19, 0x7f, 0x09,
-+ 0x0e, 0x78, 0x09, 0x12, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xe0, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x03, 0x3e, 0x29, 0x3f, 0x4a, 0x04, 0x3f, 0x2b,
-+ 0x3f, 0x3f, 0x2b, 0x25, 0x3b, 0x23, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x48, 0x28, 0x30, 0xfc, 0x10,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x7c, 0x2f, 0x28, 0x2b, 0x7c, 0x13,
-+ 0x1c, 0x73, 0x12, 0x23, 0x22, 0x40, 0x00, 0x00,
-+ 0x10, 0x90, 0x7c, 0xe8, 0x28, 0xa8, 0x7c, 0x90,
-+ 0x10, 0xfc, 0x90, 0x90, 0x90, 0x10, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x20, 0x10, 0x17, 0x00, 0x70,
-+ 0x10, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x23, 0x12, 0x12, 0x02, 0x73,
-+ 0x12, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x40, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x22, 0x12, 0x12, 0x02, 0x72,
-+ 0x12, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xe8,
-+ 0xa8, 0x08, 0x08, 0x18, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x20, 0x10, 0x11, 0x02, 0x71,
-+ 0x11, 0x11, 0x11, 0x11, 0x2c, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x30, 0x00, 0xf8,
-+ 0x08, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x13, 0x02, 0x02, 0x73, 0x12,
-+ 0x12, 0x13, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x43, 0x24, 0x24, 0x0a, 0x71,
-+ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xa0, 0xb0, 0xa8, 0xa4, 0x24,
-+ 0x20, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x20, 0x17, 0x11, 0x42, 0x27, 0x22, 0x03, 0x73,
-+ 0x12, 0x13, 0x13, 0x12, 0x2a, 0x47, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x44, 0xfc, 0xd8, 0x68, 0xf8,
-+ 0xd8, 0x68, 0xf8, 0x48, 0x58, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x22, 0x12, 0x12, 0x02, 0x72,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x22, 0x13, 0x12, 0x02, 0x73,
-+ 0x15, 0x15, 0x19, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8,
-+ 0x08, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x27, 0x10, 0x12, 0x02, 0x74,
-+ 0x18, 0x11, 0x11, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xa0, 0xb0, 0xa8, 0xa4,
-+ 0xa4, 0x20, 0x20, 0x60, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x20, 0x13, 0x12, 0x02, 0x72,
-+ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xb8, 0xb8,
-+ 0x18, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x27, 0x10, 0x12, 0x01, 0x71,
-+ 0x11, 0x16, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x48, 0x70,
-+ 0xd0, 0x48, 0x48, 0xc0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x20, 0x17, 0x12, 0x42, 0x24, 0x22, 0x00, 0x73,
-+ 0x10, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x48, 0x90, 0x48, 0x00, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x27, 0x11, 0x11, 0x02, 0x74,
-+ 0x11, 0x12, 0x10, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xa0, 0x18, 0xe4, 0x20, 0x24, 0x9c, 0xf0,
-+ 0x90, 0x60, 0xd0, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x22, 0x15, 0x11, 0x01, 0x71,
-+ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0xf4, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0x10, 0x30, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x21, 0x11, 0x10, 0x03, 0x70,
-+ 0x11, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x21, 0x11, 0x16, 0x42, 0x26, 0x2b, 0x03, 0x75,
-+ 0x19, 0x11, 0x11, 0x1e, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x28, 0x68, 0x70, 0xa0, 0x20,
-+ 0x50, 0x50, 0x88, 0x04, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x20, 0x13, 0x12, 0x03, 0x72,
-+ 0x13, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x48, 0x48, 0x58, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x22, 0x10, 0x10, 0x01, 0x73,
-+ 0x15, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0x10, 0xf8,
-+ 0x14, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x27, 0x10, 0x11, 0x02, 0x77,
-+ 0x10, 0x11, 0x10, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x48, 0xfc,
-+ 0x90, 0xd0, 0x70, 0x88, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x27, 0x11, 0x11, 0x02, 0x74,
-+ 0x11, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x24, 0x5c, 0x40,
-+ 0xf0, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x20, 0x17, 0x11, 0x00, 0x77,
-+ 0x10, 0x13, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xa0, 0xfc,
-+ 0x40, 0xf8, 0x40, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0x22, 0x11, 0x11, 0x47, 0x21, 0x21, 0x0f, 0x71,
-+ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x23, 0x12, 0x13, 0x01, 0x73,
-+ 0x16, 0x12, 0x13, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x48, 0xa8, 0x28, 0xf8, 0x10, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x22, 0x13, 0x12, 0x03, 0x72,
-+ 0x12, 0x13, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x00, 0xf8, 0x28,
-+ 0x10, 0x90, 0x28, 0x48, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x21, 0x11, 0x11, 0x00, 0x73,
-+ 0x10, 0x11, 0x10, 0x1f, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xfc, 0x00, 0x00,
-+ 0x11, 0x09, 0x0a, 0x27, 0x10, 0x13, 0x02, 0x73,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0xf0, 0x10, 0x08, 0xfc, 0xa0, 0xf8, 0xa8, 0x38,
-+ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x23, 0x12, 0x12, 0x02, 0x73,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xb8, 0x18,
-+ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x23, 0x12, 0x13, 0x02, 0x73,
-+ 0x12, 0x13, 0x13, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x30, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x11, 0x08, 0x09, 0x23, 0x14, 0x13, 0x02, 0x73,
-+ 0x12, 0x13, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0xc0, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8, 0xd0,
-+ 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x20, 0x13, 0x13, 0x02, 0x73,
-+ 0x12, 0x13, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x18, 0xa8, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x58, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x23, 0x10, 0x17, 0x01, 0x71,
-+ 0x11, 0x11, 0x17, 0x19, 0x27, 0x41, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0xf0, 0x50,
-+ 0xf0, 0x50, 0xfc, 0x10, 0x30, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x22, 0x12, 0x12, 0x02, 0x72,
-+ 0x15, 0x15, 0x1a, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x38, 0xfc, 0xa8, 0xb8, 0xe4, 0x9c,
-+ 0x50, 0x54, 0x54, 0x8c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x11, 0x0b, 0x09, 0x27, 0x11, 0x17, 0x01, 0x71,
-+ 0x12, 0x12, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0xfc, 0x48, 0xe8, 0x18, 0x90,
-+ 0x98, 0xa8, 0xc4, 0x84, 0x00, 0xfc, 0x00, 0x00,
-+ 0x20, 0x17, 0x15, 0x45, 0x27, 0x25, 0x05, 0x77,
-+ 0x15, 0x15, 0x19, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x64, 0xb4, 0x38, 0xd8, 0x38,
-+ 0xd4, 0x14, 0x10, 0x60, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x08, 0x27, 0x11, 0x17, 0x01, 0x76,
-+ 0x13, 0x10, 0x11, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x40, 0xfc, 0x10, 0xb8, 0x90, 0x3c,
-+ 0xf8, 0xa0, 0x24, 0x1c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x02, 0x39, 0x29, 0x2c, 0x32, 0x33, 0x28, 0x2f,
-+ 0x25, 0x25, 0x25, 0x39, 0x22, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x78, 0x90, 0xfc, 0x78, 0x48,
-+ 0x78, 0x78, 0x48, 0x58, 0x80, 0x7c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x23, 0x12, 0x13, 0x03, 0x72,
-+ 0x12, 0x15, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xac, 0xac, 0xa0,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00,
-+ 0x22, 0x13, 0x14, 0x49, 0x27, 0x25, 0x07, 0x75,
-+ 0x17, 0x14, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0x28, 0xd8, 0xb0, 0xb8, 0xd0,
-+ 0xfc, 0x90, 0x90, 0x90, 0x00, 0xfc, 0x00, 0x00,
-+ 0x20, 0x10, 0x17, 0x44, 0x27, 0x24, 0x07, 0x74,
-+ 0x17, 0x14, 0x1b, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xf0, 0xfc, 0xe8, 0x90, 0x70, 0xf8, 0xc8,
-+ 0x68, 0xb0, 0x68, 0xa4, 0xc0, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x21, 0x11, 0x11, 0x01, 0x71,
-+ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf0, 0x50, 0xf0, 0x50, 0xf0,
-+ 0xf8, 0x68, 0xf8, 0x08, 0x18, 0xfc, 0x00, 0x00,
-+ 0x11, 0x0f, 0x0c, 0x27, 0x14, 0x17, 0x02, 0x7f,
-+ 0x13, 0x12, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xbc, 0xc8, 0xc8, 0x28, 0xd0,
-+ 0x98, 0xa8, 0xc4, 0x84, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x21, 0x11, 0x11, 0x03, 0x72,
-+ 0x15, 0x17, 0x10, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0xf0, 0xfc, 0xa8,
-+ 0x78, 0xfc, 0xf0, 0x10, 0x60, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x21, 0x11, 0x11, 0x03, 0x72,
-+ 0x15, 0x17, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xd0, 0xd0, 0xf0, 0xfc, 0xe8,
-+ 0x10, 0xfc, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x23, 0x12, 0x1d, 0x03, 0x72,
-+ 0x17, 0x13, 0x15, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x28, 0x7c, 0x50, 0xfc,
-+ 0xd0, 0x7c, 0xd0, 0x7c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x78, 0x0a, 0x2a, 0x2a, 0x2a,
-+ 0x3e, 0x2a, 0x08, 0x0a, 0x0c, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x12,
-+ 0x1e, 0x12, 0x12, 0x12, 0x1e, 0x12, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0xd0, 0x60, 0x50, 0x50,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x06, 0x38, 0x20, 0x20, 0x3f, 0x24, 0x24,
-+ 0x24, 0x24, 0x27, 0x38, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x7e, 0x12, 0x12, 0x12, 0x22, 0x4c, 0x00,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x00, 0x7e, 0x08,
-+ 0x08, 0x3e, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00, 0x00,
-+ 0x14, 0x12, 0x22, 0x48, 0x08, 0x14, 0x12, 0x22,
-+ 0x7e, 0x22, 0x22, 0x3e, 0x22, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x13, 0x12,
-+ 0x13, 0x17, 0x14, 0x27, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0xf0, 0x90, 0xf4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x03, 0x3c, 0x32, 0x29, 0x29, 0x40, 0x3e, 0x04,
-+ 0x08, 0x0e, 0x78, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x77, 0x55, 0x55, 0x77, 0x00, 0x3e, 0x00,
-+ 0x7f, 0x10, 0x1e, 0x22, 0x02, 0x0c, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x6b, 0x3f, 0x29, 0x0e, 0x10,
-+ 0x1f, 0x29, 0x6b, 0x3f, 0x29, 0x16, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x7f, 0x08, 0x3f, 0x21,
-+ 0x2f, 0x2b, 0x2f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0xd0, 0x60, 0x50, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x77, 0x55, 0x77, 0x00, 0x3e, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x25, 0x16, 0x7f, 0x0e, 0x15, 0x75, 0x1f,
-+ 0x2d, 0x6d, 0x1f, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xd0, 0x50, 0x60, 0xd0, 0xc8,
-+ 0x48, 0x48, 0xc8, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x80, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x2f,
-+ 0x33, 0x31, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0x20, 0xfc, 0xa8, 0x20, 0x20,
-+ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x48, 0xc8, 0x48, 0x48, 0xfc, 0x48, 0x48, 0x48,
-+ 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x08, 0xb0, 0xe0, 0x20, 0x20, 0xfc, 0x70, 0x70,
-+ 0x70, 0xa8, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0xa0, 0x38, 0x48, 0xd0, 0x30, 0x20, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x28, 0xc8, 0x30, 0x28, 0xfc, 0x04, 0x78,
-+ 0x48, 0x78, 0x48, 0x78, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x2f,
-+ 0x37, 0x33, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x78, 0x08, 0xf0,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x50, 0xd0, 0x50, 0xf8, 0x50, 0x50, 0xfc, 0x00,
-+ 0x78, 0x48, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x33, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x48, 0x48, 0x68, 0xb4, 0x24,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2e, 0x2e, 0x37,
-+ 0x37, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, 0xd8, 0xf8,
-+ 0xb8, 0xd4, 0xd4, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x00, 0x7e, 0x18, 0x19, 0x7e, 0x5a, 0x5a, 0x7e,
-+ 0x67, 0x47, 0x7f, 0x43, 0x7f, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00,
-+ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2e, 0x35, 0x3f, 0x2a, 0x3f, 0x7f,
-+ 0x02, 0x1f, 0x14, 0x1f, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x9c, 0xf8, 0x70, 0xd8, 0xfc,
-+ 0x80, 0xf0, 0xd0, 0xf0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0d, 0x3e, 0x2e, 0x2e, 0x36,
-+ 0x37, 0x22, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0xfc, 0x50, 0xf8, 0x00, 0xa8, 0xa8, 0xac,
-+ 0x04, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0d, 0x3e, 0x2f, 0x2e, 0x36,
-+ 0x37, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x20, 0xd0,
-+ 0x2c, 0xd0, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3e, 0x2e, 0x2e, 0x36,
-+ 0x36, 0x22, 0x3e, 0x23, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x38, 0xfc, 0xb8, 0xe8, 0x98, 0xfc, 0xa0,
-+ 0xf4, 0xb8, 0xd8, 0x34, 0x54, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0d, 0x0d, 0x3f, 0x2f, 0x2e, 0x37,
-+ 0x36, 0x22, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x60, 0xf8, 0x68, 0xf8, 0x68, 0xf8, 0x00, 0xfc,
-+ 0xf8, 0x88, 0xf8, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0d, 0x0c, 0x3e, 0x2e, 0x2e, 0x36,
-+ 0x36, 0x22, 0x3f, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x18, 0xe0, 0xfc, 0x20, 0xf8, 0xb8, 0xe8, 0xf8,
-+ 0x20, 0xf8, 0xfc, 0x00, 0xe8, 0x54, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0d, 0x0d, 0x3f, 0x2e, 0x2f, 0x36,
-+ 0x36, 0x23, 0x3e, 0x23, 0x3e, 0x23, 0x00, 0x00,
-+ 0x20, 0xfc, 0xdc, 0x54, 0xdc, 0x50, 0xfc, 0xf8,
-+ 0x50, 0xfc, 0x68, 0xd0, 0x68, 0x84, 0x00, 0x00,
-+ 0x1b, 0x12, 0x1b, 0x1b, 0x3f, 0x2f, 0x5f, 0x14,
-+ 0x1f, 0x1f, 0x07, 0x0f, 0x72, 0x0c, 0x00, 0x00,
-+ 0xb0, 0x90, 0xb0, 0xb0, 0xfc, 0xe8, 0xf0, 0xd0,
-+ 0xf0, 0xf0, 0xc0, 0xf0, 0x4c, 0xc0, 0x00, 0x00,
-+ 0x03, 0x7d, 0x49, 0x2a, 0x2c, 0x7f, 0x18, 0x1c,
-+ 0x1a, 0x29, 0x29, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x7d, 0x4b, 0x2b, 0x2c, 0x7f, 0x18, 0x1d,
-+ 0x1a, 0x2b, 0x28, 0x49, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x90, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x1c, 0x2a, 0x5f, 0x17, 0x14,
-+ 0x17, 0x17, 0x1f, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0xd0, 0x30, 0xcc, 0xf8, 0xf0, 0x90,
-+ 0xf0, 0xf0, 0xf8, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0x70, 0x10, 0x10, 0x50, 0x50, 0x50, 0x50,
-+ 0x90, 0x88, 0x88, 0x08, 0x04, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x09, 0x11, 0x02, 0x04, 0x1f, 0x61,
-+ 0x1f, 0x09, 0x05, 0x05, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x10, 0x80, 0x40, 0xf0, 0x0c,
-+ 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x68,
-+ 0x58, 0x4c, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0x90, 0x50, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa8, 0xb8, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0xb8, 0xa0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0x08, 0xe8, 0x08,
-+ 0x28, 0xc8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0x24, 0x2c,
-+ 0x68, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0xa0, 0xa8, 0xa8, 0xa8,
-+ 0x98, 0x90, 0x94, 0xec, 0xac, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, 0x90, 0x90,
-+ 0xf0, 0x90, 0x90, 0x90, 0xf0, 0x90, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x28, 0xc8, 0x50,
-+ 0x30, 0x20, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x48,
-+ 0x70, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x23, 0x5c, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0x20,
-+ 0xfc, 0x24, 0x58, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x80, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x22, 0x4a, 0x0f, 0x11, 0x17, 0x31,
-+ 0x55, 0x13, 0x13, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x80, 0x40, 0xfc, 0x08, 0xc8, 0x08,
-+ 0x48, 0x88, 0x08, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x70,
-+ 0x70, 0xa8, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0xe0, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x2a, 0x26, 0x7a, 0x12, 0x7e,
-+ 0x12, 0x57, 0x38, 0x31, 0x1d, 0x62, 0x00, 0x00,
-+ 0x40, 0x80, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7f,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xa8, 0xa8, 0xa8, 0x74,
-+ 0x24, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0xf0,
-+ 0x50, 0x5c, 0x94, 0x84, 0x04, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0x20, 0x20, 0xfc, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x78, 0x00, 0x00,
-+ 0x10, 0x13, 0x18, 0x24, 0x27, 0x7e, 0x12, 0x7f,
-+ 0x12, 0x54, 0x38, 0x30, 0x1f, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xb8, 0x08, 0x08, 0xb8,
-+ 0xa8, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x19, 0x25, 0x27, 0x7d, 0x11, 0x7d,
-+ 0x12, 0x54, 0x38, 0x31, 0x1e, 0x64, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68,
-+ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xe8,
-+ 0xa8, 0xa8, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0xa8, 0x00, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x50,
-+ 0x7c, 0xc8, 0x30, 0x64, 0x9c, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x0c, 0xf0, 0xa8, 0xa4, 0x04, 0xf8, 0x28, 0xfc,
-+ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x68, 0x90, 0xd0, 0x28, 0xf8,
-+ 0x48, 0x68, 0x90, 0x90, 0x68, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x20, 0x20, 0xfc, 0x20,
-+ 0x38, 0x28, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x60, 0x60, 0xa4, 0xa8,
-+ 0xb0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x70, 0x00, 0x00,
-+ 0x10, 0xf8, 0x14, 0x14, 0xfc, 0x50, 0x50, 0x70,
-+ 0x50, 0x50, 0x74, 0xcc, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xd8, 0x48, 0x00, 0xf8,
-+ 0x28, 0x28, 0xd0, 0x10, 0x28, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x18, 0x14, 0x27, 0x22, 0x7b, 0x12, 0x7f,
-+ 0x13, 0x57, 0x3b, 0x32, 0x1c, 0x64, 0x00, 0x00,
-+ 0x28, 0x24, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xe8,
-+ 0x50, 0x50, 0xf4, 0x2c, 0x4c, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x18, 0x25, 0x27, 0x78, 0x13, 0x7e,
-+ 0x13, 0x56, 0x3b, 0x32, 0x1e, 0x62, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x24, 0x24, 0x78, 0x10, 0x7c,
-+ 0x13, 0x55, 0x39, 0x31, 0x1d, 0x61, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x90,
-+ 0xfc, 0x50, 0x54, 0x8c, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x7c, 0x08, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x70, 0x00, 0x00,
-+ 0xf0, 0x90, 0x08, 0xfc, 0x00, 0xf0, 0x90, 0x08,
-+ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x04, 0x74, 0x54, 0x74, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0e, 0x73, 0x00, 0x00,
-+ 0x98, 0xe0, 0x84, 0x7c, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0xfc, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x09, 0x7c,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x58, 0x48, 0xa8, 0x20, 0x50,
-+ 0x88, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x12, 0x11, 0x19, 0x26, 0x25, 0x7d, 0x10, 0x7c,
-+ 0x13, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x48, 0x84, 0x78, 0x20, 0xfc,
-+ 0x20, 0x30, 0x48, 0x88, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x17, 0x27, 0x59,
-+ 0x0e, 0x77, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x58, 0xe4, 0x3c,
-+ 0xe0, 0xdc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x27, 0x26, 0x7b, 0x12, 0x7f,
-+ 0x12, 0x55, 0x38, 0x30, 0x1f, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xe8, 0x50, 0xd0, 0xa8, 0xc4,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x3e, 0x2a, 0x3e, 0x7f, 0x09,
-+ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x10, 0x10,
-+ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x0b, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x80, 0xfc, 0x20, 0x78,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x10, 0x12, 0x1a, 0x26, 0x27, 0x7a, 0x10, 0x7c,
-+ 0x13, 0x56, 0x3a, 0x32, 0x1c, 0x60, 0x00, 0x00,
-+ 0xa0, 0xb8, 0xa8, 0xe8, 0xd0, 0xb0, 0xa8, 0xc8,
-+ 0xfc, 0xc8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00,
-+ 0x11, 0x11, 0x19, 0x25, 0x27, 0x79, 0x11, 0x7d,
-+ 0x11, 0x55, 0x3a, 0x32, 0x1c, 0x61, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x7c, 0xe0, 0x20, 0xbc, 0xd0,
-+ 0xfc, 0x90, 0xa8, 0xa8, 0xc4, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x88, 0x50, 0x70, 0x8c, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x40, 0xa0,
-+ 0x30, 0xcc, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00,
-+ 0x12, 0x11, 0x19, 0x24, 0x26, 0x79, 0x11, 0x7c,
-+ 0x13, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x50, 0xd0, 0x30, 0xc8, 0x00, 0x00,
-+ 0x10, 0x13, 0x18, 0x27, 0x26, 0x7f, 0x12, 0x7c,
-+ 0x13, 0x54, 0x3a, 0x32, 0x1c, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xb8, 0x08, 0xb8, 0xa8, 0xa0,
-+ 0xfc, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x10, 0x17, 0x18, 0x27, 0x26, 0x7b, 0x11, 0x7d,
-+ 0x11, 0x55, 0x39, 0x33, 0x1c, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x11, 0x1f, 0x27, 0x26, 0x7a, 0x13, 0x7f,
-+ 0x10, 0x55, 0x3b, 0x31, 0x1d, 0x63, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0xa0, 0xbc, 0xe8, 0xe8, 0xa8,
-+ 0x90, 0xd0, 0x30, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x18, 0x27, 0x25, 0x7b, 0x11, 0x7d,
-+ 0x13, 0x57, 0x38, 0x30, 0x1d, 0x62, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xbc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x54, 0x88, 0xfc, 0x88, 0xf8,
-+ 0x88, 0xf8, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xfc, 0x54, 0xfc, 0x00, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x64, 0xd8, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x08, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x20, 0xf8, 0xf8, 0x20, 0xfc,
-+ 0x00, 0xdc, 0x54, 0x74, 0x04, 0x0c, 0x00, 0x00,
-+ 0x11, 0x13, 0x19, 0x27, 0x24, 0x7b, 0x12, 0x7f,
-+ 0x13, 0x55, 0x3b, 0x31, 0x1f, 0x60, 0x00, 0x00,
-+ 0x30, 0xe8, 0x28, 0xfc, 0x20, 0xa8, 0xa8, 0xa8,
-+ 0xd8, 0x10, 0x94, 0xec, 0x4c, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x24, 0x27, 0x78, 0x13, 0x7e,
-+ 0x13, 0x56, 0x39, 0x31, 0x1e, 0x60, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xe8, 0xa8, 0xfc, 0x20, 0xe8, 0x68,
-+ 0xd8, 0x50, 0x94, 0xec, 0x2c, 0x44, 0x00, 0x00,
-+ 0x09, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x24, 0xa8, 0xfc, 0x08, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x24, 0xfc, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x19, 0x0c, 0x71, 0x00, 0x00,
-+ 0x50, 0x3c, 0xd4, 0xb4, 0x6c, 0x94, 0xfc, 0x54,
-+ 0xcc, 0x70, 0xd0, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x29, 0x3e, 0x25, 0x3d, 0x29, 0x3f,
-+ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x68, 0xf8, 0x00,
-+ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x18, 0x25, 0x27, 0x79, 0x10, 0x7d,
-+ 0x13, 0x54, 0x3b, 0x32, 0x1f, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0,
-+ 0xfc, 0x08, 0xfc, 0xc8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x27, 0x26, 0x7a, 0x13, 0x7e,
-+ 0x12, 0x56, 0x3a, 0x32, 0x1c, 0x67, 0x00, 0x00,
-+ 0x20, 0xfc, 0x50, 0xfc, 0x50, 0x70, 0xfc, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x12, 0x12, 0x15, 0x2d, 0x26, 0x7a, 0x15, 0x7f,
-+ 0x10, 0x57, 0x38, 0x31, 0x1e, 0x60, 0x00, 0x00,
-+ 0x48, 0x88, 0xf4, 0xb4, 0xe8, 0xa8, 0xf4, 0x5c,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x26, 0x27, 0x7a, 0x12, 0x7e,
-+ 0x12, 0x56, 0x3a, 0x32, 0x1c, 0x65, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0x28, 0xd4, 0xcc, 0x38, 0x00, 0x00,
-+ 0x11, 0x11, 0x1a, 0x25, 0x27, 0x7a, 0x13, 0x7f,
-+ 0x13, 0x56, 0x3b, 0x32, 0x1f, 0x64, 0x00, 0x00,
-+ 0x50, 0x50, 0xa0, 0x50, 0xf8, 0xe8, 0x98, 0xf8,
-+ 0x68, 0xd8, 0x68, 0xdc, 0x64, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x26, 0x27, 0x7a, 0x12, 0x7e,
-+ 0x12, 0x56, 0x3b, 0x35, 0x1d, 0x67, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x19, 0x27, 0x24, 0x7f, 0x15, 0x7f,
-+ 0x13, 0x56, 0x3b, 0x32, 0x1e, 0x62, 0x00, 0x00,
-+ 0x40, 0xa0, 0x10, 0xfc, 0x00, 0xfc, 0xb4, 0xfc,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x10, 0x17, 0x18, 0x27, 0x26, 0x7b, 0x10, 0x7d,
-+ 0x13, 0x55, 0x39, 0x31, 0x1d, 0x61, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0x90, 0xfc,
-+ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x18, 0x24, 0x24, 0x7b, 0x10, 0x7f,
-+ 0x12, 0x57, 0x3b, 0x32, 0x1f, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0xf0, 0xf0, 0xf0, 0x10, 0xfc,
-+ 0xa8, 0xb8, 0xb8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x1a, 0x27, 0x25, 0x7a, 0x11, 0x7d,
-+ 0x11, 0x55, 0x39, 0x31, 0x1d, 0x66, 0x00, 0x00,
-+ 0x98, 0xfc, 0xa8, 0xfc, 0xd8, 0xac, 0xfc, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x90, 0xf8, 0x90, 0xfc, 0xd0, 0x28, 0xfc, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x27, 0x25, 0x79, 0x16, 0x7d,
-+ 0x12, 0x57, 0x39, 0x33, 0x1d, 0x61, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x28, 0x50, 0xfc, 0x50,
-+ 0xf8, 0xd0, 0x78, 0xd0, 0x7c, 0x40, 0x00, 0x00,
-+ 0x13, 0x17, 0x6b, 0x17, 0x7f, 0x3a, 0x57, 0x11,
-+ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00,
-+ 0x90, 0xd4, 0xe8, 0x98, 0xfc, 0xb8, 0xd4, 0x10,
-+ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00,
-+ 0x13, 0x12, 0x1b, 0x27, 0x27, 0x79, 0x13, 0x7d,
-+ 0x11, 0x55, 0x3b, 0x30, 0x1c, 0x63, 0x00, 0x00,
-+ 0xb8, 0xa8, 0xb8, 0xb8, 0xb8, 0xfc, 0xf8, 0xf8,
-+ 0x20, 0xfc, 0xf8, 0x90, 0x60, 0x9c, 0x00, 0x00,
-+ 0x2d, 0x7f, 0x12, 0x3f, 0x7f, 0x2b, 0x3b, 0x3f,
-+ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00,
-+ 0x70, 0xd0, 0x54, 0x8c, 0xf8, 0x50, 0xf0, 0x0c,
-+ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x20,
-+ 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08,
-+ 0xe8, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8,
-+ 0x08, 0x88, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x29,
-+ 0x29, 0x29, 0x29, 0x2f, 0x28, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x28,
-+ 0x28, 0x28, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21,
-+ 0x2f, 0x22, 0x21, 0x22, 0x2c, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08,
-+ 0xe8, 0x88, 0x08, 0x88, 0x68, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21,
-+ 0x2f, 0x23, 0x25, 0x29, 0x23, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x28,
-+ 0xc8, 0x88, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x27,
-+ 0x25, 0x27, 0x25, 0x27, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x48, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x3f,
-+ 0x21, 0x2f, 0x29, 0x29, 0x29, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xe8, 0x28, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f,
-+ 0x21, 0x27, 0x21, 0x21, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8,
-+ 0x08, 0xc8, 0x88, 0x48, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x27,
-+ 0x21, 0x2f, 0x27, 0x21, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8,
-+ 0x08, 0xe8, 0xc8, 0x08, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x22,
-+ 0x2f, 0x22, 0x2f, 0x22, 0x2c, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x88,
-+ 0xe8, 0x88, 0xe8, 0x88, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x27, 0x24,
-+ 0x27, 0x22, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x48,
-+ 0xc8, 0x08, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x3f,
-+ 0x24, 0x27, 0x25, 0x29, 0x36, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x48,
-+ 0xa8, 0xd8, 0x28, 0xc8, 0x28, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x23, 0x24,
-+ 0x29, 0x26, 0x26, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x48,
-+ 0x88, 0xc8, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x3f,
-+ 0x27, 0x2d, 0x37, 0x27, 0x25, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xf8,
-+ 0xc8, 0x68, 0xd8, 0xc8, 0x28, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x3f,
-+ 0x2e, 0x2a, 0x2e, 0x26, 0x39, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xc8, 0x68, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x28, 0x25,
-+ 0x33, 0x28, 0x25, 0x25, 0x29, 0x29, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x68, 0x88,
-+ 0xf8, 0x88, 0xe8, 0x28, 0xe8, 0x38, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x08, 0x1b,
-+ 0x1f, 0x28, 0x2b, 0x4a, 0x4b, 0x4a, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x68, 0x88,
-+ 0xf8, 0x88, 0xe8, 0x28, 0xe8, 0x38, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x27, 0x24, 0x27,
-+ 0x27, 0x27, 0x21, 0x2f, 0x22, 0x2c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xc8, 0x48, 0xc8,
-+ 0xc8, 0xc8, 0x48, 0xe8, 0x88, 0x78, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x27, 0x2f,
-+ 0x21, 0x27, 0x3b, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x28, 0xc8, 0xe8,
-+ 0x48, 0xe8, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x2f, 0x27,
-+ 0x25, 0x27, 0x27, 0x23, 0x2d, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xe8, 0xc8,
-+ 0x48, 0xc8, 0xc8, 0x88, 0x68, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x29, 0x26,
-+ 0x3f, 0x25, 0x2d, 0x2f, 0x24, 0x29, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x68, 0x48, 0x48, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x27, 0x2f,
-+ 0x22, 0x2f, 0x27, 0x27, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xc8, 0xe8,
-+ 0x48, 0xe8, 0xc8, 0x48, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x27, 0x25, 0x27,
-+ 0x27, 0x25, 0x27, 0x2e, 0x2d, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xe8, 0x08, 0xc8,
-+ 0xc8, 0x08, 0xe8, 0xa8, 0x68, 0xd8, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x3b,
-+ 0x26, 0x3f, 0x2a, 0x2e, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0xa8,
-+ 0x68, 0xf8, 0xa8, 0xe8, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x2e, 0x2a, 0x2e,
-+ 0x27, 0x25, 0x27, 0x27, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xe8, 0xa8, 0xe8,
-+ 0xc8, 0x48, 0xc8, 0xc8, 0xf8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x28, 0x25, 0x2b,
-+ 0x25, 0x23, 0x2d, 0x27, 0x24, 0x2b, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x88, 0xc8, 0xe8,
-+ 0x48, 0xe8, 0xc8, 0xe8, 0x88, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x2e, 0x2b,
-+ 0x2e, 0x29, 0x2e, 0x3b, 0x2e, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0xf8,
-+ 0xa8, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x28, 0x30, 0x28, 0x27, 0x24,
-+ 0x24, 0x24, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x3a, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x78, 0x48, 0x48, 0x48,
-+ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x28, 0x30, 0x2b, 0x24, 0x24,
-+ 0x24, 0x24, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0x24, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x3a, 0x22, 0x24, 0x2b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x28, 0x20, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x28, 0x30, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x2b, 0x30, 0x28, 0x25, 0x26,
-+ 0x24, 0x24, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x80, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x39, 0x28, 0x2a, 0x32, 0x32, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x3a, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xd8,
-+ 0x98, 0x88, 0x98, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x31, 0x2a, 0x24, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x40, 0xb8,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x2b, 0x31, 0x29, 0x25, 0x26,
-+ 0x24, 0x24, 0x38, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x50, 0xe8,
-+ 0x48, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x28, 0x33, 0x28, 0x25, 0x26,
-+ 0x24, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x30, 0xd0, 0x90, 0x90, 0xfc, 0x90, 0x10, 0x50,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x2b, 0x30, 0x2b, 0x25, 0x25,
-+ 0x26, 0x24, 0x38, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x58, 0x48, 0x48,
-+ 0xd4, 0xa4, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x28, 0x30, 0x2b, 0x24, 0x24,
-+ 0x24, 0x25, 0x3a, 0x20, 0x20, 0x23, 0x00, 0x00,
-+ 0x20, 0x20, 0xb8, 0xa0, 0xa0, 0xfc, 0x20, 0xa4,
-+ 0xa4, 0x28, 0x70, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x28, 0x31, 0x28, 0x27, 0x24,
-+ 0x27, 0x39, 0x22, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x2b, 0x31, 0x29, 0x27, 0x25,
-+ 0x25, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50,
-+ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x2a, 0x33, 0x32, 0x2a, 0x2b,
-+ 0x2a, 0x2a, 0x3b, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x29, 0x31, 0x29, 0x25, 0x24,
-+ 0x27, 0x24, 0x39, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x2a, 0x30, 0x28, 0x24, 0x25,
-+ 0x27, 0x25, 0x39, 0x21, 0x23, 0x20, 0x00, 0x00,
-+ 0xf0, 0x90, 0x08, 0xf4, 0x00, 0xf0, 0x90, 0x08,
-+ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x30, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x29, 0x31, 0x29, 0x25, 0x25,
-+ 0x24, 0x24, 0x38, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8,
-+ 0xd0, 0xd0, 0xe8, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0x29, 0x33, 0x34, 0x2b, 0x2a,
-+ 0x2a, 0x2b, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8,
-+ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00,
-+ 0x04, 0x3a, 0x2a, 0x29, 0x34, 0x32, 0x2b, 0x28,
-+ 0x2f, 0x2a, 0x3b, 0x22, 0x25, 0x28, 0x00, 0x00,
-+ 0x70, 0x50, 0x88, 0xfc, 0x20, 0x64, 0xb4, 0x58,
-+ 0xb8, 0x54, 0x94, 0x10, 0x60, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x2b, 0x30, 0x29, 0x25, 0x24,
-+ 0x27, 0x25, 0x38, 0x22, 0x22, 0x24, 0x00, 0x00,
-+ 0x18, 0xe8, 0x24, 0xf4, 0x40, 0xf0, 0xf8, 0x08,
-+ 0xfc, 0xf8, 0x48, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x2a, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x23, 0x22, 0x24, 0x00, 0x00,
-+ 0x20, 0xa8, 0x6c, 0x34, 0xc0, 0xfc, 0x20, 0xf8,
-+ 0xf8, 0x20, 0xfc, 0x54, 0xac, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x24, 0x27,
-+ 0x24, 0x25, 0x3b, 0x20, 0x22, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x88, 0x74,
-+ 0x88, 0x54, 0xfc, 0x00, 0xa8, 0x54, 0x00, 0x00,
-+ 0x01, 0x39, 0x2f, 0x2a, 0x37, 0x30, 0x2b, 0x2a,
-+ 0x2b, 0x3a, 0x23, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa0, 0xf8, 0x08, 0xb8, 0xa0,
-+ 0xb8, 0xb8, 0xa0, 0xb8, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x11,
-+ 0x09, 0x0b, 0x0d, 0x71, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x10,
-+ 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x1c, 0x1b, 0x2a, 0x48, 0x3e,
-+ 0x00, 0x7e, 0x2c, 0x2b, 0x4a, 0x18, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x28,
-+ 0xa4, 0x78, 0x70, 0xa8, 0x24, 0x60, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x0f, 0x08, 0x18, 0x2f, 0x48,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x25, 0x26, 0x3c,
-+ 0x24, 0x24, 0x26, 0x38, 0x60, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x04, 0x04, 0x0f, 0x08, 0x1f, 0x28, 0x4f, 0x08,
-+ 0x0f, 0x1e, 0x12, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x40, 0xf0, 0x40, 0xf0, 0x40,
-+ 0xfc, 0x78, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1e, 0x28, 0x49, 0x7f, 0x08,
-+ 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x10, 0x14, 0x65, 0x29, 0x1b,
-+ 0x15, 0x1d, 0x65, 0x09, 0x11, 0x21, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x90, 0x90, 0xfc, 0x20, 0xf8,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7f, 0x09, 0x0b, 0x15, 0x39,
-+ 0x54, 0x17, 0x10, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x90, 0xa0, 0xfc, 0x20, 0xf8, 0xf8, 0x20, 0xfc,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x12, 0x12, 0x2d, 0x49, 0x08,
-+ 0x7f, 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x3d, 0x5d, 0x05, 0x0f,
-+ 0x18, 0x6f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x78, 0x70, 0x40, 0xf8,
-+ 0x80, 0xf0, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x25, 0x3f, 0x25, 0x3f, 0x25,
-+ 0x2f, 0x2b, 0x2f, 0x2b, 0x21, 0x43, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0x7c, 0xd0, 0xd0, 0x78, 0x50,
-+ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x02, 0x07,
-+ 0x18, 0x6f, 0x08, 0x0f, 0x08, 0x07, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf0,
-+ 0x10, 0x90, 0x90, 0xe4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x05, 0x19,
-+ 0x6f, 0x08, 0x0f, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x60, 0x18,
-+ 0xe4, 0x20, 0xe0, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x00, 0x3d,
-+ 0x08, 0x3f, 0x12, 0x0c, 0x1e, 0x61, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x18, 0xe0,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x10,
-+ 0x4f, 0x20, 0x0b, 0x12, 0x22, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x40,
-+ 0xfc, 0x40, 0xf8, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x03, 0x1c,
-+ 0x1e, 0x10, 0x1f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf0,
-+ 0xf0, 0x10, 0xf0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3f,
-+ 0x04, 0x7f, 0x3f, 0x0e, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf8,
-+ 0x40, 0xfc, 0xf8, 0x40, 0xc0, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x10,
-+ 0x48, 0x20, 0x0b, 0x12, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x40,
-+ 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x02,
-+ 0x3e, 0x02, 0x3e, 0x02, 0x7c, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x80,
-+ 0xf8, 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x08,
-+ 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x20,
-+ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x04, 0x7f,
-+ 0x05, 0x0f, 0x09, 0x7f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x40, 0xfc,
-+ 0x40, 0xe0, 0x20, 0xfc, 0xc0, 0x38, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x1e, 0x12,
-+ 0x3d, 0x0f, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xf8, 0x48,
-+ 0x98, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x10, 0x0b,
-+ 0x46, 0x21, 0x0f, 0x10, 0x23, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x18, 0xf0,
-+ 0x4c, 0xf0, 0xfc, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x3f, 0x14,
-+ 0x7f, 0x1f, 0x1e, 0x1e, 0x12, 0x17, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x40, 0x7c,
-+ 0x90, 0x50, 0x20, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x1e, 0x12,
-+ 0x1e, 0x11, 0x3e, 0x53, 0x1e, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x20, 0xf8,
-+ 0x50, 0xfc, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x7f,
-+ 0x3e, 0x15, 0x6d, 0x07, 0x0f, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xfc,
-+ 0xf8, 0x50, 0x7c, 0xe0, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x0d, 0x79,
-+ 0x2f, 0x79, 0x35, 0x1c, 0x67, 0x18, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xf0, 0x50,
-+ 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x1c, 0x7f,
-+ 0x1c, 0x1c, 0x3e, 0x23, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x7c, 0xd4, 0xfc, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x3e, 0x2a, 0x7f, 0x3e, 0x08,
-+ 0x3c, 0x01, 0x7e, 0x14, 0x3e, 0x43, 0x00, 0x00,
-+ 0x10, 0x10, 0xf8, 0x98, 0x7c, 0x18, 0xf8, 0xd4,
-+ 0x38, 0xb8, 0xd4, 0x94, 0xf0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x3b, 0x2a,
-+ 0x3b, 0x3f, 0x09, 0x35, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xb8, 0xa8,
-+ 0xb8, 0xf8, 0x30, 0x48, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x3f, 0x2e,
-+ 0x3f, 0x2e, 0x35, 0x24, 0x24, 0x5f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xfc, 0x70,
-+ 0xfc, 0x70, 0xa8, 0xf0, 0x80, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x08, 0x3e, 0x2b, 0x7f, 0x3e, 0x08,
-+ 0x3d, 0x00, 0x7e, 0x15, 0x1e, 0x63, 0x00, 0x00,
-+ 0x0c, 0xf4, 0xa8, 0x50, 0xfc, 0x28, 0xd8, 0xf4,
-+ 0x44, 0x78, 0xc8, 0x30, 0x70, 0x8c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x08, 0x7f, 0x3f,
-+ 0x2a, 0x2a, 0x3e, 0x22, 0x22, 0x26, 0x00, 0x00,
-+ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0xf8, 0x28, 0xfc,
-+ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x09, 0x0f, 0x11, 0x7f, 0x0f, 0x08, 0x0f, 0x7e,
-+ 0x02, 0x3e, 0x03, 0x7c, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xfc,
-+ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x10, 0x3f, 0x2b, 0x2b, 0x2f,
-+ 0x2b, 0x2f, 0x2b, 0x2b, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0xc0, 0x40, 0x78, 0x88, 0xf8, 0x58, 0x58,
-+ 0x78, 0x50, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2e,
-+ 0x2a, 0x2e, 0x2a, 0x2a, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0xc8, 0xf8, 0xc8,
-+ 0xf8, 0xb0, 0xb0, 0xd4, 0xd4, 0x8c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x17, 0x1f, 0x2f, 0x4f, 0x09,
-+ 0x7f, 0x1f, 0x13, 0x13, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x18, 0x14, 0xfc, 0x90, 0xa8, 0xc4,
-+ 0xfc, 0xf0, 0x90, 0x90, 0xf0, 0x10, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x14, 0x15, 0x7e, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xa8, 0xa8, 0x48, 0x50, 0x50,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x14, 0x15, 0x7e, 0x14, 0x1d, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x68,
-+ 0x58, 0x4c, 0xc8, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x15, 0x1d, 0x09, 0x3f, 0x2b,
-+ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68, 0x98,
-+ 0x98, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2b,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8,
-+ 0xc8, 0xb0, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x15, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x70,
-+ 0x70, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x14, 0x15, 0x7e, 0x14, 0x1d, 0x09, 0x3f, 0x2b,
-+ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68,
-+ 0x98, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x09, 0x0f, 0x72, 0x04, 0x7f,
-+ 0x07, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x54, 0x54, 0x0c, 0x40, 0xfc,
-+ 0xc0, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2b,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc,
-+ 0x60, 0x50, 0x50, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x70, 0xa8, 0x24, 0x60, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x14, 0x14, 0x7e, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3f, 0x08, 0x7e, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc,
-+ 0xa4, 0xb4, 0xcc, 0xfc, 0x84, 0x18, 0x00, 0x00,
-+ 0x28, 0x28, 0x7f, 0x28, 0x38, 0x13, 0x7c, 0x55,
-+ 0x7d, 0x12, 0x7e, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x50, 0x90, 0x90, 0x94, 0xb4, 0xf4, 0xb8, 0xd0,
-+ 0xd0, 0xe8, 0xa8, 0xa8, 0xc4, 0x84, 0x00, 0x00,
-+ 0x14, 0x15, 0x7e, 0x14, 0x1d, 0x08, 0x3e, 0x2b,
-+ 0x3e, 0x09, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0x68, 0xb0, 0x60,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2b,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x20, 0x50, 0x88, 0xfc,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x28, 0x28, 0x7f, 0x28, 0x39, 0x11, 0x7d, 0x55,
-+ 0x7d, 0x11, 0x7e, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xfc, 0x00, 0xf8, 0xa8,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x2a, 0x29, 0x7d, 0x28, 0x3a, 0x11, 0x7d, 0x54,
-+ 0x7f, 0x11, 0x7d, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x50, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00,
-+ 0x2a, 0x29, 0x7d, 0x28, 0x3a, 0x11, 0x7d, 0x54,
-+ 0x7f, 0x11, 0x7d, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xfc, 0x30, 0xfc, 0xb4, 0xfc, 0x20, 0xfc,
-+ 0x78, 0xd4, 0x70, 0x48, 0xb8, 0x7c, 0x00, 0x00,
-+ 0x28, 0x2f, 0x7c, 0x2b, 0x3a, 0x13, 0x7c, 0x57,
-+ 0x7e, 0x13, 0x7e, 0x12, 0x14, 0x14, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x48, 0xfc,
-+ 0x48, 0x28, 0xb0, 0x94, 0x2c, 0x44, 0x00, 0x00,
-+ 0x01, 0x1f, 0x02, 0x7f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x00, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x3e, 0x12, 0x7f, 0x01, 0x3e, 0x22, 0x3e,
-+ 0x04, 0x3e, 0x24, 0x7f, 0x04, 0x04, 0x00, 0x00,
-+ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0x20, 0xd8, 0x88,
-+ 0x88, 0xd8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x3e, 0x02, 0x02, 0x3e, 0x02,
-+ 0x02, 0x3e, 0x02, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, 0x78, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x3e, 0x15, 0x2d, 0x51, 0x1f, 0x1f,
-+ 0x12, 0x16, 0x16, 0x16, 0x2f, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x50, 0x68, 0x14, 0xf0, 0xf0,
-+ 0x90, 0xd0, 0xd0, 0xd0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x3d, 0x15, 0x2d, 0x42, 0x3e,
-+ 0x02, 0x1e, 0x1e, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x70, 0x50, 0xe8, 0x84, 0xf8,
-+ 0x80, 0xf0, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x04, 0x7f, 0x00, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x24, 0x14, 0x18, 0x7f, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x30, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x24, 0x15, 0x19, 0x7e, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0xe8, 0x08,
-+ 0x28, 0xc8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x00, 0x1c, 0x14, 0x14,
-+ 0x14, 0x15, 0x15, 0x23, 0x20, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x1d, 0x04, 0x14, 0x12, 0x22, 0x49, 0x08,
-+ 0x08, 0x14, 0x16, 0x7a, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2a, 0x2a, 0x54, 0x2a, 0x2a, 0x00,
-+ 0x7e, 0x08, 0x08, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x2e, 0x2a, 0x2a, 0x2a,
-+ 0x2e, 0x24, 0x24, 0x24, 0x3e, 0x23, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x08, 0x3e, 0x00,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x3e, 0x40, 0x3e, 0x04,
-+ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x02, 0x3d, 0x08, 0x7f, 0x1c, 0x2a, 0x4a, 0x1c,
-+ 0x14, 0x14, 0x15, 0x16, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x3e, 0x2a, 0x3e, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x14, 0x0c, 0x12, 0x3f, 0x24,
-+ 0x3a, 0x24, 0x39, 0x22, 0x4c, 0x33, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x2a, 0x3e, 0x2a, 0x3e, 0x08,
-+ 0x06, 0x35, 0x31, 0x54, 0x54, 0x0f, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x3f, 0x2f, 0x2b, 0x2f, 0x3f, 0x1e,
-+ 0x12, 0x1e, 0x12, 0x1e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x12, 0x6d,
-+ 0x2d, 0x1b, 0x7f, 0x35, 0x2a, 0x4a, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0xf8, 0x30, 0xc8, 0x84, 0x00, 0x00,
-+ 0x08, 0x2f, 0x28, 0x7f, 0x2a, 0x5c, 0x1a, 0x6f,
-+ 0x09, 0x0f, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x88, 0xf8, 0xf8, 0xf8, 0xec,
-+ 0x20, 0xe0, 0xe0, 0x40, 0xfc, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x07, 0x3f, 0x2d, 0x37, 0x3f, 0x35, 0x3f,
-+ 0x3f, 0x20, 0x3f, 0x57, 0x17, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x30, 0xc8, 0x84, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x14, 0x3f,
-+ 0x64, 0x3e, 0x3e, 0x24, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x0f, 0x0f, 0x3f, 0x01, 0x7f,
-+ 0x2a, 0x3b, 0x3b, 0x2a, 0x7f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0xc8,
-+ 0xf8, 0xc8, 0xf8, 0xb0, 0xa8, 0xc4, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x1f, 0x10, 0x1f,
-+ 0x17, 0x15, 0x17, 0x11, 0x2f, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xc0, 0x20, 0x00, 0xf0, 0xd0, 0x10,
-+ 0xd0, 0x50, 0xd4, 0x6c, 0x9c, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x13, 0x7e, 0x0b, 0x4b, 0x2b,
-+ 0x2b, 0x32, 0x1c, 0x64, 0x0b, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x30, 0xd0, 0x90, 0xf0, 0xb0, 0xb0,
-+ 0xf0, 0xd0, 0xb4, 0xec, 0x1c, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1e, 0x14, 0x1f, 0x1d, 0x1d,
-+ 0x1f, 0x16, 0x15, 0x27, 0x38, 0x40, 0x00, 0x00,
-+ 0x20, 0xa0, 0xb0, 0xa8, 0xcc, 0xf4, 0x80, 0xf8,
-+ 0xc8, 0xc8, 0x78, 0xc4, 0xb4, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x13, 0x1c, 0x14, 0x1f, 0x1d, 0x1d,
-+ 0x1f, 0x16, 0x15, 0x27, 0x38, 0x40, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8,
-+ 0xfc, 0x98, 0x64, 0xc4, 0xb4, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x19, 0x7f, 0x5b, 0x7f, 0x01, 0x3d,
-+ 0x01, 0x7f, 0x2d, 0x2a, 0x4b, 0x1c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x18, 0xe8, 0x48, 0xf8, 0xd8, 0xd8,
-+ 0xf8, 0x6c, 0x5c, 0x74, 0x94, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x23, 0x3d, 0x29, 0x3f, 0x3b, 0x3b,
-+ 0x3f, 0x2d, 0x2a, 0x2f, 0x31, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x30, 0xfc, 0xb4, 0xfc, 0x78, 0x00,
-+ 0xfc, 0x58, 0x94, 0xb4, 0x64, 0x1c, 0x00, 0x00,
-+ 0x0c, 0x0b, 0x3f, 0x09, 0x15, 0x13, 0x35, 0x2f,
-+ 0x7f, 0x25, 0x37, 0x2a, 0x4b, 0x54, 0x00, 0x00,
-+ 0x00, 0xf8, 0x18, 0xe8, 0x48, 0xf8, 0xd8, 0xd8,
-+ 0xf8, 0x6c, 0x5c, 0x74, 0x94, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1f, 0x22, 0x7c, 0x24, 0x3c,
-+ 0x24, 0x3c, 0x3c, 0x20, 0x3e, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x3c, 0xe0, 0x20, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xf8, 0xa8, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x22, 0x7c, 0x25, 0x3c,
-+ 0x24, 0x3c, 0x3e, 0x20, 0x3f, 0x22, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x1e, 0x22, 0x7c, 0x25, 0x3c,
-+ 0x24, 0x3c, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1f, 0x21, 0x7d, 0x25, 0x3d,
-+ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x08, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7e, 0x22, 0x3f,
-+ 0x22, 0x3e, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00,
-+ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0x20, 0x20, 0xfc,
-+ 0x48, 0x48, 0xf0, 0x10, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x17, 0x1e, 0x23, 0x7d, 0x25, 0x3d,
-+ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x22, 0x7d, 0x24, 0x3d,
-+ 0x24, 0x3c, 0x3e, 0x21, 0x3e, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x20, 0xfc,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7e, 0x24, 0x3d,
-+ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x80, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x40, 0x98,
-+ 0x08, 0xd8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x1e, 0x22, 0x7c, 0x25, 0x3c,
-+ 0x24, 0x3c, 0x3e, 0x20, 0x3f, 0x22, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x20, 0x20, 0xfc, 0x20,
-+ 0x38, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1f, 0x22, 0x7c, 0x25, 0x3c,
-+ 0x24, 0x3d, 0x3e, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54,
-+ 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7c, 0x24, 0x3d,
-+ 0x24, 0x3c, 0x3f, 0x20, 0x3e, 0x21, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x70, 0x50, 0x88, 0x24,
-+ 0xa4, 0xa8, 0x70, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x1f, 0x22, 0x7c, 0x24, 0x3c,
-+ 0x27, 0x3c, 0x3e, 0x21, 0x3f, 0x22, 0x00, 0x00,
-+ 0x90, 0x90, 0x20, 0xfc, 0x90, 0x90, 0x90, 0xd0,
-+ 0xbc, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x19, 0x27, 0x3d, 0x79, 0x2b, 0x3a,
-+ 0x2a, 0x3a, 0x3f, 0x22, 0x3c, 0x21, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0xe8, 0x28, 0x38, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x1e, 0x74, 0x19, 0x62, 0x0f,
-+ 0x77, 0x04, 0x07, 0x07, 0x07, 0x3c, 0x00, 0x00,
-+ 0x20, 0x50, 0xac, 0xd0, 0x68, 0x70, 0x80, 0xe0,
-+ 0xfc, 0x40, 0xc0, 0xd0, 0xe0, 0x38, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x1f, 0x23, 0x7d, 0x25, 0x3d,
-+ 0x24, 0x3c, 0x3f, 0x21, 0x3e, 0x24, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xd0, 0xd0, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x1f, 0x23, 0x7d, 0x27, 0x3c,
-+ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0xbc, 0x14, 0x94, 0x54, 0xd4, 0x2c, 0x40,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x1f, 0x23, 0x7d, 0x25, 0x3c,
-+ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x68, 0x98, 0x18, 0xf8, 0x00,
-+ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x1e, 0x22, 0x7c, 0x24, 0x3c,
-+ 0x25, 0x3c, 0x3e, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x50, 0xfc, 0x50, 0x70, 0xf8, 0xa8, 0xf8, 0x20,
-+ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x22, 0x7c, 0x25, 0x3d,
-+ 0x25, 0x3c, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x1e, 0x23, 0x7d, 0x27, 0x3c,
-+ 0x24, 0x3c, 0x3e, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0xfc, 0x08, 0xfc, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7c, 0x24, 0x3c,
-+ 0x24, 0x3c, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0xfc, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x1a, 0x25, 0x3d, 0x7a, 0x2b, 0x38,
-+ 0x2b, 0x3b, 0x3e, 0x22, 0x3e, 0x24, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xd4, 0x48, 0xd4, 0xfc, 0x48,
-+ 0xfc, 0x48, 0xa8, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7c, 0x27, 0x3c,
-+ 0x24, 0x3f, 0x3f, 0x20, 0x3c, 0x23, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x90, 0xfc, 0x90,
-+ 0xfc, 0x00, 0xfc, 0x50, 0x94, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x1f, 0x23, 0x7d, 0x24, 0x3c,
-+ 0x25, 0x3c, 0x3f, 0x20, 0x3e, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0xf8, 0x20, 0x64, 0xdc, 0x50,
-+ 0xf8, 0x50, 0xfc, 0x50, 0x88, 0x08, 0x00, 0x00,
-+ 0x1e, 0x12, 0x1e, 0x7f, 0x1e, 0x23, 0x0e, 0x0f,
-+ 0x77, 0x04, 0x07, 0x07, 0x06, 0x38, 0x00, 0x00,
-+ 0x38, 0xfc, 0xa8, 0xd8, 0xb0, 0x34, 0xcc, 0xe0,
-+ 0xdc, 0x40, 0xc0, 0xd0, 0xe0, 0x38, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x0a, 0x0a, 0x0a,
-+ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x8c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x24, 0x14, 0x18, 0x7f, 0x08, 0x11, 0x3d, 0x25,
-+ 0x3d, 0x25, 0x3c, 0x27, 0x3c, 0x24, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0xe8, 0x68, 0x68,
-+ 0xd0, 0x10, 0x74, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x48,
-+ 0x3e, 0x22, 0x3f, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x24, 0x3e, 0x24, 0x3f,
-+ 0x05, 0x3b, 0x2f, 0x2d, 0x42, 0x0d, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x50, 0x50, 0x70,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x22, 0x13, 0x12, 0x03, 0x0a, 0x0b,
-+ 0x10, 0x16, 0x25, 0x25, 0x28, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0xf0, 0x40, 0xfc,
-+ 0x24, 0x94, 0x54, 0x44, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x88, 0x88, 0x50,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3d, 0x29, 0x3d, 0x29, 0x3f,
-+ 0x0b, 0x3f, 0x3f, 0x33, 0x45, 0x19, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0x68, 0x68, 0x68, 0x68, 0x78,
-+ 0xb8, 0x98, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xa0, 0x40, 0x60, 0x98, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x4c,
-+ 0x70, 0x40, 0x40, 0x40, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x29, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x50, 0x48, 0xf4, 0x04,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x7e, 0x12, 0x3a, 0x0c, 0x77, 0x04, 0x07,
-+ 0x07, 0x04, 0x07, 0x15, 0x12, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x30, 0xc8, 0xf4, 0x80, 0xe0,
-+ 0xe0, 0x80, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x44, 0x1b, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0x50, 0x90, 0x60, 0x28,
-+ 0x48, 0x90, 0x10, 0x28, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3e, 0x28, 0x3e, 0x29, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x28, 0x3c, 0x28, 0x3c, 0x29, 0x3f,
-+ 0x0a, 0x3e, 0x3e, 0x33, 0x45, 0x1a, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x28, 0x28, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xf8,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0b, 0x3e, 0x3e, 0x32, 0x44, 0x1b, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x08, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0xfc, 0x48, 0x78, 0x48, 0x78,
-+ 0x48, 0xfc, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x50, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3f, 0x3f, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x80, 0xfc,
-+ 0xb4, 0xfc, 0xb4, 0xb4, 0xb4, 0x8c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x7f, 0x1f, 0x02, 0x7f, 0x0f,
-+ 0x17, 0x67, 0x05, 0x07, 0x1a, 0x25, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0xf8, 0xe0, 0x80, 0xfc, 0xf0,
-+ 0xd0, 0xcc, 0x00, 0xf0, 0x90, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x2b, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0x50, 0xa0, 0x70, 0xac, 0xf8,
-+ 0xa8, 0xf8, 0xb0, 0x28, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3d, 0x29, 0x3d, 0x29, 0x3f,
-+ 0x0b, 0x3f, 0x3f, 0x33, 0x45, 0x19, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x00, 0xfc,
-+ 0xb4, 0xb4, 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x29, 0x3c, 0x29, 0x3f, 0x28, 0x3e,
-+ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x40, 0x90, 0xf8, 0x90, 0x68, 0xfc, 0x60, 0x90,
-+ 0x2c, 0xc0, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x0f, 0x7f, 0x07,
-+ 0x1d, 0x67, 0x07, 0x07, 0x1a, 0x25, 0x00, 0x00,
-+ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0xc0,
-+ 0x30, 0xcc, 0xc0, 0xf8, 0x88, 0x70, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x29, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0xfc, 0x54, 0xfc, 0x00, 0xf8,
-+ 0x00, 0xfc, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x50, 0xd0,
-+ 0x28, 0xfc, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x29, 0x3e,
-+ 0x0b, 0x3f, 0x3f, 0x33, 0x45, 0x19, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x50, 0xf8, 0x54, 0x70,
-+ 0xfc, 0x74, 0x54, 0x74, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0b, 0x3f, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x88, 0xdc, 0x88, 0xdc,
-+ 0x00, 0xfc, 0x50, 0x50, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3f, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x54, 0xfc, 0x20, 0xf8, 0x20, 0xfc,
-+ 0x50, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3f,
-+ 0x0b, 0x3f, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0xf8,
-+ 0x68, 0xf8, 0x90, 0xd8, 0x24, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3d, 0x29, 0x3d, 0x2b, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xe0, 0x7c, 0xd4, 0xc8, 0x54, 0xe4, 0x50,
-+ 0x64, 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x29, 0x3f, 0x29, 0x3f, 0x29, 0x3f,
-+ 0x0b, 0x3f, 0x3f, 0x33, 0x46, 0x19, 0x00, 0x00,
-+ 0x20, 0x38, 0xfc, 0x28, 0xd8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x29, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x33, 0x42, 0x0d, 0x00, 0x00,
-+ 0x50, 0xd4, 0x58, 0xd4, 0x4c, 0xf8, 0xa8, 0xf8,
-+ 0xf8, 0x50, 0xf8, 0xfc, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3f, 0x29, 0x3e, 0x29, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x33, 0x44, 0x19, 0x00, 0x00,
-+ 0x20, 0xfc, 0xdc, 0x54, 0xdc, 0x50, 0xfc, 0xf8,
-+ 0x50, 0xfc, 0x68, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3d, 0x29, 0x3d, 0x28, 0x3e,
-+ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x50, 0xfc, 0x50, 0xdc, 0x54, 0xdc, 0x50, 0xfc,
-+ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x07, 0x07, 0x07, 0x07, 0x0e, 0x15, 0x3f,
-+ 0x28, 0x3e, 0x3e, 0x3f, 0x3d, 0x57, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xc0, 0xf0, 0x90, 0x60, 0xfc,
-+ 0xa0, 0xf8, 0xf8, 0xfc, 0xf4, 0x58, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3f, 0x29, 0x3e, 0x29, 0x3f,
-+ 0x0b, 0x3f, 0x3f, 0x33, 0x46, 0x19, 0x00, 0x00,
-+ 0x00, 0xdc, 0xdc, 0xdc, 0x54, 0x20, 0xfc, 0x50,
-+ 0xf8, 0x58, 0xfc, 0xd8, 0xf4, 0x8c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x42, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7e, 0x43, 0x3f,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x54, 0x54, 0x8c, 0x00, 0xf8,
-+ 0x48, 0x50, 0x30, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x42, 0x3e,
-+ 0x23, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x42, 0x3e,
-+ 0x22, 0x3f, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x50,
-+ 0x90, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2f, 0x2a, 0x7f, 0x42, 0x3e,
-+ 0x22, 0x3f, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x50, 0xd0, 0x30, 0xc8, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x3d, 0x34, 0x7e, 0x45, 0x3f,
-+ 0x25, 0x3d, 0x25, 0x3c, 0x27, 0x2c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0xf8, 0x80, 0xf8, 0x48, 0xf8,
-+ 0x58, 0xf8, 0x68, 0x78, 0x88, 0x30, 0x00, 0x00,
-+ 0x02, 0x3d, 0x25, 0x3c, 0x36, 0x7f, 0x45, 0x3c,
-+ 0x27, 0x3d, 0x25, 0x3d, 0x26, 0x2c, 0x00, 0x00,
-+ 0x20, 0xfc, 0x40, 0x78, 0x90, 0xfc, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x48, 0xd8, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x3d, 0x35, 0x7f, 0x42, 0x3f,
-+ 0x25, 0x3d, 0x25, 0x3c, 0x27, 0x2c, 0x00, 0x00,
-+ 0x60, 0xf8, 0x68, 0xf8, 0x68, 0xf8, 0x00, 0xfc,
-+ 0xf8, 0x08, 0xf8, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x3c, 0x24, 0x3d, 0x01, 0x7f,
-+ 0x42, 0x5f, 0x56, 0x5e, 0x43, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xdc, 0x54, 0xdc,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x1e, 0x10,
-+ 0x7f, 0x14, 0x12, 0x27, 0x79, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x10, 0x24,
-+ 0x44, 0x08, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x09,
-+ 0x09, 0x0f, 0x79, 0x09, 0x08, 0x07, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xf0, 0x10, 0x10, 0x64, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01,
-+ 0x7f, 0x01, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x00,
-+ 0x0f, 0x1f, 0x02, 0x7f, 0x02, 0x01, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xc0,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01,
-+ 0x0f, 0x0f, 0x09, 0x7f, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xe0, 0xe0, 0x20, 0xfc, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3d, 0x1f,
-+ 0x03, 0x0c, 0x7f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xf0,
-+ 0x10, 0x60, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01,
-+ 0x7f, 0x02, 0x05, 0x19, 0x66, 0x18, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xf0, 0x08,
-+ 0xfc, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x1f,
-+ 0x04, 0x3f, 0x3f, 0x24, 0x18, 0x60, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xf0,
-+ 0x90, 0xf0, 0xfc, 0x84, 0x98, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x02,
-+ 0x0f, 0x7f, 0x08, 0x0f, 0x08, 0x07, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xf0, 0x90, 0x90, 0xe4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x02,
-+ 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x80,
-+ 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01,
-+ 0x7f, 0x1f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xfc, 0xf0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x08,
-+ 0x7e, 0x18, 0x1d, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x78,
-+ 0x88, 0xa4, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x3f, 0x07,
-+ 0x07, 0x1f, 0x1f, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x10, 0x60, 0x90, 0x64, 0x98, 0x60, 0xc0, 0xc0,
-+ 0xc0, 0xf0, 0xf0, 0xe0, 0x80, 0x78, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x0f,
-+ 0x71, 0x09, 0x31, 0x05, 0x19, 0x67, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0xf0, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x3f, 0x0f,
-+ 0x7f, 0x07, 0x07, 0x7c, 0x07, 0x18, 0x00, 0x00,
-+ 0x10, 0x60, 0x90, 0x64, 0x98, 0xe0, 0xe0, 0xe0,
-+ 0xfc, 0xc0, 0xd8, 0xe0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x3f, 0x2f,
-+ 0x4b, 0x37, 0x3f, 0x07, 0x07, 0x3c, 0x00, 0x00,
-+ 0x10, 0x60, 0x90, 0x64, 0x18, 0xe0, 0xfc, 0xe8,
-+ 0x40, 0xe0, 0xe0, 0xe0, 0xe0, 0x38, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x39, 0x04,
-+ 0x1f, 0x13, 0x1f, 0x1d, 0x1d, 0x73, 0x00, 0x00,
-+ 0x10, 0x60, 0x90, 0x64, 0x18, 0xe8, 0x30, 0x88,
-+ 0xf0, 0x90, 0xf0, 0xd4, 0xcc, 0x04, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x21, 0x3f,
-+ 0x21, 0x2f, 0x29, 0x29, 0x29, 0x21, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0xf8,
-+ 0x08, 0xe8, 0x28, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x20, 0x22,
-+ 0x2f, 0x22, 0x3f, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0x88,
-+ 0xe8, 0x88, 0xf8, 0x88, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x22, 0x24,
-+ 0x26, 0x24, 0x27, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0xc8,
-+ 0xc8, 0x48, 0xc8, 0x88, 0xa8, 0x78, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x20, 0x3f,
-+ 0x2f, 0x29, 0x2f, 0x2a, 0x27, 0x38, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x28, 0x28,
-+ 0xf8, 0xa8, 0x68, 0x28, 0x28, 0x78, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x2e, 0x23, 0x3f, 0x2e,
-+ 0x3a, 0x3e, 0x3a, 0x3a, 0x3e, 0x39, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0xe8, 0x88, 0xe8, 0xe8,
-+ 0xf8, 0xb8, 0xf8, 0xf8, 0x98, 0xf8, 0x00, 0x00,
-+ 0x02, 0x21, 0x2c, 0x33, 0x29, 0x23, 0x2c, 0x3f,
-+ 0x28, 0x08, 0x0f, 0x08, 0x08, 0x07, 0x00, 0x00,
-+ 0x40, 0x48, 0xa8, 0x98, 0x48, 0x28, 0x88, 0xf8,
-+ 0x08, 0x70, 0x80, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f,
-+ 0x22, 0x2c, 0x37, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf8,
-+ 0x88, 0x98, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x11, 0x3d, 0x25, 0x25, 0x3d, 0x25,
-+ 0x24, 0x24, 0x3d, 0x25, 0x06, 0x18, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xd0, 0xd0, 0x68, 0x78, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x2b, 0x3e, 0x2a, 0x3e, 0x18,
-+ 0x1a, 0x1a, 0x1d, 0x2f, 0x29, 0x47, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xfc, 0x40, 0x50, 0x50, 0x50,
-+ 0xa0, 0xa0, 0x50, 0x88, 0x04, 0xfc, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x48,
-+ 0x7e, 0x12, 0x3a, 0x04, 0x1b, 0x62, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xa0,
-+ 0x68, 0x68, 0xb4, 0xbc, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x18,
-+ 0x1a, 0x1a, 0x1d, 0x2f, 0x28, 0x47, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0xb8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0xc8, 0xb8, 0x88, 0x9c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x11, 0x3e, 0x2b, 0x3f, 0x2b, 0x3f, 0x19,
-+ 0x1b, 0x1b, 0x1d, 0x2f, 0x28, 0x47, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xd8, 0xd8,
-+ 0xe8, 0x48, 0x48, 0x1c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x11, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x19,
-+ 0x1d, 0x1d, 0x1b, 0x2f, 0x28, 0x47, 0x00, 0x00,
-+ 0x20, 0xfc, 0x98, 0xe8, 0xd8, 0xf8, 0x20, 0xfc,
-+ 0x54, 0xfc, 0x04, 0x0c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x17, 0x1f, 0x1f, 0x1f, 0x19,
-+ 0x17, 0x17, 0x27, 0x21, 0x46, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x18, 0x14, 0xfc, 0x90, 0xa8, 0xc4,
-+ 0xf0, 0xf0, 0xf0, 0xa8, 0xfc, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x38, 0x28,
-+ 0x28, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xa0, 0xa0, 0x3c, 0x20,
-+ 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xa8, 0xa4, 0x24, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x40, 0x40, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0xc8,
-+ 0x24, 0x20, 0x00, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x20, 0x20, 0xfc, 0x48,
-+ 0x48, 0xf0, 0x90, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0x78, 0x90, 0xfc, 0x80, 0xf8, 0xc8,
-+ 0xc8, 0xc8, 0xd8, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0x90, 0xfc, 0x90, 0xb8, 0xb8,
-+ 0xb8, 0xd4, 0xd4, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x0c, 0xf0, 0x20, 0x28, 0xc8, 0x30, 0x30, 0x48,
-+ 0xf4, 0x20, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x49, 0x21, 0x0a, 0x14, 0x23, 0x27, 0x08,
-+ 0x3f, 0x09, 0x0f, 0x0f, 0x14, 0x22, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xd4, 0x64, 0x80, 0xc0, 0x80,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0x90, 0x48, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3f, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x48, 0x88, 0xa8, 0xa8, 0xa8, 0xe8, 0xa8, 0xe8,
-+ 0xe8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x08, 0xd0, 0x70, 0xa8, 0x20, 0xfc, 0x60, 0xa0,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc,
-+ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0x98, 0x88, 0xd8, 0x88, 0x88, 0xf8,
-+ 0x68, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x90,
-+ 0x94, 0xf8, 0x90, 0x94, 0xd4, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x25, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0xa8, 0x00, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x05, 0x3a, 0x2e, 0x29, 0x42, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0xdc, 0x50, 0x50, 0xdc, 0x50,
-+ 0x70, 0xdc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2b, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x41, 0x00, 0x00,
-+ 0x20, 0x50, 0xf8, 0x90, 0x68, 0xfc, 0x60, 0xb0,
-+ 0xcc, 0x20, 0xc8, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3b, 0x2f, 0x2a, 0x41, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xa8, 0xe8, 0x84, 0x94, 0xc8,
-+ 0xc8, 0xc0, 0x50, 0x48, 0x44, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3b, 0x2f, 0x2a, 0x41, 0x00, 0x00,
-+ 0x20, 0x38, 0x20, 0xfc, 0xa8, 0xf8, 0xa4, 0x9c,
-+ 0xf0, 0xd0, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x88, 0x74, 0x00, 0xf8, 0x10,
-+ 0x20, 0x58, 0xd4, 0xc4, 0x50, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x05, 0x3b, 0x2f, 0x29, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xd8, 0x48, 0x00, 0xf8,
-+ 0x28, 0x28, 0xd0, 0x10, 0x28, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x05, 0x3b, 0x2f, 0x2a, 0x42, 0x00, 0x00,
-+ 0x28, 0x24, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xe8,
-+ 0xb0, 0xf0, 0x94, 0x2c, 0x4c, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xf8, 0x20,
-+ 0x50, 0xd8, 0xc4, 0x54, 0x50, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x70, 0x50, 0x50, 0x88, 0xfc, 0x30, 0xf8, 0xb8,
-+ 0xd8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x50,
-+ 0xf8, 0x8c, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0xa8, 0xa8, 0xfc, 0xa8, 0xb8, 0x80, 0xfc, 0x20,
-+ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3b, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xb8, 0xe8, 0xf8,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x1c, 0x2b, 0x7e, 0x2f, 0x3e, 0x2f,
-+ 0x3f, 0x0b, 0x3e, 0x3e, 0x35, 0x48, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0xe8, 0xa8, 0xe8,
-+ 0x78, 0x50, 0x94, 0xdc, 0x2c, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xd8, 0x88, 0xf8, 0x00,
-+ 0xf8, 0xe8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xf8, 0xe8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x54, 0x54, 0xfc, 0x20, 0xa8, 0xa8,
-+ 0x24, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x05, 0x3b, 0x2f, 0x29, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xd0, 0x7c, 0x74, 0xf4, 0x34,
-+ 0xf4, 0x74, 0x7c, 0xd0, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x94, 0x54, 0xf4, 0x2c, 0x40,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x11, 0x1c, 0x28, 0x7f, 0x2a, 0x3f, 0x2b,
-+ 0x3f, 0x05, 0x3f, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x10, 0xd0, 0x10, 0x3c, 0xf4, 0xb4, 0xfc, 0xf4,
-+ 0xf4, 0xfc, 0xb4, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8,
-+ 0xf8, 0xa8, 0xf0, 0x68, 0xa4, 0x60, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x08, 0x7f, 0x1e, 0x26, 0x47,
-+ 0x3f, 0x09, 0x0f, 0x0f, 0x14, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xc8, 0x84,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0x90, 0x48, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x50, 0xfc, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x25, 0x7f, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x05, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0xfc, 0x54, 0xfc, 0x00, 0xf8,
-+ 0x00, 0xfc, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x50, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x40, 0x60, 0x90, 0xf8, 0xfc, 0xd8, 0x68, 0xf8,
-+ 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x90, 0x00, 0x00,
-+ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2b, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x60, 0xf8, 0x68, 0xf8, 0x68, 0xf8, 0x00, 0xfc,
-+ 0xf8, 0x88, 0xf8, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2b, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0x20, 0xf8, 0xfc, 0xd0, 0xf8,
-+ 0x94, 0xf0, 0xf0, 0xa8, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x05, 0x3b, 0x2f, 0x2a, 0x41, 0x00, 0x00,
-+ 0x20, 0x38, 0xfc, 0x68, 0xd8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00,
-+ 0x01, 0x0f, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x15,
-+ 0x12, 0x20, 0x07, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0xf8, 0x48,
-+ 0xa8, 0x30, 0xc0, 0x40, 0x44, 0x3c, 0x00, 0x00,
-+ 0x02, 0x1f, 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x07, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0x00, 0xf8,
-+ 0x08, 0x88, 0xf0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x39, 0x09, 0x09, 0x09, 0x19, 0x15,
-+ 0x15, 0x23, 0x20, 0x43, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x24, 0x24, 0x24, 0x7e, 0x0c, 0x0c,
-+ 0x14, 0x14, 0x24, 0x45, 0x05, 0x0e, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x12, 0x14, 0x14, 0x1c,
-+ 0x14, 0x14, 0x24, 0x25, 0x45, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x13, 0x12, 0x13, 0x13, 0x13,
-+ 0x12, 0x13, 0x26, 0x25, 0x49, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x3f,
-+ 0x20, 0x3f, 0x0d, 0x3d, 0x32, 0x4d, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x28, 0x28, 0x28, 0xfc,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x48, 0x0c,
-+ 0x0c, 0x15, 0x16, 0x25, 0x41, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x22, 0x40, 0x1c, 0x04, 0x14,
-+ 0x14, 0x14, 0x22, 0x23, 0x41, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x01, 0x0f, 0x0a, 0x7f, 0x05, 0x1f, 0x64, 0x07,
-+ 0x07, 0x07, 0x07, 0x15, 0x12, 0x20, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xfc, 0x40, 0xf0, 0x4c, 0xc0,
-+ 0xc0, 0xfc, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00,
-+ 0x15, 0x0e, 0x19, 0x3f, 0x21, 0x4f, 0x08, 0x0f,
-+ 0x0f, 0x0f, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00,
-+ 0xa8, 0x70, 0xc8, 0xfc, 0x08, 0xe0, 0x20, 0xe0,
-+ 0xe0, 0xfc, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x09, 0x7f, 0x09, 0x09, 0x3d,
-+ 0x25, 0x25, 0x25, 0x3e, 0x22, 0x04, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x06, 0x38, 0x28, 0x28, 0x3f, 0x28, 0x2a,
-+ 0x26, 0x26, 0x3a, 0x63, 0x3d, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x19, 0x25, 0x7b, 0x09, 0x09,
-+ 0x3f, 0x09, 0x09, 0x0e, 0x72, 0x04, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x22, 0x3e, 0x23, 0x3e, 0x3f,
-+ 0x20, 0x3f, 0x0d, 0x3d, 0x31, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x4c,
-+ 0x70, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x7c, 0x00, 0x7e,
-+ 0x12, 0x12, 0x12, 0x1d, 0x11, 0x12, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x14, 0x12, 0x22, 0x54,
-+ 0x0c, 0x08, 0x0c, 0x15, 0x21, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xbc, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x7e, 0x00, 0x3e,
-+ 0x22, 0x22, 0x3e, 0x23, 0x21, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x7d, 0x08, 0x28, 0x3e, 0x28,
-+ 0x48, 0x7f, 0x08, 0x09, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x11, 0x12, 0x27, 0x4c, 0x0f, 0x14, 0x17, 0x37,
-+ 0x54, 0x17, 0x13, 0x1f, 0x1c, 0x11, 0x00, 0x00,
-+ 0x00, 0x3c, 0x80, 0x80, 0x80, 0xbc, 0x88, 0xe8,
-+ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x98, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x3c, 0x65, 0x05, 0x06, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x0c, 0x16, 0x75, 0x15, 0x14, 0x7f, 0x15, 0x15,
-+ 0x1e, 0x72, 0x17, 0x1b, 0x11, 0x31, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, 0x78, 0x7c,
-+ 0x40, 0x7c, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00,
-+ 0x06, 0x38, 0x7f, 0x0c, 0x79, 0x1f, 0x04, 0x07,
-+ 0x07, 0x07, 0x07, 0x15, 0x12, 0x20, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x70, 0xb4, 0xec, 0x20, 0xe0,
-+ 0xe0, 0xfc, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x22, 0x23, 0x23, 0x46, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x23, 0x23, 0x26, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x2a, 0x2a, 0x2a, 0x2a, 0x3d,
-+ 0x4d, 0x48, 0x08, 0x0f, 0x71, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x18, 0x15, 0x25, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x14, 0x14, 0x14, 0x7f, 0x14, 0x14, 0x7f, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x23, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x7f, 0x00, 0x3c, 0x24, 0x3c, 0x00, 0x3e,
-+ 0x04, 0x0e, 0x78, 0x09, 0x09, 0x1a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x1c, 0x1a, 0x29, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x7f, 0x6b, 0x5d, 0x7f,
-+ 0x18, 0x1c, 0x2a, 0x49, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x2a, 0x2a, 0x3e, 0x2a, 0x3e,
-+ 0x14, 0x24, 0x7e, 0x05, 0x05, 0x06, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x14, 0x17, 0x29, 0x2e,
-+ 0x72, 0x2c, 0x26, 0x2b, 0x31, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x77, 0x55, 0x77, 0x00, 0x3c, 0x00, 0x7e,
-+ 0x10, 0x1c, 0x24, 0x05, 0x05, 0x1a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x7f, 0x08, 0x3e, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x14, 0x7f, 0x1a, 0x29, 0x5f, 0x04,
-+ 0x07, 0x07, 0x07, 0x07, 0x15, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x60, 0x9c, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x0c, 0x24, 0x2a, 0x49, 0x14, 0x3e, 0x00, 0x7e,
-+ 0x36, 0x5a, 0x36, 0x5b, 0x13, 0x36, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x06, 0x3c, 0x2a, 0x49, 0x14, 0x3c, 0x08, 0x14,
-+ 0x3e, 0x08, 0x7e, 0x0d, 0x13, 0x62, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x1c, 0x14, 0x22, 0x3d, 0x40, 0x1c, 0x14, 0x22,
-+ 0x7f, 0x2e, 0x2e, 0x2f, 0x71, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x41, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3f, 0x23, 0x26, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x12, 0x12, 0x7e, 0x48, 0x7e, 0x5a,
-+ 0x36, 0x5a, 0x36, 0x5b, 0x13, 0x6e, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x6b, 0x08, 0x6f, 0x14, 0x12, 0x3f, 0x52,
-+ 0x1e, 0x12, 0x1e, 0x13, 0x13, 0x16, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x13, 0x1c, 0x11, 0x0f, 0x2e, 0x2a, 0x2e, 0x2e,
-+ 0x2a, 0x2e, 0x3f, 0x2d, 0x13, 0x62, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x3e, 0x3e, 0x22,
-+ 0x3e, 0x00, 0x7f, 0x0d, 0x13, 0x62, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x10, 0x1e, 0x1a, 0x24, 0x54, 0x18, 0x7e, 0x28,
-+ 0x7f, 0x2a, 0x2a, 0x3f, 0x21, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x14, 0x7f, 0x3e, 0x09, 0x0f,
-+ 0x0f, 0x0f, 0x0f, 0x0f, 0x15, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd4, 0xb4, 0x0c, 0xe0,
-+ 0xe0, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x2a, 0x2a, 0x3f, 0x2a, 0x2e,
-+ 0x2a, 0x20, 0x3e, 0x57, 0x57, 0x21, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xec, 0xc4, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0a, 0x04, 0x7f, 0x1d, 0x64, 0x3f,
-+ 0x2d, 0x37, 0x2f, 0x2b, 0x2f, 0x23, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0xf8, 0x48, 0x78, 0x7c,
-+ 0x40, 0x7c, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00,
-+ 0x12, 0x14, 0x3f, 0x68, 0x3e, 0x28, 0x3e, 0x28,
-+ 0x3f, 0x04, 0x3e, 0x2f, 0x29, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x06, 0x3a, 0x2a, 0x1c, 0x7f, 0x1c, 0x2a, 0x7e,
-+ 0x2a, 0x3e, 0x2a, 0x3f, 0x21, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x55, 0x32, 0x3f, 0x62, 0x3e,
-+ 0x22, 0x3e, 0x2a, 0x29, 0x49, 0x1a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x0a, 0x11, 0x1a, 0x19, 0x3f, 0x21, 0x4f, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x15, 0x22, 0x00, 0x00,
-+ 0xb0, 0x90, 0xb0, 0xb0, 0xfc, 0x08, 0xe0, 0xe0,
-+ 0x20, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x3b, 0x2a, 0x3b, 0x3b, 0x2a, 0x3b, 0x1b,
-+ 0x24, 0x7f, 0x0a, 0x1e, 0x0d, 0x31, 0x00, 0x00,
-+ 0x10, 0xa0, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x3c,
-+ 0xa0, 0xbc, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x14, 0x3f,
-+ 0x68, 0x3e, 0x3e, 0x28, 0x3f, 0x21, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, 0x78, 0x7c,
-+ 0x40, 0x7c, 0x34, 0xfc, 0xc4, 0x18, 0x00, 0x00,
-+ 0x13, 0x17, 0x6b, 0x1b, 0x7f, 0x3a, 0x57, 0x1f,
-+ 0x0f, 0x0f, 0x0f, 0x0f, 0x15, 0x22, 0x00, 0x00,
-+ 0x90, 0xd4, 0xe8, 0x98, 0xfc, 0xb8, 0xd4, 0xf0,
-+ 0xe0, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x22, 0x21, 0x2c, 0x23,
-+ 0x38, 0x25, 0x23, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x48, 0x48, 0x68, 0x98,
-+ 0x98, 0x48, 0x28, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x1e, 0x11, 0x7f, 0x57, 0x4f, 0x7b,
-+ 0x6f, 0x57, 0x73, 0x4b, 0x7e, 0x42, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0xe8, 0x28, 0xe8,
-+ 0xb0, 0xf0, 0xb4, 0x2c, 0x4c, 0x04, 0x00, 0x00,
-+ 0x01, 0x3d, 0x2a, 0x3f, 0x26, 0x3f, 0x2b, 0x3f,
-+ 0x22, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x7c, 0xf8, 0xd8, 0x78, 0xa8, 0xf8,
-+ 0x08, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x03, 0x0c, 0x71, 0x1f, 0x12, 0x1f, 0x12,
-+ 0x1f, 0x14, 0x17, 0x24, 0x27, 0x58, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xfc, 0x40, 0xf8, 0x48,
-+ 0xf8, 0x4c, 0xf0, 0x40, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x17, 0x17,
-+ 0x1c, 0x2f, 0x27, 0x40, 0x1f, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x70, 0x44,
-+ 0xbc, 0xf8, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x27, 0x47,
-+ 0x19, 0x09, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x70, 0x44,
-+ 0x3c, 0x20, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x27, 0x5e, 0x07,
-+ 0x14, 0x17, 0x1f, 0x7f, 0x06, 0x78, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x74, 0x3c, 0xe0,
-+ 0x20, 0xe0, 0xf0, 0xfc, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x2a, 0x3f, 0x2b, 0x2b, 0x3f,
-+ 0x34, 0x3d, 0x36, 0x54, 0x5d, 0x33, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0xfc, 0x48, 0x78, 0x48, 0x78,
-+ 0x48, 0xfc, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x23, 0x4e, 0x1f,
-+ 0x17, 0x1f, 0x13, 0x1d, 0x1f, 0x10, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0xe4, 0x3c, 0xf0,
-+ 0xd0, 0xf0, 0x90, 0x50, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x2f, 0x4e, 0x32,
-+ 0x1c, 0x1e, 0x10, 0x1f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x70, 0x44, 0x3c,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x27, 0x4e, 0x1e,
-+ 0x13, 0x1e, 0x1e, 0x7e, 0x1a, 0x66, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x74, 0x3c, 0x10,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x09, 0x19, 0x27, 0x05, 0x19,
-+ 0x63, 0x0e, 0x31, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x30, 0xc8, 0x40, 0x30,
-+ 0xec, 0x20, 0x40, 0xc0, 0x20, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x2a, 0x2a, 0x5d, 0x1a, 0x29,
-+ 0x4e, 0x12, 0x2c, 0x45, 0x1b, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x50, 0x50, 0x88, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x08, 0x7f, 0x10,
-+ 0x1e, 0x32, 0x4c, 0x05, 0x1b, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x50, 0x50, 0x88, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x2a, 0x2a, 0x5d, 0x1c, 0x2a,
-+ 0x4e, 0x12, 0x2c, 0x44, 0x1a, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xa0, 0xb8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x2a, 0x2a, 0x5d, 0x1c, 0x2a,
-+ 0x4e, 0x12, 0x2c, 0x44, 0x1b, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xe8, 0xa8, 0xa8, 0xe8,
-+ 0xb0, 0x80, 0x84, 0x7c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x17, 0x17, 0x1a, 0x11,
-+ 0x1f, 0x1f, 0x21, 0x3f, 0x42, 0x0c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0x38, 0xbc, 0xd4, 0x40,
-+ 0x7c, 0x78, 0xc0, 0x7c, 0x40, 0x40, 0x00, 0x00,
-+ 0x0a, 0x11, 0x1a, 0x19, 0x3f, 0x24, 0x5f, 0x07,
-+ 0x7f, 0x0f, 0x0f, 0x09, 0x0f, 0x38, 0x00, 0x00,
-+ 0xb0, 0x90, 0xb0, 0xb0, 0xfc, 0x48, 0xf0, 0xc0,
-+ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x38, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x2a, 0x49, 0x0a,
-+ 0x0d, 0x79, 0x05, 0x07, 0x39, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x28, 0x48, 0x88, 0x30, 0x80,
-+ 0x60, 0x3c, 0xc0, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x2a, 0x4d, 0x1c,
-+ 0x6b, 0x2e, 0x1c, 0x6b, 0x08, 0x18, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x06, 0x38, 0x09, 0x7f, 0x1c, 0x2a, 0x49, 0x1c,
-+ 0x2a, 0x6d, 0x1d, 0x6b, 0x09, 0x19, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x98, 0xe8, 0xb8, 0xc8, 0xf8,
-+ 0x20, 0xfc, 0x54, 0xec, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8, 0x20,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x2a, 0x2e, 0x3b, 0x3f, 0x08, 0x3e,
-+ 0x0c, 0x71, 0x1f, 0x2e, 0x2e, 0x40, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0x90, 0x50, 0x7c, 0xd4, 0x94,
-+ 0xd4, 0x54, 0xe4, 0x24, 0x44, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x00, 0x78, 0x48, 0x48, 0x78,
-+ 0x10, 0x58, 0x54, 0x94, 0x10, 0x30, 0x00, 0x00,
-+ 0x09, 0x05, 0x3f, 0x27, 0x47, 0x1f, 0x19, 0x15,
-+ 0x1f, 0x3f, 0x01, 0x7f, 0x24, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0xc8, 0xc0, 0xf0, 0x30, 0x50,
-+ 0xf0, 0xf8, 0x00, 0xfc, 0x88, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x48, 0x30, 0xfc, 0x00, 0x78,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x12, 0x1a, 0x2f, 0x5f, 0x1f, 0x1b, 0x2e, 0x6f,
-+ 0x2f, 0x22, 0x3f, 0x2f, 0x2b, 0x30, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xe0, 0xbc, 0xe8, 0xe8, 0xa8,
-+ 0x98, 0x10, 0xd8, 0xa8, 0xc4, 0x84, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x17, 0x1f, 0x2f, 0x4f, 0x0f,
-+ 0x0d, 0x0f, 0x1f, 0x7f, 0x24, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0x14, 0x7c, 0x90, 0xb0, 0xc8, 0xe4,
-+ 0x60, 0xe0, 0xf0, 0xfc, 0x88, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x2e, 0x3b, 0x3f, 0x09, 0x3e,
-+ 0x0c, 0x70, 0x1e, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0xfc, 0x5c, 0xfc, 0xf8,
-+ 0x88, 0xf8, 0xf8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x02, 0x12, 0x0a, 0x7f, 0x11, 0x11, 0x3f, 0x51,
-+ 0x15, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x90, 0xa0, 0xfc, 0x10, 0x08, 0xf4, 0x14,
-+ 0x50, 0x50, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x14, 0x55, 0x36, 0x7f, 0x0a, 0x29, 0x7f, 0x2a,
-+ 0x3e, 0x3e, 0x3e, 0x2b, 0x2a, 0x27, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0x20, 0xfc, 0x20, 0x28, 0x28,
-+ 0x68, 0x70, 0x90, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x14, 0x55, 0x36, 0x7f, 0x0a, 0x29, 0x7f, 0x2a,
-+ 0x3e, 0x3e, 0x3e, 0x2a, 0x2a, 0x26, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3e, 0x02, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x22, 0x3e, 0x22, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x80, 0xf8, 0x88, 0xf8,
-+ 0x88, 0x88, 0xf8, 0x88, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x08, 0x7f, 0x1e, 0x26, 0x5f,
-+ 0x1e, 0x3e, 0x3e, 0x22, 0x3e, 0x21, 0x00, 0x00,
-+ 0x20, 0x20, 0x7c, 0xc8, 0x30, 0x30, 0xcc, 0xf0,
-+ 0xf0, 0xf8, 0xf8, 0x88, 0xfc, 0xfc, 0x00, 0x00,
-+ 0x2a, 0x49, 0x7f, 0x5d, 0x6b, 0x49, 0x1f, 0x1e,
-+ 0x32, 0x22, 0x3a, 0x3a, 0x22, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xcc, 0xf0, 0xf0,
-+ 0xf8, 0x88, 0xf8, 0xf8, 0x84, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3e, 0x22,
-+ 0x3e, 0x24, 0x15, 0x1f, 0x1a, 0x65, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0xa8, 0xa0, 0xf8, 0xc8,
-+ 0xd0, 0xb0, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x1e, 0x12, 0x1e, 0x0f, 0x73,
-+ 0x06, 0x19, 0x07, 0x79, 0x00, 0x07, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x50, 0x70, 0x8c, 0xe0,
-+ 0x40, 0x80, 0xe0, 0x9c, 0xc0, 0x00, 0x00, 0x00,
-+ 0x02, 0x11, 0x09, 0x08, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x11, 0x11, 0x1f, 0x21, 0x21, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x40, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf4, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x36, 0x22, 0x36, 0x22, 0x3e, 0x2a, 0x2a,
-+ 0x3e, 0x2a, 0x3d, 0x29, 0x3e, 0x48, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0x88, 0x04, 0xc4, 0x3c, 0x00, 0x00,
-+ 0x08, 0x1e, 0x12, 0x1e, 0x1e, 0x1e, 0x3f, 0x3f,
-+ 0x25, 0x3f, 0x7f, 0x12, 0x12, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x7d, 0x15, 0x15, 0x2d, 0x48,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x70, 0x50, 0x50, 0xe8, 0x24,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x24, 0x2a, 0x33,
-+ 0x3f, 0x24, 0x2a, 0x33, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0xfc, 0x48, 0xa8, 0x28,
-+ 0xf8, 0x48, 0xa8, 0x28, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2a, 0x2a, 0x35,
-+ 0x3f, 0x2a, 0x2a, 0x35, 0x3f, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0x20, 0xe4, 0xa4, 0xa8, 0xb0,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0xc8, 0x78, 0x48, 0x48,
-+ 0x78, 0x48, 0x48, 0x48, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0x28, 0xa8, 0x48, 0xb0, 0x00,
-+ 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00, 0xf8,
-+ 0x28, 0x28, 0x30, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0xf8, 0x48, 0x48, 0x78,
-+ 0x64, 0x68, 0x50, 0x50, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x0e, 0x79, 0x09, 0x7f, 0x26,
-+ 0x29, 0x3f, 0x26, 0x29, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x88, 0x30, 0xf0, 0xfc, 0x48,
-+ 0xa8, 0xf8, 0x48, 0xa8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0x48, 0x48, 0xfc,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0xc8, 0x78, 0x10, 0x50,
-+ 0x5c, 0x50, 0x50, 0x70, 0x90, 0x0c, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0xc0, 0x7c, 0x58, 0x54,
-+ 0x7c, 0x50, 0x7c, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, 0x20,
-+ 0xfc, 0xd4, 0xfc, 0x84, 0x84, 0x8c, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0xb4, 0xfc, 0x00, 0x78, 0x00, 0xfc,
-+ 0x20, 0x38, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x7f, 0x08, 0x0f, 0x3f, 0x12,
-+ 0x7f, 0x1e, 0x1e, 0x1e, 0x12, 0x16, 0x00, 0x00,
-+ 0x00, 0x80, 0xe0, 0xfc, 0x20, 0xe0, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf0, 0xf4, 0x7c, 0x00, 0x00,
-+ 0x02, 0x07, 0x19, 0x7f, 0x12, 0x1e, 0x3a, 0x7e,
-+ 0x3a, 0x3a, 0x7e, 0x0a, 0x3a, 0x01, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0xf0, 0x90, 0xf0, 0x80, 0xf8,
-+ 0xd8, 0xa8, 0xd8, 0xfc, 0x84, 0xfc, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x3b, 0x2a, 0x3b,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xb8, 0xa8, 0xb8,
-+ 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xb0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x3f, 0x08, 0x3e, 0x08, 0x0f,
-+ 0x70, 0x3f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xf8, 0x20, 0xf8, 0x20, 0xfc,
-+ 0x00, 0xf8, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x08, 0x0b, 0x00, 0x00,
-+ 0x98, 0xe0, 0x84, 0x7c, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0xfc, 0xd8, 0x04, 0x00, 0x00,
-+ 0x20, 0x10, 0x11, 0x46, 0x21, 0x2f, 0x02, 0x77,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x90, 0x60, 0x80, 0xf8, 0x40, 0xfc,
-+ 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x11, 0x16, 0x10, 0x7f, 0x11,
-+ 0x12, 0x17, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x40, 0x78, 0xc8, 0x30, 0xa0, 0xc0, 0x00, 0xf8,
-+ 0x40, 0xfc, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00
-+};
-diff -Nur linux_c860_org/drivers/video/shepherdLogoMsg.c linux/drivers/video/shepherdLogoMsg.c
---- linux_c860_org/drivers/video/shepherdLogoMsg.c 2003-07-12 18:18:36.000000000 +0900
-+++ linux/drivers/video/shepherdLogoMsg.c 2004-06-10 21:09:11.000000000 +0900
-@@ -2,147 +2,257 @@
- #ifndef __initdata
- #define __initdata
- #endif
--static const int logo_msg_width __initdata = 20;
--static const int logo_msg_height __initdata = 140;
--static const unsigned short logo_msg_data[20*140] __initdata ={
-- 0xffff,0x3186,0x0000,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x18e3,
-- 0xffff,0x39e7,0x10a2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x18c3,0x0000,0x0000,0x18c3,0x2104,0x18e3,0x18e3,0x2104,0x18c3,0x0000,0x0861,
-- 0xad37,0x83f3,0x83f3,0x8bf3,0x8bf3,0x8bf3,0x8bf3,0x8bf3,0x8c33,0x7b91,0x0862,0x0862,0x7b90,0x8c33,0x8bf3,0x8bf3,0x8c33,0x7b91,0x1062,0x0841,
-- 0xb558,0xa4b6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4f7,0xa4d6,0x83f3,0x1082,0x1082,0x9454,0xa4d6,0xa4d6,0xa4f7,0xa4d6,0x83f3,0x1082,0x0841,
-- 0xf79e,0xf77e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xe73d,0x8c33,0x1082,0x18c3,0xd6ba,0xf79e,0xf79e,0xf79e,0xe73d,0x8c33,0x1082,0x0841,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xf79e,0x8c34,0x1082,0x0841,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x0841,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x0841,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xe71c,0xffff,0xffff,0xffff,0xf79e,0x9454,0x1082,0x0841,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x10a2,0xce59,0xffff,0xffff,0xffff,0xf79e,0x83d2,0x0862,0x0841,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x9454,0x20e4,0x0000,0x3186,0xd69a,0xef7d,0xef7d,0xc639,0x18e4,0x0000,0x2104,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xa4d6,0x7bb1,0x3166,0x18c3,0x2124,0x2124,0x2124,0x2104,0x1062,0x20e4,0xbdf7,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad37,0x9475,0x9cb5,0xb5b7,0x2965,0x10a2,0x1082,0x20e4,0x7370,0x9475,0xffff,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73d,0xad37,0xa4d6,0xa4f7,0x9474,0x9454,0x9454,0x8c34,0xad17,0xe71d,0xffff,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xef3d,0xad17,0xa4b6,0xa4b6,0xad17,0xef3d,0xf7bf,0xffff,0xffff,
-- 0xffff,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xd69a,0xd69a,0xd69a,0xd69a,0xdefb,0xdefb,0xdefb,0xdefb,
-- 0xffff,0x39e7,0x1082,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10a2,0x2124,
-- 0xf79e,0x39c7,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x2124,
-- 0xb558,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c13,0x9454,0xdefb,
-- 0xb558,0x9cb6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4b6,0xa4f7,0xffff,
-- 0xf79e,0xf77e,0xf79e,0xf79e,0xef7e,0xd6ba,0xce7a,0xd69a,0xd69a,0xce7a,0xd6ba,0xef7e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf77e,0xf79e,0xffff,
-- 0xffff,0xffff,0xffff,0xf79e,0xce79,0x3186,0x10a2,0x2104,0x2104,0x10a2,0x3186,0xce79,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xce79,0x39e7,0x18e3,0x20e4,0x18c3,0x0000,0x0000,0x18c3,0x2104,0x18e3,0x39e7,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xe73c,0x31a6,0x0000,0x18e4,0x83f2,0x83f2,0x1062,0x0862,0x8c12,0xc618,0x2965,0x0000,0x39c7,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xb5b7,0x0841,0x18c3,0x83f2,0xa4d6,0x83f3,0x1082,0x1082,0x9454,0xa4d7,0x8c53,0x2124,0x1082,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf7be,0x2945,0x0841,0x83d1,0xef5e,0xef5d,0x8c33,0x1082,0x18c3,0xce7a,0xad17,0x9c75,0x83f2,0x1082,0x31a6,0xe73c,0xffff,0xffff,0xffff,0xffff,
-- 0xe73d,0x1082,0x1082,0xce7a,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xef5d,0xad17,0x8c34,0x18e3,0x10a2,0xdedb,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x1082,0x18c3,0xe71c,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xe73d,0x7bb1,0x0861,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x2105,0x1082,0xc638,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xe71c,0xffff,0xc639,0x18c3,0x0841,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x7bb1,0x1082,0x2965,0xce79,0xf79e,0x8c33,0x1082,0x10a2,0xce59,0xd69a,0x2945,0x0000,0x2125,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xad38,0x9454,0x31a6,0x0000,0x3186,0xdefc,0x9454,0x1082,0x0000,0x18c3,0x18e3,0x0862,0x2104,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xe73d,0x9cb6,0x8412,0x2945,0x3186,0xdedb,0x9474,0x2105,0x18c3,0x1082,0x20e4,0x7370,0x9cd5,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf7be,0xad38,0x9475,0x9cb5,0xdefb,0xf79e,0xa4d6,0x83f3,0x8c33,0x8c33,0x8c33,0xad37,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xef5d,0xad17,0x9cb5,0xdedb,0xd69a,0x9cb5,0xa4d6,0xa4b6,0xad17,0xef3d,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xc638,0x3186,0x10a2,0x10a2,0x3186,0xc618,0xf77e,0xf79e,0xffdf,0xdefb,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xd69a,0x3186,0x0000,0x10a2,0x10a2,0x0000,0x31a6,0xd69a,0xffff,0xe71c,0x31a6,0x2965,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0x39c7,0x0000,0x20e4,0x83f2,0x8c33,0x2966,0x0000,0x39c7,0xef5d,0xdedb,0x31a6,0x0861,0x3186,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xef5e,0x18a3,0x0841,0x7bb1,0xa4b6,0x9c75,0x8412,0x1082,0x18e3,0xd6ba,0xad37,0x9c95,0xb576,0x1082,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x1082,0x10a2,0xd69a,0xef5e,0xad37,0x8c13,0x18e4,0x10a2,0xc618,0xad38,0x9cb6,0x9494,0x18e3,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x2104,0x0861,0xc638,0xffff,0xef3d,0x9cb6,0x7b91,0x10a2,0x39c7,0xdefb,0xe71d,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x83f2,0x3186,0x2965,0xce79,0xf7be,0xad17,0x8c34,0x18e3,0x18c3,0xdefb,0xf79e,0x83d2,0x0861,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff,
-- 0xad38,0x9cb6,0xad76,0x0861,0x2965,0xce59,0xd69b,0x7bb1,0x1082,0x10a2,0xce59,0xce59,0x20e4,0x0000,0x31a6,0xe73c,0xffff,0xffff,0xffff,0xffff,
-- 0xef5d,0x8c33,0x2125,0x0000,0x0000,0x18c3,0x2104,0x1082,0x0000,0x0000,0x18e3,0x18c3,0x0000,0x18e4,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0x3186,0x0000,0x0862,0x18c3,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x1082,0x0841,0x18c3,0x8c33,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xef5e,0x2125,0x18c3,0x7370,0x8c33,0x8c13,0x8c13,0x83d2,0x83d2,0x8c13,0x8c13,0x7bb2,0x9454,0xef3d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xad58,0x83f3,0x9454,0xa4d6,0xa4b6,0xa4b6,0xa4b6,0xa4d6,0xa4d6,0xa4b6,0x9cb6,0xad17,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xad37,0xad17,0xd67a,0xd67a,0xd69a,0xef5d,0xef7e,0xef7e,0xef5e,0xd69a,0xce7a,0xd67a,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf79e,0xdedb,0x4208,0x1082,0x39c7,0xe71c,0xffff,0xffff,0xce79,0x39c7,0x18c3,0x18c3,0x39c7,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xbdf7,0x10a2,0x0841,0x39c7,0xe71c,0xffff,0xe71c,0x31a6,0x0000,0x18c3,0x18c3,0x0000,0x3186,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf7be,0x2925,0x0861,0x83f2,0xdefc,0xffdf,0xffff,0xce5a,0x1082,0x0862,0x83d2,0x9453,0x2966,0x0000,0x39c7,0xe73c,0xffff,0xffff,0xffff,0xffff,
-- 0xe73d,0x1082,0x1082,0x9c95,0xf79e,0xffff,0xf79e,0x8c33,0x0862,0x1082,0x8c33,0x9c75,0x8412,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff,
-- 0xad38,0x10a3,0x18c3,0xd6bb,0xffff,0xffff,0xdedb,0x2925,0x0000,0x31a6,0xd69a,0xad37,0x83f3,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x10a3,0x18c3,0xe71c,0xffff,0xffff,0xce5a,0x1082,0x0861,0xbdf7,0xffff,0xef3d,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x10a3,0x1082,0xce59,0xffff,0xf7be,0x8c33,0x0861,0x1082,0xd69a,0xffff,0xf79e,0x7bd1,0x0861,0x3166,0xe73c,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x2925,0x0000,0x3186,0xd69a,0xc639,0x20e4,0x0000,0x3186,0xe73c,0xffff,0xc618,0x18c3,0x0841,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x83d2,0x2945,0x0000,0x18c3,0x18c3,0x0000,0x18e4,0xc618,0xffff,0xe73c,0x2966,0x0000,0x2125,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x9c75,0x8c33,0x3186,0x1082,0x0862,0x18e4,0x8c33,0xf79e,0xffff,0xce7a,0x18e4,0x18c3,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xef5d,0xad17,0x9475,0x8c54,0x8c33,0x83f3,0x9cb5,0xef5d,0xffff,0xf79e,0xad17,0x83f3,0x9c95,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xef5d,0xad37,0xa4b6,0xa4b6,0x9cb5,0xce7a,0xdefb,0xdefb,0xd69a,0x9c95,0xad17,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xf77e,0xdedb,0xbdf7,0x2965,0x10a2,0x2104,0x2104,0x10a2,0x2965,0xbdd7,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xce59,0x31a6,0x10a2,0x18e3,0x18c3,0x0000,0x0000,0x18c3,0x2104,0x10a2,0x31a6,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xe73c,0x39a7,0x0000,0x18e4,0x83f2,0x83f2,0x1062,0x0862,0x8c12,0xbdf8,0x2965,0x0000,0x39c7,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xb596,0x0841,0x18c3,0x83f2,0xa4d6,0x83f3,0x1082,0x1082,0x9454,0xa4d6,0x8c33,0x2125,0x1082,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf7be,0x2125,0x0841,0x83f2,0xef5e,0xef5d,0x8c33,0x1082,0x18c3,0xce7a,0xad17,0x9c75,0x8c12,0x1082,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff,
-- 0xe73d,0x1082,0x1082,0xce7a,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xef5d,0xad17,0x8c34,0x18e3,0x10a2,0xdedb,0xffff,0xffff,0xffff,0xffff,
-- 0xad38,0x1082,0x18c3,0xe71c,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xef3d,0x7bb1,0x0861,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x2105,0x1082,0xc638,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xe71c,0xffff,0xc639,0x18c3,0x0841,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x7bb1,0x1082,0x2965,0xce79,0xf79e,0x8c33,0x1082,0x10a2,0xce59,0xd69a,0x2945,0x0000,0x2125,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xad38,0x9454,0x31a6,0x0000,0x3186,0xdefc,0x9454,0x1082,0x0000,0x18c3,0x18e3,0x0862,0x2104,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xe73d,0x9cb6,0x8412,0x2945,0x3186,0xdedb,0x9474,0x2105,0x18c3,0x1082,0x20e4,0x7370,0x9cd5,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf7be,0xad38,0x9475,0x9494,0xd6bb,0xf77e,0xa4d6,0x83f3,0x8c33,0x8c33,0x8c33,0xad37,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xef5d,0xad17,0xad17,0xf7be,0xf7bf,0xb558,0xa4d6,0xa4b6,0xad17,0xef3d,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xf79e,0xf79e,0xffff,0xffff,0xf79e,0xf77e,0xf77e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xdefb,0xffdf,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xef5d,0xce79,0x2945,0x2965,0xe71c,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xe71c,0xce59,0x39c7,0x18e3,0x2124,0x10a2,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xffff,0xffff,0xe71c,0xe71c,0xce59,0x3186,0x10a2,0x18e3,0x18e3,0x1082,0x18e4,0x83f2,0xdefb,0xffdf,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xe71c,0xe73c,0xce59,0x31a6,0x10a2,0x18e3,0x18e3,0x1082,0x20e4,0x83d2,0x9474,0x8c34,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0x4208,0x18e3,0x2104,0x0020,0x10a2,0x2125,0x83d2,0x9454,0x8c33,0x9cb6,0xad17,0xef3d,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf79e,0x39e7,0x0861,0x0000,0x0862,0x734f,0x8c33,0x8c33,0x9cb5,0xef3d,0xf79e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x9474,0x83d2,0x20e4,0x1082,0x2125,0x2945,0x10a2,0x2965,0xbdf7,0xe71c,0xdefb,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x9cb6,0x9475,0x8c34,0xc619,0xb596,0x2945,0x10a2,0x2104,0x2965,0x2124,0x18c3,0x31a6,0xc638,0xe73c,0xffdf,0xffff,0xffff,0xffff,0xffff,
-- 0xf7bf,0xef3d,0xad37,0xa4f7,0xad37,0xad17,0x9454,0x9494,0xd69b,0xb5b7,0x18c3,0x0000,0x0000,0x1082,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xf79e,0xf79e,0xe71d,0xad17,0x9454,0x9454,0x9cb5,0x7bb1,0x1082,0x0000,0x0000,0x1082,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xffff,0xe73c,0xef5d,0xbdf7,0x2965,0x10a2,0x18e3,0x18a3,0x1082,0x0841,0x18e4,0x8412,0xdedb,0xffdf,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xef5d,0xce59,0x39e7,0x2945,0x39e7,0x2945,0x10a2,0x2945,0x7370,0x83d2,0x7bb2,0x8c13,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0x4208,0x0861,0x0000,0x10a2,0x7390,0x8c13,0x8c34,0x9c95,0xa4d6,0xa4b6,0xad17,0xef3d,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf7bf,0x31a7,0x0861,0x1082,0x0020,0x1082,0x2925,0x8c33,0xce7a,0xd6bb,0xef5d,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x8413,0x83d2,0x7bb1,0x2945,0x1082,0x18c3,0x2104,0x18e3,0x31a6,0xce79,0xe73c,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0xa4b6,0xa4d6,0x9c95,0x9454,0x9cb5,0xbdb7,0x2965,0x10a2,0x18e3,0x18e3,0x10a2,0x3186,0xc638,0xe73c,0xffdf,0xffff,0xffff,0xffff,0xffff,
-- 0xf77e,0xf77e,0xe73d,0xad37,0x9cb6,0xa4d6,0xa4f7,0x9454,0x9c95,0xbdb7,0x2965,0x10a2,0x18e3,0x10a2,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xffff,0xf79e,0xf79e,0xef3d,0xad17,0xa4b6,0xa4d7,0xa4d6,0x8c33,0x9c95,0xb5b7,0x2104,0x2945,0xe71c,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xffff,0xe71c,0xdefb,0xdedb,0xd6bb,0xf79e,0xef3d,0xad17,0xa4b6,0xa4d7,0xa4b6,0x9474,0xce59,0xffdf,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xce79,0x31a6,0x10a2,0x10a2,0x31a6,0xce79,0xffff,0xf79e,0xef7e,0xce39,0x9454,0xa4f7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xce79,0x2965,0x0000,0x10a3,0x18c3,0x0000,0x3186,0xce79,0xffff,0xe71c,0x3186,0x2124,0xc5f8,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0x39e7,0x0000,0x18e4,0x83d2,0x8c33,0x2945,0x0000,0x39e7,0xef5d,0xdedb,0x3186,0x0841,0x31a6,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xef5e,0x10a3,0x0841,0x7bd1,0xa4d6,0x9c75,0x83f2,0x1082,0x18e3,0xd6bb,0xad17,0x9495,0xad76,0x1082,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x1082,0x10a2,0xd67a,0xef5d,0xad17,0x8c13,0x2105,0x10a2,0xbdf7,0xad37,0x9c96,0x9c95,0x18e3,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x20e4,0x0862,0xce79,0xffff,0xef3d,0x9cb6,0x7bd1,0x10a2,0x3186,0xdedb,0xe71d,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff,
-- 0xa4f7,0x83d2,0x3186,0x31a6,0xce79,0xf7be,0xad37,0x8c34,0x18e3,0x18c3,0xdefb,0xf79e,0x83d2,0x0861,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff,
-- 0xad37,0x9cb6,0xb576,0x0861,0x2965,0xce59,0xd6bb,0x7bb1,0x1082,0x10a2,0xce59,0xce59,0x20e4,0x0000,0x31a6,0xe73c,0xffff,0xffff,0xffff,0xffff,
-- 0xef3d,0x8c33,0x2925,0x0000,0x0000,0x18c3,0x2104,0x1062,0x0000,0x0000,0x18e3,0x18c3,0x0000,0x18e4,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0x3186,0x0000,0x1082,0x2104,0x18c3,0x18c3,0x1082,0x10a3,0x18e3,0x18c3,0x0862,0x18e4,0x8c33,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xef5e,0x2125,0x18c3,0x7b91,0x9454,0x9454,0x8c33,0x83f2,0x83f2,0x8c33,0x8c33,0x83d2,0x9494,0xef3d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xad58,0x83f3,0x8c54,0xa4f7,0xa4d6,0xa4d6,0xa4d6,0xa4f7,0xa4f7,0xa4d6,0xa4b6,0xad37,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xad37,0xad17,0xef3d,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf77e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf79e,0xd6bb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xffff,0xffff,0xe71c,0xdedb,0xdefb,
-- 0xffff,0x39e7,0x1082,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10a2,0x31a6,0xe73c,0xe73c,0x31a6,0x0861,0x2124,
-- 0xf79e,0x39c7,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x31a6,0xe73c,0xdedb,0x31a6,0x0861,0x2124,
-- 0xb558,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x9474,0xd6bb,0xf79e,0xad37,0x8c13,0x8c53,0xdefb,
-- 0xb558,0x9cb6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4b6,0xad37,0xf7be,0xf7be,0xad37,0x9cb6,0xa4f7,0xffff,
-- 0xf79e,0xf77e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xef7e,0xd69a,0xdefb,0xffdf,0xf79e,0xf77e,0xf79e,0xffff,
-- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x31a6,0x31a6,0xe73c,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xffff,0xe71c,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xbdd7,0x10a2,0x10a2,0xc618,0xe73c,0xdedb,0xe71c,0xffdf,
-- 0xffff,0xce79,0x31a6,0x10a2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1082,0x0000,0x0020,0x18c3,0x18e3,0x10a2,0x31a6,0xe71c,
-- 0xffff,0x39c7,0x0000,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x0000,0x0020,0x18c3,0x18e3,0x1082,0x31a6,0xe71c,
-- 0xef5d,0x10a3,0x0861,0x7bb1,0x9454,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x9454,0x7370,0x0861,0x0861,0x7bb1,0x9454,0x9474,0xd6bb,0xffdf,
-- 0xb558,0x2105,0x20e4,0x9454,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0x8c13,0x20e4,0x20e4,0x9454,0xa4b6,0xad37,0xf79e,0xffff,
-- 0xa4f7,0x8c33,0xce39,0xf77e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xe73d,0x9cb6,0x8c13,0xce39,0xf77e,0xf77e,0xf79e,0xffff,0xffff,
-- 0xb558,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad37,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf79e,0xd6ba,0xdedb,0xe71c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0x39e7,0x0841,0x31a6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf79e,0x39c7,0x0841,0x31a6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x8c13,0x9474,0xd6bb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x9c96,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf79e,0xef7e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xe71c,0xdedb,0xe71c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0x39e7,0x0841,0x31a6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf79e,0x39c7,0x0841,0x31a6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x8c13,0x9474,0xd6bb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x9c96,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf79e,0xef7e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0xe71c,0xdedb,0xe71c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xffff,0x39e7,0x0841,0x31a6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xf79e,0x41e8,0x1082,0x39e7,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xb558,0x9c96,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- 0xb578,0xa4b6,0xb558,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-- };
-+
-+static int logo_msg_width __initdata = 30;
-+static int logo_msg_height __initdata = 250;
-+static unsigned short logo_msg_data[] __initdata ={
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xad55,0x7bef,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x738e,0x0020,0x0000,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0x0020,0x528a,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x18c3,0x738e,0x9cf3,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x52aa,0x2104,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0x1082,0x18e3,0xef3d,0xffff,0xffff,0xffff,0xffff,0xe73c,0xbdf7,0xdebb,0xffdf,0xffff,0xffff,0xffdf,0x6b6d,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xdebd,0xad17,0x0000,0x5a8c,0xef3e,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bb1,0xc5da,0xd67c,0xffbf,0xffff,0xef7d,0x0000,0x632c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xb558,0x0000,0x6b4e,0xf7bf,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x62ec,0xce1b,0xc5ba,0xce1b,0xffff,0xf7be,0x0000,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xc5fb,0xce1b,0xffff,0x18e3,0x2124,0xf79e,0xffff,0xffdf,0xf77e,0xef7d,0x2945,0x0000,0x10a2,0xe71c,0xdebd,0xc5ba,0xef1e,0x94b2,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xc5ba,0xdebd,0xffff,0x8c71,0x0000,0x2945,0x8430,0x9493,0x6b0e,0x2125,0x0000,0x94b2,0x0020,0x0841,0x526a,0x4209,0x3166,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xc5ba,0xdedd,0xffff,0xffff,0x8430,0x0020,0x0000,0x0000,0x0000,0x0000,0x8410,0xffff,0xb596,0x18e3,0x0000,0x0000,0x0000,0x3186,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xcdfb,0xce1b,0xffff,0xffff,0xffff,0xe71c,0x9cd3,0x630d,0x6b4f,0xa4f6,0xffbf,0xffff,0xffff,0xffff,0xbdd8,0x9474,0xc5f9,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xce1b,0xe6fd,0xef3e,0xe6fd,0xce1b,0xc5ba,0xe71d,0xc5da,0xc5db,0xd67c,0xde9c,0xd63c,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5da,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xe6dd,0xffff,0xef5e,0xcdfb,0xc5ba,0xc5ba,0xc5ba,0xce3b,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xef1e,0xe6dd,0xe71d,0xf79f,0xffff,0xffff,0xffff,0xffff,0xf79f,0xf77e,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2124,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x4a69,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xf79f,0xffff,0xffff,0x4a69,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xce1b,0xce1b,0xffff,0x4208,0x632c,0x2945,0x0000,0x630c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x1082,0x0841,0xc618,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xd67c,0x2104,0x5aeb,0xe73c,0x2965,0x0000,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7bf,0xdebd,0xffff,0xffff,0xc618,0x0861,0x0861,0x94b2,0xffdf,0xffff,0xffff,0xd67c,0xc5ba,0x18e3,0x5aeb,0xffff,0xf79e,0x5aeb,0x0000,0x0861,0x8c71,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xe71d,0xffff,0xffff,0xc638,0x18e3,0x0000,0x18c3,0x6b6d,0x9494,0xc5fa,0xce1b,0x18c3,0x526a,0xffff,0xffff,0xffff,0xad55,0x10a2,0x0000,0x2124,0xef7d,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xc5fb,0xc5db,0xf77e,0xffff,0xffff,0xf79e,0x8410,0x18e3,0x0000,0x0000,0x0000,0x0861,0x0000,0x4209,0xd63c,0xffbf,0xffff,0xffff,0xef7d,0x738e,0x39c7,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5db,0xc5db,0xe71d,0xffff,0xffff,0xffff,0xffff,0xc618,0x6b0e,0x4209,0x2945,0x0000,0x4a6a,0xc5ba,0xc5db,0xe6fd,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0x9cb5,0x8c13,0xcdfb,0xdebd,0xef5e,0xffdf,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xef3e,0xc5fb,0xc5ba,0xce1b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x528a,0xcdfb,0xc5ba,0xc5ba,0xc5ba,0xc5db,0xc5da,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffdf,0xdebd,0xd65c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xf77e,0xe6fd,0xd67c,0xce1b,0xc5ba,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xf7be,0x9492,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf79e,0xef5e,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xbdf7,0x2124,0x0000,0x0841,0xef7d,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x528a,0xdefb,0xdefb,0xdefb,0xffdf,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0x8410,0x0020,0x0020,0x6b4d,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffdf,0x5acb,0x0000,0x18e3,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xdefb,0x5aeb,0x4228,0x4228,0x4228,0x4228,0x4228,0x31a7,0x20e4,0x2104,0x2104,0x73ae,0x4a6a,0x0000,0x2946,0xbd79,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xd67c,0xf7bf,0xf7bf,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xffff,0x6b4e,0x0000,0x3187,0xd65b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xde9c,0xffff,0x9473,0x0000,0x2105,0xe73d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7bf,0xde9c,0xd65c,0xd65c,0xd65c,0xd65c,0xd65c,0xd65c,0xce1b,0xce1b,0xce1b,0xdebd,0xd67c,0x3166,0x0861,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xce1a,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xd69a,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xce3b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x4228,0xad55,0xffdf,0xd65c,0xc5fb,0xffbf,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xce59,0x2945,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x6b6d,0x2104,0x0000,0x10a2,0x630c,0xad55,0xf79e,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xce79,0x0000,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xdebb,0xdefb,0xdefb,0xdefb,0xdefb,0xb5b6,0x6b6d,0x31a6,0x0000,0x0841,0x39c7,0x6b6d,0x1082,0x528a,0xdefb,0xdefb,0xce59,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x9493,0x83d1,0x7bb1,0x7bb1,0x8c32,0x94b3,0xa514,0x8430,0x2945,0x0000,0x18e3,0x9492,0x10a2,0x39c7,0x7bb1,0x94b3,0xa514,0x2945,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xf7bf,0xf7bf,0xf7bf,0xf7bf,0xef5e,0xdebd,0xbdb9,0x7b90,0x3187,0x0000,0x10a2,0x734f,0xce3b,0xf7bf,0x2104,0x5acb,0xc5ba,0xe71d,0xffff,0x7bcf,0x0841,0xf79e,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x62ee,0x0000,0x0000,0x20e4,0x7370,0xbd9a,0xc5ba,0xc5ba,0xc5ba,0x18c3,0x4209,0xc5ba,0xdebd,0xffff,0xbdd7,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xef5e,0xef3e,0xef3e,0x8411,0x18e4,0xef3e,0xb577,0x526a,0x9c94,0xc5ba,0xce1b,0xe71d,0x8c33,0x9494,0xef3e,0xce3a,0xb5b7,0xb558,0xb578,0xdefb,0xdedb,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xef1e,0xd65c,0xc5ba,0x0000,0x738e,0xffff,0xffff,0x31a7,0x39c7,0xffff,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x736e,0x0000,0xc5ba,0xce1b,0xe71d,0x0000,0x7bef,0xffff,0xffff,0x31a7,0x39c7,0xffff,0xdefb,0x0000,0x62ec,0x83f1,0x9cf3,0x39c7,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe71d,0xce1b,0xffff,0x7baf,0x0000,0xf77e,0xffff,0xffff,0x0000,0x73af,0xef5e,0xffff,0x4208,0x4208,0xf7bf,0xd6bb,0x0000,0x9cd3,0xf7bf,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xc5ba,0xacf7,0x0000,0x7bb1,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0x62cd,0x736e,0x7bef,0x0000,0x3187,0x6b2e,0x7bef,0x2104,0x3187,0xdebc,0xce3a,0x0000,0x83f1,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xe6dd,0x736e,0x0000,0xc5ba,0xd65c,0xe6dd,0x0000,0x630d,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xc5ba,0x62cd,0x0000,0xc5ba,0xc5ba,0xc5ba,0x0000,0x62cd,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x738f,0xb537,0xdefb,0x528a,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0xc638,0xbd98,0xd65c,0xffff,0x736e,0x5a8c,0xef3e,0xf79e,0xa514,0x8c32,0x83d1,0xa514,0xa514,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xe71c,0xc638,0xc5ba,0xe6dd,0xffff,0xffff,0xd65c,0xd65c,0xffff,0xf7bf,0xc5ba,0xe6fd,0xf7bf,0xf7bf,0xd67c,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0xffff,0xd65c,0xd65c,0xffff,0xf7bf,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xdefb,0xdedb,0xf77e,0xffbf,0xffff,0xffff,0xdebd,0xdebd,0xffff,0xffff,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xef5e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xf77e,0xffff,0x5aeb,0x0000,0x39e7,0x8c71,0xbdf7,0xdefb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7bf,0xf7bf,0xffff,0xffff,0xffff,0xe73c,0xb5b6,0x9492,0x7bef,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x528a,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xd65c,0xbdd8,0x9493,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xffff,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe71d,0xce3b,0xc5ba,0x2945,0x1082,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x4209,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x736e,0x0000,0xb577,0xde9c,0xde9c,0xd67c,0x9473,0x18e3,0xbdd9,0xde9c,0xde9c,0xde9c,0x4a4a,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf79f,0xef1e,0xffff,0xc618,0x0000,0x8430,0xffff,0xf7be,0x2965,0x528a,0x0000,0xdefb,0xa514,0x73af,0x7bef,0x2965,0x0861,0x738f,0xad75,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd63c,0xcdfb,0xffff,0xffff,0x18e3,0x39e7,0xffff,0x7bcf,0x0000,0x5aeb,0x0000,0xdefb,0x4a6a,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xf79e,0xffff,0x73ae,0x0000,0xbdb7,0x0020,0x4a69,0xa514,0x0000,0xdefb,0x4a6a,0x10a3,0xdefb,0x4a69,0x10a3,0xce3a,0xd69a,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe6fd,0xffff,0xdefb,0x0000,0x10a2,0x0000,0xce59,0x9493,0x0000,0xc5f9,0x4a2a,0x18c3,0xe6dd,0x52ab,0x18c3,0xef3e,0xdefb,0x0000,0x39c7,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xcdfb,0xd65c,0xffff,0xe6dd,0x39c8,0x0000,0x3187,0xf7bf,0x8c32,0x0000,0xacf7,0x4209,0x18c3,0xc5ba,0x528a,0x18c3,0xef3e,0xdefb,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xf79e,0xc5db,0x630d,0x0000,0x62ed,0xf7bf,0x8c32,0x0000,0xd6bb,0x4a4a,0x18c3,0xf7bf,0x5acb,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5ba,0xcdfb,0xbd9a,0x1082,0x0000,0x1082,0xef7e,0x8c32,0x0000,0xdefb,0x4a6a,0x18c3,0xffff,0x5acb,0x18c3,0xd65c,0xbdb8,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0xc5ba,0x8411,0x0000,0x6b4d,0x0000,0x8410,0x8c32,0x0000,0xdefb,0x4a6a,0x18c3,0xffff,0x5acb,0x18c3,0xc5ba,0xacf7,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0x39a7,0x1082,0xe6fd,0x4a2a,0x0861,0x736e,0x0000,0xdefb,0x4a6a,0x0020,0x4228,0x18c3,0x0020,0x39e8,0x94b2,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fb,0xb558,0x0000,0x5acb,0xef3e,0xb559,0x2104,0x0020,0x0000,0xdefb,0x62ed,0x18c3,0x2104,0x0861,0x0000,0x18e4,0x8c71,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0x9452,0x0000,0x9493,0xef3e,0xc5ba,0xce59,0x0841,0x0000,0xdefb,0xde9c,0xce1b,0xffff,0x5acb,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5fb,0x5aeb,0x0000,0xb558,0xe6fd,0xc5ba,0xf7bf,0xa515,0x62ed,0xc5fa,0xcdfb,0xc5db,0xd65c,0x528a,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffdf,0xc5da,0xde9c,0x5aeb,0x2124,0xce1b,0xc5db,0xc5ba,0xf7bf,0xdebd,0xce1b,0xce1b,0xc5db,0xc5da,0xce1b,0x7bcf,0x4209,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xef3e,0xffff,0xef7d,0xf79f,0xc5db,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffdf,0xffff,0xffff,0xffff,0xf77e,0xe6dd,0xffdf,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xffff,0xffff,0xffff,0xef5d,0x9cd3,0x7bef,0xa534,0xef7d,0xffff,0xe6fd,0xde9c,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xad55,0x0861,0x0000,0x0000,0x0000,0x1082,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x2104,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0841,0x1082,0xa534,0xdefb,0xad75,0x2965,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x6b4e,0x0000,0xa535,0xffdf,0xffff,0xffff,0xf79e,0x2965,0x0841,0xdefb,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5db,0x4209,0x0000,0xbd9a,0xc5fb,0xef1e,0xffff,0xffff,0xd69a,0x0000,0x630c,0xe71d,0xce1b,0xffbf,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5db,0xc5fb,0x83f0,0x0000,0x4a6a,0x8c32,0x9474,0xb576,0xc638,0xc638,0x3186,0x0861,0xad56,0x9474,0xbdf8,0x630c,0x0000,0xad55,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xef5e,0xf79e,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xffff,0xffff,0xd6ba,0xad75,0x9cd3,0x7bb1,0x8c32,0xa514,0x8430,0x0000,0x528a,0x7bb1,0x9cf3,0x528a,0x0000,0x8c71,0xa514,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xd67c,0xef5e,0xef3d,0xf77e,0xf77e,0xf77e,0xce3b,0xc5db,0xf77e,0xef5e,0x0000,0x5aac,0xc5ba,0xef3e,0x7baf,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0x4a2a,0x20e4,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x18c3,0x3187,0xc5ba,0xc5ba,0x62cd,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x41e8,0x0841,0xef3e,0xef3e,0xef3e,0xe6fd,0xc5ba,0xde9c,0xef3e,0x18e4,0x39a7,0xc5ba,0xe6fd,0x738f,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xef5d,0xffff,0xffff,0xffff,0xc5ba,0xdebc,0xffff,0x1082,0x4229,0xc5ba,0xf7bf,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0x8c71,0x0000,0xb596,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xdefb,0x0000,0x630d,0xc5ba,0xf7bf,0xe71c,0xc638,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5db,0xffff,0xd69a,0x0000,0x5acb,0xffff,0xffff,0xffff,0xce1b,0xd65c,0x8410,0x0000,0xa515,0xc5ba,0xf7bf,0xffff,0x94b2,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffdf,0xffff,0x2965,0x0020,0xc618,0xffff,0xffff,0xc5fb,0xad57,0x0861,0x2124,0xdebc,0xc5ba,0xf7bf,0x8c71,0x0000,0x39e7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xef5e,0xffff,0xce59,0x0020,0x0861,0x73ae,0x9cf3,0x526b,0x0020,0x0861,0xc638,0xffbf,0xf77e,0x7bef,0x0000,0x2124,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf79f,0xc5ba,0xde9c,0xffff,0xffff,0xb5b6,0x2104,0x0000,0x0000,0x0000,0x3186,0xd69a,0xffff,0xffff,0xce5a,0x18a3,0x39e7,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xce3b,0xc5da,0xf77e,0xffff,0xffff,0xffff,0xce39,0x9474,0xb578,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xbd98,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xc5da,0xc5db,0xdedd,0xef3e,0xdebc,0xc5db,0xc5db,0xf77e,0xffff,0xffff,0xe6dd,0xc5ba,0xce1b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5e,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xd63b,0xf79f,0xd6ba,0xffff,0xffdf,0xcdfb,0xd65c,0xffdf,0xef5d,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79f,0xf77e,0xffbf,0xffff,0x9cd3,0x0020,0xad55,0xffff,0xffbf,0xffff,0xffdf,0x39e7,0x4a69,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x18c3,0x0000,0x8430,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x3186,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x73ae,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x4228,0x0000,0x0000,0x4228,0xe71c,0xffff,0xffdf,0x7bef,0x0000,0x1082,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x7bef,0xef7d,0xffff,0xbdf7,0x2104,0x0000,0x2965,0xd69a,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xcdfb,0xc5ba,0xe6fd,0xffff,0xffff,0xffff,0xad57,0x2925,0x0000,0x1082,0xd69a,0xffff,0xf7be,0x8410,0x0841,0xdedb,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdebd,0xde9c,0xde9c,0xde9c,0xde9c,0xde9c,0xde9c,0xd65c,0xc5ba,0xc5ba,0xd65c,0xffbf,0xffff,0xffff,0xe6dd,0x83d1,0x39a7,0xe6fd,0xffff,0xffff,0xffff,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x3187,0x7bb1,0xe6dd,0xffdf,0x5aeb,0x2104,0xce1b,0xc5ba,0xa516,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0x6b0d,0xc5ba,0xc5fb,0x5acb,0x2104,0xffff,0xe6dd,0x7bb1,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x4228,0xffdf,0x0000,0x7bef,0xef3e,0xd65c,0x5aeb,0x2104,0xffff,0xffff,0x9cf4,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x5aeb,0x0000,0x10a3,0xd6ba,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x2104,0xe6dd,0xffdf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x39a8,0xc61a,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x18e4,0xc5ba,0xf7bf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xb577,0xa514,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x10a3,0x9474,0xbdf8,0x7bef,0x0000,0xad55,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xd67c,0xacf7,0xcdfb,0xf79f,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0x20e4,0x4a4a,0xffbf,0xffff,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x1082,0x7bb1,0x9cf3,0x632c,0x0000,0x8c71,0xa514,0xe73c,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x18e4,0x5aeb,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xcdfb,0xf77e,0x5aab,0x18e3,0xc5ba,0xef3e,0x9cb3,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xffff,0x2104,0x4228,0xc638,0xc638,0x9474,0xad56,0xc638,0x0000,0x528b,0x9474,0x9474,0x31a7,0x18c3,0xc5ba,0xc5ba,0x7bb1,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0xc5ba,0xe6fd,0x9493,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xf79e,0xa534,0xa514,0xa514,0x7bb1,0x8c52,0xa514,0x0000,0x4209,0x83d1,0xa514,0x39c7,0x18e4,0xc5ba,0xf7bf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xd65c,0xf77e,0xf77e,0xf77e,0xf77e,0xf77e,0xc5ba,0xde9c,0xf77e,0x0000,0x6b2e,0xce1b,0xffff,0x5aeb,0x18e4,0xc5ba,0xf7bf,0xb5b6,0x4228,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xffff,0xdedb,0xb5b7,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xc5ba,0xd67c,0xef3e,0xef3e,0xd65c,0xce1b,0xffff,0xffff,0xef3e,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xffff,0xef5e,0xa4d5,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xef5d,0xf79e,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x0841,0x4a69,0x9cf3,0xe73c,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x18c3,0x1082,0x0000,0x0000,0x3186,0x5aeb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0xd6bb,0xef5e,0xffff,0xf79e,0x3186,0x0020,0xce79,0xa4f4,0x41e9,0x0841,0x0000,0x0000,0x0861,0x528a,0x9492,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b6d,0x0000,0xbdb8,0xc5ba,0xc5db,0xd67c,0xce5a,0x0861,0x4208,0xf77e,0xc5ba,0xe6fd,0x94b2,0x0000,0x18e3,0x0000,0x0000,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0861,0xdebc,0xc5ba,0xcdfb,0xc5fb,0xc5ba,0x62ed,0x0000,0xa4f5,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xef5d,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xe6dd,0xffbf,0x2965,0x31a6,0xffff,0xce3b,0xc5da,0xf79e,0xef3e,0xce1a,0x0020,0x4209,0xc5ba,0xc5db,0xa4f5,0x0000,0x9cf4,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xf7bf,0x2104,0x4228,0xffff,0xffbf,0xc5db,0xd65c,0xffff,0xffff,0x4229,0x10a2,0xc5ba,0xcdfb,0x9474,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5db,0xffff,0x2104,0x4228,0xffff,0xffff,0xe6dd,0xc5ba,0xf77e,0xffff,0x738e,0x0000,0xb558,0xef3e,0xc5f8,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce3b,0xce3b,0xffff,0x4208,0x18e3,0xffff,0xffff,0xffdf,0xc5db,0xde9c,0xffff,0x7bef,0x0000,0xacf7,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xffff,0x632c,0x0000,0xef5d,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0x6b4d,0x0000,0xb559,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xffff,0xad55,0x0000,0x9cd3,0xffff,0xffff,0xdebd,0xc5ba,0xffdf,0x2124,0x2104,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0xf7be,0x10a2,0x2104,0xf79e,0xffff,0xe6dd,0xc5ba,0xa4f4,0x0000,0x6b4d,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebc,0xc5ba,0xffdf,0xffff,0x9492,0x0000,0x4228,0xdedb,0xde9c,0x83d1,0x0861,0x10a2,0xdedc,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xe71d,0xffff,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x1082,0xc618,0xf77e,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fb,0xce1b,0xffff,0xffff,0xffff,0xbdd7,0x630d,0x4209,0x7bd0,0xef5d,0xffff,0xf77e,0xc5ba,0xef3e,0xe71c,0x7bef,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd65c,0xf7bf,0xffff,0xef3e,0xc5db,0xc5fb,0xffdf,0xffff,0xffff,0xf77e,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5fb,0xf77e,0xffff,0xe71c,0x8430,0xbdd8,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7e,0xdebd,0xde9c,0xe71d,0xffdf,0xffff,0xe73c,0x18c3,0x0000,0x0020,0xb557,0xf79f,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b4d,0x0000,0x73ae,0x0020,0x3186,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xc619,0x0020,0x528a,0xffff,0x7bcf,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xcdfb,0x41e9,0x0000,0xc639,0xffff,0xf7be,0x2104,0x1082,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdebc,0x9474,0x0000,0x39c8,0xce3b,0xffff,0xffff,0xb596,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5ba,0x2104,0x0020,0xc5f9,0xc5ba,0xe71d,0xffff,0xffff,0x52aa,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0x62cd,0x0000,0x6b6d,0xffff,0xce1b,0xc5fb,0xffbf,0xffff,0xe71c,0x1082,0x10a2,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0x9cb5,0x0000,0x18c3,0xef7d,0xffff,0xef5e,0xc5ba,0xd67c,0xffff,0xffff,0x94b2,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fa,0x2105,0x0000,0xad55,0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xef3e,0xffff,0xffff,0x39c7,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0x524b,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffbf,0xc5fb,0xc5fb,0xffdf,0xffff,0xdedb,0x0841,0x0861,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79f,0x7bb1,0x0000,0x18c3,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd67c,0xffff,0xffff,0x9492,0x0000,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce3b,0x5acd,0x0020,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xef3e,0xffff,0xffff,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xdebc,0xc5ba,0xd67c,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5db,0xc5db,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xcdfb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd65c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5da,0xef7e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xde9c,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce79,0x528a,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x73ae,0x0000,0x0000,0x39e7,0xa534,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x5aeb,0x0861,0x0000,0x0861,0x52aa,0xa514,0xe73c,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf79e,0xd67c,0xf79f,0xffff,0xffff,0xffff,0xf79e,0xa534,0x52aa,0x0861,0x0000,0x0000,0x2104,0x39c8,0x7bd0,0x8410,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xc5ba,0xd65c,0xef3e,0xffff,0xffff,0xffff,0xffff,0xf7be,0xbdd7,0x7bcf,0x39c7,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xde9c,0xc5db,0xc5ba,0xc5db,0xd67c,0xef3e,0xffdf,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xbdf8,0x8c51,0x0000,0x4208,0x4a69,0x2945,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd4,0x1082,0x0841,0x528c,0xbd79,0xce1b,0xd67c,0xe6fd,0xe6dd,0xc5ba,0xe6fd,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x0841,0x0020,0x10a2,0x1082,0xd65b,0xd65c,0xc5db,0x9474,0x62cd,0xb559,0xc5ba,0x9474,0x0000,0x94b3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x9cf3,0xffdf,0xbdf7,0xffff,0xffff,0xffff,0x7bf0,0x0000,0x9454,0xd65c,0xa4f5,0x0000,0x94b3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5fb,0x4a29,0x0000,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x7bb1,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffbf,0xc5db,0xc5da,0x3187,0x10a3,0xffdf,0xffff,0xffff,0xf77e,0xe6dd,0xffdf,0xce79,0x0000,0x62ed,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xef1e,0x4228,0x2104,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xf77e,0xdefb,0x0000,0x62cd,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0x4228,0x18e3,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xef3e,0xdefb,0x0000,0x62cd,0xef3e,0xe71c,0x7bef,0xd69a,0xf7be,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0x5acb,0x0000,0xffdf,0xffff,0xffff,0xf79e,0xc5ba,0xe6fd,0xc638,0x0000,0x7370,0xef3e,0xffff,0xe71c,0x630c,0x10a2,0x4a69,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xce1b,0xffff,0x738e,0x0000,0xd69a,0xffff,0xffff,0xf7bf,0xc5ba,0xe6dd,0xad55,0x0000,0x8c12,0xef3e,0xffff,0xf79e,0x1082,0x528a,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0xa534,0x0000,0x94b2,0xffff,0xffff,0xf7bf,0xc5ba,0xe6dd,0x9cf3,0x2104,0xbdd9,0xf79f,0xffff,0xffdf,0xf7be,0xffff,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xdedb,0x5aeb,0xbdf7,0xffff,0xffff,0xf77e,0xc5ba,0xe71d,0xffff,0xffff,0xffbf,0xde9c,0xc5fb,0xd67c,0xbdf7,0x4a69,0x0020,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xf79f,0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xef5e,0xffff,0xffff,0xffff,0xc5fb,0xd67c,0xef5e,0xa534,0x18e3,0x73ae,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xe71d,0xffff,0xffff,0xffff,0xffff,0xffff,0xef1e,0xce1b,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xde9c,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xd67c,0xc5da,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xa534,0x528a,0x4228,0x738e,0xe71c,0xffff,0xffff,0xffff,0xef3e,0xcdfb,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x0861,0x18c3,0x0000,0x18c3,0xdedb,0xffff,0xffff,0xffff,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x632c,0xf7be,0xffff,0xb5b6,0x0841,0x3186,0xffff,0xffff,0xffff,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0x10a2,0x20e4,0xdebc,0xffbf,0xffff,0xffff,0x73ae,0x0000,0xbdd7,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0x9474,0x0000,0x7370,0xc5ba,0xcdfb,0xf7bf,0xffff,0xd6ba,0x0000,0x6b6d,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0x7bd0,0x0000,0xd69a,0xef5e,0xc5db,0xce3b,0xffff,0xffff,0x1082,0x4a49,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xcdfb,0xce1b,0x6b6d,0x0000,0xf79e,0xffff,0xdedd,0xc5ba,0xef7e,0xffff,0x2104,0x4228,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe71d,0x5aeb,0x0000,0xffff,0xffff,0xf7bf,0xc5ba,0xdebd,0xffff,0x10a2,0x4a69,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xf79f,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xc5fb,0xd65c,0xe71c,0x0000,0x6b6d,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xffff,0x6b6d,0x0000,0xe73c,0xffff,0xffff,0xce1b,0xd65c,0x9cd3,0x0000,0xb596,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xdedb,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0x9492,0x0000,0xbdf7,0xffff,0xffff,0xc5fb,0xd67c,0x2965,0x1082,0xf7be,0xc5ba,0xde9c,0xd69a,0x0000,0x0841,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xbdf7,0x0000,0x8430,0xffff,0xffbf,0xc5ba,0x8c52,0x0000,0x8410,0xf7be,0x7370,0x2945,0x0000,0x0000,0x18c3,0x6b6d,0xb596,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xffdf,0xf7be,0x4228,0x6b4d,0xffff,0xe71d,0xbd79,0x18c3,0x1082,0x6b6d,0x10a2,0x0000,0x0861,0x632d,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xf77e,0xffff,0xffff,0xffff,0xffff,0xce3b,0x5aac,0x0000,0x0000,0x0000,0x2124,0x7370,0xbd9a,0xc5ba,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe6fd,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0x9cb4,0x0000,0x2945,0x8c33,0xc5ba,0xc5ba,0xcdfb,0xdebd,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xdebc,0xffff,0xffff,0xffff,0xcdfb,0xc5fb,0xdebd,0x9474,0xc5ba,0xc5fb,0xdebc,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xe71d,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xce3b,0xef5e,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xb596,0x9cf3,0x7bef,0x7bef,0x736e,0x73af,0xa514,0xad55,0xc638,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x632c,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0020,0x0000,0x18e3,0x632c,0xa514,0xc638,0xdefb,0xdefb,0xdefb,0xd69a,0xc638,0x9cf3,0x738e,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0020,0x18c3,0x9cd4,0xe6fd,0xe6dd,0xe6dd,0xe6dd,0xe6dd,0xef3e,0xef3e,0xf77e,0xffbf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x8c32,0x0000,0x4a2a,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce3b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5da,0xa4d6,0x0000,0x0000,0x4a49,0xb576,0xef7e,0xf7bf,0xf7bf,0xf79f,0xf77e,0xef1e,0xdebd,0xe6fd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5da,0xcdfb,0xef3e,0x94b2,0x1082,0x0000,0x0000,0x2104,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xde9c,0xffff,0xffff,0xef7d,0x94b2,0x4208,0x7bcf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf79f,0xc5ba,0xc5ba,0xd67c,0xef7e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5fb,0xc5ba,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xe71d,0xd65c,0xe6dd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x8410,0x18e3,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad55,0x52aa,0x0841,0x0000,0x0841,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xd69a,0xbdd7,0x94b2,0x6b4d,0x39c7,0x0020,0x0000,0x0000,0x2104,0x8c51,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x630d,0x9c94,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8410,0x4228,0x630c,0x8430,0xad35,0xc5fa,0xc5db,0xc5ba,0xc5db,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xf79f,0xef7e,0xe71d,0xdebc,0xd63c,0xc5da,0xc5ba,0xc5ba,0xce1b,0xe6fd,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xdebd,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xd65c,0xde9c,0xe6fd,0xef5e,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0x8c51,0x7bef,0x7bef,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xe6dd,0xe6dd,0x8c71,0x7bef,0x7bef,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xe6dd,0xe6dd,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff};
-diff -Nur linux_c860_org/drivers/video/shepherdLogoMsgJ.c linux/drivers/video/shepherdLogoMsgJ.c
---- linux_c860_org/drivers/video/shepherdLogoMsgJ.c 2003-06-18 17:49:13.000000000 +0900
-+++ linux/drivers/video/shepherdLogoMsgJ.c 2004-06-10 21:09:11.000000000 +0900
-@@ -3,6 +3,7 @@
- * ChangeLog:
- * 16-04-2003 SHARP
- */
-+/* Logo Screen 16bits RGB(565) data*/
- #ifndef __initdata
- #define __initdata
- #endif
-diff -Nur linux_c860_org/drivers/video/tc6393fb.c linux/drivers/video/tc6393fb.c
---- linux_c860_org/drivers/video/tc6393fb.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/video/tc6393fb.c 2004-06-10 21:10:10.000000000 +0900
-@@ -0,0 +1,1255 @@
-+/*
-+ * linux/drivers/video/tc6393fb.c
-+ *
-+ * Frame Buffer Device for TOSHIBA tc6393
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * Based on:
-+ * linux/drivers/video/w100fb.c
-+ *
-+ * Frame Buffer Device for ATI w100 (Wallaby)
-+ *
-+ * Copyright (C) 2002, ATI Corp.
-+ *
-+ * 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.
-+ *
-+ * Based on:
-+ * drivers/video/skeletonfb.c
-+ *
-+ * ChangeLog:
-+ * 28-02-2003 SHARP supported VRAM image cache for ver.1.3
-+ * 19-03-2003 SHARP disabled VRAM image cache for ver.1.3
-+ */
-+
-+// define this here because unistd.h needs it
-+extern int errno;
-+
-+#include <asm/io.h>
-+#include <asm/hardware.h>
-+#include <asm/ucb1200.h>
-+#include <asm/uaccess.h>
-+// unistd.h is included for the configuration ioctl stuff
-+#define __KERNEL_SYSCALLS__ 1
-+#include <asm/unistd.h>
-+#undef __KERNEL_SYSCALLS__
-+#include <linux/ioport.h>
-+#include <linux/delay.h>
-+#include <linux/errno.h>
-+#include <linux/fb.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/slab.h>
-+#include <linux/mm.h>
-+#include <linux/module.h>
-+#include <linux/sched.h>
-+#include <linux/string.h>
-+#include <linux/tty.h>
-+#include <linux/fs.h>
-+#include <linux/file.h>
-+#include <video/fbcon-cfb8.h>
-+#include <video/fbcon-cfb16.h>
-+#include <video/fbcon-mfb.h>
-+#include <video/fbcon.h>
-+
-+#include "tc6393fb.h"
-+#include <linux/pm.h>
-+#include <asm/arch/i2sc.h>
-+#include <asm/arch/tosa.h>
-+
-+#include <video/tosa_backlight.h>
-+
-+#ifdef CONFIG_PM
-+#include <asm/arch/sharpsl_param.h>
-+static struct pm_dev *tc6393_pm_dev;
-+static int tc6393_pm_callback(struct pm_dev* pm_dev,pm_request_t req, void* data);
-+#endif //CONFIG_PM
-+
-+static void tc6393_pm_suspend(int suspend_mode);
-+static void tc6393_pm_resume(void);
-+static void tc6393_clear_screen(u32 mode);
-+
-+// Some hardware related constants
-+// The name the kernel will know us by
-+#define TC6393_NAME "TC6393FB"
-+
-+
-+#define KH_CMDREG_NUM 6
-+
-+#define PIXEL_PER_LINE_QVGA 240
-+#define HORIZONTAL_LINE_QVGA 320
-+#define PIXEL_PER_LINE_VGA 480
-+#define HORIZONTAL_LINE_VGA 640
-+
-+typedef struct FrameBuffer_QVGA {
-+ unsigned short pixel[HORIZONTAL_LINE_QVGA][PIXEL_PER_LINE_QVGA];
-+} FrameBuffer_QVGA;
-+
-+typedef struct FrameBuffer_VGA {
-+ unsigned short pixel[HORIZONTAL_LINE_VGA][PIXEL_PER_LINE_VGA];
-+} FrameBuffer_VGA;
-+
-+static TC6393_REGS kh_cmd[] =
-+{
-+ { KH_BASEADDR_H, 0x0000}, // base address high
-+ { KH_BASEADDR_L, TC6393_GC_INTERNAL_REG_BASE}, // base address low
-+ { KH_COMMAND_REG, 0x0002}, // base address enable
-+ { KH_VRAMTC, 0x40a8}, // VRAMRC, VRAMTC
-+ { KH_VRAMAC, 0x0018}, // VRAMSTS, VRAMAC
-+ { KH_VRAMBC, 0x0002},
-+};
-+
-+#define TC6393_lcdinner (TC6393_SYS_BASE+TC6393_GC_INTERNAL_REG_BASE)
-+
-+#define FB_OFFSET 0x00100000
-+#define TC6393_LCD_INNER_ADDRESS TC6393_lcdinner
-+#define TC6393_FB_BASE TC6393_RAM1_BASE
-+#define REMAPPED_FB_LEN 0x100000
-+
-+#define REMAPPED_LCD_BASE_LEN 0x200
-+#define REMAPPED_CFG_LEN 0x100
-+#define REMAPPED_MMR_LEN 0x200
-+#define TC6393_PHYS_ADR_LEN 0x2000000
-+#define MAX_XRES_QVGA 240
-+#define MAX_YRES_QVGA 320
-+#define MAX_XRES_VGA 480
-+#define MAX_YRES_VGA 640
-+#define BITS_PER_PIXEL 16
-+
-+#define TC6393_SMEM_START (TOSA_LCDC_PHYS+FB_OFFSET)
-+#define TC6393_MMIO_START (TOSA_LCDC_PHYS+0x500)
-+
-+#define COMADJ_DEFAULT 97
-+
-+// Pseudo palette size
-+#define MAX_PALETTES 16
-+
-+#define USE_ACCELERATOR
-+#ifdef USE_ACCELERATOR
-+// for Accelerator
-+#define FIFO_ADDR (((int)remapped_fbuf)+(1024*1024)-(4*512))
-+static void tc6393_acc_init(void);
-+static void tc6393_acc_write( u32* cmd, int cmdnum );
-+static void tc6393_acc_sync(void);
-+#endif
-+
-+// ioctls
-+#define TC6393FB_POWERDOWN 0x54433601 /* TC6\01 */
-+#ifdef USE_ACCELERATOR
-+#define TC6393FB_ACC_CMD_WRITE 0x54433602 /* TC6\02 */
-+#define TC6393FB_ACC_SYNC 0x54433603 /* TC6\03 */
-+#define TC6393FB_ACC_CMD_MAX_LEN 10
-+#endif
-+
-+// General frame buffer data structures
-+struct tc6393fb_info {
-+ struct fb_info_gen gen;
-+ union {
-+#ifdef FBCON_HAS_CFB16
-+ u16 cfb16[ MAX_PALETTES];
-+#endif
-+#ifdef FBCON_HAS_CFB24
-+ u32 cfb24[ MAX_PALETTES];
-+#endif
-+#ifdef FBCON_HAS_CFB32
-+ u32 cfb32[ MAX_PALETTES];
-+#endif
-+ } fbcon_cmap;
-+};
-+
-+struct tc6393fb_par {
-+ u32 xres;
-+ u32 yres;
-+ u32 xres_virtual;
-+ u32 yres_virtual;
-+ u32 bits_per_pixel;
-+ u32 visual;
-+ u32 palette_size;
-+};
-+
-+static struct tc6393fb_info fb_info;
-+static struct tc6393fb_par current_par;
-+static int current_par_valid = 0;
-+static struct display disp;
-+
-+static void *remapped_lcdbase;
-+static void *remapped_regs;
-+static void *remapped_inner;
-+static void *remapped_fbuf;
-+
-+static FrameBuffer_QVGA *fb_QVGA;
-+static FrameBuffer_VGA *fb_VGA;
-+
-+static void *remapped_scoop2_1;
-+static void *remapped_scoop2_2;
-+
-+#define LCD_MODE_QVGA 0
-+#define LCD_MODE_VGA 1
-+
-+// referenced by tosa_fb
-+int tc6393fb_lcdMode = LCD_MODE_VGA;
-+int tc6393fb_isblank = 0;
-+
-+static int tg_ssp_reg0;
-+
-+#if defined(CONFIG_ARCH_SHARP_SL)
-+// checking in mm/omm_kill.c
-+int disable_signal_to_mm = 0;
-+#endif
-+
-+int tc6393fb_init(void);
-+static void tc6393fb_setlcdmode(int);
-+static void tc6393fb_initssp(void);
-+static void tc6393fb_lcdhwsetup(int);
-+static void tc6393_soft_reset(void);
-+
-+static int tc6393_encode_var(struct fb_var_screeninfo *var,
-+ const void *raw_par,
-+ struct fb_info_gen *info);
-+static int tc6393fb_ioctl(struct inode *inode,
-+ struct file *file,
-+ u_int cmd,
-+ u_long arg,
-+ int con,
-+ struct fb_info *info);
-+
-+void pxa_nssp_init(void);
-+
-+int isspace(int x);
-+int config_open(const char *config_filename);
-+int config_close(int config_fd);
-+int config_get_dword(int config_fd,
-+ const char *section,
-+ const char *id,
-+ u32 *val,
-+ u32 defval);
-+long my_strtol(const char *string, char **endPtr, int base);
-+
-+extern void pxa_nssp_output(unsigned char, unsigned char);
-+
-+#define LINE_WAIT 20
-+#define PLCLN_MASK 0x03FF
-+static int wait_vsync(void)
-+{
-+ int ct=0;
-+ volatile u16 val1,val2;
-+
-+ u16 line = (tc6393fb_lcdMode==LCD_MODE_VGA)?HORIZONTAL_LINE_VGA:HORIZONTAL_LINE_QVGA;
-+ do {
-+ val1 = readw(remapped_inner + PLCLN)&PLCLN_MASK;
-+ while(val1!=(val2=(readw(remapped_inner + PLCLN)&PLCLN_MASK))) {
-+ val1 = val2;
-+ }
-+ if (val1==line) break;
-+ if (++ct>1000*1000/LINE_WAIT) break;
-+ udelay(LINE_WAIT);
-+ } while(1);
-+ if (val1!=line) {
-+ printk("unable to wait vsync\n");
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+// save & restore image
-+//#define STATIC_IMAGE_BUF
-+#ifdef STATIC_IMAGE_BUF
-+static u32 ImageBuf[MAX_XRES_VGA*MAX_YRES_VGA/2];
-+static void save_image(void)
-+{
-+ int i,size = current_par.xres*current_par.yres/2;
-+ u32 *src = (u32*)remapped_fbuf;
-+ u32 *dst = ImageBuf;
-+
-+ for (i=0; i<size; i++) {
-+ *dst++ = *src++;
-+ }
-+}
-+static void load_image(void)
-+{
-+ int i,size = current_par.xres*current_par.yres/2;
-+ u32 *src = ImageBuf;
-+ u32 *dst = (u32*)remapped_fbuf;
-+
-+ for (i=0; i<size; i++) {
-+ *dst++ = *src++;
-+ }
-+}
-+#else
-+#define SAVE_LINES 20
-+static u16 *gSaveImagePtr[HORIZONTAL_LINE_VGA/SAVE_LINES] = {NULL};
-+void clear_imagebuf()
-+{
-+ if(gSaveImagePtr[0] != NULL){
-+ int i;
-+ for (i = 0; i < HORIZONTAL_LINE_VGA/SAVE_LINES; i++) {
-+ if (gSaveImagePtr[i] != NULL) {
-+ kfree(gSaveImagePtr[i]);
-+ gSaveImagePtr[i]=NULL;
-+ }
-+ }
-+ }
-+}
-+#endif
-+
-+
-+
-+/* ------------------- chipset specific functions -------------------------- */
-+//
-+// static void tc6393_hw_init(void)
-+//
-+static void tc6393_hw_init(void)
-+{
-+ remapped_regs = (void *)TC6393_SYS_BASE;
-+ remapped_lcdbase = (void *)TC6393_GC_BASE;
-+ remapped_inner = (void *)TC6393_LCD_INNER_ADDRESS;
-+ remapped_scoop2_1 = (void *)CF_BUF_CTRL_BASE;
-+ remapped_scoop2_2 = (void *)CF2_BUF_CTRL_BASE;
-+ remapped_fbuf = (void *)TC6393_FB_BASE;
-+ tc6393_soft_reset();
-+#ifdef USE_ACCELERATOR
-+ tc6393_acc_init();
-+#endif
-+
-+}
-+
-+
-+//
-+// Fill the fix structure based on values in the par
-+//
-+static int tc6393_encode_fix(struct fb_fix_screeninfo *fix,
-+ const void *raw_par,
-+ struct fb_info_gen *info)
-+{
-+ const struct tc6393fb_par *par = raw_par;
-+
-+ if (!par)
-+ BUG();
-+
-+ memset(fix, 0, sizeof *fix);
-+
-+ strcpy(fix->id, TC6393_NAME);
-+
-+ fix->type= FB_TYPE_PACKED_PIXELS;
-+ fix->type_aux = 0;
-+
-+ if (par->bits_per_pixel == 1)
-+ {
-+ fix->visual = FB_VISUAL_MONO10;
-+ }
-+ else if (par->bits_per_pixel <= 8)
-+ {
-+ fix->visual = FB_VISUAL_PSEUDOCOLOR;
-+ }
-+ else
-+ {
-+ fix->visual = FB_VISUAL_TRUECOLOR;
-+ }
-+
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ fix->ypanstep = fix->xpanstep = fix->xwrapstep = 0;
-+#else
-+ fix->xpanstep = fix->ypanstep = fix->ywrapstep = 0;
-+#endif
-+ fix->smem_start = TC6393_SMEM_START;
-+
-+ if(tc6393fb_lcdMode == LCD_MODE_VGA ){
-+ fix->line_length = (480 * BITS_PER_PIXEL) / 8;
-+ fix->smem_len = (480 * 640 * BITS_PER_PIXEL) / 8;
-+ } else { // QVGA
-+ fix->line_length = (240 * BITS_PER_PIXEL) / 8;
-+ fix->smem_len = (240 * 320 * BITS_PER_PIXEL) / 8;
-+ }
-+ fix->mmio_start = TC6393_MMIO_START;
-+ fix->mmio_len = REMAPPED_CFG_LEN + REMAPPED_MMR_LEN; // LCD-COMMON+LCD-MMR
-+
-+ fix->accel = FB_ACCEL_NONE;
-+
-+ return 0;
-+}
-+
-+//
-+// Get video parameters out of the par
-+//
-+static int tc6393_decode_var(const struct fb_var_screeninfo *var,
-+ void *raw_par,
-+ struct fb_info_gen *info)
-+{
-+ struct tc6393fb_par *par = raw_par;
-+
-+ *par = current_par;
-+
-+ if (!par)
-+ BUG();
-+
-+ if((par->xres == 480 && par->yres == 640)||
-+ (par->xres == 240 && par->yres == 320)){
-+ par->xres = var->xres;
-+ par->yres = var->yres;
-+ }else{
-+
-+ if(tc6393fb_lcdMode == LCD_MODE_VGA ){
-+ par->xres = MAX_XRES_VGA;
-+ par->yres = MAX_YRES_VGA;
-+ }else{ // QVGA
-+ par->xres = MAX_XRES_QVGA;
-+ par->yres = MAX_YRES_QVGA;
-+ }
-+ }
-+
-+ par->xres_virtual =
-+ var->xres_virtual < par->xres ? par->xres : var->xres_virtual;
-+ par->yres_virtual =
-+ var->yres_virtual < par->yres ? par->yres : var->yres_virtual;
-+
-+ par->bits_per_pixel = var->bits_per_pixel;
-+
-+ par->visual = FB_VISUAL_TRUECOLOR;
-+ par->palette_size = 0;
-+
-+ return 0;
-+}
-+
-+//
-+// Fill the var structure with values in the par
-+//
-+static int tc6393_encode_var(struct fb_var_screeninfo *var,
-+ const void *raw_par,
-+ struct fb_info_gen *info)
-+{
-+ struct tc6393fb_par *par = (struct tc6393fb_par *)raw_par;
-+
-+ // set up var for 565
-+ var->bits_per_pixel = BITS_PER_PIXEL;
-+ var->red.offset = 11;
-+ var->red.length = 5;
-+ var->green.offset = 5;
-+ var->green.length = 6;
-+ var->blue.offset = 0;
-+ var->blue.length = 5;
-+ var->transp.offset = 0;
-+ var->transp.length = 0;
-+
-+ var->red.msb_right = 0;
-+ var->green.msb_right = 0;
-+ var->blue.msb_right = 0;
-+ var->transp.msb_right = 0;
-+
-+ var->nonstd = 0;
-+
-+ var->grayscale = 0;
-+
-+ // set up screen coordinates
-+ if((par->xres == 480 && par->yres == 640)||
-+ (par->xres == 240 && par->yres == 320)){
-+ var->xres = par->xres;
-+ var->yres = par->yres;
-+ }else{
-+ if(tc6393fb_lcdMode == LCD_MODE_VGA ){
-+ var->xres = MAX_XRES_VGA;
-+ var->yres = MAX_YRES_VGA;
-+ }else{ // QVGA
-+ var->xres = MAX_XRES_QVGA;
-+ var->yres = MAX_YRES_QVGA;
-+ }
-+ }
-+
-+ var->xres_virtual = var->xres;
-+ var->yres_virtual = var->yres;
-+ var->xoffset = var->yoffset = 0;
-+
-+ var->activate = FB_ACTIVATE_NOW;
-+
-+ var->height = -1;
-+ var->width = -1;
-+ var->vmode = FB_VMODE_NONINTERLACED;
-+
-+ var->sync = 0;
-+ var->pixclock = 0x04;
-+
-+ return 0;
-+}
-+
-+//
-+// Fill the par structure with relevant hardware values
-+//
-+static void tc6393_get_par(void *raw_par, struct fb_info_gen *info)
-+{
-+ struct tc6393fb_par *par = raw_par;
-+
-+ if (current_par_valid)
-+ *par = current_par;
-+}
-+
-+//
-+// Set the hardware according to the values in the par
-+//
-+static void tc6393_set_par(const void *raw_par, struct fb_info_gen *info)
-+{
-+ const struct tc6393fb_par *par = raw_par;
-+
-+ current_par = *par;
-+ current_par_valid = 1;
-+}
-+
-+//
-+// Split a color register into RGBT components. N/A on TC6393
-+//
-+static int tc6393_getcolreg(unsigned regno, unsigned *red, unsigned *green,
-+ unsigned *blue, unsigned *transp,
-+ struct fb_info *info)
-+{
-+ struct tc6393fb_info *linfo = (struct tc6393fb_info *)info;
-+
-+ if (regno >= 16) return 1;
-+
-+ *transp = 0;
-+ *red = ((linfo->fbcon_cmap.cfb16[regno] >> 11) & 31) << 11;
-+ *green = ((linfo->fbcon_cmap.cfb16[regno] >> 5 ) & 63) << 10;
-+ *blue = ((linfo->fbcon_cmap.cfb16[regno]) & 31) << 11;
-+
-+ return 0;
-+}
-+
-+//
-+// Set a single color register. N/A on TC6393
-+//
-+static int tc6393_setcolreg(unsigned regno, unsigned red, unsigned green,
-+ unsigned blue, unsigned transp,
-+ struct fb_info *info)
-+{
-+ struct tc6393fb_info *linfo = (struct tc6393fb_info *)info;
-+
-+ if (regno < MAX_PALETTES)
-+ {
-+ linfo->fbcon_cmap.cfb16[regno] =
-+ (red & 0xf800) | ((green & 0xfc00) >> 5) | ((blue & 0xf800) >> 11);
-+ }
-+
-+ return 0;
-+}
-+
-+//
-+// Pan the display based on var->xoffset & var->yoffset values
-+//
-+static int tc6393_pan_display(const struct fb_var_screeninfo *var,
-+ struct fb_info_gen *info)
-+{
-+
-+ return 0;
-+}
-+
-+//
-+// Blank the display based on value in blank_mode
-+//
-+static int tc6393_blank(int blank_mode, struct fb_info_gen *info)
-+{
-+ if(!in_interrupt()){
-+ if (blank_mode && !tc6393fb_isblank) {
-+ tc6393_pm_suspend(1);
-+ }else if(!blank_mode && tc6393fb_isblank){
-+ tc6393_pm_resume();
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_SHARP_LOGO_SCREEN
-+#include "vgaLogoScreen.c"
-+#define SHOW_WAIT_MSG
-+#ifdef SHOW_WAIT_MSG
-+#include "tosaLogoMsgJ.c"
-+#include "tosaLogoMsg.c"
-+#if 0
-+static int logo_lang = 0;
-+#else
-+extern int logo_lang; // Battery Driver refers.
-+#endif
-+static int logo_msg_width __initdata = 0;
-+static int logo_msg_height __initdata = 0;
-+static unsigned short *logo_msg_data __initdata = NULL;
-+#ifndef MODULE
-+static int __init logolang_setup(char *str)
-+{
-+ logo_lang = simple_strtoul(str,NULL,0);
-+ return 0;
-+}
-+__setup("LOGOLANG=", logolang_setup);
-+#endif // MODULE
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+static int logo_msg_yoff __initdata = 100;
-+#else
-+static int logo_msg_yoff __initdata = 500;
-+#endif
-+#endif // end SHOW_WAIT_MSG
-+
-+//
-+// static void __init draw_img()
-+//
-+static void __init draw_img( int sx, int sy, int w, int h, unsigned short* data )
-+{
-+ int x, y,ppl;
-+ unsigned short *p;
-+ // LCD_MODE_VGA
-+ if (tc6393fb_lcdMode == LCD_MODE_VGA ){
-+ ppl = PIXEL_PER_LINE_VGA;
-+ p = &fb_VGA->pixel[sy][sx];
-+ }else{ // QVGA
-+ ppl = PIXEL_PER_LINE_QVGA;
-+ p = &fb_QVGA->pixel[sy][sx];
-+ }
-+
-+ for (y=0; y<h; y++) {
-+ for (x=0; x<w; x++) {
-+ unsigned short col = data[(h-1-y)+x*h];
-+#if 0 //
-+ if (col==0x7bef) col=0xFFFF;
-+#endif
-+ *p++ = col;
-+ }
-+ p += ppl - w;
-+ }
-+}
-+
-+static void __init draw_logo_screen(void)
-+{
-+ switch(logo_lang) {
-+ case 1: // JP
-+ logo_msg_width = logo_msg_width_jp;
-+ logo_msg_height = logo_msg_height_jp;
-+ logo_msg_data = logo_msg_data_jp;
-+ break;
-+ default: // EN
-+ logo_msg_width = logo_msg_width_en;
-+ logo_msg_height = logo_msg_height_en;
-+ logo_msg_data = logo_msg_data_en;
-+ break;
-+ }
-+
-+ if (tc6393fb_lcdMode == LCD_MODE_VGA){
-+ memset(remapped_fbuf,0xff,(HORIZONTAL_LINE_VGA-16)*(PIXEL_PER_LINE_VGA*2));
-+ }else{ // QVGA
-+ memset(remapped_fbuf,0xff,(HORIZONTAL_LINE_QVGA-16)*(PIXEL_PER_LINE_QVGA*2));
-+ }
-+
-+ draw_img((current_par.xres - logo_screen_height) / 2,
-+ (current_par.yres - logo_screen_width) / 2,
-+ logo_screen_height, logo_screen_width, logo_screen_data);
-+
-+
-+#ifdef SHOW_WAIT_MSG
-+ draw_img((current_par.xres - logo_msg_height) / 2,logo_msg_yoff,
-+ logo_msg_height,logo_msg_width,logo_msg_data);
-+#endif
-+
-+}
-+#endif //CONFIG_SHARP_LOGO_SCREEN
-+
-+
-+//
-+// Set up the display for the fb subsystem
-+//
-+static void tc6393_set_disp(const void *unused, struct display *disp,
-+ struct fb_info_gen *info)
-+{
-+ struct tc6393fb_info *linfo = (struct tc6393fb_info *)info;
-+ int newLcdMode = -1;
-+
-+ if (current_par.xres == PIXEL_PER_LINE_QVGA && current_par.yres == HORIZONTAL_LINE_QVGA){
-+ newLcdMode = LCD_MODE_QVGA;
-+ } else if (current_par.xres == PIXEL_PER_LINE_VGA && current_par.yres == HORIZONTAL_LINE_VGA){
-+ newLcdMode = LCD_MODE_VGA;
-+ } else { // unknown
-+ return;
-+ }
-+
-+ if (newLcdMode!=tc6393fb_lcdMode) {
-+#if 0
-+ printk("change resolution from %s to %s\n", tc6393fb_lcdMode?"VGA":"QVGA", newLcdMode?"VGA":"QVGA");
-+#endif
-+ if (tc6393fb_isblank) {
-+ printk("force resume from blank!!!\n");
-+ clear_imagebuf();
-+ tc6393_pm_resume();
-+ }
-+
-+ wait_vsync();
-+ tc6393_clear_screen(LCD_MODE_VGA);
-+ wait_vsync();
-+ tc6393fb_setlcdmode(newLcdMode);
-+ }
-+
-+ // Do the rest of the display initialization
-+ disp->screen_base = remapped_fbuf;
-+
-+ // Set appropriate low level text console handler
-+ switch(disp->var.bits_per_pixel)
-+ {
-+#ifdef FBCON_HAS_MFB
-+ case 1:
-+ disp->dispsw = &fbcon_mfb;
-+ break;
-+#endif
-+#ifdef FBCON_HAS_CFB8
-+ case 8:
-+ disp->dispsw = &fbcon_cfb8;
-+ break;
-+#endif
-+#ifdef FBCON_HAS_CFB16
-+ case 16:
-+ disp->dispsw = &fbcon_cfb16;
-+ disp->dispsw_data = linfo->fbcon_cmap.cfb16;
-+ break;
-+#endif
-+ default:
-+ disp->dispsw = &fbcon_dummy;
-+ break;
-+ }
-+
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ disp->xpanstep = 0;
-+ disp->xwrapstep = 0;
-+ disp->scrollmode = 0; // for logoscreen scroll
-+#else
-+ disp->ypanstep = 0;
-+ disp->ywrapstep = 0;
-+#endif
-+
-+
-+}
-+
-+/* ------------ Interfaces to hardware functions ------------ */
-+
-+struct fbgen_hwswitch tc6393_switch =
-+{
-+ //X detect: tc6393_detect,
-+ encode_fix: tc6393_encode_fix,
-+ decode_var: tc6393_decode_var,
-+ encode_var: tc6393_encode_var,
-+ get_par: tc6393_get_par,
-+ set_par: tc6393_set_par,
-+ getcolreg: tc6393_getcolreg,
-+ setcolreg: tc6393_setcolreg,
-+ pan_display: tc6393_pan_display,
-+ blank: tc6393_blank,
-+ set_disp: tc6393_set_disp,
-+};
-+
-+/* ------------ Hardware Independent Functions ------------ */
-+
-+
-+static struct fb_ops tc6393fb_ops =
-+{
-+ owner: THIS_MODULE,
-+ fb_get_fix: fbgen_get_fix,
-+ fb_get_var: fbgen_get_var,
-+ fb_set_var: fbgen_set_var,
-+ fb_get_cmap: fbgen_get_cmap,
-+ fb_set_cmap: fbgen_set_cmap,
-+ fb_pan_display: fbgen_pan_display,
-+ fb_ioctl: tc6393fb_ioctl,
-+};
-+
-+//
-+int __init tc6393fb_init(void)
-+{
-+#ifndef STATIC_IMAGE_BUF
-+ memset(gSaveImagePtr,0,sizeof(gSaveImagePtr));
-+#endif
-+
-+ fb_info.gen.fbhw = &tc6393_switch; // generic frame buffer device
-+ tc6393_hw_init();
-+ tc6393_clear_screen(LCD_MODE_VGA);
-+ tc6393fb_setlcdmode(tc6393fb_lcdMode);
-+
-+ strcpy(fb_info.gen.info.modename, TC6393_NAME);
-+ fb_info.gen.info.changevar = NULL;
-+ fb_info.gen.info.node = -1;
-+ fb_info.gen.info.fbops = &tc6393fb_ops;
-+ fb_info.gen.info.disp = &disp;
-+ fb_info.gen.parsize = sizeof(struct tc6393fb_par);
-+ fb_info.gen.info.switch_con = &fbgen_switch;
-+ fb_info.gen.info.updatevar = &fbgen_update_var;
-+ fb_info.gen.info.blank = &fbgen_blank;
-+ fb_info.gen.info.flags = FBINFO_FLAG_DEFAULT;
-+ /* This should give a reasonable default video mode */
-+ fbgen_get_var(&disp.var, -1, &fb_info.gen.info);
-+ fbgen_do_set_var(&disp.var, 1, &fb_info.gen);
-+ fbgen_set_disp(-1, &fb_info.gen);
-+
-+ if (disp.var.bits_per_pixel > 1)
-+ fbgen_install_cmap(0, &fb_info.gen);
-+
-+ if (register_framebuffer(&fb_info.gen.info) < 0)
-+ return -EINVAL;
-+
-+#ifdef CONFIG_PM
-+ tc6393_pm_dev = pm_register(PM_COTULLA_DEV, 0, tc6393_pm_callback);
-+#endif //CONFIG_PM
-+
-+ printk("fb%d: %s frame buffer device\n",
-+ GET_FB_IDX(fb_info.gen.info.node),
-+ fb_info.gen.info.modename);
-+
-+
-+#if defined(CONFIG_SHARP_LOGO_SCREEN)
-+ draw_logo_screen();
-+ tosa_bl_temporary_contrast_set();
-+ tosa_bl_temporary_contrast_reset();
-+#endif
-+
-+ return 0;
-+}
-+
-+void tc6393fb_cleanup(struct fb_info *info)
-+{
-+ unregister_framebuffer(info);
-+#ifndef STATIC_IMAGE_BUF
-+ if(gSaveImagePtr[0] != NULL){
-+ int i;
-+ for (i = 0; i < HORIZONTAL_LINE_VGA/SAVE_LINES; i++) {
-+ if (gSaveImagePtr[i] != NULL) {
-+ kfree(gSaveImagePtr[i]);
-+ gSaveImagePtr[i]=NULL;
-+ }
-+ }
-+ }
-+#endif
-+}
-+
-+#ifdef MODULE
-+int __init init_module(void)
-+{
-+ return tc6393fb_init();
-+}
-+
-+void cleanup_module(void)
-+{
-+ tc6393fb_cleanup(&fb_info.gen.info);
-+}
-+#endif
-+
-+static int tc6393fb_ioctl(struct inode *inode, struct file *file, u_int cmd,
-+ u_long arg, int con, struct fb_info *info2)
-+{
-+ switch (cmd){
-+ case TC6393FB_POWERDOWN:
-+ {
-+ int blank_mode = (int)arg;
-+ tc6393_blank(blank_mode,NULL);
-+ }
-+ break;
-+#ifdef USE_ACCELERATOR
-+ case TC6393FB_ACC_CMD_WRITE:
-+ {
-+ u32 cmdbuf[TC6393FB_ACC_CMD_MAX_LEN + 1];
-+
-+ if (tc6393fb_isblank) {
-+ printk("force resume from blank!\n");
-+ clear_imagebuf();
-+ tc6393_pm_resume();
-+ }
-+ if (copy_from_user(cmdbuf, (void *)arg,
-+ (TC6393FB_ACC_CMD_MAX_LEN + 1) * sizeof(u32)))
-+ return -EFAULT;
-+
-+ if (cmdbuf[0] == 0)
-+ return 0;
-+
-+ if (cmdbuf[0] > TC6393FB_ACC_CMD_MAX_LEN)
-+ return -EFAULT;
-+
-+ tc6393_acc_write( &cmdbuf[1], cmdbuf[0] );
-+ }
-+ break;
-+ case TC6393FB_ACC_SYNC:
-+ if (tc6393fb_isblank) {
-+ printk("force resume from blank!!\n");
-+ clear_imagebuf();
-+ tc6393_pm_resume();
-+ }
-+ tc6393_acc_sync();
-+ break;
-+#endif // end USE_ACCELERATOR
-+ default:
-+ return -EINVAL;
-+ }
-+ return 0;
-+}
-+
-+//
-+// Constants
-+//
-+
-+static void tc6393fb_initssp( void)
-+{
-+ pxa_nssp_init();
-+ tg_ssp_reg0 = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR;
-+ pxa_nssp_output(1,0x00); //delaied 0clk TCTL signal for VGA
-+ pxa_nssp_output(3,0x02); // GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL
-+}
-+
-+static void tc6393fb_setpnlctl(int dat)
-+{
-+ pxa_nssp_output(6,dat);
-+}
-+
-+static void tc6393fb_lcdhwsetup(int mode)
-+{
-+ int i;
-+
-+ // define the framebuffer base.
-+ fb_VGA = (FrameBuffer_VGA *) (remapped_fbuf);
-+ fb_QVGA = (FrameBuffer_QVGA *) (remapped_fbuf);
-+
-+ if ( mode == LCD_MODE_QVGA ) { // change to QVGA
-+ writew((u16)(0x0000), remapped_inner + PLGMD);
-+ writew((u16)(readw(remapped_regs + TC6393_SYS_FER) & ~FUNC_SLCDEN),
-+ remapped_regs + TC6393_SYS_FER);
-+ writew((u16)(PLCNT_DEFAULT), remapped_inner + PLCNT);
-+ writew((u16)(PLL10_QVGA), remapped_regs + TC6393_SYS_PLL1CR1);
-+ writew((u16)(PLL11_QVGA), remapped_regs + TC6393_SYS_PLL1CR2);
-+ writew((u16)(readw(remapped_regs + TC6393_SYS_FER) | FUNC_SLCDEN),
-+ remapped_regs + TC6393_SYS_FER);
-+
-+ for( i=0; i<kurohyo_LCDCREG_NUM-1; i++){
-+ writew((u16)(kurohyoLcdcQVGA[i].Value), remapped_inner + kurohyoLcdcQVGA[i].Index);
-+ }
-+ } else { // change to VGA
-+ writew((u16)(0x0000), remapped_inner + PLGMD);
-+ writew((u16)(readw(remapped_regs + TC6393_SYS_FER) & ~FUNC_SLCDEN),
-+ remapped_regs + TC6393_SYS_FER);
-+ writew((u16)(PLCNT_DEFAULT), remapped_inner + PLCNT);
-+ writew((u16)(PLL10_VGA), remapped_regs + TC6393_SYS_PLL1CR1);
-+ writew((u16)(PLL11_VGA), remapped_regs + TC6393_SYS_PLL1CR2);
-+ writew((u16)(readw(remapped_regs + TC6393_SYS_FER) | FUNC_SLCDEN),
-+ remapped_regs + TC6393_SYS_FER);
-+
-+ for( i=0; i<kurohyo_LCDCREG_NUM-1; i++){
-+ writew((u16)(kurohyoLcdcVGA[i].Value), remapped_inner + kurohyoLcdcVGA[i].Index);
-+ }
-+ }
-+
-+ writew((u16)(PLCNT_DEFAULT), remapped_inner + PLCNT);
-+ mdelay(5);
-+ writew((u16)(PLCNT_DEFAULT | PLCNT_STOP_CKP), remapped_inner+PLCNT);
-+ mdelay(5);
-+ writew((u16)(PLCNT_DEFAULT | PLCNT_STOP_CKP | PLCNT_SOFT_RESET), remapped_inner + PLCNT);
-+ writew((u16)(0xfffa), remapped_inner + PIFEN);
-+
-+ // TG LCD pannel power up
-+ tc6393fb_setpnlctl(0x4);
-+ mdelay(50);
-+
-+ // TG LCD GVSS
-+ tc6393fb_setpnlctl(0x0);
-+
-+ {
-+ int comadj;
-+ /* Set Common Voltage */
-+ comadj = -1;
-+ comadj = sharpsl_get_comadj();
-+ if ( comadj < 0 ) {
-+ comadj = COMADJ_DEFAULT;
-+ }
-+ mdelay(50);
-+ i2c_init(1);
-+ tosa_set_common_voltage( comadj );
-+ }
-+
-+}
-+
-+static void tc6393fb_setlcdmode(int mode)
-+{
-+ if( mode == LCD_MODE_VGA ){
-+ tg_ssp_reg0 |= TG_REG0_VQV;
-+ pxa_nssp_output(0, tg_ssp_reg0); // data send to TG
-+ tc6393fb_lcdhwsetup(LCD_MODE_VGA);
-+ tc6393fb_lcdMode = LCD_MODE_VGA;
-+ }else{
-+ tg_ssp_reg0 &= ~TG_REG0_VQV;
-+ pxa_nssp_output(0, tg_ssp_reg0); // data send to TG
-+ tc6393fb_lcdhwsetup(LCD_MODE_QVGA);
-+ tc6393fb_lcdMode = LCD_MODE_QVGA;
-+ }
-+}
-+
-+static void tc6393_soft_reset()
-+{
-+ int i;
-+ PSPR=0;// Clear Core Clock Change status
-+
-+ // L3V On
-+ writew((u16)(readw(remapped_scoop2_2 + SCP_GPWR) | SCOOP22_L3VON),remapped_scoop2_2 + SCP_GPWR);
-+
-+ // TG On
-+ writew((u16)(readw(remapped_regs + TC6393_SYS_GPODSR1) & ~0x0001),remapped_regs + TC6393_SYS_GPODSR1);
-+
-+ // Clock Control Register
-+ writew((u16)((readw(remapped_regs + TC6393_SYS_CCR) & CLKCTL_USB_MASK) | CLKCTL_CONFIG_DTA),
-+ remapped_regs + TC6393_SYS_CCR);
-+
-+ writew((u16)(0x0cc1), remapped_regs + TC6393_SYS_PLL2CR);
-+
-+ if ( tc6393fb_lcdMode == LCD_MODE_VGA ) { // VGA
-+ writew((u16)(PLL10_VGA), remapped_regs + TC6393_SYS_PLL1CR1);
-+ writew((u16)(PLL11_VGA), remapped_regs + TC6393_SYS_PLL1CR2);
-+ } else { // QVGA
-+ writew((u16)(PLL10_QVGA), remapped_regs + TC6393_SYS_PLL1CR1);
-+ writew((u16)(PLL11_QVGA), remapped_regs + TC6393_SYS_PLL1CR2);
-+ }
-+ writew((u16)(0x003a), remapped_lcdbase + KH_CLKEN);
-+ writew((u16)(0x003a), remapped_lcdbase + KH_GCLKEN);
-+ writew((u16)(0x3f00), remapped_lcdbase + KH_PSWCLR);
-+ writew((u16)(readw(remapped_regs + TC6393_SYS_FER) | FUNC_SLCDEN), remapped_regs + TC6393_SYS_FER);
-+ mdelay(2);
-+
-+ writew((u16)(0x0000), remapped_lcdbase + KH_PSWCLR);
-+ writew((u16)(0x3300), remapped_regs + TC6393_SYS_GPER);
-+
-+ // initialize kurohyo configration register
-+ for( i=0; i <= KH_CMDREG_NUM; i++){
-+ writew((u16)(kh_cmd[i].Value), remapped_lcdbase + kh_cmd[i].Index);
-+ }
-+ mdelay(2);
-+ writew((u16)(0x000b), remapped_lcdbase + KH_VRAMBC);
-+
-+ tc6393fb_initssp();
-+ tc6393fb_isblank = 0;
-+}
-+
-+#ifdef USE_ACCELERATOR
-+static void tc6393_acc_init()
-+{
-+ writew((u16)((FIFO_ADDR>>16)&0x001f), remapped_inner + KH_CMDADR_H);
-+ writew((u16)(FIFO_ADDR&0x0fff8), remapped_inner + KH_CMDADR_L);
-+ writew(512-1, remapped_inner + KH_CMDFIF);
-+
-+ writew(1, remapped_inner + KH_FIFOR);
-+
-+ writew(0, remapped_inner + KH_BINTMSK);
-+ writew(0, remapped_inner + KH_CMDFINT);
-+}
-+
-+static void tc6393_acc_write( u32* cmd, int cmdnum )
-+{
-+ volatile int i;
-+ int ct=0;
-+
-+ if (readw(remapped_inner + KH_FIPT)>400) {
-+ while(readw(remapped_inner + KH_FIPT)>200) {
-+ mdelay(1);
-+ if (++ct>1000) {
-+ printk(__FUNCTION__ ": timeout\n");
-+ return; // timeout
-+ }
-+ }
-+ }
-+
-+ for ( i = 0; i < cmdnum; i ++ ) {
-+ writew((u16)((cmd[i]>>16) & 0x0ffff), remapped_inner + KH_COMD_H);
-+ writew((u16)(cmd[i] & 0x0ffff), remapped_inner + KH_COMD_L);
-+ }
-+}
-+
-+static void tc6393_acc_sync()
-+{
-+ int ct=0;
-+ while(readw(remapped_inner + KH_FIPT)>0) {
-+ mdelay(1);
-+ if (++ct>1000) {
-+ printk(__FUNCTION__ ": timeout\n");
-+ return; // timeout
-+ }
-+ }
-+ ct=0;
-+ while(readw(remapped_inner + KH_DMAST)&PXAIO_DMAST_BLT) {
-+ mdelay(1);
-+ if (++ct>1000) {
-+ printk(__FUNCTION__ ": timeout\n");
-+ return; // timeout
-+ }
-+ }
-+}
-+#endif // end USE_ACCELERATOR
-+
-+static void tc6393_clear_screen(u32 mode)
-+{
-+#ifndef USE_ACCELERATOR
-+ if(mode == LCD_MODE_VGA){
-+ memset(remapped_fbuf,0xff,MAX_XRES_VGA*MAX_YRES_VGA*2);
-+ }else if(mode == LCD_MODE_QVGA){
-+ memset(remapped_fbuf,0xff,MAX_XRES_QVGA*MAX_YRES_QVGA*2);
-+ }
-+#else // Accelerator always clear VGA area
-+ static u32 cmd[6];
-+ u16 xres = (tc6393fb_lcdMode == LCD_MODE_VGA)?MAX_XRES_VGA:MAX_XRES_QVGA;
-+ u16 yres = (tc6393fb_lcdMode == LCD_MODE_VGA)?MAX_YRES_VGA:MAX_YRES_QVGA;
-+
-+ cmd[0] = PXAIO_COMDI_DSADR|PXAIO_COMDD_DSADR(((int)remapped_fbuf));
-+ cmd[1] = PXAIO_COMDI_DHPIX|PXAIO_COMDD_DHPIX(xres - 1);
-+ cmd[2] = PXAIO_COMDI_DVPIX|PXAIO_COMDD_DVPIX(yres - 1);
-+ cmd[3] = PXAIO_COMDI_FILL|PXAIO_COMDD_FILL(0xffff);
-+ cmd[4] = PXAIO_COMDI_FLGO;
-+
-+ tc6393_acc_write(cmd,5);
-+ tc6393_acc_sync();
-+
-+#endif // end USE_ACCELERATOR
-+}
-+
-+static DECLARE_WAIT_QUEUE_HEAD(blank_queue);
-+
-+static void tc6393_pm_suspend(int suspend_mode)
-+{
-+#ifndef STATIC_IMAGE_BUF
-+ int i,j;
-+ u32 *pVram = (u32*)remapped_fbuf;
-+#endif
-+
-+#ifdef USE_ACCELERATOR
-+ tc6393_acc_sync();
-+#endif
-+
-+ if (!tc6393fb_isblank) {
-+#ifdef STATIC_IMAGE_BUF
-+ save_image();
-+#else
-+ for (i = 0; i < current_par.yres/SAVE_LINES; i++) {
-+ if (gSaveImagePtr[i] != NULL){
-+ kfree(gSaveImagePtr[i]);
-+ gSaveImagePtr[i] = NULL;
-+ }
-+ gSaveImagePtr[i] = kmalloc(current_par.xres * BITS_PER_PIXEL*SAVE_LINES / 8, GFP_KERNEL);
-+ if (gSaveImagePtr[i] != NULL){
-+ memcpy(gSaveImagePtr[i],pVram,current_par.xres*SAVE_LINES*2);
-+ pVram += current_par.xres*SAVE_LINES/2;
-+ }
-+ else {
-+ printk("can't alloc pre-off image buffer %d\n", i);
-+ for (j = 0; j < i; j++) {
-+ if (gSaveImagePtr[i] != NULL) {
-+ kfree(gSaveImagePtr[i]);
-+ gSaveImagePtr[i] = NULL;
-+ }
-+ }
-+ break;
-+ }
-+ }
-+ for (; i < HORIZONTAL_LINE_VGA/SAVE_LINES; i++) {
-+ gSaveImagePtr[i] = NULL;
-+ }
-+#endif
-+
-+#ifdef CONFIG_PM
-+ tosa_bl_pm_callback(NULL, PM_SUSPEND, NULL);
-+#endif
-+
-+ tc6393fb_isblank = 1;
-+
-+ wait_vsync();
-+ tc6393_clear_screen(LCD_MODE_VGA);
-+ wait_vsync();
-+ wait_vsync();
-+
-+ // TG LCD VHSA off
-+ tc6393fb_setpnlctl(0x4);
-+ if (suspend_mode) interruptible_sleep_on_timeout((wait_queue_head_t*)&blank_queue, 50/2 );
-+ else mdelay(50);
-+
-+ // TG LCD signal off
-+ tc6393fb_setpnlctl(0x6);
-+ wait_vsync();
-+ if (suspend_mode) interruptible_sleep_on_timeout((wait_queue_head_t*)&blank_queue, 50/2 );
-+ else mdelay(50);
-+
-+ // TG Off
-+ writew((u16)(readw(remapped_regs + TC6393_SYS_GPODSR1) | 0x0001),remapped_regs + TC6393_SYS_GPODSR1);
-+ if (suspend_mode) interruptible_sleep_on_timeout((wait_queue_head_t*)&blank_queue, 120/2 );
-+ else mdelay(120);
-+
-+ // CLK: Stop
-+ writew((u16)(0x0), remapped_lcdbase + KH_CLKEN);
-+ if (suspend_mode) interruptible_sleep_on_timeout((wait_queue_head_t*)&blank_queue, 100/2 );
-+ else mdelay(100);
-+
-+ // L3V Off
-+ writew((u16)(readw(remapped_scoop2_2 + SCP_GPWR) & ~SCOOP22_L3VON),remapped_scoop2_2 + SCP_GPWR);
-+
-+//X tc6393fb_isblank = 1;
-+ }
-+}
-+
-+static void tc6393_pm_resume()
-+{
-+#ifndef STATIC_IMAGE_BUF
-+ int i;
-+ u32 *pVram = (u32*)remapped_fbuf;
-+#endif
-+
-+ tc6393_hw_init();
-+
-+#ifdef USE_ACCELERATOR
-+ // erase whole VRAM
-+ if (tc6393fb_lcdMode == LCD_MODE_QVGA) {
-+ memset(remapped_fbuf,0xff,MAX_XRES_VGA*MAX_YRES_VGA*2);
-+ }
-+#endif
-+
-+#ifdef STATIC_IMAGE_BUF
-+ load_image();
-+#else
-+ if (gSaveImagePtr[0] != NULL){
-+ for (i = 0; i < (current_par.yres)/SAVE_LINES; i++) {
-+ if (gSaveImagePtr[i] == NULL) {
-+ printk("can't find pre-off image buffer %d\n", i);
-+ continue;
-+ }
-+ memcpy(pVram,gSaveImagePtr[i],current_par.xres*SAVE_LINES*2);
-+ pVram += current_par.xres*SAVE_LINES/2;
-+ kfree(gSaveImagePtr[i]);
-+ gSaveImagePtr[i] = NULL;
-+ }
-+ }
-+#endif
-+
-+ tc6393fb_setlcdmode(tc6393fb_lcdMode);
-+
-+#ifdef CONFIG_PM
-+ tosa_bl_pm_callback(NULL, PM_RESUME, NULL);
-+#endif
-+
-+}
-+
-+#ifdef CONFIG_PM
-+static int tc6393_pm_callback(struct pm_dev* pm_dev,
-+ pm_request_t req, void* data)
-+{
-+ switch (req) {
-+ case PM_SUSPEND:
-+ tc6393_pm_suspend(0);
-+ break;
-+
-+ case PM_RESUME:
-+ tc6393_pm_resume();
-+ break;
-+ }
-+ return 0;
-+}
-+
-+void tc6393_fatal_off(void)
-+{
-+ tc6393_pm_suspend(0);
-+}
-+#endif //CONFIG_PM
-+
-+// EOF
-diff -Nur linux_c860_org/drivers/video/tc6393fb.h linux/drivers/video/tc6393fb.h
---- linux_c860_org/drivers/video/tc6393fb.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/video/tc6393fb.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,249 @@
-+/*
-+ * linux/drivers/video/tc6393fb.h
-+ *
-+ * Frame Buffer Device for TOSHIBA tc6393
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ */
-+
-+#if !defined (_TC6393FB)
-+#define _TC6393FB
-+
-+#define KH_COMMAND_REG 0x004
-+#define KH_BASEADDR_H 0x012
-+#define KH_BASEADDR_L 0x010
-+#define KH_CLKEN 0x040
-+#define KH_GCLKEN 0x042
-+#define KH_PSWCLR 0x050
-+#define KH_VRAMTC 0x060
-+#define KH_VRAMRC 0x061
-+#define KH_VRAMAC 0x062
-+#define KH_VRAMBC 0x064
-+#define KH_VMREQMD 0x06F
-+
-+#define KH_CMDADR_L 0x00A
-+#define KH_CMDADR_H 0x00C
-+#define KH_CMDFIF 0x00E
-+#define KH_CMDFINT 0x010
-+#define KH_BINTMSK 0x012
-+#define KH_BINTST 0x014
-+#define KH_FIPT 0x016
-+#define KH_DMAST 0x018
-+#define KH_COMD_L 0x01C
-+#define KH_COMD_H 0x01E
-+#define KH_FIFOR 0x022
-+
-+#define PXAIO_DMAST_DMA 0x0001
-+#define PXAIO_DMAST_BLT 0x0002
-+
-+#define kurohyo_LCDCREG_NUM 18
-+
-+#define PLMOD 0x164
-+#define PLCST 0x102
-+#define VHLIN 0x008
-+#define PLDSA_H 0x124
-+#define PLDSA_L 0x122
-+#define PLPIT_H 0x12c
-+#define PLPIT_L 0x12a
-+#define PLHT 0x140
-+#define PLHDS 0x142
-+#define PLHSS 0x144
-+#define PLHSE 0x146
-+#define PLHBS 0x148
-+#define PLHBE 0x14a
-+#define PLHPX 0x14c
-+#define PLVT 0x150
-+#define PLVDS 0x152
-+#define PLVSS 0x154
-+#define PLVSE 0x156
-+#define PLVBS 0x158
-+#define PLVBE 0x15a
-+#define PLGMD 0x12e
-+#define PLCST 0x102
-+#define PLMOD 0x164
-+#define MISC 0x166
-+#define PLCNT 0x100
-+#define PIFEN 0x18e
-+#define PLCLN 0x160
-+
-+
-+#define CLKCTL_USB_MASK 0x0002
-+#define CLKCTL_CONFIG_DTA 0x1310
-+
-+#define SCOOP_CF_MODE 0x0100
-+#define SCOOP21_OUT_MASK 0x0004
-+#define SCOOP22_OUT_MASK 0x036e
-+
-+#define SCOOP21_RESET_IN 0x0004
-+#define SCOOP22_SUSPEND 0x0020
-+#define SCOOP22_L3VON 0x0040
-+
-+
-+#define PLCNT_SOFT_RESET 0x0001
-+#define PLCNT_STOP_CKP 0x0004
-+#define PLCNT_DEFAULT 0x0010
-+
-+
-+
-+#define FUNC_SLCDEN 0x0004
-+#define PLL10_QVGA 0xf203
-+#define PLL11_QVGA 0x00e7
-+#define PLL10_VGA 0xdf00
-+#define PLL11_VGA 0x002c
-+
-+typedef struct
-+{
-+ unsigned short Index;
-+ unsigned short Value;
-+} TC6393_REGS;
-+
-+static TC6393_REGS kurohyoLcdcQVGA[] =
-+{
-+ { VHLIN, 0x01E0 }, // VHLIN
-+ { PLDSA_H, 0x0000 }, // PLDSA display start address high
-+ { PLDSA_L, 0x0000 }, // PLDSA display start address low
-+ { PLPIT_H, 0x0000 }, // PLPIT horizontal pixel high
-+ { PLPIT_L, 0x01E0 }, // PLPIT horizontal pixel low
-+ { PLHT, 0x0145 }, // PLHT horizontal total
-+ { PLHDS, 0x0026 }, // PLHDS horizontal display start
-+ { PLHSS, 0x0000 }, // PLHSS H-sync start
-+ { PLHSE, 0x0002 }, // PLHSE H-sync end
-+ { PLHPX, 0x00f0 }, // PLHPX Horizontal number of pixel
-+ { PLVT, 0x014F }, // PLVT Vertical total
-+ { PLVDS, 0x0002 }, // PLVDS Vertical display start
-+ { PLVSS, 0x0000 }, // PLVSS V-sync start
-+ { PLVSE, 0x0001 }, // PLVSE V-sync end
-+ { MISC, 0x0003 }, // MISC RGB565 mode
-+ { PLGMD, 0x0001 }, // PLGMD vram access enable
-+ { PLCST, 0x4007 }, // PLCST
-+ { PLMOD, 0x0003 }, // PLMOD Sync polarity
-+};
-+
-+static TC6393_REGS kurohyoLcdcVGA[] =
-+{
-+ { VHLIN, 0x03c0 }, // VHLIN
-+ { PLDSA_H, 0x0000 }, // PLDSA display start address high
-+ { PLDSA_L, 0x0000 }, // PLDSA display start address low
-+ { PLPIT_H, 0x0000 }, // PLPIT horizontal pixel high
-+ { PLPIT_L, 0x03c0 }, // PLPIT horizontal pixel low
-+ { PLHT, 0x0289 }, // PLHT horizontal total
-+ { PLHDS, 0x004e }, // PLHDS horizontal display start
-+ { PLHSS, 0x0000 }, // PLHSS H-sync start
-+ { PLHSE, 0x0002 }, // PLHSE H-sync end
-+ { PLHPX, 0x01e0 }, // PLHPX Horizontal number of pixel
-+ { PLVT, 0x028f }, // PLVT Vertical total
-+ { PLVDS, 0x0002 }, // PLVDS Vertical display start
-+ { PLVSS, 0x0000 }, // PLVSS V-sync start
-+ { PLVSE, 0x0001 }, // PLVSE V-sync end
-+ { MISC, 0x0003 }, // MISC RGB565 mode
-+ { PLGMD, 0x0001 }, // PLGMD vram access enable
-+ { PLCST, 0x4007 }, // PLCST
-+ { PLMOD, 0x0003 }, // PLMOD Sync polarity
-+};
-+
-+#define TG_REG0_VQV 0x0001
-+#define TG_REG0_COLOR 0x0002
-+#define TG_REG0_UD 0x0004
-+#define TG_REG0_LR 0x0008
-+
-+#define CK_SSP (0x1u << 3)
-+
-+/*
-+ * Accelerator COMMAND
-+ */
-+
-+// Set Command
-+#define PXAIO_COMDI_CSADR 0x00000000
-+#define PXAIO_COMDD_CSADR(x) (x&0x001ffffe)
-+#define PXAIO_COMDI_CHPIX 0x01000000
-+#define PXAIO_COMDD_CHPIX(x) (x&0x000003ff)
-+#define PXAIO_COMDI_CVPIX 0x02000000
-+#define PXAIO_COMDD_CVPIX(x) (x&0x000003ff)
-+#define PXAIO_COMDI_PSADR 0x03000000
-+#define PXAIO_COMDD_PSADR(x) (x&0x00fffffe)
-+#define PXAIO_COMDI_PHPIX 0x04000000
-+#define PXAIO_COMDD_PHPIX(x) (x&0x000003ff)
-+#define PXAIO_COMDI_PVPIX 0x05000000
-+#define PXAIO_COMDD_PVPIX(x) (x&0x000003ff)
-+#define PXAIO_COMDI_PHOFS 0x06000000
-+#define PXAIO_COMDD_PHOFS(x) (x&0x000003ff)
-+#define PXAIO_COMDI_PVOFS 0x07000000
-+#define PXAIO_COMDD_PVOFS(x) (x&0x000003ff)
-+#define PXAIO_COMDI_POADR 0x08000000
-+#define PXAIO_COMDD_POADR(x) (x&0x00fffffe)
-+#define PXAIO_COMDI_RSTR 0x09000000
-+#define PXAIO_COMDD_RSTR(x) (x&0x000000ff)
-+#define PXAIO_COMDI_TCLOR 0x0A000000
-+#define PXAIO_COMDD_TCLOR(x) (x&0x0000ffff)
-+#define PXAIO_COMDI_FILL 0x0B000000
-+#define PXAIO_COMDD_FILL(x) (x&0x0000ffff)
-+#define PXAIO_COMDI_DSADR 0x0C000000
-+#define PXAIO_COMDD_DSADR(x) (x&0x00fffffe)
-+#define PXAIO_COMDI_SSADR 0x0D000000
-+#define PXAIO_COMDD_SSADR(x) (x&0x00fffffe)
-+#define PXAIO_COMDI_DHPIX 0x0E000000
-+#define PXAIO_COMDD_DHPIX(x) (x&0x000003ff)
-+#define PXAIO_COMDI_DVPIX 0x0F000000
-+#define PXAIO_COMDD_DVPIX(x) (x&0x000003ff)
-+#define PXAIO_COMDI_SHPIX 0x10000000
-+#define PXAIO_COMDD_SHPIX(x) (x&0x000003ff)
-+#define PXAIO_COMDI_SVPIX 0x11000000
-+#define PXAIO_COMDD_SVPIX(x) (x&0x000003ff)
-+#define PXAIO_COMDI_LBINI 0x12000000
-+#define PXAIO_COMDD_LBINI(x) (x&0x0000ffff)
-+#define PXAIO_COMDI_LBK2 0x13000000
-+#define PXAIO_COMDD_LBK2(x) (x&0x0000ffff)
-+#define PXAIO_COMDI_SHBINI 0x14000000
-+#define PXAIO_COMDD_SHBINI(x) (x&0x0000ffff)
-+#define PXAIO_COMDI_SHBK2 0x15000000
-+#define PXAIO_COMDD_SHBK2(x) (x&0x0000ffff)
-+#define PXAIO_COMDI_SVBINI 0x16000000
-+#define PXAIO_COMDD_SVBINI(x) (x&0x0000ffff)
-+#define PXAIO_COMDI_SVBK2 0x17000000
-+#define PXAIO_COMDD_SVBK2(x) (x&0x0000ffff)
-+
-+// Action Command
-+#define PXAIO_COMDI_CMGO 0x20000000
-+#define PXAIO_COMDD_CMGO_CEND 0x00000001
-+#define PXAIO_COMDD_CMGO_INT 0x00000002
-+#define PXAIO_COMDD_CMGO_CMOD 0x00000010
-+#define PXAIO_COMDD_CMGO_CDVRV 0x00000020
-+#define PXAIO_COMDD_CMGO_CDHRV 0x00000040
-+#define PXAIO_COMDD_CMGO_RUND 0x00008000
-+#define PXAIO_COMDI_SCGO 0x21000000
-+#define PXAIO_COMDD_SCGO_CEND 0x00000001
-+#define PXAIO_COMDD_SCGO_INT 0x00000002
-+#define PXAIO_COMDD_SCGO_ROP3 0x00000004
-+#define PXAIO_COMDD_SCGO_TRNS 0x00000008
-+#define PXAIO_COMDD_SCGO_DVRV 0x00000010
-+#define PXAIO_COMDD_SCGO_DHRV 0x00000020
-+#define PXAIO_COMDD_SCGO_SVRV 0x00000040
-+#define PXAIO_COMDD_SCGO_SHRV 0x00000080
-+// Specifications Document Rev.18 Add
-+#define PXAIO_COMDD_SCGO_DSTXY 0x00008000
-+#define PXAIO_COMDI_SBGO 0x22000000
-+#define PXAIO_COMDD_SBGO_CEND 0x00000001
-+#define PXAIO_COMDD_SBGO_INT 0x00000002
-+#define PXAIO_COMDD_SBGO_DVRV 0x00000010
-+#define PXAIO_COMDD_SBGO_DHRV 0x00000020
-+#define PXAIO_COMDD_SBGO_SVRV 0x00000040
-+#define PXAIO_COMDD_SBGO_SHRV 0x00000080
-+#define PXAIO_COMDD_SBGO_SBMD 0x00000100
-+#define PXAIO_COMDI_FLGO 0x23000000
-+#define PXAIO_COMDD_FLGO_CEND 0x00000001
-+#define PXAIO_COMDD_FLGO_INT 0x00000002
-+#define PXAIO_COMDD_FLGO_ROP3 0x00000004
-+#define PXAIO_COMDI_LDGO 0x24000000
-+#define PXAIO_COMDD_LDGO_CEND 0x00000001
-+#define PXAIO_COMDD_LDGO_INT 0x00000002
-+#define PXAIO_COMDD_LDGO_ROP3 0x00000004
-+#define PXAIO_COMDD_LDGO_ENDPX 0x00000008
-+#define PXAIO_COMDD_LDGO_LVRV 0x00000010
-+#define PXAIO_COMDD_LDGO_LHRV 0x00000020
-+#define PXAIO_COMDD_LDGO_LDMOD 0x00000040
-+
-+#endif
-diff -Nur linux_c860_org/drivers/video/tosaLogoMsg.c linux/drivers/video/tosaLogoMsg.c
---- linux_c860_org/drivers/video/tosaLogoMsg.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/video/tosaLogoMsg.c 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,488 @@
-+/* Logo Screen 16bits RGB(565) data*/
-+#ifndef __initdata
-+#define __initdata
-+#endif
-+static const int logo_msg_width_en __initdata = 32;
-+static const int logo_msg_height_en __initdata = 480;
-+static const unsigned short logo_msg_data_en[32*480] __initdata ={
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0x528a,0x0000,0x528a,0xa514,0xa514,0xa514,0xa514,0xa514,0x632c,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bcf,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4a69,0xffff,0xffff,0xffff,0xffff,0xffff,0x8430,0x0000,0x73ae,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x0020,0x0020,0xbdd7,0xffff,0xffff,0xffff,0xdedb,0x18e3,0x0000,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x0000,0x39e7,0x5aeb,0x4a49,0x0841,0x0000,0x4208,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x94b2,0x18e3,0x0000,0x0000,0x0000,0x0841,0x632c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0xc638,0xce79,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb596,0x8c71,0x7bef,0x8430,0xad55,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x738e,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x4228,0x0000,0x18c3,0x7bcf,0xad75,0x31a6,0x10a2,0x9492,0x4a69,0x0000,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x0000,0x39c7,0xef7d,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xad55,0x0020,0x2945,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x528a,0x0000,0xd69a,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x5acb,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xffff,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xc618,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x39e7,0x0000,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x0000,0x2124,0xce79,0xffff,0xffff,0x4228,0x2104,0xffff,0xffdf,0x7bef,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x0000,0x9cf3,0xffff,0x4228,0x0861,0x4a69,0x10a2,0x0000,0x2965,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x39e7,0xad75,0xffff,0x4228,0x0000,0x0000,0x31a6,0x9492,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xdefb,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xb596,0x7bef,0x9492,0xdefb,0xffff,0xffff,0xffff,0xe71c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x39e7,0x0000,0x0000,0x0000,0x0020,0x9cf3,0xffff,0xffff,0x4228,0x10a2,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x39c7,0xb5b6,0xa514,0x10a2,0x0841,0xe71c,0xffff,0x73ae,0x1082,0x0000,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xdedb,0xffff,0xffff,0x94b2,0x0000,0x94b2,0xffff,0xffff,0xe73c,0x18c3,0x1082,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xffff,0xffff,0xffff,0xd69a,0x0000,0x630c,0xffff,0xffff,0xffff,0x6b6d,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0xd6ba,0xffff,0xffff,0xffdf,0x0841,0x39c7,0xffff,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x2104,0x4a69,0xffdf,0xffff,0xffff,0x4228,0x0020,0xf79e,0xffff,0xffff,0x4a49,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x0020,0x39c7,0x9cf3,0xc638,0x738e,0x0000,0x8430,0xbdf7,0x6b4d,0x0000,0x18c3,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x528a,0x738e,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xa514,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8410,0x2945,0xad75,0xffff,0xffff,0xef5d,0x73ae,0x4228,0x52aa,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x2124,0x0000,0x0861,0xa534,0xffff,0xef7d,0x2104,0x0000,0x0000,0x0000,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x528a,0xef7d,0xffff,0xffff,0x8430,0x0000,0x2945,0xef5d,0xdefb,0x10a2,0x1082,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0xe71c,0xffff,0xffff,0xffff,0x2124,0x0000,0xa534,0xffff,0xffff,0x6b6d,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xffff,0xffff,0xffff,0xd69a,0x0000,0x0841,0xf79e,0xffff,0xffff,0x7bcf,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0xbdf7,0xffff,0xffff,0x73ae,0x0000,0x528a,0xffff,0xffff,0xf79e,0x2945,0x0020,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce79,0x0020,0x18c3,0x8c71,0x8c51,0x0861,0x0000,0xad75,0xffff,0xad75,0x18c3,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0841,0x0000,0x0000,0x0000,0x5acb,0xffff,0xffff,0xad55,0x0861,0x632c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xb596,0xa514,0xd6ba,0xffff,0xffff,0xffff,0xf7be,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x7bef,0x31a6,0x0861,0x0000,0x0020,0x2945,0x5acb,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0861,0x0000,0x0020,0x2965,0x1082,0x0020,0x1082,0x0000,0x0000,0x5aeb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0861,0x0020,0x8c51,0xf79e,0xffff,0x4228,0x2104,0xffff,0xce79,0x39c7,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x9492,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xf79e,0x2124,0x0841,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xf79e,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x73ae,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xef7d,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x6b4d,0x0000,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bcf,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xe71c,0x1082,0x18c3,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x18c3,0x0000,0x4a69,0xd6ba,0xffff,0x4228,0x18e3,0xce79,0x9492,0x18c3,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x2124,0x0000,0x9cd3,0xffff,0x4228,0x0000,0x0000,0x0000,0x18c3,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xbdd7,0xdefb,0xffff,0x8c51,0x5aeb,0x73ae,0xb596,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0x0000,0x0000,0x0000,0x10a2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0x0000,0x0000,0x0000,0x2965,0x632c,0xa514,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x0000,0x0861,0x4208,0x7bcf,0xb5b6,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x2124,0x528a,0x8c71,0xc618,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xc618,0x9492,0x52aa,0x2124,0x0000,0x0000,0x0020,0x31a6,0x632c,0xa514,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xb5b6,0x7bef,0x4a69,0x1082,0x0000,0x0000,0x1082,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xce79,0x9492,0x5acb,0x31a6,0x0020,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xb596,0x7bcf,0x4208,0x0861,0x0000,0x0000,0x1082,0x4228,0x7bef,0xb596,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x0000,0x31a6,0x632c,0xa514,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x18c3,0x528a,0x9492,0xd69a,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xb596,0x6b6d,0x39c7,0x0020,0x0000,0x0000,0x0861,0x4228,0x8410,0xbdd7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb5b6,0x7bcf,0x39c7,0x0020,0x0000,0x0000,0x0020,0x39c7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb5b6,0x8410,0x4208,0x0841,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x31a6,0x0000,0x1082,0x630c,0xef7d,0xffff,0xffff,0x8430,0x9492,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0020,0x0000,0x39c7,0x2124,0x0000,0x31a6,0xffdf,0xffff,0x31a6,0x0000,0x18e3,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0x9cd3,0xffff,0xffdf,0x52aa,0x0000,0xbdd7,0xffff,0xe73c,0x73ae,0x0000,0x39e7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xf7be,0xffff,0xffff,0xb5b6,0x0000,0x738e,0xffff,0xffff,0xffff,0x4a49,0x0000,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xf79e,0xffff,0xffff,0xef5d,0x0000,0x528a,0xffff,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0x2104,0x18c3,0xffff,0xffff,0xffff,0x6b6d,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0861,0xb5b6,0xffff,0xffff,0x6b6d,0x0000,0xd69a,0xffff,0xe71c,0x18c3,0x0000,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x5aeb,0x0020,0x0000,0x18e3,0x4228,0x2965,0x0000,0x2124,0x4208,0x0841,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x630c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0xd69a,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xffff,0xffff,0xa514,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0x4228,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xffff,0xffff,0xd69a,0xc638,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xd69a,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0x4a49,0x0000,0xc638,0xc638,0xc638,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0x4208,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x2965,0x0000,0x7bef,0x7bef,0x7bef,0x7bef,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0xad55,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x5aeb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x18c3,0x0000,0x4228,0x4228,0x0861,0x0000,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xdefb,0x0000,0x2124,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x5aeb,0xffff,0xffff,0xffff,0x0000,0x31a6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb5b6,0x9492,0x7bef,0x7bef,0xa534,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x73ae,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0x18c3,0x7bcf,0xad75,0xc638,0xbdf7,0x94b2,0x4a69,0x0000,0x0020,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x0000,0x39e7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad55,0x0020,0x2124,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x528a,0x0000,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bcf,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b4d,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2965,0x0000,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x0020,0x0861,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x528a,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x94b2,0x0020,0x0000,0x18c3,0x4a69,0x5aeb,0x5acb,0x39c7,0x0020,0x0000,0x39c7,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x5acb,0x10a2,0x0000,0x0000,0x0000,0x0000,0x31a6,0x9492,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xdefb,0xdefb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x2124,0x0000,0x0000,0x2965,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x73ae,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x10a2,0x0000,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x0841,0x0000,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xbdd7,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xb596,0x7bef,0x9492,0xdefb,0xffff,0xffff,0xffff,0xe71c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x39e7,0x0000,0x0000,0x0000,0x0020,0x9cf3,0xffff,0xffff,0x4228,0x10a2,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x39c7,0xb5b6,0xa514,0x10a2,0x0841,0xe71c,0xffff,0x73ae,0x1082,0x0000,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xdedb,0xffff,0xffff,0x94b2,0x0000,0x94b2,0xffff,0xffff,0xe73c,0x18c3,0x1082,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xffff,0xffff,0xffff,0xd69a,0x0000,0x630c,0xffff,0xffff,0xffff,0x6b6d,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0xd6ba,0xffff,0xffff,0xffdf,0x0841,0x39c7,0xffff,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x2104,0x4a69,0xffdf,0xffff,0xffff,0x4228,0x0020,0xf79e,0xffff,0xffff,0x4a49,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x0020,0x39c7,0x9cf3,0xc638,0x738e,0x0000,0x8430,0xbdf7,0x6b4d,0x0000,0x18c3,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x528a,0x738e,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xa514,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x5aeb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x18c3,0x0000,0x4228,0x4228,0x0861,0x0000,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xdefb,0x0000,0x2124,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x5aeb,0xffff,0xffff,0xffff,0x0000,0x31a6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb596,0x8c71,0x7bef,0x8430,0xad55,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x738e,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x4228,0x0000,0x18c3,0x7bcf,0xad75,0x31a6,0x10a2,0x9492,0x4a69,0x0000,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x0000,0x39c7,0xef7d,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xad55,0x0020,0x2945,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x528a,0x0000,0xd69a,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x5acb,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xffff,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xc618,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x39e7,0x0000,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x0000,0x2124,0xce79,0xffff,0xffff,0x4228,0x2104,0xffff,0xffdf,0x7bef,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x0000,0x9cf3,0xffff,0x4228,0x0861,0x4a69,0x10a2,0x0000,0x2965,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x39e7,0xad75,0xffff,0x4228,0x0000,0x0000,0x31a6,0x9492,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xdefb,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0x0000,0x0000,0x0000,0x10a2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0x0000,0x0000,0x0000,0x2965,0x632c,0xa514,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x0000,0x0861,0x4208,0x7bcf,0xb5b6,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x2124,0x528a,0x8c71,0xc618,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xc618,0x9492,0x52aa,0x2124,0x0000,0x0000,0x0020,0x31a6,0x632c,0xa514,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xb5b6,0x7bef,0x4a69,0x1082,0x0000,0x0000,0x1082,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xce79,0x9492,0x5acb,0x31a6,0x0020,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xb596,0x7bcf,0x4208,0x0861,0x0000,0x0000,0x1082,0x4228,0x7bef,0xb596,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x0000,0x31a6,0x632c,0xa514,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x18c3,0x528a,0x9492,0xd69a,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xb596,0x6b6d,0x39c7,0x0020,0x0000,0x0000,0x0861,0x4228,0x8410,0xbdd7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb5b6,0x7bcf,0x39c7,0x0020,0x0000,0x0000,0x0020,0x39c7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb5b6,0x8410,0x4208,0x0841,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xad55,0x7bcf,0x18c3,0x3186,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x1082,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2965,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x738e,0x2945,0x0000,0x18e3,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xbdd7,0x8430,0x18e3,0x4a49,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x1082,0x39e7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2945,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x738e,0x2965,0x0000,0x18c3,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0x4228,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0xffff,0xffff,0x73ae,0x4228,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xb596,0x7bef,0x10a2,0x31a6,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x1082,0x4a49,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xce59,0x632c,0x0000,0x0861,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x94b2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x632c,0x8c71,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x9cf3,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0000,0x0861,0x8430,0xb5b6,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x630c,0x0861,0xa514,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x0861,0x0000,0x0000,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x8430,0x528a,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x18c3,0x0000,0x4228,0x4228,0x4228,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x528a,0x2945,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x7bef,0x31a6,0x0861,0x0000,0x0020,0x2945,0x5acb,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0861,0x0000,0x0020,0x2965,0x1082,0x0020,0x1082,0x0000,0x0000,0x5aeb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0861,0x0020,0x8c51,0xf79e,0xffff,0x4228,0x2104,0xffff,0xce79,0x39c7,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x9492,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xf79e,0x2124,0x0841,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xf79e,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x73ae,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xef7d,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x6b4d,0x0000,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bcf,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xe71c,0x1082,0x18c3,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x18c3,0x0000,0x4a69,0xd6ba,0xffff,0x4228,0x18e3,0xce79,0x9492,0x18c3,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x2124,0x0000,0x9cd3,0xffff,0x4228,0x0000,0x0000,0x0000,0x18c3,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xbdd7,0xdefb,0xffff,0x8c51,0x5aeb,0x73ae,0xb596,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xad55,0xdefb,0xffff,0xffff,0xffff,0xef7d,0xc638,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x1082,0x0000,0x9cd3,0xffff,0xffff,0x8c71,0x0841,0x0000,0x0000,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x0861,0x7bcf,0xdefb,0xffff,0xbdf7,0x0000,0x0020,0x6b4d,0x5aeb,0x0000,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x630c,0x0000,0xad55,0xffff,0xffff,0xffff,0x528a,0x0000,0x6b6d,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xffdf,0xffff,0xffff,0xf79e,0x0841,0x0000,0xd69a,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0xef5d,0xffff,0xffff,0xa534,0x0000,0x2124,0xffff,0xffff,0xffff,0x630c,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x6b6d,0xffdf,0xf7be,0x39c7,0x0000,0x7bef,0xffff,0xef5d,0x8c71,0x0020,0x18e3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x2945,0x0000,0x1082,0x1082,0x0000,0x0861,0xe73c,0xffff,0x94b2,0x0000,0x0841,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x738e,0x31a6,0x2104,0x52aa,0xce79,0xffff,0xffff,0xd69a,0x8c51,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x2104,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x9492,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xa514,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x2104,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ };
-diff -Nur linux_c860_org/drivers/video/tosaLogoMsgJ.c linux/drivers/video/tosaLogoMsgJ.c
---- linux_c860_org/drivers/video/tosaLogoMsgJ.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/video/tosaLogoMsgJ.c 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,488 @@
-+/* Logo Screen 16bits RGB(565) data*/
-+#ifndef __initdata
-+#define __initdata
-+#endif
-+static const int logo_msg_width_jp __initdata = 32;
-+static const int logo_msg_height_jp __initdata = 480;
-+static const unsigned short logo_msg_data_jp[32*480] __initdata ={
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x0000,0x39c7,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0x0020,0x39c7,0x9492,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x0861,0x0000,0x0020,0x7bef,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0x94b2,0x0861,0x0000,0x3186,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xbdd7,0x3186,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xdefb,0x3186,0x0000,0x0861,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x0861,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xf7be,0x632c,0x0000,0x0000,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0x94b2,0x0020,0x0000,0x52aa,0xe73c,0xffff,0xffff,0xffff,0xffff,0xd69a,0x0020,0x2965,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x1082,0x0000,0x0841,0x5acb,0x94b2,0xa514,0x6b4d,0x0861,0x0000,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x738e,0x4228,0x4228,0x5acb,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xdefb,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8410,0x0000,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xc618,0x18c3,0x2124,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x630c,0x0000,0x0020,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdedb,0x0861,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x4a49,0x0000,0x0020,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x94b2,0x0000,0x0000,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xd6ba,0x39e7,0x0000,0x0020,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x0861,0xc618,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xf7be,0x52aa,0x0000,0x0000,0x632c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x0861,0xbdd7,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x8410,0x0020,0x0000,0x18e3,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x5acb,0x0000,0x0000,0x6b4d,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xbdf7,0x2104,0x0000,0x0000,0x2965,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0861,0x0000,0x0000,0x2124,0x2965,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xf7be,0x8410,0x1082,0x2124,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x738e,0x18c3,0x0000,0x0000,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x7bef,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7be,0xa534,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x630c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xad55,0x2945,0x0000,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7be,0x10a2,0x0000,0x0000,0x18c3,0x2104,0x4208,0x4228,0x5acb,0x5aeb,0x4a69,0x0000,0x7bef,0xffff,0xffff,0xdefb,0x39c7,0x0000,0x0000,0x2124,0x94b2,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xc638,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xffff,0xa514,0x0861,0x0000,0x0861,0x8c71,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xc638,0xc638,0xa534,0xa514,0x94b2,0x7bef,0x7bef,0x630c,0xad75,0x8c71,0x0000,0x0000,0x3186,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0000,0x0000,0x528a,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce79,0x0020,0x0000,0x39e7,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2945,0x0000,0x18e3,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x2104,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x630c,0x52aa,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xce59,0xffff,0xffff,0xffff,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0020,0x0000,0x4228,0xe73c,0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x39e7,0x0000,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x10a2,0x0000,0x10a2,0x9cf3,0xffdf,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x4a49,0x0000,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x632c,0x0020,0x0000,0x2124,0x94b2,0xe73c,0x0000,0x2104,0xffff,0xffff,0x6b6d,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x73ae,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x2104,0x2104,0x1082,0x0000,0x528a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xef5d,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0x39c7,0x0000,0x2104,0xd6ba,0xdefb,0x0000,0x18e3,0xdefb,0xdefb,0xdefb,0x0861,0x0000,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x39e7,0x0000,0x0861,0xd6ba,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0x52aa,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x5aeb,0x73ae,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x18e3,0x0861,0xc618,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0x9492,0x2965,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xffff,0xffff,0xffff,0xffff,0x7bef,0x9492,0xffff,0xffff,0xffff,0xe71c,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x9cd3,0x5aeb,0xdedb,0xffff,0x7bef,0x0000,0xa514,0xef7d,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xd69a,0x2945,0x0000,0x2104,0x4228,0x4228,0x31a6,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x1082,0x7bef,0x7bef,0x2965,0x0000,0x630c,0x7bef,0x4208,0x0000,0xa514,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x1082,0x7bef,0x7bef,0x2965,0x0000,0x630c,0x7bef,0x4208,0x0000,0xa514,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xe71c,0x528a,0x0000,0x4208,0x7bef,0x7bef,0x630c,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xc638,0xa514,0xe73c,0xffff,0x7bef,0x0000,0xa514,0xe71c,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x4228,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xdefb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf79e,0x3186,0x0000,0x528a,0xb5b6,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe73c,0x52aa,0x0000,0x0000,0x0000,0x0841,0x39e7,0x5aeb,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x6b6d,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdefb,0xe73c,0xffff,0xffff,0xe71c,0xb5b6,0x9cd3,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x528a,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x6b4d,0x0000,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x632c,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0x5acb,0x73ae,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x9492,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0x2104,0x4228,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xc638,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0x18e3,0x4228,0xf7be,0xc638,0xc638,0xc638,0x630c,0x0000,0xad55,0xc638,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffdf,0x10a2,0x0000,0xdedb,0xffff,0xf79e,0x5aeb,0x0000,0x4228,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x8410,0xef7d,0x39e7,0x0000,0x0000,0x4228,0xe73c,0x2104,0x0000,0x39e7,0x2104,0x0000,0x39e7,0x31a6,0xa514,0x0000,0x2965,0x5aeb,0x73ae,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd69a,0x0000,0x18c3,0x2124,0x0000,0x8410,0x2104,0x4228,0xffff,0x7bef,0x0000,0xdefb,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0x0000,0x738e,0xffff,0x2104,0x4228,0xffff,0x7bef,0x0000,0xdefb,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x2965,0x5aeb,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x0000,0xd6ba,0xffff,0x2104,0x4228,0xffff,0x7bef,0x0000,0xdefb,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffdf,0x18e3,0x0841,0x0020,0x2945,0xf79e,0x2104,0x4228,0xffff,0x528a,0x0000,0x8c71,0x528a,0x0000,0x8c71,0xa514,0x94b2,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x5acb,0x7bef,0x0000,0x4a49,0x18e3,0x4228,0xffff,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xa514,0xffdf,0x52aa,0x0000,0x0000,0x4228,0xffff,0x5aeb,0x5aeb,0x5aeb,0x2965,0x0000,0x528a,0x4a69,0x8c51,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x1082,0x0000,0xdefb,0xffff,0xf79e,0x39e7,0x0000,0x31a6,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd69a,0x0000,0x10a2,0xffff,0xffff,0xffff,0xffdf,0x39e7,0xc638,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x9cf3,0x0000,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x6b6d,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd6ba,0x9492,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xdefb,0xffdf,0xffff,0xf79e,0xdefb,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffdf,0x73ae,0x18e3,0x0020,0x2945,0x6b6d,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x9492,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x6b6d,0x0000,0x1082,0x2104,0x0861,0x0000,0x0861,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xef5d,0x0020,0x2945,0xf79e,0xffff,0xf7be,0x94b2,0x0020,0x0020,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x0020,0x18c3,0xef5d,0xffff,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7be,0x1082,0x0861,0x9cd3,0xd6ba,0xdefb,0xdefb,0xdefb,0x73ae,0x0000,0x5aeb,0xdefb,0xdefb,0xdefb,0xb596,0x0000,0x4208,0xdefb,0xdefb,0xdefb,0xdefb,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xad55,0x4228,0x2104,0x2104,0x2104,0x2104,0x2104,0x10a2,0x0000,0x1082,0x2104,0x2104,0x2104,0x0020,0x0000,0x2104,0x2104,0x2104,0x18c3,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x0000,0x52aa,0xffff,0xffff,0xffff,0x4228,0x0000,0xd69a,0xffff,0xffff,0xffdf,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x1082,0x18e3,0xffff,0xffff,0xffff,0x6b6d,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x73ae,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0xf79e,0xffff,0xffff,0xad55,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x1082,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xdefb,0xffff,0xffff,0xe73c,0x0841,0x39e7,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7be,0x18c3,0x0000,0x528a,0xef7d,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xb596,0x0000,0x39c7,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x9cf3,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x10a2,0x18e3,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b6d,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cf3,0x0000,0x630c,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x2945,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdedb,0x0000,0x1082,0xdedb,0xffff,0xffff,0xffff,0xad75,0x0861,0x0020,0xd6ba,0xffff,0xffff,0xffff,0xbdf7,0x0020,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0x1082,0x52aa,0x5aeb,0x39c7,0x0000,0x0000,0x8c51,0xffff,0xffff,0xffff,0xdedb,0x10a2,0x0000,0x4228,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x4a69,0x0000,0x0000,0x0000,0x0000,0x10a2,0x9cf3,0xffff,0xffff,0xffff,0xe71c,0x18c3,0x0000,0x2104,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xa534,0xa514,0xb5b6,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x18c3,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffdf,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x4a69,0x0000,0x4228,0xffdf,0xffff,0xffff,0xe73c,0x3186,0x1082,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad55,0x0020,0x0000,0x52aa,0xffdf,0xffff,0xffff,0x4228,0x0000,0x3186,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdedb,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0x738e,0x0000,0x0000,0x4228,0xef5d,0xffff,0xef5d,0x2124,0x0000,0x39e7,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xad75,0xffff,0xe73c,0x2124,0x0000,0x2104,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x8c51,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x2945,0x0000,0x0000,0x4228,0xd69a,0xe73c,0x4228,0x0000,0x0020,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x9492,0x1082,0x0000,0x39c7,0xffff,0xffdf,0x8c71,0x2124,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xc638,0xf7be,0xffff,0xd69a,0x7bef,0xad55,0x4a69,0xd6ba,0xffff,0xffff,0xffff,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xa514,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x94b2,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x2124,0x0000,0xad55,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x2104,0x0000,0x2124,0xf79e,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad55,0x0020,0x18c3,0xdefb,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x6b6d,0xdefb,0xdefb,0x0000,0x18e3,0xdefb,0xdefb,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdd7,0xe73c,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x7bcf,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x1082,0x2104,0x2104,0x0000,0x0020,0x2104,0x2104,0x3186,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x5aeb,0x0000,0xad55,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0x39e7,0x0000,0xc618,0xdefb,0x8c71,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xc618,0x2965,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x0841,0x0000,0x18e3,0x2104,0x10a2,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x4228,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xc638,0xf7be,0xffff,0xad75,0x2104,0x9492,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x39c7,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x528a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x7bcf,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0x2945,0x8430,0xce79,0xffff,0xffff,0xffff,0xef5d,0x0000,0x39e7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x18c3,0x528a,0x9492,0xce79,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x4228,0x0000,0x1082,0x4208,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x630c,0x94b2,0xbdf7,0xdedb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xf7be,0xffff,0xffff,0xffff,0xe73c,0x10a2,0x0000,0xd6ba,0xf7be,0xc638,0x8c51,0x528a,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x528a,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0x528a,0x0000,0x8c71,0x6b6d,0x39c7,0x10a2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffdf,0x10a2,0x18e3,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0xc638,0xffff,0xffff,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0xd6ba,0xffff,0xffff,0xffff,0x8430,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0xad75,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bcf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0xa514,0xffff,0xffff,0xffff,0xc638,0x0000,0x528a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x6b6d,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cf3,0x0000,0xa514,0xffff,0xffff,0xffff,0xdefb,0x0000,0x2965,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xad55,0x0000,0x2945,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b4d,0x0000,0xbdf7,0xffff,0xffff,0xffff,0xffff,0x9492,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef5d,0x0841,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xdedb,0x0861,0x0841,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x0020,0x5acb,0x9cd3,0x738e,0x0861,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x6b4d,0x5aeb,0x6b6d,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x39e7,0x2124,0x9492,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x18c3,0x0000,0x0000,0x0000,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x2124,0x0000,0x39e7,0x8430,0x0020,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x39c7,0x0000,0x2124,0xf79e,0xffff,0xad55,0x0000,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x39e7,0x0000,0x1082,0xdedb,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x0020,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x73ae,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x4a69,0x0000,0x0000,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x52aa,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef7d,0x39e7,0x0000,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0020,0x0000,0x2945,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x0861,0x0000,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdedb,0x18c3,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x8410,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xad75,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xc618,0x0000,0x0020,0x528a,0xad75,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xbdd7,0x2945,0x0000,0x0000,0x0000,0x0861,0x52aa,0xa514,0xe71c,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x6b6d,0x2124,0x0000,0x0000,0x0000,0x0000,0x2124,0x5acb,0x9492,0xc618,0x6b4d,0x0000,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x9cd3,0x52aa,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x5acb,0x7bcf,0xa514,0xc638,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xb596,0x7bef,0x4a69,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x4a49,0xa534,0x738e,0x4208,0x0841,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x0000,0x39e7,0xffff,0xffff,0xffff,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x3186,0x9492,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x10a2,0x1082,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4a69,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x6b4d,0xf7be,0xffff,0xffff,0x4208,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0xad75,0xffff,0xffff,0xb5b6,0xb5b6,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf79e,0x0020,0x0000,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0x94b2,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x18e3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x0000,0x2124,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xa534,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0841,0x0000,0xef7d,0xffff,0xffff,0xffff,0xffff,0xb5b6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x31a6,0x0000,0xce59,0xffff,0xffff,0xffff,0xe71c,0x0861,0x4a49,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0xad55,0xffff,0xffff,0xffff,0x4208,0x0020,0xdedb,0x9492,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0x9cd3,0xffff,0xffff,0x94b2,0x0000,0x8430,0xbdf7,0x0000,0x6b4d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x7bef,0xffff,0xffff,0xbdd7,0x5acb,0xef7d,0x2104,0x18e3,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xad75,0x2104,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0xd69a,0xffdf,0xffff,0xffff,0xffff,0xffff,0x630c,0x0000,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xad55,0x630c,0x5aeb,0x94b2,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x4208,0x0000,0x0000,0x0000,0x0000,0x2124,0xe73c,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0x2104,0x9492,0x9cf3,0x4208,0x0000,0x528a,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xb596,0x0000,0x1082,0xe73c,0xffff,0xffff,0xf7be,0x2124,0x0000,0xdefb,0xffff,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0x73ae,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0xa514,0xffff,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0x18e3,0x0000,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x7bef,0xffff,0xffff,0xffff,0xdefb,0x0000,0x52aa,0xffff,0xffff,0xffff,0xd69a,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf79e,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0000,0x7bef,0xffff,0xffff,0xffff,0xdefb,0x0000,0x39e7,0xa534,0x52aa,0x1082,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0000,0x7bef,0xffff,0xffff,0xffff,0xdedb,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x0000,0x7bef,0xffff,0xef7d,0x6b4d,0x0020,0x0000,0x0000,0x39e7,0x8c51,0xd6ba,0xffff,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x0000,0x8c51,0xbdd7,0x18e3,0x0000,0x0841,0x0841,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x39e7,0x0020,0x0000,0x4228,0xe71c,0x4208,0x0000,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0x39e7,0x0000,0x0000,0x0000,0x8410,0xffff,0xffff,0x528a,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffdf,0xb596,0x7bcf,0xffff,0xffff,0xffff,0xffff,0xe71c,0x0000,0x0000,0x0000,0x8c71,0xffff,0xffff,0xffff,0x632c,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8430,0x0000,0x0000,0x8c51,0xffff,0xffff,0xffff,0xffff,0x8430,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x18c3,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x18e3,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xd69a,0xb5b6,0xa514,0x9cd3,0x7bef,0x7bef,0x7bef,0x7bef,0xa514,0xa514,0xad75,0xc638,0xd69a,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b6d,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x2124,0x0000,0x0000,0x0020,0x2965,0x4a49,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x4228,0x31a6,0x18c3,0x0000,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x0020,0x9492,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0x39c7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0x8410,0x0000,0x0020,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x2124,0x0000,0x0020,0x630c,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x4a69,0x0000,0x0000,0x0000,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x39c7,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x2124,0x73ae,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x8c51,0x0841,0x0000,0x10a2,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x9492,0x18e3,0x0000,0x0000,0x18c3,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x528a,0x0841,0x0000,0x0000,0x0000,0x4a69,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2945,0x0000,0x0000,0x0020,0x4228,0xad55,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x6b6d,0xad55,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ };
-diff -Nur linux_c860_org/drivers/video/tosa_backlight.c linux/drivers/video/tosa_backlight.c
---- linux_c860_org/drivers/video/tosa_backlight.c 1970-01-01 09:00:00.000000000 +0900
-+++ linux/drivers/video/tosa_backlight.c 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,489 @@
-+/*
-+ * drivers/video/tosa_backlight.c
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * Based on:
-+ *
-+ * linux/drivers/video/corgi_frontlight.c
-+ *
-+ * (C) Copyright 2002 SHARP
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * Based on:
-+ *
-+ * linux/drivers/video/poodle_frontlight.c
-+ *
-+ * (C) Copyright 2001 Lineo Japan, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * Based on:
-+ *
-+ * linux/drivers/video/collie_frontlight.c
-+ *
-+ * (C) Copyright 2001 Lineo Japan, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * Based on:
-+ * drivers/video/sa1100_frontlight.c
-+ * Initial Version by: Nicholas Mistry (nmistry@lhsl.com)
-+ *
-+ * ChangeLog:
-+ * 02-Dec-2002 SHARP for SL-C700
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/ctype.h>
-+#include <linux/mm.h>
-+#include <linux/tty.h>
-+#include <linux/slab.h>
-+#include <linux/proc_fs.h>
-+#include <linux/init.h>
-+#include <linux/fb.h>
-+#include <linux/delay.h>
-+
-+#include <linux/pm.h>
-+
-+#include <asm/system.h>
-+#include <asm/hardware.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+#include <asm/uaccess.h>
-+#include <asm/proc/pgtable.h>
-+
-+#include <video/tosa_backlight.h>
-+
-+#include <linux/interrupt.h>
-+
-+#include <asm/arch/i2sc.h>
-+
-+extern void pxa_nssp_output(unsigned char, unsigned char);
-+
-+#if 0
-+#define DPRINTK(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ## args)
-+#else
-+#define DPRINTK(fmt, args...)
-+#endif
-+
-+#ifdef CONFIG_PM
-+static int is_bl_pm = 0;
-+static int is_bl_blank = 0;
-+static int counter_step_save = 0;
-+#endif
-+
-+#define BL_SETTING 6
-+#define BL_DEFAULT 3
-+
-+int counter_step_contrast = BL_DEFAULT;
-+static int bl_limit = BL_SETTING - 1;
-+static spinlock_t bl_lock = SPIN_LOCK_UNLOCKED;
-+
-+typedef struct _duty_vr_t {
-+ int duty;
-+ int vr;
-+} duty_vr_t;
-+
-+static duty_vr_t bl_duty_table[BL_SETTING] = {
-+ {0, 0}, //Light Off
-+ {11, 1},
-+ {33, 1},
-+ {68, 1},
-+ {100, 1},
-+ {255, 1},
-+};
-+
-+static int tosa_bl_ioctl(struct inode* inode, struct file*, unsigned int,
-+ unsigned long);
-+static int bl_step_contrast_setting(int);
-+
-+extern unsigned short set_scoop_gpio(unsigned short);
-+extern unsigned short reset_scoop_gpio(unsigned short);
-+
-+#define SetBacklightDuty(a) set_bl_bright(a);
-+#define SetBacklightVR(a) if (a) { TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BL_C20MA; } \
-+ else { TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BL_C20MA; }
-+
-+/*
-+ * I2C functions.
-+ */
-+#define I2C_TIMEOUT 100 //wait for 5ms
-+#define I2C_ADR_DAC 0x4e //DAC Slave address
-+#define DAC_CH1 0
-+#define DAC_CH2 1
-+#define I2C_ICR_DEF_VAL (ICR_IUE | ICR_SCLE | ICR_FM)
-+#define i2c_reset() i2c_init(1)
-+#define i2c_set() i2c_init(0)
-+void i2c_init(int reset)
-+{
-+ if( reset ) {
-+ ICR = ICR_UR;
-+ CKEN &= ~CKEN14_I2C;
-+ }
-+ CKEN |= CKEN14_I2C; //Set I2C cleck
-+ ICR = I2C_ICR_DEF_VAL;
-+ ISR = 0x6f0; //Clear all status.
-+}
-+
-+static int i2c_wait_for_fifo_empty(void)
-+{
-+ int timeo = 0;
-+ while( 1 ) {
-+ if( ISR & ISR_ITE) break;
-+ if( timeo++ > I2C_TIMEOUT ) {
-+ DPRINTK("timeout: %x\n", ISR);
-+ i2c_reset();
-+ return -EBUSY;
-+ }
-+ mdelay(1);
-+ }
-+ ISR = ISR_ITE;
-+ return 0;
-+}
-+
-+static int i2c_write(unsigned char reg, unsigned char val)
-+{
-+ int ret;
-+
-+ /* Start condition */
-+ if( ISR & ISR_IBB ) {
-+ DPRINTK("bus is busy\n");
-+ i2c_reset();
-+ return -EBUSY;
-+ }
-+ /* Slave address write */
-+ IDBR = (I2C_ADR_DAC << 1);
-+ ICR = (ICR_START | ICR_TB | I2C_ICR_DEF_VAL | ICR_ACKNAK);
-+ if( (ret = i2c_wait_for_fifo_empty()) < 0 ) return ret;
-+
-+ /* DAC channel write */
-+ IDBR = reg;
-+ ICR = (ICR_TB | I2C_ICR_DEF_VAL);
-+ if( (ret = i2c_wait_for_fifo_empty()) < 0 ) return ret;
-+
-+ /* data write */
-+ IDBR = val;
-+ ICR = (ICR_STOP | ICR_TB | I2C_ICR_DEF_VAL | ICR_ACKNAK);
-+ if( (ret = i2c_wait_for_fifo_empty()) < 0 ) return ret;
-+
-+ ICR = I2C_ICR_DEF_VAL;
-+ return 0;
-+}
-+
-+/*
-+ * Backlight control functions.
-+ */
-+static void bl_enable(int sw)
-+{
-+ if( sw ) pxa_nssp_output(TG_GPODR2, 0x01); //GP04=1
-+ else pxa_nssp_output(TG_GPODR2, 0x00); //GP04=0
-+}
-+
-+static int set_bl_bright(unsigned char dat)
-+{
-+ return i2c_write(DAC_CH2, dat);
-+}
-+
-+#ifdef CONFIG_PROC_FS
-+struct proc_dir_entry *proc_bl;
-+
-+static ssize_t bl_read_params(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char obuf[15];
-+ int count = 0;
-+
-+ if( *ppos>0 ) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(obuf, "0x%02X%02X\n",
-+ bl_duty_table[counter_step_contrast].vr,
-+ bl_duty_table[counter_step_contrast].duty);
-+ *ppos += count;
-+ if( count>nbytes ) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if( copy_to_user(buf, obuf, count) )
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t bl_write_params(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ unsigned long param;
-+ char *endp;
-+
-+ param = simple_strtoul(buf,&endp,0);
-+ SetBacklightDuty(param & 0xff);
-+ SetBacklightVR((param & 0xff00) >> 8);
-+ return nbytes+endp-buf;
-+}
-+
-+static struct file_operations proc_params_operations = {
-+ read: bl_read_params,
-+ write: bl_write_params,
-+};
-+#endif /* CONFIG_PROC_FS */
-+
-+#ifdef CONFIG_PM
-+void tosa_bl_blank(int blank)
-+{
-+ if( blank ) {
-+ if( !is_bl_blank ) {
-+ is_bl_blank = 1;
-+ counter_step_save = counter_step_contrast;
-+ bl_step_contrast_setting(0);
-+ }
-+ } else {
-+ if( is_bl_blank && !is_bl_pm ) {
-+ bl_step_contrast_setting(counter_step_save);
-+ is_bl_blank = 0;
-+ }
-+ }
-+}
-+
-+void tosa_l_blank_power_button(void)
-+{
-+ if (!is_bl_blank) {
-+ is_bl_blank = 1;
-+ counter_step_save = counter_step_contrast;
-+ bl_step_contrast_setting(0);
-+ }else{
-+ counter_step_contrast = counter_step_save;
-+ bl_step_contrast_setting(counter_step_contrast);
-+ is_bl_blank = 0;
-+ }
-+}
-+
-+
-+int tosa_bl_pm_callback(struct pm_dev* pm_dev,
-+ pm_request_t req, void *data)
-+{
-+ switch (req) {
-+ case PM_SUSPEND:
-+ is_bl_pm = 1;
-+ tosa_bl_blank(1);
-+ break;
-+ case PM_RESUME:
-+ is_bl_pm = 0;
-+ tosa_bl_blank(0);
-+ break;
-+ }
-+ return 0;
-+}
-+#endif /* CONFIG_PM */
-+
-+static struct file_operations tosa_bl_fops = {
-+ ioctl: tosa_bl_ioctl,
-+};
-+
-+static int bl_major;
-+
-+#define CHECK_BATTERY_TIME 1
-+static int bl_step_contrast_setting_nocheck(int need_value)
-+{
-+ unsigned long flags;
-+
-+ /* Check value */
-+ if( need_value < 0 ) need_value = 0;
-+ if( need_value > bl_limit ) need_value = bl_limit;
-+
-+ spin_lock_irqsave(&bl_lock, flags);
-+ if(need_value > 0) bl_enable(1);
-+ else bl_enable(0);
-+ SetBacklightDuty(bl_duty_table[need_value].duty);
-+ SetBacklightVR(bl_duty_table[need_value].vr);
-+ spin_unlock_irqrestore(&bl_lock, flags);
-+ counter_step_contrast = need_value;
-+
-+ return counter_step_contrast;
-+}
-+
-+
-+static int bl_step_contrast_setting(int need_value)
-+{
-+ int ret = 0;
-+ extern void sharpsl_kick_battery_check(int,int,int);
-+ sharpsl_kick_battery_check(0,1,0); // check battery and wait 10msec
-+ ret = bl_step_contrast_setting_nocheck(need_value);
-+ sharpsl_kick_battery_check(1,0,0); // wait 10msec and check battery
-+ return ret;
-+}
-+
-+static int temporary_contrast_set_flag = 0;
-+
-+void tosa_bl_temporary_contrast_set(void)
-+{
-+ int need_value = counter_step_contrast;
-+
-+ if( temporary_contrast_set_flag ) return;
-+
-+ temporary_contrast_set_flag = 1;
-+ bl_step_contrast_setting(need_value);
-+}
-+
-+void tosa_bl_temporary_contrast_reset(void)
-+{
-+ int need_value = counter_step_contrast;
-+
-+ if( !temporary_contrast_set_flag ) return;
-+
-+ temporary_contrast_set_flag = 0;
-+ bl_step_contrast_setting(need_value);
-+}
-+
-+void tosa_bl_set_limit_contrast(int val)
-+{
-+ unsigned long flags;
-+ spin_lock_irqsave(&bl_lock, flags);
-+ if( (val > BL_SETTING - 1) || (val < 0) ) {
-+ if( bl_limit != BL_SETTING - 1 ) {
-+ printk("bl : unlimit contrast\n");
-+ }
-+ bl_limit = BL_SETTING - 1;
-+ } else {
-+ if( bl_limit != val ) {
-+ printk("bl : change limit contrast %d\n", val);
-+ }
-+ bl_limit = val;
-+ }
-+ spin_unlock_irqrestore(&bl_lock, flags);
-+ if( counter_step_contrast > bl_limit )
-+ bl_step_contrast_setting_nocheck(bl_limit);
-+}
-+
-+int tosa_set_common_voltage(unsigned char dat)
-+{
-+ return i2c_write(DAC_CH1, dat);
-+}
-+
-+static int tosa_bl_ioctl(struct inode* inode, struct file* filp,
-+ unsigned int cmd, unsigned long arg)
-+{
-+ int ret = -EINVAL;
-+
-+ switch(cmd) {
-+ case TOSA_BL_IOCTL_ON:
-+ if (is_bl_blank) return 0;
-+ ret = bl_step_contrast_setting_nocheck(counter_step_contrast);
-+ break;
-+ case TOSA_BL_IOCTL_OFF:
-+ if (is_bl_blank) return 0;
-+ ret = bl_step_contrast_setting_nocheck(0);
-+ break;
-+ case TOSA_BL_IOCTL_STEP_CONTRAST:
-+ if (is_bl_blank) return 0;
-+ ret = bl_step_contrast_setting_nocheck(arg);
-+ break;
-+ case TOSA_BL_IOCTL_GET_STEP_CONTRAST:
-+ ret = counter_step_contrast;
-+ break;
-+ case TOSA_BL_IOCTL_GET_STEP:
-+ ret = BL_SETTING;
-+ break;
-+ default:
-+ ;
-+ }
-+
-+ return ret;
-+}
-+
-+static __init int tosa_bl_init(void)
-+{
-+ int ret;
-+
-+ bl_major = BL_MAJOR;
-+
-+ if( (ret = register_chrdev(bl_major, BL_NAME, &tosa_bl_fops)) < 0 ) {
-+ DPRINTK("%s: cant get major %d\n", BL_NAME, bl_major);
-+ return ret;
-+ }
-+
-+ if( !bl_major ) bl_major = ret;
-+
-+ bl_step_contrast_setting_nocheck(counter_step_contrast);
-+
-+#ifdef CONFIG_PROC_FS
-+ {
-+ struct proc_dir_entry *entry;
-+
-+ proc_bl = proc_mkdir("driver/fl", NULL);
-+ if (proc_bl == NULL) {
-+ bl_step_contrast_setting(0);
-+ unregister_chrdev(bl_major, BL_NAME);
-+ printk(KERN_ERR "%s: can't create /proc/driver/fl\n", BL_NAME);
-+ return -ENOMEM;
-+ }
-+ entry = create_proc_entry(BL_NAME, S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH,
-+ proc_bl);
-+ if( entry ) {
-+ entry->proc_fops = &proc_params_operations;
-+ } else {
-+ remove_proc_entry("driver/fl", &proc_root);
-+ proc_bl = 0;
-+ bl_step_contrast_setting(0);
-+ unregister_chrdev(bl_major, BL_NAME);
-+ printk(KERN_ERR "%s: can't create /proc/driver/fl/\n", BL_NAME);
-+ return -ENOMEM;
-+ }
-+ }
-+#endif /* CONFIG_PROC_FS */
-+
-+ printk(KERN_INFO "%s: Initialized.\n", BL_NAME);
-+
-+#if 0
-+ { /* IOCTL TEST */
-+ int i;
-+ printk("\n%s: ioctl test.\n", BL_NAME);
-+ printk("%s: Backlight off\n", BL_NAME);
-+ ret = tosa_bl_ioctl(0, 0, TOSA_BL_IOCTL_OFF, 0);
-+ if(ret < 0) printk("%s: error:%d\n", BL_NAME, ret);
-+ mdelay(5000);
-+ printk("%s: Backlight on\n", BL_NAME);
-+ ret = tosa_bl_ioctl(0, 0, TOSA_BL_IOCTL_ON, 0);
-+ if(ret < 0) printk("%s: error:%d\n", BL_NAME, ret);
-+ mdelay(5000);
-+ for(i = 1; i < BL_SETTING; i++) {
-+ printk("%s: Backlight step: %d\n", BL_NAME, i);
-+ ret = tosa_bl_ioctl(0, 0, TOSA_BL_IOCTL_STEP_CONTRAST, i);
-+ if(ret < 0) printk("%s: error:%d\n", BL_NAME, ret);
-+ mdelay(5000);
-+ }
-+ }
-+#endif
-+ return 0;
-+}
-+
-+#ifdef MODULE
-+void __exit tosa_bl_exit(void)
-+{
-+ bl_step_contrast_setting(0);
-+
-+ unregister_chrdev(bl_major, BL_NAME);
-+
-+#ifdef CONFIG_PROC_FS
-+ {
-+ remove_proc_entry(BL_NAME, proc_bl);
-+ remove_proc_entry("driver/fl", NULL);
-+ proc_bl = 0;
-+ }
-+#endif /* CONFIG_PROC_FS */
-+ printk(KERN_INFO "%s: Unloaded\n", BL_NAME);
-+}
-+
-+module_exit(tosa_bl_exit);
-+#endif /* MODULE */
-+
-+module_init(tosa_bl_init);
-diff -Nur linux_c860_org/drivers/video/w100fb.c linux/drivers/video/w100fb.c
---- linux_c860_org/drivers/video/w100fb.c 2003-06-18 17:43:52.000000000 +0900
-+++ linux/drivers/video/w100fb.c 2004-06-10 21:09:11.000000000 +0900
-@@ -54,6 +54,9 @@
- #include <video/fbcon-mfb.h>
- #include <video/fbcon.h>
-
-+#include <linux/proc_fs.h>
-+#include <asm/proc/pgtable.h>
-+
- #include "w100fb.h"
- #include <linux/pm.h>
-
-@@ -74,6 +77,7 @@
- static void w100_resume(void);
- static void w100_suspend(u32 mode);
- static void w100_init_qvga_rotation(u16 deg);
-+static void w100_init_vga_rotation(u16 deg);
- static void w100_soft_reset(void);
- static void w100_clear_screen(u32 mode,void *fbuf);
- static void w100_vsync(void);
-@@ -106,7 +110,7 @@
- #define REMAPPED_CFG_LEN 0x10
- #define REMAPPED_MMR_LEN 0x2000
- #define W100_PHYS_ADR_LEN 0x1000000
--#define MAX_XRES 480
-+#define MAX_XRES 640
- #define MAX_YRES 640
- #define BITS_PER_PIXEL 16
-
-@@ -177,9 +181,23 @@
- #define LCD_MODE_480 0
- #define LCD_MODE_320 1
- #define LCD_MODE_240 2
-+#define LCD_MODE_640 3
-+
- #define LCD_MODE_UNKOWN (-1)
-
- int w100fb_lcdMode = LCD_MODE_UNKOWN; //default UNKOWN
-+#if defined(CONFIG_FBCON_ROTATE_R)
-+static int w100fb_rotation_flag = 270;
-+#else
-+static int w100fb_rotation_flag = 90;
-+#endif
-+#if defined(CONFIG_SL_SYSCLK100)
-+int fastsysclk_mode=100;
-+#else
-+int fastsysclk_mode=75;
-+#endif
-+static int lcd_param=0;
-+static int proc_resume_mode=0;
-
- static u16 *gSaveImagePtr[640] = {NULL};
- #define SAVE_IMAGE_MAX_SIZE ((640 * 480 * BITS_PER_PIXEL) / 8)
-@@ -245,6 +263,171 @@
- static void w100_PwmSetup(void);
- static void w100_InitExtMem(u32 mode);
-
-+#ifdef CONFIG_PROC_FS
-+struct proc_dir_entry *proc_w100;
-+
-+
-+static ssize_t w100_read_rotation(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char outputbuf[50];
-+ int count;
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(outputbuf, "Rotation degree %d.\n",w100fb_rotation_flag);
-+ *ppos += count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t w100_write_rotation(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ int len;
-+ unsigned int degree;
-+
-+ sscanf(buf,"%d",&degree);
-+ printk("Change rotation degree %d\n",degree);
-+
-+ if ( degree == 180)
-+ w100fb_rotation_flag = 90;
-+ else
-+ w100fb_rotation_flag = 270;
-+
-+ if (w100fb_lcdMode == LCD_MODE_320)
-+ w100_init_qvga_rotation(w100fb_rotation_flag);
-+
-+ len=strlen(buf);
-+ return len;
-+}
-+
-+static ssize_t w100_read_reg(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ int len;
-+ unsigned long regs;
-+ unsigned long param;
-+
-+
-+ sscanf(buf,"%x",&regs);
-+
-+ param = readl(remapped_regs+regs);
-+
-+ printk("Read reg:: regs 0x%08X : 0x%08X\n", regs, param);
-+
-+ len=strlen(buf);
-+ return len;
-+}
-+
-+static ssize_t w100_write_reg(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ int len;
-+ unsigned long regs;
-+ unsigned long param;
-+
-+
-+ sscanf(buf,"%x %x",&regs,&param);
-+
-+ if (regs <= 0x2000){
-+ printk("Write regs 0x%08X : 0x%08X\n", regs, param);
-+ writel(param, remapped_regs+regs);
-+ }
-+
-+ len=strlen(buf);
-+ return len;
-+}
-+
-+static ssize_t lcd_read_param(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char outputbuf[50];
-+ int count;
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(outputbuf, "LCD parm %d.\n",lcd_param);
-+ *ppos += count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t lcd_write_param(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ int len;
-+ int param;
-+
-+ sscanf(buf,"%d",&param);
-+ printk("LCD param %d\n",param);
-+
-+ lcd_param=param;
-+
-+ len=strlen(buf);
-+ return len;
-+}
-+
-+static ssize_t fastsysclk_read_param(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char outputbuf[50];
-+ int count;
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(outputbuf, "Fastsysclk : %d.\n",fastsysclk_mode);
-+ *ppos += count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t fastsysclk_write_param(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ int len;
-+ int param;
-+
-+ sscanf(buf,"%d",&param);
-+ if (param == 75) {
-+ printk("Set fastsysclk %d\n",param);
-+ fastsysclk_mode=param;
-+ w100_SetFastSysClk(fastsysclk_mode);
-+ }else if (param == 100) {
-+ printk("Set fastsysclk %d\n",param);
-+ fastsysclk_mode=param;
-+ w100_SetFastSysClk(fastsysclk_mode);
-+ }
-+ len=strlen(buf);
-+ return len;
-+}
-+
-+static struct file_operations proc_read_reg = {
-+ write: w100_read_reg,
-+};
-+static struct file_operations proc_write_reg = {
-+ write: w100_write_reg,
-+};
-+static struct file_operations proc_rotation = {
-+ read: w100_read_rotation,
-+ write: w100_write_rotation,
-+};
-+static struct file_operations proc_lcd = {
-+ read: lcd_read_param,
-+ write: lcd_write_param,
-+};
-+static struct file_operations proc_fastsysclk = {
-+ read: fastsysclk_read_param,
-+ write: fastsysclk_write_param,
-+};
-+#endif
-+
- /* ------------------- chipset specific functions -------------------------- */
-
- //
-@@ -317,8 +500,12 @@
- // remap the areas we're going to use
- remapped_base = ioremap_nocache(W100_PHYS_ADDRESS, REMAPPED_CFG_LEN);
- remapped_regs = ioremap_nocache(W100_REG_BASE, REMAPPED_MMR_LEN);
-- remapped_fbuf = ioremap_nocache(W100_FB_BASE, REMAPPED_FB_LEN);
--
-+#if defined(CONFIG_CORGI_LCD_BUFF)
-+ remapped_fbuf = __ioremap(W100_FB_BASE, REMAPPED_FB_LEN, L_PTE_BUFFERABLE );
-+#else
-+ remapped_fbuf = ioremap_nocache(W100_FB_BASE, REMAPPED_FB_LEN);
-+#endif
-+
- isRemapped = 1;
- }
-
-@@ -385,7 +572,7 @@
-
- if (w100fb_lcdMode == LCD_MODE_UNKOWN){
- w100_InitExtMem(LCD_SHARP_VGA);
-- } else if(w100fb_lcdMode == LCD_MODE_480) {
-+ } else if( (w100fb_lcdMode == LCD_MODE_480) || (w100fb_lcdMode == LCD_MODE_640) ) {
- w100_InitExtMem(LCD_SHARP_VGA);
- } else {
- w100_InitExtMem(LCD_SHARP_QVGA);
-@@ -400,6 +587,76 @@
- writel((u32)(wrap_top_dir.val), remapped_regs+mmWRAP_TOP_DIR);
-
- writel((u32)0x2440, remapped_regs+mmRBBM_CNTL);
-+
-+#ifdef CONFIG_PROC_FS
-+ {
-+ struct proc_dir_entry *entry;
-+ if (proc_resume_mode == 0) {
-+
-+ proc_w100 = proc_mkdir("driver/w100", NULL);
-+ if (proc_w100 == NULL) {
-+ unregister_chrdev(228, "w100");
-+ printk(KERN_ERR "w100: can't create /proc/driver/w100\n");
-+ return -ENOMEM;
-+ }
-+
-+ entry = create_proc_entry("read_reg", S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, proc_w100);
-+ if (entry) {
-+ entry->proc_fops = &proc_read_reg;
-+ } else {
-+ remove_proc_entry("driver/w100", &proc_root);
-+ proc_w100 = 0;
-+ unregister_chrdev(228, "w100");
-+ printk(KERN_ERR "w100: can't create /proc/driver/w100/\n");
-+ return -ENOMEM;
-+ }
-+ entry = create_proc_entry("write_reg", S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, proc_w100);
-+ if (entry) {
-+ entry->proc_fops = &proc_write_reg;
-+ } else {
-+ remove_proc_entry("driver/w100", &proc_root);
-+ proc_w100 = 0;
-+ unregister_chrdev(228, "w100");
-+ printk(KERN_ERR "w100: can't create /proc/driver/w100/\n");
-+ return -ENOMEM;
-+ }
-+ entry = create_proc_entry("rotation", S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, proc_w100);
-+ if (entry) {
-+ entry->proc_fops = &proc_rotation;
-+ } else {
-+ remove_proc_entry("driver/w100", &proc_root);
-+ proc_w100 = 0;
-+ unregister_chrdev(228, "w100");
-+ printk(KERN_ERR "w100: can't create /proc/driver/w100/\n");
-+ return -ENOMEM;
-+ }
-+
-+ entry = create_proc_entry("lcd", S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, proc_w100);
-+ if (entry) {
-+ entry->proc_fops = &proc_lcd;
-+ } else {
-+ remove_proc_entry("driver/w100", &proc_root);
-+ proc_w100 = 0;
-+ unregister_chrdev(228, "w100");
-+ printk(KERN_ERR "w100: can't create /proc/driver/w100/\n");
-+ return -ENOMEM;
-+ }
-+
-+ entry = create_proc_entry("fastsysclk", S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, proc_w100);
-+ if (entry) {
-+ entry->proc_fops = &proc_fastsysclk;
-+ } else {
-+ remove_proc_entry("driver/w100", &proc_root);
-+ proc_w100 = 0;
-+ unregister_chrdev(228, "w100");
-+ printk(KERN_ERR "w100: can't create /proc/driver/w100/\n");
-+ return -ENOMEM;
-+ }
-+ }
-+ }
-+
-+#endif
-+
- }
-
- //
-@@ -453,9 +710,11 @@
- #endif
-
- fix->smem_start = W100_FB_BASE;
--
-- if(w100fb_lcdMode == LCD_MODE_UNKOWN || w100fb_lcdMode == LCD_MODE_480){
--
-+#if defined(CONFIG_FBCON_ROTATE_R)
-+ if(w100fb_lcdMode == LCD_MODE_UNKOWN || w100fb_lcdMode == LCD_MODE_480 ){
-+#else
-+ if(w100fb_lcdMode == LCD_MODE_480 ){
-+#endif
- fix->line_length = (480 * BITS_PER_PIXEL) / 8;
- fix->smem_len = 0x200000;
-
-@@ -468,6 +727,13 @@
-
- fix->line_length = (240 * BITS_PER_PIXEL) / 8;
- fix->smem_len = 0x60000;
-+#if defined(CONFIG_FBCON_ROTATE_R)
-+ } else if(w100fb_lcdMode == LCD_MODE_640){
-+#else
-+ } else if(w100fb_lcdMode == LCD_MODE_UNKOWN || w100fb_lcdMode == LCD_MODE_640){
-+#endif
-+ fix->line_length = (640 * BITS_PER_PIXEL) / 8;
-+ fix->smem_len = 0x200000;
-
- }
-
-@@ -494,13 +760,19 @@
- BUG();
-
- if((par->xres == 480 && par->yres == 640)||
-+ (par->xres == 640 && par->yres == 480)||
- (par->xres == 320 && par->yres == 240)||
- (par->xres == 240 && par->yres == 320)){
- par->xres = var->xres;
- par->yres = var->yres;
- }else{
-- par->xres = MAX_XRES;
-- par->yres = MAX_YRES;
-+#if defined(CONFIG_FBCON_ROTATE_R)
-+ par->xres = 480;
-+ par->yres = 640;
-+#else
-+ par->xres = 640;
-+ par->yres = 480;
-+#endif
- }
-
- par->xres_virtual =
-@@ -547,13 +819,19 @@
-
- // set up screen coordinates
- if((par->xres == 480 && par->yres == 640)||
-+ (par->xres == 640 && par->yres == 480)||
- (par->xres == 320 && par->yres == 240)||
- (par->xres == 240 && par->yres == 320)){
- var->xres = par->xres;
- var->yres = par->yres;
- }else{
-- var->xres = MAX_XRES;
-- var->yres = MAX_YRES;
-+#if defined(CONFIG_FBCON_ROTATE_R)
-+ var->xres = 480;
-+ var->yres = 640;
-+#else
-+ var->xres = 640;
-+ var->yres = 480;
-+#endif
- }
-
- var->xres_virtual = var->xres;
-@@ -851,7 +1129,7 @@
- w100_vsync();
- w100_suspend(W100_SUSPEND_EXTMEM);
- w100_init_sharp_lcd(LCD_SHARP_QVGA);
-- w100_init_qvga_rotation( (u16)270 );
-+ w100_init_qvga_rotation( w100fb_rotation_flag );
- w100_InitExtMem(LCD_SHARP_QVGA);
- w100_clear_screen(LCD_SHARP_QVGA,NULL);
- lcdtg_lcd_change(LCD_SHARP_QVGA);
-@@ -873,6 +1151,70 @@
-
- w100fb_lcdMode = LCD_MODE_240;
-
-+ }else if(current_par.xres == 640 && current_par.yres == 480){
-+
-+ printk("change resolution 480x640 => 640x480\n");
-+
-+ w100_PwmSetup();
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION);
-+ w100_InitExtMem(LCD_SHARP_VGA);
-+ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000);
-+ w100_vsync();
-+ w100_init_sharp_lcd(LCD_SHARP_VGA);
-+ w100_init_vga_rotation( (u16)90 );
-+ lcdtg_lcd_change(LCD_SHARP_VGA);
-+
-+ w100fb_lcdMode = LCD_MODE_640;
-+
-+ }
-+ break;
-+ case LCD_MODE_640:
-+ if(current_par.xres == 320 && current_par.yres == 240){
-+
-+ printk("change resolution 640x480 => 320x240\n");
-+
-+ w100_PwmSetup();
-+ w100_vsync();
-+ w100_suspend(W100_SUSPEND_EXTMEM);
-+ w100_init_sharp_lcd(LCD_SHARP_QVGA);
-+ w100_init_qvga_rotation( w100fb_rotation_flag );
-+ w100_InitExtMem(LCD_SHARP_QVGA);
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ lcdtg_lcd_change(LCD_SHARP_QVGA);
-+
-+ w100fb_lcdMode = LCD_MODE_320;
-+
-+ }else if(current_par.xres == 240 && current_par.yres == 320){
-+
-+ printk("change resolution 640x480 => 240x320\n");
-+
-+ w100_PwmSetup();
-+ w100_vsync();
-+ w100_suspend(W100_SUSPEND_EXTMEM);
-+ w100_init_sharp_lcd(LCD_SHARP_QVGA);
-+ w100_init_qvga_rotation( (u16)0 );
-+ w100_InitExtMem(LCD_SHARP_QVGA);
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ lcdtg_lcd_change(LCD_SHARP_QVGA);
-+
-+ w100fb_lcdMode = LCD_MODE_240;
-+
-+ }else if(current_par.xres == 480 && current_par.yres == 640){
-+
-+ printk("change resolution 640x480 => 480x640\n");
-+
-+ w100_PwmSetup();
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION);
-+ w100_InitExtMem(LCD_SHARP_VGA);
-+ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000);
-+ w100_vsync();
-+ w100_init_sharp_lcd(LCD_SHARP_VGA);
-+ lcdtg_lcd_change(LCD_SHARP_VGA);
-+
-+ w100fb_lcdMode = LCD_MODE_480;
-+
- }
- break;
- case LCD_MODE_240:
-@@ -891,12 +1233,28 @@
-
- w100fb_lcdMode = LCD_MODE_480;
-
-+ }else if(current_par.xres == 640 && current_par.yres == 480){
-+
-+ printk("change resolution 240x320 => 640x480\n");
-+
-+ w100_PwmSetup();
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION);
-+ w100_InitExtMem(LCD_SHARP_VGA);
-+ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000);
-+ w100_vsync();
-+ w100_init_sharp_lcd(LCD_SHARP_VGA);
-+ w100_init_vga_rotation( (u16)90 );
-+ lcdtg_lcd_change(LCD_SHARP_VGA);
-+
-+ w100fb_lcdMode = LCD_MODE_640;
-+
- }else if(current_par.xres == 320 && current_par.yres == 240){
-
- printk("change resolution 240x320 => 320x240\n");
-
- w100_clear_screen(LCD_SHARP_QVGA,NULL);
-- w100_init_qvga_rotation( (u16)270 );
-+ w100_init_qvga_rotation( w100fb_rotation_flag );
-
- w100fb_lcdMode = LCD_MODE_320;
- }
-@@ -917,6 +1275,22 @@
-
- w100fb_lcdMode = LCD_MODE_480;
-
-+ }else if(current_par.xres == 640 && current_par.yres == 480){
-+
-+ printk("change resolution 320x240 => 640x480\n");
-+
-+ w100_PwmSetup();
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION);
-+ w100_InitExtMem(LCD_SHARP_VGA);
-+ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000);
-+ w100_vsync();
-+ w100_init_sharp_lcd(LCD_SHARP_VGA);
-+ w100_init_vga_rotation( (u16)90 );
-+ lcdtg_lcd_change(LCD_SHARP_VGA);
-+
-+ w100fb_lcdMode = LCD_MODE_640;
-+
- }else if(current_par.xres == 240 && current_par.yres == 320){
-
- printk("change resolution 320x240 => 240x320\n");
-@@ -928,9 +1302,16 @@
- }
- break;
- case LCD_MODE_UNKOWN:
-- printk("reset resolution unkown => 480x640\n");
-- w100_init_sharp_lcd(LCD_SHARP_VGA);
-+#if defined(CONFIG_FBCON_ROTATE_R)
-+ printk("reset resolution unkown => 480x640\n");
-+ w100_init_sharp_lcd(LCD_SHARP_VGA);
- w100fb_lcdMode = LCD_MODE_480;
-+#else
-+ printk("reset resolution unkown => 640x480\n");
-+ w100_init_sharp_lcd(LCD_SHARP_VGA);
-+ w100_init_vga_rotation( (u16)90 );
-+ w100fb_lcdMode = LCD_MODE_640;
-+#endif
- isInitTG = 1;
- break;
- default:
-@@ -992,14 +1373,16 @@
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- disp->xpanstep = 0;
- disp->xwrapstep = 0;
-- disp->scrollmode = 0; // for logoscreen scroll
-+ disp->scrollmode = SCROLL_XREDRAW;
- #else
- disp->ypanstep = 0;
- disp->ywrapstep = 0;
-+ disp->scrollmode = SCROLL_YREDRAW;
- #endif
-
- switch(w100fb_lcdMode){
- case LCD_MODE_480:
-+ case LCD_MODE_640:
- if(isInitTG != 0)
- lcdtg_hw_init(LCD_SHARP_VGA);
- break;
-@@ -1267,7 +1650,149 @@
- end_skip_save_image_no = (-1);
- return 0;
- }
-+ break;
- #endif //_IMAGE_CACHE_SUPPORT
-+ case 100: //change 480x640
-+ printk("[w100fb] set 480x640 (VGA 0 degree)\n");
-+
-+ w100_PwmSetup();
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION);
-+ w100_InitExtMem(LCD_SHARP_VGA);
-+ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000);
-+ w100_vsync();
-+ w100_init_sharp_lcd(LCD_SHARP_VGA);
-+ w100_init_vga_rotation( (u16)0 );
-+ lcdtg_lcd_change(LCD_SHARP_VGA);
-+
-+ break;
-+ case 101: //change 640x480
-+ printk("[w100fb] set 640x480 (VGA 90 degree)\n");
-+
-+ w100_PwmSetup();
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION);
-+ w100_InitExtMem(LCD_SHARP_VGA);
-+ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000);
-+ w100_vsync();
-+ w100_init_sharp_lcd(LCD_SHARP_VGA);
-+ w100_init_vga_rotation( (u16)90 );
-+ lcdtg_lcd_change(LCD_SHARP_VGA);
-+
-+ break;
-+ case 102: //change 480x640
-+ printk("[w100fb] set 480x640 (VGA 180 degree)\n");
-+
-+ w100_PwmSetup();
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION);
-+ w100_InitExtMem(LCD_SHARP_VGA);
-+ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000);
-+ w100_vsync();
-+ w100_init_sharp_lcd(LCD_SHARP_VGA);
-+ w100_init_vga_rotation( (u16)180 );
-+ lcdtg_lcd_change(LCD_SHARP_VGA);
-+
-+ break;
-+ case 103: //change 640x480
-+ printk("[w100fb] set 640x480 (VGA 270 degree)\n");
-+
-+ w100_PwmSetup();
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION);
-+ w100_InitExtMem(LCD_SHARP_VGA);
-+ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000);
-+ w100_vsync();
-+ w100_init_sharp_lcd(LCD_SHARP_VGA);
-+ w100_init_vga_rotation( (u16)270 );
-+ lcdtg_lcd_change(LCD_SHARP_VGA);
-+
-+ break;
-+ case 110: //change 240x320
-+ printk("[w100fb] set 240x320 (QVGA 0 degree)\n");
-+
-+ w100_PwmSetup();
-+ w100_vsync();
-+ w100_suspend(W100_SUSPEND_EXTMEM);
-+ w100_init_sharp_lcd(LCD_SHARP_QVGA);
-+ w100_init_qvga_rotation( (u16)0 );
-+ w100_InitExtMem(LCD_SHARP_QVGA);
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ lcdtg_lcd_change(LCD_SHARP_QVGA);
-+
-+ break;
-+ case 111: //change 320x240
-+ printk("[w100fb] set 320x240 (QVGA 90 degree)\n");
-+
-+ w100fb_rotation_flag=90;
-+ w100_PwmSetup();
-+ w100_vsync();
-+ w100_suspend(W100_SUSPEND_EXTMEM);
-+ w100_init_sharp_lcd(LCD_SHARP_QVGA);
-+ w100_init_qvga_rotation(w100fb_rotation_flag);
-+ w100_InitExtMem(LCD_SHARP_QVGA);
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ lcdtg_lcd_change(LCD_SHARP_QVGA);
-+
-+ break;
-+
-+ case 112: //change 240x320
-+ printk("[w100fb] set 240x320 (QVGA 180 degree)\n");
-+
-+ w100_PwmSetup();
-+ w100_vsync();
-+ w100_suspend(W100_SUSPEND_EXTMEM);
-+ w100_init_sharp_lcd(LCD_SHARP_QVGA);
-+ w100_init_qvga_rotation( (u16)180 );
-+ w100_InitExtMem(LCD_SHARP_QVGA);
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ lcdtg_lcd_change(LCD_SHARP_QVGA);
-+
-+ break;
-+ case 113: //change 320x240
-+ printk("[w100fb] set 320x240 (QVGA 270 degree)\n");
-+
-+ w100fb_rotation_flag=270;
-+ w100_PwmSetup();
-+ w100_vsync();
-+ w100_suspend(W100_SUSPEND_EXTMEM);
-+ w100_init_sharp_lcd(LCD_SHARP_QVGA);
-+ w100_init_qvga_rotation(w100fb_rotation_flag);
-+ w100_InitExtMem(LCD_SHARP_QVGA);
-+ w100_clear_screen(LCD_SHARP_QVGA,NULL);
-+ lcdtg_lcd_change(LCD_SHARP_QVGA);
-+
-+ break;
-+ case 120: //non rotation in QVGA
-+ printk("[w100fb] set rotation 0 in QVGA\n");
-+
-+ w100fb_rotation_flag = 270;
-+ if (w100fb_lcdMode == LCD_MODE_320)
-+ w100_init_qvga_rotation(w100fb_rotation_flag);
-+
-+ break;
-+ case 121: //rotation 180 degree in QVGA
-+ printk("[w100fb] set rotation 180 in QVGA\n");
-+
-+ w100fb_rotation_flag = 90;
-+ if (w100fb_lcdMode == LCD_MODE_320)
-+ w100_init_qvga_rotation(w100fb_rotation_flag);
-+
-+ break;
-+ case 130: //Fastsysclock 75MHz
-+ printk("[w100fb] set Fastsysclk 75MHz\n");
-+
-+ fastsysclk_mode=75;
-+ w100_SetFastSysClk(fastsysclk_mode);
-+
-+ break;
-+ case 131: //Fastsysclock 100MHz
-+ printk("[w100fb] set Fastsysclk 100MHz\n");
-+
-+ fastsysclk_mode=100;
-+ w100_SetFastSysClk(fastsysclk_mode);
-+
-+ break;
- default:
- break;
- }
-@@ -2348,6 +2873,8 @@
- { 50, 0, 1, 0, 0xE0, 56}, // 50.00 MHz
- { 75, 0, 5, 0, 0xDE, 37}, // 75.00 MHz
- {100, 0, 7, 0, 0xE0, 28}, // 100.00 MHz
-+ {125, 0, 9, 0, 0xE0, 22}, // 125.00 MHz
-+ {150, 0, 11, 0, 0xE0, 17}, // 150.00 MHz
- { 0, 0, 0, 0, 0, 0} // Terminator
- };
- #else
-@@ -2779,7 +3306,8 @@
- break;
- case LCD_SHARP_VGA:
- w100_SetSlowSysClk(12); // use crystal -- 12.5MHz
-- w100_SetFastSysClk(75); // use PLL -- 75.0MHz
-+ w100_SetFastSysClk(fastsysclk_mode);
-+
- gPowerState.pclk_cntl.f.pclk_src_sel = 0x1;
- gPowerState.pclk_cntl.f.pclk_post_div = 0x2;
- writel((u32)(gPowerState.pclk_cntl.val), remapped_regs+mmPCLK_CNTL);
-@@ -2836,6 +3364,72 @@
- writel((u32)(disp_db_buf_wr_cntl.val), remapped_regs+mmDISP_DB_BUF_CNTL);
- } // w100_init_sharp_lcd
-
-+static void w100_init_vga_rotation(u16 deg)
-+{
-+ // for resolution change and rotation
-+ // GRAPHIC_CTRL
-+ // GRAPHIC_OFFSET
-+ // GRAPHIC_PITCH
-+
-+ switch(deg){
-+ case 0:
-+ gPowerState.pclk_cntl.f.pclk_src_sel = 0x1;
-+ gPowerState.pclk_cntl.f.pclk_post_div = 0x2;
-+ writel((u32)(gPowerState.pclk_cntl.val), remapped_regs+mmPCLK_CNTL);
-+
-+ writel(0x00DE1D66, remapped_regs+mmGRAPHIC_CTRL);
-+ writel(0x00800000, remapped_regs+mmGRAPHIC_OFFSET);
-+ writel(0x000003c0, remapped_regs+mmGRAPHIC_PITCH);
-+
-+ // Re-enable display updates
-+ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL);
-+
-+ break;
-+ case 90:
-+ gPowerState.pclk_cntl.f.pclk_src_sel = 0x1;
-+ gPowerState.pclk_cntl.f.pclk_post_div = 0x6;
-+ writel((u32)(gPowerState.pclk_cntl.val), remapped_regs+mmPCLK_CNTL);
-+
-+ writel(0x00DE1D0e, remapped_regs+mmGRAPHIC_CTRL);
-+ writel(0x00895b00, remapped_regs+mmGRAPHIC_OFFSET);
-+ writel(0x00000500, remapped_regs+mmGRAPHIC_PITCH);
-+
-+ // Re-enable display updates
-+ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL);
-+
-+ break;
-+ case 180:
-+ gPowerState.pclk_cntl.f.pclk_src_sel = 0x1;
-+ gPowerState.pclk_cntl.f.pclk_post_div = 0x2;
-+ writel((u32)(gPowerState.pclk_cntl.val), remapped_regs+mmPCLK_CNTL);
-+
-+ writel(0x00DE1D7e, remapped_regs+mmGRAPHIC_CTRL);
-+ writel(0x00895ffc, remapped_regs+mmGRAPHIC_OFFSET);
-+ writel(0x000003c0, remapped_regs+mmGRAPHIC_PITCH);
-+
-+ // Re-enable display updates
-+ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL);
-+
-+ break;
-+ case 270:
-+ gPowerState.pclk_cntl.f.pclk_src_sel = 0x1;
-+ gPowerState.pclk_cntl.f.pclk_post_div = 0x6;
-+ writel((u32)(gPowerState.pclk_cntl.val), remapped_regs+mmPCLK_CNTL);
-+
-+ writel(0x00DE1D16, remapped_regs+mmGRAPHIC_CTRL);
-+ writel(0x008004fc, remapped_regs+mmGRAPHIC_OFFSET);
-+ writel(0x00000500, remapped_regs+mmGRAPHIC_PITCH);
-+
-+ // Re-enable display updates
-+ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL);
-+
-+ break;
-+ default:
-+ // not-support
-+ break;
-+ }
-+}
-+
- static void w100_init_qvga_rotation(u16 deg)
- {
- // for resolution change and rotation
-@@ -2848,12 +3442,38 @@
- writel(0x00d41c06, remapped_regs+mmGRAPHIC_CTRL);
- writel(0x00800000, remapped_regs+mmGRAPHIC_OFFSET);
- writel(0x000001e0, remapped_regs+mmGRAPHIC_PITCH);
-+
-+ // Re-enable display updates
-+ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL);
-+
-+ break;
-+ case 90:
-+ writel(0x00d41c0E, remapped_regs+mmGRAPHIC_CTRL);
-+ //writel(0x0080027e, remapped_regs+mmGRAPHIC_OFFSET);
-+ writel(0x00825580, remapped_regs+mmGRAPHIC_OFFSET);
-+ writel(0x00000280, remapped_regs+mmGRAPHIC_PITCH);
-+
-+ // Re-enable display updates
-+ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL);
-+
-+ break;
-+ case 180:
-+ writel(0x00d41c1e, remapped_regs+mmGRAPHIC_CTRL);
-+ writel(0x008257fc, remapped_regs+mmGRAPHIC_OFFSET);
-+ writel(0x000001e0, remapped_regs+mmGRAPHIC_PITCH);
-+
-+ // Re-enable display updates
-+ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL);
-+
- break;
- case 270:
- writel(0x00d41c16, remapped_regs+mmGRAPHIC_CTRL);
- //writel(0x0080027e, remapped_regs+mmGRAPHIC_OFFSET);
- writel(0x0080027c, remapped_regs+mmGRAPHIC_OFFSET);
- writel(0x00000280, remapped_regs+mmGRAPHIC_PITCH);
-+
-+ // Re-enable display updates
-+ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL);
- break;
- default:
- // not-support
-@@ -2920,6 +3540,7 @@
- {
- u32 temp32;
-
-+ proc_resume_mode=1;
- w100_hw_init();
- w100_PwmSetup();
-
-@@ -2928,13 +3549,16 @@
- temp32 |= 0x00800000;
- writel(temp32, remapped_regs+mmDISP_DEBUG2);
-
-- if (w100fb_lcdMode == LCD_MODE_480) {
-+ if (w100fb_lcdMode == LCD_MODE_480 || w100fb_lcdMode == LCD_MODE_640) {
- w100_init_sharp_lcd(LCD_SHARP_VGA);
-+ if (w100fb_lcdMode == LCD_MODE_640) {
-+ w100_init_vga_rotation( (u16)90 );
-+ }
- }
- else {
- w100_init_sharp_lcd(LCD_SHARP_QVGA);
- if (w100fb_lcdMode == LCD_MODE_320) {
-- w100_init_qvga_rotation( (u16)270 );
-+ w100_init_qvga_rotation( w100fb_rotation_flag );
- }
- }
-
-@@ -3269,7 +3893,7 @@
-
- static void lcdtg_resume()
- {
-- if (w100fb_lcdMode == LCD_MODE_480) {
-+ if (w100fb_lcdMode == LCD_MODE_480 || w100fb_lcdMode == LCD_MODE_640) {
- lcdtg_hw_init(LCD_SHARP_VGA);
- }
- else {
-@@ -3379,7 +4003,7 @@
- break;
- case LCD_SHARP_VGA:
- /* Set Lcd Resolution (VGA) */
-- lcdtg_ssp_send( RESCTL_ADRS, RESCTL_VGA );
-+ lcdtg_ssp_send( RESCTL_ADRS, lcd_param );
- break;
- default:
- break;
-@@ -3393,7 +4017,7 @@
-
- if(mode == LCD_SHARP_VGA)
- /* Set Lcd Resolution (VGA) */
-- lcdtg_ssp_send( RESCTL_ADRS, RESCTL_VGA );
-+ lcdtg_ssp_send( RESCTL_ADRS, lcd_param );
- else if(mode == LCD_SHARP_QVGA)
- /* Set Lcd Resolution (QVGA) */
- lcdtg_ssp_send( RESCTL_ADRS, RESCTL_QVGA );
-@@ -3659,6 +4283,8 @@
- int i, j;
- u16 *pVram = (u16*)remapped_fbuf;
-
-+
-+
- if(suspend_mode == 1){
- // called from blank()
- isSuspended_tg_only = 1;
-diff -Nur linux_c860_org/fs/adfs/map.c linux/fs/adfs/map.c
---- linux_c860_org/fs/adfs/map.c 2002-08-26 14:43:25.000000000 +0900
-+++ linux/fs/adfs/map.c 2004-06-10 21:09:11.000000000 +0900
-@@ -12,6 +12,7 @@
- #include <linux/fs.h>
- #include <linux/adfs_fs.h>
- #include <linux/spinlock.h>
-+#include <linux/sched.h>
-
- #include <asm/unaligned.h>
-
-diff -Nur linux_c860_org/fs/buffer.c linux/fs/buffer.c
---- linux_c860_org/fs/buffer.c 2002-08-29 12:24:14.000000000 +0900
-+++ linux/fs/buffer.c 2004-06-10 21:09:11.000000000 +0900
-@@ -267,6 +267,11 @@
- }
- if (dev && bh->b_dev != dev)
- continue;
-+ if (conditional_schedule_needed()) {
-+ debug_lock_break(1);
-+ spin_unlock(&lru_list_lock);
-+ return -EAGAIN;
-+ }
-
- get_bh(bh);
- spin_unlock(&lru_list_lock);
-@@ -696,6 +701,13 @@
- /* Not hashed? */
- if (!bh->b_pprev)
- continue;
-+ if (conditional_schedule_needed()) {
-+ debug_lock_break(2); /* bkl is held too */
-+ get_bh(bh);
-+ break_spin_lock_and_resched(&lru_list_lock);
-+ put_bh(bh);
-+ slept = 1;
-+ }
- if (buffer_locked(bh)) {
- get_bh(bh);
- spin_unlock(&lru_list_lock);
-@@ -847,6 +859,8 @@
- struct buffer_head *bh;
- struct inode tmp;
- int err = 0, err2;
-+
-+ DEFINE_LOCK_COUNT();
-
- INIT_LIST_HEAD(&tmp.i_dirty_buffers);
-
-@@ -868,6 +882,12 @@
- spin_lock(&lru_list_lock);
- }
- }
-+ /* haven't hit this code path ... */
-+ debug_lock_break(551);
-+ if (TEST_LOCK_COUNT(32)) {
-+ RESET_LOCK_COUNT();
-+ break_spin_lock(&lru_list_lock);
-+ }
- }
-
- while (!list_empty(&tmp.i_dirty_buffers)) {
-@@ -897,6 +917,7 @@
- struct inode tmp;
- int err = 0, err2;
-
-+ DEFINE_LOCK_COUNT();
- INIT_LIST_HEAD(&tmp.i_dirty_data_buffers);
-
- spin_lock(&lru_list_lock);
-@@ -928,9 +949,14 @@
- if (!buffer_uptodate(bh))
- err = -EIO;
- brelse(bh);
-+ debug_lock_break(1);
-+ if (TEST_LOCK_COUNT(32)) {
-+ RESET_LOCK_COUNT();
-+ conditional_schedule();
-+ }
- spin_lock(&lru_list_lock);
- }
--
-+
- spin_unlock(&lru_list_lock);
- err2 = osync_inode_data_buffers(inode);
-
-@@ -957,6 +983,8 @@
- struct list_head *list;
- int err = 0;
-
-+ DEFINE_LOCK_COUNT();
-+
- spin_lock(&lru_list_lock);
-
- repeat:
-@@ -964,6 +992,17 @@
- for (list = inode->i_dirty_buffers.prev;
- bh = BH_ENTRY(list), list != &inode->i_dirty_buffers;
- list = bh->b_inode_buffers.prev) {
-+ /* untested code path ... */
-+ debug_lock_break(551);
-+
-+ if (TEST_LOCK_COUNT(32)) {
-+ RESET_LOCK_COUNT();
-+ if (conditional_schedule_needed()) {
-+ break_spin_lock(&lru_list_lock);
-+ goto repeat;
-+ }
-+ }
-+
- if (buffer_locked(bh)) {
- get_bh(bh);
- spin_unlock(&lru_list_lock);
-diff -Nur linux_c860_org/fs/dcache.c linux/fs/dcache.c
---- linux_c860_org/fs/dcache.c 2002-08-26 14:37:31.000000000 +0900
-+++ linux/fs/dcache.c 2004-06-10 21:09:11.000000000 +0900
-@@ -320,11 +320,24 @@
-
- void prune_dcache(int count)
- {
-+ DEFINE_LOCK_COUNT();
-+
- spin_lock(&dcache_lock);
-+
-+redo:
- for (;;) {
- struct dentry *dentry;
- struct list_head *tmp;
-
-+ if (TEST_LOCK_COUNT(100)) {
-+ RESET_LOCK_COUNT();
-+ debug_lock_break(1);
-+ if (conditional_schedule_needed()) {
-+ break_spin_lock(&dcache_lock);
-+ goto redo;
-+ }
-+ }
-+
- tmp = dentry_unused.prev;
-
- if (tmp == &dentry_unused)
-@@ -480,6 +493,8 @@
- struct list_head *next;
- int found = 0;
-
-+ DEFINE_LOCK_COUNT();
-+
- spin_lock(&dcache_lock);
- repeat:
- next = this_parent->d_subdirs.next;
-@@ -493,6 +508,12 @@
- list_add(&dentry->d_lru, dentry_unused.prev);
- found++;
- }
-+ if (TEST_LOCK_COUNT(500) && found > 10) {
-+ debug_lock_break(1);
-+ if (conditional_schedule_needed())
-+ goto out;
-+ RESET_LOCK_COUNT();
-+ }
- /*
- * Descend a level if the d_subdirs list is non-empty.
- */
-@@ -517,6 +538,7 @@
- #endif
- goto resume;
- }
-+out:
- spin_unlock(&dcache_lock);
- return found;
- }
-diff -Nur linux_c860_org/fs/exec.c linux/fs/exec.c
---- linux_c860_org/fs/exec.c 2003-06-18 16:12:27.000000000 +0900
-+++ linux/fs/exec.c 2004-06-10 21:09:11.000000000 +0900
-@@ -469,8 +469,8 @@
- active_mm = current->active_mm;
- current->mm = mm;
- current->active_mm = mm;
-- task_unlock(current);
- activate_mm(active_mm, mm);
-+ task_unlock(current);
- mm_release();
- if (old_mm) {
- if (active_mm != old_mm) BUG();
-@@ -631,8 +631,10 @@
-
- current->sas_ss_sp = current->sas_ss_size = 0;
-
-- if (current->euid == current->uid && current->egid == current->gid)
-+ if (current->euid == current->uid && current->egid == current->gid) {
- current->mm->dumpable = 1;
-+ current->task_dumpable = 1;
-+ }
- name = bprm->filename;
- for (i=0; (ch = *(name++)) != '\0';) {
- if (ch == '/')
-@@ -1024,7 +1026,7 @@
- binfmt = current->binfmt;
- if (!binfmt || !binfmt->core_dump)
- goto fail;
-- if (!current->mm->dumpable)
-+ if (!is_dumpable(current))
- goto fail;
- current->mm->dumpable = 0;
- if (current->rlim[RLIMIT_CORE].rlim_cur < binfmt->min_coredump)
-diff -Nur linux_c860_org/fs/ext3/inode.c linux/fs/ext3/inode.c
---- linux_c860_org/fs/ext3/inode.c 2002-08-26 14:37:42.000000000 +0900
-+++ linux/fs/ext3/inode.c 2004-06-10 21:09:11.000000000 +0900
-@@ -1649,6 +1649,8 @@
- }
-
- for (p = first; p < last; p++) {
-+ debug_lock_break(1); /* bkl is held */
-+ conditional_schedule();
- nr = le32_to_cpu(*p);
- if (nr) {
- /* accumulate blocks to free if they're contiguous */
-@@ -1714,6 +1716,9 @@
- /* Go read the buffer for the next level down */
- bh = sb_bread(inode->i_sb, nr);
-
-+ debug_lock_break(1);
-+ conditional_schedule();
-+
- /*
- * A read failure? Report error and clear slot
- * (should be rare).
-diff -Nur linux_c860_org/fs/ext3/namei.c linux/fs/ext3/namei.c
---- linux_c860_org/fs/ext3/namei.c 2002-08-26 14:43:28.000000000 +0900
-+++ linux/fs/ext3/namei.c 2004-06-10 21:09:11.000000000 +0900
-@@ -157,6 +157,8 @@
- if ((bh = bh_use[ra_ptr++]) == NULL)
- goto next;
- wait_on_buffer(bh);
-+ debug_lock_break(1);
-+ conditional_schedule();
- if (!buffer_uptodate(bh)) {
- /* read error, skip block & hope for the best */
- brelse(bh);
-diff -Nur linux_c860_org/fs/fat/cache.c linux/fs/fat/cache.c
---- linux_c860_org/fs/fat/cache.c 2002-08-29 12:24:17.000000000 +0900
-+++ linux/fs/fat/cache.c 2004-06-10 21:09:11.000000000 +0900
-@@ -17,6 +17,7 @@
- #include <linux/string.h>
- #include <linux/stat.h>
- #include <linux/fat_cvf.h>
-+#include <linux/sched.h>
-
- #if 0
- # define PRINTK(x) printk x
-diff -Nur linux_c860_org/fs/inode.c linux/fs/inode.c
---- linux_c860_org/fs/inode.c 2002-11-22 21:03:26.000000000 +0900
-+++ linux/fs/inode.c 2004-06-10 21:09:11.000000000 +0900
-@@ -589,6 +589,12 @@
- if (tmp == head)
- break;
- inode = list_entry(tmp, struct inode, i_list);
-+
-+ debug_lock_break(2); /* bkl is also held */
-+ atomic_inc(&inode->i_count);
-+ break_spin_lock_and_resched(&inode_lock);
-+ atomic_dec(&inode->i_count);
-+
- if (inode->i_sb != sb)
- continue;
- invalidate_inode_buffers(inode);
-@@ -699,8 +705,11 @@
- #endif
- #endif
-
-+ DEFINE_LOCK_COUNT();
-+
- spin_lock(&inode_lock);
-
-+free_unused:
- count = 0;
- entry = inode_unused.prev;
- while (entry != &inode_unused)
-@@ -736,6 +745,14 @@
- count++;
- if (!--goal)
- break;
-+ if (TEST_LOCK_COUNT(32)) {
-+ RESET_LOCK_COUNT();
-+ debug_lock_break(1);
-+ if (conditional_schedule_needed()) {
-+ break_spin_lock(&inode_lock);
-+ goto free_unused;
-+ }
-+ }
- }
- inodes_stat.nr_unused -= count;
- spin_unlock(&inode_lock);
-diff -Nur linux_c860_org/fs/jbd/commit.c linux/fs/jbd/commit.c
---- linux_c860_org/fs/jbd/commit.c 2002-08-26 14:37:42.000000000 +0900
-+++ linux/fs/jbd/commit.c 2004-06-10 21:09:11.000000000 +0900
-@@ -212,6 +212,9 @@
- __journal_remove_journal_head(bh);
- refile_buffer(bh);
- __brelse(bh);
-+ debug_lock_break(2);
-+ if (conditional_schedule_needed())
-+ break;
- }
- }
- if (bufs == ARRAY_SIZE(wbuf)) {
-@@ -235,8 +238,7 @@
- journal_brelse_array(wbuf, bufs);
- lock_journal(journal);
- spin_lock(&journal_datalist_lock);
-- if (bufs)
-- goto write_out_data_locked;
-+ goto write_out_data_locked;
- }
-
- /*
-@@ -272,6 +274,14 @@
- */
- while ((jh = commit_transaction->t_async_datalist)) {
- struct buffer_head *bh = jh2bh(jh);
-+ if (conditional_schedule_needed()) {
-+ debug_lock_break(551);
-+ spin_unlock(&journal_datalist_lock);
-+ unlock_journal(journal);
-+ lock_journal(journal);
-+ spin_lock(&journal_datalist_lock);
-+ continue;
-+ }
- if (buffer_locked(bh)) {
- spin_unlock(&journal_datalist_lock);
- unlock_journal(journal);
-diff -Nur linux_c860_org/fs/jffs2/build.c linux/fs/jffs2/build.c
---- linux_c860_org/fs/jffs2/build.c 2003-05-14 15:01:21.000000000 +0900
-+++ linux/fs/jffs2/build.c 2004-06-10 21:09:11.000000000 +0900
-@@ -13,6 +13,7 @@
- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility
- * 20-Sep-2002 Lineo Japan, Inc. add jffs2_orphaned_inodes
- * but it is useless right now
-+ * 05-Aug-2003 SHARP for Tosa
- *
- */
-
-@@ -295,7 +296,7 @@
-
- c->free_size = c->flash_size;
- c->nr_blocks = c->flash_size / c->sector_size;
--#ifdef CONFIG_ARCH_PXA_HUSKY
-+#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA)
- c->blocks = consistent_alloc(GFP_KERNEL,
- sizeof(struct jffs2_eraseblock) * c->nr_blocks,
- &c->blocks_phys);
-@@ -341,7 +342,7 @@
- D1(printk(KERN_DEBUG "build_fs failed\n"));
- jffs2_free_ino_caches(c);
- jffs2_free_raw_node_refs(c);
--#ifdef CONFIG_ARCH_PXA_HUSKY
-+#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA)
- consistent_free( c->blocks,
- sizeof(struct jffs2_eraseblock) * c->nr_blocks,
- c->blocks_phys );
-diff -Nur linux_c860_org/fs/jffs2/fs.c linux/fs/jffs2/fs.c
---- linux_c860_org/fs/jffs2/fs.c 2003-05-14 15:01:21.000000000 +0900
-+++ linux/fs/jffs2/fs.c 2004-06-10 21:09:11.000000000 +0900
-@@ -19,6 +19,7 @@
- * 24-Nov-2002 SHARP modify storage-avail calculation, and add erasing_dirty_size
- * 09-Nov-2002 Lineo Japan, Inc. add code to do avail = 0 when cannot reserve space
- * 01-Nov-2002 Lineo Japan, Inc. involve nr_bad_blocks in USED calc.
-+ * 05-Aug-2003 SHARP for Tosa
- *
- */
-
-@@ -402,7 +403,7 @@
- out_nodes:
- jffs2_free_ino_caches(c);
- jffs2_free_raw_node_refs(c);
--#ifdef CONFIG_ARCH_PXA_HUSKY
-+#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA)
- consistent_free( c->blocks,
- sizeof(struct jffs2_eraseblock) * c->nr_blocks,
- c->blocks_phys );
-diff -Nur linux_c860_org/fs/jffs2/nodelist.h linux/fs/jffs2/nodelist.h
---- linux_c860_org/fs/jffs2/nodelist.h 2003-06-19 17:23:10.000000000 +0900
-+++ linux/fs/jffs2/nodelist.h 2004-06-10 21:14:59.000000000 +0900
-@@ -17,8 +17,16 @@
- * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
- * 11-Nov-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_ROOT
- * 29-Oct-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_BAD and JFFS2_MAX_CONT_GC
-+ *
-+ * ChangeLog:
- * 05-Dec-2002 SHARP adjust REVERVED_BLOCKS values for storage-full
-- * 21-May-2003 SHARP modified JFFS2_RESERVED_BLOCKS_BAD
-+ * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode
-+ * 23-Nov-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_DIRTY
-+ * add JFFS2_RESERVED_BLOCKS_CLEAN
-+ * 19-Nov-2002 Lineo Japan, Inc. add counter of fragtree elements
-+ * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
-+ * 11-Nov-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_ROOT
-+ * 29-Oct-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_BAD and JFFS2_MAX_CONT_GC
- *
- */
-
-@@ -233,13 +241,7 @@
- #define JFFS2_RESERVED_BLOCKS_GCTRIGGER 39 /* ... wake up the GC thread */
- #define JFFS2_RESERVED_BLOCKS_GCBAD (JFFS2_RESERVED_BLOCKS_BASE + 1) /* ... pick a block from the bad_list to GC */
- #define JFFS2_RESERVED_BLOCKS_GCMERGE (JFFS2_RESERVED_BLOCKS_BASE) /* ... merge pages when garbage collecting */
--
--#ifdef CONFIG_ARCH_PXA_HUSKY
- #define JFFS2_RESERVED_BLOCKS_BAD 80
--#else
--#define JFFS2_RESERVED_BLOCKS_BAD 24
--#endif
--
- #define JFFS2_RESERVED_BLOCKS_ROOT 5
- #define JFFS2_RESERVED_BLOCKS_DIRTY 24
- #define JFFS2_RESERVED_BLOCKS_CLEAN 12
-diff -Nur linux_c860_org/fs/jffs2/super-v24.c linux/fs/jffs2/super-v24.c
---- linux_c860_org/fs/jffs2/super-v24.c 2003-05-14 15:01:21.000000000 +0900
-+++ linux/fs/jffs2/super-v24.c 2004-06-10 21:09:11.000000000 +0900
-@@ -11,6 +11,7 @@
- *
- * ChangeLog:
- * 08-Nov-2002 Lineo Japan, Inc. add /proc/fs/jffs2 files for JFFS2 information
-+ * 05-Aug-2003 SHARP for Tosa
- *
- */
-
-@@ -106,7 +107,7 @@
- up(&c->alloc_sem);
- jffs2_free_ino_caches(c);
- jffs2_free_raw_node_refs(c);
--#ifdef CONFIG_ARCH_PXA_HUSKY
-+#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA)
- consistent_free( c->blocks,
- sizeof(struct jffs2_eraseblock) * c->nr_blocks,
- c->blocks_phys );
-diff -Nur linux_c860_org/fs/jffs2/super.c linux/fs/jffs2/super.c
---- linux_c860_org/fs/jffs2/super.c 2003-05-14 15:01:21.000000000 +0900
-+++ linux/fs/jffs2/super.c 2004-06-10 21:09:11.000000000 +0900
-@@ -9,6 +9,9 @@
- *
- * $Id: super.c,v 1.73 2002/07/23 17:00:45 dwmw2 Exp $
- *
-+ * ChangeLog:
-+ * 05-Aug-2003 SHARP for Tosa
-+ *
- */
-
- #include <linux/config.h>
-@@ -263,7 +266,7 @@
- up(&c->alloc_sem);
- jffs2_free_ino_caches(c);
- jffs2_free_raw_node_refs(c);
--#ifdef CONFIG_ARCH_PXA_HUSKY
-+#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA)
- consistent_free( c->blocks,
- sizeof(struct jffs2_eraseblock) * c->nr_blocks,
- c->blocks_phys );
-diff -Nur linux_c860_org/fs/nls/nls_base.c linux/fs/nls/nls_base.c
---- linux_c860_org/fs/nls/nls_base.c 2002-08-26 14:37:33.000000000 +0900
-+++ linux/fs/nls/nls_base.c 2004-06-10 21:09:11.000000000 +0900
-@@ -18,6 +18,7 @@
- #ifdef CONFIG_KMOD
- #include <linux/kmod.h>
- #endif
-+#include <linux/sched.h>
- #include <linux/spinlock.h>
-
- static struct nls_table *tables;
-diff -Nur linux_c860_org/fs/reiserfs/bitmap.c linux/fs/reiserfs/bitmap.c
---- linux_c860_org/fs/reiserfs/bitmap.c 2002-08-26 14:37:39.000000000 +0900
-+++ linux/fs/reiserfs/bitmap.c 2004-06-10 21:09:11.000000000 +0900
-@@ -410,19 +410,23 @@
- amount_needed++ ;
- continue ;
- }
--
-
-- reiserfs_prepare_for_journal(s, SB_AP_BITMAP(s)[i], 1) ;
-+ RFALSE( is_reusable (s, search_start, 0) == 0,
-+ "vs-4140: bad block number found");
-
-- RFALSE( buffer_locked (SB_AP_BITMAP (s)[i]) ||
-- is_reusable (s, search_start, 0) == 0,
-- "vs-4140: bitmap block is locked or bad block number found");
-+ reiserfs_prepare_for_journal(s, SB_AP_BITMAP(s)[i], 1) ;
-
- /* if this bit was already set, we've scheduled, and someone else
- ** has allocated it. loop around and try again
- */
- if (reiserfs_test_and_set_le_bit (j, SB_AP_BITMAP (s)[i]->b_data)) {
- reiserfs_restore_prepared_buffer(s, SB_AP_BITMAP(s)[i]) ;
-+ /* if this block has been allocated while we slept, it is
-+ ** impossible to find any more contiguous blocks for ourselves.
-+ ** If we are doing preallocation, give up now and return.
-+ */
-+ if (for_prealloc)
-+ goto free_and_return;
- amount_needed++ ;
- continue ;
- }
-diff -Nur linux_c860_org/fs/reiserfs/buffer2.c linux/fs/reiserfs/buffer2.c
---- linux_c860_org/fs/reiserfs/buffer2.c 2002-08-26 14:37:40.000000000 +0900
-+++ linux/fs/reiserfs/buffer2.c 2004-06-10 21:09:11.000000000 +0900
-@@ -55,6 +55,8 @@
- PROC_EXP( unsigned int ctx_switches = kstat.context_swtch );
-
- result = bread (super -> s_dev, n_block, n_size);
-+ debug_lock_break(1);
-+ conditional_schedule();
- PROC_INFO_INC( super, breads );
- PROC_EXP( if( kstat.context_swtch != ctx_switches )
- PROC_INFO_INC( super, bread_miss ) );
-diff -Nur linux_c860_org/fs/reiserfs/journal.c linux/fs/reiserfs/journal.c
---- linux_c860_org/fs/reiserfs/journal.c 2002-08-26 14:37:40.000000000 +0900
-+++ linux/fs/reiserfs/journal.c 2004-06-10 21:09:11.000000000 +0900
-@@ -574,6 +574,8 @@
- /* lock the current transaction */
- inline static void lock_journal(struct super_block *p_s_sb) {
- PROC_INFO_INC( p_s_sb, journal.lock_journal );
-+ debug_lock_break(1);
-+ conditional_schedule();
- while(atomic_read(&(SB_JOURNAL(p_s_sb)->j_wlock)) > 0) {
- PROC_INFO_INC( p_s_sb, journal.lock_journal_wait );
- sleep_on(&(SB_JOURNAL(p_s_sb)->j_wait)) ;
-@@ -704,6 +706,8 @@
- mark_buffer_dirty(tbh) ;
- }
- ll_rw_block(WRITE, 1, &tbh) ;
-+ debug_lock_break(1);
-+ conditional_schedule();
- count++ ;
- put_bh(tbh) ; /* once for our get_hash */
- }
-@@ -833,6 +837,8 @@
- set_bit(BH_Dirty, &(SB_JOURNAL(p_s_sb)->j_header_bh->b_state)) ;
- ll_rw_block(WRITE, 1, &(SB_JOURNAL(p_s_sb)->j_header_bh)) ;
- wait_on_buffer((SB_JOURNAL(p_s_sb)->j_header_bh)) ;
-+ debug_lock_break(1);
-+ conditional_schedule();
- if (!buffer_uptodate(SB_JOURNAL(p_s_sb)->j_header_bh)) {
- printk( "reiserfs: journal-837: IO error during journal replay\n" );
- return -EIO ;
-@@ -2089,6 +2095,8 @@
- }
-
- int journal_begin(struct reiserfs_transaction_handle *th, struct super_block * p_s_sb, unsigned long nblocks) {
-+ debug_lock_break(1);
-+ conditional_schedule();
- return do_journal_begin_r(th, p_s_sb, nblocks, 0) ;
- }
-
-@@ -2229,6 +2237,8 @@
- }
-
- int journal_end(struct reiserfs_transaction_handle *th, struct super_block *p_s_sb, unsigned long nblocks) {
-+ debug_lock_break(1);
-+ conditional_schedule();
- return do_journal_end(th, p_s_sb, nblocks, 0) ;
- }
-
-@@ -2680,6 +2690,8 @@
- RFALSE( buffer_locked(bh) && cur_tb != NULL,
- "waiting while do_balance was running\n") ;
- wait_on_buffer(bh) ;
-+ debug_lock_break(1);
-+ conditional_schedule();
- }
- PROC_INFO_INC( p_s_sb, journal.prepare_retry );
- retry_count++ ;
-@@ -2852,6 +2864,8 @@
- /* copy all the real blocks into log area. dirty log blocks */
- if (test_bit(BH_JDirty, &cn->bh->b_state)) {
- struct buffer_head *tmp_bh ;
-+ debug_lock_break(1);
-+ conditional_schedule();
- tmp_bh = sb_getblk(p_s_sb, reiserfs_get_journal_block(p_s_sb) +
- ((cur_write_start + jindex) % JOURNAL_BLOCK_COUNT)) ;
- mark_buffer_uptodate(tmp_bh, 1) ;
-diff -Nur linux_c860_org/fs/reiserfs/stree.c linux/fs/reiserfs/stree.c
---- linux_c860_org/fs/reiserfs/stree.c 2002-08-26 14:37:40.000000000 +0900
-+++ linux/fs/reiserfs/stree.c 2004-06-10 21:09:11.000000000 +0900
-@@ -648,9 +648,8 @@
- stop at leaf level - set to
- DISK_LEAF_NODE_LEVEL */
- ) {
-- int n_block_number = SB_ROOT_BLOCK (p_s_sb),
-- expected_level = SB_TREE_HEIGHT (p_s_sb),
-- n_block_size = p_s_sb->s_blocksize;
-+ int n_block_number, expected_level;
-+ int n_block_size = p_s_sb->s_blocksize;
- struct buffer_head * p_s_bh;
- struct path_element * p_s_last_element;
- int n_node_level, n_retval;
-@@ -662,7 +661,10 @@
- #endif
-
- PROC_INFO_INC( p_s_sb, search_by_key );
--
-+
-+ debug_lock_break(1);
-+ conditional_schedule();
-+
- /* As we add each node to a path we increase its count. This means that
- we must be careful to release all nodes in a path before we either
- discard the path struct or re-use the path struct, as we do here. */
-@@ -674,6 +676,8 @@
- /* With each iteration of this loop we search through the items in the
- current node, and calculate the next current node(next path element)
- for the next iteration of this loop.. */
-+ n_block_number = SB_ROOT_BLOCK (p_s_sb);
-+ expected_level = SB_TREE_HEIGHT (p_s_sb);
- while ( 1 ) {
-
- #ifdef CONFIG_REISERFS_CHECK
-@@ -1100,6 +1104,9 @@
- for (n_counter = *p_n_removed;
- n_counter < n_unfm_number; n_counter++, p_n_unfm_pointer-- ) {
-
-+ debug_lock_break(1);
-+ conditional_schedule();
-+
- if (item_moved (&s_ih, p_s_path)) {
- need_research = 1 ;
- break;
-diff -Nur linux_c860_org/include/asm-alpha/processor.h linux/include/asm-alpha/processor.h
---- linux_c860_org/include/asm-alpha/processor.h 2002-08-26 14:37:49.000000000 +0900
-+++ linux/include/asm-alpha/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -119,7 +119,7 @@
- extern void release_thread(struct task_struct *);
-
- /* Create a kernel thread without removing it from tasklists. */
--extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
-+extern long arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
-
- #define copy_segments(tsk, mm) do { } while (0)
- #define release_segments(mm) do { } while (0)
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/hardware.h linux/include/asm-arm/arch-pxa/hardware.h
---- linux_c860_org/include/asm-arm/arch-pxa/hardware.h 2002-12-18 19:52:24.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/hardware.h 2004-06-10 21:12:44.000000000 +0900
-@@ -11,6 +11,7 @@
- *
- * ChangLog:
- * 12-Dec-2002 Lineo Japan, Inc.
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #ifndef __ASM_ARCH_HARDWARE_H
-@@ -160,6 +161,10 @@
-
- #ifdef CONFIG_ARCH_PXA_CORGI
- #include "corgi.h"
--#endif
-+#endif /* CONFIG_ARCH_PXA_CORGI */
-+
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+#include "tosa.h"
-+#endif /* CONFIG_ARCH_PXA_TOSA */
-
- #endif /* _ASM_ARCH_HARDWARE_H */
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/irqs.h linux/include/asm-arm/arch-pxa/irqs.h
---- linux_c860_org/include/asm-arm/arch-pxa/irqs.h 2002-12-18 19:29:34.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/irqs.h 2004-06-10 21:12:37.000000000 +0900
-@@ -11,6 +11,7 @@
- *
- * ChangLog:
- * 12-Dec-2002 Lineo Japan, Inc.
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #define PXA_IRQ_SKIP 8 /* The first 8 IRQs are reserved */
-@@ -345,6 +346,20 @@
-
- #endif
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+#define TC6393_IRQ(x) (IRQ_GPIO(80) + 1 + (x))
-+#define TC6393_IRQ_NDINT TC6393_IRQ(0)
-+#define TC6393_IRQ_SDINT TC6393_IRQ(1)
-+#define TC6393_IRQ_USBINT TC6393_IRQ(2)
-+#define TC6393_IRQ_SIOINT TC6393_IRQ(3)
-+#define TC6393_IRQ_GCINT TC6393_IRQ(4)
-+#define TC6393_IRQ_GPINT TC6393_IRQ(5)
-+#define TC6393_IRQ_CLKINT TC6393_IRQ(7)
-+
-+#undef NR_IRQS
-+#define NR_IRQS (TC6393_IRQ(7) + 1)
-+#endif /* CONFIG_ARCH_PXA_TOSA */
-+
- #if defined(CONFIG_ARCH_PXA_POODLE)
- #if CONFIG_SA1111
- #error POODLE configuration error
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/keyboard.h linux/include/asm-arm/arch-pxa/keyboard.h
---- linux_c860_org/include/asm-arm/arch-pxa/keyboard.h 2002-12-18 19:29:34.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/keyboard.h 2004-06-10 21:13:12.000000000 +0900
-@@ -5,6 +5,7 @@
- *
- * ChangLog:
- * 12-Dec-2002 Lineo Japan, Inc.
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #ifndef _PXA_KEYBOARD_H
-@@ -22,6 +23,8 @@
- #include <asm/arch/keyboard_poodle.h>
- #elif defined(CONFIG_ARCH_PXA_CORGI)
- #include <asm/arch/keyboard_corgi.h>
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+#include <asm/arch/keyboard_tosa.h>
- #else
-
- #define kbd_disable_irq() do { } while(0);
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/keyboard_tosa.h linux/include/asm-arm/arch-pxa/keyboard_tosa.h
---- linux_c860_org/include/asm-arm/arch-pxa/keyboard_tosa.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/keyboard_tosa.h 2004-06-10 21:13:12.000000000 +0900
-@@ -0,0 +1,162 @@
-+/*
-+ * linux/include/asm-arm/arch-pxa/keyboard_tosa.h
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * Based on:
-+ *
-+ * linux/include/asm-arm/arch-pxa/keyboard_corgi.h
-+ *
-+ * (C) Copyright 2001 Lineo Japan, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * Based on:
-+ * linux/include/asm-arm/arch-sa1100/keyboard_collie.h
-+ * include/asm-arm/arch-linkup/keyboard.h
-+ * Created by Xuejun Tao 2000, ISDCorp www.isdcorp.com
-+ *
-+ * Changelog:
-+ * 04-13-2001 Lineo Japan, Inc.
-+ * 04-25-2001 Lineo Japan, Inc.
-+ * 10-23-2002 Sharp Corporation
-+ */
-+#ifndef __ASM_ARCH_KEYBOARD_TOSA_H
-+#define __ASM_ARCH_KEYBOARD_TOSA_H
-+
-+#include <linux/spinlock.h>
-+#include <asm/arch/hardware.h>
-+
-+/* =========================================================
-+ * !!! CAUTION !!!
-+ * Iris board without Keyboard Enhancements makes PA5 INTR
-+ * all times. So , you should disable PA5 INTR on such boards.
-+ * Define this option to run on such board.
-+ * ========================================================= */
-+#define TOSA_WITHOUT_KEY_ENH_WORKAROUND
-+/* =========================================================
-+ * CAUTION ends.
-+ * ========================================================= */
-+
-+/*
-+ * My driver now supports both keyboard interrupt driven or timer driven
-+ * Both modes work although keyboard interrupt mode is highly recommended.
-+ */
-+#define USE_KBD_IRQ /* Use keyboard interrupt instead of timer */
-+
-+#define KB_ROWS 7
-+#define KB_COLS 11
-+
-+#define KBD_COL9_IS_USED_FOR_SIC
-+ /* KBDCOL9 Hardware is used as SIC SYS_CLK , so , it cannot be used */
-+
-+#define ALL_AUX_COLS 0x00 /* no AUX Cols */
-+
-+#define set_bits(var, mask, bits) (var) = (((var) & ~(mask)) | (bits))
-+
-+/*
-+ * Be sure to change the if you increase the
-+ * number of kbd rows...
-+ */
-+#define KEYCODE(r,c) ( ((r)<<4) + (c) + 1 )
-+#define KB_ROWMASK(r) (1 << (r))
-+
-+ /*
-+ * KB_DELAY is used to allow the matrix
-+ * to stabilize.., value is determined via
-+ * experimentation.
-+ */
-+
-+#define KB_DISCHARGE_DELAY 10
-+#define KB_ACTIVATE_DELAY 10
-+
-+typedef struct {
-+ int in; /* If the key down */
-+} kbd_keyinfo;
-+
-+#define KBUP (0x80)
-+#define KBDOWN (0)
-+
-+#define KBSCANCDE(x,y) ((x) | (y))
-+
-+#define CHARGE_VALUE 0x00FF
-+#define DISCHARGE_VALUE 0x0000
-+#define IRQ_STATE_CLEAR 0xFEFF
-+#define INIT_KCMD 0x0001
-+
-+
-+
-+/*
-+ * We have a spinlock we use to ensure that keysdown
-+ * is consisent with kbd_state[]
-+ *
-+ * This is prolly overkill since the arm doesn't support SMP.
-+ */
-+// Yes, it is - WA static spinlock_t kbd_spinlock;
-+extern spinlock_t kbd_spinlock;
-+
-+ /*
-+ * #define for functions we can't make use of
-+ */
-+
-+#define kbd_leds(x)
-+#define kbd_setleds(x)
-+#define kbd_getledstate (0)
-+extern int tosa_kbd_translate(unsigned char sc,unsigned char *keycode_p);
-+#define kbd_translate(sc,kc,rm) tosa_kbd_translate(sc,kc)
-+/*
-+ *#define kbd_sysrq_xlate() (1)
-+ */
-+#define kbd_pretranslate(x,y) (1)
-+#define kbd_unexpected_up(kc) (0x80)
-+#define kbd_setkeycode(sc,kc) (-EINVAL)
-+#define kbd_getkeycode(sc) (-EINVAL)
-+
-+extern void tosa_kbd_hw_init(void);
-+#define kbd_init_hw() tosa_kbd_hw_init()
-+
-+extern void tosa_kbd_cleartable(void);
-+
-+/*
-+ * I need to do something better for these two...
-+ * Sometime v. soon. I don't like these at all, as they
-+ *
-+ * don't look like fn calls.
-+ */
-+
-+#define kbd_disable_irq() { \
-+ int flags; \
-+ spin_lock_irqsave(&kbd_spinlock,flags);
-+
-+
-+#define kbd_enable_irq() spin_unlock_irqrestore(&kbd_spinlock,flags); \
-+ }
-+
-+
-+/* data structure for raw keyboard event */
-+
-+/*
-+ * row , col values for feature keys
-+ */
-+#define TOSA_KEYPOS_2nd_ROW 0
-+#define TOSA_KEYPOS_2nd_COL 1
-+
-+#define TOSA_KEYPOS_NUM_ROW 0
-+#define TOSA_KEYPOS_NUM_COL 8
-+
-+#define TOSA_KEYPOS_LSHIFT_ROW 1
-+#define TOSA_KEYPOS_LSHIFT_COL 0
-+
-+#define TOSA_KEYPOS_RSHIFT_ROW 1
-+#define TOSA_KEYPOS_RSHIFT_COL 8
-+
-+/*
-+ * number of modifier status keys resolved on corgikb driver
-+ */
-+#define TOSAKB_MODIFIERS 5 /* for CapsLock / NumLock / 2ND / LSHIFT / RSHIFT */
-+
-+#endif
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/pcmcia.h linux/include/asm-arm/arch-pxa/pcmcia.h
---- linux_c860_org/include/asm-arm/arch-pxa/pcmcia.h 2002-12-18 19:29:34.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/pcmcia.h 2004-06-10 21:13:56.000000000 +0900
-@@ -14,6 +14,7 @@
- *
- * ChangLog:
- * 12-Dec-2002 Lineo Japan, Inc.
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #ifndef _ASM_ARCH_PCMCIA
-@@ -71,6 +72,10 @@
- int (*socket_state)(struct pcmcia_state_array *);
- int (*get_irq_info)(struct pcmcia_irq_info *);
- int (*configure_socket)(const struct pcmcia_configure *);
-+#ifdef CONFIG_ARCH_SHARP_SL
-+ int (*socket_init)(int sock);
-+ int (*socket_suspend)(int sock);
-+#endif
- };
-
- extern struct pcmcia_low_level *pcmcia_low_level;
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/pxa-regs.h linux/include/asm-arm/arch-pxa/pxa-regs.h
---- linux_c860_org/include/asm-arm/arch-pxa/pxa-regs.h 2002-08-29 14:59:56.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/pxa-regs.h 2004-06-10 21:09:11.000000000 +0900
-@@ -11,6 +11,7 @@
- *
- * Change Log
- * 08-19-2002 Sharp add I2S defines
-+ * 26-Feb-2004 Lineo Solutions, Inc. supply a definition for FM bit of ICR
- *
- */
- #ifndef _PXA_REGS_H_
-@@ -443,6 +444,7 @@
- #define ICR_ALDIE 0x1000 /* enable arbitration interrupt */
- #define ICR_SADIE 0x2000 /* slave address detected int enable */
- #define ICR_UR 0x4000 /* unit reset */
-+#define ICR_FM 0x8000 /* fast mode */
-
- /* ----- Status register bits ----------------------------------------- */
-
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/serial_pxa200.h linux/include/asm-arm/arch-pxa/serial_pxa200.h
---- linux_c860_org/include/asm-arm/arch-pxa/serial_pxa200.h 2003-01-15 15:51:16.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/serial_pxa200.h 2004-06-10 21:13:15.000000000 +0900
-@@ -3,6 +3,7 @@
- *
- * Change Log
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #ifndef __ASM_ARCH_SERIAL_H
-@@ -30,7 +31,10 @@
- #define CONFIG_UART2_DFLT_CONSOLE
- #elif defined(CONFIG_ARCH_PXA_CORGI)
- #define CONFIG_UART2_DFLT_CONSOLE
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+#define CONFIG_UART2_DFLT_CONSOLE
- #endif
-+
- #if defined(CONFIG_UART0_DFLT_CONSOLE)
-
- #define STD_SERIAL_PORT_DEFNS \
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/sharpsl_battery.h linux/include/asm-arm/arch-pxa/sharpsl_battery.h
---- linux_c860_org/include/asm-arm/arch-pxa/sharpsl_battery.h 2002-08-26 16:00:32.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/sharpsl_battery.h 2004-06-10 21:17:53.000000000 +0900
-@@ -10,6 +10,7 @@
- *
- * ChangeLog:
- * 21-Aug-2002 Lineo Japan, Inc. for 2.4.18
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- *
- */
-
-@@ -81,6 +82,11 @@
- #define BATT_AD 4u /* channel of BATTery */
- #define BATT_THM 2u /* channel of BATTery */
- #define JK_VAD 6u /* channel of BATTery */
-+#elif defined(CONFIG_ARCH_PXA_TOSA)
-+#define BATT_VC 0x4 /* channel of BAT V CAUTION */
-+#define BATT_TH 0x5 /* channel of BAT TH */
-+#define BATT_V 0x6 /* channel of BAT V */
-+#define BU_V 0x7 /* channel of BU V */
- #endif
-
- #define Temper_V47 0x449 /* 0.670v (47"C) */
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/sharpsl_wakeup.h linux/include/asm-arm/arch-pxa/sharpsl_wakeup.h
---- linux_c860_org/include/asm-arm/arch-pxa/sharpsl_wakeup.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/sharpsl_wakeup.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,26 @@
-+/*
-+ * include/asm-arm/arch-pxa/sharpsl_wakeup.h
-+ * Copyright (C) 2003 SHARP
-+ */
-+
-+#ifndef __SHARPSL_WAKEUP_H__
-+#define __SHARPSL_WAKEUP_H__
-+
-+
-+#define IDPM_WAKEUP_AC (0x1<<1)
-+#define IDPM_WAKEUP_SYNC (0x1<<3)
-+#define IDPM_WAKEUP_REMOCON (0x1<<4)
-+#define IDPM_WAKEUP_REC (0x1<<10)
-+#define IDPM_WAKEUP_JACKET (0x1<<16)
-+#define IDPM_WAKEUP_USBD (0x1<<17)
-+#define IDPM_WAKEUP_CALENDAR (0x1<<25)
-+#define IDPM_WAKEUP_ADDRESSBOOK (0x1<<26)
-+#define IDPM_WAKEUP_MAIL (0x1<<27)
-+#define IDPM_WAKEUP_MENU (0x1<<28)
-+#define IDPM_WAKEUP_HOME (0x1<<29)
-+#define IDPM_WAKEUP_RTC (0x1<<31)
-+
-+extern unsigned long logical_wakeup_src_mask;
-+
-+
-+#endif // end __SHARPSL_WAKEUP_H__
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/system.h linux/include/asm-arm/arch-pxa/system.h
---- linux_c860_org/include/asm-arm/arch-pxa/system.h 2003-06-18 16:12:28.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/system.h 2004-06-10 21:17:56.000000000 +0900
-@@ -12,6 +12,7 @@
- * Change Log
- * 17-Sep-2002 Lineo Japan, Inc.
- * 13-Mar-2003 Sharp for Shepherd
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #include <linux/config.h>
-@@ -32,11 +33,13 @@
- static inline void arch_reset(char mode)
- {
- #ifdef CONFIG_ARCH_SHARP_SL
--#ifdef CONFIG_ARCH_PXA_SHEPHERD
-+#ifdef CONFIG_PM
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
- sharpsl_restart_nonstop();
- #else
- sharpsl_restart();
- #endif
-+#endif
- #else
- if (mode == 's') {
- /* Jump into ROM at address 0 */
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/time.h linux/include/asm-arm/arch-pxa/time.h
---- linux_c860_org/include/asm-arm/arch-pxa/time.h 2003-01-14 12:07:55.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/time.h 2004-06-10 21:18:00.000000000 +0900
-@@ -12,6 +12,7 @@
- * ChangLog:
- * 12-Dec-2002 Lineo Japan, Inc.
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #ifdef CONFIG_SABINAL_DISCOVERY
-@@ -19,14 +20,18 @@
- //#define RTC_DEF_TRIM 0
- #define RTC_DEF_TRIM 0x11b3
- #endif
-+
- #ifdef CONFIG_ARCH_PXA_POODLE
- #define RTC_DEF_DIVIDER 32768 - 1
- #define RTC_DEF_TRIM 0
--#endif
--#ifdef CONFIG_ARCH_PXA_CORGI
-+#elif CONFIG_ARCH_PXA_CORGI
-+#define RTC_DEF_DIVIDER 32768 - 1
-+#define RTC_DEF_TRIM 0
-+#elif CONFIG_ARCH_PXA_TOSA
- #define RTC_DEF_DIVIDER 32768 - 1
- #define RTC_DEF_TRIM 0
- #endif
-+
- #ifdef CONFIG_ARCH_SHARP_SL
- #define SHARP_SL_DEF_YEAR 2003
- #endif
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/tosa.h linux/include/asm-arm/arch-pxa/tosa.h
---- linux_c860_org/include/asm-arm/arch-pxa/tosa.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/tosa.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,433 @@
-+/*
-+ * include/asm-arm/arch-pxa/tosa.h
-+ * Copyright (C) 2003 Lineo uSolutions, Inc.
-+ *
-+ * ChangeLog:
-+ * 23-Oct-2003 SHARP Corporation
-+ */
-+
-+#ifndef _ASM_ARCH_TOSA_H_
-+#define _ASM_ARCH_TOSA_H_ 1
-+
-+/* TOSA Chip selects */
-+#define TOSA_LCDC_PHYS PXA_CS4_PHYS
-+/* Internel Scoop */
-+#define TOSA_CF_PHYS (PXA_CS2_PHYS + 0x00800000)
-+/* Jacket Scoop */
-+#define TOSA_SCOOP_PHYS (PXA_CS5_PHYS + 0x00800000)
-+
-+/*
-+ * TC6393 internal I/O mappings
-+ *
-+ * We have the following mapping:
-+ * phys virt
-+ * 10000000 f1000000
-+ */
-+#define TC6393_SYS_BASE 0xf1000000
-+#define TC6393_NAND_BASE (TC6393_SYS_BASE + 0x000100)
-+#define TC6393_SD_BASE (TC6393_SYS_BASE + 0x000200)
-+#define TC6393_USB_BASE (TC6393_SYS_BASE + 0x000300)
-+#define TC6393_SERIAL_BASE (TC6393_SYS_BASE + 0x000400)
-+#define TC6393_GC_BASE (TC6393_SYS_BASE + 0x000500)
-+#define TC6393_RAM0_BASE (TC6393_SYS_BASE + 0x010000)
-+#define TC6393_RAM0_SIZE (32*1024)
-+#define TC6393_RAM1_BASE (TC6393_SYS_BASE + 0x100000)
-+#define TC6393_RAM1_SIZE (64 * 1024 * 16)
-+
-+/*
-+ * Internal Local Memory use purpose
-+ * RAM0 is used for USB
-+ * RAM1 is used for GC
-+ */
-+/* Internal register mapping */
-+#define TC6393_GC_INTERNAL_REG_BASE 0x000600 /* Length 0x200 */
-+#define TC6393_USB_OHCI_OP_REG_BASE 0x000A00 /* Length 0x100 */
-+#define TC6393_NAND_FLASH_CTL_REG_BASE 0x001000 /* Length 0x8 */
-+
-+
-+/* System Configuration register */
-+#define TC6393_SYS_REG(ofst) (*(volatile unsigned short*)(TC6393_SYS_BASE+(ofst)))
-+#define TC6393_SYS_RIDR 0x008
-+#define TC6393_SYS_ISR 0x050
-+#define TC6393_SYS_IMR 0x052
-+#define TC6393_SYS_IRR 0x054
-+#define TC6393_SYS_GPER 0x060
-+#define TC6393_SYS_GPISR1 0x064
-+#define TC6393_SYS_GPISR2 0x066
-+#define TC6393_SYS_GPIIMR1 0x068
-+#define TC6393_SYS_GPIIMR2 0x06A
-+#define TC6393_SYS_GPIEDER1 0x06C
-+#define TC6393_SYS_GPIEDER2 0x06E
-+#define TC6393_SYS_GPILIR1 0x070
-+#define TC6393_SYS_GPILIR2 0x072
-+#define TC6393_SYS_GPODSR1 0x078
-+#define TC6393_SYS_GPODSR2 0x07A
-+#define TC6393_SYS_GPOOECR1 0x07C
-+#define TC6393_SYS_GPOOECR2 0x07E
-+#define TC6393_SYS_GPIARCR1 0x080
-+#define TC6393_SYS_GPIARCR2 0x082
-+#define TC6393_SYS_GPIARLCR1 0x084
-+#define TC6393_SYS_GPIARLCR2 0x086
-+#define TC6393_SYS_GPIBCR1 0x088
-+#define TC6393_SYS_GPIBCR2 0x08A
-+#define TC6393_SYS_GPaIARCR 0x08C
-+#define TC6393_SYS_GPaIARLCR 0x090
-+#define TC6393_SYS_GPaIBCR 0x094
-+#define TC6393_SYS_CCR 0x098 /* Clock Control Register */
-+#define TC6393_SYS_PLL2CR 0x09A
-+#define TC6393_SYS_PLL1CR1 0x09C
-+#define TC6393_SYS_PLL1CR2 0x09E
-+#define TC6393_SYS_DCR 0x0A0
-+#define TC6393_SYS_FER 0x0E0 /* Function Enable Register */
-+#define TC6393_SYS_MCR 0x0E4
-+#define TC6393_SYS_ConfigCR 0x0FC
-+
-+/* NAND FLASH controller configuration register */
-+#define TC6393_NAND_REG(ofst) (*(volatile unsigned short*)(TC6393_NAND_BASE+(ofst)))
-+
-+/* SD Card Configuration register */
-+#define TC6393_SD_REG(ofst) (*(volatile unsigned short*)(TC6393_SD_BASE+(ofst)))
-+
-+/* USB HOST Configuration register */
-+#define TC6393_USB_REG(ofst) (*(volatile unsigned short*)(TC6393_USB_BASE+(ofst)))
-+#define TC6393_USB_SPRID 0x08
-+#define TC6393_USB_SPBA1 0x10
-+#define TC6393_USB_SPBA2 0x12
-+#define TC6393_USB_ILME 0x40
-+#define TC6393_USB_SVPMCS 0x4C
-+#define TC6393_USB_PM_PMES (1 << 15)
-+#define TC6393_USB_PM_PMEE (1 << 8)
-+#define TC6393_USB_PM_USPW2 (1 << 3)
-+#define TC6393_USB_PM_USPW1 (1 << 2)
-+#define TC6393_USB_PM_CKRNEN (1 << 1)
-+#define TC6393_USB_PM_GCKEN (1 << 0)
-+#define TC6393_USB_INTC 0x50
-+#define TC6393_USB_SP1INTC1 0x54
-+#define TC6393_USB_SP1INTC2 0x56
-+#define TC6393_USB_SP1MBA1 0x58
-+#define TC6393_USB_SP1MBA2 0x5A
-+#define TC6393_USB_SP2INTC1 0x5C
-+#define TC6393_USB_SP2INTC2 0x5E
-+#define TC6393_USB_SP2MBA1 0x60
-+#define TC6393_USB_SP2MBA2 0x62
-+#define TC6393_USB_SPPCNF 0xFC
-+
-+#define IS_TC6393_RAM0(p) (TC6393_RAM0_BASE <= (unsigned int)p \
-+ && (unsigned int)p <= TC6393_RAM0_BASE + TC6393_RAM0_SIZE)
-+#define TC6393_RAM0_VAR_TO_OFFSET(x) ((unsigned int)x - TC6393_RAM0_BASE)
-+#define TC6393_RAM0_OFFSET_TO_VAR(x) ((unsigned int)x + TC6393_RAM0_BASE)
-+
-+/* Serial I/O controller Configuration register */
-+#define TC6393_SERIAL_REG(ofst) (*(volatile unsigned short*)(TC6393_SERIAL_BASE+(ofst)))
-+
-+/* Graphic controller Configuration register */
-+#define TC6393_GC_REG(ofst) (*(volatile unsigned short*)(TC6393_GC_BASE+(ofst)))
-+
-+/* GPIO bit */
-+#define TC6393_GPIO19 ( 1 << 19 )
-+#define TC6393_GPIO18 ( 1 << 18 )
-+#define TC6393_GPIO17 ( 1 << 17 )
-+#define TC6393_GPIO16 ( 1 << 16 )
-+#define TC6393_GPIO15 ( 1 << 15 )
-+#define TC6393_GPIO14 ( 1 << 14 )
-+#define TC6393_GPIO13 ( 1 << 13 )
-+#define TC6393_GPIO12 ( 1 << 12 )
-+#define TC6393_GPIO11 ( 1 << 11 )
-+#define TC6393_GPIO10 ( 1 << 10 )
-+#define TC6393_GPIO9 ( 1 << 9 )
-+#define TC6393_GPIO8 ( 1 << 8 )
-+#define TC6393_GPIO7 ( 1 << 7 )
-+#define TC6393_GPIO6 ( 1 << 6 )
-+#define TC6393_GPIO5 ( 1 << 5 )
-+#define TC6393_GPIO4 ( 1 << 4 )
-+#define TC6393_GPIO3 ( 1 << 3 )
-+#define TC6393_GPIO2 ( 1 << 2 )
-+#define TC6393_GPIO1 ( 1 << 1 )
-+#define TC6393_GPIO0 ( 1 << 0 )
-+
-+/*
-+ * TC6393 GPIOs
-+ */
-+#define TC6393_TG_ON TC6393_GPIO0
-+#define TC6393_L_MUTE TC6393_GPIO1
-+#define TC6393_BL_C20MA TC6393_GPIO3
-+#define TC6393_CARD_VCC_ON TC6393_GPIO4
-+#define TC6393_CHARGE_OFF TC6393_GPIO6
-+#define TC6393_CHARGE_OFF_JC TC6393_GPIO7
-+#define TC6393_BAT0_V_ON TC6393_GPIO9
-+#define TC6393_BAT1_V_ON TC6393_GPIO10
-+#define TC6393_BU_CHRG_ON TC6393_GPIO11
-+#define TC6393_BAT_SW_ON TC6393_GPIO12
-+#define TC6393_BAT0_TH_ON TC6393_GPIO14
-+#define TC6393_BAT1_TH_ON TC6393_GPIO15
-+
-+#define TC6393_GPO_OE ( TC6393_TG_ON | TC6393_L_MUTE | TC6393_BL_C20MA | \
-+ TC6393_CARD_VCC_ON | TC6393_CHARGE_OFF | \
-+ TC6393_CHARGE_OFF_JC | TC6393_BAT0_V_ON | \
-+ TC6393_BAT1_V_ON | TC6393_BU_CHRG_ON | \
-+ TC6393_BAT_SW_ON | TC6393_BAT0_TH_ON | \
-+ TC6393_BAT1_TH_ON )
-+
-+/*
-+ * SCOOP2 internal I/O mappings
-+ *
-+ * We have the following mapping:
-+ * phys virt
-+ * 08800000 f2000000
-+ */
-+#define CF_BUF_CTRL_BASE 0xF2000000
-+#define SCP_REG(adr) (*(volatile unsigned short*)(CF_BUF_CTRL_BASE+(adr)))
-+
-+#define SCP_MCR 0x00
-+#define SCP_CDR 0x04
-+#define SCP_CSR 0x08
-+#define SCP_CPR 0x0C
-+#define SCP_CCR 0x10
-+#define SCP_IRR 0x14
-+#define SCP_IRM 0x14
-+#define SCP_IMR 0x18
-+#define SCP_ISR 0x1C
-+#define SCP_GPCR 0x20
-+#define SCP_GPWR 0x24
-+#define SCP_GPRR 0x28
-+#define SCP_REG_MCR SCP_REG(SCP_MCR)
-+#define SCP_REG_CDR SCP_REG(SCP_CDR)
-+#define SCP_REG_CSR SCP_REG(SCP_CSR)
-+#define SCP_REG_CPR SCP_REG(SCP_CPR)
-+#define SCP_REG_CCR SCP_REG(SCP_CCR)
-+#define SCP_REG_IRR SCP_REG(SCP_IRR)
-+#define SCP_REG_IRM SCP_REG(SCP_IRM)
-+#define SCP_REG_IMR SCP_REG(SCP_IMR)
-+#define SCP_REG_ISR SCP_REG(SCP_ISR)
-+#define SCP_REG_GPCR SCP_REG(SCP_GPCR)
-+#define SCP_REG_GPWR SCP_REG(SCP_GPWR)
-+#define SCP_REG_GPRR SCP_REG(SCP_GPRR)
-+
-+#define SCP_GPCR_PA22 ( 1 << 12 )
-+#define SCP_GPCR_PA21 ( 1 << 11 )
-+#define SCP_GPCR_PA20 ( 1 << 10 )
-+#define SCP_GPCR_PA19 ( 1 << 9 )
-+#define SCP_GPCR_PA18 ( 1 << 8 )
-+#define SCP_GPCR_PA17 ( 1 << 7 )
-+#define SCP_GPCR_PA16 ( 1 << 6 )
-+#define SCP_GPCR_PA15 ( 1 << 5 )
-+#define SCP_GPCR_PA14 ( 1 << 4 )
-+#define SCP_GPCR_PA13 ( 1 << 3 )
-+#define SCP_GPCR_PA12 ( 1 << 2 )
-+#define SCP_GPCR_PA11 ( 1 << 1 )
-+
-+/*
-+ * SCOOP2 internal GPIOs
-+ */
-+#define SCP_PXA_VCORE1 SCP_GPCR_PA11
-+#define SCP_TC6393_REST_IN SCP_GPCR_PA12
-+#define SCP_IR_POWERDWN SCP_GPCR_PA13
-+#define SCP_SD_WP SCP_GPCR_PA14
-+#define SCP_PWR_ON SCP_GPCR_PA15
-+#define SCP_AUD_PWR_ON SCP_GPCR_PA16
-+#define SCP_BT_RESET SCP_GPCR_PA17
-+#define SCP_BT_PWR_EN SCP_GPCR_PA18
-+#define SCP_AC_IN_OL SCP_GPCR_PA19
-+
-+/* GPIO Direction 1 : outpu mode / 0:input mode */
-+#define SCP_IO_DIR ( SCP_PXA_VCORE1 | SCP_TC6393_REST_IN | \
-+ SCP_IR_POWERDWN | SCP_PWR_ON | SCP_AUD_PWR_ON |\
-+ SCP_BT_RESET | SCP_BT_PWR_EN )
-+/* GPIO out put level when init 1: Hi */
-+#define SCP_IO_OUT ( SCP_TC6393_REST_IN )
-+//#define GPIO_CO 16
-+
-+/*
-+ * SCOOP2 for jacket I/O mappings
-+ *
-+ * We have the following mapping:
-+ * phys virt
-+ * 14800000 f2200000
-+ */
-+
-+#define CF2_BUF_CTRL_BASE 0xF2200040
-+#define SCP_JC_REG(adr) (*(volatile unsigned short*)(CF2_BUF_CTRL_BASE+(adr)))
-+
-+#define SCP_JC_REG_MCR SCP_JC_REG(SCP_MCR)
-+#define SCP_JC_REG_CDR SCP_JC_REG(SCP_CDR)
-+#define SCP_JC_REG_CSR SCP_JC_REG(SCP_CSR)
-+#define SCP_JC_REG_CPR SCP_JC_REG(SCP_CPR)
-+#define SCP_JC_REG_CCR SCP_JC_REG(SCP_CCR)
-+#define SCP_JC_REG_IRR SCP_JC_REG(SCP_IRR)
-+#define SCP_JC_REG_IRM SCP_JC_REG(SCP_IRM)
-+#define SCP_JC_REG_IMR SCP_JC_REG(SCP_IMR)
-+#define SCP_JC_REG_ISR SCP_JC_REG(SCP_ISR)
-+#define SCP_JC_REG_GPCR SCP_JC_REG(SCP_GPCR)
-+#define SCP_JC_REG_GPWR SCP_JC_REG(SCP_GPWR)
-+#define SCP_JC_REG_GPRR SCP_JC_REG(SCP_GPRR)
-+
-+/*
-+ * SCOOP2 jacket GPIOs
-+ */
-+#define SCP_JC_BT_LED SCP_GPCR_PA11
-+#define SCP_JC_NOTE_LED SCP_GPCR_PA12
-+#define SCP_JC_CHRG_ERR_LED SCP_GPCR_PA13
-+#define SCP_JC_USB_PULLUP SCP_GPCR_PA14
-+#define SCP_JC_TC6393_SUSPEND SCP_GPCR_PA15
-+#define SCP_JC_TC3693_L3V_ON SCP_GPCR_PA16
-+#define SCP_JC_WLAN_DETECT SCP_GPCR_PA17
-+#define SCP_JC_WLAN_LED SCP_GPCR_PA18
-+#define SCP_JC_CARD_LIMIT_SEL SCP_GPCR_PA19
-+
-+/* GPIO Direction 1 : outpu mode / 0:input mode */
-+#define SCP_JC_IO_DIR ( SCP_JC_BT_LED | SCP_JC_NOTE_LED | \
-+ SCP_JC_CHRG_ERR_LED | SCP_JC_USB_PULLUP | \
-+ SCP_JC_TC6393_SUSPEND | SCP_JC_TC3693_L3V_ON | \
-+ SCP_JC_WLAN_LED | SCP_JC_CARD_LIMIT_SEL )
-+/* GPIO out put level when init 1: Hi */
-+//#define SCP_JC_IO_OUT ( SCP_JC_TC6393_SUSPEND | SCP_JC_TC3693_L3V_ON )
-+#define SCP_JC_IO_OUT ( 0 )
-+
-+/*
-+ * NSSP
-+ */
-+#define NSSCR0 __REG(0x41400000)
-+#define NSSCR1 __REG(0x41400008)
-+#define NSSSR __REG(0x4140000C)
-+#define NSSITR __REG(0x41400010)
-+#define NSSDRTO __REG(0x41400028)
-+
-+/*
-+ * Timing Generator
-+ */
-+#define TG_PNLCTL 0x00
-+#define TG_TPOSCTL 0x01
-+#define TG_DUTYCTL 0x02
-+#define TG_GPOSR 0x03
-+#define TG_GPODR1 0x04
-+#define TG_GPODR2 0x05
-+#define TG_PINICTL 0x06
-+#define TG_HPOSCTL 0x07
-+
-+#if 0
-+/*
-+ * Flash Memory mappings
-+ *
-+ * We have the following mapping:
-+ * phys virt
-+ * boot ROM 00000000 ef000000
-+ * NAND Flash 0C000000 f2100000
-+ */
-+#define NAND_FLASH_REG_BASE 0xf2100000
-+#define CPLD_REG(ofst) (*(volatile unsigned char*)(NAND_FLASH_REG_BASE+(ofst)))
-+
-+/* register offset */
-+#define ECCLPLB 0x00 /* line parity 7 - 0 bit */
-+#define ECCLPUB 0x04 /* line parity 15 - 8 bit */
-+#define ECCCP 0x08 /* column parity 5 - 0 bit */
-+#define ECCCNTR 0x0C /* ECC byte counter */
-+#define ECCCLRR 0x10 /* cleare ECC */
-+#define FLASHIO 0x14 /* Flash I/O */
-+#define FLASHCTL 0x18 /* Flash Control */
-+
-+/* Flash control bit */
-+#define FLRYBY (1 << 5)
-+#define FLCE1 (1 << 4)
-+#define FLWP (1 << 3)
-+#define FLALE (1 << 2)
-+#define FLCLE (1 << 1)
-+#define FLCE0 (1 << 0)
-+#endif
-+
-+
-+/*
-+ * LED
-+ */
-+#define SCP_LED_BLUE SCP_GPCR_PA11
-+#define SCP_LED_GREEN SCP_GPCR_PA12
-+#define SCP_LED_ORANGE SCP_GPCR_PA13
-+#define SCP_LED_WLAN SCP_GPCR_PA18
-+
-+
-+/*
-+ * PXA GPIOs
-+ */
-+#define GPIO_POWERON (0)
-+#define GPIO_RESET (1)
-+#define GPIO_AC_IN (2)
-+#define GPIO_RECORD_BTN (3)
-+#define GPIO_SYNC (4) /* Cradle SYNC Button */
-+#define GPIO_USB_IN (5)
-+//#define GPIO_nSD_CLK (6)
-+#define GPIO_JACKET_DETECT (7)
-+#define GPIO_nSD_DETECT (9)
-+#define GPIO_nSD_INT (10)
-+#define GPIO_TC6393_CLK (11)
-+#define GPIO_BAT1_CRG (12)
-+#define GPIO_CF_CD (13)
-+#define GPIO_BAT0_CRG (14)
-+#define GPIO_TC6393_INT (15)
-+#define GPIO_BAT0_LOW (17)
-+#define GPIO_TC6393_RDY (18)
-+#define GPIO_ON_RESET (19)
-+#define GPIO_EAR_IN (20)
-+#define GPIO_CF_IRQ (21) /* CF slot0 Ready */
-+#define GPIO_ON_KEY (22)
-+#define GPIO_VGA_LINE (27)
-+#define GPIO_TP_INT (32) /* Touch Panel pen down interrupt */
-+#define GPIO_JC_CF_IRQ (36) /* CF slot1 Ready */
-+#define GPIO_BAT_LOCKED (38) /* Battery locked */
-+#define GPIO_TG_SPI_SCLK (81)
-+#define GPIO_TG_SPI_CS (82)
-+#define GPIO_TG_SPI_MOSI (83)
-+#define GPIO_BAT1_LOW (84)
-+
-+#define GPIO_HP_IN GPIO_EAR_IN
-+
-+#define GPIO_MAIN_BAT_LOW GPIO_BAT0_LOW
-+
-+#define KEY_STROBE_NUM (11)
-+#define KEY_SENSE_NUM (7)
-+#define GPIO_HIGH_STROBE_BIT (0xfc000000)
-+#define GPIO_LOW_STROBE_BIT (0x0000001f)
-+#define GPIO_ALL_SENSE_BIT (0x00000fe0)
-+#define GPIO_ALL_SENSE_RSHIFT (5)
-+#define GPIO_STROBE_BIT(a) GPIO_bit(58+(a))
-+#define GPIO_SENSE_BIT(a) GPIO_bit(69+(a))
-+#define GAFR_HIGH_STROBE_BIT (0xfff00000)
-+#define GAFR_LOW_STROBE_BIT (0x000003ff)
-+#define GAFR_ALL_SENSE_BIT (0x00fffc00)
-+#define GPIO_KEY_SENSE(a) (69+(a))
-+
-+
-+/*
-+ * Interrupts
-+ */
-+#define IRQ_GPIO_WAKEUP IRQ_GPIO(GPIO_WAKEUP)
-+#define IRQ_GPIO_AC_IN IRQ_GPIO(GPIO_AC_IN)
-+#define IRQ_GPIO_RECORD_BTN IRQ_GPIO(GPIO_RECORD_BTN)
-+#define IRQ_GPIO_SYNC IRQ_GPIO(GPIO_SYNC)
-+#define IRQ_GPIO_USB_IN IRQ_GPIO(GPIO_USB_IN)
-+#define IRQ_GPIO_JACKET_DETECT IRQ_GPIO(GPIO_JACKET_DETECT)
-+#define IRQ_GPIO_nSD_INT IRQ_GPIO(GPIO_nSD_INT)
-+#define IRQ_GPIO_nSD_DETECT IRQ_GPIO(GPIO_nSD_DETECT)
-+#define IRQ_GPIO_BAT1_CRG IRQ_GPIO(GPIO_BAT1_CRG)
-+#define IRQ_GPIO_CF_CD IRQ_GPIO(GPIO_CF_CD)
-+#define IRQ_GPIO_BAT0_CRG IRQ_GPIO(GPIO_BAT0_CRG)
-+#define IRQ_GPIO_TC6393_INT IRQ_GPIO(GPIO_TC6393_INT)
-+#define IRQ_GPIO_BAT0_LOW IRQ_GPIO(GPIO_BAT0_LOW)
-+#define IRQ_GPIO_EAR_IN IRQ_GPIO(GPIO_EAR_IN)
-+#define IRQ_GPIO_CF_IRQ IRQ_GPIO(GPIO_CF_IRQ)
-+#define IRQ_GPIO_ON_KEY IRQ_GPIO(GPIO_ON_KEY)
-+#define IRQ_GPIO_VGA_LINE IRQ_GPIO(GPIO_VGA_LINE)
-+#define IRQ_GPIO_TP_INT IRQ_GPIO(GPIO_TP_INT)
-+#define IRQ_GPIO_JC_CF_IRQ IRQ_GPIO(GPIO_JC_CF_IRQ)
-+#define IRQ_GPIO_BAT_LOCKED IRQ_GPIO(GPIO_BAT_LOCKED)
-+#define IRQ_GPIO_BAT1_LOW IRQ_GPIO(GPIO_BAT1_LOW)
-+#define IRQ_GPIO_KEY_SENSE(a) IRQ_GPIO(69+(a))
-+
-+#define IRQ_GPIO_MAIN_BAT_LOW IRQ_GPIO(GPIO_MAIN_BAT_LOW)
-+
-+// CS
-+#define CS_MAX1111 1
-+#define CS_ADS7846 2
-+#define CS_LZ9JG18 3
-+
-+#define LOGICAL_WAKEUP_SRC
-+
-+#endif /* _ASM_ARCH_TOSA_H_ */
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/tosa_ac97_codec.h linux/include/asm-arm/arch-pxa/tosa_ac97_codec.h
---- linux_c860_org/include/asm-arm/arch-pxa/tosa_ac97_codec.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/tosa_ac97_codec.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,32 @@
-+/*
-+ * linux/include/asm-arm/arch-pxa/tosa_ac97_codec.h
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ */
-+#ifndef _TOSA_AC97_CODEC_H_
-+#define _TOSA_AC97_CODEC_H_
-+
-+//#define USE_AC97_INTERRUPT
-+
-+extern int pxa_ac97_get(struct ac97_codec **, unsigned char *);
-+extern void pxa_ac97_put(unsigned char *);
-+extern unsigned int ac97_set_dac_rate(struct ac97_codec *, unsigned int);
-+extern unsigned int ac97_set_adc_rate(struct ac97_codec *, unsigned int);
-+
-+extern struct ac97_codec *codec;
-+#define ac97_read(r) codec->codec_read(codec, r)
-+#define ac97_write(r, v) codec->codec_write(codec, r, v);
-+#define ac97_bit_clear(r, v) codec->codec_bit_clear(codec, r, v)
-+#define ac97_bit_set(r, v) codec->codec_bit_set(codec, r, v)
-+
-+/* Function1 */
-+#define AC97_JIEN (1 << 12)
-+#define AC97_FRC (1 << 11)
-+/* Function2 */
-+#define AC97_AMUTE (1 << 15) //DAC Auto-Mute Enable(read-only)
-+#define AC97_AMEN (1 << 7) //DAC Auto-Mute Enable
-+
-+#endif /* _TOSA_AC97_CODEC_H_ */
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/tosa_wm9712.h linux/include/asm-arm/arch-pxa/tosa_wm9712.h
---- linux_c860_org/include/asm-arm/arch-pxa/tosa_wm9712.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/tosa_wm9712.h 2004-06-10 21:13:20.000000000 +0900
-@@ -0,0 +1,204 @@
-+/*
-+ * linux/drivers/sound/tosa_wm9712.h
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * Sound Driver for WM9712 codec device header file
-+ *
-+ * Base on:
-+ * linux/drivers/sound/poodle_wm8731.h
-+ *
-+ * Copyright (C) 2002 SHARP
-+ *
-+ *
-+ * 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.
-+ *
-+ * Change Log
-+ *
-+ */
-+#ifndef _WM9712_H_
-+#define _WM9712_H_
-+
-+#define TRUE 1
-+#define FALSE 0
-+
-+// Line input volume ctrl registers
-+#define LINEIN_MUTE_H (1 << 15) //Headphone
-+#define LINEIN_MUTE_S (1 << 14) //Speaker
-+#define LINEIN_MUTE_P (1 << 13) //Phone
-+#define LINEIN_MUTE_ALL ( LINEIN_MUTE_H | \
-+ LINEIN_MUTE_S | \
-+ LINEIN_MUTE_P )
-+
-+// Headphone volume ctrl
-+#define HP_MUTE (1 << 15)
-+#define HP_ZC_ENABLE (1 << 7)
-+
-+// Speaker volume ctrl
-+#define SP_MUTE (1 << 15)
-+#define SP_SRC (1 << 8)
-+#define SP_ZC_ENABLE (1 << 7)
-+#define SP_INV (1 << 6)
-+
-+// Initial value
-+#define INIT_HP_VOL (0) // Initial Volume 0dB
-+#define INIT_SP_VOL (0) // Initial Volume 0dB
-+#define INIT_LINE_VOL (8) // Initial Volume 0dB
-+#define INIT_DAC_VOL (8) // Initial Volume 0dB
-+#define MAX_HP_VOL (63)
-+#define MIN_HP_VOL (0)
-+#define MAX_SP_VOL (63)
-+#define MIN_SP_VOL (0)
-+#define MAX_LINE_VOL (31)
-+#define MIN_LINE_VOL (0)
-+#define MAX_DAC_VOL (31)
-+#define MIN_DAC_VOL (0)
-+
-+//DAC Volume control
-+#define DAC_MUTE_H (1 << 15) //Headphone
-+#define DAC_MUTE_S (1 << 14) //Speaker
-+#define DAC_MUTE_P (1 << 13) //Phone
-+#define DAC_MUTE_ALL ( DAC_MUTE_H | \
-+ DAC_MUTE_S | \
-+ DAC_MUTE_P )
-+
-+// Analog Audio path ctrl register (0000100)
-+#define SIDETONE_ENABLE (1<<5)
-+#define SIDETONE_DISABLE ( 0 )
-+#define ST_ATTN_6dB ( (0) << 6 )
-+#define ST_ATTN_9dB ( (1) << 6 )
-+#define ST_ATTN_12dB ( (2) << 6 )
-+#define ST_ATTN_15dB ( (3) << 6 )
-+#define DAC_OFF ( 0 )
-+#define DAC_SELECT ( 1 << 4 )
-+#define BYPASS_ENABLE ( 1 << 3 )
-+#define BYPASS_DISABLE ( 0 )
-+#define INPUT_MIC ( 1 << 2 )
-+#define INPUT_LINE ( 0 << 2 )
-+#define MIC_MUTE ( (1 << 13) | (1 << 14) )
-+#define REC_SELECT_MASK ( (1 << 10) | (1 << 9) | (1 << 8) | \
-+ (1 << 2) | (1 << 1) | (1 << 0) )
-+#define REC_SELECT_LINEIN ( 4 )
-+#define MIC_BOOST ( 1 << 7 )
-+
-+// Digital Audio path ctrl register (0000101)
-+#define DPC_DAC_MUTE_ON ( 1U << 3 )
-+#define DPC_DAC_MUTE_OFF ( 0U )
-+#define DPC_DAC_MUTE_MASK (~ ( 1U << 3 ) )
-+#define DEEMPHASIS_MODE(x) ( (( x ) & 3U ) << 1 )
-+#define DPC_DEEMPHASIS_MASK (~ ( 3U << 1 ) )
-+#define DPC_ADC_HPF_ENABLE ( 1U )
-+#define DPC_ADC_HPF_DISABLE ( 0U )
-+#define DPC_INIT ( 0U )
-+
-+// Power Consumption
-+#define NUM_OF_WM9712_DEV ( 4 )
-+#define WM9712_DEV_TS ( 0 )
-+#define WM9712_DEV_AUDIO ( 1 )
-+#define WM9712_DEV_AUDIOIN ( 2 )
-+#define WM9712_DEV_TMP ( 3 )
-+
-+#define WM9712_PWR_OFF ( 0 )
-+#define WM9712_PWR_REC ( 1 )
-+#define WM9712_PWR_PLAY ( 2 )
-+#define WM9712_PWR_REC_HP ( 3 )
-+#define WM9712_PWR_PLAY_HP ( 4 )
-+#define WM9712_PWR_REC_MIC ( 5 )
-+#define WM9712_PWR_PLAY_MIC ( 6 )
-+#define WM9712_PWR_TP_WAIT ( 7 )
-+#define WM9712_PWR_TP_CONV ( 8 )
-+#define WM9712_PWR_ENMICBIAS ( 9 )
-+#define WM9712_PWR_FULL ( 10 )
-+
-+extern void wm9712_power_mode(int, int);
-+#define wm9712_power_mode_ts(m) wm9712_power_mode(WM9712_DEV_TS, m)
-+#define wm9712_power_mode_audio(m) wm9712_power_mode(WM9712_DEV_AUDIO, m)
-+#define wm9712_power_mode_audioin(m) wm9712_power_mode(WM9712_DEV_AUDIOIN, m)
-+#define wm9712_power_mode_tmp(m) wm9712_power_mode(WM9712_DEV_TMP, m)
-+#ifdef CONFIG_PM
-+extern void lock_FCS_AC97(int, int);
-+#define lock_FCS_AC97_ts(m) lock_FCS_AC97(WM9712_DEV_TS, m)
-+#define lock_FCS_AC97_audio(m) lock_FCS_AC97(WM9712_DEV_AUDIO, m)
-+#endif /* CONFIG_PM */
-+
-+// Digital Audio Interface Format register (0000111)
-+#define SLAVE ( 0 )
-+#define MASTER ( 1U << 6 )
-+#define I2S_MODE ( 2U )
-+#define LEFT_JUSTIFIED ( 1U )
-+#define RIGHT_JUSTIFIED ( 0U )
-+#define IWL_16BIT ( 0 )
-+#define IWL_20BIT ( 1U << 2 )
-+#define IWL_24BIT ( 2U << 2 )
-+#define IWL_32BIT ( 3U << 2 )
-+#define LRSWAP_DISABLE ( 0U )
-+#define LRSWAP_ENABLE ( 1U << 5 )
-+#define LRP_RIGHT_HIGH ( 0U )
-+#define LRP_RIGHT_LOW ( 1U )
-+
-+// Sampling ctrl register defines (0001000)
-+#define SRC_CLKOUT_DIV ( 1 << 7 )
-+#define SRC_CLKIN_DIV ( 1 << 6 )
-+#define SRC_BOTH_44KHZ ( 8 << 2 )
-+#define SRC_BOTH_48KHZ ( 0 << 2 )
-+#define SRC_BOTH_8KHZ ( 3 << 2 )
-+#define SRC_OSR_256FS ( 0 ) // 12.288MHz/48kHz,11.2896MHz/44.1kHz
-+#define SRC_OSR_384FS ( 1 << 1 ) // 18.432MHz/48kHz,16.9344MHz/44.1kHz
-+#define SRC_OSR_250FS ( 0 ) // 12MHz/48 kHz
-+#define SRC_OSR_272FS ( 1 << 1 ) // 12MHz/44.1kHz
-+#define SRC_USB_MODE ( 1 )
-+#define SRC_NORMAL_MODE ( 0 )
-+#define DIGITAL_IF_ACTIVE ( 1 ) // digital interface active
-+#define DIGITAL_IF_INACTIVE ( 0 )
-+
-+typedef struct {
-+ int left;
-+ int right;
-+} GAIN_SETTINGS;
-+
-+typedef struct {
-+ unsigned short mode;
-+ GAIN_SETTINGS output;
-+ GAIN_SETTINGS input;
-+ int frequency;
-+} SOUND_SETTINGS;
-+
-+// mode
-+#define SOUND_PLAY_MODE (0x0001)
-+#define SOUND_REC_MODE (0x0002)
-+#define SOUND_MODE_MASK (0x0003)
-+
-+// volume
-+enum {
-+ VOLUME_IGNORE = -2,
-+ VOLUME_MUTE = -1
-+};
-+#define MAX_VOLUME MAX_HP_VOL
-+#define MIN_VOLUME MIN_HP_VOL
-+#define MAX_INPUT_VOLUME MAX_LINE_VOL
-+#define MIN_INPUT_VOLUME MIN_LINE_VOL
-+
-+int wm9712_busy(void);
-+int wm9712_init(void);
-+void wm9712_exit(void);
-+int wm9712_open(SOUND_SETTINGS *);
-+int wm9712_close(void);
-+int wm9712_set_freq(SOUND_SETTINGS *);
-+int wm9712_set_output_volume(int, int);
-+int wm9712_set_input_gain(int, int);
-+int wm9712_set_agc(int);
-+void wm9712_suspend(void);
-+void wm9712_resume(void);
-+void wm9712_update_jack_state(void);
-+void wm9712_checkjack_sleep(void);
-+void wm9712_checkjack_wakeup(void);
-+
-+#endif /* _WM9712_H_ */
-diff -Nur linux_c860_org/include/asm-arm/arch-pxa/uncompress.h linux/include/asm-arm/arch-pxa/uncompress.h
---- linux_c860_org/include/asm-arm/arch-pxa/uncompress.h 2003-01-14 12:07:55.000000000 +0900
-+++ linux/include/asm-arm/arch-pxa/uncompress.h 2004-06-10 21:09:11.000000000 +0900
-@@ -11,6 +11,7 @@
- * Change Log
- * 31-Jul-2002 Lineo Japan, Inc.
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #define FFUART ((volatile unsigned long *)0x40100000)
-@@ -35,7 +36,7 @@
- */
- static void puts(const char *s)
- {
--#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-+#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)
- return;
- #endif
-
-diff -Nur linux_c860_org/include/asm-arm/dma.h linux/include/asm-arm/dma.h
---- linux_c860_org/include/asm-arm/dma.h 2002-08-26 14:37:53.000000000 +0900
-+++ linux/include/asm-arm/dma.h 2004-06-10 21:13:07.000000000 +0900
-@@ -5,6 +5,7 @@
-
- #include <linux/config.h>
- #include <linux/spinlock.h>
-+#include <linux/sched.h>
- #include <asm/system.h>
- #include <asm/memory.h>
- #include <asm/scatterlist.h>
-diff -Nur linux_c860_org/include/asm-arm/hardirq.h linux/include/asm-arm/hardirq.h
---- linux_c860_org/include/asm-arm/hardirq.h 2002-08-26 14:37:53.000000000 +0900
-+++ linux/include/asm-arm/hardirq.h 2004-06-10 21:12:36.000000000 +0900
-@@ -34,6 +34,7 @@
- #define irq_exit(cpu,irq) (local_irq_count(cpu)--)
-
- #define synchronize_irq() do { } while (0)
-+#define release_irqlock(cpu) do { } while (0)
-
- #else
- #error SMP not supported
-diff -Nur linux_c860_org/include/asm-arm/pgalloc.h linux/include/asm-arm/pgalloc.h
---- linux_c860_org/include/asm-arm/pgalloc.h 2003-06-18 16:12:27.000000000 +0900
-+++ linux/include/asm-arm/pgalloc.h 2004-06-10 21:12:37.000000000 +0900
-@@ -60,40 +60,48 @@
- {
- unsigned long *ret;
-
-+ preempt_disable();
- if ((ret = pgd_quicklist) != NULL) {
- pgd_quicklist = (unsigned long *)__pgd_next(ret);
- ret[1] = ret[2];
- clean_dcache_entry(ret + 1);
- pgtable_cache_size--;
- }
-+ preempt_enable();
- return (pgd_t *)ret;
- }
-
- static inline void free_pgd_fast(pgd_t *pgd)
- {
-+ preempt_disable();
- __pgd_next(pgd) = (unsigned long) pgd_quicklist;
- pgd_quicklist = (unsigned long *) pgd;
- pgtable_cache_size++;
-+ preempt_enable();
- }
-
- static inline pte_t *pte_alloc_one_fast(struct mm_struct *mm, unsigned long address)
- {
- unsigned long *ret;
-
-+ preempt_disable();
- if((ret = pte_quicklist) != NULL) {
- pte_quicklist = (unsigned long *)__pte_next(ret);
- ret[0] = 0;
- clean_dcache_entry(ret);
- pgtable_cache_size--;
- }
-+ preempt_enable();
- return (pte_t *)ret;
- }
-
- static inline void free_pte_fast(pte_t *pte)
- {
-+ preempt_disable();
- __pte_next(pte) = (unsigned long) pte_quicklist;
- pte_quicklist = (unsigned long *) pte;
- pgtable_cache_size++;
-+ preempt_enable();
- }
-
- #else /* CONFIG_NO_PGT_CACHE */
-diff -Nur linux_c860_org/include/asm-arm/processor.h linux/include/asm-arm/processor.h
---- linux_c860_org/include/asm-arm/processor.h 2002-08-26 14:43:40.000000000 +0900
-+++ linux/include/asm-arm/processor.h 2004-06-10 21:12:37.000000000 +0900
-@@ -117,7 +117,7 @@
- /*
- * Create a new kernel thread
- */
--extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
-+extern int arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
-
- #endif
-
-diff -Nur linux_c860_org/include/asm-arm/sharp_apm.h linux/include/asm-arm/sharp_apm.h
---- linux_c860_org/include/asm-arm/sharp_apm.h 2003-03-13 14:53:18.000000000 +0900
-+++ linux/include/asm-arm/sharp_apm.h 2004-06-10 21:13:10.000000000 +0900
-@@ -9,6 +9,7 @@
- * Change Log
- * 26-Jun-2002 SHARP Add `APM_IOC_GET_BACKPACK_STATE`
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa
- */
-
- #ifndef _SHARP_APM_H
-@@ -59,6 +60,10 @@
-
- #define APM_IOC_KICK_BATTERY_CHECK _IO(APM_IOC_MAGIC, 80)
-
-+#define APM_IOC_GET_JACKET_STATE _IO(APM_IOC_MAGIC, 90) /* for tosa */
-+#define APM_IOC_BATTERY_JACKET_CHK _IO(APM_IOC_MAGIC, 91)
-+#define APM_IOC_GET_CARDSLOT_ERROR _IO(APM_IOC_MAGIC, 92)
-+
-
- #define APM_IOCGWUPSRC _IOR (APM_IOC_MAGIC, 200, int) /* 0x800441c8 */
- #define APM_IOCSWUPSRC _IOWR(APM_IOC_MAGIC, 201, int) /* 0xc00441c9 */
-@@ -90,6 +95,11 @@
- #define LOCK_FCS_AC97 0x00000080
- #define LOCK_FCS_PCMCIA 0x00000100
- #define LOCK_FCS_SOUND 0x00000200
-+#define LOCK_FCS_KEY 0x00000400
-+#define LOCK_FCS_TOUCH 0x00000800
-+#define LOCK_FCS_BATTERY 0x00001000
-+#define LOCK_FCS_AC97_SUB 0x00002000
-+#define LOCK_FCS_PCMCIA2 0x00004000
- #define LOCK_FCS_USR0 0x01000000
- #define LOCK_FCS_USR1 0x02000000
- #define LOCK_FCS_USR2 0x04000000
-@@ -113,10 +123,17 @@
- #define POWER_MODE_SOUND 0x00000200
- #define POWER_MODE_KEY 0x00000400
- #define POWER_MODE_TOUCH 0x00000800
-+#define POWER_MODE_BATTERY 0x00001000
-+#define POWER_MODE_AC97_SUB 0x00002000
-+#define POWER_MODE_PCMCIA2 0x00004000
-
- #define POWER_MODE_CAUTION_MASK (POWER_MODE_MMC|POWER_MODE_STUART|POWER_MODE_UDC|POWER_MODE_PCMCIA)
-
-+#if defined(CONFIG_ARCH_PXA_TOSA)
-+#define LOCK_FCS_POWER_MODE_CORRESPOND_MASK (POWER_MODE_FFUART|POWER_MODE_STUART|POWER_MODE_BTUART|POWER_MODE_IRDA|POWER_MODE_SSP|POWER_MODE_UDC|POWER_MODE_AC97|POWER_MODE_PCMCIA|POWER_MODE_SOUND|POWER_MODE_KEY|POWER_MODE_TOUCH|POWER_MODE_BATTERY|POWER_MODE_AC97_SUB|POWER_MODE_PCMCIA2)
-+#else
- #define LOCK_FCS_POWER_MODE_CORRESPOND_MASK (POWER_MODE_FFUART|POWER_MODE_STUART|POWER_MODE_BTUART|POWER_MODE_IRDA|POWER_MODE_SSP|POWER_MODE_UDC|POWER_MODE_AC97|POWER_MODE_PCMCIA|POWER_MODE_SOUND)
-+#endif
-
- int change_power_mode(unsigned long, int);
- int lock_FCS(unsigned long, int);
-diff -Nur linux_c860_org/include/asm-arm/sharp_char.h linux/include/asm-arm/sharp_char.h
---- linux_c860_org/include/asm-arm/sharp_char.h 2003-01-14 12:07:55.000000000 +0900
-+++ linux/include/asm-arm/sharp_char.h 2004-06-10 21:09:11.000000000 +0900
-@@ -17,6 +17,7 @@
- *
- * Change Log
- * 12-Dec-2002 Sharp Corporation for Poodle and Corgi
-+ * 1-Nov-2003 Sharp Corporation for Tosa
- */
-
- #ifndef __ASM_SHARP_CHAR_H_INCLUDED
-@@ -65,7 +66,7 @@
- int status; /* set new led status if you call SHARP_LED_SETSTATUS */
- } sharp_led_status;
-
--#define SHARP_LED_WHICH_MAX 15 /* last number of LED */
-+#define SHARP_LED_WHICH_MAX 17 /* last number of LED */
-
- /* parameters for 'which' member */
- #define SHARP_LED_PDA 0 /* PDA status */
-@@ -84,6 +85,8 @@
- #define SHARP_LED_COLLIE_1 13 /* 1st pri. mail LED control */
- #define SHARP_LED_COMM 14 /* communication status */
- #define SHARP_LED_BROWSER 15 /* WWW browser status */
-+#define SHARP_LED_BLUETOOTH 16 /* Bluetooth */
-+#define SHARP_LED_WLAN 17 /* Wireless LAN */
-
- /* parameters for 'status' member */
- #define LED_PDA_RUNNING 0 /* for SHARP_LED_RUN */
-@@ -158,6 +161,14 @@
- #define LED_BROWSER_ONLINE 1 /* for SHARP_LED_BROWSER */
- #define LED_BROWSER_ERROR 2 /* for SHARP_LED_BROWSER */
-
-+#define LED_BLUETOOTH_OFFLINE 0 /* for SHARP_LED_BLUETOOTH */
-+#define LED_BLUETOOTH_OUTOFRANGE 1 /* for SHARP_LED_BLUETOOTH */
-+#define LED_BLUETOOTH_STANBY 2 /* for SHARP_LED_BLUETOOTH */
-+
-+#define LED_WLAN_OFFLINE 0 /* for SHARP_LED_WLAN */
-+#define LED_WLAN_OUTOFRANGE 1 /* for SHARP_LED_WLAN */
-+#define LED_WLAN_BLINK 2 /* for SHARP_LED_WLAN */
-+
-
- /* --- for SHARP_BUZZER device --- */
- #define SHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
-@@ -257,6 +268,9 @@
- #define IRIS_KBDCTL_ENABLEKEYBOARD (SHARP_KBDCTL_IOCTL_START+16)
- #define IRIS_KBDCTL_DISABLEKEYBOARD (SHARP_KBDCTL_IOCTL_START+17)
- #define SHARP_KBDCTL_SENDKEY (SHARP_KBDCTL_IOCTL_START+18)
-+#define SHARP_KBDCTL_SETMODIFSTAT (SHARP_KBDCTL_IOCTL_START+20)
-+#define SHARP_KBDCTL_SETSWKEY (SHARP_KBDCTL_IOCTL_START+21)
-+#define SHARP_KBDCTL_GETSWKEY (SHARP_KBDCTL_IOCTL_START+22)
-
- typedef struct sharp_kbdctl_modifstat {
- int which;
-@@ -274,6 +288,11 @@
- int hold_slcode;
- } sharp_kbdctl_holdcustom;
-
-+typedef struct _sharp_kbdctl_swkey {
-+ int key;
-+ int mode;
-+} sharp_kbdctl_swkey;
-+
- #define SHARP_EXTMODIF_2ND 0x01
- #define SHARP_EXTMODIF_CAPS 0x02
- #define SHARP_EXTMODIF_NUMLOCK 0x03
-diff -Nur linux_c860_org/include/asm-arm/sharp_tc6393.h linux/include/asm-arm/sharp_tc6393.h
---- linux_c860_org/include/asm-arm/sharp_tc6393.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/asm-arm/sharp_tc6393.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,333 @@
-+/*
-+ * linux/include/asm-arm/sharp_tc6393.h
-+ *
-+ * Copyright (C) 2003 SHARP
-+ *
-+ * 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.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * ChangeLog:
-+ * 05-Aug-2003 SHARP Corporation
-+ *
-+ */
-+
-+#ifndef _TC6393XB_H_
-+#define _TC6393XB_H_
-+
-+//TC6393XB Resource Area Map (Offset)
-+// System Configration Register Area 0x00000000 - 0x000000FF (Size 0x00000100)
-+// NAND Flash Host Controller Register Area 0x00000100 - 0x000001FF (Size 0x00000100)
-+// USB Host Controller Register Area 0x00000300 - 0x000003FF (Size 0x00000100)
-+// LCD Host Controller Register Area 0x00000500 - 0x000005FF (Size 0x00000100)
-+// NAND Flash Control Register 0x00001000 - 0x00001007 (Size 0x00000008)
-+// USB Control Register 0x00003000 - 0x000031FF (Size 0x00000200)
-+// LCD Control Register 0x00005000 - 0x000051FF (Size 0x00000200)
-+// Local Memory 0 (32KB) 0x00010000 - 0x00017FFF (Size 0x00008000)
-+// Local Memory 0 (32KB) alias 0x00018000 - 0x0001FFFF (Size 0x00008000)
-+// Local Memory 1 (1MB) 0x00100000 - 0x001FFFFF (Size 0x00100000)
-+
-+
-+#define TC6393XB_BASE (0xf1000000)
-+
-+typedef struct {
-+ volatile unsigned char reserved1[8];
-+ // Revision ID
-+ volatile unsigned char warid;
-+ volatile unsigned char reserved2[71];
-+ // Interrupt Status
-+ volatile unsigned char r_itrsts;
-+ volatile unsigned char reserved3;
-+ // Interrupt Mask
-+ volatile unsigned char r_itrmsk;
-+ volatile unsigned char reserved4;
-+ // Interrupt Routing
-+ volatile unsigned char r_itrrot;
-+ volatile unsigned char reserved5[11];
-+ // GP Enable
-+ volatile unsigned char gpioen;
-+ // GP Alternative Enable
-+ volatile unsigned char gpaioen;
-+ volatile unsigned char reserved6[2];
-+ // GPI Status 0
-+ volatile unsigned char gpists0;
-+ // GPI Status 1
-+ volatile unsigned char gpists1;
-+ // GPI Status 2
-+ volatile unsigned char gpists2;
-+ volatile unsigned char reserved7;
-+ // GPI INT Mask 0
-+ volatile unsigned char gpintmsk0;
-+ // GPI INT Mask 1
-+ volatile unsigned char gpintmsk1;
-+ // GPI INT Mask 2
-+ volatile unsigned char gpintmsk2;
-+ volatile unsigned char reserved8;
-+ // GPI Edge Detect Enable 0
-+ volatile unsigned char gpedgen0;
-+ // GPI Edge Detect Enable 1
-+ volatile unsigned char gpedgen1;
-+ // GPI Edge Detect Enable 2
-+ volatile unsigned char gpedgen2;
-+ volatile unsigned char reserved9;
-+ // GPI Level Invert 0
-+ volatile unsigned char gplvinv0;
-+ // GPI Level Invert 1
-+ volatile unsigned char gplvinv1;
-+ // GPI Level Invert 2
-+ volatile unsigned char gplvinv2;
-+ volatile unsigned char reserved10[5];
-+ // GPO Data set 0
-+ volatile unsigned char gpodt0;
-+ // GPO Data set 1
-+ volatile unsigned char gpodt1;
-+ // GPO Data set 2
-+ volatile unsigned char gpodt2;
-+ volatile unsigned char reserved11;
-+ // GPO Data OE Contorol 0
-+ volatile unsigned char gpooe0;
-+ // GPO Data OE Contorol 1
-+ volatile unsigned char gpooe1;
-+ // GPO Data OE Contorol 2
-+ volatile unsigned char gpooe2;
-+ volatile unsigned char reserved12;
-+ // GP Internal Active Register Contorol 0
-+ volatile unsigned char gpapulc0;
-+ // GP Internal Active Register Contorol 1
-+ volatile unsigned char gpapulc1;
-+ // GP Internal Active Register Contorol 2
-+ volatile unsigned char gpIapulc2;
-+ volatile unsigned char reserved13;
-+ // GP Internal Active Register Level Contorol 0
-+ volatile unsigned char gparlv0;
-+ // GP Internal Active Register Level Contorol 1
-+ volatile unsigned char gparlv1;
-+ // GP Internal Active Register Level Contorol 2
-+ volatile unsigned char gparlv2;
-+ volatile unsigned char reserved14;
-+ // GPI Buffer Contorol 0
-+ volatile unsigned char gpibfc0;
-+ // GPI Buffer Contorol 1
-+ volatile unsigned char gpibfc1;
-+ // GPI Buffer Contorol 2
-+ volatile unsigned char gpibfc2;
-+ volatile unsigned char reserved15;
-+ // GPa Internal Activ Register Contorol 0
-+ volatile unsigned char gpaapulc0;
-+ // GPa Internal Activ Register Contorol 1
-+ volatile unsigned char gpaapulc1;
-+ volatile unsigned char reserved16[2];
-+ // GPa Internal Activ Register Level Contorol 0
-+ volatile unsigned char gpaarlv0;
-+ // GPa Internal Activ Register Level Contorol 1
-+ volatile unsigned char gpaarlv1;
-+ volatile unsigned char reserved17[2];
-+ // GPa Buffer Contorol 0
-+ volatile unsigned char gpaibfc0;
-+ // GPa Buffer Contorol 1
-+ volatile unsigned char gpaibfc1;
-+ volatile unsigned char reserved18[2];
-+ // Clock Control
-+ volatile unsigned short clkctl;
-+ // PLL2 Control
-+ volatile unsigned short pll2ctl;
-+ // PLL1 Control
-+ volatile unsigned short pll1ctl;
-+ // Device Internal Avtive Register Contorol
-+ volatile unsigned char diarctl;
-+ // Device Buffer Contorol
-+ volatile unsigned char dvbctl;
-+ volatile unsigned char reserved19[62];
-+ // Function Enable
-+ volatile unsigned char funcebl;
-+ volatile unsigned char reserved20[3];
-+ // Mode Contorol 0
-+ volatile unsigned char modectl0;
-+ // Mode Contorol 1
-+ volatile unsigned char modectl1;
-+ volatile unsigned char reserved21[22];
-+ // Configuraation Control
-+ volatile unsigned char cfctl;
-+ volatile unsigned char reserved22[2];
-+ // Debug
-+ volatile unsigned char debug;
-+} TC6393XB_SysConfig;
-+
-+#define TC6393XB_SYSCONFIG_BASE ((TC6393XB_SysConfig *)TC6393XB_BASE)
-+
-+typedef struct {
-+ // Vendor ID Register
-+ volatile unsigned short spvid;
-+ // Device ID Register
-+ volatile unsigned short spdid;
-+ // Command Register
-+ volatile unsigned short spcmd;
-+ // Status Register
-+ volatile unsigned short spst;
-+ // Revision ID Register / Class Code Register
-+ volatile unsigned short sprid_spcc;
-+ volatile unsigned char reserved1[4];
-+ // Header Tyep Register
-+ volatile unsigned char spht;
-+ volatile unsigned char reserved2;
-+ // SmartMedia Controller Register Base Address Register
-+ union {
-+ volatile unsigned short spba1;
-+ volatile unsigned short spba2;
-+ } spba;
-+ volatile unsigned char reserved3[22];
-+ // CIS Pointer Register
-+ volatile unsigned short scisp;
-+ // Subsystem Vender ID Register
-+ volatile unsigned short spsvid;
-+ // Subsystem Deviece ID Register
-+ volatile unsigned short spsdid;
-+ volatile unsigned char reserved4[4];
-+ // Capability Pointer Register
-+ volatile unsigned char sid;
-+ volatile unsigned char reserved5[7];
-+ // Interrupt Ling Register
-+ volatile unsigned char spitrl;
-+ // Interrupt Pin Register
-+ volatile unsigned char spitrp;
-+ volatile unsigned char reserved6[10];
-+ // INT Enable Register
-+ volatile unsigned char spintc;
-+ // PME Enable Register
-+ volatile unsigned char sppmec;
-+ // Event Control Register
-+ volatile unsigned char sevntcnt;
-+ volatile unsigned char reserved7;
-+ // CLKRUN Control Register
-+ volatile unsigned char spcrunc;
-+ volatile unsigned char reserved8[14];
-+ // Debug Register
-+ volatile unsigned char spdbg;
-+ volatile unsigned char reserved9[4];
-+ // SmartMedia Transaction Control Register
-+ volatile unsigned char smtrcnt;
-+ // SmartMedia Monitor Register
-+ volatile unsigned char smsts;
-+ // SmartMedia Power Supply Control Register
-+ volatile unsigned char ssmpwc;
-+ // SmartMedia Detect Control Register
-+ volatile unsigned char ssmdtc;
-+ volatile unsigned char reserved10[28];
-+ // Capability ID Register
-+ volatile unsigned char svcid;
-+ // Next Item Ptr Register
-+ volatile unsigned char svniptr;
-+ // Power Management Capabilities (PMC) Register
-+ volatile unsigned short svpmc;
-+ // Power Management Control/Status (PMCSR) Register
-+ volatile unsigned short svpmcs;
-+ // PMCSR PCI to PCI Bridge Support Extensions Register
-+ volatile unsigned char svppcbs;
-+ // Data Register
-+ volatile unsigned char svdata;
-+ volatile unsigned char reserved11[24];
-+ // CIS Register SCISRx
-+ volatile unsigned char scisr[80];
-+ // ROM Data Port Register
-+ volatile unsigned short srmdp;
-+ // ROM Index Port Register
-+ volatile unsigned char srmip;
-+ // ROM Control Register
-+ volatile unsigned char srmcr;
-+ volatile unsigned char reserved12[8];
-+ // Configration Control Register
-+ volatile unsigned char sppcnf;
-+ volatile unsigned char reserved13[2];
-+ // Monitor Select Register
-+ volatile unsigned char pfadb;
-+} TC6393XB_NandConfig;
-+
-+#define TC6393XB_NANDCONFIG_BASE ((TC6393XB_NandConfig *)(TC6393XB_BASE+0x100))
-+
-+
-+typedef struct {
-+ union {
-+ volatile struct {
-+ unsigned char sdata0; // Data Register0
-+ unsigned char sdata1; // Data Register1
-+ unsigned char sdata2; // Data Register2
-+ unsigned char sdata3; // Data Register3
-+ } data8;
-+ volatile struct {
-+ unsigned short sdata0_1; // Data Register0,1
-+ unsigned short sdata2_3; // Data Register2,3
-+ } data16;
-+ volatile struct {
-+ unsigned long sdata0_3; // Data Register 0,1,2,3
-+ } data32;
-+ } sdata;
-+ // Mode Register
-+ volatile unsigned char smode;
-+ // Status Register
-+ volatile unsigned char sustus;
-+ // Interrupt Status Register
-+ volatile unsigned char sintst;
-+ // Interrupt Mask Register
-+ volatile unsigned char sintmsk;
-+} TC6393XB_NandCtrl;
-+
-+#define TC6393XB_NANDCTRL_OFFSET 0x1000
-+#define TC6393XB_NANDCTRL_BASE ((TC6393XB_NandCtrl *)(TC6393XB_BASE+TC6393XB_NANDCTRL_OFFSET))
-+
-+
-+/* SMODE Register Command List */
-+#define SMODE_READ_COMMAND 0x15 // DataRead Command_Mode
-+#define SMODE_READ_ADDRESS 0x16 // DataRead Address_Mode
-+#define SMODE_READ_DATAREAD 0x14 // DataRead Data_Mode
-+#define SMODE_WRITE_COMMAND 0x95 // DataWrite Command_Mode
-+#define SMODE_WRITE_ADDRESS 0x96 // DataWrite Address_Mode
-+#define SMODE_WRITE_DATAWRITE 0x94 // DataWrite Data_Mode
-+
-+#define SMODE_POWER_ON 0x0C // Power Supply ON to SSFDC card
-+#define SMODE_POWER_OFF 0x08 // Power Supply OFF to SSFDC card
-+
-+#define SMODE_LED_OFF 0x00 // LED OFF
-+#define SMODE_LED_ON 0x04 // LED ON
-+
-+#define SMODE_EJECT_ON 0x68 // Ejection Demand from Penguin is Advanced
-+#define SMODE_EJECT_OFF 0x08 // Ejection Demand from Penguin is Not Advanced
-+
-+#define SMODE_LOCK 0x6C // Operates By Lock_Mode. Ejection Switch is Invalid
-+#define SMODE_UNLOCK 0x0C // Operates By UnLock_Mode.Ejection Switch is Effective
-+
-+#define SMODE_HWECC_READ_ECCCALC 0x34 // HW-ECC DataRead
-+#define SMODE_HWECC_READ_RESET_ECC 0x74 // HW-ECC ResetMode
-+#define SMODE_HWECC_READ_CALC_RESULT 0x54 // HW-ECC Calculation Result Read_Mode
-+
-+#define SMODE_HWECC_WRITE_ECCCALC 0xB4 // HW-ECC DataWrite
-+#define SMODE_HWECC_WRITE_RESET_ECC 0xF4 // HW-ECC ResetMode
-+#define SMODE_HWECC_WRITE_CALC_RESULT 0xD4 // HW-ECC Calculation Result Read_Mode
-+
-+#define SMODE_CONTROLLER_ID_READ 0x40 // Controller ID Read
-+#define SMODE_STANDBY 0x00 // SSFDC card Changes Standby State
-+
-+#define SMODE_WE 0x80
-+#define SMODE_ECC1 0x40
-+#define SMODE_ECC0 0x20
-+#define SMODE_CE 0x10
-+#define SMODE_PCNT1 0x08
-+#define SMODE_PCNT0 0x04
-+#define SMODE_ALE 0x02
-+#define SMODE_CLE 0x01
-+
-+#define SMODE_SELECT (SMODE_WE|SMODE_CE|SMODE_PCNT0)
-+#define SMODE_DESELECT 0x00 //Changes Standby State
-+
-+/* SUSTUS Register */
-+#define SUSTUS_BUSY 0x80
-+
-+#endif
-diff -Nur linux_c860_org/include/asm-arm/sharp_tc6393_usb.h linux/include/asm-arm/sharp_tc6393_usb.h
---- linux_c860_org/include/asm-arm/sharp_tc6393_usb.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/asm-arm/sharp_tc6393_usb.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,22 @@
-+/*
-+ * linux/include/asm-arm/sharp_tc6393_usb.h
-+ *
-+ * Sharp PDA Driver Header File
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ */
-+
-+#ifndef _SHARP_TC6393_USB_H
-+#define _SHARP_TC6393_USB_H
-+
-+#define TC6393_OHCI_IOC_MAGIC 'U'
-+
-+#define TC6393_OHCI_IOC_PDOWN _IO(TC6393_OHCI_IOC_MAGIC, 10)
-+#define TC6393_OHCI_IOC_PON _IO(TC6393_OHCI_IOC_MAGIC, 11)
-+#define TC6393_OHCI_IOC_PCHECK _IO(TC6393_OHCI_IOC_MAGIC, 12)
-+
-+#endif /* _SHARP_TC6393_USB_H */
-diff -Nur linux_c860_org/include/asm-arm/smplock.h linux/include/asm-arm/smplock.h
---- linux_c860_org/include/asm-arm/smplock.h 2002-08-26 14:37:53.000000000 +0900
-+++ linux/include/asm-arm/smplock.h 2004-06-10 21:12:37.000000000 +0900
-@@ -3,12 +3,17 @@
- *
- * Default SMP lock implementation
- */
-+#include <linux/config.h>
- #include <linux/interrupt.h>
- #include <linux/spinlock.h>
-
- extern spinlock_t kernel_flag;
-
-+#ifdef CONFIG_PREEMPT
-+#define kernel_locked() preempt_get_count()
-+#else
- #define kernel_locked() spin_is_locked(&kernel_flag)
-+#endif
-
- /*
- * Release global kernel lock and global interrupt lock
-@@ -40,8 +45,14 @@
- */
- static inline void lock_kernel(void)
- {
-+#ifdef CONFIG_PREEMPT
-+ if (current->lock_depth == -1)
-+ spin_lock(&kernel_flag);
-+ ++current->lock_depth;
-+#else
- if (!++current->lock_depth)
- spin_lock(&kernel_flag);
-+#endif
- }
-
- static inline void unlock_kernel(void)
-diff -Nur linux_c860_org/include/asm-arm/softirq.h linux/include/asm-arm/softirq.h
---- linux_c860_org/include/asm-arm/softirq.h 2002-08-26 14:37:53.000000000 +0900
-+++ linux/include/asm-arm/softirq.h 2004-06-10 21:12:37.000000000 +0900
-@@ -5,20 +5,22 @@
- #include <asm/hardirq.h>
-
- #define __cpu_bh_enable(cpu) \
-- do { barrier(); local_bh_count(cpu)--; } while (0)
-+ do { barrier(); local_bh_count(cpu)--; preempt_enable(); } while (0)
- #define cpu_bh_disable(cpu) \
-- do { local_bh_count(cpu)++; barrier(); } while (0)
-+ do { preempt_disable(); local_bh_count(cpu)++; barrier(); } while (0)
-
- #define local_bh_disable() cpu_bh_disable(smp_processor_id())
- #define __local_bh_enable() __cpu_bh_enable(smp_processor_id())
-
- #define in_softirq() (local_bh_count(smp_processor_id()) != 0)
-
--#define local_bh_enable() \
-+#define _local_bh_enable() \
- do { \
- unsigned int *ptr = &local_bh_count(smp_processor_id()); \
- if (!--*ptr && ptr[-2]) \
- __asm__("bl%? __do_softirq": : : "lr");/* out of line */\
- } while (0)
-
-+#define local_bh_enable() do { _local_bh_enable(); preempt_enable(); } while (0)
-+
- #endif /* __ASM_SOFTIRQ_H */
-diff -Nur linux_c860_org/include/asm-cris/processor.h linux/include/asm-cris/processor.h
---- linux_c860_org/include/asm-cris/processor.h 2002-08-26 14:38:01.000000000 +0900
-+++ linux/include/asm-cris/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -81,7 +81,7 @@
- #define INIT_THREAD { \
- 0, 0, 0x20 } /* ccr = int enable, nothing else */
-
--extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-
- /* give the thread a program location
- * set user-mode (The 'U' flag (User mode flag) is CCR/DCCR bit 8)
-diff -Nur linux_c860_org/include/asm-i386/hardirq.h linux/include/asm-i386/hardirq.h
---- linux_c860_org/include/asm-i386/hardirq.h 2002-08-26 14:37:47.000000000 +0900
-+++ linux/include/asm-i386/hardirq.h 2004-06-10 21:09:11.000000000 +0900
-@@ -19,12 +19,16 @@
-
- /*
- * Are we in an interrupt context? Either doing bottom half
-- * or hardware interrupt processing?
-+ * or hardware interrupt processing? Note the preempt check,
-+ * this is both a bugfix and an optimization. If we are
-+ * preemptible, we cannot be in an interrupt.
- */
--#define in_interrupt() ({ int __cpu = smp_processor_id(); \
-- (local_irq_count(__cpu) + local_bh_count(__cpu) != 0); })
-+#define in_interrupt() (preempt_is_disabled() && \
-+ ({unsigned long __cpu = smp_processor_id(); \
-+ (local_irq_count(__cpu) + local_bh_count(__cpu) != 0); }))
-
--#define in_irq() (local_irq_count(smp_processor_id()) != 0)
-+#define in_irq() (preempt_is_disabled() && \
-+ (local_irq_count(smp_processor_id()) != 0))
-
- #ifndef CONFIG_SMP
-
-@@ -36,6 +40,8 @@
-
- #define synchronize_irq() barrier()
-
-+#define release_irqlock(cpu) do { } while (0)
-+
- #else
-
- #include <asm/atomic.h>
-diff -Nur linux_c860_org/include/asm-i386/highmem.h linux/include/asm-i386/highmem.h
---- linux_c860_org/include/asm-i386/highmem.h 2002-08-26 14:37:48.000000000 +0900
-+++ linux/include/asm-i386/highmem.h 2004-06-10 21:09:11.000000000 +0900
-@@ -88,6 +88,7 @@
- enum fixed_addresses idx;
- unsigned long vaddr;
-
-+ preempt_disable();
- if (page < highmem_start_page)
- return page_address(page);
-
-@@ -109,8 +110,10 @@
- unsigned long vaddr = (unsigned long) kvaddr;
- enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id();
-
-- if (vaddr < FIXADDR_START) // FIXME
-+ if (vaddr < FIXADDR_START) { // FIXME
-+ preempt_enable();
- return;
-+ }
-
- if (vaddr != __fix_to_virt(FIX_KMAP_BEGIN+idx))
- BUG();
-@@ -122,6 +125,8 @@
- pte_clear(kmap_pte-idx);
- __flush_tlb_one(vaddr);
- #endif
-+
-+ preempt_enable();
- }
-
- #endif /* __KERNEL__ */
-diff -Nur linux_c860_org/include/asm-i386/hw_irq.h linux/include/asm-i386/hw_irq.h
---- linux_c860_org/include/asm-i386/hw_irq.h 2002-08-26 14:37:48.000000000 +0900
-+++ linux/include/asm-i386/hw_irq.h 2004-06-10 21:09:11.000000000 +0900
-@@ -95,6 +95,18 @@
- #define __STR(x) #x
- #define STR(x) __STR(x)
-
-+#define GET_CURRENT \
-+ "movl %esp, %ebx\n\t" \
-+ "andl $-8192, %ebx\n\t"
-+
-+#ifdef CONFIG_PREEMPT
-+#define BUMP_LOCK_COUNT \
-+ GET_CURRENT \
-+ "incl 4(%ebx)\n\t"
-+#else
-+#define BUMP_LOCK_COUNT
-+#endif
-+
- #define SAVE_ALL \
- "cld\n\t" \
- "pushl %es\n\t" \
-@@ -108,15 +120,12 @@
- "pushl %ebx\n\t" \
- "movl $" STR(__KERNEL_DS) ",%edx\n\t" \
- "movl %edx,%ds\n\t" \
-- "movl %edx,%es\n\t"
-+ "movl %edx,%es\n\t" \
-+ BUMP_LOCK_COUNT
-
- #define IRQ_NAME2(nr) nr##_interrupt(void)
- #define IRQ_NAME(nr) IRQ_NAME2(IRQ##nr)
-
--#define GET_CURRENT \
-- "movl %esp, %ebx\n\t" \
-- "andl $-8192, %ebx\n\t"
--
- /*
- * SMP has a few special interrupts for IPI messages
- */
-diff -Nur linux_c860_org/include/asm-i386/i387.h linux/include/asm-i386/i387.h
---- linux_c860_org/include/asm-i386/i387.h 2002-08-26 14:37:48.000000000 +0900
-+++ linux/include/asm-i386/i387.h 2004-06-10 21:09:11.000000000 +0900
-@@ -12,6 +12,7 @@
- #define __ASM_I386_I387_H
-
- #include <linux/sched.h>
-+#include <linux/spinlock.h>
- #include <asm/processor.h>
- #include <asm/sigcontext.h>
- #include <asm/user.h>
-@@ -24,7 +25,7 @@
- extern void restore_fpu( struct task_struct *tsk );
-
- extern void kernel_fpu_begin(void);
--#define kernel_fpu_end() stts()
-+#define kernel_fpu_end() do { stts(); preempt_enable(); } while(0)
-
-
- #define unlazy_fpu( tsk ) do { \
-diff -Nur linux_c860_org/include/asm-i386/pgalloc.h linux/include/asm-i386/pgalloc.h
---- linux_c860_org/include/asm-i386/pgalloc.h 2002-08-26 14:37:48.000000000 +0900
-+++ linux/include/asm-i386/pgalloc.h 2004-06-10 21:09:11.000000000 +0900
-@@ -75,20 +75,26 @@
- {
- unsigned long *ret;
-
-+ preempt_disable();
- if ((ret = pgd_quicklist) != NULL) {
- pgd_quicklist = (unsigned long *)(*ret);
- ret[0] = 0;
- pgtable_cache_size--;
-- } else
-+ preempt_enable();
-+ } else {
-+ preempt_enable();
- ret = (unsigned long *)get_pgd_slow();
-+ }
- return (pgd_t *)ret;
- }
-
- static inline void free_pgd_fast(pgd_t *pgd)
- {
-+ preempt_disable();
- *(unsigned long *)pgd = (unsigned long) pgd_quicklist;
- pgd_quicklist = (unsigned long *) pgd;
- pgtable_cache_size++;
-+ preempt_enable();
- }
-
- static inline void free_pgd_slow(pgd_t *pgd)
-@@ -119,19 +125,23 @@
- {
- unsigned long *ret;
-
-+ preempt_disable();
- if ((ret = (unsigned long *)pte_quicklist) != NULL) {
- pte_quicklist = (unsigned long *)(*ret);
- ret[0] = ret[1];
- pgtable_cache_size--;
- }
-+ preempt_enable();
- return (pte_t *)ret;
- }
-
- static inline void pte_free_fast(pte_t *pte)
- {
-+ preempt_disable();
- *(unsigned long *)pte = (unsigned long) pte_quicklist;
- pte_quicklist = (unsigned long *) pte;
- pgtable_cache_size++;
-+ preempt_enable();
- }
-
- static __inline__ void pte_free_slow(pte_t *pte)
-diff -Nur linux_c860_org/include/asm-i386/processor.h linux/include/asm-i386/processor.h
---- linux_c860_org/include/asm-i386/processor.h 2002-08-26 14:37:47.000000000 +0900
-+++ linux/include/asm-i386/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -429,7 +429,7 @@
- /*
- * create a kernel thread without removing it from tasklists
- */
--extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-
- /* Copy and release all segment info associated with a VM */
- extern void copy_segments(struct task_struct *p, struct mm_struct * mm);
-diff -Nur linux_c860_org/include/asm-i386/smplock.h linux/include/asm-i386/smplock.h
---- linux_c860_org/include/asm-i386/smplock.h 2002-08-26 14:37:48.000000000 +0900
-+++ linux/include/asm-i386/smplock.h 2004-06-10 21:09:11.000000000 +0900
-@@ -10,7 +10,15 @@
-
- extern spinlock_t kernel_flag;
-
-+#ifdef CONFIG_SMP
- #define kernel_locked() spin_is_locked(&kernel_flag)
-+#else
-+#ifdef CONFIG_PREEMPT
-+#define kernel_locked() preempt_get_count()
-+#else
-+#define kernel_locked() 1
-+#endif
-+#endif
-
- /*
- * Release global kernel lock and global interrupt lock
-@@ -42,6 +50,11 @@
- */
- static __inline__ void lock_kernel(void)
- {
-+#ifdef CONFIG_PREEMPT
-+ if (current->lock_depth == -1)
-+ spin_lock(&kernel_flag);
-+ ++current->lock_depth;
-+#else
- #if 1
- if (!++current->lock_depth)
- spin_lock(&kernel_flag);
-@@ -54,6 +67,7 @@
- :"=m" (__dummy_lock(&kernel_flag)),
- "=m" (current->lock_depth));
- #endif
-+#endif
- }
-
- static __inline__ void unlock_kernel(void)
-diff -Nur linux_c860_org/include/asm-i386/softirq.h linux/include/asm-i386/softirq.h
---- linux_c860_org/include/asm-i386/softirq.h 2002-08-26 14:37:47.000000000 +0900
-+++ linux/include/asm-i386/softirq.h 2004-06-10 21:09:11.000000000 +0900
-@@ -6,9 +6,9 @@
- #include <linux/stringify.h>
-
- #define __cpu_bh_enable(cpu) \
-- do { barrier(); local_bh_count(cpu)--; } while (0)
-+ do { barrier(); local_bh_count(cpu)--; preempt_enable(); } while (0)
- #define cpu_bh_disable(cpu) \
-- do { local_bh_count(cpu)++; barrier(); } while (0)
-+ do { preempt_disable(); local_bh_count(cpu)++; barrier(); } while (0)
-
- #define local_bh_disable() cpu_bh_disable(smp_processor_id())
- #define __local_bh_enable() __cpu_bh_enable(smp_processor_id())
-@@ -23,7 +23,7 @@
- * If you change the offsets in irq_stat then you have to
- * update this code as well.
- */
--#define local_bh_enable() \
-+#define _local_bh_enable() \
- do { \
- unsigned int *ptr = &local_bh_count(smp_processor_id()); \
- \
-@@ -49,4 +49,6 @@
- /* no registers clobbered */ ); \
- } while (0)
-
-+#define local_bh_enable() do { _local_bh_enable(); preempt_enable(); } while (0)
-+
- #endif /* __ASM_SOFTIRQ_H */
-diff -Nur linux_c860_org/include/asm-i386/spinlock.h linux/include/asm-i386/spinlock.h
---- linux_c860_org/include/asm-i386/spinlock.h 2002-08-26 14:37:47.000000000 +0900
-+++ linux/include/asm-i386/spinlock.h 2004-06-10 21:09:11.000000000 +0900
-@@ -81,7 +81,7 @@
- :"=m" (lock->lock) : : "memory"
-
-
--static inline void spin_unlock(spinlock_t *lock)
-+static inline void _raw_spin_unlock(spinlock_t *lock)
- {
- #if SPINLOCK_DEBUG
- if (lock->magic != SPINLOCK_MAGIC)
-@@ -101,7 +101,7 @@
- :"=q" (oldval), "=m" (lock->lock) \
- :"0" (oldval) : "memory"
-
--static inline void spin_unlock(spinlock_t *lock)
-+static inline void _raw_spin_unlock(spinlock_t *lock)
- {
- char oldval = 1;
- #if SPINLOCK_DEBUG
-@@ -117,7 +117,7 @@
-
- #endif
-
--static inline int spin_trylock(spinlock_t *lock)
-+static inline int _raw_spin_trylock(spinlock_t *lock)
- {
- char oldval;
- __asm__ __volatile__(
-@@ -127,7 +127,7 @@
- return oldval > 0;
- }
-
--static inline void spin_lock(spinlock_t *lock)
-+static inline void _raw_spin_lock(spinlock_t *lock)
- {
- #if SPINLOCK_DEBUG
- __label__ here;
-@@ -183,7 +183,7 @@
- */
- /* the spinlock helpers are in arch/i386/kernel/semaphore.c */
-
--static inline void read_lock(rwlock_t *rw)
-+static inline void _raw_read_lock(rwlock_t *rw)
- {
- #if SPINLOCK_DEBUG
- if (rw->magic != RWLOCK_MAGIC)
-@@ -192,7 +192,7 @@
- __build_read_lock(rw, "__read_lock_failed");
- }
-
--static inline void write_lock(rwlock_t *rw)
-+static inline void _raw_write_lock(rwlock_t *rw)
- {
- #if SPINLOCK_DEBUG
- if (rw->magic != RWLOCK_MAGIC)
-@@ -201,10 +201,10 @@
- __build_write_lock(rw, "__write_lock_failed");
- }
-
--#define read_unlock(rw) asm volatile("lock ; incl %0" :"=m" ((rw)->lock) : : "memory")
--#define write_unlock(rw) asm volatile("lock ; addl $" RW_LOCK_BIAS_STR ",%0":"=m" ((rw)->lock) : : "memory")
-+#define _raw_read_unlock(rw) asm volatile("lock ; incl %0" :"=m" ((rw)->lock) : : "memory")
-+#define _raw_write_unlock(rw) asm volatile("lock ; addl $" RW_LOCK_BIAS_STR ",%0":"=m" ((rw)->lock) : : "memory")
-
--static inline int write_trylock(rwlock_t *lock)
-+static inline int _raw_write_trylock(rwlock_t *lock)
- {
- atomic_t *count = (atomic_t *)lock;
- if (atomic_sub_and_test(RW_LOCK_BIAS, count))
-diff -Nur linux_c860_org/include/asm-ia64/processor.h linux/include/asm-ia64/processor.h
---- linux_c860_org/include/asm-ia64/processor.h 2002-08-26 14:37:56.000000000 +0900
-+++ linux/include/asm-ia64/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -463,7 +463,7 @@
- * do_basic_setup() and the timing is such that free_initmem() has
- * been called already.
- */
--extern int kernel_thread (int (*fn)(void *), void *arg, unsigned long flags);
-+extern int arch_kernel_thread (int (*fn)(void *), void *arg, unsigned long flags);
-
- /* Copy and release all segment info associated with a VM */
- #define copy_segments(tsk, mm) do { } while (0)
-diff -Nur linux_c860_org/include/asm-m68k/processor.h linux/include/asm-m68k/processor.h
---- linux_c860_org/include/asm-m68k/processor.h 2002-08-26 14:37:50.000000000 +0900
-+++ linux/include/asm-m68k/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -105,7 +105,7 @@
- {
- }
-
--extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-
- #define copy_segments(tsk, mm) do { } while (0)
- #define release_segments(mm) do { } while (0)
-diff -Nur linux_c860_org/include/asm-mips/processor.h linux/include/asm-mips/processor.h
---- linux_c860_org/include/asm-mips/processor.h 2002-08-26 14:37:48.000000000 +0900
-+++ linux/include/asm-mips/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -208,7 +208,7 @@
- /* Free all resources held by a thread. */
- #define release_thread(thread) do { } while(0)
-
--extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-
- /* Copy and release all segment info associated with a VM */
- #define copy_segments(p, mm) do { } while(0)
-diff -Nur linux_c860_org/include/asm-mips64/processor.h linux/include/asm-mips64/processor.h
---- linux_c860_org/include/asm-mips64/processor.h 2002-08-26 14:37:58.000000000 +0900
-+++ linux/include/asm-mips64/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -231,7 +231,7 @@
- /* Free all resources held by a thread. */
- #define release_thread(thread) do { } while(0)
-
--extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-
- /* Copy and release all segment info associated with a VM */
- #define copy_segments(p, mm) do { } while(0)
-diff -Nur linux_c860_org/include/asm-parisc/processor.h linux/include/asm-parisc/processor.h
---- linux_c860_org/include/asm-parisc/processor.h 2002-08-26 14:38:01.000000000 +0900
-+++ linux/include/asm-parisc/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -305,7 +305,7 @@
-
- /* Free all resources held by a thread. */
- extern void release_thread(struct task_struct *);
--extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-
- #define copy_segments(tsk, mm) do { } while (0)
- #define release_segments(mm) do { } while (0)
-diff -Nur linux_c860_org/include/asm-ppc/processor.h linux/include/asm-ppc/processor.h
---- linux_c860_org/include/asm-ppc/processor.h 2002-08-26 14:37:52.000000000 +0900
-+++ linux/include/asm-ppc/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -571,7 +571,7 @@
- /*
- * Create a new kernel thread.
- */
--extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
-+extern long arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
-
- /*
- * Bus types
-diff -Nur linux_c860_org/include/asm-s390/processor.h linux/include/asm-s390/processor.h
---- linux_c860_org/include/asm-s390/processor.h 2002-08-26 14:37:59.000000000 +0900
-+++ linux/include/asm-s390/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -116,7 +116,7 @@
-
- /* Free all resources held by a thread. */
- extern void release_thread(struct task_struct *);
--extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-
- /* Copy and release all segment info associated with a VM */
- #define copy_segments(nr, mm) do { } while (0)
-diff -Nur linux_c860_org/include/asm-s390x/processor.h linux/include/asm-s390x/processor.h
---- linux_c860_org/include/asm-s390x/processor.h 2002-08-26 14:38:02.000000000 +0900
-+++ linux/include/asm-s390x/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -127,7 +127,7 @@
-
- /* Free all resources held by a thread. */
- extern void release_thread(struct task_struct *);
--extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-
- /* Copy and release all segment info associated with a VM */
- #define copy_segments(nr, mm) do { } while (0)
-diff -Nur linux_c860_org/include/asm-sh/hardirq.h linux/include/asm-sh/hardirq.h
---- linux_c860_org/include/asm-sh/hardirq.h 2002-08-26 14:37:55.000000000 +0900
-+++ linux/include/asm-sh/hardirq.h 2004-06-10 21:09:11.000000000 +0900
-@@ -34,6 +34,8 @@
-
- #define synchronize_irq() barrier()
-
-+#define release_irqlock(cpu) do { } while (0)
-+
- #else
-
- #error Super-H SMP is not available
-diff -Nur linux_c860_org/include/asm-sh/processor.h linux/include/asm-sh/processor.h
---- linux_c860_org/include/asm-sh/processor.h 2002-08-26 14:37:55.000000000 +0900
-+++ linux/include/asm-sh/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -137,7 +137,7 @@
- /*
- * create a kernel thread without removing it from tasklists
- */
--extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-
- /*
- * Bus types
-diff -Nur linux_c860_org/include/asm-sh/smplock.h linux/include/asm-sh/smplock.h
---- linux_c860_org/include/asm-sh/smplock.h 2002-08-26 14:37:55.000000000 +0900
-+++ linux/include/asm-sh/smplock.h 2004-06-10 21:09:11.000000000 +0900
-@@ -9,15 +9,88 @@
-
- #include <linux/config.h>
-
--#ifndef CONFIG_SMP
--
-+#if !defined(CONFIG_SMP) && !defined(CONFIG_PREEMPT)
-+/*
-+ * Should never happen, since linux/smp_lock.h catches this case;
-+ * but in case this file is included directly with neither SMP nor
-+ * PREEMPT configuration, provide same dummys as linux/smp_lock.h
-+ */
- #define lock_kernel() do { } while(0)
- #define unlock_kernel() do { } while(0)
--#define release_kernel_lock(task, cpu, depth) ((depth) = 1)
--#define reacquire_kernel_lock(task, cpu, depth) do { } while(0)
-+#define release_kernel_lock(task, cpu) do { } while(0)
-+#define reacquire_kernel_lock(task) do { } while(0)
-+#define kernel_locked() 1
-+
-+#else /* CONFIG_SMP || CONFIG_PREEMPT */
-+
-+#if CONFIG_SMP
-+#error "We do not support SMP on SH yet"
-+#endif
-+/*
-+ * Default SMP lock implementation (i.e. the i386 version)
-+ */
-+
-+#include <linux/interrupt.h>
-+#include <linux/spinlock.h>
-+
-+extern spinlock_t kernel_flag;
-+#define lock_bkl() spin_lock(&kernel_flag)
-+#define unlock_bkl() spin_unlock(&kernel_flag)
-
-+#ifdef CONFIG_SMP
-+#define kernel_locked() spin_is_locked(&kernel_flag)
-+#elif CONFIG_PREEMPT
-+#define kernel_locked() preempt_get_count()
-+#else /* neither */
-+#define kernel_locked() 1
-+#endif
-+
-+/*
-+ * Release global kernel lock and global interrupt lock
-+ */
-+#define release_kernel_lock(task, cpu) \
-+do { \
-+ if (task->lock_depth >= 0) \
-+ spin_unlock(&kernel_flag); \
-+ release_irqlock(cpu); \
-+ __sti(); \
-+} while (0)
-+
-+/*
-+ * Re-acquire the kernel lock
-+ */
-+#define reacquire_kernel_lock(task) \
-+do { \
-+ if (task->lock_depth >= 0) \
-+ spin_lock(&kernel_flag); \
-+} while (0)
-+
-+/*
-+ * Getting the big kernel lock.
-+ *
-+ * This cannot happen asynchronously,
-+ * so we only need to worry about other
-+ * CPU's.
-+ */
-+static __inline__ void lock_kernel(void)
-+{
-+#ifdef CONFIG_PREEMPT
-+ if (current->lock_depth == -1)
-+ spin_lock(&kernel_flag);
-+ ++current->lock_depth;
- #else
--#error "We do not support SMP on SH"
--#endif /* CONFIG_SMP */
-+ if (!++current->lock_depth)
-+ spin_lock(&kernel_flag);
-+#endif
-+}
-+
-+static __inline__ void unlock_kernel(void)
-+{
-+ if (current->lock_depth < 0)
-+ BUG();
-+ if (--current->lock_depth < 0)
-+ spin_unlock(&kernel_flag);
-+}
-+#endif /* CONFIG_SMP || CONFIG_PREEMPT */
-
- #endif /* __ASM_SH_SMPLOCK_H */
-diff -Nur linux_c860_org/include/asm-sh/softirq.h linux/include/asm-sh/softirq.h
---- linux_c860_org/include/asm-sh/softirq.h 2002-08-26 14:37:55.000000000 +0900
-+++ linux/include/asm-sh/softirq.h 2004-06-10 21:09:11.000000000 +0900
-@@ -6,6 +6,7 @@
-
- #define local_bh_disable() \
- do { \
-+ preempt_disable(); \
- local_bh_count(smp_processor_id())++; \
- barrier(); \
- } while (0)
-@@ -14,6 +15,7 @@
- do { \
- barrier(); \
- local_bh_count(smp_processor_id())--; \
-+ preempt_enable(); \
- } while (0)
-
- #define local_bh_enable() \
-@@ -23,6 +25,7 @@
- && softirq_pending(smp_processor_id())) { \
- do_softirq(); \
- } \
-+ preempt_enable(); \
- } while (0)
-
- #define in_softirq() (local_bh_count(smp_processor_id()) != 0)
-diff -Nur linux_c860_org/include/asm-sparc/processor.h linux/include/asm-sparc/processor.h
---- linux_c860_org/include/asm-sparc/processor.h 2002-08-26 14:37:51.000000000 +0900
-+++ linux/include/asm-sparc/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -146,7 +146,7 @@
-
- /* Free all resources held by a thread. */
- #define release_thread(tsk) do { } while(0)
--extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+extern pid_t arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-
-
- #define copy_segments(tsk, mm) do { } while (0)
-diff -Nur linux_c860_org/include/asm-sparc64/processor.h linux/include/asm-sparc64/processor.h
---- linux_c860_org/include/asm-sparc64/processor.h 2002-08-26 14:37:53.000000000 +0900
-+++ linux/include/asm-sparc64/processor.h 2004-06-10 21:09:11.000000000 +0900
-@@ -253,7 +253,7 @@
- /* Free all resources held by a thread. */
- #define release_thread(tsk) do { } while(0)
-
--extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+extern pid_t arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-
- #define copy_segments(tsk, mm) do { } while (0)
- #define release_segments(mm) do { } while (0)
-diff -Nur linux_c860_org/include/linux/ac97_codec.h linux/include/linux/ac97_codec.h
---- linux_c860_org/include/linux/ac97_codec.h 2002-08-26 14:37:45.000000000 +0900
-+++ linux/include/linux/ac97_codec.h 2004-06-10 21:13:20.000000000 +0900
-@@ -1,3 +1,8 @@
-+/*
-+ * ChangeLog:
-+ * 1-Nov-2003 Sharp Corporation for Tosa
-+ *
-+ */
- #ifndef _AC97_CODEC_H_
- #define _AC97_CODEC_H_
-
-@@ -5,124 +10,145 @@
- #include <linux/soundcard.h>
-
- /* AC97 1.0 */
--#define AC97_RESET 0x0000 //
--#define AC97_MASTER_VOL_STEREO 0x0002 // Line Out
--#define AC97_HEADPHONE_VOL 0x0004 //
--#define AC97_MASTER_VOL_MONO 0x0006 // TAD Output
--#define AC97_MASTER_TONE 0x0008 //
--#define AC97_PCBEEP_VOL 0x000a // none
--#define AC97_PHONE_VOL 0x000c // TAD Input (mono)
--#define AC97_MIC_VOL 0x000e // MIC Input (mono)
--#define AC97_LINEIN_VOL 0x0010 // Line Input (stereo)
--#define AC97_CD_VOL 0x0012 // CD Input (stereo)
--#define AC97_VIDEO_VOL 0x0014 // none
--#define AC97_AUX_VOL 0x0016 // Aux Input (stereo)
--#define AC97_PCMOUT_VOL 0x0018 // Wave Output (stereo)
--#define AC97_RECORD_SELECT 0x001a //
--#define AC97_RECORD_GAIN 0x001c
--#define AC97_RECORD_GAIN_MIC 0x001e
--#define AC97_GENERAL_PURPOSE 0x0020
--#define AC97_3D_CONTROL 0x0022
--#define AC97_MODEM_RATE 0x0024
--#define AC97_POWER_CONTROL 0x0026
-+#define AC97_RESET 0x0000 //
-+#define AC97_MASTER_VOL_STEREO 0x0002 // Line Out
-+#define AC97_HEADPHONE_VOL 0x0004 //
-+#define AC97_MASTER_VOL_MONO 0x0006 // TAD Output
-+#define AC97_MASTER_TONE 0x0008 //
-+#define AC97_PCBEEP_VOL 0x000a // none
-+#define AC97_PHONE_VOL 0x000c // TAD Input (mono)
-+#define AC97_MIC_VOL 0x000e // MIC Input (mono)
-+#define AC97_LINEIN_VOL 0x0010 // Line Input (stereo)
-+#define AC97_CD_VOL 0x0012 // CD Input (stereo)
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+#define AC97_SIDETONE 0x0014
-+#endif /* CONFIG_ARCH_PXA_TOSA */
-+#define AC97_VIDEO_VOL 0x0014 // none
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+#define AC97_OUT3_VOL 0x0016
-+#define AC97_DAC_VOL 0x0018
-+#endif /* CONFIG_ARCH_PXA_TOSA */
-+#define AC97_AUX_VOL 0x0016 // Aux Input (stereo)
-+#define AC97_PCMOUT_VOL 0x0018 // Wave Output (stereo)
-+#define AC97_RECORD_SELECT 0x001a //
-+#define AC97_RECORD_GAIN 0x001c
-+#define AC97_RECORD_GAIN_MIC 0x001e
-+#define AC97_GENERAL_PURPOSE 0x0020
-+#define AC97_3D_CONTROL 0x0022
-+#define AC97_MODEM_RATE 0x0024
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+#define AC97_POWERDOWN 0x0024
-+#endif /* CONFIG_ARCH_PXA_TOSA */
-+#define AC97_POWER_CONTROL 0x0026
-
- /* AC'97 2.0 */
--#define AC97_EXTENDED_ID 0x0028 /* Extended Audio ID */
--#define AC97_EXTENDED_STATUS 0x002A /* Extended Audio Status */
--#define AC97_PCM_FRONT_DAC_RATE 0x002C /* PCM Front DAC Rate */
--#define AC97_PCM_SURR_DAC_RATE 0x002E /* PCM Surround DAC Rate */
--#define AC97_PCM_LFE_DAC_RATE 0x0030 /* PCM LFE DAC Rate */
--#define AC97_PCM_LR_ADC_RATE 0x0032 /* PCM LR DAC Rate */
--#define AC97_PCM_MIC_ADC_RATE 0x0034 /* PCM MIC ADC Rate */
--#define AC97_CENTER_LFE_MASTER 0x0036 /* Center + LFE Master Volume */
--#define AC97_SURROUND_MASTER 0x0038 /* Surround (Rear) Master Volume */
--#define AC97_RESERVED_3A 0x003A /* Reserved in AC '97 < 2.2 */
-+#define AC97_EXTENDED_ID 0x0028 /* Extended Audio ID */
-+#define AC97_EXTENDED_STATUS 0x002A /* Extended Audio Status */
-+#define AC97_PCM_FRONT_DAC_RATE 0x002C /* PCM Front DAC Rate */
-+#define AC97_PCM_SURR_DAC_RATE 0x002E /* PCM Surround DAC Rate */
-+#define AC97_PCM_LFE_DAC_RATE 0x0030 /* PCM LFE DAC Rate */
-+#define AC97_PCM_LR_ADC_RATE 0x0032 /* PCM LR ADC Rate */
-+#define AC97_PCM_MIC_ADC_RATE 0x0034 /* PCM MIC ADC Rate */
-+#define AC97_CENTER_LFE_MASTER 0x0036 /* Center + LFE Master Volume */
-+#define AC97_SURROUND_MASTER 0x0038 /* Surround (Rear) Master Volume */
-+#define AC97_RESERVED_3A 0x003A /* Reserved in AC '97 < 2.2 */
-
- /* AC'97 2.2 */
--#define AC97_SPDIF_CONTROL 0x003A /* S/PDIF Control */
-+#define AC97_SPDIF_CONTROL 0x003A /* S/PDIF Control */
-
- /* range 0x3c-0x58 - MODEM */
--#define AC97_EXTENDED_MODEM_ID 0x003C
--#define AC97_EXTEND_MODEM_STAT 0x003E
--#define AC97_LINE1_RATE 0x0040
--#define AC97_LINE2_RATE 0x0042
--#define AC97_HANDSET_RATE 0x0044
--#define AC97_LINE1_LEVEL 0x0046
--#define AC97_LINE2_LEVEL 0x0048
--#define AC97_HANDSET_LEVEL 0x004A
--#define AC97_GPIO_CONFIG 0x004C
--#define AC97_GPIO_POLARITY 0x004E
--#define AC97_GPIO_STICKY 0x0050
--#define AC97_GPIO_WAKE_UP 0x0052
--#define AC97_GPIO_STATUS 0x0054
--#define AC97_MISC_MODEM_STAT 0x0056
--#define AC97_RESERVED_58 0x0058
-+#define AC97_EXTENDED_MODEM_ID 0x003C
-+#define AC97_EXTEND_MODEM_STAT 0x003E
-+#define AC97_LINE1_RATE 0x0040
-+#define AC97_LINE2_RATE 0x0042
-+#define AC97_HANDSET_RATE 0x0044
-+#define AC97_LINE1_LEVEL 0x0046
-+#define AC97_LINE2_LEVEL 0x0048
-+#define AC97_HANDSET_LEVEL 0x004A
-+#define AC97_GPIO_CONFIG 0x004C
-+#define AC97_GPIO_POLARITY 0x004E
-+#define AC97_GPIO_STICKY 0x0050
-+#define AC97_GPIO_WAKE_UP 0x0052
-+#define AC97_GPIO_STATUS 0x0054
-+#define AC97_MISC_MODEM_STAT 0x0056
-+#define AC97_RESERVED_58 0x0058
-+
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+#define AC97_GPIO_FUNC 0x0056
-+#define AC97_ADITFUNC1 0x0058
-+#define AC97_ADITFUNC2 0x005c
-+#define AC97_ALC_CTL 0x0060
-+#define AC97_NOISE_CTL 0x0062
-+#define AC97_AUXDAC_CTL 0x0064
-+#define AC97_TS_REG1 0x0076
-+#define AC97_TS_REG2 0x0078
-+#define AC97_TS_READBACK 0x007a
-+#endif /* CONFIG_ARCH_PXA_TOSA */
-
- /* registers 0x005a - 0x007a are vendor reserved */
--
--#define AC97_VENDOR_ID1 0x007c
--#define AC97_VENDOR_ID2 0x007e
-+#define AC97_VENDOR_ID1 0x007c
-+#define AC97_VENDOR_ID2 0x007e
-
- /* volume control bit defines */
--#define AC97_MUTE 0x8000
--#define AC97_MICBOOST 0x0040
--#define AC97_LEFTVOL 0x3f00
--#define AC97_RIGHTVOL 0x003f
-+#define AC97_MUTE 0x8000
-+#define AC97_MICBOOST 0x0040
-+#define AC97_LEFTVOL 0x3f00
-+#define AC97_RIGHTVOL 0x003f
-
- /* record mux defines */
--#define AC97_RECMUX_MIC 0x0000
--#define AC97_RECMUX_CD 0x0101
--#define AC97_RECMUX_VIDEO 0x0202
--#define AC97_RECMUX_AUX 0x0303
--#define AC97_RECMUX_LINE 0x0404
--#define AC97_RECMUX_STEREO_MIX 0x0505
--#define AC97_RECMUX_MONO_MIX 0x0606
--#define AC97_RECMUX_PHONE 0x0707
-+#define AC97_RECMUX_MIC 0x0000
-+#define AC97_RECMUX_CD 0x0101
-+#define AC97_RECMUX_VIDEO 0x0202
-+#define AC97_RECMUX_AUX 0x0303
-+#define AC97_RECMUX_LINE 0x0404
-+#define AC97_RECMUX_STEREO_MIX 0x0505
-+#define AC97_RECMUX_MONO_MIX 0x0606
-+#define AC97_RECMUX_PHONE 0x0707
-
- /* general purpose register bit defines */
--#define AC97_GP_LPBK 0x0080 /* Loopback mode */
--#define AC97_GP_MS 0x0100 /* Mic Select 0=Mic1, 1=Mic2 */
--#define AC97_GP_MIX 0x0200 /* Mono output select 0=Mix, 1=Mic */
--#define AC97_GP_RLBK 0x0400 /* Remote Loopback - Modem line codec */
--#define AC97_GP_LLBK 0x0800 /* Local Loopback - Modem Line codec */
--#define AC97_GP_LD 0x1000 /* Loudness 1=on */
--#define AC97_GP_3D 0x2000 /* 3D Enhancement 1=on */
--#define AC97_GP_ST 0x4000 /* Stereo Enhancement 1=on */
--#define AC97_GP_POP 0x8000 /* Pcm Out Path, 0=pre 3D, 1=post 3D */
-+#define AC97_GP_LPBK 0x0080 /* Loopback mode */
-+#define AC97_GP_MS 0x0100 /* Mic Select 0=Mic1, 1=Mic2 */
-+#define AC97_GP_MIX 0x0200 /* Mono output select 0=Mix, 1=Mic */
-+#define AC97_GP_RLBK 0x0400 /* Remote Loopback - Modem line codec */
-+#define AC97_GP_LLBK 0x0800 /* Local Loopback - Modem Line codec */
-+#define AC97_GP_LD 0x1000 /* Loudness 1=on */
-+#define AC97_GP_3D 0x2000 /* 3D Enhancement 1=on */
-+#define AC97_GP_ST 0x4000 /* Stereo Enhancement 1=on */
-+#define AC97_GP_POP 0x8000 /* Pcm Out Path, 0=pre 3D, 1=post 3D */
-
- /* extended audio status and control bit defines */
--#define AC97_EA_VRA 0x0001 /* Variable bit rate enable bit */
--#define AC97_EA_DRA 0x0002 /* Double-rate audio enable bit */
--#define AC97_EA_SPDIF 0x0004 /* S/PDIF Enable bit */
--#define AC97_EA_VRM 0x0008 /* Variable bit rate for MIC enable bit */
--#define AC97_EA_CDAC 0x0040 /* PCM Center DAC is ready (Read only) */
--#define AC97_EA_SDAC 0x0040 /* PCM Surround DACs are ready (Read only) */
--#define AC97_EA_LDAC 0x0080 /* PCM LFE DAC is ready (Read only) */
--#define AC97_EA_MDAC 0x0100 /* MIC ADC is ready (Read only) */
--#define AC97_EA_SPCV 0x0400 /* S/PDIF configuration valid (Read only) */
--#define AC97_EA_PRI 0x0800 /* Turns the PCM Center DAC off */
--#define AC97_EA_PRJ 0x1000 /* Turns the PCM Surround DACs off */
--#define AC97_EA_PRK 0x2000 /* Turns the PCM LFE DAC off */
--#define AC97_EA_PRL 0x4000 /* Turns the MIC ADC off */
--#define AC97_EA_SLOT_MASK 0xffcf /* Mask for slot assignment bits */
--#define AC97_EA_SPSA_3_4 0x0000 /* Slot assigned to 3 & 4 */
--#define AC97_EA_SPSA_7_8 0x0010 /* Slot assigned to 7 & 8 */
--#define AC97_EA_SPSA_6_9 0x0020 /* Slot assigned to 6 & 9 */
--#define AC97_EA_SPSA_10_11 0x0030 /* Slot assigned to 10 & 11 */
-+#define AC97_EA_VRA 0x0001 /* Variable bit rate enable bit */
-+#define AC97_EA_DRA 0x0002 /* Double-rate audio enable bit */
-+#define AC97_EA_SPDIF 0x0004 /* S/PDIF Enable bit */
-+#define AC97_EA_VRM 0x0008 /* Variable bit rate for MIC enable bit */
-+#define AC97_EA_CDAC 0x0040 /* PCM Center DAC is ready (Read only) */
-+#define AC97_EA_SDAC 0x0040 /* PCM Surround DACs are ready (Read only) */
-+#define AC97_EA_LDAC 0x0080 /* PCM LFE DAC is ready (Read only) */
-+#define AC97_EA_MDAC 0x0100 /* MIC ADC is ready (Read only) */
-+#define AC97_EA_SPCV 0x0400 /* S/PDIF configuration valid (Read only) */
-+#define AC97_EA_PRI 0x0800 /* Turns the PCM Center DAC off */
-+#define AC97_EA_PRJ 0x1000 /* Turns the PCM Surround DACs off */
-+#define AC97_EA_PRK 0x2000 /* Turns the PCM LFE DAC off */
-+#define AC97_EA_PRL 0x4000 /* Turns the MIC ADC off */
-+#define AC97_EA_SLOT_MASK 0xffcf /* Mask for slot assignment bits */
-+#define AC97_EA_SPSA_3_4 0x0000 /* Slot assigned to 3 & 4 */
-+#define AC97_EA_SPSA_7_8 0x0010 /* Slot assigned to 7 & 8 */
-+#define AC97_EA_SPSA_6_9 0x0020 /* Slot assigned to 6 & 9 */
-+#define AC97_EA_SPSA_10_11 0x0030 /* Slot assigned to 10 & 11 */
-
- /* S/PDIF control bit defines */
--#define AC97_SC_PRO 0x0001 /* Professional status */
--#define AC97_SC_NAUDIO 0x0002 /* Non audio stream */
--#define AC97_SC_COPY 0x0004 /* Copyright status */
--#define AC97_SC_PRE 0x0008 /* Preemphasis status */
--#define AC97_SC_CC_MASK 0x07f0 /* Category Code mask */
--#define AC97_SC_L 0x0800 /* Generation Level status */
--#define AC97_SC_SPSR_MASK 0xcfff /* S/PDIF Sample Rate bits */
--#define AC97_SC_SPSR_44K 0x0000 /* Use 44.1kHz Sample rate */
--#define AC97_SC_SPSR_48K 0x2000 /* Use 48kHz Sample rate */
--#define AC97_SC_SPSR_32K 0x3000 /* Use 32kHz Sample rate */
--#define AC97_SC_DRS 0x4000 /* Double Rate S/PDIF */
--#define AC97_SC_V 0x8000 /* Validity status */
-+#define AC97_SC_PRO 0x0001 /* Professional status */
-+#define AC97_SC_NAUDIO 0x0002 /* Non audio stream */
-+#define AC97_SC_COPY 0x0004 /* Copyright status */
-+#define AC97_SC_PRE 0x0008 /* Preemphasis status */
-+#define AC97_SC_CC_MASK 0x07f0 /* Category Code mask */
-+#define AC97_SC_L 0x0800 /* Generation Level status */
-+#define AC97_SC_SPSR_MASK 0xcfff /* S/PDIF Sample Rate bits */
-+#define AC97_SC_SPSR_44K 0x0000 /* Use 44.1kHz Sample rate */
-+#define AC97_SC_SPSR_48K 0x2000 /* Use 48kHz Sample rate */
-+#define AC97_SC_SPSR_32K 0x3000 /* Use 32kHz Sample rate */
-+#define AC97_SC_DRS 0x4000 /* Double Rate S/PDIF */
-+#define AC97_SC_V 0x8000 /* Validity status */
-
- /* powerdown control and status bit defines */
-
-@@ -143,6 +169,39 @@
- #define AC97_PWR_PR6 0x4000 /* HP amp powerdown */
- #define AC97_PWR_PR7 0x8000 /* Modem off - if supported */
-
-+/* extended audio ID register bit defines */
-+#define AC97_EXTID_VRA 0x0001
-+#define AC97_EXTID_DRA 0x0002
-+#define AC97_EXTID_SPDIF 0x0004
-+#define AC97_EXTID_VRM 0x0008
-+#define AC97_EXTID_DSA0 0x0010
-+#define AC97_EXTID_DSA1 0x0020
-+#define AC97_EXTID_CDAC 0x0040
-+#define AC97_EXTID_SDAC 0x0080
-+#define AC97_EXTID_LDAC 0x0100
-+#define AC97_EXTID_AMAP 0x0200
-+#define AC97_EXTID_REV0 0x0400
-+#define AC97_EXTID_REV1 0x0800
-+#define AC97_EXTID_ID0 0x4000
-+#define AC97_EXTID_ID1 0x8000
-+
-+/* extended status register bit defines */
-+#define AC97_EXTSTAT_VRA 0x0001
-+#define AC97_EXTSTAT_DRA 0x0002
-+#define AC97_EXTSTAT_SPDIF 0x0004
-+#define AC97_EXTSTAT_VRM 0x0008
-+#define AC97_EXTSTAT_SPSA0 0x0010
-+#define AC97_EXTSTAT_SPSA1 0x0020
-+#define AC97_EXTSTAT_CDAC 0x0040
-+#define AC97_EXTSTAT_SDAC 0x0080
-+#define AC97_EXTSTAT_LDAC 0x0100
-+#define AC97_EXTSTAT_MADC 0x0200
-+#define AC97_EXTSTAT_SPCV 0x0400
-+#define AC97_EXTSTAT_PRI 0x0800
-+#define AC97_EXTSTAT_PRJ 0x1000
-+#define AC97_EXTSTAT_PRK 0x2000
-+#define AC97_EXTSTAT_PRL 0x4000
-+
- /* useful power states */
- #define AC97_PWR_D0 0x0000 /* everything on */
- #define AC97_PWR_D1 AC97_PWR_PR0|AC97_PWR_PR1|AC97_PWR_PR4
-@@ -189,11 +248,18 @@
- int dev_mixer;
- int type;
-
-+ int modem:1;
-+
- struct ac97_ops *codec_ops;
-
- /* controller specific lower leverl ac97 accessing routines */
- u16 (*codec_read) (struct ac97_codec *codec, u8 reg);
- void (*codec_write) (struct ac97_codec *codec, u8 reg, u16 val);
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+ void (*codec_bit_clear) (struct ac97_codec *codec, u8 reg, u16 val);
-+ void (*codec_bit_set) (struct ac97_codec *codec, u8 reg, u16 val);
-+ int mixer_busy;
-+#endif /* CONFIG_ARCH_PXA_TOSA */
-
- /* Wait for codec-ready. Ok to sleep here. */
- void (*codec_wait) (struct ac97_codec *codec);
-@@ -204,6 +270,9 @@
- int stereo_mixers;
- int record_sources;
-
-+ /* Property flags */
-+ int flags;
-+
- int bit_resolution;
-
- /* OSS mixer interface */
-@@ -232,6 +301,8 @@
- int (*amplifier)(struct ac97_codec *codec, int on);
- /* Digital mode control */
- int (*digital)(struct ac97_codec *codec, int format);
-+#define AC97_DELUDED_MODEM 1 /* Audio codec reports its a modem */
-+#define AC97_NO_PCM_VOLUME 2 /* Volume control is missing */
- };
-
- extern int ac97_read_proc (char *page_out, char **start, off_t off,
-@@ -242,4 +313,8 @@
- extern int ac97_save_state(struct ac97_codec *codec);
- extern int ac97_restore_state(struct ac97_codec *codec);
-
-+#ifdef CONFIG_ARCH_PXA_TOSA
-+#include <asm/arch/tosa_ac97_codec.h>
-+#endif /* CONFIG_ARCH_PXA_TOSA */
-+
- #endif /* _AC97_CODEC_H_ */
-diff -Nur linux_c860_org/include/linux/brlock.h linux/include/linux/brlock.h
---- linux_c860_org/include/linux/brlock.h 2002-08-26 14:37:46.000000000 +0900
-+++ linux/include/linux/brlock.h 2004-06-10 21:12:50.000000000 +0900
-@@ -171,11 +171,11 @@
- }
-
- #else
--# define br_read_lock(idx) ((void)(idx))
--# define br_read_unlock(idx) ((void)(idx))
--# define br_write_lock(idx) ((void)(idx))
--# define br_write_unlock(idx) ((void)(idx))
--#endif
-+# define br_read_lock(idx) ({ (void)(idx); preempt_disable(); })
-+# define br_read_unlock(idx) ({ (void)(idx); preempt_enable(); })
-+# define br_write_lock(idx) ({ (void)(idx); preempt_disable(); })
-+# define br_write_unlock(idx) ({ (void)(idx); preempt_enable(); })
-+#endif /* CONFIG_SMP */
-
- /*
- * Now enumerate all of the possible sw/hw IRQ protected
-diff -Nur linux_c860_org/include/linux/dcache.h linux/include/linux/dcache.h
---- linux_c860_org/include/linux/dcache.h 2002-12-18 19:52:24.000000000 +0900
-+++ linux/include/linux/dcache.h 2004-06-10 21:12:37.000000000 +0900
-@@ -129,31 +129,6 @@
-
- extern spinlock_t dcache_lock;
-
--/**
-- * d_drop - drop a dentry
-- * @dentry: dentry to drop
-- *
-- * d_drop() unhashes the entry from the parent
-- * dentry hashes, so that it won't be found through
-- * a VFS lookup any more. Note that this is different
-- * from deleting the dentry - d_delete will try to
-- * mark the dentry negative if possible, giving a
-- * successful _negative_ lookup, while d_drop will
-- * just make the cache lookup fail.
-- *
-- * d_drop() is used mainly for stuff that wants
-- * to invalidate a dentry for some reason (NFS
-- * timeouts or autofs deletes).
-- */
--
--static __inline__ void d_drop(struct dentry * dentry)
--{
-- spin_lock(&dcache_lock);
-- list_del(&dentry->d_hash);
-- INIT_LIST_HEAD(&dentry->d_hash);
-- spin_unlock(&dcache_lock);
--}
--
- static __inline__ int dname_external(struct dentry *d)
- {
- return d->d_name.name != d->d_iname;
-@@ -281,3 +256,34 @@
- #endif /* __KERNEL__ */
-
- #endif /* __LINUX_DCACHE_H */
-+
-+#if !defined(__LINUX_DCACHE_H_INLINES) && defined(_TASK_STRUCT_DEFINED)
-+#define __LINUX_DCACHE_H_INLINES
-+
-+#ifdef __KERNEL__
-+/**
-+ * d_drop - drop a dentry
-+ * @dentry: dentry to drop
-+ *
-+ * d_drop() unhashes the entry from the parent
-+ * dentry hashes, so that it won't be found through
-+ * a VFS lookup any more. Note that this is different
-+ * from deleting the dentry - d_delete will try to
-+ * mark the dentry negative if possible, giving a
-+ * successful _negative_ lookup, while d_drop will
-+ * just make the cache lookup fail.
-+ *
-+ * d_drop() is used mainly for stuff that wants
-+ * to invalidate a dentry for some reason (NFS
-+ * timeouts or autofs deletes).
-+ */
-+
-+static __inline__ void d_drop(struct dentry * dentry)
-+{
-+ spin_lock(&dcache_lock);
-+ list_del(&dentry->d_hash);
-+ INIT_LIST_HEAD(&dentry->d_hash);
-+ spin_unlock(&dcache_lock);
-+}
-+#endif
-+#endif
-diff -Nur linux_c860_org/include/linux/fb_doublebyte.h linux/include/linux/fb_doublebyte.h
---- linux_c860_org/include/linux/fb_doublebyte.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/linux/fb_doublebyte.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,43 @@
-+/*
-+ * linux/include/linux/fb_widechar.h
-+ *
-+ * Copyright (C) 1999 Christopher Li, Jim Chen
-+ * GNU/Linux Research Center
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive
-+ * for more details.
-+ *
-+ *
-+ */
-+
-+#ifndef _LINUX_FB_DOUBLEBYTE_H
-+#define _LINUX_FB_DOUBLEbYTE_H
-+
-+#define DB_VALIDATE 0x8000
-+#define DB_RIGHT_MASK 0x4000
-+#define DB_HALF_MASK 0x2000
-+#define DB_SYMBOL 0x1000
-+#define DB_ASCII 0
-+
-+#define DB_RIGHT (DB_VALIDATE|DB_RIGHT_MASK)
-+#define DB_LEFT (DB_VALIDATE)
-+#define DB_NUM 8
-+
-+#define DB_INDEX_ERROR -512
-+struct double_byte
-+{
-+ unsigned int num;
-+ char name[16];
-+ int (*is_left)(int );
-+ int (*is_right)(int );
-+ int (*font_index)(int left,int right);
-+ unsigned int width,height; /* right now only support 16x16 */
-+ int charcount;
-+ unsigned char * font_data;
-+};
-+extern int register_doublebyte(struct double_byte *);
-+extern int unregister_doublebyte(struct double_byte *);
-+extern struct double_byte * doublebyte_encodeing[DB_NUM];
-+extern struct double_byte * doublebyte_default;
-+#endif
-diff -Nur linux_c860_org/include/linux/fs_struct.h linux/include/linux/fs_struct.h
---- linux_c860_org/include/linux/fs_struct.h 2002-08-26 14:37:46.000000000 +0900
-+++ linux/include/linux/fs_struct.h 2004-06-10 21:09:11.000000000 +0900
-@@ -20,6 +20,15 @@
- extern void exit_fs(struct task_struct *);
- extern void set_fs_altroot(void);
-
-+struct fs_struct *copy_fs_struct(struct fs_struct *old);
-+void put_fs_struct(struct fs_struct *fs);
-+
-+#endif
-+#endif
-+
-+#if !defined(_LINUX_FS_STRUCT_H_INLINES) && defined(_TASK_STRUCT_DEFINED)
-+#define _LINUX_FS_STRUCT_H_INLINES
-+#ifdef __KERNEL__
- /*
- * Replace the fs->{rootmnt,root} with {mnt,dentry}. Put the old values.
- * It can block. Requires the big lock held.
-@@ -65,9 +74,5 @@
- mntput(old_pwdmnt);
- }
- }
--
--struct fs_struct *copy_fs_struct(struct fs_struct *old);
--void put_fs_struct(struct fs_struct *fs);
--
- #endif
- #endif
-diff -Nur linux_c860_org/include/linux/jffs2_fs_sb.h linux/include/linux/jffs2_fs_sb.h
---- linux_c860_org/include/linux/jffs2_fs_sb.h 2003-05-14 15:01:52.000000000 +0900
-+++ linux/include/linux/jffs2_fs_sb.h 2004-06-10 21:12:37.000000000 +0900
-@@ -16,6 +16,7 @@
- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility
- * 05-Nov-2002 Lineo Japan, Inc. modify nr_bad_blocks type
- * 29-Oct-2002 Lineo Japan, Inc. add member nr_bad_blocks and cont_gc_count
-+ * 05-Aug-2003 SHARP for Tosa
- *
- */
-
-@@ -81,7 +82,7 @@
- uint32_t nr_blocks;
- struct jffs2_eraseblock *blocks; /* The whole array of blocks. Used for getting blocks
- * from the offset (blocks[ofs / sector_size]) */
--#ifdef CONFIG_ARCH_PXA_HUSKY
-+#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA)
- dma_addr_t blocks_phys;
- #endif
- struct jffs2_eraseblock *nextblock; /* The block we're currently filling */
-diff -Nur linux_c860_org/include/linux/lock_break.h linux/include/linux/lock_break.h
---- linux_c860_org/include/linux/lock_break.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/linux/lock_break.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,84 @@
-+/*
-+ * include/linux/lock_break.h - lock breaking routines
-+ *
-+ * since in-kernel preemption can not occur while a lock is
-+ * held, we can drop and reacquire long-held locks when they are
-+ * in a natural quiescent state to further lower system latency.
-+ *
-+ * (C) 2001 Robert Love
-+ *
-+ */
-+
-+#ifndef _LINUX_LOCK_BREAK_H
-+#define _LINUX_LOCK_BREAK_H
-+
-+#include <linux/compiler.h>
-+
-+/*
-+ * setting this to 1 will instruct debug_lock_break to
-+ * note when the expected lock count does not equal the
-+ * actual count. if the lock count is higher than expected,
-+ * we aren't dropping enough locks. if it is 0, we are
-+ * wasting our time since the system is already preemptible.
-+ */
-+#ifndef DEBUG_LOCK_BREAK
-+#define DEBUG_LOCK_BREAK 0
-+#endif
-+
-+#ifdef CONFIG_LOCK_BREAK
-+
-+#define conditional_schedule_needed() (unlikely(current->need_resched))
-+
-+/*
-+ * setting the task's state to TASK_RUNNING is nothing but paranoia,
-+ * in the case where a task is delinquent in properly putting itself
-+ * to sleep. we should test without it.
-+ */
-+#define unconditional_schedule() do { \
-+ __set_current_state(TASK_RUNNING); \
-+ schedule(); \
-+} while(0)
-+
-+#define conditional_schedule() do { \
-+ if (conditional_schedule_needed()) \
-+ unconditional_schedule(); \
-+} while(0)
-+
-+#define break_spin_lock(n) do { \
-+ spin_unlock(n); \
-+ spin_lock(n); \
-+} while(0)
-+
-+#define break_spin_lock_and_resched(n) do { \
-+ spin_unlock(n); \
-+ conditional_schedule(); \
-+ spin_lock(n); \
-+} while(0)
-+
-+#if DEBUG_LOCK_BREAK
-+#define debug_lock_break(n) do { \
-+ if (current->preempt_count != n) \
-+ printk(KERN_ERR "lock_break: %s:%d: count was %d not %d\n", \
-+ __FILE__, __LINE__, current->preempt_count, n); \
-+} while(0)
-+#else
-+#define debug_lock_break(n)
-+#endif
-+
-+#define DEFINE_LOCK_COUNT() int _lock_break_count = 0
-+#define TEST_LOCK_COUNT(n) (++_lock_break_count > (n))
-+#define RESET_LOCK_COUNT() _lock_break_count = 0
-+
-+#else
-+#define unconditional_schedule()
-+#define conditional_schedule()
-+#define conditional_schedule_needed() 0
-+#define break_spin_lock(n)
-+#define break_spin_lock_and_resched(n)
-+#define debug_lock_break(n)
-+#define DEFINE_LOCK_COUNT()
-+#define TEST_LOCK_COUNT(n) 0
-+#define RESET_LOCK_COUNT()
-+#endif
-+
-+#endif /* _LINUX_LOCK_BREAK_H */
-diff -Nur linux_c860_org/include/linux/mm.h linux/include/linux/mm.h
---- linux_c860_org/include/linux/mm.h 2003-01-29 14:45:03.000000000 +0900
-+++ linux/include/linux/mm.h 2004-06-10 21:12:37.000000000 +0900
-@@ -126,6 +126,9 @@
- */
- extern pgprot_t protection_map[16];
-
-+#define ZPR_MAX_BYTES 256*PAGE_SIZE
-+#define ZPR_NORMAL 0 /* perform zap_page_range request in one walk */
-+#define ZPR_PARTITION 1 /* partition into a series of smaller operations */
-
- /*
- * These are the virtual MM functions - opening of an area, closing and
-@@ -409,7 +412,7 @@
- extern void shmem_lock(struct file * file, int lock);
- extern int shmem_zero_setup(struct vm_area_struct *);
-
--extern void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size);
-+extern void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size, int actions);
- extern int copy_page_range(struct mm_struct *dst, struct mm_struct *src, struct vm_area_struct *vma);
- extern int remap_page_range(unsigned long from, unsigned long to, unsigned long size, pgprot_t prot);
- extern int zeromap_page_range(unsigned long from, unsigned long size, pgprot_t prot);
-diff -Nur linux_c860_org/include/linux/ppp-comp.h linux/include/linux/ppp-comp.h
---- linux_c860_org/include/linux/ppp-comp.h 2002-08-26 14:37:45.000000000 +0900
-+++ linux/include/linux/ppp-comp.h 2004-06-10 21:09:11.000000000 +0900
-@@ -24,11 +24,11 @@
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
-- * $Id: ppp-comp.h,v 1.6 1997/11/27 06:04:44 paulus Exp $
-+ * $Id: ppp-comp.h,v 1.8 1999/07/23 06:53:40 paulus Exp $
- */
-
- /*
-- * ==FILEVERSION 980319==
-+ * ==FILEVERSION 990623==
- *
- * NOTE TO MAINTAINERS:
- * If you modify this file at all, please set the above date.
-@@ -120,6 +120,7 @@
- * Don't you just lurve software patents.
- */
-
-+#define DECOMP_OK 0 /* no error occured */
- #define DECOMP_ERROR -1 /* error detected before decomp. */
- #define DECOMP_FATALERROR -2 /* error detected after decomp. */
-
-@@ -138,7 +139,7 @@
- * Max # bytes for a CCP option
- */
-
--#define CCP_MAX_OPTION_LENGTH 32
-+#define CCP_MAX_OPTION_LENGTH 64
-
- /*
- * Parts of a CCP packet.
-@@ -187,6 +188,20 @@
- #define DEFLATE_CHK_SEQUENCE 0
-
- /*
-+ * Definitions for MPPE.
-+ */
-+
-+#define CI_MPPE 18 /* config. option for MPPE */
-+#define CILEN_MPPE 6 /* length of config. option */
-+
-+/*
-+ * Definitions for Stac LZS.
-+ */
-+
-+#define CI_LZS 17 /* config option for Stac LZS */
-+#define CILEN_LZS 5 /* length of config option */
-+
-+/*
- * Definitions for other, as yet unsupported, compression methods.
- */
-
-diff -Nur linux_c860_org/include/linux/sched.h linux/include/linux/sched.h
---- linux_c860_org/include/linux/sched.h 2002-12-18 19:29:48.000000000 +0900
-+++ linux/include/linux/sched.h 2004-06-10 21:12:37.000000000 +0900
-@@ -31,6 +31,7 @@
- #include <linux/signal.h>
- #include <linux/securebits.h>
- #include <linux/fs_struct.h>
-+#include <linux/lock_break.h>
-
- struct exec_domain;
-
-@@ -93,6 +94,7 @@
- #define TASK_UNINTERRUPTIBLE 2
- #define TASK_ZOMBIE 4
- #define TASK_STOPPED 8
-+#define PREEMPT_ACTIVE 0x4000000
-
- #define __set_task_state(tsk, state_value) \
- do { (tsk)->state = (state_value); } while (0)
-@@ -159,6 +161,9 @@
- #define MAX_SCHEDULE_TIMEOUT LONG_MAX
- extern signed long FASTCALL(schedule_timeout(signed long timeout));
- asmlinkage void schedule(void);
-+#ifdef CONFIG_PREEMPT
-+asmlinkage void preempt_schedule(void);
-+#endif
-
- extern int schedule_task(struct tq_struct *task);
- extern void flush_scheduled_tasks(void);
-@@ -288,7 +293,7 @@
- * offsets of these are hardcoded elsewhere - touch with care
- */
- volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
-- unsigned long flags; /* per process flags, defined below */
-+ int preempt_count; /* 0 => preemptable, <0 => BUG */
- int sigpending;
- mm_segment_t addr_limit; /* thread address space:
- 0-0xBFFFFFFF for user-thead
-@@ -330,6 +335,7 @@
- struct mm_struct *active_mm;
- struct list_head local_pages;
- unsigned int allocation_order, nr_local_pages;
-+ unsigned long flags;
-
- /* task state */
- struct linux_binfmt *binfmt;
-@@ -338,6 +344,7 @@
- /* ??? */
- unsigned long personality;
- int did_exec:1;
-+ unsigned task_dumpable:1;
- pid_t pid;
- pid_t pgrp;
- pid_t tty_old_pgrp;
-@@ -505,6 +512,8 @@
- #define PT_TRACESYSGOOD 0x00000008
- #define PT_PTRACE_CAP 0x00000010 /* ptracer can follow suid-exec */
-
-+#define is_dumpable(tsk) (((tsk)->task_dumpable) && (((tsk)->mm != NULL) && (tsk)->mm->dumpable))
-+
- /*
- * Limit the stack by to some sane default: root can always
- * increase this limit if needed.. 8MB seems reasonable.
-@@ -854,6 +863,8 @@
- extern int do_execve(char *, char **, char **, struct pt_regs *);
- extern int do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long);
-
-+extern long kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-+
- extern void FASTCALL(add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait));
- extern void FASTCALL(add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait));
- extern void FASTCALL(remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait));
-@@ -992,6 +1003,11 @@
- return res;
- }
-
-+#define _TASK_STRUCT_DEFINED
-+#include <linux/dcache.h>
-+#include <linux/tqueue.h>
-+#include <linux/fs_struct.h>
-+
- #endif /* __KERNEL__ */
-
- #endif
-diff -Nur linux_c860_org/include/linux/smp.h linux/include/linux/smp.h
---- linux_c860_org/include/linux/smp.h 2002-08-26 14:37:45.000000000 +0900
-+++ linux/include/linux/smp.h 2004-06-10 21:12:36.000000000 +0900
-@@ -81,11 +81,17 @@
- #define smp_processor_id() 0
- #define hard_smp_processor_id() 0
- #define smp_threads_ready 1
-+#ifndef CONFIG_PREEMPT
- #define kernel_lock()
-+#endif
- #define cpu_logical_map(cpu) 0
- #define cpu_number_map(cpu) 0
- #define smp_call_function(func,info,retry,wait) ({ 0; })
- #define cpu_online_map 1
-
--#endif
--#endif
-+#endif /* !SMP */
-+
-+#define get_cpu() smp_processor_id()
-+#define put_cpu() do { } while(0)
-+
-+#endif /* __LINUX_SMP_H */
-diff -Nur linux_c860_org/include/linux/smp_lock.h linux/include/linux/smp_lock.h
---- linux_c860_org/include/linux/smp_lock.h 2002-08-26 14:37:45.000000000 +0900
-+++ linux/include/linux/smp_lock.h 2004-06-10 21:12:37.000000000 +0900
-@@ -3,7 +3,7 @@
-
- #include <linux/config.h>
-
--#ifndef CONFIG_SMP
-+#if !defined(CONFIG_SMP) && !defined(CONFIG_PREEMPT)
-
- #define lock_kernel() do { } while(0)
- #define unlock_kernel() do { } while(0)
-diff -Nur linux_c860_org/include/linux/spinlock.h linux/include/linux/spinlock.h
---- linux_c860_org/include/linux/spinlock.h 2002-08-26 14:37:46.000000000 +0900
-+++ linux/include/linux/spinlock.h 2004-06-10 21:12:37.000000000 +0900
-@@ -2,6 +2,7 @@
- #define __LINUX_SPINLOCK_H
-
- #include <linux/config.h>
-+#include <linux/compiler.h>
-
- /*
- * These are the generic versions of the spinlocks and read-write
-@@ -45,8 +46,10 @@
-
- #if (DEBUG_SPINLOCKS < 1)
-
-+#ifndef CONFIG_PREEMPT
- #define atomic_dec_and_lock(atomic,lock) atomic_dec_and_test(atomic)
- #define ATOMIC_DEC_AND_LOCK
-+#endif
-
- /*
- * Your basic spinlocks, allowing only a single CPU anywhere
-@@ -62,11 +65,11 @@
- #endif
-
- #define spin_lock_init(lock) do { } while(0)
--#define spin_lock(lock) (void)(lock) /* Not "unused variable". */
-+#define _raw_spin_lock(lock) (void)(lock) /* Not "unused variable". */
- #define spin_is_locked(lock) (0)
--#define spin_trylock(lock) ({1; })
-+#define _raw_spin_trylock(lock) ({1; })
- #define spin_unlock_wait(lock) do { } while(0)
--#define spin_unlock(lock) do { } while(0)
-+#define _raw_spin_unlock(lock) do { } while(0)
-
- #elif (DEBUG_SPINLOCKS < 2)
-
-@@ -125,13 +128,78 @@
- #endif
-
- #define rwlock_init(lock) do { } while(0)
--#define read_lock(lock) (void)(lock) /* Not "unused variable". */
--#define read_unlock(lock) do { } while(0)
--#define write_lock(lock) (void)(lock) /* Not "unused variable". */
--#define write_unlock(lock) do { } while(0)
-+#define _raw_read_lock(lock) (void)(lock) /* Not "unused variable". */
-+#define _raw_read_unlock(lock) do { } while(0)
-+#define _raw_write_lock(lock) (void)(lock) /* Not "unused variable". */
-+#define _raw_write_unlock(lock) do { } while(0)
-
- #endif /* !SMP */
-
-+#ifdef CONFIG_PREEMPT
-+
-+#define preempt_get_count() (current->preempt_count)
-+#define preempt_is_disabled() (preempt_get_count() != 0)
-+
-+#define preempt_disable() \
-+do { \
-+ ++current->preempt_count; \
-+ barrier(); \
-+} while (0)
-+
-+#define preempt_enable_no_resched() \
-+do { \
-+ --current->preempt_count; \
-+ barrier(); \
-+} while (0)
-+
-+#define preempt_enable() \
-+do { \
-+ --current->preempt_count; \
-+ barrier(); \
-+ if (unlikely(current->preempt_count < current->need_resched)) \
-+ preempt_schedule(); \
-+} while (0)
-+
-+#define spin_lock(lock) \
-+do { \
-+ preempt_disable(); \
-+ _raw_spin_lock(lock); \
-+} while(0)
-+
-+#define spin_trylock(lock) ({preempt_disable(); _raw_spin_trylock(lock) ? \
-+ 1 : ({preempt_enable(); 0;});})
-+#define spin_unlock(lock) \
-+do { \
-+ _raw_spin_unlock(lock); \
-+ preempt_enable(); \
-+} while (0)
-+
-+#define read_lock(lock) ({preempt_disable(); _raw_read_lock(lock);})
-+#define read_unlock(lock) ({_raw_read_unlock(lock); preempt_enable();})
-+#define write_lock(lock) ({preempt_disable(); _raw_write_lock(lock);})
-+#define write_unlock(lock) ({_raw_write_unlock(lock); preempt_enable();})
-+#define write_trylock(lock) ({preempt_disable();_raw_write_trylock(lock) ? \
-+ 1 : ({preempt_enable(); 0;});})
-+
-+#else
-+
-+#define preempt_get_count() (0)
-+#define preempt_is_disabled() (1)
-+#define preempt_disable() do { } while (0)
-+#define preempt_enable_no_resched() do {} while(0)
-+#define preempt_enable() do { } while (0)
-+
-+#define spin_lock(lock) _raw_spin_lock(lock)
-+#define spin_trylock(lock) _raw_spin_trylock(lock)
-+#define spin_unlock(lock) _raw_spin_unlock(lock)
-+
-+#define read_lock(lock) _raw_read_lock(lock)
-+#define read_unlock(lock) _raw_read_unlock(lock)
-+#define write_lock(lock) _raw_write_lock(lock)
-+#define write_unlock(lock) _raw_write_unlock(lock)
-+#define write_trylock(lock) _raw_write_trylock(lock)
-+#endif
-+
- /* "lock on reference count zero" */
- #ifndef ATOMIC_DEC_AND_LOCK
- #include <asm/atomic.h>
-diff -Nur linux_c860_org/include/linux/tqueue.h linux/include/linux/tqueue.h
---- linux_c860_org/include/linux/tqueue.h 2002-08-26 14:37:44.000000000 +0900
-+++ linux/include/linux/tqueue.h 2004-06-10 21:12:37.000000000 +0900
-@@ -94,6 +94,22 @@
- extern spinlock_t tqueue_lock;
-
- /*
-+ * Call all "bottom halfs" on a given list.
-+ */
-+
-+extern void __run_task_queue(task_queue *list);
-+
-+static inline void run_task_queue(task_queue *list)
-+{
-+ if (TQ_ACTIVE(*list))
-+ __run_task_queue(list);
-+}
-+
-+#endif /* _LINUX_TQUEUE_H */
-+
-+#if !defined(_LINUX_TQUEUE_H_INLINES) && defined(_TASK_STRUCT_DEFINED)
-+#define _LINUX_TQUEUE_H_INLINES
-+/*
- * Queue a task on a tq. Return non-zero if it was successfully
- * added.
- */
-@@ -109,17 +125,4 @@
- }
- return ret;
- }
--
--/*
-- * Call all "bottom halfs" on a given list.
-- */
--
--extern void __run_task_queue(task_queue *list);
--
--static inline void run_task_queue(task_queue *list)
--{
-- if (TQ_ACTIVE(*list))
-- __run_task_queue(list);
--}
--
--#endif /* _LINUX_TQUEUE_H */
-+#endif
-diff -Nur linux_c860_org/include/linux/tty_flip.h linux/include/linux/tty_flip.h
---- linux_c860_org/include/linux/tty_flip.h 2002-08-26 14:37:44.000000000 +0900
-+++ linux/include/linux/tty_flip.h 2004-06-10 21:12:59.000000000 +0900
-@@ -7,9 +7,22 @@
- #define _INLINE_ static __inline__
- #endif
-
-+#ifdef CONFIG_UNICON
-+extern int (*Unicon_fnKeyHook) (struct tty_struct *tty,
-+ unsigned char ch, char flag);
-+#endif
- _INLINE_ void tty_insert_flip_char(struct tty_struct *tty,
-- unsigned char ch, char flag)
-+ unsigned char ch, char flag)
- {
-+ #ifdef CONFIG_UNICON
-+ if (Unicon_fnKeyHook != NULL)
-+ {
-+ /* return 1 ==> processed by kernel
-+ return 0 ==> processed by app */
-+ if ((*Unicon_fnKeyHook) (tty, ch, flag) == 1)
-+ return;
-+ }
-+ #endif
- if (tty->flip.count < TTY_FLIPBUF_SIZE) {
- tty->flip.count++;
- *tty->flip.flag_buf_ptr++ = flag;
-diff -Nur linux_c860_org/include/net/irda/irlmp.h linux/include/net/irda/irlmp.h
---- linux_c860_org/include/net/irda/irlmp.h 2002-08-29 12:24:49.000000000 +0900
-+++ linux/include/net/irda/irlmp.h 2004-06-10 21:13:39.000000000 +0900
-@@ -21,6 +21,9 @@
- * Neither Dag Brattli nor University of Tromsø admit liability nor
- * provide warranty for any of this software. This material is
- * provided "AS-IS" and at no charge.
-+ *
-+ * ChangeLog:
-+ * 1-Nov-2003 Sharp Corporation for Tosa
- *
- ********************************************************************/
-
-@@ -181,6 +184,9 @@
- int running;
-
- __u16_host_order hints; /* Hint bits */
-+#if defined(CONFIG_ARCH_SHARP_SL)
-+ int discovery_retry; /* Discovery retry flag at media busy */
-+#endif
- };
-
- /* Prototype declarations */
-diff -Nur linux_c860_org/include/openssl/opensslconf.h linux/include/openssl/opensslconf.h
---- linux_c860_org/include/openssl/opensslconf.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/openssl/opensslconf.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,176 @@
-+/* opensslconf.h */
-+/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
-+
-+/* OpenSSL was configured with the following options: */
-+#ifdef OPENSSL_ALGORITHM_DEFINES
-+ /* no ciphers excluded */
-+#endif
-+#ifdef OPENSSL_THREAD_DEFINES
-+# ifndef THREADS
-+# define THREADS
-+# endif
-+#endif
-+#ifdef OPENSSL_OTHER_DEFINES
-+# ifndef DSO_DLFCN
-+# define DSO_DLFCN
-+# endif
-+# ifndef HAVE_DLFCN_H
-+# define HAVE_DLFCN_H
-+# endif
-+#endif
-+
-+/* crypto/opensslconf.h.in */
-+
-+/* Generate 80386 code? */
-+#undef I386_ONLY
-+
-+#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
-+#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
-+#define OPENSSLDIR "/usr/local/ssl"
-+#endif
-+#endif
-+
-+#define OPENSSL_UNISTD <unistd.h>
-+
-+#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
-+#define IDEA_INT unsigned int
-+#endif
-+
-+#if defined(HEADER_MD2_H) && !defined(MD2_INT)
-+#define MD2_INT unsigned int
-+#endif
-+
-+#if defined(HEADER_RC2_H) && !defined(RC2_INT)
-+/* I need to put in a mod for the alpha - eay */
-+#define RC2_INT unsigned int
-+#endif
-+
-+#if defined(HEADER_RC4_H)
-+#if !defined(RC4_INT)
-+/* using int types make the structure larger but make the code faster
-+ * on most boxes I have tested - up to %20 faster. */
-+/*
-+ * I don't know what does "most" mean, but declaring "int" is a must on:
-+ * - Intel P6 because partial register stalls are very expensive;
-+ * - elder Alpha because it lacks byte load/store instructions;
-+ */
-+#define RC4_INT unsigned int
-+#endif
-+#if !defined(RC4_CHUNK)
-+/*
-+ * This enables code handling data aligned at natural CPU word
-+ * boundary. See crypto/rc4/rc4_enc.c for further details.
-+ */
-+#undef RC4_CHUNK
-+#endif
-+#endif
-+
-+#if defined(HEADER_DES_H) && !defined(DES_LONG)
-+/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
-+ * %20 speed up (longs are 8 bytes, int's are 4). */
-+#ifndef DES_LONG
-+#define DES_LONG unsigned long
-+#endif
-+#endif
-+
-+#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
-+#define CONFIG_HEADER_BN_H
-+#define BN_LLONG
-+
-+/* Should we define BN_DIV2W here? */
-+
-+/* Only one for the following should be defined */
-+/* The prime number generation stuff may not work when
-+ * EIGHT_BIT but I don't care since I've only used this mode
-+ * for debuging the bignum libraries */
-+#undef SIXTY_FOUR_BIT_LONG
-+#undef SIXTY_FOUR_BIT
-+#define THIRTY_TWO_BIT
-+#undef SIXTEEN_BIT
-+#undef EIGHT_BIT
-+#endif
-+
-+#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
-+#define CONFIG_HEADER_RC4_LOCL_H
-+/* if this is defined data[i] is used instead of *data, this is a %20
-+ * speedup on x86 */
-+#define RC4_INDEX
-+#endif
-+
-+#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
-+#define CONFIG_HEADER_BF_LOCL_H
-+#undef BF_PTR
-+#endif /* HEADER_BF_LOCL_H */
-+
-+#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
-+#define CONFIG_HEADER_DES_LOCL_H
-+#ifndef DES_DEFAULT_OPTIONS
-+/* the following is tweaked from a config script, that is why it is a
-+ * protected undef/define */
-+#ifndef DES_PTR
-+#define DES_PTR
-+#endif
-+
-+/* This helps C compiler generate the correct code for multiple functional
-+ * units. It reduces register dependancies at the expense of 2 more
-+ * registers */
-+#ifndef DES_RISC1
-+#define DES_RISC1
-+#endif
-+
-+#ifndef DES_RISC2
-+#undef DES_RISC2
-+#endif
-+
-+#if defined(DES_RISC1) && defined(DES_RISC2)
-+YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
-+#endif
-+
-+/* Unroll the inner loop, this sometimes helps, sometimes hinders.
-+ * Very mucy CPU dependant */
-+#ifndef DES_UNROLL
-+#define DES_UNROLL
-+#endif
-+
-+/* These default values were supplied by
-+ * Peter Gutman <pgut001@cs.auckland.ac.nz>
-+ * They are only used if nothing else has been defined */
-+#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
-+/* Special defines which change the way the code is built depending on the
-+ CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
-+ even newer MIPS CPU's, but at the moment one size fits all for
-+ optimization options. Older Sparc's work better with only UNROLL, but
-+ there's no way to tell at compile time what it is you're running on */
-+
-+#if defined( sun ) /* Newer Sparc's */
-+# define DES_PTR
-+# define DES_RISC1
-+# define DES_UNROLL
-+#elif defined( __ultrix ) /* Older MIPS */
-+# define DES_PTR
-+# define DES_RISC2
-+# define DES_UNROLL
-+#elif defined( __osf1__ ) /* Alpha */
-+# define DES_PTR
-+# define DES_RISC2
-+#elif defined ( _AIX ) /* RS6000 */
-+ /* Unknown */
-+#elif defined( __hpux ) /* HP-PA */
-+ /* Unknown */
-+#elif defined( __aux ) /* 68K */
-+ /* Unknown */
-+#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
-+# define DES_UNROLL
-+#elif defined( __sgi ) /* Newer MIPS */
-+# define DES_PTR
-+# define DES_RISC2
-+# define DES_UNROLL
-+#elif defined( i386 ) /* x86 boxes, should be gcc */
-+# define DES_PTR
-+# define DES_RISC1
-+# define DES_UNROLL
-+#endif /* Systems-specific speed defines */
-+#endif
-+
-+#endif /* DES_DEFAULT_OPTIONS */
-+#endif /* HEADER_DES_LOCL_H */
-diff -Nur linux_c860_org/include/openssl/opensslv.h linux/include/openssl/opensslv.h
---- linux_c860_org/include/openssl/opensslv.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/openssl/opensslv.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,85 @@
-+#ifndef HEADER_OPENSSLV_H
-+#define HEADER_OPENSSLV_H
-+
-+/* Numeric release version identifier:
-+ * MMNNFFPPS: major minor fix patch status
-+ * The status nibble has one of the values 0 for development, 1 to e for betas
-+ * 1 to 14, and f for release. The patch level is exactly that.
-+ * For example:
-+ * 0.9.3-dev 0x00903000
-+ * 0.9.3-beta1 0x00903001
-+ * 0.9.3-beta2-dev 0x00903002
-+ * 0.9.3-beta2 0x00903002 (same as ...beta2-dev)
-+ * 0.9.3 0x0090300f
-+ * 0.9.3a 0x0090301f
-+ * 0.9.4 0x0090400f
-+ * 1.2.3z 0x102031af
-+ *
-+ * For continuity reasons (because 0.9.5 is already out, and is coded
-+ * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level
-+ * part is slightly different, by setting the highest bit. This means
-+ * that 0.9.5a looks like this: 0x0090581f. At 0.9.6, we can start
-+ * with 0x0090600S...
-+ *
-+ * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.)
-+ * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for
-+ * major minor fix final patch/beta)
-+ */
-+#define OPENSSL_VERSION_NUMBER 0x0090601fL
-+#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.6a 5 Apr 2001"
-+#define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT
-+
-+
-+/* The macros below are to be used for shared library (.so, .dll, ...)
-+ * versioning. That kind of versioning works a bit differently between
-+ * operating systems. The most usual scheme is to set a major and a minor
-+ * number, and have the runtime loader check that the major number is equal
-+ * to what it was at application link time, while the minor number has to
-+ * be greater or equal to what it was at application link time. With this
-+ * scheme, the version number is usually part of the file name, like this:
-+ *
-+ * libcrypto.so.0.9
-+ *
-+ * Some unixen also make a softlink with the major verson number only:
-+ *
-+ * libcrypto.so.0
-+ *
-+ * On True64 it works a little bit differently. There, the shared library
-+ * version is stored in the file, and is actually a series of versions,
-+ * separated by colons. The rightmost version present in the library when
-+ * linking an application is stored in the application to be matched at
-+ * run time. When the application is run, a check is done to see if the
-+ * library version stored in the application matches any of the versions
-+ * in the version string of the library itself.
-+ * This version string can be constructed in any way, depending on what
-+ * kind of matching is desired. However, to implement the same scheme as
-+ * the one used in the other unixen, all compatible versions, from lowest
-+ * to highest, should be part of the string. Consecutive builds would
-+ * give the following versions strings:
-+ *
-+ * 3.0
-+ * 3.0:3.1
-+ * 3.0:3.1:3.2
-+ * 4.0
-+ * 4.0:4.1
-+ *
-+ * Notice how version 4 is completely incompatible with version, and
-+ * therefore give the breach you can see.
-+ *
-+ * There may be other schemes as well that I haven't yet discovered.
-+ *
-+ * So, here's the way it works here: first of all, the library version
-+ * number doesn't need at all to match the overall OpenSSL version.
-+ * However, it's nice and more understandable if it actually does.
-+ * The current library version is stored in the macro SHLIB_VERSION_NUMBER,
-+ * which is just a piece of text in the format "M.m.e" (Major, minor, edit).
-+ * For the sake of True64 and any other OS that behaves in similar ways,
-+ * we need to keep a history of version numbers, which is done in the
-+ * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and
-+ * should only keep the versions that are binary compatible with the current.
-+ */
-+#define SHLIB_VERSION_HISTORY ""
-+#define SHLIB_VERSION_NUMBER "0.9.6"
-+
-+
-+#endif /* HEADER_OPENSSLV_H */
-diff -Nur linux_c860_org/include/openssl/rc4.h linux/include/openssl/rc4.h
---- linux_c860_org/include/openssl/rc4.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/openssl/rc4.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,88 @@
-+/* crypto/rc4/rc4.h */
-+/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
-+ * All rights reserved.
-+ *
-+ * This package is an SSL implementation written
-+ * by Eric Young (eay@cryptsoft.com).
-+ * The implementation was written so as to conform with Netscapes SSL.
-+ *
-+ * This library is free for commercial and non-commercial use as long as
-+ * the following conditions are aheared to. The following conditions
-+ * apply to all code found in this distribution, be it the RC4, RSA,
-+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
-+ * included with this distribution is covered by the same copyright terms
-+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
-+ *
-+ * Copyright remains Eric Young's, and as such any Copyright notices in
-+ * the code are not to be removed.
-+ * If this package is used in a product, Eric Young should be given attribution
-+ * as the author of the parts of the library used.
-+ * This can be in the form of a textual message at program startup or
-+ * in documentation (online or textual) provided with the package.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * "This product includes cryptographic software written by
-+ * Eric Young (eay@cryptsoft.com)"
-+ * The word 'cryptographic' can be left out if the rouines from the library
-+ * being used are not cryptographic related :-).
-+ * 4. If you include any Windows specific code (or a derivative thereof) from
-+ * the apps directory (application code) you must include an acknowledgement:
-+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * The licence and distribution terms for any publically available version or
-+ * derivative of this code cannot be changed. i.e. this code cannot simply be
-+ * copied and put under another distribution licence
-+ * [including the GNU Public Licence.]
-+ */
-+
-+#ifndef HEADER_RC4_H
-+#define HEADER_RC4_H
-+
-+#ifdef NO_RC4
-+#error RC4 is disabled.
-+#endif
-+
-+#include <openssl/opensslconf.h> /* RC4_INT */
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+typedef struct rc4_key_st
-+ {
-+ RC4_INT x,y;
-+ RC4_INT data[256];
-+ } RC4_KEY;
-+
-+
-+const char *RC4_options(void);
-+void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data);
-+void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata,
-+ unsigned char *outdata);
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif
-diff -Nur linux_c860_org/include/openssl/sha.h linux/include/openssl/sha.h
---- linux_c860_org/include/openssl/sha.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/openssl/sha.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,119 @@
-+/* crypto/sha/sha.h */
-+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
-+ * All rights reserved.
-+ *
-+ * This package is an SSL implementation written
-+ * by Eric Young (eay@cryptsoft.com).
-+ * The implementation was written so as to conform with Netscapes SSL.
-+ *
-+ * This library is free for commercial and non-commercial use as long as
-+ * the following conditions are aheared to. The following conditions
-+ * apply to all code found in this distribution, be it the RC4, RSA,
-+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
-+ * included with this distribution is covered by the same copyright terms
-+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
-+ *
-+ * Copyright remains Eric Young's, and as such any Copyright notices in
-+ * the code are not to be removed.
-+ * If this package is used in a product, Eric Young should be given attribution
-+ * as the author of the parts of the library used.
-+ * This can be in the form of a textual message at program startup or
-+ * in documentation (online or textual) provided with the package.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * "This product includes cryptographic software written by
-+ * Eric Young (eay@cryptsoft.com)"
-+ * The word 'cryptographic' can be left out if the rouines from the library
-+ * being used are not cryptographic related :-).
-+ * 4. If you include any Windows specific code (or a derivative thereof) from
-+ * the apps directory (application code) you must include an acknowledgement:
-+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * The licence and distribution terms for any publically available version or
-+ * derivative of this code cannot be changed. i.e. this code cannot simply be
-+ * copied and put under another distribution licence
-+ * [including the GNU Public Licence.]
-+ */
-+
-+#ifndef HEADER_SHA_H
-+#define HEADER_SHA_H
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+#if defined(NO_SHA) || (defined(NO_SHA0) && defined(NO_SHA1))
-+#error SHA is disabled.
-+#endif
-+
-+/*
-+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-+ * ! SHA_LONG has to be at least 32 bits wide. If it's wider, then !
-+ * ! SHA_LONG_LOG2 has to be defined along. !
-+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-+ */
-+
-+#if defined(WIN16) || defined(__LP32__)
-+#define SHA_LONG unsigned long
-+#elif defined(_CRAY) || defined(__ILP64__)
-+#define SHA_LONG unsigned long
-+#define SHA_LONG_LOG2 3
-+#else
-+#define SHA_LONG unsigned int
-+#endif
-+
-+#define SHA_LBLOCK 16
-+#define SHA_CBLOCK (SHA_LBLOCK*4) /* SHA treats input data as a
-+ * contiguous array of 32 bit
-+ * wide big-endian values. */
-+#define SHA_LAST_BLOCK (SHA_CBLOCK-8)
-+#define SHA_DIGEST_LENGTH 20
-+
-+typedef struct SHAstate_st
-+ {
-+ SHA_LONG h0,h1,h2,h3,h4;
-+ SHA_LONG Nl,Nh;
-+ SHA_LONG data[SHA_LBLOCK];
-+ int num;
-+ } SHA_CTX;
-+
-+#ifndef NO_SHA0
-+void SHA_Init(SHA_CTX *c);
-+void SHA_Update(SHA_CTX *c, const void *data, unsigned long len);
-+void SHA_Final(unsigned char *md, SHA_CTX *c);
-+unsigned char *SHA(const unsigned char *d, unsigned long n,unsigned char *md);
-+void SHA_Transform(SHA_CTX *c, const unsigned char *data);
-+#endif
-+#ifndef NO_SHA1
-+void SHA1_Init(SHA_CTX *c);
-+void SHA1_Update(SHA_CTX *c, const void *data, unsigned long len);
-+void SHA1_Final(unsigned char *md, SHA_CTX *c);
-+unsigned char *SHA1(const unsigned char *d, unsigned long n,unsigned char *md);
-+void SHA1_Transform(SHA_CTX *c, const unsigned char *data);
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif
-diff -Nur linux_c860_org/include/video/tosa_backlight.h linux/include/video/tosa_backlight.h
---- linux_c860_org/include/video/tosa_backlight.h 1970-01-01 09:00:00.000000000 +0900
-+++ linux/include/video/tosa_backlight.h 2004-06-10 21:09:11.000000000 +0900
-@@ -0,0 +1,47 @@
-+/*
-+ * linux/include/video/tosa_backlight.h
-+ *
-+ * (C) Copyright 2004 Lineo Solutions, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * Based on:
-+ * linux/include/video/corgi_backlight.h
-+ *
-+ * (C) Copyright 2002 Lineo Japan, Inc.
-+ *
-+ * May be copied or modified under the terms of the GNU General Public
-+ * License. See linux/COPYING for more information.
-+ *
-+ * Based on include/video/sa1100_frontlight.h
-+ *
-+ * ChangeLog:
-+ * 06-Nov-2002 SHARP for SL-B500/5600
-+ */
-+
-+
-+#ifndef __TOSA_FRONTLIGHT_H
-+#define __TOSA_FRONTLIGHT_H
-+
-+#define TOSA_BL_IOCTL_ON 1
-+#define TOSA_BL_IOCTL_OFF 2
-+#define TOSA_BL_IOCTL_STEP_CONTRAST 100
-+#define TOSA_BL_IOCTL_GET_STEP_CONTRAST 101
-+#define TOSA_BL_IOCTL_GET_STEP 102
-+
-+#define TOSA_BL_RESET_CONTRAST (-1)
-+#define TOSA_BL_CAUTION_CONTRAST (1)
-+
-+#define BL_MAJOR 254
-+#define BL_NAME "tosa-bl"
-+
-+#ifdef CONFIG_PM
-+void tosa_bl_blank(int);
-+int tosa_bl_pm_callback(struct pm_dev*, pm_request_t, void*);
-+#endif
-+void tosa_bl_temporary_contrast_set(void);
-+void tosa_bl_temporary_contrast_reset(void);
-+void tosa_bl_set_limit_contrast(int);
-+
-+#endif /* __TOSA_FRONTLIGHT_H */
-diff -Nur linux_c860_org/kernel/exit.c linux/kernel/exit.c
---- linux_c860_org/kernel/exit.c 2002-08-26 14:43:29.000000000 +0900
-+++ linux/kernel/exit.c 2004-06-10 21:09:11.000000000 +0900
-@@ -203,6 +203,8 @@
- }
- i++;
- set >>= 1;
-+ debug_lock_break(1);
-+ conditional_schedule();
- }
- }
- }
-@@ -320,8 +322,8 @@
- /* more a memory barrier than a real lock */
- task_lock(tsk);
- tsk->mm = NULL;
-- task_unlock(tsk);
- enter_lazy_tlb(mm, current, smp_processor_id());
-+ task_unlock(tsk);
- mmput(mm);
- }
- }
-@@ -442,6 +444,11 @@
- tsk->flags |= PF_EXITING;
- del_timer_sync(&tsk->real_timer);
-
-+ if (unlikely(preempt_get_count()))
-+ printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n",
-+ current->comm, current->pid,
-+ preempt_get_count());
-+
- fake_volatile:
- #ifdef CONFIG_BSD_PROCESS_ACCT
- acct_process(code);
-diff -Nur linux_c860_org/kernel/fork.c linux/kernel/fork.c
---- linux_c860_org/kernel/fork.c 2002-12-18 19:29:50.000000000 +0900
-+++ linux/kernel/fork.c 2004-06-10 21:09:11.000000000 +0900
-@@ -28,6 +28,7 @@
- #include <asm/pgalloc.h>
- #include <asm/uaccess.h>
- #include <asm/mmu_context.h>
-+#include <asm/processor.h>
-
- /* The idle threads do not count.. */
- int nr_threads;
-@@ -561,6 +562,31 @@
- p->flags = new_flags;
- }
-
-+long kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-+{
-+ struct task_struct *task = current;
-+ unsigned old_task_dumpable;
-+ long ret;
-+
-+ /* lock out any potential ptracer */
-+ task_lock(task);
-+ if (task->ptrace) {
-+ task_unlock(task);
-+ return -EPERM;
-+ }
-+
-+ old_task_dumpable = task->task_dumpable;
-+ task->task_dumpable = 0;
-+ task_unlock(task);
-+
-+ ret = arch_kernel_thread(fn, arg, flags);
-+
-+ /* never reached in child process, only in parent */
-+ current->task_dumpable = old_task_dumpable;
-+
-+ return ret;
-+}
-+
- /*
- * Ok, this is the main fork-routine. It copies the system process
- * information (task[nr]) and sets up the necessary registers. It also
-@@ -622,6 +648,13 @@
- if (p->binfmt && p->binfmt->module)
- __MOD_INC_USE_COUNT(p->binfmt->module);
-
-+#ifdef CONFIG_PREEMPT
-+ /*
-+ * Continue with preemption disabled as part of the context
-+ * switch, so start with preempt_count set to 1.
-+ */
-+ p->preempt_count = 1;
-+#endif
- p->did_exec = 0;
- p->swappable = 0;
- p->state = TASK_UNINTERRUPTIBLE;
-diff -Nur linux_c860_org/kernel/ksyms.c linux/kernel/ksyms.c
---- linux_c860_org/kernel/ksyms.c 2002-08-26 14:43:29.000000000 +0900
-+++ linux/kernel/ksyms.c 2004-06-10 21:09:11.000000000 +0900
-@@ -439,6 +439,9 @@
- EXPORT_SYMBOL(interruptible_sleep_on);
- EXPORT_SYMBOL(interruptible_sleep_on_timeout);
- EXPORT_SYMBOL(schedule);
-+#ifdef CONFIG_PREEMPT
-+EXPORT_SYMBOL(preempt_schedule);
-+#endif
- EXPORT_SYMBOL(schedule_timeout);
- EXPORT_SYMBOL(jiffies);
- EXPORT_SYMBOL(xtime);
-diff -Nur linux_c860_org/kernel/ptrace.c linux/kernel/ptrace.c
---- linux_c860_org/kernel/ptrace.c 2002-08-26 14:37:42.000000000 +0900
-+++ linux/kernel/ptrace.c 2004-06-10 21:09:11.000000000 +0900
-@@ -21,6 +21,9 @@
- */
- int ptrace_check_attach(struct task_struct *child, int kill)
- {
-+ mb();
-+ if (!child->task_dumpable)
-+ return -EPERM;
- if (!(child->ptrace & PT_PTRACED))
- return -ESRCH;
-
-@@ -70,7 +73,7 @@
- (current->gid != task->gid)) && !capable(CAP_SYS_PTRACE))
- goto bad;
- rmb();
-- if (!task->mm->dumpable && !capable(CAP_SYS_PTRACE))
-+ if (!is_dumpable(task) && !capable(CAP_SYS_PTRACE))
- goto bad;
- /* the same process cannot be attached many times */
- if (task->ptrace & PT_PTRACED)
-@@ -136,6 +139,8 @@
- /* Worry about races with exit() */
- task_lock(tsk);
- mm = tsk->mm;
-+ if (!tsk->task_dumpable || (&init_mm == mm))
-+ mm = NULL;
- if (mm)
- atomic_inc(&mm->mm_users);
- task_unlock(tsk);
-diff -Nur linux_c860_org/kernel/sched.c linux/kernel/sched.c
---- linux_c860_org/kernel/sched.c 2002-08-26 14:37:42.000000000 +0900
-+++ linux/kernel/sched.c 2004-06-10 21:09:11.000000000 +0900
-@@ -491,7 +491,7 @@
- task_lock(prev);
- task_release_cpu(prev);
- mb();
-- if (prev->state == TASK_RUNNING)
-+ if (task_on_runqueue(prev))
- goto needs_resched;
-
- out_unlock:
-@@ -521,7 +521,7 @@
- goto out_unlock;
-
- spin_lock_irqsave(&runqueue_lock, flags);
-- if ((prev->state == TASK_RUNNING) && !task_has_cpu(prev))
-+ if (task_on_runqueue(prev) && !task_has_cpu(prev))
- reschedule_idle(prev);
- spin_unlock_irqrestore(&runqueue_lock, flags);
- goto out_unlock;
-@@ -534,6 +534,7 @@
- asmlinkage void schedule_tail(struct task_struct *prev)
- {
- __schedule_tail(prev);
-+ preempt_enable();
- }
-
- /*
-@@ -553,10 +554,12 @@
- struct list_head *tmp;
- int this_cpu, c;
-
--
- spin_lock_prefetch(&runqueue_lock);
-
-+ preempt_disable();
-+
- if (!current->active_mm) BUG();
-+
- need_resched_back:
- prev = current;
- this_cpu = prev->processor;
-@@ -583,6 +586,14 @@
- move_last_runqueue(prev);
- }
-
-+#ifdef CONFIG_PREEMPT
-+ /*
-+ * entering from preempt_schedule, off a kernel preemption,
-+ * go straight to picking the next task.
-+ */
-+ if (unlikely(preempt_get_count() & PREEMPT_ACTIVE))
-+ goto treat_like_run;
-+#endif
- switch (prev->state) {
- case TASK_INTERRUPTIBLE:
- if (signal_pending(prev)) {
-@@ -593,6 +604,9 @@
- del_from_runqueue(prev);
- case TASK_RUNNING:;
- }
-+#ifdef CONFIG_PREEMPT
-+ treat_like_run:
-+#endif
- prev->need_resched = 0;
-
- /*
-@@ -701,9 +715,25 @@
- reacquire_kernel_lock(current);
- if (current->need_resched)
- goto need_resched_back;
-+ preempt_enable_no_resched();
- return;
- }
-
-+#ifdef CONFIG_PREEMPT
-+/*
-+ * this is is the entry point to schedule() from in-kernel preemption.
-+ */
-+asmlinkage void preempt_schedule(void)
-+{
-+ do {
-+ current->preempt_count += PREEMPT_ACTIVE;
-+ schedule();
-+ current->preempt_count -= PREEMPT_ACTIVE;
-+ barrier();
-+ } while (current->need_resched);
-+}
-+#endif /* CONFIG_PREEMPT */
-+
- /*
- * The core wakeup function. Non-exclusive wakeups (nr_exclusive == 0) just wake everything
- * up. If it's an exclusive wakeup (nr_exclusive == small +ve number) then we wake all the
-@@ -1312,6 +1342,13 @@
- sched_data->curr = current;
- sched_data->last_schedule = get_cycles();
- clear_bit(current->processor, &wait_init_idle);
-+#ifdef CONFIG_PREEMPT
-+ /*
-+ * fix up the preempt_count for non-CPU0 idle threads
-+ */
-+ if (current->processor)
-+ current->preempt_count = 0;
-+#endif
- }
-
- extern void init_timervecs (void);
-diff -Nur linux_c860_org/kernel/sys.c linux/kernel/sys.c
---- linux_c860_org/kernel/sys.c 2002-08-29 12:24:32.000000000 +0900
-+++ linux/kernel/sys.c 2004-06-10 21:09:11.000000000 +0900
-@@ -1231,7 +1231,7 @@
- error = put_user(current->pdeath_signal, (int *)arg2);
- break;
- case PR_GET_DUMPABLE:
-- if (current->mm->dumpable)
-+ if (is_dumpable(current))
- error = 1;
- break;
- case PR_SET_DUMPABLE:
-@@ -1239,7 +1239,8 @@
- error = -EINVAL;
- break;
- }
-- current->mm->dumpable = arg2;
-+ if (is_dumpable(current))
-+ current->mm->dumpable = arg2;
- break;
- case PR_SET_UNALIGN:
- #ifdef SET_UNALIGN_CTL
-diff -Nur linux_c860_org/lib/dec_and_lock.c linux/lib/dec_and_lock.c
---- linux_c860_org/lib/dec_and_lock.c 2002-08-26 14:37:42.000000000 +0900
-+++ linux/lib/dec_and_lock.c 2004-06-10 21:09:11.000000000 +0900
-@@ -1,5 +1,6 @@
- #include <linux/module.h>
- #include <linux/spinlock.h>
-+#include <linux/sched.h>
- #include <asm/atomic.h>
-
- /*
-diff -Nur linux_c860_org/mm/filemap.c linux/mm/filemap.c
---- linux_c860_org/mm/filemap.c 2002-08-26 14:37:43.000000000 +0900
-+++ linux/mm/filemap.c 2004-06-10 21:09:11.000000000 +0900
-@@ -296,6 +296,7 @@
-
- page_cache_release(page);
-
-+ /* we hit this with lock depth of 1 or 2 */
- if (current->need_resched) {
- __set_current_state(TASK_RUNNING);
- schedule();
-@@ -406,6 +407,8 @@
- }
-
- page_cache_release(page);
-+
-+ debug_lock_break(551);
- if (current->need_resched) {
- __set_current_state(TASK_RUNNING);
- schedule();
-@@ -560,12 +563,16 @@
- list_del(&page->list);
- list_add(&page->list, &mapping->locked_pages);
-
-- if (!PageDirty(page))
-- continue;
--
- page_cache_get(page);
- spin_unlock(&pagecache_lock);
-
-+ /* BKL is held ... */
-+ debug_lock_break(1);
-+ conditional_schedule();
-+
-+ if (!PageDirty(page))
-+ goto clean;
-+
- lock_page(page);
-
- if (PageDirty(page)) {
-@@ -576,7 +583,7 @@
- ret = err;
- } else
- UnlockPage(page);
--
-+clean:
- page_cache_release(page);
- spin_lock(&pagecache_lock);
- }
-@@ -595,14 +602,28 @@
- {
- int ret = 0;
-
-+ DEFINE_LOCK_COUNT();
-+
- spin_lock(&pagecache_lock);
-
-+restart:
- while (!list_empty(&mapping->locked_pages)) {
- struct page *page = list_entry(mapping->locked_pages.next, struct page, list);
-
- list_del(&page->list);
- list_add(&page->list, &mapping->clean_pages);
-
-+ debug_lock_break(2);
-+ if (TEST_LOCK_COUNT(32)) {
-+ RESET_LOCK_COUNT();
-+ if (conditional_schedule_needed()) {
-+ page_cache_get(page);
-+ break_spin_lock_and_resched(&pagecache_lock);
-+ page_cache_release(page);
-+ goto restart;
-+ }
-+ }
-+
- if (!PageLocked(page))
- continue;
-
-@@ -869,6 +890,7 @@
- * the hash-list needs a held write-lock.
- */
- repeat:
-+ break_spin_lock(&pagecache_lock);
- page = __find_page_nolock(mapping, offset, hash);
- if (page) {
- page_cache_get(page);
-@@ -2031,6 +2053,8 @@
- address += PAGE_SIZE;
- pte++;
- } while (address && (address < end));
-+ debug_lock_break(1);
-+ break_spin_lock(&vma->vm_mm->page_table_lock);
- return error;
- }
-
-@@ -2061,6 +2085,9 @@
- address = (address + PMD_SIZE) & PMD_MASK;
- pmd++;
- } while (address && (address < end));
-+
-+ debug_lock_break(1);
-+ break_spin_lock(&vma->vm_mm->page_table_lock);
- return error;
- }
-
-@@ -2438,7 +2465,7 @@
- if (vma->vm_flags & VM_LOCKED)
- return -EINVAL;
-
-- zap_page_range(vma->vm_mm, start, end - start);
-+ zap_page_range(vma->vm_mm, start, end - start, ZPR_PARTITION);
- return 0;
- }
-
-diff -Nur linux_c860_org/mm/memory.c linux/mm/memory.c
---- linux_c860_org/mm/memory.c 2003-06-18 16:12:29.000000000 +0900
-+++ linux/mm/memory.c 2004-06-10 21:09:11.000000000 +0900
-@@ -384,7 +384,8 @@
- /*
- * remove user pages in a given range.
- */
--void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size)
-+void do_zap_page_range(struct mm_struct *mm, unsigned long address,
-+ unsigned long size)
- {
- unsigned long start = address, end = address + size;
- mmu_gather_t *tlb;
-@@ -643,6 +644,20 @@
- iobuf->locked = 0;
- }
-
-+void zap_page_range(struct mm_struct *mm, unsigned long address,
-+ unsigned long size, int actions)
-+{
-+ while (size) {
-+ unsigned long chunk = size;
-+
-+ if (actions & ZPR_PARTITION && chunk > ZPR_MAX_BYTES)
-+ chunk = ZPR_MAX_BYTES;
-+ do_zap_page_range(mm, address, chunk);
-+
-+ address += chunk;
-+ size -= chunk;
-+ }
-+}
-
- /*
- * Lock down all of the pages of a kiovec for IO.
-@@ -752,11 +767,15 @@
- return 0;
- }
-
--static inline void zeromap_pte_range(pte_t * pte, unsigned long address,
-- unsigned long size, pgprot_t prot)
-+static inline void zeromap_pte_range(struct mm_struct *mm, pte_t * pte,
-+ unsigned long address, unsigned long size,
-+ pgprot_t prot)
- {
- unsigned long end;
-
-+ debug_lock_break(1);
-+ break_spin_lock(&mm->page_table_lock);
-+
- address &= ~PMD_MASK;
- end = address + size;
- if (end > PMD_SIZE)
-@@ -784,7 +803,7 @@
- pte_t * pte = pte_alloc(mm, pmd, address);
- if (!pte)
- return -ENOMEM;
-- zeromap_pte_range(pte, address, end - address, prot);
-+ zeromap_pte_range(mm, pte, address, end - address, prot);
- address = (address + PMD_SIZE) & PMD_MASK;
- pmd++;
- } while (address && (address < end));
-@@ -1022,7 +1041,7 @@
-
- /* mapping wholly truncated? */
- if (mpnt->vm_pgoff >= pgoff) {
-- zap_page_range(mm, start, len);
-+ zap_page_range(mm, start, len, ZPR_NORMAL);
- continue;
- }
-
-@@ -1035,7 +1054,7 @@
- /* Ok, partially affected.. */
- start += diff << PAGE_SHIFT;
- len = (len - diff) << PAGE_SHIFT;
-- zap_page_range(mm, start, len);
-+ zap_page_range(mm, start, len, ZPR_NORMAL);
- } while ((mpnt = mpnt->vm_next_share) != NULL);
- }
-
-diff -Nur linux_c860_org/mm/mmap.c linux/mm/mmap.c
---- linux_c860_org/mm/mmap.c 2003-06-18 16:12:29.000000000 +0900
-+++ linux/mm/mmap.c 2004-06-10 21:09:11.000000000 +0900
-@@ -578,7 +578,7 @@
- fput(file);
-
- /* Undo any partial mapping done by a device driver. */
-- zap_page_range(mm, vma->vm_start, vma->vm_end - vma->vm_start);
-+ zap_page_range(mm, vma->vm_start, vma->vm_end - vma->vm_start, ZPR_NORMAL);
- free_vma:
- kmem_cache_free(vm_area_cachep, vma);
- return error;
-@@ -978,7 +978,7 @@
- remove_shared_vm_struct(mpnt);
- mm->map_count--;
-
-- zap_page_range(mm, st, size);
-+ zap_page_range(mm, st, size, ZPR_PARTITION);
-
- /*
- * Fix the mapping, and free the old area if it wasn't reused.
-@@ -1025,6 +1025,9 @@
- if (!len)
- return addr;
-
-+ if ((addr + len) > TASK_SIZE || (addr + len) < addr)
-+ return -EINVAL;
-+
- /*
- * mlock MCL_FUTURE?
- */
-diff -Nur linux_c860_org/mm/mremap.c linux/mm/mremap.c
---- linux_c860_org/mm/mremap.c 2002-08-26 14:37:43.000000000 +0900
-+++ linux/mm/mremap.c 2004-06-10 21:09:11.000000000 +0900
-@@ -118,7 +118,7 @@
- flush_cache_range(mm, new_addr, new_addr + len);
- while ((offset += PAGE_SIZE) < len)
- move_one_page(mm, new_addr + offset, old_addr + offset);
-- zap_page_range(mm, new_addr, len);
-+ zap_page_range(mm, new_addr, len, ZPR_NORMAL);
- return -1;
- }
-
-@@ -236,6 +236,13 @@
-
- if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len)
- goto out;
-+ /*
-+ * Allow new_len == 0 only if new_addr == addr
-+ * to preserve truncation in place (that was working
-+ * safe and some app may depend on it).
-+ */
-+ if (unlikely(!new_len && new_addr != addr))
-+ goto out;
-
- /* Check if the location we're moving into overlaps the
- * old location at all, and fail if it does.
-@@ -246,16 +253,20 @@
- if ((addr <= new_addr) && (addr+old_len) > new_addr)
- goto out;
-
-- do_munmap(current->mm, new_addr, new_len);
-+ ret = do_munmap(current->mm, new_addr, new_len);
-+ if (ret && new_len)
-+ goto out;
- }
-
- /*
- * Always allow a shrinking remap: that just unmaps
- * the unnecessary pages..
- */
-- ret = addr;
- if (old_len >= new_len) {
-- do_munmap(current->mm, addr+new_len, old_len - new_len);
-+ ret = do_munmap(current->mm, addr+new_len, old_len - new_len);
-+ if (ret && old_len != new_len)
-+ goto out;
-+ ret = addr;
- if (!(flags & MREMAP_FIXED) || (new_addr == addr))
- goto out;
- }
-diff -Nur linux_c860_org/mm/oom_kill.c linux/mm/oom_kill.c
---- linux_c860_org/mm/oom_kill.c 2003-06-18 16:12:29.000000000 +0900
-+++ linux/mm/oom_kill.c 2004-06-10 21:09:11.000000000 +0900
-@@ -20,6 +20,7 @@
- * 16-Jan-2003 SHARP add VM switch
- * 24-Feb-2003 SHARP modify check out of memory function
- * 18-Apr-2003 Sharp modify threshold
-+ * 05-Aug-2003 SHARP for Tosa
- */
-
- #include <linux/mm.h>
-@@ -237,7 +238,7 @@
-
- #if defined(CONFIG_ARCH_SHARP_SL)
- #define MIN_KILL_INTERVAL (60*HZ)
--#if defined(CONFIG_ARCH_PXA_SHEPHERD)
-+#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined (CONFIG_ARCH_PXA_TOSA)
- #define OOM_KILL_PG_CACHE_SIZE (1280) /* 5MB */
- #define MIN_SIGNAL_PG_CACHE_SIZE (1536) /* 6MB */
- #define LOW_SIGNAL_PG_CACHE_SIZE (2048) /* 8MB */
-diff -Nur linux_c860_org/mm/slab.c linux/mm/slab.c
---- linux_c860_org/mm/slab.c 2002-11-22 21:03:26.000000000 +0900
-+++ linux/mm/slab.c 2004-06-10 21:09:11.000000000 +0900
-@@ -49,7 +49,8 @@
- * constructors and destructors are called without any locking.
- * Several members in kmem_cache_t and slab_t never change, they
- * are accessed without any locking.
-- * The per-cpu arrays are never accessed from the wrong cpu, no locking.
-+ * The per-cpu arrays are never accessed from the wrong cpu, no locking,
-+ * and local interrupts are disabled so slab code is preempt-safe.
- * The non-constant members are protected with a per-cache irq spinlock.
- *
- * Further notes from the original documentation:
-diff -Nur linux_c860_org/mm/swapfile.c linux/mm/swapfile.c
---- linux_c860_org/mm/swapfile.c 2002-08-26 14:37:43.000000000 +0900
-+++ linux/mm/swapfile.c 2004-06-10 21:09:11.000000000 +0900
-@@ -696,6 +696,7 @@
- * interactive performance. Interruptible check on
- * signal_pending() would be nice, but changes the spec?
- */
-+ debug_lock_break(551);
- if (current->need_resched)
- schedule();
- }
-@@ -1124,6 +1125,13 @@
- if (swap_info[i].flags != SWP_USED)
- continue;
- for (j = 0; j < swap_info[i].max; ++j) {
-+ if (conditional_schedule_needed()) {
-+ debug_lock_break(551);
-+ swap_list_unlock();
-+ debug_lock_break(551);
-+ unconditional_schedule();
-+ swap_list_lock();
-+ }
- switch (swap_info[i].swap_map[j]) {
- case 0:
- case SWAP_MAP_BAD:
-diff -Nur linux_c860_org/mm/vmscan.c linux/mm/vmscan.c
---- linux_c860_org/mm/vmscan.c 2003-01-30 18:59:16.000000000 +0900
-+++ linux/mm/vmscan.c 2004-06-10 21:09:11.000000000 +0900
-@@ -170,6 +170,8 @@
- pte_t * pte;
- unsigned long pmd_end;
-
-+ DEFINE_LOCK_COUNT();
-+
- if (pmd_none(*dir))
- return count;
- if (pmd_bad(*dir)) {
-@@ -194,6 +196,14 @@
- address += PAGE_SIZE;
- break;
- }
-+ /* we reach this with a lock depth of 1 or 2 */
-+#if 0
-+ if (TEST_LOCK_COUNT(4)) {
-+ if (conditional_schedule_needed())
-+ return count;
-+ RESET_LOCK_COUNT();
-+ }
-+#endif
- }
- }
- address += PAGE_SIZE;
-@@ -227,6 +237,9 @@
- count = swap_out_pmd(mm, vma, pmd, address, end, count, classzone);
- if (!count)
- break;
-+ /* lock depth can be 1 or 2 */
-+ if (conditional_schedule_needed())
-+ return count;
- address = (address + PMD_SIZE) & PMD_MASK;
- pmd++;
- } while (address && (address < end));
-@@ -252,6 +265,9 @@
- count = swap_out_pgd(mm, vma, pgdir, address, end, count, classzone);
- if (!count)
- break;
-+ /* lock depth can be 1 or 2 */
-+ if (conditional_schedule_needed())
-+ return count;
- address = (address + PGDIR_SIZE) & PGDIR_MASK;
- pgdir++;
- } while (address && (address < end));
-@@ -274,6 +290,8 @@
- * and ptes.
- */
- spin_lock(&mm->page_table_lock);
-+
-+continue_scan:
- address = mm->swap_address;
- if (address == TASK_SIZE || swap_mm != mm) {
- /* We raced: don't count this mm but try again */
-@@ -290,6 +308,13 @@
- vma = vma->vm_next;
- if (!vma)
- break;
-+ /* we reach this with a lock depth of 1 and 2 */
-+#if 0
-+ if (conditional_schedule_needed()) {
-+ break_spin_lock(&mm->page_table_lock);
-+ goto continue_scan;
-+ }
-+#endif
- if (!count)
- goto out_unlock;
- address = vma->vm_start;
-@@ -311,6 +336,7 @@
-
- counter = mmlist_nr;
- do {
-+ /* lock depth can be 0 or 1 */
- if (unlikely(current->need_resched)) {
- __set_current_state(TASK_RUNNING);
- schedule();
-@@ -356,6 +382,7 @@
- while (--max_scan >= 0 && (entry = inactive_list.prev) != &inactive_list) {
- struct page * page;
-
-+ /* lock depth is 1 or 2 */
- if (unlikely(current->need_resched)) {
- spin_unlock(&pagemap_lru_lock);
- __set_current_state(TASK_RUNNING);
-@@ -673,8 +700,11 @@
-
- for (i = pgdat->nr_zones-1; i >= 0; i--) {
- zone = pgdat->node_zones + i;
-+ debug_lock_break(0);
-+#ifndef CONFIG_PREEMPT
- if (unlikely(current->need_resched))
- schedule();
-+#endif
- if (!zone->need_balance)
- continue;
- if (!try_to_free_pages(zone, GFP_KSWAPD, 0)) {
-diff -Nur linux_c860_org/net/core/dev.c linux/net/core/dev.c
---- linux_c860_org/net/core/dev.c 2002-08-26 14:42:28.000000000 +0900
-+++ linux/net/core/dev.c 2004-06-10 21:09:11.000000000 +0900
-@@ -1033,9 +1033,15 @@
- int cpu = smp_processor_id();
-
- if (dev->xmit_lock_owner != cpu) {
-+ /*
-+ * The spin_lock effectivly does a preempt lock, but
-+ * we are about to drop that...
-+ */
-+ preempt_disable();
- spin_unlock(&dev->queue_lock);
- spin_lock(&dev->xmit_lock);
- dev->xmit_lock_owner = cpu;
-+ preempt_enable();
-
- if (!netif_queue_stopped(dev)) {
- if (netdev_nit)
-diff -Nur linux_c860_org/net/core/skbuff.c linux/net/core/skbuff.c
---- linux_c860_org/net/core/skbuff.c 2002-08-26 14:42:28.000000000 +0900
-+++ linux/net/core/skbuff.c 2004-06-10 21:09:11.000000000 +0900
-@@ -111,33 +111,37 @@
-
- static __inline__ struct sk_buff *skb_head_from_pool(void)
- {
-- struct sk_buff_head *list = &skb_head_pool[smp_processor_id()].list;
-+ struct sk_buff_head *list;
-+ struct sk_buff *skb = NULL;
-+ unsigned long flags;
-
-- if (skb_queue_len(list)) {
-- struct sk_buff *skb;
-- unsigned long flags;
-+ local_irq_save(flags);
-
-- local_irq_save(flags);
-+ list = &skb_head_pool[smp_processor_id()].list;
-+
-+ if (skb_queue_len(list))
- skb = __skb_dequeue(list);
-- local_irq_restore(flags);
-- return skb;
-- }
-- return NULL;
-+
-+ local_irq_restore(flags);
-+ return skb;
- }
-
- static __inline__ void skb_head_to_pool(struct sk_buff *skb)
- {
-- struct sk_buff_head *list = &skb_head_pool[smp_processor_id()].list;
-+ struct sk_buff_head *list;
-+ unsigned long flags;
-
-- if (skb_queue_len(list) < sysctl_hot_list_len) {
-- unsigned long flags;
-+ local_irq_save(flags);
-+ list = &skb_head_pool[smp_processor_id()].list;
-
-- local_irq_save(flags);
-+ if (skb_queue_len(list) < sysctl_hot_list_len) {
- __skb_queue_head(list, skb);
- local_irq_restore(flags);
-
- return;
- }
-+
-+ local_irq_restore(flags);
- kmem_cache_free(skbuff_head_cache, skb);
- }
-
-diff -Nur linux_c860_org/net/irda/irlmp.c linux/net/irda/irlmp.c
---- linux_c860_org/net/irda/irlmp.c 2003-01-10 15:02:41.000000000 +0900
-+++ linux/net/irda/irlmp.c 2004-06-10 21:09:11.000000000 +0900
-@@ -24,6 +24,8 @@
- *
- * ChangeLog:
- * 11-20-2002 SHARP apply patch (fix small bugs in /proc)
-+ * 1-Nov-2003 Sharp Corporation for Tosa
-+ *
- ********************************************************************/
-
- #include <linux/config.h>
-@@ -769,6 +771,14 @@
- nslots = sysctl_discovery_slots = 8;
- }
-
-+#if defined(CONFIG_ARCH_SHARP_SL)
-+ /*
-+ * Clear the passive discovery retry flag.
-+ * modified by SHARP
-+ */
-+ irlmp->discovery_retry = FALSE;
-+#endif
-+
- /* Construct new discovery info to be used by IrLAP, */
- irlmp->discovery_cmd.hints.word = irlmp->hints.word;
-
-diff -Nur linux_c860_org/net/irda/irlmp_event.c linux/net/irda/irlmp_event.c
---- linux_c860_org/net/irda/irlmp_event.c 2002-08-29 12:25:13.000000000 +0900
-+++ linux/net/irda/irlmp_event.c 2004-06-10 21:09:11.000000000 +0900
-@@ -22,6 +22,9 @@
- * provide warranty for any of this software. This material is
- * provided "AS-IS" and at no charge.
- *
-+ * ChangeLog:
-+ * 1-Nov-2003 Sharp Corporation for Tosa
-+ *
- ********************************************************************/
-
- #include <linux/config.h>
-@@ -178,6 +181,16 @@
- /* Active discovery is conditional */
- if (sysctl_discovery)
- irlmp_do_discovery(sysctl_discovery_slots);
-+#if defined(CONFIG_ARCH_SHARP_SL)
-+ else if (( irlmp != NULL )&&( irlmp->discovery_retry )){
-+ /*
-+ * Retry discovery at passive mode, if it hasn't been done
-+ * because of the media busy.
-+ * modified by SHARP
-+ */
-+ irlmp_do_discovery(sysctl_discovery_slots);
-+ }
-+#endif
-
- /* Restart timer */
- irlmp_start_discovery_timer(irlmp, sysctl_discovery_timeout * HZ);
-diff -Nur linux_c860_org/net/irda/irlmp_frame.c linux/net/irda/irlmp_frame.c
---- linux_c860_org/net/irda/irlmp_frame.c 2002-08-29 12:25:13.000000000 +0900
-+++ linux/net/irda/irlmp_frame.c 2004-06-10 21:09:11.000000000 +0900
-@@ -22,6 +22,9 @@
- * provide warranty for any of this software. This material is
- * provided "AS-IS" and at no charge.
- *
-+ * ChangeLog:
-+ * 1-Nov-2003 Sharp Corporation for Tosa
-+ *
- ********************************************************************/
-
- #include <linux/config.h>
-@@ -397,6 +400,16 @@
- ASSERT(self->magic == LMP_LAP_MAGIC, return;);
-
- irlmp_add_discovery_log(irlmp->cachelog, log);
-+#if defined(CONFIG_ARCH_SHARP_SL)
-+ /*
-+ * Retry discovery at passive mode, if it hasn't been done
-+ * because of the media busy.
-+ * modified by SHARP
-+ */
-+ if(( log == NULL )&&( irlmp != NULL )){
-+ irlmp->discovery_retry = TRUE;
-+ }
-+#endif
-
- /* Propagate event to various LSAPs registered for it.
- * We bypass the LM_LAP state machine because
-diff -Nur linux_c860_org/net/socket.c linux/net/socket.c
---- linux_c860_org/net/socket.c 2002-08-29 12:25:05.000000000 +0900
-+++ linux/net/socket.c 2004-06-10 21:09:11.000000000 +0900
-@@ -140,7 +140,7 @@
-
- static struct net_proto_family *net_families[NPROTO];
-
--#ifdef CONFIG_SMP
-+#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT)
- static atomic_t net_family_lockct = ATOMIC_INIT(0);
- static spinlock_t net_family_lock = SPIN_LOCK_UNLOCKED;
-
-diff -Nur linux_c860_org/net/sunrpc/pmap_clnt.c linux/net/sunrpc/pmap_clnt.c
---- linux_c860_org/net/sunrpc/pmap_clnt.c 2002-08-26 14:38:06.000000000 +0900
-+++ linux/net/sunrpc/pmap_clnt.c 2004-06-10 21:09:11.000000000 +0900
-@@ -12,6 +12,7 @@
- #include <linux/config.h>
- #include <linux/types.h>
- #include <linux/socket.h>
-+#include <linux/sched.h>
- #include <linux/kernel.h>
- #include <linux/errno.h>
- #include <linux/uio.h>
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/sharpsl_battery.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/sharpsl_battery.patch
deleted file mode 100644
index fafdf32e55..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/sharpsl_battery.patch
+++ /dev/null
@@ -1,346 +0,0 @@
---- linux-orig/arch/arm/mach-pxa/sharpsl_battery.c 2004-02-18 23:41:57.000000000 +0300
-+++ linux/arch/arm/mach-pxa/sharpsl_battery.c 2004-02-24 06:21:56.000000000 +0300
-@@ -197,7 +197,7 @@
- #define SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT 1 // 10msec
- #define SHARPSL_CHECK_BATTERY_WAIT_TIME_JKVAD 1 // 10msec
- #define SHARPSL_CORGI_FATAL_ACIN_VOLT 182 // 3.45V
--#define SHARPSL_CORGI_FATAL_NOACIN_VOLT 179 // 3.40V
-+#define SHARPSL_CORGI_FATAL_NOACIN_VOLT 170 // 3.40V
- #define SHARPSL_CORGI_WAIT_CO_TIME 15 // 15 Sec
- //NOTICE !! you want to change this value , so you must change
- // alarm check mirgin time ( +30 ) in the sharpsl_power.c.
-@@ -245,10 +245,17 @@
- BATTERY_THRESH *GetMainLevel( int Volt );
- int sharpsl_get_main_battery(void);
- int suspend_sharpsl_read_Voltage(void);
-+int GetMainPercent(int);
- int GetMainChargePercent(int);
- int Get_DAC_Value(int);
- int sharpsl_check_battery(int mode);
-
-+// remove warnings
-+static int sharpsl_battery_thread_main(void);
-+int handle_scancode(int, int);
-+int sharpsl_ac_check(void);
-+void sharpsl_charge_err_off(void);
-+
- /*** extern ***********************************************************************/
- extern u32 apm_wakeup_src_mask;
- #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
-@@ -269,7 +276,6 @@
-
- /*** variables ********************************************************************/
-
--
- #if defined(CONFIG_ARCH_PXA_POODLE)
-
- BATTERY_THRESH sharpsl_main_battery_thresh_fl[] = {
-@@ -293,20 +299,26 @@
- #elif defined(CONFIG_ARCH_PXA_CORGI)
-
- BATTERY_THRESH sharpsl_main_battery_thresh_fl[] = {
-- { 194, 100, SHARPSL_BATTERY_STATUS_HIGH},
-- { 188, 75, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 999, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 210, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 194, 90, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 188, 70, SHARPSL_BATTERY_STATUS_HIGH},
- { 184, 50, SHARPSL_BATTERY_STATUS_HIGH},
- { 180, 25, SHARPSL_BATTERY_STATUS_LOW},
-- { 171, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
-+ { 174, 10, SHARPSL_BATTERY_STATUS_LOW},
-+ { 170, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
- { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL},
- };
-
- BATTERY_THRESH sharpsl_main_battery_thresh_nofl[] = {
-- { 194, 100, SHARPSL_BATTERY_STATUS_HIGH},
-- { 188, 75, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 999, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 210, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 194, 90, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 188, 70, SHARPSL_BATTERY_STATUS_HIGH},
- { 184, 50, SHARPSL_BATTERY_STATUS_HIGH},
- { 180, 25, SHARPSL_BATTERY_STATUS_LOW},
-- { 171, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
-+ { 174, 10, SHARPSL_BATTERY_STATUS_LOW},
-+ { 170, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
- { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL},
- };
- #endif
-@@ -332,25 +344,36 @@
- #elif defined(CONFIG_ARCH_PXA_CORGI)
-
- BATTERY_THRESH sharpsl_main_battery_thresh_charge_fl[] = {
-- { 200, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 999, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 210, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 200, 95, SHARPSL_BATTERY_STATUS_HIGH},
- { 196, 75, SHARPSL_BATTERY_STATUS_HIGH},
- { 192, 50, SHARPSL_BATTERY_STATUS_HIGH},
- { 187, 25, SHARPSL_BATTERY_STATUS_LOW},
-- { 171, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
-+ { 182, 10, SHARPSL_BATTERY_STATUS_LOW},
-+ { 170, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
- { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL},
- };
-
- BATTERY_THRESH sharpsl_main_battery_thresh_charge_nofl[] = {
-- { 200, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 999, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 210, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 200, 95, SHARPSL_BATTERY_STATUS_HIGH},
- { 196, 75, SHARPSL_BATTERY_STATUS_HIGH},
- { 192, 50, SHARPSL_BATTERY_STATUS_HIGH},
- { 187, 25, SHARPSL_BATTERY_STATUS_LOW},
-- { 171, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
-+ { 182, 10, SHARPSL_BATTERY_STATUS_LOW},
-+ { 170, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
- { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL},
- };
-
- #endif
-
-+//#if defined(CONFIG_ARCH_PXA_CORGI)
-+#define MAIN_BATTERY_THRES (sizeof(sharpsl_main_battery_thresh_charge_nofl) / sizeof(BATTERY_THRESH) - 1)
-+//#endif
-+
-+
- #if 1
- static struct file_operations sharpsl_battery_fops = {
- };
-@@ -389,6 +412,8 @@
- int sharpsl_main_battery = SHARPSL_BATTERY_STATUS_HIGH;
- int sharpsl_main_battery_percentage = 100;
- int sharpsl_main_charge_battery = 100;
-+int sharpsl_main_battery_voltage = 200;
-+
- int sharpsl_ac_status = APM_AC_OFFLINE;
-
- static int MainCntWk = SHARPSL_MAIN_GOOD_COUNT;
-@@ -498,7 +523,7 @@
- // 2 : check battery w/ refresh battery status.
- void sharpsl_kick_battery_check(int before_waitms,int after_waitms,int flag)
- {
-- int start;
-+ //int start;
-
-
- MainCntWk = MainCnt + 1;
-@@ -604,6 +629,7 @@
- }
- #endif
-
-+ return 0;
- }
-
-
-@@ -920,13 +946,17 @@
- #endif
-
- voltage = sharpsl_cnv_value(voltage);
--
-+ sharpsl_main_battery_voltage = voltage;
-+
- thresh = GetMainLevel(voltage);
-
-+ sharpsl_main_battery = thresh->status;
-+ sharpsl_main_battery_percentage = GetMainPercent(voltage);
-+ sharpsl_main_charge_battery = GetMainChargePercent(voltage);
-+
- // if battery is low , backlight driver become to save power.
- if ( ( ( thresh->status == SHARPSL_BATTERY_STATUS_VERYLOW ) ||
-- ( thresh->status == SHARPSL_BATTERY_STATUS_CRITICAL ) ||
-- ( thresh->status == SHARPSL_BATTERY_STATUS_LOW ) ) &&
-+ ( thresh->status == SHARPSL_BATTERY_STATUS_CRITICAL )) &&
- ( !sharpsl_main_bk_flag ) ) {
- SHARPSL_LIMIT_CONTRAST(SHARPSL_CAUTION_CONTRAST);
- }
-@@ -934,11 +964,7 @@
- if ( sharpsl_main_bk_flag == 0 ) {
- return sharpsl_main_battery;
- }
-- sharpsl_main_battery = thresh->status;
-- sharpsl_main_battery_percentage = thresh->percentage;
-- sharpsl_main_charge_battery = GetMainChargePercent(voltage);
--
-- //printk("bat : main battery = %d\n",sharpsl_main_battery);
-+
-
- if ( sharpsl_debug_flag != 0 ) {
- int i;
-@@ -946,7 +972,8 @@
- sharpsl_main_battery = sharpsl_debug_flag;
- for (i = 0; sharpsl_main_battery_thresh_nofl[i].voltage > 0; i++) {
- if ( sharpsl_debug_flag == sharpsl_main_battery_thresh_nofl[i].status ) {
-- sharpsl_main_battery_percentage = sharpsl_main_battery_thresh_nofl[i].percentage;
-+ //sharpsl_main_battery_percentage = sharpsl_main_battery_thresh_nofl[i].percentage;
-+ sharpsl_main_battery_percentage = GetMainPercent(voltage);
- break;
- }
- }
-@@ -965,7 +992,7 @@
- sharpsl_main_battery_percentage = sharpsl_main_percent_bk;
- }
-
-- DPRINTK2("charge percent = %d ( at %d ) \n",sharpsl_main_charge_battery,(int)jiffies);
-+ //DPRINTK2("charge percent = %d ( at %d ) \n",sharpsl_main_charge_battery,(int)jiffies);
- DPRINTK(" get Main battery status %d\n",sharpsl_main_battery);
-
- } else {
-@@ -975,40 +1002,79 @@
- return sharpsl_main_battery;
- }
-
--int GetMainChargePercent( int Volt )
-+int GetLevelIndex(BATTERY_THRESH *thresh, int Volt)
-+{
-+ int i = MAIN_BATTERY_THRES;
-+
-+ DPRINTK("volt = %d \n", Volt);
-+ while (i > 0 && (Volt > thresh[i].voltage))
-+ i--;
-+
-+ return i;
-+}
-+
-+int GetPercent(BATTERY_THRESH *thresh, int Volt)
-+{
-+ int i = GetLevelIndex(thresh, Volt);
-+
-+ /* i is now between 0 and MAIN_BATTERY_THRES. That means
-+ * we can safely access main_batt_thres[i] and
-+ * main_batt_thres[i+1] */
-+
-+ {
-+// long percentage = thresh[i].percentage;
-+
-+ long deltav = thresh[i].voltage - thresh[i + 1].voltage;
-+ long deltap = thresh[i].percentage - thresh[i + 1].percentage;
-+
-+ long percentage =
-+ thresh[i + 1].percentage +
-+ deltap * (Volt - thresh[i + 1].voltage) /
-+ deltav;
-+
-+ DPRINTK("percentage = %d \n", percentage);
-+ return percentage;
-+ }
-+
-+ return thresh[i].percentage;
-+}
-+
-+int GetMainPercent( int Volt )
- {
-- int i;
- BATTERY_THRESH *thresh;
-
-- DPRINTK(" volt = %d \n",Volt);
-+ if (counter_step_contrast)
-+ thresh = sharpsl_main_battery_thresh_fl;
-+ else
-+ thresh = sharpsl_main_battery_thresh_nofl;
-+
-+ return GetPercent(thresh, Volt);
-+}
-+
-+int GetMainChargePercent( int Volt )
-+{
-+ BATTERY_THRESH *thresh;
-
- if (counter_step_contrast)
-- thresh = sharpsl_main_battery_thresh_charge_fl;
-+ thresh = sharpsl_main_battery_thresh_charge_fl;
- else
-- thresh = sharpsl_main_battery_thresh_charge_nofl;
-- for (i = 0; thresh[i].voltage > 0; i++) {
-- if (Volt >= thresh[i].voltage)
-- return thresh[i].percentage;
-- }
-- return thresh[i].percentage;
-+ thresh = sharpsl_main_battery_thresh_charge_nofl;
-+
-+ return GetPercent(thresh, Volt);
- }
-
- BATTERY_THRESH *GetMainLevel( int Volt )
- {
-- int i;
- BATTERY_THRESH *thresh;
-
- DPRINTK(" volt = %d \n",Volt);
-
- if (counter_step_contrast)
-- thresh = sharpsl_main_battery_thresh_fl;
-+ thresh = sharpsl_main_battery_thresh_fl;
- else
-- thresh = sharpsl_main_battery_thresh_nofl;
-- for (i = 0; thresh[i].voltage > 0; i++) {
-- if (Volt >= thresh[i].voltage)
-- return &thresh[i];
-- }
-- return &thresh[i];
-+ thresh = sharpsl_main_battery_thresh_nofl;
-+
-+ return &thresh[GetLevelIndex(thresh, Volt)];
- }
-
-
-@@ -1018,7 +1084,7 @@
- int Get_DAC_Value(int channel)
- {
- unsigned long cmd;
-- unsigned int dummy;
-+ unsigned int dummy;
- int voltage;
-
- #if defined(CONFIG_ARCH_PXA_POODLE)
-@@ -1263,7 +1329,7 @@
- // 0: OK
- int sharpsl_ac_check(void)
- {
-- int temp, i, volt;
-+ int temp, i; //, volt;
- int buff[5];
-
- if ( in_interrupt() ) {
-@@ -1835,14 +1901,18 @@
- int def_value;
- char* name;
- char* description;
-+ char readonly;
- unsigned short low_ino;
- } sharpsl_battery_entry_t;
-
- static sharpsl_battery_entry_t sharpsl_battery_params[] = {
- /* { addr, def_value, name, description }*/
-- { &msglevel, 0, "msglevel", "debug message output level" },
-- { &sharpsl_debug_flag , 0 , "dflag", "debug flag" },
-- { &sharpsl_change_battery_status , 0 , "chg_status", "Change status" }
-+ { &msglevel, 0, "msglevel", "debug message output level", 0 },
-+ { &sharpsl_debug_flag , 0 , "dflag", "debug flag", 0 },
-+ { &sharpsl_change_battery_status , 0 , "chg_status", "Change status", 1 },
-+ { &sharpsl_main_battery_percentage , 0 , "charge_percentage", "Charge percentage", 1 },
-+ { &sharpsl_main_battery_voltage , 0 , "main_voltage", "Main voltage", 1 }, // alias
-+ { &sharpsl_main_battery_voltage , 0 , "charge_voltage", "Charge voltage", 1 }
- };
- #define NUM_OF_BATTERY_ENTRY (sizeof(sharpsl_battery_params)/sizeof(sharpsl_battery_entry_t))
-
-@@ -1866,7 +1936,7 @@
- if (current_param==NULL) {
- return -EINVAL;
- }
-- count = sprintf(outputbuf, "0x%08X\n",
-+ count = sprintf(outputbuf, "%04i\n",
- *((volatile Word *) current_param->addr));
- *ppos += count;
- if (count>nbytes) /* Assume output can be read at one time */
-@@ -1891,7 +1961,7 @@
- break;
- }
- }
-- if (current_param==NULL) {
-+ if (current_param==NULL || current_param->readonly) {
- return -EINVAL;
- }
-
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/smallfonts.diff b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/smallfonts.diff
deleted file mode 100644
index bcf3734f63..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/smallfonts.diff
+++ /dev/null
@@ -1,2453 +0,0 @@
-diff -Nur linux-2.4.1-pre12/drivers/video/font_4x6.c linux-2.4.1-pre12.smallfonts/drivers/video/font_4x6.c
---- linux-2.4.1-pre12/drivers/video/font_4x6.c Wed Dec 31 17:00:00 1969
-+++ linux-2.4.1-pre12.smallfonts/drivers/video/font_4x6.c Tue Jan 30 14:17:15 2001
-@@ -0,0 +1,1059 @@
-+/* Font file generated by Jay Carlson from clR4x6.bdf */
-+
-+/*
-+COMMENT Copyright 1989 Dale Schumacher, dal@syntel.mn.org
-+COMMENT 399 Beacon Ave.
-+COMMENT St. Paul, MN 55104-3527
-+COMMENT
-+COMMENT Permission to use, copy, modify, and distribute this software and
-+COMMENT its documentation for any purpose and without fee is hereby
-+COMMENT granted, provided that the above copyright notice appear in all
-+COMMENT copies and that both that copyright notice and this permission
-+COMMENT notice appear in supporting documentation, and that the name of
-+COMMENT Dale Schumacher not be used in advertising or publicity pertaining to
-+COMMENT distribution of the software without specific, written prior
-+COMMENT permission. Dale Schumacher makes no representations about the
-+COMMENT suitability of this software for any purpose. It is provided "as
-+COMMENT is" without express or implied warranty.
-+*/
-+
-+#include <video/font.h>
-+
-+#define FONTDATAMAX (6 * 256)
-+
-+static unsigned char fontdata_4x6[FONTDATAMAX] = {
-+
-+ /* 0 0x00 C000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0xf0, /* 11110000 */
-+
-+ /* 1 0x01 C001 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 2 0x02 C002 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 3 0x03 C003 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 4 0x04 C004 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 5 0x05 C005 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 6 0x06 C006 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 7 0x07 C007 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 8 0x08 C010 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 9 0x09 C011 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 10 0x0a C012 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 11 0x0b C013 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 12 0x0c C014 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 13 0x0d C015 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 14 0x0e C016 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 15 0x0f C017 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 16 0x10 C020 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 17 0x11 C021 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 18 0x12 C022 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 19 0x13 C023 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 20 0x14 C024 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 21 0x15 C025 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 22 0x16 C026 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 23 0x17 C027 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 24 0x18 C030 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 25 0x19 C031 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 26 0x1a C032 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 27 0x1b C033 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 28 0x1c C034 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 29 0x1d C035 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 30 0x1e C036 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 31 0x1f C037 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 32 0x20 C040 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 33 0x21 ! */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 34 0x22 " */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 35 0x23 # */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 36 0x24 $ */
-+ 0xe0, /* 11100000 */
-+ 0xc0, /* 11000000 */
-+ 0xe0, /* 11100000 */
-+ 0x60, /* 01100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 37 0x25 % */
-+ 0xa0, /* 10100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x80, /* 10000000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 38 0x26 & */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 39 0x27 ' */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 40 0x28 ( */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 41 0x29 ) */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 42 0x2a * */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 43 0x2b + */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 44 0x2c , */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 45 0x2d - */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 46 0x2e . */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 47 0x2f / */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 48 0x30 0 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 49 0x31 1 */
-+ 0x40, /* 01000000 */
-+ 0xc0, /* 11000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 50 0x32 2 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 51 0x33 3 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 52 0x34 4 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 53 0x35 5 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 54 0x36 6 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 55 0x37 7 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 56 0x38 8 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 57 0x39 9 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 58 0x3a : */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 59 0x3b ; */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 60 0x3c < */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x80, /* 10000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 61 0x3d = */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 62 0x3e > */
-+ 0x80, /* 10000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 63 0x3f ? */
-+ 0xc0, /* 11000000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 64 0x40 @ */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 65 0x41 A */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 66 0x42 B */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 67 0x43 C */
-+ 0x60, /* 01100000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 68 0x44 D */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 69 0x45 E */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xc0, /* 11000000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 70 0x46 F */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xc0, /* 11000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 71 0x47 G */
-+ 0x60, /* 01100000 */
-+ 0x80, /* 10000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 72 0x48 H */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 73 0x49 I */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 74 0x4a J */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 75 0x4b K */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 76 0x4c L */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 77 0x4d M */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 78 0x4e N */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 79 0x4f O */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 80 0x50 P */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 81 0x51 Q */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 82 0x52 R */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 83 0x53 S */
-+ 0x60, /* 01100000 */
-+ 0x80, /* 10000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 84 0x54 T */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 85 0x55 U */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 86 0x56 V */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 87 0x57 W */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 88 0x58 X */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 89 0x59 Y */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 90 0x5a Z */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 91 0x5b [ */
-+ 0x60, /* 01100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 92 0x5c \ */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 93 0x5d ] */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 94 0x5e ^ */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 95 0x5f _ */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 96 0x60 ` */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 97 0x61 a */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 98 0x62 b */
-+ 0x80, /* 10000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 99 0x63 c */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 100 0x64 d */
-+ 0x20, /* 00100000 */
-+ 0x60, /* 01100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 101 0x65 e */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 102 0x66 f */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 103 0x67 g */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0xc0, /* 11000000 */
-+
-+ /* 104 0x68 h */
-+ 0x80, /* 10000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 105 0x69 i */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 106 0x6a j */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+
-+ /* 107 0x6b k */
-+ 0x80, /* 10000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 108 0x6c l */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 109 0x6d m */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 110 0x6e n */
-+ 0x00, /* 00000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 111 0x6f o */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 112 0x70 p */
-+ 0x00, /* 00000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+
-+ /* 113 0x71 q */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+
-+ /* 114 0x72 r */
-+ 0x00, /* 00000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 115 0x73 s */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0xc0, /* 11000000 */
-+ 0x60, /* 01100000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 116 0x74 t */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 117 0x75 u */
-+ 0x00, /* 00000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 118 0x76 v */
-+ 0x00, /* 00000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 119 0x77 w */
-+ 0x00, /* 00000000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 120 0x78 x */
-+ 0x00, /* 00000000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 121 0x79 y */
-+ 0x00, /* 00000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0xc0, /* 11000000 */
-+
-+ /* 122 0x7a z */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0x60, /* 01100000 */
-+ 0xc0, /* 11000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 123 0x7b { */
-+ 0x60, /* 01100000 */
-+ 0x40, /* 01000000 */
-+ 0xc0, /* 11000000 */
-+ 0x40, /* 01000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 124 0x7c | */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 125 0x7d } */
-+ 0xc0, /* 11000000 */
-+ 0x40, /* 01000000 */
-+ 0x60, /* 01100000 */
-+ 0x40, /* 01000000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 126 0x7e ~ */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 127 0x7f C177 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+};
-+
-+struct fbcon_font_desc font_clean_4x6 = {
-+ CLEAN4x6_IDX,
-+ "Clean4x6",
-+ 4,
-+ 6,
-+ fontdata_4x6,
-+ -1000 /* Try avoiding this font if possible unless screen really small */
-+};
-diff -Nur linux-2.4.1-pre12/drivers/video/font_5x8.c linux-2.4.1-pre12.smallfonts/drivers/video/font_5x8.c
---- linux-2.4.1-pre12/drivers/video/font_5x8.c Wed Dec 31 17:00:00 1969
-+++ linux-2.4.1-pre12.smallfonts/drivers/video/font_5x8.c Tue Jan 30 14:17:16 2001
-@@ -0,0 +1,1314 @@
-+/* Font file generated by Jay Carlson from clR5x8.bdf */
-+
-+/*
-+COMMENT Copyright 1989 Dale Schumacher, dal@syntel.mn.org
-+COMMENT 399 Beacon Ave.
-+COMMENT St. Paul, MN 55104-3527
-+COMMENT
-+COMMENT Permission to use, copy, modify, and distribute this software and
-+COMMENT its documentation for any purpose and without fee is hereby
-+COMMENT granted, provided that the above copyright notice appear in all
-+COMMENT copies and that both that copyright notice and this permission
-+COMMENT notice appear in supporting documentation, and that the name of
-+COMMENT Dale Schumacher not be used in advertising or publicity pertaining to
-+COMMENT distribution of the software without specific, written prior
-+COMMENT permission. Dale Schumacher makes no representations about the
-+COMMENT suitability of this software for any purpose. It is provided "as
-+COMMENT is" without express or implied warranty.
-+*/
-+
-+#include <video/font.h>
-+
-+#define FONTDATAMAX (8 * 256)
-+
-+static unsigned char fontdata_5x8[FONTDATAMAX] = {
-+
-+ /* 0 0x00 C000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 1 0x01 C001 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 2 0x02 C002 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 3 0x03 C003 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 4 0x04 C004 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 5 0x05 C005 */
-+ 0x00, /* 00000000 */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 6 0x06 C006 */
-+ 0x00, /* 00000000 */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 7 0x07 C007 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x40, /* 01000000 */
-+ 0x58, /* 01011000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 8 0x08 C010 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 9 0x09 C011 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 10 0x0a C012 */
-+ 0x00, /* 00000000 */
-+ 0x18, /* 00011000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 11 0x0b C013 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x50, /* 01010000 */
-+ 0x60, /* 01100000 */
-+ 0x50, /* 01010000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 12 0x0c C014 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 13 0x0d C015 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 14 0x0e C016 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x68, /* 01101000 */
-+ 0x58, /* 01011000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 15 0x0f C017 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 16 0x10 C020 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 17 0x11 C021 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x18, /* 00011000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 18 0x12 C022 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x50, /* 01010000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 19 0x13 C023 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x40, /* 01000000 */
-+ 0x30, /* 00110000 */
-+ 0x08, /* 00001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 20 0x14 C024 */
-+ 0x00, /* 00000000 */
-+ 0xf8, /* 11111000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 21 0x15 C025 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 22 0x16 C026 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 23 0x17 C027 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 24 0x18 C030 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 25 0x19 C031 */
-+ 0x00, /* 00000000 */
-+ 0x88, /* 10001000 */
-+ 0x50, /* 01010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 26 0x1a C032 */
-+ 0x00, /* 00000000 */
-+ 0x78, /* 01111000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 27 0x1b C033 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 28 0x1c C034 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 29 0x1d C035 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 30 0x1e C036 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 31 0x1f C037 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 32 0x20 C040 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 33 0x21 ! */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 34 0x22 " */
-+ 0x28, /* 00101000 */
-+ 0x28, /* 00101000 */
-+ 0x28, /* 00101000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 35 0x23 # */
-+ 0x50, /* 01010000 */
-+ 0x50, /* 01010000 */
-+ 0xf8, /* 11111000 */
-+ 0x50, /* 01010000 */
-+ 0xf8, /* 11111000 */
-+ 0x50, /* 01010000 */
-+ 0x50, /* 01010000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 36 0x24 $ */
-+ 0x20, /* 00100000 */
-+ 0x78, /* 01111000 */
-+ 0xa0, /* 10100000 */
-+ 0x70, /* 01110000 */
-+ 0x28, /* 00101000 */
-+ 0xf0, /* 11110000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 37 0x25 % */
-+ 0x60, /* 01100000 */
-+ 0x68, /* 01101000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x58, /* 01011000 */
-+ 0x18, /* 00011000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 38 0x26 & */
-+ 0x30, /* 00110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x28, /* 00101000 */
-+ 0x50, /* 01010000 */
-+ 0x50, /* 01010000 */
-+ 0x28, /* 00101000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 39 0x27 ' */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 40 0x28 ( */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x08, /* 00001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 41 0x29 ) */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 42 0x2a * */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x78, /* 01111000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 43 0x2b + */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0xf8, /* 11111000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 44 0x2c , */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+
-+ /* 45 0x2d - */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xf8, /* 11111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 46 0x2e . */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 47 0x2f / */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+
-+ /* 48 0x30 0 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x58, /* 01011000 */
-+ 0x68, /* 01101000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 49 0x31 1 */
-+ 0x20, /* 00100000 */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 50 0x32 2 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 51 0x33 3 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x08, /* 00001000 */
-+ 0x30, /* 00110000 */
-+ 0x08, /* 00001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 52 0x34 4 */
-+ 0x08, /* 00001000 */
-+ 0x18, /* 00011000 */
-+ 0x18, /* 00011000 */
-+ 0x28, /* 00101000 */
-+ 0x28, /* 00101000 */
-+ 0x78, /* 01111000 */
-+ 0x08, /* 00001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 53 0x35 5 */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 54 0x36 6 */
-+ 0x30, /* 00110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 55 0x37 7 */
-+ 0x78, /* 01111000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 56 0x38 8 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 57 0x39 9 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 58 0x3a : */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 59 0x3b ; */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+
-+ /* 60 0x3c < */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x08, /* 00001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 61 0x3d = */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xf8, /* 11111000 */
-+ 0x00, /* 00000000 */
-+ 0xf8, /* 11111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 62 0x3e > */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 63 0x3f ? */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 64 0x40 @ */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x58, /* 01011000 */
-+ 0x58, /* 01011000 */
-+ 0x40, /* 01000000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 65 0x41 A */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 66 0x42 B */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 67 0x43 C */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 68 0x44 D */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 69 0x45 E */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 70 0x46 F */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 71 0x47 G */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x40, /* 01000000 */
-+ 0x58, /* 01011000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 72 0x48 H */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 73 0x49 I */
-+ 0x70, /* 01110000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 74 0x4a J */
-+ 0x18, /* 00011000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 75 0x4b K */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x50, /* 01010000 */
-+ 0x60, /* 01100000 */
-+ 0x50, /* 01010000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 76 0x4c L */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 77 0x4d M */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 78 0x4e N */
-+ 0x48, /* 01001000 */
-+ 0x68, /* 01101000 */
-+ 0x68, /* 01101000 */
-+ 0x58, /* 01011000 */
-+ 0x58, /* 01011000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 79 0x4f O */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 80 0x50 P */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 81 0x51 Q */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x18, /* 00011000 */
-+
-+ /* 82 0x52 R */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x50, /* 01010000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 83 0x53 S */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x40, /* 01000000 */
-+ 0x30, /* 00110000 */
-+ 0x08, /* 00001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 84 0x54 T */
-+ 0xf8, /* 11111000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 85 0x55 U */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 86 0x56 V */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x30, /* 00110000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 87 0x57 W */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 88 0x58 X */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 89 0x59 Y */
-+ 0x88, /* 10001000 */
-+ 0x88, /* 10001000 */
-+ 0x50, /* 01010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 90 0x5a Z */
-+ 0x78, /* 01111000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 91 0x5b [ */
-+ 0x38, /* 00111000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 92 0x5c \ */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+
-+ /* 93 0x5d ] */
-+ 0x70, /* 01110000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 94 0x5e ^ */
-+ 0x20, /* 00100000 */
-+ 0x50, /* 01010000 */
-+ 0x88, /* 10001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 95 0x5f _ */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xf8, /* 11111000 */
-+
-+ /* 96 0x60 ` */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 97 0x61 a */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x58, /* 01011000 */
-+ 0x28, /* 00101000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 98 0x62 b */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 99 0x63 c */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 100 0x64 d */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x38, /* 00111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 101 0x65 e */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 102 0x66 f */
-+ 0x18, /* 00011000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x70, /* 01110000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 103 0x67 g */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x08, /* 00001000 */
-+ 0x30, /* 00110000 */
-+
-+ /* 104 0x68 h */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 105 0x69 i */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 106 0x6a j */
-+ 0x10, /* 00010000 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x60, /* 01100000 */
-+
-+ /* 107 0x6b k */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x48, /* 01001000 */
-+ 0x50, /* 01010000 */
-+ 0x60, /* 01100000 */
-+ 0x50, /* 01010000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 108 0x6c l */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 109 0x6d m */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xd0, /* 11010000 */
-+ 0xa8, /* 10101000 */
-+ 0xa8, /* 10101000 */
-+ 0xa8, /* 10101000 */
-+ 0x88, /* 10001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 110 0x6e n */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 111 0x6f o */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 112 0x70 p */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+
-+ /* 113 0x71 q */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x08, /* 00001000 */
-+
-+ /* 114 0x72 r */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x58, /* 01011000 */
-+ 0x60, /* 01100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 115 0x73 s */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x40, /* 01000000 */
-+ 0x30, /* 00110000 */
-+ 0x08, /* 00001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 116 0x74 t */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x78, /* 01111000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x18, /* 00011000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 117 0x75 u */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 118 0x76 v */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 119 0x77 w */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x88, /* 10001000 */
-+ 0xa8, /* 10101000 */
-+ 0xa8, /* 10101000 */
-+ 0xa8, /* 10101000 */
-+ 0x50, /* 01010000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 120 0x78 x */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 121 0x79 y */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x08, /* 00001000 */
-+ 0x30, /* 00110000 */
-+
-+ /* 122 0x7a z */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x78, /* 01111000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 123 0x7b { */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x08, /* 00001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 124 0x7c | */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 125 0x7d } */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 126 0x7e ~ */
-+ 0x28, /* 00101000 */
-+ 0x50, /* 01010000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 127 0x7f C177 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x50, /* 01010000 */
-+ 0x50, /* 01010000 */
-+ 0x88, /* 10001000 */
-+ 0xf8, /* 11111000 */
-+ 0x00, /* 00000000 */
-+};
-+
-+struct fbcon_font_desc font_clean_5x8 = {
-+ CLEAN5x8_IDX,
-+ "Clean5x8",
-+ 5,
-+ 8,
-+ fontdata_5x8,
-+ -1000 /* Try avoiding this font if possible unless screen really small */
-+};
---- Makefile.~1~ 2002-02-26 05:38:07 +10:00
-+++ linux/drivers/video/Makefile 2004-08-31 18:04:15 +10:00
-@@ -33,6 +33,8 @@
- obj-$(CONFIG_FONT_6x11) += font_6x11.o
- obj-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o
- obj-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o
-+obj-$(CONFIG_FONT_5x8) += font_5x8.o
-+obj-$(CONFIG_FONT_4x6) += font_4x6.o
-
- # Add fbmon.o back into obj-$(CONFIG_FB) in 2.5.x
- obj-$(CONFIG_FB) += fbmem.o fbcmap.o modedb.o fbcon.o fonts.o
---- Config.in.~1~ 2002-02-26 05:38:07 +10:00
-+++ linux/drivers/video/Config.in 2004-08-31 18:03:46 +10:00
-@@ -424,6 +424,8 @@
- bool ' VGA 8x16 font' CONFIG_FONT_8x16
- if [ "$CONFIG_FBCON_FONTWIDTH8_ONLY" = "n" ]; then
- bool ' Mac console 6x11 font (not supported by all drivers)' CONFIG_FONT_6x11
-+ bool ' X11 Clean 5x8 font (not supported by all drivers)' CONFIG_FONT_5x8
-+ bool ' X11 Clean 4x6 font (not supported by all drivers)' CONFIG_FONT_4x6
- fi
- bool ' Pearl (old m68k) console 8x8 font' CONFIG_FONT_PEARL_8x8
- bool ' Acorn console 8x8 font' CONFIG_FONT_ACORN_8x8
-@@ -437,6 +439,8 @@
- if [ "$CONFIG_FBCON_FONTWIDTH8_ONLY" = "n" ]; then
- bool ' Sparc console 12x22 font (not supported by all drivers)' CONFIG_FONT_SUN12x22
- bool ' Mac console 6x11 font (not supported by all drivers)' CONFIG_FONT_6x11
-+ bool ' X11 Clean 5x8 font (not supported by all drivers)' CONFIG_FONT_5x8
-+ bool ' X11 Clean 4x6 font (not supported by all drivers)' CONFIG_FONT_4x6
- fi
- bool ' Pearl (old m68k) console 8x8 font' CONFIG_FONT_PEARL_8x8
- bool ' Acorn console 8x8 font' CONFIG_FONT_ACORN_8x8
---- fonts.c.~1~ 2001-03-03 12:38:39 +10:00
-+++ linux/drivers/video/fonts.c 2004-08-31 18:08:22 +10:00
-@@ -56,6 +56,16 @@
- #undef NO_FONTS
- &font_pearl_8x8,
- #endif
-+#ifdef CONFIG_FONT_5x8
-+#if defined(CONFIG_FBCON_MAC) /* XXX fixme, need better test */
-+#undef NO_FONTS
-+#endif
-+ &font_clean_5x8,
-+#endif
-+#ifdef CONFIG_FONT_4x6
-+#undef NO_FONTS
-+ &font_clean_4x6,
-+#endif
- };
-
- #define num_fonts (sizeof(fbcon_fonts)/sizeof(*fbcon_fonts))
---- font.h.~1~ 1999-01-20 04:47:48 +10:00
-+++ linux/include/video/font.h 2004-08-31 18:10:39 +10:00
-@@ -28,6 +28,8 @@
- #define SUN8x16_IDX 4
- #define SUN12x22_IDX 5
- #define ACORN8x8_IDX 6
-+#define CLEAN5x8_IDX 7
-+#define CLEAN4x6_IDX 8
-
- extern struct fbcon_font_desc font_vga_8x8,
- font_vga_8x16,
-@@ -35,7 +37,9 @@
- font_vga_6x11,
- font_sun_8x16,
- font_sun_12x22,
-- font_acorn_8x8;
-+ font_acorn_8x8,
-+ font_clean_5x8,
-+ font_clean_4x6;
-
- /* Find a font with a specific name */
-
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/swap-performance.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/swap-performance.patch
deleted file mode 100644
index 1cde717bb4..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/swap-performance.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-*** ../linux/mm/swap.c Tue Jan 14 14:54:41 2003
---- linux/mm/swap.c Sun Sep 28 21:34:25 2003
-***************
-*** 32,38 ****
- int page_cluster;
-
- pager_daemon_t pager_daemon = {
-! 512, /* base number for calculating the number of tries */
- SWAP_CLUSTER_MAX, /* minimum number of tries */
- 8, /* do swap I/O in clusters of this size */
- };
---- 32,38 ----
- int page_cluster;
-
- pager_daemon_t pager_daemon = {
-! 128, /* base number for calculating the number of tries */
- SWAP_CLUSTER_MAX, /* minimum number of tries */
- 8, /* do swap I/O in clusters of this size */
- };
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa-power-key-off.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa-power-key-off.patch
deleted file mode 100644
index e9ced6c8cc..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa-power-key-off.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
-Index: linux/drivers/char/tosa_ts.c
-===================================================================
---- linux.orig/drivers/char/tosa_ts.c 2005-02-15 14:32:53.000000000 +0000
-+++ linux/drivers/char/tosa_ts.c 2005-02-15 14:32:58.000000000 +0000
-@@ -205,10 +205,53 @@
- write: tosa_ts_write_params,
- };
-
-+#if defined(CONFIG_TOSA_POWER_KEY_OFF)
-+extern unsigned int power_key_off_mode;
-+
-+static ssize_t power_key_off_read_params(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char outputbuf[32];
-+ int count;
-+
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(outputbuf, "%d\n", (unsigned int)power_key_off_mode);
-+ count++;
-+ *ppos += count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count+1))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t power_key_off_write_params(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ unsigned int param=0;
-+
-+ sscanf(buf,"%d",&param);
-+ if (power_key_off_mode != param) {
-+ power_key_off_mode = param;
-+ printk("power_key_off = %d\n", power_key_off_mode);
-+ }
-+ return nbytes;
-+}
-+
-+static struct file_operations proc_power_key_off_operations = {
-+ read: power_key_off_read_params,
-+ write: power_key_off_write_params,
-+};
-+#endif
-+
- static int init_procinfo(void)
- {
- int i;
- struct proc_dir_entry *entry;
-+#if defined(CONFIG_TOSA_POWER_KEY_OFF)
-+ struct proc_dir_entry *power_key_off_proc;
-+#endif
-
- proc_ts = proc_mkdir("driver/ts", NULL);
- if (proc_ts == NULL) {
-@@ -234,6 +277,12 @@
- }
- }
-
-+#if defined(CONFIG_TOSA_POWER_KEY_OFF)
-+ power_key_off_proc = create_proc_entry("power_key_off", 0, NULL);
-+ if (power_key_off_proc)
-+ power_key_off_proc->proc_fops = &proc_power_key_off_operations;
-+#endif
-+
- return 0;
- }
-
-Index: linux/drivers/char/Config.in
-===================================================================
---- linux.orig/drivers/char/Config.in 2005-02-15 14:32:41.000000000 +0000
-+++ linux/drivers/char/Config.in 2005-02-15 14:32:58.000000000 +0000
-@@ -35,6 +35,8 @@
- if [ "$CONFIG_SERIAL_SL_SERIES" = "y" ]; then
- bool ' SL-series Bluetooth support' CONFIG_BLUETOOTH_SL
- fi
-+ dep_bool ' Tosa power key suspend (EXPERIMENTAL)' CONFIG_TOSA_POWER_KEY_OFF $CONFIG_ARCH_PXA_TOSA
-+ dep_bool ' Tosa Boot On power key suspend' CONFIG_BOOT_TOSA_POWER_KEY_OFF $CONFIG_TOSA_POWER_KEY_OFF
- fi
- bool 'Use Keyboard device file (EXPERIMENTAL)' CONFIG_KBD_DEV_FILE
- if [ "$CONFIG_SA1100_COLLIE" = "y" ]; then
-Index: linux/drivers/char/keyboard.c
-===================================================================
---- linux.orig/drivers/char/keyboard.c 2005-02-15 14:32:48.000000000 +0000
-+++ linux/drivers/char/keyboard.c 2005-02-15 14:32:58.000000000 +0000
-@@ -119,8 +119,8 @@
- static struct kbd_struct * kbd = kbd_table;
- static struct tty_struct * tty;
-
--#if defined(CONFIG_SL7X0_POWER_KEY_OFF)
--#if defined(CONFIG_BOOT_POWER_KEY_OFF)
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_TOSA_POWER_KEY_OFF)
-+#if defined(CONFIG_BOOT_POWER_KEY_OFF) || defined(CONFIG_BOOT_TOSA_POWER_KEY_OFF)
- unsigned int power_key_off_mode = 1;
- #else
- unsigned int power_key_off_mode = 0;
-@@ -245,7 +245,7 @@
- void handle_scancode(unsigned char scancode, int down)
- {
-
--#if defined(CONFIG_SL7X0_POWER_KEY_OFF)
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_TOSA_POWER_KEY_OFF)
- /* printk("scancode = %x down = %x \n",scancode,down); */
- /* SL-C700 side power 0x6d */
- if ( power_key_off_mode && ( scancode == 0x6d ) && ( down == 0x01 ) ){
-@@ -282,7 +282,7 @@
- handle_scancode_main ( scancode, down );
- } else
- #endif
--#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_SL_3BUTTON_PATCH)
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_SL_3BUTTON_PATCH) || defined(CONFIG_TOSA_POWER_KEY_OFF)
- {
-
- handle_scancode_main ( scancode, down );
-Index: linux/arch/arm/mach-pxa/sharpsl_power.c
-===================================================================
---- linux.orig/arch/arm/mach-pxa/sharpsl_power.c 2005-02-15 14:32:41.000000000 +0000
-+++ linux/arch/arm/mach-pxa/sharpsl_power.c 2005-02-16 09:45:13.000000000 +0000
-@@ -1725,7 +1725,7 @@
- return 0;
- }
-
--#if defined(CONFIG_SL7X0_POWER_KEY_OFF)
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_TOSA_POWER_KEY_OFF)
- static int key_suspend_thread(void* unused)
- {
- int time_cnt = 0;
-@@ -1854,7 +1854,7 @@
- }
-
- kernel_thread(sharpsl_off_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
--#if defined(CONFIG_SL7X0_POWER_KEY_OFF)
-+#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_TOSA_POWER_KEY_OFF)
- kernel_thread(key_suspend_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
- #endif
- #if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA)
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_map.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_map.patch
deleted file mode 100644
index feca970614..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_map.patch
+++ /dev/null
@@ -1,889 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux/drivers/char/tosa_keymap.c~tosa_map.patch
-+++ linux/drivers/char/tosa_keymap.c
-@@ -6,348 +6,88 @@
- #include <linux/keyboard.h>
- #include <linux/kd.h>
-
--u_short plain_map[] = {
-+u_short plain_map[NR_KEYS] = {
- 0xf200, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66, 0xfb67,
- 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e, 0xfb6f,
- 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76, 0xfb77,
-- 0xfb78, 0xfb79, 0xfb7a, 0xf700, 0xf201, 0xf101, 0xf703, 0xf008,
-- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
-+ 0xfb78, 0xfb79, 0xfb7a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008,
-+ 0xf07c, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
- 0xf200, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
-- 0xf038, 0xf039, 0xf030, 0xf02d, 0xf05e, 0xf05c, 0xf05b, 0xf040,
-- 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c,
-- 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf301,
-- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
-- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e,
-- 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf03b,
-- 0xf03a, 0xf05d, 0xf02c, 0xf02e, 0xf02f, 0xf05f, 0xf200, 0xf700,
-- 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-- 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf038, 0xf039, 0xf030, 0xfbe4, 0xfbfc, 0xfbf6, 0xfbc4, 0xfbdc,
-+ 0xfbd6, 0xfbdf, 0xf02d, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c,
-+ 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf03b,
-+ 0xf022, 0xf03a, 0xf023, 0xf024, 0xf025, 0xf05f, 0xf026, 0xf02a,
-+ 0xf028, 0xf07f, 0xf109, 0xf03d, 0xf029, 0xf07e, 0xf03c, 0xf03e,
-+ 0xf702, 0xf703, 0xf200, 0xf020, 0xf020, 0xf200, 0xf021, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700,
-+ 0xf702, 0xf702, 0xf703, 0xf703, 0xf701, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short shift_map[] = {
-+u_short shift_map[NR_KEYS] = {
- 0xf200, 0xfb41, 0xfb42, 0xfb43, 0xfb44, 0xfb45, 0xfb46, 0xfb47,
- 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e, 0xfb4f,
- 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56, 0xfb57,
-- 0xfb58, 0xfb59, 0xfb5a, 0xf700, 0xf201, 0xf101, 0xf702, 0xf008,
-- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
-- 0xf200, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027,
-- 0xf028, 0xf029, 0xf07e, 0xf03d, 0xf07e, 0xf07c, 0xf07b, 0xf060,
-- 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf03b,
-- 0xf03a, 0xf009, 0xf104, 0xf105, 0xf106, 0xf03f, 0xf022, 0xf301,
-- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
-- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e,
-- 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf02b,
-- 0xf02a, 0xf07d, 0xf03c, 0xf03e, 0xf03f, 0xf05f, 0xf200, 0xf700,
-- 0xf114, 0xf117, 0xf20b, 0xf20a, 0xf701, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-- 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xfb58, 0xfb59, 0xfb5a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008,
-+ 0xf07c, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
-+ 0xf200, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
-+ 0xf038, 0xf039, 0xf030, 0xfbe4, 0xfbfc, 0xfbf6, 0xfbc4, 0xfbdc,
-+ 0xfbd6, 0xfbdf, 0xf02d, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c,
-+ 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf03b,
-+ 0xf022, 0xf03a, 0xf023, 0xf024, 0xf025, 0xf05f, 0xf026, 0xf02a,
-+ 0xf028, 0xf07f, 0xf109, 0xf03d, 0xf029, 0xf07e, 0xf03c, 0xf03e,
-+ 0xf702, 0xf703, 0xf200, 0xf020, 0xf020, 0xf200, 0xf021, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700,
-+ 0xf702, 0xf702, 0xf703, 0xf703, 0xf701, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short ctrl_map[] = {
-+u_short ctrl_map[NR_KEYS] = {
- 0xf200, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007,
- 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f,
- 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017,
- 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008,
-- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf200,
-- 0xf200, 0xf009, 0xf104, 0xf105, 0xf106, 0xf200, 0xf200, 0xf301,
-- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
-- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e,
-- 0xf702, 0xf703, 0xf01b, 0xf020, 0xf000, 0xf310, 0xf200, 0xf200,
-+ 0xf07c, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
-+ 0xf200, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
-+ 0xf038, 0xf039, 0xf030, 0xfbe4, 0xfbfc, 0xfbf6, 0xfbc4, 0xfbdc,
-+ 0xfbd6, 0xfbdf, 0xf02d, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c,
-+ 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf03b,
-+ 0xf022, 0xf03a, 0xf023, 0xf024, 0xf025, 0xf05f, 0xf026, 0xf02a,
-+ 0xf028, 0xf07f, 0xf109, 0xf03d, 0xf029, 0xf07e, 0xf03c, 0xf03e,
-+ 0xf702, 0xf703, 0xf200, 0xf000, 0xf000, 0xf200, 0xf021, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700,
-- 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-- 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf702, 0xf702, 0xf703, 0xf703, 0xf701, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short shift_ctrl_map[] = {
-+u_short shift_ctrl_map[NR_KEYS] = {
- 0xf200, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007,
- 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f,
- 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017,
- 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008,
-- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf200,
-- 0xf200, 0xf009, 0xf104, 0xf105, 0xf106, 0xf200, 0xf200, 0xf301,
-- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
-- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e,
-- 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700,
-- 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-- 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
--};
--
--u_short alt_map[] = {
-- 0xf200, 0xf021, 0xf02d, 0xf863, 0xf023, 0xf033, 0xf024, 0xf025,
-- 0xf05f, 0xf038, 0xf026, 0xf02a, 0xf028, 0xf03d, 0xf02b, 0xf039,
-- 0xf030, 0xf031, 0xf034, 0xf040, 0xf035, 0xf037, 0xf876, 0xf032,
-- 0xf878, 0xf036, 0xf87a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf07f,
-- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf07d,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf029,
-- 0xf03c, 0xf207, 0xf104, 0xf105, 0xf106, 0xf200, 0xf07e, 0xf301,
-- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
-- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e,
-- 0xf702, 0xf703, 0xf01b, 0xf000, 0xf020, 0xf310, 0xf200, 0xf200,
-+ 0xf07c, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
-+ 0xf200, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
-+ 0xf038, 0xf039, 0xf030, 0xfbe4, 0xfbfc, 0xfbf6, 0xfbc4, 0xfbdc,
-+ 0xfbd6, 0xfbdf, 0xf02d, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c,
-+ 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf03b,
-+ 0xf022, 0xf03a, 0xf023, 0xf024, 0xf025, 0xf05f, 0xf026, 0xf02a,
-+ 0xf028, 0xf07f, 0xf109, 0xf03d, 0xf029, 0xf07e, 0xf03c, 0xf03e,
-+ 0xf702, 0xf703, 0xf200, 0xf020, 0xf020, 0xf200, 0xf021, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700,
-- 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-- 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf702, 0xf702, 0xf703, 0xf703, 0xf701, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
- ushort *key_maps[MAX_NR_KEYMAPS] = {
- plain_map, shift_map, 0, 0,
-- ctrl_map, shift_ctrl_map, 0, 0,
-- alt_map, 0
-+ ctrl_map, shift_ctrl_map, 0
- };
-
--unsigned int keymap_count = 5;
-+unsigned int keymap_count = 4;
-
-
- /*
---- linux/drivers/char/tosa_keymap.map~tosa_map.patch
-+++ linux/drivers/char/tosa_keymap.map
-@@ -8,9 +8,8 @@
- # 1 for [SHIFT]
- # 4 for [CTRL] , to symbol input for debug
- # 5 for [CTRL] [SHIFT] , to symbol input for debug
--# 8 for [ALT]
- #
--keymaps 0,1,4,5,8
-+keymaps 0,1,4,5
- #
- # loadkeys --mktable iris_keymap.map
- #
-@@ -20,60 +19,38 @@
- #
- #
- keycode 1 = a
-- alt keycode 1 = exclam
- keycode 2 = b
-- alt keycode 2 = minus
- keycode 3 = c
- keycode 4 = d
-- alt keycode 4 = numbersign
- keycode 5 = e
-- alt keycode 5 = three
- keycode 6 = f
-- alt keycode 6 = dollar
- keycode 7 = g
-- alt keycode 7 = percent
- keycode 8 = h
-- alt keycode 8 = underscore
- keycode 9 = i
-- alt keycode 9 = eight
- keycode 10 = j
-- alt keycode 10 = ampersand
- keycode 11 = k
-- alt keycode 11 = asterisk
- keycode 12 = l
-- alt keycode 12 = parenleft
- keycode 13 = m
-- alt keycode 13 = equal
- keycode 14 = n
-- alt keycode 14 = plus
- keycode 15 = o
-- alt keycode 15 = nine
- keycode 16 = p
-- alt keycode 16 = zero
- keycode 17 = q
-- alt keycode 17 = one
- keycode 18 = r
-- alt keycode 18 = four
- keycode 19 = s
-- alt keycode 19 = at
- keycode 20 = t
-- alt keycode 20 = five
- keycode 21 = u
-- alt keycode 21 = seven
- keycode 22 = v
- keycode 23 = w
-- alt keycode 23 = two
- keycode 24 = x
- keycode 25 = y
-- alt keycode 25 = six
- keycode 26 = z
- keycode 27 = Shift
- keycode 28 = Return
- keycode 29 = F2
--keycode 30 = Alt Control
-+keycode 30 =
- keycode 31 = BackSpace
-- alt keycode 31 = Delete
--keycode 32 = Num_Lock
-+# for Debug , keycode 32(F3, Sym) --> Control
-+keycode 32 = bar
- keycode 33 =
- # (Cancel:34) F9 -> Escape
- keycode 34 = Escape
-@@ -83,100 +60,84 @@
- keycode 38 = Right
- # (OK:39) F4 -> Return
- keycode 39 = Return
-- alt keycode 39 = braceright
- keycode 40 =
--keycode 41 = one exclam
--keycode 42 = two quotedbl
--keycode 43 = three numbersign
--keycode 44 = four dollar
--keycode 45 = five percent
--keycode 46 = six ampersand
--keycode 47 = seven apostrophe
--keycode 48 = eight parenleft
--keycode 49 = nine parenright
--keycode 50 = zero asciitilde
--keycode 51 = minus equal
--keycode 52 = asciicircum asciitilde
--keycode 53 = backslash bar
--keycode 54 = bracketleft braceleft
--keycode 55 = at grave
--keycode 56 = Control
--keycode 57 = Alt
--keycode 58 = Control
-+keycode 41 = one
-+keycode 42 = two
-+keycode 43 = three
-+keycode 44 = four
-+keycode 45 = five
-+keycode 46 = six
-+keycode 47 = seven
-+keycode 48 = eight
-+keycode 49 = nine
-+keycode 50 = zero
-+keycode 51 = +adiaeresis
-+keycode 52 = +udiaeresis
-+keycode 53 = +odiaeresis
-+keycode 54 = +Adiaeresis
-+keycode 55 = +Udiaeresis
-+keycode 56 = +Odiaeresis
-+keycode 57 = +ssharp
-+keycode 58 = minus
- keycode 59 = plus
- keycode 60 = Shift_Lock
- keycode 61 = at
- keycode 62 = question
--keycode 63 = comma semicolon
-- alt keycode 63 = parenright
--keycode 64 = period colon
-- alt keycode 64 = less
-+keycode 63 = comma
-+keycode 64 = period
- keycode 65 = Tab
-- alt keycode 65 = Caps_Lock
- keycode 66 = F5
- keycode 67 = F6
- keycode 68 = F7
--keycode 69 = slash question
--keycode 70 = apostrophe quotedbl
-- alt keycode 70 = asciitilde
--keycode 71 = KP_1
--keycode 72 = KP_2
--keycode 73 = KP_3
--keycode 74 = KP_4
--keycode 75 = KP_5
--keycode 76 = KP_6
--keycode 77 = KP_7
--keycode 78 = KP_8
--keycode 79 = KP_9
--keycode 80 = KP_0
-+keycode 69 = slash
-+keycode 70 = apostrophe
-+keycode 71 = semicolon
-+keycode 72 = quotedbl
-+keycode 73 = colon
-+keycode 74 = numbersign
-+keycode 75 = dollar
-+keycode 76 = percent
-+# 2001/7/5 old keycode 77 = asciicircum
-+keycode 77 = underscore
-+keycode 78 = ampersand
-+keycode 79 = asterisk
-+keycode 80 = parenleft
- keycode 81 = Delete
--keycode 82 = KP_Divide
--keycode 83 = KP_Multiply
--keycode 84 =
--keycode 85 = KP_Subtract
--keycode 86 = KP_Add
--keycode 87 = KP_Enter
-+keycode 82 = F10
-+keycode 83 = equal
-+keycode 84 = parenright
-+keycode 85 = asciitilde
-+keycode 86 = less
-+keycode 87 = greater
- # (Activity:88) -> Ctrl
- keycode 88 = Control
- # (Contacts:89) -> Alt
- keycode 89 = Alt
--keycode 90 = Escape
-+keycode 90 =
- # (select:91) F11 -> space
- keycode 91 = space
-- alt keycode 91 = nul
-+ control keycode 91 = nul
- keycode 92 = space
- control keycode 92 = nul
--keycode 93 = KP_Period
--keycode 94 =
--keycode 95 = semicolon plus
--keycode 96 = colon asterisk
--keycode 97 = bracketright braceright
--keycode 98 = comma less
--keycode 99 = period greater
--keycode 100 = slash question
--keycode 101 = underscore underscore
-+keycode 93 =
-+keycode 94 = exclam
-+keycode 95 =
-+keycode 96 =
-+keycode 97 =
-+keycode 98 =
-+keycode 99 =
-+keycode 100 =
-+keycode 101 =
- keycode 102 =
- keycode 103 = Shift
--keycode 104 = Find
--keycode 105 = Select
--keycode 106 = Prior
-- shift keycode 106 = Scroll_Backward
--keycode 107 = Next
-- shift keycode 107 = Scroll_Forward
-+keycode 104 = Control
-+keycode 105 = Control
-+keycode 106 = Alt
-+keycode 107 = Alt
- keycode 108 = AltGr
- keycode 109 =
- keycode 110 =
- keycode 111 =
--keycode 112 =
--keycode 113 =
--keycode 114 =
--keycode 115 =
--keycode 116 =
--keycode 117 = Control
--keycode 118 =
--keycode 119 =
--keycode 120 = Control
--keycode 121 = Alt
-
-
- string F1 = "\033[[A"
---- linux/drivers/char/tosa_rawmap.h~tosa_map.patch
-+++ linux/drivers/char/tosa_rawmap.h
-@@ -22,28 +22,156 @@
-
-
- static unsigned char rawkeytable_table_NormalLower[(NR_KEYCODES+1)] = {
--KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+KEY_IGN, KEY_IGN, SLKEY_W, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_K, SLKEY_BACK_SPACE,
-+SLKEY_P, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_Q, SLKEY_E, SLKEY_T, SLKEY_Y, KEY_IGN, SLKEY_O, SLKEY_I,
-+SLKEY_COMMA, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_A, SLKEY_D, SLKEY_G, SLKEY_U, KEY_IGN, SLKEY_L, SLKEY_ENTER,
-+SLKEY_PERIOD, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_Z, SLKEY_C, SLKEY_V, SLKEY_J, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11,
-+SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_S, SLKEY_R, SLKEY_B, SLKEY_N, SLKEY_ACTIVITY, SLKEY_HOME,SLKEY_MINUS,
-+SLKEY_FRONTLIGHT,KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_TAB, SLKEY_SLASH, SLKEY_H, SLKEY_M, SLKEY_F2, KEY_IGN, SLKEY_UP,
-+KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_X, SLKEY_F, SLKEY_SPACE, SLKEY_APOSTROPHE,SLKEY_MAIL, SLKEY_LEFT,SLKEY_DOWN,
-+SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN
-+};
-
- static unsigned char rawkeytable_table_NormalUpper[(NR_KEYCODES+1)] = {
--KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+KEY_IGN, KEY_IGN, SLKEY_W, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_K, SLKEY_BACK_SPACE,
-+SLKEY_P, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_Q, SLKEY_E, SLKEY_T, SLKEY_Y, KEY_IGN, SLKEY_O, SLKEY_I,
-+SLKEY_SEMICOLON,KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_A, SLKEY_D, SLKEY_G, SLKEY_U, KEY_IGN, SLKEY_L, SLKEY_ENTER,
-+SLKEY_COLON, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_Z, SLKEY_C, SLKEY_V, SLKEY_J, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11,
-+SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_S, SLKEY_R, SLKEY_B, SLKEY_N, SLKEY_ACTIVITY, SLKEY_HOME, SLKEY_MINUS,
-+SLKEY_FRONTLIGHT, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_TAB, SLKEY_QUESTION, SLKEY_H, SLKEY_M, SLKEY_F2, KEY_IGN, SLKEY_UP,
-+KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_X, SLKEY_F, SLKEY_SPACE, SLKEY_QUOTEDBL, SLKEY_MAIL, SLKEY_LEFT, SLKEY_DOWN,
-+SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN
-+};
-
- static unsigned char rawkeytable_table_2ndLower[(NR_KEYCODES+1)] = {
--KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+KEY_IGN, KEY_IGN, SLKEY_2, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_ASTERISK, SLKEY_DELETE,
-+SLKEY_0, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_1, SLKEY_3, SLKEY_5, SLKEY_6, KEY_IGN, SLKEY_9, SLKEY_8,
-+SLKEY_PARENRIGHT, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_EXCLAM, SLKEY_NUMBERSIGN, SLKEY_PERCENT,SLKEY_7, KEY_IGN, SLKEY_PARENLEFT,SLKEY_GREATER,
-+SLKEY_LESS, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_F10, SLKEY_F6, SLKEY_F7, SLKEY_AMPERSAND,SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11,
-+SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_AT, SLKEY_4, SLKEY_MINUS, SLKEY_PLUS, SLKEY_ACTIVITY, SLKEY_HOME, SLKEY_MINUS,
-+SLKEY_FRONTLIGHT, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_CAPS_LOCK,SLKEY_NUMLOCK, SLKEY_ASCIICIRCUM, SLKEY_EQUAL, SLKEY_F2, KEY_IGN, SLKEY_UP,
-+KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_F5, SLKEY_DOLLAR, SLKEY_SYM, SLKEY_ASCIITILDE, SLKEY_MAIL, SLKEY_LEFT, SLKEY_DOWN,
-+SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN
-+};
-
- static unsigned char rawkeytable_table_2ndUpper[(NR_KEYCODES+1)] = {
--KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_PRINTSCREEN,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+KEY_IGN, KEY_IGN, SLKEY_2, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_ASTERISK, SLKEY_DELETE,
-+SLKEY_0, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_1, SLKEY_3, SLKEY_5, SLKEY_6, KEY_IGN, SLKEY_9, SLKEY_8,
-+SLKEY_PARENRIGHT, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_EXCLAM, SLKEY_NUMBERSIGN, SLKEY_PERCENT,SLKEY_7, KEY_IGN, SLKEY_PARENLEFT,SLKEY_GREATER,
-+SLKEY_LESS, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_F10, SLKEY_F6, SLKEY_F7, SLKEY_AMPERSAND,SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11,
-+SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_AT, SLKEY_4, SLKEY_MINUS, SLKEY_PLUS, SLKEY_ACTIVITY, SLKEY_HOME, SLKEY_MINUS,
-+SLKEY_FRONTLIGHT, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_CAPS_LOCK,SLKEY_NUMLOCK, SLKEY_ASCIICIRCUM, SLKEY_EQUAL, SLKEY_F2, KEY_IGN, SLKEY_UP,
-+KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_F5, SLKEY_DOLLAR, SLKEY_SYM, SLKEY_ASCIITILDE, SLKEY_MAIL, SLKEY_LEFT, SLKEY_DOWN,
-+SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN
-+};
-
- static unsigned char rawkeytable_table_NumlockLower[(NR_KEYCODES+1)] = {
--KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+KEY_IGN, KEY_IGN, SLKEY_2, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_ASTERISK, SLKEY_BACK_SPACE,
-+SLKEY_0, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_1, SLKEY_3, SLKEY_5, SLKEY_6, KEY_IGN, SLKEY_9, SLKEY_8,
-+SLKEY_PARENRIGHT, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_EXCLAM, SLKEY_NUMBERSIGN, SLKEY_PERCENT, SLKEY_7, KEY_IGN, SLKEY_PARENLEFT,SLKEY_GREATER,
-+SLKEY_LESS, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_F10, SLKEY_F6, SLKEY_F7, SLKEY_AMPERSAND, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11,
-+SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_AT, SLKEY_4, SLKEY_MINUS, SLKEY_PLUS, SLKEY_ACTIVITY, SLKEY_HOME, SLKEY_MINUS,
-+SLKEY_FRONTLIGHT, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_TAB, SLKEY_SLASH, SLKEY_ASCIICIRCUM, SLKEY_EQUAL, SLKEY_F2, KEY_IGN, SLKEY_UP,
-+KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_F5, SLKEY_DOLLAR, SLKEY_SPACE, SLKEY_ASCIITILDE, SLKEY_MAIL, SLKEY_LEFT, SLKEY_DOWN,
-+SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN
-+};
-
- static unsigned char rawkeytable_table_NumlockUpper[(NR_KEYCODES+1)] = {
--KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+KEY_IGN, KEY_IGN, SLKEY_2, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_ASTERISK, SLKEY_BACK_SPACE,
-+SLKEY_0, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_1, SLKEY_3, SLKEY_5, SLKEY_6, KEY_IGN, SLKEY_9, SLKEY_8,
-+SLKEY_PARENRIGHT, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_EXCLAM, SLKEY_NUMBERSIGN, SLKEY_PERCENT, SLKEY_7, KEY_IGN, SLKEY_PARENLEFT,SLKEY_GREATER,
-+SLKEY_LESS, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_F10, SLKEY_F6, SLKEY_F7, SLKEY_AMPERSAND, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11,
-+SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_AT, SLKEY_4, SLKEY_MINUS, SLKEY_PLUS, SLKEY_ACTIVITY, SLKEY_HOME, SLKEY_MINUS,
-+SLKEY_FRONTLIGHT, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_TAB, SLKEY_QUESTION, SLKEY_ASCIICIRCUM, SLKEY_EQUAL, SLKEY_F2, KEY_IGN, SLKEY_UP,
-+KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_F5, SLKEY_DOLLAR, SLKEY_SPACE, SLKEY_ASCIITILDE, SLKEY_MAIL, SLKEY_LEFT, SLKEY_DOWN,
-+SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN
-+};
-
- static unsigned char rawkeytable_table_Num2ndLower[(NR_KEYCODES+1)] = {
--KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+KEY_IGN, KEY_IGN, SLKEY_W, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_K, SLKEY_DELETE,
-+SLKEY_P, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_Q, SLKEY_E, SLKEY_T, SLKEY_Y, KEY_IGN, SLKEY_O, SLKEY_I,
-+SLKEY_COMMA, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_A, SLKEY_D, SLKEY_G, SLKEY_U, KEY_IGN, SLKEY_L, SLKEY_ENTER,
-+SLKEY_PERIOD, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_Z, SLKEY_F6, SLKEY_F7, SLKEY_J, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11,
-+SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_S, SLKEY_R, SLKEY_B, SLKEY_N, SLKEY_ACTIVITY, SLKEY_HOME,SLKEY_MINUS,
-+SLKEY_FRONTLIGHT,KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_CAPS_LOCK, SLKEY_NUMLOCK, SLKEY_H, SLKEY_M, SLKEY_F2, KEY_IGN, SLKEY_UP,
-+KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_F5, SLKEY_F, SLKEY_SYM, SLKEY_APOSTROPHE,SLKEY_MAIL, SLKEY_LEFT,SLKEY_DOWN,
-+SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN
-+};
-
- static unsigned char rawkeytable_table_Num2ndUpper[(NR_KEYCODES+1)] = {
--KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_PRINTSCREEN,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN};
-+KEY_IGN, KEY_IGN, SLKEY_W, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_K, SLKEY_DELETE,
-+SLKEY_P, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_Q, SLKEY_E, SLKEY_T, SLKEY_Y, KEY_IGN, SLKEY_O, SLKEY_I,
-+SLKEY_SEMICOLON,KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_A, SLKEY_D, SLKEY_G, SLKEY_U, KEY_IGN, SLKEY_L, SLKEY_ENTER,
-+SLKEY_COLON, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_Z, SLKEY_F6, SLKEY_F7, SLKEY_J, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11,
-+SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_S, SLKEY_R, SLKEY_B, SLKEY_N, SLKEY_ACTIVITY, SLKEY_HOME,SLKEY_MINUS,
-+SLKEY_FRONTLIGHT,KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_CAPS_LOCK, SLKEY_NUMLOCK, SLKEY_H, SLKEY_M, SLKEY_F2, KEY_IGN, SLKEY_UP,
-+KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, SLKEY_F5, SLKEY_F, SLKEY_SYM, SLKEY_QUOTEDBL, SLKEY_MAIL, SLKEY_LEFT,SLKEY_DOWN,
-+SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN,
-+KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN
-+};
-
-
-
-@@ -334,7 +462,87 @@
-
-
- static unsigned char *state_to_keymap[STATE_NUMS_TOTAL] = {
--rawkeytable_table_NormalLower,rawkeytable_table_NormalUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_NormalLower,rawkeytable_table_NormalUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_NumlockLower,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_NumlockLower,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_NormalUpper,rawkeytable_table_NormalUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_NormalUpper,rawkeytable_table_NormalUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper};
-+rawkeytable_table_NormalLower, /*S0*/
-+rawkeytable_table_NormalUpper, /*S1*/
-+rawkeytable_table_2ndLower, /*S2*/
-+rawkeytable_table_2ndUpper, /*S3*/
-+rawkeytable_table_2ndLower, /*S4*/
-+rawkeytable_table_2ndUpper, /*S5*/
-+rawkeytable_table_2ndLower, /*S6*/
-+rawkeytable_table_2ndUpper, /*S7*/
-+rawkeytable_table_2ndLower, /*S8*/
-+rawkeytable_table_2ndUpper, /*S9*/
-+rawkeytable_table_NormalLower, /*S10*/
-+rawkeytable_table_NormalUpper, /*S11*/
-+rawkeytable_table_2ndLower, /*S12*/
-+rawkeytable_table_2ndUpper, /*S13*/
-+rawkeytable_table_2ndLower, /*S14*/
-+rawkeytable_table_2ndUpper, /*S15*/
-+rawkeytable_table_2ndLower, /*S16*/
-+rawkeytable_table_2ndUpper, /*S17*/
-+rawkeytable_table_2ndLower, /*S18*/
-+rawkeytable_table_2ndUpper, /*S19*/
-+rawkeytable_table_NumlockLower, /*S20*/
-+rawkeytable_table_NumlockUpper, /*S21*/
-+rawkeytable_table_Num2ndLower, /*S22*/
-+rawkeytable_table_Num2ndUpper, /*S23*/
-+rawkeytable_table_Num2ndLower, /*S24*/
-+rawkeytable_table_Num2ndUpper, /*S25*/
-+rawkeytable_table_Num2ndLower, /*S26*/
-+rawkeytable_table_Num2ndUpper, /*S27*/
-+rawkeytable_table_Num2ndLower, /*S28*/
-+rawkeytable_table_Num2ndUpper, /*S29*/
-+rawkeytable_table_NumlockLower, /*S30*/
-+rawkeytable_table_NumlockUpper, /*S31*/
-+rawkeytable_table_Num2ndLower, /*S32*/
-+rawkeytable_table_Num2ndUpper, /*S33*/
-+rawkeytable_table_Num2ndLower, /*S34*/
-+rawkeytable_table_Num2ndUpper, /*S35*/
-+rawkeytable_table_Num2ndLower, /*S36*/
-+rawkeytable_table_Num2ndUpper, /*S37*/
-+rawkeytable_table_Num2ndLower, /*S38*/
-+rawkeytable_table_Num2ndUpper, /*S39*/
-+rawkeytable_table_NormalUpper, /*S40*/
-+rawkeytable_table_NormalUpper, /*S41*/
-+rawkeytable_table_2ndUpper, /*S42*/
-+rawkeytable_table_2ndUpper, /*S43*/
-+rawkeytable_table_2ndUpper, /*S44*/
-+rawkeytable_table_2ndUpper, /*S45*/
-+rawkeytable_table_2ndUpper, /*S46*/
-+rawkeytable_table_2ndUpper, /*S47*/
-+rawkeytable_table_2ndUpper, /*S48*/
-+rawkeytable_table_2ndUpper, /*S49*/
-+rawkeytable_table_NormalUpper, /*S50*/
-+rawkeytable_table_NormalUpper, /*S51*/
-+rawkeytable_table_2ndUpper, /*S52*/
-+rawkeytable_table_2ndUpper, /*S53*/
-+rawkeytable_table_2ndUpper, /*S54*/
-+rawkeytable_table_2ndUpper, /*S55*/
-+rawkeytable_table_2ndUpper, /*S56*/
-+rawkeytable_table_2ndUpper, /*S57*/
-+rawkeytable_table_2ndUpper, /*S58*/
-+rawkeytable_table_2ndUpper, /*S59*/
-+rawkeytable_table_NumlockUpper, /*S60*/
-+rawkeytable_table_NumlockUpper, /*S61*/
-+rawkeytable_table_Num2ndUpper, /*S62*/
-+rawkeytable_table_Num2ndUpper, /*S63*/
-+rawkeytable_table_Num2ndUpper, /*S64*/
-+rawkeytable_table_Num2ndUpper, /*S65*/
-+rawkeytable_table_Num2ndUpper, /*S66*/
-+rawkeytable_table_Num2ndUpper, /*S67*/
-+rawkeytable_table_Num2ndUpper, /*S68*/
-+rawkeytable_table_Num2ndUpper, /*S69*/
-+rawkeytable_table_NumlockUpper, /*S70*/
-+rawkeytable_table_NumlockUpper, /*S71*/
-+rawkeytable_table_Num2ndUpper, /*S72*/
-+rawkeytable_table_Num2ndUpper, /*S73*/
-+rawkeytable_table_Num2ndUpper, /*S74*/
-+rawkeytable_table_Num2ndUpper, /*S75*/
-+rawkeytable_table_Num2ndUpper, /*S76*/
-+rawkeytable_table_Num2ndUpper, /*S77*/
-+rawkeytable_table_Num2ndUpper, /*S78*/
-+rawkeytable_table_Num2ndUpper /*S79*/
-+};
-
-
- #endif /* ! __KEYTABLE_H_INCLUDED__ */
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_ts.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_ts.patch
deleted file mode 100644
index 678cb2e25b..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_ts.patch
+++ /dev/null
@@ -1,207 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux/drivers/char/tosa_ts.c~tosa_ts.patch
-+++ linux/drivers/char/tosa_ts.c
-@@ -102,6 +102,8 @@
- static int head = 0, tail = 0;
-
- #ifdef CONFIG_PM
-+#include <linux/pm.h>
-+static struct pm_dev* tosa_ts_pm_dev;
- static int tp_suspend = 0;
- #endif /* CONFIG_PM */
-
-@@ -495,25 +497,6 @@
- ioctl: ts_ioctl,
- };
-
--static void ts_exit(void)
--{
-- ts_timer_clear();
-- ts_clear();
-- free_irq(IRQ_GPIO_TP_INT, NULL);
-- wm9712_power_mode_ts(WM9712_PWR_OFF);
--
-- pxa_ac97_put(&ac97_on);
--}
--
--#ifdef MODULE
--static void __exit ac97_ts_cleanup(void)
--{
-- ts_exit();
-- unregister_chrdev(TS_MAJOR, "ts");
--}
--module_exit(ac97_ts_cleanup);
--#endif /* MODULE */
--
- extern int tc6393fb_lcdMode;
-
- int ac97_ad_input(int ch, unsigned short *dat)
-@@ -608,7 +591,7 @@
- #endif
- }
-
--static int ts_init(void)
-+static int tosa_ts_hardware_start(void)
- {
- pxa_ac97_get(&codec, &ac97_on);
-
-@@ -625,7 +608,6 @@
- /* GPIO3/PENDOWN wakeup */
- ac97_bit_set(AC97_GPIO_WAKE_UP, CODEC_PENDOWN);
-
-- ts_clear();
-
- /* Init queue */
- //X kernel_thread(ts_pendown, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-@@ -639,12 +621,39 @@
- return -EBUSY;
- }
-
-- // printk(KERN_INFO "Tosa Touch Screen driver initialized\n");
--
- return 0;
- }
-
--static int __init ac97_ts_init(void)
-+static void tosa_ts_hardware_stop(void)
-+{
-+ ts_timer_clear();
-+ ts_clear();
-+ free_irq(IRQ_GPIO_TP_INT, NULL);
-+ wm9712_power_mode_ts(WM9712_PWR_OFF);
-+
-+ pxa_ac97_put(&ac97_on);
-+}
-+
-+#ifdef CONFIG_PM
-+static int tosa_ts_pm_callback(struct pm_dev *pm_dev,
-+ pm_request_t req, void *data)
-+{
-+ switch (req) {
-+ case PM_SUSPEND:
-+ tp_suspend = 1;
-+ tosa_ts_hardware_stop();
-+ break;
-+ case PM_RESUME:
-+ tp_suspend = 0;
-+ tosa_ts_hardware_start();
-+ break;
-+ }
-+ return 0;
-+}
-+#endif
-+
-+
-+static int __init tosa_ts_init(void)
- {
- ac97_on = 0;
-
-@@ -663,28 +672,37 @@
-
- if( register_chrdev(TS_MAJOR,DEV_NAME, &ts_fops) ) {
- printk("unable to get major %d for touch screen\n", TS_MAJOR);
-- ts_exit();
- }
-
- init_procinfo();
-
-+ tosa_ts_hardware_start();
-+
-+#ifdef CONFIG_PM
-+ tosa_ts_pm_dev = pm_register(PM_SYS_DEV, 0, tosa_ts_pm_callback);
-+#endif
-+
- kernel_thread(ts_pendown, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-
- return 0;
- }
-
--module_init(ac97_ts_init);
-+static int __exit tosa_ts_cleanup()
-+{
-+ tosa_hardware_stop();
-+ pm_unregister(tosa_ts_pm_dev);
-+ unregister_chrdev(TS_MAJOR, "ts");
-+}
-+
-+module_init(tosa_ts_init);
-+module_exit(tosa_ts_cleanup);
-
- /*
- * Driver functions
- */
- static int ts_open(struct inode *inode, struct file *file)
- {
-- if( ts_init() < 0 ) {
-- ts_exit();
-- return -EINVAL;
-- }
--
-+ ts_clear();
- MOD_INC_USE_COUNT;
- return 0;
- }
-@@ -692,7 +710,6 @@
-
- static int ts_release(struct inode *inode, struct file *file)
- {
-- ts_exit();
-
- MOD_DEC_USE_COUNT;
- return 0;
-@@ -788,20 +805,3 @@
- return 0;
- }
-
--#ifdef CONFIG_PM
--void tosa_ts_suspend(void)
--{
-- DEBUG(DBG_L1, "in\n");
-- tp_suspend = 1;
-- ts_exit();
-- DEBUG(DBG_L1, "out\n");
--}
--
--void tosa_ts_resume(void)
--{
-- DEBUG(DBG_L1, "in\n");
-- tp_suspend = 0;
-- ts_init();
-- DEBUG(DBG_L1, "out\n");
--}
--#endif /* CONFIG_PM */
---- linux/drivers/sound/pxa-ac97_tosa.c~tosa_ts.patch
-+++ linux/drivers/sound/pxa-ac97_tosa.c
-@@ -90,8 +90,6 @@
- #include <linux/pm.h>
- static struct pm_dev* pxa_sound_pm_dev;
- static int tosa_pm_callback(struct pm_dev *,pm_request_t, void *);
--extern void tosa_ts_suspend(void);
--extern void tosa_ts_resume(void);
- #endif /* CONFIG_PM */
-
- /************************************************************
-@@ -2195,9 +2193,6 @@
- case PM_SUSPEND:
- DEBUG(DBG_L1, "PM_SUSPEND: start\n");
- wm9712_suspend();
--#ifdef CONFIG_TOSA_TS
-- tosa_ts_suspend();
--#endif /* CONFIG_TOSA_TS */
- if ( ac97_audio_state.rd_ref != 0 ) {
- audio_clear_buf(ac97_audio_state.input_stream);
- *ac97_audio_state.input_stream->drcmr = 0;
-@@ -2239,9 +2234,6 @@
- ac97_audio_state.input_stream->dma_ch = err;
- }
- wm9712_resume();
--#ifdef CONFIG_TOSA_TS
-- tosa_ts_resume();
--#endif /* CONFIG_TOSA_TS */
- DEBUG(DBG_L1, "PM_RESUME: done\n");
- break;
- }
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/unb0rk-apm.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/unb0rk-apm.patch
deleted file mode 100644
index 6095ccb604..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/unb0rk-apm.patch
+++ /dev/null
@@ -1,102 +0,0 @@
---- linux/arch/arm/mach-pxa/sharpsl_apm.c 2005-09-07 10:49:06.000000000 +0200
-+++ /home/hrw//devel/diffs/sharpsl_apm.c 2005-09-07 10:46:57.000000000 +0200
-@@ -1876,10 +1876,11 @@
- switch (event) {
- case APM_SYS_STANDBY:
- case APM_USER_STANDBY:
-- if (send_event(event)) {
-- queue_event(event, NULL);
-- if (standbys_pending <= 0)
-+ queue_event(event, NULL);
-+ if (standbys_pending <= 0) {
-+ if (send_event(event)) {
- standby();
-+ }
- }
- break;
-
-@@ -1907,13 +1908,12 @@
- */
- if (waiting_for_resume)
- return;
-- if (send_event(event)) {
-- queue_event(event, NULL);
-- waiting_for_resume = 1;
-- if (suspends_pending <= 0){
-+ queue_event(event, NULL);
-+ waiting_for_resume = 1;
-+ if (suspends_pending <= 0)
-+ if (send_event(event)) {
- (void) suspend();
- }
-- }
- break;
-
- case APM_NORMAL_RESUME:
-@@ -2225,26 +2225,32 @@
- as->standbys_read--;
- as->standbys_pending--;
- standbys_pending--;
-- } else if (!send_event(APM_USER_STANDBY))
-- return -EAGAIN;
-- else
-+ } else {
- queue_event(APM_USER_STANDBY, as);
-- if (standbys_pending <= 0)
-- standby();
-+ }
-+ if (standbys_pending <= 0) {
-+ if (send_event(APM_USER_STANDBY)) {
-+ standby();
-+ } else {
-+ return -EAGAIN;
-+ }
-+ }
- break;
- case APM_IOC_SUSPEND:
- if (as->suspends_read > 0) {
- as->suspends_read--;
- as->suspends_pending--;
- suspends_pending--;
-- } else if (!send_event(APM_USER_SUSPEND))
-- return -EAGAIN;
-- else
-+ } else {
- queue_event(APM_USER_SUSPEND, as);
-+ }
- if (suspends_pending <= 0) {
--
-- if (suspend() != APM_SUCCESS)
-- return -EIO;
-+ if (send_event(APM_USER_SUSPEND)) {
-+ if (suspend() != APM_SUCCESS)
-+ return -EIO;
-+ } else {
-+ return -EAGAIN;
-+ }
- } else {
- as->suspend_wait = 1;
- add_wait_queue(&apm_suspend_waitqueue, &wait);
-@@ -2483,13 +2489,18 @@
- lock_kernel();
- if (as->standbys_pending > 0) {
- standbys_pending -= as->standbys_pending;
-- if (standbys_pending <= 0)
-- standby();
-+ if (standbys_pending <= 0) {
-+ if (send_event(APM_USER_STANDBY)) {
-+ standby();
-+ }
-+ }
- }
- if (as->suspends_pending > 0) {
- suspends_pending -= as->suspends_pending;
-- if (suspends_pending <= 0){
-- (void) suspend();
-+ if (suspends_pending <= 0) {
-+ if (send_event(APM_USER_SUSPEND)) {
-+ (void) suspend();
-+ }
- }
- }
- if (user_list == as)
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/usb-storage.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/usb-storage.patch
deleted file mode 100644
index c9296cf224..0000000000
--- a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/usb-storage.patch
+++ /dev/null
@@ -1,3433 +0,0 @@
-diff -Nur linux-2.4.18/drivers/usb/device/bi/sa1100.c linux-2.4.18-usb-storage/drivers/usb/device/bi/sa1100.c
---- linux-2.4.18/drivers/usb/device/bi/sa1100.c 2003-05-13 13:18:44.000000000 +0400
-+++ linux-2.4.18-usb-storage/drivers/usb/device/bi/sa1100.c 2004-03-01 07:20:38.000000000 +0300
-@@ -440,6 +440,7 @@
- udc_interrupts, *(UDCSR), *(UDCCS0), *(UDCAR));
-
- usbd_device_event (udc_device, DEVICE_RESET, 0);
-+ usbd_device_event (udc_device, DEVICE_ADDRESS_ASSIGNED,0);
- }
-
- if (status & UDCSR_SUSIR) {
-diff -Nur linux-2.4.18/drivers/usb/device/Config.in linux-2.4.18-usb-storage/drivers/usb/device/Config.in
---- linux-2.4.18/drivers/usb/device/Config.in 2003-05-13 13:18:45.000000000 +0400
-+++ linux-2.4.18-usb-storage/drivers/usb/device/Config.in 2003-11-07 05:35:14.000000000 +0300
-@@ -34,6 +34,7 @@
- comment 'USB Device functions'
- source drivers/usb/device/net_fd/Config.in
- source drivers/usb/device/serial_fd/Config.in
-+ source drivers/usb/device/storage_fd/Config.in
-
- comment 'USB Device bus interfaces'
- source drivers/usb/device/bi/Config.in
-diff -Nur linux-2.4.18/drivers/usb/device/Makefile linux-2.4.18-usb-storage/drivers/usb/device/Makefile
---- linux-2.4.18/drivers/usb/device/Makefile 2003-05-13 13:18:45.000000000 +0400
-+++ linux-2.4.18-usb-storage/drivers/usb/device/Makefile 2003-11-07 05:35:01.000000000 +0300
-@@ -20,6 +20,7 @@
-
- subdir-$(CONFIG_USBD_NET) += net_fd
- subdir-$(CONFIG_USBD_SERIAL) += serial_fd
-+subdir-$(CONFIG_USBD_STORAGE) += storage_fd
-
- #subdir-$(CONFIG_USBD_GENERIC_BUS) += gen_bi
- #subdir-$(CONFIG_USBD_L7205_BUS) += l7205_bi
-diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/Config.help linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Config.help
---- linux-2.4.18/drivers/usb/device/storage_fd/Config.help 1970-01-01 03:00:00.000000000 +0300
-+++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Config.help 2003-11-07 05:34:43.000000000 +0300
-@@ -0,0 +1,55 @@
-+CONFIG_USBD_STORAGE
-+ Enable the generic mass storage function driver. This function is
-+ used emulating a Linux block driver.
-+
-+CONFIG_USBD_STORAGE_VENDORID
-+ Optionally specify the mass storage USB Device Vendor ID. The top
-+ level Vendor ID will be used if this is not specified.
-+
-+CONFIG_USBD_STORAGE_PRODUCTID
-+ Optionally specify the mass storage USB Device Product ID. The top
-+ level Vendor ID will be used if this is not specified.
-+
-+CONFIG_USBD_STORAGE_OUT_ENDPOINT
-+ Specify the preferred OUT (received data) endpoint number. This is a
-+ number from 0-15 and must be allowed by the bus interface device.
-+
-+ Some devices such as the SA-1110 or L7205/L7210 may override this
-+ value with a fixed value.
-+
-+CONFIG_USBD_STORAGE_IN_ENDPOINT
-+ Specify the preferred IN (transmit data) endpoint number. This is a
-+ number from 0-15 and must be allowed by the bus interface device.
-+
-+ Some devices such as the SA-1110 or L7205/L7210 may override this
-+ value with a fixed value.
-+
-+CONFIG_USBD_STORAGE_INT_ENDPOINT
-+ Specify the preferred INT (interrupt) endpoint number. This is a
-+ number from 0-15 and must be allowed by the bus interface device.
-+
-+ Some devices such as the L7205/L7210 may override this value with a
-+ fixed value. Others such as the SA-1110 do not allow an interrupt
-+ value.
-+
-+CONFIG_USBD_STORAGE_OUT_PKTSIZE
-+ Specify the maximum packet size for the OUT endpoint. This allowable
-+ values are normally 16, 32 and 64.
-+
-+ Some devices such as the Linkup L7205/L7210 may override this value
-+ with a lower maximum value (such as 32).
-+
-+CONFIG_USBD_STORAGE_IN_PKTSIZE
-+ Specify the maximum packet size for the IN endpoint. This allowable
-+ values are normally 16, 32 and 64.
-+
-+ Some devices such as the Linkup L7205/L7210 may override this value
-+ with a lower maximum value (such as 32).
-+
-+CONFIG_USBD_STORAGE_INT_PKTSIZE
-+ Specify the maximum packet size for the INT endpoint. This allowable
-+ values are normally 8 and 16. Some bus interface devices may not
-+ support all values.
-+
-+CONFIG_USBD_STORAGE_DEF_DEVICE_NAME
-+ Specify the default block device name to used on mass storage.
-diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/Config.in linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Config.in
---- linux-2.4.18/drivers/usb/device/storage_fd/Config.in 1970-01-01 03:00:00.000000000 +0300
-+++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Config.in 2003-11-07 05:34:43.000000000 +0300
-@@ -0,0 +1,29 @@
-+#
-+# Generic Mass Storage Function Driver
-+#
-+# Copyright (c) 2003 Communication Technology Inc.
-+# Copyright (C) 2001 Lineo, Inc.
-+# Copyright (C) 2001 Hewlett-Packard Co.
-+mainmenu_option next_comment
-+comment "Mass Storage Function"
-+
-+dep_tristate ' Mass Storage Function Driver' CONFIG_USBD_STORAGE $CONFIG_USBD
-+if [ "$CONFIG_USBD_STORAGE" = "y" -o "$CONFIG_USBD_STORAGE" = "m" ]; then
-+ hex ' Overide VendorID (hex value)' CONFIG_USBD_STORAGE_VENDORID "0000"
-+ hex ' Overide ProductID (hex value)' CONFIG_USBD_STORAGE_PRODUCTID "0000"
-+
-+ # allow setting of endpoint configurations for some architectures
-+ int ' OUT Endpoint (0-15)' CONFIG_USBD_STORAGE_OUT_ENDPOINT "1"
-+ int ' OUT PacketSize (16, 32, 64)' CONFIG_USBD_STORAGE_OUT_PKTSIZE "64"
-+ int ' IN Endpoint (0-15)' CONFIG_USBD_STORAGE_IN_ENDPOINT "2"
-+ int ' IN PacketSize (16, 32, 64)' CONFIG_USBD_STORAGE_IN_PKTSIZE "64"
-+
-+ if [ ! "$CONFIG_ARCH_SA1100" = "y" -a ! "$CONFIG_ARCH_L7200" = "y" ]; then
-+ int ' INT Endpoint (0-15)' CONFIG_USBD_STORAGE_INT_ENDPOINT "3"
-+ int ' INT PacketSize (8, 16)' CONFIG_USBD_STORAGE_INT_PKTSIZE "16"
-+ fi
-+
-+ string ' Default Mass Storage device name' CONFIG_USBD_STORAGE_DEF_DEVICE_NAME ""
-+fi
-+
-+endmenu
-diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/Makefile linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Makefile
---- linux-2.4.18/drivers/usb/device/storage_fd/Makefile 1970-01-01 03:00:00.000000000 +0300
-+++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Makefile 2003-11-07 05:34:43.000000000 +0300
-@@ -0,0 +1,58 @@
-+#
-+# SA1100 Function driver for a network USB Device
-+#
-+# Copyright (C) 2001 Lineo, Inc.
-+# Copyright (C) 2001 Hewlett-Packard Co.
-+
-+
-+O_TARGET := storage_fd_drv.o
-+list-multi := storage_fd.o
-+
-+storage_fd-objs := storage-fd.o storageproto.o schedule_task.o # netproto.o crc32.o
-+
-+# Object file lists.
-+
-+obj-y :=
-+obj-m :=
-+obj-n :=
-+obj- :=
-+
-+# Each configuration option enables a list of files.
-+
-+obj-$(CONFIG_USBD_STORAGE) += storage_fd.o
-+
-+# Extract lists of the multi-part drivers.
-+# The 'int-*' lists are the intermediate files used to build the multi's.
-+
-+multi-y := $(filter $(list-multi), $(obj-y))
-+multi-m := $(filter $(list-multi), $(obj-m))
-+int-y := $(sort $(foreach m, $(multi-y), $($(basename $(m))-objs)))
-+int-m := $(sort $(foreach m, $(multi-m), $($(basename $(m))-objs)))
-+
-+# Files that are both resident and modular: remove from modular.
-+
-+obj-m := $(filter-out $(obj-y), $(obj-m))
-+int-m := $(filter-out $(int-y), $(int-m))
-+
-+# Translate to Rules.make lists.
-+
-+O_OBJS := $(filter-out $(export-objs), $(obj-y))
-+OX_OBJS := $(filter $(export-objs), $(obj-y))
-+M_OBJS := $(sort $(filter-out $(export-objs), $(obj-m)))
-+MX_OBJS := $(sort $(filter $(export-objs), $(obj-m)))
-+MI_OBJS := $(sort $(filter-out $(export-objs), $(int-m)))
-+MIX_OBJS := $(sort $(filter $(export-objs), $(int-m)))
-+
-+# The global Rules.make.
-+
-+include $(TOPDIR)/Rules.make
-+
-+# Link rules for multi-part drivers.
-+
-+storage_fd.o: $(storage_fd-objs)
-+ $(LD) -r -o $@ $(storage_fd-objs)
-+
-+# dependencies:
-+
-+storage-fd.o: ../usbd.h ../usbd-bus.h ../usbd-func.h
-+
-diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/schedule_task.c linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/schedule_task.c
---- linux-2.4.18/drivers/usb/device/storage_fd/schedule_task.c 1970-01-01 03:00:00.000000000 +0300
-+++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/schedule_task.c 2003-11-07 05:34:43.000000000 +0300
-@@ -0,0 +1,230 @@
-+/*
-+ * linux/drivers/usb/device/storage_fd/schedule_task.c - schedule task library
-+ *
-+ * Copyright (c) 2003 Lineo Solutions, Inc.
-+ *
-+ * Written by Shunnosuke kabata
-+ *
-+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+/******************************************************************************
-+** Include File
-+******************************************************************************/
-+#include <linux/config.h>
-+#include <linux/fs.h>
-+#include <linux/string.h>
-+#include <linux/mm.h>
-+#include <linux/dcache.h>
-+#include <linux/init.h>
-+#include <linux/quotaops.h>
-+#include <linux/slab.h>
-+#include <linux/cache.h>
-+#include <linux/swap.h>
-+#include <linux/swapctl.h>
-+#include <linux/prefetch.h>
-+#include <linux/locks.h>
-+#include <asm/uaccess.h>
-+
-+#include "schedule_task.h"
-+
-+/******************************************************************************
-+** Macro Define
-+******************************************************************************/
-+#define TASK_DESC_NUM (512)
-+
-+/******************************************************************************
-+** Structure Define
-+******************************************************************************/
-+
-+/**************************************
-+** TASK_DESC
-+**************************************/
-+typedef struct _TASK_DESC{
-+ struct _TASK_DESC* next;
-+ SCHEDULE_TASK_FUNC task_entry;
-+ int task_param1;
-+ int task_param2;
-+ int task_param3;
-+ int task_param4;
-+ int task_param5;
-+ char* file;
-+ int line;
-+} TASK_DESC;
-+
-+/**************************************
-+** OS_WRP_TASK_DATA
-+**************************************/
-+typedef struct{
-+ volatile TASK_DESC* read_desc;
-+ volatile TASK_DESC* write_desc;
-+ TASK_DESC desc_pool[TASK_DESC_NUM];
-+ spinlock_t spin_lock;
-+ struct tq_struct task_que;
-+ unsigned long use_num;
-+ unsigned long max_num;
-+} TASK_DATA;
-+
-+/******************************************************************************
-+** Variable Declaration
-+******************************************************************************/
-+static TASK_DATA TaskData;
-+
-+/******************************************************************************
-+** Local Function Prototype
-+******************************************************************************/
-+static void task_entry(void*);
-+
-+/******************************************************************************
-+** Global Function
-+******************************************************************************/
-+void schedule_task_init(void)
-+{
-+ int i;
-+
-+ /* 0 clear */
-+ memset(&TaskData, 0x00, sizeof(TaskData));
-+
-+ /* Read/write pointer initialize */
-+ TaskData.read_desc = TaskData.write_desc = &TaskData.desc_pool[0];
-+
-+ /* Ling buffer initialize */
-+ for(i=0; i<(TASK_DESC_NUM-1); i++){
-+ TaskData.desc_pool[i].next = &TaskData.desc_pool[i+1];
-+ }
-+ TaskData.desc_pool[i].next = &TaskData.desc_pool[0];
-+
-+ /* Spin lock initialize */
-+ spin_lock_init(&TaskData.spin_lock);
-+
-+ /* Task queue initialize */
-+ PREPARE_TQUEUE(&TaskData.task_que, task_entry, &TaskData);
-+
-+ return;
-+}
-+
-+int schedule_task_register(SCHEDULE_TASK_FUNC entry, int param1, int param2,
-+ int param3, int param4, int param5)
-+{
-+ unsigned long flags = 0;
-+
-+ spin_lock_irqsave(&TaskData.spin_lock, flags);
-+
-+ /* Free descriptor check */
-+ if(TaskData.write_desc->next == TaskData.read_desc){
-+ printk(KERN_INFO "storage_fd: schedule task no descriptor.\n");
-+ spin_unlock_irqrestore(&TaskData.spin_lock, flags);
-+ return -1;
-+ }
-+
-+ /* Descriptor set */
-+ TaskData.write_desc->task_entry = entry;
-+ TaskData.write_desc->task_param1 = param1;
-+ TaskData.write_desc->task_param2 = param2;
-+ TaskData.write_desc->task_param3 = param3;
-+ TaskData.write_desc->task_param4 = param4;
-+ TaskData.write_desc->task_param5 = param5;
-+
-+ /* Pointer update */
-+ TaskData.write_desc = TaskData.write_desc->next;
-+
-+ /* Statistics set */
-+ TaskData.use_num++;
-+ if(TaskData.use_num > TaskData.max_num){
-+ TaskData.max_num = TaskData.use_num;
-+ }
-+
-+ spin_unlock_irqrestore(&TaskData.spin_lock, flags);
-+
-+ /* Task queue register */
-+ schedule_task(&TaskData.task_que);
-+
-+ return 0;
-+}
-+
-+void schedule_task_all_unregister(void)
-+{
-+ unsigned long flags = 0;
-+
-+ spin_lock_irqsave(&TaskData.spin_lock, flags);
-+ TaskData.read_desc = TaskData.write_desc;
-+ TaskData.use_num = 0;
-+ spin_unlock_irqrestore(&TaskData.spin_lock, flags);
-+}
-+
-+ssize_t schedule_task_proc_read(struct file* file, char* buf, size_t count,
-+ loff_t* pos)
-+{
-+ char string[1024];
-+ int len = 0;
-+
-+ len += sprintf(string + len, "Schedule task max num:0x%d\n",
-+ TASK_DESC_NUM);
-+
-+ len += sprintf(string + len, "Schedule task use num:0x%ld\n",
-+ TaskData.use_num);
-+
-+ len += sprintf(string + len, "Schedule task max use num:0x%ld\n",
-+ TaskData.max_num);
-+
-+ *pos += len;
-+ if(len > count){
-+ len = -EINVAL;
-+ }
-+ else
-+ if(len > 0 && copy_to_user(buf, string, len)) {
-+ len = -EFAULT;
-+ }
-+
-+ return len;
-+}
-+
-+/******************************************************************************
-+** Local Function
-+******************************************************************************/
-+static void task_entry(void* data)
-+{
-+ int cond;
-+ unsigned long flags = 0;
-+ volatile TASK_DESC* desc;
-+
-+ for(;;){
-+
-+ spin_lock_irqsave(&TaskData.spin_lock, flags);
-+ desc = TaskData.read_desc;
-+ cond = (TaskData.read_desc == TaskData.write_desc);
-+ spin_unlock_irqrestore(&TaskData.spin_lock, flags);
-+
-+ if(cond) break;
-+
-+ /* Task call */
-+ desc->task_entry(desc->task_param1, desc->task_param2,
-+ desc->task_param3, desc->task_param4, desc->task_param5);
-+
-+ spin_lock_irqsave(&TaskData.spin_lock, flags);
-+
-+ /* Pointer update */
-+ TaskData.read_desc = TaskData.read_desc->next;
-+
-+ /* Statistics set */
-+ TaskData.use_num--;
-+
-+ spin_unlock_irqrestore(&TaskData.spin_lock, flags);
-+ }
-+
-+ return;
-+}
-+
-diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/schedule_task.h linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/schedule_task.h
---- linux-2.4.18/drivers/usb/device/storage_fd/schedule_task.h 1970-01-01 03:00:00.000000000 +0300
-+++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/schedule_task.h 2003-11-07 05:34:43.000000000 +0300
-@@ -0,0 +1,41 @@
-+/*
-+ * linux/drivers/usb/device/storage_fd/schedule_task.h - schedule task library header
-+ *
-+ * Copyright (c) 2003 Lineo Solutions, Inc.
-+ *
-+ * Written by Shunnosuke kabata
-+ *
-+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef _SCHEDULE_TASK_H_
-+#define _SCHEDULE_TASK_H_
-+
-+/******************************************************************************
-+** Macro Define
-+******************************************************************************/
-+typedef int (*SCHEDULE_TASK_FUNC)(int, int, int, int, int);
-+
-+/******************************************************************************
-+** Global Function Prototype
-+******************************************************************************/
-+void schedule_task_init(void);
-+int schedule_task_register(SCHEDULE_TASK_FUNC, int, int, int, int, int);
-+void schedule_task_all_unregister(void);
-+ssize_t schedule_task_proc_read(struct file*, char*, size_t, loff_t*);
-+
-+#endif /* _SCHEDULE_TASK_H_ */
-+
-diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/storage-fd.c linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storage-fd.c
---- linux-2.4.18/drivers/usb/device/storage_fd/storage-fd.c 1970-01-01 03:00:00.000000000 +0300
-+++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storage-fd.c 2003-11-07 05:34:43.000000000 +0300
-@@ -0,0 +1,865 @@
-+/*
-+ * linux/drivers/usb/device/storage_fd/storage-fd.c - mass storage function driver
-+ *
-+ * Copyright (c) 2003 Lineo Solutions, Inc.
-+ *
-+ * Written by Shunnosuke kabata
-+ *
-+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ * Based on
-+ *
-+ * linux/drivers/usbd/net_fd/net-fd.c - network function driver
-+ *
-+ * Copyright (c) 2000, 2001, 2002 Lineo
-+ * Copyright (c) 2001 Hewlett Packard
-+ *
-+ * By:
-+ * Stuart Lynne <sl@lineo.com>,
-+ * Tom Rushworth <tbr@lineo.com>,
-+ * Bruce Balden <balden@lineo.com>
-+ *
-+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+/******************************************************************************
-+** Include File
-+******************************************************************************/
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include "../usbd-export.h"
-+#include "../usbd-build.h"
-+#include "../usbd-module.h"
-+
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/list.h>
-+#include <linux/netdevice.h>
-+#include <linux/skbuff.h>
-+#include <linux/etherdevice.h>
-+#include <linux/rtnetlink.h>
-+#include <linux/smp_lock.h>
-+#include <linux/ctype.h>
-+#include <linux/timer.h>
-+#include <linux/string.h>
-+#include <linux/atmdev.h>
-+#include <linux/pkt_sched.h>
-+#include <linux/delay.h>
-+#include <asm/uaccess.h>
-+#include <asm/system.h>
-+#include <net/arp.h>
-+
-+#include <linux/autoconf.h>
-+
-+#include "../usbd.h"
-+#include "../usbd-func.h"
-+#include "../usbd-bus.h"
-+#include "../usbd-inline.h"
-+#include "../usbd-arch.h"
-+#include "../hotplug.h"
-+
-+#include "schedule_task.h"
-+#include "storageproto.h"
-+
-+/******************************************************************************
-+** Macro Define
-+******************************************************************************/
-+
-+/**************************************
-+** Module Information
-+**************************************/
-+
-+MODULE_AUTHOR("Shunnosuke kabata");
-+MODULE_DESCRIPTION("USB Device Mass Storage Function");
-+USBD_MODULE_INFO("storage_fd 0.1");
-+
-+/**************************************
-+** Configration Check
-+**************************************/
-+
-+#if !defined (CONFIG_USBD_VENDORID) && !defined(CONFIG_USBD_STORAGE_VENDORID)
-+#error No Vendor ID
-+#endif
-+#if !defined (CONFIG_USBD_PRODUCTID) && !defined(CONFIG_USBD_STORAGE_PRODUCTID)
-+#error No Product ID
-+#endif
-+
-+#if defined(CONFIG_USBD_STORAGE_VENDORID) && (CONFIG_USBD_STORAGE_VENDORID > 0)
-+#undef CONFIG_USBD_VENDORID
-+#define CONFIG_USBD_VENDORID CONFIG_USBD_STORAGE_VENDORID
-+#endif
-+
-+#if defined(CONFIG_USBD_STORAGE_PRODUCTID) && (CONFIG_USBD_STORAGE_PRODUCTID > 0)
-+#undef CONFIG_USBD_PRODUCTID
-+#define CONFIG_USBD_PRODUCTID CONFIG_USBD_STORAGE_PRODUCTID
-+#endif
-+
-+#ifndef CONFIG_USBD_MAXPOWER
-+#define CONFIG_USBD_MAXPOWER 0
-+#endif
-+
-+#ifndef CONFIG_USBD_MANUFACTURER
-+#define CONFIG_USBD_MANUFACTURER "Sharp"
-+#endif
-+
-+#define MAXTRANSFER (512)
-+
-+#ifndef CONFIG_USBD_VENDORID
-+#error "CONFIG_USBD_VENDORID not defined"
-+#endif
-+
-+#ifndef CONFIG_USBD_PRODUCTID
-+#error "CONFIG_USBD_PRODUCTID not defined"
-+#endif
-+
-+#ifndef CONFIG_USBD_PRODUCT_NAME
-+#define CONFIG_USBD_PRODUCT_NAME "Linux Mass Storage Driver"
-+#endif
-+
-+#ifndef CONFIG_USBD_SERIAL_NUMBER_STR
-+#define CONFIG_USBD_SERIAL_NUMBER_STR ""
-+#endif
-+
-+/*
-+ * USB 2.0 spec does not mention it, but MaxPower is expected to be at least one
-+ * and is tested for in USB configuration tests.
-+ */
-+
-+#ifdef CONFIG_USBD_SELFPOWERED
-+#define BMATTRIBUTE BMATTRIBUTE_RESERVED | BMATTRIBUTE_SELF_POWERED
-+#define BMAXPOWER 1
-+#else
-+#define BMATTRIBUTE BMATTRIBUTE_RESERVED
-+#define BMAXPOWER CONFIG_USBD_MAXPOWER
-+#endif
-+
-+/*
-+ * setup some default values for pktsizes and endpoint addresses.
-+ */
-+
-+#ifndef CONFIG_USBD_STORAGE_OUT_PKTSIZE
-+#define CONFIG_USBD_STORAGE_OUT_PKTSIZE 64
-+#endif
-+
-+#ifndef CONFIG_USBD_STORAGE_IN_PKTSIZE
-+#define CONFIG_USBD_STORAGE_IN_PKTSIZE 64
-+#endif
-+
-+#ifndef CONFIG_USBD_STORAGE_INT_PKTSIZE
-+#define CONFIG_USBD_STORAGE_INT_PKTSIZE 16
-+#endif
-+
-+#ifndef CONFIG_USBD_STORAGE_OUT_ENDPOINT
-+#define CONFIG_USBD_STORAGE_OUT_ENDPOINT 1
-+#endif
-+
-+#ifndef CONFIG_USBD_STORAGE_IN_ENDPOINT
-+#define CONFIG_USBD_STORAGE_IN_ENDPOINT 2
-+#endif
-+
-+#ifndef CONFIG_USBD_STORAGE_INT_ENDPOINT
-+#define CONFIG_USBD_STORAGE_INT_ENDPOINT 3
-+#endif
-+
-+/*
-+ * check for architecture specific endpoint configurations
-+ */
-+
-+#if defined(ABS_OUT_ADDR)
-+ //#warning
-+ //#warning USING ABS ENDPOINT OUT ADDRESS
-+ #undef CONFIG_USBD_STORAGE_OUT_ENDPOINT
-+
-+ #if ABS_OUT_ADDR > 0
-+ #define CONFIG_USBD_STORAGE_OUT_ENDPOINT ABS_OUT_ADDR
-+ #endif
-+
-+#elif defined(MAX_OUT_ADDR) && defined(CONFIG_USBD_STORAGE_OUT_ENDPOINT) && (CONFIG_USBD_STORAGE_OUT_ENDPOINT > MAX_OUT_ADDR)
-+ //#warning
-+ //#warning USING DEFAULT ENDPOINT OUT ADDRESS
-+ #undef CONFIG_USBD_STORAGE_OUT_ENDPOINT
-+ #define CONFIG_USBD_STORAGE_OUT_ENDPOINT DFL_OUT_ADDR
-+
-+#endif /* elif */
-+
-+#if defined(ABS_IN_ADDR)
-+ //#warning
-+ //#warning USING ABS ENDPOINT IN ADDRESS
-+ #undef CONFIG_USBD_STORAGE_IN_ENDPOINT
-+
-+ #if ABS_IN_ADDR > 0
-+ #define CONFIG_USBD_STORAGE_IN_ENDPOINT ABS_IN_ADDR
-+ #endif
-+
-+#elif defined(MAX_IN_ADDR) && defined(CONFIG_USBD_STORAGE_IN_ENDPOINT) && (CONFIG_USBD_STORAGE_IN_ENDPOINT > MAX_IN_ADDR)
-+ //#warning
-+ //#warning USING DEFAULT ENDPOINT IN ADDRESS
-+ #undef CONFIG_USBD_STORAGE_IN_ENDPOINT
-+ #define CONFIG_USBD_STORAGE_IN_ENDPOINT DFL_IN_ADDR
-+
-+#endif /* elif */
-+
-+#if defined(ABS_INT_ADDR)
-+ //#warning
-+ //#warning USING ABS ENDPOINT INT ADDRESS
-+ #undef CONFIG_USBD_STORAGE_INT_ENDPOINT
-+
-+ #if ABS_INT_ADDR
-+ #define CONFIG_USBD_STORAGE_INT_ENDPOINT ABS_INT_ADDR
-+ #endif
-+
-+#elif defined(MAX_INT_ADDR) && defined(CONFIG_USBD_STORAGE_INT_ENDPOINT) && (CONFIG_USBD_STORAGE_INT_ENDPOINT > MAX_INT_ADDR)
-+ //#warning
-+ //#warning USING DEFAULT ENDPOINT INT ADDRESS
-+ #undef CONFIG_USBD_STORAGE_INT_ENDPOINT
-+ #define CONFIG_USBD_STORAGE_INT_ENDPOINT DFL_INT_ADDR
-+
-+#endif /* elif */
-+
-+#if defined(MAX_OUT_PKTSIZE) && defined(CONFIG_USBD_STORAGE_OUT_PKTSIZE) && CONFIG_USBD_STORAGE_OUT_PKTSIZE > MAX_OUT_PKTSIZE
-+ //#warning
-+ //#warning OVERIDING ENDPOINT OUT PKTSIZE
-+ #undef CONFIG_USBD_STORAGE_OUT_PKTSIZE
-+ #define CONFIG_USBD_STORAGE_OUT_PKTSIZE MAX_OUT_PKTSIZE
-+#endif
-+
-+#if defined(MAX_IN_PKTSIZE) && defined(CONFIG_USBD_STORAGE_IN_PKTSIZE) && CONFIG_USBD_STORAGE_IN_PKTSIZE > MAX_IN_PKTSIZE
-+ //#warning
-+ //#warning OVERIDING ENDPOINT IN PKTSIZE
-+ #undef CONFIG_USBD_STORAGE_IN_PKTSIZE
-+ #define CONFIG_USBD_STORAGE_IN_PKTSIZE MAX_IN_PKTSIZE
-+#endif
-+
-+#if defined(MAX_INT_PKTSIZE) && defined(CONFIG_USBD_STORAGE_INT_PKTSIZE) && CONFIG_USBD_STORAGE_INT_PKTSIZE > MAX_INT_PKTSIZE
-+ //#warning
-+ //#warning OVERIDING ENDPOINT INT PKTSIZE
-+ #undef CONFIG_USBD_STORAGE_INT_PKTSIZE
-+ #define CONFIG_USBD_STORAGE_INT_PKTSIZE MAX_INT_PKTSIZE
-+#endif
-+
-+/******************************************************************************
-+** Variable Declaration
-+******************************************************************************/
-+
-+/**************************************
-+** Module Parameters
-+**************************************/
-+
-+static u32 vendor_id;
-+static u32 product_id;
-+static int out_pkt_sz = CONFIG_USBD_STORAGE_OUT_PKTSIZE;
-+static int in_pkt_sz = CONFIG_USBD_STORAGE_IN_PKTSIZE;
-+
-+MODULE_PARM(vendor_id, "i");
-+MODULE_PARM(product_id, "i");
-+MODULE_PARM(out_pkt_sz, "i");
-+MODULE_PARM(in_pkt_sz, "i");
-+
-+MODULE_PARM_DESC(vendor_id, "vendor id");
-+MODULE_PARM_DESC(product_id, "product id");
-+
-+/**************************************
-+** Mass Storage Configuration
-+**************************************/
-+
-+/*
-+ * Data Interface Alternate 1 endpoints
-+ */
-+static __initdata struct usb_endpoint_description StorageAlt1Endpoints[] = {
-+ {
-+ bEndpointAddress:CONFIG_USBD_STORAGE_OUT_ENDPOINT,
-+ bmAttributes:BULK,
-+ wMaxPacketSize:CONFIG_USBD_STORAGE_OUT_PKTSIZE,
-+ bInterval:0,
-+ direction:OUT,
-+ transferSize:MAXTRANSFER,
-+ },
-+
-+ {
-+ bEndpointAddress:CONFIG_USBD_STORAGE_IN_ENDPOINT,
-+ bmAttributes:BULK,
-+ wMaxPacketSize:CONFIG_USBD_STORAGE_IN_PKTSIZE,
-+ bInterval:0,
-+ direction:IN,
-+ transferSize:MAXTRANSFER,
-+ },
-+
-+#if defined(CONFIG_USBD_STORAGE_INT_ENDPOINT) && (CONFIG_USBD_STORAGE_INT_ENDPOINT > 0)
-+ {
-+ bEndpointAddress:CONFIG_USBD_STORAGE_INT_ENDPOINT,
-+ bmAttributes:INTERRUPT,
-+ wMaxPacketSize:CONFIG_USBD_STORAGE_INT_PKTSIZE,
-+ bInterval:10,
-+ direction:IN,
-+ transferSize:CONFIG_USBD_STORAGE_INT_PKTSIZE,
-+ },
-+#endif
-+};
-+
-+
-+/*
-+ * Data Interface Alternate description(s)
-+ */
-+static __initdata struct usb_alternate_description StorageAlternateDescriptions[] = {
-+ {
-+ #if defined(CONFIG_USBD_STORAGE_NO_STRINGS)
-+ iInterface:"",
-+ #else
-+ iInterface:"Mass Storage Interface",
-+ #endif
-+ bAlternateSetting:0,
-+ classes:0,
-+ class_list:NULL,
-+ endpoints:sizeof (StorageAlt1Endpoints) / sizeof (struct usb_endpoint_description),
-+ endpoint_list:StorageAlt1Endpoints,
-+ },
-+};
-+
-+/*
-+ * Interface description(s)
-+ */
-+static __initdata struct usb_interface_description StorageInterfaces[] = {
-+ {
-+ #if defined(CONFIG_USBD_STORAGE_NO_STRINGS)
-+ iInterface:"",
-+ #else
-+ iInterface:"Mass Storage Interface",
-+ #endif
-+ bInterfaceClass:MASS_STORAGE_CLASS,
-+ bInterfaceSubClass:MASS_STORAGE_SUBCLASS_SCSI,
-+ bInterfaceProtocol:MASS_STORAGE_PROTO_BULK_ONLY,
-+ alternates:sizeof (StorageAlternateDescriptions) / sizeof (struct usb_alternate_description),
-+ alternate_list:StorageAlternateDescriptions,
-+ },
-+};
-+
-+/******************************************************************************
-+** USB Configuration
-+******************************************************************************/
-+
-+/*
-+ * Configuration description(s)
-+ */
-+struct __initdata usb_configuration_description StorageDescription[] = {
-+ {
-+ #if defined(CONFIG_USBD_STORAGE_NO_STRINGS)
-+ iConfiguration:"",
-+ #else
-+ iConfiguration:"Mass Storage Configuration",
-+ #endif
-+ bmAttributes:BMATTRIBUTE,
-+ bMaxPower:BMAXPOWER,
-+ interfaces:sizeof (StorageInterfaces) / sizeof (struct usb_interface_description),
-+ interface_list:StorageInterfaces,
-+ },
-+};
-+
-+/*
-+ * Device Description
-+ */
-+struct __initdata usb_device_description StorageDeviceDescription = {
-+ bDeviceClass:0,
-+ bDeviceSubClass:0, // XXX
-+ bDeviceProtocol:0, // XXX
-+ idVendor:CONFIG_USBD_VENDORID,
-+ idProduct:CONFIG_USBD_PRODUCTID,
-+ iManufacturer:CONFIG_USBD_MANUFACTURER,
-+ iProduct:CONFIG_USBD_PRODUCT_NAME,
-+ iSerialNumber:CONFIG_USBD_SERIAL_NUMBER_STR,
-+};
-+
-+/**************************************
-+** Other Variable
-+**************************************/
-+static int storage_exit_flag = 0;
-+static pid_t storage_pid = 0;
-+static struct semaphore storage_sem;
-+struct timer_list storage_usb_event_tim;
-+
-+
-+/******************************************************************************
-+** Global Function
-+******************************************************************************/
-+
-+void storage_urb_send(struct usb_device_instance* device, void* buffer,
-+ int length)
-+{
-+ int port = 0;
-+ struct urb* urb;
-+
-+ if(!(urb = usbd_alloc_urb(device,
-+ device->function_instance_array + port,
-+ CONFIG_USBD_STORAGE_IN_ENDPOINT,
-+ length + 5 + in_pkt_sz))){
-+ printk(KERN_INFO "storage_fd: usbd_alloc_urb failed. length '%d'.\n", length);
-+ return;
-+ }
-+
-+ if(buffer){
-+ memcpy(urb->buffer, buffer, length);
-+ }
-+ else{
-+ memset(urb->buffer, 0x00, length);
-+ }
-+ urb->actual_length = length;
-+
-+ if(usbd_send_urb(urb)){
-+ printk(KERN_INFO "storage_fd: usbd_send_urb failed.\n");
-+ usbd_dealloc_urb(urb);
-+ return;
-+ }
-+
-+ return;
-+}
-+
-+/******************************************************************************
-+** Local Function
-+******************************************************************************/
-+
-+/**************************************
-+** Called when a USB Device is created or destroyed
-+**************************************/
-+
-+static int storage_thread(void *_c)
-+{
-+ siginfo_t info;
-+ unsigned long signr;
-+ char buff[32];
-+
-+ /* current status set */
-+ daemonize();
-+
-+ /* PID set */
-+ storage_pid = current->pid;
-+
-+ /* thread name set */
-+ sprintf(current->comm, STORAGE_THREAD_NAME);
-+ (current)->nice = 10;
-+
-+ /* signal register */
-+ spin_lock_irq(&current->sigmask_lock);
-+ siginitsetinv(&current->blocked,
-+ sigmask(SIGUSR1) | sigmask(SIGHUP) | sigmask(SIGKILL) |
-+ sigmask(SIGSTOP) | sigmask(SIGCONT) | sigmask(SIGTERM) |
-+ sigmask(SIGALRM));
-+ recalc_sigpending(current);
-+ spin_unlock_irq(&current->sigmask_lock);
-+
-+ /* media open */
-+ schedule_task_register(
-+ (SCHEDULE_TASK_FUNC)storageproto_media_status_check, CONTEXT_STORAGE,
-+ 0, 0, 0, 0);
-+
-+ /* thread active indicate */
-+ sprintf(buff, "%d\n", storage_pid);
-+ hotplug("usbdstorage", buff, "active");
-+
-+ for(;;){
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (!signal_pending(current)) {
-+ schedule();
-+ continue;
-+ }
-+
-+ spin_lock_irq(&current->sigmask_lock);
-+ signr = dequeue_signal(&current->blocked, &info);
-+ spin_unlock_irq(&current->sigmask_lock);
-+
-+ switch(signr) {
-+ case SIGHUP:
-+ /* media signal indicate */
-+ schedule_task_register(
-+ (SCHEDULE_TASK_FUNC)storageproto_media_status_check, CONTEXT_STORAGE,
-+ 0, 0, 0, 0);
-+
-+ DBG_STORAGE_FD(KERN_INFO "storage_fd: signal receive 'SIGHUP'.\n");
-+ break;
-+
-+ default:
-+ DBG_STORAGE_FD(KERN_INFO "storage_fd: signal receive '%ld'\n", signr);
-+ break;
-+ }
-+
-+ if(storage_exit_flag) break;
-+ }
-+ /* current status set */
-+ current->state = TASK_RUNNING;
-+
-+ /* PID clear */
-+ storage_pid = 0;
-+
-+ /* thread inactive indicate */
-+ hotplug("usbdstorage", buff, "inactive");
-+
-+ up(&storage_sem);
-+
-+ return 0;
-+}
-+
-+static void storage_function_init(struct usb_bus_instance* bus,
-+ struct usb_device_instance* device,
-+ struct usb_function_driver* function_driver)
-+{
-+ /* schedule task init */
-+ schedule_task_init();
-+
-+ /* storage protocol initialize */
-+ storageproto_init();
-+
-+ /* semaphore init */
-+ sema_init(&storage_sem, 0);
-+
-+ /* timer initialize */
-+ init_timer(&storage_usb_event_tim);
-+
-+ /* thread create */
-+ storage_pid = kernel_thread(storage_thread, NULL, 0);
-+
-+ return;
-+}
-+
-+static void storage_function_exit(struct usb_device_instance* device)
-+{
-+ /* thread kill */
-+ storage_exit_flag = 1;
-+ kill_proc(storage_pid, SIGKILL, 1);
-+ down(&storage_sem);
-+
-+ /* delete timer */
-+ del_timer(&storage_usb_event_tim);
-+
-+ /* storage protocol exit */
-+ storageproto_exit();
-+
-+ /* schedule task delete */
-+ schedule_task_all_unregister();
-+
-+ return;
-+}
-+
-+
-+/**************************************
-+** Called to handle USB Events
-+**************************************/
-+
-+static void storage_usb_event_delay_timeout(unsigned long param)
-+{
-+ /* media signal indicate */
-+ schedule_task_register(
-+ (SCHEDULE_TASK_FUNC)storageproto_usb_status_check, (int)param,
-+ 0, 0, 0, 0);
-+
-+ return;
-+}
-+
-+/*
-+ * storage_event - process a device event
-+ * @device: usb device
-+ * @event: the event that happened
-+ *
-+ * Called by the usb device core layer to respond to various USB events.
-+ *
-+ * This routine IS called at interrupt time. Please use the usual precautions.
-+ *
-+ */
-+void storage_event(struct usb_device_instance* device,
-+ usb_device_event_t event, int data)
-+{
-+#if 0
-+ static struct {
-+ usb_device_event_t event;
-+ char* string;
-+ } eventAnal[] = {
-+ {DEVICE_UNKNOWN, "DEVICE_UNKNOWN"},
-+ {DEVICE_INIT, "DEVICE_INIT"},
-+ {DEVICE_CREATE, "DEVICE_CREATE"},
-+ {DEVICE_HUB_CONFIGURED, "DEVICE_HUB_CONFIGURED"},
-+ {DEVICE_RESET, "DEVICE_RESET"},
-+ {DEVICE_ADDRESS_ASSIGNED, "DEVICE_ADDRESS_ASSIGNED"},
-+ {DEVICE_CONFIGURED, "DEVICE_CONFIGURED"},
-+ {DEVICE_SET_INTERFACE, "DEVICE_SET_INTERFACE"},
-+ {DEVICE_SET_FEATURE, "DEVICE_SET_FEATURE"},
-+ {DEVICE_CLEAR_FEATURE, "DEVICE_CLEAR_FEATURE"},
-+ {DEVICE_DE_CONFIGURED, "DEVICE_DE_CONFIGURED"},
-+ {DEVICE_BUS_INACTIVE, "DEVICE_BUS_INACTIVE"},
-+ {DEVICE_BUS_ACTIVITY, "DEVICE_BUS_ACTIVITY"},
-+ {DEVICE_POWER_INTERRUPTION, "DEVICE_POWER_INTERRUPTION"},
-+ {DEVICE_HUB_RESET, "DEVICE_HUB_RESET"},
-+ {DEVICE_DESTROY, "DEVICE_DESTROY"},
-+ {DEVICE_FUNCTION_PRIVATE, "DEVICE_FUNCTION_PRIVATE"}
-+ };
-+ int i;
-+
-+ for(i=0; i<(sizeof(eventAnal)/sizeof(eventAnal[0])); i++){
-+ if(event == eventAnal[i].event){
-+ DBG_STORAGE_FD(KERN_INFO "storage_fd: event receive '%s'.\n",
-+ eventAnal[i].string);
-+ break;
-+ }
-+ }
-+ if(i == (sizeof(eventAnal)/sizeof(eventAnal[0]))){
-+ DBG_STORAGE_FD(KERN_INFO "storage_fd: unknown event receive.\n");
-+ }
-+#endif
-+
-+ switch(event){
-+ case DEVICE_ADDRESS_ASSIGNED:
-+ {
-+ static int Is1stCheck = 1;
-+ if(Is1stCheck){
-+ Is1stCheck = 0;
-+
-+ /* delay timer set */
-+ del_timer(&storage_usb_event_tim);
-+ storage_usb_event_tim.expires = jiffies + ((USB_EVENT_DELAY_TIM * HZ) / 1000);
-+ storage_usb_event_tim.data = USB_DISCONNECT;
-+ storage_usb_event_tim.function = storage_usb_event_delay_timeout;
-+ add_timer(&storage_usb_event_tim);
-+ break;
-+ }
-+ }
-+ case DEVICE_BUS_ACTIVITY:
-+ /* delay timer set */
-+ del_timer(&storage_usb_event_tim);
-+ storage_usb_event_tim.expires = jiffies + ((USB_EVENT_DELAY_TIM * HZ) / 1000);
-+ storage_usb_event_tim.data = USB_CONNECT;
-+ storage_usb_event_tim.function = storage_usb_event_delay_timeout;
-+ add_timer(&storage_usb_event_tim);
-+ break;
-+
-+ case DEVICE_BUS_INACTIVE:
-+ /* delay timer set */
-+ del_timer(&storage_usb_event_tim);
-+ storage_usb_event_tim.expires = jiffies + ((USB_EVENT_DELAY_TIM * HZ) / 1000);
-+ storage_usb_event_tim.data = USB_DISCONNECT;
-+ storage_usb_event_tim.function = storage_usb_event_delay_timeout;
-+ add_timer(&storage_usb_event_tim);
-+ break;
-+
-+ case DEVICE_RESET:
-+ schedule_task_register(
-+ (SCHEDULE_TASK_FUNC)storageproto_usb_reset_ind,
-+ 0, 0, 0, 0, 0);
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+ return;
-+}
-+
-+/*
-+ * storage_recv_setup - called with a control URB
-+ * @urb - pointer to struct urb
-+ *
-+ * Check if this is a setup packet, process the device request, put results
-+ * back into the urb and return zero or non-zero to indicate success (DATA)
-+ * or failure (STALL).
-+ *
-+ * This routine IS called at interrupt time. Please use the usual precautions.
-+ *
-+ */
-+int storage_recv_setup(struct urb* urb)
-+{
-+ return 0;
-+}
-+
-+/*
-+ * storage_recv_urb - called with a received URB
-+ * @urb - pointer to struct urb
-+ *
-+ * Return non-zero if we failed and urb is still valid (not disposed)
-+ *
-+ * This routine IS called at interrupt time. Please use the usual precautions.
-+ *
-+ */
-+int storage_recv_urb(struct urb* urb)
-+{
-+ int port = 0; // XXX compound device
-+ struct usb_device_instance* device;
-+ struct usb_function_instance* function;
-+
-+ if(!urb || !(device = urb->device) ||
-+ !(function = device->function_instance_array + port)){
-+ return -EINVAL;
-+ }
-+
-+ if(urb->status != RECV_OK){
-+ return -EINVAL;
-+ }
-+
-+ /* URB urb_analysis */
-+ schedule_task_register(
-+ (SCHEDULE_TASK_FUNC)storageproto_urb_analysis, (int)urb,
-+ 0, 0, 0, 0);
-+
-+ return 0;
-+}
-+
-+/*
-+ * storage_urb_sent - called to indicate URB transmit finished
-+ * @urb: pointer to struct urb
-+ * @rc: result
-+ *
-+ * The usb device core layer will use this to let us know when an URB has
-+ * been finished with.
-+ *
-+ * This routine IS called at interrupt time. Please use the usual precautions.
-+ *
-+ */
-+int storage_urb_sent(struct urb* urb, int rc)
-+{
-+ int port = 0; // XXX compound device
-+ struct usb_device_instance* device;
-+ struct usb_function_instance* function;
-+
-+ if(!urb || !(device = urb->device) ||
-+ !(function = device->function_instance_array + port)){
-+ return -EINVAL;
-+ }
-+
-+ usbd_dealloc_urb (urb);
-+
-+ return 0;
-+}
-+
-+/**************************************
-+** Proc file system
-+**************************************/
-+
-+static ssize_t storage_proc_read(struct file* file, char* buf, size_t count,
-+ loff_t* pos)
-+{
-+ int len = 0, ret;
-+
-+ if(*pos > 0) return 0;
-+
-+ if((ret = storageproto_proc_read(file, buf + len, count - len, pos)) < 0){
-+ return ret;
-+ }
-+ len += ret;
-+
-+ if((ret = schedule_task_proc_read(file, buf + len, count - len, pos)) < 0){
-+ return ret;
-+ }
-+ len += ret;
-+
-+ return len;
-+}
-+
-+static struct file_operations StorageProcOps = {
-+ read:storage_proc_read,
-+};
-+
-+/**************************************
-+** Module init and exit
-+**************************************/
-+
-+struct usb_function_operations StorageFunctionOps = {
-+ event:storage_event,
-+ recv_urb:storage_recv_urb,
-+ recv_setup:storage_recv_setup,
-+ urb_sent:storage_urb_sent,
-+ function_init:storage_function_init,
-+ function_exit:storage_function_exit,
-+};
-+
-+struct usb_function_driver StorageFunctionDriver = {
-+ name:"Mass Storage",
-+ ops:&StorageFunctionOps,
-+ device_description:&StorageDeviceDescription,
-+ configurations:sizeof (StorageDescription) / sizeof (struct usb_configuration_description),
-+ configuration_description:StorageDescription,
-+ this_module:THIS_MODULE,
-+};
-+
-+/*
-+ * net_modinit - module init
-+ *
-+ */
-+static int __init net_modinit(void)
-+{
-+ struct proc_dir_entry* proc_entry;
-+
-+ printk(KERN_INFO "storage_fd: %s (OUT=%d,IN=%d)\n",
-+ __usbd_module_info, out_pkt_sz, in_pkt_sz);
-+
-+ printk(KERN_INFO "storage_fd: vendorID: %x productID: %x\n",
-+ CONFIG_USBD_VENDORID, CONFIG_USBD_PRODUCTID);
-+
-+ // verify pkt sizes not too small
-+ if (out_pkt_sz < 3 || in_pkt_sz < 3){
-+ printk(KERN_INFO "storage_fd: Rx pkt size %d or Tx pkt size %d too small\n",
-+ out_pkt_sz, in_pkt_sz);
-+ return (-EINVAL);
-+ }
-+
-+ if(vendor_id){
-+ StorageDeviceDescription.idVendor = vendor_id;
-+ }
-+ if(product_id){
-+ StorageDeviceDescription.idProduct = product_id;
-+ }
-+
-+ // register us with the usb device support layer
-+ if(usbd_register_function(&StorageFunctionDriver)){
-+ printk(KERN_INFO "storage_fd: usbd_register_function failed.\n");
-+ return -EINVAL;
-+ }
-+
-+ // create proc entry
-+ if ((proc_entry = create_proc_entry("usb-storage", 0, 0)) == NULL) {
-+ usbd_deregister_function (&StorageFunctionDriver);
-+ printk(KERN_INFO "storage_fd: create_proc_entry failed.\n");
-+ return -ENOMEM;
-+ }
-+ proc_entry->proc_fops = &StorageProcOps;
-+
-+ return 0;
-+}
-+
-+/*
-+ * function_exit - module cleanup
-+ *
-+ */
-+static void __exit net_modexit (void)
-+{
-+ // de-register us with the usb device support layer
-+ usbd_deregister_function (&StorageFunctionDriver);
-+
-+ // remove proc entry
-+ remove_proc_entry("usb-storage", NULL);
-+
-+ return;
-+}
-+
-+module_init (net_modinit);
-+module_exit (net_modexit);
-diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/storageproto.c linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storageproto.c
---- linux-2.4.18/drivers/usb/device/storage_fd/storageproto.c 1970-01-01 03:00:00.000000000 +0300
-+++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storageproto.c 2003-11-07 05:34:43.000000000 +0300
-@@ -0,0 +1,1505 @@
-+/*
-+ * linux/drivers/usb/device/storage_fd/storageproto.c - mass storage protocol library
-+ *
-+ * Copyright (c) 2003 Lineo Solutions, Inc.
-+ *
-+ * Written by Shunnosuke kabata
-+ *
-+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+/******************************************************************************
-+** Include File
-+******************************************************************************/
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include "../usbd-export.h"
-+#include "../usbd-build.h"
-+#include "../usbd-module.h"
-+
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/list.h>
-+#include <linux/netdevice.h>
-+#include <linux/skbuff.h>
-+#include <linux/etherdevice.h>
-+#include <linux/rtnetlink.h>
-+#include <linux/smp_lock.h>
-+#include <linux/ctype.h>
-+#include <linux/timer.h>
-+#include <linux/string.h>
-+#include <linux/atmdev.h>
-+#include <linux/pkt_sched.h>
-+#include <linux/delay.h>
-+#include <linux/blkdev.h>
-+#include <linux/file.h>
-+#include <asm/uaccess.h>
-+#include <asm/system.h>
-+#include <net/arp.h>
-+
-+#include <linux/autoconf.h>
-+
-+#include "../usbd.h"
-+#include "../usbd-func.h"
-+#include "../usbd-bus.h"
-+#include "../usbd-inline.h"
-+#include "../usbd-arch.h"
-+#include "../hotplug.h"
-+
-+#include "schedule_task.h"
-+#include "storageproto.h"
-+
-+/******************************************************************************
-+** macro define
-+******************************************************************************/
-+
-+#define DEVICE_BLOCK_SIZE 512
-+
-+#define BLOCK_BUFFER_SIZE (1024 * 64)
-+
-+#define DEF_NUMBER_OF_HEADS 0x10
-+#define DEF_SECTORS_PER_TRACK 0x20
-+
-+/******************************************************************************
-+** Structure Define
-+******************************************************************************/
-+
-+typedef struct{
-+ unsigned char scsi_command;
-+ unsigned char* command_name;
-+ void (*scsi_func)(struct usb_device_instance*,
-+ COMMAND_BLOCK_WRAPPER*);
-+} SCSI_ANALYSIS_TBL;
-+
-+typedef struct{
-+ unsigned char scsi_command;
-+ unsigned char* command_name;
-+ void (*bulkout_func)(struct usb_device_instance*,
-+ void*, int);
-+} SCSI_BULKOUT_ANALYSIS_TBL;
-+
-+/******************************************************************************
-+** Variable Declaration
-+******************************************************************************/
-+
-+/**************************************
-+** Module Parameters
-+**************************************/
-+
-+static char* storage_device = CONFIG_USBD_STORAGE_DEF_DEVICE_NAME;
-+MODULE_PARM(storage_device, "s");
-+
-+/**************************************
-+** Device Information
-+**************************************/
-+
-+static struct file* DeviceFile = NULL;
-+static int DeviceSize = 0;
-+static int DeviceBlockSize = DEVICE_BLOCK_SIZE;
-+static int DeviceWrProtect = WR_PROTECT_OFF;
-+
-+/**************************************
-+** Status
-+**************************************/
-+
-+static int StorageStatus = STORAGE_IDLE;
-+static int UsbStatus = USB_DISCONNECT;
-+static int MediaStatus = MEDIA_EJECT;
-+static int MediaChange = MEDIA_CHANGE_OFF;
-+
-+/**************************************
-+** Keep Information
-+**************************************/
-+
-+static SCSI_REQUEST_SENSE_DATA RequestSenseData;
-+static COMMAND_BLOCK_WRAPPER KeepCBW;
-+static unsigned long BulkOutLength = 0;
-+static unsigned char BlockBuffer[BLOCK_BUFFER_SIZE];
-+
-+/**************************************
-+** Statistics
-+**************************************/
-+static unsigned long StatMaxBulkInSize = 0;
-+static unsigned long StatMaxBulkOutSize = 0;
-+static unsigned long StatDevWriteError = 0;
-+static unsigned long StatDevReadError = 0;
-+static unsigned long StatDevFlushError = 0;
-+static unsigned long StatWriteTimout = 0;
-+static unsigned long StatMaxWriteTime = 0;
-+
-+/**************************************
-+** Timer
-+**************************************/
-+static struct timer_list BulkOutTim;
-+static struct timer_list MediaCheckTim;
-+
-+/******************************************************************************
-+** Local Function
-+******************************************************************************/
-+
-+static void storage_bulkout_timeout(unsigned long param)
-+{
-+ /* statistics update */
-+ StatWriteTimout++;
-+ printk(KERN_INFO "storage_fd: write bulk out timeout. length '%ld/%ld'.\n",
-+ BulkOutLength, KeepCBW.dCBWDataTransferLength);
-+
-+ return;
-+}
-+
-+static void media_check_timeout(unsigned long param)
-+{
-+ /* media check */
-+ schedule_task_register(
-+ (SCHEDULE_TASK_FUNC)storageproto_media_status_check, CONTEXT_TIMER,
-+ 0, 0, 0, 0);
-+
-+ return;
-+}
-+
-+static void request_sense_data_set(unsigned char sense_key, unsigned char asc,
-+ unsigned char ascq, unsigned long info)
-+{
-+ /*
-+ * set REQUEST SENSE DATA
-+ */
-+
-+ memset(&RequestSenseData, 0x00, sizeof(RequestSenseData));
-+
-+ RequestSenseData.ErrorCode = 0x70;
-+ RequestSenseData.Valid = (info) ? 1 : 0;
-+ RequestSenseData.SenseKey = sense_key;
-+ memcpy(RequestSenseData.Information, &info, sizeof(info));
-+ RequestSenseData.AdditionalSenseLength = 0x0a;
-+ RequestSenseData.AdditionalSenseCode = asc;
-+ RequestSenseData.AdditionalSenseCodeQualifier = ascq;
-+
-+ return;
-+}
-+
-+static void scsi_inquiry_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ SCSI_INQUIRY_DATA data;
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned long data_len;
-+
-+ /*
-+ * data transport
-+ */
-+
-+ memset(&data, 0x00, sizeof(data));
-+
-+ data.PeripheralDeviceType = 0x00;
-+ data.RMB = 1;
-+ data.ResponseDataFormat = 0x01;
-+ data.AdditionalLength = 0x1f;
-+ strncpy(data.VendorInformation, CONFIG_USBD_MANUFACTURER,
-+ sizeof(data.VendorInformation));
-+ strncpy(data.ProductIdentification, CONFIG_USBD_PRODUCT_NAME,
-+ sizeof(data.ProductIdentification));
-+ strncpy(data.ProductRevisionLevel, PRODUCT_REVISION_LEVEL,
-+ sizeof(data.ProductRevisionLevel));
-+
-+ data_len = sizeof(data);
-+ if(cbw->dCBWDataTransferLength < data_len){
-+ data_len = cbw->dCBWDataTransferLength;
-+ }
-+
-+ storage_urb_send(device, &data, data_len);
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = cbw->dCBWTag;
-+ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len;
-+ csw.bCSWStatus = 0;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ return;
-+}
-+
-+static void scsi_read_format_capacity_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ SCSI_READ_FORMAT_CAPACITY_DATA data;
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned long block_num, data_len;
-+ unsigned short block_len;
-+
-+ /*
-+ * data transport
-+ */
-+
-+ block_num = 0xffffffff;
-+ block_len = (unsigned short)DeviceBlockSize;
-+ block_num = htonl(block_num);
-+ block_len = htons(block_len);
-+
-+ memset(&data, 0x00, sizeof(data));
-+
-+ data.CapacityListHeader.CapacityListLength =
-+ sizeof(data.CurrentMaximumCapacityDescriptor);
-+ memcpy(data.CurrentMaximumCapacityDescriptor.NumberofBlocks, &block_num,
-+ sizeof(block_num));
-+ data.CurrentMaximumCapacityDescriptor.DescriptorCode = 0x03;
-+ memcpy(data.CurrentMaximumCapacityDescriptor.BlockLength + 1, &block_len,
-+ sizeof(block_len));
-+
-+ data_len = sizeof(data);
-+ if(cbw->dCBWDataTransferLength < data_len){
-+ data_len = cbw->dCBWDataTransferLength;
-+ }
-+
-+ storage_urb_send(device, &data, data_len);
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = cbw->dCBWTag;
-+ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len;
-+ csw.bCSWStatus = 0;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ return;
-+}
-+
-+static void scsi_read_capacity_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ SCSI_READ_CAPACITY_DATA data;
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned char data_len, status = 0;
-+
-+ if(DeviceFile == NULL){
-+ /* 0 clear */
-+ memset(&data, 0x00, sizeof(data));
-+
-+ /* data length set */
-+ data_len = cbw->dCBWDataTransferLength;
-+
-+ /* status set */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x02, 0x3a, 0x00, 0x00);
-+ }
-+ else
-+ if(MediaChange == MEDIA_CHANGE_ON){
-+ /* 0 clear */
-+ memset(&data, 0x00, sizeof(data));
-+
-+ /* data length set */
-+ data_len = cbw->dCBWDataTransferLength;
-+
-+ /* status set */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x06, 0x28, 0x00, 0x00);
-+
-+ /* media change flag off */
-+ MediaChange = MEDIA_CHANGE_OFF;
-+ }
-+ else{
-+ unsigned long last_lba, block_len;
-+
-+ /* 0 clear */
-+ memset(&data, 0x00, sizeof(data));
-+
-+ /* data set */
-+ last_lba = (DeviceSize / DeviceBlockSize) - 1;
-+ block_len = DeviceBlockSize;
-+ last_lba = htonl(last_lba);
-+ block_len = htonl(block_len);
-+
-+ memcpy(data.LastLogicalBlockAddress, &last_lba, sizeof(last_lba));
-+ memcpy(data.BlockLengthInBytes, &block_len, sizeof(block_len));
-+
-+ /* data length set */
-+ data_len = sizeof(data);
-+
-+ /* status set */
-+ status = 0;
-+ }
-+
-+ /*
-+ * data transport
-+ */
-+
-+ if(cbw->dCBWDataTransferLength < data_len){
-+ data_len = cbw->dCBWDataTransferLength;
-+ }
-+
-+ storage_urb_send(device, &data, data_len);
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = cbw->dCBWTag;
-+ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len;
-+ csw.bCSWStatus = status;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ return;
-+}
-+
-+static void scsi_request_sense_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned long data_len;
-+
-+ /*
-+ * data transport
-+ */
-+
-+ data_len = sizeof(RequestSenseData);
-+ if(cbw->dCBWDataTransferLength < data_len){
-+ data_len = cbw->dCBWDataTransferLength;
-+ }
-+
-+ storage_urb_send(device, &RequestSenseData, data_len);
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = cbw->dCBWTag;
-+ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len;
-+ csw.bCSWStatus = 0;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ return;
-+}
-+
-+static void scsi_read_10_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ SCSI_READ_10_COMMAND* command = (SCSI_READ_10_COMMAND*)cbw->CBWCB;
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned char status = 0;
-+ unsigned short len;
-+ unsigned long lba, size, offset;
-+
-+ memcpy(&lba, command->LogicalBlockAddress, sizeof(lba));
-+ memcpy(&len, command->TransferLength, sizeof(len));
-+ lba = ntohl(lba);
-+ len = ntohs(len);
-+ offset = lba * DeviceBlockSize;
-+ size = cbw->dCBWDataTransferLength;
-+
-+ if(DeviceFile == NULL){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x02, 0x3a, 0x00, 0x00);
-+
-+ /*
-+ * data transport
-+ */
-+
-+ storage_urb_send(device, NULL, size);
-+ }
-+ else
-+ if(MediaChange == MEDIA_CHANGE_ON){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x06, 0x28, 0x00, 0x00);
-+
-+ /* media change flag off */
-+ MediaChange = MEDIA_CHANGE_OFF;
-+
-+ /*
-+ * data transport
-+ */
-+
-+ storage_urb_send(device, NULL, size);
-+ }
-+ else{
-+ unsigned long count, read_size;
-+
-+ /*
-+ * data transport
-+ */
-+
-+ /* device seek */
-+ DeviceFile->f_op->llseek(DeviceFile, offset, 0);
-+
-+ /* device read */
-+ for(count = size; count; count -= read_size){
-+ read_size = (count > sizeof(BlockBuffer)) ?
-+ sizeof(BlockBuffer) : count;
-+ if(DeviceFile &&
-+ DeviceFile->f_op->read(DeviceFile, BlockBuffer, read_size,
-+ &DeviceFile->f_pos) != read_size){
-+
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x02, 0x3a, 0x00, 0x00);
-+
-+ /* statistics update */
-+ StatDevReadError++;
-+ printk(KERN_INFO "storage_fd: device read error. length '%ld'.\n", read_size);
-+ }
-+
-+ storage_urb_send(device, BlockBuffer, read_size);
-+ }
-+ }
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = cbw->dCBWTag;
-+ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - size;
-+ csw.bCSWStatus = status;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ return;
-+}
-+
-+static void scsi_mode_sense_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ static READ_WRITE_ERROR_RECOVERY_PAGE page_01 = {
-+ PageCode:0x01,
-+ PageLength:0x0A,
-+ ReadRetryCount:0x03,
-+ WriteRetryCount:0x80,
-+ };
-+ static FLEXIBLE_DISK_PAGE page_05 = {
-+ PageCode:0x05,
-+ PageLength:0x1E,
-+ TransferRate:{0x00, 0xFA},
-+ NumberofHeads:0xA0,
-+ SectorsperTrack:0x00,
-+ DataBytesperSector:{0x02, 0x00},
-+ NumberofCylinders:{0x00, 0x00},
-+ MotorOnDelay:0x05,
-+ MotorOffDelay:0x1E,
-+ MediumRotationRate:{0x01, 0x68},
-+ };
-+ static REMOVABLE_BLOCK_ACCESS_CAPABILITIES_PAGE page_1b = {
-+ PageCode:0x1B,
-+ PageLength:0x0A,
-+ TLUN:0x01,
-+ };
-+ static TIMER_AND_PROTECT_PAGE page_1c = {
-+ PageCode:0x1c,
-+ PageLength:0x06,
-+ InactivityTimeMultiplier:0x0A,
-+ };
-+
-+
-+ SCSI_MODE_SENSE_COMMAND* command = (SCSI_MODE_SENSE_COMMAND*)cbw->CBWCB;
-+ SCSI_MODE_SENSE_DATA data;
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned char data_len, status = 0;
-+ unsigned short cylinder, sector;
-+ unsigned long size;
-+
-+ /*
-+ * data transport
-+ */
-+
-+ memset(&data, 0x00, sizeof(data));
-+
-+ /* set write protect */
-+ data.ModeParameterHeader.WP = DeviceWrProtect;
-+
-+ /* set Flexible Disk Page */
-+ if(DeviceFile == NULL){
-+ sector = (unsigned short)DeviceBlockSize;
-+ cylinder = 0;
-+ sector = htons(sector);
-+ cylinder = htons(cylinder);
-+
-+ page_05.NumberofHeads = 0;
-+ page_05.SectorsperTrack = 0;
-+ memcpy(page_05.DataBytesperSector, &sector, sizeof(sector));
-+ memcpy(page_05.NumberofCylinders, &cylinder, sizeof(cylinder));
-+ }
-+ else{
-+ sector = (unsigned short)DeviceBlockSize;
-+ size = DEF_NUMBER_OF_HEADS * DEF_SECTORS_PER_TRACK * sector;
-+ cylinder = DeviceSize / size;
-+ sector = htons(sector);
-+ cylinder = htons(cylinder);
-+
-+ page_05.NumberofHeads = DEF_NUMBER_OF_HEADS;
-+ page_05.SectorsperTrack = DEF_SECTORS_PER_TRACK;
-+ memcpy(page_05.DataBytesperSector, &sector, sizeof(sector));
-+ memcpy(page_05.NumberofCylinders, &cylinder, sizeof(cylinder));
-+ }
-+
-+ if(command->PC == 0 && command->PageCode == 0x01){
-+ data_len = sizeof(MODE_PARAMETER_HEADER) + sizeof(page_01);
-+ data.ModeParameterHeader.ModeDataLength = data_len - 1;
-+ memcpy(&data.ModePages, &page_01, sizeof(page_01));
-+ }
-+ else
-+ if(command->PC == 0 && command->PageCode == 0x05){
-+ data_len = sizeof(MODE_PARAMETER_HEADER) + sizeof(page_05);
-+ data.ModeParameterHeader.ModeDataLength = data_len - 1;
-+ memcpy(&data.ModePages, &page_05, sizeof(page_05));
-+ }
-+ else
-+ if(command->PC == 0 && command->PageCode == 0x1b){
-+ data_len = sizeof(MODE_PARAMETER_HEADER) + sizeof(page_1b);
-+ data.ModeParameterHeader.ModeDataLength = data_len - 1;
-+ memcpy(&data.ModePages, &page_1b, sizeof(page_1b));
-+ }
-+ else
-+ if(command->PC == 0 && command->PageCode == 0x1c){
-+ data_len = sizeof(MODE_PARAMETER_HEADER) + sizeof(page_1c);
-+ data.ModeParameterHeader.ModeDataLength = data_len - 1;
-+ memcpy(&data.ModePages, &page_1c, sizeof(page_1c));
-+ }
-+ else
-+ if(command->PC == 0 && command->PageCode == 0x3f){
-+ data_len = sizeof(MODE_PARAMETER_HEADER) + sizeof(MODE_ALL_PAGES);
-+ data.ModeParameterHeader.ModeDataLength = data_len - 1;
-+ memcpy(&data.ModePages.ModeAllPages.ReadWriteErrorRecoveryPage,
-+ &page_01, sizeof(page_01));
-+ memcpy(&data.ModePages.ModeAllPages.FlexibleDiskPage,
-+ &page_05, sizeof(page_05));
-+ memcpy(&data.ModePages.ModeAllPages.RemovableBlockAccessCapabilitiesPage,
-+ &page_1b, sizeof(page_1b));
-+ memcpy(&data.ModePages.ModeAllPages.TimerAndProtectPage,
-+ &page_1c, sizeof(page_1c));
-+ }
-+ else{
-+ /* command fail */
-+ status = 1;
-+ data_len = cbw->dCBWDataTransferLength;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x05, 0x24, 0x00, 0x00);
-+ }
-+
-+ if(cbw->dCBWDataTransferLength < data_len){
-+ data_len = cbw->dCBWDataTransferLength;
-+ }
-+
-+ storage_urb_send(device, &data, data_len);
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = cbw->dCBWTag;
-+ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len;
-+ csw.bCSWStatus = status;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ return;
-+}
-+
-+static void scsi_test_unit_ready_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned char status = 0;
-+
-+ if(DeviceFile == NULL){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x02, 0x3a, 0x00, 0x00);
-+ }
-+ else
-+ if(MediaChange == MEDIA_CHANGE_ON){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x06, 0x28, 0x00, 0x00);
-+
-+ /* media change flag off */
-+ MediaChange = MEDIA_CHANGE_OFF;
-+ }
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = cbw->dCBWTag;
-+ csw.dCSWDataResidue = cbw->dCBWDataTransferLength;
-+ csw.bCSWStatus = status;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ return;
-+}
-+
-+static void scsi_prevent_allow_medium_removal_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL_COMMAND* command = (SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL_COMMAND*)cbw->CBWCB;
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned char status = 0;
-+
-+ if(command->Prevent){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x05, 0x24, 0x00, 0x00);
-+ }
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = cbw->dCBWTag;
-+ csw.dCSWDataResidue = cbw->dCBWDataTransferLength;
-+ csw.bCSWStatus = status;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ return;
-+}
-+
-+static void scsi_start_stop_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ SCSI_START_STOP_COMMAND* command = (SCSI_START_STOP_COMMAND*)cbw->CBWCB;
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned char status = 0;
-+
-+ if(DeviceFile == NULL){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x02, 0x3a, 0x00, 0x00);
-+ }
-+ else
-+ if(MediaChange == MEDIA_CHANGE_ON){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x06, 0x28, 0x00, 0x00);
-+
-+ /* media change flag off */
-+ MediaChange = MEDIA_CHANGE_OFF;
-+ }
-+ else
-+ if(command->Start && command->LoEj){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x05, 0x24, 0x00, 0x00);
-+ }
-+
-+ /* device buffer flush */
-+ if(DeviceFile && DeviceFile->f_op->ioctl(DeviceFile->f_dentry->d_inode,
-+ DeviceFile, BLKFLSBUF, 0) != 0){
-+ /* statistics update */
-+ StatDevFlushError++;
-+ printk(KERN_INFO "storage_fd: device flush error.\n");
-+ }
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = cbw->dCBWTag;
-+ csw.dCSWDataResidue = cbw->dCBWDataTransferLength;
-+ csw.bCSWStatus = status;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ return;
-+}
-+
-+static void scsi_write_10_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ /* status set */
-+ BulkOutLength = 0;
-+ StorageStatus = STORAGE_BULKOUT;
-+
-+ /* timer set */
-+ del_timer(&BulkOutTim);
-+ BulkOutTim.expires = jiffies + ((WR_BULKOUT_CHK_TIM * HZ) / 1000);
-+ BulkOutTim.data = 0;
-+ BulkOutTim.function = storage_bulkout_timeout;
-+ add_timer(&BulkOutTim);
-+
-+ return;
-+}
-+
-+static void scsi_verify_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned char status = 0;
-+
-+ if(DeviceFile == NULL){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x02, 0x3a, 0x00, 0x00);
-+ }
-+ else
-+ if(MediaChange == MEDIA_CHANGE_ON){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x06, 0x28, 0x00, 0x00);
-+
-+ /* media change flag off */
-+ MediaChange = MEDIA_CHANGE_OFF;
-+ }
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = cbw->dCBWTag;
-+ csw.dCSWDataResidue = cbw->dCBWDataTransferLength;
-+ csw.bCSWStatus = status;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ return;
-+}
-+
-+static void scsi_unsupport_analysis(struct usb_device_instance* device,
-+ COMMAND_BLOCK_WRAPPER* cbw)
-+{
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned char data_len = 0;
-+
-+ if(((cbw->bmCBWFlags & 0x80) == 0x00) && (cbw->dCBWDataTransferLength)){
-+ /* BLKOUT */
-+
-+ /* status set */
-+ BulkOutLength = 0;
-+ StorageStatus = STORAGE_BULKOUT;
-+ }
-+ else{
-+ /* BLKIN */
-+
-+ if(cbw->dCBWDataTransferLength){
-+ data_len = cbw->dCBWDataTransferLength;
-+ storage_urb_send(device, NULL, data_len);
-+ }
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = cbw->dCBWTag;
-+ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len;
-+ csw.bCSWStatus = 0x01;
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ }
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x05, 0x20, 0x00, 0x00);
-+
-+ return;
-+}
-+
-+static void scsi_bulkout_write_10_analysis(struct usb_device_instance* device,
-+ void* buffer, int length)
-+{
-+ COMMAND_STATUS_WRAPPER csw;
-+ unsigned char status = 0;
-+ unsigned long buff_used_len, buff_offset;
-+ unsigned long s_tick, e_tick, wr_tick;
-+
-+ buff_offset = BulkOutLength % sizeof(BlockBuffer);
-+
-+ memcpy(BlockBuffer + buff_offset, buffer, length);
-+ BulkOutLength += length;
-+
-+ buff_used_len = BulkOutLength % sizeof(BlockBuffer);
-+ if(buff_used_len == 0) buff_used_len = sizeof(BlockBuffer);
-+
-+ /* delete timer */
-+ if(BulkOutLength >= KeepCBW.dCBWDataTransferLength){
-+ del_timer(&BulkOutTim);
-+ }
-+
-+ if(buff_used_len >= sizeof(BlockBuffer) ||
-+ BulkOutLength >= KeepCBW.dCBWDataTransferLength){
-+
-+ /* buffer full */
-+ SCSI_WRITE_10_COMMAND* command = (SCSI_WRITE_10_COMMAND*)&KeepCBW.CBWCB;
-+ unsigned short len;
-+ unsigned long lba, offset;
-+
-+ memcpy(&lba, command->LogicalBlockAddress, sizeof(lba));
-+ memcpy(&len, command->TransferLength, sizeof(len));
-+ lba = ntohl(lba);
-+ len = ntohs(len);
-+
-+ offset = (lba * DeviceBlockSize) +
-+ (sizeof(BlockBuffer) * ((BulkOutLength - 1) / sizeof(BlockBuffer)));
-+
-+ /* device check */
-+ if(DeviceFile &&
-+ MediaChange != MEDIA_CHANGE_ON &&
-+ DeviceWrProtect != WR_PROTECT_ON){
-+
-+ /* write before jiffies get */
-+ s_tick = jiffies;
-+
-+ /* device seek */
-+ DeviceFile->f_op->llseek(DeviceFile, offset, 0);
-+
-+ /* device write */
-+ if(DeviceFile->f_op->write(DeviceFile, BlockBuffer, buff_used_len,
-+ &DeviceFile->f_pos) != buff_used_len){
-+ /* statistics update */
-+ StatDevWriteError++;
-+ printk(KERN_INFO "storage_fd: device write error. length '%ld'.\n", buff_used_len);
-+ }
-+
-+ /* write after jiffies get */
-+ e_tick = jiffies;
-+
-+ /* statistics update */
-+ wr_tick = e_tick - s_tick;
-+ if(wr_tick > StatMaxWriteTime){
-+ StatMaxWriteTime = wr_tick;
-+ }
-+ }
-+ }
-+
-+ if(BulkOutLength >= KeepCBW.dCBWDataTransferLength){
-+ if(DeviceFile == NULL){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x02, 0x3a, 0x00, 0x00);
-+ }
-+ else
-+ if(MediaChange == MEDIA_CHANGE_ON){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x06, 0x28, 0x00, 0x00);
-+
-+ /* media change flag off */
-+ MediaChange = MEDIA_CHANGE_OFF;
-+ }
-+ else
-+ if(DeviceWrProtect == WR_PROTECT_ON){
-+ /* command fail */
-+ status = 1;
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x07, 0x27, 0x00, 0x00);
-+
-+ /* media change flag off */
-+ MediaChange = MEDIA_CHANGE_OFF;
-+ }
-+
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = KeepCBW.dCBWTag;
-+ csw.dCSWDataResidue = KeepCBW.dCBWDataTransferLength - BulkOutLength;
-+ csw.bCSWStatus = status;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ /* status reset */
-+ BulkOutLength = 0;
-+ StorageStatus = STORAGE_IDLE;
-+
-+ /* flush before jiffies get */
-+ s_tick = jiffies;
-+
-+ /* device buffer flush */
-+ if(DeviceFile && DeviceFile->f_op->ioctl(DeviceFile->f_dentry->d_inode,
-+ DeviceFile, BLKFLSBUF, 0) != 0){
-+ /* statistics update */
-+ StatDevFlushError++;
-+ printk(KERN_INFO "storage_fd: device flush error.\n");
-+ }
-+
-+ /* flush after jiffies get */
-+ e_tick = jiffies;
-+
-+ /* statistics update */
-+ wr_tick = e_tick - s_tick;
-+ if(wr_tick > StatMaxWriteTime){
-+ StatMaxWriteTime = wr_tick;
-+ }
-+
-+ }
-+
-+ return;
-+}
-+
-+static void scsi_bulkout_unsupport_analysis(struct usb_device_instance* device,
-+ void* buffer, int length)
-+{
-+ COMMAND_STATUS_WRAPPER csw;
-+
-+ BulkOutLength += length;
-+
-+ if(BulkOutLength >= KeepCBW.dCBWDataTransferLength){
-+ /*
-+ * status transport
-+ */
-+
-+ memset(&csw, 0x00, sizeof(csw));
-+
-+ csw.dCSWSignature = CSW_SIGNATURE;
-+ csw.dCSWTag = KeepCBW.dCBWTag;
-+ csw.dCSWDataResidue = KeepCBW.dCBWDataTransferLength - BulkOutLength;
-+ csw.bCSWStatus = 1;
-+
-+ storage_urb_send(device, &csw, sizeof(csw));
-+
-+ /* error code save REQUEST SENSE */
-+ request_sense_data_set(0x05, 0x20, 0x00, 0x00);
-+
-+ /* status reset */
-+ BulkOutLength = 0;
-+ StorageStatus = STORAGE_IDLE;
-+ }
-+
-+ return;
-+}
-+
-+/******************************************************************************
-+** Global Function
-+******************************************************************************/
-+
-+static SCSI_ANALYSIS_TBL ScsiAnalysisTbl[] = {
-+ {SCSI_FORMAT_UNT, "SCSI_FORMAT_UNT", NULL},
-+ {SCSI_INQUIRY, "SCSI_INQUIRY", scsi_inquiry_analysis},
-+ {SCSI_START_STOP, "SCSI_START_STOP", scsi_start_stop_analysis},
-+ {SCSI_MODE_SELECT, "SCSI_MODE_SELECT", NULL},
-+ {SCSI_MODE_SENSE, "SCSI_MODE_SENSE", scsi_mode_sense_analysis},
-+ {SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL, "SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL", scsi_prevent_allow_medium_removal_analysis},
-+ {SCSI_READ_10, "SCSI_READ_10", scsi_read_10_analysis},
-+ {SCSI_READ_12, "SCSI_READ_12", NULL},
-+ {SCSI_READ_CAPACITY, "SCSI_READ_CAPACITY", scsi_read_capacity_analysis},
-+ {SCSI_READ_FORMAT_CAPACITY, "SCSI_READ_FORMAT_CAPACITY", scsi_read_format_capacity_analysis},
-+ {SCSI_REQUEST_SENSE, "SCSI_REQUEST_SENSE", scsi_request_sense_analysis},
-+ {SCSI_REZERO_UNIT, "SCSI_REZERO_UNIT", NULL},
-+ {SCSI_SEEK_10, "SCSI_SEEK_10", NULL},
-+ {SCSI_SEND_DIAGNOSTIC, "SCSI_SEND_DIAGNOSTIC", NULL},
-+ {SCSI_TEST_UNIT_READY, "SCSI_TEST_UNIT_READY", scsi_test_unit_ready_analysis},
-+ {SCSI_VERIFY, "SCSI_VERIFY", scsi_verify_analysis},
-+ {SCSI_WRITE_10, "SCSI_WRITE_10", scsi_write_10_analysis},
-+ {SCSI_WRITE_12, "SCSI_WRITE_12", NULL},
-+ {SCSI_WRITE_AND_VERIFY, "SCSI_WRITE_AND_VERIFY", NULL}
-+};
-+
-+static SCSI_BULKOUT_ANALYSIS_TBL ScsiBlkOutAnalysisTbl[] = {
-+ {SCSI_WRITE_10, "SCSI_WRITE_10", scsi_bulkout_write_10_analysis},
-+};
-+
-+void storageproto_urb_analysis(struct urb* urb)
-+{
-+ COMMAND_BLOCK_WRAPPER* cbw = (COMMAND_BLOCK_WRAPPER*)urb->buffer;
-+ int i;
-+
-+ /* status BLKOUT check */
-+ if(StorageStatus == STORAGE_BULKOUT){
-+ for(i = 0;
-+ i < sizeof(ScsiBlkOutAnalysisTbl) / sizeof(SCSI_ANALYSIS_TBL);
-+ i++){
-+ if(ScsiBlkOutAnalysisTbl[i].scsi_command == KeepCBW.CBWCB[0]){
-+ if(ScsiBlkOutAnalysisTbl[i].bulkout_func){
-+ ScsiBlkOutAnalysisTbl[i].bulkout_func(urb->device,
-+ urb->buffer,
-+ urb->actual_length);
-+ goto RETURN_LABEL;
-+ }
-+ break;
-+ }
-+ }
-+ scsi_bulkout_unsupport_analysis(urb->device, urb->buffer, urb->actual_length);
-+ goto RETURN_LABEL;
-+ }
-+
-+ /* signature check */
-+ if(cbw->dCBWSignature != CBW_SIGNATURE){
-+ printk(KERN_INFO "storage_fd: signature error. '0x%08lx'.\n",
-+ cbw->dCBWSignature);
-+ goto RETURN_LABEL;
-+ }
-+
-+ /* statistics set */
-+ if(cbw->dCBWDataTransferLength){
-+ if(((cbw->bmCBWFlags & 0x80) == 0x00) && (cbw->dCBWDataTransferLength)){
-+ /* BULK OUT */
-+ if(StatMaxBulkOutSize < cbw->dCBWDataTransferLength){
-+ StatMaxBulkOutSize = cbw->dCBWDataTransferLength;
-+ }
-+ }
-+ else{
-+ /* BULK IN */
-+ if(StatMaxBulkInSize < cbw->dCBWDataTransferLength){
-+ StatMaxBulkInSize = cbw->dCBWDataTransferLength;
-+ }
-+ }
-+ }
-+
-+ /* save CBW and set storage status */
-+ memcpy(&KeepCBW, cbw, sizeof(KeepCBW));
-+
-+ /* UFI command analysis */
-+ for(i = 0; i < sizeof(ScsiAnalysisTbl) / sizeof(SCSI_ANALYSIS_TBL); i++){
-+ if(ScsiAnalysisTbl[i].scsi_command == cbw->CBWCB[0]){
-+ if(ScsiAnalysisTbl[i].scsi_func){
-+ ScsiAnalysisTbl[i].scsi_func(urb->device, cbw);
-+ goto RETURN_LABEL;
-+ }
-+ break;
-+ }
-+ }
-+
-+ scsi_unsupport_analysis(urb->device, cbw);
-+ printk(KERN_INFO "storage_fd: SCSI command error. '0x%02x'.\n",
-+ cbw->CBWCB[0]);
-+ goto RETURN_LABEL;
-+
-+RETURN_LABEL:
-+
-+ /* URB free */
-+ usbd_recycle_urb(urb);
-+
-+ return;
-+}
-+
-+int storageproto_device_open_check(void)
-+{
-+ struct file* file;
-+ struct inode* inode;
-+ kdev_t dev;
-+ int read_org;
-+
-+ /* device already open check */
-+ if(DeviceFile){
-+ storageproto_device_close();
-+ }
-+
-+ /* device open */
-+ file = filp_open(storage_device, O_RDWR, 0000);
-+ if(IS_ERR(file)){
-+ file = filp_open(storage_device, O_RDONLY, 0000);
-+ if(IS_ERR(file)){
-+ storageproto_device_close();
-+ return MEDIA_EJECT;
-+ }
-+ DeviceWrProtect = WR_PROTECT_ON;
-+ }
-+
-+ file->f_op->llseek(file, 0, 0);
-+ if(file->f_op->read(file, (void*)&read_org, sizeof(read_org), &file->f_pos)
-+ != sizeof(read_org)){
-+ filp_close(file, NULL);
-+ storageproto_device_close();
-+ return MEDIA_EJECT;
-+ }
-+
-+ /* struct file pointer save */
-+ DeviceFile = file;
-+
-+ /* device information */
-+ inode = file->f_dentry->d_inode;
-+ dev = inode->i_rdev;
-+
-+ if (blk_size[MAJOR(dev)]){
-+ DeviceSize = blk_size[MAJOR(dev)][MINOR(dev)] << BLOCK_SIZE_BITS;
-+ }
-+ else{
-+ DeviceSize = INT_MAX << BLOCK_SIZE_BITS;
-+ }
-+
-+ if(blksize_size[MAJOR(dev)] && blksize_size[MAJOR(dev)][MINOR(dev)]){
-+ DeviceBlockSize = DEVICE_BLOCK_SIZE;
-+ }
-+ else{
-+ DeviceBlockSize = DEVICE_BLOCK_SIZE;
-+ }
-+
-+ return MEDIA_INSERT;
-+}
-+
-+void storageproto_device_close(void)
-+{
-+ if(DeviceFile){
-+ filp_close(DeviceFile, NULL);
-+ DeviceFile = NULL;
-+ DeviceSize = 0;
-+ DeviceBlockSize = DEVICE_BLOCK_SIZE;
-+ DeviceWrProtect = WR_PROTECT_OFF;
-+ }
-+
-+ return;
-+}
-+
-+void storageproto_usb_status_check(int status)
-+{
-+ static int Is1stCheck = 1;
-+
-+ /* USB status check */
-+ if(Is1stCheck){
-+ Is1stCheck = 0;
-+ }
-+ else{
-+ if(UsbStatus == status) goto RETURN_LABEL;
-+ }
-+
-+ /* set status */
-+ UsbStatus = status;
-+
-+ switch(UsbStatus){
-+ case USB_CONNECT:
-+ /* media status check */
-+ storageproto_media_status_check(CONTEXT_SCHEDULE);
-+
-+ switch(MediaStatus){
-+ case MEDIA_EJECT:
-+ break;
-+
-+ case MEDIA_INSERT:
-+ hotplug("usbdstorage", storage_device, "umount");
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ hotplug("usbdstorage", storage_device, "connect");
-+ break;
-+
-+ case USB_DISCONNECT:
-+ /* device close */
-+ storageproto_device_close();
-+
-+ switch(MediaStatus){
-+ case MEDIA_EJECT:
-+ break;
-+
-+ case MEDIA_INSERT:
-+ hotplug("usbdstorage", storage_device, "mount");
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ hotplug("usbdstorage", storage_device, "disconnect");
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+RETURN_LABEL:
-+ DBG_STORAGE_FD(KERN_INFO "storage_fd: USB check '%s' '%s' 'file:%p'.\n",
-+ (UsbStatus) ? "USB_CONNECT" : "USB_DISCONNECT",
-+ (MediaStatus) ? "MEDIA_INSERT" : "MEDIA_EJECT", DeviceFile);
-+
-+ return;
-+}
-+
-+void storageproto_media_status_check(int call_context)
-+{
-+ static unsigned long RetryCount = 0;
-+ int status;
-+
-+ /* media open check */
-+ status = storageproto_device_open_check();
-+
-+ /* media status check retry */
-+ if(status == MEDIA_EJECT){
-+ switch(call_context){
-+ case CONTEXT_STORAGE:
-+
-+ /* retry counter init */
-+ RetryCount = 0;
-+
-+ /* timer set */
-+ del_timer(&MediaCheckTim);
-+ MediaCheckTim.expires = jiffies + ((MEDIA_CHECK_TIM * HZ) / 1000);
-+ MediaCheckTim.data = 0;
-+ MediaCheckTim.function = media_check_timeout;
-+ add_timer(&MediaCheckTim);
-+
-+ break;
-+
-+ case CONTEXT_TIMER:
-+
-+ /* retry counter update */
-+ RetryCount++;
-+
-+ /* retry counter check */
-+ if(RetryCount >= MEDIA_CHECK_RETRY) break;
-+
-+ /* timer set */
-+ del_timer(&MediaCheckTim);
-+ MediaCheckTim.expires = jiffies + ((MEDIA_CHECK_TIM * HZ) / 1000);
-+ MediaCheckTim.data = 0;
-+ MediaCheckTim.function = media_check_timeout;
-+ add_timer(&MediaCheckTim);
-+
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ }
-+ else
-+ if(status == MEDIA_INSERT){
-+ /* delete timer */
-+ del_timer(&MediaCheckTim);
-+ }
-+
-+ /* media status check */
-+ if(status == MediaStatus){
-+ if(UsbStatus == USB_DISCONNECT){
-+ storageproto_device_close();
-+ }
-+ if(MediaStatus == MEDIA_INSERT){
-+ if(call_context == CONTEXT_STORAGE || call_context == CONTEXT_TIMER){
-+ MediaChange = MEDIA_CHANGE_ON;
-+ }
-+ }
-+ goto RETURN_LABEL;
-+ }
-+
-+ /* set status */
-+ MediaStatus = status;
-+
-+ switch(MediaStatus){
-+ case MEDIA_INSERT:
-+ /* set status */
-+ MediaChange = MEDIA_CHANGE_ON;
-+
-+ switch(UsbStatus){
-+ case USB_DISCONNECT:
-+ storageproto_device_close();
-+ break;
-+
-+ case USB_CONNECT:
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ hotplug("usbdstorage", storage_device, "insert");
-+ break;
-+
-+ case MEDIA_EJECT:
-+ switch(UsbStatus){
-+ case USB_DISCONNECT:
-+ storageproto_device_close();
-+ break;
-+
-+ case USB_CONNECT:
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ hotplug("usbdstorage", storage_device, "eject");
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+RETURN_LABEL:
-+ DBG_STORAGE_FD(KERN_INFO "storage_fd: media check. '%s' '%s' 'file:%p' '%s'.\n",
-+ (UsbStatus) ? "USB_CONNECT" : "USB_DISCONNECT",
-+ (MediaStatus) ? "MEDIA_INSERT" : "MEDIA_EJECT", DeviceFile,
-+ (call_context == CONTEXT_SCHEDULE) ? "CONTEXT_SCHEDULE" :
-+ (call_context == CONTEXT_STORAGE) ? "CONTEXT_STORAGE" : "CONTEXT_TIMER");
-+
-+ return;
-+}
-+
-+void storageproto_usb_reset_ind(void)
-+{
-+ /* status reset */
-+ BulkOutLength = 0;
-+ StorageStatus = STORAGE_IDLE;
-+
-+ DBG_STORAGE_FD(KERN_INFO "storage_fd: storage protocol reset.\n");
-+
-+ return;
-+}
-+
-+void storageproto_init(void)
-+{
-+ /* timer init */
-+ init_timer(&BulkOutTim);
-+
-+ /* timer init */
-+ init_timer(&MediaCheckTim);
-+
-+ return;
-+}
-+
-+void storageproto_exit(void)
-+{
-+ /* device close */
-+ storageproto_device_close();
-+
-+ /* delete timer */
-+ del_timer(&BulkOutTim);
-+
-+ /* delete timer */
-+ del_timer(&MediaCheckTim);
-+
-+ return;
-+}
-+
-+ssize_t storageproto_proc_read(struct file* file, char* buf, size_t count,
-+ loff_t* pos)
-+{
-+ char string[1024];
-+ int len = 0;
-+
-+ len += sprintf(string + len, "Protocol status:%s\n",
-+ (StorageStatus == STORAGE_IDLE) ? "STORAGE_IDLE" :
-+ (StorageStatus == STORAGE_BULKIN) ? "STORAGE_BULKIN" :
-+ "STORAGE_BULKOUT");
-+
-+ len += sprintf(string + len, "USB status:%s\n",
-+ (UsbStatus == USB_DISCONNECT) ? "USB_DISCONNECT" :
-+ "USB_CONNECT");
-+
-+ len += sprintf(string + len, "Media status:%s\n",
-+ (MediaStatus == MEDIA_EJECT) ? "MEDIA_EJECT" :
-+ "MEDIA_INSERT");
-+
-+ len += sprintf(string + len, "Media chage:%s\n",
-+ (MediaChange == MEDIA_CHANGE_OFF) ? "MEDIA_CHANGE_OFF" :
-+ "MEDIA_CHANGE_ON");
-+
-+ len += sprintf(string + len, "Device name:%s\n",
-+ storage_device);
-+
-+ len += sprintf(string + len, "Device file descriptor:0x%p\n",
-+ DeviceFile);
-+
-+ len += sprintf(string + len, "Device size:0x%d\n",
-+ DeviceSize);
-+
-+ len += sprintf(string + len, "Device block size:0x%d\n",
-+ DeviceBlockSize);
-+
-+ len += sprintf(string + len, "Device write protect:%s\n",
-+ (DeviceWrProtect == WR_PROTECT_OFF) ? "WR_PROTECT_OFF":
-+ "WR_PROTECT_ON");
-+
-+ len += sprintf(string + len, "Bulk in max size:%ld\n",
-+ StatMaxBulkInSize);
-+
-+ len += sprintf(string + len, "Bulk out max size:%ld\n",
-+ StatMaxBulkOutSize);
-+
-+ len += sprintf(string + len, "device write error:%ld\n",
-+ StatDevWriteError);
-+
-+ len += sprintf(string + len, "device read error:%ld\n",
-+ StatDevReadError);
-+
-+ len += sprintf(string + len, "device flush error:%ld\n",
-+ StatDevFlushError);
-+
-+ len += sprintf(string + len, "write data bulk out timout:%ld\n",
-+ StatWriteTimout);
-+
-+ len += sprintf(string + len, "device write max time:%ld msec\n",
-+ (StatMaxWriteTime * 1000) / HZ);
-+
-+ *pos += len;
-+ if(len > count){
-+ len = -EINVAL;
-+ }
-+ else
-+ if(len > 0 && copy_to_user(buf, string, len)) {
-+ len = -EFAULT;
-+ }
-+
-+ return len;
-+}
-+
-diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/storageproto.h linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storageproto.h
---- linux-2.4.18/drivers/usb/device/storage_fd/storageproto.h 1970-01-01 03:00:00.000000000 +0300
-+++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storageproto.h 2003-11-07 05:34:43.000000000 +0300
-@@ -0,0 +1,585 @@
-+/*
-+ * linux/drivers/usb/device/storage_fd/storageproto.h - mass storage protocol library header
-+ *
-+ * Copyright (c) 2003 Lineo Solutions, Inc.
-+ *
-+ * Written by Shunnosuke kabata
-+ *
-+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef _STORAGEPROTO_H_
-+#define _STORAGEPROTO_H_
-+
-+/******************************************************************************
-+** Macro Define
-+******************************************************************************/
-+
-+/**************************************
-+** Class Code
-+**************************************/
-+
-+/*
-+ * Class
-+ */
-+
-+#define MASS_STORAGE_CLASS 0x08
-+
-+/*
-+ * SubClass
-+ */
-+
-+#define MASS_STORAGE_SUBCLASS_RBC 0x01
-+#define MASS_STORAGE_SUBCLASS_SFF8020I 0x02
-+#define MASS_STORAGE_SUBCLASS_QIC157 0x03
-+#define MASS_STORAGE_SUBCLASS_UFI 0x04
-+#define MASS_STORAGE_SUBCLASS_SFF8070I 0x05
-+#define MASS_STORAGE_SUBCLASS_SCSI 0x06
-+
-+/*
-+ * Protocol
-+ */
-+
-+#define MASS_STORAGE_PROTO_CBI_WITH_COMP 0x00
-+#define MASS_STORAGE_PROTO_CBI_NO_COMP 0x01
-+#define MASS_STORAGE_PROTO_BULK_ONLY 0x50
-+
-+/**************************************
-+** SCSI Command
-+**************************************/
-+
-+#define SCSI_FORMAT_UNT 0x04
-+#define SCSI_INQUIRY 0x12
-+#define SCSI_START_STOP 0x1b
-+#define SCSI_MODE_SELECT 0x55
-+#define SCSI_MODE_SENSE 0x1a
-+#define SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e
-+#define SCSI_READ_10 0x28
-+#define SCSI_READ_12 0xa8
-+#define SCSI_READ_CAPACITY 0x25
-+#define SCSI_READ_FORMAT_CAPACITY 0x23
-+#define SCSI_REQUEST_SENSE 0x03
-+#define SCSI_REZERO_UNIT 0x01
-+#define SCSI_SEEK_10 0x2b
-+#define SCSI_SEND_DIAGNOSTIC 0x1d
-+#define SCSI_TEST_UNIT_READY 0x00
-+#define SCSI_VERIFY 0x2f
-+#define SCSI_WRITE_10 0x2a
-+#define SCSI_WRITE_12 0xaa
-+#define SCSI_WRITE_AND_VERIFY 0x2e
-+
-+/**************************************
-+** SCSI Command Parameter
-+**************************************/
-+
-+#define CBW_SIGNATURE 0x43425355 /* USBC */
-+#define CSW_SIGNATURE 0x53425355 /* USBS */
-+
-+#define PRODUCT_REVISION_LEVEL "1.00"
-+
-+/**************************************
-+** Status
-+**************************************/
-+
-+#define WR_PROTECT_OFF 0
-+#define WR_PROTECT_ON 1
-+
-+#define STORAGE_IDLE 0
-+#define STORAGE_BULKIN 1
-+#define STORAGE_BULKOUT 2
-+
-+#define USB_DISCONNECT 0
-+#define USB_CONNECT 1
-+
-+#define MEDIA_EJECT 0
-+#define MEDIA_INSERT 1
-+
-+#define MEDIA_CHANGE_OFF 0
-+#define MEDIA_CHANGE_ON 1
-+
-+/**************************************
-+** Mass Storage Thread Name
-+**************************************/
-+
-+#define STORAGE_THREAD_NAME "usbdstorage"
-+
-+/**************************************
-+** Media Signal Delay Time(ms)
-+**************************************/
-+
-+#define USB_EVENT_DELAY_TIM 1000
-+
-+/**************************************
-+** Write Bulk Out Check Time(ms)
-+**************************************/
-+
-+#define WR_BULKOUT_CHK_TIM 1000
-+
-+/**************************************
-+** Media Check Time(ms)
-+**************************************/
-+
-+#define MEDIA_CHECK_TIM 3000
-+#define MEDIA_CHECK_RETRY 3
-+
-+/**************************************
-+** Context
-+**************************************/
-+
-+#define CONTEXT_SCHEDULE 0
-+#define CONTEXT_STORAGE 1
-+#define CONTEXT_TIMER 2
-+
-+/**************************************
-+** Debug Message
-+**************************************/
-+#if 0
-+#define DBG_STORAGE_FD(fmt, args...) printk(fmt, ##args)
-+#else
-+#define DBG_STORAGE_FD(fmt, args...)
-+#endif
-+
-+/******************************************************************************
-+** Structure Define
-+******************************************************************************/
-+
-+/**************************************
-+** Command Block Wrapper / Command Status Wrapper
-+**************************************/
-+
-+/*
-+ * Command Block Wrapper
-+ */
-+typedef struct{
-+ unsigned long dCBWSignature;
-+ unsigned long dCBWTag;
-+ unsigned long dCBWDataTransferLength;
-+ unsigned char bmCBWFlags;
-+ unsigned char bCBWLUN:4,
-+ Reserved:4;
-+ unsigned char bCBWCBLength:5,
-+ Reserved2:3;
-+ unsigned char CBWCB[16];
-+} __attribute__((packed)) COMMAND_BLOCK_WRAPPER;
-+
-+/*
-+ * Command Status Wrapper
-+ */
-+typedef struct{
-+ unsigned long dCSWSignature;
-+ unsigned long dCSWTag;
-+ unsigned long dCSWDataResidue;
-+ unsigned char bCSWStatus;
-+} __attribute__((packed)) COMMAND_STATUS_WRAPPER;
-+
-+/**************************************
-+** SCSI Command
-+**************************************/
-+
-+/*
-+ * INQUIRY
-+ */
-+
-+typedef struct{
-+ unsigned char OperationCode;
-+ unsigned char EVPD:1,
-+ Reserved1:4,
-+ LogicalUnitNumber:3;
-+ unsigned char PageCode;
-+ unsigned char Reserved2;
-+ unsigned char AllocationLength;
-+ unsigned char Reserved3;
-+ unsigned char Reserved4;
-+ unsigned char Reserved5;
-+ unsigned char Reserved6;
-+ unsigned char Reserved7;
-+ unsigned char Reserved8;
-+ unsigned char Reserved9;
-+} __attribute__((packed)) SCSI_INQUIRY_COMMAND;
-+
-+typedef struct{
-+ unsigned char PeripheralDeviceType:5,
-+ Reserved1:3;
-+ unsigned char Reserved2:7,
-+ RMB:1;
-+ unsigned char ANSIVersion:3,
-+ ECMAVersion:3,
-+ ISOVersion:2;
-+ unsigned char ResponseDataFormat:4,
-+ Reserved3:4;
-+ unsigned char AdditionalLength;
-+ unsigned char Reserved4;
-+ unsigned char Reserved5;
-+ unsigned char Reserved6;
-+ unsigned char VendorInformation[8];
-+ unsigned char ProductIdentification[16];
-+ unsigned char ProductRevisionLevel[4];
-+} __attribute__((packed)) SCSI_INQUIRY_DATA;
-+
-+/*
-+ * READ FORMAT CAPACITY
-+ */
-+
-+typedef struct{
-+ unsigned char OperationCode;
-+ unsigned char Reserved1:5,
-+ LogicalUnitNumber:3;
-+ unsigned char Reserved2;
-+ unsigned char Reserved3;
-+ unsigned char Reserved4;
-+ unsigned char Reserved5;
-+ unsigned char Reserved6;
-+ unsigned char AllocationLength[2];
-+ unsigned char Reserved7;
-+ unsigned char Reserved8;
-+ unsigned char Reserved9;
-+} __attribute__((packed)) SCSI_READ_FORMAT_CAPACITY_COMMAND;
-+
-+typedef struct{
-+ struct{
-+ unsigned char Reserved1;
-+ unsigned char Reserved2;
-+ unsigned char Reserved3;
-+ unsigned char CapacityListLength;
-+ } __attribute__((packed)) CapacityListHeader;
-+ struct{
-+ unsigned char NumberofBlocks[4];
-+ unsigned char DescriptorCode:2,
-+ Reserved1:6;
-+ unsigned char BlockLength[3];
-+ } __attribute__((packed)) CurrentMaximumCapacityDescriptor;
-+} __attribute__((packed)) SCSI_READ_FORMAT_CAPACITY_DATA;
-+
-+/*
-+ * READ FORMAT CAPACITY
-+ */
-+
-+typedef struct{
-+ unsigned char OperationCode;
-+ unsigned char RelAdr:1,
-+ Reserved1:4,
-+ LogicalUnitNumber:3;
-+ unsigned char LogicalBlockAddress[4];
-+ unsigned char Reserved2;
-+ unsigned char Reserved3;
-+ unsigned char PMI:1,
-+ Reserved4:7;
-+ unsigned char Reserved5;
-+ unsigned char Reserved6;
-+ unsigned char Reserved7;
-+} __attribute__((packed)) SCSI_READ_CAPACITY_COMMAND;
-+
-+typedef struct{
-+ unsigned char LastLogicalBlockAddress[4];
-+ unsigned char BlockLengthInBytes[4];
-+} __attribute__((packed)) SCSI_READ_CAPACITY_DATA;
-+
-+/*
-+ * REQUEST SENSE
-+ */
-+
-+typedef struct{
-+ unsigned char OperationCode;
-+ unsigned char Reserved1:5,
-+ LogicalUnitNumber:3;
-+ unsigned char Reserved2;
-+ unsigned char Reserved3;
-+ unsigned char AllocationLength;
-+ unsigned char Reserved4;
-+ unsigned char Reserved5;
-+ unsigned char Reserved6;
-+ unsigned char Reserved7;
-+ unsigned char Reserved8;
-+ unsigned char Reserved9;
-+ unsigned char Reserved10;
-+} __attribute__((packed)) SCSI_REQUEST_SENSE_COMMAND;
-+
-+typedef struct{
-+ unsigned char ErrorCode:7,
-+ Valid:1;
-+ unsigned char Reserved1;
-+ unsigned char SenseKey:4,
-+ Reserved2:4;
-+ unsigned char Information[4];
-+ unsigned char AdditionalSenseLength;
-+ unsigned char Reserved3[4];
-+ unsigned char AdditionalSenseCode;
-+ unsigned char AdditionalSenseCodeQualifier;
-+ unsigned char Reserved4;
-+ unsigned char Reserved5[3];
-+} __attribute__((packed)) SCSI_REQUEST_SENSE_DATA;
-+
-+/*
-+ * READ(10)
-+ */
-+
-+typedef struct{
-+ unsigned char OperationCode;
-+ unsigned char RelAdr:1,
-+ Reserved1:2,
-+ FUA:1,
-+ DPO:1,
-+ LogicalUnitNumber:3;
-+ unsigned char LogicalBlockAddress[4];
-+ unsigned char Reserved2;
-+ unsigned char TransferLength[2];
-+ unsigned char Reserved3;
-+ unsigned char Reserved4;
-+ unsigned char Reserved5;
-+} __attribute__((packed)) SCSI_READ_10_COMMAND;
-+
-+/*
-+ * MODE SENSE
-+ */
-+
-+typedef struct{
-+ unsigned char OperationCode;
-+ unsigned char Reserved1:3,
-+ DBD:1,
-+ Reserved2:1,
-+ LogicalUnitNumber:3;
-+ unsigned char PageCode:6,
-+ PC:2;
-+ unsigned char Reserved3;
-+ unsigned char Reserved4;
-+ unsigned char Reserved5;
-+ unsigned char Reserved6;
-+ unsigned char ParameterListLength[2];
-+ unsigned char Reserved7;
-+ unsigned char Reserved8;
-+ unsigned char Reserved9;
-+} __attribute__((packed)) SCSI_MODE_SENSE_COMMAND;
-+
-+typedef struct{
-+ unsigned char ModeDataLength;
-+ unsigned char MediumTypeCode;
-+ unsigned char Reserved1:4,
-+ DPOFUA:1,
-+ Reserved2:2,
-+ WP:1;
-+ unsigned char Reserved3;
-+} __attribute__((packed)) MODE_PARAMETER_HEADER;
-+
-+typedef struct{
-+ unsigned char PageCode:6,
-+ Reserved1:1,
-+ PS:1;
-+ unsigned char PageLength;
-+ unsigned char DCR:1,
-+ Reserved2:1,
-+ PER:1,
-+ Reserved3:1,
-+ RC:1,
-+ Reserved4:1,
-+ Reserved5:1,
-+ AWRE:1;
-+ unsigned char ReadRetryCount;
-+ unsigned char Reserved6[4];
-+ unsigned char WriteRetryCount;
-+ unsigned char Reserved7[3];
-+} __attribute__((packed)) READ_WRITE_ERROR_RECOVERY_PAGE;
-+
-+typedef struct{
-+ unsigned char PageCode:6,
-+ Reserved1:1,
-+ PS:1;
-+ unsigned char PageLength;
-+ unsigned char TransferRate[2];
-+ unsigned char NumberofHeads;
-+ unsigned char SectorsperTrack;
-+ unsigned char DataBytesperSector[2];
-+ unsigned char NumberofCylinders[2];
-+ unsigned char Reserved2[9];
-+ unsigned char MotorOnDelay;
-+ unsigned char MotorOffDelay;
-+ unsigned char Reserved3[7];
-+ unsigned char MediumRotationRate[2];
-+ unsigned char Reserved4;
-+ unsigned char Reserved5;
-+} __attribute__((packed)) FLEXIBLE_DISK_PAGE;
-+
-+typedef struct{
-+ unsigned char PageCode:6,
-+ Reserved1:1,
-+ PS:1;
-+ unsigned char PageLength;
-+ unsigned char Reserved2:6,
-+ SRFP:1,
-+ SFLP:1;
-+ unsigned char TLUN:3,
-+ Reserved3:3,
-+ SML:1,
-+ NCD:1;
-+ unsigned char Reserved4[8];
-+} __attribute__((packed)) REMOVABLE_BLOCK_ACCESS_CAPABILITIES_PAGE;
-+
-+typedef struct{
-+ unsigned char PageCode:6,
-+ Reserved1:1,
-+ PS:1;
-+ unsigned char PageLength;
-+ unsigned char Reserved2;
-+ unsigned char InactivityTimeMultiplier:4,
-+ Reserved3:4;
-+ unsigned char SWPP:1,
-+ DISP:1,
-+ Reserved4:6;
-+ unsigned char Reserved5;
-+ unsigned char Reserved6;
-+ unsigned char Reserved7;
-+} __attribute__((packed)) TIMER_AND_PROTECT_PAGE;
-+
-+typedef struct{
-+ READ_WRITE_ERROR_RECOVERY_PAGE ReadWriteErrorRecoveryPage;
-+ FLEXIBLE_DISK_PAGE FlexibleDiskPage;
-+ REMOVABLE_BLOCK_ACCESS_CAPABILITIES_PAGE RemovableBlockAccessCapabilitiesPage;
-+ TIMER_AND_PROTECT_PAGE TimerAndProtectPage;
-+} __attribute__((packed)) MODE_ALL_PAGES;
-+
-+typedef struct{
-+ MODE_PARAMETER_HEADER ModeParameterHeader;
-+ union{
-+ READ_WRITE_ERROR_RECOVERY_PAGE ReadWriteErrorRecoveryPage;
-+ FLEXIBLE_DISK_PAGE FlexibleDiskPage;
-+ REMOVABLE_BLOCK_ACCESS_CAPABILITIES_PAGE RemovableBlockAccessCapabilitiesPage;
-+ TIMER_AND_PROTECT_PAGE TimerAndProtectPage;
-+ MODE_ALL_PAGES ModeAllPages;
-+ } __attribute__((packed)) ModePages;
-+} __attribute__((packed)) SCSI_MODE_SENSE_DATA;
-+
-+/*
-+ * TEST UNIT READY
-+ */
-+
-+typedef struct{
-+ unsigned char OperationCode;
-+ unsigned char Reserved1:5,
-+ LogicalUnitNumber:3;
-+ unsigned char Reserved2;
-+ unsigned char Reserved3;
-+ unsigned char Reserved4;
-+ unsigned char Reserved5;
-+ unsigned char Reserved6;
-+ unsigned char Reserved7;
-+ unsigned char Reserved8;
-+ unsigned char Reserved9;
-+ unsigned char Reserved10;
-+ unsigned char Reserved11;
-+} __attribute__((packed)) SCSI_TEST_UNIT_READY_COMMAND;
-+
-+/*
-+ * PREVENT-ALLOW MEDIUM REMOVAL
-+ */
-+
-+typedef struct{
-+ unsigned char OperationCode;
-+ unsigned char Reserved1:5,
-+ LogicalUnitNumber:3;
-+ unsigned char Reserved2;
-+ unsigned char Reserved3;
-+ unsigned char Prevent:1,
-+ Reserved4:7;
-+ unsigned char Reserved5;
-+ unsigned char Reserved6;
-+ unsigned char Reserved7;
-+ unsigned char Reserved8;
-+ unsigned char Reserved9;
-+ unsigned char Reserved10;
-+ unsigned char Reserved11;
-+} __attribute__((packed)) SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL_COMMAND;
-+
-+/*
-+ * START-STOP UNIT
-+ */
-+
-+typedef struct{
-+ unsigned char OperationCode;
-+ unsigned char IMMED:1,
-+ Reserved1:4,
-+ LogicalUnitNumber:3;
-+ unsigned char Reserved2;
-+ unsigned char Reserved3;
-+ unsigned char Start:1,
-+ LoEj:1,
-+ Reserved4:6;
-+ unsigned char Reserved5;
-+ unsigned char Reserved6;
-+ unsigned char Reserved7;
-+ unsigned char Reserved8;
-+ unsigned char Reserved9;
-+ unsigned char Reserved10;
-+ unsigned char Reserved11;
-+} __attribute__((packed)) SCSI_START_STOP_COMMAND;
-+
-+/*
-+ * WRITE(10)
-+ */
-+
-+typedef struct{
-+ unsigned char OperationCode;
-+ unsigned char RelAdr:1,
-+ Reserved1:2,
-+ FUA:1,
-+ DPO:1,
-+ LogicalUnitNumber:3;
-+ unsigned char LogicalBlockAddress[4];
-+ unsigned char Reserved2;
-+ unsigned char TransferLength[2];
-+ unsigned char Reserved3;
-+ unsigned char Reserved4;
-+ unsigned char Reserved5;
-+} __attribute__((packed)) SCSI_WRITE_10_COMMAND;
-+
-+/*
-+ * VERIFY
-+ */
-+
-+typedef struct{
-+ unsigned char OperationCode;
-+ unsigned char RelAdr:1,
-+ ByteChk:1,
-+ Reserved1:1,
-+ Reserved2:1,
-+ DPO:1,
-+ LogicalUnitNumber:3;
-+ unsigned char LogicalBlockAddress[4];
-+ unsigned char Reserved3;
-+ unsigned char VerificationLength[2];
-+ unsigned char Reserved4;
-+ unsigned char Reserved5;
-+ unsigned char Reserved6;
-+} __attribute__((packed)) SCSI_VERIFY_COMMAND;
-+
-+/******************************************************************************
-+** Global Function Prototype
-+******************************************************************************/
-+
-+/* storage-fd.c */
-+void storage_urb_send(struct usb_device_instance*, void*, int);
-+
-+/* storageproto.c */
-+void storageproto_urb_analysis(struct urb*);
-+int storageproto_device_open_check(void);
-+void storageproto_device_close(void);
-+void storageproto_usb_status_check(int);
-+void storageproto_media_status_check(int);
-+void storageproto_usb_reset_ind(void);
-+ssize_t storageproto_proc_read(struct file*, char*, size_t, loff_t* pos);
-+void storageproto_init(void);
-+void storageproto_exit(void);
-+
-+#endif /* _STORAGEPROTO_H_ */
-+
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/1764-1.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/1764-1.patch
deleted file mode 100644
index 0b660f3521..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/1764-1.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-__arch_strncpy_from_user needs to be exported if you build the framebuffer console driver as a module.
-
-Cheers,
-
-Ian.
-
---- linux-2.6-bkpxa.orig/arch/arm/kernel/armksyms.c 2004-02-27 10:35:29.000000000 +0000
-+++ linux-2.6-bkpxa/arch/arm/kernel/armksyms.c 2004-02-27 14:55:02.000000000 +0000
-@@ -187,6 +187,7 @@
- EXPORT_SYMBOL(__arch_copy_to_user);
- EXPORT_SYMBOL(__arch_clear_user);
- EXPORT_SYMBOL(__arch_strnlen_user);
-+EXPORT_SYMBOL(__arch_strncpy_from_user);
-
- /* consistent area handling */
- EXPORT_SYMBOL(consistent_alloc);
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/CPAR050218.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/CPAR050218.patch
deleted file mode 100644
index a0b866219b..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/CPAR050218.patch
+++ /dev/null
@@ -1,422 +0,0 @@
---- 050125/include/asm-arm/proc-armv/ptrace.h Tue Jan 25 00:22:44 2005
-+++ 050218/include/asm-arm/proc-armv/ptrace.h Thu Feb 17 16:13:54 2005
-@@ -40,6 +40,10 @@
-
- struct pt_regs {
- long uregs[18];
-+#if defined(CONFIG_CPU_PXA27X)
-+ long cpar;
-+ long mmx[ 16*2 + 6 + 1 ];
-+#endif
- };
-
- #define ARM_cpsr uregs[16]
---- 050125/include/asm-arm/sigcontext.h Tue Jan 25 00:22:42 2005
-+++ 050218/include/asm-arm/sigcontext.h Thu Feb 17 18:16:28 2005
-@@ -28,6 +28,10 @@
- unsigned long arm_pc;
- unsigned long arm_cpsr;
- unsigned long fault_address;
-+#if defined(CONFIG_CPU_PXA27X)
-+ unsigned long arm_cpar;
-+ unsigned long arm_mmx[ 16*2 + 6 + 1 ];
-+#endif
- };
-
-
---- 050125/include/asm-arm/elf.h Tue Jan 25 00:54:49 2005
-+++ 050218/include/asm-arm/elf.h Thu Feb 17 16:19:02 2005
-@@ -1,6 +1,8 @@
- #ifndef __ASMARM_ELF_H
- #define __ASMARM_ELF_H
-
-+#include <linux/config.h>
-+
- /*
- * ELF register definitions..
- */
-@@ -14,6 +16,7 @@
-
- #define EM_ARM 40
- #define EF_ARM_APCS26 0x08
-+#define EF_ARM_SOFT_FLOAT 0x200
-
- #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
- typedef elf_greg_t elf_gregset_t[ELF_NGREG];
---- 050125/arch/arm/kernel/entry-armv.S Tue Jan 25 00:21:45 2005
-+++ 050218/arch/arm/kernel/entry-armv.S Fri Feb 18 07:29:34 2005
-@@ -271,7 +271,7 @@
- tst \irqstat, #IRQ_MASK_DOORBELLHOST
- movne \irqnr, #IRQ_DOORBELLHOST
- bne 1001f
--
-+
- tst \irqstat, #IRQ_MASK_I2OINPOST
- movne \irqnr, #IRQ_I2OINPOST
- bne 1001f
-@@ -494,12 +494,12 @@
-
- #elif defined(CONFIG_ARCH_L7200)
- #include <asm/hardware.h>
--
-+
- .equ irq_base_addr, IO_BASE_2
-
- .macro disable_fiq
- .endm
--
-+
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
- mov \irqstat, #irq_base_addr @ Virt addr IRQ regs
- add \irqstat, \irqstat, #0x00001000 @ Status reg
-@@ -589,7 +589,7 @@
- .endm
-
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
--
-+
- /* Read all interrupts pending... */
- ldr \irqnr, =IO_ADDRESS(PLAT_PERIPHERAL_BASE) + OMAHA_INTPND
- ldr \irqstat, [\irqnr] /* INTPND */
-@@ -607,7 +607,7 @@
- .endm
-
- .macro irq_prio_table
-- .endm
-+ .endm
-
- #elif defined(CONFIG_ARCH_CLPS711X)
-
-@@ -654,23 +654,23 @@
-
- .macro irq_prio_table
- .endm
--
-+
- #elif defined (CONFIG_ARCH_CAMELOT)
- #include <asm/arch/platform.h>
- #undef IRQ_MODE /* same name defined in asm/proc/ptrace.h */
- #include <asm/arch/int_ctrl00.h>
--
-+
- .macro disable_fiq
- .endm
-
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
--
-+
- ldr \irqstat, =INT_ID(IO_ADDRESS(EXC_INT_CTRL00_BASE))
-- ldr \irqnr,[\irqstat]
-+ ldr \irqnr,[\irqstat]
- cmp \irqnr,#0
- subne \irqnr,\irqnr,#1
-
--
-+
- .endm
-
- .macro irq_prio_table
-@@ -910,7 +910,7 @@
- mov pc, r7 @ check, if this is a relevant code
- cmp r0, #0 @ check return value
- beq 1f @ else let linux do what it has to do
--2:
-+2:
- #endif
- #ifndef CONFIG_KGDB
- adrsvc al, r9, 1f @ r9 = normal FP return
-@@ -977,6 +977,9 @@
- stmia r5, {r2 - r4} @ Save USR pc, cpsr, old_r0
- stmdb r5, {sp, lr}^
- alignment_trap r7, r7, __temp_abt
-+#ifdef CONFIG_CPU_PXA27X
-+ save_user_mmx
-+#endif
- zero_fp
- mov r0, r2 @ remove once everyones in sync
- #ifdef MULTI_CPU
-@@ -1001,6 +1004,9 @@
- stmia r8, {r5 - r7} @ save pc, psr, old_r0
- stmdb r8, {sp, lr}^
- alignment_trap r4, r7, __temp_irq
-+#ifdef CONFIG_CPU_PXA27X
-+ save_user_mmx
-+#endif
- zero_fp
- get_current_task tsk
- #ifdef CONFIG_PREEMPT
-@@ -1039,6 +1045,9 @@
- stmia r8, {r5 - r7} @ Save USR pc, cpsr, old_r0
- stmdb r8, {sp, lr}^ @ Save user sp, lr
- alignment_trap r4, r7, __temp_und
-+#ifdef CONFIG_CPU_PXA27X
-+ save_user_mmx
-+#endif
- zero_fp
- tst r6, #T_BIT @ Thumb mode
- bne fpundefinstr
-@@ -1068,6 +1077,9 @@
- stmia r8, {r5 - r7} @ Save USR pc, cpsr, old_r0
- stmdb r8, {sp, lr}^ @ Save sp_usr lr_usr
- alignment_trap r4, r7, __temp_abt
-+#ifdef CONFIG_CPU_PXA27X
-+ save_user_mmx
-+#endif
- zero_fp
- mov r0, #MODE_SVC
- msr cpsr_c, r0 @ Enable interrupts
-@@ -1394,7 +1406,7 @@
- stmfd sp!, {r4, r5}
- #endif
- mrc p15, 0, r2, c3, c0
-- str r2, [sp, #-4]!
-+ str r2, [sp, #-4]!
-
- ldr r2, [r0]
- str sp, [r2]
---- 050125/arch/arm/kernel/entry-header.S Tue Jan 25 00:21:45 2005
-+++ 050218/arch/arm/kernel/entry-header.S Thu Feb 17 20:15:24 2005
-@@ -42,9 +42,44 @@
- @ Stack format (ensured by USER_* and SVC_*)
- @
- #ifdef CONFIG_CPU_32
--#define S_FRAME_SIZE 72
--#define S_OLD_R0 68
--#define S_PSR 64
-+#ifdef CONFIG_CPU_PXA27X
-+ #define S_MMX 80
-+
-+ #define MMX_WR0 (0x00)
-+ #define MMX_WR1 (0x08)
-+ #define MMX_WR2 (0x10)
-+ #define MMX_WR3 (0x18)
-+ #define MMX_WR4 (0x20)
-+ #define MMX_WR5 (0x28)
-+ #define MMX_WR6 (0x30)
-+ #define MMX_WR7 (0x38)
-+ #define MMX_WR8 (0x40)
-+ #define MMX_WR9 (0x48)
-+ #define MMX_WR10 (0x50)
-+ #define MMX_WR11 (0x58)
-+ #define MMX_WR12 (0x60)
-+ #define MMX_WR13 (0x68)
-+ #define MMX_WR14 (0x70)
-+ #define MMX_WR15 (0x78)
-+ #define MMX_WCSSF (0x80)
-+ #define MMX_WCASF (0x84)
-+ #define MMX_WCGR0 (0x88)
-+ #define MMX_WCGR1 (0x8C)
-+ #define MMX_WCGR2 (0x90)
-+ #define MMX_WCGR3 (0x94)
-+
-+ #define MMX_SIZE (0x98)
-+
-+ #define S_FRAME_SIZE (76+4+MMX_SIZE)
-+
-+ #define S_CPAR 72
-+ #define S_OLD_R0 68
-+ #define S_PSR 64
-+#else
-+ #define S_FRAME_SIZE 72
-+ #define S_OLD_R0 68
-+ #define S_PSR 64
-+#endif
- #else
- #define S_FRAME_SIZE 68
- #define S_OLD_R0 64
-@@ -88,6 +123,43 @@
- set_cpsr_c \temp, #MODE_SVC
- .endm
-
-+#ifdef CONFIG_CPU_PXA27X
-+ .macro save_user_mmx
-+ mrc p15, 0, r0, c15, c1, 0
-+ str r0, [sp, #S_CPAR] @ Save CPAR
-+ cmp r0, #3
-+ bne 1f
-+ add r0,sp,#S_MMX @ StoreMMX
-+ bic r0, r0, #7
-+ wstrw wCSSF, [r0, #MMX_WCSSF]
-+ wstrw wCASF, [r0, #MMX_WCASF]
-+ wstrw wCGR0, [r0, #MMX_WCGR0]
-+ wstrw wCGR1, [r0, #MMX_WCGR1]
-+ wstrw wCGR2, [r0, #MMX_WCGR2]
-+ wstrw wCGR3, [r0, #MMX_WCGR3]
-+ wstrd wR0, [r0, #MMX_WR0]
-+ wstrd wR1, [r0, #MMX_WR1]
-+ wstrd wR2, [r0, #MMX_WR2]
-+ wstrd wR3, [r0, #MMX_WR3]
-+ wstrd wR4, [r0, #MMX_WR4]
-+ wstrd wR5, [r0, #MMX_WR5]
-+ wstrd wR6, [r0, #MMX_WR6]
-+ wstrd wR7, [r0, #MMX_WR7]
-+ wstrd wR8, [r0, #MMX_WR8]
-+ wstrd wR9, [r0, #MMX_WR9]
-+ wstrd wR10, [r0, #MMX_WR10]
-+ wstrd wR11, [r0, #MMX_WR11]
-+ wstrd wR12, [r0, #MMX_WR12]
-+ wstrd wR13, [r0, #MMX_WR13]
-+ wstrd wR14, [r0, #MMX_WR14]
-+ wstrd wR15, [r0, #MMX_WR15]
-+1:
-+ mov r0, #1
-+ mcr p15, 0, r0, c15, c1, 0 @ CP0 Only.
-+ ldr r0, [sp] @ Restore R0
-+ .endm
-+#endif
-+
- .macro save_user_regs
- sub sp, sp, #S_FRAME_SIZE
- stmia sp, {r0 - r12} @ Calling r0 - r12
-@@ -97,12 +169,44 @@
- str lr, [sp, #S_PC] @ Save calling PC
- str r8, [sp, #S_PSR] @ Save CPSR
- str r0, [sp, #S_OLD_R0] @ Save OLD_R0
-+ save_user_mmx
- .endm
-
- /*
- * Must be called with IRQs already disabled.
- */
- .macro restore_user_regs
-+#ifdef CONFIG_CPU_PXA27X
-+ ldr r1, [sp, #S_CPAR]
-+ mcr p15, 0, r1, c15, c1, 0
-+ cmp r1, #3
-+ bne 2f
-+ add r1,sp,#S_MMX @ LoadMMX
-+ bic r1, r1, #7
-+ wldrd wR0, [r1, #MMX_WR0]
-+ wldrd wR1, [r1, #MMX_WR1]
-+ wldrd wR2, [r1, #MMX_WR2]
-+ wldrd wR3, [r1, #MMX_WR3]
-+ wldrd wR4, [r1, #MMX_WR4]
-+ wldrd wR5, [r1, #MMX_WR5]
-+ wldrd wR6, [r1, #MMX_WR6]
-+ wldrd wR7, [r1, #MMX_WR7]
-+ wldrd wR8, [r1, #MMX_WR8]
-+ wldrd wR9, [r1, #MMX_WR9]
-+ wldrd wR10, [r1, #MMX_WR10]
-+ wldrd wR11, [r1, #MMX_WR11]
-+ wldrd wR12, [r1, #MMX_WR12]
-+ wldrd wR13, [r1, #MMX_WR13]
-+ wldrd wR14, [r1, #MMX_WR14]
-+ wldrd wR15, [r1, #MMX_WR15]
-+ wldrw wCSSF, [r1, #MMX_WCSSF]
-+ wldrw wCASF, [r1, #MMX_WCASF]
-+ wldrw wCGR0, [r1, #MMX_WCGR0]
-+ wldrw wCGR1, [r1, #MMX_WCGR1]
-+ wldrw wCGR2, [r1, #MMX_WCGR2]
-+ wldrw wCGR3, [r1, #MMX_WCGR3]
-+2:
-+#endif
- ldr r1, [sp, #S_PSR] @ Get calling cpsr
- ldr lr, [sp, #S_PC]! @ Get PC
- msr spsr, r1 @ save in spsr_svc
-@@ -116,6 +220,37 @@
- * Must be called with IRQs already disabled.
- */
- .macro fast_restore_user_regs
-+#ifdef CONFIG_CPU_PXA27X
-+ ldr r1, [sp, #S_OFF + S_CPAR]
-+ mcr p15, 0, r1, c15, c1, 0
-+ cmp r1, #3
-+ bne 3f
-+ add r1,sp,#S_OFF + S_MMX @ LoadMMX
-+ bic r1, r1, #7
-+ wldrd wR0, [r1, #MMX_WR0]
-+ wldrd wR1, [r1, #MMX_WR1]
-+ wldrd wR2, [r1, #MMX_WR2]
-+ wldrd wR3, [r1, #MMX_WR3]
-+ wldrd wR4, [r1, #MMX_WR4]
-+ wldrd wR5, [r1, #MMX_WR5]
-+ wldrd wR6, [r1, #MMX_WR6]
-+ wldrd wR7, [r1, #MMX_WR7]
-+ wldrd wR8, [r1, #MMX_WR8]
-+ wldrd wR9, [r1, #MMX_WR9]
-+ wldrd wR10, [r1, #MMX_WR10]
-+ wldrd wR11, [r1, #MMX_WR11]
-+ wldrd wR12, [r1, #MMX_WR12]
-+ wldrd wR13, [r1, #MMX_WR13]
-+ wldrd wR14, [r1, #MMX_WR14]
-+ wldrd wR15, [r1, #MMX_WR15]
-+ wldrw wCSSF, [r1, #MMX_WCSSF]
-+ wldrw wCASF, [r1, #MMX_WCASF]
-+ wldrw wCGR0, [r1, #MMX_WCGR0]
-+ wldrw wCGR1, [r1, #MMX_WCGR1]
-+ wldrw wCGR2, [r1, #MMX_WCGR2]
-+ wldrw wCGR3, [r1, #MMX_WCGR3]
-+3:
-+#endif
- ldr r1, [sp, #S_OFF + S_PSR] @ get calling cpsr
- ldr lr, [sp, #S_OFF + S_PC]! @ get pc
- msr spsr, r1 @ save in spsr_svc
---- 050125/arch/arm/kernel/signal.c Tue Jan 25 00:21:45 2005
-+++ 050218/arch/arm/kernel/signal.c Thu Feb 17 18:22:10 2005
-@@ -198,6 +198,13 @@
- {
- int err = 0;
-
-+#if defined(CONFIG_CPU_PXA27X)
-+ int _m;
-+ __get_user_error(regs->cpar, &sc->arm_cpar, err);
-+ for( _m=0; _m<16*2 + 6 + 1; ++_m ) {
-+ __get_user_error(regs->mmx[ _m ], &sc->arm_mmx[ _m ], err);
-+ }
-+#endif
- __get_user_error(regs->ARM_r0, &sc->arm_r0, err);
- __get_user_error(regs->ARM_r1, &sc->arm_r1, err);
- __get_user_error(regs->ARM_r2, &sc->arm_r2, err);
-@@ -312,6 +319,13 @@
- {
- int err = 0;
-
-+#if defined(CONFIG_CPU_PXA27X)
-+ int _m;
-+ __put_user_error(regs->cpar, &sc->arm_cpar, err);
-+ for( _m=0; _m<16*2 + 6 + 1; ++_m ) {
-+ __put_user_error(regs->mmx[ _m ], &sc->arm_mmx[ _m ], err);
-+ }
-+#endif
- __put_user_error(regs->ARM_r0, &sc->arm_r0, err);
- __put_user_error(regs->ARM_r1, &sc->arm_r1, err);
- __put_user_error(regs->ARM_r2, &sc->arm_r2, err);
---- 050125/arch/arm/Makefile Tue Jan 25 00:21:44 2005
-+++ 050218/arch/arm/Makefile Thu Feb 17 09:38:40 2005
-@@ -69,7 +69,8 @@
-
- ifeq ($(CONFIG_ARCH_SHARP_SL),y)
- CROSS_COMPILE = arm-linux-
--arch-y :=-D__LINUX_ARM_ARCH__=4 -march=armv4 -Wa,-mxscale
-+#arch-y :=-D__LINUX_ARM_ARCH__=4 -march=armv4 -Wa,-mxscale
-+arch-y :=-D__LINUX_ARM_ARCH__=4 -Wa,-mcpu=iwmmxt
- tune-y :=-mtune=strongarm
- endif
-
-@@ -212,7 +213,7 @@
- MACHINE = omaha
- endif
-
--ifeq ($(CONFIG_XIP_KERNEL),y)
-+ifeq ($(CONFIG_XIP_KERNEL),y)
- DATAADDR := $(TEXTADDR)
- # Replace phys addr with virt addr while keeping offset from base.
- # Virt base addr also defined in include/asm-arm/arch-*/hardware.h
---- 050125/fs/binfmt_elf.c Tue Jan 25 00:22:37 2005
-+++ 050218/fs/binfmt_elf.c Thu Feb 17 08:52:54 2005
-@@ -815,6 +815,15 @@
- ELF_PLAT_INIT(regs);
- #endif
-
-+#if defined(CONFIG_CPU_PXA27X)
-+ if( elf_ex.e_flags & EF_ARM_SOFT_FLOAT ) {
-+ regs->cpar = 0x03; //CP0 CP1 Used.
-+ }
-+ else {
-+ regs->cpar = 0x01; //CP0 Only.
-+ }
-+#endif
-+
- start_thread(regs, elf_entry, bprm->p);
- if (current->ptrace & PT_PTRACED)
- send_sig(SIGTRAP, current, 0);
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P01-C3000-clockup_050221.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P01-C3000-clockup_050221.patch
deleted file mode 100644
index d193f23733..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P01-C3000-clockup_050221.patch
+++ /dev/null
@@ -1,202 +0,0 @@
-diff -Nur c3000_org/linux/arch/arm/config.in c3000_work/linux/arch/arm/config.in
---- c3000_org/linux/arch/arm/config.in 2004-08-21 09:48:07.000000000 +0900
-+++ c3000_work/linux/arch/arm/config.in 2005-02-21 21:41:40.000000000 +0900
-@@ -195,7 +195,7 @@
- dep_bool ' SHARP Spitz' CONFIG_ARCH_PXA_SPITZ $CONFIG_ARCH_PXA_BOXER
- dep_bool ' Using Trial 0' CONFIG_SPITZ_TR0 $CONFIG_ARCH_PXA_SPITZ
- dep_bool ' Using Trial 0.5' CONFIG_SPITZ_TR0_5 $CONFIG_ARCH_PXA_SPITZ
--dep_bool ' SHARP Tosa' CONFIG_ARCH_PXA_TOSA
-+dep_bool ' SHARP Tosa' CONFIG_ARCH_PXA_TOSA $CONFIG_ARCH_PXA
- dep_bool ' SHARP Tosa skipping' CONFIG_ARCH_PXA_TOSA_SKIP $CONFIG_ARCH_PXA_TOSA
-
- if [ "$CONFIG_SABINAL_DISCOVERY" = "y" -o "$CONFIG_ARCH_PXA_POODLE" = "y" -o \
-@@ -475,6 +475,9 @@
- if [ "$CONFIG_ARCH_PXA_SPITZ" = "y" ]; then
- define_bool CONFIG_CPU_PXA27X y
- fi
-+ if [ "$CONFIG_ARCH_PXA_SPITZ" = "y" ]; then
-+ bool 'Use clock change(cccr_change) enable (EXPERIMENTAL)' CONFIG_SL_CCCR_CHANGE
-+ fi
- if [ "$CONFIG_ARCH_SHARP_SL" = "y" ]; then
- define_bool CONFIG_BATT y
- fi
-@@ -557,7 +560,7 @@
- # bool ' Real-Time Scheduling support' CONFIG_RTSCHED
- define_bool CONFIG_RTSCHED y
- if [ "$CONFIG_RTSCHED" = "y" ]; then
-- int ' MAX PTHREAD (int)' CONFIG_RTH_PTHREAD_MAX 128
-+ int ' MAX PTHREAD (int)' CONFIG_RTH_PTHREAD_MAX 128
- hex ' RT MEMORY SIZE (hex)' CONFIG_RT_MEM_SIZE 80000
- bool ' Real-Time Calibrate support' CONFIG_RTHAL_CALIBRATION
- if [ "$CONFIG_RTHAL_CALIBRATION" != "y" ]; then
-@@ -615,7 +618,7 @@
- hex 'Compressed ROM boot loader BSS address' CONFIG_ZBOOT_ROM_BSS 0
- else
- define_hex CONFIG_ZBOOT_ROM_TEXT 0
-- define_hex CONFIG_ZBOOT_ROM_BSS 0
-+ define_hex CONFIG_ZBOOT_ROM_BSS 0
- fi
-
- if [ "$CONFIG_ARCH_SA1100" = "y" -o \
-diff -Nur c3000_org/linux/arch/arm/mach-pxa/sharpsl_apm.c c3000_work/linux/arch/arm/mach-pxa/sharpsl_apm.c
---- c3000_org/linux/arch/arm/mach-pxa/sharpsl_apm.c 2004-11-16 15:31:06.000000000 +0900
-+++ c3000_work/linux/arch/arm/mach-pxa/sharpsl_apm.c 2005-02-21 21:44:13.000000000 +0900
-@@ -130,6 +130,11 @@
- extern int HWR_flag;
- #endif
-
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+extern unsigned int CCCR_ValAdr_high;
-+struct proc_dir_entry *proc_zaurus;
-+#endif
-+
- #if defined(CONFIG_SABINAL_DISCOVERY)
- #define SHARPSL_AC_LINE_STATUS (( ASIC3_GPIO_PSTS_D & AC_IN )? APM_AC_OFFLINE : APM_AC_ONLINE)
- #define BACKPACK_IN_DETECT() ( ASIC3_GPIO_PSTS_D & BACKPACK_DETECT ) /* 0: exist , 1: not in */
-@@ -974,6 +979,63 @@
-
- EXPORT_SYMBOL(lock_FCS);
-
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+
-+void write_cccr(int cccr)
-+{
-+ printk("Change CCCR = %x.\n",cccr);
-+ CCCR_ValAdr_high = cccr;
-+ sharpsl_chg_freq = cccr;
-+ cpu_xscale_sl_change_speed_high();
-+ cccr_reg = CCCR;
-+ printk("Changed CCCR = %x.\n",cccr_reg);
-+ return;
-+}
-+
-+int read_cccr(void)
-+{
-+ return CCCR_ValAdr_high;
-+}
-+
-+static ssize_t cccr_change_read_params(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char outputbuf[32];
-+ int count;
-+
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(outputbuf, "0x%08X\n", read_cccr());
-+ count++;
-+ *ppos += count;
-+ if (count>nbytes)/* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count+1))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t cccr_change_write_params(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ unsigned int param=0;
-+
-+ sscanf(buf,"%x",&param);
-+ if (param) {
-+ write_cccr(param);
-+ }
-+ return nbytes;
-+}
-+
-+static struct file_operations proc_cccr_change_params_operations = {
-+ read:cccr_change_read_params,
-+ write:cccr_change_write_params,
-+};
-+
-+EXPORT_SYMBOL(read_cccr);
-+EXPORT_SYMBOL(write_cccr);
-+#endif
-+
- #ifdef CONFIG_APM_CPU_IDLE
- #ifdef SHARPSL_NEW_IDLE
- static int save_icmr;
-@@ -2786,6 +2848,7 @@
- struct proc_dir_entry *apm_proc;
- struct proc_dir_entry *lock_fcs_proc;
- struct proc_dir_entry *power_mode_proc;
-+ struct proc_dir_entry *cccr_change_proc;
-
- apm_info.bios = apm_bios_info;
- if (apm_info.bios.version == 0) {
-@@ -2822,6 +2885,9 @@
- printk("FCS : CCCR = %x\n",cccr_reg);
- #if defined(CONFIG_CPU_PXA27X)
- sharpsl_chg_freq = cccr_reg;
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ CCCR_ValAdr_high = sharpsl_chg_freq;
-+#endif
- #endif
- #endif
-
-@@ -2902,6 +2968,19 @@
- power_mode_proc->proc_fops = &proc_power_mode_params_operations;
- }
-
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ proc_zaurus = proc_mkdir("zaurus", NULL);
-+ if (proc_zaurus == NULL) {
-+ unregister_chrdev(228, "zaurus");
-+ printk(KERN_ERR "proc: can't create /proc/zaurus\n");
-+ return -ENOMEM;
-+ }
-+
-+ cccr_change_proc = create_proc_entry("zaurus/CCCR", 0, NULL);
-+ if (cccr_change_proc) {
-+ cccr_change_proc->proc_fops = &proc_cccr_change_params_operations;
-+ }
-+#endif
- kernel_thread(apm_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-
- #if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_TOSA)
-diff -Nur c3000_org/linux/arch/arm/mach-pxa/sharpsl_suspend.S c3000_work/linux/arch/arm/mach-pxa/sharpsl_suspend.S
---- c3000_org/linux/arch/arm/mach-pxa/sharpsl_suspend.S 2004-11-09 14:30:36.000000000 +0900
-+++ c3000_work/linux/arch/arm/mach-pxa/sharpsl_suspend.S 2005-02-21 21:41:40.000000000 +0900
-@@ -64,7 +64,7 @@
-
- sleep_param: .word 0 @ virtual address of parameter array
- sleep_param_p: .word 0 @ physical address of parameter array
--
-+
- IC_BASE: .word io_p2v(0x40D00000)
-
-
-@@ -1109,6 +1109,9 @@
-
- #else /* CONFIG_CPU_PXA27X */
-
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ .global CCCR_ValAdr_high
-+#endif
- CCCR_ValAdr_high: .word 0x02000210
- MSC0_ValAdr_high: .word 0x7ff02DD8
- MSC1_ValAdr_high: .word 0x7ff434D4
-@@ -1305,8 +1308,12 @@
- stmfd sp!, {r0, r1, r2, r3, r4, lr}
-
- ldr r0, CMR_BASE
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ ldr r1, CCCR_ValAdr_high
-+#else
- ldr r1, CCCR_ValAdr_208
-- str r1, [r0, #CMR_CCCR]
-+#endif
-+ str r1, [r0, #CMR_CCCR]
-
- ldr r0, MD_BASE
- ldr r4, MDREFR_ValAdr_208
-@@ -1333,7 +1340,7 @@
-
- .align 5
- .text
--
-+
- ENTRY(pxa27x_get_ccnt)
- mrc p14, 0, r0, c1, c1, 0
- mov pc, lr @ return
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P02++050226.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P02++050226.patch
deleted file mode 100644
index d9c94e5ac1..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P02++050226.patch
+++ /dev/null
@@ -1,221 +0,0 @@
---- BASE/arch/arm/mach-pxa/pxa27x_power.c Sat Feb 26 01:35:47 2005
-+++ 050226/arch/arm/mach-pxa/pxa27x_power.c Sat Feb 26 02:01:45 2005
-@@ -152,6 +152,10 @@
-
- #if defined(CONFIG_CHANGE_CORE_VOLT)
- static unsigned char current_core_voltage = 0x1a;
-+static unsigned char core_voltage_value = 0;
-+extern unsigned int CCCR_ValAdr_high;
-+#include <linux/sem.h>
-+static DECLARE_MUTEX(core_voltage_sem);
- #endif
-
- void PrintParamTable(void);
-@@ -397,9 +401,9 @@
- }
- #endif //DEBUG
-
-+#if !defined(CONFIG_CHANGE_CORE_VOLT)
- static void cpu_xscale_voltage_low(void)
- {
--
- pwr_i2c_open();
- pwr_i2c_write( 0x0c, 0x13 ); // 1.00V - SlewRate 1
- //pwr_i2c_write( 0x0c, 0x12 ); // 0.95V - SlewRate 1
-@@ -409,38 +413,90 @@
- static void cpu_xscale_voltage_high(void)
- {
- pwr_i2c_open();
--#if defined(CONFIG_CHANGE_CORE_VOLT)
-- pwr_i2c_write( 0x0c, current_core_voltage );
-- pwr_i2c_close();
-- printk("current voltage %x\n", current_core_voltage );
--#else
- pwr_i2c_write( 0x0c, 0x1a ); // 1.35V - SlewRate 1
- pwr_i2c_close();
--#endif
- }
-+#endif
-
- #if defined(CONFIG_CHANGE_CORE_VOLT)
-+static void cpu_xscale_voltage_change(unsigned char value)
-+{
-+ if(core_voltage_value!=value) {
-+ core_voltage_value = value;
-+ pwr_i2c_open();
-+ pwr_i2c_write( 0x0c, current_core_voltage );
-+ pwr_i2c_close();
-+ }
-+}
-+
-+void cpu_xscale_voltage_high(void)
-+{
-+ down(&core_voltage_sem);
-+ cpu_xscale_voltage_change(current_core_voltage);
-+ up(&core_voltage_sem);
-+}
- void cpu_xscale_voltage_write(unsigned char value)
- {
- if (value > 0x10 )
- return;
- value += 0x10;
-+ down(&core_voltage_sem);
-+ core_voltage_value = value;
- pwr_i2c_open();
- pwr_i2c_write( 0x0c, value );
- pwr_i2c_close();
- current_core_voltage = value;
-+ up(&core_voltage_sem);
- printk("current voltage %x\n", current_core_voltage );
-
- }
-+
-+void cpu_xscale_sl_change_speed_high(void)
-+{
-+ down(&core_voltage_sem);
-+ cpu_xscale_voltage_change(current_core_voltage);
-+ _cpu_xscale_sl_change_speed_high();
-+ up(&core_voltage_sem);
-+}
-+void cpu_xscale_sl_change_speed_low(void)
-+{
-+ down(&core_voltage_sem);
-+ _cpu_xscale_sl_change_speed_low();
-+ cpu_xscale_voltage_change(0x13);
-+ up(&core_voltage_sem);
-+}
-+void cpu_xscale_sl_change_speed_91(void)
-+{
-+ down(&core_voltage_sem);
-+ _cpu_xscale_sl_change_speed_91();
-+ core_voltage_value = 0x13;
-+ pwr_i2c_open();
-+ pwr_i2c_write( 0x0c, core_voltage_value );
-+ pwr_i2c_close();
-+ up(&core_voltage_sem);
-+}
-+void cpu_xscale_sl_change_speed_208(void)
-+{
-+ down(&core_voltage_sem);
-+ core_voltage_value = current_core_voltage;
-+ pwr_i2c_open();
-+ pwr_i2c_write( 0x0c, core_voltage_value );
-+ pwr_i2c_close();
-+ _cpu_xscale_sl_change_speed_208();
-+ up(&core_voltage_sem);
-+}
-+
- #endif
-
- #if defined(DEBUG) || defined(CONFIG_CHANGE_CORE_VOLT)
- unsigned char cpu_xscale_voltage_read(void)
- {
- unsigned char value=0xff;
-+ down(&core_voltage_sem);
- pwr_i2c_open();
- pwr_i2c_read( 0x0c, &value );
- pwr_i2c_close();
-+ up(&core_voltage_sem);
- return value;
- }
- #endif
-@@ -520,7 +576,7 @@
- sys_ctx.oier = OIER;
-
- #if defined(CONFIG_CPU_PXA27X)
-- if ( CCCR != 0x02000210 ) {
-+ if ( CCCR != CCCR_ValAdr_high ) { //0x02000210 ) {
- cpu_xscale_sl_change_speed_high();
- }
- #endif
-@@ -571,8 +627,10 @@
- cpu_xscale_sl_disable_fastbus_mode();
- udelay(1);
- cpu_xscale_sl_change_speed_91();
-+#if !defined(CONFIG_CHANGE_CORE_VOLT)
- cpu_xscale_voltage_low();
- #endif
-+#endif
-
- /* Scoop suspend */
- sharpsl_check_scoop_reg();
-@@ -790,7 +848,9 @@
- SCP2_REG_GPWR = sys_ctx.scp2_gpwr;
-
- #if defined(PXA27X_SUSPEND)
-+#if !defined(CONFIG_CHANGE_CORE_VOLT)
- cpu_xscale_voltage_high();
-+#endif
- cpu_xscale_sl_change_speed_208();
- udelay(1);
- cpu_xscale_sl_enable_fastbus_mode();
---- BASE/arch/arm/mach-pxa/sharpsl_apm.c Sat Feb 26 01:35:52 2005
-+++ 050226/arch/arm/mach-pxa/sharpsl_apm.c Sat Feb 26 01:54:16 2005
-@@ -143,6 +143,7 @@
- #if defined(CONFIG_CHANGE_CORE_VOLT)
- extern unsigned char cpu_xscale_voltage_read(void);
- extern void cpu_xscale_voltage_write(unsigned char);
-+extern void cpu_xscale_voltage_high(void);
- #endif
-
- #if defined(CONFIG_SABINAL_DISCOVERY)
-@@ -1389,6 +1390,9 @@
-
- #if defined(CONFIG_CPU_PXA27X)
- #if defined(CONFIG_FB_SHARPSL_PXA)
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+ cpu_xscale_voltage_high();
-+#endif
- while (1) {
- if (!(LCCR0 & 0x1) || (GPLR(GPIO74_LCD_FCLK) &
- GPIO_bit(GPIO74_LCD_FCLK)))
---- BASE/arch/arm/mach-pxa/sharpsl_suspend.S Sat Feb 26 01:35:42 2005
-+++ 050226/arch/arm/mach-pxa/sharpsl_suspend.S Sat Feb 26 01:54:16 2005
-@@ -1119,7 +1119,11 @@
- MDREFR_ValAdr_high_pre: .word 0x001BC00B
- MDREFR_ValAdr_high: .word 0x001BC030
-
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+ENTRY(_cpu_xscale_sl_change_speed_high)
-+#else
- ENTRY(cpu_xscale_sl_change_speed_high)
-+#endif
- stmfd sp!, {r0, r1, r2, r3, r4, lr}
-
- ldr r0, CMR_BASE
-@@ -1168,7 +1172,11 @@
- @MDREFR_ValAdr_low: .word 0x0019C017
- MDREFR_ValAdr_low: .word 0x001BC017
-
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+ENTRY(_cpu_xscale_sl_change_speed_low)
-+#else
- ENTRY(cpu_xscale_sl_change_speed_low)
-+#endif
- stmfd sp!, {r0, r1, r2, r3, r4, lr}
-
- ldr r0, CMR_BASE
-@@ -1261,7 +1269,11 @@
- MDREFR_ValAdr_91_pre: .word 0x001BC00B
- MDREFR_ValAdr_91: .word 0x001BC013
-
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+ENTRY(_cpu_xscale_sl_change_speed_91)
-+#else
- ENTRY(cpu_xscale_sl_change_speed_91)
-+#endif
- stmfd sp!, {r0, r1, r2, r3, r4, lr}
-
- ldr r0, CMR_BASE
-@@ -1304,7 +1316,11 @@
- MSC2_ValAdr_208: .word 0x7FF034D4
- MDREFR_ValAdr_208: .word 0x001BC00B
-
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+ENTRY(_cpu_xscale_sl_change_speed_208)
-+#else
- ENTRY(cpu_xscale_sl_change_speed_208)
-+#endif
- stmfd sp!, {r0, r1, r2, r3, r4, lr}
-
- ldr r0, CMR_BASE
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P02-C3000-voltage_050221.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P02-C3000-voltage_050221.patch
deleted file mode 100644
index 1663304aae..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P02-C3000-voltage_050221.patch
+++ /dev/null
@@ -1,179 +0,0 @@
-diff -Nur c3000_pre/linux/arch/arm/config.in c3000_work/linux/arch/arm/config.in
---- c3000_pre/linux/arch/arm/config.in 2005-02-21 21:41:40.000000000 +0900
-+++ c3000_work/linux/arch/arm/config.in 2005-02-21 22:25:37.000000000 +0900
-@@ -478,6 +478,9 @@
- if [ "$CONFIG_ARCH_PXA_SPITZ" = "y" ]; then
- bool 'Use clock change(cccr_change) enable (EXPERIMENTAL)' CONFIG_SL_CCCR_CHANGE
- fi
-+ if [ "$CONFIG_SL_CCCR_CHANGE" = "y" ]; then
-+ bool 'Core voltage change enable (EXPERIMENTAL)' CONFIG_CHANGE_CORE_VOLT
-+ fi
- if [ "$CONFIG_ARCH_SHARP_SL" = "y" ]; then
- define_bool CONFIG_BATT y
- fi
-diff -Nur c3000_pre/linux/arch/arm/mach-pxa/pxa27x_power.c c3000_work/linux/arch/arm/mach-pxa/pxa27x_power.c
---- c3000_pre/linux/arch/arm/mach-pxa/pxa27x_power.c 2004-11-04 14:13:54.000000000 +0900
-+++ c3000_work/linux/arch/arm/mach-pxa/pxa27x_power.c 2005-02-21 22:25:37.000000000 +0900
-@@ -150,6 +150,10 @@
- extern int sharpsl_main_bk_flag;
- int sharpsl_request_off = 0;
-
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+static unsigned char current_core_voltage = 0x1a;
-+#endif
-+
- void PrintParamTable(void);
-
- int sharpsl_restart(void)
-@@ -324,7 +328,7 @@
- return -1;
- }
-
--#ifdef DEBUG
-+#if defined(DEBUG) || defined(CONFIG_CHANGE_CORE_VOLT)
- int pwr_i2c_read( unsigned char device, unsigned char *value )
- {
- unsigned long r;
-@@ -405,12 +409,33 @@
- static void cpu_xscale_voltage_high(void)
- {
- pwr_i2c_open();
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+ pwr_i2c_write( 0x0c, current_core_voltage );
-+ pwr_i2c_close();
-+ printk("current voltage %x\n", current_core_voltage );
-+#else
- pwr_i2c_write( 0x0c, 0x1a ); // 1.35V - SlewRate 1
- pwr_i2c_close();
-+#endif
-+}
-+
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+void cpu_xscale_voltage_write(unsigned char value)
-+{
-+ if (value > 0x10 )
-+ return;
-+ value += 0x10;
-+ pwr_i2c_open();
-+ pwr_i2c_write( 0x0c, value );
-+ pwr_i2c_close();
-+ current_core_voltage = value;
-+ printk("current voltage %x\n", current_core_voltage );
-+
- }
-+#endif
-
--#ifdef DEBUG
--static unsigned char cpu_xscale_voltage_read(void)
-+#if defined(DEBUG) || defined(CONFIG_CHANGE_CORE_VOLT)
-+unsigned char cpu_xscale_voltage_read(void)
- {
- unsigned char value=0xff;
- pwr_i2c_open();
-@@ -418,7 +443,9 @@
- pwr_i2c_close();
- return value;
- }
-+#endif
-
-+#if defined(DEBUG)
- #define CLKCFG(a) asm("mrc p14, 0, %0, C6, C0, 0" : "=r"(a))
- static void __debug_printk(void)
- {
-diff -Nur c3000_pre/linux/arch/arm/mach-pxa/sharpsl_apm.c c3000_work/linux/arch/arm/mach-pxa/sharpsl_apm.c
---- c3000_pre/linux/arch/arm/mach-pxa/sharpsl_apm.c 2005-02-21 21:44:13.000000000 +0900
-+++ c3000_work/linux/arch/arm/mach-pxa/sharpsl_apm.c 2005-02-21 22:29:17.000000000 +0900
-@@ -135,6 +135,11 @@
- struct proc_dir_entry *proc_zaurus;
- #endif
-
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+extern unsigned char cpu_xscale_voltage_read(void);
-+extern void cpu_xscale_voltage_write(unsigned char);
-+#endif
-+
- #if defined(CONFIG_SABINAL_DISCOVERY)
- #define SHARPSL_AC_LINE_STATUS (( ASIC3_GPIO_PSTS_D & AC_IN )? APM_AC_OFFLINE : APM_AC_ONLINE)
- #define BACKPACK_IN_DETECT() ( ASIC3_GPIO_PSTS_D & BACKPACK_DETECT ) /* 0: exist , 1: not in */
-@@ -1036,6 +1041,58 @@
- EXPORT_SYMBOL(write_cccr);
- #endif
-
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+
-+void write_vcore(int vcore)
-+{
-+ printk("Change Core voltage = %x.\n", vcore);
-+ cpu_xscale_voltage_write(vcore);
-+ return;
-+}
-+
-+int read_vcore(void)
-+{
-+ return cpu_xscale_voltage_read();
-+}
-+
-+static ssize_t core_volt_read_params(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char outputbuf[32];
-+ int count;
-+
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(outputbuf, "0x%02X\n", (unsigned int) cpu_xscale_voltage_read() );
-+ count++;
-+ *ppos += count;
-+ if (count>nbytes)/* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count+1))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t core_volt_write_params(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ unsigned int param=0;
-+
-+ sscanf(buf,"%x",&param);
-+ if (param) {
-+ write_vcore(param);
-+ }
-+ return nbytes;
-+}
-+
-+static struct file_operations proc_core_volt_params_operations = {
-+ read:core_volt_read_params,
-+ write:core_volt_write_params,
-+};
-+EXPORT_SYMBOL(read_vcore);
-+EXPORT_SYMBOL(write_vcore);
-+#endif
-+
- #ifdef CONFIG_APM_CPU_IDLE
- #ifdef SHARPSL_NEW_IDLE
- static int save_icmr;
-@@ -2849,6 +2906,7 @@
- struct proc_dir_entry *lock_fcs_proc;
- struct proc_dir_entry *power_mode_proc;
- struct proc_dir_entry *cccr_change_proc;
-+ struct proc_dir_entry *core_volt_proc;
-
- apm_info.bios = apm_bios_info;
- if (apm_info.bios.version == 0) {
-@@ -2981,6 +3039,14 @@
- cccr_change_proc->proc_fops = &proc_cccr_change_params_operations;
- }
- #endif
-+
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+ core_volt_proc = create_proc_entry("zaurus/VCORE", 0, NULL);
-+ if (core_volt_proc) {
-+ core_volt_proc->proc_fops = &proc_core_volt_params_operations;
-+ }
-+#endif
-+
- kernel_thread(apm_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-
- #if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_TOSA)
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P03-C3000-SIGSTOP_FIX_041207.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P03-C3000-SIGSTOP_FIX_041207.patch
deleted file mode 100644
index 332f52f939..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P03-C3000-SIGSTOP_FIX_041207.patch
+++ /dev/null
@@ -1,195 +0,0 @@
-diff -Nur c3000_pre/linux/arch/arm/config.in c3000_work/linux/arch/arm/config.in
---- c3000_pre/linux/arch/arm/config.in 2004-12-05 22:17:18.000000000 +0900
-+++ c3000_work/linux/arch/arm/config.in 2004-12-06 01:13:03.000000000 +0900
-@@ -481,6 +481,7 @@
- if [ "$CONFIG_SL_CCCR_CHANGE" = "y" ]; then
- bool 'Core voltage change enable (EXPERIMENTAL)' CONFIG_CHANGE_CORE_VOLT
- fi
-+ bool 'Fix send SIGSTOP to all tasks at suspend (EXPERIMENTAL)' CONFIG_SL_SIGSTOP_FIX
- if [ "$CONFIG_ARCH_SHARP_SL" = "y" ]; then
- define_bool CONFIG_BATT y
- fi
-diff -Nur c3000_pre/linux/arch/arm/mach-pxa/sharpsl_apm.c c3000_work/linux/arch/arm/mach-pxa/sharpsl_apm.c
---- c3000_pre/linux/arch/arm/mach-pxa/sharpsl_apm.c 2004-12-05 22:17:18.000000000 +0900
-+++ c3000_work/linux/arch/arm/mach-pxa/sharpsl_apm.c 2004-12-06 23:48:35.000000000 +0900
-@@ -75,6 +75,11 @@
- #include <asm/system.h>
- #include <asm/hardware.h>
-
-+extern int errno;
-+// unistd.h is included for the configuration ioctl stuff
-+#define __KERNEL_SYSCALLS__ 1
-+#include <asm/unistd.h>
-+
- #ifdef CONFIG_ARCH_SHARP_SL
- #include <asm/irq.h>
- #include <asm/arch/irqs.h>
-@@ -363,6 +368,8 @@
- };
- #define ERROR_COUNT (sizeof(error_table)/sizeof(lookup_t))
-
-+#define APP_NAME_LIST "/etc/suspend.lst"
-+
- /*
- * Function
- */
-@@ -650,14 +657,81 @@
- struct task_struct* p = NULL;
- struct task_struct* tsk = current;
-
-+#if defined(CONFIG_SL_SIGSTOP_FIX)
-+ int fd,x;
-+ mm_segment_t old_fs = get_fs ();
-+ char line_buffer[256];
-+
- if (! spin_trylock(&lock))
- return;
-+
-+ // Try opening the send sig application name list
-+
-+ set_fs(KERNEL_DS);
-+ fd = open(APP_NAME_LIST, O_RDONLY, 0);
-+ set_fs(old_fs);
-
- /* send signal to all procs except for kernel-threads */
- read_lock(&tasklist_lock);
-+
-+ if(fd < 0){
-+ for_each_task(p) {
-+ struct siginfo si;
-+
-+ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
-+ continue;
-+ if (!strcmp(p->comm,"cardmgr")) { //Send sig to cardmgr
-+ si.si_signo = signo;
-+ si.si_errno = 0;
-+ si.si_code = SI_KERNEL;
-+ si.si_pid = tsk->pid;
-+ si.si_uid = tsk->uid;
-+ send_sig_info(signo, &si, p);
-+ }
-+ }
-+
-+ }else {
-+ for(;;){
-+ memset(line_buffer, '\0', 256);
-+ set_fs(KERNEL_DS);
-+ for (x = 0; x < 256; x++) {
-+ if (!read(fd, &line_buffer[x], 1))
-+ goto sig_send_done;
-+ if (line_buffer[x] == '\n' || line_buffer[x] == '\r')
-+ break;
-+ }
-+ set_fs(old_fs);
-+
-+ for_each_task(p) {
-+ struct siginfo si;
-+
-+ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
-+ continue;
-+ if (!strncmp(p->comm,line_buffer,strlen(p->comm))) { //Send sig to cardmgr
-+// printk ("Send SIG to application\n");
-+ si.si_signo = signo;
-+ si.si_errno = 0;
-+ si.si_code = SI_KERNEL;
-+ si.si_pid = tsk->pid;
-+ si.si_uid = tsk->uid;
-+ send_sig_info(signo, &si, p);
-+ }
-+ }
-+ }
-+ sig_send_done:
-+
-+ close(fd);
-+
-+ }
-+#else
-+ if (! spin_trylock(&lock))
-+ return;
-+
-+ /* send signal to all procs except for kernel-threads */
-+ read_lock(&tasklist_lock);
- for_each_task(p) {
- struct siginfo si;
--
-+
- if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
- continue;
-
-@@ -667,7 +741,8 @@
- si.si_pid = tsk->pid;
- si.si_uid = tsk->uid;
- send_sig_info(signo, &si, p);
-- }
-+ }
-+#endif
- read_unlock(&tasklist_lock);
-
- if (signo == SIGSTOP) {
-@@ -679,6 +754,58 @@
- schedule();
- set_current_state(state);
-
-+#if defined(CONFIG_SL_SIGSTOP_FIX)
-+ set_fs(KERNEL_DS);
-+ fd = open(APP_NAME_LIST, O_RDONLY, 0);
-+ set_fs(old_fs);
-+
-+ read_lock(&tasklist_lock);
-+ if(fd < 0){
-+ for_each_task(p) {
-+ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
-+ continue;
-+ if (!strcmp(p->comm,"cardmgr")) {
-+// printk ("Check application stopped\n");
-+
-+ if (p->state != TASK_STOPPED) {
-+ read_unlock(&tasklist_lock);
-+ goto retry;
-+ }
-+ }
-+ }
-+ }else {
-+
-+ for(;;){
-+ memset(line_buffer, '\0', 256);
-+ old_fs = get_fs();
-+ set_fs(KERNEL_DS);
-+ for (x = 0; x < 256; x++) {
-+ if (!read(fd, &line_buffer[x], 1))
-+ goto sig_stop_done;
-+ if (line_buffer[x] == '\n' || line_buffer[x] == '\r')
-+ break;
-+ }
-+ set_fs(old_fs);
-+
-+ for_each_task(p) {
-+ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
-+ continue;
-+ if (!strncmp(p->comm,line_buffer,strlen(p->comm))) {
-+
-+ if (p->state != TASK_STOPPED) {
-+ read_unlock(&tasklist_lock);
-+ goto retry;
-+ }
-+ }
-+ }
-+ }
-+ sig_stop_done:
-+ close(fd);
-+ }
-+
-+ read_unlock(&tasklist_lock);
-+ }
-+#else
- read_lock(&tasklist_lock);
- for_each_task(p) {
- if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p))
-@@ -691,6 +818,7 @@
- }
- read_unlock(&tasklist_lock);
- }
-+#endif
-
- spin_unlock(&lock);
- }
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P04-C3000-UNICON_041206.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P04-C3000-UNICON_041206.patch
deleted file mode 100644
index b6b59abcbd..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P04-C3000-UNICON_041206.patch
+++ /dev/null
@@ -1,40089 +0,0 @@
-diff -Nur c3000_pre/linux/drivers/char/Makefile c3000_work/linux/drivers/char/Makefile
---- c3000_pre/linux/drivers/char/Makefile 2004-08-21 09:48:25.000000000 +0900
-+++ c3000_work/linux/drivers/char/Makefile 2004-12-06 09:25:00.000000000 +0900
-@@ -12,7 +12,8 @@
- #
- # This file contains the font map for the default (hardware) font
- #
--FONTMAPFILE = cp437.uni
-+#FONTMAPFILE = cp437.uni
-+FONTMAPFILE = direct.uni
-
- O_TARGET := char.o
-
-diff -Nur c3000_pre/linux/drivers/char/console.c c3000_work/linux/drivers/char/console.c
---- c3000_pre/linux/drivers/char/console.c 2004-08-21 09:48:25.000000000 +0900
-+++ c3000_work/linux/drivers/char/console.c 2004-12-06 09:44:28.000000000 +0900
-@@ -88,6 +88,11 @@
- #include <linux/slab.h>
- #include <linux/major.h>
- #include <linux/mm.h>
-+
-+#ifdef CONFIG_UNICON
-+#include <linux/fb_doublebyte.h>
-+#endif
-+
- #include <linux/console.h>
- #include <linux/init.h>
- #include <linux/devfs_fs_kernel.h>
-@@ -112,7 +117,10 @@
-
- #include "console_macros.h"
-
--
-+#ifdef CONFIG_UNICON
-+#define video_erase_char_ext ((video_erase_char)&0xff)
-+extern unsigned short translations[][256];
-+#endif
- const struct consw *conswitchp;
-
- /* A bitmap for codes <32. A bit of 1 indicates that the code
-@@ -242,6 +250,20 @@
- p = sw->con_screen_pos(vc_cons[currcons].d, offset);
- return p;
- }
-+#ifdef CONFIG_UNICON
-+static inline unsigned short *screenpos_ext(int currcons, int offset, int viewed)
-+{
-+ unsigned short *p;
-+
-+ if (!viewed)
-+ p = (unsigned short *)(origin + offset + screenbuf_size);
-+ else if (!sw->con_screen_pos)
-+ p = (unsigned short *)(visible_origin + offset + screenbuf_size);
-+ else
-+ p = sw->con_screen_pos(vc_cons[currcons].d, -offset-1);
-+ return p;
-+}
-+#endif
-
- static inline void scrolldelta(int lines)
- {
-@@ -268,6 +290,14 @@
- s = (unsigned short *) (origin+video_size_row*(t+nr));
- scr_memcpyw(d, s, (b-t-nr) * video_size_row);
- scr_memsetw(d + (b-t-nr) * video_num_columns, video_erase_char, video_size_row*nr);
-+
-+#ifdef CONFIG_UNICON
-+ d += (screenbuf_size>>1);
-+ s += (screenbuf_size>>1);
-+ scr_memcpyw(d, s, (b-t-nr) * video_size_row);
-+ scr_memsetw(d + (b-t-nr) * video_num_columns, video_erase_char_ext, video_size_row*nr);
-+#endif
-+
- }
-
- static void
-@@ -286,6 +316,11 @@
- step = video_num_columns * nr;
- scr_memmovew(s + step, s, (b-t-nr)*video_size_row);
- scr_memsetw(s, video_erase_char, 2*step);
-+#ifdef CONFIG_UNICON
-+ s += (screenbuf_size>>1);
-+ scr_memmovew(s + step, s, (b-t-nr)*video_size_row);
-+ scr_memsetw(s, video_erase_char_ext, 2*step);
-+#endif
- }
-
- static void do_update_region(int currcons, unsigned long start, int count)
-@@ -309,6 +344,10 @@
- int startx = xx;
- u16 *q = p;
- while (xx < video_num_columns && count) {
-+#ifdef CONFIG_UNICON
-+ //line by line, so the following putcs will be assured to
-+ //handle only in-line string.
-+#endif
- if (attrib != (scr_readw(p) & 0xff00)) {
- if (p > q)
- sw->con_putcs(vc_cons[currcons].d, q, p-q, yy, startx);
-@@ -438,6 +477,39 @@
- }
-
- /* used by selection: complement pointer position */
-+#ifdef CONFIG_UNICON
-+void complement_pos(int currcons, int offset)
-+{
-+ static unsigned short *p = NULL;
-+ static unsigned short old = 0;
-+ static unsigned short oldx = 0, oldy = 0;
-+ static unsigned short *p_ext = NULL;
-+ static unsigned short old_ext = 0;
-+
-+ if (p) {
-+ scr_writew(old, p);
-+ //scr_writew(old_ext, p_ext);
-+ if (DO_UPDATE)
-+ sw->con_putc(vc_cons[currcons].d, (old_ext<<16)| old, oldy, oldx);
-+ }
-+ if (offset == -1)
-+ p = NULL;
-+ else {
-+ unsigned short new;
-+ p = screenpos(currcons, offset, 1);
-+ p_ext = screenpos_ext(currcons, offset, 1);
-+ old = scr_readw(p);
-+ old_ext = scr_readw(p_ext);
-+ new = old ^ complement_mask;
-+ scr_writew(new, p);
-+ if (DO_UPDATE) {
-+ oldx = (offset >> 1) % video_num_columns;
-+ oldy = (offset >> 1) / video_num_columns;
-+ sw->con_putc(vc_cons[currcons].d, (old_ext<<16) | new, oldy, oldx);
-+ }
-+ }
-+}
-+#else
- void complement_pos(int currcons, int offset)
- {
- static unsigned short *p;
-@@ -464,15 +536,23 @@
- }
- }
- }
--
-+#endif
- static void insert_char(int currcons, unsigned int nr)
- {
- unsigned short *p, *q = (unsigned short *) pos;
-
- p = q + video_num_columns - nr - x;
-- while (--p >= q)
-+ while (--p >= q) {
- scr_writew(scr_readw(p), p + nr);
-+#ifdef CONFIG_UNICON
-+ scr_writew(scr_readw(p+(screenbuf_size>>1)),p+(screenbuf_size>>1)+nr);
-+#endif
-+ }
- scr_memsetw(q, video_erase_char, nr*2);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw(q+(screenbuf_size>>1),video_erase_char_ext,nr*2);
-+#endif
-+
- need_wrap = 0;
- if (DO_UPDATE) {
- unsigned short oldattr = attr;
-@@ -480,8 +560,9 @@
- video_num_columns-x-nr);
- attr = video_erase_char >> 8;
- while (nr--)
-- sw->con_putc(vc_cons[currcons].d,
-+ sw->con_putc(vc_cons[currcons].d,
- video_erase_char,y,x+nr);
-+
- attr = oldattr;
- }
- }
-@@ -490,12 +571,17 @@
- {
- unsigned int i = x;
- unsigned short *p = (unsigned short *) pos;
--
- while (++i <= video_num_columns - nr) {
- scr_writew(scr_readw(p+nr), p);
-+#ifdef CONFIG_UNICON
-+ scr_writew(scr_readw(p+nr+(screenbuf_size>>1)),p+(screenbuf_size>>1));
-+#endif
- p++;
- }
- scr_memsetw(p, video_erase_char, nr*2);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw(p+(screenbuf_size>>1), video_erase_char_ext, nr*2);
-+#endif
- need_wrap = 0;
- if (DO_UPDATE) {
- unsigned short oldattr = attr;
-@@ -504,8 +590,8 @@
- attr = video_erase_char >> 8;
- while (nr--)
- sw->con_putc(vc_cons[currcons].d,
-- video_erase_char, y,
-- video_num_columns-1-nr);
-+ video_erase_char, y,
-+ video_num_columns-1-nr);
- attr = oldattr;
- }
- }
-@@ -526,7 +612,11 @@
- if ((type & 0x40) && ((i & 0x700) == ((i & 0x7000) >> 4))) i ^= 0x0700;
- scr_writew(i, (u16 *) pos);
- if (DO_UPDATE)
-+#ifndef CONFIG_UNICON
- sw->con_putc(vc_cons[currcons].d, i, y, x);
-+#else
-+ sw->con_putc(vc_cons[currcons].d, scr_readw((u16 *) pos+ (screenbuf_size>>1))<<16 | (i & 0xffff), y, x);
-+#endif
- }
-
- static void hide_cursor(int currcons)
-@@ -536,7 +626,11 @@
- if (softcursor_original != -1) {
- scr_writew(softcursor_original,(u16 *) pos);
- if (DO_UPDATE)
-+#ifndef CONFIG_UNICON
- sw->con_putc(vc_cons[currcons].d, softcursor_original, y, x);
-+#else
-+ sw->con_putc(vc_cons[currcons].d, scr_readw((u16 *) pos+ (screenbuf_size>>1))<<16 | softcursor_original, y, x);
-+#endif
- softcursor_original = -1;
- }
- sw->con_cursor(vc_cons[currcons].d,CM_ERASE);
-@@ -683,7 +777,11 @@
- visual_init(currcons, 1);
- if (!*vc_cons[currcons].d->vc_uni_pagedir_loc)
- con_set_default_unimap(currcons);
-+#ifndef CONFIG_UNICON
- q = (long)kmalloc(screenbuf_size, GFP_KERNEL);
-+#else
-+ q = (long)kmalloc(screenbuf_size*2,GFP_KERNEL);
-+#endif
- if (!q) {
- kfree((char *) p);
- vc_cons[currcons].d = NULL;
-@@ -725,7 +823,11 @@
- (cc == video_num_columns && ll == video_num_lines))
- newscreens[currcons] = NULL;
- else {
-+#ifndef CONFIG_UNICON
- unsigned short *p = (unsigned short *) kmalloc(ss, GFP_USER);
-+#else
-+ unsigned short *p = (unsigned short *) kmalloc(ss*2, GFP_USER);
-+#endif
- if (!p) {
- for (i = first; i < currcons; i++)
- if (newscreens[i])
-@@ -767,13 +869,23 @@
-
- while (ol < scr_end) {
- scr_memcpyw((unsigned short *) nl, (unsigned short *) ol, rlth);
-+#ifdef CONFIG_UNICON
-+ scr_memcpyw((unsigned short *) (nl + ss), (unsigned short*) (ol + oss), rlth);
-+#endif
- if (rrem)
- scr_memsetw((void *)(nl + rlth), video_erase_char, rrem);
-+#ifdef CONFIG_UNICON
-+ if (rrem)
-+ scr_memsetw((void *)(nl + rlth + ss), video_erase_char_ext, rrem);
-+#endif
- ol += osr;
- nl += sr;
- }
- if (nlend > nl)
- scr_memsetw((void *) nl, video_erase_char, nlend - nl);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw((void *) (nl + ss), video_erase_char_ext, nlend - nl);
-+#endif
- if (kmalloced)
- kfree(screenbuf);
- screenbuf = newscreens[currcons];
-@@ -996,6 +1108,9 @@
- return;
- }
- scr_memsetw(start, video_erase_char, 2*count);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw(start + (screenbuf_size>>1), video_erase_char_ext, 2*count);
-+#endif
- need_wrap = 0;
- }
-
-@@ -1030,6 +1145,9 @@
- return;
- }
- scr_memsetw(start, video_erase_char, 2 * count);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw(start + (screenbuf_size>>1), video_erase_char_ext, 2*count);
-+#endif
- need_wrap = 0;
- }
-
-@@ -1042,6 +1160,9 @@
- count = (vpar > video_num_columns-x) ? (video_num_columns-x) : vpar;
-
- scr_memsetw((unsigned short *) pos, video_erase_char, 2 * count);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw((unsigned short *) pos + (screenbuf_size>>1), video_erase_char_ext, 2*count);
-+#endif
- if (DO_UPDATE)
- sw->con_clear(vc_cons[currcons].d, y, x, 1, count);
- need_wrap = 0;
-@@ -1638,7 +1759,13 @@
- if (ques) {
- clear_selection();
- if (par[0])
-- complement_mask = par[0]<<8 | par[1];
-+#ifndef CONFIG_UNICON
-+ complement_mask = par[0]<<8 | par[1];
-+#else
-+ // force the low byte to be zero
-+ complement_mask = par[0]<<8;
-+#endif
-+
- else
- complement_mask = s_complement_mask;
- return;
-@@ -1856,6 +1983,11 @@
- const unsigned char *orig_buf = NULL;
- int orig_count;
-
-+#ifdef CONFIG_UNICON
-+#define GB_LEFT 0x8000
-+#define GB_RIGHT 0xc000
-+#endif
-+
- if (in_interrupt())
- return count;
-
-@@ -1996,6 +2128,56 @@
- ((attr << 8) & ~himask) + ((tc & 0x100) ? himask : 0) + (tc & 0xff) :
- (attr << 8) + tc,
- (u16 *) pos);
-+#ifdef CONFIG_UNICON
-+#define HIGH_WORD ((u16 *) ((long)pos + screenbuf_size))
-+#define HIGH_WORD_PREV ((u16 *) ((long)pos - 2 + screenbuf_size))
-+#define HIGH_WORD_NEXT ((u16 *) ((long)pos + 2 + screenbuf_size))
-+ /*
-+ * following condiction we do not tread the char as
-+ * double byte.
-+ * 1. default encoding is NULL. The encode module not
-+ * install yet.
-+ * 2. Current char set is not the default one. We are
-+ * possible drawing a table lines right now.
-+ * -Chris
-+ */
-+
-+ if (doublebyte_default && translate == translations[0]
-+ && (pos==origin||!(scr_readw(HIGH_WORD_PREV)&DB_HALF_MASK))
-+ && doublebyte_default->is_left(tc)){
-+ /*possible the left char of the Double Byte
-+ , but we don't know yet, because the right
-+ char is unknow right now. So mark it as
-+ Half char, the possible candidate
-+ -Chris
-+ */
-+ scr_writew(DB_HALF_MASK,HIGH_WORD);
-+
-+ } else if(doublebyte_default&& translate == translations
-+ && scr_readw(HIGH_WORD_PREV)==DB_HALF_MASK
-+ && doublebyte_default->is_right(tc)) {
-+ scr_writew(DB_LEFT|(tc & 0xff),HIGH_WORD_PREV);
-+ scr_writew(DB_RIGHT|(scr_readw((u16*)(pos-2))&0xff),HIGH_WORD);
-+ if (DO_UPDATE && draw_x < 0) {
-+ draw_from = pos-2 ;
-+ if (x>0) {
-+ draw_x = x-1;
-+ } else {
-+ draw_to = pos;
-+ draw_x = video_num_columns -1;
-+ y--;
-+ FLUSH
-+ y++;
-+ draw_x = 0;
-+ draw_from = pos;
-+ }
-+ }
-+ } else {
-+ /*normal ASCII or table lines, clean hight byte*/
-+ scr_writew(0,HIGH_WORD);
-+ }
-+
-+#endif
- if (DO_UPDATE && draw_x < 0) {
- draw_x = x;
- draw_from = pos;
-@@ -2154,6 +2336,9 @@
- continue;
- }
- scr_writew((attr << 8) + c, (unsigned short *) pos);
-+#ifdef CONFIG_UNICON
-+ scr_writew(0,(unsigned short *) pos + (screenbuf_size>>1));
-+#endif
- cnt++;
- if (myx == video_num_columns - 1) {
- need_wrap = 1;
-@@ -2510,7 +2695,11 @@
- vt_cons[currcons] = (struct vt_struct *)
- alloc_bootmem(sizeof(struct vt_struct));
- visual_init(currcons, 1);
-+#ifdef CONFIG_UNICON
-+ screenbuf = (unsigned short *) alloc_bootmem(screenbuf_size * 2);
-+#else
- screenbuf = (unsigned short *) alloc_bootmem(screenbuf_size);
-+#endif
- kmalloced = 0;
- vc_init(currcons, video_num_lines, video_num_columns,
- currcons || !sw->con_save_screen);
-@@ -2983,7 +3172,12 @@
- gotoxy(currcons, p[0], p[1]);
- set_cursor(currcons);
- }
--
-+#ifdef CONFIG_UNICON
-+/*
-+Now, the unicon doesn't support vcs!
-+To support it, first change the vc_screen.c!
-+*/
-+#endif
- u16 vcs_scr_readw(int currcons, const u16 *org)
- {
- if ((unsigned long)org == pos && softcursor_original != -1)
-@@ -3025,6 +3219,15 @@
- /*
- * Visible symbols for modules
- */
-+#ifdef CONFIG_UNICON
-+int (*Unicon_fnKeyHook)
-+ (struct tty_struct *tty, unsigned char ch, char flag) = NULL;
-+int (*Unicon_fnLowerKeyHook) (unsigned char ch) = NULL;
-+
-+EXPORT_SYMBOL(Unicon_fnLowerKeyHook);
-+EXPORT_SYMBOL(Unicon_fnKeyHook);
-+EXPORT_SYMBOL(vc_cons);
-+#endif
-
- EXPORT_SYMBOL(color_table);
- EXPORT_SYMBOL(default_red);
-diff -Nur c3000_pre/linux/drivers/char/consolemap.c c3000_work/linux/drivers/char/consolemap.c
---- c3000_pre/linux/drivers/char/consolemap.c 2004-08-21 09:48:25.000000000 +0900
-+++ c3000_work/linux/drivers/char/consolemap.c 2004-12-06 09:25:00.000000000 +0900
-@@ -22,7 +22,11 @@
- #include <linux/console_struct.h>
- #include <linux/vt_kern.h>
-
-+#ifndef CONFIG_UNICON
- static unsigned short translations[][256] = {
-+#else
-+unsigned short translations[][256] = {
-+#endif
- /* 8-bit Latin-1 mapped to Unicode -- trivial mapping */
- {
- 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
-diff -Nur c3000_pre/linux/drivers/char/direct.uni c3000_work/linux/drivers/char/direct.uni
---- c3000_pre/linux/drivers/char/direct.uni 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/char/direct.uni 2004-12-06 09:25:00.000000000 +0900
-@@ -0,0 +1,259 @@
-+0x00 U+0000
-+0x20 U+0020
-+0x21 U+0021
-+0x22 U+0022
-+0x23 U+0023
-+0x24 U+0024
-+0x25 U+0025
-+0x26 U+0026
-+0x27 U+0027
-+0x28 U+0028
-+0x29 U+0029
-+0x2a U+002a
-+0x2b U+002b
-+0x2c U+002c
-+0x2d U+002d
-+0x2e U+002e
-+0x2f U+002f
-+0x30 U+0030
-+0x31 U+0031
-+0x32 U+0032
-+0x33 U+0033
-+0x34 U+0034
-+0x35 U+0035
-+0x36 U+0036
-+0x37 U+0037
-+0x38 U+0038
-+0x39 U+0039
-+0x3a U+003a
-+0x3b U+003b
-+0x3c U+003c
-+0x3d U+003d
-+0x3e U+003e
-+0x3f U+003f
-+0x40 U+0040
-+0x41 U+0041
-+0x42 U+0042
-+0x43 U+0043
-+0x44 U+0044
-+0x45 U+0045
-+0x46 U+0046
-+0x47 U+0047
-+0x48 U+0048
-+0x49 U+0049
-+0x4a U+004a
-+0x4b U+004b
-+0x4c U+004c
-+0x4d U+004d
-+0x4e U+004e
-+0x4f U+004f
-+0x50 U+0050
-+0x51 U+0051
-+0x52 U+0052
-+0x53 U+0053
-+0x54 U+0054
-+0x55 U+0055
-+0x56 U+0056
-+0x57 U+0057
-+0x58 U+0058
-+0x59 U+0059
-+0x5a U+005a
-+0x5b U+005b
-+0x5c U+005c
-+0x5d U+005d
-+0x5e U+005e
-+0x5f U+005f
-+0x60 U+0060
-+0x61 U+0061
-+0x62 U+0062
-+0x63 U+0063
-+0x64 U+0064
-+0x65 U+0065
-+0x66 U+0066
-+0x67 U+0067
-+0x68 U+0068
-+0x69 U+0069
-+0x6a U+006a
-+0x6b U+006b
-+0x6c U+006c
-+0x6d U+006d
-+0x6e U+006e
-+0x6f U+006f
-+0x70 U+0070
-+0x71 U+0071
-+0x72 U+0072
-+0x73 U+0073
-+0x74 U+0074
-+0x75 U+0075
-+0x76 U+0076
-+0x77 U+0077
-+0x78 U+0078
-+0x79 U+0079
-+0x7a U+007a
-+0x7b U+007b
-+0x7c U+007c
-+0x7d U+007d
-+0x7e U+007e
-+0x7f U+007f
-+0x80 U+0080
-+0x81 U+0081
-+0x82 U+0082
-+0x83 U+0083
-+0x84 U+0084
-+0x85 U+0085
-+0x86 U+0086
-+0x87 U+0087
-+0x88 U+0088
-+0x89 U+0089
-+0x8a U+008a
-+0x8b U+008b
-+0x8c U+008c
-+0x8d U+008d
-+0x8e U+008e
-+0x8f U+008f
-+0x90 U+0090
-+0x91 U+0091
-+0x92 U+0092
-+0x93 U+0093
-+0x94 U+0094
-+0x95 U+0095
-+0x96 U+0096
-+0x97 U+0097
-+0x98 U+0098
-+0x99 U+0099
-+0x9a U+009a
-+0x9b U+009b
-+0x9c U+009c
-+0x9d U+009d
-+0x9e U+009e
-+0x9f U+009f
-+0xa0 U+00a0
-+0xa1 U+00a1
-+0xa2 U+00a2
-+0xa3 U+00a3
-+0xa4 U+00a4
-+0xa5 U+00a5
-+0xa6 U+00a6
-+0xa7 U+00a7
-+0xa8 U+00a8
-+0xa9 U+00a9
-+0xaa U+00aa
-+0xab U+00ab
-+0xac U+00ac
-+0xad U+00ad
-+0xae U+00ae
-+0xaf U+00af
-+0xb0 U+00b0
-+0xb1 U+00b1
-+0xb2 U+00b2
-+0xb3 U+00b3
-+0xb4 U+00b4
-+0xb5 U+00b5
-+0xb6 U+00b6
-+0xb7 U+00b7
-+0xb8 U+00b8
-+0xb9 U+00b9
-+0xba U+00ba
-+0xbb U+00bb
-+0xbc U+00bc
-+0xbd U+00bd
-+0xbe U+00be
-+0xbf U+00bf
-+0xc0 U+00c0
-+0xc1 U+00c1
-+0xc2 U+00c2
-+0xc3 U+00c3
-+0xc4 U+00c4
-+0xc5 U+00c5
-+0xc6 U+00c6
-+0xc7 U+00c7
-+0xc8 U+00c8
-+0xc9 U+00c9
-+0xca U+00ca
-+0xcb U+00cb
-+0xcc U+00cc
-+0xcd U+00cd
-+0xce U+00ce
-+0xcf U+00cf
-+0xd0 U+00d0
-+0xd1 U+00d1
-+0xd2 U+00d2
-+0xd3 U+00d3
-+0xd4 U+00d4
-+0xd5 U+00d5
-+0xd6 U+00d6
-+0xd7 U+00d7
-+0xd8 U+00d8
-+0xd9 U+00d9
-+0xda U+00da
-+0xdb U+00db
-+0xdc U+00dc
-+0xdd U+00dd
-+0xde U+00de
-+0xdf U+00df
-+0xe0 U+00e0
-+0xe1 U+00e1
-+0xe2 U+00e2
-+0xe3 U+00e3
-+0xe4 U+00e4
-+0xe5 U+00e5
-+0xe6 U+00e6
-+0xe7 U+00e7
-+0xe8 U+00e8
-+0xe9 U+00e9
-+0xea U+00ea
-+0xeb U+00eb
-+0xec U+00ec
-+0xed U+00ed
-+0xee U+00ee
-+0xef U+00ef
-+0xf0 U+00f0
-+0xf1 U+00f1
-+0xf2 U+00f2
-+0xf3 U+00f3
-+0xf4 U+00f4
-+0xf5 U+00f5
-+0xf6 U+00f6
-+0xf7 U+00f7
-+0xf8 U+00f8
-+0xf9 U+00f9
-+0xfa U+00fa
-+0xfb U+00fb
-+0xfc U+00fc
-+0xfd U+00fd
-+0xfe U+00fe
-+0xff U+00ff
-+0x07 U+2022
-+0x13 U+203c
-+0x4b U+212a
-+0x1b U+2190
-+0x18 U+2191
-+0x1a U+2192
-+0x19 U+2193
-+0x1d U+2194
-+0x12 U+2195
-+0x17 U+21a8
-+0x1c U+221f
-+0x16 U+25ac
-+0x1e U+25b2
-+0x10 U+25b6
-+0x10 U+25ba
-+0x1f U+25bc
-+0x11 U+25c0
-+0x11 U+25c4
-+0x04 U+25c6
-+0x09 U+25cb
-+0x08 U+25d8
-+0x0a U+25d9
-+0x01 U+263a
-+0x02 U+263b
-+0x0f U+263c
-+0x0c U+2640
-+0x0b U+2642
-+0x06 U+2660
-+0x05 U+2663
-+0x03 U+2665
-+0x04 U+2666
-+0x0d U+266a
-+0x0e U+266b
-+0x5f U+f804
-diff -Nur c3000_pre/linux/drivers/char/pc_keyb.c c3000_work/linux/drivers/char/pc_keyb.c
---- c3000_pre/linux/drivers/char/pc_keyb.c 2004-08-21 09:48:25.000000000 +0900
-+++ c3000_work/linux/drivers/char/pc_keyb.c 2004-12-06 09:25:01.000000000 +0900
-@@ -467,14 +467,36 @@
-
- static unsigned char kbd_exists = 1;
-
--static inline void handle_keyboard_event(unsigned char scancode)
-+#ifdef CONFIG_UNICON
-+extern int (*Unicon_fnLowerKeyHook) (unsigned char ch);
-+extern int (*Unicon_fnKeyHook) (struct tty_struct *tty, \
-+ unsigned char ch, char flag);
-+#endif
-+static inline int handle_keyboard_event(unsigned char scancode)
- {
- #ifdef CONFIG_VT
- kbd_exists = 1;
-- if (do_acknowledge(scancode))
-- handle_scancode(scancode, !(scancode & 0x80));
-+ if (do_acknowledge(scancode)){
-+#ifdef CONFIG_UNICON
-+ if (Unicon_fnLowerKeyHook != NULL){
-+ /* return 1 ==> processed by kernel
-+ return 0 ==> processed by app */
-+ if (scancode == 0x58){ /* F12 kill unicode */
-+ Unicon_fnKeyHook = NULL;
-+ Unicon_fnLowerKeyHook = NULL;
-+ return 1;
-+ }
-+ if ((*Unicon_fnLowerKeyHook) (scancode) == 1)
-+ return 1;
-+ else
-+ handle_scancode(scancode,!(scancode & 0x80));
-+ } else
-+#endif
-+ handle_scancode(scancode, !(scancode & 0x80));
-+ }
- #endif
- tasklet_schedule(&keyboard_tasklet);
-+ return 0;
- }
-
- /*
-@@ -504,7 +526,8 @@
- if (status & KBD_STAT_MOUSE_OBF)
- handle_mouse_event(scancode);
- else
-- handle_keyboard_event(scancode);
-+ if(handle_keyboard_event(scancode))
-+ return status;
- }
-
- status = kbd_read_status();
-diff -Nur c3000_pre/linux/drivers/video/Config.in c3000_work/linux/drivers/video/Config.in
---- c3000_pre/linux/drivers/video/Config.in 2004-08-21 09:48:58.000000000 +0900
-+++ c3000_work/linux/drivers/video/Config.in 2004-12-06 10:01:36.000000000 +0900
-@@ -13,6 +13,21 @@
- bool ' Hitachi HD64413 support' CONFIG_FB_HD64413
- fi
- if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-+ bool "UNICON Support(EXPERIMENTAL)" CONFIG_UNICON
-+ if [ "$CONFIG_UNICON" = "y" ]; then
-+ tristate "Double Byte GB encode (module only)" CONFIG_UNICON_GB
-+ if [ "$CONFIG_UNICON_GB" = "y" -o "$CONFIG_UNICON_GB" = "m" ]; then
-+ define_tristate CONFIG_UNICON_GB m
-+ fi
-+ tristate "Double Byte SJIS encode (module only)" CONFIG_UNICON_SJIS
-+ if [ "$CONFIG_UNICON_SJIS" = "y" -o "$CONFIG_UNICON_SJIS" = "m" ]; then
-+ define_tristate CONFIG_UNICON_SJIS m
-+ fi
-+ tristate "Double Byte EUCJP encode (module only)" CONFIG_UNICON_EUCJP
-+ if [ "$CONFIG_UNICON_EUCJP" = "y" -o "$CONFIG_UNICON_EUCJP" = "m" ]; then
-+ define_tristate CONFIG_UNICON_EUCJP m
-+ fi
-+ fi
- if [ "$CONFIG_PCI" = "y" ]; then
- tristate ' nVidia Riva support (EXPERIMENTAL)' CONFIG_FB_RIVA
- fi
-diff -Nur c3000_pre/linux/drivers/video/Makefile c3000_work/linux/drivers/video/Makefile
---- c3000_pre/linux/drivers/video/Makefile 2004-08-21 09:48:58.000000000 +0900
-+++ c3000_work/linux/drivers/video/Makefile 2004-12-06 09:25:01.000000000 +0900
-@@ -42,6 +42,10 @@
- obj-$(CONFIG_PPC) += macmodes.o
- endif
-
-+obj-$(CONFIG_UNICON_GB) += encode-gb.o
-+obj-$(CONFIG_UNICON_BIG5) += encode-big5.o
-+obj-$(CONFIG_UNICON_SJIS) += encode-sjis.o
-+obj-$(CONFIG_UNICON_EUCJP) += encode-eucjp.o
- obj-$(CONFIG_FB_ACORN) += acornfb.o
- obj-$(CONFIG_FB_AMIGA) += amifb.o
- obj-$(CONFIG_FB_PM2) += pm2fb.o fbgen.o
-diff -Nur c3000_pre/linux/drivers/video/encode-eucjp.c c3000_work/linux/drivers/video/encode-eucjp.c
---- c3000_pre/linux/drivers/video/encode-eucjp.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/video/encode-eucjp.c 2004-12-06 09:25:01.000000000 +0900
-@@ -0,0 +1,67 @@
-+/*
-+ * linux/video/encode_eucjp.c
-+ *
-+ * Copyright (C) 2000 Kazuhide Takahashi
-+ * HOLON Inc.
-+ * Copyright (C) 1999 Christopher Li, Jim Chen
-+ * GNU/Linux Research Center
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive
-+ * for more details.
-+ *
-+ *
-+ */
-+
-+
-+#include <linux/module.h>
-+#include <linux/fb_doublebyte.h>
-+#include "font_jis16.h"
-+#define min1 0xa1
-+#define max1 0xfe
-+
-+
-+int is_left(int c)
-+{
-+ return ( c >= min1 && c<=max1);
-+}
-+int is_right(int c)
-+{
-+ return ( c >= min1 && c<=max1);
-+}
-+int index_euc (int left, int right)
-+{
-+ if ( left == 0x8E )
-+ left = 0;
-+ else
-+ left &= 0x7F;
-+ right &= 0x7F;
-+
-+ if (left > 0x29)
-+ return ((right - 0x40 + (left - 0x25) * 96) << 5);
-+ else
-+ return ((right - 0x20 + (left - 0x20) * 96) << 5);
-+}
-+struct double_byte db_gb =
-+{
-+ 0,
-+ "EUCJP",
-+ is_left,
-+ is_right,
-+ index_euc,
-+ 16,16,
-+ max_jis16,
-+ font_jis16
-+};
-+
-+int init_module(void)
-+{
-+ if (doublebyte_default) return 1;
-+ doublebyte_default = &db_gb;
-+ return 0;
-+}
-+
-+void cleanup_module(void)
-+{
-+ doublebyte_default = (void*) 0;
-+}
-diff -Nur c3000_pre/linux/drivers/video/encode-gb.c c3000_work/linux/drivers/video/encode-gb.c
---- c3000_pre/linux/drivers/video/encode-gb.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/video/encode-gb.c 2004-12-06 09:25:01.000000000 +0900
-@@ -0,0 +1,50 @@
-+/*
-+ * linux/video/encode_gb.c
-+ *
-+ * Copyright (C) 1999 Christopher Li, Jim Chen
-+ * GNU/Linux Research Center
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive
-+ * for more details.
-+ *
-+ *
-+ */
-+
-+
-+#include <linux/module.h>
-+#include <linux/fb_doublebyte.h>
-+#include "font_gb16.h"
-+#define min1 0xa1
-+#define max1 0xfe
-+int index_gb(int left, int right)
-+{
-+ return ((left-min1)*94+right-min1) << 5;
-+}
-+int is_hz(int c)
-+{
-+ return ( c >= min1 && c<=max1);
-+}
-+struct double_byte db_gb =
-+{
-+ 0,
-+ "GB",
-+ is_hz,
-+ is_hz,
-+ index_gb,
-+ 16,16,
-+ max_gb16,
-+ font_gb16
-+};
-+
-+int init_module(void)
-+{
-+ if (doublebyte_default) return 1;
-+ doublebyte_default = &db_gb;
-+ return 0;
-+}
-+
-+void cleanup_module(void)
-+{
-+ doublebyte_default = (void*) 0;
-+}
-diff -Nur c3000_pre/linux/drivers/video/encode-sjis.c c3000_work/linux/drivers/video/encode-sjis.c
---- c3000_pre/linux/drivers/video/encode-sjis.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/video/encode-sjis.c 2004-12-06 09:25:01.000000000 +0900
-@@ -0,0 +1,84 @@
-+/*
-+ * linux/video/encode_sjis.c
-+ *
-+ * Copyright (C) 2000 Kazuhide Takahashi
-+ * HOLON Inc.
-+ * Copyright (C) 1999 Christopher Li, Jim Chen
-+ * GNU/Linux Research Center
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive
-+ * for more details.
-+ *
-+ *
-+ */
-+
-+
-+#include <linux/module.h>
-+#include <linux/fb_doublebyte.h>
-+#include "font_jis16.h"
-+#define min1 0x81
-+#define max1 0xfc
-+
-+
-+int is_left(int c)
-+{
-+ return ( (c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xfc) );
-+}
-+int is_right(int c)
-+{
-+ return ( (c >= 0x40 && c <= 0x7e) || (c >= 0x80 && c <= 0xfc) );
-+}
-+int index_sjis (int left, int right)
-+{
-+ int ch1, ch2;
-+
-+ if ( !is_left(left) || !is_right(right) ) return -512;
-+
-+ ch1 = left;
-+ ch2 = right;
-+
-+ if ( ch1 <= 0x9f )
-+ ch1 -= 0x71;
-+ else
-+ ch1 -= 0xb1;
-+ ch1 *= 2;
-+ ++ch1;
-+
-+ if ( ch2 >= 0x7f )
-+ --ch2;
-+ if ( ch2 >= 0x9e ) {
-+ ch2 -= 0x7d;
-+ ++ch1;
-+ } else {
-+ ch2 -= 0x1f;
-+ }
-+
-+ if (ch1 > 0x29)
-+ return ((ch2 - 0x40 + (ch1 - 0x25) * 96) << 5);
-+ else
-+ return ((ch2 - 0x20 + (ch1 - 0x20) * 96) << 5);
-+}
-+struct double_byte db_gb =
-+{
-+ 0,
-+ "SJIS",
-+ is_left,
-+ is_right,
-+ index_sjis,
-+ 16,16,
-+ max_jis16,
-+ font_jis16
-+};
-+
-+int init_module(void)
-+{
-+ if (doublebyte_default) return 1;
-+ doublebyte_default = &db_gb;
-+ return 0;
-+}
-+
-+void cleanup_module(void)
-+{
-+ doublebyte_default = (void*) 0;
-+}
-diff -Nur c3000_pre/linux/drivers/video/fbcon-cfb16.c c3000_work/linux/drivers/video/fbcon-cfb16.c
---- c3000_pre/linux/drivers/video/fbcon-cfb16.c 2004-11-16 15:31:08.000000000 +0900
-+++ c3000_work/linux/drivers/video/fbcon-cfb16.c 2004-12-06 09:25:01.000000000 +0900
-@@ -242,10 +242,17 @@
- u8 *dest, *cdat, bits;
- int bytes = p->next_line, rows;
- u32 eorx, fgx, bgx;
-+#ifdef CONFIG_UNICON
-+ u8 *temp;
-+#endif
-
- #if defined(CONFIG_FBCON_ROTATE_R)
- dest = p->screen_base +
-+#ifdef CONFIG_UNICON
-+ yy * fontwidth(p) * bytes + (p->var.xres - (xx+1) * fontheight(p) - 1) * 2;
-+#else
- yy * fontwidth(p) * bytes + (p->var.xres - xx * fontheight(p) - 1) * 2;
-+#endif
- #elif defined(CONFIG_FBCON_ROTATE_L)
- dest = p->screen_base +
- (p->var.yres - yy * fontwidth(p) - 1) * bytes + xx * fontheight(p) * 2;
-@@ -264,6 +271,32 @@
- case 8:
- cdat = p->fontdata + (c & p->charmask) * fontheight(p);
- #if defined(CONFIG_FBCON_ROTATE_R)
-+#ifdef CONFIG_UNICON
-+ rows = fontheight(p);
-+ temp = dest+rows*2;
-+ for (; rows--; dest += 2,temp -= 2) {
-+ bits = *cdat++;
-+ fb_writew((tab_cfb16[bits >> 7 & 1] & eorx) ^ bgx,
-+ temp);
-+ fb_writew((tab_cfb16[bits >> 6 & 1] & eorx) ^ bgx,
-+ temp+1*bytes);
-+ fb_writew((tab_cfb16[bits >> 5 & 1] & eorx) ^ bgx,
-+ temp+2*bytes);
-+ fb_writew((tab_cfb16[bits >> 4 & 1] & eorx) ^ bgx,
-+ temp+3*bytes);
-+ if (fontwidth(p) == 8) {
-+ fb_writew((tab_cfb16[bits >> 3 & 1] & eorx) ^ bgx,
-+ temp+4*bytes);
-+ fb_writew((tab_cfb16[bits >> 2 & 1] & eorx) ^ bgx,
-+ temp+5*bytes);
-+ fb_writew((tab_cfb16[bits >> 1 & 1] & eorx) ^ bgx,
-+ temp+6*bytes);
-+ fb_writew((tab_cfb16[bits & 1] & eorx) ^ bgx,
-+ temp+7*bytes);
-+ }
-+ }
-+ dest = temp;
-+#else
- for (rows = fontheight(p); rows--; dest += 2) {
- bits = *cdat++;
- fb_writew((tab_cfb16[bits >> 7 & 1] & eorx) ^ bgx,
-@@ -285,6 +318,7 @@
- dest+7*bytes);
- }
- }
-+#endif
- #elif defined(CONFIG_FBCON_ROTATE_L)
- for (rows = fontheight(p); rows--; dest += 2) {
- bits = *cdat++;
-diff -Nur c3000_pre/linux/drivers/video/fbcon.c c3000_work/linux/drivers/video/fbcon.c
---- c3000_pre/linux/drivers/video/fbcon.c 2004-11-16 15:31:08.000000000 +0900
-+++ c3000_work/linux/drivers/video/fbcon.c 2004-12-06 09:25:01.000000000 +0900
-@@ -80,6 +80,11 @@
- #include <linux/kernel.h>
- #include <linux/delay.h> /* MSch: for IRQ probe */
- #include <linux/tty.h>
-+
-+#ifdef CONFIG_UNICON
-+#include <linux/fb_doublebyte.h>
-+#endif
-+
- #include <linux/console.h>
- #include <linux/string.h>
- #include <linux/kd.h>
-@@ -675,7 +680,12 @@
- if (con == fg_console && p->type != FB_TYPE_TEXT) {
- if (fbcon_softback_size) {
- if (!softback_buf) {
-+#ifndef CONFIG_UNICON
- softback_buf = (unsigned long)kmalloc(fbcon_softback_size, GFP_KERNEL);
-+#else
-+ softback_buf = (unsigned long)kmalloc(fbcon_softback_size*2, GFP_KERNEL);
-+#endif
-+
- if (!softback_buf) {
- fbcon_softback_size = 0;
- softback_top = 0;
-@@ -936,6 +946,27 @@
- * restriction is simplicity & efficiency at the moment.
- */
-
-+#ifdef CONFIG_UNICON
-+static inline unsigned short * hibyte_pos(struct vc_data * conp,unsigned short* p)
-+{
-+ unsigned long pos=(long)p;
-+
-+ if (pos >= conp->vc_origin && pos < conp->vc_scr_end) {
-+ /* pos in the vc buffer - Chrisl 99.11.12*/
-+ return (unsigned short*)(pos+conp->vc_screenbuf_size);
-+ } else if (conp->vc_num == fg_console){
-+ /*&& softback_lines,because the scroll will first change
-+ softback_lines, then call this function, so it is ignored here
-+ -JimChen 99.11.12*/
-+ return (unsigned short*)(pos+fbcon_softback_size);
-+ } else {
-+ /* Should not happen */
-+ printk("Warnning, changing not active console\n");
-+ return p;
-+ }
-+}
-+#endif
-+
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- static __inline__ int real_x(struct display *p, int xpos)
- {
-@@ -1013,6 +1044,60 @@
- vbl_cursor_cnt = CURSOR_DRAW_DELAY;
- }
-
-+#ifdef CONFIG_UNICON
-+struct double_byte * doublebyte_default = NULL;
-+EXPORT_SYMBOL(doublebyte_default);
-+/* ypos is absolute y(relative to video buffer), not y in screen coordinate,
-+ and the validation is assured by the caller */
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+void fbcon_putc_tl(struct vc_data *conp, int c, int xpos, int ypos)
-+#else
-+void fbcon_putc_tl(struct vc_data *conp, int c, int ypos, int xpos)
-+#endif
-+{
-+ int unit = conp->vc_num;
-+ struct display *p = &fb_display[unit];
-+ int extendedchar;
-+ u_char * fontdata_save;
-+
-+ if (!doublebyte_default){
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ p->dispsw->putc(conp, p, c&0xffff, xpos, ypos);
-+#else
-+ p->dispsw->putc(conp, p, c&0xffff, ypos, xpos);
-+#endif
-+ return;
-+ }
-+ extendedchar = c & (DB_VALIDATE<<16);
-+ fontdata_save = p -> fontdata;
-+ if (extendedchar) {
-+ int index;
-+ if ( c & (DB_RIGHT_MASK << 16)) {// right half
-+ index = doublebyte_default->font_index((c>>16)&0xff, (c&0xff)) + 16;
-+ } else {
-+ index = doublebyte_default->font_index((c&0xff),(c>>16)&0xff);
-+ }
-+ //printk("<6>%d %x",(unsigned long)p->fontdata-(unsigned long) font_gb16,c);
-+ if (index >=0 && index < doublebyte_default->charcount) {
-+ p->fontdata = doublebyte_default->font_data +index;
-+ c = (c & 0xff00);
-+ }else c = c & 0xffff;
-+ } else {
-+ c = c & 0xffff;
-+ }
-+
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ p->dispsw->putc(conp, p, c, xpos, ypos);
-+#else
-+ p->dispsw->putc(conp, p, c, ypos, xpos);
-+#endif
-+
-+ if (extendedchar) {
-+ p->fontdata = fontdata_save;
-+ }
-+}
-+EXPORT_SYMBOL(fbcon_putc_tl);
-+#endif
-
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- static void fbcon_putc(struct vc_data *conp, int c, int xpos, int ypos)
-@@ -1039,16 +1124,39 @@
- redraw_cursor = 1;
- }
-
-+#ifdef CONFIG_UNICON
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ fbcon_putc_tl(conp, c, real_x(p, xpos), ypos);
-+#else
-+ fbcon_putc_tl(conp, c, real_y(p, ypos), xpos);
-+#endif
-+#else
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- p->dispsw->putc(conp, p, c, real_x(p, xpos), ypos);
- #else
- p->dispsw->putc(conp, p, c, real_y(p, ypos), xpos);
- #endif
-+#endif
-
- if (redraw_cursor)
- vbl_cursor_cnt = CURSOR_DRAW_DELAY;
- }
-
-+#ifdef CONFIG_UNICON
-+//ypos is absolute pos.
-+static void fbcon_putcs_tl(struct vc_data *conp, const unsigned short *s, int count,
-+ int ypos, int xpos)
-+{
-+ const unsigned short *str=s;
-+
-+ while (count--) {
-+ fbcon_putc_tl(conp, (scr_readw(hibyte_pos(conp,(unsigned short *)str))<<16)|scr_readw(str),
-+ ypos, xpos);
-+ str++;
-+ xpos++;
-+ }
-+}
-+#endif
-
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- static void fbcon_putcs(struct vc_data *conp, const unsigned short *s, int count, int xpos, int ypos)
-@@ -1077,11 +1185,19 @@
- cursor_undrawn();
- redraw_cursor = 1;
- }
-+#ifndef CONFIG_UNICON
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- p->dispsw->putcs(conp, p, s, count, real_x(p, xpos), ypos);
- #else
- p->dispsw->putcs(conp, p, s, count, real_y(p, ypos), xpos);
- #endif
-+#else
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ fbcon_putcs_tl(conp,s,count,real_x(p,xpos),ypos);
-+#else
-+ fbcon_putcs_tl(conp,s,count,real_y(p,ypos),xpos);
-+#endif
-+#endif
- if (redraw_cursor)
- vbl_cursor_cnt = CURSOR_DRAW_DELAY;
- }
-@@ -1406,6 +1522,9 @@
- unsigned short *start;
- unsigned short *le;
- unsigned short c;
-+#ifdef CONFIG_UNICON
-+ unsigned short c_ext;
-+#endif
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- int y = 0;
- #else
-@@ -1417,30 +1536,53 @@
- le = advance_row(s, 1);
- do {
- c = scr_readw(s);
-+#ifdef CONFIG_UNICON
-+ c_ext = scr_readw(hibyte_pos(conp,s));
-+#endif
- if (attr != (c & 0xff00)) {
- attr = c & 0xff00;
- if (s > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_x(p, line), y);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#endif
- y += s - start;
- #else
-- p->dispsw->putcs(conp, p, start, s - start,
-- real_y(p, line), x);
-+#ifndef CONFIG_UNICON
-+ p->dispsw->putcs(conp, p, start, s - start,
-+ real_y(p, line), x);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
- x += s - start;
- #endif
- start = s;
- }
- }
-+#ifndef CONFIG_UNICON
- if (c == scr_readw(d)) {
-+#else
-+ if (c == scr_readw(d) && c_ext == scr_readw(hibyte_pos(conp,d))) {
-+#endif
- if (s > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_x(p, line), y);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#endif
- y += s - start + 1;
- #else
-- p->dispsw->putcs(conp, p, start, s - start,
-- real_y(p, line), x);
-+#ifndef CONFIG_UNICON
-+ p->dispsw->putcs(conp, p, start, s - start,
-+ real_y(p, line), x);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
- x += s - start + 1;
- #endif
- start = s + 1;
-@@ -1458,9 +1600,17 @@
- } while (s < le);
- if (s > start)
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start, real_x(p, line), y);
- #else
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#endif
-+#else
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start, real_y(p, line), x);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
- #endif
- line++;
- if (d == (u16 *)softback_end)
-@@ -1485,6 +1635,9 @@
- unsigned short *start = s;
- unsigned short *le = advance_row(s, 1);
- unsigned short c;
-+#ifdef CONFIG_UNICON
-+ unsigned short c_ext;
-+#endif
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- int y = 0;
- #else
-@@ -1494,30 +1647,53 @@
-
- do {
- c = scr_readw(s);
-+#ifdef CONFIG_UNICON
-+ c_ext = scr_readw(hibyte_pos(conp,s));
-+#endif
- if (attr != (c & 0xff00)) {
- attr = c & 0xff00;
- if (s > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_x(p, line), y);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#endif
- y += s - start;
- #else
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_y(p, line), x);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
- x += s - start;
- #endif
- start = s;
- }
- }
-+#ifndef CONFIG_UNICON
- if (c == scr_readw(d)) {
-+#else
-+ if (c == scr_readw(d) && c_ext == scr_readw(hibyte_pos(conp,d))) {
-+#endif
- if (s > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_x(p, line), y);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#endif
- y += s - start + 1;
- #else
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, s - start,
- real_y(p, line), x);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
- x += s - start + 1;
- #endif
- start = s + 1;
-@@ -1531,17 +1707,28 @@
- }
- }
- scr_writew(c, d);
-+#ifdef CONFIG_UNICON
-+ scr_writew(scr_readw(s+(conp->vc_screenbuf_size>>1)),d+(conp->vc_screenbuf_size>>1));
-+#endif
- console_conditional_schedule();
- s++;
- d++;
- } while (s < le);
- if (s > start)
-+#ifndef CONFIG_UNICON
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- p->dispsw->putcs(conp, p, start, s - start, real_x(p, line), y);
- #else
- p->dispsw->putcs(conp, p, start, s - start, real_y(p, line), x);
- #endif
- console_conditional_schedule();
-+#else
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y);
-+#else
-+ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x);
-+#endif
-+#endif
- if (offset > 0)
- line++;
- else {
-@@ -1647,10 +1834,18 @@
- attr = c & 0xff00;
- if (d > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, d - start, dx, y);
-+#else
-+ fbcon_putcs_tl(conp,start,d-start,dx,y);
-+#endif
- y += d - start;
- #else
-- p->dispsw->putcs(conp, p, start, d - start, dy, x);
-+#ifndef CONFIG_UNICON
-+ p->dispsw->putcs(conp, p, start, d - start, dy, x);
-+#else
-+ fbcon_putcs_tl(conp,start,d-start,dy,x);
-+#endif
- x += d - start;
- #endif
- start = d;
-@@ -1659,10 +1854,18 @@
- if (s >= ls && s < le && c == scr_readw(s)) {
- if (d > start) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, d - start, dx, y);
-+#else
-+ fbcon_putcs_tl(conp,start,d-start,dx,y);
-+#endif
- y += d - start + 1;
- #else
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, d - start, dy, x);
-+#else
-+ fbcon_putcs_tl(conp,start,d-start,dy,x);
-+#endif
- x += d - start + 1;
- #endif
- start = d + 1;
-@@ -1680,9 +1883,17 @@
- } while (d < le);
- if (d > start)
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, d - start, dx, y);
- #else
-+ fbcon_putcs_tl(conp,start,d-start,dx,y);
-+#endif
-+#else
-+#ifndef CONFIG_UNICON
- p->dispsw->putcs(conp, p, start, d - start, dy, x);
-+#else
-+ fbcon_putcs_tl(conp,start,d-start,dy,x);
-+#endif
- #endif
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- sx++;
-@@ -1704,6 +1915,9 @@
-
- while (count) {
- scr_memcpyw((u16 *)softback_in, p, conp->vc_size_row);
-+#ifdef CONFIG_UNICON
-+ scr_memcpyw((u16 *)softback_in+(fbcon_softback_size>>1),p+(conp->vc_screenbuf_size>>1),conp->vc_size_row);
-+#endif
- count--;
- p = advance_row(p, 1);
- softback_in += conp->vc_size_row;
-@@ -1808,6 +2022,13 @@
- conp->vc_size_row * (b-count)),
- conp->vc_video_erase_char,
- conp->vc_size_row * count);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw((unsigned short *)(conp->vc_origin +
-+ conp->vc_size_row * (b-count) +
-+ conp->vc_screenbuf_size),
-+ conp->vc_video_erase_char & 0xff,
-+ conp->vc_size_row * count);
-+#endif
- return 1;
- }
- #else
-@@ -1923,6 +2144,13 @@
- conp->vc_size_row * t),
- conp->vc_video_erase_char,
- conp->vc_size_row * count);
-+#ifdef CONFIG_UNICON
-+ scr_memsetw((unsigned short *)(conp->vc_origin +
-+ conp->vc_size_row * t +
-+ conp->vc_screenbuf_size),
-+ conp->vc_video_erase_char & 0xff,
-+ conp->vc_size_row * count);
-+#endif
- return 1;
- }
- #else
-@@ -2606,11 +2834,31 @@
- return p->fb_info->fbops->fb_set_cmap(&palette_cmap, 1, unit, p->fb_info);
- }
-
-+#ifdef CONFIG_UNICON
-+/*offset:relative to softback_curr if softback valid in this vc
-+The return pos may exists in buffer pointed by conp->vc_origin or softback_top.
-+I assume the offset is always >=0 in normal case and I use the -offset-1 to mean to get the pos of the second word
-+*/
-+#endif
-+
- static u16 *fbcon_screen_pos(struct vc_data *conp, int offset)
- {
- int line;
- unsigned long p;
--
-+#ifdef CONFIG_UNICON
-+ if (offset < 0) {
-+ offset = -offset - 1;
-+ if (conp->vc_num != fg_console || !softback_lines)
-+ return (u16 *)(conp->vc_origin + offset + conp->vc_screenbuf_size);
-+ line = offset / conp->vc_size_row;
-+ if (line >= softback_lines)
-+ return (u16 *)(conp->vc_origin + offset - softback_lines * conp->vc_size_row + conp->vc_screenbuf_size);
-+ p = softback_curr + offset;
-+ if (p >= softback_end)
-+ p += softback_buf - softback_end;
-+ return (u16 *)(p+fbcon_softback_size);
-+ }
-+#endif
- if (conp->vc_num != fg_console || !softback_lines)
- return (u16 *)(conp->vc_origin + offset);
- line = offset / conp->vc_size_row;
-@@ -2622,6 +2870,10 @@
- return (u16 *)p;
- }
-
-+#ifdef CONFIG_UNICON
-+// pos is a pointer either pointing into softback or (vc_origin--vc_scr_end),
-+// return the pointer to the start of next row ( no matter in vi_origin or softback!)
-+#endif
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- static unsigned long fbcon_getxy(struct vc_data *conp, unsigned long pos, int *py, int *px)
- #else
-@@ -2724,6 +2976,11 @@
- p -= conp->vc_size_row;
- q -= conp->vc_size_row;
- scr_memcpyw((u16 *)q, (u16 *)p, conp->vc_size_row);
-+#ifdef CONFIG_UNICON
-+ scr_memcpyw((u16* )(q+conp->vc_screenbuf_size),
-+ (u16* )(p+fbcon_softback_size),
-+ conp->vc_size_row);
-+#endif
- }
- softback_in = p;
- update_region(unit, conp->vc_origin, logo_lines * conp->vc_cols);
-diff -Nur c3000_pre/linux/drivers/video/font_gb16.h c3000_work/linux/drivers/video/font_gb16.h
---- c3000_pre/linux/drivers/video/font_gb16.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/video/font_gb16.h 2004-12-06 09:25:01.000000000 +0900
-@@ -0,0 +1,8180 @@
-+#define max_gb16 261696
-+unsigned char font_gb16[max_gb16] = {
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x50,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0xc,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x2,0x2,0x4,0x4,0x9,0x9,0x12,0x24,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x4,0x4,0x8,0x8,0x1f,0x20,0x40,0x0,0x8,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0xc0,0x40,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x63,0x63,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x4,0x8,0xc,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x60,0x60,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x44,0x88,0x10,0x98,0x98,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x0,0x1,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x98,0x98,0x88,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x4,0x0,
-+0x0,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x0,0x0,
-+0x0,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x12,0x24,0x48,0x90,0x20,0x40,0x80,0x40,0x20,0x90,0x48,0x24,0x12,0x8,0x4,
-+0x20,0x90,0x48,0x24,0x12,0x9,0x4,0x2,0x4,0x9,0x12,0x24,0x48,0x90,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x4,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x7,0x0,0x0,0x0,0xc0,0x40,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x4,0x7,0x0,0x0,0x0,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x84,0x88,0x88,0x90,0x90,0x90,0x90,0x90,0x90,0x88,0x88,0x84,0xfe,0x0,
-+0x0,0xfe,0x42,0x22,0x22,0x12,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x42,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0xfc,0xf8,0xf0,0xf0,0xe0,0xe0,0xe0,0xe0,0xf0,0xf0,0xf8,0xfc,0xfe,0x0,
-+0x0,0xfe,0x7e,0x3e,0x1e,0x1e,0xe,0xe,0xe,0xe,0x1e,0x1e,0x3e,0x7e,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1,0x1,0x1,0xf,0x1,0x1,0x1,0x0,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1f,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x40,0x40,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x8,0x8,0x8,0x4,0x4,0x0,
-+0x0,0x40,0x40,0x20,0x20,0x20,0x10,0x10,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,
-+0x0,0x7f,0x20,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0xfc,0x0,0x0,
-+0x0,0x3f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x78,0x0,0x0,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3c,0x0,
-+0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x0,
-+0x0,0x7,0x18,0x20,0x20,0x40,0x40,0x7f,0x40,0x40,0x40,0x20,0x20,0x18,0x7,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,
-+0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x41,0xa2,0x14,0x8,0x0,0x0,0x0,0x0,0x0,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,
-+0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x4,0x4,0x4,0x9,0x9,0x9,0x9,0x9,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x18,0x20,0x20,0x40,0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x10,0x10,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x7,0x18,0x20,0x20,0x40,0x43,0x43,0x40,0x20,0x20,0x18,0x7,0x0,0x0,0x0,0x0,0x80,0x60,0x10,0x10,0x8,0x8,0x8,0x8,0x10,0x10,0x60,0x80,0x0,0x0,
-+0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x6,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1,0x1,0x7,0x9,0x9,0xa,0xa,0x7,0x2,0x2,0x4,0x24,0x18,0x60,0x90,0x80,0x0,0x0,0x80,0x40,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x7f,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x18,0x20,0x41,0x41,0x42,0x22,0x1c,0x0,0x7f,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x70,0x88,0x4,0x4,0x4,0x8,0x30,0x0,0xfc,0x0,0xfc,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x38,0x47,0x0,0x38,0x47,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0xf0,0x4,0x8,0xf0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x38,0x40,0x41,0x81,0x81,0x41,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78,0x84,0x2,0x2,0x2,0x2,0x4,0x38,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3c,0x42,0x41,0x81,0x81,0x41,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7e,0x80,0x0,0x0,0x0,0x0,0x80,0x7e,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x1,0x2,0x7f,0x4,0x4,0x8,0x10,0x10,0x20,0x10,0x20,0x20,0x40,0x40,0xfc,0x80,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x4,0x5,0x6,0x1c,0x64,0x84,0x64,0x1c,0x6,0x5,0x4,0x4,0x0,0x0,0x0,0x18,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x18,0x0,0x0,
-+0x0,0x30,0xc,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x30,0x0,0x0,0x0,0x40,0x40,0x40,0xc0,0x70,0x4c,0x42,0x4c,0x70,0xc0,0x40,0x40,0x40,0x0,0x0,
-+0x0,0x0,0x1,0x6,0x18,0x60,0x80,0x60,0x98,0x66,0x19,0x6,0x1,0x0,0x0,0x0,0x18,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x98,0x60,0x18,0x0,
-+0x30,0xc,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x33,0xc,0x30,0x0,0x0,0x0,0x0,0xc0,0x30,0xc,0x2,0xc,0x32,0xcc,0x30,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3c,0x42,0x81,0x81,0x81,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78,0x84,0x2,0x2,0x2,0x84,0x78,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,
-+0x0,0x1,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x3,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x0,
-+0x0,0x3,0x4,0x4,0x4,0x3,0x1,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x0,0x0,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x30,0x48,0x48,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x4,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x53,0x24,0x8,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x8,0x4,0x3,0x0,0x0,0xf4,0xc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x8,0xf0,0x0,
-+0x1,0xf,0x11,0x21,0x21,0x21,0x11,0xf,0x1,0x1,0x1,0x21,0x21,0x31,0x2f,0x1,0x0,0xe8,0x18,0x8,0x8,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0xe0,0x0,
-+0x0,0x40,0x27,0x18,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x18,0x27,0x40,0x0,0x0,0x2,0xe4,0x18,0x8,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x18,0xe4,0x2,0x0,
-+0x0,0x0,0xf,0x10,0x20,0x40,0x40,0x41,0x41,0x42,0x42,0x24,0x14,0xf,0x10,0x20,0x10,0x20,0xe8,0x58,0x48,0x80,0x80,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0,
-+0x1,0x2,0x2,0x2,0x2,0x2,0x3f,0x2,0x2,0x2,0x3a,0x46,0x42,0x45,0x38,0x0,0xc0,0x20,0x20,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0xf8,0x0,
-+0x0,0x30,0x48,0x48,0x48,0x49,0x32,0x4,0x8,0x11,0x22,0x42,0x82,0x2,0x1,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x8c,0x52,0x52,0x52,0x52,0x8c,0x0,
-+0x7,0x8,0x8,0x4,0x2,0x3,0x4,0x8,0x8,0x5,0x2,0x1,0x4,0x8,0x8,0x7,0x80,0x40,0xc0,0x0,0x0,0x0,0x80,0x40,0x40,0x80,0x0,0x0,0x80,0x40,0x40,0x80,
-+0x60,0x21,0x31,0x31,0x29,0x29,0x29,0x29,0x25,0x25,0x25,0x25,0x23,0x23,0xa1,0x41,0x80,0x40,0x0,0x0,0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x18,0x0,0x7e,0x0,
-+0x1,0x1,0x2,0x2,0x2,0x4,0xfc,0x40,0x30,0x8,0x8,0x11,0x16,0x18,0x20,0x0,0x0,0x0,0x80,0x80,0x80,0x40,0x7e,0x4,0x18,0x20,0x20,0x90,0x50,0x30,0x8,0x0,
-+0x1,0x1,0x3,0x3,0x3,0x7,0xff,0x3f,0x1f,0xf,0xf,0x1f,0x1e,0x18,0x20,0x0,0x0,0x0,0x80,0x80,0x80,0xc0,0xfe,0xf8,0xf0,0xe0,0xe0,0xf0,0xf0,0x30,0x8,0x0,
-+0x0,0x7,0x18,0x20,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x20,0x18,0x7,0x0,0x0,0x0,0xc0,0x30,0x8,0x8,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x30,0xc0,0x0,0x0,
-+0x0,0x7,0x1f,0x3f,0x3f,0x7f,0x7f,0x7f,0x7f,0x7f,0x3f,0x3f,0x1f,0x7,0x0,0x0,0x0,0xc0,0xf0,0xf8,0xf8,0xfc,0xfc,0xfc,0xfc,0xfc,0xf8,0xf8,0xf0,0xc0,0x0,0x0,
-+0x0,0x7,0x18,0x27,0x28,0x50,0x50,0x50,0x50,0x50,0x28,0x27,0x18,0x7,0x0,0x0,0x0,0xc0,0x30,0xc8,0x28,0x14,0x14,0x14,0x14,0x14,0x28,0xc8,0x30,0xc0,0x0,0x0,
-+0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x1,0x3,0x7,0xf,0x1f,0x3f,0x7f,0xff,0x7f,0x3f,0x1f,0xf,0x7,0x3,0x1,0x0,0x0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x0,0x0,
-+0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x0,0x0,0x0,0xfc,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x0,0x0,
-+0x0,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x0,0x0,0x0,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0x0,0x0,
-+0x0,0x1,0x2,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0xff,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x8,0x8,0x4,0x4,0xfe,0x0,0x0,
-+0x0,0x1,0x3,0x7,0x7,0xf,0xf,0x1f,0x1f,0x3f,0x3f,0x7f,0x7f,0xff,0x0,0x0,0x0,0x0,0x80,0xc0,0xc0,0xe0,0xe0,0xf0,0xf0,0xf8,0xf8,0xfc,0xfc,0xfe,0x0,0x0,
-+0x0,0x43,0x23,0x10,0x8,0x4,0x2,0x61,0x62,0x4,0x8,0x10,0x23,0x43,0x80,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0xc,0x8c,0x40,0x20,0x10,0x8,0x4,0x2,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x38,0xfe,0x38,0x20,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x8,0x38,0xff,0x38,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x3,0x3,0x7,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x80,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x3,0x3,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x80,0x80,0x0,0x0,
-+0x0,0x0,0x0,0xff,0xff,0xff,0x0,0x0,0x0,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0xfe,0xfe,0x0,0x0,0x0,0xfe,0xfe,0xfe,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x6,0xa,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,
-+0x0,0xf,0x10,0x10,0x0,0x0,0x0,0x1,0x6,0x8,0x10,0x10,0x10,0x10,0x1f,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x90,0x0,
-+0x0,0xf,0x10,0x10,0x0,0x0,0x1,0x6,0x1,0x0,0x0,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x10,0x0,
-+0x0,0x3,0x5,0x5,0x5,0x9,0x9,0x9,0x11,0x11,0x1f,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x8,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x10,0x0,
-+0x0,0xf,0x10,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x10,0x0,
-+0x0,0x1f,0x10,0x10,0x0,0x1,0x1,0x1,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0xc0,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,
-+0x0,0xf,0x10,0x10,0x10,0x10,0x9,0x6,0x9,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x10,0x0,
-+0x0,0xf,0x10,0x10,0x10,0x10,0x10,0x11,0xe,0x0,0x0,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x10,0x0,
-+0x0,0x23,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc8,0x0,
-+0x0,0x20,0x61,0xa2,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x90,0x0,
-+0x0,0x23,0x64,0xa4,0x20,0x20,0x20,0x20,0x21,0x22,0x24,0x24,0x24,0x24,0x27,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x20,0x20,0xe4,0x0,
-+0x0,0x23,0x64,0xa4,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x40,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0xc4,0x0,
-+0x0,0x20,0x61,0xa1,0x21,0x22,0x22,0x22,0x24,0x24,0x27,0x20,0x20,0x20,0x20,0x0,0x0,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xf0,0x40,0x40,0x40,0x48,0x0,
-+0x0,0x27,0x64,0xa4,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x20,0x24,0x24,0x23,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0xc4,0x0,
-+0x0,0x23,0x64,0xa4,0x24,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0xc4,0x0,
-+0x0,0x27,0x64,0xa4,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0xf0,0x10,0x10,0x20,0x40,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x0,
-+0x0,0x23,0x64,0xa4,0x24,0x24,0x22,0x21,0x22,0x24,0x24,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x40,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0xc4,0x0,
-+0x0,0x23,0x64,0xa4,0x24,0x24,0x24,0x24,0x23,0x20,0x20,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x20,0xc4,0x0,
-+0x0,0x38,0x45,0x45,0x5,0x5,0x5,0x19,0x21,0x41,0x41,0x41,0x45,0x45,0x7c,0x0,0x0,0xe0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xe4,0x0,
-+0x0,0x40,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x40,0x0,0x0,0x4,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x0,
-+0x0,0x40,0x87,0x88,0x88,0x80,0x80,0x80,0x80,0x83,0x84,0x88,0x88,0x8f,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x42,0x42,0x82,0x2,0x2,0x42,0x42,0xc2,0x4,0x0,
-+0x0,0x40,0x87,0x88,0x88,0x80,0x80,0x83,0x80,0x80,0x80,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x82,0x2,0x82,0x42,0x42,0x42,0x42,0x82,0x4,0x0,
-+0x0,0x41,0x82,0x82,0x82,0x84,0x84,0x88,0x88,0x8f,0x80,0x80,0x80,0x80,0x40,0x0,0x0,0x84,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xe2,0x82,0x82,0x82,0x82,0x4,0x0,
-+0x0,0x40,0x8f,0x88,0x88,0x88,0x8b,0x8c,0x88,0x80,0x80,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0xc2,0x2,0x2,0x2,0x82,0x42,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0,
-+0x0,0x40,0x87,0x88,0x88,0x88,0x88,0x8b,0x8c,0x88,0x88,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x2,0x2,0x82,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0,
-+0x0,0x40,0x8f,0x88,0x88,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x40,0x0,0x0,0x4,0xe2,0x22,0x22,0x42,0x82,0x82,0x82,0x2,0x2,0x2,0x2,0x2,0x4,0x0,
-+0x0,0x40,0x87,0x88,0x88,0x88,0x88,0x87,0x88,0x88,0x88,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x42,0x82,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0,
-+0x0,0x40,0x87,0x88,0x88,0x88,0x88,0x88,0x87,0x80,0x80,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x42,0xc2,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0,
-+0x0,0x40,0x88,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x88,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x40,0x0,0x0,0x4,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x4,0x0,
-+0x0,0x40,0x91,0x92,0x92,0x90,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0x22,0xc2,0x2,0x2,0x12,0x12,0xf2,0x4,0x0,
-+0x0,0x40,0x91,0x92,0x92,0x90,0x90,0x90,0x90,0x90,0x90,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x22,0xc2,0x22,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x90,0x90,0x90,0x90,0x91,0x91,0x92,0x92,0x93,0x90,0x90,0x90,0x40,0x0,0x0,0x4,0x62,0xa2,0xa2,0xa2,0x22,0x22,0x22,0x22,0xfa,0x22,0x22,0x22,0x4,0x0,
-+0x0,0x40,0x93,0x92,0x92,0x92,0x92,0x93,0x92,0x90,0x90,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xf2,0x2,0x2,0x2,0xe2,0x12,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x91,0x92,0x92,0x92,0x92,0x92,0x93,0x92,0x92,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x2,0x2,0xe2,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x93,0x92,0x92,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x40,0x0,0x0,0x4,0xf2,0x12,0x12,0x22,0x42,0x42,0x42,0x82,0x82,0x82,0x82,0x82,0x4,0x0,
-+0x0,0x40,0x91,0x92,0x92,0x92,0x92,0x91,0x92,0x92,0x92,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0xe2,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x91,0x92,0x92,0x92,0x92,0x92,0x91,0x90,0x90,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0x32,0xd2,0x12,0x12,0x12,0x12,0xe2,0x4,0x0,
-+0x0,0x40,0x9c,0xa2,0xa2,0x82,0x82,0x84,0x88,0x90,0xa0,0xa2,0xa2,0xbe,0x40,0x0,0x0,0x4,0x72,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x72,0x4,0x0,
-+0x7,0x18,0x20,0x41,0x41,0x81,0x81,0x81,0x81,0x81,0x41,0x41,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0x4,0x4,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x80,0x80,0x81,0x82,0x84,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x42,0x82,0x2,0x2,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x80,0x80,0x83,0x80,0x80,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0xc2,0x2,0xc2,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x43,0x45,0x85,0x85,0x89,0x89,0x8f,0x41,0x41,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0x4,0x4,0x2,0x2,0x2,0x2,0xc2,0x4,0x4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x87,0x80,0x80,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x4,0x2,0x2,0xc2,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x87,0x84,0x84,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x2,0x2,0xc2,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x80,0x80,0x80,0x81,0x81,0x41,0x41,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x82,0x82,0x2,0x2,0x4,0x4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x83,0x84,0x84,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x42,0x82,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x87,0x80,0x80,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x42,0xc2,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0,
-+0x7,0x18,0x20,0x4b,0x4a,0x8a,0x8a,0x8a,0x8a,0x8a,0x4a,0x4b,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xe4,0x24,0x22,0x22,0x22,0x22,0x22,0x24,0xe4,0x8,0x30,0xc0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x20,0x40,0x80,0x80,0x80,0x80,0xbf,0x80,0x80,0x80,0x80,0x80,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x2,0x12,0xfa,0x2,0x2,0x2,0x2,0x2,0x4,0x8,0x0,
-+0x0,0x20,0x40,0x80,0x9f,0x80,0x80,0x80,0x80,0x80,0xbf,0x80,0x80,0x40,0x20,0x0,0x0,0x8,0x4,0x22,0xf2,0x2,0x2,0x2,0x2,0x12,0xfa,0x2,0x2,0x4,0x8,0x0,
-+0x0,0x20,0x40,0x9f,0x80,0x80,0x80,0x8f,0x80,0x80,0x80,0xbf,0x80,0x40,0x20,0x0,0x0,0x8,0x24,0xf2,0x2,0x2,0x42,0xe2,0x2,0x2,0x12,0xfa,0x2,0x4,0x8,0x0,
-+0x0,0x20,0x40,0x80,0xbf,0xa4,0xa4,0xa4,0xa4,0xa4,0xbf,0x80,0x80,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0xfa,0x4a,0x4a,0x4a,0x4a,0x4a,0xfa,0x2,0x2,0x4,0x8,0x0,
-+0x0,0x20,0x40,0x9f,0x82,0x82,0x82,0x9f,0x84,0x84,0x84,0x84,0xbf,0x40,0x20,0x0,0x0,0x8,0x24,0xf2,0x2,0x2,0x22,0xf2,0x22,0x22,0x22,0x22,0xfa,0x4,0x8,0x0,
-+0x0,0x20,0x40,0x82,0x81,0x80,0xbf,0x80,0x80,0x84,0x84,0x88,0x90,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x12,0xfa,0x2,0x2,0x42,0x22,0x12,0x12,0x4,0x8,0x0,
-+0x0,0x20,0x42,0x82,0x82,0x82,0x82,0x83,0xbe,0x82,0x82,0x82,0x82,0x41,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x12,0x7a,0x82,0x2,0x2,0x2,0x22,0x22,0xe4,0x8,0x0,
-+0x0,0x20,0x40,0x84,0x84,0x84,0x84,0x84,0x88,0x88,0x90,0xa0,0x80,0x40,0x20,0x0,0x0,0x8,0x84,0x82,0x82,0x82,0x82,0x82,0x42,0x22,0x1a,0x12,0x2,0x4,0x8,0x0,
-+0x0,0x20,0x42,0x82,0x82,0x9f,0x82,0x82,0x82,0x84,0x84,0x88,0x90,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x42,0xe2,0x42,0x42,0x42,0x42,0x4a,0x4a,0x3a,0x4,0x8,0x0,
-+0x0,0x20,0x41,0x81,0x81,0x81,0xbf,0x81,0x81,0x81,0x81,0x81,0x81,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x12,0xfa,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x8,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,
-+0x0,0xe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xe,0x0,0x0,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xe0,0x0,
-+0x0,0x3b,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x3b,0x0,0x0,0xb8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xb8,0x0,
-+0x0,0x77,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x1c,0x8,0x8,0x8,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa0,0xa0,0x40,0x40,0x0,
-+0x0,0x70,0x20,0x10,0x10,0x8,0x8,0x8,0x4,0x4,0x4,0x2,0x2,0x1,0x1,0x0,0x0,0x1c,0x8,0x10,0x10,0x20,0x20,0x20,0x40,0x40,0x40,0x80,0x80,0x0,0x0,0x0,
-+0x0,0x71,0x20,0x20,0x20,0x11,0x11,0x11,0x11,0xa,0xa,0xa,0xa,0x4,0x4,0x0,0x0,0xdc,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,
-+0x0,0xe3,0x41,0x41,0x41,0x22,0x22,0x22,0x22,0x14,0x14,0x14,0x14,0x8,0x8,0x0,0x0,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x7e,0x0,
-+0x0,0xe3,0x41,0x41,0x41,0x22,0x22,0x22,0x22,0x14,0x14,0x14,0x14,0x8,0x8,0x0,0x0,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0xfe,0x0,
-+0x0,0xee,0x44,0x42,0x42,0x41,0x40,0x40,0x40,0x40,0x41,0x41,0x42,0x44,0xee,0x0,0x0,0xe,0x4,0x8,0x8,0x10,0xa0,0x40,0xa0,0xa0,0x10,0x10,0x8,0x4,0xe,0x0,
-+0x0,0x70,0x20,0x10,0x8,0x4,0x2,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x70,0x0,0x0,0x1c,0x8,0x10,0x20,0x40,0x80,0x0,0x80,0x80,0x40,0x20,0x10,0x8,0x1c,0x0,
-+0x0,0xe0,0x40,0x20,0x11,0xa,0xa,0x4,0xa,0xa,0x11,0x11,0x20,0x40,0xe0,0x0,0x0,0xee,0x44,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x84,0x44,0xee,0x0,
-+0x0,0xe0,0x40,0x20,0x11,0xa,0xa,0x4,0xa,0xa,0x11,0x11,0x20,0x40,0xe0,0x0,0x0,0xfe,0x54,0x94,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x94,0x54,0xfe,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x3f,0x4,0x4,0x4,0x4,0x3f,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x40,0x40,0x78,0xc0,0x40,0x40,0x40,0x78,0xc0,0x40,0x40,0x40,0x0,0x0,
-+0x0,0x38,0x10,0x8,0x4,0x2,0x2,0x1,0x1,0xf,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x38,0x10,0x20,0x40,0x80,0x80,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x80,0x0,
-+0x0,0x18,0x24,0x24,0x24,0x24,0x24,0x19,0x2,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x60,0x90,0x90,0x90,0x90,0x90,0x60,
-+0x0,0xf,0x10,0x10,0x10,0x10,0xb,0x4,0x1c,0x22,0x41,0x40,0x40,0x21,0x1e,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x70,0x20,0xa0,0x44,0xa4,0x18,0x0,
-+0x10,0x10,0x10,0x20,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x10,0x20,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x40,0x20,0x10,0xc,
-+0x60,0x10,0x8,0x4,0x4,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x1,0x21,0x11,0x9,0x5,0x1,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0x20,0x40,0x0,0x80,0x40,0x20,0x10,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1f,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x1,0x3,0x5,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x0,0x0,0x0,0x3,0x4,0x8,0x10,0x10,0x10,0x1f,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,0x10,0x10,0xf0,0x0,
-+0x0,0xf,0x10,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0xe0,0x10,0x10,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x3f,0x0,0x0,0x3,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xf0,0x80,0x80,0xe0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x0,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x1f,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x2,0x2,0x2,0x0,0x0,0xf0,0x10,0x10,0x20,0x20,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x8,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0xc0,0x20,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x30,0xd0,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x30,0x30,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3,0xc,0x30,0x40,0x30,0xc,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x30,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0xc,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x60,0x18,0x6,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x6,0x18,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x18,0x4,0x18,0x60,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x18,0x24,0x42,0x42,0x4,0x8,0x8,0x8,0x8,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x18,0x20,0x46,0x49,0x48,0x48,0x48,0x49,0x46,0x20,0x18,0x7,0x0,0x0,0x0,0xc0,0x20,0x10,0x90,0x88,0x88,0x88,0x88,0x90,0x90,0x64,0x8,0xf0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0xe0,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x10,0x10,0x20,0xc0,0x20,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0xf,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x20,0xe0,0x20,0x0,0x4,0x4,0xfc,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x20,0xe0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x1f,0x0,0x0,0x0,0x0,0x0,0xd0,0x30,0x10,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x71,0x21,0x22,0x24,0x38,0x24,0x22,0x21,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0xc0,0x60,0x50,0x48,0x44,0x42,0x41,0x40,0x40,0x40,0xe0,0x0,0x0,0x0,0x0,0x0,0x6,0xc,0x14,0x24,0x44,0x84,0x4,0x4,0x4,0x4,0xe,0x0,0x0,0x0,0x0,
-+0x0,0x60,0x30,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x88,0x48,0x28,0x18,0x8,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x11,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x90,0x60,0xc0,0x30,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x24,0x22,0x21,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x80,0x70,0x0,0x0,0x0,0x0,
-+0x0,0xf,0x10,0x20,0x20,0x10,0xf,0x0,0x0,0x20,0x30,0x2f,0x0,0x0,0x0,0x0,0x0,0xe8,0x18,0x8,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x10,0x10,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0xe3,0x41,0x41,0x41,0x22,0x22,0x22,0x14,0x14,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x8e,0x4,0x4,0x4,0x88,0x88,0x88,0x50,0x50,0x20,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x10,0x8,0x4,0x2,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x20,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xe,0x0,0x0,
-+0x0,0x40,0x20,0x10,0x8,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0x8,0x4,0x0,0x0,
-+0x0,0xe0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x2,0x2,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x10,0x10,0x8,0x8,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0xf,0x10,0x0,0xf,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0xc0,0x40,0x50,0xa0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x8,0x8,0xb,0xc,0x8,0x8,0x8,0xc,0xb,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x0,0x0,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x20,0x20,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0xf,0x10,0x10,0x1f,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0xc0,0x0,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x2,0x2,0xf,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x40,0x80,0x0,
-+0x0,0x8,0x8,0x8,0x8,0xb,0xc,0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x8,0x8,0x8,0x9,0xa,0xd,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1a,0xd,0x9,0x9,0x9,0x9,0x9,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x30,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1b,0xc,0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1b,0xc,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3,0x4,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x20,0x30,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x5,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x8,0x7,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x80,0x40,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x2,0x2,0xf,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0xc,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x11,0x9,0x9,0xa,0xa,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x20,0xa0,0xa0,0x40,0x40,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x4,0x2,0x1,0x1,0x2,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0xf,0x8,0x0,0x1,0x2,0x4,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x40,0x80,0x0,0x0,0x40,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x4,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x40,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x4,0x4,0x25,0x1e,0x4,0x7,0xc,0x14,0x23,0x22,0x25,0x18,0x0,0x0,0x0,0x0,0x0,0x20,0xc0,0x0,0x80,0xe0,0x90,0x88,0x8,0x8,0x10,0x20,0xc0,
-+0x4,0x4,0x4,0x47,0x3c,0x4,0x4,0x1f,0x24,0x42,0x42,0x41,0x22,0x1c,0x0,0x0,0x0,0x0,0x60,0x80,0x0,0x40,0x40,0xf0,0x48,0x84,0x84,0x4,0x84,0x8,0x30,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x10,0x18,0x10,0x10,0x10,0x10,0x11,0xa,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x8,0x18,0x10,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x20,0x30,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x14,0xc,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x8,0x4,0x4,0xc,0x8,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0xf,0x1,0x2,0x0,0x11,0xe,0x0,0x0,0x0,0x0,0x1,0x2,0xc,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0xc0,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0xf,0x0,0x1,0x0,0x21,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x0,0x0,0x80,0x40,0x80,0x0,0xe0,0x10,0x10,0x10,0x10,0x20,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x0,0x1,0x0,0x3,0x1c,0x1,0x3,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0xc0,0x80,0x0,0x0,0x80,0x80,0x40,0x38,0x0,
-+0x0,0xf,0x0,0x1,0x0,0x3,0x3c,0x1,0x2,0x3,0x4,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x80,0x0,0x0,0xc0,0x80,0x0,0x0,0x80,0x80,0x80,0x80,0x40,0x3c,0x0,
-+0x0,0x0,0x0,0x4,0x4,0x4,0x3f,0x4,0x7,0x4,0xc,0x14,0x34,0x15,0x8,0x0,0x0,0x0,0x0,0x0,0x10,0x8,0x4,0x8,0xe0,0x10,0x8,0x8,0x8,0x30,0xc0,0x0,
-+0x0,0x4,0x4,0x7,0x3c,0x4,0x5,0x6,0xc,0x14,0x24,0x64,0x35,0xc,0x4,0x0,0x0,0x0,0x10,0x88,0x4,0x18,0xc0,0x20,0x10,0x8,0x8,0x8,0x10,0xe0,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x2,0x43,0x3c,0x4,0x4,0x4,0x8,0x8,0x10,0x22,0x41,0x0,0x0,0x0,0x0,0x20,0x10,0xc8,0x44,0x54,0x4c,0x40,0x40,0x80,0x80,0x80,0x0,0x0,
-+0x0,0x4,0x4,0x4,0x4,0x87,0x78,0x8,0x8,0x8,0x10,0x11,0x21,0x45,0x82,0x0,0x8,0x4,0x12,0x48,0x24,0x90,0x88,0xa8,0x98,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x2,0x3,0x1d,0x0,0x3,0x1c,0x0,0x3,0x0,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x60,0x80,0x0,0xe0,0x80,0x40,0x40,0xe0,0x20,0x0,0x0,0x0,0xc0,0x0,
-+0x4,0x4,0x4,0x7,0x3a,0x1,0x7,0x38,0x0,0x7,0x0,0x20,0x20,0x10,0xf,0x0,0x0,0x8,0xc4,0x12,0x8,0xc4,0x0,0x80,0x80,0xc0,0x40,0x0,0x0,0x0,0x80,0x0,
-+0x0,0x1,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x8,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,
-+0x0,0x2,0x1,0x1,0x2,0x4,0x8,0x10,0x20,0x10,0x8,0x4,0x2,0x1,0x1,0x0,0x0,0x8,0x4,0x22,0x10,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x10,0x10,0x20,0x20,0x27,0x40,0x40,0x40,0x50,0x50,0x20,0x20,0x1,0x0,0x0,0x80,0x40,0x40,0x40,0x78,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0,
-+0x0,0x0,0x10,0x10,0x20,0x20,0x27,0x40,0x40,0x40,0x50,0x50,0x20,0x20,0x1,0x0,0x8,0x84,0x52,0x48,0x44,0x70,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0,
-+0x0,0x0,0x10,0xf,0x0,0x3,0x4,0x0,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,
-+0x0,0x0,0x10,0xf,0x0,0x3,0x4,0x0,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x8,0xe4,0x82,0x10,0x8,0x4,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x2,0x3f,0x1,0x0,0x0,0x1,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x30,0xc0,0x0,0x0,0x80,0x40,0xe0,0x20,0x0,0x0,0x0,0x0,0xe0,0x0,
-+0x0,0x4,0x2,0x2,0x3f,0x1,0x0,0x0,0x1,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x8,0x4,0xd2,0x8,0x4,0x80,0x40,0xe0,0x20,0x0,0x0,0x0,0x0,0xe0,0x0,
-+0x0,0x18,0xc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x9,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x0,0x18,0xc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x9,0x6,0x0,0x0,0x10,0x8,0x24,0x10,0x8,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x7f,0x1,0x7,0x9,0x9,0x9,0x6,0x0,0x1,0x1,0x2,0xc,0x0,0x0,0x0,0x0,0xf8,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,
-+0x3,0x1,0x1,0x1,0x7f,0x1,0x7,0x9,0x9,0x9,0x6,0x0,0x1,0x1,0x2,0xc,0x8,0x4,0x12,0x8,0xf4,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x10,0x8,0x8,0xb,0x7c,0x8,0x8,0x8,0x9,0x8,0x8,0x8,0x7,0x0,0x0,0x80,0x40,0x40,0x40,0xfc,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0,0xf0,0x0,
-+0x0,0x0,0x10,0x8,0x8,0xb,0x7c,0x8,0x8,0x8,0x9,0x8,0x8,0x8,0x7,0x0,0x8,0x84,0x52,0x48,0x44,0xf0,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0,0xf0,0x0,
-+0x0,0x10,0xf,0x1,0x2,0x4,0x8,0x1f,0x22,0x44,0x4,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,
-+0x0,0x10,0xf,0x1,0x2,0x4,0x8,0x1f,0x22,0x44,0x4,0x4,0x2,0x1,0x0,0x0,0x8,0x24,0x92,0x8,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,
-+0x0,0x4,0x4,0x47,0x3c,0x9,0x8,0x8,0x10,0x10,0x12,0x22,0x21,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x30,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,
-+0x0,0x4,0x4,0x47,0x3c,0x9,0x8,0x8,0x10,0x10,0x12,0x22,0x21,0x40,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0xe0,0x30,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x3,0x7e,0x4,0x7,0x4,0xc,0x8,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x80,0xc0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0x20,0xc0,0x0,
-+0x0,0x4,0x4,0x5,0x7,0x7c,0x8,0xb,0xc,0x18,0x10,0x0,0x0,0x0,0x0,0x3,0x0,0x8,0x4,0x12,0x88,0x4,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0x20,0xc0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f,0x8,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0x40,0x80,0x0,
-+0x0,0x0,0x0,0x1,0x6,0x78,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0xc,0xf0,0x40,0x0,0x0,0x0,0x0,0x0,0x1,0xe,0x0,0x0,0x8,0x4,0x12,0xc8,0x24,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7f,0x21,0x2,0x4,0x4,0x4,0x4,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x8,0xfc,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7f,0x21,0x2,0x4,0x4,0x4,0x4,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x8,0xfc,0xc0,0x8,0x4,0x12,0x8,0x4,0x0,0x0,0x0,0xf0,0x0,
-+0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x6,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,
-+0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x6,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x8,0x4,0x12,0x8,0x4,0x30,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,
-+0x0,0x0,0xc,0x4,0x7,0x7c,0x24,0x8,0x8,0x10,0x10,0x23,0x44,0x4,0x3,0x0,0x0,0x0,0x20,0x10,0x8,0x18,0x40,0x40,0x40,0x40,0x40,0xe0,0x50,0x48,0x84,0x0,
-+0x0,0x20,0x10,0x10,0x13,0x20,0x20,0x20,0x40,0x4a,0x4a,0x52,0x51,0x60,0x40,0x0,0x0,0x0,0x0,0x1c,0xe8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,
-+0x0,0x2,0x1,0x21,0x11,0x17,0x19,0x11,0x31,0x4a,0x4a,0x44,0x44,0x4a,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x4,0x4,0x4,0x74,0x8c,0x94,0x62,0x0,0x0,
-+0x0,0x10,0x8,0x8,0x8,0x1e,0x69,0xa,0xc,0x18,0x28,0x48,0xa9,0x29,0x18,0x0,0x0,0x0,0x0,0x0,0x60,0x90,0x10,0x10,0x10,0x10,0x10,0xf0,0x18,0x24,0xc2,0x0,
-+0x0,0x0,0x0,0x7,0x19,0x21,0x42,0x42,0x42,0x44,0x44,0x28,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0xc0,0x0,
-+0x0,0x20,0x10,0x10,0x10,0x27,0x20,0x20,0x40,0x48,0x48,0x53,0x54,0x64,0x43,0x0,0x0,0x80,0x40,0x50,0x78,0xc0,0x40,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x20,0x10,0x10,0x10,0x27,0x20,0x20,0x40,0x48,0x48,0x53,0x54,0x64,0x43,0x0,0x8,0x84,0x52,0x48,0x74,0xc0,0x40,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x20,0x10,0x10,0x10,0x27,0x20,0x20,0x40,0x48,0x48,0x53,0x54,0x64,0x43,0x0,0xc,0x92,0x52,0x4c,0x70,0xc0,0x40,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x0,0x2,0x3e,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x20,0x20,0x30,0x28,0x24,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0,
-+0x0,0x0,0x2,0x3e,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x8,0x4,0x12,0x28,0x24,0x30,0x28,0x24,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0,
-+0x0,0x0,0x2,0x3e,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0xc,0x12,0x12,0x2c,0x20,0x30,0x28,0x24,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x1,0x2,0x2,0x1,0x0,0x3,0x4,0x8,0x78,0x26,0x1,0x0,0x0,0x0,0x80,0xc0,0x0,0x0,0x0,0x0,0xe0,0x98,0x84,0x8c,0x90,0x80,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x1,0x2,0x2,0x1,0x0,0x3,0x4,0x8,0x78,0x26,0x1,0x0,0x8,0x4,0x92,0xc8,0x4,0x0,0x0,0x0,0xe0,0x98,0x84,0x8c,0x90,0x80,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x1,0x2,0x2,0x1,0x0,0x3,0x4,0x8,0x78,0x26,0x1,0x0,0xc,0x12,0x92,0xcc,0x0,0x0,0x0,0x0,0xe0,0x98,0x84,0x8c,0x90,0x80,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x18,0x6,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x84,0x40,0x20,0x18,0x6,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x24,0x18,0x80,0x40,0x20,0x18,0x6,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x20,0x17,0x10,0x10,0x20,0x27,0x20,0x40,0x48,0x48,0x51,0x52,0x62,0x41,0x0,0x0,0x70,0xc0,0x40,0x40,0x40,0xf8,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x20,0x17,0x10,0x10,0x20,0x27,0x20,0x40,0x48,0x48,0x51,0x52,0x62,0x41,0x0,0x8,0xe4,0x52,0x48,0x44,0x40,0xf8,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x20,0x17,0x10,0x10,0x20,0x27,0x20,0x40,0x48,0x48,0x51,0x52,0x62,0x41,0x0,0x0,0xec,0x52,0x52,0x4c,0x40,0xf0,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0,
-+0x0,0x1,0x1,0x1,0x3f,0x1,0x1,0x1f,0x1,0x1,0x1,0x1d,0x23,0x21,0x1e,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x0,
-+0x0,0x0,0x13,0xc,0x0,0x1,0x1,0x1,0x2,0x1a,0x27,0x44,0x48,0x30,0x0,0x1,0x0,0x0,0x80,0x80,0x80,0x0,0x10,0x10,0x10,0x10,0xa0,0x70,0x28,0x44,0x80,0x0,
-+0x0,0x8,0x4,0x4,0x7,0x7c,0x4,0x1c,0x24,0x24,0x24,0x1c,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x90,0xc8,0x4,0xc,0x10,0x0,0x0,0x10,0x10,0x10,0x18,0xf0,0x0,
-+0x0,0x1,0x10,0x10,0x10,0x1f,0x11,0x29,0x45,0x42,0x45,0x48,0x30,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0xc0,0x20,0x10,0x8,0x8,0x8,0x10,0x10,0x20,0xc0,0x0,
-+0x2,0x2,0x2,0x2,0x23,0x1e,0x4,0x4,0x44,0x3f,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x10,0x8,0xc8,0x8,0x8,0x8,0x8,0x8,0xf0,0x0,
-+0x0,0x0,0x2,0x1,0x0,0x0,0x3,0x24,0x1f,0x2,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x30,0x48,0x88,0x8,0x8,0x70,0x0,0x80,0x80,0x40,
-+0x0,0x2,0x1,0x0,0x6,0x9,0x10,0x11,0x7e,0x8,0x8,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x80,0x40,0x40,0x80,0x30,0xc8,0x4,0x4,0x88,0x70,0x0,0x0,0x0,0x80,
-+0x0,0x0,0x0,0x1,0x0,0x0,0x11,0x12,0x14,0x14,0x18,0x1a,0x11,0x10,0x1,0x2,0x0,0x0,0x0,0x0,0x80,0x80,0xe0,0x90,0x88,0x88,0x88,0x88,0x90,0xe0,0x0,0x0,
-+0x0,0x0,0x10,0x10,0x10,0x11,0x22,0x24,0x24,0x24,0x28,0x2a,0x31,0x10,0x0,0x3,0x0,0x80,0x40,0x40,0xf8,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x58,0xe0,0x80,0x0,
-+0x0,0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xf,0x11,0x11,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0xc0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x0,0x0,
-+0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1f,0x21,0x41,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x10,0x38,0xc0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x4,0x0,
-+0x0,0x1c,0x2,0x2,0x4,0x8,0x10,0x10,0x10,0x13,0x14,0x18,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x30,0xc0,0x0,
-+0x0,0x10,0x8,0x9,0xa,0xa,0x12,0x14,0x14,0x18,0x8,0x0,0x0,0x0,0x1,0x2,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,
-+0x0,0x0,0xf,0x0,0x0,0x0,0x1,0x2,0x7,0x8,0x10,0x3,0x4,0x4,0x3,0x0,0x0,0x40,0xa0,0x20,0x40,0x80,0x0,0xf0,0x8,0x4,0x4,0x84,0x44,0x28,0xf0,0x0,
-+0x0,0x8,0x8,0x8,0xe,0x79,0xa,0xc,0x8,0x18,0x28,0x28,0x68,0x18,0x8,0x0,0x0,0x0,0x20,0x50,0x88,0x8,0x10,0x10,0x10,0x10,0x10,0x12,0x14,0x8,0x0,0x0,
-+0x0,0x3,0x1c,0x0,0x1,0x2,0x4,0xf,0x18,0x20,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xc0,0x40,0x80,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0x10,0x60,0x80,0x0,
-+0x0,0x0,0x8,0x4,0x4,0x7,0x3c,0x7,0xc,0x14,0x24,0x34,0xc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,
-+0x0,0x10,0x8,0x8,0x4f,0x38,0xb,0xc,0x8,0x18,0x28,0x48,0x68,0x18,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x18,0x4,0x4,0x4,0x4,0x8,0x10,0x60,0x0,
-+0x0,0x0,0x3,0x1c,0x0,0x1,0x1,0x3,0xf,0x12,0x22,0x44,0x38,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0xf0,0x8,0x4,0x4,0x64,0x94,0x88,0x70,0x0,
-+0x0,0xf,0x0,0x1,0x3,0x6,0x8,0x13,0x24,0x3,0x2,0x4,0x18,0x26,0x41,0x0,0x0,0xc0,0x80,0x0,0xe0,0x10,0x10,0x90,0xa0,0xc0,0x0,0x0,0x38,0x44,0x88,0x0,
-+0x0,0x2,0x1,0x1,0x1f,0x1,0x2,0x3,0x4,0x8,0x11,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0xe0,0x0,0x8,0xc,0xd0,0x60,0xc0,0x40,0x40,0x40,0x0,0xf8,0x0,
-+0x0,0x2,0x1,0x1,0x1,0x2,0x2,0x2,0x3,0x2,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x22,0x22,0x24,0x24,0x18,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x1f,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0xf0,0x10,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x3f,0x0,0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x0,0x0,0x0,0xf8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1,0x3,0x5,0x9,0x11,0x21,0x1,0x1,0x1,0x1,0x1,0x0,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1,0x11,0x1f,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x3,0xc,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x21,0x3f,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x0,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x1f,0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x1,0x1,0x3f,0x3,0x5,0x9,0x11,0x21,0x1,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x42,0x1,0x0,0x0,0x80,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x3f,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x21,0x40,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,
-+0x0,0x2,0x2,0x2,0x3f,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x21,0x40,0x0,0x8,0x4,0x12,0x8,0xe4,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,
-+0x0,0x8,0x8,0x4,0x4,0x3f,0x2,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x70,0x80,0x80,0x40,0x40,0x20,0x20,0x0,
-+0x0,0x8,0x8,0x4,0x4,0x3f,0x2,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0xe4,0x0,0x0,0x0,0x70,0x80,0x80,0x40,0x40,0x20,0x20,0x0,
-+0x0,0x2,0x2,0x2,0x3,0x4,0x4,0x8,0x10,0x20,0x0,0x1,0x2,0xc,0x30,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x3,0x4,0x4,0x8,0x10,0x20,0x0,0x1,0x2,0xc,0x30,0x0,0x8,0x4,0x12,0x8,0xe4,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x8,0xf,0x10,0x20,0x41,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x10,0xf8,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x8,0xf,0x10,0x20,0x41,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x0,0x8,0x4,0x12,0x8,0xf4,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x20,0x20,0xf0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x24,0xf0,0x20,0x20,0x20,0x40,0xe0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x7f,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x1,0x0,0x0,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x80,0x80,0x0,0x0,
-+0x0,0x0,0x0,0x8,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0x9,0x1,0x2,0x0,0x8,0x4,0x92,0x88,0x84,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x18,0x4,0x2,0x30,0x8,0x4,0x0,0x0,0x1,0x2,0x24,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x18,0x4,0x2,0x30,0x8,0x4,0x0,0x0,0x1,0x2,0x24,0x18,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x1,0x3,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x40,0x40,0x80,0x0,0x0,0x80,0x40,0x30,0x10,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x1,0x3,0x4,0x8,0x10,0x20,0x0,0x8,0x4,0x12,0x8,0xe4,0x20,0x40,0x40,0x80,0x0,0x80,0x40,0x20,0x18,0x8,0x0,
-+0x0,0x4,0x4,0x4,0x4,0x7,0x7c,0x4,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x40,0x80,0x0,0x0,0x0,0x20,0xf0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x7,0x7c,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0xe0,0x20,0x40,0x80,0x0,0x0,0x20,0xf0,0x0,0x0,
-+0x0,0x0,0x0,0x20,0x10,0x8,0xc,0x4,0x0,0x0,0x0,0x1,0x2,0xc,0x30,0x0,0x0,0x0,0x20,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x18,0x8,0x0,0x0,0x1,0x2,0x4,0x18,0x60,0x8,0x4,0x12,0x48,0x24,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x4,0x7,0x4,0x8,0x8,0x10,0x24,0x2,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0xf,0x8,0x10,0x10,0x20,0x49,0x5,0x2,0x5,0x8,0x30,0xc0,0x0,0x8,0x4,0x52,0xe8,0x44,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x1f,0x1,0x1,0x7f,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x0,0x0,0x20,0xf0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x3e,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x8,0x4,0x52,0xe8,0x4,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x4,0x3,0x21,0x18,0x8,0x0,0x0,0x0,0x1,0x6,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x2,0x21,0x11,0x8,0x8,0x0,0x0,0x1,0x2,0x4,0x8,0x30,0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x8,0x4,0x42,0x22,0x10,0x10,0x0,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x8,0x4,0x12,0x28,0x24,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1f,0x0,0x0,0x0,0x7f,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x0,0x20,0xf0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x8,0x4,0x92,0xc8,0x4,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x6,0x5,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x4,0x4,0x4,0x6,0x5,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x0,0x80,0x60,0x20,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1f,0x0,0x0,0xc,0x2,0x1,0x0,0x0,0x1,0x2,0x4,0x8,0x30,0x0,0x0,0x10,0xf8,0x10,0x20,0x20,0x40,0x40,0x80,0xc0,0x30,0x10,0x0,0x0,0x0,0x0,
-+0x2,0x1,0x0,0x0,0x1f,0x0,0x1,0x3,0x5,0x9,0x11,0x21,0x1,0x1,0x1,0x0,0x0,0x80,0x80,0x0,0xc0,0x80,0x0,0x0,0x40,0x30,0x10,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0x20,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x10,0x8,0x8,0xc,0x4,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x44,0x20,0x10,0x10,0x8,0x8,0xc,0x4,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0xc,0x12,0x12,0x4c,0x20,0x10,0x10,0x8,0x8,0xc,0x4,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x8,0x8,0x8,0x8,0x9,0xe,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x60,0x80,0x0,0x0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x20,0x20,0x21,0x21,0x26,0x38,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0xc0,0x0,0x0,
-+0x0,0x0,0x0,0x20,0x20,0x21,0x21,0x26,0x38,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x0,0xc,0x12,0x12,0xc,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0xc0,0x0,0x0,
-+0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x20,0xf0,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x8,0x4,0x12,0x48,0xe4,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0xc,0x12,0x52,0xec,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x43,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x43,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x0,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x43,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x12,0x12,0xc,0x0,0x0,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x1,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x20,0x10,0x8,0x8,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x5,0x2,0x0,0x8,0x4,0x12,0x8,0x4,0x8,0xfc,0x0,0x0,0x20,0x10,0x8,0x8,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x5,0x2,0x0,0xc,0x12,0x12,0xc,0x0,0x8,0xfc,0x0,0x0,0x20,0x10,0x8,0x8,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x6,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x20,0x20,0x40,0x80,0x80,0x40,0x40,0x0,0x0,0x0,
-+0x0,0x0,0xe,0x1,0x0,0x0,0x1c,0x3,0x0,0x0,0x1c,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x20,0x0,0x0,0xc0,0x40,0x0,0x80,0x60,0x20,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x2,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x3f,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0xf8,0x8,0x8,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x4,0x2,0x1,0x0,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x20,0x10,0x20,0x20,0x40,0x80,0x80,0x60,0x20,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x3,0x3e,0x2,0x2,0x3,0x7e,0x2,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x40,0xe0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x5,0x3e,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x10,0x20,0x0,0x80,0x80,0x40,0x20,
-+0x0,0x10,0x8,0x8,0x4,0x5,0x7e,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x10,0x20,0x0,0x80,0x80,0x40,0x40,0x20,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x40,0x48,0xfc,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x20,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x0,0x0,0x1f,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x3f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0,
-+0x0,0x0,0xf,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x6,0x18,0x0,0x0,0x40,0xe0,0x0,0x10,0xf8,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x1,0x1,0x2,0x4,0x8,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x84,0x88,0x90,0xa0,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x20,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x40,0x40,0xe0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x10,0x1f,0x10,0x10,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x20,0x3f,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x1f,0x9,0x9,0x9,0x9,0x7f,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0xe0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x0,0x2,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x80,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0xf8,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x10,0x8,0x6,0x2,0x0,0x0,0x0,0x1,0x2,0x24,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x2,0x22,0x3f,0x20,0x20,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x0,0x8,0x4,0x12,0x28,0xf4,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x1,0x1,0xf,0x1,0x1,0x2,0x2,0x2,0x5,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x7,0x8,0x10,0x21,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0xe0,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0xe0,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x10,0x10,0x20,0xc0,0x20,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x10,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0x10,0x8,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x40,0xc0,0x40,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x20,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x28,0x2f,0x28,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x28,0xe8,0x28,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x71,0x21,0x22,0x24,0x28,0x38,0x24,0x22,0x21,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x60,0x30,0x30,0x28,0x28,0x24,0x24,0x22,0x22,0x21,0x70,0x0,0x0,0x0,0x0,0x0,0xc,0x18,0x18,0x28,0x28,0x48,0x48,0x88,0x88,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x60,0x30,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x88,0x48,0x28,0x18,0xc,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x10,0x10,0x0,0x4,0x7,0x4,0x0,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x20,0xe0,0x20,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x10,0x8,0x4,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x41,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x6,0x9,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x40,0xa0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0xf,0x11,0x21,0x21,0x21,0x11,0xf,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0xe0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x43,0x21,0x11,0x11,0x11,0x11,0xf,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x84,0x8,0x10,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x10,0x48,0x44,0x7c,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x10,0x24,0x44,0x7c,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0x40,0xd0,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x0,0x0,0x80,0x40,0x40,0x80,0x0,0xc0,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0xc,0x12,0x22,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x4,0x2,0x1,0x2,0x4,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x4,0x4,0x2,0x1,0x2,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x0,0x80,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x4,0x4,0x3,0x2,0x4,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x3,0x0,0x0,0x0,0x40,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0xc0,0x0,
-+0x0,0x0,0x0,0x1,0xa,0x14,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,
-+0x0,0x3,0x4,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x18,0x8,0x8,0xd,0xa,0x9,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x40,0x80,0x0,0x0,0x0,0x80,0x40,0x70,0x0,0x0,0x0,0x0,
-+0x4,0xa,0x2,0x1,0x1,0x1,0x3,0x2,0x2,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x50,0x50,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xd0,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x18,0x8,0x4,0x4,0x4,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x8,0x7,0x8,0x8,0x7,0x4,0x8,0x8,0x8,0x7,0x0,0x2,0x1,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0xc0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x24,0x4,0x4,0x4,0x4,0x4,0x8,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x40,0x40,0x40,0x40,0x40,0x40,0x50,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x18,0x14,0x13,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x9,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x8,0x14,0x4,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x7,0x9,0x11,0x11,0x11,0x11,0x11,0x9,0x7,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x14,0x4,0x2,0x2,0x1,0x1,0x2,0x4,0x8,0x8,0x10,0x0,0x0,0x0,0x0,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x80,0x80,0x40,0x50,0x20,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x11,0x29,0x9,0x9,0x9,0x9,0x9,0x9,0x7,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x4,0x8,0x11,0x11,0x11,0x11,0x11,0xa,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x2,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0xe0,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x3f,0x20,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x8,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x20,0xe0,0x20,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x8,0x0,0x7f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x20,0x0,0xf8,0x8,0x8,0x20,0xe0,0x20,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x33,0x49,0x9,0x5,0x3,0x5,0x9,0x9,0x11,0x11,0x63,0x0,0x0,0x0,0x0,0x0,0x98,0x24,0x20,0x40,0x80,0x40,0x20,0x20,0x10,0x10,0x8c,0x0,0x0,0x0,0x0,
-+0x0,0x17,0x18,0x10,0x0,0x0,0x1,0x0,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x20,0x23,0x24,0x28,0x30,0x20,0x60,0x0,0x0,0x0,0x0,0x0,0xc,0x8,0x18,0x28,0xc8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x4,0x74,0x23,0x20,0x20,0x20,0x23,0x24,0x28,0x30,0x20,0x60,0x0,0x0,0x0,0x0,0x40,0x4c,0x88,0x18,0x28,0xc8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x21,0x22,0x3c,0x22,0x21,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x38,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x30,0x28,0x28,0x24,0x24,0x22,0x21,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x18,0x28,0x28,0x48,0x48,0x88,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0xf,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xd0,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x41,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x1c,0x8,0x8,0x4,0x4,0x2,0x1,0x0,0x1,0x12,0xc,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x1,0x1f,0x21,0x41,0x41,0x41,0x21,0x1f,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0xf0,0x8,0x4,0x4,0x4,0x8,0xf0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x4,0x4,0x0,0x0,
-+0x0,0x38,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x10,0x30,0xd0,0x10,0x10,0x10,0x38,0x0,0x0,0x0,0x0,
-+0x0,0x73,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x7f,0x0,0x0,0x0,0x0,0x0,0x9c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x0,0x73,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x7f,0x0,0x0,0x0,0x0,0x0,0x9c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xfc,0x4,0x4,0x0,0x0,
-+0x0,0x3e,0x24,0x4,0x4,0x7,0x4,0x4,0x4,0x4,0x4,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x4,0x4,0x4,0x8,0xf0,0x0,0x0,0x0,0x0,
-+0x0,0x70,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x88,0x48,0x48,0x48,0x88,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x1c,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x2f,0x30,0x20,0x0,0x0,0x1,0x0,0x0,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x4,0x4,0xfc,0x4,0x4,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x71,0x22,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x22,0x71,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0xf0,0x0,0x0,0x0,0x0,
-+0x0,0x3,0x4,0x8,0x8,0x4,0x3,0x0,0x3,0x4,0x8,0x38,0x0,0x0,0x0,0x0,0x0,0xfc,0x8,0x8,0x8,0x8,0xf8,0x88,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x0,0xf,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0xc0,0x40,0x40,0xd0,0x20,0x0,0x0,0x0,0x0,
-+0x0,0x7,0x8,0x10,0x17,0x18,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x20,0xc0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x1f,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xf0,0x10,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x1f,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x0,0x7,0x8,0x10,0x10,0x1f,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x20,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x33,0x9,0x9,0x5,0x7,0x9,0x9,0x11,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x98,0x20,0x20,0x40,0xc0,0x20,0x20,0x10,0x88,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0xb,0xc,0x8,0x0,0x1,0x0,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0xc0,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x3,0x38,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x30,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x70,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x9,0xe,0x9,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x80,0x80,0x0,0x0,0x0,0x80,0x90,0x60,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0xf,0x4,0x4,0x4,0x4,0x4,0x14,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x38,0x10,0x18,0x14,0x12,0x12,0x11,0x10,0x38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x30,0x50,0x90,0x90,0x10,0x10,0x38,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0xb,0x1c,0x8,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x0,0x0,0x0,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x11,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x4,0x4,0x4,0x2,0x1,0x1,0x2,0x14,0x8,0x0,0x0,0x0,0x0,0x70,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0xd,0x13,0x11,0x11,0x11,0x11,0x13,0xd,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x60,0x90,0x10,0x10,0x10,0x10,0x90,0x60,0x0,0x0,0x80,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xf0,0x10,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x40,0x40,0xc0,0x40,0x40,0x40,0xe0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3b,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3b,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x8,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3c,0x28,0x8,0x8,0xf,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x10,0x90,0x90,0x90,0x38,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x7,0x8,0x0,0x0,0x1,0x0,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0xe0,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x38,0x11,0x12,0x12,0x1e,0x12,0x12,0x11,0x38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x3,0x4,0x4,0x4,0x3,0x1,0x2,0xa,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x7,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x2,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x1,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x0,0x7,0x0,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x2,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x1,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x3,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x4,0x0,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x7,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x2,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x1,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x0,0xf,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x2,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0x8,0x5,0x2,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0xf,0x0,0x2,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0xe0,0x0,0x80,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x0,0x2,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x4,0x2,0x1,0x0,0x2,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x2,0x1,0x0,0x0,0x2,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x2,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0,
-+0x0,0x1,0x2,0x4,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x40,0x80,0x0,
-+0x0,0x0,0x1,0x2,0x0,0x1a,0xd,0x9,0x9,0x9,0x9,0x9,0x9,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x0,0x0,0x0,
-+0x0,0x0,0x1,0x2,0x0,0xd,0x6,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x0,0x0,0x0,
-+0x0,0x4,0x2,0x1,0x0,0xd,0x6,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x0,0x0,0x0,
-+0x0,0x2,0x1,0x0,0x0,0xd,0x6,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,
-+0x0,0x4,0x4,0x8,0x1f,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3,0xc,0x30,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0x10,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x3f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,
-+0x0,0x4,0x4,0x8,0x1f,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x11,0x20,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,
-+0x0,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x2,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x8,0x0,0x0,
-+0x0,0x0,0x3f,0x0,0x0,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0xc0,0x40,0x80,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,
-+0x0,0x1,0x9,0x9,0x11,0x1f,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x50,0x20,
-+0x0,0x0,0x2,0x2,0x4,0x4,0x8,0x8,0x11,0x8,0x8,0x4,0x4,0x2,0x2,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x80,0x40,0x40,0x20,0x20,0x0,
-+0x0,0x0,0x7f,0x2,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x20,0xa0,0x40,
-+0x0,0x0,0x3f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x9,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x0,
-+0x0,0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x11,0x1f,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0xf0,0x0,0x0,0x0,0xfc,0x0,0x0,
-+0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x11,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x0,0x40,0x80,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1f,0x0,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0xf8,0x8,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0xf,0x8,0x8,0x8,0xa,0x9,0x8,0x8,0x8,0x8,0x8,0xf,0x0,0x0,0x0,0x0,0xe0,0x20,0x20,0x20,0x20,0x20,0xa0,0x20,0x20,0x20,0x20,0xe0,0x0,0x0,
-+0x0,0x0,0x3f,0x4,0x4,0x4,0x4,0x4,0x4,0x5,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2,0x2,0x2,0x7f,0x4,0x4,0x4,0xf,0x0,0x0,0x0,0x0,0x0,0x2,0x1,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0xf0,0x10,0x10,0x20,0x20,0x40,0x80,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0xf0,0x8,0x0,0x0,
-+0x0,0x10,0x8,0x4,0x2,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x7f,0x1,0x1,0x1,0xf,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x7f,0x1,0x1,0xf,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,
-+0x0,0x0,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0x8,0x9,0x8,0x7,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0xfc,0x40,0x40,0x40,0x80,0x80,0x0,0x0,0xf0,0x0,0x0,
-+0x0,0x0,0x7f,0x9,0x9,0x11,0x1f,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x0,
-+0x0,0x0,0x1c,0x4,0x4,0x4,0x2,0x2,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x18,0x0,
-+0x0,0x2,0x2,0x4,0x4,0x8,0x8,0x1f,0x1,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x40,0x20,0xf0,0x10,0x0,0x0,
-+0x0,0x0,0x0,0x1f,0x0,0x0,0x4,0x2,0x1,0x0,0x0,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0xf0,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x40,0x20,0x0,0x0,0x0,
-+0x0,0x3f,0x8,0x8,0x8,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x20,0x20,0x40,0x40,0xf8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,
-+0x0,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x10,0x10,0x20,0x0,
-+0x0,0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0x2,0x4,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7c,0x0,
-+0x0,0x0,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x0,0x0,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x84,0x7c,0x0,
-+0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x8,0x4,0x2,0x1,0x0,0x0,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x40,0x20,0x10,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x78,0x88,0x8,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x73,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9c,0x9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x80,0x80,0x80,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x80,0x80,0x80,0x0,0x80,0x80,0x80,0x0,0x80,0x80,0x80,0x0,0x80,0x80,0x80,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x3,0x3,0x3,0x3,0x3,0x3,0x7f,0x7f,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x8,0x8,0x8,0x8,0x8,0x9,0x8,0xff,0x9,0x9,0x8,0x8,0x8,0x9,0xe,0x8,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0xfe,0x0,0x0,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x20,0x20,0x20,0x27,0xfc,0x24,0x24,0x27,0x24,0x24,0x3c,0xe6,0x45,0x4,0x8,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x90,0x30,0x4a,0x8a,0x6,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x0,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x0,0x0,0x0,0x3,0x4,0x8,0x10,0x10,0x10,0x1f,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,0x10,0x10,0xf0,0x0,
-+0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x2f,0xf9,0xa9,0xaa,0xaa,0xac,0xaa,0xaa,0xa9,0xe9,0xad,0xa,0x8,0x8,0x8,0x4,0x7e,0x4,0x4,0x14,0x7c,0x54,0x54,0x54,0x54,0x74,0x54,0x4,0x4,0x14,0xc,
-+0x0,0x7f,0x44,0x48,0x48,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x40,0x40,0x40,0x4,0xfe,0x8,0x8,0x28,0xf8,0x28,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x11,0x13,0xfc,0x11,0x11,0x12,0x10,0x17,0x1c,0xf0,0x40,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x10,0x10,0x10,0x11,0xff,0x10,0x11,0x15,0x1a,0x30,0xd7,0x10,0x10,0x10,0x51,0x26,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x0,0x0,0x8,0x7f,0x48,0x48,0x49,0x49,0x48,0x48,0x48,0x78,0x48,0x1,0x2,0x4,0x90,0x90,0x94,0xfe,0x90,0x90,0x8,0x8,0x90,0x90,0x60,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x0,0x8,0x7d,0x4b,0x48,0x49,0x49,0x4a,0x48,0x4f,0x78,0x48,0x0,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x2,0x1,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x5,0xc,0x14,0x24,0xc5,0x6,0x4,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x8,0x90,0x60,0x30,0xe,0x4,0x0,
-+0x10,0x10,0x25,0x7f,0x45,0x44,0x45,0x7c,0x44,0x45,0x45,0x45,0x7d,0x45,0x0,0x0,0x20,0x20,0x24,0x24,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x93,0x52,0x53,0x10,0x37,0x54,0xd7,0x10,0x24,0x24,0x47,0x4,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xbc,0xa4,0xbc,0x40,0x44,0x44,0xfc,0x4,
-+0x8,0xff,0x8,0x43,0x32,0x13,0x2,0xf3,0x11,0x13,0x14,0x12,0x16,0x1a,0x13,0x0,0x24,0xfe,0x20,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xa4,0x4,0xd4,0x8,
-+0x20,0x21,0x28,0x3c,0x53,0x90,0x15,0xfe,0x10,0x17,0x10,0x29,0x24,0x44,0x81,0x6,0x18,0xe0,0x40,0x48,0xfc,0xe0,0x5c,0x48,0x40,0xfe,0x90,0x10,0xa0,0x60,0x98,0x8,
-+0x4,0x4,0xff,0x4,0x4,0x0,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x40,0x20,0x20,0x40,0x40,0x80,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x5,0xff,0x11,0x11,0x21,0x24,0x7f,0xa4,0x27,0x25,0x24,0x3c,0x24,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfc,0x10,0xfe,0x10,0x90,0x90,0x10,0x50,0x20,
-+0x0,0x3f,0x11,0x9,0x7f,0x42,0x82,0x7f,0x4,0x7,0xa,0x9,0x10,0x11,0x22,0xc,0x78,0x80,0x10,0x20,0xfe,0x2,0x4,0xf8,0x0,0xf0,0x20,0x40,0x80,0x60,0x1c,0x8,
-+0x4,0x7a,0x49,0x48,0x57,0x60,0x51,0x4a,0x4c,0x4b,0x6a,0x52,0x42,0x42,0x4f,0x40,0x4,0x8,0x10,0x4,0xfe,0xa0,0x10,0x8,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x28,0x28,0xfe,0x29,0x39,0x12,0x7c,0x57,0x54,0x7c,0x11,0xfe,0x10,0x10,0x10,0x13,0x40,0x20,0x0,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x50,0x8c,0x4,
-+0x10,0x1f,0x20,0x5f,0x80,0x3f,0x2,0x3f,0x22,0x4,0xff,0x8,0x19,0x6,0x9,0x30,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x28,0x8,0xf8,0x88,0x8,0xa,0x8a,0x44,
-+0x2,0x1,0x7f,0x40,0x82,0x2,0x2,0xff,0x4,0x8,0x18,0x6,0x1,0x2,0xc,0x30,0x0,0x0,0xfe,0x2,0x4,0x0,0x4,0xfe,0x20,0x20,0x20,0x40,0x80,0x40,0x30,0x10,
-+0x8,0x8,0x8,0x17,0x10,0x31,0x52,0x94,0x1b,0x12,0x13,0x12,0x13,0x12,0x10,0x10,0x40,0x40,0x48,0xfc,0xa0,0x10,0x4e,0x44,0xf8,0x48,0xf8,0x48,0xf8,0x4a,0x42,0x3e,
-+0x10,0x10,0x10,0x13,0xfa,0x14,0x10,0x3f,0xd0,0x10,0x11,0x10,0x10,0x10,0x50,0x23,0x40,0x20,0x0,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x50,0x8c,0x4,
-+0x0,0x8,0x7f,0x48,0x49,0x48,0x4f,0x78,0x4b,0x4a,0x4a,0x4b,0x7a,0x4a,0x3,0x2,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x20,0x2f,0x20,0x20,0x3f,0x20,0x20,0x40,0x80,0x0,0x0,0x8,0x8,0xf8,0x0,0xfc,0x10,0xf8,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x80,
-+0x4,0x3e,0x24,0x25,0x25,0x3e,0x24,0x27,0x24,0x3c,0x25,0x24,0x24,0x44,0x94,0x9,0x40,0x20,0x0,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x50,0x8c,0x4,
-+0x1,0x7f,0x41,0x82,0x7f,0x4,0xc,0x3,0x1c,0x1,0xff,0x5,0x9,0x11,0x61,0x1,0x0,0xfe,0x2,0x4,0xfc,0x20,0x40,0x80,0x70,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x45,0x96,0x8,0x40,0x20,0x4,0xfe,0x10,0xf8,0x90,0x90,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x3f,0x20,0x3f,0x20,0x3f,0x0,0x6,0x78,0x40,0x40,0x40,0x46,0x58,0x60,0x0,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x84,0x84,0x84,0xa4,0x94,0x88,0x80,0x80,
-+0x1,0x1,0x3f,0x21,0x21,0xff,0x2,0xc,0x30,0xc0,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x8,0xfc,0x8,0x8,0xfe,0x80,0x60,0x1e,0x4,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x0,0x0,0x7c,0x44,0x44,0x44,0x44,0x44,0x44,0x47,0x40,0x40,0x40,0x7f,0x40,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x8,0x8,0xa,0x7f,0x8,0x3f,0x8,0xff,0x10,0x1e,0x12,0x22,0x22,0x54,0x89,0x2,0x40,0x40,0x44,0x7e,0x88,0x8,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0xa,0x7f,0x8,0x3e,0x9,0xfe,0x10,0x1e,0x22,0x4a,0x85,0x0,0x24,0x22,0x40,0x40,0x40,0x40,0x44,0xfe,0x8,0x48,0x50,0x20,0x50,0x8e,0x4,0x0,0x88,0x44,0x4,
-+0x10,0x20,0x7d,0x44,0x7c,0x45,0x7c,0x10,0xfe,0x28,0x55,0x92,0x7c,0x10,0x11,0x10,0x0,0x4,0xde,0x44,0x44,0x54,0xcc,0x44,0x44,0xcc,0x54,0x44,0x44,0x44,0x54,0x88,
-+0x20,0x10,0x13,0xfc,0x8,0x10,0x10,0x37,0x58,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x10,0x38,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x12,0x12,0x12,0x2f,0x22,0x6f,0xa2,0x3f,0x24,0x27,0x24,0x24,0x28,0x33,0x20,0x20,0x10,0x10,0x10,0x94,0x3e,0xc4,0x24,0xa8,0x28,0xa8,0x90,0x90,0xa8,0x28,0x46,0x84,
-+0x2,0x4,0x1f,0x11,0x15,0x11,0x1f,0x11,0x15,0x11,0x1,0xff,0x2,0x4,0x18,0x60,0x0,0x10,0xf8,0x10,0x50,0x10,0xf0,0x10,0x50,0x10,0x4,0xfe,0x80,0x60,0x1c,0x8,
-+0x10,0x11,0x17,0x14,0x5d,0x54,0x57,0x94,0x15,0x14,0x10,0x1f,0x10,0x11,0x12,0x1c,0x80,0x4,0xfe,0x44,0x54,0x44,0xfc,0x44,0x54,0x4,0x40,0xfe,0xa0,0x10,0xe,0x4,
-+0x0,0x41,0x37,0x14,0x85,0x64,0x27,0xc,0x15,0x24,0xe0,0x2f,0x20,0x21,0x22,0x2c,0x80,0x4,0xfe,0x44,0x54,0x44,0xfc,0x44,0x54,0x4,0x40,0xfe,0xa0,0x10,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x4,0x1f,0x11,0x11,0x11,0x1f,0x10,0x10,0x10,0x10,0xf,0x0,0x40,0x44,0xfe,0x40,0x50,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x11,0x19,0x37,0xd1,0x11,0x12,0x12,0x15,0x58,0x20,0x44,0xe4,0x44,0x54,0x54,0xd4,0x14,0x54,0xf4,0x54,0x54,0x44,0x44,0x44,0x94,0x8,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x12,0x12,0x12,0x14,0x58,0x20,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x18,0xe,0x4,0x0,
-+0x0,0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x7a,0x4a,0x4,0x8,0x10,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x18,0xe,0x4,0x0,
-+0x0,0x8,0x7f,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4a,0x4a,0x7a,0x4a,0x2,0x1,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0xf8,0x8,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0x80,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0x48,0x7c,0xa0,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x20,0x20,0x10,0x8,0xe,0x4,0x0,
-+0x0,0x0,0x1f,0x10,0x90,0x57,0x54,0x14,0x34,0x57,0xd4,0x14,0x24,0x24,0x43,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x44,0x44,0x44,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x0,0x3f,0x21,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0xfc,0x13,0x10,0x14,0x19,0x31,0xd1,0x12,0x12,0x14,0x14,0x58,0x23,0xa0,0x90,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x8,0x90,0x60,0x20,0x50,0x8e,0x4,
-+0x4,0x7e,0x44,0x44,0x47,0x7c,0x10,0x11,0x5d,0x51,0x52,0x52,0x5c,0x74,0xc8,0x3,0xa0,0x90,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x8,0x90,0x60,0x20,0x50,0x8e,0x4,
-+0x28,0x28,0xff,0x29,0x39,0x11,0x7d,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x15,0xff,0x11,0x7d,0x11,0xff,0x11,0x31,0x39,0x55,0x55,0x91,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0x0,0x0,0x3,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x3f,0x1,0x7f,0x89,0x22,0x7f,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0x7f,0x8,0x9,0xf8,0x0,0xfe,0x24,0x8,0x7c,0x48,0x48,0x78,0x48,0x48,0x78,0x48,0x48,0x88,0x18,
-+0x0,0x3f,0x24,0x24,0x3f,0x1,0x1,0x3f,0x1,0x1,0xff,0x2,0x4,0x8,0x1f,0x0,0x8,0xfc,0x48,0x48,0xf8,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x20,0x10,0xf8,0x8,
-+0x4,0x4,0xc,0x32,0x1,0x2,0xc,0x30,0xdf,0x11,0x11,0x1f,0x10,0x10,0x10,0xf,0x40,0x20,0x58,0x88,0x0,0x80,0x60,0x18,0xf6,0x10,0x10,0xf0,0x10,0x4,0x4,0xfc,
-+0x2,0x4,0x8,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x0,0x20,0x40,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0xff,0x1,0x2,0x4,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x17,0x14,0x14,0xff,0x14,0x10,0x1b,0x30,0xd0,0x1f,0x10,0x11,0x12,0x57,0x20,0x4,0xfe,0xa4,0xa4,0xfc,0x44,0x50,0xf8,0x40,0x44,0xfe,0x80,0x10,0x8,0xfc,0x4,
-+0x8,0x8,0xf,0x10,0x10,0x33,0x52,0x92,0x12,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x0,0x4,0xfe,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x7e,0x44,0x54,0x54,0x55,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x24,0x45,0x82,0x40,0x40,0x44,0x7e,0x88,0x8,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x4,0xe,0x78,0x8,0x8,0x7e,0x8,0x8,0xff,0x8,0x9,0x8,0x10,0x10,0x20,0x40,0x8,0xfc,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x8,0x1c,0xf1,0x11,0x11,0xfd,0x11,0x39,0x35,0x50,0x51,0x97,0x10,0x10,0x10,0x10,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x12,0xf9,0x20,0x2f,0x20,0x24,0xfa,0x21,0x21,0x22,0x22,0x3c,0xe4,0x48,0x0,0x0,0x4,0x7e,0x10,0xd0,0x10,0x90,0xfc,0x10,0x10,0x90,0x50,0x50,0x14,0xfe,0x0,
-+0x1,0x9,0xfd,0x21,0x25,0x25,0x25,0xf5,0x25,0x29,0x21,0x22,0x3a,0xe2,0x44,0x8,0x0,0x4,0x7e,0x10,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x21,0x22,0x27,0x24,0xfe,0x25,0x24,0x2f,0x34,0xe6,0x25,0x24,0x24,0x28,0xb2,0x41,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xc2,0xbc,0xa4,0xa4,0xa4,0x98,0x88,0x94,0xa4,0x42,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x11,0x15,0x19,0x31,0xd1,0x12,0x12,0x14,0x59,0x20,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x8e,0x4,0x0,
-+0x8,0x12,0x3f,0x22,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x22,0x4a,0x85,0x8,0x7c,0x48,0x48,0x48,0x86,0x0,0xfc,0x44,0x48,0x28,0x10,0x30,0x48,0x8e,0x4,
-+0x0,0x2b,0x28,0x24,0x45,0x43,0x85,0x7f,0x25,0x25,0x25,0x25,0x24,0x24,0x4c,0x83,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x12,0x12,0x14,0x19,0x10,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x8e,0x4,0x0,
-+0x8,0x48,0x49,0x49,0x49,0x7d,0x41,0x41,0x79,0x49,0x49,0x4a,0x4a,0x4c,0x89,0x8,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x8e,0x4,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x12,0x1c,0x33,0xd0,0x10,0x10,0x11,0x11,0x52,0x24,0x20,0xa0,0xa0,0x90,0x10,0xe,0x4,0x8,0xfc,0x88,0x88,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x12,0x11,0xfc,0x13,0x14,0x18,0x30,0xd7,0x10,0x10,0x10,0x10,0x50,0x20,0x40,0x40,0x48,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x8,0x8,0xa,0x11,0x10,0x37,0x30,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x40,0x20,0xf8,0x7,0x54,0x55,0xfd,0x25,0x25,0x25,0x3d,0xe5,0x26,0x4b,0x90,0x0,0x10,0x48,0xbe,0x40,0x54,0x54,0x7e,0x48,0x48,0x48,0x7e,0x48,0xa8,0x98,0x8,0x8,
-+0x1,0x21,0x19,0x9,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0x18,0x20,0x0,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x2,0x2,0x3f,0x2,0x2,0x12,0x32,0x22,0x44,0x84,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x30,0x2c,0x26,0x22,0x20,0x20,0xa0,0x40,0x0,
-+0x10,0x10,0x21,0x20,0x44,0xf8,0x11,0x20,0x40,0xfc,0x3,0x0,0x1c,0xe0,0x40,0x0,0x20,0x20,0x24,0xac,0xb0,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x8,0x8,0xa,0xff,0x8,0x8,0x7e,0x8,0xa,0xff,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xa,0xff,0x8,0x7e,0x8,0xff,0x8,0x11,0x3f,0xd1,0x11,0x11,0x11,0x11,0x1,0x0,0x7c,0x48,0x50,0x58,0x44,0x64,0x58,0x50,0xf0,0x10,0x10,0x10,0x50,0x20,0x0,
-+0x11,0x11,0x11,0x17,0xf9,0x11,0x37,0x39,0x55,0x57,0x91,0x11,0x12,0x12,0x14,0x10,0x0,0x3e,0x22,0xe4,0x24,0x28,0xe4,0x24,0x22,0xe2,0x22,0x34,0x28,0x20,0x20,0x20,
-+0x10,0x10,0x11,0x10,0xfc,0x13,0x32,0x38,0x57,0x50,0x90,0x10,0x10,0x11,0x12,0x14,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x8,0x28,0x10,
-+0x8,0x7c,0x49,0x48,0x48,0x7b,0x4a,0x48,0x4f,0x78,0x48,0x48,0x48,0x48,0x89,0x1a,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x88,0x28,0x10,
-+0x11,0x11,0x21,0x27,0x49,0xf1,0x27,0x41,0xf9,0x47,0x1,0x19,0xe2,0x42,0x4,0x0,0x0,0x3e,0x22,0xe4,0x24,0x28,0xe4,0x24,0x22,0xe2,0x22,0x34,0x28,0x20,0x20,0x20,
-+0x10,0x10,0x17,0x10,0xfd,0x10,0x37,0x39,0x55,0x52,0x95,0x10,0x13,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x20,0x50,0x4e,0xf4,0x40,0xf8,0x40,0x40,0x40,
-+0x0,0x8,0xfd,0x10,0x10,0x23,0x22,0x3c,0x67,0xa4,0x24,0x24,0x24,0x3c,0x25,0x2,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x88,0x28,0x10,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x55,0x54,0x7c,0x13,0x14,0x1c,0xe4,0x40,0x0,0x20,0x20,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x11,0x1c,0x20,0x23,0x7e,0x90,0x13,0x7c,0x10,0x10,0x14,0x18,0x11,0x2,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x88,0x28,0x10,
-+0x8,0x8,0xb,0x11,0x10,0x37,0x54,0x90,0x1f,0x11,0x11,0x11,0x11,0x11,0x12,0x14,0x80,0x50,0xf8,0x10,0xa0,0xfc,0x88,0x40,0xfe,0x0,0xf0,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x40,0x37,0x11,0x0,0xf,0xe8,0x20,0x2f,0x21,0x21,0x21,0x29,0x31,0x22,0x4,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x84,0x40,0xfe,0x0,0xf0,0x10,0x10,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x4,0xf,0x10,0x2f,0x48,0x8,0xf,0x8,0x8,0x8,0x7,0x0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x90,0x90,0x90,0x90,0x30,0x4,0x4,0xfc,0x0,
-+0x4,0x3e,0x24,0x25,0x26,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x45,0x94,0x8,0x80,0x88,0xfc,0x8,0x28,0xf8,0x28,0x28,0x28,0xe8,0x28,0x10,0x2,0x2,0xfe,0x0,
-+0x4,0x4,0x4,0xf,0x10,0x20,0x5f,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x10,0xf8,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x30,0x4,0x4,0xfc,0x0,
-+0x2,0x1,0x7f,0x8,0x17,0x14,0x37,0x50,0x9f,0x12,0x14,0x5,0xc,0x14,0x66,0x4,0x0,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x80,0xfc,0xa0,0x90,0x8,0xd0,0x20,0x5c,0x8,
-+0x1,0x7f,0x1,0x3f,0x1,0xff,0x8,0x49,0x29,0x2a,0x1c,0x2a,0xc9,0x8,0x28,0x10,0x4,0x84,0x4,0x24,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x84,0x84,0x14,0x8,
-+0x8,0xff,0x8,0x47,0x20,0x27,0x84,0x4f,0x14,0x27,0xe4,0x20,0x2f,0x22,0x21,0x20,0x20,0xfe,0x50,0xfc,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x10,0xfe,0x10,0x10,0x30,
-+0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0xf,0x10,0x2f,0x48,0xf,0x8,0x8,0x7,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x0,0xf0,0x90,0xd0,0x90,0x90,0xb4,0x4,0xfc,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x32,0x50,0x9f,0x10,0x10,0x11,0x12,0x14,0x18,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x10,0x17,0x14,0x24,0x27,0x60,0xbf,0x21,0x22,0x2c,0x1,0x3f,0x1,0x1,0xff,0x0,0x10,0xf8,0x10,0x10,0xf0,0x80,0xfc,0xc0,0xa0,0x9c,0x80,0xf8,0x0,0x4,0xfe,0x0,
-+0x20,0x20,0x20,0x3c,0x25,0x4a,0x45,0xa1,0x21,0x21,0x21,0x25,0x29,0x31,0x20,0x0,0x80,0x80,0x84,0xfe,0x4,0x14,0xfc,0x14,0x14,0xf4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x0,0x3f,0x1,0x1,0x1f,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0xfe,0x2,0x4,0x10,0xf8,0x0,0x20,0xf0,0x0,0x60,0x20,0x8,0xfc,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x11,0x1d,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x80,0x80,0x84,0xfe,0x4,0x14,0xfc,0x14,0x14,0xf4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x8,0xfc,0x8,0x8,0x28,0x10,0x0,0xf8,0x8,0x90,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x1f,0x10,0x1f,0x10,0x1f,0x4,0x7f,0x4,0xff,0x4,0x9,0x35,0xc3,0x9,0x11,0x3,0xf0,0x10,0xf0,0x10,0xf0,0x40,0xfc,0x40,0xfe,0x40,0x20,0x5e,0x84,0x20,0x10,0x0,
-+0x8,0x10,0x22,0xd4,0x48,0x31,0x2a,0xcc,0x14,0x24,0xcc,0x14,0x64,0x4,0x28,0x10,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x8,0x8,0x1e,0x14,0x28,0x7f,0xaa,0x2a,0x3e,0x2a,0x2a,0x3e,0x0,0xe,0x70,0x20,0x40,0x40,0x44,0x7e,0x84,0x14,0xf4,0x94,0x94,0xf4,0x94,0x88,0x82,0x82,0x7e,0x0,
-+0x13,0x12,0x13,0x16,0x5b,0x51,0x57,0x91,0x1f,0x11,0x12,0x2d,0x28,0x41,0x82,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x10,0xfc,0x10,0xfe,0x10,0x48,0x56,0xe4,0x50,0x48,0xc0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x30,0x38,0x55,0x52,0x94,0x18,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x48,0x46,0x42,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x8,0xfd,0x11,0x11,0x21,0x25,0x3f,0x65,0xa4,0x25,0x27,0x24,0x3c,0x24,0x0,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x4,0xfc,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x0,0x12,0x51,0x50,0x90,0xf,0x0,0x44,0x7e,0x40,0x48,0x7c,0x40,0x44,0x7e,0x40,0x0,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x1,0x2,0x1f,0x11,0x11,0x1f,0x11,0x12,0x1f,0x5,0x9,0xff,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x4,0x4,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0x4,0x4,0x4,0x1c,0xe4,0x44,0x0,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x4,0x7c,0x4,0x7c,0x4,0x7c,0x6,0x4,0x3f,0x9,0x1f,0x1,0xff,0x1,0x1,0x1,0x88,0xfc,0x80,0xfc,0x80,0xfc,0x80,0x10,0xf8,0x0,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x4,0x4,0x7c,0x4,0x1c,0xe4,0x40,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x40,0x44,0x78,0x42,0x42,0x3e,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x2,0x4,0x8,0x30,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0x18,0x8,
-+0x10,0x10,0x11,0x1d,0x21,0x41,0xbd,0x11,0x11,0xfd,0x11,0x11,0x14,0x18,0x11,0x2,0x0,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x50,0x88,0x6,0x2,
-+0x8,0x8,0xf,0x10,0x12,0x31,0x51,0x9f,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x80,0x48,0xfc,0x0,0x18,0x10,0x24,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x44,0x29,0x11,0x29,0x49,0x89,0x9,0x19,0x29,0x49,0x89,0x8,0x8,0x51,0x22,0x0,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x50,0x88,0x6,0x2,
-+0x4,0x7,0x8,0x14,0x23,0x2,0xc,0x30,0xdf,0x11,0x11,0x1f,0x11,0x11,0x1f,0x10,0x0,0xf0,0x20,0x40,0x80,0x80,0x60,0x1e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x8,0xf,0x14,0x12,0x23,0xc,0x30,0xdf,0x11,0x1f,0x11,0x1f,0x2,0x29,0x28,0x47,0x0,0xe0,0x40,0x80,0x80,0x60,0x1e,0xf4,0x10,0xf0,0x10,0xf0,0x0,0x88,0x94,0xf4,
-+0x10,0x10,0x17,0x14,0x5a,0x51,0x51,0x9f,0x10,0x13,0x12,0x2a,0x26,0x46,0x83,0x2,0x80,0x48,0xfc,0x0,0x18,0x10,0x24,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x10,0x10,0x5,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x12,0x12,0x14,0x18,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0x20,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x1,0x1,0x7f,0x2,0x5,0x9,0x37,0xc1,0x9,0x8,0x7f,0x8,0x8,0x8,0x10,0x20,0x0,0x8,0xfc,0x80,0x40,0x30,0xce,0x4,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x4,0xff,0x4,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x2f,0xc1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xee,0x4,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x7f,0x5,0x5,0x5,0x9,0x9,0x11,0x2f,0xc1,0x1,0x1,0x1,0x0,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x20,0x20,0x10,0xee,0x4,0x0,0x0,0x0,
-+0x8,0xa,0x1f,0x28,0x45,0x1,0x7f,0x3,0x5,0x9,0x11,0x2f,0xc1,0x1,0x1,0x1,0x40,0x48,0x7c,0xa0,0x10,0x0,0xfc,0x80,0x40,0x20,0x10,0xee,0x4,0x0,0x0,0x0,
-+0x1,0x21,0x21,0x3f,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x4a,0x85,0x0,0x8,0x8,0xf8,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0xa8,0x10,
-+0x10,0x17,0x24,0x24,0x44,0xff,0x14,0x24,0x44,0xff,0x44,0x4,0x1c,0xe4,0x4a,0x11,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xc4,0x94,0x8,
-+0x0,0xff,0x1,0x7,0x19,0xe1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x41,0x81,0x4,0xfe,0x0,0x60,0x18,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10,
-+0x0,0xff,0x4,0x8,0x1f,0x28,0xc8,0xf,0x9,0x1,0x7d,0x5,0x9,0x11,0x61,0x3,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x8,0x18,0xa0,0x40,0x20,0x1e,0x4,0x0,
-+0x0,0x7a,0x4a,0x4b,0x48,0x7b,0x12,0x12,0x13,0x5a,0x52,0x53,0x5a,0xe2,0x44,0x9,0x40,0x44,0x44,0xfc,0x4,0xbe,0xa4,0xa4,0xbc,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xcc,
-+0x4,0x42,0x21,0x2f,0x2,0x2,0xe2,0x2f,0x22,0x22,0x22,0x22,0x24,0x58,0x8f,0x0,0x10,0x20,0x40,0xf8,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x26,0xfc,0x0,
-+0x0,0x4f,0x20,0x27,0x4,0x4,0xe7,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x50,0x8f,0x0,0x10,0xf8,0x0,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x6,0xfc,0x0,
-+0x1,0x1f,0x12,0x11,0x10,0x1f,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x0,0xff,0x4,0x18,0x10,0xf8,0x10,0x10,0x90,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0x40,
-+0x0,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x26,0x38,0x60,0x0,0x80,0x80,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x82,0x82,0x82,0x7e,0x0,
-+0x2,0x3f,0x22,0x22,0x3e,0x9,0xff,0x8,0x7f,0x41,0x5d,0x55,0x5d,0x41,0x7f,0x41,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xa,0x1f,0x28,0x45,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x1,0x1,0x0,0x20,0x28,0x7c,0xa0,0x10,0x7c,0x80,0x10,0x78,0x80,0x8,0x7c,0x80,0x2,0x2,0xfe,
-+0x8,0x8,0x10,0x13,0x22,0x4a,0x8a,0x12,0x33,0x52,0x93,0x12,0x14,0x14,0x19,0x16,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0x40,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x4,0xfe,0x11,0x7d,0x11,0x1f,0xf1,0x0,0x7f,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x8,0xff,0x9,0x2,0x3f,0x24,0x23,0x24,0x3f,0x0,0x20,0x3e,0x20,0x26,0x78,0x20,0x24,0xfe,0x20,0x10,0xf8,0x90,0x10,0x90,0xf0,0x0,0x88,0x98,0xa0,0xc4,0x84,0x7c,
-+0x4,0x4,0xff,0x4,0x49,0x2a,0xc,0x7f,0x49,0x49,0x5d,0x6b,0x49,0x49,0x41,0x43,0x40,0x44,0xfe,0x40,0x20,0x24,0x3e,0x44,0xa4,0x24,0x24,0x28,0x10,0x28,0x46,0x84,
-+0x20,0x20,0x20,0x3e,0x20,0x22,0x2c,0x70,0x21,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x98,0xe0,0x80,0x84,0x84,0x7c,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x20,0x3e,0x20,0x2e,0x30,0x0,0xff,0x10,0x1e,0x22,0x52,0xc,0x8,0x10,0x60,0x80,0x98,0xe0,0x80,0x88,0x78,0x4,0xfe,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,
-+0x0,0x20,0x24,0x3e,0x20,0x20,0x2e,0x30,0x4,0x12,0x50,0x51,0x96,0x18,0x67,0x0,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,0x40,0x88,0x6,0x12,0x10,0xf0,0x0,
-+0x0,0x3,0x7d,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x1,0x38,0xc0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0,
-+0x1,0x0,0x3f,0x20,0x24,0x24,0x24,0x24,0x27,0x24,0x24,0x24,0x25,0x4e,0x84,0x0,0x0,0x88,0xfc,0x0,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x1,0x0,0x3f,0x20,0xaf,0x68,0x2f,0x28,0x2f,0x60,0xbf,0x24,0x24,0x44,0x88,0x10,0x0,0x88,0xfc,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x0,0xfe,0x10,0x10,0x10,0x10,0x10,
-+0x20,0x1b,0x8,0x40,0x40,0x5f,0x40,0x41,0x42,0x44,0x48,0x50,0x40,0x42,0x41,0x40,0x4,0xfe,0x4,0x84,0xa4,0xf4,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x14,0x8,
-+0x8,0x49,0x2b,0x2c,0x9,0x7f,0x49,0x49,0x5d,0x5b,0x69,0x49,0x49,0x4b,0x40,0x41,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x44,0x48,0x28,0x10,0x28,0x48,0x86,0x4,
-+0x8,0x49,0x2a,0x8,0x7f,0x49,0x5d,0x6b,0x49,0x43,0x8,0xff,0x8,0x8,0x10,0x20,0x20,0x20,0x24,0x3e,0x44,0xc4,0x28,0x10,0x28,0x46,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x2,0x1,0x1,0x1,0x8,0x8,0x48,0x48,0x48,0x89,0xa,0xc,0x18,0x28,0x47,0x0,0x0,0x0,0x20,0x30,0x20,0x40,0x48,0x46,0x82,0x0,0x0,0x10,0x10,0x10,0xf0,0x0,
-+0x0,0x0,0x3e,0x23,0x22,0x22,0x3e,0x23,0x20,0x3e,0x23,0x62,0xa2,0x3e,0x20,0x0,0x40,0x20,0x8,0xfc,0x0,0x88,0x50,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,
-+0x2,0x3f,0x22,0x22,0x3e,0x21,0x3e,0x62,0xa2,0x3e,0x20,0x1f,0x0,0x0,0x7f,0x0,0x20,0x14,0xfe,0x44,0x28,0xfe,0x10,0xfe,0x10,0x90,0x80,0xf8,0x80,0x84,0xfe,0x0,
-+0x2,0x3f,0x22,0x3e,0x21,0x3e,0x62,0xbe,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x1,0x4f,0x29,0x9,0x9,0xf,0xe8,0x28,0x2f,0x39,0x29,0x29,0x2f,0x50,0x8f,0x0,0x20,0x90,0x14,0xfe,0x0,0x44,0x28,0xfe,0x10,0x10,0x7c,0x10,0x10,0x16,0xfc,0x0,
-+0x2,0x7a,0x4a,0x53,0x52,0x62,0x52,0x4b,0x48,0x48,0x68,0x53,0x40,0x40,0x4f,0x40,0x20,0x20,0x24,0xac,0x30,0x20,0xa4,0x1c,0x40,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x28,0x28,0xfe,0x29,0x3b,0x15,0x7d,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0x11,0x84,0xfe,0x90,0x7c,0x54,0x54,0x7c,0x54,0x54,0x7c,0x10,0x50,0x20,0x30,0x4e,0x84,
-+0x0,0x20,0x10,0x10,0x7,0x0,0xf0,0x10,0x11,0x11,0x11,0x12,0x14,0x28,0x47,0x0,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x8,0x8,0x8,0x50,0x20,0x6,0xfc,0x0,
-+0x10,0x10,0x23,0x22,0x4a,0xfb,0x12,0x22,0x43,0xf6,0x4a,0x3,0x1a,0xe2,0x42,0x2,0x80,0x48,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0xc,
-+0x4,0x7e,0x45,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x54,0x10,0x28,0x47,0x82,0x0,0x8,0x1c,0xe0,0x0,0x40,0x20,0xfc,0x4,0x8,0x10,0x20,0x40,0x80,0x46,0x3c,0x0,
-+0x1,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x19,0x29,0x2f,0x49,0x89,0x9,0x8,0x0,0x88,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x10,0x17,0x10,0x10,0x27,0x24,0x67,0xa4,0x27,0x24,0x22,0x21,0x20,0x21,0x22,0x2c,0x4,0xfe,0x40,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x44,0x40,0x40,0x80,0x60,0x1e,0x4,
-+0x2,0x1,0x7f,0x4,0x14,0x14,0x24,0x44,0x1f,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0x0,0x8,0xfc,0x40,0x50,0x48,0x4c,0x44,0xf0,0x20,0x40,0x80,0x0,0xc0,0x3c,0x8,
-+0x2,0x1,0x1,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0x10,0x10,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x10,0x10,0x7c,0x8,0x2a,0x2a,0xfe,0x12,0x10,0xfc,0x11,0x11,0x12,0x24,0x40,0x10,0x88,0x88,0xbe,0x84,0x94,0x94,0xbe,0x88,0x88,0xbe,0x8,0x8,0x8,0x8,0x8,
-+0x20,0x12,0x11,0x7d,0x8,0x2f,0x29,0xfd,0x11,0x11,0xfd,0x11,0x11,0x11,0x21,0x40,0x20,0x10,0x10,0x7c,0x8,0x28,0x28,0x7e,0x10,0x10,0x7c,0x10,0x50,0x90,0x10,0x10,
-+0x20,0x10,0x10,0x7d,0x9,0x2b,0x28,0xfc,0x11,0x13,0xfc,0x10,0x10,0x13,0x20,0x40,0x10,0x88,0x88,0x3e,0x4,0xd4,0x54,0xbe,0x8,0xc8,0x3e,0x8,0xc8,0x8,0x8,0x8,
-+0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x27,0x26,0x26,0x2b,0x2a,0x32,0x50,0x8f,0x0,0x80,0x48,0xfc,0x8,0x8,0xf8,0x0,0xf8,0xa8,0xa8,0xf8,0xa8,0xa8,0x6,0xfc,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x37,0x38,0x54,0x51,0x91,0x12,0x14,0x10,0x11,0x10,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x40,0x40,0x50,0x48,0x4c,0x44,0x40,0x40,0x80,
-+0x5,0x7,0x4,0x3f,0x24,0x27,0x3c,0x27,0x20,0x2f,0x29,0x29,0x29,0x49,0x90,0x20,0x0,0x84,0xc,0xd0,0xa0,0x4,0x8c,0x90,0x20,0x44,0xc,0x10,0x22,0x42,0xfe,0x0,
-+0x0,0x7b,0x48,0x48,0x49,0x79,0x49,0x49,0x48,0x79,0x48,0x4b,0x48,0x49,0x4a,0x98,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x24,0x22,0x60,
-+0x1,0x1,0x7f,0x1,0x3f,0x1,0x1,0xff,0x2,0x5,0xc,0x34,0xc4,0x5,0x6,0x4,0x0,0x8,0xfc,0x0,0xf8,0x0,0x4,0xfe,0x0,0x10,0xa0,0x40,0x30,0xe,0x4,0x0,
-+0x8,0x2a,0x1c,0x7f,0x49,0x5d,0x6b,0x47,0x8,0x3f,0x51,0x1f,0x11,0x1f,0x0,0xff,0x20,0x24,0x3e,0x44,0xa8,0x10,0x2e,0xc4,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,
-+0x49,0x2a,0x8,0x7f,0x49,0x5d,0x6b,0x49,0x43,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x20,0x20,0x24,0x3e,0x48,0xa8,0x10,0x2e,0x44,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0,
-+0x1,0x3f,0x21,0x21,0x21,0x3f,0x28,0x9,0xff,0x9,0x9,0x11,0x11,0x25,0x42,0x0,0x4,0x84,0x4,0x24,0x24,0x24,0x24,0x24,0xa4,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x3f,0x21,0xa7,0x64,0x27,0x24,0x27,0x64,0xa7,0x21,0x22,0x26,0x3b,0x42,0x81,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x20,0x10,0x6e,0x84,0x8,0xf8,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x31,0x39,0x52,0x52,0x94,0x10,0x10,0x10,0x10,0x10,0x80,0x82,0x82,0x84,0xe8,0x90,0x82,0xc2,0xa4,0x88,0x92,0x82,0x84,0x88,0x90,0xa0,
-+0x0,0x20,0x11,0x0,0xfc,0xb,0x48,0x28,0x29,0x11,0x29,0x25,0x45,0x81,0x3,0x0,0x10,0x10,0xf4,0x12,0x10,0xfe,0x10,0x50,0x50,0x70,0x50,0x48,0x48,0x6a,0x86,0x2,
-+0x2,0x42,0x2a,0x2b,0xa,0x8a,0x5f,0x2,0x2a,0x2a,0xd3,0x42,0x44,0x48,0x50,0x1,0x4,0xfe,0x10,0xa4,0x7e,0x44,0xd4,0x54,0x54,0xd4,0x54,0x54,0x10,0x28,0x46,0x82,
-+0x0,0x40,0x2f,0x28,0x10,0x83,0x52,0x13,0x12,0x22,0xe2,0x3f,0x20,0x23,0x22,0x24,0x80,0x40,0xfe,0x2,0x64,0x80,0x10,0xf8,0x20,0x20,0x24,0xfe,0x0,0x20,0x18,0x8,
-+0x2,0x1,0x3f,0x20,0x40,0xf,0x8,0xf,0x8,0x8,0x8,0xff,0x0,0xc,0x8,0x10,0x0,0x0,0xfc,0x4,0xe8,0x0,0x20,0xf0,0x40,0x40,0x44,0xfe,0x0,0x40,0x30,0x10,
-+0x10,0x10,0x17,0x14,0xfc,0x11,0x15,0x19,0x31,0xd1,0x11,0x1f,0x10,0x11,0x51,0x22,0x40,0x20,0xfe,0x2,0x34,0xc0,0x10,0xf8,0x10,0x10,0x14,0xfe,0x0,0x90,0xc,0x4,
-+0x0,0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xff,0x0,0x4,0xc,0x10,0x20,0x20,0xf0,0x0,0x0,0x0,0x10,0xf8,0x40,0x40,0x44,0xfe,0x0,0x40,0x30,0x18,0x8,
-+0x0,0x40,0x30,0x10,0x0,0xf,0x11,0x12,0x22,0xe4,0x24,0x28,0x30,0x20,0x22,0x21,0x80,0x80,0x84,0x8c,0x90,0xa0,0xc0,0xc0,0xa0,0x90,0x88,0x8e,0x84,0x80,0x80,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x33,0x3a,0x56,0x52,0x92,0x13,0x12,0x12,0x12,0x12,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x64,0x9c,0xc,0x4,0x4,0x14,0x8,
-+0x0,0x0,0xff,0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x22,0x24,0x28,0x20,0x20,0x20,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x8,0x8,0x88,0x48,0x28,0x28,0x8,0x28,0x10,
-+0x0,0x3f,0x1,0x7f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x3,0x5,0x9,0x11,0x61,0x1,0x78,0x80,0x8,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x20,0x21,0x20,0x3c,0x47,0x48,0xa0,0x20,0x27,0x20,0x20,0x24,0x28,0x31,0x22,0x4,0x0,0x8,0x90,0x0,0xfc,0x90,0x90,0x94,0xfe,0x90,0x90,0x90,0x90,0x10,0x10,0x10,
-+0x0,0x20,0x2f,0x20,0x28,0xb0,0xa7,0xa4,0x24,0x24,0x24,0x25,0x54,0x4c,0x84,0x4,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x64,0x94,0x14,0x4,0x4,0x14,0x8,
-+0x0,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x37,0x54,0x94,0x14,0x25,0x24,0x44,0x4,0x80,0x44,0xfe,0x0,0x8,0xfc,0x40,0x44,0xfe,0x44,0x44,0xa4,0x14,0x4,0x14,0x8,
-+0x10,0xc,0x4,0x3f,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x10,0x30,0x40,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x8,0xfc,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x1e,0xf2,0x42,0x4,0x8,0x3,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x4,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x8,0xff,0x8,0x20,0x13,0x92,0x42,0xa,0x12,0xe2,0x24,0x24,0x24,0x29,0x32,0x20,0x24,0xfe,0x20,0x20,0xfe,0x22,0x24,0xf8,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x13,0x10,0x12,0xfd,0x17,0x11,0x1a,0x34,0xd3,0x12,0x12,0x13,0x12,0x52,0x23,0x38,0xc0,0x44,0x4c,0x50,0xfe,0x50,0x4e,0x44,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,
-+0x10,0x10,0x12,0x12,0xff,0x10,0x14,0x18,0x11,0x31,0xd2,0x12,0x14,0x18,0x51,0x22,0x40,0x50,0x48,0x40,0xfe,0x80,0x80,0xf8,0x8,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x20,0x20,0x20,0x38,0x47,0x80,0x78,0x20,0x21,0xfa,0x24,0x21,0x28,0x30,0x20,0x0,0x40,0x40,0x40,0x48,0xfc,0x40,0xe0,0xd0,0x48,0x4e,0x44,0xf0,0x40,0x40,0x40,0x40,
-+0x0,0x40,0x30,0x17,0x4,0x84,0x44,0xf,0x14,0x25,0xe4,0x24,0x28,0x29,0x32,0x24,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4,
-+0x20,0x20,0x2f,0x20,0x27,0xfc,0x27,0x24,0x27,0x24,0x20,0x2f,0x22,0x21,0x20,0x20,0x50,0x48,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x8,0xa,0x7f,0x8,0x8,0x7f,0x41,0x82,0x3e,0x4,0x8,0x7e,0x8,0x8,0x29,0x12,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x10,0x10,0x17,0x10,0xfb,0x12,0x13,0x1a,0x33,0xd2,0x10,0x1f,0x12,0x11,0x50,0x20,0x50,0x48,0xfc,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x11,0x11,0x15,0x19,0x11,0x0,0x40,0x40,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x20,0x10,0x83,0x42,0xa,0x13,0xe2,0x22,0x22,0x23,0x22,0x40,0x44,0x7e,0xa0,0x10,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x11,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x40,0x40,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x11,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x1,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0x0,
-+0x8,0x8,0x12,0x3f,0x22,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x4a,0x84,0x20,0x20,0x44,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,
-+0x8,0x7c,0x4b,0x48,0x4b,0x7a,0x4c,0x49,0x48,0x78,0x4f,0x48,0x48,0x48,0x49,0x98,0x40,0x48,0xfc,0x40,0xfc,0x4,0x8,0xf0,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x8,0x7c,0x4f,0x48,0x4b,0x7a,0x4b,0x4a,0x4b,0x7a,0x48,0x4f,0x4a,0x49,0x48,0x98,0x50,0x48,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x2,0x42,0x32,0x1f,0x82,0x5f,0x50,0xf,0x11,0x22,0xe3,0x2e,0x22,0x22,0x2a,0x25,0x10,0x10,0x90,0xd4,0x3e,0xd4,0x54,0x94,0x14,0x24,0xa4,0x24,0x44,0x44,0x94,0x8,
-+0x0,0x40,0x30,0x13,0x82,0x62,0x22,0xa,0x13,0x22,0xe2,0x22,0x22,0x23,0x22,0x20,0x40,0x40,0x88,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,
-+0x4,0x7f,0x4,0x24,0x24,0x24,0x24,0x25,0x3e,0x2,0x2,0x1e,0xe2,0x42,0xb,0x4,0x0,0x8,0x88,0x50,0x20,0x50,0x88,0x8,0x4,0x8c,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x20,0x20,0x20,0x2f,0xf8,0x27,0x24,0x2c,0x37,0xe4,0x24,0x27,0x24,0x24,0xa4,0x44,0x40,0x50,0x48,0xfe,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8,
-+0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x10,0x78,0x57,0x50,0x57,0x54,0x54,0x57,0x54,0x54,0x77,0x54,0x4,0x4,0x4,0x40,0x50,0x48,0xfe,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8,
-+0x10,0x8,0x8,0x2,0xfe,0x4,0x8,0xa,0x1c,0x2a,0x48,0x88,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x20,0x21,0x23,0x22,0xfb,0x22,0x23,0x22,0x23,0x22,0x38,0xe7,0x40,0x0,0x0,0x0,0x80,0x8,0xfc,0x8,0xf8,0x0,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0xff,0x0,0x0,0x1,0x1,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x1,0x1,0x4,0xfe,0x80,0x80,0x0,0x0,0x40,0x20,0x18,0xc,0x4,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x2,0xff,0x4,0x9,0x11,0x3f,0x51,0x91,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,
-+0x1,0x9,0x9,0x9,0x9,0x9,0xff,0x1,0x9,0xd,0x11,0x21,0x0,0x3,0xc,0x70,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x10,0x18,0x20,0x20,0xc0,0x0,0x0,0x0,
-+0x10,0x3e,0x49,0x0,0x27,0x10,0x13,0x82,0x43,0xa,0x13,0xe2,0x2f,0x21,0x20,0x20,0x40,0xfc,0x20,0x48,0xfc,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0xfe,0x10,0x90,0x30,
-+0x10,0x8,0x2,0x7f,0x0,0x22,0x14,0xff,0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x10,0x10,0x10,0x13,0x58,0x55,0x51,0x93,0x15,0x19,0x11,0x11,0x11,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x80,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,0x20,
-+0x20,0x20,0x2f,0x2a,0xfb,0x26,0x25,0x2b,0x32,0xe5,0x28,0x27,0x22,0x22,0xa5,0x40,0x80,0x40,0xfe,0x2,0xbc,0xa4,0x28,0x18,0x8,0xf6,0x0,0xfc,0x48,0x44,0x44,0x80,
-+0x0,0x48,0x2f,0x10,0x2b,0x48,0xf,0x18,0x2b,0x4a,0x8b,0xa,0xb,0xa,0x52,0x22,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x18,
-+0x4,0x4,0x3f,0x4,0xff,0x10,0x8,0x7f,0x8,0x11,0x3a,0x54,0x93,0x19,0x11,0x2,0x40,0x50,0x48,0x40,0xfe,0x40,0x44,0x44,0x48,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x48,0x89,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x30,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x0,0x0,0x0,0xff,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x2,0x1,0x80,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,
-+0x4,0x7e,0x44,0x54,0x57,0x54,0x54,0x54,0x54,0x54,0x55,0x2a,0x24,0x44,0x80,0x0,0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x8,0x7f,0x48,0x4a,0x49,0x78,0x48,0x4f,0x48,0x78,0x48,0x49,0x4a,0x7c,0x48,0x0,0x1c,0xe0,0x88,0x48,0x50,0x0,0x44,0xfe,0x40,0xc0,0xe0,0x50,0x4e,0x44,0x40,0x40,
-+0x4,0x7f,0x44,0x45,0x44,0x7c,0x10,0x13,0x5c,0x50,0x50,0x50,0x5d,0xe2,0x40,0x0,0x1c,0xe0,0x44,0x26,0xa8,0x0,0x24,0xfe,0x20,0x60,0x70,0xa8,0x26,0x24,0x20,0x20,
-+0x0,0x0,0x7f,0x0,0x11,0x8,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x1,0x8,0x7c,0x80,0x8,0x18,0xa0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,0x0,
-+0x1,0xe,0xf1,0x49,0x2a,0x20,0x8,0xff,0x8,0x1c,0x1b,0x29,0x48,0x88,0x8,0x8,0x0,0x8,0x18,0x20,0x40,0x84,0xc,0x10,0x20,0x40,0x4,0xc,0x10,0x20,0x40,0x80,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x12,0x9,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x40,0x44,0xfe,0x40,0x38,0xc0,0x10,0x20,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x4,0x4,0xff,0x14,0x16,0x12,0x2c,0x68,0x17,0x20,0x5f,0x81,0x9,0x19,0x21,0x3,0x40,0x44,0xfe,0x40,0xf8,0x90,0x60,0x20,0xd0,0xe,0xf4,0x0,0x20,0x18,0x8,0x0,
-+0x10,0x1e,0x10,0x3e,0x44,0x29,0x12,0x65,0xf,0x38,0xcf,0x8,0xf,0xa,0x9,0xc,0x0,0xf8,0x88,0x50,0x20,0x50,0x8c,0x44,0xe0,0x3e,0xe4,0x20,0xe0,0x10,0xa0,0x78,
-+0x2,0x2,0x4,0x1f,0x2,0xff,0x4,0x8,0x13,0x2c,0xc1,0xe,0x0,0x1,0xe,0x70,0x0,0x40,0x20,0xf0,0x4,0xfe,0x40,0xa0,0x10,0x4e,0x84,0x10,0x60,0x80,0x0,0x0,
-+0x0,0x3f,0x1,0x1,0xff,0x2,0x5,0x9,0x3f,0xd1,0x11,0x1f,0x1,0x1,0x3f,0x0,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0xfe,0x14,0x10,0xf0,0x0,0x10,0xf8,0x8,
-+0x0,0x4,0x7e,0x10,0x10,0x1f,0x22,0x22,0x65,0x94,0x8,0x8,0x10,0x20,0x43,0x80,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x21,0x21,0x21,0x2f,0xb2,0xad,0xa5,0x2f,0x21,0x21,0x21,0x2f,0x25,0x21,0x21,0x21,0x0,0x6,0x38,0xe0,0x20,0x20,0x3e,0xe8,0x28,0x28,0xe8,0x28,0x48,0x48,0x88,0x8,
-+0x20,0x20,0x21,0x27,0xb0,0xaf,0xa1,0x22,0x24,0x39,0x22,0x20,0x23,0x20,0x20,0x27,0x80,0xa0,0x10,0xf8,0x80,0xfe,0x20,0x50,0x8e,0x24,0x40,0x88,0x10,0x20,0xc0,0x0,
-+0x10,0x10,0x10,0x14,0x54,0x59,0x51,0x91,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x1,0x20,0x20,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x4,0x4,0xff,0x4,0x1,0x2,0x4,0x18,0x6f,0x88,0x8,0x8,0x8,0x8,0x7,0x0,0x40,0x44,0xfe,0x40,0x0,0x80,0x40,0x30,0xee,0x24,0xa0,0x40,0x10,0x10,0xf0,0x0,
-+0x8,0x10,0x3c,0x24,0x34,0x2d,0x26,0xfc,0x24,0x34,0x2c,0x24,0x24,0x24,0x54,0x88,0x20,0x20,0x50,0x50,0x88,0x6,0x4,0xf8,0x88,0x88,0xa8,0x90,0x80,0x84,0x84,0x7c,
-+0x1,0x1,0x2,0x2,0x4,0x8,0x30,0xcf,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x80,0x80,0x40,0x20,0x1e,0xe4,0x20,0x20,0xa0,0x40,0x8,0x8,0xf8,0x0,
-+0x0,0x40,0x31,0x11,0x82,0x44,0x48,0x13,0x12,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0xf4,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x4,0xff,0x4,0x4,0x5f,0x50,0x57,0x75,0x17,0x74,0x57,0x55,0x95,0x27,0x44,0x80,0x84,0xfe,0xa8,0xa4,0xfe,0x20,0xa0,0x24,0xa4,0xa4,0xa8,0x28,0x10,0xb2,0x4a,0x86,
-+0x10,0x11,0x11,0x11,0xfc,0x17,0x14,0x1f,0x30,0xd0,0x1f,0x10,0x11,0x12,0x54,0x20,0x10,0xf8,0x10,0xf0,0x4,0xbe,0xa4,0xbc,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x10,0x10,0x55,0x39,0x10,0xfc,0x10,0x33,0x39,0x55,0x91,0x11,0x11,0x12,0x14,0x10,0x10,0x50,0x50,0x7c,0x90,0x10,0xfe,0x4,0x7e,0x44,0x44,0x44,0x7c,0x80,0x7e,0x0,
-+0x10,0x10,0x17,0x10,0xff,0x12,0x33,0x3a,0x57,0x54,0x91,0x11,0x11,0x11,0x11,0x11,0x90,0x94,0xfe,0x90,0xfc,0x94,0xfc,0x94,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x3f,0x24,0x3f,0x24,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x44,0xfe,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x8,0x8,0x7f,0x8,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x1,0x1,0x20,0x28,0xfc,0x20,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x2f,0x28,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x22,0x45,0x44,0x88,0x10,0x4,0xfe,0x0,0x84,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x4,0x84,0x94,0x8,
-+0x10,0x3e,0x50,0x9,0x1,0xff,0x1,0x3f,0x21,0x23,0x25,0x5,0x9,0x11,0x61,0x1,0x20,0x7c,0xa0,0x10,0x4,0xfe,0x8,0xfc,0x8,0x88,0x58,0x20,0x10,0xe,0x4,0x0,
-+0x10,0x10,0x17,0x24,0x25,0x65,0xa5,0x25,0x25,0x25,0x25,0x21,0x22,0x24,0x28,0x20,0x0,0x44,0xe4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x44,0x4,0x84,0x44,0x14,0x8,
-+0x2,0x1f,0x12,0x12,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x12,0x12,0x26,0x41,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0xfe,0x48,0x48,0x48,0x48,0x48,0x48,0xa8,0x10,
-+0x0,0x40,0x27,0x24,0x85,0x65,0x25,0xd,0x15,0x25,0xe5,0x21,0x22,0x24,0x28,0x20,0x0,0x44,0xe4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x4,0x84,0x44,0x54,0x8,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x17,0x10,0x10,0x1f,0x11,0x22,0x24,0x4f,0x80,0x4,0xfe,0x4,0x4,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x10,0x8,0xfc,0x4,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x7a,0x12,0x53,0x5c,0x51,0x51,0x5d,0xf1,0x41,0x1,0x88,0x50,0x0,0xfe,0x22,0xaa,0x72,0x22,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,
-+0x10,0x10,0x17,0x10,0xf8,0x17,0x10,0x19,0x36,0xd4,0x14,0x17,0x14,0x14,0x57,0x24,0x10,0x38,0xc0,0x40,0x44,0xfe,0x40,0x44,0x5e,0x44,0x44,0x5c,0x44,0x44,0xfc,0x4,
-+0x0,0x0,0x3f,0x0,0x12,0x11,0x9,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0xf8,0x8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x8,0x8,0xff,0xa,0x2,0xff,0x4,0x8,0x10,0x17,0x30,0x50,0x90,0x10,0x1f,0x10,0x20,0x24,0xfe,0x20,0x4,0xfe,0x0,0x40,0x48,0xfc,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x1,0x2,0x4,0x19,0x21,0xdf,0x1,0x9,0x19,0x21,0x5,0x2,0x40,0x44,0xfe,0x40,0x0,0x80,0x40,0x30,0xe,0xf4,0x0,0x20,0x18,0x8,0x0,0x0,
-+0x1,0x1,0xff,0x5,0x9,0x11,0x3f,0xd0,0x10,0x1f,0x10,0x10,0x1f,0x0,0xff,0x0,0x0,0x4,0xfe,0x40,0x20,0x10,0xfe,0x14,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x0,
-+0x0,0x8,0xfc,0x17,0x10,0x21,0x22,0x7c,0xab,0x2a,0x2b,0x2a,0x2b,0x38,0x27,0x0,0x40,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x0,
-+0x11,0x11,0x17,0x11,0xfc,0x10,0x15,0x1a,0x34,0xd3,0x10,0x12,0x12,0x14,0x51,0x20,0x10,0x10,0xfc,0x10,0x40,0xa0,0x10,0x4e,0x44,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x2,0x1,0x7f,0x48,0x8e,0x12,0x2c,0x68,0x17,0x20,0x5f,0x81,0x9,0x11,0x25,0x2,0x0,0x0,0xfe,0x2,0xf4,0x90,0x60,0x20,0xd0,0xe,0xf4,0x0,0x20,0x18,0x8,0x0,
-+0x0,0x4,0x8,0x10,0x2f,0xc4,0x4,0x8,0x30,0x1,0x21,0x21,0x21,0x21,0x3f,0x20,0x80,0x40,0x20,0x10,0xee,0x24,0x20,0xa0,0x40,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x2,0xff,0x4,0x8,0x17,0x20,0x40,0x80,0x1f,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x20,0xf0,0x80,0x80,0x88,0xfc,
-+0x0,0x40,0x37,0x14,0x0,0x0,0xf7,0x10,0x10,0x10,0x17,0x10,0x14,0x18,0x10,0x0,0x80,0x40,0xfe,0x2,0x24,0x70,0x80,0x80,0x88,0xfc,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x11,0x1d,0x31,0xd1,0x11,0x11,0x11,0x12,0x54,0x20,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x20,0x20,0x30,0x2c,0x24,0x20,0x20,0x20,0x20,
-+0x8,0x8,0x28,0x2e,0x28,0x28,0x2e,0x71,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x1,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,0xff,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x4,0x8,0x12,0xea,0x2c,0x29,0x14,0xe6,0xa,0x12,0x66,0xa,0x13,0xe2,0x14,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x18,0x28,0x48,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x11,0x12,0xff,0x12,0x16,0x1b,0x30,0xd1,0x12,0x1c,0x10,0x11,0x50,0x20,0x40,0x80,0xf0,0x20,0xf8,0x48,0x48,0xf8,0xa0,0x22,0x1e,0xc0,0x30,0x80,0x60,0x10,
-+0x10,0x10,0x11,0x13,0xf8,0x17,0x10,0x19,0x32,0xd4,0x19,0x12,0x10,0x11,0x50,0x23,0x80,0xa0,0x10,0xf8,0x80,0xfe,0xa0,0x10,0x48,0x8e,0x24,0x40,0x90,0x20,0x40,0x80,
-+0x11,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x7d,0x11,0x14,0x1f,0xe4,0x40,0x0,0x0,0x4,0x8c,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20,
-+0x20,0x20,0x20,0x39,0x4b,0x56,0x82,0x23,0x20,0x21,0x26,0x20,0x28,0x31,0x20,0x0,0x80,0x80,0xf0,0x20,0xf8,0x48,0x48,0xf8,0xa2,0x22,0x1e,0xc0,0x30,0x80,0x60,0x10,
-+0x1,0x21,0x11,0x12,0x7,0x2,0xf2,0x13,0x10,0x11,0x16,0x10,0x10,0x15,0x18,0x0,0x0,0x0,0xf0,0x20,0xf8,0x48,0x48,0xf8,0xa2,0x22,0x1e,0xc0,0x30,0x80,0x60,0x10,
-+0x10,0x10,0x27,0x24,0x4d,0xf5,0x25,0x45,0xfd,0x5,0x5,0x1c,0xe5,0x48,0x13,0x20,0x40,0x24,0xfe,0x0,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x10,0x10,0x10,0x1d,0x20,0x20,0x7c,0x91,0x11,0xfd,0x11,0x11,0x15,0x19,0x12,0x4,0x20,0x10,0x4,0xfe,0x0,0x84,0x48,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x1,0x1,0x7f,0x8,0x4,0x4,0x1f,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x8,0xfc,0x10,0x20,0x48,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x17,0x50,0x44,0x42,0x4f,0x49,0x4f,0x49,0x4f,0x41,0x5f,0x41,0x41,0x41,0x40,0x4,0xfe,0x4,0x44,0x84,0xe4,0x24,0xe4,0x24,0xe4,0x4,0xf4,0x4,0x4,0x4,0xc,
-+0x8,0xff,0x0,0x7f,0x55,0x5d,0x55,0x7f,0x0,0x3e,0x32,0x2a,0x3e,0x0,0xff,0x0,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x46,0x82,
-+0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x1,0x45,0x29,0x11,0x29,0x49,0x9,0x18,0x2b,0x4a,0x8a,0xb,0xa,0xa,0x53,0x22,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x20,0x27,0x20,0x20,0xf8,0x21,0x27,0x21,0x21,0x21,0x3a,0xe2,0x44,0x8,0x11,0x0,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x1,0x11,0x9,0x1,0x7f,0x40,0x80,0x1f,0x0,0x0,0x7f,0x2,0x4,0x8,0x1f,0x0,0x0,0x10,0x20,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x40,0x20,0xf0,0x10,
-+0x1,0x11,0x9,0x7f,0x40,0x8f,0x8,0xf,0x1,0x1f,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x10,0x20,0xfe,0x2,0xe4,0x20,0xe0,0x10,0xf8,0x10,0x10,0x10,0x50,0x20,0x0,
-+0x8,0x8,0x8,0x8,0x8,0x9,0x8,0xff,0x9,0x9,0x8,0x8,0x8,0x9,0xe,0x8,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0xfe,0x0,0x0,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x8,0xa,0x9,0x10,0x17,0x34,0x58,0x93,0x10,0x10,0x1f,0x10,0x10,0x11,0x13,0x10,0x40,0x48,0x50,0x40,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x40,0x90,0x8,0xfc,0x4,
-+0x8,0x7f,0x48,0x48,0x48,0x79,0x4b,0x48,0x48,0x79,0x49,0x4a,0x4c,0x48,0x49,0x98,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x94,0x94,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x49,0x29,0x2a,0x8,0x7f,0x41,0x41,0x5d,0x55,0x55,0x55,0x5d,0x41,0x45,0x42,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x10,0x13,0x10,0x7c,0x54,0x55,0x57,0x7c,0x54,0x55,0x55,0x7e,0x54,0x10,0x11,0x10,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x94,0x94,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x1,0x9,0x7d,0x49,0x49,0x49,0x49,0x48,0x4b,0x4a,0x7a,0x4b,0x2,0x2,0x3,0x2,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x13,0x12,0x12,0x23,0x22,0x62,0xa3,0x20,0x27,0x24,0x24,0x27,0x24,0x24,0x27,0x24,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x10,0x7c,0x10,0x10,0xfd,0x12,0x51,0x5d,0x51,0x51,0x71,0x48,0x87,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x10,0x0,0xf8,0x8,0x8,0x8,0xf8,0x6,0xfc,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x15,0x1a,0x32,0xd4,0x10,0x10,0x10,0x10,0x50,0x27,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x50,0x10,0x20,0xc0,0x0,
-+0x10,0x10,0x10,0x1c,0x21,0x21,0x7d,0x92,0x12,0x7c,0x10,0x10,0x14,0x18,0x10,0x7,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x50,0x10,0x20,0xc0,0x0,
-+0x8,0xa,0x7f,0x8,0x9,0x7f,0x41,0x7f,0x41,0x7f,0x48,0xa,0xff,0x8,0x8,0x9,0x4,0x7e,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x94,0x8,
-+0x2,0x22,0xff,0xa2,0xa2,0xaf,0xa8,0xaf,0xa8,0xaf,0xaa,0xe2,0xbf,0x2,0x2,0x2,0x4,0x3e,0xa4,0x24,0xa4,0xfc,0xa4,0xa4,0xa4,0xbc,0x24,0xa4,0xe4,0x24,0x44,0x8c,
-+0x2,0x42,0x2f,0x22,0x2,0x8f,0x48,0x4f,0x8,0x1f,0x2a,0xe2,0x3f,0x22,0x22,0x22,0x4,0x3e,0xa4,0x24,0xa4,0xfc,0xa4,0xa4,0xa4,0xbc,0x24,0xa4,0xe4,0x24,0x44,0x8c,
-+0x11,0x11,0x22,0x11,0x3f,0x21,0x3f,0x21,0x3f,0x1,0xff,0x5,0x9,0x11,0x61,0x1,0x10,0x10,0x20,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x0,0x8,0x7c,0x48,0x49,0x49,0x49,0x4a,0x4a,0x4c,0x48,0x78,0x48,0x0,0x0,0x7,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x10,0x10,0x20,0xc0,0x0,
-+0x10,0x10,0x10,0x10,0x55,0x59,0x51,0x92,0x12,0x14,0x10,0x28,0x24,0x44,0x80,0x7,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x10,0x10,0x20,0xc0,0x0,
-+0x2,0x2,0x7f,0x4,0x9,0x11,0x21,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0x0,0x0,0x20,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x10,0xfc,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x17,0x50,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x3c,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x22,0x21,0x2f,0x22,0xf4,0x2f,0x20,0x37,0x24,0xe7,0x24,0x27,0x24,0x24,0xa4,0x45,0x10,0x10,0xd0,0x14,0xbe,0xc4,0x24,0xa8,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0xc6,0x84,
-+0x25,0x3f,0x44,0xbf,0x4,0x3f,0x24,0x25,0x0,0x3f,0x1,0x1f,0x1,0x7f,0x1,0x3,0x4,0x84,0x24,0xa4,0x24,0xa4,0xa4,0x8c,0x30,0xc0,0x0,0xf0,0x0,0xfc,0x0,0x0,
-+0x10,0x12,0x12,0x22,0x42,0x92,0x13,0x2e,0x62,0xa2,0x22,0x23,0x20,0x20,0x21,0x22,0x0,0x4,0xfe,0x24,0x24,0xa4,0xe4,0x24,0x24,0x64,0xa4,0x24,0x44,0x84,0x28,0x10,
-+0x2,0x41,0x2f,0x22,0x4,0x8f,0x40,0x47,0x14,0x27,0xe4,0x27,0x24,0x24,0x24,0x25,0x10,0x10,0xd0,0x14,0xbe,0xc4,0x24,0xa8,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0xc6,0x84,
-+0x11,0x11,0x11,0x11,0xff,0x11,0x33,0x3b,0x55,0x55,0x99,0x11,0x11,0x11,0x11,0x11,0x0,0x3e,0x22,0x24,0xe4,0x28,0x28,0xa4,0x62,0x22,0x22,0x32,0x2a,0x24,0x20,0x20,
-+0x0,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x3f,0x21,0x21,0x21,0x21,0x3f,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x8,0xfc,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x25,0x25,0x24,0x24,0x44,0x45,0x86,0x4,0x10,0xf8,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,0x10,0xa0,0x40,0x30,0xe,0x4,0x0,
-+0x1,0x1,0x5,0xd,0x11,0x21,0x41,0x0,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x40,0x20,0x18,0xc,0x4,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,
-+0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x25,0x44,0x44,0x87,0x4,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0xf0,0x4,0xfe,0x8,0x90,0x60,0x1e,0x4,
-+0x10,0x10,0x10,0x10,0x53,0x5a,0x54,0x90,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x40,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0x40,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x40,0x37,0x14,0x84,0x68,0x21,0x9,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x28,0x0,0x0,0xfc,0x4,0x8,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x78,0x48,0x57,0x50,0x60,0x51,0x4a,0x4b,0x48,0x69,0x51,0x42,0x44,0x40,0x40,0x40,0x40,0x44,0xfe,0x80,0xa0,0x20,0x28,0xfc,0x20,0x28,0x24,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x10,0x7d,0x11,0x12,0xfc,0x11,0x10,0x5c,0x51,0x50,0x70,0x48,0x87,0x0,0x40,0x40,0xa0,0x10,0x28,0x6e,0x84,0x20,0x60,0x88,0x18,0x20,0x40,0x86,0xfc,0x0,
-+0x20,0x10,0x10,0x0,0xfc,0xb,0x10,0x34,0x59,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x12,0x11,0x17,0x14,0xf9,0x11,0x11,0x18,0x37,0xd0,0x13,0x10,0x17,0x10,0x51,0x20,0x48,0x50,0xfe,0x2,0xf4,0x10,0xf0,0x18,0xe0,0x40,0xf8,0x40,0xfc,0x40,0x40,0x80,
-+0x4,0xe,0x78,0x8,0x9,0xfe,0x8,0x1c,0x1a,0x28,0x29,0x49,0x8a,0x8,0x8,0x8,0x40,0x40,0x80,0x80,0xfe,0x4,0x28,0x20,0xa8,0xa4,0x26,0x22,0x20,0x20,0xa0,0x40,
-+0x20,0x20,0x20,0x27,0xfc,0x24,0x24,0x27,0x24,0x24,0x3c,0xe6,0x45,0x4,0x8,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x90,0x30,0x4a,0x8a,0x6,
-+0x10,0x13,0x10,0x12,0xfd,0x12,0x37,0x38,0x57,0x52,0x92,0x13,0x11,0x10,0x1f,0x10,0x0,0xa8,0xb4,0xa8,0x10,0x8,0xfe,0x4,0xf8,0x8,0x8,0xf8,0x10,0xa0,0xfe,0x0,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x3e,0x22,0x22,0x22,0x2a,0x24,0x40,0x81,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x62,0x92,0xa,0x6,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x8,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x0,0x0,0x1f,0x1,0xff,0x5,0x3d,0x5,0xd,0x75,0x3,0x5,0x9,0x11,0x61,0x1,0x20,0xf0,0x0,0x4,0xfe,0x40,0x58,0x60,0x44,0x3c,0x80,0x40,0x30,0x1c,0x8,0x0,
-+0x8,0x1d,0xf1,0x11,0x11,0xff,0x11,0x38,0x37,0x54,0x50,0x91,0x10,0x10,0x17,0x10,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x0,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x1b,0x20,0x40,0x12,0x1a,0x32,0x52,0x97,0x10,0x2a,0x29,0x28,0x48,0x7,0x0,0x8,0xfc,0x40,0x50,0x78,0x40,0x40,0x48,0xfc,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0,
-+0x0,0x47,0x31,0x15,0x82,0x44,0x4f,0x10,0x17,0x24,0xe4,0x27,0x22,0x21,0x3f,0x20,0x0,0x50,0x68,0x50,0x20,0x10,0xfe,0x4,0xf0,0x10,0x10,0xf0,0x20,0x44,0xfe,0x0,
-+0x0,0x40,0x20,0x27,0x4,0x4,0xe4,0x27,0x24,0x24,0x24,0x2e,0x35,0x24,0x8,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x90,0x30,0x4a,0x8a,0x6,
-+0x1f,0x0,0x1,0x1,0x79,0xf,0x9,0x11,0x17,0x21,0x21,0x4f,0x81,0x1,0x5,0x2,0xf0,0x20,0x40,0x84,0x2c,0xf0,0x20,0x10,0xd0,0x8,0x4e,0xe4,0x0,0x0,0x0,0x0,
-+0x0,0x47,0x24,0x24,0x7,0x0,0xef,0x20,0x20,0x27,0x20,0x20,0x2f,0x50,0x8f,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0xf8,0x80,0xa0,0xf0,0x80,0x90,0xf8,0x6,0xfc,0x0,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x48,0x7f,0x4,0x5,0x1c,0xe4,0x44,0x14,0x8,0x20,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x4,0xfe,0x80,0xfc,0x4,0x4,0x4,0x28,0x10,
-+0x8,0x1c,0xf1,0x10,0x11,0xfc,0x10,0x38,0x37,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x0,0x8,0xfc,0x20,0x24,0xa4,0xa8,0x20,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x8,0x7c,0x48,0x49,0x4a,0x4d,0x48,0x48,0x48,0x48,0x79,0x4a,0x2,0x1,0x0,0x80,0x80,0x88,0xfc,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x1,0x0,0x1f,0x12,0x92,0x53,0x55,0x19,0x31,0x5f,0xd1,0x11,0x12,0x22,0x44,0x8,0x0,0x84,0xfe,0x0,0x4,0xfe,0x24,0x24,0x24,0xe4,0x24,0x24,0xa4,0x7c,0x24,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x17,0x18,0x30,0xd7,0x12,0x11,0x11,0x10,0x50,0x20,0x40,0x40,0x50,0xf8,0x40,0x48,0xfc,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x3f,0x22,0x22,0x3e,0x22,0x3e,0x2,0xff,0x8,0x2a,0x2f,0x28,0x58,0x87,0x0,0x40,0x40,0x40,0x40,0x48,0x58,0x60,0x40,0x40,0x44,0x44,0x3c,0x0,0x6,0xfc,0x0,
-+0x0,0x40,0x32,0x12,0x82,0x63,0x2e,0x2,0x12,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x40,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x48,0x48,0x68,0x50,0x42,0x2,0xfe,0x0,
-+0x0,0x43,0x22,0x22,0x2,0x3,0xe2,0x22,0x22,0x22,0x22,0x24,0x28,0x50,0x8f,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x80,0x80,0x40,0x20,0x1c,0x0,0x6,0xfc,0x0,
-+0x8,0x7c,0x9,0x9,0x9,0x79,0x41,0x47,0x41,0x79,0x9,0x9,0x9,0x9,0x50,0x20,0x20,0x20,0x20,0x20,0x24,0x3e,0xe4,0x24,0x24,0x24,0x34,0x28,0x22,0x2,0xfe,0x0,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x4b,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x28,0x10,0x20,0x20,0x20,0x20,0x24,0x3e,0xe4,0x24,0x24,0x24,0x34,0x28,0x22,0x2,0xfe,0x0,
-+0x2,0xff,0x24,0x24,0x3c,0x24,0x24,0x3c,0x24,0x24,0x3f,0xe4,0x44,0x7,0x4,0x4,0x10,0x10,0x10,0x90,0x94,0x9e,0x90,0x90,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,0x0,
-+0x1,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x21,0x21,0x22,0x24,0x28,0x20,0x3f,0x20,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x8,0x8,0x88,0x68,0x28,0x8,0xf8,0x8,
-+0x8,0x8,0x9,0x13,0x10,0x30,0x50,0x91,0x16,0x10,0x10,0x13,0x10,0x10,0x10,0x17,0x80,0xfc,0x8,0x10,0xa0,0x40,0x90,0x10,0x20,0x7e,0x84,0x48,0x30,0x20,0xc0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x14,0x14,0x12,0x11,0x10,0x20,0x20,0x40,0x80,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x1,0x1,0x1,0x3f,0x1,0x1,0xff,0x4,0x4,0x14,0x14,0x24,0x48,0x88,0x11,0x20,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x50,0x48,0x46,0x42,0x40,0x40,0x80,
-+0x20,0x20,0x27,0xf8,0x24,0x22,0x70,0x50,0x52,0x54,0x50,0x52,0x21,0x50,0x4f,0x80,0x0,0x4,0xbe,0x84,0xa4,0x94,0x84,0x84,0x94,0xa4,0x84,0x94,0x8,0x6,0xfc,0x0,
-+0x0,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x23,0x20,0x20,0x40,0x40,0x80,0x0,0x10,0x78,0x80,0x0,0x0,0x8,0xfc,0x80,0x80,0x80,0xe0,0xb0,0x90,0x80,0x80,0x80,
-+0x10,0x10,0x11,0x15,0x59,0x51,0x51,0x91,0x11,0x11,0x10,0x28,0x25,0x42,0x84,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x90,0x88,0xc,0x4,0x0,
-+0x2,0x1,0x1,0xff,0x2,0x4,0x8,0x1f,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0x4,0xfe,0x0,0x40,0x20,0xf0,0x50,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x40,0x20,0x20,0x7,0x14,0x14,0x14,0x24,0xe7,0x24,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x7e,0x20,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x10,0x8,0xfc,0x4,0x0,
-+0x1,0x21,0x21,0x3f,0x22,0x1,0x7f,0x40,0x9f,0x0,0x7f,0x1,0x11,0x11,0x25,0x2,0x0,0x8,0x8,0xf8,0x8,0x0,0xfe,0x2,0xf4,0x0,0xfc,0x0,0x20,0x18,0x8,0x0,
-+0x2,0x1,0x7f,0x42,0x82,0x2,0x3f,0x2,0x2,0x4,0x4,0x8,0x9,0x12,0x20,0x40,0x0,0x0,0xfe,0x2,0x84,0x50,0xf8,0x80,0x90,0xb0,0xc0,0x80,0x82,0x82,0x7e,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x2,0xff,0x28,0x2a,0xff,0xaa,0xaa,0xaa,0xc6,0x82,0xfe,0x82,0x82,0xfe,0x83,0x2,0x44,0x44,0x54,0x54,0x54,0x54,0xfc,0x54,0x54,0x54,0x54,0x54,0x94,0x94,0x4,0x4,
-+0x0,0x4,0x7f,0x54,0x57,0x54,0x57,0x7c,0x54,0x57,0x55,0x55,0x7e,0x44,0x8,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfe,0x8,0x48,0x28,0x8,0x28,0x10,
-+0x0,0x7c,0x47,0x44,0x47,0x44,0x7f,0x10,0x10,0x5f,0x51,0x51,0x5a,0xe4,0x48,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfe,0x8,0x48,0x28,0x8,0x28,0x10,
-+0x8,0x1f,0xf2,0x12,0x12,0xfe,0x12,0x3a,0x36,0x52,0x52,0x92,0x12,0x12,0x14,0x18,0x0,0xfe,0x22,0x22,0xfa,0x22,0x22,0xfa,0x2,0xfa,0x8a,0x8a,0x8a,0xfa,0x8a,0x4,
-+0x4,0xe,0x78,0x8,0xfe,0x8,0x1d,0x2a,0x48,0x9,0x2,0x29,0x28,0x48,0x7,0x0,0x20,0x20,0x20,0xa4,0xac,0xb0,0x50,0x48,0x8e,0x4,0x0,0x90,0xac,0x24,0xe0,0x0,
-+0x10,0x1f,0x28,0x45,0x1,0x7f,0x2,0x3f,0x4,0xff,0x8,0x1f,0x24,0x42,0x2,0x0,0x40,0x7c,0xa0,0x10,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xfc,0x10,0x10,0x50,0x20,
-+0x9,0x9,0x9,0x11,0x17,0x31,0x51,0x91,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x10,0x17,0x24,0x24,0x4d,0xfc,0x14,0x25,0x44,0xfd,0x5,0x5,0x1d,0xe5,0x48,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x44,0xf4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x14,0x8,
-+0x0,0x9,0x7f,0x49,0x49,0x7f,0x49,0x4b,0x4b,0x7d,0x49,0x49,0x49,0x79,0x49,0x1,0x80,0xd0,0x10,0x12,0x56,0xb8,0x10,0x90,0x50,0x10,0x28,0x28,0x28,0x46,0x84,0x0,
-+0x0,0x3f,0x2,0x2,0x2,0x2,0x2,0x1f,0x4,0x4,0x4,0x4,0x4,0x4,0xff,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x1,0x1,0xff,0x2,0x4,0x18,0x60,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x20,0x14,0xfe,0x80,0x60,0x1c,0x8,
-+0x20,0x10,0x10,0x5,0xfc,0x8,0x10,0x34,0x58,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x1,0x1,0x21,0x21,0x21,0x21,0x3f,0x21,0x1,0x41,0x41,0x41,0x41,0x41,0x7f,0x40,0x0,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x27,0x24,0x24,0xff,0x24,0x75,0x6d,0xa5,0x25,0x24,0x25,0x25,0x2b,0x30,0x20,0x4,0xfe,0x0,0x44,0xe4,0x4,0xde,0x44,0x44,0xd4,0xc,0x44,0x44,0xe4,0x14,0x8,
-+0x0,0x3f,0x20,0x3f,0x20,0x2f,0x29,0x29,0x29,0x2f,0x20,0x29,0x2a,0x23,0x5c,0x80,0x4,0xfe,0x0,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x8,0x8,0x88,0x28,0x10,
-+0x4,0x7f,0x44,0x44,0x47,0x7c,0x10,0x17,0x50,0x59,0x53,0x55,0x5d,0xf1,0x41,0x1,0x90,0xfe,0x90,0x48,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x20,0x20,0x23,0x7a,0x82,0x2,0xfb,0x22,0x22,0xfb,0x22,0x22,0x2f,0x30,0x20,0x0,0x10,0x10,0xd0,0x54,0x7e,0x54,0xd4,0x54,0x54,0xd4,0x54,0x54,0xf4,0x24,0x54,0x88,
-+0x10,0x10,0x20,0x3c,0x45,0x8a,0x14,0xfe,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x0,0x40,0x50,0x94,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x0,0x5e,0x32,0x34,0x14,0x95,0x5a,0x14,0x32,0x33,0xda,0x54,0x51,0x52,0x50,0x10,0x20,0x20,0x50,0x50,0x88,0x6,0xfc,0x20,0x24,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x0,0x78,0x48,0x50,0x51,0x62,0x55,0x48,0x48,0x4f,0x68,0x51,0x42,0x44,0x41,0x40,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x40,0x50,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x8,0x8,0x7e,0x8,0x1c,0x2a,0x48,0x3f,0x1,0x9,0x9,0x11,0x11,0x29,0x47,0x80,0x20,0x28,0xfc,0x20,0x78,0xa4,0x20,0xf8,0x10,0x40,0xe0,0x0,0x0,0x6,0xfc,0x0,
-+0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x7f,0xa4,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x18,0x25,0x24,0x60,0xbd,0x24,0x25,0x26,0x24,0x25,0x26,0x24,0x20,0x20,0x40,0x40,0x48,0xfc,0x50,0x64,0xfe,0x88,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,
-+0x1,0x3f,0x1,0xf,0x8,0x9,0x9,0x7f,0x8,0x7e,0x8,0x3e,0x22,0x2a,0x2a,0xff,0x10,0xf8,0x0,0xe0,0x20,0x20,0x28,0xfc,0x20,0xfc,0x20,0xf8,0x88,0xa8,0xa8,0xfe,
-+0x10,0x10,0x1f,0x10,0xfd,0x13,0x10,0x18,0x33,0xd0,0x17,0x14,0x17,0x14,0x57,0x24,0x80,0x44,0xfe,0x80,0x10,0xf0,0x40,0x88,0xf8,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x4,
-+0x20,0x20,0x3c,0x48,0x51,0xfd,0x55,0x55,0x7d,0x55,0x55,0x7d,0x54,0x54,0x55,0x8c,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x20,0x28,0x3c,0xe2,0x82,
-+0x0,0x10,0x10,0x10,0x1e,0x22,0x22,0x22,0x54,0x94,0x8,0x14,0x14,0x22,0x41,0x80,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x6,0xfc,0x0,
-+0x10,0x10,0x12,0x12,0xfb,0x10,0x17,0x18,0x30,0xd7,0x14,0x14,0x14,0x14,0x54,0x24,0x40,0x40,0x48,0x48,0xf8,0x4,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xb4,0x8,
-+0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x0,0x4,0x4,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x4,0x4,0x4,
-+0x2,0x1,0x7f,0x44,0x88,0x0,0x3f,0x8,0x10,0x3f,0x1,0x2,0x4,0x18,0x61,0x0,0x0,0x0,0xfe,0x42,0x24,0x0,0xf8,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x10,0x11,0xfc,0x13,0x30,0x39,0x56,0x50,0x91,0x16,0x10,0x17,0x10,0x10,0x80,0xf8,0x88,0xf8,0x14,0xfe,0x80,0x44,0x6c,0xb0,0x30,0x68,0xa6,0x24,0xa0,0x40,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x11,0x13,0x10,0x11,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x0,0xfc,0x8,0x10,0xa0,0x40,0x60,0x20,
-+0x8,0x12,0x3f,0x22,0x32,0x2a,0x22,0x23,0xfe,0x22,0x32,0x2a,0x22,0x42,0x8a,0x4,0x8,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x0,0x8,0x7e,0x4a,0x4b,0x48,0x4f,0x48,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x2,0x2,0x40,0x40,0x48,0x48,0xf8,0x4,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xb4,0x8,
-+0x1,0x1,0x3f,0x21,0x21,0x3f,0x1,0x1,0x7f,0x41,0x41,0x7f,0x41,0x1,0x1,0x1,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,
-+0x1,0x0,0x1f,0x10,0x91,0x52,0x54,0x1b,0x32,0x52,0xd2,0x12,0x22,0x22,0x41,0x0,0x0,0x84,0xfe,0x80,0x40,0x20,0x10,0xee,0x24,0x20,0xa0,0x40,0x8,0x8,0xf8,0x0,
-+0x2,0x1,0x7f,0x48,0x92,0x4,0x3f,0x22,0x23,0x24,0x2a,0x21,0x22,0x24,0x3f,0x20,0x0,0x0,0xfe,0x22,0x14,0x0,0xf8,0x8,0xc8,0x48,0x88,0x8,0x88,0x8,0xf8,0x8,
-+0x20,0x20,0x27,0xf9,0xa8,0xaf,0xa8,0xab,0xaa,0xab,0xaa,0xbb,0x20,0x23,0x20,0x2f,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x48,0xf8,0x48,0xf8,0x40,0xf8,0x40,0xfe,
-+0x1,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x21,0x21,0x22,0x24,0x48,0x50,0x80,0x0,0x0,0x84,0xfe,0x80,0x80,0x88,0xfc,0x80,0xc0,0xa0,0x90,0x88,0x8e,0x84,0x80,0x80,
-+0x20,0x17,0x50,0x40,0x4f,0x40,0x44,0x44,0x44,0x47,0x40,0x5f,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0x44,0x44,0xf4,0x14,0xd4,0x14,0x54,0x24,0xc,
-+0x8,0x8,0x14,0x12,0x21,0x20,0x7e,0xa2,0x22,0x2a,0x24,0x20,0x21,0x21,0x1f,0x0,0x4,0x4,0x4,0x24,0xa4,0xa4,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x0,0x8,0x7c,0x48,0x49,0x4a,0x48,0x48,0x48,0x48,0x48,0x78,0x49,0x2,0x4,0x8,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x10,0x10,0x10,0x10,0x55,0x5a,0x50,0x90,0x10,0x10,0x10,0x10,0x19,0x26,0x44,0x88,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x10,0x10,0x13,0x10,0xfc,0x17,0x11,0x19,0x37,0xd1,0x11,0x17,0x10,0x10,0x53,0x20,0x8,0x3c,0xc0,0x40,0x48,0xfc,0x50,0x54,0xfe,0x50,0x50,0xfc,0x40,0x50,0xf8,0x0,
-+0x10,0x10,0x13,0x1c,0x20,0x23,0x7d,0x91,0x17,0x79,0x11,0x13,0x14,0x18,0x13,0x0,0x8,0x3c,0xc0,0x40,0x48,0xfc,0x50,0x54,0xfe,0x50,0x50,0xfc,0x40,0x50,0xf8,0x0,
-+0x0,0x0,0x3f,0x1,0x1,0x7f,0x9,0x9,0xff,0x9,0x9,0x7f,0x1,0x1,0x3f,0x0,0x10,0x78,0x80,0x0,0x8,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x10,0xf8,0x0,
-+0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x8,0xf,0x8,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0xf0,0x2e,0x24,0xe0,0x20,0x20,0xe0,0x20,
-+0x10,0x17,0x10,0x13,0xfc,0x17,0x39,0x32,0x57,0x5a,0x92,0x13,0x12,0x12,0x13,0x12,0x40,0xfc,0x40,0xf8,0x80,0xfe,0x10,0x8,0xfe,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0xfe,0x29,0x28,0xfe,0xaa,0xaa,0xae,0xc2,0x82,0x82,0xfe,0x83,0x82,0xfe,0x82,0x20,0x10,0xfe,0x4,0xfe,0x84,0xfc,0x0,0xfc,0x8,0x30,0x24,0xfe,0x20,0xa0,0x40,
-+0x0,0x3f,0x20,0x2f,0x20,0x3f,0x2a,0x29,0x28,0x2e,0x40,0x9f,0x10,0x10,0x1f,0x10,0x10,0xf8,0x0,0xf0,0x0,0xfc,0x10,0xa0,0x60,0x1e,0x4,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x40,0x37,0x10,0x83,0x62,0x23,0x8,0x13,0x20,0xe0,0x2f,0x20,0x20,0x21,0x20,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x10,0x64,0xfe,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x20,0x27,0x48,0xfa,0x12,0x22,0x42,0xfb,0x42,0x0,0x18,0xe0,0x40,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,0x0,
-+0x1,0x7f,0x1,0x3f,0x2,0x7f,0x8,0x1f,0xe8,0xf,0x10,0x7c,0x54,0x7c,0x12,0xfe,0x8,0xfc,0x0,0xf8,0x0,0xfc,0x20,0xf0,0x2e,0xe4,0x20,0xf8,0xa8,0xf8,0x24,0xfc,
-+0x0,0xf7,0x52,0x31,0x52,0x94,0x10,0x14,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x3f,0x20,0x20,0xa0,0xa8,0xa4,0xa0,0xae,0xf0,0x20,0xa4,0x24,0x18,0x10,0x30,0x4a,0x8a,0x4,
-+0x10,0x10,0x20,0x20,0x4b,0xfa,0x13,0x22,0x43,0xf8,0x40,0x7,0x18,0xe0,0x40,0x0,0x48,0x7c,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x1,0x0,0x1f,0x11,0x91,0x51,0x55,0x15,0x35,0x55,0xd5,0x15,0x25,0x25,0x4e,0x4,0x0,0x84,0xfe,0x20,0x20,0x20,0x24,0x2c,0xf0,0x20,0x20,0x20,0x22,0xe2,0x1e,0x0,
-+0x8,0x8,0xff,0x8,0x1,0x41,0x33,0x12,0x4,0x10,0xe0,0x20,0x21,0x21,0x22,0xc,0x20,0x24,0xfe,0x20,0x0,0x8,0xfc,0x8,0x90,0x80,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x2,0x11,0xf8,0x27,0x21,0x41,0x42,0x77,0xd0,0x51,0x51,0x52,0x54,0x77,0x50,0x0,0x8,0x98,0xa0,0xfe,0x8,0x8,0x52,0xbc,0x84,0x8,0x8,0x10,0xa4,0xfe,0x42,0x0,
-+0x14,0x14,0x14,0x54,0x55,0x5e,0x54,0x54,0x54,0x54,0x54,0x54,0x5d,0xe6,0x44,0x0,0x50,0x50,0x84,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x8,0x1c,0xf0,0x11,0x10,0x14,0xfe,0x10,0x15,0x7e,0x44,0x45,0x44,0x44,0x7c,0x44,0x40,0x20,0x28,0xfc,0x0,0x88,0x50,0x4,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,
-+0x8,0x4,0xff,0x8,0x8,0x12,0x7c,0x8,0x12,0x7e,0x0,0xa,0x29,0x28,0x48,0x7,0x20,0x44,0xfe,0x20,0x20,0x44,0xf8,0x10,0x24,0xfc,0x0,0x0,0x88,0xa4,0x24,0xe0,
-+0x21,0x11,0x1,0xa,0x70,0x20,0x27,0x0,0xff,0x10,0x1f,0x10,0x13,0x10,0x16,0x38,0x0,0x8,0xfc,0x48,0x40,0xa0,0x1c,0x4,0xfe,0x0,0xe0,0x20,0x20,0xa4,0x24,0x1c,
-+0x20,0x13,0x10,0x0,0x7,0xf0,0x10,0x13,0x12,0x12,0x12,0x13,0x16,0x18,0x10,0x0,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8,
-+0x4,0x4,0x4,0x24,0x24,0x24,0x27,0x24,0x24,0x24,0x24,0x24,0x27,0xf8,0x40,0x0,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x8,0x9,0xff,0x8,0x7f,0x49,0x49,0x4b,0x18,0x1c,0x2b,0x49,0x88,0x8,0x8,0x4,0x4,0x4,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x7d,0x45,0x55,0x55,0x55,0x55,0x54,0x55,0x56,0x54,0x11,0x2a,0x44,0x81,0x0,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0x54,0x94,0x24,0x44,0x84,0x28,0x10,
-+0x0,0x40,0x30,0x11,0x1,0x2,0x8,0x10,0x20,0xe0,0x20,0x20,0x21,0x22,0x24,0x28,0x80,0x80,0x80,0x8,0xfc,0x8,0x50,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x5,0xfe,0x24,0x24,0x3d,0x25,0x25,0x25,0x3d,0x25,0x24,0x24,0xfd,0x6,0x4,0x4,0x4,0xcc,0x50,0x4,0xfe,0x4,0x4,0x4,0xfc,0x44,0x20,0xa4,0x8a,0x8a,0x78,0x0,
-+0x4,0x4,0xff,0x14,0x1f,0x12,0x2e,0x25,0x48,0x11,0x2,0x4,0x52,0x51,0x90,0xf,0x40,0x44,0xfe,0x40,0xf8,0x48,0x48,0x88,0xc8,0x28,0x10,0x0,0x4,0x92,0x92,0xf0,
-+0x4,0x8,0x7f,0x44,0x44,0x47,0x44,0x48,0x54,0x42,0x41,0x42,0x44,0x48,0x7f,0x40,0x0,0x4,0xfe,0x4,0x4,0xe4,0x24,0x44,0x44,0x84,0x4,0x84,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x8,0x1f,0x12,0x22,0x4a,0x86,0x5,0x4,0x8,0x11,0x22,0x44,0x8,0x0,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0xc4,0x34,0x14,0x4,0x28,0x10,
-+0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x21,0x21,0x42,0x84,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x50,0x50,0x88,0x88,0xc,0x6,0x4,
-+0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x21,0x41,0x82,0x0,0xff,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x50,0x90,0x88,0xe,0x4,0x0,0xfe,0x0,
-+0x0,0x40,0x2f,0x20,0x7,0x1,0xf,0x12,0x24,0xeb,0x30,0x27,0x20,0x21,0x22,0x24,0x80,0x88,0xfc,0x80,0xf8,0x0,0xfc,0x20,0x10,0xee,0x84,0xf0,0x80,0x40,0x30,0x10,
-+0x8,0x8,0x4a,0x2a,0x1c,0x8,0xfe,0x8,0x1c,0x1a,0x28,0x48,0x88,0x8,0xb,0x8,0x0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xfe,0x0,
-+0x2,0x7f,0x14,0x15,0x7f,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x41,0x7f,0x41,0x28,0x28,0xfe,0x28,0xa8,0x28,0xfe,0x4,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x44,
-+0x10,0x12,0x1f,0x24,0x42,0x10,0x8,0xff,0x10,0x1c,0x14,0x27,0x24,0x44,0x94,0xb,0x20,0x24,0x3e,0x48,0x84,0x80,0xfe,0x40,0x7c,0xa0,0x24,0xfe,0x20,0x50,0x8e,0x4,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x90,0x12,0x12,0x12,0x12,0x15,0x18,0x10,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0xc6,0x7c,0x0,
-+0x0,0x78,0x4b,0x4a,0x4d,0x78,0x11,0x11,0x5d,0x50,0x53,0x52,0x5f,0xe2,0x40,0x0,0x40,0x20,0xfe,0x8a,0x24,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x22,0xfe,0x22,0x20,0x20,
-+0x10,0x1f,0x28,0x5f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0xa,0x32,0xc4,0xf,0x40,0x7c,0xa0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x9e,0x44,0xe0,
-+0x2,0x1,0x7f,0x44,0x99,0x1,0x3f,0x21,0x3f,0x1,0x7f,0x41,0x7f,0x41,0x1,0x1,0x0,0x0,0xfe,0x42,0x34,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xfc,0x4,0x0,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x10,0x15,0x19,0x33,0xd5,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x24,0x24,0x24,0xfc,0xa0,0x14,0xfe,0x10,0xfc,0x10,0xfc,0x10,0x14,0xfe,0x0,
-+0x1,0x21,0x21,0x3f,0x28,0x11,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x8,0x8,0xf8,0x8,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0x84,0xfe,0x0,
-+0x8,0x9,0x9,0x11,0x11,0x30,0x51,0x93,0x15,0x19,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x24,0x24,0x24,0xfc,0xa0,0x14,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x8,0x7c,0x48,0x49,0x4a,0x79,0x49,0x49,0x49,0x79,0x49,0x49,0x49,0x49,0x5a,0x84,0x80,0x80,0xf8,0x10,0x24,0xfe,0x0,0x78,0x48,0x48,0x68,0x50,0x42,0x42,0x3e,0x0,
-+0x1,0x0,0x1f,0x10,0x90,0x57,0x51,0x11,0x32,0x54,0xd0,0x1f,0x20,0x20,0x40,0x0,0x0,0x84,0xfe,0x80,0x48,0xfc,0x10,0x10,0xac,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x55,0x38,0x10,0xfe,0x11,0x38,0x34,0x53,0x90,0x10,0x10,0x10,0x10,0x40,0x20,0x28,0xfc,0x88,0x88,0x88,0x54,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x40,0x30,0x17,0x1,0x81,0x61,0x22,0x4,0x10,0x2f,0xe0,0x20,0x20,0x20,0x20,0x20,0x80,0x48,0xfc,0x10,0x10,0x10,0xac,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x3e,0x2,0x12,0xa,0x12,0x1,0x7f,0x8,0x14,0x22,0x1,0xff,0x1,0x1,0x1,0x1,0xf8,0x8,0x48,0x28,0x48,0x0,0xfc,0x20,0x50,0x88,0x0,0xfe,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x14,0xff,0x10,0x30,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x2,0xff,0x4,0x8,0xb,0x10,0x10,0x30,0x5f,0x90,0x10,0x10,0x10,0x11,0x10,0x0,0x4,0xfe,0x0,0x0,0xf8,0x10,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x1,0x0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x4,0xfe,0x13,0x10,0x21,0x24,0x7f,0xa4,0x24,0x24,0x25,0x3d,0x22,0x4,0x0,0x88,0x4c,0x50,0xfe,0x20,0xfc,0x20,0xfe,0x40,0x88,0xfc,0x10,0x10,0x14,0xfe,0x0,
-+0x20,0x23,0x22,0x23,0xfa,0x23,0x20,0x2f,0x34,0xe7,0x24,0x27,0x24,0x2f,0xa0,0x40,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x80,0xfc,0x84,0xa8,0x90,0x90,0xae,0xc4,
-+0x11,0x10,0x10,0x17,0xfc,0x13,0x10,0x1f,0x30,0xd1,0x11,0x12,0x14,0x18,0x53,0x20,0x8,0x98,0xa0,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x8,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x11,0x11,0x11,0x17,0xfd,0x11,0x17,0x18,0x33,0xd2,0x12,0x13,0x12,0x12,0x53,0x22,0x10,0x10,0x10,0xfc,0x10,0x14,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x12,0x12,0xfa,0x12,0x15,0x18,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0xe2,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x1f,0x20,0x20,0x7f,0x90,0x11,0x7d,0x11,0x11,0x15,0x19,0x11,0x1,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x11,0x11,0x17,0x11,0xfc,0x10,0x11,0x1a,0x35,0xd0,0x13,0x12,0x12,0x12,0x53,0x22,0x10,0x10,0xfc,0x10,0x40,0xa0,0x10,0xe,0xf4,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x20,0x20,0x0,0xf,0xe0,0x21,0x21,0x22,0x22,0x24,0x28,0x50,0x8f,0x0,0x80,0x80,0x80,0x80,0x88,0xfc,0x80,0x0,0x40,0x20,0x10,0x18,0x8,0x6,0xfc,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x2,0x4,0x8,0x1f,0x20,0xcf,0x8,0x8,0x8,0xf,0x8,0x40,0x48,0x7c,0xa0,0x10,0x80,0x40,0x20,0xf8,0xe,0xe4,0x20,0x20,0x20,0xe0,0x20,
-+0x1,0x0,0x1f,0x92,0x52,0x5f,0x12,0x31,0x52,0xd7,0x18,0x17,0x24,0x24,0x47,0x4,0x0,0x84,0xfe,0x20,0x28,0xfc,0xa0,0x40,0x20,0xf0,0xe,0xf4,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x14,0x18,0x30,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x11,0x1,0xff,0x1,0x3,0x5,0x9,0x11,0x61,0x1,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x0,0xff,0x2,0x2,0x2,0x3,0x4,0xc,0xa,0x11,0x20,0x40,0x0,0x3,0xc,0x30,0x4,0xfe,0x0,0x0,0x0,0xf8,0x8,0x8,0x10,0x90,0xa0,0x40,0x80,0x0,0x0,0x0,
-+0x10,0x10,0x1f,0x20,0x2f,0x61,0xbf,0x22,0x24,0x2c,0x32,0x21,0x22,0x24,0x28,0x21,0x80,0x88,0xfc,0x80,0xf8,0x0,0xfe,0x20,0x90,0x9e,0xa4,0xc0,0xa0,0x98,0x88,0x80,
-+0x8,0x7f,0x8,0xff,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x22,0x7f,0x22,0xff,0x22,0x41,0x50,0x48,0x44,0xfe,0x40,0x48,0x48,0x50,0x50,0x20,0x20,0x60,0x90,0x92,0xa,0x6,
-+0x9,0x9,0x7f,0x9,0x9,0x7f,0x41,0x81,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x1,0x20,0x28,0xfc,0x20,0x20,0xfe,0x2,0x4,0xf0,0x10,0x10,0x10,0x10,0x50,0x20,0x0,
-+0x4,0xfe,0x20,0x20,0x3c,0x25,0x27,0x44,0xa5,0x15,0x9,0x9,0x11,0x21,0x41,0x0,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x5f,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0xa0,0x90,0x90,0x84,0xfe,0x80,0x40,0x40,0x40,0x20,0x20,0x12,0x12,0xa,0x6,
-+0x8,0x8,0x10,0x37,0x50,0x90,0x10,0x1f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0xa0,0x90,0xbc,0xc0,0x42,0x32,0xe,0xf0,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x10,
-+0x8,0x8,0x10,0x37,0xd0,0x10,0x12,0x11,0xff,0xa,0x9,0x18,0x28,0xc9,0xa,0xc,0xa0,0x90,0xfc,0x80,0x40,0x24,0x1c,0x0,0xfe,0x8,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x8,0x8,0x13,0x20,0x48,0x8,0x17,0x30,0x50,0x97,0x10,0x12,0x11,0x11,0x10,0x10,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x40,0x27,0x20,0xf,0x0,0xe7,0x20,0x24,0x22,0x24,0x28,0x22,0x51,0x8f,0x0,0x80,0x90,0xf8,0x90,0xfc,0x90,0xf0,0x80,0x90,0xa0,0x98,0x88,0x80,0x6,0xfc,0x0,
-+0x4,0x4,0x8,0x10,0x7f,0x0,0x3f,0x20,0x20,0x3f,0x2,0x11,0x50,0x50,0x8f,0x0,0x0,0x40,0x20,0x10,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x0,0x80,0x94,0x12,0xf2,0x0,
-+0x4,0xfe,0x48,0x4b,0x7a,0x4c,0x48,0x48,0x78,0x48,0x48,0x4d,0xf9,0xa,0xc,0x8,0x40,0x40,0x44,0xfe,0x44,0x48,0x60,0x60,0xa0,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x13,0x1e,0x32,0xd2,0x13,0x10,0x10,0x1f,0x50,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,
-+0x0,0x1f,0x10,0x12,0x11,0x11,0x10,0xff,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x8,0x4,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0xff,0x1,0x1,0x1,0x10,0x20,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x41,0x22,0x14,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x8,0x8,0xff,0x8,0x8,0x8,0x0,0x7c,0x44,0x48,0x48,0x50,0x50,0x48,0x44,0x44,0x44,0x64,0xd4,0x48,0x40,0x40,
-+0x11,0x10,0x10,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x10,0x17,0x10,0x10,0x50,0x20,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20,
-+0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x25,0x54,0x88,0x0,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0xfc,0x0,0x4,0xfe,0x0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0xff,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,
-+0x10,0x1f,0x10,0x3f,0x40,0xbf,0x12,0xa,0x5,0x38,0x2,0x12,0xa,0x5,0x8,0x70,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x50,0x90,0x10,0xf0,0x10,0x50,0x90,0x12,0xca,0x24,
-+0x10,0x10,0x17,0x24,0x24,0x64,0xa7,0x24,0x24,0x24,0x27,0x20,0x20,0x3f,0x20,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,
-+0x12,0x11,0x10,0x13,0x5a,0x56,0x53,0x92,0x12,0x13,0x10,0x1f,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x44,0x33,0x11,0x80,0x40,0x41,0xa,0x10,0x22,0xe1,0x20,0x20,0x21,0x22,0x2c,0x40,0x44,0x4c,0x50,0x40,0xa0,0x1c,0x48,0x40,0x48,0x58,0xa0,0x90,0x10,0xe,0x4,
-+0x0,0x40,0x2f,0x21,0x2,0x4,0xef,0x21,0x29,0x25,0x22,0x2a,0x33,0x24,0x8,0x10,0x8,0x1c,0x70,0x10,0x10,0x10,0x5c,0x50,0x50,0x50,0x50,0x7c,0x0,0x80,0x46,0x3c,
-+0xa,0x7d,0x8,0xb,0xa,0x7a,0x4b,0x42,0x42,0x7b,0x8,0xf,0x8,0x8,0x50,0x20,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0x40,0x40,0x40,
-+0x7f,0x1,0x9,0x9,0x9,0x15,0x23,0x41,0x1f,0x11,0x11,0x1f,0x11,0x1,0x7f,0x0,0xfc,0x8,0x20,0xf0,0x0,0x6,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x4,
-+0x1,0x21,0x19,0x9,0x1,0x1,0x7f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x7f,0x0,0x0,0x8,0x18,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x12,0x11,0xfd,0x10,0x17,0x18,0x30,0xd0,0x13,0x10,0x10,0x10,0x57,0x20,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x11,0xd,0x5,0x7f,0x40,0x8f,0x8,0x8,0x8,0xf,0x4,0x4,0x4,0x8,0x30,0x0,0x10,0x30,0x40,0xfe,0x22,0xf4,0x20,0x20,0x20,0xe0,0x80,0x80,0x84,0x84,0x7c,
-+0x8,0x8,0xff,0x8,0x47,0x30,0x10,0x81,0x47,0x11,0x21,0xe2,0x22,0x24,0x29,0x20,0x20,0x24,0xfe,0x20,0xf0,0x40,0x80,0x4,0xfe,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x10,0x10,0x12,0x11,0xfd,0x10,0x37,0x38,0x54,0x50,0x93,0x10,0x10,0x10,0x17,0x10,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x10,0x14,0x14,0x17,0x50,0x20,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x0,0xfe,0x82,0x92,0x92,0xf2,0xa,0x4,
-+0x4,0x7f,0x44,0x46,0x45,0x45,0x7c,0x13,0x12,0x5e,0x53,0x52,0x5e,0xf2,0x43,0x2,0x1c,0xe0,0x48,0x2c,0x28,0x10,0x44,0x9e,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x1f,0x22,0x22,0x64,0xaf,0x21,0x21,0x2f,0x21,0x21,0x21,0x2f,0x24,0x20,0x4,0x44,0xe4,0x4,0x94,0x54,0xd4,0x14,0x14,0xd4,0x14,0x14,0xc4,0x4,0x14,0x8,
-+0x1,0x2,0xf,0x8,0xa,0x9,0x8,0x8,0xf,0x8,0x2,0x22,0x22,0x3f,0x20,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x60,0x4,0xfe,0x4,0x4,0x24,0x24,0xe4,0x34,0x8,
-+0x20,0x10,0x13,0x0,0xfd,0x8,0x13,0x38,0x54,0x93,0x11,0x11,0x12,0x14,0x18,0x10,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfe,0x8,0x48,0x28,0x8,0x28,0x10,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x1f,0x0,0x0,0xff,0x0,0x8,0x4,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x14,0x4,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x1,0x7f,0x8,0x10,0x22,0x41,0x7f,0x8,0xa,0x7f,0x8,0x8,0x8,0xf,0xf8,0x0,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0xa4,0x24,0x24,0x24,0x24,0x4,0x84,0x14,0x8,
-+0x8,0x1f,0xf0,0x12,0x11,0xfd,0x10,0x3b,0x36,0x52,0x53,0x92,0x12,0x12,0x13,0x12,0x1c,0xe0,0x48,0x4c,0x48,0x10,0x44,0x9e,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x10,0x5b,0x56,0x53,0x92,0x13,0x12,0x10,0x1f,0x10,0x10,0x10,0x10,0x48,0x7c,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x2,0x41,0x37,0x10,0x1,0x3,0xf2,0x13,0x12,0x12,0x13,0x12,0x12,0x2b,0x44,0x3,0x8,0x10,0xfc,0x80,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x6,0xfc,
-+0x1,0x41,0x33,0x12,0x4,0x10,0x21,0xc6,0x40,0x1f,0x12,0x12,0x12,0x12,0xff,0x0,0x0,0x8,0xfc,0x48,0x40,0xa0,0x10,0xe,0x4,0xf0,0x90,0x90,0x90,0x94,0xfe,0x0,
-+0x10,0x10,0x2f,0x20,0x47,0x94,0x14,0x27,0x60,0xaf,0x20,0x21,0x25,0x25,0x28,0x20,0x40,0x44,0xfe,0x40,0xfc,0xa4,0xa4,0xfc,0x0,0xfe,0x40,0x20,0x24,0xa,0xfa,0x0,
-+0x8,0xb,0x12,0x13,0x22,0x4b,0x88,0x17,0x30,0x50,0x9f,0x12,0x11,0x11,0x10,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x10,0x14,0xfe,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x22,0x7f,0x42,0x43,0x42,0x42,0x7e,0x42,0x42,0x42,0x42,0x7e,0x42,0x0,0x40,0x40,0x44,0x7e,0x84,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x8,0x7f,0x48,0x4a,0x49,0x49,0x7b,0x14,0x13,0x5a,0x52,0x53,0x5d,0xe0,0x4f,0x0,0x20,0xa8,0xb0,0xa4,0x18,0x10,0xf8,0x6,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0x54,0x58,0x50,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x3e,0x2,0x12,0xc,0x8,0x1f,0x20,0xcf,0x8,0x8,0xf,0x4,0x2,0x7f,0x0,0x80,0x90,0xa0,0x48,0x50,0x20,0xf0,0x2e,0xf4,0x20,0x20,0xe0,0x40,0x88,0xfc,0x0,
-+0x10,0x14,0x3e,0x49,0x5,0x1,0x3f,0x1,0xff,0x0,0x0,0x3f,0x8,0x4,0x1,0x0,0x40,0x48,0xfc,0x20,0x10,0x0,0xf8,0x0,0xfe,0x40,0x50,0xf8,0x40,0x40,0x40,0x80,
-+0x8,0x7f,0x48,0x4a,0x49,0x79,0x4b,0x4c,0x4b,0x7a,0x4a,0x4b,0x49,0x78,0x4f,0x0,0x20,0xa8,0xb0,0xa4,0x18,0x8,0xfe,0x4,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0,
-+0x3e,0x12,0xc,0xf,0x10,0x2f,0xc8,0xf,0x4,0x7f,0x0,0x7,0x4,0x4,0x8,0x30,0x90,0xa0,0x48,0xf0,0x10,0xee,0x24,0xe0,0x48,0xfc,0x40,0xe0,0x40,0x44,0x44,0x3c,
-+0x0,0xfe,0x2,0x42,0x24,0x24,0x18,0x8,0x18,0x14,0x24,0x22,0x42,0x80,0x0,0x0,0x0,0xfc,0x84,0x88,0x88,0x90,0xa0,0x98,0x84,0x84,0x84,0xc4,0xa8,0x90,0x80,0x80,
-+0x23,0x22,0x22,0x23,0xfa,0x22,0x23,0x20,0x2f,0x20,0x3a,0xe2,0x42,0x5,0x8,0x10,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x40,0x50,0x78,0x40,0x40,0xc6,0x7c,
-+0x10,0x10,0x17,0x24,0x24,0x64,0xa4,0x27,0x24,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x8,0x3c,0xc0,0x40,0x40,0x40,0x44,0xfe,0x20,0x20,0x20,0x90,0x12,0x4a,0x2a,0x4,
-+0x0,0x40,0x2f,0x22,0x1,0x87,0x44,0x4d,0x14,0x25,0xe5,0x25,0x25,0x25,0x24,0x24,0x80,0x44,0xfe,0x8,0x14,0xfe,0x44,0xf4,0x44,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x0,0x40,0x20,0x2f,0x8,0x8,0xe8,0x2f,0x28,0x28,0x28,0x2f,0x28,0x50,0x8f,0x0,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x8,0x6,0xfc,0x0,
-+0x2,0x7,0x78,0x8,0x8,0xa,0xff,0x8,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x1,0x20,0x20,0x20,0x44,0x7e,0x88,0x48,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x12,0x1f,0x28,0x45,0x81,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x44,0x28,0x10,0x29,0x49,0x89,0xa,0x18,0x28,0x48,0x88,0x9,0x9,0x52,0x24,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x1,0x41,0x31,0x13,0x84,0x60,0x20,0x9,0x12,0x24,0xeb,0x21,0x22,0x24,0x21,0x20,0x0,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0x40,0xfc,0x50,0x4c,0x44,0x40,0x80,
-+0x0,0x7e,0x2,0x22,0x1a,0x12,0x23,0x8,0x1f,0x30,0x5f,0x90,0x1f,0x10,0x1f,0x10,0x8,0xfc,0x8,0x48,0x38,0x28,0x48,0x80,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x40,0x24,0xfe,0x88,0x54,0xfe,0x24,0xfc,0x24,0x74,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x12,0x13,0x52,0x20,0x8,0x3c,0xe0,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x50,0xd0,0x2a,0xa,0x4,
-+0x2,0x1,0x3f,0x20,0x20,0x2f,0x28,0x28,0x2f,0x28,0x28,0x28,0x4a,0x4d,0x88,0x0,0x0,0x4,0xfe,0x0,0x70,0x80,0x80,0x88,0xfc,0x80,0x80,0x40,0x40,0xa4,0x94,0xc,
-+0x0,0x20,0x22,0x22,0x22,0x22,0xfb,0x26,0x22,0x22,0x22,0x22,0x3a,0xe2,0x41,0x0,0x40,0x40,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x48,0x68,0x50,0x42,0x2,0xfe,0x0,
-+0x4,0x7f,0x4,0x1,0x3f,0x8,0x4,0x7f,0x41,0x81,0x1f,0x11,0x11,0x11,0x1,0x1,0x48,0xfc,0x40,0x10,0xf8,0x20,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0x50,0x20,0x0,
-+0x10,0x14,0x3e,0x49,0xbf,0x1,0x1,0x3f,0x21,0x21,0x3f,0x3,0x5,0x19,0x61,0x1,0x80,0x88,0xfc,0x20,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x24,0x18,0x0,
-+0x2,0x1,0x3f,0x8,0x4,0x7f,0x41,0x81,0x1f,0x11,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x10,0xf8,0x20,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0x10,0x50,0x20,0x0,0x0,
-+0x8,0x6,0x2,0x7f,0x1,0x1,0x3f,0x21,0x21,0x3f,0x3,0x5,0x19,0x61,0x1,0x1,0x20,0x60,0x88,0xfc,0x8,0x8,0xf8,0x8,0x0,0xfc,0x4,0x4,0x14,0x8,0x0,0x0,
-+0x4,0x42,0x2f,0x20,0x0,0xf,0xe8,0x28,0x2f,0x21,0x22,0x24,0x28,0x50,0x88,0x7,0x10,0x28,0xfc,0x88,0x88,0xf8,0x80,0x88,0xfc,0x88,0x88,0xa8,0x90,0x80,0x86,0xfc,
-+0x10,0x10,0x27,0x21,0x48,0xff,0x14,0x28,0x43,0xfa,0x42,0x2,0x1a,0xe2,0x40,0x0,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x48,0x58,0x40,0x40,
-+0x10,0x15,0xfe,0x10,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x7c,0x44,0xfe,0x0,0x28,0x45,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x40,0x48,0x86,0x2,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x14,0x14,0x58,0x20,0x40,0x20,0x4,0xfe,0x20,0x24,0x3e,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x0,0x40,0x37,0x10,0x83,0x62,0x23,0xa,0x13,0x22,0xe3,0x22,0x2f,0x21,0x23,0x24,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x27,0x24,0x3c,0x25,0x2,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0xfc,0x54,0x54,0x54,0xfe,0x0,0x88,0x86,0x2,
-+0x2,0x2,0x2,0x3,0x2,0x2,0x3f,0x20,0x20,0x20,0x3f,0x0,0x29,0x24,0x44,0x80,0x0,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x10,0xc8,0x44,0x4,
-+0x4,0x4,0x4,0x3f,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0xff,0x0,0x10,0x30,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xf8,0x48,0x48,0x48,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x7c,0x11,0x7d,0x12,0xff,0x4,0x7e,0x44,0x7c,0x44,0x7c,0x44,0x45,0x56,0x48,0x40,0x20,0xfe,0x2,0x4,0xfe,0x20,0x20,0xa8,0xbc,0xa0,0xa0,0xa0,0x60,0x26,0x1c,
-+0x8,0x8,0x7e,0x8,0xa,0x1c,0x68,0x8,0x2b,0x11,0x1,0x7f,0x1,0x1,0xff,0x0,0x40,0x48,0xfc,0x48,0xc8,0x68,0x58,0x8a,0x6,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x2,0x2,0x2,0x7f,0x42,0x42,0x7f,0x42,0x42,0x7f,0x42,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x10,0x27,0x24,0x64,0xa4,0x24,0x27,0x24,0x24,0x24,0x24,0x27,0x24,0x20,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0xfc,0x4,0x0,
-+0x8,0x8,0x1f,0x20,0x40,0x80,0x3f,0x22,0x22,0x3f,0x22,0x22,0x3f,0x20,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x14,0x8,
-+0x1,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x2f,0x28,0x28,0x28,0x48,0x48,0x8f,0x8,0x0,0x84,0xfe,0x80,0x88,0xfc,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x13,0x5a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x40,0x20,0x4,0xfe,0x20,0x24,0x3e,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x10,0x8,0x7f,0x4,0x1f,0x14,0x14,0x18,0x1f,0x10,0x1f,0x1,0xff,0x2,0x4,0x38,0x10,0x20,0xfc,0x50,0xf8,0x50,0x50,0x30,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x78,0x10,
-+0x0,0x40,0x30,0x17,0x84,0x68,0x27,0x0,0x12,0x22,0xe2,0x22,0x22,0x25,0x28,0x20,0x80,0x40,0x40,0xfe,0x4,0x8,0xfc,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0xc6,0x7c,
-+0x0,0x7f,0x41,0x41,0x7f,0x40,0x52,0x7f,0x52,0x52,0x7f,0x40,0x52,0x51,0xa0,0x1,0x8,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x88,0x50,0x20,0x50,0x88,0x86,0x4,
-+0x8,0xfd,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x25,0x25,0x3d,0x22,0x4,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x0,0x8,0x7d,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x7b,0x49,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x14,0x24,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10,
-+0x1,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x41,0x5d,0x55,0x55,0x5d,0x51,0x85,0x2,0x20,0xa8,0x40,0x7e,0xc8,0x48,0x7c,0x48,0x48,0x7c,0x48,0x48,0x48,0x7e,0x40,0x40,
-+0x0,0x7,0x44,0x24,0x25,0x4,0xc,0x17,0x24,0xe5,0x25,0x25,0x25,0x25,0x8,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x54,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x30,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x48,0x88,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20,0x0,
-+0x10,0x10,0x10,0x10,0xff,0x12,0x17,0x1a,0x33,0xd2,0x10,0x1f,0x10,0x10,0x50,0x20,0x48,0x7c,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x11,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0x0,0x0,
-+0x10,0x10,0x10,0x1c,0x20,0x21,0x7c,0x90,0x10,0xfc,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x44,0x7e,0x84,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x40,0x27,0x24,0x4,0x5,0xe4,0x24,0x27,0x24,0x25,0x25,0x2d,0x35,0x25,0x8,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x54,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x4,0x7e,0x45,0x45,0x45,0x7d,0x52,0x10,0x13,0x5c,0x50,0x50,0x5e,0xf0,0x41,0x2,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x8c,0x6,0x4,
-+0x4,0x8,0x34,0x3,0x6,0x1a,0x67,0x8c,0x13,0x6,0x19,0x2,0xd,0x1,0x6,0x38,0x40,0x20,0x58,0x80,0xc0,0x30,0xce,0x44,0x80,0x80,0xf0,0x20,0x40,0x80,0x0,0x0,
-+0x0,0x9,0xfd,0x13,0x11,0x21,0x25,0x3f,0x65,0xa4,0x27,0x24,0x24,0x3d,0x22,0x0,0x50,0x50,0x54,0xfe,0x50,0x50,0x70,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x50,0x17,0x1c,0xf4,0x41,0x2,0x0,0x50,0x50,0x54,0xfe,0x50,0x50,0x70,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x0,0x42,0x32,0x13,0x2,0x4,0xf0,0x17,0x10,0x10,0x10,0x11,0x12,0x28,0x44,0x3,0x40,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x40,0x80,0xa0,0x18,0x8,0x0,0x6,0xfc,
-+0x0,0x41,0x31,0x17,0x1,0x1,0xf1,0x11,0x11,0x10,0x17,0x10,0x14,0x19,0x12,0x0,0x50,0x50,0x54,0xfe,0x50,0x50,0x70,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x1f,0x4,0x3,0x3e,0x14,0x8,0x76,0x0,0x7f,0x40,0x9f,0x10,0x1e,0x11,0x10,0xff,0xf0,0x40,0x80,0xf8,0x50,0x20,0xdc,0x0,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x14,0xfe,
-+0x0,0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x78,0x4f,0x48,0x48,0x78,0x48,0x48,0x48,0x78,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x8,0x7f,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x13,0x1c,0x20,0x20,0x7c,0x90,0x10,0xfc,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0xb,0xfc,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x50,0x20,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x40,0x58,0x84,0x2,
-+0xf,0x8,0xf,0x28,0x2f,0x28,0x2f,0x20,0x3e,0x2,0xfe,0x12,0x12,0x22,0xc2,0x2,0xe0,0x20,0xe0,0x28,0xe8,0x28,0xe8,0x8,0xf8,0x80,0xfc,0x84,0x84,0x84,0x84,0x80,
-+0x10,0x10,0x10,0x1d,0x21,0x22,0x7d,0x90,0x10,0x7d,0x11,0x11,0x15,0x1a,0x14,0x8,0x40,0x20,0x20,0xfe,0x2,0x4,0xfc,0x20,0x28,0x3c,0x20,0x20,0x20,0xa0,0x66,0x3c,
-+0x2,0x1,0x7f,0x40,0x80,0x1f,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x29,0x47,0x80,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0,0x6,0xfc,0x0,
-+0x0,0x40,0x27,0x20,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x3f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x2,0x4,0x8,0x10,0x3f,0x0,0xf0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x20,0x10,0xf8,0x8,
-+0x2,0x2,0x2,0xff,0x4,0x9,0x9,0x11,0x3f,0x1,0x9,0x9,0x11,0x21,0x45,0x2,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x10,0xf8,0x0,0x40,0x20,0x10,0x18,0x8,0x0,
-+0x4,0x4,0x7,0x8,0x14,0x22,0x1,0x2,0xc,0x30,0xc6,0x1,0x0,0x6,0x1,0x0,0x0,0x0,0xf0,0x20,0x40,0x80,0x0,0xc0,0x30,0xe,0x4,0x80,0x0,0x0,0x80,0x40,
-+0x4,0xff,0x4,0x3f,0x1,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x1,0x7f,0x44,0xfe,0x40,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0xfc,
-+0x21,0x2f,0x21,0x27,0xb0,0xaf,0xa0,0x27,0x24,0x27,0x24,0x27,0x20,0x27,0x20,0x2f,0x14,0xfe,0x10,0xfc,0x40,0xfe,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x40,0xfc,0x40,0xfe,
-+0x0,0x8,0x7c,0x0,0x5,0xfe,0x10,0x10,0x20,0x24,0x42,0xfe,0x41,0x1,0x2,0x4,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x28,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x38,0x35,0x53,0x50,0x91,0x11,0x12,0x14,0x10,0x10,0x40,0x40,0x48,0xfc,0x80,0x80,0xa0,0x24,0xfe,0x20,0x28,0x24,0x22,0x22,0xa0,0x40,
-+0x8,0xb,0xa,0x12,0x13,0x32,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0xfe,0x4,0x14,0xfc,0x4,0x14,0xfc,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x10,0x13,0x12,0x12,0x5b,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0xfe,0x4,0x14,0xfc,0x4,0x14,0xfc,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x0,0x40,0x23,0x10,0x10,0x1,0x1,0xb,0x10,0x60,0x20,0x21,0x22,0x24,0x20,0x0,0x40,0x48,0xfc,0x80,0x80,0x20,0x24,0xfe,0x20,0xa0,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x0,0x43,0x32,0x12,0x83,0x42,0x4a,0x12,0x12,0x22,0xe2,0x22,0x22,0x22,0x22,0x22,0x4,0xfe,0x4,0x14,0xfc,0x4,0x14,0xfc,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x1,0xa,0x37,0x24,0x24,0x27,0x24,0x2c,0x37,0x20,0x4,0x4,0x4,0x8,0x10,0x60,0x0,0x8,0xdc,0x48,0x48,0xc8,0x48,0x48,0xd8,0x8,0x40,0x42,0x42,0x42,0x3e,0x0,
-+0x10,0x11,0x10,0x10,0xfc,0x11,0x14,0x18,0x30,0xd0,0x17,0x10,0x10,0x10,0x50,0x20,0x10,0x10,0xd0,0x50,0x10,0x10,0xd0,0x50,0x14,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x8,0x6,0x2,0x10,0xc,0x4,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0x7e,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x78,0x48,0x53,0x50,0x60,0x57,0x48,0x4a,0x4a,0x6a,0x52,0x45,0x44,0x48,0x40,0x40,0x40,0x50,0xf8,0x40,0x48,0xfc,0x40,0x50,0x78,0x40,0x40,0x40,0xc6,0x3c,0x0,
-+0x0,0x7f,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x0,0x8,0x4,0x2,0xff,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x0,0x20,0x40,0x84,0xfe,0x0,
-+0x0,0x47,0x20,0x20,0x3,0x2,0xf2,0x13,0x10,0x11,0x10,0x17,0x10,0x28,0x47,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x10,0xa0,0xfc,0x0,0x6,0xfc,0x0,
-+0x1,0x0,0x1f,0x10,0x97,0x50,0x53,0x12,0x32,0x52,0xd3,0x10,0x21,0x20,0x4f,0x0,0x0,0x84,0xfe,0x0,0xfc,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x10,0xa4,0xfe,0x0,
-+0x10,0x12,0x7f,0x12,0x14,0xff,0x8,0x12,0x3f,0x62,0xa2,0x3e,0x22,0x22,0x3e,0x22,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xe,0x8,0xff,0x28,0x2a,0x49,0x58,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0xf4,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x1,0x3f,0x1,0x1f,0x1,0x7f,0x0,0x1f,0x12,0x11,0xff,0x22,0x21,0x3f,0x0,0x0,0x10,0xf8,0x0,0xf0,0x0,0xfc,0x0,0xf0,0x10,0x14,0xfe,0x10,0x10,0xf8,0x10,0x60,
-+0x10,0x10,0x51,0x50,0x7c,0x53,0x90,0x14,0x19,0x30,0xd7,0x10,0x10,0x10,0x10,0x13,0x20,0x28,0xfc,0x20,0x20,0xfe,0x92,0x54,0x10,0x94,0xfe,0x20,0x20,0x50,0x8c,0x4,
-+0x0,0x44,0x28,0x10,0x2b,0x4a,0x8a,0x1a,0x2a,0x4b,0xa,0x8,0x8,0x8,0x57,0x20,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x48,0x78,0x84,0x4,
-+0x0,0x20,0x13,0x10,0x0,0x7,0xf0,0x10,0x11,0x10,0x17,0x10,0x14,0x18,0x10,0x3,0x20,0x28,0xfc,0x20,0x20,0xfe,0x92,0x54,0x10,0x94,0xfe,0x20,0x20,0x50,0x8c,0x4,
-+0x10,0x10,0x10,0x11,0xfc,0x10,0x17,0x10,0x10,0x11,0x1e,0xe4,0x48,0x10,0x0,0x0,0x40,0x40,0x44,0xf8,0x48,0x50,0xfe,0x48,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,
-+0x8,0x7c,0x48,0x49,0x48,0x78,0x4f,0x48,0x48,0x79,0x4a,0x4c,0x48,0x78,0x48,0x0,0x40,0x40,0x44,0xf8,0x48,0x50,0xfe,0x48,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,
-+0x4,0x7e,0x44,0x55,0x54,0x54,0x57,0x54,0x54,0x55,0x56,0x54,0x10,0x28,0x44,0x84,0x40,0x40,0x44,0xf8,0x48,0x50,0xfe,0x48,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,
-+0x10,0x10,0x10,0x14,0xfe,0x10,0x31,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x13,0x10,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x3b,0x42,0x82,0x7b,0x22,0x22,0xfa,0x23,0x22,0x2a,0x34,0x24,0x8,0x3,0x40,0x24,0xfe,0x50,0x50,0xfc,0x50,0x70,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x3e,0x24,0x24,0x24,0x3c,0x25,0x24,0x24,0x3c,0x24,0x24,0x24,0x27,0x54,0x88,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x1,0x0,0x3f,0x22,0x22,0x3f,0x22,0x23,0x20,0x2f,0x22,0x21,0x20,0x43,0x8c,0x30,0x0,0x84,0xfe,0x20,0x28,0xfc,0x20,0xe0,0x0,0xf0,0x20,0x40,0x80,0x60,0x1e,0x4,
-+0x0,0x40,0x37,0x14,0x84,0x67,0x24,0x4,0x14,0x25,0xe4,0x24,0x28,0x28,0x31,0x26,0x80,0x44,0xfe,0x90,0x94,0xfe,0x90,0xf0,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x10,0x10,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x2a,0x46,0x84,0x8,0x40,0x20,0x20,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x20,0x11,0x11,0xfd,0x1,0x48,0x4b,0x48,0x49,0x49,0x11,0x1d,0xe1,0x41,0x1,0x20,0x20,0x24,0x24,0x24,0xfc,0x0,0xfe,0x44,0xfe,0x54,0x54,0x54,0x54,0x4,0xc,
-+0x20,0x20,0x2b,0x3c,0x50,0x91,0x11,0x15,0xff,0x11,0x10,0x11,0x28,0x24,0x47,0x80,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x8,0x90,0x94,0xfe,0x0,
-+0x21,0x26,0x3c,0x44,0x87,0x7c,0x24,0x27,0xfd,0x24,0x24,0x27,0x2c,0x34,0x25,0x6,0x88,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x0,0x6,0x38,0x20,0x24,0x3e,0x21,0x24,0x3e,0x20,0x20,0x3e,0xe0,0x20,0x20,0x23,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xf8,0x88,0x90,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x44,0x64,0x55,0x4e,0x44,0x7f,0x44,0x4e,0x55,0x64,0x44,0x44,0x7f,0x40,0x1,0x0,0xc,0xf0,0x40,0x40,0x44,0x7e,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x88,0x8,
-+0x21,0x26,0x24,0x44,0x4f,0xf4,0x24,0x47,0x45,0xfc,0x4,0xf,0x34,0xc4,0x5,0x6,0x88,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x10,0x10,0x11,0xfd,0x13,0x15,0x11,0x11,0x1d,0xe1,0x41,0x1,0x1,0x1,0x80,0xa0,0x90,0x84,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,
-+0x10,0x8,0x4,0x1f,0x10,0x10,0x10,0x10,0x1f,0x14,0x4,0x4,0x8,0x8,0x10,0x60,0x10,0x20,0x50,0xf8,0x10,0x10,0x10,0x10,0xf0,0x50,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x7c,0x44,0x48,0x48,0x50,0x48,0x48,0x44,0x44,0x44,0x69,0x51,0x42,0x44,0x48,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0x10,0x8,0x6,0x4,
-+0x0,0x0,0x0,0xfc,0x7,0x4,0x48,0x29,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x24,0x22,0x3f,0x20,0x2f,0xf8,0x2f,0x20,0x2f,0x21,0x22,0x3f,0xe2,0x42,0xa,0x4,0x20,0xa0,0xe0,0x24,0xbe,0xc4,0xa4,0x24,0xa4,0x28,0x28,0x90,0x10,0x28,0x46,0x84,
-+0x0,0x8,0x7c,0x4f,0x48,0x48,0x4a,0x4a,0x4a,0x4a,0x4b,0x7a,0x48,0x0,0x0,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,
-+0x8,0x7f,0x48,0x49,0x49,0x49,0x79,0x51,0x11,0x59,0x50,0x57,0x59,0xe0,0x40,0x0,0x88,0xfe,0x54,0xfe,0x54,0xdc,0x4,0xfc,0x4,0xfc,0x8,0xfe,0x8,0x88,0x28,0x10,
-+0x10,0xa,0xff,0x0,0x7e,0x43,0x42,0x7e,0x0,0x7e,0x4,0x8,0xfe,0x8,0x29,0x12,0x40,0x40,0x44,0x7e,0x88,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x11,0x14,0xfe,0x11,0x55,0x55,0x55,0x55,0x7d,0x55,0x11,0x14,0x18,0x10,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x50,0x8c,0x4,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x49,0x49,0x49,0x4f,0x49,0x41,0x40,0x40,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0x24,0x24,0xe4,0x4,0x14,0xf4,0x4,0xfc,0x4,
-+0x10,0x10,0x1c,0x23,0x20,0x7d,0x91,0x11,0xfd,0x11,0x11,0x10,0x14,0x18,0x10,0x0,0x20,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x48,0x48,0x8f,0x8,0x78,0x80,0x80,0x84,0xfe,0x80,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x47,0x24,0x24,0x7,0x4,0xe5,0x25,0x25,0x25,0x25,0x29,0x21,0x50,0x8f,0x0,0x38,0xc0,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x6,0xfc,0x0,
-+0x20,0x2f,0x24,0x25,0xfa,0x25,0x28,0x20,0x3f,0xe0,0x28,0x25,0x22,0x25,0xa8,0x50,0x0,0xfc,0xa4,0x28,0x10,0x28,0xc4,0x0,0xbc,0x84,0xc4,0x28,0x10,0x28,0xce,0x84,
-+0x0,0x8,0x7c,0x49,0x4a,0x48,0x48,0x49,0x4e,0x48,0x49,0x7a,0x48,0x0,0x1,0x6,0x40,0x40,0xfc,0x8,0x90,0x60,0x40,0xa0,0x7e,0x84,0x88,0x50,0x20,0x40,0x80,0x0,
-+0x2,0x2,0x7,0x8,0x18,0x25,0x2,0xc,0x71,0x2,0xc,0x12,0x21,0x1,0xe,0x70,0x0,0x0,0xf0,0x20,0x40,0x80,0x80,0x80,0xfc,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,
-+0x1,0x1,0x7f,0x2,0x4,0x8,0x30,0xc0,0x0,0x7f,0x4,0x2,0x2,0x0,0x0,0x0,0x0,0x8,0xfc,0x80,0x40,0x30,0xe,0x24,0x20,0xfc,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x16,0x10,0x1f,0x10,0x1c,0xf1,0x42,0x4,0x8,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x4c,0x40,0xfe,0xc0,0xe0,0x50,0x48,0x46,0x44,0x40,
-+0x8,0x10,0x3c,0x24,0x3c,0x24,0x3d,0x24,0xff,0x14,0x14,0x24,0x24,0x45,0x96,0x8,0x8,0xfc,0x88,0x88,0x88,0x88,0x26,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x26,0x24,0x20,
-+0x0,0xf,0x8,0x8,0x8,0x8,0x31,0x1,0xff,0x3,0x3,0x5,0x9,0x11,0x61,0x1,0x20,0xf0,0x20,0x20,0x20,0x20,0x1c,0x0,0xfe,0x0,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x8,0x7d,0x49,0x49,0x49,0x49,0x7a,0x10,0x17,0x58,0x50,0x51,0x5d,0xe2,0x44,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xc,0x40,0xfe,0xc0,0xe0,0x50,0x4e,0x44,0x40,0x40,
-+0x8,0x10,0x3c,0x25,0x35,0x2e,0x24,0xfc,0x24,0x34,0x2c,0x24,0x24,0x44,0x94,0x8,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xa0,0xc0,0x80,0x84,0x84,0x7c,0x0,
-+0x2,0x3f,0x22,0x22,0x22,0x22,0x49,0x9,0xff,0x8,0x1c,0x2b,0x49,0x88,0x8,0x8,0x4,0x4,0x4,0x24,0x24,0x24,0xa4,0x24,0xa4,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x17,0x11,0x59,0x56,0x53,0x94,0x19,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0x84,0xfe,0x0,0xfc,0x20,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x0,0x7b,0x48,0x49,0x52,0x4c,0x48,0x68,0x50,0x41,0x41,0x3f,0x1,0x1,0xff,0x0,0x44,0xfe,0x88,0xfc,0x88,0xf8,0x88,0xf8,0x88,0x98,0x0,0xf8,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xf2,0x41,0x10,0xd4,0x92,0x90,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2,
-+0x10,0x10,0x13,0x54,0x54,0x57,0x54,0x54,0x54,0x57,0x54,0x54,0x5c,0x74,0x42,0x1,0x10,0xd0,0x94,0x92,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2,
-+0x8,0x38,0xec,0x2a,0x28,0xfe,0x28,0x28,0x38,0xea,0x2c,0x28,0x35,0x24,0xa5,0x42,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x80,0xfe,0x2,0x12,0xfa,0x2,0x14,0x8,
-+0x8,0x9,0xf,0x11,0x11,0x3f,0x51,0x91,0x11,0x13,0x1d,0x11,0x11,0x11,0x15,0x12,0x20,0xa8,0x24,0x20,0x24,0xfe,0x20,0x20,0xa4,0x18,0x10,0x30,0x48,0x8a,0x6,0x2,
-+0x10,0x8,0x7f,0x41,0x92,0x1e,0x22,0x54,0x8,0x14,0x22,0x7f,0xa2,0x22,0x3e,0x20,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x46,0x82,
-+0x1,0x41,0x31,0x11,0x1,0x3,0xf5,0x19,0x11,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x20,0x20,0x24,0x2c,0x30,0x20,0x60,0xa0,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x27,0x24,0x24,0x24,0x45,0x2a,0x10,0x28,0x44,0x86,0x1,0x10,0xd0,0x94,0x92,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2,
-+0x0,0x7f,0x4,0x24,0x14,0x14,0x4,0x4,0xff,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x8,0xfc,0x40,0x48,0x58,0x60,0x40,0x44,0xfe,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0,
-+0x0,0x3f,0x20,0x20,0x20,0x27,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x43,0x80,0x8,0xfc,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0xa0,0x40,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x14,0x58,0x20,0x0,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x90,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x47,0x24,0x27,0x4,0x7,0xe2,0x25,0x2c,0x34,0x25,0x24,0x27,0x50,0x8f,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x88,0x88,0x48,0x28,0xd0,0x6,0xfc,0x0,
-+0x0,0x77,0x55,0x55,0x77,0x0,0x7f,0x0,0xff,0x10,0x22,0x3f,0x2,0x2,0x12,0xc,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x20,0x23,0x3c,0x24,0x4b,0x40,0xa0,0x20,0x21,0x22,0x20,0x28,0x30,0x22,0x1,0x10,0xd0,0x94,0x92,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2,
-+0x0,0x3f,0x21,0x21,0x2f,0x21,0x22,0x24,0x28,0x3f,0x20,0x2,0x51,0x50,0x90,0xf,0x8,0xfc,0x8,0x48,0xe8,0x8,0x88,0x68,0x28,0xf8,0x8,0x0,0x84,0x92,0x12,0xf0,
-+0x0,0xff,0x2,0x2,0x4,0x7f,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0x4,0xfe,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x54,0x8,
-+0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0,
-+0x0,0x7f,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0x8,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0x3e,0xe0,0x20,0x20,0x20,0x20,
-+0x8,0xc,0x8,0x1f,0x20,0x41,0x81,0x1,0x9,0x9,0x11,0x11,0x21,0x1,0x5,0x2,0x0,0x0,0x8,0xfc,0x8,0x10,0x0,0x0,0x40,0x20,0x10,0x18,0x8,0x0,0x0,0x0,
-+0x20,0x23,0x21,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x27,0x20,0x28,0x30,0x20,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0x8,
-+0x0,0x47,0x32,0x12,0x83,0x62,0x22,0xb,0x12,0x22,0xe2,0x2f,0x20,0x20,0x20,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,
-+0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x0,0x0,0xff,0x0,0x3f,0x0,0x7f,0x0,0x3f,0x20,0x24,0x24,0x24,0xa,0x11,0x60,0x28,0x24,0xfe,0x20,0xa0,0x20,0xe0,0x20,0xa0,0x90,0x90,0x90,0x92,0xa,0x8a,0x84,
-+0x1,0x11,0x11,0x21,0x7f,0x2,0x2,0x7,0x6,0xa,0x9,0x10,0x21,0x42,0x8c,0x30,0x0,0x20,0x10,0x4,0xfe,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x7f,0x44,0x44,0x7f,0x20,0x18,0x8,0x0,0xf0,0x10,0x12,0x14,0x18,0x10,0x0,0x4,0xfe,0x44,0x44,0xfc,0x0,0x8,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x28,0x10,
-+0x10,0x1f,0x28,0x45,0x0,0x8,0x8,0x10,0x37,0x50,0x90,0x10,0x10,0x10,0x13,0x10,0x40,0x7c,0xa0,0x10,0x80,0x90,0x88,0xfe,0x80,0x50,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x57,0x90,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x10,0x80,0xa0,0x98,0x88,0x80,0xfc,0x80,0x88,0x88,0x50,0x60,0x40,0xa0,0x12,0xa,0x6,
-+0x0,0x0,0x7f,0x4,0x3,0x1,0x3f,0x0,0x0,0x1,0x6,0x8,0x30,0x48,0x7,0x0,0x10,0x78,0x80,0x0,0x0,0x0,0xf8,0x10,0x60,0x80,0x0,0x0,0x0,0x6,0xfc,0x0,
-+0x20,0x17,0x10,0x45,0x45,0x49,0x49,0x5f,0x69,0x48,0x48,0x49,0x4a,0x48,0x48,0x40,0x4,0xfe,0x4,0x44,0x24,0x4,0xf4,0x4,0x24,0xc4,0x84,0x44,0x54,0x34,0x4,0xc,
-+0x0,0x40,0x30,0x10,0x87,0x60,0x20,0x8,0x17,0x20,0xe0,0x20,0x21,0x22,0x27,0x20,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x0,0x10,0xf8,0x20,0x27,0x20,0x20,0xf8,0x2f,0x20,0x20,0x20,0x39,0xe2,0x47,0x0,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0x8,0x4,0xfe,0x2,
-+0x8,0xff,0x8,0x4f,0x24,0x22,0x8f,0x62,0x2a,0x14,0x2f,0xe4,0x27,0x24,0x27,0x24,0x24,0xfe,0x20,0xf8,0x90,0xa0,0xfc,0xa0,0x90,0x8e,0xf4,0x90,0xf0,0x90,0xf0,0x10,
-+0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x54,0x11,0x11,0x12,0x14,0x8,0xfc,0x88,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0x88,0xa,0xa,0x6,0x0,
-+0x0,0x3f,0x11,0xd,0x5,0xff,0x9,0x11,0x3f,0xd1,0x11,0x1f,0x11,0x11,0x1f,0x10,0x78,0x80,0x10,0x30,0x44,0xfe,0x20,0x10,0xfe,0x14,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0xe,0xf1,0x54,0x38,0xfe,0x11,0x54,0x92,0x7c,0x54,0x55,0x7c,0x54,0x54,0x7d,0x44,0x4,0xde,0x44,0x44,0x44,0x54,0xcc,0x44,0x44,0xcc,0x54,0x44,0x44,0x44,0x54,0x88,
-+0x10,0x14,0x12,0xfd,0x12,0x38,0x56,0x91,0x12,0x14,0x1,0xff,0x2,0x4,0x18,0x60,0x10,0x50,0x94,0x7e,0x90,0x38,0xd4,0x12,0x90,0x50,0x4,0xfe,0x80,0x40,0x3c,0x8,
-+0x8,0xfd,0x11,0x11,0x21,0x29,0x7d,0xa9,0x29,0x29,0x29,0x29,0x3a,0x2a,0x4,0x8,0x10,0xf8,0x10,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x10,0x11,0x3d,0x21,0x41,0xfd,0x11,0x11,0xfd,0x11,0x11,0x15,0x1a,0x12,0x4,0x8,0x10,0xf8,0x10,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x22,0x3f,0x40,0xbe,0x2a,0xff,0x2a,0x3e,0x2,0x1f,0x1,0x6,0x3f,0x9,0x19,0x22,0x20,0x24,0x7e,0xc4,0x28,0x90,0x2e,0xc4,0x20,0xc0,0x80,0x10,0xf8,0x20,0x18,0x8,
-+0x0,0xf,0x8,0x8,0x8,0xa,0x9,0x9,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xa0,0xa0,0x20,0x20,0x22,0x22,0x22,0x1e,0x0,
-+0x10,0x13,0x10,0x14,0x59,0x51,0x51,0x91,0x11,0x11,0x11,0x29,0x24,0x44,0x81,0x2,0x4,0xfe,0x40,0x88,0xfc,0x8,0x28,0x28,0x28,0x48,0x48,0x48,0x80,0x90,0xc,0x4,
-+0x0,0x0,0x3f,0x20,0x20,0x3f,0x24,0x24,0x22,0x22,0x21,0x20,0x41,0x42,0x84,0x18,0x10,0x78,0x80,0x0,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x40,0x33,0x12,0x2,0x2,0xf2,0x12,0x12,0x12,0x12,0x14,0x15,0x28,0x44,0x3,0x8,0x1c,0xe0,0x0,0x0,0xf8,0x8,0x90,0x50,0x20,0x50,0x8c,0x4,0x0,0x6,0xfc,
-+0x8,0x8,0xff,0x8,0x20,0x1b,0x4a,0x22,0x22,0xa,0xf2,0x22,0x22,0x22,0x21,0x20,0x20,0x24,0xfe,0x20,0x10,0xf8,0x10,0x10,0x10,0x50,0x20,0x0,0x2,0x2,0xfe,0x0,
-+0x4,0x7e,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x11,0x2a,0x44,0x81,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x48,0x8e,0x4,
-+0x2,0x44,0x29,0x11,0x29,0x49,0x89,0x9,0x19,0x29,0x49,0x89,0x9,0x9,0x50,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x20,0x20,0x21,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x21,0x25,0x29,0x32,0x24,0x9,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x48,0x8e,0x4,
-+0x0,0x40,0x37,0x10,0x80,0x40,0x47,0x10,0x10,0x20,0xe0,0x21,0x26,0x29,0x20,0x20,0x10,0x38,0xc0,0x80,0x40,0x40,0xfc,0x8,0x30,0x40,0x80,0x0,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x10,0x10,0x1c,0xf0,0x41,0x1,0x2,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x8,0x8,0xff,0x8,0xa,0x1,0xff,0x4,0x4,0x7,0x4,0x4,0x8,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x20,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x4,0x3,0x1,0x0,0xff,0x4,0x4,0x7,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x4,0x3e,0x24,0x24,0x27,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x25,0x25,0x4e,0x84,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x2,0x1,0x3f,0x20,0x3f,0x21,0x20,0x3f,0x22,0x22,0x23,0x22,0x44,0x44,0x88,0x10,0x0,0x8,0xfc,0x8,0xf8,0x0,0x84,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xa0,0x40,
-+0x0,0x7c,0x44,0x48,0x4f,0x50,0x48,0x48,0x44,0x44,0x44,0x68,0x51,0x41,0x42,0x44,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x10,0x10,0xff,0x24,0x24,0x24,0x24,0x44,0x28,0x10,0x29,0x45,0x82,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x0,0x20,0x10,0x10,0x7,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x20,0x20,0x47,0xfc,0x10,0x20,0x40,0xfc,0x40,0x0,0x1d,0xe1,0x42,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x20,0x10,0x10,0x0,0xff,0x20,0x24,0x3e,0x24,0x24,0x24,0x24,0x44,0x54,0x89,0x2,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x8,0x8,0xff,0x8,0x4,0x4,0x7c,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x4,0x4,0x20,0x24,0xfe,0x20,0x40,0x48,0x7c,0x40,0x48,0x7c,0x40,0x44,0x7e,0x40,0x40,0x40,
-+0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x40,0x40,0x44,0x7e,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,
-+0x0,0x8,0x7c,0x4f,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x4f,0x0,0x0,0x0,0x90,0x90,0x94,0x9e,0x90,0x90,0x94,0x9e,0x90,0x90,0x90,0x94,0x9e,0x90,0x90,0x90,
-+0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x24,0x2c,0x30,0x20,0x30,0x2c,0x24,0x20,0x20,0x10,0x12,0xa,0x4,
-+0x4,0x7f,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x54,0x88,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x2,0x2,0x2,0xfe,0x0,
-+0x0,0x7f,0x42,0x42,0x5e,0x42,0x42,0x5e,0x42,0x42,0x7e,0x42,0x42,0x42,0x7f,0x0,0x4,0xfe,0x40,0x50,0x78,0x40,0x50,0x78,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x10,0x10,0x7,0x0,0xf0,0x10,0x13,0x10,0x10,0x10,0x17,0x14,0x18,0x10,0x0,0x90,0x90,0x94,0x9e,0x90,0x90,0x90,0x9c,0x90,0x90,0x94,0x9e,0x90,0x90,0x90,0x90,
-+0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x49,0x79,0x4a,0x2,0x4,0x8,0x40,0x50,0x48,0x48,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,0x0,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x24,0x54,0x88,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,0x20,
-+0x1,0x0,0x3f,0x20,0x24,0x24,0x2f,0x21,0x23,0x22,0x25,0x24,0x28,0x30,0x43,0x8c,0x0,0x88,0xfc,0x80,0x90,0x88,0xfe,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x1,0x41,0x2f,0x21,0x1,0x8f,0x49,0x9,0x1f,0x29,0xe1,0x21,0x22,0x22,0x24,0x28,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xfe,0x22,0x22,0x2a,0x24,0x20,0x20,0x20,
-+0x4,0x7f,0x4,0x7f,0x44,0x7f,0x4,0x8,0x3f,0xd0,0x11,0x11,0x11,0x2,0xc,0x30,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x42,0x4a,0xf4,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x8,0x8,0xff,0x8,0x4,0x4,0x8,0x10,0x20,0xcf,0x4,0x4,0x4,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x80,0x80,0x40,0x30,0xe,0xe4,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x1,0x8,0x48,0x48,0x48,0x84,0x84,0x2,0xfc,0x44,0x44,0x44,0x44,0x44,0x44,0x94,0x8,
-+0x0,0x8,0x7c,0x48,0x48,0x49,0x49,0x4a,0x4d,0x48,0x48,0x78,0x49,0x1,0x2,0x4,0x20,0xa0,0xa0,0x90,0x90,0x8,0xe,0x4,0xf8,0x88,0x88,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0x1,0x9,0x8,0x10,0x3f,0x48,0x8,0x8,0x12,0x21,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x8,0x8,0x88,0x48,0xb8,0xa8,0x88,0x8a,0x8a,0x4,
-+0x0,0x4,0x4,0x8,0x8,0x10,0x20,0x4f,0x84,0x4,0x4,0x4,0x4,0x8,0x11,0x20,0x80,0x80,0x40,0x40,0x20,0x10,0x8,0xee,0x24,0x20,0x20,0x20,0x20,0x20,0x40,0x80,
-+0x10,0x10,0x20,0x20,0x48,0xf9,0x11,0x22,0x45,0xf8,0x40,0x0,0x19,0xe1,0x42,0x4,0x20,0xa0,0xa0,0x90,0x90,0x8,0xe,0x4,0xf8,0x88,0x88,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x10,0x10,0x10,0x1c,0xf0,0x40,0x1,0x6,0x40,0x20,0x20,0x4,0xfe,0x88,0x88,0x88,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x8,0x8,0xfe,0x18,0x2c,0x4b,0x8,0x1,0x11,0x9,0xa,0x4,0x8,0x30,0xc0,0x20,0x20,0x24,0xfe,0x60,0xb8,0x24,0x20,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x41,0x31,0x11,0x82,0x64,0x28,0x7,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x28,0x20,0x20,0x20,0x10,0x10,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x10,0x10,0x10,0x54,0x38,0x11,0xfd,0x12,0x39,0x34,0x50,0x90,0x11,0x11,0x12,0x14,0x20,0xa0,0xa0,0x90,0x90,0x8,0xe,0x4,0xf8,0x88,0x88,0x88,0x8,0x8,0x28,0x10,
-+0x1,0x1,0x1,0xff,0x2,0x4,0x8,0x30,0xdf,0x11,0x11,0x1f,0x11,0x11,0x1f,0x10,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0x1e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x8,0x9,0x9,0x11,0x12,0x32,0x54,0x9b,0x11,0x11,0x11,0x11,0x12,0x12,0x14,0x10,0x20,0x20,0x20,0x10,0x10,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x0,0x4,0x4,0x8,0x1f,0x24,0xc4,0x9,0x30,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x80,0x80,0x40,0x20,0xf0,0x2e,0x24,0x20,0xc0,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0,
-+0x10,0x10,0x13,0x10,0x59,0x57,0x51,0x93,0x12,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0x50,0xf8,0x40,0x54,0xfe,0x10,0xf8,0x8,0x48,0x48,0x48,0x48,0xa0,0x18,0x8,
-+0x11,0xd,0x5,0x7f,0x3,0x5,0x19,0x4,0x4,0x3f,0x4,0x4,0xff,0x8,0x18,0x20,0x10,0x30,0x40,0xfc,0x80,0x40,0x3c,0x48,0x40,0xf8,0x40,0x44,0xfe,0x20,0x18,0x8,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xa,0x7f,0x8,0xa,0xff,0x8,0xa,0x7f,0x8,0x8,0xf,0x78,0x20,0x0,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x3b,0x36,0x52,0x52,0x92,0x13,0x12,0x14,0x14,0x18,0x0,0x8,0xfc,0x8,0x8,0x8,0x18,0xa8,0x48,0x48,0xa8,0x18,0x8,0xa,0xa,0x6,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x57,0x54,0x7c,0x51,0x14,0x1d,0xe4,0x40,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x11,0x56,0x54,0x54,0x57,0x54,0x54,0x55,0x5c,0x65,0x0,0x0,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x1d,0x22,0x20,0x7c,0x93,0x10,0xfc,0x11,0x10,0x15,0x18,0x10,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20,
-+0x0,0x3f,0x20,0x28,0x24,0x22,0x22,0x21,0x21,0x22,0x22,0x24,0x28,0x30,0x40,0x80,0x10,0xf8,0x10,0x50,0x50,0x90,0x90,0x10,0x10,0x90,0x90,0x50,0x50,0x12,0xa,0x6,
-+0x1,0x0,0x1f,0x10,0x97,0x54,0x56,0x15,0x34,0x54,0xd4,0x14,0x25,0x2a,0x48,0x10,0x0,0x84,0xfe,0x8,0xfc,0x8,0x18,0x18,0xa8,0x48,0x48,0xa8,0x18,0x1a,0xa,0x6,
-+0x10,0x10,0x10,0x15,0x5a,0x50,0x50,0x93,0x10,0x10,0x29,0x24,0x45,0x40,0x80,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20,
-+0x0,0x41,0x23,0x24,0x0,0x1,0xee,0x20,0x27,0x20,0x23,0x20,0x27,0x20,0x50,0x8f,0x80,0xfc,0x8,0xb0,0x40,0xb0,0x4e,0x40,0xfc,0x40,0xf8,0x40,0xfc,0x40,0x46,0xfc,
-+0x0,0x47,0x30,0x12,0x2,0xa,0x12,0x12,0x23,0xe0,0x20,0x2f,0x20,0x20,0x20,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10,
-+0x10,0x10,0x24,0x23,0x4a,0xf8,0x17,0x22,0x42,0xfa,0x42,0x3,0x1a,0xe2,0x45,0x8,0x40,0x7c,0x88,0x50,0x20,0xd8,0x26,0xf8,0x20,0xf8,0x20,0xfc,0x20,0x20,0x26,0xfc,
-+0x0,0x47,0x24,0x24,0x6,0x5,0xe4,0x24,0x24,0x24,0x25,0x2e,0x34,0x24,0x8,0x10,0x8,0xfc,0x8,0x8,0x18,0x18,0xa8,0x48,0x48,0xa8,0x18,0x18,0x8,0xa,0xa,0x6,
-+0x1,0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x9,0x31,0xcf,0x1,0x1f,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0x1e,0xe4,0x0,0xf0,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x20,0x2f,0x20,0x28,0x24,0x22,0x21,0x22,0x24,0x28,0x20,0x40,0x80,0x10,0xf8,0x10,0x10,0xf0,0x50,0x50,0x90,0x90,0x10,0x90,0xd0,0x50,0x12,0xa,0x6,
-+0x10,0x12,0x12,0x2f,0x22,0x62,0xaf,0x2a,0x2a,0x2f,0x22,0x22,0x22,0x24,0x28,0x20,0x40,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x0,0xff,0x0,0x1,0x3,0x5,0x9,0x31,0xc1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x4,0xfe,0x80,0x0,0x0,0x60,0x18,0x6,0x12,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x40,0x30,0xe,0x4,
-+0x8,0xff,0x8,0x7f,0x49,0x7f,0x49,0x7f,0x49,0x8,0xff,0x10,0x1e,0x12,0x22,0x47,0x20,0xa0,0x20,0x24,0x7e,0x84,0x44,0x44,0x28,0x28,0x90,0x10,0x28,0x48,0x86,0x4,
-+0x4,0x3e,0x24,0x25,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x24,0x4d,0x86,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x20,0x57,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x77,0x14,0x24,0x24,0x44,0x84,0xc,0xf0,0x2,0x54,0x54,0x0,0x7c,0x8,0x10,0x14,0xfe,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x10,0x11,0xfc,0x10,0x14,0x1b,0x30,0xd0,0x10,0x10,0x10,0x10,0x51,0x26,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x11,0x11,0x17,0xf9,0x11,0x17,0x1d,0x35,0xd7,0x11,0x11,0x11,0x12,0x54,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xfe,0x22,0x22,0x2a,0x24,0x20,0x20,
-+0x10,0x17,0x20,0xfb,0x22,0x52,0x53,0xf8,0x17,0x14,0xfc,0x17,0x14,0x14,0x17,0x14,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x10,0x11,0x14,0x7e,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x11,0x8,0xfc,0x0,0xf8,0x88,0x88,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0xa,0x7f,0xa,0x7f,0x4a,0x7f,0xa,0xa,0x12,0x62,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x8,0xc8,0x48,0xc8,0x8,0xe8,0x28,0xaa,0x4a,0x4,
-+0x10,0x12,0x1f,0x28,0x45,0x88,0x8,0x17,0x30,0x52,0x91,0x11,0x10,0x10,0x10,0x10,0x40,0x44,0x7e,0xa0,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x8,0x8,0x8,0x10,0x10,0x3f,0x50,0x90,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x40,0x40,0x50,0x4c,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x10,0x10,0x17,0x20,0x22,0x62,0xa0,0x27,0x20,0x20,0x2f,0x20,0x20,0x20,0x21,0x20,0x8,0x3c,0xc0,0x8,0x48,0x50,0x0,0xf8,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x22,0x4a,0x84,0x8,0xfc,0x88,0x88,0x88,0x98,0x80,0xfc,0xa4,0xa4,0xa8,0x90,0xa8,0xa8,0xc6,0x84,
-+0x40,0x30,0x17,0x0,0x82,0x62,0x20,0xb,0x10,0x20,0xef,0x20,0x20,0x20,0x21,0x20,0x8,0x3c,0xc0,0x8,0x48,0x50,0x0,0xf8,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x40,0x30,0x17,0x0,0x81,0x60,0x20,0xf,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x48,0xfc,0x0,0x10,0xa0,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x17,0x10,0x3,0xfa,0xa,0x13,0x38,0x57,0x94,0x14,0x17,0x14,0x14,0x17,0x14,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x20,0x10,0x10,0x1,0xfd,0xb,0x15,0x31,0x55,0x99,0x15,0x11,0x11,0x11,0x11,0x11,0x90,0x90,0x94,0x12,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x28,0x28,0x46,0x84,0x0,
-+0x4,0x4,0x4,0x7f,0x4,0x4,0x7f,0x44,0x44,0x7f,0x44,0x4,0x8,0x30,0xc0,0x0,0x40,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x1,0x1,0xff,0x1,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x21,0x21,0x20,0x20,0x14,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x17,0x18,0x30,0xd0,0x10,0x11,0x11,0x12,0x54,0x28,0x0,0x8,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x15,0xfe,0x20,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x49,0x9,0x9,0x9,0x28,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x10,0x10,0x17,0x24,0x24,0x64,0xa5,0x25,0x27,0x25,0x25,0x25,0x29,0x29,0x31,0x21,0x80,0x44,0xfe,0x80,0x88,0x88,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x28,0x10,
-+0x4,0x8,0x14,0x62,0x1,0xe,0x30,0xdf,0x1,0x1,0x3f,0x1,0x9,0x5,0x7f,0x0,0x40,0x20,0x50,0x8c,0x0,0xe0,0x1e,0xf4,0x0,0x10,0xf8,0x0,0x20,0x48,0xfc,0x0,
-+0x4,0x8,0x34,0x3,0xc,0x30,0xc0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x20,0x40,0x0,0x40,0x20,0x58,0x80,0x60,0x1e,0xe4,0x0,0x0,0x10,0xf8,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x3c,0x27,0x24,0x24,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x25,0x45,0x8d,0x28,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x8,0x7c,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4b,0x7a,0x4a,0x4a,0x4a,0x5a,0x84,0x8,0x40,0x24,0xfe,0x40,0x44,0x44,0x84,0xfe,0x84,0xa4,0x94,0x94,0x84,0x84,0x94,0x88,
-+0x2,0x1,0x3f,0x22,0x22,0x22,0x24,0x27,0x2c,0x35,0x24,0x24,0x24,0x44,0x84,0x4,0x0,0x8,0xfc,0x0,0x10,0x10,0x14,0xfe,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x1,0x0,0x3f,0x22,0x22,0x25,0x2c,0x34,0x24,0x2f,0x29,0x2a,0x48,0x49,0x8a,0x8,0x0,0x84,0xfe,0x10,0x14,0xfe,0x90,0x10,0xb4,0xfe,0x44,0xa4,0x84,0x44,0x34,0x8,
-+0x8,0x8,0xa,0x7f,0x8,0xa,0xff,0x8,0x28,0x2a,0x2f,0x28,0x28,0x58,0x88,0x7,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x6,0xfc,
-+0x0,0xff,0x0,0x3f,0x20,0x20,0x3f,0x0,0x7f,0x44,0x44,0x7f,0x44,0x44,0x7f,0x40,0x44,0xe4,0x84,0xd4,0x94,0x94,0x94,0x54,0xf4,0x54,0x54,0xd4,0x44,0x44,0xd4,0x48,
-+0xff,0x4,0x3f,0x24,0x3f,0x12,0x23,0x4a,0x17,0x32,0x53,0x91,0x13,0x1d,0x10,0x17,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfc,0x0,0xf8,0x48,0xf8,0x0,0xf8,0x10,0xe2,0x1c,
-+0x4,0x7e,0x44,0x55,0x54,0x54,0x57,0x54,0x55,0x55,0x55,0x11,0x29,0x27,0x45,0x80,0x8,0x8,0x2c,0xfa,0x8,0x8,0xfe,0x48,0x48,0x78,0x48,0x48,0x78,0xca,0xa,0x4,
-+0x10,0x1f,0x20,0x2f,0x48,0x8f,0x8,0xf,0x4,0xf,0xc,0x12,0x21,0x42,0x4,0x38,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf0,0x20,0x40,0x80,0x40,0x30,0xe,
-+0x8,0x8,0xf,0x10,0x17,0x34,0x57,0x94,0x17,0x14,0x10,0x1f,0x12,0x11,0x10,0x10,0x50,0x48,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x8,0x8,0x8,0x10,0x10,0x37,0x50,0x90,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x1,0x2,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x11,0x1,0xff,0x1,0x1,0x1,0x0,0x10,0xf8,0x10,0xf0,0x0,0xf0,0x10,0x10,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x4,0x8,0x10,0x20,0x40,0x8,0x4,0x4,0x2,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x20,0x10,0xc,0x24,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x9,0x7d,0x49,0x4b,0x4d,0x79,0x49,0x49,0x49,0x79,0x4a,0x4c,0x48,0x48,0x49,0x9e,0x4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x4,0xf,0x10,0x20,0x5f,0x10,0x11,0x11,0x11,0x11,0x11,0x2,0x4,0x18,0x60,0x0,0x0,0xe0,0x40,0x90,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x18,0x8,
-+0x2,0x1,0x7f,0x40,0x9f,0x0,0x1f,0x10,0x1f,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x20,0x0,0x0,0xfe,0x22,0xf4,0x0,0xf0,0x10,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x20,0x18,0x8,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x7c,0x44,0x49,0x49,0x53,0x4d,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x24,0x25,0x48,0x28,0x10,0x28,0x47,0x84,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x10,0x10,0x27,0x20,0x43,0xfa,0x13,0x22,0x43,0xfa,0x40,0x7,0x1a,0xe1,0x40,0x0,0x50,0x48,0xfc,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0x10,0xfe,0x10,0x10,0x10,0x20,
-+0x0,0x8,0x7c,0x49,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10,
-+0x1,0xf,0x79,0x4b,0x4a,0x4b,0x4a,0x4b,0x49,0x49,0x4a,0x7c,0x4a,0x2,0x3,0x0,0x10,0xfe,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x64,0x94,0x4,0xe4,0xc,
-+0x7,0x8,0x7f,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x49,0x49,0x7f,0x48,0x0,0x1,0xe,0xfc,0x80,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x3e,0xc0,0xa0,0x42,0xb2,0xe,
-+0x1,0x40,0x2f,0x0,0x1,0x1,0xe2,0x27,0x20,0x20,0x20,0x25,0x2a,0x30,0x23,0xc,0x0,0x84,0xfe,0x80,0x0,0x10,0x10,0xe0,0x48,0x48,0x90,0x20,0x50,0x88,0x4,0x4,
-+0x0,0x4,0xfe,0x4,0x4,0x5,0x7e,0x44,0x40,0x40,0x40,0x40,0x4c,0x70,0x41,0x6,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x17,0x14,0xfc,0x17,0x34,0x3c,0x57,0x54,0x95,0x15,0x16,0x14,0x10,0x10,0x0,0x84,0xfe,0x88,0x88,0xa8,0xa8,0xbe,0x88,0x10,0x18,0xa8,0xaa,0x4a,0x86,0x0,
-+0x10,0x13,0x10,0x1c,0x21,0x21,0x7d,0x91,0x11,0x7c,0x10,0x10,0x14,0x18,0x10,0x0,0x4,0xfe,0x20,0x28,0x3c,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x1,0x7f,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x8,0xfc,0x0,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x41,0x2f,0x29,0x9,0x8f,0x49,0x49,0x1f,0x28,0x28,0xca,0x4b,0x4d,0x48,0x40,0x41,0x4,0xfe,0x10,0x10,0x50,0x50,0x54,0x7e,0x10,0x10,0x20,0x30,0x52,0x52,0x8e,0x0,
-+0x0,0x3f,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xf,0x8,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x20,0xe0,0x20,
-+0x10,0x10,0x11,0x10,0xfc,0x10,0x30,0x3b,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x11,0x11,0x11,0x11,0xff,0x11,0x39,0x35,0x51,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x12,0x1f,0x28,0x45,0x80,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3d,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x44,0x94,0x8,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x8,0x8,0x9,0x7e,0x8,0x8,0xfe,0x9,0x28,0x28,0x2e,0x28,0x28,0x38,0x48,0x87,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x6,0xfc,
-+0x0,0x0,0x7f,0x40,0x7f,0x40,0x5f,0x51,0x51,0x5f,0x90,0x2,0x29,0x28,0x48,0x7,0x50,0x48,0xfc,0x40,0xc0,0x48,0x48,0x50,0x22,0x52,0x8e,0x0,0x90,0xac,0x24,0xe0,
-+0x8,0x1d,0xf0,0x10,0x10,0xfc,0x10,0x3b,0x34,0x50,0x50,0x90,0x10,0x10,0x10,0x10,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x7c,0x4,0x8,0xff,0x24,0x24,0x3c,0x24,0x3c,0x24,0x24,0xfe,0x4,0x5,0x6,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x10,0xfe,0x44,0x29,0xfe,0x1,0x7c,0x44,0x7d,0x44,0x7c,0x10,0xfe,0x10,0x10,0x11,0x40,0x78,0xd0,0x20,0x58,0x86,0xf8,0x20,0xfc,0x0,0xf8,0x88,0xa8,0xa8,0x58,0x84,
-+0x0,0x7f,0x40,0x40,0x48,0x44,0x42,0x41,0x42,0x44,0x48,0x50,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0x64,0x84,0x4,0x84,0x64,0x34,0x14,0x4,0x4,0x14,0x8,
-+0x1,0x7f,0x41,0x41,0x63,0x63,0x55,0x55,0x49,0x55,0x53,0x63,0x41,0x41,0x45,0x42,0x4,0x84,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x10,0x13,0x12,0x1e,0x23,0x22,0x7e,0x92,0x12,0x7e,0x12,0x13,0x16,0x1a,0x12,0x2,0x4,0xfe,0x4,0x4,0xc,0x8c,0x54,0x24,0x24,0x54,0x8c,0xc,0x4,0x4,0x14,0x8,
-+0x20,0x22,0x3f,0x48,0x48,0x88,0x9,0xff,0x8,0x2a,0x2a,0x2a,0x2a,0x3e,0x23,0x2,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0xa0,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x3e,0x25,0x24,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x27,0x44,0x8c,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x20,0x23,0x22,0x4a,0x4b,0xf2,0x12,0x22,0x42,0xfa,0x42,0x3,0x1a,0xe2,0x42,0x2,0x4,0xfe,0x4,0x4,0xc,0x8c,0x54,0x24,0x24,0x54,0x8c,0xc,0x4,0x4,0x14,0x8,
-+0x1,0x41,0x41,0x7f,0x0,0x7f,0x40,0x48,0x44,0x42,0x41,0x42,0x44,0x48,0x50,0x40,0x0,0x4,0x4,0xfc,0x4,0xfe,0x4,0x24,0x44,0x84,0x4,0x84,0x44,0x34,0x14,0x8,
-+0x41,0x31,0x17,0x81,0x61,0x2f,0x1,0x12,0x27,0xea,0x22,0x23,0x22,0x22,0x21,0x20,0x10,0x10,0xfc,0x10,0x14,0xfe,0x20,0x10,0xfe,0x14,0x10,0xf0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x10,0x11,0xfc,0x10,0x30,0x38,0x54,0x50,0x90,0x10,0x10,0x13,0x10,0x10,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x20,0x3e,0x50,0x81,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x40,0x7c,0x90,0x0,0xfc,0x0,0xf0,0x10,0xf0,0x4,0xfe,0x4,0xe4,0x24,0xe4,0xc,
-+0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x2,0xff,0x4,0x9,0x11,0x2f,0xc1,0x1,0x1,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x40,0x20,0x50,0xee,0x4,0x0,0x0,
-+0x2,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x7f,0x40,0x4f,0x48,0x48,0x4f,0x40,0x0,0x4,0xfe,0x0,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x4,0xe4,0x24,0x24,0xe4,0xc,
-+0x1,0x7f,0x8,0xf,0x0,0x7f,0x48,0x8f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x8,0xfc,0x20,0xe0,0x0,0xfe,0x22,0xe4,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x10,0xc,0x4,0x7f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x20,0x24,0x22,0x40,0x10,0x30,0x40,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x10,0x88,0x44,0x4,
-+0x11,0x10,0x92,0x55,0x38,0x10,0xfe,0x11,0x38,0x34,0x54,0x53,0x90,0x12,0x12,0x14,0x4,0x88,0x50,0xfc,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0xa4,0x92,0x2,
-+0x10,0x10,0x1f,0x10,0xfb,0x12,0x12,0x1b,0x30,0xd7,0x14,0x15,0x15,0x15,0x54,0x24,0x80,0x44,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x14,0xf4,0x4,0xc,
-+0x10,0x10,0x1f,0x20,0x21,0x7d,0x91,0x11,0x7c,0x13,0x12,0x12,0x16,0x1a,0x12,0x2,0x40,0x24,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x94,0xf4,0x4,0xc,
-+0x8,0x1c,0xf3,0x10,0x11,0xfd,0x11,0x39,0x34,0x53,0x52,0x92,0x12,0x12,0x12,0x12,0x40,0x24,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x94,0xf4,0x4,0xc,
-+0x1,0x11,0x11,0x1f,0x11,0x21,0x1,0xff,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x7f,0x0,0x1f,0x10,0x10,0x1f,0x0,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xfc,0x10,0x90,0x90,0x90,0x90,0x14,0xfe,0x10,0x90,0x90,0x90,0x90,0x10,0x50,0x20,
-+0x2,0xff,0x2,0x7a,0x4a,0x4a,0x7b,0x2,0xff,0x2,0x7a,0x4a,0x4a,0x7a,0x4a,0x5,0x20,0x20,0x20,0x40,0x7c,0x84,0x28,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x8e,0x4,
-+0x10,0x14,0x12,0x10,0xfc,0x15,0x16,0x1c,0x34,0xd7,0x15,0x15,0x15,0x15,0x55,0x24,0x0,0x4,0xfe,0x44,0xf4,0x14,0xa4,0x44,0xa4,0x1c,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x4,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x2,0x2,0x1,0x2,0xc,0x70,0x0,0x0,0x80,0x40,0x4,0xfe,0x0,0x0,0x20,0x30,0x40,0x80,0x0,0x80,0x44,0x34,0xc,
-+0x10,0x10,0x29,0x29,0x25,0x43,0x89,0x7d,0x1,0x7d,0x44,0x44,0x47,0x44,0x7c,0x40,0x20,0x48,0xfc,0x8,0x48,0x28,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x24,0x24,0x3d,0x26,0x24,0x24,0x44,0x94,0x8,0x40,0x40,0x7c,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,0xf8,0x88,0x88,0x88,0xf8,0x88,
-+0x1,0x0,0x1f,0x12,0x92,0x53,0x54,0x18,0x37,0x50,0xd0,0x13,0x24,0x24,0x44,0x3,0x0,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0xf0,0x20,0xc0,0x0,0x0,0x2,0x2,0xfe,
-+0x8,0x4,0x7f,0x44,0xbf,0x4,0x3f,0x4,0x7f,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x4,0x4,0xe4,0x54,0x94,0x14,0x94,0x14,0xd4,0x94,0xd4,0x94,0x84,0x84,0x94,0x88,
-+0x8,0x8,0x7f,0x8,0xf,0x1,0x3f,0x21,0x21,0x3f,0x1,0xff,0x1,0x1,0x1,0x1,0x20,0x28,0xfc,0x20,0xe0,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xf,0x11,0x22,0x54,0x10,0x1f,0x0,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x4,0x84,0x44,0x4,0xd4,0x8,
-+0x11,0x11,0x11,0x12,0xff,0x14,0x38,0x34,0x51,0x52,0x97,0x1a,0x12,0x12,0x13,0x12,0x0,0x0,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x14,0x7e,0x55,0x56,0x55,0x54,0x7c,0x51,0x11,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x50,0x88,0x6,0x4,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x1b,0x4a,0x42,0x47,0x4c,0x52,0x41,0x46,0x58,0x60,0x4f,0x48,0x48,0x4f,0x40,0x4,0xfe,0x4,0x4,0xe4,0x44,0x84,0x4,0xc4,0x3c,0x14,0xe4,0x24,0x24,0xf4,0x8,
-+0x0,0x7f,0x48,0x53,0x52,0x62,0x53,0x48,0x4f,0x4d,0x6c,0x57,0x44,0x44,0x44,0x44,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xfc,0x44,0x44,0x54,0x8,
-+0x10,0x10,0x1c,0x11,0x21,0x3e,0x50,0x90,0x7c,0x13,0x11,0x11,0x15,0x19,0x11,0x1,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x1,0x2,0x4,0x8,0x11,0x21,0xc1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x4,0x7,0x8,0x14,0x22,0x1,0x6,0x18,0xe0,0xf,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x60,0x1e,0x4,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x20,0x20,0x49,0xfa,0x14,0x23,0x40,0xf8,0x43,0x2,0x1a,0xe2,0x43,0x2,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x39,0x35,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x0,0x7d,0x45,0x45,0x45,0x45,0x7d,0x11,0x51,0x5d,0x51,0x51,0x51,0x5d,0xe1,0x41,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x10,0x10,0x14,0xfe,0x11,0x7c,0x10,0xfe,0x13,0x38,0x34,0x54,0x51,0x91,0x12,0x10,0x88,0x88,0x88,0x88,0xfc,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x8,0x8,0x8,0x8,
-+0x0,0xff,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x29,0x5,0x2,0x5,0x18,0xe0,0x4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x0,0x0,0x80,0x70,0xe,
-+0x1,0x0,0x3f,0x20,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x20,0x21,0x41,0x42,0x84,0x18,0x0,0x84,0xfe,0x80,0x88,0xfc,0x88,0xfe,0x88,0xf8,0x88,0x40,0x40,0x30,0xe,0x4,
-+0x4,0x7f,0x1,0x3f,0x1,0xff,0x28,0x42,0x3f,0x1,0x1f,0x1,0xff,0x2,0xc,0x30,0x48,0xfc,0x0,0xf8,0x0,0xfe,0x28,0x84,0xf8,0x0,0xf0,0x4,0xfe,0x80,0x78,0x10,
-+0x20,0x2f,0x20,0x27,0xfc,0x24,0x27,0x24,0x24,0x27,0x3c,0xe3,0x40,0x1,0x6,0x18,0x4,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0x80,0x60,0x1e,0x4,
-+0x2,0xff,0x24,0x24,0x3c,0x24,0x24,0x3d,0x24,0x24,0x24,0x3e,0xe4,0x44,0x7,0x4,0x20,0x20,0x20,0x20,0xa4,0xac,0xb0,0x20,0x20,0x20,0x20,0x50,0x50,0x8e,0x4,0x0,
-+0x10,0x1f,0x10,0x13,0xfe,0x12,0x33,0x3a,0x52,0x53,0x92,0x11,0x10,0x11,0x12,0x1c,0x4,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x48,0x40,0x80,0x60,0x1e,0x4,
-+0x0,0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x0,0x0,0x8,0xfd,0x11,0x12,0x14,0x11,0x11,0x11,0x10,0x1c,0xf0,0x41,0x2,0xc,0x80,0x80,0x80,0x8,0xfc,0x10,0x10,0x10,0x20,0x20,0xc0,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x0,0x8,0xfc,0x10,0x17,0x10,0x10,0x10,0x10,0x1d,0xf1,0x41,0x2,0x4,0x8,0x80,0x80,0x80,0x80,0x84,0xfe,0x84,0x84,0x84,0x84,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x8,0x8,0x7f,0x8,0x8,0xff,0x4,0x9,0x11,0x21,0xc9,0x9,0x11,0x21,0x5,0x2,0x20,0x28,0xfc,0x20,0x24,0xfe,0x40,0x20,0x10,0xe,0x24,0x90,0x48,0x8,0x0,0x0,
-+0x2,0x2,0xff,0x5,0x5,0x9,0x32,0xc8,0x8,0x3f,0x8,0x8,0xff,0x8,0x18,0x20,0x20,0x14,0xfe,0x0,0x64,0x84,0xfc,0x20,0x20,0xf8,0x20,0x24,0xfe,0x20,0x18,0x8,
-+0x12,0x12,0x12,0x22,0x2f,0x62,0xa2,0x22,0x22,0x3f,0x20,0x22,0x22,0x24,0x28,0x20,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x10,0x8,0xc,0x4,0x0,
-+0x8,0x12,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xfe,0x6,0xa,0x12,0x22,0x4a,0x4,0x0,0x4,0xfe,0x4,0x4,0xfc,0x80,0x84,0xfe,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x0,0x4,0x4,0x8,0x8,0x11,0x21,0xc2,0x2,0x4,0x8,0x10,0x1f,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x40,0x20,0xf0,0x10,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0xf,0x8,0x8,0xf,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x2,0x24,0xf0,0x20,0x20,0xe0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x7f,0x0,0x0,0x0,0x3f,0x20,0x20,0x40,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0xe0,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x90,0x50,0x20,
-+0x0,0x9,0xfd,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x8,0x8,0xfc,0x8,0x8,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0xa,0xa,0x6,0x0,
-+0x0,0x3f,0x1,0x1,0xff,0x0,0x1,0x1,0x7d,0x5,0x9,0x11,0x21,0xc1,0x5,0x2,0x10,0xf8,0x0,0x4,0xfe,0x0,0x8,0x18,0xa0,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x11,0x11,0x11,0x11,0xfb,0x11,0x11,0x19,0x31,0xdf,0x10,0x11,0x11,0x12,0x54,0x20,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x10,0x8,0xc,0x4,0x0,
-+0x0,0x3f,0x1,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0x10,0xf8,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x8,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0x8,0xff,0x0,0x4,0xc,0x10,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x40,0x30,0x18,0x8,
-+0x10,0x10,0x10,0x1c,0x21,0x22,0x7c,0x90,0x10,0x7c,0x11,0x10,0x14,0x18,0x10,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x44,0x44,0x84,0xa4,0xf4,0x14,0x4,0x4,0x28,0x10,
-+0x8,0x8,0x8,0xf,0x10,0x22,0x42,0x84,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x84,0x44,0xc4,0x44,0x4,0x28,0x10,
-+0x2,0x42,0x32,0x13,0x84,0x68,0x20,0x1,0x9,0x12,0xe4,0x27,0x20,0x20,0x20,0x20,0x0,0x0,0x4,0xfe,0x4,0x84,0x84,0x4,0x4,0x44,0x24,0xe4,0x24,0x4,0x28,0x10,
-+0x8,0x8,0xff,0x8,0x10,0x1f,0x20,0x20,0x5f,0x90,0x10,0x10,0x1f,0x10,0x0,0x0,0x20,0x24,0xfe,0x20,0x8,0xfc,0x8,0x88,0xc8,0x88,0x88,0x88,0x88,0x8,0x50,0x20,
-+0x4,0x44,0x28,0x11,0x29,0x4a,0x8,0x9,0x19,0x29,0x49,0x89,0x9,0x8,0x50,0x20,0x80,0x80,0x84,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x4,0x4,0x28,0x10,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x12,0x12,0x12,0x12,0x16,0x1a,0xe4,0x44,0x8,0x0,0xc,0xf0,0x0,0x0,0x4,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x30,0x38,0x54,0x50,0x11,0x11,0x10,0x10,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x4,0x44,0x44,0x84,0xa4,0x14,0xf4,0x14,0x4,0x28,0x10,
-+0x4,0x7e,0x44,0x54,0x55,0x56,0x54,0x54,0x54,0x54,0x55,0x55,0x10,0x28,0x44,0x84,0x80,0x80,0x84,0xfe,0x4,0x4,0x44,0x44,0x84,0xa4,0x14,0xf4,0x14,0x4,0x28,0x10,
-+0x20,0x20,0x22,0x3f,0x42,0x83,0x7a,0x4a,0x4a,0x4b,0x4a,0x7a,0x42,0xa,0x4,0x0,0x20,0x20,0x7c,0x44,0x88,0x50,0x20,0x50,0x9e,0x22,0x44,0xa8,0x10,0x20,0x40,0x80,
-+0x1,0xff,0x1,0x3f,0x20,0x3f,0x1,0x3f,0x8,0x4,0xff,0x1,0x3f,0x1,0x1,0x1,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x20,0x44,0xfe,0x0,0xf8,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x10,0x10,0xff,0x12,0x12,0x22,0x22,0x14,0x8,0x14,0x22,0x40,0x40,0x44,0xfe,0x40,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x0,0x8,0x7c,0x48,0x4f,0x48,0x48,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x2,0x3,0x2,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x1f,0x28,0x45,0x90,0x13,0x12,0xfe,0x12,0x1a,0x32,0xd2,0x12,0x12,0x53,0x20,0x40,0x7e,0xa0,0x10,0x0,0xfc,0x20,0x28,0xfc,0xa8,0xa8,0xa8,0xb8,0x20,0xfe,0x0,
-+0x8,0x8,0x8,0x10,0x1f,0x30,0x50,0x90,0x13,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x10,0x87,0x60,0x20,0x8,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7c,0x7,0xa,0x12,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x14,0x15,0x58,0x20,0x8,0x3c,0xc0,0x10,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0xa8,0xee,0x24,0x0,
-+0x10,0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x45,0x25,0x19,0x11,0x29,0x45,0x81,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x14,0xfe,0x11,0x7c,0x0,0x7d,0x44,0x44,0x7c,0x0,0x44,0x28,0xfe,0x40,0x3,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x88,0x88,0x88,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x1,0x1f,0x11,0x11,0x1f,0x11,0x1,0x3f,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x4,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x1f,0x10,0x1f,0x11,0x11,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x8,0x8,0x10,0x21,0x41,0x2,0x4,0x8,0x30,0xc0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x30,0x18,0x8,0x0,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x25,0x24,0x3c,0x24,0x24,0x24,0x24,0x4d,0x86,0x8,0xfc,0x88,0x88,0x88,0xe,0x0,0xfc,0x84,0x88,0x48,0x70,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x10,0x14,0xfe,0x11,0x12,0x10,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44,0x3,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x88,0x88,0x50,0x20,0x20,0x50,0x8e,0x4,
-+0x4,0x7f,0x40,0x40,0x5e,0x52,0x52,0x52,0x5a,0x54,0x50,0x52,0x54,0x58,0x80,0x1,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x30,0x4c,0x86,0x2,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x41,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x4,0xfc,0x4,
-+0x2,0x1,0x3f,0x20,0x3f,0x22,0x22,0x27,0x24,0x2f,0x34,0x27,0x24,0x24,0x47,0x84,0x0,0x4,0xfe,0x4,0xfc,0x80,0x48,0xfc,0x40,0xf8,0x40,0xf8,0x40,0x48,0xfc,0x0,
-+0x1,0x7e,0x8,0x8,0x9,0xff,0x8,0x8,0x9,0x7f,0x41,0x41,0x41,0x41,0x7f,0x41,0x84,0x4,0x4,0x24,0x24,0xa4,0x24,0x24,0x24,0xa4,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x1,0x3e,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x42,0x83,0x0,0x38,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x88,0x68,0xa6,0x4,0x0,
-+0x0,0x3f,0x20,0x20,0x20,0x3f,0x24,0x4,0x7f,0x44,0x44,0x4a,0x51,0x40,0x41,0x40,0x84,0xc4,0x84,0x94,0x94,0x94,0x94,0x14,0xd4,0x54,0x54,0x54,0x44,0x44,0x54,0x88,
-+0x1,0x7f,0x40,0x9f,0x2,0xf,0xa,0x9,0x8,0x7f,0x4,0xf,0x32,0xc2,0x4,0x18,0x0,0xfe,0x22,0xf4,0x0,0xe0,0x20,0x20,0xa8,0xfc,0x40,0xe0,0x5e,0x44,0x40,0xc0,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x14,0x1f,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x41,0x21,0x21,0x7,0xf1,0x11,0x2f,0x71,0xa1,0x37,0x21,0x21,0x21,0x2f,0x24,0x20,0x10,0x10,0x10,0xd0,0x10,0x10,0xf8,0x16,0x12,0xd0,0x10,0x10,0xf0,0x10,0x10,0x10,
-+0x0,0x1f,0x1,0x1,0xff,0x1,0x9,0x9,0x79,0x9,0x9,0x39,0xc9,0x1,0x1,0x1,0x70,0x80,0x0,0x4,0xfe,0x0,0x24,0x2c,0x30,0x20,0x22,0x22,0x1e,0x0,0x0,0x0,
-+0x10,0x11,0x11,0xfd,0x11,0x15,0x18,0x30,0xd3,0x10,0x10,0x10,0x11,0x11,0x52,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x80,0x84,0xfe,0x84,0x84,0x84,0x4,0x4,0x14,0x8,
-+0x10,0x17,0x12,0x11,0x58,0x54,0x50,0x93,0x1c,0x10,0x17,0x10,0x10,0x10,0x1f,0x10,0x8,0xfc,0x8,0x10,0xa0,0x40,0xb0,0xe,0x44,0x40,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x13,0x12,0xfc,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x40,0x20,0xfe,0x2,0x4,0xfc,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0x4,0xfc,0x0,
-+0x10,0x8,0x4,0x4,0x7f,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x10,0x18,0x20,0x48,0xfc,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x2,0x1,0x7f,0x40,0x80,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x2,0x14,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,
-+0x0,0x7f,0x40,0x84,0x3e,0x0,0x2,0x7f,0x14,0x14,0x14,0x14,0x24,0x24,0x43,0x80,0x0,0xfe,0x2,0xc,0x8,0x8,0xfe,0x8,0x48,0x28,0x8,0x28,0x12,0x2,0xfe,0x0,
-+0x0,0x1,0x7d,0x5,0x45,0x29,0x29,0x11,0x11,0x29,0x25,0x44,0x80,0x1,0x6,0x18,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0x68,0xa0,0xa0,0x22,0x22,0x1e,
-+0x10,0x1f,0x28,0x45,0x1,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0x7c,0x90,0x8,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x0,0xf0,0x10,0x10,0xf0,0x0,
-+0x20,0x20,0x23,0x3a,0x4c,0x51,0x81,0x21,0x21,0x21,0x21,0x25,0x29,0x31,0x21,0x1,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x0,
-+0x20,0x23,0x3c,0x51,0x91,0x11,0xfe,0x10,0x55,0x56,0x54,0x54,0x54,0x7c,0x44,0x0,0x88,0xfe,0x88,0xdc,0x54,0xdc,0x90,0xfc,0x90,0xfc,0x90,0xfc,0x90,0x94,0xfe,0x80,
-+0x10,0x13,0x12,0x1f,0x5a,0x57,0x50,0x93,0x12,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x8,0xfc,0x48,0xfe,0x48,0xf8,0x0,0xf8,0x8,0x48,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x1,0x4f,0x31,0x17,0x84,0x67,0x22,0x3,0x16,0x2b,0xc2,0x43,0x42,0x42,0x43,0x42,0x10,0xfe,0x10,0xbc,0xa4,0xbc,0x20,0xfc,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x0,0x1f,0x11,0x11,0xff,0x11,0x1f,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x10,0xf8,0x10,0x14,0xfe,0x10,0xf0,0x0,0xf0,0x10,0x10,0x10,0x10,0x60,0x18,0x8,
-+0x1,0x21,0x11,0x9,0x9,0x1,0xff,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x8,0xc,0x10,0x20,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x1,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x84,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x40,0x29,0x27,0x2,0x6,0xea,0x22,0x26,0x2a,0x32,0x22,0x2b,0x24,0x50,0x8f,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0xf8,0x20,0x20,0x20,0x28,0xfc,0x0,0x6,0xfc,0x0,
-+0x0,0x11,0xfb,0x22,0x22,0x23,0xfa,0x22,0x23,0x22,0x20,0x39,0xe1,0x42,0x4,0x8,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xd0,0x68,0x78,0x42,0x42,0x3e,
-+0x10,0x10,0x11,0x11,0x7d,0x11,0x15,0xff,0x11,0x11,0x10,0x28,0x24,0x41,0x82,0x4,0x0,0x8,0xfc,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0x40,0x90,0x90,0x12,0x12,0xe,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0xff,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x4,0xfe,0x11,0x10,0x20,0x23,0x7c,0xa4,0x24,0x25,0x24,0x24,0x3c,0x27,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x4,0x25,0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x4,0x8,0x13,0x60,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x8,0x8,0x1f,0x10,0x20,0x7f,0xa1,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0x1,0x0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0xa,0x2,0x2,0xfe,
-+0x20,0x1b,0x49,0x41,0x4f,0x41,0x41,0x5f,0x41,0x41,0x4f,0x41,0x41,0x5f,0x40,0x40,0x4,0xfe,0x4,0x44,0xe4,0x4,0x24,0xf4,0x4,0x44,0xe4,0x4,0x24,0xf4,0x4,0xc,
-+0x10,0x10,0x14,0xfe,0x21,0x28,0x48,0x7e,0x8,0x8,0x8,0xfe,0x8,0x8,0x9,0xa,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x88,0x8a,0x8a,0x6,0x0,
-+0x2,0x4,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x22,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x88,0x80,0x90,0xa8,0xba,0x82,0x7e,
-+0x1,0x41,0x21,0x22,0x4,0xb,0xe2,0x22,0x22,0x22,0x22,0x26,0x2a,0x32,0x24,0x8,0x0,0x0,0xf0,0x20,0x44,0xfe,0x0,0xf8,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0,
-+0x0,0x3e,0x2,0x24,0x18,0x10,0x20,0x4f,0x81,0x1,0x3f,0x1,0x2,0x4,0x18,0x60,0x80,0x90,0xa0,0x48,0x50,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0xc0,0x30,0x18,0x8,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x54,0x50,0x93,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x32,0x3a,0x56,0x53,0x92,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0x7e,0x44,0x45,0x46,0x7d,0x51,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x44,0x8,0x80,0x80,0xf8,0x10,0x24,0xfe,0x8,0x7c,0x48,0x48,0x68,0x50,0x42,0x42,0x3e,0x0,
-+0x1,0x1,0x3f,0x21,0x3f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x0,0x8,0xfc,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x8,0x8,0x14,0x22,0x41,0xbe,0x0,0x2,0x7f,0x8,0x8,0x10,0x22,0x7f,0x1,0x0,0x4,0x4,0x4,0x24,0xa4,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x20,0x23,0x22,0xfe,0x43,0x42,0x92,0xff,0x12,0x12,0x1f,0xf2,0x52,0x12,0x13,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x24,0x2c,0xb0,0x20,0x22,0xa2,0x1e,0x0,
-+0x0,0x40,0x37,0x11,0x83,0x64,0x20,0x9,0x13,0x20,0xe1,0x23,0x25,0x29,0x21,0x21,0x80,0x48,0xfc,0x10,0x4c,0x44,0x80,0x10,0xf8,0x80,0x44,0x28,0x10,0x4e,0x84,0x0,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x93,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x24,0x2c,0xb0,0x20,0x22,0xa2,0x1e,0x0,
-+0x10,0x11,0x11,0x1d,0x21,0x21,0x7d,0x90,0x13,0xfe,0x12,0x12,0x17,0x1a,0x12,0x2,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x44,0x64,0x9c,0xc,0x4,0x14,0x8,
-+0x8,0x4,0xff,0x0,0x3f,0x21,0x21,0x3f,0x0,0x7f,0x2,0x4,0xff,0x4,0x14,0x8,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x0,0x7f,0x40,0x5f,0x41,0x41,0x41,0x4f,0x41,0x41,0x41,0x41,0x5f,0x40,0x7f,0x40,0x4,0xfe,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x44,0x24,0x4,0xf4,0x4,0xfc,0x4,
-+0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x1,0x7f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0xff,0x9,0x35,0xc,0x14,0x65,0x6,0x0,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x18,0xa0,0x40,0x3c,0x8,
-+0x0,0x40,0x20,0x17,0x0,0x0,0xf1,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20,0x6,0xfc,0x0,
-+0x0,0x0,0x8,0x7c,0x49,0x49,0x4a,0x4d,0x48,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0xf4,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x7e,0x44,0x77,0x54,0x54,0xfe,0x82,0x7c,0x44,0x7c,0x45,0x7c,0x44,0x54,0x4b,0x40,0x20,0x4,0xfe,0x20,0x20,0x44,0xfc,0x10,0x24,0x44,0x88,0x10,0x28,0xc6,0x2,
-+0x0,0xfc,0x4,0xb,0x10,0x10,0x15,0x1b,0x31,0xd0,0x10,0x11,0x16,0x10,0x51,0x26,0x80,0x40,0x4,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x50,0x8c,0x4,
-+0x2,0x42,0x33,0x14,0x8b,0x62,0x22,0xa,0x1f,0x24,0xe4,0x24,0x27,0x20,0x20,0x20,0x0,0x8,0xfc,0x0,0xf8,0x88,0x48,0x8,0xfe,0x88,0x48,0x8,0xfc,0x8,0x28,0x10,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0x2,0x3f,0x4,0x8,0x3f,0x2,0xc,0x31,0x46,0x18,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x8,0x88,0x8,0x8,0x88,0x8a,0x6a,0x24,
-+0x2,0x1,0x1,0xff,0x1,0x2,0x4,0x8,0x1f,0x2,0x4,0x8,0x31,0x6,0x18,0x60,0x0,0x0,0x4,0xfe,0x0,0x20,0x60,0x80,0x10,0x30,0x40,0xc0,0x20,0x10,0xc,0x4,
-+0x2,0x1,0x7f,0x41,0x9f,0x1,0x1f,0x1,0x7f,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x0,0xfc,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x8,0xfc,0x8,0x4f,0x48,0x48,0x49,0x4b,0x7d,0x4,0x4,0x1d,0xe6,0x44,0x15,0xa,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x58,0x8c,0x4,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x63,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x44,0xc4,0x44,0x44,0xfe,0x44,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44,
-+0x3e,0x4,0xff,0x22,0x3f,0x22,0x3e,0x22,0xff,0x2,0xa,0x29,0x28,0x48,0x7,0x0,0x40,0x44,0x7e,0x84,0x44,0x48,0x28,0x10,0x2e,0xc4,0x0,0x88,0xa4,0x24,0xe0,0x0,
-+0x22,0x22,0x22,0x22,0xff,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x22,0x3e,0x22,0x0,0x0,0x7c,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xa,0xff,0x8,0x8,0x7f,0x41,0x7f,0x41,0x7f,0x8,0x9,0xff,0x8,0x8,0x8,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0xfe,0x22,0x22,0xaa,0x24,0x20,0x20,
-+0x1,0x1,0x2,0x4,0xa,0x11,0x20,0xdf,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x80,0x40,0x20,0x90,0x8e,0xe4,0x40,0x90,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x40,0x37,0x10,0x0,0x84,0x44,0x46,0xd,0x14,0x25,0xe6,0x24,0x25,0x24,0x27,0x24,0x0,0xfc,0x8,0x10,0x64,0x44,0x4c,0x54,0xe4,0x54,0x4c,0x44,0x44,0x84,0xfc,0x4,
-+0x2,0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0x7f,0x4,0xb,0x10,0x20,0xc6,0x1,0x0,0x0,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x40,0xfc,0x40,0x20,0x90,0x4e,0x4,0x80,0x40,
-+0x0,0x1f,0x0,0x0,0x41,0x51,0x49,0x45,0x41,0x45,0x49,0x51,0x45,0x42,0x7f,0x40,0x0,0xf0,0x20,0x40,0x84,0x14,0x34,0x44,0x4,0x44,0x34,0x14,0x4,0x4,0xfc,0x4,
-+0x0,0x10,0x78,0x57,0x54,0x57,0x54,0x55,0x55,0x55,0x55,0x75,0x45,0x8,0x11,0x20,0x10,0x18,0x14,0xfe,0x10,0xf0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x28,0x4a,0x8a,0x4,
-+0x0,0x7f,0x40,0x84,0x8,0x0,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0xfe,0x2,0x44,0x20,0x0,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x14,0xfe,0x11,0x7e,0x45,0x7c,0x45,0x7c,0x10,0xfe,0x11,0x10,0x11,0x10,0x20,0x20,0x50,0x88,0x6,0x4,0xdc,0x44,0x54,0xcc,0x44,0xcc,0x54,0x44,0x54,0x88,
-+0x10,0x10,0x10,0x17,0xfc,0x17,0x14,0x1d,0x35,0xd5,0x15,0x14,0x19,0x13,0x55,0x20,0x10,0x14,0x10,0xfe,0x10,0xf0,0x14,0xd4,0x58,0x52,0xea,0x6,0x40,0x24,0xa,0xf8,
-+0x13,0x12,0x12,0x13,0xfa,0x12,0x13,0x18,0x37,0xd0,0x10,0x1f,0x10,0x10,0x50,0x20,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x17,0x5c,0x57,0x54,0x95,0x15,0x15,0x15,0x14,0x19,0x13,0x15,0x10,0x10,0x14,0x10,0xfe,0x10,0xf0,0x14,0xd4,0x58,0x52,0xea,0x6,0x40,0x24,0xa,0xf8,
-+0x13,0x12,0x12,0x13,0x5a,0x56,0x53,0x90,0x17,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x11,0x11,0x11,0x15,0x59,0x51,0x51,0x90,0x13,0x10,0x10,0x2b,0x24,0x44,0x80,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x0,0xfe,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x47,0x30,0x10,0x80,0x60,0x20,0xf,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x40,0x37,0x10,0x82,0x62,0x22,0x9,0x11,0x20,0xe0,0x20,0x21,0x22,0x24,0x8,0x0,0x8,0xfc,0x8,0x8,0x8,0x10,0x10,0x20,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4,
-+0x1,0x1,0x1,0x7f,0x2,0x4,0xa,0x32,0xc2,0x1f,0x2,0x2,0x2,0x4,0x8,0x30,0x0,0x0,0x8,0xfc,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x14,0x18,0x80,0x40,0x48,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x8,0x10,0x3e,0x23,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x22,0x4a,0x85,0x40,0x30,0x14,0xfe,0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x4a,0x4a,0x86,0x0,
-+0x20,0x23,0x20,0x21,0xf9,0x27,0x24,0x2b,0x20,0x23,0x20,0x3b,0xe0,0x47,0x0,0x0,0x40,0xfc,0x0,0xf8,0x8,0xfe,0x2,0xfc,0xc0,0x68,0xb0,0x28,0xe6,0x24,0xa0,0x40,
-+0x0,0x17,0xf8,0x91,0x91,0x97,0x94,0x9b,0x90,0x91,0x96,0xf1,0x96,0x1,0x6,0x0,0x48,0xfc,0x0,0xf0,0x10,0xfe,0x2,0xfc,0x80,0x48,0xf0,0x50,0xce,0x44,0x40,0xc0,
-+0x1,0x7f,0x0,0xf,0x8,0x7f,0x40,0x9f,0x6,0xb,0x35,0x9,0x33,0x5,0x39,0x3,0x8,0xfc,0x0,0xe0,0x20,0xfe,0x2,0xf4,0x10,0x20,0x40,0x80,0x60,0x1c,0x8,0x0,
-+0x1,0x7f,0x0,0xf,0x8,0xf,0x0,0x7f,0x40,0x9f,0x1,0xf,0x1,0x3f,0x1,0x0,0x8,0xfc,0x20,0xf0,0x20,0xe0,0x0,0xfe,0x2,0xf4,0x0,0xe0,0x0,0xf4,0x4,0xfc,
-+0x8,0x8,0xa,0x7f,0x8,0x9,0xff,0x14,0x14,0x56,0x55,0x95,0x24,0x24,0x4c,0x80,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x10,0x11,0x10,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x0,0xfc,0x4,0x8,0x10,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x15,0xfe,0x10,0x7c,0x11,0xfe,0x10,0x38,0x35,0x54,0x50,0x90,0x10,0x10,0x8,0x3c,0xc0,0x40,0x50,0x78,0xc0,0x40,0x48,0x7c,0xc0,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x0,0xff,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xa0,0x40,
-+0x40,0x32,0x12,0x3,0x84,0x68,0x20,0xf,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0xb,0x7c,0x48,0x48,0x4b,0x4a,0x4a,0x4a,0x4a,0x4b,0x7a,0x48,0x0,0x0,0x0,0x4,0xfe,0x8,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x48,0x8,0x8,0x28,0x10,
-+0x0,0xb,0x7e,0x4b,0x4a,0x4b,0x48,0x49,0x4a,0x4c,0x4a,0x7a,0x4a,0x3,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x84,0xfe,0x4,0x44,0x44,0xa4,0x4,0xe4,0x14,0x8,
-+0x8,0x8,0xff,0x8,0x10,0x1f,0x10,0x30,0x53,0x92,0x12,0x12,0x13,0x12,0x10,0x10,0x20,0x24,0xfe,0x20,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x8,0x8,0xff,0x8,0x40,0x3f,0x10,0x80,0x63,0x22,0xa,0x12,0xe3,0x22,0x20,0x20,0x20,0x24,0xfe,0x20,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x39,0x37,0x55,0x50,0x90,0x11,0x16,0x10,0x11,0x16,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x50,0x8c,0x4,
-+0x0,0x0,0x3f,0x1,0x1,0x1,0xff,0x1,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x10,0x38,0xc0,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x20,0x18,0xe,0x4,0x0,0x0,
-+0x2,0x7,0x78,0x8,0xa,0xff,0x8,0x18,0x1c,0x2a,0x2a,0x48,0x88,0x8,0x8,0x8,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x0,
-+0x8,0x8,0xf,0x10,0x10,0x33,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x48,0x8,0x8,0x28,0x10,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc0,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x2,0x4,0xf,0x10,0x2f,0xc8,0x8,0xf,0x0,0x1f,0x12,0x12,0x12,0xff,0x0,0x0,0x80,0x40,0xe0,0x10,0xee,0x24,0x20,0xe0,0x10,0xf8,0x90,0x90,0x94,0xfe,0x0,
-+0x8,0x10,0x24,0x54,0x89,0x52,0x28,0x4c,0x94,0x27,0x4c,0x94,0x24,0x44,0x14,0x8,0x40,0x40,0x7c,0x84,0x88,0x50,0x20,0x50,0x88,0xe,0xfc,0x88,0x88,0x88,0xf8,0x88,
-+0x20,0x1b,0x48,0x42,0x41,0x5f,0x41,0x42,0x44,0x4f,0x42,0x44,0x49,0x52,0x44,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x44,0x84,0x24,0x44,0x84,0x84,0x64,0x24,0xc,
-+0x40,0x3f,0x10,0x0,0x80,0x67,0x24,0xc,0x14,0x24,0xe7,0x24,0x20,0x20,0x20,0x20,0x4,0xfe,0x8,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x48,0x8,0x8,0x28,0x10,
-+0x40,0x37,0x14,0x4,0x87,0x64,0x24,0xd,0x15,0x25,0xe5,0x25,0x25,0x24,0x27,0x24,0x4,0xfe,0x44,0x54,0xfc,0x44,0x54,0xfc,0x14,0x14,0x14,0xf4,0x14,0x4,0xfc,0x4,
-+0x8,0x8,0x7e,0x8,0x8,0xff,0x14,0x14,0x36,0x75,0x94,0x14,0x14,0x14,0x24,0x4d,0x20,0x28,0xfc,0x20,0x24,0xfe,0x50,0x50,0xd8,0x56,0x52,0x50,0x50,0x50,0x90,0x30,
-+0x40,0x23,0x22,0x3,0xfa,0x13,0x21,0x6b,0xb4,0x28,0x22,0x22,0x22,0x23,0x20,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x4,0x44,0x44,0xa4,0x4,0xe4,0x14,0x8,
-+0x8,0x8,0x7f,0x52,0x90,0x28,0x7e,0xa8,0x3e,0x28,0x3e,0x28,0x29,0x3e,0x20,0x20,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x7f,0x11,0x11,0x25,0x42,0x9f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0x0,0x4,0x7e,0x44,0x44,0x7c,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x0,0xb,0x7e,0x4b,0x4a,0x4a,0x4a,0x4b,0x48,0x4b,0x48,0x4f,0x78,0x4a,0x2,0x4,0x8,0xfc,0x48,0x58,0xe8,0x48,0x48,0xf8,0x40,0xf8,0x40,0xfe,0x0,0xa8,0xa4,0x4,
-+0x0,0x3f,0x21,0x31,0x2d,0x25,0x21,0x3f,0x1,0x7f,0x1,0xff,0x0,0x28,0x24,0x44,0x8,0xfc,0x8,0x28,0x38,0x48,0x8,0xf8,0x0,0xfc,0x0,0xfe,0x0,0x90,0x4c,0x44,
-+0x1,0x0,0x1f,0x10,0x97,0x54,0x57,0x14,0x37,0x54,0xd4,0x14,0x24,0x25,0x46,0x4,0x0,0x84,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0xe,0x4,
-+0x8,0xb,0x12,0x12,0x23,0x4a,0x8a,0x13,0x32,0x52,0x92,0x12,0x12,0x12,0x13,0x12,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0x88,0xe,0x4,
-+0x0,0x8b,0x5a,0x22,0x53,0x8a,0xa,0x1b,0x2a,0x4a,0x8a,0xa,0xa,0xa,0x53,0x22,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0x88,0xe,0x4,
-+0x10,0x13,0x12,0x12,0x5b,0x56,0x52,0x93,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0x88,0xe,0x4,
-+0x0,0x8,0x7f,0x48,0x49,0x49,0x49,0x49,0x48,0x4b,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x24,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x8,0x30,0x20,0x20,0xa0,0x40,
-+0x2,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x0,0x1,0x1,0x1,0x5,0x3,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x0,0xf8,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x11,0x11,0x17,0x11,0xfd,0x17,0x30,0x3b,0x56,0x53,0x92,0x13,0x10,0x11,0x13,0x14,0x10,0x10,0xfc,0x10,0x14,0xfe,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x0,0x10,0xc,0x4,
-+0x12,0x13,0x24,0x49,0x9f,0x19,0x2f,0x69,0xaf,0x21,0x21,0x3f,0x22,0x24,0x28,0x20,0x0,0xc4,0x9e,0x0,0xe0,0x20,0xfe,0x24,0xe4,0x4,0x24,0xf4,0x84,0x44,0x54,0x8,
-+0x10,0x17,0x10,0x10,0x5b,0x56,0x52,0x93,0x12,0x12,0x13,0x10,0x10,0x1f,0x10,0x10,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,
-+0x2,0x7f,0x8,0x11,0x3f,0x1,0xff,0x1,0x1,0x7e,0x22,0x14,0x8,0x14,0x22,0xc1,0x8,0xfc,0x0,0x0,0xf8,0x0,0xfe,0x0,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x8,0x7c,0x48,0x4b,0x48,0x48,0x48,0x48,0x48,0x4f,0x78,0x48,0x0,0x1,0x2,0x90,0x90,0x90,0x90,0xfc,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,0x90,0x88,0xc,0x4,
-+0x10,0x10,0x10,0x10,0x57,0x58,0x50,0x90,0x10,0x10,0x17,0x28,0x24,0x44,0x81,0x2,0x90,0x90,0x90,0x90,0xfc,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,0x90,0x88,0xc,0x4,
-+0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x10,0x14,0x1e,0xe2,0x47,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x40,0x30,0x10,0x2,0x9f,0x64,0x24,0x4,0x14,0x14,0xe7,0x3c,0x29,0x20,0x20,0x20,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x42,0x32,0x12,0x2,0x8f,0x62,0x22,0xa,0x12,0x3f,0xe0,0x22,0x22,0x24,0x24,0x28,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x20,0x10,0x8,0xc,0x4,
-+0x2,0x1,0x7f,0x40,0x82,0x2,0xff,0x4,0x4,0x8,0x9,0x11,0x12,0x24,0x4f,0x0,0x0,0x0,0xfc,0x4,0x8,0x0,0xfe,0x0,0x80,0x80,0x0,0x0,0x20,0x10,0xf8,0x8,
-+0x4,0xfe,0x4,0x4,0x4,0x7c,0x40,0x40,0x44,0x7e,0x4,0x4,0x5,0x45,0x2b,0x10,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x40,0x80,0x80,0x80,0x90,0x8,0x4,0xfc,0x4,
-+0x10,0x10,0x23,0x20,0x44,0xf8,0x10,0x20,0x40,0xfc,0x40,0x0,0x1c,0xe0,0x47,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x1,0x9,0x7d,0x4a,0x4a,0x4e,0x4a,0x4a,0x4a,0x4a,0x4b,0x7a,0x4a,0x2,0x2,0x2,0x8,0x7c,0x8,0x8,0xfe,0x0,0x40,0x7e,0x90,0x14,0xfe,0x10,0x20,0x28,0x46,0x82,
-+0x8,0xb,0x8,0x10,0x17,0x32,0x52,0x93,0x14,0x10,0x1f,0x10,0x10,0x10,0x11,0x16,0x10,0xf8,0x10,0x10,0xfc,0x0,0x8,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x5,0x89,0x51,0x22,0x53,0x96,0x1a,0x12,0x33,0x52,0x93,0x12,0x12,0x12,0x52,0x23,0x8,0xfc,0x8,0x8,0xfe,0x0,0x88,0xfc,0x20,0x24,0xfe,0x20,0x20,0x50,0x8e,0x4,
-+0x0,0x7,0x78,0x48,0x49,0x49,0x49,0x49,0x49,0x4f,0x49,0x79,0x49,0x1,0x5,0x2,0x10,0xd0,0x50,0x90,0x10,0x10,0x10,0x50,0x90,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x3f,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x2f,0x20,0x20,0x5f,0x40,0x82,0x1,0x8,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x40,0x84,0xfe,0x80,0x80,0x0,
-+0x10,0x13,0x20,0x28,0x6f,0xa9,0x29,0x2b,0x2c,0x28,0x2f,0x28,0x28,0x21,0x22,0x24,0x10,0xf8,0x10,0x14,0xfe,0x0,0x8,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x27,0x24,0x24,0x24,0x44,0x44,0x87,0x4,0x10,0x78,0x80,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x8,0x7f,0x48,0x4a,0x49,0x49,0x48,0x4f,0x48,0x48,0x78,0x48,0x0,0x1,0x0,0x8,0x1c,0xe0,0x40,0x48,0x58,0x60,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x3f,0x1,0x1,0x11,0xd,0x5,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x78,0x80,0x0,0x0,0x10,0x30,0x40,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xf,0x12,0x12,0x22,0x44,0x4,0x9,0x12,0x2,0x29,0x28,0x48,0x7,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x88,0x88,0x28,0x10,0x0,0x88,0xa4,0x24,0xe0,0x0,
-+0x1,0x11,0xf9,0x27,0x21,0x21,0xf9,0x27,0x24,0x24,0x24,0x3c,0xe7,0x44,0x0,0x1,0x4,0x3e,0x24,0xe4,0x24,0x3c,0x24,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8,
-+0x1,0x1,0x7f,0x1,0x3f,0x1,0x7f,0x44,0x84,0x24,0x14,0xc,0x4,0x4,0x7f,0x0,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x44,0x40,0x48,0x58,0x60,0x40,0x48,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x9,0x7f,0x8,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x1,0x40,0x44,0xfe,0x40,0x7c,0x44,0xc4,0x7c,0x44,0x44,0x7c,0x44,0x44,0x44,0x94,0x8,
-+0x8,0x8,0x8,0x9,0xff,0x8,0x8,0xa,0x3f,0x22,0x22,0x22,0x22,0x3e,0x22,0x1,0x4,0x7e,0x44,0x44,0xc4,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x94,0x8,
-+0x21,0x21,0x21,0x21,0xf9,0xaf,0xa9,0xa9,0xab,0xfa,0xa2,0x2a,0x3b,0xea,0x0,0x1,0x4,0x3e,0x24,0x24,0x24,0xfc,0x24,0x24,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8,
-+0x0,0x88,0x53,0x22,0x52,0x92,0x12,0x12,0x32,0x52,0x92,0x12,0x14,0x15,0x58,0x20,0x8,0x1c,0xe0,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xa8,0x94,0xf6,0x4,0x0,
-+0x11,0x11,0x55,0x39,0x17,0x11,0xfd,0x33,0x3a,0x56,0x52,0x93,0x12,0x10,0x10,0x11,0x4,0x3e,0x24,0x24,0xe4,0x3c,0x24,0xa4,0xa4,0xbc,0xa4,0xa4,0x24,0x44,0x94,0x8,
-+0x42,0x32,0x12,0x2,0x9f,0x62,0x22,0xf,0x18,0x28,0xc8,0x48,0x48,0x4f,0x48,0x40,0x4,0x3e,0x24,0x24,0xe4,0x3c,0xa4,0xe4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0x54,0x88,
-+0x0,0xf8,0xb,0xa,0xa,0x7a,0x42,0x42,0x42,0x7a,0xa,0xa,0xa,0xa,0x54,0x28,0x8,0x1c,0xe8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xa8,0x94,0xf6,0x4,
-+0x1,0x1,0x1,0x3f,0x22,0x22,0x3f,0x22,0x21,0x20,0x27,0x24,0x24,0x24,0x48,0x90,0x20,0xf0,0x0,0xfc,0x4,0x68,0x80,0x8,0xf8,0x40,0xe0,0x40,0x40,0x44,0x44,0x3c,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x7a,0x4c,0x8,0x11,0x6,0x48,0x7c,0x40,0xfe,0x42,0x5c,0xe0,0x44,0x3c,0x10,0xf8,0x90,0x90,0x92,0x12,0xe,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x12,0x14,0x54,0x28,0x80,0x60,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0x10,0x1f,0x0,0x0,0x0,0xff,0x0,0x8,0xfc,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xe0,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x40,0x30,0x13,0x82,0x62,0x22,0xb,0x12,0x12,0xe2,0x22,0x22,0x24,0x24,0x28,0x80,0x60,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x0,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x80,0x84,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xff,0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x20,0x24,0xfe,0x20,0x20,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x8,0x7d,0x49,0x4b,0x4d,0x49,0x49,0x49,0x48,0x4f,0x78,0x48,0x0,0x0,0x0,0xa0,0xa4,0x2c,0x30,0x60,0x22,0x22,0x1e,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x4,0x4,0x8,0x8,0x18,0x29,0x4a,0x8,0x9,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x40,0x48,0x58,0x60,0xc0,0x40,0x44,0x44,0x3c,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x83,0x4a,0x2b,0x12,0x32,0x57,0x94,0x1b,0x32,0x53,0x92,0x13,0x12,0x12,0xa2,0x42,0xf8,0x8,0xc8,0x48,0x48,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x43,0x32,0x13,0x2,0x82,0x4f,0x48,0x13,0x12,0x23,0xe2,0x23,0x22,0x22,0x22,0x22,0xf8,0x8,0xc8,0x48,0x48,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x7f,0x0,0x1f,0x11,0x51,0x51,0x5f,0x51,0x51,0x51,0x5f,0x50,0x40,0x7f,0x40,0x8,0xfc,0x10,0xf8,0x10,0x14,0x14,0xf4,0x14,0x14,0x14,0xf4,0x14,0x4,0xfc,0x4,
-+0x10,0x14,0x12,0x10,0x13,0xfc,0x10,0x10,0x11,0xb,0xc,0x8,0x14,0x24,0x42,0x1,0x4,0x4,0x4,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x84,0x94,0x88,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x40,0x33,0x10,0x0,0x0,0xf7,0x10,0x10,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x10,0x38,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x3a,0x36,0x53,0x52,0x90,0x11,0x11,0x12,0x14,0x18,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x54,0x5c,0x42,0x42,0x3e,
-+0x8,0x8,0x13,0x12,0x22,0x4a,0x8a,0x12,0x32,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x0,0x4,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0xfc,0x4,0x0,
-+0x10,0x10,0x17,0x10,0x58,0x54,0x50,0x90,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40,
-+0x41,0x31,0x11,0x3,0x86,0x6a,0x23,0xa,0x12,0x23,0xe2,0x22,0x22,0x23,0x22,0x22,0x40,0x20,0x4,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x20,0x20,0x2f,0x20,0xf8,0x20,0x20,0x20,0x21,0x2a,0x34,0xe8,0x40,0x0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x0,0xfc,0x4,0x45,0x46,0x28,0x28,0x10,0x28,0x24,0x44,0x81,0x1,0x2,0xc,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x10,0xf8,0x27,0x20,0x20,0x20,0xf8,0x20,0x21,0x22,0x24,0x20,0x38,0xe0,0x40,0x0,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x17,0x10,0xff,0x12,0x3a,0x36,0x53,0x52,0x92,0x12,0x13,0x10,0x1f,0x10,0x0,0x8,0xfc,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x4,0xfe,0x0,
-+0x0,0x40,0x2f,0x20,0x0,0xe0,0x20,0x21,0x22,0x24,0x28,0x20,0x20,0x50,0x8f,0x0,0x0,0x4,0xfe,0x40,0x40,0x80,0x80,0xa0,0x98,0x8c,0x84,0x80,0x80,0x6,0xfc,0x0,
-+0x10,0x13,0x22,0x21,0x44,0xfb,0x10,0x27,0x40,0xfc,0x1,0x1,0x1a,0xe4,0x49,0x2,0xc,0xf0,0x48,0x50,0x20,0xfc,0x40,0xfe,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x11,0x12,0xfc,0x13,0x12,0x1e,0x32,0xd2,0x1f,0x10,0x10,0x11,0x52,0x2c,0x80,0x80,0xf0,0x20,0x48,0xfc,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x1,0x3f,0x21,0x21,0x3f,0x1,0x7f,0x41,0x41,0x7f,0x41,0x2,0x29,0x28,0x48,0x7,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x0,0x90,0xac,0x24,0xe0,
-+0x0,0x8,0x7c,0x49,0x4a,0x49,0x49,0x49,0x49,0x49,0x4f,0x78,0x48,0x0,0x1,0x6,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x88,0x6,0x4,
-+0x1,0x0,0x1f,0x11,0x51,0x32,0x14,0x33,0x52,0xd2,0x12,0x1f,0x20,0x21,0x42,0xc,0x0,0x84,0xfe,0x0,0xf0,0x20,0x48,0xfc,0x48,0x48,0x48,0xfe,0xa0,0x10,0xe,0x4,
-+0x9,0x5,0x7f,0x2,0xff,0x4,0xf,0x12,0x25,0xda,0x4,0x19,0x62,0xc,0x72,0x1,0x20,0x48,0xfc,0x0,0xfe,0x40,0xe0,0x10,0x1e,0xa4,0xc0,0xa0,0x98,0x88,0x80,0x0,
-+0x10,0x10,0x10,0x15,0x5a,0x51,0x51,0x91,0x11,0x11,0x17,0x28,0x24,0x40,0x81,0x6,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x88,0x6,0x4,
-+0x40,0x30,0x11,0x2,0x84,0x63,0x22,0xa,0x12,0x12,0xef,0x20,0x20,0x21,0x22,0x2c,0x80,0x80,0xf0,0x20,0x48,0xfc,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x2,0x1,0x7f,0x40,0x9f,0x11,0x11,0x1f,0x10,0x10,0x1f,0x11,0x11,0x11,0x1f,0x10,0x0,0x0,0xfe,0x2,0xf4,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x0,0x10,0xf8,0x0,
-+0x8,0x8,0xb,0x10,0x10,0x20,0x42,0xfe,0x4,0x8,0x10,0x20,0x42,0xff,0x1,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x4,0x4,0x7f,0x4,0x1,0xff,0x10,0x10,0x1f,0x0,0x11,0x11,0x11,0x11,0x21,0x41,0x40,0x48,0xfc,0x40,0x4,0xfe,0x0,0x20,0xf0,0x0,0x10,0x10,0x10,0x12,0x12,0xe,
-+0x11,0x11,0x1f,0x11,0x58,0x57,0x52,0x92,0x13,0x10,0x12,0x12,0x12,0x12,0x14,0x18,0x10,0x14,0xfe,0x10,0x44,0xfe,0x0,0x8,0xfc,0x0,0x48,0x48,0x48,0x4a,0x4a,0x46,
-+0x4,0x4,0x3f,0x4,0x4,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x10,0x4,0x18,0x60,0x40,0x50,0xf8,0x40,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x60,0x18,0x4,
-+0x0,0x8,0xfd,0x10,0x10,0x23,0x3c,0x65,0xa5,0x25,0x25,0x25,0x3c,0x24,0x1,0x6,0x88,0x88,0xfc,0x88,0x88,0xfe,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x0,0x88,0x6,0x2,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x54,0x57,0x7c,0x50,0x15,0x1c,0xf4,0x43,0x0,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x4,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x1f,0x28,0x45,0x4,0x7f,0x4,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0xc,0x30,0x40,0x7c,0xa0,0x50,0x40,0xfc,0x40,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x60,0x18,
-+0x2,0x4,0x3f,0x20,0x3f,0x20,0x3f,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x0,0x3f,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x2f,0x21,0x27,0x21,0x5f,0x40,0x80,0x8,0xfc,0x8,0xe8,0x28,0xe8,0x28,0xe8,0x8,0xe8,0x8,0xc8,0xa,0xfa,0xa,0x4,
-+0x10,0x10,0x13,0x12,0x5b,0x56,0x53,0x90,0x17,0x10,0x10,0x13,0x10,0x10,0x1f,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x13,0x16,0x5b,0x52,0x53,0x90,0x17,0x10,0x10,0x13,0x28,0x44,0x8f,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x1,0x11,0x9,0xff,0x4,0x4,0x4,0x8,0x10,0x60,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x10,0x24,0xfe,0x40,0x40,0x40,0x42,0x42,0x3e,
-+0x10,0x11,0x15,0x7f,0x55,0x55,0x54,0x55,0x54,0x54,0x57,0x5c,0x10,0x11,0x11,0x16,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0x24,0xac,0x30,0xfe,0x90,0x90,0x12,0x12,0xe,
-+0x10,0x10,0x12,0x11,0x59,0x54,0x57,0x90,0x10,0x10,0x11,0x11,0x11,0x12,0x12,0x1c,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0xa0,0xa0,0xa0,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0x41,0x2f,0x21,0x0,0xf,0xe2,0x22,0x23,0x20,0x22,0x22,0x2a,0x32,0x24,0x8,0x10,0x14,0xfe,0x10,0x44,0xfe,0x0,0x8,0xfc,0x0,0x48,0x48,0x48,0x4a,0x4a,0x46,
-+0x4,0x4,0x4,0xff,0x4,0x8,0x8,0xc,0x12,0x10,0x21,0x41,0x82,0x2,0x4,0x18,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0x98,0xa0,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x10,0x13,0x12,0x14,0xfb,0x10,0x11,0x1a,0x33,0xd0,0x10,0x17,0x10,0x10,0x50,0x20,0x0,0xfe,0x44,0x48,0xfc,0x80,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x95,0x56,0x38,0x11,0xfe,0x29,0x29,0x28,0x28,0x2b,0x4c,0x48,0x80,0x0,0x0,0xfe,0x4,0x40,0x48,0xfc,0x80,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x12,0x12,0x2a,0x2a,0x4f,0x90,0x1f,0x24,0x6f,0xa2,0x25,0x2f,0x22,0x2a,0x32,0x26,0x10,0x10,0x90,0x90,0xbe,0x44,0x84,0xa4,0x24,0x24,0x28,0x98,0x10,0xa8,0x46,0x84,
-+0x10,0x10,0x10,0x17,0x58,0x55,0x51,0x91,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x13,0x80,0x80,0x84,0xfe,0x80,0x20,0x20,0x24,0xac,0x70,0x20,0x20,0x50,0x50,0x8e,0x4,
-+0x10,0x10,0x11,0x11,0x7d,0x55,0x55,0x55,0x55,0x7d,0x11,0x11,0x15,0xfd,0x5,0x1,0x0,0x4,0xfe,0x4,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x7f,0x40,0x40,0x47,0x44,0x44,0x44,0x44,0x47,0x44,0x40,0x7f,0x40,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0x44,0x44,0xc4,0x44,0x4,0xfc,0x4,0x0,
-+0x10,0x66,0x42,0x42,0x66,0x42,0x43,0x7e,0x1,0x7e,0x8,0x8,0xe,0xf8,0x40,0x3,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x11,0x11,0x11,0x1a,0x55,0x51,0x51,0x91,0x1f,0x12,0x12,0x12,0x13,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x88,0x48,0xfc,0x8,0x28,0x10,
-+0x8,0x7e,0x8,0x3e,0x8,0x7e,0x8,0x3f,0x0,0xff,0x0,0x3f,0x9,0x28,0x48,0x7,0x20,0xfc,0x20,0xf8,0x20,0xfc,0x20,0xf8,0x8,0xfe,0x8,0xf8,0x0,0xa8,0x24,0xe0,
-+0x1,0x1,0x1,0x7f,0x1,0x9,0x9,0x8,0xff,0x8,0x8,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x8,0xfc,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x1,0x1,0xff,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x1,0x7f,0x2,0x29,0x28,0x48,0x7,0x0,0x4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x10,0xf8,0x4,0x90,0x8c,0x24,0xe0,
-+0x1,0x1,0x79,0x4a,0x4d,0x49,0x49,0x79,0x4f,0x4a,0x4a,0x4a,0x7b,0x48,0x0,0x0,0x0,0x8,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x88,0x48,0xfc,0x8,0x50,0x20,
-+0x4,0x7e,0x44,0x57,0x54,0x54,0x55,0x56,0x54,0x54,0x54,0x54,0x28,0x24,0x44,0x80,0x20,0x20,0x24,0xfe,0x40,0x84,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x94,0x88,
-+0x8,0x1c,0xf1,0x11,0x11,0xfd,0x11,0x38,0x34,0x51,0x52,0x90,0x10,0x10,0x10,0x17,0x20,0x20,0x24,0x24,0x24,0xfc,0x44,0x40,0xfe,0x4,0x84,0x48,0x30,0x20,0xc0,0x0,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc0,0x0,0x3f,0x2,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0x0,0x40,0x20,0xf0,0x10,
-+0x10,0x10,0x10,0x14,0x59,0x52,0x55,0x90,0x10,0x17,0x10,0x28,0x24,0x41,0x83,0x0,0x40,0x40,0xa0,0x90,0x8,0x26,0xf4,0x0,0x4,0xfe,0x40,0x40,0x90,0x8,0xfc,0x4,
-+0x0,0x40,0x37,0x14,0x4,0x84,0x64,0x24,0xc,0x14,0xe4,0x24,0x24,0x24,0x27,0x20,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x40,0x2f,0x20,0x0,0x7,0xe0,0x20,0x2f,0x20,0x20,0x24,0x28,0x30,0x20,0x0,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x1,0x41,0x31,0x12,0x5,0x1,0xf1,0x11,0x17,0x12,0x12,0x12,0x17,0x18,0x10,0x0,0x0,0x8,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x88,0x48,0xfc,0x8,0x28,0x10,
-+0x10,0x10,0x20,0x20,0x49,0xfa,0x15,0x20,0x40,0xfb,0x0,0x0,0x18,0xe1,0x43,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x8,0xfc,0x40,0x40,0x90,0x8,0xfc,0x4,
-+0x4,0x4,0x7f,0x4,0x7f,0x42,0x82,0x3f,0x5,0x9,0x1f,0x1,0xff,0x1,0x1,0x1,0x40,0x48,0xfc,0x40,0xfe,0x4,0x8,0xf8,0x0,0x20,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x0,0x3f,0x21,0x21,0x3f,0x20,0x28,0x30,0x20,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x78,0x80,0x0,0x10,0xf8,0x80,0x42,0x32,0xe,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x24,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0xc,0xf0,0x20,0x24,0xfe,0x10,0x50,0x8a,0x6,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,
-+0x0,0x11,0x7b,0x2,0xa,0xff,0x22,0x22,0x23,0x42,0x48,0xfd,0x5,0x2,0x4,0x8,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x48,0x54,0x5c,0x42,0x3e,
-+0x40,0x27,0x24,0x8,0x81,0x67,0x21,0xa,0x14,0x27,0xe0,0x20,0x2f,0x20,0x20,0x20,0x0,0xfe,0x84,0x88,0x0,0xfc,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,
-+0x40,0x37,0x14,0x4,0x87,0x64,0x24,0xf,0x10,0x24,0xe7,0x24,0x24,0x24,0x25,0x26,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x48,0x58,0x60,0x40,0xc2,0x42,0x3e,
-+0x20,0x10,0xfe,0x92,0x7d,0x10,0x7c,0x10,0xfe,0x11,0x7c,0x44,0x44,0x44,0x7c,0x44,0x0,0x50,0x48,0x84,0x20,0x20,0x50,0x48,0x86,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x40,0x30,0x17,0x0,0x80,0x60,0x2f,0x8,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x10,0x38,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x10,0x12,0x32,0x52,0x94,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x40,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x1,0x1,0x1,0x1,0x11,0x11,0x11,0x21,0x42,0x2,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x8,0x18,0x20,0x40,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x24,0x18,0x10,0x2b,0x48,0x8,0x18,0x28,0xc8,0x8,0x29,0x12,0x40,0x44,0xfe,0x40,0x28,0x24,0x20,0xfe,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x0,0x0,0x0,0xff,0x0,0x2,0x3f,0x22,0x22,0x22,0x3e,0x20,0x7,0x78,0x0,0x3,0x50,0x48,0x40,0xfe,0x40,0x40,0x48,0x48,0x48,0x50,0x50,0x20,0x22,0x52,0x8a,0x4,
-+0x0,0x0,0xff,0x0,0x3e,0x22,0x3e,0x20,0xe,0x70,0x0,0x2,0x29,0x28,0x48,0x7,0xa0,0x94,0xfe,0x80,0x88,0x88,0x50,0x50,0x22,0x52,0x8e,0x0,0x90,0xac,0x24,0xe0,
-+0x3f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0x1f,0x30,0x57,0x90,0x17,0x10,0x1f,0x10,0xf8,0x0,0xfe,0x2,0x74,0x0,0x70,0x80,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x0,
-+0x8,0x8,0x10,0x30,0x57,0x90,0x10,0x10,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x80,0x88,0x98,0xe0,0x82,0x82,0x7e,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x40,0x23,0x22,0x2,0xfa,0x13,0x20,0x70,0xaf,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x44,0x44,0xb4,0x14,0x4,0x14,0x8,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x17,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1e,0xf2,0x44,0x4,0x9,0x12,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x90,0xe,0x4,
-+0x8,0x8,0x7f,0x8,0xf,0x8,0xf,0x8,0xff,0x4,0x9,0x31,0xcf,0x1,0x1,0x3f,0x20,0x28,0xfc,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x40,0x30,0x4e,0xe4,0x0,0x10,0xf8,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x14,0x18,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x4,0x7f,0x54,0x54,0x54,0x7f,0x54,0x55,0x55,0x7d,0x45,0x1,0x1,0x0,0x0,0x20,0x28,0xfc,0x20,0x50,0x88,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x8,0x1c,0xf3,0x10,0x10,0xfd,0x13,0x31,0x39,0x55,0x50,0x91,0x11,0x11,0x11,0x11,0x50,0x48,0xfc,0xa0,0xa2,0x3e,0x0,0xf0,0x4,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x4,0xe,0x78,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x48,0x88,0x9,0xa,0x8,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x88,0xc4,0x6,0x2,0x0,
-+0x12,0x1f,0x28,0x45,0x88,0x3f,0x8,0xf,0x8,0xf,0x8,0xff,0x0,0x8,0x18,0x20,0x44,0x7e,0xa0,0x10,0x20,0xf8,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x0,0x20,0x18,0x8,
-+0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x24,0x4d,0x86,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x8a,0x8a,0x6,0x0,
-+0x20,0x20,0x21,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x21,0x25,0x29,0x32,0x24,0x8,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x1,0x40,0x20,0x2f,0x1,0x1,0xe5,0x25,0x25,0x29,0x21,0x21,0x22,0x50,0x8f,0x0,0x0,0xc0,0x48,0xfc,0x20,0x20,0x28,0x24,0x24,0x24,0x20,0x20,0x60,0x6,0xfc,0x0,
-+0x2,0x44,0x2f,0x28,0xf,0x88,0x4f,0x42,0x1f,0x24,0xc7,0x44,0x44,0x48,0x4a,0x51,0x10,0x90,0xd0,0x94,0xbe,0xc4,0xa4,0x28,0xa8,0x28,0x90,0x90,0xa8,0xa8,0xc6,0x84,
-+0x0,0x20,0x11,0x11,0x1,0xf1,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x12,0x4,0x8,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x0,0x1,0xfd,0x5,0x49,0x29,0x11,0x11,0x29,0x24,0x40,0x87,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x4,0xfe,0x10,0x10,0x14,0x7e,0x44,0x44,0x44,0x44,0x7c,0x10,0x10,0x14,0xfe,0x0,
-+0x10,0x10,0x27,0x20,0x49,0xf8,0x17,0x20,0x43,0xfa,0x2,0x2,0x1a,0xe0,0x41,0x6,0x40,0x48,0xfc,0x40,0xf0,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0x90,0xc,0x4,
-+0x10,0x11,0x21,0x21,0x49,0xf8,0x17,0x21,0x41,0xf9,0x1,0x1,0x19,0xe7,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,
-+0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x3f,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x17,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x92,0x12,0x12,0x14,0x19,0x12,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x14,0xfe,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x38,0x54,0x93,0x12,0x10,0x10,0x20,0x24,0xfe,0x20,0x28,0xfc,0xa8,0xa8,0xa8,0xa8,0x70,0xa8,0x26,0x24,0x20,0x20,
-+0x10,0x11,0x11,0xfd,0x21,0x28,0x4b,0x7d,0x9,0x9,0xf,0xf9,0x49,0xf,0x8,0x8,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,
-+0x10,0x14,0x3e,0x49,0x90,0x7d,0x10,0x7c,0x13,0xfe,0x11,0x39,0x55,0x91,0x11,0x11,0x40,0x48,0xfc,0x20,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x9,0x8,0x1f,0x31,0x5f,0x91,0x1f,0x11,0x1f,0x11,0xff,0x5,0x9,0x11,0x61,0x1,0x0,0x90,0xf8,0x0,0xf0,0x0,0xf0,0x0,0xf8,0x0,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x0,0x7f,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x11,0x20,0x21,0x42,0x84,0x8,0x0,0xf0,0x20,0x20,0x40,0x40,0xf8,0x8,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x4,0x4,0xf,0x8,0x10,0x3f,0x40,0x1f,0x0,0x3f,0x2,0x51,0x50,0x90,0xf,0x0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x1,0x0,0x1f,0x12,0x92,0x53,0x54,0x18,0x30,0x5f,0xd0,0x10,0x20,0x21,0x42,0xc,0x0,0x84,0xfe,0x0,0x8,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x40,0x37,0x11,0x1,0x81,0x61,0x25,0x9,0x11,0x21,0xe2,0x22,0x22,0x24,0x29,0x22,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x0,0x7e,0x42,0x42,0x7e,0x42,0x42,0x7e,0x40,0x44,0x44,0x4a,0x72,0x40,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xa4,0x94,0x88,0x80,0x80,0x80,0x80,
-+0x20,0x20,0x21,0x21,0xf9,0x4d,0x4b,0x49,0x49,0x8b,0x55,0x51,0x22,0x52,0x8c,0x8,0x20,0x14,0xfe,0x40,0x48,0x7c,0x50,0x90,0x14,0xfe,0x10,0x10,0x20,0x28,0x46,0x82,
-+0x10,0x17,0x21,0x21,0x49,0xf9,0x11,0x21,0x41,0xf9,0x2,0x2,0x1a,0xe4,0x49,0x2,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x17,0x10,0xfd,0x10,0x14,0x19,0x36,0xd1,0x11,0x11,0x11,0x11,0x52,0x24,0x80,0x48,0xfc,0x8,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0x40,0x40,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x1,0x21,0x11,0xa,0x12,0x24,0x8,0x1f,0x28,0xcf,0x8,0xf,0x8,0x8,0x8,0x8,0x0,0x8,0x10,0xa0,0x98,0x48,0x20,0xf0,0x2e,0xe4,0x20,0xe0,0x20,0x20,0xa0,0x40,
-+0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x1f,0x22,0x7f,0x24,0x3f,0x24,0x3f,0x20,0x3,0x7c,0x0,0x40,0x44,0xfe,0x40,0x4,0x24,0x24,0xa4,0xa4,0xa4,0xa4,0xa4,0x4,0x84,0x14,0x8,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x13,0x1a,0x31,0xd1,0x10,0x10,0x10,0x51,0x26,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0xf8,0x8,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x2,0x7e,0x2,0xfe,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x4,0x3f,0x4,0xff,0x10,0x60,0x80,0xf8,0x82,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xf8,0x40,0xfe,0x10,0xc,
-+0x0,0x1f,0x1,0x1,0x7f,0x5,0x9,0x11,0x6f,0x0,0x0,0xff,0x1,0x1,0x5,0x2,0xe0,0x0,0x0,0x8,0xfc,0x40,0x20,0x1c,0xe8,0x40,0x84,0xfe,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x93,0x12,0x11,0x11,0x10,0x10,0x10,0x11,0x16,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xf8,0x8,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x10,0x10,0x1e,0x22,0x52,0xcc,0x28,0x17,0x20,0xc0,0x1f,0x1,0x9,0x11,0x25,0x2,0x0,0x0,0xfc,0x88,0x50,0x20,0x20,0xd0,0xe,0x24,0xf0,0x0,0x40,0x30,0x10,0x0,
-+0x8,0x4,0x7f,0x11,0xa,0x4,0xa,0x31,0xd1,0x11,0x11,0x11,0x11,0x21,0x41,0x0,0x4,0x84,0xc4,0x24,0x24,0x24,0x24,0xa4,0x64,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x10,0x13,0x10,0x18,0x57,0x50,0x51,0x92,0x15,0x10,0x10,0x1f,0x10,0x10,0x11,0x10,0x38,0xc0,0x40,0x48,0xfc,0xe0,0x50,0x4e,0xf4,0x20,0x44,0xfe,0x40,0x40,0x40,0x80,
-+0x0,0x40,0x37,0x11,0x80,0x60,0x21,0xe,0x11,0x21,0xe1,0x21,0x21,0x22,0x24,0x20,0x80,0x44,0xfe,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x2,0x1,0x7f,0x41,0x81,0x1f,0x2,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0xfe,0x2,0x24,0xf0,0x80,0x44,0xfe,0x10,0x90,0x90,0x90,0x90,0x50,0x20,
-+0x2,0x1,0x7f,0x40,0x88,0xe,0x8,0x8,0xff,0x8,0x2c,0x2b,0x49,0x88,0x28,0x13,0x0,0x0,0xfe,0x2,0x4,0xf8,0x8,0x88,0x88,0x50,0x50,0x20,0x20,0x50,0x8e,0x4,
-+0x0,0x20,0x10,0x10,0x0,0x0,0xf7,0x10,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x20,0x17,0x10,0x0,0x0,0xf0,0x13,0x12,0x12,0x12,0x12,0x16,0x1a,0x11,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x2,0x2,0x2,0xfe,0x0,
-+0x0,0x7d,0x44,0x44,0x7d,0x45,0x45,0x45,0x7c,0x40,0x48,0x44,0x5c,0x60,0x41,0x6,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x92,0x92,0xe,0x0,
-+0x0,0x7f,0x0,0x0,0x3f,0x20,0x20,0x20,0x1f,0x0,0x52,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x4,0x4,0xfc,0x0,0x4,0x82,0x92,0x12,0xf0,0x0,
-+0x0,0x7d,0x44,0x48,0x48,0x50,0x4b,0x48,0x44,0x44,0x44,0x69,0x52,0x40,0x40,0x40,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0xa8,0xa4,0x22,0x22,0x20,0xa0,0x40,
-+0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x25,0x25,0x44,0x28,0x10,0x28,0x44,0x84,0x3,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x12,0x22,0x23,0x4a,0xfa,0x12,0x23,0x42,0xfa,0x42,0x3,0x1a,0xe2,0x43,0x0,0x20,0x20,0x20,0x24,0xac,0x70,0x20,0xfc,0x20,0x70,0xac,0x24,0x20,0x24,0xfe,0x0,
-+0x8,0x8,0x13,0x10,0x24,0xfc,0x8,0x11,0x21,0xfd,0x41,0x1,0x1d,0xe1,0x40,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x1,0x7f,0x1,0x3f,0x0,0x1f,0x10,0x1f,0x4,0xff,0x10,0x7e,0x12,0x12,0x2a,0x44,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x44,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x88,
-+0x12,0x12,0x12,0x12,0xfe,0x17,0x32,0x3a,0x56,0x52,0x92,0x12,0x14,0x15,0x18,0x10,0x0,0x0,0x0,0x4,0x1e,0xd4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x94,0x0,
-+0x1,0x1,0x1,0x7f,0x1,0x11,0x9,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x8,0xfc,0x0,0x10,0x20,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x10,0x10,0x17,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x3f,0x4,0x1a,0x63,0x5,0x19,0x63,0x5,0x19,0x65,0x2,0x0,0x0,0xfe,0x2,0x4,0xf8,0x0,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x10,0x10,0x10,0x12,0xff,0x12,0x12,0x12,0x12,0x22,0x22,0x22,0x22,0x4a,0x84,0x0,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,
-+0x4,0x4,0xff,0x4,0x1,0x7f,0x1,0x9,0x5,0xff,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x20,0x44,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x13,0x10,0xfe,0x11,0x55,0x39,0x11,0xff,0x11,0x11,0x29,0x25,0x44,0x81,0x2,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x44,0x54,0x8c,0x4,0x2,
-+0x0,0xff,0x4,0x7f,0x44,0x44,0x7f,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x4,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x10,0xf8,0x10,0x10,0x10,0x10,0x60,0x18,0x8,
-+0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x1,0x1,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,
-+0x10,0x17,0x14,0x24,0x24,0x67,0xa4,0x24,0x27,0x24,0x24,0x27,0x24,0x24,0x25,0x26,0x4,0xbe,0x84,0x84,0x84,0xbc,0x0,0x7c,0x84,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x1c,0xf3,0x12,0x10,0xfd,0x10,0x39,0x36,0x54,0x51,0x92,0x14,0x11,0x12,0x10,0x40,0x20,0xfe,0x2,0x4,0xfc,0x80,0x44,0x6c,0xb0,0x30,0x68,0xa8,0x26,0xa4,0x40,
-+0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x99,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x14,0x40,0x40,0x40,0xa0,0x10,0x8,0x6,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x7e,0x12,0x12,0x12,0x2a,0x44,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x80,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x10,0x10,0x7f,0x11,0x11,0x25,0x42,0x9f,0x0,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x0,0x4,0x7e,0x44,0x44,0x7c,0x44,0xe0,0x20,0x20,0x24,0xfe,0x4,0xc4,0x14,0x8,
-+0x10,0x10,0x13,0x12,0xfc,0x25,0x24,0x25,0x26,0x44,0x29,0x12,0x28,0x45,0x84,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x80,0x44,0x6c,0xb0,0x30,0x68,0xa8,0x26,0xa4,0x40,
-+0x4,0x7e,0x11,0x10,0x10,0x3e,0x22,0x63,0x92,0xc,0x4,0x8,0x10,0x20,0x40,0x0,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x4,0x24,0x24,0x24,0x25,0x24,0x24,0x4,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x40,0x40,0x48,0x7c,0xa0,0x18,0x8,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x4,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x27,0x5,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0xf8,0x8,0x90,0x90,0x60,0x20,0xd0,0xe,0x4,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x1,0x1,0x9,0xd,0x11,0x21,0x0,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x20,0x10,0x18,0x8,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x14,0x3e,0x48,0x2,0x2,0x7f,0x2,0x1,0x7f,0x1,0x1,0x0,0x7,0x38,0x0,0x40,0x48,0xfc,0x20,0x80,0x50,0xf8,0x0,0x4,0xfe,0x10,0x20,0xc0,0x44,0x24,0x1c,
-+0x20,0x1b,0x8,0x40,0x4f,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0xe4,0x24,0x14,0x8,
-+0x8,0x4,0xff,0x2,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x22,0x26,0x0,0x24,0x22,0x40,0x20,0x44,0xfe,0x0,0x8,0x48,0x48,0x48,0x48,0x48,0x8,0x18,0x0,0x90,0x4c,0x4,
-+0x10,0x8,0x7f,0x4,0x3f,0x4,0x4,0xff,0x4,0x4,0x3f,0xc,0x14,0x24,0xc4,0x4,0x20,0x48,0xfc,0x90,0xf8,0x90,0x94,0xfe,0x90,0x90,0xf0,0xc0,0xb0,0x8e,0x84,0x80,
-+0x2,0x1,0x1f,0x10,0x10,0x1f,0x10,0x17,0x14,0x17,0x14,0x27,0x24,0x44,0x84,0x4,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x1,0x7d,0x5,0x45,0x29,0x29,0x11,0x11,0x29,0x29,0x45,0x85,0x1,0x1,0x1,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x4c,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x10,0x11,0x10,0x14,0xfe,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x20,0x27,0x44,0xfc,0x15,0x24,0x45,0xfd,0x45,0x5,0x1d,0xe5,0x48,0x10,0x10,0x18,0x14,0xfe,0x10,0x10,0xd0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x2a,0x46,0x82,
-+0x8,0x8,0xff,0x8,0x9,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x7f,0x0,0x20,0x24,0xfe,0x20,0x20,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x10,0xf8,0x4,0x4,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x35,0x30,0x58,0x56,0x91,0x11,0x11,0x10,0x1f,0x10,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0,
-+0x1,0x1,0xff,0x1,0x3f,0x21,0x29,0x25,0x21,0x3f,0x23,0x5,0x9,0x31,0xc1,0x1,0x0,0x4,0xfe,0x8,0xfc,0x8,0x28,0x48,0x8,0xf8,0x88,0x40,0x30,0xe,0x4,0x0,
-+0x0,0x10,0xf8,0x27,0x24,0x44,0x55,0x7c,0xd5,0x55,0x55,0x55,0x55,0x75,0x48,0x10,0x10,0x18,0x14,0xfe,0x10,0x10,0xd0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x2a,0x46,0x82,
-+0x0,0x8,0xfc,0x10,0x11,0x22,0x2d,0x78,0xa8,0x2a,0x29,0x29,0x29,0x38,0x27,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x13,0x11,0x1e,0x33,0xd0,0x10,0x10,0x11,0x12,0x54,0x20,0x40,0x44,0xfe,0x80,0x80,0xe0,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0xa2,0x40,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x15,0x18,0x30,0xd2,0x11,0x11,0x11,0x10,0x57,0x20,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0x90,0x2b,0x20,0x27,0x24,0x24,0x27,0x24,0x24,0x27,0x20,0x20,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x8,0xc8,0x48,0x48,0xc8,0x48,0x48,0xc8,0x28,0x10,
-+0x8,0x8,0x8,0x10,0x11,0x32,0x55,0x98,0x10,0x12,0x11,0x11,0x11,0x10,0x1f,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x4,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0,
-+0x8,0x4,0xff,0x2,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x26,0x7f,0x4,0x4,0x18,0x60,0x20,0x44,0xfe,0x0,0x48,0x48,0x48,0x48,0x48,0x18,0x8,0xfc,0x8,0x8,0x28,0x10,
-+0x0,0x40,0x30,0x17,0x4,0x4,0xd,0x14,0x25,0xe5,0x25,0x25,0x25,0x25,0x8,0x10,0x10,0x18,0x14,0xfe,0x10,0x10,0xd0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x2a,0x46,0x82,
-+0x8,0x8,0xff,0xa,0x2,0x7f,0x4,0xb,0x10,0x10,0x3f,0x50,0x90,0x10,0x11,0x10,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0xf0,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x12,0x12,0xfe,0x12,0x32,0x38,0x54,0x53,0x92,0x12,0x12,0x12,0x1f,0x10,0x80,0x90,0x94,0xbe,0xd0,0x8c,0x84,0x80,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x4,0x24,0x24,0x25,0x26,0x25,0x1,0x6,0x18,0x6f,0x81,0x1f,0x9,0x5,0x7f,0x0,0x40,0x48,0xfc,0x40,0x30,0x10,0x0,0xc0,0x30,0xee,0x4,0xf0,0x20,0x48,0xfc,0x0,
-+0x4,0x7e,0x44,0x44,0x44,0x7d,0x10,0x10,0x53,0x5c,0x50,0x50,0x5c,0x70,0xc3,0x0,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x4,0x7e,0x44,0x54,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x54,0x10,0x28,0x47,0x84,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x4,0x4,0x8,0x30,0xc0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0x80,0x82,0x82,0x7e,0x0,
-+0x20,0x27,0x39,0x41,0x82,0x7a,0x24,0x27,0xf9,0x21,0x25,0x22,0x2a,0x35,0x28,0x0,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0x14,0xfe,0x10,0x10,0x96,0x7c,
-+0x10,0x1e,0x28,0x45,0x8,0x4,0xff,0x2,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x2a,0x24,0x40,0x7c,0x90,0x8,0x20,0x44,0xfe,0x8,0x8,0x48,0x48,0x48,0x48,0x48,0x8,0x18,
-+0x10,0x10,0x12,0x22,0x23,0x64,0xa4,0x28,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x2e,0x23,0x62,0xa4,0x28,0x2f,0x22,0x32,0x2d,0x24,0x2a,0x31,0x20,0x20,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfe,0x20,0x24,0xfe,0x20,0x20,0x26,0xfc,
-+0x8,0x10,0x3e,0x22,0x22,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x4a,0x85,0x0,0x4,0xfe,0x84,0x94,0x94,0x94,0x94,0xa4,0xa4,0x20,0x50,0x50,0x52,0x92,0xe,
-+0x4,0x4,0xa,0x11,0x20,0x42,0xbf,0x0,0x24,0x14,0x15,0x15,0x3,0x7c,0x20,0x0,0x4,0x4,0x4,0x24,0xa4,0x64,0x24,0x24,0xa4,0xa4,0x24,0x24,0x84,0x4,0x14,0x8,
-+0x20,0x20,0x20,0x3c,0x24,0x4b,0x40,0xa0,0x23,0x20,0x20,0x24,0x28,0x30,0x23,0x0,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x2,0x42,0x22,0x2f,0x4,0x85,0x69,0x2f,0x11,0x21,0xe1,0x3f,0x29,0x21,0x21,0x21,0x0,0xc,0x30,0xe0,0x20,0x24,0x3e,0xe8,0x28,0x28,0xe8,0x28,0x28,0x48,0x88,0x8,
-+0x0,0x40,0x2f,0x28,0xa,0x8a,0x4a,0x4a,0x1a,0x2a,0xca,0x4a,0x42,0x45,0x48,0x50,0x20,0x20,0xa4,0xae,0xf0,0xa0,0xae,0xf0,0xa4,0xa4,0xa8,0x90,0x30,0x4a,0x8a,0x6,
-+0x2,0x41,0x34,0x14,0x84,0x65,0x25,0xd,0x15,0x25,0xe5,0x25,0x25,0x24,0x24,0x24,0x4,0xbe,0x84,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x14,0x4,0x14,0x8,
-+0x0,0x0,0xfb,0x8,0x17,0x10,0x3b,0x8,0x8b,0x50,0x50,0x37,0x20,0x50,0x88,0x7,0x40,0x48,0xfc,0x48,0xfe,0x48,0xf8,0x40,0xf8,0x40,0x48,0xfc,0x40,0x40,0x46,0xfc,
-+0x10,0x1f,0x10,0x27,0x24,0x67,0xa4,0x2f,0x20,0x27,0x24,0x27,0x24,0x27,0x20,0x2f,0x4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,
-+0x8,0x4,0x7f,0x1,0x3f,0x1,0x7f,0x2,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x20,0x48,0xfc,0x0,0xf8,0x0,0xfc,0x0,0x4,0xfe,0x20,0x20,0xc0,0x80,0x60,0x10,
-+0x10,0x10,0x11,0x91,0x73,0x34,0x10,0x10,0x1f,0x30,0x52,0xd1,0x10,0x10,0x10,0x10,0x80,0x80,0xf8,0x8,0x10,0xa0,0x40,0x94,0xfe,0x10,0x10,0x90,0x90,0x10,0x50,0x20,
-+0x4,0x44,0x24,0x4,0x15,0x24,0x64,0x5,0x1,0x7d,0x5,0x9,0x9,0x11,0x65,0x2,0x40,0x40,0x7c,0x84,0x48,0x30,0x20,0x40,0x8,0x98,0x60,0x20,0x10,0xe,0x4,0x0,
-+0x40,0x30,0x17,0x0,0x80,0x60,0x20,0x8,0x10,0x20,0xe0,0x20,0x20,0x2f,0x20,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0,
-+0x0,0xff,0x4,0x5,0x7d,0x45,0x41,0x43,0x7c,0x25,0x75,0x25,0x35,0xc5,0x14,0xb,0x4,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xfe,
-+0x4,0x4,0xff,0x4,0x4,0x8,0x49,0x2a,0x28,0x8,0x1f,0x28,0x49,0x88,0x8,0x8,0x40,0x44,0xfe,0x40,0x40,0xf8,0x8,0xb0,0x50,0x94,0xfe,0x10,0x10,0x90,0x10,0x30,
-+0x4,0x44,0x24,0x4,0x15,0x24,0x64,0x5,0x1,0xff,0x5,0x9,0x11,0x21,0xc1,0x1,0x40,0x40,0x7c,0x84,0x48,0x30,0x20,0x40,0x4,0xfe,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x4,0x44,0x24,0x4,0x15,0x24,0x64,0x4,0x1,0xff,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x40,0x7c,0x84,0x48,0x30,0x20,0x40,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x1,0x21,0x11,0x17,0x1,0x1,0xf1,0x11,0x1f,0x11,0x11,0x15,0x19,0x11,0x2,0x0,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x7f,0x40,0x40,0x4f,0x48,0x48,0x4f,0x48,0x48,0x48,0x50,0x60,0x40,0x7f,0x0,0x8,0xfc,0x20,0x70,0x80,0x0,0x10,0xf8,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x4,0x44,0x24,0xd,0x16,0x64,0x4,0xff,0x4,0x3f,0x24,0x38,0x27,0x20,0x3f,0x20,0x80,0xf8,0x88,0x90,0x60,0x40,0x84,0xfe,0x40,0xf8,0x48,0x38,0xc8,0x8,0xf8,0x8,
-+0x0,0x7c,0x45,0x4a,0x48,0x50,0x49,0x4a,0x44,0x45,0x45,0x69,0x53,0x40,0x40,0x40,0x80,0x80,0xf8,0x10,0xa0,0x40,0xb0,0x4e,0x44,0xf0,0x40,0x48,0xfc,0x40,0x40,0x40,
-+0x8,0x8,0xff,0x9,0x8,0x1f,0x10,0x3f,0x50,0x1f,0x10,0x1f,0x10,0x24,0x22,0x40,0x20,0x24,0xfe,0x20,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x0,0x48,0x26,0x2,
-+0x22,0x22,0x22,0x23,0xfa,0x22,0x7f,0x6a,0xa2,0x27,0x2a,0x32,0x22,0x2a,0x24,0x21,0x0,0x0,0x7c,0xc4,0x44,0x24,0x28,0x28,0x28,0x10,0x90,0x28,0x28,0x46,0x84,0x0,
-+0x1,0x9,0xfd,0x11,0x13,0x25,0x21,0x79,0xa9,0x29,0x29,0x29,0x29,0x3a,0x22,0x4,0x20,0x14,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x14,0xfe,0x0,0xa4,0x92,0x2,
-+0x9,0x8,0xf,0x10,0x10,0x3f,0x50,0x90,0x1f,0x10,0x10,0x1f,0x10,0x24,0x22,0x40,0x0,0x88,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x84,0xfe,0x0,0x90,0x4c,0x4,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x26,0x24,0x3c,0x24,0x24,0x24,0x44,0x95,0xa,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x2,0x1,0x1,0xff,0x8,0x8,0x10,0x28,0x44,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x4,0xfe,0x20,0x10,0xc,0x24,0x40,0x80,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x8,0x9,0xff,0x0,0x14,0x22,0x41,0xa2,0x14,0x8,0x14,0x12,0x22,0x40,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x41,0x31,0x10,0x7,0x80,0x60,0x20,0xb,0x10,0x27,0xe1,0x21,0x21,0x21,0x22,0x2c,0x0,0x8,0xfc,0x80,0xa0,0x44,0xa4,0x1c,0x0,0xfc,0x20,0x20,0x20,0x22,0x22,0x1e,
-+0x8,0xfd,0x8,0x48,0x4b,0x48,0x48,0x49,0x7e,0x4,0x1c,0xe4,0x44,0x14,0x9,0x2,0xc,0xf0,0x20,0x24,0xfe,0x50,0x88,0x6,0x8c,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x10,0x13,0x10,0x10,0xfc,0x27,0x24,0x25,0x27,0x45,0x29,0x11,0x29,0x45,0x82,0x4,0x18,0xe0,0x40,0x40,0x44,0xfe,0xa0,0x10,0x1e,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0xf,0x2,0xef,0xa9,0xaf,0xa0,0xaf,0xa8,0xaf,0xa8,0xaf,0xe8,0x89,0xf,0x0,0x1c,0xe0,0x48,0xfc,0x24,0xfc,0x0,0x88,0x88,0xfe,0x88,0xa8,0x28,0x8,0xa8,0x10,
-+0x12,0x11,0x11,0x17,0xfc,0x14,0x13,0x1a,0x32,0xd2,0x12,0x12,0x12,0x10,0x51,0x26,0x44,0x24,0x28,0xfe,0x2,0x4,0xf8,0x8,0x48,0x48,0x48,0x48,0x48,0xa2,0x22,0x1e,
-+0x10,0x10,0x10,0x1f,0x20,0x20,0x7d,0x92,0x10,0x7c,0x10,0x10,0x14,0x18,0x11,0x2,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x20,0x23,0x28,0x3c,0x50,0x97,0x10,0xfd,0x13,0x15,0x11,0x29,0x25,0x41,0x82,0x4,0x18,0xe0,0x40,0x40,0x44,0xfe,0xa0,0x10,0x1e,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x9,0x9,0x8,0x17,0x10,0x30,0x50,0x93,0x10,0x17,0x11,0x11,0x11,0x11,0x12,0x1c,0x0,0x8,0xfc,0x80,0xa0,0x44,0xa4,0x1c,0x0,0xfc,0x20,0x20,0x20,0x22,0x22,0x1e,
-+0x9,0x7d,0x49,0x4f,0x49,0x79,0x49,0x4f,0x49,0x79,0x4a,0x4a,0x4f,0x48,0x88,0x18,0x0,0x4,0x3e,0xe4,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0xb4,0xe8,0x60,0x20,0x20,
-+0x8,0x88,0x50,0x27,0x50,0x89,0xa,0x1c,0x29,0x48,0x88,0x8,0x8,0x9,0x52,0x24,0x80,0x40,0x44,0xfe,0x0,0x10,0xc,0x4,0x10,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x8,0xf,0x10,0x20,0x5f,0x91,0x11,0x1f,0x11,0x11,0x1f,0x11,0x11,0x21,0x41,0x80,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0x28,0x10,
-+0x20,0x20,0x20,0x3f,0x24,0x48,0x41,0xa2,0x20,0x20,0x20,0x24,0x28,0x30,0x21,0x2,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x22,0x24,0x2f,0x48,0x4f,0xf8,0x1f,0x22,0x5f,0x84,0xf7,0x4,0x34,0xc8,0x49,0x10,0x10,0x90,0xd0,0x94,0xbe,0xc4,0xa4,0x28,0xe8,0x28,0x90,0x90,0xa8,0xa8,0xc6,0x84,
-+0x10,0x10,0x20,0x23,0x44,0xf8,0x11,0x22,0x40,0xfc,0x0,0x0,0x1c,0xe0,0x41,0x2,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x24,0x24,0x49,0x24,0x3f,0x24,0x3f,0x24,0x3f,0x4,0xff,0x15,0x14,0x24,0x44,0x4,0x84,0x84,0x24,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0xe4,0x24,0x84,0x84,0x14,0x8,
-+0x8,0x8,0x7f,0x9,0xa,0xff,0x8,0x1f,0x22,0xcc,0x8,0xe,0x78,0x8,0x29,0x12,0x40,0x40,0x40,0x44,0x7e,0x88,0x8,0x48,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x2,0xff,0x28,0x28,0xfe,0xab,0xaa,0xaa,0xc7,0x82,0x83,0xfe,0x82,0x82,0xfe,0x82,0x20,0x24,0xfc,0x28,0x28,0xfe,0x10,0x20,0xfc,0x88,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x10,0x13,0x20,0xfc,0x20,0x57,0x50,0xfd,0x13,0x15,0x1d,0xf1,0x51,0x11,0x12,0x14,0xc,0xf0,0x40,0x40,0x44,0xfe,0x90,0x18,0x1e,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x20,0xff,0x20,0x50,0x51,0xfe,0x10,0x10,0x1e,0xf0,0x50,0x10,0x11,0x12,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x0,0x4,0x4,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x9c,0xe4,0x84,0x4,0x4,0x4,
-+0x2,0x1,0x7f,0x48,0x91,0x9,0xf,0x11,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x22,0x14,0x0,0xf0,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x10,0x13,0x12,0x13,0xfe,0x13,0x14,0x19,0x33,0xd4,0x1c,0x14,0x15,0x17,0x50,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x4,0xfe,0x44,0x44,0xa4,0x14,0xe4,0x28,0x10,
-+0x10,0x10,0x17,0x10,0xfd,0x10,0x17,0x18,0x30,0xdf,0x10,0x11,0x10,0x10,0x50,0x23,0x80,0x48,0xfc,0x0,0x10,0xa0,0xfc,0x80,0x84,0xfe,0x90,0x10,0xa0,0x60,0x98,0x8,
-+0x20,0x24,0x3e,0x20,0x20,0x26,0x78,0x2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x80,0x88,0x98,0xe0,0x82,0x82,0x7e,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x4,0xe,0x78,0xb,0x8,0xfe,0x8,0x19,0x1c,0x2a,0x29,0x49,0x89,0x9,0x9,0x9,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x12,0x12,0x22,0x4f,0x82,0x12,0x1f,0x22,0x62,0xaf,0x22,0x22,0x23,0x3e,0x28,0x20,0x0,0x8,0x7c,0x80,0x0,0x4,0xfe,0x8,0x8,0x88,0x8,0x8,0xc8,0x8,0x28,0x10,
-+0x0,0x78,0x48,0x50,0x51,0x62,0x55,0x49,0x49,0x49,0x69,0x51,0x41,0x41,0x42,0x44,0x40,0x40,0xa0,0xa0,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x4,0x4,0x7f,0x4,0xff,0x10,0x15,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x24,0x3f,0x20,0x40,0x50,0x48,0x40,0xfe,0x40,0x40,0xa0,0x24,0x28,0x30,0x20,0x52,0x92,0x8a,0x4,
-+0x8,0x8,0xa,0x7f,0x8,0x8,0x9,0xff,0x10,0x10,0x20,0x24,0x42,0x7e,0x1,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0xa4,0x24,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x4,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x48,0x28,0x10,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x38,0x54,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x0,0x24,0x22,0x22,0x40,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x90,0x48,0x44,0x4,
-+0x10,0x10,0x17,0x10,0xfb,0x10,0x17,0x18,0x33,0xd0,0x12,0x12,0x12,0x13,0x54,0x28,0x40,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x40,0x48,0x7c,0x40,0x40,0xc6,0x3c,
-+0x0,0x0,0x7f,0x48,0x4b,0x48,0x7f,0x48,0x4b,0x78,0x4a,0x4a,0x4a,0x7b,0x44,0x8,0x40,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x40,0x48,0x7c,0x40,0x40,0xc6,0x3c,
-+0x20,0x13,0x12,0xff,0x2,0x4b,0x48,0x49,0x4a,0x54,0x12,0x1e,0xe2,0x43,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x4,0xfe,0x44,0x44,0xa4,0x4,0xe4,0x28,0x10,
-+0x0,0x40,0x30,0x17,0x0,0x80,0x67,0x20,0x8,0x13,0xe2,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x10,0x23,0x44,0x78,0x9,0x10,0x20,0x7d,0x1,0x1,0xd,0x71,0x21,0x1,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x11,0x3e,0x24,0x48,0xbe,0x2b,0x2a,0x3e,0x2a,0x2a,0x3f,0x2a,0x2a,0x42,0x86,0x4,0xfe,0x44,0x44,0x54,0x88,0x10,0x50,0x7c,0x90,0x14,0xfe,0x10,0x10,0x10,0x10,
-+0x10,0x11,0x11,0x15,0xff,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x87,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x0,0x0,0x0,0xff,0x0,0x12,0x12,0x12,0x7f,0x12,0x12,0x12,0x12,0x22,0x41,0x2,0x40,0x50,0x48,0xfe,0x40,0x40,0x44,0x44,0x48,0x48,0x50,0x20,0x62,0x92,0xa,0x4,
-+0x4,0xff,0x4,0x10,0x7f,0x10,0x7c,0x13,0x7c,0x11,0x39,0x35,0x51,0x91,0x11,0x11,0x44,0xfe,0x40,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x8,0x8,0xff,0x8,0x9,0x2,0x4,0x8,0x14,0x24,0xc4,0x4,0x4,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x20,0x80,0x40,0x20,0x50,0x4e,0x44,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x2,0x4,0xc,0x34,0xc4,0x4,0x8,0x10,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x80,0x60,0x50,0x4e,0x44,0x40,0x40,0x40,
-+0x9,0x9,0x9,0x17,0x11,0x31,0x5f,0x90,0x13,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x10,0x10,0x10,0xfc,0x10,0x14,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x24,0xc4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0x4e,0x44,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x0,0x1f,0x10,0x90,0x50,0x51,0x12,0x3d,0x51,0xd1,0x11,0x22,0x22,0x44,0x0,0x80,0x44,0xfe,0x40,0x40,0xa0,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x40,0x20,0x2f,0x0,0xe5,0x25,0x25,0x2f,0x25,0x25,0x2d,0x35,0x24,0x9,0x0,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0x24,0xe8,0x28,0x30,0x20,0x60,0x92,0xa,0x4,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x2f,0x28,0x28,0x2f,0x28,0x48,0x8f,0x8,0x8,0xfc,0x8,0x8,0xf8,0x80,0x80,0x88,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x8,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0,
-+0x10,0x14,0x3e,0x49,0x80,0x3e,0x22,0x23,0x3e,0x22,0x22,0x3e,0x22,0x22,0x4a,0x85,0x40,0x48,0xfc,0x10,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x94,0x8,
-+0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x0,0x10,0x38,0xc0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc1,0x1,0x1f,0x1,0x11,0x9,0x5,0x7f,0x0,0x0,0x0,0x80,0x40,0x20,0x50,0xee,0x4,0x0,0xf0,0x0,0x10,0x20,0x48,0xfc,0x0,
-+0x1,0x1,0x2,0x4,0x8,0x12,0x21,0xc0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0x8e,0x84,0x0,0xf0,0x10,0x20,0x20,0x40,0x80,0x0,
-+0x0,0x40,0x37,0x10,0xf,0x80,0x67,0x20,0x8,0x17,0xe0,0x20,0x2f,0x20,0x20,0x20,0x80,0x88,0xfc,0x88,0xfe,0x88,0xf8,0x80,0x90,0xf8,0x80,0x88,0xfc,0x80,0x80,0x80,
-+0x41,0x31,0x17,0x1,0xfb,0xd,0x11,0x29,0x73,0xa8,0x2f,0x20,0x21,0x22,0x24,0x20,0x10,0x10,0xfc,0x10,0xb8,0x56,0x10,0x10,0xf8,0x0,0xfe,0x40,0x50,0x4c,0x44,0xc0,
-+0x4,0x25,0x25,0x24,0x24,0x24,0x7,0x4,0x1f,0x1,0x2,0x7f,0x1,0x9,0x11,0x63,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe,0x24,0xc0,0x0,0x10,0xf8,0x8,0x20,0x18,0x8,
-+0x20,0x20,0x3b,0x42,0x83,0x7a,0x23,0x20,0xff,0x24,0x24,0x24,0x2c,0x30,0x20,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfc,0x44,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x8,0x8,0xb,0x10,0x11,0x31,0x51,0x91,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x0,0x4,0xfe,0x4,0x4,0x4,0x8,0x8,0x88,0x90,0x50,0x20,0x50,0x88,0x6,0x4,
-+0x41,0x21,0x2f,0x1,0x1,0xe0,0x27,0x24,0x27,0x20,0x27,0x20,0x2b,0x30,0x2f,0x0,0x10,0x14,0xfe,0x10,0xf0,0x44,0xfe,0x44,0xfc,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x0,
-+0x2,0x42,0x22,0x2f,0x2,0x2,0xe2,0x22,0x2f,0x22,0x22,0x22,0x24,0x50,0x8f,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x26,0xfc,0x0,
-+0x22,0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x49,0x7f,0x8,0xff,0x8,0x8,0x9,0x8,0x2,0x6,0xf8,0x40,0x40,0x44,0x7e,0x48,0x48,0x48,0x48,0xc8,0x48,0x88,0x8,0x8,
-+0x0,0x7f,0x4,0x24,0x14,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x8,0xfc,0x40,0x48,0x50,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x8,0x8,0x7e,0x18,0x2c,0x4b,0x88,0x0,0x3f,0x0,0xff,0x1,0x9,0x11,0x25,0x2,0x20,0x28,0xfc,0x70,0xa8,0x24,0x22,0x0,0xf8,0x0,0xfe,0x0,0x20,0x18,0x8,0x0,
-+0x0,0x40,0x33,0x12,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x14,0x10,0x28,0x44,0x3,0x8,0x1c,0xe0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6,0xfc,
-+0x10,0x11,0x11,0x15,0x59,0x51,0x51,0x92,0x12,0x14,0x10,0x10,0x28,0x44,0x84,0x0,0x8,0xfc,0x8,0x8,0xf8,0x28,0x20,0x10,0xe,0xc4,0x20,0x10,0xc0,0x30,0x8,0x0,
-+0x40,0x33,0x10,0x1,0x80,0x63,0x20,0x7,0x14,0x29,0xe1,0x20,0x20,0x20,0x23,0x2c,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x2,0xf4,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x1f,0x10,0x10,0x1f,0x11,0x10,0x10,0x10,0x16,0x21,0x40,0x86,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x80,0x80,0x40,0x20,0x90,0xe,0x4,0x80,0xc0,0x40,
-+0x0,0xff,0x2,0x4,0xc,0x12,0x21,0x40,0xfe,0x8,0x8,0x8,0xf,0x71,0x22,0x0,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x4,0x28,0x10,
-+0x12,0x12,0xff,0x12,0x0,0x7f,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x22,0x42,0x2,0x4,0x84,0xc4,0x24,0x24,0xa4,0x24,0xa4,0xe4,0x24,0x24,0x24,0x24,0x4,0x14,0x8,
-+0x8,0x8,0x8,0xfe,0x8,0x7e,0x42,0x42,0x42,0x7e,0x14,0x15,0x16,0x24,0x41,0x82,0x20,0x20,0x24,0xfe,0x20,0xfc,0x84,0x84,0x84,0xfc,0x50,0x50,0x50,0x92,0x12,0xe,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0x1,0xe,0x70,0x1f,0x1,0x1,0x1,0xff,0x0,0x40,0x44,0xfe,0x40,0x0,0xf8,0x20,0xc0,0x38,0x6,0xf0,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x8,0x7f,0x48,0x4b,0x48,0x7f,0x48,0x4b,0x7a,0x4b,0x4a,0x4b,0x7a,0x4a,0x2,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x7e,0x42,0x42,0x7e,0x42,0x42,0x7e,0x42,0xe0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x24,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x10,0x10,0x1e,0x25,0x48,0xbe,0x2a,0x2a,0x3e,0x2a,0x2a,0x3e,0x0,0xf,0x70,0x20,0x40,0x20,0x24,0xfe,0x8,0xfc,0x88,0x88,0x88,0xf8,0x20,0x70,0xac,0x24,0xa0,0x40,
-+0x2,0x1,0x1,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x1,0x9,0x9,0x11,0x25,0x2,0x0,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x40,0x30,0x18,0x8,0x0,
-+0x10,0x10,0x17,0x10,0x58,0x57,0x52,0x92,0x12,0x13,0x10,0x11,0x12,0x14,0x11,0x10,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x10,0x10,0x93,0x54,0x19,0xfc,0x13,0x10,0x39,0x35,0x51,0x91,0x11,0x11,0x11,0x11,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x4,0xc,
-+0x10,0x13,0x92,0x54,0x19,0xfd,0x11,0x31,0x39,0x55,0x90,0x10,0x10,0x10,0x11,0x16,0x4,0xfe,0x20,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x24,0xa0,0x40,0x60,0x90,0xe,0x4,
-+0x10,0x13,0x20,0x20,0x44,0xfc,0x8,0x13,0x20,0x41,0xfc,0x0,0x1c,0xe0,0x47,0x0,0x0,0xfc,0x8,0x10,0x30,0x48,0x86,0x2,0x0,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x8,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0x10,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x14,0x7f,0x10,0x3f,0x55,0x1d,0x3,0xff,0x0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x40,0x7c,0xc8,0x28,0x10,0x6e,0x4,0xfe,0x0,0xf0,0x0,0xf0,0x0,0xf0,0x10,0xf0,
-+0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x9,0x11,0x65,0x2,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x20,0x18,0x8,0x0,
-+0x0,0xfd,0x4,0x8,0x18,0x26,0xc2,0x0,0x7c,0x10,0x10,0x10,0x1e,0xe0,0x40,0x3,0x4,0xfe,0x10,0x24,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x20,0x58,0x84,0x2,
-+0x8,0x8,0x7e,0x9,0x3e,0x8,0xff,0x0,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x22,0x26,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xa0,0x40,
-+0x20,0x20,0x27,0x21,0x20,0xff,0x20,0x23,0x22,0x23,0x22,0x3b,0xe1,0x41,0x2,0xc,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x20,0x22,0x22,0x1e,
-+0x12,0x12,0xff,0x12,0x20,0x3f,0x41,0xbd,0x25,0x25,0x25,0x25,0x3d,0x21,0x5,0x2,0x20,0x20,0xa0,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x20,0x20,0x27,0x79,0x40,0x87,0x78,0x23,0x22,0xfb,0x22,0x23,0x29,0x31,0x22,0xc,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x20,0x22,0x22,0x1e,
-+0x8,0xb,0x10,0x20,0x40,0x8,0x11,0x36,0x50,0x93,0x10,0x10,0x10,0x10,0x17,0x10,0x0,0xf8,0x10,0x20,0x60,0x98,0xe,0x2,0x0,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x57,0x30,0x10,0x13,0x3c,0x50,0x97,0x10,0x20,0x20,0x4f,0x80,0x80,0x44,0xfe,0x0,0xf8,0x30,0xc0,0x38,0x6,0x0,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x10,0x13,0xfc,0x3,0x48,0x4f,0x48,0x4b,0x12,0x13,0x1e,0xe3,0x42,0x2,0x2,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x2,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x14,0x4,0x8,0x70,0x0,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x50,0x42,0x42,0x3e,
-+0x2,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x14,0x4,0x4,0x8,0x70,0x0,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x50,0x40,0x42,0x42,0x3e,
-+0x1,0x1,0x83,0x64,0x28,0x7,0x10,0x20,0x3f,0xe0,0x20,0x2f,0x20,0x20,0x22,0x21,0x0,0x0,0xf0,0x20,0x48,0xfc,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x80,0x80,0x0,
-+0x10,0x10,0x13,0x12,0x56,0x5a,0x52,0x92,0x12,0x12,0x12,0x12,0x2a,0x46,0x82,0x2,0x0,0x4,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x2,0x1,0x7f,0x44,0x88,0x3f,0x4,0xff,0x4,0x3f,0x8,0xf,0x18,0x28,0xcf,0x8,0x0,0x0,0xfe,0x42,0x24,0xf0,0x14,0xfe,0x10,0xf0,0x0,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x17,0x11,0xf9,0x17,0x11,0x1b,0x33,0xd5,0x19,0x11,0x11,0x11,0x51,0x21,0x10,0xd0,0x10,0x12,0x54,0xb8,0x10,0x10,0x90,0x50,0x10,0x10,0x28,0x46,0x84,0x0,
-+0x2,0x1,0x7f,0x44,0x88,0x12,0x2,0x3f,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0xfe,0x42,0x34,0x10,0x20,0xf0,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x20,0x21,0x45,0xfd,0x9,0x11,0x21,0xfd,0x41,0x0,0x1c,0xe0,0x40,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x78,0x88,0x8,0x8,0x8,0x8,0x8,
-+0x0,0x4,0xfe,0x10,0x11,0x11,0xfe,0x10,0x10,0x10,0x1e,0xf0,0x40,0x1,0x2,0xc,0x40,0x40,0x88,0xfc,0x8,0x8,0x10,0x10,0x20,0x20,0x50,0x50,0x88,0xe,0x4,0x0,
-+0x4,0x4,0x7c,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0xff,0x0,0x40,0x48,0x7c,0x40,0x40,0x48,0x7c,0x40,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0,
-+0x4,0x4,0x7,0x8,0x8,0x10,0x20,0x0,0x1,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x40,0xe0,0x40,0x40,0x80,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0xe,0x4,0x0,
-+0x4,0x7,0x8,0x10,0x21,0x2,0xc,0x11,0x69,0x9,0x9,0x11,0x2,0x4,0x18,0xe0,0x20,0xf0,0x20,0x40,0x80,0x60,0x10,0xc,0x24,0x30,0x20,0x40,0x0,0x40,0x30,0xe,
-+0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x40,0x2f,0x20,0x0,0x87,0x64,0x24,0xc,0x15,0x26,0xe4,0x25,0x24,0x24,0x27,0x24,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0x1c,0x4,0x4,0xf4,0x4,0x4,0xfc,0x4,
-+0x0,0x3f,0x20,0x2f,0x29,0x29,0x2f,0x29,0x29,0x2f,0x2a,0x29,0x2e,0x48,0x41,0x82,0x4,0xfe,0x0,0x7c,0x10,0x50,0x50,0x54,0x7e,0x20,0x30,0x50,0xd2,0x92,0xe,0x0,
-+0x10,0x14,0x12,0x10,0xfe,0x11,0x92,0x54,0x18,0x30,0x54,0xd2,0x10,0x10,0x50,0x23,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x90,0x50,0x50,0x20,0x50,0x50,0x8e,0x4,
-+0x0,0x20,0x23,0x22,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x22,0x20,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x0,0x1,0x6,0x78,0x40,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x40,0x40,0x7f,0x40,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x3e,0x20,0x3c,0x20,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x7f,0x2,0xc,0x70,0x78,0x8,0x78,0x8,0xf8,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x8,0x48,0x30,
-+0x10,0x10,0x1f,0x21,0x62,0x14,0x8,0x14,0x23,0xc0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x40,0x50,0x4c,0x44,0x40,0x46,0xfc,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x8,0x2,0xff,0x0,0x3f,0x22,0x22,0x22,0x3e,0x8,0x2a,0x49,0x88,0x29,0x12,0x40,0x50,0x48,0x40,0x44,0xfe,0x40,0x50,0x50,0x50,0x50,0x50,0x52,0x92,0xe,0x0,
-+0x1,0x0,0x1f,0x11,0x91,0x51,0x52,0x14,0x30,0x50,0xd0,0x11,0x22,0x24,0x48,0x10,0x0,0x84,0xfe,0x0,0x0,0xf8,0x10,0x20,0x20,0x40,0xc0,0x20,0x10,0x8,0xe,0x4,
-+0x28,0x28,0xfe,0x29,0x3a,0x11,0x7c,0x54,0x57,0x7c,0x10,0xfe,0x11,0x12,0x10,0x10,0x80,0x84,0xfe,0x4,0x44,0x54,0xe4,0x44,0xfc,0x44,0xe4,0xd4,0x54,0x44,0x54,0x48,
-+0x10,0x10,0x11,0x11,0xfe,0x14,0x11,0x1d,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x80,0x80,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0xe4,0x4,0x14,0x8,
-+0x0,0x45,0x2d,0x11,0x29,0x49,0x89,0x19,0x29,0x49,0x89,0x9,0x9,0x9,0x57,0x20,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x1,0x0,0x1f,0x10,0x93,0x52,0x12,0x13,0x32,0x52,0xd3,0x12,0x12,0x22,0x2f,0x40,0x0,0x84,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x28,0x48,0x48,0x8f,0x8,0x8,0xfc,0x8,0x8,0xf8,0x80,0x84,0xfe,0x80,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0xfc,0x9,0x49,0x4a,0x4c,0x49,0x49,0x49,0x7d,0x5,0x1d,0xe5,0x4,0x28,0x10,0x80,0x80,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8,
-+0x8,0x8,0xff,0x8,0x10,0x1f,0x22,0x52,0x8a,0x7f,0x6,0xb,0xa,0x12,0x22,0x2,0x20,0x24,0xfe,0x20,0x4,0xfe,0x4,0x44,0x84,0xf4,0x4,0x84,0xc4,0x44,0x14,0x8,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x27,0x24,0x24,0x27,0x24,0x40,0x80,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0xe4,0x24,0x24,0xe4,0x4,0x14,0x8,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0xf,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x20,0x23,0x2a,0x3e,0x52,0x93,0x12,0xfe,0x12,0x12,0x13,0x2a,0x26,0x42,0x83,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0xfe,0x0,
-+0x22,0x19,0x9,0x0,0xff,0x4,0x9,0x11,0x2f,0xc1,0x1,0x3f,0x1,0x1,0x1,0x1,0x8,0x18,0x20,0x44,0xfe,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0x0,0x0,0x0,
-+0x40,0x33,0x12,0x2,0x82,0x63,0x22,0xa,0x12,0x23,0xe2,0x22,0x22,0x22,0x3f,0x20,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0xff,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x3f,0x5,0x9,0x33,0x5,0x9,0x71,0x1,0x80,0xfe,0x44,0x28,0x10,0x28,0xc6,0x70,0x88,0x18,0xa0,0x40,0x30,0xe,0x4,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x16,0x1a,0x32,0xd2,0x13,0x12,0x12,0x12,0x53,0x20,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x16,0x1b,0x32,0xd2,0x13,0x15,0x15,0x15,0x59,0x21,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x3f,0x0,0x10,0xf8,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x8,0xfc,0x0,
-+0x0,0xf,0x8,0x8,0xf,0x8,0xf,0x8,0xf,0x8,0x8,0xff,0x4,0xc,0x10,0x20,0x20,0xf0,0x20,0x20,0xe0,0x20,0xe0,0x20,0xe0,0x20,0x24,0xfe,0x40,0x20,0x18,0x8,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x11,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x11,0x11,0x51,0x5d,0x51,0x52,0x5e,0xe4,0x48,0x0,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x20,0x21,0x3d,0x41,0x81,0x7d,0x21,0x21,0xfd,0x21,0x25,0x2a,0x32,0x24,0x8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x8,0xb,0xa,0x12,0x13,0x32,0x53,0x92,0x13,0x12,0x12,0x1f,0x10,0x11,0x13,0x14,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x10,0xc,0x4,
-+0x4,0x4,0x8,0xf,0x10,0x20,0x4f,0x8,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0x44,0x44,0xc4,0x44,0x4,0x28,0x10,
-+0x10,0x13,0x12,0x12,0x5b,0x56,0x53,0x92,0x13,0x12,0x12,0x1f,0x10,0x11,0x13,0x14,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x11,0x11,0x15,0x59,0x51,0x51,0x91,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x24,0x25,0x3f,0x24,0x24,0x3f,0x50,0x50,0x50,0x9f,0x10,0x84,0xc4,0xa4,0xa4,0xa4,0x24,0x24,0xa4,0x24,0xa4,0xe4,0xa4,0x84,0x84,0x94,0x88,
-+0x10,0x11,0x11,0x11,0xfd,0x10,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0xc,
-+0x2,0x7f,0x42,0x42,0x7e,0x0,0x7e,0x42,0x42,0x7e,0x42,0x42,0x7f,0x42,0x4a,0x44,0x20,0x44,0xfe,0x84,0xa4,0x84,0x94,0x88,0x80,0xfe,0x2,0x12,0xfa,0x2,0x14,0x8,
-+0x10,0x11,0x11,0x11,0xfd,0x24,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x81,0x1,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8,
-+0x8,0xa,0x9,0x10,0x17,0x30,0x5f,0x91,0x12,0x15,0x19,0x11,0x11,0x11,0x11,0x10,0x40,0x48,0x50,0x40,0xfc,0xa0,0xfe,0x10,0x8,0xf6,0x14,0x10,0x50,0x24,0x4,0xfc,
-+0x1,0x11,0x9,0x7f,0x2,0xff,0x4,0x8,0x1f,0x28,0xcf,0x8,0xf,0x8,0xf,0x8,0x0,0x10,0x20,0xfc,0x0,0xfe,0x40,0x20,0xf0,0x2e,0xe4,0x20,0xe0,0x20,0xe0,0x20,
-+0x1,0x11,0x9,0x1,0x7f,0x2,0xff,0x4,0x8,0x1f,0x28,0xc8,0x9,0x8,0x8,0x7,0x0,0x10,0x20,0x8,0xfc,0x80,0xfe,0x40,0x20,0xf0,0x2e,0x24,0x20,0xc8,0x8,0xf8,
-+0x8,0x9,0x11,0x21,0x45,0xfc,0x9,0x11,0x21,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8,
-+0x20,0x2f,0x28,0x2a,0xf9,0x2f,0x38,0x6a,0xaa,0x2a,0x2b,0x2a,0x28,0x31,0xa1,0x42,0x4,0xfe,0x8,0x28,0x4e,0xf2,0xa0,0xa8,0xa8,0xa8,0xe8,0x94,0x94,0x24,0x22,0x40,
-+0x27,0x26,0x25,0x24,0xff,0x20,0x23,0x26,0x3b,0xe2,0x22,0x20,0x23,0x20,0xa0,0x47,0xbc,0xb4,0xac,0xa4,0xbc,0x40,0xfc,0x40,0xf8,0x40,0x7c,0x0,0xf8,0x90,0x60,0x9e,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x14,0x18,0x30,0xd7,0x10,0x11,0x11,0x12,0x54,0x28,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x20,0x27,0x24,0x24,0xff,0x24,0x25,0x2d,0x35,0xe5,0x24,0x25,0x25,0x29,0xb1,0x41,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x17,0x14,0x24,0x27,0x64,0xa5,0x25,0x25,0x25,0x24,0x25,0x25,0x29,0x31,0x21,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0xfc,0x4,
-+0x0,0x7f,0x11,0x9,0x7f,0x44,0x7f,0x0,0x7e,0x43,0x7e,0x42,0x7e,0x44,0x7e,0x2,0x38,0xd0,0x10,0x24,0xfe,0x44,0xfc,0x8,0x8,0xfe,0x8,0x88,0x48,0x8,0x28,0x10,
-+0x12,0x9,0x9,0x7f,0x40,0x80,0x1f,0x10,0x11,0x11,0x11,0x12,0x12,0x4,0x8,0x70,0x10,0x10,0x20,0xfe,0x2,0x14,0xf8,0x10,0x10,0x10,0x90,0x90,0x90,0x84,0x84,0x7c,
-+0x0,0x40,0x30,0x10,0x7,0x8,0x10,0x10,0x20,0xef,0x20,0x21,0x21,0x22,0x24,0x28,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x0,0x40,0x30,0x10,0x7,0x0,0xf0,0x10,0x10,0x1f,0x10,0x15,0x19,0x12,0x4,0x8,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x10,0x10,0x10,0x20,0x45,0xff,0x9,0x11,0x21,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x0,0x40,0x40,0x78,0x90,0x24,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x2,0x2,0xfe,
-+0x10,0x10,0x10,0x10,0x11,0xfd,0x12,0x10,0x10,0x10,0x10,0x1d,0xf0,0x40,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x84,0x44,0x14,0x24,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x8,0x8,0xff,0x8,0x7f,0x40,0x41,0x4f,0x41,0x7f,0x45,0x49,0x51,0x41,0x7f,0x40,0x20,0x24,0xfe,0x20,0xfc,0x44,0xe4,0x4,0x24,0xf4,0x44,0x34,0x14,0x4,0xfc,0x4,
-+0x10,0x10,0x14,0x1e,0x21,0x41,0xbe,0x10,0x10,0x7c,0x10,0x11,0x14,0x18,0x10,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x84,0x44,0x14,0x24,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x0,0x7f,0x42,0x82,0x3f,0x4,0x9,0x11,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0xfe,0x2,0x14,0xf8,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x4,0x4,0xff,0x4,0x4,0x3f,0x8,0x8,0x1f,0x18,0x28,0x48,0x8f,0x8,0x10,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x11,0x57,0x54,0x55,0x56,0x54,0x55,0x56,0x7c,0x44,0x0,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x90,0xc,0x84,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x8,0x8,0x11,0x17,0x31,0x52,0x95,0x11,0x12,0x13,0x14,0x18,0x10,0x11,0x16,0x40,0x40,0x90,0x8,0xfc,0x10,0xc,0x4,0xf0,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x40,0x30,0x10,0xff,0x0,0x49,0x4a,0x48,0x49,0x51,0x12,0x1c,0xe0,0x40,0x3,0x20,0x20,0x48,0x84,0xfe,0x88,0x6,0x82,0xf8,0x8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x40,0x30,0x10,0x1,0x87,0x61,0x22,0x5,0x11,0x22,0xe3,0x24,0x28,0x20,0x21,0x26,0x40,0x40,0x90,0x8,0xfc,0x10,0xc,0x4,0xf0,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x7f,0x11,0x11,0xff,0x11,0x11,0x7f,0x20,0x41,0xbf,0x21,0x21,0x21,0x3f,0x21,0x0,0x7c,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0xc2,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xfc,0x8,0x48,0x4b,0x48,0x49,0x4a,0x48,0x7d,0x6,0x4,0x34,0xc4,0x14,0xb,0x20,0x20,0x48,0x84,0xfe,0x88,0x6,0x82,0xf8,0x8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x0,0xf7,0x94,0x98,0x91,0x92,0x90,0x91,0x9e,0x93,0xf2,0x92,0x2,0x3,0x2,0x80,0x40,0xfe,0x82,0xf4,0x10,0xa0,0x40,0xb0,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0x74,0x54,0x5f,0x54,0x54,0x54,0x54,0x54,0x54,0x74,0x48,0xa,0x11,0x20,0x0,0x0,0x4,0xbe,0xe4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0x24,0x0,
-+0x2,0x2,0x3,0x2,0x2,0x2,0xff,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x80,0x60,0x30,0x10,0x0,0x0,0x0,
-+0x0,0x8,0x7c,0x49,0x4b,0x4c,0x48,0x48,0x49,0x4e,0x49,0x79,0x49,0x1,0x1,0x1,0x80,0x80,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7f,0x8,0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x12,0x12,0x13,0xfe,0x12,0x17,0x1a,0x30,0xd3,0x12,0x12,0x13,0x12,0x52,0x23,0x20,0x20,0x24,0xac,0x30,0xa2,0x22,0x1e,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x10,0x12,0x12,0x13,0xfe,0x12,0x3b,0x36,0x50,0x53,0x92,0x12,0x13,0x12,0x12,0x13,0x20,0x20,0x24,0xac,0x30,0xa2,0x22,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x8,0x49,0x49,0x49,0x7f,0x2,0xff,0x2,0x2,0x7e,0x42,0x40,0x46,0x58,0x61,0x2,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8a,0x8a,0x6,0x0,
-+0x20,0x27,0x24,0x24,0xb7,0xac,0xa4,0x27,0x24,0x24,0x25,0x24,0x27,0x24,0x20,0x21,0x4,0xbe,0x88,0xa8,0xa8,0xa8,0xa8,0xbe,0x8,0x10,0x18,0xa8,0xaa,0x4a,0x86,0x0,
-+0x1,0x3f,0x4,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0xe4,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x11,0x11,0x17,0x11,0xfd,0x11,0x11,0x11,0x11,0x1f,0x12,0x1e,0xf3,0x42,0x3,0x0,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0x0,0x90,0x8,0x0,0xfc,0x0,
-+0x22,0x22,0x7f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x54,0x62,0x40,0x7e,0x1,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xa4,0x24,0x44,0x44,0x84,0x14,0x8,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x14,0x10,0x10,0x10,0x10,0x1c,0xe1,0x42,0x4,0x8,0x80,0x80,0x80,0xfc,0x4,0x8,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x4,0xfe,0x10,0x11,0x22,0x24,0x7e,0xa4,0x24,0x24,0x24,0x25,0x3e,0x24,0x8,0x80,0x80,0x80,0xfc,0x4,0x8,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x7f,0x2,0x7f,0x4,0xff,0x8,0x1f,0x30,0x5f,0x90,0x1f,0x10,0x10,0x1f,0x10,0x70,0x80,0x10,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x1,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x28,0x24,0x22,0x44,0x48,0x92,0x1,0x0,0x84,0xfe,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0xc4,0xa8,0x90,0x8e,0x84,0x0,
-+0x20,0x20,0x27,0x24,0xb7,0xac,0xa7,0xa4,0x27,0x24,0x25,0x24,0x25,0x2a,0x30,0x20,0x80,0x44,0xfe,0x40,0xfc,0x44,0xfe,0x44,0xfc,0x48,0x50,0xe0,0x50,0x4e,0x44,0xc0,
-+0x20,0x20,0x27,0xac,0x77,0x24,0xff,0x24,0x77,0x6c,0xa5,0x24,0x25,0x2a,0x30,0x20,0x80,0x44,0xfe,0x40,0xfc,0x44,0xfe,0x44,0xfc,0x48,0x50,0xe0,0x50,0x4e,0x44,0xc0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x14,0x18,0x30,0xd0,0x10,0x10,0x10,0x1f,0x50,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x12,0x52,0x24,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x2,0x1,0x1,0xff,0x0,0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x4,0xfe,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x10,0x17,0x54,0x58,0x51,0x91,0x11,0x11,0x11,0x29,0x25,0x42,0x82,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x2,0x2,0x3f,0x2,0x2,0xff,0x2,0x4,0xf,0x12,0x27,0x40,0x80,0x2,0x1,0x0,0x0,0x10,0xe0,0x40,0x84,0xfe,0x0,0x10,0xf8,0x0,0xf0,0x10,0x10,0x20,0x20,0xc0,
-+0x10,0x10,0x13,0x10,0xfc,0x17,0x10,0x19,0x33,0xd4,0x19,0x10,0x10,0x11,0x50,0x20,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x80,0x8,0xfc,0x80,0xf8,0x8,0x8,0x10,0x90,0x60,
-+0x10,0x10,0x13,0x54,0x58,0x53,0x90,0x11,0x13,0x14,0x19,0x28,0x24,0x45,0x80,0x0,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x80,0x8,0xfc,0x80,0xf8,0x8,0x8,0x10,0x90,0x60,
-+0x11,0x1f,0x21,0xff,0x0,0x1f,0x10,0x1f,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x2,0x20,0xf0,0x4,0xfe,0x0,0xf0,0x10,0xf0,0x80,0xfc,0x80,0xf8,0x80,0xfc,0x80,0x80,
-+0x10,0x10,0x17,0x10,0x10,0xfd,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0x0,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x28,0x10,
-+0x8,0x8,0x7f,0x8,0x0,0xff,0x0,0x1,0x1f,0x11,0x11,0x11,0x1f,0x11,0x0,0x0,0x20,0x28,0xfc,0x20,0x4,0xfe,0x20,0x20,0xa0,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x17,0x10,0xfc,0x11,0x39,0x35,0x51,0x51,0x91,0x11,0x11,0x10,0x10,0x10,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x28,0x10,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x3a,0x37,0x50,0x5f,0x90,0x10,0x11,0x12,0x1c,0x10,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x0,0x4,0xff,0x10,0x10,0x21,0x20,0x7c,0xa5,0x24,0x25,0x25,0x25,0x3d,0x23,0x0,0x20,0x28,0xfc,0x20,0x24,0xfe,0x40,0x88,0xfc,0x0,0xfc,0x54,0x54,0x54,0xfe,0x0,
-+0x0,0x7f,0x54,0x54,0x7d,0x55,0x55,0x7d,0x11,0xff,0x31,0x39,0x55,0x54,0x90,0x13,0x4,0xfe,0x40,0x84,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x8c,0x4,
-+0x4,0xe,0xf8,0x8,0x8,0xfe,0x8,0x1c,0x1a,0x29,0x28,0x48,0x88,0x8,0x8,0x8,0x10,0x10,0x90,0x50,0x10,0x90,0x50,0x14,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x1,0x1,0x7f,0x1,0x3f,0x0,0x7f,0x40,0x8f,0x8,0x8,0x8,0x8,0x8,0x10,0x60,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x22,0xf4,0x20,0x20,0x20,0x24,0x24,0x1c,0x0,
-+0x0,0x0,0x8,0x7f,0x48,0x48,0x49,0x4b,0x48,0x48,0x48,0x79,0x4e,0x0,0x1,0x6,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x50,0x8c,0x4,
-+0x0,0xff,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x0,0x4,0xfe,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x47,0x34,0x17,0x84,0x67,0x22,0x3,0x14,0x24,0xe8,0x35,0x24,0x27,0x20,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xa4,0x14,0x4,0xe4,0x14,0x8,
-+0x1,0x1,0xff,0x1,0x1,0x1f,0x10,0x10,0x10,0x1f,0x14,0x4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x50,0x40,0x40,0x42,0x42,0x3e,
-+0x8,0x4,0x4,0xff,0x4,0x8,0x10,0x7f,0x2,0x4,0x9,0x72,0x6,0x19,0xe0,0x0,0x4,0x4,0x84,0xc4,0x4,0xa4,0xa4,0x24,0x24,0xa4,0x24,0x24,0x4,0x84,0x94,0x8,
-+0x2,0x1,0x7f,0x48,0x8f,0x8,0x14,0x23,0xc,0x30,0xcf,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0xfe,0x2,0xf4,0x20,0x40,0x80,0x60,0x1e,0xe4,0x20,0x20,0x20,0xe0,0x20,
-+0x0,0x43,0x22,0x22,0x3,0x2,0xe2,0x23,0x20,0x2f,0x20,0x29,0x32,0x24,0x8,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x1,0x9,0x9,0x9,0x9,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x10,0xf8,0x0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x0,0x9,0x7d,0x49,0x49,0x4f,0x48,0x4b,0x4a,0x4b,0x4a,0x7b,0x4a,0x2,0x2,0x2,0x40,0x48,0x7c,0x40,0x44,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x22,0x21,0x24,0x38,0x1,0x7f,0x1,0x1,0xff,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0x90,0x60,0x1c,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x22,0x21,0x24,0x38,0x2,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0x90,0x60,0x1c,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x2,0x2,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x8,0x7c,0x4f,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x2,0x2,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x2,0x1,0x7f,0x40,0x84,0xc,0x10,0x20,0x0,0x3f,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0xfe,0x2,0x44,0x30,0x18,0x8,0x0,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0xfe,0x10,0x10,0x10,0x10,0x1e,0xf1,0x42,0x0,0x52,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x90,0x90,0xd0,0xb0,0x92,0x12,0xe,0x0,0x4,0x82,0x92,0x12,0xf0,0x0,
-+0x0,0x7f,0x21,0x2,0xc,0x8,0x8,0xb,0x1c,0xe8,0x8,0x8,0x8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x13,0x12,0xfc,0x10,0x15,0x18,0x30,0xd3,0x10,0x10,0x10,0x10,0x57,0x20,0x40,0x20,0xfe,0x2,0x54,0x88,0x4,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x13,0x12,0x13,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x13,0x12,0x12,0x53,0x20,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x98,0x8,0x0,0x4,0xfe,0x0,
-+0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,
-+0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0xa,0xc,0x18,0xe8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x0,
-+0x2,0x1,0x7f,0x40,0x84,0x3e,0x0,0x1,0x7f,0x14,0x14,0x14,0x25,0x26,0x44,0x83,0x0,0x0,0xfe,0x42,0x74,0x40,0x40,0xf0,0x10,0xa0,0x40,0xa0,0x18,0xa,0x2,0xfe,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x38,0x34,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x1,0x1,0xff,0x1,0x2,0x4,0x8,0x30,0xc0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x88,0x40,0x24,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x2,0x1,0x7f,0x44,0x88,0x1f,0x10,0x1f,0x10,0x14,0x17,0x10,0x28,0x28,0x4f,0x88,0x0,0x0,0xfe,0x42,0x24,0xf8,0x8,0xf8,0x80,0x90,0xf0,0x80,0x88,0x88,0xf8,0x8,
-+0x8,0x8,0x7f,0x8,0x9,0x1,0xff,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x20,0x28,0xfc,0x20,0x20,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x57,0x61,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x50,0x7c,0x50,0x90,0x10,0xfe,0x4,0x7e,0x44,0x44,0x44,0x44,0x7c,0x44,
-+0x1,0x0,0x3f,0x21,0x21,0x3f,0x22,0x24,0x28,0x2f,0x20,0x20,0x3f,0x40,0x40,0x80,0x0,0x88,0xfc,0x0,0x8,0xfc,0x0,0x80,0x90,0xf8,0x80,0x84,0xfe,0x80,0x80,0x80,
-+0x40,0x30,0x13,0x2,0xfe,0xb,0x12,0x37,0x5b,0x96,0x12,0x13,0x12,0x14,0x18,0x10,0x40,0x24,0xfe,0x40,0x48,0xfc,0x80,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x1,0x1,0x7f,0x2,0x4,0x18,0xe7,0x0,0x3f,0x4,0xf,0x0,0x0,0x4,0x2,0x1,0x0,0x8,0xfc,0x80,0x40,0x30,0xce,0x4,0xf8,0x0,0xe0,0x20,0x20,0x20,0x40,0x80,
-+0x20,0x20,0x20,0x27,0xf8,0x21,0x22,0x25,0x28,0x23,0x38,0xe1,0x40,0x0,0x0,0x0,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60,
-+0x10,0x10,0x10,0x17,0xf8,0x11,0x1a,0x35,0xd0,0x17,0x10,0x11,0x10,0x10,0x50,0x20,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60,
-+0x4,0x7e,0x44,0x47,0x44,0x7d,0x12,0x15,0x5c,0x53,0x50,0x51,0x5c,0xf0,0x40,0x0,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60,
-+0x0,0x78,0x48,0x4f,0x48,0x79,0x4a,0x4d,0x48,0x7b,0x48,0x49,0x48,0x48,0x48,0x98,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60,
-+0x10,0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x10,0x17,0x1c,0xf1,0x41,0x2,0x4,0x8,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x12,0x1f,0x28,0x45,0x90,0x10,0x13,0x58,0x54,0x50,0x97,0x10,0x10,0x11,0x12,0x1c,0x44,0x7e,0xa0,0x10,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x10,0x10,0x11,0x21,0x22,0x64,0xa8,0x33,0x20,0x20,0x2f,0x21,0x21,0x22,0x27,0x20,0x80,0x80,0x40,0x40,0x20,0x10,0x4e,0xe4,0x0,0x8,0xfc,0x0,0x20,0x10,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x90,0x10,0x1f,0x10,0x11,0x11,0x12,0x14,0x18,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x2,0x1,0x7f,0x44,0x84,0x7f,0x4,0x1f,0x10,0x11,0x11,0x11,0x12,0x4,0x8,0x70,0x0,0x0,0xfe,0x42,0x44,0xfc,0x50,0xf8,0x10,0x10,0x10,0x90,0x90,0x82,0x82,0x7e,
-+0x8,0x9,0xff,0x8,0xa,0x7f,0x0,0x7f,0x0,0xff,0x8,0x2a,0x49,0x88,0x29,0x12,0x20,0x20,0xa0,0x7e,0x82,0x4,0x28,0x20,0x20,0xa0,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x7f,0x40,0x5f,0x41,0x41,0x41,0x4f,0x41,0x41,0x41,0x5f,0x40,0x40,0x7f,0x0,0x8,0xfc,0x0,0xf0,0x0,0x0,0x40,0xe0,0x0,0x0,0x20,0xf0,0x0,0x4,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0xbf,0x20,0x2f,0x20,0x20,0x27,0x20,0x20,0x2f,0x20,0x3f,0x0,0x48,0x7c,0xa0,0x10,0xfc,0x0,0xf8,0x80,0xa0,0xf0,0x80,0x90,0xf8,0x0,0xfc,0x0,
-+0x82,0x47,0x28,0x10,0x28,0x48,0x88,0x9,0x18,0x28,0x48,0x88,0x8,0x8,0x57,0x20,0x4,0xfe,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x3a,0x36,0x52,0x52,0x92,0x12,0x13,0x12,0x13,0x10,0x8,0xfc,0x0,0xf8,0x20,0x20,0x20,0xf8,0x20,0x20,0x20,0x28,0xfc,0x0,0xfe,0x0,
-+0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x3d,0x22,0x4,0x8,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0xb,0x7e,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4b,0x7a,0x4b,0x0,0x8,0xfc,0x0,0xf8,0x20,0x20,0x20,0xf8,0x20,0x20,0x20,0x28,0xfc,0x0,0xfe,0x0,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x8,0x10,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x47,0x34,0x14,0x4,0x4,0xf,0x12,0x22,0xe2,0x22,0x22,0x24,0x24,0x28,0x30,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x3f,0x0,0x0,0x0,0xff,0x4,0x4,0x8,0xf,0x0,0x0,0x0,0x2,0x1,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x20,0xc0,
-+0x2,0x2,0xff,0x4,0x4,0xa,0x9,0x11,0x22,0x44,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x4,0xfe,0x80,0x90,0xa0,0x40,0x20,0x1c,0x8,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x1,0x21,0x21,0x3f,0x20,0x8,0x4f,0x48,0x48,0x4b,0x48,0x50,0x10,0x27,0x40,0x80,0x0,0x8,0x8,0xf8,0x8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x2,0x1,0x7f,0x44,0x88,0x8,0x3e,0x8,0x8,0x7e,0x8,0x8,0x14,0x12,0x20,0x43,0x0,0x0,0xfe,0x42,0x24,0xf8,0x88,0xa8,0xa8,0xa8,0xa8,0x30,0x52,0x52,0x8e,0x0,
-+0x8,0x8,0xff,0x8,0x3e,0x22,0x14,0x8,0x3f,0xc1,0x1,0x3f,0x1,0x2,0xc,0x30,0x20,0x24,0xfe,0x20,0xa0,0x48,0x30,0x10,0xee,0x4,0x10,0xf8,0x0,0xc0,0x30,0x8,
-+0x1,0x1,0xff,0x4,0x9,0x11,0x2f,0xc1,0x3f,0x1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x0,0x4,0xfe,0x40,0x20,0x10,0xee,0x4,0xf8,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,
-+0x10,0x20,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x49,0xc,0x15,0x15,0x27,0x44,0x83,0x0,0x8,0x48,0x28,0x8,0x48,0x28,0x8,0xe,0xf8,0x8,0x8,0x48,0xc8,0x2,0xfe,
-+0x10,0x11,0x17,0x24,0x24,0x67,0xa4,0x24,0x27,0x24,0x20,0x21,0x21,0x22,0x24,0x28,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x88,0xf8,0x88,0x90,0x50,0x68,0x7a,0x42,0x3e,
-+0x20,0x20,0x23,0x3a,0x4b,0x50,0x8f,0x20,0x23,0x22,0x22,0x22,0x2a,0x30,0x21,0x6,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x10,0x11,0x13,0x12,0x5a,0x57,0x52,0x92,0x13,0x12,0x10,0x11,0x11,0x12,0x14,0x18,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x48,0x54,0x5e,0x42,0x3e,
-+0x0,0x40,0x33,0x12,0x83,0x60,0x2f,0x8,0x13,0x22,0xe2,0x22,0x22,0x20,0x21,0x26,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x20,0x20,0x20,0x27,0xfc,0x24,0x24,0x27,0x24,0x24,0x3c,0xe7,0x44,0x0,0x0,0x0,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x0,0x20,0x24,0x3e,0x20,0x20,0x2e,0x70,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x80,0x84,0x98,0xe0,0x80,0x82,0x82,0x7e,
-+0x10,0x17,0x14,0x14,0xfc,0x17,0x14,0x1c,0x34,0xd5,0x16,0x14,0x14,0x14,0x57,0x24,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0xc4,0xe4,0x5c,0x4c,0x44,0x44,0x4,0xfc,0x4,
-+0x0,0x7f,0x41,0x41,0x41,0x5f,0x41,0x43,0x43,0x45,0x49,0x51,0x41,0x41,0x7f,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x4,0x84,0x64,0x34,0x14,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x17,0x18,0x30,0xd3,0x12,0x12,0x12,0x12,0x53,0x22,0x8,0x3c,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x14,0x54,0x28,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x22,0x3f,0x20,0x2f,0x28,0x2f,0x20,0x3f,0x21,0x22,0x5f,0x42,0x8a,0x4,0x84,0xfe,0x0,0xc0,0x3e,0xa2,0xa4,0xa8,0x24,0xa2,0x22,0x32,0xac,0x20,0x20,0x20,
-+0x10,0xd,0x44,0x50,0x4b,0x40,0x60,0x57,0x40,0x48,0x53,0x72,0x52,0x53,0x52,0x40,0x4,0xfe,0x4,0x64,0x84,0x84,0xa4,0xf4,0x84,0xa4,0xf4,0x24,0x24,0xe4,0x14,0x8,
-+0x10,0x10,0x10,0x13,0x10,0xfd,0x11,0x11,0x10,0x10,0x10,0x1c,0xe0,0x40,0x7,0x0,0x80,0x40,0x48,0xfc,0x0,0x8,0x8,0x8,0x90,0x90,0x90,0xa0,0x20,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x11,0x15,0x19,0x30,0xd0,0x10,0x10,0x10,0x10,0x57,0x20,0x80,0x40,0x48,0xfc,0x0,0x8,0x8,0x8,0x90,0x90,0x90,0xa0,0x20,0x44,0xfe,0x0,
-+0x1,0x11,0x7f,0x51,0x51,0x57,0x55,0x55,0x55,0x57,0x51,0x73,0x45,0x9,0x1,0x1,0x4,0x44,0xe4,0x4,0x54,0xf4,0x54,0x54,0x54,0xd4,0x14,0x84,0x44,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x13,0x7c,0x54,0x57,0x54,0x55,0x7d,0x51,0x15,0x1d,0xf5,0x41,0x1,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x8,0x7c,0x48,0x4b,0x48,0x78,0x4f,0x48,0x49,0x79,0x49,0x49,0x49,0x49,0x89,0x19,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x20,0x10,0x13,0xfe,0x44,0x29,0x29,0xff,0x11,0x15,0xfe,0x10,0x11,0x12,0x20,0x40,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x70,0xa8,0x2e,0x24,0x20,0x20,
-+0x2,0x2,0x72,0x5f,0x52,0x52,0x52,0x53,0x52,0x5e,0x52,0x72,0x52,0x2,0xb,0x4,0x20,0x10,0x14,0xfe,0x0,0x44,0xc4,0x44,0x44,0x48,0x28,0x28,0x28,0x0,0xfe,0x0,
-+0x8,0x8,0xff,0x9,0x1,0x7f,0x1,0x9,0x5,0xff,0x3,0x5,0x9,0x31,0xc1,0x1,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0x20,0x44,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x1,0x1,0x1,0x7f,0x1,0x21,0x19,0x9,0xff,0x3,0x5,0x9,0x31,0xc1,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x10,0x30,0x44,0xfe,0x80,0x40,0x30,0x1e,0x4,0x0,0x0,
-+0x10,0x14,0xfe,0x10,0x7d,0x56,0x54,0x54,0x7c,0x10,0x38,0x34,0x54,0x90,0x10,0x13,0x20,0x20,0x7c,0x88,0x14,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0x20,0x58,0x84,0x2,
-+0x8,0x8,0xff,0x8,0x4,0x24,0x25,0x26,0x24,0x4,0x3f,0x24,0x24,0x24,0xff,0x0,0x20,0x24,0xfe,0x20,0x90,0xf8,0x0,0x40,0x20,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0,
-+0x8,0x8,0x7e,0x8,0x1c,0x2a,0x49,0xa,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x18,0x20,0x28,0xfc,0x20,0x70,0xac,0x24,0x20,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x12,0x11,0x10,0xff,0x10,0x30,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0x10,0xa4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x10,0x12,0x11,0x10,0xff,0x10,0x14,0x18,0x33,0xd0,0x10,0x10,0x10,0x10,0x5f,0x20,0x0,0x8,0x10,0xa4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0x84,0x24,0x25,0x26,0x24,0x4,0x3f,0x24,0x24,0x24,0xff,0x0,0x48,0x7c,0xa0,0x10,0x80,0xfc,0x40,0x20,0x20,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0,
-+0x20,0x1b,0x49,0x41,0x7f,0x41,0x5f,0x59,0x55,0x51,0x5f,0x43,0x45,0x49,0x51,0x41,0x4,0xfe,0x4,0x14,0xfc,0x4,0xf4,0x34,0x54,0x14,0xf4,0x84,0x44,0x34,0x14,0xc,
-+0x10,0x8,0x4,0x7f,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x10,0x20,0x48,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x42,0x31,0x15,0x4,0x87,0x64,0x25,0xd,0x15,0x25,0xe5,0x24,0x25,0x26,0x24,0x24,0x4,0x7e,0x4,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x44,0xc,
-+0x2,0x41,0x25,0x24,0x7,0x4,0xe5,0x25,0x25,0x25,0x25,0x24,0x2d,0x36,0x24,0x4,0x4,0x7e,0x4,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x44,0xc,
-+0x10,0x12,0x12,0x12,0xfe,0x12,0x14,0x1b,0x32,0xd2,0x12,0x12,0x12,0x10,0x51,0x26,0x90,0x94,0x9e,0xa8,0xc4,0x84,0x88,0xfc,0x8,0x48,0x48,0x68,0xa8,0xa2,0x22,0x1e,
-+0x8,0x48,0x48,0x49,0x4a,0x48,0x1f,0x10,0x11,0x11,0x11,0x11,0x12,0x4,0x18,0xe0,0x80,0x84,0xfe,0x20,0x10,0x10,0xf8,0x10,0x10,0x10,0x10,0x90,0x90,0x82,0x82,0x7e,
-+0x22,0x22,0x3f,0x22,0xaf,0xaa,0xaa,0xaa,0x2f,0x22,0x27,0x2a,0x32,0x22,0x22,0x22,0x10,0x10,0xdc,0x24,0xc8,0xbe,0xa2,0xaa,0xaa,0x2a,0x2a,0xaa,0x2a,0x8,0x14,0x62,
-+0x10,0x12,0x22,0x22,0x42,0xfe,0x8,0x13,0x22,0xfe,0x2,0x2,0x1c,0xe0,0x41,0xe,0x90,0x90,0x9e,0xa8,0xc4,0x84,0x88,0xfc,0x8,0x48,0x48,0x68,0xa0,0xa2,0x22,0x1e,
-+0x10,0x11,0x10,0x54,0x58,0x57,0x50,0x90,0x10,0x13,0x10,0x28,0x24,0x40,0x8f,0x0,0x0,0x8,0x90,0xa0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x1,0x41,0x35,0x15,0x85,0x65,0x25,0x1,0x10,0x27,0xe5,0x25,0x25,0x25,0x3f,0x20,0x20,0x20,0x24,0x3e,0x50,0x88,0x8,0x0,0x8,0xfc,0x28,0x28,0x28,0x28,0xfe,0x0,
-+0x0,0x8,0xff,0x12,0x12,0x13,0x12,0xfe,0x13,0x12,0x12,0x12,0x1e,0xf2,0x43,0x2,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0,
-+0x22,0x21,0x20,0x27,0xfc,0x24,0x77,0x6c,0xa4,0x27,0x24,0x25,0x25,0x26,0x24,0x20,0x0,0x0,0x3e,0xa2,0xa4,0xa4,0xa8,0xa4,0xa4,0xa2,0x22,0x22,0xb4,0xa8,0x20,0x20,
-+0x0,0x44,0x2b,0x12,0x2a,0x4b,0x8a,0xa,0x1b,0x2a,0x4a,0x8a,0xa,0xa,0x53,0x22,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0,
-+0x0,0x3f,0x24,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x28,0x29,0x2b,0x4c,0x48,0x80,0x0,0x84,0xfe,0x0,0x0,0xbe,0xa2,0xa4,0xa8,0xa4,0x22,0x22,0xa2,0xb4,0x28,0x20,0x20,
-+0x8,0x5,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x20,0x24,0x26,0x79,0x20,0x0,0x0,0x0,0xfc,0x44,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,0x40,
-+0x8,0x5,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x20,0x24,0x26,0x79,0x21,0x2,0x4,0x7e,0xc4,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x84,0x14,0x8,
-+0x0,0x40,0x33,0x12,0x82,0x63,0x26,0xa,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0,
-+0x11,0x11,0x17,0x11,0xf8,0x17,0x14,0x18,0x33,0xd0,0x10,0x10,0x10,0x11,0x51,0x2e,0x10,0x10,0xfc,0x10,0x0,0xfe,0x82,0x84,0xf8,0x88,0x88,0x88,0x88,0x8,0x28,0x10,
-+0x4,0x4,0x7f,0x4,0x4,0x7f,0x42,0x82,0x1f,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x2,0x1,0x7f,0x41,0x91,0x11,0x1f,0x11,0x21,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0xfe,0x2,0x4,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x2,0x3f,0x2,0x2,0xff,0x1,0x2,0x4,0xc,0x14,0x27,0x44,0x84,0x3,0x0,0x0,0x88,0xd8,0x20,0x44,0xfe,0x0,0x0,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x9f,0x11,0x13,0x15,0x19,0x11,0x11,0x10,0x10,0x80,0x80,0x84,0xec,0x90,0xa0,0xc4,0xfe,0x0,0x8,0x30,0xc0,0x4,0x4,0xfc,0x0,
-+0x20,0x20,0x20,0x27,0xf8,0x48,0x48,0x4f,0x49,0x8b,0x55,0x21,0x51,0x49,0x80,0x0,0x80,0x80,0x84,0xec,0x90,0xa0,0xc4,0xfe,0x0,0x8,0x30,0xc0,0x4,0x4,0xfc,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x7f,0x41,0x20,0xa0,0x3c,0x44,0xc4,0x28,0x10,0x28,0xc6,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44,
-+0x10,0x10,0x10,0x15,0x59,0x52,0x50,0x90,0x11,0x16,0x11,0x11,0x29,0x25,0x41,0x81,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x41,0x31,0x17,0x81,0x60,0x2f,0x8,0x10,0x10,0x27,0xe0,0x21,0x21,0x22,0x24,0x28,0x10,0x10,0xfc,0x10,0x0,0xfe,0x2,0x84,0x88,0xfc,0x88,0x8,0x8,0x8,0x50,0x20,
-+0x22,0x22,0xff,0x22,0x22,0x3e,0x8,0x7f,0x49,0x49,0x7f,0x8,0xff,0x8,0x9,0xa,0x20,0x20,0xa0,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x44,0x44,0xc4,0x84,0x14,0x8,
-+0x0,0x0,0x1f,0x10,0x11,0x11,0x21,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x45,0x2,0x20,0xf0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x20,0x10,0x8,0xc,0x4,0x0,
-+0x0,0x3f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x10,0xf8,0x0,0xfe,0x2,0x74,0x0,0x70,0x0,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x20,0x23,0x38,0x47,0x84,0x7b,0x20,0x23,0xf8,0x27,0x24,0x24,0x2f,0x34,0x24,0x7,0x8,0xfc,0x40,0xfe,0x42,0x58,0x40,0x58,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,
-+0x4,0x7f,0x4,0x3f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x48,0xfc,0x40,0xf8,0x0,0xfe,0x2,0x74,0x0,0x70,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x3f,0x4,0x8,0x1f,0x28,0x48,0x8f,0x4,0xfe,0x10,0x20,0x7e,0xa3,0x22,0x3e,0x20,0xf8,0x0,0x10,0xf8,0x10,0x10,0xf0,0x4,0xfe,0x20,0x44,0xfe,0x44,0x44,0x7c,0x40,
-+0x0,0x3f,0x21,0x3f,0x21,0x3f,0x22,0x4,0x3f,0x2,0x4,0x3f,0x9,0x11,0x65,0x2,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x20,0xc0,0x10,0x8,0xf8,0x20,0x18,0x8,0x0,
-+0x13,0x12,0x12,0x23,0x22,0x62,0xa3,0x20,0x2f,0x2a,0x2a,0x2f,0x2a,0x2a,0x2f,0x28,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xbe,0xaa,0xaa,0xbe,0xaa,0xaa,0xbe,0xa2,
-+0x1,0x2,0x4,0x8,0x3f,0x8,0x10,0x24,0x7e,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0x0,0x20,0x10,0xf8,0x10,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x20,0x23,0x20,0x27,0xfc,0x2b,0x20,0x2b,0x30,0xe7,0x24,0x24,0x27,0x24,0xa4,0x47,0x8,0xfc,0x40,0xfe,0x42,0x5c,0x40,0x58,0x0,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,
-+0x2,0x3f,0x22,0x22,0x22,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x22,0x4b,0x84,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x28,0x10,
-+0x1,0x11,0x9,0x1,0x7f,0x1,0x5,0x9,0x11,0x1,0xff,0x2,0x4,0x8,0x10,0x60,0x0,0x10,0x20,0x8,0xfc,0x0,0x40,0x30,0x10,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,
-+0x0,0x47,0x34,0x14,0x4,0x87,0x64,0x24,0xc,0x17,0xe4,0x24,0x24,0x24,0x27,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x10,0xfc,0x17,0x39,0x36,0x54,0x51,0x91,0x12,0x14,0x10,0x11,0x16,0x40,0x50,0xf8,0x40,0x44,0xfe,0x10,0x8c,0xf4,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x30,0x38,0x57,0x54,0x90,0x10,0x11,0x11,0x12,0x14,0x4,0xfe,0x94,0x94,0x94,0xfc,0x40,0x24,0xfe,0x80,0xf8,0x88,0x8,0x8,0x28,0x10,
-+0x0,0x40,0x31,0x12,0x4,0x9,0x10,0x10,0x27,0xe0,0x20,0x20,0x22,0x21,0x20,0x0,0x80,0x80,0x40,0x20,0x10,0x8,0x8e,0x84,0xf0,0x10,0x20,0x40,0x80,0x0,0xc0,0x40,
-+0x0,0x3f,0x20,0x2f,0x28,0x28,0x2f,0x28,0x28,0x2f,0x20,0x2f,0x20,0x20,0x5f,0x80,0x4,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x80,0xf8,0x80,0x84,0xfe,0x0,
-+0x3,0x3c,0x4,0x7f,0x4,0xe,0x15,0x64,0x5,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x8,0x8,0x48,0xc8,0x48,0x48,0x48,0x8,0x18,0x4,0xfe,0x80,0x40,0x3c,0x8,0x0,
-+0x3,0x3c,0x4,0x7f,0x4,0xe,0x15,0x65,0x11,0x1f,0x21,0x1,0xff,0x1,0x1,0x1,0x8,0x8,0x48,0xc8,0x48,0x48,0x48,0x18,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x6,0x78,0x8,0xfe,0x9,0x1c,0x2a,0x49,0x2,0xc,0x31,0xc9,0x5,0x9,0x11,0x3,0x40,0x44,0x7e,0xa4,0x24,0x44,0x94,0x8,0x80,0x60,0x1e,0x24,0x40,0x30,0x10,0x0,
-+0x12,0x1f,0x28,0x45,0x1,0xff,0x14,0x13,0x14,0x1f,0x1,0x3f,0x22,0x27,0x20,0x20,0x48,0x7c,0xa0,0x10,0x4,0xfe,0x50,0x90,0x50,0xf0,0x8,0xfc,0x48,0xe8,0x28,0x10,
-+0x4,0x44,0x2b,0x12,0x2a,0x4b,0x8a,0xa,0x1b,0x28,0x48,0x8b,0x8,0x8,0x57,0x20,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x2,0x1,0xff,0x4,0x12,0x11,0x12,0x14,0x1f,0x1,0x7f,0x42,0x44,0x4f,0x40,0x40,0x0,0x4,0xfe,0x40,0x90,0x10,0x90,0x50,0xf0,0x4,0xfe,0x4,0x44,0xe4,0x14,0x8,
-+0x0,0x40,0x2f,0x10,0x85,0x64,0x25,0x7,0x10,0x2f,0xe8,0x29,0x2b,0x28,0x28,0x28,0x80,0x48,0xfc,0x0,0x28,0xc8,0x28,0xf8,0x84,0xfe,0x84,0x24,0xf4,0x4,0x14,0x8,
-+0x0,0x13,0xfa,0x22,0x23,0x22,0xfa,0x23,0x20,0x20,0x23,0x3c,0xe0,0x40,0xf,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x1,0x1,0x7f,0x1,0x5,0x9,0x31,0xc1,0xf,0x0,0x1,0x7f,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0x40,0x30,0xe,0x4,0xe0,0x40,0x88,0xfc,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x20,0x20,0x3d,0x49,0x95,0x7f,0x55,0x55,0x7d,0x54,0x54,0x7d,0x0,0x1c,0xe3,0x40,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x20,0x18,0x8,0x0,0xfe,0x4,0x8,0x1c,0x2a,0x4a,0x88,0x8,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x8,0xff,0x8,0x6,0x78,0x8,0x8,0xff,0x8,0x1c,0x1a,0x2a,0x48,0x88,0x8,0x20,0x24,0xfe,0x20,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x28,0x10,
-+0x8,0xff,0xa,0x2,0x1f,0x4,0x4,0x8,0x10,0x10,0x7e,0x12,0x12,0x22,0x4a,0x85,0x20,0xfe,0x20,0x0,0xf0,0x10,0x90,0x60,0x20,0x24,0xfe,0x24,0x24,0x44,0x94,0x8,
-+0x1,0x1,0x1,0xff,0x1,0x3f,0x21,0x21,0x21,0x3f,0x29,0x5,0x2,0x5,0x18,0x60,0x0,0x0,0x4,0xfe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x80,0x70,0xe,
-+0x0,0xff,0x4,0x3f,0x24,0x24,0x3f,0x1,0x1,0xff,0x3,0x3,0x5,0x19,0x61,0x1,0x4,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x0,0xff,0x0,0x0,0x3e,0x22,0x22,0x22,0x32,0x2a,0x22,0x22,0x22,0x22,0x2a,0x24,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0xc8,0xa8,0x88,0x88,0x88,0x88,0xa8,0x90,
-+0x0,0x3f,0x20,0x20,0x3f,0x22,0x22,0x23,0x22,0x22,0x22,0x22,0x44,0x44,0x88,0x10,0x8,0xfc,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x1,0x7f,0x40,0x41,0x7f,0x48,0x49,0x4f,0x49,0x49,0x49,0x49,0x55,0x52,0xa0,0x1,0x20,0xa0,0x20,0x20,0xa4,0x7e,0x24,0xa4,0x24,0x24,0x24,0x44,0x44,0x84,0xa8,0x10,
-+0x0,0x8,0xfd,0x11,0x11,0x21,0x25,0x7f,0xa4,0x24,0x24,0x25,0x3d,0x22,0x4,0x0,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x0,0x3f,0x21,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x22,0x42,0x44,0x88,0x10,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x1,0x7,0x7c,0x4,0x4,0x5,0xff,0xc,0xe,0x15,0x14,0x24,0x44,0x4,0x4,0x4,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0x24,0x24,0xa4,0xa4,0x24,0x4,0x4,0x14,0x8,
-+0x10,0x1f,0x10,0x27,0x24,0x64,0xa4,0x27,0x20,0x20,0x2f,0x20,0x21,0x22,0x2c,0x20,0x4,0xfe,0xa4,0xfe,0xa4,0xa4,0xa4,0xfc,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x10,0x10,0x1f,0x22,0x22,0x67,0xa4,0x28,0x34,0x22,0x21,0x22,0x24,0x28,0x20,0x20,0x4,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x94,0x94,0x14,0x4,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x1f,0x21,0x21,0x7f,0xa1,0x23,0x23,0x25,0x25,0x29,0x31,0x21,0x21,0x21,0x84,0xc4,0x4,0x4,0x14,0xf4,0x14,0x14,0x94,0x54,0x54,0x4,0x4,0x4,0x14,0x8,
-+0x1,0x0,0x1f,0x10,0x97,0x51,0x51,0x1f,0x31,0x53,0xd3,0x15,0x29,0x21,0x41,0x1,0x0,0x84,0xfe,0x44,0x84,0x14,0x54,0xf4,0x14,0x94,0x54,0x54,0x4,0x4,0x14,0x8,
-+0x2,0x1,0x1,0x0,0x7f,0x0,0x0,0x10,0x8,0x8,0x4,0x4,0x4,0x0,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x54,0x3b,0x10,0xfd,0x11,0x38,0x34,0x54,0x90,0x10,0x10,0x17,0x10,0x80,0x40,0x40,0x8,0xfc,0x0,0x8,0x8,0x90,0x90,0x90,0xa0,0xa0,0x24,0xfe,0x0,
-+0x0,0x47,0x34,0x14,0x4,0x84,0x67,0x24,0xc,0x14,0xe4,0x24,0x24,0x28,0x29,0x32,0x4,0xfe,0x40,0x40,0x44,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x14,0x8,
-+0x1,0x3f,0x1,0x1,0xff,0x1,0x1,0x3f,0x21,0x11,0xd,0x9,0x31,0xc1,0x5,0x2,0x10,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x8,0x98,0x60,0x20,0x18,0xe,0x4,0x0,
-+0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x70,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x0,0x10,0xff,0x20,0x22,0x22,0xfb,0x23,0x20,0x27,0x24,0x3c,0xe5,0x44,0x4,0x4,0x40,0x24,0xfe,0x90,0x64,0x94,0xc,0xfc,0x40,0xfe,0x42,0x92,0xfa,0x2,0xa,0x4,
-+0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x48,0x4b,0x78,0x48,0x0,0xf,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x1f,0x21,0x21,0x6f,0xa9,0x29,0x29,0x29,0x2a,0x2c,0x28,0x28,0x28,0x28,0x0,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xd4,0x8c,0x4,0x4,0x14,0x8,
-+0x1,0xfe,0x24,0x24,0x3d,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0x3e,0xe4,0x5,0x6,0x4,0xcc,0x50,0x0,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x4,0x4,0xff,0x24,0x10,0x17,0x1,0x71,0x13,0x10,0x10,0x17,0x10,0x28,0x47,0x0,0x40,0x44,0xfe,0x40,0x90,0xf8,0x0,0x50,0xf8,0x40,0x48,0xfc,0x40,0x46,0xfc,0x0,
-+0x0,0x40,0x2f,0x21,0x1,0x2,0xe7,0x20,0x20,0x20,0x2f,0x20,0x20,0x50,0x8f,0x0,0x80,0x88,0xfc,0x0,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x46,0xfc,0x0,
-+0x20,0x27,0x25,0x3f,0x44,0x85,0x7c,0x27,0x24,0xfd,0x24,0x25,0x2d,0x36,0x28,0x0,0x44,0xfe,0x8,0xfe,0x90,0xfc,0x94,0xfe,0x94,0xfc,0x94,0x98,0x98,0x96,0x90,0x90,
-+0x1,0x3f,0x24,0x22,0x3f,0x22,0x2f,0x22,0x3f,0x22,0x2f,0x26,0x4a,0x52,0xa2,0x2,0x8,0xfc,0x20,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x68,0x50,0x4e,0x44,0x40,
-+0x10,0x10,0x10,0x18,0x55,0x52,0x54,0x98,0x10,0x13,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x0,0x88,0x65,0x24,0x0,0x81,0x6d,0x24,0xc,0x14,0xe7,0x24,0x24,0x2a,0x31,0x20,0x20,0x28,0xfc,0x40,0xa0,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x26,0xfc,0x0,
-+0x2,0x1,0x7f,0x40,0x89,0x11,0x21,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x1,0x0,0x0,0xfe,0x2,0x24,0x10,0x8,0xf0,0x10,0x10,0x10,0x10,0x10,0x50,0x20,0x0,
-+0x8,0x8,0x14,0x13,0x21,0x40,0xbe,0x0,0x11,0x49,0x2a,0x2a,0x2a,0x7,0x78,0x21,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x8,0x7c,0x48,0x48,0x49,0x7a,0x4d,0x48,0x4a,0x7a,0x49,0x49,0x49,0x48,0x4f,0x98,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x88,0x48,0x48,0x50,0x50,0x24,0xfe,0x0,
-+0x20,0x24,0x3a,0x42,0x40,0xf8,0x26,0x22,0xfa,0x22,0x23,0x2a,0x32,0x25,0x8,0x0,0x10,0x14,0xfe,0x20,0x50,0x94,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x16,0xfc,0x0,
-+0x2,0x1,0xff,0x4,0xc,0xc,0x14,0x24,0x44,0x2,0x29,0x29,0x28,0x48,0x7,0x0,0x0,0x4,0xfe,0x40,0x60,0x58,0x4c,0x44,0x40,0x0,0x10,0x28,0x24,0x24,0xe0,0x0,
-+0x10,0x10,0x17,0x14,0x58,0x57,0x51,0x91,0x12,0x13,0x10,0x28,0x25,0x42,0x84,0x0,0x40,0x48,0xfc,0x80,0xa0,0xf0,0x20,0x20,0x24,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x27,0x40,0x48,0xfb,0x11,0x21,0x42,0xfb,0x0,0x0,0x39,0xc2,0x44,0x0,0x40,0x48,0xfc,0x80,0xa0,0xf0,0x20,0x20,0x24,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x57,0x3a,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0,
-+0x0,0x40,0x2f,0x10,0x3,0x2,0xa,0x12,0x23,0xe2,0x20,0x21,0x22,0x24,0x29,0x0,0x80,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x48,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x10,0xb,0x40,0x22,0xa,0x54,0x21,0x22,0x25,0x1,0xff,0x5,0x9,0x11,0x61,0x1,0x8,0xfc,0x88,0x8c,0x8a,0x88,0x8,0x28,0x10,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x10,0xb,0x40,0x22,0xa,0x55,0x22,0x21,0x9,0x5,0xff,0x5,0x9,0x11,0x61,0x1,0x8,0xfc,0x88,0x8c,0x8a,0x28,0x10,0x0,0x20,0x44,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x2,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x24,0x24,0x22,0x21,0x28,0x30,0x20,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf8,0x10,0x20,0x40,0x80,0x60,0x1c,0x8,
-+0x0,0xff,0x4,0x4,0x7f,0x44,0x44,0x44,0x44,0x44,0x4a,0x51,0x62,0x40,0x40,0x40,0x4,0xfe,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0xa4,0x1c,0xc,0x4,0x14,0x8,
-+0x10,0x13,0xfc,0x20,0x33,0x52,0x52,0xfe,0x12,0x12,0x1f,0xf2,0x52,0x12,0x12,0x12,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x94,0x54,0x2c,0x4,0x4,0x14,0x8,
-+0x0,0x1f,0x10,0x1f,0x10,0xff,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x1f,0x1,0x7f,0x10,0xf8,0x10,0xf0,0x14,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf0,0x0,0xfc,
-+0x0,0x0,0x78,0x4f,0x48,0x4b,0x4a,0x7a,0x4a,0x4b,0x48,0x49,0x7a,0x44,0x9,0x0,0x80,0x40,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x1,0x7f,0x0,0x1f,0x10,0x10,0x1f,0x0,0x7f,0x40,0x8f,0x8,0x8,0x8,0x10,0x60,0x8,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x0,0xfe,0x22,0xf4,0x20,0x20,0x22,0x22,0x1e,
-+0x0,0x40,0x2f,0x20,0x3,0x2,0xe2,0x22,0x23,0x20,0x24,0x29,0x32,0x24,0x9,0x0,0x80,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x50,0x4c,0x46,0x42,0x80,
-+0x10,0x10,0x1f,0x10,0xfd,0x12,0x17,0x1a,0x33,0xd2,0x13,0x10,0x11,0x12,0x55,0x20,0x40,0x44,0xfe,0xa0,0x14,0x8,0xfe,0x8,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x8,0xfd,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x4a,0xfc,0x8,0x9,0xa,0x80,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0xa0,0x20,0x20,
-+0x10,0x10,0x1f,0x21,0x2a,0x64,0xaf,0x34,0x27,0x24,0x27,0x20,0x22,0x24,0x2a,0x21,0x80,0x88,0xfc,0x40,0x28,0x10,0xfe,0x14,0xf0,0x10,0xf0,0x80,0xa0,0x98,0x88,0x0,
-+0x1,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x22,0x41,0x0,0x0,0x84,0xfe,0x0,0x0,0xf8,0x10,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x17,0x10,0x56,0x59,0x53,0x96,0x1b,0x12,0x13,0x28,0x25,0x42,0x84,0x0,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0xc0,
-+0x1,0x7f,0x40,0xbc,0x24,0x14,0x25,0x6,0x8,0x33,0xcc,0x1,0xe,0x0,0x3,0x1c,0x0,0xfe,0x2,0xfc,0x48,0x28,0x48,0x88,0x40,0x30,0x4e,0x84,0x20,0xc0,0x0,0x0,
-+0x40,0x37,0x10,0x0,0x0,0x70,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x28,0x47,0x0,0x0,0xfc,0x8,0x10,0x60,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x6,0xfc,0x0,
-+0x0,0x40,0x2f,0x10,0x82,0x61,0x23,0xe,0x13,0x22,0xe3,0x20,0x21,0x22,0x25,0x20,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x0,0x7f,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x13,0x12,0x13,0xfe,0x13,0x14,0x19,0x33,0xd0,0x13,0x1f,0x12,0x12,0x53,0x22,0x8,0xfc,0x48,0xf8,0x48,0xf8,0x80,0xf8,0x10,0xe0,0x18,0xfe,0x8,0x8,0xf8,0x8,
-+0x20,0x20,0x3f,0x40,0x82,0x79,0x23,0x26,0xfb,0x22,0x23,0x20,0x29,0x32,0x25,0x0,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x0,0x3f,0x20,0x3f,0x29,0x25,0x29,0x23,0x2c,0x31,0x26,0x21,0x46,0x40,0x83,0xc,0x88,0xfc,0x0,0x78,0x48,0x28,0xc8,0x60,0x5e,0x84,0x40,0x90,0x20,0xc0,0x0,0x0,
-+0x8,0x49,0x2a,0x2c,0x8,0xff,0x8,0x18,0x1c,0x2b,0x2a,0x48,0x88,0x8,0x8,0x8,0x8,0x8,0x48,0x28,0x8,0x48,0x28,0x28,0xe,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,
-+0x1,0x7f,0x10,0x10,0x1f,0x21,0x21,0x52,0x8a,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x1,0xff,0x10,0x1f,0x31,0x4a,0x4,0x39,0x1,0xff,0x2,0x4,0xc,0x15,0x66,0x4,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0xc,0x4,0xfe,0x8,0x90,0x60,0x30,0xe,0x4,
-+0x1,0x7f,0x10,0x10,0x1f,0x21,0x21,0x52,0xc,0x8,0x30,0x40,0x28,0x24,0x44,0x80,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0xc,0x0,0x90,0x4c,0x46,0x2,
-+0x1,0x9,0x9,0x11,0x21,0x41,0x6,0x19,0xe1,0x1f,0x1,0x2,0x2,0x4,0x8,0x30,0x0,0x20,0x18,0xc,0x34,0xc0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x0,0x44,0x2c,0x13,0x28,0x48,0x8f,0x8,0x19,0x29,0x49,0x89,0x9,0x9,0x51,0x21,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x2,0x12,0xfa,0x22,0x2f,0x22,0xfa,0x27,0x26,0x2a,0x3a,0xe2,0x42,0x2,0x2,0x2,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x38,0xb8,0x54,0x54,0x92,0x10,0x10,0x10,0x10,
-+0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x49,0x8a,0x8,0x8,0x8,0x8,0x20,0x20,0x20,0x24,0xfe,0x20,0x60,0x70,0xa8,0xae,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x8,0xfd,0x10,0x13,0x20,0x20,0x7d,0xa6,0x24,0x25,0x26,0x25,0x24,0x3d,0x22,0x0,0x20,0x24,0xa8,0xfe,0x70,0xa8,0x26,0xa4,0xa4,0xde,0x54,0x54,0xbe,0x4,0x4,0x4,
-+0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0x8,0x7e,0x8,0x1c,0x2a,0x49,0x8,0x8,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x20,0x28,0xfc,0x20,0x70,0xae,0x24,0x20,0x20,
-+0x10,0x10,0x51,0x51,0x52,0x54,0x58,0x50,0x57,0x54,0x54,0x54,0x54,0x14,0x17,0x14,0x80,0x80,0x4,0xfe,0x0,0x80,0x60,0x24,0xfe,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x8,0x8,0x14,0x12,0x21,0x50,0x88,0x0,0x7f,0x1,0x2,0x14,0x8,0x4,0x4,0x0,0x0,0x7c,0x44,0x44,0xc8,0xc8,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x21,0x3c,0x4b,0x90,0x7c,0x55,0x56,0x7c,0x55,0x56,0x7d,0x0,0x1d,0xe2,0x40,0x20,0x24,0xa8,0xfe,0x70,0xa8,0x26,0xa4,0x84,0xde,0x54,0x54,0xbe,0x4,0x4,0x4,
-+0x2,0x42,0x22,0x22,0x1f,0x82,0x42,0x47,0x16,0x2a,0xea,0x32,0x22,0x22,0x22,0x22,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x38,0xb8,0x54,0x54,0x92,0x10,0x10,0x10,0x10,
-+0x0,0x9f,0x60,0x2f,0xa,0xb,0x1a,0x1f,0x20,0xe7,0x20,0x3f,0x24,0x28,0x32,0x1,0x80,0xfc,0x8,0xfc,0x28,0xe8,0x28,0xf8,0x0,0xf0,0x0,0xfc,0x90,0x8c,0x84,0x0,
-+0x8,0x17,0x30,0x5f,0x90,0x17,0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0x18,0xe0,0x44,0xfe,0x40,0xfc,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x2,0x1,0x7f,0x4,0x2,0x1,0x6,0x18,0xe0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x40,0x80,0x0,0xc0,0x30,0xe,0xf4,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x14,0x18,0x30,0xd3,0x10,0x10,0x10,0x10,0x50,0x20,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x0,0x10,0xf8,0x20,0x21,0x22,0xfc,0x28,0x20,0x23,0x20,0x38,0xc0,0x0,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x8,0xff,0x9,0x1,0x3f,0x1,0xff,0x8,0xa,0x13,0x24,0xc,0x12,0x1,0xe,0x70,0x24,0xfe,0x20,0x0,0xf8,0x0,0xfe,0x20,0x18,0xe8,0x20,0x20,0x40,0x80,0x70,0xe,
-+0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x2,0xc,0x32,0xc1,0xf,0x0,0x2,0x1,0x0,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x80,0x60,0x18,0x6,0xe0,0x40,0x80,0x0,0x80,
-+0x8,0x28,0x28,0x2f,0x28,0x29,0xff,0x0,0x49,0x49,0x49,0x55,0x63,0x41,0x7f,0x41,0x20,0x20,0x50,0x50,0x88,0x4e,0x24,0x20,0x0,0xfc,0x4,0x8,0x50,0x20,0x10,0x10,
-+0x10,0x10,0x10,0x1c,0x21,0x22,0x7c,0x90,0x10,0x7d,0x10,0x10,0x14,0x18,0x10,0x0,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x98,0x10,0x13,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x0,0x44,0x28,0xfe,0x11,0x12,0x7c,0x10,0x10,0x13,0xfc,0x10,0x10,0x20,0x20,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x40,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x0,0x40,0x37,0x10,0x0,0xf,0x9,0x12,0x24,0xe1,0x23,0x24,0x28,0x20,0x23,0xc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x8c,0xf4,0x10,0x10,0xa0,0x40,0xa0,0x1e,0x4,
-+0x0,0x7f,0x0,0x3f,0x0,0x7f,0x1,0x1,0x21,0x19,0xa,0x2,0x4,0x8,0x30,0xc0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x0,0x8,0x18,0xa0,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x7c,0x45,0x48,0x48,0x53,0x48,0x49,0x46,0x44,0x45,0x6a,0x50,0x40,0x41,0x46,0x20,0x28,0xfc,0x20,0x24,0xfe,0x88,0x44,0x7a,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x10,0x10,0x54,0x55,0x56,0x54,0x54,0x55,0x54,0x5c,0x74,0x44,0x0,0x0,0x20,0x20,0x50,0x50,0x88,0x4e,0x24,0x20,0x0,0xfc,0x4,0x8,0x50,0x20,0x10,0x10,
-+0x10,0x13,0x28,0x24,0x43,0xa1,0x11,0x1,0xff,0x3,0x5,0x29,0x10,0x8,0x8,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x12,0x2,0x7f,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x1,0x1,0x2,0x4,0xa,0x11,0x21,0xc0,0x1f,0x0,0x0,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0xf0,0x10,0x20,0x40,0x80,0x0,0x80,0x80,
-+0x0,0x47,0x34,0x15,0x84,0x65,0x26,0x8,0x17,0x24,0xe4,0x27,0x24,0x24,0x27,0x24,0x84,0x7e,0x24,0x24,0xa4,0x24,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x0,0x8,0xff,0x10,0x10,0x11,0x7f,0x10,0x11,0x11,0x1d,0xf1,0x41,0x1,0x2,0x4,0x80,0x48,0xfc,0x40,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x40,
-+0x20,0x27,0x24,0x25,0xfc,0x25,0x66,0x70,0xaf,0x24,0x24,0x27,0x24,0x24,0x27,0x24,0x84,0x7e,0x24,0x24,0xa4,0x24,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x0,0x8,0xff,0x10,0x10,0x21,0x23,0x3c,0x65,0xa5,0x25,0x25,0x25,0x3d,0x22,0x4,0x80,0x48,0xfc,0x40,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x40,
-+0x20,0x27,0x24,0x3d,0x4c,0x55,0x86,0x20,0x27,0x24,0x24,0x27,0x2c,0x34,0x27,0x4,0x84,0x7e,0x24,0x24,0xa4,0x24,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x2,0x7c,0x40,0x48,0x46,0x4a,0xf0,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x20,0x4,0xfe,0x44,0x44,0x44,0x44,0x94,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x20,0x18,0x9,0xff,0x2,0x42,0x22,0x14,0x14,0x8,0x8,0x14,0x22,0x43,0x81,0x0,0x4,0x4,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x1f,0x10,0x97,0x54,0x55,0x15,0x16,0x30,0x57,0xd4,0x14,0x27,0x24,0x44,0x7,0x84,0xfe,0x80,0x7c,0x24,0x24,0xa4,0x4c,0x80,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,
-+0x0,0x40,0x37,0x10,0x80,0x61,0x27,0x8,0x11,0x21,0xe1,0x21,0x21,0x21,0x22,0x24,0x80,0x48,0xfc,0x40,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x40,
-+0x20,0x27,0x24,0x24,0xfc,0x24,0x64,0x74,0xac,0x25,0x26,0x24,0x20,0x21,0x22,0x24,0x84,0x3e,0x24,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0x20,0x20,0x20,
-+0x0,0x4,0x2,0x3,0x1,0xff,0x0,0x0,0x4,0xc,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0x10,0x18,0xc,0xc,0x4,0x0,
-+0x2,0x2,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x4,0x8,0x8,0x11,0x16,0x20,0x40,0x0,0x40,0x20,0x4,0xfe,0x80,0x88,0x88,0x90,0xa0,0xc0,0x82,0x82,0x82,0x7e,0x0,
-+0x2,0x2,0xff,0x2,0x4,0x18,0x23,0x7f,0x8,0xf,0x8,0xf,0x8,0xff,0x0,0x0,0x40,0x24,0xfe,0xa0,0xc4,0xfc,0x0,0xfc,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x20,0x20,
-+0x0,0x8,0x7c,0x48,0x4f,0x48,0x48,0x48,0x49,0x49,0x49,0x7a,0x42,0x4,0xb,0x10,0x80,0xa0,0x90,0x84,0xfe,0xa0,0xa4,0xa4,0x28,0x28,0x30,0x20,0x62,0xa2,0x1e,0x0,
-+0x10,0x1f,0x28,0x45,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x11,0x26,0x40,0x40,0x7c,0xa0,0x10,0x40,0x24,0xfe,0x80,0x90,0x90,0xa0,0xc2,0x82,0x82,0x7e,0x0,
-+0x1,0x7f,0x48,0x91,0x79,0x4a,0x54,0x61,0x56,0x49,0x4a,0x6b,0x54,0x43,0x40,0x4f,0x0,0xfe,0x22,0x14,0xf0,0xa0,0x40,0xb0,0xe,0xf4,0x40,0xf8,0x40,0xf8,0x40,0xfc,
-+0x0,0x7c,0x45,0x4a,0x48,0x50,0x4b,0x48,0x44,0x45,0x45,0x6a,0x51,0x40,0x47,0x40,0x80,0xfc,0x88,0x50,0x20,0xd8,0x6,0xf8,0x20,0x28,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x2,0x2,0xff,0x5,0x5,0x9,0x11,0x27,0xc0,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x80,0x44,0xfe,0x0,0x10,0x20,0xc4,0x4,0xfc,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x14,0x18,0x31,0xd1,0x11,0x12,0x12,0x14,0x54,0x28,0x80,0xa0,0x90,0x90,0x84,0xfe,0xa0,0xa0,0x24,0x24,0x28,0x32,0x22,0x62,0x9e,0x0,
-+0x0,0x7c,0x44,0x48,0x48,0x57,0x48,0x48,0x45,0x45,0x65,0x5a,0x42,0x44,0x44,0x48,0x80,0xa0,0x90,0x90,0x84,0xfe,0xa0,0xa0,0x24,0x24,0x28,0x32,0x22,0x62,0x9e,0x0,
-+0x10,0x12,0x11,0x10,0xff,0x11,0x3a,0x34,0x50,0x5f,0x91,0x12,0x11,0x10,0x11,0x16,0x40,0x48,0x50,0x44,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x8,0x8,0xb0,0x40,0xb0,0x8,
-+0x11,0xd,0x5,0x7f,0x5,0xd,0x11,0x21,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x10,0x30,0x40,0xfc,0x40,0x20,0x1c,0x8,0x0,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x12,0x11,0x10,0xff,0x11,0x12,0x1c,0x30,0xd7,0x11,0x12,0x11,0x10,0x51,0x26,0x40,0x48,0x50,0x44,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x8,0x8,0xb0,0x40,0xb0,0x8,
-+0x10,0x1f,0x28,0x45,0x9,0x5,0x7f,0x5,0x9,0x11,0xff,0x4,0xc,0x3,0x4,0x38,0x40,0x7c,0xa0,0x10,0x20,0x48,0xfc,0x40,0x20,0x14,0xfe,0x20,0x40,0x80,0x60,0x10,
-+0x40,0x2f,0x28,0x8,0x8f,0x68,0x2f,0x8,0x2f,0x4c,0xd5,0x54,0x55,0x64,0x44,0x44,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfe,0x4,0xfe,0x44,0x54,0x44,0x54,0x44,0x54,0x48,
-+0x0,0x7b,0x48,0x50,0x52,0x62,0x52,0x4a,0x4a,0x4a,0x6a,0x52,0x42,0x42,0x43,0x40,0x4,0xfe,0x20,0x24,0xfe,0xa4,0xa4,0xa4,0xd4,0xcc,0x84,0x94,0x88,0x0,0xfe,0x0,
-+0x8,0x8,0xff,0x8,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x20,0x24,0xfe,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x15,0x1e,0x10,0x12,0x7f,0x42,0x42,0x42,0x7e,0x42,0x40,0x40,0x40,0x80,0x3,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x50,0x48,0x86,0x2,
-+0x1,0x0,0x3f,0x21,0x20,0x27,0x24,0x24,0x24,0x27,0x24,0x24,0x44,0x44,0x88,0x10,0x0,0x84,0xfe,0x0,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x12,0x15,0x59,0x51,0x51,0x91,0x11,0x11,0x11,0x11,0x29,0x45,0x82,0x4,0x40,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x17,0x1a,0x32,0xd2,0x13,0x12,0x12,0x14,0x54,0x29,0x48,0x7c,0x40,0xfe,0x44,0x70,0xc4,0x7c,0x0,0x44,0xfe,0x44,0x44,0x84,0x94,0x8,
-+0x1,0x1,0x1,0x1,0x3f,0x20,0x28,0x24,0x22,0x21,0x21,0x22,0x24,0x28,0x3f,0x20,0x4,0xfe,0x0,0x8,0xfc,0x8,0x28,0x68,0x88,0x8,0x88,0x48,0x28,0x18,0xf8,0x8,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x2f,0x21,0x20,0x21,0x2f,0x21,0x41,0x41,0x82,0x1c,0x10,0xf8,0x0,0xfe,0x2,0xf4,0x0,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0x28,0x10,
-+0x4,0xf,0x10,0x3f,0xe1,0x3f,0x21,0x3f,0x0,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0xe0,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,
-+0x8,0x8,0xff,0x1c,0x2a,0x49,0x3f,0x22,0x3f,0x22,0x3f,0x28,0x2f,0x28,0x4f,0x88,0x20,0x24,0xfe,0x70,0xae,0x24,0xfc,0x40,0xf8,0x48,0xf8,0x48,0x50,0x62,0x42,0x3e,
-+0x8,0xff,0x10,0x11,0x20,0x23,0x3c,0x64,0xa5,0x24,0x24,0x24,0x25,0x3e,0x20,0x0,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x20,0x24,0x2c,0xb0,0x20,0xb0,0x2e,0x24,0xa0,0x40,
-+0x3f,0x1,0x7f,0x49,0x85,0x9,0x3e,0x22,0x22,0x3f,0x8,0x2e,0x29,0x2e,0x70,0x20,0xf8,0x0,0xfe,0x22,0x44,0x20,0x40,0x78,0x88,0x50,0x20,0x50,0xfe,0x88,0x88,0xf8,
-+0x4,0x7e,0x44,0x45,0x46,0x44,0x7c,0x50,0x13,0x5d,0x51,0x51,0x51,0x5d,0xe1,0x1,0x40,0x40,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x7e,0x44,0x55,0x56,0x54,0x54,0x54,0x57,0x55,0x55,0x55,0x29,0x25,0x45,0x81,0x40,0x40,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x0,0x3f,0x22,0x22,0x3f,0x22,0x22,0x3f,0x28,0x28,0x2f,0x48,0x49,0x8a,0xc,0x0,0x84,0xfe,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x48,0x58,0x60,0x42,0x42,0x3e,
-+0x40,0x2f,0x28,0x8,0x88,0x4f,0x4a,0x2,0x1a,0x2b,0xca,0x4a,0x4a,0x4b,0x5c,0x8,0x20,0xa0,0xbc,0xc4,0xc4,0xa8,0x90,0x28,0x46,0x84,0x7c,0x44,0x44,0xc4,0x7c,0x44,
-+0x20,0x13,0x10,0x1,0xf8,0xb,0x10,0x38,0x56,0x91,0x10,0x11,0x12,0x14,0x11,0x10,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x40,0x44,0x68,0x70,0xd0,0x48,0x4e,0x44,0x40,0x80,
-+0x0,0x3f,0x0,0x0,0x1f,0x0,0x0,0xff,0x1,0x11,0x9,0x5,0x9,0x11,0x65,0x2,0x10,0xf8,0x10,0x10,0xf0,0x10,0x14,0xfe,0x8,0x10,0xa0,0x40,0x20,0x1e,0x4,0x0,
-+0x0,0x7c,0x44,0x49,0x48,0x50,0x48,0x4b,0x44,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x1,0xf7,0x11,0x55,0x33,0x55,0x9,0x14,0x2b,0xd1,0x24,0x48,0x12,0x24,0x9,0x10,0x20,0xa8,0x24,0x20,0x3e,0xe0,0x20,0x24,0x24,0x28,0x10,0x30,0x52,0x8a,0xa,0x4,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x2a,0x14,0x40,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x10,0x7c,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x90,0x17,0x14,0x14,0x14,0x14,0x14,0x17,0x14,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x10,0x10,0xfd,0x22,0x20,0x3d,0x25,0x25,0x25,0x25,0x25,0x25,0x45,0x95,0x9,0x80,0x80,0x88,0xfc,0x10,0x60,0x84,0x4c,0x50,0x20,0x20,0x10,0x10,0x4e,0x84,0x0,
-+0x3f,0x20,0x3f,0x25,0x29,0x32,0x25,0x29,0x39,0x29,0x29,0x29,0x4b,0x4c,0x88,0xb,0xfc,0x4,0xfc,0x0,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x90,0x60,0x9c,
-+0x3f,0x20,0x3f,0x24,0x22,0x3f,0x22,0x24,0x28,0x21,0x3f,0x22,0x46,0x41,0x82,0xc,0xfc,0x4,0xfc,0x90,0xa4,0xfe,0xa0,0x98,0x88,0x0,0xfe,0x10,0x20,0xc0,0x30,0x8,
-+0x10,0x12,0x21,0x20,0x47,0xf9,0x12,0x24,0x40,0xff,0x1,0x2,0x19,0xe0,0x41,0x6,0x40,0x48,0x50,0x40,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x8,0x8,0xb0,0x40,0xb0,0x8,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x2f,0x21,0x20,0x20,0x20,0x2a,0x4a,0x52,0x81,0x0,0x10,0xf8,0x0,0xfe,0x2,0xf4,0x0,0x8,0xf8,0x0,0x80,0x48,0x46,0x12,0xf0,0x0,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0x0,0x3f,0x0,0x1f,0x0,0xff,0x12,0xa,0x32,0x6,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x48,0xe8,0x48,0xc8,0x48,0xf8,0x48,0x8a,0x6a,0x4,
-+0x8,0x8,0x13,0x10,0x27,0x48,0x8b,0x10,0x30,0x57,0x90,0x10,0x1f,0x10,0x10,0x10,0x40,0x48,0xfc,0x48,0xfe,0x48,0xf8,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,
-+0x2,0x1,0x7f,0x1,0x42,0x27,0x11,0x22,0x4f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0x44,0x88,0x10,0x48,0xe4,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x0,0x40,0x20,0x2f,0x8,0x88,0x5f,0x48,0x18,0x28,0xc9,0x4b,0x4d,0x51,0x50,0x60,0x90,0xf8,0x80,0xfe,0x82,0xf4,0x80,0x88,0x78,0x0,0x40,0x24,0x2a,0xa,0xf8,0x0,
-+0x10,0x13,0x20,0x21,0x44,0xff,0x10,0x22,0x41,0xf9,0x0,0x1,0x1a,0xe4,0x41,0x0,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x40,0x44,0x4c,0x50,0xe0,0x50,0x48,0x4e,0x44,0x80,
-+0x2,0x1,0xff,0x4,0x14,0x14,0x24,0x24,0x44,0x1,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x4,0xfe,0x40,0x50,0x48,0x44,0x44,0x40,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x1,0xff,0x4,0x14,0x34,0x44,0x3f,0x1,0x1f,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x4,0xfe,0x40,0x50,0x4c,0x74,0x80,0x0,0xf0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x2,0x1,0xff,0x4,0x14,0x24,0x44,0x1f,0x0,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0xe0,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x40,0x3f,0x22,0x6,0x8a,0x52,0x42,0x10,0x2f,0xc1,0x42,0x44,0x48,0x50,0x40,0x0,0x84,0xfe,0x20,0x30,0x2c,0x24,0xa0,0x84,0xfe,0xc0,0xa0,0x90,0x8e,0x84,0x80,
-+0xc,0x70,0x44,0x44,0x64,0x54,0x54,0x44,0x44,0x5c,0xe4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x84,0x84,0xa4,0x94,0x94,0x84,0x84,0xc4,0xa8,0x90,0x80,0x80,0x80,0x80,
-+0x2,0x7,0x78,0x8,0x8,0x9,0xff,0x8,0xa,0x3f,0x22,0x22,0x22,0x22,0x3e,0x22,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x13,0x16,0x1a,0x32,0xd3,0x10,0x11,0x12,0x14,0x51,0x20,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x0,0x4,0x7e,0x55,0x56,0x54,0x7c,0x54,0x55,0x57,0x55,0x7d,0x41,0x1,0x1,0x1,0x80,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x12,0x1d,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x20,0xfc,0x21,0x51,0x52,0xfd,0x11,0x11,0x1d,0xf1,0x51,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x99,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x1,0x1,0x2,0x2,0x4,0x8,0x30,0xc8,0x8,0x9,0xe,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x80,0x80,0x40,0x30,0x1e,0x24,0x60,0x80,0x0,0x0,0x8,0x8,0xf8,0x0,
-+0x0,0x40,0x30,0x10,0x1,0x82,0x64,0x29,0x11,0x11,0xe1,0x21,0x21,0x21,0x20,0x20,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x10,0x20,0x25,0x7e,0x4,0x9,0x11,0x7d,0x1,0x1,0xd,0x71,0x20,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0x0,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x0,0x40,0x30,0x10,0x1,0x2,0xf4,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0x0,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x3f,0x24,0x24,0x3f,0x2,0x7,0x18,0x64,0x2,0x1,0x6,0x78,0x40,0x44,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x0,0xf8,0x8,0x10,0x60,0x80,0x0,0x0,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x54,0x54,0x55,0x7c,0x51,0x14,0x1c,0xe5,0x42,0x0,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x20,0x48,0xf0,0x24,0xfc,0x20,0xa8,0x26,0xa2,0x40,
-+0x0,0x7f,0x44,0x44,0x44,0x7f,0x42,0x2,0x7,0x8,0x14,0x62,0x1,0x6,0x18,0xe0,0x4,0xfe,0x44,0x44,0x44,0xfc,0x4,0x0,0xf0,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,
-+0x0,0x4f,0x29,0x29,0xf,0x8,0xe1,0x23,0x26,0x29,0x20,0x20,0x27,0x50,0x8f,0x0,0x4,0xfe,0x24,0x24,0xfc,0x84,0x0,0xf8,0x8,0x10,0xa0,0xc0,0x0,0x6,0xfc,0x0,
-+0x10,0x13,0x22,0x3e,0x42,0x83,0x7e,0x10,0x10,0x7d,0x13,0x10,0x14,0x18,0x11,0x6,0x4,0xfe,0x94,0x94,0x94,0xfc,0x44,0x80,0xfc,0x4,0x8,0x90,0x60,0x40,0x80,0x0,
-+0x22,0x3f,0x50,0x89,0x7f,0x44,0x44,0x7f,0x44,0xf,0x10,0x28,0x4,0x3,0xe,0x70,0x44,0x7e,0xa0,0x14,0xfe,0x44,0x44,0xfc,0x4,0xf0,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x8,0xfd,0x9,0x49,0x49,0x49,0x48,0x48,0x7d,0x4,0x5,0x1c,0xe4,0x45,0x16,0x8,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x20,0x48,0xf0,0x24,0xfc,0x20,0xa8,0x26,0xa2,0x40,
-+0x40,0x33,0x12,0x2,0xfb,0xa,0x12,0x33,0x58,0x97,0x18,0x11,0x12,0x1c,0x10,0x10,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,0x40,
-+0x8,0x8,0xff,0x9,0x41,0x23,0x24,0x80,0x49,0x12,0x2f,0xe2,0x22,0x22,0x23,0x22,0x20,0x24,0xfe,0x20,0xf8,0x10,0xa0,0x40,0xb0,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x41,0x31,0x13,0x84,0x60,0x20,0x9,0x12,0x27,0xea,0x22,0x22,0x22,0x23,0x22,0x0,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0xe,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0xfc,0x8,0x49,0x4a,0x48,0x48,0x48,0x7d,0x7,0x5,0x1d,0xe5,0x45,0x15,0x9,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x20,0x21,0x4a,0xf8,0x10,0x20,0x41,0xfb,0x5,0x1,0x19,0xe1,0x41,0x1,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x10,0x11,0xfd,0x25,0x25,0x25,0x25,0x44,0x28,0x13,0x28,0x44,0x84,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10,
-+0x2,0x1,0x7f,0x44,0x44,0x44,0x7f,0x44,0x4e,0x4d,0x54,0x54,0x65,0x44,0x84,0x4,0x0,0x8,0xfc,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xae,0xa4,0x20,0x20,0x20,0x20,
-+0x0,0xb,0xfc,0x11,0x11,0x11,0x7d,0x11,0x11,0x10,0x1c,0xf3,0x40,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8,
-+0x8,0xff,0x10,0x11,0x21,0x25,0x3f,0x65,0xa5,0x24,0x24,0x27,0x24,0x3c,0x24,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8,
-+0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x55,0x55,0x7c,0x10,0x17,0x1c,0xe4,0x40,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xfc,0x4,0x24,0xf4,0x4,0x4,0x14,0x8,
-+0x0,0x3f,0x0,0x8,0x8,0x8,0x8,0x8,0xf,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10,
-+0x7e,0x42,0x42,0x7e,0x0,0x3f,0x0,0x8,0x8,0x8,0xf,0x0,0x0,0xff,0x0,0x0,0xfc,0x84,0x84,0xfc,0x20,0xf0,0x20,0x20,0x20,0x24,0xfe,0x4,0x24,0xf4,0x14,0x8,
-+0x0,0x20,0xff,0xa9,0xa9,0xa9,0xaf,0xa9,0xab,0xab,0xad,0xe9,0x89,0x11,0x21,0x1,0x80,0x44,0xfe,0x10,0x10,0x14,0xfe,0x10,0x30,0xb8,0x56,0x54,0x90,0x10,0x10,0x10,
-+0x0,0xb,0x7c,0x49,0x49,0x49,0x49,0x49,0x49,0x48,0x48,0x7f,0x48,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8,
-+0x20,0x27,0x24,0x24,0xff,0x24,0x24,0x24,0x27,0x20,0x38,0xe7,0x40,0x0,0x1f,0x0,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x0,0x7f,0x0,0x8,0x6,0x2,0x20,0x19,0x9,0xff,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0xfc,0x84,0x88,0x80,0x80,0x80,0x0,0x4,0xfe,0x0,0xc0,0x30,0x18,0xc,0x4,
-+0x1,0x1,0x7f,0x1,0x3f,0x1,0x1,0xff,0x4,0xf,0xa,0x11,0x20,0x43,0xc,0x30,0x0,0x8,0xfc,0x0,0xf8,0x0,0x4,0xfe,0x0,0xf0,0x20,0x40,0x80,0x40,0x30,0xe,
-+0x1,0x1,0x3f,0x1,0x1,0x7f,0x8,0x6,0x22,0x18,0x8,0xff,0x1,0x2,0xc,0x30,0x0,0x10,0xf8,0x0,0x0,0xfc,0x4,0x88,0x80,0x80,0x84,0xfe,0x40,0x30,0x18,0x8,
-+0x0,0x47,0x31,0x11,0x1,0x1,0xf1,0x11,0x11,0x11,0x12,0x14,0x10,0x28,0x47,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20,0x6,0xfc,0x0,
-+0x8,0x7c,0x48,0x4b,0x48,0x78,0x4f,0x48,0x49,0x79,0x4a,0x4a,0x4c,0x48,0x49,0x98,0x80,0x40,0x0,0xc4,0x4c,0x50,0xe0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x80,
-+0x1,0x79,0x4f,0x49,0x48,0x7f,0x48,0x48,0x4b,0x7a,0x4a,0x4b,0x4a,0x7a,0x4a,0x2,0x10,0x14,0xfe,0x10,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0x6c,0x4,0x4,0x14,0x8,
-+0x23,0x22,0x23,0x3a,0x2b,0x48,0x57,0x84,0x27,0x20,0x23,0x21,0x28,0x30,0x21,0x6,0xfc,0x4,0xfc,0x4,0xfc,0x0,0xfe,0x92,0xfe,0x0,0xfc,0x8,0x90,0x60,0x9e,0x4,
-+0x2,0x1,0xff,0x4,0x14,0x24,0x45,0x1,0x1f,0x11,0x11,0x1f,0x1,0x1,0x7f,0x0,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,
-+0x41,0x31,0x1f,0x1,0x80,0x6f,0x21,0x1,0x1f,0x29,0xe9,0x2a,0x2c,0x28,0x28,0x28,0x20,0x24,0xfe,0x20,0x8,0xfc,0x20,0x24,0xfe,0x24,0x24,0xd4,0xc,0x4,0x14,0x8,
-+0x8,0xff,0x8,0x1f,0x11,0x1f,0x0,0x7f,0x44,0x7f,0x40,0x1f,0x4,0x3,0xc,0x70,0x24,0xfe,0x20,0xf0,0x10,0xf0,0x4,0xfe,0x44,0xfc,0x4,0xf0,0x40,0x80,0x60,0x1c,
-+0x1f,0x10,0x1f,0x10,0x1f,0x0,0x7f,0x44,0x44,0x7f,0x40,0x1f,0x4,0x3,0xc,0x70,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x44,0x44,0xfc,0x4,0xf0,0x40,0x80,0x60,0x1c,
-+0x13,0x12,0x13,0x5a,0x57,0x50,0x97,0x14,0x14,0x17,0x10,0x13,0x11,0x10,0x11,0x16,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xf8,0x10,0xe0,0x18,0x6,
-+0x47,0x34,0x17,0x4,0x87,0x60,0x2f,0x9,0x19,0x2f,0xe0,0x27,0x22,0x21,0x26,0x38,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x0,0xf0,0x20,0xc0,0x30,0xe,
-+0x47,0x24,0x27,0x4,0x7,0xe0,0x2f,0x29,0x2f,0x28,0x23,0x22,0x29,0x30,0x23,0xc,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x24,0xfc,0x4,0xf0,0x10,0x20,0xc0,0x30,0xe,
-+0x8,0x8,0xff,0x8,0x8,0x2,0x1,0xff,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0x0,0x20,0x24,0xfe,0x20,0x20,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,
-+0x8,0x8,0xff,0x8,0x20,0x10,0x90,0x47,0x41,0x9,0x11,0xe1,0x21,0x21,0x21,0x20,0x20,0x24,0xfe,0x20,0x0,0x80,0x44,0xfe,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x2,0x1,0xff,0x10,0x10,0x10,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x20,0x13,0x12,0x2,0xfe,0x43,0x42,0x42,0x43,0x42,0x42,0x4a,0x7e,0x2,0x3,0x2,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x20,0x20,0x10,0x92,0xa,0x6,
-+0x10,0x10,0x10,0x10,0x5f,0x5a,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x13,0x10,0x10,0x80,0x60,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x5,0x2,0xff,0x4,0x8,0x34,0xc4,0x3f,0x4,0x4,0x8,0x30,0x40,0x44,0xfe,0x40,0x50,0x8,0xfe,0x40,0x30,0x4e,0x44,0xf8,0x40,0x40,0x40,0x40,
-+0x1,0x89,0x51,0x2f,0x51,0x91,0x17,0x14,0x34,0x54,0x97,0x14,0x14,0x14,0x57,0x24,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x4,0x4,0xff,0x4,0x1f,0x0,0x1,0x0,0xff,0x1,0x2,0x4,0x8,0x10,0x22,0x1,0x40,0x44,0xfe,0x40,0xf0,0x20,0x40,0x80,0xfe,0x82,0x84,0x80,0x80,0x80,0x80,0x0,
-+0x21,0x21,0x39,0x27,0x41,0x79,0xa7,0x24,0xfc,0x24,0x27,0x24,0x2c,0x34,0x27,0x4,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x0,0x0,0x3f,0x2,0x2,0x3,0x3e,0x2,0x3,0xfe,0x2,0x2,0x2,0x2,0x1,0x0,0x10,0x78,0x80,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x1f,0x0,0x2,0x1,0x0,0xff,0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x2,0x1,0x0,0xf0,0x20,0x40,0x80,0x80,0xfe,0x84,0x88,0x80,0x80,0x80,0x80,0x80,0x80,0x0,
-+0x21,0x26,0x3c,0x44,0x84,0x7c,0x24,0x24,0xfd,0x26,0x24,0x20,0x29,0x31,0x22,0x4,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0xa0,0x20,0x20,0x20,0x20,
-+0x4,0xe,0x30,0x22,0x22,0x22,0x22,0x22,0x22,0x2e,0x32,0x2,0x4,0x18,0x60,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x54,0x48,0x40,0x40,0x40,0x40,
-+0x8,0x8,0xff,0x8,0x9,0x1,0x3f,0x21,0x20,0x20,0x20,0x20,0x20,0x23,0x4c,0x80,0x40,0x44,0xfe,0x40,0x20,0x10,0xfc,0x0,0x88,0x88,0x50,0x60,0xa0,0x12,0xa,0x6,
-+0x0,0x7f,0x40,0x5f,0x40,0x5f,0x40,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x10,0x4,0xfe,0x4,0xf4,0x4,0xf4,0x4,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x20,0x23,0x22,0xfa,0xaa,0xaa,0xa8,0xa9,0xa9,0xa9,0xa9,0xb9,0x21,0x21,0x21,0x21,0x4,0xfe,0x4,0xf4,0x4,0xf4,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0x8,0x35,0xd5,0x49,0x39,0x25,0xcd,0x15,0x65,0xc,0x14,0x64,0x4,0x29,0x12,0x40,0x84,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x54,0x50,0x50,0x92,0x92,0xe,0x0,
-+0x6,0x78,0x40,0x48,0x4e,0x72,0xc1,0x1f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x70,0x4,0xfe,0x44,0x44,0x54,0x88,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x38,0x8,
-+0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x21,0x41,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x80,0x0,0x0,0x0,0x20,0x10,0x8,0xfc,0x4,0x0,
-+0x0,0x8,0xfc,0x10,0x10,0x11,0x12,0x7c,0x10,0x10,0x10,0x10,0x1c,0xe0,0x41,0x6,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x10,0x10,0xfc,0x11,0x32,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x11,0x16,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x12,0x12,0x13,0x14,0xff,0x12,0x32,0x3a,0x57,0x52,0x94,0x14,0x17,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x8,0x88,0x48,0xfe,0x8,0x88,0x48,0xfc,0x8,0x28,0x10,
-+0x2,0xff,0x28,0x2a,0xff,0xaa,0xaa,0xae,0xc2,0x83,0x82,0xfe,0x82,0x82,0xfe,0x82,0x40,0x44,0x7e,0x80,0x4,0x7e,0x44,0x64,0x54,0xfe,0x84,0xa4,0x94,0xfc,0x4,0x18,
-+0x1f,0x1,0x7f,0x49,0x85,0x9,0x10,0x1f,0x20,0x5f,0x12,0xff,0x20,0x3f,0x0,0x0,0xf0,0x0,0xfe,0x22,0x44,0x20,0x0,0xf8,0x0,0xf0,0x14,0xfe,0x90,0xf8,0x10,0x30,
-+0x11,0x11,0x11,0x17,0x55,0x59,0x51,0x91,0x10,0x1f,0x10,0x10,0x29,0x46,0x84,0x0,0x10,0x10,0x14,0xfe,0x10,0xf0,0x10,0xf0,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x40,0x31,0x11,0x1,0x81,0x62,0x24,0x3,0x12,0x21,0xe1,0x20,0x20,0x20,0x23,0x2c,0x10,0xf8,0x10,0x10,0x10,0xe,0x0,0xf8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x1e,0x8,
-+0x0,0x3f,0x21,0x21,0x3f,0x20,0x2f,0x28,0x28,0x2f,0x28,0x2f,0x28,0x48,0x8f,0x8,0x8,0xfc,0x8,0x8,0xf8,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x21,0x21,0x21,0x27,0xf9,0x49,0x49,0x49,0x48,0x8f,0x50,0x20,0x51,0x4a,0x84,0x0,0x10,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x21,0x20,0x3f,0x20,0x43,0x78,0xa0,0x27,0xf8,0x20,0x2f,0x20,0x28,0x31,0x22,0xc,0x10,0xa0,0xfc,0x40,0xf8,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x10,0x10,0x1f,0x20,0x5f,0x12,0x11,0x10,0xff,0x12,0x21,0x20,0x3f,0x0,0x0,0x0,0x0,0x8,0xfc,0x10,0xf8,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0xf8,0x20,0xa0,0x40,
-+0x8,0x6,0x2,0x7f,0x1,0x3f,0x1,0xff,0x1,0x1,0x7f,0x1,0x2,0x4,0x18,0xe0,0x20,0x60,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x0,0x8,0xfc,0x0,0x80,0x60,0x1e,0x4,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x7f,0x48,0x48,0x48,0x49,0x7a,0x44,0x8,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,
-+0x2,0x1,0x7f,0x40,0xa4,0x24,0x25,0x3c,0x4,0xff,0x24,0x24,0x24,0x25,0x46,0x4,0x0,0x0,0xfe,0x2,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x70,0xa8,0x2e,0x24,0x20,
-+0x20,0x20,0x20,0x23,0xf8,0x48,0x48,0x4f,0x48,0x88,0x50,0x21,0x52,0x4c,0x88,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x46,0x84,0x0,0x4,0xfe,0x24,0x24,0xfc,0x0,0x7c,0x44,0x44,0x7c,0x44,0x7c,0x44,0x44,0x7c,0x44,
-+0x20,0x1b,0x48,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x20,0x1b,0x48,0x42,0x41,0x44,0x54,0x54,0x64,0x44,0x44,0x43,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x84,0x94,0xc,0xc,0x24,0x24,0xe4,0x4,0x4,0x14,0x8,
-+0x10,0x12,0x11,0x24,0x24,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x0,0x4,0x7e,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x8,0x8,0xff,0x8,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7d,0x41,0x2,0xc,0x20,0x24,0xfe,0x28,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x8,0x8,0x28,0x10,
-+0x4,0x7f,0x4,0x7f,0x40,0x8f,0x0,0x7f,0x6,0x3b,0x5,0x1a,0x64,0x18,0x62,0x1,0x48,0xfc,0x40,0xfe,0x2,0xe4,0x0,0xfc,0x10,0x30,0xc0,0xa0,0x90,0x8e,0x84,0x0,
-+0x10,0x10,0x17,0x10,0xff,0x14,0x39,0x34,0x53,0x50,0x97,0x10,0x13,0x10,0x17,0x10,0x90,0x94,0xfe,0x90,0xfe,0x2,0xf4,0x0,0xfc,0xc0,0x68,0xb0,0x68,0xae,0x24,0x60,
-+0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x21,0x2,0x4,0x3f,0x24,0x24,0x24,0xff,0x0,0xf8,0x88,0x88,0xf8,0x88,0x88,0xf8,0x8,0x28,0x10,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x20,0x23,0x38,0x40,0x80,0x7b,0x20,0x21,0xf8,0x23,0x22,0x22,0x2a,0x32,0x2f,0x0,0x0,0xf8,0x10,0x60,0x48,0xfc,0x40,0x40,0x88,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x0,0x8b,0x50,0x20,0x50,0x97,0x10,0x11,0x30,0x53,0x92,0x12,0x12,0x12,0xaf,0x40,0x0,0xf8,0x10,0x60,0x48,0xfc,0x40,0x40,0x88,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x8,0x8,0xff,0x8,0x1c,0x2a,0x49,0x8c,0x7,0xc,0x14,0x22,0x1,0x1,0xe,0x70,0x20,0x24,0xfe,0x20,0x70,0xae,0x24,0x20,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x1f,0x0,0x0,0x1,0xff,0x1,0x5,0x2,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x0,0xf0,0x20,0xc0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x8,0x7c,0x4a,0x49,0x49,0x78,0x4f,0x48,0x78,0x48,0x49,0x49,0x7a,0x44,0x0,0x0,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x40,0xe0,0xe0,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x2,0xff,0x28,0x29,0xfe,0xaa,0xaa,0xaf,0xc2,0x82,0x82,0xfe,0x82,0x82,0xff,0x82,0x10,0x10,0x52,0x34,0xb8,0x10,0x7e,0x90,0xb0,0xb8,0xd6,0x92,0x90,0x90,0x46,0x3c,
-+0x1,0x0,0x7f,0x44,0x5f,0x4e,0x55,0x64,0x41,0x5f,0x41,0x4f,0x41,0x5f,0x81,0x1,0x0,0x84,0xfe,0x10,0x7c,0x38,0x54,0x92,0x40,0x7c,0x40,0x78,0x40,0x7c,0x40,0x40,
-+0x1,0x0,0x7f,0x44,0x5f,0x4e,0x55,0x64,0x44,0x42,0x7f,0x41,0x42,0x4c,0xb0,0x0,0x0,0x84,0xfe,0x10,0x7c,0x38,0x54,0x92,0x90,0xa4,0xfe,0xc0,0xb0,0x8e,0x84,0x80,
-+0x0,0x40,0x32,0x11,0x0,0x0,0xf7,0x10,0x11,0x11,0x12,0x14,0x10,0x28,0x44,0x83,0x40,0x40,0x48,0x50,0x40,0x44,0xfe,0x40,0x60,0x50,0x48,0x48,0x40,0x40,0x6,0xfc,
-+0x0,0x40,0x29,0x24,0x4,0x0,0xe3,0x2c,0x24,0x24,0x24,0x2d,0x34,0x24,0xa,0x11,0x20,0x20,0x24,0xa8,0x20,0x24,0xfe,0x20,0x70,0x68,0xa4,0x24,0x20,0x20,0x6,0xfc,
-+0x8,0xfc,0x8,0x8,0x9,0x79,0x4a,0x40,0x48,0x7c,0x9,0xa,0x8,0x8,0x50,0x20,0x80,0x80,0x80,0xfe,0x2,0x4,0x20,0x20,0xa8,0xa4,0x26,0x22,0x20,0x20,0xa0,0x40,
-+0x1,0x21,0x19,0xd,0x5,0x1,0xff,0x3,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x0,0x8,0x18,0x20,0x40,0x4,0xfe,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x8,0x1c,0xf0,0x10,0x11,0xfd,0x11,0x39,0x35,0x55,0x55,0x99,0x13,0x15,0x18,0x10,0x0,0x80,0x60,0x2c,0x8,0x10,0x10,0x20,0x28,0x44,0x86,0x2,0x8,0x8,0xf8,0x0,
-+0x0,0x7f,0x11,0x9,0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x12,0x2,0x4,0x18,0x60,0xfc,0x0,0x10,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x90,0x80,0x82,0x82,0x7e,
-+0x40,0x30,0x10,0x0,0x81,0x61,0x21,0x9,0x15,0x25,0xe5,0x29,0x23,0x25,0x28,0x20,0x0,0x80,0x60,0x2c,0x8,0x10,0x10,0x20,0x28,0x44,0x86,0x2,0x8,0x8,0xf8,0x0,
-+0x2,0x1,0x7f,0x42,0x89,0x28,0x4b,0xc,0x77,0x1,0x3f,0x21,0x3f,0x1,0x7f,0x20,0x0,0x0,0xfe,0x2,0x24,0xc8,0x4,0x10,0xf0,0x0,0xf8,0x8,0xf8,0x4,0xfc,0x4,
-+0x2,0x1,0x7f,0x42,0x89,0x28,0x4b,0xc,0x77,0x1,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0xfe,0x2,0x24,0xc8,0x4,0x10,0xf0,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x9,0x1f,0x29,0xc9,0x9,0x1,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0xf0,0x2e,0x24,0x60,0x0,
-+0x10,0x10,0x13,0x12,0xff,0x12,0x33,0x38,0x57,0x54,0x94,0x14,0x14,0x14,0x10,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x0,0x7b,0x4a,0x4a,0x4a,0x7b,0x4a,0x4a,0x4b,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x2,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x20,0x20,0x10,0x92,0xa,0x6,
-+0x10,0x10,0x23,0x22,0x4b,0xfa,0x13,0x20,0x47,0xfc,0x4,0x4,0x1c,0xe4,0x40,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x7f,0x40,0x5f,0x40,0x5f,0x8,0xf,0x10,0x1f,0x31,0x51,0x9f,0x12,0x4,0x18,0x60,0xfc,0x4,0xf4,0x4,0xf4,0x0,0xe0,0x48,0xfc,0x8,0x8,0xf8,0x88,0x82,0x82,0x7e,
-+0x8,0x8,0x1f,0x10,0x20,0x7f,0xa1,0x21,0x21,0x3f,0x22,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x88,0x80,0x80,0x82,0x82,0x7e,
-+0x10,0x10,0x3e,0x24,0x48,0xff,0x49,0x49,0x7f,0x55,0x14,0x24,0x25,0x44,0x83,0x0,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0xa,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0xfe,0x25,0x25,0x25,0x25,0x45,0x28,0x10,0x28,0x45,0x82,0x4,0x80,0x80,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfc,0x54,0x50,0x90,0x92,0x12,0xe,0x0,
-+0x10,0x17,0x20,0x20,0x4b,0xfa,0x12,0x22,0x42,0xfa,0x2,0x2,0x1a,0xe2,0x43,0x2,0x4,0xfe,0x40,0x84,0xfe,0x94,0x94,0xf4,0x94,0x94,0xf4,0x94,0x94,0x94,0xfc,0x4,
-+0x0,0xff,0x2,0x4,0x7f,0x44,0x44,0x47,0x44,0x44,0x44,0x47,0x44,0x44,0x7f,0x40,0x4,0xfe,0x0,0x4,0xfe,0x44,0x44,0xc4,0x44,0x44,0x44,0xc4,0x44,0x44,0xfc,0x4,
-+0x4,0x4,0xff,0x4,0x4,0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x40,0x44,0xfe,0x40,0x40,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x21,0x21,0x21,0x2f,0xf9,0x21,0x27,0x2c,0x34,0xe4,0x27,0x24,0x24,0x24,0xa7,0x44,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x9,0x7d,0x49,0x4f,0x49,0x79,0x4b,0x4a,0x4a,0x7a,0x4b,0x4a,0x4a,0x7a,0x4b,0x2,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x8,0xff,0xa,0xc,0x12,0x6b,0x2d,0x31,0xc9,0x15,0x24,0xcc,0x14,0xe4,0x29,0x12,0x24,0xfe,0x20,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x90,0x90,0x92,0x92,0xe,0x0,
-+0x4,0xe,0x78,0x8,0x8,0xfe,0x8,0x1d,0x1a,0x28,0x28,0x48,0x88,0x8,0x8,0xb,0x20,0x20,0x20,0x20,0xa8,0xa6,0xa2,0x20,0x24,0x24,0x28,0x10,0x20,0x40,0x80,0x0,
-+0x80,0x61,0x2f,0x9,0x9,0x8f,0x69,0x29,0x9,0x1f,0x29,0xc9,0x4f,0x48,0x41,0x46,0x10,0x10,0x90,0x10,0x10,0x54,0x52,0x52,0x90,0x14,0x14,0x8,0x10,0x60,0x80,0x0,
-+0x1,0x0,0x3f,0x20,0x20,0x20,0x2f,0x28,0x28,0x28,0x2f,0x28,0x48,0x48,0x8f,0x8,0x0,0x84,0xfe,0x0,0x80,0x88,0xfc,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0xfc,0x24,0x24,0x25,0x24,0x44,0x28,0x10,0x28,0x44,0x80,0x3,0x20,0x20,0x20,0x20,0xa8,0xa6,0xa2,0x20,0x24,0x24,0x28,0x10,0x20,0x40,0x80,0x0,
-+0x4,0xff,0x4,0x3f,0x24,0x24,0x3f,0x1,0x3f,0x21,0x21,0x28,0x24,0x40,0x41,0x8e,0x44,0xfe,0x40,0xf8,0x48,0x48,0xf8,0x20,0xfc,0x0,0x8,0x90,0xa0,0x42,0xa2,0x1e,
-+0x0,0xff,0x1,0x1,0x11,0x11,0x11,0x21,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x0,0x0,0x8,0x18,0x20,0x40,0x80,0x80,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x0,0x7f,0x40,0x40,0x40,0x7f,0x42,0x42,0x7f,0x42,0x41,0x41,0x48,0x50,0x60,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x80,0x42,0x32,0xe,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x16,0x1a,0x33,0xd2,0x12,0x12,0x12,0x12,0x53,0x22,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x20,0x20,0x10,0x92,0xa,0x6,
-+0x0,0x0,0x3f,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xff,0x0,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xfe,0x0,0x0,
-+0x10,0x11,0x3f,0x20,0x7f,0xa9,0x25,0x21,0xff,0x29,0x45,0x41,0x7f,0x1,0xa,0x4,0x20,0x20,0xa0,0x24,0x7e,0x84,0x44,0x44,0xc8,0x28,0x28,0x10,0xa8,0x28,0x46,0x84,
-+0x12,0x11,0x10,0x12,0x5a,0x57,0x52,0x92,0x12,0x12,0x12,0x13,0x12,0x12,0x12,0x12,0x4,0x7e,0x4,0x44,0x24,0xfc,0x94,0x54,0x54,0x24,0x54,0x8c,0x4,0x4,0x14,0x8,
-+0x20,0x1b,0x48,0x41,0x41,0x4f,0x49,0x49,0x49,0x4f,0x49,0x41,0x41,0x5f,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x4,0x24,0xf4,0x14,0x14,0x8,
-+0x0,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x1,0x1,0x2,0x4,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0xfc,0x84,0x84,0x4,0x4,0x14,0x8,
-+0x10,0x13,0x12,0x14,0x7d,0x55,0x55,0x55,0x7d,0x54,0x10,0x17,0x1c,0xe4,0x41,0x2,0x0,0xfe,0x2,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x40,0x24,0xfe,0x0,0x88,0x6,0x2,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x78,0x48,0x7,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x1e,0x20,0x21,0x7e,0x90,0x10,0x7c,0x11,0x12,0x10,0x14,0x18,0x10,0x0,0x40,0x40,0xfc,0x84,0x88,0x50,0x20,0x40,0x84,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x2,0x2,0x7,0x4,0xc,0x12,0x1,0x6,0x18,0xef,0x8,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x2,0x4,0x8,0x3f,0xc0,0x3e,0x22,0x22,0x22,0x22,0x3e,0x22,0x0,0x0,0x0,0x0,0x80,0x40,0x30,0xfe,0x8,0xfc,0x88,0x88,0x88,0xc8,0xa8,0x90,0x80,0x80,
-+0x0,0x4f,0x24,0x22,0x4,0xe0,0x21,0x22,0x2c,0x21,0x22,0x20,0x2b,0x30,0x20,0x3,0x84,0xfe,0xa4,0x94,0xa4,0xc4,0x20,0x50,0x8e,0x24,0x40,0x90,0x20,0x40,0x80,0x0,
-+0x11,0x11,0x1f,0x11,0xfd,0x13,0x16,0x1b,0x32,0xd3,0x10,0x1f,0x10,0x10,0x51,0x26,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xa0,0x1c,0x8,
-+0x8,0xff,0x8,0x3f,0x21,0x3f,0x2,0xff,0x4,0x1f,0x21,0xdf,0x1,0x3f,0x1,0x3,0x24,0xfe,0x20,0xf8,0x8,0xf8,0x0,0xfe,0x40,0xf0,0x8,0xf6,0x0,0xf8,0x0,0x0,
-+0x8,0xff,0x9,0x7f,0x44,0x7f,0x4c,0x56,0x65,0x7f,0x42,0x44,0x4f,0x74,0x84,0x7,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x70,0xae,0x24,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,
-+0x11,0x11,0x1f,0x11,0xfd,0x13,0x32,0x3b,0x56,0x53,0x90,0x1f,0x10,0x10,0x11,0x16,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xb0,0xe,0x4,
-+0x1,0x79,0x4f,0x49,0x49,0x7b,0x4a,0x4b,0x4a,0x7b,0x48,0x4f,0x48,0x48,0x49,0x9e,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xb0,0xe,0x4,
-+0x1,0x7f,0x44,0x44,0x7f,0x4e,0x55,0x64,0x7f,0x42,0x44,0x4f,0x54,0x64,0x87,0x4,0x4,0xfe,0x20,0x24,0xfe,0x70,0xa8,0x24,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,
-+0x1,0x7f,0x44,0x44,0x7f,0x4e,0x55,0x64,0x5f,0x41,0x4f,0x41,0x7f,0x41,0x85,0x2,0x8,0xfc,0x20,0x20,0xfc,0x70,0xae,0x24,0xf0,0x0,0xf0,0x0,0xfc,0x0,0x0,0x0,
-+0x0,0x3f,0x22,0x3f,0x26,0x2b,0x32,0x2f,0x28,0x2f,0x28,0x2f,0x49,0x42,0x8c,0x30,0x84,0xfe,0x20,0xfc,0x30,0x6e,0xa4,0xf8,0x88,0xf8,0x88,0xf8,0x40,0x52,0x42,0x3e,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x13,0x1c,0x30,0xd0,0x11,0x12,0x14,0x10,0x50,0x20,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,0x40,
-+0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x7f,0x3,0x3,0x5,0x9,0x11,0x61,0x1,0x1,0x0,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x80,0x40,0x20,0x18,0xe,0x4,0x0,0x0,
-+0x4,0x4,0x7f,0x4,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x2,0xc,0x70,0x40,0x48,0xfc,0x40,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x80,0x60,0x1c,
-+0x0,0x3f,0x29,0x25,0x3f,0x1,0x3f,0x1,0x7f,0x24,0x42,0x81,0x3f,0x1,0x1,0x7f,0x8,0xfc,0x28,0x48,0xf8,0x0,0xf8,0x0,0xfc,0x48,0x26,0x12,0xf8,0x0,0x8,0xfc,
-+0x1,0x7f,0x49,0x6b,0x5d,0x7f,0x8,0x7f,0x8,0xf,0x78,0x5,0x55,0x54,0x91,0x2,0x20,0xb0,0x28,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x40,0x30,0x1f,0x80,0x60,0x27,0x8,0x10,0x20,0xe1,0x22,0x24,0x20,0x20,0x20,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,0x40,
-+0x1,0x41,0x2f,0x11,0x81,0x63,0x22,0xb,0x12,0x23,0xe0,0x3f,0x20,0x20,0x23,0x2c,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xb0,0xe,0x4,
-+0x1,0x7f,0x44,0x84,0x3f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x2,0xc,0x30,0x0,0xfe,0x42,0x54,0xf8,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1c,
-+0x0,0x7f,0x44,0x48,0x48,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x4,0xfe,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x42,0x3f,0x12,0x3,0x2,0xf2,0x13,0x10,0x1f,0x10,0x10,0x15,0x1a,0x14,0x0,0x8,0x8,0xfe,0x8,0xf8,0x8,0x8,0xf8,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x1,0x2,0x4,0x8,0x3f,0x1,0x11,0x1f,0x21,0x41,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x0,0x20,0x10,0xf8,0x8,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x7f,0x8,0xf,0x8,0x8,0xf,0x1,0xff,0x1,0x3,0x5,0x19,0x61,0x1,0x20,0x28,0xfc,0x20,0xe0,0x20,0x20,0xe0,0x4,0xfe,0x0,0x80,0x60,0x1c,0x8,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x12,0x1f,0x34,0xd4,0x14,0x14,0x17,0x10,0x50,0x20,0x8,0xfc,0x8,0x88,0x48,0x8,0x8,0xfe,0x8,0x88,0x48,0x8,0xfc,0x8,0x50,0x20,
-+0x8,0x8,0x48,0x4a,0x7f,0x48,0x89,0x8,0x8,0xe,0x18,0xe8,0x8,0x8,0xb,0x8,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x2,0x1,0xff,0x0,0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0xfc,0x24,0x24,0x27,0x25,0x45,0x29,0x11,0x29,0x44,0x84,0x0,0x4,0xfe,0x84,0xa4,0x94,0x84,0x84,0xfe,0x4,0x24,0x14,0x4,0xfe,0x4,0x28,0x10,
-+0x0,0x1f,0x10,0x12,0x11,0x10,0x10,0xff,0x20,0x22,0x21,0x20,0x3f,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x90,0x90,0x14,0xfe,0x10,0x10,0x90,0x90,0xf8,0x10,0xa0,0x40,
-+0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x2,0xff,0x4,0x9,0x37,0xc1,0x1,0x1f,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x40,0x30,0xce,0x4,0x20,0xf0,
-+0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x8,0x1f,0x28,0xcf,0x8,0xf,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0xf0,0x28,0xe6,0x20,0xe0,
-+0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x11,0x3f,0xd1,0x11,0x11,0x1,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xfe,0x14,0x50,0x20,0x0,
-+0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x12,0x22,0xdf,0x4,0x8,0x30,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xe,0xe4,0x20,0xa0,0x40,
-+0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x12,0x22,0xcb,0x12,0x22,0x6,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xe,0x24,0x90,0x90,0x0,
-+0x1,0x1,0x1,0x1,0xff,0x1,0x3,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x1,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x20,0x10,0x8,0xe,0x4,0x0,0x0,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x0,
-+0x8,0x7c,0x4b,0x48,0x48,0x78,0x4f,0x49,0x4a,0x7c,0x4b,0x48,0x48,0x78,0x4f,0x0,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x10,0x4c,0x44,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0x8,0x48,0x48,0x7e,0x49,0x8a,0x8,0xe,0x18,0xe8,0x8,0x8,0x8,0x9,0xe,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x1c,0xf3,0x12,0x13,0xfe,0x33,0x39,0x52,0x54,0x53,0x90,0x13,0x10,0x10,0x17,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x50,0x64,0x42,0x90,0x20,0xc8,0x10,0x60,0x80,
-+0x1,0x2,0xc,0x37,0xc0,0x1f,0x10,0x1f,0x0,0x3f,0x1,0x1f,0x1,0x7f,0x1,0x3,0x0,0x80,0x60,0xde,0x4,0xf0,0x10,0xf0,0x30,0xc0,0x0,0xf0,0x0,0xfc,0x0,0x0,
-+0x0,0xf,0x72,0x52,0x5f,0x52,0x52,0x52,0x5f,0x52,0x52,0x74,0x54,0x9,0x10,0x0,0x0,0xde,0x52,0x54,0xd4,0x54,0x58,0x54,0xd2,0x52,0x52,0x52,0x5a,0x54,0x90,0x10,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4a,0x7a,0x4a,0x2,0x2,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0x4,0x14,0x8,
-+0x20,0x20,0x38,0x23,0x42,0x7a,0xa2,0x22,0xfa,0x22,0x23,0x22,0x2a,0x32,0x22,0x2,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0x4,0x14,0x8,
-+0x0,0x7f,0x9,0x9,0x7f,0x9,0x9,0x9,0x7f,0x9,0x9,0x11,0x11,0x25,0x42,0x0,0x4,0x7e,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x27,0x22,0x22,0xfa,0x4f,0x4a,0x4a,0x8a,0x57,0x22,0x52,0x4d,0x84,0x8,0x0,0x0,0xde,0x52,0x52,0x54,0xd4,0x58,0x54,0x54,0xd2,0x52,0x5a,0x54,0x90,0x10,0x10,
-+0x10,0x10,0x20,0x23,0x4a,0xfa,0x12,0x22,0x42,0xfa,0x3,0x2,0x1a,0xe2,0x42,0x2,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0x4,0x14,0x8,
-+0x10,0x1f,0x10,0x2f,0x40,0x9f,0x0,0x7f,0x8,0x8,0x9,0x8,0x10,0x10,0x21,0x40,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x88,0xc8,0x88,0x88,0xe8,0x28,0x2a,0x2a,0x4a,0x84,
-+0x0,0x7f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x40,0x80,0x0,0x10,0xf8,0x10,0x10,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x17,0x10,0x10,0xfc,0x24,0x24,0x24,0x24,0x49,0x29,0x11,0x2a,0x4a,0x84,0x8,0x8,0xfc,0x88,0x88,0x88,0x90,0x94,0xbe,0x84,0x4,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x1,0xff,0x8,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x43,0x0,0x8,0x88,0x8,0x8,0xfe,0x8,0x8,0x88,0x68,0x28,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x1,0x1,0x7f,0x2,0x4,0x8,0x10,0xef,0x0,0x0,0x3f,0x1,0x9,0x11,0x65,0x2,0x0,0x8,0xfc,0x80,0x40,0x30,0x4e,0xe4,0x0,0x10,0xf8,0x0,0x20,0x18,0x8,0x0,
-+0x1,0x1,0xff,0x1,0x1,0x7f,0x48,0x44,0x5f,0x41,0x41,0x5f,0x41,0x41,0x41,0x40,0x0,0x4,0xfe,0x0,0x4,0xfe,0x24,0x44,0xf4,0x4,0x4,0xf4,0x4,0x4,0x14,0x8,
-+0x0,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0xff,0x2,0x2,0x4,0x18,0x60,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x4,0xfe,0x4,0x44,0x45,0x2a,0x28,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x60,0x50,0x44,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x1,0x3f,0x9,0x7f,0x52,0x9e,0x4,0x7f,0x4,0x3f,0x4,0x7f,0xc,0x14,0x65,0x6,0x10,0xf8,0x20,0xfe,0x92,0xf4,0x40,0xfc,0x40,0xf8,0x40,0xfc,0x90,0x60,0x1c,0x8,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x10,0x1f,0x30,0xd7,0x11,0x11,0x11,0x11,0x52,0x2c,0x80,0x88,0xfc,0x80,0x48,0x32,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x8,0x7c,0x48,0x4f,0x48,0x7a,0x4b,0x4a,0x4a,0x7a,0x4a,0x4b,0x4a,0x4a,0x4b,0x9a,0x80,0x40,0x4,0xfe,0x0,0x14,0x14,0xa4,0xa4,0x44,0xa4,0x1c,0xc,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x17,0x58,0x52,0x53,0x92,0x12,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x80,0x40,0x4,0xfe,0x0,0x14,0x14,0xa4,0xa4,0x44,0xa4,0x1c,0xc,0x4,0xfc,0x4,
-+0x40,0x37,0x10,0x42,0x41,0x5f,0x41,0x41,0x4f,0x49,0x49,0x49,0x49,0x41,0x41,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0x64,0x4,0x14,0x8,
-+0x40,0x30,0x10,0x0,0x87,0x64,0x27,0xc,0x17,0x20,0xe0,0x3f,0x20,0x20,0x20,0x20,0x88,0xfc,0x80,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x0,0xb,0x7e,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7c,0x44,0x8,0x10,0x20,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0,
-+0x20,0x27,0x20,0x3a,0x49,0x51,0x80,0x20,0x2f,0x21,0x22,0x21,0x28,0x30,0x21,0x6,0x1c,0xe0,0x0,0x44,0x24,0x28,0x80,0x84,0xfe,0x8,0x8,0x10,0xa0,0xe0,0x18,0x8,
-+0x1,0x1,0x1,0x1,0x7f,0x41,0x41,0x42,0x42,0x44,0x48,0x50,0x40,0x40,0x40,0x40,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x84,0x64,0x34,0x14,0x4,0x4,0x14,0x8,
-+0x21,0x21,0x2f,0x21,0xf1,0x57,0x55,0x55,0x55,0x97,0x53,0x23,0x55,0x49,0x81,0x1,0x10,0x50,0xf4,0x1e,0x24,0xd4,0x54,0x54,0x54,0xd4,0x14,0x88,0x54,0x14,0x24,0x42,
-+0x10,0x10,0x24,0x44,0xfe,0x2,0x7c,0x44,0x7c,0x44,0x44,0x7c,0x44,0x44,0x54,0x48,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x49,0x29,0x12,0x2a,0x46,0x84,0x8,0x4,0xfe,0x4,0x4,0x4,0xfc,0x0,0x40,0x44,0x4c,0x50,0x60,0x42,0x42,0x3e,0x0,
-+0x1f,0x1,0x7f,0x49,0x85,0x9,0x2,0x3c,0x20,0x3e,0x20,0x3f,0x24,0x4,0x18,0x60,0xf0,0x0,0xfe,0x22,0x44,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x48,0x42,0x42,0x3e,
-+0x8,0x8,0xb,0x12,0x12,0x33,0x52,0x92,0x13,0x12,0x10,0x10,0x11,0x11,0x12,0x14,0x40,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0xfc,0x94,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x40,0x37,0x14,0x4,0x84,0x67,0x25,0xd,0x15,0x25,0xe5,0x25,0x25,0x29,0x28,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x8,0x18,0x20,0x40,0x80,0x2,0x2,0xfe,0x0,
-+0x0,0x3f,0x20,0x20,0x20,0x3f,0x24,0x24,0x24,0x24,0x27,0x24,0x24,0x44,0x43,0x80,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x10,0x30,0xc0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x13,0x12,0x50,0x20,0x0,0x8,0x88,0x48,0x68,0x28,0x8,0x8,0x8,0x8,0x48,0x88,0x14,0x22,0x42,0x80,
-+0x11,0x11,0x11,0x23,0x22,0x64,0xa8,0x20,0x21,0x21,0x22,0x24,0x20,0x20,0x21,0x20,0x0,0x0,0x0,0xfc,0x4,0x8,0x40,0x40,0x50,0x48,0x4c,0x44,0x40,0x40,0x40,0x80,
-+0x0,0x7f,0x44,0x44,0x7f,0x44,0x41,0x7f,0x42,0x47,0x4c,0x54,0x47,0x40,0x7f,0x0,0x8,0xfc,0x40,0x50,0xf8,0x40,0x8,0xfc,0x0,0xf0,0x10,0x10,0xf0,0x8,0xfc,0x0,
-+0x0,0x78,0x4f,0x48,0x4b,0x78,0x4f,0x48,0x4b,0x7a,0x4a,0x4a,0x4a,0x4a,0x49,0x9a,0x14,0x10,0xfe,0x10,0xd0,0x10,0xf0,0x10,0xe8,0x28,0xa8,0xa8,0xaa,0xaa,0x4a,0x24,
-+0x2,0x41,0x30,0x17,0x0,0x2,0xf2,0x12,0x12,0x13,0x12,0x10,0x10,0x29,0x47,0x0,0x8,0x10,0xa0,0xfc,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x80,0x6,0xfc,0x0,
-+0x0,0x47,0x30,0x10,0x87,0x64,0x24,0xf,0x10,0x24,0xe2,0x22,0x24,0x20,0x22,0x21,0x0,0xbc,0x84,0x84,0xbc,0x20,0x24,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x84,0x94,0x8,
-+0x8,0xff,0x8,0x3f,0x1,0x9,0x9,0xff,0x10,0x1f,0x10,0x1f,0x29,0x24,0x44,0x0,0x24,0xfe,0x20,0xf8,0x0,0xf0,0x4,0xfe,0x0,0xf8,0x0,0xfc,0x24,0x94,0x94,0xc,
-+0x10,0x10,0x10,0x10,0xfc,0x10,0x14,0x18,0x33,0xd2,0x12,0x12,0x12,0x12,0x53,0x22,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x1f,0x11,0x21,0x41,0x1f,0x11,0x11,0x11,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0xb,0xfe,0x12,0x13,0x22,0x2b,0x7e,0xaa,0x2b,0x2a,0x2a,0x3c,0x24,0x8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x50,0xfc,0x50,0x54,0xfe,0xc4,0xa8,0x90,0x8e,0xc4,0x80,
-+0x21,0x21,0x27,0x21,0xff,0x21,0x22,0x3c,0x67,0xa1,0x22,0x27,0x20,0x3f,0xa0,0x40,0x10,0x10,0xfc,0x10,0xfe,0x10,0xae,0x84,0xf8,0x0,0x40,0xf8,0x40,0xfe,0x40,0x40,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x14,0x18,0x33,0xd0,0x10,0x12,0x16,0x1a,0x52,0x21,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x0,0xf8,0x10,0x20,0x80,0x64,0x22,0x8,0xf8,
-+0x1,0x2,0x4,0x8,0x12,0x21,0xc1,0x1f,0x0,0x0,0x4,0x13,0x51,0x50,0x8f,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0xf8,0x20,0x40,0x0,0x0,0x14,0x12,0xf2,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x10,0x4e,0x84,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x57,0x61,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0x94,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x60,0x52,0x54,0x48,0x48,0x64,0x42,
-+0x2,0x4,0x1f,0x10,0x14,0x12,0x12,0x10,0x10,0x1f,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0xa0,0x44,0xfe,0x4,0x24,0xf4,0x4,0x28,0x10,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2e,0x22,0x22,0x24,0x24,0x48,0x50,0x82,0x1,0x4,0xfe,0x4,0x4,0xfc,0x84,0x80,0xa4,0xa8,0xb0,0xa0,0x90,0x8e,0x84,0x80,0x0,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x16,0x1b,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x7f,0x8,0xf,0x8,0xf,0x8,0x7f,0x0,0x7e,0x2,0x24,0x14,0x8,0x16,0x62,0x8,0xfc,0x20,0xe0,0x20,0xe0,0x28,0xfc,0x20,0xfc,0x4,0x48,0x28,0x10,0x2e,0xc4,
-+0x4,0xff,0x10,0x7e,0x42,0x7e,0x41,0x7e,0x42,0x7e,0x40,0xf,0x0,0x7f,0x1,0x3,0x44,0xfe,0x20,0xf8,0x50,0x50,0xfc,0x20,0xf8,0x20,0x20,0xe0,0x88,0xfc,0x0,0x0,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x4f,0x48,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x3,0x2,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0,0x44,0x44,0x44,0xb4,0x14,0x4,0xfc,0x4,
-+0x23,0x21,0x39,0x41,0x81,0x79,0x27,0x20,0xff,0x24,0x22,0x22,0x29,0x32,0x22,0xc,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xfe,0x62,0x94,0x94,0x8,0x98,0xa4,0x42,
-+0x20,0x21,0x3b,0x42,0x83,0x7a,0x23,0x22,0xfb,0x20,0x2f,0x20,0x29,0x32,0x24,0x0,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x40,0x37,0x14,0x4,0x87,0x64,0x24,0xf,0x10,0x20,0xe7,0x20,0x20,0x20,0x2f,0x20,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x9,0x9,0x13,0x12,0x34,0x59,0x91,0x12,0x14,0x11,0x10,0x2,0x51,0x50,0x90,0xf,0x0,0x0,0xfc,0x4,0x48,0x40,0x50,0x4c,0x44,0x40,0x80,0x0,0x84,0x92,0x12,0xf0,
-+0x10,0x10,0x10,0x13,0xfe,0x14,0x30,0x3b,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x44,0x2c,0x13,0x2a,0x4c,0x88,0xb,0x18,0x28,0x48,0x88,0x8,0x8,0x50,0x20,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x8,0x89,0x6e,0x28,0x8,0x7,0x28,0x2f,0x32,0xc2,0x5f,0x42,0x45,0x44,0x48,0x11,0x0,0x7c,0x4,0x28,0x90,0x88,0x7e,0x82,0x14,0x50,0xdc,0x50,0x70,0xd0,0x8e,0x4,
-+0x2,0x1,0x7f,0x40,0x80,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x0,0xfe,0x2,0x4,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x13,0xfa,0x14,0x10,0x1b,0x30,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x40,0x30,0x10,0x7,0x84,0x68,0x20,0xf,0x10,0x20,0xe0,0x20,0x20,0x20,0x21,0x20,0x80,0x40,0x40,0xfe,0x2,0x4,0x0,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x1,0x11,0x11,0x1f,0x21,0x21,0x41,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x13,0x10,0x10,0xfc,0x10,0x14,0x1b,0x30,0xd0,0x10,0x10,0x10,0x10,0x57,0x20,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0xfe,0x0,
-+0x20,0x27,0x39,0x41,0x81,0x79,0x21,0x27,0xf9,0x21,0x21,0x29,0x31,0x21,0xf,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x10,0x17,0x21,0x21,0x49,0xf9,0x11,0x27,0x41,0xf9,0x1,0x1,0x19,0xe1,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x8,0x7c,0x4b,0x4a,0x4c,0x78,0x48,0x49,0x4b,0x7d,0x49,0x49,0x49,0x49,0x49,0x99,0x40,0x40,0xfc,0x44,0x48,0x80,0x84,0x4c,0x50,0x20,0x20,0x10,0xe,0x44,0x80,0x0,
-+0x40,0x30,0x17,0x4,0x88,0x60,0x20,0x9,0x13,0x25,0xe9,0x21,0x21,0x21,0x21,0x21,0x40,0x40,0xfc,0x44,0x48,0x80,0x84,0x4c,0x50,0x20,0x20,0x10,0xe,0x44,0x80,0x0,
-+0x1,0x1,0x7f,0x41,0x81,0x2,0x2,0x5,0x9,0x18,0x28,0x48,0x88,0xa,0xc,0x8,0x0,0x0,0xfe,0x2,0x4,0x0,0x8,0x18,0x20,0xc0,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0x7f,0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x60,0x8,0xfc,0x0,0x10,0xf8,0x0,0x8,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x11,0x10,0xfe,0x22,0x22,0x22,0x42,0x24,0x14,0x8,0x14,0x22,0x41,0x6,0x0,0x0,0xfc,0x4,0x84,0x84,0x88,0x88,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x10,0xfe,0x22,0x24,0x64,0x18,0x14,0x62,0x2,0x3f,0x2,0x4,0x4,0x18,0x60,0x0,0x0,0xfc,0x84,0x48,0x30,0x20,0x50,0x8e,0x4,0xf0,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x10,0xfe,0x22,0x24,0x64,0x18,0x14,0x62,0x0,0x12,0x51,0x50,0x90,0xf,0x0,0x0,0x0,0xfc,0x84,0x48,0x30,0x20,0x50,0x8e,0x4,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x2,0x2,0x2,0x2,0x2,0xff,0x4,0x4,0x8,0x10,0xc,0x2,0x1,0x6,0x18,0x60,0x0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x40,0x80,0x80,0x60,0x18,0x8,
-+0x0,0xb,0x7c,0x4a,0x49,0x4b,0x48,0x7f,0x48,0x48,0x49,0x49,0x7a,0x44,0x8,0x3,0xc,0xf0,0x84,0x4c,0x50,0xfc,0x80,0xfe,0x80,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x3f,0x21,0x20,0x20,0x27,0x24,0x3f,0x24,0x47,0x80,0x10,0xf8,0x0,0xfc,0x4,0xe8,0x0,0x8,0xf8,0x0,0xf0,0x4,0xfe,0x0,0xf8,0x0,
-+0x1,0x0,0x1f,0x10,0x90,0x53,0x52,0x12,0x32,0x5f,0xd2,0x12,0x22,0x22,0x43,0x0,0x0,0x84,0xfe,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x10,0x17,0x12,0x12,0xfa,0x17,0x12,0x1a,0x32,0xd7,0x12,0x12,0x14,0x19,0x50,0x20,0x0,0xde,0x52,0x54,0x54,0xd4,0x58,0x58,0x54,0xd2,0x52,0x52,0x5a,0x54,0x90,0x10,
-+0x20,0x27,0x20,0x2f,0xba,0xa9,0xa2,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x24,0x24,0x8,0xfc,0x40,0xfe,0x4a,0x50,0x48,0x40,0xfc,0x80,0xfc,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x10,0x11,0x54,0x3b,0x12,0xfc,0x10,0x30,0x3b,0x54,0x53,0x92,0x12,0x12,0x12,0x12,0x8,0xfc,0x20,0xfe,0xaa,0x70,0xa8,0x20,0xfe,0x40,0xfe,0x52,0x52,0x52,0x52,0x6,
-+0x1,0x41,0x37,0x11,0x1,0x0,0xef,0x20,0x21,0x23,0x2d,0x21,0x29,0x31,0x21,0x1,0x10,0x10,0xfc,0x10,0x50,0x44,0xfe,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x8,0x7f,0x49,0x49,0x4f,0x49,0x49,0x49,0x49,0x4f,0x49,0x79,0x41,0x5,0x2,0x20,0xb0,0x28,0x20,0x24,0xfe,0x20,0x20,0x20,0xd4,0x18,0x10,0x30,0x4a,0x8a,0x6,
-+0x4,0x7e,0x40,0x42,0x62,0x55,0x54,0x48,0x54,0x52,0x62,0x40,0x44,0x7e,0x1,0x2,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,0x0,
-+0x4,0x7e,0x40,0x42,0x62,0x54,0x54,0x48,0x54,0x52,0x62,0x40,0x45,0x7e,0x0,0x0,0x10,0x24,0xfe,0x84,0xa4,0x84,0x94,0x88,0x80,0xfe,0x2,0x12,0xfa,0x2,0x14,0x8,
-+0x4,0x7e,0x40,0x42,0x62,0x54,0x55,0x48,0x55,0x52,0x62,0x40,0x44,0x7e,0x0,0x3,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x4,0xff,0x14,0x11,0x7d,0x11,0x7d,0x11,0xfc,0x13,0x3a,0x56,0x92,0x12,0x12,0x40,0x44,0xfe,0x40,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0xa,0x4,
-+0x0,0xb,0x7e,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x3,0x0,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x50,0x88,0x8,0x4,0xfe,0x0,
-+0x10,0x17,0x14,0x24,0x27,0x64,0xa4,0x27,0x20,0x2f,0x28,0x28,0x2b,0x28,0x28,0x28,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0xfe,0x42,0x4a,0xfa,0x2,0xa,0x4,
-+0x0,0x43,0x32,0x13,0x82,0x62,0x22,0xa,0x12,0x22,0xe2,0x22,0x23,0x22,0x23,0x20,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x50,0x88,0x8,0x4,0xfe,0x0,
-+0x2,0x12,0x7a,0x5f,0x52,0x52,0x52,0x52,0x53,0x5e,0x52,0x72,0x52,0x2,0xa,0x4,0x10,0x10,0x24,0xfe,0x44,0x44,0x44,0xc4,0x7c,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,
-+0x4,0x7e,0x44,0x44,0x44,0x7c,0x10,0x10,0x5c,0x51,0x51,0x51,0x5e,0xe2,0x44,0x8,0x10,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x10,0x10,0x10,0x8,0xe,0x4,0x0,
-+0x7,0x78,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x52,0x52,0x51,0x90,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x0,0x2,0x2,0xfe,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x11,0x59,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x7e,0x8,0x3e,0x8,0x7e,0x0,0x3f,0x21,0x21,0x3f,0x20,0x20,0x20,0x1f,0x0,0x8,0xfc,0x20,0xf8,0x20,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x17,0xfc,0x10,0x14,0x1b,0x30,0xd0,0x10,0x1f,0x10,0x10,0x50,0x20,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0,
-+0x8,0x48,0x49,0x49,0x49,0x7d,0x41,0x41,0x79,0x48,0x49,0x4f,0x48,0x48,0x88,0x8,0x40,0x84,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x8,0x8,0x10,0x2f,0x40,0x88,0x8,0x17,0x30,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0,
-+0x40,0x3f,0x12,0x2,0x82,0x6f,0x22,0xa,0x12,0x22,0xef,0x22,0x22,0x24,0x24,0x28,0x88,0x7c,0x10,0x10,0x7c,0x90,0x10,0x7c,0x10,0x10,0x94,0xfe,0x10,0x10,0x10,0x10,
-+0x40,0x37,0x14,0x4,0x85,0x65,0x25,0xd,0x15,0x25,0xe5,0x25,0x25,0x29,0x29,0x11,0x1c,0xe0,0x8,0x3c,0xc0,0x40,0x40,0x24,0x2c,0x30,0x20,0x10,0x10,0x4e,0x84,0x0,
-+0x22,0x21,0xfa,0x22,0x71,0xaa,0x22,0xff,0x4,0xf,0x31,0xcf,0x1,0x3f,0x1,0x3,0x88,0x8,0xbe,0x88,0x1c,0xaa,0x8,0xfe,0x40,0xe0,0x18,0xe6,0x0,0xf8,0x0,0x0,
-+0x0,0x47,0x32,0x11,0x8f,0x61,0x22,0xc,0x17,0x24,0xe4,0x27,0x24,0x24,0x27,0x24,0x3c,0xc0,0x48,0x50,0xfe,0x50,0x48,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x2,0x1f,0x10,0x12,0x11,0xff,0x10,0x12,0x21,0x40,0x3f,0x24,0x24,0x24,0xff,0x0,0x10,0xf8,0x10,0x10,0x14,0xfe,0x10,0x10,0x50,0x20,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x10,0x3e,0x22,0x2a,0xff,0x22,0x2a,0x22,0x46,0xff,0x4,0xf,0x18,0x68,0xf,0x8,0x78,0x48,0x48,0x86,0x78,0x48,0x30,0x4e,0x84,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x0,0x8,0x7c,0x49,0x49,0x7a,0x4a,0x4d,0x48,0x78,0x48,0x48,0x49,0x79,0x42,0x4,0x20,0xa0,0xa0,0x10,0x10,0x8,0xe,0xf4,0x90,0x90,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x4,0x7f,0x54,0x54,0x54,0x55,0x7c,0x54,0x54,0x57,0x54,0x7c,0x44,0x0,0x0,0x20,0x20,0x24,0xa8,0xa8,0x20,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x44,0x34,0x15,0x4,0x7f,0x4,0x4,0x5,0xff,0x4,0x8,0x8,0x10,0x20,0x0,0x4,0x44,0xc4,0x24,0x24,0xa4,0x24,0x24,0x24,0xa4,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x93,0x55,0x39,0x11,0x7d,0x11,0x11,0xfd,0x11,0x11,0x22,0x22,0x44,0x89,0x8,0x1c,0xe0,0x0,0x0,0x0,0xf8,0x8,0x88,0x48,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xff,0x0,0x0,0x0,0x0,0x0,0x30,0xc0,0x0,0x0,0x10,0xf8,0x20,0x20,0x20,0x24,0xfe,0x0,0x40,0x30,0x18,0x8,
-+0x2,0x1,0x7f,0x42,0x42,0x42,0x7f,0x42,0x42,0x44,0x44,0x44,0x48,0x4b,0x90,0x20,0x0,0x4,0xfe,0x0,0x40,0x28,0xfc,0x80,0x80,0x88,0x90,0xa0,0xc2,0x82,0x82,0x7e,
-+0x2,0x1,0x7f,0x8,0x4,0x7f,0x42,0x81,0x7f,0x4,0x7,0x4,0x8,0x8,0x10,0x60,0x0,0x8,0xfc,0x20,0x40,0xfe,0x2,0x4,0xfc,0x0,0xf0,0x10,0x10,0x10,0xa0,0x40,
-+0x10,0x10,0x13,0xfc,0x10,0x7f,0x12,0xfc,0x13,0x38,0x34,0x50,0x90,0x11,0x12,0x14,0x40,0x24,0xfe,0x88,0x50,0xfe,0x42,0x24,0xfe,0x80,0xf8,0x88,0x88,0x8,0x28,0x10,
-+0x0,0x78,0x4c,0x4a,0x49,0x78,0x4f,0x48,0x48,0x78,0x4f,0x48,0x48,0x48,0x48,0x98,0x40,0x40,0x44,0x48,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x12,0x12,0x12,0x12,0xfe,0x17,0x12,0x1a,0x32,0xd2,0x12,0x12,0x12,0x12,0x54,0x28,0x20,0x20,0x20,0x24,0x7e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xd4,0x8a,0x82,0x7e,0x0,
-+0x0,0x8,0x7c,0x49,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x0,0x0,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x1f,0x21,0x21,0x7d,0xa5,0x25,0x25,0x3d,0x25,0x22,0x20,0x20,0x1f,0x0,0x4,0x4,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x84,0x84,0x94,0x8,
-+0x10,0x10,0x10,0x15,0x59,0x53,0x55,0x91,0x11,0x11,0x11,0x29,0x25,0x45,0x80,0x0,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x20,0x10,0x10,0x1,0xf9,0xb,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x10,0x10,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x4,0x7e,0x44,0x45,0x45,0x7f,0x15,0x11,0x5d,0x51,0x51,0x51,0x5d,0xe1,0x40,0x0,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x1,0x41,0x31,0x12,0x82,0x67,0x2a,0x2,0xa,0x13,0xe2,0x22,0x22,0x22,0x21,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x0,0x7,0x78,0x48,0x48,0x48,0x48,0x49,0x49,0x4a,0x4c,0x78,0x48,0x0,0xf,0x0,0x8,0xfc,0x20,0x20,0x40,0xc0,0xc0,0x50,0x4c,0x46,0x42,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0x7f,0x48,0x48,0x48,0x78,0x48,0x49,0x49,0x7a,0x4c,0x48,0x48,0x48,0x4f,0x98,0x8,0xfc,0x20,0x20,0x40,0xc0,0xc0,0x50,0x4c,0x46,0x42,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x20,0x27,0x20,0x21,0xf8,0x20,0x2f,0x20,0x23,0x22,0x22,0x3a,0xe2,0x43,0x2,0x80,0x48,0xfc,0x0,0x10,0xa0,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x1,0xff,0x2,0x4,0xc,0x35,0xc6,0x4,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfc,0x80,0x4,0xfe,0x80,0x88,0x50,0x30,0xe,0x4,
-+0x0,0x7c,0x45,0x54,0x54,0x54,0x54,0x57,0x54,0x55,0x55,0x55,0x11,0x29,0x45,0x81,0x40,0x20,0xfc,0x0,0x88,0x50,0x4,0xfe,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x78,0x4f,0x50,0x51,0x50,0x60,0x57,0x48,0x4b,0x6a,0x52,0x42,0x42,0x43,0x42,0x80,0x48,0xfc,0x0,0x10,0xa0,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x41,0x7f,0x41,0x4,0xfe,0x4,0x4,0x4,0x4,0x7c,0x44,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x1f,0x28,0x2f,0x68,0xa8,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x28,0x30,0x20,0x8,0xfc,0x8,0xf8,0x88,0xa8,0xf8,0xa8,0xa8,0xa8,0xa8,0xa8,0xea,0x8a,0x86,0x80,
-+0x0,0x40,0x20,0x2f,0x80,0x60,0x27,0xc,0x14,0x24,0xe4,0x24,0x24,0x20,0x20,0x20,0x40,0x40,0x44,0xfe,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x54,0x48,0x40,0x40,0x40,
-+0x0,0xb,0x7c,0x49,0x4f,0x49,0x48,0x4b,0x4a,0x4a,0x4a,0x7a,0x4a,0x0,0x1,0x6,0x48,0xfc,0x40,0x14,0xfe,0x10,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0x90,0xc,0x4,
-+0x0,0x4,0x8,0x10,0x2f,0xc4,0x4,0x9,0x30,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x80,0x80,0x40,0x20,0xd0,0x4e,0x44,0x40,0x80,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0,
-+0x4,0xff,0x10,0x10,0x21,0x24,0x3e,0x64,0xa7,0x24,0x24,0x24,0x24,0x3c,0x24,0x0,0x8,0xfc,0x20,0x20,0x24,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x10,0x10,0xfd,0x10,0x14,0x18,0x33,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x8,0xfc,0x20,0x20,0x24,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x0,0x1,0x5,0x3,0x48,0x44,0x84,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x0,0xf0,0x40,0x80,0x0,0x0,0x48,0x24,0x24,
-+0x41,0x21,0x2f,0x1,0x87,0x60,0x27,0xc,0x14,0x27,0xe0,0x24,0x22,0x20,0x2f,0x0,0x0,0x42,0xe6,0x8,0xd0,0x2,0xc6,0x48,0x50,0xc0,0x2,0x46,0x88,0xf0,0x20,0x40,
-+0x8,0x9,0xff,0x8,0x7f,0x0,0x7f,0x41,0x41,0x7f,0x0,0x22,0x14,0xf,0xf0,0x40,0x4,0xc,0x90,0x20,0x40,0x4,0xc,0x10,0x20,0x42,0x6,0x8,0x10,0x20,0x40,0x80,
-+0x4,0xff,0x5,0x41,0x33,0x14,0x1,0xf6,0x1b,0x10,0x13,0x10,0x17,0x10,0x28,0x47,0x44,0xfe,0x40,0xf8,0x10,0xe0,0x18,0x46,0xf8,0x40,0xf8,0x40,0xfc,0x40,0x46,0xfc,
-+0x20,0x27,0x24,0x24,0xfc,0x27,0x64,0x74,0xac,0x27,0x24,0x24,0x24,0x24,0x25,0x28,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0xa4,0x4c,
-+0x10,0xff,0x24,0x24,0x44,0x47,0x74,0xd4,0x54,0x57,0x54,0x54,0x54,0x74,0x45,0x8,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0xa4,0x4c,
-+0x10,0x3e,0x49,0x81,0x43,0x24,0x1,0xf6,0x1b,0x10,0x13,0x10,0x17,0x10,0x28,0x47,0x40,0xfc,0x20,0xf8,0x10,0xe0,0x18,0x46,0xf8,0x40,0xf8,0x40,0xfc,0x40,0x46,0xfc,
-+0x0,0x78,0x4f,0x48,0x4b,0x78,0x4b,0x4a,0x4a,0x7b,0x48,0x4a,0x49,0x4f,0x48,0x98,0x80,0xa2,0xf2,0x84,0xe8,0x12,0xe2,0x24,0x28,0xf0,0x2,0x22,0x44,0xe8,0x10,0x60,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x4a,0x44,0x81,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x84,0x94,0x8,
-+0x0,0x77,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x55,0x8b,0x0,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0xa,0xfe,0x2,0xa,0x4,
-+0x10,0x10,0x17,0xfc,0x13,0x10,0x17,0x18,0x31,0xd2,0x1d,0x10,0x17,0x10,0x50,0x20,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0xa0,0x50,0x4e,0xf4,0x40,0xfc,0x40,0x40,0x40,
-+0x1,0x8,0xfc,0x20,0x23,0x40,0x48,0x7c,0xca,0x4a,0x4a,0x48,0x48,0x78,0x47,0x0,0x8,0x88,0x90,0x8,0xfc,0x90,0x90,0x92,0x96,0x94,0x98,0x90,0x90,0x94,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0x10,0xfc,0x10,0x10,0x10,0x11,0x12,0x1c,0xf0,0x40,0x7,0x0,0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x68,0xa4,0x22,0x22,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x5,0xff,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x25,0x3d,0x25,0x0,0x10,0x10,0x10,0x10,0x12,0x16,0xd8,0x10,0x10,0x10,0x10,0x10,0x12,0x52,0x8e,0x0,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3e,0x23,0x22,0x3e,0x21,0x3e,0x62,0xa2,0x3e,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x20,0xfc,0x88,0x50,0xfe,0x20,0xfc,0x20,0x20,0x20,
-+0x12,0x12,0x12,0x12,0xfe,0x12,0x13,0x1a,0x32,0xd2,0x12,0x12,0x12,0x13,0x52,0x20,0x20,0x20,0x20,0x20,0x24,0x2c,0xb0,0x20,0x20,0x20,0x20,0x20,0xa4,0x24,0x1c,0x0,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x12,0x14,0x54,0x29,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x88,0x88,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x0,0x3e,0x23,0x22,0x3e,0x21,0x3e,0x62,0xa2,0x3e,0x0,0x7f,0x4,0x4,0x8,0x30,0x40,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0x8,0xfc,0x8,0x8,0x50,0x20,
-+0x4,0x7e,0x8,0x8,0x3e,0x8,0x8,0x7e,0x0,0x20,0x24,0x3e,0x20,0x20,0x2e,0x30,0x8,0xfc,0x20,0x20,0xf8,0x20,0x28,0xfc,0x0,0x80,0x98,0xe0,0x80,0x82,0x82,0x7e,
-+0x0,0x5,0x7f,0x55,0x55,0x55,0x55,0x7d,0x55,0x55,0x55,0x55,0x7d,0x45,0x1,0x0,0x10,0x10,0x10,0x10,0x10,0x12,0xdc,0x10,0x10,0x10,0x10,0x10,0x52,0x92,0xe,0x0,
-+0x0,0x8,0x7f,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x49,0x4f,0x78,0x48,0x0,0x0,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x88,0xf8,0x80,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3c,0x24,0x27,0x24,0x24,0x54,0x88,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0x40,0xa4,0xfe,0x20,0x20,0x20,0x20,
-+0x1,0x0,0x1f,0x90,0x50,0x57,0x14,0x14,0x37,0x54,0xd5,0x14,0x24,0x24,0x49,0x12,0x0,0x84,0xfe,0x40,0x40,0xfc,0x44,0x40,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x2f,0x20,0x24,0x22,0x21,0x20,0x41,0x46,0x98,0x80,0x80,0x80,0xfc,0x84,0x88,0x80,0xf8,0x8,0x10,0x20,0x40,0x80,0x60,0x1e,0x4,
-+0x0,0x0,0x7f,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0x44,0x3c,0x0,0x4,0xfe,0x0,
-+0x1,0x0,0x1f,0x90,0x57,0x50,0x10,0x10,0x31,0x56,0xdb,0x12,0x22,0x22,0x43,0x2,0x0,0x84,0xfe,0x8,0xfc,0x20,0x40,0xd8,0x46,0x42,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x1f,0x29,0x29,0x69,0xaf,0x28,0x28,0x2f,0x29,0x39,0x29,0x2f,0x28,0x20,0x20,0x10,0x14,0xfe,0x44,0x28,0x10,0xfe,0x10,0x10,0xfe,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x28,0x28,0x2a,0x2f,0x28,0x28,0x29,0x4e,0x48,0x80,0x8,0xfc,0x8,0x8,0xf8,0x48,0x40,0x40,0x4c,0x70,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x3f,0x21,0x3f,0x20,0x7f,0xa1,0x3f,0x21,0x7f,0x0,0x3f,0x0,0x0,0x1f,0x10,0x1f,0x10,0x7c,0x28,0xfe,0x10,0x7c,0x10,0x14,0xfe,0x0,0x0,0xf8,0x0,0xf0,0x10,0xf0,
-+0x12,0x1f,0x28,0x45,0x80,0x3f,0x20,0x3f,0x20,0x3f,0x32,0x52,0x5f,0x52,0x92,0x10,0x44,0x7e,0xa0,0x10,0x80,0xf8,0x8,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x34,0x8,
-+0x10,0x10,0x17,0x24,0x24,0x67,0xa4,0x24,0x27,0x26,0x2a,0x2b,0x2a,0x32,0x22,0x22,0x80,0x44,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0xc,
-+0x0,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x80,0x80,0x80,0x80,0x84,0xfe,0x0,0x0,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0xf8,0x13,0x52,0x52,0x53,0x52,0x52,0x7b,0xa,0xa,0x3b,0xce,0xa,0x2a,0x12,0x40,0x28,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0xc,
-+0x4,0xfe,0x28,0xfe,0xaa,0xaa,0xfe,0x0,0x7c,0x0,0xfe,0x10,0x58,0x55,0x92,0x34,0x8,0xfc,0x88,0x88,0x88,0xd8,0xd8,0xa8,0xa8,0xd8,0xd8,0x88,0x8a,0xa,0x6,0x0,
-+0x40,0x3f,0x10,0x7,0x84,0x64,0x27,0x8,0x13,0x20,0xef,0x20,0x22,0x24,0x29,0x20,0x4,0xfe,0xa0,0xfc,0xa4,0xa4,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x50,0x4c,0x44,0x80,
-+0x4,0xfe,0x28,0xfe,0xaa,0xaa,0xfe,0x0,0x7c,0x0,0xfe,0x10,0x59,0x55,0x92,0x30,0x4,0xf8,0x80,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0x24,0x52,0x78,0x0,
-+0x0,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x0,0x1f,0x0,0xff,0x1,0x11,0x21,0x45,0x2,0x8,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0xf0,0x4,0xfe,0x0,0x20,0x18,0x8,0x0,
-+0x22,0x22,0x2a,0x27,0xf2,0x2f,0x2a,0x2a,0x3a,0xef,0x2e,0x2a,0x2a,0x29,0xa8,0x40,0x10,0x10,0x90,0x24,0x3e,0xc4,0xa4,0xa4,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0x46,0x84,
-+0x8,0x49,0x2a,0x7f,0x49,0x5d,0x6b,0x49,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x20,0x20,0x7e,0xc4,0x28,0x10,0x2e,0x44,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x12,0x11,0x10,0x13,0xfd,0x11,0x15,0x19,0x37,0xd1,0x11,0x11,0x11,0x11,0x52,0x24,0x8,0x18,0xa0,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x13,0x54,0x5e,0x51,0x55,0xff,0x11,0x55,0x55,0x55,0x95,0x8,0x10,0x20,0x43,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x50,0x8c,0x4,
-+0x0,0x4,0x8,0x1f,0x24,0xc4,0x9,0x30,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x40,0x40,0x20,0xd0,0x4e,0x44,0x40,0x90,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x2,0x7f,0x42,0x42,0x42,0x42,0x42,0x7e,0x42,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x8,0xfc,0x4b,0x4a,0x7b,0x4a,0x4b,0x78,0x4f,0x48,0x5c,0xe9,0x48,0x8,0x8,0x8,0x40,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x0,0xfe,0x80,0x80,0xf8,0x8,0x8,0x50,0x20,
-+0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xff,0x0,0x2,0x6,0x8,0x10,0x30,0xc0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x17,0x10,0x10,0x12,0xfd,0x11,0x11,0x10,0x1f,0x10,0x1c,0xe0,0x40,0x0,0x0,0x8,0xfc,0x40,0x40,0x48,0x48,0x50,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x1,0x11,0x9,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x10,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x20,0x17,0x80,0x4a,0x11,0x20,0xef,0x20,0x20,0x20,0x20,0x20,0x40,0x44,0xfe,0x40,0x8,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x7f,0x1,0x11,0x11,0x9,0x9,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x8,0xfc,0x0,0x10,0x10,0x20,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0xb,0x10,0x10,0x37,0x50,0x90,0x13,0x10,0x7,0x4,0x4,0x4,0x4,0x8,0x30,0x30,0xc0,0x40,0x48,0xfc,0x40,0x50,0xf8,0x20,0xf0,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x42,0x25,0x28,0xfe,0x24,0x24,0x24,0x24,0xff,0x24,0x24,0x25,0x25,0x45,0x85,0x4,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x8,0x28,0xca,0xa,0x6,
-+0x0,0x47,0x30,0x10,0x4,0x3,0xf1,0x10,0x1f,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0xfc,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x3f,0x20,0x20,0x3f,0x22,0x21,0x2f,0x22,0x22,0x3f,0x22,0x22,0x42,0x84,0x8,0x8,0xfc,0x8,0x8,0xf8,0x20,0x48,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x12,0x13,0x12,0x12,0x1e,0xe2,0x42,0x4,0x8,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x84,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x42,0x32,0x14,0x87,0x60,0x20,0x9,0x11,0x23,0xe2,0x24,0x28,0x20,0x21,0x26,0x40,0x50,0x48,0x40,0xfe,0x80,0x80,0xf8,0x8,0x10,0x90,0xa0,0x40,0xb0,0xe,0x4,
-+0x8,0x9,0x8,0x7f,0x49,0x4a,0x48,0x7e,0x42,0x54,0x54,0x48,0x54,0x52,0xa2,0x1,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x20,0x50,0x8c,0x4,
-+0x20,0x1b,0x4a,0x22,0x3,0x12,0x22,0x64,0x28,0x22,0xff,0x8,0x4,0x3,0xc,0x30,0x20,0xfe,0x22,0x24,0xf8,0x88,0x50,0x20,0x50,0x8c,0xfe,0x20,0x40,0x80,0x60,0x10,
-+0x0,0x8,0xfc,0x13,0x12,0x22,0x22,0x7b,0xaa,0x2a,0x2a,0x2a,0x3c,0x24,0x8,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x84,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x10,0x23,0x7a,0x4a,0x4b,0x4a,0x7a,0x4b,0x48,0x48,0x49,0x79,0x42,0x4,0x8,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x88,0xf8,0x80,0xd0,0x54,0x7c,0x42,0x42,0x3e,
-+0x0,0x40,0x33,0x12,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x54,0x39,0x11,0xff,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x4,0x7f,0x21,0x11,0x12,0xff,0x1,0x3f,0x21,0x21,0x21,0x21,0x3f,0x21,0x0,0x4,0x4,0x84,0x24,0x24,0x24,0xe4,0x24,0xa4,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x8,0x8,0x8,0xa,0x7f,0x8,0xa,0xc,0x18,0x68,0x8,0x8,0x8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x50,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x1c,0x23,0x20,0x7d,0x91,0x11,0x7d,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x28,0x24,0xfe,0x20,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x34,0x28,
-+0x4,0x4,0x4,0x8,0x8,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x80,0x80,0x80,0xa0,0x98,0x8c,0x84,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x4,0x4,0x7f,0x4,0x5,0x1,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x11,0x11,0x11,0x40,0x48,0xfc,0x40,0x50,0x8,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x8,0x8,0xff,0x8,0x1f,0x21,0x7f,0x81,0x1f,0x11,0x1f,0x11,0x1f,0x11,0x11,0x11,0x20,0x24,0xfe,0x20,0xfc,0x44,0xfc,0x4,0xf4,0x14,0xf4,0x14,0xf4,0x14,0x34,0xc,
-+0x4,0x4,0xff,0x4,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0xff,0x4,0x40,0x2f,0x0,0x87,0x54,0x17,0x24,0xe7,0x24,0x24,0x24,0x24,0x40,0x44,0xfe,0x50,0x48,0xfe,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x20,0x20,0x20,0x2f,0xf8,0x27,0x24,0x24,0x27,0x24,0x3c,0xe7,0x44,0x4,0x4,0x4,0x40,0x50,0x48,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x40,0x40,0x40,0x60,0x58,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x4f,0x49,0x4f,0x49,0x4f,0x49,0x49,0x40,0x7f,0x40,0x4,0xfe,0x4,0x44,0xf4,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0x64,0x4,0xfc,0x4,
-+0x8,0x4,0x7f,0x4,0x24,0x14,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x20,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,
-+0x0,0x40,0x30,0x1f,0x80,0x67,0x24,0x4,0x17,0x24,0xe4,0x27,0x24,0x24,0x24,0x24,0x40,0x50,0x48,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x1,0x40,0x27,0x20,0x2,0x1,0xef,0x20,0x23,0x22,0x22,0x23,0x2a,0x32,0x23,0x2,0x10,0xa0,0xfc,0xa0,0xa8,0xb0,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x3,0xa,0x7f,0x4a,0x4b,0x49,0x7b,0x49,0x4f,0x49,0x4a,0x7d,0x48,0x1,0x2,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x10,0xf8,0x10,0xfe,0x10,0x48,0x56,0xe0,0x58,0x48,0xc0,
-+0x3,0x42,0x33,0x12,0x83,0x61,0x27,0x1,0x1f,0x21,0xe2,0x25,0x28,0x21,0x22,0x20,0xf8,0x8,0xf8,0x8,0xf8,0x10,0xfc,0x10,0xfe,0x10,0x48,0x56,0xe0,0x58,0x48,0xc0,
-+0x22,0x22,0x22,0x7f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x0,0x24,0x22,0x41,0x82,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0xc4,0x44,0x44,0x84,0x14,0x8,
-+0x22,0x22,0x22,0x7f,0x22,0x3e,0x23,0x3e,0x22,0x22,0xff,0x0,0x24,0x22,0x41,0x82,0x40,0x40,0x40,0x7c,0x44,0x88,0x20,0x20,0x20,0x20,0xd0,0x50,0x50,0x88,0xe,0x4,
-+0x20,0x20,0x2f,0x20,0xf8,0x27,0x64,0x74,0xac,0x24,0x24,0x25,0x26,0x24,0x27,0x24,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0x1c,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x0,0x3f,0x22,0x23,0x22,0x22,0x3f,0x22,0x2b,0x2a,0x32,0x42,0x8a,0x4,0x20,0x28,0x24,0xfe,0x20,0xa0,0x24,0xa4,0xe8,0x28,0x10,0x90,0x30,0x4a,0x8a,0x6,
-+0x1,0x7f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0xff,0x4,0x8,0x6,0x1,0x6,0x18,0x8,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x2,0x2,0x2,0x2,0x2,0x2,0x3,0xfe,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0xfc,0x0,
-+0x0,0x8f,0x60,0x27,0x0,0x1f,0x0,0x17,0x20,0xe1,0x3f,0x22,0x26,0x21,0x22,0xc,0x88,0xfc,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0x4,0xfe,0x20,0x20,0xc0,0x30,0x8,
-+0x0,0x40,0x37,0x11,0x81,0x62,0x24,0x1,0x12,0x2c,0xe2,0x21,0x22,0x24,0x21,0x20,0x40,0x48,0xfc,0x50,0x4c,0x44,0xa0,0x10,0x4e,0x44,0x48,0x50,0x4c,0x44,0x40,0x80,
-+0x20,0x10,0x40,0x20,0xf,0x10,0x60,0x20,0x21,0xff,0x5,0x5,0x9,0x11,0x61,0x1,0x80,0x80,0x88,0xfc,0x80,0x88,0x88,0x78,0x4,0xfe,0x40,0x20,0x10,0x1c,0x8,0x0,
-+0x44,0x34,0x14,0x4,0x85,0x5f,0x44,0x4,0x14,0x24,0xe5,0x26,0x24,0x20,0x21,0x22,0x0,0x4,0xfe,0x24,0x24,0xa4,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0x14,0x8,
-+0x8,0x8,0x3f,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x0,0x8,0x18,0x20,0x20,0x20,0xf8,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0,0x20,0x18,0x8,
-+0x11,0x11,0x13,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x17,0x10,0x11,0x13,0x14,0x8,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x8,0x6,0x2,
-+0x1,0x1,0x3f,0x2,0x4,0x8,0xff,0x0,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x10,0xf8,0x80,0x60,0x24,0xfe,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x50,0x20,
-+0x10,0x10,0x10,0x17,0x50,0x5c,0x53,0x52,0x51,0x51,0x50,0x5c,0xe0,0x41,0x6,0x18,0x40,0x40,0x48,0xfc,0x40,0x40,0xf8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x4,0x7e,0x55,0x54,0x54,0x54,0x7f,0x54,0x54,0x54,0x55,0x7c,0x44,0x0,0x3,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,
-+0x10,0x10,0x13,0x54,0x54,0x55,0x57,0x54,0x55,0x55,0x55,0x55,0x7d,0x45,0x0,0x0,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x0,0x78,0x4f,0x49,0x48,0x78,0x48,0x49,0x4e,0x79,0x49,0x49,0x49,0x4a,0x8c,0x18,0x80,0x48,0xfc,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x2,0x1,0x7f,0x8,0x4,0x2,0x1,0x6,0x18,0x20,0xc8,0x8,0x8,0x8,0x10,0x20,0x0,0x8,0xfc,0x20,0x40,0x80,0x0,0xc0,0x30,0x2e,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x20,0x10,0x10,0xff,0x22,0x21,0x3c,0x24,0x24,0x24,0x24,0x27,0x24,0x34,0x49,0x82,0x80,0x84,0xfe,0x0,0x88,0xfc,0x88,0xf8,0x88,0xf8,0x88,0xfe,0x0,0x88,0x86,0x2,
-+0x20,0x10,0x11,0xfd,0x5,0x9,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x12,0x14,0x10,0x0,0xc,0xf0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x8,0x8,0xfe,0x2,0x4,0x8,0x1c,0x2a,0x48,0x88,0x8,0x8,0x8,0x8,0x8,0x0,0xf8,0x88,0x88,0x90,0x90,0xa0,0x90,0x88,0x84,0x84,0xc4,0xa8,0x90,0x80,0x80,
-+0x8,0xfc,0xb,0x48,0x48,0x49,0x4f,0x48,0x7d,0x5,0x5,0x1d,0xe5,0x45,0x14,0x8,0x40,0x48,0xfc,0x40,0xb0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x8,0x8,0x8,0x7e,0x8,0x8,0xfe,0x8,0x28,0x2e,0x28,0x28,0x28,0x58,0x8f,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x88,0x80,0x84,0x84,0x7c,0x0,0x6,0xfc,0x0,
-+0x1,0x21,0x21,0x21,0x3f,0x0,0x7f,0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0x8,0x8,0x8,0xf8,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x2,0x2,0xfe,
-+0x8,0x8,0x10,0x1f,0x20,0x40,0x9f,0x0,0x1,0x6,0x8,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x8,0xfc,0x0,0x0,0xe0,0x40,0x80,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,
-+0x1,0x1,0x2,0x4,0x9,0x11,0x21,0xc9,0x9,0x9,0x9,0x9,0x9,0x9,0xff,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x24,0xf0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x1,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x1f,0x18,0x28,0x28,0x48,0x8f,0x8,0x0,0x84,0xfe,0x4,0x4,0x4,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xa,0x7f,0x8,0x3e,0x8,0x7f,0x8,0x9,0x1,0xff,0x1,0x2,0x4,0x18,0x60,0x0,0x4,0x7e,0x24,0x24,0x24,0x44,0x54,0x88,0x0,0xfe,0x0,0x80,0x60,0x1c,0x8,
-+0x1,0x9,0xfd,0x11,0x11,0x21,0x27,0x79,0xa9,0x29,0x29,0x29,0x29,0x38,0x20,0x1,0x0,0x4,0x7e,0x24,0x24,0xe4,0x24,0x24,0x24,0x24,0x64,0xa4,0x24,0x44,0x94,0x8,
-+0x3e,0x22,0x22,0x22,0x3e,0x1,0x1,0xff,0x2,0xc,0x30,0xfe,0x22,0x22,0x22,0x3e,0xf8,0x88,0x88,0x88,0xf8,0x20,0x14,0xfe,0x80,0x60,0x18,0xfe,0x88,0x88,0x88,0xf8,
-+0x10,0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0xf0,0x0,0xe0,0x20,0x20,0x20,0x20,0x20,0x22,0x12,0xa,0x4,
-+0x1,0x41,0x31,0x12,0x4,0x1,0xf0,0x10,0x11,0x12,0x12,0x12,0x11,0x10,0x28,0x47,0x0,0x8,0xfc,0x0,0x0,0xf8,0x10,0x60,0x80,0x0,0x4,0x4,0xfc,0x0,0x6,0xfc,
-+0x2,0x1,0x7f,0x2,0x4,0x8,0x1f,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x30,0x0,0x0,0x8,0xfc,0x0,0x40,0x20,0xf0,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x42,0x33,0x14,0x87,0x68,0x27,0x0,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x0,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0xa,0xa,0x6,
-+0x0,0x40,0x30,0x17,0x0,0x82,0x42,0x4a,0x12,0x21,0xe1,0x21,0x21,0x20,0x2f,0x20,0x80,0x40,0x48,0xfc,0x0,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x20,0x44,0xfe,0x0,
-+0x1,0x41,0x21,0x22,0x2,0x4,0xeb,0x20,0x20,0x20,0x20,0x21,0x2a,0x32,0x21,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x11,0x12,0xfc,0x10,0x17,0x1a,0x32,0xd2,0x13,0x12,0x12,0x12,0x53,0x22,0x80,0x80,0xfc,0x8,0x10,0xa4,0x1e,0x4,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x10,0x59,0x56,0x54,0x9b,0x10,0x10,0x13,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x10,0x81,0x62,0x2c,0x3,0x10,0x20,0xe3,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x3f,0x2,0x4,0x8,0x7f,0x49,0x89,0x1f,0x21,0x1,0x7f,0x1,0x1,0x1,0x0,0x10,0xf8,0x80,0x60,0x20,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x14,0x1f,0x30,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x10,0x38,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x11,0x1c,0x20,0x40,0xbc,0x13,0x10,0xfc,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x1c,0x20,0x40,0xbd,0x12,0x10,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x3f,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x20,0xf0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x40,0x33,0x10,0x0,0x0,0xf7,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x10,0x38,0xc0,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x6,0xfc,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x2,0x4,0x8,0x30,0xcf,0x0,0x12,0x9,0x9,0x0,0x3f,0x40,0x48,0x7c,0xa0,0x10,0x80,0x40,0x30,0x4e,0xe4,0x0,0x10,0x10,0x20,0x40,0xf8,
-+0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x42,0x21,0x2f,0x1,0x7,0xe1,0x21,0x3f,0x21,0x21,0x27,0x29,0x33,0x25,0x9,0x1,0x10,0x20,0xfc,0x20,0xf8,0x28,0x28,0xfe,0x28,0x28,0xf8,0x20,0x30,0x2e,0x24,0x20,
-+0x10,0x14,0xfe,0x10,0x10,0x7d,0x46,0x7c,0x44,0x7c,0x10,0x14,0xfe,0x10,0x10,0x10,0x40,0x40,0x44,0x7e,0x80,0x0,0xf8,0x10,0x20,0x40,0x40,0x80,0x82,0x82,0x7e,0x0,
-+0x1,0x7f,0x49,0x6b,0x5d,0x49,0x7f,0x8,0x7f,0x8,0x7f,0x0,0x55,0x55,0x94,0x0,0x10,0x90,0x28,0x28,0x44,0x86,0x20,0x10,0x0,0x7c,0x4,0x4,0x8,0x8,0x90,0x0,
-+0x10,0x10,0x10,0x3c,0x43,0x80,0x3c,0x10,0x13,0xfc,0x10,0x10,0x14,0x18,0x11,0x0,0x40,0x50,0x48,0x7c,0xc0,0x40,0x44,0x7e,0xc0,0x44,0x4c,0x30,0x20,0x52,0x8a,0x6,
-+0x10,0x10,0x10,0x1c,0x23,0x40,0xbc,0x10,0x10,0xfc,0x10,0x10,0x14,0x18,0x10,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x10,0xc,0x4,0xff,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x2a,0x24,0x10,0x30,0x44,0xfe,0x0,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x8,0x28,0x10,
-+0x42,0x22,0x2f,0x82,0x62,0x2f,0x2,0x15,0x28,0xe7,0x24,0x24,0x27,0x24,0x24,0x27,0x10,0x10,0xbc,0x10,0x10,0xfe,0x10,0x28,0xc6,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x0,0x43,0x32,0x13,0x0,0xf,0xf0,0x13,0x12,0x13,0x12,0x13,0x12,0x13,0x2a,0x47,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x8,0xf8,0x6,0xfc,
-+0x40,0x30,0x10,0x0,0x87,0x60,0x20,0x8,0x17,0x20,0xe0,0x20,0x20,0x23,0x2c,0x20,0x80,0xa0,0x90,0xfc,0x80,0x80,0x88,0xfc,0x80,0x90,0xa0,0x40,0xc0,0x24,0x14,0xc,
-+0x40,0x21,0x29,0x5,0x0,0xef,0x24,0x25,0x25,0x25,0x25,0x2d,0x35,0x25,0xa,0x11,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x0,0xfc,0x4,0xfc,0x0,0xfe,
-+0x10,0xfe,0x20,0x28,0x7e,0x8,0xf,0xf9,0x4a,0x9,0x1,0x3f,0x1,0x1,0xff,0x0,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x10,0x10,0x10,0x0,0xf8,0x0,0x4,0xfe,0x0,
-+0x1,0x21,0x21,0x3f,0x22,0x22,0xff,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x21,0x0,0x8,0x8,0xf8,0x28,0x20,0x7c,0x44,0xa8,0x20,0x20,0x20,0x50,0x48,0x8e,0x4,
-+0x8,0x8,0x8,0x1f,0x10,0x21,0x41,0x81,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0xfc,0x4,0x8,0x10,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x22,0x14,0xff,0x14,0x7f,0x15,0x15,0xff,0x15,0x15,0x7f,0x14,0x36,0x55,0x94,0x15,0x20,0x20,0xa0,0x3e,0x42,0x94,0x10,0xd0,0x10,0x10,0x28,0x28,0x48,0x4c,0x86,0x4,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x0,0x8,0x7c,0x48,0x49,0x4a,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x8,0x7c,0x4b,0x4a,0x4c,0x79,0x4a,0x4c,0x48,0x7b,0x48,0x48,0x48,0x48,0x4f,0x98,0x80,0x40,0xfe,0x2,0x4,0x10,0x8,0x4,0x0,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x2,0x2,0x2,0x4,0x8,0x10,0x60,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,
-+0x20,0x20,0x27,0x20,0xfa,0x21,0x2f,0x20,0x23,0x22,0x3a,0xe2,0x42,0x2,0x3,0x2,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x8,0xfc,0x8,0xe8,0xa8,0xe8,0x8,0xf8,0x8,
-+0x8,0x7f,0x9,0x1,0x7f,0x9,0x5,0xff,0x0,0x1f,0x10,0x17,0x14,0x17,0x10,0x1f,0x28,0xfc,0x20,0x8,0xfc,0x20,0x44,0xfe,0x10,0xf8,0x10,0xd0,0x50,0xd0,0x10,0xf0,
-+0x8,0xfd,0x9,0x9,0x9,0x79,0x48,0x43,0x42,0x7a,0xb,0xa,0x8,0x88,0x53,0x20,0x4,0xfe,0x4,0x4,0xfc,0x24,0x20,0xfe,0x22,0x22,0xfe,0x22,0x20,0x24,0xfe,0x2,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x13,0x10,0x11,0x10,0xff,0x10,0x30,0x38,0x57,0x51,0x97,0x11,0x1f,0x11,0x11,0x11,0xf8,0x40,0xf0,0x40,0xf8,0x42,0x7e,0x0,0xbc,0x10,0xbc,0x10,0xbe,0x10,0x52,0x8e,
-+0x20,0x27,0x39,0x41,0x41,0xff,0x21,0x23,0xfb,0x25,0x29,0x21,0x29,0x31,0x21,0x1,0xd0,0x10,0x10,0x52,0x34,0xd8,0x10,0x10,0x90,0x50,0x28,0x28,0x44,0x44,0x82,0x0,
-+0x10,0x9,0xff,0x0,0x3e,0x22,0x3e,0x0,0x7f,0x41,0x5d,0x55,0x5d,0x41,0x45,0x42,0x10,0x10,0x94,0x1e,0x10,0x10,0xfc,0x4,0x44,0x44,0x28,0x28,0x10,0x28,0x4e,0x84,
-+0x10,0x12,0x11,0x11,0x58,0x57,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x12,0x12,0x12,0x40,0x44,0x48,0x50,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x10,0x13,0x10,0x10,0xfc,0x17,0x31,0x39,0x56,0x55,0x99,0x11,0x11,0x12,0x14,0x10,0x38,0xc0,0x40,0x40,0x84,0xfe,0x20,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x9,0x7d,0x49,0x4b,0x4d,0x79,0x49,0x49,0x49,0x79,0x49,0x49,0x49,0x7a,0x42,0x4,0x40,0x28,0xfc,0x20,0x20,0xf8,0x20,0x20,0xf8,0x20,0x28,0xfc,0x0,0xa8,0xa6,0x2,
-+0x0,0x1f,0x2,0x2,0xff,0x4,0x4,0x8,0x34,0xc4,0x4,0x4,0x8,0x8,0x10,0x0,0xf0,0x0,0x0,0x4,0xfe,0x40,0x20,0x50,0x4e,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x8,0xb,0x8,0x10,0x10,0x3f,0x51,0x91,0x12,0x15,0x19,0x11,0x11,0x12,0x14,0x10,0x38,0xc0,0x40,0x40,0x84,0xfe,0x20,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0xb,0xfc,0x10,0x10,0x10,0x10,0x11,0x10,0x10,0x1e,0xf0,0x40,0x0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x80,0x84,0xfe,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x44,0x45,0xfe,0x44,0x7c,0x11,0x7d,0x55,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x13,0x10,0x11,0x10,0xff,0x10,0x14,0x18,0x37,0xd1,0x17,0x11,0x1f,0x11,0x51,0x21,0xf8,0x40,0xf0,0x40,0xf8,0x42,0x7e,0x0,0xbc,0x10,0xbc,0x10,0xbe,0x10,0x52,0x8e,
-+0x20,0x21,0xfe,0x28,0x11,0x2a,0xc6,0x0,0xfd,0x2a,0x28,0x29,0x28,0x28,0x47,0x80,0x4,0xde,0x44,0x44,0x54,0xcc,0x44,0xcc,0x54,0x64,0x44,0x54,0x88,0x2,0xfe,0x0,
-+0x10,0x11,0x10,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x45,0x1,0x1,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8,
-+0x8,0x9,0x8,0x10,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8,
-+0x2,0x1,0x7f,0x44,0x88,0x10,0x3,0x7e,0x8,0x9,0x8,0x8,0xe,0x78,0x20,0x0,0x0,0x0,0xfe,0x42,0x34,0x10,0xfc,0x80,0x88,0xfc,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x10,0x10,0x11,0x10,0x14,0x1e,0xf0,0x10,0x10,0x12,0x14,0x18,0x10,0x1,0x2,0xc,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x14,0x12,0xff,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x4a,0x84,0x40,0x44,0xfe,0x40,0x40,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,
-+0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xff,0x0,0x20,0xf0,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x90,0x17,0x10,0x10,0x10,0x11,0x12,0x17,0x10,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x80,0x80,0x10,0x8,0xfc,0x4,
-+0x2,0x1,0x7f,0x44,0x88,0x10,0x0,0x11,0x14,0xfe,0x10,0x10,0x14,0x18,0x11,0x2,0x0,0x0,0xfe,0x42,0x34,0x10,0x4,0xfe,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x10,0x10,0x10,0x1c,0x20,0x21,0x7e,0x90,0x10,0xfc,0x10,0x12,0x14,0x18,0x11,0x2,0x40,0x40,0x40,0x7c,0x84,0x8,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,0x0,
-+0x8,0xb,0x8,0x13,0x10,0x33,0x50,0x97,0x14,0x19,0x11,0x10,0x10,0x10,0x11,0x16,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x2,0xf4,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x2,0x1,0x7f,0x8,0x4,0x2,0xff,0x1,0x1,0x7f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x8,0xfc,0x20,0x40,0x84,0xfe,0x0,0x8,0xfc,0x0,0x20,0x18,0xc,0x4,0x0,
-+0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x37,0xc1,0x1f,0x1,0x5,0x9,0x31,0x1,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0xe0,0x1e,0x24,0xf0,0x0,0x60,0x18,0x8,0x0,
-+0x4,0x7e,0x8,0x3e,0x8,0x7e,0x1,0x2,0xc,0x32,0xc1,0xf,0x0,0x0,0x0,0x1,0x8,0xfc,0x20,0xf8,0x20,0xfc,0x0,0x80,0x60,0x1e,0x4,0xe0,0x20,0x40,0x80,0x0,
-+0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x49,0x7f,0x8,0x7f,0x8,0x3e,0x8,0xff,0x1,0x20,0xa0,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8,
-+0x8,0x8,0xff,0x8,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x20,0x20,0xfe,0x20,0x18,0xe0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x11,0x12,0xfd,0x10,0x12,0x1a,0x33,0xd0,0x17,0x14,0x14,0x15,0x54,0x24,0x40,0xa0,0x10,0x48,0xf6,0xa4,0x48,0xa8,0xf8,0x44,0xfe,0x84,0xa4,0xf4,0x4,0xc,
-+0x1,0x2,0x6,0x8,0x3f,0xc4,0x13,0x14,0x1f,0x1,0x3f,0x22,0x24,0x2f,0x20,0x20,0x0,0x80,0x40,0x30,0xfe,0x44,0x90,0x50,0xf0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x18,
-+0x1,0x7f,0x40,0x97,0x10,0x97,0x50,0x57,0x10,0x37,0x58,0x93,0x11,0x10,0x11,0x16,0x0,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xf0,0x20,0xc0,0x20,0x1c,
-+0x20,0x18,0x8,0x80,0x61,0x21,0x1,0x15,0x25,0x25,0xe9,0x29,0x21,0x21,0x20,0x20,0x0,0x80,0x40,0x60,0x20,0x20,0x0,0x8,0x4,0x6,0x2,0x8,0x8,0x8,0xf8,0x0,
-+0x1,0x1,0x7f,0x1,0x3f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x10,0x11,0x14,0xfe,0x20,0x28,0x4b,0x7c,0x8,0x9,0xe,0xf8,0x48,0x8,0xb,0x8,0x0,0xfc,0x8,0x10,0x38,0xcc,0x2,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0x0,0x3f,0x2,0xd,0x70,0x1f,0x2,0x2,0x7f,0x0,0x8,0xfc,0x0,0xf8,0x10,0xf8,0x10,0x90,0x10,0x90,0x70,0xd0,0x10,0x52,0xea,0x6,
-+0x10,0x13,0x10,0x28,0x29,0x69,0xaf,0x29,0x29,0x29,0x2b,0x2d,0x28,0x20,0x20,0x23,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x4c,0x86,0x2,
-+0x8,0x77,0x44,0x54,0x54,0x57,0x54,0x54,0x54,0x57,0x74,0x55,0x14,0x25,0x46,0x80,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x34,0xa8,0xa0,0x20,0x20,
-+0x0,0x40,0x37,0x10,0x83,0x60,0x2f,0x8,0x13,0x22,0xe3,0x22,0x23,0x22,0x22,0x22,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x24,0xff,0x24,0x3f,0x41,0xbd,0x25,0x3d,0x2,0x3f,0x1,0x1f,0x1,0xff,0x1,0x3,0x20,0x24,0x3e,0x44,0xa8,0x10,0x2e,0x44,0x70,0x80,0x0,0xf0,0x4,0xfe,0x0,0x0,
-+0x0,0x8,0x7f,0x48,0x4b,0x48,0x4f,0x78,0x4b,0x4a,0x4b,0x4a,0x7b,0x4a,0x2,0x2,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x10,0x1f,0x10,0x2f,0x40,0xbf,0x4,0x3f,0x4,0x3f,0x4,0x7f,0x0,0x9,0x6,0x2,0x8,0xfc,0x0,0xf8,0x10,0xf8,0x10,0x90,0x10,0x90,0x10,0xd0,0x90,0x12,0xa,0x6,
-+0x10,0x17,0x10,0x13,0x58,0x57,0x50,0x93,0x12,0x13,0x12,0x13,0x12,0x12,0x12,0x12,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x4f,0x40,0x40,0x53,0x7a,0x42,0x42,0x42,0x4a,0x52,0x62,0x40,0x1,0x2,0xc,0x4,0xfe,0x40,0x88,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x88,0xa0,0x18,0xc,0x4,
-+0x0,0x47,0x20,0x23,0x0,0xef,0x20,0x23,0x22,0x23,0x22,0x23,0x2a,0x32,0x22,0x2,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x1,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x21,0x21,0x22,0x22,0x44,0x88,0x30,0x0,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0xe,0x4,
-+0x0,0x10,0xf8,0x27,0x20,0x23,0xfa,0x22,0x22,0x23,0x20,0x39,0xe3,0x44,0x1,0x0,0x80,0x40,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x2,0x1,0x7f,0x40,0x84,0xc,0x12,0x2,0x3f,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x0,0x0,0xfe,0x2,0x44,0x30,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x8,0x1c,0xf0,0x10,0x11,0xfd,0x11,0x32,0x38,0x54,0x50,0x91,0x11,0x12,0x14,0x18,0x40,0x40,0x40,0x40,0x44,0x4c,0x50,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x0,
-+0x0,0x0,0x1,0xe,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0x8,0x8,0xff,0x0,0x20,0x70,0x80,0x0,0x0,0x0,0x10,0xf8,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x2,0x6,0x38,0x20,0x20,0x21,0x3f,0x22,0x22,0x22,0x22,0x22,0x3f,0xe0,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40,
-+0x0,0x8,0xfc,0x13,0x10,0x12,0x7d,0x11,0x10,0x10,0x11,0x1e,0xe4,0x0,0x1,0x0,0x40,0x50,0x48,0xfe,0x40,0x44,0x4c,0x50,0x60,0xd0,0x50,0x4e,0x44,0x40,0x40,0x80,
-+0x1,0x1,0x1,0x7f,0x1,0x21,0x19,0x9,0x3,0x5,0x9,0x11,0x61,0x1,0x5,0x2,0x0,0x40,0x28,0xfc,0x0,0x8,0x18,0xa0,0x40,0x40,0x30,0xe,0x4,0x0,0x0,0x0,
-+0x0,0x7f,0x40,0x41,0x41,0x41,0x41,0x42,0x42,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x84,0x84,0x44,0x24,0x3c,0x14,0x4,0xfc,0x4,
-+0x10,0xc,0x4,0xff,0x4,0x4,0x3f,0x24,0x24,0x38,0x20,0x2f,0x20,0x20,0x3f,0x20,0x10,0x30,0x44,0xfe,0x40,0x48,0xfc,0x48,0x48,0x38,0x8,0xe8,0x8,0x8,0xf8,0x8,
-+0x40,0x37,0x14,0x4,0x84,0x44,0x54,0x14,0x14,0x24,0xe4,0x25,0x26,0x24,0x27,0x24,0x4,0xfe,0x4,0x44,0x44,0x44,0x44,0xa4,0xa4,0xa4,0x94,0x1c,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x8,0x7e,0x9,0x8,0xff,0x8,0x28,0x2e,0x28,0x28,0x29,0x58,0x88,0x7,0x40,0x40,0x78,0x88,0x10,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x0,0x6,0xfc,
-+0x0,0x3f,0x20,0x28,0x24,0x22,0x21,0x20,0x21,0x22,0x24,0x28,0x20,0x20,0x3f,0x0,0x8,0xfc,0x0,0x8,0x18,0x20,0x40,0x80,0x40,0x30,0x18,0x8,0x0,0x4,0xfe,0x0,
-+0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xf5,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x4,0x4,0x4,0x4,0x7f,0x44,0x44,0x44,0x44,0x7f,0x44,0x44,0x44,0x44,0x7f,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x8,0x11,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x45,0xfd,0x15,0x25,0x45,0x85,0x15,0x8,0x4,0xfe,0x0,0x44,0x44,0x28,0x28,0x10,0x10,0x28,0x28,0x44,0x84,0x0,0xfe,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x28,0x28,0x28,0x2f,0x20,0x30,0x50,0x50,0x9f,0x10,0x4,0xfe,0x4,0x4,0xfc,0x80,0x88,0x88,0x88,0xf8,0x80,0x84,0x84,0x84,0xfc,0x4,
-+0x8,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x45,0x15,0x8,0x4,0xfe,0x0,0x44,0x44,0x28,0x28,0x10,0x10,0x28,0x28,0x44,0x84,0x0,0xfe,0x0,
-+0x23,0x12,0x43,0x22,0xa,0x13,0x62,0x23,0x20,0x0,0xff,0x5,0x9,0x11,0x61,0x1,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x0,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0,
-+0x1,0xff,0x22,0x23,0x3e,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0xe2,0x42,0x3,0x2,0x0,0x80,0x0,0xfc,0x4,0x84,0x88,0x88,0x48,0x50,0x20,0x50,0x48,0x8e,0x4,0x0,
-+0x0,0x7f,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x1,0xff,0x4,0xc,0x2,0x1,0xe,0x0,0x0,0xfc,0x44,0x48,0x28,0x10,0x2e,0x44,0x0,0xfe,0x20,0x20,0x40,0x80,0x70,
-+0x10,0x13,0x10,0x5d,0x51,0x51,0xfd,0x0,0x55,0x55,0x55,0x6d,0x45,0x7d,0x45,0x1,0xc,0xf0,0x24,0xfe,0x24,0x24,0xfc,0x20,0xfc,0x24,0x24,0x54,0x74,0x4,0x14,0x8,
-+0x10,0x17,0x12,0x7e,0x13,0x12,0xfe,0x13,0x52,0x5e,0x52,0x57,0x70,0x50,0x8f,0x0,0x40,0xe0,0x40,0x7c,0xc4,0x54,0x54,0xd4,0x48,0x54,0x52,0xe2,0x40,0x46,0xfc,0x0,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0x10,0xf8,0x8,
-+0x0,0x7f,0x49,0x45,0x5f,0x42,0x7f,0x44,0x4f,0x74,0x45,0x44,0x43,0x40,0x7f,0x40,0x4,0xfe,0x24,0x44,0xf4,0x4,0xfc,0x44,0xe4,0x5c,0x84,0x24,0xe4,0x4,0xfc,0x4,
-+0x22,0x22,0xff,0x22,0x77,0x55,0x77,0x24,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x3f,0x20,0x4,0xfe,0x90,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x46,0x82,
-+0x10,0x10,0x13,0x10,0xfe,0x12,0x31,0x39,0x55,0x50,0x90,0x10,0x11,0x12,0x14,0x10,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4,0x0,
-+0x4,0xfe,0x2b,0x28,0xfe,0xaa,0xaa,0xab,0xc6,0x82,0xfe,0x82,0x82,0xfe,0x83,0x0,0x88,0x88,0xfe,0x88,0x20,0x50,0x8e,0x4,0xf8,0x20,0x20,0xf8,0x20,0x24,0xfe,0x0,
-+0x2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x1,0x7d,0x5,0x9,0x11,0x21,0xc5,0x2,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0x8c,0x50,0x20,0x10,0xe,0x4,0x0,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc1,0x1,0x1,0xf,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x80,0x40,0x20,0x50,0xee,0x4,0x0,0x40,0xe0,0x0,0x0,0x8,0xfc,0x0,
-+0x0,0x0,0x1f,0x10,0x90,0x51,0x52,0x1d,0x30,0x50,0xd3,0x10,0x20,0x20,0x4f,0x0,0x80,0x44,0xfe,0x40,0xa0,0x10,0xe,0xf4,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x1,0x9,0x5,0x7f,0x2,0xff,0x4,0x9,0x1f,0x21,0xcf,0x1,0x3f,0x1,0x5,0x2,0x0,0x20,0x48,0xfc,0x0,0xfe,0x40,0xe0,0x10,0xe,0xe4,0x0,0xf8,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x40,0x30,0x10,0x4,0xfe,0x0,0x0,0x80,0x80,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x1,0x9,0x5,0x7f,0x2,0xff,0x4,0x8,0x1f,0x22,0xc2,0x4,0x4,0x8,0x10,0x20,0x0,0x20,0x48,0xfc,0x0,0xfe,0x40,0x20,0xf0,0x2e,0x24,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x0,0x7e,0x2,0x23,0x22,0x14,0x14,0x8,0x14,0x14,0x22,0x42,0x81,0x2,0x4,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x20,0x20,0x24,0x3e,0x51,0x90,0x14,0xfe,0x13,0x54,0x54,0x54,0x54,0x7d,0x46,0x4,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x10,0x10,0x12,0x56,0x59,0x50,0x90,0x10,0x17,0x28,0x28,0x24,0x44,0x41,0x82,0x4,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x0,0x1f,0x12,0x9f,0x52,0x52,0x12,0x15,0x38,0x57,0xd4,0x15,0x24,0x24,0x45,0x4,0x84,0xfe,0x0,0xbc,0xa4,0xa4,0xa4,0xbc,0x44,0xfe,0x44,0xb4,0x44,0xa4,0x14,0x8,
-+0x8,0x8,0xa,0x7f,0x8,0x8,0x9,0xff,0x8,0x10,0x10,0x24,0x22,0x7f,0x1,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0xc4,0x44,0x44,0x64,0x54,0x48,0x40,0x40,0x40,
-+0x24,0x24,0x24,0x7e,0x24,0x24,0xff,0x0,0x7e,0x42,0x42,0x7e,0x43,0x42,0x7e,0x42,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x14,0xfc,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x12,0xfc,0x11,0x31,0x3b,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x40,0x40,0xfe,0xa2,0xa4,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x0,0x4,0xfe,0x10,0x11,0x23,0x25,0x7d,0xa5,0x25,0x25,0x25,0x25,0x3d,0x22,0x4,0x40,0x40,0x78,0x90,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x1,0x9,0xd,0x11,0x21,0x3,0xc,0x30,0xdf,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x20,0x18,0x4c,0x84,0x0,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x0,
-+0x20,0x11,0x10,0x0,0xfb,0x8,0x10,0x35,0x58,0x95,0x11,0x12,0x14,0x10,0x10,0x10,0x4,0xfe,0x84,0x84,0xfe,0x84,0x84,0xfc,0x80,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x2,0x7f,0x22,0x22,0xff,0x22,0x22,0x7e,0x20,0x42,0xbf,0x22,0x22,0x22,0x3e,0x22,0x82,0x44,0x28,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x10,0x1e,0x22,0x33,0x4a,0xa4,0x14,0x8,0x11,0x22,0x40,0x24,0x24,0x40,0x20,0x20,0x28,0x24,0x20,0xfe,0x20,0x50,0x50,0x88,0xe,0x4,0x0,0x48,0x46,0x2,
-+0x11,0x11,0x11,0x15,0x5a,0x53,0x54,0x9a,0x11,0x12,0x20,0x28,0x44,0x42,0x82,0x4,0x10,0x18,0xd4,0x50,0x7e,0x50,0x90,0x90,0x28,0x28,0x46,0x84,0x0,0xa8,0xa4,0x4,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0xff,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x20,0x10,0x43,0x20,0x8,0x51,0x22,0x25,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x80,0x90,0xf8,0x90,0x90,0x12,0x12,0xe,0x0,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x10,0xfe,0x0,0xee,0xaa,0xee,0x28,0xfe,0x28,0x7c,0x28,0xfe,0x24,0x68,0xa5,0x32,0x8,0x1c,0xe0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0xaa,0x38,0x0,
-+0x20,0x27,0x20,0x23,0xfa,0x23,0x21,0x27,0x21,0x23,0x39,0xef,0x41,0x3,0xd,0x1,0x44,0xfe,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0xe,0x84,
-+0x10,0x17,0x10,0x13,0xfe,0x13,0x11,0x1f,0x31,0xd3,0x11,0x1f,0x11,0x13,0x55,0x21,0x44,0xfe,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0xe,0x84,
-+0x0,0xf,0x70,0x53,0x52,0x53,0x51,0x57,0x51,0x53,0x51,0x5f,0x71,0x43,0xd,0x1,0x44,0xfe,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0xe,0x84,
-+0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x12,0x14,0x18,0x17,0x0,0x40,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x20,0x20,0x38,0x4f,0x50,0x80,0x20,0x27,0x20,0x27,0x21,0x29,0x31,0x22,0xc,0x80,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x14,0x18,0x30,0xd0,0x10,0x10,0x11,0x11,0x52,0x24,0x40,0x50,0x48,0x40,0x44,0xfe,0x40,0x60,0xa0,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x20,0x20,0x47,0xf8,0x10,0x20,0x47,0xf8,0x7,0x1,0x19,0xe1,0x42,0xc,0x80,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e,
-+0x8,0x8,0x7f,0xa,0x2,0xff,0x4,0xf,0x18,0x28,0xcf,0x2,0x29,0x28,0x48,0x7,0x20,0x28,0xfc,0x20,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x0,0x88,0x84,0x14,0xf0,
-+0x8,0x8,0x8,0x7f,0x8,0xa,0x1c,0x68,0x8,0x8,0x29,0x12,0x0,0x48,0x44,0x84,0x40,0x40,0x48,0xfc,0x48,0x48,0xc8,0x48,0xa8,0x8a,0xa,0x4,0x0,0x88,0x46,0x42,
-+0x0,0x0,0x3f,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x10,0x78,0x80,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x0,0x7f,0x2,0x12,0x12,0x22,0x4,0x18,0x60,0x0,0x4,0x13,0x51,0x50,0x8f,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x50,0x20,0x0,0x0,0x0,0x14,0x12,0xf2,0x0,
-+0x10,0x10,0x15,0xfe,0x10,0x10,0x7c,0x10,0x11,0xfe,0x12,0x12,0x1a,0x14,0x10,0x13,0x0,0x4,0xfe,0x24,0x24,0xa4,0xa4,0xa4,0x24,0x24,0x24,0x44,0x44,0x84,0x94,0x8,
-+0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x10,0x0,0x18,0xe0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0,
-+0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x11,0x11,0x15,0x1a,0x12,0x4,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0x10,0x10,0x8,0x8,0x6,0x4,
-+0x0,0x7f,0x1,0x1,0x1,0x9,0x9,0x11,0x21,0x1,0x2,0x2,0x4,0x8,0x10,0x60,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x11,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x85,0x0,0x8,0x3c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x0,
-+0x10,0x10,0x23,0x20,0x44,0xf9,0x11,0x22,0x40,0xfc,0x0,0x0,0x1c,0xe1,0x42,0x4,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x84,0x4,0x28,0x10,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x14,0x18,0x30,0xd0,0x11,0x11,0x11,0x12,0x54,0x28,0x0,0x8,0xfc,0x88,0x88,0x90,0x94,0xbe,0x84,0x84,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x1f,0x21,0x21,0x61,0xa1,0x21,0x21,0x21,0x22,0x22,0x22,0x24,0x28,0x30,0x0,0x8,0xfc,0x8,0x8,0x8,0x10,0x14,0x3e,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,
-+0x0,0x0,0x0,0xff,0x0,0x8,0x8,0x8,0x7e,0x8,0x8,0x10,0x11,0x22,0x4c,0x0,0x80,0xa0,0x94,0xfe,0x80,0x80,0x88,0x88,0x90,0x60,0x40,0xc0,0x20,0x12,0xa,0x6,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x8,0xf,0x8,0xf,0x8,0x8,0x7f,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x20,0xe0,0x20,0xe0,0x28,0x3c,0xe0,0x20,0x20,0x20,
-+0x8,0x8,0xff,0x8,0x1,0x7f,0x40,0x89,0x12,0x4,0x1f,0x28,0xc8,0x8,0xf,0x8,0x20,0x24,0xfe,0x20,0x0,0xfe,0x2,0x24,0x90,0x40,0xf0,0x2e,0x24,0x20,0xe0,0x20,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x41,0x81,0x1,0x7f,0x3,0x5,0x9,0x11,0x61,0x1,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x4,0x0,0xfc,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x2,0x7f,0x0,0x3e,0x22,0x22,0x3e,0x0,0x7f,0x63,0x55,0x7f,0x49,0x49,0x49,0x43,0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x54,0x10,0x10,0x14,0xfe,0x2,
-+0x10,0x10,0x17,0x14,0x59,0x52,0x54,0x91,0x12,0x14,0x1b,0x12,0x2a,0x26,0x43,0x82,0x80,0x40,0xfe,0x2,0x14,0x48,0xa4,0x10,0xe,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x40,0x30,0x17,0x4,0x89,0x62,0x24,0x1,0x12,0x24,0xeb,0x22,0x22,0x22,0x23,0x22,0x80,0x40,0xfe,0x2,0x14,0x48,0xa4,0x10,0xe,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x1,0x7f,0x40,0x84,0x9,0x12,0x4,0x8,0x10,0x2f,0xc8,0x8,0x8,0xf,0x8,0x0,0x0,0xfe,0x2,0x44,0x30,0x90,0x40,0x20,0x10,0xee,0x24,0x20,0x20,0xe0,0x20,
-+0x10,0x10,0x20,0x27,0x44,0xf9,0x11,0x21,0x47,0xf9,0x1,0x1,0x1a,0xe2,0x45,0x0,0x20,0x30,0x28,0xfe,0x20,0x24,0x24,0x28,0xe8,0x28,0x30,0x20,0x50,0x92,0xa,0x6,
-+0x0,0x0,0x7f,0x40,0x80,0xf,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0xfe,0x2,0x44,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0x44,0x3c,0x0,
-+0x10,0x13,0x10,0x10,0xfb,0x10,0x11,0x1a,0x30,0xd7,0x10,0x11,0x11,0x12,0x54,0x20,0x0,0xf8,0x90,0x60,0xfc,0xa8,0x20,0x60,0x44,0xfe,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x0,0x1f,0x2,0x1,0x7f,0x2,0x4,0x19,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0xe0,0x40,0x80,0xfc,0x88,0x90,0x80,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x1,0x1,0x1,0x7f,0x41,0x41,0x42,0x44,0x49,0x41,0x42,0x44,0x48,0x40,0x40,0x40,0x0,0x0,0x4,0xfe,0x4,0x4,0x84,0x64,0x24,0x4,0x84,0x64,0x24,0x4,0x14,0x8,
-+0x4,0x4,0xff,0x4,0x14,0x10,0xfe,0x22,0x22,0x22,0x42,0x24,0x14,0x8,0x14,0x62,0x40,0x44,0xfe,0x40,0x40,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,
-+0x20,0x23,0x20,0x27,0xfd,0xac,0xa9,0xa8,0xaf,0xf8,0xa3,0x22,0x2a,0xfa,0x4a,0x2,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x40,0xfc,0x88,0xfc,0xa8,0xa8,0xa8,0xa8,0x18,
-+0x10,0x13,0x10,0x27,0x25,0x68,0xa1,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x24,0x24,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x44,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x0,0xfb,0x8,0x17,0x25,0x28,0x21,0x28,0x37,0xe0,0x27,0x24,0x24,0x24,0xa4,0x44,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x44,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x10,0x10,0x10,0x10,0xfe,0x22,0x22,0x22,0x22,0x42,0x24,0x14,0x8,0x14,0x22,0x40,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,
-+0x0,0x3f,0x20,0x2f,0x20,0x3f,0x29,0x28,0x4a,0x8c,0x0,0xff,0x4,0x2,0x0,0x0,0x10,0xf8,0x0,0xf0,0x0,0xfc,0x10,0xa0,0x60,0x1c,0x20,0xfe,0x20,0x20,0xa0,0x40,
-+0x2,0xf,0x70,0x29,0x2a,0x7f,0x2,0xc,0x8,0xb,0xc,0x38,0xc8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0,
-+0x20,0x18,0x8,0x80,0x60,0x2f,0x1,0x9,0x12,0x24,0xe2,0x21,0x20,0x21,0x22,0x2c,0x80,0x80,0x80,0x80,0x84,0xfe,0x8,0x8,0x8,0x10,0x10,0x20,0xc0,0x20,0x18,0x8,
-+0x4,0x2,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0xe,0x4,
-+0x20,0x13,0x12,0x3,0xfe,0xb,0x12,0x36,0x5a,0x94,0x10,0x17,0x11,0x10,0x10,0x10,0x8,0xfc,0x0,0xfc,0x0,0xfe,0xc4,0xa8,0x90,0xce,0x8,0xfe,0x8,0x88,0x28,0x10,
-+0x10,0x10,0x14,0xfe,0x20,0x29,0x48,0x7e,0x8,0x8,0xe,0xf8,0x48,0x8,0x9,0xa,0x40,0x40,0x40,0x7c,0x84,0x8,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x0,0x7d,0x44,0x48,0x48,0x53,0x48,0x48,0x44,0x44,0x44,0x68,0x51,0x41,0x42,0x44,0x8,0xfc,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x8,0x8,0xff,0x8,0x2,0x29,0x29,0x48,0x7,0x10,0x8,0x20,0x66,0xa5,0x3c,0x0,0x20,0x24,0xfe,0x20,0x0,0x8,0x24,0x24,0xe0,0x20,0x10,0x40,0xcc,0x4a,0x78,0x0,
-+0x0,0x14,0xfc,0x24,0x24,0x27,0x20,0xff,0x20,0x27,0x24,0x24,0x3c,0xe4,0x44,0x4,0x40,0x44,0x44,0x44,0x44,0xfc,0x0,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x11,0x10,0x10,0x1c,0x21,0x21,0x7d,0x91,0x11,0x7c,0x10,0x10,0x15,0x19,0x12,0x4,0x4,0x88,0x50,0x4,0xfe,0x4,0x4,0x4,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x20,0x1b,0x8,0x40,0x5f,0x41,0x41,0x41,0x4f,0x41,0x41,0x41,0x5f,0x40,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x4,0x43,0x31,0x14,0x85,0x44,0x44,0x14,0x15,0x24,0xe4,0x24,0x25,0x24,0x24,0x24,0x4,0x7e,0x4,0x24,0xf4,0x44,0x44,0x44,0xf4,0x44,0x44,0x44,0xf4,0x4,0x14,0x8,
-+0x8,0x8,0x7f,0x8,0xa,0x2,0xff,0x4,0x8,0x1f,0x28,0x48,0x88,0x8,0xf,0x8,0x20,0x28,0xfc,0x20,0x20,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x7e,0x2,0x2,0x7e,0x40,0x40,0x7e,0x22,0x12,0x6,0x1a,0x62,0x22,0x2,0x4,0x4,0xfe,0x4,0x4,0xfc,0x80,0x84,0xfe,0x44,0x24,0xc,0x34,0xc4,0x44,0x14,0x8,
-+0x22,0x22,0x27,0x22,0xfa,0x2f,0x20,0x2f,0x34,0xe7,0x24,0x27,0x24,0x24,0xa5,0x44,0x90,0x90,0xd4,0x9e,0xa4,0xf4,0x14,0xd4,0x54,0xd4,0x48,0xc8,0x54,0x54,0x62,0x80,
-+0x0,0x40,0x3f,0x10,0x0,0x87,0x44,0x4c,0x14,0x24,0xe5,0x26,0x24,0x24,0x27,0x24,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0x1c,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x4,0xff,0x4,0x7c,0x45,0x48,0x50,0x49,0x45,0x45,0x65,0x59,0x41,0x42,0x44,0x40,0x44,0xfe,0x40,0x20,0xfc,0x88,0x50,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x7d,0x49,0x49,0x49,0x79,0x49,0x49,0x49,0x78,0x48,0x4a,0x4a,0x4c,0x48,0x98,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x0,0x40,0xa4,0xa2,0x8a,0x88,0x78,
-+0x20,0x21,0x7d,0x89,0x11,0x7d,0x55,0x55,0x7d,0x54,0x54,0x7e,0x2,0x1c,0xe0,0x40,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x0,0x40,0xa4,0xa2,0x8a,0x88,0x78,
-+0x2,0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0x7f,0x5,0x19,0x67,0x81,0x1,0x7f,0x0,0x0,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x40,0xfc,0x40,0x30,0xce,0x4,0x10,0xf8,0x0,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0x7f,0x8,0x1f,0x28,0xc9,0x9,0x1,0x6,0x18,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x40,0xfc,0x20,0xf0,0x2e,0x24,0x20,0x0,0xc0,0x30,
-+0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x2,0x4,0x8,0x3f,0x2,0x2,0xff,0x4,0xf,0x10,0x20,0xcf,0x0,0x0,0x3f,0x0,0x0,0x40,0x20,0xf0,0x10,0x4,0xfe,0x40,0xe0,0x10,0x4e,0xe4,0x0,0x10,0xf8,0x0,
-+0x1,0x1,0x2,0x4,0x9,0x11,0x21,0xd1,0xd,0x5,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x14,0x30,0x44,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x24,0x24,0x7e,0x24,0x24,0xff,0x2,0x7f,0x42,0x7e,0x42,0x7e,0x42,0x42,0x4a,0x45,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x1f,0x8,0x4,0x3,0x4,0x8,0x7f,0x24,0x18,0x66,0x1,0xff,0x5,0x19,0x61,0x1,0xf0,0x20,0x40,0x80,0x40,0x20,0xfc,0x48,0x30,0xcc,0x0,0xfe,0x40,0x30,0xc,0x0,
-+0x3,0x11,0xf8,0x91,0x92,0x97,0x94,0x93,0x94,0x90,0x9f,0x90,0xf1,0x92,0xc,0x0,0xf8,0x10,0xe0,0x10,0x8,0xbc,0xa4,0x18,0xa4,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x1,0x1,0x3f,0x1,0x11,0xd,0x5,0xff,0x10,0x12,0x11,0x10,0x10,0x14,0x18,0x10,0x0,0x10,0xf8,0x0,0x10,0x30,0x44,0xfe,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x17,0x10,0x11,0xfc,0x11,0x16,0x18,0x33,0xd2,0x12,0x13,0x12,0x10,0x57,0x20,0x0,0xfc,0x48,0x10,0xe0,0x10,0x4e,0x48,0xfc,0x48,0x48,0xf8,0x40,0x48,0xfc,0x4,
-+0x8,0xff,0x9,0x48,0x48,0x48,0x4b,0x48,0x7d,0x5,0x1d,0xe5,0x45,0x4,0x15,0x8,0x0,0xfc,0x24,0x88,0x70,0x88,0x26,0x24,0xfe,0x24,0x24,0xfc,0x20,0x28,0xfc,0x4,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x14,0x19,0x30,0xd0,0x10,0x10,0x10,0x13,0x50,0x20,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x24,0x45,0x28,0x10,0x28,0x44,0x84,0x3,0xa0,0x2c,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x7e,0x8,0x8,0x3e,0x8,0x8,0x7e,0x2,0x1,0x11,0x50,0x51,0x96,0x18,0x6f,0x8,0xfc,0x20,0x20,0xf8,0x20,0x28,0xfc,0x0,0x20,0x40,0x84,0x2,0xa,0x8,0xf8,
-+0x4,0x4,0x7,0x8,0x8,0x1f,0x28,0x48,0x8,0xf,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0xf0,0x20,0x48,0xfc,0x88,0x88,0x88,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0,
-+0x20,0x1b,0x8,0x81,0x62,0x20,0x9,0x12,0x24,0xe2,0x22,0x22,0x22,0x22,0x2f,0x20,0x4,0xfe,0x44,0x44,0x44,0x84,0x14,0x8,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0,
-+0x1,0x1,0x3f,0x3,0x5,0x19,0x61,0x9,0x8,0x7e,0x8,0x1c,0x2a,0xc9,0x8,0x8,0x0,0x8,0xfc,0x80,0x60,0x1c,0x8,0x20,0x28,0xfc,0x20,0x70,0xae,0x24,0x20,0x20,
-+0x12,0x11,0x17,0x24,0x25,0x64,0xa7,0x20,0x23,0x22,0x22,0x23,0x22,0x22,0x23,0x22,0x8,0x14,0xfe,0x44,0x54,0x44,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0xff,0x8,0x20,0x10,0x81,0x49,0x12,0x24,0xe0,0x20,0x20,0x20,0x23,0x2c,0x20,0x24,0xfe,0x20,0x40,0x40,0x48,0x46,0x42,0x48,0x50,0x20,0x40,0x80,0x0,0x0,
-+0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x3d,0x64,0xa4,0x24,0x24,0x24,0x3c,0x23,0xc,0x20,0x20,0x20,0x20,0xa8,0xa6,0xa2,0x20,0x24,0x28,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x10,0x8,0x6,0x1,0x2,0xc,0x31,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x5,0x2,0x10,0x30,0xc0,0x0,0xc0,0x30,0x8,0x0,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,0x0,
-+0x20,0x11,0xa,0x4,0xa,0x11,0x64,0x4,0xff,0x4,0x15,0x14,0x24,0x44,0x14,0x8,0x84,0x84,0x24,0x24,0x24,0xa4,0xa4,0x24,0xe4,0x24,0x24,0x84,0x84,0x4,0x14,0x8,
-+0x0,0x20,0x18,0x8,0x81,0x61,0x22,0xa,0x14,0x20,0xe0,0x20,0x20,0x20,0x23,0x2c,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x50,0x20,0x40,0x80,0x0,0x0,
-+0x10,0x10,0x20,0x20,0x49,0xf9,0x12,0x22,0x44,0xf8,0x0,0x0,0x18,0xe0,0x43,0xc,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x50,0x20,0x40,0x80,0x0,0x0,
-+0x10,0x11,0x17,0x25,0x24,0x65,0xa7,0x22,0x25,0x29,0x23,0x24,0x28,0x20,0x23,0x2c,0x80,0x4,0xfe,0x14,0xe4,0x14,0xfc,0x8,0x6,0xfa,0x8,0x90,0x60,0x90,0xe,0x4,
-+0x0,0x8,0x7c,0x49,0x4b,0x4c,0x48,0x4f,0x48,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x40,0x40,0xa0,0x10,0xfe,0x44,0x40,0xfc,0x40,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x1e,0x24,0x48,0xff,0x1,0x1,0x7f,0x1,0x1,0x7f,0x0,0x44,0x42,0x80,0x20,0x24,0x3e,0x44,0xa4,0x24,0x24,0x28,0x10,0x28,0x46,0x84,0x0,0x88,0x46,0x2,
-+0x12,0x1f,0x28,0x45,0x8,0x4b,0x48,0x49,0x49,0x49,0x49,0x49,0x11,0x11,0x20,0x40,0x48,0x7c,0xa0,0x10,0x4,0xfe,0x20,0xfc,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x0,0x7,0x78,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4b,0x7a,0x4a,0x3,0x2,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x94,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x17,0xfc,0x24,0x24,0x24,0xfc,0x2f,0x24,0x24,0x3c,0xe4,0x44,0x5,0x8,0x10,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x44,0x8c,
-+0x8,0x8,0xff,0x8,0x9,0x1,0x1,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x20,0x24,0xfe,0x20,0x20,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x2a,0x48,0x88,0x8,0x8,0x8,0x9,0x4,0x8,0x10,0x20,0xc0,0x4,0x8,0x10,0x20,0xc0,0x2,0x4,0x8,0x10,0x60,0x80,
-+0x1,0x1,0x1,0x1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x7f,0x40,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x0,0x7b,0x4a,0x4a,0x4a,0x4a,0x4a,0xff,0x4a,0x4a,0x4a,0x4a,0x4a,0x5a,0x42,0x84,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0x44,0x54,0xc8,
-+0x10,0x10,0x13,0x16,0x5a,0x53,0x52,0x92,0x13,0x12,0x13,0x2a,0x25,0x44,0x89,0x0,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x44,0xfe,0x44,0x54,0xcc,0x54,0x44,0x54,0x88,
-+0x10,0x8,0x8,0xfe,0x2,0x4,0x8,0xa,0x1c,0x2a,0x48,0x8,0x8,0x8,0x8,0x9,0x4,0x8,0x10,0x20,0xc0,0x4,0x8,0x10,0x20,0xc0,0x2,0x4,0x8,0x10,0x60,0x80,
-+0x20,0x1b,0x8,0x40,0x41,0x41,0x41,0x41,0x42,0x42,0x44,0x48,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x84,0x44,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x78,0x48,0x57,0x50,0x62,0x51,0x48,0x4f,0x48,0x68,0x50,0x41,0x42,0x44,0x48,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x10,0x17,0x10,0x13,0xfe,0x12,0x16,0x1b,0x30,0xd1,0x11,0x11,0x11,0x11,0x50,0x27,0x40,0xfe,0x0,0xfc,0x94,0xf4,0x94,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,
-+0x0,0x7c,0x45,0x57,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x2a,0x44,0x88,0x80,0xfc,0x8,0xfe,0x44,0x92,0xfe,0x0,0x7c,0x0,0x7c,0x0,0x7c,0x44,0x44,0x7c,
-+0x2,0x79,0x4f,0x48,0x4b,0x78,0x4f,0x4a,0x49,0x7f,0x48,0x4b,0x4a,0x4a,0x4b,0x9a,0x8,0x10,0xfc,0x40,0xf8,0x40,0xfc,0x48,0x50,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,
-+0x8,0x4,0x7f,0x1,0x3f,0x1,0x7f,0x9,0x5,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x20,0x48,0xfc,0x0,0xf8,0x0,0xfc,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x0,0x40,0x30,0x10,0x84,0x64,0x24,0xc,0x14,0x24,0xe4,0x24,0x24,0x24,0x27,0x24,0x40,0x40,0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x2,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x21,0x29,0x25,0x29,0x51,0x85,0x2,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0x7e,0x4,0x24,0x14,0x24,0x44,0x14,0x8,
-+0x12,0x11,0x27,0x20,0x4b,0xf8,0x17,0x22,0x41,0xff,0x40,0x3,0x1a,0xe2,0x43,0x2,0x8,0x10,0xfc,0x40,0xf8,0x40,0xfc,0x48,0x50,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x17,0x11,0xfc,0x13,0x12,0x12,0x13,0x12,0x1e,0xf2,0x42,0x2,0x2,0x2,0x40,0x24,0xfe,0x8,0x94,0xfe,0x4,0x94,0xc,0xf4,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x9,0x9,0xa,0x13,0x14,0x38,0x50,0x97,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x8,0x8,0x8,0x50,0x20,
-+0x2,0x1,0xff,0x8,0x4,0x3f,0x20,0x24,0x28,0x37,0x24,0x24,0x24,0x27,0x20,0x20,0x0,0x4,0xfe,0x20,0x48,0xfc,0x8,0x48,0x28,0xd8,0x48,0x48,0x48,0xc8,0x28,0x10,
-+0x1,0x11,0x9,0x7f,0x40,0x8f,0x8,0xf,0x0,0x1f,0x10,0x11,0x11,0x2,0xc,0x30,0x0,0x10,0x20,0xfe,0x2,0xe4,0x20,0xe0,0x10,0xf8,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x2,0x2,0x20,0x40,0x84,0xfe,0x4,0x14,0xfc,0x94,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x1,0x21,0x19,0x9,0x1,0x7f,0x40,0x40,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x0,0x8,0x18,0x20,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x14,0x8,
-+0x1,0x9,0x5,0x7f,0x40,0x8f,0x8,0xf,0x1,0x7f,0x5,0xc,0x14,0x25,0x46,0x4,0x0,0x20,0x40,0xfe,0x2,0xe4,0x20,0xe0,0x8,0xfc,0x10,0xa0,0x40,0x20,0x1c,0x8,
-+0x10,0x11,0x10,0x10,0xfc,0x11,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x10,0x10,0xfc,0x11,0x15,0x19,0x11,0x31,0xd1,0x11,0x11,0x11,0x51,0x21,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x8,0x1d,0xf0,0x10,0x10,0xfd,0x11,0x39,0x35,0x51,0x51,0x91,0x11,0x11,0x11,0x11,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x14,0x5f,0x50,0x50,0x90,0x17,0x10,0x17,0x29,0x25,0x45,0x82,0xc,0x80,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e,
-+0x4,0x4,0xff,0x4,0x10,0x1f,0x10,0x20,0x24,0x43,0x81,0x0,0x0,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x10,0x3f,0x20,0x40,0x80,0x4,0x2,0x3,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x8,0x7f,0x0,0x22,0x14,0xff,0x2,0x3f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x4,0xfe,0x24,0x24,0x24,0x44,0x54,0x88,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x1,0x1,0x1,0x9,0x9,0x11,0x11,0x21,0x41,0x1,0x1,0x0,0x1,0x2,0xc,0x70,0x0,0x0,0x0,0x20,0x10,0xc,0x4,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x0,0x9,0x7c,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x2,0xff,0x22,0x22,0x22,0x42,0x4a,0x84,0x2,0x7f,0x42,0x42,0x42,0x7e,0x42,0x0,0x0,0xfc,0x84,0x84,0x88,0x88,0x90,0x88,0x84,0x82,0xc2,0xa2,0x94,0x88,0x80,0x80,
-+0x10,0x13,0x20,0x20,0x44,0xf9,0x11,0x22,0x44,0xfc,0x1,0x1,0x1d,0xe1,0x41,0x1,0x4,0xfe,0x84,0x84,0x84,0x4,0x4,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x2,0xff,0x4,0xa,0x32,0xcf,0x2,0x7f,0x4,0xf,0x38,0xcf,0x8,0xf,0x8,0x0,0x8,0xfc,0x40,0x20,0x5e,0xe4,0x80,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x4,0x7e,0x44,0x54,0x55,0x56,0x54,0x54,0x57,0x54,0x54,0x10,0x29,0x26,0x44,0x80,0x20,0x20,0x50,0x88,0x6,0xf8,0x0,0x4,0xfe,0x20,0x20,0xa8,0xa6,0x22,0xa0,0x40,
-+0x10,0x10,0x10,0x11,0x7d,0x56,0x54,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x40,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x80,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x0,0x1f,0x1,0x1,0xff,0x1,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x1,0x2,0x4,0x8,0x37,0xc1,0x1,0x3f,0x1,0x1,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x80,0x40,0x30,0xce,0x4,0x10,0xf8,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x8,0x8,0xa,0x7f,0x8,0xa,0xff,0x14,0x14,0x56,0x55,0x94,0x14,0x24,0x44,0x8c,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x10,0x13,0x11,0x11,0xfd,0x11,0x15,0x1b,0x30,0xd7,0x14,0x12,0x11,0x12,0x54,0x28,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xbc,0xa4,0xa8,0x10,0xa8,0x46,0x4,
-+0x8,0x12,0x3f,0x22,0x22,0x3f,0x22,0x3e,0x22,0x22,0xfe,0xa,0x12,0x22,0xca,0x4,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x13,0x11,0x59,0x55,0x51,0x91,0x17,0x10,0x17,0x14,0x12,0x11,0x12,0x14,0x18,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xbc,0xa4,0xa8,0x10,0xa8,0x46,0x4,
-+0x0,0x40,0x32,0x12,0x82,0x62,0x2f,0x8,0x10,0x22,0xe2,0x24,0x20,0x20,0x23,0x2c,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x40,0x44,0x44,0x48,0x50,0x20,0xc0,0x0,0x0,
-+0x20,0x10,0x10,0x0,0xfc,0xb,0x10,0x38,0x54,0x90,0x10,0x10,0x10,0x17,0x10,0x10,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0,
-+0x1,0x21,0x11,0x11,0x1,0x2,0xf4,0x13,0x11,0x11,0x10,0x10,0x14,0x18,0x13,0xc,0xf0,0x10,0x10,0x10,0x10,0xe,0x0,0xf8,0x8,0x10,0x90,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x3d,0x24,0x0,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,
-+0x0,0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x0,0x0,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x8,0x8,0x8,0x17,0x14,0x34,0x54,0x97,0x14,0x14,0x14,0x17,0x14,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,
-+0x1,0x2,0xf,0x8,0xf,0x8,0xf,0x8,0x8,0x7f,0x0,0x0,0x3,0x1c,0xe0,0x0,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf2,0x14,0x18,0xf0,0x50,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x47,0x34,0x18,0x81,0x62,0x20,0x8,0x17,0x20,0xe1,0x22,0x2c,0x20,0x20,0x20,0x0,0xfe,0x2,0xa4,0x10,0x48,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,0x40,0x40,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x12,0x2a,0x44,0x88,0x0,0x4,0xfe,0x0,0x8,0x7c,0x0,0x4,0xfe,0x54,0x58,0x50,0x48,0x48,0x56,0x64,0x40,
-+0x10,0x10,0x20,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe0,0x40,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x20,0x10,0x10,0xfd,0x9,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x0,0x40,0x30,0x17,0x84,0x68,0x20,0x9,0x11,0x21,0xe1,0x22,0x22,0x24,0x28,0x30,0x80,0x80,0x80,0xfc,0x84,0x88,0xc0,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x2,0x1,0x7f,0x41,0x81,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x0,0x0,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,
-+0x10,0x10,0x13,0x12,0xfc,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x44,0x80,0x0,0x40,0x20,0xfe,0x22,0x20,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x8,0x8,0xff,0x8,0xf,0x8,0xf,0x8,0x8,0xff,0x10,0x12,0x14,0x10,0x1f,0x0,0x20,0x28,0xfc,0x20,0xe0,0x20,0xe0,0x20,0x24,0xfe,0x0,0x20,0x10,0x0,0xf8,0x0,
-+0x8,0x4b,0x49,0x48,0x48,0x48,0x49,0x4a,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0xe,0xf4,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x10,0x10,0x17,0x10,0x5b,0x56,0x53,0x92,0x13,0x12,0x13,0x12,0x1f,0x11,0x12,0x14,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x40,0x31,0x12,0x7,0x80,0x6f,0x21,0xa,0x14,0x29,0xe2,0x20,0x23,0x20,0x21,0x26,0x80,0x20,0x10,0xf8,0x80,0xfc,0x20,0x50,0x8e,0x24,0x40,0x90,0x20,0x40,0x80,0x0,
-+0x1,0x1,0xff,0x1,0x7f,0x0,0x3f,0x21,0x21,0x3f,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x4,0xfe,0x0,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x11,0x11,0x11,0x3f,0x21,0x41,0x41,0x81,0x3f,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x10,0x11,0x51,0x51,0x7d,0x91,0x11,0x11,0x7c,0x13,0x10,0x10,0x1c,0xf0,0x41,0x2,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x40,0xfc,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x8,0x28,0x29,0x29,0x3f,0x4a,0x8c,0xa,0xd,0x38,0xc8,0x8,0x8,0xb,0x8,0x8,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x1,0x7,0x7c,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x20,0xa0,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x13,0x22,0x22,0x4b,0xf8,0x17,0x24,0x44,0xff,0x44,0x4,0x1f,0xe4,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0x42,0x3e,
-+0x1,0x9,0x9,0x11,0x11,0x20,0x3,0xc,0x3f,0xc8,0xf,0x8,0xf,0x8,0xf,0x8,0x0,0x20,0x10,0xc,0x24,0xc0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x0,0x3f,0x20,0x20,0x3e,0x22,0x22,0x4a,0x44,0x80,0x1f,0x12,0x12,0xff,0x0,0xa0,0x90,0xfc,0x80,0x88,0x88,0x50,0x50,0x22,0xd2,0xe,0xf0,0x90,0x94,0xfe,0x0,
-+0x3,0x3c,0x4,0xff,0x4,0x15,0x75,0x15,0x75,0xc,0x16,0x25,0x44,0x4,0x4,0x4,0x84,0x4,0x84,0xd4,0x14,0x14,0xd4,0x14,0xd4,0x14,0x14,0x94,0x84,0x4,0x14,0x8,
-+0x8,0x7c,0x49,0x49,0x49,0x79,0x4a,0x4c,0x48,0x79,0x48,0x48,0x48,0x48,0x4b,0x98,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x3f,0x10,0xc,0x2,0x1,0x2,0xc,0x31,0xc1,0x1f,0x1,0x1,0x1,0xff,0x0,0x0,0xf8,0x10,0x60,0x80,0x0,0xc0,0x30,0xe,0x24,0xf0,0x0,0x0,0x4,0xfe,0x0,
-+0x8,0xb,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x11,0x11,0x20,0x40,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x1,0x11,0x11,0x11,0x1f,0x21,0x41,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x1,0x89,0x51,0x25,0x55,0x95,0x15,0x15,0x35,0x55,0x95,0x15,0x11,0x12,0x54,0x20,0x4,0xfe,0x10,0x10,0x7c,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x10,0x10,
-+0x20,0x10,0x14,0xfe,0x21,0x22,0x3d,0x25,0x25,0x27,0x25,0x25,0x25,0x45,0x94,0x8,0x80,0x80,0x84,0xfe,0x20,0x20,0x24,0x3e,0xe4,0x24,0x34,0x28,0x22,0x2,0xfe,0x0,
-+0x0,0x47,0x34,0x14,0x87,0x64,0x24,0xf,0x11,0x21,0xe9,0x25,0x23,0x21,0x3f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x20,0x20,0x24,0x28,0x30,0x24,0xfe,0x0,
-+0x0,0x20,0x13,0x10,0x0,0x7,0xf0,0x10,0x17,0x10,0x11,0x10,0x14,0x18,0x10,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x14,0xfe,0x10,0x10,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x0,0x3,0x7c,0x4,0x3f,0x24,0x24,0x24,0x3f,0x4,0x4,0x7,0x7c,0x20,0x10,0xf8,0x90,0xd0,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x10,0x92,0xca,0x46,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0xff,0x2,0x2,0x4,0x4,0x8,0x1f,0x28,0x48,0x88,0x8,0x8,0xf,0x8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x15,0x1c,0x30,0xd3,0x12,0x12,0x12,0x12,0x53,0x22,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x4,0x7e,0x44,0x47,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x48,0x28,0x10,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x5f,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x2,0x4,0xa,0x31,0xdf,0x10,0x1f,0x10,0x1f,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x80,0x40,0x30,0xe,0xf4,0x10,0xf0,0x10,0xf8,0x10,0x20,0xc0,0x30,0x18,0x8,
-+0x20,0x20,0x20,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x21,0x24,0x28,0x30,0x23,0x1,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x24,0x3e,0xc2,0x0,
-+0x2,0x1,0x7f,0x48,0x86,0x2,0x10,0xc,0x4,0xff,0x1,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0xfe,0x2,0x84,0x80,0x80,0x80,0x84,0xfe,0x0,0x40,0x20,0x10,0xc,0x4,
-+0x20,0x13,0x12,0x2,0x2,0xf2,0x12,0x12,0x13,0x12,0x10,0x15,0x19,0x12,0x4,0x8,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x20,0x10,0x8,0x4,0x4,
-+0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x9,0x5,0x2,0x5,0x8,0x30,0xc0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x80,0x60,0x1e,0x4,
-+0x10,0x10,0x10,0x1f,0x11,0x21,0x41,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x20,0x1c,0x8,
-+0x10,0x10,0x1f,0x20,0x27,0x64,0xa4,0x24,0x27,0x24,0x22,0x21,0x20,0x21,0x26,0x28,0x40,0x44,0xfe,0x40,0xfc,0x44,0x44,0x44,0xfc,0x44,0x40,0x80,0xc0,0x30,0xe,0x4,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x24,0x22,0x3f,0x20,0x21,0x22,0x44,0x48,0x90,0x0,0x4,0xfe,0x4,0x4,0xfc,0x84,0x90,0xa4,0xfe,0x80,0xc0,0xa0,0x90,0x8e,0x84,0x80,
-+0x8,0xfc,0x8,0x49,0x49,0x49,0x49,0x49,0x7d,0x4,0x4,0x1c,0xe4,0x44,0x15,0xa,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x20,0xa0,0x40,0x60,0x90,0xe,0x4,
-+0x10,0x10,0x10,0x10,0xfc,0x25,0x27,0x24,0x24,0x49,0x29,0x11,0x29,0x45,0x85,0x1,0x40,0x40,0x40,0x80,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x3e,0x8,0x8,0x8,0x9,0xe,0x70,0x20,0x0,0x80,0xa0,0x90,0x84,0xfe,0x80,0x80,0x80,0x80,0x40,0x40,0x20,0x22,0x12,0xa,0x4,
-+0x0,0x3f,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x9,0x19,0x21,0x41,0x1,0x5,0x2,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x20,0x18,0xc,0x4,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,
-+0x1,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x1f,0x0,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x8,0xfc,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x10,0x10,0x40,0x20,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x1,0x1,0xff,0x1,0x3f,0x21,0x3f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x5,0x2,0x0,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x8,0xfe,0x8,0xf8,0x8,0x0,0x0,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x14,0x1b,0x31,0xd1,0x11,0x11,0x11,0x17,0x52,0x20,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0xe0,0x20,0x10,0x10,0x10,0xd2,0x12,0xa,0x4,
-+0x8,0x7e,0x8,0x1c,0x68,0xa,0x19,0xff,0x0,0x3f,0x0,0x3f,0x0,0x1f,0x10,0x1f,0x8,0xf0,0x80,0xfc,0x90,0x90,0x14,0xfe,0x0,0xf8,0x0,0xf8,0x0,0xf0,0x10,0xf0,
-+0x2,0x42,0x22,0x2f,0x2,0x2,0xe3,0x26,0x2a,0x22,0x22,0x2b,0x24,0x50,0x8f,0x0,0x4,0x78,0x40,0xc0,0x40,0x7e,0x48,0x48,0x48,0x48,0x88,0x8,0x8,0x6,0xfc,0x0,
-+0x8,0x8,0x7d,0x8,0x1c,0xe9,0x8,0x29,0x12,0x2,0x7f,0x2,0x4,0x8,0x10,0x60,0x40,0x48,0xfc,0x48,0x48,0x88,0xca,0x2a,0x6,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x0,0xff,0x1,0x9,0x9,0x9,0x15,0x23,0x40,0xe0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x4,0xfe,0x0,0x20,0xf0,0x0,0x0,0x6,0xfc,
-+0x0,0x0,0x7b,0x48,0x4f,0x48,0x49,0x4a,0x4c,0x48,0x4b,0x7a,0x4b,0x2,0x3,0x2,0x80,0x88,0xf0,0xa4,0xfe,0x80,0xf0,0x82,0x7e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x2,0x2,0x7b,0x4d,0x48,0x48,0x4f,0x48,0x4a,0x4a,0x4a,0x7d,0x48,0x0,0xf,0x0,0x10,0x10,0xde,0x28,0x84,0x0,0xfc,0x40,0x48,0x48,0x48,0x54,0xe2,0x40,0xfe,0x0,
-+0x0,0x47,0x30,0x10,0xf,0x0,0xf0,0x13,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x38,0xc0,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0,
-+0x8,0x8,0x8,0x10,0x10,0x3f,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x10,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x10,0x17,0x10,0x12,0x11,0x11,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x10,0xfc,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x4,0xf9,0x10,0x54,0x38,0x10,0xfe,0x13,0x30,0x39,0x54,0x50,0x93,0x10,0x10,0x10,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x20,0x20,0x20,0x3c,0x25,0x4a,0x41,0xa1,0x21,0x21,0x21,0x25,0x29,0x31,0x20,0x0,0x80,0x80,0x84,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x0,0x20,0x3f,0x21,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x24,0x28,0x30,0x60,0x0,0x20,0xf0,0x0,0x0,0x0,0x0,0x8,0xfc,0x80,0x80,0x40,0x40,0x22,0x12,0xa,0x6,
-+0x2,0x1,0x0,0xff,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x0,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,
-+0x10,0x10,0x10,0x13,0x58,0x54,0x57,0x90,0x10,0x17,0x10,0x12,0x11,0x11,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x10,0xfc,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x1,0x7f,0x40,0x80,0x3f,0x4,0x8,0x1f,0x1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x0,0x0,0xfe,0x2,0x14,0xf8,0x0,0x20,0xf0,0x10,0x0,0xf0,0x0,0x8,0xfc,0x0,
-+0x20,0x13,0x12,0x2,0xfe,0xa,0x12,0x32,0x5a,0x96,0x12,0x10,0x11,0x11,0x12,0x14,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x68,0xa8,0xa0,0x22,0x22,0x1e,0x0,
-+0x0,0x40,0x20,0x20,0xf,0x0,0xe0,0x27,0x21,0x21,0x21,0x21,0x29,0x37,0x22,0x0,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0xe0,0x20,0x10,0x10,0x10,0xd2,0x12,0xa,0x4,
-+0x8,0x8,0x8,0x48,0x48,0x49,0x49,0x4a,0x48,0x58,0x68,0x48,0x8,0x8,0x9,0xe,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x0,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x5,0x2,0x10,0xf8,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x4,0xff,0x1,0x2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x20,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x2,0x1,0x7f,0x40,0x80,0x0,0x0,0x7f,0x0,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x24,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x2,0x2,0x7f,0x2,0x3f,0x4,0xff,0x8,0x8,0x17,0x10,0x22,0x41,0x81,0x0,0x0,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x13,0x10,0x11,0xfc,0x13,0x12,0x1c,0x31,0xd1,0x10,0x10,0x10,0x10,0x51,0x26,0xc,0xf0,0x0,0x24,0xa8,0xfe,0x2,0x4,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x9,0x8,0xf,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x3f,0x11,0x9,0x9,0x7f,0x40,0x80,0x1f,0x8,0x4,0x2,0x1,0x6,0x18,0x60,0x78,0x80,0x10,0x10,0x20,0xfe,0x2,0x4,0xf0,0x20,0x40,0x80,0x0,0xc0,0x3c,0x8,
-+0x1,0x0,0x3f,0x22,0xac,0x68,0x2e,0x28,0x2f,0x60,0xaf,0x22,0x21,0x40,0x83,0x1c,0x0,0x88,0xfc,0x80,0xb8,0x88,0xb8,0x88,0xf8,0x80,0xf0,0x20,0x40,0x80,0x60,0x1c,
-+0x8,0x4,0x3f,0x21,0x3f,0x21,0x3f,0x0,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x20,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0xff,0x4,0x0,0xfd,0x8,0x10,0x51,0x5c,0x50,0x50,0x5e,0xf0,0x41,0x2,0x40,0x44,0xfe,0x40,0x24,0xfe,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xaa,0xaa,0x26,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x48,0x88,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x30,0x39,0x54,0x50,0x90,0x10,0x10,0x11,0x12,0x14,0x40,0x20,0x24,0xfe,0x20,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0xaa,0x2a,0x26,0x20,
-+0x0,0xa,0xfe,0x23,0x22,0x3c,0x48,0x4f,0x48,0xb0,0x11,0x22,0x44,0x88,0x0,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xc0,0xe0,0x50,0x4e,0x44,0x40,0x40,0x40,
-+0x10,0x13,0x10,0x10,0xfc,0x10,0x17,0x18,0x30,0xd0,0x10,0x10,0x10,0x10,0x51,0x20,0x0,0xf8,0x10,0xa0,0x40,0x40,0xfe,0x42,0x44,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x20,0x20,0x28,0xfd,0x22,0x45,0x50,0x93,0xfa,0x13,0x3a,0xd3,0x12,0x12,0x12,0x12,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0xc4,0x54,0xd4,0x54,0xd4,0x54,0x44,0x44,0xcc,
-+0x8,0xa,0xf,0x8,0x8,0xa,0xff,0x8,0x8,0x2c,0x2b,0x49,0x48,0x88,0x29,0x12,0x0,0x0,0x0,0xfc,0x84,0x84,0x48,0x48,0x48,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x8,0x8,0x14,0x22,0x41,0xbe,0x9,0x8,0x7f,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x0,0xfc,0x4,0x48,0x28,0x10,0xfe,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x42,0x33,0x12,0x82,0x62,0x2f,0xa,0x12,0x27,0xea,0x32,0x22,0x2a,0x24,0x21,0x0,0x0,0x80,0x7c,0x44,0x44,0xc4,0x44,0x28,0x28,0x90,0x10,0x28,0x46,0x84,0x0,
-+0x0,0x0,0x3c,0xb,0x10,0x10,0x10,0x5d,0x50,0x50,0x50,0x50,0x5c,0xf1,0x42,0x4,0x40,0x20,0x24,0xfe,0x20,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0xaa,0x2a,0x26,0x20,
-+0x2,0x2,0x2,0x7f,0x2,0x2,0x2,0x2,0xff,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x10,0xc,0xe4,0x20,0x20,0x20,0x20,0xfc,0x4,0x4,0x4,0x4,0x28,0x10,0x0,
-+0x4,0x7e,0x45,0x54,0x54,0x57,0x54,0x54,0x55,0x54,0x54,0x55,0x28,0x24,0x44,0x83,0x20,0x28,0xfc,0x20,0x20,0xfe,0x82,0x54,0x10,0x90,0x14,0xfe,0x20,0x50,0x8c,0x4,
-+0x10,0xa,0xff,0x0,0x7f,0x42,0x7e,0x0,0x7e,0x4,0x8,0x1e,0xe8,0x9,0x2a,0x14,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xc8,0x68,0x58,0x88,0x89,0x9,0x3,0x0,
-+0x8,0xff,0x0,0x7e,0x42,0x7e,0x0,0x7e,0x4,0x8,0x7c,0x9,0x1a,0x44,0x42,0x82,0x40,0x40,0x48,0xfc,0x48,0x48,0xc8,0x48,0xa8,0x8a,0x8a,0x6,0x0,0x88,0x46,0x42,
-+0x4,0xff,0x4,0x3f,0x24,0x3f,0x2,0x3f,0x2,0xff,0xc,0x1f,0x30,0xdf,0x10,0x1f,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x20,0xf0,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x1f,0x10,0x1f,0x10,0x1f,0x2,0x3f,0x2,0xff,0x4,0xf,0x38,0xcf,0x8,0xf,0x8,0xf0,0x10,0xf0,0x14,0xf8,0x20,0xf0,0x84,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0xb,0x7e,0x4a,0x4b,0x48,0x4b,0x78,0x4f,0x48,0x49,0x49,0x7b,0x4d,0x1,0x1,0x4,0xfe,0x94,0x94,0xfc,0x48,0xfc,0x50,0xfe,0x40,0xfc,0x4,0xfc,0x4,0xfc,0x4,
-+0x3f,0x24,0x24,0x3f,0x2,0x3f,0x2,0xff,0x3,0xc,0x3f,0xc8,0xf,0x8,0xf,0x8,0xf8,0x48,0x48,0xf8,0x20,0xf0,0x44,0xfe,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x3f,0x24,0x24,0x3f,0x10,0x3f,0x42,0xbf,0x22,0x22,0x3f,0x2,0x3,0x7e,0x20,0x8,0xfc,0x48,0x48,0xf8,0x4,0xfe,0x4,0xe4,0x24,0x24,0xe4,0x24,0xf4,0x14,0x8,
-+0x0,0x3f,0x1,0xff,0x5,0x9,0x32,0x4,0x9,0x39,0xc5,0x3,0xd,0x31,0x5,0x2,0xf0,0x0,0x4,0xfe,0x40,0x30,0x90,0x40,0x30,0x2e,0x44,0x80,0x60,0x18,0x8,0x0,
-+0xc,0x71,0x40,0x7c,0x40,0x7f,0x2,0x52,0x4a,0x42,0x52,0x4a,0x42,0x73,0xc6,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x90,0x50,0x10,0x90,0x50,0x10,0x8a,0xa,0x6,
-+0x3f,0x20,0x3f,0x20,0x2f,0x20,0x2f,0x28,0x2f,0x20,0x3f,0x50,0x50,0x57,0x90,0x10,0xf8,0x8,0xf8,0x0,0xf8,0x80,0xf8,0x88,0xf8,0x84,0xfe,0x84,0x94,0xf4,0x14,0x8,
-+0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x1,0x0,0x40,0x30,0x10,0x4,0xfe,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x0,
-+0x0,0x40,0x20,0x20,0xf,0x0,0xe1,0x22,0x24,0x28,0x20,0x20,0x20,0x50,0x8f,0x0,0x80,0xa0,0x90,0x80,0xfc,0x80,0xc0,0xa0,0x98,0x88,0x80,0x80,0x80,0x6,0xfc,0x0,
-+0x10,0x10,0x10,0x17,0xfc,0x14,0x32,0x3a,0x51,0x51,0x92,0x12,0x14,0x18,0x10,0x10,0x8,0x8,0x8,0xc8,0x7e,0x48,0x88,0xa8,0x18,0x8,0x88,0x48,0x48,0x8,0x28,0x10,
-+0x1,0x1,0xff,0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x23,0x5,0x9,0x31,0xc1,0x1,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x88,0x40,0x30,0xe,0x4,0x0,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x28,0x26,0x22,0x20,0x20,0x20,0x21,0x42,0x84,0x80,0xa0,0x90,0xfc,0x80,0x80,0x88,0x48,0x50,0x50,0x20,0x60,0x90,0x12,0xa,0x6,
-+0x4,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x7,0x1,0x3f,0x8,0x8,0x4,0xff,0x0,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,0x10,0xf8,0x20,0x20,0x44,0xfe,0x0,
-+0x7f,0x49,0x7f,0x49,0x7f,0x8,0x7f,0x8,0xf,0x79,0x1,0x3f,0x1,0x1,0xff,0x0,0x7c,0x4,0x28,0x10,0xfe,0x12,0x14,0x10,0x50,0x20,0x0,0xf8,0x0,0x4,0xfe,0x0,
-+0x1,0x0,0x3f,0x20,0x22,0x22,0x3f,0x22,0x22,0x22,0x23,0x22,0x40,0x4a,0x89,0x11,0x0,0x84,0xfe,0x0,0x20,0x24,0xfe,0x20,0x20,0x20,0xe0,0x20,0x0,0x48,0x26,0x22,
-+0x8,0x49,0x2a,0x8,0xff,0x19,0x2c,0x4a,0x10,0xfe,0x22,0x22,0x14,0x18,0x25,0x42,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x2,0x42,0x3f,0x22,0x82,0x4f,0x4a,0xa,0x1f,0x22,0xe7,0x2a,0x32,0x22,0x22,0x23,0x10,0x90,0xd0,0x10,0xbe,0xc2,0x94,0x90,0x90,0x10,0x10,0xa8,0x28,0x48,0x86,0x4,
-+0x10,0x10,0x10,0xfe,0x22,0x22,0x14,0x8,0x14,0x62,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,0x0,0x10,0x88,0xa4,0x24,0xe0,
-+0x0,0x3f,0x20,0x20,0x3f,0x22,0x22,0x3f,0x32,0x32,0x52,0x52,0x53,0x92,0x2,0x2,0x44,0xe4,0x44,0x54,0xd4,0x14,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0x84,0x14,0x8,
-+0x0,0x7f,0x2,0x3f,0x24,0x24,0x24,0x22,0x2,0xff,0x4,0x8,0x4,0x3,0xc,0x30,0x8,0xfc,0x0,0xf8,0x48,0x48,0x48,0x18,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x10,0x13,0x10,0xfc,0x12,0x15,0x1a,0x30,0xd0,0x17,0x10,0x10,0x10,0x50,0x20,0x40,0x24,0xfe,0x20,0x48,0xf2,0x24,0x52,0xf8,0x20,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x2,0x1,0x7f,0x0,0x1f,0x10,0xff,0x10,0x1f,0x4,0x9,0x18,0x28,0x4a,0x8c,0x8,0x0,0x8,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x8,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x41,0x80,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x28,0x12,0x2,0xfe,
-+0x8,0x8,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x9,0x11,0x11,0x20,0x40,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x10,0x10,0x10,0x11,0xfe,0x14,0x33,0x38,0x54,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0xfe,0x14,0x13,0x1c,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0x8,0x7e,0x8,0x1c,0x2a,0x48,0x8,0x8,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x4,0xfe,0x84,0xfc,0x84,0xfc,0x84,0xfc,0x84,
-+0x0,0x0,0xfd,0x4,0x44,0x44,0x28,0x28,0x10,0x10,0x28,0x28,0x44,0x44,0x81,0x6,0x0,0x4,0xfe,0x84,0x84,0x84,0x88,0x48,0x48,0x50,0x20,0x30,0x50,0x88,0xe,0x4,
-+0x1,0x1,0xff,0x1,0x29,0x11,0x29,0x1,0x29,0x11,0x29,0x2,0x4,0x8,0x30,0xc0,0x0,0x4,0xfe,0x0,0x28,0x10,0x28,0x0,0x28,0x10,0x28,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x20,0x11,0x11,0x3,0x5,0xf1,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x80,0xa0,0x14,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x7d,0x5,0x5,0x9,0x9,0x11,0x21,0x41,0x81,0x5,0x2,0x0,0x0,0x0,0x8,0x18,0x20,0xc0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x0,
-+0x0,0x8,0x7b,0x48,0x48,0x4f,0x79,0x49,0x4f,0x79,0x49,0x49,0x4f,0x78,0x48,0x3,0x0,0x18,0xe0,0x40,0x48,0xfc,0x50,0x54,0xfe,0x50,0x50,0x50,0xfc,0x40,0x50,0xf8,
-+0x8,0x1d,0xf0,0x10,0x11,0xfd,0x11,0x39,0x35,0x51,0x90,0x10,0x10,0x10,0x11,0x12,0x0,0x4,0x88,0x50,0xfc,0x4,0x4,0x4,0xfc,0x54,0x50,0x50,0x92,0x92,0xe,0x0,
-+0x0,0x8,0x7c,0x48,0x49,0x4b,0x48,0x48,0x48,0x48,0x49,0x79,0x4a,0x2,0x4,0x8,0x40,0x40,0x80,0x80,0x8,0xfc,0x94,0x90,0x90,0x90,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x8,0x7f,0x49,0x48,0x4b,0x7a,0x4d,0x49,0x7a,0x4d,0x48,0x48,0x79,0x4a,0x0,0x8,0x3c,0xc0,0x24,0xa8,0xfe,0x2,0x4,0xde,0x44,0x54,0x94,0xbe,0x4,0x4,0x4,
-+0x0,0x47,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x44,0x84,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x0,0x3f,0x11,0x9,0x7f,0x48,0x88,0x1e,0x12,0x22,0x54,0xd,0x8,0x10,0x20,0x40,0x78,0x80,0x10,0x20,0xfe,0x22,0x24,0xf8,0x20,0xa0,0xa8,0xfc,0x20,0x20,0x20,0x20,
-+0x0,0x22,0x11,0x10,0x3,0x2,0xf2,0x12,0x13,0x12,0x10,0x10,0x15,0x19,0x12,0x4,0x0,0x8,0x10,0xa0,0xf8,0x8,0x8,0x8,0xf8,0xa8,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x8,0xfd,0x10,0x10,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x25,0x3c,0x24,0x0,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x41,0x22,0x14,0xff,0x8,0x49,0x49,0x49,0x49,0x49,0x7f,0x9,0x8,0x10,0x21,0x42,0x4,0x7e,0x44,0xc4,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x84,0x84,0x14,0x8,
-+0x10,0x10,0x13,0x16,0x5a,0x52,0x52,0x93,0x10,0x10,0x10,0x29,0x26,0x44,0x80,0x0,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x22,0x22,0x7f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0xff,0x0,0x15,0x22,0x40,0x8,0x1c,0x60,0x40,0x40,0x40,0x7e,0x48,0x48,0x48,0x48,0x48,0x88,0x8,0x8,0x8,
-+0x24,0x24,0x2f,0x24,0xfc,0x27,0x2c,0x34,0x27,0xe4,0x24,0x3f,0x20,0x24,0xa8,0x40,0x80,0x8c,0xf0,0xa0,0xa0,0xa4,0xbe,0xa8,0xa8,0xa8,0xa8,0xe8,0x28,0xa8,0x48,0x8,
-+0x4,0x14,0x7f,0x54,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x7f,0x50,0x4,0x8,0x0,0x80,0x8c,0xf0,0xa0,0xa0,0xa4,0xbe,0xa8,0xa8,0xa8,0xa8,0xe8,0x28,0xa8,0x48,0x8,
-+0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x2,0x51,0x50,0x90,0xf,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x88,0x96,0x12,0xf0,
-+0x4,0xe,0xf8,0x8,0xa,0xff,0x8,0x1c,0x1a,0x28,0x48,0x89,0x9,0xb,0x8,0x8,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x40,0x80,0x80,0x80,0x8,0x4,0xfe,0x2,0x0,
-+0x0,0x3f,0x0,0x0,0xff,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x88,0xc8,0x88,0x88,0x88,0x88,0x88,0x88,0x28,0x10,
-+0x8,0x8,0x8,0x10,0x10,0x22,0x7e,0x4,0x8,0x10,0x20,0x7e,0x0,0x0,0xff,0x0,0x10,0x10,0x10,0x20,0x20,0x44,0xfc,0x8,0x10,0x20,0x40,0xfc,0x0,0x4,0xfe,0x0,
-+0x0,0xff,0x8,0x8,0x10,0x1f,0x21,0x21,0x62,0x92,0xc,0x4,0x8,0x10,0x20,0x40,0x4,0xfe,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x4,0x3e,0x21,0x24,0x3f,0x20,0x25,0x3e,0x20,0x21,0xff,0x10,0x25,0x7e,0x2,0x0,0x20,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x0,0x0,0x7f,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x2,0x3f,0x22,0x22,0x3e,0x0,0x7f,0x55,0x55,0x55,0x7f,0x55,0x55,0x55,0x55,0x43,0x4,0x7e,0x4,0x4,0xfc,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x0,0x0,0x7f,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x3c,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x8,0xb,0x8,0x10,0x17,0x30,0x50,0x93,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x4,0x14,0x8,
-+0x10,0x11,0x10,0x20,0x24,0x64,0xa4,0x24,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x21,0x0,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x8,0x10,0x90,0x20,0x28,0x46,0x82,0x0,
-+0x20,0x23,0x20,0x3c,0x27,0x48,0x40,0xa3,0x22,0x22,0x22,0x26,0x2b,0x32,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0xf4,0x24,0x24,0x24,0x24,0xe4,0x4,0x14,0x8,
-+0x0,0x7f,0x40,0x40,0x40,0x40,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x39,0x36,0x54,0x50,0x90,0x10,0x11,0x13,0x10,0x10,0x10,0x90,0x90,0x90,0x8,0x8,0x4,0x42,0x40,0x40,0x80,0x88,0x4,0xfc,0x4,0x0,
-+0x8,0x8,0x18,0x24,0x43,0x82,0x7f,0x10,0x1f,0x10,0x1f,0x10,0x10,0xff,0x0,0x0,0x20,0x20,0x50,0x88,0x6,0x0,0xfc,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x10,0x10,0x10,
-+0x8,0x8,0x8,0x8,0x14,0x14,0x22,0x22,0x41,0x80,0x2a,0x29,0x28,0x48,0x7,0x0,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0,
-+0x0,0x2b,0x28,0x28,0x45,0x53,0x91,0x11,0x21,0x21,0x29,0x45,0x7c,0x4,0x0,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x2,0x41,0x30,0x17,0x0,0x0,0xf0,0x1f,0x10,0x10,0x10,0x10,0x11,0x2a,0x44,0x3,0x8,0x10,0xa0,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0xa0,0x18,0x8,0x6,0xfc,
-+0x2,0x1,0x7f,0x40,0x81,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x0,0x0,0xfe,0x2,0x4,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,0x0,0x0,
-+0x0,0x40,0x31,0x11,0x1,0x2,0xf2,0x14,0x18,0x10,0x10,0x10,0x15,0x1b,0x10,0x0,0x40,0x20,0x20,0x20,0x10,0x8,0xe,0x44,0x40,0x40,0x80,0x90,0x8,0xf8,0x8,0x0,
-+0x0,0x47,0x20,0x20,0x0,0x7,0xe4,0x24,0x27,0x24,0x24,0x27,0x2c,0x34,0x24,0x4,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x30,0xd3,0x10,0x10,0x10,0x10,0x50,0x23,0x24,0xae,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x10,0x3d,0x25,0x35,0x2d,0x25,0x25,0xfc,0x27,0x34,0x2c,0x44,0x44,0x94,0xb,0x24,0xae,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x22,0x2a,0x27,0x22,0xff,0x22,0x37,0x2a,0x62,0xbf,0x24,0x28,0x25,0x22,0xa5,0x48,0x10,0x90,0x10,0x14,0xbe,0x44,0x24,0xa4,0x28,0xe8,0x90,0x90,0x28,0x28,0x46,0x84,
-+0x2,0x22,0xff,0xa2,0xa2,0xaf,0xaa,0xaa,0xaf,0xa2,0xa7,0xea,0x92,0x2,0x2,0x3,0x10,0x90,0xd0,0x10,0xbe,0xc2,0x94,0x90,0x90,0x10,0x10,0xa8,0x28,0x48,0x86,0x4,
-+0x8,0x8,0xff,0x8,0xa,0x2,0x3f,0x2,0x2,0x22,0x24,0x44,0x8,0x10,0x20,0x40,0x20,0x24,0xfe,0x20,0x20,0x10,0xf8,0x10,0x10,0x18,0x16,0x12,0x10,0x10,0x50,0x20,
-+0x4,0xfe,0x29,0x28,0xfe,0xaa,0xab,0xaa,0xae,0xc2,0x82,0xff,0x82,0xfe,0x82,0x0,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xae,0x24,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x11,0x22,0x24,0x60,0xa1,0x22,0x24,0x2b,0x22,0x22,0x22,0x22,0x23,0x22,0x0,0x10,0xc,0x44,0x40,0xa0,0x10,0xe,0x4,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x7f,0x1,0x3f,0x1,0xff,0x4,0x1f,0x1,0x2,0x1f,0x1,0x9,0x15,0x22,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x20,0xc0,0x0,0x20,0xf0,0x0,0x20,0x18,0x8,
-+0x0,0x40,0x37,0x10,0x7,0x4,0xf4,0x17,0x14,0x10,0x11,0x12,0x14,0x28,0x47,0x0,0x40,0x44,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0xe0,0x58,0x48,0x40,0x46,0xfc,0x0,
-+0x0,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x1,0x11,0x9,0xff,0x5,0x9,0x31,0xc1,0x1,0x8,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0x10,0x24,0xfe,0x40,0x30,0xe,0x4,0x0,
-+0x10,0x1f,0x10,0x27,0x24,0x64,0xa7,0x20,0x22,0x21,0x2f,0x21,0x22,0x24,0x28,0x20,0x4,0xfe,0xa0,0xfc,0xa4,0xa4,0xfc,0x40,0x48,0x50,0xfe,0x50,0x48,0x46,0x44,0x40,
-+0x22,0x14,0xff,0x8,0x2a,0x2a,0x2a,0x3e,0x8,0x11,0x21,0x7f,0x1,0x1,0xff,0x0,0x4,0x7e,0xc4,0x7c,0x44,0x7c,0x44,0x44,0x94,0x8,0x0,0xfc,0x0,0x4,0xfe,0x0,
-+0x48,0x25,0x20,0x1f,0x82,0x4a,0x4a,0xa,0x1a,0x2a,0xef,0x22,0x22,0x24,0x28,0x21,0x84,0x3e,0x24,0xe4,0x24,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0x44,0x44,0x94,0x8,
-+0x2,0x1,0x7f,0x40,0x88,0xf,0x8,0x10,0x13,0x32,0x52,0x93,0x12,0x12,0x13,0x12,0x0,0x0,0xfe,0x2,0x4,0xfe,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x43,0x32,0x12,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x16,0x1a,0x14,0x8,0x0,0x1c,0xe0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x60,0x30,0x2c,0x24,0x20,0x20,
-+0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x21,0x25,0x25,0x25,0x29,0x21,0x41,0x81,0x0,0x8,0xfc,0x8,0xfe,0x8,0xf8,0x0,0x8,0x48,0x48,0x28,0x28,0x8,0x8,0x8,
-+0x4,0xfe,0x28,0x28,0xff,0xaa,0xaa,0xab,0xae,0xc2,0x83,0xfe,0x82,0xfe,0x82,0x1,0x20,0x20,0x40,0x84,0xfe,0x48,0x86,0x42,0x78,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x8,0xff,0x8,0x4,0x7e,0x0,0x4,0xfe,0x8,0x2c,0x2a,0x48,0x89,0x28,0x10,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0x4,0xfe,0x10,0x58,0x56,0x92,0x10,0x50,0x20,
-+0x20,0x3e,0x49,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x8,0xff,0x8,0x8,0x10,0x20,0x80,0xfc,0x20,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x1f,0x10,0x10,0x1f,0x1,0x1,0x3f,0x21,0x21,0x3f,0x1,0x1,0x1,0x7f,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x10,0xfc,0x4,0x0,
-+0x0,0x78,0x4f,0x51,0x51,0x62,0x55,0x48,0x4b,0x4a,0x6b,0x52,0x43,0x42,0x42,0x42,0x80,0x84,0xfe,0x0,0xf8,0x40,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x0,0x78,0x4a,0x51,0x51,0x60,0x57,0x49,0x49,0x49,0x69,0x51,0x41,0x41,0x42,0x44,0x20,0x24,0xfe,0x20,0x44,0xfe,0x44,0x7c,0x44,0x7c,0x44,0x44,0x54,0x48,0x80,0x7e,
-+0x10,0x17,0x20,0x22,0x41,0xf8,0x10,0x2f,0x41,0xf9,0x42,0x1,0x18,0xe0,0x41,0x6,0x1c,0xe0,0x0,0x48,0x50,0x20,0x84,0xfe,0x8,0x8,0x10,0x10,0xa0,0x40,0xb0,0x8,
-+0x0,0x7d,0x44,0x76,0x55,0x55,0xfe,0x83,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x56,0x48,0x20,0xfe,0x40,0x7c,0x90,0x7c,0x0,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x4c,0x80,0x7e,
-+0x0,0x8,0xfd,0x10,0x10,0x21,0x22,0x7c,0xa4,0x27,0x24,0x24,0x24,0x3c,0x20,0x0,0x40,0x20,0xfc,0x88,0x88,0x54,0x22,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x1,0x21,0x21,0x21,0x3f,0x24,0x4,0xf,0x10,0x24,0x42,0x1,0x1,0x3,0x1c,0xe0,0x0,0x8,0x8,0x8,0xf8,0x8,0x0,0xfc,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x8,0x1c,0xf3,0x10,0x11,0xff,0x11,0x31,0x39,0x54,0x51,0x90,0x12,0x12,0x14,0x10,0x20,0x24,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x28,0xfc,0x40,0xa4,0xa2,0x8a,0x78,
-+0x2,0x81,0x60,0x2f,0x1,0x2,0xe4,0x29,0x22,0x24,0x29,0x22,0x25,0x50,0x8f,0x0,0x10,0x20,0x48,0xfc,0x0,0x88,0xd0,0x60,0x40,0xe0,0x58,0x48,0x40,0x86,0xfc,0x0,
-+0x0,0x78,0x49,0x54,0x52,0x60,0x50,0x4e,0x4a,0x4a,0x6a,0x52,0x42,0x45,0x48,0x40,0x44,0x28,0xfe,0x20,0x40,0xa4,0x38,0x50,0x98,0x34,0x54,0x90,0x30,0x6,0xfc,0x0,
-+0x1,0x21,0x21,0x3f,0x1,0x41,0x7f,0x0,0x3f,0x0,0x0,0xff,0x9,0x11,0x25,0x2,0x0,0x8,0x8,0xf8,0x0,0x4,0xfc,0x0,0xf8,0x0,0x4,0xfe,0x20,0x18,0x8,0x0,
-+0x0,0x7e,0x2,0x4,0x8,0xa,0xc,0x39,0xc9,0xa,0xc,0x8,0x8,0x8,0x28,0x10,0x20,0x20,0x20,0x20,0x20,0xb0,0xa8,0x24,0x26,0x22,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x11,0x11,0x11,0xfd,0x10,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x10,0x50,0x23,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x50,0x8c,0x4,
-+0x10,0x12,0x1f,0x28,0x45,0xbf,0x4,0x4,0xff,0x4,0x4,0x3f,0x4,0x8,0x10,0x60,0x40,0x44,0x7e,0xa0,0x10,0xf0,0x10,0x14,0xfe,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,
-+0x8,0x8,0xff,0x9,0x7f,0x0,0x1f,0x10,0xff,0x10,0x1f,0x9,0x18,0x2a,0xcc,0x8,0x20,0x24,0xfe,0x20,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x8,0x90,0x60,0x1c,0x8,
-+0x10,0x10,0x11,0x13,0xfc,0x10,0x31,0x3a,0x54,0x51,0x92,0x14,0x10,0x10,0x11,0x16,0x40,0x90,0x8,0xfc,0x4,0x88,0x6,0x82,0xf8,0x8,0x90,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x8,0x7d,0x4b,0x48,0x48,0x49,0x4a,0x48,0x49,0x4a,0x7c,0x48,0x0,0x1,0x6,0x40,0x90,0x8,0xfc,0x4,0x88,0x6,0x82,0xf8,0x8,0x90,0x50,0x20,0x50,0x8e,0x4,
-+0x20,0x20,0x27,0x44,0x49,0xf1,0x12,0x26,0x4a,0xfa,0x42,0x2,0x1a,0xe2,0x42,0x2,0x40,0x20,0xfe,0x2,0x4,0xfe,0x20,0x44,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x0,0x9,0xfc,0x10,0x10,0x11,0x11,0x7d,0x11,0x11,0x11,0x1d,0xf0,0x40,0x1,0x6,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x1,0x1,0x3f,0x1,0x7f,0x42,0x84,0xf,0x1,0x2,0x3f,0x1,0x9,0x11,0x25,0x2,0x0,0x10,0xf8,0x0,0xfe,0x2,0x24,0xc0,0x0,0x10,0xf8,0x8,0x20,0x18,0x8,0x0,
-+0x10,0x11,0x10,0x1c,0x20,0x21,0x7d,0x91,0x11,0x7d,0x11,0x11,0x14,0x18,0x11,0x6,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x2,0x7,0x38,0x20,0x20,0x3e,0x22,0x22,0x22,0x3e,0x22,0x20,0x21,0x42,0x84,0x0,0x8,0x1c,0xe0,0x80,0x80,0x84,0xfe,0x88,0x88,0x88,0x88,0x88,0x8,0x8,0x8,0x8,
-+0x20,0x23,0x22,0x23,0x22,0xfb,0x20,0x27,0x20,0x24,0x22,0x39,0xe2,0x44,0x2,0x1,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xbe,0x84,0xa4,0x94,0x8c,0x94,0xa4,0x94,0x8,
-+0x8,0x8,0x8,0x10,0x12,0x32,0x53,0x9e,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x40,0x40,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x68,0x50,0x40,0x42,0x2,0xfe,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x8,0x8,0x8,0x9,0xe,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0xfe,0x2,0x4,0x0,0x20,0x60,0x80,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x25,0x25,0x27,0x25,0x45,0x29,0x11,0x29,0x45,0x84,0x0,0x20,0x20,0x20,0x20,0x24,0x3e,0xe4,0x24,0x24,0x34,0x28,0x20,0x22,0x2,0xfe,0x0,
-+0x21,0x21,0x27,0x21,0x20,0xf8,0x21,0x22,0x2d,0x20,0x23,0x3a,0xe2,0x42,0x3,0x2,0x10,0x10,0xfc,0x10,0x40,0xa0,0x10,0xe,0xf4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x8a,0x52,0x2f,0x62,0xaf,0x2a,0x2a,0x6a,0xaf,0x22,0x27,0x2a,0x32,0x22,0xa2,0x42,0x10,0x10,0x9c,0x24,0xc8,0xbe,0xa2,0xaa,0xaa,0x2a,0x2a,0xaa,0x8,0x14,0x22,0x42,
-+0x10,0x12,0x11,0x11,0xfc,0x10,0x17,0x19,0x31,0xd1,0x11,0x11,0x11,0x12,0x54,0x20,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x28,0x28,0x46,0x84,0x0,0x86,0x7c,0x0,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x10,0x13,0x5c,0x51,0x50,0x51,0x5e,0xf0,0x41,0x0,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xdc,0x44,0x54,0xcc,0x54,0x64,0x44,0x54,0x88,
-+0x0,0x7d,0x44,0x44,0x44,0x7d,0x12,0x10,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x41,0x1,0x20,0x24,0xa8,0x70,0xa8,0x26,0x24,0x60,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x27,0x24,0x24,0x3d,0x25,0x25,0x25,0x45,0x95,0x9,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0xff,0x8,0x2,0x4,0x8,0x3f,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x20,0x24,0xfe,0x20,0x0,0x20,0x10,0xf8,0x8,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x10,0xfc,0x11,0x17,0x18,0x30,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x20,0x10,0x8,0xfc,0x4,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x9,0x39,0xc5,0x3,0xd,0x11,0x5,0x2,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0x30,0x4e,0x84,0x60,0x10,0x0,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x10,0x10,0x14,0xfe,0x10,0x10,0x28,0x28,0x28,0x28,0x44,0x54,0x82,0x0,
-+0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x2,0x2,0x4,0x6,0x9,0x31,0xc0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x80,0x80,0x40,0x40,0x30,0xe,0x4,0x0,
-+0x1,0x1,0xff,0x1,0x2,0x4,0xa,0x31,0xc0,0x2,0x29,0x29,0x28,0x48,0x7,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,0x0,0x10,0x8,0x24,0x24,0xe0,0x0,
-+0x0,0x40,0x30,0x10,0x87,0x60,0x20,0x8,0x10,0x20,0xe1,0x21,0x22,0x24,0x28,0x20,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x90,0x48,0x4e,0x4,0x0,
-+0x20,0x23,0x22,0x22,0x22,0xfa,0x22,0x22,0x2f,0x22,0x22,0x3a,0xe2,0x44,0x4,0x8,0x8,0xfc,0x8,0x8,0x88,0x48,0x48,0x8,0xfe,0x8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x20,0x20,0x20,0x2e,0xf3,0x2a,0x2a,0x3a,0x6a,0xa4,0x2a,0x29,0x31,0x20,0xa0,0x40,0x40,0x50,0x44,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x1,0x2,0x6,0x9,0x37,0xc0,0x0,0x1f,0x10,0x11,0x11,0x11,0x12,0x4,0x8,0x30,0x0,0x80,0x40,0x30,0xce,0x44,0x90,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x51,0x19,0x35,0x52,0x92,0x15,0x25,0x28,0x40,0x0,0x80,0x44,0xfe,0x20,0x28,0x7e,0x48,0xc8,0x7e,0x48,0x48,0x7e,0x48,0x48,0x7e,0x40,
-+0x0,0x40,0x30,0x1f,0x81,0x69,0x29,0x6,0x12,0x25,0xe9,0x30,0x20,0x20,0x20,0x20,0x20,0x28,0x20,0x7e,0x48,0xc8,0x7c,0x48,0x48,0x7c,0x48,0x48,0x48,0x7e,0x40,0x40,
-+0x10,0x10,0x13,0x10,0x10,0xfc,0x17,0x10,0x10,0x10,0x10,0x1d,0xf1,0x43,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x40,0x40,0x80,0x90,0x8,0x4,0xfc,0x4,0x0,
-+0x10,0x17,0x10,0x17,0xfd,0x15,0x3d,0x37,0x50,0x53,0x92,0x13,0x12,0x13,0x10,0x1f,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,
-+0x1,0x0,0x1f,0x10,0x92,0x51,0x50,0x11,0x36,0x50,0x92,0x11,0x20,0x21,0x42,0xc,0x0,0x84,0xfe,0x40,0x48,0x50,0xa0,0x10,0x4c,0x40,0x48,0x50,0xa0,0x10,0xe,0x4,
-+0x40,0x3f,0x10,0x7,0x84,0x67,0x20,0xb,0x12,0x23,0xe2,0x23,0x20,0x2f,0x20,0x20,0x4,0xfe,0xa0,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,
-+0x40,0x2f,0x20,0x7,0x4,0xe7,0x20,0x23,0x22,0x23,0x22,0x23,0x28,0x37,0x20,0x0,0x4,0xfe,0xa0,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,
-+0x0,0x40,0x32,0x11,0x0,0x0,0xf1,0x16,0x10,0x12,0x11,0x10,0x14,0x19,0x12,0x4,0x40,0x40,0x48,0x50,0xa0,0x90,0xe,0x44,0x40,0x48,0x50,0xa0,0xa0,0x10,0xe,0x4,
-+0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0xf,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x0,
-+0x4,0xe,0xf0,0x11,0x10,0x7c,0x11,0x10,0xfe,0x10,0x11,0x10,0x10,0x13,0x10,0xf,0x20,0xa4,0xa8,0x30,0x50,0x8c,0x24,0x20,0xa8,0xb0,0x20,0x50,0x8c,0x6,0x2,0xfe,
-+0x20,0x10,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x10,0x17,0x10,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x0,
-+0x0,0x8,0xfd,0x11,0x11,0x20,0x23,0x7c,0xa4,0x25,0x25,0x26,0x24,0x3c,0x25,0x2,0x20,0x20,0x24,0x24,0xfc,0x80,0xfe,0x80,0xa0,0x24,0xa8,0x50,0x50,0x88,0xe,0x4,
-+0x10,0x13,0x12,0x14,0xfc,0x11,0x14,0x18,0x33,0xd0,0x10,0x10,0x11,0x12,0x50,0x20,0x0,0xfe,0x2,0x54,0x88,0x4,0x20,0x24,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20,0x20,
-+0x0,0x8,0x7f,0x4a,0x4a,0x49,0x49,0x48,0x48,0x48,0x48,0x78,0x49,0x2,0x4,0x18,0x0,0x0,0xf8,0x8,0x8,0x10,0x10,0xa0,0xa0,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x1,0x21,0x21,0x3f,0x8,0xff,0x9,0x9,0x15,0x15,0x2a,0x22,0x44,0x84,0x8,0x30,0x0,0x8,0x8,0xf8,0x4,0xfe,0x0,0x10,0x30,0x40,0x80,0x80,0x40,0x20,0x1c,0x8,
-+0x0,0x23,0x18,0x8,0x80,0x60,0x23,0x8,0x10,0x21,0xe1,0x22,0x24,0x29,0x22,0x20,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0x24,0x44,0x44,0x84,0x4,0x28,0x10,
-+0x10,0x10,0x13,0x12,0x13,0xfe,0x13,0x12,0x13,0x12,0x13,0x1d,0xf5,0x45,0x9,0x1,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x13,0x12,0xff,0x12,0x17,0x1a,0x33,0xd2,0x13,0x15,0x15,0x15,0x59,0x21,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x11,0x9,0x7f,0x40,0x9f,0x10,0x10,0x1f,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x0,0x10,0x20,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x1,0x9,0x5,0x7f,0x40,0x8f,0x8,0x8,0xf,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x20,0x40,0xfe,0x2,0xe4,0x20,0x20,0xe0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x8,0x7d,0x48,0x4b,0x4a,0x7d,0x49,0x49,0x49,0x78,0x48,0x49,0x48,0x48,0x8b,0x18,0x20,0x24,0xa8,0xfe,0x2,0xfc,0x4,0x4,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x1,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x20,0x2f,0x28,0x48,0x48,0x8f,0x8,0x0,0x88,0xfc,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x57,0x3a,0x13,0xfe,0x13,0x32,0x3b,0x56,0x53,0x93,0x15,0x15,0x19,0x11,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xa,0x9,0x11,0x10,0x37,0x54,0x94,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x10,0x22,0x79,0x49,0x48,0x7b,0x4a,0x7a,0x4a,0x4a,0xfa,0x2a,0x4a,0x8a,0x2a,0x12,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x84,0x14,0x8,
-+0x0,0x42,0x31,0x11,0x80,0x67,0x24,0xc,0x15,0x25,0xe5,0x25,0x25,0x25,0x24,0x24,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x10,0x12,0x11,0x7d,0x10,0x13,0xfe,0x12,0x52,0x5e,0x52,0x72,0x52,0x48,0x87,0x0,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0xf4,0x94,0x94,0x94,0xf4,0xc,0x6,0xfc,0x0,
-+0x23,0x10,0x40,0x23,0x9,0x71,0x11,0x12,0x14,0x1,0x9,0xa,0x12,0x4,0x18,0x60,0xf0,0x40,0x84,0xfe,0x24,0x24,0x24,0x54,0x88,0x0,0x10,0xa0,0x80,0x60,0x1c,0x8,
-+0x11,0x11,0x11,0x13,0xfc,0x12,0x13,0x1c,0x30,0xd3,0x10,0x12,0x12,0x13,0x50,0x20,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x84,0xa4,0xf4,0x84,0xa4,0xa4,0xe4,0x14,0x8,
-+0x0,0x40,0x37,0x10,0x83,0x60,0x2f,0x9,0x11,0x23,0xe2,0x25,0x28,0x30,0x20,0x20,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfe,0x8,0x8,0xfe,0x8,0x8,0x88,0x88,0x28,0x10,
-+0x40,0x30,0x17,0x0,0x82,0x61,0x20,0xf,0x14,0x24,0xe7,0x24,0x24,0x24,0x27,0x24,0x8,0x3c,0xc0,0x4,0x4c,0x50,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x21,0x23,0x4c,0xf8,0x10,0x21,0x46,0xf8,0x47,0x0,0x19,0xe2,0x45,0x0,0x80,0x80,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0x44,0xfc,0x40,0x50,0x4c,0x44,0x80,
-+0x4,0x4,0xff,0x14,0x1f,0x28,0x4f,0x11,0x21,0xff,0x1,0x11,0x11,0x1f,0x0,0x0,0x40,0x44,0xfe,0x40,0xfc,0x4,0xf4,0x4,0x14,0xfc,0x4,0x14,0x14,0xf4,0x14,0x8,
-+0x10,0x10,0x10,0x10,0xfc,0x12,0x39,0x34,0x51,0x52,0x94,0x11,0x11,0x12,0x14,0x18,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0x41,0x29,0x25,0x5,0x1,0xe3,0x25,0x29,0x21,0x22,0x24,0x28,0x50,0x88,0x7,0x40,0x40,0x48,0x58,0x60,0x40,0x60,0x50,0x50,0x40,0x44,0x44,0x3c,0x0,0x6,0xfc,
-+0x42,0x32,0x13,0x5,0x89,0x63,0x24,0x0,0x1f,0x20,0xe4,0x24,0x27,0x20,0x20,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x84,0x94,0xfc,0x84,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x1,0x79,0x49,0x52,0x55,0x61,0x52,0x48,0x4f,0x48,0x69,0x51,0x41,0x40,0x40,0x40,0x0,0x4,0xfe,0x4,0x24,0xf4,0x44,0x54,0xfc,0x44,0x54,0x54,0xf4,0x4,0x14,0x8,
-+0x0,0x40,0x30,0x10,0x7,0x0,0xf0,0x11,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x8,0x88,0x88,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x1,0x1,0xff,0x2,0x4,0xf,0x18,0x2f,0xc8,0xf,0x8,0xff,0x4,0x8,0x1f,0x0,0x0,0x4,0xfe,0x80,0x40,0xe0,0x10,0xee,0x4,0xe0,0x4,0xfe,0x0,0x20,0xf0,0x10,
-+0x10,0x10,0x50,0x53,0x7c,0x90,0x17,0x18,0x30,0xd7,0x11,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x14,0xfe,0x10,0x90,0x90,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x7a,0x49,0x4b,0x78,0x4f,0x49,0x7a,0x4d,0x48,0x49,0x8a,0x18,0x20,0x24,0xfe,0x20,0x48,0x50,0xfc,0x80,0xfe,0x10,0x4e,0x54,0xe0,0x58,0x48,0xc0,
-+0x0,0x7a,0x49,0x4b,0x48,0x7f,0x49,0x4a,0x4d,0x78,0x49,0x49,0x48,0x4f,0x88,0x18,0x40,0x48,0x50,0xfc,0x80,0xfe,0x10,0xe,0xf4,0x10,0x14,0xfe,0x4,0xe4,0x14,0x8,
-+0x1,0x0,0x1f,0x11,0x91,0x53,0x55,0x10,0x30,0x50,0x93,0x2c,0x20,0x40,0x80,0x0,0x0,0x84,0xfe,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x8e,0x64,0x20,0x80,0x60,0x20,
-+0x11,0x9,0x7f,0x2,0xff,0x4,0x9,0x3f,0xc0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x20,0xfc,0x0,0xfe,0x40,0x20,0xfe,0x4,0xf0,0x0,0xf0,0x0,0xf0,0x10,0xf0,
-+0x12,0x11,0x10,0x13,0xfc,0x10,0x33,0x3a,0x56,0x53,0x90,0x11,0x12,0x14,0x18,0x10,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40,
-+0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x10,0x3f,0x54,0x94,0x14,0x24,0x4a,0x11,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0xa4,0xe4,0xa4,0x84,0x84,0x84,0x94,0x8,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x11,0x11,0x5c,0x51,0x52,0x54,0x5c,0xf1,0x42,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x54,0x88,
-+0x22,0x21,0x38,0x43,0x80,0x78,0x23,0x22,0xfa,0x23,0x20,0x29,0x32,0x24,0x8,0x0,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x19,0x30,0xd7,0x10,0x11,0x11,0x11,0x52,0x24,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x20,0x28,0x3c,0x20,0xa6,0x7c,
-+0x3e,0x23,0x22,0x3e,0x22,0x22,0x3e,0x0,0xff,0x8,0x2a,0x2f,0x28,0x58,0x49,0x87,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0x20,0x58,0x84,0x6,0xfc,
-+0x0,0x7c,0x45,0x44,0x44,0x7f,0x12,0x14,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x40,0x0,0x40,0x20,0xfc,0x88,0x50,0xfe,0x22,0x24,0xfe,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,
-+0x0,0x8,0x7d,0x48,0x48,0x4b,0x4a,0x4c,0x49,0x49,0x49,0x79,0x49,0x1,0x0,0x0,0x40,0x20,0xfc,0x88,0x50,0xfe,0x22,0x24,0xfe,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,
-+0x10,0x10,0x10,0x20,0x2f,0x62,0xa2,0x24,0x24,0x28,0x2b,0x30,0x20,0x20,0x20,0x20,0x80,0x80,0x80,0x88,0xfc,0xa0,0xa0,0x90,0x90,0x88,0xee,0x84,0x80,0x80,0x80,0x80,
-+0x8,0x8,0x7e,0x8,0xfe,0x8,0x14,0x22,0xdf,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x20,0x28,0xfc,0x20,0xfe,0x20,0x50,0x8e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x13,0x78,0x57,0x54,0x5b,0x52,0x53,0x52,0x53,0x50,0x77,0x52,0x3,0x4,0x8,0x50,0xf8,0x40,0xfe,0x2,0xfc,0x48,0xf8,0x48,0xf8,0x0,0xfc,0x44,0x70,0xc0,0x7e,
-+0x10,0x11,0x11,0x11,0x59,0x55,0x51,0x91,0x10,0x11,0x12,0x14,0x10,0x11,0x12,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x54,0x88,
-+0x2,0x41,0x30,0x17,0x80,0x60,0x27,0xc,0x14,0x27,0xe0,0x21,0x22,0x24,0x28,0x20,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40,
-+0x41,0x22,0x14,0x7f,0x9,0x9,0x7f,0x48,0x49,0x7f,0x19,0x29,0x4d,0x8a,0x8,0x8,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xa4,0x24,0x24,0x24,0x4,0x14,0x8,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x24,0x24,0x3f,0x24,0x24,0x24,0x24,0x44,0x87,0x0,0x8,0xfc,0x8,0x8,0xf8,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0x8,0xfc,0x0,
-+0x0,0x7f,0x1,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0xc0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x40,0x37,0x10,0x0,0x8f,0x61,0x21,0xa,0x14,0x28,0xe2,0x22,0x24,0x20,0x22,0x21,0x8,0xfc,0x80,0x84,0xfe,0x20,0x10,0x90,0x8e,0x84,0xd0,0xa8,0xa8,0x88,0x80,0x0,
-+0x10,0x10,0x17,0x10,0x13,0xfe,0x13,0x12,0x13,0x12,0x1f,0xf2,0x4f,0x1,0x3,0x4,0x40,0x44,0xfe,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x0,0x3f,0x21,0x21,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,
-+0x4,0xe,0xf8,0x8,0xb,0x8,0xff,0x8,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x10,0x10,0x17,0x10,0x58,0x54,0x57,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x78,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0xc,0xf3,0x10,0x10,0x13,0xfe,0x10,0x11,0x7d,0x46,0x45,0x45,0x46,0x7c,0x45,0x0,0x8,0xfc,0x40,0x44,0xfe,0x90,0x88,0x48,0x46,0x44,0x48,0x64,0x54,0x54,0x40,0x80,
-+0x8,0x7c,0x48,0x4b,0x4a,0x7a,0x4a,0x4b,0x4a,0x7a,0x4a,0x4f,0x48,0x49,0x8b,0x1c,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0xfc,0x94,0x94,0x94,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x10,0x10,0x10,0xfc,0x12,0x15,0x18,0x31,0xd2,0x14,0x11,0x11,0x12,0x54,0x28,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0,
-+0x8,0xf,0x18,0x24,0x43,0xc,0x30,0xc1,0x1,0x3f,0x1,0x9,0x11,0x21,0x5,0x2,0x0,0xf0,0x20,0x40,0x80,0x60,0x1e,0x4,0x10,0xf8,0x0,0x20,0x18,0x8,0x0,0x0,
-+0x0,0x47,0x31,0x11,0x1,0x2,0xf4,0x1b,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0xf8,0x8,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0,
-+0x8,0x7c,0x48,0x48,0x48,0x7a,0x49,0x48,0x49,0x7a,0x4c,0x49,0x49,0x7a,0x44,0x8,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0,
-+0x4,0x7e,0x44,0x44,0x44,0x7e,0x11,0x10,0x5d,0x52,0x54,0x51,0x5d,0xf2,0x44,0x8,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0,
-+0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x11,0x29,0x45,0x81,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x11,0x11,0x1d,0x21,0x22,0x7c,0x93,0x10,0x7c,0x10,0x10,0x15,0x19,0x12,0x4,0x40,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x82,0x1,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x7a,0x44,0x8,0x0,0x10,0x38,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x13,0x10,0x14,0x58,0x50,0x51,0x96,0x10,0x11,0x10,0x28,0x24,0x40,0x87,0x0,0x0,0xfc,0x8,0x10,0x20,0x58,0x86,0x2,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x40,0x30,0x17,0x0,0x80,0x60,0x20,0x8,0x10,0x20,0xe0,0x20,0x20,0x20,0x21,0x20,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x0,0xfb,0x8,0x10,0x20,0x47,0x78,0x8,0x8,0x48,0x2b,0x10,0x28,0x47,0x80,0x10,0x38,0xc0,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x50,0xf8,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x17,0x20,0x23,0x62,0xa3,0x20,0x2f,0x28,0x33,0x20,0x20,0x20,0x21,0x20,0x80,0x48,0xfc,0x0,0xf8,0x8,0xf8,0x0,0xfe,0x2,0xf4,0x40,0x40,0x40,0x40,0x80,
-+0x2,0x1,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x7f,0x40,0x9f,0x1,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x10,0xf8,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x0,0x3f,0x20,0x3f,0x22,0x24,0x28,0x2f,0x21,0x21,0x2a,0x44,0x4a,0x91,0x20,0x0,0x88,0xfc,0x0,0x1c,0x70,0x10,0x14,0xfe,0x10,0x10,0x10,0x7c,0x0,0x6,0xfc,
-+0x20,0x20,0x2f,0x21,0xf2,0x24,0x28,0x2f,0x31,0xe1,0x29,0x25,0x22,0x25,0xa8,0x50,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x7c,0x0,0x0,0x86,0x7c,
-+0x10,0x20,0x7f,0x48,0x49,0x6a,0x5c,0x4f,0xf8,0x48,0x48,0x6c,0x5a,0x49,0x8a,0x1c,0x0,0xc,0xf0,0x90,0x10,0x14,0x7e,0x90,0x90,0x90,0x90,0xfc,0x80,0x0,0x86,0x7c,
-+0x3,0x40,0x30,0x10,0x3,0x2,0xf2,0x13,0x12,0x12,0x13,0x12,0x12,0x2a,0x44,0x3,0xf8,0x10,0xa0,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x48,0x68,0x50,0x6,0xfc,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xae,0xc2,0x82,0x82,0xfe,0x82,0x82,0xfe,0x82,0x0,0xfe,0x82,0x82,0xfe,0x82,0x82,0xba,0xaa,0xaa,0xaa,0xba,0x82,0x82,0x8a,0x84,
-+0x0,0x0,0x7b,0x49,0x48,0x4f,0x78,0x4b,0x4a,0x7b,0x4a,0x4b,0x48,0x7b,0x40,0xf,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x0,0xf8,0x48,0xf8,0x48,0xf8,0x40,0xf8,0x40,0xfe,
-+0x0,0x7f,0x40,0x40,0x5f,0x40,0x40,0x4f,0x48,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x14,0x8,
-+0x20,0x23,0x3e,0x42,0x82,0x7a,0x22,0x22,0xfa,0x22,0x22,0x26,0x2a,0x32,0x22,0x2,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x2,0x3f,0x22,0x22,0x32,0x2a,0x2a,0x22,0xff,0x22,0x22,0x22,0x22,0x42,0x4a,0x85,0x4,0xc,0x10,0x20,0x40,0x84,0xc,0x10,0xa0,0x42,0x6,0x8,0x10,0x20,0x40,0x80,
-+0x2,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x1,0x7f,0x0,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0xfc,
-+0x20,0x27,0x20,0x20,0xf8,0x27,0x74,0x6c,0xa7,0x24,0x24,0x27,0x24,0x24,0x24,0x24,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x20,0x27,0x20,0x20,0xf8,0x27,0x24,0x2c,0x37,0xe4,0x24,0x27,0x24,0x24,0xa4,0x44,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x10,0x14,0x3e,0x49,0x84,0x3f,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x27,0x20,0x20,0x40,0x44,0xfe,0x20,0x10,0xf8,0x8,0xe8,0x8,0xc8,0x48,0x48,0x48,0xc8,0x28,0x10,
-+0x10,0x10,0x20,0x27,0x48,0xf9,0x12,0x27,0x41,0xf9,0x41,0x1,0x1a,0xe2,0x44,0x8,0x80,0x40,0x48,0xfc,0x80,0x10,0x8,0xfc,0x24,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0x0,0x1f,0x10,0x97,0x50,0x50,0x17,0x34,0x57,0xd4,0x17,0x24,0x24,0x44,0x4,0x0,0x84,0xfe,0x0,0xf8,0xa0,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x44,0x44,0x54,0x48,
-+0x10,0x10,0x11,0x22,0x24,0x6b,0xb0,0x27,0x24,0x27,0x24,0x27,0x24,0x24,0x24,0x25,0x80,0x80,0x40,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x1a,0x33,0xd0,0x11,0x10,0x10,0x10,0x51,0x26,0x10,0xf8,0x10,0x10,0x10,0x14,0xe,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x0,0x8,0x6,0x22,0x18,0x8,0x0,0xff,0x0,0x1,0x1,0x2,0x4,0x18,0x60,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0xfe,0x80,0x0,0x60,0x10,0x8,0xc,0x4,
-+0x0,0x43,0x30,0x17,0x0,0x1,0xf2,0x17,0x11,0x11,0x12,0x12,0x14,0x28,0x44,0x3,0x18,0xe0,0x40,0xfc,0xe0,0x50,0x4e,0xf4,0x10,0x38,0x8,0x8,0x50,0x20,0x6,0xfc,
-+0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x78,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x40,0x20,0xf0,0x20,0x20,0x20,0x20,0x24,0x3e,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x3f,0x1,0x1,0xff,0x5,0x9,0x11,0x27,0x44,0x4,0x4,0x8,0x8,0x10,0x60,0xf0,0x0,0x0,0x4,0xfe,0x40,0x20,0x10,0xce,0x44,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x2,0x1,0x7f,0x44,0x88,0x11,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0xfe,0x42,0x34,0x10,0x40,0x24,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x7f,0x44,0x47,0x4c,0x52,0x41,0x42,0x46,0x49,0x70,0x46,0x41,0x40,0x7f,0x40,0x4,0xfe,0x4,0xe4,0x44,0x84,0x4,0x84,0x44,0x3c,0x94,0x4,0x4,0x84,0xfc,0x4,
-+0x8,0x8,0x10,0x27,0x48,0x8,0x17,0x30,0x52,0x92,0x12,0x12,0x15,0x14,0x18,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x48,0x7c,0x40,0x40,0x40,0xc6,0x7c,0x0,
-+0x0,0x40,0x30,0x11,0x2,0x5,0xf0,0x10,0x17,0x10,0x11,0x12,0x14,0x29,0x44,0x3,0x40,0x40,0xa0,0x10,0xe,0xf4,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x86,0xfc,
-+0x0,0x40,0x31,0x12,0x84,0x48,0x57,0x0,0x10,0x2f,0xe0,0x22,0x24,0x28,0x22,0x21,0x80,0x80,0x40,0x20,0x10,0x2e,0xf4,0x80,0x88,0xfc,0x80,0xa0,0x98,0x88,0x80,0x0,
-+0x0,0x3f,0x20,0x3f,0x21,0x2f,0x21,0x3f,0x21,0x22,0x27,0x2c,0x57,0x64,0x87,0x4,0x8,0xfc,0x8,0xf8,0x10,0xe0,0x44,0xfe,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0xf,0x0,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0xf,0x10,0x20,0x7f,0xa1,0x21,0x21,0x3f,0x22,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x88,0xa0,0x90,0x92,0x82,0x7e,0x0,
-+0x0,0x44,0x34,0x14,0x87,0x40,0x4f,0x8,0x17,0x24,0xe4,0x24,0x24,0x24,0x24,0x24,0x40,0x44,0x44,0x44,0xfc,0x0,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x0,0x7f,0x40,0x40,0x40,0x7f,0x41,0x42,0x44,0x48,0x50,0x60,0x42,0x41,0x7f,0x40,0x4,0xfe,0x84,0x84,0x94,0xfc,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x11,0xfd,0x13,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0xa0,0x90,0x84,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xff,0x0,0x0,
-+0xc,0xf1,0x10,0x14,0xfe,0x10,0x38,0x56,0x92,0x38,0x28,0x28,0x2a,0x4c,0x48,0x81,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0x20,0x58,0x44,0x82,0x2,
-+0x0,0x78,0x4c,0x4a,0x48,0x78,0x4e,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4d,0x88,0x18,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x84,0xa8,0x90,0x8c,0xc4,0x80,0x86,0x7c,
-+0x10,0x11,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7c,0x50,0x14,0x1d,0xf5,0x42,0x4,0x0,0x8,0x90,0x8,0xfc,0x8,0x8,0x8,0xf8,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x40,0x34,0x13,0x1,0xfc,0x8,0x17,0x39,0x55,0x91,0x11,0x11,0x11,0x12,0x14,0x10,0x4,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x42,0x54,0x48,0x66,0x42,0x80,0x46,0x3c,
-+0x3,0x42,0x32,0x13,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x13,0x12,0x28,0x44,0x3,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfc,0x8,0xd0,0x20,0x90,0xc,0x4,0x0,0x6,0xfc,
-+0x0,0x3f,0x2,0x2,0xff,0x4,0x4,0x8,0x10,0x2f,0x48,0x88,0x8,0x8,0xf,0x8,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x20,0x10,0xee,0x24,0x20,0x20,0x20,0xe0,0x20,
-+0x1,0x1,0x1,0xff,0x1,0x21,0x21,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x2,0x2,0xfe,0x0,
-+0x7f,0x41,0x7f,0x52,0x7f,0x52,0x7f,0x52,0xa1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x78,0x48,0x4c,0x80,0xfc,0x48,0x30,0x4e,0x84,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x11,0x1d,0x31,0xd7,0x11,0x11,0x11,0x11,0x50,0x20,0x80,0x80,0x84,0xfe,0x20,0x20,0x24,0x3e,0xe4,0x24,0x34,0x28,0x22,0x2,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x14,0x18,0x37,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x10,0x38,0xc0,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x7d,0x48,0x48,0x4b,0x7a,0x4a,0x4a,0x4b,0x7a,0x48,0x48,0x49,0x49,0x8a,0x1c,0x0,0x10,0xa0,0x8,0xfc,0x8,0x8,0x8,0xf8,0xa8,0xa0,0xa0,0x20,0x22,0x22,0x1e,
-+0x10,0x20,0x7c,0x45,0x55,0x46,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x14,0x8,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xe0,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x7c,0x44,0x49,0x49,0x52,0x48,0x48,0x44,0x44,0x44,0x68,0x50,0x40,0x40,0x40,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xe0,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x4,0x7e,0x4,0x24,0x24,0x27,0x24,0x24,0x3e,0x2,0x2,0x1a,0xe2,0x42,0x15,0xa,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x50,0x50,0x50,0x90,0x88,0xe,0x4,
-+0x4,0x7e,0x4,0x25,0x25,0x26,0x24,0x24,0x3e,0x2,0x2,0x1a,0xe2,0x42,0x14,0x8,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xe0,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x20,0x27,0x24,0x25,0xfd,0x26,0x75,0x6d,0xa4,0x24,0x26,0x25,0x24,0x24,0x24,0x24,0x10,0x90,0x94,0x7e,0x10,0x24,0x7e,0xa4,0xa4,0xbc,0xa4,0x24,0x3c,0x24,0x24,0x2c,
-+0x0,0x3f,0x2,0x11,0xd,0x4,0x2,0x2,0xff,0x4,0x8,0x18,0x6,0x1,0x6,0x18,0x78,0x80,0x8,0x18,0x20,0x40,0x0,0x4,0xfe,0x10,0x10,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x10,0x13,0x10,0xfc,0x11,0x15,0x19,0x33,0xd5,0x19,0x11,0x11,0x11,0x51,0x21,0x0,0x4,0xfe,0x80,0x80,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0xb,0x7c,0x48,0x4f,0x49,0x49,0x49,0x4f,0x49,0x49,0x79,0x4f,0x0,0x0,0x7,0x38,0xc0,0x40,0x44,0xfe,0x50,0x50,0x54,0xfe,0x50,0x50,0x54,0xfe,0x40,0x48,0xfc,
-+0x10,0x10,0x10,0x13,0xfa,0x14,0x11,0x1a,0x31,0xd0,0x10,0x11,0x12,0x12,0x52,0x21,0x40,0x20,0x0,0xfe,0x2,0x94,0x8,0x4,0xf8,0x10,0x60,0x80,0x0,0x2,0x2,0xfe,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x4f,0x48,0x48,0x48,0x4f,0x78,0x48,0x0,0xf,0x0,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0x7c,0x54,0x57,0x54,0x54,0x7c,0x51,0x14,0x1c,0xf4,0x43,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x40,0x30,0x17,0x80,0x60,0x2f,0x8,0x10,0x20,0xe7,0x20,0x20,0x20,0x2f,0x20,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0xfc,0x24,0x27,0x24,0x24,0x44,0x29,0x10,0x28,0x44,0x87,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x7f,0x8,0x8,0xf,0x8,0x8,0xa,0x11,0x11,0x10,0x24,0x28,0x30,0x60,0x0,0x8,0xfc,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x22,0x1e,0x0,
-+0x40,0x30,0x10,0x7,0xfc,0x8,0x10,0x37,0x58,0x94,0x11,0x11,0x12,0x14,0x10,0x10,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,0x40,
-+0x0,0x7f,0x3,0x5,0x19,0x61,0x1,0x7f,0x1,0x9,0x9,0x9,0x9,0x9,0xff,0x0,0x8,0xfc,0x0,0x60,0x18,0x8,0x0,0xfc,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,
-+0x8,0x8,0x8,0x10,0x1f,0x21,0x21,0x62,0x92,0xa,0x4,0x8,0x10,0x20,0x40,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x48,0x46,0x42,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x8,0xfc,0x3,0x2,0x7d,0x49,0x49,0x49,0x7a,0x2,0x4d,0x48,0x10,0xf9,0x2,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0x54,0x5c,0x94,0x90,0x12,0xe,0x0,
-+0x1,0xff,0x4,0x14,0x34,0x44,0x3f,0x0,0x1f,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0xf0,0x10,0xf0,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x40,0x3f,0x10,0x2,0x86,0x68,0x27,0x8,0x17,0x24,0xe7,0x20,0x20,0x20,0x20,0x20,0x44,0xfe,0xa0,0xa8,0xa6,0xa2,0xf8,0x8,0xf8,0x0,0xfc,0x4,0x4,0x44,0x28,0x10,
-+0x8,0xfd,0x10,0x10,0x10,0x13,0x7c,0x10,0x10,0x10,0x10,0x1c,0xf1,0x41,0x2,0x4,0x8,0xfc,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x8,0x7d,0x0,0x0,0x4,0xfe,0x28,0x28,0x28,0x28,0x28,0x2a,0x2c,0x48,0x80,0x1,0x4,0xfe,0x10,0x24,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x58,0x44,0x82,0x2,
-+0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0xe,0x2,0x5,0x4,0x4,0x8,0x8,0x30,0xc0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xa0,0xa2,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x13,0x16,0x5a,0x51,0x50,0x90,0x13,0x10,0x10,0x28,0x25,0x45,0x82,0x4,0x40,0x20,0xfe,0x2,0x14,0xf8,0x0,0x8,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x1f,0x0,0x0,0x7f,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x8,0xff,0x12,0x15,0x21,0x21,0x79,0xaa,0x2a,0x2d,0x28,0x28,0x39,0x22,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0x54,0x5c,0x94,0x90,0x12,0xe,0x0,
-+0x10,0x10,0x11,0x12,0xfc,0x13,0x12,0x1a,0x32,0xd3,0x12,0x10,0x10,0x11,0x52,0x24,0x80,0x80,0xf8,0x10,0x24,0xfe,0x44,0x44,0x44,0xfc,0x64,0xa0,0xa2,0x22,0x1e,0x0,
-+0x0,0x8,0x7d,0x4a,0x4c,0x4b,0x4a,0x7a,0x4a,0x4b,0x4a,0x48,0x78,0x49,0x2,0x4,0x80,0x80,0xf8,0x10,0x24,0xfe,0x44,0x44,0x44,0xfc,0x64,0xa0,0xa2,0x22,0x1e,0x0,
-+0x10,0x10,0x21,0x7d,0x46,0x44,0x44,0x7c,0x47,0x44,0x44,0x44,0x7d,0x45,0x2,0x4,0x40,0x20,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x20,0x20,0x27,0x34,0xaa,0xa2,0xa3,0xa4,0x24,0x24,0x2a,0x21,0x21,0x22,0x24,0x28,0x80,0x40,0xfe,0x2,0x4,0x0,0xbc,0xa4,0xa4,0xb4,0xa8,0x20,0x22,0x22,0x1e,0x0,
-+0x2,0x1,0x7f,0x40,0x90,0x1e,0x12,0x12,0x22,0x32,0x4a,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0xfe,0x2,0x4,0xf8,0x88,0x88,0x88,0xa8,0x90,0x80,0x82,0x82,0x7e,0x0,
-+0x20,0x20,0x23,0x22,0xfd,0x49,0x49,0x49,0x4a,0x92,0x55,0x20,0x50,0x49,0x82,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0x5c,0x54,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x0,0xff,0x2,0x2,0x2,0x3,0x2,0x2,0x4,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x8,0x7c,0x4b,0x4a,0x4d,0x79,0x49,0x49,0x4a,0x7a,0x4d,0x48,0x48,0x49,0x4a,0x9c,0x40,0x20,0xfe,0x2,0x4,0xdc,0x54,0x54,0x54,0x54,0x5c,0x94,0x90,0x12,0xe,0x0,
-+0x0,0x40,0x37,0x10,0x80,0x60,0x20,0xb,0x10,0x20,0xe0,0x20,0x20,0x20,0x2f,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x2,0x1,0x1,0x0,0xff,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x30,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x7f,0x40,0x42,0x62,0x54,0x54,0x48,0x48,0x54,0x52,0x62,0x61,0x42,0x40,0x40,0x4,0xfe,0x4,0xc,0x8c,0x54,0x54,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x14,0x8,
-+0x8,0x8,0x10,0x27,0x40,0x8,0x8,0x10,0x37,0x50,0x90,0x10,0x10,0x10,0x1f,0x10,0x80,0x40,0x8,0xfc,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x0,0x7,0x78,0x48,0x48,0x48,0x78,0x4f,0x48,0x48,0x48,0x78,0x40,0xf,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0xa,0xff,0x20,0x20,0x26,0x38,0x20,0x0,0x3f,0x1,0x1f,0x1,0x1,0xff,0x0,0x4,0x7e,0x44,0x7c,0x44,0x7c,0x44,0x8c,0x0,0xf8,0x0,0xf0,0x0,0x4,0xfe,0x0,
-+0x2,0x1,0xff,0x10,0x10,0x10,0x10,0x1f,0x0,0x2,0x11,0x50,0x50,0x90,0xf,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x2,0x1,0x7f,0x10,0x10,0x10,0x1f,0x2,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x0,0x8,0xfc,0x0,0x0,0x20,0xf0,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x0,0x0,0x0,0x3f,0x20,0x3f,0x24,0x24,0x3f,0x29,0x31,0x2a,0x24,0x4a,0x91,0x2,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0xc8,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x1,0x21,0x3f,0x0,0x7c,0x11,0xff,0x39,0x55,0x11,0xfd,0x24,0x48,0x30,0x29,0x46,0x0,0x8,0xf8,0x20,0x44,0xfe,0x24,0xfc,0x24,0xfc,0x44,0x60,0xa8,0xa2,0x22,0x1e,
-+0x12,0x12,0x2a,0x4a,0x8a,0x1f,0x20,0x7f,0xa0,0x2f,0x29,0x29,0x29,0x29,0x30,0x20,0x10,0x10,0x90,0xa4,0xbe,0xc4,0x24,0xa8,0x28,0x28,0x10,0x50,0xa8,0x28,0x46,0x84,
-+0x8,0xf,0x10,0x20,0x5f,0x10,0x10,0x13,0x12,0x12,0x12,0x12,0x22,0x22,0x41,0x80,0x0,0xe0,0x40,0x88,0xfc,0x0,0x10,0xf8,0x10,0x10,0x50,0x20,0x2,0x2,0xfe,0x0,
-+0x1,0x1,0x1,0xff,0x1,0x1,0x3f,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x4,0xfe,0x0,0x10,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x28,0x10,0x0,
-+0x0,0x40,0x2f,0x20,0x0,0x7,0xe0,0x20,0x2f,0x20,0x20,0x20,0x20,0x50,0x8f,0x0,0x80,0x88,0xfc,0x80,0x90,0xf8,0x80,0x88,0xfc,0x88,0x88,0xa8,0x90,0x86,0xfc,0x0,
-+0x10,0x10,0x11,0x12,0xff,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x12,0x14,0x14,0x18,0x80,0xf8,0x10,0x24,0xfe,0x0,0x8,0xfc,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x4f,0x41,0x5f,0x41,0x41,0x41,0x41,0x41,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0xe4,0x4,0xf4,0x14,0x14,0x54,0x24,0x4,0xfc,0x4,
-+0x0,0x8,0x7c,0x49,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x10,0x10,0x10,0x11,0x59,0x57,0x55,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x0,0x10,0xc,0x4,0x0,0xff,0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x40,0x0,0x80,0x80,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x28,0x10,
-+0x0,0x44,0x24,0x24,0x88,0x5f,0x42,0x4,0x28,0x5f,0xc0,0x40,0x43,0x5c,0x48,0x40,0x40,0x50,0x44,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x10,0x10,0x20,0x21,0x49,0xfb,0x15,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe1,0x41,0x1,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x8,0x8,0xff,0x9,0x1,0x7f,0x1,0x3f,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0xf8,0x0,0xfc,0x4,0x4,0x4,0x28,0x10,0x0,
-+0x4,0x4,0xff,0x4,0x1f,0x1,0x7f,0x5,0x19,0x2,0xff,0x4,0x8,0x7,0x4,0x18,0x40,0x44,0xfe,0x40,0xf0,0x0,0xfc,0x40,0x30,0x4,0xfe,0x20,0x40,0x80,0x60,0x10,
-+0x0,0x3f,0x1,0x1,0xff,0x5,0x9,0x31,0x5,0xff,0x4,0x8,0x4,0x3,0xc,0x30,0x30,0xc0,0x0,0x4,0xfe,0x40,0x38,0x10,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x57,0x90,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x8,0xa,0x9,0x10,0x17,0x30,0x50,0x90,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x10,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xc4,0xa4,0x14,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x2f,0x21,0x21,0x2f,0x21,0x21,0x5f,0x41,0x81,0x0,0x8,0xfc,0x8,0x8,0xf8,0x20,0xf0,0x8,0xfc,0x0,0x8,0xfc,0x0,0x2,0x2,0xfe,
-+0x10,0x10,0x20,0x27,0x48,0xf8,0x17,0x20,0x40,0xff,0x0,0x0,0x1c,0xe0,0x40,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x8,0x8,0xff,0x8,0x3f,0x21,0x3f,0x20,0x3f,0x20,0x3f,0x44,0x56,0x95,0x24,0xc,0x20,0x24,0xfe,0x20,0x8,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x28,0x10,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x4f,0x48,0x48,0x49,0x7a,0x44,0x8,0x0,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xe0,0x50,0x50,0x4e,0x44,0x40,0x40,
-+0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x0,0xff,0x10,0x12,0x11,0x10,0x14,0x18,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x0,0x20,0x40,0x80,0x60,0x1c,0x8,
-+0x0,0x3f,0x21,0x3f,0x21,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x4f,0x4a,0x7a,0x4a,0x2,0x3,0x2,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x88,0x50,0x20,0x90,0xe,0x4,
-+0x6,0xf8,0x11,0x11,0xff,0x39,0x55,0x91,0x11,0xfe,0x24,0x44,0x28,0x11,0x2a,0x44,0x40,0x84,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0x40,0x60,0xa0,0xa8,0x22,0x22,0x1e,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x52,0x92,0x11,0x11,0x10,0x10,0x10,0x1f,0x10,0x10,0x80,0x40,0x40,0x8,0xfc,0x0,0x8,0x8,0x10,0x10,0x90,0xa0,0x24,0xfe,0x0,0x0,
-+0x0,0x47,0x34,0x17,0x84,0x67,0x20,0xb,0x12,0x23,0xe2,0x23,0x22,0x22,0x22,0x22,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x47,0x24,0x27,0x4,0x7,0xe0,0x23,0x22,0x23,0x22,0x23,0x2a,0x32,0x22,0x2,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x1,0x3f,0x21,0x21,0x3f,0x20,0x3f,0x20,0x3f,0x24,0x24,0x55,0x54,0xa4,0x14,0x8,0x8,0x88,0x8,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x88,0x8,0x28,0x10,
-+0x3f,0x21,0x3f,0x20,0x3f,0x20,0x3f,0x24,0x56,0x95,0x2c,0x2,0x51,0x50,0x90,0xf,0x8,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x28,0x10,0x0,0x84,0x92,0x12,0xf0,
-+0x0,0x0,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0xff,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x4,0xfe,0x0,
-+0x1,0x0,0x1f,0x10,0x93,0x52,0x53,0x12,0x33,0x50,0xd7,0x14,0x24,0x24,0x4f,0x0,0x0,0x84,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xfe,0x0,
-+0x0,0x43,0x32,0x12,0x83,0x62,0x22,0xb,0x10,0x27,0xe4,0x24,0x24,0x24,0x2f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xa4,0xfe,0x0,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1e,0xe2,0x41,0x2,0x40,0x20,0x20,0x4,0xfe,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x2,0x1,0x1,0xff,0x10,0x8,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x80,0x60,0x10,0xe,0x4,
-+0x20,0x1b,0x48,0x40,0x5f,0x44,0x47,0x44,0x47,0x44,0x44,0x5f,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x44,0xc4,0x44,0xc4,0x44,0x44,0xf4,0x44,0x44,0x54,0x8,
-+0x10,0x10,0x20,0x20,0x4f,0xfa,0x11,0x21,0x40,0xfc,0x0,0x0,0x1c,0xe1,0x42,0x4,0x80,0x40,0x40,0x4,0xfe,0x8,0x10,0x10,0xa0,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x1,0x9,0x7d,0x49,0x4a,0x4c,0x48,0x48,0x49,0x49,0x49,0x7a,0x4c,0x1,0x2,0x0,0x0,0x0,0x4,0xfe,0xa4,0xa4,0xa4,0xa4,0x24,0x24,0x44,0x44,0x84,0x4,0x28,0x10,
-+0x8,0x1c,0xf0,0x11,0x12,0xff,0x10,0x33,0x38,0x57,0x50,0x95,0x15,0x19,0x10,0x10,0x40,0x40,0xf8,0x10,0x24,0xfe,0x4,0xfc,0x4,0xfc,0x40,0x24,0x22,0xa,0xf8,0x0,
-+0x2,0x1,0x7f,0x8,0x4,0x3,0x1c,0xe2,0x1f,0x1,0x2,0x3f,0x9,0x11,0x25,0x2,0x0,0x8,0xfc,0x20,0x40,0x80,0x70,0x4e,0x80,0x20,0x10,0xf0,0x20,0x18,0x8,0x0,
-+0x20,0x1b,0x8,0x40,0x40,0x4f,0x48,0x48,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8,
-+0x0,0x10,0x79,0x52,0x54,0x59,0x53,0x50,0x57,0x50,0x54,0x72,0x54,0x0,0x2,0x1,0x20,0xa0,0x10,0x48,0x86,0x14,0xf8,0x0,0xbc,0x84,0xa4,0x94,0xa4,0x84,0x94,0x8,
-+0x4,0x4,0x9,0x12,0xe4,0xf,0x0,0x3e,0x2,0x22,0x12,0xa,0x12,0x22,0xa,0x4,0x40,0x40,0x20,0x10,0x4e,0xe0,0x8,0xfc,0x8,0x88,0x48,0x28,0x48,0x88,0x28,0x10,
-+0x4,0x4,0x9,0x12,0xe4,0xf,0x0,0x7f,0x8,0x8,0xf,0x9,0x8,0xb,0x1c,0x0,0x40,0x40,0x20,0x10,0x4e,0xe0,0x8,0xfc,0x0,0x20,0xf0,0x20,0xa0,0x22,0x22,0x1e,
-+0x10,0x10,0x14,0x12,0xf8,0x10,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x15,0x58,0x20,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x28,0x16,0xfc,0x0,
-+0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x55,0x7d,0x55,0x11,0x15,0x1d,0xe5,0x41,0x1,0x8,0xfc,0x88,0x88,0x88,0xf8,0x24,0xfe,0x24,0x24,0x54,0x8c,0x4,0x4,0x14,0x8,
-+0x0,0x43,0x32,0x12,0x82,0x63,0x20,0xf,0x14,0x24,0xe4,0x24,0x25,0x24,0x24,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x44,0xfe,0x44,0x44,0x44,0xa4,0x14,0x4,0x14,0x8,
-+0x2,0x1,0x7f,0x44,0x88,0x1f,0x28,0x8,0xf,0x1,0x3f,0x21,0x22,0x2c,0x20,0x20,0x0,0x0,0xfe,0x42,0x24,0xf0,0x28,0x20,0xe0,0x8,0xfc,0x8,0x88,0x68,0x28,0x10,
-+0x4,0xe,0x78,0x8,0x8,0xff,0x8,0x8,0xa,0xc,0x18,0x68,0x9,0xa,0x28,0x10,0x80,0xa0,0x90,0x90,0x84,0xfe,0x80,0x90,0x90,0x60,0x40,0xa0,0x20,0x14,0x14,0xc,
-+0x10,0x14,0xfe,0x10,0x7c,0x45,0x7e,0x44,0x7d,0x10,0xfe,0x11,0x10,0x10,0x10,0x10,0x20,0x20,0x50,0x50,0x88,0x16,0x94,0x50,0x10,0x94,0x1e,0xf0,0x10,0x10,0x10,0x10,
-+0x2,0x7f,0x48,0x48,0x48,0x7e,0x42,0x42,0x42,0x7e,0x48,0x48,0x4a,0x7f,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x17,0x1a,0x32,0xd3,0x12,0x12,0x14,0x14,0x5b,0x20,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x40,0x88,0xfc,0x20,0xf8,0x20,0x24,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x80,0x60,0x2f,0x8,0x10,0x20,0xe0,0x20,0x21,0x22,0x24,0x28,0x8,0x3c,0xc0,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x0,0x7f,0x1,0x11,0x11,0x11,0x11,0x29,0x29,0x45,0x85,0x1,0x1,0xff,0x0,0x0,0x8,0xfc,0x0,0x10,0x10,0x10,0x10,0x28,0x28,0x44,0x84,0x0,0x4,0xfe,0x0,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x48,0x78,0x47,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x10,0x10,0x17,0x18,0x10,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x2,0x4,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0xa0,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x28,0x10,
-+0x0,0x23,0x18,0x8,0x80,0x6f,0x21,0x9,0x11,0x23,0xe0,0x20,0x20,0x20,0x20,0x20,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x40,0x37,0x10,0x0,0x2,0xe2,0x22,0x22,0x25,0x29,0x20,0x28,0x30,0x20,0x1f,0x0,0x8,0xfc,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0x64,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x3f,0x20,0x3f,0x20,0x2f,0x21,0x22,0x27,0x20,0x20,0x3f,0x40,0x40,0xbf,0x0,0x8,0xfc,0x8,0xf8,0x0,0xfc,0x0,0x20,0xf0,0x80,0x88,0xfc,0x80,0x84,0xfe,0x0,
-+0x0,0x3f,0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x20,0xf0,0x0,0x0,0x0,0x8,0xfc,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x2,0x2,0x7f,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x0,0xf0,0x0,0x8,0xfc,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x10,0x13,0x10,0x10,0xfd,0x10,0x39,0x35,0x57,0x50,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7f,0x4,0x4,0x3f,0x8,0x8,0xff,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x8,0xfc,0x0,0x20,0xf0,0x20,0x24,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x1f,0x10,0x10,0x1f,0x0,0x0,0x3f,0x1,0x1,0xff,0x2,0x2,0x4,0x18,0x60,0x10,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,
-+0x0,0x1f,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x22,0x22,0x3f,0x8,0x10,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0xfc,0x10,0x50,0x20,
-+0x0,0x2,0x3f,0x0,0x0,0xff,0x4,0x4,0x27,0x24,0x24,0x24,0x27,0xf8,0x40,0x0,0x40,0x50,0x48,0x48,0x40,0xfe,0x40,0x40,0x40,0x40,0x20,0x20,0xa0,0x12,0xa,0x6,
-+0x0,0x0,0x7f,0x2,0x2,0x2,0x2,0x3f,0x4,0x4,0x4,0x8,0x8,0x8,0xff,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xfc,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x10,0x13,0x10,0x10,0xfd,0x10,0x15,0x19,0x37,0xd0,0x11,0x11,0x11,0x11,0x51,0x21,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0xf,0x11,0x11,0x21,0x41,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x3f,0x52,0x92,0x7f,0x12,0x12,0xff,0x10,0x1e,0x22,0x52,0xd,0x18,0xe0,0x0,0x8,0xfc,0x90,0x90,0xfc,0x90,0x94,0xfe,0x10,0xfc,0x90,0x94,0xfe,0x10,0x10,0x10,
-+0x10,0x10,0x17,0x20,0x20,0x60,0xa0,0x27,0x21,0x21,0x21,0x22,0x22,0x22,0x3f,0x20,0x0,0x8,0xfc,0x80,0x80,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x9,0x9,0x9,0x12,0x15,0x31,0x51,0x91,0x1f,0x12,0x12,0x12,0x13,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x48,0x28,0x8,0xfe,0x48,0x28,0x8,0xfc,0x8,0x28,0x10,
-+0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x10,0x1c,0xf3,0x40,0x0,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x83,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x3f,0x1,0x7f,0x51,0x89,0x14,0x7,0xc,0x13,0xc,0xf2,0xf,0x2,0x4,0x8,0x30,0xf8,0x0,0xfe,0x12,0x24,0x10,0xe0,0x40,0x80,0x60,0x1e,0xe4,0x20,0x20,0xa0,0x40,
-+0x0,0xb,0x7c,0x48,0x49,0x48,0x49,0x79,0x4f,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x11,0x11,0x51,0x51,0x7b,0x54,0x90,0x1c,0x31,0xd1,0x12,0x12,0x14,0x10,0x11,0x10,0x0,0x0,0x0,0x4,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x10,0x10,0x10,0x1f,0x24,0x44,0x84,0x8,0x8,0x8,0x10,0x11,0x21,0x42,0x4,0x8,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x84,0x84,0x84,0x4,0x4,0x4,0x28,0x10,
-+0x8,0x8,0xf,0x18,0x26,0x41,0x6,0x1a,0xe2,0x1f,0x2,0x2,0x4,0x4,0x8,0x30,0x0,0x0,0xf0,0x20,0xc0,0x0,0xc0,0x30,0xe,0xf4,0x10,0x10,0x10,0x10,0xa0,0x40,
-+0x10,0x13,0x10,0x10,0x59,0x54,0x51,0x91,0x17,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x43,0x32,0x12,0x3,0x0,0xe7,0x20,0x20,0x2f,0x20,0x20,0x28,0x31,0x22,0x4,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x4,0x4,0x3f,0x4,0x4,0x4,0xff,0x0,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,
-+0x2,0x7f,0x44,0x44,0x5f,0x51,0x51,0x5f,0x44,0x44,0x7f,0x0,0x24,0x22,0x42,0x80,0x4,0x7e,0x44,0x44,0x44,0x7c,0x40,0x40,0x44,0x44,0x3c,0x0,0x88,0x44,0x42,0x2,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x12,0x12,0x14,0x10,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x0,0xff,0x4,0x4,0x4,0x7f,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x34,0x4,0x4,0xfc,0x4,
-+0x0,0xb,0xfc,0x10,0x10,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x4,0xfe,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0x5c,0x84,0x4,0x4,0xfc,0x4,
-+0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x7d,0xa6,0x24,0x24,0x24,0x24,0x3c,0x24,0x1,0x40,0x40,0x40,0x7e,0x42,0x82,0x84,0x44,0x24,0x18,0x8,0x10,0x20,0x40,0x80,0x0,
-+0x1,0x9,0x7d,0x49,0x4f,0x49,0x4b,0x7b,0x4d,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x0,0x6,0x38,0x20,0xe0,0x20,0xbe,0x68,0x28,0x28,0x28,0x28,0x48,0x48,0x88,0x8,
-+0x0,0x8,0x7f,0x48,0x4b,0x48,0x4b,0x4a,0x4b,0x49,0x4f,0x78,0x4b,0x2,0x2,0x3,0x40,0x48,0xfc,0x40,0xf8,0x0,0xf8,0x8,0xf8,0x10,0xfe,0x8,0xfc,0x8,0x8,0xf8,
-+0x0,0x7,0x7a,0x4a,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x7a,0x4c,0x8,0x11,0x2,0x8,0xfc,0x8,0x8,0x10,0x20,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x11,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x12,0x10,0x15,0x1a,0x10,0x0,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x54,0x54,0xa4,0x24,0x44,0xa8,0x10,
-+0x10,0x10,0x57,0x50,0x7c,0x50,0x97,0x1a,0x32,0xd2,0x12,0x12,0x13,0x12,0x13,0x12,0x0,0x4,0xfe,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x8c,0x4,0x4,0xfc,0x4,
-+0x9,0x1c,0xf0,0x10,0x11,0xfc,0x13,0x38,0x35,0x51,0x53,0x95,0x11,0x10,0x10,0x10,0x4,0xd8,0x20,0xd8,0x4,0x80,0xfe,0xa0,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x2,0x4,0x1f,0x10,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x2,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0xf0,0x10,0x10,0xf0,0x0,0x84,0x92,0x12,0xf0,
-+0x8,0x6,0x1,0x6,0x3a,0x2,0xff,0x4,0x8,0x1f,0x28,0xc8,0x8,0x8,0x0,0x0,0x30,0xc0,0x0,0xc0,0x38,0x0,0xfe,0x80,0x88,0xfc,0x88,0x88,0xa8,0x90,0x80,0x80,
-+0x0,0x3f,0x11,0x9,0x5,0xff,0x3,0x5,0x9,0x31,0x0,0x12,0x51,0x50,0x90,0xf,0xf8,0x0,0x10,0x20,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0,0x0,0x84,0x92,0x12,0xf0,
-+0x0,0x78,0x4f,0x48,0x49,0x7a,0x48,0x49,0x4e,0x7a,0x49,0x48,0x49,0x4a,0x48,0x98,0x40,0x44,0xfe,0xe0,0x58,0x48,0xa0,0x10,0x4e,0x48,0x50,0xe0,0x58,0x48,0x40,0xc0,
-+0x2,0x2,0x2,0x7,0x4,0x8,0x10,0x24,0x43,0x1,0x0,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0x8,0xfc,0x8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,
-+0x11,0x11,0x17,0x11,0x59,0x55,0x5f,0x90,0x13,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x12,0x56,0x5b,0x52,0x93,0x12,0x12,0x13,0x28,0x2a,0x46,0x8a,0x1,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x80,0x60,0x2c,0xa,0xf8,
-+0x11,0x10,0x10,0x14,0x59,0x50,0x57,0x90,0x11,0x11,0x13,0x2d,0x29,0x45,0x80,0x0,0x4,0xd8,0x20,0xd8,0x4,0x80,0xfe,0xa0,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x40,0x37,0x12,0x1,0x80,0x61,0x23,0x8,0x10,0x27,0xe0,0x3f,0x20,0x21,0x22,0x2c,0x1c,0xe0,0x48,0x50,0x80,0x10,0xf8,0x40,0x84,0xfc,0x40,0xfe,0xa0,0x10,0xe,0x4,
-+0x20,0x18,0x8,0x0,0x81,0x61,0x22,0xb,0x14,0x20,0xe0,0x20,0x20,0x21,0x22,0x2c,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x8,0xc8,0x50,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x3f,0x24,0x22,0x24,0x28,0x24,0x27,0x28,0x3f,0x40,0x40,0x80,0x0,0x8,0xfc,0x8,0xf8,0x90,0xa0,0x98,0x88,0x80,0xf0,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x21,0x22,0x27,0x24,0xff,0x24,0x77,0x62,0xbf,0x24,0x27,0x24,0x24,0x2a,0x31,0x20,0x10,0x10,0x90,0x94,0xbe,0xc4,0xa4,0x28,0xe8,0x28,0x90,0x90,0xa8,0xa8,0x46,0x84,
-+0x2,0x2,0x7f,0x4,0x4,0xb,0x10,0x22,0x1,0xff,0x5,0x9,0x38,0xca,0xc,0x8,0x40,0x28,0xfc,0x80,0xf0,0x84,0x7c,0x0,0x4,0xfe,0x8,0x10,0xa0,0x60,0x1c,0x8,
-+0x1,0x0,0x3f,0x22,0x22,0x3f,0x22,0x22,0x23,0x20,0x2f,0x28,0x48,0x48,0x88,0x0,0x0,0x88,0xfc,0x20,0x24,0xfe,0x20,0x20,0xe0,0x88,0xfc,0x88,0x88,0xa8,0x90,0x80,
-+0x0,0x0,0xff,0x0,0x8,0x4,0x2,0x2,0x0,0x3,0xc,0x30,0x10,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x24,0xc4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x10,0x29,0x47,0x85,0x0,0x40,0x84,0xfe,0x4,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfc,0x40,0x20,0x2c,0xa,0xf8,
-+0x1,0x7f,0x1,0x3f,0x0,0x1f,0x10,0x1f,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x10,0x11,0x11,0x1d,0x21,0x22,0x7c,0x93,0x10,0x7c,0x10,0x10,0x14,0x19,0x12,0x4,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x50,0x50,0x50,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x42,0x32,0x13,0x82,0x64,0x20,0xf,0x10,0x20,0xe0,0x21,0x21,0x22,0x24,0x28,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xa0,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x7f,0x4,0x4,0x8,0x3f,0x1,0x2,0x4,0x3f,0x1,0x9,0x9,0x11,0x25,0x2,0x38,0xc0,0x0,0x10,0x20,0xc0,0x0,0x20,0x10,0xf8,0x8,0x20,0x10,0x8,0x8,0x0,
-+0x0,0x79,0x4b,0x54,0x50,0x63,0x52,0x4b,0x4a,0x4b,0x68,0x51,0x42,0x44,0x41,0x40,0x40,0x50,0x4c,0x44,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x0,0x0,0x7e,0x2,0x43,0x24,0x14,0x14,0x8,0x14,0x12,0x22,0x40,0x80,0x1,0x2,0x40,0x50,0x48,0x40,0xfe,0x40,0x44,0x44,0x48,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x10,0x10,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe1,0x41,0x1,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x0,0x0,0x7b,0x4a,0x4d,0x78,0x48,0x48,0x7f,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x40,0x20,0xfe,0x22,0xfc,0x20,0xf8,0x20,0xfe,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x13,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1e,0xf2,0x40,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x30,0x28,0x24,0x24,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x7f,0x40,0x5f,0x51,0x51,0x5f,0x51,0x51,0x5f,0x51,0x41,0x41,0x41,0x7f,0x0,0x8,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x0,0x0,0x4,0xfe,0x0,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3e,0x22,0x3e,0x20,0x3e,0x20,0x3e,0x20,0x20,0x23,0xf0,0x0,0xfe,0x12,0x64,0x10,0xf8,0x8,0xf8,0x0,0xf8,0x88,0x50,0x20,0xde,0x4,
-+0x10,0x10,0x23,0xfe,0x25,0x50,0x51,0xfc,0x13,0x10,0x1d,0xf1,0x51,0x11,0x11,0x11,0x40,0x20,0xfe,0x22,0xfc,0x20,0xf8,0x20,0xfe,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x17,0x7c,0x54,0x54,0x57,0x54,0x74,0x57,0x54,0x54,0x57,0x74,0x54,0x4,0x4,0x4,0xbe,0x84,0x84,0x84,0xbc,0x0,0x7c,0xc4,0x44,0x28,0x90,0x28,0x28,0x46,0x84,
-+0x10,0x10,0x10,0x55,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x7c,0x4,0x0,0x1,0x6,0x20,0x20,0x28,0xfc,0x20,0x24,0xa8,0x20,0xfe,0x20,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x8,0x8,0x8,0x17,0x10,0x32,0x51,0x90,0x1f,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x44,0x2c,0x11,0x28,0x49,0x88,0x8,0x1b,0x28,0x48,0x88,0x8,0x8,0x51,0x26,0x20,0x20,0x28,0xfc,0x20,0x24,0xa8,0x20,0xfe,0x20,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0xff,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0xfe,0x0,0x0,0x0,0x80,0x40,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x3f,0x20,0x3f,0x22,0x27,0x24,0x27,0x24,0x27,0x24,0x27,0x22,0x47,0x4a,0x81,0x1e,0xfe,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xf0,0x20,0xc0,0x3e,
-+0x7f,0x2,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x8,0xf,0x14,0x22,0x41,0x6,0x38,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf0,0x20,0x40,0x80,0x60,0x1c,
-+0x0,0xf,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x20,0x20,0x27,0x24,0xfc,0x24,0x27,0x2d,0x35,0xe5,0x25,0x25,0x25,0x29,0xa1,0x40,0x10,0x90,0x10,0x20,0x3e,0x42,0x94,0x10,0x10,0x10,0x28,0x28,0x28,0x44,0x44,0x82,
-+0x20,0x20,0x27,0x3c,0x44,0x84,0x7f,0x25,0x25,0xfd,0x25,0x25,0x2d,0x35,0x29,0x0,0x10,0x90,0x10,0x20,0x3e,0x42,0x94,0x10,0x10,0x10,0x28,0x28,0x28,0x44,0x44,0x82,
-+0x1,0x11,0x11,0x1f,0x11,0x21,0x1,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x10,0x10,0x10,0x20,0x24,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x27,0x24,0x40,0x40,0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x11,0x10,0x1e,0x25,0x28,0x7e,0xaa,0x2b,0x3e,0x2a,0x2a,0x3f,0x0,0xe,0xf0,0x40,0x4,0x88,0x54,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x8,0x8,0x11,0x10,0x22,0x7e,0x8,0x13,0x20,0x7e,0x0,0x0,0x1e,0xe0,0x40,0x0,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x3f,0x20,0x2f,0x29,0x29,0x29,0x4f,0x48,0x83,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x8,0x4b,0x49,0x48,0x48,0x48,0x4b,0x1f,0x10,0x11,0x11,0x11,0x12,0x2,0xc,0x30,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x1e,0xf4,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x9,0x9,0x11,0x23,0x42,0xc,0x13,0x31,0x51,0x97,0x11,0x11,0x11,0x11,0x10,0x10,0x4,0x3e,0x0,0xc0,0x4,0x7e,0x88,0x8,0x8,0xc8,0x8,0x48,0x88,0x8,0x28,0x10,
-+0x8,0x12,0x3f,0x23,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x43,0x8a,0x4,0x40,0x20,0x4,0xfe,0x20,0x20,0x40,0x84,0xf8,0x10,0x20,0x40,0x88,0xfc,0x4,0x0,
-+0x20,0x1b,0x48,0x41,0x41,0x41,0x5f,0x41,0x43,0x45,0x49,0x51,0x41,0x41,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x24,0xf4,0x4,0x84,0x44,0x34,0x14,0x4,0x4,0x14,0x8,
-+0x40,0x20,0x2f,0x1,0x82,0x42,0x44,0x7,0x11,0x29,0xe6,0x22,0x25,0x24,0x28,0x30,0x0,0xc,0x70,0x10,0x10,0x50,0x5c,0x50,0x50,0x50,0x54,0xfe,0x0,0x80,0x7e,0x0,
-+0x0,0xf8,0x8,0xf,0x8,0x78,0x40,0x41,0x41,0x78,0x8,0x8,0x9,0xb,0x50,0x20,0x80,0x40,0x4,0xfe,0x40,0x40,0x80,0x8,0xf0,0x20,0x40,0x80,0x8,0xfc,0x4,0x0,
-+0x21,0x20,0x2f,0x20,0xfb,0x48,0x4f,0x48,0x4b,0x88,0x51,0x22,0x52,0x4c,0x88,0x0,0x10,0xa4,0xfe,0xa0,0xf8,0xa8,0xfe,0xa8,0xf8,0xa0,0xb0,0xa8,0xa8,0xa6,0xa0,0xa0,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x14,0x44,0x34,0x14,0x4,0x4,0xff,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x50,0x44,0x4c,0x50,0x40,0x44,0xfe,0x0,
-+0x0,0x78,0x48,0x51,0x52,0x65,0x50,0x4a,0x4a,0x49,0x69,0x51,0x41,0x40,0x4f,0x40,0x40,0x40,0xa0,0x10,0x2e,0xf4,0x0,0x48,0x48,0x48,0x48,0x50,0x50,0x24,0xfe,0x0,
-+0x0,0x9,0xfd,0x11,0x11,0x11,0x11,0x7d,0x11,0x11,0x10,0x1c,0xf0,0x41,0x2,0xc,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0x40,0xa0,0xa0,0x22,0x22,0x1e,
-+0x8,0x8,0x9,0xff,0x8,0x9,0x7f,0x55,0x55,0x7f,0x49,0x7f,0x49,0x49,0x43,0x41,0x10,0x10,0x18,0x94,0x10,0x14,0xfe,0x10,0x10,0x10,0x28,0x28,0x28,0x44,0x44,0x82,
-+0x0,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x4,0x8,0x10,0x3f,0x0,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0,0x20,0x10,0xf8,0x8,
-+0x8,0x7c,0x4b,0x4a,0x4b,0x7a,0x4b,0x48,0x48,0x7f,0x49,0x49,0x4a,0x4c,0x49,0x98,0x40,0x88,0xfc,0x8,0xf8,0x8,0xfc,0x48,0x50,0xe0,0x60,0x50,0x4e,0x44,0x40,0x80,
-+0x20,0x20,0x20,0x3d,0x26,0x48,0x41,0xa2,0x22,0x22,0x23,0x26,0x2a,0x32,0x23,0x2,0x80,0x80,0xf8,0x8,0x10,0x24,0x9e,0x4,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x2,0x7f,0x1,0x3f,0x1,0xff,0x0,0x44,0x29,0x12,0x20,0x60,0x20,0x23,0x2c,0x40,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x80,0xfc,0x4,0x48,0x40,0xa0,0x90,0xe,0x4,
-+0x2,0x1,0x7f,0x49,0x89,0xf,0x11,0x21,0xff,0x2,0x2,0x2,0x4,0x4,0x18,0x60,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x4,0xfe,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x78,0x48,0x51,0x52,0x64,0x51,0x4a,0x4a,0x4a,0x6b,0x52,0x42,0x42,0x43,0x42,0x80,0x80,0xf8,0x8,0x10,0x24,0x9e,0x4,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x7d,0x45,0x49,0x49,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0x88,0x50,0x20,0x10,0x4e,0x84,0x0,
-+0x8,0x8,0x10,0x10,0x22,0x7f,0x8,0x10,0x23,0x7c,0x0,0x0,0x1c,0xe0,0x43,0x0,0x40,0x50,0x48,0x40,0x7c,0xc0,0x44,0x7e,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x3f,0x22,0x22,0x22,0x3f,0x22,0x26,0x27,0x2a,0x2a,0x32,0x42,0x42,0x82,0x2,0x4,0xfe,0x0,0x4,0x7e,0xc4,0x44,0x7c,0x44,0xc4,0x7c,0x44,0x44,0x44,0x7c,0x44,
-+0x20,0x27,0x38,0x43,0x82,0x7b,0x21,0x27,0xf9,0x23,0x21,0x2f,0x29,0x33,0x2d,0x1,0x40,0xfc,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4,
-+0x0,0x3f,0x1,0x1,0xff,0x5,0x9,0x31,0xcf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x30,0xc0,0x0,0x4,0xfe,0x40,0x30,0xe,0xe4,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,
-+0x12,0x1f,0x28,0x45,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x48,0x88,0x8,0x8,0x44,0x7e,0xa0,0x10,0x4,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x1,0xff,0x0,0x3e,0x22,0x3e,0x4,0x7f,0x4,0x3f,0x4,0xff,0x9,0x18,0x6c,0x8,0x4,0xfe,0x0,0xf8,0x88,0xf8,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x10,0xa0,0x70,0xe,
-+0x2,0x42,0x32,0x12,0x8f,0x62,0x26,0x7,0x1a,0x2a,0xf2,0x22,0x22,0x22,0x22,0x22,0x0,0x4,0x7e,0x44,0xc4,0x44,0x7c,0x44,0xc4,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,
-+0x2,0x2,0x4,0x8,0x10,0x3f,0x1,0x2,0x4,0x3f,0x0,0x0,0x0,0x3,0xc,0x70,0x0,0x0,0x20,0x20,0x40,0x80,0x0,0x8,0x8,0xf0,0x20,0x40,0x80,0x0,0x0,0x0,
-+0x82,0x44,0x29,0xfe,0x10,0x11,0x7c,0x10,0x10,0xfe,0x11,0x12,0x10,0x20,0x21,0x40,0x0,0x4,0xde,0x44,0x44,0x54,0xcc,0x44,0x44,0xcc,0x54,0x64,0x44,0x44,0x54,0x88,
-+0x22,0x11,0x10,0xff,0x8,0x10,0x3b,0x54,0x90,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x41,0x30,0x17,0x0,0x0,0xf3,0x10,0x10,0x10,0x1f,0x10,0x14,0x18,0x10,0x0,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x11,0x11,0xff,0x11,0x31,0x39,0x55,0x91,0x11,0x0,0x12,0x51,0x50,0x90,0xf,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x0,0x84,0x92,0x12,0xf0,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x2,0x2,0x2,0x20,0x40,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x2,0x1,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x3f,0x0,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x0,0xf8,0x40,0x84,0xfe,0x0,0x0,0x0,0x0,
-+0x0,0xb,0xfc,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x0,0x0,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x58,0x84,0x2,
-+0x8,0x8,0x7f,0x8,0x8,0xff,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x8,0x8,0x7,0x20,0x28,0xfc,0x20,0x24,0xfe,0x40,0x20,0xf0,0x2e,0x24,0xe0,0x20,0x8,0x8,0xf8,
-+0x11,0x11,0x12,0x17,0xfc,0x17,0x30,0x39,0x56,0x51,0x96,0x10,0x11,0x16,0x10,0x10,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x80,0x44,0x68,0xb0,0x30,0x68,0xa6,0x20,0xa0,0x40,
-+0x9,0x9,0xa,0x17,0x1c,0x37,0x50,0x91,0x16,0x10,0x17,0x10,0x11,0x16,0x10,0x10,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x80,0x44,0x68,0xb0,0x30,0x68,0xa6,0x20,0xa0,0x40,
-+0x2,0x4,0x8,0x7f,0x40,0x40,0x4f,0x48,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x40,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8,
-+0x8,0xf,0x10,0x3f,0x61,0xa1,0x3f,0x6,0x19,0x62,0xc,0x31,0x6,0x18,0x62,0x1,0x0,0xe0,0x48,0xfc,0x8,0x8,0xf8,0x10,0x20,0xc0,0xc0,0xa0,0x90,0x8e,0x84,0x0,
-+0x8,0xff,0x9,0x3f,0x1,0xff,0x1,0x3f,0x1,0x21,0x25,0x25,0x25,0x29,0x41,0x1,0x24,0xfe,0x20,0xf8,0x8,0xfe,0x8,0xf8,0x0,0x8,0x48,0x28,0x28,0x28,0x8,0x8,
-+0x0,0x5,0xfe,0x10,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8,
-+0x1f,0x1,0x7f,0x51,0x89,0x11,0x5,0x3,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0xf0,0x0,0xfe,0x12,0x24,0x10,0x40,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x8,0x49,0x2a,0x9,0x7f,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x41,0x41,0x45,0x42,0x4,0x4,0x4,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x0,0x8,0x7f,0x48,0x48,0x4f,0x48,0x49,0x4a,0x4c,0x4b,0x48,0x78,0x48,0x0,0x0,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0xf8,0x10,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x3e,0x22,0x3e,0x0,0xff,0x2,0x1f,0x10,0x11,0x12,0x4,0x78,0x0,0x3e,0x22,0x3e,0xf8,0x88,0xf8,0x4,0xfe,0x0,0xf0,0x10,0x10,0x90,0x40,0x3c,0x0,0xf8,0x88,0xf8,
-+0x10,0x11,0x10,0x3c,0x21,0x41,0xbd,0x11,0x11,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8,
-+0x0,0x42,0x31,0x10,0x83,0x62,0x22,0xb,0x12,0x22,0xe3,0x22,0x22,0x22,0x22,0x22,0x40,0x48,0x50,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0x28,0x10,
-+0x2,0x1,0x7f,0x41,0x89,0x5,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x0,0x0,0xfe,0x2,0x24,0x50,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x50,0x20,
-+0x2,0x41,0x30,0x11,0x82,0x6f,0x20,0x9,0x13,0x25,0xe9,0x21,0x21,0x21,0x21,0x21,0x8,0xb0,0x40,0xb0,0x48,0xfe,0x80,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x8,0x7c,0x4f,0x48,0x48,0x78,0x4b,0x48,0x4b,0x48,0x78,0x49,0x1,0x2,0xc,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x0,0xfc,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x5,0x5,0x9,0x9,0x11,0x21,0x41,0x1,0x1,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x3f,0x2,0x2,0xff,0x2,0x4,0x3f,0x10,0x21,0x5f,0x81,0x1,0x5,0x2,0x0,0x10,0xe0,0x40,0x84,0xfe,0x0,0x0,0xe0,0x80,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x3a,0x54,0x50,0x90,0x10,0x10,0x10,0x13,0x1c,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x1,0x11,0x9,0x5,0x1,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x0,0x0,0x7b,0x48,0x4f,0x48,0x4b,0x48,0x4a,0x4a,0x4a,0x7b,0x42,0x4,0x8,0x0,0x40,0x48,0xfc,0x48,0xfe,0x48,0xf8,0x40,0x48,0xe8,0xd8,0x58,0x48,0x48,0x48,0x40,
-+0x10,0x12,0x1f,0x28,0x45,0x0,0x3f,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x10,0x60,0x40,0x48,0x7c,0xa0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x8,0x2,0xff,0x24,0x22,0x41,0xa4,0x14,0x8,0x14,0x24,0x22,0x42,0x80,0x1,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x21,0x21,0x27,0x21,0xff,0x21,0x77,0x69,0xa1,0x20,0x2f,0x20,0x20,0x20,0x23,0x2c,0x0,0x4,0xfe,0x14,0xd4,0x14,0xd4,0x24,0x4c,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x4,0x4,0x24,0x27,0x24,0x24,0x24,0x27,0xfc,0x0,0x0,0x1f,0x0,0x0,0x7f,0x0,0x40,0x40,0x40,0x4c,0x70,0x40,0x42,0x42,0x3e,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,
-+0x1,0x3f,0x21,0x3f,0x21,0x3f,0x10,0x10,0x3f,0x48,0xc8,0x54,0x40,0x7c,0x5,0x2,0x20,0xa0,0x20,0x3e,0x42,0x94,0x10,0x90,0xd0,0x90,0x90,0xa8,0xa8,0xa4,0x44,0x82,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x54,0x54,0x55,0x7e,0x51,0x15,0x1d,0xf5,0x40,0x0,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x80,0x80,0xfe,0x22,0x22,0x52,0x2,0xfa,0xa,0x4,
-+0x28,0x28,0xfe,0x29,0x38,0x10,0x7f,0x54,0x54,0x7c,0x11,0xfe,0x10,0x10,0x13,0x10,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x20,0x20,0xfb,0x20,0x20,0x24,0x24,0x24,0x29,0x21,0x21,0x22,0x24,0x20,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x8c,0x8a,0x8a,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x17,0xf8,0x12,0x11,0x18,0x37,0xd0,0x10,0x10,0x11,0x11,0x52,0x24,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x12,0x12,0x13,0x16,0xfb,0x12,0x13,0x1a,0x33,0xd2,0x17,0x11,0x11,0x11,0x52,0x24,0x80,0x48,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x0,0xf8,0x10,0x3c,0x4,0x14,0x8,
-+0x2,0x7f,0x4,0x24,0x24,0x45,0x7f,0xc,0xc,0x14,0x24,0x44,0x84,0x4,0x14,0x8,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x8,0x14,0x22,0x41,0xbe,0x8,0x8,0x7f,0x8,0x2a,0x29,0x49,0x8,0x28,0x10,0x8,0x8,0x8,0x48,0x28,0x8,0x48,0x28,0xe,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,
-+0x8,0x7c,0x48,0x48,0x4b,0x78,0x48,0x4a,0x4a,0x7a,0x4d,0x49,0x49,0x4a,0x4c,0x98,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x8c,0x8a,0x8a,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x4,0x24,0x17,0x14,0x4,0x5,0xf6,0x10,0x13,0x12,0x12,0x13,0x16,0x1a,0x13,0x2,0x20,0x24,0xa8,0x30,0x22,0xa2,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x7f,0x40,0x88,0x8,0xf,0x8,0x8,0xf,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x4,0x20,0xf0,0x0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x10,0x17,0xfc,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x14,0x18,0x10,0x13,0x20,0x28,0x24,0xfe,0x20,0xa0,0xa0,0xa4,0xe4,0xa8,0xa8,0x90,0xb0,0x52,0x8a,0x6,
-+0x20,0x22,0x3f,0x48,0x88,0xa,0xff,0x8,0x28,0x2e,0x28,0x28,0x2f,0xf8,0x40,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x54,0x48,0x40,0x40,
-+0x20,0x3e,0x44,0xbe,0x2a,0x3e,0x2a,0x3f,0x2a,0x41,0x9f,0x11,0x1f,0x1,0x7f,0x20,0x0,0xfc,0x24,0x4c,0xd0,0x7c,0x90,0xfe,0x10,0x10,0xf8,0x10,0xf0,0x8,0xfc,0x4,
-+0x22,0x22,0x27,0x29,0xbf,0xaa,0xaa,0x2f,0x2a,0x2a,0x2f,0x2a,0x2a,0x2a,0x31,0x20,0x4,0x7e,0xa4,0x24,0xa4,0xc8,0xa8,0xbe,0xc8,0x88,0xfe,0x88,0x88,0x88,0x88,0x8,
-+0x2,0x42,0x32,0x12,0x82,0x62,0x2f,0xa,0x12,0x22,0xe2,0x22,0x22,0x22,0x23,0x20,0x48,0x48,0x48,0x48,0x48,0x48,0xfe,0x48,0x48,0x48,0x48,0x78,0x40,0x8,0xfc,0x0,
-+0x40,0x27,0x24,0x9,0x81,0x61,0x21,0x9,0x11,0x20,0xe0,0x2f,0x20,0x20,0x20,0x20,0x0,0xfe,0x2,0x4,0x0,0xfc,0x0,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8,
-+0x2,0x44,0x2f,0x28,0xf,0x8,0xef,0x28,0x28,0x3f,0x21,0x2a,0x34,0x28,0x12,0x1,0x8,0x88,0xc8,0x88,0x88,0xfe,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xa8,0x10,
-+0x3f,0x20,0x3f,0x20,0x24,0x22,0x2f,0x28,0x28,0x2f,0x28,0x28,0x4f,0x48,0x88,0x8,0xf8,0x8,0xf8,0x80,0x90,0xa8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10,
-+0x4,0xff,0x14,0x8,0x7f,0x22,0x14,0xff,0x8,0xa,0x7f,0x2a,0x49,0x88,0x29,0x10,0x40,0xfe,0x40,0x6,0x78,0x40,0x44,0xfe,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8,
-+0x8,0x8,0xff,0x8,0x8,0x0,0x2,0x1,0x50,0x50,0x50,0x90,0x10,0x10,0xf,0x0,0x20,0x24,0xfe,0x20,0x20,0x0,0x0,0x0,0x84,0x82,0x2,0x2,0x8,0x8,0xf8,0x0,
-+0x10,0x10,0x1d,0x20,0x20,0x7c,0x93,0x10,0x7c,0x10,0x11,0x10,0x14,0x18,0x10,0x0,0x40,0x20,0xfc,0x0,0x88,0x50,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,
-+0x2,0x7,0x38,0x20,0x20,0x20,0x3f,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x85,0x2,0x40,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x2,0x1,0x3f,0x8,0x4,0x4,0xff,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x20,0x20,0x44,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,
-+0x10,0xa,0x7f,0x0,0x22,0x14,0xff,0xa,0x7f,0x8,0xa,0x29,0x48,0x89,0x28,0x10,0x8,0x1c,0x60,0x40,0x40,0x44,0xfe,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8,0x8,
-+0x10,0x10,0x11,0x11,0x59,0x55,0x51,0x91,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x10,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x2,0x1,0x0,0x0,0x8,0x8,0x28,0x28,0x28,0x48,0x88,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x80,0xc0,0x80,0x0,0x8,0x4,0x2,0x2,0x2,0x0,0x10,0x10,0xf0,0x0,
-+0x8,0x8,0xf,0x10,0x10,0x37,0x50,0x90,0x17,0x10,0x13,0x12,0x12,0x12,0x13,0x12,0x80,0x44,0xfe,0x0,0x8,0xfc,0x0,0x8,0xfc,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xf8,0x40,0x0,0x0,0x10,0x92,0x54,0x54,0x10,0xfe,0x10,0x10,0x14,0xfe,0x10,0x90,0x10,0x10,0x10,0x10,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x1,0x21,0x3f,0x21,0x41,0xbf,0x1,0x1,0xff,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x8,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x0,0x7b,0x4a,0x4b,0x4a,0x7b,0x48,0x4a,0x4b,0x7c,0x48,0x4b,0x48,0x48,0x8f,0x18,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x2,0x45,0x29,0x11,0x29,0x49,0x88,0x9,0x19,0x2a,0x4c,0x89,0x8,0x8,0x57,0x20,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x13,0x12,0x13,0x5a,0x57,0x50,0x92,0x13,0x14,0x18,0x13,0x10,0x10,0x1f,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x2,0x2,0x21,0x11,0x19,0x9,0x0,0x0,0xff,0x0,0x0,0x4,0xc,0x10,0x20,0x40,0x0,0x8,0x8,0x10,0x10,0x20,0x20,0x44,0xfe,0x0,0x0,0x40,0x20,0x18,0xc,0x4,
-+0x0,0x7f,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x21,0x21,0x41,0x1,0x84,0xc4,0x4,0x24,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8,
-+0x1,0x7f,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x23,0x41,0x7f,0x1,0x1,0xff,0x0,0x4,0x84,0x24,0x24,0x24,0xa4,0x24,0x24,0x4,0x14,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x21,0x21,0x41,0x1,0x80,0xc4,0xc,0x10,0x20,0x44,0xc,0xd0,0x20,0x42,0x6,0x8,0x10,0x20,0x40,0x80,
-+0x0,0x7f,0x12,0x12,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x22,0x22,0x42,0x2,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0xb,0x10,0x20,0x40,0x8,0x17,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xae,0xc2,0x83,0x82,0xfe,0x82,0x82,0xff,0x82,0x4,0xfe,0x84,0xfc,0x84,0xfc,0x20,0xa0,0xfc,0x20,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x1,0x1,0x3f,0x1,0x1,0xff,0x8,0x4,0x3f,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x0,0x4,0xfe,0x20,0x50,0xf8,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x31,0xc1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x12,0x12,0x5b,0x54,0x54,0x98,0x10,0x13,0x10,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x50,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x26,0x24,0x24,0x45,0x28,0x10,0x28,0x44,0x87,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x14,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x50,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x0,0x20,0x50,0x48,0x44,0x42,0x41,0x42,0x44,0x48,0x50,0x40,0x7f,0x40,0x0,0x0,0x10,0x10,0x24,0x24,0x44,0x84,0x4,0x84,0x44,0x34,0x14,0x4,0xfc,0x4,0x0,
-+0x8,0x7c,0x49,0x49,0x4a,0x7c,0x49,0x4a,0x4a,0x7a,0x4b,0x4a,0x4b,0x4a,0x88,0x18,0x80,0x80,0x0,0xfe,0x2,0x2,0x12,0xaa,0x4a,0xaa,0x1a,0xa,0xfa,0x2,0x14,0x8,
-+0x8,0x8,0x10,0x1f,0x20,0x40,0x90,0x28,0x25,0x22,0x25,0x28,0x20,0x3f,0x20,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x44,0xa4,0x24,0x24,0x24,0xa4,0x24,0xe4,0x14,0x8,
-+0x0,0x42,0x31,0x14,0x84,0x64,0x24,0xc,0x14,0x25,0xe5,0x26,0x24,0x27,0x24,0x20,0x0,0x8,0x10,0x94,0xa4,0x44,0x44,0xa4,0xa4,0x14,0xc,0xc,0x4,0xfc,0x4,0x0,
-+0x10,0x10,0x10,0xfd,0x11,0x13,0x25,0x21,0x51,0x51,0x91,0x25,0x45,0x7d,0x1,0x1,0x40,0xa0,0x88,0xfc,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x10,0x10,0x22,0x7f,0x0,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x26,0x0,0x48,0x44,0x80,0x80,0x98,0xe0,0x84,0x84,0x7c,0x80,0x98,0xe0,0x84,0x84,0x7c,0x0,0x88,0x46,0x2,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x40,0x40,0x40,0x44,0xfe,0x40,0xe0,0xe0,0x50,0x50,0x48,0x46,0x44,0x40,0x40,0x40,
-+0x11,0x11,0x11,0x21,0x2a,0x6c,0xa9,0x2e,0x28,0x2b,0x28,0x28,0x23,0x20,0x21,0x26,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x2e,0xc0,0x10,0x60,0x88,0x10,0x60,0x80,0x0,
-+0x8,0x4,0x2,0x7f,0x1,0x3f,0x2,0xff,0x4,0xf,0x11,0x2f,0x42,0x84,0x3f,0x0,0x20,0x40,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0x14,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x31,0x39,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x80,0x80,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x0,0x8,0x7f,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x48,0x48,0x7f,0x48,0x1,0x2,0xc,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x50,0x48,0xfe,0xa0,0x10,0xe,0x4,
-+0x10,0x13,0x1c,0x20,0x27,0x7c,0x91,0x12,0x7d,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x18,0xe0,0x40,0x48,0xfc,0xe0,0x50,0x4e,0xf8,0x88,0x90,0x9c,0x4,0x4,0x28,0x10,
-+0x0,0x3f,0x1,0x1,0x7f,0x5,0x9,0x31,0xcf,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x78,0x80,0x0,0x8,0xfc,0x40,0x30,0xe,0xe4,0x20,0x40,0x70,0x10,0x10,0xa0,0x40,
-+0x20,0x10,0x10,0x0,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x13,0x20,0x20,0x4f,0xf8,0x11,0x22,0x45,0xf8,0x0,0x0,0x19,0xe1,0x42,0x4,0x18,0xe0,0x40,0x48,0xfc,0xe0,0x50,0x4e,0xf8,0x88,0x90,0x9c,0x4,0x4,0x28,0x10,
-+0x20,0x20,0x20,0x27,0xfc,0x24,0x27,0x24,0x24,0x24,0x3e,0xe5,0x48,0x8,0x17,0x20,0x88,0xfc,0x80,0xfe,0x82,0xf0,0x84,0xfc,0x0,0xa0,0xa8,0xb0,0xa0,0xa4,0xfe,0x0,
-+0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x40,0x40,0x83,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x1,0xff,0x2,0x4,0x3f,0x24,0x24,0x24,0x24,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x10,
-+0x2,0x3,0x2,0x3f,0x22,0x23,0x3e,0x23,0x20,0x22,0x32,0x2a,0x4a,0x42,0xbf,0x0,0x10,0xf8,0x0,0xfe,0x2,0xe4,0x8,0xf8,0x0,0x40,0x48,0x58,0x60,0x40,0xfe,0x0,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4b,0x7a,0x4c,0x4,0xb,0x0,0x48,0x7c,0x40,0xfe,0x42,0x70,0xc4,0x7c,0x0,0x50,0x54,0xd8,0x50,0x54,0xfe,0x0,
-+0x4,0xb,0x10,0x20,0x41,0x5,0x9,0x11,0x21,0x41,0x5,0x9,0x11,0x20,0x40,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2,
-+0x8,0x8,0x10,0x21,0x42,0xc,0x13,0x30,0x50,0x97,0x10,0x11,0x12,0x14,0x11,0x10,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x2,0x42,0x33,0x12,0x4,0x0,0xf0,0x1f,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x8,0x7f,0x9,0x7f,0x2,0x4,0x1f,0x1,0x2,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x20,0xfc,0x20,0xfc,0x0,0x10,0xe0,0x0,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xae,0xa2,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x0,0x0,0x44,0x44,0xaa,0xaa,0xaa,0x92,0x92,0xaa,0xaa,0xa6,0xc6,0x82,0xfe,0x82,
-+0x8,0x8,0x14,0x12,0x21,0x5e,0x88,0x8,0x7e,0x8,0x2c,0x2a,0x4a,0x8,0x29,0x12,0x0,0x0,0x8,0xfc,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x10,0x10,0xfe,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x41,0x80,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xfa,0x2,0xfe,0x0,
-+0x1,0x0,0x3f,0x20,0x2f,0x20,0x21,0x20,0x2f,0x20,0x20,0x20,0x40,0x40,0x82,0x1,0x0,0x88,0xfc,0x0,0xf8,0x20,0x40,0x80,0xfc,0x88,0x90,0x80,0x80,0x80,0x80,0x0,
-+0x2,0x1,0xff,0x2,0x4,0x1f,0x1,0x2,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x10,0x0,0x4,0xfe,0x0,0x10,0xe0,0x0,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x10,0x10,0x11,0x13,0x5a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x1f,0x10,0x10,0x80,0x80,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,0x0,
-+0x10,0xfe,0x22,0x64,0x18,0x14,0x62,0x4,0x1f,0x3,0xc,0x3f,0x1,0x11,0x65,0x2,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x20,0xc0,0x0,0x10,0xf8,0x0,0x30,0x8,0x0,
-+0x10,0x13,0x10,0x11,0xfd,0x25,0x26,0x24,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x0,0xfe,0x42,0x70,0x40,0x40,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x4,0xc,
-+0x10,0x10,0x23,0x20,0x48,0xf8,0x17,0x21,0x43,0xfd,0x9,0x1,0x1d,0xe1,0x41,0x1,0x40,0x44,0xf8,0x50,0x60,0x44,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x23,0x20,0x48,0xff,0x11,0x20,0x42,0xf9,0x7,0x0,0x1c,0xe0,0x41,0x2,0x40,0x50,0xf8,0x40,0x40,0xfc,0x24,0xa8,0x20,0x24,0xfe,0x40,0x60,0x90,0xc,0x4,
-+0x10,0x11,0x14,0xfe,0x20,0x28,0x48,0x7f,0x8,0x8,0xe,0xf8,0x48,0x8,0x8,0x8,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x7b,0x4a,0x4c,0x4b,0x48,0x4b,0x4a,0x4b,0x4a,0x7b,0x48,0x0,0x7,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0x4,0xfe,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0xff,0x0,0x0,0x0,0xfe,0x2,0x14,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x4,0xfe,0x0,
-+0x1f,0x10,0x1f,0x10,0x1f,0x10,0xff,0x4,0x8,0x1f,0x2,0x51,0x50,0x90,0xf,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x0,0x20,0xf0,0x10,0x84,0x82,0x12,0xf0,0x0,
-+0x20,0x10,0x14,0xfe,0x21,0x22,0x3c,0x24,0x24,0x24,0x24,0x24,0x44,0x55,0x8a,0x4,0x80,0x84,0xfe,0x80,0x0,0xfe,0x22,0x24,0xa0,0xa8,0xbc,0xa0,0xa0,0x60,0x26,0x1c,
-+0x2,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x3f,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0x20,0xc0,0x0,0x0,0x0,0x10,0x10,0xf8,0x8,
-+0x0,0x42,0x32,0x13,0x2,0x4,0xf7,0x10,0x10,0x10,0x11,0x11,0x12,0x2c,0x44,0x3,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,0x6,0xfc,
-+0x1,0x0,0x3f,0x24,0xa4,0x6f,0x32,0x2f,0x6a,0xaf,0x2a,0x2f,0x40,0x43,0x9c,0x8,0x0,0x84,0xfe,0x44,0x28,0x7c,0x10,0x90,0xfc,0x90,0x94,0xfe,0x10,0x90,0x10,0x10,
-+0x0,0x8,0x7c,0x4f,0x48,0x48,0x79,0x4a,0x4b,0x78,0x48,0x49,0x4a,0x7b,0x48,0x0,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0x10,0xe0,0x40,0x80,0x0,0x8,0xfc,0x4,0x0,
-+0x10,0x10,0x20,0x20,0x45,0xfa,0x11,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe0,0x40,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x28,0x28,0xfe,0x29,0x29,0x3b,0x15,0x7d,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0xa0,0xa0,0xa0,0x20,0x24,0x28,0x30,0x20,0x60,0xa0,0x20,0x22,0x22,0x22,0x1e,0x0,
-+0x8,0x8,0xff,0x8,0x20,0x7c,0x45,0x44,0x7c,0x43,0x7c,0x44,0x45,0x7c,0x40,0x0,0x20,0x24,0xfe,0x20,0x40,0x28,0xfc,0x88,0x50,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,
-+0x22,0x11,0x11,0x0,0x7f,0x40,0x80,0x1f,0x0,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x8,0x8,0x10,0x20,0xfe,0x2,0x4,0xe0,0x40,0x84,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x1,0x1,0x7f,0x40,0x80,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0xfe,0x2,0x84,0x80,0x80,0x40,0x40,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x1,0x3f,0x0,0x0,0x1f,0x0,0x0,0x3f,0x0,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x1,0x1,0x2,0x3f,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x2,0x3f,0x22,0x22,0x3e,0x0,0x7f,0x41,0x49,0x49,0x49,0x49,0x49,0x14,0x23,0xc1,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8,
-+0x0,0x3f,0x1,0xff,0x1,0x3f,0x29,0x25,0x3f,0x1,0x3f,0x1,0x7f,0x24,0x22,0x40,0x38,0xc0,0x4,0xfe,0x0,0xf8,0x28,0x48,0xf8,0x0,0xf8,0x0,0xfc,0x48,0x24,0x4,
-+0x10,0x17,0x24,0x24,0x47,0x94,0x25,0x65,0xa5,0x25,0x25,0x25,0x29,0x29,0x31,0x21,0x1c,0xe0,0x20,0x24,0xfe,0x20,0xfc,0x4,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0xf,0x10,0x10,0x2f,0x48,0x88,0xf,0x8,0x8,0xf,0x8,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x4,0x28,0x10,
-+0x2,0x42,0x33,0x14,0x4,0x9,0xf1,0x11,0x11,0x11,0x11,0x13,0x15,0x18,0x10,0x0,0x0,0x4,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x14,0x4,0x14,0x8,
-+0x0,0x3f,0x0,0x0,0x1f,0x0,0x0,0x3f,0x0,0x0,0xff,0x8,0x4,0x4,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x9,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x1d,0xe5,0x45,0x15,0xa,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,
-+0x0,0x41,0x31,0x12,0x2,0x4,0xf9,0x14,0x12,0x12,0x11,0x11,0x11,0x28,0x44,0x3,0x0,0x24,0x24,0x48,0x48,0x90,0x20,0x90,0x48,0x48,0x24,0x24,0x24,0x0,0x6,0xfc,
-+0x0,0x4,0xfe,0x21,0x21,0x3f,0x45,0x45,0xa5,0x19,0x9,0x11,0x21,0x40,0x80,0x0,0x80,0x84,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x14,0x4,0x14,0x8,
-+0x0,0x47,0x30,0x11,0x81,0x61,0x21,0x9,0x17,0x21,0xe1,0x21,0x21,0x21,0x21,0x21,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x50,0xf0,0x10,0x10,0x10,0xa,0xa,0x6,0x0,
-+0x1,0x41,0x31,0x11,0x1,0x1,0xf1,0x11,0x11,0x11,0x11,0x11,0x16,0x1a,0x14,0x8,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,
-+0x0,0x47,0x30,0x11,0x1,0x1,0xf1,0x11,0x17,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x50,0xf0,0x10,0x10,0x10,0xa,0xa,0x6,0x0,
-+0x0,0x40,0x3f,0x21,0x2,0x4,0xe4,0x27,0x3c,0x24,0x25,0x24,0x2c,0x54,0x88,0x7,0x10,0x10,0x10,0x10,0x10,0x10,0x58,0x54,0x94,0x92,0x12,0x50,0x20,0x0,0x6,0xfc,
-+0x0,0x47,0x30,0x11,0x1,0x1,0xf7,0x11,0x11,0x11,0x11,0x11,0x11,0x29,0x44,0x3,0x10,0xf8,0x10,0x10,0x10,0x50,0xf0,0x10,0x10,0x10,0x12,0xa,0x6,0x0,0x6,0xfc,
-+0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x2f,0x20,0x20,0x20,0x20,0x40,0x40,0x9f,0x0,0x8,0xfc,0x80,0x80,0x80,0x80,0x88,0xfc,0x80,0xa0,0x98,0x88,0x80,0x84,0xfe,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x10,0x10,0x10,0x50,0x20,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x4,0xfe,0x9,0x29,0x29,0x49,0xff,0x9,0x19,0x29,0x48,0x88,0xb,0x8,0x28,0x10,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x2,0xff,0x92,0x92,0x92,0xfe,0x92,0x92,0x92,0xfe,0x92,0x10,0x11,0x10,0x10,0x10,0x20,0x44,0xfe,0x84,0xa4,0x84,0x94,0x88,0x80,0xfe,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x0,0xb,0x7c,0x48,0x48,0x49,0x49,0x4b,0x48,0x48,0x48,0x79,0x46,0x0,0x0,0x0,0x8,0xfc,0x10,0x90,0x90,0x10,0x14,0xfe,0x10,0x30,0x50,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x20,0x10,0xc,0x4,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x10,0x30,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xff,0x8,0x0,0x3f,0x8,0x8,0x10,0x3f,0x0,0x3,0xc,0x30,0xc0,0x0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x20,0x20,0x24,0xfe,0xa0,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x7f,0x0,0x10,0x10,0x20,0x20,0x7f,0x1,0x2,0x4,0x8,0x30,0xc0,0x1,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x11,0x14,0x7e,0x54,0x55,0x55,0x57,0x7c,0x10,0x14,0x1c,0xf4,0x41,0x2,0x0,0x8,0xfc,0x8,0x88,0x88,0x8,0x8,0xfe,0x28,0x28,0x48,0x48,0x88,0x8,0x28,0x10,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x20,0x2f,0x40,0x5f,0x80,0x0,0x8,0x8,0xf8,0x0,0xfc,0x80,0xf8,0x80,0xfe,0x80,0x80,0xf8,0x80,0xfe,0x0,
-+0x10,0x1f,0x22,0x42,0x8f,0x14,0x24,0x7f,0xa0,0x2f,0x28,0x28,0x28,0x2f,0x28,0x20,0x80,0xc4,0x3e,0x0,0x84,0xfe,0x88,0xe8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x28,0x10,
-+0x0,0x43,0x32,0x12,0x83,0x62,0x22,0xb,0x12,0x22,0xe3,0x22,0x24,0x24,0x2b,0x30,0x8,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x2,0x7f,0x4,0x24,0x24,0x45,0xfe,0x4,0xc,0x14,0x24,0x44,0x84,0x4,0x14,0x8,0x40,0x50,0x54,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x0,0xb,0x7c,0x48,0x48,0x48,0x4c,0x4a,0x4a,0x49,0x48,0x78,0x48,0x0,0x7,0x0,0x8,0xfc,0x90,0x90,0x90,0x90,0x92,0x94,0x94,0x98,0x90,0x90,0x90,0x94,0xfe,0x0,
-+0x0,0x7f,0x4,0x4,0x4,0x4,0x44,0x24,0x24,0x14,0x14,0x4,0x4,0x4,0xff,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0x4c,0x50,0x50,0x60,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x47,0x20,0x22,0x2,0x4,0xef,0x20,0x20,0x20,0x24,0x29,0x32,0x24,0x8,0x0,0x8,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x7f,0x1,0x11,0x11,0x11,0xff,0x10,0x1f,0x10,0x1f,0x0,0x29,0x24,0x40,0x0,0x8,0xfc,0x0,0xf0,0x0,0x4,0xfe,0x0,0xf0,0x4,0xfe,0x4,0x24,0x94,0x14,0x8,
-+0x0,0x17,0x7c,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x54,0x75,0x56,0x4,0x7,0x4,0x4,0xfe,0x4,0x44,0x44,0x44,0xfc,0x44,0x44,0xa4,0x94,0xc,0xc,0x4,0xfc,0x4,
-+0x20,0x1b,0x49,0x41,0x5f,0x42,0x44,0x49,0x5f,0x69,0x4f,0x49,0x4f,0x41,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x84,0x44,0x24,0xfc,0x24,0xe4,0x24,0xe4,0x14,0xf4,0x8,
-+0x20,0x27,0x24,0x24,0x2c,0xb4,0xa7,0xa4,0x24,0x24,0x24,0x25,0x56,0x4c,0x87,0x4,0x4,0xfe,0x4,0x44,0x44,0x44,0xfc,0x44,0x44,0xa4,0x94,0xc,0xc,0x4,0xfc,0x4,
-+0x0,0x40,0x37,0x10,0x81,0x62,0x27,0xa,0x12,0x23,0xe2,0x22,0x23,0x20,0x20,0x20,0x40,0x48,0xfc,0xa0,0x10,0x8,0xfe,0x48,0x48,0xf8,0x48,0x48,0xf8,0x42,0x42,0x3e,
-+0x8,0x8,0x8,0x7f,0x8,0x8,0xf,0x78,0x0,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x40,0x40,0x40,0x50,0x48,0x44,0x44,0x40,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x0,0x7f,0x2,0x12,0xa,0x2,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x8,0xfc,0x40,0x48,0x50,0x44,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0xfd,0x10,0x10,0x20,0x20,0x7c,0xa7,0x24,0x24,0x24,0x25,0x3d,0x22,0x4,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x8,
-+0x20,0x20,0x27,0x20,0xf9,0xa9,0xaa,0xaf,0xa8,0xf8,0x22,0x29,0x39,0xea,0x44,0x8,0x0,0x6,0xb8,0x88,0x8,0x8,0x2e,0xa8,0xa8,0xa8,0xa8,0x3e,0x0,0x86,0x7c,0x0,
-+0x1,0x21,0x21,0x21,0x3f,0x0,0xff,0x2,0x4,0xf,0x18,0x28,0x48,0x8,0xf,0x8,0x0,0x8,0x8,0x8,0xf8,0x0,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x0,0x7d,0x4,0x8,0x11,0x21,0x7d,0x5,0x5,0x49,0x29,0x10,0x28,0x47,0x80,0x8,0x1c,0xe0,0x20,0x20,0x28,0x3c,0x20,0x20,0x20,0x28,0xfc,0x0,0x6,0xfc,0x0,
-+0x2,0x1,0xff,0x0,0x0,0x1f,0x0,0x1f,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x0,0x20,0xf0,0x0,0xf0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x9,0x7f,0x22,0x14,0x7f,0x44,0x48,0x52,0x44,0x48,0x52,0x44,0x48,0x90,0x21,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0xa4,0x48,0x86,0x2,
-+0x20,0x1b,0x4a,0x42,0x47,0x48,0x51,0x4e,0x48,0x48,0x4e,0x48,0x48,0x4f,0x40,0x40,0x4,0xfe,0x4,0x4,0xc4,0x84,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x14,0x8,
-+0x1,0x1,0x11,0x11,0x22,0x4,0x19,0x61,0x1,0x11,0x11,0x22,0x2,0x4,0x18,0x60,0x0,0x8,0x18,0x20,0xc0,0x30,0xc,0x4,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x41,0x31,0x11,0x81,0x61,0x22,0xc,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x7f,0x2,0xc,0x31,0xdf,0x11,0x11,0x1f,0x11,0x11,0x1f,0x11,0x1,0x0,0x0,0x8,0xfc,0x80,0x60,0x1e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x14,0x4,0xfc,
-+0x10,0x10,0x10,0x13,0xfc,0x11,0x13,0x1e,0x32,0xd3,0x12,0x12,0x13,0x10,0x50,0x20,0x40,0x40,0x48,0xfc,0xa0,0x50,0xf8,0x4e,0x48,0xf8,0x48,0x48,0xf8,0x42,0x42,0x3e,
-+0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x7a,0x4b,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x2,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x88,0x50,0x20,0x10,0x8e,0x4,0x0,
-+0x10,0x14,0x23,0x41,0x80,0x14,0x23,0x61,0xa0,0x21,0x22,0x2e,0x22,0x22,0x22,0x22,0x8,0x7c,0x0,0x0,0x0,0x4,0x7e,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x40,0x20,0x2f,0x8,0x90,0x67,0x20,0xf,0x14,0x27,0xe4,0x27,0x20,0x21,0x23,0x24,0x80,0x40,0xfe,0x2,0x4,0xfc,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x0,0x10,0xc,0x4,
-+0x10,0x10,0x10,0xff,0x11,0x13,0x7d,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0x12,0xfe,0x12,0x12,0x12,0x13,0x1e,0xf2,0x42,0x2,0x3,0x0,0x8,0xfc,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x20,0xfe,0x48,0xc8,0x30,0x48,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x14,0x17,0xf0,0x17,0x14,0x14,0x34,0xc7,0x0,0x48,0x44,0x80,0x40,0x44,0xfe,0x40,0x50,0xd0,0x12,0xdc,0x50,0x52,0x52,0xce,0x0,0x88,0x46,0x2,
-+0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x21,0x21,0x22,0x42,0x44,0x88,0x10,0x8,0xfc,0x80,0xa0,0x90,0x94,0xfe,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0xe,0x4,
-+0x4,0x7f,0x11,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x24,0x24,0x3c,0x25,0x2,0x4,0x8,0xfc,0x8,0x28,0x28,0x28,0x48,0x48,0x48,0x48,0x60,0xa0,0xa2,0x22,0x1e,0x0,
-+0x0,0x3f,0x24,0x24,0x29,0x29,0x3b,0x2d,0x29,0x29,0x29,0x29,0x49,0x49,0x89,0x9,0x8,0xfc,0x80,0xa0,0x14,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x14,0xfe,0x0,
-+0x0,0x8,0x7f,0x48,0x48,0x4b,0x48,0x4b,0x48,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x40,0x24,0xfe,0x0,0x8,0xfc,0x0,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x1,0x3f,0x8,0x4,0x3f,0x20,0x20,0x23,0x2c,0x20,0x23,0x4c,0x40,0x83,0x1c,0x0,0x10,0xf8,0x20,0x44,0xfe,0x20,0xc0,0x10,0x20,0xc0,0x8,0x10,0x60,0x80,0x0,
-+0x10,0x10,0x10,0x15,0x5a,0x50,0x53,0x92,0x12,0x12,0x13,0x2a,0x26,0x46,0x83,0x2,0x80,0x80,0xfc,0x8,0x10,0x84,0x3e,0x4,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0x1,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x2,0xff,0x4,0xc,0x3,0xc,0x30,0x0,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x40,0x80,0x60,0x18,
-+0x0,0x40,0x33,0x10,0x0,0x3,0xf2,0x12,0x12,0x12,0x12,0x12,0x16,0x1a,0x14,0x9,0x40,0x24,0xfe,0x88,0x50,0xfe,0x10,0x20,0x48,0x90,0x24,0x44,0x88,0x10,0x60,0x80,
-+0x8,0xfc,0x8,0x48,0x49,0x4a,0x4d,0x48,0x7c,0x6,0x5,0x1d,0xe5,0x44,0x17,0x8,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x48,0x48,0x48,0x50,0x10,0x24,0xfe,0x0,
-+0x4,0xfe,0x20,0x21,0x3d,0x25,0x25,0x45,0x65,0x9b,0x8,0x10,0x20,0x40,0x81,0x2,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x1,0x1,0x1,0x1f,0x11,0x11,0x11,0x11,0x11,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,0x80,0x80,0x60,0x1c,0x8,
-+0x1,0x1f,0x11,0x11,0xff,0x4,0xa,0x3f,0xca,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x10,0xf8,0x10,0x14,0xfe,0x40,0x30,0xee,0x24,0xa0,0x44,0xfe,0x4,0xc4,0x14,0x8,
-+0x8,0x1c,0xf0,0x11,0x15,0xff,0x11,0x39,0x35,0x53,0x50,0x90,0x10,0x10,0x11,0x12,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x10,0x13,0x10,0x10,0xfc,0x10,0x33,0x38,0x54,0x50,0x91,0x11,0x12,0x14,0x11,0x10,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x10,0x13,0x10,0x10,0xfc,0x10,0x17,0x18,0x30,0xd0,0x11,0x11,0x12,0x14,0x51,0x20,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x84,0x28,0x10,
-+0xa,0x9,0x8,0x17,0x10,0x30,0x53,0x90,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x0,0x1f,0x10,0x97,0x50,0x50,0x11,0x37,0x51,0xd1,0x12,0x22,0x24,0x49,0x0,0x0,0x84,0xfe,0x0,0xf0,0x40,0x80,0x4,0xfe,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x8,0x4,0x2,0x7f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x20,0x40,0x88,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x2,0x41,0x30,0x17,0x80,0x60,0x23,0x8,0x10,0x20,0xef,0x20,0x20,0x20,0x20,0x20,0x8,0x10,0xa0,0xfc,0x40,0x40,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x7d,0x45,0x49,0x49,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x8,0x5,0x3f,0x2,0x1f,0x2,0x7f,0x2,0x2,0x2,0x0,0xfc,0x0,0xf8,0x0,0xf8,0x88,0x8,0xe8,0x8,0xc8,0x8,0xfa,0xa,0x4,0x0,
-+0x10,0x11,0x12,0x24,0x24,0x64,0xa4,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x20,0x20,0x80,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x54,0x48,0x40,0x40,0x40,
-+0x1,0x0,0x1f,0x11,0x90,0x5f,0x50,0x10,0x37,0x50,0xd0,0x1f,0x20,0x20,0x40,0x0,0x0,0x84,0xfe,0x10,0xa4,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x8,0x4,0x2,0x7f,0x1,0x3f,0x1,0xff,0x4,0x8,0x34,0xc4,0x4,0x4,0x8,0x10,0x20,0x40,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x30,0x4e,0x44,0x40,0x40,0x40,0x40,
-+0x12,0x11,0x10,0x17,0xfc,0x10,0x3b,0x34,0x50,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x40,0x3f,0x10,0x87,0x60,0x2f,0x8,0x10,0x23,0xe0,0x27,0x21,0x22,0x2d,0x20,0x10,0xa4,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x40,0xc8,0x50,0x60,0x50,0x4e,0x44,0x80,
-+0x2,0x44,0x2f,0x28,0xf,0x8,0xef,0x22,0x3f,0x24,0x27,0x24,0x28,0x52,0x89,0x7,0x10,0x10,0x94,0xbe,0xc4,0xa4,0xa4,0x28,0xa8,0x10,0x90,0xa8,0xa4,0xc4,0x6,0xfc,
-+0x8,0x7f,0x48,0x4b,0x4a,0x7a,0x4b,0x48,0x48,0x7f,0x48,0x49,0x48,0x48,0x88,0x1b,0x4,0xfe,0x90,0xfc,0x94,0x94,0xfc,0x40,0x40,0xfe,0x88,0x8,0x90,0x60,0x98,0x4,
-+0x10,0x10,0x11,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x45,0x82,0x4,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x8,0x6,0x4,
-+0x8,0xfd,0x10,0x11,0x10,0x10,0x7d,0x11,0x12,0x14,0x13,0x1c,0xf1,0x41,0x1,0x1,0x1c,0xe0,0x0,0x24,0xa4,0xa8,0x0,0xfc,0x20,0x24,0xfe,0x20,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x17,0x12,0xfd,0x11,0x16,0x1b,0x34,0xd0,0x1f,0x10,0x12,0x12,0x53,0x22,0x8,0x3c,0xc0,0x48,0x48,0x50,0x0,0xfc,0x40,0x44,0xfe,0x40,0x48,0x48,0xf8,0x8,
-+0x4,0x4,0x3,0x7e,0x1,0x0,0x7,0x38,0x0,0x7f,0x2,0x2,0x4,0x4,0x8,0x70,0x0,0x8,0xfc,0x20,0x40,0x84,0x64,0x1c,0x8,0xfc,0x40,0x40,0x40,0x42,0x42,0x3e,
-+0x0,0x47,0x32,0x11,0x2,0x3,0xf4,0x10,0x1f,0x10,0x12,0x13,0x12,0x28,0x47,0x0,0x38,0xc0,0x48,0x50,0x40,0xf8,0x40,0x44,0xfe,0x40,0x48,0xf8,0x8,0x6,0xfc,0x0,
-+0x2,0x1,0x7f,0x48,0x90,0x28,0xf,0x11,0x21,0xff,0x1,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0xfe,0x22,0x14,0x8,0xf0,0x0,0x4,0xfe,0x0,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x27,0x22,0x1,0x1,0xe2,0x23,0x24,0x20,0x2f,0x20,0x2a,0x32,0x23,0x2,0x8,0x3c,0xc0,0x48,0x48,0x50,0x0,0xfc,0x40,0x44,0xfe,0x40,0x48,0x48,0xf8,0x8,
-+0x10,0x10,0x10,0x12,0xfd,0x25,0x24,0x24,0x24,0x45,0x2a,0x10,0x28,0x45,0x82,0x4,0x50,0x50,0x50,0x52,0x54,0x58,0x50,0x50,0xd8,0x54,0x54,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x8,0x7c,0x4f,0x48,0x49,0x4a,0x4d,0x49,0x48,0x48,0x48,0x78,0x49,0x2,0xc,0x80,0x40,0x44,0xfe,0x0,0x10,0x8,0x14,0x10,0xa0,0xa0,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x0,0x7f,0x2,0x21,0x11,0x11,0x4,0x38,0x20,0x20,0x3e,0x20,0x20,0x3f,0x20,0x10,0x78,0x80,0x8,0x8,0x10,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x8,0x10,0x22,0x7c,0x9,0x10,0x7e,0x0,0xe,0x70,0x20,0x0,0x40,0x44,0xfe,0x40,0x40,0x44,0x7e,0x84,0x4,0x44,0x24,0x24,0x4,0x4,0x28,0x10,
-+0x0,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x2,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x8,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x13,0x11,0x54,0x39,0x10,0xfd,0x29,0x2b,0x2d,0x29,0x2b,0x2d,0x49,0x81,0x1,0x0,0xfc,0x54,0xcc,0x54,0x44,0x20,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x17,0x12,0x12,0xfe,0x13,0x3a,0x36,0x53,0x52,0x92,0x13,0x1e,0x10,0x10,0x10,0x0,0xfe,0x52,0x54,0x54,0xd8,0x54,0x52,0xd2,0x52,0x5a,0xd4,0x50,0x50,0x50,0x50,
-+0x0,0x17,0x78,0x53,0x50,0x57,0x54,0x5b,0x50,0x53,0x52,0x73,0x41,0x0,0xf,0x0,0x48,0xfc,0x40,0xf8,0x0,0xfe,0x2,0xfc,0x0,0xf8,0x8,0xf8,0x10,0xa4,0xfe,0x0,
-+0x2,0x7f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x27,0xfa,0x42,0x2,0x2,0x2,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x64,0x58,0x40,0x40,0x40,
-+0x4,0x8,0x14,0x2,0x1,0x6,0x18,0xe0,0x1f,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x40,0x20,0x50,0x80,0x0,0xc0,0x30,0xe,0xf0,0x10,0x10,0x10,0x50,0x20,0x0,0x0,
-+0x0,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x8,0xa,0x7f,0x8,0x8,0xf,0xf8,0x40,0x0,0x7c,0x4,0x28,0x10,0x10,0xfe,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x40,0x30,0x10,0x1,0x2,0xf,0x10,0x20,0xe3,0x22,0x22,0x22,0x22,0x23,0x2,0x40,0x40,0x80,0x80,0x10,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x1,0x1,0x11,0x11,0x11,0x1f,0xf1,0x11,0x11,0x11,0x11,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x30,0xd0,0x10,0x10,0x10,0x50,0x20,0x2,0x2,0x2,0xfe,0x0,
-+0x0,0xff,0x2,0x4,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x4,0x8,0x30,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0x60,0x18,0x8,
-+0x10,0x10,0x17,0x10,0xf9,0x11,0x12,0x1a,0x36,0xdb,0x12,0x12,0x12,0x12,0x53,0x22,0x80,0x44,0xfe,0x20,0x20,0x3c,0x44,0x64,0x98,0x48,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x4,0x4,0x4,0x4,0x44,0x24,0x24,0x14,0x14,0x14,0x14,0x4,0x4,0x4,0xff,0x0,0x40,0x40,0x40,0x40,0x44,0x44,0x48,0x48,0x50,0x50,0x60,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x2,0x3f,0x22,0x22,0x3f,0x22,0x22,0x3f,0x22,0x1,0x1,0x6,0x18,0xe0,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x20,0xc0,0x80,0x44,0x34,0xc,
-+0x0,0x78,0x4f,0x48,0x49,0x79,0x4a,0x4a,0x4e,0x7b,0x4a,0x4a,0x4a,0x4a,0x8b,0x1a,0x80,0x44,0xfe,0x20,0x20,0x3c,0x44,0x64,0x98,0x48,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x2,0x1,0xff,0x8,0x8,0x10,0x11,0x32,0x56,0x99,0x10,0x10,0x10,0x11,0x12,0x1c,0x0,0x4,0xfe,0x80,0x80,0xf8,0x8,0x88,0x50,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x40,0x37,0x10,0x81,0x61,0x22,0xa,0x16,0x2b,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x44,0xfe,0x20,0x20,0x3c,0x44,0x64,0x98,0x48,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x7f,0x1,0x3f,0x0,0x7f,0x40,0x9f,0x0,0x1f,0x10,0x10,0x1f,0x4,0xff,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x10,0x10,0xf0,0x44,0xfe,0x0,
-+0x0,0x7f,0x44,0x44,0x4f,0x50,0x40,0x5f,0x40,0x41,0x41,0x42,0x4c,0x40,0x7f,0x0,0x8,0xfc,0x0,0x10,0xf8,0x80,0x88,0xfc,0x80,0x40,0x30,0x18,0x8,0x0,0xfc,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x10,0x17,0x19,0x31,0xd1,0x11,0x11,0x11,0x17,0x50,0x20,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfe,0x8,0xf8,0x8,0xf8,0x8,0xe,0xf8,0x8,0x8,
-+0x10,0x10,0x10,0x1f,0x20,0x20,0x7c,0x90,0x11,0x7e,0x14,0x10,0x14,0x18,0x10,0x0,0x40,0x20,0x24,0xfe,0x40,0x40,0xa0,0xa4,0xa8,0x90,0x90,0x88,0x8e,0xa4,0xc0,0x80,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0x24,0xfe,0x40,0x40,0xa0,0xa4,0xa8,0x90,0x90,0x88,0x8e,0xa4,0xc0,0x80,
-+0x8,0xb,0x8,0x10,0x10,0x3f,0x50,0x90,0x10,0x13,0x10,0x10,0x11,0x11,0x12,0x14,0x8,0xfc,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0xf8,0x88,0x80,0x0,0x0,0x0,0x0,
-+0x2,0x1,0x1,0xff,0x2,0x2,0x5,0x5,0xc,0x14,0x24,0xc4,0x4,0x5,0x6,0x4,0x0,0x0,0x4,0xfe,0x0,0x8,0x18,0x20,0xc0,0x80,0x40,0x20,0x18,0xe,0x4,0x0,
-+0x4,0x7f,0x48,0x48,0x48,0x5e,0x52,0x52,0x52,0x5e,0x48,0x48,0x48,0x48,0x7e,0x1,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x58,0x86,0x2,
-+0x1,0x1,0xff,0x1,0x3f,0x1,0x1,0x3f,0x21,0x21,0x3f,0x1,0x2,0xc,0x30,0xc0,0x0,0x4,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8,0x0,0xfc,0x4,0x94,0x48,0x30,0xe,
-+0x0,0x43,0x32,0x13,0x0,0xf,0xf0,0x13,0x12,0x12,0x12,0x10,0x11,0x2a,0x44,0x3,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0xa0,0x18,0x8,0x6,0xfc,
-+0x8,0x1c,0xf0,0x11,0x12,0xfc,0x10,0x39,0x34,0x54,0x90,0x11,0x10,0x10,0x10,0x17,0x40,0x40,0xfc,0x84,0x48,0x30,0x60,0xa0,0x3e,0x42,0xc4,0x24,0x18,0x30,0xc0,0x0,
-+0x8,0x8,0x8,0x12,0x12,0x32,0x51,0x91,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x0,0x80,0x64,0x24,0x4,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x78,0x4f,0x48,0x4b,0x78,0x4b,0x4a,0x4a,0x7b,0x48,0x48,0x48,0x48,0x89,0x1e,0x40,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x48,0x40,0xfe,0x42,0x4a,0xa4,0x90,0xe,0x4,
-+0x20,0x26,0x38,0x22,0x1e,0x21,0x3e,0x48,0x8,0xfe,0x8,0x8,0x14,0x22,0x41,0x2,0x0,0xfc,0x8,0x50,0x20,0xfe,0x22,0x24,0xa0,0xb8,0xa0,0xa0,0xe0,0xa0,0x1e,0x4,
-+0x0,0x40,0x33,0x12,0x82,0x62,0x23,0xa,0x12,0x22,0xe2,0x22,0x24,0x24,0x28,0x20,0x8,0x3c,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x2,0x1,0x7f,0x40,0x80,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x0,0x0,0x0,0xfe,0x2,0x24,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x2f,0x20,0xfb,0x48,0x4b,0x4a,0x4a,0x93,0x50,0x20,0x50,0x48,0x81,0x6,0x40,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x48,0x40,0xfe,0x42,0x4a,0xa4,0x90,0xe,0x4,
-+0x8,0xf,0x10,0x1f,0x0,0xff,0x49,0x2a,0x7f,0x1c,0x2a,0x48,0xff,0x8,0x10,0x60,0x20,0xf0,0x20,0xe0,0x24,0xfe,0x20,0x78,0x24,0xfe,0x54,0x92,0xfe,0x10,0x10,0x10,
-+0x10,0x10,0x17,0x10,0xfc,0x11,0x37,0x38,0x57,0x52,0x92,0x12,0x13,0x12,0x10,0x10,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x12,0x7e,0x55,0x55,0x55,0x54,0x7c,0x10,0x14,0x1c,0xf5,0x42,0xc,0x0,0x80,0x64,0x24,0x4,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x90,0x8,0xe,0x4,
-+0x8,0x8,0xf,0x10,0x10,0x31,0x5f,0x90,0x13,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x0,0x7f,0x0,0x0,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x4,0x4,0x4,0xfc,0x0,
-+0x0,0x0,0x7f,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x10,0x20,0x20,0x20,0x1f,0x0,0x0,0x0,0xe0,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0xfc,0x0,
-+0x2,0x4,0x8,0x10,0x3f,0x8,0x8,0x1f,0x21,0x1,0xff,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x20,0x10,0xf8,0x8,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x30,0x1c,0x8,
-+0x0,0x4,0x42,0x43,0x41,0x40,0x40,0x40,0x41,0x42,0x44,0x48,0x50,0x60,0x1,0x6,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x30,0x48,0x84,0x4,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x20,0x20,0x1f,0x40,0x44,0xfe,0x40,0x0,0xc0,0x80,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0xfe,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x13,0x12,0x10,0x50,0x20,0x40,0x84,0x3e,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xa4,0x34,0x28,0x20,0x20,0x20,
-+0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x8,0x1f,0x24,0x44,0x88,0x10,0x21,0x2,0x4,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x44,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x1f,0x10,0x10,0x1f,0x0,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0xf0,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x10,0x10,0x55,0x56,0x55,0x54,0x54,0x54,0x54,0x55,0x7d,0x45,0x0,0x0,0x80,0x80,0x88,0xfc,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x91,0x12,0x12,0x14,0x14,0x14,0x14,0x13,0x10,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x8,0x9,0x11,0x21,0x41,0xa,0x14,0x33,0x51,0x91,0x10,0x10,0x10,0x10,0x13,0x1c,0x10,0xf8,0x10,0x10,0x10,0xe,0x0,0xf8,0x8,0x10,0x90,0xe0,0x40,0xb0,0xe,0x4,
-+0x0,0x7b,0x49,0x48,0x4f,0x78,0x4b,0x4a,0x4b,0x7a,0x4b,0x48,0x4b,0x4b,0x8d,0x18,0x40,0xf8,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x68,0x26,0xa,0xf8,
-+0x2,0x43,0x24,0x28,0x1f,0x8,0xe8,0x2f,0x20,0x21,0x21,0x22,0x24,0x58,0x88,0x7,0x0,0xe0,0x20,0x48,0xfc,0x88,0x88,0xf8,0x80,0x40,0x54,0x44,0x3c,0x0,0x6,0xfc,
-+0x40,0x4c,0x71,0x40,0x47,0x3c,0x41,0x7c,0x91,0x10,0xfe,0x13,0x28,0x24,0x44,0x80,0x20,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x1f,0x10,0x91,0x51,0x51,0x12,0x34,0x53,0xd1,0x10,0x20,0x21,0x46,0x18,0x80,0x44,0xfe,0x0,0xf0,0x10,0x10,0xc,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x2,0x1,0x1,0xff,0x4,0x4,0x4,0x14,0x14,0x24,0x44,0x4,0x8,0x8,0x11,0x0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x80,
-+0x2,0x1,0xff,0x5,0xc,0x34,0xc5,0x6,0x3f,0x24,0x28,0x37,0x24,0x24,0x27,0x20,0x0,0x4,0xfe,0x10,0xa0,0x60,0x1c,0x8,0xfc,0x48,0x28,0xd8,0x48,0x48,0xc8,0x18,
-+0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x2,0x51,0x50,0x90,0xf,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x84,0x92,0x12,0xf0,
-+0x10,0x8,0x7f,0x22,0x14,0xff,0x20,0x52,0x9c,0x28,0x4c,0x1b,0x29,0xc8,0x28,0x11,0x8,0x7c,0x48,0x48,0x48,0x86,0x0,0xf8,0x48,0x48,0x48,0x30,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x13,0x10,0x58,0x54,0x50,0x91,0x12,0x12,0x14,0x14,0x14,0x14,0x13,0x10,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x2,0x21,0x21,0x10,0x10,0x8,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x80,0x60,0x18,0xe,0x4,
-+0x8,0x4,0x0,0x7f,0x0,0x4,0x8,0x10,0x0,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x20,0x40,0x8,0xfc,0x0,0x40,0x30,0x10,0x0,0xf8,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x2,0x41,0x30,0x17,0x80,0x61,0x22,0xc,0x10,0x27,0xe5,0x25,0x25,0x25,0x3f,0x20,0x10,0x20,0x8,0xfc,0x0,0x20,0x18,0x8,0x0,0xf8,0x28,0x28,0x28,0x28,0xfe,0x0,
-+0x2,0x42,0x33,0x12,0x2,0x1,0xf0,0x10,0x13,0x12,0x12,0x13,0x16,0x1a,0x13,0x2,0x0,0x38,0xc0,0x2,0x2,0xfe,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x0,0x40,0x30,0x12,0x2,0x2,0xf1,0x11,0x10,0x10,0x10,0x14,0x19,0x12,0x4,0x8,0x0,0x80,0x44,0x44,0x4,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x40,0x2f,0x28,0x10,0x3,0xe2,0x22,0x23,0x22,0x22,0x23,0x2a,0x32,0x2f,0x0,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x0,
-+0x0,0x47,0x22,0x21,0x0,0x0,0xe3,0x2c,0x20,0x23,0x20,0x24,0x2f,0x30,0x20,0x0,0x0,0xfc,0x8,0xb0,0x40,0xa0,0x1e,0x44,0x50,0xf8,0x40,0x48,0xfc,0x40,0x40,0x40,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x1f,0x8,0x8,0xff,0x8,0x8,0x8,0x10,0x20,0x10,0xf8,0x10,0x10,0xf0,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x7e,0x22,0x1a,0x22,0x2,0x1f,0x11,0x1f,0x11,0x1f,0x4,0x3f,0x4,0xff,0x8,0x30,0xf8,0x88,0x68,0x88,0x8,0xf0,0x10,0xf0,0x10,0xf0,0x40,0xf8,0x40,0xfe,0x20,0x10,
-+0x0,0x7e,0x22,0x12,0x6,0x1a,0x62,0x1,0x1,0x7f,0x0,0x8,0x4,0x4,0xff,0x0,0x4,0xfe,0x44,0x24,0xc,0x34,0xc4,0x0,0x8,0xfc,0x20,0x20,0x40,0x44,0xfe,0x0,
-+0x10,0x11,0x20,0x20,0x44,0xf8,0x10,0x23,0x40,0xfd,0x0,0x0,0x1d,0xe0,0x40,0x0,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x4,0x4,0xff,0x4,0x3f,0x21,0x21,0x2f,0x21,0x22,0x22,0x24,0x28,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0xe8,0x8,0x88,0x88,0x48,0x28,0x8,0xf8,0x8,
-+0x8,0x8,0xff,0x8,0x7c,0x44,0x48,0x50,0x48,0x44,0x44,0x64,0x59,0x41,0x42,0x44,0x20,0x24,0xfe,0x20,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x4,0x4,0x14,0x8,
-+0x0,0x7f,0x41,0x41,0x41,0x5f,0x41,0x41,0x42,0x42,0x44,0x48,0x50,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x4,0x84,0x84,0x44,0x34,0x14,0x4,0xfc,0x4,
-+0xc,0x70,0x44,0x7e,0x44,0x7d,0x46,0x7d,0x40,0x7c,0x44,0x44,0x44,0x54,0x48,0x83,0x8,0xfc,0x88,0x88,0x88,0x6,0x0,0xfc,0x88,0x88,0x50,0x20,0x50,0x50,0x8e,0x4,
-+0x2,0x1,0x3f,0x8,0x4,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x10,0xf8,0x20,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x7c,0x44,0x48,0x48,0x50,0x48,0x48,0x44,0x44,0x44,0x68,0x51,0x41,0x42,0x44,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0xfc,0x84,0x84,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x54,0x54,0x54,0x8c,0x4,0x4,0xfc,0x4,
-+0x0,0x8,0x7c,0x48,0x49,0x49,0x4a,0x4c,0x48,0x4b,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8e,0x44,0x40,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,
-+0x10,0x11,0x11,0x3d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x13,0x15,0x19,0x11,0x1,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0x8c,0x50,0x20,0x10,0x4e,0x84,0x0,
-+0x40,0x30,0x17,0x0,0x84,0x62,0x22,0x7,0x10,0x20,0xef,0x20,0x20,0x20,0x27,0x20,0x8,0x3c,0xc0,0x4,0x84,0x48,0x10,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0x3f,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x0,0xc,0x30,0x40,0x0,0x0,0xfe,0x2,0x14,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0x60,0x18,0x4,
-+0x10,0x10,0x10,0x10,0x1e,0x22,0x25,0x50,0x90,0x10,0x10,0x12,0x14,0x18,0x11,0x2,0x20,0x20,0x20,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x50,0x50,0x90,0x88,0xe,0x4,
-+0x0,0x0,0x3f,0x4,0x4,0xff,0x4,0x4,0x3f,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x10,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x7f,0x1,0x1,0x1,0x3f,0x20,0x20,0x41,0x7f,0x1,0x1,0x1,0x11,0xa,0x4,0x8,0x88,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x88,0x8,0x8,0x8,0x8,0x8,0x8,
-+0x0,0x78,0x48,0x51,0x52,0x67,0x50,0x4b,0x48,0x4b,0x68,0x52,0x42,0x46,0x4a,0x41,0x80,0x80,0xf0,0x10,0x24,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x80,0x60,0x2c,0xa,0xf8,
-+0x6,0x78,0x40,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x40,0x4e,0x70,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xa8,0x90,0x80,0x80,0x80,
-+0x8,0x8,0x7f,0x8,0x1,0x1f,0x11,0x11,0x11,0xff,0x1,0x2,0x2,0x4,0x18,0x60,0x20,0x28,0xfc,0x20,0x10,0xf8,0x10,0x10,0x14,0xfe,0x0,0x80,0x80,0x60,0x1c,0x8,
-+0x10,0x17,0x14,0x15,0xfd,0x16,0x3b,0x34,0x50,0x5f,0x90,0x11,0x10,0x10,0x11,0x16,0x0,0xbc,0xa4,0xac,0xac,0xb4,0x18,0xa4,0x80,0xfe,0x90,0x10,0xa0,0x40,0xb0,0x8,
-+0x0,0x3e,0x22,0x2a,0x2a,0x2a,0x14,0x62,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x8,0xfc,0x88,0xa8,0xa8,0xa8,0x50,0x88,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x0,0x3f,0x22,0x24,0x2c,0x35,0x24,0x24,0x21,0x27,0x24,0x24,0x47,0x40,0x9f,0x0,0x80,0xfe,0x50,0x7c,0xd0,0x7c,0x50,0x5c,0x0,0xf0,0x90,0x20,0xfc,0x4,0xe4,0xc,
-+0x1,0x0,0x3f,0x20,0x21,0x28,0x24,0x24,0x22,0x22,0x22,0x22,0x40,0x40,0x9f,0x0,0x0,0x84,0xfe,0x0,0x4,0x84,0x84,0x48,0x48,0x48,0x10,0x10,0x20,0x44,0xfe,0x0,
-+0x10,0x17,0x24,0x25,0x45,0xfe,0x13,0x24,0x40,0xff,0x0,0x1,0x1c,0xe0,0x41,0x6,0x0,0xbc,0xa4,0xac,0xac,0xb4,0x18,0xa4,0x80,0xfe,0x90,0x10,0xa0,0x40,0xb0,0x8,
-+0x4,0x4,0x7f,0x4,0x4,0x7f,0x40,0xbf,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0xf4,0x0,0x10,0xf8,0x0,0x40,0x24,0xfe,0x0,
-+0x4,0x4,0x7f,0x4,0x4,0x7f,0x41,0x81,0x1f,0x11,0x11,0x1f,0x1,0x1,0x3f,0x0,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x8,
-+0x4,0x4,0x7f,0x4,0x7f,0x40,0x8f,0x8,0x8,0xf,0x0,0x1f,0x10,0x10,0x1f,0x10,0x40,0x48,0xfc,0x40,0xfe,0x2,0xe4,0x20,0x20,0xe0,0x0,0xf0,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0x7f,0x4,0x4,0x7f,0x41,0x81,0x9,0x9,0x11,0x2,0x2,0x4,0x18,0x60,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x14,0x30,0x40,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x10,0x10,0x14,0x7e,0x54,0x54,0x55,0x55,0x55,0x7d,0x11,0x15,0x1d,0xf4,0x40,0x0,0x8,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x22,0x1e,
-+0x0,0x41,0x26,0x14,0x4,0x4,0xf4,0x14,0x15,0x16,0x14,0x10,0x10,0x28,0x47,0x0,0x0,0x84,0x7e,0x44,0x44,0x44,0x44,0xc4,0x44,0x54,0x48,0x40,0x40,0x46,0xfc,0x0,
-+0x1,0xff,0x10,0x1f,0x0,0x1f,0x10,0x1f,0x0,0x77,0x54,0x75,0x55,0x71,0x52,0xb4,0x0,0xfe,0x0,0xf0,0x0,0xf0,0x10,0xf0,0x0,0xdc,0x54,0x54,0x5c,0x14,0x96,0x62,
-+0x0,0x7f,0x10,0x17,0x14,0x12,0x21,0x22,0x44,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x10,0xf8,0x10,0xd0,0x7c,0x84,0x4,0xd4,0x48,0x0,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x4,0xff,0x0,0x3f,0x20,0x3f,0x15,0x24,0x54,0x8,0x84,0xc4,0x88,0x90,0xa0,0x84,0x4,0xe8,0x10,0xa2,0x82,0x84,0x8,0x90,0xa0,0x40,
-+0x40,0x4b,0x70,0x40,0x45,0x3d,0x1,0x1d,0xf1,0x15,0xff,0x11,0x38,0x54,0x91,0x16,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2,
-+0x4,0xff,0x10,0x10,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x24,0x3d,0x24,0x0,0x3,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xa0,0x60,0x9e,0x4,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x7a,0x4a,0x4f,0x48,0x48,0x78,0x49,0x2,0xc,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x0,0x11,0x79,0x52,0x52,0x54,0x5f,0x52,0x54,0x5f,0x50,0x71,0x4e,0x4,0x0,0x0,0x20,0x20,0x24,0x3e,0x44,0x84,0x4,0x44,0x24,0xa4,0x4,0x84,0x4,0x44,0x28,0x10,
-+0x20,0x27,0x24,0x24,0xfc,0x27,0x2c,0x34,0x64,0xa7,0x24,0x24,0x28,0x28,0xb0,0x40,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0x54,0x8,
-+0x10,0x17,0x14,0x24,0x24,0x67,0xa4,0x24,0x24,0x27,0x24,0x24,0x28,0x28,0x30,0x20,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0x54,0x8,
-+0x0,0x78,0x4f,0x49,0x4a,0x7a,0x4f,0x49,0x4a,0x7c,0x4f,0x48,0x48,0x49,0x4a,0x9c,0x40,0x24,0xfe,0x10,0x28,0xbe,0x68,0x28,0xbe,0xa8,0xa8,0xbe,0xa8,0x28,0x3e,0x20,
-+0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x17,0x34,0x54,0xd7,0x14,0x24,0x24,0x48,0x10,0x80,0x44,0xfe,0x0,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x44,0x54,0x8,
-+0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x20,0x2f,0x28,0x2f,0x48,0x4f,0x88,0x8,0x84,0xfe,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0xf8,0x88,0xf8,0x88,0xf8,0x88,0x98,
-+0x1,0x0,0xff,0x8,0x10,0x21,0x49,0xfb,0x11,0x25,0x45,0xf9,0x9,0x11,0x21,0x41,0x0,0x84,0xfe,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x14,0xfe,0x0,
-+0x0,0x7d,0x44,0x44,0x44,0x7d,0x11,0x11,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x41,0x1,0x0,0xfc,0x8,0x50,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x10,0x11,0x10,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xf5,0x41,0x1,0x0,0xfc,0x8,0x50,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x4f,0x48,0x49,0x49,0x4a,0x7a,0x44,0x8,0x1,0x0,0x80,0x40,0x0,0xc0,0x44,0x4c,0xf0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x80,
-+0x0,0x40,0x30,0x13,0x80,0x60,0x27,0x8,0x11,0x21,0xe2,0x22,0x24,0x28,0x21,0x20,0x80,0x40,0x0,0xc0,0x44,0x4c,0xf0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x80,
-+0x0,0x47,0x30,0x10,0x80,0x67,0x24,0xc,0x17,0x24,0xe4,0x27,0x24,0x24,0x24,0x24,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8,
-+0x2,0x1,0x0,0x1f,0x1,0x1,0x7d,0x5,0x5,0x9,0x9,0x11,0x21,0x41,0x5,0x2,0x0,0x0,0x0,0x0,0x8,0x18,0xa0,0x40,0x40,0x20,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x3f,0x2,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x21,0x21,0x2,0x51,0x50,0x90,0xf,0x0,0xf0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x18,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x3f,0x2,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x21,0x21,0x7f,0x2,0x2,0x4,0x18,0x60,0xf0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x10,0xf8,0x8,0x8,0x8,0x50,0x20,
-+0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x41,0x41,0x80,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x1,0x1,0x9,0x49,0x49,0x51,0x53,0x7d,0x45,0x49,0x55,0x7f,0x43,0x41,0x7f,0x40,0x0,0x0,0x20,0x24,0x24,0x44,0x4c,0xf4,0x14,0x24,0x54,0xfc,0xc,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x20,0x20,0x7f,0xa1,0x21,0x21,0x22,0x22,0x22,0x24,0x24,0x28,0x30,0x80,0xa0,0x90,0x90,0x84,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x8,0x10,0x15,0x36,0x54,0x94,0x14,0x14,0x11,0x2,0x51,0x50,0x90,0xf,0x0,0x80,0x84,0xfe,0x8,0x88,0x50,0x20,0x50,0x8e,0x4,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x10,0x10,0x10,0x10,0x58,0x57,0x51,0x91,0x11,0x11,0x12,0x12,0x12,0x14,0x14,0x18,0x80,0xa0,0x90,0x90,0x84,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x1,0x1,0x1,0x1,0x1,0xff,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x40,0x20,0x20,0x4,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x1,0x1,0x1,0x1,0x7f,0x41,0x41,0x41,0x41,0x7f,0x41,0x41,0x41,0x41,0x7f,0x40,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x9,0x7f,0x49,0x49,0x49,0x49,0x7f,0x49,0x49,0x49,0x49,0x7f,0x41,0x0,0x0,0x0,0x7c,0xc4,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x10,0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x11,0x11,0x15,0x19,0x11,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,
-+0x0,0x44,0x2c,0x10,0x28,0x4f,0x89,0x9,0x19,0x29,0x49,0x8a,0xa,0xa,0x54,0x28,0x80,0xa0,0x90,0x90,0x84,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x40,0x30,0x10,0x87,0x64,0x24,0xc,0x14,0x27,0xe4,0x24,0x24,0x24,0x27,0x24,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x2,0x41,0x20,0x2f,0x82,0x62,0x23,0x2,0x12,0x22,0xe2,0x24,0x24,0x28,0x31,0x20,0x10,0x14,0x1e,0xe0,0x40,0x3e,0x84,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xa8,0x10,
-+0x0,0xff,0x4,0x4,0x3f,0x24,0x24,0x24,0x24,0x28,0x30,0x2f,0x20,0x20,0x3f,0x20,0x4,0xfe,0x40,0x48,0xfc,0x48,0x48,0x48,0x78,0x8,0x48,0xe8,0x8,0x8,0xf8,0x8,
-+0x2,0x2,0xff,0x4,0x4,0xf,0x8,0x18,0x2f,0x48,0x88,0xf,0x8,0x8,0x8,0x8,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x4,0x4,0x4,0xff,0x4,0x4,0xf,0x8,0x14,0x12,0x21,0x40,0x81,0x6,0x18,0x60,0x0,0x0,0x4,0xfe,0x0,0x0,0xf0,0x10,0x20,0x20,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x2,0x2,0x2,0xff,0x4,0x4,0x8,0x8,0x1f,0x28,0x48,0x88,0x8,0x8,0xf,0x8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x10,0x1f,0x31,0x51,0x92,0x13,0x15,0x19,0x11,0x11,0x11,0x11,0x11,0x80,0x80,0x80,0x84,0xfe,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0xe,0xf0,0x12,0x57,0x39,0x11,0xff,0x11,0x39,0x35,0x55,0x91,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x0,0x47,0x20,0x20,0xf,0x1,0xe2,0x24,0x2b,0x21,0x21,0x21,0x2a,0x32,0x24,0x8,0x38,0xc0,0x40,0x44,0xfe,0x60,0x50,0x4e,0xf4,0x10,0x20,0x3c,0x4,0x4,0x28,0x10,
-+0x0,0x7f,0x10,0x10,0x10,0x8,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0xf0,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x10,0x10,0x10,0x20,0x25,0x44,0xf8,0x10,0x10,0x20,0x48,0xfc,0x45,0x2,0x4,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10,
-+0x0,0x43,0x30,0x10,0x0,0x7,0xf0,0x10,0x10,0x10,0x10,0x11,0x10,0x28,0x47,0x0,0x10,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x6,0xfc,0x0,
-+0x4,0x42,0x22,0x3f,0x84,0x44,0x47,0xd,0x15,0x25,0xe5,0x25,0x25,0x29,0x35,0x22,0x10,0x10,0x90,0xd0,0x28,0x28,0x44,0x82,0x20,0x18,0x8,0x0,0x20,0x18,0xc,0x4,
-+0x0,0x3f,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x1,0x1,0xff,0x1,0x1,0x5,0x2,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0xfe,0x14,0x33,0x3a,0x56,0x53,0x92,0x12,0x13,0x12,0x12,0x12,0x40,0x60,0x90,0x8,0xf6,0x0,0xc4,0x54,0x54,0xd4,0x54,0x54,0xc4,0x44,0x54,0xc8,
-+0x1,0x1,0x3f,0x20,0x2f,0x20,0x27,0x24,0x27,0x20,0x2f,0x20,0x5f,0x41,0x86,0x18,0xf8,0x0,0xfe,0x84,0xf0,0x84,0xfc,0x10,0xf0,0x80,0xf8,0x80,0xfe,0x40,0x30,0xc,
-+0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x21,0x22,0x27,0x22,0x51,0x50,0x90,0xf,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x8,0x48,0xe8,0x10,0x84,0x92,0x12,0xf0,
-+0x1,0x9,0x31,0x27,0x22,0x3d,0x27,0x21,0x39,0x27,0x21,0xff,0x0,0x10,0x30,0x40,0x0,0x8,0x3c,0xc8,0x8,0x38,0xc8,0x8,0x38,0xc8,0x8,0xfe,0x0,0x10,0xc,0x4,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc1,0x1,0x3f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0x20,0x18,0xc,0x4,0x0,
-+0x1,0x2,0x4,0x8,0x37,0xc0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x26,0x0,0x80,0x40,0x30,0xce,0x4,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x18,
-+0x0,0x41,0x22,0x24,0xb,0x10,0xe7,0x24,0x27,0x24,0x27,0x24,0x25,0x50,0x8f,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0x88,0x98,0x6,0xfc,0x0,
-+0x4,0x4,0xf,0x10,0x20,0x7f,0xa1,0x21,0x3f,0x21,0x21,0x3f,0x20,0x0,0xff,0x0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x4,0xfe,0x0,
-+0x20,0x20,0x21,0x22,0xb5,0xa8,0xa7,0x24,0x24,0x27,0x24,0x24,0x27,0x24,0x24,0x25,0x40,0xc0,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x0,0x40,0x31,0x12,0x85,0x68,0x27,0xc,0x14,0x27,0xe4,0x24,0x27,0x24,0x24,0x25,0x40,0xc0,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x1,0x41,0x31,0x12,0x84,0x6f,0x24,0xc,0x17,0x24,0xe4,0x27,0x24,0x20,0x2f,0x20,0x0,0x0,0xf8,0x10,0x24,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,0x0,0xfe,0x0,
-+0x0,0x7b,0x4a,0x52,0x53,0x62,0x52,0x4b,0x48,0x4f,0x6c,0x54,0x45,0x44,0x44,0x44,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x44,0xfe,0x44,0x54,0xf4,0x84,0x14,0x8,
-+0x0,0x3f,0x0,0x2,0x1,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x40,0x80,0x0,0x80,0xfc,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x24,0x25,0x24,0x44,0x2f,0x10,0x28,0x45,0x82,0x4,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0xff,0x1,0x1,0x3f,0x21,0x21,0x29,0x25,0x21,0x21,0x29,0x25,0x21,0x21,0x20,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x48,0x28,0x8,0x8,0x48,0x28,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x48,0xe8,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x10,0x10,0x54,0x54,0x54,0x54,0x54,0x54,0x57,0x7c,0x44,0x0,0x0,0x0,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x0,0x7f,0x1,0x3f,0x21,0x21,0x3f,0x1,0x7f,0x41,0x41,0x5f,0x48,0x40,0x40,0x10,0x78,0x80,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x44,0xe4,0x24,0x4,0xc,
-+0x2,0x1,0x7f,0x40,0x80,0x1f,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4f,0x21,0x21,0x7,0x2,0xe2,0x3f,0x20,0x20,0x27,0x24,0x2c,0x34,0x27,0x4,0x8,0xfc,0x0,0x10,0xf8,0x10,0x14,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7e,0x2,0x2,0x22,0x12,0x12,0x2,0xa,0x12,0x62,0x22,0x2,0x2,0x14,0x8,0x4,0xfe,0x4,0x4,0x44,0x24,0x24,0x4,0x14,0x24,0xc4,0x44,0x4,0x4,0x28,0x10,
-+0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x40,0x30,0x10,0x4,0xfe,0x0,
-+0x20,0x20,0x20,0x27,0xf8,0x20,0x27,0x24,0x24,0x24,0x3f,0xe0,0x43,0xc,0x0,0x1,0x20,0x28,0x24,0xfe,0x20,0xa0,0xe0,0xa4,0xa4,0xa8,0x90,0x10,0xaa,0x4a,0x86,0x0,
-+0x8,0x8,0xff,0x8,0x0,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x20,0x24,0xfe,0x20,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x11,0xff,0x20,0x22,0x7f,0x62,0xa2,0x3e,0x22,0x22,0x3e,0x22,0x22,0x2a,0x24,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x0,0xb,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x1,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x47,0x24,0x27,0x4,0x7,0xe0,0x2f,0x28,0x28,0x2b,0x28,0x28,0x50,0x88,0x7,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x84,0xfe,0x84,0xa4,0xf4,0x4,0x14,0x8,0x6,0xfc,
-+0x0,0x10,0x79,0x52,0x55,0x58,0x57,0x54,0x54,0x57,0x54,0x74,0x57,0x4,0x4,0x5,0x40,0xc0,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x10,0x10,0x10,0x55,0x54,0x54,0x54,0x55,0x56,0x55,0x55,0x7d,0x45,0x1,0x1,0x1,0x50,0x50,0x88,0x24,0x50,0x50,0x88,0x6,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x14,0x14,0x27,0x4a,0x82,0x12,0x2f,0x62,0xaa,0x2b,0x2a,0x2a,0x2b,0x3c,0x28,0x20,0x0,0x4,0xbe,0x24,0x24,0xa4,0xe4,0x24,0x24,0xa4,0x24,0x34,0xa8,0x20,0x20,0x20,
-+0x1,0x2,0x4,0xf,0x30,0xde,0x12,0x1e,0x12,0x1e,0x12,0x16,0x29,0x28,0x48,0x7,0x0,0x80,0x40,0xf0,0xe,0x14,0x90,0x90,0x90,0x90,0x10,0x30,0x4,0x92,0x12,0xf0,
-+0x28,0x28,0x44,0x92,0x10,0x29,0x46,0x82,0x7c,0x44,0x44,0x44,0x44,0x7c,0x45,0x2,0x40,0x40,0x40,0x7c,0x84,0x28,0x20,0x20,0x20,0x20,0x50,0x50,0x90,0x88,0xe,0x4,
-+0x4,0x88,0x54,0x22,0x52,0x91,0x1e,0x12,0x32,0x52,0x92,0x13,0x12,0x10,0xa1,0x42,0x20,0x20,0x30,0x28,0x20,0xfe,0x20,0x20,0x20,0x20,0xd0,0x50,0x88,0x88,0x6,0x4,
-+0x2,0x1,0xff,0x4,0x8,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x0,0x10,0xf8,0x8,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x22,0x11,0x9,0xff,0x4,0x9,0x1f,0x20,0xdf,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x8,0x10,0x24,0xfe,0x40,0x20,0xf0,0xe,0xf4,0x0,0xf0,0x0,0xf0,0x10,0xf0,0x10,
-+0x1,0x41,0x32,0x14,0x80,0x60,0x20,0x9,0x12,0x27,0xea,0x22,0x22,0x22,0x23,0x22,0x10,0x10,0x8,0x44,0x40,0xa0,0xa0,0x10,0x8,0xfe,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x1,0x7f,0x40,0x9f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x21,0x21,0x2f,0x20,0x20,0x0,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x8,0x28,0xe8,0x28,0x10,
-+0x21,0x11,0x12,0xfc,0x8,0x10,0x10,0x35,0x5a,0x97,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x8,0x44,0x40,0xa0,0xa0,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x7d,0x4,0x8,0x29,0x11,0xff,0x15,0x11,0x11,0x11,0x11,0x11,0x10,0x50,0x23,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x58,0x84,0x2,
-+0x0,0x7c,0x4,0x9,0x2b,0x11,0xff,0x15,0x10,0x11,0x12,0x11,0x16,0x10,0x53,0x20,0x40,0x78,0x90,0x24,0xfe,0x24,0x44,0xfc,0x84,0x48,0xb0,0x30,0x68,0xa6,0x24,0x60,
-+0x4,0x7e,0x5,0x24,0x24,0x24,0x24,0x24,0x3e,0x2,0x2,0x1e,0xe2,0x42,0x14,0xb,0x0,0x0,0xfc,0x4,0x4,0x84,0x84,0x88,0x88,0x50,0x20,0x50,0x50,0x88,0x8e,0x4,
-+0x10,0x1e,0x22,0x52,0x14,0x8,0x12,0xef,0xa,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x8,0xfc,0x88,0xa8,0x98,0x82,0x7e,0xe0,0x20,0xa0,0x48,0xfc,0x8,0xe8,0x8,0x18,
-+0x0,0x44,0x36,0x15,0x85,0x64,0x27,0x4,0xc,0x14,0x25,0xe5,0x26,0x24,0x28,0x30,0x4,0x44,0x4c,0x54,0x64,0x44,0xfc,0x44,0xc4,0xe4,0x5c,0x4c,0x44,0x44,0x44,0x4,
-+0x0,0x7f,0x44,0x87,0x8,0x10,0x3f,0x51,0x11,0x1f,0x12,0x2,0x4,0x8,0x10,0x60,0x0,0xfe,0x2,0xe4,0x40,0x90,0xf8,0x10,0x10,0xf0,0x90,0x80,0xa2,0x92,0x7e,0x0,
-+0x0,0x3f,0x0,0x0,0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0xc0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x13,0x10,0x10,0xfd,0x11,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0x7,0x0,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x0,
-+0x1,0x1,0x3f,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x5,0x8,0x18,0xea,0xc,0x8,0x0,0x10,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x8,0x90,0x60,0x30,0xe,0x4,
-+0x0,0x3f,0x21,0x21,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x24,0x44,0x48,0x92,0x1,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x90,0x88,0x84,0x84,0x0,
-+0x10,0x17,0x12,0x11,0xff,0x10,0x10,0x1f,0x30,0xd1,0x11,0x12,0x12,0x14,0x59,0x22,0x1c,0xe8,0x48,0x50,0xfc,0x80,0x84,0xfe,0x80,0xf8,0x8,0x90,0x60,0x90,0xe,0x4,
-+0x10,0x10,0x23,0xfc,0x27,0x40,0x93,0xfe,0x12,0x13,0x1d,0xf1,0x53,0x15,0x11,0x11,0x40,0x48,0xfc,0x40,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x44,0x28,0x10,0x4e,0x84,0x0,
-+0x0,0x7f,0x40,0x4f,0x40,0x40,0x5f,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x4,0xfe,0x44,0xe4,0x4,0x24,0xf4,0x84,0x84,0x84,0x94,0x94,0x74,0x4,0xfc,0x4,
-+0x0,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x20,0x21,0x21,0x21,0x21,0x22,0x4,0x18,0x60,0x10,0xf8,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x60,0x18,0x4,
-+0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x5f,0x50,0x51,0x51,0x52,0x44,0x48,0x7f,0x40,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x4,0xf4,0x14,0x14,0x14,0x94,0x44,0x24,0xfc,0x4,
-+0x2,0x44,0x2b,0x10,0x2f,0x48,0x8b,0xa,0x1a,0x2b,0x49,0x89,0xb,0xd,0x51,0x21,0x40,0x48,0xfc,0x40,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x44,0x28,0x10,0x4e,0x84,0x0,
-+0x0,0x47,0x34,0x14,0x84,0x65,0x25,0xd,0x15,0x25,0xe4,0x24,0x29,0x2a,0x30,0x20,0x4,0xfe,0x20,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x20,0xa8,0xa6,0x22,0xa0,0x40,
-+0x10,0x10,0x21,0x23,0x48,0xff,0x10,0x21,0x42,0xfc,0x1,0x2,0x1c,0xe1,0x46,0x0,0x80,0xf8,0x8,0xf0,0x14,0xfe,0x80,0x88,0x50,0xe0,0x60,0x50,0xc8,0x4e,0x44,0xc0,
-+0x0,0x43,0x30,0x10,0x0,0x7,0xf1,0x11,0x11,0x11,0x12,0x12,0x14,0x28,0x47,0x0,0x10,0xf8,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0x24,0x1c,0x0,0x6,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x10,0x1e,0x12,0x22,0x22,0x64,0x94,0x8,0x8,0x10,0x20,0x40,0x40,0x44,0xfe,0x40,0x8,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0,
-+0x0,0x3f,0x21,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x44,0x89,0x9,0x28,0x28,0x47,0x8,0xfc,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x90,0x88,0x0,0x94,0x12,0xf2,
-+0x10,0x1e,0x12,0x22,0x22,0x54,0x8c,0x8,0x10,0x20,0x42,0x11,0x51,0x50,0x8f,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x90,0x84,0x84,0x7c,0x0,0x0,0x14,0x12,0xf2,0x0,
-+0x0,0x78,0x4f,0x54,0x58,0x63,0x50,0x48,0x4f,0x48,0x68,0x50,0x41,0x41,0x42,0x4c,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0x8,0xfc,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x0,0x0,0x7f,0x40,0x40,0x40,0x40,0x7f,0x40,0x40,0x40,0x40,0x7f,0x40,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,
-+0x10,0x10,0x20,0x21,0x45,0xfa,0x14,0x20,0x40,0xfc,0x0,0x0,0x1c,0xe0,0x40,0x0,0x80,0x80,0x80,0x4,0xfe,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x10,0x7d,0x11,0x11,0xff,0x11,0x51,0x5d,0x51,0x50,0x70,0x49,0x44,0x83,0x20,0x28,0x28,0xfc,0x20,0x20,0x28,0x28,0x70,0xa0,0x24,0x54,0x8c,0x0,0x6,0xfc,
-+0x0,0x7c,0x47,0x44,0x44,0x7c,0x10,0x13,0x5c,0x50,0x50,0x51,0x5d,0xf2,0x44,0x8,0x8,0x1c,0xe0,0x40,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x10,0x11,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x15,0x19,0x12,0x4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0xff,0x1,0x11,0x11,0x11,0x11,0x1f,0x10,0xf0,0x0,0x0,0x10,0xf8,0x80,0x80,0x84,0xfe,0x0,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x2,0x1f,0x15,0x11,0x1f,0x11,0x15,0x1f,0x0,0xff,0x4,0xf,0x0,0x0,0x0,0x0,0x10,0xf8,0x50,0x10,0xf0,0x10,0x50,0xf0,0x4,0xfe,0x0,0xf0,0x10,0x10,0xa0,0x40,
-+0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x10,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x12,0x11,0x10,0x13,0x5a,0x56,0x52,0x92,0x13,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x8,0x18,0xa0,0xf8,0x8,0x8,0x8,0x8,0xf8,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x20,0x17,0x50,0x44,0x42,0x4f,0x48,0x48,0x4f,0x4a,0x42,0x42,0x44,0x48,0x50,0x40,0x4,0xfe,0x4,0x44,0x84,0xe4,0x24,0x24,0xe4,0xa4,0x84,0x94,0x94,0x74,0x4,0xc,
-+0x8,0x8,0x7e,0x8,0x8,0x7e,0x9,0x8,0xfe,0x18,0x1c,0x2a,0x28,0x49,0x8,0x8,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0x88,0x84,0xfc,0x4,0x0,
-+0x0,0x0,0x1f,0x0,0x0,0x0,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x3f,0x0,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0xf8,0x8,
-+0x2,0x3f,0x22,0x22,0x3e,0x1,0x7f,0x41,0x49,0x49,0x49,0x49,0x14,0x12,0x21,0x41,0x0,0x7c,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,0x40,
-+0x8,0x8,0xf,0x10,0x10,0x26,0x43,0x81,0x0,0x0,0x3,0x1c,0x8,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x24,0xc4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x7c,0x44,0x48,0x48,0x50,0x49,0x49,0x45,0x45,0x45,0x69,0x50,0x40,0x40,0x43,0x8,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x50,0x48,0x84,0x4,
-+0x2,0x2,0x4,0x8,0x10,0x7f,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0xc0,0x0,0x0,0x40,0x20,0x10,0xf8,0x88,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x43,0x30,0x10,0x0,0x7,0xf0,0x10,0x11,0x11,0x12,0x17,0x10,0x28,0x47,0x0,0x10,0xf8,0x0,0x0,0x8,0xfc,0x80,0x80,0x0,0x20,0x10,0xf8,0x8,0x6,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x11,0x21,0x45,0x79,0x11,0x20,0x7f,0x2,0x1e,0xe2,0x47,0x0,0x40,0x44,0xfe,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x94,0x94,0x94,0xfe,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x53,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x0,0x88,0x7c,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x20,0x20,0x44,0xfe,0x2,0x0,
-+0x1f,0x10,0x1f,0x10,0x1f,0x0,0x7f,0x42,0x9f,0x4,0x9,0x1f,0x1,0x7f,0x1,0x1,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x0,0x0,0xf0,0x0,0xfc,0x0,0x0,
-+0x10,0x8,0x7f,0x0,0x22,0x14,0xff,0x2,0x3f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x20,0x20,0x24,0x7e,0x84,0x4,0x44,0x24,0x24,0xc,0x34,0xc4,0x4,0x4,0x28,0x10,
-+0x0,0x3f,0x8,0x8,0x8,0x10,0x1f,0x20,0x40,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x20,0xf0,0x20,0x24,0x7e,0x4,0xc4,0x54,0x88,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x20,0x20,0x20,0x2f,0x28,0x28,0x28,0x28,0x28,0x28,0x20,0x20,0x3f,0x0,0x8,0xfc,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x84,0xfe,0x0,
-+0x8,0xfd,0x11,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x0,0x4,0xfe,0x10,0x10,0x7c,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x10,0x14,0xfe,0x0,
-+0x4,0x4,0x3f,0x4,0x4,0x8,0x8,0x11,0x21,0x1,0xff,0x1,0x9,0x11,0x25,0x2,0x0,0x20,0xf0,0x20,0x20,0x24,0x24,0x1c,0x0,0x4,0xfe,0x0,0x20,0x18,0x8,0x0,
-+0x8,0xa,0x7f,0x8,0x8,0xff,0x8,0xa,0x7f,0x8,0x1c,0x1a,0x2a,0x48,0x89,0xa,0x40,0x50,0x48,0x48,0x40,0xfe,0x40,0x40,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x8,0x8,0xa,0x7f,0x8,0x8,0xff,0x2,0x3f,0x22,0x22,0x22,0x22,0x3e,0x21,0x2,0x40,0x60,0x58,0x48,0x40,0x44,0xfe,0x40,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x2,0x1,0x7f,0x40,0x81,0x1,0x11,0x11,0x11,0x21,0x2,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0xfe,0x2,0x4,0x0,0x10,0x18,0x20,0x40,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x2,0x1,0x7f,0x42,0x81,0x3f,0x8,0x4,0x2,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0x0,0x0,0xfe,0x2,0x14,0xf8,0x20,0x40,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0x0,
-+0x8,0xa,0x7f,0x8,0x8,0xff,0x10,0xff,0x20,0x28,0x7e,0x8,0xf,0xf8,0x9,0xa,0x40,0x50,0x48,0x48,0x40,0xfe,0x40,0x40,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6,
-+0x0,0x7f,0x1,0x1,0x1f,0x11,0x11,0x1f,0x11,0x11,0xff,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x14,0xfe,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x2,0x2,0xff,0x4,0x4,0x8,0x8,0x13,0x30,0x50,0x90,0x10,0x10,0x17,0x10,0x0,0x0,0x4,0xfe,0x0,0x40,0x40,0x50,0xf8,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x20,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x22,0x2a,0x2f,0x32,0xff,0x25,0x25,0x29,0x33,0xe2,0x22,0x22,0x22,0x20,0xa3,0x4c,0x8,0x28,0xbe,0x48,0xfe,0x14,0x14,0xa6,0xf8,0x8,0x48,0x48,0x48,0xa0,0x18,0x4,
-+0x10,0x7e,0x10,0x28,0x7e,0x8,0xfe,0x9,0xa,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x10,0x10,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x8,0x28,0x3e,0x48,0xff,0x14,0x16,0x24,0x40,0x1f,0x10,0x11,0x11,0x12,0xc,0x30,0x10,0x50,0x7c,0x90,0xfe,0x28,0x28,0x4a,0x86,0xf0,0x10,0x10,0x10,0x90,0x60,0x18,
-+0x4,0x7e,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x29,0x45,0x82,0x20,0x14,0xfe,0x0,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x45,0x95,0xa,0x20,0x14,0xfe,0x0,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x4,0xff,0x4,0x7f,0x10,0x1e,0x22,0x54,0x8,0x70,0x4,0xff,0x4,0x4,0x8,0x10,0x44,0xfe,0x40,0xfc,0x80,0x98,0xe0,0x84,0x84,0x7c,0x40,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x4f,0x30,0x17,0x4,0x7,0xf4,0x17,0x10,0x13,0x12,0x13,0x12,0x13,0x28,0x47,0xa4,0xfe,0xa0,0xfc,0xa4,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x6,0xfc,
-+0x20,0x20,0xaf,0x70,0x27,0x24,0xff,0x24,0x77,0x68,0xa3,0x22,0x23,0x22,0x23,0x22,0xa0,0xa4,0xfe,0xa0,0xfc,0xa4,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x4,0x24,0x14,0x4,0xff,0x0,0x4,0x22,0x2f,0x21,0x21,0x2f,0x21,0x21,0x3f,0x20,0x40,0x48,0x50,0x44,0xfe,0x0,0x40,0x88,0xe8,0x8,0x48,0xe8,0x8,0x8,0xf8,0x8,
-+0x4,0xff,0x4,0x23,0x1a,0x8b,0x40,0x4f,0x14,0x27,0xe0,0x2f,0x20,0x21,0x22,0x24,0x44,0xfe,0x40,0xf8,0x8,0xf8,0x0,0xbc,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x44,
-+0x1,0x1,0xff,0x1,0x3f,0x21,0x23,0x25,0x9,0x30,0xc7,0x0,0x0,0xe,0x1,0x0,0x0,0x4,0xfe,0x0,0xf8,0x8,0x88,0x50,0x30,0xe,0x4,0xc0,0x40,0x0,0xc0,0x40,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x11,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x3,0x42,0x32,0x13,0x80,0x67,0x24,0xc,0x17,0x20,0xef,0x20,0x21,0x22,0x24,0x28,0xf8,0x8,0x8,0xf8,0x0,0xbc,0xa4,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x3f,0x0,0x11,0x9,0x4,0x3,0xd,0x11,0x7f,0x91,0x11,0x1f,0x1,0x1,0x3f,0x10,0xf8,0x8,0x10,0x20,0x40,0x80,0x60,0x10,0xfe,0x14,0x10,0xf0,0x20,0xf0,0x8,0x8,
-+0x4,0x7e,0x44,0x44,0x44,0x7d,0x11,0x51,0x5d,0x50,0x53,0x50,0x5c,0xf1,0x42,0x0,0xf8,0x88,0x88,0xf8,0x0,0xdc,0x54,0x54,0xdc,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20,
-+0x3,0x12,0x7a,0x53,0x50,0x57,0x54,0x54,0x57,0x50,0x5f,0x70,0x51,0x2,0x4,0x0,0xf8,0x8,0x8,0xf8,0x0,0xbc,0xa4,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x0,0x42,0x32,0x13,0x4,0x0,0xf7,0x10,0x13,0x12,0x12,0x12,0x13,0x28,0x47,0x0,0x40,0x40,0x50,0xf8,0x40,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x6,0xfc,0x0,
-+0x2,0x4,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x1,0x1,0xff,0x1,0x1,0x1,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x0,0x0,0x4,0x4,0xfc,
-+0x10,0x10,0x10,0x12,0x54,0x58,0x53,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x87,0x0,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x12,0x54,0x59,0x51,0x91,0x11,0x10,0x13,0x28,0x24,0x45,0x82,0x0,0xf8,0x88,0x88,0xf8,0x0,0xdc,0x54,0x54,0xdc,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20,
-+0x1,0x1,0x3f,0x1,0x1f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x12,0x2,0xc,0x30,0x0,0x10,0xf8,0x0,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x10,0x13,0x11,0x10,0xfc,0x10,0x15,0x1a,0x35,0xd0,0x10,0x17,0x10,0x10,0x50,0x20,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0xf4,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,
-+0x1,0x7f,0x41,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x14,0x12,0x21,0xc1,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x40,0x33,0x11,0x0,0x80,0x60,0x21,0xa,0x15,0x20,0xe0,0x27,0x20,0x20,0x20,0x20,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0xf4,0x40,0x40,0xfc,0x40,0x40,0x40,0x40,
-+0x4,0x7e,0x44,0x54,0x57,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x29,0x25,0x42,0x84,0x20,0x28,0x24,0x20,0xfe,0xa0,0xa0,0x94,0xf4,0x98,0x98,0x90,0x28,0x2a,0x4a,0x86,
-+0x8,0x8,0xf,0x14,0x24,0x47,0x4,0x4,0x7,0x4,0x4,0x52,0x51,0x90,0xf,0x0,0x0,0x8,0xfc,0x0,0x20,0xf0,0x0,0x20,0xf0,0x0,0x0,0x4,0x92,0x92,0xf0,0x0,
-+0x22,0x21,0x20,0x20,0x27,0xfc,0x25,0x24,0x27,0x20,0x3b,0xe2,0x43,0x2,0x3,0x2,0x8,0x10,0xa0,0x4,0xfe,0x44,0x54,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x12,0x11,0x10,0x10,0x5f,0x54,0x55,0x94,0x17,0x10,0x13,0x12,0x13,0x12,0x13,0x12,0x8,0x10,0xa0,0x4,0xfe,0x44,0x54,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x10,0x8,0x4,0x0,0x3f,0x21,0x29,0x21,0x3f,0x0,0xf,0x8,0xf,0x8,0xf,0x8,0x10,0x20,0x40,0x8,0xfc,0x8,0x28,0x8,0xf8,0x20,0xf0,0x20,0xe0,0x20,0xe0,0x20,
-+0x1,0x7c,0x44,0x54,0x55,0x55,0x55,0x55,0x55,0x54,0x54,0x54,0x20,0x28,0x44,0x80,0x4,0x88,0x50,0x4,0xfe,0x24,0xac,0x24,0xfc,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x88,
-+0x8,0x8,0x8,0xa,0xff,0x8,0xa,0xc,0x38,0xc8,0x8,0x8,0x8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x8,0x7c,0x4f,0x48,0x49,0x4a,0x4c,0x4b,0x4a,0x4b,0x7a,0x4b,0x0,0xf,0x0,0x40,0x40,0x48,0xfc,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0,
-+0x0,0x40,0x30,0x17,0x80,0x61,0x22,0xc,0x13,0x22,0xe3,0x22,0x23,0x20,0x2f,0x20,0x40,0x40,0x48,0xfc,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0,
-+0x8,0x8,0x8,0x8,0xff,0x8,0x18,0x1c,0x2a,0x28,0x48,0x8,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x12,0xff,0x20,0x28,0x4a,0x7f,0x8,0x8,0xf,0xf8,0x48,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x20,0x27,0x3c,0x45,0x85,0x7d,0x25,0x25,0xfd,0x25,0x25,0x21,0x2a,0x32,0x24,0x8,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x14,0x84,0x44,0x54,0x8,
-+0x20,0x1b,0x48,0x40,0x4f,0x49,0x49,0x4f,0x49,0x49,0x4f,0x49,0x41,0x41,0x41,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x4,0x4,0x14,0x8,
-+0x8,0x7c,0x4b,0x48,0x48,0x78,0x4b,0x48,0x48,0x78,0x48,0x49,0x4e,0x7d,0x48,0x0,0xc,0x30,0xc0,0x80,0x40,0x40,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x6,0xfc,0x0,
-+0x20,0x27,0x24,0x24,0xfc,0x24,0x74,0x6f,0xa4,0x24,0x24,0x24,0x24,0x29,0x30,0x20,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x54,0x88,
-+0x10,0x10,0x13,0x12,0xfd,0x10,0x38,0x35,0x52,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0xfe,0x8a,0x4,0x40,0xfe,0x80,0x88,0xfc,0x80,0x84,0xfe,0x80,0x80,0x80,
-+0x1,0x9,0x7d,0x49,0x4a,0x4a,0x4c,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x8,0x8,0xf,0x12,0x12,0x22,0x43,0x82,0x2,0x2,0x3,0x2,0x2,0x2,0x2,0x2,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,
-+0x11,0x11,0x11,0x15,0x5a,0x52,0x54,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x1,0x41,0x31,0x11,0x2,0x2,0xf4,0x10,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x10,0x10,0x17,0x11,0xf8,0x17,0x14,0x1c,0x37,0xd4,0x15,0x15,0x15,0x15,0x55,0x24,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x44,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x2,0x1,0xff,0x8,0x4,0x3,0x1c,0xe0,0x1f,0x2,0x4,0x3f,0x24,0x24,0x24,0x20,0x0,0x4,0xfe,0x20,0x40,0x80,0x70,0xe,0xf0,0x0,0x8,0xfc,0x48,0x48,0x48,0x18,
-+0x2,0x1,0x7f,0x40,0x80,0x3,0x3e,0x2,0x3,0x7e,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0xfe,0x2,0x34,0xc0,0x0,0x8,0xfc,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x2,0x1,0x7f,0x48,0x94,0x4,0xb,0x12,0x22,0x43,0x2,0x2,0x3,0x2,0x2,0x2,0x0,0x0,0xfe,0x22,0x14,0x0,0xfc,0x0,0x20,0xf0,0x0,0x10,0xf8,0x0,0x0,0x0,
-+0x8,0xf,0x8,0x13,0x10,0x3f,0x50,0x93,0x12,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0xb0,0x8,0x4,
-+0x2,0x1,0x7f,0x44,0xbf,0x4,0x1f,0x4,0xff,0x4,0x9,0x3f,0xc5,0x9,0x15,0x2,0x0,0x0,0xfe,0x42,0xfc,0x40,0xf0,0x44,0xfe,0x40,0x20,0xf8,0x46,0x30,0x10,0x0,
-+0x8,0x7c,0x49,0x4b,0x4a,0x7b,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x44,0x8,0x80,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x84,0xfc,0x84,
-+0x4,0xe,0xf0,0x10,0x14,0x1e,0x70,0x14,0x1f,0xf1,0x11,0x11,0x11,0x11,0xf,0x0,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0xfa,0xa,0xfe,0x0,
-+0x10,0x1f,0x20,0x7f,0xa5,0x28,0x3f,0x20,0x27,0x20,0x27,0x20,0x47,0x44,0x87,0x4,0x0,0xf0,0x44,0xfe,0x10,0x88,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xfc,0x8,0xf8,0x8,
-+0x8,0x8,0x49,0x2a,0x8,0xff,0x8,0x18,0x1d,0x2b,0x29,0x49,0x89,0x9,0x9,0x8,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x0,0x40,0x30,0x10,0x80,0x60,0x20,0xf,0x14,0x24,0xe4,0x24,0x24,0x24,0x27,0x24,0x80,0x80,0x84,0xfe,0x80,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x2,0x3,0x7e,0x3,0x7e,0x1,0x1,0xe,0x70,0x3f,0x24,0x24,0x24,0xff,0x0,0x40,0x20,0xf8,0x0,0xfc,0x20,0x40,0x82,0x62,0x1e,0xf8,0x48,0x48,0x48,0xfe,0x0,
-+0x10,0x10,0x14,0xfe,0x20,0x28,0x48,0x7e,0x8,0x8,0xe,0xf8,0x49,0x9,0xa,0x8,0x8,0x1c,0xe0,0x80,0x80,0x84,0xfe,0x90,0x90,0x90,0x90,0x90,0x10,0x10,0x10,0x10,
-+0x20,0x23,0x2a,0xff,0x42,0x52,0x93,0xfe,0x12,0x13,0x1e,0xf2,0x54,0x14,0x18,0x10,0x4,0xfe,0x4,0xfc,0x50,0x50,0xfc,0x50,0x54,0xfe,0xa4,0xa8,0x90,0x88,0xce,0x84,
-+0x1,0x21,0x3f,0x10,0x14,0xfe,0x20,0x48,0x7e,0x8,0xe,0xf8,0x49,0x9,0xa,0x8,0x0,0x8,0xf8,0x0,0x1c,0xe0,0x80,0x84,0xfe,0x90,0x90,0x90,0x10,0x10,0x10,0x10,
-+0x0,0x3f,0x20,0x3f,0x22,0x22,0x2f,0x22,0x22,0x3f,0x24,0x24,0x24,0x45,0x86,0x4,0x8,0xfc,0x8,0xf8,0x20,0x20,0xf8,0x20,0x24,0xfe,0x88,0x50,0x30,0xe,0x4,0x0,
-+0x8,0xff,0x8,0xfe,0x28,0x29,0x7e,0x54,0x54,0x54,0x6c,0x44,0x7c,0x45,0x7d,0x46,0x20,0xfe,0x20,0x90,0x90,0xfe,0x90,0xfc,0x90,0xfc,0x90,0xfe,0x0,0x54,0x52,0x2,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x30,0x38,0x57,0x50,0x10,0x10,0x10,0x11,0x16,0x10,0x80,0x90,0x88,0x80,0xf8,0x80,0x88,0xfc,0x80,0x48,0x50,0x20,0x60,0x92,0xa,0x6,
-+0x2,0x2,0x2,0x3,0x2,0x2,0x2,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x12,0x1f,0x10,0x13,0x10,0x7e,0x42,0x42,0x42,0x42,0x42,0x7e,0x41,0x2,0x40,0x50,0x48,0x48,0x7e,0xc0,0x40,0x40,0x48,0x28,0x30,0x20,0x50,0x92,0xa,0x6,
-+0x0,0x20,0x10,0x10,0xfe,0x0,0x44,0x44,0x25,0x25,0x29,0x9,0x1f,0xe1,0x41,0x1,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x41,0x37,0x11,0x81,0x61,0x21,0x9,0x11,0x2f,0xe4,0x25,0x26,0x24,0x27,0x20,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0xa0,0x18,0x8,0x0,0xfc,0x0,
-+0x10,0x10,0x23,0x22,0x44,0xf8,0x13,0x20,0x40,0xfc,0x40,0x1,0x1d,0xe2,0x44,0x0,0x40,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0xa8,0xbc,0xa0,0x20,0xa0,0x66,0x1c,0x0,
-+0x10,0x17,0x11,0x10,0xff,0x10,0x33,0x3a,0x57,0x52,0x93,0x10,0x1f,0x10,0x10,0x10,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40,
-+0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x1,0x0,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x4,0x7f,0x11,0xa,0xff,0x0,0x3f,0x20,0x3f,0x20,0x3f,0x4,0xff,0x4,0x4,0x4,0x4,0xc4,0x8,0x10,0xe0,0x84,0xc4,0x88,0x90,0xa2,0x82,0x4,0xe8,0x10,0x20,0xc0,
-+0x0,0x47,0x31,0x10,0x8f,0x60,0x23,0xa,0x13,0x22,0xe3,0x20,0x2f,0x20,0x20,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40,
-+0x9,0xfd,0x9,0x9,0x9,0x79,0x41,0x47,0x41,0x79,0x9,0x9,0x9,0x9,0x51,0x21,0x0,0x8,0x8,0x10,0x20,0x40,0x4,0xfe,0x40,0x40,0x20,0x20,0x10,0x4e,0x84,0x0,
-+0x11,0x9,0x7f,0x40,0x9f,0x10,0x1f,0x0,0x7f,0x1,0x3f,0x1,0xff,0x1,0x5,0x2,0x10,0x20,0xfe,0x2,0xf4,0x10,0xf0,0x38,0xc0,0x0,0xf8,0x0,0xfe,0x0,0x0,0x0,
-+0x40,0x2f,0x21,0x1,0x81,0x4f,0x48,0x8,0x18,0x2f,0xe1,0x21,0x21,0x21,0x2a,0x24,0x40,0x40,0x44,0x44,0x48,0x50,0x44,0xfe,0x50,0x50,0x50,0x48,0x48,0x44,0x62,0x40,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x31,0x39,0x54,0x50,0x90,0x10,0x10,0x10,0x11,0x16,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0xa0,0xa0,0x40,0x60,0x90,0xe,0x4,
-+0x0,0x0,0x0,0x0,0xff,0x0,0x8,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x18,0xe0,0x80,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80,0x60,0x1e,0x4,
-+0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x5c,0x10,0x10,0x10,0x10,0x80,0x84,0x84,0x88,0x90,0xa0,0x84,0xfe,0xa0,0xa0,0x90,0x90,0x88,0x8e,0xc4,0x80,
-+0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x54,0x10,0x28,0x44,0x80,0x80,0x84,0x84,0x88,0x90,0xa0,0x84,0xfe,0xa0,0xa0,0x90,0x90,0x88,0x8e,0xc4,0x80,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x51,0x91,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0xa0,0xa0,0x40,0x60,0x90,0xe,0x4,
-+0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x44,0x94,0x8,0x80,0x84,0x84,0x88,0x90,0xa0,0x84,0xfe,0xa0,0xa0,0x90,0x90,0x88,0x8e,0xc4,0x80,
-+0x0,0x1f,0x10,0x97,0x51,0x5f,0x10,0x17,0x34,0x57,0x94,0x17,0x20,0x2f,0x40,0x0,0x80,0xfe,0x40,0xfc,0x10,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x40,0xfe,0x40,0x40,
-+0x0,0x7b,0x49,0x50,0x57,0x60,0x53,0x4a,0x4b,0x4a,0x6b,0x50,0x4f,0x40,0x40,0x40,0x40,0xf8,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40,
-+0x10,0x13,0x10,0x10,0xfc,0x10,0x15,0x19,0x32,0xd5,0x11,0x11,0x11,0x11,0x51,0x21,0x4,0xfe,0x84,0x84,0x84,0x84,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0xb,0x7c,0x48,0x48,0x48,0x49,0x79,0x4a,0x4d,0x49,0x49,0x79,0x49,0x1,0x1,0x4,0xfe,0x84,0x84,0x84,0x84,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x10,0x1c,0x30,0xd0,0x10,0x10,0x11,0x12,0x54,0x20,0x80,0xa0,0x90,0x84,0x9e,0xe0,0x80,0x88,0x50,0x60,0x40,0xc0,0x20,0x12,0xa,0x6,
-+0x40,0x33,0x10,0x0,0x80,0x60,0x21,0x9,0x12,0x25,0xe1,0x21,0x21,0x21,0x21,0x21,0x4,0xfe,0x84,0x84,0x84,0x84,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x8,0x7e,0x8,0xa,0xff,0x8,0x28,0x2e,0x28,0x39,0x48,0x44,0x83,0x0,0x0,0x8,0x88,0x88,0x50,0x50,0x20,0x20,0x50,0x48,0x8c,0x4,0x0,0x6,0xfc,0x0,
-+0x0,0x7d,0x44,0x44,0x44,0x44,0x7d,0x44,0x44,0x44,0x44,0x7c,0x0,0x24,0x62,0x82,0x4,0xfe,0x44,0x44,0x84,0x94,0x8,0xfc,0x84,0x84,0x84,0xfc,0x0,0x88,0x46,0x42,
-+0x7f,0x44,0x7f,0x1,0x1,0x1,0x3f,0x20,0x3f,0x20,0x3f,0x1,0xff,0x1,0x1,0x1,0xfc,0x44,0xfc,0x0,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0,0x0,0x0,
-+0x4,0x4,0x4,0x24,0x14,0x14,0x4,0x4,0x1c,0x64,0x4,0x8,0x8,0x10,0x20,0x40,0x80,0x80,0x80,0x90,0xa0,0xc0,0x80,0xc0,0xb0,0x90,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x8,0x3e,0x22,0x3e,0x21,0x5f,0x81,0xff,0x1,0x1f,0x1,0x3f,0x1,0xff,0x1,0x1,0x44,0x7e,0xa8,0x10,0x6e,0xf0,0x14,0xfe,0x10,0xf0,0x0,0xf8,0x0,0xfe,0x0,0x0,
-+0x0,0x3f,0x4,0x4,0x4,0x8,0x8,0x10,0x3f,0x50,0x10,0x10,0x10,0x10,0x1f,0x10,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x24,0x24,0x24,0x25,0x29,0x32,0x50,0x88,0x7,0x40,0x20,0xfc,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0x54,0x52,0x52,0x0,0x6,0xfc,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x12,0x12,0x54,0x20,0x8,0x3c,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x8,0x8,0xfe,0x8,0xe,0x78,0x9,0x9,0x2a,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x10,0x10,0x10,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x8,0x8,0xff,0x8,0xe,0x78,0x8,0x29,0x11,0x1f,0x11,0x11,0x1f,0x1,0x7f,0x0,0x40,0x48,0xfc,0x48,0xc8,0x48,0x6a,0x8a,0x6,0xf0,0x10,0x10,0xf0,0x4,0xfc,0x4,
-+0x22,0x21,0x27,0xfa,0x24,0x57,0x50,0xff,0x14,0x17,0x1c,0xf7,0x54,0x14,0x14,0x15,0x20,0x20,0xe4,0x3e,0xc4,0xa4,0xa4,0xa4,0xa4,0xa8,0x90,0x90,0xa8,0xa8,0xc6,0x84,
-+0x2,0x2,0x3f,0x2,0x2,0xff,0x2,0x4,0xf,0x18,0x28,0x4f,0x88,0x8,0xf,0x8,0x0,0x10,0xe0,0x40,0x84,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x13,0x1c,0x20,0x23,0x7c,0x91,0x13,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0xff,0x9,0x0,0x3f,0x22,0x22,0x3f,0x22,0x22,0x23,0x40,0x49,0x89,0x10,0x20,0x24,0xfe,0x20,0x88,0xfc,0x20,0x28,0xfc,0x20,0x20,0xe0,0x0,0x24,0x22,0x2,
-+0x0,0x40,0x30,0x17,0x0,0x2,0xf1,0x10,0x10,0x10,0x10,0x11,0x12,0x28,0x47,0x0,0x80,0x40,0x48,0xfc,0x10,0x10,0x20,0xa0,0x40,0x40,0xa0,0x10,0x10,0x6,0xfc,0x0,
-+0x2,0x42,0x32,0x12,0x8f,0x62,0x22,0xa,0x13,0x2e,0xe2,0x22,0x22,0x22,0x2b,0x24,0x0,0xc,0x70,0x40,0xc0,0x44,0x7e,0xc8,0x48,0x48,0x48,0x48,0x48,0x88,0x8,0x8,
-+0x0,0x8,0xfc,0x10,0x11,0x12,0x14,0x7d,0x10,0x10,0x11,0x1c,0xf0,0x40,0x0,0x3,0x40,0x40,0xa0,0xa0,0x10,0x2e,0x44,0x80,0x10,0x60,0x84,0x8,0x10,0x20,0xc0,0x0,
-+0x22,0x22,0x7f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x40,0x54,0x62,0x40,0x7f,0x0,0x8,0x8,0x48,0x28,0x8,0x88,0x48,0x8,0x8,0x8e,0xf8,0x8,0x8,0x8,0x8,0x8,
-+0x1,0x1,0x7f,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xff,0x8,0x10,0x20,0x0,0x8,0xfc,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x20,0x18,0x8,
-+0x2,0xff,0x14,0x15,0x7f,0x55,0x55,0x7f,0x49,0x8,0x7f,0x8,0x8,0xf,0x78,0x20,0x4,0xfe,0x40,0x40,0xc8,0x7c,0x48,0x48,0x68,0x58,0x58,0x88,0x88,0xaa,0xca,0x6,
-+0x4,0xfe,0x10,0x10,0x20,0x24,0x7e,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x1,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xfc,0x23,0x20,0x4b,0xfc,0x27,0x21,0xfa,0x25,0x20,0x3b,0xe1,0x42,0x4,0x0,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0xe,0xf4,0x40,0xf8,0x50,0x4c,0x44,0x40,
-+0x1,0x1,0x1,0x1,0x1,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x2,0x4,0x18,0x60,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x30,0x8,0x4,
-+0x10,0x10,0x10,0x1e,0x20,0x20,0x7d,0x90,0x10,0xfe,0x10,0x12,0x14,0x18,0x10,0x0,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x8,0x8,0x8,0x10,0x10,0x37,0x54,0x94,0x14,0x14,0x14,0x14,0x10,0x11,0x16,0x18,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x44,0x44,0x44,0x44,0x44,0x90,0xc,0x6,0x2,
-+0x10,0x10,0x10,0x13,0xfe,0x14,0x30,0x38,0x54,0x50,0x90,0x10,0x11,0x11,0x12,0x14,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0x60,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x1,0x0,0x1f,0x10,0x90,0x51,0x52,0x14,0x39,0x52,0xd4,0x11,0x22,0x20,0x43,0xc,0x0,0x88,0xfc,0x80,0x80,0x40,0x30,0x8e,0x24,0x40,0x80,0x10,0x20,0xc0,0x0,0x0,
-+0x0,0x40,0x20,0x21,0x2,0x4,0xe8,0x20,0x23,0x20,0x20,0x23,0x28,0x30,0x23,0xc,0x40,0x40,0xa0,0x20,0x10,0x2e,0x44,0x90,0x20,0x40,0x88,0x10,0x20,0xc0,0x0,0x0,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3f,0x20,0x2f,0x20,0x3f,0x2a,0x29,0x48,0x8c,0x8,0xf0,0x0,0xfe,0x12,0x64,0x10,0xf8,0x0,0xf0,0x0,0xf8,0x10,0x20,0xc0,0x30,0xc,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x14,0x14,0x58,0x20,0x4,0xfe,0x0,0x8,0xfc,0x0,0x4,0xfe,0xa0,0xa2,0xa4,0x98,0x90,0x8e,0xc4,0x80,
-+0x10,0x10,0x13,0x1c,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x17,0x18,0x11,0x2,0x20,0x24,0xfe,0x20,0xfc,0x4,0xfc,0x4,0xfc,0x4,0xfc,0x4,0xfe,0x88,0x6,0x2,
-+0x0,0x78,0x4f,0x50,0x50,0x61,0x51,0x4b,0x48,0x48,0x68,0x57,0x40,0x40,0x40,0x40,0x80,0x84,0xfe,0x80,0xa0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x8,0x8,0xff,0x8,0x1f,0x0,0x3d,0x5,0x5,0x9,0x35,0xc2,0xf,0x20,0x24,0x42,0x20,0x24,0xfe,0x20,0xe0,0x48,0x98,0x20,0x40,0x30,0xe,0x4,0xe0,0x10,0x8c,0x44,
-+0x10,0x10,0x11,0x12,0xfc,0x13,0x14,0x18,0x37,0xd0,0x10,0x13,0x10,0x10,0x51,0x20,0x80,0x80,0xf8,0x10,0x20,0xf8,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80,
-+0x8,0x7c,0x49,0x4a,0x48,0x7b,0x48,0x48,0x4f,0x78,0x48,0x4b,0x48,0x78,0x49,0x0,0x80,0x80,0xf8,0x10,0x20,0xf8,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80,
-+0x8,0xb,0x10,0x10,0x20,0x48,0x88,0x12,0x32,0x52,0x92,0x12,0x12,0x12,0x1f,0x10,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x2,0x44,0x29,0x12,0x28,0x4b,0x88,0x8,0x1f,0x28,0x48,0x8b,0x8,0x8,0x29,0x10,0x80,0x80,0xf8,0x10,0x20,0xf8,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80,
-+0x8,0xf,0x8,0x10,0x3f,0x41,0x1,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0x5,0x2,0x0,0xe0,0x40,0x90,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0,
-+0x10,0x17,0x10,0x10,0x58,0x54,0x50,0x92,0x12,0x12,0x12,0x12,0x12,0x12,0x1f,0x10,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0x7f,0x8,0x7f,0x49,0x7f,0x1c,0x2a,0xc8,0x3f,0x1,0x9,0x9,0x9,0xff,0x0,0x40,0x44,0x7e,0x88,0x48,0x50,0x20,0x50,0x8e,0xf8,0x0,0xf0,0x0,0x4,0xfe,0x0,
-+0x10,0x13,0x10,0x10,0xfc,0x13,0x15,0x19,0x31,0xd2,0x14,0x10,0x11,0x10,0x5f,0x20,0x0,0xf8,0x10,0x20,0x44,0x48,0x70,0x50,0x50,0x4e,0x44,0x40,0x40,0x84,0xfe,0x0,
-+0x0,0x7f,0x1,0x1,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x4,0xfe,0x10,0x10,0x11,0x5e,0x50,0x50,0x50,0x50,0x5e,0xf0,0x40,0x1,0x2,0x40,0x40,0x44,0xfe,0x88,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x10,0x7c,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x10,0x10,0x13,0x20,0x24,0x3e,0x20,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x84,0x2,
-+0x0,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x32,0x52,0xd2,0x12,0x22,0x22,0x5f,0x0,0x80,0x48,0xfc,0x0,0x8,0xfc,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x41,0x22,0x14,0x7f,0x8,0x8,0x9,0xff,0x8,0x8,0x8,0x14,0x12,0x22,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x17,0x10,0x0,0x0,0xf0,0x11,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x17,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x8,0x8,0xff,0x8,0x2,0x1,0x3f,0x0,0x0,0x3,0xc,0x10,0x60,0x90,0xf,0x0,0x20,0x24,0xfe,0x20,0x0,0x0,0xf0,0x20,0xc0,0x0,0x0,0x0,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x39,0x54,0x50,0x90,0x10,0x10,0x10,0x11,0x16,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x1,0x1,0x1,0xff,0x1,0x1,0x3f,0x8,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0xc0,0x0,0x0,0x4,0xfe,0x0,0x0,0xf0,0x20,0x20,0x40,0x80,0x0,0x80,0x60,0x1e,0x4,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x49,0x49,0x48,0x48,0x48,0x78,0x48,0x0,0x1,0x6,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x22,0x22,0x22,0xfb,0xad,0xa9,0xa9,0xaf,0xf9,0xa1,0x29,0x39,0xea,0x42,0x4,0x8,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0x24,0xbc,0x64,0x40,0x0,
-+0x20,0x20,0x22,0x3f,0x28,0x48,0x88,0x9,0xff,0x8,0x8,0x14,0x12,0x22,0x40,0x80,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0xc4,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x25,0x24,0x3c,0x24,0x24,0x24,0x44,0x95,0xa,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x5,0x3f,0x25,0x25,0x25,0x3d,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x45,0x95,0x9,0x0,0x8,0x1c,0xe0,0x2,0x2,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x0,0x40,0x30,0x10,0x80,0x60,0x27,0x8,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x1,0x1,0x0,0x7f,0x0,0x0,0x0,0x0,0x1,0x2,0xc,0x30,0x48,0x7,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x40,0x0,0x1c,0xe0,0x41,0x2,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x50,0x48,0x84,0x2,0x2,
-+0x4,0xfe,0x24,0x24,0x3c,0x24,0x24,0x3c,0x24,0x24,0x27,0xfc,0x44,0x4,0x5,0x4,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x48,0x48,0x84,0x86,0x2,0x0,
-+0x1,0x1,0x7f,0x1,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0xff,0x0,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xfc,0x13,0x32,0x3b,0x56,0x53,0x92,0x13,0x12,0x12,0x1f,0x10,0x40,0x48,0xfc,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,
-+0x4,0xfe,0x13,0x10,0x10,0x3d,0x25,0x45,0xa5,0x19,0x9,0x11,0x21,0x41,0x87,0x0,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x14,0x18,0x31,0xd0,0x11,0x11,0x11,0x12,0x54,0x28,0x80,0x80,0x80,0x90,0xf8,0x90,0x90,0x90,0x90,0x90,0x50,0x52,0x12,0x12,0xe,0x0,
-+0x8,0x8,0xf,0x10,0x10,0x33,0x52,0x93,0x12,0x13,0x12,0x13,0x12,0x12,0x1f,0x10,0x40,0x48,0xfc,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,
-+0x8,0x8,0xf,0x10,0x11,0x32,0x57,0x90,0x10,0x10,0x17,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x80,0x0,0x8,0xfc,0x44,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x15,0xff,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x1d,0xf1,0x47,0x0,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x11,0x11,0x11,0x11,0xfd,0x11,0x14,0x18,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x0,0x8,0x1c,0xe0,0x2,0x2,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x1,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0x7e,0x44,0x44,0x45,0x7d,0x11,0x51,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x47,0x0,0x20,0x20,0x20,0x20,0x28,0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x4,0xc,0x10,0x20,0x40,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x40,0x20,0x18,0xc,0x4,
-+0x20,0x20,0x21,0x3e,0x20,0x20,0x1f,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x18,0xe0,0x0,0x4,0x4,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x23,0x22,0x46,0xfa,0x12,0x23,0x42,0xfe,0x2,0x2,0x1e,0xe2,0x43,0x2,0x0,0x3c,0xe0,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x10,0x92,0xa,0x6,
-+0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x3f,0x0,0x2,0x11,0x50,0x50,0x90,0xf,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x0,0x80,0x84,0x12,0x12,0xf0,0x0,
-+0x8,0x8,0x7e,0x8,0xe,0xf8,0x48,0x19,0x3f,0x1,0x1f,0x1,0xff,0x1,0x1,0x3,0x40,0x48,0xfc,0x48,0xc8,0x68,0x8a,0x36,0xc0,0x0,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x28,0x25,0x20,0x2f,0xf2,0x22,0x22,0x2a,0x3f,0xe2,0x22,0x25,0x24,0x28,0xb0,0x40,0x80,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0xd4,0x48,0x40,0x40,
-+0x0,0x7f,0x2,0x4,0x8,0x10,0x3f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x0,0x0,0x20,0x10,0xf8,0x8,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0xfe,0x10,0x10,0x20,0x45,0xfe,0x10,0x10,0x7c,0x10,0x10,0x1e,0xf0,0x41,0x6,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x3f,0x24,0x3f,0x1,0x7f,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xff,0x0,0xf8,0x48,0xf8,0x0,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x0,
-+0x10,0x10,0x15,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x5c,0x10,0x10,0x11,0x12,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x50,0x48,0x84,0x6,0x2,
-+0x10,0x10,0x11,0x54,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x54,0x7c,0x44,0x0,0x0,0x20,0x28,0xfc,0x20,0x24,0xfe,0x8,0x8,0xfe,0x8,0x88,0x48,0x48,0x8,0x28,0x10,
-+0x4,0x24,0x25,0x3f,0x24,0x44,0xff,0x4,0x3f,0x24,0x24,0x24,0x26,0x25,0x4,0x4,0x4,0x4,0x4,0xa4,0x24,0xa4,0xe4,0x24,0xa4,0xa4,0xa4,0x84,0x84,0x4,0x14,0x8,
-+0x20,0x22,0x3f,0x48,0x8,0xff,0x10,0x14,0x22,0x42,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x4,0x7e,0x44,0x44,0xc4,0x44,0x7c,0x44,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x8,0x1c,0xf2,0x12,0x13,0xfe,0x14,0x30,0x3b,0x54,0x50,0x90,0x11,0x11,0x12,0x1c,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x8,0x1c,0xf0,0x11,0x13,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0xa0,0x90,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x28,0x28,0x28,0x28,0x49,0x42,0x8c,0x30,0x78,0x80,0x80,0x84,0xfe,0x80,0x88,0xfc,0x8,0x88,0x88,0x88,0x8,0x70,0xc,0x4,
-+0x4,0x4,0xf,0x11,0x28,0x44,0x3,0xc,0x71,0x9,0x9,0x12,0x4,0x8,0x30,0xc0,0x0,0x0,0xf8,0x10,0xa0,0xc0,0x0,0x0,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4,
-+0x1,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x3f,0x50,0xd7,0x12,0x21,0x21,0x40,0x0,0x0,0x88,0xfc,0x80,0x90,0xf8,0x80,0x84,0xfe,0x10,0xfc,0x10,0x10,0x10,0x50,0x20,
-+0x2,0x42,0x2f,0x22,0x80,0x67,0x24,0x8,0x13,0x22,0xe2,0x22,0x22,0x22,0x20,0x20,0x48,0x48,0xfe,0x48,0x0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x48,0x58,0x40,0x40,
-+0x0,0x40,0x31,0x11,0x82,0x67,0x20,0x8,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x80,0x0,0x10,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x1,0x7f,0x44,0x88,0x3f,0x2,0x4,0x1f,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x0,0x0,0xfe,0x42,0x24,0xf8,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,
-+0x1,0x1,0x1,0x7f,0x41,0x41,0x41,0x41,0x7f,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0,
-+0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x12,0x51,0x51,0x90,0xf,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x4,0x12,0x12,0xf0,0x0,
-+0x10,0x10,0x10,0x1c,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x10,0x14,0x18,0x10,0x0,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x2,0x1,0xff,0x1,0x1f,0x11,0x11,0x1f,0x11,0x5,0x8,0x18,0x28,0xca,0xc,0x8,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x8,0x18,0xa0,0x40,0x30,0xe,0x4,0x0,
-+0x10,0x10,0x20,0x21,0x45,0xfa,0x10,0x20,0x40,0xfd,0x2,0x0,0x1c,0xe0,0x40,0x0,0x80,0x80,0xfc,0x8,0x90,0x50,0x20,0x50,0x88,0xe,0x64,0x10,0x8,0xc0,0x30,0x8,
-+0x8,0x1c,0xf0,0x10,0x11,0xff,0x11,0x39,0x35,0x55,0x51,0x90,0x10,0x10,0x10,0x10,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x3e,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x24,0x24,0x44,0x94,0x8,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x3f,0x1,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x1,0x1,0xff,0x0,0x38,0xc0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0,
-+0x8,0x8,0x8,0x10,0x17,0x34,0x54,0x94,0x14,0x17,0x14,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x1,0x1,0x2,0x4,0x8,0x30,0x0,0x8,0x8,0x14,0x12,0x22,0x41,0x82,0x0,0x0,0x0,0x0,0x80,0x40,0x38,0x10,0x0,0x20,0x20,0x50,0x50,0x88,0xe,0x4,0x0,
-+0x2,0x4,0x1f,0x10,0x12,0x11,0x11,0xff,0x10,0x12,0x11,0x11,0x10,0x20,0x40,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x3f,0x21,0x21,0x2f,0x21,0x21,0x3f,0x20,0x27,0x24,0x24,0x24,0x47,0x84,0x0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x28,0xf8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x28,0x10,
-+0x10,0x10,0x10,0x10,0x54,0x52,0x52,0x90,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x0,0x4,0x84,0x84,0x84,0xa4,0x94,0x94,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x4,0x4,
-+0x1,0x41,0x31,0x11,0x81,0x65,0x23,0xb,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x20,0x4,0x4,0x24,0x24,0x24,0xb4,0x6c,0x6c,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,
-+0x1,0x41,0x21,0x22,0x4,0x8,0xe7,0x20,0x20,0x20,0x23,0x20,0x28,0x30,0x27,0x0,0x0,0x0,0xf8,0x10,0x20,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x9,0xfd,0x9,0x9,0xd,0x7b,0x41,0x47,0x41,0x79,0xb,0xd,0x9,0x89,0x51,0x21,0x4,0x3e,0x4,0x4,0x44,0xbc,0x20,0xe0,0x24,0x3e,0x84,0x44,0x4,0x4,0x28,0x10,
-+0x10,0x10,0x14,0xfe,0x21,0x21,0x49,0x7f,0x9,0x9,0xf,0xf9,0x49,0x9,0x9,0x8,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x44,0x94,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x28,0x10,
-+0x0,0x3f,0x0,0x1f,0x0,0x3f,0x1,0x7f,0x41,0x9f,0x11,0x11,0x11,0x11,0x1,0x1,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x10,0x10,0x50,0x20,0x0,0x0,
-+0x4,0x7e,0x44,0x44,0x44,0x7c,0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0x40,0x8,0xfc,0x88,0x88,0x88,0xf8,0x40,0xe0,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x1e,0x22,0xc4,0x8,0x7e,0x2,0x2,0x7e,0x2,0x2,0x7f,0x1,0x2,0x0,0x10,0x10,0x10,0xfe,0x92,0x94,0x90,0xfc,0x84,0xc4,0xa8,0xa8,0x10,0x28,0x4e,0x84,
-+0x2,0x1,0x7f,0x40,0x81,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0xfe,0x2,0x4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x20,0x3f,0x50,0x9f,0x10,0x1f,0x0,0x7f,0x0,0x10,0xf8,0x10,0x10,0xf0,0x90,0x40,0x20,0xfe,0x14,0xf0,0x10,0xf0,0x0,0xfc,0x0,
-+0x10,0xff,0x12,0x53,0x52,0x53,0x52,0x57,0x78,0xb,0x8,0x3b,0xc8,0x9,0x2e,0x10,0x0,0xfc,0x44,0xd4,0x48,0xd4,0x62,0xd8,0x60,0xa4,0x68,0xb0,0x68,0xa6,0x20,0x20,
-+0x0,0x9,0xfd,0x11,0x11,0x12,0x7c,0x13,0x10,0x10,0x1c,0xf0,0x41,0x2,0x4,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x2e,0x24,0x20,0x20,
-+0x10,0x11,0x11,0x11,0xfd,0x12,0x30,0x3b,0x54,0x50,0x90,0x10,0x11,0x12,0x14,0x10,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x2e,0x24,0x20,0x20,
-+0x10,0x11,0x11,0x11,0x7d,0x56,0x54,0x57,0x54,0x7c,0x10,0x14,0x1d,0xf6,0x44,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x2e,0x24,0x20,0x20,
-+0x1,0x11,0x11,0x1f,0x11,0x21,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,0x0,0x0,
-+0x2,0x44,0x2b,0x10,0x28,0x4b,0x88,0x9,0x1b,0x2d,0x49,0x89,0x9,0x9,0x29,0x11,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x20,0x1b,0x8,0x0,0x7,0xf0,0x11,0x13,0x15,0x19,0x11,0x15,0x19,0x11,0x1,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x42,0x22,0x23,0x2,0x4,0xe0,0x2f,0x20,0x20,0x21,0x29,0x32,0x24,0x8,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xc0,0xe0,0x60,0x50,0x4e,0x44,0x40,0x40,
-+0x0,0x4f,0x20,0x21,0x3,0xc,0xe1,0x22,0x2c,0x21,0x22,0x2c,0x21,0x50,0x8f,0x0,0x8,0xfc,0x80,0x0,0x88,0xd8,0x60,0x40,0xe0,0x50,0x48,0x48,0x40,0x86,0xfc,0x0,
-+0x10,0x10,0x10,0x12,0x1f,0x28,0x49,0x8a,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x44,0x7e,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x10,0x12,0x55,0x59,0x51,0x91,0x11,0x11,0x11,0x28,0x24,0x44,0x83,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x24,0x3c,0xe2,0x2,
-+0x2,0x2,0x3f,0x2,0xff,0x2,0xf,0x38,0xc8,0xf,0x8,0x8,0xf,0x20,0x24,0x42,0x0,0x20,0xf0,0x84,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x8,0x84,0x44,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x14,0x18,0x31,0xd0,0x10,0x10,0x10,0x10,0x57,0x20,0x40,0x20,0x4,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x7,0x74,0x57,0x54,0x75,0x54,0x55,0x75,0x55,0x54,0x77,0x4a,0x12,0x22,0x2,0x4,0xfe,0x4,0xfc,0x0,0xfc,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0x6,
-+0x0,0x7,0x74,0x57,0x54,0x55,0x54,0x55,0x55,0x55,0x54,0x77,0x4a,0x12,0x22,0x2,0x4,0xfe,0x4,0xfc,0x0,0xfc,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0x6,
-+0x2,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x8,0x8,0xff,0x9,0x1,0x1f,0x1,0xff,0x1,0x2,0xf,0x18,0x2f,0xc8,0xf,0x8,0x20,0x24,0xfe,0x20,0x10,0xe0,0x44,0xfe,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x30,0x38,0x55,0x50,0x90,0x10,0x10,0x10,0x17,0x10,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x2,0x3f,0x22,0x22,0x23,0x3e,0x22,0x22,0x3e,0x22,0x22,0x22,0x2f,0xf0,0x41,0x2,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0x28,0x10,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x55,0x7c,0x54,0x10,0x14,0xfc,0x47,0x0,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x7e,0x44,0x54,0x55,0x55,0x56,0x54,0x54,0x54,0x54,0x54,0x10,0x2b,0x44,0x84,0x40,0x20,0x20,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x10,0x10,0x13,0x1c,0x20,0x23,0x7c,0x90,0x13,0xfd,0x12,0x15,0x10,0x14,0x18,0x0,0x40,0x48,0xfc,0x40,0x48,0xfc,0x80,0x84,0xfe,0x8,0x8,0xfe,0x8,0x88,0x48,0x18,
-+0x10,0x12,0x1f,0x28,0x45,0x80,0x8,0x7d,0x11,0x11,0x11,0x11,0x1d,0xf2,0x44,0x8,0x40,0x44,0x7e,0xa0,0x10,0x0,0x10,0xf8,0x10,0x10,0x90,0x50,0x52,0x12,0xe,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x90,0x17,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x80,0x40,0x44,0xfe,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x40,0x30,0x17,0x80,0x60,0x20,0x8,0x17,0x20,0xe0,0x20,0x20,0x20,0x2f,0x20,0x80,0x40,0x44,0xfe,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x13,0x12,0x2,0xfe,0xa,0x12,0x3b,0x56,0x90,0x10,0x11,0x11,0x12,0x14,0x18,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0xa8,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x8,0xfc,0x8,0x4b,0x48,0x48,0x48,0x48,0x7d,0x4,0x4,0x1c,0xe4,0x44,0x17,0x8,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x14,0x14,0x58,0x20,0x8,0x1c,0xe0,0x50,0x50,0x50,0x50,0x50,0x50,0x48,0x48,0x48,0x44,0x44,0x42,0x40,
-+0x0,0x0,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x21,0x21,0x41,0x81,0x1,0x10,0x78,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x8,0xe,0x4,0x0,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x17,0x1a,0x32,0xd3,0x12,0x10,0x10,0x10,0x57,0x20,0x40,0x40,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xfc,0x48,0x50,0x20,0xd2,0xa,0x6,
-+0x1,0x1,0x1,0x3f,0x2,0x2,0xff,0x4,0x4,0xf,0x0,0x0,0x0,0x6,0x1,0x0,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x80,0x40,
-+0x0,0x4,0xfe,0x11,0x10,0x20,0x23,0x7c,0xa4,0x25,0x24,0x24,0x24,0x3c,0x24,0x0,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x80,0xfc,0x8,0x10,0x90,0x60,0x20,0x10,
-+0x10,0x10,0x10,0xfd,0x20,0x28,0x4b,0x7c,0x8,0x9,0x1c,0xe8,0x48,0x8,0x8,0x8,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x80,0xfc,0x8,0x10,0x90,0x60,0x20,0x10,
-+0x10,0x17,0x14,0x14,0xff,0x14,0x13,0x19,0x31,0xd7,0x11,0x11,0x1f,0x11,0x52,0x24,0x4,0xbe,0xa4,0xa4,0xbc,0x62,0xde,0x10,0x10,0xfc,0x10,0x14,0xfe,0x10,0xc,0x4,
-+0x0,0x7c,0x47,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x55,0x54,0x10,0x29,0x46,0x80,0x88,0x50,0xfe,0x50,0xfc,0x54,0x54,0xfe,0x54,0x54,0xfc,0x50,0xd8,0x56,0x54,0x50,
-+0x10,0x1e,0x28,0x4f,0x8,0x1f,0x0,0xff,0x2,0xd,0x71,0x6,0x39,0x6,0x78,0x3,0x40,0x7c,0xa0,0xc0,0x40,0x80,0x84,0xfe,0x10,0x20,0xc0,0xa0,0x90,0x8e,0x84,0x0,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x14,0x14,0x1b,0x10,0x40,0x20,0x24,0xfe,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x1,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x2f,0x20,0x20,0x20,0x40,0x40,0xbf,0x0,0x0,0x80,0x88,0xfc,0x0,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x84,0xfe,0x0,
-+0x8,0x48,0x2b,0x8,0x18,0x29,0x4a,0x9,0xff,0x2,0x4,0xc,0x14,0x65,0x6,0x4,0x40,0x48,0xfc,0x40,0x50,0xf8,0x0,0x4,0xfe,0x8,0x90,0xa0,0x40,0x30,0xe,0x4,
-+0x8,0x8,0x8,0x48,0x28,0x2f,0x9,0x9,0x19,0x2a,0x49,0xc8,0x8,0x8,0x9,0xa,0x40,0x40,0x40,0x80,0x84,0xfe,0x8,0x8,0x8,0x8,0x10,0xa0,0x40,0xb0,0xc,0x4,
-+0x10,0x17,0x11,0x10,0xff,0x10,0x17,0x1a,0x33,0xd2,0x13,0x10,0x17,0x10,0x5f,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x48,0xf8,0x48,0xf8,0x40,0xfc,0x40,0xfe,0x0,
-+0x10,0x10,0x10,0x90,0x50,0x50,0x1f,0x10,0x30,0x50,0xd0,0x10,0x10,0x17,0x10,0x10,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0,
-+0x8,0x8,0x8,0x48,0x28,0x2f,0x8,0x8,0x18,0x28,0x49,0xc9,0x9,0xa,0xc,0x8,0x40,0x50,0x48,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,0x0,
-+0x10,0x10,0x10,0x11,0xfd,0x13,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0xa0,0xa0,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x10,0x10,0x10,0x1d,0x21,0x23,0x7d,0x91,0x11,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0xa0,0xa0,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x0,0x40,0x33,0x12,0x2,0x3,0xf2,0x12,0x13,0x12,0x12,0x12,0x13,0x2a,0x47,0x0,0x40,0x90,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x6,0xfc,0x0,
-+0x8,0x7f,0x8,0x3e,0x8,0xff,0x10,0x1e,0x22,0xcc,0x1f,0x10,0x11,0x11,0x6,0x38,0x40,0x44,0x7e,0x84,0xc4,0x28,0x10,0x28,0x46,0x90,0xf8,0x10,0x10,0x10,0xc0,0x38,
-+0x0,0x7c,0x44,0x48,0x50,0x48,0x45,0x65,0x5a,0x44,0x41,0x5f,0x1,0x1,0xff,0x0,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0x8,0xe,0x4,0x0,0xf0,0x0,0x0,0xfe,0x0,
-+0x10,0x17,0x24,0x22,0x41,0xfa,0x12,0x24,0x47,0xfc,0x4,0x2,0x19,0xe2,0x44,0x8,0x0,0xbc,0xa4,0xa8,0x10,0xa8,0xa6,0x40,0xbc,0xa4,0xa4,0xa8,0x10,0xa8,0x46,0x4,
-+0x0,0x4f,0x30,0x13,0x2,0x2,0xf3,0x10,0x13,0x10,0x10,0x17,0x14,0x18,0x11,0x0,0x44,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x0,0xf8,0x20,0x44,0xfe,0x40,0x40,0x40,0x80,
-+0x1,0x41,0x31,0x13,0x2,0x16,0x1b,0x12,0x22,0xe3,0x22,0x22,0x22,0x23,0x22,0x2,0x40,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x17,0x1a,0x30,0xd2,0x12,0x12,0x13,0x14,0x58,0x20,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x48,0x40,0x48,0x7c,0x40,0x40,0xc6,0x7c,0x0,
-+0x10,0x10,0x12,0x12,0xfe,0x12,0x17,0x18,0x30,0xd4,0x14,0x14,0x14,0x14,0x57,0x20,0x40,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x1,0x1,0x1,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x11,0x1,0xff,0x1,0x1,0x1,0x1,0x8,0xfc,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x3,0x5,0x9,0x31,0x1,0x8,0xfc,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x0,0x17,0xf8,0x20,0x21,0x22,0x26,0xf9,0x22,0x24,0x20,0x21,0x3a,0xe4,0x41,0x0,0x4,0xfe,0x40,0x80,0x84,0x4c,0xb0,0x20,0xb0,0x68,0xa8,0x24,0x22,0x20,0x40,0x80,
-+0x8,0x8,0xff,0x8,0x1,0x21,0x21,0x21,0x3f,0x1,0x41,0x41,0x41,0x41,0x7f,0x40,0x20,0x24,0xfe,0x20,0x0,0x8,0x8,0x8,0xf8,0x0,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0xa0,0x20,0x24,0x7e,0x84,0x4,0x44,0x24,0x24,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x0,0xb,0x7c,0x48,0x49,0x4a,0x4e,0x49,0x4a,0x4c,0x48,0x79,0x4a,0x4,0x1,0x0,0x4,0xfe,0x40,0x80,0x84,0x4c,0xb0,0x20,0xb0,0x68,0xa8,0x24,0x22,0x20,0x40,0x80,
-+0x8,0x4,0x7f,0x1,0x3f,0x2,0xff,0x4,0xf,0x18,0x2f,0xc8,0xf,0x8,0xf,0x8,0x20,0x48,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x12,0x54,0x59,0x52,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x40,0x30,0x10,0x87,0x64,0x24,0xc,0x14,0x27,0xe4,0x20,0x20,0x20,0x2f,0x24,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x50,0x48,0x7c,0xc4,0x4,
-+0x10,0xc,0x4,0x0,0xff,0x10,0x10,0x22,0x24,0x78,0x8,0x10,0x14,0x22,0x7e,0x2,0x10,0x30,0x40,0x4,0xfe,0x20,0x20,0x44,0x48,0xf0,0x10,0x20,0x28,0x44,0xfc,0x4,
-+0x41,0x31,0x11,0x2,0xa,0xf4,0x20,0x20,0x21,0x26,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0xfc,0x4,0x48,0x40,0xa0,0x90,0xe,0x4,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x41,0x21,0x21,0xa,0x34,0xe0,0x21,0x26,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x0,0x0,0xfc,0x44,0x48,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x20,0x10,0x10,0x5,0xa,0x70,0x10,0x13,0x12,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x80,0xfc,0x84,0x28,0x20,0x50,0x8e,0x4,0x0,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x44,0x22,0x21,0xf,0x82,0x42,0x44,0x14,0x1f,0x21,0xe2,0x24,0x29,0x2f,0x21,0x20,0x8,0x10,0x24,0xfe,0x10,0x10,0x20,0xa4,0x78,0x8,0x10,0x20,0x44,0x7c,0x4,0x0,
-+0x2,0x42,0x24,0x29,0x84,0x62,0x22,0x8,0x17,0x24,0xe4,0x27,0x24,0x24,0x27,0x24,0x48,0x48,0x90,0x20,0x90,0x48,0x48,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x0,0x0,0xfe,0x4,0x8,0x11,0x15,0x1a,0xf0,0x50,0x10,0x10,0x10,0x10,0x51,0x26,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x28,0x2e,0x28,0x2e,0xf8,0x42,0x4,0x3f,0x1,0x2,0x3f,0x1,0x9,0x11,0x23,0x80,0x80,0x98,0xe2,0x82,0x7e,0x0,0x10,0xe0,0x0,0x10,0xf8,0x8,0x20,0x18,0x8,
-+0x8,0xb,0x8,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x0,0xf8,0x8,0x10,0x20,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x11,0x52,0x34,0x18,0xfe,0x10,0x33,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x10,0x0,0xfc,0x4,0x8,0x10,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x40,0x37,0x14,0x88,0x67,0x20,0x9,0x10,0x2f,0xe0,0x20,0x27,0x20,0x20,0x20,0x80,0x40,0xfe,0x2,0x44,0xfc,0x0,0x10,0xa4,0xfe,0x40,0x48,0xfc,0x40,0x40,0x40,
-+0x0,0x3f,0x0,0x0,0x0,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x10,0x20,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x2,0x4,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x47,0x30,0x13,0x80,0x6f,0x20,0xb,0x12,0x22,0xe2,0x22,0x22,0x20,0x23,0x2c,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x2,0x1,0x3f,0x20,0x40,0x1f,0x0,0x0,0x1,0xff,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x0,0xfc,0x4,0x8,0xe0,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x13,0x1c,0x10,0x7f,0x14,0x3e,0x1,0x7f,0x40,0x9f,0x0,0x7f,0x9,0x11,0x23,0x4,0x18,0x64,0x18,0x64,0x18,0x60,0x0,0xfe,0x2,0xf4,0x0,0xfc,0x20,0x18,0x8,
-+0x10,0x10,0x13,0x12,0xfc,0x11,0x30,0x38,0x57,0x50,0x90,0x11,0x11,0x12,0x10,0x10,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x0,0x78,0x4b,0x4a,0x4c,0x79,0x50,0x10,0x13,0x5c,0x50,0x51,0x5d,0xf2,0x40,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x2,0x1,0x7f,0x40,0x80,0x1f,0x0,0x0,0xff,0x1,0x9,0x9,0x11,0x21,0x5,0x2,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x4,0xfe,0x0,0x20,0x10,0x8,0x8,0x0,0x0,
-+0x10,0x10,0x23,0x22,0x44,0xf9,0x10,0x20,0x43,0xf8,0x0,0x1,0x19,0xe2,0x40,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x10,0x8,0x4,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x2,0x51,0x50,0x90,0xf,0x0,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x84,0x92,0x12,0xf0,0x0,
-+0x11,0x11,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x42,0x2,0x1c,0xe4,0x48,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xa8,0xa8,0x48,0x44,0x82,0x0,
-+0x10,0x10,0x10,0x3f,0x42,0x84,0x7f,0x1,0x1,0x3f,0x1,0x1,0x7f,0x1,0x0,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x1,0x1,0x1,0x3f,0x1,0x1,0xff,0x1,0x9,0x9,0x9,0x9,0x9,0x15,0x23,0x40,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x0,0x6,0xfc,0x0,
-+0x1,0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x37,0xc1,0x1f,0x1,0x2,0x4,0x38,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x30,0xce,0x4,0xf0,0x0,0xc0,0x30,0x8,
-+0x10,0x10,0x17,0x10,0xfb,0x10,0x17,0x19,0x32,0xdd,0x10,0x17,0x10,0x10,0x51,0x26,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0xe,0xf4,0x40,0xfc,0x40,0xb0,0xc,0x4,
-+0x8,0x1c,0xf1,0x11,0x15,0xff,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x1f,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x11,0x1,0x11,0x11,0x11,0x11,0x29,0x47,0x80,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x10,0xf8,0x0,0x0,0x6,0xfc,0x0,
-+0x2,0x1,0x7f,0x8,0x8,0x8,0x14,0x22,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x20,0x20,0x20,0x50,0x88,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x18,0x8,0x0,0xfe,0x21,0x20,0x3c,0x24,0x25,0x27,0x24,0x44,0x44,0x94,0x9,0x40,0x40,0x48,0x7c,0x80,0x48,0x7c,0xa0,0xa0,0x24,0xfe,0x20,0x50,0x50,0x8e,0x4,
-+0x20,0x10,0x11,0x1,0xfd,0x9,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x11,0x17,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x40,0x30,0x11,0x1,0x1,0xf1,0x11,0x11,0x11,0x11,0x11,0x13,0x15,0x19,0x17,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x0,0x7c,0x45,0x49,0x49,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x47,0x40,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x10,0x10,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x41,0x1,0x1d,0xe1,0x47,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x10,0x10,0x10,0x1e,0x20,0x20,0x7c,0x91,0x11,0xff,0x11,0x13,0x15,0x19,0x11,0x1,0x20,0x20,0x24,0x3e,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x3e,0x48,0x9f,0x12,0x10,0x1f,0x8,0xff,0x14,0x2f,0x41,0x9f,0x5,0x9,0x13,0x40,0x7e,0x90,0xf0,0x10,0x90,0xf0,0x4,0xfe,0x50,0x88,0x2e,0xe4,0x40,0x30,0x10,
-+0x1,0x5,0x75,0x55,0x55,0x5f,0x51,0x52,0x57,0x5a,0x53,0x72,0x43,0x2,0x4,0x8,0x20,0x20,0xe6,0x38,0xe2,0x1e,0xf0,0x28,0xfc,0x48,0xf8,0x48,0xf8,0x48,0x48,0x58,
-+0x4,0xfe,0x29,0x28,0xfe,0xaa,0xaa,0xab,0xa6,0xc2,0x83,0xfe,0x82,0x82,0xfe,0x82,0x20,0x24,0xfe,0x0,0x88,0x88,0x88,0x54,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x1f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x22,0x3f,0x22,0x3e,0x22,0x3e,0xe2,0x2,0x3,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0xfc,0x84,0x88,0x50,0x20,0x58,0x8e,0x4,
-+0x0,0x7f,0x44,0x44,0x7f,0x0,0x4,0xfc,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x4,0x4,0xfe,0x44,0x44,0xfc,0x0,0x44,0x7e,0x40,0x48,0x7c,0x40,0x44,0x7e,0x40,0x40,
-+0x8,0x7f,0x4,0x3f,0x24,0x24,0x28,0x3f,0x20,0x3f,0x0,0xff,0x8,0x4,0x4,0x0,0x40,0xfc,0x80,0xf8,0x88,0xe8,0x8,0xf8,0x8,0xf8,0x20,0xfe,0x20,0x20,0xa0,0x40,
-+0x2,0x5f,0x21,0x2f,0x9,0xa,0xe8,0x2b,0x28,0x2f,0x20,0x3f,0x24,0x22,0x50,0x8f,0x20,0xfc,0x40,0xf8,0x48,0x38,0x8,0xe8,0x8,0xf8,0x20,0xfe,0x20,0xa0,0x46,0xfc,
-+0x1,0x9,0x7d,0x49,0x4a,0x4c,0x48,0x78,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x90,0xf8,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x2,0x2,0x2,0xff,0x4,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x40,0x80,0x7f,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x80,0x80,0x80,0x80,0x84,0xfe,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x51,0x91,0x11,0x12,0x14,0x18,0x10,0x10,0x17,0x10,0x80,0x80,0x84,0xfe,0x80,0x80,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x11,0x11,0x11,0x11,0xfe,0x14,0x30,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x90,0xf8,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x10,0x12,0x12,0x22,0x3f,0x62,0xa2,0x22,0x2f,0x28,0x28,0x28,0x28,0x2f,0x28,0x20,0x20,0x20,0x20,0x24,0xfe,0x84,0x44,0x44,0xc8,0xa8,0xa8,0x90,0xa8,0xa8,0x46,0x84,
-+0x9,0x9,0x9,0x11,0x12,0x32,0x54,0x98,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x90,0xf8,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x1,0x1,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,
-+0x1,0x0,0x3f,0x20,0x24,0x24,0x24,0x2a,0x29,0x31,0x20,0x2f,0x40,0x40,0xbf,0x0,0x0,0x84,0xfe,0x80,0x90,0x90,0x90,0xa8,0xa4,0xc4,0x90,0xf8,0x80,0x84,0xfe,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0xff,0x1,0x1,0x21,0x21,0x21,0x21,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xf,0x8,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xe0,0x20,
-+0x10,0x11,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x11,0x21,0x20,0x40,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x7f,0x0,0x0,0x1,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x80,0x80,0x0,0x0,0x60,0x10,0x8,0x4,0x4,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x0,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xff,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x0,0x4,0xfe,0x0,
-+0x0,0x3f,0x0,0x0,0x1,0x7d,0x5,0x9,0x9,0x11,0x11,0x21,0x45,0x2,0xff,0x0,0x20,0xf0,0x40,0x80,0x8,0x18,0xa0,0x40,0x20,0x10,0xe,0x4,0x0,0x4,0xfe,0x0,
-+0x0,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x7f,0x44,0x42,0x5f,0x41,0x41,0x41,0x40,0x4,0xfe,0x0,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x44,0x84,0xf4,0x4,0x4,0x14,0x8,
-+0x0,0x7f,0x3,0x5,0x19,0x61,0x10,0x10,0xfe,0x22,0x22,0x23,0x14,0x8,0x14,0x62,0x8,0xfc,0x0,0x60,0x18,0x4,0x0,0xf8,0x8,0x10,0x24,0xfe,0x20,0x20,0xa0,0x40,
-+0x0,0xff,0x1,0x3d,0x25,0x3d,0x1,0x7f,0x1,0x3d,0x25,0x25,0x3d,0x1,0xff,0x0,0x4,0xfe,0x0,0x78,0x48,0x78,0x0,0xfc,0x0,0x78,0x48,0x48,0x78,0x4,0xfe,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x1,0x7f,0x41,0x41,0x4f,0x40,0x40,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x4,0x24,0xe4,0x24,0x14,0x8,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x20,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x0,0x3,0x7e,0x2,0x2,0x2,0x2,0x3,0xfe,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x10,0xf8,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,
-+0x0,0x1,0x3f,0x1,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x4,0x8,0x30,0xc0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x20,0x10,0xe,0x4,
-+0x0,0x10,0xc,0x2,0x1,0x2,0xc,0x70,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0xc0,0x10,0x30,0x40,0x80,0x0,0xc0,0x30,0x28,0x40,0x40,0x80,0x0,0x80,0x60,0x1e,0x4,
-+0x0,0x1,0x3e,0x20,0x3f,0x20,0x20,0x27,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x3,0x10,0xf8,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x90,0x50,0x20,0x2,0x2,0xfe,
-+0x0,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x22,0x24,0x28,0x33,0x20,0x0,0x10,0xf8,0x80,0x80,0x80,0x84,0xfe,0x80,0x80,0x40,0x40,0x20,0x20,0x12,0x8a,0x6,
-+0x2,0x2,0x4,0x3f,0x20,0x28,0x24,0x22,0x21,0x22,0x24,0x28,0x30,0x20,0x3f,0x20,0x0,0x0,0x8,0xfc,0x8,0x28,0x48,0x88,0x8,0x88,0x48,0x28,0x18,0x8,0xf8,0x8,
-+0x1,0x12,0x14,0x1f,0x11,0x12,0x1f,0x10,0x17,0x14,0x17,0x24,0x27,0x44,0x85,0x4,0x0,0x10,0x50,0x90,0x10,0x50,0xf0,0x10,0xd0,0x50,0xd0,0x50,0xd2,0x52,0x4e,0x80,
-+0x10,0x10,0x10,0x13,0xfc,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x24,0x24,0x43,0x80,0x0,0x88,0x50,0xfe,0x20,0xf8,0x88,0xf8,0x88,0xf8,0x88,0xf8,0x8a,0x2,0xfe,0x0,
-+0x20,0x20,0x24,0x7f,0x80,0x7c,0x44,0x55,0x44,0xfe,0x44,0x54,0x44,0x7e,0x5,0x1a,0x40,0x20,0x24,0xfe,0x40,0x50,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0xaa,0xaa,0x2e,0x0,
-+0x4,0x8,0x3f,0x24,0x3f,0x1,0x1f,0x1,0xff,0x4,0x1f,0x1,0x7f,0x1,0x1,0x1,0x0,0x8,0xfc,0x48,0xf8,0x0,0xf0,0x4,0xfe,0x40,0xf0,0x0,0xfc,0x0,0x0,0x0,
-+0x12,0xa,0x12,0x2,0x3c,0x8,0x7e,0x9,0xff,0x0,0x3e,0x22,0x3e,0x14,0x7e,0x1,0x48,0x50,0x48,0x44,0x3c,0x20,0x28,0xfc,0x20,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e,
-+0x0,0x0,0x0,0x0,0x0,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x0,0x0,0x1,0x3d,0x25,0x25,0x25,0x25,0x25,0x3d,0x1,0x2,0xff,0x0,0x20,0xf0,0x40,0x80,0x8,0x7c,0x8,0x48,0x30,0x10,0x28,0x48,0x0,0x4,0xfe,0x0,
-+0x7f,0x10,0x17,0x14,0x27,0x24,0x57,0x94,0x17,0x10,0x1e,0x2,0x7e,0x12,0x12,0x62,0xf0,0x10,0xd4,0x5e,0xc4,0x44,0xd4,0x5c,0xd0,0x10,0xf0,0x80,0xf8,0x88,0x88,0x88,
-+0x0,0x8,0x8,0x8,0x8,0x9,0xe,0x18,0x68,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x20,0x70,0xa0,0x20,0x20,0x20,0x20,0xa0,0x44,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x12,0x1f,0x10,0x10,0x10,0x12,0x7f,0x42,0x42,0x42,0x42,0x42,0x7e,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0,
-+0x0,0x3f,0x0,0x0,0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x10,0xf8,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x9,0x9,0x79,0x9,0x9,0x9,0x7f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x20,0x28,0x3c,0x20,0x20,0x28,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x7f,0x1,0x41,0x7f,0x40,0x9f,0x0,0x1,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0x0,0xfe,0x2,0xe4,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x7f,0x1,0x9,0x5,0xff,0x0,0x3f,0x20,0x27,0x24,0x27,0x20,0x3f,0x20,0x0,0x8,0xfc,0x0,0x20,0x44,0xfe,0x0,0xf8,0x8,0xc8,0x48,0xc8,0x8,0xf8,0x8,
-+0x20,0x27,0x24,0xfc,0x24,0x27,0x24,0x74,0x57,0x54,0x54,0x57,0x74,0x54,0x4,0x4,0x4,0xbe,0x84,0x84,0x84,0xbc,0x84,0x0,0xbc,0x4,0x24,0xa8,0x10,0x28,0x2e,0xc4,
-+0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x44,0x48,0x90,0x20,0x8,0xfc,0x0,0x80,0x80,0x80,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0xe,0x4,
-+0x0,0x3f,0x21,0x21,0x2f,0x22,0x22,0x24,0x2f,0x20,0x20,0x3f,0x40,0x40,0x80,0x0,0x8,0xfc,0x0,0x8,0xfc,0x40,0x40,0x50,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x3f,0x22,0x22,0x2f,0x22,0x3f,0x20,0x27,0x24,0x24,0x27,0x44,0x44,0x87,0x4,0x8,0xfc,0x20,0x28,0xfc,0x20,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x3f,0x20,0x20,0x2f,0x21,0x3e,0x20,0x2f,0x28,0x2f,0x28,0x4f,0x48,0x80,0x0,0x8,0xfc,0xa0,0x90,0xfc,0x40,0x3c,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x88,0x80,0x80,
-+0x0,0x3f,0x20,0x28,0x25,0x3f,0x22,0x2a,0x2a,0x2a,0x2f,0x22,0x42,0x44,0x88,0x10,0x8,0xfc,0x20,0xa0,0x20,0xbe,0x22,0xd4,0x90,0x90,0x90,0x90,0x28,0x28,0x44,0x82,
-+0x0,0x3f,0x29,0x29,0x3f,0x29,0x2f,0x29,0x2f,0x29,0x29,0x3f,0x42,0x49,0x90,0x1,0x8,0xfc,0x0,0xc,0xf0,0x40,0x44,0x7e,0x48,0x48,0x48,0xc8,0x48,0x48,0x88,0x8,
-+0x0,0x3f,0x20,0x2f,0x21,0x26,0x38,0x2f,0x20,0x2f,0x29,0x29,0x49,0x49,0x89,0xf,0x8,0xfc,0xa0,0xfc,0x40,0x30,0xe,0xfc,0x80,0xfc,0x24,0xe4,0x24,0xe4,0x24,0xfc,
-+0x0,0x3f,0x22,0x24,0x2d,0x36,0x24,0x24,0x24,0x2f,0x28,0x28,0x48,0x41,0x86,0x18,0x8,0xfc,0x50,0xfc,0x90,0xfc,0x90,0x9e,0x80,0xf8,0x8,0x88,0x88,0x60,0x18,0x4,
-+0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x40,0x40,0x47,0x44,0x44,0x44,0x44,0x44,0x47,0x44,0x40,0x40,0x7f,0x0,0x8,0xfc,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xe0,0x20,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x48,0x4a,0x7f,0x50,0x54,0x7f,0x44,0x44,0x7f,0x44,0x44,0x45,0x7f,0x0,0x8,0xfc,0x40,0x40,0x50,0xf8,0x50,0x50,0x50,0x50,0x54,0x54,0x8c,0x0,0xfe,0x0,
-+0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x7f,0x40,0x4f,0x48,0x48,0x43,0x4c,0x7f,0x0,0x8,0xfc,0x80,0xf8,0x88,0xf8,0x80,0xfc,0x8,0xfc,0x88,0x88,0x60,0x18,0xfe,0x0,
-+0x0,0x7f,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x59,0x69,0x4f,0x49,0x49,0x48,0x7f,0x0,0x8,0xfc,0x80,0xf8,0x8,0xf8,0x0,0xfc,0x24,0x24,0xfc,0x24,0x2c,0x4,0xfe,0x0,
-+0x0,0x4,0x7f,0x48,0x49,0x48,0x5f,0x54,0x55,0x55,0x5d,0x49,0x49,0x48,0x7e,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x4,0xfe,0x4,0x24,0x24,0x24,0x50,0x4c,0x84,
-+0x8,0x8,0xa,0x7f,0x8,0x9,0xff,0x8,0xa,0x7f,0x8,0x8,0xf,0x78,0x20,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0xd0,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x1,0x1,0x1,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x88,0xc8,0x88,0x88,0x88,0x88,0x8,0xf8,0x8,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x0,0x41,0x21,0x11,0x12,0xa,0xa,0x4,0x4,0xa,0x9,0x11,0x10,0x20,0x40,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x84,0x84,0x14,0x8,
-+0x20,0x20,0x20,0x3f,0x2a,0x4a,0x4a,0x8a,0x12,0x14,0x14,0x24,0x48,0x12,0x1,0x0,0x4,0x4,0xa4,0xe4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x84,0x84,0x14,0x8,
-+0x0,0x7f,0x1,0x2,0x4,0xb,0x30,0xc0,0x3f,0x4,0x4,0x4,0x7,0x7c,0x20,0x0,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0x24,0xa4,0x24,0x24,0x4,0x84,0x4,0x14,0x8,
-+0x8,0x9,0xff,0x14,0x12,0x21,0xde,0x0,0xff,0x10,0x3f,0x1,0x1,0x11,0xa,0x4,0x4,0x4,0x84,0x24,0x24,0xa4,0xa4,0x24,0xa4,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x4,0x4,0x24,0x24,0x3f,0x8,0x8,0xf,0x10,0x11,0x31,0x4a,0x4,0x8,0x10,0x60,0x4,0x4,0x84,0xa4,0xa4,0xa4,0x24,0xa4,0xa4,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x8,0x8,0x49,0x49,0x7f,0x0,0x7f,0x1,0x1,0x3f,0x21,0x20,0x21,0x26,0x38,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x84,0x4,0x14,0x8,
-+0x8,0x9,0xff,0x8,0x9,0x7f,0x49,0x49,0x7f,0x59,0x1c,0x2a,0x29,0x49,0x88,0x8,0x4,0x4,0x84,0x24,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x8,0x9,0xff,0x8,0x14,0x22,0xff,0x1,0x3d,0x25,0x25,0x25,0x3d,0x21,0x5,0x2,0x4,0x4,0x84,0x24,0x24,0xa4,0xe4,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8,
-+0x8,0x49,0x29,0x2a,0x8,0x16,0x21,0xc8,0x8,0x29,0x2a,0x48,0x16,0x21,0xc0,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0xa4,0xa4,0x24,0x24,0x24,0x4,0x4,0x84,0x94,0x8,
-+0x8,0x44,0x7f,0x40,0xa0,0x3b,0x2a,0x4a,0x6a,0x93,0x12,0x22,0x22,0x42,0x83,0x0,0x4,0x4,0xc4,0x54,0x94,0xd4,0x94,0x94,0x94,0x94,0x14,0x4,0x44,0x84,0x14,0x8,
-+0x11,0x11,0xff,0x11,0x7b,0x4a,0x4a,0x7b,0x4a,0x4a,0x7b,0x4a,0x4a,0x4a,0x9c,0x8,0x4,0x44,0xe4,0x14,0xd4,0x54,0x54,0xd4,0x54,0x54,0xd4,0x44,0x44,0x44,0xd4,0x48,
-+0x0,0xff,0xa,0xa,0x7f,0x4a,0x4a,0x7f,0x0,0x7f,0x0,0xff,0x15,0x24,0x44,0xc,0x84,0xc4,0x4,0x54,0xf4,0x54,0x54,0xd4,0x14,0xd4,0x14,0xe4,0x4,0xc4,0x54,0x8,
-+0x0,0x7f,0x40,0x51,0x4a,0x7f,0x44,0x55,0x55,0x55,0x5f,0x44,0x44,0x48,0x91,0x22,0x22,0xf2,0x2,0x4a,0x4a,0x7a,0x9a,0xa,0x4a,0x4a,0x4a,0x4a,0xa2,0x92,0x16,0x2,
-+0x4,0x25,0x3f,0x24,0x25,0x7f,0xa4,0x25,0x3f,0x24,0x25,0x3f,0x20,0x54,0x4a,0x8a,0x4,0x4,0x84,0x24,0x24,0xa4,0x24,0x24,0xa4,0x24,0x24,0x84,0x4,0x84,0x54,0x48,
-+0x11,0x7f,0x11,0x12,0x3f,0x52,0x1f,0x12,0x13,0x10,0x3f,0x11,0xa,0x4,0x1b,0x60,0x4,0xc4,0x4,0x24,0xa4,0x24,0xa4,0x24,0xa4,0x24,0xa4,0x4,0x4,0x4,0x14,0x88,
-+0x4,0x3f,0x28,0x24,0x3f,0x0,0x7f,0x44,0x7f,0x44,0x7f,0x0,0xff,0x11,0x11,0x21,0x4,0x84,0x84,0x94,0x94,0x14,0xd4,0x54,0xd4,0x54,0xd4,0x4,0xc4,0x4,0x14,0x8,
-+0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x0,0x7f,0x48,0x44,0x42,0x5f,0x42,0x41,0x5f,0x48,0x48,0x48,0x4f,0x40,0x40,0x40,0x4,0xfe,0x24,0x44,0x84,0xf4,0x4,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x14,0x8,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x10,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x8,0x8,0x9,0x11,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x50,0x90,0x10,0x10,0x11,0x11,0x11,0x12,0x14,0x18,0x80,0x80,0x80,0x84,0xfe,0x84,0x84,0x84,0x84,0x84,0x4,0x4,0x4,0x48,0x28,0x10,
-+0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x93,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x10,0x0,0x8,0xfc,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x9,0x9,0x9,0x12,0x12,0x37,0x58,0x90,0x10,0x10,0x11,0x12,0x12,0x12,0x11,0x10,0x0,0x8,0xfc,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x51,0x92,0x14,0x18,0x11,0x12,0x14,0x17,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0xa0,0x20,0x40,0x40,0x80,0x0,0x10,0x8,0xfc,0x4,0x0,
-+0x8,0x8,0xf,0x10,0x10,0x32,0x52,0x92,0x12,0x14,0x10,0x11,0x11,0x12,0x14,0x18,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10,
-+0x8,0x8,0xb,0x12,0x12,0x32,0x52,0x92,0x12,0x12,0x12,0x12,0x13,0x12,0x13,0x10,0x0,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x88,0x8,0x4,0xfe,0x0,
-+0x8,0xa,0xa,0x12,0x12,0x32,0x53,0x92,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x20,0x20,0x20,0x20,0x22,0x24,0xb8,0x20,0x20,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e,
-+0x8,0x8,0xb,0x10,0x11,0x31,0x53,0x90,0x10,0x10,0x10,0x11,0x12,0x14,0x10,0x10,0x0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x30,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x8,0x8,0xf,0x11,0x11,0x31,0x51,0x91,0x11,0x12,0x12,0x12,0x13,0x16,0x10,0x10,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x90,0x50,0x30,0x10,0xd2,0x12,0xe,0x0,
-+0x9,0x9,0xa,0x13,0x14,0x38,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x9,0x9,0x9,0x11,0x11,0x31,0x51,0x9f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0,0x8,0x10,0x20,0x40,0x80,0x4,0xfe,0x40,0x40,0x20,0x10,0x8,0x46,0x84,0x0,
-+0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x99,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf0,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x51,0x91,0x11,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x8,0x8,0x8,0x13,0x12,0x34,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x80,0x40,0x40,0xfc,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x8,0xb,0x8,0x10,0x17,0x30,0x50,0x9f,0x11,0x11,0x12,0x11,0x10,0x10,0x11,0x16,0x10,0xf8,0x0,0x8,0xfc,0x80,0x84,0xfe,0x10,0x10,0x10,0xa0,0x40,0xa0,0x18,0x4,
-+0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x90,0xf8,0x80,0x80,0x84,0xfe,0x80,0xc0,0xa0,0x98,0x88,0x80,0x80,0x80,
-+0x8,0x8,0x8,0x10,0x15,0x35,0x56,0x94,0x14,0x14,0x14,0x14,0x14,0x10,0x11,0x16,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x90,0xe,0x4,
-+0x8,0x8,0xa,0x12,0x13,0x34,0x58,0x90,0x1f,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x9,0x9,0x9,0x13,0x12,0x34,0x5b,0x92,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x44,0x28,0x10,
-+0x9,0x9,0x9,0x12,0x15,0x38,0x50,0x90,0x11,0x12,0x1c,0x10,0x11,0x10,0x10,0x10,0x0,0x0,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0x8e,0x64,0x20,0x80,0x60,0x30,0x10,
-+0x8,0x8,0x8,0x13,0x12,0x35,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x80,0x40,0x40,0xfc,0x4,0x8,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0x4,0xfc,0x0,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x52,0x92,0x12,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x80,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e,0x0,
-+0x14,0x14,0x14,0x24,0x3f,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x28,0x28,0x32,0x21,0x0,0x0,0x4,0xbe,0xe4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0xa4,0x0,
-+0x8,0x8,0x8,0x1f,0x10,0x30,0x57,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0xf,0x9,0x11,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x17,0x10,0x10,0x10,0x10,0x4,0xfe,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x7e,0x88,0x8,0x8,0x8,0x8,
-+0x8,0x8,0x8,0x17,0x11,0x31,0x53,0x95,0x19,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0x80,0x84,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10,
-+0x8,0x8,0x8,0x1f,0x10,0x31,0x52,0x9c,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0xa0,0x10,0xee,0x4,0xf8,0x0,0xf8,0x8,0x8,0x90,0x50,0x20,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x92,0x12,0x12,0x12,0x12,0x12,0x14,0x18,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x48,0x48,0x48,0x48,0x48,0x4a,0x4a,0x4e,0x0,
-+0x8,0xa,0xa,0x13,0x14,0x38,0x50,0x9f,0x10,0x10,0x11,0x12,0x14,0x18,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xc0,0xe0,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x8,0x9,0x9,0x12,0x14,0x3b,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x12,0x12,0x12,0x40,0x40,0x20,0x10,0xe,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x8,0x8,0x8,0x14,0x12,0x32,0x50,0x91,0x12,0x14,0x10,0x11,0x11,0x12,0x14,0x18,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xac,0xa4,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x8,0x8,0xf,0x11,0x10,0x30,0x50,0x93,0x1d,0x11,0x11,0x11,0x11,0x11,0x12,0x14,0x40,0x28,0xfc,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x8,0x8,0x8,0x17,0x11,0x31,0x52,0x95,0x11,0x10,0x10,0x10,0x10,0x11,0x12,0x1c,0x80,0x40,0x48,0xfc,0x20,0x10,0xc,0x14,0x10,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x8,0x8,0x8,0x17,0x14,0x38,0x51,0x91,0x13,0x15,0x19,0x11,0x11,0x11,0x11,0x11,0x40,0x40,0x40,0xfe,0x82,0x84,0x40,0x48,0x30,0x20,0x10,0x10,0x8,0x4e,0x84,0x0,
-+0x8,0x8,0x9,0x12,0x17,0x32,0x52,0x93,0x14,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x10,0x8,0xfc,0x44,0x50,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x8,0x8,0xf,0x10,0x17,0x31,0x5f,0x91,0x12,0x13,0x15,0x18,0x10,0x10,0x10,0x10,0x80,0x88,0xfc,0x80,0xf8,0x0,0xfe,0x10,0x14,0xfe,0x10,0x90,0x90,0x10,0x50,0x20,
-+0x8,0xf,0x8,0x14,0x12,0x30,0x57,0x94,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x18,0x8,0xfc,0xa0,0xa4,0xa8,0xa0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0xf,0x10,0x10,0x37,0x54,0x94,0x16,0x15,0x14,0x14,0x14,0x14,0x14,0x15,0x0,0x4,0xfe,0x0,0x4,0xbe,0xa4,0xa4,0xb4,0xac,0xa4,0xa4,0xa4,0xa4,0xa4,0xac,
-+0x8,0x8,0x8,0x10,0x17,0x30,0x54,0x92,0x12,0x10,0x11,0x12,0x14,0x10,0x11,0x10,0x40,0x50,0x48,0x48,0xfe,0x40,0x48,0x50,0x60,0xd0,0x50,0x48,0x4e,0x44,0x40,0x80,
-+0x8,0x8,0xf,0x14,0x14,0x37,0x54,0x94,0x17,0x14,0x10,0x17,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0xfc,0x40,0x44,0xfe,0x0,
-+0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x97,0x10,0x10,0x1f,0x10,0x10,0x11,0x12,0x1c,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xe,0x4,
-+0x8,0x8,0xb,0x12,0x13,0x32,0x53,0x90,0x1f,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x40,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x8,0xb,0x8,0x10,0x10,0x37,0x54,0x94,0x17,0x14,0x14,0x17,0x14,0x14,0x14,0x14,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8,
-+0x8,0x8,0x9,0x12,0x17,0x31,0x51,0x91,0x12,0x14,0x1f,0x10,0x10,0x10,0x11,0x16,0x80,0x80,0x10,0x8,0xfc,0x4,0x0,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x8,0x8,0xf,0x10,0x13,0x30,0x5f,0x91,0x12,0x15,0x18,0x10,0x17,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0x48,0xfe,0x44,0x40,0xfc,0x40,0x40,0x40,
-+0x8,0x8,0xf,0x10,0x13,0x30,0x5f,0x90,0x13,0x12,0x13,0x12,0x13,0x12,0x12,0x12,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x9,0x9,0xf,0x11,0x11,0x30,0x5f,0x91,0x11,0x12,0x13,0x16,0x1a,0x12,0x13,0x12,0x10,0x10,0xfc,0x10,0x90,0x84,0xfe,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0,
-+0x8,0x8,0x8,0x10,0x13,0x32,0x53,0x92,0x13,0x12,0x10,0x1f,0x10,0x10,0x10,0x10,0x40,0x48,0x7c,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x11,0x11,0x11,0x29,0x2a,0x6c,0xa8,0x29,0x2e,0x28,0x2f,0x28,0x20,0x20,0x21,0x26,0x0,0x8,0xfc,0x10,0xa0,0x40,0xb0,0x4e,0x50,0x48,0xfc,0x40,0xa0,0x90,0xe,0x4,
-+0x8,0xf,0xc,0x14,0x17,0x34,0x54,0x97,0x14,0x10,0x1f,0x10,0x11,0x12,0x1c,0x10,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x8,0xb,0x8,0x10,0x17,0x31,0x52,0x94,0x10,0x1f,0x11,0x12,0x11,0x10,0x11,0x16,0x18,0xe0,0x40,0x48,0xfc,0x50,0x48,0x46,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0x8,
-+0x8,0x9,0xb,0x12,0x12,0x33,0x52,0x92,0x13,0x10,0x11,0x1f,0x10,0x10,0x10,0x10,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x8,0xf,0xc,0x14,0x17,0x34,0x54,0x95,0x14,0x15,0x15,0x15,0x15,0x14,0x14,0x18,0x4,0xfe,0x44,0x54,0xfc,0x44,0x44,0xf4,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x8,0x8,0xb,0x12,0x14,0x33,0x52,0x92,0x13,0x12,0x13,0x12,0x12,0x12,0x13,0x12,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x8,0x17,0x14,0x39,0x52,0x94,0x10,0x13,0x10,0x10,0x10,0x10,0x1f,0x10,0x80,0x40,0x40,0xfe,0x2,0x14,0x8,0x4,0x10,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x8,0xb,0xa,0x12,0x13,0x32,0x52,0x93,0x12,0x12,0x13,0x13,0x15,0x15,0x19,0x11,0x4,0xfe,0x4,0x4,0xfc,0x24,0x20,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0xf,0x10,0x11,0x3f,0x51,0x90,0x13,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0x48,0xfc,0x40,0x54,0xfe,0x10,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x8,0xf,0xc,0x15,0x15,0x35,0x55,0x95,0x14,0x17,0x14,0x14,0x14,0x14,0x17,0x10,0x4,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x40,0xfe,0x48,0x90,0x70,0x88,0xfe,0x0,
-+0xa,0xa,0xb,0x12,0x12,0x33,0x56,0x90,0x13,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x20,0x24,0xac,0x30,0xa2,0x22,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x8,0xb,0xa,0x13,0x12,0x33,0x51,0x91,0x13,0x14,0x1a,0x12,0x12,0x13,0x10,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x44,0x44,0xa4,0x4,0xe4,0x14,0x8,
-+0x8,0xb,0xa,0x12,0x13,0x32,0x52,0x93,0x10,0x1f,0x12,0x12,0x12,0x12,0x13,0x12,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x4,0xfe,0x88,0x50,0x20,0x90,0xe,0x4,
-+0x9,0x9,0x9,0x12,0x13,0x34,0x59,0x92,0x14,0x11,0x10,0x15,0x15,0x19,0x10,0x10,0x0,0x4,0xfe,0xa4,0xa4,0xf4,0x2c,0x44,0x94,0x8,0x40,0x24,0x22,0xa,0xf8,0x0,
-+0x8,0xa,0x9,0x10,0x17,0x30,0x51,0x92,0x10,0x1f,0x11,0x12,0x11,0x10,0x11,0x16,0x40,0x48,0x50,0x40,0xfc,0xe0,0x50,0x4c,0x80,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8,
-+0x10,0x14,0x12,0x20,0x2f,0x68,0xb7,0x24,0x24,0x24,0x27,0x25,0x21,0x21,0x22,0x2c,0x80,0x90,0xa0,0x80,0xfc,0x4,0xf8,0x10,0x10,0x10,0xf0,0x50,0x40,0x44,0x44,0x3c,
-+0x8,0x8,0xb,0x12,0x14,0x31,0x51,0x91,0x11,0x11,0x11,0x1f,0x10,0x10,0x11,0x16,0x80,0x40,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x90,0xc,0x4,
-+0x10,0x10,0x10,0x2f,0x21,0x71,0xaa,0x2a,0x24,0x24,0x2a,0x29,0x31,0x20,0x20,0x20,0x20,0x30,0x28,0x7e,0x48,0xc8,0x7e,0x48,0x48,0x7e,0x48,0x48,0x48,0x7e,0x40,0x40,
-+0xa,0xa,0xb,0x14,0x1a,0x35,0x53,0x92,0x14,0x18,0x17,0x11,0x12,0x14,0x11,0x10,0x0,0x20,0xbc,0xa4,0xa8,0x10,0x10,0xe8,0x6,0x0,0xfc,0x50,0x4c,0x44,0x40,0x80,
-+0x8,0xf,0x8,0x13,0x10,0x33,0x52,0x93,0x11,0x1f,0x10,0x13,0x12,0x12,0x13,0x12,0x48,0xfc,0x40,0xf8,0x0,0xf8,0x8,0xf8,0x10,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,
-+0x15,0x15,0x1f,0x25,0x25,0x68,0xaf,0x28,0x30,0x2e,0x2a,0x2a,0x2e,0x20,0x22,0x21,0x20,0x20,0xa0,0x24,0x7e,0x84,0xc4,0xc4,0xa8,0xa8,0xa8,0x90,0xa8,0xa8,0xc6,0x4,
-+0x11,0x1f,0x1a,0x2a,0x2f,0x62,0xa6,0x2a,0x33,0x20,0x27,0x24,0x27,0x24,0x27,0x24,0x4,0xbe,0x28,0x28,0xbe,0x8,0x18,0xaa,0x4e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x9,0x9,0x9,0x12,0x16,0x3b,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x15,0x14,0x18,0x40,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0x24,0x92,0x2,
-+0x14,0x12,0x12,0x3f,0x20,0x6f,0xa8,0x28,0x28,0x2f,0x22,0x2b,0x2a,0x32,0x26,0x20,0x10,0x10,0x98,0xd4,0x10,0xfe,0x90,0x90,0x98,0x98,0x28,0x28,0xa8,0xca,0x4a,0x86,
-+0x8,0xf,0x9,0x10,0x1f,0x30,0x57,0x94,0x17,0x14,0x17,0x10,0x17,0x10,0x1f,0x10,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x40,0xfc,0x40,0xfe,0x0,
-+0x8,0xf,0xc,0x14,0x17,0x30,0x5f,0x90,0x13,0x12,0x13,0x10,0x11,0x13,0x1d,0x11,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xfe,0x8,0xfc,0x8,0xf8,0xc4,0x28,0x10,0x8e,0x4,
-+0x9,0x9,0xa,0x17,0x14,0x35,0x57,0x94,0x15,0x14,0x15,0x14,0x15,0x15,0x19,0x11,0x0,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x4,0xfc,0x4,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x20,0xc0,0x1f,0x1,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x24,0xf0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x1,0x1,0x2,0x4,0x9,0x31,0xc1,0x3d,0x5,0x9,0x9,0x11,0x21,0x41,0x5,0x2,0x0,0x0,0x80,0x40,0x30,0xe,0x4,0x90,0x60,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x1,0x1,0x2,0x4,0x8,0x30,0xcf,0x0,0x0,0x7f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x0,0x80,0x40,0x30,0x4e,0xe4,0x0,0x8,0xfc,0x0,0x20,0x18,0xc,0x4,0x0,
-+0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc0,0x12,0x9,0x9,0x9,0x8,0x0,0xff,0x0,0x0,0x0,0x80,0x40,0x20,0x50,0xee,0x4,0x10,0x10,0x20,0x20,0x40,0x84,0xfe,0x0,
-+0x10,0x11,0x11,0x29,0x29,0x45,0x95,0x11,0x11,0x29,0x29,0x45,0x45,0x81,0xf,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x1,0x1,0x2,0xc,0x37,0xc0,0x3b,0x2a,0x3b,0x0,0x3f,0x24,0x3f,0x24,0x24,0x20,0x0,0x0,0x80,0x60,0xd8,0x6,0xb8,0xa8,0xb8,0x0,0xf8,0x48,0xf8,0x48,0x48,0x18,
-+0x6,0x1,0x2,0xc,0x31,0xc1,0x1,0x3d,0x5,0x9,0x9,0x11,0x21,0x41,0x5,0x2,0x0,0x0,0x80,0x60,0x18,0x6,0x0,0x90,0x60,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x6,0x1,0x2,0xc,0x31,0xc1,0x11,0x9,0x1,0x7f,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0x0,0x80,0x60,0x18,0x6,0x10,0x20,0x8,0xfc,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x4,0x4,0x8,0x8,0x10,0x20,0x5f,0x88,0x8,0x1f,0x0,0x0,0x0,0x2,0x1,0x0,0x40,0x40,0x20,0x20,0x10,0x58,0xee,0x4,0x20,0xf0,0x20,0x20,0x20,0x20,0x40,0x80,
-+0x0,0x3e,0x22,0x22,0x3e,0x20,0x22,0x1e,0x4,0x3f,0x4,0x4,0xff,0x4,0x18,0x20,0x8,0xfc,0x88,0x88,0xf8,0x80,0x84,0x7c,0x40,0xf8,0x40,0x44,0xfe,0x40,0x30,0x8,
-+0x22,0x11,0x7f,0x44,0x9f,0x4,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x4,0x18,0x20,0x8,0x10,0xfe,0x42,0xf4,0x40,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x40,0x30,0x8,
-+0x0,0x44,0x28,0xff,0x10,0x20,0x7d,0x45,0x45,0x7d,0x45,0x7c,0x44,0x47,0x7c,0x44,0x10,0x18,0x14,0xfe,0x10,0x10,0xd4,0x54,0x54,0x54,0xd4,0x18,0xd2,0x2a,0x46,0x82,
-+0x44,0x25,0x29,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x12,0xfe,0x12,0x14,0x18,0x10,0x4,0xfe,0x4,0x4,0xfc,0x48,0xfc,0x48,0x48,0xfe,0xa4,0xa8,0x90,0x88,0xc6,0x80,
-+0x4,0xff,0x1,0x17,0x54,0x5f,0x54,0x57,0x5c,0xe7,0x14,0x27,0x4c,0x13,0xc,0x70,0x40,0xfe,0x0,0xdc,0x54,0xd4,0x5c,0xd0,0x52,0xce,0x10,0xc8,0x44,0x80,0x60,0x1c,
-+0x10,0x10,0x1f,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x1f,0x22,0x42,0xbf,0x2,0x3f,0x22,0x3f,0x22,0x3f,0x22,0x22,0x22,0x0,0x0,0x4,0xfe,0x84,0x44,0xf4,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0x64,0x34,0x8,
-+0x10,0x10,0x1f,0x24,0x42,0xbf,0x0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x10,0x1f,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x4,0xc4,0x4,0xc4,0x4,0xc4,0x44,0x44,0xd4,0x8,
-+0x10,0x10,0x1f,0x20,0x7f,0x80,0x1f,0x10,0x1f,0x0,0x3f,0x22,0x3f,0x22,0x3f,0x0,0x0,0x4,0xfe,0x44,0xe4,0x4,0xc4,0x44,0xc4,0x4,0xe4,0x24,0xe4,0x24,0xf4,0x8,
-+0x2,0x4,0x3f,0x20,0x24,0x22,0x20,0x3f,0x0,0xf,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x20,0xf0,0x20,0x20,0xa0,0x48,0xfc,0x8,0xa8,0x90,0x80,0x80,0x82,0x82,0x7e,
-+0x0,0x3f,0x20,0x20,0x2f,0x22,0x22,0x27,0x24,0x2c,0x32,0x21,0x22,0x44,0x48,0x80,0x10,0xf8,0x10,0x90,0xd0,0x10,0x10,0xd0,0x50,0x50,0x90,0x10,0x12,0x12,0xa,0x4,
-+0x0,0x3c,0x24,0x24,0x27,0x20,0x20,0x3f,0x24,0x4,0x4,0x4,0x8,0x10,0x20,0x40,0x8,0x7c,0x48,0x48,0xc8,0x8,0x8,0xf8,0x48,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x0,0x0,0x0,0x2,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x1,0xff,0x8,0x12,0x22,0x44,0x8,0x1f,0x4,0x4,0x4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x20,0x18,0xc,0x44,0x20,0xf0,0x90,0x80,0x80,0x84,0x84,0x7c,0x0,
-+0x1,0xff,0x0,0x1f,0x10,0x1f,0x40,0x7f,0x40,0x9f,0x1,0x1,0x3f,0x1,0x1,0x0,0x0,0xfe,0x0,0xf0,0x10,0xf0,0x0,0xfe,0x12,0xe4,0x0,0xf8,0x0,0x4,0x4,0xfc,
-+0x2,0x1,0xff,0x8,0x12,0x22,0x44,0x1f,0x2,0x6,0xd,0x14,0x24,0xc5,0x6,0x4,0x0,0x4,0xfe,0x20,0x18,0x4c,0x24,0xf0,0x0,0x18,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x1,0xff,0x0,0x1f,0x2,0x1,0x7f,0x4,0x8,0x32,0x1,0x2,0xc,0x15,0x66,0x4,0x0,0xfe,0x0,0xf0,0x40,0x80,0xfc,0x84,0x88,0x80,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x1,0xff,0x8,0x8,0x7e,0x8,0xe,0x78,0x9,0x1a,0x1,0x2,0xc,0x15,0x66,0x4,0x0,0xfe,0x40,0x48,0xfc,0x48,0xc8,0xa8,0xa,0x6,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x1,0xff,0x4,0x14,0x24,0x45,0x1,0x3f,0x22,0x24,0x29,0x22,0x24,0x28,0x20,0x20,0x0,0xfe,0x40,0x50,0x4c,0x44,0x0,0xf8,0x88,0x68,0x28,0x88,0x68,0x28,0x28,0x10,
-+0x1,0xff,0x2,0x1c,0x10,0x10,0x1c,0x10,0x10,0x1f,0x5,0x8,0x18,0x2a,0xcc,0x8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x8,0x90,0x60,0x30,0xe,0x4,
-+0x1,0xff,0x0,0x3f,0x24,0x27,0x24,0x3f,0x0,0x3f,0x0,0xff,0x9,0x11,0x21,0x3,0x0,0xfe,0x8,0xfc,0x48,0xc8,0x48,0xf8,0x0,0xf8,0x0,0xfe,0x20,0x18,0x8,0x0,
-+0x1,0xff,0x20,0x3f,0x0,0x1f,0x10,0x1f,0x79,0x49,0x7f,0x4a,0x7a,0x49,0x4e,0x98,0x0,0xfe,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x38,0x28,0xe8,0xb8,0xa8,0x2a,0xea,0x46,
-+0x1,0xff,0x20,0x3f,0x0,0x1f,0x10,0x1f,0x71,0x57,0x75,0x57,0x71,0x51,0x57,0xb0,0x0,0xfe,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x1c,0xd4,0x54,0xdc,0x14,0x54,0xd4,0x22,
-+0x1,0xff,0x20,0x3f,0x0,0x1f,0x10,0x1f,0x7a,0x4f,0x79,0x4f,0x79,0x4f,0x49,0x99,0x0,0xfe,0x0,0xf8,0x0,0xf0,0x10,0xf0,0xb8,0xe8,0x28,0xe8,0x38,0xea,0x2a,0x46,
-+0x0,0x40,0x20,0x10,0x10,0x0,0x0,0x10,0x20,0x20,0xe0,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x4f,0x22,0x12,0x12,0x3,0x2,0x12,0x22,0x22,0xe7,0x20,0x20,0x20,0x2f,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x20,0x20,0x44,0xfe,0x0,
-+0x0,0x4f,0x22,0x12,0x13,0x2,0x14,0x14,0x26,0x29,0xe0,0x21,0x22,0x24,0x28,0x0,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x54,0x54,0x94,0x94,0x14,0x4,0x4,0x14,0x8,
-+0x0,0x42,0x22,0x13,0x12,0x4,0x0,0x17,0x21,0x21,0xe1,0x21,0x22,0x22,0x24,0x8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x2,0x42,0x22,0x22,0x1f,0x2,0x26,0x27,0x2a,0x4a,0xd2,0x42,0x42,0x42,0x42,0x2,0x0,0x28,0x28,0x28,0xc4,0x44,0x92,0x10,0x90,0xa0,0x20,0x48,0x44,0xfe,0x2,0x0,
-+0x0,0x0,0x0,0x0,0x40,0x7f,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x7f,0x40,0x80,0x3f,0x6,0x9,0x1a,0x74,0xb,0x16,0x64,0x8,0x10,0x62,0x1,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0x90,0xe0,0xa0,0xa0,0x90,0x8e,0x84,0x80,0x0,
-+0x40,0x7f,0x40,0x80,0x1f,0x10,0x1f,0x10,0x1f,0x12,0x1,0xff,0x0,0x8,0x10,0x20,0x0,0xfe,0x2,0x14,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x4,0xfe,0x0,0x20,0x18,0x8,
-+0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x47,0x30,0x10,0x0,0x0,0xf0,0x17,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x40,0x37,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x12,0x14,0x1f,0x10,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0,
-+0x0,0x40,0x20,0x20,0x4,0x4,0xe4,0x24,0x24,0x24,0x24,0x24,0x2c,0x37,0x20,0x0,0x40,0x40,0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,0x0,
-+0x0,0x47,0x24,0x24,0x5,0x4,0xe4,0x24,0x24,0x24,0x25,0x26,0x2c,0x34,0x27,0x0,0x8,0xfc,0x0,0x4,0x4,0x88,0x50,0x20,0x50,0x88,0xc,0x4,0x0,0x4,0xfe,0x0,
-+0x0,0x43,0x32,0x12,0x2,0x3,0xf2,0x12,0x12,0x13,0x12,0x12,0x16,0x1a,0x13,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x40,0x20,0x20,0x7,0x4,0xe4,0x24,0x24,0x24,0x25,0x25,0x2e,0x34,0x24,0x4,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xa4,0xa4,0x14,0x14,0xc,0x4,0x14,0x8,
-+0x0,0x40,0x30,0x10,0x7,0x0,0xf0,0x10,0x13,0x12,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x37,0x10,0x0,0x3,0xf2,0x12,0x12,0x12,0x13,0x10,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x8,0x8,0x8,0x28,0x10,
-+0x0,0x40,0x27,0x24,0x4,0x4,0xe7,0x24,0x24,0x24,0x24,0x24,0x2d,0x36,0x24,0x0,0x10,0x78,0xc0,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x20,0xa0,0x12,0x92,0x4a,0x6,
-+0x0,0x47,0x30,0x10,0x0,0x1,0xf1,0x12,0x14,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x4,0xfe,0x84,0x84,0x84,0x4,0x14,0x8,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x40,0x22,0x22,0x2,0x2,0xe2,0x23,0x20,0x24,0x24,0x24,0x2c,0x34,0x27,0x0,0x40,0x40,0x48,0x48,0x48,0x48,0x48,0xf8,0x40,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,
-+0x0,0x40,0x30,0x11,0x2,0x7,0xf0,0x10,0x13,0x12,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x80,0x8,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x43,0x32,0x12,0x3,0x2,0xf2,0x12,0x12,0x12,0x12,0x13,0x16,0x1a,0x13,0x0,0x8,0xfc,0x0,0x8,0xfc,0x20,0x20,0xf8,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x0,0x3,0xf0,0x10,0x1f,0x10,0x10,0x15,0x19,0x12,0x4,0x0,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0xc0,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x0,0x40,0x33,0x10,0x0,0x0,0xf7,0x10,0x10,0x10,0x13,0x10,0x14,0x18,0x17,0x0,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x0,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x40,0x30,0x1f,0x0,0x0,0xf7,0x10,0x10,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x17,0x1,0x1,0xf1,0x12,0x12,0x14,0x19,0x10,0x14,0x18,0x11,0x2,0x80,0x80,0x84,0xfe,0x0,0x20,0x20,0xa4,0xac,0xb0,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x42,0x32,0x13,0x4,0x0,0xf0,0x1f,0x11,0x11,0x11,0x15,0x1a,0x12,0x4,0x8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x40,0x33,0x12,0x2,0x3,0xf2,0x12,0x12,0x12,0x12,0x16,0x1a,0x12,0x4,0x8,0x8,0x1c,0xe0,0x0,0x4,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x0,0x40,0x30,0x11,0x2,0xc,0xf3,0x10,0x10,0x10,0x13,0x10,0x14,0x18,0x17,0x0,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x0,
-+0x1,0x41,0x31,0x12,0x4,0xb,0xf0,0x10,0x1f,0x10,0x10,0x13,0x14,0x18,0x11,0x0,0x0,0x0,0xf0,0x20,0x48,0xfc,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80,
-+0x0,0x47,0x34,0x18,0x7,0x1,0xf1,0x12,0x17,0x10,0x10,0x1f,0x10,0x14,0x18,0x0,0x0,0xfc,0x84,0x88,0xfc,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x40,0x37,0x10,0x0,0x4,0xf2,0x12,0x10,0x11,0x16,0x10,0x14,0x18,0x12,0x1,0x0,0x4,0xbe,0x84,0x84,0xa4,0x94,0x94,0x84,0x8c,0xb4,0x84,0x84,0x84,0x94,0x8,
-+0x0,0x42,0x31,0x11,0x0,0x3,0xf2,0x12,0x13,0x12,0x12,0x13,0x16,0x1a,0x12,0x2,0x40,0x48,0x58,0x60,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x42,0x32,0x13,0x4,0x8,0xf7,0x10,0x10,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x45,0x32,0x15,0x9,0x1,0xf1,0x13,0x15,0x19,0x11,0x11,0x15,0x19,0x15,0x2,0x80,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,
-+0x0,0x40,0x31,0x12,0x7,0x1,0xf1,0x11,0x12,0x10,0x1f,0x10,0x14,0x18,0x11,0x6,0x80,0x80,0x10,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x0,0x5f,0x24,0x24,0x7,0x4,0xe4,0x27,0x24,0x24,0x24,0x2f,0x28,0x30,0x20,0x0,0x4,0xfe,0x80,0x80,0xbe,0x82,0xa2,0x94,0x94,0x94,0x88,0xc8,0x94,0x94,0xa2,0xc0,
-+0x0,0x4f,0x20,0x21,0x3,0x4,0xe8,0x25,0x22,0x26,0x29,0x21,0x2a,0x34,0x21,0x0,0x4,0xfe,0x80,0x0,0x4,0x8c,0xd0,0x60,0x60,0x50,0xd0,0x48,0x4e,0x44,0x40,0x80,
-+0x0,0x43,0x30,0x10,0x7,0x1,0xf2,0x14,0x10,0x1f,0x11,0x11,0x14,0x18,0x11,0x6,0x3c,0xc0,0x40,0x48,0xfc,0x50,0x4e,0x44,0x80,0xfe,0x10,0x10,0xa0,0x60,0x98,0x4,
-+0x0,0x41,0x36,0x14,0x4,0x7,0xf4,0x14,0x17,0x14,0x10,0x10,0x15,0x19,0x12,0xc,0x40,0x44,0x5e,0x44,0x44,0x5c,0x44,0x44,0xfc,0x44,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x40,0x20,0x21,0x2,0x4,0xe8,0x23,0x20,0x20,0x21,0x2d,0x35,0x25,0x9,0x0,0x40,0x40,0xa0,0x10,0x88,0x46,0x4,0xf0,0x10,0x20,0x0,0x48,0x24,0x4,0x10,0xf0,
-+0x0,0x40,0x30,0x11,0x2,0x4,0xf0,0x13,0x12,0x12,0x13,0x12,0x16,0x1a,0x13,0x2,0x80,0x80,0xfc,0x8,0x10,0x20,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x40,0x37,0x11,0x1,0x1,0xf2,0x14,0x10,0x1f,0x10,0x10,0x14,0x18,0x10,0x0,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x41,0x37,0x11,0x1,0x1,0xf1,0x11,0x11,0x1f,0x12,0x12,0x17,0x1a,0x13,0x0,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0x0,0x90,0x8,0x0,0xfc,0x0,
-+0x0,0x40,0x2f,0x20,0x7,0x4,0xe5,0x24,0x24,0x27,0x21,0x29,0x32,0x24,0x8,0x0,0x40,0x44,0xfe,0x40,0xfc,0x44,0x54,0xe4,0x44,0xfc,0x60,0x50,0x48,0x4e,0x44,0x40,
-+0x0,0x40,0x20,0x27,0x4,0x4,0xe7,0x24,0x24,0x24,0x25,0x2d,0x37,0x29,0x9,0x10,0x48,0x7c,0x40,0xfe,0x42,0x7c,0xc0,0x44,0x7c,0x0,0xfc,0x0,0xfe,0x0,0xfc,0x0,
-+0x0,0x43,0x22,0x23,0x2,0x3,0xe1,0x23,0x24,0x28,0x22,0x23,0x2a,0x33,0x20,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xb4,0x14,0x4,0xf4,0x14,0x8,
-+0x0,0x47,0x24,0x24,0x7,0x0,0xe3,0x20,0x2f,0x21,0x21,0x24,0x28,0x30,0x20,0x0,0x4,0xbe,0xa4,0xa4,0xbc,0x0,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x0,0x40,0x21,0x22,0x4,0xb,0xf0,0x27,0x24,0x27,0x24,0x27,0x2c,0x34,0x24,0x5,0x80,0x80,0x40,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x0,0x47,0x20,0x22,0x1,0xf,0xe0,0x20,0x2f,0x21,0x21,0x2b,0x32,0x24,0x8,0x3,0x3c,0xc0,0x88,0x48,0x50,0xfc,0x80,0x84,0xfe,0x0,0xf0,0x10,0xa0,0x40,0xb0,0xc,
-+0x0,0x40,0x37,0x12,0x1,0x0,0xf7,0x10,0x13,0x12,0x12,0x13,0x16,0x1a,0x13,0x2,0x80,0x48,0xfc,0x10,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x37,0x11,0x0,0x7,0xf4,0x18,0x13,0x12,0x12,0x12,0x16,0x1a,0x10,0x0,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x48,0x58,0x40,0x40,
-+0x0,0x48,0x24,0x24,0x1,0x6,0xe8,0x30,0x21,0x22,0x27,0x22,0x2a,0x32,0x23,0x2,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0xa0,0x10,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x24,0x27,0x24,0x2c,0x37,0x24,0x2c,0x34,0x4,0x80,0x48,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0xa4,0xa4,0xfc,0xa4,0xa4,0xb4,0x8,
-+0x1,0x41,0x37,0x11,0x0,0x3,0xf2,0x13,0x12,0x13,0x10,0x1f,0x10,0x19,0x12,0xc,0x10,0x14,0xfe,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x44,0xfe,0xa0,0x10,0xe,0x4,
-+0x0,0x42,0x21,0x2f,0x8,0x13,0xe2,0x22,0x22,0x23,0x20,0x21,0x29,0x32,0x24,0x8,0x40,0x48,0x50,0xfe,0x2,0xfc,0x8,0x8,0x8,0xf8,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x47,0x24,0x27,0x4,0x7,0xe2,0x25,0x29,0x22,0x25,0x20,0x28,0x30,0x23,0xc,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0x4,0xfa,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x4,0x42,0x21,0x2f,0x0,0x1,0xe2,0x24,0x23,0x22,0x22,0x22,0x2a,0x32,0x2f,0x0,0x4,0x8,0x10,0xfe,0x0,0x10,0xc,0x4,0xf8,0xa8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x1,0x40,0x30,0x15,0x5,0x9,0xf1,0x12,0x14,0x13,0x12,0x12,0x16,0x1a,0x17,0x0,0x0,0xc8,0x48,0x14,0x22,0x42,0x88,0xf8,0x0,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x0,0x40,0x2f,0x21,0x0,0x7,0xe4,0x24,0x27,0x24,0x25,0x25,0x2d,0x35,0x25,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x1,0x40,0x37,0x10,0x3,0x2,0xf3,0x12,0x13,0x12,0x10,0x13,0x14,0x18,0x11,0x6,0x8,0x90,0xfe,0x0,0xd4,0x54,0xd4,0x54,0xc4,0x4c,0x0,0xfc,0x84,0x84,0x14,0x8,
-+0x2,0x4f,0x22,0x2a,0xf,0x2,0xe6,0x2b,0x32,0x20,0x23,0x22,0x2b,0x32,0x23,0x2,0x4,0xbe,0x8,0x28,0xbe,0x8,0x98,0x2a,0x4e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x1,0x41,0x23,0x22,0x6,0xb,0xe2,0x22,0x23,0x22,0x22,0x23,0x2a,0x35,0x24,0x8,0x40,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0x24,0x92,0x2,
-+0x0,0x47,0x20,0x20,0xf,0x1,0xe2,0x2c,0x27,0x24,0x27,0x25,0x2d,0x35,0x24,0x4,0x0,0xf8,0x90,0x60,0xfe,0x44,0x40,0xc4,0xfe,0xa4,0x1c,0xf4,0x14,0xf4,0x14,0x8,
-+0x1,0x41,0x21,0x2f,0x1,0x1,0xef,0x2a,0x2a,0x2f,0x29,0x2f,0x29,0x39,0x28,0x0,0x8,0x8,0x4c,0xe8,0x3e,0x8,0xe8,0xa8,0xa8,0xe8,0x28,0xe8,0x28,0x74,0x24,0x42,
-+0x1,0x41,0x22,0x27,0xc,0x5,0xe7,0x24,0x25,0x24,0x25,0x2c,0x35,0x25,0x9,0x1,0x0,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x4,0xfc,0x4,
-+0x0,0x44,0x24,0x2b,0x0,0x1f,0xe2,0x2e,0x22,0x2e,0x22,0x2e,0x2a,0x32,0x2f,0x0,0x10,0x90,0x98,0x54,0x10,0xfe,0x90,0xf0,0x94,0xf4,0x94,0xe8,0x9a,0xaa,0xe6,0x2,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,0x20,0x20,
-+0x1f,0x0,0x1,0x3d,0x5,0x9,0x33,0xc1,0x3f,0x0,0x1f,0x10,0x10,0x10,0x10,0xf,0xf0,0x40,0x88,0xb0,0x40,0x30,0xe,0x4,0xf8,0x10,0xf8,0x10,0x90,0x64,0x4,0xfc,
-+0x0,0x78,0x48,0x48,0x50,0x50,0x60,0x50,0x50,0x48,0x48,0x68,0x50,0x40,0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x78,0x4f,0x49,0x51,0x51,0x61,0x51,0x51,0x49,0x49,0x69,0x52,0x42,0x44,0x48,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x7c,0x45,0x48,0x48,0x50,0x48,0x4b,0x44,0x44,0x44,0x68,0x50,0x40,0x40,0x40,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x1,0x79,0x49,0x49,0x57,0x51,0x61,0x51,0x51,0x4f,0x49,0x69,0x51,0x42,0x42,0x44,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x78,0x4b,0x4a,0x52,0x53,0x62,0x52,0x52,0x4a,0x4a,0x6a,0x54,0x44,0x49,0x42,0x8,0x3c,0xc0,0x0,0x8,0xfc,0x8,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x0,0x7c,0x44,0x48,0x48,0x50,0x48,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x7d,0x45,0x49,0x4a,0x52,0x4c,0x48,0x44,0x44,0x44,0x68,0x50,0x40,0x40,0x40,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x0,0x78,0x48,0x4b,0x52,0x52,0x62,0x53,0x52,0x4a,0x4a,0x6a,0x54,0x44,0x49,0x42,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x0,0x7b,0x48,0x48,0x50,0x50,0x61,0x56,0x50,0x4b,0x48,0x68,0x50,0x40,0x4f,0x40,0x0,0xf8,0x10,0x20,0x40,0xb0,0xc,0x4,0x10,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x78,0x48,0x4f,0x50,0x50,0x61,0x53,0x51,0x48,0x48,0x6b,0x50,0x40,0x43,0x4c,0x80,0x40,0x44,0xfe,0x80,0x90,0x10,0xe0,0x28,0x48,0x90,0x10,0x20,0xd8,0x6,0x2,
-+0x0,0x78,0x49,0x49,0x51,0x51,0x67,0x50,0x51,0x49,0x4a,0x68,0x50,0x40,0x43,0x4c,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x50,0x60,0x40,0x80,0x0,0x0,
-+0x0,0x7b,0x4a,0x4a,0x53,0x52,0x62,0x53,0x52,0x48,0x4b,0x68,0x50,0x40,0x4f,0x40,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x48,0x40,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x70,0x5f,0x54,0x54,0x57,0x64,0x54,0x57,0x54,0x54,0x5f,0x70,0x40,0x40,0x40,0x0,0x40,0xe0,0x80,0xbc,0x84,0xa4,0xa8,0xa8,0x90,0x90,0xe8,0xa8,0xc6,0x80,0x80,
-+0x0,0x78,0x4f,0x48,0x50,0x5f,0x61,0x51,0x57,0x49,0x49,0x6f,0x50,0x40,0x47,0x40,0x8,0x3c,0xc0,0x40,0x44,0xfe,0x50,0x50,0xfc,0x50,0x54,0xfe,0x40,0x48,0xfc,0x0,
-+0x0,0x79,0x4b,0x4a,0x52,0x53,0x62,0x52,0x53,0x48,0x49,0x6f,0x50,0x40,0x40,0x40,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x7b,0x4a,0x4a,0x53,0x52,0x62,0x53,0x50,0x4f,0x4a,0x6a,0x52,0x42,0x43,0x42,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x4,0xfe,0x88,0x50,0x20,0x90,0xe,0x4,
-+0x0,0x78,0x4b,0x4a,0x53,0x52,0x63,0x50,0x57,0x48,0x48,0x6b,0x50,0x40,0x4f,0x40,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0,
-+0x0,0x78,0x4b,0x4a,0x52,0x53,0x62,0x52,0x4b,0x48,0x68,0x51,0x41,0x42,0x44,0x48,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x54,0x5c,0x42,0x42,0x3e,
-+0x0,0x7b,0x4a,0x4b,0x52,0x53,0x61,0x52,0x57,0x49,0x4a,0x6f,0x50,0x45,0x44,0x48,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x8,0x10,0xbe,0x8,0x94,0xbe,0x0,0x24,0x92,0x2,
-+0x2,0x7f,0x8,0x8,0x8,0x9,0xff,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x0,0x2,0x7f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xf,0xf8,0x40,0x0,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x4,0x2,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x10,0x8,0x9,0xff,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x3f,0x0,0x0,0x0,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x12,0x3f,0x22,0x22,0x22,0x2a,0x24,0x20,0x3f,0x0,0x4,0xfe,0x0,0x2,0x1,0x0,0x3c,0x24,0x24,0x28,0x28,0x30,0x28,0xa4,0xe2,0xa2,0xa2,0xb4,0xa8,0xa0,0x20,
-+0x10,0x8,0x9,0xff,0x10,0x12,0x1f,0x12,0x12,0x12,0x12,0x22,0x22,0x4a,0x84,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x1,0xff,0x8,0x8,0x9,0x7f,0x49,0x49,0x49,0x55,0x63,0x41,0x41,0x45,0x42,0x0,0x0,0xfc,0x44,0x44,0x48,0xc8,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x1,0xff,0x4,0x8,0x18,0x1c,0x2a,0x29,0x49,0x88,0x8,0x8,0xf,0xf8,0x40,0x0,0x0,0xfc,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x14,0x14,0x14,0x14,0x15,0xf7,0x14,0x14,0x14,0x14,0x14,0x35,0xd6,0x14,0x0,0x0,0x0,0x7c,0x44,0x44,0x48,0xc8,0x50,0x48,0x44,0x42,0xc2,0x62,0x54,0x48,0x40,0x40,
-+0x14,0x14,0x14,0x14,0x94,0x54,0x55,0x35,0x36,0x14,0x14,0x17,0xf8,0x40,0x0,0x0,0x0,0x7c,0x44,0x44,0xc8,0xc8,0x50,0x48,0x44,0x42,0x42,0xe2,0x54,0x48,0x40,0x40,
-+0x2,0x7,0x78,0x48,0x48,0x4a,0x7f,0x48,0x48,0x48,0x44,0x44,0x52,0x69,0x44,0x0,0x0,0x3c,0x24,0x24,0x28,0x28,0x30,0x28,0x24,0x22,0x22,0xa2,0xb4,0xa8,0x20,0x20,
-+0x10,0x10,0x20,0x24,0x42,0xff,0x0,0x2,0x7f,0x42,0x42,0x42,0x42,0x7e,0x42,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x8,0x9,0xff,0x8,0x49,0x29,0x2a,0xff,0x8,0x8,0x14,0x12,0x23,0xc1,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x2,0xff,0x10,0x10,0x22,0x41,0x7f,0x8,0x8,0x7f,0x8,0x8,0xf,0xf8,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40,
-+0x8,0x8,0x4a,0x7f,0x48,0x88,0x9,0xff,0x8,0x1c,0x1c,0x2a,0x29,0x48,0x88,0x8,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x8,0x14,0x12,0x21,0x20,0x7f,0x80,0x1,0xff,0x10,0x14,0x22,0x7f,0x21,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0xc2,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x41,0x22,0x14,0x8,0x14,0x63,0x10,0xff,0x10,0x24,0x28,0x48,0x92,0x3f,0x1,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x21,0x3f,0x41,0x41,0xbd,0x25,0x25,0x3d,0x25,0x25,0x3d,0x25,0x1,0xa,0x4,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x0,0x7f,0x50,0x91,0x3f,0x10,0x14,0x25,0x7f,0x4,0x4,0x7,0xfc,0x44,0x4,0x4,0x0,0xfc,0xc4,0x44,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0xe2,0x54,0x48,0x40,0x40,
-+0x0,0xff,0x0,0x0,0x7b,0x4a,0x4a,0x4a,0x6b,0x5a,0x4a,0x4a,0x4a,0x4a,0x5a,0x0,0x40,0xfe,0x12,0x52,0xf4,0x54,0x58,0x54,0x54,0xd2,0x52,0x5a,0x54,0x50,0xd0,0x10,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x0,0xff,0x8,0xa,0x7f,0x8,0xf,0xf8,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40,
-+0x8,0x28,0x2a,0x3f,0x48,0x88,0x9,0xff,0x0,0x7f,0x41,0x41,0x41,0x7f,0x41,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x20,0x11,0xe,0x11,0x28,0x8,0xff,0x14,0x24,0x7f,0xa4,0x24,0x24,0x25,0x24,0x4,0x80,0x3c,0x24,0x24,0xa8,0x28,0xf0,0x28,0xa4,0xe2,0xa2,0xa2,0xb4,0xa8,0xa0,0x20,
-+0x1,0x3,0xfc,0x49,0x29,0x2,0x7f,0x2,0xc,0x8,0xff,0x48,0x8,0x8,0x28,0x10,0x0,0xfc,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x11,0x7f,0x49,0x49,0x7f,0x49,0x51,0x7f,0x10,0x29,0xff,0x8,0x8,0x8,0x8,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0xe2,0x54,0x48,0x40,0x40,
-+0x8,0x29,0x2a,0x4c,0x94,0x12,0x21,0xc8,0x8,0x29,0x2a,0x54,0x12,0x21,0xc1,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x1,0x7f,0x40,0x5f,0x51,0x5f,0x51,0x5f,0x48,0x7f,0x49,0x52,0x4e,0x51,0x7f,0x0,0x0,0xbc,0x24,0x24,0x28,0x28,0x30,0x28,0x24,0xe2,0x22,0x22,0x34,0x28,0xa0,0x20,
-+0x1,0xff,0x14,0x15,0x7f,0x55,0x55,0x55,0x7f,0x49,0x8,0x7f,0x8,0xf,0xf8,0x40,0x0,0xfc,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x1,0x7f,0x4,0x17,0x14,0xff,0x20,0x3f,0x20,0x3f,0x0,0xaa,0xaa,0x0,0x2,0x1,0x0,0xbc,0x24,0xa4,0x28,0xe8,0x30,0x28,0x24,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0x20,
-+0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0x7f,0x8,0x3e,0x8,0xf,0x78,0x20,0x0,0xfc,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x8,0x7f,0x22,0x14,0xff,0x0,0x7f,0x41,0x7f,0x41,0x7f,0x8,0xff,0x8,0x8,0x8,0x0,0x7c,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40,
-+0x3,0x7c,0x24,0x15,0x7f,0xc,0x15,0x24,0xff,0x24,0x24,0x3f,0x24,0x24,0x3f,0x20,0x80,0x3c,0xa4,0x24,0xe8,0x28,0x30,0xa8,0xe4,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0xa0,
-+0x11,0xa,0x7f,0x4,0x3f,0x4,0x7f,0x24,0x15,0xff,0x0,0x3f,0x20,0x20,0x3f,0x20,0x0,0x3c,0xe4,0x24,0xa8,0x28,0xf0,0xa8,0x24,0xe2,0x22,0xa2,0xb4,0xa8,0xa0,0xa0,
-+0xff,0x48,0x7b,0x4a,0x7a,0x49,0xfa,0x8,0x7f,0x14,0x25,0x4e,0x15,0x24,0xc4,0x4,0x80,0x3c,0xa4,0xa4,0xa8,0x28,0xb0,0x28,0x24,0xa2,0x22,0x22,0xb4,0xa8,0x20,0x20,
-+0x2,0x7f,0x8,0x7f,0x48,0xaa,0x8,0x2a,0x0,0x7f,0x55,0x55,0x55,0x55,0x7f,0x0,0x0,0x7c,0x44,0xc4,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,
-+0x2a,0x7f,0xaa,0xff,0xaa,0xff,0xaa,0xff,0x0,0xff,0x1,0x7f,0x41,0x7f,0x22,0xff,0x0,0x3c,0xa4,0xa4,0xa8,0xa8,0xb0,0xa8,0x24,0xa2,0x22,0xa2,0x34,0x28,0x20,0xa0,
-+0x8,0x8,0xf,0x10,0x10,0x20,0x5f,0x80,0x0,0x0,0x1f,0x0,0x0,0x0,0x3f,0x0,0x0,0x20,0xf0,0x20,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0xf,0x10,0x10,0x20,0x5f,0x11,0x11,0x11,0xff,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0xe0,0x20,0x40,0x90,0xf8,0x10,0x10,0x14,0xfe,0x0,0x80,0x60,0x1c,0x8,
-+0x0,0x1,0xff,0x10,0x10,0x12,0x1f,0x12,0x12,0x12,0x12,0x22,0x22,0x4a,0x84,0x1,0x20,0x20,0xa0,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x20,0x22,0x3f,0x42,0x42,0x8a,0x7e,0x4a,0x4a,0x4a,0x4a,0x7a,0x42,0xa,0x4,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x2,0xff,0x22,0x22,0x22,0x2a,0x44,0x80,0x7e,0x42,0x42,0x42,0x42,0x7e,0x42,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x10,0x9,0xff,0x10,0x12,0x22,0x24,0x7c,0x8,0xa,0x12,0x24,0x4c,0x92,0x20,0x1,0x20,0x20,0xa0,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x8,0x8,0x7f,0x9,0x11,0x15,0x62,0x0,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x7c,0x0,0xfe,0x10,0x90,0x90,0x90,0x90,0x50,0x20,
-+0x0,0x7f,0x2,0x4,0x7e,0x4,0x14,0x8,0x7f,0x55,0x55,0x55,0x55,0xff,0x0,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x1,0xff,0x81,0xbd,0x81,0xbd,0x0,0x7e,0x42,0x7e,0x42,0x7e,0x42,0x7e,0x42,0x1,0x20,0xa0,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10,
-+0x10,0x12,0x7f,0x12,0x12,0x2a,0x44,0x0,0x44,0xff,0x55,0x55,0x55,0x55,0x99,0x33,0x0,0xfe,0x92,0x92,0xfe,0x92,0x92,0xfe,0x82,0x20,0x10,0x50,0xc2,0xc6,0x44,0x3c,
-+0x5,0x39,0x21,0x21,0x3d,0x21,0x21,0x3f,0x1,0x7f,0x8,0x6,0x1,0x6,0x18,0xe0,0x8,0x7c,0x8,0x8,0x78,0x8,0x8,0xf8,0x0,0xf0,0x20,0xc0,0x0,0xc0,0x30,0xe,
-+0x21,0x2f,0x20,0xaf,0x70,0x2f,0x20,0x27,0x54,0x87,0x0,0x1f,0x4,0x3,0xc,0x70,0x8,0xe8,0x8,0xea,0x1c,0xe8,0x8,0xc8,0x54,0xc2,0x0,0xe0,0x40,0x80,0x60,0x1c,
-+0x3e,0x32,0x2a,0x26,0x3e,0x8,0x1f,0x28,0x4f,0x8,0x8,0x1f,0x4,0x3,0x1c,0xe0,0xf8,0xc8,0xa8,0x98,0xf8,0x80,0xf8,0x80,0xf0,0x84,0x7c,0xe0,0x40,0x80,0x70,0xe,
-+0x0,0x0,0xf8,0x8,0x10,0x20,0x40,0x78,0x8,0x88,0x50,0x30,0x20,0x50,0x88,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0xfc,
-+0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x1,0x1,0x1,0x41,0x41,0x5f,0x43,0x45,0x45,0x49,0x51,0x61,0x45,0x42,0x7f,0x0,0x0,0x0,0x0,0x14,0x34,0x44,0x84,0x44,0x44,0x24,0x24,0x1c,0x4,0x4,0xfc,0x4,
-+0x9,0x4,0x22,0x29,0x22,0x24,0x29,0x20,0x3f,0x28,0x8,0x9,0xe,0x8,0x7,0x0,0x20,0x40,0x88,0x28,0x88,0x48,0x28,0x8,0xf8,0x8,0x60,0x80,0x0,0x4,0xfc,0x0,
-+0x0,0x0,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x8,0xfc,0x4,0x0,
-+0x1,0x1,0x2,0x4,0x1f,0x0,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x20,0xf0,0x10,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x4,0x8,0x1f,0x2,0xff,0x4,0x8,0x3f,0xd1,0x11,0x1f,0x11,0x11,0x1f,0x10,0x0,0x40,0x20,0xf0,0x4,0xfe,0x40,0x20,0xf8,0x16,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x0,0xfb,0x8,0x10,0x2d,0xc3,0x8,0x7d,0x11,0x11,0x11,0x1d,0xf2,0x44,0x8,0x80,0x44,0xfe,0x80,0x80,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x0,
-+0x1,0x4,0x4,0x8,0x10,0x2f,0xc4,0x4,0x8,0x31,0x1,0x3f,0x1,0x1,0xff,0x0,0x80,0x80,0x40,0x20,0x10,0xee,0x24,0x20,0xa0,0x40,0x10,0xf8,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x2,0x22,0x1a,0xa,0x2,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x80,0x88,0x98,0xa0,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,
-+0x9,0x9,0x9,0x11,0x1f,0x30,0x50,0x90,0x11,0x17,0x1,0x3f,0x1,0x1,0xff,0x0,0x20,0x10,0x0,0xfc,0x0,0x90,0xa0,0x44,0xa4,0x1c,0x0,0xf8,0x0,0x4,0xfe,0x0,
-+0x8,0xff,0x0,0x3e,0x22,0x3e,0x0,0x7e,0x4,0x7e,0x9,0x19,0x7f,0x1,0x1,0xff,0x20,0xa0,0x28,0xfc,0x28,0x68,0x28,0x58,0x48,0x8a,0x6,0x10,0xfc,0x0,0x4,0xfe,
-+0x8,0xff,0x8,0x7f,0x49,0x7f,0x49,0x7f,0x8,0xff,0x49,0x7f,0x1,0x3f,0x1,0xff,0x8,0x7c,0x48,0x48,0x86,0x7c,0x44,0x44,0x28,0x90,0x28,0xc6,0x0,0xf8,0x0,0xfe,
-+0x1,0xff,0x10,0x14,0x25,0x7a,0x10,0x24,0x7c,0x8,0x11,0x61,0x3f,0x1,0x1,0xff,0x0,0xfe,0x90,0xfe,0x90,0xfc,0x90,0xfc,0x90,0xfe,0x80,0x10,0xf8,0x0,0x4,0xfe,
-+0x8,0xf,0x48,0x7f,0x40,0xbf,0x8,0x55,0x3e,0xe3,0x22,0x3e,0x1,0x3f,0x1,0xff,0x0,0x0,0x7c,0x84,0xc4,0x28,0x28,0x10,0x28,0xa8,0x46,0x0,0x10,0xf8,0x0,0xfe,
-+0x10,0x10,0x11,0x10,0x14,0xfe,0x10,0x13,0x10,0x10,0x1e,0xf0,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x11,0x10,0x14,0xfe,0x13,0x10,0x10,0x11,0x1e,0xf0,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x88,0xfc,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x10,0x10,0x10,0x10,0x15,0xfe,0x11,0x10,0x10,0x10,0x1e,0xf1,0x41,0x1,0x0,0x0,0x80,0x80,0x84,0xfe,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x11,0x11,0x15,0xff,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x0,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,
-+0x10,0x10,0x10,0x13,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x44,0x4,0x8,0x10,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x13,0x10,0x14,0xfe,0x10,0x13,0x12,0x12,0x1e,0xf2,0x42,0x2,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x13,0x12,0x12,0xfe,0x12,0x13,0x12,0x12,0x1e,0xf2,0x42,0x2,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x13,0x12,0x12,0xfe,0x13,0x12,0x12,0x12,0x1e,0xf2,0x44,0x4,0x9,0x12,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x10,0x10,0x11,0x11,0x15,0xff,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x8,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf2,0x42,0x4,0x9,0x12,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x88,0x48,0x50,0x30,0x20,0x50,0x88,0xe,0x4,
-+0x11,0x11,0x11,0x11,0x17,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x1,0x1,0x1,0x8,0x8,0x8,0xa,0xfe,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0x17,0xfc,0x10,0x10,0x10,0x11,0x1d,0xf1,0x42,0x2,0x4,0x8,0x80,0xa0,0x90,0x94,0xfe,0xa0,0xa0,0xa4,0xa4,0x28,0x28,0x30,0x62,0xa2,0x1e,0x0,
-+0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x13,0x12,0x12,0x1e,0xf2,0x42,0x3,0x2,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0x10,0xff,0x12,0x12,0x12,0x13,0x1e,0xf2,0x44,0x4,0x8,0x10,0x40,0x44,0x7e,0x40,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x0,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x50,0x30,0x18,0x14,0x10,0x10,0x10,
-+0x10,0x10,0x13,0x12,0x12,0xfe,0x13,0x12,0x12,0x12,0x1e,0xf2,0x42,0x3,0x6,0x0,0x8,0x3c,0xe0,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x10,0x90,0x52,0x2a,0x6,
-+0x10,0x10,0x10,0x13,0x12,0xfc,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x1,0x0,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0x10,0x30,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x1e,0xf2,0x44,0x4,0x8,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x80,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e,0x0,
-+0x10,0x11,0x11,0x11,0x11,0xfd,0x11,0x17,0x12,0x12,0x1e,0xf2,0x43,0x0,0x0,0x0,0x8,0xfc,0x8,0x48,0x28,0x28,0xa,0xfe,0x8,0x88,0x48,0x48,0xfc,0x8,0x50,0x20,
-+0x10,0x11,0x11,0x12,0x12,0xfc,0x17,0x11,0x12,0x14,0x17,0x1c,0xf0,0x40,0x0,0x1,0x20,0x20,0x20,0x24,0x7e,0xa4,0xa4,0x24,0x24,0xa4,0xa4,0x24,0x44,0x44,0x94,0x8,
-+0x10,0x17,0x10,0x10,0x10,0xfc,0x14,0x12,0x12,0x12,0x1c,0xf0,0x40,0x0,0xf,0x0,0x8,0xfc,0xa0,0xa0,0xa0,0xa4,0xa4,0xa4,0xa8,0xa8,0xa0,0xa0,0xa0,0xa4,0xfe,0x0,
-+0x10,0x17,0x10,0x10,0x11,0xfd,0x13,0x10,0x10,0x10,0x13,0x1c,0xf0,0x40,0xf,0x0,0x8,0xfc,0x80,0x80,0x10,0x8,0xfc,0x0,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x42,0x2,0x2,0x2,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x14,0x14,0x17,0xfc,0x10,0x13,0x10,0x10,0x13,0x1e,0xf2,0x42,0x2,0x1,0x40,0x40,0x44,0x44,0xfc,0x4,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,
-+0x20,0x20,0x2f,0x21,0x22,0xfa,0x24,0x2f,0x21,0x29,0x25,0x3a,0xe2,0x5,0x8,0x10,0x4,0xc,0x70,0x10,0x10,0x50,0x5c,0x50,0x50,0x50,0x50,0x50,0x7c,0x0,0x86,0x7c,
-+0x10,0x10,0x10,0x13,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x42,0x2,0x2,0x2,0x40,0x40,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x20,0x20,0x20,0x2f,0x20,0xf8,0x25,0x24,0x24,0x24,0x24,0x3c,0xe5,0x44,0x7,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0x14,0xa4,0xa4,0x44,0xa4,0x94,0x14,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x17,0x10,0xfc,0x11,0x13,0x11,0x10,0x1c,0xf1,0x46,0x0,0x3,0xc,0x80,0x40,0x44,0xfe,0x80,0x90,0x10,0xe0,0x28,0x48,0x90,0x10,0x20,0xd8,0x6,0x2,
-+0x10,0x13,0x12,0x12,0x13,0xfe,0x12,0x13,0x12,0x12,0x1e,0xf2,0x42,0x2,0x3,0x2,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x88,0x50,0x20,0x10,0x8e,0x4,0x0,
-+0x10,0x11,0x11,0x11,0x11,0xfd,0x11,0x10,0x13,0x10,0x10,0x1d,0xf0,0x40,0x7,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x20,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x27,0x24,0x24,0xfc,0x24,0x27,0x24,0x24,0x24,0x3c,0xe7,0x44,0x0,0x0,0x8,0x88,0xc8,0x88,0x8a,0xfe,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0x28,0x10,
-+0x10,0x11,0x11,0x11,0x11,0xfd,0x10,0x13,0x12,0x12,0x1e,0xf2,0x43,0x2,0x2,0x2,0x8,0xfc,0x8,0x8,0xf8,0x48,0x44,0xfe,0x44,0x44,0x44,0xb4,0x14,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x11,0x11,0xfc,0x13,0x12,0x12,0x12,0x1e,0xf2,0x42,0x0,0x3,0xc,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x24,0x24,0x24,0x44,0x44,0x98,0x4,0x2,
-+0x10,0x10,0x17,0x10,0x12,0xfd,0x10,0x10,0x17,0x11,0x10,0x1c,0xf0,0x40,0x0,0x0,0x8,0x3c,0xc0,0x44,0x24,0x28,0x10,0x14,0xfe,0x10,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x13,0x12,0x14,0xfd,0x10,0x10,0x17,0x10,0x1c,0xf0,0x41,0x1,0x2,0xc,0x80,0x40,0xfe,0x2,0x24,0xf0,0x0,0x4,0xfe,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x17,0x10,0x10,0xff,0x12,0x13,0x12,0x13,0x1e,0xf3,0x42,0x2,0xf,0x0,0x40,0x48,0xfc,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xa,0xfe,0x0,
-+0x10,0x10,0x10,0x17,0x11,0xfd,0x13,0x16,0x1a,0x13,0x1e,0xf2,0x43,0x2,0x0,0x0,0x80,0x80,0x84,0xfe,0x10,0x50,0xf8,0x4e,0x48,0xf8,0x48,0x48,0xf8,0x4a,0x42,0x3e,
-+0x10,0x13,0x12,0x13,0x12,0xff,0x11,0x11,0x13,0x14,0x10,0x1d,0xf1,0x42,0x4,0x1,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0xa4,0xa4,0x24,0x44,0x44,0x94,0x8,
-+0x10,0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x13,0x10,0x1d,0xf7,0x40,0x0,0x0,0x0,0x40,0x84,0xfe,0x24,0x24,0xfc,0x44,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x10,0x11,0xfe,0x14,0x13,0x10,0x10,0x1c,0xf0,0x45,0x5,0x9,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0xf8,0x10,0x20,0x80,0x40,0x44,0x12,0x12,0xf0,
-+0x20,0x27,0x24,0x24,0x24,0xff,0x24,0x24,0x24,0x27,0x3c,0xe4,0x44,0x8,0x9,0x10,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0xd4,0x88,
-+0x10,0x10,0x10,0x11,0x12,0xff,0x12,0x12,0x12,0x13,0x1e,0xf0,0x40,0x1,0x6,0x18,0x80,0x80,0xf8,0x10,0x24,0xfe,0x24,0x24,0x44,0xfc,0x44,0xa0,0xb0,0x2a,0x22,0x1e,
-+0x20,0x23,0x20,0x21,0x28,0xfb,0x20,0x27,0x24,0x2b,0x3a,0xe2,0x42,0x2,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x42,0xfc,0x48,0x48,0x48,0x58,0x40,0x40,
-+0x10,0x10,0x13,0x10,0x10,0xff,0x10,0x10,0x13,0x10,0x1e,0xf1,0x42,0xc,0x1,0x0,0x40,0x48,0xfc,0x48,0x4a,0xfe,0x48,0x48,0xf8,0x40,0x48,0x50,0x50,0x4e,0x44,0x80,
-+0x10,0x13,0x12,0x12,0x13,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf3,0x45,0x5,0x9,0x10,0x4,0xfe,0x4,0x4,0xfc,0x20,0xa8,0xa8,0xa8,0xf8,0x20,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x12,0x12,0x17,0x12,0xfe,0x12,0x12,0x13,0x10,0x1f,0xf0,0x41,0x2,0xc,0x0,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x10,0x17,0x10,0x10,0x17,0xfc,0x14,0x14,0x17,0x10,0x1c,0xf7,0x40,0x0,0xf,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0x12,0xff,0x12,0x10,0x17,0x10,0x1c,0xf0,0x41,0x1,0x2,0xc,0x4,0xfe,0x94,0x94,0x94,0xfc,0x44,0x20,0xfe,0x80,0xf8,0x88,0x8,0x8,0x28,0x10,
-+0x11,0x11,0x11,0x12,0x13,0xfe,0x16,0x1a,0x13,0x12,0x1f,0xf2,0x42,0x2,0x2,0x3,0x0,0x78,0x8,0x12,0xfe,0x0,0x88,0xfc,0x20,0x24,0xfe,0x20,0x20,0x50,0x8e,0x4,
-+0x10,0x17,0x10,0x13,0x12,0xfe,0x13,0x10,0x17,0x15,0x1c,0xf5,0x44,0x4,0x4,0x4,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xf4,0x44,0x44,0x54,0x8,
-+0x10,0x13,0x12,0x12,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x44,0x5,0xa,0x0,0x4,0xfe,0x20,0x44,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x20,0xa8,0x26,0x22,0x60,
-+0x13,0x12,0x13,0x12,0x13,0xfc,0x17,0x14,0x14,0x17,0x1c,0xf3,0x41,0x0,0x3,0xc,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xf8,0x10,0xe0,0x18,0x6,
-+0x20,0x27,0x24,0x25,0x24,0xff,0x24,0x25,0x24,0x25,0x3d,0xe5,0x49,0x9,0x11,0x1,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c,
-+0x24,0x22,0x28,0x24,0x21,0xfc,0x24,0x29,0x20,0x2f,0x38,0xe0,0x41,0x2,0xc,0x0,0x8,0xfc,0x48,0xc8,0x48,0x88,0xa8,0x10,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x20,0x27,0x24,0x27,0x24,0xfd,0x24,0x25,0x24,0x25,0x3e,0xe4,0x47,0x8,0x10,0x0,0x4,0xfe,0x4,0xfc,0x20,0x24,0xa8,0x24,0xa0,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x8,0x7f,0x8,0x7f,0x49,0x7f,0x40,0x4f,0x81,0x3f,0x5,0xf,0x18,0x2f,0x8,0xf,0x78,0x48,0x4c,0x80,0x7c,0x28,0x10,0xee,0x0,0xf8,0x0,0xf0,0x1c,0xf0,0x10,0xf0,
-+0x8,0x7f,0x8,0xff,0x22,0x3e,0x14,0x7f,0x2,0x1f,0x11,0x1f,0x12,0xff,0x1,0x1,0x10,0x10,0xfe,0x10,0x7c,0x28,0x10,0x6e,0x0,0xf0,0x10,0xf0,0x14,0xfe,0x0,0x0,
-+0x10,0xfe,0x11,0x7c,0x0,0xfe,0x82,0x7c,0x1,0x7c,0x44,0x44,0x7d,0x29,0xfe,0x0,0x20,0x20,0x20,0xbe,0x42,0x14,0x50,0x98,0x26,0x42,0x20,0x10,0x54,0x42,0x4a,0x38,
-+0x4,0x4,0xff,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x6,0x2,0x2,0x7f,0x2,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x40,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x3f,0x4,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x40,0x44,0xfe,0x40,0x40,0xf0,0x10,0x20,0x48,0xfc,0x8,0x8,0x8,0x88,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x4,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x0,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x50,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x3f,0x8,0x8,0xc,0x12,0x12,0x11,0x20,0x20,0x43,0xc,0x40,0x44,0xfe,0x40,0x40,0xf0,0x20,0x40,0xf0,0x10,0x20,0x20,0xc0,0xb0,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x6,0x2,0x3f,0x2,0x1a,0x4,0x6,0x5,0x8,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x40,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x3f,0x0,0x0,0x1f,0x10,0x20,0x3f,0x0,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x50,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x4,0x3f,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x40,0x44,0xfe,0x40,0x50,0xf8,0x10,0x10,0xf0,0x10,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x2,0x4,0x1f,0x0,0x3,0xc,0x3f,0x0,0x0,0x1,0xe,0x70,0x40,0x44,0xfe,0x40,0x0,0x20,0xc0,0x80,0x20,0x20,0xc0,0x40,0x80,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x5,0x1,0x3f,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x40,0x10,0xf8,0x0,0x4,0xfe,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0x0,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x0,0x3f,0x0,0x0,0xff,0x2,0x2,0x4,0x8,0x1f,0x0,0x40,0x44,0xfe,0x40,0x40,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0xf0,0x10,
-+0x4,0x4,0xff,0x4,0x1,0xff,0x1,0x1,0x1f,0x11,0x11,0x11,0x11,0x11,0x1,0x1,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x50,0x20,0x0,0x0,
-+0x4,0x4,0xff,0x5,0x1,0xff,0x1,0x1,0x3f,0x8,0x4,0x2,0x1,0x6,0x18,0xe0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x0,0xf0,0x20,0x40,0x80,0x0,0xc0,0x30,0xe,
-+0x4,0x4,0xff,0x4,0x4,0x3f,0x21,0x21,0x2f,0x21,0x21,0x22,0x42,0x44,0x88,0x10,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x4,0x1f,0x10,0x10,0x17,0x14,0x14,0x24,0x24,0x44,0x84,0x3,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x20,0xf0,0x20,0x20,0xa0,0x40,0x4,0x4,0xfc,
-+0x4,0x4,0xff,0x4,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x3f,0x0,0x40,0x44,0xfe,0x40,0xf8,0x0,0x20,0xf0,0x20,0x20,0xe0,0x20,0x0,0x8,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x26,0x38,0x20,0x0,0x40,0x44,0xfe,0x40,0x40,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x84,0x84,0x7c,0x0,
-+0x4,0x4,0xff,0x4,0x5,0x1,0x9,0x9,0x9,0x9,0x9,0x9,0x9,0x9,0xff,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x5,0x1,0x3f,0x21,0x21,0x22,0x22,0x24,0x28,0x20,0x20,0x20,0x40,0x44,0xfe,0x40,0x40,0x8,0xfc,0x8,0x8,0x88,0x48,0x68,0x28,0x8,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x0,0x1f,0x10,0x11,0x11,0x11,0x12,0x12,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0x10,0x90,0x90,0x90,0x80,0x84,0x84,0x7c,
-+0x4,0x4,0xff,0x4,0x8,0x8,0xb,0x8,0xff,0xa,0x9,0x8,0x8,0xa,0xc,0x8,0x40,0x44,0xfe,0x40,0x20,0xc0,0x0,0x4,0xfe,0x0,0x0,0x80,0x40,0x20,0x1c,0x8,
-+0x4,0x4,0xff,0x4,0x4,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x20,0x41,0x2,0x40,0x44,0xfe,0x40,0x40,0x20,0x20,0x20,0x20,0x50,0x50,0x50,0x88,0x88,0x4,0x2,
-+0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x33,0xc0,0x0,0x1f,0x0,0x0,0x0,0x0,0x1,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xe,0x84,0x20,0xf0,0x20,0x40,0x40,0x80,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x8,0xf,0x12,0x22,0x44,0x4,0x8,0x11,0x22,0x4,0x0,0x40,0x44,0xfe,0x40,0x0,0x8,0xfc,0x48,0x48,0x48,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x4,0x4,0xff,0x4,0xc,0x8,0xf,0x11,0x11,0x21,0x2,0x2,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x40,0x0,0xf8,0x10,0x20,0x0,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0xf8,0x80,0x80,0x80,0x88,0xfc,0x80,0x40,0x40,0x22,0x12,0xe,
-+0x4,0x4,0xff,0x4,0x0,0x7,0x4,0x8,0x30,0xf,0x4,0x2,0x1,0x2,0xc,0x70,0x40,0x44,0xfe,0x40,0x0,0xc0,0x48,0x7c,0x0,0xe0,0x40,0x80,0x0,0x80,0x60,0x1c,
-+0x4,0x4,0xff,0x4,0x6,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x40,0x4,0xfe,0x0,0x0,0x40,0x30,0x10,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x6,0x41,0x7f,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x2,0xc,0x8,0xf,0xf8,0x48,0x8,0x8,0x28,0x10,0x40,0x44,0xfe,0x40,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x24,0x22,0x21,0x21,0x20,0x20,0x24,0x28,0x30,0x1,0x6,0x40,0x44,0xfe,0x40,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x20,0x50,0x8c,0x4,0x0,
-+0x4,0x4,0xff,0x5,0x1,0xff,0x1,0x1,0x7f,0x3,0x5,0x9,0x31,0xc1,0x1,0x1,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x8,0xfc,0x80,0x40,0x30,0xe,0x4,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x8,0xff,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xf,0x8,0x40,0x44,0xfe,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0xe0,0x20,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x0,0x1,0x3,0x5,0x19,0x61,0x1,0x1,0xff,0x0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x80,0x0,0x0,0x60,0x18,0x4,0x0,0x4,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x11,0x26,0x40,0x40,0x44,0xfe,0x40,0x20,0x14,0xfe,0x80,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e,0x0,
-+0x4,0x4,0xff,0x4,0x2,0x2,0xff,0x4,0x4,0x7,0xa,0x9,0x10,0x21,0x46,0x18,0x40,0x44,0xfe,0x40,0x40,0x24,0xfe,0x0,0x0,0xf0,0x20,0x40,0x80,0x60,0x1c,0x8,
-+0x4,0x4,0xff,0x4,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0xff,0x4,0x0,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x0,0x40,0x44,0xfe,0x40,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x1,0x1f,0x11,0x11,0x1f,0x11,0x11,0xff,0x10,0x10,0x10,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x14,0xfe,0x10,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x20,0x27,0x24,0x24,0x24,0x27,0x24,0x20,0x20,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x48,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x1f,0x30,0x50,0x90,0x10,0x10,0x17,0x10,0x10,0x20,0x24,0xfe,0x20,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x17,0x30,0x51,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x44,0xfe,0x40,0x10,0x10,0x14,0xfe,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x5,0x2,0x4,0xa,0x31,0xc1,0x3f,0x0,0x0,0xc,0x3,0x0,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xe,0x4,0xf0,0x20,0x40,0x80,0x0,0xc0,0x40,
-+0x4,0x4,0xff,0x5,0x2,0xf,0x8,0xa,0x9,0x8,0xf,0x0,0xff,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x20,0xf0,0x20,0x20,0x60,0x8,0xfc,0x8,0xc8,0x8,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x6,0x38,0x20,0x20,0x3e,0x20,0x20,0x26,0x38,0x20,0x0,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x80,0x80,
-+0x4,0x4,0xff,0x4,0x6,0x38,0x22,0x22,0x22,0x22,0x22,0x3c,0x24,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x8,0xfc,0x88,0x88,0x88,0x88,0xc8,0xa8,0x90,0x80,0x80,0x80,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x41,0x81,0x1,0x3f,0x1,0x1,0x1,0x1,0x7f,0x0,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x4,0x10,0xf8,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x40,0x9f,0x4,0x5,0x3f,0x4,0x4,0x4,0x4,0x4,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0xe4,0x20,0x20,0xa0,0x20,0x20,0x24,0x14,0x8,
-+0x4,0x4,0xff,0x4,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x28,0x30,0x20,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0xf8,0x80,0x88,0xfc,0x40,0x40,0x22,0x12,0xe,
-+0x4,0x4,0xff,0x4,0x3f,0x4,0x4,0x8,0x10,0x60,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0x8,0x50,0x20,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0xff,0x4,0x0,0xff,0x4,0x4,0x3f,0x24,0x24,0x28,0x30,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0x4,0xfe,0x40,0x48,0xfc,0x48,0x48,0x38,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x1,0xff,0x1,0x3f,0x1,0x3f,0x21,0x3f,0x2,0xc,0x30,0xc0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x84,0x4c,0x30,0xe,
-+0x4,0x4,0xff,0x4,0x1,0x1,0x7f,0x1,0x3,0x3c,0x0,0x7f,0x4,0x4,0x8,0x70,0x40,0x44,0xfe,0x40,0x0,0xf8,0x20,0x44,0x84,0x7c,0x10,0xf8,0x80,0x82,0x82,0x7e,
-+0x4,0x4,0xff,0x4,0x20,0x20,0x3e,0x20,0x26,0x39,0x1,0xff,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x80,0x98,0xe0,0x80,0x84,0x7c,0x0,0xfe,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x4,0x24,0x27,0x24,0x24,0x24,0x24,0x27,0xf8,0x40,0x0,0x40,0x44,0xfe,0x40,0x0,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x4,0x4,0xff,0x4,0x1f,0x10,0x10,0x10,0x1f,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x3f,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x27,0x20,0x20,0x20,0x40,0x44,0xfe,0x40,0xf8,0x8,0xe8,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x20,0x27,0x24,0x24,0x27,0x20,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0xc8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x11,0x11,0x1f,0x21,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x40,0x44,0xfe,0x40,0x0,0x20,0xf0,0x0,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x7d,0x4,0x8,0x13,0x3c,0x4,0x24,0x19,0xc,0x32,0xc1,0x40,0x44,0xfe,0x40,0x1c,0xe0,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x0,0x6,0xfc,
-+0x4,0x4,0xff,0x4,0x1,0x3e,0x2,0xff,0x4,0x8,0x34,0xc4,0x4,0x4,0x8,0x10,0x40,0x44,0xfe,0x40,0xf0,0x0,0x4,0xfe,0x40,0x30,0x4e,0x44,0x40,0x40,0x40,0x40,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x1f,0x30,0x50,0x90,0x10,0x11,0x12,0x14,0x18,0x40,0x44,0xfe,0x40,0x50,0x48,0x40,0xfe,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x17,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x17,0x10,0x40,0x44,0xfe,0x40,0x8,0x3c,0xc0,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x4,0x9,0x10,0x64,0xb,0x18,0x28,0xc8,0x8,0x8,0x8,0x8,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x30,0xdf,0x1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xe,0xf4,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,
-+0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x30,0xcf,0x0,0x3f,0x2,0x4,0x8,0x1f,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0x4e,0xe4,0x0,0xf8,0x0,0x40,0x20,0xf0,0x10,
-+0x4,0x4,0xff,0x14,0x10,0x3f,0x20,0x5f,0x90,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xa8,0x10,
-+0x4,0x4,0xff,0x4,0x2,0x7,0x8,0x14,0x23,0x4,0xf,0x38,0xc8,0x8,0xf,0x8,0x40,0x44,0xfe,0x40,0x0,0xf0,0x20,0xc0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x1,0x7f,0x8,0x6,0x1,0x2,0xc,0x34,0xc4,0x4,0x8,0x10,0x40,0x44,0xfe,0x40,0x8,0xfc,0x20,0xc0,0x0,0xc0,0x70,0x4e,0x44,0x40,0x40,0x40,
-+0x4,0x4,0xff,0x4,0x1,0x7f,0x8,0x8,0x14,0x24,0x42,0x1,0x2,0x4,0x18,0x60,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x10,0x4c,0x44,0x80,0x0,0x80,0x60,0x1c,0x8,
-+0x4,0x4,0xff,0x4,0x1,0xff,0x2,0x4,0x8,0x1f,0x4,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x40,0x20,0xf0,0x90,0x80,0x80,0x84,0x84,0x7c,
-+0x4,0x4,0xff,0x4,0x20,0x18,0xb,0x40,0x20,0x28,0x10,0x20,0x60,0x20,0x2f,0x20,0x40,0x44,0xfe,0x40,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x40,0x7f,0x41,0x89,0xf,0x11,0x21,0x7f,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x40,0x7f,0x41,0x41,0xbd,0x5,0x9,0x9,0x11,0x61,0x5,0x2,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x14,0x20,0xc0,0x40,0x20,0x20,0x1c,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x1f,0x0,0xf,0x0,0x1f,0x0,0xff,0x8,0x4,0x4,0x0,0x0,0x40,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x4,0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x14,0x12,0x11,0x10,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf8,0x10,0x20,0x40,0x80,0x60,0x1c,0x8,
-+0x4,0x4,0xff,0x4,0x1f,0x10,0x10,0x1f,0x10,0x12,0x11,0x20,0x20,0x43,0x80,0x0,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0xf0,0x40,0x20,0x90,0x8e,0x4,0x0,0xc0,0x20,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0xc,0x2,0x18,0x4,0xff,0x1,0x2,0xc,0x30,0x40,0x44,0xfe,0x40,0x0,0xf8,0x8,0x90,0x80,0x80,0x84,0xfe,0x0,0x60,0x18,0x4,
-+0x4,0x4,0xff,0x4,0x0,0x7e,0x4,0x8,0xe,0x38,0xc9,0x9,0xa,0x8,0x28,0x10,0x40,0x44,0xfe,0x40,0x20,0x20,0x20,0xa0,0xa8,0xa4,0x24,0x22,0x22,0x20,0xa0,0x40,
-+0x4,0x4,0xff,0x4,0x10,0x10,0x23,0x7c,0x8,0x10,0x26,0x78,0x20,0xe,0x73,0x20,0x40,0x44,0xfe,0x40,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x10,0x10,0x22,0x7d,0x8,0x10,0x26,0x78,0x0,0xe,0x70,0x20,0x40,0x44,0xfe,0x40,0x8,0x8,0x8,0xfe,0x8,0x88,0x48,0x48,0x8,0x8,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x10,0x10,0x10,0xfd,0x12,0x10,0x10,0x10,0x1c,0xe1,0x42,0x4,0x40,0x44,0xfe,0x40,0x80,0x84,0xfe,0x4,0x48,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x4,0x4,0xff,0x5,0x1,0x3f,0x1,0x7f,0x40,0x9f,0x0,0x1,0x7f,0x1,0x5,0x2,0x40,0x44,0xfe,0x40,0x10,0xf8,0x0,0xfe,0x2,0xe4,0x80,0x8,0xfc,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x7c,0x44,0x47,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x0,0x40,0x44,0xfe,0x40,0x10,0x10,0x14,0xfe,0x10,0x90,0x50,0x50,0x10,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x4,0xf,0x8,0x8,0xf,0x1,0x3f,0x21,0x21,0x22,0x2c,0x20,0x20,0x40,0x44,0xfe,0x40,0xe0,0x20,0x20,0xe0,0x8,0xfc,0x8,0x8,0xc8,0x48,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x1,0x3f,0x1,0x7f,0x5,0x9,0x3f,0xc4,0x4,0x4,0x8,0x30,0x40,0x44,0xfe,0x40,0xf0,0x0,0x4,0xfe,0x40,0x30,0xce,0x44,0xf0,0x10,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x6,0x3c,0x4,0xff,0x4,0x5,0x6,0x1c,0x64,0x4,0x15,0x8,0x40,0x44,0xfe,0x40,0x60,0x50,0x44,0xfe,0x40,0x48,0x48,0x30,0x20,0x52,0x8a,0x6,
-+0x4,0x4,0xff,0x14,0x10,0x1f,0x20,0x5f,0x12,0x11,0xff,0x22,0x21,0x3f,0x0,0x0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x0,0xf0,0x10,0x14,0xfe,0x10,0x10,0xfc,0x50,0x20,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x14,0x15,0x36,0x54,0x94,0x14,0x14,0x10,0x11,0x12,0x40,0x44,0xfe,0x40,0x80,0x84,0xfe,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x17,0x30,0x52,0x91,0x11,0x11,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x80,0x40,0x48,0xfc,0x0,0x18,0x10,0x10,0x20,0x24,0xfe,0x0,
-+0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x3f,0xc1,0x1,0x3f,0x1,0x9,0x11,0x25,0x2,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xee,0x4,0x10,0xf8,0x0,0x20,0x18,0x8,0x0,
-+0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x3f,0xc0,0x2,0x11,0x9,0x9,0x0,0x7f,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xee,0x4,0x10,0x10,0x20,0x20,0x48,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x7f,0x11,0x9,0x3f,0x0,0x1,0x1,0xff,0x1,0x5,0x2,0x40,0x44,0xfe,0x40,0xf8,0x10,0x10,0x20,0xf0,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x11,0x9,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x40,0x44,0xfe,0x40,0xf8,0x10,0x10,0x20,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x4,0x4,0xff,0x4,0x20,0x14,0xb,0x14,0x64,0xc,0x14,0x24,0xc5,0x5,0x2a,0x14,0x40,0x44,0xfe,0x40,0x50,0x48,0xfe,0x40,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x4,0x4,0xff,0x4,0x20,0x14,0x8,0x14,0x64,0xd,0x14,0x24,0xc4,0x4,0x29,0x12,0x40,0x44,0xfe,0x40,0x20,0x20,0xa4,0xa4,0xa8,0x20,0x50,0x50,0x90,0x88,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x1,0x3f,0x8,0x4,0x4,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x10,0xf8,0x20,0x40,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x1,0x7f,0x40,0x9f,0x0,0x7f,0x4,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0xf4,0x0,0xfc,0x80,0x80,0x80,0x84,0x84,0x7c,
-+0x4,0x4,0xff,0x4,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x12,0x11,0x10,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x20,0xc0,0x60,0x1e,0x4,
-+0x4,0x4,0xff,0x4,0x7f,0x42,0x8f,0x8,0xb,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x40,0x44,0xfe,0x40,0xfe,0x2,0xe4,0x20,0x20,0xa0,0x48,0xfc,0x8,0xc8,0x28,0x10,
-+0x4,0x4,0xff,0x4,0x10,0x17,0x20,0x7e,0xa,0x12,0x23,0x7c,0x0,0xe,0x70,0x20,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,
-+0x4,0xff,0x5,0x3f,0x1,0x1f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x40,0xfe,0x40,0xf8,0x0,0xf0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x4,0x4,0xff,0x4,0x8,0x7f,0x8,0xf,0x8,0xf,0x8,0x8,0xff,0x4,0x8,0x30,0x40,0x44,0xfe,0x40,0x28,0xfc,0x20,0xe0,0x20,0xe0,0x20,0x24,0xfe,0x40,0x30,0x8,
-+0x4,0x4,0xff,0x4,0x8,0x8,0xfe,0x8,0x1c,0x1a,0x28,0x48,0x89,0x9,0xa,0x8,0x40,0x44,0xfe,0x40,0x1c,0xe0,0x80,0x84,0xfe,0x90,0x90,0x90,0x10,0x10,0x10,0x10,
-+0x4,0x4,0x7f,0x4,0x8,0xa,0x7f,0x8,0x1c,0x1a,0x29,0x48,0x88,0x8,0x9,0x8,0x40,0x44,0xfe,0x40,0x0,0x50,0x50,0x50,0x88,0xae,0x24,0x40,0x50,0x88,0xfc,0x4,
-+0x8,0x8,0xff,0x8,0xf,0x1,0x3f,0x21,0x3f,0x1,0x7f,0x1,0x3f,0x1,0xff,0x0,0x20,0x24,0xfe,0x20,0xe0,0x8,0xfc,0x8,0xf8,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x0,
-+0x4,0x4,0xff,0x5,0x1,0x7f,0x2,0x4,0xf,0x30,0xdf,0x1,0x9,0x11,0x25,0x2,0x40,0x44,0xfe,0x40,0x8,0xfc,0x80,0x40,0xf0,0xe,0xf4,0x0,0x20,0x18,0x8,0x0,
-+0x4,0xff,0x5,0x7f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x2,0xff,0x4,0x8,0x7,0x38,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x4,0xfe,0x40,0x80,0x80,0x78,
-+0x4,0x4,0xff,0x4,0x10,0x10,0xff,0x11,0x11,0x1d,0xf2,0x52,0x14,0x18,0x50,0x23,0x40,0x44,0xfe,0x40,0x90,0x88,0xfe,0x0,0xf8,0x88,0x90,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x4,0xff,0x4,0x8,0xf,0x8,0xa,0xff,0x8,0x2c,0x2b,0x49,0x88,0x28,0x11,0x40,0x44,0xfe,0x40,0x0,0x7c,0x4,0x44,0x44,0x28,0x28,0x10,0x28,0x48,0x86,0x4,
-+0x4,0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x10,0x10,0x7c,0x54,0x54,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x40,0x44,0xfe,0x40,0x20,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x4,0xff,0x4,0xd,0x31,0x21,0x21,0x3d,0x21,0x21,0x3f,0x2,0x4,0x18,0x60,0x40,0x44,0xfe,0x40,0x8,0x7c,0x8,0x8,0x78,0x8,0x8,0xf8,0x80,0x60,0x1c,0x8,
-+0x4,0xff,0x4,0x9,0x8,0x1f,0x10,0x30,0x5f,0x90,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0xfe,0x40,0x0,0x88,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x88,0xfc,0x0,
-+0x4,0x4,0xff,0x5,0x2,0x3f,0x21,0x3f,0x22,0x3f,0x5,0x9,0xff,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x3d,0x25,0x25,0x3d,0x25,0x25,0x3d,0x25,0x25,0x45,0x55,0x89,0x40,0x44,0xfe,0x40,0xf8,0x8,0x48,0x30,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x4,0xff,0x4,0xf,0x8,0x10,0x3f,0x51,0x11,0x1f,0x12,0x2,0x4,0x18,0x60,0x40,0x44,0xfe,0x40,0xe0,0x20,0x48,0xfc,0x8,0x8,0xf8,0x80,0xa0,0x94,0x84,0x7c,
-+0x4,0x4,0xff,0x4,0x8,0xf,0x10,0x26,0x78,0xa0,0x24,0x3e,0x20,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0x0,0xf0,0x20,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0x4,0xff,0x4,0x1,0x7f,0x8,0x8,0x14,0x22,0x1,0xff,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x8,0xfc,0x20,0x20,0x50,0x88,0x0,0xfe,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x10,0x8,0xff,0x10,0x1e,0x13,0x12,0x22,0x22,0x42,0x8a,0x4,0x40,0x44,0xfe,0x40,0x20,0x20,0x50,0x50,0x8e,0x4,0x60,0x10,0x0,0xc0,0x30,0x8,
-+0x4,0x4,0xff,0x4,0x40,0x33,0x12,0x82,0x4b,0x12,0x22,0xe3,0x22,0x22,0x3f,0x20,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0,
-+0x4,0xff,0x4,0x41,0x7f,0x40,0x80,0x7f,0x4,0x4,0xf,0x18,0x28,0x48,0xf,0x8,0x40,0xfe,0x40,0x0,0xfe,0x2,0x4,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0xff,0x4,0x41,0x7f,0x40,0x8f,0x8,0x8,0xf,0x8,0xf,0x8,0x8,0xf,0x8,0x40,0xfe,0x40,0x0,0xfe,0x2,0xe4,0x20,0x20,0xe0,0x0,0xf0,0x10,0x10,0xf0,0x0,
-+0x4,0x4,0xff,0x4,0x41,0x7f,0x50,0x9e,0x12,0x22,0x52,0xc,0x4,0x8,0x30,0x40,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0xfc,0x88,0x88,0x88,0xa8,0x92,0x82,0x7e,0x0,
-+0x4,0x4,0xff,0x4,0x40,0x7f,0x42,0x84,0x1f,0x1,0x2,0x1f,0x9,0x9,0x31,0x3,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x24,0xc0,0x0,0x20,0xf0,0x20,0x18,0x8,0x0,
-+0x4,0x4,0xff,0x4,0x7c,0x9,0x11,0x11,0x15,0x39,0xd2,0x12,0x12,0x14,0x58,0x20,0x40,0x44,0xfe,0x40,0x1c,0xe0,0x50,0x50,0x50,0x50,0x50,0x48,0x48,0x54,0xf6,0x0,
-+0x4,0x4,0xff,0x4,0x1f,0x0,0x40,0x51,0x49,0x45,0x45,0x49,0x53,0x41,0x7f,0x40,0x40,0x44,0xfe,0x40,0xe0,0x20,0x44,0x94,0x24,0x44,0x44,0x34,0x14,0x4,0xfc,0x4,
-+0x4,0xff,0x4,0x8,0x7e,0x8,0x3e,0x8,0x7e,0x9,0x1,0xff,0x2,0x4,0x18,0x60,0x40,0xfe,0x40,0x8,0xfc,0x48,0x48,0x48,0xa8,0x10,0x4,0xfe,0x80,0x40,0x30,0xc,
-+0x4,0x4,0xff,0x4,0x8,0x7f,0x8,0x8,0x7f,0x0,0x8,0x7f,0x8,0xf,0x78,0x20,0x40,0x44,0xfe,0x40,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10,
-+0x4,0xff,0x4,0x8,0x3f,0x8,0xf,0x8,0xf,0x8,0xff,0x12,0x14,0x10,0x1f,0x0,0x40,0xfe,0x40,0x20,0xf8,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x80,0x40,0x10,0xf8,0x0,
-+0x4,0x4,0xff,0x4,0x8,0x8,0x7e,0x8,0x18,0x1c,0x2a,0x28,0x48,0x88,0x8,0x8,0x40,0x44,0xfe,0x40,0x4,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x3f,0x24,0x3f,0x25,0x29,0x2a,0x44,0x5b,0x80,0x40,0x44,0xfe,0x50,0x48,0xfc,0x40,0xc8,0x48,0xd0,0x20,0x20,0x60,0xa2,0x12,0xe,
-+0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x2f,0x28,0x2a,0x2a,0x2a,0x2a,0x45,0x44,0x98,0x40,0x44,0xfe,0x50,0x28,0xfc,0x20,0xa0,0xa4,0xa4,0xa8,0xa8,0x90,0x32,0xca,0x86,
-+0x4,0x4,0xff,0x4,0x20,0x3e,0x20,0x2e,0x72,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x80,0x98,0xe0,0x84,0x7c,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x4,0xff,0x4,0xf,0x8,0xf,0x0,0xff,0x8,0xf,0x8,0xf,0x8,0x7f,0x0,0x0,0x44,0xfe,0x40,0xe0,0x20,0xe0,0x4,0xfe,0x20,0xe0,0x20,0xe0,0x28,0xfc,0x20,0x20,
-+0x4,0xff,0x5,0x1f,0x11,0x1f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x12,0xc,0x30,0x40,0xfe,0x40,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x90,0x60,0x1c,
-+0x4,0x4,0xff,0x4,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x2,0x29,0x29,0x48,0x7,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x8,0x24,0x24,0xe0,
-+0x4,0xff,0x4,0x3e,0x22,0x3e,0x0,0x1f,0x0,0xff,0x8,0xf,0x0,0x0,0x0,0x0,0x40,0xfe,0x40,0xf8,0x88,0xf8,0x0,0xf0,0x4,0xfe,0x0,0xf0,0x10,0x10,0xa0,0x40,
-+0x4,0x4,0xff,0x4,0xb,0xa,0x12,0x13,0x30,0x5f,0x90,0x10,0x11,0x12,0x14,0x10,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0xf8,0x40,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x4,0x4,0xff,0x14,0x20,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x7d,0x44,0x0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0xfe,0x0,
-+0x4,0xff,0x5,0x7f,0x0,0x1f,0x10,0x1f,0x40,0x7f,0x40,0x9f,0x1,0x1,0x5,0x2,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x0,0x0,0x0,0x0,
-+0x4,0x4,0xff,0x4,0x11,0x9,0x7f,0x5,0x39,0x2,0xff,0x4,0xc,0x3,0x6,0x38,0x40,0x44,0xfe,0x40,0x10,0x20,0xfc,0x40,0x38,0x0,0xfe,0x40,0x40,0x80,0x60,0x18,
-+0x4,0x4,0xff,0x4,0x20,0x1b,0x4a,0x22,0xa,0x12,0x22,0x64,0x24,0x24,0x28,0x30,0x40,0x44,0xfe,0x40,0x1c,0xe0,0xc,0xf0,0xa4,0xa8,0x90,0x90,0x90,0xa8,0xce,0x84,
-+0x4,0xff,0x4,0x41,0x7f,0x40,0x9f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x0,0x40,0xfe,0x40,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,
-+0x4,0x4,0xff,0x4,0x7e,0x42,0x42,0x7e,0x40,0x49,0x7c,0x40,0x44,0x7e,0x41,0x46,0x40,0x44,0xfe,0x40,0xfc,0x4,0x4,0xfc,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0xff,0x5,0x7f,0x1,0x1f,0x2,0xff,0x4,0xf,0x31,0xdf,0x5,0x9,0x31,0x1,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x4,0xfe,0x40,0xf0,0xe,0xf4,0x40,0x30,0x8,0x0,
-+0x4,0xff,0x5,0x3f,0x1,0xff,0x1,0x7,0x1c,0x67,0x0,0xf,0x8,0xf,0x8,0xf,0x40,0xfe,0x40,0xd0,0x24,0xfe,0x0,0xe8,0x8,0xf8,0x0,0xe0,0x20,0xe0,0x20,0xe0,
-+0x4,0xff,0x4,0x3f,0x20,0x2f,0x20,0x3f,0x29,0x2a,0x2c,0x20,0x5f,0x44,0x82,0x0,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x4,0xfe,0x10,0xe0,0x1e,0x20,0xfc,0x20,0x20,0x60,
-+0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0xff,0x8,0x3f,0xc0,0x8,0xf,0x0,0x3f,0x0,0x40,0xfe,0x40,0xf0,0x10,0xf0,0x14,0xfe,0x20,0xf8,0x26,0x20,0xf8,0x8,0xc8,0x30,
-+0x4,0x4,0xff,0x4,0x1f,0x11,0x11,0x1f,0x11,0x12,0x14,0x1f,0x29,0x28,0x48,0x7,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0xf0,0x10,0x90,0x50,0xf0,0x8,0x84,0x24,0xe0,
-+0x4,0x4,0xff,0x4,0x8,0xf,0x10,0x11,0x30,0x5f,0x90,0x13,0x12,0x12,0x13,0x12,0x40,0x44,0xfe,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0xff,0x4,0x5,0xa,0x14,0xef,0x0,0x7e,0x2,0x12,0x6,0x1a,0x63,0xa,0x4,0x40,0xfe,0x40,0x40,0x20,0x50,0xee,0x4,0xf8,0x8,0x48,0x18,0x68,0x88,0x28,0x10,
-+0x4,0xff,0x5,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x40,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x10,0xf0,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x14,0x8,
-+0x4,0x4,0x7f,0x5,0x1f,0x92,0x52,0x13,0x34,0x50,0x9f,0x10,0x20,0x21,0x42,0xc,0x40,0x44,0xfe,0x40,0xfc,0x0,0x10,0xf8,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xe,0x4,
-+0x4,0xff,0x4,0x1,0xff,0x14,0x13,0x14,0x1f,0x1,0x7f,0x42,0x44,0x4f,0x40,0x40,0x40,0xfe,0x40,0x4,0xfe,0x50,0x90,0x50,0xf0,0x4,0xfe,0x4,0x24,0xf4,0x14,0x8,
-+0x4,0xff,0x4,0x1,0x3f,0x4,0x7f,0x42,0x81,0x3f,0x4,0x7,0x8,0x8,0x10,0x60,0x40,0xfe,0x40,0x10,0xf8,0x40,0xfe,0x2,0x14,0xf8,0x0,0xe0,0x20,0x20,0xa0,0x40,
-+0x4,0xff,0x14,0x8,0x7f,0x4,0x3f,0x4,0xff,0x4,0x3f,0xc,0x14,0x24,0xc4,0x4,0x40,0xfe,0x50,0x20,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x60,0x50,0x4e,0x44,0x40,
-+0x4,0x4,0xff,0x4,0x22,0x14,0xff,0x8,0x49,0x49,0x7f,0x9,0x8,0x8,0x10,0x21,0x40,0x44,0xfe,0x40,0x7c,0x44,0xc4,0x7c,0x44,0x44,0x7c,0x44,0x44,0x84,0x94,0x8,
-+0x4,0x4,0xff,0x4,0x20,0x1b,0xa,0x43,0x26,0xb,0x12,0x72,0x12,0x12,0x13,0x12,0x40,0x44,0xfe,0x80,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x88,0x50,0x20,0x90,0xe,0x4,
-+0x4,0x4,0xff,0x4,0x7f,0x41,0x82,0xc,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x40,0x44,0xfe,0x40,0xfe,0x2,0x84,0x60,0xde,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0,
-+0x4,0x4,0xff,0x4,0x7d,0x4,0x28,0x11,0xfd,0x15,0x11,0x11,0x11,0x10,0x50,0x23,0x40,0x44,0xfe,0x40,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x44,0x58,0x84,0x2,
-+0x4,0x4,0xff,0x4,0x9,0xff,0x8,0x7f,0x49,0x49,0x7f,0x18,0x1c,0x2a,0xc8,0x9,0x40,0x44,0xfe,0x40,0x20,0xa4,0x7e,0x44,0xa8,0x20,0x20,0x20,0x50,0x48,0x8e,0x4,
-+0x4,0xff,0x4,0x3f,0x24,0x3f,0x40,0x7f,0x40,0x9f,0x4,0x7,0xa,0x9,0x1f,0x0,0x40,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfe,0x22,0xf4,0x0,0xc0,0x40,0x44,0xc4,0x3c,
-+0x4,0x4,0xff,0x5,0xa,0x37,0x24,0x27,0x24,0x2f,0x30,0x4,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x48,0xc8,0x48,0xc8,0x38,0x40,0x40,0x42,0x42,0x3e,
-+0x4,0x4,0xff,0x4,0x8,0x11,0x25,0x49,0x17,0x30,0x52,0x92,0x13,0x12,0x14,0x18,0x40,0x44,0xfe,0x40,0x48,0x7c,0x40,0x44,0xfe,0x40,0x48,0x7c,0x40,0xc0,0x3e,0x8,
-+0x4,0x4,0xff,0x4,0x8,0x14,0x22,0x41,0xbe,0x0,0x49,0x29,0x2a,0x7,0x78,0x20,0x40,0x44,0xfe,0x40,0x20,0x24,0x3e,0x44,0xa4,0x24,0x24,0x28,0x10,0x28,0x46,0x84,
-+0x4,0x4,0xff,0x4,0x11,0x11,0xfe,0x24,0x20,0x3c,0x25,0x27,0x24,0x44,0x54,0x89,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x88,0xfc,0xa0,0x24,0xfe,0x50,0x50,0x8e,0x4,
-+0x4,0x4,0xff,0x4,0x17,0x45,0x44,0x4f,0x58,0x6f,0x48,0x4f,0x48,0x4f,0x48,0x40,0x40,0x44,0xfe,0x40,0xfc,0x4,0xa4,0xf4,0x84,0xe4,0x84,0xe4,0x84,0xf4,0x14,0x8,
-+0x4,0xff,0x24,0x13,0x42,0x2b,0x12,0x63,0x22,0x23,0x1,0xff,0x5,0x19,0x61,0x1,0x40,0xfe,0x40,0xfc,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x0,0xfe,0x40,0x30,0xc,0x0,
-+0x4,0xff,0x4,0x1,0x7f,0x40,0x84,0x3e,0x0,0xff,0x14,0x14,0x14,0x25,0x44,0x83,0x40,0xfe,0x40,0x0,0xfe,0x42,0x74,0x40,0xf8,0x8,0x50,0x20,0x50,0x8a,0x2,0xfe,
-+0x4,0xff,0x4,0x1,0x7f,0x48,0x88,0x17,0x30,0x53,0x92,0x13,0x12,0x12,0x13,0x12,0x40,0xfe,0x40,0x0,0xfe,0x2,0x8,0xfc,0x40,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0xff,0x4,0x3e,0x12,0xa,0x13,0x22,0xc,0x31,0xc6,0x18,0x7,0x18,0x3,0x3c,0x40,0xfe,0x40,0xf8,0x48,0x28,0x48,0x88,0x60,0x98,0x6,0xc0,0x18,0x60,0x80,0x0,
-+0x4,0xff,0x5,0x7f,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x7f,0x12,0x51,0x50,0x8f,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x0,0x14,0x12,0xf2,
-+0x4,0xff,0x4,0x7f,0x4,0x3f,0x24,0x3f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x40,0xfe,0x40,0xfc,0x40,0xf8,0x48,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,
-+0x4,0xff,0x4,0x3f,0x28,0x25,0x3f,0x22,0x2a,0x2a,0x2a,0x2f,0x42,0x42,0x84,0x8,0x40,0xfe,0x40,0xfc,0xa0,0x20,0xbe,0x42,0x94,0x90,0x90,0xa8,0xa8,0x28,0x46,0x84,
-+0x4,0xff,0x4,0xff,0x10,0x31,0x4a,0x96,0x25,0x4d,0x15,0x25,0x44,0x84,0x28,0x10,0x40,0xfe,0x40,0x10,0x50,0x7c,0x90,0x10,0x7c,0x10,0x14,0xfe,0x80,0x40,0x3e,0xc,
-+0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0xff,0x21,0x3f,0x21,0x3f,0x21,0xff,0x1,0x1,0x40,0xfe,0x40,0xf0,0x10,0xf0,0x14,0xfe,0x0,0x7c,0x44,0x28,0x10,0xa8,0x4e,0x84,
-+0x4,0xff,0x4,0x3e,0x22,0x3e,0x0,0xff,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x2,0x40,0xfe,0x40,0x10,0x48,0x48,0x40,0xfe,0x40,0x48,0x48,0x30,0x20,0x52,0x8a,0x4,
-+0x4,0xff,0x4,0x3f,0x24,0x3f,0x0,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x40,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x10,0xf0,
-+0x4,0xff,0x4,0x3f,0x9,0x5,0xff,0x5,0x9,0x31,0xdf,0x11,0x1f,0x11,0x1f,0x10,0x40,0xfe,0x40,0xf8,0x20,0x44,0xfe,0x40,0x20,0x18,0xf6,0x10,0xf0,0x10,0xf0,0x10,
-+0x4,0xff,0x4,0x22,0x14,0x7f,0x49,0x7f,0x49,0x7f,0x8,0xff,0x8,0x8,0x9,0x8,0x40,0xfe,0x40,0xc,0x70,0x40,0x40,0x7e,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8,
-+0x4,0x4,0xff,0x4,0x3e,0x20,0x3d,0x20,0x3c,0x20,0xff,0x10,0x24,0x24,0x7d,0x2,0x40,0x44,0xfe,0x40,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x0,0x90,0x88,0x4,0x4,
-+0x4,0xff,0x4,0x0,0x7e,0x11,0x10,0x1c,0x25,0x54,0x8,0x9,0x10,0x20,0x43,0x0,0x20,0xfe,0x20,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x54,0xfe,0x0,
-+0x4,0xff,0x4,0x3f,0x24,0x3f,0x0,0x7f,0x40,0x9f,0x8,0x1e,0x32,0x4c,0x8,0x70,0x40,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfe,0x2,0xf4,0x80,0x90,0xa0,0xc4,0x84,0x7c,
-+0x4,0xff,0x4,0x12,0x1a,0x2a,0x4f,0x90,0x2f,0x60,0xa7,0x25,0x25,0x29,0x28,0x30,0x40,0xfe,0x40,0x20,0xa4,0xbe,0xc4,0x24,0xa4,0x28,0x28,0x10,0x90,0x28,0x46,0x84,
-+0x4,0xff,0x5,0x3f,0x8,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x9,0x28,0x28,0x47,0x40,0xfe,0x40,0xf8,0x20,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x88,0x24,0xe4,
-+0x4,0x4,0xff,0x5,0xff,0x10,0x14,0x25,0x7a,0x10,0x24,0x7c,0x4,0x8,0x10,0x60,0x40,0x40,0xfe,0x40,0xfe,0xa0,0x94,0xfe,0x90,0xfc,0x90,0xfc,0x90,0x94,0xfe,0x80,
-+0x4,0x4,0xff,0x4,0x49,0x2a,0xff,0x2a,0x49,0x10,0xff,0x22,0x64,0x18,0x26,0x41,0x40,0x44,0xfe,0x40,0x20,0x24,0x7e,0x84,0x44,0x48,0x48,0x30,0x20,0x50,0x8e,0x4,
-+0x4,0x4,0xff,0x4,0x3e,0x23,0x22,0x3e,0x21,0x20,0x3e,0x53,0x52,0x92,0x1e,0x10,0x40,0x44,0xfe,0x40,0x20,0xfc,0x88,0x50,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,
-+0x4,0xff,0x24,0x23,0x22,0xfa,0x4a,0x4b,0x4a,0x92,0x52,0x22,0x55,0x4c,0x88,0x10,0x40,0xfe,0x40,0xfc,0x0,0xf8,0x0,0xfe,0xa8,0x90,0xce,0x8,0xfe,0x88,0x48,0x18,
-+0x4,0xff,0x8,0x3f,0xa,0x9,0x48,0x7f,0x40,0x9f,0x4,0xf,0x1,0x1f,0x1,0x7f,0x40,0xfe,0x20,0xf8,0x20,0x20,0xa0,0xfe,0x2,0xf4,0x40,0xe0,0x0,0xf0,0x0,0xfc,
-+0x4,0xff,0x4,0x7f,0x1,0x7f,0x51,0x8d,0x11,0x7f,0x2,0x3f,0x24,0x24,0x24,0x20,0x40,0xfe,0x40,0xfc,0x0,0xfe,0x12,0x64,0x10,0xfc,0x0,0xf8,0x48,0x48,0x48,0x18,
-+0x4,0xff,0x4,0x3f,0x1,0xff,0x1,0x3f,0x25,0x3f,0x1,0x3f,0x1,0x7f,0x24,0x42,0x40,0xfe,0x40,0xf8,0x0,0xfe,0x0,0xf8,0x48,0xf8,0x0,0xf8,0x0,0xfc,0x88,0x44,
-+0x4,0xff,0x14,0x10,0x3e,0x44,0x88,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xf,0xf0,0x0,0x40,0xfe,0x40,0x44,0x28,0xfe,0x10,0x10,0x7c,0x10,0x10,0xfe,0x10,0x10,0x10,0x10,
-+0x4,0xff,0x5,0x7f,0x9,0x8,0x7f,0x40,0x4f,0x48,0x4f,0x1,0xff,0x5,0x19,0x61,0x40,0xfe,0x40,0xfc,0x20,0xa0,0xfc,0x4,0xe4,0x24,0xec,0x0,0xfe,0x40,0x30,0xc,
-+0x4,0xff,0x4,0x3e,0x8,0x7e,0x18,0x2d,0x4a,0x4,0x19,0xe9,0x5,0x9,0x15,0x2,0x40,0xfe,0x40,0x44,0x7e,0x94,0x24,0x44,0x98,0x40,0x30,0x2e,0x40,0x20,0x10,0x0,
-+0x4,0xff,0x4,0x3f,0x1,0x7f,0x51,0x8d,0x10,0x1f,0x30,0x5f,0x90,0x1f,0x10,0x1f,0x40,0xfe,0x40,0xf8,0x0,0xfe,0x12,0x64,0x90,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,
-+0x4,0xff,0x4,0x40,0x30,0x17,0x4,0x5,0xf4,0x15,0x16,0x15,0x14,0x19,0x28,0x47,0x40,0xfe,0x40,0x78,0x40,0xfc,0x44,0xf0,0x44,0x3c,0xa8,0x68,0xa8,0x24,0x40,0xfe,
-+0x4,0xff,0x4,0x12,0x13,0x24,0x4f,0x95,0x27,0x65,0xa7,0x21,0x2f,0x21,0x22,0x2c,0x40,0xfe,0x40,0x0,0xdc,0x80,0xc0,0x7e,0xc8,0x48,0xc8,0x8,0xe8,0x8,0x88,0x58,
-+0x4,0xff,0x24,0x3f,0x40,0xbf,0x29,0xff,0x25,0x3f,0x2,0xf,0x2,0x1f,0x5,0x39,0x40,0xfe,0x20,0xa4,0x7e,0x84,0x24,0xa8,0x10,0x2e,0x44,0xe0,0x20,0xf0,0x40,0x38,
-+0x4,0xff,0x14,0x3f,0x62,0x3e,0x21,0x3e,0x23,0x3e,0x1,0xff,0x5,0x19,0x61,0x1,0x40,0xfe,0x20,0xfc,0x88,0x50,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x40,0x30,0xc,0x0,
-+0x2,0x7f,0x2,0x3f,0x22,0x3f,0x2b,0x32,0x21,0x2f,0x21,0x2f,0x41,0x5f,0x81,0x1,0x20,0xfe,0xa0,0xfc,0x10,0xfe,0x54,0x92,0x20,0x3c,0x20,0x3c,0x20,0x3e,0x20,0x20,
-+0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x2,0x1,0x7f,0x4,0x14,0x24,0x48,0x10,0x4,0x4,0xff,0x4,0x4,0x8,0x10,0x20,0x0,0x8,0xfc,0x40,0x50,0x4c,0xc4,0x0,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x1,0xff,0x2,0x4,0x8,0x30,0xc9,0x9,0x9,0x9,0x9,0x11,0x11,0x21,0x0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x24,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x1,0x1,0xff,0x2,0x4,0x8,0x3f,0xd0,0x14,0x12,0x11,0x12,0x14,0x18,0x1f,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0xf8,0x26,0x40,0x80,0x0,0x80,0x60,0x20,0xf8,0x0,
-+0x1,0x1,0xff,0x2,0x4,0x8,0x3f,0xc8,0xf,0x8,0xf,0x8,0x8,0x7f,0x0,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0xf8,0x26,0xe0,0x20,0xe0,0x28,0xfc,0x20,0x20,0x20,
-+0x2,0x1,0x7f,0x4,0x14,0x24,0x48,0x11,0x1,0xff,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x8,0xfc,0x40,0x50,0x4c,0xc4,0x0,0x4,0xfe,0x80,0x80,0x40,0x30,0xe,0x4,
-+0x0,0x7f,0x22,0x11,0x12,0x4,0x1f,0x2,0x4,0x1f,0x1,0xff,0x1,0x2,0xc,0x70,0x3c,0xc8,0x8,0x10,0x40,0x20,0xf0,0x0,0x20,0xf0,0x4,0xfe,0x0,0x80,0x60,0x1c,
-+0x4,0x24,0x24,0x3d,0x4,0x7c,0x24,0x25,0x44,0x1,0xff,0x1,0x2,0x4,0x18,0x60,0x20,0x20,0x28,0xfc,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,
-+0x10,0x10,0x10,0xfe,0x29,0x46,0xfd,0x1,0xff,0x21,0x3d,0x5,0x5,0x5,0x28,0x10,0x80,0x80,0x88,0xfc,0x8,0x8,0xe8,0x28,0x28,0xe8,0x28,0x10,0x2,0x2,0xfe,0x0,
-+0x2,0x2,0x2,0x2,0xff,0x2,0x2,0x2,0x2,0x4,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x84,0x7c,0x0,
-+0x20,0x20,0x20,0x20,0xfd,0x29,0x2a,0x28,0x28,0x28,0x28,0x28,0x28,0x48,0x47,0x80,0x80,0x80,0x88,0xfc,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x88,0x52,0x22,0xfe,0x0,
-+0x20,0x20,0x20,0x20,0xfd,0x2a,0x2c,0x28,0x28,0x28,0x29,0x29,0x2a,0x48,0x47,0x80,0x20,0x20,0x50,0x90,0x8,0x6,0x94,0x90,0x90,0x90,0x10,0x10,0x12,0x2,0xfe,0x0,
-+0x20,0x22,0x22,0x22,0xfe,0x2a,0x28,0x28,0x2b,0x2a,0x2a,0x2a,0x2f,0x48,0x47,0x80,0x90,0x90,0xa0,0xfc,0x80,0x90,0x88,0x80,0xf8,0xa8,0xa8,0xa8,0xfe,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x14,0x18,0x30,0xd0,0x10,0x10,0x10,0x50,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x12,0x11,0x12,0xfe,0x12,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x52,0x20,0x0,0x4,0x7e,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x17,0x14,0x18,0x31,0xd0,0x13,0x10,0x10,0x50,0x20,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x80,0xf8,0x8,0x10,0xd0,0x20,0x10,0x8,
-+0x10,0x10,0x10,0x10,0xfb,0x12,0x12,0x1b,0x32,0xd2,0x13,0x12,0x10,0x10,0x50,0x20,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x11,0xfd,0x13,0x15,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x51,0x21,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x11,0xff,0x10,0x11,0x15,0x19,0x37,0xd1,0x11,0x11,0x11,0x52,0x24,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x11,0x11,0x12,0xfa,0x14,0x1f,0x11,0x1a,0x32,0xd4,0x1f,0x10,0x10,0x50,0x21,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xa4,0xa4,0x44,0x44,0x94,0x8,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x10,0x17,0x18,0x30,0xd3,0x12,0x12,0x12,0x53,0x22,0x40,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x17,0x10,0xfc,0x17,0x10,0x15,0x1a,0x35,0xd9,0x11,0x11,0x12,0x52,0x24,0x8,0x3c,0xc0,0x40,0x84,0xfe,0xa0,0x10,0x8,0x16,0x14,0x10,0x10,0x10,0x10,0x10,
-+0x11,0x11,0x12,0x11,0xfd,0x10,0x10,0x14,0x19,0x31,0xd2,0x14,0x10,0x10,0x50,0x23,0x24,0x24,0x48,0x24,0x24,0x80,0x84,0xfe,0x4,0x84,0x48,0x28,0x10,0x20,0xc0,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x10,0x13,0x16,0x1a,0x32,0xd3,0x12,0x12,0x12,0x52,0x21,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0x44,0xfc,0x4,0x0,0x2,0x2,0xfe,
-+0x10,0x10,0x17,0x12,0xfd,0x11,0x10,0x14,0x1b,0x30,0xd1,0x10,0x10,0x10,0x50,0x20,0x8,0x7c,0x80,0x48,0x48,0x50,0x20,0x8,0xfe,0x8,0x8,0x88,0x88,0x8,0x28,0x10,
-+0x10,0x17,0x11,0x11,0xff,0x11,0x11,0x17,0x19,0x32,0xd3,0x15,0x15,0x19,0x51,0x21,0x8,0xfc,0x8,0x8,0xfe,0x8,0x8,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x13,0x10,0x10,0xfc,0x17,0x10,0x15,0x1a,0x34,0xd9,0x11,0x12,0x14,0x51,0x20,0x8,0xfc,0x40,0x40,0x84,0xfe,0xa0,0x10,0x4e,0x44,0x68,0x54,0x54,0x44,0x40,0x80,
-+0x20,0x2f,0x24,0x24,0xfc,0x27,0x24,0x24,0x2f,0x34,0xe4,0x24,0x2f,0x20,0xa0,0x40,0x0,0xfc,0xa4,0xa4,0xa4,0xa8,0xa4,0xa4,0xa2,0xa2,0xa2,0xb4,0xe8,0xa0,0xa0,0xa0,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x17,0x1a,0x32,0xd3,0x12,0x14,0x14,0x5b,0x20,0x4,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x10,0x17,0xf8,0x11,0x12,0x15,0x18,0x30,0xd7,0x10,0x12,0x12,0x55,0x20,0x40,0x40,0x48,0xfc,0xa0,0x10,0x8,0xf6,0x4,0x8,0xfc,0x40,0x50,0x4c,0x44,0x80,
-+0x10,0x10,0x17,0x10,0xfc,0x11,0x17,0x10,0x18,0x33,0xd2,0x12,0x13,0x10,0x50,0x20,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0x8,0xc8,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x20,0x27,0x24,0x24,0xfd,0x24,0x24,0x25,0x2c,0x34,0xe4,0x27,0x24,0x24,0xa7,0x44,0x4,0xfe,0x4,0x4,0xf4,0x44,0x44,0xf4,0x44,0x54,0x44,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x12,0x16,0x1b,0x30,0xd1,0x1f,0x10,0x10,0x50,0x20,0x40,0x84,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x11,0x11,0x11,0x13,0xfe,0x14,0x12,0x10,0x1b,0x30,0xd1,0x12,0x14,0x10,0x50,0x20,0x0,0x0,0x4,0xfe,0x84,0x94,0xa4,0x84,0xf4,0x84,0xc4,0xb4,0x94,0x84,0x14,0x8,
-+0x10,0x10,0x10,0x17,0xfc,0x11,0x10,0x17,0x18,0x30,0xd3,0x12,0x12,0x12,0x53,0x22,0x80,0x40,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x12,0x16,0x1a,0x33,0xd2,0x12,0x14,0x14,0x59,0x22,0x40,0x24,0xfe,0x4,0x4,0xfc,0x20,0x28,0x24,0xfe,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x12,0x16,0x1a,0x32,0xd2,0x12,0x14,0x14,0x58,0x20,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x84,0x84,0x94,0x88,
-+0x10,0x13,0x12,0x17,0xfa,0x12,0x13,0x10,0x1b,0x32,0xd2,0x12,0x12,0x10,0x51,0x26,0x8,0xfc,0x48,0xfe,0x48,0x48,0xf8,0x0,0xf8,0x8,0x48,0x48,0x48,0xb0,0x8,0x4,
-+0x10,0x12,0x12,0x17,0xfa,0x12,0x12,0x16,0x1b,0x30,0xd7,0x10,0x11,0x12,0x54,0x20,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x10,0x10,0x17,0x10,0xfc,0x11,0x12,0x14,0x1b,0x32,0xd3,0x12,0x13,0x10,0x5f,0x20,0x40,0x48,0xfc,0x40,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0,
-+0x10,0x17,0x14,0x15,0xfd,0x15,0x15,0x15,0x1c,0x37,0xd4,0x15,0x14,0x14,0x57,0x20,0x8,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x88,0x90,0x60,0x98,0xfe,0x0,
-+0x20,0x24,0x24,0x27,0xf4,0x28,0x37,0x22,0x32,0x2f,0xe2,0x22,0x23,0x22,0xa0,0x41,0x20,0x20,0x20,0xa4,0x3e,0x44,0xa8,0x20,0x20,0xa0,0x20,0x50,0x50,0x88,0x8e,0x4,
-+0x10,0x10,0x10,0x11,0xfe,0x15,0x18,0x13,0x1a,0x33,0xd2,0x13,0x12,0x12,0x52,0x22,0x40,0x40,0xa0,0x10,0x8,0xf6,0x0,0xc4,0x54,0xd4,0x54,0xd4,0x54,0x44,0x54,0xc8,
-+0x10,0x10,0x17,0x10,0xfd,0x10,0x1f,0x14,0x1b,0x32,0xd2,0x13,0x12,0x12,0x53,0x22,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x14,0x17,0x14,0xfc,0x13,0x10,0x13,0x1a,0x33,0xd2,0x13,0x12,0x10,0x57,0x20,0x80,0x40,0xfe,0x2,0x8,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x4,0xfe,0x0,
-+0x20,0x27,0x24,0x24,0xff,0x25,0x24,0x27,0x2c,0x34,0xe7,0x24,0x28,0x28,0xb1,0x42,0x4,0xfe,0x4,0x4,0xfc,0x8,0x90,0xfc,0x90,0x94,0xfe,0x90,0x90,0x90,0x10,0x10,
-+0x10,0x17,0x10,0x14,0xfb,0x11,0x12,0x13,0x1c,0x30,0xd7,0x10,0x10,0x11,0x52,0x24,0x20,0xa8,0xb0,0xa4,0x28,0x10,0x8,0xf6,0x44,0x40,0xfc,0x80,0xa0,0x10,0x8,0x4,
-+0x10,0x10,0x10,0x11,0xfd,0x10,0x17,0x14,0x19,0x36,0xd1,0x16,0x11,0x16,0x50,0x20,0x80,0x80,0xf8,0x8,0xf0,0x14,0xfe,0x88,0x50,0xa0,0x30,0x68,0xae,0x24,0xa0,0x40,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x13,0x16,0x1a,0x32,0xd2,0x14,0x1a,0x12,0x54,0x20,0x48,0x7c,0x40,0xfc,0x44,0x48,0xf8,0x40,0x44,0x3c,0x0,0xa0,0x94,0x82,0x8a,0x78,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x17,0x1a,0x33,0xd0,0x11,0x15,0x15,0x59,0x20,0x8,0xfc,0x48,0x48,0xf8,0x48,0xa8,0x18,0x8,0xf8,0x0,0x40,0x44,0x12,0x12,0xf0,
-+0x10,0x10,0x17,0x14,0xfc,0x15,0x15,0x15,0x1d,0x35,0xd5,0x15,0x15,0x16,0x58,0x23,0x8,0x7c,0xa0,0x3c,0x20,0xfe,0x22,0xf8,0x24,0x3c,0x0,0x78,0x48,0x4a,0x8a,0x6,
-+0x12,0x11,0x10,0x17,0xf8,0x10,0x17,0x10,0x1f,0x30,0xd7,0x11,0x12,0x14,0x58,0x20,0x8,0x10,0xa4,0xfe,0xa0,0xa4,0xfe,0xa4,0xfe,0xa4,0xfc,0xb0,0xa8,0xa6,0xa4,0xa0,
-+0x20,0x28,0x25,0x20,0xff,0x22,0x2a,0x2a,0x2a,0x3a,0xef,0x22,0x22,0x24,0xa8,0x51,0x4,0xbe,0x24,0x24,0xe4,0x3c,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0x44,0x44,0x94,0x8,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x17,0x1a,0x32,0xd3,0x15,0x15,0x15,0x59,0x21,0x4,0xfe,0x4,0x4,0xfc,0x94,0x90,0xfc,0x90,0x94,0xfe,0x40,0x28,0x10,0x8e,0x4,
-+0x10,0x17,0x10,0x10,0xff,0x14,0x14,0x17,0x18,0x34,0xd2,0x12,0x14,0x10,0x52,0x21,0x4,0xbe,0x84,0x84,0xbc,0x20,0x24,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x84,0x94,0x8,
-+0x10,0x13,0x11,0x10,0xfb,0x10,0x17,0x14,0x1b,0x34,0xd0,0x1f,0x11,0x12,0x54,0x20,0x0,0xf8,0x10,0xe0,0x18,0x0,0xbc,0xa4,0x18,0xa4,0x40,0xfe,0x50,0x48,0x46,0x40,
-+0x10,0x17,0x14,0x17,0xfc,0x17,0x14,0x11,0x1b,0x30,0xd0,0x17,0x11,0x12,0x54,0x20,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x84,0x10,0xe0,0x40,0x88,0xfc,0x50,0x4c,0x44,0xc0,
-+0x10,0x17,0x14,0x15,0xfd,0x16,0x13,0x14,0x18,0x37,0xd1,0x12,0x11,0x10,0x51,0x26,0x0,0xbc,0xa4,0xac,0xac,0x34,0x18,0xa4,0x80,0xfe,0x10,0x10,0x20,0xe0,0x98,0x4,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x13,0x16,0x1a,0x32,0xd4,0x14,0x15,0x15,0x5a,0x20,0x40,0x24,0xfe,0x88,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x0,0x54,0x52,0x52,0x0,
-+0x20,0x20,0x27,0x21,0xfa,0x2f,0x24,0x27,0x2c,0x37,0xe4,0x24,0x3f,0x20,0xa0,0x40,0x0,0x10,0x90,0x24,0x3e,0xc4,0xa4,0xa8,0xa8,0xa8,0x90,0xd0,0xa8,0xa8,0xc6,0x84,
-+0x10,0x17,0x10,0x14,0xfa,0x12,0x14,0x10,0x1b,0x32,0xd2,0x13,0x12,0x12,0x53,0x22,0x4,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x12,0x12,0x12,0xff,0x12,0x12,0x17,0x18,0x37,0xd5,0x15,0x15,0x17,0x50,0x21,0x0,0x4,0x7e,0x10,0xa4,0x7e,0x44,0xd4,0x54,0x54,0x54,0x54,0x54,0x20,0x4c,0x82,
-+0x11,0x13,0x14,0x17,0xfc,0x17,0x14,0x17,0x18,0x37,0xd0,0x13,0x12,0x13,0x52,0x23,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x12,0x11,0x17,0x10,0xfb,0x12,0x13,0x12,0x1a,0x33,0xd0,0x1f,0x12,0x11,0x50,0x20,0x8,0x10,0xfc,0xa8,0xfc,0xa8,0x18,0xe8,0x8,0xf8,0x14,0xfe,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x17,0x15,0xfa,0x14,0x13,0x12,0x1b,0x30,0xd7,0x14,0x17,0x10,0x50,0x20,0x80,0x40,0xfe,0x12,0x48,0x44,0xf8,0x48,0xf8,0x40,0xfc,0x44,0xfc,0x40,0x40,0x40,
-+0x22,0x22,0x22,0x2f,0xf2,0x2f,0x28,0x2f,0x38,0xef,0x22,0x2f,0x22,0x22,0xa2,0x42,0x10,0x10,0x28,0xa8,0x44,0x82,0xfc,0x90,0x90,0x94,0x7e,0x90,0x10,0x10,0x10,0x10,
-+0x10,0x17,0x14,0x14,0xff,0x10,0x17,0x10,0x1b,0x32,0xd3,0x11,0x13,0x15,0x59,0x21,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x44,0x28,0x10,0x8e,0x4,
-+0x20,0x20,0x27,0x24,0xf4,0x27,0x24,0x34,0x27,0xe6,0x26,0x2a,0x2a,0x33,0xa2,0x40,0x10,0x8,0xc8,0x7e,0x40,0xd4,0x14,0x3e,0xc8,0x48,0x7e,0x48,0x48,0xc8,0x48,0x8,
-+0x10,0x13,0x12,0x12,0xfb,0x10,0x17,0x14,0x1f,0x34,0xd7,0x10,0x1f,0x11,0x51,0x26,0x80,0xf8,0x88,0x48,0xf8,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x10,0x10,0x10,
-+0x10,0x17,0x10,0x12,0xf8,0x12,0x11,0x11,0x1a,0x37,0xda,0x13,0x12,0x12,0x53,0x22,0x0,0xbc,0x84,0x94,0x84,0x94,0x20,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x20,0x27,0x20,0x2f,0xfa,0x21,0x22,0x28,0x37,0xe4,0x2f,0x34,0x27,0x24,0xa7,0x44,0x8,0xfc,0x40,0xfe,0x4a,0x50,0x48,0x40,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfe,0x0,
-+0x12,0x13,0x15,0x13,0xfe,0x12,0x13,0x18,0x17,0x31,0xd2,0x1d,0x10,0x13,0x51,0x26,0x10,0xde,0x28,0xf8,0x88,0x48,0xf8,0x80,0xfe,0x50,0x98,0xe6,0x90,0xf8,0x50,0x4c,
-+0x20,0x27,0x20,0x23,0xf2,0x2f,0x29,0x27,0x21,0x33,0xe1,0x27,0x21,0x23,0xad,0x41,0x40,0xfc,0x40,0xf8,0x48,0xfe,0x12,0xfc,0x10,0xf8,0x10,0xfc,0x48,0x30,0x8e,0x4,
-+0x2,0x2,0x2,0x2,0x3,0xfe,0x2,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x44,0x24,0x1c,0x0,
-+0x0,0x0,0x0,0x0,0xff,0x0,0x8,0x4,0x14,0x54,0x50,0x50,0x91,0x11,0xf,0x0,0x80,0xa0,0x94,0xfe,0x80,0x40,0x40,0x40,0x20,0xa0,0x60,0x50,0x12,0xa,0xa,0x4,
-+0x0,0x0,0x0,0x0,0xff,0x22,0x22,0xff,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x0,0x80,0xa0,0x94,0xfe,0x80,0x40,0x40,0xc0,0x40,0x40,0x20,0x20,0x12,0x12,0xa,0x4,
-+0x0,0x22,0x14,0xb,0x14,0x62,0x8,0x9,0xfe,0x8,0x2c,0x2a,0x48,0xb,0x28,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x20,0xd0,0x90,0x90,0x90,0x90,0xf2,0x8a,0xa,0x4,
-+0x0,0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0xa0,0x98,0x8c,0x84,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x49,0x4a,0x4c,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x4a,0x2,0x4,0x8,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xc8,0xa8,0x90,0x80,0x80,0x80,
-+0x0,0x8,0x7d,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x8,0x7c,0x48,0x4b,0x48,0x48,0x48,0x48,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x8,0x7d,0x48,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x8,0x1c,0xe0,0x40,0x40,0x44,0x7e,0xc0,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0xa,0x7d,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x4,0xc,0x90,0xa0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x8,0x7c,0x48,0x48,0x49,0x4b,0x48,0x48,0x48,0x48,0x78,0x49,0x2,0x3,0x0,0x40,0x40,0x40,0x80,0x84,0x4,0xf8,0x8,0x10,0x20,0x40,0x80,0x8,0x4,0xfe,0x2,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x0,0xb,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x49,0x79,0x4a,0x2,0x4,0x8,0x8,0xfc,0x80,0x80,0x80,0x84,0xfe,0xa0,0xa0,0xa0,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x0,0x7b,0x48,0x48,0x4b,0x48,0x48,0x48,0x48,0x49,0x7a,0x4a,0x2,0x1,0x0,0x90,0x94,0xfe,0x90,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x8,0x7c,0x48,0x4f,0x48,0x48,0x48,0x48,0x48,0x49,0x79,0x4a,0x4,0x8,0x10,0x40,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0xa0,0xa0,0x10,0x90,0x48,0x48,0x6,0x4,
-+0x0,0xb,0x7e,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x9,0x12,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x0,0xb,0x7e,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x8,0x10,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x2,0xa,0x7e,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x3,0x2,0x0,0x20,0x20,0x20,0x20,0x24,0x28,0xb0,0x20,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e,0x0,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x48,0x0,0x1,0x2,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x40,0x98,0x6,0x2,
-+0x0,0x1f,0x10,0x10,0x10,0x1f,0x11,0x1,0x7f,0x42,0x42,0x44,0x48,0x40,0x40,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x84,0x44,0x24,0x24,0x4,0x14,0x8,
-+0x0,0x0,0x8,0x7c,0x48,0x48,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x0,0x0,0x0,0x40,0x20,0x20,0x20,0xa0,0x80,0x88,0x84,0x82,0x82,0x82,0x8a,0x8a,0x88,0x78,0x0,
-+0x0,0xb,0x7c,0x48,0x48,0x4b,0x4a,0x4a,0x4a,0x4b,0x48,0x78,0x48,0x2,0x1,0x0,0x24,0xf4,0x24,0x24,0x24,0xe4,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x44,0x84,
-+0x0,0x3,0x7a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x2,0x3,0x0,0x8,0xfc,0x20,0x28,0xfc,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xb8,0x20,0x24,0xfe,0x0,
-+0x0,0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0xa0,0x90,0x88,0x88,0x80,0x80,0x80,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x48,0x0,0x0,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x7b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x5,0x9,0x10,0x8,0x1c,0xe0,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xa4,0x14,0xf2,0x0,
-+0x0,0x0,0x8,0x7c,0x49,0x4a,0x4c,0x48,0x48,0x4b,0x48,0x79,0x48,0x0,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x64,0x20,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x0,0x8,0x7c,0x49,0x49,0x4a,0x48,0x48,0x49,0x4a,0x4c,0x78,0x49,0x0,0x0,0x0,0x80,0x80,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0x8e,0x64,0x20,0x80,0x60,0x10,0x0,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x48,0x4b,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x48,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x0,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x2,0x12,0x7a,0x52,0x5f,0x52,0x52,0x52,0x54,0x54,0x55,0x72,0x55,0x8,0x10,0x0,0x0,0x0,0x8,0x7c,0x88,0x88,0xa8,0xa8,0xa8,0x90,0x10,0x28,0x28,0xc4,0x44,0x82,
-+0x0,0x11,0x79,0x51,0x52,0x54,0x5f,0x51,0x52,0x52,0x54,0x7f,0x54,0x0,0x1,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xa4,0xc4,0x44,0x84,0x28,0x10,
-+0x0,0x11,0x79,0x51,0x52,0x52,0x57,0x51,0x52,0x52,0x54,0x77,0x50,0x0,0xf,0x0,0x0,0x8,0x8,0x8,0x10,0x94,0xbc,0x8,0x10,0x10,0x20,0xbc,0x0,0x4,0xfe,0x0,
-+0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x2,0x3,0x0,0x8,0xfc,0x0,0x8,0xfc,0x20,0x20,0xf8,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x0,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x49,0x48,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x7,0x8,0x7c,0x48,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x2,0x3,0x2,0x4,0xfe,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x8,0x7f,0x48,0x48,0x49,0x49,0x4a,0x4c,0x49,0x78,0x48,0x0,0x1,0x2,0x80,0x80,0x84,0xfe,0x80,0xa0,0x20,0x24,0xac,0xb0,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x0,0x70,0x54,0x52,0x52,0x50,0x5e,0x52,0x52,0x52,0x72,0x53,0x6,0x9,0x0,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x50,0x48,0x8c,0x4,0x0,0x6,0xfc,
-+0x0,0x7,0x9,0x7d,0x49,0x4a,0x4a,0x4a,0x4d,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x44,0xe4,0x4,0x4,0xd4,0x54,0x54,0x54,0x54,0x94,0x94,0x14,0x4,0x4,0x14,0x8,
-+0x0,0x0,0x7b,0x48,0x4b,0x48,0x48,0x4b,0x4a,0x4a,0x7b,0x48,0x0,0x1,0x2,0xc,0x40,0x48,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0x44,0xac,0x10,0x8,0x6,
-+0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x4b,0x48,0x4f,0x49,0x79,0x49,0x2,0x4,0x18,0x80,0x88,0xfc,0x80,0x48,0x50,0x62,0x92,0xe,0xf8,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x2,0x2,0x7a,0x4b,0x4a,0x4a,0x4a,0x4b,0x48,0x48,0x4f,0x78,0x48,0x0,0x0,0x0,0x20,0x20,0x24,0xa8,0x30,0x24,0xa4,0x1c,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x8,0x7c,0x48,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x3,0xc,0x0,0x90,0x90,0x90,0x90,0x92,0x94,0xf8,0x90,0x90,0x90,0x90,0xb0,0xd2,0x12,0xe,0x0,
-+0x0,0x0,0x7a,0x49,0x49,0x49,0x48,0x4f,0x49,0x49,0x49,0x79,0x4a,0x2,0x4,0x8,0x40,0x40,0x48,0x4c,0x50,0x50,0x44,0xfe,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x8,0x7d,0x49,0x49,0x49,0x48,0x48,0x48,0x49,0x4a,0x78,0x48,0x0,0x1,0x6,0x20,0x20,0x24,0x24,0x24,0xfc,0x44,0x40,0xfc,0x84,0x44,0x28,0x10,0x60,0x80,0x0,
-+0x1,0x1,0x11,0x7a,0x52,0x57,0x5a,0x52,0x52,0x52,0x52,0x72,0x53,0x2,0x2,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xa8,0xa8,0xa6,0x24,0x20,0x20,0x20,
-+0x1,0x1,0x11,0x7a,0x52,0x56,0x5b,0x52,0x52,0x52,0x53,0x72,0x52,0x2,0x2,0x3,0x0,0x4,0xfe,0x44,0x44,0x44,0xfe,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x80,0x0,
-+0x0,0x0,0x7b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x8,0x0,0x8,0x3c,0xc0,0x4,0x18,0xe0,0xa0,0xa4,0xa8,0x90,0x90,0x90,0x88,0xae,0xc4,0x80,
-+0x0,0x0,0x8,0x7c,0x49,0x4a,0x4d,0x48,0x48,0x4f,0x48,0x78,0x49,0x2,0x7,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x0,0x4,0xfe,0x80,0x80,0x10,0x8,0xfc,0x4,
-+0x0,0x1,0x9,0x7d,0x49,0x49,0x4a,0x48,0x4f,0x48,0x48,0x78,0x49,0x2,0xc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x4c,0x40,0xfe,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,
-+0x0,0x0,0x78,0x4b,0x49,0x48,0x48,0x48,0x49,0x4e,0x48,0x78,0x48,0x1,0x2,0x4,0x80,0x40,0x24,0xfe,0x8,0x90,0x60,0x90,0xe,0x94,0x90,0x90,0x90,0x10,0x10,0x10,
-+0x2,0x9,0x7c,0x4b,0x48,0x48,0x48,0x4b,0x48,0x48,0x48,0x7f,0x48,0x0,0x0,0x0,0x8,0x10,0xa0,0xfc,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x8,0x7c,0x4a,0x49,0x48,0x4f,0x48,0x48,0x48,0x49,0x79,0x4a,0x4,0x8,0x0,0x40,0x40,0x44,0x48,0x50,0x44,0xfe,0x40,0xe0,0xd0,0x50,0x48,0x46,0x44,0x40,0x40,
-+0x0,0x0,0x7b,0x4a,0x4c,0x48,0x4b,0x48,0x48,0x4f,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x40,0xfe,0x2,0x4,0x38,0xc0,0x44,0x7e,0xc0,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x8,0x7c,0x49,0x49,0x4a,0x48,0x48,0x48,0x49,0x49,0x7a,0x44,0x8,0x0,0x0,0x20,0x20,0x20,0xfe,0x42,0x44,0x40,0xa0,0xa4,0x28,0x90,0x90,0x88,0xae,0xc4,0x80,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x0,0x0,0x8,0x7d,0x4b,0x48,0x49,0x49,0x49,0x4a,0x48,0x7b,0x48,0x0,0x0,0x0,0x20,0x40,0x88,0x4,0xfe,0x22,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x7b,0x48,0x4b,0x48,0x4f,0x48,0x49,0x49,0x49,0x7a,0x44,0x0,0x3,0xc,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x0,0x0,0x7b,0x48,0x48,0x48,0x4f,0x48,0x4a,0x4a,0x7a,0x45,0x9,0x2,0x4,0x0,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xa0,0xa8,0xa4,0xa4,0x24,0x20,0x20,0xa0,0x40,
-+0x0,0x0,0x7b,0x48,0x48,0x4b,0x4a,0x4c,0x4b,0x48,0x48,0x78,0x49,0x2,0x4,0x8,0x90,0x94,0xfe,0x90,0x90,0xfe,0x42,0x44,0xf8,0x48,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x0,0x3,0x78,0x48,0x4b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x7a,0x49,0x0,0x3,0xc,0x8,0xfc,0x40,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x40,0xc0,0x30,0xe,
-+0x0,0x3,0x8,0x7c,0x4b,0x49,0x49,0x49,0x4f,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x10,0xf8,0x80,0x90,0xf8,0x10,0x10,0x14,0xfe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x2,0x2,0x72,0x5f,0x52,0x52,0x52,0x52,0x53,0x5e,0x52,0x72,0x52,0x2,0xb,0x4,0x0,0xc,0x70,0xc0,0x40,0x44,0x7e,0xc8,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8,
-+0x0,0x2,0x9,0x7d,0x48,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x0,0x1,0x6,0x40,0x44,0x4c,0x50,0x48,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0xa8,0x90,0xc,0x4,
-+0x0,0x0,0x7b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x4a,0x78,0x40,0xf,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x44,0x7e,0xc0,0x44,0x44,0x3c,
-+0x1,0x8,0x7c,0x48,0x49,0x48,0x4f,0x48,0x49,0x4b,0x4d,0x79,0x49,0x1,0x0,0x0,0x8,0xd0,0x20,0x58,0x84,0x40,0xfe,0xa0,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x0,0x0,0x2,0x7a,0x4a,0x4a,0x4d,0x48,0x48,0x48,0x4b,0x78,0x48,0x0,0xf,0x0,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0xe2,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x7,0x74,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x55,0x74,0x55,0x6,0x0,0x0,0x80,0xc4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x24,0xb4,0x28,0x20,0x20,0x20,
-+0x0,0x8,0x7f,0x48,0x4b,0x48,0x4f,0x48,0x49,0x4b,0x4c,0x78,0x47,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0xfc,0x40,0xfe,0xa0,0x50,0xf8,0x46,0x40,0xfc,0x40,0x40,0x40,
-+0x0,0x8,0x7f,0x48,0x4b,0x48,0x4f,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x0,0x1,0x6,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x1,0x9,0x7f,0x49,0x48,0x48,0x4f,0x48,0x48,0x49,0x49,0x7b,0x45,0x9,0x1,0x1,0x10,0x10,0xfc,0x10,0x40,0x44,0xfe,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x1,0x11,0x7f,0x51,0x51,0x50,0x57,0x54,0x54,0x54,0x57,0x74,0x54,0x4,0x7,0x4,0x10,0x14,0xfe,0x10,0x10,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x1,0x11,0x79,0x51,0x5f,0x51,0x53,0x53,0x55,0x55,0x55,0x79,0x51,0x1,0x1,0x1,0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0xb8,0x58,0x54,0x54,0x92,0x10,0x10,0x10,0x10,
-+0x1,0x11,0x79,0x57,0x52,0x52,0x55,0x55,0x5f,0x51,0x51,0x73,0x4d,0x1,0x1,0x1,0x10,0x10,0x14,0xfe,0x10,0x14,0x7e,0x10,0x90,0x20,0x7e,0x84,0x28,0x10,0xc,0x4,
-+0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x4a,0x2,0x4,0x8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x2,0x12,0x7b,0x54,0x5a,0x53,0x54,0x50,0x5f,0x50,0x54,0x74,0x57,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x84,0x94,0xfc,0x84,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x1,0x9,0x7d,0x4a,0x4a,0x4c,0x49,0x49,0x4a,0x48,0x49,0x7d,0x45,0x9,0x0,0x0,0x0,0x4,0xfe,0x94,0x94,0x94,0x24,0x24,0x54,0x8,0x40,0x24,0x22,0xa,0xf8,0x0,
-+0x0,0x8,0x7f,0x49,0x49,0x49,0x4a,0x4a,0x4c,0x48,0x4f,0x78,0x48,0x0,0x0,0x0,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x0,0xb,0x7c,0x49,0x48,0x4f,0x48,0x48,0x4f,0x49,0x7a,0x49,0x0,0x1,0x6,0x80,0x50,0xf8,0x0,0x10,0xa0,0xfc,0x80,0x84,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8,
-+0x0,0x8,0x7f,0x48,0x49,0x4b,0x48,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x80,0x44,0xfe,0x80,0x8,0xfc,0x4,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x8,0x7d,0x49,0x4a,0x48,0x49,0x4a,0x48,0x49,0x49,0x7a,0x48,0x0,0x3,0xc,0x40,0x40,0x48,0x50,0x40,0xa0,0x10,0xc,0x40,0x48,0x50,0x40,0xa0,0x90,0xe,0x4,
-+0x0,0x4,0x72,0x52,0x58,0x54,0x50,0x52,0x52,0x54,0x5c,0x74,0x55,0x5,0x6,0x4,0x10,0x10,0x10,0xfe,0x92,0x94,0x90,0xfc,0xa4,0xa4,0xa8,0x90,0x28,0x28,0x46,0x84,
-+0x0,0x8,0x7c,0x4b,0x4a,0x4c,0x48,0x4b,0x48,0x49,0x49,0x79,0x49,0x2,0x4,0x8,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x3c,0x20,0x20,0xa0,0x60,0x1e,
-+0x2,0x1,0x17,0x7c,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x75,0x54,0x5,0x6,0x0,0x0,0x0,0xbc,0xa4,0xa8,0xa8,0xb0,0xa8,0xa4,0x24,0x24,0x24,0xb4,0xa8,0x20,0x20,
-+0x0,0x8,0x7f,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4b,0x4a,0x7a,0x44,0x4,0x9,0x2,0x40,0x24,0xfe,0x4,0x4,0xfc,0x20,0x28,0x24,0xfe,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x17,0x7c,0x54,0x57,0x55,0x55,0x57,0x55,0x75,0x4d,0x15,0x15,0x25,0x1,0x1,0x4,0xc4,0x54,0x54,0xd4,0x14,0x14,0xd4,0x54,0x54,0x54,0x44,0x44,0xc4,0x14,0x8,
-+0x0,0xf,0x4,0x75,0x52,0x55,0x58,0x50,0x5f,0x50,0x55,0x75,0x52,0x5,0x8,0x10,0x0,0xfc,0xa4,0x28,0x10,0x28,0xc4,0x0,0xfc,0x84,0x28,0x28,0x10,0x28,0xc6,0x84,
-+0x0,0x2,0x12,0x7f,0x52,0x52,0x52,0x52,0x53,0x50,0x5f,0x70,0x51,0x2,0xc,0x0,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x1,0x1,0xf,0x79,0x48,0x48,0x49,0x4a,0x4d,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x10,0x14,0xfe,0x50,0x40,0xa0,0x10,0xe,0xf4,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x0,0xf,0x70,0x50,0x57,0x55,0x54,0x55,0x54,0x54,0x77,0x54,0x4,0x4,0x4,0x40,0x44,0xfe,0x40,0x44,0xfe,0x14,0xa4,0xf4,0x44,0x44,0xfc,0x44,0x44,0x54,0x8,
-+0x0,0x17,0x7c,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x74,0x49,0x8,0x10,0x3,0x4,0xfe,0x0,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,
-+0x0,0x0,0x0,0x77,0x50,0x51,0x53,0x5c,0x53,0x50,0x50,0x77,0x50,0x0,0xf,0x0,0x40,0x40,0x44,0xfe,0xa0,0x50,0xf8,0x46,0xf8,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x2,0x2,0x7b,0x4a,0x4a,0x4a,0x4b,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x1,0x20,0x24,0xa8,0x30,0x22,0xa2,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x13,0x7a,0x52,0x53,0x52,0x52,0x53,0x50,0x57,0x74,0x54,0x5,0x4,0x4,0x4,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x44,0xfe,0x44,0x54,0xf4,0x4,0x14,0x8,
-+0x0,0x7,0x74,0x57,0x54,0x57,0x50,0x53,0x52,0x53,0x72,0x53,0x2,0x2,0x2,0x2,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x1,0x77,0x51,0x51,0x51,0x57,0x51,0x53,0x53,0x55,0x75,0x49,0x11,0x1,0x1,0x90,0xd0,0x10,0x52,0x34,0x38,0xd0,0x10,0x90,0x50,0x28,0x28,0x28,0x44,0x44,0x82,
-+0x0,0x1,0x7a,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x7b,0x49,0x0,0x0,0x1,0xe,0x40,0x48,0x5c,0x48,0x48,0x58,0x48,0x48,0xf8,0x40,0xf8,0x10,0xa0,0x40,0xb0,0xe,
-+0x0,0x0,0x7,0x78,0x49,0x48,0x4f,0x48,0x4b,0x4a,0x4a,0x7b,0x4a,0x2,0x3,0x2,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x1,0x3f,0x8,0x4,0x7f,0x41,0x9f,0x11,0x11,0x11,0x1,0x1f,0x10,0x10,0x1f,0x10,0x0,0xf8,0x20,0x40,0xfe,0x2,0xf4,0x10,0x10,0x30,0x0,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x9,0x7c,0x4b,0x48,0x49,0x48,0x4f,0x48,0x48,0x49,0x7a,0x44,0x8,0x13,0x0,0x8,0x8,0x90,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0xa,0x7d,0x48,0x4f,0x48,0x49,0x4a,0x48,0x4f,0x49,0x7a,0x49,0x0,0x1,0x6,0x40,0x48,0x50,0x40,0xfc,0x40,0x50,0x48,0x80,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8,
-+0x22,0x11,0x0,0x7f,0x41,0x91,0x1f,0x21,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x8,0x10,0x20,0xfe,0x2,0x24,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x3,0x7a,0x4a,0x4b,0x4a,0x4b,0x4a,0x4a,0x4a,0x7a,0x42,0x4,0x4,0xb,0x10,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x40,0x88,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x1,0x1,0x7a,0x4b,0x48,0x4f,0x49,0x49,0x4a,0x4c,0x79,0x46,0x1,0xe,0x1,0x0,0x0,0xf0,0x10,0xf0,0x24,0xfe,0x0,0x88,0x50,0xe0,0x50,0xd0,0x4e,0x44,0x40,0x80,
-+0x0,0x0,0xb,0x7c,0x4b,0x48,0x4f,0x48,0x49,0x4b,0x4c,0x7b,0x48,0x1,0x6,0x0,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0xa0,0x10,0xf8,0x46,0xf8,0xc0,0x70,0x48,0x40,
-+0x1,0x1,0x17,0x79,0x57,0x51,0x5f,0x52,0x53,0x52,0x52,0x74,0x44,0x9,0x10,0x0,0x10,0x10,0xd0,0x14,0xfe,0x24,0xe4,0x28,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0x46,0x84,
-+0x0,0x0,0x7,0x78,0x4b,0x48,0x4f,0x48,0x48,0x4b,0x48,0x7b,0x49,0x2,0x4,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x40,0x90,0xe0,0x48,0xf8,0x50,0x4c,0x44,0x40,
-+0x2,0x12,0x7f,0x52,0x52,0x5f,0x52,0x57,0x5c,0x54,0x57,0x74,0x54,0x7,0x4,0x0,0x0,0x3c,0xa4,0x24,0xa4,0xe8,0x24,0xa4,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0xa0,0x20,
-+0x0,0x0,0xb,0x7c,0x48,0x4f,0x48,0x49,0x4b,0x48,0x4b,0x7a,0x4a,0x2,0xf,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x10,0xf8,0x0,0xf8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x0,0xf,0x72,0x53,0x52,0x53,0x52,0x5f,0x50,0x5f,0x50,0x74,0x55,0x2,0x5,0x8,0x8,0xfc,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x10,0xbc,0x84,0xa4,0x28,0x10,0x28,0xc6,
-+0x1,0x1,0x17,0x79,0x51,0x53,0x52,0x56,0x5a,0x52,0x52,0x72,0x52,0x2,0x2,0x2,0x20,0x28,0xfc,0x20,0x4,0xfe,0x8,0x8,0xe8,0xa8,0xa8,0xe8,0x8,0x8,0x28,0x10,
-+0x0,0x0,0x7,0x78,0x4b,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x7a,0x4f,0x1,0x2,0x4,0x40,0x44,0xfe,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x0,0x0,0x17,0x78,0x57,0x54,0x58,0x53,0x50,0x50,0x57,0x71,0x52,0x4,0x1,0x0,0x40,0x48,0xfc,0x40,0xfe,0x42,0x94,0xf0,0x40,0x88,0xfc,0x50,0x4c,0x44,0x40,0x80,
-+0x0,0x7,0x10,0x7b,0x52,0x52,0x53,0x50,0x57,0x55,0x54,0x75,0x54,0x4,0x4,0x4,0x4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xf4,0x44,0x44,0x54,0x8,
-+0x0,0x7,0x0,0x7b,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x49,0x79,0x4a,0x4,0x8,0x3,0x4,0xfe,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x90,0x60,0x90,0xe,
-+0x0,0x3,0x7a,0x4a,0x4b,0x4a,0x4a,0x4b,0x4a,0x4b,0x78,0x45,0x5,0x9,0x0,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0xa8,0x18,0x8,0xf8,0x0,0x44,0x22,0xa,0xf8,0x0,
-+0x0,0x0,0x7b,0x4a,0x4b,0x4a,0x4b,0x48,0x4f,0x48,0x49,0x7a,0x45,0x8,0x0,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x84,0xfe,0xa0,0x50,0x48,0xfe,0x44,0x40,0x40,
-+0x0,0x1,0xa,0x7c,0x49,0x4e,0x48,0x4b,0x48,0x4b,0x48,0x7b,0x48,0x0,0x0,0x7,0x90,0x18,0xa4,0x40,0xb0,0x4e,0xf0,0x90,0x60,0xa0,0x78,0x88,0x90,0x60,0xc0,0x0,
-+0x0,0x10,0x7b,0x52,0x51,0x57,0x54,0x58,0x57,0x51,0x51,0x73,0x52,0x4,0x8,0x3,0x10,0x78,0x80,0x48,0x50,0xfe,0x82,0x84,0xfc,0x0,0xf0,0x10,0xa0,0x40,0xb0,0xc,
-+0x0,0x2,0x1,0x78,0x4f,0x48,0x49,0x4a,0x48,0x4b,0x4a,0x7a,0x4a,0x2,0xf,0x0,0x0,0x8,0x10,0x4,0xfe,0xa0,0x18,0x8,0x0,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x8,0x4,0x12,0x7f,0x51,0x55,0x55,0x55,0x55,0x55,0x57,0x71,0x51,0x2,0x4,0x8,0x24,0x5e,0x94,0xf4,0x14,0x5c,0x54,0x54,0x54,0x5c,0xd4,0x54,0x24,0x24,0x54,0x88,
-+0x0,0x8,0x75,0x51,0x53,0x59,0x55,0x51,0x57,0x55,0x55,0x75,0x59,0x9,0x8,0x0,0x80,0x88,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x48,0x28,0x8,0xfc,0x8,0x30,
-+0x1,0x8,0x74,0x54,0x51,0x51,0x5d,0x55,0x55,0x55,0x55,0x75,0x55,0xa,0x11,0x0,0xfc,0x8,0x50,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x2c,0x6,0xfc,0x0,
-+0x0,0x2,0x7a,0x4b,0x48,0x4f,0x48,0x48,0x4b,0x4a,0x4a,0x7b,0x4a,0x0,0x7,0x0,0x40,0x48,0x48,0xf8,0x40,0xfe,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x48,0xfc,0x4,
-+0x11,0x11,0x27,0x22,0x7d,0x17,0x21,0x79,0x7,0xf9,0x1,0x1f,0x10,0x10,0x1f,0x10,0x8,0x8,0xd0,0x10,0x3c,0xc8,0x10,0x3c,0xc0,0x3e,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x2,0x12,0x7f,0x52,0x53,0x51,0x57,0x55,0x55,0x57,0x51,0x5f,0x71,0x1,0x1,0x1,0x90,0x90,0xf0,0x94,0xbe,0x14,0xd4,0x54,0x54,0xd4,0x14,0xf4,0x24,0x24,0x54,0x88,
-+0x0,0x0,0xf,0x70,0x57,0x54,0x57,0x54,0x57,0x50,0x53,0x72,0x53,0x2,0x3,0x2,0xa0,0xa4,0xfe,0xa0,0xfc,0xa4,0xfc,0xa4,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x7,0x70,0x50,0x57,0x54,0x54,0x57,0x50,0x57,0x50,0x7f,0x51,0x2,0x5,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x0,0xfc,0x0,0xfe,0x50,0x4c,0x44,0x80,
-+0x0,0x0,0x77,0x54,0x55,0x55,0x55,0x55,0x57,0x55,0x55,0x7b,0x4d,0x11,0x23,0x0,0x28,0x24,0xfe,0x20,0x20,0xe4,0x24,0x24,0xe8,0x28,0x28,0x90,0x50,0x2a,0x4a,0x84,
-+0x7,0x14,0x7d,0x55,0x56,0x56,0x55,0x58,0x50,0x5f,0x51,0x72,0x51,0x0,0x1,0x6,0xbc,0xa4,0xac,0xac,0xb4,0xb4,0x28,0xc4,0x80,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8,
-+0x0,0x14,0x7c,0x57,0x50,0x57,0x54,0x54,0x57,0x54,0x54,0x77,0x54,0x8,0xa,0x11,0x40,0x44,0x44,0xfc,0x4,0xbe,0xa4,0xa4,0xbc,0xa4,0xa4,0xbc,0xa4,0xa4,0xd4,0x8,
-+0x4,0x2,0x72,0x5f,0x54,0x54,0x57,0x55,0x55,0x55,0x55,0x75,0x49,0xb,0x10,0x0,0x20,0x24,0x3e,0x40,0xa0,0x24,0x3e,0x50,0x14,0xfe,0x10,0x10,0x28,0x28,0x44,0x82,
-+0x0,0x10,0x7f,0x51,0x50,0x57,0x54,0x54,0x57,0x54,0x55,0x75,0x55,0x5,0x4,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x44,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x0,0x0,0x7,0x74,0x58,0x51,0x55,0x55,0x59,0x52,0x5c,0x72,0x52,0x2,0x3,0x0,0x80,0x40,0xfe,0x2,0x94,0x50,0x24,0x4a,0x8a,0xf8,0x40,0x48,0x48,0x48,0xf8,0x8,
-+0x1,0x1,0xf,0x71,0x57,0x50,0x57,0x54,0x54,0x57,0x50,0x74,0x52,0xf,0x0,0x0,0x4,0x44,0xe4,0x8,0xc8,0x10,0xc4,0x44,0x48,0xd2,0x2,0x44,0x84,0xe8,0x10,0x20,
-+0x0,0x7,0x74,0x56,0x55,0x57,0x54,0x56,0x56,0x56,0x7b,0x48,0x8,0x11,0x22,0x0,0x4,0xfe,0x8,0x28,0x4e,0xf2,0x84,0xa8,0xa8,0xa8,0xe8,0xa8,0x88,0x14,0x24,0x42,
-+0x0,0x8,0x7f,0x48,0x4a,0x49,0x4b,0x4e,0x4b,0x4a,0x4b,0x78,0x49,0x2,0x5,0x0,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x0,0x2,0x79,0x48,0x4f,0x49,0x48,0x4b,0x48,0x4b,0x48,0x7f,0x48,0x1,0x1,0x6,0xa0,0xa8,0xb0,0xa4,0xfe,0x10,0xa0,0xf8,0x40,0xf8,0x40,0xfe,0xa0,0x10,0x10,0xc,
-+0x1,0x9,0x7d,0x49,0x49,0x48,0x4f,0x4a,0x4b,0x4a,0x4b,0x7a,0x43,0xe,0x4,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0xfc,0x44,0xe8,0x68,0xd0,0x68,0x46,0x40,
-+0x0,0x8,0x7d,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x2,0x2,0x4,0xa0,0x90,0xfc,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0xa8,0xa4,0x4,
-+0x0,0x1,0x77,0x54,0x55,0x54,0x57,0x54,0x55,0x56,0x70,0x4f,0x0,0x1,0x2,0xc,0x80,0x4,0xfe,0x44,0x54,0x44,0xfc,0xc4,0x74,0x4c,0x40,0xfe,0xa0,0x10,0x8,0x6,
-+0x0,0x0,0x10,0x79,0x52,0x55,0x58,0x52,0x52,0x53,0x50,0x77,0x54,0x5,0x4,0x4,0x40,0x40,0xa0,0x10,0x48,0xf6,0xa0,0x48,0xa8,0xf8,0x44,0xfe,0x94,0xf4,0x4,0xc,
-+0x1,0x11,0x7a,0x57,0x5c,0x57,0x54,0x57,0x50,0x5f,0x50,0x73,0x52,0x3,0x2,0x3,0x0,0xf0,0x20,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x2,0x11,0x78,0x57,0x54,0x55,0x54,0x57,0x50,0x53,0x52,0x72,0x53,0x2,0x2,0x3,0x8,0x10,0xa4,0xfe,0x44,0x54,0x44,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x0,0x7,0x71,0x55,0x52,0x53,0x54,0x5b,0x52,0x52,0x53,0x70,0x52,0x1,0x1f,0x0,0x40,0x48,0x30,0x24,0x18,0xf0,0x8,0xf6,0x10,0x10,0xf0,0x0,0x10,0x24,0xfe,0x0,
-+0x1,0xf,0x71,0x50,0x57,0x50,0x53,0x52,0x53,0x50,0x57,0x74,0x55,0x5,0x5,0x4,0x10,0xfe,0x10,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x14,0xf4,0xc,
-+0x1,0x11,0x7f,0x51,0x53,0x55,0x59,0x51,0x57,0x50,0x5f,0x70,0x52,0x4,0x9,0x0,0x10,0x14,0xfe,0x10,0xb8,0x54,0x12,0x10,0xfc,0x0,0xfe,0x40,0x48,0x46,0x42,0x80,
-+0x0,0x10,0x78,0x57,0x54,0x57,0x54,0x54,0x57,0x54,0x55,0x7a,0x49,0x10,0x23,0x0,0x48,0x7c,0x40,0xfe,0x42,0xf8,0x40,0x38,0xfe,0x80,0x48,0xb0,0x70,0xae,0x24,0x60,
-+0x0,0x0,0x77,0x52,0x51,0x5f,0x50,0x53,0x52,0x53,0x52,0x73,0x54,0x5,0x9,0x1,0x80,0x40,0xfc,0x8,0x10,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x44,0x42,0x12,0xf0,
-+0x0,0x0,0x77,0x55,0x5b,0x51,0x53,0x51,0x5f,0x51,0x52,0x75,0x48,0x0,0x7,0x0,0x80,0x40,0xfe,0x12,0xfc,0x10,0xf8,0x10,0xfe,0x50,0x48,0xf6,0x40,0x48,0xfc,0x0,
-+0x0,0x7,0x74,0x54,0x54,0x57,0x54,0x54,0x57,0x56,0x76,0x4a,0xa,0x13,0x22,0x0,0x10,0xc8,0x7e,0x40,0x54,0xd4,0x3e,0x8,0xc8,0x48,0x7e,0x48,0x48,0xc8,0x48,0x8,
-+0x0,0x7,0x70,0x57,0x54,0x5b,0x50,0x53,0x50,0x5f,0x50,0x77,0x54,0x4,0x4,0x4,0x8,0xfc,0x40,0xfe,0x42,0x5c,0x40,0x58,0x4,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xc,
-+0x0,0x0,0x77,0x55,0x59,0x52,0x56,0x51,0x53,0x54,0x5b,0x70,0x51,0x2,0x5,0x0,0x80,0x40,0xfe,0x2,0xbc,0xa8,0xb0,0x10,0xf8,0x6,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x0,0x7,0x70,0x57,0x55,0x58,0x51,0x51,0x53,0x56,0x5b,0x72,0x53,0x2,0x3,0x2,0x8,0xfc,0x40,0xfe,0x52,0xe4,0x50,0x20,0xfc,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x0,0x17,0x78,0x53,0x52,0x57,0x55,0x5b,0x51,0x57,0x51,0x7f,0x51,0x3,0xd,0x1,0x48,0xfc,0x40,0xf8,0x8,0xfe,0x12,0xfc,0x10,0xfc,0x10,0xfe,0x48,0x30,0x9e,0x4,
-+0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x7f,0x40,0x4f,0x40,0x40,0x41,0x5f,0x41,0x41,0x41,0x41,0x43,0x40,0x7f,0x40,0x4,0xfe,0x4,0xe4,0x44,0x84,0x24,0xf4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x7f,0x42,0x42,0x42,0x7f,0x44,0x44,0x48,0x44,0x43,0x42,0x44,0x48,0x7f,0x40,0x4,0xfe,0x4,0x4,0x14,0xfc,0x44,0x44,0x44,0x44,0x84,0x84,0x64,0x14,0xfc,0x4,
-+0x0,0x7f,0x41,0x41,0x42,0x44,0x48,0x54,0x64,0x45,0x46,0x44,0x43,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x84,0x44,0x24,0x5c,0x84,0x4,0x4,0x24,0xe4,0x4,0xfc,0x4,
-+0x0,0x7f,0x48,0x48,0x4f,0x54,0x54,0x64,0x48,0x49,0x51,0x62,0x44,0x40,0x7f,0x40,0x4,0xfe,0x4,0x14,0xfc,0x94,0x94,0x94,0x94,0x14,0x14,0x54,0x24,0x4,0xfc,0x4,
-+0x0,0x7f,0x41,0x41,0x42,0x44,0x4a,0x51,0x6f,0x40,0x44,0x42,0x41,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x84,0x44,0x24,0x1c,0xe4,0x24,0x44,0x84,0x4,0x84,0xfc,0x4,
-+0x0,0x7f,0x42,0x42,0x7f,0x44,0x47,0x4c,0x57,0x64,0x47,0x44,0x44,0x44,0x7f,0x40,0x4,0xfe,0x4,0x14,0xfc,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xa4,0x44,0xfc,0x4,
-+0x0,0x7f,0x40,0x5f,0x42,0x4f,0x44,0x7f,0x40,0x4f,0x48,0x48,0x4f,0x40,0x7f,0x40,0x4,0xfe,0x4,0xf4,0x4,0xe4,0x24,0xfc,0x4,0xe4,0x24,0x24,0xe4,0x4,0xfc,0x4,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x4f,0x41,0x5f,0x40,0x44,0x42,0x41,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0xf4,0x4,0xe4,0x4,0xf4,0x24,0x44,0x84,0x4,0x84,0xfc,0x4,
-+0x0,0x7f,0x41,0x41,0x5f,0x41,0x7f,0x44,0x42,0x4f,0x41,0x5f,0x41,0x41,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0xfc,0x44,0x84,0xe4,0x4,0xf4,0x4,0x4,0xfc,0x4,
-+0x0,0x7f,0x40,0x5f,0x52,0x5f,0x40,0x7f,0x48,0x4f,0x45,0x4c,0x56,0x44,0x7f,0x40,0x4,0xfe,0x4,0xf4,0x94,0xf4,0x4,0xfc,0x24,0xe4,0x44,0x84,0x74,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x7f,0x54,0x54,0x55,0x54,0x54,0x57,0x5c,0x54,0x10,0x10,0x10,0x10,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0xfe,0x22,0x22,0x2a,0x24,0x20,0x20,
-+0x10,0x10,0x11,0x7d,0x55,0x55,0x56,0x54,0x57,0x54,0x5c,0x54,0x10,0x10,0x11,0x16,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x88,0x4,0x2,
-+0x10,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x55,0x12,0x12,0x14,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x8,0x48,0x50,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x8,0xfe,0x12,0x32,0xc,0x12,0x61,0x1,0x1f,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x0,0xfc,0x44,0x28,0x10,0x28,0x46,0x10,0xf8,0x10,0x10,0x50,0x20,0x0,0x0,
-+0x10,0x10,0x13,0x7c,0x55,0x54,0x57,0x54,0x54,0x55,0x5d,0x52,0x14,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x88,0x88,0xfe,0x8,0x88,0x48,0x8,0x28,0x10,
-+0x10,0x10,0x11,0x7c,0x55,0x54,0x57,0x54,0x55,0x55,0x5d,0x55,0x11,0x10,0x10,0x13,0x20,0x28,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0x24,0x24,0x20,0x58,0x86,0x2,
-+0x10,0x11,0x11,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x55,0x11,0x11,0x11,0x11,0x4,0xfe,0x4,0xfc,0x24,0x24,0xfc,0x24,0x34,0x2c,0x24,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x7d,0x55,0x57,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x11,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x10,0x11,0x11,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x56,0x12,0x14,0x19,0x10,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x20,0x48,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x21,0x21,0x21,0xf9,0xa9,0xa8,0xab,0xaa,0xab,0xa8,0xab,0xb9,0x20,0x20,0x21,0x2e,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x94,0xfc,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe,
-+0x10,0x11,0x10,0x7c,0x57,0x54,0x55,0x55,0x55,0x55,0x5d,0x54,0x13,0x10,0x10,0x10,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20,
-+0x10,0x11,0x10,0x7c,0x57,0x54,0x54,0x55,0x54,0x55,0x5c,0x57,0x10,0x10,0x10,0x13,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x50,0x88,0x6,
-+0x10,0x10,0x13,0x7d,0x54,0x57,0x54,0x54,0x57,0x54,0x5d,0x55,0x11,0x11,0x11,0x11,0x8,0x1c,0xe0,0x24,0xa8,0xfe,0x70,0xa8,0x26,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x4,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x8,0x8,0x8,0x14,0x12,0x21,0x20,0x41,0x86,0x18,0x0,0x8,0x8,0xf8,0x0,0xf0,0x20,0x40,0x80,0xf0,0x10,0x20,0xc0,0x40,0x30,0xe,
-+0x10,0x10,0x11,0x10,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x54,0x7d,0x5,0x2,0x4,0x0,0x4,0xfe,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x8,0x8,0x8,0x8,
-+0x10,0x10,0x10,0x13,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x54,0x7c,0x4,0x1,0x6,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xfc,0x84,0x88,0x50,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x0,0x4,0xfe,0x0,0x4,0x44,0x28,0x28,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0xfe,0x0,
-+0x10,0x10,0x11,0x10,0x55,0x55,0x55,0x54,0x54,0x54,0x54,0x55,0x7e,0x4,0x0,0x0,0x0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x54,0x7d,0x5,0x2,0xc,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x68,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x0,0x0,0x3f,0x2,0x2,0xff,0x4,0x8,0x31,0xc1,0x11,0x11,0x11,0x11,0x1f,0x0,0x10,0x38,0xc0,0x0,0x4,0xfe,0x40,0x30,0xe,0x4,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x1,0x21,0x21,0x3f,0x21,0x2,0x4,0xa,0x31,0xc0,0xf,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x8,0xf8,0x8,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x20,0x40,0x80,0x0,
-+0x1,0x21,0x21,0x3f,0x0,0x1f,0x10,0x10,0x14,0x12,0x11,0x12,0x24,0x28,0x40,0x80,0x0,0x8,0x8,0xf8,0x0,0xf0,0x10,0x10,0x50,0x90,0x10,0x90,0x50,0x52,0xa,0x4,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0x55,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x7d,0x5,0x1,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x21,0x21,0x3f,0x0,0xff,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x8,0x8,0xf8,0x4,0xfe,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x10,0x50,0x20,
-+0x1,0x21,0x21,0x3f,0x2,0x2,0xff,0x4,0x4,0x8,0x1f,0x0,0x8,0x10,0x62,0x1,0x0,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x80,0x90,0xf8,0x80,0x90,0x8c,0x84,0x0,
-+0x10,0x10,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7c,0x4,0x0,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x10,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x9,0x9,0x11,0x11,0x3f,0x50,0x90,0x10,0x11,0x1,0x21,0x21,0x21,0x21,0x3f,0x0,0x0,0x40,0x24,0xfe,0x0,0x80,0x84,0x44,0x3c,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0x55,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x4,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x28,0x10,
-+0x1,0x21,0x21,0x3f,0x4,0x78,0x42,0x42,0x42,0x42,0x4e,0x72,0x4,0x4,0x18,0x60,0x0,0x8,0x8,0xf8,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xa4,0x98,0x80,0x80,0x80,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x0,0x4,0xfe,0x4,0x4,0xfc,0x20,0x20,0x24,0xfe,0x10,0x10,0x10,0x8,0x4a,0x86,0x2,
-+0x10,0x13,0x10,0x10,0x54,0x54,0x57,0x54,0x55,0x54,0x54,0x57,0x7c,0x4,0x0,0x0,0x0,0xfc,0x88,0x50,0x20,0xd8,0x6,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x1,0x4,0xfe,0x4,0x14,0xfc,0x4,0x4,0x74,0x54,0x54,0x54,0x74,0x54,0x4,0x14,0x8,
-+0x20,0x20,0x23,0x20,0xa8,0xaf,0xa8,0xa9,0xa9,0xab,0xad,0xa9,0xf9,0x9,0x2,0x4,0x8,0x3c,0xc0,0x40,0x44,0xfe,0xa0,0x10,0x18,0x16,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x10,0x10,0x55,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10,
-+0x10,0x10,0x10,0x11,0x56,0x55,0x54,0x54,0x57,0x54,0x54,0x55,0x7c,0x4,0x0,0x0,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xa0,0x40,
-+0x10,0x10,0x17,0x10,0x54,0x57,0x56,0x54,0x55,0x54,0x54,0x54,0x7c,0x4,0x1,0x2,0x90,0x94,0xfe,0x90,0x0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x88,0x88,0x28,0x10,
-+0x10,0x10,0x10,0x13,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x54,0x7c,0x5,0x2,0x0,0x20,0x20,0x24,0xfe,0x20,0x24,0xa8,0x20,0xfe,0x20,0x70,0xa8,0xa8,0x24,0x22,0x20,
-+0x1,0x21,0x21,0x3f,0x8,0x8,0x8,0x7e,0x9,0x1d,0x2a,0x28,0x48,0x89,0x9,0x8,0x0,0x8,0x8,0xf8,0x0,0x10,0x90,0x90,0x8,0x48,0x46,0x80,0x90,0x8,0xfc,0x4,
-+0x10,0x10,0x10,0x13,0x54,0x54,0x55,0x57,0x55,0x55,0x55,0x55,0x7d,0x4,0x0,0x0,0x20,0x20,0x24,0xfe,0x50,0xa8,0xfc,0x26,0x24,0xfc,0x24,0x24,0xfc,0x20,0x22,0x1e,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x21,0x2f,0x21,0x27,0x24,0x24,0x27,0x20,0x3f,0x20,0x0,0x8,0x8,0xf8,0x0,0xf8,0x8,0xe8,0x8,0xc8,0x48,0x48,0xc8,0x8,0xf8,0x8,
-+0x11,0x10,0x10,0x10,0x55,0x54,0x57,0x54,0x54,0x55,0x56,0x54,0x7c,0x4,0x0,0x0,0x8,0x90,0x60,0x90,0x48,0x40,0xfe,0x80,0xf8,0x88,0xf8,0x88,0xf8,0x88,0xa8,0x90,
-+0x10,0x10,0x13,0x10,0x55,0x55,0x55,0x54,0x55,0x54,0x54,0x57,0x7c,0x4,0x1,0x0,0x80,0x48,0xfc,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x10,0x60,0xfe,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x10,0x11,0x55,0x56,0x54,0x55,0x54,0x55,0x54,0x54,0x7c,0x4,0x3,0x0,0x40,0x20,0x20,0xfe,0x2,0x54,0x88,0x4,0x0,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x2,0x4,0x8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x10,0x54,0x54,0x54,0x7c,0x10,0x12,0x92,0x92,0xfe,0x2,
-+0x10,0x10,0x13,0x10,0x54,0x55,0x55,0x56,0x54,0x55,0x54,0x54,0x7c,0x5,0x2,0x0,0x88,0x88,0xfe,0x88,0x0,0xfe,0x2,0x24,0x20,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20,
-+0x10,0x13,0x10,0x10,0x55,0x55,0x55,0x55,0x54,0x54,0x57,0x54,0x7c,0x4,0x0,0x3,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x40,0x44,0xfe,0x88,0x90,0x60,0x98,0x4,
-+0x1,0x21,0x21,0x3f,0x0,0x3f,0x20,0x3f,0x24,0x3f,0x24,0x29,0x46,0x45,0x98,0x0,0x0,0x8,0x8,0xf8,0x50,0xfe,0x40,0xc4,0x44,0xc8,0xa8,0x30,0x20,0x52,0x8a,0x6,
-+0x1,0x21,0x21,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x2,0x51,0x51,0x90,0xf,0x0,0x0,0x8,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x0,0x8,0x6,0x12,0xf0,0x0,
-+0x1,0x21,0x21,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x12,0x2,0x4,0x8,0x30,0x40,0x0,0x8,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x90,0xa8,0xba,0x82,0x7e,0x0,
-+0x1,0x21,0x21,0x3f,0x1,0x6,0x38,0xcf,0x0,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x26,0x0,0x8,0x8,0xf8,0x0,0xc0,0x30,0xee,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x18,
-+0x11,0x10,0x10,0x13,0x54,0x55,0x54,0x57,0x54,0x54,0x55,0x55,0x7e,0x4,0xb,0x0,0x8,0x90,0xa0,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x11,0x10,0x54,0x57,0x54,0x54,0x55,0x54,0x57,0x54,0x55,0x7c,0x4,0x0,0x3,0x20,0x24,0xa8,0x20,0xfe,0x20,0xa8,0x24,0x40,0xfe,0x88,0x8,0x90,0x60,0x98,0x4,
-+0x11,0x10,0x10,0x13,0x54,0x54,0x55,0x55,0x57,0x54,0x55,0x55,0x7e,0x3,0x0,0x0,0x4,0x88,0x0,0xfe,0x88,0x88,0x10,0x54,0xb8,0x88,0x10,0x14,0xa4,0xfc,0x84,0x0,
-+0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x2,0x4,0x0,0x4,0xfe,0x24,0x24,0xfc,0x0,0x4,0x7e,0x44,0x7c,0x44,0x7c,0x44,0x44,0x7c,0x44,
-+0x20,0x20,0x27,0x20,0xaf,0xa8,0xa9,0xaf,0xa9,0xaf,0xa8,0xa9,0xf9,0xa,0x4,0x0,0x8,0x3c,0xc0,0x44,0xfe,0x40,0x50,0x5c,0x50,0x5c,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x1,0x21,0x3f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x2f,0x28,0x2f,0x20,0x0,0x8,0xf8,0x0,0xfe,0x0,0xf0,0x10,0xf0,0x0,0xf8,0x8,0xe8,0x28,0xe8,0x18,
-+0x20,0x22,0x21,0xaa,0xa8,0xa9,0xab,0xad,0xa9,0xa9,0xa9,0xa9,0xf9,0x9,0x1,0x1,0x40,0x48,0x50,0x48,0xa0,0x10,0xfe,0x14,0x10,0xf0,0x10,0x10,0xf0,0x10,0x50,0x20,
-+0x10,0x13,0x10,0x54,0x57,0x54,0x55,0x55,0x55,0x55,0x55,0x54,0x7f,0x4,0x0,0x0,0x20,0xfe,0x88,0x50,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20,
-+0x20,0x22,0x21,0x20,0xaf,0xa9,0xaa,0xac,0xaa,0xab,0xac,0xaa,0xf9,0x9,0x2,0x4,0x40,0x48,0x50,0x44,0xfe,0x50,0x48,0x44,0x8,0xbc,0xa8,0xa8,0x7e,0x8,0x8,0x8,
-+0x20,0x27,0x20,0x22,0xa9,0xa9,0xaa,0xac,0xab,0xaa,0xaa,0xab,0xf9,0x8,0x7,0x0,0x20,0xa8,0xb0,0xa4,0x18,0xf0,0xe,0x4,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0,
-+0x1,0x1,0x45,0x7f,0x51,0x59,0x6b,0x5d,0x69,0x5d,0x6b,0x49,0x59,0x41,0x7f,0x40,0x0,0x0,0x14,0xfc,0x44,0x64,0xac,0x74,0xa4,0x74,0xac,0x24,0x64,0x4,0xfc,0x4,
-+0x1,0x21,0x3f,0x0,0x26,0x38,0x21,0x1f,0x20,0x3e,0x48,0xa,0xff,0x14,0x22,0x41,0x0,0x8,0xf8,0x0,0xfc,0x8,0x30,0x10,0xfe,0x14,0x50,0x5c,0x50,0xb0,0x90,0xe,
-+0x1,0x21,0x3f,0x8,0xff,0x8,0x3e,0x22,0x2a,0x2a,0x2a,0x2a,0xff,0x8,0x14,0x62,0x0,0x8,0xf8,0x0,0xfe,0x20,0x7c,0x44,0x54,0x54,0x54,0x54,0x54,0x28,0x26,0xc2,
-+0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x1,0x3,0x5,0x9,0x31,0x1,0x1,0x1,0x1,0x80,0x80,0x0,0x0,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x10,0x27,0x40,0x8,0x10,0x20,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x10,0x80,0x40,0x44,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x8,0x8,0x11,0x21,0x49,0x9,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x1f,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0,
-+0x8,0x8,0x10,0x20,0x49,0xa,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10,
-+0xa,0x9,0x10,0x20,0x4b,0x8,0x10,0x37,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0x8,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x8,0x8,0x10,0x21,0x4b,0x8,0x10,0x37,0x51,0x91,0x12,0x15,0x10,0x10,0x11,0x16,0x40,0x40,0x88,0x10,0xe0,0x40,0x88,0xfc,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,
-+0x8,0x8,0x10,0x27,0x48,0xa,0x11,0x37,0x50,0x90,0x11,0x12,0x14,0x18,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x40,0xe0,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x8,0x8,0x12,0x22,0x4a,0xa,0x17,0x30,0x50,0x92,0x12,0x12,0x13,0x14,0x14,0x18,0x40,0x40,0x48,0x7c,0x40,0x44,0xfe,0x40,0x40,0x48,0x7c,0x40,0x40,0xc0,0x66,0x1c,
-+0x8,0x8,0x12,0x21,0x49,0x8,0x17,0x34,0x54,0x95,0x15,0x15,0x15,0x14,0x14,0x14,0x40,0x48,0x4c,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x8,0x8,0x13,0x22,0x4b,0xa,0x13,0x30,0x57,0x90,0x10,0x13,0x10,0x10,0x1f,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x8,0x8,0x17,0x22,0x49,0x9,0x12,0x33,0x54,0x90,0x1f,0x10,0x12,0x12,0x13,0x10,0x8,0x7c,0x80,0x48,0x48,0x50,0x0,0xfc,0x40,0x44,0xfe,0x40,0x48,0x48,0xf8,0x8,
-+0x12,0x12,0x2a,0x4a,0x8f,0x10,0x2f,0x60,0xaf,0x22,0x2f,0x22,0x23,0x2e,0x20,0x21,0x10,0x10,0x90,0xa4,0xbe,0x44,0xa4,0x28,0xa8,0x10,0x90,0x28,0xa8,0x44,0x86,0x0,
-+0x12,0x14,0x2f,0x48,0x8f,0x18,0x2f,0x62,0xbf,0x24,0x27,0x24,0x28,0x2b,0x30,0x21,0x10,0x10,0x90,0xa4,0xbe,0xc4,0xa4,0x28,0xa8,0x10,0x90,0xa8,0xa8,0x44,0x86,0x0,
-+0xe,0x1a,0x2e,0x4a,0x8e,0x1a,0x2e,0x64,0xa7,0x2c,0x37,0x24,0x27,0x24,0x27,0x24,0xe0,0xa4,0xfe,0xa0,0xe0,0xa0,0xfe,0x84,0xe4,0x84,0xe4,0x84,0xe4,0x84,0xf4,0x8,
-+0x0,0x0,0x8,0x10,0x20,0x40,0x8,0x10,0x20,0x40,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x88,0x50,0x20,0x50,0x88,0x8,0x18,0x28,0x48,0x88,0x8,0x8,0x8,0x50,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x88,0x50,0x20,0x57,0x88,0x8,0x18,0x28,0x49,0x89,0x9,0xa,0xa,0x54,0x28,0x80,0x80,0x80,0x90,0xf8,0x90,0x90,0x90,0x90,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x4,0x8b,0x50,0x20,0x50,0x88,0xf,0x18,0x28,0x48,0x88,0x8,0x8,0x8,0x50,0x20,0x10,0xf8,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x4,0x88,0x50,0x21,0x51,0x89,0x9,0x19,0x29,0x49,0x89,0x9,0xa,0xa,0x54,0x28,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x4,0x8b,0x50,0x21,0x51,0x89,0x9,0x19,0x29,0x48,0x88,0xf,0x8,0x8,0x50,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10,
-+0x4,0x88,0x53,0x20,0x50,0x88,0x8,0x18,0x2b,0x48,0x88,0x8,0x8,0x8,0x57,0x20,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0xfe,0x0,
-+0x4,0x88,0x50,0x20,0x51,0x8a,0xb,0x18,0x28,0x48,0x88,0x8,0x9,0x9,0x52,0x24,0x40,0x40,0x40,0x90,0x8,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x4,0x88,0x51,0x21,0x51,0x89,0x9,0x19,0x29,0x49,0x89,0x9,0x8,0x8,0x50,0x20,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,
-+0x5,0x89,0x51,0x22,0x52,0x8d,0x9,0x19,0x29,0x49,0x89,0x9,0x9,0x9,0x50,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x28,0x10,0x2,0x2,0xfe,0x0,
-+0x4,0x88,0x50,0x27,0x50,0x88,0xb,0x1a,0x2a,0x4b,0x88,0x8,0x9,0x9,0x52,0x24,0xa0,0xa0,0xa8,0xfc,0xa8,0xa8,0xf8,0xa0,0xa4,0xfe,0xa4,0xa4,0x34,0x28,0x20,0x20,
-+0x4,0x88,0x50,0x20,0x57,0x88,0x9,0x19,0x2f,0x49,0x89,0x9,0x9,0xa,0x50,0x20,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0x28,0xe8,0x28,0x28,0x10,0x12,0x2a,0xc6,0x2,
-+0x4,0x88,0x50,0x21,0x52,0x8c,0x9,0x18,0x28,0x4f,0x88,0x8,0x9,0xa,0x53,0x20,0x40,0x40,0xa0,0x10,0xe,0x24,0xf0,0x0,0x4,0xfe,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x4,0x88,0x53,0x22,0x54,0x88,0x8,0x1f,0x28,0x49,0x88,0x8,0x8,0x8,0x50,0x20,0x40,0x20,0xfe,0x2,0x14,0x10,0x14,0xfe,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20,
-+0x0,0x88,0x57,0x20,0x51,0x92,0x12,0x33,0x56,0x9a,0x12,0x12,0x12,0x1a,0xa4,0x40,0x10,0x10,0x90,0x90,0x10,0x10,0xd8,0x54,0x54,0x52,0x92,0x10,0x10,0x10,0x50,0x20,
-+0x4,0x8a,0x52,0x22,0x53,0x8a,0xa,0x1a,0x2b,0x48,0x88,0xb,0x8,0x8,0x57,0x20,0x0,0x20,0x24,0x28,0xb0,0x20,0x22,0xa2,0x1e,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x4,0x89,0x51,0x21,0x51,0x88,0xb,0x1a,0x2a,0x4b,0x8a,0xa,0xb,0xa,0x52,0x22,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8,
-+0x4,0x88,0x57,0x21,0x51,0x91,0x1f,0x31,0x53,0x93,0x15,0x15,0x19,0x11,0xa1,0x41,0x4,0xc4,0x4,0x14,0x14,0x54,0xf4,0x14,0x14,0x94,0x54,0x14,0x4,0x4,0x14,0x8,
-+0x4,0x88,0x50,0x21,0x52,0x8d,0x8,0x18,0x2f,0x48,0x89,0x9,0xa,0xc,0x51,0x20,0x40,0x40,0xa0,0x10,0x8,0xf6,0x40,0x48,0xfc,0x40,0x50,0x48,0x44,0x44,0x40,0x80,
-+0x4,0x88,0x50,0x21,0x52,0x8c,0xb,0x18,0x28,0x4a,0x89,0x9,0x9,0x8,0x57,0x20,0x40,0x40,0xa0,0x10,0x8,0x6,0xf8,0x0,0x8,0x48,0x48,0x50,0x50,0x4,0xfe,0x0,
-+0x4,0x88,0x57,0x20,0x50,0x8b,0x8,0x1b,0x28,0x48,0x8b,0xa,0xa,0xa,0x53,0x22,0x80,0x44,0xfe,0x0,0x0,0xfc,0x0,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x88,0x51,0x22,0x57,0x91,0x12,0x35,0x51,0x91,0x13,0x14,0x10,0x10,0xa1,0x46,0x40,0x80,0x10,0x8,0xfc,0x10,0x8,0x4,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x4,0x88,0x57,0x20,0x50,0x89,0xf,0x18,0x2b,0x4a,0x8a,0xa,0xb,0xa,0x50,0x20,0x40,0x44,0xfe,0x40,0xa0,0x14,0xfe,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x4,0x8b,0x52,0x22,0x53,0x8a,0xa,0x1b,0x28,0x4f,0x88,0x8,0x9,0xa,0x54,0x20,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x4,0x8f,0x54,0x24,0x54,0x97,0x14,0x10,0x31,0x52,0x95,0x10,0x10,0x10,0xa1,0x46,0x4,0xfe,0xa4,0xa4,0xa4,0xfc,0x84,0x80,0xf8,0x8,0x8,0x90,0x60,0x40,0x80,0x0,
-+0x4,0x88,0x53,0x22,0x52,0x8b,0xa,0x1a,0x2b,0x4a,0x88,0x8,0x8,0x9,0x52,0x24,0x0,0x44,0x9e,0x4,0x4,0x9c,0x4,0x4,0xfc,0x94,0x90,0x90,0x90,0x12,0x12,0xe,
-+0x4,0x88,0x50,0x21,0x52,0x95,0x18,0x30,0x57,0x90,0x13,0x12,0x12,0x12,0xa3,0x42,0x40,0x40,0xa0,0x10,0x8,0xf6,0x40,0x48,0xfc,0x40,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x88,0x57,0x21,0x51,0x89,0xa,0x1c,0x28,0x4f,0x88,0x8,0x8,0x8,0x50,0x20,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x8,0x8f,0x51,0x21,0x51,0x97,0x14,0x34,0x54,0x97,0x11,0x11,0x11,0x11,0xaa,0x44,0x20,0x20,0x20,0x40,0x7e,0x82,0x14,0x10,0x54,0x54,0x52,0x52,0x92,0x10,0x50,0x20,
-+0x5,0x89,0x51,0x21,0x5f,0x91,0x11,0x31,0x57,0x94,0x14,0x14,0x17,0x14,0xa0,0x41,0x4,0x3e,0x24,0x24,0xe4,0x3c,0x24,0x24,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8,
-+0x4,0x88,0x57,0x20,0x51,0x92,0x14,0x3b,0x52,0x93,0x12,0x13,0x12,0x10,0xaf,0x40,0x40,0x48,0xfc,0xe0,0x50,0x48,0x46,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0xfe,0x0,
-+0x4,0x8b,0x52,0x22,0x53,0x92,0x12,0x33,0x50,0x9f,0x12,0x12,0x12,0x12,0xa3,0x42,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x40,0x48,0x30,0x90,0xe,0x4,
-+0x0,0x8f,0x54,0x27,0x54,0x97,0x10,0x33,0x52,0x93,0x12,0x13,0x12,0x12,0xa2,0x42,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x4,0x8b,0x52,0x22,0x53,0x8a,0xa,0x1a,0x2a,0x4a,0x8a,0xa,0xa,0xa,0x54,0x28,0x4,0xfe,0x24,0x24,0xfc,0x0,0xfc,0x84,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x4,0x8b,0x50,0x20,0x57,0x88,0x9,0xa,0x18,0x2f,0x48,0x88,0x9,0xa,0x54,0x20,0x0,0xf8,0x90,0x60,0xfc,0xc4,0x48,0xc0,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40,
-+0x4,0x8f,0x51,0x20,0x5f,0x88,0xb,0x1a,0x2b,0x4a,0x8b,0x8,0xf,0x8,0x50,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40,
-+0x4,0x8f,0x51,0x20,0x5f,0x88,0xb,0x1a,0x2b,0x4a,0x8b,0x8,0x8,0x9,0x52,0x2c,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0xa0,0xa0,0x22,0x22,0x1e,
-+0x0,0x8f,0x58,0x2a,0x69,0xaf,0x28,0x2a,0x6a,0xaa,0x2b,0x28,0x28,0x29,0xb2,0x44,0x4,0xfe,0x0,0x28,0x48,0xee,0x92,0xa4,0xa8,0xa8,0xe8,0x88,0x94,0x14,0x24,0x42,
-+0x4,0x88,0x57,0x20,0x52,0x91,0x13,0x36,0x5b,0x92,0x13,0x10,0x12,0x14,0xa9,0x40,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80,
-+0x2,0x8a,0x53,0x24,0x59,0x97,0x15,0x35,0x57,0x95,0x15,0x17,0x15,0x15,0xa8,0x40,0x4,0x3e,0x94,0x94,0x14,0xec,0x40,0x58,0xde,0x68,0x48,0xfe,0x48,0x48,0xc8,0x8,
-+0x0,0x8b,0x50,0x2f,0x50,0x97,0x15,0x34,0x57,0x90,0x17,0x10,0x1f,0x15,0xa4,0x48,0x38,0xc0,0x44,0xfe,0x40,0xfc,0x54,0xe4,0xfc,0x40,0xfc,0x40,0xfe,0x24,0x92,0x2,
-+0x1,0x8f,0x51,0x27,0x54,0x97,0x11,0x32,0x57,0x9a,0x13,0x12,0x13,0x12,0xa3,0x42,0x10,0xfe,0x10,0xbc,0xa4,0xbc,0x40,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x0,0x10,0x10,0x10,0x1f,0x22,0x22,0x22,0x54,0x8c,0x8,0x8,0x10,0x20,0xc0,0x0,0x10,0x10,0x10,0x10,0xfc,0x10,0x90,0x90,0x90,0x94,0xfe,0x10,0x10,0x10,0x10,0x10,
-+0x1,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x8,0xff,0x8,0x1c,0x2a,0x49,0x88,0x8,0x20,0xa0,0x3c,0x44,0xa8,0x10,0x20,0x60,0xbe,0x22,0x44,0xa4,0x18,0x10,0x20,0xc0,
-+0x20,0x20,0x20,0x21,0x3a,0x4c,0x4b,0x4a,0xab,0x12,0x13,0x22,0x22,0x42,0x83,0x2,0x40,0x40,0xa0,0x10,0x8e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x48,0x30,0x90,0xc,0x4,
-+0x4,0xf,0x32,0x7,0x59,0x7f,0x40,0x9f,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x8,0x30,0x0,0xf0,0x60,0x80,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x20,0x18,
-+0x2,0x2,0x7,0x4,0xa,0x11,0x6,0x18,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x80,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x1e,0x24,0x28,0x40,0x90,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x23,0x20,0x3c,0x44,0x89,0x23,0x20,0x20,0x20,0x21,0x25,0x2a,0x32,0x24,0x0,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x94,0x94,0x94,0x24,0x24,0x44,0x44,0xa8,0x10,
-+0x20,0x20,0x20,0x3f,0x44,0x8a,0x22,0x22,0x22,0x22,0x23,0x20,0x28,0x30,0x20,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,
-+0x21,0x21,0x21,0x3d,0x46,0x89,0x20,0x23,0x20,0x20,0x20,0x24,0x28,0x30,0x20,0x0,0x0,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0xa,0xa,0x6,
-+0x20,0x20,0x23,0x3c,0x44,0x88,0x20,0x20,0x2f,0x20,0x20,0x24,0x28,0x30,0x27,0x0,0x8,0x3c,0xc0,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,
-+0x20,0x20,0x23,0x3c,0x44,0x88,0x20,0x2f,0x20,0x20,0x20,0x24,0x29,0x31,0x22,0xc,0x8,0x3c,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x20,0x20,0x21,0x3d,0x46,0x88,0x23,0x20,0x20,0x20,0x20,0x24,0x28,0x30,0x21,0x6,0x80,0x84,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x20,0x20,0x20,0x3c,0x45,0x8a,0x27,0x20,0x20,0x23,0x22,0x26,0x2a,0x32,0x23,0x2,0x40,0x40,0x80,0x80,0x10,0x8,0xfc,0x4,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x20,0x20,0x3f,0x46,0x8a,0x22,0x22,0x22,0x22,0x22,0x26,0x2a,0x32,0x22,0x2,0x40,0x40,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x20,0x20,0x23,0x3c,0x44,0x8b,0x22,0x24,0x21,0x20,0x20,0x27,0x28,0x30,0x21,0x0,0x40,0x48,0xfc,0x40,0x40,0xfc,0x4,0x8,0xf0,0x20,0x44,0xfe,0x40,0x40,0x40,0x80,
-+0x20,0x20,0x20,0x3c,0x45,0x8a,0x25,0x20,0x20,0x27,0x20,0x21,0x2a,0x34,0x21,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x20,0x23,0x22,0x3e,0x47,0x8a,0x22,0x23,0x22,0x22,0x23,0x26,0x2a,0x32,0x23,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x20,0x24,0xa8,0x30,0x22,0xa2,0x1e,0x0,
-+0x20,0x20,0x27,0x3c,0x45,0x8a,0x24,0x2b,0x22,0x23,0x22,0x23,0x2a,0x30,0x27,0x0,0x40,0x48,0xfc,0xe0,0x50,0x48,0x46,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0xfc,0x0,
-+0x20,0x20,0x21,0x3d,0x45,0x89,0x21,0x21,0x21,0x20,0x23,0x20,0x28,0x30,0x20,0x7,0x20,0xa4,0x2e,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0xd8,0x6,
-+0x21,0x21,0x27,0x39,0x49,0x93,0x2,0x23,0x22,0x23,0x20,0x27,0x28,0x31,0x22,0xc,0x10,0x14,0xfe,0x10,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0xa0,0x10,0xe,0x4,
-+0x21,0x20,0x27,0x38,0x4b,0x90,0xf,0x20,0x21,0x21,0x22,0x2b,0x34,0x28,0x17,0x0,0x10,0xa0,0xfc,0x40,0xfc,0x40,0xfe,0x88,0xfc,0x48,0x48,0xf8,0x88,0x88,0xfe,0x0,
-+0x21,0x21,0x27,0x39,0x49,0x90,0x3,0x22,0x23,0x20,0x27,0x20,0x2b,0x30,0x2f,0x0,0x10,0x14,0xfe,0x10,0xf0,0x40,0xf8,0x48,0xf8,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x0,
-+0x22,0x22,0x22,0x3f,0x4a,0x92,0xf,0x20,0x27,0x24,0x27,0x24,0x2f,0x34,0x25,0x4,0x88,0x88,0x88,0xd0,0x9e,0xa4,0xf4,0x14,0xd4,0x54,0xc8,0x48,0xd4,0x54,0x64,0x82,
-+0x20,0x27,0x24,0x3c,0x4f,0x94,0x4,0x27,0x21,0x27,0x21,0x21,0x2f,0x31,0x22,0x4,0x4,0xbe,0xa4,0xa4,0xbc,0x20,0xa4,0xbc,0x10,0xfc,0x10,0x14,0xfe,0x10,0xc,0x4,
-+0x20,0x2f,0x20,0x3b,0x4a,0x97,0x5,0x2b,0x21,0x23,0x21,0x27,0x29,0x33,0x2d,0x1,0x40,0xfe,0x40,0xf8,0x48,0xfe,0x12,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4,
-+0x1,0x0,0x3f,0x20,0x24,0x24,0x24,0x24,0x24,0x27,0x24,0x24,0x44,0x44,0x83,0x0,0x0,0x88,0xfc,0x0,0x0,0x0,0x8,0x30,0xc0,0x0,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x1,0x0,0x3f,0x20,0x20,0x2f,0x20,0x20,0x3f,0x21,0x21,0x21,0x42,0x42,0x84,0x18,0x0,0x88,0xfc,0x0,0x10,0xf8,0x80,0x84,0xfe,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,
-+0x1,0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x24,0x22,0x21,0x40,0x41,0x86,0x18,0x0,0x88,0xfc,0x80,0x84,0xfe,0x80,0x80,0xf8,0x10,0x20,0x40,0x80,0x60,0x1e,0x4,
-+0x1,0x0,0x3f,0x24,0x24,0x27,0x28,0x30,0x27,0x24,0x24,0x27,0x44,0x44,0x84,0x3,0x0,0x88,0xfc,0x0,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0xc8,0x28,0x12,0x2,0xfe,
-+0x1,0x0,0x3f,0x20,0x22,0x24,0x24,0x2f,0x34,0x24,0x24,0x24,0x45,0x46,0x84,0x4,0x0,0x88,0xfc,0x0,0x20,0x20,0x24,0xfe,0x60,0x70,0xa8,0xa8,0x26,0x24,0x20,0x20,
-+0x1,0x0,0x3f,0x24,0x22,0x3f,0x20,0x20,0x2f,0x20,0x20,0x3f,0x40,0x40,0x80,0x0,0x0,0x88,0xfc,0x10,0x20,0xfc,0x80,0x90,0xf8,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x1,0x0,0x3f,0x22,0x3f,0x22,0x23,0x20,0x27,0x24,0x27,0x24,0x44,0x48,0x88,0x10,0x0,0x88,0xfc,0x20,0xfc,0x20,0xe0,0x0,0xf0,0x10,0xf0,0x80,0x40,0x30,0xe,0x4,
-+0x1,0x0,0x3f,0x20,0x2f,0x21,0x22,0x24,0x2f,0x34,0x27,0x24,0x47,0x44,0x80,0x0,0x0,0x88,0xfc,0x80,0xfc,0x40,0xa0,0x90,0xfe,0x94,0xf0,0x90,0xf0,0x92,0x82,0x7e,
-+0x1,0x0,0x3f,0x22,0x2c,0x28,0x28,0x2e,0x28,0x28,0x2f,0x29,0x42,0x44,0x88,0x30,0x0,0x88,0xfc,0x80,0xb8,0x88,0x88,0xb8,0x88,0x88,0xf8,0x48,0x20,0x10,0xe,0x4,
-+0x1,0x0,0x3f,0x21,0x2f,0x28,0x2f,0x28,0x2f,0x21,0x22,0x3f,0x40,0x40,0x80,0x0,0x0,0x88,0xfc,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x0,0x3f,0x20,0x2f,0x20,0x3f,0x21,0x2f,0x22,0x27,0x2c,0x34,0x24,0x41,0x42,0x8c,0x80,0xfe,0x80,0xf8,0x88,0xfe,0x8,0xf8,0x20,0xf0,0x1e,0x94,0x90,0x40,0x30,0x8,
-+0x1,0x0,0x3f,0x22,0x2f,0x22,0x2f,0x22,0x3f,0x24,0x27,0x24,0x44,0x4a,0x91,0x0,0x0,0x88,0xfc,0x20,0xa4,0x3e,0xa8,0x48,0xa8,0x28,0xa8,0x90,0x90,0xa8,0x44,0x82,
-+0x0,0x3f,0x24,0x3f,0x24,0x27,0x20,0x2f,0x28,0x2f,0x20,0x2f,0x20,0x4f,0x40,0xbf,0x80,0xfe,0x10,0xfc,0x10,0xf0,0x80,0xf8,0x88,0xf8,0x80,0xf8,0x80,0xf8,0x80,0xfe,
-+0x0,0x3f,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x2f,0x20,0x3f,0x24,0x4b,0x40,0xbf,0x80,0xfe,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x80,0xf8,0x80,0xfe,0x90,0xe8,0x80,0xfe,
-+0x0,0x3f,0x24,0x27,0x29,0x2a,0x3f,0x2a,0x2f,0x2a,0x2f,0x2a,0x2a,0x4a,0x51,0x80,0x80,0xfe,0x0,0xfc,0x24,0x24,0xac,0xc8,0xa8,0xbe,0xc8,0x88,0xfe,0x88,0x88,0x8,
-+0x0,0x3f,0x20,0x3f,0x20,0x2f,0x2a,0x2b,0x2a,0x2f,0x20,0x27,0x20,0x5f,0x42,0x8c,0x80,0xfe,0x80,0xfe,0x0,0xf8,0x28,0xe8,0x28,0xf8,0x0,0xf0,0x0,0xfc,0xa0,0x98,
-+0x0,0x3f,0x22,0x24,0x2d,0x36,0x24,0x24,0x27,0x24,0x27,0x24,0x27,0x44,0x44,0x84,0x80,0xfe,0x50,0xfc,0x90,0xfc,0x90,0x9c,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x10,0x10,0x10,0x10,0x58,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x17,0x10,0x58,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x84,0x4,0x28,0x10,
-+0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x91,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x10,0x10,0x13,0x10,0x58,0x54,0x50,0x97,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x1c,0xe0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x17,0x10,0x58,0x54,0x5f,0x90,0x10,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x0,0x8,0xfc,0x40,0x40,0x44,0xfe,0x40,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x10,0x17,0x58,0x54,0x50,0x93,0x12,0x11,0x10,0x10,0x10,0x11,0x12,0x1c,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4,
-+0x10,0x13,0x12,0x12,0x5a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x13,0x12,0x13,0x10,0x8,0xfc,0x0,0x4,0x84,0x48,0x48,0x30,0x10,0x28,0x48,0x84,0x4,0x0,0xfe,0x0,
-+0x20,0x20,0x20,0x20,0xb7,0xac,0xa4,0xa4,0x24,0x27,0x24,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x10,0x59,0x56,0x50,0x90,0x17,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x11,0x11,0x11,0x12,0x5b,0x54,0x53,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x12,0xa,0x6,0x2,
-+0x11,0x11,0x11,0x11,0x59,0x55,0x51,0x9f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0,0x8,0x10,0x20,0x40,0x80,0x4,0xfe,0x40,0x40,0x20,0x20,0x10,0x4e,0x84,0x0,
-+0x10,0x10,0x10,0x10,0x59,0x56,0x54,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0x90,0x8,0xe,0x4,0xf0,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0,
-+0x10,0x10,0x10,0x10,0x59,0x55,0x52,0x94,0x10,0x10,0x10,0x11,0x12,0x13,0x10,0x10,0x0,0x20,0xa0,0x90,0x10,0x8,0xe,0x44,0x40,0x80,0x80,0x10,0x8,0xfc,0x4,0x0,
-+0x10,0x10,0x10,0x17,0x58,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x40,0x4,0xfe,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x13,0x10,0x58,0x54,0x50,0x93,0x10,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0x5f,0x54,0x50,0x90,0x13,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x40,0x50,0x48,0x40,0xfe,0x40,0xc0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x40,
-+0x10,0x17,0x10,0x12,0x59,0x55,0x51,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x40,0x48,0x48,0x48,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x13,0x12,0x5a,0x56,0x53,0x92,0x12,0x12,0x13,0x12,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x13,0x5a,0x56,0x52,0x92,0x12,0x1f,0x10,0x10,0x10,0x11,0x12,0x14,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x11,0x11,0x11,0x11,0x5a,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x10,0x13,0x12,0x12,0x5b,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x4,0xfe,0x4,0x4,0xfc,0x0,0x80,0x84,0x88,0x90,0xa0,0xc0,0x82,0x82,0x7e,0x0,
-+0x10,0x10,0x10,0x17,0x58,0x54,0x57,0x94,0x14,0x17,0x10,0x10,0x11,0x11,0x12,0x14,0xa0,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0xa4,0xa0,0xfe,0xa2,0xa2,0x2a,0x24,0x20,0x20,
-+0x10,0x10,0x13,0x10,0x58,0x54,0x51,0x92,0x14,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x0,0x4,0xfe,0x84,0x84,0x84,0x14,0x8,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x11,0x10,0x58,0x54,0x51,0x92,0x15,0x10,0x10,0x17,0x10,0x10,0x10,0x10,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x50,0x4e,0xf4,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x18,0x55,0x52,0x57,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x80,0x80,0x10,0x8,0xfc,0x4,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x21,0x2f,0x30,0xa8,0xa0,0xbf,0xa2,0x22,0x24,0x25,0x28,0x2f,0x20,0x20,0x21,0x10,0x10,0x90,0x14,0x7e,0x14,0xd4,0x14,0x14,0x14,0x24,0xa4,0xa4,0x44,0x94,0x8,
-+0x20,0x27,0x24,0x24,0xb4,0xac,0xa7,0xa4,0x24,0x24,0x24,0x24,0x28,0x29,0x31,0x26,0x4,0xfe,0x40,0x50,0x48,0x40,0xfe,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0xe,0x4,
-+0x20,0x27,0x24,0x24,0xb5,0xad,0xa5,0xa5,0x25,0x25,0x25,0x21,0x22,0x22,0x24,0x28,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x4,0x84,0x44,0x54,0x8,
-+0x10,0x12,0x12,0x12,0x5b,0x54,0x53,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x11,0x10,0x40,0x48,0x48,0x48,0xf8,0x0,0xf8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x11,0x5a,0x54,0x53,0x92,0x12,0x13,0x12,0x12,0x13,0x12,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10,
-+0x10,0x10,0x11,0x11,0x5a,0x54,0x50,0x91,0x12,0x14,0x1b,0x12,0x12,0x12,0x13,0x12,0x80,0x80,0xf8,0x10,0xa0,0x40,0xa0,0x10,0xe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x27,0x24,0x28,0xb7,0xa9,0xa1,0xa2,0x27,0x20,0x20,0x2f,0x20,0x20,0x20,0x20,0x0,0xfe,0x82,0x84,0xf8,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x17,0x10,0x58,0x57,0x54,0x98,0x13,0x10,0x10,0x17,0x10,0x10,0x11,0x10,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x4,0xf8,0x10,0x24,0xfe,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x17,0x10,0x58,0x57,0x54,0x94,0x17,0x14,0x10,0x11,0x12,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0x44,0xfe,0x44,0x44,0xfc,0x44,0xe0,0x50,0x48,0x46,0x44,0x40,
-+0x21,0x25,0x25,0x25,0xb5,0xad,0xa5,0xa5,0x25,0x20,0x20,0x2f,0x20,0x20,0x3f,0x20,0x0,0x0,0xfc,0x4,0x28,0x10,0x28,0x46,0x80,0x80,0x90,0xf8,0x80,0x84,0xfe,0x0,
-+0x10,0x10,0x17,0x14,0x5c,0x57,0x54,0x94,0x17,0x10,0x10,0x17,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x10,0x17,0x14,0x14,0x5c,0x57,0x54,0x94,0x14,0x15,0x16,0x14,0x14,0x14,0x17,0x14,0x4,0xfe,0x44,0x44,0x54,0xfc,0x44,0xc4,0xe4,0x5c,0x4c,0x44,0x44,0x4,0xfc,0x4,
-+0x10,0x13,0x12,0x12,0x5b,0x54,0x57,0x94,0x14,0x14,0x17,0x14,0x14,0x14,0x13,0x10,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0x44,0xfc,0x0,0x2,0x2,0xfe,0x0,
-+0x12,0x11,0x10,0x13,0x58,0x50,0x57,0x94,0x14,0x17,0x10,0x11,0x12,0x14,0x10,0x10,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40,
-+0x10,0x10,0x11,0x1a,0x57,0x51,0x52,0x94,0x11,0x12,0x15,0x10,0x10,0x10,0x13,0x14,0x40,0x80,0x10,0x8,0xfc,0x10,0x8c,0x84,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,
-+0x10,0x17,0x14,0x14,0x5d,0x54,0x54,0x94,0x17,0x14,0x14,0x14,0x14,0x15,0x17,0x10,0x8,0xfc,0x20,0x28,0xfc,0x20,0xa8,0x20,0xfe,0x20,0x50,0x50,0x88,0x4,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0x58,0x57,0x52,0x91,0x10,0x17,0x10,0x10,0x1f,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0x44,0xfe,0x8,0x10,0xa0,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x17,0x58,0x54,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa0,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0,
-+0x10,0x14,0x12,0x11,0x58,0x57,0x54,0x94,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x40,0x44,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x10,0x17,0x14,0x15,0x5c,0x57,0x54,0x94,0x17,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x4,0xfe,0x4,0x14,0xa4,0xfc,0x44,0x54,0xfc,0x4,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x17,0x14,0x14,0x5d,0x54,0x54,0x97,0x14,0x15,0x15,0x15,0x15,0x15,0x18,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x54,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x11,0x11,0x11,0x12,0x5c,0x55,0x51,0x92,0x14,0x11,0x11,0x15,0x15,0x19,0x10,0x10,0x0,0x4,0xfe,0xa4,0xa4,0x24,0x44,0x54,0x88,0x40,0x20,0x24,0xa,0xa,0xf8,0x0,
-+0x10,0x10,0x17,0x11,0x59,0x55,0x52,0x94,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x20,0x27,0x24,0x24,0xb7,0xac,0xa4,0xa7,0x20,0x2f,0x29,0x29,0x29,0x29,0x3f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x24,0x24,0x24,0x24,0xfe,0x0,
-+0x10,0x10,0x13,0x1a,0x53,0x50,0x5f,0x90,0x13,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0x8,0x4,
-+0x10,0x17,0x14,0x14,0x5f,0x54,0x53,0x90,0x1f,0x11,0x13,0x10,0x10,0x10,0x10,0x10,0x4,0xbe,0xa4,0xa4,0xbc,0x0,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x10,0x17,0x14,0x14,0x5f,0x54,0x50,0x9f,0x10,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x4,0xfe,0xa4,0xa4,0xfc,0x80,0x44,0xfe,0x80,0x88,0xfc,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x12,0x12,0x12,0x5b,0x54,0x50,0x97,0x10,0x10,0x17,0x14,0x14,0x14,0x14,0x14,0x40,0x48,0x48,0x48,0xf8,0x0,0x4,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x10,0x11,0x17,0x11,0x59,0x55,0x57,0x91,0x13,0x13,0x15,0x15,0x19,0x11,0x11,0x11,0x90,0xd0,0x10,0x10,0x52,0x34,0xd8,0x10,0x10,0x90,0x50,0x28,0x28,0x44,0x82,0x0,
-+0x11,0x11,0x11,0x1a,0x55,0x51,0x51,0x91,0x11,0x11,0x11,0x13,0x14,0x10,0x11,0x16,0x0,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe,
-+0x10,0x10,0x17,0x18,0x57,0x50,0x5f,0x90,0x11,0x13,0x10,0x17,0x11,0x12,0x14,0x10,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x10,0xe0,0x48,0xfc,0x50,0x4c,0x44,0xc0,
-+0x22,0x21,0x2f,0x21,0xb7,0xa9,0xa1,0xbf,0x21,0x21,0x27,0x21,0x23,0x25,0x29,0x21,0x10,0x24,0xfe,0x20,0xfc,0x24,0x24,0xfe,0x24,0x24,0xfc,0x20,0x30,0x2e,0x24,0x20,
-+0x10,0x13,0x12,0x13,0x5a,0x57,0x52,0x93,0x12,0x13,0x13,0x13,0x15,0x15,0x19,0x11,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c,
-+0x10,0x13,0x12,0x13,0x5a,0x57,0x50,0x9f,0x10,0x13,0x12,0x13,0x11,0x12,0x14,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x0,0xf8,0x8,0xf8,0x50,0x4c,0x44,0xc0,
-+0x11,0x11,0x11,0x1a,0x56,0x5b,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x12,0x12,0x14,0x40,0x24,0xfe,0x20,0x20,0xfc,0x20,0x20,0xfc,0x20,0x20,0xfe,0x0,0x94,0x4a,0x2,
-+0x10,0x17,0x11,0x10,0x5f,0x54,0x53,0x92,0x13,0x12,0x13,0x10,0x17,0x10,0x1f,0x10,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xf8,0x48,0xf8,0x48,0xf8,0x40,0xfc,0x40,0xfe,0x0,
-+0x11,0x11,0x1f,0x11,0x5b,0x55,0x51,0x97,0x10,0x12,0x12,0x12,0x13,0x12,0x14,0x18,0x10,0x14,0xfe,0x10,0xb8,0x54,0x10,0xfc,0x48,0x40,0x7c,0x40,0x40,0xc0,0x46,0x3c,
-+0x10,0x1f,0x10,0x17,0x5d,0x55,0x55,0x97,0x10,0x13,0x10,0x1f,0x11,0x12,0x14,0x10,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0xc0,
-+0x21,0x2f,0x21,0x23,0xb2,0xab,0xa0,0xaf,0x28,0x33,0x22,0x23,0x22,0x23,0x22,0x23,0x10,0xfe,0x10,0xf8,0xa8,0xf8,0x0,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,
-+0x0,0x3f,0x2,0x2,0xff,0x4,0x4,0x8,0x12,0x22,0xcb,0xa,0x12,0x22,0xa,0x4,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x24,0x90,0x48,0x48,0x0,0x0,
-+0x3c,0x27,0x24,0x29,0x26,0x24,0x34,0x28,0x21,0x26,0x18,0xe1,0x9,0x11,0x25,0x2,0x40,0xfc,0x80,0xf8,0x88,0xf8,0x88,0xf8,0x88,0xc0,0x30,0xe,0x50,0x28,0x28,0x0,
-+0x20,0x17,0x40,0x40,0x40,0x40,0x40,0x5f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x24,0xf4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x20,0x17,0x40,0x40,0x5f,0x40,0x40,0x40,0x4f,0x40,0x40,0x40,0x5f,0x40,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x20,0x17,0x41,0x41,0x5f,0x41,0x41,0x4f,0x41,0x41,0x5f,0x41,0x41,0x41,0x41,0x41,0x4,0xfe,0x4,0x24,0xf4,0x4,0x44,0xe4,0x4,0x14,0xfc,0x14,0x54,0x24,0xc,0x4,
-+0x20,0x17,0x42,0x42,0x42,0x5f,0x42,0x44,0x45,0x49,0x4a,0x52,0x67,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x84,0x4,0x4,0x44,0x24,0xe4,0x4,0x14,0x8,
-+0x20,0x17,0x40,0x42,0x41,0x5f,0x40,0x44,0x42,0x41,0x42,0x44,0x48,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x44,0x44,0x84,0x4,0x84,0x64,0x24,0x4,0x14,0x8,
-+0x20,0x17,0x40,0x42,0x41,0x5f,0x40,0x47,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0xc4,0x44,0x44,0x44,0x54,0x74,0x4,0x14,0x8,
-+0x20,0x17,0x40,0x50,0x48,0x47,0x40,0x58,0x49,0x49,0x4a,0x4c,0x53,0x60,0x40,0x40,0x4,0xfe,0x4,0x84,0xa4,0xf4,0x84,0x84,0x44,0x34,0x14,0x4,0xfc,0x4,0x14,0x8,
-+0x20,0x17,0x40,0x40,0x47,0x44,0x44,0x47,0x40,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0xc4,0x4,0xe4,0x24,0x24,0x24,0xe4,0x14,0x8,
-+0x20,0x17,0x40,0x40,0x5f,0x51,0x51,0x5f,0x51,0x53,0x55,0x59,0x51,0x5f,0x50,0x40,0x4,0xfe,0x4,0x4,0xf4,0x14,0x54,0xf4,0x14,0x94,0x54,0x34,0x14,0xf4,0x14,0x8,
-+0x20,0x17,0x42,0x47,0x48,0x51,0x4f,0x49,0x4f,0x49,0x4f,0x41,0x41,0x40,0x40,0x40,0x4,0xfe,0x4,0xc4,0x84,0x24,0xf4,0x24,0xe4,0x24,0xe4,0x4,0x14,0xf4,0x4,0xc,
-+0x20,0x17,0x42,0x41,0x4f,0x48,0x4f,0x48,0x4f,0x4a,0x49,0x48,0x4a,0x4c,0x48,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0xe4,0x24,0xe4,0x14,0x24,0xc4,0x44,0x34,0x4,0xc,
-+0x20,0x17,0x40,0x40,0x7f,0x40,0x5e,0x52,0x52,0x52,0x5e,0x40,0x7e,0x41,0x42,0x40,0x4,0xfe,0xa4,0x94,0xfc,0x84,0x84,0x94,0x54,0x64,0x44,0x54,0xb4,0x14,0x4,0xc,
-+0x20,0x17,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x40,0x5f,0x50,0x5f,0x50,0x5f,0x40,0x40,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x4,0xf4,0x14,0xf4,0x14,0xf4,0x14,0x8,
-+0x20,0x17,0x40,0x42,0x4c,0x48,0x4e,0x48,0x4f,0x42,0x42,0x44,0x44,0x48,0x50,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0xe4,0x24,0xe4,0x84,0x84,0x94,0x94,0x74,0x4,0xc,
-+0x20,0x17,0x40,0x40,0x5f,0x49,0x45,0x5f,0x50,0x67,0x44,0x42,0x41,0x46,0x58,0x40,0x4,0xfe,0x24,0xf4,0x4,0x24,0x44,0xfc,0xc,0xd4,0x44,0x84,0x4,0xc4,0x34,0x8,
-+0x20,0x17,0x40,0x4f,0x49,0x4f,0x48,0x4a,0x4c,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x40,0x4,0xfe,0x4,0xe4,0x4,0xf4,0x84,0x54,0x34,0x4,0xe4,0x24,0xe4,0x24,0xf4,0x8,
-+0x20,0x17,0x48,0x44,0x44,0x7f,0x48,0x49,0x4e,0x4a,0x4a,0x52,0x52,0x66,0x40,0x40,0x4,0xfe,0x4,0x44,0x44,0xa4,0xa4,0x14,0x8c,0x64,0x24,0x4,0x84,0x64,0x24,0xc,
-+0x20,0x17,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x48,0x4f,0x41,0x7f,0x41,0x46,0x58,0x40,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xe4,0x44,0xfc,0x4,0xc4,0x34,0xc,
-+0x20,0x17,0x40,0x5e,0x52,0x4a,0x44,0x4f,0x71,0x41,0x5f,0x41,0x42,0x44,0x58,0x40,0x4,0xfe,0x84,0xa4,0xcc,0x94,0x64,0xe4,0x1c,0x4,0xf4,0x4,0xc4,0x34,0x14,0x8,
-+0x20,0x17,0x41,0x4f,0x41,0x5f,0x42,0x44,0x4f,0x40,0x4f,0x4a,0x4a,0x4a,0x5f,0x40,0x4,0xfe,0x4,0xe4,0x4,0xf4,0x4,0x44,0xe4,0x4,0xe4,0xa4,0xa4,0xa4,0xf4,0x8,
-+0x20,0x17,0x41,0x5f,0x41,0x4f,0x48,0x4f,0x48,0x4f,0x48,0x4f,0x48,0x7f,0x44,0x48,0x4,0xfe,0x4,0xf4,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xfc,0x44,0x2c,
-+0x20,0x17,0x40,0x51,0x4a,0x7f,0x44,0x55,0x55,0x5f,0x54,0x44,0x48,0x51,0x40,0x40,0x4,0xfe,0x4,0x44,0x44,0xfc,0x94,0x44,0x44,0x44,0x44,0xa4,0xa4,0x14,0x14,0x8,
-+0x20,0x17,0x40,0x5c,0x44,0x7e,0x53,0x5e,0x52,0x5e,0x52,0x7e,0x43,0x42,0x42,0x40,0x4,0xfe,0x4,0x44,0x44,0xfc,0x14,0x94,0xa4,0xa4,0x44,0xa4,0x1c,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x8,0x8,0x8,0x8,0xf,0x0,0x0,0x7f,0x8,0x8,0x8,0x8,0x10,0x60,0x0,0x20,0x20,0x20,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x24,0x24,0x24,0x24,0x3c,0x7,0x4,0xfc,0x24,0x24,0x24,0x24,0x44,0x85,0x4,0x40,0x50,0x48,0x40,0x44,0x7e,0xc0,0x40,0x48,0x48,0x50,0x20,0x60,0x92,0xa,0x4,
-+0x0,0x40,0x30,0x10,0x80,0x48,0x48,0x10,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x41,0x31,0x11,0x82,0x4c,0x4b,0x10,0x10,0x20,0xe0,0x21,0x22,0x22,0x21,0x20,0x0,0x0,0x4,0xfe,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x40,0x33,0x12,0x82,0x4a,0x4a,0x13,0x12,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x82,0x4a,0x49,0x11,0x10,0x20,0xe0,0x20,0x20,0x21,0x22,0x2c,0x0,0x0,0xfc,0x8,0x88,0x50,0x50,0x10,0xa0,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x0,0x40,0x30,0x17,0x80,0x48,0x4b,0x10,0x10,0x20,0xef,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x47,0x30,0x10,0x80,0x4f,0x49,0x11,0x11,0x21,0xe1,0x22,0x22,0x24,0x28,0x30,0x8,0xfc,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x40,0x30,0x10,0x87,0x48,0x48,0x11,0x11,0x22,0xe2,0x24,0x28,0x20,0x20,0x20,0x40,0x40,0x40,0x44,0xfe,0x40,0xe0,0x50,0x50,0x48,0x48,0x44,0x46,0x40,0x40,0x40,
-+0x0,0x4f,0x30,0x10,0x82,0x4a,0x4a,0x12,0x12,0x23,0xe0,0x20,0x20,0x20,0x20,0x20,0x4,0xfe,0x40,0x40,0x44,0x7e,0x44,0x44,0x44,0xfc,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x0,0x40,0x20,0x2f,0x80,0x44,0x4c,0x14,0x14,0x27,0xe0,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x44,0xfe,0x40,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x40,0x33,0x12,0x82,0x4a,0x4a,0x12,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x17,0x84,0x44,0x4c,0x14,0x17,0x24,0xe4,0x24,0x24,0x27,0x24,0x20,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,
-+0x1,0x40,0x30,0x10,0x8f,0x40,0x48,0x10,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x0,0x80,0x80,0x4,0xfe,0x80,0x80,0xa0,0x90,0x8c,0x84,0x80,0x80,0x80,0x80,0x80,
-+0x0,0x40,0x30,0x17,0x80,0x4a,0x4a,0x11,0x11,0x20,0xe0,0x20,0x21,0x22,0x24,0x28,0x80,0x40,0x44,0xfe,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x40,0x30,0x17,0x80,0x48,0x49,0x11,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x28,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x40,0x34,0x13,0x81,0x4f,0x48,0x10,0x10,0x20,0xe1,0x21,0x22,0x22,0x24,0x28,0x40,0x40,0x40,0x40,0x44,0xfe,0x84,0x84,0x84,0xc4,0x34,0x14,0x4,0x44,0x28,0x10,
-+0x0,0x4f,0x39,0x1a,0x8a,0x4c,0x4a,0x19,0x19,0x29,0xed,0x2a,0x28,0x28,0x29,0x2a,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x2,0x42,0x22,0x22,0x9f,0x42,0x4a,0x12,0x12,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x40,0x30,0x10,0x87,0x48,0x48,0x11,0x11,0x22,0xe2,0x24,0x28,0x20,0x20,0x20,0x40,0x50,0x4c,0x44,0xfe,0x40,0xe0,0x50,0x50,0x48,0x48,0x44,0x46,0x40,0x40,0x40,
-+0x1,0x41,0x31,0x11,0x8f,0x49,0x49,0x11,0x11,0x22,0xe2,0x22,0x24,0x25,0x28,0x30,0x0,0x20,0x10,0x4,0xfe,0x40,0x48,0x48,0x50,0x50,0x60,0x40,0xc2,0x42,0x3e,0x0,
-+0x0,0x40,0x30,0x10,0x80,0x4b,0x4a,0x12,0x12,0x23,0xe2,0x22,0x22,0x24,0x24,0x28,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x40,0x30,0x13,0x82,0x4a,0x4a,0x12,0x12,0x2f,0xe0,0x20,0x20,0x21,0x22,0x2c,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x0,0x40,0x30,0x1f,0x89,0x49,0x59,0x19,0x29,0x29,0xca,0x4c,0x48,0x4f,0x48,0x40,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x1c,0x4,0x4,0xfc,0x4,0x0,
-+0x1,0x41,0x31,0x12,0x84,0x42,0x4a,0x13,0x16,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x0,0x8,0xfc,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x68,0x50,0x42,0x2,0xfe,0x0,
-+0x0,0x40,0x30,0x11,0x81,0x4a,0x4c,0x10,0x17,0x20,0xe0,0x21,0x20,0x20,0x20,0x20,0x40,0x40,0xa0,0x10,0x10,0x88,0x46,0x40,0xf8,0x8,0x10,0x20,0xc0,0x40,0x30,0x10,
-+0x0,0x41,0x36,0x14,0x84,0x44,0x4c,0x14,0x15,0x26,0xe0,0x21,0x21,0x22,0x24,0x28,0x80,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x40,0x37,0x14,0x84,0x44,0x44,0x17,0x10,0x20,0xe1,0x22,0x24,0x28,0x21,0x20,0x8,0x7c,0x80,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x50,0x48,0x46,0x42,0x40,0x80,
-+0x0,0x40,0x30,0x17,0x80,0x40,0x49,0x12,0x17,0x20,0xe0,0x21,0x22,0x24,0x27,0x20,0x80,0x40,0x44,0xfe,0x80,0x80,0x8,0x18,0xe0,0x40,0x80,0x0,0x10,0x8,0xfc,0x4,
-+0x0,0x44,0x33,0x11,0x80,0x47,0x48,0x10,0x10,0x2f,0xe0,0x20,0x20,0x20,0x20,0x20,0x40,0x44,0x4c,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x40,0x30,0x17,0x84,0x48,0x42,0x12,0x12,0x22,0xe3,0x22,0x22,0x22,0x21,0x20,0x80,0x40,0x40,0xfc,0x4,0x4,0x10,0x30,0x40,0x80,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x0,0x4f,0x30,0x10,0x80,0x47,0x4c,0x14,0x14,0x27,0xe0,0x20,0x20,0x21,0x25,0x22,0x0,0x90,0x90,0x90,0x90,0x90,0x10,0x20,0x20,0xa0,0xa0,0xa8,0xa4,0x42,0x7e,0x0,
-+0x0,0x47,0x34,0x14,0x84,0x47,0x4c,0x14,0x14,0x27,0xe4,0x24,0x24,0x25,0x26,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x44,0xfe,0x40,0x20,0x20,0x12,0xa,0x4,
-+0x0,0x40,0x37,0x10,0x80,0x48,0x49,0x12,0x14,0x27,0xe0,0x20,0x20,0x20,0x2f,0x20,0x0,0x10,0xf8,0x10,0x20,0xc0,0x18,0x6,0x2,0xfc,0x40,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x47,0x30,0x10,0x83,0x4a,0x4a,0x13,0x12,0x22,0xe2,0x23,0x22,0x20,0x2f,0x20,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x81,0x49,0x4b,0x15,0x11,0x21,0xe1,0x21,0x21,0x21,0x21,0x21,0x80,0x84,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x0,0x40,0x37,0x12,0x82,0x43,0x42,0x14,0x16,0x29,0xe0,0x20,0x21,0x21,0x22,0x24,0x4,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x54,0x94,0x94,0x94,0x4,0x4,0x14,0x8,
-+0x0,0x40,0x30,0x17,0x80,0x4a,0x49,0x10,0x1f,0x20,0xe0,0x20,0x21,0x21,0x22,0x2c,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0x40,0x30,0x10,0x80,0x4b,0x4a,0x12,0x12,0x22,0xe2,0x22,0x20,0x20,0x21,0x26,0x40,0x44,0x7e,0x40,0x48,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0xa0,0x90,0xc,0x4,
-+0x0,0x47,0x34,0x14,0x84,0x4f,0x4c,0x14,0x14,0x24,0xe4,0x25,0x26,0x24,0x27,0x24,0x4,0xfe,0x44,0x44,0x54,0xfc,0x44,0x44,0xa4,0xa4,0xa4,0x14,0xc,0x4,0xfc,0x4,
-+0x0,0x4f,0x28,0x18,0x89,0x49,0x49,0x19,0x19,0x29,0xe9,0x29,0x28,0x28,0x2f,0x28,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x4,0xfc,0x4,
-+0x0,0x42,0x32,0x13,0x84,0x48,0x48,0x17,0x10,0x21,0xe1,0x22,0x24,0x28,0x20,0x20,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x0,0x40,0x33,0x12,0x82,0x4a,0x4b,0x12,0x12,0x22,0xe3,0x22,0x22,0x22,0x23,0x22,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x11,0x87,0x45,0x4d,0x15,0x15,0x25,0xe5,0x25,0x25,0x25,0x3f,0x20,0x40,0x40,0x80,0x8,0xfc,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0xfe,0x0,
-+0x0,0x40,0x30,0x11,0x82,0x4c,0x49,0x10,0x10,0x2f,0xe0,0x20,0x21,0x22,0x27,0x20,0x40,0x40,0xa0,0x10,0x8,0xe,0xf4,0x0,0x4,0xfe,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x0,0x40,0x30,0x14,0x82,0x4a,0x48,0x11,0x12,0x24,0xe0,0x21,0x21,0x22,0x24,0x28,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xac,0xa4,0xa0,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0x41,0x31,0x11,0x82,0x4c,0x4b,0x12,0x12,0x23,0xe2,0x22,0x23,0x22,0x20,0x20,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10,
-+0x1,0x41,0x31,0x13,0x84,0x40,0x49,0x16,0x10,0x23,0xe2,0x22,0x27,0x20,0x20,0x20,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x4e,0x40,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,
-+0x2,0x41,0x31,0x1f,0x80,0x44,0x42,0x12,0x11,0x21,0xe2,0x22,0x24,0x28,0x20,0x20,0x4,0x4,0x14,0xf4,0x54,0x54,0x94,0x94,0x14,0x14,0x94,0x94,0x44,0x44,0x14,0x8,
-+0x0,0x48,0x24,0x24,0x80,0x51,0x5c,0x14,0x25,0x24,0xe4,0x25,0x26,0x24,0x20,0x20,0x40,0x40,0x48,0xfc,0xa0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x47,0x30,0x10,0x83,0x48,0x48,0x13,0x10,0x2f,0xe2,0x21,0x21,0x20,0x20,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x4,0x44,0x24,0x24,0x9f,0x44,0x44,0x14,0x14,0x28,0xe5,0x22,0x25,0x24,0x28,0x30,0x0,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x24,0x24,0xbc,0xa4,0x0,
-+0x0,0x40,0x37,0x10,0x80,0x4b,0x4a,0x12,0x12,0x23,0xe0,0x21,0x22,0x2c,0x20,0x20,0x40,0x44,0xfe,0x40,0x48,0xfc,0x48,0x48,0x48,0xf8,0xe0,0x50,0x4e,0x44,0x40,0x40,
-+0x0,0x47,0x30,0x10,0x87,0x49,0x49,0x11,0x1f,0x20,0xe3,0x22,0x22,0x22,0x23,0x22,0x8,0xfc,0x80,0x90,0xf8,0x10,0x10,0x14,0xfe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x17,0x80,0x42,0x49,0x10,0x17,0x20,0xe1,0x22,0x24,0x28,0x20,0x20,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0xd0,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x0,0x47,0x34,0x14,0x87,0x4c,0x4d,0x14,0x17,0x24,0xe4,0x24,0x24,0x24,0x27,0x24,0x4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x44,0xf4,0x54,0x54,0x74,0x44,0x44,0xfc,0x4,
-+0x0,0x43,0x32,0x12,0x82,0x4b,0x48,0x10,0x12,0x22,0xe2,0x22,0x23,0x22,0x24,0x28,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0xc0,0x30,0xe,
-+0x0,0x41,0x31,0x11,0x81,0x48,0x4b,0x12,0x12,0x23,0xe2,0x22,0x23,0x22,0x22,0x22,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8,
-+0x0,0x40,0x34,0x14,0x87,0x40,0x48,0x11,0x12,0x24,0xeb,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x44,0x44,0xfc,0x44,0xa0,0x10,0x4e,0x4,0xf8,0x8,0x10,0x20,0x40,0x80,
-+0x0,0x40,0x33,0x12,0x82,0x43,0x42,0x12,0x12,0x22,0xef,0x20,0x21,0x22,0x24,0x28,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x20,0x10,0xc,0x4,
-+0x2,0x41,0x30,0x11,0x82,0x40,0x4f,0x11,0x12,0x27,0xea,0x22,0x22,0x22,0x20,0x0,0x8,0xb0,0x40,0xb0,0x48,0x80,0xfe,0x40,0x48,0xfc,0x48,0x48,0x48,0x58,0x40,0x40,
-+0x1,0x41,0x31,0x12,0x84,0x47,0x4c,0x14,0x14,0x27,0xe4,0x20,0x21,0x21,0x22,0x2c,0x0,0x0,0xf8,0x10,0x24,0xfe,0x44,0x44,0x44,0xfc,0xa4,0xa0,0x20,0x22,0x22,0x1e,
-+0x0,0x44,0x37,0x14,0x88,0x43,0x48,0x10,0x17,0x21,0xe1,0x21,0x21,0x22,0x24,0x28,0x80,0x40,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x40,0x27,0x10,0x80,0x4f,0x48,0x10,0x13,0x22,0xe6,0x2b,0x32,0x22,0x23,0x22,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x2,0x42,0x37,0x12,0x82,0x4b,0x4a,0x12,0x13,0x22,0xe2,0x3f,0x20,0x22,0x24,0x28,0x10,0x10,0xfc,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x2,0x42,0x32,0x12,0x8f,0x42,0x56,0x17,0x2a,0x2a,0xf2,0x22,0x22,0x22,0x23,0x22,0x0,0xc,0x70,0x40,0xc0,0x44,0x7e,0x48,0xc8,0x48,0x48,0x48,0x88,0x88,0x8,0x8,
-+0x2,0x42,0x32,0x12,0x8f,0x42,0x56,0x17,0x2a,0x2a,0xf2,0x22,0x22,0x22,0x22,0x22,0x0,0x10,0x50,0x50,0xd0,0x48,0x88,0x26,0xa0,0x20,0x40,0x48,0x44,0xfc,0x4,0x0,
-+0x0,0x40,0x37,0x10,0x80,0x4f,0x41,0x10,0x12,0x21,0xe0,0x2f,0x20,0x20,0x21,0x26,0x40,0x48,0xfc,0x40,0x40,0xfe,0x22,0xa4,0x60,0x20,0xa4,0xfe,0x40,0x50,0x8c,0x4,
-+0x0,0x4f,0x30,0x11,0x86,0x40,0x55,0x12,0x16,0x29,0xe2,0x24,0x28,0x20,0x21,0x20,0x4,0xfe,0x80,0x0,0x88,0xd0,0x60,0x60,0xd0,0x50,0x48,0x4e,0x44,0x40,0x40,0x80,
-+0x0,0x47,0x34,0x14,0x87,0x54,0x54,0x17,0x10,0x2f,0xe1,0x21,0x21,0x22,0x24,0x28,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x0,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x43,0x32,0x12,0x83,0x48,0x4f,0x14,0x14,0x27,0xe4,0x24,0x27,0x20,0x20,0x20,0x8,0xfc,0x8,0x8,0xf8,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0x42,0x3e,
-+0x0,0x40,0x30,0x11,0x82,0x4d,0x48,0x10,0x17,0x20,0xe2,0x21,0x21,0x20,0x2f,0x20,0x40,0x40,0xa0,0x10,0xe,0xf4,0x40,0x48,0xfc,0x40,0x44,0x48,0x50,0x40,0xfe,0x0,
-+0x0,0x4f,0x29,0x29,0x89,0x4f,0x59,0x19,0x29,0x2f,0xe9,0x29,0x29,0x29,0x2b,0x10,0x4,0x7e,0x54,0x54,0x54,0x54,0x54,0x54,0x7c,0x44,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x40,0x37,0x14,0x88,0x43,0x48,0x10,0x17,0x20,0xe1,0x22,0x24,0x28,0x21,0x20,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x40,0x50,0x48,0x44,0x44,0x40,0x80,
-+0x0,0x40,0x37,0x14,0x88,0x47,0x44,0x14,0x17,0x24,0xe4,0x27,0x24,0x20,0x20,0x20,0x80,0x40,0xfe,0x42,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,
-+0x0,0x40,0x37,0x14,0x88,0x43,0x4a,0x12,0x13,0x22,0xe3,0x22,0x22,0x22,0x23,0x22,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x0,0x43,0x30,0x10,0x83,0x48,0x48,0x17,0x10,0x24,0xe2,0x21,0x22,0x2c,0x21,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xfe,0x40,0x44,0xe8,0x50,0x48,0x4e,0x44,0x80,
-+0x0,0x47,0x34,0x14,0x87,0x45,0x4d,0x17,0x15,0x2d,0xed,0x35,0x25,0x25,0x21,0x21,0x44,0xe4,0x44,0x54,0xd4,0x14,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0xc4,0x14,0x8,
-+0x0,0x42,0x32,0x17,0x82,0x4a,0x4a,0x12,0x13,0x20,0xe7,0x20,0x21,0x22,0x2c,0x20,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfc,0xe0,0x50,0x4e,0x44,0x40,
-+0x0,0x47,0x30,0x10,0x87,0x44,0x4c,0x14,0x17,0x24,0xe0,0x27,0x20,0x20,0x2f,0x20,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xfc,0x44,0x40,0xfc,0x40,0x44,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x81,0x4f,0x49,0x19,0x19,0x29,0xe9,0x29,0x29,0x29,0x2f,0x28,0x0,0x4,0xfe,0x80,0x4,0xfe,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x24,0xfc,0x4,
-+0x0,0x41,0x36,0x12,0x82,0x5f,0x42,0x16,0x17,0x2a,0xea,0x32,0x22,0x22,0x22,0x23,0x10,0x90,0x10,0x10,0x92,0xd4,0x38,0x10,0x10,0x90,0x28,0x28,0x48,0x48,0x84,0x2,
-+0x0,0x41,0x36,0x14,0x87,0x44,0x4c,0x17,0x10,0x27,0xe2,0x21,0x20,0x20,0x23,0x2c,0x40,0x44,0x5e,0x44,0x5c,0x44,0x44,0xfc,0x40,0xfc,0x8,0x10,0xe0,0xa0,0x10,0xe,
-+0x0,0x41,0x33,0x12,0x83,0x4a,0x4b,0x10,0x17,0x20,0xe0,0x27,0x20,0x20,0x2f,0x20,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,
-+0x2,0x42,0x35,0x14,0x88,0x57,0x42,0x12,0x1f,0x22,0xe7,0x2a,0x32,0x22,0x2a,0x24,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x28,0xa8,0x28,0x10,0x90,0x28,0x28,0x44,0x82,
-+0x0,0x41,0x31,0x12,0x87,0x49,0x41,0x12,0x14,0x27,0xe5,0x25,0x25,0x25,0x3f,0x20,0x20,0x20,0x20,0x10,0xfe,0x14,0x10,0x50,0x20,0xf8,0x28,0x28,0x28,0x28,0xfe,0x0,
-+0x4,0x42,0x31,0x1f,0x80,0x47,0x44,0x14,0x17,0x24,0xe4,0x27,0x24,0x24,0x25,0x24,0x8,0x10,0x24,0xfe,0x0,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0x88,0xa8,0x90,
-+0x0,0x40,0x37,0x14,0x89,0x40,0x4b,0x12,0x12,0x23,0xe2,0x22,0x23,0x20,0x2f,0x20,0x80,0x40,0xfe,0x2,0xf4,0x0,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x0,
-+0x0,0x47,0x34,0x14,0x87,0x4c,0x4d,0x14,0x14,0x25,0xe4,0x25,0x28,0x28,0x33,0x20,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x40,0x88,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x0,0x47,0x34,0x14,0x87,0x44,0x4d,0x15,0x15,0x25,0xe5,0x25,0x25,0x29,0x29,0x31,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,
-+0x2,0x42,0x22,0x2f,0x82,0x42,0x4f,0x12,0x12,0x22,0xef,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x3c,0x48,0x94,0x7e,0xd4,0x54,0x54,0x54,0xfc,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0x40,0x37,0x10,0x87,0x40,0x4f,0x11,0x12,0x25,0xe8,0x23,0x20,0x21,0x26,0x20,0x40,0x44,0xfe,0x40,0xfc,0x80,0xfe,0x10,0x8,0xfe,0x44,0xf8,0xe0,0x50,0x4c,0x40,
-+0x0,0x40,0x37,0x10,0x80,0x4f,0x48,0x11,0x13,0x20,0xe7,0x24,0x24,0x24,0x2f,0x20,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x10,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xfe,0x0,
-+0x0,0x4f,0x32,0x13,0x82,0x4b,0x4a,0x1f,0x10,0x2f,0xe8,0x25,0x22,0x25,0x28,0x30,0x8,0xfc,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x10,0xfc,0x84,0x28,0x10,0x28,0xc6,0x84,
-+0x1,0x41,0x3f,0x11,0x80,0x4f,0x40,0x11,0x12,0x2d,0xe1,0x27,0x21,0x21,0x22,0x24,0x10,0x10,0xfe,0x10,0x48,0xfe,0xa0,0x10,0xe,0x14,0x10,0xfc,0x10,0x10,0x10,0x10,
-+0x1,0x41,0x3f,0x11,0x8f,0x48,0x48,0x17,0x10,0x20,0xe3,0x20,0x20,0x20,0x2f,0x20,0x10,0x14,0xfe,0x10,0xfe,0x2,0x4,0xfc,0x40,0x50,0xf8,0x40,0x50,0x48,0xfe,0x0,
-+0x0,0x40,0x37,0x10,0x87,0x44,0x4f,0x14,0x17,0x24,0xe0,0x2f,0x21,0x20,0x20,0x20,0x50,0x48,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x40,0xfe,0x8,0x88,0x28,0x10,
-+0x0,0x47,0x30,0x10,0x87,0x44,0x44,0x17,0x10,0x20,0xef,0x20,0x21,0x22,0x2c,0x20,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x0,0x47,0x34,0x15,0x84,0x47,0x4d,0x15,0x15,0x29,0xe0,0x2f,0x22,0x21,0x20,0x20,0x8,0xfc,0x0,0xf8,0x0,0xfc,0x44,0x28,0x90,0xe,0x10,0xfe,0x10,0x10,0x50,0x20,
-+0x0,0x47,0x34,0x17,0x84,0x4f,0x48,0x17,0x10,0x24,0xe3,0x22,0x24,0x20,0x22,0x21,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xbe,0x84,0xa4,0x9c,0x94,0xa4,0x84,0x94,0x8,
-+0x0,0x47,0x34,0x17,0x84,0x45,0x4e,0x14,0x17,0x24,0xe7,0x24,0x25,0x24,0x27,0x24,0x4,0xfe,0x4,0xfc,0x84,0x8c,0x54,0xe4,0x44,0xe4,0x5c,0x4c,0x44,0x84,0xfc,0x4,
-+0x2,0x42,0x33,0x15,0x88,0x40,0x4f,0x10,0x17,0x20,0xe0,0x2f,0x20,0x20,0x20,0x20,0x20,0x24,0xbe,0x50,0x88,0x3c,0xc0,0x90,0xf8,0x80,0x84,0xfe,0x80,0x84,0x84,0x7c,
-+0x0,0x41,0x37,0x14,0x87,0x44,0x47,0x14,0x17,0x20,0xe0,0x3f,0x21,0x21,0x22,0x2c,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0xa0,0x94,0xfe,0x40,0x20,0x10,0xe,
-+0x1,0x42,0x35,0x10,0x80,0x49,0x4e,0x13,0x10,0x20,0xe7,0x22,0x21,0x20,0x2f,0x20,0x10,0xc,0x14,0xa0,0x40,0xb0,0xe,0xf8,0x40,0x40,0xfc,0x48,0x50,0x44,0xfe,0x0,
-+0x0,0x40,0x37,0x14,0x85,0x44,0x57,0x14,0x25,0x24,0xe5,0x25,0x25,0x29,0x29,0x31,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x40,0x37,0x11,0x80,0x4f,0x48,0x10,0x1f,0x21,0xe1,0x21,0x21,0x21,0x22,0x24,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x82,0x44,0xfe,0x10,0xf8,0x10,0x10,0x10,0x50,0x20,
-+0x0,0x4f,0x28,0x10,0x83,0x4a,0x4b,0x12,0x13,0x20,0xe0,0x2f,0x20,0x21,0x22,0x24,0x0,0xfe,0x2,0x4,0xf8,0x8,0xf8,0x8,0xf8,0x80,0x44,0xfe,0x0,0x10,0xc,0x4,
-+0x1,0x41,0x37,0x11,0x81,0x4f,0x48,0x17,0x14,0x27,0xe4,0x27,0x24,0x21,0x22,0x24,0x10,0x10,0xfc,0x10,0x14,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x4,0x10,0xc,0x4,
-+0x1,0x41,0x2f,0x11,0x87,0x44,0x49,0x13,0x10,0x21,0xe7,0x20,0x22,0x24,0x29,0x20,0x10,0x14,0xfe,0x10,0xfe,0x82,0x14,0xe0,0x80,0x8,0xfc,0x44,0x50,0x4c,0x44,0x80,
-+0x1,0x4f,0x31,0x10,0x87,0x40,0x4f,0x10,0x17,0x20,0xe4,0x25,0x25,0x26,0x28,0x30,0x10,0xfe,0x10,0x40,0xfc,0x44,0xfe,0x44,0xfc,0x40,0x44,0x64,0x54,0x54,0x44,0x44,
-+0x2,0x42,0x2f,0x12,0x87,0x4a,0x52,0x12,0x10,0x2f,0xe1,0x22,0x21,0x20,0x23,0x2c,0x10,0x10,0xfc,0x10,0x38,0xd4,0x12,0x90,0x84,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8,
-+0x1,0x41,0x3f,0x11,0x8f,0x49,0x4f,0x19,0x2f,0x20,0xe7,0x24,0x27,0x24,0x27,0x24,0x20,0x24,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x40,0x30,0x17,0x84,0x45,0x44,0x14,0x14,0x25,0xe5,0x24,0x2b,0x28,0x30,0x20,0x48,0x7c,0x40,0xfe,0x44,0xf0,0x44,0x3c,0x8,0xf0,0x24,0xa8,0xfe,0x20,0xa0,0x40,
-+0x0,0x47,0x34,0x17,0x84,0x47,0x44,0x11,0x17,0x20,0xe1,0x27,0x22,0x24,0x29,0x20,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x84,0x8,0xf0,0x80,0x8,0xfc,0x50,0x4c,0x44,0x80,
-+0x0,0x40,0x37,0x14,0x84,0x47,0x40,0x17,0x14,0x24,0xe7,0x20,0x2a,0x2a,0x32,0x21,0x40,0x44,0xfe,0x44,0x44,0xfc,0x40,0xfc,0x44,0x44,0xfc,0x40,0x88,0x46,0xa,0xf8,
-+0x2,0x42,0x35,0x14,0x88,0x57,0x40,0x1a,0x1a,0x2a,0xea,0x21,0x23,0x3c,0x28,0x21,0x10,0x10,0x10,0xa4,0x7e,0xa4,0x24,0xa4,0xa8,0xa8,0x90,0x10,0xa8,0x28,0x44,0x82,
-+0x0,0x48,0x25,0x12,0x86,0x4a,0x4b,0x12,0x16,0x2b,0xf2,0x22,0x22,0x22,0x2a,0x24,0x20,0xa0,0x24,0xfc,0x28,0x30,0xfe,0x40,0xfc,0x44,0x44,0x7c,0x44,0x44,0x7c,0x44,
-+0x1,0x49,0x25,0x12,0x86,0x4a,0x53,0x12,0x26,0x2a,0xf2,0x22,0x22,0x22,0x2a,0x24,0x20,0x28,0xfc,0x20,0x50,0x88,0xfe,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x0,0x40,0x37,0x14,0x84,0x4f,0x4c,0x14,0x17,0x25,0xe5,0x25,0x29,0x29,0x31,0x21,0x80,0x44,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x20,0x24,0xe8,0x30,0x62,0xa2,0x1e,
-+0x4,0x42,0x32,0x1f,0x84,0x44,0x4f,0x15,0x15,0x25,0xe5,0x29,0x29,0x2d,0x32,0x21,0x20,0x20,0x24,0xfe,0x80,0x0,0x7e,0x12,0x14,0x50,0x5c,0x50,0x50,0x70,0x98,0x6,
-+0x0,0x47,0x30,0x11,0x8f,0x44,0x4c,0x17,0x14,0x24,0xe7,0x24,0x24,0x3f,0x20,0x20,0x10,0x90,0x90,0x24,0xfe,0xa4,0xa4,0xa4,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0xc4,0x82,
-+0x2,0x42,0x2f,0x22,0x8f,0x50,0x1f,0x28,0x28,0x4f,0xc0,0x48,0x45,0x5f,0x40,0x40,0x8,0x88,0xc8,0x8,0xbe,0x8,0x88,0xa8,0x98,0x88,0x8,0x88,0x8,0xc8,0x28,0x10,
-+0x9,0x49,0x29,0x1f,0x89,0x49,0x5f,0x19,0x2f,0x29,0xe9,0x3f,0x24,0x29,0x30,0x21,0x0,0xc,0x70,0xc0,0x40,0x44,0x7e,0x48,0x48,0x48,0x48,0xc8,0x48,0x48,0x88,0x8,
-+0x2,0x42,0x2f,0x12,0x87,0x4a,0x42,0x17,0x14,0x27,0xe4,0x24,0x27,0x24,0x24,0x24,0x10,0x10,0xfc,0x10,0x38,0xd6,0x10,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10,
-+0x0,0x41,0x2e,0x12,0x82,0x5f,0x42,0x16,0x17,0x2a,0xea,0x32,0x22,0x22,0x22,0x22,0x10,0x90,0x54,0x38,0x10,0xfc,0x44,0x44,0x7c,0xc4,0x44,0x7c,0x44,0x44,0x54,0x48,
-+0x0,0x47,0x31,0x10,0x8f,0x40,0x47,0x14,0x17,0x24,0xe7,0x20,0x27,0x20,0x2f,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x40,0xfc,0x40,0xfe,0x0,
-+0x7,0x44,0x37,0x14,0x85,0x44,0x4f,0x14,0x14,0x27,0xe4,0x25,0x2b,0x29,0x31,0x23,0xfc,0x4,0xfc,0x0,0xf8,0x10,0xfe,0x20,0x64,0xde,0x84,0x8,0xfe,0x8,0x8,0x18,
-+0x4,0x44,0x3f,0x24,0x84,0x5f,0x15,0x55,0x5f,0x44,0xcc,0x4e,0x55,0x64,0x44,0x44,0x20,0x20,0x7c,0x88,0x10,0x7c,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x28,0x46,0x82,
-+0x0,0x40,0x2f,0x29,0x89,0x49,0x5f,0x19,0x29,0x2f,0xe9,0x29,0x29,0x2f,0x29,0x20,0x20,0x30,0x48,0x7e,0xc8,0x48,0x7e,0x48,0x48,0x7e,0x48,0x48,0x48,0x7e,0x40,0x40,
-+0x0,0x40,0x37,0x14,0x87,0x44,0x57,0x10,0x27,0x20,0xe3,0x22,0x23,0x21,0x20,0x2f,0xa0,0xa4,0xfe,0xa4,0xfc,0xa4,0xfc,0x0,0xfc,0x0,0xf8,0x8,0xf8,0x10,0xa0,0xfe,
-+0x0,0x41,0x32,0x17,0x84,0x45,0x57,0x14,0x25,0x24,0xe5,0x24,0x29,0x29,0x31,0x21,0x80,0xf0,0x24,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x4,0x4,0xfc,
-+0x0,0x4f,0x20,0x27,0x85,0x45,0x45,0x17,0x10,0x23,0xe2,0x23,0x22,0x23,0x20,0x2f,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,
-+0x0,0x40,0x37,0x15,0x87,0x4c,0x4f,0x14,0x17,0x24,0xe7,0x24,0x29,0x2a,0x34,0x20,0x40,0x24,0xfe,0x8,0xfc,0x90,0xfc,0x94,0xfe,0x94,0xfc,0x90,0x98,0x94,0x92,0x90,
-+0x0,0x47,0x20,0x2f,0x88,0x53,0x40,0x13,0x10,0x2f,0xe0,0x27,0x24,0x24,0x24,0x24,0x8,0xfc,0x40,0xfe,0x42,0x58,0x40,0x58,0x40,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xc,
-+0x2,0x43,0x22,0x24,0x8f,0x54,0x44,0x17,0x14,0x25,0xe4,0x27,0x24,0x24,0x24,0x27,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfe,0x20,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x0,0x43,0x32,0x12,0x83,0x48,0x4f,0x14,0x17,0x24,0xe7,0x20,0x2f,0x21,0x21,0x22,0x80,0xf8,0x88,0x48,0xf8,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x10,0x10,0x10,
-+0x0,0x4f,0x30,0x13,0x82,0x4f,0x48,0x13,0x10,0x23,0xec,0x23,0x2c,0x23,0x2d,0x20,0x40,0xfe,0x0,0xf8,0x8,0xfe,0x2,0xfc,0x80,0x48,0x50,0x60,0xd0,0x4e,0x44,0x80,
-+0x0,0x4f,0x34,0x12,0x82,0x44,0x41,0x11,0x13,0x26,0xeb,0x22,0x23,0x22,0x23,0x22,0x0,0xbc,0xa4,0x94,0x94,0xa4,0x0,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x4,0x44,0x3f,0x4,0x9f,0x51,0x11,0x3f,0x51,0x51,0xdf,0x44,0x7f,0x44,0x44,0x44,0x10,0x10,0xa8,0x28,0x44,0x82,0xfc,0x24,0xb4,0x6c,0x6c,0xb4,0x24,0x24,0xb4,0x48,
-+0x2,0x43,0x32,0x17,0x84,0x4a,0x41,0x12,0x17,0x20,0xe7,0x20,0x27,0x20,0x2f,0x20,0x0,0xbc,0x24,0xa8,0x90,0xa8,0x46,0xa0,0xbc,0xa0,0xbc,0xa0,0xbc,0xa0,0xfe,0x0,
-+0x0,0x5f,0x24,0x27,0x80,0x47,0x4c,0x17,0x10,0x2e,0xeb,0x2e,0x2b,0x2f,0x2a,0x37,0x80,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xf8,0x80,0x9c,0xf4,0x9c,0x54,0x54,0x96,0x62,
-+0x0,0x41,0x22,0x24,0x8b,0x50,0x4f,0x19,0x2f,0x20,0xef,0x29,0x29,0x2f,0x29,0x28,0x80,0x40,0x20,0x10,0xee,0x4,0xfc,0x24,0xfc,0x0,0xfc,0x24,0x24,0xfc,0x24,0xc,
-+0x0,0x42,0x2f,0x21,0x82,0x4f,0x44,0x17,0x14,0x27,0xe1,0x27,0x21,0x2f,0x22,0x24,0x40,0x48,0xfe,0x50,0x48,0xfe,0x44,0xfc,0x44,0xfc,0x10,0xfc,0x10,0xfe,0x8,0x4,
-+0x40,0x3f,0x31,0x9f,0x51,0x5f,0x4,0x3f,0x20,0x5f,0xd1,0x5f,0x44,0x55,0x64,0x4c,0x4,0x7e,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82,
-+0x47,0x20,0x2f,0xa,0x95,0x4f,0x45,0x17,0x12,0x2f,0xea,0x2f,0x22,0x3f,0x22,0x22,0xfc,0x40,0xfe,0x4a,0x40,0xbc,0x24,0x24,0x3c,0xa4,0xa4,0xbc,0x24,0xe4,0x54,0x88,
-+0x0,0x0,0x0,0x2,0x1,0x1,0x7f,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x1,0x7f,0x42,0x82,0x2,0x3f,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0xfe,0x2,0x4,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x2,0x1,0x7f,0x40,0x80,0xff,0x4,0x4,0x8,0xf,0x18,0x28,0x48,0x8,0xf,0x8,0x0,0x0,0xfe,0x2,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,
-+0x2,0x1,0x7f,0x40,0x82,0x1,0x9,0x8,0x28,0x28,0x29,0x4a,0xc,0x18,0x67,0x0,0x0,0x0,0xfe,0x2,0x4,0x10,0x10,0x20,0x48,0x84,0x4,0x4,0x10,0x10,0xf0,0x0,
-+0x2,0x1,0x7f,0x42,0x82,0xff,0x4,0xf,0x18,0x2f,0xc8,0xf,0x8,0x8,0x8,0x8,0x0,0x0,0xfe,0x2,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x2,0x1,0x7f,0x40,0x9f,0x10,0x17,0x10,0x1f,0x15,0x25,0x24,0x24,0x45,0x86,0x4,0x0,0x0,0xfe,0x2,0xf4,0x0,0xe0,0x8,0xfc,0x0,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x2,0x1,0x7f,0x42,0xa9,0x28,0x47,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x21,0x21,0x21,0x0,0x0,0xfe,0x2,0x14,0x28,0xe4,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x8,0x1f,0xe4,0x4,0x7,0x0,0x3f,0x0,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xd0,0x4e,0x40,0xf8,0x8,0xe8,0x10,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x8,0x17,0x21,0xcf,0x1,0x3f,0x1,0x3,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xd0,0xe,0xe4,0x0,0xf8,0x0,0x0,
-+0x2,0x1,0x7f,0x40,0xa5,0x24,0x25,0x3c,0x4,0xff,0x24,0x25,0x25,0x25,0x45,0x5,0x0,0x0,0xfe,0x2,0xfc,0x40,0xf8,0x88,0x88,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x4,
-+0x1,0x7f,0x41,0xbf,0x1,0xa,0x4,0x1f,0x30,0xdf,0x10,0x1f,0x9,0x11,0x25,0x2,0x0,0xfe,0x2,0xf8,0x0,0xa0,0x40,0xf0,0x1e,0xf4,0x10,0xf0,0x20,0x18,0x8,0x0,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x9,0x1f,0x22,0xc4,0xc,0x35,0x6,0x4,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xf0,0x1e,0xa4,0x40,0x20,0x1c,0x8,
-+0x1,0x7f,0x40,0xbf,0x24,0x3f,0x0,0xff,0x0,0x1f,0x10,0x1f,0x4,0xc,0x75,0x6,0x0,0xfe,0x2,0xfc,0x48,0xf8,0x0,0xfe,0x0,0xf0,0x10,0xf0,0x88,0x50,0x20,0x1c,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x8,0x1f,0x28,0xcf,0x9,0xd,0x13,0x20,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xf0,0x2e,0xe4,0x0,0xe0,0x0,0xf8,
-+0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x9,0x1f,0x27,0xc0,0xf,0x8,0x8,0xf,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xf0,0x8,0xe6,0xe0,0x20,0x20,0xe0,
-+0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0xfc,0x0,
-+0x0,0x40,0x37,0x10,0x2,0x2,0xf7,0x10,0x10,0x10,0x11,0x12,0x14,0x28,0x47,0x0,0x0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x50,0x50,0x90,0x10,0x10,0x50,0x26,0xfc,0x0,
-+0x1,0x41,0x31,0x12,0x4,0x0,0xf0,0x1f,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x46,0xfc,0x0,
-+0x0,0x40,0x27,0x24,0x4,0x5,0xe5,0x25,0x25,0x25,0x25,0x24,0x24,0x50,0x8f,0x0,0x0,0x8,0xfc,0x8,0x8,0xe8,0x28,0x28,0x28,0xe8,0x28,0x8,0x18,0x6,0xfc,0x0,
-+0x1,0x41,0x31,0x11,0x2,0x4,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x0,0x0,0x8,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x80,0x80,0x86,0xfc,0x0,
-+0x2,0x42,0x33,0x14,0x8,0x2,0xf3,0x16,0x12,0x12,0x12,0x11,0x10,0x28,0x47,0x0,0x0,0x8,0xfc,0x40,0x48,0x7c,0xc8,0x48,0x68,0x50,0x4,0xfc,0x0,0x6,0xfc,0x0,
-+0x1,0x41,0x21,0x21,0x2,0x4,0xf0,0x11,0x11,0x12,0x14,0x11,0x20,0x48,0x87,0x0,0x0,0x0,0x8,0xfc,0x8,0x10,0x40,0x50,0x48,0x44,0x44,0x40,0x80,0x6,0xfc,0x0,
-+0x4,0x44,0x2f,0x24,0x4,0x4,0xe4,0x24,0x24,0x24,0x28,0x32,0x21,0x50,0x8f,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0x20,0x6,0xfc,0x0,
-+0x0,0x43,0x30,0x10,0x1,0x6,0xf0,0x13,0x10,0x10,0x10,0x17,0x10,0x28,0x47,0x0,0x0,0xf8,0x10,0x60,0x98,0x4,0x10,0xf8,0x40,0x40,0x48,0xfc,0x0,0x6,0xfc,0x0,
-+0x0,0x40,0x31,0x12,0x4,0x7,0xf0,0x13,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x80,0x80,0x10,0x8,0x4,0xfc,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0,
-+0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x24,0x25,0x29,0x29,0x31,0x21,0x50,0x8f,0x0,0x0,0x18,0xe0,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0,
-+0x1,0x41,0x31,0x12,0x4,0x1,0xf6,0x10,0x13,0x12,0x12,0x17,0x10,0x28,0x47,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x4e,0x40,0xf8,0x40,0x48,0xfc,0x40,0x46,0xfc,0x0,
-+0x0,0x40,0x2f,0x20,0xf,0x8,0xe8,0x2f,0x28,0x28,0x2f,0x28,0x28,0x50,0x8f,0x0,0xa0,0x90,0xfc,0x80,0xf8,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x98,0x6,0xfc,0x0,
-+0x0,0x4f,0x30,0x17,0x4,0x4,0xf6,0x15,0x14,0x14,0x14,0x15,0x14,0x28,0x47,0x0,0x4,0xfe,0x0,0xbc,0xa4,0xa4,0xb4,0xac,0xa4,0xa4,0xa4,0xac,0xa4,0x2,0xfc,0x0,
-+0x0,0x40,0x30,0x17,0x0,0x2,0xf1,0x10,0x11,0x16,0x10,0x11,0x10,0x28,0x47,0x0,0x40,0x50,0x48,0xfc,0x40,0x48,0x50,0x40,0x50,0x4c,0x44,0x40,0x80,0x6,0xfc,0x0,
-+0x0,0x42,0x31,0x10,0x3,0x2,0xf2,0x13,0x12,0x12,0x13,0x12,0x12,0x28,0x47,0x0,0x40,0x48,0x50,0x40,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x18,0x6,0xfc,0x0,
-+0x0,0x48,0x25,0x22,0x5,0x9,0xe3,0x25,0x29,0x31,0x21,0x25,0x22,0x50,0x8f,0x0,0x10,0x90,0x10,0x10,0x52,0x54,0x58,0x90,0x28,0x28,0x28,0x44,0x82,0x6,0xfc,0x0,
-+0x0,0x41,0x32,0x17,0x1,0x2,0xf5,0x11,0x11,0x12,0x14,0x10,0x13,0x28,0x47,0x0,0x80,0x10,0x8,0xfc,0x10,0xc,0x4,0xf0,0x10,0xa0,0x40,0xa0,0x1c,0x6,0xfc,0x0,
-+0x0,0x40,0x37,0x10,0x0,0xf,0xf1,0x16,0x10,0x17,0x10,0x10,0x17,0x28,0x47,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x4c,0x40,0xfc,0x40,0x44,0xfe,0x0,0xfe,0x0,
-+0x0,0x43,0x30,0x17,0x0,0x1,0xf6,0x10,0x1f,0x11,0x13,0x10,0x11,0x2a,0x47,0x0,0x18,0xe0,0x48,0xfc,0xe0,0x50,0x4e,0x84,0xfe,0x10,0x10,0xe0,0x10,0x8,0xfe,0x0,
-+0x0,0x40,0x2f,0x28,0x13,0x2,0xe2,0x23,0x22,0x23,0x22,0x22,0x23,0x52,0x8f,0x0,0x80,0x40,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x0,0xf8,0x8,0x8,0xf8,0x6,0xfc,0x0,
-+0x0,0x47,0x20,0x13,0x0,0xf,0xf0,0x12,0x11,0x11,0x12,0x14,0x11,0x28,0x47,0x0,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x40,0x44,0x68,0x50,0x48,0x44,0x40,0x86,0xfc,0x0,
-+0x0,0x42,0x32,0x12,0x3,0x0,0xf7,0x10,0x17,0x14,0x14,0x14,0x14,0x28,0x47,0x0,0x40,0x48,0x48,0x48,0xf8,0x0,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xac,0x2,0xfc,0x0,
-+0x0,0x40,0x33,0x12,0x3,0x2,0xf3,0x10,0x17,0x10,0x13,0x10,0x17,0x28,0x47,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0xf8,0x40,0xfc,0x0,0xfe,0x0,
-+0x1,0x40,0x37,0x10,0x7,0x4,0xf4,0x14,0x15,0x16,0x15,0x14,0x17,0x28,0x47,0x0,0x10,0xa4,0xfe,0xa0,0xfc,0xa4,0xa4,0xa4,0x1c,0x4,0xf4,0x4,0xfc,0x0,0xfe,0x0,
-+0x0,0x47,0x34,0x14,0x7,0x4,0xf4,0x17,0x14,0x14,0x17,0x14,0x14,0x28,0x47,0x0,0x4,0xbe,0x84,0x84,0xbc,0x4,0x0,0x7c,0x44,0x44,0xa8,0x10,0x28,0x44,0xfe,0x0,
-+0x2,0x42,0x2f,0x22,0xf,0x2,0xff,0x24,0x27,0x24,0x24,0x28,0x29,0x50,0x8f,0x0,0x10,0x10,0x94,0x3e,0xa4,0x44,0xe4,0x14,0x94,0x88,0x94,0x94,0xa2,0x42,0xfe,0x0,
-+0x1,0x47,0x31,0x17,0x1,0xf,0xf0,0x13,0x12,0x13,0x12,0x1f,0x12,0x2a,0x47,0x0,0x10,0xfc,0x10,0xfc,0x10,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xfe,0x8,0x18,0xfe,0x0,
-+0x3,0x42,0x33,0x12,0x3,0x0,0xf7,0x10,0x14,0x12,0x12,0x14,0x11,0x28,0x47,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xbc,0x84,0xa4,0x94,0x94,0xa4,0x8c,0x86,0xfc,0x0,
-+0x1,0x46,0x34,0x15,0x6,0x4,0xf3,0x12,0x12,0x13,0x12,0x12,0x13,0x28,0x47,0x0,0x4,0xfe,0x24,0x24,0x54,0x88,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x6,0xfc,0x0,
-+0x7,0x44,0x27,0x24,0x7,0x2,0xe7,0x2c,0x37,0x24,0x27,0x24,0x27,0x54,0x8f,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x0,0xfe,0x0,
-+0x0,0x42,0x31,0x17,0x0,0x1,0xf6,0x12,0x13,0x14,0x1a,0x11,0x12,0x2c,0x47,0x0,0x40,0x48,0x50,0xfc,0xe0,0x50,0x4c,0x8,0xfe,0xa8,0xa8,0x3e,0x8,0x8,0xfe,0x0,
-+0x0,0x40,0x20,0x27,0x4,0x7,0xe4,0x25,0x26,0x25,0x2a,0x28,0x33,0x50,0x8f,0x0,0x48,0x7c,0x40,0xfc,0x84,0xf0,0x84,0x78,0xa0,0x30,0x68,0xa4,0x24,0x60,0xfe,0x0,
-+0x4,0x47,0x29,0x32,0xf,0xa,0xea,0x2f,0x2a,0x2a,0x2f,0x2a,0x2a,0x51,0x8f,0x0,0x4,0xfe,0x24,0x24,0xac,0xc4,0xa8,0xbe,0xc8,0x88,0xfe,0x88,0x88,0x88,0xfe,0x0,
-+0x0,0x43,0x3c,0x2a,0x5,0x6,0xeb,0x25,0x39,0x23,0x25,0x39,0x25,0x52,0x8f,0x0,0x90,0x24,0xfe,0xc4,0x44,0x7c,0x44,0x44,0x7c,0x28,0x28,0x2a,0x4e,0x80,0xfe,0x0,
-+0x0,0x40,0x2f,0x29,0x12,0x1,0xef,0x21,0x2e,0x21,0x2e,0x21,0x2e,0x50,0x8f,0x0,0x80,0x40,0xfe,0x12,0xc,0x10,0xfc,0x88,0x50,0xe0,0x50,0xce,0x40,0xc6,0xfc,0x0,
-+0x2,0x44,0x22,0x2f,0x9,0x8,0xe9,0x2f,0x24,0x26,0x24,0x26,0x24,0x56,0x88,0x7,0x48,0x90,0x48,0xfc,0x24,0xc4,0x24,0xfc,0x90,0xd0,0x90,0xd4,0x94,0xdc,0x0,0xfe,
-+0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,
-+0x10,0x14,0xfe,0x10,0x7c,0x10,0xfe,0x10,0x7f,0x0,0x0,0x3f,0x0,0x0,0x7f,0x0,0x10,0x14,0xfe,0x10,0x7c,0x10,0xfe,0x10,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x4,0x7,0x8,0x1f,0x0,0xff,0x2,0x5,0x19,0x62,0x4,0x19,0x62,0xc,0x72,0x1,0x0,0xf0,0x10,0xe0,0x44,0xfe,0x8,0x10,0xa0,0xc0,0xa0,0x90,0x8e,0x84,0x80,0x0,
-+0x4,0x7,0x8,0x1f,0x0,0xff,0x2,0x22,0x27,0x39,0x21,0x2f,0x29,0x32,0x24,0x8,0x0,0xf0,0x20,0xe0,0x44,0xfe,0x0,0x20,0xe4,0x28,0x30,0xe0,0x22,0xa2,0x5e,0x0,
-+0x0,0x3f,0x20,0x20,0x3f,0x22,0x22,0x22,0x3f,0x22,0x22,0x22,0x44,0x44,0x88,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x20,0xf0,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x2,0x3f,0x22,0x22,0x22,0x22,0x3e,0x28,0x28,0x24,0x24,0x22,0x41,0x40,0x80,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x7c,0x0,0x28,0x24,0x46,0x82,0x80,0x60,0x1e,0x4,
-+0x0,0x3f,0x20,0x3f,0x22,0x24,0x29,0x32,0x24,0x2d,0x34,0x24,0x44,0x44,0x84,0x5,0x4,0xfe,0x4,0xfc,0x20,0x28,0xfc,0x20,0x20,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x3f,0x20,0x3f,0x20,0x2f,0x2a,0x2a,0x2c,0x2a,0x2a,0x2e,0x4a,0x48,0x88,0x8,0x4,0xfe,0x4,0xfc,0x0,0xfe,0x8,0xe8,0xa8,0xa8,0xa8,0xa8,0xe8,0x8,0x28,0x10,
-+0x3f,0x20,0x3f,0x20,0x27,0x20,0x2f,0x20,0x21,0x3f,0x22,0x24,0x5f,0x44,0x84,0xc,0xfc,0x4,0xfc,0x0,0xe0,0x48,0xfc,0x80,0x80,0x7c,0x8,0x10,0x7e,0x10,0x10,0x30,
-+0x0,0x3f,0x20,0x3f,0x22,0x24,0x28,0x32,0x25,0x2c,0x34,0x24,0x44,0x45,0x86,0x4,0x4,0xfe,0x4,0xfc,0x20,0xbc,0xa0,0xa8,0xfc,0x20,0xa8,0xbc,0xa0,0x60,0x3e,0x0,
-+0x0,0x3f,0x20,0x3f,0x22,0x24,0x28,0x33,0x24,0x2d,0x34,0x27,0x44,0x44,0x84,0x5,0x4,0xfe,0x4,0xfc,0x20,0xa8,0x20,0xfc,0xa8,0x24,0x40,0xfe,0x88,0x70,0x48,0x84,
-+0x3f,0x20,0x3f,0x22,0x2f,0x20,0x27,0x20,0x3f,0x2a,0x3f,0x24,0x5f,0x44,0xbf,0x4,0xfc,0x4,0xfc,0x20,0xf8,0x80,0xf0,0x80,0xfc,0xa8,0x7c,0x10,0x7c,0x10,0xfe,0x10,
-+0x0,0x7d,0x4,0x4,0x4,0x7c,0x43,0x40,0x41,0x7c,0x4,0x4,0x4,0x4,0x2b,0x10,0x8,0xfc,0x8,0x30,0x58,0x86,0x2,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x8,0x7e,0x12,0x22,0x1c,0x14,0x62,0x3f,0x0,0x1f,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0xfc,0x44,0x48,0x30,0x48,0x86,0xf0,0x10,0xf0,0x0,0xf8,0x8,0x8,0x50,0x20,
-+0x0,0x7f,0x5,0x5,0x5,0x7d,0x41,0x41,0x41,0x7d,0x7,0x4,0x4,0x4,0x28,0x10,0x4,0xfe,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0x8,
-+0x14,0x14,0x7f,0x15,0x15,0x7f,0x54,0x54,0x54,0x7f,0x15,0x15,0x15,0x27,0x24,0x44,0x20,0x20,0x3c,0x48,0x90,0x7c,0x54,0x54,0x54,0x7c,0x44,0x40,0x42,0x42,0x3e,0x0,
-+0x0,0xf0,0x1f,0x12,0x12,0x77,0x44,0x44,0x44,0x77,0x14,0x14,0x14,0x17,0xa4,0x40,0x4,0xbe,0xc4,0x4,0x4,0xbc,0xa0,0xa0,0xa4,0xbe,0x84,0x84,0x84,0x84,0xa8,0x10,
-+0x79,0xd,0x79,0x47,0x79,0xd,0x31,0xff,0x0,0xf,0x8,0x3f,0x24,0x2f,0x21,0x21,0x3c,0x44,0x3c,0xe0,0x3c,0x44,0x18,0xfe,0x0,0xe0,0x20,0xf8,0x48,0xe8,0x8,0x18,
-+0x1,0x11,0x11,0x11,0x11,0x1f,0x11,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x26,0x24,0x24,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x11,0x10,0xfc,0x24,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x84,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x17,0x10,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x81,0x2,0x4,0xfe,0x88,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x10,0x11,0x10,0x10,0xfc,0x24,0x27,0x24,0x24,0x44,0x28,0x10,0x28,0x45,0x82,0x4,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x50,0x50,0x50,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x4,0xfe,0x0,0x4,0x84,0x48,0x28,0x10,0x10,0x28,0x44,0x84,0x0,0x4,0xfe,0x0,
-+0x11,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x20,0x20,0x20,0x24,0x2c,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x25,0x26,0x24,0x24,0x45,0x28,0x10,0x28,0x44,0x84,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0x44,0x20,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,
-+0x10,0x10,0x10,0x11,0xfd,0x25,0x25,0x25,0x24,0x44,0x28,0x10,0x29,0x46,0x80,0x0,0x20,0x28,0x3c,0xe0,0x20,0x20,0x20,0xfe,0x22,0x62,0x6a,0xa4,0x20,0x20,0x20,0x20,
-+0x10,0x12,0x11,0x11,0xfc,0x27,0x24,0x24,0x24,0x44,0x28,0x10,0x29,0x45,0x82,0x4,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x4,0x4,0x28,0x10,
-+0x10,0x13,0x10,0x10,0xfc,0x24,0x24,0x25,0x24,0x44,0x28,0x10,0x28,0x44,0x87,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0xfe,0x0,
-+0x10,0x11,0x10,0x10,0xfc,0x24,0x27,0x24,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x0,0xf8,0x8,0x50,0x20,0x20,0xfe,0x22,0x24,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x44,0x84,0x0,0x0,0x8,0x48,0x28,0x28,0x28,0x8,0x8,0x8,0x8,0x48,0x90,0x10,0x28,0x46,0x82,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x28,0x44,0x87,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x27,0x25,0x45,0x29,0x11,0x29,0x45,0x82,0x4,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0xec,0x44,
-+0x2,0x1,0x7f,0x0,0x8,0x4,0xff,0x1,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x0,0x8,0xfc,0x0,0x20,0x44,0xfe,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x18,
-+0x10,0x10,0x17,0x10,0xfc,0x24,0x24,0x26,0x25,0x44,0x28,0x10,0x28,0x44,0x87,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x92,0x94,0x98,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x27,0x24,0x47,0x28,0x10,0x28,0x44,0x81,0x6,0x40,0x40,0x5c,0xe0,0x48,0x52,0x62,0x9e,0x0,0xf8,0x90,0x90,0x90,0x92,0x12,0xe,
-+0x10,0x11,0x11,0x11,0xfd,0x26,0x24,0x27,0x24,0x44,0x28,0x10,0x29,0x46,0x84,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x70,0xa8,0xa8,0x24,0x22,0x20,0x20,
-+0x2,0x1,0x7f,0x4,0x14,0x24,0x44,0x5,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x0,0x8,0xfc,0x40,0x50,0x4c,0x44,0x40,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x18,
-+0x10,0x10,0x10,0x13,0xfc,0x24,0x25,0x26,0x24,0x44,0x28,0x10,0x28,0x44,0x81,0x6,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x11,0x10,0x10,0x13,0xfc,0x24,0x24,0x24,0x27,0x44,0x28,0x10,0x28,0x44,0x81,0x2,0x4,0x88,0x0,0xfe,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x10,0x10,0x13,0x12,0xfc,0x24,0x25,0x24,0x24,0x47,0x28,0x10,0x28,0x44,0x84,0x0,0x40,0x20,0xfe,0x2,0x4,0x38,0xc0,0x40,0x44,0xfe,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x44,0x28,0x11,0x28,0x44,0x87,0x0,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x24,0x27,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x20,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x0,0xfe,0x80,0xfc,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x24,0x27,0x4a,0x2a,0x12,0x2a,0x46,0x82,0x2,0x4,0xfe,0x4,0x4,0x4,0xfc,0x24,0x20,0xfe,0x22,0x22,0x52,0x8a,0x2,0xa,0x4,
-+0x11,0x10,0x10,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x4,0xbe,0x84,0x24,0x24,0x24,0xfc,0x24,0x74,0x6c,0xac,0x24,0x24,0x4,0x14,0x8,
-+0x10,0x8,0x41,0x25,0x9,0x72,0x10,0x17,0x1,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x40,0x40,0x50,0x4c,0x44,0x50,0xe0,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x18,
-+0x10,0x10,0x10,0x11,0xfc,0x24,0x25,0x25,0x25,0x45,0x28,0x10,0x28,0x45,0x82,0x0,0x88,0x48,0x10,0xfc,0x24,0x24,0xfc,0x20,0x20,0xfe,0x62,0x62,0xaa,0x24,0x20,0x20,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x82,0x4,0x4,0xfe,0x4,0x4,0xfc,0x0,0xc,0xf0,0x20,0xfc,0x20,0xfe,0x20,0x22,0x22,0x1e,
-+0x20,0x27,0x24,0x25,0xf5,0x56,0x55,0x55,0x55,0x95,0x55,0x27,0x25,0x54,0x94,0x4,0x0,0x84,0xfe,0x4,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x10,0xfd,0x24,0x27,0x24,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x10,0xfc,0x25,0x24,0x24,0x27,0x44,0x28,0x11,0x2a,0x44,0x80,0x0,0x20,0x24,0xfe,0x20,0x20,0xfc,0x20,0x24,0xfe,0x40,0xa4,0xa8,0x90,0x88,0xc6,0x80,
-+0x20,0x20,0x27,0x20,0xfb,0x48,0x4f,0x48,0x4b,0x90,0x52,0x22,0x23,0x52,0x84,0x8,0x40,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x40,0x48,0x7c,0x40,0xc0,0x60,0x1e,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x24,0x27,0x4a,0x2a,0x13,0x2a,0x46,0x83,0x2,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x44,0x28,0x13,0x28,0x44,0x80,0x0,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x50,0x94,0xfe,0x10,0x10,0x10,0x10,
-+0x11,0x10,0x10,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x28,0x13,0x28,0x44,0x84,0x0,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20,
-+0x10,0x10,0xfe,0x12,0x34,0xc,0x32,0xc1,0x3f,0x21,0x22,0x24,0x21,0x22,0x24,0x20,0x0,0x0,0xfc,0x8,0x50,0x20,0xd8,0x6,0xf8,0x8,0x88,0x48,0x8,0x88,0x48,0x18,
-+0x20,0x23,0x22,0x22,0xfb,0x4a,0x4a,0x4b,0x48,0x97,0x54,0x24,0x24,0x54,0x8f,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xa4,0xfe,0x0,
-+0x10,0x10,0x13,0x11,0xfc,0x25,0x24,0x27,0x24,0x44,0x28,0x11,0x2a,0x44,0x84,0x3,0x8,0x1c,0xe0,0x24,0xa8,0xfc,0x40,0xfe,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x13,0x10,0xfd,0x25,0x25,0x24,0x27,0x4a,0x29,0x10,0x28,0x44,0x84,0x0,0x40,0x24,0xfe,0x0,0xfc,0x4,0xfc,0x0,0xfe,0x2,0xfc,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x7f,0x12,0xc,0x7f,0x15,0x24,0x4c,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x40,0x44,0x7e,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10,
-+0x10,0x10,0x13,0x10,0xfd,0x24,0x27,0x24,0x25,0x45,0x29,0x11,0x2b,0x45,0x85,0x1,0x88,0x88,0xfe,0x88,0xfc,0x88,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfe,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x10,0xfc,0x25,0x25,0x25,0x25,0x45,0x28,0x13,0x28,0x44,0x84,0x3,0x88,0x88,0xfe,0x88,0x88,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x81,0x0,0x20,0x44,0xfe,0x54,0x24,0x54,0x4,0xfc,0x10,0x12,0xd4,0x18,0x12,0x52,0x8e,0x0,
-+0x20,0x23,0x21,0x20,0xfb,0x4a,0x4c,0x4b,0x48,0x88,0x51,0x22,0x24,0x50,0x88,0x3,0x1c,0xe0,0x24,0xa8,0xfe,0x42,0x44,0xfe,0x80,0x80,0xfc,0x88,0x50,0x20,0xd8,0x6,
-+0x10,0x10,0x13,0x12,0xfc,0x24,0x24,0x24,0x24,0x44,0x28,0x13,0x28,0x44,0x85,0x2,0x40,0x20,0xfe,0x2,0x1c,0xe0,0x80,0xfc,0x88,0x88,0x88,0xfe,0x0,0x88,0x6,0x2,
-+0x10,0x11,0x11,0x11,0xfc,0x27,0x24,0x24,0x25,0x45,0x29,0x11,0x28,0x44,0x85,0x0,0x20,0x24,0x24,0xfc,0x20,0xfe,0x0,0x24,0xfe,0x24,0x24,0xfc,0x20,0x24,0xfe,0x2,
-+0x4,0x3f,0x4,0x7f,0xe,0x15,0x24,0x3f,0x21,0x21,0x3f,0x22,0x26,0x41,0x46,0x98,0x20,0x24,0x3e,0xe8,0x10,0x28,0x44,0xfe,0x0,0x4,0xfe,0x10,0x20,0xc0,0x30,0x8,
-+0x20,0x23,0x20,0x21,0xf9,0x4f,0x49,0x49,0x49,0x89,0x51,0x20,0x22,0x52,0x88,0x0,0x8,0xfc,0x20,0x3c,0x20,0xfe,0x0,0x8,0xfc,0x0,0xfe,0x2,0xaa,0xaa,0x2,0xc,
-+0x10,0x10,0x11,0x10,0xfd,0x24,0x27,0x24,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x20,0x28,0xfc,0x20,0x24,0xa8,0xfe,0x0,0xfc,0x4,0x74,0x54,0x74,0x4,0xfc,0x4,
-+0x10,0x13,0x10,0x10,0xfd,0x25,0x25,0x25,0x24,0x45,0x28,0x13,0x28,0x45,0x82,0x0,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x24,0x22,0x20,
-+0x10,0x11,0x10,0x13,0xfe,0x24,0x24,0x24,0x24,0x44,0x29,0x11,0x29,0x45,0x84,0x0,0x20,0x24,0xa8,0xfe,0x2,0xfc,0x88,0x88,0xf8,0x20,0xfc,0x24,0x24,0x2c,0x20,0x20,
-+0x10,0x11,0x11,0x11,0xfd,0x25,0x24,0x24,0x25,0x44,0x28,0x11,0x28,0x45,0x86,0x0,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x40,0x84,0xf8,0x20,0x48,0xfc,0xa8,0x26,0x22,0x60,
-+0x10,0x11,0x10,0x10,0xff,0x24,0x25,0x25,0x25,0x45,0x29,0x10,0x2b,0x44,0x84,0x0,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20,
-+0x10,0x13,0x10,0x11,0xfc,0x25,0x25,0x25,0x24,0x47,0x28,0x11,0x29,0x45,0x85,0x1,0x20,0xfe,0x20,0xfc,0x0,0xfc,0x4,0xfc,0x88,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x10,0x11,0xfd,0x25,0x25,0x25,0x24,0x45,0x29,0x11,0x29,0x45,0x84,0x3,0x20,0xfe,0x0,0xfc,0x54,0x74,0x54,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0xfe,
-+0x0,0x3e,0x23,0x3e,0x20,0x3f,0x52,0x52,0x9e,0x1,0xff,0x4,0xc,0x3,0x4,0x18,0x40,0x20,0xfc,0x88,0x50,0xfc,0x20,0xf8,0x20,0x20,0xfe,0x20,0x40,0x80,0x60,0x10,
-+0x2,0xfa,0xaa,0xaa,0xff,0xaa,0xaa,0xfa,0x22,0xfa,0x2a,0x2a,0x49,0x4a,0xac,0x10,0x0,0x3e,0x2a,0xaa,0xfe,0xaa,0xaa,0xbe,0x88,0xbe,0x8a,0x8a,0x12,0x92,0x6a,0x4,
-+0x40,0x40,0x47,0x44,0xf4,0x57,0x54,0x55,0x56,0x94,0x54,0x25,0x24,0x54,0x89,0x10,0x40,0x24,0xfe,0x88,0x88,0xfe,0x88,0xdc,0xaa,0x40,0x90,0x20,0x48,0x84,0xfc,0x4,
-+0x20,0x21,0x20,0x23,0xfa,0x4c,0x49,0x49,0x4f,0x89,0x53,0x23,0x25,0x55,0x89,0x1,0x8,0xfc,0x20,0xfe,0xaa,0x70,0xa8,0x20,0xfc,0x24,0x3c,0xa4,0x7c,0x24,0x3c,0x24,
-+0x0,0x3f,0x4,0x4,0x4,0x8,0x8,0x11,0x21,0x49,0x89,0x11,0x11,0x21,0x5,0x2,0x0,0xf0,0x10,0x24,0x7e,0x4,0x4,0x14,0x8,0x0,0x20,0x10,0x10,0xc,0x4,0x0,
-+0x1,0x9,0x9,0x11,0x23,0x0,0x1,0xff,0x2,0xc,0x31,0xc9,0x9,0x11,0x25,0x2,0x0,0x20,0x10,0x8,0x8,0x0,0x4,0xfe,0x80,0x60,0x1e,0x24,0x20,0x18,0x8,0x0,
-+0x0,0x0,0x3f,0x0,0x11,0x9,0x3f,0x0,0x0,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x10,0x78,0x80,0x10,0x10,0x20,0xf0,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0xfe,0x12,0x34,0xc,0x32,0xc1,0x1f,0x0,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x8,0x50,0x20,0xd8,0x6,0xe0,0x40,0x84,0xfe,0x0,0x0,0x0,0x0,
-+0x4,0xff,0x8,0x12,0x3c,0x8,0x14,0x3e,0x0,0x1f,0x0,0x1,0xff,0x1,0x5,0x2,0x40,0xfe,0x20,0x48,0xf0,0x20,0x50,0xf8,0x0,0xe0,0x40,0x84,0xfe,0x0,0x0,0x0,
-+0x0,0x3f,0x0,0x0,0x1,0x1,0x1,0x1,0x7,0x19,0x61,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x20,0x40,0x80,0xc,0x30,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3f,0x0,0x0,0x11,0x9,0x5,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x80,0x40,0x30,0xc,0x0,0x0,0x0,
-+0x0,0x0,0xfc,0x5,0xa,0x10,0x13,0x1e,0x32,0xd3,0x12,0x12,0x12,0x12,0x51,0x20,0x80,0x80,0x88,0xfc,0x8,0x8,0xe8,0x28,0x28,0xe8,0x8,0x28,0x12,0x2,0xfe,0x0,
-+0x8,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x17,0x8,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x8,0x0,0x4,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x9c,0x4,0x4,0xfc,0x4,0x0,
-+0x8,0xfc,0x8,0x49,0x49,0x4b,0x4d,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x8,0xfc,0x8,0x49,0x4a,0x48,0x4b,0x48,0x7c,0x4,0x5,0x1c,0xe4,0x4,0x17,0x8,0x80,0x80,0xf8,0x8,0x10,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xfd,0x8,0x48,0x48,0x48,0x48,0x4b,0x7c,0x5,0x4,0x1c,0xe7,0x4,0x14,0x8,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x10,0x10,0xfe,0x12,0x34,0xc,0x32,0xc1,0x1f,0x0,0x8,0xf,0x0,0x7f,0x0,0x0,0x0,0x0,0xfc,0x8,0x50,0x20,0xd8,0x6,0xe0,0x20,0x24,0xfe,0x4,0xf4,0x14,0x8,
-+0x8,0xfc,0x8,0x48,0x49,0x4b,0x48,0x48,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0x20,0x20,0x40,0x88,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xfc,0x8,0x4b,0x48,0x48,0x48,0x4b,0x7c,0x7,0x4,0x1c,0xe4,0x5,0x15,0xa,0x80,0x80,0xbc,0xc0,0x50,0x24,0xd4,0xc,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,
-+0x8,0xfc,0x9,0x49,0x4b,0x4d,0x49,0x49,0x7d,0x4,0x7,0x1c,0xe4,0x4,0x14,0x8,0xa0,0xa0,0x24,0x28,0x30,0x60,0xa2,0x1e,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x9,0xfc,0x8,0x4b,0x48,0x48,0x48,0x48,0x7f,0x4,0x4,0x1c,0xe4,0x4,0x15,0xa,0x4,0x88,0x50,0xfe,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x0,0xfb,0x8,0x48,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x8,0x4,0xfe,0x0,0x0,0xdc,0x54,0x54,0x54,0xdc,0x54,0x54,0x54,0x54,0x54,0x54,0x0,
-+0x8,0xfc,0xb,0x48,0x48,0x48,0x48,0x48,0x7c,0x4,0x4,0x1f,0xe4,0x4,0x15,0xa,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0xfe,0x0,0x88,0x6,0x2,
-+0x8,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7c,0x7,0x4,0x1c,0xe5,0x6,0x14,0x8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20,0x20,
-+0x8,0xfc,0x9,0x49,0x4b,0x4d,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0xa0,0x90,0x4,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0,
-+0x8,0xfc,0x9,0x4b,0x48,0x4f,0x48,0x49,0x7e,0x5,0x4,0x1c,0xe5,0x4,0x14,0xb,0x40,0x80,0x8,0xfc,0x44,0xfe,0x90,0x28,0x46,0x90,0x20,0x44,0x88,0x30,0xc0,0x0,
-+0x0,0x79,0x49,0x57,0x48,0x69,0x56,0x41,0x5f,0x0,0x8,0xf,0x0,0x7f,0x0,0x0,0x40,0x7c,0x40,0xfe,0x48,0x50,0x60,0x80,0xe0,0x20,0x24,0xfe,0x4,0xf4,0x14,0x8,
-+0x0,0xfe,0x14,0x8,0xfe,0x1a,0x28,0x49,0x1f,0x0,0x8,0xf,0x0,0x7f,0x0,0x0,0x80,0x88,0xfc,0x88,0x50,0x20,0xd0,0xe,0xe0,0x20,0x24,0xfe,0x4,0xf4,0x14,0x8,
-+0x8,0x7e,0x8,0x7e,0x8,0xff,0x10,0x3e,0x42,0x9f,0x0,0x8,0xf,0x0,0x7f,0x0,0x40,0x44,0xfe,0x88,0x50,0x20,0x58,0x86,0x0,0xf0,0x10,0x14,0xfe,0x4,0xf4,0x8,
-+0x8,0xff,0xa,0x4a,0x4a,0x4b,0x4a,0x48,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0x40,0xbe,0x12,0x12,0x92,0x2a,0x44,0x0,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x16,0x8,0x20,0x10,0xfe,0x2,0xfe,0x0,0xee,0x22,0x22,0xaa,0x66,0x66,0xaa,0x22,0xaa,0x44,
-+0x8,0xfd,0x8,0x48,0x49,0x49,0x49,0x49,0x7c,0x5,0x4,0x1f,0xe4,0x5,0x16,0x8,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x26,0x22,0x60,
-+0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x4,0x1c,0xe5,0x6,0x14,0x8,0x20,0x44,0xfe,0x44,0x74,0x54,0xb4,0x24,0x44,0xfc,0x0,0xa0,0xa4,0x8a,0x88,0x78,
-+0x13,0xfa,0x13,0x52,0x52,0x52,0x53,0x52,0x7a,0xb,0xa,0x3a,0xcb,0xa,0x2c,0x11,0xfc,0x4,0xfc,0x0,0xf8,0x10,0xfe,0x20,0x60,0xdc,0x44,0x88,0xfe,0x88,0x88,0x98,
-+0x8,0xfd,0x8,0x4b,0x48,0x49,0x49,0x49,0x7d,0x5,0x4,0x1d,0xe4,0x7,0x14,0x9,0x50,0xdc,0x50,0xde,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x88,0xfc,0x88,0xfe,0x88,0x4,
-+0x10,0xff,0x10,0x57,0x54,0x57,0x51,0x53,0x79,0xb,0x9,0x3f,0xc9,0xb,0x2d,0x11,0x40,0xfe,0x0,0xbc,0xa4,0xbc,0x10,0xf8,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4,
-+0x8,0x8,0x10,0x12,0x24,0x7c,0x8,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x10,0x11,0x22,0x7e,0x8,0x13,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x8,0x8,0x10,0x12,0x24,0x7d,0x8,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x28,0x10,
-+0x8,0x8,0x10,0x12,0x25,0x7c,0x9,0x10,0x20,0x7e,0x20,0x0,0xf,0x71,0x20,0x0,0x80,0x80,0x84,0xfe,0x0,0x0,0xf8,0x8,0x10,0x20,0x40,0x80,0x2,0x2,0xfe,0x0,
-+0x8,0x8,0x10,0x12,0x25,0x7c,0x8,0x11,0x20,0x7e,0x20,0x0,0xe,0x71,0x21,0x2,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xc8,0x48,0xa8,0x88,0x8a,0xa,0xa,0x4,
-+0x8,0x8,0x10,0x13,0x25,0x7d,0x9,0x11,0x21,0x7d,0x21,0x1,0xe,0x72,0x24,0x8,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x8,0x8,0x11,0x12,0x24,0x7c,0xb,0x10,0x20,0x7e,0x20,0x0,0xe,0x71,0x21,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x80,0x80,0x88,0x4,0xfc,0x4,
-+0x9,0x9,0x11,0x13,0x25,0x7d,0x9,0x11,0x21,0x7f,0x21,0x1,0xf,0x71,0x21,0x0,0x20,0x20,0x20,0x20,0x24,0x2c,0xf0,0x20,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0,
-+0x8,0x9,0x10,0x10,0x24,0x7c,0x9,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x8,0xfc,0x8,0x50,0x20,0x10,0xfe,0x22,0x24,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x8,0x8,0x10,0x12,0x27,0x7c,0x8,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x10,0x11,0x21,0x25,0x49,0xff,0x11,0x21,0x41,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x0,0x48,0x48,0x48,0x48,0x48,0xfe,0x48,0x48,0x48,0x48,0x48,0x78,0x0,0x0,0xfc,0x0,
-+0x10,0x10,0x20,0x24,0x4f,0xf8,0x10,0x21,0x41,0xfd,0x42,0x2,0x1c,0xe4,0x48,0x13,0xa0,0x90,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x8,0x90,0x60,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x20,0x25,0x4a,0xf8,0x13,0x20,0x40,0xfc,0x41,0x0,0x1c,0xe0,0x43,0x0,0x80,0x80,0xf8,0x8,0x10,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x20,0x27,0x48,0xf8,0x13,0x22,0x46,0xfb,0x40,0x0,0x1c,0xe1,0x41,0x2,0x90,0x90,0x94,0xfe,0x94,0x94,0xfc,0x90,0x90,0xfe,0x92,0x92,0x9a,0x14,0x10,0x10,
-+0x8,0x8,0x11,0x11,0x25,0x7d,0x9,0x10,0x21,0x7d,0x21,0x1,0xd,0x71,0x20,0x0,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,
-+0x10,0x10,0x20,0x20,0x48,0xf9,0x13,0x20,0x40,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x27,0x24,0x48,0xf9,0x13,0x24,0x43,0xfd,0x41,0x0,0x1c,0xe0,0x40,0x0,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xf8,0x6,0xfc,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x10,0x10,0x21,0x25,0x7f,0xf8,0x11,0x23,0x45,0xf9,0x41,0x1,0x1d,0xe1,0x41,0x1,0x80,0x88,0x7c,0x0,0xff,0x84,0xfe,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x11,0x11,0x23,0x24,0x40,0xf8,0x11,0x26,0x43,0xfa,0x42,0x7,0x18,0xe0,0x40,0x0,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x58,0x46,0xf8,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,
-+0x10,0x17,0x20,0x23,0x4a,0xfa,0x13,0x22,0x42,0xfb,0x42,0x1,0x18,0xe1,0x42,0x4,0x4,0xfe,0x40,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x40,0x80,0x60,0x1e,0x4,
-+0x8,0x9,0x10,0x10,0x24,0x7d,0x9,0x11,0x21,0x7f,0x21,0x1,0xf,0x71,0x21,0x1,0x20,0x24,0xa8,0xb0,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x12,0x11,0x20,0x27,0x48,0xf8,0x13,0x22,0x42,0xfb,0x40,0x4,0x19,0xe2,0x44,0x8,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0xc4,0x54,0x48,0x40,0x40,
-+0x10,0x10,0x21,0x24,0x48,0xfb,0x10,0x21,0x42,0xfc,0x40,0x1,0x1c,0xe0,0x41,0x6,0x20,0x28,0xfc,0x20,0x24,0xfe,0x88,0x46,0x7a,0x88,0x90,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x27,0x20,0x48,0xf9,0x17,0x20,0x43,0xfa,0x42,0x2,0x1b,0xe2,0x40,0x0,0x40,0x48,0xfc,0x40,0xb0,0x14,0xfe,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x10,0x10,0x20,0x23,0x48,0xf8,0x10,0x23,0x40,0xfc,0x40,0x3,0x1c,0xe0,0x40,0x0,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0x50,
-+0x10,0x12,0x21,0x21,0x48,0xff,0x14,0x24,0x45,0xfd,0x45,0x5,0x1d,0xe4,0x44,0x4,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x8,0x9,0x11,0x13,0x25,0x7d,0x9,0x11,0x20,0x7d,0x21,0x1,0xd,0x71,0x21,0x1,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x10,0x12,0x16,0xd8,0x10,0x52,0x92,0xe,
-+0x10,0x13,0x20,0x2f,0x49,0xf9,0x11,0x27,0x41,0xf9,0x41,0x7,0x18,0xe0,0x47,0x0,0x18,0xe0,0x44,0xfe,0x50,0x50,0x50,0xfc,0x50,0x50,0x54,0xfe,0x40,0x48,0xfc,0x0,
-+0x10,0x17,0x20,0x22,0x41,0xf7,0x14,0x28,0x41,0xfc,0x41,0x0,0x1c,0xe0,0x41,0x6,0x1c,0xe0,0x0,0x48,0x50,0xfe,0x2,0x4,0xf0,0x10,0x10,0xa0,0x40,0xa0,0x1e,0x4,
-+0x11,0x11,0x21,0x25,0x4a,0xfb,0x14,0x21,0x42,0xfc,0x41,0x1,0x1d,0xe1,0x41,0x1,0x10,0x10,0xd0,0x58,0x56,0x52,0x90,0x50,0x3e,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x12,0x21,0x20,0x47,0xf8,0x1f,0x20,0x41,0xfb,0x45,0x1,0x1d,0xe1,0x41,0x0,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0xfe,0x14,0x10,0x50,0x24,0x4,0xfc,
-+0x10,0x10,0x24,0x27,0x4c,0xf3,0x12,0x22,0x43,0xfe,0x43,0x2,0x1e,0xe2,0x43,0x2,0x80,0x40,0x40,0xfe,0x2,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x11,0x11,0x22,0x24,0x4a,0xf9,0x11,0x20,0x47,0xfc,0x44,0x7,0x1c,0xe4,0x47,0x4,0x24,0x24,0x48,0x90,0x48,0x24,0x24,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x11,0x11,0x2f,0x21,0x49,0xf8,0x13,0x22,0x42,0xfb,0x40,0x7,0x18,0xe0,0x40,0x0,0x10,0x14,0xfe,0x10,0xf0,0x40,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0x40,0x40,0x40,
-+0x11,0x11,0x21,0x21,0x4f,0xf9,0x13,0x23,0x45,0xfd,0x49,0x1,0x1d,0xe1,0x41,0x1,0x0,0x4,0x3e,0x24,0xe4,0x24,0x3c,0xa4,0x64,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,
-+0x13,0x12,0x22,0x23,0x4a,0xfa,0x13,0x20,0x47,0xf8,0x2,0x2,0x1a,0xe3,0x44,0x18,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x40,0x48,0x7c,0x40,0x40,0xc6,0x3c,
-+0x10,0x10,0x27,0x24,0x4c,0xfc,0x17,0x24,0x44,0xff,0x44,0x4,0x1c,0xe7,0x44,0x1,0x10,0x90,0xd0,0x90,0xb8,0xb6,0xd2,0x90,0x94,0x94,0x98,0x88,0x90,0xa0,0x40,0x80,
-+0x10,0x10,0x23,0x22,0x4b,0xf8,0x17,0x20,0x43,0xfa,0x42,0x2,0x1a,0xe0,0x41,0x6,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x0,0xf8,0x8,0x48,0x48,0x88,0xb0,0xc,0x4,
-+0x10,0x10,0x23,0x22,0x4a,0xfb,0x12,0x22,0x43,0xf8,0x41,0x5,0x1d,0xe5,0x48,0x0,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0x40,0x24,0x2,0xa,0xf8,0x0,
-+0x12,0x13,0x22,0x25,0x4d,0xf5,0x15,0x25,0x45,0xfd,0x44,0x4,0x1c,0xe4,0x44,0x7,0x4,0xfe,0x20,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0xa0,0xa0,0x40,0x60,0x98,0x6,
-+0x11,0x11,0x21,0x22,0x4b,0xf6,0x1a,0x22,0x43,0xfa,0x43,0x2,0x1a,0xe2,0x42,0x3,0x8,0x7c,0x8,0x8,0xfe,0x40,0x48,0xfc,0x20,0x24,0xfe,0x20,0x20,0x50,0x8e,0x4,
-+0x10,0x14,0x22,0x22,0x48,0xf8,0x16,0x22,0x42,0xfa,0x42,0x2,0x1a,0xe5,0x48,0x0,0x20,0x48,0xfc,0x88,0x88,0x88,0xf8,0x80,0xf8,0x88,0x88,0x88,0xf8,0x0,0x86,0x7c,
-+0x10,0x13,0x22,0x27,0x4a,0xfb,0x12,0x22,0x43,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x8,0xfc,0x8,0xf8,0x40,0xfc,0x20,0x92,0xe,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x10,0x13,0x20,0x22,0x49,0xf8,0x17,0x20,0x41,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x8,0xfc,0x90,0x94,0x98,0x90,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x27,0x20,0x4b,0xfa,0x13,0x22,0x43,0xfa,0x43,0x2,0x1f,0xe1,0x42,0x4,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x10,0x17,0x24,0x25,0x4c,0xf7,0x15,0x25,0x45,0xfc,0x47,0x4,0x1c,0xe4,0x48,0x0,0x4,0xfe,0x0,0xf8,0x0,0xfe,0x48,0x30,0x8e,0x10,0xfe,0x90,0x50,0x10,0x50,0x20,
-+0x10,0x10,0x27,0x20,0x49,0xf9,0x11,0x20,0x43,0xfa,0x42,0x2,0x1a,0xe2,0x42,0x2,0x40,0x24,0xfe,0x0,0xf8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x94,0x94,0xf4,0x14,0x8,
-+0x10,0x10,0x2f,0x21,0x4a,0xfa,0x12,0x23,0x40,0xff,0x44,0x4,0x1d,0xe4,0x44,0x4,0x80,0x44,0xfe,0x10,0xa8,0x48,0xa8,0xf8,0x44,0xfe,0x44,0x94,0xf4,0x4,0x14,0x8,
-+0x10,0x12,0x21,0x20,0x4b,0xf8,0x11,0x22,0x44,0xfb,0x42,0x2,0x1a,0xe2,0x4f,0x0,0x0,0x8,0x10,0x0,0xfc,0x0,0x10,0x8,0x4,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x11,0x10,0x2f,0x20,0x4b,0xf8,0x17,0x20,0x40,0xfb,0x40,0x1,0x1a,0xe4,0x48,0x0,0x10,0xa4,0xfe,0xa0,0xf8,0xa8,0xfe,0xa8,0xa8,0xf8,0xa0,0xb0,0xa8,0xae,0xa4,0xa0,
-+0x10,0x10,0x27,0x24,0x48,0xf9,0x11,0x21,0x41,0xf9,0x41,0x7,0x18,0xe1,0x42,0x4,0x40,0x20,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x17,0x20,0x28,0x4f,0xf4,0x14,0x27,0x40,0xfb,0x40,0xf,0x19,0xe2,0x45,0x0,0x8,0xfc,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0x80,
-+0x13,0x12,0x23,0x22,0x4b,0xf8,0x17,0x24,0x47,0xf8,0x43,0x2,0x19,0xe0,0x43,0xc,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfc,0xa4,0xfc,0x0,0xf8,0x8,0xb0,0x40,0xb0,0xe,
-+0x10,0x17,0x24,0x2f,0x54,0xf7,0x14,0x21,0x43,0xf8,0x40,0x7,0x19,0xe2,0x45,0x0,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x84,0x10,0xe0,0x40,0x88,0xfc,0x50,0x4c,0x44,0x80,
-+0x10,0x17,0x24,0x22,0x4a,0xf4,0x10,0x20,0x41,0xfa,0x45,0x0,0x19,0xe0,0x40,0x7,0x4,0xbe,0xa4,0x94,0x94,0xa4,0x50,0x88,0x24,0x42,0x90,0x60,0x88,0x30,0xc0,0x0,
-+0x12,0x12,0x24,0x22,0x4a,0xf7,0x14,0x27,0x44,0xf7,0x40,0xf,0x18,0xe1,0x46,0x0,0x48,0x48,0x90,0x48,0x48,0xfc,0x44,0xfc,0x44,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x40,
-+0x12,0x12,0x22,0x2f,0x42,0xfa,0x17,0x20,0x47,0xfd,0x45,0x5,0x1d,0xe7,0x40,0x0,0x4,0xfe,0x10,0xa4,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x28,0x26,0xc2,
-+0x10,0x10,0x2f,0x20,0x4a,0xf9,0x13,0x22,0x43,0xfa,0x43,0x1,0x1a,0xe4,0x41,0x0,0x40,0x44,0xfe,0xa0,0xa8,0x10,0xfe,0xc,0xf8,0x8,0xf8,0x50,0x4c,0x44,0x40,0x80,
-+0x12,0x11,0x27,0x24,0x4d,0xfc,0x17,0x24,0x43,0xfa,0x42,0x3,0x1a,0xe2,0x43,0x2,0x8,0x10,0xfc,0x44,0x54,0x44,0xfc,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x1f,0x20,0x27,0x4c,0xff,0x14,0x27,0x40,0xff,0x44,0x7,0x1c,0xe7,0x40,0xf,0x4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xfe,
-+0x10,0x11,0x25,0x23,0x4a,0xf9,0x10,0x2e,0x42,0xfa,0x42,0x2,0x1a,0xe5,0x48,0x0,0x24,0xfe,0x24,0xfc,0x20,0xfe,0x0,0xf8,0x88,0xf8,0x80,0xf8,0x88,0xf8,0x86,0x7c,
-+0x10,0x11,0x21,0x25,0x49,0xf8,0x17,0x24,0x44,0xff,0x40,0x7,0x18,0xe1,0x46,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0xbc,0xa4,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x40,
-+0x10,0x13,0x22,0x26,0x4b,0xf8,0x17,0x20,0x43,0xfa,0x43,0x1,0x1b,0xe5,0x49,0x1,0x8,0xfc,0xa8,0xa8,0xf8,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x44,0x48,0x30,0x8e,0x4,
-+0x11,0x15,0x27,0x29,0x47,0xfb,0x15,0x29,0x43,0xfa,0x42,0x2,0x1a,0xe0,0x41,0x6,0x8,0x28,0xbc,0x48,0xbe,0x18,0x2a,0x4e,0xf8,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x0,0x2,0x2,0x4,0x4,0x8,0x10,0x3f,0x0,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x20,0xc0,0x80,0x0,0x0,0x0,0x20,0x10,0xf8,0x8,
-+0x11,0x25,0x79,0x11,0x29,0x7d,0x1,0xff,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x40,0x3,0x10,0x24,0x78,0x10,0x28,0x7c,0x10,0xfe,0x80,0x88,0x48,0x50,0x50,0x22,0xd2,0xe,
-+0x0,0x0,0x4,0x4,0x4,0x9,0x9,0x12,0x9,0x9,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x90,0x90,0x90,0x20,0x20,0x40,0x20,0x20,0x90,0x90,0x90,0x0,0x0,0x0,
-+0x11,0x11,0x22,0x44,0x22,0x11,0x11,0x0,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x20,0x10,0x10,0x20,0x40,0x20,0x10,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x21,0x42,0x21,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x21,0x21,0x3f,0x20,0x20,0x1f,0x84,0x8,0x10,0x8,0x88,0xf0,0x10,0xf0,0x8,0xfc,0x8,0x8,0xf8,0xa,0x2,0xfe,
-+0x0,0x8,0x7d,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x10,0x1c,0x70,0x21,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x9,0x7d,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x1e,0x72,0x24,0x8,0x10,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0,
-+0x0,0x8,0x7c,0x13,0x10,0x10,0x7d,0x10,0x10,0x17,0x10,0x1c,0x70,0x20,0x0,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40,
-+0x0,0x8,0x7c,0x10,0x11,0x12,0x7c,0x13,0x10,0x10,0x10,0x1c,0x71,0x21,0x2,0x4,0x10,0x90,0x90,0x90,0x8,0x4,0x2,0xf8,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x0,0x8,0x7c,0x17,0x10,0x11,0x7d,0x11,0x10,0x10,0x10,0x1c,0x71,0x22,0x4,0x8,0x80,0x40,0x24,0xfe,0x8,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4,
-+0x0,0xb,0x7c,0x10,0x10,0x10,0x7c,0x13,0x10,0x10,0x10,0x10,0x1c,0x70,0x27,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x50,0x48,0x48,0x40,0xfe,0x0,
-+0x0,0x8,0x7f,0x10,0x10,0x11,0x11,0x7d,0x11,0x11,0x11,0x1d,0x70,0x20,0x0,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x8,0x8,0x8,0x28,0x10,
-+0x0,0x8,0x7c,0x10,0x17,0x10,0x7c,0x10,0x11,0x11,0x11,0x1e,0x72,0x24,0x8,0x10,0x80,0xa0,0x98,0x88,0xfe,0xa0,0xa0,0xa4,0x24,0x28,0x30,0x20,0x62,0xa2,0x1e,0x0,
-+0x0,0x8,0x7c,0x10,0x10,0x10,0x7c,0x10,0x11,0x11,0x11,0x1d,0x71,0x21,0x1,0x1,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x8,0xfc,0x21,0x21,0x23,0xfd,0x21,0x21,0x21,0x25,0x39,0xe1,0x41,0x1,0x1,0xa0,0xa8,0xa4,0x24,0x20,0x3e,0xe0,0x20,0x20,0x20,0x10,0x10,0x12,0xa,0xa,0x4,
-+0x0,0x8,0x7c,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x11,0x1d,0x71,0x21,0x1,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x9,0x7d,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x11,0x1d,0x71,0x21,0x1,0x4,0xfe,0x4,0x4,0xfc,0x24,0x20,0x24,0xfe,0x20,0x20,0x10,0x10,0x4a,0x8a,0x6,
-+0x2,0x12,0xfa,0x2f,0x22,0x22,0xfa,0x22,0x22,0x22,0x22,0x3a,0xe4,0x4a,0x11,0x0,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0xa4,0x0,0x0,
-+0x0,0xb,0x7d,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x1d,0x73,0x20,0x0,0x0,0x4,0xfe,0x8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xe,0xf8,0x8,0x8,0x8,
-+0x1,0x11,0xf9,0x21,0x27,0x21,0xf9,0x21,0x21,0x21,0x2f,0x20,0x39,0xe2,0x44,0x8,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,0x10,0x8,0x4,0x4,
-+0x0,0xb,0x7c,0x10,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x1d,0x70,0x20,0x0,0x3,0x4,0xfe,0x20,0x40,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x0,0x17,0xf8,0x22,0x22,0x24,0xf7,0x21,0x21,0x22,0x2a,0x34,0xe4,0x4a,0x1,0x0,0x0,0xc0,0xbe,0xa2,0xa4,0xa4,0xe8,0xa4,0xa4,0xa2,0xa2,0xa2,0xb4,0xa8,0x20,0x20,
-+0x1,0x11,0xfa,0x24,0x29,0x21,0xfa,0x26,0x2a,0x22,0x22,0x3a,0xe2,0x42,0x2,0x2,0x0,0x8,0x7c,0x0,0x0,0x4,0xfe,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x1,0x11,0xf9,0x25,0x23,0x21,0xf9,0x21,0x23,0x2d,0x21,0x39,0xe2,0x42,0x4,0x18,0x20,0x20,0x24,0x2c,0x30,0x20,0x20,0x30,0x2c,0x24,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0x11,0xf9,0x22,0x25,0x20,0xf8,0x20,0x23,0x2c,0x23,0x3a,0xe2,0x42,0x3,0x2,0x0,0x0,0xfc,0x8,0x10,0xa0,0x40,0xa0,0x18,0x6,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x1f,0x21,0x49,0x11,0x23,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0x8,0xfc,0x8,0x20,0x18,0x8,0x0,0xfc,0x0,0x10,0xf8,0x40,0x24,0xfe,0x0,
-+0x0,0x13,0xfa,0x24,0x23,0x20,0xf8,0x21,0x23,0x20,0x28,0x37,0xe0,0x40,0x0,0x0,0x0,0xfe,0x42,0x44,0xfc,0x80,0xa0,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x14,0xfa,0x21,0x20,0x26,0xfa,0x22,0x22,0x22,0x22,0x3a,0xe2,0x45,0x8,0x0,0x20,0x20,0x24,0xfe,0x40,0x50,0x90,0xfc,0x10,0x14,0xfe,0x10,0x10,0x16,0xfc,0x0,
-+0x1,0x9,0x7f,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x17,0x1c,0x71,0x22,0x4,0x10,0x10,0xfc,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x1,0x11,0xff,0x21,0x20,0x23,0xfa,0x22,0x22,0x22,0x27,0x38,0xe0,0x41,0x2,0xc,0x10,0x14,0xfe,0x10,0x40,0xf8,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4,
-+0x0,0x10,0xfb,0x20,0x20,0x21,0xfb,0x20,0x23,0x22,0x22,0x3a,0xe3,0x42,0x0,0x0,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x0,0x10,0xf8,0x23,0x22,0x22,0xfb,0x22,0x22,0x22,0x22,0x3a,0xe2,0x44,0x9,0x2,0x48,0x7c,0x40,0xfe,0x42,0x78,0xc4,0x7c,0x0,0xf0,0x90,0x90,0x90,0x92,0x12,0xe,
-+0x0,0xb,0x7e,0x12,0x13,0x12,0x7e,0x13,0x12,0x12,0x13,0x1e,0x72,0x22,0x3,0x2,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x20,0x24,0xa8,0x30,0x20,0xa2,0x22,0x1e,
-+0x0,0x8,0x7d,0x11,0x12,0x10,0x7c,0x11,0x12,0x11,0x11,0x1e,0x70,0x21,0x2,0xc,0x40,0x40,0x48,0x50,0x40,0xa0,0x98,0x48,0x44,0x48,0x50,0xa0,0xa0,0x10,0xe,0x4,
-+0x0,0x14,0xff,0x24,0x28,0x23,0xf8,0x20,0x27,0x20,0x21,0x39,0xe2,0x44,0x1,0x0,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x40,0x50,0x48,0x44,0x44,0x40,0x80,
-+0x0,0x14,0xff,0x24,0x2a,0x23,0xfa,0x24,0x24,0x2a,0x21,0x39,0xe2,0x44,0x8,0x10,0x80,0x40,0xfe,0x2,0x4,0xbc,0xa4,0xa4,0xa4,0xa4,0x34,0x28,0x22,0x22,0x1e,0x0,
-+0x0,0x17,0xfc,0x28,0x21,0x22,0xf8,0x20,0x2f,0x20,0x20,0x39,0xe2,0x44,0x8,0x0,0x0,0xfe,0x2,0xa4,0x18,0x8,0x40,0x44,0xfe,0x40,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x0,0x13,0xfa,0x22,0x23,0x22,0xfa,0x23,0x22,0x22,0x23,0x3d,0xe5,0x49,0x11,0x1,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x7,0xfc,0x25,0x24,0x25,0xf8,0x20,0x23,0x22,0x23,0x3a,0xe3,0x42,0x3,0x2,0x4,0xfe,0x4,0xf4,0x4,0xf4,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x0,0x10,0xf9,0x22,0x25,0x28,0xff,0x24,0x24,0x27,0x24,0x3c,0xe7,0x44,0x4,0x5,0x40,0xc0,0x20,0x10,0xe8,0x6,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90,
-+0x0,0x17,0xfa,0x21,0x20,0x23,0xf8,0x27,0x21,0x21,0x22,0x3a,0xe4,0x48,0x1,0x6,0x1c,0xe0,0x48,0x50,0x20,0xfc,0x80,0xfe,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x17,0xfc,0x24,0x24,0x27,0xfc,0x24,0x27,0x24,0x24,0x3f,0xe4,0x44,0x4,0x4,0x4,0xbe,0x84,0x84,0x84,0xbc,0x4,0x0,0xbc,0x4,0x24,0xa8,0x10,0x28,0x46,0x84,
-+0x1,0x11,0xfa,0x21,0x21,0x20,0xf8,0x23,0x22,0x22,0x22,0x3a,0xe3,0x42,0x3,0x2,0x24,0x24,0x48,0x24,0x24,0x40,0x84,0xfe,0x4,0x94,0x64,0x94,0xc,0x4,0xfc,0x4,
-+0x0,0x17,0xfa,0x21,0x27,0x24,0xf8,0x27,0x21,0x21,0x22,0x3a,0xe4,0x48,0x1,0x6,0x38,0xc0,0x48,0x50,0xfe,0x82,0x84,0xfe,0x0,0xf0,0x10,0xa0,0x40,0xa0,0x1e,0x4,
-+0x0,0x10,0xfb,0x22,0x22,0x22,0xfb,0x22,0x22,0x22,0x23,0x3d,0xe5,0x49,0x11,0x1,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x11,0xff,0x21,0x21,0x20,0xff,0x24,0x27,0x20,0x27,0x38,0xe7,0x40,0xf,0x0,0x10,0x14,0xfe,0x10,0xf0,0x44,0xfe,0x44,0xfc,0x40,0xfc,0x40,0xfc,0x40,0xfe,0x0,
-+0x1,0x11,0xff,0x21,0x21,0x2f,0xf8,0x23,0x22,0x23,0x22,0x3b,0xe0,0x41,0x2,0x4,0x10,0x10,0xfc,0x10,0x14,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x0,0x10,0xc,0x4,
-+0x0,0x17,0xfd,0x25,0x26,0x26,0xfb,0x24,0x20,0x2f,0x20,0x39,0xe0,0x40,0x1,0x6,0x0,0xbc,0xac,0xac,0xb4,0xb4,0x18,0xa4,0x40,0xfe,0x90,0x10,0xa0,0x40,0xb0,0xc,
-+0x0,0x14,0xfc,0x27,0x21,0x21,0xfb,0x22,0x27,0x2a,0x23,0x3a,0xe2,0x43,0x2,0x2,0x40,0x44,0x44,0xfc,0x44,0x20,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,0x0,
-+0x0,0x10,0xfb,0x22,0x22,0x22,0xfa,0x23,0x22,0x22,0x23,0x38,0xe5,0x45,0x9,0x0,0x40,0x84,0xfe,0x44,0x74,0x94,0xd4,0x24,0x44,0x84,0xfc,0x40,0x24,0x2a,0xa,0xf8,
-+0x4,0x2,0xf2,0x2f,0x24,0x24,0xf7,0x25,0x25,0x25,0x35,0xe9,0x49,0x15,0x22,0x1,0x40,0x40,0x44,0xfe,0x80,0x0,0x7e,0x12,0x54,0x50,0x5e,0x50,0x50,0xb0,0x90,0xe,
-+0x0,0x17,0xf9,0x20,0x2f,0x20,0xfb,0x22,0x23,0x22,0x23,0x38,0xef,0x40,0x0,0x0,0x40,0xfc,0x10,0xa0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40,
-+0x0,0x14,0xfa,0x20,0x2f,0x21,0xf8,0x27,0x20,0x23,0x20,0x3f,0xe0,0x40,0x3,0xc,0xa0,0xa4,0xa8,0xa0,0xfe,0x10,0xa0,0xfc,0x40,0xf8,0x40,0xfe,0x40,0xa0,0x18,0x6,
-+0x2,0x13,0xfa,0x27,0x28,0x25,0xfa,0x24,0x2a,0x21,0x27,0x38,0xe1,0x42,0xc,0x0,0x0,0xbc,0x4,0xa8,0x90,0x28,0x46,0x40,0x48,0x50,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x0,0x10,0xff,0x24,0x24,0x27,0xfc,0x24,0x27,0x24,0x27,0x3c,0xe7,0x48,0x13,0x0,0x78,0x40,0xfe,0x82,0xf4,0x88,0xf8,0x0,0xfe,0xc0,0x68,0xb0,0x68,0xa6,0x24,0x40,
-+0x0,0xf,0xf8,0x28,0x28,0x2f,0xf2,0x22,0x2b,0x2a,0x2a,0x3a,0xcb,0x5e,0x0,0x0,0x20,0xa0,0xbe,0xc4,0xa4,0xa8,0x10,0x28,0xc4,0x82,0x7c,0x44,0xc4,0x44,0x7c,0x44,
-+0x3e,0x23,0x3e,0x20,0x3f,0x22,0x62,0xbe,0x0,0x7f,0x1,0x3f,0x1,0x1,0xff,0x0,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0xfc,0x0,0xf8,0x40,0x24,0xfe,0x0,
-+0x1,0x5,0xf7,0x29,0x2f,0x23,0xf5,0x29,0x23,0x22,0x22,0x3a,0xe2,0x40,0x1,0x6,0x8,0x28,0xbc,0x48,0xbe,0x18,0xaa,0x4e,0xf8,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0xf,0x78,0x4b,0x68,0x4b,0x6a,0x4b,0x48,0xff,0x80,0x3f,0x1,0x1f,0x1,0x1,0xff,0xe4,0x3e,0xa4,0x2c,0xa4,0xac,0xa4,0x24,0xfe,0x2,0xf8,0x0,0xf0,0x40,0x24,0xfe,
-+0x0,0x3e,0x22,0x3e,0x22,0x3e,0x0,0xff,0x9,0x28,0x2f,0x28,0x38,0x48,0x84,0x3,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x26,0xfc,
-+0x20,0x23,0x22,0xfa,0x23,0x22,0xfa,0x23,0x20,0xfb,0x2a,0x2a,0x3a,0x22,0x2f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x20,0x20,0x27,0xfa,0x21,0x21,0xf8,0x23,0x22,0xfa,0x2b,0x2a,0x3a,0x22,0x23,0x22,0x8,0x3c,0xc0,0x48,0x48,0x50,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x30,0x38,0x54,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x10,0x12,0x12,0xe,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x30,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x80,0x84,0xfe,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x4,0x28,0x10,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x30,0x3b,0x56,0x52,0x92,0x12,0x12,0x12,0x11,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x12,0x31,0x39,0x54,0x50,0x90,0x10,0x11,0x12,0x14,0x18,0x0,0x8,0xfc,0x8,0x88,0x50,0x50,0x10,0xa0,0xa0,0x40,0xa0,0x20,0x18,0xe,0x4,
-+0x10,0x10,0x13,0x10,0xfd,0x11,0x31,0x39,0x55,0x51,0x90,0x10,0x17,0x10,0x10,0x10,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x19,0x12,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x10,0x12,0x12,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x20,0x20,0x20,0x20,0x24,0x2c,0xb0,0x20,0x20,0x20,0x20,0x22,0xa2,0x22,0x1e,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x32,0x3a,0x54,0x50,0x90,0x10,0x10,0x10,0x13,0x1c,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x50,0x50,0x20,0xc0,0x0,0x0,
-+0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x31,0xdf,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x10,0x10,0x10,0x10,0xff,0x12,0x32,0x3a,0x56,0x52,0x92,0x13,0x12,0x12,0x12,0x12,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x9c,0xc,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x90,0x10,0x10,0x11,0x12,0x14,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x28,0x48,0x48,0x60,0xa0,0xa2,0x22,0x1e,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x32,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x11,0x11,0x11,0x11,0xfd,0x11,0x31,0x3b,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x0,0x8,0x18,0x20,0x40,0x80,0x4,0xfe,0x40,0x20,0x20,0x10,0x10,0x4e,0x84,0x0,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x52,0x92,0x14,0x14,0x18,0x11,0x10,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xa8,0xa8,0x48,0x44,0x84,0x2,0x0,
-+0x2,0x4,0x1f,0x10,0x12,0x11,0x10,0x1f,0x1,0x1,0x7f,0x3,0x5,0x19,0x61,0x1,0x0,0x10,0xf8,0x10,0x10,0x60,0x4,0xfe,0x4,0x4,0xf4,0x94,0x48,0x30,0xe,0x0,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x30,0x38,0x54,0x50,0x90,0x10,0x11,0x11,0x12,0x14,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x12,0x12,0x11,0x10,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0xf8,0x8,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x10,0x10,0xfc,0x10,0x33,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0xfc,0x8,0x90,0x60,0x20,0xfe,0x22,0x24,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x1,0x1,0x7f,0x5,0x9,0x11,0x20,0xdf,0x0,0x0,0x7f,0x1,0x9,0x11,0x25,0x2,0x0,0x8,0xfc,0x40,0x30,0xe,0x24,0xf0,0x0,0x8,0xfc,0x0,0x20,0x18,0x8,0x0,
-+0x11,0x11,0x11,0x17,0xfd,0x10,0x33,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x8,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x80,0x80,
-+0x10,0x10,0x17,0x10,0xfc,0x10,0x31,0x39,0x55,0x53,0x95,0x19,0x11,0x11,0x11,0x11,0x0,0x4,0xfe,0x80,0x80,0x80,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x10,0xff,0x10,0x30,0x38,0x54,0x50,0x91,0x11,0x12,0x12,0x14,0x18,0x80,0xa0,0x90,0x94,0xfe,0xa0,0xa0,0xa4,0xa4,0xa8,0x28,0x30,0x62,0xa2,0x1e,0x0,
-+0x10,0x13,0x12,0x12,0xfe,0x12,0x32,0x3b,0x56,0x52,0x92,0x12,0x13,0x12,0x13,0x10,0x8,0xfc,0x0,0x40,0x40,0x78,0x88,0x10,0x20,0x20,0x50,0x8c,0x4,0x0,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x12,0x31,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x8,0xfc,0x40,0x40,0x48,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x32,0x3a,0x56,0x53,0x92,0x12,0x12,0x14,0x14,0x18,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x11,0x11,0xfd,0x11,0x30,0x3b,0x54,0x50,0x91,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0xfe,0x80,0x88,0xfc,0x8,0x8,0x88,0x50,0x20,
-+0x10,0x10,0x10,0x10,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x32,0x3a,0x57,0x52,0x91,0x11,0x12,0x12,0x14,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x10,0x10,0x8,0x4,0x4,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x20,0x60,0x20,0x30,0x2c,0x24,0x20,0x20,0x20,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x32,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x8,0x1c,0xe0,0x0,0x8,0xfc,0x0,0xf8,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0,
-+0x10,0x10,0x10,0x10,0xfd,0x12,0x34,0x38,0x54,0x53,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x40,0x0,0xf8,0x8,0x10,0x10,0xa0,0x40,0x20,
-+0x10,0x10,0x10,0x11,0xfd,0x12,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x10,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x28,0x10,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x10,0x52,0x8a,0x26,0x12,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x32,0x3b,0x54,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40,
-+0x10,0x10,0x10,0x13,0xfe,0x14,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x10,0x10,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0x4,0xfc,0x0,
-+0x10,0x13,0x12,0x11,0xfc,0x10,0x30,0x3b,0x54,0x50,0x93,0x10,0x10,0x10,0x17,0x10,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x44,0x50,0xf8,0x40,0x40,0x48,0xfc,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x55,0x52,0x94,0x18,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0xf8,0x50,0x64,0xfe,0x80,0xfc,0x40,0x88,0xfc,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x54,0x51,0x92,0x14,0x18,0x10,0x10,0x10,0x40,0x40,0x44,0xf8,0x50,0x64,0xfe,0x40,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x32,0x3a,0x55,0x50,0x90,0x10,0x10,0x10,0x17,0x10,0x0,0x8,0xfc,0x90,0x90,0x90,0x94,0x94,0x94,0x98,0x90,0x90,0x90,0x94,0xfe,0x0,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x30,0x39,0x54,0x53,0x90,0x10,0x10,0x11,0x12,0x14,0x80,0x80,0x9c,0xe0,0x50,0x20,0x52,0x8e,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,
-+0x10,0x10,0x17,0x10,0xfc,0x11,0x32,0x3b,0x54,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x40,0x80,0x10,0x8,0xfc,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x10,0x10,0x10,0x10,0xfc,0x13,0x32,0x3a,0x56,0x52,0x92,0x12,0x10,0x10,0x11,0x16,0x40,0x44,0x7e,0x40,0x48,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x80,0xb0,0xc,0x4,
-+0x10,0x10,0x14,0x12,0xfd,0x10,0x37,0x38,0x54,0x50,0x90,0x10,0x11,0x11,0x12,0x14,0x40,0x40,0x44,0x48,0x50,0x44,0xfe,0xa0,0xa0,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x10,0x10,0x12,0x12,0xff,0x10,0x33,0x38,0x54,0x53,0x92,0x12,0x12,0x12,0x11,0x10,0x40,0x40,0x48,0x48,0xf8,0x0,0xf8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x17,0x11,0xfd,0x12,0x3a,0x37,0x51,0x51,0x95,0x15,0x12,0x15,0x18,0x10,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x7c,0x0,0x6,0xfc,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x10,0x37,0x38,0x54,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0x3c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x11,0xfe,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x12,0x12,0x13,0x12,0x0,0x40,0xc0,0x4,0x3e,0x4,0x4,0x4,0xbc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x11,0xfd,0x13,0x35,0x39,0x55,0x50,0x97,0x10,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa4,0x28,0x30,0x60,0xa4,0x1c,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x11,0x12,0xfe,0x14,0x31,0x39,0x53,0x55,0x91,0x11,0x11,0x11,0x11,0x11,0x80,0x88,0x7c,0x0,0x80,0x84,0x7e,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x10,0x11,0xfe,0x14,0x31,0x38,0x54,0x57,0x90,0x10,0x11,0x12,0x17,0x10,0x40,0x40,0xa0,0x10,0xe,0x24,0xf0,0x0,0x8,0xfc,0x80,0x80,0x10,0x8,0xfc,0x4,
-+0x10,0x10,0x1e,0x22,0x24,0x54,0x8,0x11,0x21,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x10,0x10,0xfc,0x10,0x50,0x90,0xfc,0x10,0x14,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x2,0x1,0x7f,0x4,0x14,0x14,0x24,0x45,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0x8,0xfc,0x40,0x50,0x48,0x44,0x44,0x0,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,
-+0x1,0x11,0x9,0x3f,0x2,0x7f,0x4,0x8,0x31,0xc1,0x3f,0x1,0x9,0x11,0x25,0x2,0x0,0x10,0x20,0xf8,0x0,0xfc,0x40,0x30,0xe,0x4,0xf8,0x0,0x20,0x18,0x8,0x0,
-+0x10,0x10,0x12,0x13,0xfe,0x14,0x30,0x38,0x57,0x50,0x91,0x10,0x10,0x10,0x11,0x12,0x40,0x20,0x20,0xfe,0x2,0x44,0x40,0x84,0xfe,0x88,0x8,0x90,0x60,0x90,0xc,0x4,
-+0x10,0x10,0x17,0x10,0xfc,0x12,0x32,0x38,0x54,0x51,0x96,0x10,0x10,0x10,0x12,0x11,0x0,0x4,0xbe,0x84,0x84,0xa4,0x94,0x94,0x84,0x8c,0xb4,0x84,0x84,0x84,0x94,0x8,
-+0x8,0x8,0x8,0xfe,0x1c,0x2a,0x49,0x0,0xf,0x8,0xa,0x9,0x8,0x10,0x10,0x60,0x20,0x20,0x24,0xfe,0x70,0xa8,0x26,0x20,0xf0,0x20,0x20,0xa0,0xa0,0x22,0x22,0x1e,
-+0x10,0x11,0x11,0x11,0xfd,0x12,0x30,0x3b,0x54,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x17,0x12,0xfd,0x11,0x33,0x38,0x54,0x50,0x97,0x10,0x10,0x10,0x11,0x10,0x8,0x3c,0xc0,0x48,0x48,0x50,0xf8,0x10,0x60,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x10,0x11,0xfe,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x12,0x14,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x34,0x28,
-+0x10,0x10,0x10,0x17,0xfc,0x11,0x30,0x3f,0x54,0x50,0x90,0x17,0x10,0x10,0x10,0x10,0x80,0x40,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,
-+0x10,0x12,0x11,0x11,0xfc,0x12,0x32,0x38,0x55,0x51,0x92,0x16,0x12,0x12,0x10,0x13,0x10,0x10,0x10,0x10,0x54,0x52,0x90,0x14,0x14,0x18,0x8,0x10,0x20,0x40,0x80,0x0,
-+0x10,0x13,0x10,0x10,0xfd,0x10,0x30,0x3b,0x54,0x51,0x91,0x12,0x10,0x10,0x11,0x16,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x48,0x48,0x50,0xa0,0x90,0xe,0x4,
-+0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x55,0x53,0x95,0x19,0x11,0x11,0x11,0x11,0x40,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x8,0x8,0x7e,0x8,0x1c,0x2a,0x49,0x4,0x8,0x10,0x2f,0xc4,0x4,0x4,0x8,0x10,0x20,0x28,0xfc,0x20,0x70,0xac,0x20,0xc0,0x20,0x10,0xee,0x24,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x13,0x10,0xfc,0x13,0x31,0x38,0x56,0x51,0x90,0x17,0x10,0x10,0x11,0x16,0x40,0x48,0xfc,0x40,0x40,0xfe,0x22,0xa4,0x20,0x20,0x24,0xfe,0x40,0x58,0x86,0x2,
-+0x8,0xa,0x7f,0x14,0x14,0x3f,0x4,0x7f,0x4,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x8,0xc,0x70,0x40,0x44,0x7e,0x48,0x48,0x88,0x8,0xfe,0x80,0x40,0x30,0xe,0x0,
-+0x10,0x10,0x10,0x10,0xff,0x12,0x33,0x3a,0x57,0x52,0x90,0x1f,0x10,0x10,0x10,0x10,0x44,0x7e,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x48,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x10,0x13,0x12,0x12,0xfe,0x13,0x30,0x38,0x55,0x51,0x92,0x14,0x10,0x10,0x13,0x1c,0x4,0xfe,0x94,0x94,0x94,0xfc,0x80,0x88,0xfc,0x8,0x88,0x50,0x20,0xc0,0x0,0x0,
-+0x10,0x10,0x17,0x10,0xff,0x12,0x32,0x3a,0x57,0x52,0x92,0x1f,0x10,0x10,0x17,0x10,0x10,0x38,0xc0,0x44,0xfe,0x48,0x48,0x48,0xfc,0x48,0x48,0xfe,0x40,0x48,0xfc,0x0,
-+0x10,0x10,0x10,0x17,0xf8,0x10,0x33,0x3a,0x56,0x52,0x93,0x10,0x12,0x14,0x19,0x10,0x80,0x40,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x48,0x46,0x42,0x80,
-+0x10,0x10,0x17,0x10,0xff,0x12,0x32,0x3b,0x54,0x53,0x90,0x1f,0x10,0x10,0x11,0x10,0x80,0x48,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x10,0xfe,0x40,0x40,0x40,0x80,
-+0x10,0x10,0x17,0x11,0xfd,0x12,0x37,0x39,0x55,0x51,0x95,0x15,0x12,0x15,0x18,0x10,0x10,0x14,0x7e,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x16,0xfc,0x0,
-+0x10,0x10,0x13,0x10,0xfc,0x13,0x30,0x38,0x57,0x52,0x91,0x10,0x11,0x16,0x11,0x10,0x40,0x48,0xfc,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x50,0xe0,0x50,0x4e,0x44,0x80,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x93,0x13,0x15,0x15,0x19,0x11,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x13,0x10,0xfd,0x10,0x37,0x39,0x56,0x55,0x98,0x13,0x10,0x10,0x11,0x16,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfc,0x10,0x8,0xf6,0x40,0xf8,0x40,0xb0,0xc,0x4,
-+0x11,0x11,0x13,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x9f,0x12,0x12,0x12,0x13,0x10,0x10,0x10,0xfc,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x50,0x88,0x0,0xfc,0x0,
-+0x20,0x20,0x20,0x2f,0xf8,0x20,0x37,0x6d,0x64,0xa5,0x24,0x24,0x27,0x24,0x24,0x24,0x40,0x40,0x44,0xfe,0x40,0x44,0xfe,0x14,0xa4,0xf4,0x44,0x44,0xfc,0x44,0x54,0x8,
-+0x10,0x10,0x10,0x17,0xfc,0x11,0x32,0x3c,0x57,0x52,0x93,0x12,0x13,0x10,0x1f,0x10,0x40,0x40,0x48,0xfc,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xff,0x12,0x33,0x3a,0x56,0x53,0x90,0x10,0x11,0x12,0x14,0x10,0x40,0x44,0xfe,0x40,0xf8,0x48,0x58,0xe8,0x48,0xf8,0xc0,0xe0,0x50,0x4e,0x44,0x40,
-+0x11,0x15,0x15,0x15,0xfd,0x15,0x30,0x3b,0x56,0x52,0x92,0x12,0x12,0x10,0x11,0x16,0x20,0x20,0x24,0x3e,0x50,0x88,0x8,0xfc,0x8,0x48,0x48,0x48,0xa8,0xa2,0x22,0x1e,
-+0x10,0x13,0x12,0x12,0xfb,0x10,0x37,0x3a,0x57,0x52,0x93,0x12,0x12,0x1f,0x10,0x10,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfe,0x8,0xf8,0x8,0xf8,0x8,0xe,0xf8,0x8,0x8,
-+0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x38,0x54,0x57,0x94,0x14,0x14,0x14,0x17,0x14,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xbc,0xa4,
-+0x10,0x10,0x3e,0x48,0x8,0x7e,0x14,0x22,0x41,0x1,0xff,0x3,0x5,0x39,0xc1,0x1,0x8,0xfc,0x80,0xf8,0x88,0xf8,0x80,0xfc,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x0,
-+0x10,0x10,0x17,0x11,0xf9,0x17,0x31,0x3b,0x53,0x55,0x95,0x19,0x11,0x11,0x11,0x11,0x10,0xd0,0x10,0x10,0x54,0xd4,0x38,0x90,0x50,0x28,0x28,0x28,0x28,0x44,0x82,0x0,
-+0x10,0x10,0x13,0x12,0xfe,0x13,0x32,0x3a,0x57,0x52,0x92,0x13,0x1e,0x12,0x12,0x13,0x40,0xbc,0x24,0x24,0x24,0xa6,0x40,0x3c,0x84,0x24,0x28,0xa8,0x10,0x28,0x46,0x84,
-+0x10,0x14,0x12,0x12,0xfc,0x10,0x36,0x3a,0x56,0x52,0x92,0x12,0x12,0x15,0x18,0x10,0x20,0x44,0xfe,0x84,0x84,0xfc,0x80,0xfc,0x84,0x84,0x84,0xfc,0x80,0x6,0xfc,0x0,
-+0x10,0x10,0x17,0x10,0xfd,0x10,0x37,0x38,0x54,0x57,0x90,0x11,0x12,0x14,0x11,0x10,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80,
-+0x10,0x14,0x12,0x14,0xfc,0x15,0x35,0x3d,0x55,0x54,0x95,0x15,0x15,0x15,0x14,0x14,0x0,0x4,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x11,0x10,0x13,0x10,0xfc,0x13,0x30,0x38,0x57,0x50,0x91,0x12,0x14,0x18,0x13,0x10,0x8,0x90,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x80,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x14,0x12,0x10,0xfc,0x17,0x30,0x39,0x56,0x55,0x98,0x13,0x10,0x10,0x10,0x10,0x80,0x44,0x48,0x10,0x4,0xfe,0xa0,0x10,0x48,0xf6,0x40,0xf8,0x40,0x40,0x40,0x40,
-+0x10,0x14,0x17,0x14,0xf8,0x13,0x30,0x3b,0x56,0x53,0x92,0x13,0x12,0x10,0x1f,0x10,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x4,0xfe,0x24,0x24,0xfc,0x0,0xfc,0x84,0x84,0xfc,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x10,0x17,0x11,0x11,0xfd,0x12,0x3a,0x35,0x54,0x5b,0x92,0x12,0x12,0x12,0x1f,0x10,0x0,0xf8,0x10,0x1c,0xe4,0xa4,0x44,0xb4,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xff,0x10,0x37,0x39,0x52,0x55,0x98,0x17,0x10,0x11,0x16,0x10,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0x38,0xce,0x44,0xfc,0xe0,0x58,0x44,0x40,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x93,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x50,0x54,0xfe,0x0,
-+0x10,0x13,0x12,0x13,0xfe,0x13,0x38,0x37,0x50,0x54,0x92,0x11,0x16,0x10,0x12,0x11,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xbe,0x84,0xa4,0x94,0x8c,0xb4,0x84,0x94,0x8,
-+0x11,0x11,0x11,0xfa,0x17,0x32,0x3b,0x56,0x53,0x92,0x10,0x17,0x10,0x10,0x10,0x10,0x40,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x10,0x11,0x13,0x12,0xff,0x12,0x3b,0x36,0x52,0x57,0x90,0x11,0x12,0x14,0x11,0x10,0x84,0x4,0xc4,0x44,0xc4,0x7e,0xc4,0x64,0x54,0xd4,0xc4,0x44,0x44,0x44,0x54,0x88,
-+0x10,0x10,0x13,0x12,0xff,0x12,0x33,0x38,0x57,0x51,0x92,0x14,0x1b,0x10,0x10,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x80,0xfe,0x10,0x48,0x46,0xf8,0x40,0x40,0x40,
-+0x10,0x10,0x17,0x10,0xfd,0x11,0x37,0x39,0x55,0x50,0x91,0x13,0x15,0x19,0x11,0x11,0x40,0x24,0xfe,0x0,0xf8,0x8,0xfe,0x8,0xf8,0x84,0x48,0x30,0x10,0x4e,0x84,0x0,
-+0x10,0x10,0x17,0x10,0xfb,0x12,0x33,0x38,0x57,0x54,0x95,0x15,0x15,0x15,0x14,0x14,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x22,0x14,0xff,0x8,0x49,0x49,0x7f,0x8,0x11,0x21,0xff,0x3,0xd,0x31,0xc1,0x1,0x4,0x7e,0xc4,0x7c,0x44,0x7c,0x44,0x94,0x8,0x0,0xfe,0x80,0x40,0x30,0xe,0x0,
-+0x10,0x10,0x17,0x14,0xf8,0x11,0x31,0x39,0x55,0x51,0x91,0x1f,0x10,0x11,0x12,0x14,0x80,0x40,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x10,0x17,0x14,0xf8,0x11,0x32,0x38,0x55,0x52,0x97,0x1a,0x12,0x12,0x13,0x12,0x80,0x40,0xfe,0x2,0xa4,0x10,0x48,0xa0,0x10,0x8,0xfe,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x14,0x12,0x12,0xf8,0x16,0x33,0x3a,0x56,0x53,0x92,0x12,0x12,0x13,0x12,0x10,0x20,0x20,0x24,0xfc,0x28,0x30,0xfe,0x40,0xfc,0x44,0x44,0x7c,0xc4,0x44,0x7c,0x44,
-+0x10,0x13,0x12,0x12,0xff,0x12,0x33,0x3a,0x57,0x53,0x95,0x15,0x15,0x15,0x19,0x11,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xa8,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x11,0x11,0x1f,0x11,0xfd,0x10,0x37,0x3c,0x57,0x50,0x97,0x10,0x13,0x10,0x1f,0x10,0x10,0x14,0xfe,0x10,0xf0,0x44,0xfe,0x44,0xfc,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x0,
-+0x10,0x10,0x17,0x10,0xfa,0x11,0x37,0x38,0x57,0x54,0x95,0x15,0x15,0x14,0x17,0x14,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x0,0xfc,0x4,0xf4,0x14,0xf4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x13,0xfe,0x12,0x32,0x3a,0x57,0x52,0x93,0x12,0x14,0x15,0x18,0x10,0x10,0x18,0x14,0xfe,0x10,0x90,0xd2,0x92,0xf4,0x94,0xd8,0xa8,0x9a,0xaa,0xc6,0x4,
-+0x10,0x13,0x10,0x17,0xfd,0x14,0x31,0x38,0x57,0x50,0x9f,0x11,0x11,0x10,0x10,0x10,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x40,0xfc,0x0,0xfe,0x0,0xf8,0x8,0x48,0x30,
-+0x10,0x12,0x11,0x14,0xff,0x14,0x31,0x39,0x55,0x51,0x90,0x17,0x10,0x10,0x17,0x10,0x40,0x48,0x50,0x40,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x40,0xfc,0x40,0x44,0xfe,0x0,
-+0x44,0x29,0x10,0x2f,0x48,0x19,0x2b,0x4d,0x9,0x29,0x11,0xff,0x5,0x19,0x61,0x1,0x48,0xf0,0x54,0xfe,0x80,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0x30,0xe,0x0,
-+0x22,0x22,0x23,0x24,0xff,0x25,0x75,0x6f,0x65,0xa5,0x27,0x25,0x25,0x25,0x29,0x30,0x4,0x4,0xd4,0x8c,0xcc,0x64,0x54,0xd4,0x46,0x7c,0xc4,0x44,0x44,0x44,0x44,0x84,
-+0x10,0x13,0x10,0x11,0xff,0x12,0x32,0x3b,0x56,0x53,0x92,0x12,0x17,0x10,0x10,0x10,0x8,0xc8,0x88,0x10,0xfe,0x64,0x54,0xd4,0x54,0xd4,0x48,0x68,0xc8,0x54,0x52,0x60,
-+0x22,0x22,0x22,0x2f,0xf2,0x22,0x7f,0x6a,0xa2,0x2b,0x2a,0x2a,0x2e,0x2a,0x31,0x20,0x10,0x18,0x14,0x94,0x7e,0x50,0xd0,0x54,0x54,0xc8,0x6a,0x56,0x20,0x6,0xfc,0x0,
-+0x14,0xff,0x14,0x3f,0x41,0xbd,0x25,0x3d,0x2,0x1,0xff,0x3,0xd,0x31,0xc1,0x1,0x20,0x24,0x3e,0x44,0xa4,0x28,0x10,0x28,0x46,0x0,0xfe,0x80,0x40,0x30,0xe,0x0,
-+0x1,0x3f,0x9,0x7f,0x40,0x9f,0x8,0x1f,0x68,0xf,0x1,0xff,0x5,0x19,0x61,0x1,0x0,0xf8,0x20,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x4,0xfe,0x40,0x30,0xe,0x0,
-+0x20,0x20,0x2f,0x28,0xfa,0x29,0x6f,0x78,0x6a,0xaa,0x2b,0x28,0x28,0x28,0x29,0x32,0x0,0x4,0xfe,0x8,0x28,0x48,0xee,0x92,0xa4,0xa8,0xe8,0xa8,0x88,0x94,0x14,0x22,
-+0x10,0x10,0x10,0x11,0xfd,0x13,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x12,0x14,0xa0,0x90,0x84,0xfe,0x10,0x10,0xfc,0x10,0xfc,0x10,0x14,0xfe,0x0,0xa8,0xa6,0x2,
-+0x10,0x10,0x11,0x12,0xfd,0x10,0x3a,0x36,0x53,0x50,0x97,0x14,0x14,0x15,0x14,0x14,0x40,0xa0,0x10,0x48,0xf6,0xa0,0x48,0xa8,0xf8,0x44,0xfe,0x44,0xa4,0xf4,0x14,0x8,
-+0x11,0x11,0x12,0x17,0xfc,0x17,0x3c,0x37,0x50,0x5f,0x90,0x13,0x12,0x13,0x12,0x13,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,
-+0x11,0x10,0x17,0x10,0xff,0x12,0x33,0x3a,0x56,0x52,0x93,0x10,0x1f,0x12,0x11,0x10,0x10,0xa0,0xfc,0xa0,0xf8,0xa8,0x38,0x8,0xe8,0x8,0xf8,0x10,0xfe,0x10,0x50,0x20,
-+0x10,0x13,0x12,0x13,0xfe,0x13,0x32,0x3b,0x56,0x52,0x92,0x12,0x13,0x14,0x18,0x10,0x4,0xfe,0x4,0xfc,0x20,0xac,0x70,0xac,0x20,0xa8,0xfc,0x20,0xfe,0x20,0x20,0x20,
-+0x10,0x13,0x10,0x10,0xff,0x10,0x33,0x38,0x57,0x54,0x95,0x17,0x15,0x15,0x14,0x14,0x0,0xf8,0x90,0x60,0xfe,0xc4,0x48,0x44,0xfe,0xa4,0x14,0xfc,0x14,0xf4,0x14,0x8,
-+0x20,0x22,0x22,0x22,0xf4,0x2f,0x32,0x6c,0x64,0xaf,0x20,0x23,0x2c,0x20,0x21,0x20,0x40,0x78,0x48,0x48,0xf8,0x8,0xfe,0x20,0x54,0xb8,0x50,0xb8,0x54,0x92,0x10,0x30,
-+0x10,0x13,0x10,0x17,0xfd,0x14,0x31,0x38,0x57,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x40,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x8,
-+0x10,0x10,0x11,0x13,0xfe,0x13,0x33,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x80,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x84,0xfc,0x84,
-+0x10,0x1f,0x10,0x17,0xfd,0x15,0x35,0x3f,0x50,0x53,0x90,0x1f,0x11,0x12,0x15,0x10,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0x80,
-+0x0,0x3e,0x23,0x3e,0x20,0x3f,0x62,0xa2,0x3e,0x1,0xff,0x3,0xd,0x31,0xc1,0x1,0x20,0x28,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x24,0xfe,0x80,0x40,0x30,0xe,0x0,
-+0x10,0x14,0x17,0x15,0xf9,0x12,0x35,0x3b,0x52,0x54,0x9b,0x10,0x11,0x12,0x14,0x10,0x80,0x40,0xfe,0x2,0xbc,0xa8,0xb0,0x10,0xe8,0x6,0xf8,0x40,0x50,0x4c,0x44,0xc0,
-+0x0,0x22,0x14,0xff,0x14,0x7f,0x55,0x55,0x67,0x41,0x7f,0x41,0x41,0x7f,0x40,0x1,0x20,0x28,0x24,0xa4,0x20,0xfe,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,
-+0x8,0x7f,0x8,0x3e,0x8,0x7f,0x10,0x1e,0x22,0x4a,0x5,0xff,0x1,0x2,0xc,0x70,0x40,0x44,0x7e,0x48,0x88,0x28,0x10,0x28,0x46,0x90,0x8,0xfe,0x0,0x80,0x70,0xe,
-+0x0,0x4,0xfe,0x20,0x20,0x3d,0x26,0x45,0x64,0x98,0x8,0x10,0x10,0x20,0x41,0x6,0x8,0xfc,0x88,0x88,0x88,0xe,0x0,0xf8,0x8,0x88,0x50,0x20,0x50,0x90,0xe,0x4,
-+0x0,0x5,0xff,0x21,0x21,0x3d,0x25,0x45,0x65,0x99,0x9,0x11,0x11,0x21,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0,
-+0x0,0x4,0xfe,0x21,0x22,0x3c,0x24,0x45,0x64,0x98,0x9,0x11,0x12,0x24,0x41,0x0,0x80,0x84,0xfe,0x0,0xf8,0x10,0x24,0xfe,0x94,0x94,0x24,0x24,0x44,0x84,0x28,0x10,
-+0x0,0x4,0xfe,0x20,0x21,0x3e,0x24,0x44,0x67,0x98,0x8,0x11,0x10,0x20,0x41,0x6,0x40,0x40,0xa0,0xa0,0x18,0x26,0x40,0x88,0x10,0x20,0x44,0x88,0x10,0x60,0x80,0x0,
-+0x0,0x5,0xff,0x21,0x21,0x3c,0x25,0x45,0x65,0x99,0x9,0x11,0x11,0x20,0x40,0x3,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x50,0x8c,0x4,
-+0x0,0x4,0xfe,0x20,0x21,0x3e,0x25,0x44,0x64,0x99,0x9,0x11,0x11,0x20,0x47,0x0,0x20,0x20,0x50,0x88,0x4,0xa,0xfc,0x0,0x44,0x24,0x24,0x28,0x28,0x10,0xfe,0x0,
-+0x0,0x5,0xfe,0x21,0x20,0x3c,0x25,0x44,0x64,0x98,0xb,0x10,0x10,0x20,0x40,0x0,0x1c,0xe0,0x0,0x24,0xa8,0x0,0xfc,0x8,0x30,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x1,0x4,0xfe,0x21,0x21,0x3d,0x25,0x45,0x65,0x99,0x8,0x10,0x13,0x20,0x40,0x0,0x4,0x88,0x10,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,
-+0x0,0x5,0xfe,0x20,0x20,0x3b,0x2a,0x4a,0x6a,0x9a,0xb,0x12,0x10,0x20,0x4f,0x0,0x0,0xfc,0x8,0x10,0x20,0xbe,0xa2,0xb4,0xb4,0xa8,0xb6,0x22,0xa0,0x44,0xfe,0x0,
-+0x0,0x4,0xff,0x22,0x24,0x3d,0x25,0x45,0x65,0x99,0x9,0x17,0x10,0x21,0x42,0x4,0x80,0x40,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x0,0xb,0xfc,0x21,0x20,0x3b,0x2a,0x4d,0x68,0x99,0x9,0x11,0x10,0x20,0x47,0x0,0x20,0xfe,0x20,0xfc,0x0,0xfe,0x2,0xfc,0x0,0xfc,0x4,0xfc,0x88,0x50,0xfe,0x0,
-+0x10,0x10,0x15,0xfe,0x20,0x28,0x48,0x7e,0x9,0x8,0xe,0xf8,0x48,0x8,0x9,0x8,0x0,0x4,0xfe,0x24,0x24,0xa4,0xa4,0xa4,0x24,0x24,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x20,0x21,0x29,0xfd,0x41,0x51,0x91,0xfd,0x11,0x11,0x1d,0xf2,0x52,0x14,0x18,0x10,0x4,0xfe,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x54,0x48,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x14,0xfe,0x23,0x28,0x48,0x7e,0x9,0x9,0xf,0xf9,0x49,0x9,0x9,0x9,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x15,0xfe,0x20,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x48,0x8,0x8,0x8,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x14,0xfe,0x20,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x49,0xa,0xa,0xc,0x20,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x10,0x14,0xfe,0x20,0x28,0x48,0x7e,0x8,0x8,0xe,0xf8,0x48,0x8,0x9,0xa,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x48,0x48,0x84,0x6,0x2,
-+0x10,0x10,0x14,0xfe,0x20,0x29,0x48,0x7e,0x9,0x8,0xe,0xf8,0x48,0x8,0x8,0xb,0x20,0xa0,0xa0,0xa8,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,
-+0x20,0x20,0x28,0xfc,0x41,0x52,0x94,0xfc,0x11,0x10,0x18,0xf1,0x50,0x10,0x11,0x16,0x40,0x40,0xa0,0xa0,0x18,0x26,0x40,0x80,0x10,0x20,0x40,0x88,0x10,0x60,0x80,0x0,
-+0x10,0x10,0x15,0xfe,0x20,0x29,0x48,0x7e,0x8,0x9,0xe,0xf8,0x48,0x8,0x8,0x8,0x8,0x1c,0xe0,0x20,0x24,0x24,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x15,0xff,0x21,0x29,0x49,0x7f,0x9,0x8,0xe,0xf8,0x49,0xa,0x8,0x8,0x8,0x1c,0xe0,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0xa8,0xa4,0x26,0x22,0xa0,0x40,
-+0x10,0x11,0x14,0xfe,0x20,0x28,0x48,0x7e,0x9,0x8,0xe,0xf8,0x48,0x8,0x8,0x8,0x4,0xfe,0x44,0x44,0x44,0x44,0x94,0x88,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x10,0x10,0x14,0xfe,0x21,0x28,0x48,0x7d,0x8,0x8,0xe,0xf8,0x4b,0x8,0x8,0x8,0x10,0x18,0x14,0x14,0xfe,0x10,0x10,0xf0,0x90,0x90,0x90,0xf0,0x88,0xa,0x6,0x2,
-+0x10,0x13,0x14,0xfe,0x20,0x29,0x49,0x7e,0x8,0x8,0xf,0xf8,0x48,0x8,0xb,0x8,0x4,0xfe,0x40,0x40,0x88,0x4,0xfe,0x22,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x14,0xfe,0x20,0x29,0x4a,0x7e,0x8,0x8,0xe,0xf8,0x48,0x8,0xb,0x8,0x20,0x20,0x50,0x50,0x88,0x4,0xfa,0x20,0x20,0x20,0xf8,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x14,0xff,0x21,0x2a,0x48,0x7e,0x8,0x9,0xf,0xf9,0x49,0x9,0x9,0x9,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x88,0x6,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x15,0xff,0x21,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x4b,0x9,0x8,0x8,0x4,0xfe,0x20,0x28,0xe8,0x28,0x28,0x28,0xe8,0x28,0x28,0x3a,0xea,0x2e,0x20,0x20,
-+0x8,0x8,0x7e,0x8,0x7e,0x14,0x22,0x42,0x3f,0x5,0x9,0x1f,0x1,0xff,0x1,0x1,0x20,0x20,0xfc,0x20,0xfc,0x50,0x88,0x6,0xf8,0x0,0x20,0xf0,0x4,0xfe,0x0,0x0,
-+0x20,0x20,0x2b,0xfe,0x42,0x52,0x93,0xfe,0x12,0x13,0x1e,0xf2,0x52,0x12,0x12,0x12,0x0,0x4,0xfe,0x4,0x94,0x94,0xfc,0x44,0x24,0xfc,0x84,0x84,0xf4,0x4,0x14,0x8,
-+0x20,0x2f,0x24,0xfd,0x42,0x55,0x90,0xf8,0x17,0x10,0x18,0xf5,0x52,0x15,0x18,0x10,0x0,0xfc,0xa4,0x28,0x10,0x28,0xc4,0x0,0xbc,0x84,0xc4,0x28,0x10,0x28,0xce,0x84,
-+0x20,0x21,0x29,0xfe,0x42,0x51,0x91,0xfc,0x11,0x11,0x1d,0xf1,0x51,0x11,0x11,0x11,0x0,0x24,0x24,0x48,0x48,0x24,0x24,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x13,0xfe,0x21,0x28,0x4b,0x7e,0x8,0x9,0xe,0xf9,0x48,0x8,0x8,0xb,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x50,0x88,0xfc,0x22,0xfc,0x20,0x58,0x86,0x2,
-+0x20,0x20,0x2b,0xfe,0x42,0x53,0x92,0xfe,0x13,0x12,0x1e,0xf2,0x52,0x12,0x14,0x10,0x40,0x24,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x92,0x94,0xf8,0x90,0xb2,0xd2,0x8e,
-+0x20,0x22,0x29,0xff,0x41,0x52,0x94,0xfa,0x13,0x12,0x1a,0xf5,0x51,0x11,0x12,0x14,0x40,0x48,0x50,0xfe,0x50,0x4c,0x44,0x8,0xbe,0x88,0xa8,0xa8,0x3e,0x8,0x8,0x8,
-+0x1,0x7f,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x1,0xff,0x1,0x1f,0x10,0x10,0x1f,0x10,0x0,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x4,0x4,0x4,0x4,0x7f,0x4,0x2,0x2,0xff,0x1,0x1,0x0,0x1,0x6,0x38,0x0,0x0,0x80,0x48,0xfc,0x0,0x0,0x4,0xfe,0x0,0x10,0x20,0xc0,0x80,0x44,0x24,0x1c,
-+0x8,0x8,0x14,0x13,0x21,0x40,0xbf,0x22,0x22,0x2a,0x24,0x20,0x22,0x22,0x1e,0x0,0x40,0x50,0x48,0x48,0x40,0x7e,0xc0,0x24,0x24,0x28,0x28,0x10,0x12,0x2a,0x4a,0x84,
-+0x0,0x7f,0x1,0xf,0x8,0xf,0x8,0xf,0x8,0xf,0x1,0xff,0x1,0x0,0x7,0x38,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x44,0xfe,0x20,0xc4,0x44,0x3c,
-+0x8,0x9,0xff,0x8,0x9,0x7f,0x41,0x7f,0x41,0x7f,0x8,0x9,0xff,0x8,0x8,0x9,0x20,0x28,0xa4,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0xb2,0x4a,0x8a,0x4,
-+0x1,0x3f,0x21,0x3f,0x0,0xff,0x21,0x3f,0x21,0x3f,0x21,0x21,0xff,0x41,0x1,0x1,0x20,0xa8,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0xb2,0x4a,0x8a,0x4,
-+0x22,0x22,0xff,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x54,0x53,0x61,0x40,0x7f,0x1,0x20,0x28,0xa4,0x24,0x20,0xfe,0x20,0x20,0x24,0xa4,0x28,0x10,0x32,0x4a,0x8a,0x4,
-+0x1,0x7f,0x41,0x7f,0x41,0x7f,0x28,0x2a,0x3f,0x48,0xbe,0x8,0xf,0xf8,0x40,0x1,0x20,0xa8,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0x32,0x4a,0x8a,0x4,
-+0x1,0xff,0x21,0x22,0x3d,0x55,0x49,0x55,0x82,0x7f,0x55,0x55,0x55,0xff,0x0,0x1,0x20,0xa8,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0x32,0xca,0x8a,0x4,
-+0x2,0x7f,0x14,0x55,0x36,0x14,0xff,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x1,0x20,0x28,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0x32,0x4a,0x8a,0x4,
-+0x0,0x0,0x1f,0x50,0x57,0x55,0x75,0x17,0xf4,0x54,0x57,0x95,0x25,0x27,0x40,0x80,0x28,0x24,0xfe,0x20,0xa0,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x10,0x12,0xaa,0x4a,0x84,
-+0x0,0x3,0x7e,0x40,0x62,0x52,0x54,0x48,0x48,0x54,0x52,0x62,0x40,0x44,0x7e,0x0,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2,
-+0x8,0xb,0x14,0x14,0x22,0x51,0x88,0x0,0x7e,0x2,0x24,0x14,0x8,0x4,0x4,0x0,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2,
-+0x40,0x23,0xfe,0x0,0x44,0x28,0xfe,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x7c,0x44,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2,
-+0x8,0x7f,0x8,0x7f,0x22,0x3e,0x14,0x7f,0x0,0xff,0x8,0xf,0x9,0x8,0xe,0x10,0x4,0x8,0x74,0x8,0x74,0x8,0x10,0x60,0x4,0xfe,0x0,0xe0,0x20,0xa4,0x24,0x1c,
-+0x44,0x29,0xfe,0x92,0xd6,0xba,0x92,0xfe,0x4,0x7e,0x44,0x7c,0x44,0x44,0x7c,0x0,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2,
-+0x0,0x7f,0x42,0x7e,0x41,0x7e,0x62,0xbe,0x0,0xff,0x8,0xf,0x9,0x8,0xe,0x10,0x20,0xfc,0x88,0x50,0xfe,0x0,0xf8,0x20,0x24,0xfe,0x0,0xe0,0x20,0xa4,0x24,0x1c,
-+0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x8,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0xc0,0x0,0x8,0xfc,0x0,0x0,0xf0,0x10,0x20,0x20,0x40,0x80,0x0,0xc0,0x30,0xe,0x4,
-+0x2,0x2,0x7f,0x4,0x4,0x8,0x10,0x20,0xdf,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x20,0xf0,0x20,0x20,0x22,0x22,0x1e,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x2,0x2,0x7f,0x4,0x4,0x8,0x10,0x60,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x20,0xf0,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x4,0x7f,0x44,0x44,0x44,0x44,0x7c,0x47,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x1,0x1,0xff,0x1,0x2,0x4,0x18,0x60,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0,0x80,0x60,0x1c,0x8,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x0,0x0,0xff,0x2,0x4,0x8,0x1f,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0,0x40,0x20,0xf0,0x10,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x1,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x20,0x21,0x21,0x42,0x44,0x88,0x10,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,
-+0x0,0x4,0x7f,0x45,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x7d,0x41,0x2,0x4,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x0,0x4,0x7e,0x44,0x45,0x46,0x44,0x7c,0x44,0x44,0x45,0x44,0x7c,0x44,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x84,0x44,0x44,0x14,0x64,0x84,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0x1,0x9,0xa,0x12,0x24,0x4,0x8,0x10,0x60,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x8,0x18,0xa0,0xc0,0x40,0x20,0x10,0xe,0x4,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x8,0x1f,0x21,0x61,0xa2,0x24,0x20,0x3f,0x0,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x4,0x4,0xc4,0x44,0x4,0xc4,0x28,0x10,
-+0x10,0x1e,0x22,0x34,0x48,0x16,0x21,0x40,0x9f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0x40,0x60,0x58,0x40,0x46,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x4,0x78,0x42,0x42,0x4e,0x72,0x2,0x4,0x18,0x60,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x84,0x84,0x84,0xa4,0x98,0x80,0x80,0x80,
-+0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x2,0x1,0x7f,0x8,0x4,0x4,0xff,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x8,0xfc,0x20,0x20,0x44,0xfe,0x0,
-+0x10,0xc,0x0,0x3c,0x4,0x5,0x7e,0x16,0x15,0x15,0x24,0x24,0x44,0x84,0x14,0x8,0x0,0x4,0x7e,0x44,0xc4,0x44,0x7c,0x44,0x44,0x44,0xfc,0x84,0x40,0x30,0xe,0x4,
-+0x0,0x5,0x7f,0x45,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x7e,0x42,0x4,0x8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x40,0x44,0x4c,0x50,0x60,0x40,0x42,0x42,0x3e,0x0,
-+0x2,0x3f,0x2,0xff,0x1,0xa,0xf,0x38,0xc7,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0xe0,0x44,0xfe,0x0,0x70,0x84,0x4,0xfc,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x0,0x3f,0x20,0x3e,0x22,0x22,0x2a,0x44,0x41,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x90,0xfc,0x80,0x88,0x50,0x60,0x40,0xa2,0x12,0xe,
-+0x0,0x8,0x7d,0x49,0x4b,0x4d,0x49,0x79,0x49,0x48,0x4f,0x48,0x78,0x48,0x0,0x0,0xa0,0xa4,0x2c,0x30,0x20,0x62,0xa2,0x1e,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x0,0x3f,0x20,0x3f,0x20,0x3f,0x2,0x22,0x12,0x16,0xa,0x72,0x2,0x4,0x18,0x60,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x90,0xa0,0xc0,0xa0,0x98,0x8a,0x82,0x7e,0x0,
-+0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0x3f,0x22,0x42,0xff,0x4,0xc,0x3,0x4,0x18,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xfc,0x4,0x8,0xfe,0x20,0x40,0x80,0x60,0x10,
-+0x0,0x3,0x7a,0x4a,0x48,0x4b,0x48,0x79,0x4b,0x48,0x48,0x4b,0x78,0x48,0x0,0x0,0x0,0xfe,0x2,0x44,0x40,0xfc,0x80,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x78,0x4f,0x48,0x4b,0x4a,0x7a,0x4b,0x4a,0x4a,0x4b,0x7a,0x4a,0x2,0x2,0x50,0x48,0x40,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x48,0x48,0x68,0x50,
-+0x0,0x8,0x7c,0x48,0x49,0x4a,0x4c,0x7b,0x48,0x48,0x4b,0x4a,0x7a,0x4a,0x3,0x2,0x40,0x40,0xa0,0xa0,0x90,0x4e,0x4,0xf0,0x20,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8,
-+0x1f,0x10,0x1f,0x10,0x1f,0x8,0x1f,0x22,0xd4,0x8,0x37,0xc0,0x1f,0x10,0x10,0x1f,0xf0,0x10,0xf0,0x10,0xf0,0x40,0x60,0x58,0x40,0x46,0xfc,0x8,0xfc,0x8,0x8,0xf8,
-+0x0,0x8,0x7f,0x4c,0x4b,0x48,0x4b,0x7a,0x4a,0x4b,0x4a,0x4a,0x7b,0x40,0xf,0x0,0x80,0x40,0xfe,0x2,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x0,
-+0x0,0xb,0x7c,0x4a,0x49,0x49,0x4a,0x7d,0x48,0x48,0x4f,0x48,0x78,0x49,0x2,0x4,0x20,0xa8,0xb4,0xa8,0x10,0x10,0xe,0xf4,0x40,0x44,0xfe,0x40,0xa0,0x10,0xc,0x4,
-+0x0,0xb,0x7d,0x48,0x4f,0x4c,0x48,0x7b,0x48,0x48,0x49,0x49,0x7a,0x4c,0x1,0x6,0x1c,0xe0,0x24,0xa8,0xfe,0x42,0x44,0xfe,0x80,0xf8,0x8,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x3,0x7a,0x4c,0x4b,0x4a,0x4b,0x7a,0x4b,0x48,0x48,0x4f,0x78,0x49,0x2,0x4,0x0,0xfc,0x4,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x80,0x44,0xfe,0x0,0x10,0xc,0x4,
-+0x2,0x11,0x7f,0x50,0x57,0x54,0x54,0x77,0x50,0x5f,0x50,0x51,0x7f,0x51,0x5,0x2,0x10,0x10,0xd4,0x1e,0xa4,0xc4,0xa4,0xa4,0x24,0xa8,0x90,0x50,0xa8,0x28,0x44,0x82,
-+0x0,0x7,0x70,0x5f,0x50,0x57,0x55,0x75,0x57,0x50,0x57,0x50,0x7f,0x55,0x4,0x8,0x1c,0xe0,0x44,0xfe,0x40,0xfc,0x54,0x54,0xfc,0x40,0xfc,0x40,0xfe,0x24,0x92,0x92,
-+0x0,0x7,0x78,0x4a,0x49,0x4a,0x48,0x79,0x49,0x4b,0x4d,0x49,0x79,0x49,0x1,0x1,0x84,0xbe,0x84,0x94,0x8c,0x94,0xa4,0x10,0xfe,0x10,0xfc,0x10,0xfc,0x10,0xfe,0x0,
-+0x1,0x7,0x78,0x4b,0x48,0x4f,0x48,0x7b,0x49,0x4f,0x4d,0x4f,0x7a,0x4b,0x0,0x1,0x10,0xfc,0x40,0xf8,0x40,0xfc,0x10,0xd8,0x14,0xfe,0x10,0x94,0x8,0x9a,0xaa,0x84,
-+0x3f,0x20,0x3f,0x20,0x3f,0x1,0xff,0x4,0x3f,0x4,0x3f,0x4,0x7f,0xd,0x74,0x6,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x10,0xe0,0x1e,
-+0x1,0x1,0x3f,0x1,0x8,0xff,0x8,0x8,0x1f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x0,0x10,0xf8,0x0,0x24,0xfe,0x20,0x20,0xf0,0x10,0x10,0x10,0x10,0xc0,0x20,0x18,
-+0x12,0x12,0xff,0x12,0x13,0x10,0x1f,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x20,0x24,0xfe,0x20,0xe0,0x0,0xf8,0x0,0xf0,0x10,0x10,0x10,0x10,0xc0,0x20,0x18,
-+0x0,0x7d,0x45,0x55,0x55,0x55,0x55,0x55,0x54,0x54,0x54,0x10,0x28,0x25,0x42,0x84,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x90,0x90,0x90,0x90,0x92,0x12,0x12,0x1e,
-+0x4,0x7e,0x44,0x54,0x55,0x57,0x54,0x54,0x55,0x55,0x55,0x11,0x29,0x25,0x45,0x81,0x20,0x20,0x40,0x88,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0xfd,0x10,0x1d,0xf0,0x11,0x62,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x40,0x48,0xfc,0x48,0xc8,0xa8,0xa,0x6,0xf0,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x8,0x8,0x2e,0x28,0x28,0x2e,0xf0,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x80,0x84,0x98,0xe0,0x82,0x82,0x7e,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8,
-+0x4,0x7e,0x44,0x57,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x11,0x28,0x24,0x44,0x81,0x40,0x20,0x4,0xfe,0x40,0x44,0x88,0xf4,0x24,0x48,0x88,0x10,0x28,0x44,0x82,0x2,
-+0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x55,0x55,0x56,0x54,0x10,0x28,0x24,0x44,0x80,0x4,0xfe,0x84,0x84,0xfc,0xa0,0x90,0x8,0x4e,0x24,0x20,0x0,0xc0,0x30,0x18,0x8,
-+0x0,0x7d,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x11,0x2a,0x24,0x48,0x80,0x4,0xfe,0x0,0x0,0x7c,0x0,0x0,0xfe,0x52,0x54,0x48,0x48,0x44,0x54,0x62,0x40,
-+0x1,0x1,0x7f,0x9,0x5,0xff,0x5,0x9,0x3f,0xd0,0x11,0x11,0x11,0x12,0x4,0x38,0x0,0x8,0xfc,0x20,0x44,0xfe,0x40,0x20,0xf8,0x16,0x10,0x10,0x10,0xc0,0x20,0x18,
-+0x4,0x7e,0x44,0x57,0x54,0x55,0x54,0x54,0x54,0x54,0x54,0x13,0x28,0x24,0x44,0x80,0x20,0x28,0x24,0xfe,0x20,0x24,0xa8,0xb0,0x30,0x68,0xa8,0x24,0x22,0x20,0xa0,0x40,
-+0x1,0x1,0x7f,0x9,0x9,0x15,0x7f,0x40,0x9f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x0,0x8,0xfc,0x20,0x20,0x50,0xfe,0x2,0xf4,0x10,0x10,0x10,0x10,0xc0,0x20,0x18,
-+0x4,0x7e,0x44,0x54,0x55,0x54,0x54,0x55,0x54,0x54,0x54,0x11,0x28,0x24,0x44,0x83,0x20,0x24,0xac,0xb0,0x20,0x50,0x4c,0xa4,0x20,0xa4,0xa8,0x30,0x50,0x48,0x8e,0x4,
-+0x0,0x7c,0x47,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x13,0x29,0x24,0x44,0x80,0x30,0x28,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x8,0xfe,0x8,0x88,0xa8,0x10,
-+0x10,0x11,0x15,0x1f,0x11,0x11,0x15,0x7f,0x45,0x45,0x45,0x44,0x7c,0x44,0x1,0x6,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x50,0x50,0x92,0x12,0xe,
-+0x8,0x49,0x49,0x49,0x7f,0x0,0x7f,0x1,0x1,0x3f,0x21,0x20,0x23,0x2c,0x30,0x3,0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6,
-+0x0,0x1,0xff,0x8,0x8,0x2a,0x2a,0x2a,0x5d,0x88,0x8,0xf,0xf8,0x40,0x0,0x3,0x4,0x7e,0xc4,0x54,0x54,0x54,0x54,0x54,0x54,0xd4,0x18,0xa8,0x28,0x4a,0x8a,0x6,
-+0x8,0xa,0x7f,0x8,0x8,0xff,0x25,0x14,0x64,0x14,0xff,0x4,0x8,0xc,0x12,0x61,0x4,0x7e,0x44,0x54,0x54,0xd4,0x54,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6,
-+0x8,0x8,0x14,0x14,0x22,0x7f,0x80,0x71,0x55,0x75,0x55,0x75,0x51,0x55,0x52,0x3,0x4,0x7e,0x44,0x54,0x54,0x54,0xd4,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6,
-+0x14,0x14,0x7f,0x14,0x7f,0x14,0xff,0x8,0x7f,0x49,0x7f,0x49,0xff,0x41,0x45,0x43,0x4,0x7e,0x44,0x54,0x54,0x54,0xd4,0x54,0x54,0x54,0x18,0x28,0xa8,0x4a,0x8a,0x6,
-+0x22,0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0x7f,0x8,0x7f,0x8,0xff,0x1,0x4,0x7e,0xc4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6,
-+0xa,0xf,0x8,0x7f,0x49,0x4e,0x79,0x4f,0x40,0x4a,0x6a,0x5b,0x4a,0x4a,0xbf,0x1,0x4,0x7e,0x44,0xd4,0x54,0x54,0x54,0x54,0x54,0x54,0x98,0x28,0x28,0x4a,0x8a,0x6,
-+0x8,0x8,0x8,0x17,0x30,0x50,0x91,0x19,0x9,0xf,0x11,0x21,0xff,0x1,0x1,0x1,0xa0,0x94,0x9e,0xe0,0x80,0x44,0x34,0xc,0x20,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0,
-+0x7d,0x5,0x7d,0x44,0x41,0x7d,0x5,0x28,0x13,0x11,0x1f,0x21,0xff,0x1,0x1,0x1,0xfc,0x4,0xfc,0x20,0xfc,0x24,0xfc,0x28,0xfc,0x2,0xf8,0x0,0xfe,0x0,0x0,0x0,
-+0x8,0x8,0x28,0x28,0x3e,0x48,0x48,0x88,0xe,0x18,0x68,0x8,0x8,0x8,0x8,0x8,0x80,0x80,0x80,0x84,0x8c,0x90,0xa0,0xc0,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x8,0x8,0x2b,0x28,0x3e,0x48,0x49,0x88,0xe,0x18,0x6b,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0xe0,0x40,0x40,0x5c,0xe0,0x40,0x44,0x7e,0xc0,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x8,0x28,0x28,0x3e,0x4b,0x48,0x88,0xe,0x19,0x69,0x9,0x9,0x9,0x9,0x9,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0xb,0x28,0x28,0x3f,0x48,0x48,0x88,0xf,0x18,0x69,0x9,0x9,0x9,0x9,0x9,0x8,0xfc,0x40,0x48,0xfc,0x88,0x88,0x88,0xfe,0x0,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x28,0x28,0x3e,0x49,0x48,0x8b,0xe,0x18,0x69,0x9,0x9,0x9,0x9,0x9,0x20,0x20,0xa0,0xa8,0xfc,0x20,0x24,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0x2b,0x28,0x3e,0x49,0x4f,0x88,0xd,0x19,0x69,0x9,0x9,0x8,0x8,0x8,0x40,0x48,0xfc,0xa0,0x98,0x8,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10,
-+0x8,0x9,0x29,0x29,0x3f,0x49,0x4b,0x8d,0x9,0x19,0x6f,0x8,0x9,0x9,0xa,0xc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x10,0x8,0x4,0x4,
-+0x10,0x10,0x57,0x51,0x7d,0x92,0x14,0x17,0x19,0x35,0xd5,0x12,0x13,0x12,0x14,0x18,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x96,0x7c,0x0,
-+0x10,0x10,0x53,0x52,0x7e,0x93,0x12,0x12,0x1f,0x33,0xd3,0x15,0x15,0x19,0x11,0x11,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc,
-+0x10,0x10,0x5f,0x50,0x7b,0x92,0x13,0x10,0x1f,0x34,0xd5,0x15,0x15,0x15,0x14,0x14,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x14,0x8,
-+0x8,0x7f,0x8,0x3e,0x8,0x7e,0x9,0x0,0x7f,0x1,0x3f,0x1,0xff,0x1,0x5,0x2,0x4,0xfe,0x44,0x44,0x44,0x94,0x8,0xf0,0x0,0x10,0xf8,0x0,0xfe,0x0,0x0,0x0,
-+0x10,0x9,0x41,0x26,0x8,0x70,0x23,0xc,0x7f,0x1,0x3f,0x1,0xff,0x1,0x5,0x2,0x40,0x50,0x4c,0x54,0x60,0xc0,0x0,0xf0,0x0,0x10,0xf8,0x0,0xfe,0x0,0x0,0x0,
-+0x0,0xc,0xf2,0x12,0x14,0x78,0x17,0x12,0x1e,0xf2,0x12,0x14,0x24,0x29,0x40,0x0,0x0,0x86,0xb8,0x88,0x48,0x3e,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x28,0x10,
-+0x0,0xd,0xf1,0x12,0x14,0x78,0x17,0x10,0x17,0xfc,0x14,0x14,0x24,0x27,0x20,0x40,0x0,0x6,0x38,0x88,0x48,0x3e,0xc8,0x8,0xc8,0x7e,0x48,0x48,0x48,0xc8,0x28,0x10,
-+0x0,0x3e,0x23,0x3e,0x21,0x3e,0x62,0xbe,0x0,0x3f,0x1,0x1f,0x1,0xff,0x1,0x3,0x40,0x28,0xfc,0x50,0xfe,0x20,0xf8,0x20,0x20,0xf8,0x0,0xf0,0x4,0xfe,0x0,0x0,
-+0x2,0x3f,0x2,0xff,0x2,0xf,0x34,0xc7,0x0,0x3f,0x2,0x1f,0x2,0xff,0x2,0x1,0x20,0xc0,0x84,0xfe,0x0,0xe0,0x8,0xf8,0x30,0xc0,0x0,0xf0,0x0,0xfa,0x2,0xfe,
-+0x4,0x1e,0xf0,0x10,0x11,0x10,0x7d,0x11,0x11,0x1e,0xf3,0x10,0x10,0x10,0xf,0x0,0x40,0x40,0x88,0x84,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x22,0x22,0xfe,0x0,
-+0x3f,0x1,0x1f,0x1,0x7f,0x1,0x0,0x4,0x79,0x10,0x7c,0x10,0xff,0x10,0x14,0x18,0xf8,0x0,0xf0,0x0,0xf8,0x2,0xfe,0x0,0xf8,0x40,0xf8,0x40,0xfc,0x40,0x42,0x3e,
-+0x0,0x18,0xe0,0x2e,0x23,0x24,0xf4,0x2e,0x22,0x22,0xfb,0x24,0x2a,0x31,0x20,0x1f,0x20,0x28,0xfc,0x28,0xfe,0x28,0xf8,0x20,0xf8,0x20,0xfc,0x20,0x22,0xfe,0x2,0xfe,
-+0x10,0x10,0x25,0x7e,0x10,0xff,0x28,0x4c,0x92,0x24,0x49,0x12,0x64,0x8,0x30,0xc0,0x8,0x3c,0xe0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x22,0x22,0x1e,
-+0x8,0x8,0x15,0x22,0x7f,0x80,0x71,0x55,0x55,0x75,0x55,0x55,0x75,0x51,0x55,0x52,0x8,0x3c,0xe0,0x20,0x20,0xa8,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x22,0x22,0x1e,
-+0x8,0x49,0x2a,0x7f,0x41,0x5d,0x55,0x5d,0x41,0x3f,0x2,0x1f,0x2,0xff,0x2,0x1,0x20,0x20,0x24,0x7e,0xa8,0x10,0x28,0xc6,0x30,0xc0,0x0,0xf0,0x0,0xfa,0x2,0xfe,
-+0x1,0x39,0xe2,0x27,0x2a,0x23,0xf2,0x2f,0x20,0x23,0xfa,0x23,0x22,0x23,0x20,0x1f,0x0,0xf0,0x20,0xf8,0x48,0xf8,0x48,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xfa,0x2,0xfe,
-+0x2,0x39,0xe7,0x21,0x25,0x23,0xf1,0x2f,0x20,0x23,0xfa,0x23,0x22,0x23,0x20,0x1f,0x10,0x20,0xfc,0x20,0x28,0x30,0x24,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf2,0x2,0xfe,
-+0x77,0x55,0x77,0x55,0x77,0x55,0x77,0x24,0x3f,0x64,0x7f,0xa4,0x3f,0x24,0x3f,0x20,0x8,0x3c,0xe0,0x20,0x20,0x28,0xfc,0x20,0xa0,0x24,0xfe,0x20,0x20,0x22,0xa2,0x1e,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xa,0xa,0x4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x88,0x88,0x88,0x88,0x88,0x88,0x8a,0x8a,0x84,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x2,0x2,0x22,0x22,0x22,0x22,0x22,0x3f,0x0,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x8,0x28,0x28,0x28,0x28,0x28,0xea,0x2a,0x4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x12,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x40,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x4a,0x44,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x4,0xf,0x10,0x6d,0x2,0xd,0x76,0x1,0xc,0x3,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xc8,0x88,0x8,0x8,0x88,0x78,0xa,0xa,0x4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x7f,0x9,0x49,0x29,0x29,0x9,0x9,0xff,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x8,0x28,0x48,0x88,0x8,0xa,0xfa,0x4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x3f,0x22,0x22,0x2f,0x22,0x25,0x28,0x3f,0x20,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x28,0x28,0xa8,0x28,0x28,0xaa,0xea,0x24,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x4,0x7f,0x4,0x3f,0x20,0x3f,0xa,0xa,0x12,0x61,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x8,0x88,0x88,0x88,0x8,0x2a,0x2a,0xe4,
-+0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x3f,0x26,0x3f,0x0,0x7f,0x49,0x49,0xff,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xc8,0x48,0xc8,0x8,0xe8,0x28,0x2a,0xfa,0x4,
-+0x10,0x10,0x11,0x1f,0x22,0x42,0x12,0x12,0x12,0x14,0x14,0x8,0x14,0x22,0x43,0x81,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,
-+0x8,0x8,0xa,0xff,0x8,0x7f,0x49,0x49,0x7f,0x49,0x1c,0x2b,0x49,0x88,0x9,0xa,0x40,0x40,0x44,0x7e,0x48,0x88,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x10,0x7e,0x42,0x7e,0x42,0x7f,0x10,0xa,0xff,0x10,0x1e,0x22,0x22,0x4b,0x86,0x40,0x40,0x44,0x7e,0x88,0x88,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0x48,0x4b,0x48,0x4b,0x7c,0x41,0x40,0x7a,0x49,0x48,0x4f,0x48,0x48,0x88,0x3,0x40,0x48,0xfc,0x40,0xfe,0x2,0x24,0xa0,0x20,0x20,0x24,0xfe,0x40,0x50,0x8c,0x4,
-+0x9,0x49,0x4f,0x49,0x49,0x7d,0x41,0x41,0x78,0x48,0x4b,0x48,0x48,0x49,0x8a,0x8,0x48,0x48,0xfe,0x48,0x48,0x78,0x0,0xfc,0x20,0x24,0xfe,0x70,0xa8,0x2e,0x24,0x20,
-+0x10,0x50,0x57,0x54,0x57,0x7c,0x47,0x44,0x75,0x55,0x55,0x55,0x55,0x55,0x99,0x11,0x40,0x24,0xfe,0x4,0xfc,0x28,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x24,0x2c,
-+0x0,0x0,0x3f,0x11,0x9,0x9,0x7f,0x2,0xff,0x4,0x7,0xa,0x11,0x20,0x43,0x1c,0x10,0x78,0x80,0x10,0x10,0x20,0xfc,0x0,0xfe,0x0,0xf0,0x20,0x40,0x80,0x60,0x1e,
-+0x4,0xe,0xf0,0x3,0x93,0x55,0x1,0x9,0xff,0x9,0x49,0x29,0x9,0xa,0x2c,0x11,0x24,0x3e,0x20,0xfe,0x22,0xf8,0x24,0x3c,0x0,0x78,0x48,0x48,0x48,0x4a,0x8a,0x6,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x42,0x42,0x8a,0x4,0x8,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x8,0x28,0x10,
-+0x4,0x3e,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x42,0x42,0x8a,0x4,0x8,0x18,0x20,0x40,0x84,0xc,0x10,0x20,0x40,0x80,0x4,0xc,0x10,0x20,0x40,0x80,
-+0x2,0x1,0xff,0x10,0x10,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x0,0x10,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x4,0x3e,0x24,0x24,0x25,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x44,0x45,0x95,0xa,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x8,0x8,0x8,
-+0x4,0x3f,0x24,0x24,0x24,0x3c,0x27,0x24,0x24,0x3c,0x24,0x24,0x44,0x45,0x96,0x8,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x4,0x3e,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x95,0xa,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x50,0x50,0x88,0xc8,0xa8,0x6,0x4,
-+0x4,0x3e,0x24,0x24,0x27,0x3c,0x24,0x24,0x24,0x3d,0x25,0x26,0x44,0x44,0x95,0x8,0x40,0x40,0x40,0x44,0xfe,0x80,0x80,0xa0,0xa0,0x20,0x40,0x50,0x48,0x84,0xfc,0x4,
-+0x4,0x3e,0x24,0x27,0x24,0x3d,0x25,0x25,0x25,0x3d,0x24,0x24,0x44,0x44,0x94,0x8,0x20,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x22,0x22,0x1e,0x0,
-+0x4,0x3e,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x14,0x8,
-+0x10,0xc,0x3,0xc,0x12,0xff,0x4,0x8,0x1f,0x28,0xcf,0x8,0xf,0x8,0x8,0x8,0x10,0x70,0x80,0x60,0x14,0xfe,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x95,0xa,0x80,0x80,0x80,0xfe,0x82,0x24,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x4,0x3e,0x24,0x24,0x27,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x45,0x45,0x96,0x8,0x80,0xa0,0x90,0x94,0xfe,0xa0,0xa4,0xa4,0xa8,0xa8,0xb0,0xa0,0x62,0x22,0x1e,0x0,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x25,0x27,0x3c,0x24,0x24,0x45,0x46,0x94,0x8,0x40,0x40,0x44,0xfe,0x80,0xa0,0x20,0x24,0xfe,0x20,0xa8,0xa4,0x26,0x22,0xa0,0x40,
-+0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x40,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,
-+0x4,0x3e,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0xa,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x24,0x44,0x44,0x94,0x8,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x3c,0x24,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x44,0x94,0x8,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,
-+0x1,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x4,0x3e,0x24,0x24,0x25,0x3d,0x26,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x80,0x80,0x84,0xfe,0x40,0x40,0x48,0x7c,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40,
-+0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x96,0x8,0x8,0x1c,0xe0,0x10,0x50,0x50,0x50,0x50,0x48,0x48,0x48,0x44,0x54,0x54,0x72,0x0,
-+0x4,0x3e,0x24,0x24,0x25,0x3e,0x24,0x24,0x25,0x3c,0x24,0x25,0x44,0x44,0x94,0xb,0x40,0x40,0xa0,0xa0,0x18,0x36,0x40,0x88,0x10,0x20,0x44,0x88,0x10,0x20,0xc0,0x0,
-+0x4,0x3e,0x24,0x24,0x25,0x3e,0x24,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x80,0x80,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x84,0x4,0x14,0x8,
-+0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x10,0x10,0x10,0x2a,0x4a,0xa6,0x12,
-+0x4,0x3f,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3d,0x24,0x24,0x44,0x44,0x97,0x8,0x0,0xfc,0x8,0x10,0x20,0x58,0x86,0x2,0x0,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x3e,0x25,0x24,0x24,0x3c,0x27,0x24,0x24,0x3c,0x24,0x24,0x44,0x45,0x96,0x8,0x20,0x20,0x24,0xac,0xb0,0x24,0xfe,0x50,0x50,0x50,0x50,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x4,0xfe,0x4,0x14,0xfc,0x4,0x4,0x74,0x54,0x54,0x54,0x74,0x4,0x4,0x14,0x8,
-+0x0,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x4,0xfe,0x4,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0xfc,0x4,
-+0x4,0x3e,0x24,0x24,0x25,0x3e,0x24,0x24,0x24,0x3f,0x24,0x24,0x44,0x44,0x95,0x8,0x20,0x20,0x50,0x88,0x6,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x48,0x84,0xfc,0x4,
-+0x0,0x3d,0x24,0x24,0x24,0x3c,0x25,0x24,0x27,0x3c,0x24,0x25,0x46,0x44,0x94,0x8,0x0,0x8,0x90,0x60,0x50,0x8c,0x24,0x20,0xfe,0x20,0xa8,0x26,0x22,0x20,0xa0,0x40,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x24,0x25,0x24,0x3c,0x24,0x25,0x44,0x44,0x94,0x9,0x40,0x20,0x4,0xfe,0x40,0x48,0x88,0xf4,0x24,0x48,0x88,0x10,0x28,0x44,0x82,0x2,
-+0x5,0x3e,0x24,0x27,0x24,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x45,0x45,0x96,0x8,0x8,0x90,0x0,0xfc,0x90,0x90,0x90,0x94,0xfe,0x90,0x90,0x90,0x10,0x10,0x10,0x10,
-+0x4,0x3e,0x24,0x24,0x25,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x44,0x44,0x95,0xa,0x0,0x88,0x50,0x0,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x88,0x4,0x2,
-+0x4,0x3e,0x25,0x24,0x24,0x3c,0x27,0x24,0x24,0x3c,0x24,0x24,0x45,0x46,0x94,0x8,0x20,0x20,0x24,0xa4,0xa8,0x20,0xfe,0x20,0x60,0x70,0xa8,0xa8,0x26,0x24,0x20,0x20,
-+0x0,0x3c,0x27,0x24,0x24,0x3d,0x26,0x24,0x25,0x3e,0x24,0x25,0x46,0x44,0x94,0x8,0x0,0x4,0xfe,0x40,0x84,0x4c,0x70,0xa0,0x30,0x70,0xa8,0x28,0x26,0x24,0xa0,0x40,
-+0x0,0x3d,0x25,0x25,0x25,0x3d,0x24,0x24,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x4,0xfe,0x4,0x4,0x4,0xfc,0x20,0x24,0xfe,0x24,0x24,0x54,0x8c,0x4,0x14,0x8,
-+0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x24,0x24,0x3d,0x24,0x24,0x44,0x44,0x97,0x8,0x20,0x20,0xa8,0xa8,0xa8,0x74,0x22,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x3e,0x25,0x25,0x24,0x3c,0x25,0x24,0x24,0x3c,0x27,0x24,0x44,0x44,0x94,0x8,0x8,0x1c,0xe0,0x4,0xa4,0xa8,0xfc,0x10,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x4,0x3e,0x25,0x25,0x26,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x44,0x45,0x96,0x8,0x40,0x20,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x90,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x7b,0x4a,0x4a,0x4b,0x7a,0x4a,0x4b,0x4a,0x7a,0x4a,0x4a,0x4b,0x4a,0xac,0x10,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xa8,0xb0,0xa8,0xa8,0xa4,0x24,0x22,0xa0,0x40,
-+0x4,0x3e,0x27,0x24,0x25,0x3c,0x27,0x24,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x8,0x7c,0x48,0x4f,0x48,0x79,0x4a,0x4f,0x4a,0x7b,0x4a,0x4b,0x4a,0x48,0xa8,0x10,0x40,0x40,0x44,0xfe,0xa0,0x10,0x48,0xfe,0x48,0xf8,0x48,0xf8,0x48,0x40,0x44,0x3c,
-+0x4,0x3e,0x24,0x27,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x27,0x44,0x44,0x94,0x8,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0x50,
-+0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x24,0x24,0x44,0x45,0x96,0x8,0x20,0xa4,0x2e,0x24,0x24,0xac,0x24,0x24,0xfc,0x24,0x50,0x50,0x88,0x6,0x4,0x0,
-+0x0,0x7a,0x4b,0x4a,0x4c,0x79,0x48,0x48,0x4b,0x78,0x49,0x49,0x49,0x4a,0xa8,0x10,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0x20,0x28,0x26,0x22,0xa0,0x40,
-+0x0,0x78,0x4b,0x4a,0x4c,0x78,0x4b,0x48,0x48,0x79,0x49,0x49,0x49,0x4a,0xac,0x10,0x40,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x28,0x3c,0x20,0x20,0xa6,0x7c,0x0,
-+0x0,0x78,0x4f,0x49,0x49,0x79,0x4a,0x4f,0x49,0x79,0x4d,0x4b,0x49,0x4a,0xac,0x10,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x96,0x7c,0x0,
-+0x8,0x7c,0x4b,0x48,0x4b,0x78,0x4f,0x48,0x49,0x7b,0x4c,0x4b,0x48,0x48,0xa8,0x13,0x40,0x48,0xfc,0x40,0xfc,0x40,0xfe,0xa0,0x10,0xf8,0x46,0xf8,0x40,0xa0,0x98,0x8,
-+0x0,0x3c,0x27,0x24,0x24,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x54,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x8,0x7c,0x4b,0x48,0x48,0x7b,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4a,0xab,0x12,0x0,0x4,0xfe,0x40,0x84,0xfe,0x94,0x94,0xf4,0x94,0x94,0xf4,0x94,0x94,0xfc,0x4,
-+0x8,0x7d,0x49,0x49,0x49,0x79,0x49,0x49,0x48,0x7b,0x4a,0x4a,0x4a,0x4a,0xaf,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x94,0x94,0x94,0x94,0xfe,0x0,
-+0x0,0x7b,0x4a,0x4a,0x4b,0x78,0x4b,0x48,0x4f,0x79,0x49,0x48,0x48,0x48,0xa8,0x10,0x8,0xbc,0xa8,0xa8,0xb8,0x0,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20,
-+0x8,0x7c,0x48,0x49,0x4b,0x7c,0x4b,0x4a,0x4a,0x7b,0x4a,0x4a,0x4b,0x4a,0xaa,0x12,0x40,0x40,0xa0,0x10,0xf8,0x6,0xc4,0x54,0x54,0xd4,0x54,0x54,0xd4,0x44,0x54,0xc8,
-+0x0,0x7a,0x49,0x48,0x4b,0x78,0x4f,0x48,0x49,0x7a,0x4c,0x4b,0x48,0x48,0xab,0x10,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0x4e,0x44,0xf8,0x40,0x48,0xfc,0x0,
-+0x0,0x7a,0x49,0x4b,0x48,0x7f,0x48,0x49,0x4a,0x7c,0x4f,0x48,0x49,0x48,0xa9,0x16,0x40,0x48,0x50,0xfc,0x40,0xfe,0xa0,0x10,0x4e,0x44,0xfe,0x90,0x10,0xe0,0x18,0x4,
-+0x0,0x7b,0x48,0x49,0x49,0x79,0x49,0x48,0x4b,0x7a,0x4a,0x4b,0x4a,0x4a,0xaa,0x12,0x4,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x0,0xfe,0x8a,0x52,0xfe,0x22,0x22,0x2a,0x4,
-+0x10,0x8,0xfe,0x11,0x1e,0x22,0x2a,0x44,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x40,0x44,0xfe,0x18,0xe4,0xa8,0x90,0xc8,0xf6,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x8,0x7c,0x4b,0x4a,0x4c,0x79,0x49,0x49,0x49,0x79,0x49,0x4f,0x48,0x48,0xa9,0x12,0x40,0x20,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x90,0xc,0x4,
-+0x0,0x7a,0x49,0x48,0x4f,0x78,0x4f,0x48,0x49,0x7a,0x4d,0x49,0x48,0x49,0xaa,0x10,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0x4e,0x54,0x50,0xe0,0x50,0x4c,0xc0,
-+0x0,0x78,0x4b,0x4a,0x4d,0x78,0x4b,0x48,0x48,0x79,0x48,0x49,0x48,0x48,0xab,0x10,0x40,0x20,0xfe,0x52,0x8c,0x0,0xfe,0x40,0x88,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x8,0x7d,0x48,0x48,0x4b,0x7a,0x4d,0x49,0x49,0x79,0x48,0x49,0x49,0x49,0xa9,0x11,0x20,0xfc,0x88,0x50,0xfe,0x22,0xfc,0x24,0x24,0x2c,0x20,0xfc,0x4,0x4,0xfc,0x4,
-+0x1,0x79,0x4f,0x49,0x4b,0x78,0x4b,0x4a,0x4a,0x7a,0x4b,0x48,0x4a,0x49,0xae,0x10,0x8,0x8,0xc8,0x3e,0x88,0x8,0xbe,0xa2,0xa2,0x94,0x94,0x8,0x88,0xd4,0x14,0x62,
-+0x8,0x7f,0x48,0x4b,0x4a,0x7c,0x48,0x4b,0x48,0x79,0x4a,0x49,0x4a,0x49,0xaa,0x10,0x88,0xfe,0x88,0xfe,0x2,0xf8,0x0,0xfe,0x80,0x44,0xa8,0x70,0xa8,0x26,0xa4,0x40,
-+0x9,0x7d,0x49,0x49,0x48,0x7b,0x4a,0x4a,0x4b,0x78,0x4f,0x48,0x48,0x49,0xaa,0x10,0xfc,0x4,0x4,0xfc,0x0,0xde,0x52,0x52,0xde,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20,
-+0x8,0x7f,0x48,0x4b,0x4a,0x7a,0x4a,0x4b,0x48,0x7b,0x4a,0x4b,0x4a,0x4b,0xa8,0x17,0x40,0xfe,0x0,0xfc,0x94,0xf4,0x94,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0xfe,
-+0x8,0x7c,0x4b,0x4a,0x4b,0x7a,0x4b,0x4a,0x4b,0x7a,0x4b,0x4a,0x4a,0x4a,0xad,0x10,0x40,0x24,0xfe,0x88,0xfe,0x50,0xfc,0x54,0xfe,0x54,0xfc,0x50,0xd8,0xd4,0x52,0x50,
-+0x0,0x7a,0x49,0x4f,0x48,0x79,0x4a,0x4a,0x4b,0x7a,0x4c,0x4b,0x49,0x4a,0xac,0x10,0x40,0x48,0x50,0xfc,0xe0,0x50,0x48,0x8,0xbe,0xa8,0xa8,0x28,0x7e,0x8,0x8,0x8,
-+0x0,0x20,0x24,0x3e,0x20,0x21,0x22,0x3f,0x2,0x2,0x1a,0xe2,0x2,0x14,0x9,0x2,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x42,0x24,0x18,0x24,0x42,0x1,0xff,0x28,0x3e,0x6a,0xaa,0x2a,0x2a,0x2e,0x9,0xa,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x10,0x12,0xff,0x10,0x28,0x45,0xff,0x2,0x7a,0x4a,0x4a,0x4a,0x7a,0x2,0xb,0x6,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x2,0xf,0x78,0x8,0x8,0xff,0x28,0x4b,0x49,0x49,0x6b,0x49,0x49,0x7f,0x41,0x2,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x10,0xa,0x7f,0x0,0x22,0x15,0xff,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3f,0x22,0x40,0x40,0x40,0x7e,0x82,0x24,0xa0,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x8,0x14,0x22,0x7f,0x80,0x3e,0x23,0x3e,0x0,0x77,0x11,0x55,0x33,0x55,0x11,0x33,0x40,0x40,0x40,0x7e,0x42,0x84,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x4,0x7e,0x44,0x45,0x46,0x6d,0x6d,0x55,0x55,0x55,0x6d,0x6d,0x44,0x44,0x43,0x80,0x80,0x88,0xfc,0x8,0x8,0xe8,0x28,0x28,0xe8,0x28,0x10,0x4,0xfe,0x2,0xfe,0x0,
-+0x0,0x23,0x12,0x12,0xff,0x2,0x4a,0x4a,0x4a,0x52,0x52,0x1e,0xf3,0x44,0x4,0x18,0x8,0xfc,0x8,0x8,0x18,0x98,0xa8,0xa8,0x48,0x48,0xa8,0x98,0x1a,0xa,0xa,0x4,
-+0x4,0x7e,0x44,0x44,0x44,0x6c,0x6c,0x54,0x54,0x54,0x6f,0x6c,0x44,0x44,0x43,0x80,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x88,0xf8,0x88,0x88,0xfe,0x50,0x8a,0x2,0xfe,0x0,
-+0x0,0x7d,0x45,0x45,0x45,0x6d,0x6d,0x54,0x55,0x54,0x6c,0x6c,0x44,0x44,0x43,0x80,0x20,0xac,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x52,0x8a,0xfe,0x0,
-+0x10,0x18,0x14,0xfe,0x10,0x28,0x44,0x82,0x24,0x36,0xff,0x24,0x24,0x5a,0x49,0x92,0x8,0xfc,0x88,0x88,0x88,0xd8,0xd8,0xa8,0xa8,0xa8,0xd8,0xd8,0x8a,0x8a,0xa,0x4,
-+0x4,0x7e,0x44,0x44,0x45,0x6c,0x6d,0x54,0x56,0x55,0x6c,0x6d,0x46,0x44,0x43,0x80,0x20,0x20,0xa4,0xa8,0x50,0x88,0x6,0x88,0xaa,0xdc,0x88,0x54,0x22,0x2,0xfe,0x0,
-+0x2,0x3f,0x22,0x22,0x22,0x22,0x41,0x80,0x7f,0x21,0x22,0x14,0x8,0x14,0x23,0xc1,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,
-+0x10,0xfe,0x10,0x7c,0x0,0xfe,0x83,0xbe,0x1,0x7c,0x4,0x7c,0x40,0x7c,0x4,0x1b,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x7f,0x8,0x3e,0x0,0xff,0x91,0x92,0x7f,0x28,0x28,0x7e,0x8,0xff,0x8,0xb,0x8,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x8,0x7f,0x8,0x3e,0x0,0xff,0x91,0x9c,0x25,0x7e,0xaa,0x3e,0x2a,0x3e,0x4a,0x8b,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x2,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x1,0xff,0x8,0x4,0x3,0x2,0xc,0x70,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfc,0x80,0x4,0xfe,0x20,0x40,0x80,0x80,0x60,0x1c,
-+0x1,0xff,0x18,0x6,0x1,0xe,0xf2,0x2e,0x22,0x2e,0x22,0x2e,0x22,0x3f,0x20,0x40,0x0,0xfe,0x30,0xc0,0x0,0xe0,0x9e,0xe8,0x88,0xe8,0x88,0xe8,0x88,0xf8,0x8,0x8,
-+0x4,0x42,0x20,0x4,0xff,0x14,0x55,0x25,0x25,0x55,0x55,0x4c,0x8d,0x6,0x4,0x4,0x4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x54,0x48,
-+0x20,0x18,0x8,0x0,0xfe,0x20,0x25,0x3e,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x44,0x30,0x10,0x80,0x40,0x30,0x18,0x8,0x0,
-+0x20,0x18,0x8,0x1,0xfe,0x20,0x25,0x3e,0x25,0x25,0x25,0x25,0x45,0x45,0x94,0x8,0x80,0x80,0x84,0xfe,0x20,0x24,0xfe,0x20,0xfc,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x20,0x18,0x8,0x1,0xfe,0x21,0x24,0x3e,0x25,0x24,0x24,0x27,0x44,0x44,0x94,0x8,0x80,0x84,0xfe,0x0,0x18,0xe0,0x28,0x3c,0xe0,0x24,0x3e,0xe0,0x20,0x22,0x22,0x1e,
-+0x21,0x19,0x9,0xfe,0x24,0x21,0x3d,0x25,0x25,0x27,0x25,0x25,0x45,0x45,0x95,0xa,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x48,0x28,0xfe,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x20,0x18,0x8,0x1,0xfe,0x21,0x21,0x3d,0x26,0x24,0x25,0x24,0x44,0x44,0x97,0x8,0x80,0x80,0x84,0xfe,0x20,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x18,0x8,0x0,0xfd,0x22,0x20,0x3c,0x24,0x24,0x24,0x24,0x44,0x45,0x95,0xa,0x80,0x80,0x84,0xfe,0x0,0xfc,0x84,0x84,0xfc,0x80,0xa4,0xa8,0xb0,0x22,0x22,0x1e,
-+0x20,0x18,0x8,0x1,0xfe,0x23,0x20,0x3c,0x25,0x24,0x24,0x24,0x44,0x45,0x95,0xa,0x80,0x84,0xfe,0x40,0x24,0xfe,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0x2a,0x2a,0x26,
-+0x20,0x18,0x9,0x2,0xfe,0x20,0x20,0x3c,0x27,0x24,0x25,0x25,0x45,0x45,0x94,0x8,0x80,0x84,0xfe,0x20,0xf8,0x20,0x50,0x88,0xfe,0x8,0xe8,0x28,0x28,0xe8,0x8,0x18,
-+0x10,0x13,0x10,0x14,0x54,0x58,0x53,0x90,0x10,0x10,0x19,0x25,0x22,0x44,0x81,0x0,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x84,0x28,0x10,
-+0x10,0x10,0x10,0x17,0x54,0x58,0x53,0x90,0x10,0x17,0x10,0x28,0x24,0x44,0x80,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x10,0x10,0x10,0x17,0x54,0x5a,0x52,0x92,0x12,0x13,0x10,0x28,0x24,0x44,0x80,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x10,0x14,0x55,0x59,0x52,0x95,0x19,0x11,0x11,0x29,0x25,0x45,0x80,0x0,0x40,0x40,0xa0,0xa0,0x10,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x24,0x4,0xfc,0x0,
-+0x10,0x10,0x17,0x10,0x54,0x54,0x58,0x91,0x13,0x15,0x11,0x29,0x25,0x45,0x41,0x81,0x0,0x4,0xfe,0x40,0x40,0x80,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x10,0x55,0x54,0x58,0x90,0x17,0x10,0x10,0x28,0x24,0x44,0x40,0x80,0x8,0x1c,0xe0,0x20,0x24,0xac,0xb0,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x10,0x13,0x54,0x54,0x58,0x90,0x11,0x10,0x10,0x28,0x24,0x44,0x43,0x80,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x10,0x17,0x54,0x58,0x50,0x91,0x13,0x10,0x10,0x28,0x25,0x42,0x47,0x80,0x40,0x20,0x4,0xfe,0x40,0x40,0x80,0x8,0xf0,0x20,0x40,0x80,0x8,0x4,0xfc,0x4,
-+0x1,0x2,0x4,0x8,0x3f,0x0,0x1f,0x10,0x10,0x1f,0x1,0x11,0x11,0x22,0xc,0x70,0x0,0x0,0x20,0x10,0xf8,0x0,0xf0,0x10,0x10,0xf0,0x8,0x10,0x20,0x80,0x60,0x1c,
-+0x10,0x10,0x10,0x15,0x55,0x59,0x53,0x95,0x11,0x10,0x17,0x28,0x24,0x44,0x40,0x80,0xa0,0xa0,0xa0,0x24,0x28,0x30,0x64,0x1c,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x12,0x11,0x10,0x14,0x57,0x58,0x50,0x93,0x10,0x10,0x17,0x28,0x24,0x44,0x40,0x80,0x8,0x10,0xa0,0x8,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x13,0x10,0x14,0x57,0x59,0x51,0x91,0x17,0x10,0x11,0x29,0x25,0x45,0x41,0x81,0x8,0xfc,0x80,0x88,0xfc,0x8,0x8,0x8,0xfe,0x0,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x14,0x55,0x59,0x52,0x95,0x18,0x10,0x13,0x2a,0x26,0x46,0x43,0x82,0x40,0x40,0xa0,0xa0,0x10,0x90,0x48,0xf6,0x14,0x20,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x24,0x22,0x20,0x24,0xac,0xb4,0xa4,0x24,0x25,0x26,0x24,0x24,0x54,0x4c,0x84,0x4,0x4,0xfe,0x4,0x4,0x44,0x24,0xa4,0x84,0x94,0xac,0xa4,0xe4,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x14,0x57,0x5a,0x53,0x92,0x13,0x10,0x10,0x2b,0x24,0x44,0x40,0x80,0x48,0x7c,0x40,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,
-+0x1,0x11,0x11,0x11,0x22,0xc,0x30,0xc8,0x8,0x2a,0x2a,0x4d,0x14,0x12,0x20,0xc1,0x0,0x10,0x30,0x40,0x80,0x60,0x1e,0x24,0x20,0xa4,0xa8,0x30,0x50,0x48,0x8e,0x4,
-+0x21,0x21,0x21,0x2f,0xa9,0xb1,0xa1,0x27,0x24,0x24,0x24,0x24,0x57,0x48,0x80,0x1,0x4,0x3e,0x24,0xe4,0x24,0x3c,0x24,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8,
-+0x10,0x13,0x12,0x12,0x57,0x5a,0x52,0x93,0x10,0x10,0x13,0x29,0x24,0x40,0x47,0x80,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x40,0x20,0xfc,0x8,0x88,0x90,0xfe,0x0,
-+0x10,0x13,0x12,0x12,0x57,0x5a,0x52,0x93,0x10,0x1f,0x12,0x12,0x2a,0x26,0x43,0x82,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x88,0x50,0x20,0x90,0xe,0x4,
-+0x10,0x13,0x12,0x12,0x57,0x5a,0x52,0x93,0x12,0x12,0x12,0x17,0x2a,0x2a,0x42,0x82,0x44,0xbe,0x24,0x24,0xa4,0x42,0x0,0xbc,0x4,0x24,0x28,0x90,0x10,0x28,0x4e,0x84,
-+0x8,0xb,0xa,0x13,0x30,0x5f,0x90,0x11,0x16,0x11,0x9,0x9,0x12,0x4,0x18,0x60,0x8,0xfc,0x8,0xf8,0x40,0xfe,0xe0,0x50,0x4e,0x40,0x10,0x20,0xc0,0x40,0x30,0xe,
-+0x10,0x10,0x17,0x14,0x54,0x5b,0x50,0x93,0x12,0x13,0x12,0x2b,0x24,0x40,0x47,0x80,0x80,0x40,0xfe,0x2,0x4,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x13,0x12,0x56,0x5b,0x52,0x92,0x13,0x15,0x15,0x29,0x25,0x45,0x41,0x81,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc,
-+0x10,0x10,0x14,0x12,0x56,0x58,0x50,0x96,0x12,0x12,0x12,0x2a,0x26,0x45,0x88,0x0,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0xa4,0xa8,0x90,0xc8,0x84,0x6,0xfc,0x0,
-+0x20,0x27,0x24,0x25,0xac,0xb5,0xa6,0x20,0x27,0x24,0x24,0x27,0x54,0x4c,0x87,0x4,0x84,0x7e,0x24,0x24,0xa4,0xa4,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x11,0x11,0x11,0x15,0x55,0x58,0x53,0x92,0x13,0x10,0x13,0x29,0x24,0x44,0x41,0x86,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x94,0xfc,0x0,0xfc,0x8,0x90,0x60,0x90,0xe,
-+0x20,0x20,0x2f,0x21,0xa8,0xb7,0xa4,0x25,0x26,0x25,0x25,0x25,0x55,0x4c,0x84,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0xa4,0x14,0xc,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8,
-+0x0,0x3f,0x21,0x3f,0x20,0x3f,0x40,0x7f,0x95,0x24,0xd,0x11,0x11,0x22,0xc,0x70,0x8,0x8,0x8,0x8,0x7e,0x8,0x28,0xa8,0x8,0xa8,0x10,0x10,0x20,0x80,0x60,0x1c,
-+0x20,0x2f,0x24,0x22,0xa8,0xb2,0xa4,0x20,0x23,0x22,0x22,0x23,0x52,0x4a,0x83,0x2,0x84,0xfe,0xa4,0x94,0x84,0x94,0xa4,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x20,0x20,0x27,0x24,0xad,0xb4,0xa7,0x24,0x25,0x26,0x24,0x2f,0x50,0x49,0x86,0x18,0x40,0x84,0xfe,0x44,0x54,0x44,0xfc,0x44,0x54,0x4c,0x44,0xfe,0xa0,0x10,0xe,0x4,
-+0x10,0x17,0x12,0x11,0x57,0x59,0x52,0x94,0x1b,0x12,0x12,0x13,0x2a,0x26,0x43,0x82,0x1c,0xe0,0x48,0x50,0xfe,0x50,0x48,0x4e,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x8,
-+0x21,0x28,0x24,0x23,0xa8,0xb0,0xad,0x26,0x24,0x27,0x24,0x27,0x54,0x4a,0x91,0x0,0x4,0x88,0x0,0xfe,0x40,0xc0,0x24,0x68,0xb0,0x70,0xa8,0x26,0xa0,0x46,0xfc,0x0,
-+0x4,0xfe,0x10,0x32,0xdc,0x28,0xdc,0x2a,0xd9,0x1,0x9,0x9,0x12,0x4,0x18,0xe0,0x4,0xfe,0x10,0x32,0xdc,0x28,0xdc,0x2a,0xd8,0x0,0x10,0x20,0x80,0x40,0x30,0xe,
-+0x27,0x22,0x21,0x27,0xac,0xb7,0xa0,0x27,0x24,0x27,0x24,0x27,0x55,0x4d,0x86,0x4,0xfc,0x48,0x50,0xfc,0xa4,0xfc,0x0,0x88,0x88,0xfe,0x88,0xc8,0x28,0x8,0xa8,0x10,
-+0x11,0x9,0x7f,0x48,0xbe,0x1c,0x2a,0x9,0x7f,0x2,0xd,0x39,0xc5,0x2,0x4,0x18,0x10,0x20,0xfe,0x22,0xfc,0x70,0xa8,0x20,0xfc,0x80,0x60,0x38,0x46,0x80,0x40,0x38,
-+0x0,0x0,0x0,0x0,0x0,0x0,0x48,0x44,0x44,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x88,0x44,0x42,0x2,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x2,0x2,0x7f,0x2,0x3f,0x4,0xff,0x8,0x1f,0x24,0x42,0x80,0x0,0x24,0x22,0x42,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x20,0xfc,0x20,0x20,0xa0,0x40,0x88,0x44,0x44,
-+0x0,0x78,0x48,0x49,0x4a,0x79,0x49,0x49,0x49,0x79,0x49,0x0,0x28,0x24,0x44,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x90,0x48,0x46,0x2,
-+0x1,0x7f,0x1,0x3f,0x0,0x1f,0x10,0x1f,0x4,0xff,0x0,0x1f,0x10,0x1f,0x24,0x42,0x0,0xfc,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x44,0xfe,0x0,0xf0,0x10,0xf0,0x88,0x44,
-+0x2,0x1,0x3f,0x20,0x20,0x3f,0x21,0x21,0x3f,0x21,0x21,0x22,0x42,0x44,0x88,0x30,0x0,0x8,0xfc,0x8,0x8,0xf8,0x40,0x24,0xfe,0x0,0x0,0x80,0x80,0x60,0x1c,0x8,
-+0x2,0x1,0x3f,0x20,0x20,0x3f,0x24,0x23,0x29,0x26,0x22,0x3f,0x40,0x40,0x80,0x0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x20,0x20,0x20,0x24,0x3e,0xe0,0x20,0x20,0x20,0x20,
-+0x2,0x1,0x3f,0x20,0x20,0x3f,0x20,0x2f,0x28,0x28,0x2b,0x2a,0x4a,0x4b,0x88,0x8,0x0,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x4,0x8,
-+0x1,0x0,0x3f,0x20,0x3f,0x20,0x2f,0x28,0x2f,0x20,0x2f,0x28,0x4f,0x48,0x88,0x7,0x0,0x88,0xfc,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x0,0xf8,0x88,0xf8,0x2,0x2,0xfe,
-+0x1,0x0,0x3f,0x20,0x3f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x42,0x5e,0x82,0x2,0x0,0x88,0xfc,0x8,0xf8,0x40,0x48,0x7c,0x40,0x50,0x78,0x40,0x48,0x7c,0x40,0x40,
-+0x2,0x1,0x0,0x1f,0x0,0x1,0x1,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0xc0,0x80,0x0,0x0,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x13,0x2,0xfe,0xa,0x12,0x12,0x3b,0x56,0x92,0x12,0x12,0x12,0x12,0x11,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x20,0x10,0x3,0xfc,0x8,0x10,0x10,0x3b,0x54,0x90,0x10,0x11,0x11,0x12,0x14,0x18,0x8,0x7c,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x20,0x10,0x0,0xfd,0x9,0x11,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x11,0x17,0x10,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x10,0x0,0xfc,0xb,0x10,0x10,0x38,0x57,0x90,0x10,0x10,0x11,0x12,0x17,0x10,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x20,0x10,0x0,0xfb,0x8,0x10,0x10,0x38,0x57,0x92,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x10,0x0,0xfb,0x8,0x10,0x10,0x39,0x55,0x91,0x12,0x12,0x14,0x18,0x11,0x12,0xa0,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x21,0x11,0x1,0xfd,0xa,0x14,0x10,0x38,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x20,0x10,0x0,0xfc,0x9,0x12,0x10,0x38,0x54,0x90,0x11,0x11,0x12,0x10,0x10,0x10,0x80,0x80,0x80,0xfe,0x2,0x4,0x20,0x20,0xa8,0xa4,0x24,0x22,0x22,0x20,0xa0,0x40,
-+0x20,0x10,0x3,0xfa,0xa,0x12,0x13,0x3a,0x56,0x92,0x12,0x12,0x12,0x13,0x12,0x10,0x8,0x3c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x50,0x90,0x4a,0x2a,0x4,
-+0x20,0x13,0x0,0xfc,0xb,0x10,0x10,0x3b,0x56,0x92,0x12,0x13,0x12,0x10,0x10,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8,
-+0x20,0x10,0x0,0xfc,0xb,0x12,0x12,0x3a,0x56,0x92,0x12,0x12,0x10,0x10,0x11,0x16,0x40,0x48,0x7c,0x40,0xf8,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0xa0,0x98,0xc,0x4,
-+0x20,0x10,0x0,0xfc,0xa,0x11,0x10,0x38,0x55,0x92,0x14,0x10,0x11,0x11,0x12,0x14,0x20,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xa0,0xb0,0xac,0xa4,0xa0,0x22,0x22,0x1e,0x0,
-+0x21,0x11,0x7,0xf9,0x9,0x11,0x11,0x39,0x55,0x91,0x11,0x1f,0x10,0x11,0x12,0x14,0x10,0x10,0xfc,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x21,0x10,0x0,0xfd,0x9,0x11,0x11,0x39,0x55,0x91,0x10,0x17,0x10,0x10,0x10,0x10,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20,
-+0x21,0x11,0x7,0xf9,0x17,0x11,0x17,0x39,0x55,0x90,0x17,0x10,0x10,0x10,0x13,0x14,0x0,0x4,0xfe,0x14,0xd4,0x14,0xd4,0x24,0x4c,0x40,0xfe,0x40,0x40,0xa0,0x1e,0x4,
-+0x21,0x10,0x0,0xfb,0x8,0x10,0x11,0x38,0x54,0x90,0x13,0x10,0x12,0x12,0x14,0x10,0x4,0x88,0x50,0xfe,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0,0xa4,0x52,0x52,0x0,
-+0x20,0x17,0x0,0xff,0x8,0x13,0x1a,0x37,0x51,0x9f,0x10,0x13,0x12,0x12,0x13,0x12,0x40,0xfe,0x40,0xfc,0x0,0xf8,0x8,0xf8,0x10,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8,
-+0x20,0x17,0x0,0xff,0xc,0x17,0x11,0x3b,0x55,0x93,0x11,0x1f,0x11,0x13,0x1d,0x11,0x40,0xfe,0x0,0xbc,0xa4,0xbc,0x10,0xf8,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4,
-+0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0xa,0x29,0x28,0x48,0x88,0x7,0x0,0x4,0xfe,0x0,0x80,0x60,0x30,0x10,0x0,0x0,0x0,0x88,0x84,0x12,0x12,0xf0,0x0,
-+0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7f,0x0,0xa,0x29,0x28,0x48,0x88,0x7,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x88,0x84,0x12,0x12,0xf0,0x0,
-+0x0,0x0,0x7e,0x3,0x24,0x14,0x8,0x14,0x22,0x40,0x2a,0x29,0x48,0x88,0x7,0x0,0x10,0x10,0x14,0xfe,0x10,0x90,0x50,0x10,0x50,0x20,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x8,0x8,0x7f,0x8,0x3e,0x8,0x7f,0x8,0x8,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x0,0x4,0x7e,0x24,0x24,0x24,0x44,0x54,0x88,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0xff,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x0,0x10,0xf8,0x0,0xfe,0x0,0xf8,0x0,0xfe,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x0,0xff,0x2,0x4,0x3f,0x24,0x24,0x24,0x24,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x4,0xfe,0x0,0x8,0xfc,0x48,0x48,0x48,0x58,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x10,0x17,0x10,0x2a,0x29,0x48,0x88,0x7,0x0,0x8,0x1c,0xe0,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x40,0x30,0x10,0x5,0xa,0x10,0xe0,0x21,0x26,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x80,0x80,0xfc,0x4,0x48,0x40,0xa0,0x10,0xe,0x0,0x8,0x84,0x92,0x12,0xf0,0x0,
-+0x1,0x7f,0x1,0x3f,0x0,0x7f,0x40,0x8f,0x8,0x8,0x30,0xa,0x29,0x48,0x88,0x7,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x2,0xe4,0x20,0x28,0x38,0x0,0x84,0x92,0x12,0xf0,
-+0x8,0x12,0x21,0x4c,0x12,0x30,0x51,0x96,0x12,0x10,0xa,0x29,0x28,0x48,0x88,0x7,0x8,0x7c,0x0,0x4,0xfe,0x88,0x8,0x8,0x28,0x10,0x0,0x88,0x84,0x12,0x12,0xf0,
-+0x0,0x7e,0x42,0x7e,0x49,0x7e,0x48,0x49,0x65,0x42,0x0,0x2a,0x29,0x48,0x88,0x7,0x40,0x40,0x44,0xfe,0x48,0x28,0x10,0x28,0x4e,0x84,0x0,0x8,0x84,0x92,0x12,0xf0,
-+0x3f,0x22,0x2f,0x22,0x3f,0x22,0x27,0x2a,0x23,0x20,0x3f,0xa,0x29,0x48,0x88,0x7,0xfc,0x20,0xf8,0xa0,0xfc,0x0,0xf0,0x10,0xf0,0x0,0xfc,0x0,0x84,0x92,0x12,0xf0,
-+0xe,0x78,0x8,0xff,0x8,0x3e,0x22,0x22,0x22,0x3e,0x0,0x2a,0x29,0x48,0x88,0x7,0x20,0x24,0xfe,0x84,0xfc,0x84,0xfc,0x84,0xfc,0x84,0x0,0x8,0x84,0x92,0x12,0xf0,
-+0x8,0xff,0x0,0x7e,0x43,0x7e,0x0,0x7f,0x4,0xff,0x8,0x1a,0x51,0x50,0x90,0xf,0x40,0x40,0x44,0xfe,0x4,0x44,0x28,0x10,0x28,0x46,0x84,0x0,0x84,0x92,0x12,0xf0,
-+0x10,0x17,0x12,0xf9,0x17,0x39,0x33,0x55,0x91,0x13,0x0,0x2a,0x29,0x48,0x88,0x7,0x10,0xd0,0x94,0x7e,0xd0,0x58,0x34,0x52,0x90,0x10,0x0,0x8,0x84,0x92,0x12,0xf0,
-+0x41,0x2f,0x11,0x87,0x61,0x2f,0x15,0x26,0xe4,0x24,0x0,0x2a,0x29,0x48,0x88,0x7,0x10,0xfe,0x10,0xfc,0x10,0xfc,0x14,0xac,0x44,0xc,0x0,0x8,0x84,0x92,0x12,0xf0,
-+0x8,0xff,0x14,0xff,0x22,0x3e,0x22,0x3e,0x8,0x7f,0x8,0xa,0x51,0x50,0x90,0xf,0x40,0x7e,0xa8,0x10,0xee,0x0,0x7c,0x44,0x54,0x54,0x28,0x44,0x84,0x92,0x12,0xf0,
-+0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x8,0xfe,0x8,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x7f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x8,0xfe,0x8,0xf8,0x0,0xfc,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,
-+0x1,0x1,0x7d,0x5,0x9,0x11,0x25,0xc2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x8,0x18,0xa0,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x22,0x11,0x9,0x0,0x7f,0x41,0x81,0x1,0x3d,0x5,0x9,0x11,0x21,0xc1,0x5,0x2,0x8,0x18,0x20,0x40,0xfe,0x2,0x4,0x10,0xa0,0x40,0x20,0x10,0xe,0x4,0x0,0x0,
-+0x1,0x1,0x7d,0x5,0x9,0x11,0x25,0x42,0x8,0x9,0xfa,0x1c,0x2c,0xcb,0x28,0x10,0x8,0x10,0xa0,0xc0,0x40,0x30,0xe,0x4,0x20,0x24,0xe8,0x70,0xa8,0x26,0xa4,0x40,
-+0x4,0xfe,0x10,0x10,0x20,0x24,0x3e,0x64,0xa4,0x24,0x24,0x24,0x25,0x3d,0x22,0x4,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xa,0xa,0x6,0x0,
-+0x4,0xfd,0x10,0x10,0x20,0x20,0x3c,0x67,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x1,0xfe,0x10,0x20,0x20,0x21,0x7c,0xa4,0x24,0x24,0x24,0x25,0x3d,0x22,0x0,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0x54,0x54,0x54,0x94,0xa4,0x24,0x44,0x54,0x88,
-+0x1,0x7f,0x1,0x3f,0x1,0x7f,0x1,0xff,0x4,0x4,0xf,0x18,0x28,0xc8,0xf,0x8,0x0,0xfc,0x0,0xf8,0x0,0xfc,0x0,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x4,0xfe,0x13,0x10,0x20,0x21,0x3d,0x67,0xa4,0x24,0x24,0x27,0x24,0x3c,0x20,0x0,0x40,0x48,0xfc,0x80,0xa0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x4,0xfe,0x11,0x10,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x24,0x24,0x3c,0x20,0x0,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x22,0x1e,0x0,
-+0x4,0xfe,0x10,0x10,0x20,0x21,0x3d,0x64,0xa4,0x24,0x24,0x24,0x25,0x3e,0x24,0x0,0x4,0xfe,0x8,0x88,0x88,0x8,0xfe,0x28,0x28,0x48,0x48,0x88,0x8,0x8,0x28,0x10,
-+0x4,0xfe,0x11,0x11,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x25,0x3d,0x21,0x2,0x4,0x0,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x4,0xfe,0x13,0x10,0x20,0x24,0x3f,0x64,0xa4,0x24,0x24,0x24,0x25,0x3f,0x22,0x0,0x8,0x3c,0xc0,0x40,0x20,0x20,0xfc,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x86,0x7c,
-+0x4,0xff,0x12,0x12,0x23,0x22,0x3a,0x6a,0xaa,0x2a,0x2a,0x2a,0x3b,0x24,0x8,0x10,0x8,0xfc,0x8,0x8,0x18,0x98,0xa8,0xa8,0x48,0x48,0xa8,0x98,0x1a,0xa,0xa,0x4,
-+0x4,0xfe,0x10,0x11,0x20,0x20,0x3c,0x67,0xa4,0x24,0x24,0x24,0x25,0x3d,0x20,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x40,0x80,0x8,0xfc,0x4,0x0,
-+0x4,0xfe,0x13,0x10,0x20,0x20,0x3d,0x65,0xa4,0x24,0x24,0x24,0x24,0x3c,0x21,0x6,0x88,0x88,0xfe,0x88,0x88,0x0,0x4,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x8,0xff,0x12,0x12,0x23,0x22,0x3a,0x6a,0xaa,0x2a,0x2a,0x2a,0x3a,0x24,0x9,0x12,0x8,0xfc,0x0,0x4,0xfe,0x40,0x44,0x7e,0x44,0x44,0x44,0x84,0x84,0x84,0x28,0x10,
-+0x4,0x4,0x7f,0x5,0x5,0x9,0x37,0xc1,0x0,0xff,0x4,0xf,0x18,0x28,0xcf,0x8,0x40,0x28,0xfc,0x0,0x30,0xc4,0x4,0xfc,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x4,0xfe,0x10,0x10,0x21,0x22,0x3c,0x64,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x80,0x80,0x84,0xfe,0x40,0x40,0x48,0x7c,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,
-+0x4,0xfe,0x10,0x10,0x20,0x25,0x3e,0x64,0xa5,0x24,0x24,0x24,0x24,0x3c,0x23,0x0,0x20,0x20,0x50,0x50,0x88,0x4,0x2,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0xfe,0x11,0x11,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x25,0x25,0x3d,0x21,0x0,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x10,0x50,0x4a,0xaa,0x4,
-+0x4,0xfe,0x10,0x13,0x20,0x20,0x3d,0x65,0xa4,0x24,0x24,0x24,0x24,0x3c,0x27,0x0,0x40,0x20,0x24,0xfe,0x0,0x8,0x8,0x8,0x90,0x90,0x90,0x90,0x20,0x24,0xfe,0x0,
-+0x4,0xfe,0x10,0x13,0x22,0x24,0x3e,0x64,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x40,0x20,0x20,0xfe,0x2,0x84,0x80,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0,
-+0x0,0x0,0xfc,0x13,0x20,0x20,0x23,0x7a,0xaa,0x2b,0x28,0x28,0x28,0x38,0x1,0x2,0x90,0x90,0x94,0xfe,0x94,0x94,0xfc,0x90,0x90,0xfe,0x92,0x92,0x9a,0x94,0x10,0x10,
-+0x8,0xff,0x12,0x12,0x22,0x22,0x3a,0x6f,0xaa,0x2a,0x2a,0x2a,0x3a,0x22,0x4,0x8,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0x44,0x54,0x48,
-+0x4,0xfe,0x13,0x10,0x20,0x20,0x3c,0x67,0xa5,0x25,0x25,0x25,0x25,0x3d,0x20,0x0,0x88,0x88,0xfe,0x88,0x88,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x8,0xfc,0x17,0x10,0x22,0x21,0x39,0x68,0xaf,0x28,0x28,0x29,0x29,0x3a,0x24,0x8,0x40,0x48,0xfc,0x40,0x48,0x48,0x50,0x44,0xfe,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x4,0xfe,0x10,0x13,0x20,0x20,0x3c,0x65,0xa4,0x27,0x24,0x24,0x24,0x3d,0x21,0x6,0x40,0x48,0x7c,0xc0,0x28,0x12,0x6a,0x86,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,
-+0x4,0x4,0x27,0x24,0x24,0x3f,0xe0,0x0,0x7f,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x40,0x40,0x4c,0x70,0x42,0x42,0x3e,0x0,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,
-+0x8,0xff,0x12,0x12,0x22,0x22,0x3a,0x6a,0xaa,0x2a,0x2a,0x2a,0x2a,0x3a,0x22,0x2,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x4,0xfe,0x10,0x11,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x25,0x25,0x3d,0x21,0x1,0x20,0x20,0x44,0xfe,0x4,0x8c,0x54,0x54,0x24,0x54,0x4c,0x8c,0x4,0x4,0xfc,0x4,
-+0x0,0x4,0xfe,0x11,0x21,0x22,0x20,0x7c,0xa4,0x25,0x27,0x25,0x25,0x3d,0x21,0x1,0x80,0x88,0xfc,0x8,0x88,0x50,0x20,0x50,0x8e,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0xfe,0x13,0x10,0x20,0x23,0x3c,0x64,0xa4,0x24,0x27,0x24,0x24,0x3c,0x22,0x1,0x10,0x58,0x94,0x94,0x90,0xfe,0x90,0x90,0xb4,0xd4,0x98,0x90,0xaa,0xca,0x8a,0x4,
-+0x8,0xfc,0x13,0x10,0x21,0x24,0x3f,0x64,0xa5,0x25,0x25,0x25,0x25,0x3c,0x20,0x3,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0x24,0x24,0x24,0x58,0x84,0x2,
-+0x4,0xfe,0x10,0x10,0x20,0x25,0x3e,0x64,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x60,0x50,0x44,0xfe,0x90,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,
-+0x4,0xfe,0x13,0x10,0x21,0x20,0x3c,0x67,0xa4,0x25,0x25,0x25,0x25,0x3d,0x21,0x1,0x40,0x28,0xfc,0x0,0x8,0x90,0x4,0xfe,0x0,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0xfe,0x13,0x12,0x24,0x21,0x3c,0x64,0xa5,0x25,0x25,0x25,0x25,0x3d,0x22,0x4,0x40,0x20,0xfe,0x2,0x4,0xfc,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0xa6,0x7c,
-+0x8,0xfc,0x11,0x13,0x20,0x27,0x38,0x69,0xaa,0x2d,0x28,0x28,0x2b,0x38,0x20,0x3,0x40,0x90,0x8,0xfc,0x40,0xfe,0x90,0x28,0x46,0x94,0x20,0xc8,0x10,0x20,0xc0,0x0,
-+0x4,0xff,0x10,0x11,0x20,0x23,0x3c,0x65,0xa5,0x25,0x27,0x25,0x25,0x3d,0x20,0x0,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x44,0x24,0xfe,0x44,0x24,0xfe,0x4,0x18,
-+0x8,0xfd,0x11,0x11,0x21,0x29,0x3d,0x69,0xaa,0x2c,0x2a,0x2b,0x2a,0x3b,0x20,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xb4,0x14,0x4,0xfc,0x4,0x8,
-+0x4,0xfe,0x11,0x10,0x20,0x23,0x3e,0x64,0xa5,0x25,0x25,0x25,0x25,0x3c,0x20,0x0,0x40,0x24,0xfe,0x88,0x50,0xfe,0x22,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20,0x20,
-+0x4,0xfe,0x13,0x12,0x24,0x21,0x3c,0x65,0xa5,0x25,0x25,0x25,0x24,0x3c,0x23,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0x4,0xfe,0x0,
-+0x8,0xfc,0x13,0x12,0x22,0x23,0x3a,0x6a,0xab,0x2b,0x2b,0x2d,0x29,0x39,0x21,0x1,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc,
-+0x9,0xfd,0x11,0x12,0x26,0x21,0x39,0x6a,0xa8,0x2f,0x28,0x28,0x29,0x3a,0x2c,0x0,0x8,0x8,0xfc,0x48,0xa8,0x3e,0x8,0x48,0x44,0xfe,0xc0,0xe0,0x50,0x4e,0x44,0x40,
-+0x8,0xfc,0x17,0x11,0x22,0x24,0x39,0x6b,0xa8,0x28,0x29,0x2b,0x2d,0x39,0x21,0x1,0x40,0x24,0xfe,0x8,0x46,0x92,0x8,0xfc,0x80,0x88,0x50,0x20,0x10,0x48,0x8e,0x4,
-+0x5,0xfe,0x10,0x10,0x21,0x23,0x3d,0x64,0xa5,0x24,0x27,0x24,0x24,0x3d,0x22,0x0,0xfc,0x88,0x70,0x88,0x6,0xfc,0x54,0x88,0x54,0x22,0xfe,0x70,0xa8,0x26,0x20,0x20,
-+0x8,0x7f,0x8,0x3e,0x0,0x7f,0x49,0x7f,0x40,0x40,0xbf,0x4,0xf,0x18,0x68,0xf,0x78,0x48,0x48,0x48,0x86,0x78,0x48,0x30,0x48,0x86,0xfc,0x0,0xf0,0x10,0x10,0xf0,
-+0xa,0xff,0x11,0x14,0x22,0x20,0x39,0x6a,0xaa,0x28,0x2f,0x28,0x29,0x3a,0x24,0x0,0x4,0x7e,0x40,0x7c,0x44,0xfc,0x40,0x7e,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x9,0xfd,0x17,0x10,0x27,0x24,0x3f,0x68,0xaf,0x28,0x29,0x29,0x2f,0x39,0x25,0x2,0x10,0x10,0xd0,0x1e,0xe4,0x44,0xd4,0x14,0xd4,0x94,0x8,0xc8,0x14,0x14,0x22,0x40,
-+0x8,0xff,0x10,0x12,0x21,0x21,0x3b,0x6c,0xab,0x2a,0x2a,0x2b,0x29,0x38,0x27,0x0,0x20,0xa8,0xb0,0xa4,0x18,0x10,0xf8,0x6,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0,
-+0xb,0xfc,0x11,0x11,0x21,0x25,0x3f,0x64,0xa5,0x25,0x25,0x25,0x25,0x3c,0x23,0x0,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xfe,0x0,
-+0x1,0xff,0x21,0x22,0x23,0x44,0x7b,0xd6,0x55,0x58,0x57,0x50,0x51,0x72,0x44,0x0,0x10,0xfe,0x10,0x20,0xbc,0xa4,0x18,0x8,0xf4,0x2,0xfc,0x40,0x50,0x4c,0x44,0xc0,
-+0x1,0xff,0x21,0x27,0x24,0x49,0x70,0xd7,0x50,0x51,0x56,0x50,0x57,0x70,0x47,0x0,0x10,0xfe,0x10,0xfe,0x2,0xf4,0x0,0xfc,0x80,0x48,0x70,0xb0,0x68,0xa6,0x20,0x60,
-+0x1,0xff,0x21,0x2b,0x24,0x41,0x79,0xd5,0x55,0x51,0x55,0x57,0x54,0x78,0x48,0x0,0x10,0xfe,0x28,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0xfe,0x88,0x48,0x8,0x18,
-+0x1,0x2,0xc,0x3f,0xc0,0x1f,0x10,0x1f,0x2,0xff,0x2,0x4,0x4,0x9,0x12,0x60,0x0,0x80,0x60,0xf8,0x6,0xf0,0x10,0xf0,0x24,0xfe,0x80,0xa0,0xc0,0x84,0x84,0x7c,
-+0x4,0x24,0x14,0x4,0xff,0x9,0x5,0x3f,0x21,0x21,0x23,0x25,0x29,0x21,0x21,0x21,0x40,0x48,0x50,0x44,0xfe,0x20,0x48,0xfc,0x8,0x8,0x88,0x68,0x28,0x8,0x28,0x10,
-+0x14,0x55,0x36,0x14,0xff,0x49,0x2a,0x7f,0x49,0x49,0x5d,0x6b,0x49,0x49,0x49,0x43,0x20,0x28,0x24,0x24,0xfe,0x20,0x20,0x3c,0x54,0x54,0x54,0x48,0x54,0x94,0x24,0x42,
-+0x28,0xaa,0x6c,0x29,0xfe,0x54,0x39,0x7d,0x55,0x55,0x7d,0x55,0x55,0x55,0x55,0x45,0x20,0x28,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x2c,
-+0x0,0x5,0x7e,0x44,0x44,0x7c,0x44,0x47,0x7c,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x3,0x7c,0x45,0x45,0x7d,0x45,0x45,0x7d,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x4,0xfe,0x20,0x20,0x24,0x3e,0x24,0x24,0xfc,0x4,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x0,0x1,0x7d,0x45,0x45,0x7d,0x45,0x45,0x7d,0x45,0x45,0x45,0x7d,0x45,0x1,0x0,0x4,0xfe,0x0,0x4,0x84,0x48,0x28,0x10,0x28,0x28,0x44,0x84,0x0,0x4,0xfe,0x0,
-+0x0,0x0,0x78,0x4f,0x48,0x7a,0x4a,0x4a,0x7a,0x4a,0x4b,0x48,0x78,0x48,0x0,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0x48,0xf8,0x48,0x42,0x42,0x3e,0x0,
-+0x0,0x8,0x7c,0x48,0x49,0x79,0x4a,0x4a,0x7c,0x48,0x48,0x48,0x78,0x48,0x3,0xc,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x4a,0x48,0x50,0x50,0x20,0x40,0x80,0x0,0x0,
-+0x0,0x8,0x7c,0x4b,0x4a,0x7c,0x48,0x48,0x78,0x48,0x48,0x48,0x79,0x49,0x2,0xc,0x40,0x40,0x40,0xfe,0x42,0x44,0x40,0x40,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,
-+0x11,0x11,0x1f,0x21,0x5f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x10,0xf8,0x0,0xf0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x10,0x1e,0x12,0x32,0x4a,0x4,0x8,0x30,0xdf,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x8,0xfc,0x88,0x88,0xa8,0x90,0x82,0x7e,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x0,0x4,0x7e,0x44,0x44,0x7d,0x47,0x44,0x7c,0x45,0x45,0x45,0x7d,0x45,0x1,0x1,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0x0,0x7d,0x44,0x44,0x7c,0x47,0x44,0x7c,0x44,0x45,0x44,0x7c,0x44,0x3,0x0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x8,0x7c,0x48,0x4a,0x7a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x6,0x0,0x10,0x90,0x90,0x90,0x90,0x92,0xf6,0x98,0x90,0x90,0x90,0x90,0xf2,0x92,0x1e,0x0,
-+0x0,0x4,0x7e,0x45,0x46,0x7c,0x44,0x44,0x7f,0x44,0x44,0x45,0x7c,0x44,0x0,0x3,0x40,0x40,0xfc,0x8,0x90,0x60,0x40,0xa0,0x3e,0x42,0x84,0x44,0x28,0x10,0x60,0x80,
-+0x0,0x8,0x7c,0x49,0x4b,0x78,0x49,0x49,0x7a,0x48,0x4f,0x48,0x78,0x48,0x0,0x0,0x40,0x40,0x90,0x8,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x78,0x4f,0x48,0x7a,0x49,0x48,0x7f,0x48,0x48,0x49,0x79,0x4a,0x4,0x0,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x64,0xfe,0xc0,0xe0,0x50,0x48,0x4e,0x44,0x40,
-+0x0,0x8,0x7c,0x49,0x4a,0x7c,0x49,0x48,0x7a,0x4a,0x49,0x49,0x79,0x48,0x7,0x0,0x40,0x40,0xa0,0x10,0xe,0x24,0xf0,0x0,0x48,0x48,0x48,0x50,0x50,0x24,0xfe,0x0,
-+0x2,0x9,0x7c,0x4b,0x48,0x78,0x4b,0x4a,0x7a,0x4b,0x48,0x49,0x7a,0x44,0x0,0x0,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40,
-+0x0,0x8,0x7c,0x49,0x4b,0x78,0x49,0x4a,0x78,0x49,0x49,0x4a,0x7c,0x48,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x90,0xc,0x84,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x18,0x6,
-+0x0,0xb,0x7e,0x4a,0x4a,0x7a,0x4a,0x4b,0x7a,0x4a,0x4a,0x4a,0x7a,0x42,0x5,0x8,0x4,0xfe,0x20,0x20,0xf8,0x20,0x20,0xfc,0x20,0x20,0xf8,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x7d,0x44,0x44,0x44,0x7c,0x41,0x2,0xc,0x44,0x9e,0x4,0x4,0xdc,0x4,0x4,0xfc,0x54,0x50,0x50,0x90,0x92,0x12,0xe,0x0,
-+0x0,0x8,0x7c,0x49,0x49,0x7b,0x4d,0x49,0x79,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0xc0,0xa0,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x0,0x8,0x7f,0x4a,0x4a,0x7b,0x4a,0x4a,0x7b,0x48,0x49,0x4f,0x78,0x48,0x0,0x0,0x40,0x84,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x1,0x1,0x41,0x7f,0x40,0x9f,0x9,0x32,0xc,0x3f,0xd0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xf8,0x0,0xfe,0x2,0xf4,0x20,0x98,0x60,0xf0,0x1e,0xf0,0x10,0xf0,0x10,0xf0,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x7c,0x47,0x44,0x44,0x7c,0x44,0x1,0x6,0x24,0xae,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0x3,0x78,0x4a,0x49,0x79,0x4a,0x4d,0x78,0x48,0x4b,0x48,0x78,0x48,0x1,0x6,0x28,0xb0,0xa4,0xa8,0x10,0x8,0xe,0xf4,0x40,0x48,0xfc,0x40,0xa0,0xa0,0x1c,0x8,
-+0x7e,0x24,0x18,0xfe,0x2b,0x28,0x48,0x89,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x44,0x7e,0x88,0x50,0x20,0x50,0x8e,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x0,0x0,0x7b,0x48,0x4f,0x78,0x49,0x4b,0x78,0x4b,0x4a,0x4a,0x7a,0x4a,0x7,0x0,0x40,0x48,0xfc,0x40,0xfe,0x80,0x10,0xf8,0x0,0xfc,0x94,0x94,0x94,0x94,0xfe,0x0,
-+0x0,0x7b,0x4a,0x4c,0x49,0x79,0x49,0x49,0x79,0x48,0x48,0x4f,0x78,0x48,0x1,0x2,0x0,0xfe,0x2,0x4,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x24,0xfe,0x0,0x88,0x6,0x2,
-+0x0,0x7,0x78,0x48,0x4b,0x7a,0x4a,0x4b,0x78,0x49,0x48,0x4f,0x79,0x4a,0x4,0x0,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0xc0,
-+0x0,0x9,0x7c,0x48,0x4b,0x7a,0x4d,0x49,0x79,0x49,0x48,0x49,0x78,0x48,0x3,0x0,0x20,0x24,0xa8,0x20,0xfe,0x2,0xfc,0x4,0x4,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x0,0xb,0x7c,0x48,0x4f,0x7a,0x4a,0x4b,0x7a,0x4a,0x4b,0x4a,0x7a,0x4f,0x0,0x0,0x10,0x90,0x90,0x9e,0xe4,0x54,0x54,0xd4,0x54,0x4c,0xc8,0x54,0xf4,0x54,0x62,0x40,
-+0x0,0x2,0x79,0x4f,0x49,0x7a,0x4c,0x4a,0x7b,0x4a,0x4a,0x4d,0x79,0x42,0x4,0x0,0x40,0x48,0x50,0xfe,0x50,0x48,0x46,0x8,0xbc,0xa8,0xa8,0x28,0x7e,0x8,0x8,0x8,
-+0x8,0xff,0x8,0x7f,0x22,0x3e,0x14,0x1f,0xf0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xfe,0x10,0x7c,0x44,0x28,0x10,0x28,0x46,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,
-+0x0,0x3,0x7c,0x54,0x54,0x54,0x54,0x7c,0x54,0x54,0x54,0x54,0x7c,0x44,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x0,0xff,0x8,0x8,0x8,0x8,0x10,0x20,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x4,0x7e,0x54,0x54,0x57,0x54,0x7c,0x54,0x54,0x54,0x55,0x7d,0x42,0x4,0x8,0x40,0x60,0x50,0x50,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,
-+0x0,0x4,0x7e,0x54,0x54,0x55,0x56,0x7c,0x54,0x54,0x54,0x54,0x7c,0x44,0x1,0x2,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x0,0x4,0x7f,0x55,0x55,0x55,0x55,0x7d,0x55,0x55,0x55,0x55,0x7e,0x42,0x4,0x1,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x44,0x82,
-+0x0,0x4,0x7e,0x54,0x55,0x56,0x54,0x7c,0x57,0x54,0x54,0x55,0x7c,0x44,0x0,0x3,0x40,0x40,0xa0,0xa0,0x18,0x16,0x20,0xc8,0x10,0x20,0x44,0x88,0x10,0x20,0xc0,0x0,
-+0x1,0x2,0xc,0x17,0xe0,0x1f,0x9,0x11,0x25,0x2,0x1f,0x11,0x1f,0x11,0x1f,0x10,0x0,0x80,0x60,0xd0,0xe,0xf0,0x20,0x18,0x8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x0,0x4,0x7f,0x56,0x55,0x55,0x55,0x7d,0x55,0x56,0x54,0x54,0x7c,0x45,0x2,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0xd4,0x5c,0x94,0x90,0x12,0xe,0x0,
-+0x0,0x5,0x7e,0x54,0x57,0x54,0x55,0x7d,0x55,0x55,0x55,0x54,0x7d,0x44,0x3,0x0,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x0,0x3f,0x24,0x24,0x24,0x3f,0x0,0xff,0x0,0x1,0x3,0x5,0x19,0x61,0x1,0x1,0x8,0xfc,0x48,0x48,0x48,0xf8,0x4,0xfe,0x80,0x0,0x0,0x60,0x18,0x4,0x0,0x0,
-+0x0,0x3f,0x24,0x24,0x24,0x3f,0x0,0x3f,0x1,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x8,0xfc,0x48,0x48,0x48,0xf8,0x0,0xfc,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,
-+0x0,0x7f,0x44,0x44,0x7f,0x1,0x1,0xff,0x1,0x1,0x1f,0x10,0x10,0x10,0x1f,0x10,0x4,0xfe,0x44,0x44,0xfc,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x7f,0x44,0x44,0x7f,0x1,0xff,0x0,0x3f,0x0,0x3f,0x0,0x1f,0x10,0x10,0x1f,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x0,0xf8,0x0,0xf0,0x10,0x10,0xf0,
-+0x0,0x7f,0x44,0x44,0x7f,0x2,0xff,0x4,0x9,0x3f,0xd1,0x1f,0x11,0x1f,0x1,0x0,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfe,0x40,0x20,0xf8,0x16,0xf0,0x10,0xf4,0x4,0xfc,
-+0x0,0x7f,0x44,0x44,0x7f,0x1,0x3f,0x1,0xff,0x2,0x4,0x1f,0x0,0x24,0x22,0x42,0x4,0xfe,0x44,0x44,0xfc,0x0,0xf8,0x0,0xfe,0x0,0x20,0xf0,0x0,0x88,0x44,0x44,
-+0x0,0x7f,0x44,0x44,0x7f,0x1,0xff,0x1,0x3f,0x24,0x2f,0x21,0x3f,0x21,0x21,0x20,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfe,0x8,0xfc,0x48,0xe8,0x8,0xf8,0x8,0x28,0x10,
-+0x0,0x7f,0x44,0x44,0x7f,0x11,0x11,0x5b,0x52,0x97,0x1a,0x13,0x12,0x12,0x13,0x12,0x4,0xfe,0x44,0x44,0xfc,0x40,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x0,0x7f,0x44,0x7f,0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0xff,0x8,0x8,0x4,0xfe,0x44,0xfc,0x0,0xf8,0x8,0x48,0x48,0x48,0x7c,0x4,0xf4,0x4,0x14,0x8,
-+0x0,0x3f,0x24,0x3f,0x8,0x7f,0x51,0x49,0x7f,0x40,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x8,0xfc,0x48,0xf8,0x20,0xfc,0x14,0x24,0xfc,0x4,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x1,0x1,0x3f,0x1,0x1,0x7f,0x4,0x8,0x1f,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x10,0xf8,0x0,0x8,0xfc,0x0,0x20,0xf0,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0,
-+0x9,0x71,0x4d,0x45,0x75,0x49,0x41,0x75,0x42,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x4,0x3e,0xc4,0x84,0x5c,0x44,0x24,0x1c,0x4,0xf8,0x48,0x48,0x48,0x48,0xfe,0x0,
-+0x0,0x45,0x29,0xff,0x1,0x28,0x44,0x1,0x7f,0x45,0x65,0x55,0x4c,0x44,0xff,0x0,0x4,0xfe,0x54,0x54,0xfc,0x84,0xfe,0x44,0xf4,0x54,0x54,0xf4,0x54,0x74,0x94,0x8,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x82,0x7e,0x0,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x11,0x15,0x19,0x10,0x0,0x0,0x0,0xfc,0x8,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40,
-+0x10,0x12,0x1f,0x20,0x24,0x7e,0x90,0x12,0xff,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x4,0x4,0x4,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x4,0x4,0x14,0x8,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0xfc,0x4,0x8,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x91,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x13,0x0,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x13,0x15,0x19,0x12,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,
-+0x10,0x12,0x1f,0x20,0x24,0x7e,0x90,0x12,0xff,0x10,0x10,0x12,0x14,0x18,0x11,0x6,0x4,0xc,0x10,0x20,0x40,0x84,0xc,0x10,0x20,0x42,0x6,0x8,0x10,0x60,0x80,0x0,
-+0x12,0x11,0x1c,0x22,0x22,0x7e,0x92,0x12,0xfe,0x12,0x12,0x12,0x16,0x1a,0x12,0x2,0x4,0x7e,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x10,0x14,0x1e,0x20,0x21,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x11,0x6,0x0,0x4,0xfe,0x4,0x44,0xa8,0xa8,0x48,0x50,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x14,0x1e,0x20,0x20,0x7f,0x90,0x14,0xfe,0x11,0x10,0x12,0x14,0x18,0x11,0x6,0x40,0x40,0x40,0x40,0x44,0xfe,0x88,0x88,0x88,0x8,0x88,0x50,0x20,0x50,0x8c,0x4,
-+0x10,0x14,0x1f,0x20,0x20,0x7c,0x90,0x14,0xfe,0x11,0x12,0x10,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x60,0xa8,0x26,0x22,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x14,0x1e,0x20,0x20,0x7f,0x90,0x14,0xfe,0x10,0x10,0x15,0x19,0x12,0x4,0x8,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x90,0x10,0x88,0x48,0x46,0x4,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x19,0x11,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,
-+0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x1a,0x12,0x5,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x44,0x48,0x48,0x30,0x10,0x28,0x48,0x86,0x4,
-+0x10,0x14,0x1e,0x20,0x21,0x7e,0x94,0x10,0xfe,0x11,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x40,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,
-+0x10,0x14,0x1e,0x21,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x40,0x20,0x24,0xfe,0x40,0x44,0x7e,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x28,0x10,
-+0x10,0x14,0x1e,0x21,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x15,0x19,0x12,0x4,0x40,0x20,0x4,0xfe,0x0,0x10,0xf8,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x10,0x14,0x1e,0x20,0x24,0x7e,0x90,0x14,0xfe,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x8,0x88,0x48,0x48,0x8,0x88,0x48,0x48,0xe,0x78,0x88,0x8,0x8,0x8,0x8,0x8,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x11,0xfe,0x10,0x10,0x12,0x14,0x18,0x11,0x2,0x20,0x20,0x20,0x20,0xa4,0xac,0xb0,0x20,0x20,0x50,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x13,0x15,0x19,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x15,0x1e,0x20,0x20,0x7c,0x90,0x11,0xfe,0x10,0x10,0x12,0x14,0x18,0x13,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x30,0x28,0x28,0x20,0x24,0xfe,0x0,
-+0x10,0x13,0x1e,0x20,0x20,0x7c,0x91,0x11,0xfd,0x11,0x11,0x11,0x15,0x19,0x17,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x14,0x1e,0x20,0x23,0x7c,0x90,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x14,0x1f,0x20,0x20,0x7d,0x91,0x11,0xff,0x11,0x11,0x11,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x8,0x8,0x8,0x28,0x10,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x11,0x15,0x19,0x11,0x0,0x4,0xfe,0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x4,0xfe,0x0,
-+0x10,0x10,0x1e,0x23,0x20,0x7c,0x91,0x13,0xfd,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x40,0x40,0x44,0xfe,0x80,0xa0,0x24,0xfe,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,
-+0x10,0x14,0x1e,0x20,0x23,0x7c,0x90,0x14,0xfe,0x10,0x10,0x13,0x15,0x19,0x12,0x4,0x40,0x50,0x48,0x48,0xfe,0x40,0x40,0xfc,0x84,0xa4,0xa8,0x28,0x10,0x28,0x46,0x84,
-+0x10,0x14,0x1e,0x20,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x13,0x15,0x19,0x10,0x0,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x24,0x18,0x50,0x92,0x2a,0x4a,0x84,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x13,0x15,0x19,0x11,0x1,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x11,0x14,0x18,0x13,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0xfe,0x0,
-+0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x15,0xfe,0x10,0x10,0x10,0x15,0x1a,0x10,0x0,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0xa4,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x1e,0x23,0x20,0x7c,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x40,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,
-+0x10,0x10,0x1e,0x23,0x20,0x7c,0x90,0x11,0xfd,0x10,0x10,0x12,0x14,0x19,0x13,0x0,0x40,0x20,0x24,0xfe,0x40,0x40,0x88,0x8,0xf0,0x20,0x40,0x40,0x88,0x4,0xfc,0x4,
-+0x10,0x10,0x1e,0x23,0x22,0x7c,0x90,0x14,0xfc,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x40,0x20,0x20,0xfe,0x2,0x84,0x80,0x90,0xb0,0xc0,0x80,0x80,0x82,0x82,0x7e,0x0,
-+0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x12,0xfe,0x12,0x14,0x10,0x15,0x1a,0x14,0x0,0x0,0x44,0x24,0x28,0x88,0x90,0x90,0xa4,0xa2,0xc2,0x82,0x80,0x84,0x84,0x7c,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x19,0x12,0x4,0x4,0xfe,0x4,0x4,0xfc,0x0,0x40,0x44,0x4c,0x50,0x60,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x14,0x1e,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x1a,0x12,0x5,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x8,0x48,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x10,0x15,0x1e,0x20,0x20,0x7c,0x90,0x13,0xfe,0x10,0x10,0x11,0x14,0x18,0x10,0x0,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0xf8,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,
-+0x10,0x14,0x1f,0x20,0x24,0x7f,0x90,0x10,0xfd,0x12,0x14,0x12,0x14,0x18,0x10,0x0,0x40,0x44,0xf8,0x50,0x64,0xfe,0x40,0x88,0xfc,0x40,0x7c,0x4,0x4,0x44,0x28,0x10,
-+0x10,0x10,0x1d,0x20,0x20,0x7c,0x93,0x10,0xfd,0x12,0x14,0x10,0x14,0x18,0x10,0x0,0x40,0x44,0xfc,0x48,0x50,0x64,0xfe,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,
-+0x10,0x17,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x11,0x17,0x18,0x10,0x0,0x4,0xfe,0x8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x3e,0xc8,0x8,0x8,0x8,
-+0x10,0x14,0x1f,0x20,0x21,0x7d,0x93,0x15,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x80,0x84,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x10,0x10,0x1c,0x23,0x22,0x7e,0x92,0x13,0xfe,0x12,0x12,0x17,0x1a,0x12,0x4,0x8,0x10,0x18,0x14,0xfe,0x10,0x10,0x10,0xd4,0x54,0x54,0x54,0x58,0x88,0xa,0xa,0x6,
-+0x10,0x10,0x1e,0x23,0x20,0x7e,0x91,0x10,0xff,0x10,0x10,0x10,0x15,0x19,0x12,0xc,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4,
-+0x10,0x10,0x1e,0x23,0x20,0x7c,0x91,0x14,0xff,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x40,0x40,0x5c,0xe0,0x28,0x32,0xce,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x20,0x2f,0x38,0x22,0x42,0x7c,0xa4,0x27,0xf9,0x21,0x22,0x2a,0x34,0x24,0xa,0x1,0x0,0xfc,0xa4,0xa4,0xa4,0xa8,0xa4,0xe4,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0xa0,0x20,
-+0x10,0x15,0x1e,0x20,0x20,0x7c,0x93,0x10,0xfe,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x20,0x24,0xa4,0xa8,0xb0,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x23,0x3a,0x22,0x43,0x78,0xa0,0x27,0xfc,0x24,0x24,0x24,0x2c,0x34,0x20,0x0,0x8,0xfc,0x8,0x8,0xf8,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x54,0x48,0x40,0x40,
-+0x20,0x27,0x3c,0x24,0x44,0x7c,0xa7,0x24,0xfc,0x24,0x24,0x25,0x2c,0x34,0x27,0x4,0x4,0xfe,0x4,0x44,0x44,0x54,0xfc,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0xfc,0x4,
-+0x10,0x15,0x1f,0x21,0x21,0x7c,0x91,0x14,0xfe,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x20,0x24,0x24,0x24,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x1d,0x21,0x22,0x7e,0x90,0x13,0xfc,0x10,0x10,0x14,0x19,0x12,0x4,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xa8,0xa8,0x24,0x26,0x20,0x20,
-+0x10,0x10,0x1c,0x27,0x20,0x7d,0x92,0x13,0xfc,0x10,0x14,0x12,0x15,0x19,0x12,0x4,0x0,0xc,0x70,0x90,0x90,0x14,0x7e,0x90,0x90,0x90,0x94,0xfe,0x0,0x80,0x46,0x3c,
-+0x10,0x10,0x1d,0x20,0x20,0x7d,0x90,0x10,0xfc,0x13,0x10,0x12,0x14,0x19,0x13,0x0,0x8,0x3c,0xe0,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x40,0x40,0x90,0x8,0xfc,0x4,
-+0x10,0x10,0x1c,0x20,0x21,0x7e,0x94,0x10,0xfc,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x50,0x50,0x94,0x98,0x90,0xb0,0xd2,0x8e,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x1c,0x21,0x22,0x7f,0x90,0x10,0xfc,0x13,0x10,0x10,0x14,0x18,0x17,0x0,0x40,0x40,0xa0,0x10,0x8,0xfe,0x44,0x40,0x40,0xf8,0x40,0x40,0x40,0x48,0xfc,0x0,
-+0x10,0x10,0x1e,0x20,0x21,0x7e,0x91,0x10,0xfe,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x20,0x50,0x88,0x4,0x2,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x11,0x14,0x1e,0x20,0x20,0x7c,0x91,0x10,0xfd,0x10,0x10,0x12,0x15,0x1a,0x10,0x0,0x4,0x8c,0x50,0x20,0x50,0x8c,0x24,0x20,0xfe,0x20,0xa8,0xa4,0x22,0x22,0xa0,0x40,
-+0x10,0x14,0x1e,0x20,0x24,0x7e,0x91,0x10,0xfc,0x11,0x16,0x10,0x15,0x19,0x12,0x4,0x20,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xa0,0xb0,0xa8,0xa8,0x22,0x22,0x1e,0x0,
-+0x10,0x14,0x1e,0x21,0x20,0x7d,0x90,0x10,0xfd,0x10,0x10,0x11,0x14,0x18,0x10,0x0,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x20,0xa0,0x40,
-+0x10,0x14,0x1e,0x21,0x22,0x7d,0x91,0x15,0xff,0x11,0x11,0x13,0x15,0x19,0x10,0x0,0x80,0x80,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x14,0x1e,0x23,0x20,0x7c,0x90,0x15,0xfe,0x10,0x10,0x12,0x14,0x19,0x12,0x0,0x40,0x20,0x24,0xfe,0x40,0x88,0x84,0xfc,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x20,0x24,0x3b,0x41,0x40,0x74,0xa2,0x22,0xf8,0x21,0x22,0x22,0x2c,0x35,0x22,0x0,0x0,0xfc,0x8,0x10,0x20,0x44,0xfe,0x54,0x54,0x54,0x54,0x94,0xa4,0x24,0x54,0x88,
-+0x10,0x10,0x1e,0x23,0x22,0x7c,0x90,0x17,0xfc,0x10,0x11,0x10,0x14,0x18,0x11,0x2,0x40,0x20,0x20,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x90,0xc,0x4,
-+0x11,0x11,0x1d,0x27,0x21,0x7d,0x91,0x11,0xfd,0x12,0x11,0x14,0x19,0x12,0x4,0x0,0x0,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x94,0x54,0x5c,0x14,0x0,
-+0x10,0x10,0x1f,0x20,0x20,0x7b,0x92,0x12,0xfd,0x10,0x10,0x10,0x14,0x18,0x11,0x2,0x88,0x88,0xfe,0x88,0x88,0xfe,0x42,0x44,0xfe,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x20,0x20,0x3b,0x40,0x42,0x79,0xa0,0x27,0xf8,0x20,0x21,0x21,0x2a,0x34,0x28,0x0,0x40,0x40,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xe0,0x50,0x50,0x48,0x46,0x44,0x40,
-+0x20,0x20,0x38,0x47,0x40,0x7a,0xa1,0x20,0xfa,0x22,0x26,0x2a,0x2a,0x32,0x21,0x0,0x20,0x28,0x24,0xfe,0x20,0x20,0xa0,0xa0,0x10,0x90,0x50,0x50,0x90,0x8a,0x86,0x2,
-+0x20,0x22,0x3a,0x42,0x42,0x7a,0xa2,0x22,0xf8,0x20,0x20,0x25,0x28,0x30,0x23,0x0,0x80,0xfc,0xa4,0xa8,0x90,0xa8,0xa6,0xc4,0x80,0xa0,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x90,0x13,0xfc,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x0,0xfe,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x1c,0x21,0x21,0x7e,0x90,0x13,0xfc,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0xa0,0xa4,0xfe,0x20,0x20,0x24,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x1c,0x23,0x20,0x7f,0x90,0x10,0xfc,0x11,0x12,0x10,0x14,0x18,0x12,0x1,0x10,0x58,0x94,0x90,0x90,0xfe,0x90,0x94,0xd4,0x98,0x90,0xb0,0xd2,0x92,0x8a,0x4,
-+0x10,0x14,0x1e,0x21,0x21,0x7d,0x91,0x12,0xfc,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x20,0x20,0x20,0x24,0x24,0x28,0xac,0x72,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x14,0x1f,0x20,0x21,0x7c,0x90,0x10,0xfd,0x10,0x11,0x10,0x14,0x18,0x10,0x0,0x8,0x1c,0xe0,0x44,0x24,0xa8,0x90,0x8,0xfe,0x8,0x8,0x88,0x88,0x8,0x28,0x10,
-+0x10,0x14,0x1f,0x20,0x20,0x7d,0x93,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x12,0x4,0x40,0x24,0xfe,0x80,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x0,
-+0x12,0x11,0x1c,0x22,0x22,0x7f,0x92,0x12,0xfe,0x13,0x12,0x12,0x16,0x1b,0x12,0x2,0x4,0x7e,0x84,0x4,0x4,0xfc,0x94,0x94,0x94,0xfc,0x94,0x94,0x94,0x14,0x4,0xc,
-+0x12,0x11,0x1c,0x22,0x22,0x7e,0x92,0x12,0xfe,0x12,0x12,0x12,0x16,0x1a,0x12,0x2,0x4,0x7e,0x84,0x4,0x4,0xf4,0x94,0x94,0xf4,0x94,0x94,0xf4,0x94,0x4,0x14,0x8,
-+0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x13,0x15,0x19,0x11,0x1,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xfc,0x48,0x50,0x20,0x10,0x48,0x86,0x0,
-+0x10,0x11,0x1e,0x20,0x20,0x7d,0x90,0x13,0xfe,0x14,0x10,0x12,0x14,0x18,0x10,0x3,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xfe,0x2,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x13,0x1e,0x22,0x23,0x7e,0x92,0x13,0xfe,0x12,0x12,0x16,0x1a,0x12,0x4,0x8,0x4,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x4,0xf4,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x20,0x27,0x3d,0x45,0x45,0x7e,0xa5,0x25,0xfd,0x25,0x27,0x25,0x2c,0x34,0x24,0x4,0x0,0x4,0xfe,0x4,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x44,0x4,0x14,0x8,
-+0x10,0x14,0x1f,0x20,0x21,0x7c,0x93,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x10,0x10,0x1f,0x20,0x20,0x7c,0x97,0x10,0xfc,0x11,0x13,0x15,0x11,0x19,0x11,0x1,0x88,0x88,0xfe,0x88,0x40,0x44,0xfe,0x80,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x1f,0x20,0x21,0x7e,0x95,0x10,0xfd,0x11,0x1f,0x11,0x15,0x19,0x12,0x4,0x40,0x44,0xfe,0xa0,0x10,0x4e,0xf4,0x40,0x50,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x90,0x15,0xfe,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xfc,0x8,0x8,0xfe,0x88,0x48,0x8,0x28,0x10,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfc,0x13,0x10,0x10,0x14,0x19,0x12,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfe,0x11,0x11,0x13,0x15,0x19,0x11,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x10,0x14,0xd8,0x10,0x12,0x52,0x8e,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x13,0x15,0x19,0x11,0x1,0x4,0xfe,0x4,0x24,0x24,0xfc,0x24,0x24,0x74,0x54,0x54,0x74,0x54,0x4,0xfc,0x4,
-+0x11,0x11,0x1d,0x22,0x22,0x7c,0x91,0x11,0xfe,0x10,0x13,0x13,0x15,0x19,0x10,0x0,0x0,0x4,0xfe,0x94,0x94,0xa4,0x24,0x54,0x8,0x40,0x28,0x26,0xa,0x8,0xf8,0x0,
-+0x10,0x14,0x1f,0x20,0x21,0x7c,0x90,0x13,0xfc,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x40,0x28,0xfc,0x0,0x8,0x90,0x4,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x12,0x1d,0x20,0x23,0x7c,0x97,0x10,0xfd,0x13,0x15,0x11,0x15,0x19,0x11,0x0,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0xf8,0x16,0x10,0x50,0x24,0x4,0xfc,
-+0x10,0x14,0x1e,0x20,0x21,0x7c,0x90,0x13,0xfe,0x10,0x10,0x11,0x14,0x18,0x10,0x3,0x20,0x24,0xac,0xb0,0x20,0x58,0x86,0x22,0x20,0xa4,0xac,0x30,0x50,0x50,0x8e,0x4,
-+0x21,0x21,0x3a,0x44,0x42,0x79,0xa1,0x27,0xfc,0x24,0x27,0x24,0x2c,0x34,0x27,0x4,0x24,0x24,0x48,0x90,0x48,0x24,0x24,0xfe,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4,
-+0x21,0x21,0x3f,0x41,0x47,0x79,0xa7,0x21,0xf9,0x20,0x27,0x20,0x28,0x30,0x21,0x6,0x0,0x4,0xfe,0x14,0xd4,0x14,0xd4,0x24,0x4c,0x40,0xfe,0x40,0xa0,0x90,0xe,0x4,
-+0x10,0x12,0x1f,0x22,0x22,0x7e,0x93,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x24,0xa8,0x30,0x22,0xa2,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x10,0x12,0x12,0x14,0x18,0x10,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x40,0xa8,0xa4,0x8a,0x8a,0x78,0x0,
-+0x10,0x15,0x1f,0x21,0x21,0x7c,0x91,0x10,0xff,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0xdc,0x54,0x54,0xdc,0x8,0xfc,0x0,0xfe,0x80,0xf8,0x8,0x8,0x8,0x50,0x20,
-+0x20,0x20,0x3b,0x40,0x48,0x7f,0xa0,0x21,0xfe,0x24,0x24,0x27,0x2c,0x34,0x27,0x4,0x8,0x7c,0xc0,0x40,0x44,0xfe,0x40,0x44,0x5e,0x44,0x44,0x5c,0x44,0x44,0xfc,0x4,
-+0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfe,0x11,0x10,0x12,0x14,0x18,0x11,0x6,0x20,0xac,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x13,0x1c,0x21,0x20,0x7d,0x90,0x13,0xfc,0x10,0x11,0x11,0x16,0x1a,0x14,0x1,0x3c,0xc0,0x24,0x24,0xa8,0xfc,0x40,0xfe,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x14,0x1f,0x20,0x21,0x7d,0x91,0x11,0xfe,0x10,0x10,0x10,0x15,0x1a,0x14,0x0,0x40,0x24,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x40,0x44,0xa8,0x90,0x90,0xa8,0xc6,0x84,
-+0x10,0x11,0x1c,0x20,0x23,0x7c,0x90,0x11,0xfc,0x13,0x10,0x11,0x14,0x18,0x10,0x3,0x20,0x24,0xa8,0x20,0xfe,0x70,0xa8,0x26,0x40,0xfe,0x88,0x8,0xd0,0x30,0xcc,0x4,
-+0x21,0x21,0x39,0x45,0x43,0x79,0xa1,0x21,0xfb,0x25,0x29,0x21,0x29,0x31,0x21,0x1,0x20,0x20,0x3c,0x44,0xa8,0x10,0x28,0x48,0xfe,0x8,0x48,0x28,0x28,0x8,0x28,0x10,
-+0x21,0x21,0x3f,0x41,0x47,0x7d,0xa7,0x21,0xfb,0x22,0x22,0x22,0x2a,0x30,0x21,0x6,0x10,0x14,0xfe,0x14,0xfc,0x10,0xfe,0x12,0xfe,0x8,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfe,0x12,0x12,0x16,0x1a,0x12,0x4,0x8,0x4,0xfe,0x24,0x24,0xfc,0x0,0xfc,0x84,0x84,0xfc,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x11,0x11,0x1f,0x21,0x23,0x7e,0x93,0x12,0xff,0x10,0x10,0x17,0x14,0x18,0x11,0x6,0x10,0x14,0xfe,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x1c,0x8,
-+0x20,0x27,0x38,0x43,0x42,0x7a,0xa3,0x20,0xff,0x25,0x24,0x27,0x2c,0x34,0x24,0x4,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xfc,0x44,0x44,0x54,0x8,
-+0x10,0x10,0x1d,0x21,0x23,0x7d,0x91,0x11,0xfd,0x11,0x13,0x10,0x14,0x19,0x12,0x4,0xa0,0xa8,0xfc,0x20,0xf8,0x20,0xf8,0x20,0xfe,0x0,0xf8,0x88,0x9c,0x4,0x28,0x10,
-+0x20,0x20,0x39,0x43,0x44,0x7b,0xa2,0x23,0xf8,0x27,0x20,0x23,0x28,0x37,0x20,0x0,0x40,0xa0,0x10,0xf8,0x6,0xf8,0x8,0xf8,0x1c,0xe0,0x40,0xf8,0x40,0xfe,0x40,0xc0,
-+0x20,0x27,0x3c,0x44,0x45,0x7d,0xa6,0x20,0xff,0x24,0x24,0x27,0x2c,0x34,0x27,0x4,0x84,0x7e,0x24,0x24,0x24,0xa4,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,
-+0x10,0x14,0x1e,0x20,0x23,0x7c,0x90,0x15,0xfe,0x11,0x11,0x11,0x15,0x19,0x13,0x0,0x0,0x88,0x50,0x4,0xfe,0x50,0x8c,0x4,0x0,0xfc,0x54,0x54,0x54,0x54,0xfe,0x0,
-+0x10,0x12,0x1f,0x22,0x24,0x7f,0x90,0x10,0xff,0x10,0x13,0x10,0x14,0x1b,0x10,0x0,0x40,0x20,0xfe,0x2,0x4,0xfe,0x40,0xc4,0x68,0xb0,0x30,0x68,0xa8,0x26,0xa4,0x40,
-+0x10,0x12,0x1f,0x22,0x24,0x7d,0x91,0x11,0xfd,0x11,0x11,0x17,0x14,0x19,0x12,0x4,0x40,0x20,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4,
-+0x10,0x13,0x1c,0x20,0x21,0x7d,0x91,0x15,0xfe,0x11,0x10,0x13,0x14,0x19,0x12,0x0,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x26,0x22,0x60,
-+0x20,0x22,0x39,0x40,0x47,0x7c,0xa9,0x21,0xf9,0x21,0x20,0x23,0x28,0x30,0x2f,0x0,0x40,0x48,0x50,0x40,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x40,0xf8,0x40,0x44,0xfe,0x0,
-+0x20,0x23,0x3a,0x43,0x42,0x7b,0xa0,0x27,0xfc,0x27,0x20,0x23,0x29,0x30,0x23,0xc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0xa4,0xfc,0x0,0xf8,0x10,0xe0,0x10,0xe,
-+0x20,0x27,0x3c,0x47,0x44,0x7f,0xa0,0x21,0xfb,0x20,0x20,0x27,0x29,0x32,0x24,0x0,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x80,0x8,0xf0,0x20,0x48,0xfc,0x50,0x4c,0x44,0xc0,
-+0x20,0x27,0x3c,0x45,0x44,0x7f,0xa4,0x25,0xfc,0x25,0x25,0x25,0x2d,0x35,0x29,0x11,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c,
-+0x22,0x21,0x39,0x47,0x42,0x7a,0xa3,0x22,0xfa,0x22,0x22,0x22,0x2c,0x34,0x29,0x0,0x20,0x20,0x24,0xfe,0x40,0x20,0xbc,0xd0,0x94,0xfe,0x90,0x90,0xa8,0xa6,0xc2,0x0,
-+0x24,0x22,0x38,0x4f,0x44,0x7c,0xa7,0x25,0xfd,0x25,0x25,0x2d,0x35,0x25,0xb,0x11,0x40,0x40,0x44,0xfe,0x80,0x0,0x7e,0x14,0x10,0x54,0x5e,0x50,0x50,0x70,0x9e,0x4,
-+0x20,0x28,0x3f,0x41,0x40,0x7f,0xa4,0x24,0xff,0x24,0x25,0x25,0x2d,0x35,0x24,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x4,0xc,
-+0x10,0x13,0x1c,0x21,0x21,0x7d,0x90,0x15,0xff,0x11,0x11,0x11,0x14,0x1b,0x10,0x0,0x4,0xfe,0x50,0xfc,0x54,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,
-+0x20,0x2f,0x38,0x4a,0x49,0x7f,0xa8,0x2a,0xfa,0x2a,0x2b,0x28,0x38,0x29,0x12,0x24,0x4,0xfe,0x8,0x28,0x48,0xee,0x92,0xa4,0xa8,0xa8,0xe8,0xa8,0x94,0x14,0x24,0x42,
-+0x20,0x24,0x3a,0x40,0x4f,0x79,0xa0,0x27,0xf8,0x23,0x20,0x27,0x28,0x30,0x21,0x6,0xa0,0xa4,0xa8,0xa0,0xfe,0x10,0xa0,0xfc,0x40,0xf8,0x40,0xfc,0x40,0xa0,0x1c,0x8,
-+0x10,0x10,0x1d,0x23,0x21,0x7d,0x91,0x11,0xfc,0x13,0x10,0x11,0x15,0x19,0x11,0x1,0x80,0xf8,0x10,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,
-+0x22,0x21,0x3f,0x40,0x47,0x7c,0xa4,0x27,0xf8,0x27,0x20,0x21,0x2f,0x31,0x25,0x2,0x10,0x10,0xf4,0x1e,0xe4,0x54,0x54,0xd4,0x14,0xc8,0x88,0xd4,0x14,0x24,0x22,0x40,
-+0x24,0x22,0x39,0x44,0x47,0x7c,0xa5,0x25,0xfd,0x25,0x25,0x24,0x2d,0x36,0x24,0x4,0x4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x44,0x4c,
-+0x11,0x10,0x1f,0x20,0x22,0x7d,0x90,0x17,0xfc,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x8,0x90,0xfc,0x90,0x94,0x98,0x90,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,
-+0x20,0x20,0x3f,0x45,0x4a,0x78,0xa3,0x22,0xfb,0x20,0x23,0x22,0x2b,0x32,0x20,0x0,0x80,0x40,0xfe,0x12,0x4c,0x40,0xf8,0x48,0xf8,0x40,0xf8,0x48,0xf8,0x48,0x40,0x40,
-+0x20,0x27,0x39,0x41,0x41,0x7f,0xa4,0x24,0xfc,0x27,0x21,0x21,0x29,0x31,0x2a,0x4,0x4,0x7e,0x44,0x44,0x7c,0x10,0xfe,0x92,0x92,0x92,0xfe,0x10,0x10,0x14,0xfe,0x42,
-+0x20,0x23,0x38,0x42,0x41,0x7b,0xa4,0x23,0xfa,0x22,0x23,0x20,0x29,0x30,0x2f,0x0,0x28,0xb0,0xa4,0x98,0x10,0xf8,0x4,0xfa,0x8,0x8,0xf8,0x0,0x10,0xa4,0xfe,0x0,
-+0x21,0x27,0x39,0x41,0x42,0x7f,0xa2,0x23,0xfa,0x23,0x22,0x23,0x29,0x30,0x23,0xc,0x8,0xfe,0x28,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xf8,0x10,0xe0,0x18,0x6,
-+0x20,0x27,0x3c,0x44,0x47,0x79,0xa3,0x24,0xf8,0x27,0x24,0x27,0x28,0x30,0x27,0x0,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xfc,0x84,0x84,0xf4,0x94,0xf4,0x84,0xa4,0xf4,0x8,
-+0x20,0x28,0x3f,0x41,0x48,0x7f,0xa0,0x23,0xfe,0x23,0x22,0x2b,0x30,0x25,0x9,0x0,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x24,0xa,0xf8,
-+0x20,0x20,0x3f,0x45,0x41,0x7a,0xa7,0x2d,0xf3,0x24,0x2b,0x20,0x29,0x32,0x24,0x0,0x80,0x40,0xfe,0x2,0xbc,0xa4,0xa8,0x10,0xf8,0x6,0xf8,0x40,0x50,0x4c,0x44,0xc0,
-+0x20,0x20,0x3f,0x44,0x47,0x7c,0xa7,0x25,0xfd,0x25,0x25,0x2d,0x34,0x25,0x9,0x12,0x40,0x24,0xfe,0x90,0xfc,0x94,0xfc,0x10,0xd4,0x18,0x52,0x8e,0x0,0x54,0x52,0x2,
-+0x20,0x20,0x3b,0x40,0x4f,0x78,0xa3,0x2a,0xff,0x22,0x23,0x20,0x2b,0x30,0x2f,0x0,0x8,0x1c,0xe0,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x40,0xf8,0x40,0xfe,0x0,
-+0x20,0x23,0x20,0x3c,0x50,0x93,0x12,0xfe,0x12,0x13,0x10,0x28,0x24,0x44,0x81,0x0,0x44,0xe4,0x44,0x44,0x44,0xc4,0x44,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x44,0x84,
-+0x20,0x20,0x22,0x3e,0x52,0x92,0x15,0xfc,0x10,0x10,0x13,0x28,0x24,0x40,0x8f,0x0,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0xe2,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x20,0x20,0x20,0x3d,0x51,0x93,0x15,0xfd,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x1,0x80,0xa0,0x94,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x0,0xe,0xf2,0x12,0x12,0xfe,0x13,0x32,0x3a,0x56,0x52,0x92,0x12,0x13,0x12,0x10,0x20,0x20,0x20,0x20,0x20,0x24,0xac,0x30,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e,0x0,
-+0x0,0xc,0xf0,0x13,0x12,0xfe,0x12,0x33,0x38,0x54,0x51,0x92,0x14,0x10,0x10,0x10,0x40,0x50,0x78,0xc0,0x40,0x40,0x44,0xfe,0x44,0xc4,0x44,0x54,0x48,0x40,0x40,0x40,
-+0x0,0xc,0xf0,0x17,0x10,0xfc,0x13,0x30,0x38,0x55,0x51,0x92,0x14,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0xc0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x0,0xc,0xf0,0x10,0x17,0xfc,0x10,0x30,0x38,0x55,0x51,0x91,0x12,0x14,0x18,0x10,0x40,0x50,0x48,0x48,0xfe,0x40,0x40,0xc0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,
-+0x0,0xd,0xf1,0x11,0x11,0xfd,0x11,0x30,0x38,0x57,0x52,0x92,0x12,0x12,0x13,0x12,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x0,0xc,0xf0,0x17,0x10,0xfc,0x11,0x31,0x3a,0x54,0x50,0x92,0x12,0x12,0x13,0x10,0x80,0xa0,0x94,0xfe,0xa0,0xa0,0x22,0x22,0x1e,0x40,0x40,0x48,0x48,0x48,0xf8,0x8,
-+0x8,0xc,0xf7,0x12,0x11,0xfc,0x13,0x30,0x38,0x54,0x57,0x90,0x10,0x10,0x11,0x10,0x8,0x3c,0xc0,0x48,0x50,0x0,0xf8,0x10,0x60,0x44,0xfe,0x40,0x40,0x40,0x40,0x80,
-+0x0,0xc,0xf3,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x4c,0x50,0x20,0x90,0xe,0x4,
-+0x4,0xf,0xf1,0x11,0x15,0xff,0x11,0x31,0x38,0x57,0x50,0x90,0x10,0x11,0x12,0x10,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20,
-+0x0,0xc,0xf0,0x10,0x11,0xfe,0x14,0x31,0x38,0x54,0x50,0x95,0x15,0x19,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0xf0,0x10,0xa0,0x40,0x44,0x12,0x12,0xf0,0x0,
-+0x0,0xc,0xf7,0x10,0x13,0xfe,0x13,0x32,0x3b,0x56,0x53,0x92,0x1f,0x11,0x12,0x14,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4,
-+0x0,0xd,0xf1,0x11,0x11,0xfd,0x11,0x31,0x39,0x56,0x50,0x91,0x12,0x10,0x11,0x16,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x44,0x7a,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x0,0xc,0xf7,0x10,0x12,0xf9,0x17,0x30,0x3f,0x54,0x55,0x95,0x15,0x14,0x17,0x14,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x4,0xfe,0x4,0xf4,0x14,0xf4,0x4,0xfc,0x4,
-+0x0,0x6,0x78,0x9,0xff,0x1c,0x2a,0x48,0x14,0x2a,0x6b,0x9c,0x1a,0x69,0x8,0x18,0x20,0x20,0x24,0x3e,0xa0,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x4,0xe,0xf1,0x12,0xfe,0x10,0x38,0x56,0x92,0x7c,0x44,0x7d,0x46,0x7c,0x44,0x1,0x84,0xfe,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x40,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e,
-+0x4,0xb,0xf0,0x17,0x14,0xff,0x11,0x37,0x39,0x57,0x51,0x9f,0x11,0x13,0x1d,0x11,0x40,0xfe,0x0,0xbc,0xa4,0xbc,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4,
-+0x10,0x10,0x21,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x7e,0x42,0x4,0xb,0x8,0x1c,0xe0,0x0,0x0,0x0,0xfc,0x4,0x84,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x10,0x10,0x20,0x7f,0x48,0x49,0x4a,0x4d,0x79,0x48,0x48,0x48,0x48,0x79,0x42,0xc,0x80,0x40,0x44,0xfe,0x0,0x10,0xc,0x14,0x10,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x10,0x11,0x21,0x79,0x49,0x4a,0x48,0x4f,0x78,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x8,0xfe,0x8,0x1c,0x2a,0x48,0x89,0xa,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x10,0x10,0xf8,0x10,0xf0,0x10,0x10,0xf0,0x10,
-+0x10,0x17,0x20,0x7a,0x4f,0x48,0x49,0x4a,0x7f,0x4a,0x4a,0x4b,0x4a,0x7a,0x4b,0x2,0x38,0xc0,0x48,0x54,0xfe,0xe0,0x50,0x48,0xfe,0x48,0x48,0xf8,0x48,0x48,0xf8,0x8,
-+0x2,0x7,0x7a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x2a,0x5e,0x40,0x80,0x10,0x10,0x50,0x54,0x7e,0x90,0x14,0xfe,0x10,0x28,0x26,0x42,0x80,0x40,0x3e,0x4,
-+0x10,0x12,0xff,0x28,0x26,0x42,0xbc,0x0,0xfe,0x20,0x7c,0x4,0x4,0x44,0x29,0x12,0x0,0xc,0xf8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xc8,0xd4,0x74,0x2,
-+0x0,0x7f,0x4,0x2,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x21,0x21,0x20,0x10,0xf8,0x20,0xc0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x20,0x20,0x21,0x29,0xfd,0x29,0x29,0x29,0x29,0x29,0x28,0x2a,0x4d,0x48,0x80,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x4,0x4,0x2,0xff,0x0,0x4,0x1f,0x14,0x12,0x10,0x10,0x1f,0x0,0x7f,0x0,0x0,0x80,0x44,0x7e,0x80,0x82,0x62,0xfe,0x20,0x20,0xa0,0x44,0xfe,0x4,0xe4,0x14,0x8,
-+0x0,0x40,0x49,0x59,0x61,0x45,0x45,0x3d,0x11,0x11,0xfe,0x10,0x13,0x10,0x10,0x10,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x11,0x51,0x7f,0x53,0x95,0x11,0x11,0x29,0x28,0x2a,0x4d,0x48,0x80,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x11,0x15,0xff,0x11,0x11,0x11,0x7d,0x45,0x44,0x44,0x47,0x7c,0x44,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x10,0x15,0xff,0x21,0x51,0x95,0xff,0x11,0x39,0x34,0x54,0x93,0x10,0x50,0x20,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x10,0x14,0x1f,0x11,0x15,0x7f,0x45,0x45,0x7d,0x45,0x40,0x40,0x43,0x40,0x80,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x20,0x20,0x25,0x7f,0x85,0x5,0x75,0x55,0x55,0x55,0x74,0x54,0x5,0x8,0x28,0x10,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x0,0x6,0x79,0x51,0x51,0x55,0x7f,0x49,0x49,0x49,0x48,0x44,0x45,0x54,0x6a,0x1,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x94,0x8,
-+0x8,0x8,0x32,0xc,0x10,0x3e,0x0,0xff,0x2,0x1f,0x12,0x11,0x1f,0x0,0x7f,0x0,0x20,0x20,0xc8,0x30,0x40,0xf8,0x4,0xfe,0x0,0xf0,0x10,0x24,0xfe,0x4,0xe4,0xc,
-+0x0,0x1,0xff,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x43,0x0,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x8,0x8,0xfe,0x8,0xe,0x78,0x9,0x1a,0x1f,0x12,0x11,0x1f,0x0,0x7f,0x0,0x0,0x40,0x48,0xfc,0x48,0xc8,0xaa,0xa,0x6,0xe0,0x20,0x44,0xfe,0x4,0xf4,0x4,0x18,
-+0x0,0xc,0x71,0x11,0x11,0x15,0xff,0x11,0x15,0x7f,0x44,0x44,0x47,0x7c,0x44,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x12,0x12,0x12,0x22,0x3f,0x62,0xa6,0x27,0x2a,0x2a,0x32,0x22,0x22,0x22,0x22,0x22,0x10,0x24,0x7e,0x44,0xd4,0x44,0x54,0x48,0xc0,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x2,0x1,0xff,0x4,0x14,0x25,0x46,0x1f,0x12,0x11,0x10,0x1f,0x0,0x7f,0x0,0x0,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0xe0,0x20,0x20,0x44,0xfe,0x4,0xf4,0x4,0x18,
-+0x8,0xa,0x7f,0x8,0x48,0x7f,0x41,0x82,0x3e,0x4,0x8,0xfe,0xb,0x8,0x28,0x10,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x0,0x1,0xff,0x0,0x0,0x77,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x55,0x55,0x0,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x8,0x28,0x2a,0x3f,0x48,0x88,0xa,0xff,0x0,0x3e,0x22,0x22,0x23,0x22,0x3e,0x22,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x0,0x28,0x45,0x93,0x11,0x29,0x45,0x83,0x7d,0x45,0x44,0x44,0x47,0x7c,0x44,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x40,0x2f,0x11,0x49,0x49,0x7f,0x49,0x59,0x5d,0x5b,0x69,0x49,0x49,0x41,0x45,0x42,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x22,0x14,0x7f,0x9,0x9,0x7f,0x48,0x48,0x7f,0x9,0x19,0x1d,0x2a,0xc8,0x8,0x8,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x4,0x6,0x7d,0x4,0x4,0xff,0x14,0x54,0x5c,0x54,0x52,0x52,0x5e,0xf1,0x40,0x0,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x82,0x8a,0x4,
-+0x22,0x22,0xff,0x22,0x22,0x0,0x7f,0x49,0x49,0x49,0x7f,0x49,0x49,0x49,0x7f,0x41,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x8,0x9,0xff,0x14,0x12,0x29,0x7f,0xc9,0x7f,0x49,0x49,0x7f,0x8,0xa,0xc,0x8,0x10,0x24,0xfe,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x8,0x11,0x7f,0x49,0x49,0x7f,0x49,0x51,0x7f,0x10,0x29,0xff,0x8,0x8,0x8,0x8,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x92,0xfa,0x2,0xa,0x4,
-+0x10,0xa,0xff,0x0,0x3e,0x22,0x22,0x3e,0x0,0x7e,0x4,0xff,0x9,0x8,0x28,0x10,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x20,0x27,0x25,0xfd,0x25,0x27,0x25,0x75,0x55,0x57,0x55,0x55,0x75,0x49,0x13,0x0,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x0,0x77,0x55,0x55,0x77,0x0,0x7f,0x0,0xff,0x20,0x3e,0x2,0x2,0x2,0x14,0x8,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0xc0,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x0,0x41,0x22,0x0,0xff,0x0,0x22,0x22,0x55,0xff,0x22,0x22,0x55,0xff,0x11,0x0,0x10,0x24,0x7e,0x44,0xd4,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x1,0x7f,0x49,0x49,0x7f,0x40,0x5f,0x51,0x51,0x5f,0x51,0x5f,0x51,0x51,0x9f,0x11,0x10,0xa4,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x7c,0x8,0xff,0x32,0x54,0x91,0x32,0x1f,0x12,0x11,0x10,0x1f,0x0,0x7f,0x0,0x0,0x80,0xfe,0x88,0x50,0x20,0x50,0x8e,0xe0,0x20,0x20,0x44,0xfe,0x4,0xf4,0x4,0x18,
-+0x2,0x7,0xf8,0x41,0x2a,0x2a,0x40,0x7e,0x88,0x9,0xff,0x8,0x49,0x49,0x7f,0x1,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x82,0x12,0xfa,0x2,0xa,0x4,
-+0x22,0x14,0x7f,0x14,0x7f,0x15,0xff,0x15,0x7f,0x14,0x36,0x55,0x94,0x14,0x14,0x14,0x10,0x24,0x7e,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x0,0x77,0x55,0x55,0x55,0x55,0x22,0x55,0x10,0xff,0x22,0x22,0x14,0x8,0x16,0x61,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0xfe,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x8,0x5,0x7f,0x52,0x52,0x52,0x7f,0x52,0x52,0x5e,0x40,0x52,0x52,0x6d,0x80,0x0,0x10,0x24,0xfe,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x0,0xee,0x22,0xaa,0x66,0xaa,0x32,0x10,0x28,0x46,0x9a,0x60,0x19,0x64,0x8,0x70,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8,
-+0x8,0x9,0xff,0x55,0x22,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x8,0x2a,0x49,0x88,0x18,0x10,0x24,0xfe,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x8a,0x4,
-+0x14,0x14,0x3f,0x24,0x64,0xbf,0x24,0x24,0x3f,0x24,0x24,0x3f,0x20,0x55,0x54,0x80,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x8a,0x84,
-+0x8,0xff,0x22,0x3e,0x2a,0x49,0x9a,0x1f,0x12,0x11,0x10,0x1f,0x0,0x7f,0x0,0x0,0x28,0xa4,0xfe,0x20,0x52,0x92,0xe,0xe0,0x20,0x20,0x44,0xfe,0x4,0xe4,0x14,0x8,
-+0x2,0x7f,0x14,0x8,0xff,0x1a,0x28,0x49,0x7f,0x55,0x63,0x5d,0x55,0x5d,0x41,0x43,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0xc0,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4,
-+0x10,0x23,0x7c,0x45,0x57,0x45,0x55,0x49,0x41,0x7f,0x2,0x12,0xfa,0x2,0xa,0x5,0x88,0xfe,0xa8,0xfc,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xf8,0x48,0x30,0x48,0x86,
-+0x0,0x7c,0x45,0x7c,0x10,0x5d,0x50,0xfe,0x4,0x1f,0x12,0x11,0x1f,0x0,0x7f,0x0,0x80,0xf8,0x50,0x20,0x50,0xfe,0x88,0xf8,0x0,0xe0,0x20,0x44,0xfe,0x4,0xe4,0x18,
-+0x22,0xff,0x22,0x77,0x55,0x77,0x24,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x24,0x3f,0x20,0x10,0xa4,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x8a,0x4,
-+0x0,0x0,0x1f,0x10,0x90,0x50,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x20,0x41,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,
-+0x0,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0xa4,0x94,0x88,0x80,0x80,0x80,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x51,0x11,0x31,0x51,0xd1,0x12,0x22,0x24,0x48,0x10,0x80,0x44,0xfe,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x0,0x0,0x1f,0x10,0x90,0x50,0x54,0x14,0x34,0x54,0xd4,0x14,0x24,0x27,0x40,0x0,0x80,0x44,0xfe,0x0,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,0x4,
-+0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x14,0x35,0x54,0xd4,0x14,0x28,0x28,0x51,0x2,0x80,0x44,0xfe,0x0,0xfc,0x0,0x40,0x44,0xfe,0x44,0x44,0x44,0x84,0x84,0x28,0x10,
-+0x0,0x0,0x1f,0x10,0x90,0x50,0x5f,0x10,0x30,0x51,0xd1,0x11,0x22,0x22,0x44,0x8,0x80,0x44,0xfe,0x80,0xa0,0x94,0xfe,0xa0,0xa0,0x20,0x20,0x20,0x22,0x22,0x1e,0x0,
-+0x0,0x0,0x1f,0x12,0x92,0x52,0x5f,0x12,0x32,0x52,0xd3,0x12,0x22,0x22,0x43,0x2,0x80,0x44,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x10,0x33,0x52,0xd2,0x12,0x23,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x8,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x0,0x0,0x1f,0x10,0x90,0x53,0x52,0x12,0x33,0x52,0xd2,0x13,0x22,0x20,0x4f,0x0,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x0,0xfe,0x0,
-+0x0,0x0,0x1f,0x11,0x91,0x51,0x52,0x12,0x34,0x58,0xd0,0x10,0x20,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x8,0xfc,0x80,0x90,0xf8,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x1f,0x12,0x92,0x53,0x54,0x1b,0x32,0x52,0xd3,0x12,0x22,0x22,0x41,0x0,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0xc8,0x48,0x48,0xc8,0x28,0x12,0x2,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x90,0x50,0x57,0x10,0x30,0x50,0xd3,0x10,0x20,0x20,0x4f,0x0,0x80,0x44,0xfe,0x0,0x80,0x48,0xfc,0x40,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x11,0x32,0x57,0xd0,0x10,0x21,0x22,0x47,0x0,0x80,0x44,0xfe,0x80,0x44,0xfe,0x80,0x0,0x10,0xe0,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x0,0x0,0x1f,0x12,0x92,0x52,0x5f,0x12,0x32,0x52,0xd2,0x12,0x24,0x24,0x4a,0x11,0x80,0x44,0xfe,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0x24,
-+0x0,0x0,0x1f,0x10,0x9f,0x51,0x51,0x19,0x35,0x55,0xd5,0x15,0x21,0x21,0x5f,0x0,0x80,0x44,0xfe,0x0,0xfc,0x20,0x20,0x24,0x24,0x28,0x28,0x30,0x20,0x24,0xfe,0x0,
-+0x1,0x0,0x3f,0x20,0xbf,0x60,0x2f,0x20,0x6f,0xa8,0x2f,0x20,0x41,0x41,0x86,0x18,0x0,0x84,0xfe,0x80,0xfe,0x80,0xf8,0x88,0xf8,0x80,0xfc,0x84,0x54,0x48,0x20,0x1c,
-+0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x10,0x37,0x50,0xd0,0x15,0x25,0x29,0x40,0x0,0x80,0x44,0xfe,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x80,0x64,0x2a,0xa,0xf8,0x0,
-+0x0,0x0,0x1f,0x11,0x97,0x51,0x51,0x17,0x34,0x58,0xd3,0x10,0x20,0x21,0x42,0xc,0x80,0x44,0xfe,0x10,0xfc,0x10,0x10,0xfe,0x82,0x84,0xf8,0x88,0x88,0x8,0x28,0x10,
-+0x0,0x0,0x1f,0x10,0x97,0x50,0x53,0x11,0x31,0x5f,0xd0,0x13,0x22,0x22,0x43,0x2,0x80,0x44,0xfe,0x0,0xfc,0x80,0xf0,0x10,0x14,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8,
-+0x0,0x0,0x1f,0x10,0x92,0x52,0x52,0x15,0x38,0x50,0xd7,0x10,0x20,0x20,0x4f,0x0,0x80,0x44,0xfe,0x40,0x48,0x48,0x48,0x54,0xe2,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0,
-+0x0,0x0,0x1f,0x12,0x91,0x55,0x54,0x17,0x34,0x54,0xd4,0x15,0x26,0x24,0x44,0x4,0x80,0x44,0xfe,0x0,0xfc,0x44,0x44,0xf4,0x44,0xc4,0xe4,0x54,0x4c,0x44,0x54,0x8,
-+0x0,0x0,0x1f,0x10,0x94,0x52,0x52,0x18,0x35,0x50,0xd2,0x14,0x2c,0x24,0x44,0x3,0x80,0x44,0xfe,0x20,0x20,0xa8,0xa4,0xa2,0x2a,0x28,0x30,0x10,0x20,0x40,0x80,0x0,
-+0x0,0x0,0x1f,0x10,0x9f,0x50,0x53,0x1c,0x35,0x52,0xdd,0x11,0x22,0x2c,0x41,0x0,0x80,0x44,0xfe,0x0,0xfc,0x80,0x8,0x98,0x60,0x40,0xe0,0x50,0x4e,0x44,0x40,0x80,
-+0x0,0x0,0x1f,0x11,0x91,0x5f,0x51,0x11,0x3f,0x51,0xd1,0x1f,0x21,0x21,0x41,0x1,0x80,0x44,0xfe,0x20,0x24,0x3e,0x20,0x28,0x3c,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,
-+0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x17,0x34,0x55,0xd5,0x15,0x25,0x24,0x47,0x4,0x80,0x44,0xfe,0x0,0xfc,0x44,0x44,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x4,0xfc,0x4,
-+0x0,0x0,0x1f,0x10,0x93,0x50,0x5f,0x11,0x36,0x50,0xdf,0x11,0x23,0x20,0x41,0x6,0x80,0x44,0xfe,0x0,0xf8,0x40,0xfe,0x50,0x4c,0x80,0xfe,0x10,0x20,0xc0,0x30,0x8,
-+0x1,0x0,0x3f,0x22,0xac,0x68,0x28,0x2e,0x68,0xa8,0x2f,0x28,0x41,0x42,0x8c,0x30,0x0,0x84,0xfe,0x80,0xb8,0x88,0x88,0xb8,0x88,0x88,0xf8,0x88,0x40,0x20,0x1e,0x4,
-+0x0,0x0,0x1f,0x14,0x92,0x50,0x5f,0x12,0x33,0x52,0xd2,0x14,0x24,0x2a,0x51,0x0,0x80,0x44,0xfe,0x0,0x10,0x10,0xe8,0x28,0xa4,0xc6,0xb0,0x88,0xa0,0x98,0x8,0x0,
-+0x1,0x0,0x3f,0x24,0xa2,0x6f,0x28,0x2f,0x68,0xaf,0x20,0x3f,0x40,0x40,0x80,0x0,0x0,0x84,0xfe,0x10,0x20,0xf8,0x88,0xf8,0x88,0xf8,0x80,0xfe,0x80,0x80,0x80,0x80,
-+0x0,0x0,0x1f,0x11,0x9f,0x51,0x57,0x15,0x35,0x57,0xd1,0x13,0x25,0x29,0x41,0x1,0x80,0x44,0xfe,0x0,0xe4,0x4,0xd4,0x54,0x54,0xd4,0x14,0x94,0x54,0x44,0x14,0x8,
-+0x1,0x0,0x3f,0x20,0xaf,0x64,0x22,0x3f,0x62,0xa4,0x28,0x37,0x40,0x40,0x9f,0x0,0x0,0x84,0xfe,0x80,0xf8,0x90,0xa4,0xfe,0x20,0x90,0x8e,0xf4,0x80,0x88,0xfc,0x0,
-+0x0,0x0,0x1f,0x12,0x92,0x54,0x55,0x1c,0x34,0x55,0xd4,0x17,0x24,0x24,0x44,0x7,0x80,0x44,0xfe,0x0,0xf8,0x8,0xfe,0x40,0xfc,0x20,0x24,0xfe,0x20,0x50,0x8e,0x4,
-+0x0,0x0,0x1f,0x11,0x9f,0x50,0x57,0x10,0x3f,0x51,0xd2,0x17,0x28,0x30,0x47,0x0,0x80,0x44,0xfe,0x20,0xfc,0x80,0xf8,0x80,0xfe,0x0,0x8,0xfc,0x40,0x44,0xfe,0x0,
-+0x0,0x0,0x1f,0x10,0x92,0x51,0x57,0x11,0x36,0x50,0xdf,0x11,0x23,0x20,0x41,0x6,0x80,0x44,0xfe,0x40,0x48,0x50,0xfc,0x50,0x4c,0x80,0xfe,0x10,0x20,0xc0,0x30,0x8,
-+0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x17,0x34,0x57,0xd4,0x14,0x27,0x24,0x44,0x5,0x80,0x44,0xfe,0x0,0xbc,0x84,0x84,0xbc,0x0,0xfc,0x24,0x28,0x90,0x28,0x46,0x84,
-+0x1,0x0,0x3f,0x20,0xaf,0x64,0x22,0x21,0x62,0xbc,0x27,0x24,0x47,0x40,0x9f,0x0,0x0,0x84,0xfe,0x0,0xf8,0x90,0x20,0xc0,0x20,0x9e,0xf4,0x90,0xf0,0x88,0xfc,0x4,
-+0x0,0x0,0x1f,0x12,0x9f,0x52,0x5f,0x12,0x3f,0x52,0xd1,0x12,0x2a,0x2a,0x51,0x0,0x80,0x44,0xfe,0x0,0xfc,0x24,0xa4,0x24,0xd4,0x88,0x0,0xc0,0x54,0x12,0xf2,0x0,
-+0x1,0x0,0x3f,0x22,0xbf,0x62,0x2f,0x28,0x6f,0xa8,0x2f,0x20,0x5f,0x41,0x86,0x18,0x0,0x84,0xfe,0x20,0xfc,0x20,0xf8,0x8,0xf8,0x8,0xf8,0x80,0xfe,0x40,0x20,0x1c,
-+0x1,0x0,0x3f,0x24,0xaf,0x69,0x2d,0x2b,0x7f,0xa9,0x2d,0x2b,0x49,0x49,0x93,0x20,0x0,0x84,0xfe,0x0,0x78,0x48,0x48,0x46,0x80,0x78,0x48,0x28,0x10,0x28,0x46,0x84,
-+0x1,0x0,0x3f,0x28,0xa4,0x69,0x22,0x24,0x6f,0xb4,0x27,0x24,0x47,0x44,0x84,0x4,0x0,0x84,0xfe,0x88,0x90,0x48,0x20,0x10,0xfe,0x14,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x1,0x0,0x3f,0x22,0xaf,0x62,0x3f,0x20,0x6f,0xa8,0x2f,0x28,0x4f,0x42,0x84,0x8,0x0,0x84,0xfe,0x20,0xf8,0x20,0xfe,0x88,0xf8,0x88,0xf8,0x88,0xf8,0x20,0x18,0x8,
-+0x0,0x3f,0x20,0x3f,0xa1,0x6f,0x29,0x2f,0x60,0xaf,0x20,0x3f,0x44,0x48,0x92,0x1,0x80,0xfe,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x0,0xf8,0x0,0xfe,0x90,0x8c,0x84,0x0,
-+0x0,0x3f,0x20,0x2f,0xa8,0x6f,0x28,0x2f,0x61,0xaf,0x21,0x2f,0x44,0x48,0x92,0x1,0x80,0xfe,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x10,0xe0,0x8,0xfc,0x90,0x8c,0x84,0x0,
-+0x0,0x3f,0x20,0x2f,0xa9,0x6b,0x2b,0x26,0x69,0xa1,0x3f,0x22,0x46,0x41,0x82,0xc,0x80,0xfe,0x0,0x78,0x48,0x58,0x58,0x30,0x48,0x0,0xfe,0x20,0x40,0xc0,0x30,0x10,
-+0x0,0x3f,0x24,0x27,0xa9,0x75,0x2a,0x24,0x6b,0xb0,0x2f,0x20,0x44,0x44,0x8a,0x1,0x80,0xfe,0x40,0x78,0x48,0x50,0x20,0x18,0xe6,0x0,0xf8,0x80,0x90,0x8c,0x84,0x0,
-+0x0,0x3f,0x20,0x2f,0xa9,0x6a,0x2c,0x2a,0x69,0xa9,0x2d,0x2a,0x48,0x48,0x89,0x8,0x80,0xfe,0x20,0x3c,0x68,0x90,0x28,0xc6,0x38,0x50,0x7c,0x90,0x7c,0x10,0xfe,0x0,
-+0x0,0x3f,0x20,0x2e,0xaa,0x6a,0x2c,0x2a,0x69,0xa9,0x2d,0x2a,0x49,0x49,0x8a,0x8,0x80,0xfe,0x40,0x78,0x90,0xfc,0x4,0xfc,0x4,0xfc,0x20,0x10,0x44,0x4a,0x4a,0x38,
-+0x0,0x3f,0x20,0xaf,0x69,0x25,0x25,0x69,0xa6,0x28,0x37,0x20,0x47,0x40,0x80,0xf,0x80,0xfc,0x0,0x78,0x48,0x28,0xa8,0x48,0x70,0x8e,0x24,0x40,0x90,0x20,0xc0,0x0,
-+0x0,0x3f,0x21,0x20,0xbc,0x6b,0x28,0x29,0x69,0xbd,0x28,0x29,0x4a,0x4e,0xb8,0x0,0x80,0xfe,0x0,0x80,0x1e,0xe8,0x48,0x48,0x48,0x5c,0x88,0x48,0x28,0x8,0x3e,0x0,
-+0x0,0x3f,0x22,0x22,0xaf,0x62,0x2f,0x2a,0x6a,0xaf,0x22,0x27,0x4a,0x52,0x82,0x2,0x80,0xfe,0x20,0x3c,0xa4,0x48,0xbe,0xa2,0xaa,0xaa,0x2a,0x2a,0xaa,0x10,0x14,0x22,
-+0x0,0x3f,0x20,0x2f,0xa2,0x7f,0x20,0x2f,0x68,0xaf,0x28,0x2f,0x40,0x4a,0x92,0x21,0x80,0xfe,0x80,0xf8,0x20,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x80,0x44,0x14,0xf0,
-+0x0,0x3f,0x20,0x2f,0xa8,0x6f,0x28,0x2a,0x6f,0xaa,0x2a,0x2f,0x50,0x52,0xa4,0x0,0x80,0xfe,0x0,0xdc,0x54,0xd4,0x14,0xa6,0xc0,0xbc,0x94,0xd4,0x8,0x94,0x62,0x0,
-+0x1,0x0,0x3f,0x20,0xaf,0x69,0x29,0x2f,0x68,0xaf,0x39,0x29,0x49,0x4f,0x89,0x0,0x0,0x84,0xfe,0x20,0x14,0xfe,0x4,0x8,0xfe,0x10,0x10,0x7c,0x10,0x10,0x10,0x10,
-+0x0,0x3f,0x22,0xbf,0x62,0x2f,0x28,0x6f,0xa8,0x2f,0x28,0x2f,0x48,0x5f,0x85,0x8,0x80,0xfe,0x0,0xfe,0x10,0xbe,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xd0,0x14,0xa2,
-+0x0,0x3f,0x20,0x2f,0xad,0x6b,0x2f,0x22,0x67,0xac,0x37,0x24,0x47,0x44,0x87,0x4,0x80,0xfe,0x0,0x78,0x68,0x58,0x78,0x40,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x0,
-+0x20,0x10,0x13,0x0,0xfe,0x1,0x5,0x44,0x24,0x29,0x2a,0x8,0x16,0xf8,0x1,0x0,0x0,0x4,0xfe,0x44,0x64,0x54,0x54,0x44,0xcc,0x54,0x64,0x44,0x44,0x44,0x54,0x88,
-+0x20,0x10,0x13,0x0,0xfe,0x1,0x5,0x45,0x25,0x29,0x28,0x8,0x16,0xf9,0x2,0x0,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x20,0x70,0xa8,0x26,0x24,0x20,
-+0x2,0x41,0x7f,0x40,0x88,0x12,0x22,0x7,0x8,0x14,0x22,0x1,0x1,0x6,0x18,0x60,0x0,0x0,0xfe,0x2,0x24,0x10,0x8,0xf0,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,
-+0x2,0x41,0x7f,0x48,0x90,0x2f,0x0,0x0,0x1f,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x22,0x14,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x50,0x20,
-+0x2,0x41,0x7f,0x48,0x91,0x1,0xff,0x1,0x11,0x11,0x11,0x1f,0x1,0x1,0x1,0x0,0x0,0x0,0xfe,0x22,0x14,0x0,0xfe,0x0,0x10,0x10,0x10,0xf0,0x10,0x2,0x2,0xfe,
-+0x2,0x41,0x7f,0x48,0x90,0x0,0x1f,0x2,0x1,0x3f,0x0,0x1,0xe,0x30,0x48,0x7,0x0,0x0,0xfe,0x22,0x14,0x70,0x80,0x0,0x20,0xf0,0x40,0x80,0x0,0x0,0x6,0xfc,
-+0x2,0x41,0x7f,0x48,0x90,0x4,0x8,0x11,0x7e,0x4,0x8,0x14,0x22,0x7e,0x1,0x2,0x0,0x0,0xfe,0x22,0x14,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x88,0x88,0x28,0x10,
-+0x2,0x41,0x7f,0x48,0x92,0x2,0x22,0x12,0x16,0xa,0x12,0x62,0x4,0x4,0x18,0x60,0x0,0x0,0xfe,0x22,0x94,0x80,0x90,0x98,0xa0,0xc0,0xa0,0x98,0x8a,0x82,0x7e,0x0,
-+0x41,0x7f,0x48,0x91,0x2f,0x1,0x3f,0x8,0x4,0x12,0x8,0xff,0x1,0x2,0xc,0x30,0x0,0xfe,0x22,0x14,0xe8,0x0,0xfc,0x84,0x88,0x80,0x84,0xfe,0x40,0x30,0x18,0x8,
-+0x41,0x7f,0x48,0x90,0x3f,0x11,0x1f,0x11,0x1f,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0xfe,0x22,0x14,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1e,0x8,0x0,
-+0x41,0x7f,0x48,0x91,0x22,0x4,0xf,0x30,0xde,0x12,0x1e,0x12,0x1e,0x12,0x12,0x16,0x0,0xfe,0x22,0x14,0x88,0x40,0xf0,0xe,0x14,0x90,0x90,0x90,0x90,0x90,0x10,0x30,
-+0x41,0x7f,0x48,0x92,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0xfe,0x22,0x14,0x0,0xf8,0x20,0x44,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x41,0x7f,0x49,0x91,0x29,0x5,0x7f,0x9,0x31,0x2,0xff,0x4,0xe,0x1,0x6,0x38,0x0,0xfe,0x22,0x14,0x28,0x40,0xfc,0x20,0x18,0x4,0xfe,0x20,0x40,0x80,0x70,0x8,
-+0x41,0x7f,0x48,0x90,0x26,0x38,0x2c,0x2c,0x2a,0x2a,0x29,0x29,0x34,0x5d,0x81,0x2,0x0,0xfe,0x22,0x14,0x18,0xe8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0x54,0x72,0x0,
-+0x20,0x10,0x10,0x0,0xfc,0x8,0x10,0x34,0x58,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x10,0x13,0x0,0xfd,0x8,0x10,0x34,0x58,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x0,0x4,0xfe,0x4,0x44,0xa8,0xa8,0x88,0x50,0x50,0x20,0x50,0x90,0x8,0x6,0x4,
-+0x20,0x10,0x10,0x0,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x4,0x14,0x8,
-+0x20,0x10,0x13,0x0,0xfc,0x8,0x10,0x35,0x58,0x94,0x10,0x10,0x10,0x10,0x13,0x10,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x10,0x10,0x0,0xfd,0xa,0x14,0x30,0x54,0x9b,0x14,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x64,0x20,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,
-+0x20,0x10,0x10,0x0,0xfd,0x8,0x10,0x34,0x5b,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,
-+0x20,0x10,0x11,0x0,0xfc,0x8,0x11,0x34,0x58,0x94,0x13,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x24,0xac,0xb0,0x20,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x20,0x10,0x11,0x0,0xfc,0x8,0x11,0x34,0x58,0x94,0x11,0x10,0x10,0x10,0x13,0x10,0x20,0x20,0x24,0xac,0xb0,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x10,0x10,0x0,0xfd,0xa,0x15,0x30,0x54,0x99,0x15,0x11,0x11,0x11,0x11,0x11,0x40,0x40,0xa0,0x90,0x8,0xe,0xf4,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x10,0x10,0x1,0xfd,0xa,0x10,0x34,0x5b,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0x88,0xfc,0x88,0x50,0x20,0x50,0x88,0x6,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x11,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x40,0x24,0x22,0x2,0xf8,0x10,0x26,0x2a,0x72,0xaa,0x22,0x22,0x22,0x25,0x28,0x20,0x20,0x20,0x28,0xfc,0x40,0x50,0x90,0xfc,0x10,0x14,0xfe,0x10,0x10,0x16,0xfc,0x0,
-+0x20,0x11,0x11,0x1,0xfd,0x9,0x10,0x35,0x58,0x94,0x11,0x10,0x10,0x10,0x17,0x10,0x4,0xfe,0x4,0x4,0x4,0xfc,0x0,0xfc,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x10,0x10,0x1,0xfd,0xa,0x15,0x34,0x5a,0x95,0x11,0x11,0x11,0x10,0x17,0x10,0x40,0x40,0xa0,0x10,0x10,0x28,0xf6,0x0,0x48,0x48,0x48,0x50,0x50,0x24,0xfe,0x0,
-+0x22,0x11,0x10,0x2,0xfe,0xa,0x12,0x36,0x5a,0x96,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0xbe,0x84,0x4,0x4,0xf4,0x94,0x94,0xf4,0x94,0x94,0xf4,0x4,0x4,0x14,0x8,
-+0x20,0x10,0x10,0x3,0xfc,0x9,0x10,0x37,0x58,0x94,0x11,0x13,0x15,0x11,0x11,0x11,0x40,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x44,0xa8,0x30,0x20,0x10,0x48,0x8e,0x4,
-+0x20,0x10,0x10,0x3,0xfc,0x8,0x13,0x34,0x59,0x95,0x13,0x15,0x19,0x11,0x11,0x11,0x80,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x40,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x20,0x11,0x11,0x1,0xfd,0x9,0x11,0x34,0x58,0x95,0x12,0x14,0x11,0x12,0x10,0x11,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0x54,0x94,0xa4,0x24,0x44,0xa8,0x10,
-+0x20,0x10,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x94,0x11,0x17,0x10,0x10,0x10,0x10,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x20,0x11,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x12,0x12,0x14,0x18,0x10,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x40,0x2f,0x20,0x5,0xfa,0x15,0x20,0x68,0xb7,0x28,0x24,0x25,0x22,0x25,0x28,0x30,0x0,0xfc,0x84,0x28,0x10,0x28,0xc4,0x0,0xbc,0x84,0xc4,0x28,0x10,0x28,0xce,0x84,
-+0x21,0x11,0x17,0x1,0xfc,0x8,0x11,0x3a,0x55,0x98,0x13,0x12,0x12,0x12,0x13,0x12,0x10,0x14,0xfe,0x10,0x40,0xa0,0x10,0x8,0xf6,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x10,0x13,0x0,0xfc,0xb,0x10,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x90,0x94,0x98,0x90,0x92,0x8e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10,
-+0x21,0x11,0x11,0x1,0xfa,0xa,0x16,0x3a,0x52,0x9a,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0x7e,0x44,0x44,0x44,0x7c,0x10,0x10,0xfe,0x10,0x38,0x54,0x54,0x92,0x10,0x10,
-+0x20,0x12,0x11,0x0,0xff,0x9,0x12,0x34,0x58,0x97,0x19,0x12,0x11,0x10,0x11,0x16,0x40,0x48,0x50,0x44,0xfe,0x50,0x48,0x46,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0xc,
-+0x40,0x20,0x27,0x4,0xfc,0x17,0x24,0x6c,0xb7,0x2e,0x26,0x2b,0x2a,0x32,0x22,0x22,0x80,0x44,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0x8,
-+0x20,0x12,0x12,0x2,0xfe,0xa,0x12,0x34,0x58,0x97,0x12,0x12,0x12,0x12,0x17,0x10,0x90,0x90,0x94,0xbe,0xa0,0xd0,0x88,0x80,0x4,0xfe,0x94,0x94,0x94,0x94,0xfe,0x0,
-+0x40,0x27,0x24,0x4,0xfd,0x15,0x25,0x6d,0xb5,0x2d,0x25,0x25,0x29,0x2a,0x34,0x21,0x3c,0xe0,0x3c,0x20,0xfe,0x22,0xf8,0x24,0x1c,0x0,0x78,0x48,0x48,0x4a,0x8a,0x6,
-+0x40,0x2f,0x20,0x4,0xfa,0x12,0x24,0x68,0xb3,0x2a,0x22,0x23,0x22,0x22,0x23,0x22,0x4,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,
-+0x40,0x2f,0x21,0x1,0xf9,0x17,0x24,0x6c,0xb7,0x29,0x21,0x21,0x21,0x21,0x2a,0x24,0x4,0x7e,0x44,0x44,0x44,0x7c,0x10,0x7c,0x54,0x54,0x54,0x7c,0x10,0x14,0xfe,0x2,
-+0x43,0x20,0x2f,0x8,0xfb,0x10,0x23,0x68,0xb7,0x28,0x27,0x24,0x24,0x24,0x24,0x24,0xf8,0x40,0xfe,0x42,0x5c,0x40,0x58,0x44,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xb4,0x8,
-+0x42,0x22,0x2f,0x2,0xf7,0x2a,0x22,0x77,0xa1,0x33,0x24,0x29,0x20,0x27,0x20,0x20,0xa8,0x48,0xbe,0xa8,0x5c,0xaa,0x8,0xfe,0x10,0xf8,0x44,0xf2,0x40,0xfc,0x40,0xc0,
-+0x0,0x0,0x7f,0x1,0x1,0x9,0x9,0x9,0x9,0x11,0x11,0x19,0x25,0x23,0x41,0x80,0x0,0x8,0xfc,0x8,0x10,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x86,0x7c,
-+0x7f,0x1,0x9,0x9,0x9,0x15,0x23,0xc0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0xfc,0x8,0x0,0xf0,0x0,0x6,0xfc,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20,
-+0x0,0x7f,0x52,0x91,0x7d,0x11,0x29,0x29,0x7d,0x9,0x9,0xfd,0xa,0xa,0xd,0xa,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x10,0x10,0x28,0x45,0xfd,0x45,0xa3,0x3d,0x25,0x45,0xa9,0x11,0x2a,0x44,0x89,0x2,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4,
-+0x0,0x7e,0x2,0x24,0x18,0x9,0xfe,0xa,0x18,0x19,0x28,0x48,0x88,0x8,0x28,0x10,0x20,0x20,0x50,0x50,0x88,0x46,0x24,0x20,0x8,0xfc,0x8,0x8,0x10,0x10,0x20,0x40,
-+0x1,0x1,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x0,0x8,0xfc,0x0,0x0,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,0x0,
-+0x10,0x10,0x15,0xfe,0x10,0x7c,0x10,0xfe,0x33,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x0,0x8,0xfc,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x10,0x10,0x14,0xfe,0x10,0x10,0x7c,0x11,0xfd,0x30,0x38,0x54,0x50,0x90,0x11,0x16,0x20,0x20,0x20,0x20,0xa8,0xa4,0xa2,0x22,0x28,0x2c,0x10,0x20,0x40,0x80,0x0,0x0,
-+0x10,0x11,0x15,0xff,0x11,0x7d,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x14,0xfe,0x11,0x7e,0x11,0xfe,0x30,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x40,0x40,0xa0,0x90,0x8,0x2e,0xf4,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0xfc,0x10,0x7f,0x12,0xfc,0x30,0x3b,0x54,0x54,0x91,0x11,0x12,0x14,0x88,0x88,0xfe,0x88,0x88,0xfe,0x2,0x84,0x80,0xf8,0x88,0x88,0x8,0x8,0x28,0x10,
-+0x10,0x12,0x11,0xfd,0x11,0x7c,0x13,0xfe,0x32,0x3a,0x56,0x56,0x92,0x12,0x12,0x12,0x40,0x48,0x4c,0x48,0x50,0x44,0xfe,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x14,0x8,
-+0x10,0x11,0x15,0xff,0x11,0x7d,0x11,0xfd,0x30,0x3b,0x56,0x56,0x92,0x12,0x12,0x12,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0x2,0xa,0x4,
-+0x10,0x12,0x11,0xfc,0x13,0x7d,0x12,0xfc,0x38,0x37,0x51,0x52,0x91,0x10,0x11,0x16,0x40,0x48,0x50,0x44,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0xc,
-+0x11,0x11,0x17,0xf9,0x13,0x79,0x17,0xf8,0x33,0x3a,0x57,0x52,0x9f,0x12,0x12,0x12,0x10,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xfe,0x8,0x28,0x10,
-+0x10,0x13,0x12,0xff,0x12,0x7f,0x12,0xfe,0x32,0x32,0x52,0x53,0x94,0x14,0x18,0x10,0x8,0xfc,0x0,0xf8,0x0,0xfe,0xa4,0x98,0xae,0xc4,0x8,0xfe,0x88,0x88,0x28,0x10,
-+0x10,0x10,0x13,0xfe,0x13,0x7e,0x12,0xff,0x32,0x3b,0x56,0x52,0x92,0x15,0x1a,0x10,0x40,0x24,0xfe,0x48,0xfe,0x58,0xec,0x4a,0x48,0xfe,0x40,0xfc,0x84,0x84,0xfc,0x84,
-+0x1,0x1f,0x1,0xff,0x4,0x1b,0x68,0x7,0x0,0x7f,0x10,0x3f,0x1,0x1f,0x1,0xff,0x20,0xc0,0x4,0xfe,0x0,0xe0,0x8,0xf8,0x0,0xfc,0x10,0xf8,0x4,0xf0,0x4,0xfe,
-+0x2,0xff,0x25,0x24,0x3c,0x24,0x24,0x3c,0x24,0x24,0x27,0x3c,0xe4,0x44,0x4,0x4,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x2,0xff,0x24,0x25,0x3d,0x25,0x25,0x3d,0x25,0x27,0x25,0x3f,0xe5,0x45,0x5,0x5,0x20,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfe,0x4,0x4,0x4,0x4,0x14,0x8,
-+0x2,0xff,0x24,0x24,0x3c,0x25,0x26,0x3c,0x25,0x24,0x26,0x3c,0xe4,0x44,0x4,0x4,0x20,0x20,0x50,0x50,0x88,0x46,0x24,0x20,0xfc,0x4,0x8,0x90,0x60,0x20,0x10,0x0,
-+0x2,0xff,0x24,0x25,0x3d,0x26,0x24,0x3f,0x24,0x24,0x27,0x3c,0xe4,0x44,0x4,0x4,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40,
-+0x2,0xff,0x25,0x24,0x3c,0x27,0x24,0x3c,0x24,0x25,0x27,0x3d,0xe5,0x45,0x5,0x5,0x8,0x1c,0xe0,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x2,0xff,0x25,0x25,0x3d,0x24,0x27,0x3c,0x25,0x25,0x27,0x3d,0xe5,0x44,0x4,0x5,0x20,0x24,0xfe,0x24,0xfc,0x20,0xfe,0x0,0xfc,0x4,0x24,0x24,0x24,0x50,0x8c,0x4,
-+0x8,0x7f,0x8,0x7f,0x8,0xff,0x10,0x2e,0x42,0xbf,0xc,0xb,0x8,0xff,0x0,0x0,0x40,0x44,0x7e,0x44,0xa8,0x10,0x28,0x46,0x84,0xf8,0x20,0xa0,0x64,0xfe,0x20,0x20,
-+0xff,0x4,0x3f,0x24,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x1,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x0,0xb,0x7c,0x10,0x11,0x11,0x15,0xff,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x13,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2,
-+0x4,0xf,0x70,0x40,0x41,0x41,0x7f,0x49,0x49,0x49,0x49,0x49,0x49,0x88,0x8,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2,
-+0x20,0x13,0x10,0xfe,0x1,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x4d,0x48,0x80,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2,
-+0x10,0x13,0x10,0xfe,0x11,0x11,0x7d,0x1,0x7d,0x45,0x45,0x45,0x44,0x7c,0x40,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x10,0x13,0x10,0x28,0x45,0x81,0x7d,0x1,0x7d,0x45,0x45,0x45,0x44,0x7c,0x40,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x40,0x45,0x48,0x70,0x45,0x7d,0x1,0x13,0xf5,0x39,0x39,0x55,0x54,0x90,0x30,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x20,0x13,0x10,0xfe,0x11,0x11,0x25,0x7d,0x9,0x11,0x25,0xc9,0x18,0x24,0xc2,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x10,0x13,0x28,0x26,0x53,0x81,0x7d,0x5,0x9,0x7d,0x45,0x45,0x44,0x7c,0x44,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2,
-+0x1,0x77,0x55,0x55,0x77,0x0,0x3e,0x0,0xff,0x20,0x3e,0x2,0x2,0x2,0x14,0x9,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x64,0x28,0x46,0x82,
-+0x8,0x49,0x49,0x49,0x7f,0x0,0xff,0x8,0x7f,0x55,0x55,0x55,0x55,0x55,0x43,0x0,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x64,0x28,0x46,0x82,
-+0x2,0xff,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x77,0x11,0x55,0x22,0x22,0x55,0x88,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0xd4,0x54,0x54,0x54,0x54,0x64,0x28,0x46,0x82,
-+0x24,0x24,0xff,0x24,0x2,0xff,0x24,0x24,0xff,0xa5,0xa5,0xdb,0x81,0x85,0x82,0x0,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82,
-+0x0,0x3e,0x14,0x8,0x14,0x77,0x55,0x22,0x55,0x8,0xff,0x18,0x2c,0x4b,0x89,0x8,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0xd4,0x54,0x20,0x28,0x46,0x82,
-+0x2,0x3f,0x22,0x3e,0x22,0x3e,0x8,0xff,0x0,0x3e,0x22,0x3e,0x8,0x2a,0x49,0x18,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0xd4,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82,
-+0x2,0x7f,0x8,0xff,0x88,0x6b,0x8,0x6b,0x8,0xff,0x10,0x7f,0x55,0x55,0x55,0x43,0x4,0xfe,0x10,0xa4,0xfe,0x44,0x54,0x54,0x54,0xd4,0x54,0x54,0x20,0x28,0x46,0x82,
-+0x9,0x2e,0x28,0xff,0x4a,0xc,0x32,0xdf,0x11,0x1f,0x12,0x1f,0x5,0xff,0x1,0x1,0xfe,0x20,0xfc,0x94,0x94,0x28,0xc4,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,
-+0x1,0x1,0x1,0x1,0x3f,0x20,0x22,0x22,0x22,0x22,0x23,0x26,0x5a,0x42,0x81,0x0,0x0,0x10,0xf8,0x0,0xfc,0x4,0x8,0x20,0x60,0x80,0x0,0x0,0x4,0x4,0xfc,0x0,
-+0x1,0x1,0x1,0x3f,0x22,0x3f,0x22,0x23,0x21,0x20,0x2f,0x22,0x41,0x40,0x83,0x1c,0x10,0xf8,0x0,0xfc,0x4,0xc8,0x10,0xf0,0x0,0x88,0xfc,0x20,0x40,0x80,0x60,0x1c,
-+0x8,0x8,0x8,0x9,0x7f,0x49,0x49,0x49,0x49,0x7f,0x48,0x9,0xf,0xf1,0x40,0x0,0x40,0x40,0x40,0x40,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1d,0xe5,0x42,0x4,0x0,0x10,0xf8,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0,
-+0x0,0xff,0x4,0x4,0x7,0x8,0x31,0xc1,0x3f,0x21,0x21,0x3f,0x1,0x1,0x7f,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x50,0x28,0xfc,0x8,0x8,0xf8,0x0,0x8,0xfc,0x4,
-+0x0,0x2,0xff,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x44,0x43,0x80,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x20,0x24,0x3c,0xc6,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x55,0x54,0x54,0x7c,0x50,0x14,0x1d,0xe5,0x40,0x0,0x80,0x80,0x88,0xfc,0x0,0x0,0xf8,0x8,0x10,0x20,0x40,0x80,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x40,0x0,0x40,0x20,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,
-+0x10,0x10,0x10,0x14,0x7d,0x54,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x6,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x0,0x20,0x20,0x20,0x20,0x24,0xec,0x30,0x20,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0,
-+0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x14,0x1c,0xe5,0x42,0xc,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0xa8,0xa0,0xa0,0x22,0x22,0x1e,
-+0x10,0x10,0x13,0x14,0x7e,0x54,0x57,0x54,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x8,0x1c,0xe0,0x40,0x48,0x7c,0xc0,0x40,0x44,0x7e,0xc0,0x40,0x40,0x42,0x42,0x3e,
-+0x10,0x10,0x10,0x14,0x7e,0x55,0x56,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x2,0x20,0x20,0x50,0x50,0x88,0xe,0x4,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x55,0x56,0x7c,0x50,0x14,0x1c,0xe5,0x41,0x0,0x0,0x10,0x58,0x50,0x50,0x88,0x88,0x26,0x24,0x20,0x40,0x40,0x90,0x8,0xfc,0x4,
-+0x10,0x10,0x11,0x14,0x7e,0x54,0x55,0x54,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x10,0x10,0x10,0xd0,0x50,0x10,0x10,0x90,0x94,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x13,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7c,0x50,0x14,0x1c,0xe4,0x1,0x0,0x24,0xf4,0x24,0x24,0xe4,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0x44,0x84,
-+0x1,0x21,0x21,0x3f,0x1,0xff,0x1,0x1,0x1f,0x11,0x11,0x1f,0x1,0x1,0x7f,0x0,0x0,0x8,0x8,0xf8,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x4,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x40,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x17,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1c,0xe4,0x40,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x8,0x28,0x10,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x44,0x9,0x4,0xfe,0x0,0x4,0xfe,0x20,0x24,0x3e,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8,
-+0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x10,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x17,0x1d,0xe5,0x41,0x1,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfe,0x4,0x4,0x14,0x8,
-+0x10,0x10,0x10,0x14,0x7f,0x55,0x56,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x40,0x0,0x80,0xc0,0x84,0xfe,0x40,0x40,0x48,0x7c,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x40,
-+0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x47,0x0,0x8,0x1c,0xe0,0x80,0x80,0x80,0x88,0xfc,0x90,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,
-+0x10,0x10,0x10,0x14,0x7e,0x55,0x56,0x54,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x40,0x0,0x20,0x20,0x50,0x50,0x88,0x46,0x24,0x20,0x0,0xfc,0x8,0x10,0xa0,0x40,0x20,0x20,
-+0x10,0x11,0x11,0x14,0x7e,0x54,0x54,0x54,0x57,0x7c,0x51,0x14,0x1c,0xe4,0x43,0x0,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x10,0x14,0x7e,0x55,0x55,0x57,0x54,0x7c,0x51,0x17,0x1c,0xe4,0x40,0x1,0x10,0x90,0x90,0x94,0xbe,0x14,0x54,0xd4,0x94,0x94,0x54,0xf4,0x24,0x44,0x94,0x8,
-+0x4,0x7e,0x8,0x8,0x8,0xe,0xf1,0x1,0x1f,0x11,0x11,0x1f,0x11,0x1,0x7f,0x0,0x8,0xfc,0x88,0xc8,0xaa,0x8a,0x6,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x4,
-+0x10,0x10,0x10,0x15,0x7e,0x55,0x54,0x54,0x54,0x7f,0x50,0x14,0x1c,0xe4,0x41,0x2,0x20,0x20,0x28,0xfc,0x20,0x24,0xac,0xb0,0x24,0xfe,0x50,0x50,0x90,0x88,0x6,0x4,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x57,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x41,0x2,0x80,0x80,0x5c,0xe0,0x50,0x22,0xd2,0xe,0x0,0xfc,0x90,0x90,0x92,0x92,0xe,0x0,
-+0x10,0x10,0x11,0x14,0x7e,0x54,0x54,0x55,0x54,0x7c,0x51,0x14,0x1c,0xe4,0x43,0x0,0x0,0x8,0xfc,0x20,0x20,0x48,0x84,0xfe,0x22,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x22,0x2a,0xfe,0xaa,0xaa,0xaa,0xaa,0xfa,0xa2,0x2a,0x38,0xc9,0x1,0x2,0x80,0x84,0xbe,0x88,0x88,0xbe,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xae,0x8,0x8,0x8,
-+0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x50,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0xfc,0x54,0x54,0x54,0x54,0xfc,0x4,
-+0x20,0x20,0x27,0x29,0xfd,0xaa,0xaa,0xaf,0xa9,0xf9,0xa5,0x2b,0x39,0xca,0x4,0x8,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x7c,0x0,0x86,0x7c,0x0,
-+0x10,0x10,0x11,0x14,0x7e,0x54,0x57,0x54,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x2,0x40,0x20,0x24,0xfe,0x88,0x50,0x20,0xd8,0x6,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x55,0x56,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x1,0x6,0x40,0x20,0x4,0xfe,0x88,0x88,0x4,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0x6,0x4,
-+0x11,0x10,0x10,0x10,0x7d,0x54,0x54,0x55,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x4,0x8c,0x50,0x4,0xfe,0x20,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x55,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x20,0x20,0x40,0x88,0xfc,0x20,0xa8,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x3f,0x20,0x2f,0x20,0x3f,0x24,0x24,0x26,0x24,0x2f,0x28,0x28,0x4f,0x40,0xbf,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x88,0x50,0xb0,0x8e,0xf8,0x88,0x88,0xf8,0x84,0xfc,0x2,
-+0x8,0x8,0xfe,0x8,0xe,0xf8,0x9,0x2a,0x11,0x3f,0x21,0x21,0x3f,0x1,0x7f,0x0,0x4,0xf8,0x80,0x84,0xfe,0x90,0x10,0x10,0x10,0xf8,0x8,0x8,0xf8,0x4,0xfc,0x2,
-+0x10,0x11,0x10,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x24,0xa8,0xb0,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x54,0x57,0x54,0x7c,0x53,0x14,0x1c,0xe5,0x42,0x4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xe,0x4,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x55,0x55,0x7e,0x52,0x14,0x1c,0xe4,0x40,0x0,0x44,0xe4,0x84,0x84,0x94,0xf4,0x94,0x94,0xd4,0xb4,0x94,0x94,0x84,0x84,0x94,0x88,
-+0x10,0x10,0x10,0x14,0x7e,0x55,0x56,0x54,0x54,0x7d,0x50,0x14,0x1d,0xe6,0x40,0x0,0x20,0x20,0x50,0x88,0x88,0x6,0xf8,0x20,0x28,0xfc,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x13,0x11,0x7c,0x54,0x55,0x54,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x8,0x1c,0xe0,0x24,0xa4,0xa8,0xfc,0x8,0x30,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40,
-+0x11,0x10,0x13,0x14,0x7e,0x55,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x6,0x4,0x88,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x50,0x50,0x50,0x92,0x92,0xe,0x0,
-+0x10,0x10,0x13,0x10,0x7d,0x54,0x57,0x54,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x10,0x10,0x13,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x17,0x1c,0xe4,0x41,0x2,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0xfe,0x0,0x88,0x6,0x2,
-+0x10,0x10,0x10,0x14,0x7f,0x54,0x55,0x55,0x55,0x7e,0x52,0x14,0x1c,0xe4,0x40,0x0,0x80,0x86,0x98,0x90,0xf0,0x90,0x9e,0xd4,0xb4,0x94,0x94,0x94,0xa4,0xa4,0xc4,0x84,
-+0x20,0x20,0x20,0x27,0xf8,0xa8,0xab,0xaa,0xaa,0xfa,0xa3,0x28,0x39,0xce,0x4,0x0,0x20,0x28,0x24,0xfe,0x20,0x20,0xa4,0xa4,0xa4,0xa8,0xa8,0x10,0xb2,0x52,0x8a,0x4,
-+0x2,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x1,0x3f,0x21,0x21,0x3f,0x1,0xff,0x0,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfc,0x2,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x54,0x7f,0x50,0x14,0x1c,0xe5,0x42,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x70,0xa8,0x2e,0x24,0x20,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x4,0xfe,0x4,0x14,0xfc,0x24,0x24,0xfc,0x24,0x34,0x2c,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x54,0x54,0x7d,0x52,0x14,0x1d,0xe6,0x40,0x1,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0x54,0x94,0xa4,0x24,0x44,0xa8,0x10,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7c,0x50,0x17,0x1c,0xe4,0x40,0x0,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0x50,0x94,0xfe,0x10,0x10,0x10,0x10,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x42,0x4,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x10,0x11,0x10,0x10,0x7d,0x54,0x57,0x54,0x54,0x7d,0x52,0x14,0x1c,0xe4,0x40,0x0,0x20,0x24,0xa8,0x20,0xfc,0x20,0xfe,0x50,0x88,0xfe,0x88,0x88,0xa8,0x92,0x82,0x7e,
-+0x10,0x12,0x13,0x12,0x7d,0x55,0x55,0x55,0x56,0x7d,0x50,0x14,0x1c,0xe5,0x42,0x4,0x40,0x20,0xfe,0x2,0x4,0x0,0xdc,0x54,0x54,0x54,0xdc,0x90,0x92,0x12,0xe,0x0,
-+0x21,0x20,0x20,0x2b,0xfe,0xaa,0xab,0xaa,0xaa,0xfb,0xa2,0x2a,0x3a,0xcb,0x2,0x0,0x0,0x80,0x9e,0xd2,0x54,0x54,0xd8,0x54,0x54,0xd2,0x12,0x9a,0xd4,0x50,0x10,0x10,
-+0x10,0x11,0x10,0x14,0x7e,0x55,0x54,0x54,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x43,0x0,0x0,0xfc,0x8,0x30,0x24,0xfe,0x20,0xa0,0x44,0xfe,0x54,0x54,0x54,0x54,0xfe,0x0,
-+0x20,0x20,0x27,0x20,0xfb,0xa8,0xaf,0xa9,0xab,0xfe,0xaa,0x23,0x3a,0xca,0x3,0x2,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0xf8,0xc,0xa,0xf8,0x8,0x8,0xf8,0x8,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x56,0x54,0x55,0x7c,0x50,0x14,0x1c,0xe5,0x42,0x0,0x88,0x88,0xfe,0x88,0x88,0xfe,0x2,0x24,0xfc,0x20,0x70,0x68,0xa8,0x26,0x24,0x20,
-+0x10,0x10,0x10,0x13,0x7c,0x54,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x54,0xfc,0x24,0xfc,0x24,0x24,0x24,0xc,
-+0x10,0x13,0x10,0x14,0x7e,0x54,0x54,0x54,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x4,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x10,0x10,0x10,0x13,0x7c,0x54,0x55,0x56,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x43,0x0,0x20,0x20,0x24,0xfe,0x50,0x88,0x26,0xf8,0x20,0xfc,0x20,0xf8,0x20,0x24,0xfe,0x0,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x55,0x55,0x7e,0x52,0x14,0x1c,0xe4,0x40,0x0,0x4,0x64,0x84,0xa4,0x94,0xc4,0xa4,0x94,0xc4,0xbe,0x84,0x84,0x84,0x84,0x84,0x84,
-+0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1d,0xe6,0x40,0x3,0x80,0x84,0xfe,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x80,0xfc,0x84,0x58,0x20,0xd8,0x6,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x40,0x3,0x20,0xac,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x20,0x20,0x20,0x28,0xfd,0xaa,0xac,0xab,0xaa,0xfb,0xa2,0x2b,0x3a,0xca,0x2,0x2,0x20,0x20,0x50,0x90,0x8,0xf4,0x2,0xc4,0x54,0xd4,0x54,0xd4,0x54,0x54,0x44,0xcc,
-+0x22,0x21,0x21,0x27,0xfa,0xaa,0xab,0xaa,0xfa,0xa2,0x22,0x2a,0x3a,0xcc,0x5,0x8,0x20,0x20,0x24,0xbe,0x40,0x0,0xbc,0x88,0x90,0xfe,0x90,0x90,0x90,0x90,0xd0,0x20,
-+0x20,0x22,0x21,0x28,0xff,0xa8,0xa9,0xaa,0xa8,0xff,0xa1,0x2a,0x39,0xe8,0x1,0x6,0x40,0x48,0x50,0x40,0xfc,0xe0,0x58,0x48,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0x8,
-+0x10,0x10,0x10,0x13,0x7c,0x54,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x0,0x88,0x50,0xfe,0x50,0x54,0xfe,0x54,0x54,0x54,0x9c,0x4,0x74,0x4,0xfc,0x4,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x53,0x15,0x1d,0xe5,0x41,0x1,0x40,0x24,0xfe,0x4,0x4,0xfc,0x4,0x0,0xfe,0x4a,0x4a,0xfe,0x4a,0x4a,0x4a,0x6,
-+0x0,0x7e,0x14,0x8,0xff,0x1a,0x28,0x49,0x19,0x3f,0x21,0x21,0x3f,0x1,0xff,0x0,0x40,0x44,0x7e,0xc8,0x28,0x10,0x28,0x46,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfc,0x2,
-+0x20,0x20,0x27,0x28,0xff,0xa8,0xaf,0xa8,0xa9,0xfb,0xa4,0x2b,0x38,0xc9,0x2,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0xa0,0x10,0xe8,0x46,0xf8,0x40,0x50,0x48,0x40,
-+0x8,0x7f,0x8,0x3e,0x8,0xff,0x10,0x1c,0x25,0x4d,0x3f,0x21,0x21,0x3f,0x1,0xff,0x20,0x20,0x24,0x7e,0xc8,0x28,0x10,0x28,0x46,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,
-+0x20,0x20,0x27,0x28,0xfc,0xab,0xa8,0xaa,0xab,0xfa,0xa2,0x2b,0x3a,0xca,0x2,0x2,0x90,0x94,0xfe,0x90,0x90,0xfc,0x90,0x94,0xfe,0x94,0x94,0x6c,0x44,0x4,0x14,0x8,
-+0x21,0x21,0x27,0x21,0xf8,0xaf,0xa8,0xa9,0xaa,0xfd,0xa1,0x2f,0x39,0xc9,0x2,0x4,0x10,0x14,0xfe,0x18,0x44,0xfe,0xa0,0x10,0xe,0x14,0x10,0xfe,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x13,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x50,0x17,0x1c,0xe4,0x40,0x3,0x88,0x88,0xfe,0x88,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x42,0x4,0x4,0xfe,0x10,0x24,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x10,0x58,0x56,0x92,0x30,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x14,0x1c,0xe6,0x42,0x4,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x48,0x20,0xa4,0x82,0x8a,0x78,
-+0x10,0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x40,0x24,0xfe,0x0,0x54,0x24,0x54,0xfc,0x24,0xfe,0x24,0x54,0x74,0x4,0x14,0x8,
-+0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x42,0x4,0x20,0x14,0xfe,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x44,0x44,0x44,0x7c,0x44,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x56,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe5,0x42,0x4,0x40,0x20,0xfe,0x88,0x50,0xfe,0x42,0x20,0xfe,0x80,0xf8,0x88,0x88,0x8,0x28,0x10,
-+0x8,0x7f,0x8,0xff,0x14,0x56,0x55,0x94,0x25,0x3f,0x21,0x21,0x3f,0x1,0xff,0x0,0x40,0x40,0x44,0x7e,0xc8,0x28,0x10,0x28,0x46,0xf8,0x8,0x8,0xf8,0x4,0xfc,0x2,
-+0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x55,0x55,0x7d,0x51,0x15,0x1c,0xe4,0x41,0x2,0x88,0x88,0xfe,0x88,0x88,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x0,0x88,0x6,0x2,
-+0x20,0x20,0x27,0x20,0xfb,0xaa,0xab,0xaa,0xab,0xf8,0xa1,0x29,0x39,0xc9,0x1,0x1,0x90,0x94,0xfe,0x90,0xfc,0x94,0xfc,0x94,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x10,0x13,0x10,0x10,0x7d,0x55,0x55,0x55,0x54,0x7c,0x50,0x17,0x1c,0xe5,0x42,0x0,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xf8,0x0,0xfe,0xa8,0x26,0x22,0x60,
-+0x10,0x11,0x10,0x10,0x7d,0x55,0x56,0x54,0x54,0x7c,0x50,0x15,0x1c,0xe4,0x43,0x0,0x20,0x24,0xa8,0x20,0xfe,0x2,0xf8,0x88,0x88,0xf8,0x20,0xfc,0x20,0x24,0xfe,0x0,
-+0x10,0x11,0x10,0x11,0x7c,0x57,0x54,0x54,0x55,0x7e,0x50,0x14,0x1d,0xe2,0x44,0x0,0xc,0xf0,0x24,0x24,0xa8,0xfe,0x68,0xa8,0x26,0x24,0x0,0xa0,0xa4,0x8a,0x8a,0x78,
-+0x10,0x10,0x11,0x13,0x7d,0x55,0x55,0x54,0x54,0x7d,0x52,0x14,0x1f,0xe4,0x43,0x0,0x80,0xf8,0x10,0xfc,0x24,0x24,0xfc,0x40,0xc4,0x28,0x70,0xb0,0x68,0xae,0x24,0x60,
-+0x8,0xf,0x18,0x26,0x1,0xe,0xf2,0x1,0xa,0x9,0x3e,0x2a,0x3e,0x9,0x7f,0x1,0x0,0xf0,0x20,0xc0,0x0,0xe0,0x1e,0x0,0x20,0x20,0xf8,0xa8,0xf8,0x24,0xfc,0x4,
-+0x10,0x11,0x10,0x14,0x7f,0x54,0x55,0x55,0x55,0x7d,0x51,0x14,0x1f,0xe4,0x40,0x0,0x20,0xfc,0x88,0x50,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20,
-+0x10,0x10,0x13,0x10,0x7c,0x56,0x55,0x56,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x40,0x24,0xfe,0x20,0x48,0xf2,0x24,0x52,0xf8,0x20,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x0,0x1f,0x2,0x1,0x7f,0x2,0xc,0x30,0xca,0x9,0x3e,0x2a,0x3e,0x9,0x7f,0x1,0x0,0xf0,0x20,0x40,0xfe,0x82,0x84,0x80,0xa0,0x28,0xfc,0xa8,0xf8,0x24,0xfc,0x4,
-+0x20,0x20,0x27,0x20,0xfb,0xa8,0xab,0xaa,0xaa,0xfb,0xa0,0x2a,0x39,0xcf,0x0,0x0,0x82,0xa2,0xf4,0x84,0xe8,0x12,0xe2,0x24,0x28,0xf0,0x2,0x22,0x44,0xe8,0x10,0x60,
-+0x10,0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x55,0x7c,0x53,0x14,0x1c,0xe6,0x42,0x0,0x20,0x24,0xfe,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x22,0xfe,0x42,0xa0,0xa4,0x8a,0x78,
-+0x10,0x11,0x10,0x11,0x7c,0x57,0x54,0x54,0x55,0x7f,0x51,0x15,0x1d,0xe5,0x41,0x1,0xc,0xf0,0x20,0x24,0xa8,0xfe,0x70,0xa8,0x26,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,
-+0x10,0x10,0x13,0x10,0x7d,0x54,0x57,0x55,0x54,0x7f,0x50,0x15,0x1d,0xe5,0x41,0x1,0x88,0x50,0xfe,0x20,0xfc,0x20,0xfe,0x24,0xa8,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4,
-+0x10,0x13,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1c,0xe4,0x41,0x6,0x88,0xfe,0x88,0xa0,0xfc,0x20,0xfc,0x20,0x3c,0x0,0xfc,0x8,0x90,0x60,0x98,0x6,
-+0x20,0x20,0x27,0x20,0xfb,0xaa,0xad,0xa8,0xaf,0xf8,0xa3,0x28,0x3b,0xe8,0x43,0x0,0x90,0x94,0xfe,0x90,0xfe,0x2,0xf4,0x0,0xfe,0x40,0xa4,0x78,0xb0,0x68,0xa6,0x60,
-+0x10,0x10,0x11,0x13,0x7d,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x42,0x4,0x80,0xf8,0x10,0xfe,0x44,0x92,0xfe,0x0,0x7c,0x0,0x7c,0x0,0x7c,0x44,0x7c,0x44,
-+0x20,0x23,0x22,0x2a,0xff,0xaa,0xaa,0xaa,0xab,0xfa,0xa2,0x2a,0x3a,0xcd,0x6,0x8,0x20,0xfe,0x88,0x50,0xfe,0x50,0xfc,0x54,0xfe,0x54,0xfc,0x50,0xd8,0x54,0x52,0x50,
-+0x10,0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x42,0x4,0x88,0x88,0xfe,0x88,0xfc,0x54,0x54,0xfc,0x28,0xfe,0x20,0x24,0x98,0x52,0x2a,0x46,
-+0xf,0x8,0x1f,0x0,0xff,0xc,0x73,0xd,0x72,0x1c,0x6b,0x3e,0x2a,0x3e,0x9,0x7f,0xe0,0x20,0xe0,0x44,0xfe,0x10,0x20,0xc0,0xa0,0x9e,0x24,0xf8,0xa8,0xf8,0x24,0xfc,
-+0x1,0x7f,0x9,0x7f,0x40,0x9f,0x4,0xf,0x38,0xcf,0x8,0x3e,0x2a,0x3e,0x8,0x7f,0x0,0xfc,0x20,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x20,0xf8,0xa8,0xf8,0x24,0xfc,
-+0x27,0x26,0x25,0x27,0xf9,0xab,0xae,0xab,0xaa,0xfa,0xa0,0x2b,0x39,0xc8,0x1,0x6,0xbc,0xb4,0xac,0xbc,0x40,0xfc,0x40,0xf8,0x40,0x7c,0x0,0xf8,0x10,0xe0,0x10,0xe,
-+0x8,0x8,0x8,0x1f,0x21,0x41,0x1,0x1,0xff,0x1,0x21,0x21,0x21,0x21,0x3f,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x3e,0x22,0x2a,0x2a,0x2a,0x14,0x22,0x8,0xf,0x11,0x1,0xff,0x1,0x11,0x11,0x1f,0xf8,0x88,0xa8,0xa8,0xa8,0x50,0x88,0x20,0xf0,0x0,0x4,0xfe,0x0,0x10,0x10,0xf0,
-+0x8,0x7f,0x8,0x3e,0x0,0x7f,0x49,0x7f,0x44,0x4f,0x91,0x1,0xff,0x1,0x11,0x1f,0x78,0x48,0x4e,0x80,0x78,0x48,0x30,0x48,0x86,0xf0,0x0,0x4,0xfe,0x0,0x10,0xf0,
-+0x20,0x24,0x3e,0x51,0x91,0x15,0xff,0x11,0x11,0x55,0x55,0x55,0x55,0x7d,0x2,0x4,0x20,0x3c,0x20,0xfe,0x24,0xf8,0x24,0x38,0x0,0xfe,0x54,0x54,0xfe,0x10,0x10,0x30,
-+0x0,0x6,0x79,0x11,0x15,0xff,0x11,0x11,0x15,0x7f,0x45,0x45,0x45,0x7d,0x45,0x1,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x10,0x10,0x4a,0x8a,0x4,
-+0x10,0x12,0x1f,0x20,0x28,0x45,0x80,0x0,0x3f,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x40,0x44,0x7e,0x80,0x90,0x8,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x80,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x5,0x2,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x0,0x3f,0x8,0x8,0x9,0x14,0x12,0x11,0x21,0x46,0x98,0x40,0x44,0x7e,0xa0,0x10,0x20,0xf0,0x40,0x90,0xf8,0x20,0x40,0x80,0x60,0x1e,0x4,
-+0x10,0x12,0x1f,0x28,0x45,0x0,0x3f,0x8,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x20,0xf0,0x20,0x20,0x24,0xfe,0x4,0xf4,0x4,0x14,0x8,
-+0x10,0x12,0x1f,0x28,0x45,0x0,0x3f,0x4,0x4,0xff,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x12,0x1f,0x28,0xc5,0x0,0x1f,0x10,0x11,0x11,0x11,0x12,0x12,0x4,0x18,0xe0,0x40,0x44,0x7e,0xa0,0x10,0x10,0xf8,0x10,0x10,0x10,0x90,0x90,0x90,0x82,0x82,0x7e,
-+0x10,0x12,0x1f,0x28,0x45,0x0,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x21,0x41,0x1,0x40,0x44,0x7e,0xa0,0x10,0x38,0xe0,0x20,0x20,0x20,0x10,0x10,0x8,0xe,0x4,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x1,0x3f,0x21,0x21,0x3f,0x3,0x5,0x9,0x31,0xc1,0x1,0x40,0x44,0x7e,0xa0,0x10,0x8,0xf0,0x0,0x4,0xfe,0x4,0x4,0x44,0x28,0x10,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x8,0xf,0x12,0x12,0x22,0x44,0x4,0x8,0x11,0x22,0x0,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x50,0x20,
-+0x10,0x12,0x1f,0x28,0x45,0x0,0x7e,0x8,0x8,0x8,0x8,0xe,0x78,0x20,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0xfc,0x88,0x90,0x90,0x88,0xc4,0xa4,0x98,0x80,0x80,
-+0x10,0x12,0x1f,0x28,0xc5,0x3f,0x20,0x20,0x27,0x24,0x24,0x27,0x24,0x20,0x3f,0x0,0x40,0x44,0x7e,0xa0,0x10,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0xff,0x0,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,
-+0x10,0x12,0x1f,0x28,0x45,0x11,0x11,0x1f,0x21,0x41,0x1f,0x1,0x1,0x1,0xff,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0x10,0xf8,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x4,0xf,0xa,0x12,0x23,0x42,0x2,0x3,0x2,0x2,0x2,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x0,0x10,0xf8,0x0,0x8,0xfc,0x0,0x0,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x8,0xf,0x10,0x10,0x2f,0x48,0x8,0xf,0x8,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0xc8,0x8,0x28,0x10,
-+0x10,0x12,0x1f,0x28,0xc5,0x2,0x1,0x7f,0x0,0x8,0x4,0x4,0x2,0x2,0x7f,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0x8,0xfc,0x0,0x20,0x20,0x40,0x40,0x84,0xfe,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x3f,0x0,0x7f,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x40,0x44,0x7e,0xa0,0x14,0xfe,0x4,0xe4,0x4,0x84,0x84,0x84,0x84,0x84,0x94,0x8,
-+0x10,0x12,0x1f,0x28,0xc5,0x3f,0x2,0x2,0x4,0x8,0x3f,0xd0,0x10,0x10,0x1f,0x10,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x8,0x10,0x50,0x20,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x12,0x1f,0x28,0xc5,0x8,0x8,0x7f,0x9,0x9,0x9,0x9,0x11,0x11,0x25,0xc2,0x40,0x44,0x7e,0xa0,0x10,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x20,0x10,0x7,0x70,0x10,0x11,0x11,0x12,0x2c,0x44,0x3,0x40,0x44,0x7e,0xa0,0x10,0x80,0x88,0xfc,0x88,0x88,0x8,0x8,0x28,0x10,0x6,0xfc,
-+0x10,0x12,0x1f,0x28,0x45,0x84,0x8,0x10,0x3f,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x44,0x7e,0xa0,0x10,0x0,0x20,0x10,0xf8,0x8,0xf0,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x12,0x1f,0x28,0xc5,0x8,0x8,0xfe,0x8,0x8,0xe,0x78,0x8,0x8,0x28,0x10,0x40,0x44,0x7e,0xa0,0x10,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x10,0x1e,0x10,0x10,0x1e,0x1,0xff,0x1,0x1,0x1,0x1,0x40,0x44,0x7e,0xa0,0x10,0x80,0x98,0xe0,0x84,0xfc,0x0,0xfe,0x0,0x0,0x0,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x11,0x1f,0x21,0x1,0xff,0x4,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x0,0x4,0xfe,0x80,0x80,0x80,0x84,0x84,0x7c,
-+0x10,0x12,0x1f,0x28,0xc5,0x0,0x7d,0x10,0x21,0x7d,0x5,0x49,0x29,0x10,0x28,0xc7,0x40,0x44,0x7e,0xa0,0x10,0xc,0xf0,0x20,0x28,0x3c,0x20,0x28,0xfc,0x0,0x6,0xfc,
-+0x10,0x12,0x1f,0x28,0xc5,0x2,0x4,0x8,0x3f,0xc1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x40,0x44,0x7e,0xa0,0x10,0x80,0x40,0x20,0xfe,0x4,0x20,0xf0,0x0,0x8,0xfc,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x7,0x8,0x3f,0x1,0xff,0x1,0x3f,0x1,0x1,0x5,0x2,0x40,0x44,0x7e,0xa0,0x10,0xe0,0x48,0xfc,0x8,0xfe,0x8,0xf8,0x8,0x0,0x0,0x0,
-+0x10,0x12,0x1f,0x28,0xc5,0x10,0x10,0x7c,0x11,0x12,0x10,0x1c,0xe1,0x40,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x84,0xfe,0x84,0x44,0x24,0x4,0x34,0xc4,0x84,0x14,0x8,
-+0x10,0x12,0x1f,0x28,0xc5,0x0,0x7f,0x1,0x11,0x11,0x11,0x29,0x45,0x1,0xff,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0xfc,0x0,0x10,0x10,0x10,0x28,0x44,0x0,0xfe,0x0,
-+0x10,0x1f,0x28,0x45,0xff,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x29,0x5,0x3,0xc,0x70,0x40,0x7e,0xa0,0x14,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0x0,0xe0,0x1e,
-+0x10,0x12,0x1f,0x28,0x45,0x8,0x9,0x7f,0x9,0xd,0x19,0x69,0x9,0x9,0x29,0x10,0x40,0x44,0x7e,0xa0,0x10,0x4,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0x2,0xfe,
-+0x10,0x12,0x1f,0x28,0xc5,0x9,0x5,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x40,0x44,0x7e,0xa0,0x10,0x20,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20,
-+0x10,0x12,0x1f,0x28,0xc5,0x8,0x8,0x14,0x35,0x56,0x94,0x14,0x14,0x14,0x11,0x12,0x40,0x44,0x7e,0xa0,0x10,0x84,0xfe,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x10,0x12,0x1f,0x68,0x85,0x7f,0x1,0x3f,0x1,0xff,0x10,0x1f,0x10,0x1f,0x10,0x10,0x40,0x44,0x7e,0xa0,0x10,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x12,0x1f,0x28,0x45,0x7f,0x1,0x1f,0x1,0xff,0x0,0x1f,0x10,0x11,0x12,0x4,0x38,0x48,0x7c,0xa0,0x10,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xd0,0x30,0x8,
-+0x12,0x1f,0x28,0xc5,0x3f,0x20,0x20,0x2f,0x24,0x22,0x3f,0x21,0x22,0x24,0x3f,0x0,0x44,0x7e,0xa0,0x10,0xfc,0x80,0x90,0xf8,0x90,0xa0,0xfc,0x40,0x30,0x14,0xfe,0x0,
-+0x10,0x12,0x1f,0x28,0xc2,0x3f,0x2,0x2,0xff,0x4,0xf,0x18,0x6f,0x8,0xf,0x8,0x40,0x44,0x7e,0xa0,0x10,0xe0,0x40,0x84,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x12,0x1f,0x28,0xc5,0x8,0x7f,0xa,0x2,0xff,0x4,0xf,0x38,0xc8,0x8,0xf,0x8,0x48,0x7c,0xa0,0x10,0x20,0xfc,0x20,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,
-+0x10,0x12,0x1f,0x28,0x45,0x8,0x8,0xff,0x8,0x8,0xe,0xf8,0x48,0x8,0x28,0x10,0x40,0x48,0x7c,0xa0,0x10,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x88,
-+0x10,0x12,0x1f,0x28,0x45,0x13,0x11,0xfc,0x11,0x12,0x1d,0xf0,0x13,0x10,0x50,0x20,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x10,0xe0,0x10,0x4e,0xf4,0x40,0xf8,0x40,0x40,0x40,
-+0x10,0x12,0x1f,0x28,0x45,0x1f,0x11,0x1f,0x11,0x1f,0x0,0xff,0x8,0x8,0x10,0x20,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x20,0x20,0x20,
-+0x12,0x1f,0x28,0x45,0x8,0x4,0x1f,0x11,0x1f,0x11,0x1f,0x1,0xff,0x1,0x1,0x1,0x48,0x7c,0x90,0x8,0x20,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0,
-+0x12,0x1f,0x28,0x45,0x1,0x7f,0x40,0x88,0x10,0x20,0x1f,0x1,0x1,0x1,0xff,0x0,0x48,0x7c,0xa0,0x10,0x0,0xfe,0x2,0x24,0x18,0x8,0xf0,0x0,0x0,0x4,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0x1,0x7f,0x48,0x8e,0x12,0x12,0x32,0x4c,0x8,0x10,0x20,0x40,0x48,0x7c,0xa0,0x10,0x0,0xfe,0x2,0xf4,0x90,0x90,0x90,0xd0,0xa0,0x82,0x82,0x7e,
-+0x12,0x1f,0x28,0x45,0x3f,0x1,0xff,0x1,0x3f,0x1,0x25,0x25,0x29,0x29,0x31,0x41,0x48,0x7c,0xa0,0x10,0xf8,0x8,0xfe,0x8,0xf8,0x0,0x48,0x28,0x28,0x18,0x18,0x8,
-+0x12,0x1f,0x28,0x45,0x0,0x3f,0x20,0x3f,0x20,0x2f,0x29,0x29,0x4f,0x49,0x80,0x0,0x48,0x7c,0xa0,0x10,0x50,0xfc,0x40,0xc0,0x28,0x28,0x28,0x30,0x20,0x52,0x8a,0x4,
-+0x12,0x1f,0x28,0x41,0x3f,0x21,0x3f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x6,0x38,0x48,0x7c,0xa0,0x8,0xfc,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0x10,0x60,0x18,
-+0x12,0x1f,0x28,0x41,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x7f,0x1,0x3f,0x1,0xff,0x0,0x48,0x7c,0xa0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x0,
-+0x12,0x1f,0x28,0x45,0x5,0x8,0x17,0x31,0x51,0x96,0x10,0x17,0x10,0x10,0x11,0x16,0x48,0x7c,0xa0,0x0,0xf0,0x10,0xfc,0x0,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x18,0x6,
-+0x12,0x1f,0x28,0x41,0x7f,0x4,0x3f,0x4,0xff,0x11,0x1f,0x11,0xff,0x10,0x10,0x10,0x48,0x7c,0xa0,0x50,0xfc,0x40,0xf8,0x40,0xfe,0x10,0xf0,0x14,0xfe,0x10,0x10,0x30,
-+0x10,0x1f,0x28,0x45,0x3f,0x22,0x22,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x22,0x3f,0x0,0x40,0x7c,0xa0,0x10,0xfc,0x40,0x50,0x78,0x40,0x78,0x40,0x78,0x40,0x48,0xfc,0x0,
-+0x10,0x1f,0x28,0x45,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x1,0xff,0x3,0xd,0x71,0x1,0x40,0x7c,0xa0,0x10,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x80,0x60,0x1c,0x0,
-+0x10,0x1f,0x28,0x45,0x1,0x3f,0x24,0x23,0x24,0x3f,0x20,0x3c,0x20,0x22,0x2c,0x30,0x40,0x7c,0xa0,0x10,0x8,0xfc,0x48,0x88,0x48,0xf8,0x80,0x8c,0xb0,0xc2,0x82,0x7e,
-+0x10,0x1f,0x28,0x45,0x1e,0x10,0x10,0x17,0x14,0x15,0x24,0x24,0x29,0x49,0x91,0x26,0x44,0x7e,0xa0,0xfc,0x80,0xf0,0x80,0xfe,0x44,0xf0,0x48,0x38,0xe0,0x22,0x22,0x1e,
-+0x10,0x1f,0x28,0x45,0x8,0xff,0x8,0x7f,0x49,0x7f,0x49,0x1c,0x2a,0x4a,0x88,0x9,0x40,0x7c,0xa0,0x50,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,
-+0x10,0x1f,0x28,0x45,0x3f,0x24,0x24,0x3f,0x1,0x3f,0x21,0x28,0x24,0x40,0x43,0x8c,0x40,0x7c,0xa0,0x10,0xf8,0x48,0x48,0xf8,0x40,0xfc,0x10,0xa0,0x40,0xa2,0x1a,0x6,
-+0x10,0x1f,0x28,0x45,0xa,0x37,0x24,0x27,0x24,0x2f,0x30,0x4,0x4,0x4,0x8,0x70,0x40,0x7c,0xa0,0x10,0x8,0xfc,0x48,0xc8,0x48,0xc8,0x38,0x40,0x40,0x42,0x42,0x3e,
-+0x10,0x1f,0x28,0x45,0x1,0x3f,0x22,0x3f,0x22,0x22,0x3f,0x28,0x2f,0x48,0x49,0x8e,0x40,0x7c,0xa0,0x10,0x0,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x44,0x48,0x72,0x42,0x3e,
-+0x10,0x1f,0x28,0x45,0x8,0x6a,0x5c,0x48,0x7e,0x48,0x58,0x6a,0x48,0x7e,0x1,0x0,0x40,0x7c,0xa0,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x90,0x90,0x90,0x10,0x10,
-+0x10,0x1f,0x28,0x5f,0x10,0x1f,0x10,0x1f,0x11,0x14,0x18,0x3f,0x24,0x24,0xff,0x0,0x40,0x7c,0xa0,0xf0,0x10,0xf0,0x10,0xf8,0x10,0xe0,0x1c,0xf8,0x48,0x48,0xfe,0x0,
-+0x10,0x1f,0x28,0x7f,0x4,0x3f,0x24,0x3f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x40,0x7c,0xa0,0xfc,0x40,0xf8,0x48,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,
-+0x10,0x1f,0x28,0x41,0x3e,0x28,0x7f,0x18,0x28,0xcd,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x7c,0xa0,0x10,0xf8,0xa0,0xfc,0x62,0xa2,0x1e,0xf0,0x10,0xf0,0x10,0xf0,0x10,
-+0x10,0x1f,0x28,0x45,0x3e,0x2,0x14,0xf,0x10,0x2f,0xc8,0xf,0x4,0x2,0x7f,0x0,0x40,0x7c,0xa0,0x10,0xa0,0xc8,0x50,0xe0,0x10,0xee,0x24,0xe0,0x40,0x88,0xfc,0x0,
-+0x10,0x1f,0x28,0x45,0x24,0x7e,0x24,0x3c,0x24,0x3c,0x24,0xfe,0x0,0x29,0x46,0x80,0x40,0x7c,0xa0,0x10,0x10,0xfe,0x92,0x90,0xfc,0xa4,0xa4,0xa8,0x90,0x28,0x46,0x84,
-+0x10,0x1f,0x28,0x45,0x8,0x7f,0x8,0x3f,0x2a,0x2a,0x3e,0x18,0x2c,0x4a,0x88,0x8,0x40,0x7c,0xa0,0x50,0x40,0x78,0x90,0xfc,0x84,0x94,0x94,0xa4,0xb4,0x48,0x46,0x82,
-+0x10,0x1f,0x28,0x45,0x10,0x17,0xfc,0x15,0x1e,0x34,0xd3,0x12,0x13,0x12,0x53,0x22,0x40,0x7c,0xa0,0x10,0x84,0x7e,0x24,0x24,0xd4,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x1,0x5,0x39,0x21,0x21,0x3d,0x21,0x21,0x21,0x3f,0x21,0x2,0x2,0x4,0x18,0xe0,0x0,0x8,0x7c,0x8,0x8,0x78,0x8,0x8,0x8,0xf8,0x8,0x80,0x80,0x40,0x30,0xe,
-+0x6,0x38,0x20,0x20,0x3e,0x20,0x20,0x3f,0x24,0x4,0xff,0x4,0x4,0x8,0x10,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x48,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,
-+0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x16,0x38,0xd0,0x1e,0x10,0x10,0x1f,0x10,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0x10,0xfe,0x14,0xf0,0x10,0x10,0xf0,0x10,
-+0x6,0x38,0x20,0x20,0x3e,0x20,0x20,0x3f,0x8,0x1f,0x20,0xe9,0x24,0x24,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x24,0x94,0x84,0x14,0x8,
-+0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x8,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5f,0xf0,0x1,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xa4,0x24,0xfe,0x0,
-+0x10,0x20,0x7d,0x44,0x64,0x54,0x44,0xfc,0x44,0x64,0x54,0x54,0x44,0x44,0x57,0x88,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x10,0x24,0x7e,0x44,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x88,0x20,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x24,0x7e,0x45,0x65,0x54,0x44,0xfc,0x44,0x64,0x54,0x54,0x44,0x45,0x56,0x88,0x0,0x44,0x24,0x24,0x28,0x88,0x88,0x90,0x50,0x20,0x50,0x50,0x88,0xe,0x4,0x0,
-+0x10,0x25,0x7f,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x88,0x20,0x20,0x20,0x20,0x20,0x24,0xec,0x30,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0,
-+0x10,0x24,0x7e,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x44,0x44,0x54,0x88,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,
-+0x10,0x24,0x7f,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x46,0x54,0x89,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x44,0x44,0x44,0x28,0x28,0x10,0x28,0x48,0x84,0x2,
-+0x10,0x24,0x7e,0x45,0x64,0x54,0x44,0xfc,0x44,0x64,0x54,0x54,0x44,0x45,0x55,0x8a,0x40,0x20,0x24,0xfe,0x40,0x40,0x44,0x7e,0x44,0x44,0x84,0x84,0x84,0x4,0x28,0x10,
-+0x10,0x24,0x7f,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x44,0x44,0x54,0x88,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x8,0x28,0x10,
-+0x10,0x24,0x7e,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x8a,0x20,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,
-+0x10,0x24,0x7e,0x44,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x10,0x24,0x7e,0x44,0x65,0x55,0x46,0xfc,0x44,0x64,0x54,0x54,0x44,0x44,0x54,0x88,0x80,0x80,0x84,0xfe,0x40,0x40,0x50,0x78,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,
-+0x10,0x21,0x7c,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x4,0xfe,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0x5c,0x84,0x4,0x4,0xfc,0x4,
-+0x10,0x25,0x7e,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x20,0x24,0xa8,0xb0,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8,
-+0x10,0x25,0x7f,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x56,0x88,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x20,0x22,0x22,0x1e,
-+0x10,0x24,0x7e,0x44,0x64,0x57,0x44,0xfc,0x44,0x65,0x55,0x55,0x45,0x45,0x57,0x88,0x8,0xfc,0x10,0x20,0x24,0xfe,0x20,0xa0,0x44,0xfe,0x54,0x54,0x54,0x54,0xfe,0x0,
-+0x11,0x20,0x7c,0x47,0x64,0x54,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x4,0x88,0x50,0xfe,0x20,0x44,0xfe,0x4,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x10,0x24,0x7f,0x44,0x65,0x55,0x45,0xfd,0x45,0x64,0x55,0x55,0x45,0x45,0x55,0x89,0x50,0x54,0xfe,0x50,0xfc,0x54,0xfc,0x54,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,
-+0x10,0x25,0x7e,0x44,0x67,0x54,0x45,0xfd,0x45,0x65,0x55,0x54,0x45,0x44,0x57,0x88,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x10,0x24,0x7f,0x44,0x65,0x55,0x46,0xfc,0x47,0x64,0x57,0x54,0x47,0x44,0x57,0x88,0x50,0x54,0xfe,0x50,0xfe,0x2,0xf4,0x0,0xfe,0x84,0x48,0xb0,0x70,0xae,0x24,0x60,
-+0x1,0x2,0x6,0x9,0x37,0xc0,0x2,0x1,0xff,0x5,0xd,0x14,0x24,0xc5,0x6,0x4,0x0,0x80,0x40,0x30,0xee,0x24,0x40,0x4,0xfe,0x0,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x4,0x1f,0x10,0x14,0x12,0x10,0x1f,0x2,0x1,0xff,0x5,0xc,0x14,0x65,0x6,0x4,0x20,0xf0,0x20,0x20,0xa0,0x44,0xfe,0x4,0x24,0xf4,0x14,0xa8,0x40,0x3c,0x8,0x0,
-+0x10,0x10,0x7e,0x12,0x12,0x22,0x2a,0x45,0x1,0xff,0x5,0xc,0x34,0xc5,0x6,0x4,0x0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x0,0x4,0xfe,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x1,0x1,0x7f,0x11,0xd,0x5,0x9,0x33,0xff,0x5,0xd,0x14,0x24,0xc5,0x6,0x4,0x40,0x28,0xfc,0x10,0x60,0x80,0x60,0x14,0xfe,0x8,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x10,0x8,0x41,0x25,0xa,0x10,0x21,0x2e,0x1,0xff,0x5,0xc,0x34,0xc5,0x6,0x4,0x40,0x50,0x4c,0x44,0x50,0x60,0x80,0x0,0x4,0xfe,0x10,0xa0,0x40,0x30,0xe,0x4,
-+0x2,0x3f,0x22,0x3e,0x21,0x7e,0xa2,0x22,0x3f,0x1,0xff,0x4,0xc,0x15,0x66,0x4,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0x24,0xfe,0x90,0x60,0x1e,0x4,0x0,
-+0x44,0x24,0x29,0xff,0x11,0x11,0x7d,0x11,0x11,0xff,0x11,0x11,0x21,0x21,0x41,0x81,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x10,0x10,0x10,0x2a,0x4a,0xa6,0x12,
-+0x44,0x25,0x28,0xfe,0x10,0x10,0x7c,0x11,0x12,0xfe,0x10,0x10,0x20,0x20,0x43,0x80,0x8,0xfc,0x8,0x10,0x20,0x50,0x88,0x6,0x0,0xf8,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x44,0x24,0x28,0xfe,0x11,0x10,0x7d,0x12,0x10,0xfe,0x10,0x11,0x22,0x20,0x40,0x83,0x20,0x20,0x50,0x88,0xfc,0x88,0x6,0x82,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x44,0x25,0x29,0xfd,0x11,0x11,0x7c,0x10,0x11,0xfe,0x15,0x11,0x21,0x21,0x40,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x84,0xfe,0x4,0x24,0x24,0x54,0x4,0xe4,0x14,0x8,
-+0x44,0x25,0x29,0xfd,0x11,0x10,0x7c,0x13,0x10,0xfe,0x11,0x11,0x22,0x22,0x44,0x88,0x20,0x24,0x24,0x24,0xfc,0x80,0x84,0xfe,0x90,0x90,0x54,0x58,0xa8,0x28,0x44,0x82,
-+0x4,0x7f,0x1,0x3f,0x1,0xff,0x0,0x3e,0x8,0xff,0x2a,0x3d,0x51,0x9e,0x2,0xc,0x40,0xfc,0x0,0xf8,0x0,0xfe,0x80,0xa0,0x94,0xfe,0x80,0x48,0x50,0x22,0x52,0x8e,
-+0x100,0x7f,0x55,0x55,0x7f,0xd5,0x55,0x41,0x43,0x0,0x24,0xfe,0x24,0x24,0xb4,0x6c,0x24,0x24,0x6c,0xb4,0x24,0x24,0x24,0xb4,0x48,
-+0x2,0x7f,0x0,0x3e,0x22,0x3e,0x0,0x7f,0x41,0x55,0x55,0x7f,0x49,0x49,0x43,0x0,0x24,0xfe,0x24,0x24,0x24,0xb4,0x6c,0x24,0x24,0x6c,0xb4,0x24,0x24,0x24,0xb4,0x48,
-+0x7f,0x50,0x5e,0x68,0x7f,0x48,0x54,0x7f,0x0,0x7e,0x22,0x12,0x1a,0x62,0xa,0x4,0x7c,0x44,0x46,0x80,0x7c,0x28,0x10,0x6e,0x4,0xfe,0x44,0x24,0x34,0xc4,0x14,0x8,
-+0x1,0x3,0x4,0x8,0x10,0x3f,0x1,0x2,0x4,0x3f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x0,0x0,0x10,0x30,0xc0,0x0,0x20,0x10,0xf8,0x0,0x20,0x18,0xc,0x4,0x0,
-+0x8,0x8,0xfe,0x8,0x3e,0xc8,0x29,0x12,0x1f,0x1,0x2,0x3f,0x9,0x11,0x21,0x3,0x40,0x48,0xfc,0x48,0xc8,0x6a,0x8a,0x26,0xc0,0x0,0x10,0xf8,0x20,0x18,0x8,0x0,
-+0x8,0x8,0x7f,0xa,0x9,0x8,0xff,0x9,0x12,0x2f,0xc1,0x2,0x3f,0x9,0x11,0x23,0x20,0x28,0xfc,0x20,0x20,0xa4,0xfe,0x20,0x30,0xee,0x4,0x10,0xf8,0x20,0x18,0x8,
-+0x10,0x8,0x3e,0x23,0x22,0x3e,0x41,0x42,0x9f,0x1,0x2,0x3f,0x9,0x11,0x21,0x3,0x40,0x48,0xfc,0x48,0x30,0x48,0x86,0x20,0xc0,0x0,0x10,0xf8,0x20,0x18,0x8,0x0,
-+0x2,0xd,0xf0,0x94,0x54,0x49,0x7e,0x90,0x10,0xfd,0x10,0x54,0x55,0x56,0x7c,0x0,0x1c,0xe0,0x20,0x40,0x84,0xf8,0x10,0x20,0x44,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x1,0xff,0x1,0x1f,0x12,0xff,0x10,0x1f,0x0,0x3e,0x32,0x2a,0xff,0x28,0x4a,0x18,0x4,0xfe,0x0,0xf0,0x14,0xfe,0x90,0xf0,0x1c,0xe0,0x24,0xf8,0x24,0xfe,0x54,0xb2,
-+0x10,0x14,0xfe,0x11,0x7c,0x10,0xfe,0x21,0x3c,0x44,0xa4,0x28,0x10,0x28,0x41,0x82,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4,
-+0x10,0x14,0xfe,0x10,0x55,0xba,0x11,0x28,0x67,0xbc,0x24,0x29,0x5a,0x10,0x20,0xc0,0x80,0x80,0x84,0xfe,0x4,0x4c,0x54,0xe4,0xfc,0x44,0xe4,0x54,0x4c,0x44,0x54,0x48,
-+0x8,0xa,0x7f,0x8,0x9,0xff,0x8,0x28,0x2a,0x2f,0x28,0x28,0x58,0x48,0x87,0x0,0x8,0x8,0x48,0x48,0x48,0xc8,0x48,0x48,0x48,0x78,0x8,0x8,0x8,0x6,0xfc,0x0,
-+0x8,0x8,0x7f,0x8,0xa,0xff,0x8,0x28,0x28,0x2e,0x28,0x2b,0x58,0x48,0x87,0x0,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0x88,0xfe,0x0,0x6,0xfc,0x0,
-+0x10,0x17,0x7d,0x11,0x11,0xfd,0x12,0x55,0x50,0x5c,0x51,0x72,0x50,0x48,0x87,0x0,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x54,0xd4,0x94,0x4,0x14,0x8,0x6,0xfc,0x0,
-+0x10,0x12,0x7d,0x11,0x14,0xfe,0x10,0x50,0x51,0x5d,0x52,0x72,0x50,0x48,0x87,0x0,0x20,0x20,0x20,0x7e,0x82,0x14,0x90,0x90,0x10,0x28,0x26,0x42,0x80,0x6,0xfc,0x0,
-+0x11,0x15,0x7f,0x19,0x17,0xfb,0x15,0x59,0x57,0x5a,0x52,0x72,0x52,0x49,0x86,0x3,0x8,0x28,0xbc,0x48,0xfe,0x18,0xaa,0x4e,0xf8,0x8,0x48,0x48,0xb8,0x8,0x6,0xfc,
-+0x8,0x8,0xa,0x7f,0x8,0x8,0xff,0x14,0x54,0x56,0x55,0x94,0x14,0x14,0x24,0x4c,0x8,0xfc,0x88,0x88,0x88,0xa8,0x90,0xfc,0x84,0xc4,0xa8,0xa8,0x90,0xa8,0xc6,0x84,
-+0x8,0x8,0x8,0x7e,0x8,0x8,0xff,0x14,0x56,0x55,0x56,0x94,0x14,0x14,0x24,0x4c,0x20,0x20,0x24,0xfc,0x28,0x30,0xfe,0x40,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,
-+0x0,0xff,0x1,0x0,0x7e,0x42,0x42,0x42,0x7e,0x0,0x44,0x24,0x28,0xe,0xf1,0x40,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x2,0xff,0x0,0x1,0x7e,0x42,0x42,0x42,0x7e,0x0,0x44,0x24,0x28,0xe,0xf0,0x43,0x20,0x20,0x24,0xfe,0x20,0x20,0xf8,0x8,0x88,0x50,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x0,0x84,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20,
-+0x1,0xff,0x14,0x15,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x0,0x88,0x7c,0x10,0x90,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x8,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x8,0x28,0x10,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x20,0x20,0x20,0x24,0xa6,0xbc,0xe4,0xa4,0xa4,0xb4,0xa8,0xa0,0x82,0x82,0x7e,0x0,
-+0x4,0xfe,0x28,0x28,0xff,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0xa0,0x20,0x24,0x7e,0x60,0xa4,0x3e,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0x90,0x10,0x7e,0x42,0x84,0x20,0x20,0x24,0x28,0x30,0x20,0x22,0x22,0x1e,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x50,0x7c,0x50,0x90,0x14,0xfe,0x28,0x28,0x28,0x28,0x2a,0x4a,0x86,0x0,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x10,0x3e,0x44,0xa8,0x18,0x10,0x24,0x7e,0xc4,0x44,0x44,0x44,0x7c,0x44,
-+0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x40,0xc4,0x4c,0x50,0x62,0x42,0x7e,0x4,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x44,
-+0x4,0xff,0x28,0x28,0xfe,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x82,0xff,0x82,0x4,0xfe,0x28,0xaa,0x6c,0x28,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,
-+0x4,0xff,0x28,0x28,0x7d,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7d,0x45,0x4,0xfe,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0xdc,0x54,0x54,0x54,0x54,0x54,0x54,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xff,0x82,0x4,0xfe,0x84,0x84,0x84,0xfc,0x0,0xfe,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0xfe,0x28,0x28,0xfe,0xab,0xaa,0xaa,0xae,0xc3,0x82,0xfe,0x82,0x83,0xfe,0x82,0x20,0x20,0x50,0x50,0x8e,0x4,0xf8,0x20,0x24,0xfe,0x20,0x70,0xac,0x24,0xa0,0x40,
-+0x4,0xfe,0x29,0x28,0xff,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x8,0x1c,0xe0,0x4,0x24,0xa8,0x8,0xfe,0x8,0x88,0x48,0x48,0x8,0x8,0x28,0x10,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x4,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x10,0x90,0x92,0xf4,0x98,0xb2,0xd2,0x8e,
-+0x4,0xfe,0x28,0x29,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x20,0x10,0x14,0xfe,0x0,0x84,0x48,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x4,0xfe,0x28,0x28,0x7f,0x54,0x54,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7c,0x44,0x84,0x9e,0x94,0x94,0xf4,0x9c,0x94,0xd4,0x54,0x5c,0x54,0x54,0xd4,0x24,0x24,0x4c,
-+0x4,0xfe,0x28,0x28,0x7c,0x54,0x54,0x57,0x6c,0x44,0x44,0x7c,0x44,0x44,0x7d,0x46,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x0,0xfe,0x20,0xa8,0xbc,0xa0,0xa0,0xe6,0x3c,0x0,
-+0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x0,0xfe,0x12,0x50,0x5c,0x50,0xb0,0xe,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x54,0x48,
-+0x4,0xfe,0x2b,0x28,0x7c,0x55,0x56,0x54,0x6c,0x44,0x45,0x7d,0x45,0x45,0x7f,0x44,0x40,0x44,0xfe,0x40,0x88,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x54,0x54,0x54,0xfe,0x0,
-+0x4,0xfe,0x29,0x29,0x7d,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7e,0x44,0x20,0x14,0xfe,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x44,0x44,0x44,0x7c,0x44,
-+0x4,0xff,0x29,0x28,0x7d,0x54,0x54,0x54,0x6f,0x44,0x45,0x7c,0x45,0x44,0x7c,0x45,0x4,0xde,0x54,0xcc,0x54,0x64,0x50,0xa8,0x46,0x90,0x20,0x48,0x90,0x20,0x40,0x80,
-+0x2,0xff,0x28,0x28,0xff,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xff,0x82,0x82,0xfe,0x83,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x4,0xfe,0x28,0x28,0xff,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x83,0xff,0x82,0x40,0x60,0x94,0xfe,0x90,0xfc,0x90,0x90,0xfc,0x90,0x94,0xfe,0x80,0x54,0x52,0x2,
-+0x4,0xfe,0x29,0x28,0x7c,0x55,0x54,0x54,0x6d,0x46,0x45,0x7d,0x45,0x45,0x7f,0x44,0x40,0x24,0xfe,0x40,0x88,0xfc,0xa8,0xaa,0x2e,0x0,0xfc,0x54,0x54,0x54,0xfe,0x0,
-+0x4,0xfe,0x28,0x29,0x7d,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7e,0x44,0x20,0x3c,0x20,0xfe,0x22,0xfc,0x20,0xfe,0x20,0x54,0xb8,0x58,0xb6,0x54,0x90,0x30,
-+0x4,0xff,0x29,0x29,0x7d,0x55,0x54,0x55,0x6c,0x45,0x45,0x7d,0x44,0x44,0x7f,0x44,0x50,0xfc,0x54,0xfc,0x54,0xfc,0x0,0xfc,0x0,0xfc,0x4,0xfc,0x88,0x50,0xfe,0x0,
-+0x4,0xff,0x28,0x2b,0x7c,0x55,0x55,0x55,0x6d,0x44,0x45,0x7c,0x47,0x45,0x7d,0x46,0x1c,0xe0,0x24,0xfe,0x20,0xfc,0xac,0x74,0xfc,0x20,0xfc,0x20,0xfe,0x54,0x52,0x2,
-+0x0,0xff,0x2,0x6,0x9,0x11,0x62,0x4,0x8,0x31,0x2,0x4,0x18,0x60,0x2,0x1,0x4,0xfe,0x0,0x8,0x18,0xa0,0xc0,0xc0,0xa0,0xa0,0x90,0x8e,0x84,0x80,0x80,0x0,
-+0x11,0x10,0x1f,0x10,0x7d,0x44,0x47,0x6c,0x54,0x54,0x55,0x6d,0x46,0x44,0x7f,0x44,0x8,0x90,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x0,0xff,0x4,0x7,0x4,0x8,0x30,0xdf,0x10,0x10,0x1f,0x9,0x9,0x19,0x27,0xc0,0x4,0xfe,0x0,0xf0,0x10,0x90,0x60,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc,
-+0x0,0x7e,0x8,0x8,0xe,0x71,0x2,0x1f,0x10,0x10,,0x10,0x94,0x54,0x59,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x10,0x10,0x20,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,
-+0x10,0x10,0x94,0x54,0x58,0x11,0xfe,0x30,0x38,0x54,0x54,0x90,0x10,0x10,0x11,0x12,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x8e,0x4,0x0,
-+0x10,0x10,0x95,0x55,0x59,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x2,0x2,0xfe,0x0,
-+0x10,0x10,0x95,0x55,0x59,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x12,0x12,0x14,0x11,0x0,0x4,0xfe,0x0,0x4,0xfe,0x40,0x44,0x7e,0x44,0x44,0x44,0x44,0x44,0x94,0x8,
-+0x1,0x11,0x11,0x1f,0x21,0x21,0x3f,0x11,0x9,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x10,0x10,0xf0,0x8,0x8,0xf8,0x10,0x30,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x10,0x10,0x97,0x54,0x58,0x10,0xff,0x32,0x3a,0x56,0x56,0x93,0x12,0x12,0x13,0x12,0x0,0x4,0xfe,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0x9c,0x4,0x4,0x4,0xfc,0x4,
-+0x1,0x41,0x31,0x12,0x4,0x11,0x26,0x50,0x9,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x0,0xfc,0x48,0xa0,0x10,0xe,0x10,0x30,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x8,0xf,0x28,0x3f,0x21,0x52,0x8c,0x19,0x69,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x7c,0x44,0x28,0x10,0x28,0xc6,0x10,0x30,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0,
-+0x8,0x49,0x2a,0xff,0x1c,0x2a,0x49,0x49,0x7f,0x95,0x55,0x37,0x21,0x41,0x81,0x1,0x0,0x12,0x12,0x92,0x24,0x24,0x24,0x48,0xa4,0x24,0x24,0x92,0x12,0x12,0x12,0x0,
-+0x10,0x10,0x95,0x55,0x59,0x12,0xfe,0x30,0x38,0x57,0x54,0x90,0x11,0x12,0x10,0x10,0x40,0x20,0x20,0xfe,0x2,0x4,0xf8,0x0,0x4,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x10,0x10,0x94,0x55,0x58,0x13,0xfe,0x30,0x39,0x56,0x54,0x90,0x11,0x10,0x10,0x17,0x20,0x40,0x88,0xfc,0x40,0xfe,0x50,0x98,0x24,0xca,0x10,0x64,0x88,0x30,0xc0,0x0,
-+0x10,0x10,0x94,0x55,0x59,0x13,0xfd,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x11,0x80,0xf8,0x88,0x8,0xfe,0x40,0x40,0x7c,0x90,0x14,0xfe,0x10,0x10,0x28,0x24,0xc2,
-+0x11,0x11,0x95,0x55,0x5a,0x11,0xfe,0x31,0x3a,0x54,0x55,0x91,0x11,0x11,0x11,0x11,0x10,0x10,0xd0,0x58,0x54,0x50,0x90,0x56,0x3c,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,
-+0x10,0x10,0x94,0x54,0x5b,0x10,0xfe,0x30,0x39,0x57,0x54,0x90,0x11,0x11,0x13,0x10,0x0,0x88,0x50,0x4,0xfe,0x0,0x88,0x88,0x54,0xfc,0x88,0x88,0x10,0x54,0xfe,0x22,
-+0x10,0x11,0x94,0x54,0x58,0x12,0xfd,0x32,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x11,0x0,0xfc,0x24,0xa0,0xbc,0xe0,0x3e,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x10,0x11,0x94,0x54,0x59,0x10,0xfe,0x31,0x3a,0x54,0x55,0x90,0x10,0x11,0x12,0x10,0x0,0xf8,0x50,0x20,0xfe,0x62,0xa4,0x20,0x60,0x24,0xfe,0x70,0xa8,0x26,0x20,0x20,
-+0x10,0x10,0x95,0x55,0x59,0x11,0xff,0x31,0x39,0x54,0x50,0x97,0x10,0x10,0x10,0x13,0x40,0x84,0xfe,0x4,0xfc,0x4,0xfc,0x4,0xfc,0x28,0x24,0xfe,0x50,0x50,0x8e,0x4,
-+0x20,0x2f,0x21,0xa9,0x71,0x27,0xfc,0x24,0x77,0x69,0xa9,0x21,0x21,0x21,0x2a,0x24,0x4,0x7e,0x44,0x44,0x7c,0x10,0x14,0x7e,0x54,0x54,0x7c,0x10,0x10,0x14,0xfe,0x2,
-+0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x24,0x24,0x22,0x21,0x20,0x28,0x30,0x20,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x20,0x40,0x80,0x60,0x1e,0x4,0x0,
-+0x7d,0x44,0x7d,0x45,0x7c,0x48,0x5c,0x63,0x1f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x0,0xf8,0x20,0x24,0xfe,0x20,0x52,0x92,0xe,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,
-+0x2,0x7f,0x22,0x12,0x2,0x1a,0x63,0xa,0x4,0x8,0xff,0x8,0x8,0x8,0x10,0x20,0x8,0xfc,0x88,0x48,0x8,0x68,0x88,0x28,0x10,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x10,0x10,0x2b,0x24,0x50,0x8a,0x1,0x7c,0x4,0x8,0x49,0x32,0x10,0x8,0x9,0x0,0x0,0x44,0xfe,0x44,0x44,0x64,0x54,0xcc,0x44,0xcc,0x54,0x64,0x44,0x44,0x54,0x88,
-+0x1,0x2,0xc,0x37,0xc0,0x1f,0x10,0x1f,0x2,0x7f,0x12,0xa,0x12,0x22,0xa,0x4,0x0,0x80,0x60,0xd8,0x6,0xf0,0x10,0xf0,0x8,0xfc,0x48,0x28,0x48,0x88,0x28,0x10,
-+0x2,0x1f,0x2,0xff,0x2,0xf,0x38,0xcf,0x8,0xf,0x0,0x7e,0x22,0x1a,0x62,0x6,0x20,0xc0,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x34,0xc4,0xc,
-+0x2,0x2,0x7e,0x2,0x3e,0x2,0xfe,0x2,0x7f,0x22,0x12,0xa,0x12,0x63,0xa,0x4,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfe,0x88,0xfc,0x8,0x48,0x28,0x48,0x88,0x28,0x10,
-+0x8,0x4,0xff,0x0,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x7e,0x22,0x12,0x1a,0x62,0x6,0x20,0x44,0xfe,0x8,0x48,0x48,0x48,0x48,0x48,0x18,0xfc,0x44,0x24,0x34,0xc4,0xc,
-+0x10,0x9,0x7f,0x41,0x41,0x7f,0x40,0x40x1f,0x9,0x9,0xd,0x33,0xc0,0x8,0xfc,0x88,0xc8,0xaa,0x6,0x10,0xf8,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc,
-+0x8,0x8,0xfe,0x8,0x1e,0xe8,0x9,0x1f,0x10,0x10,0x1f,0x9,0x9,0xd,0x33,0xc0,0xc,0xf0,0x84,0xfe,0x90,0x90,0x10,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc,
-+0x0,0x3f,0x24,0x27,0x24,0x3f,0x55,0x64,0x9f,0x10,0x1f,0x9,0x9,0xd,0x33,0xc0,0x48,0xfe,0x40,0x48,0x50,0xa0,0x52,0x8a,0xf6,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc,
-+0x49,0x2a,0x7f,0x49,0x5d,0x6b,0x49,0x1f,0x10,0x10,0x1f,0x9,0x9,0xd,0x33,0xc0,0x20,0x24,0x3e,0x44,0xa8,0x10,0x6e,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc,
-+0x4,0x7e,0x44,0x44,0x45,0x7d,0x56,0x10,0x50,0x5c,0x50,0x50,0x5c,0xf0,0x40,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x44,0x28,0x10,
-+0x4,0x7f,0x44,0x44,0x44,0x7c,0x54,0x10,0x50,0x5c,0x51,0x51,0x5d,0xf2,0x44,0x9,0x0,0xfc,0x84,0x88,0x88,0x90,0xbc,0x84,0xc4,0xa8,0x28,0x10,0x28,0x28,0x46,0x84,
-+0x4,0x7f,0x44,0x44,0x44,0x7c,0x10,0x13,0x50,0x5c,0x50,0x51,0x5d,0xf1,0x42,0x4,0x4,0xfe,0x88,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x8,
-+0x4,0x7e,0x44,0x45,0x44,0x7c,0x54,0x13,0x50,0x5c,0x50,0x50,0x5c,0xf1,0x42,0x4,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x90,0x88,0x8,0x6,0x4,
-+0x4,0x7e,0x44,0x44,0x44,0x7d,0x56,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x0,0x40,0x40,0xa0,0xa0,0x90,0x8,0x16,0xf8,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,
-+0x4,0x7f,0x44,0x44,0x44,0x7c,0x54,0x10,0x51,0x5e,0x50,0x50,0x5c,0xf0,0x40,0x0,0x4,0xfe,0x40,0x40,0x40,0x80,0x84,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x4,0x7e,0x44,0x45,0x45,0x7f,0x55,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x55,0x13,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x42,0x4,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0xe4,0xc,
-+0x4,0x7f,0x45,0x45,0x45,0x7d,0x55,0x11,0x50,0x5c,0x50,0x51,0x5e,0xf0,0x40,0x0,0x1c,0xe0,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x26,0x22,0x20,0xa0,0x40,
-+0x4,0x7e,0x44,0x45,0x45,0x7e,0x54,0x10,0x50,0x5c,0x50,0x52,0x5c,0xf0,0x40,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x80,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0,
-+0x9,0x7d,0x49,0x49,0x4f,0x79,0x51,0x11,0x51,0x5d,0x51,0x51,0x5e,0xf2,0x45,0x8,0x0,0x0,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x54,0x80,
-+0x4,0x7e,0x44,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x42,0x5,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x88,0x48,0x50,0x20,0x50,0x48,0x8e,0x4,
-+0x4,0x7e,0x44,0x44,0x45,0x7f,0x54,0x10,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x40,0x40,0x80,0x90,0x8,0xfc,0x2,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x4,0x7e,0x44,0x45,0x44,0x7c,0x53,0x10,0x50,0x5c,0x51,0x50,0x5c,0xf0,0x43,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x7e,0x44,0x47,0x44,0x7c,0x54,0x13,0x50,0x5d,0x50,0x50,0x5c,0xf1,0x42,0x4,0x40,0x48,0x7c,0xc0,0x50,0x22,0xd2,0xe,0x8,0xfc,0xa0,0xa0,0xa0,0x22,0x22,0x1e,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x55,0x11,0x50,0x5c,0x53,0x50,0x5c,0xf0,0x40,0x0,0x10,0x10,0x12,0xd4,0x18,0x12,0x52,0x8e,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,
-+0x4,0x7e,0x45,0x45,0x45,0x7e,0x54,0x13,0x50,0x5c,0x50,0x50,0x5c,0xf1,0x42,0x4,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0,
-+0x4,0x7e,0x45,0x45,0x44,0x7c,0x57,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x44,0x0,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x86,0x7c,0x0,
-+0x0,0x7c,0x47,0x44,0x44,0x7c,0x54,0x10,0x53,0x5c,0x50,0x50,0x5c,0xf0,0x41,0x2,0x40,0x24,0xfe,0x88,0x50,0x20,0x50,0x8e,0x4,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x4,0x7e,0x44,0x47,0x44,0x7c,0x55,0x12,0x50,0x5c,0x50,0x50,0x5c,0xf0,0x41,0x2,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4,
-+0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x24,0x28,0x10,0x4e,0x84,0x0,
-+0x0,0x7d,0x44,0x44,0x45,0x7d,0x55,0x11,0x50,0x5c,0x50,0x52,0x5e,0xf4,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0x4,0xfc,0x0,0x40,0xa4,0xa2,0x8a,0x78,0x0,
-+0x4,0x7e,0x44,0x44,0x45,0x7d,0x55,0x11,0x51,0x5c,0x50,0x53,0x5c,0xf0,0x40,0x0,0x24,0x3e,0x20,0x20,0xfc,0x4,0xfc,0x4,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x7d,0x45,0x45,0x45,0x7d,0x55,0x11,0x5c,0x53,0x50,0x50,0x5d,0xf2,0x40,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20,0x20,
-+0x9,0x7d,0x49,0x49,0x4a,0x7c,0x50,0x17,0x50,0x5c,0x50,0x51,0x5d,0xf2,0x44,0x0,0x0,0x0,0x0,0xfe,0x92,0x92,0x92,0xf2,0x92,0x92,0x92,0x52,0x32,0x1e,0x12,0x0,
-+0x4,0x7f,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5e,0xf2,0x44,0x0,0xc,0xf0,0x10,0x14,0xfe,0x10,0x7c,0x44,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82,
-+0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x52,0x52,0x5c,0xf4,0x48,0x0,0x20,0x10,0xfe,0x20,0x24,0x3e,0x20,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x4,0x7e,0x45,0x44,0x44,0x7c,0x54,0x13,0x50,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x40,0x28,0xfc,0x0,0x88,0x50,0x4,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x4,0x7a,0x4a,0x48,0x4f,0x79,0x51,0x11,0x5f,0x59,0x51,0x51,0x5a,0xf2,0x44,0x0,0x40,0x5e,0x92,0x14,0xd4,0x18,0x14,0x54,0xf2,0x12,0x1a,0x14,0x90,0x50,0x50,0x10,
-+0x0,0x78,0x4f,0x49,0x49,0x7a,0x57,0x11,0x51,0x5d,0x55,0x53,0x5d,0xf2,0x44,0x8,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x96,0x7c,0x0,
-+0x0,0x7d,0x47,0x45,0x45,0x7d,0x55,0x11,0x50,0x5c,0x53,0x50,0x5c,0xf1,0x42,0x0,0x48,0x48,0xfe,0x48,0x48,0x78,0x0,0xfc,0x20,0x24,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x8,0x7c,0x4a,0x4a,0x4b,0x78,0x57,0x10,0x58,0x57,0x54,0x54,0x5c,0xf4,0x44,0x4,0x40,0x40,0x48,0x48,0xf8,0x0,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xc,
-+0x0,0x7d,0x44,0x44,0x47,0x7c,0x55,0x11,0x51,0x5d,0x51,0x50,0x5d,0xf0,0x43,0x0,0xc,0xf0,0x20,0x24,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x0,0x7d,0x44,0x45,0x45,0x7d,0x55,0x11,0x50,0x5f,0x52,0x52,0x5e,0xf2,0x42,0x2,0xc,0xf0,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xfe,0x22,0x2a,0xfa,0x2,0xa,0x4,
-+0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5e,0xf2,0x44,0xb,0x20,0x14,0xfe,0x48,0x48,0xfe,0x48,0x78,0x0,0xfc,0x4,0x48,0x30,0x28,0xc6,0x4,
-+0x1,0x7c,0x47,0x44,0x45,0x7c,0x57,0x10,0x50,0x5c,0x51,0x51,0x5e,0xf0,0x43,0x0,0x8,0x90,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,
-+0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x52,0x52,0x5c,0xf4,0x48,0x0,0x40,0x24,0xfe,0x4,0x4,0xfc,0x4,0x0,0xfe,0xaa,0xaa,0xfe,0xaa,0xaa,0xaa,0x84,
-+0x4,0x7e,0x44,0x44,0x45,0x7c,0x54,0x11,0x50,0x5c,0x53,0x50,0x5c,0xf1,0x42,0x0,0x0,0xfc,0x48,0x30,0xfe,0x32,0x54,0x90,0x30,0x24,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x8,0x7f,0x49,0x49,0x49,0x79,0x51,0x17,0x50,0x5f,0x54,0x52,0x59,0xf2,0x44,0x8,0x4,0xfe,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xbe,0xa2,0x94,0x8,0x94,0x24,0x42,
-+0x8,0x7c,0x4b,0x48,0x48,0x7f,0x50,0x13,0x52,0x5e,0x52,0x53,0x5f,0xf2,0x42,0x2,0x90,0x90,0xfc,0x90,0x94,0xfe,0x90,0xfc,0x94,0x94,0x94,0x6c,0x2c,0x44,0x14,0x8,
-+0x4,0x7f,0x45,0x44,0x44,0x7c,0x55,0x10,0x50,0x5d,0x50,0x53,0x5c,0xf0,0x40,0x3,0x1c,0xe0,0x24,0xa8,0x40,0x88,0xf0,0x20,0x44,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x8,0x7f,0x4a,0x4b,0x4a,0x7a,0x52,0x12,0x52,0x5a,0x52,0x52,0x5c,0xf5,0x48,0x0,0x4,0xfe,0x0,0xf4,0x4,0xe4,0xbe,0xa4,0xb4,0xec,0xc,0xa4,0xa4,0xf4,0x14,0x8,
-+0x10,0xff,0x94,0x96,0x95,0xf7,0xa4,0x26,0xa6,0xb7,0xa4,0xa4,0xa9,0xe9,0x92,0x24,0x4,0xfe,0x0,0x28,0x48,0xee,0x92,0xa4,0xa8,0xe8,0xa8,0x88,0x14,0x14,0x24,0x42,
-+0x0,0x7d,0x44,0x44,0x47,0x7c,0x50,0x11,0x50,0x5d,0x50,0x53,0x5c,0xf0,0x41,0x6,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4,
-+0x4,0x7f,0x45,0x44,0x47,0x7c,0x54,0x13,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x1c,0xe0,0x24,0xa8,0xfe,0x70,0xae,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x14,0xfa,0x90,0x9f,0x90,0xff,0xa8,0x28,0xaf,0xb2,0xa7,0xaa,0xb2,0xe2,0x86,0x1,0x20,0x28,0x24,0xa0,0x7e,0xa8,0xa8,0xa8,0xa8,0x28,0x28,0xa8,0x4a,0x4a,0x86,0x0,
-+0x4,0x7f,0x45,0x45,0x45,0x7c,0x55,0x12,0x55,0x5d,0x51,0x50,0x5c,0xf3,0x40,0x0,0x4,0xfe,0x54,0x54,0xfc,0x84,0xfe,0x44,0xf4,0x54,0xf4,0x44,0x54,0xfc,0x14,0x8,
-+0x11,0xff,0x91,0x94,0x92,0xf5,0xa5,0x25,0xa5,0xbd,0xa5,0xa5,0xbd,0xe5,0x84,0x4,0x10,0xfe,0x10,0x4,0xfe,0x44,0xf4,0x44,0xf4,0x44,0xf4,0x44,0xfc,0x4,0x14,0x8,
-+0x10,0xff,0x94,0x95,0x95,0xf5,0xa5,0x25,0xa4,0xbd,0xa4,0xa7,0xbd,0xea,0x90,0x3,0x40,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x24,0xfa,0x20,0xfe,
-+0x9,0x7d,0x4a,0x49,0x4b,0x7a,0x52,0x12,0x53,0x5e,0x53,0x52,0x5f,0xf2,0x43,0x2,0x24,0x24,0x48,0x24,0xfe,0x94,0x64,0x94,0xfc,0x48,0x68,0x48,0x68,0x4a,0x6a,0x46,
-+0x1,0xf5,0x97,0x99,0x97,0xf3,0xa5,0x29,0xa3,0xba,0xa2,0xa2,0xba,0xe0,0x81,0x6,0x8,0x28,0xbc,0x48,0xbe,0x18,0xaa,0x4e,0xf8,0xc,0x48,0x48,0x48,0xb0,0xc,0x4,
-+0x10,0xff,0x90,0x95,0x94,0xf7,0xac,0x25,0xab,0xb1,0xa0,0xa3,0xb9,0xe0,0x83,0xc,0x40,0xfe,0x0,0xf4,0x4,0xf6,0xc,0xf4,0x1a,0xf2,0x0,0xf8,0x10,0xe0,0x10,0xe,
-+0x0,0x3f,0x2,0x11,0x8,0x7,0x78,0x0,0x1,0x6,0x38,0x1,0x6,0x38,0x1,0x0,0xe0,0x8,0xc,0x30,0xc0,0x0,0x80,0xc0,0x20,0x50,0x90,0x10,0x10,0x10,0x20,0xc0,
-+0x8,0x10,0x35,0xcc,0x28,0x10,0x30,0xc8,0x15,0x26,0xcc,0x14,0x24,0xc4,0x14,0x8,0x0,0x4,0xfe,0x44,0x44,0x44,0x94,0x88,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x8,0x13,0x34,0xcc,0x28,0x11,0x31,0xc9,0x15,0x25,0xcd,0x15,0x25,0xc5,0x15,0x9,0x4,0xfe,0x40,0x40,0x84,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x8,0x10,0x34,0xcc,0x29,0x11,0x33,0xcd,0x15,0x25,0xcd,0x15,0x25,0xc5,0x15,0x9,0x10,0x90,0x90,0x90,0x14,0xfe,0x10,0x38,0x34,0x54,0x54,0x92,0x10,0x10,0x10,0x10,
-+0x8,0x10,0x37,0xcc,0x29,0x11,0x31,0xc9,0x15,0x24,0xcf,0x14,0x24,0xc4,0x15,0xa,0x88,0x88,0xfe,0x88,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x50,0x88,0x6,0x4,
-+0x8,0x10,0x35,0xcd,0x29,0x11,0x31,0xc9,0x15,0x24,0xcd,0x15,0x25,0xc5,0x15,0x9,0x20,0x44,0xfe,0x4,0x54,0x24,0x54,0x4,0xfc,0x10,0x12,0xd4,0x18,0x12,0xd2,0xe,
-+0x10,0x10,0x1e,0x24,0x28,0x7e,0xaa,0x2a,0x3e,0x2b,0x2a,0x3e,0x2a,0x4a,0x42,0x86,0x10,0x90,0x50,0x50,0x10,0x90,0x50,0x54,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x10,0x1e,0x24,0x28,0x7e,0xaa,0x2a,0x3e,0x2b,0x2a,0x3e,0x2a,0x4a,0x42,0x87,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfe,0x20,0x20,0x50,0x48,0x86,0x4,
-+0x10,0x10,0x1e,0x25,0x28,0x7e,0xaa,0x2a,0x3e,0x2a,0x2a,0x3e,0x2a,0x4b,0x42,0x86,0x80,0x84,0xfe,0x0,0xf8,0x20,0x44,0xfe,0x54,0x54,0x54,0x94,0xa4,0x24,0x54,0x8,
-+0x10,0x10,0x1f,0x24,0x28,0x7e,0xaa,0x2a,0x3e,0x2a,0x2a,0x3e,0x2a,0x4a,0x43,0x86,0x4,0xe,0xf0,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0xac,0x7a,0x8,
-+0x8,0x8,0x2e,0x28,0x2e,0xf4,0x44,0xf,0x10,0x3f,0x51,0x1f,0x11,0x1f,0x21,0x41,0x80,0x84,0x98,0xe2,0x82,0x7e,0x0,0xe0,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30,
-+0x10,0x10,0x1d,0x24,0x28,0x7e,0xaa,0x2b,0x3e,0x2a,0x2a,0x3e,0x2a,0x4a,0x42,0x87,0x20,0x20,0x24,0xac,0xb0,0x20,0x24,0xfe,0x50,0x50,0x50,0x50,0x52,0x92,0x8e,0x0,
-+0x20,0x20,0x3d,0x48,0x50,0xfd,0x55,0x55,0x7d,0x55,0x54,0x7c,0x55,0x56,0x44,0x8c,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x70,0xa8,0x26,0x24,0x20,0x20,
-+0x21,0x20,0x3c,0x49,0x51,0xfd,0x55,0x55,0x7d,0x55,0x54,0x7f,0x54,0x54,0x44,0x8c,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20,
-+0x8,0x2f,0x28,0x2f,0x7a,0x1,0xff,0x0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x40,0x58,0x60,0x44,0x7c,0x0,0xfe,0x0,0xf0,0x0,0xf0,0x0,0xf0,0x10,0xf0,0x10,
-+0x8,0xff,0x8,0x3e,0x2b,0x3e,0x22,0x41,0xff,0x0,0x1e,0x0,0x0,0x1f,0x10,0x1f,0x78,0x48,0x48,0x86,0x78,0x48,0x30,0x4c,0xfe,0x0,0x0,0xf0,0x0,0xf0,0x10,0xf0,
-+0x10,0x14,0xfe,0x10,0x7c,0x10,0xfe,0x0,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x55,0x4a,0x0,0x8,0xfc,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x50,0x52,0x92,0xe,0x0,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x1,0x3f,0x0,0xff,0x8,0xf,0x0,0x0,0x0,0x0,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0xf8,0x0,0xfe,0x0,0xf0,0x10,0x10,0xa0,0x40,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3f,0x21,0x21,0x2f,0x21,0x21,0x21,0x42,0x4c,0x90,0xf0,0x0,0xfe,0x12,0x64,0x10,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x50,0x20,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x2,0x1,0xff,0x8,0x4,0x2,0x1,0x6,0x18,0x60,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0x4,0xfe,0x20,0x40,0x80,0x0,0xc0,0x3c,0x8,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x78,0xb,0x10,0x78,0xf,0x28,0x10,0x2b,0x44,0x83,0xf0,0x0,0xfe,0x12,0x64,0x10,0x38,0xc0,0x40,0x48,0xfc,0x40,0x50,0xf8,0x46,0xfc,
-+0x1f,0x1,0x7f,0x51,0x8d,0x12,0x1,0x7f,0x8,0x4,0x3,0x1c,0xe8,0x8,0x10,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0xfc,0x20,0x40,0x80,0x70,0x2e,0x20,0x20,0x20,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x41,0x20,0x8f,0x60,0x2b,0x12,0x62,0x22,0x22,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x40,0x44,0xfe,0x40,0xf8,0x48,0x48,0x48,0x58,0x40,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x2,0x7e,0x2,0x2,0x3e,0x2,0x2,0x7e,0x2,0x2,0xf0,0x0,0xfe,0x12,0x64,0x10,0x88,0xfc,0x80,0x90,0xf8,0x80,0x88,0xfc,0x80,0x80,
-+0x1f,0x1,0x7f,0x51,0x8d,0x12,0x1,0x1f,0x4,0xff,0x1,0x7f,0x4,0xc,0x3,0x1c,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0xf0,0x44,0xfe,0x0,0xfc,0x40,0x40,0x80,0x70,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x20,0x17,0x42,0x21,0xb,0x10,0x6f,0x20,0x20,0x27,0xf0,0x0,0xfe,0x12,0x64,0x10,0x38,0xc0,0x48,0x50,0xf8,0x40,0xfe,0x40,0x48,0xfc,
-+0x1f,0x1,0x7f,0x51,0x8d,0x11,0x23,0x12,0x2,0xf3,0x11,0x13,0x1c,0x12,0x1b,0x10,0xf0,0x0,0xfe,0x12,0x64,0x10,0xf8,0x88,0x48,0xf8,0x0,0xfc,0x44,0xa4,0xf4,0x8,
-+0x1f,0x1,0x7f,0x51,0x8d,0x12,0x3f,0x12,0xff,0x21,0x3f,0x21,0x3f,0x21,0x25,0x22,0xf0,0x0,0xfe,0x12,0x64,0x10,0x20,0x24,0xfe,0x4,0x44,0x28,0x10,0x28,0x46,0x84,
-+0x1f,0x1,0x7f,0x51,0x8d,0x10,0x2b,0xe5,0x19,0x69,0x95,0x64,0x5,0x64,0x17,0x8,0xf0,0x0,0xfe,0x12,0x64,0x10,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0,
-+0x8,0x8,0x2a,0x2f,0x28,0x29,0xff,0x0,0x49,0x49,0x49,0x55,0x63,0x41,0x7f,0x1,0x40,0x40,0x40,0x40,0x40,0x44,0xcc,0x50,0x60,0x40,0x40,0x40,0x42,0x42,0x3e,0x0,
-+0x8,0x8,0x2a,0x2f,0x28,0x29,0xff,0x0,0x49,0x49,0x49,0x55,0x63,0x41,0x7f,0x1,0x0,0x4,0x7e,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0xfe,0x0,
-+0x10,0x10,0x50,0x5d,0x52,0x50,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7c,0x4,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0,
-+0x10,0x11,0x50,0x5c,0x50,0x54,0xfe,0x1,0x54,0x54,0x54,0x6c,0x44,0x44,0x7c,0x4,0x4,0xfe,0x44,0x44,0x44,0x44,0x94,0x8,0x0,0xfc,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x10,0x10,0x50,0x5d,0x51,0x55,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7f,0x4,0x50,0x50,0x50,0x50,0x52,0x74,0x58,0x50,0x50,0x50,0x50,0x50,0x50,0x72,0x92,0xe,
-+0x10,0x11,0x51,0x5d,0x51,0x55,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x5,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0,
-+0x10,0x11,0x50,0x5c,0x51,0x54,0xfe,0x0,0x57,0x54,0x54,0x6c,0x44,0x44,0x7c,0x4,0x8,0xfc,0x20,0x28,0xfc,0x48,0x48,0x48,0xfe,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,
-+0x10,0x10,0x50,0x5c,0x50,0x54,0xfe,0x0,0x54,0x54,0x54,0x6c,0x44,0x45,0x7e,0x4,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0xa0,0x28,0xbc,0xa0,0xa0,0xa0,0x66,0x3c,0x0,
-+0x10,0x11,0x51,0x5d,0x51,0x55,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7e,0x4,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfe,0x20,0x48,0xfc,0x10,0x7c,0x10,0x14,0xfe,0x0,
-+0x0,0x1f,0x10,0x1f,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0x1,0x0,0x10,0xf8,0x10,0xf0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x2,0x2,0xfe,
-+0x1f,0x0,0xff,0x4,0x78,0x1f,0x10,0x1f,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x1,0x0,0xf0,0x4,0xfe,0x40,0x3c,0xf0,0x10,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xfa,0x2,0xfe,
-+0x3e,0x22,0x3e,0x1f,0x11,0x1f,0x11,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x0,0xf8,0x88,0xf8,0xf0,0x10,0xf0,0x14,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf4,0x4,0xfc,
-+0x9,0x8,0x8,0x1f,0x10,0x30,0x3f,0x50,0x90,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x0,0x80,0x88,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x80,0x84,0xfe,0x0,0x0,
-+0x9,0x8,0xf,0x10,0x3f,0x50,0x1f,0x10,0x1f,0x10,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,
-+0x9,0x8,0x1f,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x7f,0x4,0x4,0x8,0x10,0x60,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x0,0xe0,0x28,0x7c,0x8,0x28,0x10,
-+0x0,0x8,0x7d,0x49,0x4b,0x7d,0x49,0x49,0x79,0x49,0x49,0x4d,0xf1,0x41,0x1,0x1,0xc0,0xa0,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0,
-+0x10,0x10,0x1e,0x22,0x65,0x99,0xa,0x14,0x22,0x7f,0xa2,0x22,0x22,0x3e,0x22,0x0,0x60,0x50,0x84,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80,
-+0x3e,0x22,0x2a,0x2a,0x22,0x3e,0x9,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x1f,0x10,0xf8,0x88,0xa8,0xa8,0x88,0xf8,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x0,
-+0x20,0x32,0x21,0x3d,0x50,0xd7,0x79,0x51,0x51,0x7d,0x51,0x51,0x51,0x7d,0x40,0x40,0x10,0x18,0x10,0x3e,0x68,0x28,0x3e,0x28,0x28,0x3e,0x28,0x68,0xa8,0x3e,0x20,0x20,
-+0x4,0x7e,0x10,0x10,0x1e,0x71,0x2,0xc,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x8,0xfc,0x88,0xc8,0xaa,0xe,0x80,0x60,0xde,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0,
-+0x2,0x1,0x7f,0x4,0x14,0x25,0x42,0xc,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x0,0x8,0xfc,0x40,0x50,0x4c,0x84,0x30,0xee,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0,
-+0x20,0x13,0x40,0x27,0x8,0x73,0x22,0x2c,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x38,0xc0,0x48,0xfc,0xa0,0x18,0x88,0x60,0xde,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0,
-+0x8,0x7e,0x10,0x28,0x7e,0x8,0x7d,0xa,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0xc,0xf0,0x80,0x88,0xfc,0x90,0x10,0x90,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0,
-+0x0,0x7e,0x14,0x8,0xfe,0x1a,0x29,0x4a,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0x40,0x44,0x7e,0xc8,0x48,0x30,0x48,0x86,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0,
-+0x8,0x7f,0x8,0x3e,0x9,0xfe,0x11,0x1e,0x24,0xdf,0x31,0xdf,0x9,0x5,0x7f,0x0,0x40,0x44,0x7e,0xc8,0x48,0x30,0x48,0x86,0x40,0xf0,0xe,0xf4,0x20,0x48,0xfc,0x0,
-+0x20,0x17,0x40,0x23,0x9,0x71,0x23,0x22,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0x40,0xfe,0x90,0xf8,0x50,0x50,0x52,0x8e,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0,
-+0x3f,0x21,0x3f,0x20,0x3f,0x51,0x9f,0x2,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0x10,0x7c,0x28,0xfe,0x10,0x7c,0x10,0x90,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0,
-+0x1,0x6,0x18,0xef,0x1,0x1f,0x5,0x3f,0x10,0x28,0x7c,0x93,0x7c,0x10,0x54,0xfe,0x0,0xc0,0x30,0xee,0x0,0xf0,0x40,0xf8,0x10,0x28,0x7c,0x92,0x7c,0x10,0x54,0xfe,
-+0x20,0x20,0x3c,0x48,0x90,0x7f,0x54,0x54,0x7c,0x54,0x54,0x7c,0x0,0x1d,0xe2,0x44,0x40,0x60,0x50,0x50,0x44,0xfe,0x40,0x50,0x50,0x50,0x50,0x90,0x90,0x12,0x12,0xe,
-+0x20,0x20,0x3c,0x48,0x93,0x7c,0x54,0x54,0x7c,0x54,0x54,0x7c,0x0,0x1d,0xe1,0x42,0x40,0x20,0x20,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x88,0x8,0x28,0x10,
-+0x20,0x20,0x3c,0x48,0x93,0x7c,0x54,0x54,0x7c,0x54,0x55,0x7d,0x1,0x1e,0xe2,0x45,0x40,0x60,0x50,0x44,0xfe,0x80,0x80,0xfc,0x84,0xc4,0x48,0x28,0x10,0x28,0x46,0x84,
-+0x20,0x20,0x3d,0x48,0x91,0x7c,0x54,0x54,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x0,0x8,0xfc,0x20,0x24,0xa8,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,
-+0x20,0x20,0x3c,0x48,0x90,0x7c,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,
-+0x20,0x20,0x3c,0x48,0x90,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe2,0x44,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,
-+0x20,0x20,0x3d,0x48,0x90,0x7c,0x57,0x54,0x7c,0x54,0x54,0x7d,0x2,0x1c,0xe0,0x40,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xa8,0x26,0x24,0x20,0x20,0x20,
-+0x20,0x20,0x3c,0x48,0x90,0x7d,0x56,0x54,0x7c,0x54,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x48,0x48,0x48,0x88,0x88,0xfe,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xa8,0x90,
-+0x11,0x9,0x49,0x7f,0x44,0x84,0xf,0x10,0x3f,0x51,0x1f,0x11,0x1f,0x0,0xff,0x0,0x10,0x20,0x40,0xfe,0x2,0x4,0xc0,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,
-+0x20,0x20,0x3c,0x48,0x91,0x7f,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x20,0x20,0x40,0x88,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x20,0x3d,0x48,0x90,0x7c,0x57,0x54,0x7c,0x54,0x55,0x7c,0x0,0x1c,0xe3,0x40,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x3c,0x4b,0x90,0x7c,0x55,0x54,0x7c,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,
-+0x20,0x20,0x3c,0x4b,0x90,0x7c,0x55,0x56,0x7c,0x54,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x40,0x40,0x44,0xfe,0x80,0x88,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0xa8,0x90,
-+0x20,0x23,0x3c,0x48,0x90,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x40,0x4,0xfe,0x20,0x20,0x44,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x4,0x14,0x8,
-+0x20,0x20,0x3c,0x4b,0x90,0x7c,0x54,0x54,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe1,0x42,0x40,0x20,0x4,0xfe,0x88,0x50,0x20,0x50,0x8e,0x4,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x20,0x20,0x3c,0x4b,0x90,0x7c,0x55,0x56,0x7c,0x54,0x54,0x7c,0x0,0x1c,0xe1,0x46,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0x6,0x4,
-+0x9,0x5,0x3f,0x2,0xff,0x4,0xa,0x37,0xc8,0x1f,0x31,0x1f,0x11,0x1f,0x0,0x7f,0x20,0x40,0xf8,0x0,0xfe,0x40,0x30,0xce,0x84,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xfc,
-+0x20,0x21,0x3c,0x48,0x91,0x7c,0x54,0x55,0x7c,0x54,0x57,0x7c,0x0,0x1c,0xe0,0x40,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x8,0x8,0xfe,0x88,0x48,0x8,0x28,0x10,
-+0x20,0x23,0x3c,0x48,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7c,0x0,0x1c,0xe0,0x43,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0xa0,0xa0,0x40,0xb0,0xe,
-+0x20,0x23,0x3c,0x48,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x4,0xfe,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0xdc,0x54,0x54,0x54,0x54,0x54,0x54,
-+0x20,0x20,0x3c,0x4a,0x91,0x7d,0x54,0x57,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe2,0x44,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0xfc,0x10,0x14,0xfe,0x10,0x10,0x96,0x7c,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7c,0x54,0x55,0x7c,0x0,0x1c,0xe3,0x40,0x40,0x40,0x7e,0x62,0x54,0x48,0x54,0x62,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe0,0x40,0x4,0x44,0xe4,0x44,0x44,0x7e,0x44,0xc4,0x64,0x54,0x54,0x44,0xc4,0x44,0x14,0x8,
-+0x20,0x20,0x3c,0x48,0x91,0x7c,0x54,0x54,0x7f,0x54,0x55,0x7c,0x0,0x1d,0xe2,0x40,0x40,0x40,0x7c,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0xa8,0x26,0xa2,0x40,
-+0x20,0x21,0x3c,0x48,0x90,0x7d,0x54,0x54,0x7c,0x55,0x54,0x7c,0x1,0x1e,0xe0,0x40,0x1c,0xe0,0x40,0x40,0x88,0xf0,0x20,0x40,0x88,0xfc,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x20,0x10,0x40,0x25,0x8,0x77,0x22,0x27,0x8,0x1f,0x31,0x5f,0x11,0x1f,0x0,0xff,0x20,0xa8,0xa6,0x3a,0x60,0x80,0x0,0xc0,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,
-+0x20,0x20,0x3c,0x4b,0x92,0x7c,0x54,0x54,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe1,0x46,0x40,0x20,0x20,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x90,0x90,0x90,0x92,0x12,0xe,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe0,0x40,0x0,0x4,0xde,0x54,0x54,0xd4,0x54,0x54,0xd4,0x14,0x94,0x54,0x5c,0x90,0x10,0x10,
-+0x20,0x20,0x3d,0x48,0x90,0x7c,0x57,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x20,0x28,0xfc,0x20,0xf8,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8,
-+0x20,0x20,0x3d,0x48,0x90,0x7f,0x54,0x55,0x7e,0x54,0x55,0x7e,0x0,0x1c,0xe0,0x43,0x20,0x28,0xfc,0x20,0x24,0xfe,0x88,0x46,0x7a,0x88,0x48,0x50,0x20,0x50,0x8e,0x4,
-+0x20,0x23,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1f,0xe0,0x40,0x20,0xf0,0x44,0x7e,0x44,0xd4,0x54,0x54,0x54,0xd4,0x54,0x68,0xc8,0x54,0x52,0x60,
-+0x20,0x20,0x3c,0x4b,0x90,0x7c,0x54,0x55,0x7c,0x54,0x54,0x7f,0x0,0x1c,0xe0,0x40,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0xdc,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0x50,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7c,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x10,0x12,0xd6,0x18,0x10,0x52,0x92,0xe,
-+0x20,0x20,0x3c,0x48,0x90,0x7c,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x8,0xfc,0x88,0xf8,0x88,0x88,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x4,0xfe,0x4,0x24,0x24,0xfc,0x24,0x24,0x74,0x54,0x54,0x74,0x4,0x4,0xfc,0x4,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x54,0x7c,0x0,0x1c,0xe1,0x46,0x0,0x44,0x8e,0x4,0x4,0xdc,0x4,0x4,0xfc,0x54,0x50,0x50,0x90,0x92,0x12,0xe,
-+0x20,0x20,0x3c,0x48,0x91,0x7e,0x54,0x55,0x7c,0x54,0x54,0x7c,0x1,0x1e,0xe2,0x40,0x20,0x20,0x50,0x88,0x46,0x24,0x20,0xf8,0x8,0x10,0x40,0xa0,0xa4,0x8a,0x8a,0x78,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe2,0x44,0x4,0xfe,0x24,0x24,0x74,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8,
-+0x20,0x23,0x3c,0x48,0x91,0x7c,0x55,0x55,0x7d,0x55,0x55,0x7c,0x0,0x1c,0xe1,0x40,0x4,0xfe,0x4,0x74,0xc4,0x44,0xf4,0x54,0x54,0x54,0xf4,0x44,0x54,0x76,0xca,0x0,
-+0x20,0x20,0x3c,0x49,0x92,0x7d,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x0,0x92,0x92,0x24,0x48,0x24,0x92,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,
-+0x20,0x21,0x3c,0x48,0x93,0x7c,0x54,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1c,0xe0,0x43,0x20,0xfc,0x20,0x88,0xfe,0x88,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x58,0x86,0x2,
-+0x20,0x21,0x3d,0x4b,0x91,0x7d,0x55,0x55,0x7d,0x54,0x57,0x7c,0x0,0x1d,0xe2,0x40,0x48,0x48,0x48,0xfe,0x48,0x48,0x78,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x55,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x4,0xde,0x54,0x54,0x54,0xdc,0x0,0xfc,0x0,0xfe,0x80,0xfc,0x4,0x4,0x28,0x10,
-+0x20,0x20,0x3b,0x48,0x90,0x7f,0x54,0x55,0x7d,0x55,0x56,0x7c,0x0,0x1c,0xe0,0x40,0x8,0x68,0x88,0x88,0x8a,0xea,0x9c,0x88,0xc8,0xa8,0x88,0x88,0x94,0x94,0xa2,0xc0,
-+0x20,0x20,0x3c,0x49,0x93,0x7d,0x55,0x55,0x7d,0x54,0x54,0x7d,0x2,0x1c,0xe0,0x43,0x80,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x80,0xf8,0x88,0x50,0x20,0xd0,0xe,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x54,0x7d,0x54,0x54,0x7d,0x0,0x1c,0xe3,0x40,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,
-+0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x57,0x7d,0x1,0x1d,0xe1,0x41,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc,
-+0x20,0x21,0x3d,0x48,0x90,0x7c,0x55,0x56,0x7d,0x55,0x55,0x7d,0x0,0x1c,0xe3,0x40,0x0,0xfc,0x24,0x88,0x70,0x88,0x26,0x24,0xfe,0x24,0x24,0xfc,0x20,0x24,0xfc,0x2,
-+0x8,0x7f,0x8,0xfe,0x11,0x1e,0x22,0x4f,0x88,0x1f,0x31,0x5f,0x11,0x1f,0x0,0xff,0x40,0x44,0x7e,0xc8,0x48,0x30,0x48,0xc6,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfc,
-+0x20,0x20,0x3d,0x48,0x93,0x7c,0x54,0x55,0x7e,0x54,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x40,0x48,0xf8,0x50,0xfe,0x40,0xf0,0x84,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x57,0x7c,0x56,0x55,0x7d,0x2,0x1c,0xe1,0x40,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xde,0x42,0x52,0xce,0x4a,0x52,0x42,0x4a,0x84,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x54,0x7c,0x55,0x54,0x7c,0x0,0x1d,0xe2,0x40,0x4,0xfe,0x54,0x54,0x54,0xfc,0x20,0xa8,0xa8,0x24,0x20,0xa8,0xa4,0x22,0x22,0x20,
-+0x20,0x20,0x3d,0x48,0x91,0x7c,0x54,0x54,0x7d,0x54,0x57,0x7c,0x1,0x1d,0xe1,0x41,0x8,0x1c,0xe0,0x4,0x24,0xa8,0x80,0xfc,0x20,0x24,0xfe,0x20,0x24,0x24,0xfc,0x4,
-+0x21,0x21,0x7f,0x91,0x21,0xf8,0xab,0xaa,0xfa,0xaa,0xab,0xf8,0x7,0x18,0xe0,0x40,0x48,0x48,0xf8,0x48,0xc8,0x9e,0xea,0xaa,0xaa,0xaa,0xea,0x8a,0xea,0x8a,0x92,0xa6,
-+0x20,0x23,0x3c,0x48,0x91,0x7d,0x55,0x55,0x7c,0x55,0x54,0x7f,0x0,0x1d,0xe2,0x40,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x26,0x22,0x60,
-+0x20,0x21,0x3c,0x4b,0x92,0x7d,0x54,0x55,0x7c,0x54,0x55,0x7c,0x0,0x1c,0xe1,0x40,0x8,0xfc,0x20,0xfe,0x22,0xac,0x20,0xac,0x20,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,
-+0x20,0x20,0x3c,0x48,0x90,0x7c,0x55,0x55,0x7d,0x55,0x54,0x7c,0x0,0x1c,0xe0,0x43,0xfc,0x84,0xfc,0x84,0xfc,0x0,0xfe,0x4a,0x4a,0xfe,0x0,0xfc,0x48,0x30,0xc8,0x6,
-+0x20,0x3f,0x40,0xbf,0x29,0xff,0x25,0x3f,0x8,0x1f,0x31,0x5f,0x11,0x1f,0x0,0xff,0x40,0x44,0xfe,0x4,0x44,0xa8,0x10,0xe8,0x86,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,
-+0x20,0x23,0x7a,0x93,0x22,0xfb,0xaa,0xab,0xfa,0xab,0xab,0xfb,0x5,0x1d,0xe5,0x49,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c,
-+0x20,0x23,0x7a,0x92,0x22,0xfa,0xab,0xaa,0xfb,0xab,0xab,0xfb,0x2,0x1c,0xe4,0x49,0x4,0xfe,0x8,0xa8,0xae,0x12,0xf4,0x44,0x54,0x54,0x54,0xf4,0x54,0x4a,0x8a,0x10,
-+0x21,0x20,0x3f,0x48,0x91,0x7c,0x57,0x55,0x7c,0x57,0x54,0x7d,0x1,0x1d,0xe1,0x41,0x4,0x88,0xfe,0x20,0xfc,0x20,0xfe,0x24,0xa8,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4,
-+0x21,0x20,0x3f,0x48,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7c,0x3,0x1c,0xe0,0x40,0x4,0x88,0xfe,0x50,0xfc,0x54,0x54,0x8c,0x74,0x4,0xfc,0x8,0xfe,0x88,0x48,0x18,
-+0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x57,0x7c,0x55,0x55,0x7d,0x0,0x1c,0xe3,0x40,0x50,0xfc,0x54,0xfc,0x54,0xfc,0x0,0xfe,0x0,0xfc,0x4,0xfc,0x88,0x50,0xfe,0x0,
-+0x28,0x28,0xfc,0x28,0x38,0x10,0x7c,0x54,0x54,0x7c,0x10,0xfe,0x10,0x10,0x13,0x10,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0x84,0xfc,0x0,0x4,0xfe,0x0,
-+0x28,0x28,0xfe,0x29,0x39,0x11,0x7d,0x55,0x55,0x7f,0x10,0xfe,0x10,0x10,0x11,0x12,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x50,0x88,0x6,0x4,
-+0x28,0x28,0xfe,0x29,0x39,0x10,0x7f,0x55,0x55,0x7d,0x11,0xfd,0x11,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x28,0x28,0x24,0x44,0x0,0x86,0x7c,0x0,
-+0x28,0x29,0xfe,0x28,0x3b,0x10,0x7c,0x55,0x56,0x7c,0x10,0xfe,0x10,0x10,0x11,0x12,0x1c,0xe0,0x20,0x24,0xfe,0x50,0x88,0x6,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x8,
-+0x28,0x28,0xfe,0x28,0x39,0x13,0x7d,0x55,0x55,0x7d,0x10,0xfe,0x10,0x10,0x11,0x12,0x40,0x40,0x78,0x90,0x24,0xfe,0x24,0x24,0x24,0xfc,0x50,0x50,0x90,0x92,0x12,0xe,
-+0x28,0x28,0xff,0x28,0x38,0x13,0x7c,0x54,0x55,0x7f,0x11,0xff,0x11,0x11,0x11,0x11,0x90,0x90,0xfc,0x90,0x44,0xfe,0x80,0xfc,0x8,0x10,0xfe,0x10,0x10,0x10,0x50,0x20,
-+0x28,0x28,0xfe,0x29,0x3a,0x13,0x7c,0x55,0x54,0x7d,0x10,0xff,0x11,0x11,0x11,0x10,0x80,0x84,0xfe,0x4,0x44,0xfc,0x4,0xf4,0x4,0xf4,0x4,0xf4,0x14,0x14,0xf4,0x8,
-+0x28,0x29,0xfe,0x28,0x3b,0x10,0x7c,0x55,0x56,0x7c,0x13,0xfc,0x10,0x11,0x12,0x10,0x0,0xfc,0x48,0x20,0xfe,0xa2,0xa4,0x20,0x60,0x24,0xfe,0x70,0xa8,0x26,0x24,0x20,
-+0x28,0x28,0xff,0x28,0x39,0x10,0x7f,0x54,0x55,0x7d,0x11,0xfd,0x13,0x11,0x11,0x11,0x88,0x88,0xfe,0x88,0xfc,0x88,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfe,0x4,0x14,0x8,
-+0x28,0x28,0xfd,0x28,0x3b,0x10,0x7d,0x57,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0x11,0x88,0x88,0xfc,0x88,0xfe,0x88,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x24,0x24,0x34,0x28,
-+0x2,0x3f,0x22,0x3a,0x2a,0x7f,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x22,0x22,0x2a,0x25,0x20,0x20,0x50,0x50,0x88,0x6,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x88,0x8,
-+0x2,0x3f,0x22,0x3a,0x2a,0x7f,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x22,0x22,0x2a,0x25,0x8,0x7c,0x48,0x48,0x48,0x86,0x0,0xfc,0x44,0x48,0x28,0x10,0x30,0x48,0x8e,0x4,
-+0x2,0x3f,0x22,0x3a,0x2a,0x7f,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x22,0x22,0x2a,0x24,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x4,0x7e,0x44,0x74,0x54,0xfe,0x82,0x7c,0x44,0x7c,0x44,0x7c,0x45,0x44,0x54,0x48,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x28,0x10,
-+0x4,0x7e,0x45,0x75,0x55,0xff,0x83,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x45,0x55,0x49,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x10,0x10,0x28,0x4a,0xa6,0x12,
-+0x4,0x7e,0x45,0x75,0x55,0xff,0x83,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x45,0x56,0x48,0x8,0x1c,0xe0,0x0,0x4,0xfe,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,
-+0x4,0x7e,0x44,0x74,0x54,0xff,0x82,0x7c,0x44,0x7f,0x44,0x7c,0x44,0x44,0x54,0x48,0x40,0x40,0x7c,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,0xf8,0x88,0x88,0x88,0xf8,0x88,
-+0x0,0x7d,0x45,0x75,0x55,0xff,0x83,0x7d,0x44,0x7f,0x44,0x7c,0x44,0x45,0x56,0x48,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x60,0x70,0xa8,0x26,0x24,0x20,
-+0x0,0x7c,0x45,0x75,0x55,0xff,0x83,0x7d,0x45,0x7c,0x45,0x7f,0x44,0x44,0x54,0x48,0x40,0x84,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,
-+0x0,0x7d,0x44,0x74,0x55,0xfe,0x82,0x7d,0x44,0x7f,0x44,0x7c,0x44,0x44,0x54,0x49,0x20,0x24,0xa8,0x20,0xfe,0x20,0xa8,0x24,0x40,0xfe,0x48,0x88,0x70,0x50,0x8c,0x4,
-+0x4,0x7e,0x45,0x75,0x54,0xfe,0x83,0x7c,0x44,0x7d,0x44,0x7c,0x44,0x44,0x54,0x48,0x40,0x20,0xfe,0x42,0x7c,0x88,0x50,0x20,0x50,0x8e,0xf8,0x88,0x88,0x88,0xf8,0x88,
-+0x4,0x7e,0x45,0x75,0x54,0xff,0x82,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x44,0x54,0x49,0x20,0x10,0xfe,0x2,0x48,0xfe,0x48,0xfc,0x94,0x94,0xa4,0xa4,0x50,0x52,0x92,0xe,
-+0x4,0x7e,0x45,0x75,0x54,0xfe,0x82,0x7c,0x44,0x7c,0x44,0x7f,0x44,0x44,0x55,0x4a,0x40,0x20,0xfe,0x2,0x1c,0xe0,0x84,0xfe,0x88,0x88,0x88,0xfe,0x0,0x88,0x6,0x2,
-+0x0,0x7d,0x45,0x75,0x55,0xfe,0x82,0x7d,0x47,0x7d,0x45,0x7d,0x44,0x47,0x54,0x48,0x4,0xfe,0x54,0x54,0xfc,0x84,0xfe,0x44,0xf4,0x54,0x54,0xf4,0x4c,0xfc,0x14,0x8,
-+0x10,0x24,0x7e,0x55,0x54,0x7c,0x55,0x54,0x7c,0x10,0x19,0x28,0x2a,0x48,0x87,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x70,0xac,0x24,0x20,0x22,0x2,0xfe,0x0,
-+0x10,0x24,0x7e,0x55,0x54,0x7c,0x54,0x54,0x7d,0x12,0x18,0x28,0x2a,0x48,0x87,0x0,0x50,0x48,0x40,0xfe,0x40,0x40,0xfc,0x84,0x28,0x10,0x2c,0xc4,0x2,0x2,0xfe,0x0,
-+0x3f,0x20,0x20,0x3f,0x21,0x26,0x39,0x27,0x24,0x27,0x24,0x27,0x41,0x42,0x84,0x18,0xfc,0xa0,0x94,0xfe,0x40,0x30,0xe,0xf8,0x88,0xf8,0x88,0xf8,0x40,0x52,0x42,0x3e,
-+0x10,0x25,0x7e,0x54,0x55,0x7d,0x55,0x55,0x7d,0x11,0x19,0x2d,0x29,0x48,0x87,0x0,0x8,0xfc,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0xac,0x4,0x4,0xc,0x2,0xfe,0x0,
-+0x10,0x25,0x7e,0x54,0x54,0x7c,0x54,0x54,0x7c,0x10,0x18,0x2a,0x28,0x48,0x87,0x0,0x20,0x24,0xa8,0x20,0xf8,0x88,0xf8,0x88,0xf8,0x88,0x88,0xa8,0x92,0x2,0xfe,0x0,
-+0x10,0x25,0x7f,0x55,0x55,0x7d,0x55,0x55,0x7d,0x11,0x19,0x2d,0x29,0x48,0x87,0x0,0x4,0xfe,0x4,0x54,0xfc,0x24,0xfc,0x44,0x44,0x74,0x4,0x14,0xa,0x2,0xfe,0x0,
-+0x10,0x24,0x7f,0x54,0x55,0x7d,0x55,0x54,0x7d,0x11,0x19,0x2d,0x29,0x48,0x87,0x0,0x40,0x24,0xfe,0x50,0x24,0x54,0xfc,0x20,0xfc,0x44,0x54,0x74,0xc,0x2,0xfe,0x0,
-+0x20,0x20,0x20,0x48,0x49,0xf2,0x27,0x4a,0xfb,0xa,0x13,0x12,0x22,0x42,0x83,0x2,0x40,0x40,0xa0,0xa0,0x90,0x48,0xff,0x8,0xf8,0x8,0xf8,0x88,0x50,0x20,0x1e,0x4,
-+0x3f,0x20,0x3f,0x21,0x26,0x38,0x21,0x26,0x2f,0x34,0x27,0x24,0x47,0x44,0x85,0x6,0xfc,0x90,0xfc,0x40,0x30,0x8e,0x44,0xb0,0xf8,0x16,0xf0,0x10,0xf4,0x48,0x30,0xc,
-+0x7f,0x10,0x1e,0x23,0x54,0x9,0x32,0x4,0x1f,0x28,0xcf,0x8,0xf,0x8,0xa,0xc,0x20,0x50,0x98,0x26,0x48,0x10,0xa4,0x48,0xf0,0x2e,0xe4,0x20,0xf0,0xa0,0x60,0x18,
-+0x7c,0x44,0x7d,0x1,0xff,0x21,0x7d,0x5,0x1a,0x5,0xf,0x39,0xcf,0xa,0x9,0xc,0x38,0x20,0xfc,0x24,0xf8,0x24,0x7c,0x50,0x9c,0x40,0xf0,0x2e,0xe4,0x20,0xc0,0x30,
-+0x1,0x7f,0x8,0x12,0x7d,0xa,0x7c,0x9,0x32,0x45,0xf,0x39,0xcf,0xa,0x9,0xc,0x4,0xfe,0x90,0xfc,0x90,0xfc,0x90,0x9e,0x80,0x40,0xf0,0x2e,0xe4,0x20,0xc0,0x30,
-+0x2,0x3f,0x20,0x24,0x3e,0x20,0x24,0x3e,0x20,0x22,0xff,0x10,0x10,0x20,0x7f,0x1,0x4,0x4,0x8,0x8,0x10,0x24,0x44,0x88,0x10,0x22,0x42,0x4,0x8,0x10,0x20,0x40,
-+0x1,0x3f,0x20,0x3f,0x20,0x3f,0x20,0xff,0x12,0x3f,0x0,0xff,0x4,0x4,0x18,0x60,0x4,0x88,0x10,0x24,0x48,0x10,0x24,0x88,0x10,0x60,0x4,0xfe,0x40,0x42,0x42,0x3e,
-+0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x0,0x1f,0x1,0xf,0x1,0x7f,0x1,0x0,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x18,0xe0,0x0,0xf0,0x0,0xfa,0x2,0xfe,
-+0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x1,0x1f,0x11,0x1f,0x11,0xff,0x10,0x10,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x10,0xf8,0x10,0xf0,0x14,0xfe,0x10,0x30,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x0,0x3f,0x4,0x18,0x60,0x1f,0x10,0x10,0x1f,0x10,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x0,0xf8,0x8,0x48,0x30,0xf0,0x10,0x10,0xf0,0x10,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x1,0xff,0x1,0x1,0x3f,0x0,0x1f,0x10,0x10,0x1f,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x4,0xfe,0x0,0x10,0xf8,0x0,0xf0,0x10,0x10,0xf0,
-+0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x4,0x24,0x27,0x24,0x24,0x2f,0xf0,0x40,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x40,0x44,0x48,0x70,0x40,0x42,0x3e,0x0,
-+0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x4,0x8,0x17,0x30,0xd1,0x12,0x14,0x10,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x11,0x9,0x3f,0x2,0x7f,0x8,0x3f,0xc8,0x8,0x7,0x8,0xf0,0x8,0xf0,0x4,0xf8,0x10,0x20,0xf8,0x0,0xfc,0x20,0xd8,0x46,0xd0,0xf0,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x0,0x6,0x78,0x8,0xff,0x18,0x2c,0xca,0x8,0x9,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x20,0x24,0xac,0xb0,0x20,0x50,0x50,0x88,0x86,0x4,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x1,0x7f,0x40,0x8f,0x8,0xf,0x8,0xff,0x8,0x30,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x0,0xfe,0x62,0x84,0x20,0xf0,0x44,0xfe,0x20,0x18,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x0,0x1f,0x12,0xff,0x8,0xf,0x5,0x18,0x6c,0x8,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x0,0xf0,0x94,0xfe,0x20,0xf0,0x20,0xc0,0x3c,0x8,
-+0x12,0x14,0x18,0xfe,0x24,0x7e,0x9,0x1f,0x14,0x13,0x14,0x1f,0x22,0x3b,0x22,0x3b,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x20,0xf0,0x50,0x90,0x50,0xf0,0x20,0xa2,0x22,0x9e,
-+0x1,0x0,0x3f,0x22,0x3f,0x22,0x27,0x2a,0x32,0x21,0x22,0x24,0x49,0x42,0x87,0x0,0x0,0x84,0xfe,0x10,0xfc,0x10,0x38,0xd6,0x10,0x0,0x40,0x80,0x10,0x8,0xfc,0x4,
-+0x1,0x0,0x3f,0x22,0x3f,0x26,0x2b,0x32,0x3f,0x20,0x2f,0x20,0x5f,0x40,0x80,0x0,0x0,0x84,0xfe,0x10,0xfc,0x38,0x56,0x90,0xf0,0x80,0xf8,0x80,0xf8,0x82,0x82,0xfe,
-+0x1,0x0,0x3f,0x22,0x3f,0x22,0x27,0x2a,0x32,0x27,0x21,0x22,0x4f,0x42,0x84,0x9,0x0,0x84,0xfe,0x10,0xfc,0x10,0x38,0x56,0x90,0x20,0xc0,0x10,0xf8,0xa0,0x98,0x88,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x28,0x2f,0x28,0x2f,0x20,0x27,0x44,0x44,0x84,0x18,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x40,0x78,0x44,0x3c,0x20,0xf8,0x20,0x22,0x22,0x1e,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x2a,0x2c,0x2f,0x20,0x27,0x20,0x5f,0x42,0x9c,0x0,0x0,0xfe,0x40,0xf8,0x48,0xf8,0x50,0x64,0x7c,0x30,0xc0,0x88,0xfc,0xa0,0x9c,0x80,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x28,0x2f,0x28,0x2f,0x20,0x3f,0x40,0x4f,0x80,0x3f,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x40,0x78,0x44,0x3c,0x88,0xfc,0x80,0xf8,0x80,0xfe,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x28,0x2f,0x28,0x2f,0x24,0x22,0x5f,0x42,0x9c,0x0,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x40,0x78,0x44,0x3c,0x90,0xa0,0xfc,0xa0,0x9c,0x80,
-+0x10,0xa,0x7f,0x54,0x54,0x7f,0x55,0x55,0x7f,0x44,0x55,0x5e,0x54,0x5f,0x94,0x1,0x48,0x48,0xfc,0x48,0x48,0x78,0x48,0x48,0x78,0x48,0x48,0xfe,0x0,0x48,0x86,0x2,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x2a,0x2c,0x2e,0x21,0x27,0x38,0x4f,0x44,0x82,0x1f,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x50,0x64,0xbc,0x40,0xf0,0x8e,0xf8,0x90,0xa0,0xfc,
-+0x1,0x3f,0x24,0x3f,0x24,0x3f,0x2a,0x2c,0x2f,0x24,0x2f,0x3c,0x4a,0x4f,0x84,0x39,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x50,0x64,0x3c,0x8,0x88,0xfe,0x88,0xa8,0x88,0x98,
-+0x10,0xa,0x7f,0x54,0x54,0x7f,0x55,0x55,0x7f,0x44,0x55,0x5e,0x54,0x5f,0x94,0x1,0x10,0x54,0x10,0xfe,0x10,0x54,0x10,0x48,0x48,0xfe,0x28,0xa8,0x5e,0x48,0x88,0x8,
-+0x8,0x10,0x30,0x5f,0x90,0x10,0x1f,0x19,0x15,0x1f,0x1,0x3f,0x1,0xff,0x24,0x42,0xa0,0x90,0xfc,0x40,0x32,0xe,0xf0,0x30,0x50,0xf0,0x0,0xf8,0x0,0xfe,0x88,0x44,
-+0x4,0x7e,0x55,0x55,0x7d,0x55,0x55,0x7c,0x10,0x7d,0x11,0xff,0x1,0xab,0xab,0x0,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,
-+0x4,0x7e,0x54,0x54,0x7d,0x55,0x57,0x7c,0x10,0x7c,0x11,0xff,0x1,0xaa,0xaa,0x0,0x10,0x90,0x90,0x94,0x3e,0x54,0xd4,0x94,0x94,0x94,0x14,0x54,0xd4,0x24,0x24,0x4c,
-+0x4,0x7e,0x54,0x57,0x7c,0x54,0x55,0x7c,0x10,0x7c,0x10,0xfe,0x0,0xaa,0xaa,0x0,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,
-+0x4,0x7e,0x54,0x54,0x7d,0x54,0x54,0x7d,0x10,0x7c,0x10,0xff,0x0,0xaa,0xaa,0x1,0x20,0x20,0x7c,0x84,0x48,0x30,0x60,0x90,0x3e,0x42,0xc4,0x28,0x10,0x20,0x40,0x80,
-+0x4,0x7e,0x54,0x54,0x7d,0x54,0x55,0x7e,0x10,0x7c,0x11,0xfe,0x0,0xaa,0xaa,0x1,0x20,0x20,0x40,0x88,0xfc,0x88,0x6,0x82,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e,0x4,
-+0x4,0x7e,0x55,0x54,0x7c,0x57,0x54,0x7c,0x11,0x7c,0x13,0xfc,0x0,0xaa,0xaa,0x1,0x20,0x28,0xfc,0x20,0x20,0xfe,0x92,0x54,0x10,0x94,0xfe,0x20,0x20,0x58,0x86,0x2,
-+0x3e,0x8,0xfe,0x1c,0x2a,0x48,0x1f,0x19,0x15,0x1f,0x1,0x3f,0x1,0xff,0x24,0x44,0x44,0x7e,0xa4,0x24,0x54,0x88,0xf0,0x30,0x50,0xf0,0x0,0xf8,0x0,0xfe,0x48,0x44,
-+0x4,0x7e,0x54,0x57,0x7c,0x54,0x54,0x7c,0x10,0x7c,0x10,0xfe,0x1,0xaa,0xaa,0x0,0x40,0x20,0x4,0xfe,0x0,0xf8,0x88,0x88,0x88,0xf8,0x20,0xa8,0x26,0x22,0xa0,0x40,
-+0x4,0x7e,0x54,0x55,0x7c,0x54,0x57,0x7c,0x10,0x7d,0x10,0xfe,0x0,0xaa,0xaa,0x1,0x20,0x40,0x88,0xfc,0x20,0x24,0xfe,0x50,0x98,0x26,0xc8,0x30,0xc4,0x18,0x60,0x80,
-+0x4,0x7e,0x55,0x54,0x7c,0x54,0x57,0x7c,0x10,0x7c,0x10,0xfe,0x0,0xaa,0xaa,0x0,0x40,0x28,0xfc,0x0,0x88,0x50,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,
-+0x12,0x6f,0x42,0x6e,0x42,0x7e,0x1,0x54,0x7c,0x54,0x7c,0x54,0x54,0x7d,0x52,0x1,0x10,0x50,0x50,0x50,0x88,0x88,0x6,0xf8,0x48,0x48,0x48,0x48,0x48,0x88,0xa8,0x10,
-+0x12,0x6f,0x42,0x6e,0x42,0x7e,0x0,0x54,0x7c,0x54,0x7c,0x54,0x54,0x7d,0x52,0x0,0x10,0x10,0x10,0x10,0xfe,0x92,0x92,0x92,0x92,0xfe,0x92,0x92,0x92,0x92,0xfe,0x82,
-+0x12,0x6f,0x42,0x6e,0x42,0x7e,0x0,0x55,0x7c,0x54,0x7c,0x54,0x54,0x7d,0x52,0x0,0x8,0xfc,0x40,0x48,0xfc,0x48,0x48,0xfe,0x0,0xfc,0x84,0x84,0x84,0x84,0xfc,0x84,
-+0x12,0x6f,0x42,0x6e,0x42,0x7e,0x0,0x55,0x7d,0x56,0x7f,0x54,0x54,0x7e,0x52,0x1,0x4,0xfe,0x84,0xfc,0x84,0xfc,0x20,0xfe,0x22,0x24,0xfe,0x48,0x88,0x70,0x58,0x84,
-+0x12,0x6f,0x42,0x6e,0x42,0x7e,0x1,0x54,0x7c,0x55,0x7c,0x57,0x54,0x7d,0x52,0x1,0x1c,0xe0,0xa4,0xa8,0x50,0x84,0xf8,0x20,0x48,0xfc,0x20,0xfe,0x20,0x50,0x4e,0x84,
-+0x10,0x3e,0x32,0x2a,0x3e,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xff,0x22,0x22,0x43,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x8a,0x86,0x0,
-+0x10,0x3e,0x32,0x2a,0x3e,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xff,0x22,0x22,0x42,0x0,0x8,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-+0x10,0x3e,0x32,0x2a,0x3e,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xff,0x22,0x22,0x42,0x10,0x14,0xfe,0x10,0x38,0x56,0x90,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x0,0xfe,0x0};
-diff -Nur c3000_pre/linux/drivers/video/font_jis16.h c3000_work/linux/drivers/video/font_jis16.h
---- c3000_pre/linux/drivers/video/font_jis16.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/video/font_jis16.h 2004-12-06 09:25:01.000000000 +0900
-@@ -0,0 +1,30231 @@
-+#define max_jis16 241824
-+unsigned char font_jis16[max_jis16] = {
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x40, 0x30, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x30, 0x48, 0x48, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x60, 0x60, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07,
-+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x04, 0x08, 0x0c, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x60, 0x60, 0x60, 0xc0, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01,
-+ 0x01, 0x01, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-+ 0x10, 0x48, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x30, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x90, 0x40, 0x00, 0x80, 0x40,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
-+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00,
-+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x90, 0x40, 0x00, 0x80, 0xc0,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x08,
-+ 0x08, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x60, 0x0f,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x0c, 0xe0,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x03, 0x04,
-+ 0x04, 0x08, 0x12, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x20,
-+ 0x20, 0x40, 0x80, 0x80, 0x40, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x09,
-+ 0x12, 0x14, 0x18, 0x10, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x20, 0x40, 0x80, 0x00,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x18, 0x20, 0x20, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x20, 0x20, 0x18, 0x07, 0x00, 0x00,
-+ 0x00, 0xc0, 0x30, 0x08, 0x08, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x30, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3f,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
-+ 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x22, 0x41,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
-+ 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x18, 0x20, 0x30, 0x38, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x70, 0x30, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x98, 0x20, 0x30, 0xb8, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x22, 0x77, 0x33, 0x11, 0x66, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0x20, 0x60, 0x40, 0xc0, 0xc0, 0xc0,
-+ 0xc0, 0x40, 0x60, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x18, 0x08, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x08, 0x18, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
-+ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0x00, 0x00,
-+ 0x7c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x18, 0x20, 0x60, 0x60, 0x60, 0x40, 0x80, 0x40,
-+ 0x60, 0x60, 0x60, 0x60, 0x20, 0x18, 0x00, 0x00,
-+ 0x60, 0x10, 0x18, 0x18, 0x18, 0x08, 0x06, 0x08,
-+ 0x18, 0x18, 0x18, 0x18, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02,
-+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01,
-+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
-+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0x90, 0x20, 0x20, 0x40, 0x40,
-+ 0x20, 0x20, 0x90, 0x90, 0x48, 0x48, 0x00, 0x00,
-+ 0x48, 0x48, 0x24, 0x24, 0x12, 0x12, 0x09, 0x09,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x48, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x7e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x07, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
-+ 0x05, 0x05, 0x05, 0x7d, 0x41, 0x7f, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0,
-+ 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, 0xf8, 0x00, 0x00,
-+ 0x7c, 0x3c, 0x1c, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x1c, 0x1c, 0x3c, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x01, 0x01,
-+ 0x01, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02,
-+ 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x80,
-+ 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x3f, 0x00,
-+ 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01,
-+ 0x3f, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x80, 0xf8, 0x00, 0x00, 0x00,
-+ 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x04, 0x18, 0x20, 0x18,
-+ 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00,
-+ 0x20, 0x18, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x04, 0x18, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x10, 0x60,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0c, 0x30, 0x0c, 0x03, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-+ 0x30, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x03, 0x0c,
-+ 0x30, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x30, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1c, 0x36, 0x23, 0x23,
-+ 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x88, 0x88,
-+ 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x22,
-+ 0x41, 0x41, 0x41, 0x22, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x18, 0x28, 0x48, 0x88, 0x08, 0x08,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x04, 0x08, 0x08, 0x08, 0x04, 0x03,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x18, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x18, 0x18, 0x30, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1b, 0x1b, 0x36, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x30, 0x48, 0x49, 0x33, 0x06, 0x06, 0x06,
-+ 0x06, 0x06, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xe8, 0x18, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x10, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x18, 0x0c, 0x3f, 0x06, 0x03,
-+ 0x3f, 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x10, 0x20, 0x40, 0xf0, 0x80, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x07, 0x09, 0x11, 0x19, 0x0f, 0x03,
-+ 0x01, 0x19, 0x19, 0x09, 0x07, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x20, 0x30, 0x30, 0x00, 0xc0,
-+ 0x60, 0x30, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x05, 0x09, 0x19, 0x19,
-+ 0x1a, 0x0a, 0x06, 0x07, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x80, 0x40, 0x60, 0x60, 0x00,
-+ 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x02, 0x06, 0x06, 0x3f,
-+ 0x06, 0x36, 0x4c, 0x4f, 0x39, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x20, 0x30, 0x20, 0x00, 0x00, 0xe0,
-+ 0x00, 0x00, 0x08, 0xf0, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x18, 0x24, 0x66, 0x66, 0x24, 0x19, 0x02,
-+ 0x04, 0x09, 0x11, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x60,
-+ 0x90, 0x98, 0x98, 0x90, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x02, 0x02, 0x1f, 0x04, 0x04, 0x04,
-+ 0x04, 0x3f, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x20, 0xf8, 0x40, 0x40, 0x40,
-+ 0x40, 0xf0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x07, 0x08, 0x18, 0x19, 0x0e, 0x0c, 0x16,
-+ 0x33, 0x31, 0x30, 0x19, 0x0e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x78, 0x30,
-+ 0x20, 0xc0, 0xc0, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x03, 0x19, 0x1d, 0x03, 0x03,
-+ 0x1d, 0x19, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x30, 0x70, 0x80, 0x80,
-+ 0x70, 0x30, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x10, 0x23, 0x24, 0x44, 0x48,
-+ 0x49, 0x27, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x10, 0xc8, 0xc8, 0xc8, 0x88,
-+ 0x90, 0x60, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00,
-+ 0x03, 0x04, 0x04, 0x06, 0x03, 0x03, 0x04, 0x06,
-+ 0x03, 0x01, 0x00, 0x04, 0x04, 0x03, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0x00, 0x00, 0x80, 0xc0, 0x40,
-+ 0x80, 0x80, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x02, 0x02, 0x7c, 0x30, 0x0c,
-+ 0x04, 0x09, 0x0a, 0x1c, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x7c, 0x18, 0x60,
-+ 0x40, 0x20, 0xa0, 0x70, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x7f, 0x3f, 0x0f,
-+ 0x07, 0x0f, 0x0e, 0x1c, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xfc, 0xf8, 0xe0,
-+ 0xc0, 0xe0, 0xe0, 0x70, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0c, 0x10, 0x10, 0x20, 0x20,
-+ 0x20, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x60, 0x10, 0x10, 0x08, 0x08,
-+ 0x08, 0x10, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1f, 0x3f, 0x3f,
-+ 0x3f, 0x1f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8,
-+ 0xf8, 0xf0, 0xf0, 0xe0, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0c, 0x13, 0x14, 0x28, 0x28,
-+ 0x28, 0x14, 0x13, 0x0c, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x60, 0x90, 0x50, 0x28, 0x28,
-+ 0x28, 0x50, 0x90, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40,
-+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04,
-+ 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f,
-+ 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc,
-+ 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
-+ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
-+ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x20,
-+ 0x20, 0x10, 0x10, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f,
-+ 0x0f, 0x1f, 0x1f, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0,
-+ 0xe0, 0xf0, 0xf0, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04,
-+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x07,
-+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xf0, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x21, 0x13, 0x09, 0x04, 0x12, 0x39,
-+ 0x12, 0x04, 0x09, 0x13, 0x21, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x90, 0x20, 0x40, 0x90, 0x38,
-+ 0x90, 0x40, 0x20, 0x90, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x3f, 0x00, 0x00, 0x7f, 0x7f, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xf8, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7f, 0x00,
-+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0xf8, 0x60,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x02, 0x04, 0x18, 0x7f, 0x18,
-+ 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x05, 0x09, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x20, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09,
-+ 0x05, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x00, 0x00,
-+ 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00,
-+ 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0c, 0x10, 0x20, 0x3f, 0x20,
-+ 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0xf0, 0x10,
-+ 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x10, 0x20, 0x20, 0x20, 0x10,
-+ 0x0f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x3f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x10, 0x20,
-+ 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0c, 0x10, 0x20, 0x20, 0x20,
-+ 0x20, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x10,
-+ 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04,
-+ 0x08, 0x08, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40,
-+ 0x20, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04,
-+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x7f,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x08, 0xf0,
-+ 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x08, 0x10, 0x3f, 0x40, 0x3f,
-+ 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x08, 0xf0,
-+ 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x10, 0x1f, 0x08, 0x08, 0x04,
-+ 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0x10, 0xf0, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20,
-+ 0x20, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
-+ 0x04, 0x08, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x00, 0x00, 0x03, 0x06, 0x04,
-+ 0x0c, 0x0c, 0x0c, 0x05, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x60, 0x20, 0x20, 0xa0, 0x60, 0x60,
-+ 0x60, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x1f, 0x18, 0x08, 0x0c, 0x04,
-+ 0x06, 0x02, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xf0, 0x10, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x3f, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x1c, 0x08, 0x3f, 0x00, 0x00,
-+ 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
-+ 0xf0, 0x40, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x04, 0x08, 0x11, 0x22, 0x11,
-+ 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x22, 0x11, 0x08, 0x04, 0x02, 0x01, 0x02,
-+ 0x04, 0x08, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x20,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
-+ 0x22, 0x74, 0x1c, 0x0c, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x21, 0x21,
-+ 0x12, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x60, 0x90, 0x08, 0x08,
-+ 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x10,
-+ 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x80, 0x80,
-+ 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x01, 0x01,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
-+ 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-+ 0xc0, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x06, 0x0e, 0x11, 0x11, 0x19, 0x19, 0x0c, 0x0c,
-+ 0x06, 0x06, 0x02, 0x02, 0x1d, 0x19, 0x00, 0x00,
-+ 0x60, 0xe0, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0,
-+ 0x60, 0x60, 0x20, 0x20, 0xc0, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x04, 0x04, 0x03, 0x01, 0x03, 0x03, 0x04,
-+ 0x04, 0x08, 0x0f, 0x10, 0x38, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0xc0,
-+ 0xc0, 0x60, 0xe0, 0x30, 0x78, 0x00, 0x00, 0x00,
-+ 0x00, 0x18, 0x24, 0x66, 0x66, 0x25, 0x1a, 0x03,
-+ 0x06, 0x0e, 0x16, 0x12, 0x21, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x10,
-+ 0xa8, 0xec, 0xec, 0xa8, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x04, 0x07, 0x1f, 0x1c, 0x04, 0x04,
-+ 0x07, 0x1f, 0x1c, 0x04, 0x04, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xe0, 0xe0, 0x80, 0x80, 0x80, 0xe0,
-+ 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x06,
-+ 0x04, 0x04, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60,
-+ 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x07, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x60, 0x20, 0x30, 0x10, 0x10,
-+ 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x03, 0x01, 0x09, 0x1f, 0x09, 0x03, 0x03,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x00, 0x20, 0xf0, 0x20, 0x80, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x03, 0x09, 0x1f, 0x09, 0x03, 0x01, 0x01,
-+ 0x03, 0x09, 0x1f, 0x09, 0x03, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x20, 0xf0, 0x20, 0x80, 0x00, 0x00,
-+ 0x80, 0x20, 0xf0, 0x20, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x07, 0x07, 0x07, 0x03, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x18, 0x20, 0x20, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x20, 0x20, 0x18, 0x07, 0x00, 0x00,
-+ 0x00, 0xc0, 0x30, 0x08, 0x08, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x30, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x0f, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x08, 0x18, 0x1c, 0x08, 0x00, 0x01,
-+ 0x02, 0x04, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x60, 0x60, 0xc0, 0x80, 0x00,
-+ 0x00, 0x20, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x08, 0x18, 0x18, 0x00, 0x03, 0x00,
-+ 0x18, 0x18, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x60, 0x60, 0xc0, 0x80, 0x40,
-+ 0x60, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x02, 0x04, 0x08, 0x18,
-+ 0x1f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
-+ 0xf0, 0xc0, 0xc0, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x00,
-+ 0x00, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0x00, 0x00, 0x80, 0xc0, 0x60,
-+ 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x04, 0x0c, 0x08, 0x1b, 0x1c, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x0f, 0x10, 0x00, 0x00, 0x01, 0x01,
-+ 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0xe0, 0x40, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x08, 0x18, 0x1c, 0x0e, 0x07, 0x0d,
-+ 0x18, 0x18, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x60, 0x60, 0xc0, 0x80, 0xc0,
-+ 0xe0, 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x07,
-+ 0x00, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x60, 0x60, 0x60, 0xe0, 0x60,
-+ 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08,
-+ 0x0f, 0x10, 0x10, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60,
-+ 0xe0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x30,
-+ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xd0, 0x30, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xd0, 0x30, 0x10, 0x00, 0x00, 0xf8, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-+ 0x38, 0x30, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1a, 0x1c,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x80, 0xc0, 0xc0,
-+ 0x60, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x18, 0x1c, 0x1c, 0x16, 0x16, 0x17,
-+ 0x13, 0x12, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x30, 0x70, 0x70, 0xb0, 0xb0, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x18, 0x1c, 0x16, 0x16, 0x13, 0x11,
-+ 0x11, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa0,
-+ 0xa0, 0xe0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x33, 0x1c, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0xb0, 0x60, 0xe0, 0x18, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0xc0,
-+ 0x60, 0x60, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x08, 0x18, 0x1c, 0x0f, 0x03, 0x00,
-+ 0x10, 0x18, 0x1c, 0x13, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xa0, 0x60, 0x20, 0x00, 0x00, 0xc0, 0xe0,
-+ 0x30, 0x30, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x23, 0x43, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06,
-+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3b, 0x19, 0x19, 0x19, 0x0d, 0x0e, 0x0e,
-+ 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xb8, 0x90, 0x90, 0x90, 0xd0, 0xe0, 0xe0,
-+ 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03,
-+ 0x04, 0x08, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80,
-+ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x20, 0x01, 0x01, 0x03, 0x06,
-+ 0x06, 0x0c, 0x18, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x60, 0xc0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x0c, 0x03,
-+ 0x0c, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x60, 0xe0,
-+ 0x60, 0x60, 0xe0, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1c, 0x0c, 0x0c, 0x0d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0e, 0x1d, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x20, 0x00,
-+ 0x00, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x60, 0x60, 0x60, 0xe0, 0x60, 0x60,
-+ 0x60, 0x60, 0xe0, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x18, 0x1f,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x30, 0xf0,
-+ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x06, 0x06, 0x1f, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x60, 0x60, 0x00, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x08, 0x08,
-+ 0x07, 0x0c, 0x0f, 0x18, 0x08, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0xc0, 0x80,
-+ 0x00, 0x00, 0xc0, 0xe0, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x1c, 0x0c, 0x0c, 0x0d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x01, 0x00, 0x0f, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x01, 0x00, 0x0f, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x19, 0x19, 0x0e, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0d, 0x0e,
-+ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x70, 0x40, 0x80, 0xc0, 0xc0,
-+ 0x60, 0x60, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x76, 0x3b, 0x33, 0x33,
-+ 0x33, 0x33, 0x33, 0x7b, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xb8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0e, 0x0d, 0x0c, 0x1e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x60, 0x60,
-+ 0x60, 0x60, 0xe0, 0x60, 0x60, 0xf0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x60, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x1c, 0x0f,
-+ 0x03, 0x10, 0x18, 0x17, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00,
-+ 0xc0, 0xe0, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x02, 0x06, 0x06, 0x1f, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x70, 0x98, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x18, 0x0c, 0x0c,
-+ 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3d, 0x19, 0x19, 0x0e,
-+ 0x0e, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xb8, 0x90, 0x90, 0xd0,
-+ 0xe0, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x06, 0x03,
-+ 0x03, 0x04, 0x08, 0x1c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x40, 0x80,
-+ 0x80, 0xc0, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x06, 0x06,
-+ 0x03, 0x03, 0x01, 0x19, 0x19, 0x0e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x01, 0x03,
-+ 0x06, 0x0c, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0x80, 0x00,
-+ 0x00, 0x00, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x04, 0x02, 0x13, 0x0e, 0x04,
-+ 0x07, 0x0d, 0x16, 0x26, 0x2a, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80,
-+ 0xe0, 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x04, 0x02, 0x02, 0x1f, 0x04, 0x04, 0x07, 0x0d,
-+ 0x15, 0x22, 0x26, 0x2a, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x00, 0x80, 0x80, 0xe0, 0x10,
-+ 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10,
-+ 0x10, 0x10, 0x0a, 0x0c, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20,
-+ 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x20, 0x20, 0x20, 0x22,
-+ 0x24, 0x14, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x08, 0x08,
-+ 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x13,
-+ 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80,
-+ 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x02, 0x01, 0x00, 0x00, 0x03, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01,
-+ 0x0e, 0x01, 0x02, 0x07, 0x09, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xc0,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
-+ 0x04, 0x03, 0x00, 0x00, 0x11, 0x0e, 0x01, 0x02,
-+ 0x04, 0x0e, 0x11, 0x21, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x00, 0x00, 0xc0, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x0c, 0x38,
-+ 0x0b, 0x0c, 0x18, 0x28, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x30, 0x20, 0x00,
-+ 0xc0, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x05, 0x06, 0x1c, 0x04, 0x05,
-+ 0x06, 0x0c, 0x34, 0x0c, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x30, 0x08, 0x0c, 0x00, 0x60, 0x90,
-+ 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08,
-+ 0x08, 0x10, 0x11, 0x25, 0x22, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x60, 0x10, 0x88, 0x98, 0x80,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08,
-+ 0x08, 0x10, 0x11, 0x25, 0x22, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x10, 0x40, 0x20, 0x90, 0x88, 0x98,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x01, 0x01, 0x0f, 0x00, 0x00, 0x1f, 0x00,
-+ 0x00, 0x07, 0x08, 0x08, 0x06, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x60, 0x80, 0x80, 0xf0, 0x40, 0x20,
-+ 0x20, 0xf0, 0x10, 0x00, 0x00, 0xc0, 0x00, 0x00,
-+ 0x04, 0x02, 0x02, 0x1f, 0x01, 0x01, 0x3e, 0x00,
-+ 0x00, 0x0f, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00,
-+ 0x08, 0x24, 0xd0, 0x00, 0x00, 0xe0, 0x80, 0x40,
-+ 0x40, 0xe0, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x08, 0x08,
-+ 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x08, 0x08,
-+ 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0x88, 0x24, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x10, 0x10, 0x23, 0x20, 0x20,
-+ 0x20, 0x20, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x80, 0x40, 0x20, 0x20, 0x3c, 0xe0, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00,
-+ 0x01, 0x40, 0x20, 0x20, 0x20, 0x47, 0x40, 0x40,
-+ 0x40, 0x40, 0x30, 0x20, 0x20, 0x01, 0x00, 0x00,
-+ 0x08, 0xa4, 0x50, 0x40, 0x78, 0xc0, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x10, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x10, 0x0f, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0xf0, 0x88, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x00,
-+ 0x04, 0x02, 0x01, 0x21, 0x1e, 0x00, 0x00, 0x07,
-+ 0x08, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x30, 0xc0, 0x80, 0x40, 0x40, 0xe0,
-+ 0x20, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
-+ 0x04, 0x02, 0x01, 0x21, 0x1e, 0x00, 0x00, 0x07,
-+ 0x08, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x30, 0xc8, 0x80, 0x40, 0x40, 0xe0,
-+ 0x20, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x90, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x40, 0x3f, 0x00, 0x03, 0x04, 0x04,
-+ 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x80, 0xf8, 0x80, 0x80, 0x80, 0xc0, 0x40,
-+ 0xc0, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x40, 0x3f, 0x00, 0x03, 0x04, 0x04,
-+ 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x28, 0x94, 0xf8, 0x80, 0x80, 0x80, 0xc0, 0x40,
-+ 0xc0, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x4b, 0x3c, 0x08,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x40, 0x78, 0xc0, 0x40, 0x40,
-+ 0x40, 0xc0, 0x40, 0x00, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x4b, 0x3c, 0x08,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x08, 0x84, 0x50, 0x48, 0x78, 0xc0, 0x40, 0x40,
-+ 0x40, 0xc0, 0x40, 0x00, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x09, 0x06, 0x00, 0x01, 0x02, 0x07, 0x38,
-+ 0x01, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x80, 0x00, 0x38, 0xc0, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
-+ 0x00, 0x09, 0x06, 0x00, 0x01, 0x02, 0x07, 0x38,
-+ 0x01, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xc8, 0x64, 0x90, 0x00, 0x38, 0xc0, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x07, 0x3c, 0x08, 0x08, 0x08,
-+ 0x10, 0x10, 0x11, 0x21, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0xf0, 0x18, 0x20,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x07, 0x3c, 0x08, 0x08, 0x08,
-+ 0x10, 0x10, 0x11, 0x21, 0x20, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x90, 0x00, 0x00, 0xf0, 0x18, 0x20,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08, 0x0b,
-+ 0x1c, 0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x20,
-+ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08, 0x0b,
-+ 0x1c, 0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0x08, 0xc4, 0x10, 0x08, 0x00, 0xc0, 0x20,
-+ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06,
-+ 0x38, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20,
-+ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0x08,
-+ 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x10, 0xe0, 0x10, 0x08, 0x08, 0x08,
-+ 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x43, 0x3c, 0x01, 0x01, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x43, 0x3c, 0x01, 0x01, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0xc0, 0x88, 0x24, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x06,
-+ 0x08, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x06,
-+ 0x08, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x24, 0x10, 0x00, 0x70, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x04, 0x02, 0x02, 0x3f, 0x04, 0x08, 0x08, 0x10,
-+ 0x10, 0x20, 0x03, 0x04, 0x04, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x70, 0x18, 0x20, 0x40,
-+ 0x40, 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x10, 0x13, 0x20, 0x20, 0x20,
-+ 0x20, 0x22, 0x2a, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x18, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x00, 0x00, 0x13, 0x15, 0x19, 0x12,
-+ 0x2a, 0x4c, 0x4c, 0x54, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0xe0, 0x10, 0x08, 0x08,
-+ 0x08, 0x08, 0x68, 0x90, 0x68, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x08, 0x4c, 0x3f, 0x0c, 0x08,
-+ 0x18, 0x18, 0x28, 0x59, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0xf0, 0x18, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x0d, 0x11, 0x11, 0x22, 0x22,
-+ 0x24, 0x24, 0x28, 0x10, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x20, 0x10, 0x08, 0x08, 0x08,
-+ 0x08, 0x10, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x14, 0x13, 0x20, 0x20, 0x20,
-+ 0x20, 0x29, 0x12, 0x12, 0x11, 0x00, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0x38, 0xe0, 0x20, 0x20, 0x20,
-+ 0x20, 0xe0, 0x30, 0x28, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0x28, 0x27, 0x40, 0x40, 0x40,
-+ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00,
-+ 0x88, 0x44, 0x50, 0x78, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0x28, 0x27, 0x40, 0x40, 0x40,
-+ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00,
-+ 0x98, 0x64, 0x64, 0x78, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x04, 0x3c, 0x08, 0x08, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0x40, 0x40, 0x20, 0x20, 0x30, 0x28, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x04, 0x3c, 0x08, 0x08, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x08, 0x44, 0x50, 0x28, 0x20, 0x30, 0x28, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x04, 0x3c, 0x08, 0x08, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x30, 0x48, 0x48, 0x30, 0x20, 0x30, 0x28, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0x02, 0x01,
-+ 0x02, 0x4c, 0x38, 0x24, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0xb0, 0x88, 0x9c, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0x02, 0x01,
-+ 0x02, 0x4c, 0x38, 0x24, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x88, 0xa4, 0x10, 0x00, 0x00, 0x00,
-+ 0xb0, 0x88, 0x9c, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0x02, 0x01,
-+ 0x02, 0x4c, 0x38, 0x24, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x98, 0xa4, 0x24, 0x18, 0x00, 0x00,
-+ 0xb0, 0x88, 0x9c, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x50, 0x20,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x50, 0x20,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x48, 0x20, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x50, 0x20,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x30, 0x48, 0x48, 0x30, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x22, 0x11, 0x10, 0x10, 0x23, 0x20, 0x20,
-+ 0x20, 0x29, 0x12, 0x12, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x30, 0xc0, 0x40, 0x38, 0xe0, 0x20, 0x20,
-+ 0x20, 0xe0, 0x30, 0x28, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x44, 0x23, 0x20, 0x20, 0x47, 0x40, 0x40,
-+ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00,
-+ 0x00, 0x68, 0x84, 0x90, 0x78, 0xc0, 0x40, 0x40,
-+ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x44, 0x23, 0x20, 0x20, 0x47, 0x40, 0x40,
-+ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00,
-+ 0x18, 0x64, 0xa4, 0x98, 0x70, 0xc0, 0x40, 0x40,
-+ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x10, 0x0f, 0x00, 0x10, 0x0f, 0x00,
-+ 0x00, 0x0f, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xf0, 0x80, 0x80, 0xe0, 0x80, 0x80,
-+ 0x80, 0x80, 0xe0, 0x90, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x07, 0x01, 0x01, 0x02, 0x02, 0x0f,
-+ 0x34, 0x44, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x00, 0x00, 0x20, 0x10, 0xf0,
-+ 0x18, 0x24, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x27, 0x1c, 0x04, 0x1c, 0x24, 0x24,
-+ 0x2c, 0x18, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x30, 0x08, 0x0c, 0x00, 0x00,
-+ 0x20, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x00, 0x10, 0x13, 0x1c, 0x11, 0x29,
-+ 0x2a, 0x46, 0x44, 0x4a, 0x30, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0xc0, 0xa0, 0x10, 0x08,
-+ 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x02, 0x01, 0x11, 0x0e, 0x03, 0x12, 0x24, 0x1c,
-+ 0x07, 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x20,
-+ 0x10, 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x09, 0x0e,
-+ 0x3c, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x10,
-+ 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x01, 0x18, 0x10, 0x0b, 0x4c, 0x34,
-+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x00, 0xf0, 0x08, 0x08, 0x08,
-+ 0x70, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x21, 0x27,
-+ 0x29, 0x31, 0x23, 0x21, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10,
-+ 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x40, 0x21, 0x22, 0x24, 0x28, 0x30,
-+ 0x34, 0x22, 0x21, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0xe0, 0x90, 0x88, 0x88, 0x88,
-+ 0x88, 0x90, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x0f, 0x11, 0x11, 0x0e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc0, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00, 0x00,
-+ 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x1f, 0x21, 0x21, 0x1e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x01, 0x01, 0x06, 0x08, 0x08, 0x08, 0x09,
-+ 0x0e, 0x08, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xe0,
-+ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x10, 0x09, 0x0a, 0x0c, 0x0c, 0x08, 0x08, 0x08,
-+ 0x08, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x07, 0x00, 0x01, 0x02, 0x07, 0x0c,
-+ 0x10, 0x20, 0x03, 0x04, 0x04, 0x03, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x80, 0x00, 0x00, 0xc0, 0x20,
-+ 0x10, 0x10, 0x90, 0x60, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x09, 0x0a, 0x1c, 0x6c, 0x08,
-+ 0x18, 0x18, 0x28, 0x48, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x18, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x0e, 0x01, 0x02, 0x04, 0x0f, 0x08,
-+ 0x10, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x20,
-+ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x06,
-+ 0x1d, 0x06, 0x0c, 0x0c, 0x14, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x08, 0x4c, 0x3f, 0x0c, 0x08,
-+ 0x18, 0x18, 0x28, 0x48, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08,
-+ 0x08, 0x08, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x09, 0x06, 0x01, 0x01, 0x03, 0x0e, 0x12,
-+ 0x24, 0x24, 0x28, 0x19, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x10, 0x08,
-+ 0x08, 0x08, 0xc8, 0x30, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x09, 0x07, 0x02, 0x07, 0x08, 0x10, 0x06,
-+ 0x09, 0x07, 0x08, 0x1c, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0x80, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20,
-+ 0xc0, 0x00, 0x00, 0xe0, 0x10, 0x38, 0x00, 0x00,
-+ 0x04, 0x02, 0x12, 0x0f, 0x04, 0x04, 0x0f, 0x18,
-+ 0x21, 0x02, 0x04, 0x08, 0x08, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x20, 0x38, 0xc0,
-+ 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00,
-+ 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x0f,
-+ 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x88, 0x90, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x1e,
-+ 0x02, 0x01, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x21, 0x1e, 0x00, 0x02, 0x01, 0x01,
-+ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x20, 0x40, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
-+ 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x30,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x1e,
-+ 0x08, 0x08, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x01, 0x3e, 0x10, 0x10,
-+ 0x08, 0x08, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f,
-+ 0x01, 0x01, 0x01, 0x01, 0x1e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x01, 0x01,
-+ 0x01, 0x01, 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x0f,
-+ 0x01, 0x02, 0x04, 0x08, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x1f, 0x00, 0x01,
-+ 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x40, 0x78, 0xc0, 0xc0, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x40, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x11, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0x20, 0x20, 0x20, 0x40, 0xc0, 0x80, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x11, 0x20, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x10, 0xf0, 0x10, 0x10, 0x10,
-+ 0x20, 0x20, 0x20, 0x40, 0xc0, 0x80, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x02, 0x03, 0x1d, 0x01, 0x01,
-+ 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x78,
-+ 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x02, 0x03, 0x1d, 0x01, 0x01,
-+ 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x70, 0x80, 0x00, 0x00, 0x78,
-+ 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x03, 0x02, 0x04, 0x04, 0x08,
-+ 0x10, 0x00, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x70, 0x90, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x07, 0x04, 0x08, 0x08, 0x10,
-+ 0x21, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x08, 0x24, 0xd4, 0x50, 0x40, 0x40, 0x80, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x04, 0x0f, 0x09, 0x10,
-+ 0x20, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x38, 0xc0, 0x00, 0x80,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x04, 0x0f, 0x09, 0x10,
-+ 0x20, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x10, 0x38, 0xc0, 0x00, 0x80,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x21, 0x1e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x1c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10,
-+ 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x43, 0x3c, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0xd0, 0x40, 0x40, 0x40, 0x40,
-+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x04, 0x04, 0x24, 0x1f, 0x04,
-+ 0x04, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x04, 0x04, 0x24, 0x1f, 0x04,
-+ 0x04, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x08, 0xa4, 0x54, 0x50, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0c, 0x02, 0x00, 0x18, 0x04, 0x00,
-+ 0x00, 0x00, 0x00, 0x13, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0c, 0x02, 0x00, 0x18, 0x04, 0x00,
-+ 0x00, 0x00, 0x00, 0x13, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x24, 0x14, 0x10, 0x00, 0x08, 0x10,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0x40, 0x40, 0x80, 0x80,
-+ 0x40, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x21, 0x1e, 0x00, 0x00, 0x01, 0x01,
-+ 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0xd4, 0x50, 0x80, 0x80, 0x00, 0x00,
-+ 0x80, 0x40, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x04, 0x05, 0x26, 0x1c,
-+ 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x88, 0x10, 0x20,
-+ 0x40, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x04, 0x05, 0x26, 0x1c,
-+ 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x10, 0x78, 0x88, 0x10, 0x20,
-+ 0x40, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x04, 0x04, 0x04, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x10, 0x10, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x10, 0x08, 0x08, 0x08, 0x00,
-+ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x08, 0xa4, 0x54, 0x50, 0x40, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x02, 0x02, 0x05, 0x08,
-+ 0x10, 0x00, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0xc0,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x03, 0x04, 0x04, 0x0a, 0x11,
-+ 0x20, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0xf0, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x1e, 0x01, 0x00, 0x23, 0x1c,
-+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x40, 0x80, 0x00, 0x00, 0xf8, 0x80, 0x80,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x1e, 0x01, 0x00, 0x23, 0x1c,
-+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x08, 0x64, 0x94, 0x10, 0x00, 0xf8, 0x80, 0x80,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x12,
-+ 0x0a, 0x08, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x04, 0x22, 0x11, 0x09, 0x08, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x10, 0x10, 0x20,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x44, 0x24, 0x10, 0x10,
-+ 0x00, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0x94, 0x50, 0x40, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x11, 0x0e, 0x00, 0x00, 0x23, 0x1c,
-+ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x00, 0x00, 0x78, 0x80, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x11, 0x0e, 0x00, 0x20, 0x1f, 0x00,
-+ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x08, 0x24, 0xd4, 0x10, 0x00, 0xf0, 0x00, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x0e, 0x09,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x90, 0x50, 0x40, 0x00, 0x00, 0x00, 0x80,
-+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x00, 0x00, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0xf8, 0x80, 0x80, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x0e, 0x01,
-+ 0x00, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0x40, 0xc0,
-+ 0xc0, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x1e, 0x00, 0x00, 0x01,
-+ 0x03, 0x0d, 0x31, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x40, 0x80, 0x00,
-+ 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0x20, 0x20, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10,
-+ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x24, 0x14, 0x90, 0x40, 0x20, 0x10,
-+ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x18, 0x24, 0x24, 0x18, 0x80, 0x40, 0x20, 0x10,
-+ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x0f, 0x08,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x0f,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x48, 0x28, 0x20, 0x00, 0xe0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x0f,
-+ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00,
-+ 0x00, 0x30, 0x48, 0x48, 0x30, 0x00, 0xe0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x23, 0x1c, 0x00, 0x00, 0x00, 0x01,
-+ 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00,
-+ 0x08, 0x24, 0xd4, 0x50, 0x40, 0x80, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x23, 0x1c, 0x00, 0x00, 0x00, 0x01,
-+ 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00,
-+ 0x18, 0x24, 0xe4, 0x58, 0x40, 0x80, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x48, 0x30,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x48, 0x30,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x90, 0x50, 0x40, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x48, 0x30,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x60, 0x90, 0x90, 0x60, 0x00, 0x80, 0x40,
-+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x01, 0x01,
-+ 0x09, 0x09, 0x11, 0x21, 0x03, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x40,
-+ 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x01, 0x01,
-+ 0x09, 0x09, 0x11, 0x21, 0x03, 0x01, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x10, 0xf0, 0x00, 0x00, 0x40,
-+ 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x01, 0x01,
-+ 0x09, 0x09, 0x11, 0x21, 0x03, 0x01, 0x00, 0x00,
-+ 0x18, 0x24, 0x24, 0x18, 0xf0, 0x00, 0x00, 0x40,
-+ 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x20, 0x1f, 0x00, 0x00, 0x00,
-+ 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x08, 0x10, 0x20, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x03, 0x00, 0x00, 0x08, 0x06, 0x01,
-+ 0x00, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00, 0x80,
-+ 0x40, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00,
-+ 0x00, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
-+ 0x04, 0x04, 0x29, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
-+ 0x20, 0x30, 0xc8, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x40,
-+ 0xa0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x0f, 0x02, 0x02, 0x23, 0x1e,
-+ 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x03,
-+ 0x1e, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x90,
-+ 0x20, 0x40, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x08, 0x04, 0x04, 0x03, 0x26, 0x1a, 0x01,
-+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x78, 0x88, 0x10, 0x20, 0x40,
-+ 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e,
-+ 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40,
-+ 0x40, 0x80, 0xe0, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x11, 0x0e, 0x00, 0x00,
-+ 0x00, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80,
-+ 0x80, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00,
-+ 0x01, 0x0e, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20,
-+ 0xe0, 0x40, 0x40, 0xc0, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x01, 0x0e,
-+ 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x20,
-+ 0x20, 0x20, 0x20, 0xe0, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x11, 0x0e, 0x00, 0x23, 0x1c, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x00, 0x70, 0x90, 0x10, 0x10,
-+ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x08, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x88, 0x88,
-+ 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x0b, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x21, 0x1e, 0x10, 0x10, 0x08,
-+ 0x08, 0x09, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x20,
-+ 0x20, 0xe0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0f,
-+ 0x08, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10,
-+ 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x21, 0x1e, 0x10, 0x08, 0x08, 0x08,
-+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x20, 0x20,
-+ 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x1e, 0x08, 0x04,
-+ 0x05, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80,
-+ 0xf0, 0x88, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x1e, 0x02, 0x01, 0x01,
-+ 0x01, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x40, 0x80, 0x00,
-+ 0x00, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x01, 0x0e,
-+ 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20, 0xe0, 0x20,
-+ 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x18, 0x04, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x13, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x10,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x02, 0x43, 0x3c, 0x20, 0x10,
-+ 0x10, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x08, 0x24, 0x14, 0x10, 0xe0, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x11,
-+ 0x0e, 0x02, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-+ 0x20, 0x20, 0x20, 0x20, 0xc0, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04,
-+ 0x07, 0x08, 0x10, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
-+ 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08,
-+ 0x0f, 0x10, 0x10, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60,
-+ 0xe0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x30,
-+ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60,
-+ 0x60, 0x30, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x20, 0x01, 0x01, 0x03, 0x06,
-+ 0x06, 0x0c, 0x18, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x60, 0xc0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x34, 0x37, 0x34,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x58, 0xd8, 0x58,
-+ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1a, 0x1c,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x80, 0xc0, 0xc0,
-+ 0x60, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08,
-+ 0x08, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60,
-+ 0x60, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x18, 0x1c, 0x1c, 0x16, 0x16, 0x17,
-+ 0x13, 0x12, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x30, 0x70, 0x70, 0xb0, 0xb0, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x18, 0x1c, 0x16, 0x16, 0x13, 0x11,
-+ 0x11, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa0,
-+ 0xa0, 0xe0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x20, 0x00, 0x10, 0x1f, 0x1f,
-+ 0x10, 0x00, 0x10, 0x1f, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0xe0, 0x20, 0x00, 0x20, 0xe0, 0xe0,
-+ 0x20, 0x00, 0x10, 0xe0, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x01,
-+ 0x02, 0x04, 0x08, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x00, 0x80, 0x00,
-+ 0x00, 0x10, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x23, 0x43, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0c, 0x17, 0x23, 0x23, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0xa0, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x07, 0x1b, 0x33, 0x33, 0x33,
-+ 0x1b, 0x07, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x80, 0x60, 0x30, 0x30, 0x30,
-+ 0x60, 0x80, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03,
-+ 0x04, 0x08, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80,
-+ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x63, 0x33, 0x33, 0x33, 0x13,
-+ 0x0f, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x18, 0x30, 0x30, 0x30, 0x20,
-+ 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x18,
-+ 0x08, 0x04, 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x30,
-+ 0x20, 0x40, 0x88, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x18, 0x10,
-+ 0x10, 0x10, 0x19, 0x0e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x20, 0x20, 0xa0, 0x60, 0x60,
-+ 0x40, 0xc0, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x02, 0x04, 0x05, 0x04,
-+ 0x0c, 0x08, 0x0c, 0x1b, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xe0, 0x10, 0x10, 0x10, 0x20, 0xc0, 0x20,
-+ 0x20, 0x20, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x01, 0x01,
-+ 0x01, 0x03, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x04, 0x04, 0x02, 0x03, 0x04, 0x0c,
-+ 0x08, 0x08, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xe0, 0x10, 0x00, 0x80, 0xc0, 0x40,
-+ 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x04, 0x03,
-+ 0x06, 0x0c, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x80,
-+ 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x04, 0x0c, 0x07, 0x02, 0x04, 0x04, 0x08,
-+ 0x08, 0x0e, 0x07, 0x00, 0x06, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0xc0, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x17, 0x02, 0x04,
-+ 0x04, 0x0c, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20,
-+ 0x20, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x02, 0x06, 0x04, 0x0f, 0x0c,
-+ 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x10, 0x10, 0x10, 0x30, 0xf0, 0x20,
-+ 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x06,
-+ 0x04, 0x04, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x0d, 0x0e,
-+ 0x09, 0x19, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0xa0, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
-+ 0x06, 0x04, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xc0, 0x40, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x0c,
-+ 0x08, 0x08, 0x0c, 0x1b, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x60, 0x40,
-+ 0x40, 0x40, 0xe8, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x04, 0x04,
-+ 0x04, 0x07, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x04, 0x03, 0x02, 0x04, 0x04, 0x03, 0x04,
-+ 0x08, 0x08, 0x0e, 0x07, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0x60, 0xe0, 0x00, 0x00, 0x00, 0xc0, 0xc0,
-+ 0x00, 0x00, 0x00, 0x80, 0xc0, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x0c,
-+ 0x0c, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x30,
-+ 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x0c, 0x1f, 0x22, 0x04, 0x04,
-+ 0x08, 0x08, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x08, 0xf0, 0x40, 0x40, 0x80,
-+ 0x80, 0x80, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04,
-+ 0x0c, 0x0c, 0x0c, 0x1b, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0x10,
-+ 0x30, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0c, 0x18,
-+ 0x10, 0x10, 0x11, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x40, 0x40,
-+ 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x11, 0x03,
-+ 0x02, 0x04, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x30, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x0c, 0x0c,
-+ 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, 0x20,
-+ 0x60, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x19, 0x31,
-+ 0x32, 0x12, 0x0e, 0x07, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, 0x20, 0x30,
-+ 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x06, 0x0b, 0x01, 0x01, 0x01, 0x01, 0x03,
-+ 0x07, 0x05, 0x09, 0x19, 0x31, 0x20, 0x00, 0x00,
-+ 0x00, 0x10, 0x30, 0x60, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xa0, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x31, 0x59, 0x09, 0x09,
-+ 0x12, 0x12, 0x12, 0x0f, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x80, 0x80, 0x80, 0xa0, 0x30, 0x10, 0x10,
-+ 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x31, 0x23,
-+ 0x22, 0x22, 0x36, 0x19, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x10, 0x10,
-+ 0x30, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08,
-+ 0x0f, 0x10, 0x10, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60,
-+ 0xe0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x00, 0x80, 0x60,
-+ 0x30, 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x30,
-+ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x1f, 0x30, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0x60, 0xf8, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x0c, 0x0c, 0x3f, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0xc0, 0xc0, 0xe0, 0x10, 0x00, 0x40, 0xc0, 0x40,
-+ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x67, 0x73, 0x13, 0x13, 0x13, 0x0f, 0x0b,
-+ 0x13, 0x33, 0x23, 0x77, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x98, 0x38, 0x20, 0x20, 0x20, 0xc0, 0x40,
-+ 0x20, 0x30, 0x10, 0xb8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x1c, 0x10, 0x00, 0x00, 0x03, 0x00,
-+ 0x00, 0x10, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x60,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1a,
-+ 0x1c, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x70, 0xb0, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x06, 0x03, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1a,
-+ 0x1c, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0xc0, 0x80, 0x78, 0x30, 0x70, 0xb0, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1f, 0x19,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x58, 0x80, 0x80, 0x00, 0x00, 0x80,
-+ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-+ 0x02, 0x34, 0x34, 0x18, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x18, 0x18, 0x1c, 0x1c, 0x17, 0x26,
-+ 0x22, 0x22, 0x20, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x70, 0x60, 0x60, 0xe0, 0xe0, 0x60, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xd0, 0x30, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x23, 0x43, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06,
-+ 0x03, 0x03, 0x01, 0x19, 0x1a, 0x0c, 0x00, 0x00,
-+ 0x00, 0x78, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x07, 0x1b, 0x33, 0x33, 0x33,
-+ 0x1b, 0x07, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0x80, 0x60, 0x30, 0x30, 0x30,
-+ 0x60, 0x80, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03,
-+ 0x04, 0x08, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80,
-+ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x18, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xf8, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0f,
-+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x77, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-+ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xb8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x77, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
-+ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xb8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xf8, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x26, 0x46, 0x06, 0x07, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x30, 0x18,
-+ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x1e, 0x19, 0x18,
-+ 0x18, 0x18, 0x19, 0x3e, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xb0, 0xf0,
-+ 0xf0, 0xf0, 0xb0, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x1c, 0x10, 0x00, 0x06, 0x0b, 0x00,
-+ 0x00, 0x10, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x30, 0x10, 0x18, 0xb8, 0xd8,
-+ 0x10, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x33, 0x32, 0x36, 0x36, 0x3e, 0x36,
-+ 0x36, 0x32, 0x33, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x30, 0x10, 0x18, 0x18, 0x18, 0x18,
-+ 0x18, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x07,
-+ 0x03, 0x06, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0xf0,
-+ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x0c, 0x03,
-+ 0x0c, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x60, 0xe0,
-+ 0x60, 0x60, 0xe0, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x04, 0x05, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0xe0, 0xc0, 0x00, 0x80, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x0c, 0x0f,
-+ 0x0c, 0x0c, 0x0c, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x60, 0xc0,
-+ 0x20, 0x30, 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0c, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x10, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x3f, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0x60, 0xe0, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x18, 0x1f,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x30, 0xf0,
-+ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x06, 0x06, 0x00, 0x07, 0x08, 0x18, 0x1f,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x60, 0x60, 0x00, 0xc0, 0x20, 0x30, 0xf0,
-+ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x67, 0x73, 0x0b, 0x0f,
-+ 0x0b, 0x13, 0x33, 0x67, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x38, 0x40, 0xc0,
-+ 0x40, 0x20, 0x30, 0x98, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x10, 0x03,
-+ 0x00, 0x10, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x60, 0xc0,
-+ 0x60, 0x60, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x19,
-+ 0x1a, 0x1c, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0xe0, 0x60,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x06, 0x03, 0x00, 0x3c, 0x18, 0x18, 0x19,
-+ 0x1a, 0x1c, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0x00, 0xf0, 0x60, 0xe0, 0x60,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x19, 0x1f,
-+ 0x19, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0x00, 0x00,
-+ 0x80, 0xc0, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02,
-+ 0x02, 0x34, 0x34, 0x18, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x1c, 0x16,
-+ 0x16, 0x13, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x70, 0xb0,
-+ 0xb0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x1f,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0xe0,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c,
-+ 0x0c, 0x0c, 0x0e, 0x0d, 0x0c, 0x1e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x30,
-+ 0x30, 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18,
-+ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x20, 0x00,
-+ 0x00, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x13, 0x23, 0x03,
-+ 0x03, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x10, 0x00,
-+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x06, 0x06,
-+ 0x03, 0x03, 0x01, 0x19, 0x19, 0x0e, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x03, 0x03, 0x1b, 0x37, 0x63, 0x63,
-+ 0x63, 0x63, 0x37, 0x1b, 0x03, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x60, 0xb0, 0x18, 0x18,
-+ 0x18, 0x18, 0xb0, 0x60, 0x00, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x06, 0x03,
-+ 0x03, 0x04, 0x08, 0x1c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x40, 0x80,
-+ 0x80, 0xc0, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18,
-+ 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0x60, 0x60, 0x60, 0xf0, 0x30, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18,
-+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0xe0, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x77, 0x33, 0x33, 0x33,
-+ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x77, 0x33, 0x33, 0x33,
-+ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x30, 0x30,
-+ 0x30, 0x30, 0x30, 0xf8, 0x18, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x26, 0x46, 0x07,
-+ 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-+ 0x30, 0x30, 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x1f,
-+ 0x19, 0x19, 0x19, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x30, 0x30,
-+ 0xb0, 0xb0, 0xb0, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0f,
-+ 0x0c, 0x0c, 0x0c, 0x1f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
-+ 0x30, 0x30, 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x10, 0x03,
-+ 0x05, 0x10, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x70,
-+ 0xb0, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x19, 0x1b, 0x1f,
-+ 0x1b, 0x1b, 0x19, 0x3c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x18, 0x18,
-+ 0x18, 0x18, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x18, 0x18,
-+ 0x0f, 0x06, 0x0c, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60,
-+ 0xe0, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24,
-+ 0x3f, 0x24, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90,
-+ 0xf0, 0x90, 0x80, 0x80, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x4a, 0x4a,
-+ 0x4b, 0x7a, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x28, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28,
-+ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x03, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0x20, 0xe8,
-+ 0x08, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x09, 0x3f, 0x25, 0x54, 0x13,
-+ 0x22, 0x07, 0x3a, 0x01, 0x06, 0x78, 0x00, 0x00,
-+ 0x30, 0xd0, 0x10, 0x20, 0xfc, 0x88, 0x50, 0xc8,
-+ 0x08, 0xe0, 0x40, 0x80, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x79, 0x17, 0x11, 0x11, 0x1a,
-+ 0x74, 0x17, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00,
-+ 0x80, 0xa0, 0x90, 0x38, 0xc8, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x32, 0x2c, 0x04, 0x0a, 0x10, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x21, 0x16, 0x10, 0x01, 0x0e, 0x73, 0x10,
-+ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x07, 0x11, 0x0a, 0x04, 0x1f,
-+ 0x61, 0x1f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0x28, 0xc8, 0x50, 0xf0,
-+ 0x0c, 0xf0, 0x00, 0x80, 0x60, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x7f, 0x04, 0x3f, 0x24,
-+ 0x24, 0x28, 0x30, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x80, 0xf8, 0x88,
-+ 0x98, 0x78, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x19, 0x76, 0x11, 0x11, 0x7d, 0x11, 0x1b,
-+ 0x36, 0x37, 0x52, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xf0, 0x50, 0xf0, 0xf0, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x1f, 0x12, 0x1f, 0x02, 0x7f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0xf0, 0x90, 0xf0, 0x80, 0xfc,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x1a,
-+ 0x73, 0x14, 0x17, 0x18, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x60, 0x90,
-+ 0xe8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x02,
-+ 0x13, 0x12, 0x25, 0x24, 0x4f, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x50, 0x98,
-+ 0xe4, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x0a, 0x0a, 0x0a,
-+ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0x88, 0xf8, 0x88, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x0f, 0x02, 0x7f, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xfc, 0xe0, 0x20,
-+ 0xe0, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x00, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x41, 0x00, 0x00,
-+ 0x20, 0x30, 0x48, 0xf4, 0x20, 0xfc, 0x50, 0x98,
-+ 0x64, 0x10, 0x64, 0x08, 0x30, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x29, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x17, 0x10,
-+ 0x10, 0x10, 0x20, 0x20, 0x4f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x88, 0x54, 0x30, 0x90, 0x50,
-+ 0x50, 0x1c, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d,
-+ 0x72, 0x12, 0x12, 0x14, 0x15, 0x3e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x20, 0x20, 0xf8, 0x88, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x28, 0x48, 0x0e, 0x12, 0x12,
-+ 0x2a, 0x44, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x88, 0x88,
-+ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x08, 0x13, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x78, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x2a, 0x48, 0x3e, 0x23, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x48, 0x9c, 0xe4, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x15, 0x65, 0x1a, 0x13, 0x29, 0x7d,
-+ 0x15, 0x19, 0x35, 0x34, 0x50, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x64, 0x1f, 0x10, 0x29, 0x7e,
-+ 0x14, 0x39, 0x36, 0x34, 0x51, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c,
-+ 0xf0, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x1e, 0x12, 0x12,
-+ 0x1e, 0x10, 0x03, 0x0c, 0x71, 0x06, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x09,
-+ 0x05, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x20,
-+ 0x40, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x09, 0x0b, 0x12, 0x3c,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x42, 0x02, 0x7f, 0x04,
-+ 0x04, 0x0f, 0x08, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x40,
-+ 0x40, 0x40, 0xc0, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x11, 0x1f, 0x12, 0x14, 0x1f,
-+ 0x14, 0x17, 0x24, 0x27, 0x44, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0xa0, 0x90, 0xfc,
-+ 0x90, 0xf0, 0x90, 0xf0, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x10, 0x17, 0x18,
-+ 0x70, 0x11, 0x11, 0x10, 0x10, 0x37, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x40, 0x40, 0xfc, 0x90,
-+ 0x90, 0x90, 0x60, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x49, 0x48, 0x4f, 0x78, 0x49,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x7f, 0x04, 0x0f, 0x03,
-+ 0x1d, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x40, 0x80, 0x60,
-+ 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x2f, 0x22,
-+ 0x3f, 0x27, 0x24, 0x27, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xe8, 0x88,
-+ 0xf8, 0xc8, 0x48, 0xc8, 0xc8, 0x58, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x08, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7e, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x20, 0x20, 0xfc, 0x48,
-+ 0x48, 0xf0, 0x90, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x12, 0x11, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x16, 0x18, 0x61, 0x06, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x90, 0x90, 0x10, 0x10,
-+ 0x10, 0x30, 0x28, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x17, 0x30, 0x50, 0x13,
-+ 0x10, 0x10, 0x10, 0x10, 0x11, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xfc, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x1f, 0x30, 0x52, 0x11,
-+ 0x11, 0x11, 0x11, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x10, 0x10, 0x10,
-+ 0x10, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x51, 0x13,
-+ 0x15, 0x11, 0x11, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x80, 0xc8, 0x48, 0x50,
-+ 0x20, 0x20, 0x10, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x17, 0x10, 0x33, 0x52, 0x13,
-+ 0x10, 0x13, 0x12, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xf0, 0x90, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x22, 0x22, 0x2f, 0x22, 0x22,
-+ 0x3f, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x48, 0x48, 0xe8, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x01, 0x3f, 0x21,
-+ 0x3f, 0x23, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xfc, 0x04, 0x84, 0x58, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x02,
-+ 0x7f, 0x04, 0x0f, 0x10, 0x03, 0x3c, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00,
-+ 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x1f, 0x14,
-+ 0x14, 0x1f, 0x11, 0x22, 0x2c, 0x40, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0xc8, 0xd0,
-+ 0xb0, 0x30, 0x24, 0xd4, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x20, 0x3e, 0x20, 0x3f,
-+ 0x24, 0x2e, 0x2d, 0x35, 0x44, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x19, 0x37, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x90, 0x90, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x04, 0x7f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x25, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x08, 0x84, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x2e, 0x20, 0x3f, 0x56,
-+ 0x25, 0x4d, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x90, 0x50, 0x50, 0x10,
-+ 0x10, 0x30, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x02, 0x07,
-+ 0x19, 0x62, 0x0c, 0x31, 0x06, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xf8,
-+ 0x28, 0x48, 0x88, 0x08, 0x10, 0xe0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x29, 0x29, 0x49, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x60, 0x50, 0x88, 0xfc, 0x08,
-+ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x3f, 0x02, 0x02, 0x07, 0x04,
-+ 0x0f, 0x08, 0x15, 0x32, 0x4a, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x40, 0xf0, 0x10,
-+ 0xfc, 0x04, 0x44, 0xa4, 0xa4, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x00, 0x7f,
-+ 0x09, 0x08, 0x08, 0x0b, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x10, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x04, 0x3f,
-+ 0x04, 0x04, 0x7f, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x09, 0x08, 0x7e, 0x09, 0x1c,
-+ 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x40, 0x78, 0x88, 0x50, 0x20, 0x40, 0xa0, 0x3c,
-+ 0x44, 0xa8, 0x18, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x08, 0x14, 0x7e,
-+ 0x0a, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0xf8, 0x48, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x10, 0xf8, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x00, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x7f, 0x05, 0x19,
-+ 0x62, 0x3f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xc0, 0x00, 0xfc, 0x40, 0x30,
-+ 0x0c, 0xf8, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x03, 0x04, 0x1c,
-+ 0x64, 0x04, 0x04, 0x05, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x08, 0x88, 0x90,
-+ 0x60, 0x40, 0x20, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x24, 0xfc, 0x24, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x17, 0x01, 0x01, 0x71, 0x10,
-+ 0x11, 0x11, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x90, 0xfc, 0xf0, 0x10, 0xf0, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00,
-+ 0x00, 0x21, 0x11, 0x11, 0x07, 0x01, 0x71, 0x11,
-+ 0x11, 0x11, 0x11, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x50, 0xf0, 0xfc, 0xf0, 0x10, 0xf0,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x08, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x27, 0x24, 0x28, 0x3f,
-+ 0x21, 0x21, 0x22, 0x2c, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x80, 0x80, 0xf8,
-+ 0x40, 0x20, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x04,
-+ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x02, 0x1a, 0x04, 0x03,
-+ 0x02, 0x0c, 0x11, 0x06, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x40, 0x40, 0x90, 0x20,
-+ 0x40, 0xc0, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x17, 0x10, 0x7f, 0x12, 0x12,
-+ 0x13, 0x16, 0x18, 0x63, 0x0c, 0x00, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0xc8, 0xa8,
-+ 0xa8, 0x30, 0x94, 0x34, 0x4c, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x04, 0x3f, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x70, 0x88, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x08, 0x08, 0x1f, 0x11, 0x3f,
-+ 0x51, 0x1f, 0x11, 0x11, 0x11, 0x13, 0x00, 0x00,
-+ 0x00, 0x78, 0xc8, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x7d, 0x12, 0x16, 0x11, 0x3a, 0x2f, 0x68,
-+ 0x2b, 0x2b, 0x3a, 0x2a, 0x04, 0x08, 0x00, 0x00,
-+ 0x50, 0x50, 0x68, 0xd8, 0x50, 0xe8, 0xfc, 0x50,
-+ 0xfc, 0x28, 0xa8, 0x94, 0x2c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x24,
-+ 0x44, 0x07, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x08,
-+ 0x60, 0x80, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x24, 0x12, 0x12, 0x4f, 0x22, 0x22, 0x04, 0x1f,
-+ 0x15, 0x15, 0x25, 0x25, 0x5f, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0x10, 0xf8,
-+ 0x54, 0x50, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x11, 0x12, 0x07, 0x02, 0x72, 0x13,
-+ 0x12, 0x10, 0x11, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xc8, 0xc0, 0x44, 0x3c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x02, 0x0f, 0x3a, 0x09, 0x09, 0x7e, 0x19, 0x1d,
-+ 0x2b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x18, 0xe4, 0x44, 0x28, 0x30, 0x00, 0x78, 0x48,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x21, 0x11, 0x11,
-+ 0x02, 0x04, 0x18, 0x61, 0x06, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x48,
-+ 0x50, 0x40, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x1f, 0x01, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7f, 0x2b, 0x3f, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2f, 0x28, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x20, 0xf8, 0x48,
-+ 0x68, 0xd8, 0xd8, 0x68, 0x48, 0xb0, 0x00, 0x00,
-+ 0x02, 0x02, 0x04, 0x08, 0x7f, 0x04, 0x04, 0x04,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x40, 0x30, 0x68, 0x84, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x06, 0x38, 0x20, 0x20, 0x3e, 0x20, 0x20,
-+ 0x20, 0x3e, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x4a,
-+ 0x4a, 0x7a, 0x4b, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0xa8, 0x98, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x21, 0x23,
-+ 0x22, 0x24, 0x28, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08,
-+ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0x68, 0x98, 0x98, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x20, 0x3f,
-+ 0x21, 0x01, 0x01, 0x01, 0x02, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1a, 0x29, 0x7e, 0x23, 0x3e,
-+ 0x22, 0x3e, 0x28, 0x24, 0x3b, 0x62, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x22, 0x22, 0x03, 0x10,
-+ 0x10, 0x13, 0x20, 0x20, 0x4f, 0x40, 0x00, 0x00,
-+ 0x0c, 0x74, 0x84, 0x88, 0x50, 0x38, 0xc0, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x1e, 0x12, 0x11, 0x1f, 0x10, 0x17,
-+ 0x14, 0x17, 0x14, 0x27, 0x24, 0x44, 0x00, 0x00,
-+ 0x10, 0x50, 0x50, 0x90, 0x50, 0xf0, 0x30, 0xd0,
-+ 0x50, 0xd0, 0x50, 0xd4, 0x54, 0xcc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3c, 0x27, 0x2c, 0x31, 0x28,
-+ 0x25, 0x24, 0x27, 0x38, 0x21, 0x23, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xa0, 0xf0, 0x0c, 0xf0, 0x20,
-+ 0xf8, 0x00, 0xfc, 0xa0, 0x30, 0xc8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x2a, 0x30, 0x2b, 0x24, 0x27,
-+ 0x24, 0x24, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0xfc,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x32, 0x28, 0x25, 0x24,
-+ 0x25, 0x24, 0x3f, 0x20, 0x21, 0x27, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xe8, 0x04, 0xf0, 0x20,
-+ 0xf0, 0x00, 0xfc, 0xa0, 0x30, 0xc8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x26, 0x29, 0x31, 0x28, 0x25, 0x24,
-+ 0x25, 0x24, 0x3a, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x18, 0xe4, 0x44, 0x28, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x00, 0x3c,
-+ 0x24, 0x3c, 0x24, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x4f, 0x48, 0x49, 0x48,
-+ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x04, 0x08, 0x0f,
-+ 0x18, 0x18, 0x28, 0x48, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x1f, 0x01, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x29, 0x24, 0x24, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x48, 0xa8, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x22, 0x12, 0x12, 0x02,
-+ 0x06, 0x1a, 0x63, 0x02, 0x02, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x88, 0x48, 0x48, 0x08,
-+ 0x18, 0x68, 0x88, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x10, 0x00, 0x07, 0x70, 0x10,
-+ 0x10, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0xc0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x29, 0x25, 0x25,
-+ 0x21, 0x29, 0x25, 0x25, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x48, 0x28, 0x28,
-+ 0x08, 0x48, 0x28, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x0c, 0x30, 0x22, 0x22, 0x22, 0x22, 0x22,
-+ 0x22, 0x3e, 0x64, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x24, 0x14, 0x18, 0x7e, 0x0a, 0x3e, 0x28, 0x3e,
-+ 0x3a, 0x1a, 0x2e, 0x49, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x48, 0x19, 0x09, 0x3f, 0x09,
-+ 0x7f, 0x09, 0x15, 0x14, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x78, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x02, 0x02, 0x02, 0x3f, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x11, 0x3f, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x06, 0x38, 0x20, 0x20, 0x20, 0x20, 0x3e,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x07, 0x14,
-+ 0x15, 0x15, 0x25, 0x25, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0x90, 0xf8, 0x08,
-+ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x70, 0x57, 0x54, 0x57, 0x54, 0x54,
-+ 0x56, 0x75, 0x49, 0x08, 0x17, 0x00, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xfc, 0xf8, 0x88, 0x78, 0xa0,
-+ 0xa8, 0xa8, 0xb0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x3d, 0x25, 0x25, 0x25, 0x25, 0x25,
-+ 0x25, 0x3d, 0x25, 0x20, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x12, 0x7d, 0x3a, 0x55, 0x1f, 0x12, 0x1f, 0x3e,
-+ 0x23, 0x3e, 0x3e, 0x24, 0x3e, 0x60, 0x00, 0x00,
-+ 0x90, 0xfc, 0xb8, 0xd4, 0xf0, 0x90, 0xf0, 0x10,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x21, 0x3f, 0x20, 0x2e,
-+ 0x20, 0x3f, 0x2e, 0x2d, 0x55, 0x0c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x08, 0x08, 0xfc, 0x08, 0x48,
-+ 0x28, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3f, 0x2b,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x10, 0x7c, 0x27, 0x24, 0x24,
-+ 0x78, 0x49, 0x0e, 0x14, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x20, 0xc0,
-+ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x2f, 0x29, 0x2f, 0x29, 0x2f,
-+ 0x28, 0x2a, 0x29, 0x2b, 0x4c, 0x31, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x78, 0x50, 0x50, 0x50, 0xfc,
-+ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x22, 0x02, 0x0b,
-+ 0x0a, 0x0a, 0x13, 0x12, 0x22, 0x22, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x2e, 0x40, 0x00, 0x00,
-+ 0x10, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x10, 0x90, 0x50, 0xe8, 0x28, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f,
-+ 0x21, 0x27, 0x21, 0x2f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8,
-+ 0x08, 0xc8, 0x08, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x00, 0x7f, 0x48, 0x4b, 0x4a, 0x4b, 0x4b,
-+ 0x4b, 0x78, 0x4f, 0x41, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0x38, 0xf8,
-+ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x01,
-+ 0x01, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x70, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x27, 0x14, 0x1f, 0x00, 0x03, 0x72, 0x13,
-+ 0x12, 0x13, 0x10, 0x17, 0x2c, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x3d, 0x4f, 0x00,
-+ 0x1f, 0x00, 0x7f, 0x02, 0x04, 0x3f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x04, 0x78, 0x38, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0b, 0x10, 0x10,
-+ 0x37, 0x50, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x18, 0xe0, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x0d, 0x12, 0x2a, 0x48, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x27, 0x3a, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x48, 0x78, 0x48, 0x48, 0x78,
-+ 0x48, 0x4c, 0x78, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x0e, 0x08, 0x7f, 0x5d, 0x5a, 0x2d, 0x52, 0x1f,
-+ 0x32, 0x5e, 0x12, 0x1e, 0x12, 0x1f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x48, 0x48, 0x50, 0x50, 0x30,
-+ 0x20, 0x30, 0x50, 0x48, 0x88, 0x04, 0x00, 0x00,
-+ 0x12, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f,
-+ 0x02, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x3e,
-+ 0x15, 0x7f, 0x04, 0x0f, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x50, 0xfc, 0x20, 0x40, 0xe0, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x04, 0x7f,
-+ 0x1f, 0x11, 0x1f, 0x15, 0x64, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x20, 0x48, 0x08, 0x10, 0x90,
-+ 0x24, 0x04, 0x08, 0x08, 0x90, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4b, 0x4a, 0x4a, 0x7a, 0x4f,
-+ 0x48, 0x48, 0x78, 0x49, 0x02, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x11, 0x00, 0x00, 0x03, 0x3c, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf8,
-+ 0x10, 0xa0, 0xc0, 0x44, 0x34, 0x0c, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x3f, 0x20, 0x41, 0x01, 0x7f,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x00, 0x00, 0x0f, 0x01, 0x01, 0x7f, 0x05,
-+ 0x05, 0x09, 0x11, 0x61, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x80, 0x00, 0x00, 0x08, 0x88, 0x90, 0x60,
-+ 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x20, 0x20, 0x07, 0x10,
-+ 0x11, 0x11, 0x22, 0x24, 0x40, 0x40, 0x00, 0x00,
-+ 0xc0, 0x20, 0x00, 0xc0, 0x48, 0x48, 0xf0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x0b,
-+ 0x0a, 0x08, 0x10, 0x10, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x30, 0x20, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x11, 0x10, 0x13, 0x7e, 0x12,
-+ 0x17, 0x10, 0x1c, 0x60, 0x03, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x40, 0xf8, 0x48, 0x48,
-+ 0xfc, 0x40, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x04, 0x04, 0x0f, 0x0c, 0x13, 0x22,
-+ 0x4c, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0xf8, 0x88, 0x08, 0x88,
-+ 0x70, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x20, 0x25, 0x38, 0x22, 0x1c, 0x02, 0x3c, 0x08,
-+ 0x7e, 0x18, 0x1c, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x20, 0x25, 0x38, 0x22, 0x1e, 0x00, 0x3e, 0x00,
-+ 0x7f, 0x0c, 0x2a, 0x2a, 0x48, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x1f, 0x11, 0x11,
-+ 0x11, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0x10,
-+ 0x10, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x11, 0x17, 0x22, 0x4f, 0x08, 0x17, 0x14, 0x37,
-+ 0x51, 0x17, 0x15, 0x1f, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xb8, 0x80, 0xc0, 0x7c, 0x90, 0x90, 0x90,
-+ 0x10, 0x90, 0x10, 0xd0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x26, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0xe0, 0x28, 0x28, 0xf0, 0x70,
-+ 0xb0, 0xa8, 0x28, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x41, 0x21, 0x22, 0x02, 0x16,
-+ 0x1b, 0x12, 0x22, 0x22, 0x42, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x78, 0x48, 0xa8, 0x98,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x29, 0x29, 0x09, 0x1a,
-+ 0x2f, 0x49, 0x10, 0x10, 0x21, 0x4e, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xe0, 0x24, 0x24, 0x1c,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x7f, 0x08, 0x08, 0x10, 0x1f,
-+ 0x2a, 0x4a, 0x0a, 0x0a, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xfc, 0x20, 0x20, 0x10, 0xf0,
-+ 0xa8, 0xa4, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3a, 0x33, 0x45, 0x1a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0x90, 0x90, 0x08, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x1b, 0x36, 0x36, 0x33, 0x52,
-+ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x08, 0x08, 0xf8, 0xa8,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x00, 0x3d,
-+ 0x03, 0x3d, 0x25, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8,
-+ 0x28, 0xc8, 0x28, 0xe8, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x09, 0x09, 0x7f, 0x09, 0x29,
-+ 0x2f, 0x29, 0x3b, 0x28, 0x46, 0x41, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x28, 0x28, 0x30,
-+ 0x50, 0x94, 0x2c, 0x44, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x22,
-+ 0x27, 0x24, 0x27, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x88,
-+ 0xc8, 0x48, 0xc8, 0x88, 0xa8, 0x78, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x28, 0x4b, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x08, 0xf8, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x2f, 0x29, 0x2f, 0x2f, 0x20,
-+ 0x2f, 0x29, 0x2f, 0x2f, 0x29, 0x4b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x28, 0x24, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x70, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3f,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x2f, 0x21, 0x3f, 0x27, 0x24,
-+ 0x27, 0x23, 0x2d, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xf8, 0xc8, 0x48,
-+ 0xe8, 0xa8, 0x48, 0x28, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7e, 0x12, 0x12, 0x12,
-+ 0x16, 0x1b, 0x62, 0x02, 0x02, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x20, 0xfc, 0xd0, 0x30, 0xc8, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x0d, 0x71, 0x1f, 0x11,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x14, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x01, 0x7f, 0x04, 0x0e, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xfc, 0x40, 0x80, 0xc0, 0x30, 0x00, 0x00,
-+ 0x00, 0x78, 0x0b, 0x10, 0x10, 0x3d, 0x05, 0x25,
-+ 0x25, 0x15, 0x1b, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x1c, 0xe0, 0x20, 0x20, 0x20, 0x38, 0x20,
-+ 0x20, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x11, 0x2a, 0x46, 0x04, 0x18,
-+ 0x61, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0xb0, 0x84, 0x7c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x12, 0x1f, 0x12,
-+ 0x33, 0x52, 0x13, 0x12, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x50, 0x48, 0xfc, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x48, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x11, 0x13, 0x10, 0x1f,
-+ 0x71, 0x11, 0x12, 0x14, 0x18, 0x33, 0x00, 0x00,
-+ 0x08, 0x30, 0xc8, 0x48, 0x10, 0xf8, 0x80, 0xfc,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x41, 0x21, 0x22, 0x02, 0x17,
-+ 0x12, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0x10, 0x10, 0x08, 0xf4,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x2f, 0x20, 0x03, 0x12,
-+ 0x13, 0x12, 0x23, 0x20, 0x43, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0x40, 0xf8, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x13, 0x02, 0x0c, 0x31, 0x01,
-+ 0x11, 0x13, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x00, 0xc0, 0x30, 0x08, 0x10,
-+ 0x10, 0x20, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x0a, 0x2b, 0x2c, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x10, 0x20, 0x78, 0x48,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x17, 0x36, 0x3a, 0x33, 0x52,
-+ 0x18, 0x17, 0x24, 0x20, 0x47, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x48,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x0f, 0x78, 0x0b, 0x1a,
-+ 0x6a, 0x0b, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xe4, 0x28, 0xb0, 0xa0,
-+ 0xa4, 0x9c, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00,
-+ 0x08, 0x4b, 0x30, 0x17, 0x30, 0x49, 0x09, 0x19,
-+ 0x28, 0x4f, 0x09, 0x09, 0x31, 0x16, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0xc8, 0x48, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x14, 0x65, 0x18, 0x1b, 0x24, 0x7c,
-+ 0x13, 0x38, 0x37, 0x34, 0x53, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc, 0x40, 0xe4,
-+ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x14, 0x7f, 0x55, 0x7f, 0x55, 0x7f, 0x00, 0x7f,
-+ 0x3e, 0x22, 0x3e, 0x24, 0x1e, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8,
-+ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x1e, 0x12,
-+ 0x22, 0x54, 0x0c, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x88, 0x88,
-+ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x21, 0x27, 0x3f, 0x24,
-+ 0x27, 0x23, 0x2e, 0x22, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xc8, 0xf8, 0x48,
-+ 0xe8, 0xa8, 0x48, 0x28, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x17, 0x00, 0x03, 0x72, 0x13,
-+ 0x10, 0x11, 0x1e, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x88, 0xd0, 0xb0, 0x88, 0x80, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x70, 0x10, 0x90, 0x90, 0x88, 0x08, 0x04, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x1f, 0x72, 0x0c, 0x1a, 0x6f, 0x0b, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x15, 0x25, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xb0, 0x84, 0xfc, 0xc0, 0xc0,
-+ 0xf8, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x12, 0x7f, 0x15, 0x11, 0x10,
-+ 0x17, 0x1a, 0x62, 0x02, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x0f, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x50, 0x88, 0x44, 0x20,
-+ 0x20, 0x00, 0x40, 0x20, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x40, 0x27, 0x20, 0x00, 0x09,
-+ 0x09, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0xfc, 0x80, 0x80, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x08, 0x2b, 0x2a, 0x3e, 0x2b, 0x4a, 0x0a, 0x3f,
-+ 0x08, 0x0b, 0x0c, 0x18, 0x61, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x24, 0x24, 0x24, 0x27,
-+ 0x24, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8,
-+ 0x48, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x11,
-+ 0x7f, 0x03, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10,
-+ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x19, 0x15, 0x15, 0x1f, 0x13,
-+ 0x15, 0x19, 0x7f, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x50, 0x50, 0x90, 0xf0, 0x90,
-+ 0x50, 0x30, 0xfc, 0x80, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x27, 0x44, 0x08, 0x08, 0x1b,
-+ 0x28, 0x48, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x11, 0x11, 0x15,
-+ 0x15, 0x15, 0x29, 0x29, 0x41, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x40, 0x20, 0x20, 0x08,
-+ 0x04, 0x04, 0x04, 0x10, 0x10, 0xf0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x12, 0x1f,
-+ 0x72, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x44, 0x44, 0x44, 0x7c, 0x47, 0x44,
-+ 0x44, 0x7c, 0x44, 0x40, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x17, 0x10, 0x3b, 0x36,
-+ 0x37, 0x52, 0x53, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8, 0x48,
-+ 0xf8, 0x48, 0xf8, 0xa0, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x32, 0x2b, 0x24, 0x26,
-+ 0x2a, 0x29, 0x31, 0x20, 0x3f, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x32, 0x2a, 0x25, 0x24,
-+ 0x2a, 0x2a, 0x30, 0x20, 0x3e, 0x23, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x1f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x05, 0x04, 0x19, 0x61, 0x02, 0x3f, 0x00, 0x7f,
-+ 0x22, 0x12, 0x06, 0x1a, 0x63, 0x06, 0x00, 0x00,
-+ 0xe0, 0x20, 0x10, 0xcc, 0x60, 0x90, 0x00, 0xf8,
-+ 0x88, 0x48, 0x18, 0x68, 0x88, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7f, 0x0a, 0x0b, 0x16, 0x1b,
-+ 0x36, 0x57, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x58, 0xe8, 0xf8, 0xe8, 0x58,
-+ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x12, 0x09, 0x3f, 0x22, 0x4f, 0x08, 0x0f, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0xe0,
-+ 0xfc, 0x00, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x22, 0x22, 0x32, 0x2c, 0x24,
-+ 0x26, 0x2a, 0x30, 0x21, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x7f, 0x01, 0x1f, 0x11,
-+ 0x1f, 0x11, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x24, 0x24, 0x3f, 0x21, 0x29,
-+ 0x29, 0x29, 0x2f, 0x28, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xf8, 0x08, 0x28,
-+ 0x28, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0b, 0x0a, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x34, 0x08, 0x18,
-+ 0x65, 0x0d, 0x14, 0x64, 0x05, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x28, 0xa8, 0xb0,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x17, 0x10, 0x31, 0x51, 0x11,
-+ 0x11, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0xa0, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x48, 0x24, 0x14, 0xf0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x11, 0x12,
-+ 0x1f, 0x10, 0x27, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x40, 0x30,
-+ 0xc8, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x17, 0x38, 0x35, 0x35, 0x51,
-+ 0x11, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x48, 0x24, 0x14, 0xf0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x25, 0x25, 0x3d,
-+ 0x25, 0x25, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x20, 0xfc, 0x90, 0xfc, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x13, 0x12, 0x3a, 0x37,
-+ 0x36, 0x52, 0x53, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0x28, 0x28, 0x3e, 0x29, 0x28, 0x48,
-+ 0x0e, 0x78, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08,
-+ 0x10, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x12, 0x34, 0x5f, 0x14,
-+ 0x17, 0x14, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x40, 0xa0, 0x98, 0xf4, 0x90,
-+ 0xf0, 0x90, 0xf0, 0x94, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x24, 0x44, 0x7f, 0x04, 0x27,
-+ 0x24, 0x24, 0x27, 0x3c, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48,
-+ 0x48, 0x48, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x12, 0x1c, 0x1f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xd0, 0x30, 0xf0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x10,
-+ 0x17, 0x15, 0x25, 0x25, 0x4f, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x28, 0x28, 0x28, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x1b, 0x72, 0x11, 0x11, 0x7c, 0x11, 0x18,
-+ 0x35, 0x34, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x10, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x7f, 0x00, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10,
-+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x18, 0x28, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x12,
-+ 0x12, 0x12, 0x14, 0x14, 0x19, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x13, 0x32, 0x52, 0x12,
-+ 0x13, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48,
-+ 0xc8, 0x48, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0a, 0x1f, 0x12, 0x32, 0x52, 0x12,
-+ 0x12, 0x12, 0x14, 0x14, 0x19, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x33, 0x52, 0x12,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x13, 0x10, 0x30, 0x57, 0x10,
-+ 0x10, 0x13, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x09, 0x09, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x44,
-+ 0x44, 0x44, 0x44, 0x7c, 0x44, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x00, 0x1f, 0x11, 0x11, 0x11,
-+ 0x1f, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x09, 0x33, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x40, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x0f, 0x08, 0x0f, 0x0f, 0x08,
-+ 0x0f, 0x07, 0x3c, 0x03, 0x06, 0x78, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x40, 0x80, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x12, 0x7f, 0x24, 0x24, 0x27,
-+ 0x78, 0x4b, 0x0c, 0x17, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0x40, 0xe4, 0x68,
-+ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x7f, 0x02, 0x0d, 0x33,
-+ 0x0d, 0x32, 0x04, 0x18, 0x60, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x00, 0x48, 0xc8,
-+ 0xb0, 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x2f, 0x42, 0x0f, 0x08, 0x0f, 0x0f,
-+ 0x0f, 0x7f, 0x0f, 0x72, 0x04, 0x19, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe8, 0x00, 0xe0, 0x20, 0xe0, 0xe0,
-+ 0xe0, 0xfc, 0xe0, 0x5c, 0x40, 0x80, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x08, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c,
-+ 0x70, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x07, 0x74, 0x54, 0x57, 0x54, 0x74, 0x57,
-+ 0x54, 0x54, 0x77, 0x54, 0x44, 0x04, 0x00, 0x00,
-+ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x88, 0x00, 0x78,
-+ 0x48, 0x28, 0x30, 0x10, 0x28, 0xc4, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x7e, 0x12, 0x12, 0x22, 0x4d, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x3a, 0x2a, 0x3a, 0x03, 0x7f,
-+ 0x02, 0x3a, 0x2a, 0x3a, 0x2b, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x23, 0x22, 0x02, 0x02,
-+ 0x0b, 0x0a, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48,
-+ 0xc8, 0x48, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x11, 0x11, 0x11, 0x21, 0x22,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x08, 0x10, 0x20, 0x80, 0x80,
-+ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7c, 0x10, 0x11, 0x11, 0x7d, 0x11,
-+ 0x11, 0x11, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28,
-+ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x13, 0x1a,
-+ 0x36, 0x56, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x70, 0x50, 0x50, 0xf8, 0x08,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x03,
-+ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80,
-+ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x18, 0x73, 0x12, 0x17, 0x7c, 0x10, 0x3b,
-+ 0x34, 0x57, 0x50, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x40, 0xe4, 0x68,
-+ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x21, 0x2f, 0x21,
-+ 0x27, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x08, 0xe8, 0x08,
-+ 0xc8, 0x48, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x04, 0x08, 0x08,
-+ 0x18, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x80, 0x88, 0x90,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x7f, 0x00, 0x1f,
-+ 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x14, 0x10, 0x7e, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0b, 0x10, 0x13,
-+ 0x32, 0x52, 0x13, 0x12, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x10, 0xd0,
-+ 0x50, 0x50, 0xd0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x09, 0x7f, 0x09,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x7d,
-+ 0x51, 0x19, 0x15, 0x1d, 0x65, 0x01, 0x00, 0x00,
-+ 0x00, 0xd8, 0x48, 0x48, 0xd8, 0x08, 0x00, 0xf8,
-+ 0x28, 0x28, 0xd0, 0x10, 0x28, 0x44, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3c,
-+ 0x03, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x49, 0x4b, 0x49, 0x4f, 0x49,
-+ 0x4b, 0x78, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x50, 0xfc, 0x50,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x18, 0x68, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x80, 0x8c, 0xf0, 0x84, 0x7c, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x02, 0x22, 0x12, 0x1f, 0x02, 0x02, 0x72, 0x12,
-+ 0x14, 0x14, 0x18, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xb8, 0x28, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x12, 0x02, 0x07, 0x74, 0x15,
-+ 0x15, 0x15, 0x15, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0xf8, 0x08, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x18, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3e,
-+ 0x22, 0x3e, 0x3d, 0x20, 0x3c, 0x21, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf8,
-+ 0x08, 0xf8, 0xf8, 0x50, 0x70, 0x8c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x0f, 0x11, 0x11, 0x3f, 0x51, 0x11,
-+ 0x11, 0x13, 0x1d, 0x11, 0x13, 0x11, 0x00, 0x00,
-+ 0x60, 0xa8, 0x24, 0x24, 0x20, 0xfc, 0x20, 0xa8,
-+ 0x28, 0x10, 0x10, 0x34, 0x4c, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x54, 0x57, 0x54, 0x54,
-+ 0x54, 0x55, 0x7e, 0x44, 0x40, 0x01, 0x00, 0x00,
-+ 0x60, 0xa8, 0xa4, 0xa4, 0xa0, 0xfc, 0xa4, 0xa8,
-+ 0xd8, 0x90, 0xb0, 0xcc, 0x8c, 0x84, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08,
-+ 0x0e, 0x78, 0x08, 0x08, 0x0b, 0x18, 0x00, 0x00,
-+ 0x80, 0x90, 0x88, 0x88, 0x80, 0xfc, 0x88, 0x88,
-+ 0x50, 0x50, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x7f, 0x00,
-+ 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x40, 0x40, 0x40, 0x40, 0xfc, 0xc0,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x2f, 0x29, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x28, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x21, 0x21, 0x21,
-+ 0x3f, 0x24, 0x24, 0x3f, 0x21, 0x02, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60,
-+ 0x50, 0x50, 0x90, 0x88, 0x08, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x08, 0x08, 0x7f,
-+ 0x00, 0x01, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x40, 0x40, 0xfc,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x54, 0x57, 0x54, 0x7c,
-+ 0x50, 0x1b, 0x14, 0x1e, 0x60, 0x01, 0x00, 0x00,
-+ 0x60, 0xb0, 0xa8, 0xa8, 0xa0, 0xfc, 0xa0, 0xa8,
-+ 0xe8, 0xb0, 0x90, 0xb4, 0xcc, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x12, 0x16, 0x2f, 0x48, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x24, 0x24, 0x25, 0x7e, 0x0c, 0x0c,
-+ 0x14, 0x14, 0x24, 0x44, 0x04, 0x0c, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0xfc, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x17, 0x1a, 0x28, 0x7f, 0x24, 0x3c,
-+ 0x24, 0x3f, 0x28, 0x24, 0x3e, 0x61, 0x00, 0x00,
-+ 0x20, 0x68, 0xa4, 0xa4, 0xa0, 0xfc, 0xa0, 0xa8,
-+ 0xe8, 0x90, 0x94, 0xac, 0xcc, 0x84, 0x00, 0x00,
-+ 0x08, 0x7e, 0x12, 0x12, 0x26, 0x5f, 0x11, 0x1f,
-+ 0x1f, 0x11, 0x1f, 0x2a, 0x25, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf0, 0x00, 0xe0,
-+ 0xe0, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x64, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0x4c, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x67, 0x00, 0x00,
-+ 0x3f, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xcc, 0x00, 0x00,
-+ 0xf8, 0x40, 0x20, 0xf0, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x48, 0x3f, 0x2a, 0x2a, 0x3f,
-+ 0x2a, 0x3f, 0x22, 0x22, 0x22, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x88, 0x30, 0xa0, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x24, 0x24,
-+ 0x24, 0x27, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48,
-+ 0x48, 0xc8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12,
-+ 0x10, 0x1d, 0x61, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xd0, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x10,
-+ 0x17, 0x18, 0x63, 0x0d, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8, 0x40,
-+ 0xfc, 0xc8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x0a, 0x12, 0x12, 0x3a, 0x0a,
-+ 0x4a, 0x2a, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x13, 0x38, 0x34, 0x34, 0x53,
-+ 0x10, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x60, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x10, 0x38, 0x37, 0x34, 0x50,
-+ 0x13, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xa0, 0xc0, 0x30, 0x4c, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x1a, 0x35, 0x35, 0x31, 0x57,
-+ 0x12, 0x12, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x3a, 0x36, 0x36, 0x52,
-+ 0x13, 0x12, 0x12, 0x14, 0x1b, 0x1c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x20, 0x28, 0xa8, 0xb0, 0xa0,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x36, 0x33, 0x50,
-+ 0x17, 0x10, 0x13, 0x1d, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8, 0x40,
-+ 0xfc, 0xc8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x12, 0x12, 0x12,
-+ 0x7f, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x50,
-+ 0xd0, 0x20, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x10, 0x1f,
-+ 0x70, 0x10, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xf8,
-+ 0x88, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7c, 0x04, 0x04, 0x05, 0x7d, 0x46, 0x40,
-+ 0x40, 0x44, 0x44, 0x3c, 0x03, 0x0c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x2b, 0x3e, 0x2a, 0x3e, 0x2d,
-+ 0x0d, 0x0d, 0x16, 0x17, 0x24, 0x43, 0x00, 0x00,
-+ 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c, 0xf0,
-+ 0x10, 0x10, 0x90, 0xd4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4a, 0x4d, 0x49, 0x79, 0x4f,
-+ 0x4a, 0x4a, 0x7b, 0x4a, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x12, 0x3a, 0x36,
-+ 0x37, 0x52, 0x52, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xa8, 0xa8, 0xa8,
-+ 0xf0, 0x90, 0x94, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x11, 0x09, 0x0b, 0x42, 0x25, 0x21, 0x01, 0x1f,
-+ 0x12, 0x12, 0x27, 0x24, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x12, 0x12, 0x14,
-+ 0x10, 0x11, 0x21, 0x22, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x80, 0x88, 0x88, 0x90, 0xa0,
-+ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x02,
-+ 0x0c, 0x74, 0x04, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x80,
-+ 0x60, 0x5c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1d, 0x62, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00, 0x00,
-+ 0xfc, 0x40, 0x50, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x02, 0x04, 0x1c,
-+ 0x64, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x80, 0x40, 0x70,
-+ 0x4c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x1d, 0x28, 0x7e, 0x2b, 0x3e, 0x2b, 0x3f,
-+ 0x23, 0x5f, 0x11, 0x1f, 0x01, 0x3f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x98, 0xa0, 0xf8, 0x20, 0xfc,
-+ 0x20, 0xf0, 0x10, 0xf0, 0xf0, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f,
-+ 0x22, 0x3f, 0x22, 0x24, 0x28, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x26, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x20, 0x24, 0xbc, 0x40, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2a, 0x3e, 0x00, 0x7e, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x14, 0x1f, 0x62, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x10, 0x15, 0x64, 0x18, 0x0a,
-+ 0x12, 0x24, 0x0c, 0x12, 0x21, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x09, 0x11, 0x19, 0x26,
-+ 0x42, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x40, 0x60, 0x58,
-+ 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x48, 0x4a, 0x49, 0x48, 0x48,
-+ 0x48, 0x7b, 0x48, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x90, 0xa0, 0x48,
-+ 0x90, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x21, 0x5f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x17, 0x10,
-+ 0x1f, 0x10, 0x27, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x00, 0xfc, 0x80, 0xf0, 0x80,
-+ 0xf8, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x15, 0x3f, 0x3d, 0x35, 0x57,
-+ 0x15, 0x14, 0x15, 0x16, 0x1c, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x50, 0x50, 0x50, 0xfc, 0x10,
-+ 0x30, 0xb0, 0xd0, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7d, 0x17, 0x15, 0x3d, 0x37,
-+ 0x36, 0x55, 0x55, 0x16, 0x1c, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x50, 0x50, 0x50, 0xfc, 0x30,
-+ 0x30, 0x30, 0xd0, 0xd4, 0x94, 0x0c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x03, 0x02,
-+ 0x12, 0x12, 0x24, 0x24, 0x4b, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7d, 0x11, 0x11, 0x11, 0x3d, 0x24, 0x65,
-+ 0x24, 0x27, 0x3d, 0x20, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x10, 0xfc, 0x10, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x02, 0x3f,
-+ 0x00, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0x40, 0xf0,
-+ 0x08, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x27, 0x49, 0x09, 0x17, 0x11, 0x31,
-+ 0x57, 0x11, 0x11, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0xc0, 0x00, 0x00, 0xfc, 0x08, 0x08,
-+ 0xc8, 0x08, 0x08, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x00, 0x3d, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68,
-+ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa8, 0xf8, 0x00, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x2e, 0x2a, 0x7f, 0x42, 0x7e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68,
-+ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0b,
-+ 0x08, 0x0b, 0x10, 0x10, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x3e, 0x2a, 0x3e, 0x27, 0x41,
-+ 0x7f, 0x05, 0x1f, 0x67, 0x04, 0x07, 0x00, 0x00,
-+ 0x70, 0x54, 0x9c, 0xf0, 0x50, 0x70, 0xcc, 0x00,
-+ 0xfc, 0x40, 0xf0, 0xcc, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2b, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x00, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x24,
-+ 0x24, 0x24, 0x24, 0x2c, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0b, 0x0f, 0x72, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xfc, 0xa0, 0xa0, 0xbc,
-+ 0xa4, 0xa4, 0x44, 0x44, 0x84, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5e, 0x08, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x48, 0x48, 0xc8,
-+ 0xa8, 0xd8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x3f, 0x09, 0x7f, 0x09, 0x3f, 0x3f, 0x7f,
-+ 0x3f, 0x29, 0x3f, 0x3f, 0x07, 0x78, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x48, 0xc8,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x52, 0x5f, 0x55, 0x55,
-+ 0x5d, 0x7d, 0x55, 0x49, 0x09, 0x13, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x10, 0xfc, 0x28, 0x68,
-+ 0xec, 0xac, 0x6c, 0x48, 0x48, 0x98, 0x00, 0x00,
-+ 0x02, 0x02, 0x07, 0x0c, 0x12, 0x21, 0x03, 0x0c,
-+ 0x7f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x20, 0x40, 0x80, 0x40, 0x30,
-+ 0xec, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x10, 0x17, 0x14, 0x17,
-+ 0x10, 0x17, 0x21, 0x2f, 0x41, 0x03, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xfc, 0x24, 0xa8, 0xb0, 0xa8,
-+ 0x24, 0xa4, 0xa4, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d,
-+ 0x71, 0x11, 0x12, 0x12, 0x17, 0x38, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x50, 0x48, 0x7c, 0x84, 0x04, 0x00, 0x00,
-+ 0x12, 0x11, 0x13, 0x7e, 0x15, 0x11, 0x11, 0x1d,
-+ 0x71, 0x11, 0x11, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x09, 0x18, 0x1c, 0x1a,
-+ 0x2b, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x09, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x29, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x48, 0x88, 0x50, 0x20,
-+ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x22,
-+ 0x5c, 0x14, 0x14, 0x16, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x54, 0x54, 0x8c, 0x00, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x09, 0x4f, 0x31, 0x11, 0x33, 0x4d, 0x09, 0x19,
-+ 0x29, 0x4b, 0x08, 0x08, 0x30, 0x17, 0x00, 0x00,
-+ 0x10, 0xfc, 0x30, 0xfc, 0x20, 0xf8, 0xf8, 0x20,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x11, 0x12, 0x3c, 0x25, 0x67,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x90, 0xa0, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x0b, 0x70, 0x11, 0x13, 0x7d, 0x11, 0x19,
-+ 0x35, 0x37, 0x50, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x90, 0xfc, 0xb0, 0xfc, 0x20, 0xf8, 0xf8, 0x20,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x12, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x02, 0x07, 0x18, 0x61, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xe0, 0x80, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x14, 0x36,
-+ 0x35, 0x55, 0x16, 0x24, 0x24, 0x4d, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x50, 0xd0,
-+ 0xd8, 0x54, 0x54, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x88, 0x94, 0x90,
-+ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x00, 0x1f, 0x11, 0x1f, 0x00, 0x3f,
-+ 0x02, 0x07, 0x7c, 0x04, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x23, 0x2e,
-+ 0x21, 0x22, 0x3f, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x48,
-+ 0x88, 0xc8, 0xf8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x29, 0x29, 0x31, 0x28, 0x27,
-+ 0x26, 0x27, 0x3a, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0xa8, 0x38, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x01, 0x1f, 0x11,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xc0, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x3f, 0x20, 0x4f, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x40, 0x80,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x7f,
-+ 0x01, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0xc0, 0x00, 0x00, 0xf8, 0x40, 0x40, 0xfc,
-+ 0x00, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x22, 0x17, 0x14, 0x07, 0x1c, 0x67, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x08, 0xc8, 0x50, 0xe0, 0x58, 0xc4, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x3f, 0x29, 0x4e, 0x12, 0x34, 0x0c,
-+ 0x12, 0x3f, 0x52, 0x12, 0x1e, 0x13, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x77, 0x55, 0x55, 0x77, 0x00, 0x3e, 0x00,
-+ 0x7f, 0x10, 0x1e, 0x22, 0x02, 0x0f, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x79, 0x11, 0x17, 0x19, 0x11,
-+ 0x37, 0x51, 0x11, 0x11, 0x1e, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0xd0, 0x10, 0x10, 0xf8, 0x14, 0x14,
-+ 0xf0, 0x10, 0x10, 0xd0, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x18, 0x25, 0x45, 0x01, 0x3f,
-+ 0x00, 0x08, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0x00, 0xf8,
-+ 0x20, 0x20, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x3a, 0x37,
-+ 0x34, 0x53, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xe8, 0x50, 0xd0, 0xa8, 0xc4,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x37,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x17, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x50, 0xf0, 0x50, 0xf0, 0xf8,
-+ 0xf0, 0x50, 0xf0, 0x50, 0xf0, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x0a, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf0, 0x40, 0xf8,
-+ 0x40, 0xfc, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3f, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x30, 0xd0, 0x90, 0x94, 0xb4, 0xf4, 0xb8, 0xd0,
-+ 0xf0, 0xa8, 0xa8, 0xc8, 0xc4, 0x84, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x01, 0x13,
-+ 0x16, 0x2a, 0x25, 0x45, 0x48, 0x40, 0x00, 0x00,
-+ 0x80, 0x38, 0x08, 0xb8, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x24, 0x94, 0x54, 0x44, 0x04, 0x18, 0x00, 0x00,
-+ 0x08, 0x7f, 0x49, 0x7f, 0x08, 0x3e, 0x08, 0x7f,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x48, 0x49,
-+ 0x4e, 0x7b, 0x4a, 0x42, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8,
-+ 0x68, 0x88, 0x08, 0x28, 0xe8, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x18, 0x35, 0x37, 0x34, 0x50,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x1c,
-+ 0x73, 0x12, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x27, 0x00, 0x10,
-+ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x01, 0x13,
-+ 0x16, 0x1b, 0x22, 0x22, 0x41, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x48, 0x88, 0x08, 0x28, 0xe8, 0x30, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x27, 0x04, 0x17,
-+ 0x1a, 0x13, 0x22, 0x23, 0x42, 0x42, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0xfc, 0x04, 0xf8,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x07, 0x18, 0x6f, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xf8, 0xc8, 0x08, 0x48, 0xc8, 0x70, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x14, 0x19,
-+ 0x37, 0x55, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8,
-+ 0x28, 0xc8, 0x08, 0x28, 0xe8, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3f, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x24, 0xf8, 0x20, 0xf8, 0x20,
-+ 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x0f, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x20,
-+ 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x44, 0xf4, 0x28, 0xe8, 0x54, 0xe4,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x48, 0x4f, 0x48, 0x48,
-+ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x08, 0x1c, 0x1a, 0x1b,
-+ 0x29, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0x40, 0x64, 0xa4, 0xa8,
-+ 0xb0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x13, 0x19, 0x37, 0x35,
-+ 0x33, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x50, 0xfc, 0x50,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x88, 0xe8, 0x28, 0x28, 0xe8,
-+ 0xb0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1f, 0x1a,
-+ 0x2a, 0x28, 0x49, 0x0a, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0x20, 0x20, 0xfc, 0x60,
-+ 0x70, 0xb0, 0x28, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x09, 0x37, 0x24, 0x27, 0x24, 0x37, 0x20,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x80, 0x00, 0xf8, 0x48, 0xc8, 0x48, 0xd8, 0x08,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x2d, 0x77, 0x3f, 0x0f, 0x0f, 0x09,
-+ 0x0f, 0x1f, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0xf8, 0xe0, 0xe0, 0x20,
-+ 0xe0, 0xf0, 0xf0, 0x14, 0xf4, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x0f, 0x48, 0x23,
-+ 0x2a, 0x0b, 0x12, 0x13, 0x22, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x48, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x02, 0x0c, 0x32, 0x01, 0x02, 0x0c, 0x7f, 0x01,
-+ 0x1f, 0x09, 0x05, 0x05, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x30, 0x48, 0x80, 0xc0, 0x30, 0xec, 0x00,
-+ 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x10, 0x1b, 0x24, 0x27, 0x78, 0x13, 0x7c,
-+ 0x13, 0x54, 0x39, 0x32, 0x1c, 0x60, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8,
-+ 0xf8, 0xa8, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x4f, 0x4b, 0x4a, 0x4a,
-+ 0x4b, 0x7a, 0x4b, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0xfc, 0x58, 0xd8, 0xe8,
-+ 0xf8, 0xe8, 0x58, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7c, 0x55, 0x55, 0x7d, 0x55, 0x55, 0x7d,
-+ 0x55, 0x11, 0x11, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x20, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x04, 0x03, 0x7f,
-+ 0x01, 0x03, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0xc0, 0x00, 0xfc,
-+ 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x20, 0x7f, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x71, 0x19, 0x15, 0x75, 0x41, 0x4f, 0x71,
-+ 0x53, 0x13, 0x15, 0x19, 0x11, 0x61, 0x00, 0x00,
-+ 0x00, 0x38, 0x48, 0x48, 0xb8, 0x20, 0xe0, 0x38,
-+ 0xa8, 0x48, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x22, 0x12, 0x0c, 0x04, 0x06,
-+ 0x0a, 0x09, 0x11, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x02, 0x22, 0x12,
-+ 0x0c, 0x04, 0x0c, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x08, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x07, 0x04, 0x04, 0x06,
-+ 0x09, 0x09, 0x08, 0x09, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0xc4, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x00, 0xf8, 0x10, 0x20,
-+ 0x40, 0x40, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x50, 0x12,
-+ 0x12, 0x12, 0x12, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x90,
-+ 0x90, 0x90, 0x90, 0x94, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x7e, 0x00, 0x01, 0x7f, 0x14,
-+ 0x14, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x10, 0x10, 0xfc, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x34, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x1f, 0x04, 0x7f,
-+ 0x04, 0x1b, 0x60, 0x06, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf0, 0x40, 0xfc,
-+ 0x40, 0x30, 0x8c, 0x00, 0x80, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12,
-+ 0x7f, 0x2c, 0x2d, 0x33, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0xc8, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x3f, 0x28, 0x5f, 0x14, 0x3f, 0x64,
-+ 0x3f, 0x24, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x3f, 0x02, 0x7f, 0x04, 0x1f,
-+ 0x60, 0x0f, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x80, 0xfc, 0x40, 0xf0,
-+ 0x4c, 0xc0, 0x40, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x4a, 0x4f, 0x4a, 0x4a, 0x4a,
-+ 0x4b, 0x7a, 0x4f, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0xa8, 0xa8, 0xb8,
-+ 0x28, 0x48, 0xfc, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x01, 0x17, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x17,
-+ 0x12, 0x1a, 0x63, 0x02, 0x03, 0x02, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xfc,
-+ 0xa0, 0xa8, 0x18, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x04, 0x0e, 0x03, 0x1c, 0x08,
-+ 0x7f, 0x12, 0x34, 0x0c, 0x1a, 0x61, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x40, 0x80, 0xc0, 0x30, 0x20,
-+ 0xfc, 0x48, 0xd0, 0x30, 0x68, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x00, 0x00, 0x7f,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x00, 0x00, 0xfc,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x0f, 0x08, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xe0, 0x20, 0xe0,
-+ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22,
-+ 0x3f, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x88, 0x04, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x0f, 0x09, 0x0f, 0x01, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x2f, 0x29,
-+ 0x4f, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0x88, 0x48, 0x50, 0x20, 0x54,
-+ 0x8c, 0x04, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x17, 0x3a, 0x37, 0x37, 0x52,
-+ 0x13, 0x13, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xfc, 0x50, 0xf0, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x33, 0x55,
-+ 0x18, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x28, 0xfc, 0x20, 0xe8, 0x28, 0xd0, 0x54, 0xec,
-+ 0x84, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7f, 0x12, 0x12, 0x13, 0x1a,
-+ 0x70, 0x17, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0xf8, 0xa8, 0xa8, 0x38, 0x58,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x04, 0x7f, 0x12, 0x1f, 0x12,
-+ 0x1e, 0x13, 0x1e, 0x62, 0x02, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88,
-+ 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x00,
-+ 0x7f, 0x0c, 0x2a, 0x2a, 0x49, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x7f, 0x14, 0x1f, 0x34,
-+ 0x5f, 0x14, 0x1f, 0x14, 0x1f, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x40, 0x20, 0x20, 0x07, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x23, 0x22, 0x03, 0x10,
-+ 0x13, 0x10, 0x27, 0x20, 0x41, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x08, 0x0b,
-+ 0x1a, 0x1b, 0x2a, 0x2b, 0x4a, 0x48, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x08, 0xe8,
-+ 0x28, 0xe8, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x0b, 0x42, 0x27, 0x29, 0x03, 0x12,
-+ 0x17, 0x2a, 0x23, 0x42, 0x43, 0x42, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x80, 0xfc, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x13, 0x10, 0x17, 0x7d, 0x11,
-+ 0x11, 0x14, 0x19, 0x66, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x00, 0xfc, 0xf0, 0x10,
-+ 0xf8, 0xc8, 0xb0, 0x90, 0x8c, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20,
-+ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3f, 0x24, 0x3f,
-+ 0x20, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x80, 0x00, 0x78, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x3f, 0x02, 0x7f, 0x04, 0x07,
-+ 0x0c, 0x0f, 0x14, 0x27, 0x44, 0x07, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xf8, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x25, 0x42, 0x3f, 0x01,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xf8, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x45, 0x3f, 0x20, 0x4f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xfc, 0x08, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x3f, 0x24, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x48, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x17, 0x0c, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x29, 0x4a, 0x0b, 0x00, 0x00,
-+ 0x1c, 0xe4, 0xa8, 0x50, 0xfc, 0x40, 0xfc, 0x40,
-+ 0x78, 0xc8, 0xb0, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x7f, 0x01,
-+ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x23, 0x3e, 0x23,
-+ 0x3e, 0x08, 0x7f, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x90, 0x08, 0xfc, 0x48, 0x68,
-+ 0xd8, 0xd8, 0x68, 0x68, 0x48, 0xd8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3c, 0x27, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x11, 0x3d, 0x25, 0x35, 0x2d, 0x2d, 0x7f,
-+ 0x24, 0x2d, 0x2d, 0x2d, 0x25, 0x4f, 0x00, 0x00,
-+ 0x10, 0xf0, 0x50, 0xfc, 0x30, 0xe0, 0x5c, 0xe0,
-+ 0x00, 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x3f, 0x20, 0x4f,
-+ 0x00, 0x3f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x08, 0xe0,
-+ 0x00, 0xfc, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x3e, 0x48, 0x7f, 0x14, 0x3f, 0x68,
-+ 0x3e, 0x28, 0x3e, 0x28, 0x3f, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x7f, 0x12, 0x1f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xfc, 0x40, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x27, 0x15, 0x17, 0x00, 0x0f, 0x73, 0x12,
-+ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xf8, 0x00, 0xfc, 0xf0, 0x10,
-+ 0xf8, 0xc8, 0xb0, 0x88, 0x80, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x27, 0x26, 0x7b, 0x12, 0x7f,
-+ 0x12, 0x55, 0x39, 0x31, 0x1f, 0x60, 0x00, 0x00,
-+ 0x10, 0xd0, 0x90, 0xdc, 0x60, 0xc0, 0x9c, 0xc0,
-+ 0x00, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x27,
-+ 0x24, 0x27, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21,
-+ 0x2f, 0x23, 0x25, 0x29, 0x21, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08,
-+ 0xe8, 0x88, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x22,
-+ 0x27, 0x21, 0x2f, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x88,
-+ 0xc8, 0x08, 0xe8, 0x88, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x28, 0x31, 0x2a, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x90, 0x10, 0x20, 0x78, 0x48,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x09, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x08, 0x7e, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0xf8, 0x28, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x10, 0xf8, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x1b, 0x28, 0x7e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x39, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0xf0, 0x90, 0x90, 0xf0,
-+ 0x80, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x7e, 0x08, 0x7e,
-+ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0xf0, 0x90, 0x90, 0xf0,
-+ 0x80, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x1a,
-+ 0x06, 0x05, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0xc4, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1f, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x40,
-+ 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x17,
-+ 0x10, 0x10, 0x2f, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x80, 0x80, 0xf8, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x11, 0x1f, 0x09, 0x3f, 0x2f, 0x22, 0x3f,
-+ 0x29, 0x2f, 0x2f, 0x2f, 0x39, 0x41, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x10, 0xfc, 0x20, 0x20, 0xbc,
-+ 0x48, 0xa8, 0x10, 0xb0, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x01, 0x7c, 0x10, 0x10, 0x13, 0x7c, 0x10,
-+ 0x10, 0x11, 0x1d, 0x62, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0xa0, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x49, 0x29, 0x29, 0x0f, 0x1c,
-+ 0x2f, 0x4c, 0x12, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0xbc, 0xa4,
-+ 0xbc, 0x44, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x79, 0x49, 0x49, 0x79, 0x49, 0x49, 0x79,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x06, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf8,
-+ 0x48, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x7f, 0x04, 0x04,
-+ 0x0f, 0x0c, 0x14, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x4c, 0x2a, 0x1b, 0x6c, 0x19, 0x08,
-+ 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0x80, 0x80, 0xfc, 0xb0, 0x30,
-+ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x14, 0x1d, 0x16, 0x14, 0x13,
-+ 0x13, 0x13, 0x22, 0x23, 0x43, 0x1c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0xfc, 0xf8, 0xf8, 0xfc, 0xf0,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x14, 0x14, 0x1d, 0x16,
-+ 0x14, 0x14, 0x24, 0x24, 0x44, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x01, 0x3e, 0x00, 0x00, 0x7f, 0x14, 0x14,
-+ 0x14, 0x15, 0x23, 0x20, 0x41, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x22, 0x14, 0x3f, 0x24, 0x28,
-+ 0x32, 0x24, 0x39, 0x22, 0x4c, 0x33, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x24, 0x2f, 0x29, 0x2f, 0x29,
-+ 0x2f, 0x26, 0x2d, 0x35, 0x44, 0x0d, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x19, 0x61, 0x01, 0x09,
-+ 0x09, 0x09, 0x09, 0x09, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x53, 0x11,
-+ 0x11, 0x10, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08,
-+ 0x10, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x02, 0x07, 0x18, 0x61, 0x1f, 0x10, 0x13, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0x00, 0xfc, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x60, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x04, 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x00, 0x1e, 0x12, 0x12, 0x1e, 0x01, 0x7f, 0x04,
-+ 0x18, 0x7e, 0x12, 0x12, 0x1e, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0xf0, 0x00, 0xfc, 0x40,
-+ 0x30, 0xfc, 0x90, 0x90, 0xf0, 0x90, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x07, 0x04, 0x07, 0x04, 0x7f,
-+ 0x09, 0x1f, 0x61, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xc0, 0x40, 0xc0, 0x40, 0xfc,
-+ 0x20, 0xf0, 0x0c, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x02, 0x04, 0x18, 0x7f, 0x00,
-+ 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x80, 0x40, 0x20, 0xfc, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x13, 0x7d, 0x25, 0x25, 0x24,
-+ 0x7b, 0x48, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xf8, 0x08, 0xf8, 0x90,
-+ 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x21, 0x5f, 0x02, 0x0c, 0x7f,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x40, 0x20, 0xfc,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x17, 0x54, 0x54, 0x57, 0x55,
-+ 0x54, 0x7c, 0x44, 0x40, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x06, 0x01, 0x07, 0x39, 0x02, 0x7f, 0x04, 0x0f,
-+ 0x18, 0x28, 0x48, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x20, 0xc0, 0x60, 0x10, 0x00, 0xfc, 0x80, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00,
-+ 0x11, 0x15, 0x65, 0x19, 0x0d, 0x13, 0x7f, 0x01,
-+ 0x3f, 0x08, 0x0c, 0x12, 0x21, 0x46, 0x00, 0x00,
-+ 0x20, 0x28, 0xc8, 0x30, 0x30, 0x48, 0xfc, 0x10,
-+ 0xfc, 0x90, 0xa0, 0x44, 0xb4, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x0f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x08, 0xf8,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x10, 0x13, 0x12, 0x1f,
-+ 0x72, 0x13, 0x10, 0x17, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x10, 0x1c, 0x14,
-+ 0x14, 0x14, 0x27, 0x24, 0x44, 0x1b, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0x90,
-+ 0xf0, 0x90, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x23, 0x3e,
-+ 0x28, 0x24, 0x26, 0x3a, 0x61, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0x50, 0x50, 0x50, 0xfc, 0x30,
-+ 0x30, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e,
-+ 0x12, 0x7f, 0x14, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xc8, 0x78, 0x48, 0x48, 0x78,
-+ 0x48, 0xc8, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x2b, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x90, 0xfc, 0x90, 0x88, 0x04, 0x04, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x1f, 0x09, 0x7f, 0x09, 0x0f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xe0, 0x30, 0xfc, 0x20, 0xe0,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x16, 0x7e, 0x11, 0x1a, 0x37, 0x34,
-+ 0x33, 0x52, 0x53, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xd4, 0x48, 0xd4, 0xfc, 0x50,
-+ 0xfc, 0x28, 0x28, 0x90, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x09, 0x28, 0x2b, 0x28, 0x4f,
-+ 0x0c, 0x0b, 0x0a, 0x12, 0x12, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x44, 0xf8, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x12, 0x0c, 0x7f, 0x19, 0x6d,
-+ 0x16, 0x6d, 0x15, 0x64, 0x04, 0x1b, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x2f, 0x40, 0x3f, 0x01,
-+ 0x01, 0x1a, 0x06, 0x05, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xe0, 0x20,
-+ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x0b, 0x42, 0x25, 0x20, 0x07, 0x00,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x14, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x11, 0x15, 0x65, 0x19, 0x15, 0x7f, 0x02, 0x7f,
-+ 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x21, 0x00, 0x00,
-+ 0x20, 0x28, 0xc8, 0x30, 0x28, 0xfc, 0xa4, 0xfc,
-+ 0x88, 0x48, 0x50, 0x20, 0x54, 0x8c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x08, 0x0c, 0x1a,
-+ 0x2a, 0x48, 0x09, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f,
-+ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x07, 0x00, 0x00,
-+ 0x60, 0x80, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec,
-+ 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x09, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1b, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0xd0, 0x30, 0xc8, 0x40, 0xfc, 0xa0, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x12, 0x1a, 0x2a, 0x4f, 0x14, 0x15, 0x3d, 0x62,
-+ 0x25, 0x3f, 0x2a, 0x2b, 0x32, 0x22, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0x7c, 0x48, 0xc8, 0x28,
-+ 0x28, 0xb0, 0x90, 0x30, 0xc8, 0x84, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x3f, 0x09, 0x09, 0x7f, 0x09,
-+ 0x09, 0x08, 0x15, 0x15, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x7f, 0x00, 0x3e, 0x00, 0x3e,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x0f, 0x09, 0x0f, 0x7f, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x28,
-+ 0x2f, 0x28, 0x38, 0x28, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80,
-+ 0x80, 0x84, 0x84, 0x7c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x70, 0xd0, 0x50, 0x50, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x4b, 0x2b, 0x2c, 0x08, 0x7f, 0x14,
-+ 0x14, 0x15, 0x16, 0x25, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x28, 0xfc, 0x20, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1a, 0x28, 0x7e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x28, 0x25, 0x3b, 0x62, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3e, 0x28, 0x3e, 0x29, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x50, 0x88, 0xfc, 0x08,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x15,
-+ 0x05, 0x05, 0x09, 0x09, 0x11, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0x20, 0x20, 0x50, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x02, 0x03, 0x0c, 0x7f, 0x09, 0x0f, 0x0f, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0xe0, 0x20, 0xe0, 0xe0, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x0a, 0x09, 0x09, 0x17, 0x10, 0x30, 0x51, 0x11,
-+ 0x13, 0x15, 0x1c, 0x12, 0x12, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xf8, 0x08,
-+ 0xfc, 0x54, 0xac, 0x84, 0x04, 0x18, 0x00, 0x00,
-+ 0x09, 0x08, 0x0f, 0x10, 0x13, 0x30, 0x57, 0x13,
-+ 0x11, 0x1f, 0x11, 0x17, 0x11, 0x13, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8,
-+ 0x24, 0xfc, 0xa8, 0x10, 0x6c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x13, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x88, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xc0, 0x40, 0x40, 0xc0,
-+ 0x40, 0xc0, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x07, 0x04, 0x3f, 0x27, 0x3d, 0x23, 0x2a,
-+ 0x2a, 0x3b, 0x3a, 0x2b, 0x4c, 0x30, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xa0, 0x3c, 0xe0, 0x28, 0x28,
-+ 0xb0, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x13, 0x1d,
-+ 0x70, 0x10, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x14, 0x15, 0x16, 0x7c, 0x13, 0x12, 0x13, 0x1d,
-+ 0x77, 0x11, 0x13, 0x12, 0x14, 0x39, 0x00, 0x00,
-+ 0x00, 0xfc, 0x28, 0x90, 0x90, 0x7c, 0x98, 0x50,
-+ 0xdc, 0x50, 0x50, 0xf0, 0x90, 0x0c, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x13, 0x1e,
-+ 0x12, 0x7f, 0x12, 0x11, 0x21, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x7c, 0xa8, 0x30, 0x20,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x09, 0x08, 0x2b, 0x28, 0x3d, 0x28, 0x4b, 0x0d,
-+ 0x18, 0x6f, 0x08, 0x0b, 0x08, 0x09, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xe8,
-+ 0xa4, 0xfc, 0xe8, 0x94, 0xac, 0xc4, 0x00, 0x00,
-+ 0x20, 0x27, 0x38, 0x22, 0x1e, 0x11, 0x1e, 0x28,
-+ 0x7e, 0x08, 0x14, 0x13, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0x20, 0xfc, 0x28, 0xb0,
-+ 0xa0, 0xb8, 0xa0, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x05, 0x09, 0x09, 0x19,
-+ 0x35, 0x55, 0x11, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x10, 0x14, 0x14, 0xcc, 0x0c, 0x04, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x06, 0x38,
-+ 0x7f, 0x08, 0x0e, 0x78, 0x08, 0x1b, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x90, 0x88,
-+ 0xfc, 0x48, 0x50, 0x24, 0xd4, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x54, 0x57, 0x54, 0x7f,
-+ 0x53, 0x18, 0x14, 0x1f, 0x60, 0x01, 0x00, 0x00,
-+ 0x90, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0xa4,
-+ 0xfc, 0xa8, 0xd8, 0x94, 0xec, 0x84, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7e, 0x03, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x38, 0x07, 0x78, 0x03, 0x38, 0x07, 0x3b,
-+ 0x01, 0x3f, 0x29, 0x2f, 0x39, 0x2b, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8,
-+ 0x24, 0xfc, 0xa8, 0x14, 0x6c, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x12, 0x14, 0x12, 0x1a,
-+ 0x77, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x88, 0xa8, 0xa8, 0xc8,
-+ 0xf8, 0xc8, 0xa8, 0x98, 0x88, 0xb0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x0c, 0x08, 0x1f, 0x12, 0x2a,
-+ 0x4a, 0x3f, 0x07, 0x0a, 0x32, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x48, 0x48,
-+ 0x88, 0xe8, 0x08, 0xc8, 0x28, 0x30, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x0b, 0x3e, 0x2b,
-+ 0x3e, 0x08, 0x7f, 0x0a, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0xc8, 0x58, 0x58, 0xe8, 0xf8,
-+ 0xe8, 0xd8, 0x58, 0x48, 0x48, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x3f, 0x00,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x79, 0x4a, 0x4a, 0x4d, 0x48,
-+ 0x48, 0x78, 0x49, 0x42, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x20,
-+ 0x40, 0x80, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x5f, 0x52, 0x53, 0x5e,
-+ 0x50, 0x7f, 0x50, 0x41, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0x28, 0xa8, 0x28, 0xc8, 0x58,
-+ 0x80, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x1b, 0x34, 0x37,
-+ 0x32, 0x53, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0xa0, 0xfc, 0xc8, 0x50, 0xc0, 0xf8,
-+ 0xa8, 0x38, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x01, 0x3c,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1e, 0x32,
-+ 0x52, 0x12, 0x12, 0x1e, 0x10, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1b,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x03,
-+ 0x0d, 0x79, 0x07, 0x0d, 0x31, 0x03, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x80,
-+ 0x60, 0x3c, 0xc0, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x08,
-+ 0x0c, 0x12, 0x13, 0x7d, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x47, 0x0c, 0x32, 0x03,
-+ 0x0c, 0x7f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x40, 0x80, 0x80,
-+ 0x70, 0xec, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x39, 0x29, 0x2f, 0x39, 0x29, 0x2f, 0x39,
-+ 0x29, 0x2a, 0x2a, 0x2f, 0x28, 0x58, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0xe8, 0x28, 0x28, 0xe8, 0x28,
-+ 0x28, 0xa8, 0xf8, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x12, 0x1f, 0x11, 0x10,
-+ 0x17, 0x14, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x02, 0x21, 0x11, 0x17, 0x00, 0x02, 0x02, 0x72,
-+ 0x13, 0x12, 0x10, 0x18, 0x27, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x80, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x03, 0x04, 0x04, 0x08, 0x10,
-+ 0x20, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x40, 0x40,
-+ 0xc0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x11, 0x11, 0x3f, 0x51, 0x11,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x24, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x10,
-+ 0x11, 0x11, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0xe0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x04, 0x04, 0x06, 0x0a, 0x09,
-+ 0x09, 0x08, 0x10, 0x10, 0x23, 0x4c, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x40, 0x40, 0xf0, 0x10, 0x10,
-+ 0x20, 0xa0, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x07, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49,
-+ 0x7a, 0x4a, 0x42, 0x04, 0x09, 0x16, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x20, 0x20, 0xf8, 0x88, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f,
-+ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x10, 0xe0, 0x00, 0x00,
-+ 0x02, 0x07, 0x08, 0x3f, 0x00, 0x0f, 0x00, 0x1f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x7f, 0x08, 0x4a, 0x2b, 0x2c,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x1b, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x50, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x29, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0xf8, 0x88, 0x88,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x31, 0x09,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0x10, 0x10, 0xfc, 0x00, 0x88, 0x88, 0x50,
-+ 0x60, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00,
-+ 0x20, 0x17, 0x12, 0x42, 0x22, 0x23, 0x03, 0x12,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x53, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x20, 0x20, 0x78, 0x08, 0x90,
-+ 0x90, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x22, 0x01, 0x09,
-+ 0x08, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x10, 0x10, 0x10, 0x10,
-+ 0x90, 0xa0, 0xa0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x03, 0x0c, 0x31, 0x02, 0x0d, 0x71, 0x01,
-+ 0x11, 0x12, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x10,
-+ 0x10, 0xa0, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x13, 0x10, 0x12, 0x7d, 0x11,
-+ 0x10, 0x14, 0x19, 0x66, 0x00, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x68, 0x70,
-+ 0x50, 0xd0, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x04, 0x09, 0x11,
-+ 0x3f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x80, 0x88, 0x78, 0x00,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x48, 0x14, 0x1e, 0x12, 0x1e,
-+ 0x1e, 0x12, 0x7e, 0x06, 0x1a, 0x66, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x90, 0x70, 0xf0, 0x10, 0xf0,
-+ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x5f, 0x04, 0x04,
-+ 0x06, 0x0a, 0x09, 0x10, 0x23, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xe0, 0x20, 0x40,
-+ 0xf0, 0x10, 0x20, 0xc0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2b, 0x49, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xb8, 0xc8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d,
-+ 0x08, 0x2c, 0x2b, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x10, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x9c, 0xf0, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x20, 0x27, 0x24, 0x24, 0x24, 0x24, 0x27, 0x24,
-+ 0x24, 0x24, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x7f,
-+ 0x02, 0x02, 0x04, 0x08, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x40, 0x20, 0xf0, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10,
-+ 0x10, 0x17, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x80, 0xfc, 0x80,
-+ 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x20, 0x20,
-+ 0x3f, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20,
-+ 0xe0, 0x20, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x0f,
-+ 0x79, 0x09, 0x09, 0x09, 0x09, 0x19, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x7a, 0x17, 0x15, 0x15, 0x1b,
-+ 0x72, 0x12, 0x15, 0x19, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x90, 0x94, 0x14, 0x0c, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x7f, 0x04, 0x08, 0x1f, 0x61,
-+ 0x1f, 0x01, 0x3f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x60, 0x98, 0x04,
-+ 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x4a, 0x23, 0x22, 0x0b, 0x0a, 0x13,
-+ 0x21, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x11,
-+ 0x19, 0x15, 0x25, 0x21, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x08, 0xf8, 0x40,
-+ 0x48, 0x48, 0x50, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3e, 0x00, 0x3f,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x41, 0x22, 0x27, 0x02, 0x13,
-+ 0x12, 0x13, 0x20, 0x25, 0x44, 0x48, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x12, 0x13, 0x2d, 0x4f, 0x11, 0x35, 0x55, 0x15,
-+ 0x1e, 0x1f, 0x00, 0x7f, 0x19, 0x63, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xe8, 0x28, 0xe8, 0x28, 0xf8,
-+ 0x20, 0xf0, 0x00, 0xfc, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x07, 0x08, 0x11, 0x3f, 0x51, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x1f,
-+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xe0,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x1f,
-+ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xe0,
-+ 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x01, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x11, 0x17, 0x31, 0x51, 0x11,
-+ 0x1f, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20,
-+ 0xfc, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x12, 0x31, 0x51, 0x1f,
-+ 0x10, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x48, 0x50, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x1f, 0x11, 0x33, 0x55, 0x19,
-+ 0x17, 0x14, 0x15, 0x15, 0x15, 0x14, 0x00, 0x00,
-+ 0x30, 0xc0, 0x80, 0xfc, 0x20, 0xf0, 0x28, 0xe4,
-+ 0xf8, 0x08, 0xe8, 0x28, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x20, 0x2d, 0x23, 0x22, 0x24, 0x28, 0x3f,
-+ 0x24, 0x04, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x80, 0x90, 0x10, 0x10, 0x90, 0x90, 0x10, 0xf0,
-+ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x14, 0x14, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x14, 0x15, 0x26, 0x45, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x50, 0x50, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x50, 0x50, 0x94, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x04,
-+ 0x7f, 0x00, 0x04, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40,
-+ 0xfc, 0x00, 0x40, 0x20, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x40, 0x58, 0x46, 0x41, 0x41, 0x42,
-+ 0x44, 0x48, 0x50, 0x7f, 0x40, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x88, 0x88, 0x08, 0x88, 0x48,
-+ 0x28, 0x28, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x10, 0x7c, 0x11, 0x12, 0x12,
-+ 0x1f, 0x12, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x88, 0x08, 0x30, 0x10,
-+ 0xfc, 0x94, 0x94, 0xa4, 0xa4, 0xcc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x2f, 0x20, 0x20, 0x27, 0x20,
-+ 0x20, 0x20, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x80, 0x80, 0xf0, 0x80,
-+ 0x80, 0x80, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x33, 0x22, 0x2a, 0x2b, 0x2a, 0x2a, 0x2b,
-+ 0x2a, 0x3b, 0x6a, 0x13, 0x16, 0x20, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0x28, 0xa8, 0xf0, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49,
-+ 0x49, 0x79, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x1c, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x0f, 0x01, 0x7f, 0x04, 0x1f, 0x64, 0x07,
-+ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0x60, 0x80, 0x00, 0xfc, 0x40, 0xf0, 0x4c, 0xc0,
-+ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x00, 0x13, 0x11, 0x10, 0x7f, 0x10, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0xf8, 0x20, 0xa0, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xa0, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x56, 0x55, 0x55, 0x57,
-+ 0x54, 0x7c, 0x44, 0x41, 0x02, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x48, 0x48, 0x50, 0xfc,
-+ 0x40, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x78, 0x08, 0x0f, 0x78, 0x4b, 0x42, 0x7a,
-+ 0x4b, 0x4a, 0x08, 0x08, 0x17, 0x60, 0x00, 0x00,
-+ 0x40, 0x50, 0x88, 0xfc, 0x44, 0xf8, 0x48, 0x48,
-+ 0xf8, 0x50, 0x48, 0x7c, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x7b, 0x09, 0x09, 0x79, 0x49, 0x43, 0x79,
-+ 0x49, 0x49, 0x09, 0x09, 0x17, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0xf0, 0x50, 0xf0, 0xf8, 0xf0,
-+ 0x50, 0xf0, 0x50, 0xf0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x13, 0x38, 0x34, 0x34, 0x57,
-+ 0x10, 0x10, 0x10, 0x11, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x90, 0x88, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x09, 0x09, 0x0f, 0x72, 0x04,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x90, 0x54, 0x54, 0x0c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04, 0x0a,
-+ 0x12, 0x62, 0x12, 0x12, 0x22, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x20,
-+ 0x10, 0x0c, 0x90, 0x48, 0x48, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x78, 0x12, 0x11, 0x11, 0x1f,
-+ 0x70, 0x10, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x48, 0x50, 0xfc,
-+ 0x40, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x3f, 0x0a, 0x0a, 0x7f, 0x09, 0x1f,
-+ 0x22, 0x47, 0x3c, 0x04, 0x05, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x19, 0x36, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xa0, 0xf0, 0xa8, 0xe4,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x23, 0x02, 0x10,
-+ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x4f, 0x30, 0x10, 0x30, 0x48, 0x0b, 0x18,
-+ 0x28, 0x48, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x44, 0x28, 0x17, 0x32, 0x49, 0x09, 0x1f,
-+ 0x28, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x48, 0x50, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x3f, 0x28, 0x49, 0x0a, 0x7e,
-+ 0x0b, 0x0e, 0x16, 0x12, 0x22, 0x42, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xa0, 0xf0, 0xa8, 0xe4,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x25, 0x3e, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x24, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x24, 0x24, 0xd4, 0x74,
-+ 0xb4, 0x14, 0xf4, 0x14, 0x04, 0x18, 0x00, 0x00,
-+ 0x02, 0x0f, 0x02, 0x0c, 0x7f, 0x12, 0x26, 0x4f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0xc0, 0xf8, 0x48, 0x98, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x37, 0x24, 0x27, 0x3c, 0x27, 0x3e, 0x27,
-+ 0x24, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xc8, 0x78, 0xc8, 0xf8, 0xc8,
-+ 0x48, 0xfc, 0x00, 0x60, 0x10, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x3f, 0x07, 0x1c,
-+ 0x67, 0x1f, 0x17, 0x14, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xc0, 0x00, 0xf8, 0xc0, 0x70,
-+ 0xcc, 0xf0, 0xd0, 0x50, 0xd0, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x12, 0x1b,
-+ 0x2b, 0x7a, 0x12, 0x13, 0x2c, 0x40, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0x24, 0xa4, 0xe4, 0x78, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x20, 0xf8, 0x90, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x13, 0x6a, 0x2b, 0x1f, 0x6a, 0x13, 0x3f, 0x04,
-+ 0x7f, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0xb8, 0xa8, 0xb8, 0xa4, 0xf8, 0x60, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x11, 0x5b, 0x2b, 0x16, 0x7f, 0x0b, 0x33, 0x07,
-+ 0x1f, 0x67, 0x07, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x38, 0xa8, 0xb0, 0xa8, 0xe4, 0xf8, 0xa0, 0xc0,
-+ 0xf0, 0xcc, 0xc0, 0xb0, 0x60, 0x18, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x3f, 0x7a, 0x2a, 0x3f, 0x08,
-+ 0x0f, 0x0f, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x30, 0xcc, 0xf0, 0x80,
-+ 0xe0, 0xe0, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x32, 0x52, 0x12,
-+ 0x12, 0x13, 0x1e, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0xc8, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x4e, 0x28, 0x27, 0x04, 0x17, 0x1a,
-+ 0x22, 0x3f, 0x46, 0x45, 0x48, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xb0, 0x90, 0x7c, 0x98, 0x50,
-+ 0x5c, 0xd0, 0x50, 0x70, 0x90, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x09, 0x7f, 0x08, 0x08,
-+ 0x7f, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x20, 0xfc, 0x20, 0x20,
-+ 0xfc, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x49, 0x4f, 0x79, 0x49,
-+ 0x4f, 0x48, 0x78, 0x49, 0x42, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x50, 0xfc, 0x10, 0x10,
-+ 0xfc, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x02, 0x12, 0x0a, 0x7f, 0x04, 0x3f, 0x01, 0x1f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x80, 0x90, 0xa0, 0xfc, 0x40, 0xf8, 0x00, 0xf0,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x13, 0x12, 0x12, 0x23, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xfc, 0x04,
-+ 0xe4, 0x24, 0x24, 0xe4, 0x24, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24, 0x3f,
-+ 0x24, 0x24, 0x24, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7c, 0x11, 0x11, 0x3b, 0x36,
-+ 0x36, 0x53, 0x52, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xdc, 0x24, 0xb4, 0xa8,
-+ 0xa8, 0xb4, 0x24, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x1f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x20, 0x10, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x3a, 0x36,
-+ 0x36, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x09, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x09, 0x09, 0x0f, 0x11, 0x13, 0x32, 0x53, 0x10,
-+ 0x13, 0x10, 0x13, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x3e, 0x2b, 0x2a, 0x3e, 0x08,
-+ 0x3e, 0x08, 0x3e, 0x08, 0x0e, 0x79, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x11, 0x7e, 0x13, 0x14, 0x10,
-+ 0x10, 0x14, 0x1b, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88, 0x88,
-+ 0x28, 0xc8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20,
-+ 0xfc, 0x24, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x10, 0x60, 0x80, 0x00, 0x00, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x02, 0x1c, 0x10, 0x10, 0x1f, 0x15, 0x14,
-+ 0x14, 0x14, 0x24, 0x24, 0x45, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x08, 0x3e, 0x08, 0x0f, 0x72, 0x04,
-+ 0x1f, 0x60, 0x0f, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x80, 0x40,
-+ 0xf0, 0x0c, 0xe0, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x0f,
-+ 0x00, 0x7f, 0x09, 0x11, 0x61, 0x03, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x60, 0x70, 0xa8, 0x24, 0xe0,
-+ 0x00, 0xfc, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x05, 0x1f, 0x6a, 0x09, 0x0e, 0x0f,
-+ 0x01, 0x1f, 0x12, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0xac, 0xa0, 0x60, 0xe0,
-+ 0x00, 0xf0, 0x90, 0xd0, 0x50, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x40, 0x1e, 0x13,
-+ 0x1e, 0x12, 0x1e, 0x22, 0x22, 0x47, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x40, 0x40, 0xf8,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3e, 0x3f, 0x21,
-+ 0x0e, 0x01, 0x7f, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x20,
-+ 0x60, 0x98, 0xe4, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x70, 0xc0, 0x00, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x20, 0x2f, 0x21, 0x3f,
-+ 0x23, 0x25, 0x39, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x68, 0x88, 0x08, 0xf8,
-+ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3c,
-+ 0x55, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x60, 0xa0, 0x90, 0xf8, 0x04, 0x00,
-+ 0xf8, 0x10, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x09, 0x0a, 0x14, 0x19,
-+ 0x34, 0x57, 0x11, 0x11, 0x12, 0x10, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0xd0, 0xb8, 0xd4, 0x90, 0xf8,
-+ 0x00, 0xfc, 0x28, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x03, 0x3e, 0x03, 0x3c,
-+ 0x03, 0x3c, 0x27, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x13, 0x12, 0x02, 0x03, 0x02, 0x72,
-+ 0x12, 0x14, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x60, 0x80, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x67, 0x01, 0x3f,
-+ 0x01, 0x09, 0x05, 0x05, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xcc, 0x00, 0xf8,
-+ 0x00, 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x49, 0x4b, 0x4c, 0x48,
-+ 0x4b, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf8, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0xf8,
-+ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x44, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x53, 0x12,
-+ 0x13, 0x10, 0x1f, 0x11, 0x12, 0x1c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x2f, 0x48, 0x08,
-+ 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x2c, 0x23, 0x20,
-+ 0x21, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
-+ 0x40, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x48, 0x30, 0x11, 0x31, 0x4a, 0x0d, 0x19,
-+ 0x29, 0x49, 0x09, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0xe8, 0x28,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x10, 0x11, 0x11, 0x7e, 0x10,
-+ 0x10, 0x14, 0x18, 0x61, 0x02, 0x0c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf0, 0x10, 0x10, 0x20, 0x20,
-+ 0x60, 0x60, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x3f, 0x28, 0x48, 0x08, 0x7f,
-+ 0x08, 0x0c, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x01,
-+ 0x01, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x23,
-+ 0x3e, 0x66, 0x0a, 0x12, 0x62, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x88, 0x88, 0xc8, 0xb0, 0x90,
-+ 0x90, 0xa8, 0xc8, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0xc8, 0xb0, 0x90, 0x90,
-+ 0xa8, 0xa8, 0xc0, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x00, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xfc, 0x60, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3f, 0x21,
-+ 0x2f, 0x21, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x48,
-+ 0xe8, 0x38, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x15, 0x15,
-+ 0x15, 0x17, 0x20, 0x3f, 0x46, 0x18, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0xe8, 0x08, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0xe0, 0x20, 0xfc, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x4e, 0x49, 0x49, 0x49,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x0f, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x0c, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf8, 0x48, 0x30, 0xd8, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x00,
-+ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x80, 0x88, 0x78, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x50, 0x17,
-+ 0x14, 0x14, 0x17, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x80, 0xf8,
-+ 0xa8, 0xf8, 0x18, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x4f, 0x09, 0x0f, 0x09, 0x0f,
-+ 0x01, 0x3f, 0x21, 0x2f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xf8, 0x48, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x02, 0x03, 0x70, 0x17,
-+ 0x14, 0x14, 0x17, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x80, 0xf8,
-+ 0xa8, 0xf8, 0x08, 0x18, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x25, 0x24,
-+ 0x27, 0x26, 0x3a, 0x23, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xfc, 0x54, 0x7c, 0x8c, 0x04, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x3f,
-+ 0x21, 0x21, 0x3f, 0x21, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x12, 0x13, 0x13, 0x7c, 0x10, 0x1b, 0x36, 0x37,
-+ 0x32, 0x53, 0x53, 0x12, 0x13, 0x1c, 0x00, 0x00,
-+ 0x20, 0xfc, 0x30, 0xc8, 0x00, 0xb8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0x28, 0xb0, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x19, 0x0e, 0x74, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0x28, 0x28, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x14, 0x12, 0x17, 0x14,
-+ 0x17, 0x14, 0x27, 0x24, 0x44, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x90, 0xa0, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x14, 0x14, 0x17,
-+ 0x14, 0x18, 0x28, 0x28, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x90, 0x90, 0xf0,
-+ 0x90, 0x88, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x12, 0x12, 0x1e,
-+ 0x72, 0x13, 0x15, 0x15, 0x19, 0x31, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0xfc, 0x24, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x26, 0x58, 0x1f, 0x10, 0x1f, 0x14,
-+ 0x14, 0x17, 0x28, 0x28, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x78, 0xf8, 0x08, 0xf8, 0x90,
-+ 0x90, 0xf0, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x05, 0x09, 0x11, 0x63, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x08, 0x90, 0x60, 0x20, 0x10, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x60, 0x60, 0x60, 0xa4, 0xa4, 0xa8, 0xb0, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x21, 0x2f, 0x4f, 0x35, 0x2f, 0x7d, 0x37, 0x5f,
-+ 0x11, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0xd4, 0xe4, 0x58, 0xd4, 0x7c, 0xd8, 0xf4,
-+ 0x10, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x0b, 0x48,
-+ 0x27, 0x20, 0x0b, 0x08, 0x17, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0xf8, 0x40,
-+ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x12, 0x7f, 0x01, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x22, 0x26, 0x14, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x48, 0x70, 0x44, 0x3c, 0x40, 0x4c, 0x70,
-+ 0x40, 0x44, 0x3c, 0x90, 0x48, 0x44, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x24, 0x27,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc,
-+ 0x48, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x07, 0x18, 0x01, 0x07, 0x79, 0x09, 0x05,
-+ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0xc0, 0x30, 0x2c, 0x20, 0x40,
-+ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x13, 0x7f,
-+ 0x08, 0x2d, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xdc, 0x54, 0xdc,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x04, 0x03, 0x3e, 0x12, 0x0d, 0x1b,
-+ 0x61, 0x3f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xf8, 0x48, 0x30, 0xc8,
-+ 0x04, 0xf8, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x24, 0x24, 0x7b, 0x10, 0x7d,
-+ 0x11, 0x55, 0x3a, 0x30, 0x1c, 0x60, 0x00, 0x00,
-+ 0x50, 0x90, 0x90, 0x94, 0xb4, 0xf4, 0xb8, 0xd0,
-+ 0xb0, 0x98, 0xa8, 0xa8, 0xc4, 0x84, 0x00, 0x00,
-+ 0x02, 0x3c, 0x7f, 0x3f, 0x2a, 0x3e, 0x2a, 0x3e,
-+ 0x3e, 0x0f, 0x79, 0x00, 0x24, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x88, 0x88, 0x30, 0x00, 0x88, 0x44, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x1f,
-+ 0x04, 0x0f, 0x14, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x7f, 0x0f, 0x09, 0x0f,
-+ 0x09, 0x0f, 0x1f, 0x7f, 0x12, 0x61, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xc0, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0xf0, 0xfc, 0x48, 0x24, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x7f, 0x00, 0x3e, 0x00, 0x3e,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3f, 0x22, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x12, 0x13, 0x7f, 0x12, 0x3e, 0x10,
-+ 0x1e, 0x33, 0x32, 0x52, 0x1e, 0x10, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x7f, 0x01, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x09, 0x7f, 0x09, 0x3f, 0x08,
-+ 0x0f, 0x19, 0x19, 0x29, 0x4f, 0x09, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0xd0, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04,
-+ 0x04, 0x3f, 0x04, 0x04, 0x07, 0x7c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xa0, 0x20, 0x30, 0xe8, 0x24,
-+ 0x24, 0xa0, 0x20, 0x20, 0xa0, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x7e, 0x12, 0x12, 0x22, 0x4d, 0x01,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x02, 0x04, 0x08, 0x1c,
-+ 0x2a, 0x4a, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x84, 0x84, 0xc4, 0xb8, 0x80, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x30, 0x50, 0x11,
-+ 0x17, 0x10, 0x12, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x90, 0x90, 0x20, 0xd0, 0x98, 0xe4,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x14, 0x15, 0x35, 0x56, 0x14,
-+ 0x14, 0x15, 0x15, 0x13, 0x10, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x42, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x15, 0x05,
-+ 0x05, 0x09, 0x09, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00,
-+ 0x00, 0x00, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3f, 0x22, 0x22, 0x3e, 0x23,
-+ 0x20, 0x4f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x90, 0x60, 0x60, 0x90,
-+ 0x0c, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01,
-+ 0x3f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x10, 0x10, 0x17, 0x7c, 0x10,
-+ 0x13, 0x14, 0x18, 0x60, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x22,
-+ 0x41, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x18,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x08, 0x0f, 0x71,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x08, 0x30,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x42, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x20, 0x48, 0x08, 0x90, 0x10,
-+ 0x24, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x08, 0x0b, 0x11, 0x24, 0x04, 0x09, 0x1e, 0x28,
-+ 0x4b, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xa0, 0x40, 0xf0, 0x4c, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x1f, 0x15,
-+ 0x19, 0x13, 0x2d, 0x20, 0x43, 0x1c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xfc, 0x58,
-+ 0xe4, 0xf4, 0x20, 0xc0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x0f, 0x78, 0x0f, 0x07,
-+ 0x00, 0x0f, 0x25, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0xfc, 0x20, 0xe0, 0xe0,
-+ 0x20, 0xe0, 0x08, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x02, 0x3c, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x3e,
-+ 0x20, 0x05, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x20, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x88, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x10, 0x1d,
-+ 0x73, 0x15, 0x11, 0x11, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80, 0xfc,
-+ 0x34, 0xc4, 0x04, 0x14, 0xf4, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x13, 0x7f, 0x15, 0x11, 0x11, 0x15,
-+ 0x1f, 0x71, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc,
-+ 0xe0, 0x20, 0x3c, 0x04, 0x04, 0x18, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x10, 0x1e, 0x23, 0x7a,
-+ 0x2a, 0x2a, 0x3a, 0x22, 0x02, 0x0d, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x01, 0x7f,
-+ 0x0f, 0x08, 0x0f, 0x05, 0x09, 0x33, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0xe0, 0x20, 0xe0, 0x60, 0x10, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1b, 0x1c, 0x1a,
-+ 0x2b, 0x28, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x21, 0x21, 0x00, 0x13,
-+ 0x10, 0x17, 0x20, 0x20, 0x41, 0x46, 0x00, 0x00,
-+ 0x08, 0x70, 0x88, 0x48, 0x50, 0x20, 0x40, 0xf8,
-+ 0x40, 0xfc, 0xc0, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x54, 0x54, 0x57, 0x7c, 0x54,
-+ 0x57, 0x54, 0x7c, 0x44, 0x07, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x0d, 0x78, 0x08, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x28, 0xfc, 0x60, 0xa4, 0x9c, 0xf0, 0x84, 0x7c,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x1c, 0x03, 0x01, 0x7f,
-+ 0x01, 0x09, 0x09, 0x11, 0x21, 0x01, 0x00, 0x00,
-+ 0x38, 0xc0, 0x20, 0x20, 0x40, 0x90, 0x08, 0xfc,
-+ 0x04, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0x70, 0xac, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x0b, 0x73, 0x15, 0x0d, 0x13, 0x7f,
-+ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xa8, 0x68, 0x70, 0x20, 0xfc, 0x20,
-+ 0x70, 0xa8, 0x28, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3f, 0x2a, 0x3e, 0x7f,
-+ 0x0a, 0x0e, 0x01, 0x7f, 0x0d, 0x31, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x90, 0x60, 0xb0,
-+ 0x4c, 0xc0, 0x70, 0x88, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x04, 0x3f, 0x04, 0x7f,
-+ 0x04, 0x3f, 0x04, 0x07, 0x78, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x20, 0x20, 0x30, 0xa8,
-+ 0x24, 0x24, 0x20, 0xa0, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x04, 0x03, 0x0d,
-+ 0x71, 0x0f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x60, 0x80, 0x60,
-+ 0x1c, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x12, 0x12,
-+ 0x7f, 0x12, 0x12, 0x12, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x48, 0x48, 0x48,
-+ 0xc8, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x3f, 0x21, 0x41, 0x0f, 0x09,
-+ 0x09, 0x0f, 0x09, 0x01, 0x01, 0x3e, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x08, 0x00, 0xe0, 0x20,
-+ 0x20, 0xe0, 0x20, 0x10, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x12, 0x7f, 0x1f, 0x3d, 0x55, 0x1e, 0x07, 0x7f,
-+ 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc8, 0x50, 0x30, 0xcc, 0xc0, 0xfc,
-+ 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x08, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xf0, 0x2c, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x34, 0x0c, 0x1a, 0x29, 0x48,
-+ 0x3e, 0x08, 0x08, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x02, 0x0c, 0x72, 0x4a, 0x2c, 0x08, 0x3e, 0x08,
-+ 0x7e, 0x08, 0x14, 0x13, 0x21, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x38, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x1f, 0x00, 0x00,
-+ 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf0, 0x00, 0x00,
-+ 0xfc, 0x40, 0x20, 0xf0, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x20, 0x13, 0x12, 0x02, 0x02, 0x72, 0x12,
-+ 0x13, 0x1e, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x80, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0xc8, 0x70, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x20, 0xb0, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x04, 0x07, 0x3f, 0x26, 0x3b, 0x3f, 0x26, 0x3c,
-+ 0x27, 0x3b, 0x26, 0x3a, 0x42, 0x0c, 0x00, 0x00,
-+ 0x08, 0xa8, 0xe8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0x28, 0xa8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x5c, 0xe0, 0x48, 0x48, 0x50,
-+ 0x30, 0x20, 0x60, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3f, 0x3e, 0x7f, 0x08,
-+ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x21, 0x12, 0x17, 0x44, 0x27, 0x24, 0x07, 0x12,
-+ 0x1f, 0x13, 0x24, 0x24, 0x4b, 0x50, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0xa0, 0xfc, 0xc8, 0xa8, 0x28,
-+ 0xe8, 0x90, 0x90, 0xa8, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x2a, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1c, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x80, 0xf8, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x09, 0x09, 0x0b, 0x12, 0x15, 0x31, 0x52, 0x14,
-+ 0x1f, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0xfc, 0xa8, 0xa8, 0x7c, 0x48, 0x48,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x41,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x10, 0x20,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x00, 0x1f,
-+ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90, 0xfc,
-+ 0xc0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x22, 0x1f, 0x12, 0x4f, 0x22, 0x23, 0x0c, 0x11,
-+ 0x17, 0x10, 0x2f, 0x22, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0x28, 0xd8, 0xa0, 0x20,
-+ 0x50, 0xb8, 0xc8, 0xb0, 0x88, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x01, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xc0, 0x40, 0x40,
-+ 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x02, 0x1f, 0x12, 0x12, 0x12,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3f,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x0f, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x13, 0x12, 0x34, 0x50, 0x17,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x12, 0x17, 0x38, 0x57, 0x14,
-+ 0x17, 0x14, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0xf0, 0x88, 0xf0, 0x90,
-+ 0xf0, 0x90, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x13, 0x10, 0x37, 0x50, 0x11,
-+ 0x12, 0x15, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xf8, 0x40, 0xfc, 0xa0, 0xf0,
-+ 0x28, 0xe4, 0x20, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x08, 0x08, 0x0e, 0x13, 0x12, 0x34, 0x5f, 0x11,
-+ 0x15, 0x15, 0x12, 0x13, 0x14, 0x18, 0x00, 0x00,
-+ 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20, 0xf8,
-+ 0x20, 0xfc, 0x20, 0x20, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x04, 0x3f, 0x04, 0x7f, 0x04,
-+ 0x3f, 0x04, 0x1c, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90,
-+ 0xf0, 0xc0, 0xb0, 0x8c, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x11, 0x09, 0x3f, 0x02, 0x7f, 0x04, 0x18,
-+ 0x6f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x10, 0x20, 0xf8, 0x80, 0xfc, 0x40, 0x30,
-+ 0xec, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x0a, 0x11, 0x7f, 0x04, 0x3f, 0x25,
-+ 0x3f, 0x24, 0x0a, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x48, 0x49, 0x49,
-+ 0x49, 0x79, 0x49, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x08, 0xf8, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x2f, 0x22, 0x3f, 0x24, 0x2f,
-+ 0x30, 0x27, 0x24, 0x23, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xe8, 0x88, 0xf8, 0x48, 0xe8,
-+ 0x58, 0xc8, 0x28, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3e, 0x24, 0x3f,
-+ 0x21, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x10, 0x13, 0x10, 0x7d, 0x24, 0x27, 0x24,
-+ 0x79, 0x48, 0x0d, 0x16, 0x24, 0x40, 0x00, 0x00,
-+ 0x08, 0x90, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8,
-+ 0xf8, 0xa0, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x08, 0x17, 0x10, 0x3b, 0x08,
-+ 0x4b, 0x28, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x21, 0x7f, 0x1f, 0x01, 0x7f, 0x1f,
-+ 0x12, 0x1f, 0x25, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0xf0, 0x00, 0xfc, 0xf0,
-+ 0x90, 0xf0, 0x08, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x1e, 0x52, 0x5e, 0x5e, 0x52, 0x5f, 0x7e, 0x2a,
-+ 0x29, 0x49, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x18, 0xe0, 0x28, 0xd0, 0x28, 0xfc, 0x64, 0xa8,
-+ 0x24, 0x20, 0x80, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x09, 0x11, 0x1f, 0x02, 0x7f, 0x08, 0x1f, 0x61,
-+ 0x1f, 0x01, 0x3f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0x10, 0xf0, 0x80, 0xfc, 0x20, 0xd8, 0x04,
-+ 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7f, 0x10, 0x17, 0x11, 0x13,
-+ 0x1c, 0x71, 0x11, 0x11, 0x11, 0x30, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xf8, 0xa0, 0xfc, 0x10, 0xe8,
-+ 0x24, 0xe0, 0x20, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x0b, 0x18, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x48, 0x08, 0x0b, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x30, 0x39, 0x37,
-+ 0x55, 0x51, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x40, 0xfc, 0x90, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x06, 0x03, 0x7f, 0x44, 0x5f,
-+ 0x09, 0x0f, 0x11, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xc0, 0x00, 0xfc, 0x48, 0xe0,
-+ 0x10, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x03, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x80,
-+ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x33, 0x2d, 0x3f,
-+ 0x25, 0x3f, 0x25, 0x25, 0x25, 0x23, 0x00, 0x00,
-+ 0x20, 0x28, 0xa4, 0x24, 0xfc, 0x20, 0x20, 0x30,
-+ 0x50, 0x50, 0x48, 0x88, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1f, 0x32,
-+ 0x52, 0x12, 0x12, 0x1f, 0x11, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x11, 0x3d, 0x25,
-+ 0x65, 0x24, 0x24, 0x3d, 0x22, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x00, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x07, 0x24, 0x27, 0x24, 0x27, 0x24, 0x27,
-+ 0x20, 0x3f, 0x25, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xfc, 0x60, 0x18, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x14, 0x17, 0x24, 0x47, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x0a, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0xa0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x38, 0x03, 0x7c, 0x03, 0x38, 0x07, 0x38,
-+ 0x03, 0x38, 0x29, 0x2a, 0x3c, 0x20, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8,
-+ 0xf8, 0xa0, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x3e, 0x3f, 0x2f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x70, 0x8c, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x00, 0x0f, 0x71, 0x11,
-+ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xf8, 0x40, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x24, 0x25, 0x79, 0x13, 0x7c,
-+ 0x12, 0x56, 0x39, 0x31, 0x1a, 0x64, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0xa8, 0xfc, 0x28, 0xf8, 0xa0,
-+ 0xf8, 0xa0, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x2b, 0x30, 0x2b, 0x26,
-+ 0x26, 0x27, 0x38, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3e, 0x22, 0x3e, 0x14, 0x15,
-+ 0x55, 0x36, 0x34, 0x16, 0x18, 0x63, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x29, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x88, 0xfc, 0x20, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0x60, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x1e, 0x10, 0x7f, 0x52, 0x4e, 0x76,
-+ 0x6e, 0x5a, 0x76, 0x4a, 0x7e, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x88, 0xfc, 0x20, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80,
-+ 0x80, 0x80, 0x84, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x13, 0x12, 0x13, 0x12, 0x13,
-+ 0x10, 0x12, 0x22, 0x24, 0x48, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x80, 0xa0, 0x90, 0x88, 0x88, 0x80, 0x00, 0x00,
-+ 0x09, 0x04, 0x1f, 0x10, 0x1f, 0x12, 0x1f, 0x15,
-+ 0x17, 0x17, 0x25, 0x3f, 0x41, 0x01, 0x00, 0x00,
-+ 0x08, 0x90, 0xfc, 0x20, 0xa0, 0x20, 0xbc, 0x48,
-+ 0xa8, 0x30, 0x10, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x0a, 0x72, 0x12, 0x0c, 0x04,
-+ 0x0c, 0x0a, 0x12, 0x7d, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7c, 0x07, 0x04, 0x3c, 0x27, 0x20, 0x3c,
-+ 0x24, 0x24, 0x04, 0x04, 0x0b, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x88, 0x90, 0x50,
-+ 0x20, 0x20, 0x50, 0x88, 0xf4, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x24, 0x27, 0x04, 0x17,
-+ 0x16, 0x16, 0x27, 0x2a, 0x48, 0x51, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xa8,
-+ 0xb0, 0x90, 0xb4, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x02, 0x12,
-+ 0x12, 0x12, 0x24, 0x24, 0x49, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x20, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x02, 0x1a, 0x06,
-+ 0x01, 0x00, 0x01, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0xa0, 0x10, 0x78, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x01, 0x7d, 0x11, 0x11, 0x11, 0x7d, 0x11,
-+ 0x11, 0x10, 0x1c, 0x61, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x28, 0xc8, 0x50,
-+ 0x30, 0x20, 0x30, 0x48, 0xfc, 0x04, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x17, 0x7f,
-+ 0x12, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x28, 0xc8, 0x50,
-+ 0x30, 0x10, 0x28, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x00, 0x7f, 0x00, 0x0f, 0x00, 0x0f,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xe0, 0x00, 0xfc, 0x00, 0xe0, 0x00, 0xe0,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x00, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x25, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x10, 0x20,
-+ 0xc8, 0x10, 0x64, 0x08, 0x30, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x48,
-+ 0x48, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x30, 0xc0, 0x10, 0x10, 0x20, 0x40, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x55, 0x15,
-+ 0x15, 0x15, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xe8, 0x28,
-+ 0x28, 0xe8, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x1f,
-+ 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4a, 0x49, 0x49, 0x48, 0x4f,
-+ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x48, 0x48, 0x50, 0x60, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x21, 0x27, 0x24,
-+ 0x24, 0x27, 0x24, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xc8, 0x48,
-+ 0x48, 0xc8, 0x48, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x09, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x03, 0x05, 0x05, 0x09, 0x0d, 0x19,
-+ 0x69, 0x09, 0x0a, 0x0a, 0x0f, 0x18, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x68, 0x58, 0x78, 0x94, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00,
-+ 0x00, 0x00, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x20, 0x3f, 0x40, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf8, 0x80, 0xf0, 0x90, 0xf0,
-+ 0x90, 0xf0, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x7c, 0x05, 0x05, 0x3d, 0x25, 0x21, 0x3d,
-+ 0x25, 0x25, 0x05, 0x06, 0x0b, 0x34, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x68, 0x58, 0x7c, 0x94, 0x14, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x3e,
-+ 0x22, 0x22, 0x22, 0x3e, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x20, 0x12, 0x12, 0x42, 0x2f, 0x22, 0x02, 0x0f,
-+ 0x19, 0x19, 0x2f, 0x29, 0x40, 0x41, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0xc8, 0x78, 0x48, 0x48,
-+ 0x48, 0x78, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x04, 0x44, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x0a, 0x33, 0x14, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x68, 0x58, 0x78, 0x94, 0x04, 0x00, 0x00,
-+ 0x10, 0x55, 0x35, 0x39, 0x17, 0x7d, 0x11, 0x1b,
-+ 0x36, 0x36, 0x53, 0x12, 0x10, 0x11, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0x28, 0xe8, 0x38, 0x28, 0xa8,
-+ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7c, 0x08, 0x0b, 0x12, 0x3d,
-+ 0x54, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x88, 0xfc, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x25, 0x26, 0x3d,
-+ 0x24, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x94, 0x14, 0x0c, 0xf8,
-+ 0x88, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x3e,
-+ 0x22, 0x22, 0x22, 0x3f, 0x23, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0x88, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x05, 0x09,
-+ 0x0d, 0x19, 0x69, 0x0a, 0x0b, 0x1c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x18, 0xf0, 0x50, 0x50,
-+ 0x50, 0x50, 0x68, 0x58, 0xf4, 0x14, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x10,
-+ 0x12, 0x12, 0x22, 0x24, 0x48, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0xf0, 0x08, 0xf8,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3e, 0x00, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x09, 0x28, 0x2f,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x88, 0x74, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x17,
-+ 0x1c, 0x17, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xfc,
-+ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3f, 0x21, 0x3f, 0x2a, 0x2f,
-+ 0x3a, 0x2f, 0x2f, 0x4a, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0xc8,
-+ 0x78, 0x48, 0x78, 0x30, 0xc8, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x01, 0x3e, 0x22,
-+ 0x3e, 0x22, 0x14, 0x16, 0x18, 0x63, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x88, 0x88,
-+ 0x50, 0x70, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x02, 0x02, 0x3f, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x07, 0x04, 0x04, 0x04,
-+ 0x0f, 0x08, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20,
-+ 0xe0, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x30, 0x57, 0x11,
-+ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0x80, 0x80, 0x80, 0xf0, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x21, 0x01, 0x7f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x12, 0x12, 0x13, 0x10, 0x1f, 0x10,
-+ 0x00, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf0, 0x10,
-+ 0x10, 0xfc, 0x00, 0x60, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x1f, 0x04, 0x04, 0x7f,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0xfc,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x48, 0x0f, 0x14, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00,
-+ 0xf0, 0x10, 0xfc, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x48, 0x08, 0x10, 0x17, 0x30,
-+ 0x51, 0x17, 0x10, 0x10, 0x11, 0x1e, 0x00, 0x00,
-+ 0x40, 0x50, 0x90, 0xa0, 0x50, 0x88, 0xf4, 0x84,
-+ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x12, 0x12, 0x23, 0x4d, 0x09, 0x17, 0x11, 0x35,
-+ 0x55, 0x15, 0x15, 0x15, 0x1e, 0x10, 0x00, 0x00,
-+ 0x00, 0x38, 0xe8, 0x28, 0x28, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x28, 0x78, 0xa0, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x18, 0x35, 0x34, 0x30, 0x57,
-+ 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x1c, 0x1a, 0x1b,
-+ 0x28, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x12, 0x7f, 0x12, 0x1a, 0x37, 0x37,
-+ 0x30, 0x57, 0x55, 0x17, 0x14, 0x14, 0x00, 0x00,
-+ 0x80, 0x40, 0xb0, 0xfc, 0xb0, 0x50, 0xb0, 0xf0,
-+ 0x80, 0xf8, 0x28, 0xd8, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x7a, 0x17, 0x12, 0x12, 0x7f, 0x15,
-+ 0x15, 0x15, 0x1f, 0x64, 0x01, 0x02, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xc8, 0x48, 0x78, 0x48, 0x48,
-+ 0x78, 0x48, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x07, 0x07, 0x04, 0x7f, 0x08,
-+ 0x1f, 0x62, 0x0f, 0x34, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xc0, 0xc0, 0x40, 0xfc, 0x20,
-+ 0xf0, 0x0c, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3c, 0x00, 0x3f,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3c, 0x25, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x00, 0xf8, 0x08,
-+ 0x08, 0xfc, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x3b, 0x00, 0x7d, 0x03, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3f, 0x24, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x90, 0xfc, 0xb0, 0xfc, 0x20, 0xf8, 0xf8, 0x20,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2e, 0x2e, 0x3f,
-+ 0x37, 0x27, 0x3f, 0x23, 0x3e, 0x22, 0x00, 0x00,
-+ 0x80, 0xb8, 0xa8, 0xa8, 0xe8, 0xb8, 0xa8, 0xe8,
-+ 0x78, 0x68, 0xe8, 0x48, 0x48, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x20, 0x4f, 0x01,
-+ 0x02, 0x04, 0x08, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00,
-+ 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x04, 0x08, 0x14, 0x22,
-+ 0x02, 0x01, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x20, 0x50, 0x48, 0x48,
-+ 0x80, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x32, 0x55, 0x11,
-+ 0x10, 0x10, 0x10, 0x11, 0x16, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x20, 0x10, 0x28, 0x28, 0x20,
-+ 0xc0, 0xc0, 0xc0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x09, 0x08, 0x08, 0x17, 0x11, 0x31, 0x51, 0x12,
-+ 0x14, 0x17, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0xf0, 0x10, 0x10, 0xfc, 0x00, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x09, 0x08, 0x0c, 0x17, 0x34, 0x54, 0x15, 0x16,
-+ 0x17, 0x14, 0x14, 0x14, 0x11, 0x16, 0x00, 0x00,
-+ 0xf0, 0x10, 0x10, 0xfc, 0x80, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x37, 0x51, 0x11,
-+ 0x17, 0x10, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x20,
-+ 0xfc, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x20, 0x00, 0xfc, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x04, 0x04, 0x08, 0x08, 0x11, 0x21, 0x41,
-+ 0x02, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0xc0, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00,
-+ 0x40, 0x20, 0x10, 0x70, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7c, 0x13, 0x10, 0x10, 0x10,
-+ 0x10, 0x15, 0x19, 0x61, 0x02, 0x04, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0x88, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x14, 0x12, 0x23, 0x52,
-+ 0x0c, 0x04, 0x0a, 0x12, 0x21, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x12, 0x22, 0x42, 0x03,
-+ 0x04, 0x05, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08,
-+ 0x88, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x13, 0x12, 0x13, 0x12, 0x13, 0x10,
-+ 0x13, 0x10, 0x2f, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf0, 0x20, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x04, 0x3f, 0x20, 0x20, 0x27, 0x24,
-+ 0x24, 0x24, 0x27, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48,
-+ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x13,
-+ 0x12, 0x12, 0x22, 0x22, 0x43, 0x02, 0x00, 0x00,
-+ 0x38, 0xc0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4b, 0x4a, 0x4e, 0x4a, 0x4a,
-+ 0x4b, 0x7b, 0x4a, 0x42, 0x02, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0x40, 0x40, 0xfc, 0xa0,
-+ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x10, 0x7c, 0x11, 0x11, 0x11,
-+ 0x11, 0x1d, 0x62, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x12,
-+ 0x12, 0x1e, 0x64, 0x04, 0x08, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x13,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x10, 0x10, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3e, 0x02, 0x04, 0x04, 0x08, 0x08, 0x0e,
-+ 0x78, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x07,
-+ 0x18, 0x60, 0x1f, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x20, 0x40, 0xfc, 0x00, 0xe0,
-+ 0x40, 0x80, 0xf8, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x42, 0x7f, 0x02, 0x04,
-+ 0x04, 0x08, 0x11, 0x21, 0x4f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xfc, 0x00, 0x80,
-+ 0x80, 0x80, 0x20, 0x30, 0xc8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x00, 0x7c, 0x10, 0x10, 0x11, 0x11,
-+ 0x10, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04, 0x0f,
-+ 0x10, 0x6f, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0xe0,
-+ 0x50, 0xcc, 0x40, 0x10, 0x10, 0xf0, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x08, 0x04, 0x7f,
-+ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x20, 0x40, 0xfc,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x11, 0x11, 0x22, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x20, 0x10, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x10,
-+ 0x17, 0x10, 0x11, 0x21, 0x22, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90,
-+ 0xf0, 0x90, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x10,
-+ 0x17, 0x1c, 0x23, 0x26, 0x58, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90,
-+ 0xf0, 0xc8, 0xb0, 0x90, 0x8c, 0x80, 0x00, 0x00,
-+ 0x00, 0x7e, 0x02, 0x02, 0x3e, 0x22, 0x20, 0x3e,
-+ 0x22, 0x02, 0x02, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40,
-+ 0x40, 0x50, 0x88, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x11, 0x39, 0x35, 0x35, 0x51,
-+ 0x11, 0x11, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x18, 0x37, 0x35, 0x31, 0x50,
-+ 0x11, 0x11, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0x40, 0xfc, 0x00, 0x00, 0xf8,
-+ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x12, 0x12, 0x34, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x12, 0x14, 0x13, 0x12,
-+ 0x1a, 0x73, 0x12, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x10, 0x11, 0x16,
-+ 0x1b, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0xa4, 0x1c, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7e, 0x11, 0x11, 0x12, 0x10,
-+ 0x14, 0x18, 0x60, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x06, 0x38,
-+ 0x20, 0x20, 0x26, 0x38, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x11, 0x09,
-+ 0x09, 0x7f, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x10, 0x10,
-+ 0x20, 0xfc, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x19, 0x05, 0x03, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x09, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1d, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x90, 0x88, 0x94, 0x94,
-+ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x3a, 0x37,
-+ 0x36, 0x51, 0x50, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7f, 0x08, 0x1b, 0x1c, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x0b, 0x09, 0x09, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x40, 0x20, 0x20, 0x00, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x41, 0x27, 0x21, 0x01, 0x01,
-+ 0x1f, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20,
-+ 0xfc, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x43, 0x22, 0x24, 0x0f, 0x00,
-+ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x2f, 0x21, 0x02, 0x17,
-+ 0x18, 0x13, 0x22, 0x22, 0x42, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x10, 0xec,
-+ 0x20, 0xe0, 0x20, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x11, 0x0f, 0x09, 0x47, 0x21, 0x2f, 0x00, 0x13,
-+ 0x12, 0x13, 0x22, 0x2f, 0x42, 0x42, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x80, 0xf0,
-+ 0x90, 0xf0, 0x90, 0xfc, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x21, 0x21, 0x3f,
-+ 0x21, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x13, 0x12, 0x23, 0x3e, 0x67,
-+ 0x26, 0x25, 0x3c, 0x20, 0x23, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x1b, 0x70, 0x11, 0x11, 0x7d, 0x10, 0x1b,
-+ 0x36, 0x36, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x08, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x3a, 0x12, 0x7f, 0x12, 0x1a,
-+ 0x37, 0x36, 0x52, 0x14, 0x17, 0x18, 0x00, 0x00,
-+ 0x40, 0xfc, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8,
-+ 0x24, 0xa8, 0x70, 0xa8, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2b, 0x29, 0x4b, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x50, 0x90,
-+ 0x90, 0xa0, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x90, 0x88, 0x94, 0x94, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x17, 0x66, 0x1a, 0x1b, 0x26, 0x7f,
-+ 0x13, 0x3b, 0x37, 0x37, 0x52, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0x58,
-+ 0x58, 0x58, 0xf8, 0x18, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x08, 0x7f, 0x08,
-+ 0x1d, 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0xfc, 0x48, 0x48, 0x48, 0x48,
-+ 0xfc, 0x48, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x03, 0x0f,
-+ 0x72, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x20, 0xfc, 0x80, 0x00, 0xf8,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x00, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x24, 0x24,
-+ 0x3c, 0x25, 0x25, 0x26, 0x25, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xa0, 0xa0,
-+ 0xa0, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x26, 0x24, 0x3c, 0x25, 0x26,
-+ 0x3f, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0xa8, 0x18, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x07, 0x04, 0x07, 0x3f, 0x27, 0x47,
-+ 0x0f, 0x08, 0x0f, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0xc0, 0x40, 0xc0, 0xfc, 0xc8, 0xc0,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x16, 0x7f,
-+ 0x12, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x00, 0x70, 0x50, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x08, 0x08,
-+ 0x07, 0x09, 0x09, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0xf0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x09, 0x10, 0x24, 0x04, 0x0b, 0x08, 0x18,
-+ 0x28, 0x48, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x12, 0x13, 0x24, 0x49, 0x0f, 0x15, 0x37, 0x55,
-+ 0x17, 0x11, 0x1f, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xbc, 0x80, 0x00, 0xfc, 0x48, 0xc8, 0x48,
-+ 0xc8, 0x08, 0xe8, 0x88, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x7f, 0x00, 0x3f, 0x00, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x27, 0x3d, 0x25, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x27, 0x3c, 0x25,
-+ 0x25, 0x3d, 0x19, 0x17, 0x25, 0x41, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x7f, 0x12, 0x11, 0x22, 0x52,
-+ 0x0c, 0x04, 0x0a, 0x12, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xd0, 0x50, 0x60, 0xd0, 0xc8,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x24, 0xfc, 0x28, 0x28, 0xfc, 0x20, 0xf8,
-+ 0x88, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x80, 0xa0, 0xa0, 0xa0,
-+ 0xa0, 0xb0, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x26, 0x23, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20,
-+ 0x20, 0x30, 0x48, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x1b, 0x26, 0x26, 0x7b, 0x12, 0x7f,
-+ 0x13, 0x57, 0x3b, 0x33, 0x1e, 0x62, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0x58,
-+ 0x58, 0x58, 0xf8, 0x18, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x22,
-+ 0x2f, 0x30, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x88,
-+ 0xe8, 0x18, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x32, 0x28, 0x27, 0x24,
-+ 0x24, 0x24, 0x3b, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x78, 0x88, 0x50, 0x30, 0xdc, 0x10, 0xf8,
-+ 0x90, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x07, 0x00, 0x7c, 0x11, 0x11, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00,
-+ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x20, 0x10, 0x11, 0x0f, 0x45, 0x25, 0x25, 0x05,
-+ 0x15, 0x17, 0x39, 0x22, 0x42, 0x44, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x32, 0x2a, 0x2c, 0x3f, 0x24, 0x35,
-+ 0x35, 0x35, 0x3f, 0x31, 0x20, 0x21, 0x00, 0x00,
-+ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x09, 0x08, 0x7f, 0x08,
-+ 0x0c, 0x12, 0x16, 0x79, 0x01, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x7f, 0x04,
-+ 0x07, 0x08, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xfc, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x00,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x17, 0x11, 0x11, 0x7d, 0x17, 0x14, 0x17,
-+ 0x14, 0x1f, 0x63, 0x00, 0x07, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0xfc, 0x08, 0xf8,
-+ 0xc8, 0x70, 0xb0, 0xe8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x1c,
-+ 0x71, 0x12, 0x14, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x40, 0xf8,
-+ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x41, 0x21, 0x27, 0x04, 0x0f,
-+ 0x10, 0x17, 0x23, 0x21, 0x46, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0xfc, 0x08, 0xf8,
-+ 0xc8, 0x70, 0xf0, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x08, 0x0f, 0x3f, 0x20, 0x7f,
-+ 0x07, 0x3a, 0x1d, 0x06, 0x38, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xfc, 0x08, 0xf8,
-+ 0x88, 0xd0, 0xe0, 0xb0, 0x8c, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x07, 0x07, 0x07, 0x3f, 0x09, 0x7f,
-+ 0x3e, 0x3e, 0x2a, 0x3e, 0x7f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0xc0, 0xc0, 0xc0, 0xf8, 0x20, 0xfc,
-+ 0xf8, 0xf8, 0xa8, 0xf8, 0xfc, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x08, 0x7f, 0x08,
-+ 0x1e, 0x12, 0x2d, 0x44, 0x1b, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0x2c, 0xb4, 0x64, 0xfc,
-+ 0x74, 0xac, 0x2c, 0x38, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x12, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x08, 0x0a, 0x32, 0x0c, 0x05,
-+ 0x09, 0x12, 0x26, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x7f, 0x00,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x2f, 0x21, 0x21, 0x2f, 0x21,
-+ 0x21, 0x21, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0x08, 0xe8, 0x08,
-+ 0x48, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x26, 0x79,
-+ 0x08, 0x7f, 0x1c, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x0c, 0x00, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x10, 0xd0, 0x50, 0x7c, 0x90, 0x10, 0xfc, 0x00,
-+ 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x08, 0x28, 0x28, 0x3e, 0x28, 0x48, 0x7f, 0x00,
-+ 0x3e, 0x22, 0x22, 0x3f, 0x21, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x01, 0x3f,
-+ 0x01, 0x7f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x00, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x4b, 0x30, 0x1f, 0x30, 0x4b, 0x08, 0x1b,
-+ 0x28, 0x4b, 0x0a, 0x0b, 0x32, 0x10, 0x00, 0x00,
-+ 0x10, 0x98, 0x14, 0xd4, 0x10, 0xfc, 0x10, 0x90,
-+ 0x10, 0xa8, 0xa8, 0xa8, 0x44, 0x84, 0x00, 0x00,
-+ 0x20, 0x10, 0x17, 0x44, 0x27, 0x24, 0x04, 0x17,
-+ 0x15, 0x15, 0x25, 0x29, 0x49, 0x56, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x20, 0xe8, 0x30, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x2b, 0x2a, 0x3a, 0x2b, 0x28,
-+ 0x3f, 0x28, 0x29, 0x28, 0x28, 0x5b, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x40,
-+ 0xfc, 0x90, 0xd0, 0x20, 0xd0, 0x08, 0x00, 0x00,
-+ 0x22, 0x14, 0x7f, 0x49, 0x7f, 0x49, 0x7f, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58,
-+ 0x58, 0x88, 0x88, 0xec, 0x8c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x12, 0x22, 0x44, 0x08, 0x01,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0x48, 0x88, 0x88, 0x30,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x1a, 0x34, 0x35, 0x32, 0x50,
-+ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x28, 0x48, 0xb0,
-+ 0x80, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x09, 0x09, 0x3f, 0x20, 0x4f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x08, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x44, 0x28, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x31, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x21, 0x10, 0x10, 0x00, 0x00, 0x70, 0x11,
-+ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0xa0, 0x20,
-+ 0x10, 0x10, 0x08, 0x04, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x24, 0x27, 0x24, 0x24,
-+ 0x24, 0x24, 0x25, 0x26, 0x38, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0xd0, 0x60, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x27, 0x20, 0x20, 0x27, 0x39, 0x21, 0x21,
-+ 0x25, 0x25, 0x1d, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x67, 0x00, 0x00,
-+ 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xcc, 0x00, 0x00,
-+ 0xe0, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x23, 0x23, 0x25,
-+ 0x25, 0x29, 0x31, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x88, 0x48,
-+ 0x48, 0x28, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12,
-+ 0x16, 0x1b, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x0c, 0x79, 0x26, 0x18, 0x6c, 0x36, 0x1a, 0x62,
-+ 0x0d, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xc8, 0xb0, 0xd8,
-+ 0x84, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x27,
-+ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x20, 0x10, 0xd4, 0x0c,
-+ 0xfc, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4,
-+ 0x44, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x0c, 0x78, 0x26, 0x18, 0x78, 0x1c, 0x6c, 0x14,
-+ 0x65, 0x19, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xa4, 0xb8,
-+ 0xc8, 0x04, 0x90, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x70, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x70, 0x80, 0x80, 0xfc, 0x40, 0x24, 0x1c, 0xf4,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1e, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x80,
-+ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x09, 0x7f, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x0e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4,
-+ 0x44, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x3a, 0x36,
-+ 0x36, 0x53, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0xe8,
-+ 0xd8, 0x58, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x03, 0x12,
-+ 0x12, 0x13, 0x22, 0x22, 0x43, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x40,
-+ 0x48, 0xf0, 0x40, 0x44, 0xc4, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0b, 0x1a,
-+ 0x2b, 0x4a, 0x12, 0x12, 0x23, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf8, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x17, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x11, 0x11, 0x10, 0x13, 0x1c, 0x70, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x20, 0xe8,
-+ 0x08, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x02, 0x03, 0x7e, 0x13, 0x1a,
-+ 0x14, 0x27, 0x7b, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xd0, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x28, 0x2f, 0x28, 0x28, 0x2e, 0x70,
-+ 0x00, 0x1f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x50, 0x11,
-+ 0x11, 0x12, 0x14, 0x18, 0x13, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x80, 0x80, 0x80, 0xf8,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x09, 0x09, 0x04, 0x04, 0x02,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x4f, 0x49, 0x49, 0x4a, 0x4c,
-+ 0x49, 0x7b, 0x4c, 0x40, 0x01, 0x0e, 0x00, 0x00,
-+ 0x80, 0x90, 0x18, 0xe4, 0x20, 0x24, 0x9c, 0xf0,
-+ 0x10, 0x20, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x10, 0x13, 0x10, 0x55, 0x54, 0x57, 0x54,
-+ 0x55, 0x7d, 0x46, 0x44, 0x0b, 0x00, 0x00, 0x00,
-+ 0x08, 0x90, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x80,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x04, 0x07,
-+ 0x08, 0x08, 0x10, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x08, 0x0f, 0x10, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x42, 0x22, 0x22, 0x04, 0x14,
-+ 0x18, 0x10, 0x20, 0x20, 0x41, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x50, 0x48, 0x48, 0x4c, 0x54,
-+ 0xd0, 0x60, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x7c, 0x13, 0x10, 0x11, 0x7c, 0x17,
-+ 0x11, 0x13, 0x1a, 0x64, 0x0b, 0x00, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc,
-+ 0x00, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1f, 0x33,
-+ 0x52, 0x12, 0x12, 0x1e, 0x10, 0x03, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0x24, 0x2c,
-+ 0x68, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3d, 0x02, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x7c, 0x40,
-+ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x09, 0x49, 0x22, 0x2c, 0x08, 0x17, 0x21,
-+ 0x7f, 0x02, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x4c, 0xd4, 0x60, 0x80, 0x00,
-+ 0xfc, 0x90, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x19, 0x15, 0x23, 0x41,
-+ 0x3f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x20, 0x60, 0x50, 0x88, 0x04,
-+ 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x14, 0x14, 0x16, 0x19,
-+ 0x10, 0x17, 0x20, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x90, 0x90, 0x98, 0xa4,
-+ 0xc4, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x12, 0x1c,
-+ 0x70, 0x13, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x50, 0x50, 0x50, 0x58, 0xe4, 0x44,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x10, 0x3f, 0x53, 0x12,
-+ 0x13, 0x13, 0x12, 0x13, 0x13, 0x1c, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x08, 0x00, 0x00,
-+ 0x08, 0x0a, 0x0a, 0x13, 0x12, 0x31, 0x53, 0x16,
-+ 0x1b, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x98, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x11,
-+ 0x11, 0x7f, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x7f, 0x12,
-+ 0x1e, 0x1e, 0x12, 0x1e, 0x73, 0x02, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00,
-+ 0xf8, 0x48, 0x30, 0x70, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x22, 0x22, 0x3e, 0x22, 0x20, 0x00, 0x00,
-+ 0x80, 0x90, 0x88, 0x88, 0x80, 0xfc, 0x48, 0x48,
-+ 0x50, 0x30, 0x20, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x1f, 0x04, 0x7f,
-+ 0x05, 0x19, 0x6f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf0, 0x40, 0xfc,
-+ 0x40, 0x30, 0xec, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f,
-+ 0x02, 0x7f, 0x04, 0x0f, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0,
-+ 0x00, 0xfc, 0x20, 0x40, 0xe0, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x21, 0x7f, 0x08, 0x04, 0x7f,
-+ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x20, 0x40, 0xfc,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x06, 0x79, 0x49, 0x2a, 0x24, 0x08, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x10, 0x24,
-+ 0x44, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x01,
-+ 0x02, 0x0c, 0x30, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0xa0, 0xc0, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x10, 0x10, 0x1f,
-+ 0x70, 0x10, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0x20, 0x40, 0x40, 0xfc,
-+ 0xe0, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x09, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, 0x48, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x3f, 0x00, 0x1f, 0x10, 0x1f,
-+ 0x12, 0x17, 0x16, 0x2a, 0x32, 0x46, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x50, 0xfc, 0x40, 0xc8,
-+ 0x28, 0x30, 0x90, 0xb4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x41, 0x20, 0x20, 0x07, 0x09,
-+ 0x09, 0x09, 0x11, 0x12, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xe0, 0x1c, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x11, 0x22, 0x11, 0x08, 0x01, 0x01,
-+ 0x11, 0x12, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x88, 0x88, 0x10, 0x20, 0x10, 0x88, 0x00, 0x08,
-+ 0x08, 0x90, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x11, 0x08, 0x08, 0x01, 0x7f,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x18, 0xe8, 0x08, 0x10, 0xa0, 0x40, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x16, 0x10, 0x16,
-+ 0x12, 0x17, 0x28, 0x2f, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0xb0, 0x80, 0xb0,
-+ 0x80, 0xf0, 0x80, 0xf8, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x08, 0x08, 0x10, 0x1f, 0x32,
-+ 0x52, 0x13, 0x12, 0x1e, 0x10, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x94, 0x94, 0x0c, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x2f, 0x28, 0x28, 0x2e, 0x70, 0x3f,
-+ 0x02, 0x07, 0x1c, 0x64, 0x07, 0x04, 0x00, 0x00,
-+ 0x80, 0x88, 0x90, 0xe4, 0x84, 0x7c, 0x00, 0xf8,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x0f, 0x11, 0x2a, 0x64, 0x18, 0x1f, 0x60,
-+ 0x1f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0x10, 0xec, 0x00,
-+ 0xf8, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x03, 0x06, 0x78, 0x17,
-+ 0x10, 0x1f, 0x15, 0x15, 0x29, 0x43, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x80, 0xc0, 0x3c, 0xd0,
-+ 0x10, 0xf0, 0x90, 0x50, 0x50, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x12, 0x09, 0x08, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x70, 0x90, 0x10, 0x20, 0x40, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x7f, 0x08, 0x7f, 0x08,
-+ 0x19, 0x36, 0x52, 0x15, 0x19, 0x60, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x04, 0x1f, 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x15,
-+ 0x1f, 0x15, 0x1f, 0x7f, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0x48,
-+ 0x50, 0x30, 0x24, 0xd4, 0x8c, 0x04, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x2a, 0x32, 0x2d, 0x25, 0x26,
-+ 0x27, 0x24, 0x39, 0x21, 0x22, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xe8, 0xb0, 0x90, 0xf8, 0x04,
-+ 0xf8, 0x40, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x11, 0x0e, 0x1b, 0x71, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x08, 0x48, 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x0c, 0x08, 0x0b,
-+ 0x18, 0x28, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x49, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x30, 0x30, 0x50,
-+ 0x50, 0x90, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x02, 0x3e, 0x02,
-+ 0x3e, 0x02, 0x1c, 0x64, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x40, 0x78, 0x40,
-+ 0x78, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3f, 0x22, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x15, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x30, 0x30, 0x50,
-+ 0x50, 0x90, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x03, 0x21, 0x11, 0x11, 0x01, 0x0f, 0x10,
-+ 0x10, 0x20, 0x20, 0x43, 0x4c, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x30,
-+ 0x30, 0x50, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11,
-+ 0x11, 0x1e, 0x62, 0x04, 0x0b, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x29, 0x25,
-+ 0x25, 0x25, 0x3a, 0x22, 0x25, 0x2e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x13, 0x12, 0x10,
-+ 0x1d, 0x73, 0x0d, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48, 0xa0,
-+ 0x30, 0x28, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x10, 0x18, 0x35, 0x35,
-+ 0x33, 0x55, 0x59, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0xd4, 0xd4, 0x7c, 0x54,
-+ 0xd4, 0xfc, 0x54, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x02, 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x07, 0x0c,
-+ 0x17, 0x64, 0x07, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x20, 0xc0, 0x60, 0x10, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x02, 0x01, 0x79, 0x4b, 0x48, 0x48, 0x48, 0x4f,
-+ 0x48, 0x78, 0x48, 0x41, 0x06, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x2a, 0x2a, 0x2a, 0x2b, 0x2a,
-+ 0x2a, 0x2a, 0x3e, 0x22, 0x20, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x50, 0x88, 0xfc, 0x08,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x7c, 0x13, 0x17, 0x10,
-+ 0x17, 0x1a, 0x62, 0x03, 0x02, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x60, 0x90, 0x08, 0xfc, 0x08,
-+ 0xc8, 0x48, 0x48, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3d, 0x27, 0x64,
-+ 0x25, 0x25, 0x3d, 0x21, 0x21, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x60, 0x90, 0x10, 0xfc, 0x08,
-+ 0xe8, 0x28, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x3e, 0x2f, 0x3e, 0x6f, 0x08,
-+ 0x0f, 0x0f, 0x0f, 0x0f, 0x2a, 0x45, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x70, 0xfc, 0x70, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0xfc, 0xf8, 0x88, 0x70, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x13, 0x12, 0x34, 0x58, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x80,
-+ 0x80, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x08, 0x49, 0x29, 0x2a, 0x08, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x22, 0x22, 0x26, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4b, 0x4a, 0x4c, 0x48, 0x48,
-+ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x80,
-+ 0x80, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x11, 0x13, 0x19,
-+ 0x72, 0x14, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa8, 0x18, 0x00, 0xfc,
-+ 0x40, 0x78, 0x40, 0x78, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x49, 0x4a, 0x4a, 0x7c, 0x48,
-+ 0x48, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x7c, 0x40,
-+ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x2a, 0x2a, 0x2a,
-+ 0x3e, 0x2a, 0x28, 0x08, 0x11, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x17, 0x36,
-+ 0x32, 0x52, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x0a, 0x12, 0x07,
-+ 0x19, 0x61, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x7f, 0x01, 0x1f,
-+ 0x11, 0x13, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xe0, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x22, 0x4c, 0x03,
-+ 0x02, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x48, 0x80, 0x40,
-+ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0xfc, 0x50, 0x50, 0xfc, 0x00,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x7f, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x29, 0x49, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x88, 0x48, 0x48, 0x10, 0x60, 0x40, 0xfc, 0x90,
-+ 0x90, 0xd0, 0x20, 0x30, 0xc8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x49, 0x09, 0x7f,
-+ 0x09, 0x09, 0x09, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x00, 0x7f,
-+ 0x04, 0x17, 0x14, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0x50, 0x60, 0xc0,
-+ 0x40, 0x44, 0x44, 0x3c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x12, 0x12, 0x12, 0x7f,
-+ 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0xfc,
-+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x24, 0x24, 0x3f,
-+ 0x35, 0x55, 0x55, 0x17, 0x14, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x28, 0x4f, 0x19, 0x66, 0x14, 0x1f,
-+ 0x60, 0x3f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x90, 0x60, 0x30, 0xec,
-+ 0x00, 0xf8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x7c, 0x12, 0x11, 0x10, 0x14,
-+ 0x18, 0x71, 0x12, 0x10, 0x10, 0x33, 0x00, 0x00,
-+ 0x24, 0x24, 0x48, 0x90, 0x48, 0xa4, 0x40, 0x78,
-+ 0x88, 0x90, 0x50, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x1f, 0x1c,
-+ 0x77, 0x17, 0x14, 0x17, 0x1c, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x80,
-+ 0xf8, 0xc8, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x13, 0x7d, 0x13, 0x16, 0x11, 0x1b,
-+ 0x74, 0x13, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf8, 0x68, 0xf0, 0x90, 0xf8,
-+ 0x04, 0xf8, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x29, 0x29, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x02, 0x02, 0x34, 0x0c, 0x1a, 0x69, 0x0a, 0x7f,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x0c, 0x00, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x28, 0x31, 0x29,
-+ 0x25, 0x25, 0x25, 0x3a, 0x25, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xfc, 0x88, 0x50, 0xfc, 0x60,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7c, 0x14, 0x15, 0x23, 0x48, 0x08,
-+ 0x7f, 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x02, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x1d,
-+ 0x01, 0x1d, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x70,
-+ 0x00, 0x70, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x7c, 0x14, 0x17, 0x12, 0x1a,
-+ 0x73, 0x12, 0x14, 0x14, 0x18, 0x33, 0x00, 0x00,
-+ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x28, 0x28,
-+ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54,
-+ 0x50, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x12, 0x12, 0x12,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x7a, 0x4a,
-+ 0x4a, 0x4b, 0x7a, 0x4a, 0x43, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xb8, 0x38, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x05, 0x19, 0x69, 0x09, 0x15, 0x2b,
-+ 0x09, 0x15, 0x23, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x30, 0x2c, 0x20, 0x50, 0xa8,
-+ 0x20, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x04, 0x3f, 0x02, 0x7f, 0x04, 0x09,
-+ 0x16, 0x61, 0x0e, 0x00, 0x01, 0x1e, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0x90, 0x00, 0xfc, 0xc0, 0x20,
-+ 0x50, 0x8c, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1b, 0x34, 0x37, 0x30, 0x51,
-+ 0x16, 0x11, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0x60, 0x90, 0xe8, 0x40, 0xfc, 0xa0, 0x10,
-+ 0x4c, 0xa0, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x12, 0x12, 0x17, 0x7a, 0x12, 0x1f, 0x10, 0x1f,
-+ 0x74, 0x17, 0x14, 0x17, 0x14, 0x35, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xe0, 0xbc, 0xa8, 0xc8, 0x28, 0xa8,
-+ 0xb0, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x14, 0x14, 0x3f, 0x14, 0x14, 0x7f, 0x01, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x19, 0x1c, 0x1b,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x28, 0x28, 0x10, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x17, 0x36, 0x3d, 0x51, 0x16,
-+ 0x11, 0x17, 0x18, 0x29, 0x26, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xe8, 0x90, 0xa8, 0x44, 0x48,
-+ 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x12, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x1e, 0x62, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x04, 0x02, 0x1f, 0x12, 0x12, 0x17,
-+ 0x18, 0x17, 0x20, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xfc, 0x80, 0x80, 0xf8,
-+ 0x80, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x4f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x4f, 0x08, 0x0f, 0x0f, 0x0f,
-+ 0x7f, 0x16, 0x63, 0x3f, 0x0d, 0x31, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xe0, 0x20, 0xe0, 0xe0, 0xe0,
-+ 0xfc, 0x90, 0x6c, 0xf0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x1f, 0x02, 0x05, 0x19, 0x6f,
-+ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x80, 0x40, 0x30, 0xec,
-+ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x01, 0x3b, 0x01, 0x7f, 0x02, 0x3f, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x26, 0x00, 0x00,
-+ 0x10, 0xf8, 0x10, 0xfc, 0xa8, 0xf4, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x90, 0x0c, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x7f, 0x0a, 0x1f, 0x68, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x50, 0xe8, 0x24, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0xb0, 0x28, 0xfc, 0x50, 0x54, 0xac, 0x38,
-+ 0x48, 0x50, 0xb0, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x0f, 0x1f, 0x72, 0x0d, 0x33, 0x0d, 0x77,
-+ 0x04, 0x07, 0x07, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x30, 0x48, 0x84, 0x60, 0xdc,
-+ 0x40, 0xc0, 0xd0, 0xa0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x3e, 0x7f, 0x09,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x13, 0x1c, 0x27, 0x24, 0x57,
-+ 0x18, 0x08, 0x10, 0x10, 0x20, 0x43, 0x00, 0x00,
-+ 0x50, 0x48, 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x28, 0x28, 0x10, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x10, 0x37, 0x50, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x10, 0x30, 0x50, 0x17,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x20, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x17, 0x10, 0x33, 0x52, 0x12,
-+ 0x12, 0x13, 0x12, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xc8, 0x48, 0x48,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x32, 0x52, 0x13,
-+ 0x12, 0x11, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x25, 0x25, 0x27,
-+ 0x0c, 0x0e, 0x15, 0x25, 0x44, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x10,
-+ 0x10, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xc8, 0x08, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f,
-+ 0x11, 0x0a, 0x06, 0x07, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x00, 0x00, 0x00, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x00, 0x7f, 0x55,
-+ 0x55, 0x7f, 0x55, 0x55, 0x55, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0x74, 0x04, 0x74, 0x54, 0x54,
-+ 0x54, 0x74, 0x54, 0x04, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x44, 0x44, 0x44, 0x44, 0x48, 0x48,
-+ 0x50, 0x60, 0x40, 0x7f, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x98,
-+ 0x78, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x7c, 0x24, 0x27, 0x24,
-+ 0x75, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x50, 0x88, 0x9c, 0xe4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb0, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x31, 0x0b, 0x02, 0x0c, 0x11, 0x66, 0x01,
-+ 0x7f, 0x02, 0x07, 0x08, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0xc0, 0x30, 0x0c, 0x00,
-+ 0xfc, 0x20, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x01, 0x7f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0x80, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x12, 0x13,
-+ 0x14, 0x1d, 0x23, 0x22, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x40, 0xc8,
-+ 0xf0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x11, 0x11,
-+ 0x11, 0x11, 0x11, 0x11, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x20,
-+ 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xb0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x01,
-+ 0x04, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x00,
-+ 0x90, 0x88, 0x04, 0x24, 0x20, 0xe0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x11, 0x10, 0x10, 0x1d,
-+ 0x71, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x00, 0x18, 0xe0, 0x00, 0x04, 0xfc, 0x00, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x04,
-+ 0x04, 0x02, 0x01, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x20,
-+ 0x40, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x02, 0x04, 0x09, 0x09, 0x0e, 0x78,
-+ 0x08, 0x08, 0x08, 0x08, 0x0b, 0x1c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e,
-+ 0x12, 0x7f, 0x14, 0x12, 0x23, 0x40, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x11, 0x12, 0x1c, 0x17,
-+ 0x14, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0xa0, 0xb8, 0xe8, 0xa8,
-+ 0xa8, 0xa8, 0xb8, 0xa0, 0x84, 0x7c, 0x00, 0x00,
-+ 0x20, 0x20, 0x3f, 0x20, 0x20, 0x1f, 0x00, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x70, 0x80, 0x08, 0x08, 0xf8, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1b,
-+ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x11, 0x11, 0x11, 0x11, 0x11,
-+ 0x11, 0x11, 0x11, 0x11, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x2a,
-+ 0x44, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0,
-+ 0xc0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x10,
-+ 0x10, 0x10, 0x10, 0x13, 0x1c, 0x60, 0x00, 0x00,
-+ 0x60, 0x80, 0x00, 0x00, 0x00, 0x78, 0x80, 0x80,
-+ 0x40, 0x40, 0x24, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x12, 0x52, 0x34, 0x27, 0x35, 0x55, 0x17, 0x34,
-+ 0x37, 0x55, 0x15, 0x17, 0x14, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x10, 0x7c, 0x54, 0x54, 0x54,
-+ 0x54, 0x54, 0x5c, 0x50, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x08, 0x0c, 0x1a,
-+ 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xa0, 0xbc, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x7f, 0x0c, 0x0e,
-+ 0x15, 0x15, 0x24, 0x44, 0x07, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40,
-+ 0x60, 0x50, 0x88, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x1c, 0x03, 0x01, 0x02, 0x7f,
-+ 0x01, 0x09, 0x09, 0x11, 0x21, 0x01, 0x00, 0x00,
-+ 0x00, 0x20, 0x20, 0x40, 0x80, 0x20, 0x18, 0xe4,
-+ 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0xa0, 0xa0, 0xfc, 0xa0, 0xa0,
-+ 0x90, 0x90, 0x94, 0xac, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x2f, 0x28, 0x28, 0x2f, 0x72, 0x0c,
-+ 0x03, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x40, 0xc0,
-+ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x27, 0x3d,
-+ 0x24, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x25, 0x25, 0x3c, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0x18, 0xe0, 0x04, 0x04, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x01, 0x01,
-+ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x40, 0x30, 0xc8, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x11, 0x19,
-+ 0x35, 0x54, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3c, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0x28,
-+ 0x28, 0xe8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3f, 0x00, 0x3c,
-+ 0x03, 0x3d, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x20, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0x20, 0xe0, 0xa0,
-+ 0x90, 0xb0, 0xd4, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3d, 0x25, 0x26, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0xb0, 0xa8, 0x84, 0x94, 0x90, 0x70, 0x00, 0x00,
-+ 0x00, 0x3e, 0x01, 0x7d, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa4, 0x28, 0xb0, 0x50, 0x48,
-+ 0x84, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x09, 0x0a, 0x04, 0x19, 0x6f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0xe0, 0x30, 0xec, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x3c, 0x27,
-+ 0x25, 0x3d, 0x1a, 0x14, 0x25, 0x42, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0a, 0x0a, 0x2a, 0x2f, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2f, 0x3b, 0x61, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x1a, 0x2a, 0x7e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x29, 0x25, 0x3f,
-+ 0x23, 0x25, 0x29, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x28, 0x48, 0xf8,
-+ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x0f, 0x09, 0x0f, 0x01, 0x1f,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0,
-+ 0x10, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00,
-+ 0x08, 0x0a, 0x0b, 0x12, 0x12, 0x32, 0x52, 0x12,
-+ 0x12, 0x12, 0x12, 0x13, 0x1c, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x90, 0x50, 0x50, 0x10, 0x10,
-+ 0x10, 0x10, 0xb0, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x37, 0x50, 0x10,
-+ 0x17, 0x12, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x13, 0x12, 0x12, 0x13,
-+ 0x12, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x00, 0x01, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x40, 0x80, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x7f, 0x00, 0x00,
-+ 0x7f, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x08, 0x32, 0x0c, 0x12, 0x7f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x20, 0xc8, 0x30, 0x48, 0xfc,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x10,
-+ 0x1f, 0x71, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x78, 0x48,
-+ 0x4f, 0x49, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x21, 0x11, 0x11, 0x02, 0x02, 0x14,
-+ 0x10, 0x20, 0x20, 0x41, 0x46, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x48, 0x50, 0x40,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x08, 0x08, 0x47, 0x21, 0x21, 0x01, 0x06,
-+ 0x12, 0x11, 0x21, 0x22, 0x4f, 0x40, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x10, 0x10, 0x54, 0x64,
-+ 0xa8, 0x98, 0x10, 0xa8, 0xfc, 0x44, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x21, 0x21, 0x0f, 0x00,
-+ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xa0, 0x10, 0x38, 0xc4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x61, 0x3f, 0x23, 0x2d, 0x2b,
-+ 0x33, 0x2d, 0x25, 0x2b, 0x31, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x0c, 0xf8, 0x18, 0x68, 0x58,
-+ 0x98, 0x68, 0x28, 0x58, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x3f, 0x5b, 0x15, 0x1b, 0x15,
-+ 0x1b, 0x3f, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0xf8, 0xb4, 0x70, 0xb0, 0x50,
-+ 0xb0, 0xf8, 0xf0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2b, 0x08, 0x1f,
-+ 0x28, 0x4f, 0x12, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x7c, 0x10, 0x17, 0x11, 0x21, 0x39, 0x6e,
-+ 0x29, 0x28, 0x39, 0x2a, 0x27, 0x00, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x10, 0x10, 0x54, 0x64,
-+ 0x98, 0x88, 0x10, 0xa8, 0xfc, 0x44, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x09,
-+ 0x09, 0x11, 0x11, 0x21, 0x41, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x20,
-+ 0x10, 0x08, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x02, 0x3f, 0x24, 0x24, 0x24,
-+ 0x24, 0x24, 0x24, 0x24, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x08, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x20, 0x38, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x1f, 0x10, 0x10, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3d, 0x24, 0x27,
-+ 0x3c, 0x27, 0x25, 0x3c, 0x20, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x10, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x02, 0x04, 0x39, 0x08, 0x08, 0x7e, 0x09, 0x08,
-+ 0x3e, 0x23, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x21, 0x21, 0x02, 0x0c,
-+ 0x08, 0x08, 0x10, 0x10, 0x23, 0x2c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x90, 0x50,
-+ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x1f,
-+ 0x14, 0x17, 0x24, 0x24, 0x47, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xc8, 0x70, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x3f, 0x04,
-+ 0x04, 0x04, 0x04, 0x07, 0x78, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0xc0, 0x20,
-+ 0x20, 0x20, 0x14, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x39, 0x07, 0x7a, 0x02, 0x3f, 0x00, 0x3b,
-+ 0x02, 0x3b, 0x2a, 0x2b, 0x3a, 0x20, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x28, 0xa8,
-+ 0xb0, 0x90, 0xb4, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x00, 0x7d, 0x55, 0x55, 0x55, 0x7d, 0x55,
-+ 0x55, 0x55, 0x7d, 0x42, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1f, 0x28, 0x24, 0x45, 0x00,
-+ 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xa0, 0x90, 0x10, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x41, 0x01, 0x01, 0x7f,
-+ 0x00, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x40, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x00,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00,
-+ 0xfc, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x7c, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x44, 0x44,
-+ 0x47, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x09, 0x7f, 0x22, 0x12, 0x14,
-+ 0x7f, 0x08, 0x3e, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0, 0x50,
-+ 0x70, 0xb0, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x7f,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc,
-+ 0x00, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x15, 0x7b, 0x2b, 0x29, 0x29,
-+ 0x7b, 0x55, 0x1a, 0x12, 0x24, 0x49, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0xa0, 0x20,
-+ 0xfc, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x7f, 0x02, 0x04, 0x3f,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x80, 0x60, 0x90,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x09, 0x7f, 0x03, 0x0d, 0x71,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x30, 0xd0, 0x10, 0x20, 0xfc, 0x80, 0x60, 0x1c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x10,
-+ 0x14, 0x12, 0x22, 0x20, 0x4f, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xa8, 0xa0,
-+ 0xa8, 0xa8, 0xb0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x21, 0x26, 0x00, 0x13,
-+ 0x1e, 0x11, 0x20, 0x21, 0x46, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xa0, 0x58,
-+ 0x4c, 0x50, 0xe0, 0x50, 0x4c, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2b, 0x0a, 0x1c,
-+ 0x2f, 0x48, 0x10, 0x11, 0x22, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x40, 0x40,
-+ 0xfc, 0xc0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x06, 0x38, 0x3f, 0x24, 0x25, 0x4f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x30, 0xc0, 0xfc, 0x90, 0x10, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x21, 0x41, 0x1f, 0x01, 0x0f,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0xe0,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x22, 0x14,
-+ 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0x78, 0x48, 0x50, 0x50,
-+ 0x48, 0x44, 0x44, 0x44, 0x58, 0x40, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x08, 0x0c, 0x17, 0x14,
-+ 0x37, 0x55, 0x14, 0x15, 0x16, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0x40, 0xf8, 0x90, 0xe0,
-+ 0x5c, 0xf8, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13,
-+ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0x20, 0x28, 0x04, 0x14, 0xf0, 0x00, 0x00,
-+ 0x08, 0x08, 0x2f, 0x28, 0x28, 0x2e, 0x71, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x3f, 0x00,
-+ 0x00, 0x00, 0x13, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x10,
-+ 0x20, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x14, 0x12, 0x1f, 0x13,
-+ 0x1c, 0x1f, 0x11, 0x23, 0x20, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x90, 0xa0, 0xfc, 0xe0,
-+ 0x98, 0xfc, 0x20, 0xa0, 0xe0, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x01, 0x14, 0x14, 0x24, 0x03,
-+ 0x08, 0x36, 0x35, 0x51, 0x55, 0x0c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0x90, 0x88, 0x28, 0xe0,
-+ 0x20, 0xd8, 0xd4, 0x44, 0x50, 0x30, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x08, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x19, 0x61, 0x0f, 0x01, 0x3f,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x30, 0x0c, 0xe0, 0x00, 0xf8,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x44, 0x07, 0x04, 0x07, 0x04,
-+ 0x00, 0x7f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0xc0, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x04, 0x08, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x73, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0xfc, 0x08, 0x48, 0xa8,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x16, 0x11, 0x10, 0x1f,
-+ 0x70, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x50, 0x4c, 0xf0, 0x40, 0xfc,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x14, 0x36,
-+ 0x35, 0x55, 0x14, 0x24, 0x24, 0x4d, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x48, 0x48, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x7e, 0x08, 0x7e,
-+ 0x08, 0x2d, 0x2a, 0x2a, 0x48, 0x18, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c,
-+ 0x70, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x07, 0x1c, 0x67,
-+ 0x04, 0x07, 0x04, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x10, 0xf0, 0x20, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x09, 0x0c, 0x1a,
-+ 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x24,
-+ 0x28, 0x78, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x07,
-+ 0x1c, 0x67, 0x04, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x20, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x39, 0x03, 0x7e, 0x03, 0x3a, 0x03, 0x3a,
-+ 0x07, 0x38, 0x29, 0x2e, 0x38, 0x20, 0x00, 0x00,
-+ 0x88, 0x08, 0xc8, 0x48, 0xfc, 0x48, 0xe8, 0x78,
-+ 0xd8, 0xc8, 0x48, 0x48, 0x48, 0xd8, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x13, 0x12, 0x03, 0x02, 0x72, 0x12,
-+ 0x14, 0x15, 0x19, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0x90,
-+ 0x00, 0xa8, 0x54, 0x54, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x48, 0x48,
-+ 0x50, 0x60, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x06, 0x06,
-+ 0x0a, 0x0a, 0x12, 0x22, 0x42, 0x06, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x17, 0x11, 0x31, 0x5f, 0x10,
-+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x10, 0x10, 0x24, 0x42,
-+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x09, 0x09,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2d, 0x29, 0x4a,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x88, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x3f, 0x24, 0x3f, 0x1e, 0x13,
-+ 0x1e, 0x12, 0x1e, 0x14, 0x1e, 0x61, 0x00, 0x00,
-+ 0x78, 0x90, 0x20, 0xf8, 0x48, 0xf8, 0x10, 0xfc,
-+ 0x90, 0x50, 0x50, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0xc0, 0x40, 0x78, 0x88, 0x88, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x03, 0x0c, 0x79, 0x49, 0x2a, 0x2c, 0x7f, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x49, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80, 0xfc,
-+ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x01, 0x7f, 0x02,
-+ 0x07, 0x1c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x00, 0xfc, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x28, 0x48, 0x0e, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x29, 0x49, 0x08, 0x19, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x88, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x02, 0x02, 0x3e, 0x20, 0x3e, 0x22,
-+ 0x12, 0x0e, 0x1a, 0x62, 0x02, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x80, 0xf8, 0x88,
-+ 0x48, 0x38, 0x68, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x7f, 0x04, 0x1f, 0x64,
-+ 0x07, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x02, 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x1f,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf0,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x13, 0x12, 0x1e, 0x12, 0x12, 0x1e,
-+ 0x12, 0x12, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x48, 0x50,
-+ 0x50, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x00, 0x7f, 0x00,
-+ 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x01, 0x01, 0x3f, 0x01, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x0f, 0x11, 0x21, 0x7f, 0x03,
-+ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x80,
-+ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x1e, 0x24, 0x27, 0x54,
-+ 0x08, 0x09, 0x0a, 0x14, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x48, 0x33, 0x12, 0x34, 0x48, 0x0f, 0x18,
-+ 0x29, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x10, 0xfc, 0x10,
-+ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x01, 0x7d, 0x11, 0x12, 0x14, 0x7f, 0x10,
-+ 0x10, 0x11, 0x1e, 0x64, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x19, 0x70, 0x17, 0x10, 0x7f, 0x12, 0x1b,
-+ 0x36, 0x37, 0x50, 0x13, 0x10, 0x17, 0x00, 0x00,
-+ 0x08, 0xf0, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3b, 0x28, 0x2f, 0x38, 0x2b, 0x2a, 0x3b,
-+ 0x2a, 0x2b, 0x28, 0x2b, 0x28, 0x4f, 0x00, 0x00,
-+ 0x08, 0xf0, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00,
-+ 0x08, 0x0b, 0x3d, 0x09, 0x09, 0x7f, 0x09, 0x29,
-+ 0x2f, 0x29, 0x3b, 0x28, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x78, 0xc8, 0x68, 0x58, 0xd0,
-+ 0x58, 0x68, 0xe4, 0x44, 0x40, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x41, 0x27, 0x25, 0x05, 0x15,
-+ 0x16, 0x14, 0x27, 0x24, 0x47, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x58,
-+ 0x38, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x01, 0x02, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x17, 0x17, 0x3b, 0x50, 0x17,
-+ 0x10, 0x13, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xfc, 0x58, 0x58, 0x00, 0xfc,
-+ 0x40, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x00, 0x01, 0x3e, 0x12, 0x09, 0x3f, 0x20, 0x5f,
-+ 0x04, 0x02, 0x01, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x30, 0xd0, 0x10, 0x20, 0x40, 0xfc, 0x08, 0xe0,
-+ 0x20, 0x40, 0x80, 0x80, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x48,
-+ 0x48, 0x79, 0x49, 0x42, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04,
-+ 0x7f, 0x08, 0x14, 0x22, 0x42, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x20,
-+ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x13, 0x12, 0x15,
-+ 0x1c, 0x70, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0x20, 0xfc, 0x08, 0xf0,
-+ 0x90, 0xa0, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x79, 0x17, 0x10, 0x3b, 0x36,
-+ 0x37, 0x54, 0x52, 0x13, 0x1e, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0xc8, 0x3c, 0xc8, 0x28, 0xd8, 0x58,
-+ 0xc8, 0x48, 0x88, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x0b, 0x72, 0x14, 0x0d, 0x13, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0e, 0x00, 0x00,
-+ 0x08, 0xf4, 0x44, 0xa8, 0x90, 0xfc, 0x08, 0xf0,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x7f,
-+ 0x02, 0x3f, 0x24, 0x24, 0x24, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xfc,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22,
-+ 0x22, 0x24, 0x28, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x88,
-+ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x05, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
-+ 0x26, 0x3c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x50, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x17, 0x11, 0x1f, 0x10,
-+ 0x17, 0x14, 0x14, 0x27, 0x24, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x08, 0xe8, 0x08,
-+ 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x00, 0x00, 0x7f,
-+ 0x01, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x00, 0x00, 0xfc,
-+ 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x00, 0x3f, 0x22, 0x22, 0x3e,
-+ 0x08, 0x2c, 0x2a, 0x2b, 0x4a, 0x18, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x60, 0x60,
-+ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x2c, 0x2a, 0x2a, 0x48,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x08, 0x88, 0x88, 0x88, 0xc8, 0xa8, 0xa8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0c, 0x15, 0x16, 0x34, 0x57, 0x14,
-+ 0x15, 0x14, 0x15, 0x14, 0x10, 0x13, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0xa0, 0xe0, 0x3c, 0x40,
-+ 0x90, 0x60, 0x88, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x02, 0x3c, 0x08, 0x7e, 0x1d, 0x2a, 0x4a, 0x09,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x50, 0x50, 0x88, 0x04,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x13, 0x14, 0x1c,
-+ 0x71, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x42, 0x27, 0x26, 0x0a, 0x02,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x68, 0xd8, 0xd8, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f,
-+ 0x02, 0x02, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xcc,
-+ 0x40, 0x78, 0x48, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x24, 0xa4, 0xa8, 0xb0, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0xc8, 0x30, 0x20, 0xd0, 0x08,
-+ 0x64, 0x10, 0x00, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x67, 0x28, 0x1b, 0x26, 0x7f,
-+ 0x12, 0x3b, 0x36, 0x37, 0x52, 0x14, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x48, 0x58,
-+ 0xe8, 0xf8, 0xe8, 0x58, 0x58, 0x48, 0x00, 0x00,
-+ 0x00, 0x7f, 0x22, 0x16, 0x1a, 0x63, 0x06, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x58, 0x68, 0x88, 0x18, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x01, 0x7f, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xfc, 0x80, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x0a, 0x09, 0x09, 0x08, 0x7f,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x02, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x05, 0x05, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x20, 0x50, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x09,
-+ 0x17, 0x61, 0x09, 0x11, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x40, 0x88,
-+ 0x90, 0x60, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x04, 0x3f, 0x12, 0x7f, 0x1e, 0x1e, 0x1e, 0x12,
-+ 0x17, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0x78, 0x88, 0x78, 0x70, 0x70, 0x74,
-+ 0x3c, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x12, 0x1f, 0x34, 0x5f, 0x1e, 0x1f, 0x07, 0x7f,
-+ 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x48, 0x7c, 0xd0, 0x78, 0x78, 0xfc, 0xc0, 0xfc,
-+ 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x3d, 0x27, 0x24, 0x3f, 0x0a, 0x2a, 0x2f,
-+ 0x29, 0x2b, 0x2b, 0x3d, 0x61, 0x03, 0x00, 0x00,
-+ 0x10, 0x18, 0xd4, 0x14, 0x90, 0xfc, 0x90, 0x90,
-+ 0x30, 0xb0, 0x70, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x8c, 0xf8, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x02, 0x03, 0x72, 0x13,
-+ 0x15, 0x15, 0x19, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x18, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x7f, 0x02, 0x1f, 0x12, 0x14,
-+ 0x18, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xfc, 0x80, 0xf0, 0x90, 0xb0,
-+ 0x70, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7e, 0x18, 0x18, 0x7e, 0x5b, 0x5b, 0x5e,
-+ 0x6e, 0x46, 0x7e, 0x43, 0x7f, 0x42, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x28, 0x28, 0x08, 0x00, 0x00,
-+ 0x08, 0x0f, 0x18, 0x1f, 0x28, 0x4f, 0x08, 0x0f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xf8,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x60,
-+ 0x68, 0x68, 0xb4, 0xbc, 0x24, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x28, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x50, 0x13,
-+ 0x10, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x20, 0x70, 0x88, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x12, 0x11, 0x21, 0x4f, 0x08, 0x10, 0x12, 0x32,
-+ 0x52, 0x12, 0x13, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x40, 0x40, 0x78,
-+ 0x40, 0x40, 0x40, 0xc0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x08, 0x08, 0x0b,
-+ 0x7c, 0x08, 0x08, 0x10, 0x11, 0x20, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x60, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x04, 0x03, 0x7f, 0x03, 0x0d, 0x33,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0x00, 0xf8, 0x30, 0x40, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x20, 0x27, 0x00, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x0a, 0x42, 0x22, 0x22, 0x0f, 0x10,
-+ 0x16, 0x11, 0x20, 0x20, 0x43, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00,
-+ 0x08, 0x30, 0x00, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x11, 0x49, 0x22, 0x3e, 0x2a, 0x3f, 0x2a, 0x3e,
-+ 0x7f, 0x00, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0x24, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x15, 0x65, 0x2a, 0x18, 0x24, 0x7d,
-+ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x88, 0xc8, 0x28, 0x30, 0xfc, 0x90, 0x90, 0x50,
-+ 0x5c, 0x50, 0x50, 0xb0, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x01, 0x3f, 0x01, 0x7f, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x9c, 0xf4, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x0f, 0x08, 0x08, 0x7f, 0x08,
-+ 0x0a, 0x29, 0x29, 0x28, 0x49, 0x1a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x50, 0x50, 0x50,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x11, 0x11, 0x12, 0x12,
-+ 0x15, 0x18, 0x10, 0x21, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xd0, 0x50, 0x50,
-+ 0x50, 0x90, 0x94, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x48, 0x0f, 0x10, 0x13,
-+ 0x32, 0x53, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x80, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0b, 0x42, 0x22, 0x2f, 0x02, 0x13,
-+ 0x16, 0x16, 0x2a, 0x2a, 0x42, 0x47, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0x48, 0xc8, 0x28, 0x30,
-+ 0xb0, 0x90, 0x30, 0x48, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x11, 0x18,
-+ 0x34, 0x54, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x15, 0x65, 0x2a, 0x18, 0x24, 0x7d,
-+ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x80, 0xf8, 0xa0, 0x78,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x29, 0x25,
-+ 0x3f, 0x23, 0x25, 0x39, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x28, 0x48,
-+ 0xf8, 0x88, 0x48, 0x38, 0x08, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x1f, 0x12, 0x1f, 0x3e, 0x0c, 0x74,
-+ 0x0d, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd0, 0x70, 0x54, 0x8c,
-+ 0x04, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x01, 0x1e, 0x12, 0x1f, 0x3e, 0x06,
-+ 0x7c, 0x05, 0x0e, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0, 0x50, 0x74,
-+ 0x8c, 0x0c, 0x04, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x21,
-+ 0x21, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x08,
-+ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x21, 0x49, 0x0f, 0x11, 0x11, 0x35,
-+ 0x55, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xbc, 0x40, 0x40, 0xc0, 0x3c, 0x88, 0x88,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x1f, 0x00, 0x02, 0x72, 0x12,
-+ 0x14, 0x14, 0x18, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0x90, 0x88, 0xfc, 0x80, 0xa0, 0x90, 0x90,
-+ 0x88, 0x88, 0x88, 0x80, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x17, 0x11, 0x31, 0x52, 0x14,
-+ 0x11, 0x13, 0x14, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x80, 0x90, 0x18, 0xe4, 0x20, 0x24, 0x9c, 0xf0,
-+ 0x10, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x57, 0x54, 0x54, 0x55, 0x56,
-+ 0x54, 0x7d, 0x46, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x50, 0x98, 0xe4, 0xa0, 0xa4, 0x9c, 0xf0,
-+ 0x90, 0xa0, 0x40, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04,
-+ 0x1f, 0x68, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x40,
-+ 0xf0, 0x2c, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7b, 0x4a, 0x49, 0x79, 0x4f, 0x4d, 0x79,
-+ 0x4a, 0x4e, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0x20, 0xfc, 0x18, 0xf8,
-+ 0xd0, 0xd0, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x13, 0x7e, 0x04, 0x45, 0x26,
-+ 0x28, 0x29, 0x0e, 0x70, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x50, 0x88, 0xfc, 0xa4, 0xa4, 0x9c, 0xf0,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x01, 0x3e, 0x11, 0x09, 0x3f, 0x28, 0x4e,
-+ 0x12, 0x32, 0x0d, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x30, 0xd0, 0x10, 0x20, 0x40, 0xfc, 0x18, 0xf8,
-+ 0x90, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0a, 0x3e, 0x3f, 0x32, 0x44, 0x1b, 0x00, 0x00,
-+ 0x20, 0x30, 0x48, 0xf4, 0x50, 0x54, 0xcc, 0x78,
-+ 0x48, 0xd0, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x22, 0x13, 0x16, 0x06, 0x0b, 0x12,
-+ 0x12, 0x23, 0x22, 0x42, 0x43, 0x02, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x4a, 0x0b, 0x12, 0x12, 0x32,
-+ 0x52, 0x12, 0x12, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0xfc, 0x20, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x1f, 0x28, 0x48, 0x0f,
-+ 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x1a, 0x36, 0x36,
-+ 0x32, 0x52, 0x54, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0xfc, 0x20, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x1f, 0x25, 0x25, 0x55,
-+ 0x09, 0x09, 0x09, 0x11, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x28, 0x28, 0xe8, 0x28, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x41, 0x21, 0x21, 0x00, 0x13,
-+ 0x10, 0x10, 0x27, 0x20, 0x40, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x10, 0x60, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x11, 0x09, 0x4b, 0x22, 0x27, 0x0a, 0x0b, 0x12,
-+ 0x23, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x20, 0xf8, 0x40, 0xf0, 0x40, 0xf0, 0x40,
-+ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x08, 0x0b,
-+ 0x18, 0x1b, 0x28, 0x2b, 0x48, 0x48, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x08, 0xe8,
-+ 0x88, 0xe8, 0x88, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14,
-+ 0x17, 0x14, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0d, 0x13, 0x7f,
-+ 0x09, 0x2d, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x4c, 0x70, 0xc0, 0x48, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x02, 0x42, 0x22, 0x24, 0x04, 0x09, 0x04, 0x74,
-+ 0x12, 0x12, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0x90, 0x90, 0x20, 0x90, 0x90,
-+ 0x48, 0x48, 0x48, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x20, 0x17, 0x10, 0x03, 0x02, 0x73, 0x13,
-+ 0x13, 0x10, 0x1f, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xc0, 0xf8, 0xd8, 0x38, 0xf8,
-+ 0xf8, 0x10, 0xfc, 0x90, 0x30, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x00, 0x78,
-+ 0x08, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x23, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x22, 0x22, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x32, 0x4a,
-+ 0x0c, 0x04, 0x0d, 0x12, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x94, 0x14, 0x0c, 0x80, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x04, 0x05, 0x09, 0x1e,
-+ 0x2a, 0x49, 0x08, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1e, 0x12, 0x12, 0x12, 0x1e,
-+ 0x12, 0x10, 0x11, 0x11, 0x22, 0x40, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x1f, 0x01, 0x1f, 0x01,
-+ 0x7f, 0x07, 0x1f, 0x64, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0xe0, 0x40,
-+ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x48, 0x4b, 0x78, 0x4f,
-+ 0x48, 0x4b, 0x7c, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x44, 0xf8, 0x50, 0xfc,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x27, 0x00, 0x10,
-+ 0x13, 0x1d, 0x21, 0x21, 0x41, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0xfc, 0x40, 0x80,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11,
-+ 0x11, 0x11, 0x20, 0x2a, 0x49, 0x11, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xe0, 0x20, 0x00, 0x48, 0x24, 0x24, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x0c, 0x0f, 0x12, 0x7e,
-+ 0x09, 0x2e, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x40, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x10, 0xe0, 0x40, 0xfc,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x1f, 0x01, 0x1f, 0x01,
-+ 0x7f, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0x00, 0xf0, 0x00,
-+ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x1f, 0x12, 0x1f, 0x0f, 0x01, 0x7f,
-+ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0x90, 0xf0, 0xf0, 0x40, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3c, 0x01, 0x7e, 0x03, 0x3c,
-+ 0x3c, 0x01, 0x3e, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x48, 0xf8, 0x50, 0xfc, 0x40,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7c, 0x00, 0x3f, 0x00, 0x3c,
-+ 0x01, 0x3e, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x40, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x26, 0x38, 0x61, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x7e, 0x08, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x1a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x50, 0x50, 0x50,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x04, 0x04, 0x04,
-+ 0x0f, 0x08, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x40,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x17, 0x11, 0x10, 0x1f,
-+ 0x10, 0x10, 0x20, 0x20, 0x40, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x20, 0xc0, 0xfc,
-+ 0x88, 0x90, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x49, 0x0a, 0x15, 0x10, 0x37,
-+ 0x50, 0x11, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0x08, 0xf4, 0x40, 0xfc,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x12, 0x12, 0x3c, 0x06, 0x18,
-+ 0x61, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x26, 0x27, 0x7a, 0x12, 0x7f,
-+ 0x12, 0x56, 0x3b, 0x36, 0x1c, 0x61, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xc8, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x28, 0x31, 0x2b, 0x24, 0x27,
-+ 0x24, 0x25, 0x39, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x90, 0x08, 0xf4, 0x40, 0xfc,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x09, 0x09, 0x0b, 0x15, 0x19, 0x31, 0x51, 0x1f,
-+ 0x12, 0x13, 0x14, 0x19, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x0a, 0x09, 0x0f, 0x15, 0x19, 0x31, 0x53, 0x12,
-+ 0x13, 0x13, 0x12, 0x13, 0x13, 0x1c, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0xe8, 0x20, 0xe0, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x27, 0x24, 0x3f, 0x24, 0x25,
-+ 0x3e, 0x27, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xf8, 0x40, 0xfc, 0xa0, 0x50,
-+ 0x48, 0xf4, 0x90, 0x90, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x27, 0x24,
-+ 0x24, 0x28, 0x28, 0x30, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0xc0, 0x00, 0x00, 0xf8, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x04, 0x7f, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x4a, 0x4c, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x04, 0x3f, 0x24, 0x24,
-+ 0x2f, 0x34, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0x98,
-+ 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x48,
-+ 0x7b, 0x4a, 0x43, 0x02, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x12, 0x09, 0x3f, 0x27, 0x44, 0x17, 0x1f, 0x10,
-+ 0x0f, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0xc8, 0x40, 0xf0, 0xc0, 0x08,
-+ 0xf8, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x4b, 0x2a, 0x29, 0x08, 0x1f, 0x69, 0x08,
-+ 0x09, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x1c, 0xe4, 0x48, 0x30, 0x10, 0xfc, 0x10, 0x90,
-+ 0x30, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x7f, 0x01, 0x02,
-+ 0x7f, 0x04, 0x0f, 0x10, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0x00,
-+ 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x24,
-+ 0x7b, 0x4a, 0x0f, 0x16, 0x23, 0x42, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x29, 0x45, 0x05, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x28, 0x20, 0x40, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x4a, 0x29, 0x29, 0x08, 0x0f,
-+ 0x19, 0x68, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x18, 0x60, 0x88, 0x48, 0x50, 0x20, 0x10, 0xfc,
-+ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x09, 0x09, 0x11, 0x11,
-+ 0x21, 0x41, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x08,
-+ 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x09, 0x09, 0x11, 0x11, 0x21, 0x41,
-+ 0x03, 0x00, 0x00, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x10, 0x08, 0x14, 0x14, 0x20,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x09, 0x09, 0x3f, 0x20, 0x27, 0x24,
-+ 0x24, 0x27, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x20, 0xf8, 0x08, 0xc8, 0x48,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x10, 0x20, 0x3f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x80, 0x80, 0x80, 0xf8,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x11,
-+ 0x11, 0x12, 0x12, 0x24, 0x28, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x80, 0x80, 0xfc, 0xc0,
-+ 0xa0, 0xa0, 0x90, 0x88, 0x84, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x1a, 0x17, 0x1f, 0x18,
-+ 0x1f, 0x1d, 0x2f, 0x2c, 0x48, 0x09, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0xa0, 0x20, 0xbc, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x04, 0x3f, 0x0a, 0x7f, 0x00, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x04, 0x7f, 0x04, 0x04, 0x00, 0x00,
-+ 0x10, 0x90, 0x20, 0xa8, 0x48, 0x10, 0x10, 0x24,
-+ 0x44, 0x08, 0x08, 0x90, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x00, 0x00, 0x79, 0x0f, 0x09, 0x0f,
-+ 0x11, 0x1f, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x84, 0x24, 0xe8, 0x30, 0xe0,
-+ 0x10, 0xf0, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x12, 0x12, 0x1c,
-+ 0x70, 0x10, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00,
-+ 0x40, 0x40, 0x60, 0x50, 0x48, 0x48, 0x54, 0x54,
-+ 0xe0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x11, 0x11, 0x16,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x12, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x1f,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xf0, 0xc0,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x10, 0x1b,
-+ 0x70, 0x11, 0x11, 0x13, 0x14, 0x38, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x03, 0x3c,
-+ 0x04, 0x7f, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00,
-+ 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x48, 0x48, 0x49, 0x79, 0x4a,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00,
-+ 0x7c, 0x44, 0x7c, 0x44, 0x7c, 0x44, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1d, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x48, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x70, 0x10, 0x90, 0x90, 0x90, 0x08, 0x48, 0x44,
-+ 0x40, 0xa0, 0x90, 0x18, 0xe4, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x0b, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0xfc, 0x50, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7f, 0x13, 0x15, 0x39, 0x35,
-+ 0x35, 0x51, 0x50, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x90, 0x90, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xf8,
-+ 0x20, 0xfc, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x21, 0x21, 0x02, 0x04,
-+ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0c, 0x0a, 0x41, 0x21, 0x23, 0x02, 0x13,
-+ 0x12, 0x13, 0x22, 0x22, 0x42, 0x42, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x50, 0x60, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x0a, 0x42, 0x22, 0x2f, 0x00, 0x12,
-+ 0x12, 0x14, 0x28, 0x20, 0x41, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x50, 0x48,
-+ 0x54, 0xd4, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x22, 0x07, 0x16,
-+ 0x16, 0x1a, 0x2a, 0x22, 0x42, 0x42, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xc8, 0x48, 0x78, 0x48, 0xc8,
-+ 0xf8, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x0a, 0x2c, 0x2b, 0x28, 0x48,
-+ 0x0f, 0x08, 0x14, 0x13, 0x22, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xd0, 0xf8, 0x90, 0x90,
-+ 0xfc, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x08, 0x0f, 0x18, 0x2f, 0x48, 0x0f,
-+ 0x08, 0x0f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xf0,
-+ 0x80, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x25, 0x3f, 0x25, 0x25,
-+ 0x3d, 0x25, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x30, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18,
-+ 0x2a, 0x4a, 0x12, 0x12, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x09, 0x11, 0x63, 0x00, 0x07, 0x7f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x20, 0x18, 0x24, 0xc0, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x11, 0x10, 0x11, 0x3d, 0x25,
-+ 0x65, 0x25, 0x25, 0x3d, 0x25, 0x01, 0x00, 0x00,
-+ 0x40, 0x44, 0x44, 0x48, 0x50, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x11, 0x3f, 0x25, 0x65,
-+ 0x25, 0x25, 0x3c, 0x22, 0x22, 0x04, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0xf8, 0x20, 0xf8,
-+ 0x20, 0xfc, 0x00, 0xa8, 0x54, 0x04, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7f, 0x08, 0x08, 0x13, 0x18,
-+ 0x34, 0x57, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x09, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2b, 0x49, 0x0a, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0, 0xa8,
-+ 0xa8, 0x24, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x1f, 0x04, 0x7f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x40, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x25, 0x42, 0x01, 0x1f,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xe0, 0x00,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2d, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x0a, 0x0b, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20, 0xf8,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0xb0, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x21, 0x11, 0x11, 0x01, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0x10, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x4a, 0x29, 0x28,
-+ 0x0b, 0x19, 0x68, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x3c, 0xc8, 0x48, 0x30, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x18, 0x1f, 0x28,
-+ 0x4f, 0x08, 0x0f, 0x14, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x80, 0xf8, 0x80, 0xf0, 0x80,
-+ 0xf0, 0x80, 0xf8, 0x90, 0x48, 0x44, 0x00, 0x00,
-+ 0x10, 0x17, 0x21, 0x4f, 0x0f, 0x15, 0x17, 0x35,
-+ 0x57, 0x11, 0x17, 0x11, 0x1e, 0x10, 0x00, 0x00,
-+ 0xc0, 0x3c, 0x00, 0xc0, 0xfc, 0x48, 0xc8, 0x48,
-+ 0xc8, 0x08, 0xc8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x01,
-+ 0x7f, 0x02, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xfc, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x01, 0x3e,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x60, 0x20, 0xa0, 0x90, 0x90, 0x48, 0x48, 0x44,
-+ 0x40, 0x60, 0x90, 0x90, 0xe8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xa0, 0xa0, 0xb8, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3e,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x02, 0x07, 0x18, 0x7f, 0x11, 0x1f, 0x13, 0x0d,
-+ 0x72, 0x0d, 0x32, 0x0c, 0x30, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xf0, 0x10, 0xf0, 0x18, 0x90,
-+ 0xa0, 0xc0, 0xa0, 0x98, 0x84, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x27, 0x44, 0x07, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0xc8, 0x40, 0xc0, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x4f, 0x29, 0x1f, 0x69, 0x08, 0x7f, 0x02,
-+ 0x1f, 0x14, 0x18, 0x1f, 0x1f, 0x10, 0x00, 0x00,
-+ 0x3c, 0xc8, 0x50, 0xfc, 0x10, 0xb0, 0xfc, 0x80,
-+ 0xf0, 0xb0, 0xf0, 0xf0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xa0, 0xa0, 0xb8, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x18, 0xe0, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0xf8, 0x90, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x2b, 0x28, 0x31, 0x29, 0x25,
-+ 0x25, 0x25, 0x38, 0x27, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0xf8, 0x90, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x15, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x11, 0x09,
-+ 0x05, 0x03, 0x03, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x00, 0x00, 0x3d, 0x05, 0x09, 0x09,
-+ 0x11, 0x21, 0x43, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x88, 0x48, 0x50, 0x20, 0x20,
-+ 0x10, 0x08, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x09, 0x7f, 0x09, 0x3f,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x60, 0x80, 0x00, 0xf8, 0x20, 0xfc, 0x20, 0xf8,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x40, 0x07, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x00, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x01, 0x1e, 0x04, 0x3f, 0x15, 0x7f, 0x15, 0x15,
-+ 0x3f, 0x0e, 0x15, 0x25, 0x44, 0x04, 0x00, 0x00,
-+ 0x08, 0x28, 0x28, 0xa8, 0x28, 0xe8, 0x28, 0x28,
-+ 0xa8, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12,
-+ 0x16, 0x1a, 0x64, 0x06, 0x09, 0x10, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0xa8, 0xa8,
-+ 0xb0, 0x90, 0x90, 0xb4, 0xcc, 0x04, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x10, 0x17,
-+ 0x15, 0x1b, 0x64, 0x01, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x17, 0x11, 0x12, 0x7f, 0x10, 0x13, 0x10,
-+ 0x17, 0x18, 0x63, 0x0d, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x10, 0xa8, 0xfc, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0xc8, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x12, 0x7f, 0x24, 0x25, 0x24,
-+ 0x7b, 0x48, 0x0f, 0x14, 0x20, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa8, 0xa4, 0xfc, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0xc8, 0xb0, 0x90, 0xc8, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x01,
-+ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x19, 0x34, 0x37, 0x30, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x11, 0x17, 0x1e,
-+ 0x72, 0x14, 0x11, 0x16, 0x10, 0x37, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf0, 0xf0, 0xf0, 0xfc, 0xd4,
-+ 0xf8, 0xf4, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x02, 0x02, 0x07, 0x0c, 0x32, 0x03, 0x0d, 0x71,
-+ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c,
-+ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1d, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xa0,
-+ 0xa0, 0x60, 0x60, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x42, 0x24, 0x23, 0x00, 0x0f,
-+ 0x10, 0x13, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0xfc,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x48, 0x2f, 0x28, 0x08, 0x08,
-+ 0x18, 0x28, 0x49, 0x0a, 0x0c, 0x08, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x40,
-+ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3f, 0x2f,
-+ 0x48, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0xe8,
-+ 0x20, 0xe0, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x1b, 0x71, 0x12, 0x17, 0x7c, 0x13, 0x18,
-+ 0x37, 0x34, 0x57, 0x10, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0x10, 0xa8, 0xfc, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0xe8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x00, 0x3d, 0x05, 0x19,
-+ 0x63, 0x0f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x48, 0x88, 0x50, 0x30,
-+ 0x0c, 0xe0, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x7e, 0x03, 0x3c, 0x01, 0x3c,
-+ 0x03, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x40, 0xfc, 0x10, 0xa8, 0xfc, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0xe8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0d, 0x3f, 0x2e, 0x2e, 0x36,
-+ 0x37, 0x22, 0x3f, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x20, 0xfc, 0x88, 0x54, 0xfc, 0x50, 0xf8, 0x50,
-+ 0xfc, 0x68, 0xd0, 0x50, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0x60, 0x20, 0x1c, 0x00, 0x00,
-+ 0x00, 0x07, 0x74, 0x57, 0x54, 0x57, 0x55, 0x55,
-+ 0x55, 0x77, 0x4a, 0x4b, 0x12, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x38, 0xc0, 0xf0, 0x50,
-+ 0xf0, 0xf8, 0xa8, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x7e, 0x12, 0x12, 0x12,
-+ 0x16, 0x1a, 0x62, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x29, 0x7e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x20, 0x20, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x17, 0x11,
-+ 0x19, 0x71, 0x11, 0x11, 0x1e, 0x30, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x20, 0xe0, 0x20,
-+ 0x20, 0x10, 0x50, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x10, 0x1d, 0x25, 0x25, 0x55,
-+ 0x19, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x17, 0x35, 0x39, 0x52,
-+ 0x17, 0x1a, 0x17, 0x24, 0x20, 0x47, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0x00, 0xf8, 0x88,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0xf8, 0x30, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x66, 0x2a, 0x1b, 0x24, 0x7f,
-+ 0x12, 0x3b, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x20, 0xa8,
-+ 0xa8, 0x90, 0x90, 0xb4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x01, 0x7d, 0x2f, 0x2a, 0x3a, 0x2f, 0x28, 0x3b,
-+ 0x2a, 0x2f, 0x3a, 0x6b, 0x0a, 0x08, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x20, 0xa8,
-+ 0xa8, 0xb0, 0x90, 0xb4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x04, 0x07, 0x08, 0x10, 0x7f, 0x11, 0x11, 0x11,
-+ 0x1f, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x10, 0x10, 0x10,
-+ 0xf0, 0x10, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x1e, 0x24, 0x48, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x2a, 0x3e, 0x22, 0x22, 0x22, 0x47, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0x20, 0x30, 0x28, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x19, 0x6f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x09, 0x08, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x20, 0xe0,
-+ 0x20, 0xf0, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x2a, 0x48, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x61, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0x20, 0x30, 0x28, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x12, 0x23,
-+ 0x5c, 0x00, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x48, 0xb0,
-+ 0x2c, 0x20, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x11, 0x11, 0x12, 0x22, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xe0,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x33, 0x52, 0x12,
-+ 0x13, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x17, 0x10, 0x33, 0x50, 0x13,
-+ 0x10, 0x13, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xf8,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x13, 0x10, 0x33, 0x50, 0x17,
-+ 0x14, 0x1b, 0x11, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xf0, 0x20, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x14, 0x27,
-+ 0x58, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x90, 0x60,
-+ 0x1c, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x4d, 0x0a, 0x12, 0x24, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x68,
-+ 0x68, 0x70, 0x50, 0x50, 0x68, 0x84, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x49, 0x08, 0x49, 0x29, 0x2b,
-+ 0x0a, 0x1f, 0x68, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0xf0, 0xfc,
-+ 0x08, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5f, 0x05, 0x7f, 0x05, 0x19,
-+ 0x6f, 0x09, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x68, 0xa0, 0x40, 0xfc, 0x40, 0x30,
-+ 0xec, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x00, 0x00, 0x02, 0x02, 0x02, 0x12, 0x12,
-+ 0x12, 0x22, 0x42, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x40, 0x00, 0x00, 0x10, 0x08,
-+ 0x04, 0x04, 0x00, 0x10, 0x10, 0xf0, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x17, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0xfc, 0xa0, 0x10, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x12, 0x13, 0x1e,
-+ 0x72, 0x12, 0x14, 0x14, 0x18, 0x33, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0xc8,
-+ 0xc8, 0xb0, 0xa0, 0x90, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x12, 0x14, 0x7f, 0x08,
-+ 0x7e, 0x1c, 0x1b, 0x29, 0x4a, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x14, 0x14, 0x7f, 0x00, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x50, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x03, 0x0d, 0x31, 0x09, 0x08,
-+ 0x7f, 0x18, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x80, 0x60, 0x18, 0x20, 0x20,
-+ 0xfc, 0x60, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x39, 0x36,
-+ 0x34, 0x53, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x10, 0xe8,
-+ 0x44, 0xf8, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x43, 0x20, 0x23, 0x00, 0x17,
-+ 0x14, 0x1b, 0x21, 0x20, 0x41, 0x4e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xf0, 0x20, 0xc0, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x44, 0x20, 0x21, 0x02, 0x10,
-+ 0x17, 0x10, 0x21, 0x22, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa0, 0xa4, 0x1c, 0x40, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x21, 0x21, 0x3f, 0x21, 0x21,
-+ 0x3f, 0x21, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x29, 0x2a, 0x0c, 0x19,
-+ 0x28, 0x48, 0x13, 0x10, 0x20, 0x47, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x40, 0x30, 0x4c, 0x80,
-+ 0x20, 0xc8, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x0a, 0x0a, 0x13, 0x1a,
-+ 0x36, 0x57, 0x12, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04, 0x0f,
-+ 0x11, 0x6f, 0x03, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x40, 0xa0,
-+ 0x10, 0xec, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x67, 0x1a, 0x1a, 0x27, 0x7e,
-+ 0x12, 0x1b, 0x36, 0x34, 0x50, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x20,
-+ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0xf0, 0x10, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x00, 0x01, 0x04,
-+ 0x14, 0x14, 0x24, 0x44, 0x04, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, 0x90,
-+ 0x48, 0x44, 0x04, 0x20, 0x20, 0xe0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x3f, 0x12, 0x14, 0x7f,
-+ 0x08, 0x7f, 0x1c, 0x2a, 0x4a, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x0c, 0x70, 0x40, 0x40, 0x7c,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x68, 0x60, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x02, 0x3d,
-+ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x23, 0x00, 0x00,
-+ 0x40, 0x40, 0x60, 0xa0, 0x90, 0x28, 0x44, 0x90,
-+ 0x20, 0x44, 0x88, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x78, 0x01, 0x06, 0x38, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x24, 0xe8, 0x30,
-+ 0xe0, 0x60, 0xa0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x04, 0x7f, 0x01,
-+ 0x01, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x20, 0x40, 0xfc, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x21, 0x12, 0x13, 0x06, 0x0a, 0x73, 0x12,
-+ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x00,
-+ 0x1f, 0x13, 0x1f, 0x14, 0x27, 0x58, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00,
-+ 0xf8, 0xe0, 0xfc, 0x90, 0x60, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-+ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x30, 0x50, 0x10,
-+ 0x10, 0x10, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x02, 0x02, 0x1e, 0x07,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x88, 0x48, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x17, 0x14,
-+ 0x27, 0x58, 0x0f, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xcc, 0x70,
-+ 0x44, 0xbc, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x3d, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x3e, 0x08,
-+ 0x0e, 0x30, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x88,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x07, 0x04, 0x07, 0x04, 0x7f,
-+ 0x12, 0x12, 0x14, 0x18, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xc0, 0x40, 0xc0, 0x40, 0xfc,
-+ 0x80, 0x88, 0x78, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x09, 0x10, 0x10,
-+ 0x23, 0x40, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x80, 0x40,
-+ 0x30, 0x8c, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3f, 0x3f, 0x2f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x60, 0x90, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x01, 0x3c, 0x24, 0x25, 0x3d, 0x22, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0xb0, 0xd0,
-+ 0x90, 0x90, 0x94, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x27, 0x11, 0x11, 0x01, 0x01, 0x0f, 0x71,
-+ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20,
-+ 0x10, 0x14, 0x0c, 0x04, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x28, 0x2b, 0x32, 0x2b, 0x26,
-+ 0x27, 0x24, 0x27, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x15, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x68, 0x58,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x00, 0x7f, 0x00, 0x3f,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x08, 0xe8,
-+ 0x08, 0x88, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x7a, 0x03, 0x3a, 0x02, 0x3b,
-+ 0x02, 0x3a, 0x2b, 0x2e, 0x38, 0x20, 0x00, 0x00,
-+ 0x00, 0xc0, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x98,
-+ 0x90, 0xd0, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x17, 0x20, 0x48, 0x09, 0x11, 0x25, 0x45,
-+ 0x09, 0x09, 0x11, 0x20, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0xc0, 0x40, 0x7c, 0xa0, 0xa0, 0x3c, 0x20,
-+ 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x22, 0x29, 0x25, 0x24, 0x20,
-+ 0x27, 0x20, 0x23, 0x2c, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x28, 0x28, 0x28, 0x48, 0x48,
-+ 0x88, 0xc8, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x14,
-+ 0x17, 0x14, 0x12, 0x23, 0x23, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xc8, 0x08, 0x88, 0xfc, 0xc8,
-+ 0xa8, 0xa8, 0x88, 0x08, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x13, 0x02, 0x02, 0x73, 0x12,
-+ 0x11, 0x11, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x10,
-+ 0x10, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x49, 0x49, 0x4a, 0x4a, 0x4c,
-+ 0x48, 0x78, 0x48, 0x41, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x48, 0x50, 0x40,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x09, 0x09, 0x7f, 0x09,
-+ 0x09, 0x3f, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x21,
-+ 0x3d, 0x25, 0x25, 0x3c, 0x24, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x24, 0x24, 0x24, 0x24,
-+ 0x24, 0x24, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x13, 0x15, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x90, 0x90, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x05, 0x05, 0x09,
-+ 0x09, 0x11, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x88, 0x90, 0x60, 0x40, 0x20,
-+ 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2c, 0x29, 0x4a,
-+ 0x08, 0x0c, 0x12, 0x12, 0x21, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7b, 0x48, 0x4b, 0x79, 0x49, 0x4f, 0x79,
-+ 0x49, 0x4b, 0x78, 0x48, 0x07, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50,
-+ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7e, 0x09, 0x1c,
-+ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x54, 0x94, 0x2c, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x12, 0x0e, 0x32, 0x07, 0x01, 0x3f,
-+ 0x04, 0x0b, 0x11, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x38, 0xc8, 0x18, 0x00, 0xf8,
-+ 0x20, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x7f, 0x08, 0x0f,
-+ 0x03, 0x0d, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xfc, 0x20, 0xe0,
-+ 0x10, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x21, 0x17, 0x10, 0x01, 0x0e, 0x71, 0x16,
-+ 0x11, 0x16, 0x10, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x80, 0x88, 0xc8, 0x70, 0xe0,
-+ 0x50, 0x48, 0x44, 0x80, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x50, 0x54, 0x94, 0x2c,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5e, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8,
-+ 0xa8, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x29, 0x30, 0x28, 0x27, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0x78, 0xc8, 0x78, 0x48,
-+ 0x78, 0x48, 0x48, 0x58, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x02, 0x7e, 0x13, 0x10, 0x17, 0x7c, 0x13,
-+ 0x12, 0x16, 0x1a, 0x62, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x2d, 0x2c, 0x7e, 0x43, 0x7d,
-+ 0x25, 0x3d, 0x25, 0x3d, 0x26, 0x2c, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0xf8, 0x48,
-+ 0x78, 0x48, 0x48, 0x58, 0x80, 0x7c, 0x00, 0x00,
-+ 0x11, 0x11, 0x1f, 0x01, 0x3f, 0x20, 0x4f, 0x00,
-+ 0x7f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x08, 0xe0, 0x00,
-+ 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x1f, 0x01, 0x7f, 0x0f, 0x08, 0x0f,
-+ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x00, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x49, 0x29, 0x2a, 0x7f, 0x1c, 0x1a, 0x2b, 0x48,
-+ 0x7f, 0x12, 0x3a, 0x04, 0x1a, 0x61, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x08, 0x08, 0x48, 0x30, 0x10,
-+ 0x30, 0x48, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x09, 0x09, 0x7e, 0x09, 0x28,
-+ 0x2f, 0x29, 0x39, 0x28, 0x27, 0x41, 0x00, 0x00,
-+ 0x80, 0xf8, 0x48, 0x58, 0xf8, 0x88, 0xb0, 0xf8,
-+ 0x48, 0x58, 0xf8, 0x88, 0x30, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x3e, 0x52, 0x57, 0x7f, 0x52, 0x2c,
-+ 0x3e, 0x52, 0x56, 0x7e, 0x52, 0x2c, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x12, 0x13, 0x1e,
-+ 0x72, 0x15, 0x15, 0x19, 0x11, 0x31, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40, 0xfc, 0x40,
-+ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x40, 0x88, 0x08, 0x10, 0x20,
-+ 0xc4, 0x04, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7f, 0x11, 0x19, 0x35, 0x34,
-+ 0x33, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x3f, 0x20, 0x4f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x09, 0x3f, 0x2a, 0x2c, 0x28, 0x3e, 0x22,
-+ 0x32, 0x2c, 0x24, 0x2a, 0x32, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x05, 0x19, 0x63, 0x00, 0x03, 0x0f, 0x78,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x60, 0x18, 0x24, 0xc0, 0x40, 0xf8, 0x80,
-+ 0xf0, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x1d,
-+ 0x35, 0x53, 0x12, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x23, 0x10, 0x15, 0x43, 0x23, 0x24, 0x0b, 0x12,
-+ 0x13, 0x12, 0x21, 0x21, 0x4f, 0x40, 0x00, 0x00,
-+ 0x90, 0x90, 0x64, 0x28, 0xf0, 0x08, 0xf4, 0x10,
-+ 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x7e, 0x13, 0x14, 0x11, 0x1c,
-+ 0x73, 0x12, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xa8, 0xb8, 0xc8, 0x98, 0x80,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x08, 0x04,
-+ 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x12,
-+ 0x13, 0x12, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20,
-+ 0xe0, 0x20, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0a, 0x0f,
-+ 0x12, 0x17, 0x26, 0x2a, 0x52, 0x42, 0x00, 0x00,
-+ 0x00, 0x7c, 0x90, 0x78, 0xc8, 0xf8, 0xc8, 0xf8,
-+ 0x48, 0x78, 0xb0, 0xa8, 0x44, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x2b, 0x2a,
-+ 0x3e, 0x2a, 0x2a, 0x3e, 0x23, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x88, 0x88, 0x10, 0x10,
-+ 0x30, 0x30, 0x48, 0x88, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x7f,
-+ 0x09, 0x09, 0x09, 0x15, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x40, 0x23, 0x20, 0x0f, 0x00, 0x13,
-+ 0x10, 0x2f, 0x21, 0x43, 0x40, 0x0f, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90, 0xf0,
-+ 0x80, 0xfc, 0x20, 0xe0, 0xd0, 0x08, 0x00, 0x00,
-+ 0x14, 0x14, 0x1f, 0x24, 0x44, 0x7f, 0x04, 0x3f,
-+ 0x25, 0x25, 0x25, 0x26, 0x24, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x3e, 0x09, 0x7f, 0x15, 0x2b, 0x7e, 0x08,
-+ 0x7f, 0x01, 0x3f, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd0, 0x50, 0x70, 0x94,
-+ 0x0c, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x26, 0x26, 0x24,
-+ 0x79, 0x48, 0x0c, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x10, 0x24, 0x45, 0x09, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x13, 0x3a, 0x34, 0x34, 0x53,
-+ 0x10, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1e, 0x12,
-+ 0x12, 0x12, 0x12, 0x2c, 0x21, 0x40, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x29, 0x2f, 0x2a, 0x28,
-+ 0x28, 0x28, 0x2e, 0x38, 0x63, 0x0c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3f, 0x1c, 0x2a, 0x49,
-+ 0x3f, 0x01, 0x09, 0x09, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xc8, 0x04,
-+ 0xf8, 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x09, 0x09,
-+ 0x1f, 0x21, 0x0f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0xf8, 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x49, 0x48, 0x4f, 0x78, 0x49,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x10, 0x1b, 0x34, 0x35,
-+ 0x30, 0x57, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x40, 0xfc, 0x90, 0xd0, 0x70, 0x88, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7c, 0x10, 0x13, 0x3a, 0x36,
-+ 0x36, 0x53, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8,
-+ 0xb8, 0x38, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x11, 0x11, 0x11,
-+ 0x11, 0x11, 0x11, 0x11, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x47, 0x20, 0x2f, 0x00, 0x03,
-+ 0x12, 0x13, 0x22, 0x23, 0x42, 0x42, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x28, 0x28, 0x3f, 0x29, 0x2a, 0x48,
-+ 0x0d, 0x78, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x41,
-+ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1e, 0x12, 0x22, 0x4c,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0x90, 0x90, 0x60, 0x64, 0x9c,
-+ 0xf4, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x4b, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x1e, 0x1e, 0x13, 0x7e, 0x02,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00,
-+ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x00, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x14, 0x1f, 0x24, 0x7f, 0x3f, 0x24, 0x27, 0x01,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0xc8, 0xc8, 0xc8, 0x18, 0x00,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x04, 0x3f, 0x24, 0x24,
-+ 0x28, 0x28, 0x30, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0x80, 0xf8, 0x88, 0x88,
-+ 0x98, 0x98, 0x78, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x28, 0xe8, 0x68,
-+ 0x50, 0x50, 0x54, 0xec, 0x4c, 0x84, 0x00, 0x00,
-+ 0x08, 0x7e, 0x08, 0x0e, 0x78, 0x19, 0x07, 0x7f,
-+ 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x10, 0xc0, 0xfc,
-+ 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3f, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x02, 0x22, 0x12, 0x1f, 0x02, 0x02, 0x03, 0x7e,
-+ 0x12, 0x12, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0xc0, 0x7c, 0x50, 0xd0, 0x50,
-+ 0x90, 0x90, 0x10, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x78, 0x48, 0x78, 0x50, 0x7c,
-+ 0x90, 0x78, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x09, 0x7f, 0x00, 0x3f,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x90, 0x20, 0xf8, 0x28, 0xfc,
-+ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x02, 0x03, 0x0c, 0x78,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x80, 0x80, 0x60, 0x3c,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x03, 0x04, 0x38, 0x09, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x08, 0x08, 0xf8, 0x68,
-+ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x27, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xfc, 0x00, 0x78, 0x48,
-+ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x18, 0x1f, 0x28, 0x4f, 0x08, 0x0f,
-+ 0x08, 0x3f, 0x02, 0x01, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xfc,
-+ 0x00, 0xf0, 0x60, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x13, 0x10,
-+ 0x17, 0x14, 0x24, 0x24, 0x44, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xe0, 0x80,
-+ 0xf8, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1b, 0x34, 0x34, 0x37, 0x50,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xfc, 0x90, 0x90, 0xfc, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x13, 0x12, 0x1f, 0x12,
-+ 0x17, 0x16, 0x2a, 0x32, 0x42, 0x06, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0xc8, 0x28,
-+ 0x30, 0xb0, 0xb4, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x09, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x10, 0x60, 0x80, 0x00, 0x00, 0xfc, 0x40, 0x40,
-+ 0xc0, 0x70, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x00, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x02, 0x04, 0x07, 0x0c,
-+ 0x0c, 0x14, 0x24, 0x44, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x1b, 0x70, 0x13, 0x10, 0x7f, 0x11, 0x19,
-+ 0x35, 0x35, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x08, 0x7f, 0x08, 0x3f,
-+ 0x08, 0x7f, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x50, 0x50, 0xfc, 0x50, 0xfc,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0f, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x01, 0x39, 0x01, 0x3a, 0x02, 0x04, 0x1f, 0x68,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0xb8, 0x40, 0x20, 0xf0, 0x2c,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x02, 0x12,
-+ 0x12, 0x22, 0x44, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x40, 0x50,
-+ 0x48, 0x44, 0x44, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x29, 0x2a, 0x2e, 0x38, 0x61, 0x02, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x50, 0xd8, 0xd8,
-+ 0x54, 0x54, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x2b, 0x08, 0x2e,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x20, 0x23, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x13, 0x1c, 0x70, 0x10, 0x10,
-+ 0x12, 0x12, 0x0e, 0x01, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x12, 0x7e, 0x12, 0x13, 0x12, 0x10,
-+ 0x1a, 0x72, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x40,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x17, 0x10, 0x17,
-+ 0x18, 0x70, 0x11, 0x10, 0x10, 0x37, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x40, 0xfc,
-+ 0x90, 0x90, 0xe0, 0x30, 0xc8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x1f,
-+ 0x71, 0x10, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x9c, 0xf0,
-+ 0x18, 0xb0, 0x00, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d,
-+ 0x71, 0x12, 0x12, 0x14, 0x18, 0x30, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x02, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x23, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x0c, 0x00, 0xf8,
-+ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x13,
-+ 0x1c, 0x70, 0x10, 0x12, 0x0f, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xf8,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x1e, 0x12, 0x1e,
-+ 0x12, 0x1e, 0x14, 0x12, 0x1d, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x78, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x08, 0x08, 0xf8, 0x68,
-+ 0x60, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x01,
-+ 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8,
-+ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x44, 0x24, 0xa8, 0x90, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x12, 0x12, 0x32, 0x52, 0x12,
-+ 0x12, 0x12, 0x12, 0x13, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x0f, 0x11, 0x21, 0x7f, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x3f,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x5f, 0x00, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf0, 0x00, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x00, 0x7f, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x09, 0x09, 0x11, 0x21, 0x03, 0x01,
-+ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x11, 0x49, 0x2a, 0x24, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc0, 0x48, 0x48,
-+ 0x50, 0x30, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f,
-+ 0x19, 0x15, 0x27, 0x39, 0x41, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x48, 0x28, 0x38, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x14, 0x14, 0x13, 0x19,
-+ 0x77, 0x11, 0x1f, 0x11, 0x16, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x40, 0xc8, 0xb8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x09, 0x1e, 0x1b, 0x1a,
-+ 0x28, 0x2b, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x08, 0xfc, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x0a, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0xa8, 0xa8,
-+ 0xa8, 0xfc, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x01,
-+ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x08,
-+ 0x90, 0xe0, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x23, 0x00, 0x17,
-+ 0x10, 0x10, 0x20, 0x21, 0x46, 0x40, 0x00, 0x00,
-+ 0x90, 0x88, 0xf8, 0x80, 0xf0, 0x80, 0xf8, 0x90,
-+ 0x50, 0x60, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x22, 0x24, 0x07, 0x10,
-+ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x48, 0x2b, 0x20, 0x08, 0x11, 0x22, 0x41,
-+ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xe0, 0xa0, 0xa4, 0x24, 0x1c, 0x00,
-+ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x2f, 0x23, 0x02, 0x14,
-+ 0x1b, 0x12, 0x23, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x30, 0xd0, 0x88,
-+ 0xf4, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x3e,
-+ 0x22, 0x26, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x00, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x18, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x13, 0x16, 0x37, 0x3a, 0x53,
-+ 0x12, 0x1b, 0x16, 0x23, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x48, 0x68, 0xd8, 0x68, 0x48, 0xd8, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x11, 0x11, 0x1e, 0x14,
-+ 0x14, 0x14, 0x24, 0x24, 0x45, 0x1a, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x28, 0xb0,
-+ 0xa0, 0xbc, 0xa0, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x48, 0x10, 0x0f, 0x08,
-+ 0x08, 0x7f, 0x03, 0x0c, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x4d, 0x04, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x30, 0x40, 0xfc, 0x00, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x0d, 0x2a, 0x2a, 0x29, 0x4a, 0x08, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20,
-+ 0xe4, 0x78, 0xb0, 0x28, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x64, 0x18, 0x1b, 0x25, 0x7d,
-+ 0x13, 0x3b, 0x35, 0x31, 0x56, 0x10, 0x00, 0x00,
-+ 0x90, 0x98, 0xf4, 0x94, 0x90, 0xfc, 0x50, 0x74,
-+ 0x74, 0x58, 0x78, 0x94, 0x2c, 0x44, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x0f, 0x01, 0x7f, 0x10, 0x08,
-+ 0x41, 0x22, 0x0c, 0x10, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x80, 0x80,
-+ 0xfc, 0x48, 0x50, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x24,
-+ 0x3d, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x20,
-+ 0xe4, 0x78, 0xb0, 0x28, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x32, 0x4a,
-+ 0x05, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x90, 0x90, 0x90, 0x90,
-+ 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x17, 0x1e,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0x04, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x1f, 0x12, 0x1f, 0x12, 0x1f,
-+ 0x13, 0x12, 0x23, 0x2a, 0x49, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0xfc, 0x00, 0xfc, 0xa4, 0x54, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3e, 0x03, 0x3c,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x08, 0xfc, 0x40,
-+ 0x40, 0xf0, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x27, 0x3c, 0x27,
-+ 0x24, 0x3c, 0x18, 0x14, 0x27, 0x40, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc0, 0x78, 0xc0, 0x7c, 0xc8,
-+ 0x48, 0x30, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x09, 0x28, 0x2f,
-+ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0x50, 0x48, 0x78, 0xc0, 0x78, 0xc0, 0x7c, 0xc8,
-+ 0x48, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x17, 0x04, 0x03, 0x71, 0x17,
-+ 0x11, 0x1f, 0x10, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x44, 0xfc, 0x20, 0xf8,
-+ 0x20, 0xfc, 0xa0, 0x18, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x13, 0x02, 0x03, 0x70, 0x1f,
-+ 0x13, 0x1c, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x80, 0xfc,
-+ 0xf0, 0x28, 0xe4, 0x10, 0xf0, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x48, 0x28, 0x30, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21,
-+ 0x22, 0x22, 0x24, 0x28, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08,
-+ 0x88, 0x88, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x7f, 0x00, 0x3e, 0x22, 0x22,
-+ 0x3e, 0x22, 0x3e, 0x22, 0x22, 0x26, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xfc, 0x00, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x3f, 0x09,
-+ 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xf8, 0x20,
-+ 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0f, 0x0a,
-+ 0x1f, 0x12, 0x3f, 0x22, 0x42, 0x42, 0x00, 0x00,
-+ 0x08, 0x08, 0xd0, 0x20, 0xa0, 0xbc, 0xa8, 0xa8,
-+ 0xa8, 0x28, 0xe8, 0x48, 0x48, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x19, 0x15, 0x32, 0x4a, 0x0c,
-+ 0x19, 0x60, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x60, 0x50, 0x90,
-+ 0x08, 0x04, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x60, 0x1f, 0x01,
-+ 0x01, 0x0f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0x0c, 0xf0, 0x00,
-+ 0x00, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7d, 0x0b, 0x0a, 0x13, 0x1a,
-+ 0x37, 0x54, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0x20, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0f, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x88, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0xa8, 0x70,
-+ 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x3c, 0x27, 0x24, 0x25, 0x3c, 0x27, 0x25,
-+ 0x3f, 0x24, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x50,
-+ 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x3a, 0x12, 0x7e, 0x12, 0x1a,
-+ 0x36, 0x36, 0x52, 0x14, 0x17, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x00, 0x7b, 0x4a, 0x4b, 0x4a, 0x4b, 0x48,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x22, 0x14, 0x7f, 0x2a, 0x2a, 0x3e, 0x2a, 0x09,
-+ 0x11, 0x2f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x08,
-+ 0x18, 0xe0, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x7d, 0x45, 0x41, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x17, 0x10, 0x1f,
-+ 0x72, 0x13, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x04, 0x18, 0x7f, 0x15, 0x13, 0x1f, 0x10,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0xc0, 0x20, 0x10, 0xfc, 0x50, 0x90, 0xf0, 0x10,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x20,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x0e, 0x15, 0x65, 0x04, 0x7f,
-+ 0x01, 0x11, 0x11, 0x19, 0x27, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x60, 0xb0, 0x2c, 0x20, 0xf8,
-+ 0x10, 0x20, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x19, 0x29, 0x49, 0x09, 0x0f, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x03, 0x0c, 0x08, 0x2b, 0x28, 0x2d,
-+ 0x29, 0x29, 0x29, 0x2f, 0x3a, 0x64, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x98, 0xe4, 0x10, 0x50,
-+ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x07, 0x08, 0x0b, 0x2a, 0x2e, 0x2b,
-+ 0x28, 0x28, 0x29, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xe0, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x7d, 0x17, 0x11, 0x13, 0x3b, 0x2d, 0x6b,
-+ 0x28, 0x2a, 0x3a, 0x23, 0x24, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xb8, 0x54, 0x10, 0xfc,
-+ 0x48, 0x40, 0x78, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x11, 0x19,
-+ 0x35, 0x57, 0x11, 0x11, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x0c,
-+ 0x03, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x40, 0xc0,
-+ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x1e, 0x24, 0x7e, 0x2b,
-+ 0x3e, 0x2a, 0x3e, 0x3b, 0x2d, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x18, 0xe0, 0x20, 0x20, 0xfc,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0xb0, 0x98, 0x14, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x29, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x22, 0x13, 0x1f, 0x01, 0x05, 0x05, 0x77,
-+ 0x15, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xb8, 0x28, 0xe8, 0x38, 0x68, 0x68, 0xf8,
-+ 0x28, 0x48, 0x48, 0x98, 0x00, 0xfc, 0x00, 0x00,
-+ 0x03, 0x1c, 0x10, 0x1e, 0x10, 0x1f, 0x00, 0x15,
-+ 0x13, 0x19, 0x15, 0x15, 0x19, 0x66, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x50,
-+ 0x30, 0x90, 0x54, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x09, 0x08, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x10,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x06, 0x09, 0x14, 0x3f, 0x51, 0x1f, 0x11,
-+ 0x1f, 0x10, 0x3f, 0x31, 0x5f, 0x11, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x22, 0x12, 0x0c, 0x04,
-+ 0x04, 0x0a, 0x0a, 0x10, 0x21, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x50, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x12, 0x0a, 0x7f, 0x04, 0x3f, 0x1f, 0x01, 0x7f,
-+ 0x12, 0x1f, 0x1e, 0x12, 0x7e, 0x03, 0x00, 0x00,
-+ 0x90, 0xa0, 0xfc, 0x40, 0xf8, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x0f, 0x08, 0x0f,
-+ 0x0f, 0x08, 0x1f, 0x18, 0x2f, 0x08, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x20, 0xe0,
-+ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x3d, 0x25, 0x3d, 0x25, 0x01,
-+ 0x7f, 0x08, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x48, 0x00,
-+ 0xfc, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x48, 0x28, 0x2f, 0x08, 0x08,
-+ 0x18, 0x18, 0x28, 0x48, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04,
-+ 0x1f, 0x61, 0x1f, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0xc0,
-+ 0x30, 0x0c, 0xf0, 0x80, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x05, 0x35, 0x09, 0x1d, 0x65,
-+ 0x19, 0x15, 0x66, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x68, 0x10, 0x68, 0xc8,
-+ 0x30, 0xa8, 0xc8, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x41, 0x01, 0x7f, 0x03,
-+ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x80,
-+ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x17, 0x17, 0x14,
-+ 0x17, 0x13, 0x23, 0x22, 0x43, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xf8, 0xf8, 0x88,
-+ 0xf8, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x24, 0x24,
-+ 0x24, 0x24, 0x24, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0xe0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x29, 0x3f, 0x2a, 0x4c, 0x19, 0x6a, 0x08,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x28, 0x48, 0xb0,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x2a, 0x48,
-+ 0x09, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13, 0x10,
-+ 0x1f, 0x71, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7d, 0x10, 0x11, 0x10, 0x1f,
-+ 0x74, 0x13, 0x12, 0x12, 0x12, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x48, 0xf8, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x17, 0x10, 0x13, 0x1e,
-+ 0x73, 0x12, 0x13, 0x12, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0xfc, 0x40, 0xf8, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x48, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x17, 0x10, 0x1f,
-+ 0x72, 0x13, 0x12, 0x10, 0x10, 0x37, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x50, 0x78, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x17, 0x14, 0x1f,
-+ 0x70, 0x17, 0x10, 0x11, 0x16, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xbc, 0xa4, 0xbc,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x11,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x3f, 0x24, 0x3f,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x15, 0x39, 0x35,
-+ 0x35, 0x51, 0x53, 0x15, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0,
-+ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x3a, 0x37,
-+ 0x35, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x02, 0x0b,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x15, 0x34, 0x3b, 0x32, 0x53,
-+ 0x10, 0x17, 0x18, 0x25, 0x26, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x01, 0x03, 0x0c, 0x30, 0x1f, 0x01, 0x7f, 0x01,
-+ 0x01, 0x1f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x10, 0xfc, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x4b, 0x2a, 0x2b, 0x0a, 0x1b,
-+ 0x28, 0x4b, 0x10, 0x10, 0x21, 0x4e, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x45, 0x09, 0x12, 0x0f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x38, 0x40, 0x30, 0xc8,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x57, 0x34, 0x3b, 0x12, 0x7f, 0x12, 0x3b,
-+ 0x35, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x29, 0x4a, 0x08, 0x00, 0x00,
-+ 0x30, 0x90, 0x90, 0xa8, 0x24, 0x50, 0xf8, 0x48,
-+ 0x20, 0xe8, 0xc4, 0x54, 0x50, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x29, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x20, 0xa8, 0xa4, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x25, 0x3e, 0x24, 0x25, 0x3c,
-+ 0x24, 0x25, 0x3d, 0x66, 0x04, 0x04, 0x00, 0x00,
-+ 0x70, 0x90, 0x90, 0x48, 0x64, 0x90, 0xf8, 0x48,
-+ 0xa0, 0xa8, 0x84, 0x94, 0x90, 0x70, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x48, 0x28, 0x2f,
-+ 0x08, 0x18, 0x28, 0x48, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x7f, 0x08, 0x1f, 0x72, 0x0c,
-+ 0x74, 0x04, 0x7f, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x80, 0x98, 0xe0, 0x84,
-+ 0x7c, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x7f, 0x09, 0x02, 0x0f, 0x7f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x17, 0x14, 0x27, 0x44, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0x80, 0xe0, 0xfc, 0x20, 0xe0,
-+ 0x20, 0xe0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x11, 0x09, 0x49, 0x23, 0x22,
-+ 0x0b, 0x08, 0x17, 0x11, 0x26, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0xb8, 0xa8,
-+ 0xf8, 0x40, 0xfc, 0xf0, 0x4c, 0x40, 0x00, 0x00,
-+ 0x04, 0x24, 0x17, 0x04, 0x1c, 0x65, 0x05, 0x01,
-+ 0x7f, 0x04, 0x1c, 0x64, 0x07, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x90, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x7f, 0x01, 0x09,
-+ 0x09, 0x09, 0x09, 0x15, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x02, 0x21, 0x11, 0x17, 0x00, 0x00, 0x7f, 0x10,
-+ 0x11, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x80, 0x80, 0xfc, 0xc0,
-+ 0x20, 0x10, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x27, 0x13, 0x12, 0x03, 0x02, 0x73, 0x11,
-+ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0xf8, 0x04, 0xf8, 0x88, 0xf8,
-+ 0xf8, 0x80, 0xfc, 0x84, 0xfc, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x3d, 0x5d, 0x00, 0x08,
-+ 0x7f, 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf8,
-+ 0x88, 0xf8, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x70, 0xac, 0x20, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0x28, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x08, 0x09, 0x0e, 0x13, 0x12, 0x33, 0x50, 0x11,
-+ 0x16, 0x11, 0x16, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0xf8, 0x48, 0xf8, 0x40, 0x88,
-+ 0xd0, 0x60, 0xb0, 0x28, 0x24, 0xc0, 0x00, 0x00,
-+ 0x01, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x10,
-+ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x11, 0x10, 0x13, 0x1a, 0x37, 0x36, 0x33, 0x50,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x29, 0x28, 0x3b, 0x2a, 0x2b, 0x3b,
-+ 0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x58, 0x00, 0x00,
-+ 0x20, 0xfc, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0xa8,
-+ 0xe8, 0x50, 0xd4, 0x9c, 0xec, 0x44, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x00, 0x1f, 0x10, 0x1f, 0x19,
-+ 0x1f, 0x18, 0x1f, 0x29, 0x2f, 0x48, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x28,
-+ 0xa8, 0xb0, 0x90, 0x34, 0xcc, 0x84, 0x00, 0x00,
-+ 0x01, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x3d, 0x24,
-+ 0x25, 0x3d, 0x19, 0x15, 0x25, 0x41, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x22, 0x12, 0x13, 0x04, 0x0f, 0x70, 0x13,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x50, 0x12,
-+ 0x12, 0x12, 0x12, 0x13, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x54, 0x17,
-+ 0x14, 0x14, 0x17, 0x13, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x08, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x3e,
-+ 0x28, 0x24, 0x26, 0x3a, 0x62, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x10, 0x16,
-+ 0x1a, 0x72, 0x12, 0x13, 0x14, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x13, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x90, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x44, 0x27, 0x24, 0x07, 0x14,
-+ 0x14, 0x17, 0x23, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0x08, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x01, 0x11,
-+ 0x11, 0x11, 0x19, 0x15, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x20, 0x17, 0x10, 0x03, 0x02, 0x72, 0x13,
-+ 0x10, 0x11, 0x16, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xe0, 0x50, 0x4c, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0x09, 0x09, 0x0a, 0x14, 0x10, 0x31, 0x51, 0x12,
-+ 0x17, 0x1a, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x20, 0x10, 0x08, 0x88, 0x80, 0x40, 0x20, 0x10,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x17, 0x14,
-+ 0x17, 0x1f, 0x18, 0x2f, 0x28, 0x48, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x78, 0x80, 0xf0, 0x90,
-+ 0xf0, 0xf8, 0xa8, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x3c, 0x27,
-+ 0x24, 0x3c, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xa8, 0xa8, 0xe8,
-+ 0x90, 0x90, 0xb4, 0xac, 0xcc, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x10, 0x1d, 0x16,
-+ 0x17, 0x14, 0x24, 0x24, 0x45, 0x1a, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x80, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7f,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xfc, 0x08,
-+ 0x50, 0x50, 0x50, 0x94, 0x94, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x0c, 0x12, 0x23,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x40, 0x60, 0x90, 0x10,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x07, 0x04, 0x07, 0x04,
-+ 0x04, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xc0, 0x40, 0xc0, 0x40,
-+ 0x40, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x12, 0x11, 0x11, 0x7f, 0x10, 0x17, 0x14, 0x17,
-+ 0x1c, 0x77, 0x14, 0x14, 0x14, 0x35, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x00, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x05, 0x08, 0x18,
-+ 0x28, 0x4f, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0xf8, 0x10, 0x20,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7c, 0x07, 0x08, 0x0b, 0x10, 0x10, 0x1b,
-+ 0x70, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x50, 0x90, 0xa0, 0x48, 0xf4,
-+ 0x44, 0x50, 0x48, 0x44, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x02, 0x1f, 0x12, 0x14, 0x1f,
-+ 0x1f, 0x00, 0x7f, 0x08, 0x04, 0x00, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x80, 0xf0, 0xd0, 0x50, 0xf0,
-+ 0xf0, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x13, 0x12, 0x1f,
-+ 0x72, 0x13, 0x12, 0x13, 0x11, 0x36, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x2f, 0x11, 0x12, 0x02, 0x03, 0x0e, 0x72,
-+ 0x12, 0x12, 0x13, 0x1e, 0x26, 0x41, 0x00, 0x00,
-+ 0x0c, 0xf0, 0x28, 0x48, 0xd0, 0x30, 0x48, 0xfc,
-+ 0xa8, 0xa4, 0x24, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x12, 0x12, 0x33, 0x5e, 0x12,
-+ 0x12, 0x12, 0x12, 0x12, 0x12, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x78, 0xc8, 0x48, 0x48,
-+ 0x48, 0x58, 0x40, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x02, 0x03, 0x04, 0x0a, 0x31, 0x01, 0x06, 0x38,
-+ 0x03, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x40, 0x80, 0x40, 0x7c, 0x84,
-+ 0x88, 0x50, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x02, 0x02,
-+ 0x04, 0x04, 0x0a, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80, 0x80,
-+ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x27, 0x20, 0x00, 0x10,
-+ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xc0,
-+ 0xa0, 0x20, 0x90, 0x50, 0x48, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3e, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x08, 0x80, 0x80, 0x98,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4b, 0x49, 0x49, 0x4f, 0x49,
-+ 0x49, 0x7b, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50,
-+ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x48, 0x71, 0x53, 0x4d, 0x49, 0x71,
-+ 0x41, 0x41, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0x08, 0x18, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x12, 0x09, 0x08, 0x01, 0x7f,
-+ 0x02, 0x04, 0x07, 0x08, 0x03, 0x3c, 0x00, 0x00,
-+ 0x18, 0xe8, 0x08, 0x10, 0x20, 0x40, 0x00, 0xfc,
-+ 0x20, 0x20, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x19, 0x36, 0x37, 0x30, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0xfc, 0x80, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x08, 0x08, 0x0e,
-+ 0x78, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x0a, 0x18, 0x18, 0x1c,
-+ 0x2a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x80, 0x80, 0x88, 0x90,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1b, 0x16, 0x16, 0x7f,
-+ 0x12, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x48, 0x50,
-+ 0x60, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7f, 0x09, 0x1b, 0x1c, 0x1b,
-+ 0x2b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x80, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x29, 0x32, 0x28, 0x24,
-+ 0x24, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x08, 0x80, 0x80, 0x98,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x29, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x70,
-+ 0x50, 0x50, 0xc8, 0xa8, 0x24, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3f, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x44, 0x24, 0xa8, 0x90, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x11,
-+ 0x11, 0x12, 0x15, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50,
-+ 0x50, 0x48, 0xf4, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x13, 0x7f, 0x15, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x04, 0x04, 0x24, 0x14,
-+ 0x0c, 0x0c, 0x0a, 0x12, 0x20, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x10, 0x7f, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x43, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x10, 0x11,
-+ 0x01, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0xc0, 0x40, 0x24, 0x14, 0x0c,
-+ 0x00, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x09, 0x09, 0x7f, 0x09, 0x0f, 0x00, 0x3f, 0x21,
-+ 0x5f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xe0, 0x00, 0xfc, 0x08,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x13, 0x24, 0x04, 0x0f, 0x18, 0x28,
-+ 0x4f, 0x09, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x02, 0x02, 0x04, 0x7f, 0x00, 0x0f, 0x08, 0x08,
-+ 0x0f, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x40, 0x30, 0xe8, 0x04, 0xe0, 0x20, 0x20,
-+ 0xe0, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x12, 0x7f, 0x3e, 0x22, 0x3e, 0x3e, 0x22,
-+ 0x26, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x48, 0x70, 0x44, 0x3c, 0x48, 0x70, 0x44,
-+ 0x3c, 0x10, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x04, 0x1f, 0x04, 0x7f, 0x1f, 0x15, 0x1f, 0x15,
-+ 0x1f, 0x3f, 0x0a, 0x7f, 0x19, 0x60, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xfc, 0x40, 0x48, 0x48, 0x28,
-+ 0x28, 0xb0, 0x14, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x7f, 0x14, 0x12, 0x22,
-+ 0x4f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x30, 0x50, 0x88,
-+ 0xe4, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x0f, 0x02, 0x7f, 0x05,
-+ 0x19, 0x6d, 0x03, 0x0d, 0x31, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x80, 0xfc, 0x40,
-+ 0x30, 0x6c, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x20, 0x07, 0x04,
-+ 0x1b, 0x12, 0x22, 0x22, 0x42, 0x40, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0xf0, 0x00, 0xfc, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x27, 0x3c,
-+ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x50, 0x88, 0x9c, 0xe4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x25, 0x24, 0x3c, 0x24, 0x27,
-+ 0x3d, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x78, 0x64,
-+ 0x58, 0x50, 0x68, 0x84, 0x80, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x02, 0x04, 0x7f,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x40, 0x30, 0xc8,
-+ 0x04, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x04, 0x18, 0x6f, 0x08, 0x09, 0x09, 0x7f,
-+ 0x03, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x90, 0x88, 0x7c, 0xc0, 0x20, 0x14, 0x0c, 0xfc,
-+ 0x10, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x04, 0x1b, 0x68, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0x40, 0x34, 0xec, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x02, 0x03, 0x72, 0x12,
-+ 0x12, 0x12, 0x1f, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x88, 0x48,
-+ 0x30, 0xd0, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x17, 0x00, 0x03, 0x74, 0x12,
-+ 0x12, 0x11, 0x16, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x48, 0x50,
-+ 0xe0, 0x50, 0x48, 0xc8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3c, 0x24, 0x2b, 0x28, 0x30, 0x2b, 0x24,
-+ 0x27, 0x24, 0x38, 0x23, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0xe8, 0x68, 0xb0,
-+ 0x30, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00,
-+ 0x02, 0x04, 0x1f, 0x68, 0x08, 0x1f, 0x11, 0x1f,
-+ 0x1f, 0x3f, 0x01, 0x7f, 0x24, 0x42, 0x00, 0x00,
-+ 0x90, 0xbc, 0xc0, 0x24, 0x1c, 0xf4, 0x10, 0xf0,
-+ 0xf0, 0xf8, 0x00, 0xfc, 0x88, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88,
-+ 0xf8, 0xd8, 0xf8, 0x58, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x28, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0x80, 0xfc, 0x40, 0x40, 0x40,
-+ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x08, 0x7f, 0x00, 0x00,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x30, 0xc8, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80,
-+ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x29, 0x46, 0x3f, 0x01, 0x3f,
-+ 0x21, 0x3f, 0x23, 0x05, 0x19, 0x61, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x20, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x2f,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x78, 0x48, 0x78, 0x00, 0xfc,
-+ 0x10, 0x50, 0x5c, 0x50, 0xb0, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3e, 0x22, 0x3e, 0x00, 0x7f,
-+ 0x08, 0x2e, 0x28, 0x38, 0x2d, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x50, 0x88, 0x08, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x15, 0x1f, 0x15, 0x15, 0x13,
-+ 0x13, 0x13, 0x23, 0x23, 0x4d, 0x12, 0x00, 0x00,
-+ 0x80, 0xfc, 0xa0, 0xfc, 0xf0, 0xf0, 0xfc, 0xe0,
-+ 0xe0, 0xe0, 0xf8, 0xf8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x42, 0x21, 0x2f, 0x00, 0x17,
-+ 0x14, 0x17, 0x24, 0x27, 0x44, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x90, 0xf0, 0x90, 0xf4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x45, 0x25, 0x3f, 0x00, 0x0f,
-+ 0x19, 0x1f, 0x29, 0x2f, 0x49, 0x4b, 0x00, 0x00,
-+ 0x40, 0x78, 0xc0, 0x78, 0x08, 0xf8, 0x40, 0x78,
-+ 0x40, 0x78, 0x40, 0x78, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x49, 0x4e, 0x48, 0x49,
-+ 0x7e, 0x48, 0x43, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x88, 0xc8, 0x50, 0xe0, 0x20,
-+ 0x70, 0xa8, 0x24, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x01, 0x1e, 0x02,
-+ 0x03, 0x7e, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x60, 0x80, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x08, 0x08, 0x0f,
-+ 0x18, 0x68, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0x7c, 0xc0,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d,
-+ 0x71, 0x11, 0x12, 0x12, 0x14, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x48, 0x40,
-+ 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x11, 0x13,
-+ 0x1d, 0x79, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x80, 0x80, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x23, 0x02, 0x12,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x48, 0x40,
-+ 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x20, 0x17, 0x10, 0x47, 0x20, 0x27, 0x02, 0x13,
-+ 0x16, 0x1b, 0x23, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20, 0xf8,
-+ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x7c, 0x10, 0x11, 0x16, 0x7c, 0x11,
-+ 0x16, 0x10, 0x1b, 0x6c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xc8, 0x48, 0xf0, 0x20,
-+ 0x70, 0xa8, 0x24, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0x7c, 0xc0,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7f,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x54, 0xfc, 0x20, 0xf8, 0x20, 0xfc,
-+ 0x50, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x00,
-+ 0x20, 0x17, 0x15, 0x47, 0x22, 0x23, 0x05, 0x1f,
-+ 0x15, 0x17, 0x25, 0x21, 0x4e, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0xf0, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x48, 0xe8, 0x28, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3f, 0x00, 0x3c,
-+ 0x00, 0x3d, 0x26, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0xd0, 0x40, 0xfc, 0x40, 0x80,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x7f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x38, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x17, 0x15, 0x15, 0x15,
-+ 0x15, 0x15, 0x15, 0x21, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xd0, 0x50, 0x50, 0x50,
-+ 0x50, 0x50, 0xd4, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f,
-+ 0x10, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x40, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x44, 0x44,
-+ 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x52, 0x12,
-+ 0x12, 0x13, 0x12, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x17, 0x01, 0x00, 0x77, 0x10,
-+ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x10, 0x1f, 0x12,
-+ 0x12, 0x12, 0x22, 0x22, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x88,
-+ 0x48, 0x50, 0x20, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x7f, 0x06, 0x1a, 0x67, 0x0c, 0x17, 0x07,
-+ 0x04, 0x07, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xb0, 0xfc, 0x80, 0xe0, 0xe0,
-+ 0x80, 0xf0, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x3c, 0x24, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3c, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x08, 0x88, 0x90, 0xf8, 0x08, 0x08, 0xf8, 0x68,
-+ 0x60, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x02, 0x3e, 0x20, 0x22, 0x1e, 0x04,
-+ 0x3f, 0x04, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x80, 0x88, 0x78, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3e, 0x24, 0x3f,
-+ 0x01, 0x3f, 0x08, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x30, 0x30, 0xc8, 0x04,
-+ 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x20, 0x12, 0x12, 0x02, 0x02, 0x72, 0x12,
-+ 0x12, 0x13, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x3a, 0x36,
-+ 0x37, 0x52, 0x52, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x04, 0x04, 0x08, 0x11, 0x01, 0x02, 0x04, 0x18,
-+ 0x6f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x10, 0x00, 0x80, 0x40, 0x30,
-+ 0xec, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x4a, 0x0a, 0x1b,
-+ 0x28, 0x4b, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3b, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0xfc, 0x24, 0xf8, 0xf8, 0x20,
-+ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x10, 0x17, 0x78, 0x13, 0x1a, 0x37, 0x37,
-+ 0x33, 0x50, 0x57, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xb8, 0x18, 0xf8,
-+ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3f, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0a, 0x09, 0x09, 0x08, 0x7f,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x1f, 0x11, 0x1f, 0x11, 0x11,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf0, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x49, 0x4b, 0x4a, 0x4b, 0x48,
-+ 0x4b, 0x78, 0x4f, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x00, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7c, 0x11, 0x12, 0x10, 0x1f,
-+ 0x70, 0x11, 0x12, 0x14, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa0, 0x24, 0x5c, 0x40, 0xfc,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08,
-+ 0x08, 0x0f, 0x08, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x20,
-+ 0x20, 0xe0, 0x20, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x3e, 0x2b, 0x3e, 0x08,
-+ 0x3e, 0x08, 0x7f, 0x14, 0x23, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x0a, 0x42, 0x24, 0x21, 0x06, 0x10,
-+ 0x12, 0x12, 0x24, 0x21, 0x42, 0x4c, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xd0, 0xa0, 0x18, 0x44, 0x48,
-+ 0x48, 0xd0, 0xa0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x11, 0x0f, 0x09, 0x41, 0x21, 0x21, 0x01, 0x1f,
-+ 0x14, 0x14, 0x25, 0x26, 0x47, 0x44, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xfc,
-+ 0xa0, 0xa4, 0x1c, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x10,
-+ 0x14, 0x15, 0x29, 0x22, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x80, 0x88,
-+ 0x88, 0x50, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x3f, 0x29, 0x49, 0x09, 0x7f,
-+ 0x09, 0x08, 0x14, 0x12, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08,
-+ 0x08, 0x90, 0x90, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x12, 0x12, 0x13, 0x7c, 0x0b, 0x48, 0x2b,
-+ 0x2a, 0x32, 0x1e, 0x72, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x12, 0x09, 0x1f, 0x11,
-+ 0x1f, 0x11, 0x1f, 0x01, 0x7f, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x10, 0x20, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0d, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2b, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x00, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x25, 0x3d, 0x26, 0x24, 0x3c,
-+ 0x24, 0x26, 0x3c, 0x64, 0x05, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x40, 0x60,
-+ 0x60, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d,
-+ 0x25, 0x25, 0x25, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x09, 0x1d, 0x23, 0x41, 0x0f,
-+ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xe0,
-+ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x7d, 0x02, 0x3a, 0x07, 0x39,
-+ 0x05, 0x3b, 0x2a, 0x2b, 0x3c, 0x28, 0x00, 0x00,
-+ 0x00, 0x0c, 0xf0, 0x10, 0x50, 0x50, 0x5c, 0x50,
-+ 0x50, 0x50, 0xfc, 0x00, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x1b, 0x0d, 0x71, 0x00, 0x00,
-+ 0x40, 0xb8, 0x28, 0x28, 0xe8, 0x4c, 0x04, 0xf8,
-+ 0x48, 0x28, 0xf0, 0x10, 0x28, 0xc4, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x24, 0x22,
-+ 0x22, 0x20, 0x20, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x17, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x11,
-+ 0x15, 0x19, 0x61, 0x01, 0x00, 0x0f, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7a, 0x09, 0x0b, 0x7a, 0x4b, 0x42, 0x7b,
-+ 0x48, 0x4f, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x88, 0x48, 0x10, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x65, 0x55, 0x56, 0x44, 0x7f, 0x4c,
-+ 0x4e, 0x55, 0x65, 0x44, 0x7f, 0x40, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0x40, 0x40, 0x7c, 0xc8, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x07, 0x7a, 0x49, 0x4b, 0x48, 0x7f, 0x48,
-+ 0x49, 0x49, 0x7a, 0x4c, 0x09, 0x16, 0x00, 0x00,
-+ 0x1c, 0xe4, 0x48, 0x30, 0xf8, 0x80, 0xfc, 0x80,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x17, 0x13, 0x7e, 0x12, 0x12, 0x3b, 0x35,
-+ 0x35, 0x51, 0x51, 0x11, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x06, 0x38, 0x20, 0x20, 0x3c, 0x21, 0x22, 0x3d,
-+ 0x20, 0x20, 0x3c, 0x60, 0x20, 0x23, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x94, 0x14, 0x0c, 0xf8,
-+ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x20, 0x28, 0xa8, 0xb0, 0x20, 0x50, 0x88, 0x24,
-+ 0xa4, 0xa8, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x15, 0x35, 0x55, 0x15,
-+ 0x15, 0x15, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x3f, 0x28, 0x48, 0x08, 0x7f,
-+ 0x08, 0x0c, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x00, 0x12, 0x12, 0x12, 0x7e, 0x13, 0x16, 0x12,
-+ 0x12, 0x16, 0x1a, 0x62, 0x02, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x78, 0xc8, 0x48, 0x48,
-+ 0x48, 0x70, 0x40, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7c, 0x04, 0x04, 0x3c, 0x24, 0x23, 0x3c,
-+ 0x24, 0x24, 0x04, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa8, 0xb8, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0xb8, 0xa0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x24, 0x25, 0x3d,
-+ 0x25, 0x26, 0x3e, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x20, 0x10, 0x10, 0x40, 0x40, 0x40, 0x48, 0x44,
-+ 0x44, 0x44, 0x40, 0x48, 0x48, 0x38, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x24, 0x7f, 0x0c, 0x0a, 0x12,
-+ 0x2f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x10, 0x0a, 0x0a, 0x42, 0x22, 0x23, 0x0e, 0x02,
-+ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x78, 0xc8, 0x48, 0x48,
-+ 0x48, 0x70, 0x40, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x4a, 0x2a, 0x2b, 0x0d, 0x19,
-+ 0x2f, 0x49, 0x11, 0x12, 0x24, 0x48, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x28, 0x28,
-+ 0xe8, 0x28, 0x28, 0xb8, 0xa8, 0x00, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x09, 0x0b, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x7f, 0x07, 0x24,
-+ 0x27, 0x27, 0x24, 0x27, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x80, 0xfc, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x14, 0x23, 0x7f, 0x0a, 0x08,
-+ 0x3e, 0x08, 0x08, 0x0e, 0x71, 0x06, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x56, 0x56, 0x54, 0x7f,
-+ 0x50, 0x18, 0x15, 0x1f, 0x62, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xe8, 0xa8, 0xa8, 0xa8, 0xe8,
-+ 0xa8, 0xa8, 0x68, 0x78, 0x28, 0x00, 0x00, 0x00,
-+ 0x00, 0x27, 0x14, 0x17, 0x05, 0x04, 0x77, 0x14,
-+ 0x15, 0x14, 0x1b, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x10, 0xa0, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa8, 0xb8, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xb8, 0xa0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x7e, 0x08, 0x0e, 0x71,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf0, 0x90, 0xd4, 0x2c,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x1c, 0x05, 0x03, 0x7e,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0xc0, 0x20, 0xf0, 0x08,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x1f, 0x14, 0x25, 0x44,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x42, 0x7f, 0x11,
-+ 0x11, 0x11, 0x1e, 0x72, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x90, 0x50, 0x50, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x7f, 0x02, 0x0c, 0x03, 0x7f,
-+ 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xc0, 0x30, 0xc8,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x11, 0x0e, 0x01, 0x76, 0x10,
-+ 0x13, 0x1c, 0x10, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x88, 0xc8, 0x50, 0x60, 0xd0,
-+ 0x48, 0x44, 0x44, 0x80, 0x00, 0xfc, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7e, 0x09, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x44, 0x08, 0x3f, 0x02, 0x04,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x90, 0x70, 0xf8, 0x40, 0x70,
-+ 0x88, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x19, 0x61,
-+ 0x1f, 0x01, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0x30, 0x0c,
-+ 0xf0, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x11, 0x78, 0x2b, 0x2a, 0x2b,
-+ 0x2a, 0x7a, 0x5a, 0x16, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xe8, 0xa8, 0xe8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x0f, 0x0c,
-+ 0x17, 0x14, 0x27, 0x44, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x21, 0x21,
-+ 0x3f, 0x21, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x14, 0x34, 0x54, 0x14,
-+ 0x17, 0x14, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x44, 0x44, 0x44, 0x44,
-+ 0xfc, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x41, 0x01, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x12, 0x12, 0x1e,
-+ 0x73, 0x12, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x17, 0x14,
-+ 0x27, 0x44, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0x40, 0xe0, 0x50,
-+ 0xc8, 0x44, 0xc0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1b,
-+ 0x2a, 0x28, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x00, 0x13,
-+ 0x10, 0x10, 0x20, 0x20, 0x4f, 0x40, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f,
-+ 0x11, 0x01, 0x01, 0x01, 0x7e, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x20, 0x10, 0xf8, 0x04, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x03, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0x08, 0xb0, 0xc0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3f,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x08, 0x88, 0x08, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x48,
-+ 0xfc, 0x48, 0xa8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x17, 0x13, 0x39, 0x34,
-+ 0x37, 0x50, 0x50, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0xf0, 0x00,
-+ 0xfc, 0x80, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x20, 0x1f, 0x12, 0x42, 0x26, 0x2a, 0x03, 0x17,
-+ 0x1b, 0x22, 0x26, 0x5a, 0x42, 0x4c, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xb0, 0xfc, 0x20, 0x78,
-+ 0xc8, 0xf8, 0xc8, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x04, 0x44, 0x2b, 0x10, 0x30, 0x4f, 0x08, 0x19,
-+ 0x2b, 0x4d, 0x09, 0x09, 0x31, 0x11, 0x00, 0x00,
-+ 0x80, 0x88, 0xf8, 0x90, 0xa0, 0xfc, 0x80, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x20, 0x40,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x08, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x09, 0x01, 0x1f, 0x01, 0x7f, 0x01,
-+ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0x08, 0xf0, 0x20, 0xfc, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3e, 0x24, 0x3d, 0x24,
-+ 0x24, 0x3c, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x24, 0x14, 0x14, 0x04, 0x06,
-+ 0x0c, 0x78, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0xa0,
-+ 0x90, 0x90, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x07, 0x44, 0x24, 0x27, 0x04, 0x17, 0x14,
-+ 0x25, 0x25, 0x45, 0x49, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xe8, 0x88, 0xf8, 0x08,
-+ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x49, 0x49, 0x49, 0x49, 0x48,
-+ 0x4f, 0x78, 0x49, 0x46, 0x18, 0x00, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x70, 0x00, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x3f, 0x28, 0x7f, 0x14, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x78, 0x40, 0x78, 0x08, 0x78,
-+ 0x40, 0x78, 0x78, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x54, 0x54, 0x54, 0x55,
-+ 0x55, 0x5d, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x57,
-+ 0x55, 0x5d, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x48, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x3f, 0x22, 0x22, 0x3f,
-+ 0x22, 0x22, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x79, 0x09, 0x09, 0x79, 0x49, 0x41, 0x7f,
-+ 0x49, 0x49, 0x09, 0x09, 0x11, 0x66, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x48, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x2e, 0x24, 0x3f, 0x20,
-+ 0x2e, 0x2a, 0x2a, 0x2e, 0x2a, 0x41, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xa0, 0xc8, 0x88, 0x90, 0x90,
-+ 0xa4, 0x84, 0x88, 0x88, 0x90, 0xa0, 0x00, 0x00,
-+ 0x12, 0x1a, 0x2a, 0x4a, 0x1f, 0x10, 0x2f, 0x62,
-+ 0x22, 0x2f, 0x22, 0x23, 0x2c, 0x20, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x48, 0xc8, 0x28,
-+ 0x28, 0xb0, 0x10, 0xb0, 0x48, 0x84, 0x00, 0x00,
-+ 0x22, 0x2a, 0x4f, 0x10, 0x3f, 0x52, 0x17, 0x13,
-+ 0x1c, 0x01, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x20, 0xa0, 0xbc, 0x48, 0xa8, 0x28, 0x90, 0xb0,
-+ 0x48, 0x04, 0x90, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7e, 0x11, 0x11, 0x10, 0x1d,
-+ 0x72, 0x14, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x7d, 0x54, 0x7f,
-+ 0x55, 0x53, 0x14, 0x11, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x29, 0x0f, 0x19,
-+ 0x1f, 0x22, 0x3f, 0x42, 0x42, 0x43, 0x00, 0x00,
-+ 0x00, 0x78, 0xc8, 0x48, 0x48, 0x78, 0x48, 0x48,
-+ 0x78, 0x48, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x29, 0x29, 0x2b, 0x29, 0x3d, 0x21, 0x21, 0x39,
-+ 0x28, 0x2f, 0x28, 0x29, 0x2e, 0x48, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x50, 0x70, 0x00, 0xf8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x24,
-+ 0x24, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x4a, 0x79, 0x49, 0x48, 0x79,
-+ 0x4e, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x7c, 0x2b, 0x28, 0x3b, 0x2a, 0x2a, 0x3b,
-+ 0x2a, 0x2c, 0x3a, 0x6a, 0x0c, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x48, 0xa0, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3f,
-+ 0x24, 0x24, 0x24, 0x24, 0x24, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xfc,
-+ 0xc8, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x24, 0x27,
-+ 0x3d, 0x25, 0x26, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00,
-+ 0xa8, 0xa8, 0xfc, 0xa8, 0xa8, 0xb8, 0x80, 0xfc,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x08,
-+ 0xe8, 0xa8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x3d, 0x03, 0x7d, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x00, 0x3f, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x50, 0x70, 0x00, 0xf8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x3e, 0x08, 0x08, 0x7e, 0x09, 0x28,
-+ 0x2e, 0x28, 0x38, 0x28, 0x46, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xb0, 0x00, 0xf8,
-+ 0x88, 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x26, 0x3d, 0x09, 0x28, 0x2d,
-+ 0x2a, 0x28, 0x2d, 0x39, 0x62, 0x04, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0x54, 0xd4, 0xd8, 0x50, 0xd8,
-+ 0x54, 0x54, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x7f,
-+ 0x09, 0x08, 0x08, 0x08, 0x0f, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xfc,
-+ 0x10, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11,
-+ 0x11, 0x11, 0x11, 0x10, 0x33, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x0f,
-+ 0x08, 0x0f, 0x29, 0x24, 0x24, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc,
-+ 0x00, 0xfc, 0x24, 0x94, 0x04, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x2a, 0x2a, 0x3e,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x17, 0x11, 0x1d,
-+ 0x72, 0x14, 0x10, 0x10, 0x11, 0x3e, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x50, 0x48,
-+ 0x54, 0xd4, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x00, 0x27, 0x24, 0x27, 0x24,
-+ 0x27, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x3d, 0x24, 0x24, 0x3f, 0x24, 0x24, 0x3f,
-+ 0x24, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x08, 0x08, 0x90, 0xa0, 0xf8, 0x40, 0x40, 0xfc,
-+ 0x40, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x23, 0x22, 0x04, 0x10,
-+ 0x10, 0x20, 0x20, 0x41, 0x42, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x60,
-+ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x10, 0x11, 0x12, 0x7c, 0x13,
-+ 0x10, 0x11, 0x1c, 0x60, 0x00, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x48, 0x84, 0x20,
-+ 0x40, 0x88, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x04, 0x19, 0x77, 0x10, 0x13, 0x1f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x30, 0xc0, 0xfc, 0x40, 0xf8, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x28, 0x2b, 0x32, 0x2b, 0x26,
-+ 0x27, 0x24, 0x39, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x27, 0x20, 0x03, 0x10,
-+ 0x13, 0x10, 0x27, 0x20, 0x40, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x3c, 0x2b, 0x30, 0x2f, 0x24, 0x27, 0x38,
-+ 0x23, 0x21, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0xc8, 0x68, 0xb0, 0x70, 0xa8,
-+ 0x24, 0xc0, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1b, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7d, 0x10, 0x10, 0x3b, 0x35,
-+ 0x35, 0x51, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x48, 0x78, 0x40, 0x78,
-+ 0x48, 0x48, 0x78, 0x48, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x20, 0x13, 0x12, 0x02, 0x03, 0x72, 0x13,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x12, 0x19, 0x25, 0x24, 0x78, 0x13, 0x7d,
-+ 0x11, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x48, 0x78, 0x40, 0x78,
-+ 0x48, 0x48, 0x78, 0x48, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x29, 0x08, 0x1b,
-+ 0x2a, 0x4b, 0x12, 0x13, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x20, 0xc0, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x27, 0x11, 0x10, 0x03, 0x02, 0x73, 0x12,
-+ 0x13, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0xc0, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x48, 0x48, 0x58, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x17, 0x7c, 0x11, 0x16, 0x10,
-+ 0x13, 0x1c, 0x61, 0x06, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x40, 0xc8, 0x68, 0xb0,
-+ 0x30, 0x68, 0xa4, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x0b, 0x0a, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0x88, 0xfc, 0x08,
-+ 0x48, 0x28, 0x08, 0xfc, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x12, 0x13, 0x1e,
-+ 0x72, 0x12, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x68, 0x58, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1a, 0x37, 0x36,
-+ 0x32, 0x53, 0x52, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xc8, 0x78, 0x48, 0xf8, 0x48,
-+ 0x48, 0x78, 0xb0, 0xb4, 0x54, 0x8c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x32, 0x53, 0x12,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x41, 0x20, 0x27, 0x01, 0x11,
-+ 0x11, 0x11, 0x21, 0x21, 0x41, 0x46, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2b, 0x29, 0x4a, 0x0c, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x80, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x10, 0x00, 0x07, 0x70, 0x10,
-+ 0x10, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xfc, 0x00, 0xfc, 0x24, 0x94, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x65, 0x18, 0x11, 0x2a, 0x7f,
-+ 0x1a, 0x35, 0x34, 0x31, 0x52, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xb0, 0x90, 0x68, 0x48, 0xf8,
-+ 0x48, 0x68, 0xb0, 0x90, 0x28, 0x44, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x18, 0x37, 0x35,
-+ 0x33, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xf0, 0xa0, 0xfc, 0x10,
-+ 0xf8, 0x14, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x20, 0x2f, 0x03, 0x12,
-+ 0x13, 0x13, 0x22, 0x23, 0x43, 0x4c, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xf0, 0x80, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x12, 0x7d, 0x11, 0x10, 0x17,
-+ 0x10, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x22, 0x5f,
-+ 0x12, 0x1f, 0x12, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x88, 0xf0,
-+ 0x90, 0xf0, 0x90, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x13, 0x7f, 0x2b, 0x28, 0x2f,
-+ 0x28, 0x73, 0x5a, 0x16, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0x40, 0xfc,
-+ 0x40, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x64, 0x1b, 0x1a, 0x26, 0x7e,
-+ 0x13, 0x1a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x10, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x10, 0x10, 0x10, 0x08, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x01, 0x3f,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x88, 0x88, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x52, 0x14, 0x28, 0x3e, 0x68,
-+ 0x3e, 0x28, 0x3e, 0x29, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f,
-+ 0x20, 0x5f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x52, 0x12,
-+ 0x12, 0x13, 0x1c, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0x40, 0x40, 0xfc, 0x20, 0x20,
-+ 0x20, 0x90, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x11, 0x11, 0x31, 0x50, 0x17,
-+ 0x14, 0x1b, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xf8, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x13, 0x32, 0x53, 0x12,
-+ 0x13, 0x12, 0x13, 0x11, 0x16, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x80, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x20, 0x10, 0x08, 0x00, 0x00,
-+ 0x22, 0x12, 0x14, 0x7f, 0x09, 0x7f, 0x48, 0x7f,
-+ 0x59, 0x19, 0x2e, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x3f, 0x01,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xf8, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x10, 0x17,
-+ 0x10, 0x1e, 0x62, 0x03, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x3f, 0x01, 0x09,
-+ 0x09, 0x09, 0x09, 0x15, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x3f, 0x21, 0x5f,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x08, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x13, 0x12, 0x12, 0x13,
-+ 0x12, 0x12, 0x13, 0x1c, 0x27, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x30, 0xc0, 0x40, 0x40, 0xfc,
-+ 0x20, 0x20, 0x90, 0x14, 0xec, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1e, 0x12, 0x14, 0x1f,
-+ 0x12, 0x1a, 0x14, 0x26, 0x29, 0x50, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x18, 0xe0, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0xf8, 0x00, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x08, 0x10, 0x10, 0x3f, 0x08,
-+ 0x48, 0x28, 0x13, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x3f, 0x21, 0x3f,
-+ 0x23, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x1b, 0x34, 0x37, 0x32, 0x53,
-+ 0x12, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d,
-+ 0x71, 0x11, 0x16, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0xd0, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7a, 0x12, 0x17, 0x11, 0x1d,
-+ 0x75, 0x12, 0x12, 0x15, 0x18, 0x30, 0x00, 0x00,
-+ 0x00, 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0xf8, 0x00, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x10, 0x1f,
-+ 0x70, 0x12, 0x12, 0x13, 0x14, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x09, 0x08, 0x08, 0x7f, 0x08, 0x1b, 0x1e, 0x1b,
-+ 0x2a, 0x28, 0x49, 0x0a, 0x0c, 0x08, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x40, 0x20, 0x20, 0x00, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x11, 0x12, 0x3f, 0x24, 0x64,
-+ 0x24, 0x24, 0x3c, 0x25, 0x22, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x09, 0x09, 0x11, 0x19,
-+ 0x35, 0x55, 0x11, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x0d, 0x39, 0x09, 0x09, 0x7e, 0x09, 0x1c,
-+ 0x1a, 0x2b, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x65, 0x28, 0x1b, 0x22, 0x7c,
-+ 0x13, 0x3a, 0x36, 0x36, 0x52, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x48, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00,
-+ 0x08, 0x13, 0x3c, 0x25, 0x35, 0x2f, 0x2c, 0x7e,
-+ 0x26, 0x2d, 0x2d, 0x2e, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0x8c, 0xf0, 0x10, 0x10, 0x90, 0xfc, 0x90,
-+ 0x90, 0x10, 0x7c, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3d, 0x01, 0x3e,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x24, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x29, 0x09, 0x2f,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x28, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x27, 0x14, 0x17, 0x04, 0x07, 0x04, 0x77,
-+ 0x1a, 0x1a, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0x40, 0xfc, 0x40, 0xf8,
-+ 0x48, 0x48, 0x70, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x03, 0x3c, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x24,
-+ 0x22, 0x3a, 0x61, 0x00, 0x7e, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0xe0, 0x50, 0x48,
-+ 0x44, 0xc4, 0xe4, 0xd8, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x0a, 0x7f, 0x0c, 0x3f, 0x2f, 0x33, 0x3f,
-+ 0x3f, 0x04, 0x7f, 0x0a, 0x11, 0x20, 0x00, 0x00,
-+ 0x00, 0x78, 0xc8, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0xe4, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x07, 0x24, 0x27, 0x27, 0x24, 0x27, 0x3e,
-+ 0x02, 0x7e, 0x12, 0x12, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xc0, 0x48, 0xc8, 0xc8, 0x48, 0xc8, 0xf8,
-+ 0x80, 0xfc, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x02,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x80, 0x98,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7d, 0x10, 0x13, 0x12, 0x1f,
-+ 0x72, 0x12, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x11, 0x1f,
-+ 0x76, 0x13, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20, 0xf8,
-+ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x49, 0x7f,
-+ 0x49, 0x5d, 0x55, 0x5d, 0x41, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x7c, 0x90, 0x90, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x42, 0x21, 0x27, 0x04, 0x17,
-+ 0x14, 0x15, 0x25, 0x25, 0x45, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xe8, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x7c, 0x45, 0x45, 0x46, 0x7c,
-+ 0x44, 0x44, 0x44, 0x7c, 0x40, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x41, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x20, 0x17, 0x10, 0x03, 0x02, 0x73, 0x12,
-+ 0x12, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x25, 0x24, 0x7b, 0x12, 0x7f,
-+ 0x12, 0x56, 0x3a, 0x32, 0x1e, 0x62, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x27, 0x24, 0x07, 0x10,
-+ 0x14, 0x13, 0x22, 0x24, 0x40, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x40, 0xf8, 0x88,
-+ 0xc8, 0xb8, 0xa8, 0xc8, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x0e, 0x78, 0x09, 0x1a,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x10, 0x10,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x11, 0x11, 0x2f, 0x4b, 0x0a, 0x1f, 0x10, 0x37,
-+ 0x54, 0x17, 0x14, 0x17, 0x14, 0x15, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xc8, 0x48, 0xa8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7b, 0x12, 0x1f, 0x10, 0x1f,
-+ 0x74, 0x17, 0x14, 0x17, 0x14, 0x35, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xc8, 0x48, 0xa8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x11, 0x11, 0x7f, 0x11, 0x7e, 0x57, 0x7c, 0x57,
-+ 0x7e, 0x13, 0x7e, 0x13, 0x12, 0x12, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xbc, 0xc8, 0x68, 0xa8,
-+ 0xa8, 0x90, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x22, 0x12, 0x13, 0x04, 0x08, 0x7f, 0x10,
-+ 0x10, 0x11, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xc0,
-+ 0xa0, 0x10, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x12,
-+ 0x12, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x90,
-+ 0x90, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x10, 0x7d, 0x11, 0x11, 0x11,
-+ 0x11, 0x1d, 0x61, 0x07, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x90, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x3f, 0x01, 0x03,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x80,
-+ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x12, 0x1f, 0x12,
-+ 0x1f, 0x12, 0x12, 0x22, 0x23, 0x5c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40, 0xf8, 0x40,
-+ 0xfc, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x17, 0x14, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x80, 0xfc, 0x80, 0x80,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x47, 0x20, 0x21, 0x02, 0x14,
-+ 0x12, 0x12, 0x24, 0x28, 0x40, 0x41, 0x00, 0x00,
-+ 0x38, 0xc0, 0x40, 0xfc, 0xa0, 0x10, 0x88, 0x84,
-+ 0xd0, 0xa8, 0xa4, 0xa4, 0x80, 0x80, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2a, 0x1a, 0x26, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x36, 0x52, 0x15, 0x00, 0x00,
-+ 0x20, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf8,
-+ 0xfc, 0xb4, 0x2c, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x50, 0x48, 0x78, 0xc4, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x22, 0x3e, 0x3e,
-+ 0x22, 0x3e, 0x7f, 0x0c, 0x12, 0x63, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x0f, 0x08, 0x08, 0x08,
-+ 0x0f, 0x08, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x20, 0x20, 0x20,
-+ 0xe0, 0x20, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x10, 0x37, 0x50, 0x10,
-+ 0x10, 0x11, 0x11, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80,
-+ 0xa0, 0x10, 0x08, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x2a, 0x2a, 0x3f,
-+ 0x2a, 0x3f, 0x2c, 0x4a, 0x52, 0x23, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x8c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x20, 0x1f, 0x18, 0x08, 0x4f, 0x2a, 0x2a, 0x0f,
-+ 0x1a, 0x1a, 0x2f, 0x2b, 0x54, 0x48, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xac, 0xc4, 0xfc,
-+ 0xa8, 0xa8, 0xd0, 0x30, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x3f, 0x21,
-+ 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x01, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x13, 0x03, 0x05, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x40, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x4b, 0x48, 0x48, 0x48,
-+ 0x48, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x7c, 0x17, 0x10, 0x11,
-+ 0x17, 0x1d, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x60, 0xfc, 0x40, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x30, 0x08, 0x61, 0x17, 0x00, 0x0f, 0x11, 0x26,
-+ 0x21, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xa0, 0x10, 0xfc, 0x40, 0xfc, 0x50, 0x48,
-+ 0xc0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x25, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x40, 0x40, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x10, 0x1f,
-+ 0x11, 0x17, 0x19, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0xf0, 0xa0, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x48, 0x08, 0x17, 0x10, 0x32,
-+ 0x52, 0x12, 0x12, 0x15, 0x18, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x0c, 0x02, 0x00, 0x18, 0x04, 0x00, 0x00,
-+ 0x07, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x19, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x27, 0x24, 0x04, 0x14,
-+ 0x17, 0x15, 0x24, 0x28, 0x49, 0x56, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0x00,
-+ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x0e, 0x02, 0x24, 0x14, 0x08, 0x1f, 0x20, 0x4f,
-+ 0x08, 0x0f, 0x04, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0x90, 0x90, 0x64, 0x44, 0x28, 0xf0, 0x08, 0xe4,
-+ 0x20, 0xe0, 0x40, 0x80, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x18, 0x7f, 0x11,
-+ 0x11, 0x1f, 0x13, 0x05, 0x19, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x80, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x44, 0x24, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x3c, 0x24,
-+ 0x25, 0x3e, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x40, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x20, 0x11, 0x11, 0x02, 0x0f, 0x70, 0x1f,
-+ 0x12, 0x12, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0xf8, 0x84, 0xf8,
-+ 0xa0, 0x90, 0x88, 0x88, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x09, 0x0a, 0x7f, 0x08, 0x1f,
-+ 0x31, 0x5f, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0xe0, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x23, 0x7d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x1a, 0x0e, 0x75, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0xfc, 0x50, 0x70, 0x00,
-+ 0xf8, 0x48, 0x50, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x21, 0x3d, 0x65,
-+ 0x25, 0x25, 0x27, 0x3c, 0x25, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x10, 0xd0, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3e, 0x22, 0x24, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x20, 0x20, 0x38,
-+ 0x28, 0x28, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x12, 0x12, 0x3c, 0x06, 0x19,
-+ 0x61, 0x3f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x48, 0x50, 0x20, 0xd0, 0x0c,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x13, 0x10,
-+ 0x17, 0x12, 0x11, 0x20, 0x23, 0x5c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xe0, 0x00,
-+ 0xf0, 0x20, 0x40, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x48, 0x50, 0x50,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x04, 0x1b,
-+ 0x61, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x0f, 0x09, 0x11, 0x12, 0x3f, 0x51, 0x11,
-+ 0x17, 0x11, 0x11, 0x11, 0x1e, 0x10, 0x00, 0x00,
-+ 0x08, 0xe8, 0x28, 0xa8, 0x68, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x28, 0x28, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x08,
-+ 0x0f, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0x20,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x01, 0x03, 0x0c, 0x32, 0x01, 0x03, 0x0c,
-+ 0x73, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x20, 0x40, 0x80, 0x40, 0x30,
-+ 0x0c, 0x80, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x27, 0x10, 0x13, 0x02, 0x0b, 0x0a,
-+ 0x13, 0x10, 0x21, 0x22, 0x2c, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x10, 0x17,
-+ 0x10, 0x17, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90, 0xf0,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x11, 0x17, 0x11, 0x7d, 0x10, 0x11, 0x17,
-+ 0x14, 0x1b, 0x62, 0x02, 0x03, 0x02, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x50, 0xa0, 0x10, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x13, 0x12, 0x13,
-+ 0x12, 0x1f, 0x65, 0x05, 0x09, 0x11, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x1f, 0x64, 0x07, 0x04,
-+ 0x07, 0x04, 0x7f, 0x02, 0x04, 0x3f, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0xf0, 0x0c, 0xc0, 0x00,
-+ 0xc0, 0x00, 0xfc, 0x80, 0x60, 0x90, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x7f, 0x04, 0x04,
-+ 0x0f, 0x0c, 0x14, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x22, 0x22, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x00, 0xfc, 0x24, 0x24, 0xe4, 0x38, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x7d, 0x47, 0x42, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x18, 0x37, 0x36, 0x33, 0x52,
-+ 0x13, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x12, 0x14, 0x1f,
-+ 0x71, 0x11, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0xf0,
-+ 0x10, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x10, 0x1b, 0x15,
-+ 0x30, 0x53, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x50, 0xa0, 0x18, 0xf4,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7e, 0x11, 0x39, 0x34, 0x35,
-+ 0x56, 0x50, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x10, 0x3f, 0x34,
-+ 0x37, 0x51, 0x52, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x12, 0x3b, 0x36,
-+ 0x37, 0x50, 0x51, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x21, 0x11, 0x02, 0x0a, 0x14, 0x21, 0x22,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x50, 0xa0, 0x10, 0x0c,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x43, 0x23, 0x25, 0x0a, 0x17,
-+ 0x10, 0x12, 0x22, 0x23, 0x42, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x88, 0xf8,
-+ 0x88, 0xa8, 0xa8, 0xe8, 0x28, 0x30, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x00, 0x1f,
-+ 0x12, 0x23, 0x24, 0x49, 0x42, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x20, 0x07, 0x08,
-+ 0x0f, 0x11, 0x12, 0x24, 0x28, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x48,
-+ 0x08, 0x0c, 0x12, 0x12, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x11, 0x10, 0x16, 0x15, 0x39, 0x32, 0x35, 0x51,
-+ 0x11, 0x19, 0x14, 0x24, 0x27, 0x40, 0x00, 0x00,
-+ 0xc8, 0x48, 0xb0, 0xa4, 0xf8, 0x08, 0xf4, 0x10,
-+ 0xf0, 0x10, 0x90, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x11, 0x09, 0x09, 0x01, 0x3f, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x20, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x0b, 0x1a,
-+ 0x2a, 0x4b, 0x12, 0x11, 0x21, 0x4f, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x05, 0x08, 0x0b, 0x14,
-+ 0x37, 0x51, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x90,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x01, 0x3f,
-+ 0x00, 0x7f, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x42, 0x04, 0x1f,
-+ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x90, 0x80, 0x40, 0xf0,
-+ 0x0c, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x5f, 0x10, 0x17,
-+ 0x10, 0x13, 0x12, 0x12, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x08, 0xe8,
-+ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x3b, 0x12, 0x7f, 0x12, 0x1b,
-+ 0x36, 0x37, 0x53, 0x15, 0x15, 0x19, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0x50, 0x98, 0xe4, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x0c, 0x12, 0x7d, 0x09, 0x08,
-+ 0x7f, 0x08, 0x08, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x7f, 0x0f, 0x09, 0x0f,
-+ 0x09, 0x0f, 0x3f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x80, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x11, 0x09, 0x49, 0x21, 0x21,
-+ 0x0f, 0x09, 0x13, 0x1c, 0x23, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0x00, 0xf8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x39, 0x28, 0x2b, 0x38, 0x2f,
-+ 0x29, 0x3b, 0x2c, 0x2b, 0x28, 0x58, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x50, 0xe0, 0xf8, 0xa0, 0xfc,
-+ 0x50, 0x58, 0xe4, 0x50, 0x48, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3c, 0x01, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x02, 0x3d, 0x27, 0x24, 0x3f, 0x25, 0x26, 0x27,
-+ 0x3c, 0x24, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x48, 0x50, 0xf8, 0xa0, 0xfc, 0x10, 0xf8, 0xfc,
-+ 0xf0, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10,
-+ 0x08, 0x04, 0x04, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x20, 0x20, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x29, 0x08, 0x2e,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x70, 0xa8, 0x24, 0x60, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x20, 0x14, 0x12, 0x02, 0x00, 0x71, 0x12,
-+ 0x1d, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0x28, 0x24, 0x24, 0x1c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x23, 0x10, 0x17, 0x00, 0x01, 0x77, 0x10,
-+ 0x10, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0xec, 0xa0,
-+ 0xb8, 0x28, 0x08, 0x30, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5d, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0xe8, 0x68, 0x74, 0x94, 0xf8, 0x08, 0xfc, 0x88,
-+ 0xf8, 0x90, 0x50, 0x60, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x79, 0x49, 0x53, 0x65, 0x59, 0x4a, 0x4f,
-+ 0x48, 0x4a, 0x72, 0x43, 0x42, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x88, 0xf8,
-+ 0x88, 0xa8, 0xa8, 0xe8, 0x28, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22,
-+ 0x12, 0x14, 0x08, 0x0e, 0x71, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x02, 0x39, 0x2b, 0x28, 0x2f, 0x39, 0x2b, 0x2d,
-+ 0x39, 0x29, 0x29, 0x2b, 0x2a, 0x5c, 0x00, 0x00,
-+ 0x48, 0x50, 0xf8, 0xa0, 0xfc, 0xf0, 0x48, 0xf4,
-+ 0xf0, 0x40, 0xfc, 0x54, 0xac, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x3f,
-+ 0x2f, 0x2a, 0x2e, 0x2a, 0x27, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x28, 0x28,
-+ 0xf8, 0xa8, 0xa8, 0x28, 0x28, 0x78, 0x00, 0x00,
-+ 0x11, 0x1e, 0x12, 0x3f, 0x2f, 0x6a, 0x2f, 0x2a,
-+ 0x2f, 0x22, 0x2f, 0x22, 0x23, 0x2c, 0x00, 0x00,
-+ 0xa0, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0x28, 0xa8, 0x28, 0xc8, 0x98, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x3e, 0x08, 0x0f, 0x72, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x40, 0x40, 0x5f, 0x40, 0x4f, 0x48,
-+ 0x48, 0x48, 0x4f, 0x48, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0x08, 0xc8, 0x48,
-+ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x21, 0x1f, 0x10, 0x03, 0x72, 0x13, 0x13, 0x1a,
-+ 0x67, 0x03, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0xf0, 0x10,
-+ 0xf0, 0xf8, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x17, 0x3b, 0x36, 0x37, 0x52,
-+ 0x13, 0x10, 0x13, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7f, 0x13, 0x12, 0x13, 0x16,
-+ 0x1b, 0x70, 0x13, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0c, 0x44, 0x27, 0x24, 0x05, 0x15,
-+ 0x15, 0x15, 0x25, 0x24, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0x28,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7b, 0x49, 0x4f, 0x7b, 0x4a, 0x4b, 0x7a,
-+ 0x4b, 0x48, 0x7b, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x04, 0x7f, 0x0f, 0x09, 0x0f, 0x09,
-+ 0x0f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d,
-+ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0x04, 0xfc, 0x04, 0x74, 0x54,
-+ 0x54, 0x54, 0x74, 0x44, 0x04, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x0c, 0x08, 0x1f, 0x24, 0x4f,
-+ 0x12, 0x3f, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x08, 0xe8, 0x48, 0x48, 0xc8, 0x30, 0x00, 0x00,
-+ 0x02, 0x21, 0x1f, 0x10, 0x03, 0x02, 0x73, 0x12,
-+ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8,
-+ 0xa8, 0xa8, 0xe8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x10, 0x54, 0x57, 0x54, 0x57,
-+ 0x54, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc,
-+ 0x60, 0x50, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x20, 0x26, 0x39, 0x21, 0x23, 0x1f, 0x11, 0x11,
-+ 0x7f, 0x11, 0x11, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x2f, 0x22, 0x21, 0x3f, 0x22,
-+ 0x27, 0x2a, 0x33, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0x00, 0xf8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x21, 0x49, 0x09, 0x11, 0x10, 0x37,
-+ 0x50, 0x17, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x10, 0xfc, 0x10, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x27, 0x48, 0x0b, 0x12, 0x12, 0x33,
-+ 0x53, 0x10, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x08, 0xd0, 0x28, 0x04, 0x14, 0xf0, 0x00, 0x00,
-+ 0x20, 0x10, 0x17, 0x40, 0x23, 0x20, 0x03, 0x12,
-+ 0x14, 0x10, 0x20, 0x21, 0x42, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x08,
-+ 0xa0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x2b, 0x28, 0x3c, 0x2b, 0x28, 0x48,
-+ 0x0f, 0x79, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x7f, 0x2a, 0x29, 0x5f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0xec, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x80, 0xf0, 0x80,
-+ 0xf0, 0x80, 0xfc, 0x24, 0x94, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x0f,
-+ 0x09, 0x7f, 0x09, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xc0, 0x00, 0x00,
-+ 0x04, 0x44, 0x28, 0x13, 0x32, 0x4a, 0x0a, 0x1b,
-+ 0x2a, 0x48, 0x08, 0x08, 0x37, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8,
-+ 0x48, 0x50, 0x48, 0x78, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3c, 0x01, 0x3d,
-+ 0x02, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x08,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x2a, 0x4a, 0x0c, 0x09, 0x0a, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x78,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x11, 0x16, 0x7f, 0x12, 0x13, 0x38, 0x35,
-+ 0x36, 0x51, 0x56, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x80, 0xf0, 0x40, 0xf8, 0x48, 0xf8, 0x80, 0xe8,
-+ 0x68, 0xb0, 0x68, 0xa4, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x3c, 0x24,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x78, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x11, 0x01,
-+ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x80, 0x88, 0x78, 0x00,
-+ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x3a, 0x37,
-+ 0x36, 0x52, 0x53, 0x16, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0xb8, 0x28, 0x28, 0xac, 0x4c, 0x04, 0xf8,
-+ 0x28, 0xa8, 0x10, 0x30, 0x48, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x18,
-+ 0x18, 0x1f, 0x28, 0x28, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x80, 0xf8, 0x88,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x04, 0x1f, 0x1f, 0x10, 0x1f,
-+ 0x1f, 0x10, 0x1f, 0x15, 0x25, 0x40, 0x00, 0x00,
-+ 0x10, 0xfc, 0x80, 0x40, 0xe4, 0xdc, 0x44, 0xc0,
-+ 0xf0, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x01, 0x01,
-+ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x5f, 0x01, 0x1f, 0x11,
-+ 0x1f, 0x11, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf0, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24,
-+ 0x28, 0x30, 0x3f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x98, 0x98,
-+ 0x78, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x24, 0x1f, 0x14, 0x4f, 0x24, 0x3f, 0x00, 0x1f,
-+ 0x19, 0x2f, 0x29, 0x4f, 0x49, 0x4b, 0x00, 0x00,
-+ 0x20, 0x20, 0x78, 0x90, 0x20, 0xf8, 0x28, 0xfc,
-+ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x02, 0x02, 0x73, 0x5e, 0x52, 0x5a, 0x5a, 0x5a,
-+ 0x7f, 0x5a, 0x4a, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x7c, 0x90, 0x20, 0xf8, 0xc8, 0xf8, 0xc8,
-+ 0xf8, 0xc8, 0x78, 0xb0, 0xa8, 0xc4, 0x00, 0x00,
-+ 0x02, 0x02, 0x03, 0x7e, 0x22, 0x22, 0x22, 0x22,
-+ 0x3f, 0x22, 0x22, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x30, 0xc0, 0x00, 0x20, 0x20, 0x20, 0x20,
-+ 0xe0, 0x20, 0x20, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x19, 0x35, 0x35, 0x30, 0x53,
-+ 0x10, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf0,
-+ 0x20, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x22, 0x3f, 0x00,
-+ 0x3e, 0x04, 0x0e, 0x78, 0x09, 0x1e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x22, 0x02, 0x0a,
-+ 0x0b, 0x0a, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc0, 0x48, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x27, 0x3c, 0x24, 0x27,
-+ 0x3c, 0x24, 0x27, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x88, 0x48, 0x70, 0xa0, 0x30,
-+ 0x70, 0xa8, 0x24, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x02, 0x02, 0x72, 0x12,
-+ 0x12, 0x14, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x0f, 0x78, 0x08, 0x2a, 0x2a, 0x2a,
-+ 0x2a, 0x3e, 0x28, 0x0a, 0x0a, 0x07, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x02, 0x04, 0x18,
-+ 0x6f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30,
-+ 0xec, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x0f, 0x08, 0x0f, 0x0f, 0x3f, 0x01, 0x3f, 0x2d,
-+ 0x4d, 0x1f, 0x00, 0x7f, 0x04, 0x3f, 0x00, 0x00,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0x00, 0xfc, 0x68,
-+ 0x60, 0xf0, 0x00, 0xfc, 0x60, 0x90, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x3c, 0xe0, 0x28, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x02, 0x04, 0x18, 0x67, 0x00,
-+ 0x3f, 0x01, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x80, 0x40, 0x30, 0xcc, 0x00,
-+ 0xf8, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x09, 0x3f, 0x09, 0x09, 0x3f,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x22, 0x22,
-+ 0x24, 0x28, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88, 0x48,
-+ 0x28, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x0f, 0x09, 0x11, 0x21, 0x41,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x11, 0x11, 0x15, 0x15, 0x15,
-+ 0x15, 0x15, 0x15, 0x3f, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xd0, 0x10,
-+ 0x10, 0x10, 0x14, 0xec, 0x0c, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x14, 0x10, 0x3e, 0x28, 0x49,
-+ 0x7e, 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x90, 0xfc, 0x90,
-+ 0xf8, 0x90, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x3a, 0x01, 0x7d, 0x00, 0x38, 0x07, 0x39,
-+ 0x01, 0x39, 0x29, 0x2b, 0x3c, 0x28, 0x00, 0x00,
-+ 0x20, 0x28, 0xa8, 0x70, 0x20, 0xfc, 0x70, 0x70,
-+ 0xa8, 0xa4, 0x20, 0x20, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x25, 0x15, 0x1f, 0x45, 0x2f, 0x2a, 0x0f, 0x12,
-+ 0x1f, 0x22, 0x2f, 0x43, 0x44, 0x58, 0x00, 0x00,
-+ 0x28, 0x28, 0xb0, 0x7c, 0xd0, 0xd0, 0xfc, 0x50,
-+ 0xd0, 0x7c, 0xd0, 0x50, 0xfc, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x13, 0x1c,
-+ 0x77, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xa0, 0x10, 0xf8, 0x04,
-+ 0xf8, 0x40, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xb8, 0xa8, 0xa8, 0xfc, 0x04,
-+ 0x74, 0x54, 0x54, 0x74, 0x04, 0x0c, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7f, 0x14, 0x13, 0x3a, 0x36,
-+ 0x36, 0x53, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8,
-+ 0xb8, 0x18, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x24, 0x7f,
-+ 0x12, 0x3b, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x03, 0x7c, 0x56, 0x55, 0x55, 0x7e, 0x57,
-+ 0x54, 0x56, 0x7d, 0x45, 0x42, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xa8, 0x10, 0xb0, 0x48, 0xf8,
-+ 0xa8, 0xa8, 0x10, 0x90, 0x68, 0x44, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x3f, 0x24, 0x22,
-+ 0x2f, 0x21, 0x2f, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x48, 0x88,
-+ 0xe8, 0x08, 0xe8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x13, 0x3a, 0x37,
-+ 0x36, 0x53, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x28, 0xc8, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0x48, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x3e, 0x2b, 0x3e, 0x08,
-+ 0x3e, 0x08, 0x7f, 0x14, 0x22, 0x40, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x27, 0x21, 0x01, 0x09,
-+ 0x0b, 0x0a, 0x10, 0x10, 0x21, 0x26, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x10, 0x10, 0x10,
-+ 0x90, 0x60, 0x20, 0x50, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x12, 0x12, 0x12,
-+ 0x13, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x38,
-+ 0xc0, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x1f,
-+ 0x00, 0x00, 0x01, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40, 0x20,
-+ 0x20, 0x20, 0x90, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x21, 0x11, 0x13, 0x02, 0x04, 0x79, 0x11,
-+ 0x12, 0x14, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x50, 0x48,
-+ 0x44, 0x44, 0x40, 0xc0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x28, 0x49, 0x0e,
-+ 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88, 0x08,
-+ 0x08, 0x48, 0x48, 0xc8, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x3d, 0x25,
-+ 0x25, 0x3d, 0x19, 0x15, 0x22, 0x45, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x78, 0x00, 0xfc, 0x60,
-+ 0x64, 0x58, 0x50, 0x50, 0x68, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x21, 0x21, 0x22, 0x25, 0x29,
-+ 0x21, 0x22, 0x24, 0x28, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x88, 0x48, 0x28, 0x28,
-+ 0x88, 0x48, 0x28, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a,
-+ 0x3e, 0x2c, 0x0a, 0x0f, 0x19, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x03, 0x7c, 0x11, 0x49, 0x2a, 0x24, 0x3f, 0x02,
-+ 0x04, 0x07, 0x7c, 0x04, 0x04, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x0f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-+ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x11, 0x12, 0x24, 0x38, 0x40, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x80, 0x88, 0xc8,
-+ 0xb0, 0xa0, 0x90, 0x88, 0x84, 0x80, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x04, 0x3c, 0x04,
-+ 0x3c, 0x04, 0x3c, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x40, 0x78, 0x40,
-+ 0x78, 0x40, 0x78, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x10, 0x30, 0x57, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x12, 0x13,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x20, 0x00, 0x00,
-+ 0x00, 0x1c, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x0d, 0x03, 0x02, 0x0c, 0x30,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x90, 0x10, 0x60,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3c, 0x01, 0x3c,
-+ 0x00, 0x3d, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xc8, 0x68, 0x88, 0x30, 0x40,
-+ 0xa0, 0xa8, 0x84, 0x94, 0x90, 0x70, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x47, 0x27, 0x23, 0x00, 0x0f,
-+ 0x08, 0x13, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0x40, 0xfc,
-+ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7e, 0x07, 0x0a, 0x0b, 0x1a,
-+ 0x37, 0x56, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0x4c, 0xf8, 0xd8, 0xf8, 0xd8,
-+ 0x68, 0xd8, 0xf8, 0xd8, 0x68, 0x58, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0a, 0x10, 0x18,
-+ 0x34, 0x55, 0x11, 0x12, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0, 0xa8,
-+ 0xa8, 0x24, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x3f, 0x23, 0x54, 0x14, 0x23, 0x1f, 0x12,
-+ 0x1f, 0x00, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xa0, 0x50, 0xc8, 0xf0, 0x90,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0f, 0x12, 0x2f, 0x44, 0x09,
-+ 0x13, 0x00, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xc8, 0xe8, 0x08,
-+ 0x30, 0x80, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x09, 0x49, 0x37, 0x11, 0x31, 0x48, 0x0b, 0x1a,
-+ 0x2a, 0x4b, 0x0a, 0x0a, 0x33, 0x12, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x10, 0x00, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x7f, 0x15, 0x2b, 0x7e,
-+ 0x08, 0x0f, 0x70, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0, 0x50, 0x74,
-+ 0x94, 0x0c, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x20, 0x4f, 0x08, 0x08,
-+ 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x80, 0x80, 0xf0, 0x80, 0x80,
-+ 0x80, 0xfc, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x1f, 0x60, 0x0f, 0x00,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x40,
-+ 0x80, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x13, 0x1c,
-+ 0x70, 0x11, 0x15, 0x15, 0x19, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0x10,
-+ 0xa0, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00,
-+ 0x12, 0x12, 0x13, 0x7a, 0x16, 0x15, 0x1d, 0x13,
-+ 0x1a, 0x74, 0x18, 0x15, 0x14, 0x38, 0x00, 0x00,
-+ 0x30, 0x28, 0xa8, 0xa0, 0xfc, 0xa0, 0x30, 0x50,
-+ 0x48, 0x84, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x11, 0x11, 0x15, 0x15, 0x3b, 0x32, 0x36, 0x59,
-+ 0x12, 0x14, 0x18, 0x25, 0x24, 0x48, 0x00, 0x00,
-+ 0x20, 0x28, 0xe4, 0x64, 0x7c, 0xa0, 0xa0, 0x50,
-+ 0x50, 0x88, 0x04, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x78, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x08, 0x13, 0x12, 0x3a, 0x0a,
-+ 0x4b, 0x2a, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xb8,
-+ 0x38, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x1a, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0x40,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x09,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x09, 0x0f, 0x3f, 0x2a, 0x7f,
-+ 0x0f, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xfc, 0xa8, 0xf8,
-+ 0xe0, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x19, 0x34, 0x34, 0x33, 0x52,
-+ 0x12, 0x12, 0x12, 0x13, 0x13, 0x12, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0x20, 0x40, 0x20, 0x28, 0xa8,
-+ 0x48, 0x48, 0xa8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x07, 0x05,
-+ 0x14, 0x17, 0x25, 0x25, 0x49, 0x56, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xfc, 0xf0,
-+ 0x00, 0xfc, 0x48, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x67, 0x1a, 0x1a, 0x26, 0x7e,
-+ 0x12, 0x1b, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xa8,
-+ 0x98, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0c, 0x12, 0x7d, 0x01, 0x3e, 0x22,
-+ 0x3e, 0x22, 0x3e, 0x22, 0x22, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0x4c, 0x70, 0x44, 0x44, 0x3c, 0x40,
-+ 0x4c, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x25, 0x3c, 0x25, 0x25, 0x3d,
-+ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x88, 0x48, 0x48, 0x10, 0x20, 0x18, 0x98, 0x68,
-+ 0x28, 0x58, 0x98, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3b, 0x2a, 0x2b, 0x3a, 0x2b, 0x2b, 0x3a,
-+ 0x2a, 0x2b, 0x2a, 0x2a, 0x2c, 0x5b, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xfc, 0xf8,
-+ 0x00, 0xfc, 0xc8, 0xb0, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x02, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x1f, 0x17,
-+ 0x10, 0x1f, 0x12, 0x12, 0x23, 0x5c, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0xf8, 0xf0,
-+ 0x00, 0xfc, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x02, 0x7e, 0x02, 0x3a, 0x2a, 0x2a,
-+ 0x2a, 0x3a, 0x2a, 0x02, 0x02, 0x0d, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x12, 0x09, 0x07, 0x19, 0x6f,
-+ 0x09, 0x09, 0x0f, 0x01, 0x01, 0x7e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0x80, 0xc0, 0x30, 0xec,
-+ 0x20, 0x20, 0xe0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x3f, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x12, 0x13, 0x1e,
-+ 0x72, 0x12, 0x12, 0x12, 0x12, 0x31, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x17, 0x10, 0x11, 0x1a,
-+ 0x77, 0x12, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x10, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x48,
-+ 0xfc, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x1f, 0x12, 0x1f, 0x14, 0x7f, 0x1c,
-+ 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x90, 0xf0, 0x00, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x22, 0x03, 0x13,
-+ 0x12, 0x12, 0x24, 0x24, 0x49, 0x56, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x22, 0x02, 0x12,
-+ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00,
-+ 0x20, 0xc0, 0x08, 0x30, 0xc0, 0xc8, 0xc8, 0xb0,
-+ 0xa0, 0x90, 0x90, 0x88, 0x84, 0x80, 0x00, 0x00,
-+ 0x00, 0x3e, 0x08, 0x3e, 0x08, 0x0e, 0x70, 0x1f,
-+ 0x11, 0x1f, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x11, 0x11, 0x21, 0x3d, 0x65,
-+ 0x25, 0x25, 0x26, 0x3e, 0x25, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x28, 0x30, 0x20, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x30, 0x0b, 0x62, 0x0b, 0x12, 0x24, 0x27, 0x09,
-+ 0x7f, 0x02, 0x07, 0x08, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xf8, 0x90, 0x60, 0x9c, 0x00,
-+ 0xfc, 0x20, 0x40, 0xe0, 0x10, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0xf8, 0x80, 0xf0, 0x80,
-+ 0xf0, 0x80, 0xfc, 0x24, 0x94, 0x38, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x1f, 0x11, 0x11,
-+ 0x1f, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x00, 0x09, 0x24, 0x24, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x04, 0x24, 0x94, 0x04, 0x04, 0x38, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x57, 0x10,
-+ 0x10, 0x17, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0,
-+ 0xa0, 0xbc, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x13, 0x18, 0x15, 0x12, 0x1f,
-+ 0x11, 0x1f, 0x21, 0x22, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0x90, 0xd4, 0x24, 0x18, 0xf8,
-+ 0x44, 0xf8, 0x40, 0x40, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x13, 0x10, 0x10, 0x13,
-+ 0x18, 0x70, 0x17, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x17, 0x18,
-+ 0x70, 0x17, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0,
-+ 0xa0, 0xbc, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3f, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x29, 0x4a, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x70, 0x68, 0xa8,
-+ 0xa4, 0x24, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x03, 0x0d, 0x71, 0x01, 0x1f,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xc0, 0x30, 0x08, 0x04, 0xf0,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x28, 0x28, 0x2b, 0x2a, 0x3f, 0x22, 0x23, 0x3a,
-+ 0x28, 0x29, 0x2f, 0x28, 0x28, 0x48, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa8,
-+ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7c, 0x04, 0x1c, 0x64, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x88, 0xf0, 0x80, 0x84, 0x7c, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x25, 0x3d,
-+ 0x25, 0x25, 0x25, 0x25, 0x24, 0x4c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x24,
-+ 0x24, 0x24, 0x24, 0x2c, 0x20, 0x20, 0x00, 0x00,
-+ 0x02, 0x7e, 0x02, 0x3e, 0x7f, 0x05, 0x7f, 0x0f,
-+ 0x09, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0x40, 0x78, 0x7c, 0x40, 0xfc, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x78, 0x48, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x12, 0x11, 0x31, 0x5f, 0x10,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x20, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x11, 0x7c, 0x10, 0x17, 0x10,
-+ 0x11, 0x1d, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x10, 0x7c, 0x24, 0x24, 0x24,
-+ 0x7f, 0x48, 0x0d, 0x16, 0x24, 0x40, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x0a, 0x18, 0x1c, 0x1b,
-+ 0x2a, 0x28, 0x49, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0xa8, 0xa8, 0xfc,
-+ 0xa8, 0xa8, 0xfc, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2b, 0x28, 0x49, 0x0e, 0x08, 0x08, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x0a, 0x2c, 0x28, 0x28, 0x48,
-+ 0x0b, 0x08, 0x14, 0x13, 0x26, 0x40, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x40,
-+ 0xfc, 0xe0, 0xd0, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x19, 0x29, 0x48, 0x08, 0x09, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0x08, 0xf8, 0x90, 0x88, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x20,
-+ 0x44, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x08,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x22, 0x3f, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x29, 0x28, 0x30, 0x2b, 0x24,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x21, 0x10, 0x17, 0x00, 0x01, 0x70, 0x11,
-+ 0x10, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xf0,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x20, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x02, 0x0d, 0x38, 0x09, 0x08, 0x7e, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x28, 0xa8, 0xb0, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x3e, 0x29, 0x49, 0x09, 0x7f,
-+ 0x09, 0x0c, 0x12, 0x12, 0x20, 0x41, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x08, 0x08, 0xc8,
-+ 0x48, 0x48, 0x48, 0x48, 0x48, 0x88, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7e,
-+ 0x1c, 0x1b, 0x2a, 0x48, 0x08, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x24, 0xa4, 0xa8,
-+ 0xb0, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x13, 0x32, 0x52, 0x12,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x02, 0x3e, 0x02, 0x7f, 0x04, 0x25,
-+ 0x15, 0x16, 0x1d, 0x64, 0x04, 0x0c, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13,
-+ 0x10, 0x17, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x10, 0xfc, 0x10, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x11, 0x11, 0x1d,
-+ 0x71, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x13,
-+ 0x12, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x1f, 0x10, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x43, 0x10, 0x09, 0x41,
-+ 0x29, 0x09, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x30, 0x40, 0xf8, 0x08,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x7f,
-+ 0x12, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x0f, 0x4b, 0x22, 0x23,
-+ 0x12, 0x13, 0x2f, 0x21, 0x40, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0x48, 0xfc, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x20, 0x11, 0x13, 0x02, 0x02, 0x73, 0x12,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x79, 0x49, 0x49, 0x49, 0x78, 0x4b, 0x48,
-+ 0x4f, 0x49, 0x7b, 0x4c, 0x43, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0x50, 0x58, 0xe4, 0x58, 0xc0, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x23, 0x22, 0x03, 0x12,
-+ 0x13, 0x10, 0x2f, 0x20, 0x43, 0x4c, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x80, 0xfc, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x15, 0x35, 0x38, 0x33, 0x50,
-+ 0x17, 0x19, 0x17, 0x24, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0xa0, 0xf8, 0xa0,
-+ 0xfc, 0x50, 0x58, 0xe4, 0x58, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x64, 0x2b, 0x1a, 0x27, 0x7e,
-+ 0x13, 0x38, 0x37, 0x35, 0x50, 0x10, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0a, 0x3e, 0x3a, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x08, 0x08, 0xd0, 0x30, 0x28, 0x44, 0x88, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x01,
-+ 0x03, 0x0e, 0x31, 0x01, 0x06, 0x78, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00,
-+ 0xf0, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x42, 0x47, 0x51, 0x49, 0x4b,
-+ 0x45, 0x59, 0x43, 0x40, 0x7f, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x08, 0x28, 0x28, 0xc8, 0x48,
-+ 0x28, 0x28, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x7f,
-+ 0x08, 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x00, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x12, 0x10, 0x3c, 0x24, 0x65,
-+ 0x27, 0x25, 0x3d, 0x21, 0x21, 0x01, 0x00, 0x00,
-+ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0xa0, 0x10,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x01, 0x7f, 0x03,
-+ 0x0f, 0x74, 0x07, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x20, 0xfc, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x3e, 0x23, 0x3e, 0x21, 0x4f, 0x7f,
-+ 0x01, 0x0f, 0x3f, 0x01, 0x7f, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x30, 0xcc, 0xe0, 0xfc,
-+ 0x20, 0xe0, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x5f, 0x01, 0x7f,
-+ 0x01, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x18, 0xe0, 0x00, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x54, 0x55, 0x19, 0x11, 0x17, 0x00, 0x00,
-+ 0x70, 0xfc, 0x58, 0xe8, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x00, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x57, 0x54, 0x55, 0x57,
-+ 0x55, 0x5d, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0xf8,
-+ 0x54, 0xf0, 0x50, 0x50, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x24, 0x25, 0x25, 0x4e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0x90, 0x90, 0x94, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x48,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00,
-+ 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x07, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x08,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20,
-+ 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8,
-+ 0xa8, 0x24, 0xf8, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x23, 0x10, 0x15, 0x43, 0x22, 0x27, 0x09, 0x01,
-+ 0x1f, 0x11, 0x21, 0x22, 0x44, 0x58, 0x00, 0x00,
-+ 0x90, 0x90, 0x64, 0x28, 0x10, 0xf8, 0x24, 0x20,
-+ 0xfc, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x1e, 0x02, 0x24, 0x14, 0x08, 0x1f, 0x22, 0x42,
-+ 0x3f, 0x02, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x90, 0x90, 0x64, 0x44, 0x28, 0xf0, 0x48, 0x44,
-+ 0xf8, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x21, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x68, 0x28, 0xd4, 0x54, 0x88, 0xfc, 0x50, 0x50,
-+ 0xfc, 0x50, 0x50, 0x94, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01,
-+ 0x7f, 0x02, 0x07, 0x1a, 0x61, 0x1e, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xfc, 0x00, 0xf0, 0x20, 0xc0, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x28, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc8, 0x48, 0x50,
-+ 0x30, 0x20, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x1e, 0x7f, 0x00,
-+ 0x1e, 0x1e, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x1c,
-+ 0x70, 0x11, 0x11, 0x12, 0x14, 0x3b, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x80, 0x80, 0xf8, 0x88,
-+ 0xc8, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x44, 0x04, 0x0b,
-+ 0x18, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x50, 0x48, 0xfc,
-+ 0x48, 0x30, 0x20, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x25, 0x25,
-+ 0x29, 0x3f, 0x28, 0x2b, 0x28, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x28,
-+ 0xe8, 0x48, 0xa8, 0x68, 0x28, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x15, 0x15, 0x15, 0x17,
-+ 0x17, 0x13, 0x21, 0x22, 0x42, 0x04, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x54, 0x52, 0x53, 0x5f, 0x52,
-+ 0x5f, 0x77, 0x56, 0x4a, 0x12, 0x02, 0x00, 0x00,
-+ 0x04, 0x08, 0xf0, 0xa0, 0xa0, 0x3c, 0xe8, 0x28,
-+ 0xe8, 0x28, 0xa8, 0xc8, 0x48, 0x88, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x10, 0x7d, 0x11, 0x11, 0x10,
-+ 0x17, 0x1c, 0x65, 0x05, 0x05, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x08, 0xe8, 0x28, 0xe8, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x18, 0x2f, 0x48, 0x0f, 0x08,
-+ 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80,
-+ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x11, 0x10, 0x33, 0x50, 0x10,
-+ 0x17, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x50, 0x40, 0xf8, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x49, 0x29, 0x2a, 0x08, 0x7f, 0x08, 0x08,
-+ 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x11, 0x09, 0x09, 0x3f, 0x01, 0x01,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x10, 0x10, 0x20, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x12, 0x12, 0x12,
-+ 0x11, 0x11, 0x10, 0x21, 0x26, 0x58, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20,
-+ 0x20, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0a, 0x4a, 0x2c, 0x28, 0x7e, 0x08, 0x08,
-+ 0x0f, 0x79, 0x11, 0x12, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0xc8,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x5d, 0x51, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x90, 0x50, 0x50,
-+ 0x50, 0x10, 0x10, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x12, 0x12, 0x17, 0x7c, 0x16, 0x15, 0x15, 0x1f,
-+ 0x74, 0x16, 0x16, 0x1a, 0x18, 0x31, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xac, 0xac, 0xc4, 0xf8,
-+ 0xa8, 0xa8, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x01, 0x7d, 0x11, 0x17, 0x10, 0x14, 0x7a, 0x13,
-+ 0x11, 0x11, 0x1e, 0x62, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x7c, 0x10, 0xd0, 0x90, 0x90, 0xfc, 0x10,
-+ 0x10, 0x10, 0x90, 0x90, 0x7c, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x0a, 0x0a, 0x0d, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x21, 0x21, 0x01, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x30,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x21, 0x21, 0x01, 0x09,
-+ 0x09, 0x09, 0x11, 0x12, 0x22, 0x24, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x90, 0x50, 0x50,
-+ 0x10, 0x10, 0x10, 0x14, 0x14, 0x0c, 0x00, 0x00,
-+ 0x28, 0x29, 0x29, 0x29, 0x3f, 0x21, 0x21, 0x3d,
-+ 0x25, 0x25, 0x26, 0x26, 0x45, 0x46, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x09, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x30,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7c, 0x12, 0x12, 0x12, 0x12, 0x7e, 0x12,
-+ 0x12, 0x10, 0x1d, 0x61, 0x02, 0x04, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x02, 0x7d, 0x55, 0x54, 0x57, 0x7c, 0x54,
-+ 0x57, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x50, 0x40, 0xf8, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x3f, 0x5f, 0x15, 0x7f, 0x15, 0x3f, 0x23,
-+ 0x0c, 0x03, 0x3f, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x40, 0xc0, 0x7c, 0xc8, 0x48, 0x30, 0xd8, 0x44,
-+ 0xc0, 0x30, 0xc8, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x17, 0x7f,
-+ 0x12, 0x1a, 0x1a, 0x2a, 0x22, 0x47, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x0b, 0x49, 0x27, 0x20,
-+ 0x0b, 0x0d, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x38, 0xc8, 0x50, 0xfc, 0xe0,
-+ 0xf8, 0x54, 0xf0, 0x50, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x19, 0x15, 0x22, 0x47, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xc8,
-+ 0xa8, 0xb0, 0x10, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x4d, 0x7f, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x2a, 0x3e, 0x08, 0x7f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x88, 0x88, 0x88,
-+ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x01, 0x3f, 0x11, 0x09, 0x09, 0x7f, 0x01,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x30, 0xc0, 0x10, 0x10, 0x20, 0x40, 0xfc, 0x00,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x0a, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x12, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x1c, 0x05, 0x14, 0x14, 0x12, 0x22, 0x3f, 0x52,
-+ 0x12, 0x12, 0x12, 0x22, 0x2d, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x2a, 0x48, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x27, 0x39, 0x63, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x17, 0x12, 0x12, 0x1f,
-+ 0x72, 0x10, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x68, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x4a, 0x4f, 0x4a, 0x7a, 0x4b,
-+ 0x4a, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x11, 0x09, 0x7f, 0x03, 0x05, 0x19,
-+ 0x7f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x30, 0xd0, 0x10, 0x20, 0xfc, 0x80, 0x40, 0x30,
-+ 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x3e, 0x32, 0x2a, 0x7f, 0x2a, 0x2a, 0x47,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x70, 0x8c,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x3e, 0x32, 0x2a, 0x7f, 0x2a, 0x2a, 0x47,
-+ 0x3f, 0x02, 0x0f, 0x74, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc,
-+ 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x09, 0x7f, 0x05, 0x19,
-+ 0x6f, 0x09, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xd0, 0x20, 0xfc, 0x40, 0x30,
-+ 0xec, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x12, 0x12, 0x24, 0x49, 0x0f,
-+ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x50, 0x48, 0x44, 0xc4, 0xe0,
-+ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x2f, 0x21, 0x2f, 0x21,
-+ 0x2f, 0x22, 0x22, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x40, 0x78, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x04, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x04, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x03, 0x05, 0x19, 0x61, 0x01,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xc0, 0x30, 0x08, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x14, 0x14, 0x14, 0x17,
-+ 0x14, 0x14, 0x14, 0x25, 0x26, 0x58, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x40, 0x40, 0x44, 0xc8,
-+ 0x70, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x4a, 0x0a, 0x12, 0x13, 0x32,
-+ 0x52, 0x12, 0x12, 0x14, 0x15, 0x1e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x88,
-+ 0x90, 0x50, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x02, 0x02, 0x3e, 0x02, 0x3e, 0x02, 0x7e, 0x04,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x80, 0xf8, 0x80, 0xfc, 0x80,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x21, 0x3e, 0x42, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x40, 0x78,
-+ 0x40, 0x78, 0x40, 0x7c, 0x40, 0x40, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7e, 0x12, 0x13, 0x12, 0x1e,
-+ 0x72, 0x12, 0x12, 0x12, 0x13, 0x3c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0xe4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x12, 0x13, 0x1e,
-+ 0x72, 0x12, 0x12, 0x14, 0x15, 0x3e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x88,
-+ 0x90, 0x50, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x02, 0x3e, 0x02, 0x3e, 0x02, 0x7c, 0x05, 0x09,
-+ 0x7f, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x7c, 0x40, 0x7c, 0x40, 0x7c, 0x40, 0x00,
-+ 0xfc, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x10,
-+ 0x10, 0x10, 0x11, 0x16, 0x18, 0x60, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x20, 0x22, 0x02, 0x12,
-+ 0x14, 0x14, 0x28, 0x21, 0x42, 0x44, 0x00, 0x00,
-+ 0x40, 0x28, 0x28, 0x88, 0x90, 0x90, 0xb0, 0xa8,
-+ 0xc4, 0xc4, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b,
-+ 0x2b, 0x4a, 0x12, 0x14, 0x25, 0x4e, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0xfc, 0x48, 0x50, 0xf0,
-+ 0x10, 0xa0, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x12,
-+ 0x11, 0x11, 0x10, 0x20, 0x23, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x88, 0x90, 0x80, 0xf0, 0x10,
-+ 0x20, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7c, 0x10, 0x13, 0x12, 0x13, 0x3e, 0x27,
-+ 0x64, 0x25, 0x27, 0x3c, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x18, 0x70, 0x10, 0x10, 0x7e, 0x12, 0x1a,
-+ 0x36, 0x34, 0x50, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x20, 0x28, 0x88, 0x88, 0x90, 0x90, 0xb0,
-+ 0xa8, 0xc4, 0x84, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x67, 0x18, 0x10, 0x2b, 0x7c,
-+ 0x18, 0x37, 0x35, 0x31, 0x52, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0,
-+ 0xa0, 0xbc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x08, 0x12, 0x7f, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x40, 0x58, 0x60, 0x44,
-+ 0x3c, 0x40, 0x58, 0x60, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x12, 0x12, 0x15, 0x1e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x28, 0x30, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0xdc, 0x50, 0x50, 0xdc, 0x50,
-+ 0x50, 0xdc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x02, 0x3f, 0x02, 0x3f, 0x3f, 0x44, 0x1f, 0x68,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x80, 0xf8, 0x88, 0xf8, 0xfc, 0x84, 0xf8, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x27, 0x14, 0x14, 0x07, 0x04, 0x77, 0x1c,
-+ 0x14, 0x14, 0x17, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x90, 0xfc, 0xc8, 0xa8, 0x30, 0xfc, 0x90,
-+ 0x90, 0xfc, 0x90, 0x10, 0x10, 0xfc, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x3e, 0x02, 0x02, 0x3e, 0x02,
-+ 0x02, 0x7e, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x7c, 0x40,
-+ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x0e, 0x32, 0x12, 0x12, 0x7f,
-+ 0x12, 0x12, 0x22, 0x22, 0x42, 0x02, 0x00, 0x00,
-+ 0x00, 0xc8, 0x70, 0x50, 0x48, 0x28, 0x18, 0xc8,
-+ 0x50, 0x70, 0x28, 0x24, 0x14, 0x0c, 0x00, 0x00,
-+ 0x10, 0x15, 0x12, 0x7e, 0x10, 0x10, 0x3e, 0x36,
-+ 0x36, 0x52, 0x52, 0x12, 0x15, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0xa8, 0xa8, 0x98, 0x80, 0x7c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x12, 0x7f, 0x12, 0x1e,
-+ 0x12, 0x1e, 0x12, 0x7f, 0x15, 0x63, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x10, 0x20, 0xfc, 0xa8, 0xb0,
-+ 0xf8, 0xc8, 0xa8, 0x90, 0x68, 0x84, 0x00, 0x00,
-+ 0x09, 0x09, 0x0f, 0x11, 0x17, 0x34, 0x57, 0x16,
-+ 0x17, 0x16, 0x17, 0x1a, 0x12, 0x12, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x48, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x17, 0x10,
-+ 0x17, 0x10, 0x1f, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x68, 0x80, 0xf0,
-+ 0x80, 0xfc, 0x80, 0x80, 0x84, 0x7c, 0x00, 0x00,
-+ 0x12, 0x1a, 0x2a, 0x4a, 0x1f, 0x18, 0x20, 0x7f,
-+ 0x26, 0x26, 0x2a, 0x2b, 0x32, 0x20, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x48, 0xc8, 0xe8,
-+ 0x28, 0x30, 0x90, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x80,
-+ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x08, 0x3e, 0x08, 0x0e, 0x70, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x80, 0x80,
-+ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x17, 0x14,
-+ 0x17, 0x14, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x0f, 0x08, 0x0f, 0x0f, 0x0f, 0x1f, 0x11,
-+ 0x1f, 0x1f, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xe0, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1d, 0x1a, 0x1a,
-+ 0x28, 0x29, 0x48, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x90, 0x50, 0x20, 0x50,
-+ 0xc8, 0x24, 0x00, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x04, 0x18, 0x73, 0x12, 0x13, 0x7e, 0x13, 0x18,
-+ 0x35, 0x37, 0x50, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa8,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x22, 0x22, 0x22, 0x24,
-+ 0x24, 0x28, 0x30, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48,
-+ 0x48, 0x38, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x09, 0x09, 0x09, 0x09,
-+ 0x09, 0x09, 0x15, 0x13, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x10, 0x20, 0x00, 0x00, 0xf0,
-+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x04,
-+ 0x14, 0x17, 0x14, 0x14, 0x17, 0x78, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x80,
-+ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x04, 0x02, 0x1f, 0x10, 0x10,
-+ 0x17, 0x10, 0x13, 0x20, 0x20, 0x47, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x40, 0xfc, 0x20, 0xc0,
-+ 0x10, 0x60, 0x84, 0x18, 0x60, 0x80, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3d, 0x26, 0x24, 0x3f,
-+ 0x26, 0x25, 0x24, 0x27, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xa0, 0x58,
-+ 0x4c, 0x50, 0xe0, 0x58, 0x44, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x01, 0x7f, 0x04, 0x1a,
-+ 0x63, 0x06, 0x19, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0x88, 0x78,
-+ 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x27, 0x3c, 0x25, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x78, 0x0f, 0x09, 0x39, 0x23, 0x22, 0x3a,
-+ 0x2b, 0x0a, 0x0a, 0x0b, 0x0a, 0x30, 0x00, 0x00,
-+ 0x00, 0x78, 0xc8, 0x08, 0x38, 0xa0, 0xa0, 0xb8,
-+ 0xa8, 0x88, 0x88, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x02, 0x01, 0x00, 0x04, 0x04, 0x04, 0x24, 0x24,
-+ 0x24, 0x45, 0x46, 0x04, 0x1c, 0x63, 0x00, 0x00,
-+ 0x00, 0x10, 0x90, 0x90, 0x20, 0x20, 0x50, 0x48,
-+ 0x84, 0x04, 0x00, 0x10, 0x10, 0xf0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x09, 0x7f,
-+ 0x09, 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x20, 0xfc,
-+ 0x20, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x5f, 0x01, 0x7f, 0x01, 0x1f,
-+ 0x01, 0x1f, 0x01, 0x3f, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x20, 0xf0, 0x10, 0xfc, 0x10, 0xf0,
-+ 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x11, 0x01, 0x01, 0x70, 0x13,
-+ 0x12, 0x13, 0x12, 0x13, 0x2c, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x1b, 0x34, 0x34,
-+ 0x37, 0x50, 0x50, 0x11, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xfc, 0xa0, 0x90, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x11, 0x7f, 0x24, 0x27, 0x24,
-+ 0x74, 0x48, 0x09, 0x16, 0x24, 0x43, 0x00, 0x00,
-+ 0x1c, 0xe4, 0x48, 0x30, 0xfc, 0x40, 0xfc, 0x40,
-+ 0xf8, 0xc8, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xfc, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x02, 0x1f, 0x10, 0x10, 0x10,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x7b, 0x02, 0x3c, 0x01, 0x38,
-+ 0x03, 0x3d, 0x28, 0x29, 0x38, 0x2b, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xb8, 0xa8, 0xc8, 0x98, 0xc0,
-+ 0x30, 0xcc, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x30, 0x57, 0x10,
-+ 0x11, 0x13, 0x15, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xc0,
-+ 0x48, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x07, 0x04, 0x3f, 0x29, 0x2e, 0x38, 0x27,
-+ 0x2a, 0x2a, 0x2a, 0x2a, 0x32, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xa8, 0x48, 0x10, 0x94, 0x24,
-+ 0x08, 0x08, 0x10, 0x20, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x1b, 0x34, 0x35,
-+ 0x30, 0x57, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf0,
-+ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x01, 0x11, 0x09, 0x09, 0x01, 0x7d, 0x05, 0x09,
-+ 0x09, 0x11, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x88, 0x90, 0x60, 0x40, 0x20,
-+ 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x00, 0x13,
-+ 0x10, 0x17, 0x21, 0x22, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf8,
-+ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x19, 0x7f, 0x5b, 0x7f, 0x01, 0x3d,
-+ 0x01, 0x7f, 0x19, 0x36, 0x53, 0x34, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x70, 0x50, 0x78, 0xd8, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x1f, 0x00, 0x1f,
-+ 0x00, 0x7f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0xf0, 0x00, 0xf0,
-+ 0x00, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x03,
-+ 0x04, 0x1c, 0x64, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x10,
-+ 0x90, 0xa0, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3f,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x28, 0xa8, 0xb0, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x18, 0x66, 0x14, 0x19, 0x6a, 0x0c, 0x14,
-+ 0x64, 0x0c, 0x14, 0x64, 0x04, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x24, 0x2f, 0x29, 0x2f,
-+ 0x29, 0x2f, 0x24, 0x3f, 0x44, 0x45, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0x48, 0x48, 0x78, 0x48,
-+ 0x48, 0x78, 0x48, 0xc8, 0x88, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x10, 0x1b, 0x12,
-+ 0x32, 0x53, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x10, 0x00, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x28, 0x0b, 0x1a,
-+ 0x6a, 0x0a, 0x13, 0x12, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x40, 0xf8, 0x48,
-+ 0x68, 0x98, 0x18, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa4, 0xa4, 0x28,
-+ 0x68, 0x30, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x1f, 0x11, 0x11,
-+ 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x7c, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0x90, 0x00, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x08, 0xf0, 0x80, 0x80, 0xfc, 0x90, 0x90, 0x90,
-+ 0xfc, 0x00, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x00, 0x7f, 0x08,
-+ 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x20,
-+ 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x50, 0x88, 0xfc, 0x24, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0xf8, 0x28, 0xfc, 0x68, 0x70, 0xc4, 0x3c,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00,
-+ 0x7c, 0x44, 0x44, 0x44, 0x7c, 0x44, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0x40, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x11, 0x19, 0x37, 0x37,
-+ 0x33, 0x55, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xe0, 0x08, 0x08, 0x90, 0x50,
-+ 0x64, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x08, 0x08, 0x4a, 0x2a,
-+ 0x12, 0x12, 0x1a, 0x2a, 0x27, 0x40, 0x00, 0x00,
-+ 0x20, 0xe8, 0x24, 0xfc, 0xa0, 0xa0, 0xa0, 0xe0,
-+ 0x90, 0x90, 0xb4, 0xcc, 0x0c, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x12,
-+ 0x1f, 0x20, 0x22, 0x42, 0x44, 0x48, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0xf8, 0x20, 0x20, 0x20,
-+ 0xfc, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x22, 0x12, 0x1a, 0x4b, 0x2a, 0x3f, 0x03, 0x16,
-+ 0x16, 0x2f, 0x29, 0x42, 0x44, 0x49, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0xa0, 0x78, 0xc8, 0x78, 0xc8,
-+ 0xf8, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x01, 0x04, 0x1f, 0x62, 0x0c, 0x3f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x80, 0x40, 0xf0, 0x4c, 0xc0, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5f, 0x09, 0x33, 0x7f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x30, 0xc8, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x2e, 0x28, 0x28, 0x7f, 0x0c, 0x2a,
-+ 0x29, 0x49, 0x1a, 0x04, 0x18, 0x63, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x3f, 0x40, 0x3e, 0x2a, 0x2b,
-+ 0x7f, 0x2a, 0x2a, 0x7f, 0x43, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x22, 0x13, 0x14, 0x7f, 0x14, 0x14, 0x14, 0x7f,
-+ 0x14, 0x14, 0x14, 0x24, 0x27, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x90, 0xd0, 0xb0,
-+ 0xb0, 0x90, 0x94, 0xec, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x00, 0x01, 0x03, 0x05, 0x19,
-+ 0x61, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0x00, 0x80, 0x60, 0x10,
-+ 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x0b, 0x18, 0x29, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12,
-+ 0x13, 0x1c, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x7f,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x11, 0x7c, 0x25, 0x24, 0x27,
-+ 0x7a, 0x4b, 0x0e, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x44, 0xf8, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5f, 0x07, 0x04, 0x07, 0x00,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0xc0, 0x40, 0xc0, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x5f, 0x0f, 0x08, 0x0f, 0x00,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x04, 0x0f, 0x08,
-+ 0x18, 0x28, 0x48, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x11, 0x11, 0x12, 0x13, 0x16,
-+ 0x1a, 0x12, 0x12, 0x22, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x10, 0x10, 0xfc, 0x10,
-+ 0x90, 0x50, 0x50, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x17, 0x38, 0x35, 0x35, 0x53,
-+ 0x15, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xa0, 0x20, 0xfc, 0x24,
-+ 0x24, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x1f,
-+ 0x70, 0x10, 0x10, 0x11, 0x16, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x0a, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e,
-+ 0x08, 0x7f, 0x1e, 0x12, 0x23, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x0c, 0x32, 0x03, 0x0c, 0x70, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x60, 0x30, 0x48, 0x80, 0x60, 0xdc, 0x00, 0x00,
-+ 0xf8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x22, 0x12, 0x12, 0x7f, 0x00,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x90, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x22, 0x22, 0x03, 0x10,
-+ 0x10, 0x17, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x70, 0x88, 0x48, 0x50, 0x00, 0xf8, 0x30,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x08, 0x10, 0x24, 0x04, 0x04, 0x02,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x08, 0x48, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x17,
-+ 0x11, 0x30, 0x50, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0x10, 0xfc,
-+ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x13, 0x16, 0x1a, 0x12, 0x12,
-+ 0x2f, 0x29, 0x4a, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0x90, 0x50, 0x50, 0xb0,
-+ 0xf8, 0xc8, 0xa8, 0x48, 0x28, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x17, 0x11, 0x17, 0x17, 0x14,
-+ 0x17, 0x13, 0x22, 0x23, 0x43, 0x02, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0x28, 0xe0, 0xf8, 0xf8, 0x88,
-+ 0xf8, 0xf0, 0x10, 0xf0, 0xf0, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x1f, 0x01,
-+ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf0, 0x00,
-+ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3c, 0x03, 0x7e, 0x01, 0x3d, 0x03, 0x3c,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00,
-+ 0x08, 0x90, 0xfc, 0xa8, 0xa8, 0xb0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x02, 0x07, 0x18, 0x61, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3f, 0x24, 0x3d, 0x25,
-+ 0x25, 0x3d, 0x19, 0x15, 0x27, 0x40, 0x00, 0x00,
-+ 0x10, 0xf8, 0x14, 0x14, 0xfc, 0x50, 0x50, 0x70,
-+ 0x50, 0x50, 0x74, 0xcc, 0x0c, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04, 0x14,
-+ 0x17, 0x14, 0x14, 0x2c, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0x20, 0x20, 0xf0, 0x28, 0x24,
-+ 0xa4, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x29, 0x33, 0x2b, 0x25,
-+ 0x25, 0x25, 0x25, 0x39, 0x21, 0x21, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x12, 0x13, 0x35, 0x51, 0x1f,
-+ 0x12, 0x12, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x16, 0x12, 0x17, 0x1a,
-+ 0x72, 0x17, 0x10, 0x15, 0x14, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8,
-+ 0xa8, 0xfc, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x7f, 0x04, 0x04, 0x17,
-+ 0x14, 0x14, 0x14, 0x17, 0x78, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40, 0xc0,
-+ 0x40, 0x20, 0x24, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x2a, 0x7f, 0x0a, 0x3f, 0x08,
-+ 0x0f, 0x12, 0x6a, 0x0d, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa0, 0xfc, 0xa0, 0xf8, 0x20,
-+ 0xf8, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x14, 0x1f, 0x12, 0x3f, 0x22, 0x5f,
-+ 0x12, 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xe8, 0x28, 0xc8,
-+ 0x48, 0xc8, 0x48, 0xc8, 0x48, 0xf0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x1f, 0x2a, 0x4a, 0x7f,
-+ 0x0a, 0x0a, 0x7f, 0x14, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0xa0, 0xa0, 0xfc,
-+ 0xa0, 0xa0, 0xfc, 0x90, 0x48, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x12, 0x14, 0x7f, 0x00,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x09, 0x08, 0x7f, 0x08, 0x08,
-+ 0x3e, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x37, 0x37,
-+ 0x33, 0x53, 0x52, 0x14, 0x17, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x38, 0xc8, 0x48, 0xf8, 0x58, 0x58,
-+ 0xf8, 0x6c, 0x5c, 0x7c, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x11, 0x17, 0x15, 0x15,
-+ 0x17, 0x15, 0x11, 0x21, 0x2e, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0xd0, 0x10, 0x10, 0xd0, 0x50, 0x50,
-+ 0xd0, 0x10, 0x54, 0xec, 0x2c, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x7f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0xfc, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x3c, 0xe0, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x23, 0x3e,
-+ 0x08, 0x2f, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x78, 0xc8, 0x50, 0x30,
-+ 0xc8, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x10, 0x37, 0x50, 0x10,
-+ 0x10, 0x10, 0x10, 0x11, 0x16, 0x18, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x7f,
-+ 0x49, 0x7f, 0x49, 0x49, 0x7f, 0x41, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x21, 0x4b, 0x0d, 0x11, 0x11, 0x31,
-+ 0x50, 0x11, 0x16, 0x10, 0x11, 0x1e, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x80, 0xf0, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x55, 0x55, 0x54, 0x57,
-+ 0x56, 0x5f, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x30, 0x00, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x09, 0x09, 0x10, 0x1b,
-+ 0x36, 0x57, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x27, 0x24, 0x24, 0x4f, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x11, 0x11, 0x13, 0x7d, 0x09, 0x0b, 0x13, 0x1d,
-+ 0x34, 0x51, 0x16, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x80, 0xf0, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x1f, 0x12, 0x1f, 0x11, 0x29, 0x4b,
-+ 0x15, 0x31, 0x50, 0x13, 0x10, 0x17, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x90, 0xf0, 0x00, 0xfc, 0xf0,
-+ 0xf0, 0xf0, 0xf0, 0xa0, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x42, 0x23, 0x22, 0x03, 0x12,
-+ 0x13, 0x12, 0x22, 0x24, 0x44, 0x48, 0x00, 0x00,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xb8, 0x08, 0xf8, 0x08,
-+ 0xb8, 0xa8, 0xa8, 0xa8, 0xa8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x3f, 0x24, 0x24,
-+ 0x3f, 0x24, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x90, 0x80,
-+ 0xf8, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x08, 0x08, 0x0c,
-+ 0x78, 0x08, 0x09, 0x09, 0x0f, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80,
-+ 0xa0, 0x90, 0x08, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x27, 0x05, 0x15,
-+ 0x17, 0x15, 0x21, 0x22, 0x42, 0x44, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0x28, 0xf8, 0x28, 0x20,
-+ 0xfc, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x30, 0x51,
-+ 0x11, 0x11, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
-+ 0x20, 0x10, 0x08, 0x78, 0x84, 0x04, 0x00, 0x00,
-+ 0x09, 0x29, 0x29, 0x29, 0x3e, 0x2a, 0x4c, 0x09,
-+ 0x0d, 0x7a, 0x08, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0x28,
-+ 0x28, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0x88, 0xfc, 0x88, 0xc8, 0xa8,
-+ 0xa8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x07, 0x00, 0x08, 0x08, 0x10, 0x10, 0x3f, 0x42,
-+ 0x02, 0x02, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x20, 0x20, 0x10, 0xe8, 0x24,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4b, 0x4a, 0x4a, 0x4c, 0x49,
-+ 0x49, 0x7a, 0x4c, 0x40, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0x28,
-+ 0x48, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x03, 0x79, 0x4f, 0x49, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x43, 0x01, 0x0e, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x13, 0x11, 0x17, 0x7d, 0x13, 0x12, 0x13,
-+ 0x16, 0x1b, 0x62, 0x03, 0x03, 0x1c, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x1f, 0x35, 0x37, 0x32, 0x53,
-+ 0x12, 0x13, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x12, 0x13, 0x1c,
-+ 0x70, 0x10, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf8, 0x94,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x29, 0x48, 0x01,
-+ 0x09, 0x09, 0x12, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x60, 0xb0, 0x28, 0x24, 0x10,
-+ 0x10, 0xa0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x7f, 0x06, 0x1c, 0x6f, 0x1f, 0x2f, 0x08,
-+ 0x0f, 0x1f, 0x11, 0x1f, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x60, 0x90, 0xfc, 0xe0, 0xe0, 0x80,
-+ 0xf8, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7f, 0x09, 0x1e,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0xe0, 0x20, 0xa0, 0xa0, 0x90, 0x10, 0xf8, 0x54,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x60, 0x00, 0x00,
-+ 0x09, 0x3f, 0x07, 0x19, 0x6f, 0x09, 0x0f, 0x09,
-+ 0x0f, 0x3f, 0x04, 0x7f, 0x0c, 0x30, 0x00, 0x00,
-+ 0x20, 0xf8, 0xc0, 0x30, 0xfc, 0x20, 0xe0, 0x20,
-+ 0xe0, 0xf8, 0x40, 0xfc, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0xe0, 0x20, 0xa0, 0xa0, 0x90, 0x10, 0xf8, 0x54,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x07,
-+ 0x04, 0x18, 0x6f, 0x02, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xc0,
-+ 0x40, 0x30, 0xec, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x08, 0x08, 0x04, 0x04,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x2f, 0x24,
-+ 0x27, 0x24, 0x27, 0x24, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xe8, 0x48,
-+ 0xc8, 0x48, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x22,
-+ 0x22, 0x24, 0x28, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88,
-+ 0x48, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x0a, 0x09, 0x09, 0x17, 0x11, 0x31, 0x51, 0x1f,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08,
-+ 0x08, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x40, 0x40, 0x40,
-+ 0x40, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x12, 0x13, 0x12,
-+ 0x16, 0x1b, 0x64, 0x04, 0x09, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0xfc, 0x8c, 0x50, 0xfc, 0x50,
-+ 0x50, 0xfc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x49, 0x2a, 0x7f, 0x5d, 0x5b, 0x6b, 0x41,
-+ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x30, 0x30, 0xc8, 0x04,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x10, 0x10, 0x20, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x2a, 0x1c, 0x7f, 0x5d, 0x5b, 0x69, 0x4b,
-+ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xc8, 0x44,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68,
-+ 0x98, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x7f, 0x04, 0x04, 0x24, 0x14,
-+ 0x14, 0x14, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xfc, 0x40, 0x40, 0x48, 0x48,
-+ 0x50, 0x60, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x4d, 0x29, 0x2a, 0x7f,
-+ 0x49, 0x5d, 0x5b, 0x6b, 0x49, 0x4b, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x7c, 0xc8, 0x48,
-+ 0x28, 0x30, 0x10, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x20,
-+ 0x2f, 0x21, 0x22, 0x24, 0x28, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x88,
-+ 0xe8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x29, 0x27,
-+ 0x24, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x20, 0x24, 0x28, 0xf0, 0x20, 0x24, 0xe4, 0x5c,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f, 0x03, 0x03,
-+ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x20, 0x00, 0xfc, 0x80, 0x80,
-+ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x52, 0x12,
-+ 0x17, 0x16, 0x1a, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x10, 0x90, 0xfc, 0xa8, 0xa8, 0xa8, 0x7c, 0x10,
-+ 0x90, 0xfc, 0x90, 0x90, 0x90, 0x10, 0x00, 0x00,
-+ 0x00, 0x1e, 0x13, 0x1e, 0x10, 0x3f, 0x32, 0x5f,
-+ 0x12, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20, 0xfc,
-+ 0x20, 0x20, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b,
-+ 0x2a, 0x4b, 0x16, 0x16, 0x2b, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x90, 0xfc, 0xa8, 0xb0,
-+ 0x7c, 0x90, 0xfc, 0x90, 0x90, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x3e, 0x08, 0x0f, 0x70, 0x00,
-+ 0x7f, 0x02, 0x07, 0x1c, 0x67, 0x04, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x29, 0x08,
-+ 0x0f, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x49, 0x2a, 0x7f, 0x49, 0x5d, 0x6b, 0x4f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x7c, 0xc8, 0x30, 0xd0, 0xec, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x00, 0x1f,
-+ 0x10, 0x14, 0x12, 0x22, 0x20, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x90, 0xfc,
-+ 0x48, 0x48, 0x30, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x5f, 0x11, 0x12, 0x14,
-+ 0x10, 0x1f, 0x10, 0x13, 0x1c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0xf0, 0x10, 0x90, 0x50,
-+ 0x88, 0x90, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x52, 0x13,
-+ 0x16, 0x16, 0x1b, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x12, 0x12, 0x24, 0x4a,
-+ 0x03, 0x04, 0x1a, 0x01, 0x06, 0x78, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x50, 0x48, 0xc4, 0x04,
-+ 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7f, 0x00, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x29, 0x2f, 0x49, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xfc, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x65, 0x19, 0x19, 0x25, 0x7f,
-+ 0x11, 0x3b, 0x37, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x54, 0xfc, 0x54, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x00, 0x20, 0x17, 0x10, 0x00, 0x00, 0x70, 0x11,
-+ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x08,
-+ 0x08, 0x08, 0x30, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x12, 0x03, 0x03, 0x72, 0x12,
-+ 0x12, 0x14, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x90, 0x60,
-+ 0x20, 0xd0, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x27, 0x10, 0x13, 0x02, 0x03, 0x72, 0x13,
-+ 0x16, 0x17, 0x1a, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0xfc, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x52, 0x13,
-+ 0x12, 0x11, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x2a, 0x3e,
-+ 0x2c, 0x0c, 0x15, 0x16, 0x24, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x88, 0x88, 0x08, 0x34, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x13, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x48, 0x0c, 0x14, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x68, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x3f, 0x04, 0x04, 0x04,
-+ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x40, 0x30, 0xc8, 0x40, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x28, 0x28, 0x7c, 0x29, 0x39, 0x13, 0x7d, 0x55,
-+ 0x55, 0x7d, 0x11, 0x7d, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0x7c, 0x54, 0x7c, 0x54, 0x7c,
-+ 0x54, 0x50, 0x20, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x50, 0x17,
-+ 0x10, 0x11, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x17, 0x1a, 0x29, 0x7f, 0x09, 0x7f,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x2f, 0x29, 0x2f,
-+ 0x29, 0x2f, 0x29, 0x29, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xf8, 0x08, 0xe8, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x68, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x12, 0x12, 0x1f,
-+ 0x72, 0x12, 0x13, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x09, 0x7f, 0x01, 0x09,
-+ 0x09, 0x11, 0x23, 0x01, 0x06, 0x78, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x20,
-+ 0x10, 0x28, 0x48, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x20, 0x10, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x0b, 0x0a, 0x16, 0x3b,
-+ 0x56, 0x16, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x04, 0x18, 0x77, 0x10, 0x13, 0x7e, 0x13, 0x1a,
-+ 0x37, 0x34, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x7f, 0x05, 0x1f, 0x61, 0x06, 0x18, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xfc, 0x40, 0xf0, 0x2c, 0x20, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x7f, 0x19, 0x6f, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xfc, 0x30, 0xec, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x7f, 0x0a, 0x1b, 0x6a, 0x12, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0xfc, 0x20, 0x50, 0xac, 0xa0, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x21, 0x26, 0x40, 0x00, 0x00,
-+ 0x80, 0x90, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x0f, 0x7f,
-+ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0xe0, 0xfc,
-+ 0xc0, 0x70, 0xcc, 0x40, 0xc0, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x08, 0x08, 0x7f, 0x12, 0x11,
-+ 0x11, 0x10, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x90, 0x90, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0xfc, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x17, 0x09, 0x49, 0x21,
-+ 0x29, 0x09, 0x17, 0x11, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x58, 0xfc, 0xf0, 0x50, 0xf0,
-+ 0x50, 0xf0, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x08, 0x04, 0x7f,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x40, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0a, 0x1f, 0x12, 0x32, 0x53, 0x12,
-+ 0x12, 0x12, 0x14, 0x14, 0x18, 0x13, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xa0, 0x7c, 0x48, 0xc8, 0xa8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x13, 0x30, 0x57, 0x11,
-+ 0x13, 0x14, 0x13, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xf8, 0xa0, 0xfc, 0x50,
-+ 0xf8, 0x44, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x00,
-+ 0x1f, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88,
-+ 0x88, 0xb0, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x01, 0x7f,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x7f, 0x22, 0x12, 0x14,
-+ 0x7f, 0x08, 0x3e, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xb0, 0x80, 0xf8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x09,
-+ 0x17, 0x61, 0x1f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x20,
-+ 0xd0, 0x0c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x1f, 0x01, 0x01,
-+ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0x00,
-+ 0xf0, 0x00, 0x20, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x54, 0x57, 0x57, 0x54,
-+ 0x55, 0x7c, 0x47, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0xf8, 0x90, 0x60, 0xb0, 0x4c, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x1f, 0x02, 0x07, 0x3c, 0x03, 0x0d, 0x77,
-+ 0x01, 0x0f, 0x01, 0x3f, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0xf0, 0x00, 0xe0, 0x40, 0x80, 0x60, 0xdc,
-+ 0x00, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x1e, 0x12, 0x1e,
-+ 0x12, 0x1e, 0x12, 0x22, 0x22, 0x47, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0x78, 0x48, 0x78,
-+ 0x48, 0x78, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x11, 0x11, 0x12, 0x17, 0x18,
-+ 0x13, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x08, 0xc8, 0x48,
-+ 0xc8, 0x70, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7e, 0x13, 0x14, 0x10, 0x1f,
-+ 0x72, 0x12, 0x12, 0x12, 0x12, 0x31, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0x48, 0xc8,
-+ 0x48, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x10, 0x1f, 0x11,
-+ 0x33, 0x54, 0x13, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xf0, 0xa0, 0xfc, 0x50,
-+ 0xf8, 0x44, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x0f, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x43, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x02, 0x02, 0x03, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x00, 0x1e, 0x12, 0x12, 0x12, 0x1e, 0x12, 0x12,
-+ 0x1e, 0x12, 0x12, 0x22, 0x23, 0x46, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x48,
-+ 0x78, 0x48, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x20, 0x20, 0x07, 0x00,
-+ 0x08, 0x08, 0x10, 0x11, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x90, 0x88, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x43, 0x22, 0x27, 0x08, 0x03,
-+ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x21, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xc8,
-+ 0x70, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x3f, 0x00,
-+ 0x01, 0x01, 0x03, 0x14, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xf8, 0x60,
-+ 0x80, 0x00, 0x00, 0x90, 0x48, 0x44, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x13, 0x20, 0x3c, 0x65,
-+ 0x25, 0x25, 0x25, 0x3d, 0x25, 0x20, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x30, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x12, 0x15, 0x65, 0x28, 0x18, 0x27, 0x7d,
-+ 0x19, 0x35, 0x35, 0x31, 0x52, 0x14, 0x00, 0x00,
-+ 0x20, 0x38, 0xc8, 0x30, 0xe8, 0x24, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xe0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3d, 0x26, 0x24, 0x3d,
-+ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x04, 0xe4, 0x24, 0x24, 0xe4,
-+ 0x38, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x01,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x7c, 0x44, 0x44, 0x7c,
-+ 0x44, 0x44, 0x7c, 0x44, 0x41, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0xf8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x21, 0x1f, 0x10, 0x03, 0x7f,
-+ 0x10, 0x13, 0x10, 0x17, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xf0, 0x20, 0xe0, 0x5c, 0xf8,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x40, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x40, 0x78, 0xd0, 0x20, 0x70, 0xac, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x7f, 0x09, 0x09, 0x11, 0x77, 0x11, 0x16,
-+ 0x11, 0x03, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0xfc, 0x50, 0x4c,
-+ 0x40, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x02, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x00, 0x7f,
-+ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x00, 0xfc,
-+ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x3f, 0x04, 0x04,
-+ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x78, 0xc8, 0x50, 0x50, 0xe0, 0x50, 0x48,
-+ 0xc4, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x78, 0xd0, 0x20, 0x70, 0xac, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x2a, 0x49, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xe8, 0x28, 0x28, 0xe8,
-+ 0xb0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x17, 0x14, 0x17,
-+ 0x17, 0x17, 0x14, 0x27, 0x2d, 0x52, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xd0, 0x50, 0xd0,
-+ 0xd0, 0xf4, 0x0c, 0xfc, 0x54, 0xe4, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x2d, 0x2d,
-+ 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x5b, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, 0x78, 0x7c,
-+ 0x40, 0x7c, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x3f, 0x01, 0x01, 0x1f, 0x00, 0x00,
-+ 0x00, 0x09, 0x0e, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x10, 0x37, 0x54, 0x1f,
-+ 0x10, 0x10, 0x10, 0x11, 0x16, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x44, 0xfc,
-+ 0x40, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x11, 0x09, 0x0a, 0x7f, 0x00,
-+ 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00,
-+ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x17, 0x7c, 0x10, 0x10, 0x10,
-+ 0x10, 0x1c, 0x61, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x78,
-+ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x09, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x56, 0x57, 0x55, 0x55,
-+ 0x55, 0x55, 0x59, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x08, 0x07, 0x01,
-+ 0x04, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0, 0x00,
-+ 0x80, 0x90, 0x08, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x17, 0x39, 0x35, 0x35, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x10, 0x11, 0x22, 0x2c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x80, 0xfc,
-+ 0x80, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x3f, 0x04,
-+ 0x7f, 0x09, 0x15, 0x67, 0x19, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x40,
-+ 0xfc, 0x20, 0x50, 0xcc, 0x30, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x20, 0x20, 0x20, 0x1f, 0x02,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x30,
-+ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x0f, 0x08, 0x0f, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x1c, 0x1b, 0x1b,
-+ 0x2b, 0x2c, 0x4b, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x50,
-+ 0xf8, 0x44, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x2f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xe8, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7d,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x39, 0x2f, 0x29, 0x2f, 0x38, 0x2b, 0x2a,
-+ 0x3b, 0x2a, 0x29, 0x29, 0x2e, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0xd0, 0x10, 0xe0, 0x08, 0xc8, 0x50,
-+ 0xe4, 0x44, 0x88, 0xc8, 0x10, 0x20, 0x00, 0x00,
-+ 0x01, 0x39, 0x03, 0x7d, 0x01, 0x3d, 0x01, 0x3c,
-+ 0x03, 0x3c, 0x25, 0x26, 0x3c, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x04, 0x18, 0x6a, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x65, 0x0c, 0x14, 0x64, 0x05, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0x68, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x06, 0x38, 0x24, 0x26, 0x3a, 0x6f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xf8, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7f,
-+ 0x09, 0x2a, 0x1d, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x50, 0x88, 0xf4, 0xa0, 0xa0, 0xf8,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x2b, 0x28, 0x30, 0x28, 0x24,
-+ 0x24, 0x24, 0x24, 0x39, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x48, 0x4f, 0x48, 0x48,
-+ 0x48, 0x78, 0x48, 0x41, 0x06, 0x18, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40,
-+ 0x60, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x0a, 0x4a, 0x2c, 0x28,
-+ 0x7f, 0x0c, 0x12, 0x12, 0x20, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x7c, 0x04, 0x04, 0x04,
-+ 0x04, 0x1c, 0x64, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x17, 0x11, 0x30, 0x57, 0x10,
-+ 0x13, 0x10, 0x17, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xfc, 0x40,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x1f, 0x01,
-+ 0x7f, 0x15, 0x2f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf0, 0x00,
-+ 0xfc, 0x50, 0xe8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7f, 0x11, 0x10, 0x13, 0x1c,
-+ 0x71, 0x10, 0x17, 0x10, 0x13, 0x3c, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x60, 0x50, 0x48, 0x44,
-+ 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x28, 0x28, 0x3e, 0x29, 0x29, 0x4a,
-+ 0x0e, 0x78, 0x08, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90,
-+ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x78, 0x4b, 0x48, 0x7f, 0x49, 0x49, 0x7a,
-+ 0x4c, 0x4b, 0x78, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x24, 0x5c,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x19, 0x71, 0x11, 0x11, 0x7d, 0x10, 0x19,
-+ 0x36, 0x35, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40, 0x58,
-+ 0x64, 0x90, 0x60, 0x88, 0x30, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x3f, 0x22, 0x7e, 0x04,
-+ 0x08, 0x0e, 0x78, 0x08, 0x09, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x21, 0x22, 0x04, 0x0b,
-+ 0x09, 0x10, 0x10, 0x20, 0x21, 0x2e, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0xf0,
-+ 0x10, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x12, 0x13, 0x2a,
-+ 0x45, 0x05, 0x09, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x50, 0x88, 0x8c, 0xf4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x12, 0x12, 0x12,
-+ 0x16, 0x1b, 0x65, 0x05, 0x09, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0xfc, 0x20, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x56, 0x55,
-+ 0x57, 0x54, 0x58, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48, 0x50,
-+ 0xfc, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x09, 0x1f, 0x61, 0x05,
-+ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x20, 0xf0, 0x0c, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x03, 0x05, 0x05,
-+ 0x09, 0x11, 0x2f, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x40,
-+ 0x20, 0x10, 0xe8, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x06, 0x7b, 0x2a, 0x1c, 0x7f, 0x1c, 0x1a, 0x2a,
-+ 0x7e, 0x2b, 0x3e, 0x2a, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x68, 0xd8, 0xd8, 0x48,
-+ 0xd8, 0x68, 0x48, 0x48, 0x48, 0xd8, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0a, 0x09, 0x09,
-+ 0x09, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x03, 0x08, 0x08, 0x1f, 0x21, 0x42, 0x0c, 0x30,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0xc0, 0x40, 0x20, 0xf0, 0x28, 0x24, 0x20, 0xc0,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x17, 0x1a, 0x12, 0x17,
-+ 0x10, 0x17, 0x20, 0x3f, 0x40, 0x01, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0x38, 0xd4, 0x30, 0xc0,
-+ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x17, 0x1a, 0x12,
-+ 0x17, 0x10, 0x23, 0x2e, 0x43, 0x02, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0xfc, 0x38, 0xd4, 0x90,
-+ 0xfc, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x1f, 0x12, 0x1f, 0x17, 0x1a, 0x17, 0x14,
-+ 0x17, 0x17, 0x25, 0x22, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xfc, 0x70, 0xa8, 0xf4, 0x90,
-+ 0xf0, 0xf0, 0xa8, 0xfc, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x1f, 0x12, 0x17,
-+ 0x16, 0x1a, 0x13, 0x22, 0x42, 0x02, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0x20, 0xfc, 0x20, 0x70,
-+ 0xf0, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x13,
-+ 0x10, 0x1f, 0x60, 0x00, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x09, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3c, 0x24, 0x07, 0x0a, 0x12, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x70,
-+ 0x70, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4b, 0x48, 0x48, 0x7f, 0x48,
-+ 0x48, 0x49, 0x7a, 0x4c, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x2f, 0x49, 0x09, 0x7f,
-+ 0x09, 0x09, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4b, 0x4a, 0x4a, 0x4b,
-+ 0x48, 0x7b, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x0f, 0x09, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x90, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x0f, 0x08, 0x0f, 0x7f,
-+ 0x05, 0x1f, 0x69, 0x09, 0x09, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0xe0, 0x20, 0xe0, 0xfc,
-+ 0x40, 0xf0, 0x2c, 0x20, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x24, 0x27, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x60, 0x60,
-+ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x78, 0xc8, 0xf8,
-+ 0x48, 0x78, 0x48, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3b, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0x30, 0xf8, 0xb8, 0xd8, 0xf8,
-+ 0xf8, 0x10, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x12, 0x12, 0x3e, 0x35,
-+ 0x34, 0x51, 0x51, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0xfc, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xfc, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x02, 0x02, 0x12, 0x12,
-+ 0x22, 0x42, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x50, 0x48,
-+ 0x44, 0x44, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x30, 0x53, 0x10,
-+ 0x10, 0x17, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x13, 0x1c,
-+ 0x70, 0x11, 0x12, 0x14, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x01,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x00,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x08,
-+ 0x08, 0x09, 0x11, 0x12, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0xe0,
-+ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x21, 0x11, 0x12, 0x07, 0x00, 0x70, 0x11,
-+ 0x12, 0x12, 0x11, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x40, 0x80, 0x00,
-+ 0x04, 0x04, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x12,
-+ 0x14, 0x14, 0x18, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x28, 0x20, 0x90,
-+ 0x50, 0x48, 0x04, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x29, 0x2b, 0x3b, 0x25,
-+ 0x2b, 0x3f, 0x25, 0x2f, 0x35, 0x25, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xd8, 0xd8,
-+ 0xf8, 0x68, 0x58, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x13, 0x16, 0x1b, 0x12,
-+ 0x13, 0x10, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0x30, 0xd8, 0xf4, 0x10,
-+ 0xf0, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x33, 0x52,
-+ 0x13, 0x17, 0x10, 0x10, 0x11, 0x1e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0xa8,
-+ 0xf8, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x21, 0x11, 0x1f, 0x41, 0x2f, 0x20, 0x0f, 0x18,
-+ 0x1a, 0x2a, 0x2b, 0x4a, 0x48, 0x48, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x80, 0xf8, 0x88,
-+ 0xa8, 0xa8, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x07, 0x15,
-+ 0x17, 0x23, 0x21, 0x40, 0x41, 0x4e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0x28,
-+ 0xf8, 0xf0, 0x20, 0xc0, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x0f, 0x1f, 0x12,
-+ 0x1f, 0x3f, 0x04, 0x02, 0x07, 0x78, 0x00, 0x00,
-+ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0xf0, 0x90,
-+ 0xf0, 0xe0, 0x40, 0x80, 0x80, 0x78, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x48,
-+ 0x49, 0x7a, 0x4c, 0x48, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0, 0xe0,
-+ 0x50, 0x48, 0x44, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x03,
-+ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x80,
-+ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e, 0x2c,
-+ 0x0d, 0x0d, 0x16, 0x17, 0x24, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x70, 0x70,
-+ 0xa8, 0x24, 0xa0, 0xa0, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10,
-+ 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x4d, 0x3f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa0, 0x30, 0xf8, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x24, 0x24, 0xfc, 0x24, 0x24, 0xfc,
-+ 0x24, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x45, 0x15, 0x14, 0x25,
-+ 0x07, 0x19, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x50, 0x48, 0x84, 0x24,
-+ 0xe0, 0x00, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x23, 0x54, 0x15, 0x27, 0x19,
-+ 0x0f, 0x09, 0x0f, 0x01, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x90, 0x28, 0xe4, 0x00,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x20, 0x07, 0x11,
-+ 0x13, 0x14, 0x23, 0x20, 0x41, 0x46, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x10,
-+ 0xe8, 0x44, 0xf8, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x0f, 0x08, 0x7f,
-+ 0x08, 0x0f, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0xe0, 0x20, 0xfc,
-+ 0x20, 0xe0, 0x88, 0x50, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x18, 0x70, 0x11, 0x12, 0x7c, 0x13, 0x18,
-+ 0x34, 0x34, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xe8, 0x04, 0xf8, 0x10,
-+ 0x60, 0x28, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d,
-+ 0x25, 0x25, 0x25, 0x26, 0x26, 0x4c, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x0c, 0x70, 0x64, 0x64, 0x68,
-+ 0x50, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x13,
-+ 0x3d, 0x24, 0x06, 0x0a, 0x10, 0x23, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x2c,
-+ 0x28, 0x70, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1b, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x10, 0x10, 0x10, 0x16, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x80, 0xfc,
-+ 0x40, 0x40, 0x24, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x79, 0x49, 0x49, 0x79, 0x49, 0x49, 0x79,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x10, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x04, 0x19, 0x0a, 0x7e, 0x0a, 0x1b,
-+ 0x1c, 0x2b, 0x48, 0x08, 0x09, 0x1a, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x90, 0x50, 0x20, 0xd0, 0x4c,
-+ 0x40, 0xf8, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x00, 0x3f,
-+ 0x21, 0x43, 0x1e, 0x01, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xe0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x1a, 0x2a, 0x7f, 0x0a, 0x0a,
-+ 0x0a, 0x7f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa0, 0xa0, 0xf8, 0xa0, 0xa0,
-+ 0xa0, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x04, 0x3f, 0x09, 0x0f, 0x11,
-+ 0x21, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x40, 0x20, 0xf0, 0x08, 0x00, 0xf0, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x01, 0x00, 0x7f, 0x00, 0x01,
-+ 0x02, 0x04, 0x18, 0x60, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0x80, 0xfc, 0x88, 0x90,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3e,
-+ 0x14, 0x7f, 0x1b, 0x2c, 0x48, 0x19, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x40, 0x7c,
-+ 0xd0, 0x70, 0xac, 0xf8, 0x48, 0x98, 0x00, 0x00,
-+ 0x04, 0x3e, 0x05, 0x04, 0x7f, 0x14, 0x14, 0x3c,
-+ 0x34, 0x34, 0x36, 0x3f, 0x63, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x18, 0x1c, 0x1a,
-+ 0x2a, 0x28, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x11, 0x7d, 0x25, 0x26, 0x25,
-+ 0x75, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x50, 0x78, 0xc0, 0x3c, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3a, 0x24, 0x06, 0x0a, 0x10, 0x23, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8,
-+ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x01, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x02, 0x02, 0x07, 0x04, 0x0c, 0x12, 0x21, 0x02,
-+ 0x07, 0x1c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x3c, 0x24,
-+ 0x24, 0x24, 0x3c, 0x24, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x7c, 0x44, 0x44, 0x44, 0x7c, 0x44, 0x44,
-+ 0x44, 0x7c, 0x45, 0x41, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0x88, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x02,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x18,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x24, 0x12, 0x12, 0x00, 0x0f, 0x71, 0x11,
-+ 0x12, 0x14, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0x90, 0x90, 0xa0, 0x80, 0xf8, 0xc0, 0xa0,
-+ 0x90, 0x88, 0x80, 0x80, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x90, 0x50, 0x20, 0x40,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x4a, 0x4b, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x45, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x10, 0x7d, 0x27, 0x24, 0x24,
-+ 0x77, 0x48, 0x0c, 0x14, 0x27, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xa0, 0x10, 0xf8, 0x48, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x28, 0x28, 0x28, 0x3e, 0x28, 0x48, 0x08,
-+ 0x0e, 0x78, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x24, 0x27, 0x05, 0x17,
-+ 0x17, 0x15, 0x25, 0x2a, 0x4c, 0x50, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0x68,
-+ 0xb0, 0x10, 0xb0, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x04, 0x07, 0x08, 0x11, 0x7f, 0x11, 0x11, 0x1f,
-+ 0x12, 0x02, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0xc0, 0x80, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x08, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20,
-+ 0xfc, 0x24, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x15, 0x65, 0x19, 0x19, 0x25, 0x7c,
-+ 0x13, 0x3a, 0x36, 0x32, 0x52, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x64, 0x1b, 0x1a, 0x26, 0x7e,
-+ 0x12, 0x3a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0xa8, 0xa8, 0xe8,
-+ 0xa8, 0xe8, 0xa8, 0xa8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x02, 0x3f, 0x24, 0x24, 0x27,
-+ 0x24, 0x27, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x48, 0x48, 0xc8,
-+ 0x48, 0xc8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x08, 0x3f, 0x09, 0x7f, 0x11,
-+ 0x1d, 0x25, 0x55, 0x09, 0x16, 0x61, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xfc, 0x54, 0x74, 0x54,
-+ 0x74, 0x54, 0xfc, 0x04, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x11, 0x11, 0x19, 0x11,
-+ 0x31, 0x50, 0x17, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xa0, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x28, 0x4f, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x01, 0x1f, 0x11,
-+ 0x10, 0x10, 0x10, 0x10, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x10, 0x08, 0xfc, 0x00,
-+ 0x90, 0x90, 0x60, 0x64, 0x9c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x07, 0x01, 0x02,
-+ 0x7f, 0x04, 0x0f, 0x10, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x20, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x1f, 0x00, 0x01, 0x01, 0x7f, 0x01, 0x03, 0x1f,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0xf0, 0x60, 0x80, 0x00, 0xfc, 0x00, 0x00, 0xf0,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x1e, 0x02, 0x02, 0x3f, 0x02, 0x02,
-+ 0x7f, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x4b, 0x30, 0x10, 0x37, 0x48, 0x08, 0x1b,
-+ 0x2a, 0x4a, 0x0a, 0x0a, 0x0f, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x60, 0xfc, 0x40, 0xc0, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x07, 0x00, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x17, 0x66, 0x1a, 0x1b, 0x26, 0x7f,
-+ 0x12, 0x3a, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0xf8,
-+ 0x88, 0x88, 0x88, 0x78, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x7e, 0x09, 0x7e, 0x08,
-+ 0x1d, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x58, 0xe0, 0x40, 0x5c,
-+ 0xe0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x2f, 0x40, 0x7f, 0x03,
-+ 0x3d, 0x06, 0x39, 0x06, 0x78, 0x03, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xe8, 0x00, 0xfc, 0x48,
-+ 0xd0, 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x1f, 0x10, 0x37, 0x50, 0x17,
-+ 0x10, 0x17, 0x15, 0x15, 0x17, 0x15, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0x30, 0xfc, 0x20, 0x78,
-+ 0xc8, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x03, 0x03, 0x05,
-+ 0x09, 0x11, 0x21, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0x40,
-+ 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x3f, 0x25, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0x20, 0x50, 0x50,
-+ 0x88, 0x04, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x10,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01,
-+ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00,
-+ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x12, 0x12, 0x22, 0x44,
-+ 0x04, 0x08, 0x10, 0x01, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x09, 0x0c, 0x12, 0x2b, 0x48, 0x3c, 0x24, 0x3f,
-+ 0x24, 0x3c, 0x28, 0x25, 0x3b, 0x62, 0x00, 0x00,
-+ 0x08, 0x88, 0x90, 0xfc, 0x90, 0x90, 0x90, 0xfc,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x03, 0x03, 0x03,
-+ 0x05, 0x05, 0x09, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x10,
-+ 0x1f, 0x10, 0x21, 0x22, 0x4c, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x80,
-+ 0xfc, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x0c,
-+ 0x1a, 0x1a, 0x28, 0x48, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x68,
-+ 0x58, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x09, 0x7f, 0x09, 0x09, 0x0f, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xe0, 0xf8, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x27,
-+ 0x24, 0x24, 0x27, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8,
-+ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x20,
-+ 0x22, 0x2a, 0x2a, 0x32, 0x21, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x88,
-+ 0x88, 0x28, 0x58, 0x58, 0xc8, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x09, 0x15, 0x13, 0x21,
-+ 0x42, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10,
-+ 0xd0, 0x30, 0x1c, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x11, 0x11, 0x17, 0x19, 0x71,
-+ 0x11, 0x11, 0x11, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x30, 0xd0, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x60, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x10, 0x11, 0x01, 0x07, 0x10,
-+ 0x13, 0x22, 0x22, 0x42, 0x43, 0x02, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xa0, 0x10, 0x38, 0xc4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x10, 0x11, 0x31,
-+ 0x53, 0x14, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x90, 0x50,
-+ 0x20, 0xa0, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x02, 0x0c, 0x32, 0x01, 0x06, 0x78, 0x3f, 0x12,
-+ 0x1e, 0x12, 0x1e, 0x13, 0x7e, 0x02, 0x00, 0x00,
-+ 0xc0, 0x30, 0x48, 0x80, 0x60, 0x1c, 0xf8, 0x50,
-+ 0x70, 0x48, 0x44, 0x44, 0x78, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x12, 0x1e, 0x12, 0x12, 0x1e,
-+ 0x12, 0x13, 0x1e, 0x62, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x2a, 0x3e, 0x2b, 0x2a, 0x3e,
-+ 0x08, 0x3e, 0x08, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0x20, 0xfc, 0x28, 0x30,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x7c, 0x04, 0x05, 0x3d, 0x26, 0x20, 0x3c,
-+ 0x24, 0x25, 0x05, 0x06, 0x08, 0x30, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0, 0xa8,
-+ 0xa8, 0x24, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x01, 0x7f,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x13, 0x12, 0x12, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0x10, 0x60, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x11, 0x21, 0x49, 0x09, 0x12, 0x14, 0x37,
-+ 0x51, 0x11, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0xf0,
-+ 0x10, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x27, 0x14, 0x0f, 0x14, 0x67,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xc8, 0x50, 0xe0, 0x58, 0xc4,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x2b, 0x08, 0x2d,
-+ 0x2b, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90, 0xfc,
-+ 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x00, 0x09, 0x08, 0x08, 0x7e, 0x05, 0x24, 0x14,
-+ 0x14, 0x08, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x53, 0x14, 0x11, 0x11, 0x12, 0x00, 0x00,
-+ 0x40, 0x80, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x2a, 0x1c, 0x7f, 0x1c, 0x2a,
-+ 0x7f, 0x12, 0x3c, 0x04, 0x1a, 0x63, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x7c, 0x90, 0x90,
-+ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x12, 0x19, 0x25, 0x24, 0x79, 0x10, 0x7f,
-+ 0x11, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0x20, 0xfc, 0x70, 0x50,
-+ 0x70, 0x78, 0x48, 0x78, 0xc0, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x19, 0x37, 0x34, 0x37, 0x54,
-+ 0x17, 0x14, 0x17, 0x14, 0x14, 0x15, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x7e, 0x12, 0x1e, 0x1e,
-+ 0x12, 0x17, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x9c, 0x90, 0x90, 0x90,
-+ 0x10, 0x30, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x23, 0x22, 0x02, 0x0a,
-+ 0x0b, 0x0a, 0x12, 0x12, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x4f, 0x29, 0x2b, 0x0a, 0x1b,
-+ 0x2b, 0x4a, 0x10, 0x15, 0x25, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0xc0, 0x30, 0xfc, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0x98, 0xc0, 0x28, 0x14, 0xf4, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0x7d, 0x03, 0x3c, 0x03, 0x3a,
-+ 0x03, 0x3a, 0x2b, 0x2a, 0x3a, 0x2a, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x7e, 0x10, 0x7d, 0x57, 0x7c, 0x57,
-+ 0x7e, 0x13, 0x7e, 0x13, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x49, 0x4b, 0x4b, 0x4d, 0x49,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x90, 0x90, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x11, 0x31, 0x52, 0x13,
-+ 0x15, 0x19, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x11, 0x11, 0x31, 0x57, 0x17,
-+ 0x1a, 0x14, 0x11, 0x16, 0x11, 0x1e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf0, 0xf0, 0xf0, 0xfc, 0x58,
-+ 0xe8, 0xf4, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x04, 0x03, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x07, 0x06,
-+ 0x05, 0x09, 0x08, 0x11, 0x26, 0x58, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10,
-+ 0x20, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x02, 0x3f, 0x22, 0x7f, 0x04, 0x07, 0x0c,
-+ 0x0f, 0x14, 0x27, 0x44, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x05, 0x25, 0x39, 0x2b, 0x2b, 0x25, 0x27,
-+ 0x2b, 0x3f, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x20, 0x28, 0xc8, 0x58, 0x58, 0x28, 0x38,
-+ 0x58, 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x15, 0x36, 0x54, 0x15, 0x16,
-+ 0x11, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0xa0, 0x40, 0xb0, 0x0c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x0f, 0x0f, 0x0f, 0x3f, 0x25,
-+ 0x57, 0x23, 0x0e, 0x31, 0x07, 0x78, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0xe0, 0xe0, 0xfc, 0x38,
-+ 0xe8, 0xe4, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x17, 0x11, 0x1d,
-+ 0x71, 0x11, 0x11, 0x11, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x1c, 0xf0, 0x10, 0x10, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x04, 0x04, 0x0f, 0x0c, 0x17,
-+ 0x24, 0x47, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x12, 0x3a, 0x36,
-+ 0x37, 0x52, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x23, 0x22, 0x03, 0x12,
-+ 0x13, 0x20, 0x2f, 0x40, 0x43, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x84, 0x04, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x40, 0x23, 0x22, 0x02, 0x0b,
-+ 0x0a, 0x0a, 0x13, 0x12, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0xb0, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x09, 0x48, 0x30, 0x17, 0x30, 0x4b, 0x0a, 0x1a,
-+ 0x2b, 0x4a, 0x0b, 0x0a, 0x33, 0x12, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8,
-+ 0x38, 0x18, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x21, 0x11, 0x12, 0x7f, 0x0c, 0x3f, 0x2d, 0x2d,
-+ 0x37, 0x33, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xa4, 0x20, 0xfc, 0x20, 0x20,
-+ 0x30, 0x50, 0x50, 0x88, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x21,
-+ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x08, 0x08, 0x18, 0x14,
-+ 0x35, 0x51, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x80, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x08, 0x0a, 0x14, 0x19,
-+ 0x37, 0x55, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0xa0, 0x10,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3d, 0x02, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3d, 0x22, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x48, 0xe4,
-+ 0xa0, 0xb8, 0xa8, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x02, 0x22, 0x12, 0x1f, 0x02, 0x02, 0x73, 0x12,
-+ 0x12, 0x14, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x7c, 0x88, 0x90,
-+ 0xfc, 0x90, 0x90, 0xb0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x3f, 0x21,
-+ 0x21, 0x3f, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xf8, 0x08,
-+ 0x08, 0xf8, 0x08, 0x00, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3e, 0x04, 0x3f, 0x15, 0x15, 0x7f, 0x15,
-+ 0x15, 0x3f, 0x04, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x80, 0x78, 0x48, 0xd0, 0x50, 0x60, 0xd0, 0x48,
-+ 0x44, 0xc4, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x0a, 0x0c, 0x0c,
-+ 0x14, 0x16, 0x29, 0x4f, 0x38, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x7f,
-+ 0x55, 0x67, 0x5f, 0x49, 0x49, 0x4b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0x30, 0x28, 0x38, 0xe4, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x05, 0x08, 0x10,
-+ 0x00, 0x00, 0x00, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0x10, 0x90, 0x60,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x02, 0x01, 0x01, 0x7f, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0x80, 0xfc, 0x08, 0x10,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x6f, 0x01, 0x01,
-+ 0x3f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x00,
-+ 0xf8, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x07, 0x04, 0x04, 0x07, 0x04, 0x00,
-+ 0x7f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00,
-+ 0x12, 0x09, 0x7f, 0x10, 0x17, 0x3f, 0x40, 0x07,
-+ 0x07, 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x20, 0xd0, 0xf8, 0x04, 0xc0,
-+ 0xc0, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x09, 0x31, 0x2f, 0x27, 0x35, 0x27, 0x25, 0x37,
-+ 0x2f, 0x21, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x38, 0xe8, 0xc8, 0x58, 0xc8, 0x48, 0xd8,
-+ 0xe8, 0x08, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x0c, 0x08, 0x7f, 0x09, 0x0a,
-+ 0x0c, 0x08, 0x08, 0x08, 0x08, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x27, 0x24, 0x67, 0x27, 0x24,
-+ 0x27, 0x26, 0x2b, 0x2b, 0x32, 0x22, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0xf8, 0x40,
-+ 0xf8, 0x48, 0xf8, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x12, 0x53, 0x24, 0x14, 0x08,
-+ 0x0c, 0x12, 0x16, 0x3a, 0x61, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x22, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x09, 0x12, 0x04,
-+ 0x18, 0x6f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x20, 0x10, 0x90, 0x40,
-+ 0x30, 0xec, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x17, 0x10,
-+ 0x17, 0x14, 0x27, 0x27, 0x44, 0x04, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0xf0, 0x80,
-+ 0xf0, 0x90, 0xf0, 0xf0, 0x90, 0xb0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x10, 0x1f,
-+ 0x71, 0x13, 0x14, 0x11, 0x12, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x10, 0x13, 0x18,
-+ 0x77, 0x10, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x38, 0xc8, 0x48, 0x50, 0x20, 0x40, 0xf8, 0x40,
-+ 0xfc, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x79, 0x11, 0x16, 0x12, 0x19,
-+ 0x72, 0x17, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x28, 0x28, 0xfc, 0xd0, 0x7c,
-+ 0xd0, 0xfc, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4b, 0x48, 0x4f, 0x79, 0x4b,
-+ 0x4e, 0x4b, 0x7a, 0x4b, 0x42, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xb8, 0x88, 0xf8, 0x20, 0xf8,
-+ 0x40, 0xf0, 0x40, 0xf0, 0x40, 0xf8, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x34, 0x37,
-+ 0x31, 0x53, 0x54, 0x11, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x18, 0x1d, 0x1b,
-+ 0x2a, 0x28, 0x48, 0x0b, 0x08, 0x08, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x24,
-+ 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x11, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x08,
-+ 0x08, 0x0f, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x21, 0x02, 0x10,
-+ 0x11, 0x23, 0x25, 0x41, 0x41, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x48, 0x48, 0xa0,
-+ 0x10, 0xf8, 0x14, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x16, 0x35, 0x35, 0x3a, 0x50,
-+ 0x11, 0x1f, 0x15, 0x25, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x48, 0x48, 0xa0,
-+ 0x10, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11,
-+ 0x1f, 0x11, 0x11, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x4c, 0x12, 0x3f, 0x01, 0x0f,
-+ 0x01, 0x3f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x48, 0xb8, 0xf0, 0x00, 0xe0,
-+ 0x00, 0xf8, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x01, 0x1f, 0x01,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x4a, 0x2b, 0x2c, 0x09, 0x7e, 0x19,
-+ 0x1b, 0x19, 0x1b, 0x2d, 0x29, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90, 0xfc,
-+ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x09, 0x7f, 0x09, 0x09, 0x0f,
-+ 0x01, 0x3f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0xfc, 0x20, 0xe0, 0xf0,
-+ 0x00, 0xf8, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x01, 0x3f, 0x24, 0x49, 0x12,
-+ 0x04, 0x1f, 0x68, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x48, 0x20, 0x90,
-+ 0x40, 0xf0, 0x2c, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x02,
-+ 0x7f, 0x04, 0x0f, 0x08, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x00,
-+ 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7e, 0x01, 0x3d, 0x03, 0x3c,
-+ 0x03, 0x38, 0x2a, 0x2a, 0x3b, 0x22, 0x00, 0x00,
-+ 0x08, 0x30, 0xc8, 0x48, 0x50, 0x20, 0xf8, 0x40,
-+ 0xfc, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3d, 0x29, 0x09, 0x2f,
-+ 0x29, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa0, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x27, 0x12, 0x11, 0x01, 0x03, 0x70, 0x17,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x3c, 0xc8, 0x48, 0x50, 0x20, 0xf8, 0x40, 0xfc,
-+ 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x28, 0x27,
-+ 0x25, 0x25, 0x3a, 0x24, 0x21, 0x22, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x05, 0x1f,
-+ 0x67, 0x04, 0x07, 0x05, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x40, 0xf0,
-+ 0xcc, 0x40, 0xe0, 0x20, 0xc0, 0x38, 0x00, 0x00,
-+ 0x14, 0x12, 0x2a, 0x0c, 0x13, 0x3e, 0x52, 0x1f,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa8, 0x30, 0x20, 0x50, 0x88,
-+ 0x04, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x12, 0x12, 0x1e,
-+ 0x72, 0x13, 0x1e, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x80, 0x80, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0xc8, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x12, 0x22, 0x48, 0x08, 0x14, 0x13, 0x22,
-+ 0x7e, 0x22, 0x22, 0x3e, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x20, 0x07, 0x10,
-+ 0x10, 0x20, 0x20, 0x41, 0x42, 0x4c, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x0a, 0x42, 0x24, 0x20, 0x01, 0x12,
-+ 0x17, 0x1a, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0x20, 0x10, 0x08, 0x48, 0x40, 0xa0, 0x20, 0x10,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x0a, 0x0e, 0x32, 0x07, 0x01,
-+ 0x3f, 0x04, 0x02, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x28, 0x38, 0xc8, 0x18, 0x00,
-+ 0xf8, 0x40, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x1a, 0x6f, 0x09, 0x0f, 0x09,
-+ 0x0f, 0x1f, 0x04, 0x7f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x98, 0x68, 0xf8, 0x20, 0xe0, 0x20,
-+ 0xe0, 0xf0, 0x40, 0xfc, 0x60, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x24, 0x27, 0x00, 0x12,
-+ 0x12, 0x22, 0x22, 0x43, 0x44, 0x48, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xfc, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x10, 0x14, 0x64, 0x19,
-+ 0x16, 0x7e, 0x2c, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x88, 0x90, 0xfc, 0x90,
-+ 0xf8, 0x90, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x48, 0xd0,
-+ 0x28, 0xfc, 0xa4, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x0b, 0x0a, 0x17, 0x18,
-+ 0x37, 0x54, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x09, 0x05, 0x05, 0x7f, 0x01,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x20, 0x40, 0xfc, 0x00,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x09, 0x05,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x40,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x2a, 0x2a, 0x3e,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x00,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x41, 0x23, 0x24, 0x00, 0x13,
-+ 0x1f, 0x22, 0x22, 0x42, 0x43, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xc0, 0xc0, 0x30,
-+ 0xfc, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x09, 0x4a, 0x20,
-+ 0x25, 0x0f, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xc0, 0xf0, 0x90, 0x60, 0x60,
-+ 0x90, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0xa0, 0x38, 0x48, 0xd0, 0x30, 0x30, 0x48,
-+ 0xfc, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x02, 0x0c, 0x32, 0x22, 0x32, 0x2a, 0x2a, 0x22,
-+ 0x22, 0x2e, 0x74, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0xa8, 0x88,
-+ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x11, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x1f, 0x17,
-+ 0x15, 0x17, 0x15, 0x21, 0x2e, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0xf0, 0x00, 0xf0, 0xd0, 0x10, 0xd0,
-+ 0x50, 0xd0, 0x54, 0xec, 0x2c, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x7f, 0x17, 0x34, 0x3f, 0x3d,
-+ 0x55, 0x55, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xbc, 0xa4, 0xbc, 0xbc, 0x44, 0xfc, 0xf4,
-+ 0xf4, 0x54, 0xf4, 0xe4, 0x5c, 0x4c, 0x00, 0x00,
-+ 0x20, 0x17, 0x15, 0x47, 0x24, 0x27, 0x05, 0x17,
-+ 0x10, 0x17, 0x25, 0x25, 0x5f, 0x40, 0x00, 0x00,
-+ 0x20, 0xe0, 0x20, 0xbc, 0xc0, 0x80, 0x38, 0xc0,
-+ 0x00, 0xf8, 0x28, 0x28, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x3e, 0x3f, 0x24,
-+ 0x3f, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0x7c, 0x80, 0x00, 0x78,
-+ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x2f,
-+ 0x27, 0x27, 0x27, 0x23, 0x2d, 0x21, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xe8,
-+ 0xc8, 0xc8, 0xc8, 0x88, 0x68, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x48, 0x7d, 0x7c, 0x7e, 0x4f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x78, 0x00, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x7f, 0x0c, 0x0e,
-+ 0x15, 0x15, 0x24, 0x44, 0x04, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x19, 0x05, 0x02, 0x05, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x00, 0x00, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x14, 0x1b, 0x12,
-+ 0x14, 0x1c, 0x14, 0x27, 0x24, 0x47, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x80, 0xfc, 0xf0, 0xf0,
-+ 0x90, 0xf0, 0xf8, 0x90, 0x60, 0x9c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x0f,
-+ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0xe0,
-+ 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x3e, 0x04, 0x7f, 0x0e, 0x15, 0x64, 0x05,
-+ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x98, 0x00,
-+ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x12, 0x13, 0x12, 0x7e, 0x13,
-+ 0x10, 0x13, 0x18, 0x60, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x7e, 0x12, 0x12, 0x12, 0x7f, 0x10,
-+ 0x17, 0x14, 0x1c, 0x67, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0x28, 0xa8, 0x68, 0x98, 0xf8, 0x40,
-+ 0xfc, 0x64, 0x94, 0xf4, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x29, 0x2f, 0x09, 0x1f,
-+ 0x29, 0x4b, 0x13, 0x15, 0x29, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x48, 0xa8, 0x28, 0x28, 0xe8,
-+ 0x28, 0xa8, 0x68, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3f,
-+ 0x01, 0x7f, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8,
-+ 0x00, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x0b, 0x0a, 0x16, 0x1b,
-+ 0x34, 0x57, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x01, 0x3f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x26, 0x3a, 0x37, 0x3e, 0x08,
-+ 0x7f, 0x4d, 0x53, 0x7f, 0x41, 0x43, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0xd0, 0x50, 0x78, 0x50,
-+ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x28, 0x2b, 0x30, 0x29, 0x26,
-+ 0x24, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x5c,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x48, 0x0f, 0x10, 0x13, 0x30,
-+ 0x53, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x21, 0x16, 0x02, 0x19, 0x62,
-+ 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x50, 0x80, 0xb0, 0x4c,
-+ 0xa0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x00, 0x08, 0x04, 0x04,
-+ 0x02, 0x02, 0x02, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x13, 0x10, 0x2f, 0x48, 0x13,
-+ 0x30, 0x57, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xf0, 0x90, 0xfc, 0x90, 0xf0,
-+ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x12, 0x12, 0x1f,
-+ 0x70, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x54, 0x55, 0x56, 0x7c, 0x55,
-+ 0x56, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x37, 0x32, 0x2a, 0x3c, 0x65, 0x0a, 0x1f,
-+ 0x64, 0x3f, 0x15, 0x0e, 0x07, 0x78, 0x00, 0x00,
-+ 0x04, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0x24, 0x24,
-+ 0xa4, 0xa4, 0x24, 0x04, 0x84, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x21, 0x27, 0x00, 0x12,
-+ 0x12, 0x22, 0x22, 0x42, 0x44, 0x48, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xe8, 0x08, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x21, 0x16, 0x14, 0x45, 0x24, 0x25, 0x0e, 0x10,
-+ 0x17, 0x24, 0x27, 0x44, 0x47, 0x44, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0x28, 0xa8, 0xc8, 0x58, 0x80,
-+ 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x10, 0x10, 0x13, 0x7c, 0x11,
-+ 0x11, 0x11, 0x1e, 0x62, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x60, 0x90, 0xf8, 0x08, 0x50,
-+ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x06, 0x39, 0x20, 0x24, 0x26, 0x39, 0x62, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x08, 0x30, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3f, 0x24, 0x65,
-+ 0x25, 0x25, 0x3d, 0x25, 0x22, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x60, 0x90, 0xe8, 0x08, 0x50,
-+ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x08, 0x88, 0x48,
-+ 0x48, 0x50, 0x50, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x2a, 0x30, 0x2b, 0x25,
-+ 0x25, 0x26, 0x39, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0x40,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x04, 0x7f, 0x00, 0x1f, 0x11,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x14, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xf8, 0x08, 0xf8, 0x80, 0xf8,
-+ 0x80, 0xf8, 0x80, 0xf8, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x50, 0x11,
-+ 0x17, 0x14, 0x14, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x80, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x17, 0x14,
-+ 0x17, 0x14, 0x27, 0x2a, 0x4a, 0x11, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0xe8, 0x10, 0xf0, 0xf0, 0x90,
-+ 0xf0, 0x90, 0xf8, 0x44, 0x34, 0xf0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x09, 0x0e, 0x0a,
-+ 0x0a, 0x13, 0x12, 0x22, 0x42, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xa0, 0x28, 0x48, 0x70,
-+ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x17, 0x11, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x2f, 0x20, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0x28, 0xe0, 0xf0, 0x90, 0xf0,
-+ 0x90, 0xf0, 0xf8, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f,
-+ 0x20, 0x44, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x08, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x14, 0x13, 0x33, 0x55, 0x11,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0x18, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x29, 0x29,
-+ 0x29, 0x29, 0x2f, 0x28, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x28, 0x28,
-+ 0x28, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x23, 0x10, 0x17, 0x00, 0x11, 0x16,
-+ 0x20, 0x21, 0x46, 0x40, 0x01, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x21, 0x7f, 0x24, 0x1f, 0x68, 0x0f,
-+ 0x08, 0x0f, 0x05, 0x09, 0x31, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xfc, 0x48, 0xf0, 0x2c, 0xe0,
-+ 0x20, 0xe0, 0x60, 0x10, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c,
-+ 0x70, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x0b, 0x40, 0x22, 0x0a, 0x0d, 0x12, 0x21,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x98, 0x14, 0x64, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x22, 0x02, 0x13,
-+ 0x10, 0x12, 0x22, 0x24, 0x48, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x0c, 0x4a, 0x32, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x0a, 0x0a, 0x0c, 0x38, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
-+ 0x50, 0xf0, 0x54, 0x4c, 0x4c, 0x44, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x4f, 0x2a, 0x29, 0x0b, 0x1d,
-+ 0x29, 0x49, 0x11, 0x12, 0x24, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14,
-+ 0xf0, 0x10, 0xf0, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x78, 0x4f, 0x4a, 0x79, 0x4b, 0x4d, 0x79,
-+ 0x49, 0x49, 0x7a, 0x4a, 0x44, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x04, 0x18, 0x73, 0x10, 0x17, 0x7c, 0x11, 0x1a,
-+ 0x34, 0x35, 0x52, 0x10, 0x11, 0x1e, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c,
-+ 0xf0, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x10, 0x55, 0x35, 0x39, 0x11, 0x7f, 0x11, 0x19,
-+ 0x35, 0x35, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0xf0, 0x10, 0xf0, 0xfc, 0xf0, 0x50,
-+ 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x0a, 0x09, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0xf0,
-+ 0x10, 0x20, 0xc0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x20, 0x17, 0x12, 0x01, 0x03, 0x75, 0x11,
-+ 0x11, 0x11, 0x12, 0x14, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x48, 0x44, 0xc0, 0xfc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x0f, 0x7f, 0x0f, 0x09,
-+ 0x0f, 0x0f, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x28, 0x33, 0x28, 0x25, 0x26,
-+ 0x24, 0x25, 0x3a, 0x20, 0x21, 0x2e, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x00, 0x7e,
-+ 0x12, 0x12, 0x12, 0x1c, 0x10, 0x13, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x11, 0x14, 0x65, 0x18, 0x1b, 0x26, 0x7d,
-+ 0x19, 0x34, 0x35, 0x36, 0x50, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc, 0x40, 0x64,
-+ 0x68, 0xd0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x11, 0x13, 0x34, 0x5b, 0x12,
-+ 0x12, 0x13, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x14, 0x17,
-+ 0x10, 0x17, 0x10, 0x20, 0x3f, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x80, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x0c, 0x1a, 0x1a,
-+ 0x29, 0x4a, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x60, 0xe0, 0xd0,
-+ 0x50, 0x48, 0x44, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x23, 0x06, 0x16,
-+ 0x1a, 0x1b, 0x22, 0x22, 0x42, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x30, 0xf0, 0xe8,
-+ 0xa8, 0x24, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x17, 0x34, 0x39, 0x56, 0x11,
-+ 0x11, 0x1a, 0x16, 0x21, 0x22, 0x44, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x48,
-+ 0xfc, 0xa8, 0xa8, 0x7c, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x7d, 0x17, 0x11, 0x11, 0x7f, 0x13,
-+ 0x13, 0x15, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x78, 0x78,
-+ 0x54, 0x94, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x01, 0x7d, 0x51, 0x52, 0x7b, 0x4d, 0x49, 0x49,
-+ 0x78, 0x53, 0x52, 0x7e, 0x43, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xb8, 0xa8, 0x00, 0x00,
-+ 0x10, 0x10, 0x7e, 0x10, 0x7d, 0x57, 0x7c, 0x57,
-+ 0x7e, 0x12, 0x7f, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x2b, 0x30, 0x29, 0x26, 0x25,
-+ 0x25, 0x26, 0x3b, 0x24, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x48,
-+ 0xfc, 0x68, 0xa8, 0xfc, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x05, 0x3b, 0x2e, 0x28, 0x41, 0x00, 0x00,
-+ 0x20, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24, 0xa8,
-+ 0xfc, 0x68, 0xe8, 0x7c, 0x88, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x2a, 0x3f, 0x2b, 0x2b, 0x3f,
-+ 0x2a, 0x2f, 0x2a, 0x2a, 0x2f, 0x59, 0x00, 0x00,
-+ 0x20, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x64, 0x48,
-+ 0xfc, 0xa8, 0xa8, 0x7c, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x12, 0x12, 0x13, 0x7c, 0x13,
-+ 0x12, 0x13, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x80, 0x7c, 0x14, 0x94, 0xd4, 0x24, 0x4c, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x30, 0x09,
-+ 0x0d, 0x71, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x08, 0x30,
-+ 0x60, 0x18, 0xf4, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x02, 0x12,
-+ 0x13, 0x24, 0x24, 0x48, 0x53, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40,
-+ 0xfc, 0x40, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x02, 0x1c,
-+ 0x03, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0xc0,
-+ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x7f, 0x1c, 0x1a, 0x2a,
-+ 0x48, 0x7f, 0x08, 0x14, 0x22, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x1f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x09, 0x1b, 0x2c, 0x4b,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0a, 0x12, 0x13, 0x34, 0x54, 0x1a,
-+ 0x11, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0xe8, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x21, 0x11, 0x12, 0x05, 0x08, 0x17,
-+ 0x10, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0xe8, 0x04, 0xf8,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x1e, 0x10, 0x10, 0x1f, 0x14, 0x14, 0x17,
-+ 0x15, 0x15, 0x15, 0x29, 0x29, 0x57, 0x00, 0x00,
-+ 0xa0, 0x20, 0x20, 0x20, 0xfc, 0x24, 0x24, 0x24,
-+ 0x24, 0x24, 0x44, 0x44, 0x84, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x1f, 0x18, 0x0d, 0x12, 0x1e, 0x20,
-+ 0x7e, 0x0a, 0x0a, 0x0c, 0x08, 0x0b, 0x00, 0x00,
-+ 0x10, 0x10, 0xf0, 0x10, 0xfc, 0x20, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x18, 0x35, 0x37, 0x34, 0x53,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x10, 0x11, 0x12, 0x7c, 0x13,
-+ 0x10, 0x14, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xe8, 0x04, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x08, 0x08, 0x1c,
-+ 0x2a, 0x4a, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x1f, 0x60,
-+ 0x1f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0xf0, 0x0c,
-+ 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5d, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xe8, 0x04, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x08, 0x3f, 0x00, 0x3e, 0x01,
-+ 0x7e, 0x08, 0x2c, 0x2b, 0x4a, 0x18, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20,
-+ 0xa4, 0xb8, 0x70, 0xa8, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x02,
-+ 0x0f, 0x70, 0x1f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x80,
-+ 0xe0, 0x1c, 0xf0, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x0f,
-+ 0x00, 0x3f, 0x12, 0x0a, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xe0,
-+ 0x00, 0xf8, 0x90, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x3e, 0x22, 0x2b, 0x1f, 0x12, 0x1f,
-+ 0x12, 0x1f, 0x17, 0x24, 0x47, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x88, 0xa8, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x58, 0x60, 0x44, 0x3c, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x24, 0x35, 0x2e,
-+ 0x3f, 0x2e, 0x35, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0xa8, 0x28, 0xc4, 0xfc, 0x80, 0xfc,
-+ 0x94, 0x94, 0x98, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3f, 0x27, 0x2a, 0x32, 0x22,
-+ 0x27, 0x24, 0x27, 0x44, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xfc, 0x30, 0xe8, 0xa4, 0x20,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x3f, 0x27, 0x2a, 0x32,
-+ 0x20, 0x24, 0x24, 0x44, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xfc, 0x70, 0xa8, 0xa4,
-+ 0x80, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x2a,
-+ 0x46, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x11, 0x23, 0x01, 0x06, 0x78,
-+ 0x0f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x28, 0x44, 0x84, 0x80, 0x80,
-+ 0xf8, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x0f, 0x11, 0x29, 0x06, 0x04,
-+ 0x18, 0x60, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x08, 0x88, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x08, 0x18, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x0f, 0x19, 0x26, 0x0d, 0x31,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x18,
-+ 0xfc, 0x10, 0xa0, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x11, 0x17, 0x11, 0x1f,
-+ 0x11, 0x17, 0x23, 0x2d, 0x71, 0x01, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xfc, 0x40, 0xf0, 0x50, 0xfc,
-+ 0x50, 0xf0, 0x60, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x12, 0x12, 0x22, 0x44,
-+ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x50, 0x48, 0x44, 0xc4,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x1b, 0x34, 0x35, 0x36, 0x52,
-+ 0x13, 0x12, 0x15, 0x11, 0x12, 0x1c, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x48,
-+ 0xfc, 0xa8, 0xa8, 0x7c, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x15, 0x12, 0x42, 0x20, 0x20, 0x0e, 0x12,
-+ 0x12, 0x23, 0x22, 0x42, 0x45, 0x48, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x20, 0xfc, 0x20, 0x20, 0xa0, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x10, 0x17, 0x36, 0x3b, 0x52,
-+ 0x13, 0x10, 0x19, 0x26, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x5f, 0x12, 0x1f, 0x17, 0x11,
-+ 0x1f, 0x11, 0x2f, 0x27, 0x59, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xfc, 0x20, 0xfc, 0xf0, 0x50,
-+ 0xfc, 0x50, 0xf0, 0x70, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x64, 0x1b, 0x1a, 0x27, 0x7e,
-+ 0x1b, 0x34, 0x35, 0x32, 0x54, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x01, 0x7d, 0x2e, 0x2a, 0x39, 0x2a, 0x2f, 0x38,
-+ 0x2a, 0x2e, 0x3b, 0x6a, 0x09, 0x0a, 0x00, 0x00,
-+ 0x10, 0x10, 0xe8, 0xa8, 0x10, 0xa8, 0xfc, 0xa4,
-+ 0xa8, 0xa8, 0xb8, 0xa8, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x20, 0x17, 0x13, 0x02, 0x73,
-+ 0x12, 0x13, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0xfc, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x00, 0x20, 0x17, 0x10, 0x03, 0x02, 0x73, 0x12,
-+ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x09, 0x02,
-+ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x07, 0x19, 0x7f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x12, 0x6f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x48, 0xe4, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x16, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x32, 0x53, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0xf0, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0xa8, 0xf4, 0x14, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x48,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x3e, 0x22,
-+ 0x23, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x50, 0x20, 0x50,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x08, 0x2e,
-+ 0x29, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3e,
-+ 0x23, 0x3e, 0x0f, 0x28, 0x2e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x78, 0x70, 0x00, 0x78,
-+ 0xd0, 0x70, 0xfc, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x3f, 0x20, 0x41, 0x01, 0x3f,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x01, 0x0f, 0x09, 0x7f, 0x09, 0x0f, 0x0f, 0x09,
-+ 0x0f, 0x7f, 0x04, 0x0f, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xfc, 0x20, 0xe0, 0xe0, 0x20,
-+ 0xe0, 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x25, 0x25, 0x46, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x38, 0xa8, 0xa8, 0xb0,
-+ 0xa8, 0xa4, 0x24, 0xb8, 0xa0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x0f, 0x01, 0x01, 0x3f, 0x04,
-+ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xe0, 0x00, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e,
-+ 0x28, 0x24, 0x27, 0x39, 0x62, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x0a, 0x09, 0x7f, 0x08, 0x0d, 0x1a, 0x1a,
-+ 0x2b, 0x48, 0x09, 0x08, 0x08, 0x0f, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x48, 0x40,
-+ 0xfc, 0x90, 0xd0, 0x20, 0xd0, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7c, 0x14, 0x17, 0x3c, 0x3f,
-+ 0x36, 0x55, 0x54, 0x15, 0x16, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0xa4, 0xa8, 0xa8, 0xb0, 0xa8, 0xa4,
-+ 0x24, 0x24, 0xa4, 0x78, 0x60, 0x20, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x13,
-+ 0x12, 0x22, 0x22, 0x42, 0x43, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x88, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x47, 0x24, 0x27, 0x04, 0x17,
-+ 0x17, 0x16, 0x2a, 0x2b, 0x52, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x40, 0xf8,
-+ 0x68, 0xd8, 0x48, 0x68, 0xd8, 0x58, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x49, 0x09, 0x0f, 0x11,
-+ 0x21, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x44, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x09, 0x36, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x48, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x45, 0x3f, 0x04, 0x7f, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x40, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x03, 0x02,
-+ 0x06, 0x1b, 0x62, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x10, 0xf0, 0x20, 0x40, 0xfc, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x04, 0x3f, 0x0a, 0x7f, 0x1e, 0x12, 0x1e, 0x1e,
-+ 0x16, 0x7f, 0x07, 0x07, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0xf8, 0xf0, 0x10, 0xf0, 0xf0, 0xf0, 0xf4,
-+ 0x7c, 0xfc, 0xc0, 0xf8, 0xc0, 0x40, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x7d,
-+ 0x51, 0x19, 0x15, 0x1d, 0x62, 0x04, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
-+ 0x50, 0xf0, 0x54, 0x4c, 0x4c, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e,
-+ 0x24, 0x22, 0x27, 0x39, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x04, 0x04,
-+ 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x40, 0x20,
-+ 0x10, 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0e, 0x15, 0x25, 0x5f, 0x12, 0x1f,
-+ 0x12, 0x1f, 0x17, 0x24, 0x47, 0x18, 0x00, 0x00,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x58, 0x60, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7d, 0x08, 0x0b, 0x18, 0x16,
-+ 0x35, 0x50, 0x11, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc, 0x40, 0x64,
-+ 0x68, 0xd0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x27, 0x3c, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xfc, 0x20, 0x24,
-+ 0xb8, 0x70, 0x68, 0xa4, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0x7c, 0x01, 0x3b, 0x04, 0x3b,
-+ 0x02, 0x3a, 0x2b, 0x2a, 0x3a, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x17, 0x10, 0x31, 0x52, 0x10,
-+ 0x17, 0x10, 0x11, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x48, 0x40,
-+ 0xfc, 0x90, 0xd0, 0x20, 0xd0, 0x08, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3f, 0x00, 0x3c,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x03, 0x0d, 0x71, 0x01, 0x3f,
-+ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xc0, 0x30, 0x08, 0x00, 0xf8,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x24, 0x3c, 0x25,
-+ 0x26, 0x3c, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x24, 0x25, 0x3d,
-+ 0x27, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x10,
-+ 0xfc, 0x54, 0x54, 0x54, 0x64, 0xcc, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x00, 0x1e, 0x12, 0x1e, 0x07,
-+ 0x79, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0x90, 0x90, 0x60, 0x64, 0x9c,
-+ 0x04, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x0c, 0x1b, 0x1a,
-+ 0x28, 0x4b, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0x50, 0x94, 0x54, 0x4c,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3f, 0x22, 0x3e, 0x2b, 0x5f, 0x08,
-+ 0x0f, 0x0f, 0x0f, 0x0f, 0x29, 0x44, 0x00, 0x00,
-+ 0x30, 0x28, 0xfc, 0x60, 0xa4, 0x1c, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0xfc, 0xfc, 0x24, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x02, 0x07, 0x05, 0x04, 0x04,
-+ 0x0a, 0x09, 0x09, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0xa0, 0xa0,
-+ 0x20, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x08, 0x0f, 0x08, 0x00, 0x7f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x20, 0x20, 0xe0, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x1f, 0x25, 0x7e, 0x2a, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x02, 0x3d, 0x00, 0x3c,
-+ 0x03, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x18, 0xe0, 0x40, 0x7c,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x7f, 0x07, 0x07, 0x3f, 0x27,
-+ 0x24, 0x27, 0x7f, 0x05, 0x19, 0x61, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xc0, 0xc0, 0xf8, 0xc8,
-+ 0x48, 0xd8, 0xfc, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x14, 0x13, 0x1f, 0x1a,
-+ 0x1a, 0x1f, 0x1a, 0x12, 0x24, 0x48, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xa0, 0x20, 0xfc, 0xb4,
-+ 0xd8, 0x90, 0xb0, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x15, 0x19, 0x35, 0x37,
-+ 0x32, 0x54, 0x50, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68,
-+ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x42, 0x24, 0x29, 0x03, 0x10,
-+ 0x13, 0x12, 0x27, 0x24, 0x40, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa4, 0x64, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x12, 0x11, 0x21, 0x3d, 0x65,
-+ 0x26, 0x26, 0x3c, 0x25, 0x22, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68,
-+ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x26, 0x25, 0x3d, 0x25, 0x27,
-+ 0x3e, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68,
-+ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40, 0x20,
-+ 0x20, 0xa0, 0x10, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x21, 0x21, 0x21, 0x3f,
-+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x01, 0x03, 0x05, 0x09, 0x31,
-+ 0x41, 0x01, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0x00, 0x80, 0x60, 0x10, 0x08,
-+ 0x04, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x11, 0x21,
-+ 0x41, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08,
-+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
-+ 0x7c, 0x44, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x80, 0x80, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x3f, 0x04, 0x05, 0x04, 0x04,
-+ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xa0, 0xa0,
-+ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x09, 0x79,
-+ 0x09, 0x09, 0x19, 0x69, 0x01, 0x01, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x00, 0x20, 0x2c,
-+ 0x30, 0x20, 0x24, 0x1c, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x05, 0x3d, 0x05, 0x1d,
-+ 0x65, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x60, 0x80, 0x00, 0xfc, 0x48, 0x70, 0x40, 0x48,
-+ 0x38, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x07, 0x7a, 0x29, 0x3f, 0x56, 0x08, 0x7f, 0x55,
-+ 0x7d, 0x5d, 0x55, 0x49, 0x55, 0x63, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x19, 0x08, 0x7e, 0x12, 0x14,
-+ 0x1b, 0x10, 0x13, 0x10, 0x13, 0x30, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0xf8, 0xa8, 0xa8, 0xfc, 0x64,
-+ 0xf8, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x11, 0x09, 0x09, 0x1f, 0x01,
-+ 0x7f, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x10, 0x10, 0x20, 0xf0, 0x10,
-+ 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x7f, 0x08, 0x7e,
-+ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0x20, 0xfc, 0x24, 0x28,
-+ 0x30, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3f,
-+ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x40, 0x20,
-+ 0x20, 0x20, 0x10, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x04, 0x3c, 0x20, 0x20,
-+ 0x3c, 0x24, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x78, 0x08, 0x08,
-+ 0x78, 0x48, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x07, 0x3c, 0x24, 0x24,
-+ 0x24, 0x3c, 0x20, 0x03, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0xc8, 0xa8, 0xb0,
-+ 0x90, 0xa8, 0xc4, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x7f,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x00, 0x07, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f,
-+ 0x20, 0x4f, 0x01, 0x3f, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0xc8, 0x00, 0xf8, 0x00, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x0c, 0x12, 0x12, 0x11, 0x21, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60,
-+ 0x50, 0x50, 0x90, 0x88, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x0f, 0x09, 0x11, 0x11, 0x31, 0x51, 0x11,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x38, 0x28,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11,
-+ 0x11, 0x12, 0x22, 0x24, 0x48, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40,
-+ 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x18, 0x28, 0x48,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x60, 0x50, 0x48, 0x44,
-+ 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x1f, 0x30, 0x50, 0x10,
-+ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0x88, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x32, 0x52, 0x11,
-+ 0x11, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40,
-+ 0xc0, 0x80, 0xc0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x30, 0x52, 0x12,
-+ 0x14, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x34, 0x52, 0x11,
-+ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x68, 0x1c, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x30, 0x5f, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x11, 0x11, 0x32, 0x55, 0x19,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xc0, 0x40, 0x20, 0x10, 0x28, 0x24,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x10, 0x31, 0x51, 0x11,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x0a, 0x0a, 0x12, 0x13, 0x34, 0x58, 0x1f,
-+ 0x10, 0x10, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc,
-+ 0xc0, 0xa0, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x50, 0x13,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x10, 0x37, 0x54, 0x14,
-+ 0x17, 0x14, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa0, 0xa0,
-+ 0xfc, 0xa4, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x13, 0x12, 0x34, 0x53, 0x12,
-+ 0x12, 0x12, 0x13, 0x12, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48,
-+ 0x48, 0x48, 0xc8, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x50, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x04, 0x88, 0x80, 0x88, 0x90,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x57, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x04, 0x08, 0x00, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x30, 0x53, 0x10,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x12, 0x14, 0x30, 0x51, 0x16,
-+ 0x10, 0x13, 0x10, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x80, 0xf8, 0x08, 0x90, 0x60, 0x40, 0xa0, 0x7c,
-+ 0x84, 0x48, 0x30, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x13, 0x12, 0x34, 0x5f, 0x10,
-+ 0x10, 0x11, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x53, 0x10,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x04, 0x18, 0x60, 0xc0, 0x40,
-+ 0x7c, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x14, 0x12, 0x32, 0x50, 0x11,
-+ 0x12, 0x1c, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x57, 0x16,
-+ 0x16, 0x16, 0x16, 0x1a, 0x18, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x90, 0xf0, 0xb0,
-+ 0xb0, 0xb0, 0xf4, 0x8c, 0x8c, 0x84, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x13, 0x32, 0x52, 0x12,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x11, 0x31, 0x53, 0x15,
-+ 0x19, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x0a, 0x09, 0x09, 0x17, 0x10, 0x30, 0x53, 0x10,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x09, 0x09, 0x0d, 0x13, 0x23,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x30, 0x48, 0x88,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1f, 0x12,
-+ 0x12, 0x1f, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xf0, 0x90,
-+ 0x90, 0xf0, 0x90, 0x90, 0x90, 0xb0, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x2f, 0x27, 0x60, 0x3f, 0x2a,
-+ 0x31, 0x27, 0x25, 0x25, 0x3f, 0x20, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xfc, 0xf0, 0x80, 0xfc, 0x48,
-+ 0x24, 0xf0, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x13,
-+ 0x12, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x11, 0x17, 0x31, 0x51, 0x12,
-+ 0x14, 0x1f, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x80, 0xa0, 0x90, 0x38, 0xc8, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x25, 0x25, 0x51, 0x11,
-+ 0x19, 0x15, 0x25, 0x21, 0x4f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x53, 0x10,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x48, 0x44, 0x04, 0xf8, 0x30,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x12, 0x17, 0x32, 0x52, 0x13,
-+ 0x12, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x68, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x13, 0x32, 0x52, 0x13,
-+ 0x12, 0x12, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13,
-+ 0x10, 0x13, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x0f, 0x11, 0x11, 0x3f, 0x51, 0x13,
-+ 0x13, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x48, 0xa8, 0x28, 0x28, 0x28, 0xe8, 0x28, 0x28,
-+ 0xa8, 0x68, 0x68, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x09, 0x08, 0x08, 0x13, 0x10, 0x33, 0x52, 0x13,
-+ 0x12, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x32, 0x53, 0x12,
-+ 0x13, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x11, 0x32, 0x5f, 0x10,
-+ 0x13, 0x12, 0x12, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xfc, 0x08,
-+ 0xc8, 0x48, 0x48, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13,
-+ 0x12, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc,
-+ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x32, 0x52, 0x12,
-+ 0x12, 0x13, 0x15, 0x15, 0x19, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0xfc, 0x20, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13,
-+ 0x12, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x80, 0x38, 0x08, 0x08, 0xb8, 0x08, 0x08, 0xf8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x51, 0x12,
-+ 0x13, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0xa8, 0xa4, 0x1c, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x31, 0x52, 0x14,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x30, 0xc8, 0x48,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x11, 0x31, 0x52, 0x14,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xe0, 0xa0, 0x24, 0x24, 0x1c, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0a, 0x13, 0x12, 0x32, 0x5f, 0x12,
-+ 0x13, 0x16, 0x16, 0x1a, 0x12, 0x16, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x88, 0x48, 0x48, 0xc8, 0x28,
-+ 0x30, 0x90, 0xb0, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x10,
-+ 0x17, 0x14, 0x17, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x13, 0x10, 0x37, 0x50, 0x13,
-+ 0x12, 0x12, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x10, 0x13, 0x32, 0x53, 0x12,
-+ 0x13, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x10,
-+ 0x10, 0x11, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x14, 0x14, 0x34, 0x55, 0x15,
-+ 0x17, 0x15, 0x15, 0x19, 0x19, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x88, 0x88, 0x88, 0xfc, 0x48,
-+ 0x28, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x17, 0x14, 0x37, 0x54, 0x14,
-+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0xbc, 0xa4, 0xbc, 0xa4, 0xbc, 0x04, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x17, 0x34, 0x57, 0x15,
-+ 0x15, 0x16, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xfc, 0x44, 0x74, 0x54,
-+ 0x54, 0xec, 0xcc, 0x44, 0x44, 0x4c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0d, 0x15, 0x15, 0x35, 0x55, 0x14,
-+ 0x17, 0x15, 0x14, 0x15, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40,
-+ 0xfc, 0x90, 0x60, 0xd8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x54, 0x17,
-+ 0x14, 0x14, 0x17, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x88, 0x00, 0x78,
-+ 0x48, 0x28, 0x30, 0x10, 0x28, 0xc4, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1f, 0x19, 0x15,
-+ 0x1f, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xf0, 0x30, 0x50,
-+ 0xf0, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0b, 0x12, 0x12, 0x33, 0x5e, 0x10,
-+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x20, 0x24, 0xe8, 0x30, 0x20, 0xa4, 0x5c, 0x80,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x10, 0x11, 0x33, 0x52, 0x12,
-+ 0x13, 0x12, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0x60, 0x90, 0xfc, 0x10, 0x60,
-+ 0x88, 0x30, 0xc4, 0x08, 0x30, 0xc0, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x13,
-+ 0x14, 0x1c, 0x15, 0x16, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x88, 0xc8, 0x28, 0x08, 0xe8, 0x30, 0x00, 0x00,
-+ 0x08, 0x0a, 0x0a, 0x12, 0x1f, 0x32, 0x52, 0x17,
-+ 0x14, 0x14, 0x14, 0x17, 0x14, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x48, 0xc8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0xa8, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x37, 0x50, 0x10,
-+ 0x13, 0x1d, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x60, 0x90,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x09, 0x09, 0x0b, 0x12, 0x15, 0x39, 0x52, 0x14,
-+ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x68, 0x68, 0xb0,
-+ 0x80, 0x50, 0x48, 0x04, 0x14, 0xf0, 0x00, 0x00,
-+ 0x09, 0x08, 0x08, 0x11, 0x17, 0x38, 0x57, 0x14,
-+ 0x16, 0x15, 0x16, 0x15, 0x14, 0x15, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x12,
-+ 0x10, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xd0, 0xd0, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x1f, 0x15, 0x34, 0x54, 0x1b,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x48, 0xc8, 0xa8, 0x28,
-+ 0x30, 0x10, 0x90, 0xa8, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x52, 0x13,
-+ 0x12, 0x10, 0x1f, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x58, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0c, 0x14, 0x14, 0x34, 0x54, 0x15,
-+ 0x15, 0x15, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x0f, 0x12, 0x1f, 0x32, 0x52, 0x1f,
-+ 0x12, 0x13, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0x7c, 0xc8, 0x48, 0xa8, 0xa8,
-+ 0x30, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1e, 0x12, 0x12,
-+ 0x1e, 0x08, 0x0c, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xf0, 0x90, 0x90,
-+ 0xf0, 0x20, 0x20, 0x50, 0x88, 0x08, 0x00, 0x00,
-+ 0x08, 0x0f, 0x09, 0x17, 0x15, 0x37, 0x50, 0x1f,
-+ 0x11, 0x17, 0x1a, 0x13, 0x12, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0x80, 0xfc,
-+ 0x20, 0xf8, 0x24, 0xe0, 0x08, 0xf8, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x53, 0x10,
-+ 0x17, 0x10, 0x1f, 0x12, 0x11, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xf8, 0x48,
-+ 0xfc, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x17, 0x12, 0x33, 0x53, 0x12,
-+ 0x13, 0x10, 0x1f, 0x11, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0xf8, 0x48,
-+ 0xf8, 0x80, 0xfc, 0x90, 0x70, 0x88, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x10, 0x33, 0x52, 0x13,
-+ 0x11, 0x1f, 0x10, 0x13, 0x12, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x10, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0a, 0x14, 0x13, 0x32, 0x53, 0x12,
-+ 0x13, 0x12, 0x15, 0x14, 0x1a, 0x12, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x44, 0xf0, 0x10, 0xf8, 0x08,
-+ 0xfc, 0x54, 0x2c, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x17, 0x11, 0x37, 0x51, 0x11,
-+ 0x16, 0x17, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00,
-+ 0x09, 0x0f, 0x0d, 0x15, 0x17, 0x33, 0x55, 0x19,
-+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x10, 0xfc, 0x50, 0x50, 0xfc, 0x30, 0xb4, 0x4c,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x09, 0x09, 0x0f, 0x11, 0x1f, 0x33, 0x52, 0x14,
-+ 0x1b, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x30, 0xb0, 0xc8,
-+ 0xf4, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x0f, 0x09, 0x1f, 0x10, 0x33, 0x52, 0x13,
-+ 0x12, 0x13, 0x10, 0x13, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xf8, 0x20, 0xfc, 0x00, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00,
-+ 0x08, 0x0f, 0x09, 0x17, 0x15, 0x37, 0x53, 0x12,
-+ 0x13, 0x13, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x17,
-+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x17, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x11, 0x17, 0x30, 0x53, 0x12,
-+ 0x12, 0x13, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xfc, 0x00, 0xb8, 0xa8,
-+ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00,
-+ 0x09, 0x09, 0x0b, 0x12, 0x17, 0x3a, 0x53, 0x12,
-+ 0x13, 0x10, 0x17, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0xf8, 0x40, 0xf8, 0x40,
-+ 0xfc, 0x00, 0xbc, 0xa4, 0xe4, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x50, 0x17,
-+ 0x14, 0x17, 0x15, 0x19, 0x19, 0x17, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xf8,
-+ 0xe0, 0xfc, 0x48, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x0d, 0x17, 0x14, 0x37, 0x55, 0x17,
-+ 0x10, 0x13, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0xe0, 0x20, 0xbc, 0xc0, 0x80, 0x38, 0xc0,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x11, 0x3e, 0x2a, 0x6a, 0x2e, 0x32,
-+ 0x23, 0x22, 0x23, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x80, 0xfc, 0x48, 0xb8, 0xa8, 0xb8, 0xe8, 0x14,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x0f, 0x08, 0x13, 0x1f, 0x33, 0x50, 0x13,
-+ 0x1f, 0x10, 0x17, 0x15, 0x17, 0x14, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xfc, 0xe8, 0x40, 0xf8,
-+ 0xfc, 0x08, 0xfc, 0x48, 0x28, 0x18, 0x00, 0x00,
-+ 0x09, 0x0f, 0x09, 0x13, 0x12, 0x33, 0x50, 0x17,
-+ 0x14, 0x18, 0x13, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0x00, 0xfc,
-+ 0x44, 0xf8, 0x90, 0x60, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x10,
-+ 0x17, 0x15, 0x17, 0x15, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00,
-+ 0xfc, 0x54, 0xfc, 0x54, 0xfc, 0x44, 0x00, 0x00,
-+ 0x15, 0x1f, 0x15, 0x17, 0x22, 0x2f, 0x6a, 0x2f,
-+ 0x22, 0x2f, 0x22, 0x2f, 0x25, 0x28, 0x00, 0x00,
-+ 0x28, 0xa8, 0x28, 0x7c, 0x50, 0xd0, 0xfc, 0xd0,
-+ 0x50, 0xfc, 0x50, 0xd0, 0x7c, 0xc0, 0x00, 0x00,
-+ 0x0f, 0x08, 0x0f, 0x15, 0x10, 0x37, 0x54, 0x17,
-+ 0x14, 0x17, 0x15, 0x19, 0x19, 0x17, 0x00, 0x00,
-+ 0xbc, 0x00, 0xbc, 0xb4, 0x40, 0xfc, 0xa0, 0xf8,
-+ 0xa8, 0xf8, 0xe4, 0x38, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x13, 0x12, 0x13, 0x20, 0x2f, 0x6b, 0x29, 0x2f,
-+ 0x2a, 0x2b, 0x2b, 0x32, 0x37, 0x20, 0x00, 0x00,
-+ 0xb8, 0xa8, 0xb8, 0x00, 0xfc, 0xa0, 0x20, 0xfc,
-+ 0xe8, 0xa8, 0x90, 0xd0, 0xa8, 0xc4, 0x00, 0x00,
-+ 0x09, 0x0f, 0x0d, 0x11, 0x13, 0x33, 0x52, 0x13,
-+ 0x10, 0x13, 0x10, 0x17, 0x12, 0x14, 0x00, 0x00,
-+ 0x50, 0xfc, 0x18, 0xf0, 0xf8, 0x58, 0xe8, 0xf8,
-+ 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0xa4, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x02, 0x3c, 0x20, 0x20, 0x3e, 0x20, 0x20, 0x3f,
-+ 0x24, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x88, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x04, 0x08, 0x10, 0x6f, 0x08, 0x08, 0x08,
-+ 0x0f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0xc0, 0x40, 0x20, 0x10, 0xec, 0x20, 0x20, 0x20,
-+ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x02, 0x03, 0x04, 0x18, 0x7f, 0x11, 0x11, 0x1f,
-+ 0x13, 0x03, 0x05, 0x09, 0x11, 0x60, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x40, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x22, 0x3e,
-+ 0x14, 0x14, 0x15, 0x26, 0x2c, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x50, 0x50, 0x50, 0x94, 0x94, 0x0c, 0x00, 0x00,
-+ 0x08, 0x3e, 0x14, 0x7f, 0x00, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x14, 0x15, 0x26, 0x4d, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x2d, 0x25,
-+ 0x25, 0x2b, 0x33, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x68, 0x28,
-+ 0x28, 0x58, 0x98, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x07, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x3e, 0x22,
-+ 0x3a, 0x27, 0x3a, 0x26, 0x22, 0x26, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x48, 0x48,
-+ 0x90, 0x20, 0x90, 0x90, 0x48, 0x48, 0x00, 0x00,
-+ 0x01, 0x04, 0x08, 0x10, 0x6f, 0x04, 0x04, 0x07,
-+ 0x08, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0xc0, 0x40, 0x20, 0x10, 0xec, 0x00, 0x00, 0xe0,
-+ 0x20, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00,
-+ 0x04, 0x3c, 0x04, 0x1f, 0x69, 0x0f, 0x09, 0x0f,
-+ 0x04, 0x3f, 0x04, 0x7f, 0x08, 0x30, 0x00, 0x00,
-+ 0x48, 0x70, 0x44, 0xfc, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x24, 0x27,
-+ 0x24, 0x24, 0x24, 0x23, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, 0x48, 0xc8,
-+ 0x08, 0x28, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1e, 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x47, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0xfc, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x11,
-+ 0x11, 0x7f, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x28, 0x28, 0x30, 0x27,
-+ 0x24, 0x24, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x98, 0x78, 0x08, 0xc8,
-+ 0x48, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x00, 0x1f,
-+ 0x10, 0x17, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf0,
-+ 0x10, 0xd0, 0x10, 0xd0, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x1f, 0x04, 0x7f, 0x01, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x7f, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xfc, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x07, 0x18,
-+ 0x7f, 0x11, 0x1f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xc0, 0x80,
-+ 0xf0, 0x10, 0xf0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x20, 0x40,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x08, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x47, 0x18, 0x7f, 0x11, 0x11,
-+ 0x1f, 0x13, 0x03, 0x05, 0x19, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xc0, 0x80, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x40, 0x24, 0x24, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x5e, 0x00, 0x00, 0x7f, 0x14,
-+ 0x14, 0x14, 0x14, 0x25, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x40, 0x7c, 0x40, 0xf8, 0x88,
-+ 0x50, 0x30, 0x68, 0x8c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x5f, 0x02, 0x06, 0x19, 0x6b,
-+ 0x0c, 0x35, 0x06, 0x0c, 0x30, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x00, 0x48, 0x48, 0x50,
-+ 0xa0, 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x5c, 0x10, 0x1e, 0x10, 0x1f,
-+ 0x04, 0x1f, 0x6a, 0x25, 0x25, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x48, 0x28, 0x28, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x7f, 0x0f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x7f, 0x09, 0x1f, 0x69, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0xfc, 0x20, 0xf0, 0x2c, 0x60, 0x00, 0x00,
-+ 0x00, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x17, 0x10, 0x00, 0x00, 0x1f,
-+ 0x10, 0x21, 0x21, 0x42, 0x44, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90, 0xfc,
-+ 0xc0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x22, 0x12, 0x13, 0x02, 0x02, 0x12,
-+ 0x13, 0x22, 0x20, 0x40, 0x5f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x13, 0x12, 0x02, 0x02, 0x12,
-+ 0x13, 0x22, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x10, 0x17, 0x00, 0x00, 0x11,
-+ 0x11, 0x22, 0x24, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x44, 0xe4, 0xe8, 0xf0, 0x60,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x03, 0x22, 0x12, 0x12, 0x03, 0x02, 0x10,
-+ 0x10, 0x21, 0x21, 0x42, 0x44, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x22, 0x12, 0x13, 0x04, 0x04, 0x1a,
-+ 0x13, 0x21, 0x22, 0x42, 0x44, 0x08, 0x00, 0x00,
-+ 0x08, 0xc8, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x07, 0x24, 0x14, 0x17, 0x04, 0x04, 0x15,
-+ 0x15, 0x25, 0x25, 0x44, 0x47, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0xe8,
-+ 0x28, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x27, 0x10, 0x13, 0x02, 0x02, 0x13,
-+ 0x10, 0x22, 0x22, 0x44, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x07, 0x20, 0x13, 0x12, 0x02, 0x02, 0x13,
-+ 0x11, 0x20, 0x27, 0x41, 0x42, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8,
-+ 0xf0, 0x00, 0xfc, 0x50, 0x48, 0x48, 0x00, 0x00,
-+ 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x12, 0x1f, 0x11, 0x14,
-+ 0x17, 0x15, 0x1d, 0x22, 0x25, 0x58, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x10, 0xf0, 0x00,
-+ 0x70, 0x54, 0x54, 0xcc, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x13,
-+ 0x13, 0x15, 0x15, 0x29, 0x31, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x90,
-+ 0x50, 0x50, 0x34, 0x2c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x10, 0x17, 0x30, 0x50, 0x13, 0x10,
-+ 0x07, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x17, 0x14, 0x17, 0x14, 0x17,
-+ 0x10, 0x1f, 0x11, 0x27, 0x21, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xd0, 0x50, 0xd0, 0x50, 0xd0,
-+ 0x10, 0xf0, 0x14, 0xcc, 0x0c, 0xe4, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x0f, 0x00, 0x40, 0x41, 0x5d, 0x55, 0x55, 0x55,
-+ 0x5d, 0x55, 0x41, 0x46, 0x7f, 0x40, 0x00, 0x00,
-+ 0xe0, 0x40, 0x88, 0x08, 0xf8, 0x98, 0x68, 0x28,
-+ 0x58, 0x98, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x22, 0x12, 0x0a, 0x06,
-+ 0x05, 0x04, 0x08, 0x10, 0x20, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x90, 0x70, 0x1c, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x04, 0x7f, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x09, 0x09, 0x09, 0x7f,
-+ 0x08, 0x0c, 0x12, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1f, 0x2a, 0x2a, 0x4a, 0x12,
-+ 0x14, 0x24, 0x08, 0x11, 0x01, 0x06, 0x00, 0x00,
-+ 0x08, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x08,
-+ 0x0a, 0x09, 0x11, 0x1f, 0x70, 0x00, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x2a, 0x2a, 0x2a, 0x7f, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x21, 0x00, 0x00,
-+ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xe8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x7f, 0x04, 0x04,
-+ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x14, 0x22, 0x5d, 0x00, 0x7f,
-+ 0x10, 0x1e, 0x22, 0x02, 0x02, 0x0c, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x3c, 0x06, 0x19, 0x64, 0x04, 0x7f,
-+ 0x0c, 0x0e, 0x15, 0x25, 0x44, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x22, 0x12, 0x15, 0x7e, 0x14, 0x15, 0x14, 0x7f,
-+ 0x14, 0x14, 0x14, 0x24, 0x25, 0x46, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x68, 0x58, 0x8c, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2a, 0x2a, 0x54, 0x54, 0x2a, 0x2a,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0f, 0x78, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x22,
-+ 0x3e, 0x14, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x08, 0x1c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x7f, 0x49, 0x49, 0x7f,
-+ 0x4c, 0x1a, 0x19, 0x29, 0x48, 0x08, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x0c, 0x12, 0x22, 0x7f, 0x01,
-+ 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x03, 0x00, 0x00,
-+ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x10, 0x1f,
-+ 0x2b, 0x4b, 0x15, 0x25, 0x09, 0x16, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x3e, 0x2a, 0x36, 0x2a, 0x2a,
-+ 0x26, 0x00, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x18, 0x00, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2a, 0x3e, 0x00, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x14, 0x1e, 0x70, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x7f, 0x15, 0x75, 0x15, 0x35,
-+ 0x5c, 0x0e, 0x15, 0x24, 0x44, 0x04, 0x00, 0x00,
-+ 0x88, 0x28, 0x28, 0xe8, 0x28, 0xe8, 0x28, 0x68,
-+ 0xe8, 0x28, 0x28, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x12, 0x12, 0x7f, 0x12, 0x14, 0x0a, 0x11, 0x1f,
-+ 0x20, 0x5f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0x48, 0xc8,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x24, 0x49, 0x24, 0x3f, 0x24, 0x3f, 0x24, 0x3f,
-+ 0x04, 0x7f, 0x0e, 0x15, 0x64, 0x04, 0x00, 0x00,
-+ 0x88, 0x28, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0xe8, 0x28, 0x08, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x14, 0x7f, 0x55, 0x7f, 0x00, 0x3e,
-+ 0x00, 0x7f, 0x2a, 0x29, 0x49, 0x18, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d,
-+ 0x3f, 0x12, 0x1a, 0x15, 0x24, 0x48, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x08, 0x88, 0x98, 0x00, 0x00,
-+ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d,
-+ 0x3f, 0x12, 0x12, 0x2d, 0x25, 0x49, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xa8, 0x68, 0x68, 0x28,
-+ 0x38, 0x28, 0x4c, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d,
-+ 0x3f, 0x12, 0x12, 0x2d, 0x25, 0x49, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0x28, 0x68, 0x68, 0xa8, 0xa8,
-+ 0x28, 0x28, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x3e, 0x49, 0x3e, 0x2a,
-+ 0x2a, 0x3e, 0x14, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48,
-+ 0x68, 0x58, 0x8c, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x21, 0x3e, 0x32, 0x5e,
-+ 0x10, 0x3f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0a, 0x7f, 0x2e, 0x2e, 0x3f, 0x51,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x08, 0xe8, 0xa8, 0x28, 0xa8, 0xe8, 0x68, 0x28,
-+ 0x28, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x7c, 0x28, 0x2a, 0x2a, 0x7e, 0x12,
-+ 0x1e, 0x70, 0x10, 0x11, 0x21, 0x42, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0xa8, 0xa8, 0xa8, 0xfc, 0x90,
-+ 0x90, 0xfc, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x2a, 0x2a, 0x2a, 0x7e, 0x12,
-+ 0x1e, 0x72, 0x12, 0x14, 0x24, 0x49, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0xa8, 0xa8, 0xa8, 0xfc, 0x90,
-+ 0x90, 0xfc, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1e, 0x23, 0x22, 0x7a, 0x2a,
-+ 0x2a, 0x2a, 0x3a, 0x22, 0x03, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7e, 0x12, 0x12, 0x13, 0x22, 0x4c, 0x00,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x08, 0x3e, 0x00,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x1f, 0x21, 0x02, 0x7f, 0x06,
-+ 0x0a, 0x1f, 0x62, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0xf8, 0x08, 0x80, 0xfc, 0x40,
-+ 0x20, 0xf0, 0x2c, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2a, 0x2a, 0x55, 0x54, 0x2a, 0x2a,
-+ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x79, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x00, 0x3f, 0x22, 0x22, 0x3e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x3e, 0x22,
-+ 0x3f, 0x22, 0x3e, 0x22, 0x3f, 0x61, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0x40,
-+ 0xf8, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x0c, 0x2a, 0x2a, 0x59, 0x14, 0x22, 0x3f,
-+ 0x22, 0x5f, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x20, 0x30, 0xa8, 0xa8, 0x60, 0x50, 0x88, 0xfc,
-+ 0x08, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x08, 0x7f, 0x3e, 0x22,
-+ 0x3e, 0x3e, 0x22, 0x3e, 0x12, 0x61, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x2a, 0x54, 0x2a, 0x3e, 0x2b, 0x3e, 0x2a, 0x3e,
-+ 0x08, 0x7e, 0x1c, 0x2a, 0x49, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7e, 0x23, 0x3e,
-+ 0x22, 0x3e, 0x3e, 0x20, 0x3e, 0x21, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0xf8, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2b, 0x5d, 0x2b, 0x4d, 0x1a, 0x61,
-+ 0x09, 0x34, 0x0a, 0x34, 0x09, 0x32, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x06, 0x38, 0x7f, 0x08, 0x7f, 0x6b, 0x5d, 0x7f,
-+ 0x08, 0x7f, 0x08, 0x7e, 0x3a, 0x55, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x3f, 0x25, 0x2f, 0x2a, 0x2f,
-+ 0x2a, 0x2f, 0x3f, 0x33, 0x3f, 0x50, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0xa0, 0x78, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xe8, 0x68, 0xc8, 0xd8, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x24, 0x3f,
-+ 0x24, 0x7e, 0x24, 0x3e, 0x24, 0x3f, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x10, 0x10, 0x20, 0x40,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x12, 0x12, 0x2e, 0x45,
-+ 0x04, 0x08, 0x10, 0x01, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8,
-+ 0x48, 0xa8, 0x88, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0f, 0x10, 0x11, 0x39, 0x57,
-+ 0x13, 0x14, 0x18, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x48, 0x48,
-+ 0x48, 0xc8, 0x48, 0xc8, 0x48, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x10, 0x10, 0x3f, 0x52, 0x12,
-+ 0x1f, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, 0x48,
-+ 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x12, 0x3f, 0x42, 0x1f, 0x12,
-+ 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0xe8, 0x08, 0xc8, 0x48,
-+ 0xc8, 0x48, 0xc8, 0x48, 0xc8, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x4f, 0x08, 0x0f,
-+ 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x88, 0x88, 0x88,
-+ 0xc8, 0x48, 0xc8, 0x48, 0xc8, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x14, 0x12, 0x3f, 0x40, 0x7e,
-+ 0x10, 0x1e, 0x22, 0x02, 0x02, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x1c,
-+ 0x70, 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x04, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x27, 0x24, 0x27, 0x24, 0x27,
-+ 0x24, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x90, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x24, 0x35, 0x2b, 0x29, 0x21,
-+ 0x25, 0x25, 0x29, 0x29, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0xa0, 0xf8, 0x20, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x27, 0x24, 0x3f, 0x27, 0x24,
-+ 0x27, 0x27, 0x27, 0x2c, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0xf0, 0x18, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x21, 0x27, 0x38, 0x27, 0x25,
-+ 0x27, 0x22, 0x25, 0x29, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0x40, 0xf0, 0x08, 0x70, 0x50,
-+ 0x70, 0x20, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x20, 0x23, 0x22, 0x23, 0x20, 0x2f,
-+ 0x29, 0x2f, 0x29, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0x78,
-+ 0x48, 0x78, 0x48, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x3f, 0x04, 0x04, 0x08, 0x11, 0x21,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x7f, 0x11,
-+ 0x11, 0x11, 0x11, 0x21, 0x21, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x7f, 0x11, 0x11,
-+ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x01, 0x09, 0x09, 0x08,
-+ 0x7f, 0x08, 0x08, 0x10, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x20, 0x20, 0x20,
-+ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x01, 0x21, 0x13, 0x12, 0x07, 0x1a, 0x13, 0x22,
-+ 0x23, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x20, 0xf8, 0x40, 0xf0, 0x40, 0xf0, 0x40,
-+ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0x80, 0x40, 0x20,
-+ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x09, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x13, 0x12,
-+ 0x12, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x60, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x1e, 0x12, 0x12, 0x32, 0x2a, 0x4c,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0xb0, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x21, 0x49, 0x0c, 0x12, 0x11,
-+ 0x3f, 0x52, 0x12, 0x12, 0x1e, 0x10, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x1f, 0x02, 0x7f, 0x04, 0x08,
-+ 0x17, 0x64, 0x04, 0x05, 0x04, 0x03, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0xf0, 0x80, 0xfc, 0x40, 0x20,
-+ 0xd0, 0x4c, 0x40, 0x80, 0x10, 0xf0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x13, 0x12, 0x12, 0x12, 0x1f, 0x12,
-+ 0x13, 0x13, 0x25, 0x25, 0x49, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x90, 0xa8, 0x28, 0xd0, 0x14,
-+ 0x24, 0x08, 0x10, 0x24, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x14, 0x17,
-+ 0x14, 0x14, 0x17, 0x23, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x88, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x28, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x10, 0x13, 0x12, 0x13, 0x13,
-+ 0x12, 0x13, 0x11, 0x27, 0x20, 0x4f, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x80, 0xf0, 0x10, 0xf0, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0x20, 0xe0, 0x38, 0x00, 0x00,
-+ 0x00, 0x1f, 0x18, 0x14, 0x15, 0x1f, 0x12, 0x1a,
-+ 0x1a, 0x1f, 0x1a, 0x22, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0x20, 0xfc, 0x54, 0x98,
-+ 0x90, 0x90, 0xb0, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x1f, 0x15, 0x15, 0x1f, 0x15, 0x17, 0x15,
-+ 0x17, 0x15, 0x1f, 0x25, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x10, 0xe0, 0x40, 0x7c, 0x50,
-+ 0x50, 0x50, 0xd0, 0x50, 0x90, 0x90, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x17, 0x16, 0x1a, 0x1f, 0x18,
-+ 0x1f, 0x1d, 0x1d, 0x2f, 0x28, 0x49, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xa0, 0xfc, 0xc8, 0xa8,
-+ 0xa8, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
-+ 0x04, 0x04, 0x08, 0x10, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x10, 0x08, 0xf8, 0x04, 0x04, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x08, 0x15, 0x7e, 0x04, 0x18,
-+ 0x63, 0x0c, 0x01, 0x0e, 0x00, 0x1f, 0x00, 0x00,
-+ 0x00, 0x40, 0xf0, 0x10, 0x28, 0xfc, 0x40, 0xb0,
-+ 0x0c, 0x40, 0x90, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x5f, 0x10, 0x1f, 0x17, 0x1f,
-+ 0x02, 0x7f, 0x1a, 0x64, 0x19, 0x07, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0xf0, 0x10, 0xd0, 0xf0, 0xf0,
-+ 0x00, 0xfc, 0xb0, 0xcc, 0x20, 0xd0, 0x00, 0x00,
-+ 0x12, 0x1f, 0x24, 0x7f, 0x24, 0x3e, 0x24, 0x3f,
-+ 0x20, 0x1f, 0x02, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x48, 0xfc, 0x90, 0xf8, 0x90, 0xf8, 0x90, 0xfc,
-+ 0x80, 0xf0, 0x60, 0x80, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x05, 0x39, 0x21, 0x3d, 0x21, 0x21, 0x3f, 0x01,
-+ 0x3f, 0x04, 0x02, 0x01, 0x06, 0x78, 0x00, 0x00,
-+ 0x00, 0x78, 0x08, 0x78, 0x08, 0x08, 0xf8, 0x00,
-+ 0xf0, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x3f, 0x24,
-+ 0x3f, 0x0f, 0x02, 0x01, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x48,
-+ 0xf8, 0xe0, 0x40, 0x80, 0xc0, 0x38, 0x00, 0x00,
-+ 0x13, 0x17, 0x54, 0x5b, 0x33, 0x1b, 0x2a, 0x23,
-+ 0x40, 0x1f, 0x04, 0x03, 0x06, 0x38, 0x00, 0x00,
-+ 0x90, 0xd4, 0x34, 0xb8, 0xd0, 0x98, 0xa4, 0xc4,
-+ 0x00, 0xe0, 0x40, 0x80, 0xc0, 0x38, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x00, 0x78, 0x48, 0x49, 0x49, 0x49, 0x49,
-+ 0x49, 0x79, 0x4a, 0x42, 0x04, 0x08, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x10, 0x10, 0x10, 0x08, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x79, 0x49, 0x42, 0x04, 0x08, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0xa0,
-+ 0xa0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x48, 0x48, 0x48, 0x4f, 0x48,
-+ 0x48, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x4a, 0x4a, 0x4c,
-+ 0x4f, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4a, 0x4a, 0x4a, 0x4b, 0x48,
-+ 0x48, 0x48, 0x79, 0x4a, 0x44, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x60,
-+ 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49,
-+ 0x49, 0x49, 0x7a, 0x42, 0x44, 0x00, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4f, 0x48, 0x49, 0x49, 0x49,
-+ 0x49, 0x79, 0x49, 0x42, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x00, 0xe0, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x48, 0x49, 0x49, 0x49,
-+ 0x4f, 0x79, 0x49, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0xe0, 0x60, 0xa0, 0xa0, 0x20, 0x60, 0xa0,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x49, 0x4f, 0x48, 0x48,
-+ 0x48, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x90, 0x88, 0x3c, 0xe4, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x00, 0x78, 0x4b, 0x4a, 0x4a, 0x4a, 0x4a,
-+ 0x4a, 0x4b, 0x7a, 0x4a, 0x42, 0x02, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xa8,
-+ 0x98, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x4a, 0x4a, 0x4f, 0x48,
-+ 0x48, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00,
-+ 0x60, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf8, 0x94,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x02, 0x01, 0x06, 0x78,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x40, 0x80, 0x60, 0x1c,
-+ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49,
-+ 0x79, 0x4a, 0x42, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x88,
-+ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x48, 0x48, 0x4f, 0x48,
-+ 0x48, 0x49, 0x79, 0x42, 0x44, 0x00, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0xc0, 0x44, 0x64, 0xe8, 0xf0,
-+ 0xe0, 0x50, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x4a, 0x4a,
-+ 0x4a, 0x4b, 0x7a, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x12, 0x34, 0x4c, 0x0d, 0x13,
-+ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x60, 0x50, 0x88, 0x08, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4f, 0x48, 0x48, 0x4a, 0x49,
-+ 0x48, 0x48, 0x78, 0x48, 0x41, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0x90,
-+ 0xa0, 0x60, 0x50, 0x88, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
-+ 0x4a, 0x4a, 0x7a, 0x4c, 0x47, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
-+ 0xa0, 0x90, 0xd0, 0xa8, 0xf8, 0x14, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x4a,
-+ 0x4a, 0x7b, 0x4a, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x28, 0x2f, 0x28, 0x28, 0x2e, 0x38,
-+ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x80, 0x88, 0x90, 0xe0, 0x80, 0x84, 0x84, 0x7c,
-+ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x07,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0xc0,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4a, 0x4b, 0x4a, 0x4a,
-+ 0x4b, 0x7a, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49,
-+ 0x49, 0x49, 0x79, 0x49, 0x47, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x72, 0x52, 0x5f, 0x55, 0x55, 0x55,
-+ 0x5d, 0x53, 0x72, 0x52, 0x44, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0xc8, 0x48, 0x48, 0x30,
-+ 0x30, 0x10, 0xb0, 0xa8, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x02, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x48,
-+ 0x4a, 0x4a, 0x7a, 0x4a, 0x43, 0x02, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x40,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x49, 0x4b, 0x4d, 0x49,
-+ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4a, 0x4a, 0x4d, 0x49, 0x49,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x48,
-+ 0x4b, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x1f, 0x00, 0x7f,
-+ 0x04, 0x07, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x17, 0x10, 0x17,
-+ 0x14, 0x14, 0x14, 0x27, 0x24, 0x40, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0xc8, 0x28, 0xa8,
-+ 0xb0, 0x90, 0xb4, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x49, 0x4f, 0x48, 0x48,
-+ 0x4b, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0x88, 0x3c, 0xc4, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x49, 0x49, 0x4b, 0x4c, 0x48,
-+ 0x48, 0x78, 0x48, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x08, 0x14, 0x94, 0x90,
-+ 0x60, 0x60, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x49, 0x4f, 0x49, 0x49, 0x49,
-+ 0x49, 0x7f, 0x49, 0x41, 0x02, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20,
-+ 0x20, 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x49, 0x4b, 0x4c, 0x48,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x02, 0x04, 0x00, 0x19, 0x62,
-+ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x44, 0x48, 0xb0, 0x10, 0x08,
-+ 0xe4, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1e, 0x12, 0x12, 0x12, 0x12, 0x1e, 0x1a,
-+ 0x18, 0x14, 0x15, 0x22, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0xf8, 0x60,
-+ 0x50, 0x88, 0x08, 0x00, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x4a, 0x4a,
-+ 0x4b, 0x7b, 0x4a, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0x38, 0x38, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4c, 0x4b, 0x48, 0x48,
-+ 0x4f, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x30, 0xc0, 0x40, 0x7c,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x48,
-+ 0x49, 0x4e, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x40, 0x88,
-+ 0x90, 0xe0, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x09, 0x09, 0x09, 0x3f, 0x20,
-+ 0x27, 0x24, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0x20, 0xf8, 0x08,
-+ 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x7a, 0x4c, 0x48, 0x48, 0x49, 0x4b,
-+ 0x4d, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x78, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x11, 0x1f, 0x00, 0x7f,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x01, 0x7f, 0x49, 0x49, 0x4f, 0x49, 0x49,
-+ 0x49, 0x7f, 0x49, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0xa0, 0x28, 0x24, 0x24, 0x20, 0xfc, 0x28, 0x28,
-+ 0x90, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x01, 0x78, 0x4b, 0x48, 0x4f, 0x49, 0x4a,
-+ 0x4b, 0x7e, 0x4a, 0x42, 0x02, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xe0, 0x90, 0x80, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x49, 0x49, 0x4f,
-+ 0x48, 0x7b, 0x4a, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x10, 0x10, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4b, 0x4a, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x79, 0x48, 0x41, 0x02, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x40, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x49,
-+ 0x4b, 0x7c, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x80, 0x88, 0xe8, 0x90, 0x90, 0xfc, 0x40, 0xf8,
-+ 0x30, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x01, 0x01,
-+ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x20, 0x10,
-+ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x48, 0x4b, 0x4a, 0x4a, 0x4b,
-+ 0x4a, 0x7a, 0x4b, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x49, 0x48, 0x48, 0x4f, 0x49,
-+ 0x49, 0x7f, 0x49, 0x41, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0x40, 0xfc, 0x10,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4f, 0x4a, 0x4a, 0x4a, 0x4b,
-+ 0x4a, 0x7a, 0x4c, 0x44, 0x08, 0x13, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xe8, 0x28, 0x44, 0xa4, 0x90,
-+ 0x90, 0x80, 0xa0, 0x90, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4a, 0x4b, 0x4a,
-+ 0x4a, 0x7a, 0x4c, 0x44, 0x0b, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x72, 0x57, 0x55, 0x59, 0x5f, 0x51,
-+ 0x55, 0x75, 0x55, 0x45, 0x07, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xe8, 0x28, 0x28, 0xe8, 0x28,
-+ 0xe8, 0x28, 0x28, 0xf0, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4c, 0x49, 0x4a, 0x48,
-+ 0x4b, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0x24, 0x1c, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0f, 0x18, 0x1f, 0x28, 0x4f, 0x08, 0x0f,
-+ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0xfc, 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x07, 0x7c, 0x4a, 0x49, 0x4a, 0x4c, 0x4f,
-+ 0x4c, 0x7a, 0x49, 0x41, 0x02, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xa8, 0x10, 0xa8, 0xc8, 0xf8,
-+ 0xc8, 0xa8, 0x30, 0x90, 0xa8, 0x44, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x48, 0x4b, 0x4a, 0x4b, 0x4a,
-+ 0x4b, 0x78, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x7a, 0x4a, 0x4c, 0x49, 0x4a, 0x48,
-+ 0x4a, 0x7a, 0x4c, 0x41, 0x02, 0x0c, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xd0, 0xa0, 0x10, 0x50, 0x40,
-+ 0x48, 0xc8, 0xb0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x4a, 0x4c, 0x4b, 0x4a,
-+ 0x4a, 0x7b, 0x4a, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x08, 0x10, 0xe0, 0x38, 0x08,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x4e, 0x48, 0x4b, 0x48,
-+ 0x48, 0x78, 0x4d, 0x45, 0x09, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xec, 0x00, 0xf8, 0x10,
-+ 0xa0, 0x50, 0x48, 0x04, 0x14, 0xf0, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4b, 0x4a, 0x4a, 0x4b, 0x4a,
-+ 0x4a, 0x7b, 0x4c, 0x44, 0x09, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x50,
-+ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x01, 0x7f, 0x49, 0x49, 0x4f, 0x49, 0x4b,
-+ 0x4b, 0x7d, 0x45, 0x09, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x80, 0x38, 0x28, 0x28, 0xe8, 0x28, 0xa8,
-+ 0xa8, 0x78, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4b, 0x48, 0x4f, 0x48, 0x49,
-+ 0x4e, 0x79, 0x4e, 0x41, 0x06, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xe0, 0x20, 0xfc, 0x88, 0xc8,
-+ 0xf0, 0x60, 0xd0, 0x48, 0x44, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4c, 0x48, 0x49, 0x4a,
-+ 0x48, 0x7b, 0x4d, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x88, 0xf0, 0x90, 0xa0, 0x60,
-+ 0x90, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x79, 0x49, 0x4b, 0x4c, 0x48, 0x49,
-+ 0x4f, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xa0, 0x60, 0x98,
-+ 0xf4, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x70, 0x57, 0x54, 0x57, 0x54, 0x57,
-+ 0x56, 0x76, 0x57, 0x4a, 0x08, 0x10, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0xc8, 0x28, 0xa8,
-+ 0xb0, 0x90, 0xb4, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x48, 0x49,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x3f, 0x04, 0x02, 0x3f, 0x21, 0x5f, 0x11,
-+ 0x11, 0x01, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x80, 0xfc, 0x08, 0xf0, 0x10,
-+ 0x30, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x01, 0x7f, 0x49, 0x49, 0x4f, 0x49, 0x49,
-+ 0x4b, 0x7b, 0x4d, 0x49, 0x01, 0x01, 0x00, 0x00,
-+ 0x50, 0x90, 0x10, 0x14, 0x34, 0xf8, 0x50, 0x90,
-+ 0x50, 0x70, 0x28, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x00, 0x02, 0x7a, 0x4b, 0x48, 0x4f, 0x48, 0x4b,
-+ 0x4a, 0x7a, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x77, 0x54, 0x57, 0x54, 0x57, 0x54,
-+ 0x54, 0x77, 0x54, 0x47, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0xa8, 0x30, 0xa0, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x49, 0x48, 0x4b, 0x4a, 0x4c,
-+ 0x4b, 0x7a, 0x4a, 0x42, 0x02, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x48, 0x4b, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x28, 0xa8, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x71, 0x52, 0x57, 0x58, 0x57, 0x54,
-+ 0x56, 0x75, 0x56, 0x45, 0x04, 0x05, 0x00, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0xf0, 0x08, 0xac, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x51, 0x57, 0x55, 0x55, 0x57,
-+ 0x51, 0x73, 0x53, 0x45, 0x09, 0x01, 0x00, 0x00,
-+ 0x08, 0x08, 0xe8, 0x28, 0xe8, 0x68, 0x68, 0xe8,
-+ 0x28, 0xa8, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x49, 0x49, 0x49, 0x48, 0x4b,
-+ 0x4a, 0x7c, 0x48, 0x40, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4a, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x45, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x54, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x4a, 0x4b, 0x4a,
-+ 0x4b, 0x78, 0x4f, 0x40, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x88, 0xfc, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x00, 0x7b, 0x48, 0x49, 0x48, 0x4f, 0x49,
-+ 0x49, 0x7a, 0x4a, 0x44, 0x0b, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4b, 0x4a, 0x4b, 0x4b, 0x4a,
-+ 0x4b, 0x79, 0x4b, 0x44, 0x01, 0x0e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x20, 0xc0, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4f, 0x48, 0x49, 0x4e, 0x48,
-+ 0x4b, 0x7a, 0x4b, 0x42, 0x03, 0x02, 0x00, 0x00,
-+ 0x80, 0xf8, 0x90, 0xfc, 0xd8, 0xe0, 0x88, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x02, 0x7a, 0x4b, 0x48, 0x4f, 0x48, 0x4b,
-+ 0x4a, 0x7b, 0x4a, 0x40, 0x00, 0x0f, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x80, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0x50, 0x48, 0x7c, 0x84, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x48, 0x4a, 0x4a, 0x4a, 0x4a,
-+ 0x4a, 0x7a, 0x4a, 0x43, 0x01, 0x0e, 0x00, 0x00,
-+ 0x18, 0xe0, 0x04, 0xfc, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0xfc, 0x98, 0x04, 0x00, 0x00,
-+ 0x00, 0x07, 0x74, 0x54, 0x54, 0x54, 0x54, 0x55,
-+ 0x55, 0x75, 0x55, 0x44, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0xf8, 0x68, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x52, 0x5f, 0x52, 0x5f,
-+ 0x52, 0x73, 0x54, 0x44, 0x08, 0x13, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0x20, 0x7c, 0xc8, 0x48, 0xa8,
-+ 0x28, 0x90, 0x90, 0xa8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x49, 0x48, 0x4f, 0x49, 0x49,
-+ 0x49, 0x79, 0x49, 0x41, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x02, 0x02, 0x7a, 0x4f, 0x4a, 0x4a, 0x4b, 0x4a,
-+ 0x4a, 0x7a, 0x4c, 0x44, 0x08, 0x13, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xbc, 0x40, 0x60, 0xbc, 0xd0,
-+ 0x90, 0xfc, 0xb0, 0xa8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x5f, 0x5a, 0x5a, 0x5a,
-+ 0x7f, 0x57, 0x46, 0x0a, 0x12, 0x02, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xd4, 0x98, 0x90,
-+ 0x90, 0x30, 0xa8, 0xa8, 0x44, 0x84, 0x00, 0x00,
-+ 0x00, 0x00, 0x77, 0x54, 0x54, 0x57, 0x54, 0x55,
-+ 0x55, 0x75, 0x55, 0x4a, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x90, 0xfc, 0x90, 0xd8,
-+ 0xf8, 0xf8, 0xfc, 0xbc, 0xd4, 0x90, 0x00, 0x00,
-+ 0x00, 0x04, 0x73, 0x52, 0x58, 0x54, 0x54, 0x50,
-+ 0x5e, 0x72, 0x53, 0x42, 0x05, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x49, 0x4b, 0x4a, 0x4f, 0x49,
-+ 0x49, 0x79, 0x49, 0x40, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0xfc, 0x08, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1e, 0x12, 0x12, 0x1e, 0x00, 0x3f, 0x01,
-+ 0x7f, 0x00, 0x1e, 0x12, 0x1e, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0xf0, 0x00, 0xf8, 0x00,
-+ 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x90, 0x00, 0x00,
-+ 0x05, 0x16, 0x2c, 0x12, 0x3f, 0x20, 0x4f, 0x08,
-+ 0x0f, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x28, 0x70, 0xb0, 0x48, 0xfc, 0x08, 0xe0, 0x20,
-+ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x05, 0x75, 0x55, 0x57, 0x5c, 0x51, 0x5f,
-+ 0x52, 0x73, 0x52, 0x43, 0x04, 0x08, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x20, 0xa4, 0xfc, 0x20, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x05, 0x05, 0x75, 0x5f, 0x55, 0x57, 0x55, 0x57,
-+ 0x55, 0x7f, 0x55, 0x45, 0x08, 0x11, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0x50, 0x50,
-+ 0x50, 0xd0, 0x50, 0x90, 0x90, 0x10, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x57, 0x54, 0x57, 0x54,
-+ 0x57, 0x72, 0x5f, 0x42, 0x02, 0x03, 0x00, 0x00,
-+ 0x00, 0x38, 0xe8, 0x28, 0xa8, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0x28, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x02, 0x02, 0x73, 0x56, 0x5a, 0x5f, 0x52, 0x52,
-+ 0x52, 0x77, 0x50, 0x45, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8, 0xa8,
-+ 0xa8, 0xfc, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x49, 0x4f, 0x49, 0x49, 0x49,
-+ 0x49, 0x79, 0x48, 0x45, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x20, 0xfc, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0xc0, 0x28, 0x14, 0xf4, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x4b, 0x4b, 0x4d, 0x49, 0x4b,
-+ 0x48, 0x7f, 0x4a, 0x42, 0x04, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0xb0, 0x78, 0x54, 0x10, 0xf8,
-+ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x00, 0x07, 0x70, 0x5f, 0x50, 0x57, 0x55, 0x57,
-+ 0x54, 0x77, 0x54, 0x47, 0x05, 0x09, 0x00, 0x00,
-+ 0x80, 0xf8, 0x88, 0xfc, 0x88, 0xf8, 0xa8, 0xb8,
-+ 0x88, 0xf8, 0x88, 0xb8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x02, 0x02, 0x7b, 0x4d, 0x48, 0x48, 0x4f, 0x49,
-+ 0x49, 0x79, 0x4a, 0x44, 0x1f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x88, 0x00, 0xfc, 0x50,
-+ 0x50, 0x58, 0xe4, 0x44, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x48, 0x4b, 0x4a, 0x4b,
-+ 0x48, 0x7f, 0x48, 0x41, 0x06, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x01, 0x07, 0x79, 0x48, 0x4f, 0x49, 0x49, 0x49,
-+ 0x4b, 0x7a, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x10, 0xfc, 0x50, 0x40, 0xfc, 0xf0, 0x10, 0xf0,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4c, 0x4a, 0x4a, 0x4c, 0x4b,
-+ 0x4a, 0x7f, 0x48, 0x47, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xa8, 0xa4, 0x94, 0x70, 0xf8,
-+ 0xa8, 0xfc, 0x00, 0xfc, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x4b,
-+ 0x4b, 0x7a, 0x4b, 0x47, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0xf0, 0xf8,
-+ 0xf8, 0x48, 0xf8, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x01, 0x06, 0x76, 0x55, 0x5f, 0x51, 0x52, 0x57,
-+ 0x59, 0x77, 0x55, 0x43, 0x03, 0x0c, 0x00, 0x00,
-+ 0x04, 0xf4, 0xb4, 0xb4, 0x74, 0x94, 0x94, 0xf4,
-+ 0x34, 0xd4, 0x54, 0x84, 0xc4, 0x0c, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4b, 0x4b, 0x4d, 0x49, 0x49,
-+ 0x49, 0x78, 0x4b, 0x42, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0xf8, 0x50, 0xf0, 0x50,
-+ 0xf0, 0xa0, 0xf0, 0x78, 0xc0, 0x7c, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4b, 0x4b, 0x4d, 0x49, 0x49,
-+ 0x49, 0x7f, 0x4a, 0x42, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0xf8, 0x50, 0xf0, 0x50,
-+ 0xf0, 0xfc, 0x48, 0x78, 0xc0, 0x7c, 0x00, 0x00,
-+ 0x01, 0x0f, 0x71, 0x55, 0x54, 0x5d, 0x55, 0x55,
-+ 0x5d, 0x75, 0x50, 0x45, 0x04, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xd0, 0x14, 0xd8, 0x50, 0x54,
-+ 0xd4, 0x4c, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x17, 0x13, 0x6a, 0x2b, 0x13, 0x2a, 0x7b, 0x13,
-+ 0x21, 0x3f, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0xf8, 0xa8, 0xb0, 0xb0, 0xa8, 0x28, 0xb8, 0xa0,
-+ 0x00, 0xf8, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x4a, 0x4b,
-+ 0x4a, 0x7c, 0x4f, 0x43, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8,
-+ 0xa8, 0xc4, 0xfc, 0x20, 0xe0, 0x18, 0x00, 0x00,
-+ 0x1e, 0x12, 0x1e, 0x3f, 0x20, 0x2f, 0x22, 0x3f,
-+ 0x29, 0x2f, 0x2f, 0x29, 0x3f, 0x41, 0x00, 0x00,
-+ 0x78, 0x48, 0x78, 0xfc, 0x20, 0xa0, 0x20, 0xfc,
-+ 0x48, 0xa8, 0x30, 0xb0, 0x48, 0x84, 0x00, 0x00,
-+ 0x1e, 0x12, 0x1e, 0x7f, 0x02, 0x1f, 0x1f, 0x13,
-+ 0x1f, 0x0c, 0x7e, 0x12, 0x1e, 0x12, 0x00, 0x00,
-+ 0xf0, 0x90, 0xf0, 0xfc, 0x00, 0xf0, 0x90, 0xf0,
-+ 0xf0, 0x60, 0xfc, 0x90, 0xf0, 0x90, 0x00, 0x00,
-+ 0x00, 0x07, 0x74, 0x5f, 0x55, 0x57, 0x57, 0x54,
-+ 0x57, 0x77, 0x54, 0x47, 0x07, 0x04, 0x00, 0x00,
-+ 0x18, 0xf0, 0x88, 0xfc, 0x28, 0xf8, 0x88, 0x88,
-+ 0xfc, 0xc8, 0x28, 0xa8, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x79, 0x49, 0x49, 0x4b, 0x48, 0x4f,
-+ 0x4a, 0x7b, 0x4b, 0x42, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xf0, 0xf0, 0xf8, 0x10, 0xfc,
-+ 0xa8, 0xb8, 0xb8, 0xac, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x55, 0x55, 0x57, 0x5a, 0x52,
-+ 0x5f, 0x77, 0x56, 0x4a, 0x12, 0x02, 0x00, 0x00,
-+ 0x28, 0x28, 0xa8, 0x7c, 0x68, 0xa8, 0xbc, 0x28,
-+ 0xa8, 0x3c, 0xa8, 0xa8, 0x3c, 0x20, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x52, 0x5f, 0x5a, 0x5f, 0x5a,
-+ 0x5f, 0x72, 0x5f, 0x42, 0x02, 0x02, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x7c, 0xd4, 0xfc, 0xd4, 0xfc,
-+ 0xa8, 0x7c, 0x88, 0x7c, 0x28, 0x18, 0x00, 0x00,
-+ 0x01, 0x0f, 0x73, 0x57, 0x52, 0x5f, 0x57, 0x5f,
-+ 0x53, 0x7e, 0x53, 0x4f, 0x01, 0x07, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xa0, 0xf8, 0xa8, 0xe8, 0xbc,
-+ 0xac, 0x44, 0xf0, 0xfc, 0x10, 0xf8, 0x00, 0x00,
-+ 0x00, 0x07, 0x75, 0x55, 0x57, 0x55, 0x55, 0x57,
-+ 0x55, 0x75, 0x57, 0x46, 0x05, 0x09, 0x00, 0x00,
-+ 0x30, 0x50, 0x48, 0xfc, 0xac, 0xf4, 0xfc, 0x00,
-+ 0x78, 0x48, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x0f, 0x08, 0x7f, 0x5b, 0x5b, 0x5f, 0x5d, 0x5f,
-+ 0x5b, 0x7b, 0x4e, 0x0b, 0x10, 0x27, 0x00, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x58, 0x58, 0xf8, 0x28, 0xf8,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xa8, 0xf0, 0x00, 0x00,
-+ 0x03, 0x0e, 0x73, 0x5e, 0x53, 0x5c, 0x52, 0x5f,
-+ 0x55, 0x76, 0x57, 0x45, 0x06, 0x07, 0x00, 0x00,
-+ 0x80, 0x78, 0xa8, 0x28, 0xc8, 0x98, 0xf0, 0xfc,
-+ 0x28, 0xd8, 0xf8, 0x28, 0xd8, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x22, 0x22, 0x24, 0x2c, 0x34,
-+ 0x24, 0x24, 0x24, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x88, 0x98, 0xa8, 0xc8, 0x88,
-+ 0x98, 0x98, 0x78, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x22, 0x2c, 0x37, 0x20, 0x2f,
-+ 0x21, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x88, 0x68, 0xd8, 0x08, 0xe8,
-+ 0x28, 0x28, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x29, 0x21, 0x2f, 0x21,
-+ 0x21, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x98, 0x78, 0x08, 0xe8, 0x08,
-+ 0xe8, 0x28, 0x28, 0xc8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3f, 0x22, 0x27, 0x26, 0x2b,
-+ 0x32, 0x23, 0x22, 0x22, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xe8, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x68, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x2f, 0x21, 0x2f, 0x22, 0x3f,
-+ 0x27, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xc8, 0x48, 0xf8,
-+ 0xc8, 0x48, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x27, 0x21, 0x2f, 0x24, 0x22,
-+ 0x2f, 0x21, 0x27, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xc8, 0x08, 0xe8, 0x48, 0x88,
-+ 0xe8, 0x08, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x37, 0x22, 0x3f, 0x24, 0x2f,
-+ 0x34, 0x25, 0x24, 0x23, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xd8, 0x88, 0xf8, 0x48, 0xe8,
-+ 0x58, 0x88, 0x28, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x2e, 0x2a,
-+ 0x2e, 0x23, 0x3c, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xa8, 0xf8, 0x88, 0xa8, 0xa8,
-+ 0x58, 0x78, 0xb8, 0x18, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x27, 0x22, 0x2f, 0x27, 0x27,
-+ 0x27, 0x24, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xe8, 0xc8, 0xc8,
-+ 0xe8, 0x48, 0xe8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x27, 0x24, 0x2f, 0x28, 0x2f, 0x2f,
-+ 0x28, 0x2f, 0x26, 0x38, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0x48, 0xe8, 0x28, 0xe8, 0xe8,
-+ 0x28, 0xe8, 0x68, 0x18, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x2f, 0x27, 0x25, 0x27, 0x25,
-+ 0x27, 0x2f, 0x20, 0x2f, 0x22, 0x3f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0xc8, 0x48, 0xc8, 0x48,
-+ 0xe8, 0xe8, 0x48, 0xe8, 0x48, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x27, 0x24, 0x27, 0x21, 0x3f, 0x2f,
-+ 0x2b, 0x2a, 0x2b, 0x2f, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0x48, 0xc8, 0x08, 0xf8, 0xe8,
-+ 0xa8, 0xa8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x09, 0x15, 0x25, 0x7f, 0x00,
-+ 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x50, 0x90, 0xfc, 0x00,
-+ 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2f, 0x2a, 0x2f, 0x3f, 0x27, 0x24,
-+ 0x27, 0x3e, 0x27, 0x2c, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xc8, 0x48,
-+ 0xd8, 0xa8, 0x48, 0x38, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x10, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10,
-+ 0x14, 0x19, 0x61, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0xa0,
-+ 0xa0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x13, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10,
-+ 0x14, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x60, 0x50, 0x48,
-+ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x12, 0x7e, 0x12, 0x12, 0x12,
-+ 0x16, 0x1a, 0x62, 0x03, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x11, 0x7e, 0x12, 0x14, 0x10,
-+ 0x14, 0x18, 0x61, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x44, 0x48, 0x50, 0xc0,
-+ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11,
-+ 0x15, 0x1a, 0x62, 0x04, 0x08, 0x00, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x12, 0x7e, 0x12, 0x12, 0x12,
-+ 0x16, 0x1a, 0x62, 0x02, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x13, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x11,
-+ 0x16, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x40, 0x60, 0xd0, 0x48,
-+ 0x44, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x17, 0x7d, 0x11, 0x11, 0x11,
-+ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x05, 0x3d, 0x05, 0x0d,
-+ 0x35, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x48, 0x50, 0x60, 0x48,
-+ 0x38, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x08, 0x0b, 0x18, 0x28, 0x49, 0x09,
-+ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x50, 0x48, 0x5c, 0xe0, 0x20, 0x10, 0x14, 0x0c,
-+ 0x04, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x13,
-+ 0x16, 0x1a, 0x64, 0x04, 0x09, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x08,
-+ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x11, 0x7d, 0x13, 0x15, 0x11,
-+ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0x10, 0xfc, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x13, 0x7e, 0x17, 0x12, 0x12,
-+ 0x17, 0x1a, 0x62, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0x48,
-+ 0xc8, 0x70, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x10, 0x7c, 0x11, 0x10, 0x10,
-+ 0x14, 0x18, 0x61, 0x00, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68,
-+ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x13,
-+ 0x16, 0x1a, 0x62, 0x02, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4,
-+ 0x44, 0x48, 0x30, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x10, 0x11, 0x12, 0x7c, 0x10, 0x11, 0x13,
-+ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x80, 0xf8, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x13, 0x10, 0x10, 0x7c, 0x13, 0x10, 0x10,
-+ 0x17, 0x18, 0x60, 0x00, 0x07, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x50, 0x88, 0xfc, 0x44, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x10, 0x10, 0x13, 0x7c, 0x10, 0x10, 0x10,
-+ 0x17, 0x18, 0x61, 0x01, 0x02, 0x04, 0x00, 0x00,
-+ 0x08, 0x88, 0x90, 0xfc, 0x90, 0x90, 0x90, 0x90,
-+ 0xfc, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x10, 0x7c, 0x13, 0x10, 0x13,
-+ 0x14, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc,
-+ 0x40, 0x70, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x12,
-+ 0x10, 0x1f, 0x60, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x50, 0x88, 0xfc, 0x84, 0x80, 0xf8, 0x40,
-+ 0x40, 0xfc, 0xc0, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x10, 0x11, 0x16, 0x7f, 0x12, 0x12, 0x13,
-+ 0x16, 0x1a, 0x63, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x10, 0x7f, 0x12, 0x12, 0x13,
-+ 0x16, 0x1a, 0x63, 0x02, 0x02, 0x02, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x11, 0x7d, 0x12, 0x10, 0x10,
-+ 0x17, 0x19, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x48, 0x44, 0x44, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x11, 0x7c, 0x10, 0x13, 0x10,
-+ 0x17, 0x19, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x44, 0xa4, 0x18, 0x90, 0xe0, 0x90, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1e, 0x10, 0x1e, 0x12, 0x02,
-+ 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x90, 0x80,
-+ 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x11, 0x17, 0x11, 0x7c, 0x10, 0x10, 0x11,
-+ 0x15, 0x1b, 0x65, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xa0, 0xa0, 0xa4, 0x28,
-+ 0x30, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x11, 0x7d, 0x11, 0x12, 0x14,
-+ 0x10, 0x1f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x98, 0x64, 0x44,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7e, 0x13, 0x12, 0x12,
-+ 0x13, 0x1e, 0x64, 0x04, 0x08, 0x11, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12,
-+ 0x14, 0x1b, 0x60, 0x00, 0x0f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x48,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x13, 0x12,
-+ 0x16, 0x1a, 0x62, 0x02, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x70, 0x50, 0x50, 0xf8, 0x08,
-+ 0xe8, 0xa8, 0xa8, 0xe8, 0x88, 0x18, 0x00, 0x00,
-+ 0x01, 0x11, 0x13, 0x15, 0x7d, 0x11, 0x11, 0x11,
-+ 0x17, 0x1a, 0x63, 0x05, 0x09, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0x00, 0xf8, 0x48, 0x48, 0xb0, 0x00, 0x00,
-+ 0x08, 0x09, 0x11, 0x11, 0x30, 0x57, 0x10, 0x13,
-+ 0x14, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x40, 0xfc, 0xe0, 0x58,
-+ 0x44, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x13,
-+ 0x16, 0x1b, 0x62, 0x05, 0x05, 0x08, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x54, 0x18, 0x00, 0x00,
-+ 0x08, 0x0c, 0x2a, 0x2a, 0x59, 0x14, 0x22, 0x3f,
-+ 0x21, 0x5f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x30, 0xa8, 0xa8, 0x60, 0x50, 0x88, 0xfc,
-+ 0x08, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x4a, 0x25, 0x21, 0x0f, 0x12, 0x23,
-+ 0x21, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x68, 0xfc, 0x68, 0xfc,
-+ 0x30, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x36, 0x22, 0x36, 0x22, 0x23, 0x3e, 0x2b,
-+ 0x08, 0x3e, 0x08, 0x08, 0x0e, 0x73, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x94, 0x14, 0x0c, 0xf8,
-+ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x15, 0x7d, 0x15, 0x17, 0x15,
-+ 0x15, 0x1d, 0x67, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7f, 0x10, 0x17, 0x10,
-+ 0x14, 0x1c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0x00, 0xfc, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x7f,
-+ 0x0a, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10,
-+ 0x10, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e, 0x08, 0x3e,
-+ 0x0c, 0x71, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0x28, 0x30, 0x20,
-+ 0x60, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x2f, 0x29, 0x2f, 0x79, 0x2f, 0x28, 0x2b,
-+ 0x2a, 0x3b, 0x6a, 0x0b, 0x0a, 0x08, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x08, 0xe8,
-+ 0x28, 0xe8, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0x17, 0x7c, 0x14, 0x17, 0x14,
-+ 0x16, 0x1e, 0x6b, 0x08, 0x1f, 0x00, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xfc, 0xb8, 0xc8, 0x78, 0xa0,
-+ 0xa8, 0xa8, 0xb8, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x11, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x13,
-+ 0x16, 0x1b, 0x60, 0x0f, 0x01, 0x00, 0x00, 0x00,
-+ 0x60, 0x10, 0xfc, 0xa0, 0xf8, 0xb8, 0x38, 0xf8,
-+ 0x08, 0xf8, 0x10, 0xfc, 0x10, 0xb0, 0x00, 0x00,
-+ 0x00, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12,
-+ 0x17, 0x18, 0x6f, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8,
-+ 0x58, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x13, 0x7e, 0x13, 0x10, 0x13,
-+ 0x17, 0x18, 0x63, 0x0d, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0x58,
-+ 0x58, 0xc8, 0x28, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x10, 0x17, 0x11, 0x7d, 0x12, 0x17, 0x10,
-+ 0x17, 0x1a, 0x62, 0x02, 0x03, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0xd8, 0x64, 0xfc, 0x00,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x17, 0x11, 0x10, 0x7d, 0x10, 0x17, 0x10,
-+ 0x15, 0x1f, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x10, 0xfc, 0x50, 0x48, 0xf8, 0x50, 0xfc, 0x50,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x29, 0x3a, 0x25, 0x25, 0x39,
-+ 0x21, 0x21, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x20, 0xf8, 0xf8, 0x08, 0xf8,
-+ 0xf8, 0x18, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x10, 0x14, 0x65, 0x1a, 0x14, 0x7c,
-+ 0x09, 0x11, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0xfc, 0x90, 0xf8, 0xf8, 0x90,
-+ 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2f, 0x2e, 0x2f, 0x2f, 0x28, 0x2f,
-+ 0x2f, 0x49, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x98, 0x94, 0xfc, 0x90, 0xb0, 0xa8,
-+ 0xc8, 0x84, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0e, 0x3f, 0x2d, 0x52, 0x2c, 0x1e, 0x73,
-+ 0x1e, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x50, 0x20, 0x50, 0x88,
-+ 0x04, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x13, 0x10, 0x17, 0x7c, 0x13, 0x10, 0x17,
-+ 0x16, 0x1a, 0x67, 0x02, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xa8, 0x94, 0xf8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x12, 0x13, 0x12,
-+ 0x16, 0x1a, 0x62, 0x04, 0x04, 0x0b, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0xfc, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3e, 0x2a,
-+ 0x3e, 0x2b, 0x3f, 0x1f, 0x01, 0x7f, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0xa8,
-+ 0xf8, 0xa8, 0xf8, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x13, 0x12, 0x12, 0x7e, 0x12, 0x12, 0x12,
-+ 0x17, 0x1a, 0x65, 0x05, 0x08, 0x13, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0xa8, 0xf8, 0xf8, 0x20, 0xf8,
-+ 0xfc, 0xe8, 0x74, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x11, 0x7f, 0x10, 0x17, 0x14,
-+ 0x17, 0x1b, 0x61, 0x07, 0x00, 0x03, 0x00, 0x00,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x48,
-+ 0x58, 0x58, 0xf0, 0xfc, 0x90, 0xf8, 0x00, 0x00,
-+ 0x00, 0x17, 0x13, 0x12, 0x7f, 0x10, 0x17, 0x13,
-+ 0x10, 0x1f, 0x61, 0x0f, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xfc, 0xf8,
-+ 0xa0, 0xfc, 0x48, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x3e, 0x14, 0x7f, 0x3e, 0x22, 0x3e, 0x3e,
-+ 0x26, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x80, 0xf8, 0xf8, 0x08, 0xf8, 0xf0, 0xb8, 0x9c,
-+ 0x7c, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x24, 0x24, 0x24, 0x3c, 0x27, 0x04, 0x04,
-+ 0x7c, 0x24, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x22, 0x5e,
-+ 0x10, 0x1e, 0x12, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x88, 0xf0,
-+ 0x10, 0xf0, 0x90, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x00, 0x3f, 0x20, 0x5f,
-+ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x08, 0xf0,
-+ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x17, 0x10, 0x11, 0x7d, 0x12, 0x14, 0x13,
-+ 0x16, 0x1b, 0x62, 0x03, 0x02, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x50, 0x70, 0xc0, 0x3c, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x3f, 0x20, 0x5f, 0x02,
-+ 0x1e, 0x10, 0x1e, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0xfc, 0x08, 0xf0, 0x80,
-+ 0xf0, 0x10, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x00, 0x7f, 0x0f, 0x01,
-+ 0x0f, 0x7f, 0x1e, 0x13, 0x1e, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0xe8, 0x00,
-+ 0xe0, 0xfc, 0x10, 0xfc, 0x90, 0x30, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x07, 0x04, 0x0c, 0x14, 0x22,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x22, 0x22, 0x17, 0x14, 0x08, 0x18, 0x24,
-+ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x40, 0x40,
-+ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x03, 0x0c, 0x7f, 0x12, 0x14, 0x0f, 0x08, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x3c, 0x03, 0x7c, 0x00, 0x00,
-+ 0xc0, 0x80, 0xf0, 0x90, 0x50, 0xe0, 0x20, 0xe0,
-+ 0xe0, 0x20, 0xe0, 0x40, 0x80, 0x78, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x7f, 0x01, 0x03,
-+ 0x0c, 0x32, 0x01, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x00, 0xf0,
-+ 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x01,
-+ 0x06, 0x1a, 0x01, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0xf0,
-+ 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e, 0x08, 0x7e,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0x9c,
-+ 0x24, 0x68, 0x98, 0x10, 0x20, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x7f,
-+ 0x01, 0x03, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xfc,
-+ 0x00, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x03,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
-+ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x02, 0x04, 0x19, 0x61,
-+ 0x01, 0x1f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c,
-+ 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x04, 0x1f, 0x60, 0x1f,
-+ 0x02, 0x03, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0xf0, 0x0c, 0xf0,
-+ 0x00, 0xe0, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x09, 0x09, 0x09, 0x15, 0x15,
-+ 0x23, 0x02, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x20, 0x50, 0x48,
-+ 0x88, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x04, 0x7f, 0x00,
-+ 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x20, 0x20, 0x40, 0xfc, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x12, 0x12, 0x24, 0x09,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x50, 0x48, 0x48, 0xc0,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x03, 0x0c, 0x70, 0x1f, 0x12, 0x12, 0x14,
-+ 0x11, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x90, 0xb0, 0x70,
-+ 0x10, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x05, 0x19, 0x6f, 0x01,
-+ 0x1f, 0x01, 0x0f, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec, 0x00,
-+ 0xf0, 0x00, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x22, 0x0e, 0x01, 0x03,
-+ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x30, 0xe0, 0x10, 0x08, 0x48, 0x40, 0xa0, 0x10,
-+ 0xf0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x24, 0x24, 0x3c, 0x05, 0x7c, 0x24, 0x24, 0x45,
-+ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x00,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x02, 0x7f, 0x09, 0x1f, 0x61, 0x1f, 0x02,
-+ 0x0f, 0x74, 0x07, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0xf0, 0x4c, 0xf8, 0x40,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x07, 0x10, 0x2f, 0x42, 0x1f, 0x12, 0x14, 0x1f,
-+ 0x10, 0x1f, 0x01, 0x7f, 0x0c, 0x70, 0x00, 0x00,
-+ 0xe0, 0x20, 0xf0, 0x8c, 0xf0, 0xb0, 0x70, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xfc, 0x60, 0x1c, 0x00, 0x00,
-+ 0x02, 0x04, 0x1f, 0x13, 0x15, 0x13, 0x1f, 0x13,
-+ 0x15, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x90, 0x50, 0x90, 0xf0, 0x90,
-+ 0x50, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x24, 0x24, 0x3f, 0x25, 0x04, 0x7f, 0x25, 0x24,
-+ 0x44, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0xfc, 0x10, 0x90,
-+ 0x30, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x0c, 0x7f, 0x13, 0x12,
-+ 0x13, 0x17, 0x15, 0x17, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x30, 0xfc, 0xe0, 0x20,
-+ 0xe0, 0x70, 0x50, 0x70, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3e, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x13, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0x08, 0x88, 0x48,
-+ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x04, 0x7c,
-+ 0x15, 0x15, 0x14, 0x24, 0x25, 0x46, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90,
-+ 0x10, 0xa0, 0x60, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x10, 0x17, 0x30, 0x50, 0x17,
-+ 0x11, 0x11, 0x13, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xfc,
-+ 0x10, 0x10, 0xe0, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x12, 0x12, 0x31, 0x50, 0x17,
-+ 0x11, 0x11, 0x13, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xf8, 0x80, 0xfc,
-+ 0x10, 0x10, 0xe0, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x24, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0a, 0x13, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3e, 0x24, 0x06, 0x0b, 0x11, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0xa8, 0xfc, 0x88,
-+ 0xc8, 0xa8, 0xa8, 0xfc, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3d, 0x24, 0x06, 0x08, 0x11, 0x26, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0xa0,
-+ 0xfc, 0x24, 0x78, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x02,
-+ 0x7f, 0x04, 0x0f, 0x11, 0x06, 0x38, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00,
-+ 0xfc, 0x40, 0x40, 0xc0, 0x20, 0x10, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0b, 0x11, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x11, 0x7d, 0x27, 0x25, 0x25,
-+ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00,
-+ 0x80, 0x8c, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc,
-+ 0x10, 0x10, 0x10, 0x10, 0x7c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x12, 0x11, 0x7d, 0x24, 0x24, 0x25,
-+ 0x7a, 0x48, 0x0d, 0x15, 0x22, 0x44, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8,
-+ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x10, 0x7c, 0x27, 0x24, 0x24,
-+ 0x78, 0x4b, 0x0c, 0x14, 0x20, 0x41, 0x00, 0x00,
-+ 0x60, 0xa8, 0xa4, 0xa4, 0xa0, 0xfc, 0xa8, 0xa8,
-+ 0xd8, 0x90, 0x94, 0xac, 0xcc, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x24, 0x25, 0x25,
-+ 0x75, 0x49, 0x0d, 0x15, 0x25, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x49, 0x29, 0x22, 0x0c, 0x10, 0x20, 0x27,
-+ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x54, 0xd4, 0x60, 0xc0, 0x00,
-+ 0x00, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x12, 0x7f, 0x2a, 0x2a, 0x2f,
-+ 0x2a, 0x72, 0x12, 0x1c, 0x27, 0x48, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0xa4, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x13,
-+ 0x3c, 0x04, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3c, 0x05, 0x06, 0x0a, 0x10, 0x23, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x20, 0xfc, 0x24, 0x44, 0x84, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x15, 0x7e, 0x2e, 0x2d, 0x2d,
-+ 0x75, 0x55, 0x1f, 0x2c, 0x24, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x11, 0x7e, 0x24, 0x25, 0x24,
-+ 0x78, 0x08, 0x0c, 0x10, 0x27, 0x40, 0x00, 0x00,
-+ 0x08, 0x30, 0xc8, 0x24, 0x24, 0x18, 0xe0, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x11, 0x7e, 0x24, 0x24, 0x25,
-+ 0x6b, 0x18, 0x0c, 0x14, 0x21, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x04, 0x88, 0xb8, 0xe8, 0x68,
-+ 0x68, 0xf0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x12, 0x7b, 0x2a, 0x2a, 0x2b,
-+ 0x6a, 0x12, 0x13, 0x1c, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12, 0x7f,
-+ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c,
-+ 0x00, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12,
-+ 0x3a, 0x24, 0x07, 0x0a, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x50, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x08,
-+ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20,
-+ 0x00, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x7f, 0x2a, 0x2a, 0x2a,
-+ 0x6a, 0x12, 0x1a, 0x14, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x00, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x24,
-+ 0x6b, 0x1a, 0x0e, 0x12, 0x2f, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x68, 0x98, 0x08, 0xf8, 0x00,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x13, 0x12, 0x12,
-+ 0x3c, 0x24, 0x06, 0x0b, 0x10, 0x20, 0x00, 0x00,
-+ 0x50, 0xfc, 0x50, 0xf8, 0x50, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xfc, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x10, 0x7f, 0x2a, 0x2a, 0x2b,
-+ 0x29, 0x72, 0x11, 0x1a, 0x20, 0x43, 0x00, 0x00,
-+ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x20, 0x20, 0xb8,
-+ 0x98, 0xa8, 0x98, 0xa8, 0x88, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x7b, 0x2a, 0x2a, 0x2b,
-+ 0x28, 0x73, 0x11, 0x18, 0x20, 0x47, 0x00, 0x00,
-+ 0xc0, 0x58, 0x48, 0x48, 0x58, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x10, 0xa0, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25,
-+ 0x75, 0x08, 0x0d, 0x16, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0x20, 0xf8, 0x20,
-+ 0xfc, 0x54, 0x2c, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x10, 0x7c, 0x27, 0x24, 0x24,
-+ 0x78, 0x08, 0x0d, 0x16, 0x22, 0x44, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xb8, 0xa0, 0xfc, 0x80, 0xf8,
-+ 0x80, 0xfc, 0x54, 0xac, 0xac, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x7a, 0x2a, 0x2a, 0x2b,
-+ 0x2b, 0x73, 0x13, 0x1a, 0x23, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x13, 0x7a, 0x2d, 0x29, 0x29,
-+ 0x28, 0x73, 0x1a, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xf8, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x17, 0x79, 0x2f, 0x2d, 0x2d,
-+ 0x2f, 0x73, 0x13, 0x1d, 0x29, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xd0, 0x3c, 0xe8, 0x68, 0x68,
-+ 0xd8, 0x98, 0x50, 0x58, 0x28, 0x44, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x13, 0x7a, 0x2a, 0x2b, 0x28,
-+ 0x29, 0x70, 0x17, 0x19, 0x22, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x50, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x13, 0x7a, 0x2b, 0x2a, 0x2a,
-+ 0x2a, 0x72, 0x12, 0x1a, 0x22, 0x43, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x08, 0xe8,
-+ 0xa8, 0xe8, 0xa8, 0xe8, 0xa8, 0x78, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x13, 0x7a, 0x2b, 0x2a, 0x2a,
-+ 0x2b, 0x72, 0x12, 0x1b, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x48, 0x48,
-+ 0xf8, 0xe8, 0xd8, 0x58, 0x48, 0x58, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x13, 0x7c, 0x25, 0x26, 0x24,
-+ 0x7b, 0x0a, 0x0e, 0x12, 0x22, 0x42, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xf8, 0xa0, 0xf0, 0xa8, 0xe4,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x98, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x13, 0x7c, 0x2b, 0x2a, 0x2b,
-+ 0x2a, 0x73, 0x18, 0x17, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x21, 0x3e, 0x32, 0x5e,
-+ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0x50, 0xfc, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x01, 0x7d, 0x55, 0x55, 0x7f, 0x56, 0x7e, 0x12,
-+ 0x7f, 0x15, 0x15, 0x26, 0x26, 0x4c, 0x00, 0x00,
-+ 0x00, 0x7c, 0x54, 0x54, 0xfc, 0xd4, 0xfc, 0x90,
-+ 0xfc, 0x14, 0x94, 0xa4, 0x24, 0x4c, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x15, 0x7f, 0x2d, 0x2f, 0x29,
-+ 0x2f, 0x71, 0x12, 0x1a, 0x24, 0x48, 0x00, 0x00,
-+ 0x08, 0xc8, 0x48, 0x48, 0xfc, 0x54, 0xd4, 0x14,
-+ 0xd4, 0x78, 0x48, 0x48, 0x54, 0xe4, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x13, 0x7d, 0x26, 0x24, 0x27,
-+ 0x24, 0x78, 0x08, 0x14, 0x20, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf8, 0x50, 0x60, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x27,
-+ 0x7a, 0x0b, 0x0f, 0x17, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0xf0, 0xf8,
-+ 0x48, 0xf8, 0xf8, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x11, 0x7f, 0x2d, 0x2d, 0x2f,
-+ 0x2b, 0x73, 0x15, 0x19, 0x29, 0x41, 0x00, 0x00,
-+ 0x00, 0x3c, 0xd4, 0x14, 0xec, 0x7c, 0x64, 0xfc,
-+ 0x24, 0xbc, 0x64, 0x3c, 0x18, 0x64, 0x00, 0x00,
-+ 0x10, 0x17, 0x13, 0x12, 0x7b, 0x28, 0x2b, 0x29,
-+ 0x28, 0x77, 0x11, 0x1f, 0x29, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0,
-+ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x12, 0x12, 0x13, 0x15, 0x78, 0x2f, 0x2a, 0x2e,
-+ 0x2a, 0x76, 0x12, 0x1e, 0x23, 0x4e, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xe8, 0x68, 0x20, 0xfc, 0xa0, 0xe8,
-+ 0xa8, 0xd0, 0xd4, 0xac, 0xcc, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x13, 0x7b, 0x2d, 0x29, 0x29,
-+ 0x2f, 0x73, 0x13, 0x1d, 0x29, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x50, 0x78, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
-+ 0x0f, 0x71, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0x80, 0x00, 0x30, 0xc0,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x20,
-+ 0x40, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x78, 0x08, 0x08, 0xe8, 0x70,
-+ 0x80, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x1e, 0x11, 0x11, 0x2f, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x30, 0xe0, 0x10, 0x08, 0x08, 0xe0, 0x40, 0x80,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x20, 0x4f, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x08, 0xe0, 0x40,
-+ 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x06, 0x19, 0x6f,
-+ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0xe0,
-+ 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7c, 0x07, 0x08, 0x0a, 0x11, 0x10, 0x14,
-+ 0x18, 0x70, 0x11, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68,
-+ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x00, 0x3f, 0x22, 0x3f, 0x00,
-+ 0x3e, 0x04, 0x0e, 0x78, 0x09, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0,
-+ 0x50, 0x70, 0xb4, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x04, 0x7f, 0x0a, 0x34, 0x0a, 0x3f, 0x01,
-+ 0x1f, 0x00, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x28, 0xd0, 0x28, 0xfc, 0x04,
-+ 0xf0, 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x37, 0x2d, 0x2d, 0x3f, 0x3f, 0x2d,
-+ 0x2d, 0x2d, 0x7d, 0x16, 0x14, 0x24, 0x00, 0x00,
-+ 0x04, 0x78, 0x58, 0x54, 0x94, 0x00, 0x7c, 0x08,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x1a, 0x11, 0x1e, 0x12, 0x1d, 0x12, 0x3f,
-+ 0x20, 0x4f, 0x00, 0x3f, 0x01, 0x03, 0x00, 0x00,
-+ 0x80, 0xf0, 0x10, 0xf0, 0x90, 0x70, 0x90, 0xfc,
-+ 0x08, 0xe0, 0xc0, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x02, 0x03, 0x0c, 0x77,
-+ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x80, 0x80, 0x60, 0xdc,
-+ 0x80, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x04, 0x0b, 0x0b, 0x15, 0x10, 0x1f,
-+ 0x70, 0x13, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x50, 0x40, 0xfc,
-+ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x3f, 0x20, 0x20,
-+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x08,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x22, 0x42, 0x02, 0x02,
-+ 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x04, 0x08, 0x00, 0x10, 0x60,
-+ 0x80, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x3f, 0x51, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x04, 0xf8, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5f, 0x10, 0x17, 0x10, 0x1f,
-+ 0x12, 0x12, 0x12, 0x22, 0x23, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x80, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x47, 0x18, 0x7f, 0x11, 0x11,
-+ 0x1f, 0x12, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xc0, 0x80, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x90, 0xa0, 0x94, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x20, 0x3e, 0x40, 0x7f, 0x14,
-+ 0x14, 0x14, 0x14, 0x25, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x44, 0x78, 0x40, 0xf8, 0x88,
-+ 0x50, 0x30, 0x70, 0x88, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x0f, 0x18,
-+ 0x2f, 0x48, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0x40, 0x80, 0xf8, 0x80,
-+ 0xf0, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x00, 0x7f, 0x11, 0x19, 0x27, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x64, 0x25, 0x3c, 0x27,
-+ 0x04, 0x7c, 0x15, 0x16, 0x24, 0x44, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x40, 0xf8, 0x40, 0xfc,
-+ 0xe0, 0xd0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x65, 0x24, 0x3d, 0x24,
-+ 0x07, 0x7c, 0x15, 0x15, 0x25, 0x45, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x40, 0xf0, 0x90,
-+ 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x3f, 0x27, 0x45, 0x7f, 0x09, 0x0f, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe8, 0x20, 0xfc, 0x40, 0xc0, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x25, 0x64, 0x27, 0x3c, 0x25, 0x07,
-+ 0x7e, 0x15, 0x14, 0x14, 0x24, 0x47, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x10, 0xfc, 0x10, 0xf0, 0xfc,
-+ 0x08, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x5f, 0x04, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x01, 0x7f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf0, 0x40, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x00, 0xfc, 0xc0, 0x38, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5e, 0x0a, 0x16, 0x0b, 0x12,
-+ 0x0c, 0x77, 0x01, 0x06, 0x01, 0x0e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x50, 0xb0, 0x50, 0x80,
-+ 0xe0, 0x5c, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x5c, 0x10, 0x1e, 0x10, 0x1f,
-+ 0x08, 0x1f, 0x65, 0x12, 0x12, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x48, 0xa8, 0xa8, 0x30, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x5f, 0x12, 0x1f, 0x7f, 0x0f,
-+ 0x08, 0x0f, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x90, 0xf0, 0xfc, 0xe0,
-+ 0x20, 0xe0, 0x88, 0x50, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x3e, 0x49, 0x3f, 0x0e, 0x38, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x08, 0x0f, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x20, 0xfc, 0xa8, 0xf8, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0x20, 0xe0, 0x38, 0x00, 0x00,
-+ 0x01, 0x3f, 0x3e, 0x48, 0x3f, 0x0e, 0x39, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x08, 0x0f, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0xf8, 0xb0, 0xa8, 0x68, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0x20, 0xe0, 0x38, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x22, 0x3e,
-+ 0x14, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x34, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x24, 0x24, 0x24, 0x3d, 0x26, 0x04, 0x7c,
-+ 0x17, 0x15, 0x14, 0x24, 0x44, 0x04, 0x00, 0x00,
-+ 0x40, 0x78, 0x88, 0xd0, 0x30, 0xa0, 0xd0, 0x90,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x3f, 0x00, 0x7f, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf8, 0x48, 0xfc, 0x40, 0xc0, 0x00, 0x00,
-+ 0x0a, 0x4a, 0x2a, 0x2b, 0x7f, 0x11, 0x0a, 0x3f,
-+ 0x04, 0x3f, 0x04, 0x04, 0x07, 0x78, 0x00, 0x00,
-+ 0x08, 0x88, 0x88, 0x08, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x49, 0x09,
-+ 0x11, 0x11, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x20, 0x10,
-+ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x12, 0x12, 0x3f, 0x12, 0x1e, 0x12, 0x1e, 0x13,
-+ 0x7f, 0x2c, 0x2d, 0x33, 0x20, 0x1f, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x2c,
-+ 0x68, 0x30, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x02, 0x02,
-+ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x14, 0x12, 0x12, 0x7e, 0x15, 0x14, 0x14,
-+ 0x14, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0x50, 0x90, 0x20, 0x28, 0x48,
-+ 0x90, 0x10, 0x20, 0x44, 0x84, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f,
-+ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xfc, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x14, 0x14, 0x14,
-+ 0x17, 0x14, 0x14, 0x24, 0x27, 0x5c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0x44,
-+ 0xc8, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x14, 0x17,
-+ 0x14, 0x14, 0x15, 0x24, 0x27, 0x44, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x80, 0x88, 0xf8,
-+ 0x88, 0x88, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x14, 0x12, 0x12,
-+ 0x1f, 0x11, 0x12, 0x24, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x90, 0x90, 0xa0,
-+ 0xfc, 0xc0, 0xa0, 0x90, 0x8c, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x14, 0x27, 0x23, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x12, 0x15, 0x1a,
-+ 0x13, 0x14, 0x1c, 0x24, 0x24, 0x47, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x11, 0x17, 0x11,
-+ 0x11, 0x1f, 0x11, 0x22, 0x24, 0x48, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x10, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x13, 0x10, 0x1f, 0x10,
-+ 0x17, 0x11, 0x13, 0x3e, 0x22, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0xe0, 0x40, 0xf8, 0x80,
-+ 0xfc, 0x08, 0x10, 0xfc, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x16, 0x16, 0x17, 0x15,
-+ 0x17, 0x17, 0x1d, 0x27, 0x21, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0xb0, 0xb0, 0xf0, 0x50,
-+ 0xf0, 0xf8, 0x48, 0xc8, 0x68, 0xf0, 0x00, 0x00,
-+ 0x01, 0x01, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3f,
-+ 0x21, 0x22, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x54, 0x54, 0x54, 0x54, 0x54,
-+ 0x54, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x84, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x7f,
-+ 0x02, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x55, 0x55, 0x56, 0x55, 0x54,
-+ 0x54, 0x54, 0x7c, 0x45, 0x41, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf0, 0x20,
-+ 0x40, 0x80, 0x80, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x00, 0x3f, 0x04, 0x04, 0x07,
-+ 0x04, 0x0a, 0x09, 0x10, 0x23, 0x4c, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xc0, 0x40, 0x40, 0xf0,
-+ 0x10, 0x20, 0x40, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x21, 0x02, 0x04, 0x18,
-+ 0x67, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x40, 0x30,
-+ 0xcc, 0x00, 0xc0, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x07, 0x04, 0x18, 0x6f, 0x02, 0x02, 0x0c, 0x30,
-+ 0x01, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0xc0, 0x40, 0x30, 0xec, 0x20, 0x20, 0x20, 0xc0,
-+ 0x00, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x7f, 0x02, 0x3f,
-+ 0x04, 0x04, 0x0f, 0x08, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xf8,
-+ 0x40, 0x40, 0x80, 0xe0, 0x10, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x54, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x46, 0x43, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x10, 0x50, 0x94, 0x0c, 0xec, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x55, 0x55, 0x56, 0x54, 0x57,
-+ 0x54, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x28, 0x20, 0xfc,
-+ 0x20, 0x20, 0x10, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x54, 0x57, 0x54, 0x54, 0x54,
-+ 0x57, 0x7c, 0x45, 0x41, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x90, 0x98, 0xe4, 0x90, 0x90, 0x90,
-+ 0xfc, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x54, 0x54, 0x54, 0x54, 0x55,
-+ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x21, 0x02, 0x04, 0x1f,
-+ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x40, 0xf0,
-+ 0x0c, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x54, 0x54, 0x57, 0x54, 0x54,
-+ 0x57, 0x55, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x20, 0x06, 0x38, 0x08, 0x7f,
-+ 0x08, 0x0e, 0x78, 0x08, 0x09, 0x18, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x08, 0x50, 0x48, 0x40, 0xfc,
-+ 0x48, 0x48, 0x30, 0x74, 0x8c, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x55, 0x55, 0x55, 0x56, 0x56,
-+ 0x54, 0x54, 0x7c, 0x45, 0x42, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x50, 0x50, 0xe8, 0x44,
-+ 0x44, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x57, 0x55, 0x7c, 0x44, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x56, 0x54, 0x55, 0x55, 0x55,
-+ 0x55, 0x7d, 0x45, 0x41, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x01, 0x0f, 0x08, 0x0f, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xe0, 0x20, 0xe0, 0xe0,
-+ 0x00, 0xfc, 0xf8, 0x88, 0x48, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x56, 0x54, 0x54, 0x54, 0x55,
-+ 0x57, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00,
-+ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0xa0, 0x10,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x00, 0x3f, 0x09, 0x7f, 0x09,
-+ 0x09, 0x3f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x46, 0x43, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x00, 0x3f, 0x24, 0x22, 0x3f,
-+ 0x21, 0x29, 0x29, 0x2f, 0x28, 0x20, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x48, 0x88, 0xf8,
-+ 0x08, 0x28, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x01, 0x3f, 0x08, 0x04, 0x7f,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x20, 0x40, 0xfc,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x22, 0x04, 0x1f, 0x61,
-+ 0x1f, 0x09, 0x05, 0x05, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x88, 0x40, 0xf0, 0x0c,
-+ 0xf0, 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x7e, 0x47, 0x45, 0x09, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0x04, 0xfc, 0x20, 0xa8, 0xa8,
-+ 0xf8, 0x20, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x20, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1e, 0x10, 0x1c, 0x70, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x08, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x24, 0x04, 0x0f, 0x08,
-+ 0x1f, 0x28, 0x4f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x48, 0x80, 0xf8, 0x80,
-+ 0xf0, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x56, 0x55, 0x54, 0x57,
-+ 0x54, 0x55, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x04, 0xf8, 0x48, 0xfc,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x57, 0x54, 0x54, 0x55, 0x56,
-+ 0x54, 0x55, 0x7e, 0x44, 0x41, 0x0e, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0xa4, 0x5c, 0x40,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x22, 0x04, 0x1f, 0x60,
-+ 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x88, 0x40, 0xf0, 0x0c,
-+ 0xf0, 0x90, 0xf0, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x55, 0x57, 0x54, 0x57, 0x56,
-+ 0x56, 0x57, 0x7e, 0x46, 0x42, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x01, 0x21, 0x21, 0x3f, 0x24, 0x24, 0x7f, 0x24,
-+ 0x25, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x00, 0x08, 0x08, 0xf8, 0x48, 0x40, 0x7c, 0xa8,
-+ 0x30, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x01, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x88, 0x00, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x54,
-+ 0x57, 0x56, 0x7e, 0x47, 0x42, 0x02, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x40,
-+ 0xf8, 0x68, 0x58, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7d, 0x46, 0x42, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0x28, 0xf8, 0x00, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x02, 0x1f, 0x11, 0x1f, 0x11,
-+ 0x1f, 0x12, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0xb0, 0xa8, 0xfc, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x04, 0x7f, 0x01, 0x1f, 0x01,
-+ 0x7f, 0x08, 0x0f, 0x11, 0x3f, 0x40, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x00,
-+ 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x54, 0x57, 0x56, 0x56, 0x57,
-+ 0x55, 0x56, 0x7d, 0x46, 0x40, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x40, 0x40, 0xf8,
-+ 0x98, 0xe8, 0x98, 0xe8, 0x88, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x56, 0x56, 0x56, 0x56, 0x57,
-+ 0x57, 0x57, 0x7f, 0x46, 0x43, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x08, 0x7f, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x2a, 0x3e, 0x09, 0x7f, 0x0a, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x08, 0x30, 0xc0, 0x80, 0xfc,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x57, 0x54, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7c, 0x47, 0x40, 0x00, 0x00, 0x00,
-+ 0x40, 0xf8, 0x20, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x57, 0x55, 0x57, 0x55, 0x55,
-+ 0x56, 0x7f, 0x44, 0x40, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x54, 0x55, 0x56, 0x55, 0x55,
-+ 0x55, 0x7d, 0x45, 0x40, 0x03, 0x00, 0x00, 0x00,
-+ 0xe0, 0x68, 0x50, 0x94, 0xf8, 0x08, 0xf4, 0x10,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x10, 0x13, 0x54, 0x55, 0x54, 0x57, 0x54,
-+ 0x57, 0x57, 0x7d, 0x47, 0x41, 0x03, 0x00, 0x00,
-+ 0x08, 0x90, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8,
-+ 0x24, 0xfc, 0xa8, 0x14, 0x2c, 0xc4, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x54, 0x55, 0x57, 0x54, 0x57,
-+ 0x56, 0x7f, 0x45, 0x41, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xb8,
-+ 0xa8, 0xb8, 0x10, 0x90, 0xa8, 0x44, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x08, 0x2b, 0x17, 0x18, 0x2b,
-+ 0x4b, 0x18, 0x2b, 0x4a, 0x0b, 0x32, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x18, 0x94, 0xd4, 0x7c, 0x90,
-+ 0x90, 0x10, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x00, 0x3c, 0x27, 0x28, 0x33,
-+ 0x29, 0x25, 0x25, 0x3b, 0x20, 0x27, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x40, 0xf8, 0x90, 0x60, 0x9c,
-+ 0xf0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x24, 0x38, 0x22, 0x1e, 0x21,
-+ 0x3e, 0x48, 0x7e, 0x08, 0x15, 0x62, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x50, 0x20, 0xfc,
-+ 0x28, 0xa0, 0xb8, 0xa0, 0x60, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x7f, 0x44, 0x41, 0x02, 0x00, 0x00,
-+ 0x40, 0xd8, 0x68, 0x48, 0xf8, 0x28, 0x68, 0xf8,
-+ 0x68, 0x68, 0xfc, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x54, 0x55, 0x55, 0x55, 0x57,
-+ 0x54, 0x57, 0x7d, 0x45, 0x40, 0x03, 0x00, 0x00,
-+ 0x70, 0xa0, 0xf8, 0x88, 0xf8, 0xb0, 0xe4, 0x5c,
-+ 0xe0, 0xf0, 0x50, 0xf4, 0xac, 0x1c, 0x00, 0x00,
-+ 0x01, 0x21, 0x3f, 0x0c, 0x39, 0x7f, 0x1d, 0x2b,
-+ 0x49, 0x7e, 0x14, 0x3c, 0x0d, 0x32, 0x00, 0x00,
-+ 0x00, 0x08, 0xf8, 0x40, 0xf0, 0x50, 0xf0, 0x50,
-+ 0xf0, 0xd0, 0xe8, 0xfc, 0x44, 0x3c, 0x00, 0x00,
-+ 0x21, 0x3f, 0x24, 0x3b, 0x1e, 0x5e, 0x52, 0x5e,
-+ 0x5e, 0x52, 0x5e, 0x3e, 0x14, 0x63, 0x00, 0x00,
-+ 0x08, 0xf8, 0x00, 0xfc, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x84, 0x00, 0x00,
-+ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7c, 0x3b, 0x56,
-+ 0x13, 0x01, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0x7c, 0xb8, 0xd4,
-+ 0x90, 0x00, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x21, 0x3f, 0x1e, 0x12, 0x1e, 0x3f, 0x2f, 0x24,
-+ 0x3f, 0x29, 0x2f, 0x2f, 0x3f, 0x41, 0x00, 0x00,
-+ 0x08, 0xf8, 0xf0, 0x90, 0xf0, 0xfc, 0x20, 0x20,
-+ 0xfc, 0x48, 0xb0, 0x90, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x11, 0x11, 0x22, 0x44,
-+ 0x22, 0x11, 0x11, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x88, 0x10, 0x10, 0x20, 0x40,
-+ 0x20, 0x10, 0x10, 0x88, 0x88, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x09, 0x09, 0x09, 0x09, 0x0d,
-+ 0x13, 0x13, 0x21, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x20, 0x20, 0x20, 0x20, 0x60,
-+ 0x50, 0x88, 0x08, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x20, 0x20, 0x3f, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10,
-+ 0x00, 0x00, 0x04, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x14,
-+ 0x17, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x00, 0xf0, 0x90, 0x90,
-+ 0xf0, 0x10, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x10, 0x1e, 0x71, 0x01,
-+ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x64, 0x1c, 0x04,
-+ 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x00, 0x7f, 0x00, 0x0f, 0x00, 0x3f,
-+ 0x21, 0x5f, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xfc, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x08, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x56, 0x54, 0x57,
-+ 0x54, 0x58, 0x50, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x06, 0x19,
-+ 0x7f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01,
-+ 0x3f, 0x21, 0x21, 0x21, 0x21, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00,
-+ 0x0a, 0x0a, 0x7f, 0x0a, 0x0b, 0x10, 0x3f, 0x21,
-+ 0x5f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xa0, 0xa8, 0x18, 0xfc, 0x08,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x55, 0x57, 0x55, 0x55,
-+ 0x55, 0x55, 0x59, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x59, 0x12, 0x13, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x50, 0x58,
-+ 0xe8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x54, 0x55, 0x55, 0x55,
-+ 0x54, 0x55, 0x59, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x55, 0x59, 0x10, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x55, 0x55, 0x55, 0x55,
-+ 0x54, 0x57, 0x58, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x57, 0x56, 0x57, 0x57,
-+ 0x57, 0x56, 0x5b, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0x58, 0xf8, 0x48, 0xd8, 0x58,
-+ 0xe8, 0x78, 0xb8, 0x58, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x57, 0x56,
-+ 0x57, 0x55, 0x58, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0xa8,
-+ 0xf8, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7d, 0x55, 0x57, 0x54, 0x57,
-+ 0x56, 0x57, 0x5a, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xe8, 0x68, 0xa0, 0xfc, 0x20, 0xe8,
-+ 0x68, 0xd8, 0x50, 0xd4, 0x2c, 0x44, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x55, 0x55, 0x55, 0x55,
-+ 0x55, 0x54, 0x5b, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0xa0, 0xfc, 0xf0, 0x50, 0xf0, 0x50,
-+ 0xf0, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x2a, 0x49, 0x7f, 0x5d, 0x55, 0x5d, 0x41,
-+ 0x3f, 0x21, 0x21, 0x21, 0x21, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x88, 0x50, 0x30, 0xcc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00,
-+ 0x08, 0x3e, 0x09, 0x7e, 0x08, 0x3e, 0x0f, 0x71,
-+ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x90, 0x50, 0x10, 0x30, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x04, 0x7f,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x01, 0x01, 0x1a, 0x06, 0x01, 0x00,
-+ 0x00, 0x01, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0x00, 0x10, 0x10, 0x20, 0x20, 0xc0,
-+ 0x80, 0x20, 0x10, 0x78, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x16, 0x16, 0x1a, 0x12,
-+ 0x11, 0x17, 0x10, 0x21, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xfc, 0x68, 0xec, 0xec, 0xa0,
-+ 0x10, 0x20, 0xd0, 0x08, 0xfc, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x11, 0x1f, 0x10, 0x17,
-+ 0x10, 0x10, 0x1f, 0x20, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0x40, 0xf8, 0x80, 0xf0,
-+ 0x80, 0x80, 0xfc, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x13, 0x22, 0x24, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0x88, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0x28, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x1f, 0x12, 0x13,
-+ 0x16, 0x16, 0x1a, 0x32, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x78, 0xc8, 0x48, 0x78,
-+ 0xc8, 0xf8, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x13, 0x13, 0x13,
-+ 0x12, 0x13, 0x11, 0x27, 0x20, 0x4f, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xfc, 0x80, 0xf0, 0xf0, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0x20, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x17, 0x15, 0x17, 0x15,
-+ 0x17, 0x14, 0x15, 0x26, 0x24, 0x43, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x78, 0x50, 0x50, 0x7c,
-+ 0x50, 0x10, 0x30, 0x34, 0xd4, 0x8c, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x12, 0x17, 0x15, 0x17, 0x15,
-+ 0x17, 0x14, 0x15, 0x26, 0x24, 0x43, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x70, 0x50, 0x54, 0x8c,
-+ 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x8c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x11, 0x16, 0x11, 0x16,
-+ 0x13, 0x1c, 0x13, 0x21, 0x20, 0x47, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0x98, 0xe8, 0x98, 0xe8,
-+ 0x70, 0xdc, 0x60, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x13, 0x1f, 0x10, 0x17,
-+ 0x14, 0x17, 0x24, 0x27, 0x43, 0x0c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xf8, 0xe0, 0xfc, 0x80, 0xf0,
-+ 0x90, 0xf0, 0x90, 0xf0, 0x30, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x15, 0x15, 0x1f, 0x15, 0x17, 0x15,
-+ 0x17, 0x15, 0x3f, 0x25, 0x44, 0x08, 0x00, 0x00,
-+ 0x80, 0xfc, 0x08, 0x70, 0xc0, 0x40, 0x7c, 0x50,
-+ 0x50, 0x50, 0xd0, 0x50, 0x90, 0x90, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x17, 0x10, 0x17,
-+ 0x14, 0x17, 0x14, 0x23, 0x23, 0x4c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x08, 0xc8, 0x08, 0xfc, 0x08, 0xc8,
-+ 0xa8, 0xa8, 0x88, 0x08, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x14, 0x17, 0x14, 0x17, 0x17,
-+ 0x1f, 0x12, 0x14, 0x3b, 0x20, 0x5f, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0xf0,
-+ 0xfc, 0x28, 0xb8, 0xe0, 0x80, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x19, 0x16, 0x17, 0x19,
-+ 0x17, 0x14, 0x1f, 0x21, 0x21, 0x46, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xd4, 0x24, 0x18, 0x7c, 0x50,
-+ 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x13, 0x16, 0x1a, 0x1f,
-+ 0x12, 0x12, 0x17, 0x25, 0x24, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc,
-+ 0xa8, 0xa8, 0xfc, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x29, 0x32, 0x2f, 0x2a,
-+ 0x2f, 0x2a, 0x2f, 0x28, 0x28, 0x51, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0x78, 0x28, 0x28, 0xd8, 0xb0,
-+ 0xb0, 0xfc, 0xd0, 0xfc, 0x90, 0x90, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x17, 0x15, 0x15, 0x15,
-+ 0x17, 0x10, 0x13, 0x3f, 0x26, 0x58, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf8, 0xf0, 0xd0, 0x50, 0xd0,
-+ 0xf0, 0xe0, 0x80, 0xfc, 0xb0, 0x8c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x15, 0x15,
-+ 0x15, 0x15, 0x25, 0x2b, 0x4a, 0x17, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf0, 0xfc, 0xe8, 0x78, 0xf0, 0x50,
-+ 0xf0, 0x50, 0xf0, 0xf8, 0xa8, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x35, 0x2a, 0x2f, 0x29, 0x2f,
-+ 0x20, 0x2f, 0x2a, 0x2f, 0x28, 0x47, 0x00, 0x00,
-+ 0x80, 0xfc, 0xa8, 0x28, 0xbc, 0x68, 0x68, 0xbc,
-+ 0x28, 0xbc, 0xa8, 0xa8, 0x7c, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x3f, 0x29, 0x2f, 0x29, 0x2f, 0x29,
-+ 0x3f, 0x3f, 0x25, 0x2f, 0x25, 0x4f, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xfc, 0xb4, 0xfc,
-+ 0x00, 0xfc, 0x28, 0xd4, 0xcc, 0x38, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x3f, 0x2a, 0x2b, 0x2f, 0x2b,
-+ 0x2e, 0x2a, 0x2f, 0x3a, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xfc, 0x54, 0xfc,
-+ 0x20, 0x58, 0xd4, 0xc4, 0x48, 0x38, 0x00, 0x00,
-+ 0x00, 0x3c, 0x04, 0x08, 0x08, 0x10, 0x3c, 0x04,
-+ 0x24, 0x28, 0x18, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x78, 0x08, 0x10, 0x13, 0x22, 0x7a, 0x0b,
-+ 0x4a, 0x32, 0x13, 0x2a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x7f, 0x04, 0x04,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x04,
-+ 0x04, 0x7f, 0x04, 0x08, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x20, 0x10, 0xf8, 0x48,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x24, 0x24, 0x3c, 0x07, 0x7c, 0x24, 0x25, 0x44,
-+ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x03, 0x07, 0x7f, 0x2a, 0x1c, 0x7e, 0x1d,
-+ 0x2a, 0x49, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xfc, 0x28, 0xd0, 0x28, 0xfc,
-+ 0xa8, 0x24, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x03, 0x07, 0x7f, 0x2a, 0x1c, 0x7f, 0x1c,
-+ 0x2a, 0x48, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xfc, 0x50, 0x88, 0xfc, 0x48,
-+ 0x48, 0x98, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x07, 0x78, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x10, 0x10, 0x0c, 0xf0, 0x80, 0x80, 0x40,
-+ 0x40, 0x20, 0x24, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x34, 0x0d, 0x1a, 0x6a, 0x09, 0x7e,
-+ 0x18, 0x1c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x18, 0x14, 0x14, 0xfc, 0x10, 0x10, 0xf0, 0x50,
-+ 0x50, 0x54, 0x4c, 0x6c, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x10, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8,
-+ 0x08, 0x08, 0x10, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x12, 0x3a, 0x06, 0x19, 0x6f,
-+ 0x00, 0x0f, 0x08, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x09, 0x79, 0x49, 0x41, 0x41,
-+ 0x79, 0x49, 0x09, 0x0f, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x7b, 0x0a, 0x0a, 0x7a, 0x4b, 0x42, 0x7a,
-+ 0x4a, 0x0b, 0x0a, 0x0c, 0x14, 0x69, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8,
-+ 0xa8, 0xb8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x0b, 0x7a, 0x4b, 0x40, 0x7f,
-+ 0x48, 0x0b, 0x0a, 0x0b, 0x0a, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0xfc,
-+ 0x08, 0xc8, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x7b, 0x0a, 0x0b, 0x78, 0x4b, 0x42, 0x7b,
-+ 0x4a, 0x0b, 0x08, 0x0f, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x0e, 0x7b, 0x4a, 0x43, 0x7a,
-+ 0x4b, 0x0a, 0x0b, 0x0a, 0x0b, 0x32, 0x00, 0x00,
-+ 0x00, 0xfc, 0x58, 0x44, 0xf8, 0xd8, 0xf8, 0xd8,
-+ 0x68, 0xd8, 0xf8, 0xd8, 0x68, 0x58, 0x00, 0x00,
-+ 0x13, 0x6f, 0x2b, 0x17, 0x7f, 0x3a, 0x57, 0x1f,
-+ 0x00, 0x0f, 0x08, 0x1f, 0x10, 0x00, 0x00, 0x00,
-+ 0x90, 0xe8, 0xa8, 0x94, 0xfc, 0xb8, 0xd4, 0xe0,
-+ 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x12, 0x12, 0x24, 0x4f, 0x00,
-+ 0x0f, 0x08, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x50, 0x48, 0xc4, 0xe4, 0x20,
-+ 0xe0, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x07, 0x04, 0x04, 0x04, 0x04,
-+ 0x0f, 0x08, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20,
-+ 0xe0, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x03, 0x04, 0x0f, 0x00, 0x7f, 0x01, 0x07,
-+ 0x79, 0x06, 0x39, 0x06, 0x38, 0x03, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0x80, 0xfc, 0x00, 0x48,
-+ 0xd0, 0xe0, 0xa0, 0x90, 0x8c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x08, 0x3e, 0x08, 0x0e, 0x78,
-+ 0x1f, 0x00, 0x7f, 0x00, 0x1f, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x20,
-+ 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x07, 0x0f, 0x7f, 0x00, 0x3f, 0x2f, 0x49,
-+ 0x0f, 0x09, 0x0f, 0x7f, 0x0d, 0x31, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xfc, 0x00, 0xfc, 0xe8, 0x20,
-+ 0xe0, 0x20, 0xe0, 0xfc, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x01,
-+ 0x02, 0x04, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, 0x90, 0x10,
-+ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3e, 0x22,
-+ 0x3e, 0x22, 0x12, 0x14, 0x1e, 0x70, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x14, 0x24,
-+ 0x48, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x00, 0x01,
-+ 0x03, 0x05, 0x09, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, 0x80, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x17, 0x24, 0x08, 0x08, 0x18,
-+ 0x28, 0x48, 0x08, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x12, 0x22, 0x2a, 0x4b, 0x14, 0x14, 0x38,
-+ 0x53, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x11, 0x15, 0x25, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x13, 0x14, 0x24, 0x4b, 0x0a, 0x1a,
-+ 0x2b, 0x4a, 0x08, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa0,
-+ 0xfc, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x22, 0x4a, 0x0a, 0x12, 0x12, 0x32,
-+ 0x52, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x11, 0x15, 0x25, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x09, 0x0e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4,
-+ 0x44, 0x48, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x22, 0x4a, 0x0c, 0x12, 0x12, 0x30,
-+ 0x53, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x48, 0x90, 0x48, 0x48, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x09, 0x11, 0x15, 0x26, 0x4b, 0x0d, 0x19,
-+ 0x29, 0x49, 0x09, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x11, 0x11, 0x21, 0x4a, 0x0a, 0x14, 0x10, 0x32,
-+ 0x52, 0x12, 0x12, 0x15, 0x14, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xa8, 0xa4, 0x44, 0x40, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x22, 0x4a, 0x0a, 0x12, 0x17, 0x30,
-+ 0x52, 0x12, 0x12, 0x13, 0x14, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x4f, 0x08, 0x10, 0x17, 0x30,
-+ 0x50, 0x1f, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xb8, 0xa0,
-+ 0xa0, 0xbc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x27, 0x49, 0x09, 0x13, 0x12, 0x34,
-+ 0x50, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x50, 0x58, 0xe4, 0x44,
-+ 0xe0, 0xd0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x11, 0x15, 0x25, 0x49, 0x09, 0x18,
-+ 0x2f, 0x48, 0x0b, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x21, 0x4e, 0x09, 0x11, 0x17, 0x31,
-+ 0x52, 0x17, 0x10, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0x60, 0x40, 0x80, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x12, 0x27, 0x4c, 0x0f, 0x14, 0x17, 0x32,
-+ 0x5f, 0x12, 0x13, 0x12, 0x14, 0x19, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0xa0, 0xfc, 0xc8, 0xa8, 0x28,
-+ 0xb0, 0x10, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x18, 0x37, 0x34, 0x31, 0x50,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90,
-+ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x19, 0x36, 0x34, 0x30, 0x57,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x19, 0x35, 0x35, 0x37, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x13, 0x3a, 0x36, 0x34, 0x50,
-+ 0x10, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x44, 0x48, 0x60, 0x60,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x04, 0x1a,
-+ 0x62, 0x0b, 0x0a, 0x12, 0x22, 0x06, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30,
-+ 0x0c, 0x20, 0x90, 0x48, 0x48, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x27, 0x24, 0x27, 0x27, 0x24,
-+ 0x27, 0x3f, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0x10,
-+ 0xf0, 0xfc, 0x00, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x01, 0x04, 0x08, 0x10, 0x6f, 0x02, 0x04, 0x18,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0xc0, 0x40, 0x20, 0x10, 0xec, 0x20, 0x20, 0xc0,
-+ 0x00, 0x90, 0x88, 0x04, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x18, 0x34, 0x34, 0x31, 0x57, 0x10,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x90, 0x88, 0x1c, 0xe4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1b, 0x35, 0x35, 0x32, 0x56,
-+ 0x1a, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0x20, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x3b, 0x34, 0x34, 0x50, 0x13,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x3b, 0x36, 0x34, 0x53, 0x12,
-+ 0x12, 0x12, 0x13, 0x12, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48,
-+ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x36, 0x37, 0x32, 0x52, 0x12,
-+ 0x12, 0x12, 0x14, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x88,
-+ 0x90, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x21, 0x41, 0x01,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xf0, 0x00,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x12, 0x2e, 0x45, 0x08, 0x01,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0x48, 0x88, 0xc8, 0x30,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x18, 0x34, 0x37, 0x32, 0x52,
-+ 0x13, 0x12, 0x10, 0x10, 0x11, 0x12, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa0, 0xa0,
-+ 0xfc, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x19, 0x35, 0x36, 0x30, 0x57,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1b, 0x36, 0x36, 0x32, 0x57,
-+ 0x10, 0x10, 0x10, 0x11, 0x12, 0x1c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x40, 0xc0, 0xa0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x19, 0x34, 0x34, 0x33, 0x50,
-+ 0x11, 0x11, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0xc0, 0x48, 0x68, 0xf0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x08, 0x0b, 0x10, 0x10, 0x37, 0x50, 0x10, 0x13,
-+ 0x11, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x19, 0x35, 0x36, 0x30, 0x50,
-+ 0x11, 0x17, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0xa0, 0x60, 0x60, 0x90,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x17, 0x10, 0x30, 0x51, 0x12, 0x14,
-+ 0x11, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50, 0x48, 0x44,
-+ 0x40, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x1b, 0x34, 0x36, 0x39, 0x54,
-+ 0x15, 0x16, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x48, 0x48, 0xa8, 0xa8,
-+ 0x68, 0x28, 0xe8, 0x28, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x18, 0x34, 0x35, 0x32, 0x52,
-+ 0x1f, 0x12, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x10,
-+ 0xfc, 0x94, 0x94, 0xa4, 0xa4, 0xcc, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x13, 0x12, 0x12, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x90, 0x50, 0x50,
-+ 0x10, 0xa0, 0xa0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x12, 0x19, 0x35, 0x34, 0x37, 0x50,
-+ 0x10, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x02, 0x04, 0x18, 0x61, 0x06,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x50, 0xa0, 0x10, 0x0c,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x18, 0x34, 0x37, 0x30, 0x50,
-+ 0x17, 0x11, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x18, 0x37, 0x36, 0x32, 0x52,
-+ 0x12, 0x12, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x80, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x19, 0x36, 0x37, 0x32, 0x53,
-+ 0x12, 0x13, 0x12, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xc8,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x18, 0x34, 0x37, 0x30, 0x50,
-+ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1a, 0x37, 0x36, 0x32, 0x52,
-+ 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x01, 0x7f,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0x00, 0xfc,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1a, 0x37, 0x34, 0x33, 0x52,
-+ 0x13, 0x12, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x30, 0x53,
-+ 0x10, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51,
-+ 0x11, 0x17, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1a, 0x36, 0x37, 0x32, 0x52,
-+ 0x12, 0x13, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0xe8,
-+ 0xd8, 0x58, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x10, 0x3b, 0x36, 0x36, 0x53,
-+ 0x12, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xc8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x1a, 0x34, 0x37, 0x32, 0x53,
-+ 0x12, 0x13, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1b, 0x34, 0x34, 0x31, 0x52,
-+ 0x10, 0x11, 0x12, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x50, 0x88, 0xfc, 0xa4, 0xa0, 0x24, 0x9c,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x14, 0x37, 0x32, 0x35, 0x50,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xf0, 0x20,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x1a, 0x37, 0x36, 0x32, 0x53,
-+ 0x12, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0xe0, 0xd0, 0x54, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x34, 0x37, 0x32, 0x52,
-+ 0x13, 0x12, 0x12, 0x12, 0x12, 0x11, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, 0x48, 0x48,
-+ 0xf8, 0x08, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x19, 0x35, 0x37, 0x31, 0x53,
-+ 0x13, 0x15, 0x19, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x48, 0xa8, 0x28, 0x28, 0x28, 0xe8, 0x28, 0xa8,
-+ 0x68, 0x68, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x19, 0x34, 0x34, 0x31, 0x56,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0x40, 0xb0, 0x0c,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1e, 0x10, 0x1e, 0x02, 0x7f,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x80, 0xfc,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x13, 0x18, 0x17, 0x34, 0x31, 0x36, 0x51,
-+ 0x10, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xf0,
-+ 0x20, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x01, 0x3f, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf8, 0x00, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x1b, 0x34, 0x37, 0x31, 0x53,
-+ 0x15, 0x11, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xf8, 0xa0, 0xfc, 0x10, 0xf8,
-+ 0x14, 0x10, 0x60, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x19, 0x35, 0x35, 0x32, 0x54,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x98, 0x64, 0x44,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x18, 0x34, 0x35, 0x31, 0x52,
-+ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xe0, 0xa0, 0xa4, 0x24, 0x1c, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x34, 0x37, 0x30, 0x53,
-+ 0x10, 0x17, 0x11, 0x13, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x80, 0xfc, 0x10, 0xe0, 0xd0, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1a, 0x36, 0x36, 0x32, 0x52,
-+ 0x12, 0x12, 0x12, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xe8, 0x48, 0xe8, 0x48,
-+ 0xe8, 0xa8, 0xa8, 0xe8, 0x88, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x57,
-+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x48, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x13, 0x1a, 0x36, 0x37, 0x32, 0x53,
-+ 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0xf8,
-+ 0x88, 0x88, 0xe8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x50,
-+ 0x13, 0x12, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0x50, 0xb0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x34, 0x35, 0x30, 0x57,
-+ 0x10, 0x10, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x80, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x12, 0x11, 0x24, 0x4a, 0x08, 0x11, 0x32, 0x52,
-+ 0x10, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0x78, 0x00, 0x00, 0xfc, 0x10, 0x10, 0x10,
-+ 0x30, 0x00, 0x88, 0x84, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x19, 0x35, 0x35, 0x31, 0x50,
-+ 0x13, 0x10, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x0f, 0x02, 0x7f, 0x0f, 0x14, 0x67,
-+ 0x04, 0x07, 0x21, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0xe0, 0x80, 0xfc, 0xe0, 0x50, 0xcc,
-+ 0x40, 0xc0, 0x08, 0x84, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x19, 0x35, 0x37, 0x31, 0x51,
-+ 0x13, 0x13, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x50, 0x90, 0x10, 0x14, 0x34, 0xf8, 0x50, 0x90,
-+ 0x50, 0x50, 0x28, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x12, 0x3b, 0x34, 0x37, 0x50,
-+ 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x80,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x31, 0x51,
-+ 0x13, 0x14, 0x13, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40, 0x40,
-+ 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x1a, 0x37, 0x34, 0x31, 0x51,
-+ 0x11, 0x11, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x1a, 0x35, 0x35, 0x32, 0x50,
-+ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x68, 0x58, 0xb0,
-+ 0x80, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x1c, 0x3f, 0x3c, 0x37, 0x54,
-+ 0x14, 0x17, 0x13, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0x28, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x1a, 0x35, 0x35, 0x30, 0x53,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x28, 0x28, 0x50, 0x50, 0x28, 0x68, 0x80, 0xf8,
-+ 0x28, 0xc8, 0x68, 0x98, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x29, 0x3f, 0x24, 0x3b,
-+ 0x61, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x48, 0x30, 0x30, 0xc8,
-+ 0x04, 0x10, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x1d, 0x35, 0x35, 0x31, 0x51,
-+ 0x10, 0x11, 0x16, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x80, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x06, 0x38, 0x3e, 0x22, 0x3f, 0x3e, 0x3e, 0x23,
-+ 0x4c, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x94, 0xfc, 0x90, 0x60, 0xb0,
-+ 0x0c, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x1a, 0x35, 0x34, 0x37, 0x54,
-+ 0x12, 0x12, 0x17, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xf0, 0xb0,
-+ 0xb0, 0xd0, 0xf4, 0xcc, 0xac, 0x84, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x22, 0x5e,
-+ 0x00, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x70, 0x50, 0x54, 0x8c, 0xf8, 0x48, 0x30, 0xd8,
-+ 0x04, 0x10, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x1a, 0x37, 0x36, 0x33, 0x52,
-+ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xd0, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x1f, 0x34, 0x37, 0x30, 0x57,
-+ 0x10, 0x13, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x48, 0xb0, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc,
-+ 0xa8, 0xf8, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x17, 0x17, 0x14, 0x27, 0x24,
-+ 0x59, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0xf0, 0x10, 0xf0, 0xb0,
-+ 0x8c, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x18, 0x34, 0x36, 0x32, 0x52,
-+ 0x12, 0x12, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00,
-+ 0x10, 0x64, 0x84, 0xf8, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0xfc, 0x98, 0x04, 0x00, 0x00,
-+ 0x22, 0x14, 0x7f, 0x08, 0x2a, 0x2a, 0x3e, 0x09,
-+ 0x13, 0x20, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x08,
-+ 0x18, 0x80, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x19, 0x36, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x12, 0x13, 0x15, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x32, 0x53,
-+ 0x12, 0x10, 0x17, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x13, 0x08, 0x4b, 0x22, 0x23, 0x0a, 0x13, 0x22,
-+ 0x22, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0xf0, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0x58, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x36, 0x33, 0x50,
-+ 0x17, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x1f, 0x34, 0x37, 0x35, 0x57,
-+ 0x14, 0x13, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x24, 0xa8, 0x98, 0x90, 0x68, 0x84,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x32, 0x53,
-+ 0x12, 0x13, 0x14, 0x17, 0x18, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x48, 0x68, 0xd0, 0x50, 0x4c, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x19, 0x35, 0x36, 0x37, 0x50,
-+ 0x11, 0x17, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0x90, 0xf8, 0x10, 0x18, 0xa4, 0xfc, 0xa0,
-+ 0x50, 0xac, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x7f,
-+ 0x08, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x08, 0xf0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10,
-+ 0x10, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x11, 0x3f, 0x3d, 0x37, 0x55,
-+ 0x17, 0x11, 0x17, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x04, 0x38, 0xe0, 0x20, 0xe0, 0x7c, 0xe8, 0x68,
-+ 0xe8, 0x28, 0xe8, 0x48, 0x48, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x22, 0x4c, 0x0a, 0x12, 0x33, 0x54,
-+ 0x18, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x10, 0x10, 0xa8, 0x44, 0x40, 0x78, 0x40, 0xc0,
-+ 0x3c, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x1a, 0x35, 0x36, 0x34, 0x51,
-+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x13, 0x15, 0x39, 0x35, 0x35, 0x51,
-+ 0x17, 0x11, 0x13, 0x14, 0x11, 0x12, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0x00, 0xf8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x19, 0x34, 0x37, 0x33, 0x50,
-+ 0x16, 0x12, 0x12, 0x12, 0x15, 0x18, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x88, 0x88, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x32, 0x53,
-+ 0x10, 0x17, 0x10, 0x17, 0x11, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xfc, 0x10, 0xfc, 0x10, 0xb0, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x17, 0x39, 0x3f, 0x35, 0x57,
-+ 0x15, 0x17, 0x11, 0x17, 0x11, 0x17, 0x00, 0x00,
-+ 0x50, 0x90, 0x10, 0xd0, 0x3c, 0xd4, 0x54, 0xd4,
-+ 0x54, 0xd4, 0x14, 0xe4, 0xe4, 0x4c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x25, 0x3f, 0x27, 0x3a,
-+ 0x23, 0x3f, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0xf8, 0x00, 0xa8, 0x24, 0xe4, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x30, 0x53,
-+ 0x10, 0x17, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf8,
-+ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x1d, 0x3c, 0x3f, 0x34, 0x55,
-+ 0x17, 0x16, 0x17, 0x1a, 0x1b, 0x12, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x58, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1f, 0x0f, 0x08, 0x0f, 0x04, 0x7f,
-+ 0x0f, 0x08, 0x0f, 0x25, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0xe0, 0x20, 0xe0, 0x40, 0xfc,
-+ 0xe0, 0x20, 0xe0, 0x08, 0xa4, 0xe4, 0x00, 0x00,
-+ 0x08, 0x7f, 0x2a, 0x2a, 0x5d, 0x1c, 0x2a, 0x4b,
-+ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0x30, 0x48, 0x84,
-+ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00,
-+ 0x02, 0x3c, 0x09, 0x7e, 0x08, 0x3e, 0x22, 0x3e,
-+ 0x20, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x88, 0x88, 0xfc, 0x88, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x88, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x30, 0x57,
-+ 0x11, 0x11, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0x50, 0x48, 0xc8, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x1b, 0x37, 0x35, 0x31, 0x51,
-+ 0x11, 0x11, 0x10, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xf8,
-+ 0x20, 0xfc, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x34, 0x37, 0x32, 0x53,
-+ 0x12, 0x13, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x0b, 0x10, 0x17, 0x31, 0x53, 0x1d, 0x11,
-+ 0x11, 0x11, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa0, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x58, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x23, 0x12, 0x13, 0x03, 0x0a, 0x13, 0x25,
-+ 0x24, 0x09, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x54,
-+ 0xac, 0x18, 0x80, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x32, 0x53,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x48, 0xf8,
-+ 0xa8, 0x48, 0x68, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x12, 0x12, 0x13, 0x1e, 0x36, 0x37, 0x32, 0x52,
-+ 0x12, 0x17, 0x10, 0x15, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8, 0xa8,
-+ 0xa8, 0xfc, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x34, 0x37, 0x30, 0x57,
-+ 0x11, 0x17, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x1a, 0x37, 0x36, 0x33, 0x52,
-+ 0x13, 0x10, 0x17, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8,
-+ 0x58, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x15, 0x1e, 0x14, 0x14,
-+ 0x14, 0x14, 0x20, 0x2a, 0x4a, 0x11, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0xfc, 0x90, 0xf8, 0x90, 0xf8,
-+ 0x90, 0xfc, 0x80, 0x48, 0x14, 0xf4, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x30, 0x57,
-+ 0x17, 0x11, 0x1f, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0x5c,
-+ 0x5c, 0xc8, 0x28, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x12, 0x13, 0x14, 0x19, 0x37, 0x3d, 0x3d, 0x57,
-+ 0x15, 0x15, 0x17, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x00, 0xbc, 0x94, 0x14, 0xe4, 0x4c, 0x68, 0xe8,
-+ 0x7c, 0x48, 0xfc, 0x48, 0x48, 0xc8, 0x00, 0x00,
-+ 0x14, 0x7f, 0x1c, 0x3f, 0x2a, 0x3e, 0x7f, 0x3e,
-+ 0x0f, 0x71, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x88, 0x88,
-+ 0x30, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x19, 0x34, 0x37, 0x32, 0x53,
-+ 0x10, 0x17, 0x10, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x1b, 0x36, 0x36, 0x33, 0x53,
-+ 0x12, 0x12, 0x14, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0xa8, 0x98, 0x70, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x17, 0x7a, 0x11, 0x3f, 0x3b, 0x35, 0x59,
-+ 0x13, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x10, 0xd0, 0xbc, 0x10, 0xf8, 0xb8, 0x34, 0x54,
-+ 0x10, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x11, 0x11, 0x1b, 0x36,
-+ 0x37, 0x52, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x10, 0x20, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x36, 0x32, 0x53,
-+ 0x13, 0x10, 0x17, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8,
-+ 0xf0, 0x40, 0xfc, 0xf0, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x1b, 0x36, 0x37, 0x33, 0x50,
-+ 0x17, 0x10, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40,
-+ 0xfc, 0x80, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x11, 0x0f, 0x49, 0x21, 0x27, 0x0f, 0x15, 0x15,
-+ 0x26, 0x24, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf0, 0xfc, 0x74, 0x54, 0x54,
-+ 0xec, 0x44, 0x00, 0x88, 0x24, 0xe4, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x11, 0x3f, 0x3d, 0x35, 0x57,
-+ 0x13, 0x13, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0x3c, 0xd4, 0x14, 0xec, 0x7c, 0x64, 0xfc,
-+ 0x24, 0xbc, 0x64, 0x7c, 0x28, 0x44, 0x00, 0x00,
-+ 0x12, 0x12, 0x13, 0x1d, 0x38, 0x3f, 0x32, 0x56,
-+ 0x12, 0x16, 0x12, 0x16, 0x13, 0x1e, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xe8, 0x68, 0x20, 0xfc, 0xa0, 0xe8,
-+ 0xa8, 0xd0, 0xd4, 0xac, 0xcc, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x19, 0x3f, 0x32, 0x36, 0x52,
-+ 0x16, 0x12, 0x16, 0x12, 0x13, 0x1e, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0x28, 0xfc, 0xa0, 0xe8, 0xa8,
-+ 0xd8, 0x90, 0xd4, 0xac, 0xcc, 0x04, 0x00, 0x00,
-+ 0x10, 0x7c, 0x13, 0x38, 0x7c, 0x45, 0x7e, 0x00,
-+ 0x3c, 0x24, 0x3d, 0x25, 0x1e, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa8, 0x30, 0x30, 0x48, 0xc4,
-+ 0x20, 0x20, 0x48, 0x44, 0x54, 0x30, 0x00, 0x00,
-+ 0x11, 0x17, 0x11, 0x1b, 0x36, 0x37, 0x31, 0x51,
-+ 0x13, 0x15, 0x19, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xb8, 0xa8, 0xb8, 0x20, 0xfc,
-+ 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x1b, 0x37, 0x36, 0x33, 0x51,
-+ 0x11, 0x13, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xb8, 0xa8, 0xb8, 0x20,
-+ 0xfc, 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x19, 0x35, 0x37, 0x30, 0x57,
-+ 0x12, 0x13, 0x13, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xf0, 0xf0, 0xf8, 0x10, 0xfc,
-+ 0xa8, 0xb8, 0xb8, 0xac, 0xf8, 0x88, 0x00, 0x00,
-+ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7c, 0x3b, 0x56,
-+ 0x13, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0x7c, 0xb8, 0xd4,
-+ 0x90, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x03, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x08, 0x08, 0xfc, 0x80, 0x88, 0x88,
-+ 0x50, 0x60, 0xe4, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x12, 0x14, 0x18, 0x61, 0x06, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x18, 0x14,
-+ 0x12, 0x12, 0x10, 0x20, 0x21, 0x46, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10,
-+ 0x1f, 0x10, 0x10, 0x20, 0x21, 0x46, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48,
-+ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x1e, 0x01,
-+ 0x7f, 0x00, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00,
-+ 0x20, 0x10, 0xfc, 0x90, 0x64, 0xb4, 0x2c, 0x10,
-+ 0xfc, 0x90, 0x60, 0xe4, 0x1c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x1f, 0x10, 0x1f, 0x1f, 0x10,
-+ 0x1f, 0x01, 0x7f, 0x00, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0x10,
-+ 0xf0, 0x08, 0xfc, 0xb0, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x0f, 0x08, 0x0f, 0x0f, 0x08,
-+ 0x3f, 0x21, 0x5f, 0x00, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0x20,
-+ 0xfc, 0x28, 0xf8, 0xa0, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12,
-+ 0x7f, 0x2a, 0x2b, 0x31, 0x20, 0x1f, 0x00, 0x00,
-+ 0x28, 0x24, 0xa4, 0x3c, 0xe0, 0x28, 0x28, 0x28,
-+ 0xb0, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x7f, 0x12, 0x1f, 0x32,
-+ 0x3f, 0x52, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0xa8, 0x28,
-+ 0xb8, 0x10, 0x94, 0x2c, 0xcc, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x19, 0x2a, 0x5d, 0x2a, 0x4c, 0x16,
-+ 0x69, 0x34, 0x09, 0x32, 0x0c, 0x70, 0x00, 0x00,
-+ 0x30, 0xa8, 0xa8, 0xa0, 0xbc, 0xe0, 0xa8, 0x28,
-+ 0x10, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x77, 0x55, 0x77, 0x00, 0x3e, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0x20, 0x3c, 0xe0, 0x28, 0x28,
-+ 0x18, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x04, 0x07, 0x3f, 0x2b, 0x3d, 0x27, 0x3f, 0x20,
-+ 0x2f, 0x29, 0x2f, 0x2a, 0x27, 0x5c, 0x00, 0x00,
-+ 0x30, 0x28, 0xa8, 0x20, 0x3c, 0xe0, 0x28, 0x28,
-+ 0x18, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x19, 0x2a, 0x5d, 0x2a, 0x5a, 0x1f,
-+ 0x24, 0x7f, 0x24, 0x3f, 0x24, 0x3f, 0x00, 0x00,
-+ 0x30, 0xa8, 0xa8, 0xa0, 0xbc, 0xe0, 0xa8, 0xa8,
-+ 0x18, 0x10, 0x14, 0x2c, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f,
-+ 0x19, 0x19, 0x2f, 0x29, 0x49, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-+ 0x80, 0x80, 0x84, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7c, 0x10, 0x10, 0x13, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x1f, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x11, 0x11, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x48, 0x28, 0x30, 0x90, 0xa0,
-+ 0x60, 0x40, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x12, 0x11, 0x14,
-+ 0x18, 0x70, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-+ 0xd0, 0xb0, 0x1c, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x12, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88,
-+ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7c, 0x10, 0x10, 0x13, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x17,
-+ 0x18, 0x70, 0x11, 0x12, 0x14, 0x38, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90, 0xfc,
-+ 0x80, 0xc0, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x13, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x13, 0x30, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc8, 0x48, 0x50,
-+ 0x30, 0x20, 0x54, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x17, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x60, 0x40, 0xfc, 0x48, 0x50,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x12, 0x12, 0x14, 0x38, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x50, 0x50, 0x48, 0x48, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x11, 0x10, 0x14,
-+ 0x18, 0x70, 0x13, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x10, 0x90, 0x90,
-+ 0x1c, 0x70, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x15,
-+ 0x19, 0x71, 0x12, 0x12, 0x14, 0x39, 0x00, 0x00,
-+ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x90, 0x90, 0xd0,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x14,
-+ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x60, 0x50,
-+ 0x48, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x15,
-+ 0x1a, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x60, 0x60, 0xd0, 0x48,
-+ 0x44, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x16, 0x12, 0x12, 0x15,
-+ 0x19, 0x72, 0x12, 0x1f, 0x10, 0x30, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x78, 0xa8, 0xa8, 0x28,
-+ 0x28, 0xa8, 0xa8, 0xc8, 0x48, 0x98, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x11, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x12, 0x13, 0x16,
-+ 0x1a, 0x73, 0x12, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x06, 0x19, 0x60,
-+ 0x0f, 0x1f, 0x01, 0x3f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0xe0,
-+ 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x70, 0x0f, 0x08, 0x0f, 0x01,
-+ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x80, 0xe0, 0x1c, 0xe0, 0x20, 0xe0, 0xc0,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0xa0,
-+ 0x60, 0x30, 0x28, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7f, 0x12, 0x12, 0x13, 0x16,
-+ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0xa4, 0x9c, 0x70, 0xf8,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x14,
-+ 0x1b, 0x72, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x02, 0x05, 0x38, 0x08, 0x08, 0x3e, 0x08, 0x08,
-+ 0x0e, 0x79, 0x08, 0x10, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x12, 0x11, 0x10, 0x14,
-+ 0x1b, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x50, 0x48, 0x48, 0xf0, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x13, 0x12, 0x16, 0x16,
-+ 0x1a, 0x72, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x13, 0x12, 0x16,
-+ 0x1b, 0x70, 0x10, 0x10, 0x11, 0x32, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa0, 0xa0,
-+ 0xfc, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x17, 0x16,
-+ 0x1a, 0x72, 0x12, 0x13, 0x12, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x48, 0x28, 0x28, 0xfc, 0x08,
-+ 0x88, 0x48, 0x48, 0xfc, 0x08, 0x30, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7e, 0x17, 0x12, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x78, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xc8, 0x98, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x12, 0x11, 0x15,
-+ 0x18, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x10, 0x10, 0x10, 0x10,
-+ 0xa0, 0xa0, 0xa0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x13, 0x14, 0x10, 0x14,
-+ 0x19, 0x77, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xa0, 0x40, 0xa0,
-+ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x11, 0x14,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x17, 0x11, 0x11, 0x15,
-+ 0x19, 0x77, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20,
-+ 0x20, 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x12, 0x14, 0x15,
-+ 0x19, 0x72, 0x14, 0x10, 0x10, 0x31, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x98, 0x98, 0xa8, 0xc8, 0x98,
-+ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x14,
-+ 0x1b, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x0a, 0x0d, 0x3a, 0x0c, 0x3a, 0x0c, 0x39, 0x00,
-+ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x30, 0xe0,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7c, 0x13, 0x10, 0x10, 0x15,
-+ 0x19, 0x72, 0x14, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x20, 0x40, 0xc8, 0xe8, 0xf0, 0x50,
-+ 0x50, 0x48, 0x44, 0xc0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x11, 0x11, 0x12, 0x16,
-+ 0x1a, 0x73, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x08, 0x10,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x10, 0x13, 0x16,
-+ 0x1b, 0x72, 0x13, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x11, 0x11, 0x11, 0x16,
-+ 0x1a, 0x70, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x58, 0xe4,
-+ 0x44, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x10, 0x17,
-+ 0x18, 0x70, 0x17, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x13, 0x10,
-+ 0x1f, 0x71, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0x58, 0x48, 0x58, 0x48, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x10,
-+ 0x18, 0x73, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x11, 0x11, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x12, 0x12, 0x33, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x20, 0x20, 0x38, 0x48, 0x68,
-+ 0x98, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x13, 0x14,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x90, 0x10, 0xfc, 0x08,
-+ 0xe8, 0x28, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x11, 0x16, 0x7c, 0x14, 0x17, 0x15, 0x15,
-+ 0x1d, 0x75, 0x15, 0x19, 0x19, 0x31, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x40, 0x7c, 0xa4, 0xa8, 0x20,
-+ 0x20, 0x30, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x7e, 0x13, 0x12, 0x12, 0x17,
-+ 0x1a, 0x72, 0x13, 0x16, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0xc8, 0x88, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x11, 0x11, 0x17, 0x11,
-+ 0x19, 0x73, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50,
-+ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x28, 0x3e, 0x48, 0x7f, 0x08, 0x3e, 0x2a, 0x2e,
-+ 0x07, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x08, 0xd8,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7e, 0x15, 0x11, 0x12, 0x17,
-+ 0x18, 0x72, 0x12, 0x13, 0x12, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xe8, 0x88, 0xe8,
-+ 0x88, 0xa8, 0xa8, 0xe8, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x12, 0x13, 0x16,
-+ 0x1b, 0x70, 0x17, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x17, 0x10, 0x16,
-+ 0x1a, 0x72, 0x12, 0x13, 0x14, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xfc, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x13, 0x16,
-+ 0x1a, 0x72, 0x13, 0x12, 0x10, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x30, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x12, 0x1e,
-+ 0x73, 0x12, 0x14, 0x14, 0x1b, 0x3c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40,
-+ 0xfc, 0x40, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x10, 0x17, 0x10, 0x14,
-+ 0x1b, 0x70, 0x13, 0x10, 0x13, 0x30, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0xe0, 0x20, 0xfc, 0x40, 0xe8,
-+ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x16, 0x10,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x20, 0x20, 0xe4, 0x5c, 0x80,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x13, 0x12, 0x16,
-+ 0x1b, 0x70, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x58, 0xd8, 0xe8,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x11, 0x10, 0x12, 0x7d, 0x11, 0x12, 0x11, 0x14,
-+ 0x18, 0x73, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0xd0, 0x54, 0xa4, 0xa8, 0x10, 0x08, 0xf4, 0x40,
-+ 0x40, 0xf8, 0xa0, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x7e, 0x13, 0x10, 0x17, 0x10,
-+ 0x1b, 0x72, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x17, 0x10, 0x13, 0x14,
-+ 0x18, 0x77, 0x10, 0x11, 0x16, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0xa0, 0x40, 0xfc, 0xc8, 0x50, 0xc0,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x11, 0x12,
-+ 0x1a, 0x73, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x58,
-+ 0x48, 0x58, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x7e, 0x13, 0x12, 0x12, 0x17,
-+ 0x1a, 0x72, 0x13, 0x16, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0xa4, 0xa4, 0xa4, 0xb8, 0xa0, 0xa0, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x17, 0x14,
-+ 0x1e, 0x75, 0x16, 0x15, 0x14, 0x35, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x11, 0x11, 0x17, 0x12,
-+ 0x1f, 0x30, 0x52, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x80, 0xf0, 0x90, 0x60, 0x40, 0x80, 0xf8, 0x40,
-+ 0xfc, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x5f, 0x0f, 0x02, 0x3f, 0x08,
-+ 0x17, 0x6f, 0x01, 0x3f, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0xf0, 0xe0, 0x80, 0xf8, 0xe0,
-+ 0x10, 0xec, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x10, 0x17,
-+ 0x1a, 0x77, 0x12, 0x17, 0x12, 0x32, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xfc, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x10, 0x13, 0x7c, 0x11, 0x10, 0x17, 0x11,
-+ 0x19, 0x72, 0x14, 0x18, 0x17, 0x30, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x13, 0x12, 0x12, 0x17,
-+ 0x19, 0x72, 0x15, 0x12, 0x14, 0x33, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xb8, 0x20, 0x20, 0xb8,
-+ 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x12, 0x15, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x13, 0x15, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7d, 0x11, 0x17, 0x10, 0x17,
-+ 0x1a, 0x73, 0x13, 0x12, 0x17, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0xf0, 0xf0, 0xfc, 0x10, 0xfc,
-+ 0xa8, 0xb8, 0xb8, 0xac, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xfc, 0x00, 0xfc, 0xa4, 0xe4, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x10, 0x17,
-+ 0x19, 0x72, 0x15, 0x12, 0x14, 0x31, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x12, 0x17,
-+ 0x1a, 0x70, 0x17, 0x11, 0x10, 0x30, 0x00, 0x00,
-+ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x7f, 0x12, 0x10, 0x11, 0x15,
-+ 0x1b, 0x75, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x98, 0xa0, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x3e, 0x08, 0x7f, 0x14, 0x7f, 0x3f, 0x08,
-+ 0x07, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd4, 0xb4, 0x0c, 0x60,
-+ 0x80, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x12, 0x17,
-+ 0x18, 0x73, 0x10, 0x17, 0x11, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x50, 0xf8, 0x10, 0xfc, 0x10, 0xb0, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7a, 0x15, 0x12, 0x14, 0x11,
-+ 0x1e, 0x71, 0x10, 0x11, 0x10, 0x33, 0x00, 0x00,
-+ 0x00, 0xf8, 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x20,
-+ 0x50, 0xac, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x11, 0x12, 0x13, 0x7f, 0x12, 0x17, 0x15, 0x1d,
-+ 0x71, 0x11, 0x11, 0x11, 0x11, 0x36, 0x00, 0x00,
-+ 0xb8, 0x68, 0xb8, 0x78, 0xa8, 0xfc, 0xf8, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0xa4, 0x3c, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x17,
-+ 0x1a, 0x77, 0x13, 0x12, 0x14, 0x38, 0x00, 0x00,
-+ 0x84, 0x88, 0xb0, 0xe0, 0xa0, 0xbc, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0x28, 0xc8, 0x48, 0x88, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x11, 0x17, 0x11, 0x11,
-+ 0x1e, 0x73, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xfc, 0x10, 0xfc,
-+ 0x00, 0xf8, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00,
-+ 0x11, 0x12, 0x11, 0x7d, 0x12, 0x17, 0x11, 0x17,
-+ 0x1c, 0x77, 0x15, 0x11, 0x11, 0x36, 0x00, 0x00,
-+ 0xd0, 0x54, 0xa4, 0x18, 0x08, 0x74, 0x50, 0x54,
-+ 0x8c, 0xf8, 0x48, 0x30, 0x28, 0xc4, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x17, 0x11, 0x15,
-+ 0x19, 0x71, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0x18, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x11, 0x15, 0x13, 0x79, 0x12, 0x14, 0x13, 0x12,
-+ 0x1c, 0x73, 0x10, 0x10, 0x11, 0x32, 0x00, 0x00,
-+ 0x10, 0x54, 0xb4, 0x18, 0xa8, 0x44, 0xfc, 0x48,
-+ 0x40, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13, 0x17,
-+ 0x1b, 0x74, 0x12, 0x12, 0x14, 0x30, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xd0, 0x54,
-+ 0xec, 0x44, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13, 0x16,
-+ 0x1b, 0x72, 0x13, 0x14, 0x15, 0x38, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x78, 0xc8, 0x38, 0xfc, 0x68,
-+ 0xb8, 0x70, 0xb8, 0x58, 0x94, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7f, 0x12, 0x12, 0x13, 0x17,
-+ 0x18, 0x77, 0x14, 0x15, 0x14, 0x34, 0x00, 0x00,
-+ 0x40, 0xa0, 0x58, 0xfc, 0xa8, 0x68, 0x98, 0xf8,
-+ 0x40, 0xfc, 0xa4, 0xf4, 0x14, 0x0c, 0x00, 0x00,
-+ 0x10, 0x17, 0x13, 0x7e, 0x12, 0x12, 0x13, 0x15,
-+ 0x19, 0x71, 0x11, 0x11, 0x17, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x10, 0x13, 0x10, 0x17,
-+ 0x19, 0x77, 0x10, 0x13, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x12, 0x12, 0x79, 0x14, 0x12, 0x13, 0x10,
-+ 0x1e, 0x72, 0x13, 0x12, 0x15, 0x38, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3e, 0x52, 0x1e,
-+ 0x07, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x12, 0x17, 0x13, 0x10,
-+ 0x1b, 0x72, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x16,
-+ 0x1b, 0x72, 0x13, 0x12, 0x12, 0x32, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x88, 0xe8,
-+ 0xa8, 0x48, 0xf8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x0a, 0x13, 0x1a, 0x13, 0x18, 0x12, 0x7f, 0x08,
-+ 0x17, 0x6f, 0x01, 0x3f, 0x01, 0x03, 0x00, 0x00,
-+ 0x30, 0x90, 0x30, 0x90, 0xb0, 0x90, 0xfc, 0xe0,
-+ 0x10, 0xec, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x06, 0x1b, 0x12, 0x1b, 0x12, 0x1a, 0x12, 0x7f,
-+ 0x09, 0x17, 0x61, 0x1f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xb0, 0x10, 0xb0, 0x90, 0xb0, 0x90, 0xfc,
-+ 0x20, 0xd0, 0x0c, 0xf0, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x2f, 0x21, 0x7e, 0x2a, 0x2a, 0x36, 0x22,
-+ 0x33, 0x62, 0x23, 0x22, 0x24, 0x68, 0x00, 0x00,
-+ 0x80, 0xfc, 0x48, 0xb8, 0xa8, 0xa8, 0xb4, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x11, 0x11, 0x11, 0x17,
-+ 0x1d, 0x70, 0x11, 0x10, 0x11, 0x37, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0xf8, 0x90, 0xf8, 0x40, 0xf0, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x11, 0x17, 0x14,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x90, 0x88, 0x1c, 0xe4, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x10, 0x17, 0x11, 0x14,
-+ 0x19, 0x77, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0xe8, 0x40,
-+ 0xf0, 0xfc, 0x88, 0xfc, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x14, 0x11, 0x17,
-+ 0x19, 0x71, 0x11, 0x11, 0x11, 0x36, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf8, 0x58, 0xe4, 0xf4, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x20, 0x2f, 0x2a, 0x7f, 0x2f, 0x2a, 0x2f, 0x2b,
-+ 0x32, 0x63, 0x23, 0x23, 0x21, 0x6e, 0x00, 0x00,
-+ 0x40, 0xfc, 0x80, 0x78, 0xfc, 0xb4, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x14, 0x17, 0x15, 0x79, 0x10, 0x17, 0x10, 0x17,
-+ 0x1c, 0x77, 0x14, 0x17, 0x14, 0x35, 0x00, 0x00,
-+ 0x20, 0xfc, 0x50, 0x18, 0xa0, 0xfc, 0x00, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x16,
-+ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x3b, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xfc, 0xf0, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x24, 0x27, 0x2b, 0x7f, 0x2b, 0x2d, 0x2f, 0x28,
-+ 0x3f, 0x62, 0x2f, 0x23, 0x24, 0x68, 0x00, 0x00,
-+ 0x80, 0xf8, 0x68, 0xe8, 0x70, 0xf0, 0xe8, 0x68,
-+ 0xe4, 0x24, 0xe4, 0x38, 0xa0, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x14, 0x1f, 0x10,
-+ 0x1f, 0x74, 0x17, 0x17, 0x14, 0x35, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x20, 0xa8, 0xf0, 0x64,
-+ 0x9c, 0xa0, 0xa8, 0xb0, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x10, 0x13, 0x7d, 0x1a, 0x36, 0x51, 0x13, 0x7f,
-+ 0x05, 0x1f, 0x6f, 0x3f, 0x01, 0x03, 0x00, 0x00,
-+ 0x90, 0x90, 0x7c, 0xb0, 0xd8, 0x94, 0x50, 0xfc,
-+ 0xc0, 0x30, 0xec, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x12, 0x12, 0x15, 0x7d, 0x12, 0x13, 0x15, 0x17,
-+ 0x18, 0x77, 0x10, 0x11, 0x16, 0x30, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xb4, 0xe8, 0xac, 0xb4, 0xfc,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x13, 0x7a, 0x13, 0x10, 0x13, 0x11,
-+ 0x18, 0x77, 0x10, 0x17, 0x11, 0x33, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0,
-+ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x12, 0x13, 0x11, 0x7f, 0x12, 0x17, 0x13, 0x12,
-+ 0x1b, 0x77, 0x15, 0x17, 0x15, 0x35, 0x00, 0x00,
-+ 0x48, 0xf8, 0x20, 0xf8, 0x40, 0xf0, 0xf0, 0x40,
-+ 0xf8, 0xf8, 0x58, 0xf8, 0x48, 0xd8, 0x00, 0x00,
-+ 0x11, 0x17, 0x11, 0x7f, 0x11, 0x12, 0x15, 0x1d,
-+ 0x71, 0x11, 0x11, 0x11, 0x11, 0x36, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0xb0, 0x48, 0xf4, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x25, 0x2f, 0x25, 0x7f, 0x2f, 0x2a, 0x2f, 0x22,
-+ 0x3f, 0x62, 0x2f, 0x23, 0x24, 0x68, 0x00, 0x00,
-+ 0x28, 0xa8, 0x28, 0x7c, 0xd0, 0xd0, 0xfc, 0x50,
-+ 0xd0, 0x7c, 0xd0, 0x50, 0xfc, 0x40, 0x00, 0x00,
-+ 0x13, 0x6f, 0x2b, 0x17, 0x7c, 0x3b, 0x56, 0x13,
-+ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,
-+ 0x90, 0xe8, 0xa8, 0x94, 0x7c, 0xb8, 0xd4, 0xe0,
-+ 0x80, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x13, 0x12, 0x13, 0x7f, 0x13, 0x11, 0x13, 0x16,
-+ 0x1a, 0x73, 0x13, 0x10, 0x10, 0x37, 0x00, 0x00,
-+ 0xb8, 0xa8, 0xb8, 0xb8, 0xb8, 0x20, 0xfc, 0xf0,
-+ 0xf0, 0xfc, 0xf0, 0xa0, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x04, 0x02,
-+ 0x02, 0x01, 0x00, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x20,
-+ 0x20, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x0f, 0x0c, 0x14, 0x22,
-+ 0x02, 0x01, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x10, 0x11, 0x1d, 0x26, 0x24,
-+ 0x04, 0x04, 0x04, 0x08, 0x08, 0x33, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x24, 0x25, 0x25, 0x26, 0x24, 0x24,
-+ 0x26, 0x3c, 0x64, 0x04, 0x05, 0x06, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0c, 0x14, 0x15, 0x35, 0x56, 0x14,
-+ 0x14, 0x14, 0x14, 0x14, 0x10, 0x13, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x54, 0x55, 0x55, 0x7e, 0x54,
-+ 0x54, 0x54, 0x7c, 0x44, 0x01, 0x06, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x14, 0x12, 0x26, 0x65, 0x14,
-+ 0x0c, 0x0c, 0x0a, 0x12, 0x20, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x90, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x7f,
-+ 0x08, 0x0e, 0x12, 0x12, 0x22, 0x4d, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50, 0x50,
-+ 0x60, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x2a, 0x3e,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x3e, 0x49, 0x08, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x1b, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0x40, 0xf8, 0x88, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x3e, 0x49, 0x0a, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x1b, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x2a, 0x29, 0x49, 0x08, 0x7f, 0x41, 0x5d,
-+ 0x55, 0x55, 0x5d, 0x55, 0x41, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xc8, 0xc8, 0x48, 0x48,
-+ 0x30, 0x30, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x2a, 0x29, 0x49, 0x08, 0x7f, 0x49, 0x6b,
-+ 0x6b, 0x6b, 0x6b, 0x49, 0x49, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xc8, 0xc8, 0x48, 0x48,
-+ 0x30, 0x30, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x00,
-+ 0x7f, 0x41, 0x5d, 0x55, 0x5d, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0x3c, 0x20, 0x20, 0xf8, 0x48, 0x48,
-+ 0x28, 0x30, 0x10, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x04, 0x3f, 0x25, 0x7f, 0x25, 0x3f, 0x3f, 0x25,
-+ 0x3f, 0x08, 0x7f, 0x12, 0x1e, 0x71, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x48, 0xc8, 0x48, 0x50,
-+ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x3f, 0x40, 0x77, 0x55,
-+ 0x77, 0x12, 0x12, 0x2d, 0x25, 0x49, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xc8, 0xc8, 0x28, 0x28,
-+ 0x30, 0x10, 0x30, 0x48, 0x88, 0x04, 0x00, 0x00,
-+ 0x49, 0x2a, 0x7f, 0x49, 0x5d, 0x6b, 0x4b, 0x00,
-+ 0x7f, 0x08, 0x1e, 0x72, 0x0c, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x7c, 0xc8, 0x30, 0x30, 0xcc, 0x00,
-+ 0xfc, 0x88, 0xb0, 0xc4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7f, 0x3a, 0x57,
-+ 0x12, 0x07, 0x3c, 0x03, 0x0e, 0x70, 0x00, 0x00,
-+ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0xfc, 0xb8, 0xd4,
-+ 0x10, 0xf8, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x1e, 0x24, 0x7e, 0x2a, 0x2a, 0x3e, 0x2a,
-+ 0x2a, 0x3e, 0x23, 0x22, 0x22, 0x46, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x50, 0x50,
-+ 0x1c, 0x70, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12,
-+ 0x7f, 0x2a, 0x2b, 0x33, 0x20, 0x1f, 0x00, 0x00,
-+ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x50, 0x50,
-+ 0x1c, 0x70, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x08, 0x10, 0x1e, 0x32,
-+ 0x32, 0x52, 0x13, 0x1f, 0x12, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x12, 0x5b, 0x6d, 0x52, 0x6d, 0x7f, 0x7f, 0x5b,
-+ 0x6d, 0x52, 0x6d, 0x7f, 0x7f, 0x40, 0x00, 0x00,
-+ 0x08, 0x70, 0x40, 0x40, 0x40, 0x7c, 0x50, 0x50,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x11, 0x12, 0x1c, 0x14,
-+ 0x14, 0x15, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0xa8, 0xa8,
-+ 0xa8, 0xfc, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x12, 0x13, 0x1c, 0x14,
-+ 0x14, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0x20, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x04, 0x02, 0x3f, 0x21, 0x41,
-+ 0x3f, 0x01, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x40, 0x80, 0xfc, 0x08, 0x00,
-+ 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x10, 0x1c, 0x15,
-+ 0x14, 0x14, 0x27, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0xe0, 0x40, 0x78, 0xc0,
-+ 0x40, 0x7c, 0xc0, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x11, 0x12, 0x1c, 0x14,
-+ 0x15, 0x14, 0x24, 0x24, 0x45, 0x18, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xa0, 0xa0, 0xf8, 0xa0,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x10, 0x1c, 0x17,
-+ 0x14, 0x15, 0x25, 0x25, 0x45, 0x1a, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0xfc, 0x50, 0x98, 0xe8,
-+ 0x10, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x10, 0x11, 0x1c, 0x14,
-+ 0x17, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x80, 0xfc, 0x18, 0xe8, 0xb0, 0xfc, 0x70, 0xa8,
-+ 0xfc, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7c, 0x13, 0x10, 0x1c, 0x17,
-+ 0x14, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x18, 0xe8, 0x28, 0xb0, 0xfc, 0x70, 0xa8, 0x24,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x21, 0x21, 0x21, 0x3f, 0x21,
-+ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x3f,
-+ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x7f,
-+ 0x01, 0x3f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x1f,
-+ 0x10, 0x10, 0x11, 0x21, 0x26, 0x58, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x80, 0x80, 0xc0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01, 0x7f,
-+ 0x04, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x40, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4b, 0x4a, 0x7a, 0x4a,
-+ 0x4a, 0x4a, 0x7a, 0x4c, 0x44, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x88,
-+ 0x90, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x00, 0x3c, 0x05, 0x05, 0x7e, 0x0e,
-+ 0x0d, 0x15, 0x14, 0x24, 0x44, 0x0c, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x48, 0x48,
-+ 0x78, 0x48, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x02, 0x3c,
-+ 0x22, 0x22, 0x2e, 0x72, 0x04, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x7f,
-+ 0x08, 0x0f, 0x12, 0x22, 0x04, 0x09, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01, 0x3f,
-+ 0x22, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xf8, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x7a, 0x49, 0x49, 0x48, 0x7f, 0x48,
-+ 0x48, 0x48, 0x79, 0x49, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x14, 0x3e, 0x02, 0x7f, 0x00,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x50, 0xf8, 0x08, 0xfc, 0x00,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x02, 0x12,
-+ 0x0a, 0x0a, 0x1c, 0x64, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x90, 0x90,
-+ 0xe0, 0xa0, 0x90, 0x94, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x01, 0x78, 0x4b, 0x48, 0x4f, 0x79, 0x4b,
-+ 0x4e, 0x4a, 0x7a, 0x4a, 0x02, 0x00, 0x00, 0x00,
-+ 0x08, 0xd0, 0x70, 0x88, 0x80, 0xfc, 0x40, 0xf8,
-+ 0x48, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x1f, 0x0f, 0x01, 0x3f,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x7f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0xe0, 0x00, 0xf8,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x48, 0x78, 0x4f,
-+ 0x48, 0x49, 0x79, 0x49, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x4a, 0x4c, 0x7f, 0x48,
-+ 0x4b, 0x4a, 0x7a, 0x4a, 0x03, 0x02, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x3f, 0x20,
-+ 0x2f, 0x20, 0x3f, 0x24, 0x26, 0x5c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x90, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x3f,
-+ 0x20, 0x3e, 0x24, 0x24, 0x38, 0x43, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x88, 0xfc,
-+ 0x80, 0x48, 0x50, 0x24, 0xd4, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x0e, 0x78, 0x09, 0x1a,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x10, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x4f, 0x49, 0x49, 0x7b, 0x4b,
-+ 0x4b, 0x4d, 0x7d, 0x49, 0x01, 0x01, 0x00, 0x00,
-+ 0x04, 0x08, 0x30, 0xe0, 0x20, 0xbc, 0x68, 0x68,
-+ 0x28, 0x28, 0x48, 0x48, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x02, 0x7e,
-+ 0x02, 0x3e, 0x02, 0x0e, 0x74, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xfc,
-+ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x0f, 0x3f, 0x21, 0x7f,
-+ 0x0f, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0x08, 0xf8,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x49, 0x48, 0x4b, 0x7a, 0x4a,
-+ 0x4a, 0x4f, 0x78, 0x48, 0x03, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x50, 0x40, 0xf8, 0x48, 0x48,
-+ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4f, 0x48, 0x4b, 0x7a, 0x4b,
-+ 0x4a, 0x4b, 0x78, 0x4f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4f, 0x48, 0x79, 0x49,
-+ 0x49, 0x49, 0x79, 0x48, 0x07, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x78, 0x4f,
-+ 0x49, 0x4b, 0x7c, 0x49, 0x02, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4d, 0x49, 0x49, 0x79, 0x49,
-+ 0x48, 0x4f, 0x78, 0x48, 0x01, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x3e, 0x22, 0x3f, 0x3e, 0x26, 0x39, 0x1f,
-+ 0x04, 0x07, 0x04, 0x07, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0xfc, 0x30, 0xd4, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x23, 0x13, 0x11, 0x01, 0x73,
-+ 0x15, 0x11, 0x11, 0x19, 0x27, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0xf8, 0x10, 0xfc, 0x20,
-+ 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x4f, 0x49, 0x4f, 0x79, 0x49,
-+ 0x4e, 0x4b, 0x78, 0x40, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc,
-+ 0x00, 0xf8, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x48, 0x4b, 0x4a, 0x7b, 0x48,
-+ 0x4f, 0x48, 0x79, 0x4f, 0x01, 0x03, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x3c, 0xc8, 0xe8, 0xa8, 0x28,
-+ 0xf0, 0x90, 0x98, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x08, 0x2a, 0x49, 0x7f, 0x49, 0x5d, 0x6b, 0x49,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x48, 0x30, 0x30, 0xc8,
-+ 0xf4, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x07, 0x79, 0x4b, 0x49, 0x49, 0x7f, 0x49,
-+ 0x49, 0x4b, 0x78, 0x4f, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf8, 0x50, 0x50, 0xfc, 0x50,
-+ 0x50, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x07, 0x7a, 0x49, 0x4b, 0x4d, 0x79, 0x49,
-+ 0x49, 0x49, 0x79, 0x42, 0x04, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xb0, 0x18, 0xf4, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x49, 0x4b, 0x4a, 0x7d, 0x49,
-+ 0x4a, 0x48, 0x7b, 0x48, 0x00, 0x07, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x10, 0xfc, 0x68, 0x98, 0xf4,
-+ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x07, 0x79, 0x4b, 0x4a, 0x4c, 0x7f, 0x48,
-+ 0x4f, 0x48, 0x7b, 0x48, 0x07, 0x00, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xfc, 0xe8, 0x00, 0xfc, 0xc8,
-+ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x7a, 0x4a,
-+ 0x4a, 0x4a, 0x7c, 0x44, 0x08, 0x03, 0x00, 0x00,
-+ 0x40, 0xfc, 0x90, 0xfc, 0xf0, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4b, 0x4a, 0x4a, 0x7a, 0x4a,
-+ 0x4a, 0x4a, 0x7a, 0x44, 0x07, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x00, 0x20, 0x20, 0x20,
-+ 0x40, 0x50, 0x88, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x78, 0x49, 0x4f, 0x4b, 0x79, 0x4f,
-+ 0x4b, 0x4d, 0x7f, 0x47, 0x04, 0x01, 0x00, 0x00,
-+ 0x90, 0xf8, 0x40, 0xf0, 0xfc, 0xa8, 0x24, 0xfc,
-+ 0xa8, 0x28, 0xd0, 0xb4, 0xcc, 0x84, 0x00, 0x00,
-+ 0x1f, 0x17, 0x1f, 0x01, 0x7f, 0x1e, 0x12, 0x1e,
-+ 0x3f, 0x0f, 0x7f, 0x0c, 0x77, 0x1c, 0x00, 0x00,
-+ 0xf0, 0xd0, 0xf0, 0x00, 0xfc, 0xf0, 0x90, 0xf0,
-+ 0xf8, 0xe0, 0xfc, 0x90, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20,
-+ 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x90, 0x10,
-+ 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x11, 0x00, 0x00, 0x03, 0x3c, 0x00, 0x00, 0x00,
-+ 0x20, 0x10, 0xf0, 0x10, 0xd0, 0x10, 0x10, 0xf8,
-+ 0x10, 0xa0, 0xc0, 0x44, 0x34, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x12, 0x07,
-+ 0x19, 0x71, 0x12, 0x14, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x08, 0x88, 0x48, 0x08, 0xe8, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x24,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x20, 0x24, 0x24, 0x24, 0x24, 0xfc, 0x24, 0x20,
-+ 0x24, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4f, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x48, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x07, 0x07, 0x04, 0x7f, 0x08,
-+ 0x17, 0x64, 0x07, 0x07, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xc0, 0xc0, 0x40, 0xfc, 0x20,
-+ 0xd0, 0x48, 0xc4, 0xc0, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x25, 0x25, 0x3e, 0x27, 0x24,
-+ 0x3f, 0x24, 0x27, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0xfc, 0x08, 0xf0, 0xfc, 0xc8,
-+ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x01, 0x39, 0x2f, 0x2a, 0x2a, 0x3f, 0x28, 0x2b,
-+ 0x3a, 0x2b, 0x2a, 0x2b, 0x2a, 0x5a, 0x00, 0x00,
-+ 0x20, 0x3c, 0xe0, 0xb8, 0x88, 0xf8, 0x20, 0xb8,
-+ 0xa0, 0xb8, 0xa0, 0xbc, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x4f, 0x15, 0x7f,
-+ 0x14, 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0xe8, 0x70, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x18, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x09, 0x09, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x01, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0xfc, 0x00, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x11,
-+ 0x11, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0x10,
-+ 0x60, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x04, 0x08, 0x10, 0x21, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x78, 0x08, 0x08, 0x70, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x09, 0x08, 0x08, 0x7e, 0x08, 0x0c, 0x1a, 0x1a,
-+ 0x18, 0x28, 0x29, 0x49, 0x0a, 0x0c, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xe0,
-+ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-+ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1d, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc0, 0x40, 0x20,
-+ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7e, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x13, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x78, 0x48, 0x48,
-+ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x7f, 0x03, 0x05, 0x09, 0x11,
-+ 0x61, 0x01, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x20, 0x10,
-+ 0x0c, 0x00, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x04,
-+ 0x08, 0x11, 0x61, 0x02, 0x04, 0x1f, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x40,
-+ 0x30, 0x08, 0x04, 0x20, 0x70, 0x88, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1f, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x60, 0x20, 0xfc, 0x24, 0x28,
-+ 0x30, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa4, 0x2c, 0x28,
-+ 0x70, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7d, 0x11, 0x1a, 0x37, 0x34,
-+ 0x30, 0x50, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0xe0, 0xa0, 0xa0, 0x10, 0x10, 0x08, 0xf4, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x0a, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x18, 0x37, 0x34,
-+ 0x30, 0x50, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x50, 0x90, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x14, 0x14, 0x19, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x80, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28,
-+ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1a, 0x1b,
-+ 0x2a, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xf8,
-+ 0x48, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x19, 0x15, 0x15,
-+ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0x90,
-+ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x00, 0x90, 0x88, 0x04, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x37, 0x36,
-+ 0x32, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x70, 0x90, 0x20, 0x20,
-+ 0x50, 0x88, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x11, 0x3a, 0x35, 0x35,
-+ 0x51, 0x51, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0xe8, 0x28,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1e, 0x1a, 0x1a,
-+ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x78, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x4a, 0x0a, 0x0c, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x60,
-+ 0x30, 0x28, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x0f, 0x09, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x10, 0x10, 0xd4, 0x0c, 0xec, 0x04, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x7e, 0x12, 0x1b, 0x36, 0x34,
-+ 0x32, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x40,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x12, 0x1b, 0x35, 0x35,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x19, 0x37, 0x35,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0x88, 0xfc, 0x08, 0x48, 0x28,
-+ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x12, 0x39, 0x35,
-+ 0x34, 0x50, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x10, 0x10, 0x10, 0x10,
-+ 0x90, 0xa0, 0xa0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x0a, 0x0b, 0x0c, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x50, 0x70, 0x58, 0xf8, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x13, 0x3a, 0x37,
-+ 0x35, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0xa0, 0x10, 0xe8, 0xfc, 0x58, 0xe8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x09, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x1a, 0x34, 0x35,
-+ 0x31, 0x52, 0x54, 0x10, 0x10, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x98, 0x98, 0xa8, 0xc8, 0x98,
-+ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x22, 0x54, 0x0f, 0x18, 0x61,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x90, 0x90, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x19, 0x36, 0x37,
-+ 0x30, 0x50, 0x51, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x90, 0xf8, 0x04, 0xf8,
-+ 0x80, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1f, 0x1a, 0x1a,
-+ 0x29, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x40, 0xfc,
-+ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x1f, 0x34, 0x34,
-+ 0x33, 0x50, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x50, 0x88, 0xfc, 0x44, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x11, 0x1f, 0x34, 0x35,
-+ 0x31, 0x51, 0x51, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x18, 0xe4, 0x00, 0x50,
-+ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x18, 0x35, 0x35,
-+ 0x33, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x80, 0xf8, 0x08, 0x10,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1b,
-+ 0x2a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x50, 0x88, 0xfc, 0xa4, 0xa0, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x12, 0x7d, 0x11, 0x18, 0x37, 0x34,
-+ 0x30, 0x53, 0x50, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xf8, 0x08,
-+ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x1a, 0x36, 0x37,
-+ 0x32, 0x52, 0x53, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x34, 0x37,
-+ 0x30, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x0f, 0x0f, 0x08, 0x0f, 0x0f, 0x08, 0x0f,
-+ 0x09, 0x01, 0x7f, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xe0, 0xe0, 0x20, 0xe0, 0xf8, 0x00, 0xf0,
-+ 0x10, 0x60, 0xfc, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x12, 0x1c, 0x37, 0x34,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x29, 0x4a, 0x08, 0x09, 0x0e, 0x00, 0x00,
-+ 0x40, 0x50, 0x98, 0xe4, 0xa0, 0xa4, 0x5c, 0x40,
-+ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1a, 0x36, 0x36,
-+ 0x32, 0x52, 0x54, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xa8,
-+ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0d, 0x16, 0x14, 0x37, 0x54,
-+ 0x17, 0x14, 0x15, 0x16, 0x14, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0xa0, 0x60, 0xdc, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x7a, 0x17, 0x1a, 0x3a, 0x37,
-+ 0x32, 0x52, 0x54, 0x14, 0x18, 0x13, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0xa4, 0xa4, 0xa4, 0xb8, 0xa0, 0x20, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7d, 0x12, 0x1a, 0x37, 0x31,
-+ 0x35, 0x55, 0x52, 0x12, 0x15, 0x18, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x17, 0x11, 0x38, 0x35,
-+ 0x37, 0x50, 0x53, 0x12, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0,
-+ 0xfc, 0x08, 0xfc, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x35,
-+ 0x31, 0x57, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0xfc, 0x10, 0x10, 0x10,
-+ 0x10, 0xfc, 0x10, 0x08, 0x04, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x11, 0x1a, 0x35, 0x34,
-+ 0x30, 0x53, 0x50, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xc8, 0x24, 0x24, 0x00, 0xf8, 0x10,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x07,
-+ 0x04, 0x06, 0x05, 0x09, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0xc0,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x34, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x40, 0x80,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x2a, 0x4b, 0x08, 0x7f,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0xfc,
-+ 0x00, 0xc0, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x1b, 0x36, 0x36,
-+ 0x33, 0x52, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa0, 0xa0, 0xa0, 0xb8, 0x08, 0x08,
-+ 0xb8, 0xa8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x34,
-+ 0x30, 0x50, 0x53, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80,
-+ 0x9c, 0xe0, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x17, 0x10, 0x38, 0x37,
-+ 0x35, 0x51, 0x53, 0x15, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x90, 0x90, 0xf0,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x19, 0x34, 0x37,
-+ 0x30, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x10, 0x60, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x07, 0x04, 0x07, 0x04, 0x7f,
-+ 0x09, 0x1f, 0x63, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xc0, 0x40, 0xc0, 0x40, 0xfc,
-+ 0x20, 0xf0, 0x8c, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7e, 0x14, 0x12, 0x39, 0x37,
-+ 0x35, 0x51, 0x52, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x88, 0xa8, 0xa8, 0xc8, 0xf8,
-+ 0xc8, 0xa8, 0xa8, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x2a, 0x2a,
-+ 0x2e, 0x0c, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xb8, 0x30, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1a, 0x37, 0x36,
-+ 0x32, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x68, 0x58, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7f, 0x10, 0x1b, 0x34, 0x35,
-+ 0x36, 0x53, 0x50, 0x10, 0x11, 0x12, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xf8, 0x40, 0xfc, 0xa0, 0x50,
-+ 0x4c, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7c, 0x14, 0x1f, 0x3c, 0x35,
-+ 0x35, 0x55, 0x55, 0x15, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0x58,
-+ 0x58, 0x58, 0xf8, 0x18, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x18, 0x35, 0x36,
-+ 0x33, 0x50, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0xa4, 0x1c, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x0f, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x20,
-+ 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b,
-+ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x20, 0x10, 0xd4, 0x0c,
-+ 0xfc, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1a,
-+ 0x28, 0x2b, 0x48, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x34, 0xcc, 0x54,
-+ 0x7c, 0xc8, 0x30, 0x14, 0x6c, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x0a, 0x1c, 0x1a, 0x1b,
-+ 0x28, 0x28, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x10, 0x12, 0x13, 0x7e, 0x12, 0x1b, 0x34, 0x35,
-+ 0x32, 0x50, 0x51, 0x16, 0x10, 0x17, 0x00, 0x00,
-+ 0x20, 0x28, 0xc8, 0x68, 0x98, 0xf8, 0xa0, 0x24,
-+ 0x9c, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x11, 0x17, 0x39, 0x35,
-+ 0x37, 0x53, 0x55, 0x19, 0x11, 0x13, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x24, 0x24, 0xe8, 0x28, 0x18,
-+ 0x90, 0x50, 0x68, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1f, 0x34, 0x37,
-+ 0x30, 0x50, 0x51, 0x10, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x40, 0xfc,
-+ 0x90, 0x90, 0xe0, 0x30, 0xc8, 0x08, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x13, 0x1d, 0x31, 0x7f,
-+ 0x01, 0x1f, 0x13, 0x1d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0x60, 0x10, 0xfc,
-+ 0x00, 0xf0, 0x90, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x18, 0x37, 0x36,
-+ 0x31, 0x51, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x48,
-+ 0x68, 0x70, 0xd0, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x7f, 0x15, 0x19, 0x3f, 0x35,
-+ 0x35, 0x51, 0x52, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xe8, 0x28, 0x28, 0xe8, 0x28,
-+ 0x28, 0xa8, 0x68, 0x78, 0x28, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x1a, 0x37, 0x36,
-+ 0x33, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x01,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x39, 0x34,
-+ 0x34, 0x50, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf0, 0x20,
-+ 0x40, 0xa0, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x1a, 0x36, 0x36,
-+ 0x33, 0x52, 0x54, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x48, 0x48, 0x48, 0xfc, 0xc8,
-+ 0xa8, 0xa8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7f, 0x10, 0x1a, 0x36, 0x35,
-+ 0x31, 0x51, 0x51, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xfc, 0xa0, 0xa8, 0xa8, 0xa8,
-+ 0xb0, 0xb0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x1a, 0x37, 0x36,
-+ 0x32, 0x57, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xfc, 0xa0, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x7d, 0x12, 0x17, 0x39, 0x35,
-+ 0x37, 0x51, 0x51, 0x11, 0x17, 0x10, 0x00, 0x00,
-+ 0x08, 0xc8, 0x28, 0xa8, 0xa8, 0xe8, 0x68, 0x28,
-+ 0xe8, 0x28, 0x28, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x3b, 0x36,
-+ 0x36, 0x53, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x11, 0x19, 0x36, 0x36,
-+ 0x33, 0x52, 0x52, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x9c, 0xf4, 0x54, 0x64, 0x98,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1f, 0x1a,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x20, 0x24, 0xe8, 0x30, 0x20, 0xe4, 0x3c, 0x40,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x11, 0x19, 0x37, 0x36,
-+ 0x32, 0x52, 0x53, 0x12, 0x10, 0x11, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0xe8, 0x28, 0x38, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7d, 0x11, 0x17, 0x39, 0x35,
-+ 0x37, 0x53, 0x55, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x50, 0x90, 0x10, 0x14, 0x34, 0xf8, 0x58, 0x90,
-+ 0x50, 0x50, 0x28, 0x28, 0x44, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x1f, 0x35, 0x35,
-+ 0x31, 0x51, 0x51, 0x11, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x1c, 0xf0, 0x10, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x79, 0x17, 0x11, 0x39, 0x37,
-+ 0x35, 0x57, 0x50, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x24, 0xe4, 0x24, 0xc4, 0x18,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x34,
-+ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48,
-+ 0xe8, 0xf0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x1f, 0x34, 0x34,
-+ 0x31, 0x57, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x60, 0x90,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x19, 0x35, 0x35,
-+ 0x37, 0x52, 0x52, 0x13, 0x13, 0x12, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xfc, 0xa0, 0xa8, 0x18, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1b, 0x36, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x12, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x10, 0x1f, 0x34, 0x37,
-+ 0x30, 0x53, 0x50, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0xf8, 0x10, 0xf0, 0x20, 0xfc, 0xc8, 0x68,
-+ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x11, 0x17, 0x39, 0x35,
-+ 0x37, 0x53, 0x55, 0x19, 0x11, 0x13, 0x00, 0x00,
-+ 0x10, 0xd0, 0x90, 0x7c, 0x10, 0xd0, 0x78, 0xb8,
-+ 0x38, 0x54, 0x54, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x7e, 0x13, 0x1a, 0x36, 0x37,
-+ 0x32, 0x52, 0x53, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0xa4, 0xe4, 0xa4, 0xb8, 0xa0, 0xa0, 0x00, 0x00,
-+ 0x11, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x3f, 0x3c,
-+ 0x36, 0x55, 0x56, 0x15, 0x14, 0x15, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x38, 0x37,
-+ 0x34, 0x50, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0x48, 0x40, 0xfc,
-+ 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x1b, 0x36, 0x36,
-+ 0x33, 0x50, 0x51, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x58, 0xd8, 0xe8,
-+ 0xf8, 0xe0, 0x50, 0x4c, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x17, 0x18, 0x35, 0x37,
-+ 0x30, 0x53, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0xa0, 0x10, 0xe8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x19, 0x35, 0x34,
-+ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x70, 0x00, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1b, 0x37, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x68, 0x98, 0x08, 0xf8, 0x00,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2c, 0x49, 0x14, 0x22, 0x3f, 0x21,
-+ 0x5f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x20, 0xa4, 0xa8, 0x30, 0x48, 0x88, 0xfc, 0x08,
-+ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x1b, 0x36, 0x37,
-+ 0x31, 0x51, 0x51, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x50, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x12, 0x12, 0x7f, 0x10, 0x1f, 0x34, 0x35,
-+ 0x31, 0x51, 0x51, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7c, 0x11, 0x19, 0x35, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x0e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x1b, 0x36, 0x35,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x78, 0x48, 0xfc, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x10, 0x17, 0x7c, 0x13, 0x18, 0x37, 0x35,
-+ 0x31, 0x52, 0x54, 0x18, 0x17, 0x10, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x1f, 0x04, 0x7f,
-+ 0x09, 0x1f, 0x63, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf0, 0x40, 0xfc,
-+ 0x20, 0xf0, 0x8c, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x22, 0x14, 0x7f, 0x08, 0x2a, 0x2a, 0x3e, 0x09,
-+ 0x11, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x18,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x32, 0x53, 0x54, 0x14, 0x17, 0x14, 0x00, 0x00,
-+ 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xfc, 0x94, 0x94, 0xf4, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x34, 0x37,
-+ 0x31, 0x56, 0x51, 0x16, 0x10, 0x11, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x98, 0xe8, 0x98, 0xe8, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x3e, 0x32, 0x2b, 0x2f, 0x7a, 0x2a, 0x47,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0xf0, 0x90, 0x94, 0x0c, 0xf8, 0x90, 0x60, 0x9c,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x1a, 0x37, 0x36,
-+ 0x33, 0x52, 0x52, 0x13, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0x50, 0xdc, 0x50, 0xdc, 0x70,
-+ 0xdc, 0x50, 0x90, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x1a, 0x37, 0x34,
-+ 0x32, 0x52, 0x54, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x40,
-+ 0x48, 0x48, 0xd0, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x32, 0x50, 0x57, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x19, 0x35, 0x35,
-+ 0x30, 0x57, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1b, 0x36, 0x37,
-+ 0x30, 0x50, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0xf8,
-+ 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x15, 0x19, 0x36, 0x34,
-+ 0x31, 0x53, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x48, 0x48, 0xa0,
-+ 0x10, 0xf8, 0x14, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x37, 0x34,
-+ 0x33, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0xbc, 0x14, 0x94, 0x54, 0xe4, 0x2c, 0x40,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1f, 0x34, 0x37,
-+ 0x32, 0x53, 0x52, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x00, 0xf8,
-+ 0x48, 0xf8, 0x48, 0xfc, 0x44, 0x3c, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x7c, 0x13, 0x12, 0x3b, 0x34,
-+ 0x37, 0x50, 0x51, 0x17, 0x11, 0x13, 0x00, 0x00,
-+ 0x00, 0x38, 0xe8, 0x28, 0xb0, 0xb0, 0xa8, 0x28,
-+ 0xa4, 0xa4, 0xa4, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x11, 0x11, 0x6b, 0x2a, 0x13, 0x1a, 0x2e, 0x77,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0xe8, 0xa8, 0x90, 0x98, 0xac, 0xf4,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x12, 0x19, 0x36, 0x35,
-+ 0x36, 0x51, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x00, 0xfc, 0xcc, 0x54, 0xec, 0x54, 0x64, 0xb0,
-+ 0x4c, 0xa0, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x11, 0x17, 0x11, 0x7d, 0x13, 0x1a, 0x37, 0x34,
-+ 0x33, 0x50, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xe0, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x17, 0x11, 0x7f, 0x12, 0x1b, 0x35, 0x35,
-+ 0x33, 0x53, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xb8, 0xa8, 0xb8, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x34,
-+ 0x33, 0x50, 0x53, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40,
-+ 0x58, 0x40, 0x58, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x12, 0x13, 0x14, 0x7d, 0x17, 0x15, 0x3d, 0x3f,
-+ 0x35, 0x55, 0x57, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x08, 0xe8, 0x98, 0x18, 0xc8, 0x68, 0x58, 0xd8,
-+ 0x4c, 0x78, 0xc8, 0x48, 0x48, 0xc8, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x7f,
-+ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x7c, 0x11, 0x19, 0x36, 0x36,
-+ 0x36, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0x48, 0xb4, 0xa4, 0x00, 0x20,
-+ 0xa0, 0xb8, 0xa0, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x17, 0x39, 0x35,
-+ 0x34, 0x51, 0x57, 0x11, 0x11, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0,
-+ 0xc8, 0x48, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x36, 0x37,
-+ 0x33, 0x53, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x1a, 0x36, 0x36,
-+ 0x33, 0x52, 0x55, 0x15, 0x1a, 0x11, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xa8, 0xe8, 0xa8,
-+ 0xe8, 0x90, 0xd0, 0xb4, 0xac, 0xc4, 0x00, 0x00,
-+ 0x12, 0x14, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x30, 0x57, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x48, 0x90, 0x48, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x17, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x34,
-+ 0x37, 0x50, 0x57, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x50,
-+ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x11, 0x3a, 0x34, 0x57, 0x51,
-+ 0x13, 0x7f, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x90, 0x90, 0x7c, 0x90, 0xb8, 0xb8, 0x54, 0x94,
-+ 0x10, 0xfc, 0x00, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x12, 0x3a, 0x34,
-+ 0x35, 0x56, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x98, 0x50, 0xa8, 0xa4, 0xd4,
-+ 0xf0, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7c, 0x12, 0x1a, 0x34, 0x35,
-+ 0x36, 0x53, 0x52, 0x13, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xfc, 0x98, 0x50, 0xa8, 0xa4, 0xd4, 0xf0,
-+ 0x40, 0xf8, 0x48, 0xf8, 0x58, 0xe4, 0x00, 0x00,
-+ 0x11, 0x10, 0x13, 0x7c, 0x11, 0x18, 0x37, 0x34,
-+ 0x31, 0x50, 0x57, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xc0,
-+ 0xc8, 0x68, 0xf0, 0x50, 0x4c, 0xc0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x37, 0x36,
-+ 0x33, 0x50, 0x57, 0x11, 0x10, 0x17, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0xf8, 0x48,
-+ 0xf8, 0x80, 0xfc, 0x90, 0x70, 0x88, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7f, 0x12, 0x1a, 0x37, 0x36,
-+ 0x33, 0x52, 0x53, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x20, 0xe0, 0x20, 0xe0, 0xbc, 0xe8, 0xe8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7f, 0x12, 0x1b, 0x35, 0x35,
-+ 0x31, 0x51, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xfc, 0x50, 0xf0, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x10, 0x19, 0x35, 0x35,
-+ 0x30, 0x57, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x00, 0xf0, 0x10, 0xf0,
-+ 0xa0, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x37, 0x36,
-+ 0x33, 0x52, 0x53, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x80,
-+ 0xf8, 0xa8, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x34,
-+ 0x33, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xa8, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x1b, 0x34, 0x35,
-+ 0x36, 0x53, 0x56, 0x13, 0x16, 0x11, 0x00, 0x00,
-+ 0x30, 0xc0, 0xf0, 0x80, 0xf8, 0x88, 0x78, 0x98,
-+ 0x60, 0xb8, 0x60, 0xbc, 0x64, 0xdc, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7d, 0x16, 0x17, 0x3d, 0x3d,
-+ 0x35, 0x55, 0x56, 0x14, 0x14, 0x14, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0x78, 0x90, 0xfc, 0x00, 0x78,
-+ 0x48, 0x78, 0x48, 0x78, 0x48, 0x58, 0x00, 0x00,
-+ 0x11, 0x10, 0x12, 0x7d, 0x11, 0x1b, 0x34, 0x35,
-+ 0x31, 0x51, 0x51, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0xd0, 0x50, 0xa8, 0xa8, 0x10, 0xf8, 0x04, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7f, 0x13, 0x1a, 0x37, 0x36,
-+ 0x33, 0x50, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x11, 0x1b, 0x35, 0x35,
-+ 0x36, 0x57, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7f, 0x11, 0x18, 0x37, 0x34,
-+ 0x31, 0x50, 0x57, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x32, 0x53, 0x52, 0x15, 0x15, 0x18, 0x00, 0x00,
-+ 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7f, 0x12, 0x1b, 0x36, 0x37,
-+ 0x32, 0x52, 0x55, 0x15, 0x19, 0x11, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0xa8, 0x58, 0x40, 0xfc,
-+ 0xf0, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7f, 0x10, 0x19, 0x35, 0x35,
-+ 0x31, 0x51, 0x50, 0x12, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x48, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x1e, 0x23, 0x7a, 0x2a, 0x3b,
-+ 0x0d, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x90, 0x50, 0x20, 0x50, 0x8c,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x11, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x35, 0x37,
-+ 0x31, 0x51, 0x52, 0x12, 0x14, 0x11, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xbc, 0xe8, 0xe8, 0x28, 0xe8,
-+ 0x10, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x3b, 0x36,
-+ 0x37, 0x51, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8,
-+ 0xb8, 0x10, 0x10, 0xa8, 0x64, 0x44, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x7d, 0x11, 0x1a, 0x37, 0x34,
-+ 0x33, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x50, 0xe8, 0xfc, 0x00,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3f, 0x52, 0x1f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xfc, 0x20, 0x20,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x3f, 0x3e, 0x32,
-+ 0x5f, 0x01, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xf8, 0x50, 0xfc, 0x20, 0xf8,
-+ 0x20, 0x00, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7f, 0x14, 0x17, 0x3d, 0x3f,
-+ 0x34, 0x53, 0x52, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x20, 0xe0, 0x20, 0xbc, 0xc0, 0x80, 0x38, 0xc0,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1b, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x13, 0x13, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0xa8, 0xfc, 0xf8, 0xe8,
-+ 0xb8, 0xf8, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x1b, 0x34, 0x35,
-+ 0x33, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0xcc, 0x74, 0xcc, 0x74, 0x90, 0xfc,
-+ 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x12, 0x3b, 0x36,
-+ 0x37, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x70, 0xf8, 0xa8,
-+ 0xfc, 0x00, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x12, 0x39, 0x37,
-+ 0x35, 0x51, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf8, 0x50, 0x60, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x88, 0x04, 0x00, 0x00,
-+ 0x11, 0x17, 0x11, 0x7f, 0x12, 0x15, 0x3f, 0x34,
-+ 0x37, 0x50, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xfc, 0x08, 0xf0, 0xfc, 0xc8,
-+ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x11, 0x11, 0x16, 0x7e, 0x11, 0x19, 0x36, 0x37,
-+ 0x31, 0x55, 0x55, 0x15, 0x19, 0x11, 0x00, 0x00,
-+ 0x10, 0x3c, 0xa8, 0xf8, 0x08, 0xfc, 0xa0, 0xf4,
-+ 0x34, 0xd8, 0xb8, 0xd4, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x34,
-+ 0x37, 0x55, 0x57, 0x15, 0x17, 0x14, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00,
-+ 0xfc, 0x54, 0xfc, 0x54, 0xfc, 0x44, 0x00, 0x00,
-+ 0x12, 0x12, 0x15, 0x7f, 0x12, 0x15, 0x3f, 0x34,
-+ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xac, 0xe8, 0xb4, 0xfc, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x14, 0x13, 0x7d, 0x13, 0x13, 0x3d, 0x34,
-+ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x40, 0x84, 0xf4, 0x18, 0xf8, 0x14, 0xf4, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x36,
-+ 0x32, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xe8, 0xa8,
-+ 0xe8, 0x48, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7c, 0x17, 0x15, 0x3e, 0x3c,
-+ 0x34, 0x55, 0x55, 0x19, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x90, 0xfc, 0xf0, 0xd8, 0x94,
-+ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x13, 0x12, 0x3b, 0x36,
-+ 0x34, 0x57, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xb8, 0xa8, 0xb8, 0xa8,
-+ 0x44, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00,
-+ 0x11, 0x12, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x31,
-+ 0x33, 0x55, 0x50, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x98, 0xe8, 0x98, 0xe8, 0xb8, 0xa8, 0xfc, 0x70,
-+ 0xc8, 0xf4, 0x40, 0xf8, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x14, 0x3e, 0x22, 0x3f, 0x3e, 0x22,
-+ 0x3f, 0x01, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xf8, 0x50, 0xfc, 0x20, 0xf8,
-+ 0x20, 0x00, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x12, 0x17, 0x3b, 0x34,
-+ 0x37, 0x55, 0x55, 0x15, 0x17, 0x15, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40,
-+ 0xfc, 0xb4, 0xb4, 0xb4, 0xfc, 0xb4, 0x00, 0x00,
-+ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7f, 0x3a, 0x57,
-+ 0x11, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0xfc, 0xb8, 0xd4,
-+ 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x7f, 0x17, 0x15, 0x3f, 0x37,
-+ 0x36, 0x53, 0x53, 0x13, 0x11, 0x1e, 0x00, 0x00,
-+ 0x20, 0xfc, 0x40, 0xb8, 0xfc, 0x74, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x12, 0x7f, 0x17, 0x3d, 0x57, 0x3f, 0x2a, 0x7b,
-+ 0x36, 0x2b, 0x3f, 0x26, 0x38, 0x1f, 0x00, 0x00,
-+ 0x10, 0xfc, 0xd0, 0x78, 0xd4, 0xfc, 0x88, 0x90,
-+ 0xe8, 0x90, 0xe4, 0x08, 0xb0, 0xc0, 0x00, 0x00,
-+ 0x14, 0x1f, 0x14, 0x7f, 0x1b, 0x1f, 0x35, 0x3f,
-+ 0x3d, 0x57, 0x57, 0x15, 0x17, 0x14, 0x00, 0x00,
-+ 0x80, 0xf8, 0xa8, 0xe8, 0x78, 0xe8, 0x38, 0xe8,
-+ 0x28, 0xb8, 0xb0, 0x54, 0xd4, 0x8c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0c, 0x12, 0x7d, 0x20, 0x3f, 0x28,
-+ 0x48, 0x7f, 0x08, 0x14, 0x23, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x34, 0x1c, 0x6a, 0x08, 0x7f, 0x11, 0x28,
-+ 0x7e, 0x2a, 0x2a, 0x2e, 0x29, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x41, 0x21, 0x0a, 0x14, 0x20, 0x21,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x50, 0x60, 0x90, 0x0c,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x0c, 0x12, 0x22, 0x7f, 0x02,
-+ 0x3a, 0x2a, 0x2a, 0x3a, 0x02, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x1e, 0x20, 0x7e, 0x23, 0x3e,
-+ 0x22, 0x3e, 0x3e, 0x20, 0x3e, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x11, 0x1f,
-+ 0x29, 0x6d, 0x2b, 0x33, 0x3d, 0x27, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x03, 0x3c, 0x08, 0x7f, 0x08, 0x18, 0x6b, 0x49,
-+ 0x49, 0x6b, 0x49, 0x49, 0x7f, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x12, 0x34, 0x7f, 0x14, 0x3f, 0x15, 0x7f, 0x15,
-+ 0x3f, 0x16, 0x35, 0x35, 0x54, 0x15, 0x00, 0x00,
-+ 0x40, 0x40, 0xc0, 0x40, 0x7c, 0xa4, 0xa8, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x40, 0x5e, 0x52, 0x5e, 0x40, 0x7f,
-+ 0x6d, 0x6d, 0x7f, 0x40, 0x7f, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x7c, 0xa4, 0xa8, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x3f, 0x5e, 0x12, 0x1f, 0x7f,
-+ 0x1b, 0x2d, 0x5b, 0x2d, 0x49, 0x1b, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x07, 0x04, 0x3f, 0x2b, 0x3d, 0x27, 0x2a,
-+ 0x3b, 0x3b, 0x3b, 0x2a, 0x4f, 0x39, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xc0, 0x7c, 0xa4, 0xa8, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d,
-+ 0x3f, 0x12, 0x1a, 0x17, 0x24, 0x49, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x18, 0x29, 0x2e, 0x28, 0x3f, 0x22, 0x2a, 0x3b,
-+ 0x2a, 0x2a, 0x7f, 0x0a, 0x11, 0x61, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0xe4, 0xa8, 0xb0,
-+ 0xa0, 0xa0, 0xd0, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x3f, 0x24,
-+ 0x7f, 0x24, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x3e, 0x22, 0x3f, 0x20, 0x3e, 0x22, 0x3f,
-+ 0x09, 0x2e, 0x28, 0x28, 0x2e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x28, 0xf8, 0xa8, 0xa8, 0xb8, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x02, 0x02, 0x03, 0x04, 0x04, 0x0a,
-+ 0x11, 0x21, 0x00, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20,
-+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x10, 0x1e, 0x13, 0x32, 0x2b,
-+ 0x4c, 0x04, 0x08, 0x10, 0x20, 0x47, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0xf8,
-+ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x10, 0x1e, 0x22, 0x33, 0x4a,
-+ 0x0c, 0x04, 0x08, 0x11, 0x22, 0x44, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x1f, 0x22, 0x32, 0x4b,
-+ 0x0c, 0x04, 0x09, 0x10, 0x20, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x28, 0x44, 0x80,
-+ 0x10, 0x60, 0x88, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x11, 0x1d, 0x25, 0x25, 0x57,
-+ 0x18, 0x08, 0x10, 0x11, 0x22, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x11, 0x1d, 0x26, 0x27, 0x54,
-+ 0x18, 0x0f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x48, 0x24, 0x04, 0xf8, 0x10,
-+ 0x60, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x13, 0x1c, 0x24, 0x25, 0x54,
-+ 0x08, 0x0b, 0x10, 0x10, 0x20, 0x43, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54,
-+ 0x7c, 0xc8, 0x50, 0x34, 0xdc, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x11, 0x1c, 0x24, 0x27, 0x54,
-+ 0x19, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7d, 0x11, 0x11, 0x1c, 0x25, 0x25, 0x55,
-+ 0x19, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x01, 0x7f, 0x11, 0x13, 0x1d, 0x25, 0x25, 0x57,
-+ 0x19, 0x09, 0x12, 0x14, 0x21, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x11, 0x1c, 0x27, 0x26, 0x57,
-+ 0x19, 0x09, 0x11, 0x10, 0x27, 0x40, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x00, 0xfc, 0x08, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x13, 0x1c, 0x27, 0x26, 0x57,
-+ 0x1a, 0x0b, 0x10, 0x17, 0x20, 0x40, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x15, 0x1d, 0x26, 0x25, 0x57,
-+ 0x19, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf8, 0x50, 0x60, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x02, 0x7e, 0x13, 0x15, 0x38, 0x2f, 0x2a, 0x6e,
-+ 0x5a, 0x1e, 0x12, 0x16, 0x23, 0x4e, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xe8, 0x68, 0x20, 0xfc, 0xa0, 0xe8,
-+ 0xa8, 0xd0, 0xd4, 0x9c, 0xec, 0x44, 0x00, 0x00,
-+ 0x01, 0x7d, 0x17, 0x11, 0x3f, 0x2a, 0x2e, 0x6a,
-+ 0x5e, 0x1a, 0x16, 0x13, 0x2e, 0x40, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0x28, 0xfc, 0xa0, 0xe8, 0xa8,
-+ 0xe8, 0xd0, 0x94, 0xec, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x10, 0x60, 0x3f,
-+ 0x08, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0xe0,
-+ 0x20, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x06, 0x38, 0x20, 0x3e, 0x22, 0x3e, 0x23, 0x3f,
-+ 0x20, 0x3e, 0x22, 0x22, 0x22, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x8c, 0x00, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x22, 0x5d,
-+ 0x00, 0x1c, 0x14, 0x16, 0x24, 0x4b, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x54, 0x8c, 0xf8,
-+ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x40, 0x5e, 0x52, 0x5e, 0x41, 0x7f,
-+ 0x6d, 0x6d, 0x7f, 0x40, 0x7f, 0x41, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x11, 0x11, 0x7f, 0x11,
-+ 0x11, 0x11, 0x11, 0x3f, 0x20, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10,
-+ 0x10, 0x10, 0x10, 0xfc, 0x20, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x20, 0x7e, 0x33, 0x2a, 0x7f,
-+ 0x32, 0x2a, 0x3f, 0x22, 0x05, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x30, 0x48, 0xfc, 0x04, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xac, 0x2c, 0x04, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x23, 0x41, 0x0e, 0x70, 0x1f,
-+ 0x03, 0x3e, 0x03, 0x7e, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0x10, 0x18, 0x64, 0x84, 0x00, 0xe0, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x08, 0x73, 0x10, 0x1e, 0x71, 0x11, 0x1c,
-+ 0x71, 0x16, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x50, 0x48, 0xf8, 0x40, 0x48, 0x68, 0x70, 0xd0,
-+ 0x48, 0x44, 0x40, 0xc4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x3f, 0x20,
-+ 0x4f, 0x03, 0x1e, 0x03, 0x3e, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xfc, 0xc8,
-+ 0x00, 0xf0, 0x00, 0xf8, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x03, 0x1e, 0x03, 0x3e, 0x01, 0x06,
-+ 0x38, 0x0e, 0x38, 0x0f, 0x79, 0x0f, 0x00, 0x00,
-+ 0xc0, 0x00, 0xe0, 0x00, 0xf0, 0x08, 0xf8, 0x18,
-+ 0xe0, 0x38, 0xe0, 0x3c, 0xe4, 0x3c, 0x00, 0x00,
-+ 0x04, 0x09, 0x71, 0x12, 0x1c, 0x71, 0x12, 0x1d,
-+ 0x71, 0x12, 0x10, 0x11, 0x12, 0x0f, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0x60, 0x90, 0x50, 0x48, 0x48,
-+ 0x50, 0x60, 0x90, 0x14, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x26, 0x36, 0x37, 0x24,
-+ 0x27, 0x21, 0x2f, 0x21, 0x3f, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xfc, 0xb0, 0xb4, 0x2c, 0x60,
-+ 0x80, 0xf0, 0x00, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x3f, 0x2e, 0x2a, 0x2e, 0x3f, 0x1f,
-+ 0x11, 0x1f, 0x1f, 0x11, 0x1f, 0x70, 0x00, 0x00,
-+ 0x08, 0xd0, 0xe0, 0xa0, 0xb8, 0xe0, 0xa0, 0x20,
-+ 0x3c, 0xe0, 0x20, 0x24, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x12, 0x7f, 0x42, 0x42, 0x43,
-+ 0x42, 0x46, 0x3e, 0x02, 0x03, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc,
-+ 0x40, 0x20, 0x24, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xf0, 0x10,
-+ 0x10, 0x10, 0x14, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x0f,
-+ 0x10, 0x7f, 0x04, 0x08, 0x10, 0x63, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x10,
-+ 0x90, 0xf0, 0x94, 0x8c, 0x8c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x1f,
-+ 0x12, 0x1f, 0x15, 0x18, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xf0, 0xd0,
-+ 0x50, 0xd0, 0x54, 0xcc, 0xcc, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x12,
-+ 0x0a, 0x3f, 0x07, 0x0a, 0x32, 0x02, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xf0, 0x50,
-+ 0x90, 0xd0, 0x14, 0x8c, 0x4c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x7d,
-+ 0x05, 0x09, 0x09, 0x11, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x88, 0x88,
-+ 0x50, 0x60, 0x20, 0x10, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x42, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x23, 0x22, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x20, 0x23, 0x00, 0x08,
-+ 0x08, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x20, 0x20, 0x03, 0x08,
-+ 0x08, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x24, 0x24, 0x28, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x40, 0x21, 0x21, 0x01, 0x09,
-+ 0x0b, 0x12, 0x10, 0x20, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x10, 0x10, 0x10,
-+ 0xf0, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x42, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x2f, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x20, 0x20, 0x02, 0x0a,
-+ 0x0a, 0x14, 0x14, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0x80, 0x80, 0x80, 0x88, 0x84,
-+ 0x84, 0x80, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x41, 0x22, 0x22, 0x07, 0x08,
-+ 0x08, 0x10, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0xe0, 0x20, 0x20, 0x10, 0x10, 0x08, 0xf4, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x03, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x24, 0x27, 0x2c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x41, 0x22, 0x24, 0x00, 0x0b,
-+ 0x09, 0x10, 0x10, 0x20, 0x21, 0x2e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x70, 0x00, 0xf8,
-+ 0x08, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x27, 0x20, 0x00, 0x08,
-+ 0x09, 0x11, 0x12, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0xe0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x42, 0x27, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0x50, 0xfc, 0x50, 0x50, 0x50,
-+ 0x50, 0x70, 0x50, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0f, 0x10, 0x10, 0x20, 0x23, 0x2c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48,
-+ 0xfc, 0x40, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x41, 0x27, 0x24, 0x04, 0x0f,
-+ 0x0d, 0x11, 0x11, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x30, 0x48, 0x48, 0x5c, 0xe4, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x00, 0x0b,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0d, 0x45, 0x25, 0x25, 0x05, 0x0d,
-+ 0x0e, 0x16, 0x14, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x58,
-+ 0x58, 0x38, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0c, 0x44, 0x24, 0x24, 0x04, 0x0c,
-+ 0x0d, 0x15, 0x16, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88, 0x88, 0xc8,
-+ 0x48, 0x28, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x24, 0x24, 0x28, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0xe0,
-+ 0x30, 0x28, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x21, 0x21, 0x01, 0x09,
-+ 0x09, 0x11, 0x11, 0x21, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x21, 0x01, 0x09,
-+ 0x09, 0x11, 0x11, 0x21, 0x21, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x00, 0x00, 0x08, 0x30,
-+ 0xc0, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x20, 0x20, 0x00, 0x0b,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x03, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x27, 0x00, 0x08,
-+ 0x08, 0x10, 0x12, 0x23, 0x24, 0x28, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xf8, 0x08, 0x10,
-+ 0x10, 0x20, 0x40, 0x80, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0b,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x2e, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc,
-+ 0x20, 0x20, 0x10, 0x14, 0xcc, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x41, 0x21, 0x22, 0x00, 0x0f,
-+ 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x23, 0x02, 0x0a,
-+ 0x0b, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x20, 0x03, 0x0a,
-+ 0x0b, 0x12, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xfc, 0x44, 0x58, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x12, 0x11, 0x21, 0x48, 0x0c, 0x12, 0x12, 0x30,
-+ 0x51, 0x11, 0x12, 0x12, 0x14, 0x14, 0x00, 0x00,
-+ 0x00, 0x78, 0x00, 0x00, 0x00, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x43, 0x22, 0x24, 0x0e, 0x15,
-+ 0x14, 0x25, 0x26, 0x47, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x48, 0x68, 0xa8,
-+ 0xa8, 0x68, 0x28, 0xe8, 0x28, 0x30, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x21, 0x23, 0x04, 0x08,
-+ 0x0b, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0a, 0x41, 0x21, 0x20, 0x07, 0x08,
-+ 0x08, 0x10, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x22, 0x24, 0x07, 0x08,
-+ 0x08, 0x11, 0x11, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x41, 0x22, 0x23, 0x06, 0x0b,
-+ 0x0a, 0x13, 0x12, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xc8,
-+ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x41, 0x2f, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x17, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0x28, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x78, 0x28, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x41, 0x27, 0x25, 0x05, 0x0d,
-+ 0x0d, 0x16, 0x16, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x58,
-+ 0x58, 0x38, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0a, 0x42, 0x23, 0x24, 0x04, 0x0e,
-+ 0x09, 0x11, 0x11, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x08, 0xc8, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x27, 0x20, 0x00, 0x0f,
-+ 0x08, 0x10, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x00, 0x00, 0xfc,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x20, 0x03, 0x0a,
-+ 0x0b, 0x12, 0x13, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x24, 0x20, 0x07, 0x08,
-+ 0x09, 0x11, 0x12, 0x24, 0x28, 0x23, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x80, 0x80, 0xfc, 0x80,
-+ 0x20, 0x20, 0x50, 0x48, 0xfc, 0x84, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x21, 0x21, 0x02, 0x0c,
-+ 0x09, 0x13, 0x14, 0x20, 0x21, 0x2e, 0x00, 0x00,
-+ 0x40, 0x50, 0x98, 0xe4, 0x20, 0x24, 0x9c, 0xf0,
-+ 0x10, 0x20, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x21, 0x21, 0x01, 0x0a,
-+ 0x0c, 0x10, 0x10, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x58, 0xe4,
-+ 0x44, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x4f, 0x22, 0x22, 0x02, 0x0a,
-+ 0x0b, 0x1e, 0x12, 0x22, 0x22, 0x27, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0x50, 0xd0,
-+ 0x50, 0x50, 0x50, 0x90, 0x90, 0x10, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x41, 0x22, 0x22, 0x07, 0x09,
-+ 0x0d, 0x15, 0x12, 0x23, 0x24, 0x28, 0x00, 0x00,
-+ 0x04, 0x08, 0x70, 0x10, 0x10, 0x50, 0x5c, 0x50,
-+ 0x50, 0x50, 0x50, 0x3c, 0x80, 0x7c, 0x00, 0x00,
-+ 0x12, 0x09, 0x09, 0x47, 0x20, 0x23, 0x02, 0x0b,
-+ 0x0a, 0x10, 0x11, 0x22, 0x2c, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x20, 0x17, 0x10, 0x43, 0x2f, 0x23, 0x00, 0x13,
-+ 0x1f, 0x20, 0x27, 0x45, 0x47, 0x40, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xf0, 0xfc, 0xe8, 0x80, 0xf0,
-+ 0xfc, 0x10, 0xfc, 0x50, 0x30, 0x30, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x08,
-+ 0x0b, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x41, 0x21, 0x22, 0x07, 0x0a,
-+ 0x0b, 0x12, 0x13, 0x22, 0x20, 0x20, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x50, 0x48, 0xfc, 0x48,
-+ 0xf8, 0x48, 0xf8, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x0c, 0x0a, 0x43, 0x27, 0x21, 0x01, 0x0f,
-+ 0x09, 0x11, 0x12, 0x24, 0x28, 0x20, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0x28, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x28, 0xa8, 0x68, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0b, 0x42, 0x22, 0x22, 0x03, 0x0a,
-+ 0x0a, 0x12, 0x13, 0x26, 0x24, 0x28, 0x00, 0x00,
-+ 0x08, 0x48, 0x58, 0xd8, 0xe8, 0x48, 0xf8, 0x48,
-+ 0xe8, 0xd8, 0x58, 0x48, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x1f, 0x11, 0x41, 0x29, 0x2e, 0x0a, 0x1a,
-+ 0x19, 0x2e, 0x28, 0x49, 0x4f, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xa8, 0xa8, 0xc8, 0xc8,
-+ 0xa8, 0xa8, 0x98, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x47, 0x21, 0x21, 0x01, 0x09,
-+ 0x09, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x41, 0x23, 0x24, 0x00, 0x0b,
-+ 0x08, 0x12, 0x11, 0x21, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0x40, 0xf8,
-+ 0x40, 0x48, 0x48, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xe8,
-+ 0xa8, 0xa8, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x09, 0x08, 0x43, 0x27, 0x20, 0x01, 0x09,
-+ 0x0b, 0x15, 0x19, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x10, 0xe0, 0xd0, 0x48, 0xfc, 0x80, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x41, 0x21, 0x21, 0x02, 0x0c,
-+ 0x08, 0x17, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x18, 0xa4, 0x44,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x23, 0x06, 0x16,
-+ 0x16, 0x2a, 0x2a, 0x42, 0x43, 0x42, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0xd0, 0x48, 0x48, 0xa4, 0xa0,
-+ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x42, 0x24, 0x23, 0x02, 0x0a,
-+ 0x0a, 0x12, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xe8,
-+ 0xa8, 0xa8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x24, 0x23, 0x00, 0x0f,
-+ 0x08, 0x13, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x44, 0x04, 0xf8, 0x48, 0xfc,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x20, 0x27, 0x00, 0x0b,
-+ 0x08, 0x17, 0x10, 0x21, 0x20, 0x27, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x40, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x23, 0x06, 0x16,
-+ 0x16, 0x2a, 0x2a, 0x52, 0x43, 0x42, 0x00, 0x00,
-+ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0xd0, 0xd0,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x08,
-+ 0x08, 0x17, 0x10, 0x20, 0x20, 0x27, 0x00, 0x00,
-+ 0x90, 0x88, 0xfc, 0x90, 0x50, 0x64, 0x9c, 0xa4,
-+ 0xfc, 0x90, 0x50, 0x24, 0xdc, 0x04, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x20, 0x00, 0x0f,
-+ 0x08, 0x11, 0x11, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x00, 0x00, 0xfc,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x42, 0x2f, 0x22, 0x02, 0x0b,
-+ 0x0a, 0x12, 0x14, 0x24, 0x28, 0x33, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0xd0, 0x88, 0x24, 0x90,
-+ 0x90, 0xc0, 0xa0, 0x90, 0x88, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x27, 0x21, 0x01, 0x0a,
-+ 0x0c, 0x13, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x24, 0x5c,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x41, 0x23, 0x24, 0x03, 0x0a,
-+ 0x0a, 0x13, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x09, 0x43, 0x22, 0x22, 0x07, 0x0a,
-+ 0x0a, 0x13, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0c, 0x47, 0x24, 0x27, 0x04, 0x0b,
-+ 0x0a, 0x13, 0x12, 0x23, 0x22, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x47, 0x25, 0x25, 0x06, 0x0f,
-+ 0x08, 0x17, 0x10, 0x20, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0x58, 0x38, 0xf8,
-+ 0x80, 0xf8, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x27, 0x00, 0x0b,
-+ 0x0a, 0x12, 0x13, 0x22, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0x10, 0xfc, 0x08, 0xc8,
-+ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x20, 0x11, 0x12, 0x4f, 0x25, 0x25, 0x05, 0x16,
-+ 0x14, 0x2f, 0x20, 0x41, 0x46, 0x58, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0xf8, 0x48, 0x58, 0x58, 0x38,
-+ 0x88, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x25, 0x20, 0x07, 0x08,
-+ 0x09, 0x11, 0x12, 0x24, 0x28, 0x23, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x44, 0xf4, 0x80, 0xfc, 0x80,
-+ 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x23, 0x22, 0x03, 0x08,
-+ 0x0f, 0x10, 0x13, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x47, 0x20, 0x23, 0x02, 0x0b,
-+ 0x0a, 0x13, 0x10, 0x27, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x40, 0x21, 0x26, 0x01, 0x09,
-+ 0x09, 0x11, 0x11, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x20, 0x11, 0x1e, 0x42, 0x22, 0x2f, 0x02, 0x17,
-+ 0x16, 0x2a, 0x2a, 0x52, 0x42, 0x43, 0x00, 0x00,
-+ 0xa0, 0x20, 0x20, 0x24, 0x64, 0xe8, 0x70, 0xa0,
-+ 0xb0, 0xb0, 0x50, 0x48, 0x88, 0x04, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x21, 0x01, 0x08,
-+ 0x0f, 0x10, 0x11, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x70, 0x00, 0xf8, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x23, 0x22, 0x03, 0x08,
-+ 0x0f, 0x10, 0x11, 0x22, 0x2c, 0x20, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x44,
-+ 0xe4, 0xe8, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x10, 0x0a, 0x0a, 0x42, 0x23, 0x20, 0x07, 0x08,
-+ 0x0b, 0x12, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x80,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x41, 0x21, 0x21, 0x00, 0x0b,
-+ 0x0a, 0x17, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x08, 0xf8, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x09, 0x0f, 0x41, 0x21, 0x27, 0x01, 0x09,
-+ 0x09, 0x17, 0x11, 0x22, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0xfc, 0x10, 0x10, 0x7c, 0x90, 0x10, 0x7c,
-+ 0x90, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x49, 0x2f, 0x29, 0x09, 0x1f,
-+ 0x19, 0x29, 0x2f, 0x49, 0x40, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x70, 0x68, 0x68, 0xa4, 0x2c,
-+ 0x28, 0x70, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x41, 0x27, 0x25, 0x05, 0x0d,
-+ 0x0d, 0x15, 0x15, 0x25, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x00, 0xf8, 0x28, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x28, 0xf8, 0x08, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x28, 0x17, 0x11,
-+ 0x12, 0x23, 0x2e, 0x42, 0x42, 0x47, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xf8, 0xa8, 0x28, 0x28,
-+ 0x28, 0xa8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x22, 0x1f, 0x12, 0x43, 0x20, 0x2f, 0x08, 0x1e,
-+ 0x1a, 0x2a, 0x2d, 0x48, 0x48, 0x48, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xe0, 0x80, 0xf8, 0x88, 0xe8,
-+ 0xa8, 0xa8, 0xd8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x11, 0x08, 0x08, 0x41, 0x23, 0x2c, 0x07, 0x0c,
-+ 0x0e, 0x15, 0x16, 0x25, 0x24, 0x25, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x12, 0x0a, 0x0a, 0x42, 0x2f, 0x22, 0x02, 0x0b,
-+ 0x0a, 0x12, 0x12, 0x24, 0x24, 0x2b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0xc0, 0xf8, 0x08, 0x90,
-+ 0x90, 0xfc, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0a, 0x1f,
-+ 0x12, 0x27, 0x26, 0x4a, 0x52, 0x42, 0x00, 0x00,
-+ 0x08, 0x28, 0xe8, 0x28, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0x28, 0x28, 0xa8, 0x88, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x24, 0x21, 0x00, 0x08,
-+ 0x0b, 0x10, 0x17, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x18, 0xf0, 0x88, 0x44, 0x54, 0x90, 0xa0, 0x50,
-+ 0xf8, 0x48, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x40, 0x27, 0x20, 0x01, 0x0f,
-+ 0x08, 0x13, 0x12, 0x22, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0xf8,
-+ 0x08, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x09,
-+ 0x09, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48, 0x48,
-+ 0x50, 0xfc, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x0f, 0x0c, 0x47, 0x24, 0x25, 0x06, 0x0d,
-+ 0x0e, 0x15, 0x16, 0x25, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0xd8, 0xd8, 0x68,
-+ 0xe8, 0x58, 0x58, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x24, 0x23, 0x01, 0x08,
-+ 0x0f, 0x10, 0x13, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0x40, 0xf8, 0x10, 0xa0,
-+ 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x27, 0x05, 0x09,
-+ 0x0f, 0x10, 0x17, 0x21, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xfc, 0x28, 0xd0,
-+ 0x1c, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x28, 0x14, 0x15, 0x4f, 0x22, 0x2a, 0x0a, 0x1a,
-+ 0x1f, 0x2a, 0x22, 0x42, 0x44, 0x49, 0x00, 0x00,
-+ 0x80, 0xb8, 0x28, 0xe8, 0x28, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0x48, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x41, 0x22, 0x25, 0x01, 0x09,
-+ 0x09, 0x12, 0x13, 0x25, 0x29, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0,
-+ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x0a, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x08,
-+ 0x0b, 0x11, 0x10, 0x20, 0x21, 0x2e, 0x00, 0x00,
-+ 0x40, 0x58, 0x48, 0x58, 0x48, 0x58, 0x48, 0x40,
-+ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x42, 0x24, 0x20, 0x03, 0x0a,
-+ 0x0a, 0x13, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x24, 0x80, 0x38, 0x08,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x27, 0x24, 0x3f, 0x25, 0x26,
-+ 0x3d, 0x24, 0x24, 0x27, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xf8, 0xa0, 0xfc, 0x50, 0x48,
-+ 0x54, 0xd0, 0xe0, 0x50, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x25, 0x24, 0x07, 0x14,
-+ 0x15, 0x24, 0x25, 0x49, 0x49, 0x51, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x02, 0x0b,
-+ 0x0a, 0x10, 0x17, 0x21, 0x20, 0x20, 0x00, 0x00,
-+ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x41, 0x20, 0x27, 0x04, 0x08,
-+ 0x0f, 0x10, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40,
-+ 0xfc, 0x40, 0x78, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x45, 0x21, 0x21, 0x01, 0x09,
-+ 0x08, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x23, 0x3c, 0x20, 0x22, 0x1e, 0x08, 0x0a,
-+ 0x7a, 0x1c, 0x2c, 0x2a, 0x49, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x49, 0x29, 0x2f, 0x09, 0x1f,
-+ 0x18, 0x2f, 0x28, 0x4f, 0x48, 0x49, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x50, 0x50, 0x50, 0xfc, 0x20,
-+ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x01, 0x13,
-+ 0x16, 0x1b, 0x23, 0x22, 0x43, 0x42, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0x20, 0xfc,
-+ 0x40, 0xf8, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x20, 0x1f, 0x10, 0x47, 0x24, 0x27, 0x05, 0x15,
-+ 0x15, 0x27, 0x26, 0x4b, 0x4a, 0x51, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0xf8, 0x48, 0xf8, 0x04, 0xfc, 0x00, 0x00,
-+ 0x20, 0x17, 0x10, 0x4f, 0x20, 0x27, 0x00, 0x17,
-+ 0x10, 0x27, 0x25, 0x45, 0x47, 0x45, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x90, 0x10, 0x10,
-+ 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x0f, 0x09, 0x42, 0x2f, 0x22, 0x02, 0x0b,
-+ 0x08, 0x11, 0x1f, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0xfc, 0x10, 0x08, 0xf4, 0x10, 0x10, 0xf0,
-+ 0xc8, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x24, 0x24, 0x3f, 0x04, 0x7f, 0x15, 0x24, 0x45,
-+ 0x01, 0x7f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0xf0, 0x90, 0xfc, 0x90, 0x30,
-+ 0x08, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x41, 0x21, 0x22, 0x07, 0x08,
-+ 0x0b, 0x1d, 0x10, 0x21, 0x20, 0x23, 0x00, 0x00,
-+ 0x40, 0x90, 0xf8, 0x10, 0x98, 0x64, 0xfc, 0xa0,
-+ 0x50, 0xac, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0a, 0x1f,
-+ 0x13, 0x26, 0x26, 0x4a, 0x52, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0x20, 0xfc, 0xe4, 0xa8, 0xb0,
-+ 0x20, 0xa0, 0xd0, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x25, 0x15, 0x1f, 0x45, 0x25, 0x28, 0x0f, 0x18,
-+ 0x17, 0x24, 0x24, 0x44, 0x44, 0x40, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0xd4, 0x0c, 0xfc, 0x88,
-+ 0xf0, 0x90, 0x90, 0x90, 0xe0, 0x80, 0x00, 0x00,
-+ 0x20, 0x1e, 0x12, 0x42, 0x2e, 0x28, 0x08, 0x1f,
-+ 0x1a, 0x22, 0x22, 0x42, 0x42, 0x4d, 0x00, 0x00,
-+ 0x00, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xfc,
-+ 0xa8, 0xa8, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x45, 0x25, 0x2d, 0x15, 0x15,
-+ 0x15, 0x25, 0x25, 0x45, 0x45, 0x44, 0x00, 0x00,
-+ 0x20, 0x20, 0x7c, 0x48, 0xb0, 0x30, 0xec, 0x20,
-+ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x11, 0x0f, 0x08, 0x43, 0x20, 0x27, 0x03, 0x09,
-+ 0x08, 0x17, 0x10, 0x21, 0x26, 0x20, 0x00, 0x00,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xf0, 0xc0,
-+ 0x68, 0xe8, 0xd0, 0x48, 0x44, 0xc0, 0x00, 0x00,
-+ 0x20, 0x1f, 0x14, 0x47, 0x24, 0x25, 0x07, 0x10,
-+ 0x1f, 0x28, 0x29, 0x4f, 0x48, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0x50, 0x50, 0xd0, 0x30, 0xf0, 0x80,
-+ 0xf8, 0xc8, 0x28, 0xd8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x40, 0x27, 0x24, 0x06, 0x0d,
-+ 0x0e, 0x15, 0x15, 0x26, 0x27, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf8, 0xa8, 0x68, 0x68,
-+ 0xd8, 0xc8, 0xa8, 0x58, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x47, 0x21, 0x27, 0x01, 0x09,
-+ 0x0e, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x47, 0x25, 0x24, 0x07, 0x14,
-+ 0x17, 0x24, 0x29, 0x4f, 0x51, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0xf0, 0x60, 0xfc, 0x40,
-+ 0xf8, 0x88, 0x90, 0x7c, 0x10, 0x30, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2a, 0x2a, 0x0a, 0x13,
-+ 0x12, 0x23, 0x22, 0x43, 0x44, 0x48, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xd8, 0xdc, 0x94, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x20, 0x12, 0x12, 0x42, 0x22, 0x2f, 0x02, 0x1a,
-+ 0x1b, 0x2a, 0x2a, 0x4b, 0x4e, 0x58, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x10, 0x50,
-+ 0xdc, 0x50, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x20, 0x1f, 0x12, 0x4a, 0x26, 0x24, 0x0b, 0x12,
-+ 0x1b, 0x2a, 0x2a, 0x4b, 0x4e, 0x58, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xe8, 0xa8, 0xc8, 0xb0, 0x10,
-+ 0xdc, 0x50, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x47, 0x20, 0x23, 0x07, 0x09,
-+ 0x09, 0x16, 0x17, 0x21, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0xb8, 0x28,
-+ 0xb8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x22, 0x1f, 0x1a, 0x4a, 0x2f, 0x26, 0x07, 0x1a,
-+ 0x13, 0x22, 0x23, 0x42, 0x43, 0x42, 0x00, 0x00,
-+ 0x10, 0xfc, 0x50, 0x50, 0xfc, 0xb0, 0x34, 0x4c,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x26, 0x16, 0x1f, 0x4a, 0x3f, 0x25, 0x05, 0x15,
-+ 0x1b, 0x22, 0x23, 0x42, 0x43, 0x42, 0x00, 0x00,
-+ 0x30, 0x30, 0xfc, 0x50, 0xfc, 0x30, 0xb4, 0x4c,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x01, 0x09,
-+ 0x09, 0x11, 0x11, 0x27, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x22, 0x1a, 0x1a, 0x4a, 0x2f, 0x20, 0x0f, 0x10,
-+ 0x1f, 0x22, 0x2f, 0x42, 0x43, 0x5c, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xbc, 0x48, 0xe8, 0xa8,
-+ 0xb0, 0x10, 0x90, 0x28, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x0b, 0x09, 0x47, 0x23, 0x22, 0x03, 0x0a,
-+ 0x0b, 0x10, 0x13, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x41, 0x2f, 0x20, 0x01, 0x0e,
-+ 0x0b, 0x12, 0x13, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x11, 0x09, 0x0f, 0x41, 0x27, 0x20, 0x07, 0x0c,
-+ 0x0f, 0x14, 0x12, 0x22, 0x23, 0x2c, 0x00, 0x00,
-+ 0x10, 0x10, 0xe0, 0x28, 0xc8, 0x10, 0xd0, 0x64,
-+ 0xc4, 0x88, 0x88, 0xd0, 0x20, 0x40, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x22, 0x03, 0x08,
-+ 0x0b, 0x12, 0x13, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xb8, 0xa8, 0xa8, 0xb8, 0xa0,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x47, 0x24, 0x27, 0x04, 0x17,
-+ 0x14, 0x27, 0x25, 0x4a, 0x4c, 0x50, 0x00, 0x00,
-+ 0x40, 0xfc, 0xd8, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc,
-+ 0xa8, 0xf8, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x44, 0x23, 0x23, 0x0d, 0x09,
-+ 0x09, 0x11, 0x12, 0x22, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x23, 0x22, 0x03, 0x0a,
-+ 0x0b, 0x10, 0x17, 0x20, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8,
-+ 0x58, 0x40, 0xfc, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x29, 0x0f, 0x19,
-+ 0x1f, 0x22, 0x3f, 0x42, 0x42, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0xb0, 0x50, 0x48, 0xfc, 0x20, 0x20,
-+ 0xfc, 0x20, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x41, 0x20, 0x27, 0x04, 0x0f,
-+ 0x08, 0x17, 0x10, 0x21, 0x26, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xbc, 0xa4, 0xbc,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x20, 0x23, 0x00, 0x0f,
-+ 0x09, 0x17, 0x10, 0x23, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x20, 0x13, 0x1c, 0x47, 0x24, 0x27, 0x04, 0x17,
-+ 0x14, 0x24, 0x25, 0x49, 0x49, 0x51, 0x00, 0x00,
-+ 0x80, 0xf0, 0x40, 0xfc, 0xa4, 0x1c, 0xf0, 0xfc,
-+ 0xf0, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x0b, 0x09, 0x07, 0x41, 0x23, 0x22, 0x0b,
-+ 0x0a, 0x13, 0x12, 0x23, 0x21, 0x2e, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x43, 0x22, 0x27, 0x03, 0x08,
-+ 0x0b, 0x1c, 0x13, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0xa0,
-+ 0xf8, 0x04, 0xf8, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x20, 0x1f, 0x11, 0x4f, 0x25, 0x25, 0x07, 0x1a,
-+ 0x13, 0x22, 0x23, 0x42, 0x44, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0x48, 0xb0, 0xa8, 0xa8, 0xb8, 0x14,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x01, 0x0e,
-+ 0x0b, 0x12, 0x17, 0x23, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x10, 0xe8,
-+ 0x30, 0xa8, 0xfc, 0x48, 0xa4, 0xa4, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x21, 0x02, 0x09,
-+ 0x0f, 0x11, 0x11, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0xe8, 0x10, 0x48, 0xa8, 0xf0,
-+ 0x1c, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x20, 0x1f, 0x12, 0x4c, 0x2f, 0x29, 0x0e, 0x1b,
-+ 0x1c, 0x29, 0x2e, 0x4b, 0x4c, 0x48, 0x00, 0x00,
-+ 0x00, 0xfc, 0xb0, 0x88, 0xf8, 0x98, 0xe8, 0xa8,
-+ 0xd8, 0x98, 0xe8, 0xa8, 0xd8, 0x98, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x45, 0x22, 0x24, 0x03, 0x0a,
-+ 0x0f, 0x10, 0x13, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x74, 0xf8, 0xa8,
-+ 0xfc, 0x00, 0xf8, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x45, 0x22, 0x24, 0x01, 0x0f,
-+ 0x09, 0x11, 0x11, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0xf0, 0x58, 0xe4, 0xf8, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x22, 0x13, 0x12, 0x47, 0x24, 0x2c, 0x05, 0x14,
-+ 0x14, 0x24, 0x25, 0x44, 0x44, 0x45, 0x00, 0x00,
-+ 0x50, 0x54, 0xd8, 0xfc, 0x88, 0x50, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x11, 0x0f, 0x09, 0x43, 0x22, 0x24, 0x07, 0x08,
-+ 0x0f, 0x10, 0x13, 0x20, 0x23, 0x20, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xfc, 0xe8, 0x00, 0xfc, 0xc8,
-+ 0x68, 0xf0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x47, 0x22, 0x23, 0x02, 0x0b,
-+ 0x08, 0x13, 0x1e, 0x29, 0x25, 0x24, 0x00, 0x00,
-+ 0x40, 0xfc, 0x88, 0x38, 0x08, 0xb8, 0x08, 0xf8,
-+ 0x80, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x47, 0x21, 0x27, 0x00, 0x0b,
-+ 0x0f, 0x12, 0x13, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x40, 0xfc, 0x28, 0xc8, 0x50, 0xfc, 0xe0, 0x58,
-+ 0xfc, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x49, 0x2f, 0x29, 0x09, 0x1f,
-+ 0x19, 0x29, 0x2f, 0x46, 0x49, 0x51, 0x00, 0x00,
-+ 0x50, 0x48, 0x5c, 0xe8, 0x28, 0x34, 0xcc, 0x54,
-+ 0x5c, 0xe8, 0x28, 0x14, 0x6c, 0x84, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x47, 0x24, 0x27, 0x0f, 0x12,
-+ 0x1f, 0x26, 0x39, 0x42, 0x4c, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0x20,
-+ 0xfc, 0xb0, 0xcc, 0xb0, 0x88, 0x80, 0x00, 0x00,
-+ 0x11, 0x0f, 0x08, 0x41, 0x27, 0x21, 0x02, 0x0d,
-+ 0x09, 0x11, 0x11, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x10, 0xfc, 0x40, 0xf0, 0xfc, 0x10, 0xe8, 0xf4,
-+ 0x10, 0xf0, 0xf8, 0x50, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x22, 0x1f, 0x1d, 0x4b, 0x3e, 0x22, 0x05, 0x1f,
-+ 0x12, 0x2f, 0x2a, 0x47, 0x43, 0x4e, 0x00, 0x00,
-+ 0x08, 0xc8, 0x68, 0x68, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x28, 0xe8, 0xa8, 0x08, 0x88, 0x18, 0x00, 0x00,
-+ 0x20, 0x10, 0x17, 0x44, 0x27, 0x24, 0x05, 0x15,
-+ 0x15, 0x25, 0x25, 0x4a, 0x4a, 0x54, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0xe8, 0x88, 0x78, 0xf0, 0x50,
-+ 0xf0, 0x50, 0xf8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x20, 0x1f, 0x12, 0x41, 0x27, 0x24, 0x07, 0x1e,
-+ 0x1b, 0x2f, 0x2b, 0x4e, 0x4a, 0x57, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0xf0, 0x10, 0xf0, 0xb8,
-+ 0xe8, 0x68, 0x78, 0xbc, 0xec, 0x44, 0x00, 0x00,
-+ 0x24, 0x14, 0x1f, 0x44, 0x2e, 0x2b, 0x0f, 0x1a,
-+ 0x1e, 0x25, 0x3e, 0x45, 0x44, 0x44, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0xf8, 0x48,
-+ 0xd8, 0x68, 0xd8, 0x68, 0x48, 0xd8, 0x00, 0x00,
-+ 0x22, 0x12, 0x1b, 0x44, 0x24, 0x2b, 0x02, 0x16,
-+ 0x17, 0x2a, 0x2a, 0x42, 0x42, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x50, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x20, 0x17, 0x15, 0x44, 0x27, 0x25, 0x06, 0x14,
-+ 0x15, 0x25, 0x25, 0x49, 0x4f, 0x50, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x90, 0xfc, 0xf8, 0xd4, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x20, 0x10, 0x17, 0x44, 0x27, 0x25, 0x05, 0x15,
-+ 0x15, 0x25, 0x27, 0x4a, 0x57, 0x40, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0xc8, 0x78, 0xf0, 0x50, 0xf0,
-+ 0x50, 0xf0, 0xf8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x22, 0x1f, 0x12, 0x47, 0x20, 0x3f, 0x07, 0x1a,
-+ 0x1e, 0x2f, 0x28, 0x4e, 0x4a, 0x52, 0x00, 0x00,
-+ 0x20, 0xfc, 0xa0, 0xf0, 0x90, 0xfc, 0xf0, 0xa8,
-+ 0xb8, 0xf8, 0x88, 0xb8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x20, 0x1f, 0x12, 0x43, 0x2f, 0x29, 0x09, 0x1f,
-+ 0x1b, 0x23, 0x23, 0x43, 0x43, 0x4d, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0x24, 0xfc, 0x6c, 0xfc, 0x6c,
-+ 0xb4, 0x6c, 0xfc, 0x6c, 0xb4, 0x2c, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x0f, 0x1b,
-+ 0x1b, 0x2a, 0x2b, 0x49, 0x4e, 0x48, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0x48, 0xf8, 0xf8, 0xe8,
-+ 0xe8, 0xa8, 0xe8, 0xc8, 0xb8, 0x98, 0x00, 0x00,
-+ 0x22, 0x12, 0x13, 0x44, 0x27, 0x28, 0x0f, 0x1b,
-+ 0x1b, 0x2f, 0x24, 0x44, 0x4b, 0x52, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xa0, 0xfc, 0x48, 0xe8, 0x68,
-+ 0x68, 0xd0, 0x90, 0xa8, 0x68, 0x44, 0x00, 0x00,
-+ 0x20, 0x1f, 0x10, 0x4f, 0x2d, 0x2f, 0x09, 0x1f,
-+ 0x19, 0x2f, 0x2b, 0x4a, 0x53, 0x6c, 0x00, 0x00,
-+ 0x00, 0x7c, 0x00, 0x78, 0xe8, 0xfc, 0x40, 0xf8,
-+ 0x48, 0xf8, 0xc8, 0x70, 0xc4, 0x3c, 0x00, 0x00,
-+ 0x24, 0x17, 0x1a, 0x44, 0x2e, 0x25, 0x0f, 0x1d,
-+ 0x17, 0x20, 0x27, 0x47, 0x48, 0x40, 0x00, 0x00,
-+ 0xc8, 0xec, 0x14, 0xc8, 0xdc, 0xe8, 0x3c, 0xec,
-+ 0xf0, 0x10, 0xf0, 0xf8, 0x08, 0xf0, 0x00, 0x00,
-+ 0x01, 0x03, 0x0d, 0x34, 0x02, 0x07, 0x79, 0x09,
-+ 0x09, 0x11, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xa0, 0xc0, 0x00, 0x08, 0x08,
-+ 0x10, 0x20, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x49,
-+ 0x08, 0x0c, 0x12, 0x12, 0x21, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x2c,
-+ 0x68, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x16, 0x36, 0x3a, 0x32, 0x52,
-+ 0x12, 0x1a, 0x16, 0x26, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x16, 0x36, 0x3b, 0x32, 0x52,
-+ 0x12, 0x1a, 0x16, 0x26, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xb8, 0x38, 0x18, 0xe8,
-+ 0xa8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x0a, 0x2d, 0x29, 0x2a, 0x48,
-+ 0x08, 0x0c, 0x12, 0x12, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x78, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x0a, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68,
-+ 0x98, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x0a, 0x2d, 0x29, 0x2b, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48,
-+ 0x68, 0x98, 0x98, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x11, 0x12,
-+ 0x14, 0x10, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50, 0x48,
-+ 0x44, 0x40, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x0f, 0x00, 0x01, 0x3f, 0x05, 0x09, 0x11,
-+ 0x63, 0x1f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x88, 0x48, 0x50, 0x20, 0x10,
-+ 0x0c, 0xf0, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2d, 0x28, 0x48,
-+ 0x0b, 0x0c, 0x12, 0x12, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x50, 0x20, 0xd8,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x09, 0x09, 0x7f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x1a, 0x15, 0x24, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x00, 0xf8, 0x48, 0x28, 0x08, 0x70, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x0b, 0x2e, 0x28, 0x2f, 0x4b,
-+ 0x08, 0x0d, 0x12, 0x13, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0xf8,
-+ 0x40, 0xf0, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x47, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x20,
-+ 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x0b, 0x2a, 0x2c, 0x2b, 0x48,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x16, 0x37, 0x3a, 0x32, 0x53,
-+ 0x12, 0x1f, 0x14, 0x24, 0x21, 0x46, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0xa8, 0xb8, 0x18,
-+ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x2b, 0x29, 0x29, 0x2b, 0x22,
-+ 0x3f, 0x20, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x40, 0x44,
-+ 0x44, 0x3c, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x2f, 0x2a, 0x2f, 0x29, 0x29, 0x2f, 0x2a,
-+ 0x2f, 0x48, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x78, 0x48, 0x40, 0x44,
-+ 0xc4, 0x3c, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x27, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x24, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28, 0xe8,
-+ 0x28, 0x08, 0x30, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2c, 0x55, 0x22, 0x3f, 0x20, 0x5f,
-+ 0x02, 0x02, 0x1f, 0x02, 0x02, 0x02, 0x00, 0x00,
-+ 0x20, 0xa8, 0xb0, 0x50, 0x88, 0xfc, 0x08, 0xf0,
-+ 0x10, 0x10, 0xd4, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x48,
-+ 0x0b, 0x08, 0x15, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x0b, 0x2a, 0x2d, 0x28, 0x4b,
-+ 0x08, 0x0c, 0x12, 0x11, 0x22, 0x45, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x04, 0xf8, 0x40, 0xfc,
-+ 0x40, 0xf8, 0xc8, 0x30, 0x70, 0x8c, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x28, 0x4b,
-+ 0x09, 0x0d, 0x16, 0x14, 0x21, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x1f, 0x15, 0x13, 0x1f,
-+ 0x01, 0x3f, 0x01, 0x7f, 0x24, 0x42, 0x00, 0x00,
-+ 0x30, 0xc0, 0x00, 0xfc, 0xf0, 0x50, 0x90, 0xf0,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x88, 0x44, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x17, 0x37, 0x3b, 0x32, 0x53,
-+ 0x10, 0x1b, 0x14, 0x27, 0x22, 0x44, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xf8, 0x58, 0xe8, 0xf8,
-+ 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0x54, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0c, 0x12, 0x12, 0x24, 0x40, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x0b, 0x2a, 0x2d, 0x29, 0x49,
-+ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x2e, 0x3f, 0x36, 0x55,
-+ 0x2d, 0x09, 0x09, 0x12, 0x0c, 0x70, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0xfc, 0x48, 0xa8, 0x28, 0x08,
-+ 0x18, 0x10, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x3e, 0x08, 0x7f, 0x08, 0x7f, 0x08, 0x0e,
-+ 0x12, 0x23, 0x4c, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x50, 0x50, 0x20,
-+ 0x50, 0x88, 0x04, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x17, 0x36, 0x3b, 0x32, 0x52,
-+ 0x12, 0x1a, 0x16, 0x26, 0x23, 0x42, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xe8, 0xa8,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x68, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x0f, 0x08, 0x0f, 0x04,
-+ 0x7f, 0x0f, 0x08, 0x0f, 0x24, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0xe0, 0x20, 0xe0, 0x40,
-+ 0xfc, 0xe0, 0x20, 0xe0, 0x88, 0x44, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x14, 0x36, 0x3f, 0x30, 0x53,
-+ 0x12, 0x1b, 0x16, 0x27, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x20, 0xe8,
-+ 0x58, 0xd0, 0x54, 0xec, 0x4c, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x17, 0x35, 0x3b, 0x31, 0x51,
-+ 0x16, 0x1b, 0x14, 0x24, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x14, 0x37, 0x3a, 0x33, 0x50,
-+ 0x13, 0x18, 0x15, 0x27, 0x21, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xc8, 0xa8, 0x28,
-+ 0xb0, 0x90, 0xd0, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x15, 0x37, 0x38, 0x31, 0x52,
-+ 0x17, 0x1a, 0x17, 0x26, 0x23, 0x42, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x48,
-+ 0xfc, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x16, 0x35, 0x3b, 0x35, 0x51,
-+ 0x11, 0x19, 0x15, 0x25, 0x22, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0,
-+ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x16, 0x37, 0x3a, 0x33, 0x52,
-+ 0x12, 0x1b, 0x17, 0x24, 0x21, 0x46, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8,
-+ 0xd8, 0x48, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x11, 0x16, 0x15, 0x14, 0x3f, 0x3c, 0x34, 0x57,
-+ 0x11, 0x1b, 0x15, 0x25, 0x21, 0x46, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xac, 0xac, 0xc4, 0xf8,
-+ 0x28, 0xa8, 0x10, 0x10, 0xa8, 0x44, 0x00, 0x00,
-+ 0x12, 0x11, 0x11, 0x14, 0x36, 0x39, 0x31, 0x57,
-+ 0x11, 0x19, 0x15, 0x25, 0x22, 0x44, 0x00, 0x00,
-+ 0x30, 0x50, 0x48, 0x84, 0xfc, 0x24, 0xf4, 0x38,
-+ 0xd8, 0x34, 0xd4, 0x10, 0xe0, 0x7c, 0x00, 0x00,
-+ 0x12, 0x11, 0x11, 0x15, 0x36, 0x39, 0x31, 0x57,
-+ 0x11, 0x19, 0x15, 0x25, 0x22, 0x44, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x48, 0x50, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x17, 0x34, 0x3b, 0x30, 0x57,
-+ 0x12, 0x1c, 0x17, 0x22, 0x22, 0x47, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xa8, 0x54, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x7a, 0x1e, 0x6c, 0x1a, 0x6a,
-+ 0x31, 0x09, 0x09, 0x12, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf4, 0x34, 0xd8, 0x34, 0xd4,
-+ 0x60, 0x10, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x10, 0x17, 0x12, 0x15, 0x36, 0x34, 0x3a, 0x53,
-+ 0x16, 0x1f, 0x17, 0x26, 0x23, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xd8, 0xa8, 0xc8, 0x20, 0xf8,
-+ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x12, 0x12, 0x15, 0x17, 0x36, 0x3d, 0x37, 0x50,
-+ 0x17, 0x10, 0x19, 0x26, 0x24, 0x40, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xac, 0xe8, 0xb4, 0xfc, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x14, 0x3f, 0x3d, 0x35, 0x55,
-+ 0x15, 0x15, 0x1f, 0x26, 0x2a, 0x57, 0x00, 0x00,
-+ 0x80, 0xf8, 0xfc, 0xc8, 0x78, 0xf0, 0x50, 0xf0,
-+ 0x50, 0xf0, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00,
-+ 0x10, 0x17, 0x14, 0x1f, 0x3c, 0x37, 0x37, 0x55,
-+ 0x15, 0x15, 0x1d, 0x2c, 0x27, 0x44, 0x00, 0x00,
-+ 0x00, 0xbc, 0xa4, 0xbc, 0xa4, 0xfc, 0xfc, 0xf4,
-+ 0x54, 0xf4, 0xf4, 0xe4, 0x54, 0x4c, 0x00, 0x00,
-+ 0x0f, 0x15, 0x1f, 0x1e, 0x17, 0x3f, 0x24, 0x7f,
-+ 0x0e, 0x35, 0x7f, 0x15, 0x6a, 0x1c, 0x00, 0x00,
-+ 0xf0, 0xd0, 0xf0, 0xf0, 0xd0, 0xfc, 0x28, 0xfc,
-+ 0x70, 0xac, 0xfc, 0x30, 0xcc, 0x70, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x11, 0x21, 0x5f, 0x01, 0x7f,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x30, 0xe0, 0x10, 0x08, 0x08, 0xf0, 0x10, 0xfc,
-+ 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x06, 0x3a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-+ 0x2a, 0x29, 0x29, 0x28, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x80,
-+ 0x84, 0x84, 0x7c, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x10, 0x2f, 0x42, 0x7f, 0x04,
-+ 0x07, 0x0a, 0x09, 0x10, 0x23, 0x5c, 0x00, 0x00,
-+ 0x30, 0xe0, 0x10, 0x88, 0xf8, 0x00, 0xfc, 0x00,
-+ 0xf0, 0x20, 0x40, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x11, 0x2f, 0x48, 0x0f, 0x08,
-+ 0x08, 0x0f, 0x15, 0x1a, 0x2a, 0x50, 0x00, 0x00,
-+ 0x30, 0xe0, 0x10, 0x08, 0xe8, 0x20, 0xf0, 0x10,
-+ 0x10, 0xfc, 0x24, 0x94, 0x04, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x01, 0x06, 0x38, 0x04, 0x04,
-+ 0x02, 0x02, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x20, 0x40, 0x80, 0x60, 0x10, 0x40, 0x40, 0x40,
-+ 0x80, 0x80, 0x00, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x05, 0x65, 0x19, 0x09, 0x15, 0x21, 0x45,
-+ 0x25, 0x19, 0x09, 0x15, 0x27, 0x40, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, 0x3f,
-+ 0x02, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x04, 0x7c,
-+ 0x15, 0x15, 0x16, 0x24, 0x24, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0xe0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x28, 0x2f, 0x29, 0x3b, 0x2c, 0x0f, 0x78,
-+ 0x2b, 0x2a, 0x2a, 0x2a, 0x2b, 0x4a, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x58, 0xe4, 0xfc, 0x00,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x24, 0x24, 0x24, 0x25, 0x3e, 0x20, 0x21, 0x3c,
-+ 0x24, 0x27, 0x24, 0x24, 0x25, 0x44, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54,
-+ 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x04, 0x00, 0x00,
-+ 0x28, 0x2f, 0x29, 0x2b, 0x3e, 0x23, 0x23, 0x39,
-+ 0x29, 0x29, 0x29, 0x29, 0x29, 0x4e, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0xf8, 0xa8, 0x38, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x29, 0x29, 0x3f, 0x29, 0x29, 0x49,
-+ 0x0f, 0x79, 0x0b, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0xd0, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00,
-+ 0x08, 0x0b, 0x28, 0x28, 0x3f, 0x28, 0x28, 0x4b,
-+ 0x0c, 0x79, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x1d, 0x1a, 0x2a, 0x49,
-+ 0x11, 0x1f, 0x21, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0xa8, 0x28, 0x48, 0x88, 0x30,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x3c, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49,
-+ 0x11, 0x1f, 0x21, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x08, 0x18,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x09, 0x0f, 0x11, 0x3f, 0x01, 0x09, 0x28,
-+ 0x3e, 0x28, 0x4f, 0x79, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x20, 0xa0,
-+ 0xf8, 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x2b, 0x28, 0x3d, 0x29, 0x29, 0x48,
-+ 0x0f, 0x7a, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2c, 0x49, 0x14, 0x22, 0x3f, 0x29,
-+ 0x4f, 0x11, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x20, 0xa8, 0xb0, 0x20, 0x50, 0x88, 0xfc, 0x08,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x29, 0x2b, 0x3e, 0x2b, 0x2b, 0x49,
-+ 0x0d, 0x79, 0x09, 0x09, 0x09, 0x0e, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0xf8, 0xb8, 0x18, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x08, 0x0b, 0x28, 0x29, 0x3f, 0x29, 0x28, 0x4b,
-+ 0x0d, 0x7a, 0x0b, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x90, 0xfc, 0x40, 0xf8, 0xfc, 0xe8, 0xa4, 0xfc,
-+ 0xe8, 0xa8, 0xd8, 0xd4, 0x6c, 0xc4, 0x00, 0x00,
-+ 0x04, 0x44, 0x28, 0x10, 0x37, 0x48, 0x08, 0x18,
-+ 0x28, 0x49, 0x09, 0x0a, 0x34, 0x18, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0xfc, 0xc0, 0xc0, 0xc0,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x04, 0x44, 0x28, 0x10, 0x37, 0x48, 0x08, 0x18,
-+ 0x28, 0x49, 0x0a, 0x0c, 0x30, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x60, 0x60, 0xa0,
-+ 0xa0, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x47, 0x28, 0x10, 0x30, 0x48, 0x0b, 0x18,
-+ 0x28, 0x48, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x48, 0x30, 0x13, 0x32, 0x4a, 0x0a, 0x1b,
-+ 0x2a, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x48, 0x30, 0x11, 0x31, 0x49, 0x0a, 0x1a,
-+ 0x28, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x48, 0x48, 0x50, 0x60, 0x40, 0x60,
-+ 0x60, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x4a, 0x0a, 0x1b,
-+ 0x2a, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x44, 0x2b, 0x10, 0x30, 0x4b, 0x0a, 0x1a,
-+ 0x2b, 0x4a, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa0,
-+ 0xfc, 0xa4, 0xa4, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x48, 0x31, 0x11, 0x33, 0x4c, 0x08, 0x19,
-+ 0x2f, 0x4a, 0x0a, 0x0a, 0x33, 0x12, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xc0, 0xc0, 0x30,
-+ 0xfc, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19,
-+ 0x29, 0x49, 0x09, 0x09, 0x31, 0x17, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4,
-+ 0x44, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x37, 0x11, 0x31, 0x4b, 0x0d, 0x18,
-+ 0x28, 0x48, 0x08, 0x09, 0x32, 0x1c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x08, 0x14, 0x14, 0xa0,
-+ 0xa0, 0x40, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x48, 0x30, 0x17, 0x31, 0x49, 0x09, 0x1a,
-+ 0x2c, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x50, 0xe8,
-+ 0x44, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x48, 0x0b, 0x1a,
-+ 0x2b, 0x4a, 0x0b, 0x0a, 0x32, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x15, 0x16, 0x34, 0x57, 0x14,
-+ 0x14, 0x17, 0x14, 0x14, 0x11, 0x16, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x90, 0x60, 0xe0, 0x1c, 0x50,
-+ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x04, 0x44, 0x2b, 0x10, 0x30, 0x49, 0x0f, 0x18,
-+ 0x29, 0x49, 0x09, 0x09, 0x30, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xa0, 0x10, 0xfc, 0x08,
-+ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x4a, 0x0a, 0x1b,
-+ 0x28, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00,
-+ 0x80, 0x38, 0x08, 0x08, 0xb8, 0x08, 0x08, 0xf8,
-+ 0xa0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x4f, 0x30, 0x13, 0x30, 0x4f, 0x08, 0x1b,
-+ 0x2a, 0x4a, 0x0b, 0x0a, 0x32, 0x12, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x49, 0x31, 0x11, 0x31, 0x49, 0x09, 0x18,
-+ 0x2b, 0x4a, 0x0b, 0x0a, 0x33, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x48, 0x37, 0x11, 0x31, 0x4a, 0x0c, 0x18,
-+ 0x2f, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x10, 0xa8, 0x44, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x09, 0x49, 0x31, 0x12, 0x33, 0x4e, 0x0a, 0x1a,
-+ 0x2b, 0x4b, 0x0a, 0x0a, 0x32, 0x13, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xfc, 0x80, 0xf8, 0xa0,
-+ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x4a, 0x32, 0x13, 0x30, 0x4f, 0x08, 0x1b,
-+ 0x2a, 0x4a, 0x0a, 0x0a, 0x32, 0x12, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x13, 0x32, 0x4b, 0x09, 0x19,
-+ 0x2a, 0x4d, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40, 0xf8,
-+ 0x40, 0xf0, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x13, 0x32, 0x4b, 0x08, 0x1f,
-+ 0x29, 0x49, 0x09, 0x09, 0x31, 0x16, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc,
-+ 0x48, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x12, 0x32, 0x4f, 0x0c, 0x1b,
-+ 0x2a, 0x4b, 0x0a, 0x0b, 0x32, 0x12, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0xfc, 0x08, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x24, 0x24, 0x3f, 0x25, 0x04, 0x7f, 0x25, 0x24,
-+ 0x45, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0xfc, 0x10, 0xb0,
-+ 0x20, 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x09, 0x4f, 0x31, 0x13, 0x32, 0x4b, 0x0a, 0x1b,
-+ 0x28, 0x4f, 0x08, 0x08, 0x31, 0x16, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2e, 0x2c, 0x3f, 0x04, 0x3f,
-+ 0x04, 0x07, 0x78, 0x15, 0x2a, 0x40, 0x00, 0x00,
-+ 0x10, 0x98, 0x94, 0x94, 0x90, 0xfc, 0x10, 0x90,
-+ 0x10, 0x90, 0x28, 0x28, 0xc4, 0x84, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x25, 0x35, 0x57, 0x15, 0x17,
-+ 0x37, 0x37, 0x57, 0x19, 0x1a, 0x34, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0x50, 0x90, 0xfc, 0x34, 0x58,
-+ 0x58, 0xd0, 0x30, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x48, 0x31, 0x16, 0x33, 0x4b, 0x0a, 0x1b,
-+ 0x29, 0x49, 0x09, 0x09, 0x31, 0x11, 0x00, 0x00,
-+ 0x40, 0xa0, 0xf0, 0x0c, 0xf8, 0x58, 0xe8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x13, 0x31, 0x49, 0x0a, 0x1f,
-+ 0x2a, 0x4b, 0x08, 0x08, 0x37, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x00, 0xf8, 0x88, 0xe8,
-+ 0xa8, 0xe8, 0xa8, 0xf8, 0x18, 0x30, 0x00, 0x00,
-+ 0x08, 0x4b, 0x32, 0x16, 0x32, 0x4c, 0x0b, 0x1a,
-+ 0x2b, 0x48, 0x0f, 0x08, 0x30, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x70, 0xf8, 0xa8,
-+ 0xf8, 0x00, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x77, 0x55, 0x77, 0x3f, 0x25, 0x3f, 0x25, 0x3f,
-+ 0x7f, 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0x24, 0x20, 0xfc, 0x20, 0x20,
-+ 0xa0, 0x30, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x0a, 0x4c, 0x32, 0x13, 0x32, 0x4b, 0x0b, 0x1b,
-+ 0x2a, 0x4b, 0x0a, 0x0a, 0x33, 0x16, 0x00, 0x00,
-+ 0x48, 0x90, 0x48, 0xf8, 0xe8, 0xa8, 0xf8, 0x68,
-+ 0xd8, 0x68, 0xd8, 0x4c, 0x6c, 0x44, 0x00, 0x00,
-+ 0x04, 0x07, 0x3f, 0x2d, 0x37, 0x3f, 0x2f, 0x29,
-+ 0x2f, 0x3f, 0x36, 0x3f, 0x32, 0x52, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa4, 0x24, 0x20, 0xfc, 0x20, 0x20,
-+ 0x30, 0xb0, 0xd0, 0xc8, 0x88, 0x84, 0x00, 0x00,
-+ 0x12, 0x52, 0x2f, 0x22, 0x3f, 0x5a, 0x1a, 0x3f,
-+ 0x32, 0x57, 0x16, 0x1a, 0x12, 0x62, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0x48, 0xf8, 0xc8, 0xf8, 0xc8,
-+ 0x78, 0x48, 0xf8, 0x30, 0x48, 0x88, 0x00, 0x00,
-+ 0x02, 0x02, 0x7a, 0x12, 0x1f, 0x12, 0x7a, 0x12,
-+ 0x12, 0x12, 0x1c, 0x64, 0x08, 0x13, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x7d, 0x12, 0x12, 0x17, 0x7a, 0x12,
-+ 0x12, 0x12, 0x1a, 0x62, 0x02, 0x02, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0x24, 0x3c, 0xe0, 0x20, 0x20,
-+ 0x20, 0x10, 0x14, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7d, 0x11, 0x12, 0x14, 0x7c, 0x11,
-+ 0x11, 0x11, 0x1a, 0x64, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0xfc, 0x48, 0x50, 0x40, 0x60,
-+ 0x50, 0x48, 0x44, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x12, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x1a, 0x64, 0x05, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x11, 0x11, 0x11, 0x7d, 0x11,
-+ 0x11, 0x11, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x07, 0x7d, 0x11, 0x11, 0x11, 0x7d, 0x11,
-+ 0x11, 0x11, 0x19, 0x67, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x07, 0x7c, 0x17, 0x14, 0x14, 0x7f, 0x16,
-+ 0x16, 0x16, 0x1e, 0x66, 0x08, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0x90, 0xf0, 0xb0,
-+ 0xb0, 0xb0, 0xb4, 0xec, 0x8c, 0x84, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x11, 0x13, 0x14, 0x7c, 0x11,
-+ 0x17, 0x12, 0x1a, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xc0, 0xc0, 0x30,
-+ 0xfc, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x07, 0x7c, 0x13, 0x12, 0x12, 0x7f, 0x10,
-+ 0x13, 0x12, 0x1f, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xb8, 0xa8, 0xa8, 0xb8, 0xa0,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x7d, 0x11, 0x11, 0x11, 0x7d, 0x11,
-+ 0x11, 0x11, 0x1d, 0x61, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0x08, 0xf8,
-+ 0x24, 0x24, 0x18, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x14, 0x17, 0x14, 0x7c, 0x17,
-+ 0x14, 0x15, 0x1c, 0x65, 0x06, 0x18, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xe8,
-+ 0x64, 0xa4, 0xa4, 0x78, 0x60, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x13, 0x12, 0x12, 0x7f, 0x12,
-+ 0x12, 0x12, 0x1c, 0x64, 0x09, 0x12, 0x00, 0x00,
-+ 0x40, 0x78, 0x40, 0xfc, 0x48, 0x78, 0xc8, 0x38,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x03, 0x7c, 0x10, 0x11, 0x10, 0x7c, 0x17,
-+ 0x10, 0x11, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x17, 0x10, 0x10, 0x7f, 0x10,
-+ 0x10, 0x11, 0x1f, 0x61, 0x02, 0x04, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0,
-+ 0xa0, 0xbc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x02, 0x01, 0x7d, 0x14, 0x12, 0x12, 0x7d, 0x11,
-+ 0x11, 0x12, 0x1e, 0x64, 0x05, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x30, 0x48, 0x78, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x07, 0x7c, 0x14, 0x17, 0x14, 0x7c, 0x17,
-+ 0x14, 0x14, 0x1f, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x88, 0x00, 0xf8,
-+ 0x48, 0x28, 0xb0, 0x10, 0x28, 0xc4, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x17, 0x10, 0x13, 0x7e, 0x13,
-+ 0x12, 0x13, 0x18, 0x67, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7e, 0x08, 0x3e, 0x08, 0x7e, 0x02, 0x01,
-+ 0x05, 0x14, 0x14, 0x25, 0x46, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x20,
-+ 0x50, 0x48, 0x84, 0x14, 0x10, 0xf0, 0x00, 0x00,
-+ 0x02, 0x02, 0x7c, 0x12, 0x12, 0x10, 0x7f, 0x12,
-+ 0x13, 0x12, 0x1a, 0x63, 0x03, 0x02, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0x48, 0x48, 0x80, 0xf8, 0x28,
-+ 0xa8, 0x48, 0xa8, 0x18, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x12, 0x12, 0x12, 0x7d, 0x11,
-+ 0x11, 0x11, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xe8, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x00, 0x7c, 0x11, 0x13, 0x14, 0x7f, 0x14,
-+ 0x16, 0x15, 0x1e, 0x65, 0x04, 0x05, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x08, 0x0a, 0x2a, 0x2c, 0x55, 0x22, 0x3f, 0x20,
-+ 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x28, 0xa8, 0xb0, 0x50, 0x88, 0xfc, 0x08,
-+ 0xf8, 0x00, 0xf0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x12, 0x13, 0x12, 0x7e, 0x13,
-+ 0x10, 0x10, 0x1d, 0x61, 0x02, 0x0c, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xd0, 0xd0, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x01, 0x7d, 0x12, 0x17, 0x12, 0x7f, 0x12,
-+ 0x13, 0x12, 0x1b, 0x60, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0xfc, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0xb0, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x13, 0x12, 0x13, 0x7e, 0x13,
-+ 0x12, 0x10, 0x1e, 0x65, 0x09, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x24, 0x94, 0x54, 0x44, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0x03, 0x7e, 0x11, 0x11, 0x10, 0x7f, 0x10,
-+ 0x17, 0x12, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x38, 0xc8, 0x48, 0x50, 0x20, 0x40, 0xf8, 0x40,
-+ 0xfc, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x07, 0x7d, 0x11, 0x13, 0x12, 0x7f, 0x10,
-+ 0x13, 0x10, 0x1d, 0x60, 0x07, 0x00, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xf0, 0xf8, 0x48, 0xf8, 0x40,
-+ 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x7d, 0x10, 0x17, 0x11, 0x7d, 0x11,
-+ 0x11, 0x15, 0x18, 0x67, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x02, 0x7d, 0x17, 0x11, 0x10, 0x7f, 0x10,
-+ 0x11, 0x10, 0x1f, 0x60, 0x01, 0x06, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0x60, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3e, 0x21, 0x3e, 0x53, 0x1e,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x00, 0xf0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x7e, 0x13, 0x12, 0x13, 0x7d, 0x11,
-+ 0x11, 0x15, 0x19, 0x67, 0x00, 0x07, 0x00, 0x00,
-+ 0x80, 0xf0, 0x20, 0xf8, 0xa8, 0xf8, 0x10, 0xf0,
-+ 0xf0, 0x10, 0xf8, 0x10, 0xe0, 0x1c, 0x00, 0x00,
-+ 0x01, 0x07, 0x7a, 0x12, 0x17, 0x10, 0x7f, 0x14,
-+ 0x17, 0x14, 0x1f, 0x64, 0x04, 0x05, 0x00, 0x00,
-+ 0x20, 0xfc, 0xa0, 0xb8, 0xc8, 0x38, 0xa0, 0xb8,
-+ 0xa0, 0xb8, 0xa0, 0xb8, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x00, 0x07, 0x7c, 0x17, 0x17, 0x14, 0x7f, 0x13,
-+ 0x14, 0x17, 0x18, 0x61, 0x00, 0x07, 0x00, 0x00,
-+ 0x00, 0xbc, 0xa4, 0xbc, 0xbc, 0xa4, 0xbc, 0x28,
-+ 0xc4, 0xfc, 0x90, 0xd0, 0x78, 0x84, 0x00, 0x00,
-+ 0x00, 0x04, 0x7a, 0x12, 0x10, 0x10, 0x7f, 0x11,
-+ 0x11, 0x13, 0x1c, 0x60, 0x01, 0x0e, 0x00, 0x00,
-+ 0x84, 0x44, 0x48, 0x10, 0x80, 0x80, 0xfc, 0x10,
-+ 0x10, 0xa0, 0x60, 0x50, 0x88, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x19, 0x25, 0x5f, 0x01, 0x7f,
-+ 0x11, 0x1d, 0x25, 0x06, 0x06, 0x1d, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x50, 0x70, 0x58, 0x78, 0xc4, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x2b, 0x2b, 0x2b, 0x7f, 0x13,
-+ 0x1f, 0x73, 0x15, 0x15, 0x2f, 0x48, 0x00, 0x00,
-+ 0x50, 0x90, 0xfc, 0xa8, 0xa8, 0xa8, 0xfc, 0x90,
-+ 0x90, 0x7c, 0xd0, 0xd0, 0x30, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x13, 0x12, 0x1a,
-+ 0x16, 0x16, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x12, 0x1b, 0x16,
-+ 0x16, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00,
-+ 0x07, 0x04, 0x19, 0x61, 0x02, 0x1f, 0x00, 0x7f,
-+ 0x04, 0x07, 0x05, 0x08, 0x0f, 0x70, 0x00, 0x00,
-+ 0xc0, 0x40, 0x30, 0x8c, 0x60, 0x90, 0x00, 0xfc,
-+ 0x00, 0xe0, 0x20, 0xa4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x10, 0x1e, 0x12, 0x1a, 0x16,
-+ 0x16, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x20, 0x2c, 0xf0, 0x20, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0x20, 0x28, 0x1c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x13, 0x1a, 0x16,
-+ 0x16, 0x12, 0x13, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x48, 0x88, 0xfc, 0x48, 0x48,
-+ 0x48, 0x88, 0x30, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x10, 0x1e, 0x13, 0x1a, 0x16,
-+ 0x17, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x78, 0xc0, 0x40, 0x7c,
-+ 0xc0, 0x40, 0x44, 0x3c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x12, 0x1a, 0x16,
-+ 0x16, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0x88, 0xf8, 0x88, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x01, 0x79, 0x02, 0x1c, 0x61, 0x06, 0x7f,
-+ 0x08, 0x0f, 0x0a, 0x11, 0x1f, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0xd0, 0x20, 0x18, 0xfc,
-+ 0x00, 0xe0, 0x20, 0x24, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x14, 0x7f, 0x55, 0x55, 0x7f, 0x49,
-+ 0x08, 0x7f, 0x08, 0x08, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58,
-+ 0x58, 0x48, 0x48, 0x5c, 0x6c, 0x84, 0x00, 0x00,
-+ 0x02, 0x3c, 0x08, 0x7e, 0x1d, 0x2a, 0x48, 0x7f,
-+ 0x04, 0x07, 0x05, 0x08, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x50, 0x48, 0x84, 0xfc,
-+ 0x00, 0xe0, 0x20, 0xa4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x21, 0x21, 0x3d, 0x25, 0x35, 0x2d,
-+ 0x2d, 0x26, 0x26, 0x2d, 0x34, 0x63, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x40, 0x5e, 0x52, 0x5e, 0x40, 0x7f,
-+ 0x6d, 0x6d, 0x7f, 0x40, 0x7f, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58,
-+ 0x58, 0x48, 0x4c, 0x5c, 0x64, 0x84, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x0a,
-+ 0x7f, 0x04, 0x7f, 0x24, 0x14, 0x0d, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58,
-+ 0x58, 0x48, 0x4c, 0x5c, 0x64, 0x84, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x3f, 0x20,
-+ 0x5f, 0x04, 0x3f, 0x09, 0x0f, 0x70, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0xfc, 0x08,
-+ 0xf0, 0x00, 0xe0, 0x24, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x01, 0x7f, 0x08, 0x32, 0x0d, 0x0a, 0x7e, 0x04,
-+ 0x08, 0x3f, 0x04, 0x3f, 0x09, 0x7e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0xfc, 0x90, 0xf8, 0xf8, 0x90,
-+ 0xfc, 0xf8, 0x00, 0xe4, 0x24, 0x9c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3e, 0x52, 0x1e,
-+ 0x7f, 0x04, 0x07, 0x09, 0x0f, 0x78, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x00, 0xe0, 0x24, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08,
-+ 0x7f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xfc, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2b, 0x3e,
-+ 0x6a, 0x28, 0x11, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0xf8,
-+ 0x20, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x03, 0x01, 0x3f, 0x21, 0x3f,
-+ 0x21, 0x21, 0x3f, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x60, 0x80, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x00,
-+ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x00,
-+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x21, 0x11, 0x10, 0x00, 0x3f, 0x21, 0x21,
-+ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x20, 0x40, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x54, 0x54, 0x55, 0x7e, 0x54,
-+ 0x54, 0x54, 0x7d, 0x45, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xa8, 0xa4,
-+ 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x57, 0x54, 0x54, 0x7c, 0x54,
-+ 0x57, 0x54, 0x7d, 0x45, 0x02, 0x04, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xfc, 0x90, 0x90, 0x90, 0x90,
-+ 0xfc, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x57, 0x54, 0x54, 0x7c, 0x57,
-+ 0x54, 0x54, 0x7c, 0x45, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x54, 0x55, 0x56, 0x7c, 0x57,
-+ 0x54, 0x54, 0x7f, 0x44, 0x00, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x28, 0xc4, 0x10,
-+ 0x20, 0xc8, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x2a, 0x2a,
-+ 0x3e, 0x2a, 0x2a, 0x2a, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x30, 0x48, 0x48, 0x7c, 0x84, 0x04, 0x00, 0x00,
-+ 0x02, 0x02, 0x04, 0x3f, 0x01, 0x7f, 0x04, 0x18,
-+ 0x7f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xc0, 0x70, 0x88, 0x00, 0xfc, 0x40, 0x30,
-+ 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x57, 0x54, 0x54, 0x7d, 0x55,
-+ 0x57, 0x55, 0x7d, 0x45, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xc0, 0xc8, 0x48, 0x50,
-+ 0x20, 0x20, 0x10, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x54, 0x54, 0x57, 0x7c, 0x54,
-+ 0x57, 0x55, 0x7c, 0x44, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10,
-+ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x02, 0x07,
-+ 0x3c, 0x03, 0x7f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf0,
-+ 0x40, 0x80, 0xfc, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x1f, 0x7f, 0x01, 0x1f, 0x0f, 0x7f, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0x10, 0xf0, 0xe0, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x55, 0x57, 0x54, 0x7c, 0x57,
-+ 0x54, 0x55, 0x7d, 0x46, 0x04, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0x40, 0xfc,
-+ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x54, 0x54, 0x55, 0x7f, 0x54,
-+ 0x55, 0x55, 0x7d, 0x45, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xa0, 0x10, 0xfc, 0x08,
-+ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x00,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x05, 0x05, 0x3d, 0x21, 0x3d, 0x27,
-+ 0x15, 0x3d, 0x15, 0x1d, 0x65, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc, 0x00, 0x00,
-+ 0x00, 0x03, 0x7c, 0x55, 0x57, 0x55, 0x7c, 0x55,
-+ 0x57, 0x54, 0x7f, 0x46, 0x03, 0x02, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0,
-+ 0xfc, 0x08, 0xfc, 0xa8, 0x98, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x54, 0x55, 0x54, 0x7f, 0x54,
-+ 0x57, 0x55, 0x7d, 0x46, 0x04, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x0f, 0x09, 0x0f, 0x0f, 0x3e, 0x2a, 0x3e, 0x3e,
-+ 0x3f, 0x3f, 0x4f, 0x0f, 0x08, 0x7f, 0x00, 0x00,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0xa8, 0xf8, 0xf8,
-+ 0xfc, 0xe8, 0xe0, 0xe0, 0x20, 0xfc, 0x00, 0x00,
-+ 0x0f, 0x09, 0x0f, 0x0f, 0x3e, 0x2a, 0x3e, 0x3f,
-+ 0x3f, 0x22, 0x47, 0x06, 0x09, 0x7f, 0x00, 0x00,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0xa8, 0xf8, 0xf8,
-+ 0xfc, 0x08, 0xe0, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x0f, 0x09, 0x0f, 0x0f, 0x38, 0x0e, 0x30, 0x3f,
-+ 0x2f, 0x4f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0x38, 0xe0, 0x18, 0xfc,
-+ 0xe8, 0xe0, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18,
-+ 0x28, 0x48, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x29, 0x09, 0x1a,
-+ 0x2c, 0x48, 0x10, 0x11, 0x26, 0x58, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0x80, 0xf0, 0x10, 0x20,
-+ 0x20, 0x40, 0xc0, 0x20, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2a, 0x0a, 0x1a,
-+ 0x2a, 0x4a, 0x12, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0x40, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x28, 0x09, 0x1b,
-+ 0x2d, 0x49, 0x11, 0x11, 0x22, 0x44, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xa0, 0x10, 0x28,
-+ 0x24, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18,
-+ 0x28, 0x49, 0x11, 0x12, 0x24, 0x58, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x90, 0x88, 0xfc, 0x80, 0xc0,
-+ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x4a, 0x2a, 0x2f, 0x0a, 0x1a,
-+ 0x2a, 0x4a, 0x12, 0x12, 0x24, 0x49, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xb8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x80, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2f, 0x09, 0x19,
-+ 0x29, 0x49, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x10, 0xfc, 0x10, 0x10,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18,
-+ 0x2b, 0x48, 0x10, 0x10, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xfc, 0x40, 0x90,
-+ 0x90, 0x60, 0x50, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x51, 0x31, 0x35, 0x15, 0x15,
-+ 0x35, 0x55, 0x15, 0x25, 0x27, 0x5c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x20, 0x20, 0x20, 0x24, 0xe8,
-+ 0x30, 0x20, 0x20, 0xe4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b,
-+ 0x2a, 0x4b, 0x12, 0x12, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b,
-+ 0x2a, 0x4a, 0x13, 0x10, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x29, 0x0e, 0x18,
-+ 0x2b, 0x4c, 0x10, 0x13, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x10, 0xa0, 0xc0,
-+ 0x30, 0xcc, 0x20, 0x80, 0x60, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2b, 0x0c, 0x1b,
-+ 0x2a, 0x4b, 0x12, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x70, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x0b, 0x18, 0x2b,
-+ 0x4a, 0x0f, 0x14, 0x10, 0x23, 0x4c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x40, 0xfc, 0x44, 0xb8, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x28, 0x29, 0x0f, 0x18,
-+ 0x28, 0x4b, 0x10, 0x10, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xc0, 0xa0, 0x10, 0xfc, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x28, 0x2f, 0x08, 0x1b,
-+ 0x28, 0x48, 0x1f, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x40, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x2a, 0x0a, 0x1c,
-+ 0x2a, 0x4b, 0x10, 0x10, 0x2f, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x48, 0x48, 0x90,
-+ 0x48, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x1b,
-+ 0x28, 0x49, 0x15, 0x15, 0x29, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xfc, 0x40, 0xf8,
-+ 0x40, 0x20, 0x28, 0x04, 0x14, 0xf0, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x09, 0x1e,
-+ 0x28, 0x4b, 0x12, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x60, 0xd8, 0x44,
-+ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x50, 0x37, 0x35, 0x16, 0x16,
-+ 0x35, 0x55, 0x15, 0x26, 0x24, 0x44, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x08, 0xe8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x4b, 0x28, 0x2f, 0x09, 0x1e,
-+ 0x28, 0x4f, 0x11, 0x13, 0x20, 0x47, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf0, 0x40, 0xfc, 0xf0, 0x4c,
-+ 0xc0, 0xfc, 0x20, 0xe0, 0xd0, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x14,
-+ 0x35, 0x55, 0x15, 0x24, 0x27, 0x44, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xe8, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x29, 0x09, 0x1b,
-+ 0x2c, 0x48, 0x1f, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x40, 0xfc, 0x10, 0x10, 0x28,
-+ 0xc4, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2a, 0x2a, 0x0c, 0x19,
-+ 0x2e, 0x4a, 0x12, 0x14, 0x23, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x48, 0x48, 0x50, 0xb0, 0x4c,
-+ 0x48, 0x48, 0x50, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0b, 0x1a,
-+ 0x2b, 0x48, 0x11, 0x17, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x80, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2f, 0x09, 0x1b,
-+ 0x2b, 0x4b, 0x13, 0x15, 0x29, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x10, 0xfc, 0x10, 0xb8,
-+ 0xb8, 0xb8, 0xdc, 0x5c, 0x90, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2f, 0x09, 0x1b,
-+ 0x2b, 0x4b, 0x15, 0x15, 0x29, 0x41, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x10, 0x10, 0xfc, 0x10, 0xb8,
-+ 0xb8, 0x78, 0x54, 0x94, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x17, 0x36,
-+ 0x56, 0x17, 0x14, 0x28, 0x2f, 0x50, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf0, 0x70, 0x90, 0xf0, 0xb0,
-+ 0xb0, 0xf0, 0xac, 0xfc, 0x14, 0x04, 0x00, 0x00,
-+ 0x00, 0x0f, 0x4b, 0x2a, 0x2b, 0x0a, 0x1b, 0x2f,
-+ 0x4a, 0x0b, 0x15, 0x19, 0x22, 0x45, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x4b, 0x29, 0x2b, 0x0c, 0x1f,
-+ 0x2e, 0x4d, 0x16, 0x15, 0x24, 0x45, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xc0, 0x20, 0xf0, 0x0c, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b, 0x2b,
-+ 0x48, 0x0b, 0x12, 0x12, 0x3f, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf0, 0x90, 0xd0, 0x30, 0xf0,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x28, 0x2b, 0x0a, 0x1b, 0x2a,
-+ 0x4a, 0x0a, 0x17, 0x14, 0x28, 0x50, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0x78, 0xfc, 0x78, 0xc8, 0x38,
-+ 0xf8, 0x80, 0xfc, 0x80, 0xf8, 0x80, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x0f, 0x19, 0x2f,
-+ 0x49, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0x5c, 0x40, 0xbc, 0x10, 0xfc,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x28, 0x29, 0x0f, 0x19, 0x29,
-+ 0x49, 0x09, 0x13, 0x13, 0x25, 0x49, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xa0, 0xf0, 0xfc, 0x10, 0xf0,
-+ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x51, 0x32, 0x37, 0x14, 0x16, 0x35,
-+ 0x5f, 0x16, 0x16, 0x26, 0x2a, 0x51, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0x38, 0xa8, 0xa8, 0xac, 0xc4,
-+ 0xf8, 0xa8, 0xa8, 0x90, 0xa8, 0xc4, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x4b, 0x2b, 0x2a, 0x0f, 0x18,
-+ 0x2b, 0x4a, 0x13, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0x78, 0x28, 0xa8, 0xd8, 0x80,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x2b, 0x28, 0x0f, 0x19, 0x29,
-+ 0x49, 0x09, 0x11, 0x17, 0x20, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x4b, 0x2a, 0x2b, 0x0a, 0x1b, 0x28,
-+ 0x4b, 0x08, 0x1f, 0x11, 0x26, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90,
-+ 0x30, 0xc8, 0xfc, 0x58, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x0f, 0x48, 0x2b, 0x2f, 0x0b, 0x18, 0x2b,
-+ 0x4b, 0x08, 0x17, 0x11, 0x20, 0x47, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0xfc, 0xf8, 0x40, 0xf8,
-+ 0xf8, 0x40, 0xfc, 0x90, 0x70, 0x88, 0x00, 0x00,
-+ 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x14, 0x37,
-+ 0x55, 0x15, 0x15, 0x25, 0x25, 0x45, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0xc8, 0xf8, 0xc8, 0xf8,
-+ 0xe8, 0x28, 0xe8, 0x28, 0xe8, 0x38, 0x00, 0x00,
-+ 0x00, 0x0f, 0x49, 0x2c, 0x2b, 0x0e, 0x1f, 0x29,
-+ 0x4f, 0x0c, 0x17, 0x11, 0x21, 0x46, 0x00, 0x00,
-+ 0x80, 0xfc, 0xd0, 0xd4, 0x24, 0x18, 0x74, 0x54,
-+ 0x9c, 0xf8, 0x48, 0x30, 0x30, 0xcc, 0x00, 0x00,
-+ 0x00, 0x0f, 0x49, 0x2d, 0x2d, 0x0a, 0x1c, 0x2f,
-+ 0x4c, 0x0f, 0x10, 0x11, 0x22, 0x4c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x54, 0xb4, 0x58, 0xa8, 0xc4, 0xfc,
-+ 0x88, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x16, 0x37,
-+ 0x56, 0x16, 0x1f, 0x2a, 0x32, 0x44, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0x68, 0xec, 0xac, 0xc4,
-+ 0xb8, 0xa8, 0xf0, 0x90, 0x68, 0x44, 0x00, 0x00,
-+ 0x00, 0x0f, 0x49, 0x2f, 0x2b, 0x0a, 0x1b, 0x2a,
-+ 0x4b, 0x0f, 0x14, 0x14, 0x27, 0x44, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0xfc, 0x54, 0x7c, 0x8c, 0x0c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x4a, 0x2a, 0x2b, 0x0a, 0x19, 0x2a,
-+ 0x4b, 0x0d, 0x1f, 0x13, 0x24, 0x48, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xfc, 0x28, 0x90, 0xfc, 0x14,
-+ 0xd8, 0x5c, 0xd0, 0x70, 0xd0, 0x8c, 0x00, 0x00,
-+ 0x00, 0x0f, 0x49, 0x2f, 0x28, 0x0b, 0x1f, 0x29,
-+ 0x4b, 0x0d, 0x11, 0x11, 0x21, 0x47, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0x40, 0xf8, 0xfc, 0x50,
-+ 0xf8, 0x14, 0xf0, 0xf8, 0x70, 0x88, 0x00, 0x00,
-+ 0x00, 0x0f, 0x4b, 0x28, 0x2f, 0x0f, 0x1b, 0x2b,
-+ 0x4e, 0x0b, 0x13, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0xf8,
-+ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x52, 0x3f, 0x32, 0x1f, 0x1a, 0x3a,
-+ 0x5f, 0x17, 0x16, 0x2a, 0x32, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0x28, 0xd8, 0xf8, 0xc8,
-+ 0xf8, 0x78, 0xc8, 0xf8, 0x28, 0xc4, 0x00, 0x00,
-+ 0x00, 0x1f, 0x51, 0x3e, 0x32, 0x12, 0x1f, 0x32,
-+ 0x57, 0x16, 0x1a, 0x32, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xf8, 0x70, 0xfc, 0xf8, 0x48,
-+ 0x78, 0xf8, 0xc8, 0x78, 0x28, 0xc4, 0x00, 0x00,
-+ 0x00, 0x1f, 0x50, 0x37, 0x37, 0x15, 0x17, 0x35,
-+ 0x57, 0x14, 0x15, 0x29, 0x2f, 0x50, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xfc, 0xb8, 0x10, 0xfc, 0x98,
-+ 0x74, 0x40, 0x78, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x52, 0x37, 0x39, 0x1f, 0x1a, 0x3f,
-+ 0x5a, 0x1f, 0x15, 0x2a, 0x2a, 0x50, 0x00, 0x00,
-+ 0x80, 0xfc, 0x48, 0xa8, 0x30, 0xfc, 0x90, 0xb8,
-+ 0x90, 0xfc, 0x90, 0xd0, 0xd0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x55, 0x3a, 0x35, 0x17, 0x14, 0x37,
-+ 0x5f, 0x1a, 0x1f, 0x28, 0x28, 0x47, 0x00, 0x00,
-+ 0x80, 0xfc, 0x68, 0xa8, 0x7c, 0xa8, 0xe8, 0xbc,
-+ 0xa8, 0xbc, 0xa8, 0x28, 0xbc, 0xa0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x54, 0x37, 0x34, 0x13, 0x1b, 0x3b,
-+ 0x5b, 0x1a, 0x1b, 0x2f, 0x22, 0x4c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0x7c, 0x90, 0xb8, 0xa8, 0xb8,
-+ 0xa8, 0xb8, 0xa8, 0xf8, 0x98, 0x64, 0x00, 0x00,
-+ 0x00, 0x00, 0x0f, 0x01, 0x22, 0x12, 0x0c, 0x08,
-+ 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x20, 0x20, 0xc8, 0x88, 0x50, 0x20,
-+ 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x1e, 0x02, 0x24, 0x14, 0x08, 0x1f, 0x21, 0x41,
-+ 0x3f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x90, 0x90, 0x64, 0x44, 0x28, 0xf0, 0x08, 0x04,
-+ 0xf8, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x1e, 0x02, 0x24, 0x18, 0x1c, 0x64, 0x04, 0x3d,
-+ 0x23, 0x3c, 0x24, 0x04, 0x08, 0x33, 0x00, 0x00,
-+ 0x90, 0x94, 0x64, 0x28, 0xf8, 0xa4, 0xa8, 0x18,
-+ 0xf0, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x02, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20,
-+ 0x10, 0x11, 0x1e, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08,
-+ 0x30, 0xc0, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00,
-+ 0x01, 0x02, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x24,
-+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x88,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x11, 0x21, 0x79, 0x49, 0x49, 0x79, 0x49,
-+ 0x49, 0x4a, 0x7a, 0x44, 0x09, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50,
-+ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x01, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01, 0x7f,
-+ 0x02, 0x05, 0x19, 0x6f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0xec, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x27, 0x79, 0x49, 0x4a, 0x7d, 0x49,
-+ 0x48, 0x48, 0x78, 0x48, 0x03, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0x08, 0x14, 0x14, 0x10,
-+ 0xa0, 0xa0, 0x40, 0xa0, 0x18, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x23, 0x7a, 0x4d, 0x48, 0x78, 0x4f,
-+ 0x48, 0x78, 0x48, 0x01, 0x06, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x00, 0x00, 0xfc,
-+ 0xa0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x11, 0x21, 0x79, 0x4a, 0x4c, 0x7f, 0x48,
-+ 0x49, 0x49, 0x79, 0x49, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x1c, 0x1a, 0x28, 0x4a, 0x0d,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x12, 0x22, 0x7b, 0x48, 0x4f, 0x78, 0x4b,
-+ 0x4a, 0x4b, 0x79, 0x48, 0x07, 0x00, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0xf8,
-+ 0x08, 0xf8, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x2a, 0x2c, 0x29, 0x3e, 0x32,
-+ 0x2a, 0x24, 0x24, 0x2a, 0x32, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x84, 0xf4, 0x94, 0x94,
-+ 0xf4, 0x98, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x7d, 0x14, 0x15, 0x2b, 0x48,
-+ 0x1e, 0x32, 0x4c, 0x0d, 0x13, 0x62, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x7f, 0x08, 0x3e, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x2b, 0x2c, 0x28, 0x3e, 0x32,
-+ 0x2a, 0x24, 0x24, 0x2b, 0x32, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xfc, 0x20, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x1e, 0x2a, 0x6e, 0x3e, 0x2a, 0x14, 0x1e,
-+ 0x2a, 0x6e, 0x3e, 0x2a, 0x12, 0x25, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x03,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x04, 0x3f, 0x00,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x40, 0x70, 0x88, 0x00,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x0f, 0x08, 0x0f,
-+ 0x00, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x7f, 0x01, 0x01, 0x1e, 0x02, 0x7f, 0x01,
-+ 0x1e, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0x60, 0xc4, 0xb4, 0xec, 0x20, 0xc4,
-+ 0x34, 0xfc, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x1f, 0x01, 0x7f, 0x14,
-+ 0x22, 0x5f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0x00, 0xfc, 0x90,
-+ 0x48, 0xf4, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x31, 0x27, 0x3b, 0x23, 0x3d, 0x29, 0x23,
-+ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xb8, 0x88, 0x78, 0x28, 0x08,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x17, 0x14,
-+ 0x17, 0x14, 0x17, 0x2f, 0x29, 0x5f, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0xe8, 0x10, 0xf0, 0xf0, 0x90,
-+ 0xf0, 0x90, 0xf0, 0xf8, 0x48, 0xfc, 0x00, 0x00,
-+ 0x11, 0x09, 0x41, 0x21, 0x0f, 0x11, 0x13, 0x24,
-+ 0x21, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0xfc, 0x00, 0xfc, 0xa4,
-+ 0x58, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x23, 0x13, 0x43, 0x2f, 0x13,
-+ 0x2d, 0x42, 0x1f, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0xd0, 0xf0, 0xfc, 0xf8,
-+ 0x48, 0xb0, 0xf0, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x01, 0x79, 0x4a, 0x4c, 0x7b, 0x48, 0x48,
-+ 0x79, 0x49, 0x48, 0x78, 0x48, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0x10, 0x08, 0xf4, 0x80, 0xf0,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4b, 0x4a, 0x7a, 0x48, 0x48,
-+ 0x78, 0x48, 0x49, 0x7a, 0x4c, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x60, 0x60,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x49, 0x79, 0x4a, 0x4a,
-+ 0x7c, 0x48, 0x48, 0x78, 0x49, 0x0e, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x50, 0x48, 0x44, 0x4c, 0x48,
-+ 0x50, 0xd0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4a, 0x4a, 0x7a, 0x4a, 0x4a,
-+ 0x7b, 0x4a, 0x4a, 0x78, 0x48, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x48, 0x48,
-+ 0xf8, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4f, 0x48, 0x7a, 0x49, 0x48,
-+ 0x78, 0x48, 0x48, 0x79, 0x4f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0,
-+ 0x60, 0x60, 0x90, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4b, 0x7a, 0x4a, 0x4a,
-+ 0x7a, 0x4a, 0x4a, 0x7c, 0x4c, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x80, 0x88,
-+ 0xb0, 0xc0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x11, 0x1e, 0x0f, 0x27, 0x24, 0x27, 0x24,
-+ 0x27, 0x24, 0x27, 0x3f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x30, 0xc0, 0x08, 0xf8, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x17, 0x78, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x48, 0x70, 0x44, 0x44, 0x3c, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4a, 0x4a, 0x7a, 0x4a, 0x4a,
-+ 0x7a, 0x4a, 0x4a, 0x7a, 0x4b, 0x0c, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0x90, 0x94, 0xf8, 0x90, 0x90,
-+ 0x90, 0x90, 0xb0, 0xd4, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4b, 0x48, 0x78, 0x4f, 0x48,
-+ 0x78, 0x49, 0x4a, 0x7c, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x09, 0x0f, 0x12, 0x7f, 0x08, 0x1f, 0x68,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x20, 0xf0, 0x90, 0xfc, 0x20, 0xf0, 0x2c,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x4f, 0x49, 0x79, 0x4b, 0x4c,
-+ 0x78, 0x4f, 0x48, 0x78, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0x60, 0x90, 0xe8, 0x48, 0x40, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x00, 0x78, 0x4b, 0x48, 0x7b, 0x4a, 0x4b,
-+ 0x7a, 0x48, 0x49, 0x7a, 0x4c, 0x00, 0x00, 0x00,
-+ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc,
-+ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x7a, 0x4b, 0x4a,
-+ 0x7a, 0x4a, 0x4a, 0x7c, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x7a, 0x4b, 0x4a,
-+ 0x78, 0x48, 0x49, 0x79, 0x4a, 0x0c, 0x00, 0x00,
-+ 0x80, 0x38, 0x08, 0xb8, 0x08, 0x08, 0xf8, 0xa8,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x07, 0x78, 0x4b, 0x48, 0x7f, 0x48, 0x4b,
-+ 0x78, 0x4a, 0x4a, 0x7b, 0x4c, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x48, 0x40, 0x7c, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7b, 0x48, 0x49, 0x78, 0x4f, 0x48, 0x7b,
-+ 0x4a, 0x4a, 0x7b, 0x4a, 0x02, 0x02, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x7a, 0x4b, 0x4a,
-+ 0x78, 0x49, 0x4f, 0x78, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x88,
-+ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x2f, 0x49, 0x12, 0x04, 0x1f,
-+ 0x68, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0xfc, 0xe8, 0x20, 0x90, 0x40, 0xf0,
-+ 0x2c, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x04, 0x3f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x40, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x7f, 0x48, 0x48,
-+ 0x79, 0x4f, 0x49, 0x79, 0x49, 0x01, 0x00, 0x00,
-+ 0x80, 0x88, 0xf8, 0x90, 0xa0, 0xfc, 0x50, 0x88,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4d, 0x48, 0x7b, 0x48, 0x4f,
-+ 0x78, 0x4b, 0x4a, 0x7a, 0x4b, 0x02, 0x00, 0x00,
-+ 0x40, 0xfc, 0x58, 0xe0, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x79, 0x49, 0x4a, 0x7a, 0x4a, 0x4a, 0x7a,
-+ 0x4a, 0x4a, 0x7a, 0x4b, 0x01, 0x06, 0x00, 0x00,
-+ 0x08, 0x34, 0xc4, 0xfc, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0xfc, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4d, 0x49, 0x79, 0x49, 0x49,
-+ 0x78, 0x4f, 0x48, 0x78, 0x49, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x7a, 0x49, 0x4b, 0x7a, 0x4d, 0x49, 0x79,
-+ 0x49, 0x48, 0x7b, 0x48, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x77, 0x51, 0x51, 0x70, 0x57, 0x54,
-+ 0x77, 0x55, 0x55, 0x76, 0x54, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x40, 0xfc, 0x44,
-+ 0x74, 0x54, 0x54, 0xec, 0x44, 0x4c, 0x00, 0x00,
-+ 0x00, 0x07, 0x72, 0x5f, 0x54, 0x74, 0x57, 0x54,
-+ 0x77, 0x54, 0x57, 0x7c, 0x50, 0x00, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0xe0, 0xbc, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x4b, 0x4f, 0x7b, 0x4a, 0x4b,
-+ 0x7a, 0x4b, 0x4a, 0x7b, 0x49, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xf8, 0xfc, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x7a, 0x49, 0x4b, 0x7a, 0x4d, 0x4a,
-+ 0x78, 0x49, 0x4e, 0x78, 0x49, 0x0e, 0x00, 0x00,
-+ 0x18, 0xe4, 0x48, 0x30, 0xfc, 0x48, 0xa8, 0x94,
-+ 0xf0, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x3e, 0x22, 0x3e, 0x08, 0x0f,
-+ 0x18, 0x2f, 0x4f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0xf8, 0x88, 0xf8, 0xf8, 0x88, 0xf8, 0x40, 0xf8,
-+ 0x80, 0xf0, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x49, 0x4b, 0x7c, 0x4b, 0x4a,
-+ 0x7a, 0x4b, 0x49, 0x79, 0x4a, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8,
-+ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x3e, 0x22, 0x3e, 0x17, 0x7f,
-+ 0x10, 0x1f, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x48, 0x30, 0xd8, 0xf4,
-+ 0x10, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x4b, 0x4a, 0x7a, 0x4b, 0x4b,
-+ 0x7a, 0x4a, 0x4a, 0x7c, 0x4c, 0x08, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0xa8, 0x98, 0x70, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x07, 0x79, 0x4b, 0x4a, 0x7c, 0x4f, 0x48,
-+ 0x7f, 0x49, 0x4e, 0x79, 0x4e, 0x00, 0x00, 0x00,
-+ 0x10, 0xfc, 0x10, 0xfc, 0xe8, 0x00, 0xfc, 0xc8,
-+ 0x68, 0xf0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x3e, 0x22, 0x3e, 0x0f, 0x1b,
-+ 0x6b, 0x0f, 0x3f, 0x04, 0x03, 0x7c, 0x00, 0x00,
-+ 0xf8, 0x88, 0xf8, 0xf8, 0x88, 0xf8, 0xf8, 0xe0,
-+ 0xe0, 0xf8, 0xe0, 0x40, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x07, 0x17, 0x17, 0x17, 0x1f, 0x7f,
-+ 0x1c, 0x5d, 0x5d, 0x5d, 0x7f, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xfc,
-+ 0x70, 0x70, 0x70, 0x70, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x07, 0x74, 0x57, 0x57, 0x77, 0x57, 0x56,
-+ 0x77, 0x55, 0x57, 0x79, 0x48, 0x17, 0x00, 0x00,
-+ 0x00, 0xfc, 0x04, 0xfc, 0x58, 0x58, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0xf4, 0xf4, 0x7c, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x12, 0x0c, 0x04, 0x7f, 0x0d, 0x0e,
-+ 0x14, 0x14, 0x24, 0x44, 0x04, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xf4, 0x00, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x02, 0x04, 0x3f, 0x08, 0x0f, 0x11,
-+ 0x21, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x40, 0x30, 0xc8, 0x00, 0xf8, 0x00,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x1f, 0x28, 0x28, 0x49, 0x7e,
-+ 0x09, 0x0c, 0x12, 0x12, 0x20, 0x43, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20,
-+ 0xfc, 0x48, 0xc8, 0x30, 0x68, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1e, 0x32,
-+ 0x52, 0x12, 0x12, 0x1e, 0x13, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x7e, 0x12, 0x12, 0x13, 0x3e, 0x2a, 0x6a,
-+ 0x2a, 0x2a, 0x39, 0x28, 0x20, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xa8, 0x28, 0x28, 0x28, 0x28,
-+ 0xa8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x06, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x13, 0x12, 0x3a, 0x2b, 0x6a,
-+ 0x2a, 0x2a, 0x3a, 0x2c, 0x24, 0x0b, 0x00, 0x00,
-+ 0x20, 0xfc, 0x50, 0xfc, 0x50, 0x70, 0xfc, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x10, 0x10, 0x3c, 0x24, 0x64,
-+ 0x24, 0x24, 0x3c, 0x24, 0x23, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x13, 0x12, 0x3a, 0x2a, 0x6a,
-+ 0x2a, 0x2b, 0x3d, 0x25, 0x29, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x10, 0x10, 0x3f, 0x24, 0x64,
-+ 0x27, 0x24, 0x3c, 0x24, 0x27, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x10, 0x10, 0x3c, 0x25, 0x66,
-+ 0x24, 0x27, 0x3c, 0x24, 0x20, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x90, 0x90, 0x98, 0x64, 0x64,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3c, 0x24, 0x65,
-+ 0x27, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0x90, 0xa0, 0xa4, 0x28,
-+ 0x30, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x42, 0x23, 0x0a, 0x12, 0x24, 0x2b,
-+ 0x7f, 0x04, 0x1f, 0x68, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xf8, 0x90, 0x60, 0xf0, 0x0c,
-+ 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x12, 0x12, 0x3b, 0x2a, 0x6a,
-+ 0x2b, 0x2a, 0x3a, 0x2c, 0x24, 0x09, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x11, 0x10, 0x3c, 0x27, 0x64,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0x90, 0xa0, 0xfc, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x11, 0x10, 0x3f, 0x26, 0x65,
-+ 0x25, 0x24, 0x3d, 0x26, 0x20, 0x00, 0x00, 0x00,
-+ 0x80, 0xf0, 0x10, 0xe0, 0x20, 0xfc, 0x68, 0x68,
-+ 0x50, 0xd0, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x24, 0x64,
-+ 0x25, 0x27, 0x3d, 0x25, 0x21, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8,
-+ 0x48, 0x68, 0x98, 0xe8, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7e, 0x10, 0x10, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x24, 0x21, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3c, 0x24, 0x64,
-+ 0x27, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x90,
-+ 0xfc, 0x50, 0x54, 0x8c, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x7a, 0x14, 0x12, 0x12, 0x38, 0x2b, 0x6a,
-+ 0x2b, 0x2a, 0x3a, 0x2b, 0x23, 0x02, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0x48, 0x48, 0x80, 0xf8, 0x28,
-+ 0xa8, 0x48, 0xa8, 0x18, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x10, 0x17, 0x3c, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x24, 0x27, 0x00, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3f, 0x26, 0x65,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x70, 0x50, 0xfc, 0x08, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x7c, 0x13, 0x10, 0x11, 0x3c, 0x27, 0x64,
-+ 0x24, 0x25, 0x3d, 0x26, 0x27, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x80,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7d, 0x11, 0x12, 0x16, 0x39, 0x29, 0x6a,
-+ 0x2f, 0x28, 0x39, 0x2a, 0x24, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0xbc, 0xa8, 0xa8, 0xfc, 0x48, 0x48,
-+ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x7d, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x25, 0x3e, 0x22, 0x04, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x50, 0x50, 0xf8, 0x50,
-+ 0x50, 0xfc, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x25, 0x24, 0x3f, 0x22, 0x22, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x54, 0x2c, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x13, 0x11, 0x10, 0x3f, 0x26, 0x64,
-+ 0x27, 0x24, 0x3c, 0x24, 0x21, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40,
-+ 0xfc, 0x40, 0x78, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x07, 0x1c, 0x67, 0x04, 0x7e,
-+ 0x10, 0x1e, 0x32, 0x53, 0x1e, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc,
-+ 0x40, 0x78, 0xc8, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x3f, 0x2a, 0x3e, 0x21,
-+ 0x7f, 0x04, 0x1f, 0x68, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x70, 0x8c,
-+ 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x11, 0x10, 0x3f, 0x25, 0x65,
-+ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x11, 0x11, 0x3d, 0x25, 0x65,
-+ 0x24, 0x27, 0x3c, 0x27, 0x20, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xfc, 0x10, 0xfc, 0x90, 0x70, 0x00, 0x00,
-+ 0x00, 0x7f, 0x10, 0x17, 0x11, 0x3f, 0x29, 0x69,
-+ 0x2e, 0x2f, 0x38, 0x28, 0x21, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x01, 0x7e, 0x12, 0x11, 0x11, 0x3f, 0x24, 0x65,
-+ 0x25, 0x25, 0x3c, 0x24, 0x27, 0x00, 0x00, 0x00,
-+ 0xd0, 0x54, 0xa4, 0xa8, 0x10, 0xf8, 0x04, 0xf8,
-+ 0x08, 0xf8, 0x90, 0x60, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x13, 0x12, 0x3b, 0x2a, 0x6b,
-+ 0x2a, 0x28, 0x3f, 0x28, 0x21, 0x06, 0x00, 0x00,
-+ 0x40, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8, 0x58,
-+ 0x48, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x01, 0x7f, 0x10, 0x13, 0x10, 0x3f, 0x28, 0x6f,
-+ 0x2f, 0x29, 0x39, 0x2f, 0x21, 0x03, 0x00, 0x00,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0x24,
-+ 0xfc, 0x28, 0x98, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x02, 0x7d, 0x13, 0x12, 0x15, 0x39, 0x29, 0x68,
-+ 0x2b, 0x2a, 0x3b, 0x2a, 0x23, 0x02, 0x00, 0x00,
-+ 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x7c, 0x17, 0x14, 0x13, 0x3a, 0x2b, 0x6d,
-+ 0x29, 0x2f, 0x3b, 0x2a, 0x24, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x28, 0x90, 0x90, 0x7c, 0x94, 0x58,
-+ 0x50, 0xdc, 0x50, 0xf0, 0x50, 0x8c, 0x00, 0x00,
-+ 0x10, 0x12, 0x7d, 0x1a, 0x36, 0x51, 0x12, 0x7f,
-+ 0x04, 0x1f, 0x62, 0x0f, 0x34, 0x07, 0x00, 0x00,
-+ 0x90, 0x90, 0x7c, 0x90, 0xb8, 0x54, 0x90, 0xfc,
-+ 0x20, 0xf0, 0x0c, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x02, 0x7e, 0x13, 0x15, 0x12, 0x3a, 0x2d, 0x6f,
-+ 0x28, 0x2f, 0x38, 0x29, 0x26, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0xec, 0xb4, 0xe8, 0xa8, 0xf4, 0x5c,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x01, 0x7e, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2b, 0x49, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xfc, 0xa0, 0x90,
-+ 0x90, 0xb4, 0xcc, 0x0c, 0xf4, 0x04, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x21, 0x3f, 0x20, 0x0f,
-+ 0x00, 0x7f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x08, 0xf8, 0x08, 0xe0,
-+ 0x00, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2b, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xa0, 0xa0, 0x3c, 0x20,
-+ 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a,
-+ 0x2b, 0x2b, 0x2a, 0x28, 0x48, 0x09, 0x00, 0x00,
-+ 0x20, 0x10, 0x50, 0x48, 0x48, 0xc8, 0xd8, 0xd4,
-+ 0x54, 0x64, 0x60, 0x48, 0xc8, 0x38, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x29, 0x4a, 0x0c, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x48, 0x68,
-+ 0x68, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x03, 0x7e, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2b, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x90, 0x90, 0xfc, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7e, 0x09, 0x2b, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x78, 0x88, 0xf0, 0x10, 0xfc, 0x20, 0xb4,
-+ 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x01, 0x3d, 0x03, 0x01, 0x7f, 0x11, 0x37, 0x35,
-+ 0x34, 0x37, 0x34, 0x34, 0x51, 0x16, 0x00, 0x00,
-+ 0x00, 0x78, 0xa8, 0x28, 0xa8, 0xa8, 0x48, 0x98,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a,
-+ 0x2b, 0x2a, 0x2a, 0x2b, 0x48, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x50, 0x94,
-+ 0x4c, 0x70, 0xd0, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x00, 0x7e, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2b, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x50, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x7d, 0x15, 0x15, 0x2d, 0x50,
-+ 0x1f, 0x10, 0x1f, 0x15, 0x25, 0x49, 0x00, 0x00,
-+ 0x00, 0xfc, 0x98, 0x70, 0x50, 0x50, 0xe8, 0x14,
-+ 0xf0, 0x10, 0xf0, 0x50, 0x30, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x01, 0x7e, 0x08, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x03, 0x7e, 0x13, 0x34, 0x37,
-+ 0x35, 0x35, 0x35, 0x30, 0x57, 0x10, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x03, 0x02, 0x7f, 0x10, 0x37, 0x35,
-+ 0x34, 0x37, 0x34, 0x37, 0x51, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0,
-+ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x01,
-+ 0x3f, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x38, 0xc0, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x48, 0x68, 0x98, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f, 0x01,
-+ 0x3f, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x48, 0x68, 0x98, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x01,
-+ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x70, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0xfc, 0x10,
-+ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x03, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x0b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x09, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x68,
-+ 0x68, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x09, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x09, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xf8,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x09, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x0b, 0x08, 0x7e, 0x0c, 0x1a,
-+ 0x1a, 0x28, 0x4b, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x90, 0x90, 0xfc, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x02, 0x04, 0x39, 0x08, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x02, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x0a, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x08,
-+ 0xe8, 0xa8, 0xa8, 0xe8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x00,
-+ 0x1f, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x60,
-+ 0x80, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x00,
-+ 0x1f, 0x00, 0x7f, 0x0d, 0x31, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x09, 0x7e, 0x0c, 0x1a,
-+ 0x1a, 0x28, 0x49, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0x20, 0xf8, 0xa8,
-+ 0xf8, 0xa8, 0xfc, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x02, 0x04, 0x39, 0x09, 0x0a, 0x7e, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x08, 0x30, 0xc8, 0x24, 0x24, 0x40, 0xb8, 0x08,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x08, 0x0f, 0x3f, 0x27, 0x24,
-+ 0x27, 0x1f, 0x7f, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xf8, 0xc8, 0x48,
-+ 0xf8, 0xc0, 0xfc, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x02, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x4b, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa0, 0x24,
-+ 0x5c, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x02, 0x04, 0x39, 0x09, 0x0a, 0x7e, 0x09, 0x1c,
-+ 0x1a, 0x2b, 0x4a, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x90, 0xa8, 0x24, 0x50,
-+ 0x88, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x05, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1b, 0x2a, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x20, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x28,
-+ 0xf4, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x02, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x49, 0x0b, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xac, 0xac, 0x20,
-+ 0x60, 0x78, 0xa0, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x08, 0x77, 0x11, 0x11, 0x7e, 0x17, 0x38,
-+ 0x37, 0x56, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x50, 0xe8, 0xfc, 0x00,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x09, 0x71, 0x11, 0x17, 0x7c, 0x13, 0x3a,
-+ 0x37, 0x56, 0x53, 0x16, 0x14, 0x1b, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0xfc, 0x28, 0xfc, 0x20,
-+ 0xe8, 0xd8, 0xb4, 0xdc, 0xac, 0x44, 0x00, 0x00,
-+ 0x04, 0x09, 0x71, 0x13, 0x10, 0x7d, 0x11, 0x3b,
-+ 0x34, 0x55, 0x50, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x08, 0xf0, 0x48, 0xf4, 0x40, 0xf0, 0xf8, 0xfc,
-+ 0x08, 0xf8, 0x40, 0xa8, 0x94, 0x70, 0x00, 0x00,
-+ 0x04, 0x09, 0x76, 0x13, 0x12, 0x7f, 0x13, 0x3f,
-+ 0x37, 0x54, 0x53, 0x17, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xf8, 0xa8, 0xb8, 0xa0, 0xbc,
-+ 0xbc, 0xac, 0xb4, 0xbc, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x0f, 0x73, 0x12, 0x13, 0x7c, 0x13, 0x39,
-+ 0x34, 0x57, 0x50, 0x17, 0x11, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0,
-+ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x1f, 0x00,
-+ 0x1f, 0x10, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x10,
-+ 0xf0, 0x00, 0xf8, 0x08, 0x08, 0xf0, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x34, 0x04, 0x3f,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x08, 0x0a,
-+ 0x73, 0x14, 0x0c, 0x0a, 0x1f, 0x62, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0x40,
-+ 0xf8, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x49, 0x32, 0x1f, 0x11,
-+ 0x17, 0x1e, 0x11, 0x16, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x48, 0x48, 0x38, 0xf0, 0x10,
-+ 0xd0, 0x50, 0x90, 0x50, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x24, 0x48, 0x32, 0x02, 0x32,
-+ 0x0a, 0x0e, 0x74, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0xb0,
-+ 0xc0, 0xb0, 0x88, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x1f, 0x02, 0x7f,
-+ 0x02, 0x1f, 0x07, 0x1c, 0x67, 0x04, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x10, 0xfc,
-+ 0x10, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x35, 0x05, 0x0f,
-+ 0x11, 0x7f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xf0,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x0f, 0x09,
-+ 0x09, 0x3f, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0xe0, 0xe0,
-+ 0x20, 0xf8, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x01, 0x3f, 0x29, 0x77, 0x3f, 0x1f, 0x12, 0x1e,
-+ 0x3e, 0x22, 0x3e, 0x3e, 0x22, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x28, 0xd8, 0xf8, 0xf0, 0x90, 0xf0,
-+ 0xf8, 0x88, 0xf8, 0xf8, 0x84, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x4c, 0x32, 0x07, 0x3a, 0x0b,
-+ 0x7f, 0x09, 0x7f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x60, 0x80,
-+ 0xf0, 0x00, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x3f, 0x25, 0x7f, 0x09, 0x7f, 0x0f, 0x0f,
-+ 0x09, 0x0f, 0x7f, 0x06, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0x20, 0xfc, 0xe0, 0xe0,
-+ 0x20, 0xe0, 0xfc, 0x40, 0xe0, 0x10, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x4c, 0x38, 0x3e, 0x22, 0x3e,
-+ 0x3f, 0x08, 0x7f, 0x0e, 0x12, 0x67, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0x7c, 0x88,
-+ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x59, 0x1e, 0x10, 0x1e, 0x1f,
-+ 0x11, 0x1d, 0x1d, 0x11, 0x1d, 0x73, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x78, 0xf0, 0x10, 0xf0, 0xf0,
-+ 0x10, 0xd0, 0xd4, 0x0c, 0xcc, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x3c, 0x27, 0x38,
-+ 0x2b, 0x25, 0x26, 0x39, 0x20, 0x27, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x78, 0x40, 0xf8, 0x90, 0xe0,
-+ 0x5c, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00,
-+ 0x20, 0x17, 0x14, 0x4b, 0x20, 0x27, 0x00, 0x77,
-+ 0x10, 0x13, 0x10, 0x13, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0xfc, 0xac, 0x3c, 0xa0, 0xfc, 0xc8, 0xe8,
-+ 0xf0, 0x70, 0xa8, 0x28, 0xc0, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x26, 0x59, 0x7f, 0x0f, 0x3f, 0x2c,
-+ 0x3f, 0x1f, 0x1f, 0x17, 0x1f, 0x78, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x78, 0xfc, 0xe0, 0xf8, 0xe8,
-+ 0xf8, 0xf0, 0xd0, 0xf0, 0xf0, 0x1c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x26, 0x58, 0x06, 0x7a, 0x2a, 0x1c,
-+ 0x7e, 0x19, 0x1d, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x78, 0x20, 0x3c, 0xf8, 0xa8,
-+ 0xd8, 0xfc, 0x54, 0xfc, 0x04, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x02, 0x22, 0x13, 0x12,
-+ 0x14, 0x14, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x02, 0x22, 0x13, 0x12,
-+ 0x14, 0x14, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x24, 0x15, 0x16,
-+ 0x14, 0x18, 0x0e, 0x18, 0x61, 0x02, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0xfc, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x04, 0x24, 0x15, 0x14,
-+ 0x14, 0x19, 0x0e, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x40, 0x40, 0x78, 0xc0, 0x40,
-+ 0x7c, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x04, 0x24, 0x14, 0x15,
-+ 0x15, 0x09, 0x0f, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7f, 0x06, 0x24, 0x15, 0x14,
-+ 0x14, 0x18, 0x0e, 0x18, 0x60, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x02, 0x22, 0x12, 0x12,
-+ 0x14, 0x14, 0x06, 0x18, 0x63, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x08, 0x88, 0x48, 0x48,
-+ 0x50, 0x50, 0x10, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x08, 0x7e, 0x05, 0x25, 0x15, 0x15,
-+ 0x15, 0x09, 0x0f, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x05, 0x24, 0x14, 0x14,
-+ 0x15, 0x09, 0x0e, 0x18, 0x60, 0x03, 0x00, 0x00,
-+ 0x20, 0x20, 0x30, 0x48, 0xf4, 0x84, 0xf8, 0xa0,
-+ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x7e, 0x04, 0x24, 0x14, 0x14,
-+ 0x14, 0x08, 0x0e, 0x19, 0x62, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x7f, 0x05, 0x25, 0x14, 0x14,
-+ 0x15, 0x0b, 0x0f, 0x19, 0x61, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8,
-+ 0x48, 0x68, 0x98, 0xf8, 0x08, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x0a, 0x4a, 0x2a, 0x2a,
-+ 0x2a, 0x32, 0x16, 0x1c, 0x67, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1e, 0x29, 0x45, 0x01, 0x3f, 0x01,
-+ 0x0d, 0x03, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x20, 0x10, 0x00, 0xe0, 0x20,
-+ 0x20, 0x20, 0xa0, 0x64, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x0f, 0x12,
-+ 0x22, 0x44, 0x08, 0x11, 0x02, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x48,
-+ 0x48, 0x88, 0x88, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x0f, 0x09,
-+ 0x09, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x18, 0xe0, 0x20,
-+ 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x1f, 0x11,
-+ 0x11, 0x1f, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x7e,
-+ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x01, 0x01, 0x01,
-+ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x09, 0x1f,
-+ 0x11, 0x2f, 0x41, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0x00, 0xf8,
-+ 0x00, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x02, 0x02, 0x04,
-+ 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0x60, 0x38,
-+ 0xc4, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x10, 0x09, 0x49,
-+ 0x21, 0x25, 0x09, 0x11, 0x21, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x08,
-+ 0x08, 0x08, 0x30, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x01, 0x01, 0x7f,
-+ 0x03, 0x05, 0x19, 0x67, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0xcc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x0f, 0x11,
-+ 0x21, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x00,
-+ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x20,
-+ 0x27, 0x20, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x00, 0xf8, 0x80,
-+ 0xf0, 0x80, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x20,
-+ 0x27, 0x20, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x00, 0xf8, 0x80,
-+ 0xf0, 0x90, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x3f, 0x04,
-+ 0x04, 0x7f, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x40,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x04, 0x0f, 0x10,
-+ 0x6f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x08,
-+ 0x88, 0x88, 0x88, 0x88, 0x88, 0xb0, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x01, 0x7f,
-+ 0x01, 0x1f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0xfc,
-+ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x02, 0x04, 0x18,
-+ 0x6f, 0x01, 0x0f, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x80, 0x40, 0x30,
-+ 0xec, 0x00, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x0f, 0x11,
-+ 0x7f, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf0, 0x00,
-+ 0xfc, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x7b, 0x08, 0x11,
-+ 0x3d, 0x49, 0x29, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x1c, 0xf0, 0x20, 0x3c,
-+ 0x20, 0x20, 0x20, 0xfc, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x02, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x01, 0x7f, 0x09,
-+ 0x09, 0x16, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x20,
-+ 0x30, 0xc8, 0x88, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x29, 0x4f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x20, 0xe0, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x09, 0x12,
-+ 0x34, 0x50, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x40,
-+ 0x7c, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x14,
-+ 0x35, 0x56, 0x14, 0x14, 0x14, 0x13, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x80, 0x80, 0xfc,
-+ 0x90, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x1f, 0x10,
-+ 0x1e, 0x12, 0x12, 0x12, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x90, 0xfc, 0x88,
-+ 0x48, 0x50, 0x34, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x09, 0x09,
-+ 0x0d, 0x13, 0x23, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x20, 0x20,
-+ 0x30, 0x48, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x09, 0x7f,
-+ 0x09, 0x0d, 0x19, 0x69, 0x09, 0x19, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x10, 0x10, 0xfc,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x21,
-+ 0x3f, 0x27, 0x39, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x28, 0xc8, 0x08,
-+ 0xf8, 0xc8, 0x38, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x1e, 0x60, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x88, 0x90, 0xe4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x10, 0x13, 0x7e, 0x12,
-+ 0x12, 0x1a, 0x72, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xa8, 0xb8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x01, 0x3f, 0x22, 0x4c,
-+ 0x30, 0x0f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x88, 0x88,
-+ 0x78, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x04, 0x06, 0x09,
-+ 0x1f, 0x60, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x08, 0x48, 0x48,
-+ 0xc8, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x01, 0x00, 0x1f,
-+ 0x02, 0x7f, 0x01, 0x00, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x18, 0xfc, 0x10, 0xe0, 0xb4,
-+ 0x4c, 0xf8, 0x20, 0xc4, 0xb4, 0x0c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x5f, 0x00, 0x7f, 0x1f, 0x3f,
-+ 0x21, 0x5f, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf0, 0x10, 0xfc, 0xf0, 0xfc,
-+ 0x08, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x11, 0x3f, 0x41,
-+ 0x7f, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x18, 0xf0, 0x08, 0xf4, 0x10,
-+ 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x03, 0x0c, 0x3f, 0x01,
-+ 0x7f, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xe0, 0x80, 0xf0, 0x10,
-+ 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3d, 0x25, 0x25, 0x3d,
-+ 0x25, 0x3d, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x08, 0x30, 0xf8,
-+ 0x48, 0x48, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x24,
-+ 0x26, 0x29, 0x22, 0x2c, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x80, 0xf8, 0x90,
-+ 0xb0, 0x48, 0x20, 0x18, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x47, 0x0f, 0x08, 0x0f, 0x0f,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xe0, 0x20, 0xe0, 0xe0,
-+ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x09, 0x08, 0x17, 0x11,
-+ 0x31, 0x52, 0x17, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0xfc, 0x00,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x12, 0x12, 0x7f,
-+ 0x12, 0x1f, 0x12, 0x12, 0x1e, 0x13, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x40, 0x40, 0xfc,
-+ 0xa4, 0x28, 0x70, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x00, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x17, 0x14, 0x17, 0x24, 0x41, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x50, 0xfc, 0x48, 0xc8,
-+ 0x48, 0xb0, 0xb4, 0xb4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x47, 0x04, 0x0f, 0x7f, 0x03,
-+ 0x7d, 0x07, 0x39, 0x06, 0x38, 0x03, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xe0, 0x40, 0xc0, 0xfc, 0x88,
-+ 0xd0, 0xe0, 0xa0, 0x90, 0x8c, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x1f, 0x04, 0x7f,
-+ 0x0f, 0x0f, 0x09, 0x7f, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x48, 0xf8, 0xf0, 0x40, 0xfc,
-+ 0xe0, 0xe0, 0x20, 0xfc, 0x20, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x3e, 0x22,
-+ 0x3e, 0x20, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x20, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x45, 0x7f, 0x0f, 0x08, 0x7f,
-+ 0x08, 0x0f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0xe0, 0x20, 0xfc,
-+ 0x20, 0xe8, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x45, 0x7f, 0x3f, 0x08, 0x7f,
-+ 0x08, 0x3f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0xf8, 0x20, 0xfc,
-+ 0x20, 0xf8, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x47, 0x3f, 0x26, 0x21, 0x2e,
-+ 0x3f, 0x10, 0x1f, 0x10, 0x1e, 0x70, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x48, 0xc8, 0x28,
-+ 0xf8, 0x88, 0x90, 0xe4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x7f, 0x04, 0x3f, 0x24,
-+ 0x3f, 0x01, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x40, 0xf8, 0x48,
-+ 0xf8, 0x00, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x49, 0x7e, 0x14, 0x7f, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x40, 0x7c, 0x78, 0x08, 0x78,
-+ 0x40, 0x78, 0x78, 0x78, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x45, 0x3f, 0x1f, 0x7f, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0xf0, 0xfc, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x7f, 0x08,
-+ 0x0f, 0x13, 0x12, 0x22, 0x44, 0x1f, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x80, 0xfc, 0x80, 0xf8,
-+ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x24, 0x3f, 0x24,
-+ 0x3f, 0x24, 0x2e, 0x2a, 0x2e, 0x41, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x90, 0x90, 0xa8, 0xc8,
-+ 0x90, 0xa4, 0x84, 0x88, 0x90, 0xa0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x5f, 0x11, 0x1f, 0x11, 0x1f,
-+ 0x7f, 0x09, 0x3f, 0x01, 0x3f, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0x20, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x10, 0x0b, 0x40, 0x27,
-+ 0x03, 0x71, 0x13, 0x10, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x90, 0xf0, 0xa0, 0xe0, 0x5c,
-+ 0xf8, 0xf0, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x13, 0x48, 0x22, 0x15,
-+ 0x23, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x98, 0x94, 0x14,
-+ 0x60, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x4f, 0x09, 0x7f, 0x0f, 0x0f,
-+ 0x09, 0x0f, 0x7f, 0x0e, 0x01, 0x3e, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xe0, 0x20, 0xfc, 0xe0, 0xe0,
-+ 0x20, 0xe0, 0xfc, 0x40, 0xe0, 0x10, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7f, 0x01, 0x09, 0x09, 0x7f,
-+ 0x07, 0x04, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0xf0, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x4f, 0x09, 0x0f, 0x7f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xe0, 0x20, 0xe0, 0xfc, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7f, 0x04, 0x07, 0x7f, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0xd0, 0xf8, 0x40, 0xc0, 0xfc, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x60, 0x18, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7e, 0x14, 0x7f, 0x0e, 0x14,
-+ 0x7f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf8, 0x50, 0xfc, 0x30, 0xd4,
-+ 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7f, 0x1f, 0x12, 0x1f, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xfc, 0xf0, 0x90, 0xf0, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x43, 0x0c, 0x7f, 0x12, 0x1d,
-+ 0x17, 0x11, 0x11, 0x13, 0x22, 0x43, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xe0, 0x80, 0xfc, 0x24, 0xfc,
-+ 0xf8, 0xe0, 0xe0, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x5f, 0x01, 0x7f, 0x1f, 0x15,
-+ 0x1d, 0x11, 0x1f, 0x1d, 0x25, 0x45, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf0, 0x10, 0xfc, 0xf0, 0x50,
-+ 0x70, 0x10, 0xf0, 0x70, 0x50, 0x50, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x02, 0x0c, 0x77, 0x00,
-+ 0x1e, 0x12, 0x1e, 0x0c, 0x12, 0x61, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x10, 0x80, 0x60, 0xdc, 0x00,
-+ 0xf0, 0x90, 0xf0, 0x60, 0x90, 0x08, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x7f, 0x1f, 0x7f, 0x1f, 0x01,
-+ 0x1f, 0x7f, 0x1e, 0x13, 0x1e, 0x10, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xfc, 0xf0, 0xfc, 0xe8, 0x00,
-+ 0xe0, 0xfc, 0x10, 0xfc, 0x90, 0x30, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x7f, 0x24, 0x3e, 0x3f, 0x24,
-+ 0x3f, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x40, 0x7c, 0x80, 0x00, 0x78,
-+ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x5f, 0x15, 0x7f, 0x1f, 0x1f,
-+ 0x15, 0x1f, 0x7f, 0x1a, 0x06, 0x39, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x20, 0x20, 0xfc, 0x48, 0xc8,
-+ 0x28, 0x30, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x4d, 0x09, 0x7e, 0x13, 0x1c,
-+ 0x14, 0x14, 0x14, 0x27, 0x24, 0x5b, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x90, 0xfc, 0x90, 0xfc, 0x90,
-+ 0xf0, 0xf0, 0x90, 0xfc, 0x90, 0x08, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x51, 0x13, 0x7e, 0x12, 0x17,
-+ 0x13, 0x1e, 0x73, 0x12, 0x13, 0x32, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x40, 0xbc, 0x94, 0xe4, 0x58,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x1f, 0x28, 0x45, 0x3e, 0x27, 0x24, 0x3f,
-+ 0x25, 0x3f, 0x24, 0x27, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x50, 0x48, 0xfc, 0xa0, 0xfc,
-+ 0x50, 0x58, 0xe4, 0x50, 0x4c, 0xc0, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x41, 0x3f, 0x24, 0x27, 0x3d,
-+ 0x27, 0x3c, 0x27, 0x25, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x50, 0xf8, 0xa4, 0xfc, 0x50,
-+ 0xac, 0xd0, 0xf8, 0x54, 0x48, 0x48, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x49, 0x7f, 0x08, 0x3e, 0x2a,
-+ 0x2a, 0x3e, 0x1c, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0xf8, 0x48, 0x98, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x52, 0x12, 0x2d, 0x7f, 0x0a,
-+ 0x3b, 0x3b, 0x0a, 0x3b, 0x0f, 0x78, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x40, 0x50, 0x48, 0xfc, 0x28,
-+ 0xa8, 0xb0, 0x10, 0xb4, 0xcc, 0x84, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x44, 0x3f, 0x04, 0x7f, 0x0a,
-+ 0x3b, 0x3b, 0x0a, 0x3b, 0x0f, 0x70, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x40, 0xd0, 0x48, 0xfc, 0x28,
-+ 0xa8, 0xb0, 0x14, 0xb4, 0xcc, 0x84, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x46, 0x0c, 0x77, 0x3b, 0x2a,
-+ 0x3b, 0x3f, 0x24, 0x3f, 0x24, 0x24, 0x00, 0x00,
-+ 0x40, 0x7c, 0xa0, 0x90, 0x60, 0xdc, 0xb8, 0xa8,
-+ 0xb8, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x10, 0x1f, 0x24, 0x49, 0x7f, 0x26, 0x3a, 0x37,
-+ 0x3e, 0x7f, 0x4d, 0x7f, 0x41, 0x43, 0x00, 0x00,
-+ 0x40, 0x7c, 0x90, 0x48, 0x50, 0x7c, 0xd0, 0x78,
-+ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x11, 0x55, 0x35, 0x39, 0x11, 0x7d, 0x11, 0x39,
-+ 0x35, 0x55, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x08, 0x4b, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x02, 0x1f, 0x15, 0x13, 0x1f, 0x13, 0x1d, 0x1f,
-+ 0x00, 0x7f, 0x08, 0x0f, 0x10, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0x90, 0xf0, 0x90, 0x50, 0xf0,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7f, 0x08, 0x1c,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x7c, 0x01, 0x02, 0x0c, 0x71, 0x13, 0x09,
-+ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x48, 0xc0, 0x30, 0x2c, 0x20,
-+ 0x40, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x57, 0x34, 0x38, 0x10, 0x7f, 0x12, 0x3a,
-+ 0x36, 0x56, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x80, 0xf8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x3a, 0x13, 0x7e, 0x12, 0x3a,
-+ 0x36, 0x56, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x4b, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x4b, 0x2a, 0x2d, 0x09, 0x7f, 0x09, 0x1d,
-+ 0x1b, 0x2b, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0e, 0x08, 0x1f, 0x72, 0x0c, 0x73, 0x11,
-+ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0x10,
-+ 0x20, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x40, 0x2a, 0x12, 0x25, 0x22, 0x11,
-+ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x98, 0x94, 0x14, 0x60, 0x10,
-+ 0x20, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c,
-+ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8,
-+ 0xa4, 0xa8, 0x90, 0x90, 0xe8, 0x04, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7e, 0x09, 0x1e,
-+ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x90, 0x90, 0xd8, 0x24, 0x24,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x08, 0x1d,
-+ 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0xf8, 0x00, 0x00, 0xfc,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x10, 0x54, 0x37, 0x38, 0x10, 0x7c, 0x11, 0x39,
-+ 0x37, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xa0, 0xa0, 0x24, 0x28,
-+ 0x30, 0x60, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x10, 0x55, 0x34, 0x38, 0x13, 0x7c, 0x13, 0x38,
-+ 0x34, 0x57, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0xe8, 0x30, 0x60,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7e, 0x08, 0x1c,
-+ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x90,
-+ 0xfc, 0x50, 0x54, 0x8c, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x4a, 0x2b, 0x2d, 0x0b, 0x7e, 0x09, 0x1c,
-+ 0x1b, 0x2a, 0x48, 0x0b, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0xfc, 0x40, 0xe4, 0x68,
-+ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00,
-+ 0x10, 0x57, 0x34, 0x38, 0x13, 0x7e, 0x12, 0x3a,
-+ 0x36, 0x56, 0x52, 0x14, 0x14, 0x18, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0x00, 0xfc, 0x00, 0xf8, 0xa8,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x16, 0x16, 0x1a, 0x14,
-+ 0x12, 0x1f, 0x11, 0x26, 0x38, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0xb8, 0xbc, 0x54, 0x90,
-+ 0xa0, 0xfc, 0xc0, 0xb0, 0x8c, 0x80, 0x00, 0x00,
-+ 0x10, 0x54, 0x37, 0x38, 0x11, 0x7f, 0x11, 0x39,
-+ 0x35, 0x54, 0x53, 0x10, 0x11, 0x16, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x3d, 0x0b, 0x3f, 0x3b, 0x0d, 0x31, 0x7f, 0x0f,
-+ 0x08, 0x0f, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00,
-+ 0x78, 0x48, 0xf8, 0xb8, 0x48, 0x30, 0xfc, 0xe0,
-+ 0x20, 0xe0, 0xf8, 0x58, 0xf8, 0x18, 0x00, 0x00,
-+ 0x10, 0x57, 0x34, 0x3b, 0x13, 0x7d, 0x10, 0x3b,
-+ 0x34, 0x57, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xfc, 0x58, 0xf8, 0x40, 0xfc,
-+ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x57, 0x36, 0x3b, 0x12, 0x7e, 0x12, 0x3a,
-+ 0x36, 0x57, 0x53, 0x15, 0x15, 0x19, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0x39, 0x08, 0x09, 0x14, 0x23, 0x48, 0x2a,
-+ 0x1d, 0x7e, 0x1c, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x50, 0xfc,
-+ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x2b, 0x2a, 0x3f, 0x4a, 0x7f, 0x4a, 0x2a,
-+ 0x1d, 0x7e, 0x1c, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x50, 0xfc,
-+ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d,
-+ 0x08, 0x2a, 0x29, 0x29, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7d,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x50,
-+ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7d,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x50, 0x48, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x15, 0x65, 0x19, 0x19, 0x25, 0x7d,
-+ 0x11, 0x39, 0x35, 0x35, 0x51, 0x16, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x03, 0x0d, 0x71, 0x02,
-+ 0x1e, 0x03, 0x7f, 0x05, 0x09, 0x31, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x40, 0x80, 0x60, 0x1c, 0x40,
-+ 0xa0, 0x18, 0xe4, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x1a, 0x1a, 0x26, 0x7e,
-+ 0x12, 0x1a, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x15, 0x0d, 0x13, 0x7f,
-+ 0x0d, 0x2b, 0x2b, 0x29, 0x4b, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20,
-+ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x29, 0x49, 0x02,
-+ 0x1e, 0x03, 0x7f, 0x05, 0x09, 0x31, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x40,
-+ 0xa0, 0x18, 0xe4, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x90, 0x88, 0xf4, 0x04,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x0d, 0x0c, 0x13, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x00, 0x00, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x0d, 0x0c, 0x12, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x50, 0x30, 0xdc, 0x10,
-+ 0xf8, 0x90, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xfc, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x15, 0x65, 0x1a, 0x18, 0x24, 0x7d,
-+ 0x13, 0x19, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x80, 0xf8, 0x00, 0x00, 0x80, 0xfc, 0x90, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x28, 0xc8, 0x50, 0x30, 0x48, 0xfc,
-+ 0x24, 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x64, 0x1b, 0x18, 0x24, 0x7c,
-+ 0x13, 0x38, 0x35, 0x35, 0x52, 0x10, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0x24, 0xfc, 0xa0, 0xa8, 0xe8,
-+ 0xa8, 0x90, 0x14, 0x2c, 0x4c, 0x84, 0x00, 0x00,
-+ 0x08, 0x7e, 0x12, 0x12, 0x3c, 0x04, 0x1b, 0x62,
-+ 0x1c, 0x03, 0x7f, 0x05, 0x09, 0x31, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x40,
-+ 0xa0, 0x18, 0xe4, 0x40, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x73, 0x15, 0x0d, 0x13, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0x48, 0x30, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x50, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e,
-+ 0x0d, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa8, 0x50, 0xa8, 0xa8, 0x00,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x08, 0xf0, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0xf0,
-+ 0x50, 0x50, 0x9c, 0x84, 0x04, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x16, 0x14, 0x37, 0x54, 0x15,
-+ 0x14, 0x17, 0x15, 0x15, 0x12, 0x10, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0x60, 0xf0, 0x4c, 0x50, 0xb0,
-+ 0x48, 0xfc, 0x50, 0x48, 0x48, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0d, 0x12, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x08, 0x10, 0xe8, 0xa4, 0x94, 0x20, 0x20, 0xfc,
-+ 0x48, 0x48, 0xf0, 0x10, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x20, 0x40,
-+ 0xfc, 0x04, 0x04, 0x04, 0xfc, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x64, 0x29, 0x18, 0x25, 0x7e,
-+ 0x18, 0x35, 0x35, 0x32, 0x54, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xc8, 0xa8, 0x30, 0x40,
-+ 0xa0, 0xa8, 0x84, 0x84, 0x90, 0x70, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x60, 0x50, 0x88, 0xfc, 0x08,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x00, 0x3f, 0x22, 0x3e, 0x23, 0x22,
-+ 0x4e, 0x01, 0x7f, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x50, 0x60, 0x90, 0x4c,
-+ 0xc0, 0x30, 0xc8, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa4, 0xfc, 0x20, 0xfc, 0x50, 0x88,
-+ 0xf4, 0x90, 0x90, 0xb4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x0c, 0x0d, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0xe8, 0xa4, 0x94, 0x10, 0x20, 0x20,
-+ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x12, 0x12, 0x14, 0x66, 0x1a, 0x18, 0x27, 0x7e,
-+ 0x12, 0x3b, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0x48, 0x48, 0x00, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2b, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x3c, 0x20, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2d, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xe8, 0x28, 0x34, 0xcc, 0x50,
-+ 0x5c, 0xe8, 0x28, 0x14, 0x6c, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x26, 0x7f,
-+ 0x18, 0x34, 0x36, 0x32, 0x54, 0x10, 0x00, 0x00,
-+ 0x80, 0xf8, 0x48, 0xf8, 0xa8, 0x68, 0x98, 0xf8,
-+ 0x40, 0xa8, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x1b, 0x1a, 0x27, 0x7e,
-+ 0x1a, 0x36, 0x36, 0x32, 0x54, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x65, 0x1b, 0x19, 0x26, 0x7f,
-+ 0x10, 0x3a, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x88, 0xf8,
-+ 0x88, 0xa8, 0xa8, 0xe8, 0x28, 0x30, 0x00, 0x00,
-+ 0x08, 0x11, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x09,
-+ 0x7e, 0x4a, 0x4a, 0x4a, 0x4f, 0x08, 0x00, 0x00,
-+ 0x0c, 0xf0, 0x20, 0xc8, 0x50, 0x30, 0x48, 0xfc,
-+ 0x24, 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x64, 0x19, 0x1b, 0x24, 0x7f,
-+ 0x12, 0x3b, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x65, 0x19, 0x19, 0x25, 0x7d,
-+ 0x19, 0x35, 0x35, 0x32, 0x53, 0x16, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x20, 0x20,
-+ 0xfc, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x73, 0x16, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x90, 0x90, 0xf0,
-+ 0x80, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x67, 0x2a, 0x1b, 0x26, 0x7f,
-+ 0x13, 0x3b, 0x37, 0x33, 0x54, 0x18, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xe8,
-+ 0x50, 0x54, 0xdc, 0x6c, 0x44, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0f, 0x12, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0xa8, 0xa8, 0xfc, 0xa8, 0xb8, 0x80, 0xfc, 0x20,
-+ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x26, 0x7f,
-+ 0x12, 0x3a, 0x37, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x80, 0x70, 0x50, 0x54, 0xd4, 0x4c, 0x80, 0xf8,
-+ 0x48, 0x28, 0xb0, 0x10, 0x28, 0xc4, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x69, 0x2a, 0x1a, 0x27, 0x7d,
-+ 0x17, 0x39, 0x35, 0x31, 0x56, 0x10, 0x00, 0x00,
-+ 0x20, 0xe0, 0x20, 0x20, 0xbc, 0xc8, 0x68, 0x28,
-+ 0xe8, 0x10, 0x50, 0xa8, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x26, 0x7f,
-+ 0x12, 0x3a, 0x37, 0x36, 0x50, 0x10, 0x00, 0x00,
-+ 0x10, 0x90, 0x90, 0xb8, 0xb8, 0xb4, 0xd4, 0xd4,
-+ 0xb8, 0x88, 0x90, 0xa0, 0x40, 0x80, 0x00, 0x00,
-+ 0x10, 0x11, 0x15, 0x65, 0x29, 0x19, 0x25, 0x7d,
-+ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xfc, 0x10, 0xcc,
-+ 0xfc, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x67, 0x2a, 0x1b, 0x26, 0x7f,
-+ 0x13, 0x3b, 0x37, 0x34, 0x55, 0x1a, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0xa8, 0xe8,
-+ 0x58, 0x50, 0x94, 0xec, 0x2c, 0x44, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x65, 0x2a, 0x18, 0x24, 0x7d,
-+ 0x13, 0x39, 0x35, 0x35, 0x53, 0x10, 0x00, 0x00,
-+ 0xf0, 0x10, 0x90, 0xf8, 0x04, 0xb0, 0x90, 0x08,
-+ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1e, 0x52, 0x5e, 0x52, 0x5e, 0x52, 0x5f,
-+ 0x40, 0x7e, 0x2c, 0x2a, 0x4b, 0x08, 0x00, 0x00,
-+ 0x04, 0xf8, 0x20, 0xc8, 0x50, 0x30, 0x48, 0xfc,
-+ 0x24, 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x66, 0x2c, 0x1b, 0x25, 0x7c,
-+ 0x13, 0x38, 0x37, 0x34, 0x50, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x48, 0x40, 0xf8, 0x10, 0xa0,
-+ 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7f,
-+ 0x0c, 0x2a, 0x2b, 0x2a, 0x4f, 0x08, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xfc,
-+ 0x80, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x6a, 0x2d, 0x19, 0x25, 0x7e,
-+ 0x16, 0x3a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0x50, 0xb8, 0xa4, 0x24, 0xa0,
-+ 0xa0, 0xb8, 0xa0, 0xe0, 0x20, 0x1c, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x26, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x34, 0x58, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xfc, 0xa8, 0xf0,
-+ 0x9c, 0x10, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x64, 0x29, 0x1b, 0x24, 0x7f,
-+ 0x11, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0x90, 0x68, 0xfc, 0x00, 0xfc,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x12, 0x11, 0x15, 0x64, 0x2a, 0x19, 0x25, 0x7c,
-+ 0x13, 0x39, 0x35, 0x35, 0x52, 0x14, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x48, 0x78, 0x40, 0x78,
-+ 0x48, 0x48, 0x78, 0x48, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x39, 0x29, 0x2a, 0x2f, 0x39, 0x2a, 0x2d,
-+ 0x38, 0x2f, 0x29, 0x29, 0x2a, 0x58, 0x00, 0x00,
-+ 0x40, 0x50, 0xf8, 0xa4, 0xfc, 0x50, 0x58, 0xb4,
-+ 0x48, 0xfc, 0x50, 0x48, 0x48, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x67, 0x28, 0x1b, 0x24, 0x7c,
-+ 0x13, 0x39, 0x34, 0x35, 0x50, 0x13, 0x00, 0x00,
-+ 0x00, 0xfc, 0xcc, 0x74, 0xcc, 0x74, 0x44, 0xa0,
-+ 0x70, 0x9c, 0x68, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x69, 0x2f, 0x14, 0x2c, 0x7f,
-+ 0x15, 0x39, 0x35, 0x35, 0x51, 0x16, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x20, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0x30, 0x28, 0xfc, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x16, 0x16, 0x1a, 0x11,
-+ 0x17, 0x10, 0x1f, 0x22, 0x2c, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0xb8, 0xbc, 0xd4, 0x20,
-+ 0x60, 0x98, 0xe4, 0xb0, 0x88, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7f,
-+ 0x09, 0x2d, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x6b, 0x2a, 0x1b, 0x24, 0x7d,
-+ 0x10, 0x3b, 0x35, 0x35, 0x52, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf0,
-+ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00,
-+ 0x10, 0x12, 0x16, 0x67, 0x28, 0x1b, 0x26, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x34, 0x54, 0x19, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xb8, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xb8, 0xa8, 0xc8, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e,
-+ 0x08, 0x2d, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x48, 0xf0, 0x28, 0xc4, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x24, 0x7d,
-+ 0x10, 0x3b, 0x35, 0x35, 0x52, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90, 0xb0,
-+ 0x48, 0xf4, 0x50, 0x48, 0x48, 0x40, 0x00, 0x00,
-+ 0x12, 0x11, 0x15, 0x64, 0x2a, 0x19, 0x25, 0x7c,
-+ 0x13, 0x39, 0x35, 0x35, 0x52, 0x14, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xe0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x13, 0x14, 0x67, 0x2b, 0x1b, 0x24, 0x7d,
-+ 0x10, 0x3b, 0x34, 0x34, 0x53, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xfc, 0x58, 0xf8, 0x40, 0xf8,
-+ 0x00, 0xfc, 0x50, 0x88, 0xf4, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x26, 0x7e,
-+ 0x12, 0x3a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xe8, 0xa8,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x68, 0x08, 0x00, 0x00,
-+ 0x12, 0x12, 0x17, 0x6a, 0x2f, 0x18, 0x2b, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xe0, 0xa0, 0xfc, 0x48, 0xa8, 0xa8,
-+ 0xa8, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x14, 0x67, 0x29, 0x1b, 0x25, 0x7d,
-+ 0x13, 0x3b, 0x34, 0x34, 0x51, 0x12, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x09, 0x0a, 0x72, 0x17, 0x0c, 0x12, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x73, 0x14, 0x0d, 0x12, 0x7e,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x54, 0x88, 0xfc, 0x88, 0xf8,
-+ 0x88, 0xf8, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x28, 0x1b, 0x24, 0x7f,
-+ 0x11, 0x3f, 0x34, 0x37, 0x50, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x14, 0x65, 0x2a, 0x1b, 0x27, 0x7e,
-+ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xfc, 0x58, 0xe8,
-+ 0xf8, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x29, 0x1a, 0x26, 0x7f,
-+ 0x12, 0x3a, 0x37, 0x36, 0x50, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xb8, 0xa0, 0xb8, 0xa8, 0xb8,
-+ 0xa8, 0xa8, 0xb8, 0xa4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x12, 0x17, 0x66, 0x2a, 0x1b, 0x27, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x37, 0x53, 0x12, 0x00, 0x00,
-+ 0x90, 0xd8, 0x68, 0xd0, 0xa8, 0xf8, 0xfc, 0xd8,
-+ 0x68, 0x90, 0x68, 0xf8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x14, 0x67, 0x2b, 0x1f, 0x24, 0x7f,
-+ 0x10, 0x3b, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0x40, 0xfc,
-+ 0x40, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x17, 0x68, 0x2f, 0x12, 0x2a, 0x7d,
-+ 0x11, 0x39, 0x35, 0x35, 0x52, 0x14, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0xf8, 0xe8, 0xf8, 0xe4,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e,
-+ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0x70, 0x8c, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x0b, 0x73, 0x14, 0x0d, 0x12, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x20, 0xfc, 0x08, 0xfc, 0xa8, 0x70, 0x78, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0x88, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x7d, 0x2e, 0x2a, 0x29, 0x7e, 0x13,
-+ 0x1d, 0x75, 0x15, 0x25, 0x29, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x7c, 0xa8, 0xa8, 0x28, 0xfc, 0xd0,
-+ 0x10, 0xfc, 0x50, 0x50, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x26, 0x7f,
-+ 0x18, 0x37, 0x36, 0x32, 0x57, 0x10, 0x00, 0x00,
-+ 0x10, 0xd0, 0x90, 0xdc, 0x60, 0xc0, 0xb8, 0xc0,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x15, 0x67, 0x29, 0x19, 0x27, 0x7c,
-+ 0x13, 0x3a, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00,
-+ 0x00, 0x7c, 0x10, 0xd0, 0x38, 0x28, 0xb8, 0x28,
-+ 0xb8, 0xa8, 0xb8, 0xa8, 0xa4, 0x44, 0x00, 0x00,
-+ 0x11, 0x13, 0x15, 0x67, 0x29, 0x1a, 0x25, 0x7d,
-+ 0x11, 0x39, 0x35, 0x35, 0x50, 0x13, 0x00, 0x00,
-+ 0x10, 0xb8, 0x10, 0xfc, 0x10, 0xa8, 0xf4, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x10, 0x17, 0x11, 0x67, 0x2a, 0x1b, 0x27, 0x7f,
-+ 0x11, 0x39, 0x35, 0x35, 0x51, 0x16, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0xf8, 0xb8, 0x38, 0xf8, 0xf0,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x66, 0x2a, 0x1a, 0x26, 0x7e,
-+ 0x13, 0x3a, 0x37, 0x34, 0x54, 0x1b, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf8,
-+ 0xfc, 0xa8, 0x74, 0xf8, 0x20, 0xfc, 0x00, 0x00,
-+ 0x11, 0x11, 0x15, 0x67, 0x2a, 0x1a, 0x24, 0x7e,
-+ 0x19, 0x35, 0x35, 0x32, 0x54, 0x10, 0x00, 0x00,
-+ 0x00, 0x7c, 0x10, 0xd0, 0xb8, 0x68, 0xf8, 0xa8,
-+ 0xb8, 0xa8, 0x78, 0x68, 0x24, 0x44, 0x00, 0x00,
-+ 0x10, 0x13, 0x16, 0x67, 0x2b, 0x1a, 0x27, 0x7d,
-+ 0x12, 0x3b, 0x34, 0x35, 0x50, 0x13, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xb8, 0xa8, 0xb8, 0xa8,
-+ 0x44, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00,
-+ 0x10, 0x11, 0x17, 0x65, 0x29, 0x19, 0x25, 0x7f,
-+ 0x10, 0x3b, 0x35, 0x35, 0x50, 0x17, 0x00, 0x00,
-+ 0xf0, 0x20, 0xf8, 0xf8, 0xe4, 0x38, 0xe4, 0x5c,
-+ 0xf0, 0xf0, 0x50, 0xf8, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x12, 0x12, 0x13, 0x6d, 0x2f, 0x1a, 0x2e, 0x7a,
-+ 0x16, 0x3a, 0x3e, 0x33, 0x56, 0x10, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xa8, 0x68, 0xfc, 0xa0, 0xe8, 0xa8,
-+ 0xe8, 0xd0, 0x90, 0xf4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x11, 0x11, 0x17, 0x69, 0x2f, 0x1a, 0x2e, 0x7a,
-+ 0x16, 0x3a, 0x3e, 0x33, 0x56, 0x10, 0x00, 0x00,
-+ 0x20, 0x30, 0xe8, 0x28, 0xfc, 0xa0, 0xe8, 0xa8,
-+ 0xe8, 0xd0, 0x90, 0xf4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x01, 0x3f, 0x0f, 0x7f, 0x0f, 0x7f, 0x1f, 0x2e,
-+ 0x2f, 0x2e, 0x2e, 0x3f, 0x2a, 0x49, 0x00, 0x00,
-+ 0x00, 0xf8, 0xe0, 0xfc, 0xe0, 0xfc, 0xe0, 0xdc,
-+ 0xf8, 0xd0, 0x28, 0xfc, 0x58, 0x94, 0x00, 0x00,
-+ 0x10, 0x17, 0x15, 0x6f, 0x2f, 0x15, 0x2f, 0x7d,
-+ 0x19, 0x35, 0x35, 0x31, 0x50, 0x17, 0x00, 0x00,
-+ 0x20, 0xbc, 0x40, 0xf8, 0xfc, 0x74, 0xfc, 0xf0,
-+ 0xf0, 0xf0, 0x10, 0xf4, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x10, 0x11, 0x1e, 0x28, 0x48, 0x7f, 0x08, 0x2a,
-+ 0x2a, 0x2a, 0x2a, 0x3e, 0x23, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x1e, 0x28, 0x48, 0x7f, 0x08, 0x2b,
-+ 0x2a, 0x2a, 0x2a, 0x3e, 0x23, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x28, 0x28, 0x28, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x3f, 0x29, 0x49, 0x7f, 0x09,
-+ 0x2d, 0x2d, 0x2d, 0x3e, 0x26, 0x24, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x58, 0xe8, 0x38, 0x18, 0xe8,
-+ 0xa8, 0x70, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x3e, 0x14, 0x66,
-+ 0x0f, 0x11, 0x7f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xf8, 0x50, 0x8c,
-+ 0xf0, 0x00, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x0f, 0x09, 0x0f, 0x0f, 0x3e, 0x3e, 0x2a,
-+ 0x3e, 0x0f, 0x7f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0xf8, 0xa8,
-+ 0xf8, 0xe0, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x3f, 0x2b, 0x48, 0x7f, 0x0b,
-+ 0x2d, 0x2c, 0x2f, 0x3c, 0x24, 0x23, 0x00, 0x00,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x78,
-+ 0xd8, 0xf0, 0xfc, 0x90, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x3f, 0x29, 0x49, 0x7e, 0x09,
-+ 0x2f, 0x2d, 0x2d, 0x3d, 0x25, 0x21, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0xf8, 0x68, 0xf8, 0x90, 0xfc,
-+ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x44, 0x44, 0x44, 0x66, 0x55, 0x48,
-+ 0x4c, 0x4c, 0x53, 0x51, 0x62, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x88,
-+ 0xc8, 0xc8, 0x28, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x1f, 0x01,
-+ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xf0, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x22, 0x22, 0x3f, 0x21, 0x27,
-+ 0x24, 0x24, 0x24, 0x23, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xf8, 0x08, 0xe8,
-+ 0x08, 0x08, 0x08, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x00, 0x7f, 0x00,
-+ 0x01, 0x07, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x80,
-+ 0x80, 0x60, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x21, 0x01, 0x7f,
-+ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x1f, 0x10, 0x1f,
-+ 0x11, 0x1f, 0x10, 0x10, 0x1f, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x00, 0xf8, 0x80, 0x44, 0x34, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x02, 0x7f, 0x09, 0x1f,
-+ 0x69, 0x0f, 0x09, 0x0f, 0x09, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xfc, 0x20, 0xf0,
-+ 0x2c, 0xe0, 0x20, 0xe8, 0x08, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x01, 0x01, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x08, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x20, 0x20, 0xfc,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x1c, 0x7f, 0x00,
-+ 0x1c, 0x1c, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x10, 0x10, 0xfc, 0x10,
-+ 0x90, 0x50, 0x50, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x10, 0x14, 0x64, 0x19,
-+ 0x15, 0x7f, 0x2d, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0xf0, 0x90, 0xf0, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x14, 0x7e, 0x3e, 0x22,
-+ 0x3e, 0x3e, 0x22, 0x26, 0x24, 0x42, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x90, 0xe0, 0x88, 0x78,
-+ 0x90, 0xe0, 0x88, 0x78, 0x88, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x7f, 0x0f, 0x08, 0x0f,
-+ 0x0f, 0x7f, 0x1f, 0x69, 0x09, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0xe0, 0xfc, 0xf0, 0x2c, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x14, 0x7f, 0x14, 0x1c,
-+ 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0xfc, 0xa0, 0xf8, 0xa0,
-+ 0xf8, 0xa0, 0xfc, 0xd4, 0x6c, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x14, 0x7f, 0x14, 0x1c,
-+ 0x3f, 0x2a, 0x3e, 0x7f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x20, 0xf8, 0x60, 0x90,
-+ 0xfc, 0xe8, 0xa8, 0xe8, 0x88, 0x18, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x01, 0x1f, 0x01,
-+ 0x01, 0x7f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0xf0, 0x00,
-+ 0x00, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00,
-+ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x08,
-+ 0x0f, 0x11, 0x2f, 0x42, 0x3f, 0x00, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00,
-+ 0xe0, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x08, 0x3e, 0x08,
-+ 0x0e, 0x78, 0x10, 0x11, 0x27, 0x40, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xa0, 0xfc, 0x90,
-+ 0x90, 0x94, 0xcc, 0x8c, 0xf4, 0x04, 0x00, 0x00,
-+ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x09, 0x3e, 0x09,
-+ 0x0e, 0x78, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x7f, 0x1f, 0x07, 0x1c, 0x67,
-+ 0x04, 0x3f, 0x1f, 0x01, 0x7f, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0xf8, 0x08, 0xf8,
-+ 0x40, 0xf8, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x08, 0x3e, 0x08,
-+ 0x0f, 0x79, 0x11, 0x11, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc,
-+ 0x24, 0x64, 0x94, 0xf4, 0x04, 0x18, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x06, 0x38,
-+ 0x7f, 0x1a, 0x7f, 0x1e, 0x02, 0x0d, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x50, 0x48,
-+ 0xfc, 0x28, 0x28, 0x14, 0x6c, 0x84, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x7f, 0x24, 0x4a, 0x3f,
-+ 0x0f, 0x7f, 0x01, 0x7f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0xfc, 0x88, 0x64, 0xf8,
-+ 0xe0, 0xfc, 0x00, 0xfc, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x24, 0x42,
-+ 0x3f, 0x0f, 0x01, 0x7f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x88, 0x44,
-+ 0xf8, 0xe0, 0x00, 0xfc, 0x60, 0x1c, 0x00, 0x00,
-+ 0x44, 0x2b, 0x7f, 0x12, 0x12, 0x3a, 0x13, 0x1d,
-+ 0x71, 0x11, 0x21, 0x21, 0x47, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x1f, 0x1f, 0x10, 0x1f, 0x3a,
-+ 0x2f, 0x3b, 0x29, 0x3f, 0x29, 0x59, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0xf0, 0x10, 0xf0, 0xb8,
-+ 0xe8, 0xa8, 0x38, 0xec, 0x2c, 0x44, 0x00, 0x00,
-+ 0x08, 0x3f, 0x01, 0x1f, 0x7f, 0x01, 0x19, 0x7f,
-+ 0x19, 0x19, 0x3d, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x20, 0xf8, 0x00, 0xf0, 0xfc, 0x00, 0x30, 0xfc,
-+ 0x30, 0x30, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x11, 0x12, 0x7c, 0x24,
-+ 0x15, 0x1a, 0x08, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0xd8, 0x68, 0x48, 0xd8, 0xd8,
-+ 0x68, 0x48, 0x48, 0xd8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x02, 0x3f,
-+ 0x04, 0x09, 0x31, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x00, 0xc0,
-+ 0x44, 0x3c, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7d, 0x09, 0x4a, 0x2c, 0x28,
-+ 0x29, 0x11, 0x1a, 0x64, 0x00, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x98, 0x98, 0xa8, 0xc8, 0x98,
-+ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x70, 0x0f, 0x08, 0x0f, 0x00,
-+ 0x7f, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00,
-+ 0x00, 0x80, 0xe0, 0x1c, 0xe0, 0x20, 0xe0, 0x00,
-+ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x44, 0x27, 0x28, 0x7c, 0x12, 0x11, 0x3d, 0x10,
-+ 0x19, 0x72, 0x14, 0x10, 0x20, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xc8, 0xa8, 0xa8, 0x88,
-+ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x04, 0x7c, 0x04, 0x3c, 0x04, 0x7c, 0x08, 0x7f,
-+ 0x06, 0x1a, 0x67, 0x1a, 0x63, 0x06, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf8, 0x80, 0xfc, 0x80, 0xf8,
-+ 0x18, 0x68, 0x98, 0x68, 0x88, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x3e, 0x3a, 0x26, 0x3a, 0x26, 0x26,
-+ 0x7f, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x08, 0x48, 0x48, 0x48, 0x48, 0x18,
-+ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3e,
-+ 0x2e, 0x7f, 0x6e, 0x2e, 0x2e, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xd8, 0xd8, 0x68, 0x48, 0xd8,
-+ 0xd8, 0x68, 0x48, 0x48, 0x48, 0xd8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2e, 0x34, 0x3f, 0x2c, 0x32, 0x3f,
-+ 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc,
-+ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x08, 0x3d, 0x08, 0x7e, 0x25, 0x7e, 0x24, 0x3e,
-+ 0x41, 0x7e, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0xd8, 0x68, 0x48, 0xd8, 0xd8,
-+ 0x68, 0x48, 0x48, 0xdc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x06, 0x7b, 0x2a, 0x1c, 0x7f, 0x1c, 0x1a, 0x29,
-+ 0x7e, 0x2a, 0x3e, 0x2a, 0x3f, 0x22, 0x00, 0x00,
-+ 0x00, 0xf4, 0x78, 0xb8, 0xb4, 0xac, 0xa4, 0xf4,
-+ 0xb8, 0xb8, 0xb4, 0xac, 0x2c, 0x24, 0x00, 0x00,
-+ 0x02, 0x1f, 0x02, 0x7f, 0x03, 0x0f, 0x72, 0x01,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0xe0, 0x40, 0xfc, 0x30, 0xc8, 0x08, 0xf8,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x02, 0x1f, 0x02, 0x7f, 0x03, 0x0f, 0x72, 0x01,
-+ 0x1f, 0x03, 0x3e, 0x03, 0x7e, 0x01, 0x00, 0x00,
-+ 0x10, 0xe0, 0x40, 0xfc, 0x30, 0xc8, 0x08, 0xf8,
-+ 0x80, 0xf0, 0x00, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x02, 0x1f, 0x02, 0x7f, 0x03, 0x0f, 0x71, 0x3f,
-+ 0x02, 0x3f, 0x0f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x10, 0xe0, 0x40, 0xfc, 0x30, 0xc4, 0xfc, 0xf8,
-+ 0x20, 0xf8, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x01, 0x7f,
-+ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc,
-+ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x0e, 0x78, 0x08, 0x3e, 0x09, 0x7e, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x08, 0x0e, 0x78, 0x08, 0x3e, 0x08, 0x7f, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x0e, 0x78, 0x08, 0x3e, 0x08, 0x7e, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0xf0, 0x90, 0x80,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x1f, 0x72, 0x12, 0x3b, 0x12, 0x7e, 0x1b,
-+ 0x36, 0x36, 0x53, 0x16, 0x10, 0x11, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xc8, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x0f, 0x79, 0x09, 0x3f, 0x09, 0x7f, 0x0d,
-+ 0x1b, 0x1b, 0x29, 0x4a, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xfc, 0x54, 0x78,
-+ 0xcc, 0xfc, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x12, 0x1e, 0x12, 0x12, 0x1f,
-+ 0x12, 0x12, 0x1e, 0x72, 0x03, 0x02, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x24, 0xa4, 0xa8, 0xb0, 0x20,
-+ 0x30, 0x50, 0x50, 0x88, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x3c, 0x64, 0x07, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xa0, 0xb8, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2a, 0x2a, 0x3a, 0x2a, 0x2a, 0x3a,
-+ 0x2a, 0x2b, 0x3e, 0x68, 0x09, 0x0a, 0x00, 0x00,
-+ 0x80, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xb8, 0xa0, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x24, 0x3d, 0x27, 0x24, 0x3f,
-+ 0x24, 0x24, 0x3c, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x25, 0x24, 0x3c,
-+ 0x24, 0x24, 0x3c, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x7f, 0x25, 0x25, 0x3d, 0x25, 0x24, 0x3f,
-+ 0x24, 0x24, 0x3c, 0x64, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x12, 0x1e, 0x1e, 0x12, 0x1f, 0x72,
-+ 0x03, 0x09, 0x35, 0x09, 0x31, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x48, 0x30, 0x70, 0x88, 0x44,
-+ 0x90, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x10, 0x1e, 0x28, 0x7f, 0x0c, 0x12, 0x20, 0x7f,
-+ 0x08, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0xfc,
-+ 0x20, 0xe0, 0xe0, 0x3c, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7e, 0x25, 0x25, 0x3e, 0x25, 0x24, 0x3c,
-+ 0x24, 0x24, 0x3c, 0x64, 0x05, 0x06, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0xe0, 0x20, 0x1c, 0x00, 0x00,
-+ 0x01, 0x7d, 0x2e, 0x2a, 0x39, 0x2a, 0x2f, 0x38,
-+ 0x28, 0x2f, 0x38, 0x68, 0x09, 0x0a, 0x00, 0x00,
-+ 0x10, 0x10, 0xe8, 0xa8, 0x10, 0xa8, 0xfc, 0x44,
-+ 0x90, 0xfc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x09, 0x31, 0x0a, 0x15, 0x71, 0x12, 0x14, 0x7f,
-+ 0x08, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x10, 0x90, 0x68, 0x44, 0x78, 0xc0, 0x7c, 0xfc,
-+ 0x20, 0xe0, 0xe0, 0x3c, 0xe0, 0x20, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x3e, 0x2a, 0x3e, 0x21,
-+ 0x5f, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x70, 0x50, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc,
-+ 0xf8, 0xe0, 0xe0, 0x38, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d,
-+ 0x24, 0x25, 0x3d, 0x66, 0x04, 0x04, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0x78, 0xa8, 0x68, 0x98, 0xf8,
-+ 0x40, 0xa8, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00,
-+ 0x00, 0x3f, 0x04, 0x07, 0x07, 0x3f, 0x00, 0x7f,
-+ 0x12, 0x1e, 0x1e, 0x12, 0x7f, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xc0, 0xc0, 0xc0, 0x40, 0xfc,
-+ 0x90, 0xf0, 0xf0, 0x90, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2a, 0x2d, 0x3a, 0x2c, 0x2b, 0x3a,
-+ 0x2f, 0x28, 0x3f, 0x68, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x70, 0xf8, 0xa8,
-+ 0xfc, 0x00, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7c, 0x2f, 0x38, 0x3b, 0x2a, 0x3b, 0x68,
-+ 0x7f, 0x28, 0x7a, 0x3a, 0x6c, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xf8, 0x00,
-+ 0xfc, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x01,
-+ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x00,
-+ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x20, 0x26, 0x38, 0x22, 0x1f, 0x10, 0x1e, 0x28,
-+ 0x7e, 0x08, 0x15, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x20, 0x3c, 0x21, 0x3c, 0x20, 0x7e,
-+ 0x10, 0x18, 0x25, 0x2a, 0x72, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x15, 0x1d,
-+ 0x11, 0x1f, 0x11, 0x1d, 0x25, 0x45, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x50, 0x70,
-+ 0x10, 0xf0, 0x10, 0x70, 0x50, 0x50, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3c, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x20, 0x20, 0x1f, 0x00, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x3c, 0x24, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x68,
-+ 0x98, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xe8, 0x08, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x60, 0x60,
-+ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x09, 0x17, 0x61, 0x00, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0xf8, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x25, 0x3e, 0x24, 0x24,
-+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x7c, 0x40,
-+ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x27, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0xd4, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00,
-+ 0x01, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x00, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3c, 0x24, 0x25,
-+ 0x3e, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x40, 0x60, 0xd0, 0x48,
-+ 0x44, 0x44, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x26, 0x3f, 0x24, 0x24,
-+ 0x3f, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0x50, 0x48, 0x44, 0xf8, 0x40, 0x40,
-+ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x24, 0x3f, 0x24, 0x24,
-+ 0x3d, 0x25, 0x26, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x20, 0x20, 0xc0, 0x48, 0xe8, 0xf0, 0xe0,
-+ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x25, 0x3e, 0x24, 0x27,
-+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xe8, 0x04, 0xf8,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x26, 0x25, 0x25, 0x3c, 0x27, 0x24,
-+ 0x3c, 0x24, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x48, 0x48, 0x50, 0x60, 0x40, 0xfc, 0xa0,
-+ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x25, 0x3d, 0x24, 0x24,
-+ 0x3d, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0x00,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x15, 0x16, 0x34, 0x57, 0x14,
-+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x90, 0x60, 0xf0, 0x0c, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x10, 0x1f, 0x14, 0x37, 0x2c,
-+ 0x5f, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x00, 0xfc, 0x90, 0x60, 0x1c,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x24, 0x3d, 0x25, 0x27,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0xa0, 0x38, 0x48, 0x68,
-+ 0xd0, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x28, 0x29, 0x32, 0x28, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x80, 0xfc, 0x80, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0x2b, 0x2a, 0x3a, 0x2b, 0x2a,
-+ 0x3a, 0x2f, 0x28, 0x28, 0x29, 0x5a, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xfc, 0xa0, 0x90, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3c, 0x24, 0x27, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x50, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x27, 0x24,
-+ 0x3c, 0x27, 0x24, 0x25, 0x25, 0x4e, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0,
-+ 0xe0, 0xbc, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x38, 0x2b, 0x2a, 0x2a, 0x3a, 0x2a, 0x2b,
-+ 0x3a, 0x2a, 0x2a, 0x2c, 0x2c, 0x58, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x48, 0x48, 0x88, 0xfc, 0xc8,
-+ 0xa8, 0xa8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x01, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x24, 0x27,
-+ 0x3c, 0x24, 0x24, 0x25, 0x25, 0x4e, 0x00, 0x00,
-+ 0x08, 0x88, 0x90, 0xfc, 0x90, 0x90, 0x90, 0xfc,
-+ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x38, 0x2f, 0x29, 0x2a, 0x3a, 0x2f, 0x29,
-+ 0x3d, 0x2d, 0x2b, 0x2b, 0x2c, 0x58, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xe0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3c, 0x25, 0x25, 0x26, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xa8, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x24, 0x24,
-+ 0x3d, 0x26, 0x25, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xa0, 0xa0,
-+ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x24, 0x3c, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0x40, 0xf8, 0x28,
-+ 0xe8, 0x28, 0x58, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x26, 0x26, 0x27, 0x3e, 0x26, 0x27,
-+ 0x3e, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x58, 0x48, 0x48, 0x58, 0x48, 0x48, 0x58,
-+ 0x48, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x24,
-+ 0x3d, 0x25, 0x25, 0x25, 0x27, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0x28, 0x58, 0x88, 0xf8, 0x00,
-+ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3b, 0x28, 0x29, 0x29, 0x39, 0x28, 0x2b,
-+ 0x3a, 0x2b, 0x2a, 0x2a, 0x2a, 0x5a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0xa8, 0x38, 0xe8, 0x48, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x24, 0x27, 0x25, 0x24, 0x4c, 0x00, 0x00,
-+ 0x50, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0x58, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x25, 0x24, 0x3f, 0x26, 0x27,
-+ 0x3c, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x48, 0xfc,
-+ 0x40, 0x78, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x7e, 0x11, 0x1e, 0x14, 0x24, 0x39, 0x4f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0xfc, 0x20, 0xe8, 0x90, 0xe8, 0x84, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x26, 0x25, 0x3e, 0x24, 0x25,
-+ 0x3e, 0x25, 0x24, 0x25, 0x24, 0x4f, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xd8, 0xa8, 0xc8, 0x40, 0xb0,
-+ 0x4c, 0xa0, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00,
-+ 0x00, 0x3b, 0x2a, 0x2a, 0x2b, 0x3a, 0x2b, 0x2b,
-+ 0x3b, 0x2a, 0x2b, 0x2a, 0x2b, 0x5a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x38, 0x28, 0xf8, 0x28, 0xe8, 0x78,
-+ 0xf8, 0x68, 0xb8, 0x58, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x26, 0x3f, 0x27, 0x24,
-+ 0x3d, 0x24, 0x27, 0x24, 0x25, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x00,
-+ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x26, 0x24, 0x3d, 0x27, 0x24,
-+ 0x3d, 0x24, 0x25, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa8, 0xa4, 0x1c, 0xf8, 0x90,
-+ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x26, 0x27, 0x3c, 0x24, 0x27,
-+ 0x3c, 0x25, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0x50, 0x88, 0xf4,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x27, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3f, 0x25, 0x25, 0x26, 0x25, 0x4c, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0x00, 0xf8, 0xa8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x38, 0x2f, 0x2b, 0x28, 0x3f, 0x2b, 0x2a,
-+ 0x3b, 0x2b, 0x2a, 0x2b, 0x29, 0x5a, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0x50,
-+ 0xd0, 0xd4, 0x4c, 0xcc, 0x84, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x24, 0x27, 0x3c, 0x25, 0x26,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x18, 0xe8, 0x48, 0xd0, 0xfc, 0xe0, 0x50, 0x4c,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x24, 0x3f, 0x25, 0x25,
-+ 0x3e, 0x24, 0x27, 0x24, 0x24, 0x4c, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0xd0, 0x40, 0xfc, 0x50, 0x50,
-+ 0xe8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x26, 0x27, 0x3f, 0x26, 0x27,
-+ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0x40, 0xa0, 0xf0, 0x08, 0xfc, 0x58, 0xe8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x3d, 0x25, 0x24, 0x26, 0x3d, 0x25, 0x24,
-+ 0x3f, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x78, 0x90, 0xfc, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x48, 0xd8, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x27, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3d, 0x25, 0x25, 0x26, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0x54, 0x8c, 0x70, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x3f, 0x2a, 0x3f, 0x52,
-+ 0x3f, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x9c, 0xf8, 0x50, 0x30, 0xcc,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x3e, 0x32, 0x5e, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x15, 0x1e, 0x14, 0x14,
-+ 0x13, 0x12, 0x13, 0x23, 0x22, 0x42, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0xfc, 0xf8, 0xf8, 0x90, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x27, 0x3c, 0x27, 0x26,
-+ 0x3e, 0x27, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8,
-+ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00,
-+ 0x00, 0x38, 0x2f, 0x28, 0x2f, 0x3a, 0x2b, 0x2c,
-+ 0x39, 0x29, 0x29, 0x29, 0x2a, 0x5c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa4, 0xf8, 0xe8, 0xf8, 0x44,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3b, 0x28, 0x2b, 0x2a, 0x3f, 0x2b, 0x28,
-+ 0x3b, 0x28, 0x2b, 0x2a, 0x2a, 0x5a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40,
-+ 0xf8, 0x80, 0xf8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x28, 0x29, 0x3f, 0x29, 0x29,
-+ 0x3b, 0x2d, 0x28, 0x2a, 0x2a, 0x5c, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xe0, 0x10, 0xf4, 0xb8, 0xb0,
-+ 0xf4, 0xac, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x02, 0x3a, 0x2c, 0x2a, 0x2b, 0x3a, 0x2a, 0x2b,
-+ 0x3b, 0x2a, 0x2b, 0x2a, 0x2b, 0x5e, 0x00, 0x00,
-+ 0x48, 0x48, 0x90, 0x48, 0xf8, 0x68, 0xe8, 0xf8,
-+ 0x68, 0xd8, 0x68, 0xd8, 0x6c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x25, 0x25, 0x3d, 0x25, 0x25,
-+ 0x3c, 0x27, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0xf8, 0x48, 0x68, 0x98, 0xf8, 0x30, 0x00, 0x00,
-+ 0x00, 0x38, 0x2b, 0x2a, 0x2b, 0x3a, 0x2a, 0x2a,
-+ 0x3a, 0x2a, 0x2b, 0x2b, 0x2d, 0x5b, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3f, 0x29, 0x28, 0x2d, 0x3d, 0x2f, 0x29,
-+ 0x3f, 0x2b, 0x2b, 0x2d, 0x2a, 0x5c, 0x00, 0x00,
-+ 0x10, 0xfc, 0x18, 0x14, 0xfc, 0x10, 0xf4, 0xd4,
-+ 0xf8, 0xb8, 0xf4, 0xdc, 0xec, 0x44, 0x00, 0x00,
-+ 0x13, 0x6f, 0x13, 0x2b, 0x7f, 0x3a, 0x57, 0x01,
-+ 0x3f, 0x22, 0x2d, 0x22, 0x2c, 0x20, 0x00, 0x00,
-+ 0x90, 0xe8, 0x90, 0xa8, 0xfc, 0xb8, 0xd4, 0x00,
-+ 0xf8, 0xc8, 0x28, 0xc8, 0x28, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x2f, 0x28, 0x2f, 0x3d, 0x2f, 0x0c,
-+ 0x7c, 0x2f, 0x2d, 0x57, 0x14, 0x20, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0xc8, 0xa8,
-+ 0xb0, 0xb0, 0x14, 0xf4, 0x4c, 0x84, 0x00, 0x00,
-+ 0x01, 0x1f, 0x0f, 0x0f, 0x08, 0x0f, 0x3f, 0x2f,
-+ 0x42, 0x1f, 0x0f, 0x01, 0x3f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0xe0, 0xe0, 0x20, 0xe0, 0xfc, 0xe8,
-+ 0x40, 0xf0, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x7c, 0x13, 0x18, 0x25, 0x7c, 0x13, 0x11,
-+ 0x7e, 0x13, 0x10, 0x1d, 0x62, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x30,
-+ 0xc8, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x01, 0x05, 0x39, 0x21, 0x21, 0x3d, 0x21, 0x21,
-+ 0x3d, 0x21, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x00, 0x78, 0x08, 0x08, 0x78, 0x08, 0x08,
-+ 0x78, 0x88, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x02, 0x1c, 0x10, 0x1e, 0x10, 0x10, 0x1f, 0x12,
-+ 0x02, 0x7f, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x50,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04, 0x1a,
-+ 0x6c, 0x08, 0x0e, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x40, 0x30,
-+ 0xec, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x02, 0x3c, 0x3e, 0x20, 0x3f, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0xf8, 0x08, 0xf8, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00,
-+ 0x0a, 0x32, 0x23, 0x22, 0x3b, 0x20, 0x3a, 0x22,
-+ 0x22, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0x38, 0x88, 0x08, 0xb8, 0x88, 0xb8, 0x88,
-+ 0x88, 0xfc, 0x00, 0x60, 0x18, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x1f, 0x71, 0x1f, 0x1f, 0x1f,
-+ 0x02, 0x1c, 0x1e, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xf8, 0x00, 0xe0, 0xe0, 0xf8,
-+ 0x00, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x18, 0x6f, 0x01, 0x01, 0x3f,
-+ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x00, 0xf8,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xa0, 0xfc, 0xa0,
-+ 0xa0, 0x90, 0x94, 0xac, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x3f, 0x49, 0x09, 0x7f,
-+ 0x09, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x17, 0x1f,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0x24, 0x20,
-+ 0x20, 0x50, 0x48, 0x98, 0xe4, 0x04, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x16, 0x1f,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x09, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x1f,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x1f,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x09, 0x1e, 0x12, 0x1b, 0x16, 0x17, 0x1e,
-+ 0x72, 0x1b, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00,
-+ 0x0c, 0xf0, 0xa8, 0xa4, 0x24, 0x10, 0xf8, 0x10,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x12, 0x1b, 0x16, 0x16, 0x1e,
-+ 0x72, 0x1a, 0x1b, 0x2b, 0x22, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0xf8, 0x04, 0xf8, 0xf8, 0x88,
-+ 0xf8, 0x80, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x10, 0x3d, 0x25, 0x35, 0x2d, 0x2d, 0x3f,
-+ 0x64, 0x37, 0x34, 0x34, 0x25, 0x4e, 0x00, 0x00,
-+ 0x40, 0xc0, 0x58, 0x48, 0xd8, 0x48, 0xd8, 0x48,
-+ 0x40, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x11, 0x3c, 0x27, 0x36, 0x2d, 0x2d, 0x3e,
-+ 0x65, 0x34, 0x37, 0x34, 0x25, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0xd8, 0xd8, 0x40,
-+ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x13, 0x3c, 0x27, 0x36, 0x2f, 0x2e, 0x3f,
-+ 0x65, 0x35, 0x35, 0x35, 0x25, 0x4d, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x16, 0x1e,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x10, 0x3f, 0x24, 0x35, 0x2c, 0x2f, 0x3c,
-+ 0x65, 0x37, 0x34, 0x37, 0x24, 0x4d, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x68,
-+ 0xa4, 0xfc, 0xe8, 0x94, 0xec, 0x84, 0x00, 0x00,
-+ 0x08, 0x10, 0x3f, 0x25, 0x35, 0x2e, 0x2f, 0x3c,
-+ 0x67, 0x36, 0x36, 0x36, 0x27, 0x4e, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x50, 0x50, 0xe8, 0xfc, 0x00,
-+ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x13, 0x3c, 0x27, 0x36, 0x2c, 0x2f, 0x3c,
-+ 0x67, 0x34, 0x37, 0x34, 0x27, 0x4c, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0xfc, 0xe8, 0x00, 0xfc, 0x48,
-+ 0xe8, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00,
-+ 0x08, 0x10, 0x3f, 0x25, 0x35, 0x2d, 0x2d, 0x3d,
-+ 0x66, 0x35, 0x35, 0x35, 0x25, 0x4d, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xf8, 0x48, 0xf8, 0xf8, 0xa8,
-+ 0x54, 0xf8, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x10, 0x3d, 0x25, 0x35, 0x2d, 0x2d, 0x3d,
-+ 0x65, 0x35, 0x35, 0x36, 0x26, 0x4d, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00,
-+ 0x04, 0x09, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x1f,
-+ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x47, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x1c, 0x3e, 0x2a, 0x3e, 0x08,
-+ 0x3e, 0x08, 0x7e, 0x14, 0x22, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0xa4,
-+ 0xa4, 0xa8, 0x90, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x5b, 0x7f, 0x5b, 0x7f, 0x7f, 0x5b, 0x7f, 0x00,
-+ 0x7f, 0x3e, 0x22, 0x3e, 0x16, 0x78, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
-+ 0x3e, 0x2a, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x08, 0x08, 0x04,
-+ 0x04, 0x02, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x20, 0x20, 0x40,
-+ 0x40, 0x80, 0x00, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x1f, 0x10,
-+ 0x22, 0x41, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x00, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x1f, 0x00, 0x7f,
-+ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x00, 0xfc,
-+ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x04, 0x04, 0x08,
-+ 0x3f, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xc0, 0x48, 0x48, 0x38,
-+ 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x12, 0x72, 0x1f, 0x12, 0x0c, 0x38,
-+ 0x0f, 0x12, 0x72, 0x1f, 0x04, 0x38, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x30, 0x00,
-+ 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x04, 0x08, 0x10,
-+ 0x7f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xc0, 0x40, 0x20, 0x10,
-+ 0xec, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x10, 0x12, 0x11,
-+ 0x11, 0x10, 0x10, 0x16, 0x18, 0x63, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x30, 0x28, 0xc4, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x10, 0x2f,
-+ 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x11, 0x7f, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x20, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x06, 0x03, 0x0c, 0x32, 0x03,
-+ 0x0e, 0x71, 0x01, 0x00, 0x01, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x40, 0x80, 0x80,
-+ 0x60, 0x1c, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x0f, 0x0a, 0x09, 0x7f,
-+ 0x12, 0x11, 0x11, 0x3f, 0x20, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0xf8, 0x40, 0x80, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x1f, 0x20, 0x4f, 0x09,
-+ 0x08, 0x7f, 0x12, 0x11, 0x3f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x00, 0xe0, 0x20,
-+ 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x09, 0x49, 0x21,
-+ 0x21, 0x09, 0x11, 0x11, 0x21, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x08,
-+ 0x08, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x17, 0x10,
-+ 0x31, 0x50, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x10, 0x10, 0xfc, 0x10,
-+ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x09, 0x09, 0x11,
-+ 0x21, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x20, 0x10, 0x08,
-+ 0x08, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x10, 0x2f,
-+ 0x48, 0x0f, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x88,
-+ 0x88, 0x88, 0xb0, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x24, 0x24,
-+ 0x24, 0x24, 0x3c, 0x64, 0x08, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x01,
-+ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00,
-+ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x3f, 0x00,
-+ 0x08, 0x04, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x20,
-+ 0x20, 0x40, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x21, 0x2f,
-+ 0x21, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xe8,
-+ 0x08, 0x88, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x20, 0x27,
-+ 0x24, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x48, 0x48, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x03, 0x3c, 0x03,
-+ 0x06, 0x7f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xe0, 0x40, 0x80,
-+ 0x60, 0xfc, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x32, 0x12,
-+ 0x0c, 0x04, 0x0c, 0x12, 0x7f, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x20, 0xc8, 0x48,
-+ 0x30, 0x10, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x09, 0x09, 0x1f, 0x21,
-+ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x00, 0xf0, 0x00,
-+ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x10, 0x2f,
-+ 0x48, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0x88, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7e, 0x12,
-+ 0x12, 0x3a, 0x24, 0x06, 0x1a, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x88, 0x88,
-+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x7f, 0x02, 0x0f,
-+ 0x08, 0x18, 0x6f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x20, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x18, 0x6f,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0x30, 0xec,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x10, 0x17,
-+ 0x30, 0x50, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x48, 0x40, 0xfc,
-+ 0x40, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x08, 0x4b, 0x22,
-+ 0x22, 0x0a, 0x12, 0x12, 0x21, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xfc, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x03, 0x0e, 0x31,
-+ 0x01, 0x0f, 0x74, 0x04, 0x07, 0x04, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x20, 0x40,
-+ 0x80, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x06, 0x18,
-+ 0x00, 0x7f, 0x12, 0x12, 0x22, 0x4d, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0x10, 0x60,
-+ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x17, 0x10,
-+ 0x32, 0x51, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x80, 0xf8, 0x10,
-+ 0x10, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x78, 0x0b, 0x10, 0x3a,
-+ 0x0a, 0x4a, 0x32, 0x11, 0x2c, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x18, 0xe0, 0x40, 0x40,
-+ 0x78, 0x40, 0x40, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7f,
-+ 0x08, 0x0e, 0x78, 0x08, 0x0b, 0x18, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x48, 0x40, 0xfc,
-+ 0x48, 0x30, 0x20, 0xd4, 0x0c, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x1f, 0x60,
-+ 0x1f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0xf0, 0x0c,
-+ 0xe0, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x09, 0x09,
-+ 0x15, 0x23, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x20, 0x30,
-+ 0x48, 0x88, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x7f, 0x08, 0x11, 0x33,
-+ 0x08, 0x3f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x88, 0x10, 0x30,
-+ 0x88, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x13, 0x12, 0x13, 0x10,
-+ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf0, 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x09, 0x49, 0x22,
-+ 0x22, 0x0c, 0x10, 0x10, 0x21, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x50, 0x48, 0x44,
-+ 0x4c, 0xd0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3c, 0x24, 0x25, 0x3c,
-+ 0x24, 0x3c, 0x24, 0x26, 0x39, 0x62, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x24, 0x24, 0x3c, 0x27,
-+ 0x04, 0x7c, 0x14, 0x14, 0x27, 0x44, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xfc,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x1f, 0x61,
-+ 0x1f, 0x01, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0xf0, 0x0c,
-+ 0xf0, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x1f, 0x11, 0x11,
-+ 0x1f, 0x11, 0x03, 0x05, 0x19, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0x10,
-+ 0xf0, 0x10, 0x40, 0x24, 0x24, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x00, 0x0f, 0x08,
-+ 0x08, 0x0f, 0x04, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xe0, 0x20,
-+ 0x20, 0xe0, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x02, 0x0e, 0x05,
-+ 0x18, 0x61, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0x10, 0x90,
-+ 0x60, 0x00, 0x88, 0x84, 0x24, 0xe0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x7f, 0x05,
-+ 0x19, 0x6f, 0x02, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x70, 0xc0, 0x00, 0xfc, 0x40,
-+ 0x30, 0xcc, 0x40, 0x70, 0x10, 0xe0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x08, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x1f, 0x11, 0x10, 0x1e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf8, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x05, 0x1f,
-+ 0x69, 0x0f, 0x09, 0x0f, 0x09, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x40, 0xf0,
-+ 0x2c, 0xe0, 0x20, 0xe8, 0x08, 0xf8, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x3f, 0x20, 0x4f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x11, 0x1f, 0x01,
-+ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10,
-+ 0x1f, 0x10, 0x1e, 0x10, 0x1e, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0e, 0x08, 0x7f,
-+ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x19, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x48, 0x48,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x0a,
-+ 0x31, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x50,
-+ 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7e, 0x08,
-+ 0x1d, 0x1a, 0x2a, 0x48, 0x0b, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x70, 0x10, 0x90, 0x88,
-+ 0x44, 0x40, 0x50, 0x88, 0xfc, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x1f, 0x01, 0x7f, 0x01,
-+ 0x1f, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xe0, 0x20, 0xfc, 0x20,
-+ 0xe0, 0xfc, 0x40, 0xc0, 0x60, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x01, 0x1f, 0x01, 0x7f,
-+ 0x1f, 0x11, 0x1f, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x00, 0x7f, 0x00, 0x0f,
-+ 0x3f, 0x21, 0x5f, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xfc, 0x20, 0xe0,
-+ 0xfc, 0x08, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x7f, 0x09, 0x08, 0x0e, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xe0, 0x00, 0xe0,
-+ 0x00, 0xfc, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x0b, 0x4a, 0x22,
-+ 0x23, 0x0a, 0x12, 0x12, 0x24, 0x2b, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x48, 0x50,
-+ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x02, 0x02, 0x3e, 0x02,
-+ 0x3e, 0x03, 0x7e, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x80, 0xf8, 0x80,
-+ 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x80, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x13, 0x09, 0x49, 0x22,
-+ 0x20, 0x0f, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x50, 0x48, 0x48,
-+ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x11, 0x09, 0x4a, 0x27,
-+ 0x20, 0x0b, 0x12, 0x12, 0x22, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x70, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x1e, 0x12, 0x1a, 0x16,
-+ 0x12, 0x1a, 0x16, 0x12, 0x22, 0x47, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x78, 0x48, 0x68, 0x58,
-+ 0x48, 0x68, 0x58, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x7f, 0x02, 0x04,
-+ 0x1c, 0x64, 0x3f, 0x04, 0x08, 0x30, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x80, 0x40,
-+ 0x70, 0x4c, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x19, 0x11, 0x1d,
-+ 0x11, 0x1d, 0x12, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x70, 0x10, 0x70,
-+ 0x10, 0x70, 0x90, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x10, 0x0b, 0x48, 0x27, 0x21,
-+ 0x16, 0x11, 0x23, 0x24, 0x41, 0x4e, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x24,
-+ 0x9c, 0xf0, 0x20, 0xc0, 0xb0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x20, 0xfc, 0x20,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x3e, 0x20,
-+ 0x3e, 0x20, 0x3e, 0x20, 0x20, 0x23, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7e,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x28, 0x28, 0x88,
-+ 0x48, 0x4c, 0x38, 0xc8, 0x08, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1e, 0x12, 0x1e, 0x00, 0x1f,
-+ 0x00, 0x7f, 0x04, 0x07, 0x08, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0x00, 0xf0,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x3e, 0x22, 0x3e,
-+ 0x0f, 0x7f, 0x08, 0x0f, 0x10, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xf8, 0x88, 0xf8,
-+ 0xe0, 0xfc, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x20, 0x5e, 0x01,
-+ 0x7e, 0x14, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x18, 0x10, 0xfc,
-+ 0x90, 0x50, 0x50, 0x14, 0x34, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x21, 0x7f, 0x0f, 0x09,
-+ 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x08,
-+ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x78, 0x48, 0x48,
-+ 0x78, 0x48, 0x78, 0x88, 0x88, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x06, 0x1f, 0x72, 0x1f, 0x0c, 0x34,
-+ 0x0f, 0x12, 0x72, 0x1f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xc8, 0x48, 0x30,
-+ 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x38, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x06, 0x1c, 0x10, 0x1e, 0x11,
-+ 0x1f, 0x10, 0x1e, 0x70, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x94, 0x94, 0x0c,
-+ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x3f,
-+ 0x21, 0x4f, 0x09, 0x09, 0x09, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0xfc,
-+ 0x08, 0xe0, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x11, 0x3d, 0x25,
-+ 0x25, 0x3d, 0x25, 0x25, 0x3d, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x48, 0x48,
-+ 0xf8, 0x08, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x09, 0x09, 0x11, 0x10,
-+ 0x37, 0x50, 0x11, 0x16, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x09, 0x0f, 0x09, 0x0f,
-+ 0x01, 0x3f, 0x21, 0x21, 0x2e, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0,
-+ 0x00, 0xf8, 0x48, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x14, 0x64, 0x19,
-+ 0x16, 0x7e, 0x2c, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x80, 0xf8, 0x08,
-+ 0x88, 0x48, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x08,
-+ 0x0e, 0x13, 0x12, 0x22, 0x42, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x80, 0xfc, 0x20, 0xb8,
-+ 0xe8, 0xa8, 0xb8, 0xa4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x09, 0x09, 0x3f,
-+ 0x20, 0x27, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xf8,
-+ 0x08, 0xc8, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x05, 0x19, 0x62, 0x1f, 0x00,
-+ 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xc0, 0x30, 0x4c, 0xe0, 0x00,
-+ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x19,
-+ 0x60, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0x30,
-+ 0x8c, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x06, 0x0c, 0x7f, 0x1f, 0x02, 0x7f,
-+ 0x02, 0x1f, 0x06, 0x1a, 0x62, 0x02, 0x00, 0x00,
-+ 0x40, 0xfc, 0x60, 0xc0, 0xfc, 0xf0, 0x90, 0xfc,
-+ 0x90, 0xf0, 0xc0, 0xb0, 0x8c, 0x80, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x01, 0x7f, 0x0f, 0x08, 0x0f,
-+ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0xe0, 0x20, 0xe0,
-+ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x06,
-+ 0x24, 0x14, 0x18, 0x1e, 0x70, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xc0, 0x80, 0xf8, 0x08, 0xe8,
-+ 0xa8, 0xa8, 0xe8, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x25, 0x25,
-+ 0x2b, 0x31, 0x2f, 0x21, 0x5f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x20,
-+ 0x50, 0x88, 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x07, 0x1e,
-+ 0x63, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0xe0, 0x40, 0xfc, 0xe0, 0x08,
-+ 0xf8, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x02, 0x3e, 0x20,
-+ 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xf8, 0x80,
-+ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0c, 0x08, 0x15, 0x16, 0x34,
-+ 0x57, 0x14, 0x14, 0x14, 0x14, 0x11, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xc0, 0xfc, 0x90, 0x60, 0xd0,
-+ 0x2c, 0xc0, 0x30, 0xc8, 0x30, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x17, 0x10, 0x1f, 0x12,
-+ 0x13, 0x1e, 0x3f, 0x22, 0x41, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x00, 0xfc, 0x48,
-+ 0xb0, 0x2c, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x01, 0x1f, 0x7f, 0x04,
-+ 0x1f, 0x6f, 0x03, 0x0d, 0x31, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0xfc, 0xc0,
-+ 0x30, 0xec, 0xc0, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x22, 0x3f, 0x22, 0x23,
-+ 0x20, 0x2f, 0x28, 0x28, 0x48, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xfc, 0x20, 0xfc, 0x20, 0xe0,
-+ 0x80, 0xf8, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x1f, 0x12, 0x11, 0x16,
-+ 0x1f, 0x10, 0x1e, 0x10, 0x1e, 0x70, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x50, 0x90, 0x50,
-+ 0xf0, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x3f, 0x21,
-+ 0x7f, 0x01, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0xfc, 0x08,
-+ 0xf8, 0x00, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0f, 0x19, 0x66, 0x14, 0x1f,
-+ 0x60, 0x1f, 0x01, 0x09, 0x31, 0x03, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x78, 0x90, 0x60, 0x30, 0xcc,
-+ 0x00, 0xf0, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x28, 0x4f, 0x10,
-+ 0x13, 0x32, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x08, 0xf8, 0x80,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x7f, 0x1f, 0x11, 0x1f, 0x1f,
-+ 0x01, 0x3f, 0x00, 0x7f, 0x04, 0x02, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0xf0,
-+ 0x10, 0xf8, 0x20, 0xfc, 0x20, 0x60, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x01, 0x1f, 0x12, 0x12, 0x1f,
-+ 0x12, 0x12, 0x1f, 0x20, 0x2a, 0x51, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0x40, 0xf0,
-+ 0x40, 0x40, 0xf8, 0x00, 0x48, 0x24, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x02, 0x17, 0x29, 0x7e, 0x04,
-+ 0x19, 0x6e, 0x01, 0x0e, 0x01, 0x1e, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x80, 0xd0, 0x28, 0xfc, 0x40,
-+ 0xb0, 0x4c, 0x90, 0x60, 0x80, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x00, 0x7f, 0x0a, 0x0c, 0x29,
-+ 0x2e, 0x29, 0x29, 0x2d, 0x3a, 0x64, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0xfc, 0x20, 0x48, 0xfc,
-+ 0x00, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x09, 0x7e, 0x08,
-+ 0x0f, 0x13, 0x12, 0x22, 0x42, 0x0d, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xc0, 0x80, 0xfc, 0x80, 0xf8,
-+ 0x20, 0xfc, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0a, 0x7f, 0x0a, 0x33, 0x3f,
-+ 0x21, 0x5f, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xa0, 0xfc, 0xa4, 0x9c, 0xfc,
-+ 0x08, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x14, 0x1f, 0x10, 0x3f, 0x4f, 0x08,
-+ 0x0f, 0x1f, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xe8, 0x88, 0x88,
-+ 0x88, 0xc8, 0xc8, 0x48, 0xc8, 0x30, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3e, 0x0a, 0x36, 0x0b, 0x32,
-+ 0x0d, 0x76, 0x01, 0x0e, 0x01, 0x1e, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x28, 0xd8, 0x28, 0xc8,
-+ 0x60, 0x5c, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x7f, 0x08, 0x3e, 0x2a,
-+ 0x2a, 0x2e, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0xfc, 0x20, 0xf8, 0xa8,
-+ 0xa8, 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x12, 0x09, 0x3f, 0x28,
-+ 0x4e, 0x12, 0x2a, 0x05, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x70, 0x90, 0x20, 0x40, 0xfc, 0x28,
-+ 0xf8, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x08, 0x3e,
-+ 0x0e, 0x71, 0x3f, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0x20, 0xf8,
-+ 0x20, 0xfc, 0xf8, 0x80, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x12, 0x1f, 0x0f,
-+ 0x0f, 0x08, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x90, 0xf0, 0xe0,
-+ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x00, 0x7f, 0x1f, 0x3e,
-+ 0x08, 0x3e, 0x7f, 0x08, 0x04, 0x00, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xfc, 0xf0, 0xf8,
-+ 0x88, 0xf8, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x14, 0x14, 0x23, 0x1a, 0x35,
-+ 0x55, 0x0d, 0x7f, 0x05, 0x19, 0x61, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xb0, 0x48, 0xc0, 0x68, 0xd4,
-+ 0x54, 0x30, 0xfc, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x09, 0x09, 0x09, 0x3f, 0x08,
-+ 0x08, 0x2e, 0x28, 0x2e, 0x39, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x00, 0xf8, 0x20,
-+ 0xa0, 0xb8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x08, 0x69, 0x13, 0x14, 0x2b,
-+ 0x4a, 0x1b, 0x2b, 0x4a, 0x0b, 0x32, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf8, 0xa4, 0xf8,
-+ 0xa8, 0x38, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x13, 0x0a, 0x4a, 0x23, 0x23,
-+ 0x10, 0x17, 0x25, 0x25, 0x4f, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xd0, 0x30, 0xf0,
-+ 0x00, 0xf8, 0x28, 0x28, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x7e, 0x10, 0x1f, 0x14,
-+ 0x27, 0x58, 0x0b, 0x10, 0x27, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xa0, 0xa0, 0xb8, 0xa0,
-+ 0xb8, 0xa0, 0xb8, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x09, 0x06, 0x1f, 0x7f, 0x19, 0x15,
-+ 0x1f, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xc0, 0xf0, 0xfc, 0x30, 0x50,
-+ 0xf0, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x1f, 0x11, 0x1f,
-+ 0x7f, 0x1f, 0x1f, 0x11, 0x1f, 0x7f, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0xf0, 0x10, 0xf0,
-+ 0xfc, 0xf0, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0f, 0x12, 0x3f, 0x55, 0x1f,
-+ 0x15, 0x1f, 0x15, 0x2a, 0x2a, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x08, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x48, 0xc8, 0x88, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x3f, 0x20,
-+ 0x7f, 0x1e, 0x72, 0x0c, 0x18, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0xfc, 0x08,
-+ 0xf8, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x1f, 0x15,
-+ 0x1d, 0x1f, 0x11, 0x1d, 0x25, 0x45, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xfc, 0xf0, 0x50,
-+ 0x70, 0xf0, 0x10, 0x70, 0x50, 0x50, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x09, 0x0d, 0x13, 0x7f,
-+ 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x20, 0x30, 0x48, 0xfc,
-+ 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x0c, 0x10, 0x3d, 0x24, 0x3c,
-+ 0x21, 0x3c, 0x25, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x60, 0x20, 0xfc, 0x88, 0x50,
-+ 0xfc, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x1f, 0x15, 0x7f, 0x1f, 0x1f,
-+ 0x15, 0x1f, 0x7f, 0x1a, 0x06, 0x39, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0x20, 0xfc, 0x48, 0xc8,
-+ 0x28, 0x30, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x22, 0x2a, 0x4a, 0x1f, 0x10,
-+ 0x2f, 0x60, 0x27, 0x25, 0x29, 0x30, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x20, 0xa0, 0xa0, 0xfc, 0x48,
-+ 0xa8, 0x30, 0x10, 0xb0, 0x48, 0x84, 0x00, 0x00,
-+ 0x04, 0x04, 0x7f, 0x04, 0x3c, 0x25, 0x24, 0x3c,
-+ 0x21, 0x3c, 0x65, 0x24, 0x3c, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x60, 0x20, 0xfc, 0x88, 0x50,
-+ 0xfc, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x14, 0x08, 0x7f, 0x0a,
-+ 0x0c, 0x08, 0x08, 0x08, 0x08, 0x19, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x58, 0x84, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x01, 0x3f, 0x2d, 0x4d,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x68, 0x60,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x06, 0x39, 0x08, 0x7f, 0x08,
-+ 0x1d, 0x1a, 0x29, 0x48, 0x08, 0x0b, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa4,
-+ 0x5c, 0x70, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0e, 0x78, 0x08, 0x3f, 0x08,
-+ 0x7e, 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0x50, 0xf8, 0x50, 0xfc, 0x00,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x7f, 0x02, 0x7d, 0x15, 0x2d,
-+ 0x49, 0x0f, 0x08, 0x0f, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x88, 0x70, 0x50, 0xf8,
-+ 0x24, 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x00, 0x2f, 0x28, 0x3f, 0x0d,
-+ 0x7f, 0x2c, 0x2f, 0x55, 0x17, 0x24, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48,
-+ 0xa8, 0xb0, 0x90, 0x34, 0xcc, 0x84, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x3f, 0x1f, 0x08, 0x0f, 0x3f,
-+ 0x2f, 0x42, 0x0f, 0x1f, 0x01, 0x3f, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xf0, 0x20, 0xe0, 0xfc,
-+ 0xe8, 0x40, 0xf0, 0xf0, 0x00, 0xf8, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x0e, 0x73, 0x55, 0x29, 0x19,
-+ 0x6d, 0x14, 0x6c, 0x14, 0x65, 0x1a, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0b, 0x7c, 0x08, 0x3e, 0x08,
-+ 0x7e, 0x1d, 0x1b, 0x2b, 0x49, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x20, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x3e, 0x7f, 0x2d, 0x5f, 0x0e,
-+ 0x39, 0x1f, 0x7f, 0x02, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0x50, 0xd0, 0x74, 0x94,
-+ 0x0c, 0xf0, 0xfc, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x04, 0x7f, 0x15, 0x6b, 0x2a, 0x13, 0x2a, 0x7f,
-+ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00,
-+ 0x40, 0xfc, 0x50, 0xe8, 0xa8, 0x90, 0xa8, 0xfc,
-+ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x06, 0x38, 0x09, 0x7e, 0x1d, 0x6a,
-+ 0x0e, 0x19, 0x65, 0x07, 0x39, 0x03, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xf8, 0x28, 0x48, 0x88, 0xb0,
-+ 0x40, 0x30, 0x4c, 0xc0, 0x38, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3c, 0x00, 0x7e, 0x00, 0x3c,
-+ 0x3c, 0x01, 0x3f, 0x25, 0x3d, 0x21, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0xfc, 0x44, 0x64, 0x94, 0xf4, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x11, 0x15, 0x65, 0x19, 0x15,
-+ 0x7e, 0x09, 0x2d, 0x2b, 0x4b, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x68, 0x98, 0xf8,
-+ 0x00, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x06, 0x38, 0x09, 0x7e, 0x08,
-+ 0x1c, 0x1a, 0x2a, 0x49, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0x70, 0xa0, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x09, 0x28, 0x2e, 0x28, 0x7f,
-+ 0x28, 0x2a, 0x5a, 0x04, 0x18, 0x63, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xfc, 0x20, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x09, 0x7e, 0x08, 0x3f, 0x2a,
-+ 0x3e, 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x98, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0x58, 0x84, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x3e, 0x3e, 0x24,
-+ 0x27, 0x2f, 0x37, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x88, 0xf8, 0xf8, 0x88,
-+ 0xe8, 0xc8, 0xc8, 0x88, 0xe8, 0x18, 0x00, 0x00,
-+ 0x04, 0x7f, 0x05, 0x01, 0x1f, 0x11, 0x1e, 0x17,
-+ 0x14, 0x17, 0x17, 0x2f, 0x29, 0x5f, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0xfc, 0xc8, 0xf8, 0xf0,
-+ 0x90, 0xf0, 0xf0, 0xf8, 0x48, 0xfc, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x3e, 0x14, 0x7e, 0x00, 0x3c,
-+ 0x24, 0x3c, 0x24, 0x3c, 0x24, 0x2c, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc0, 0xfc, 0xf8, 0x08, 0xf8, 0x80,
-+ 0xf8, 0xf8, 0x80, 0xfc, 0x84, 0x7c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0f, 0x12, 0x3f, 0x55, 0x1f,
-+ 0x15, 0x1f, 0x16, 0x2b, 0x2b, 0x40, 0x00, 0x00,
-+ 0x40, 0xfc, 0xc8, 0x48, 0x50, 0xfc, 0x20, 0xf8,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0c, 0x0a, 0x72, 0x14, 0x0d, 0x13,
-+ 0x7f, 0x0d, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf8, 0x88, 0xf8, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x3f, 0x14, 0x74,
-+ 0x1b, 0x7e, 0x2c, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x90, 0xfc,
-+ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x11,
-+ 0x1f, 0x11, 0x11, 0x21, 0x21, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x10, 0x1c, 0xe0,
-+ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x17,
-+ 0x14, 0x14, 0x24, 0x24, 0x40, 0x00, 0x00, 0x00,
-+ 0x78, 0x80, 0x80, 0xfc, 0x80, 0xfc, 0x80, 0xf8,
-+ 0x88, 0x88, 0x88, 0xb0, 0x80, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x10,
-+ 0x1f, 0x12, 0x11, 0x20, 0x23, 0x5c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x08, 0xf8, 0x80,
-+ 0xfc, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3d, 0x01, 0x7f, 0x11,
-+ 0x1d, 0x25, 0x05, 0x0a, 0x0a, 0x35, 0x00, 0x00,
-+ 0x40, 0x78, 0x40, 0xfc, 0x48, 0x70, 0xc4, 0x3c,
-+ 0x50, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x08, 0x0f, 0x3f, 0x2f, 0x39, 0x27, 0x2a, 0x2f,
-+ 0x3a, 0x2f, 0x2f, 0x2a, 0x4f, 0x08, 0x00, 0x00,
-+ 0x00, 0x78, 0xa0, 0x20, 0x20, 0xfc, 0x40, 0xc0,
-+ 0x78, 0x48, 0x08, 0x08, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x03, 0x3c, 0x04, 0x3f, 0x24,
-+ 0x24, 0x3f, 0x25, 0x04, 0x07, 0x78, 0x00, 0x00,
-+ 0x00, 0xe0, 0xa0, 0x20, 0x20, 0x20, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0x14, 0x94, 0x4c, 0x44, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7c, 0x55, 0x55, 0x55, 0x7d,
-+ 0x55, 0x18, 0x14, 0x1e, 0x62, 0x01, 0x00, 0x00,
-+ 0x08, 0xe8, 0x28, 0x28, 0xe8, 0x08, 0x08, 0xe8,
-+ 0x28, 0x28, 0x28, 0x28, 0x28, 0xc8, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2b, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0x24, 0x20,
-+ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x02, 0x7f, 0x01, 0x1f,
-+ 0x11, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xf0,
-+ 0x10, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x08, 0x48, 0x28, 0x28, 0x88, 0x48, 0x48, 0x0c,
-+ 0x38, 0xc8, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x60, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xd8,
-+ 0xd8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0d, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00, 0xfc,
-+ 0x24, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x3f, 0x2b, 0x2b, 0x2b, 0x3f,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x73, 0x05, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x3f, 0x2b, 0x2b, 0x2b, 0x3f,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x7d, 0x11, 0x11, 0x11, 0x1e, 0x64, 0x01,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x90, 0x54, 0x54, 0x0c, 0x00,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x04, 0x7f, 0x05, 0x19, 0x6f,
-+ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x40, 0x30, 0xec,
-+ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2b, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x03, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2b, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x72, 0x00, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x70,
-+ 0x70, 0xa8, 0xa8, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x24, 0x28, 0xfc, 0x10, 0x60,
-+ 0x4c, 0xf0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7c, 0x55, 0x55, 0x57, 0x7c,
-+ 0x52, 0x1a, 0x15, 0x1d, 0x62, 0x04, 0x00, 0x00,
-+ 0x04, 0x88, 0xf0, 0x90, 0x10, 0x5c, 0xd0, 0xd0,
-+ 0xd0, 0xd0, 0x3c, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x71, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0xe8, 0x60, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0b, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xb8, 0x80, 0xf8,
-+ 0xa8, 0x28, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x08, 0x0f, 0x12, 0x3f,
-+ 0x52, 0x1f, 0x12, 0x03, 0x7c, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x48, 0xe8, 0x28, 0x70, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x10, 0x1f, 0x14, 0x27, 0x79,
-+ 0x0f, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00,
-+ 0x00, 0xf8, 0xf0, 0x00, 0xfc, 0x90, 0x60, 0x1c,
-+ 0xe0, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0e, 0x71, 0x02, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x48, 0x88, 0xfc, 0x88, 0x88,
-+ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7d, 0x08, 0x3d, 0x15, 0x08, 0x1e, 0x61,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x0c, 0xf0, 0x20, 0x3c, 0x20, 0xfc, 0x00, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0xa8, 0xa4, 0x04, 0xf8, 0x10,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3f,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x72, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x20, 0xfc,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x54, 0x57, 0x54, 0x7d,
-+ 0x51, 0x1a, 0x14, 0x1c, 0x60, 0x00, 0x00, 0x00,
-+ 0x48, 0x88, 0xa8, 0xa8, 0xa8, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xe8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x29, 0x0e, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc,
-+ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x56, 0x54, 0x54, 0x7d,
-+ 0x57, 0x18, 0x14, 0x1e, 0x61, 0x02, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x80, 0xf8, 0xe8, 0x68,
-+ 0x68, 0xf8, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2b, 0x3e,
-+ 0x29, 0x0e, 0x0a, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x50, 0xfc, 0x88,
-+ 0xf4, 0x90, 0x90, 0xb4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7f, 0x54, 0x55, 0x55, 0x7d,
-+ 0x52, 0x1a, 0x14, 0x1c, 0x64, 0x00, 0x00, 0x00,
-+ 0x84, 0x88, 0xb0, 0xe0, 0xa0, 0xbc, 0xe8, 0xe8,
-+ 0xa8, 0xa8, 0xc8, 0xc8, 0x88, 0x88, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x7d,
-+ 0x55, 0x19, 0x15, 0x1e, 0x62, 0x04, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00,
-+ 0x02, 0x3e, 0x02, 0x1e, 0x03, 0x7e, 0x04, 0x09,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x40, 0x7c, 0x40, 0x78, 0x40, 0x7c, 0x40, 0x40,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3f,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x3f, 0x2b, 0x2b, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x24, 0xfc, 0x24, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2b, 0x3f,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xf0, 0xd0, 0xd0, 0xf8, 0x08,
-+ 0xe8, 0xa8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x54, 0x57, 0x54, 0x7d,
-+ 0x51, 0x1a, 0x16, 0x1c, 0x60, 0x00, 0x00, 0x00,
-+ 0x48, 0xa8, 0x98, 0x98, 0x88, 0xe8, 0x98, 0x98,
-+ 0xcc, 0xb8, 0xa8, 0x88, 0x88, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x29, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc,
-+ 0xa4, 0xb4, 0xcc, 0xfc, 0x84, 0x18, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x57, 0x55, 0x55, 0x7f,
-+ 0x52, 0x1a, 0x17, 0x1e, 0x60, 0x01, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0x28, 0xe8, 0x38, 0x28, 0xa8,
-+ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x29, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x02, 0x3f, 0x02, 0x04, 0x08, 0x3e,
-+ 0x2a, 0x2a, 0x3e, 0x2a, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe4, 0x14, 0x0c, 0x24, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x0c, 0x0b, 0x0e, 0x70, 0x07, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x55, 0x55, 0x55, 0x7d,
-+ 0x51, 0x19, 0x17, 0x1f, 0x65, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x68, 0x68, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x55, 0x56, 0x57, 0x7e,
-+ 0x53, 0x1a, 0x17, 0x1e, 0x62, 0x02, 0x00, 0x00,
-+ 0xe0, 0x20, 0x50, 0x90, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7d, 0x57, 0x55, 0x55, 0x7d,
-+ 0x51, 0x19, 0x15, 0x1e, 0x62, 0x05, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0xc0, 0x7c, 0x08, 0xd0,
-+ 0x50, 0x7c, 0x50, 0x50, 0x50, 0xb0, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3f,
-+ 0x28, 0x0d, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xfc,
-+ 0x80, 0xfc, 0x54, 0x94, 0x24, 0x58, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x54, 0x55, 0x56, 0x7f,
-+ 0x52, 0x1b, 0x16, 0x1c, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xb8, 0xa0, 0xb8, 0xa8, 0xb8,
-+ 0xa8, 0xb8, 0xa8, 0xa0, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2c, 0x49, 0x14, 0x22, 0x3f, 0x21,
-+ 0x5f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x20, 0xa8, 0xb0, 0x30, 0x48, 0x88, 0xfc, 0x08,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0f, 0x70, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x20, 0xfc, 0x00, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x13, 0x7e, 0x56, 0x57, 0x56, 0x7f,
-+ 0x52, 0x1b, 0x16, 0x1e, 0x63, 0x0c, 0x00, 0x00,
-+ 0x00, 0x38, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8,
-+ 0x64, 0xa4, 0xb8, 0xe0, 0x60, 0x20, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x08, 0x7f, 0x0e, 0x12, 0x67,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0x90, 0x50, 0x20, 0x50, 0x8c,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3f,
-+ 0x28, 0x0c, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00,
-+ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24,
-+ 0x40, 0x28, 0xc4, 0xd4, 0x50, 0x30, 0x00, 0x00,
-+ 0x01, 0x03, 0x1e, 0x01, 0x07, 0x78, 0x03, 0x08,
-+ 0x3e, 0x2a, 0x3e, 0x2a, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0x60, 0x9c, 0x80, 0x60,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x2b, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xa8, 0x54, 0x20, 0xd8,
-+ 0x74, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x09, 0x08, 0x09, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x24, 0xa8, 0xfc, 0x08, 0xf8, 0x88, 0xf8, 0x20,
-+ 0xfc, 0x24, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x08, 0x3f, 0x2a, 0x2a,
-+ 0x3e, 0x28, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x04, 0x3f, 0x04, 0x7f, 0x2b, 0x2a, 0x56, 0x21,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x90, 0x68, 0x84,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00,
-+ 0x08, 0x3e, 0x09, 0x7f, 0x14, 0x7f, 0x3e, 0x09,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x3e, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd0, 0x74, 0x94, 0x0c,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3f, 0x2b, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00,
-+ 0x20, 0x24, 0xa8, 0xfc, 0x08, 0xf8, 0x88, 0xf8,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x0f, 0x02, 0x7f,
-+ 0x09, 0x1f, 0x69, 0x0f, 0x01, 0x3e, 0x00, 0x00,
-+ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0x00, 0xfc,
-+ 0x20, 0xf0, 0x2c, 0xe0, 0xf0, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0c, 0x0b, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x20, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x50, 0xf0, 0x78, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x29, 0x0d, 0x0a, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x88, 0xdc, 0x88, 0xfc,
-+ 0x00, 0xfc, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x3e, 0x08,
-+ 0x3e, 0x2a, 0x3e, 0x2a, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x08, 0x20,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3f,
-+ 0x28, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00,
-+ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x12, 0x7c, 0x57, 0x56, 0x56, 0x7f,
-+ 0x52, 0x1a, 0x17, 0x1c, 0x64, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x54, 0x94, 0xec, 0xc8, 0xd8, 0xdc,
-+ 0xe8, 0xc8, 0xfc, 0x48, 0x48, 0xc8, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x56, 0x57, 0x55, 0x7f,
-+ 0x53, 0x1f, 0x16, 0x1f, 0x62, 0x00, 0x00, 0x00,
-+ 0x10, 0xd0, 0x50, 0xd0, 0x7c, 0xf4, 0x18, 0xd0,
-+ 0x50, 0x50, 0xe8, 0xe8, 0x44, 0xc4, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7f, 0x55, 0x55, 0x55, 0x7d,
-+ 0x51, 0x19, 0x16, 0x1e, 0x64, 0x00, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0x54, 0x9c, 0x78, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x13, 0x11, 0x7d, 0x55, 0x55, 0x57, 0x7c,
-+ 0x51, 0x18, 0x14, 0x1c, 0x63, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x5c, 0xd4, 0xd4, 0x54, 0xdc, 0x58,
-+ 0xe0, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x09, 0x08, 0x09, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e,
-+ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00,
-+ 0x24, 0xa8, 0xfc, 0x08, 0xf0, 0x90, 0xf0, 0x00,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3f,
-+ 0x28, 0x0c, 0x0b, 0x0e, 0x71, 0x02, 0x00, 0x00,
-+ 0x50, 0xfc, 0x50, 0x20, 0xfc, 0x50, 0xa8, 0xfc,
-+ 0x20, 0xa8, 0xfc, 0x88, 0x08, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e,
-+ 0x29, 0x0c, 0x0b, 0x0e, 0x70, 0x01, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x20, 0xfc, 0x50, 0x88,
-+ 0x54, 0x50, 0xfc, 0x50, 0x90, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x12, 0x7c, 0x55, 0x56, 0x55, 0x7d,
-+ 0x52, 0x1b, 0x14, 0x1c, 0x63, 0x00, 0x00, 0x00,
-+ 0x90, 0xf4, 0xf8, 0x90, 0x68, 0x44, 0xfc, 0x28,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3e,
-+ 0x28, 0x0d, 0x0a, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x50, 0xfc, 0x50, 0xfc, 0xa0, 0xf8, 0xf8, 0xa0,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x3f, 0x2b, 0x2b, 0x2b, 0x3f,
-+ 0x28, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xfc, 0x28, 0xac, 0xac, 0xfc,
-+ 0x20, 0xfc, 0x54, 0x54, 0x54, 0x0c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x0f, 0x7f, 0x07, 0x1c, 0x67, 0x07,
-+ 0x08, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0xe0, 0xfc, 0xc0, 0x70, 0xcc, 0xc0,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00,
-+ 0x04, 0x07, 0x0f, 0x7f, 0x07, 0x3b, 0x1d, 0x3e,
-+ 0x0b, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xfc, 0x90, 0xe0, 0xb0, 0x8c,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00,
-+ 0x01, 0x0f, 0x09, 0x0f, 0x3f, 0x08, 0x3e, 0x3e,
-+ 0x0e, 0x71, 0x1f, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xf0, 0xf8, 0x20, 0xf8, 0xf8,
-+ 0x38, 0xc4, 0xf0, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x14, 0x7f, 0x1e, 0x6f, 0x0f, 0x08,
-+ 0x0f, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0xfc, 0x74, 0xec, 0xe0, 0x20,
-+ 0xe0, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x0f, 0x3f, 0x2f, 0x47, 0x3a,
-+ 0x0b, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0xe0, 0xfc, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x3f, 0x2f, 0x47, 0x1c, 0x67,
-+ 0x08, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0xfc, 0xf8, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00,
-+ 0x13, 0x17, 0x6b, 0x17, 0x7c, 0x3b, 0x36, 0x53,
-+ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x3e, 0x00, 0x00,
-+ 0x90, 0xd4, 0xa8, 0x98, 0x7c, 0xb8, 0xd4, 0x94,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x10, 0x3f, 0x2d, 0x2d, 0x2d, 0x2d,
-+ 0x2d, 0x2d, 0x2f, 0x3c, 0x61, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xfc, 0x48,
-+ 0x48, 0x48, 0xc8, 0x48, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x10, 0x3f, 0x2d, 0x2d, 0x2d, 0x2d,
-+ 0x2d, 0x2d, 0x2f, 0x3c, 0x61, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x68,
-+ 0x58, 0x4c, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x12, 0x12, 0x22, 0x4f, 0x0a, 0x12, 0x1c, 0x35,
-+ 0x53, 0x13, 0x14, 0x1f, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0xc0, 0x00, 0xfc, 0x90, 0x10,
-+ 0x10, 0x10, 0x90, 0x50, 0x50, 0x30, 0x00, 0x00,
-+ 0x10, 0x1f, 0x22, 0x4f, 0x0a, 0x12, 0x1f, 0x30,
-+ 0x57, 0x14, 0x14, 0x17, 0x14, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x80, 0x80, 0xbc, 0xd0, 0x10,
-+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00,
-+ 0x11, 0x17, 0x22, 0x4f, 0x0f, 0x14, 0x17, 0x3f,
-+ 0x51, 0x17, 0x15, 0x15, 0x15, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xe0, 0xc0, 0x7c, 0xc8, 0xe8,
-+ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x10, 0x1e, 0x2a, 0x4e, 0x1e, 0x1a, 0x2e, 0x27,
-+ 0x6c, 0x37, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xe0, 0xe0, 0xbc, 0xe8, 0xe8,
-+ 0x88, 0xc8, 0xc8, 0x88, 0xe8, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x05, 0x09, 0x1e,
-+ 0x2a, 0x49, 0x08, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x10, 0x24,
-+ 0x44, 0x88, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x02, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x88, 0x88, 0x50, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x02, 0x0c, 0x77, 0x00, 0x1f, 0x00, 0x01,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0x80, 0x60, 0xdc, 0x00, 0xf0, 0x20, 0x40,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x04, 0x18, 0x6f, 0x08, 0x08,
-+ 0x0f, 0x06, 0x7c, 0x04, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x60, 0x18, 0xe4, 0x20, 0x20,
-+ 0xe0, 0x88, 0x50, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7c, 0x08, 0x0a, 0x13, 0x3c,
-+ 0x54, 0x12, 0x10, 0x10, 0x11, 0x10, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x8c, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc,
-+ 0x10, 0x10, 0x10, 0x10, 0x7c, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xa8,
-+ 0xa8, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x08, 0x0a, 0x12, 0x3d,
-+ 0x54, 0x12, 0x10, 0x10, 0x11, 0x12, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc,
-+ 0x40, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3d,
-+ 0x54, 0x12, 0x11, 0x10, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0x40, 0x60, 0xa0, 0x90, 0x28, 0x44, 0x90,
-+ 0x20, 0x48, 0x90, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10,
-+ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3c,
-+ 0x54, 0x12, 0x11, 0x12, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0,
-+ 0xa8, 0xa8, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x08, 0x0a, 0x12, 0x3d,
-+ 0x54, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x20, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d,
-+ 0x55, 0x13, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28,
-+ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x02, 0x7f, 0x03, 0x0d, 0x73,
-+ 0x01, 0x7f, 0x03, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x80, 0xfc, 0x30, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x07, 0x04, 0x7f, 0x09, 0x08, 0x1f, 0x01,
-+ 0x01, 0x7f, 0x03, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xfc, 0x10, 0x90, 0xfc, 0x60,
-+ 0x00, 0xfc, 0x88, 0x50, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7c, 0x08, 0x0b, 0x12, 0x3c,
-+ 0x55, 0x12, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40,
-+ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x15, 0x39,
-+ 0x55, 0x15, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xa4, 0x24, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x50, 0x50, 0x88, 0x88, 0x04, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3d,
-+ 0x54, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc,
-+ 0x40, 0x70, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7e, 0x08, 0x08, 0x15, 0x39,
-+ 0x57, 0x15, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0xb8, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x0c, 0x74, 0x07, 0x38, 0x3f,
-+ 0x24, 0x28, 0x37, 0x24, 0x27, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x50, 0x60, 0x30, 0x0c, 0xf8,
-+ 0x98, 0x78, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x39, 0x07, 0x19, 0x63, 0x01,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x10, 0xfc, 0x08, 0xb0, 0x60, 0x18, 0x04, 0x00,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x10, 0x7c, 0x0b, 0x08, 0x13, 0x3c,
-+ 0x54, 0x13, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xfc, 0x48, 0xf8, 0x80,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x24, 0x24, 0x3f, 0x04, 0x7c, 0x25, 0x45, 0x01,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, 0x00,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x7f, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x7f,
-+ 0x11, 0x63, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc,
-+ 0x30, 0x28, 0xc4, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x13, 0x7c, 0x08, 0x0b, 0x14, 0x18,
-+ 0x37, 0x54, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00,
-+ 0x90, 0x90, 0xf0, 0x90, 0x90, 0xf8, 0x94, 0x94,
-+ 0xf0, 0x90, 0x90, 0xf0, 0x90, 0x10, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x12, 0x3c,
-+ 0x55, 0x12, 0x14, 0x11, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80, 0xfc,
-+ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x02, 0x7e, 0x02, 0x3e, 0x03, 0x7e, 0x04, 0x09,
-+ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x40, 0x7c, 0x40, 0x78, 0x40, 0x7c, 0x40, 0x40,
-+ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x1d,
-+ 0x34, 0x52, 0x13, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x50, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x0a, 0x0b, 0x16, 0x3a,
-+ 0x56, 0x17, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xd8, 0xd8,
-+ 0xd8, 0x68, 0x48, 0x48, 0x48, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x08, 0x0b, 0x14, 0x19,
-+ 0x34, 0x57, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8,
-+ 0x40, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x08, 0x0b, 0x15, 0x19,
-+ 0x35, 0x55, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x0a, 0x0b, 0x16, 0x1b,
-+ 0x36, 0x56, 0x17, 0x1a, 0x12, 0x12, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x15, 0x39,
-+ 0x55, 0x15, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0xf8, 0xc8, 0x48, 0x48, 0x78, 0x20, 0xfc,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x7f, 0x04, 0x38, 0x20, 0x3d, 0x20, 0x3d,
-+ 0x21, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x88, 0xf8, 0xfc, 0x70, 0xac,
-+ 0x20, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x15, 0x38,
-+ 0x57, 0x12, 0x12, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0x50, 0xb0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x0b, 0x0a, 0x16, 0x3b,
-+ 0x56, 0x17, 0x12, 0x14, 0x18, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x00, 0xfc, 0xa8, 0xf0, 0x8c,
-+ 0x10, 0xfc, 0x90, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x12, 0x11, 0x11, 0x7c, 0x0a, 0x09, 0x15, 0x38,
-+ 0x57, 0x15, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x7c, 0x44,
-+ 0x58, 0x48, 0x74, 0xc4, 0xc0, 0x3c, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7e, 0x0a, 0x0a, 0x16, 0x1a,
-+ 0x36, 0x52, 0x15, 0x15, 0x1a, 0x11, 0x00, 0x00,
-+ 0x18, 0xe0, 0x38, 0x20, 0xfc, 0xb8, 0xe4, 0x9c,
-+ 0xf0, 0xd0, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x20, 0x27, 0x21, 0x79, 0x17, 0x14, 0x2c, 0x37,
-+ 0x6d, 0x29, 0x21, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x20, 0x30, 0x48, 0xfc, 0x24, 0xf8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0x30, 0x28, 0xf4, 0x04, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1e, 0x12, 0x1e, 0x04, 0x3f, 0x1f,
-+ 0x04, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0x90, 0xf0, 0x40, 0xf8, 0xf0,
-+ 0x40, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x7f, 0x08, 0x3e, 0x7f, 0x2d, 0x4b, 0x3e,
-+ 0x0e, 0x31, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf0, 0x50, 0xd0, 0x70, 0x54,
-+ 0x94, 0x8c, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7d, 0x0a, 0x09, 0x16, 0x18,
-+ 0x35, 0x55, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xfc, 0xcc, 0x54, 0xec, 0x54, 0x64, 0x80,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x7f, 0x09, 0x09, 0x15, 0x39,
-+ 0x55, 0x17, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0xf8, 0x48,
-+ 0xf8, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x08, 0x0b, 0x15, 0x19,
-+ 0x35, 0x55, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf0, 0x50, 0xf0,
-+ 0x50, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x12, 0x11, 0x7d, 0x09, 0x0b, 0x15, 0x19,
-+ 0x35, 0x54, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0x20, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x12, 0x11, 0x13, 0x7e, 0x09, 0x0b, 0x15, 0x18,
-+ 0x37, 0x56, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00,
-+ 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x00,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3e, 0x21, 0x3e, 0x53, 0x1e,
-+ 0x11, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00,
-+ 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20, 0xfc, 0x20,
-+ 0x20, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x0a, 0x0b, 0x17, 0x1b,
-+ 0x34, 0x57, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0xf8,
-+ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x7f, 0x0a, 0x0b, 0x16, 0x3b,
-+ 0x54, 0x17, 0x12, 0x12, 0x17, 0x10, 0x00, 0x00,
-+ 0x10, 0xd0, 0x90, 0xdc, 0x60, 0xc0, 0xb8, 0xc0,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x11, 0x11, 0x11, 0x7f, 0x09, 0x09, 0x17, 0x18,
-+ 0x37, 0x56, 0x12, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0x00, 0x7c, 0x10, 0xe0, 0x38, 0x28, 0xf8, 0x28,
-+ 0xb8, 0xa8, 0xb8, 0x98, 0xa4, 0x44, 0x00, 0x00,
-+ 0x10, 0x17, 0x10, 0x7f, 0x0a, 0x0b, 0x14, 0x1b,
-+ 0x36, 0x57, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x28, 0xfc,
-+ 0x28, 0xa8, 0x10, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x10, 0x7f, 0x0a, 0x0e, 0x17, 0x19,
-+ 0x37, 0x57, 0x13, 0x15, 0x11, 0x11, 0x00, 0x00,
-+ 0x00, 0xb8, 0x28, 0xe8, 0xb8, 0xa8, 0xf8, 0x28,
-+ 0xf8, 0xb0, 0x70, 0x34, 0x54, 0x8c, 0x00, 0x00,
-+ 0x20, 0x27, 0x24, 0x7f, 0x14, 0x17, 0x2c, 0x37,
-+ 0x6d, 0x2d, 0x25, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xbc, 0xa4, 0xbc, 0xa4, 0xbc, 0x44, 0xfc,
-+ 0xf4, 0xf4, 0xf4, 0xe4, 0x5c, 0x4c, 0x00, 0x00,
-+ 0x10, 0x11, 0x12, 0x7f, 0x0b, 0x0a, 0x17, 0x19,
-+ 0x36, 0x55, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00,
-+ 0x80, 0xf8, 0xe8, 0x38, 0xb8, 0xa8, 0xfc, 0x30,
-+ 0xc8, 0xf4, 0x40, 0xf8, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24,
-+ 0x27, 0x24, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0xc8, 0x48, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x3f, 0x24, 0x27, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xc8, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x3f, 0x27, 0x08, 0x3e, 0x22,
-+ 0x3e, 0x3f, 0x7f, 0x1e, 0x22, 0x4d, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0xc8, 0x40, 0x40, 0xfc,
-+ 0x90, 0x90, 0x60, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x3f, 0x27, 0x14, 0x7f, 0x1c,
-+ 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0xc8, 0xfc, 0xa0, 0xf8,
-+ 0xf8, 0xa0, 0xfc, 0xd4, 0x6c, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x11, 0x21, 0x4f, 0x08, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x38, 0xd0, 0x08, 0x04, 0xe4, 0x20, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x10, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x7d, 0x45,
-+ 0x45, 0x44, 0x7c, 0x45, 0x02, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x10,
-+ 0xf0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a, 0x2a, 0x2a,
-+ 0x3f, 0x5d, 0x48, 0x0e, 0x71, 0x06, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x3f, 0x0a, 0x0a, 0x7f, 0x0c, 0x12,
-+ 0x3e, 0x52, 0x1e, 0x12, 0x1f, 0x12, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x0e, 0x06, 0x09, 0x10, 0x3f, 0x40, 0x3a, 0x2a,
-+ 0x3a, 0x2d, 0x3d, 0x2a, 0x2a, 0x2a, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xc8, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xf8, 0x30, 0x30, 0xb4, 0xd4, 0x8c, 0x00, 0x00,
-+ 0x08, 0x2a, 0x2a, 0x3e, 0x00, 0x7f, 0x00, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x14, 0x1e, 0x61, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x3e, 0x14, 0x7f, 0x08, 0x3e,
-+ 0x2a, 0x3e, 0x2a, 0x7f, 0x22, 0x27, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a, 0x3e,
-+ 0x08, 0x3e, 0x08, 0x3e, 0x0c, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x04, 0x1b, 0x12, 0x1a, 0x19, 0x12, 0x3f, 0x2f,
-+ 0x48, 0x0f, 0x0f, 0x0f, 0x06, 0x78, 0x00, 0x00,
-+ 0x80, 0x70, 0x90, 0xb0, 0x30, 0x90, 0xfc, 0xe8,
-+ 0x20, 0xe0, 0xe0, 0xe4, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7e, 0x49, 0x7e, 0x7d, 0x49, 0x7f, 0x4f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x78, 0x00, 0x00,
-+ 0x80, 0xfc, 0x00, 0xf8, 0xfc, 0x54, 0xfc, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xe4, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x7f, 0x57, 0x7f, 0x3e, 0x22,
-+ 0x3e, 0x3e, 0x22, 0x3e, 0x14, 0x63, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x30, 0x30, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x14, 0x3f,
-+ 0x64, 0x3f, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x30, 0x30, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x10, 0x1e, 0x25, 0x49, 0x3f, 0x2b, 0x2b, 0x3f,
-+ 0x2b, 0x3f, 0x23, 0x23, 0x23, 0x46, 0x00, 0x00,
-+ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0x50, 0x70, 0x58, 0x78, 0x94, 0x04, 0x00, 0x00,
-+ 0x08, 0x2f, 0x28, 0x2f, 0x72, 0x07, 0x18, 0x6f,
-+ 0x09, 0x0f, 0x09, 0x0f, 0x10, 0x20, 0x00, 0x00,
-+ 0x80, 0x98, 0xe4, 0x84, 0x7c, 0xc0, 0x80, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00,
-+ 0x10, 0x1e, 0x24, 0x48, 0x3e, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x23, 0x22, 0x23, 0x46, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xfc, 0xa0, 0xa0,
-+ 0x90, 0xf4, 0x8c, 0x0c, 0xf4, 0x04, 0x00, 0x00,
-+ 0x10, 0x1e, 0x24, 0x49, 0x3e, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x3f, 0x22, 0x22, 0x22, 0x46, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x1e, 0x24, 0x49, 0x3e, 0x2a, 0x2a, 0x3e,
-+ 0x2b, 0x3e, 0x23, 0x22, 0x23, 0x46, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xf0, 0x90, 0xf0, 0x90, 0xf0,
-+ 0xfc, 0xf8, 0x68, 0xa8, 0x48, 0x30, 0x00, 0x00,
-+ 0x10, 0x1f, 0x25, 0x49, 0x3e, 0x2a, 0x2b, 0x3f,
-+ 0x2b, 0x3f, 0x22, 0x22, 0x23, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0xf8, 0x80, 0xf8, 0x48, 0xf8,
-+ 0x58, 0xf8, 0x68, 0x78, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3e, 0x00, 0x7f, 0x00, 0x3e, 0x00, 0x3e,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x28, 0x24,
-+ 0x24, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3f, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x10, 0x20,
-+ 0x40, 0x80, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3d, 0x03, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x28, 0x28, 0x30,
-+ 0x60, 0x20, 0x24, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x10, 0x90, 0x90, 0x90, 0xfc, 0x30,
-+ 0x30, 0x50, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x68,
-+ 0xa8, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28,
-+ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0xf0, 0x90, 0x90,
-+ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x48, 0x88, 0xf4, 0x04,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x27, 0x24, 0x3f, 0x24, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x10, 0xd0, 0x14, 0x0c, 0xec, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3f, 0x0f, 0x00, 0x7f, 0x0f,
-+ 0x0f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0xe0, 0x00, 0xfc, 0xe0,
-+ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x01, 0x3e,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x25, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xa0, 0xa4, 0x24, 0xa8,
-+ 0xb0, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xfc, 0x00, 0x78, 0x48,
-+ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x26, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3f, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0xe8,
-+ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3e, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0x20, 0x20, 0xfc, 0x70,
-+ 0x70, 0xa8, 0x28, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0x7e, 0x01, 0x39, 0x00, 0x39,
-+ 0x06, 0x38, 0x29, 0x29, 0x3a, 0x2c, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8,
-+ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3c, 0x03, 0x3c,
-+ 0x00, 0x3d, 0x26, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x40, 0x58, 0xe0, 0x40, 0xf8, 0x40, 0xfc, 0xe0,
-+ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x02, 0x3c, 0x00, 0x3f,
-+ 0x01, 0x3d, 0x25, 0x27, 0x3c, 0x24, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0xc8, 0xa8, 0xfc,
-+ 0x48, 0x28, 0x28, 0xfc, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0x7f, 0x00, 0x3a, 0x02, 0x3f,
-+ 0x02, 0x3a, 0x2a, 0x2a, 0x3c, 0x28, 0x00, 0x00,
-+ 0x28, 0x24, 0x24, 0xfc, 0x20, 0xa8, 0xa8, 0xe8,
-+ 0xb8, 0x90, 0x94, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x38, 0x02, 0x7d, 0x01, 0x3f, 0x00, 0x39,
-+ 0x01, 0x3a, 0x2c, 0x28, 0x38, 0x2b, 0x00, 0x00,
-+ 0x80, 0xfc, 0x90, 0x10, 0x10, 0x10, 0xfc, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3e, 0x03, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0xfc, 0x20,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x02, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3b, 0x00, 0x7d, 0x01, 0x39, 0x01, 0x39,
-+ 0x02, 0x3a, 0x2c, 0x28, 0x3f, 0x28, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x50, 0x50, 0x50, 0x50, 0x50,
-+ 0xe8, 0xe4, 0x44, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xf8, 0x10, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x02, 0x3d, 0x00, 0x3f,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x04, 0xf8, 0x48, 0xfc,
-+ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x00, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x88, 0x30, 0x40, 0xb8,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x02, 0x3d, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0xe0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7c, 0x03, 0x3f, 0x02, 0x3e,
-+ 0x03, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x58, 0xd8, 0xe8,
-+ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x01, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x00,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x03, 0x3c,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x3c, 0x40,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x00, 0x3c, 0x00, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x10, 0xf8, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00,
-+ 0x20, 0x3c, 0x20, 0xfc, 0x38, 0xe4, 0x1c, 0x00,
-+ 0x7c, 0x40, 0xfc, 0x40, 0x7c, 0x40, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x03, 0x3c, 0x00, 0x3c,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0xfc, 0x00, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x00, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x24, 0x27, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3b, 0x02, 0x7f, 0x02, 0x3b, 0x03, 0x3b,
-+ 0x03, 0x3a, 0x2a, 0x2c, 0x3f, 0x28, 0x00, 0x00,
-+ 0x00, 0xf0, 0x30, 0xd0, 0x90, 0xf0, 0xb0, 0xb0,
-+ 0xf0, 0x90, 0xb4, 0xfc, 0x1c, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x7f, 0x02, 0x3b, 0x02, 0x3b,
-+ 0x02, 0x3f, 0x2a, 0x2a, 0x3a, 0x2a, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3b, 0x02, 0x7e, 0x03, 0x3a, 0x02, 0x3b,
-+ 0x02, 0x38, 0x28, 0x29, 0x3a, 0x2c, 0x00, 0x00,
-+ 0xc0, 0x58, 0x48, 0x48, 0x58, 0x48, 0x48, 0xf8,
-+ 0x48, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3d,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0xfc,
-+ 0x08, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x5f, 0x0f, 0x7f, 0x04, 0x1f,
-+ 0x6f, 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0xf8, 0xe0, 0xfc, 0x40, 0xf0,
-+ 0xec, 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7f, 0x00, 0x3c, 0x00, 0x3d,
-+ 0x03, 0x3d, 0x25, 0x25, 0x3f, 0x24, 0x00, 0x00,
-+ 0xf0, 0x90, 0x08, 0xf4, 0x00, 0xf0, 0x90, 0x08,
-+ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7d, 0x02, 0x3c, 0x00, 0x3c,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3f, 0x24, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xf8, 0x44, 0xf0, 0x10, 0x60,
-+ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x00, 0x3d,
-+ 0x02, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa4, 0x5c,
-+ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x38, 0x00, 0x7e, 0x02, 0x3a, 0x04, 0x38,
-+ 0x03, 0x3a, 0x2a, 0x2a, 0x3f, 0x28, 0x00, 0x00,
-+ 0x40, 0x28, 0xa8, 0x90, 0x98, 0xa4, 0xd4, 0xf0,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3d, 0x01, 0x3e,
-+ 0x01, 0x3c, 0x24, 0x24, 0x3c, 0x25, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x28, 0x20,
-+ 0xfc, 0x20, 0x38, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7e, 0x00, 0x3f, 0x00, 0x3d,
-+ 0x03, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xb0, 0xe0, 0x80, 0xf8, 0x20,
-+ 0xfc, 0x20, 0x28, 0x28, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3b, 0x02, 0x7e, 0x02, 0x3a, 0x02, 0x3b,
-+ 0x03, 0x3b, 0x2b, 0x2a, 0x3b, 0x2a, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8,
-+ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x1d, 0x0b, 0x3f, 0x2a, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0xf8, 0x08, 0xe8,
-+ 0xe8, 0x08, 0xe8, 0xa8, 0xe8, 0x30, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x3f, 0x2a, 0x3e, 0x23, 0x47,
-+ 0x3f, 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x70, 0x50, 0x94, 0xfc, 0x90, 0x60, 0x9c, 0xc0,
-+ 0xf8, 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x00, 0x38, 0x07, 0x7d, 0x00, 0x3b, 0x02, 0x3b,
-+ 0x02, 0x3a, 0x2a, 0x2a, 0x3a, 0x2a, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8,
-+ 0x48, 0xe8, 0xa8, 0xe8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3d,
-+ 0x01, 0x3d, 0x24, 0x24, 0x3c, 0x27, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x03, 0x7e, 0x01, 0x3d, 0x01, 0x3d,
-+ 0x01, 0x3c, 0x27, 0x24, 0x3d, 0x26, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x38, 0x07, 0x7c, 0x03, 0x39, 0x07, 0x39,
-+ 0x03, 0x38, 0x2f, 0x28, 0x38, 0x28, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xa0, 0xf8, 0x50, 0xfc, 0x50,
-+ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3b, 0x01, 0x7d, 0x03, 0x39, 0x01, 0x39,
-+ 0x01, 0x3a, 0x2a, 0x2d, 0x39, 0x2a, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0xe4, 0x20, 0xf0, 0x10,
-+ 0xfc, 0x04, 0xd4, 0x6c, 0x44, 0x18, 0x00, 0x00,
-+ 0x01, 0x39, 0x06, 0x7e, 0x01, 0x3a, 0x07, 0x38,
-+ 0x03, 0x39, 0x29, 0x2a, 0x3a, 0x2c, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xd4, 0x48, 0xd4, 0xfc, 0x50,
-+ 0xfc, 0x28, 0xa8, 0x94, 0x2c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x3b, 0x00, 0x7c, 0x07, 0x38, 0x03, 0x38,
-+ 0x03, 0x3a, 0x2b, 0x2a, 0x3a, 0x2a, 0x00, 0x00,
-+ 0x00, 0xf0, 0xa0, 0x40, 0xfc, 0xc8, 0x50, 0xc0,
-+ 0xf8, 0xb8, 0xf8, 0xa8, 0xe8, 0x18, 0x00, 0x00,
-+ 0x01, 0x38, 0x02, 0x7d, 0x01, 0x3a, 0x05, 0x39,
-+ 0x01, 0x39, 0x29, 0x28, 0x3f, 0x28, 0x00, 0x00,
-+ 0xc8, 0x68, 0xb4, 0x94, 0xf8, 0x08, 0xf4, 0x10,
-+ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3b, 0x02, 0x7e, 0x03, 0x39, 0x01, 0x3a,
-+ 0x05, 0x39, 0x29, 0x29, 0x39, 0x29, 0x00, 0x00,
-+ 0x88, 0xfc, 0xa8, 0xa8, 0xfc, 0xd8, 0xac, 0x4c,
-+ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x01, 0x39, 0x07, 0x79, 0x07, 0x39, 0x02, 0x3c,
-+ 0x01, 0x39, 0x29, 0x29, 0x39, 0x29, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x10, 0xfc, 0x10, 0xa8, 0x44,
-+ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x7f, 0x02, 0x3b, 0x01, 0x39,
-+ 0x01, 0x39, 0x29, 0x2f, 0x38, 0x28, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x38, 0x03, 0x7f, 0x02, 0x3b, 0x02, 0x3b,
-+ 0x02, 0x3a, 0x2a, 0x2a, 0x3c, 0x28, 0x00, 0x00,
-+ 0x40, 0xf8, 0x20, 0xfc, 0x54, 0x8c, 0x70, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x39, 0x01, 0x7d, 0x00, 0x3b, 0x02, 0x3b,
-+ 0x00, 0x3f, 0x28, 0x29, 0x3e, 0x28, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x3e, 0x33, 0x5e, 0x0f,
-+ 0x7f, 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xfc, 0x20, 0xe0,
-+ 0xfc, 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3b, 0x02, 0x7f, 0x00, 0x3b, 0x00, 0x3f,
-+ 0x01, 0x3f, 0x28, 0x2b, 0x38, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3a, 0x01, 0x79, 0x04, 0x3b, 0x02, 0x38,
-+ 0x06, 0x3a, 0x2a, 0x2a, 0x3d, 0x28, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0x20, 0xfc, 0xf0, 0x90,
-+ 0xf0, 0xf8, 0x88, 0xf8, 0x80, 0xfc, 0x00, 0x00,
-+ 0x06, 0x1b, 0x13, 0x1c, 0x1e, 0x12, 0x7f, 0x17,
-+ 0x3f, 0x47, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0xf0, 0xf0, 0x90, 0xfc, 0xd0,
-+ 0xf8, 0xc4, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x7f, 0x02, 0x3b, 0x03, 0x39,
-+ 0x01, 0x39, 0x29, 0x29, 0x39, 0x2e, 0x00, 0x00,
-+ 0x40, 0xfc, 0xf0, 0xf8, 0xa8, 0x38, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x00, 0x38, 0x07, 0x7c, 0x01, 0x3f, 0x01, 0x3b,
-+ 0x05, 0x39, 0x28, 0x2a, 0x3a, 0x2c, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xa0, 0xf0, 0x14, 0xf8, 0xb0,
-+ 0xf4, 0xac, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x14, 0x17, 0x28, 0x3f, 0x68, 0x2b, 0x3c, 0x2b,
-+ 0x28, 0x3f, 0x2a, 0x2b, 0x3e, 0x20, 0x00, 0x00,
-+ 0x14, 0x94, 0x28, 0xfc, 0x68, 0xa8, 0x3c, 0xa8,
-+ 0x28, 0xbc, 0xa8, 0xa8, 0xbc, 0x20, 0x00, 0x00,
-+ 0x00, 0x38, 0x07, 0x7d, 0x01, 0x39, 0x01, 0x3b,
-+ 0x00, 0x3b, 0x29, 0x29, 0x38, 0x2f, 0x00, 0x00,
-+ 0x40, 0xf8, 0xf0, 0x10, 0xf4, 0xb8, 0xe4, 0x7c,
-+ 0xa0, 0xf0, 0x50, 0xf4, 0xac, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x03, 0x7e, 0x03, 0x38, 0x07, 0x3b,
-+ 0x00, 0x3f, 0x29, 0x2f, 0x39, 0x2e, 0x00, 0x00,
-+ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xfc, 0xf8,
-+ 0xa0, 0xfc, 0xa8, 0x30, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x02, 0x3a, 0x02, 0x7d, 0x07, 0x3a, 0x06, 0x3a,
-+ 0x06, 0x3a, 0x2e, 0x2b, 0x3e, 0x28, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xa8, 0x68, 0xfc, 0xa0, 0xe8, 0xa8,
-+ 0xe8, 0xd0, 0x94, 0xfc, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x7f, 0x02, 0x3b, 0x00, 0x39,
-+ 0x03, 0x3d, 0x29, 0x29, 0x39, 0x29, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0x90, 0xfc,
-+ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x03, 0x3b, 0x05, 0x7f, 0x03, 0x3b, 0x05, 0x39,
-+ 0x01, 0x39, 0x29, 0x29, 0x39, 0x2e, 0x00, 0x00,
-+ 0x30, 0xb8, 0x50, 0xfc, 0x30, 0xb4, 0x4c, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x14, 0x12, 0x22, 0x48, 0x08, 0x14, 0x13, 0x22,
-+ 0x7e, 0x22, 0x22, 0x3f, 0x22, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x30,
-+ 0x30, 0x50, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x08, 0x3f, 0x2a, 0x7e, 0x09, 0x3e, 0x08, 0x7f,
-+ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x50, 0x48, 0x88, 0xa0, 0x20, 0x50, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x3e, 0x29, 0x49, 0x0a, 0x32, 0x0c, 0x0a,
-+ 0x3f, 0x08, 0x7f, 0x0c, 0x12, 0x60, 0x00, 0x00,
-+ 0x50, 0x48, 0x88, 0x20, 0x20, 0x50, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x7f, 0x00, 0x0f,
-+ 0x08, 0x0f, 0x04, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xe0,
-+ 0x20, 0xe0, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x01, 0x3d, 0x26, 0x24, 0x24, 0x3d,
-+ 0x27, 0x14, 0x18, 0x1c, 0x61, 0x02, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x80, 0xb8, 0xe8, 0x68,
-+ 0x68, 0xf8, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x3e, 0x24, 0x3f, 0x3f,
-+ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0xf8,
-+ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x25, 0x2f, 0x25, 0x2f, 0x2f, 0x25, 0x3f, 0x7f,
-+ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x48, 0xe8, 0x48, 0xe8, 0xe8, 0x48, 0xf8, 0xfc,
-+ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x02, 0x0e, 0x73, 0x05, 0x19,
-+ 0x62, 0x04, 0x18, 0x60, 0x01, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x48, 0x48, 0x50, 0xa0,
-+ 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00, 0x00,
-+ 0x09, 0x09, 0x1f, 0x02, 0x7f, 0x04, 0x1f, 0x63,
-+ 0x3d, 0x06, 0x39, 0x06, 0x38, 0x03, 0x00, 0x00,
-+ 0x20, 0x10, 0xf8, 0x80, 0xfc, 0x40, 0xf0, 0x1c,
-+ 0x90, 0xa0, 0xe0, 0x98, 0x84, 0x00, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x10, 0x32, 0x4b, 0x1c, 0x2c,
-+ 0x4a, 0x1b, 0x2a, 0x48, 0x08, 0x30, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x30, 0x48,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x00, 0x03, 0x3c, 0x02, 0x03, 0x7c, 0x01,
-+ 0x06, 0x38, 0x01, 0x06, 0x38, 0x01, 0x00, 0x00,
-+ 0x40, 0x80, 0x88, 0x50, 0x60, 0x80, 0x80, 0x40,
-+ 0x60, 0xa0, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00,
-+ 0x04, 0x18, 0x6a, 0x24, 0x1b, 0x70, 0x08, 0x1c,
-+ 0x64, 0x0c, 0x15, 0x66, 0x04, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x30, 0x30, 0x50,
-+ 0x50, 0x90, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x04, 0x19, 0x6a, 0x24, 0x18, 0x68, 0x0d, 0x14,
-+ 0x65, 0x0d, 0x15, 0x65, 0x05, 0x19, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x30, 0x00,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x18, 0x6a, 0x24, 0x19, 0x6a, 0x0c, 0x15,
-+ 0x66, 0x0d, 0x15, 0x65, 0x05, 0x19, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x88, 0x90, 0x60, 0x60, 0x90,
-+ 0x0c, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x09, 0x11, 0x6d, 0x29, 0x13, 0x72, 0x1e, 0x2a,
-+ 0x4a, 0x1a, 0x2b, 0x4a, 0x0a, 0x32, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x70, 0x70,
-+ 0xa8, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x19, 0x6a, 0x24, 0x18, 0x68, 0x0c, 0x14,
-+ 0x64, 0x0c, 0x14, 0x64, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x04, 0x19, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x64, 0x0d, 0x14, 0x64, 0x07, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x19, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x64, 0x0c, 0x14, 0x64, 0x05, 0x1a, 0x00, 0x00,
-+ 0x40, 0xb8, 0x08, 0x08, 0xb8, 0x08, 0x08, 0xf8,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x04, 0x18, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x65, 0x0d, 0x15, 0x65, 0x05, 0x1e, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x28, 0xe8, 0x58, 0x88, 0xf8,
-+ 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x1c, 0x00, 0x00,
-+ 0x05, 0x19, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x65, 0x0d, 0x15, 0x65, 0x05, 0x1e, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20,
-+ 0x20, 0x20, 0x24, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x04, 0x1b, 0x68, 0x25, 0x19, 0x69, 0x0d, 0x15,
-+ 0x64, 0x0f, 0x14, 0x64, 0x05, 0x1e, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08, 0xf8,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x23, 0x42, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc8, 0x48, 0x50,
-+ 0x30, 0x20, 0x54, 0x94, 0x0c, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x17,
-+ 0x14, 0x17, 0x24, 0x27, 0x43, 0x1c, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x80, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x10, 0xf0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x70, 0x0f, 0x00, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x80, 0xe0, 0x1c, 0xe0, 0x40, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3f, 0x22,
-+ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x48, 0x88, 0xf4, 0x04,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x2f, 0x28, 0x2e, 0x78, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x84, 0x7c, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x7f, 0x1f, 0x00, 0x7f, 0x1f, 0x11,
-+ 0x1f, 0x1f, 0x11, 0x1f, 0x19, 0x60, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0x40, 0xc0, 0x40, 0x40,
-+ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x84, 0x00, 0x00,
-+ 0x00, 0x1f, 0x00, 0x7f, 0x00, 0x1f, 0x11, 0x1f,
-+ 0x11, 0x1f, 0x11, 0x1f, 0x19, 0x60, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x40, 0x40,
-+ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x84, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x3c, 0x24,
-+ 0x24, 0x3c, 0x19, 0x15, 0x22, 0x44, 0x00, 0x00,
-+ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xf8, 0x08, 0x10,
-+ 0x10, 0x20, 0x40, 0x80, 0x40, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x04, 0x3f, 0x24, 0x3f, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x1f, 0x05, 0x7f, 0x04, 0x0f, 0x08, 0x0f,
-+ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x3d, 0x24,
-+ 0x24, 0x3f, 0x18, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54,
-+ 0x7c, 0xc8, 0x30, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x01, 0x7f, 0x1f, 0x3f, 0x24, 0x3f, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf0, 0xf8, 0x48, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x09, 0x17, 0x25, 0x19, 0x6f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0xa8, 0x48, 0x30, 0xec, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x1f, 0x04, 0x7f, 0x0f,
-+ 0x18, 0x6f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xfc, 0xf0, 0x40, 0xfc, 0xe0,
-+ 0x30, 0xec, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x27, 0x24, 0x3f, 0x24, 0x3f, 0x24,
-+ 0x27, 0x3d, 0x19, 0x16, 0x24, 0x40, 0x00, 0x00,
-+ 0x48, 0xb0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8,
-+ 0xf8, 0xb0, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x25, 0x3d, 0x25, 0x3d, 0x25,
-+ 0x25, 0x3c, 0x1b, 0x15, 0x24, 0x40, 0x00, 0x00,
-+ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8,
-+ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x14, 0x7f, 0x3e, 0x09, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd4, 0xb4, 0x0c, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7e, 0x09, 0x7f, 0x1e, 0x27, 0x4f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x50, 0x70, 0x8c, 0xe0,
-+ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x14, 0x1f, 0x25, 0x7f, 0x16, 0x25, 0x4f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0xa0, 0xf8, 0x20, 0xfc, 0x50, 0x94, 0xec, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x08, 0x7f, 0x12, 0x0d, 0x1d, 0x63, 0x0f, 0x08,
-+ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00,
-+ 0xd4, 0xfc, 0x70, 0x50, 0x74, 0x8c, 0xe4, 0x20,
-+ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00,
-+ 0x01, 0x7f, 0x08, 0x07, 0x1f, 0x10, 0x1f, 0x3b,
-+ 0x2a, 0x3b, 0x2b, 0x3b, 0x2b, 0x5c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0xf0, 0x10, 0xf0, 0xb8,
-+ 0xa8, 0xb8, 0xb8, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x25, 0x3d, 0x25, 0x3d, 0x25,
-+ 0x25, 0x3d, 0x1a, 0x16, 0x24, 0x40, 0x00, 0x00,
-+ 0x40, 0xf0, 0x20, 0xfc, 0x54, 0x8c, 0x70, 0xfc,
-+ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x27, 0x3d, 0x24, 0x3f, 0x25,
-+ 0x26, 0x3d, 0x19, 0x15, 0x27, 0x40, 0x00, 0x00,
-+ 0x40, 0xf8, 0x48, 0xfc, 0xf8, 0x40, 0xfc, 0xa8,
-+ 0x54, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x3e, 0x15, 0x1d, 0x3f, 0x5f, 0x17,
-+ 0x14, 0x17, 0x17, 0x17, 0x22, 0x4c, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x50, 0x78, 0xf4, 0xf0, 0xd0,
-+ 0x50, 0xd0, 0xd0, 0xd0, 0x90, 0x50, 0x00, 0x00,
-+ 0x00, 0x38, 0x2d, 0x2d, 0x3d, 0x2f, 0x39, 0x2f,
-+ 0x2d, 0x3d, 0x15, 0x1a, 0x2a, 0x44, 0x00, 0x00,
-+ 0x18, 0x14, 0xfc, 0x10, 0xf4, 0xd4, 0xf4, 0xb8,
-+ 0xf8, 0xdc, 0xfc, 0x9c, 0x24, 0x44, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x3d, 0x25,
-+ 0x25, 0x3d, 0x1a, 0x16, 0x27, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x0f, 0x08, 0x0f, 0x0f, 0x0f, 0x18, 0x3e,
-+ 0x22, 0x3e, 0x3e, 0x3e, 0x14, 0x63, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xe0, 0x30, 0xf8,
-+ 0x88, 0xf8, 0xf8, 0xf8, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x25, 0x3d, 0x25, 0x3d, 0x24,
-+ 0x24, 0x3c, 0x18, 0x14, 0x24, 0x43, 0x00, 0x00,
-+ 0x20, 0xfc, 0xf8, 0xfc, 0x54, 0x9c, 0xfc, 0xf8,
-+ 0x88, 0xf8, 0xf8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x14, 0x36,
-+ 0x36, 0x35, 0x55, 0x14, 0x24, 0x4c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x80, 0xf8, 0xc8,
-+ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x14, 0x36,
-+ 0x37, 0x35, 0x55, 0x14, 0x24, 0x4c, 0x00, 0x00,
-+ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x50, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x08, 0x04,
-+ 0x04, 0x10, 0x1b, 0x14, 0x23, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x20, 0x20,
-+ 0x40, 0x80, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x28,
-+ 0x2e, 0x29, 0x38, 0x28, 0x46, 0x41, 0x00, 0x00,
-+ 0x10, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x9c,
-+ 0xf0, 0x90, 0x10, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x28,
-+ 0x2e, 0x28, 0x38, 0x28, 0x47, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x24, 0x40, 0x90,
-+ 0x24, 0xc8, 0x10, 0x60, 0x80, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x3e, 0x09, 0x08, 0x7f, 0x08, 0x28,
-+ 0x2e, 0x28, 0x38, 0x28, 0x46, 0x41, 0x00, 0x00,
-+ 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0x88, 0x98, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x29, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xa0, 0xbc, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x29, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x27, 0x3d, 0x09, 0x29, 0x2d,
-+ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x09, 0x00, 0x00,
-+ 0x00, 0x00, 0x1c, 0xd4, 0x54, 0x54, 0x54, 0x54,
-+ 0x54, 0x54, 0x54, 0x5c, 0x54, 0x80, 0x00, 0x00,
-+ 0x00, 0x7b, 0x4a, 0x4a, 0x7a, 0x12, 0x57, 0x5e,
-+ 0x52, 0x52, 0x5e, 0x72, 0x42, 0x02, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2f,
-+ 0x29, 0x2a, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x80, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x2b, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2e, 0x3a, 0x65, 0x0e, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x28, 0x20, 0x20, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x2f, 0x3a, 0x64, 0x0b, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x48, 0xc8,
-+ 0xb0, 0xb0, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x27, 0x3d, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x08, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xfc, 0x00, 0x78, 0x48,
-+ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x09, 0x0f, 0x71, 0x02, 0x1f,
-+ 0x10, 0x1f, 0x09, 0x09, 0x15, 0x63, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x90, 0x54, 0x54, 0x0c, 0xf0,
-+ 0x10, 0xf0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0xa4,
-+ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x29, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x02, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x50,
-+ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xfc, 0x04,
-+ 0xf4, 0x94, 0xf4, 0x94, 0x04, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x39, 0x62, 0x00, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x28, 0x08, 0x2e,
-+ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8,
-+ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x28, 0x2e,
-+ 0x28, 0x28, 0x2f, 0x39, 0x62, 0x04, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0xa0,
-+ 0xb8, 0xa0, 0xa0, 0x60, 0x30, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x29, 0x28, 0x2e, 0x39, 0x62, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xf8, 0x20,
-+ 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x28, 0x20, 0xfc,
-+ 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x29, 0x2e,
-+ 0x28, 0x29, 0x2e, 0x38, 0x60, 0x03, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54,
-+ 0x7c, 0xc8, 0x30, 0x24, 0xdc, 0x04, 0x00, 0x00,
-+ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x0a, 0x28, 0x2f,
-+ 0x28, 0x28, 0x2f, 0x39, 0x62, 0x04, 0x00, 0x00,
-+ 0x00, 0x00, 0x38, 0xe8, 0xa8, 0xa8, 0xa8, 0xe8,
-+ 0xa8, 0xa8, 0x68, 0x78, 0x28, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3f, 0x28, 0x09, 0x2e,
-+ 0x28, 0x29, 0x28, 0x2e, 0x39, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0x68, 0xa0, 0x60,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x08, 0x28, 0x2e,
-+ 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x28, 0x0b, 0x2e,
-+ 0x2b, 0x2a, 0x2b, 0x2e, 0x3a, 0x62, 0x00, 0x00,
-+ 0xe0, 0x60, 0x90, 0x08, 0xf4, 0x00, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x22, 0x3e, 0x28, 0x08, 0x2e,
-+ 0x28, 0x28, 0x2b, 0x2c, 0x38, 0x63, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x44, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3e, 0x09, 0x28, 0x2e,
-+ 0x29, 0x28, 0x2f, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x54, 0x90, 0x60, 0x50,
-+ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x3f, 0x24, 0x7f, 0x1f, 0x04, 0x7f, 0x0f,
-+ 0x14, 0x67, 0x09, 0x09, 0x17, 0x61, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xf8, 0xf0, 0x40, 0xfc, 0xe0,
-+ 0x50, 0xcc, 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x01, 0x3c, 0x27, 0x24, 0x3d, 0x08, 0x2b, 0x2c,
-+ 0x28, 0x28, 0x2f, 0x3a, 0x67, 0x00, 0x00, 0x00,
-+ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x80,
-+ 0xf8, 0xa0, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2f, 0x3b, 0x65, 0x01, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0,
-+ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x29, 0x0b, 0x2f,
-+ 0x29, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00,
-+ 0x40, 0x58, 0x40, 0x58, 0xa0, 0x10, 0xf8, 0x14,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3e, 0x28, 0x09, 0x2f,
-+ 0x29, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00,
-+ 0x18, 0xf0, 0x48, 0x24, 0x24, 0x40, 0xb8, 0x08,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x13, 0x1f, 0x17, 0x1a, 0x22,
-+ 0x4f, 0x08, 0x0f, 0x09, 0x17, 0x21, 0x00, 0x00,
-+ 0x50, 0xfc, 0x48, 0xa8, 0xf0, 0x30, 0xd4, 0x0c,
-+ 0xe4, 0x20, 0xe0, 0xf0, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x26, 0x3c, 0x08, 0x29, 0x2f,
-+ 0x2b, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00,
-+ 0xa8, 0xa8, 0x28, 0x54, 0xd4, 0x90, 0x10, 0x50,
-+ 0x5c, 0x50, 0x50, 0xb0, 0x90, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2d,
-+ 0x29, 0x29, 0x2e, 0x3b, 0x65, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x50, 0xfc, 0x50, 0x50,
-+ 0x70, 0x50, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00,
-+ 0x00, 0x3e, 0x23, 0x23, 0x3e, 0x28, 0x08, 0x2f,
-+ 0x28, 0x28, 0x28, 0x2d, 0x3a, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0xfc,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x28, 0x0b, 0x2e,
-+ 0x2b, 0x2a, 0x2a, 0x2f, 0x3a, 0x62, 0x00, 0x00,
-+ 0xa0, 0xa0, 0xfc, 0xa0, 0xe0, 0x40, 0xf8, 0x48,
-+ 0xf8, 0xd8, 0xd8, 0x68, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x3f, 0x26, 0x27, 0x3e, 0x2b, 0x09, 0x2f,
-+ 0x29, 0x2b, 0x28, 0x2f, 0x38, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x50, 0xfc,
-+ 0x50, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x27, 0x26, 0x3e, 0x0b, 0x2a, 0x2f,
-+ 0x2b, 0x2b, 0x2f, 0x3c, 0x65, 0x0a, 0x00, 0x00,
-+ 0x00, 0xfc, 0x30, 0xb0, 0xd0, 0xfc, 0xb4, 0xf8,
-+ 0xd0, 0xd0, 0x98, 0xa8, 0x24, 0x44, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x26, 0x3d, 0x29, 0x09, 0x2f,
-+ 0x29, 0x28, 0x2b, 0x2c, 0x38, 0x60, 0x00, 0x00,
-+ 0xf0, 0x90, 0xf8, 0x64, 0xf8, 0x78, 0x98, 0xf8,
-+ 0xf8, 0x10, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00,
-+ 0x00, 0x3e, 0x25, 0x27, 0x3d, 0x08, 0x2b, 0x2c,
-+ 0x29, 0x28, 0x2f, 0x38, 0x61, 0x06, 0x00, 0x00,
-+ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x29, 0x2f,
-+ 0x28, 0x29, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xdc, 0x54, 0xdc,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x3d, 0x28, 0x0b, 0x2e,
-+ 0x28, 0x2b, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00,
-+ 0x90, 0xfc, 0x90, 0x48, 0xf8, 0x50, 0xfc, 0x50,
-+ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3c, 0x09, 0x29, 0x2f,
-+ 0x29, 0x29, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0xf8, 0x80, 0xfc, 0x44, 0xf4,
-+ 0x54, 0xf4, 0x54, 0x7c, 0x8c, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3f, 0x3e, 0x32, 0x5e, 0x1f,
-+ 0x08, 0x0f, 0x09, 0x09, 0x17, 0x21, 0x00, 0x00,
-+ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xe0,
-+ 0x20, 0xe0, 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3e, 0x0b, 0x2c, 0x2f,
-+ 0x29, 0x29, 0x2f, 0x39, 0x62, 0x04, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa8, 0xf0, 0xe8, 0xf8, 0x64, 0x10,
-+ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x25, 0x3f, 0x29, 0x08, 0x2f,
-+ 0x2b, 0x28, 0x2b, 0x2e, 0x3b, 0x62, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0,
-+ 0xfc, 0x08, 0xfc, 0xc8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x2a, 0x09, 0x2f,
-+ 0x29, 0x29, 0x2f, 0x39, 0x61, 0x06, 0x00, 0x00,
-+ 0x48, 0xb0, 0x20, 0xfc, 0x68, 0x48, 0xf0, 0x10,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00,
-+ 0x02, 0x7a, 0x4f, 0x49, 0x7f, 0x15, 0x56, 0x5f,
-+ 0x57, 0x51, 0x5f, 0x72, 0x44, 0x08, 0x00, 0x00,
-+ 0x80, 0x78, 0xe8, 0xa8, 0xf0, 0xf0, 0xe8, 0xe8,
-+ 0xe4, 0x24, 0xe4, 0xb8, 0x60, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x26, 0x26, 0x3e, 0x0a, 0x2a, 0x2e,
-+ 0x2b, 0x2a, 0x2f, 0x3c, 0x6b, 0x00, 0x00, 0x00,
-+ 0x20, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf8,
-+ 0xfc, 0xac, 0xfc, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x26, 0x27, 0x3e, 0x2b, 0x0a, 0x2e,
-+ 0x2b, 0x2a, 0x2a, 0x2e, 0x3a, 0x62, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x68, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0xa8, 0xf8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x27, 0x3e, 0x2b, 0x0b, 0x2e,
-+ 0x2a, 0x2b, 0x2a, 0x2e, 0x3a, 0x62, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0xb8, 0x68,
-+ 0xf8, 0xf8, 0xf8, 0xa8, 0xf8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x09, 0x28, 0x2f,
-+ 0x2a, 0x2b, 0x2f, 0x3b, 0x66, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x90, 0xf0, 0xf0, 0xf0, 0x10, 0xfc,
-+ 0xa8, 0xb8, 0xb8, 0xb8, 0xe8, 0x88, 0x00, 0x00,
-+ 0x08, 0x11, 0x3c, 0x24, 0x3d, 0x25, 0x3d, 0x27,
-+ 0x7d, 0x0d, 0x14, 0x64, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8,
-+ 0x08, 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00,
-+ 0x08, 0x10, 0x3c, 0x27, 0x3c, 0x24, 0x3d, 0x27,
-+ 0x7e, 0x0d, 0x14, 0x64, 0x04, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50, 0x50,
-+ 0x48, 0xf4, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x13, 0x3e, 0x27, 0x3e, 0x27, 0x3c, 0x27,
-+ 0x7d, 0x0d, 0x15, 0x64, 0x07, 0x0c, 0x00, 0x00,
-+ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x11, 0x3c, 0x24, 0x3c, 0x25, 0x3e, 0x26,
-+ 0x7f, 0x0c, 0x15, 0x66, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0xe0, 0xa0, 0xb8, 0xa8, 0x08, 0x70, 0x40,
-+ 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x40, 0x00, 0x00,
-+ 0x09, 0x10, 0x3f, 0x24, 0x3d, 0x24, 0x3f, 0x26,
-+ 0x7c, 0x0f, 0x14, 0x64, 0x05, 0x0e, 0x00, 0x00,
-+ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x40,
-+ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00,
-+ 0x08, 0x13, 0x3a, 0x2a, 0x3a, 0x2b, 0x3b, 0x2f,
-+ 0x7b, 0x1b, 0x2d, 0x4d, 0x09, 0x19, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa8, 0xb0, 0x7c, 0xd0, 0x78,
-+ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00,
-+ 0x08, 0x13, 0x3a, 0x2a, 0x3b, 0x2b, 0x3b, 0x2f,
-+ 0x7b, 0x1a, 0x2d, 0x4d, 0x0a, 0x18, 0x00, 0x00,
-+ 0x40, 0xfc, 0xa8, 0xfc, 0xd0, 0x78, 0x78, 0x50,
-+ 0x7c, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xc8,
-+ 0xd8, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x7f,
-+ 0x01, 0x31, 0x0c, 0x06, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc,
-+ 0x00, 0x18, 0x60, 0xc0, 0x30, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2b,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7e, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x24, 0xc0, 0x10,
-+ 0x20, 0xc4, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7e, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x28, 0x24, 0x24, 0xfc, 0x20, 0x20, 0xe0, 0xa0,
-+ 0x90, 0x90, 0xb4, 0xcc, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x30, 0x48, 0xf4, 0x24, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a,
-+ 0x3f, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x08, 0x3f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa8, 0xa8, 0x50, 0xa8, 0xa8, 0x00,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x0b, 0x7f, 0x09, 0x3d, 0x2d, 0x3d, 0x2d,
-+ 0x3d, 0x09, 0x7f, 0x0b, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0x50, 0xd0, 0x50, 0x50, 0xd0,
-+ 0x50, 0x50, 0xd4, 0x54, 0x54, 0x4c, 0x00, 0x00,
-+ 0x08, 0x0b, 0x7f, 0x09, 0x3f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x09, 0x7f, 0x0b, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x68, 0x68, 0xe8,
-+ 0x50, 0x50, 0xd8, 0x68, 0x44, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0xa8, 0x00, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x09, 0x3e, 0x2a, 0x3f, 0x2b,
-+ 0x3e, 0x09, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x68, 0x90, 0xd8, 0x24, 0xf8,
-+ 0x68, 0x68, 0x90, 0x90, 0x68, 0x44, 0x00, 0x00,
-+ 0x10, 0x13, 0x7c, 0x10, 0x7f, 0x56, 0x7f, 0x56,
-+ 0x7e, 0x13, 0x7e, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0xf8, 0xd8,
-+ 0xd8, 0x68, 0x48, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x10, 0x13, 0x7c, 0x10, 0x7f, 0x56, 0x7f, 0x57,
-+ 0x7f, 0x13, 0x7f, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x58, 0x58,
-+ 0x58, 0xf8, 0x18, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x3e, 0x08, 0x7f, 0x14, 0x23, 0x5f, 0x0f,
-+ 0x09, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x50, 0x88, 0xf4, 0xe0,
-+ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x09, 0x7e, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x50,
-+ 0xf8, 0x24, 0xf8, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0x90, 0xf0, 0x00,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x0b, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf0, 0x90, 0xf0, 0x90, 0xf0,
-+ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x09, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x09, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x24, 0x64, 0xd8, 0x50, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x3f, 0x5e, 0x7f, 0x3e,
-+ 0x2a, 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x09, 0x3f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x09, 0x7f, 0x0a, 0x0c, 0x09, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x50, 0xf8, 0x50,
-+ 0x50, 0xfc, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x09, 0x3f, 0x2b, 0x3f, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xfc, 0x28, 0xac, 0xac, 0x00,
-+ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x09, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x28, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0x38, 0xe8, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x12, 0x7f, 0x56, 0x7e, 0x57,
-+ 0x7f, 0x13, 0x7f, 0x15, 0x15, 0x1a, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0x24, 0xe8, 0x30, 0x64, 0xa4, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x09, 0x3e, 0x2a, 0x3f, 0x2a,
-+ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x50, 0xf8, 0x54, 0x70,
-+ 0xfc, 0x04, 0x74, 0x54, 0x74, 0x0c, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x12, 0x7f, 0x56, 0x7f, 0x57,
-+ 0x7d, 0x10, 0x7e, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x28, 0xe8, 0x10, 0xd4, 0x6c,
-+ 0xc4, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00,
-+ 0x10, 0x13, 0x7c, 0x13, 0x7e, 0x57, 0x7f, 0x57,
-+ 0x7c, 0x13, 0x7e, 0x12, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xfc, 0x48, 0x58, 0x58, 0xfc,
-+ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x12, 0x12, 0x7d, 0x15, 0x7a, 0x5a, 0x7d, 0x5f,
-+ 0x78, 0x17, 0x78, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xb4, 0xe8, 0xa8, 0xf4, 0x5c,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x13, 0x7e, 0x13, 0x7f, 0x56, 0x7f, 0x56,
-+ 0x7e, 0x12, 0x7e, 0x14, 0x17, 0x18, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0xb0, 0xfc, 0xd0, 0xb8, 0x94,
-+ 0x20, 0xb8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x7f, 0x12, 0x7f, 0x57, 0x7f, 0x57,
-+ 0x7f, 0x13, 0x7f, 0x15, 0x15, 0x1b, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf0, 0x50, 0xf0,
-+ 0x50, 0xf0, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00,
-+ 0x01, 0x7f, 0x01, 0x1f, 0x10, 0x1f, 0x01, 0x3f,
-+ 0x08, 0x7f, 0x01, 0x3f, 0x01, 0x01, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x20, 0xfc, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1e, 0x13, 0x12, 0x12, 0x1e, 0x13, 0x10,
-+ 0x3e, 0x33, 0x52, 0x1e, 0x12, 0x10, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x20,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x24, 0x15, 0x19, 0x7f, 0x09,
-+ 0x0e, 0x78, 0x09, 0x12, 0x10, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0xe0, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00,
-+ 0x03, 0x3e, 0x29, 0x3f, 0x4a, 0x04, 0x3f, 0x2b,
-+ 0x3f, 0x3f, 0x2b, 0x25, 0x3b, 0x23, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x48, 0x28, 0x30, 0xfc, 0x10,
-+ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x10, 0x13, 0x7c, 0x2f, 0x28, 0x2b, 0x7c, 0x13,
-+ 0x1c, 0x73, 0x12, 0x23, 0x22, 0x40, 0x00, 0x00,
-+ 0x10, 0x90, 0x7c, 0xe8, 0x28, 0xa8, 0x7c, 0x90,
-+ 0x10, 0xfc, 0x90, 0x90, 0x90, 0x10, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x20, 0x10, 0x17, 0x00, 0x70,
-+ 0x10, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x23, 0x12, 0x12, 0x02, 0x73,
-+ 0x12, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8,
-+ 0x48, 0x40, 0x40, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x22, 0x12, 0x12, 0x02, 0x72,
-+ 0x12, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xe8,
-+ 0xa8, 0x08, 0x08, 0x18, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x20, 0x10, 0x11, 0x02, 0x71,
-+ 0x11, 0x11, 0x11, 0x11, 0x2c, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x30, 0x00, 0xf8,
-+ 0x08, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x20, 0x10, 0x13, 0x02, 0x02, 0x73, 0x12,
-+ 0x12, 0x13, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48,
-+ 0x48, 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x22, 0x12, 0x12, 0x43, 0x24, 0x24, 0x0a, 0x71,
-+ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xa0, 0xb0, 0xa8, 0xa4, 0x24,
-+ 0x20, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x20, 0x17, 0x11, 0x42, 0x27, 0x22, 0x03, 0x73,
-+ 0x12, 0x13, 0x13, 0x12, 0x2a, 0x47, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x44, 0xfc, 0xd8, 0x68, 0xf8,
-+ 0xd8, 0x68, 0xf8, 0x48, 0x58, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x22, 0x12, 0x12, 0x02, 0x72,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x22, 0x13, 0x12, 0x02, 0x73,
-+ 0x15, 0x15, 0x19, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8,
-+ 0x08, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x27, 0x10, 0x12, 0x02, 0x74,
-+ 0x18, 0x11, 0x11, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0xa0, 0xb0, 0xa8, 0xa4,
-+ 0xa4, 0x20, 0x20, 0x60, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x20, 0x13, 0x12, 0x02, 0x72,
-+ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xb8, 0xb8,
-+ 0x18, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x27, 0x10, 0x12, 0x01, 0x71,
-+ 0x11, 0x16, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x48, 0x70,
-+ 0xd0, 0x48, 0x48, 0xc0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x20, 0x17, 0x12, 0x42, 0x24, 0x22, 0x00, 0x73,
-+ 0x10, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x48, 0x48, 0x90, 0x48, 0x00, 0xf8,
-+ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x27, 0x11, 0x11, 0x02, 0x74,
-+ 0x11, 0x12, 0x10, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xa0, 0x18, 0xe4, 0x20, 0x24, 0x9c, 0xf0,
-+ 0x90, 0x60, 0xd0, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x22, 0x15, 0x11, 0x01, 0x71,
-+ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0x44, 0xf4, 0x10, 0xf0, 0x10,
-+ 0xf0, 0x10, 0x10, 0x30, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x21, 0x11, 0x10, 0x03, 0x70,
-+ 0x11, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8, 0x40,
-+ 0xf0, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x21, 0x11, 0x16, 0x42, 0x26, 0x2b, 0x03, 0x75,
-+ 0x19, 0x11, 0x11, 0x1e, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x28, 0x68, 0x70, 0xa0, 0x20,
-+ 0x50, 0x50, 0x88, 0x04, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x20, 0x13, 0x12, 0x03, 0x72,
-+ 0x13, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xf8, 0x48, 0x48, 0x58, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x09, 0x22, 0x10, 0x10, 0x01, 0x73,
-+ 0x15, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0x10, 0xf8,
-+ 0x14, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x27, 0x10, 0x11, 0x02, 0x77,
-+ 0x10, 0x11, 0x10, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x48, 0xfc,
-+ 0x90, 0xd0, 0x70, 0x88, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x08, 0x27, 0x11, 0x11, 0x02, 0x74,
-+ 0x11, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x24, 0x5c, 0x40,
-+ 0xf0, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x0b, 0x20, 0x17, 0x11, 0x00, 0x77,
-+ 0x10, 0x13, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xa0, 0xfc,
-+ 0x40, 0xf8, 0x40, 0x40, 0x00, 0xfc, 0x00, 0x00,
-+ 0x22, 0x11, 0x11, 0x47, 0x21, 0x21, 0x0f, 0x71,
-+ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x23, 0x12, 0x13, 0x01, 0x73,
-+ 0x16, 0x12, 0x13, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x48, 0xa8, 0x28, 0xf8, 0x10, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x22, 0x13, 0x12, 0x03, 0x72,
-+ 0x12, 0x13, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x00, 0xf8, 0x28,
-+ 0x10, 0x90, 0x28, 0x48, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x21, 0x11, 0x11, 0x00, 0x73,
-+ 0x10, 0x11, 0x10, 0x1f, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8,
-+ 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xfc, 0x00, 0x00,
-+ 0x11, 0x09, 0x0a, 0x27, 0x10, 0x13, 0x02, 0x73,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0xf0, 0x10, 0x08, 0xfc, 0xa0, 0xf8, 0xa8, 0x38,
-+ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x23, 0x12, 0x12, 0x02, 0x73,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xb8, 0x18,
-+ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x08, 0x23, 0x12, 0x13, 0x02, 0x73,
-+ 0x12, 0x13, 0x13, 0x1c, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xf8, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0,
-+ 0x10, 0xf0, 0x30, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x11, 0x08, 0x09, 0x23, 0x14, 0x13, 0x02, 0x73,
-+ 0x12, 0x13, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0xc0, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8, 0xd0,
-+ 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x08, 0x0f, 0x20, 0x13, 0x13, 0x02, 0x73,
-+ 0x12, 0x13, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x18, 0xa8, 0xf8,
-+ 0x48, 0xf8, 0x48, 0x58, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x23, 0x10, 0x17, 0x01, 0x71,
-+ 0x11, 0x11, 0x17, 0x19, 0x27, 0x41, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0xf0, 0x50,
-+ 0xf0, 0x50, 0xfc, 0x10, 0x30, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x22, 0x12, 0x12, 0x02, 0x72,
-+ 0x15, 0x15, 0x1a, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x18, 0xe0, 0x38, 0xfc, 0xa8, 0xb8, 0xe4, 0x9c,
-+ 0x50, 0x54, 0x54, 0x8c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x11, 0x0b, 0x09, 0x27, 0x11, 0x17, 0x01, 0x71,
-+ 0x12, 0x12, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0xfc, 0x48, 0xe8, 0x18, 0x90,
-+ 0x98, 0xa8, 0xc4, 0x84, 0x00, 0xfc, 0x00, 0x00,
-+ 0x20, 0x17, 0x15, 0x45, 0x27, 0x25, 0x05, 0x77,
-+ 0x15, 0x15, 0x19, 0x1b, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x64, 0xb4, 0x38, 0xd8, 0x38,
-+ 0xd4, 0x14, 0x10, 0x60, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x08, 0x27, 0x11, 0x17, 0x01, 0x76,
-+ 0x13, 0x10, 0x11, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x40, 0xfc, 0x10, 0xb8, 0x90, 0x3c,
-+ 0xf8, 0xa0, 0x24, 0x1c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x02, 0x39, 0x29, 0x2c, 0x32, 0x33, 0x28, 0x2f,
-+ 0x25, 0x25, 0x25, 0x39, 0x22, 0x24, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x78, 0x90, 0xfc, 0x78, 0x48,
-+ 0x78, 0x78, 0x48, 0x58, 0x80, 0x7c, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x23, 0x12, 0x13, 0x03, 0x72,
-+ 0x12, 0x15, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xac, 0xac, 0xa0,
-+ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00,
-+ 0x22, 0x13, 0x14, 0x49, 0x27, 0x25, 0x07, 0x75,
-+ 0x17, 0x14, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0x28, 0xd8, 0xb0, 0xb8, 0xd0,
-+ 0xfc, 0x90, 0x90, 0x90, 0x00, 0xfc, 0x00, 0x00,
-+ 0x20, 0x10, 0x17, 0x44, 0x27, 0x24, 0x07, 0x74,
-+ 0x17, 0x14, 0x1b, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x80, 0xf0, 0xfc, 0xe8, 0x90, 0x70, 0xf8, 0xc8,
-+ 0x68, 0xb0, 0x68, 0xa4, 0xc0, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0f, 0x08, 0x21, 0x11, 0x11, 0x01, 0x71,
-+ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf0, 0x50, 0xf0, 0x50, 0xf0,
-+ 0xf8, 0x68, 0xf8, 0x08, 0x18, 0xfc, 0x00, 0x00,
-+ 0x11, 0x0f, 0x0c, 0x27, 0x14, 0x17, 0x02, 0x7f,
-+ 0x13, 0x12, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xbc, 0xc8, 0xc8, 0x28, 0xd0,
-+ 0x98, 0xa8, 0xc4, 0x84, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x21, 0x11, 0x11, 0x03, 0x72,
-+ 0x15, 0x17, 0x10, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0xf0, 0xfc, 0xa8,
-+ 0x78, 0xfc, 0xf0, 0x10, 0x60, 0xfc, 0x00, 0x00,
-+ 0x10, 0x09, 0x09, 0x21, 0x11, 0x11, 0x03, 0x72,
-+ 0x15, 0x17, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf0, 0x10, 0xd0, 0xd0, 0xf0, 0xfc, 0xe8,
-+ 0x10, 0xfc, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00,
-+ 0x10, 0x0b, 0x0a, 0x23, 0x12, 0x1d, 0x03, 0x72,
-+ 0x17, 0x13, 0x15, 0x19, 0x26, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x28, 0x7c, 0x50, 0xfc,
-+ 0xd0, 0x7c, 0xd0, 0x7c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x0f, 0x78, 0x0a, 0x2a, 0x2a, 0x2a,
-+ 0x3e, 0x2a, 0x08, 0x0a, 0x0c, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x12,
-+ 0x1e, 0x12, 0x12, 0x12, 0x1e, 0x12, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0xd0, 0x60, 0x50, 0x50,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x01, 0x06, 0x38, 0x20, 0x20, 0x3f, 0x24, 0x24,
-+ 0x24, 0x24, 0x27, 0x38, 0x60, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x7e, 0x12, 0x12, 0x12, 0x22, 0x4c, 0x00,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x00, 0x7e, 0x08,
-+ 0x08, 0x3e, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00, 0x00,
-+ 0x14, 0x12, 0x22, 0x48, 0x08, 0x14, 0x12, 0x22,
-+ 0x7e, 0x22, 0x22, 0x3e, 0x22, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x13, 0x12,
-+ 0x13, 0x17, 0x14, 0x27, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0xe0, 0x20,
-+ 0xe0, 0xf0, 0x90, 0xf4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x03, 0x3c, 0x32, 0x29, 0x29, 0x40, 0x3e, 0x04,
-+ 0x08, 0x0e, 0x78, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88,
-+ 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x77, 0x55, 0x55, 0x77, 0x00, 0x3e, 0x00,
-+ 0x7f, 0x10, 0x1e, 0x22, 0x02, 0x0c, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x10, 0x1f, 0x29, 0x6b, 0x3f, 0x29, 0x0e, 0x10,
-+ 0x1f, 0x29, 0x6b, 0x3f, 0x29, 0x16, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x7f, 0x08, 0x3f, 0x21,
-+ 0x2f, 0x2b, 0x2f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0xd0, 0x60, 0x50, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x77, 0x55, 0x77, 0x00, 0x3e, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48,
-+ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x04, 0x25, 0x16, 0x7f, 0x0e, 0x15, 0x75, 0x1f,
-+ 0x2d, 0x6d, 0x1f, 0x11, 0x21, 0x41, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0xd0, 0x50, 0x60, 0xd0, 0xc8,
-+ 0x48, 0x48, 0xc8, 0x70, 0x40, 0x40, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x80, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10,
-+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x2f,
-+ 0x33, 0x31, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0xa0, 0x20, 0x20, 0xfc, 0xa8, 0x20, 0x20,
-+ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf0, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8,
-+ 0x48, 0x50, 0x30, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x48, 0xc8, 0x48, 0x48, 0xfc, 0x48, 0x48, 0x48,
-+ 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x08, 0xb0, 0xe0, 0x20, 0x20, 0xfc, 0x70, 0x70,
-+ 0x70, 0xa8, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0xa0, 0x38, 0x48, 0xd0, 0x30, 0x20, 0x40,
-+ 0xf8, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x28, 0xc8, 0x30, 0x28, 0xfc, 0x04, 0x78,
-+ 0x48, 0x78, 0x48, 0x78, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x2f,
-+ 0x37, 0x33, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x78, 0x08, 0xf0,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x50, 0xd0, 0x50, 0xf8, 0x50, 0x50, 0xfc, 0x00,
-+ 0x78, 0x48, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37,
-+ 0x33, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x48, 0x48, 0x68, 0xb4, 0x24,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2e, 0x2e, 0x37,
-+ 0x37, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, 0xd8, 0xf8,
-+ 0xb8, 0xd4, 0xd4, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x00, 0x7e, 0x18, 0x19, 0x7e, 0x5a, 0x5a, 0x7e,
-+ 0x67, 0x47, 0x7f, 0x43, 0x7f, 0x42, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00,
-+ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2e, 0x35, 0x3f, 0x2a, 0x3f, 0x7f,
-+ 0x02, 0x1f, 0x14, 0x1f, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0x70, 0x54, 0x9c, 0xf8, 0x70, 0xd8, 0xfc,
-+ 0x80, 0xf0, 0xd0, 0xf0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0d, 0x3e, 0x2e, 0x2e, 0x36,
-+ 0x37, 0x22, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0xfc, 0x50, 0xf8, 0x00, 0xa8, 0xa8, 0xac,
-+ 0x04, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0d, 0x3e, 0x2f, 0x2e, 0x36,
-+ 0x37, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x20, 0xd0,
-+ 0x2c, 0xd0, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0c, 0x0c, 0x3e, 0x2e, 0x2e, 0x36,
-+ 0x36, 0x22, 0x3e, 0x23, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x38, 0xfc, 0xb8, 0xe8, 0x98, 0xfc, 0xa0,
-+ 0xf4, 0xb8, 0xd8, 0x34, 0x54, 0x30, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0d, 0x0d, 0x3f, 0x2f, 0x2e, 0x37,
-+ 0x36, 0x22, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00,
-+ 0x60, 0xf8, 0x68, 0xf8, 0x68, 0xf8, 0x00, 0xfc,
-+ 0xf8, 0x88, 0xf8, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0d, 0x0c, 0x3e, 0x2e, 0x2e, 0x36,
-+ 0x36, 0x22, 0x3f, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x18, 0xe0, 0xfc, 0x20, 0xf8, 0xb8, 0xe8, 0xf8,
-+ 0x20, 0xf8, 0xfc, 0x00, 0xe8, 0x54, 0x00, 0x00,
-+ 0x00, 0x7f, 0x0d, 0x0d, 0x3f, 0x2e, 0x2f, 0x36,
-+ 0x36, 0x23, 0x3e, 0x23, 0x3e, 0x23, 0x00, 0x00,
-+ 0x20, 0xfc, 0xdc, 0x54, 0xdc, 0x50, 0xfc, 0xf8,
-+ 0x50, 0xfc, 0x68, 0xd0, 0x68, 0x84, 0x00, 0x00,
-+ 0x1b, 0x12, 0x1b, 0x1b, 0x3f, 0x2f, 0x5f, 0x14,
-+ 0x1f, 0x1f, 0x07, 0x0f, 0x72, 0x0c, 0x00, 0x00,
-+ 0xb0, 0x90, 0xb0, 0xb0, 0xfc, 0xe8, 0xf0, 0xd0,
-+ 0xf0, 0xf0, 0xc0, 0xf0, 0x4c, 0xc0, 0x00, 0x00,
-+ 0x03, 0x7d, 0x49, 0x2a, 0x2c, 0x7f, 0x18, 0x1c,
-+ 0x1a, 0x29, 0x29, 0x48, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x7d, 0x4b, 0x2b, 0x2c, 0x7f, 0x18, 0x1d,
-+ 0x1a, 0x2b, 0x28, 0x49, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0xf8, 0x40, 0xf8, 0x40, 0xfc,
-+ 0x90, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x1c, 0x2a, 0x5f, 0x17, 0x14,
-+ 0x17, 0x17, 0x1f, 0x20, 0x5f, 0x00, 0x00, 0x00,
-+ 0x40, 0x7c, 0xd0, 0x30, 0xcc, 0xf8, 0xf0, 0x90,
-+ 0xf0, 0xf0, 0xf8, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0x70, 0x10, 0x10, 0x50, 0x50, 0x50, 0x50,
-+ 0x90, 0x88, 0x88, 0x08, 0x04, 0x04, 0x00, 0x00,
-+ 0x04, 0x04, 0x09, 0x11, 0x02, 0x04, 0x1f, 0x61,
-+ 0x1f, 0x09, 0x05, 0x05, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x20, 0x10, 0x10, 0x80, 0x40, 0xf0, 0x0c,
-+ 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x68,
-+ 0x58, 0x4c, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0x90, 0x50, 0x50,
-+ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xa8, 0xb8, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0xb8, 0xa0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0x08, 0xe8, 0x08,
-+ 0x28, 0xc8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1d, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90,
-+ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0x24, 0x2c,
-+ 0x68, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0,
-+ 0xa0, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x28, 0x24, 0xfc, 0xa0, 0xa8, 0xa8, 0xa8,
-+ 0x98, 0x90, 0x94, 0xec, 0xac, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, 0x90, 0x90,
-+ 0xf0, 0x90, 0x90, 0x90, 0xf0, 0x90, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88,
-+ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x28, 0xc8, 0x50,
-+ 0x30, 0x20, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x48,
-+ 0x70, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x23, 0x5c, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0x20,
-+ 0xfc, 0x24, 0x58, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x80, 0xf8, 0x88,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x22, 0x4a, 0x0f, 0x11, 0x17, 0x31,
-+ 0x55, 0x13, 0x13, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x00, 0x3c, 0x80, 0x40, 0xfc, 0x08, 0xc8, 0x08,
-+ 0x48, 0x88, 0x08, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x70,
-+ 0x70, 0xa8, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0xe0, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x2a, 0x26, 0x7a, 0x12, 0x7e,
-+ 0x12, 0x57, 0x38, 0x31, 0x1d, 0x62, 0x00, 0x00,
-+ 0x40, 0x80, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7f,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xa8, 0xa8, 0xa8, 0x74,
-+ 0x24, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0xf0,
-+ 0x50, 0x5c, 0x94, 0x84, 0x04, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0x20, 0x20, 0xfc, 0x80,
-+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x78, 0x00, 0x00,
-+ 0x10, 0x13, 0x18, 0x24, 0x27, 0x7e, 0x12, 0x7f,
-+ 0x12, 0x54, 0x38, 0x30, 0x1f, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xa0, 0xb8, 0x08, 0x08, 0xb8,
-+ 0xa8, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x19, 0x25, 0x27, 0x7d, 0x11, 0x7d,
-+ 0x12, 0x54, 0x38, 0x31, 0x1e, 0x64, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68,
-+ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xe8,
-+ 0xa8, 0xa8, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0xa8, 0x00, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x50,
-+ 0x7c, 0xc8, 0x30, 0x64, 0x9c, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x0c, 0xf0, 0xa8, 0xa4, 0x04, 0xf8, 0x28, 0xfc,
-+ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x68, 0x90, 0xd0, 0x28, 0xf8,
-+ 0x48, 0x68, 0x90, 0x90, 0x68, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x20, 0x20, 0xfc, 0x20,
-+ 0x38, 0x28, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x60, 0x60, 0xa4, 0xa8,
-+ 0xb0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x70, 0x00, 0x00,
-+ 0x10, 0xf8, 0x14, 0x14, 0xfc, 0x50, 0x50, 0x70,
-+ 0x50, 0x50, 0x74, 0xcc, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xd8, 0x48, 0x00, 0xf8,
-+ 0x28, 0x28, 0xd0, 0x10, 0x28, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x18, 0x14, 0x27, 0x22, 0x7b, 0x12, 0x7f,
-+ 0x13, 0x57, 0x3b, 0x32, 0x1c, 0x64, 0x00, 0x00,
-+ 0x28, 0x24, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xe8,
-+ 0x50, 0x50, 0xf4, 0x2c, 0x4c, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x18, 0x25, 0x27, 0x78, 0x13, 0x7e,
-+ 0x13, 0x56, 0x3b, 0x32, 0x1e, 0x62, 0x00, 0x00,
-+ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8,
-+ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x24, 0x24, 0x78, 0x10, 0x7c,
-+ 0x13, 0x55, 0x39, 0x31, 0x1d, 0x61, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x90,
-+ 0xfc, 0x50, 0x54, 0x8c, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x7c, 0x08, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x70, 0x00, 0x00,
-+ 0xf0, 0x90, 0x08, 0xfc, 0x00, 0xf0, 0x90, 0x08,
-+ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x04, 0x74, 0x54, 0x74, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0e, 0x73, 0x00, 0x00,
-+ 0x98, 0xe0, 0x84, 0x7c, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0xfc, 0xc8, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x09, 0x7c,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x58, 0x48, 0xa8, 0x20, 0x50,
-+ 0x88, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x12, 0x11, 0x19, 0x26, 0x25, 0x7d, 0x10, 0x7c,
-+ 0x13, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00,
-+ 0x70, 0x10, 0x50, 0x48, 0x84, 0x78, 0x20, 0xfc,
-+ 0x20, 0x30, 0x48, 0x88, 0x80, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x17, 0x27, 0x59,
-+ 0x0e, 0x77, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x58, 0xe4, 0x3c,
-+ 0xe0, 0xdc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x27, 0x26, 0x7b, 0x12, 0x7f,
-+ 0x12, 0x55, 0x38, 0x30, 0x1f, 0x60, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xe8, 0x50, 0xd0, 0xa8, 0xc4,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x3e, 0x2a, 0x3e, 0x7f, 0x09,
-+ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00,
-+ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x10, 0x10,
-+ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x0b, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x08, 0x80, 0xfc, 0x20, 0x78,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x10, 0x12, 0x1a, 0x26, 0x27, 0x7a, 0x10, 0x7c,
-+ 0x13, 0x56, 0x3a, 0x32, 0x1c, 0x60, 0x00, 0x00,
-+ 0xa0, 0xb8, 0xa8, 0xe8, 0xd0, 0xb0, 0xa8, 0xc8,
-+ 0xfc, 0xc8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00,
-+ 0x11, 0x11, 0x19, 0x25, 0x27, 0x79, 0x11, 0x7d,
-+ 0x11, 0x55, 0x3a, 0x32, 0x1c, 0x61, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x7c, 0xe0, 0x20, 0xbc, 0xd0,
-+ 0xfc, 0x90, 0xa8, 0xa8, 0xc4, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f,
-+ 0x09, 0x2b, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x88, 0x50, 0x70, 0x8c, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x40, 0xa0,
-+ 0x30, 0xcc, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00,
-+ 0x12, 0x11, 0x19, 0x24, 0x26, 0x79, 0x11, 0x7c,
-+ 0x13, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x50, 0xd0, 0x30, 0xc8, 0x00, 0x00,
-+ 0x10, 0x13, 0x18, 0x27, 0x26, 0x7f, 0x12, 0x7c,
-+ 0x13, 0x54, 0x3a, 0x32, 0x1c, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xb8, 0x08, 0xb8, 0xa8, 0xa0,
-+ 0xfc, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x10, 0x17, 0x18, 0x27, 0x26, 0x7b, 0x11, 0x7d,
-+ 0x11, 0x55, 0x39, 0x33, 0x1c, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xf0, 0x10,
-+ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x11, 0x11, 0x1f, 0x27, 0x26, 0x7a, 0x13, 0x7f,
-+ 0x10, 0x55, 0x3b, 0x31, 0x1d, 0x63, 0x00, 0x00,
-+ 0x20, 0x20, 0xe0, 0xa0, 0xbc, 0xe8, 0xe8, 0xa8,
-+ 0x90, 0xd0, 0x30, 0x28, 0x48, 0x84, 0x00, 0x00,
-+ 0x10, 0x11, 0x18, 0x27, 0x25, 0x7b, 0x11, 0x7d,
-+ 0x13, 0x57, 0x38, 0x30, 0x1d, 0x62, 0x00, 0x00,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xbc,
-+ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7f,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00,
-+ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x54, 0x88, 0xfc, 0x88, 0xf8,
-+ 0x88, 0xf8, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xfc, 0x54, 0xfc, 0x00, 0xfc, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x64, 0xd8, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f,
-+ 0x08, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x20, 0xf8, 0xf8, 0x20, 0xfc,
-+ 0x00, 0xdc, 0x54, 0x74, 0x04, 0x0c, 0x00, 0x00,
-+ 0x11, 0x13, 0x19, 0x27, 0x24, 0x7b, 0x12, 0x7f,
-+ 0x13, 0x55, 0x3b, 0x31, 0x1f, 0x60, 0x00, 0x00,
-+ 0x30, 0xe8, 0x28, 0xfc, 0x20, 0xa8, 0xa8, 0xa8,
-+ 0xd8, 0x10, 0x94, 0xec, 0x4c, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x24, 0x27, 0x78, 0x13, 0x7e,
-+ 0x13, 0x56, 0x39, 0x31, 0x1e, 0x60, 0x00, 0x00,
-+ 0xa0, 0xb0, 0xe8, 0xa8, 0xfc, 0x20, 0xe8, 0x68,
-+ 0xd8, 0x50, 0x94, 0xec, 0x2c, 0x44, 0x00, 0x00,
-+ 0x09, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00,
-+ 0x24, 0xa8, 0xfc, 0x08, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x24, 0xfc, 0x24, 0xfc, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7e,
-+ 0x09, 0x2a, 0x1c, 0x19, 0x0c, 0x71, 0x00, 0x00,
-+ 0x50, 0x3c, 0xd4, 0xb4, 0x6c, 0x94, 0xfc, 0x54,
-+ 0xcc, 0x70, 0xd0, 0x20, 0x50, 0x8c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x29, 0x3e, 0x25, 0x3d, 0x29, 0x3f,
-+ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x68, 0xf8, 0x00,
-+ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x18, 0x25, 0x27, 0x79, 0x10, 0x7d,
-+ 0x13, 0x54, 0x3b, 0x32, 0x1f, 0x60, 0x00, 0x00,
-+ 0x40, 0xfc, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0,
-+ 0xfc, 0x08, 0xfc, 0xc8, 0xa8, 0x18, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x27, 0x26, 0x7a, 0x13, 0x7e,
-+ 0x12, 0x56, 0x3a, 0x32, 0x1c, 0x67, 0x00, 0x00,
-+ 0x20, 0xfc, 0x50, 0xfc, 0x50, 0x70, 0xfc, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x12, 0x12, 0x15, 0x2d, 0x26, 0x7a, 0x15, 0x7f,
-+ 0x10, 0x57, 0x38, 0x31, 0x1e, 0x60, 0x00, 0x00,
-+ 0x48, 0x88, 0xf4, 0xb4, 0xe8, 0xa8, 0xf4, 0x5c,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x26, 0x27, 0x7a, 0x12, 0x7e,
-+ 0x12, 0x56, 0x3a, 0x32, 0x1c, 0x65, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0x28, 0xd4, 0xcc, 0x38, 0x00, 0x00,
-+ 0x11, 0x11, 0x1a, 0x25, 0x27, 0x7a, 0x13, 0x7f,
-+ 0x13, 0x56, 0x3b, 0x32, 0x1f, 0x64, 0x00, 0x00,
-+ 0x50, 0x50, 0xa0, 0x50, 0xf8, 0xe8, 0x98, 0xf8,
-+ 0x68, 0xd8, 0x68, 0xdc, 0x64, 0x84, 0x00, 0x00,
-+ 0x10, 0x10, 0x1b, 0x26, 0x27, 0x7a, 0x12, 0x7e,
-+ 0x12, 0x56, 0x3b, 0x35, 0x1d, 0x67, 0x00, 0x00,
-+ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8,
-+ 0x88, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x19, 0x27, 0x24, 0x7f, 0x15, 0x7f,
-+ 0x13, 0x56, 0x3b, 0x32, 0x1e, 0x62, 0x00, 0x00,
-+ 0x40, 0xa0, 0x10, 0xfc, 0x00, 0xfc, 0xb4, 0xfc,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x10, 0x17, 0x18, 0x27, 0x26, 0x7b, 0x10, 0x7d,
-+ 0x13, 0x55, 0x39, 0x31, 0x1d, 0x61, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0x90, 0xfc,
-+ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x13, 0x18, 0x24, 0x24, 0x7b, 0x10, 0x7f,
-+ 0x12, 0x57, 0x3b, 0x32, 0x1f, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0xf0, 0xf0, 0xf0, 0x10, 0xfc,
-+ 0xa8, 0xb8, 0xb8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x11, 0x11, 0x1a, 0x27, 0x25, 0x7a, 0x11, 0x7d,
-+ 0x11, 0x55, 0x39, 0x31, 0x1d, 0x66, 0x00, 0x00,
-+ 0x98, 0xfc, 0xa8, 0xfc, 0xd8, 0xac, 0xfc, 0x08,
-+ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e,
-+ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00,
-+ 0x90, 0xf8, 0x90, 0xfc, 0xd0, 0x28, 0xfc, 0x88,
-+ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x1a, 0x27, 0x25, 0x79, 0x16, 0x7d,
-+ 0x12, 0x57, 0x39, 0x33, 0x1d, 0x61, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0x28, 0x50, 0xfc, 0x50,
-+ 0xf8, 0xd0, 0x78, 0xd0, 0x7c, 0x40, 0x00, 0x00,
-+ 0x13, 0x17, 0x6b, 0x17, 0x7f, 0x3a, 0x57, 0x11,
-+ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00,
-+ 0x90, 0xd4, 0xe8, 0x98, 0xfc, 0xb8, 0xd4, 0x10,
-+ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00,
-+ 0x13, 0x12, 0x1b, 0x27, 0x27, 0x79, 0x13, 0x7d,
-+ 0x11, 0x55, 0x3b, 0x30, 0x1c, 0x63, 0x00, 0x00,
-+ 0xb8, 0xa8, 0xb8, 0xb8, 0xb8, 0xfc, 0xf8, 0xf8,
-+ 0x20, 0xfc, 0xf8, 0x90, 0x60, 0x9c, 0x00, 0x00,
-+ 0x2d, 0x7f, 0x12, 0x3f, 0x7f, 0x2b, 0x3b, 0x3f,
-+ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00,
-+ 0x70, 0xd0, 0x54, 0x8c, 0xf8, 0x50, 0xf0, 0x0c,
-+ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x20,
-+ 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08,
-+ 0xe8, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8,
-+ 0x08, 0x88, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x29,
-+ 0x29, 0x29, 0x29, 0x2f, 0x28, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x28,
-+ 0x28, 0x28, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21,
-+ 0x2f, 0x22, 0x21, 0x22, 0x2c, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08,
-+ 0xe8, 0x88, 0x08, 0x88, 0x68, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21,
-+ 0x2f, 0x23, 0x25, 0x29, 0x23, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x28,
-+ 0xc8, 0x88, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x27,
-+ 0x25, 0x27, 0x25, 0x27, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8,
-+ 0x48, 0xc8, 0x48, 0xc8, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x3f,
-+ 0x21, 0x2f, 0x29, 0x29, 0x29, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xe8, 0x28, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f,
-+ 0x21, 0x27, 0x21, 0x21, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8,
-+ 0x08, 0xc8, 0x88, 0x48, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x27,
-+ 0x21, 0x2f, 0x27, 0x21, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8,
-+ 0x08, 0xe8, 0xc8, 0x08, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x22,
-+ 0x2f, 0x22, 0x2f, 0x22, 0x2c, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x88,
-+ 0xe8, 0x88, 0xe8, 0x88, 0x48, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x27, 0x24,
-+ 0x27, 0x22, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x48,
-+ 0xc8, 0x08, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x3f,
-+ 0x24, 0x27, 0x25, 0x29, 0x36, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x48,
-+ 0xa8, 0xd8, 0x28, 0xc8, 0x28, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x23, 0x24,
-+ 0x29, 0x26, 0x26, 0x24, 0x27, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x48,
-+ 0x88, 0xc8, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x3f,
-+ 0x27, 0x2d, 0x37, 0x27, 0x25, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xf8,
-+ 0xc8, 0x68, 0xd8, 0xc8, 0x28, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x3f,
-+ 0x2e, 0x2a, 0x2e, 0x26, 0x39, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xc8, 0x68, 0xe8, 0x28, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x28, 0x25,
-+ 0x33, 0x28, 0x25, 0x25, 0x29, 0x29, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x68, 0x88,
-+ 0xf8, 0x88, 0xe8, 0x28, 0xe8, 0x38, 0x00, 0x00,
-+ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x08, 0x1b,
-+ 0x1f, 0x28, 0x2b, 0x4a, 0x4b, 0x4a, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x68, 0x88,
-+ 0xf8, 0x88, 0xe8, 0x28, 0xe8, 0x38, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x27, 0x24, 0x27,
-+ 0x27, 0x27, 0x21, 0x2f, 0x22, 0x2c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xc8, 0x48, 0xc8,
-+ 0xc8, 0xc8, 0x48, 0xe8, 0x88, 0x78, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x27, 0x2f,
-+ 0x21, 0x27, 0x3b, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x28, 0xc8, 0xe8,
-+ 0x48, 0xe8, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x2f, 0x27,
-+ 0x25, 0x27, 0x27, 0x23, 0x2d, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xe8, 0xc8,
-+ 0x48, 0xc8, 0xc8, 0x88, 0x68, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x29, 0x26,
-+ 0x3f, 0x25, 0x2d, 0x2f, 0x24, 0x29, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x88,
-+ 0xf8, 0x68, 0x48, 0x48, 0xa8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x27, 0x2f,
-+ 0x22, 0x2f, 0x27, 0x27, 0x2f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xc8, 0xe8,
-+ 0x48, 0xe8, 0xc8, 0x48, 0xe8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x27, 0x25, 0x27,
-+ 0x27, 0x25, 0x27, 0x2e, 0x2d, 0x30, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xe8, 0x08, 0xc8,
-+ 0xc8, 0x08, 0xe8, 0xa8, 0x68, 0xd8, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x3b,
-+ 0x26, 0x3f, 0x2a, 0x2e, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0xa8,
-+ 0x68, 0xf8, 0xa8, 0xe8, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x2e, 0x2a, 0x2e,
-+ 0x27, 0x25, 0x27, 0x27, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xe8, 0xa8, 0xe8,
-+ 0xc8, 0x48, 0xc8, 0xc8, 0xf8, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x28, 0x25, 0x2b,
-+ 0x25, 0x23, 0x2d, 0x27, 0x24, 0x2b, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x88, 0xc8, 0xe8,
-+ 0x48, 0xe8, 0xc8, 0xe8, 0x88, 0xf8, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x2e, 0x2b,
-+ 0x2e, 0x29, 0x2e, 0x3b, 0x2e, 0x28, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0xf8,
-+ 0xa8, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x28, 0x30, 0x28, 0x27, 0x24,
-+ 0x24, 0x24, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x3a, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x00, 0x78, 0x48, 0x48, 0x48,
-+ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x28, 0x30, 0x2b, 0x24, 0x24,
-+ 0x24, 0x24, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0xa0, 0xa0,
-+ 0xa0, 0xa0, 0x24, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40, 0x40,
-+ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x3a, 0x22, 0x24, 0x2b, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x28, 0x20, 0xf8, 0x88,
-+ 0x50, 0x50, 0x20, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x28, 0x30, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08,
-+ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x2b, 0x30, 0x28, 0x25, 0x26,
-+ 0x24, 0x24, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x80, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x00, 0x39, 0x28, 0x2a, 0x32, 0x32, 0x2a, 0x2a,
-+ 0x2a, 0x2a, 0x3a, 0x22, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xd8,
-+ 0x98, 0x88, 0x98, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x29, 0x31, 0x2a, 0x24, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x40, 0xb8,
-+ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x2b, 0x31, 0x29, 0x25, 0x26,
-+ 0x24, 0x24, 0x38, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x50, 0xe8,
-+ 0x48, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x28, 0x33, 0x28, 0x25, 0x26,
-+ 0x24, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x30, 0xd0, 0x90, 0x90, 0xfc, 0x90, 0x10, 0x50,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x2b, 0x30, 0x2b, 0x25, 0x25,
-+ 0x26, 0x24, 0x38, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x58, 0x48, 0x48,
-+ 0xd4, 0xa4, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x28, 0x30, 0x2b, 0x24, 0x24,
-+ 0x24, 0x25, 0x3a, 0x20, 0x20, 0x23, 0x00, 0x00,
-+ 0x20, 0x20, 0xb8, 0xa0, 0xa0, 0xfc, 0x20, 0xa4,
-+ 0xa4, 0x28, 0x70, 0x20, 0xc0, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x27, 0x28, 0x31, 0x28, 0x27, 0x24,
-+ 0x27, 0x39, 0x22, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x00, 0x3d, 0x24, 0x2b, 0x31, 0x29, 0x27, 0x25,
-+ 0x25, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50,
-+ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x2a, 0x33, 0x32, 0x2a, 0x2b,
-+ 0x2a, 0x2a, 0x3b, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xa8, 0xa8, 0xa8,
-+ 0xb0, 0x90, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x29, 0x31, 0x29, 0x25, 0x24,
-+ 0x27, 0x24, 0x39, 0x20, 0x27, 0x20, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00,
-+ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x2a, 0x30, 0x28, 0x24, 0x25,
-+ 0x27, 0x25, 0x39, 0x21, 0x23, 0x20, 0x00, 0x00,
-+ 0xf0, 0x90, 0x08, 0xf4, 0x00, 0xf0, 0x90, 0x08,
-+ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x30, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x21, 0x21, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x08, 0xf8,
-+ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x29, 0x31, 0x29, 0x25, 0x25,
-+ 0x24, 0x24, 0x38, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8,
-+ 0xd0, 0xd0, 0xe8, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0x29, 0x33, 0x34, 0x2b, 0x2a,
-+ 0x2a, 0x2b, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00,
-+ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8,
-+ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00,
-+ 0x04, 0x3a, 0x2a, 0x29, 0x34, 0x32, 0x2b, 0x28,
-+ 0x2f, 0x2a, 0x3b, 0x22, 0x25, 0x28, 0x00, 0x00,
-+ 0x70, 0x50, 0x88, 0xfc, 0x20, 0x64, 0xb4, 0x58,
-+ 0xb8, 0x54, 0x94, 0x10, 0x60, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x2b, 0x30, 0x29, 0x25, 0x24,
-+ 0x27, 0x25, 0x38, 0x22, 0x22, 0x24, 0x00, 0x00,
-+ 0x18, 0xe8, 0x24, 0xf4, 0x40, 0xf0, 0xf8, 0x08,
-+ 0xfc, 0xf8, 0x48, 0xa4, 0x94, 0x70, 0x00, 0x00,
-+ 0x00, 0x3c, 0x25, 0x2a, 0x31, 0x29, 0x25, 0x25,
-+ 0x25, 0x25, 0x39, 0x23, 0x22, 0x24, 0x00, 0x00,
-+ 0x20, 0xa8, 0x6c, 0x34, 0xc0, 0xfc, 0x20, 0xf8,
-+ 0xf8, 0x20, 0xfc, 0x54, 0xac, 0x18, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x24, 0x27,
-+ 0x24, 0x25, 0x3b, 0x20, 0x22, 0x24, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x88, 0x74,
-+ 0x88, 0x54, 0xfc, 0x00, 0xa8, 0x54, 0x00, 0x00,
-+ 0x01, 0x39, 0x2f, 0x2a, 0x37, 0x30, 0x2b, 0x2a,
-+ 0x2b, 0x3a, 0x23, 0x22, 0x22, 0x22, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa0, 0xf8, 0x08, 0xb8, 0xa0,
-+ 0xb8, 0xb8, 0xa0, 0xb8, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x01, 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x11,
-+ 0x09, 0x0b, 0x0d, 0x71, 0x01, 0x03, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x10,
-+ 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x1c, 0x1b, 0x2a, 0x48, 0x3e,
-+ 0x00, 0x7e, 0x2c, 0x2b, 0x4a, 0x18, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x28,
-+ 0xa4, 0x78, 0x70, 0xa8, 0x24, 0x60, 0x00, 0x00,
-+ 0x04, 0x04, 0x04, 0x0f, 0x08, 0x18, 0x2f, 0x48,
-+ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40,
-+ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x25, 0x26, 0x3c,
-+ 0x24, 0x24, 0x26, 0x38, 0x60, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x04, 0x04, 0x0f, 0x08, 0x1f, 0x28, 0x4f, 0x08,
-+ 0x0f, 0x1e, 0x12, 0x13, 0x12, 0x10, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0x40, 0xf0, 0x40, 0xf0, 0x40,
-+ 0xfc, 0x78, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00,
-+ 0x10, 0x10, 0x10, 0x1e, 0x28, 0x49, 0x7f, 0x08,
-+ 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x10, 0x14, 0x65, 0x29, 0x1b,
-+ 0x15, 0x1d, 0x65, 0x09, 0x11, 0x21, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x90, 0x90, 0xfc, 0x20, 0xf8,
-+ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x10, 0x10, 0x11, 0x7f, 0x09, 0x0b, 0x15, 0x39,
-+ 0x54, 0x17, 0x10, 0x11, 0x16, 0x10, 0x00, 0x00,
-+ 0x90, 0xa0, 0xfc, 0x20, 0xf8, 0xf8, 0x20, 0xfc,
-+ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x12, 0x12, 0x2d, 0x49, 0x08,
-+ 0x7f, 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x01, 0x3f, 0x3d, 0x5d, 0x05, 0x0f,
-+ 0x18, 0x6f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x00, 0xfc, 0x78, 0x70, 0x40, 0xf8,
-+ 0x80, 0xf0, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3f, 0x25, 0x25, 0x3f, 0x25, 0x3f, 0x25,
-+ 0x2f, 0x2b, 0x2f, 0x2b, 0x21, 0x43, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0x7c, 0xd0, 0xd0, 0x78, 0x50,
-+ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x02, 0x07,
-+ 0x18, 0x6f, 0x08, 0x0f, 0x08, 0x07, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf0,
-+ 0x10, 0x90, 0x90, 0xe4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x05, 0x19,
-+ 0x6f, 0x08, 0x0f, 0x0f, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x60, 0x18,
-+ 0xe4, 0x20, 0xe0, 0xe0, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x00, 0x3d,
-+ 0x08, 0x3f, 0x12, 0x0c, 0x1e, 0x61, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x18, 0xe0,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x10,
-+ 0x4f, 0x20, 0x0b, 0x12, 0x22, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x40,
-+ 0xfc, 0x40, 0xf8, 0x48, 0x70, 0x40, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x03, 0x1c,
-+ 0x1e, 0x10, 0x1f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf0,
-+ 0xf0, 0x10, 0xf0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3f,
-+ 0x04, 0x7f, 0x3f, 0x0e, 0x03, 0x3c, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf8,
-+ 0x40, 0xfc, 0xf8, 0x40, 0xc0, 0x30, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x10,
-+ 0x48, 0x20, 0x0b, 0x12, 0x23, 0x22, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x40,
-+ 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x02,
-+ 0x3e, 0x02, 0x3e, 0x02, 0x7c, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x80,
-+ 0xf8, 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x08,
-+ 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x20,
-+ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x04, 0x7f,
-+ 0x05, 0x0f, 0x09, 0x7f, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x40, 0xfc,
-+ 0x40, 0xe0, 0x20, 0xfc, 0xc0, 0x38, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x1e, 0x12,
-+ 0x3d, 0x0f, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xf8, 0x48,
-+ 0x98, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x10, 0x0b,
-+ 0x46, 0x21, 0x0f, 0x10, 0x23, 0x20, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x18, 0xf0,
-+ 0x4c, 0xf0, 0xfc, 0x40, 0xf8, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x3f, 0x14,
-+ 0x7f, 0x1f, 0x1e, 0x1e, 0x12, 0x17, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x40, 0x7c,
-+ 0x90, 0x50, 0x20, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x1e, 0x12,
-+ 0x1e, 0x11, 0x3e, 0x53, 0x1e, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x20, 0xf8,
-+ 0x50, 0xfc, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x7f,
-+ 0x3e, 0x15, 0x6d, 0x07, 0x0f, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xfc,
-+ 0xf8, 0x50, 0x7c, 0xe0, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x0d, 0x79,
-+ 0x2f, 0x79, 0x35, 0x1c, 0x67, 0x18, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xf0, 0x50,
-+ 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x1c, 0x7f,
-+ 0x1c, 0x1c, 0x3e, 0x23, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xf8, 0x88,
-+ 0xf8, 0xf8, 0x7c, 0xd4, 0xfc, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x08, 0x3e, 0x2a, 0x7f, 0x3e, 0x08,
-+ 0x3c, 0x01, 0x7e, 0x14, 0x3e, 0x43, 0x00, 0x00,
-+ 0x10, 0x10, 0xf8, 0x98, 0x7c, 0x18, 0xf8, 0xd4,
-+ 0x38, 0xb8, 0xd4, 0x94, 0xf0, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x3b, 0x2a,
-+ 0x3b, 0x3f, 0x09, 0x35, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xb8, 0xa8,
-+ 0xb8, 0xf8, 0x30, 0x48, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x3f, 0x2e,
-+ 0x3f, 0x2e, 0x35, 0x24, 0x24, 0x5f, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xfc, 0x70,
-+ 0xfc, 0x70, 0xa8, 0xf0, 0x80, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3e, 0x08, 0x3e, 0x2b, 0x7f, 0x3e, 0x08,
-+ 0x3d, 0x00, 0x7e, 0x15, 0x1e, 0x63, 0x00, 0x00,
-+ 0x0c, 0xf4, 0xa8, 0x50, 0xfc, 0x28, 0xd8, 0xf4,
-+ 0x44, 0x78, 0xc8, 0x30, 0x70, 0x8c, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x08, 0x7f, 0x3f,
-+ 0x2a, 0x2a, 0x3e, 0x22, 0x22, 0x26, 0x00, 0x00,
-+ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0xf8, 0x28, 0xfc,
-+ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00,
-+ 0x09, 0x0f, 0x11, 0x7f, 0x0f, 0x08, 0x0f, 0x7e,
-+ 0x02, 0x3e, 0x03, 0x7c, 0x0c, 0x30, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xfc,
-+ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x10, 0x3f, 0x2b, 0x2b, 0x2f,
-+ 0x2b, 0x2f, 0x2b, 0x2b, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0xc0, 0x40, 0x78, 0x88, 0xf8, 0x58, 0x58,
-+ 0x78, 0x50, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2e,
-+ 0x2a, 0x2e, 0x2a, 0x2a, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0xc8, 0xf8, 0xc8,
-+ 0xf8, 0xb0, 0xb0, 0xd4, 0xd4, 0x8c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x17, 0x1f, 0x2f, 0x4f, 0x09,
-+ 0x7f, 0x1f, 0x13, 0x13, 0x1f, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x18, 0x14, 0xfc, 0x90, 0xa8, 0xc4,
-+ 0xfc, 0xf0, 0x90, 0x90, 0xf0, 0x10, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48,
-+ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x14, 0x15, 0x7e, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0xc8, 0xa8, 0xa8, 0x48, 0x50, 0x50,
-+ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x14, 0x15, 0x7e, 0x14, 0x1d, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x68,
-+ 0x58, 0x4c, 0xc8, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x15, 0x1d, 0x09, 0x3f, 0x2b,
-+ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68, 0x98,
-+ 0x98, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2b,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xfc,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x0b, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88,
-+ 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x09, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8,
-+ 0xc8, 0xb0, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x15, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x70,
-+ 0x70, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x14, 0x15, 0x7e, 0x14, 0x1d, 0x09, 0x3f, 0x2b,
-+ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68,
-+ 0x98, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x7f, 0x09, 0x09, 0x0f, 0x72, 0x04, 0x7f,
-+ 0x07, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00,
-+ 0x00, 0xf0, 0x90, 0x54, 0x54, 0x0c, 0x40, 0xfc,
-+ 0xc0, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2b,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc,
-+ 0x60, 0x50, 0x50, 0x40, 0x40, 0x40, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2a,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x20, 0x24, 0xf8, 0x70, 0xa8, 0x24, 0x60, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x14, 0x14, 0x7e, 0x14, 0x1c, 0x08, 0x3e, 0x2a,
-+ 0x3f, 0x08, 0x7e, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc,
-+ 0xa4, 0xb4, 0xcc, 0xfc, 0x84, 0x18, 0x00, 0x00,
-+ 0x28, 0x28, 0x7f, 0x28, 0x38, 0x13, 0x7c, 0x55,
-+ 0x7d, 0x12, 0x7e, 0x14, 0x10, 0x10, 0x00, 0x00,
-+ 0x50, 0x90, 0x90, 0x94, 0xb4, 0xf4, 0xb8, 0xd0,
-+ 0xd0, 0xe8, 0xa8, 0xa8, 0xc4, 0x84, 0x00, 0x00,
-+ 0x14, 0x15, 0x7e, 0x14, 0x1d, 0x08, 0x3e, 0x2b,
-+ 0x3e, 0x09, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0x68, 0xb0, 0x60,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2b,
-+ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x20, 0x50, 0x88, 0xfc,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x28, 0x28, 0x7f, 0x28, 0x39, 0x11, 0x7d, 0x55,
-+ 0x7d, 0x11, 0x7e, 0x12, 0x14, 0x10, 0x00, 0x00,
-+ 0x90, 0x90, 0xfc, 0x90, 0xfc, 0x00, 0xf8, 0xa8,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x2a, 0x29, 0x7d, 0x28, 0x3a, 0x11, 0x7d, 0x54,
-+ 0x7f, 0x11, 0x7d, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x50, 0xfc, 0x20,
-+ 0xf8, 0x20, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00,
-+ 0x2a, 0x29, 0x7d, 0x28, 0x3a, 0x11, 0x7d, 0x54,
-+ 0x7f, 0x11, 0x7d, 0x11, 0x12, 0x14, 0x00, 0x00,
-+ 0x00, 0xfc, 0x30, 0xfc, 0xb4, 0xfc, 0x20, 0xfc,
-+ 0x78, 0xd4, 0x70, 0x48, 0xb8, 0x7c, 0x00, 0x00,
-+ 0x28, 0x2f, 0x7c, 0x2b, 0x3a, 0x13, 0x7c, 0x57,
-+ 0x7e, 0x13, 0x7e, 0x12, 0x14, 0x14, 0x00, 0x00,
-+ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x48, 0xfc,
-+ 0x48, 0x28, 0xb0, 0x94, 0x2c, 0x44, 0x00, 0x00,
-+ 0x01, 0x1f, 0x02, 0x7f, 0x00, 0x0f, 0x08, 0x0f,
-+ 0x00, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xfc, 0x00, 0xe0, 0x20, 0xe0,
-+ 0x40, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00,
-+ 0x08, 0x3e, 0x12, 0x7f, 0x01, 0x3e, 0x22, 0x3e,
-+ 0x04, 0x3e, 0x24, 0x7f, 0x04, 0x04, 0x00, 0x00,
-+ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0x20, 0xd8, 0x88,
-+ 0x88, 0xd8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x02, 0x02, 0x02, 0x3e, 0x02, 0x02, 0x3e, 0x02,
-+ 0x02, 0x3e, 0x02, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, 0x78, 0x40,
-+ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x7f, 0x3e, 0x15, 0x2d, 0x51, 0x1f, 0x1f,
-+ 0x12, 0x16, 0x16, 0x16, 0x2f, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x50, 0x68, 0x14, 0xf0, 0xf0,
-+ 0x90, 0xd0, 0xd0, 0xd0, 0xf0, 0x10, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x3d, 0x15, 0x2d, 0x42, 0x3e,
-+ 0x02, 0x1e, 0x1e, 0x02, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x70, 0x50, 0xe8, 0x84, 0xf8,
-+ 0x80, 0xf0, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x3f, 0x04, 0x7f, 0x00, 0x0f, 0x08,
-+ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00,
-+ 0x00, 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xe0, 0x20,
-+ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x7e, 0x24, 0x14, 0x18, 0x7f, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x30, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x24, 0x15, 0x19, 0x7e, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00,
-+ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0xe8, 0x08,
-+ 0x28, 0xc8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x00, 0x1c, 0x14, 0x14,
-+ 0x14, 0x15, 0x15, 0x23, 0x20, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x1d, 0x04, 0x14, 0x12, 0x22, 0x49, 0x08,
-+ 0x08, 0x14, 0x16, 0x7a, 0x00, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x7f, 0x2a, 0x2a, 0x54, 0x2a, 0x2a, 0x00,
-+ 0x7e, 0x08, 0x08, 0x0e, 0x70, 0x03, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x24, 0x2e, 0x2a, 0x2a, 0x2a,
-+ 0x2e, 0x24, 0x24, 0x24, 0x3e, 0x23, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x08, 0x3e, 0x00,
-+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x12, 0x3e, 0x40, 0x3e, 0x04,
-+ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x02, 0x3d, 0x08, 0x7f, 0x1c, 0x2a, 0x4a, 0x1c,
-+ 0x14, 0x14, 0x15, 0x16, 0x24, 0x43, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x3e, 0x2a, 0x3e, 0x08, 0x7f,
-+ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x14, 0x0c, 0x12, 0x3f, 0x24,
-+ 0x3a, 0x24, 0x39, 0x22, 0x4c, 0x33, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x2a, 0x3e, 0x2a, 0x3e, 0x08,
-+ 0x06, 0x35, 0x31, 0x54, 0x54, 0x0f, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x04, 0x7f, 0x3f, 0x2f, 0x2b, 0x2f, 0x3f, 0x1e,
-+ 0x12, 0x1e, 0x12, 0x1e, 0x0e, 0x71, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x12, 0x6d,
-+ 0x2d, 0x1b, 0x7f, 0x35, 0x2a, 0x4a, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0xf8, 0x30, 0xc8, 0x84, 0x00, 0x00,
-+ 0x08, 0x2f, 0x28, 0x7f, 0x2a, 0x5c, 0x1a, 0x6f,
-+ 0x09, 0x0f, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0xf8, 0x88, 0xf8, 0xf8, 0xf8, 0xec,
-+ 0x20, 0xe0, 0xe0, 0x40, 0xfc, 0x40, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x04, 0x07, 0x3f, 0x2d, 0x37, 0x3f, 0x35, 0x3f,
-+ 0x3f, 0x20, 0x3f, 0x57, 0x17, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x90, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x30, 0xc8, 0x84, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x14, 0x3f,
-+ 0x64, 0x3e, 0x3e, 0x24, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x0f, 0x0f, 0x3f, 0x01, 0x7f,
-+ 0x2a, 0x3b, 0x3b, 0x2a, 0x7f, 0x08, 0x00, 0x00,
-+ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0xc8,
-+ 0xf8, 0xc8, 0xf8, 0xb0, 0xa8, 0xc4, 0x00, 0x00,
-+ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x1f, 0x10, 0x1f,
-+ 0x17, 0x15, 0x17, 0x11, 0x2f, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0xc0, 0x20, 0x00, 0xf0, 0xd0, 0x10,
-+ 0xd0, 0x50, 0xd4, 0x6c, 0x9c, 0x04, 0x00, 0x00,
-+ 0x10, 0x13, 0x12, 0x13, 0x7e, 0x0b, 0x4b, 0x2b,
-+ 0x2b, 0x32, 0x1c, 0x64, 0x0b, 0x10, 0x00, 0x00,
-+ 0x00, 0xf0, 0x30, 0xd0, 0x90, 0xf0, 0xb0, 0xb0,
-+ 0xf0, 0xd0, 0xb4, 0xec, 0x1c, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x11, 0x1e, 0x14, 0x1f, 0x1d, 0x1d,
-+ 0x1f, 0x16, 0x15, 0x27, 0x38, 0x40, 0x00, 0x00,
-+ 0x20, 0xa0, 0xb0, 0xa8, 0xcc, 0xf4, 0x80, 0xf8,
-+ 0xc8, 0xc8, 0x78, 0xc4, 0xb4, 0x0c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x13, 0x1c, 0x14, 0x1f, 0x1d, 0x1d,
-+ 0x1f, 0x16, 0x15, 0x27, 0x38, 0x40, 0x00, 0x00,
-+ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8,
-+ 0xfc, 0x98, 0x64, 0xc4, 0xb4, 0x0c, 0x00, 0x00,
-+ 0x00, 0x7f, 0x19, 0x7f, 0x5b, 0x7f, 0x01, 0x3d,
-+ 0x01, 0x7f, 0x2d, 0x2a, 0x4b, 0x1c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x18, 0xe8, 0x48, 0xf8, 0xd8, 0xd8,
-+ 0xf8, 0x6c, 0x5c, 0x74, 0x94, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x23, 0x3d, 0x29, 0x3f, 0x3b, 0x3b,
-+ 0x3f, 0x2d, 0x2a, 0x2f, 0x31, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x30, 0xfc, 0xb4, 0xfc, 0x78, 0x00,
-+ 0xfc, 0x58, 0x94, 0xb4, 0x64, 0x1c, 0x00, 0x00,
-+ 0x0c, 0x0b, 0x3f, 0x09, 0x15, 0x13, 0x35, 0x2f,
-+ 0x7f, 0x25, 0x37, 0x2a, 0x4b, 0x54, 0x00, 0x00,
-+ 0x00, 0xf8, 0x18, 0xe8, 0x48, 0xf8, 0xd8, 0xd8,
-+ 0xf8, 0x6c, 0x5c, 0x74, 0x94, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1f, 0x22, 0x7c, 0x24, 0x3c,
-+ 0x24, 0x3c, 0x3c, 0x20, 0x3e, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x3c, 0xe0, 0x20, 0xa8, 0xa8, 0xa8,
-+ 0xa8, 0xf8, 0xa8, 0x24, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x22, 0x7c, 0x25, 0x3c,
-+ 0x24, 0x3c, 0x3e, 0x20, 0x3f, 0x22, 0x00, 0x00,
-+ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x1e, 0x22, 0x7c, 0x25, 0x3c,
-+ 0x24, 0x3c, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1f, 0x21, 0x7d, 0x25, 0x3d,
-+ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x20, 0x40, 0xf8, 0x08, 0xe8, 0xa8, 0xa8,
-+ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7e, 0x22, 0x3f,
-+ 0x22, 0x3e, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00,
-+ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0x20, 0x20, 0xfc,
-+ 0x48, 0x48, 0xf0, 0x10, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x17, 0x1e, 0x23, 0x7d, 0x25, 0x3d,
-+ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8,
-+ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x22, 0x7d, 0x24, 0x3d,
-+ 0x24, 0x3c, 0x3e, 0x21, 0x3e, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x20, 0xfc,
-+ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7e, 0x24, 0x3d,
-+ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x80, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x40, 0x98,
-+ 0x08, 0xd8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x1e, 0x22, 0x7c, 0x25, 0x3c,
-+ 0x24, 0x3c, 0x3e, 0x20, 0x3f, 0x22, 0x00, 0x00,
-+ 0x50, 0x50, 0xfc, 0x50, 0x20, 0x20, 0xfc, 0x20,
-+ 0x38, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1f, 0x22, 0x7c, 0x25, 0x3c,
-+ 0x24, 0x3d, 0x3e, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54,
-+ 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7c, 0x24, 0x3d,
-+ 0x24, 0x3c, 0x3f, 0x20, 0x3e, 0x21, 0x00, 0x00,
-+ 0x20, 0x24, 0xa4, 0xa8, 0x70, 0x50, 0x88, 0x24,
-+ 0xa4, 0xa8, 0x70, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x1f, 0x22, 0x7c, 0x24, 0x3c,
-+ 0x27, 0x3c, 0x3e, 0x21, 0x3f, 0x22, 0x00, 0x00,
-+ 0x90, 0x90, 0x20, 0xfc, 0x90, 0x90, 0x90, 0xd0,
-+ 0xbc, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x11, 0x11, 0x19, 0x27, 0x3d, 0x79, 0x2b, 0x3a,
-+ 0x2a, 0x3a, 0x3f, 0x22, 0x3c, 0x21, 0x00, 0x00,
-+ 0x00, 0x38, 0x28, 0xe8, 0x28, 0x38, 0xa8, 0xa8,
-+ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x09, 0x1e, 0x74, 0x19, 0x62, 0x0f,
-+ 0x77, 0x04, 0x07, 0x07, 0x07, 0x3c, 0x00, 0x00,
-+ 0x20, 0x50, 0xac, 0xd0, 0x68, 0x70, 0x80, 0xe0,
-+ 0xfc, 0x40, 0xc0, 0xd0, 0xe0, 0x38, 0x00, 0x00,
-+ 0x08, 0x08, 0x15, 0x1f, 0x23, 0x7d, 0x25, 0x3d,
-+ 0x24, 0x3c, 0x3f, 0x21, 0x3e, 0x24, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8,
-+ 0xd0, 0xd0, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x1f, 0x23, 0x7d, 0x27, 0x3c,
-+ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0xbc, 0x14, 0x94, 0x54, 0xd4, 0x2c, 0x40,
-+ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x1f, 0x23, 0x7d, 0x25, 0x3c,
-+ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x68, 0x98, 0x18, 0xf8, 0x00,
-+ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x1e, 0x22, 0x7c, 0x24, 0x3c,
-+ 0x25, 0x3c, 0x3e, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x50, 0xfc, 0x50, 0x70, 0xf8, 0xa8, 0xf8, 0x20,
-+ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x22, 0x7c, 0x25, 0x3d,
-+ 0x25, 0x3c, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54,
-+ 0xfc, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x14, 0x1e, 0x23, 0x7d, 0x27, 0x3c,
-+ 0x24, 0x3c, 0x3e, 0x20, 0x3f, 0x20, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0xfc, 0x08, 0xfc, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7c, 0x24, 0x3c,
-+ 0x24, 0x3c, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0xfc, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x11, 0x11, 0x1a, 0x25, 0x3d, 0x7a, 0x2b, 0x38,
-+ 0x2b, 0x3b, 0x3e, 0x22, 0x3e, 0x24, 0x00, 0x00,
-+ 0x48, 0x48, 0xf4, 0xd4, 0x48, 0xd4, 0xfc, 0x48,
-+ 0xfc, 0x48, 0xa8, 0x34, 0xcc, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7c, 0x27, 0x3c,
-+ 0x24, 0x3f, 0x3f, 0x20, 0x3c, 0x23, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x90, 0xfc, 0x90,
-+ 0xfc, 0x00, 0xfc, 0x50, 0x94, 0x0c, 0x00, 0x00,
-+ 0x08, 0x09, 0x15, 0x1f, 0x23, 0x7d, 0x24, 0x3c,
-+ 0x25, 0x3c, 0x3f, 0x20, 0x3e, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0xf8, 0x20, 0x64, 0xdc, 0x50,
-+ 0xf8, 0x50, 0xfc, 0x50, 0x88, 0x08, 0x00, 0x00,
-+ 0x1e, 0x12, 0x1e, 0x7f, 0x1e, 0x23, 0x0e, 0x0f,
-+ 0x77, 0x04, 0x07, 0x07, 0x06, 0x38, 0x00, 0x00,
-+ 0x38, 0xfc, 0xa8, 0xd8, 0xb0, 0x34, 0xcc, 0xe0,
-+ 0xdc, 0x40, 0xc0, 0xd0, 0xe0, 0x38, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x0a, 0x0a, 0x0a,
-+ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x41, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0x40, 0xf8, 0x88, 0xf8, 0x88,
-+ 0xf8, 0x88, 0xf8, 0x8c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x24, 0x14, 0x18, 0x7f, 0x08, 0x11, 0x3d, 0x25,
-+ 0x3d, 0x25, 0x3c, 0x27, 0x3c, 0x24, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0xe8, 0x68, 0x68,
-+ 0xd0, 0x10, 0x74, 0xac, 0x4c, 0x84, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x48,
-+ 0x3e, 0x22, 0x3f, 0x22, 0x3e, 0x23, 0x00, 0x00,
-+ 0x80, 0x80, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x24, 0x3e, 0x24, 0x3e, 0x24, 0x3f,
-+ 0x05, 0x3b, 0x2f, 0x2d, 0x42, 0x0d, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x50, 0x50, 0x70,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x03, 0x22, 0x13, 0x12, 0x03, 0x0a, 0x0b,
-+ 0x10, 0x16, 0x25, 0x25, 0x28, 0x00, 0x00, 0x00,
-+ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0xf0, 0x40, 0xfc,
-+ 0x24, 0x94, 0x54, 0x44, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x88, 0x88, 0x50,
-+ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3d, 0x29, 0x3d, 0x29, 0x3f,
-+ 0x0b, 0x3f, 0x3f, 0x33, 0x45, 0x19, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0x68, 0x68, 0x68, 0x68, 0x78,
-+ 0xb8, 0x98, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xa0, 0x40, 0x60, 0x98, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x4c,
-+ 0x70, 0x40, 0x40, 0x40, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x29, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x50, 0x48, 0xf4, 0x04,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x7e, 0x12, 0x3a, 0x0c, 0x77, 0x04, 0x07,
-+ 0x07, 0x04, 0x07, 0x15, 0x12, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x30, 0xc8, 0xf4, 0x80, 0xe0,
-+ 0xe0, 0x80, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x44, 0x1b, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x40, 0x50, 0x90, 0x60, 0x28,
-+ 0x48, 0x90, 0x10, 0x28, 0xc4, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3e, 0x28, 0x3e, 0x29, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54, 0x50,
-+ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x28, 0x3c, 0x28, 0x3c, 0x29, 0x3f,
-+ 0x0a, 0x3e, 0x3e, 0x33, 0x45, 0x1a, 0x00, 0x00,
-+ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xa8, 0xa8, 0xa8, 0x28, 0x28, 0x08, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xf8,
-+ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0b, 0x3e, 0x3e, 0x32, 0x44, 0x1b, 0x00, 0x00,
-+ 0x00, 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x00, 0xfc,
-+ 0x08, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc,
-+ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0xfc, 0x48, 0x78, 0x48, 0x78,
-+ 0x48, 0xfc, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90,
-+ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00,
-+ 0x88, 0x48, 0x50, 0xfc, 0x50, 0x50, 0x50, 0xfc,
-+ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3f, 0x3f, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x80, 0xfc,
-+ 0xb4, 0xfc, 0xb4, 0xb4, 0xb4, 0x8c, 0x00, 0x00,
-+ 0x01, 0x3f, 0x22, 0x7f, 0x1f, 0x02, 0x7f, 0x0f,
-+ 0x17, 0x67, 0x05, 0x07, 0x1a, 0x25, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0xf8, 0xe0, 0x80, 0xfc, 0xf0,
-+ 0xd0, 0xcc, 0x00, 0xf0, 0x90, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x2b, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0x50, 0xa0, 0x70, 0xac, 0xf8,
-+ 0xa8, 0xf8, 0xb0, 0x28, 0x3c, 0xc4, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3d, 0x29, 0x3d, 0x29, 0x3f,
-+ 0x0b, 0x3f, 0x3f, 0x33, 0x45, 0x19, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x00, 0xfc,
-+ 0xb4, 0xb4, 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x3e, 0x29, 0x3c, 0x29, 0x3f, 0x28, 0x3e,
-+ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x40, 0x90, 0xf8, 0x90, 0x68, 0xfc, 0x60, 0x90,
-+ 0x2c, 0xc0, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00,
-+ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x0f, 0x7f, 0x07,
-+ 0x1d, 0x67, 0x07, 0x07, 0x1a, 0x25, 0x00, 0x00,
-+ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0xc0,
-+ 0x30, 0xcc, 0xc0, 0xf8, 0x88, 0x70, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x29, 0x3f, 0x28, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0xfc, 0x54, 0xfc, 0x00, 0xf8,
-+ 0x00, 0xfc, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x50, 0xd0,
-+ 0x28, 0xfc, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x29, 0x3e,
-+ 0x0b, 0x3f, 0x3f, 0x33, 0x45, 0x19, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xfc, 0x50, 0xf8, 0x54, 0x70,
-+ 0xfc, 0x74, 0x54, 0x74, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3f, 0x28, 0x3e,
-+ 0x0b, 0x3f, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00,
-+ 0x20, 0xf8, 0x20, 0xfc, 0x88, 0xdc, 0x88, 0xdc,
-+ 0x00, 0xfc, 0x50, 0x50, 0x94, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3f, 0x28, 0x3e, 0x28, 0x3f,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x00, 0xfc, 0x54, 0xfc, 0x20, 0xf8, 0x20, 0xfc,
-+ 0x50, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3f,
-+ 0x0b, 0x3f, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0xf8,
-+ 0x68, 0xf8, 0x90, 0xd8, 0x24, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3d, 0x29, 0x3d, 0x2b, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00,
-+ 0x00, 0xe0, 0x7c, 0xd4, 0xc8, 0x54, 0xe4, 0x50,
-+ 0x64, 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x29, 0x3f, 0x29, 0x3f, 0x29, 0x3f,
-+ 0x0b, 0x3f, 0x3f, 0x33, 0x46, 0x19, 0x00, 0x00,
-+ 0x20, 0x38, 0xfc, 0x28, 0xd8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3e, 0x29, 0x3e, 0x28, 0x3e,
-+ 0x0a, 0x3e, 0x3e, 0x33, 0x42, 0x0d, 0x00, 0x00,
-+ 0x50, 0xd4, 0x58, 0xd4, 0x4c, 0xf8, 0xa8, 0xf8,
-+ 0xf8, 0x50, 0xf8, 0xfc, 0x48, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3f, 0x29, 0x3e, 0x29, 0x3e,
-+ 0x0a, 0x3f, 0x3e, 0x33, 0x44, 0x19, 0x00, 0x00,
-+ 0x20, 0xfc, 0xdc, 0x54, 0xdc, 0x50, 0xfc, 0xf8,
-+ 0x50, 0xfc, 0x68, 0x90, 0xe8, 0x84, 0x00, 0x00,
-+ 0x00, 0x3f, 0x28, 0x3d, 0x29, 0x3d, 0x28, 0x3e,
-+ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00,
-+ 0x50, 0xfc, 0x50, 0xdc, 0x54, 0xdc, 0x50, 0xfc,
-+ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00,
-+ 0x00, 0x07, 0x07, 0x07, 0x07, 0x0e, 0x15, 0x3f,
-+ 0x28, 0x3e, 0x3e, 0x3f, 0x3d, 0x57, 0x00, 0x00,
-+ 0x00, 0xe0, 0xc0, 0xc0, 0xf0, 0x90, 0x60, 0xfc,
-+ 0xa0, 0xf8, 0xf8, 0xfc, 0xf4, 0x58, 0x00, 0x00,
-+ 0x00, 0x3f, 0x29, 0x3f, 0x29, 0x3e, 0x29, 0x3f,
-+ 0x0b, 0x3f, 0x3f, 0x33, 0x46, 0x19, 0x00, 0x00,
-+ 0x00, 0xdc, 0xdc, 0xdc, 0x54, 0x20, 0xfc, 0x50,
-+ 0xf8, 0x58, 0xfc, 0xd8, 0xf4, 0x8c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x42, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7e, 0x43, 0x3f,
-+ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00,
-+ 0x00, 0x70, 0x50, 0x54, 0x54, 0x8c, 0x00, 0xf8,
-+ 0x48, 0x50, 0x30, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x42, 0x3e,
-+ 0x23, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88,
-+ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x42, 0x3e,
-+ 0x22, 0x3f, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x50,
-+ 0x90, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2f, 0x2a, 0x7f, 0x42, 0x3e,
-+ 0x22, 0x3f, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00,
-+ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8,
-+ 0xf8, 0xfc, 0x50, 0xd0, 0x30, 0xc8, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x3d, 0x34, 0x7e, 0x45, 0x3f,
-+ 0x25, 0x3d, 0x25, 0x3c, 0x27, 0x2c, 0x00, 0x00,
-+ 0x00, 0xf8, 0x68, 0xf8, 0x80, 0xf8, 0x48, 0xf8,
-+ 0x58, 0xf8, 0x68, 0x78, 0x88, 0x30, 0x00, 0x00,
-+ 0x02, 0x3d, 0x25, 0x3c, 0x36, 0x7f, 0x45, 0x3c,
-+ 0x27, 0x3d, 0x25, 0x3d, 0x26, 0x2c, 0x00, 0x00,
-+ 0x20, 0xfc, 0x40, 0x78, 0x90, 0xfc, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0x48, 0xd8, 0x7c, 0x00, 0x00,
-+ 0x00, 0x3d, 0x25, 0x3d, 0x35, 0x7f, 0x42, 0x3f,
-+ 0x25, 0x3d, 0x25, 0x3c, 0x27, 0x2c, 0x00, 0x00,
-+ 0x60, 0xf8, 0x68, 0xf8, 0x68, 0xf8, 0x00, 0xfc,
-+ 0xf8, 0x08, 0xf8, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7e, 0x3c, 0x24, 0x3d, 0x01, 0x7f,
-+ 0x42, 0x5f, 0x56, 0x5e, 0x43, 0x46, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xdc, 0x54, 0xdc,
-+ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x1e, 0x10,
-+ 0x7f, 0x14, 0x12, 0x27, 0x79, 0x01, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x10, 0x24,
-+ 0x44, 0x08, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x09,
-+ 0x09, 0x0f, 0x79, 0x09, 0x08, 0x07, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xf0, 0x10, 0x10, 0x64, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01,
-+ 0x7f, 0x01, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x00,
-+ 0x0f, 0x1f, 0x02, 0x7f, 0x02, 0x01, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xc0,
-+ 0x00, 0xf0, 0x00, 0xfc, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01,
-+ 0x0f, 0x0f, 0x09, 0x7f, 0x08, 0x08, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xe0, 0xe0, 0x20, 0xfc, 0x20, 0x60, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3d, 0x1f,
-+ 0x03, 0x0c, 0x7f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xf0,
-+ 0x10, 0x60, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01,
-+ 0x7f, 0x02, 0x05, 0x19, 0x66, 0x18, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xf0, 0x08,
-+ 0xfc, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x1f,
-+ 0x04, 0x3f, 0x3f, 0x24, 0x18, 0x60, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xf0,
-+ 0x90, 0xf0, 0xfc, 0x84, 0x98, 0x80, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x02,
-+ 0x0f, 0x7f, 0x08, 0x0f, 0x08, 0x07, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xf0, 0x90, 0x90, 0xe4, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x02,
-+ 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x80,
-+ 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01,
-+ 0x7f, 0x1f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00,
-+ 0xfc, 0xf0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x08,
-+ 0x7e, 0x18, 0x1d, 0x2a, 0x49, 0x08, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x78,
-+ 0x88, 0xa4, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x3f, 0x07,
-+ 0x07, 0x1f, 0x1f, 0x0f, 0x03, 0x3c, 0x00, 0x00,
-+ 0x10, 0x60, 0x90, 0x64, 0x98, 0x60, 0xc0, 0xc0,
-+ 0xc0, 0xf0, 0xf0, 0xe0, 0x80, 0x78, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x0f,
-+ 0x71, 0x09, 0x31, 0x05, 0x19, 0x67, 0x00, 0x00,
-+ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xfc,
-+ 0xf0, 0x10, 0xf0, 0xf0, 0xf0, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x3f, 0x0f,
-+ 0x7f, 0x07, 0x07, 0x7c, 0x07, 0x18, 0x00, 0x00,
-+ 0x10, 0x60, 0x90, 0x64, 0x98, 0xe0, 0xe0, 0xe0,
-+ 0xfc, 0xc0, 0xd8, 0xe0, 0x60, 0x1c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x3f, 0x2f,
-+ 0x4b, 0x37, 0x3f, 0x07, 0x07, 0x3c, 0x00, 0x00,
-+ 0x10, 0x60, 0x90, 0x64, 0x18, 0xe0, 0xfc, 0xe8,
-+ 0x40, 0xe0, 0xe0, 0xe0, 0xe0, 0x38, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x39, 0x04,
-+ 0x1f, 0x13, 0x1f, 0x1d, 0x1d, 0x73, 0x00, 0x00,
-+ 0x10, 0x60, 0x90, 0x64, 0x18, 0xe8, 0x30, 0x88,
-+ 0xf0, 0x90, 0xf0, 0xd4, 0xcc, 0x04, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x21, 0x3f,
-+ 0x21, 0x2f, 0x29, 0x29, 0x29, 0x21, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0xf8,
-+ 0x08, 0xe8, 0x28, 0x28, 0xc8, 0x18, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x20, 0x22,
-+ 0x2f, 0x22, 0x3f, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0x88,
-+ 0xe8, 0x88, 0xf8, 0x88, 0x48, 0x58, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x22, 0x24,
-+ 0x26, 0x24, 0x27, 0x22, 0x24, 0x28, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0xc8,
-+ 0xc8, 0x48, 0xc8, 0x88, 0xa8, 0x78, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x20, 0x3f,
-+ 0x2f, 0x29, 0x2f, 0x2a, 0x27, 0x38, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x28, 0x28,
-+ 0xf8, 0xa8, 0x68, 0x28, 0x28, 0x78, 0x00, 0x00,
-+ 0x00, 0x2e, 0x24, 0x2e, 0x2e, 0x23, 0x3f, 0x2e,
-+ 0x3a, 0x3e, 0x3a, 0x3a, 0x3e, 0x39, 0x00, 0x00,
-+ 0x00, 0xe8, 0x48, 0xe8, 0xe8, 0x88, 0xe8, 0xe8,
-+ 0xf8, 0xb8, 0xf8, 0xf8, 0x98, 0xf8, 0x00, 0x00,
-+ 0x02, 0x21, 0x2c, 0x33, 0x29, 0x23, 0x2c, 0x3f,
-+ 0x28, 0x08, 0x0f, 0x08, 0x08, 0x07, 0x00, 0x00,
-+ 0x40, 0x48, 0xa8, 0x98, 0x48, 0x28, 0x88, 0xf8,
-+ 0x08, 0x70, 0x80, 0x04, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f,
-+ 0x22, 0x2c, 0x37, 0x21, 0x21, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf8,
-+ 0x88, 0x98, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x11, 0x3d, 0x25, 0x25, 0x3d, 0x25,
-+ 0x24, 0x24, 0x3d, 0x25, 0x06, 0x18, 0x00, 0x00,
-+ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48,
-+ 0xd0, 0xd0, 0x68, 0x78, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x2b, 0x3e, 0x2a, 0x3e, 0x18,
-+ 0x1a, 0x1a, 0x1d, 0x2f, 0x29, 0x47, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xfc, 0x40, 0x50, 0x50, 0x50,
-+ 0xa0, 0xa0, 0x50, 0x88, 0x04, 0xfc, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x48,
-+ 0x7e, 0x12, 0x3a, 0x04, 0x1b, 0x62, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xa0,
-+ 0x68, 0x68, 0xb4, 0xbc, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x18,
-+ 0x1a, 0x1a, 0x1d, 0x2f, 0x28, 0x47, 0x00, 0x00,
-+ 0x00, 0xf8, 0xd8, 0xb8, 0xa8, 0xf8, 0xa8, 0xf8,
-+ 0xc8, 0xb8, 0x88, 0x9c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x11, 0x3e, 0x2b, 0x3f, 0x2b, 0x3f, 0x19,
-+ 0x1b, 0x1b, 0x1d, 0x2f, 0x28, 0x47, 0x00, 0x00,
-+ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xd8, 0xd8,
-+ 0xe8, 0x48, 0x48, 0x1c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x11, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x19,
-+ 0x1d, 0x1d, 0x1b, 0x2f, 0x28, 0x47, 0x00, 0x00,
-+ 0x20, 0xfc, 0x98, 0xe8, 0xd8, 0xf8, 0x20, 0xfc,
-+ 0x54, 0xfc, 0x04, 0x0c, 0x04, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x17, 0x1f, 0x1f, 0x1f, 0x19,
-+ 0x17, 0x17, 0x27, 0x21, 0x46, 0x38, 0x00, 0x00,
-+ 0x00, 0xfc, 0x18, 0x14, 0xfc, 0x90, 0xa8, 0xc4,
-+ 0xf0, 0xf0, 0xf0, 0xa8, 0xfc, 0x7c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x38, 0x28,
-+ 0x28, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x7c, 0xa0, 0xa0, 0x3c, 0x20,
-+ 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xa8, 0xa4, 0x24, 0x20, 0xfc,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x40, 0x40, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0xc8,
-+ 0x24, 0x20, 0x00, 0xc0, 0x30, 0x08, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x88, 0x20, 0x20, 0xfc, 0x48,
-+ 0x48, 0xf0, 0x90, 0x38, 0xc4, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0x78, 0x90, 0xfc, 0x80, 0xf8, 0xc8,
-+ 0xc8, 0xc8, 0xd8, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x80, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x00, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0x90, 0xfc, 0x90, 0xb8, 0xb8,
-+ 0xb8, 0xd4, 0xd4, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x0c, 0xf0, 0x20, 0x28, 0xc8, 0x30, 0x30, 0x48,
-+ 0xf4, 0x20, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00,
-+ 0x10, 0x49, 0x21, 0x0a, 0x14, 0x23, 0x27, 0x08,
-+ 0x3f, 0x09, 0x0f, 0x0f, 0x14, 0x22, 0x00, 0x00,
-+ 0x40, 0x50, 0x48, 0xd4, 0x64, 0x80, 0xc0, 0x80,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0x90, 0x48, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3f, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x48, 0x88, 0xa8, 0xa8, 0xa8, 0xe8, 0xa8, 0xe8,
-+ 0xe8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2b, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x08, 0xd0, 0x70, 0xa8, 0x20, 0xfc, 0x60, 0xa0,
-+ 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc,
-+ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0x98, 0x88, 0xd8, 0x88, 0x88, 0xf8,
-+ 0x68, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x90,
-+ 0x94, 0xf8, 0x90, 0x94, 0xd4, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x25, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0xa8, 0x00, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x05, 0x3a, 0x2e, 0x29, 0x42, 0x00, 0x00,
-+ 0x50, 0x50, 0x50, 0xdc, 0x50, 0x50, 0xdc, 0x50,
-+ 0x70, 0xdc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2b, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x41, 0x00, 0x00,
-+ 0x20, 0x50, 0xf8, 0x90, 0x68, 0xfc, 0x60, 0xb0,
-+ 0xcc, 0x20, 0xc8, 0x10, 0x60, 0x80, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3b, 0x2f, 0x2a, 0x41, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0xa8, 0xe8, 0x84, 0x94, 0xc8,
-+ 0xc8, 0xc0, 0x50, 0x48, 0x44, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3b, 0x2f, 0x2a, 0x41, 0x00, 0x00,
-+ 0x20, 0x38, 0x20, 0xfc, 0xa8, 0xf8, 0xa4, 0x9c,
-+ 0xf0, 0xd0, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x88, 0x74, 0x00, 0xf8, 0x10,
-+ 0x20, 0x58, 0xd4, 0xc4, 0x50, 0x30, 0x00, 0x00,
-+ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x05, 0x3b, 0x2f, 0x29, 0x41, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x48, 0xd8, 0x48, 0x00, 0xf8,
-+ 0x28, 0x28, 0xd0, 0x10, 0x28, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x05, 0x3b, 0x2f, 0x2a, 0x42, 0x00, 0x00,
-+ 0x28, 0x24, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xe8,
-+ 0xb0, 0xf0, 0x94, 0x2c, 0x4c, 0x84, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xf8, 0x20,
-+ 0x50, 0xd8, 0xc4, 0x54, 0x50, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x70, 0x50, 0x50, 0x88, 0xfc, 0x30, 0xf8, 0xb8,
-+ 0xd8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3f, 0x2a,
-+ 0x3e, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x50,
-+ 0xf8, 0x8c, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0xa8, 0xa8, 0xfc, 0xa8, 0xb8, 0x80, 0xfc, 0x20,
-+ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3b, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8,
-+ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xb8, 0xe8, 0xf8,
-+ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x10, 0x10, 0x1c, 0x2b, 0x7e, 0x2f, 0x3e, 0x2f,
-+ 0x3f, 0x0b, 0x3e, 0x3e, 0x35, 0x48, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0xe8, 0xa8, 0xe8,
-+ 0x78, 0x50, 0x94, 0xdc, 0x2c, 0x44, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0xa8, 0xa8, 0xd8, 0x88, 0xf8, 0x00,
-+ 0xf8, 0xe8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x00,
-+ 0xf8, 0xe8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3f, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x54, 0x54, 0xfc, 0x20, 0xa8, 0xa8,
-+ 0x24, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x05, 0x3b, 0x2f, 0x29, 0x40, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xd0, 0x7c, 0x74, 0xf4, 0x34,
-+ 0xf4, 0x74, 0x7c, 0xd0, 0x10, 0x10, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x94, 0x54, 0xf4, 0x2c, 0x40,
-+ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x10, 0x11, 0x1c, 0x28, 0x7f, 0x2a, 0x3f, 0x2b,
-+ 0x3f, 0x05, 0x3f, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x10, 0xd0, 0x10, 0x3c, 0xf4, 0xb4, 0xfc, 0xf4,
-+ 0xf4, 0xfc, 0xb4, 0x90, 0x90, 0x90, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x42, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8,
-+ 0xf8, 0xa8, 0xf0, 0x68, 0xa4, 0x60, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x08, 0x7f, 0x1e, 0x26, 0x47,
-+ 0x3f, 0x09, 0x0f, 0x0f, 0x14, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xc8, 0x84,
-+ 0xe0, 0x20, 0xe0, 0xe0, 0x90, 0x48, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xf8, 0x50, 0xfc, 0xf8, 0x88, 0xf8,
-+ 0x88, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x25, 0x7f, 0x2b, 0x3e, 0x2a,
-+ 0x3e, 0x05, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x00, 0xfc, 0x50, 0xfc, 0x54, 0xfc, 0x00, 0xf8,
-+ 0x00, 0xfc, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00,
-+ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xf8, 0x88, 0xf8,
-+ 0x50, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00,
-+ 0x40, 0x60, 0x90, 0xf8, 0xfc, 0xd8, 0x68, 0xf8,
-+ 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x90, 0x00, 0x00,
-+ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2b, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00,
-+ 0x60, 0xf8, 0x68, 0xf8, 0x68, 0xf8, 0x00, 0xfc,
-+ 0xf8, 0x88, 0xf8, 0x50, 0xfc, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2b, 0x3e, 0x2b,
-+ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x88, 0x50, 0xfc, 0x20, 0xf8, 0xfc, 0xd0, 0xf8,
-+ 0x94, 0xf0, 0xf0, 0xa8, 0xd0, 0x0c, 0x00, 0x00,
-+ 0x08, 0x08, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b,
-+ 0x3f, 0x05, 0x3b, 0x2f, 0x2a, 0x41, 0x00, 0x00,
-+ 0x20, 0x38, 0xfc, 0x68, 0xd8, 0xf8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00,
-+ 0x01, 0x0f, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x15,
-+ 0x12, 0x20, 0x07, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0xf8, 0x48,
-+ 0xa8, 0x30, 0xc0, 0x40, 0x44, 0x3c, 0x00, 0x00,
-+ 0x02, 0x1f, 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x1f,
-+ 0x10, 0x07, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0x00, 0xf8,
-+ 0x08, 0x88, 0xf0, 0x84, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x00, 0x39, 0x09, 0x09, 0x09, 0x19, 0x15,
-+ 0x15, 0x23, 0x20, 0x43, 0x02, 0x04, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x24, 0x24, 0x24, 0x7e, 0x0c, 0x0c,
-+ 0x14, 0x14, 0x24, 0x45, 0x05, 0x0e, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x12, 0x12, 0x14, 0x14, 0x1c,
-+ 0x14, 0x14, 0x24, 0x25, 0x45, 0x06, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x1f, 0x10, 0x13, 0x12, 0x13, 0x13, 0x13,
-+ 0x12, 0x13, 0x26, 0x25, 0x49, 0x10, 0x00, 0x00,
-+ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x3f,
-+ 0x20, 0x3f, 0x0d, 0x3d, 0x32, 0x4d, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x28, 0x28, 0x28, 0xfc,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x48, 0x0c,
-+ 0x0c, 0x15, 0x16, 0x25, 0x41, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x3f, 0x22, 0x40, 0x1c, 0x04, 0x14,
-+ 0x14, 0x14, 0x22, 0x23, 0x41, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x01, 0x0f, 0x0a, 0x7f, 0x05, 0x1f, 0x64, 0x07,
-+ 0x07, 0x07, 0x07, 0x15, 0x12, 0x20, 0x00, 0x00,
-+ 0x00, 0xe0, 0x20, 0xfc, 0x40, 0xf0, 0x4c, 0xc0,
-+ 0xc0, 0xfc, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00,
-+ 0x15, 0x0e, 0x19, 0x3f, 0x21, 0x4f, 0x08, 0x0f,
-+ 0x0f, 0x0f, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00,
-+ 0xa8, 0x70, 0xc8, 0xfc, 0x08, 0xe0, 0x20, 0xe0,
-+ 0xe0, 0xfc, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x09, 0x09, 0x7f, 0x09, 0x09, 0x3d,
-+ 0x25, 0x25, 0x25, 0x3e, 0x22, 0x04, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x00, 0x06, 0x38, 0x28, 0x28, 0x3f, 0x28, 0x2a,
-+ 0x26, 0x26, 0x3a, 0x63, 0x3d, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x11, 0x19, 0x25, 0x7b, 0x09, 0x09,
-+ 0x3f, 0x09, 0x09, 0x0e, 0x72, 0x04, 0x00, 0x00,
-+ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc,
-+ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x22, 0x3e, 0x23, 0x3e, 0x3f,
-+ 0x20, 0x3f, 0x0d, 0x3d, 0x31, 0x46, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x4c,
-+ 0x70, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x7c, 0x00, 0x7e,
-+ 0x12, 0x12, 0x12, 0x1d, 0x11, 0x12, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x14, 0x12, 0x22, 0x54,
-+ 0x0c, 0x08, 0x0c, 0x15, 0x21, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xbc, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x14, 0x12, 0x22, 0x7e, 0x00, 0x3e,
-+ 0x22, 0x22, 0x3e, 0x23, 0x21, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x0c, 0x12, 0x7d, 0x08, 0x28, 0x3e, 0x28,
-+ 0x48, 0x7f, 0x08, 0x09, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x11, 0x12, 0x27, 0x4c, 0x0f, 0x14, 0x17, 0x37,
-+ 0x54, 0x17, 0x13, 0x1f, 0x1c, 0x11, 0x00, 0x00,
-+ 0x00, 0x3c, 0x80, 0x80, 0x80, 0xbc, 0x88, 0xe8,
-+ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x98, 0x00, 0x00,
-+ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3c,
-+ 0x24, 0x24, 0x3c, 0x65, 0x05, 0x06, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x0c, 0x16, 0x75, 0x15, 0x14, 0x7f, 0x15, 0x15,
-+ 0x1e, 0x72, 0x17, 0x1b, 0x11, 0x31, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, 0x78, 0x7c,
-+ 0x40, 0x7c, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00,
-+ 0x06, 0x38, 0x7f, 0x0c, 0x79, 0x1f, 0x04, 0x07,
-+ 0x07, 0x07, 0x07, 0x15, 0x12, 0x20, 0x00, 0x00,
-+ 0x50, 0x48, 0xfc, 0x70, 0xb4, 0xec, 0x20, 0xe0,
-+ 0xe0, 0xfc, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x22, 0x23, 0x23, 0x46, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x23, 0x23, 0x26, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x7f, 0x08, 0x2a, 0x2a, 0x2a, 0x2a, 0x3d,
-+ 0x4d, 0x48, 0x08, 0x0f, 0x71, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22,
-+ 0x22, 0x3e, 0x18, 0x15, 0x25, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x14, 0x14, 0x14, 0x7f, 0x14, 0x14, 0x7f, 0x00,
-+ 0x3e, 0x22, 0x3e, 0x23, 0x3f, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x7f, 0x00, 0x3c, 0x24, 0x3c, 0x00, 0x3e,
-+ 0x04, 0x0e, 0x78, 0x09, 0x09, 0x1a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a,
-+ 0x3e, 0x1c, 0x1a, 0x29, 0x49, 0x0a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x7f, 0x6b, 0x5d, 0x7f,
-+ 0x18, 0x1c, 0x2a, 0x49, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x10, 0x3e, 0x2a, 0x2a, 0x3e, 0x2a, 0x3e,
-+ 0x14, 0x24, 0x7e, 0x05, 0x05, 0x06, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x14, 0x17, 0x29, 0x2e,
-+ 0x72, 0x2c, 0x26, 0x2b, 0x31, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x77, 0x55, 0x77, 0x00, 0x3c, 0x00, 0x7e,
-+ 0x10, 0x1c, 0x24, 0x05, 0x05, 0x1a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x7f, 0x08, 0x3e, 0x2a, 0x3e,
-+ 0x2a, 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x14, 0x7f, 0x1a, 0x29, 0x5f, 0x04,
-+ 0x07, 0x07, 0x07, 0x07, 0x15, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xfc, 0x90, 0x60, 0x9c, 0xe0, 0x20,
-+ 0xe0, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x0c, 0x24, 0x2a, 0x49, 0x14, 0x3e, 0x00, 0x7e,
-+ 0x36, 0x5a, 0x36, 0x5b, 0x13, 0x36, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x06, 0x3c, 0x2a, 0x49, 0x14, 0x3c, 0x08, 0x14,
-+ 0x3e, 0x08, 0x7e, 0x0d, 0x13, 0x62, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x1c, 0x14, 0x22, 0x3d, 0x40, 0x1c, 0x14, 0x22,
-+ 0x7f, 0x2e, 0x2e, 0x2f, 0x71, 0x02, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x41, 0x3e,
-+ 0x22, 0x3e, 0x22, 0x3f, 0x23, 0x26, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x00, 0x7e, 0x12, 0x12, 0x7e, 0x48, 0x7e, 0x5a,
-+ 0x36, 0x5a, 0x36, 0x5b, 0x13, 0x6e, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x6b, 0x08, 0x6f, 0x14, 0x12, 0x3f, 0x52,
-+ 0x1e, 0x12, 0x1e, 0x13, 0x13, 0x16, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x13, 0x1c, 0x11, 0x0f, 0x2e, 0x2a, 0x2e, 0x2e,
-+ 0x2a, 0x2e, 0x3f, 0x2d, 0x13, 0x62, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x3e, 0x3e, 0x22,
-+ 0x3e, 0x00, 0x7f, 0x0d, 0x13, 0x62, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x10, 0x1e, 0x1a, 0x24, 0x54, 0x18, 0x7e, 0x28,
-+ 0x7f, 0x2a, 0x2a, 0x3f, 0x21, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x14, 0x7f, 0x3e, 0x09, 0x0f,
-+ 0x0f, 0x0f, 0x0f, 0x0f, 0x15, 0x22, 0x00, 0x00,
-+ 0x40, 0x40, 0xf0, 0x50, 0xd4, 0xb4, 0x0c, 0xe0,
-+ 0xe0, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x2a, 0x2a, 0x3f, 0x2a, 0x2e,
-+ 0x2a, 0x20, 0x3e, 0x57, 0x57, 0x21, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xec, 0xc4, 0x18, 0x00, 0x00,
-+ 0x00, 0x3f, 0x0a, 0x04, 0x7f, 0x1d, 0x64, 0x3f,
-+ 0x2d, 0x37, 0x2f, 0x2b, 0x2f, 0x23, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0xf8, 0x48, 0x78, 0x7c,
-+ 0x40, 0x7c, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00,
-+ 0x12, 0x14, 0x3f, 0x68, 0x3e, 0x28, 0x3e, 0x28,
-+ 0x3f, 0x04, 0x3e, 0x2f, 0x29, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x06, 0x3a, 0x2a, 0x1c, 0x7f, 0x1c, 0x2a, 0x7e,
-+ 0x2a, 0x3e, 0x2a, 0x3f, 0x21, 0x22, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x55, 0x32, 0x3f, 0x62, 0x3e,
-+ 0x22, 0x3e, 0x2a, 0x29, 0x49, 0x1a, 0x00, 0x00,
-+ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc,
-+ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00,
-+ 0x0a, 0x11, 0x1a, 0x19, 0x3f, 0x21, 0x4f, 0x0f,
-+ 0x08, 0x0f, 0x0f, 0x0f, 0x15, 0x22, 0x00, 0x00,
-+ 0xb0, 0x90, 0xb0, 0xb0, 0xfc, 0x08, 0xe0, 0xe0,
-+ 0x20, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x00, 0x3b, 0x2a, 0x3b, 0x3b, 0x2a, 0x3b, 0x1b,
-+ 0x24, 0x7f, 0x0a, 0x1e, 0x0d, 0x31, 0x00, 0x00,
-+ 0x10, 0xa0, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x3c,
-+ 0xa0, 0xbc, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00,
-+ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x14, 0x3f,
-+ 0x68, 0x3e, 0x3e, 0x28, 0x3f, 0x21, 0x00, 0x00,
-+ 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, 0x78, 0x7c,
-+ 0x40, 0x7c, 0x34, 0xfc, 0xc4, 0x18, 0x00, 0x00,
-+ 0x13, 0x17, 0x6b, 0x1b, 0x7f, 0x3a, 0x57, 0x1f,
-+ 0x0f, 0x0f, 0x0f, 0x0f, 0x15, 0x22, 0x00, 0x00,
-+ 0x90, 0xd4, 0xe8, 0x98, 0xfc, 0xb8, 0xd4, 0xf0,
-+ 0xe0, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x3f, 0x22, 0x21, 0x2c, 0x23,
-+ 0x38, 0x25, 0x23, 0x24, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x00, 0xf8, 0x48, 0x48, 0x68, 0x98,
-+ 0x98, 0x48, 0x28, 0x88, 0xf8, 0x08, 0x00, 0x00,
-+ 0x10, 0x10, 0x1e, 0x11, 0x7f, 0x57, 0x4f, 0x7b,
-+ 0x6f, 0x57, 0x73, 0x4b, 0x7e, 0x42, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0xfc, 0x20, 0xe8, 0x28, 0xe8,
-+ 0xb0, 0xf0, 0xb4, 0x2c, 0x4c, 0x04, 0x00, 0x00,
-+ 0x01, 0x3d, 0x2a, 0x3f, 0x26, 0x3f, 0x2b, 0x3f,
-+ 0x22, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00,
-+ 0x00, 0xfc, 0x7c, 0xf8, 0xd8, 0x78, 0xa8, 0xf8,
-+ 0x08, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x01, 0x03, 0x0c, 0x71, 0x1f, 0x12, 0x1f, 0x12,
-+ 0x1f, 0x14, 0x17, 0x24, 0x27, 0x58, 0x00, 0x00,
-+ 0x00, 0xe0, 0x40, 0x80, 0xfc, 0x40, 0xf8, 0x48,
-+ 0xf8, 0x4c, 0xf0, 0x40, 0x44, 0x3c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x17, 0x17,
-+ 0x1c, 0x2f, 0x27, 0x40, 0x1f, 0x00, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x70, 0x44,
-+ 0xbc, 0xf8, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x27, 0x47,
-+ 0x19, 0x09, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00,
-+ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x70, 0x44,
-+ 0x3c, 0x20, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x27, 0x5e, 0x07,
-+ 0x14, 0x17, 0x1f, 0x7f, 0x06, 0x78, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x74, 0x3c, 0xe0,
-+ 0x20, 0xe0, 0xf0, 0xfc, 0x60, 0x1c, 0x00, 0x00,
-+ 0x04, 0x04, 0x3f, 0x2a, 0x3f, 0x2b, 0x2b, 0x3f,
-+ 0x34, 0x3d, 0x36, 0x54, 0x5d, 0x33, 0x00, 0x00,
-+ 0x48, 0x48, 0x48, 0xfc, 0x48, 0x78, 0x48, 0x78,
-+ 0x48, 0xfc, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x23, 0x4e, 0x1f,
-+ 0x17, 0x1f, 0x13, 0x1d, 0x1f, 0x10, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0xe4, 0x3c, 0xf0,
-+ 0xd0, 0xf0, 0x90, 0x50, 0xf0, 0x10, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x2f, 0x4e, 0x32,
-+ 0x1c, 0x1e, 0x10, 0x1f, 0x0c, 0x70, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x70, 0x44, 0x3c,
-+ 0xf0, 0xf0, 0x10, 0xf0, 0x84, 0x7c, 0x00, 0x00,
-+ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x27, 0x4e, 0x1e,
-+ 0x13, 0x1e, 0x1e, 0x7e, 0x1a, 0x66, 0x00, 0x00,
-+ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x74, 0x3c, 0x10,
-+ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x01, 0x01, 0x7f, 0x09, 0x19, 0x27, 0x05, 0x19,
-+ 0x63, 0x0e, 0x31, 0x01, 0x06, 0x38, 0x00, 0x00,
-+ 0x00, 0x00, 0xfc, 0x20, 0x30, 0xc8, 0x40, 0x30,
-+ 0xec, 0x20, 0x40, 0xc0, 0x20, 0x00, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x2a, 0x2a, 0x5d, 0x1a, 0x29,
-+ 0x4e, 0x12, 0x2c, 0x45, 0x1b, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x50, 0x50, 0x88, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x08, 0x7f, 0x10,
-+ 0x1e, 0x32, 0x4c, 0x05, 0x1b, 0x60, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20,
-+ 0x50, 0x50, 0x88, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x08, 0x09, 0x7f, 0x2a, 0x2a, 0x5d, 0x1c, 0x2a,
-+ 0x4e, 0x12, 0x2c, 0x44, 0x1a, 0x60, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0xa0, 0xb8, 0xa8, 0xa8, 0xa8,
-+ 0xf8, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x2a, 0x2a, 0x5d, 0x1c, 0x2a,
-+ 0x4e, 0x12, 0x2c, 0x44, 0x1b, 0x60, 0x00, 0x00,
-+ 0x40, 0x40, 0x78, 0x88, 0xe8, 0xa8, 0xa8, 0xe8,
-+ 0xb0, 0x80, 0x84, 0x7c, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x17, 0x17, 0x1a, 0x11,
-+ 0x1f, 0x1f, 0x21, 0x3f, 0x42, 0x0c, 0x00, 0x00,
-+ 0x80, 0xfc, 0x10, 0xfc, 0x38, 0xbc, 0xd4, 0x40,
-+ 0x7c, 0x78, 0xc0, 0x7c, 0x40, 0x40, 0x00, 0x00,
-+ 0x0a, 0x11, 0x1a, 0x19, 0x3f, 0x24, 0x5f, 0x07,
-+ 0x7f, 0x0f, 0x0f, 0x09, 0x0f, 0x38, 0x00, 0x00,
-+ 0xb0, 0x90, 0xb0, 0xb0, 0xfc, 0x48, 0xf0, 0xc0,
-+ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x38, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x2a, 0x49, 0x0a,
-+ 0x0d, 0x79, 0x05, 0x07, 0x39, 0x03, 0x00, 0x00,
-+ 0x40, 0x40, 0xf8, 0x28, 0x48, 0x88, 0x30, 0x80,
-+ 0x60, 0x3c, 0xc0, 0x60, 0x18, 0x00, 0x00, 0x00,
-+ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x2a, 0x4d, 0x1c,
-+ 0x6b, 0x2e, 0x1c, 0x6b, 0x08, 0x18, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x06, 0x38, 0x09, 0x7f, 0x1c, 0x2a, 0x49, 0x1c,
-+ 0x2a, 0x6d, 0x1d, 0x6b, 0x09, 0x19, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x98, 0xe8, 0xb8, 0xc8, 0xf8,
-+ 0x20, 0xfc, 0x54, 0xec, 0x04, 0x0c, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00,
-+ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8, 0x20,
-+ 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8,
-+ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3e, 0x2a, 0x2e, 0x3b, 0x3f, 0x08, 0x3e,
-+ 0x0c, 0x71, 0x1f, 0x2e, 0x2e, 0x40, 0x00, 0x00,
-+ 0x90, 0x90, 0x90, 0x90, 0x50, 0x7c, 0xd4, 0x94,
-+ 0xd4, 0x54, 0xe4, 0x24, 0x44, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x00,
-+ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x10, 0x10, 0xfc, 0x00, 0x78, 0x48, 0x48, 0x78,
-+ 0x10, 0x58, 0x54, 0x94, 0x10, 0x30, 0x00, 0x00,
-+ 0x09, 0x05, 0x3f, 0x27, 0x47, 0x1f, 0x19, 0x15,
-+ 0x1f, 0x3f, 0x01, 0x7f, 0x24, 0x42, 0x00, 0x00,
-+ 0x20, 0x40, 0xfc, 0xc8, 0xc0, 0xf0, 0x30, 0x50,
-+ 0xf0, 0xf8, 0x00, 0xfc, 0x88, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f,
-+ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00,
-+ 0x20, 0x20, 0xfc, 0x48, 0x30, 0xfc, 0x00, 0x78,
-+ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x12, 0x1a, 0x2f, 0x5f, 0x1f, 0x1b, 0x2e, 0x6f,
-+ 0x2f, 0x22, 0x3f, 0x2f, 0x2b, 0x30, 0x00, 0x00,
-+ 0x20, 0xa0, 0xa0, 0xe0, 0xbc, 0xe8, 0xe8, 0xa8,
-+ 0x98, 0x10, 0xd8, 0xa8, 0xc4, 0x84, 0x00, 0x00,
-+ 0x00, 0x1f, 0x17, 0x17, 0x1f, 0x2f, 0x4f, 0x0f,
-+ 0x0d, 0x0f, 0x1f, 0x7f, 0x24, 0x42, 0x00, 0x00,
-+ 0x00, 0xfc, 0x14, 0x7c, 0x90, 0xb0, 0xc8, 0xe4,
-+ 0x60, 0xe0, 0xf0, 0xfc, 0x88, 0x44, 0x00, 0x00,
-+ 0x00, 0x3f, 0x2a, 0x2e, 0x3b, 0x3f, 0x09, 0x3e,
-+ 0x0c, 0x70, 0x1e, 0x2e, 0x28, 0x43, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0xfc, 0x5c, 0xfc, 0xf8,
-+ 0x88, 0xf8, 0xf8, 0xf8, 0xc8, 0x04, 0x00, 0x00,
-+ 0x02, 0x12, 0x0a, 0x7f, 0x11, 0x11, 0x3f, 0x51,
-+ 0x15, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00,
-+ 0x80, 0x90, 0xa0, 0xfc, 0x10, 0x08, 0xf4, 0x14,
-+ 0x50, 0x50, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00,
-+ 0x14, 0x55, 0x36, 0x7f, 0x0a, 0x29, 0x7f, 0x2a,
-+ 0x3e, 0x3e, 0x3e, 0x2b, 0x2a, 0x27, 0x00, 0x00,
-+ 0x30, 0x28, 0x28, 0x20, 0xfc, 0x20, 0x28, 0x28,
-+ 0x68, 0x70, 0x90, 0x30, 0xc8, 0x04, 0x00, 0x00,
-+ 0x14, 0x55, 0x36, 0x7f, 0x0a, 0x29, 0x7f, 0x2a,
-+ 0x3e, 0x3e, 0x3e, 0x2a, 0x2a, 0x26, 0x00, 0x00,
-+ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8,
-+ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x98, 0x00, 0x00,
-+ 0x00, 0x3f, 0x22, 0x3e, 0x02, 0x3e, 0x22, 0x3e,
-+ 0x22, 0x22, 0x3e, 0x22, 0x02, 0x01, 0x00, 0x00,
-+ 0x00, 0xf8, 0x88, 0xf8, 0x80, 0xf8, 0x88, 0xf8,
-+ 0x88, 0x88, 0xf8, 0x88, 0x04, 0xfc, 0x00, 0x00,
-+ 0x08, 0x3e, 0x7f, 0x08, 0x7f, 0x1e, 0x26, 0x5f,
-+ 0x1e, 0x3e, 0x3e, 0x22, 0x3e, 0x21, 0x00, 0x00,
-+ 0x20, 0x20, 0x7c, 0xc8, 0x30, 0x30, 0xcc, 0xf0,
-+ 0xf0, 0xf8, 0xf8, 0x88, 0xfc, 0xfc, 0x00, 0x00,
-+ 0x2a, 0x49, 0x7f, 0x5d, 0x6b, 0x49, 0x1f, 0x1e,
-+ 0x32, 0x22, 0x3a, 0x3a, 0x22, 0x01, 0x00, 0x00,
-+ 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xcc, 0xf0, 0xf0,
-+ 0xf8, 0x88, 0xf8, 0xf8, 0x84, 0xfc, 0x00, 0x00,
-+ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3e, 0x22,
-+ 0x3e, 0x24, 0x15, 0x1f, 0x1a, 0x65, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xfc, 0xa8, 0xa0, 0xf8, 0xc8,
-+ 0xd0, 0xb0, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x1e, 0x12, 0x1e, 0x0f, 0x73,
-+ 0x06, 0x19, 0x07, 0x79, 0x00, 0x07, 0x00, 0x00,
-+ 0x20, 0xfc, 0x20, 0xf8, 0x50, 0x70, 0x8c, 0xe0,
-+ 0x40, 0x80, 0xe0, 0x9c, 0xc0, 0x00, 0x00, 0x00,
-+ 0x02, 0x11, 0x09, 0x08, 0x1f, 0x11, 0x11, 0x1f,
-+ 0x11, 0x11, 0x1f, 0x21, 0x21, 0x41, 0x00, 0x00,
-+ 0x10, 0x10, 0x20, 0x40, 0xf0, 0x10, 0x10, 0xf0,
-+ 0x10, 0x10, 0xf4, 0x0c, 0x0c, 0x04, 0x00, 0x00,
-+ 0x08, 0x36, 0x22, 0x36, 0x22, 0x3e, 0x2a, 0x2a,
-+ 0x3e, 0x2a, 0x3d, 0x29, 0x3e, 0x48, 0x00, 0x00,
-+ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8,
-+ 0xa8, 0xf8, 0x88, 0x04, 0xc4, 0x3c, 0x00, 0x00,
-+ 0x08, 0x1e, 0x12, 0x1e, 0x1e, 0x1e, 0x3f, 0x3f,
-+ 0x25, 0x3f, 0x7f, 0x12, 0x12, 0x22, 0x00, 0x00,
-+ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20,
-+ 0x20, 0x20, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x7f, 0x02, 0x7d, 0x15, 0x15, 0x2d, 0x48,
-+ 0x0f, 0x08, 0x0f, 0x08, 0x10, 0x20, 0x00, 0x00,
-+ 0x00, 0xfc, 0x88, 0x70, 0x50, 0x50, 0xe8, 0x24,
-+ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x24, 0x2a, 0x33,
-+ 0x3f, 0x24, 0x2a, 0x33, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0x00, 0xf0, 0x00, 0xfc, 0x48, 0xa8, 0x28,
-+ 0xf8, 0x48, 0xa8, 0x28, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2a, 0x2a, 0x35,
-+ 0x3f, 0x2a, 0x2a, 0x35, 0x3f, 0x20, 0x00, 0x00,
-+ 0x20, 0x20, 0xa0, 0x20, 0xe4, 0xa4, 0xa8, 0xb0,
-+ 0xa0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x40, 0x40, 0x40, 0x78, 0x88, 0xe8, 0xa8, 0xa8,
-+ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0xc8, 0x78, 0x48, 0x48,
-+ 0x78, 0x48, 0x48, 0x48, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xf8, 0x28, 0x28, 0xa8, 0x48, 0xb0, 0x00,
-+ 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00, 0xf8,
-+ 0x28, 0x28, 0x30, 0x20, 0x20, 0x20, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0xf8, 0x48, 0x48, 0x78,
-+ 0x64, 0x68, 0x50, 0x50, 0x68, 0x84, 0x00, 0x00,
-+ 0x08, 0x7f, 0x3e, 0x0e, 0x79, 0x09, 0x7f, 0x26,
-+ 0x29, 0x3f, 0x26, 0x29, 0x3f, 0x20, 0x00, 0x00,
-+ 0x00, 0xf8, 0x48, 0x88, 0x30, 0xf0, 0xfc, 0x48,
-+ 0xa8, 0xf8, 0x48, 0xa8, 0xf8, 0x08, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0x48, 0x48, 0xfc,
-+ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x48, 0xc8, 0x78, 0x10, 0x50,
-+ 0x5c, 0x50, 0x50, 0x70, 0x90, 0x0c, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0x78, 0x48, 0x78, 0xc0, 0x7c, 0x58, 0x54,
-+ 0x7c, 0x50, 0x7c, 0x90, 0xfc, 0x00, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x18, 0xe0, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, 0x20,
-+ 0xfc, 0xd4, 0xfc, 0x84, 0x84, 0x8c, 0x00, 0x00,
-+ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35,
-+ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00,
-+ 0x00, 0xfc, 0xb4, 0xfc, 0x00, 0x78, 0x00, 0xfc,
-+ 0x20, 0x38, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00,
-+ 0x01, 0x02, 0x0f, 0x7f, 0x08, 0x0f, 0x3f, 0x12,
-+ 0x7f, 0x1e, 0x1e, 0x1e, 0x12, 0x16, 0x00, 0x00,
-+ 0x00, 0x80, 0xe0, 0xfc, 0x20, 0xe0, 0xf8, 0xf0,
-+ 0x10, 0xf0, 0xf0, 0xf0, 0xf4, 0x7c, 0x00, 0x00,
-+ 0x02, 0x07, 0x19, 0x7f, 0x12, 0x1e, 0x3a, 0x7e,
-+ 0x3a, 0x3a, 0x7e, 0x0a, 0x3a, 0x01, 0x00, 0x00,
-+ 0x00, 0xc0, 0x00, 0xf0, 0x90, 0xf0, 0x80, 0xf8,
-+ 0xd8, 0xa8, 0xd8, 0xfc, 0x84, 0xfc, 0x00, 0x00,
-+ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x3b, 0x2a, 0x3b,
-+ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x00, 0x00,
-+ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xb8, 0xa8, 0xb8,
-+ 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xb0, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x1f, 0x01, 0x3f, 0x08, 0x3e, 0x08, 0x0f,
-+ 0x70, 0x3f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00,
-+ 0x00, 0xf0, 0x00, 0xf8, 0x20, 0xf8, 0x20, 0xfc,
-+ 0x00, 0xf8, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00,
-+ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x19, 0x1d, 0x1b,
-+ 0x2b, 0x29, 0x49, 0x09, 0x08, 0x0b, 0x00, 0x00,
-+ 0x98, 0xe0, 0x84, 0x7c, 0x78, 0x48, 0x78, 0x48,
-+ 0x78, 0x48, 0x78, 0xfc, 0xd8, 0x04, 0x00, 0x00,
-+ 0x20, 0x10, 0x11, 0x46, 0x21, 0x2f, 0x02, 0x77,
-+ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00,
-+ 0x40, 0xf8, 0x90, 0x60, 0x80, 0xf8, 0x40, 0xfc,
-+ 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00,
-+ 0x00, 0x00, 0x7c, 0x11, 0x16, 0x10, 0x7f, 0x11,
-+ 0x12, 0x17, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00,
-+ 0x40, 0x78, 0xc8, 0x30, 0xa0, 0xc0, 0x00, 0xf8,
-+ 0x40, 0xfc, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00
-+};
-diff -Nur c3000_pre/linux/include/linux/fb_doublebyte.h c3000_work/linux/include/linux/fb_doublebyte.h
---- c3000_pre/linux/include/linux/fb_doublebyte.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/include/linux/fb_doublebyte.h 2004-12-06 09:25:01.000000000 +0900
-@@ -0,0 +1,43 @@
-+/*
-+ * linux/include/linux/fb_widechar.h
-+ *
-+ * Copyright (C) 1999 Christopher Li, Jim Chen
-+ * GNU/Linux Research Center
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive
-+ * for more details.
-+ *
-+ *
-+ */
-+
-+#ifndef _LINUX_FB_DOUBLEBYTE_H
-+#define _LINUX_FB_DOUBLEbYTE_H
-+
-+#define DB_VALIDATE 0x8000
-+#define DB_RIGHT_MASK 0x4000
-+#define DB_HALF_MASK 0x2000
-+#define DB_SYMBOL 0x1000
-+#define DB_ASCII 0
-+
-+#define DB_RIGHT (DB_VALIDATE|DB_RIGHT_MASK)
-+#define DB_LEFT (DB_VALIDATE)
-+#define DB_NUM 8
-+
-+#define DB_INDEX_ERROR -512
-+struct double_byte
-+{
-+ unsigned int num;
-+ char name[16];
-+ int (*is_left)(int );
-+ int (*is_right)(int );
-+ int (*font_index)(int left,int right);
-+ unsigned int width,height; /* right now only support 16x16 */
-+ int charcount;
-+ unsigned char * font_data;
-+};
-+extern int register_doublebyte(struct double_byte *);
-+extern int unregister_doublebyte(struct double_byte *);
-+extern struct double_byte * doublebyte_encodeing[DB_NUM];
-+extern struct double_byte * doublebyte_default;
-+#endif
-diff -Nur c3000_pre/linux/include/linux/tty_flip.h c3000_work/linux/include/linux/tty_flip.h
---- c3000_pre/linux/include/linux/tty_flip.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_work/linux/include/linux/tty_flip.h 2004-12-06 10:03:51.000000000 +0900
-@@ -7,9 +7,22 @@
- #define _INLINE_ static __inline__
- #endif
-
-+#ifdef CONFIG_UNICON
-+extern int (*Unicon_fnKeyHook) (struct tty_struct *tty,
-+ unsigned char ch, char flag);
-+#endif
- _INLINE_ void tty_insert_flip_char(struct tty_struct *tty,
-- unsigned char ch, char flag)
-+ unsigned char ch, char flag)
- {
-+ #ifdef CONFIG_UNICON
-+ if (Unicon_fnKeyHook != NULL)
-+ {
-+ /* return 1 ==> processed by kernel
-+ return 0 ==> processed by app */
-+ if ((*Unicon_fnKeyHook) (tty, ch, flag) == 1)
-+ return;
-+ }
-+ #endif
- if (tty->flip.count < TTY_FLIPBUF_SIZE) {
- tty->flip.count++;
- *tty->flip.flag_buf_ptr++ = flag;
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P05-C3000-TSPRESSURE_041207.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P05-C3000-TSPRESSURE_041207.patch
deleted file mode 100644
index c0cde53087..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P05-C3000-TSPRESSURE_041207.patch
+++ /dev/null
@@ -1,235 +0,0 @@
-diff -Nur c3000_pre/linux/drivers/char/Config.in c3000_work/linux/drivers/char/Config.in
---- c3000_pre/linux/drivers/char/Config.in 2004-08-21 09:48:25.000000000 +0900
-+++ c3000_work/linux/drivers/char/Config.in 2004-12-06 15:53:46.000000000 +0900
-@@ -164,6 +164,8 @@
- if [ "$CONFIG_ARCH_SHARP_SL" = "y" ]; then
- bool ' SL-series serial port support' CONFIG_SERIAL_SL_SERIES
- fi
-+ bool ' SL-series touchscreen pressure value read (EXPERIMENTAL)' CONFIG_SL_TS_PRESSURE
-+ dep_bool ' Boot On touchscreen pressure value read' CONFIG_BOOT_PRESSURE_ON $CONFIG_SL_TS_PRESSURE
- if [ "$CONFIG_SERIAL_SL_SERIES" = "y" ]; then
- bool ' SL-series Bluetooth support' CONFIG_BLUETOOTH_SL
- fi
-diff -Nur c3000_pre/linux/drivers/char/ads7846_ts.c c3000_work/linux/drivers/char/ads7846_ts.c
---- c3000_pre/linux/drivers/char/ads7846_ts.c 2004-11-16 15:31:06.000000000 +0900
-+++ c3000_work/linux/drivers/char/ads7846_ts.c 2004-12-06 15:50:06.000000000 +0900
-@@ -86,7 +86,55 @@
- static DECLARE_WAIT_QUEUE_HEAD(queue);
- static int head, tail, sample;
- static char pendown = 0;
--unsigned long Pressure;
-+static unsigned long Pressure;
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+#include <linux/proc_fs.h>
-+#endif
-+
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+static unsigned long tsPressure;
-+#if defined(CONFIG_BOOT_PRESSURE_ON)
-+static unsigned int tspressure_mode = 1;
-+#else
-+static unsigned int tspressure_mode = 0;
-+#endif
-+
-+static ssize_t tspressure_read_params(struct file *file, char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ char outputbuf[32];
-+ int count;
-+
-+ if (*ppos>0) /* Assume reading completed in previous read*/
-+ return 0;
-+ count = sprintf(outputbuf, "%d\n", (unsigned int)tspressure_mode);
-+ count++;
-+ *ppos += count;
-+ if (count>nbytes) /* Assume output can be read at one time */
-+ return -EINVAL;
-+ if (copy_to_user(buf, outputbuf, count+1))
-+ return -EFAULT;
-+ return count;
-+}
-+
-+static ssize_t tspressure_write_params(struct file *file, const char *buf,
-+ size_t nbytes, loff_t *ppos)
-+{
-+ unsigned int param=0;
-+
-+ sscanf(buf,"%d",&param);
-+ if (tspressure_mode != param) {
-+ tspressure_mode = param;
-+ printk("tspressure = %d\n", tspressure_mode);
-+ }
-+ return nbytes;
-+}
-+
-+static struct file_operations proc_tspressure_operations = {
-+ read: tspressure_read_params,
-+ write: tspressure_write_params,
-+};
-+#endif
- #if defined(CONFIG_ARCH_PXA_CORGI)
- static char ispass = 1;
- #endif
-@@ -370,7 +418,11 @@
- ((int)((x)-(y))<(int)(d)) && \
- ((int)((y)-(x))<(int)(d)) )
- unsigned long cmd;
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ unsigned int t,x,y,z[2],z2,dummy;
-+#else
- unsigned int t,x,y,z[2];
-+#endif
- int i,j,k;
- int d = 8, c = 10;
- int err = 0;
-@@ -381,7 +433,18 @@
- (3u << ADSCTRL_ADR_SH) | (1u << ADSCTRL_STS_SH);
- t = ads7846_rw(cmd);
- z[i] = ads7846_rw(cmd);
--
-+
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode) {
-+ /* Z2 */
-+ cmd = (1u << ADSCTRL_PD0_SH) | (1u << ADSCTRL_PD1_SH) |
-+ (4u << ADSCTRL_ADR_SH) | (1u << ADSCTRL_STS_SH);
-+ dummy = ads7846_rw(cmd);
-+ udelay(1);
-+ z2 = ads7846_rw(cmd);
-+ }
-+#endif
-+
- if( i ) break;
-
- /* X-axis */
-@@ -415,6 +478,10 @@
- }
- }
- Pressure = 1;
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode)
-+ if (z[1]) tsPressure = (15000 - x * (z2 - z[1]) / z[1]) >> 4;
-+#endif
- for(i=0;i<2;i++){
- if( !z[i] )
- Pressure = 0;
-@@ -528,12 +595,19 @@
-
- // printk("x=%d,y=%d\n",tp->xd,tp->yd);
-
-- if (z1 != 0)
-+ if (z1 != 0) {
- Pressure = Rx * (tp->xd) * ((10*z2/z1) - 1*10) >> 10;
-- else
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode)
-+ tsPressure = (15000 - x[3] * (z2 - z1) / z1) >> 4;
-+ }
-+#endif
-+ else
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ tsPressure = Pressure = 0;
-+#else
- Pressure = 0;
--
--
-+#endif
- cmd = (1u << ADSCTRL_PD0_SH) | (1u << ADSCTRL_PD1_SH) |
- (4u << ADSCTRL_ADR_SH) | (1u << ADSCTRL_STS_SH);
- /* Power-Down Enable */
-@@ -612,11 +686,25 @@
- // printk("fail %d\n", fail);
-
- if (fail == TOUCH_PANEL_AVERAGE) {
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ tsPressure = Pressure = 0;
-+#else
- Pressure = 0;
-+#endif
- // printk("pen up\n");
- }
- else {
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode) {
-+ if (z1) {
-+ tsPressure = Pressure = (15000 - x * (z2 - z1) / z1) >> 4;
-+ } else
-+ tsPressure = Pressure = 0;
-+ } else
-+ tsPressure = Pressure = 1;
-+#else
- Pressure = 1;
-+#endif
- tp->xd = tx / (TOUCH_PANEL_AVERAGE - fail);
- tp->yd = ty / (TOUCH_PANEL_AVERAGE - fail);
- // printk("pen position (%d,%d)\n", tx, ty);
-@@ -788,7 +876,11 @@
-
- static void new_data(void)
- {
-+#if !defined(CONFIG_ARCH_PXA_CORGI) && !defined(CONFIG_ARCH_PXA_POODLE)
-+#if !defined(CONFIG_POODLE_TR0)
- int diff0, diff1, diff2, diff3;
-+#endif
-+#endif
-
- #ifdef CONFIG_PM
- if( PowerDownMode != PMPD_MODE_ACTIVE )
-@@ -956,11 +1048,26 @@
- lock_FCS(POWER_MODE_TOUCH, 1); // not enter FCS mode.
- #endif
- if( pos_dt.xd && pos_dt.yd && Pressure ) {
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode)
-+ tc.pressure = Pressure;
-+ else
-+ tc.pressure = 500;
-+#else
- tc.pressure = 500;
-+#endif
-+
- #else
- if( pos_dt.xd && pos_dt.yd ){
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ if (tspressure_mode)
-+ tc.pressure = Pressure;
-+ else
-+ tc.pressure = 1;
-+#else
- tc.pressure = 1;
- #endif
-+#endif
- before_data = tc;
- pendown = 1;
- new_data();
-@@ -1005,6 +1112,16 @@
- static void ts_hardware_init(void)
- {
- unsigned int dummy;
-+
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ struct proc_dir_entry *tspressure_proc;
-+#endif
-+
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ tspressure_proc = create_proc_entry("zaurus/tspressure", 0, NULL);
-+ if (tspressure_proc)
-+ tspressure_proc->proc_fops = &proc_tspressure_operations;
-+#endif
-
- #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)
- pxa_ssp_init();
-@@ -1283,6 +1400,13 @@
- case 17: /* Clear all buffer data */
- print_par();
- break;
-+#if defined(CONFIG_SL_TS_PRESSURE)
-+ case 64: /* read Pressure */
-+ if (tspressure_mode) {
-+ copy_to_user((void *)arg, &tsPressure, sizeof(tsPressure));
-+ break;
-+ }
-+#endif
- default:
- return -EINVAL;
- }
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P06-C3000-WRITETS_041206.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P06-C3000-WRITETS_041206.patch
deleted file mode 100644
index 25dda93cd1..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P06-C3000-WRITETS_041206.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-diff -Nur c3000_pre/linux/drivers/char/Config.in c3000_work/linux/drivers/char/Config.in
---- c3000_pre/linux/drivers/char/Config.in 2004-12-06 16:38:50.000000000 +0900
-+++ c3000_work/linux/drivers/char/Config.in 2004-12-06 16:41:03.000000000 +0900
-@@ -166,6 +166,7 @@
- fi
- bool ' SL-series touchscreen pressure value read (EXPERIMENTAL)' CONFIG_SL_TS_PRESSURE
- dep_bool ' Boot On touchscreen pressure value read' CONFIG_BOOT_PRESSURE_ON $CONFIG_SL_TS_PRESSURE
-+ bool ' SL-series write ts data (EXPERIMENTAL)' CONFIG_SL_WRITE_TS
- if [ "$CONFIG_SERIAL_SL_SERIES" = "y" ]; then
- bool ' SL-series Bluetooth support' CONFIG_BLUETOOTH_SL
- fi
-diff -Nur c3000_pre/linux/drivers/char/ads7846_ts.c c3000_work/linux/drivers/char/ads7846_ts.c
---- c3000_pre/linux/drivers/char/ads7846_ts.c 2004-12-06 16:38:50.000000000 +0900
-+++ c3000_work/linux/drivers/char/ads7846_ts.c 2004-12-06 16:50:50.000000000 +0900
-@@ -87,7 +87,7 @@
- static int head, tail, sample;
- static char pendown = 0;
- static unsigned long Pressure;
--#if defined(CONFIG_SL_TS_PRESSURE)
-+#if defined(CONFIG_SL_TS_PRESSURE) || defined(CONFIG_SL_WRITE_TS)
- #include <linux/proc_fs.h>
- #endif
-
-@@ -1000,6 +1000,24 @@
- }
- #endif
-
-+/// write ts data
-+#if defined(CONFIG_SL_WRITE_TS)
-+static void write_new_data(TS_EVENT write_data)
-+{
-+ write_data.millisecs = jiffies;
-+ tbuf[head++] = write_data;
-+
-+ if (head >= BUFSIZE) { head = 0; }
-+
-+ if (head == tail && ++tail >= BUFSIZE) { tail = 0; }
-+
-+ if (fasync)
-+ kill_fasync(&fasync, SIGIO, POLL_IN);
-+
-+ wake_up_interruptible(&queue);
-+}
-+#endif
-+
- static void cotulla_main_ts_timer(unsigned long irq)
- {
- // ts_interrupt(irq, NULL, NULL);
-@@ -1346,10 +1364,54 @@
- static ssize_t ts_write(struct file *file, const char *buffer, size_t count, loff_t *ppos)
- {
- #if defined(CONFIG_ARCH_PXA_CORGI)
-- unsigned long param;
-- char *endp;
-- wait_after_sync_hs = simple_strtoul(buffer, &endp, 0);
-- return count+endp-buffer;
-+ char *endp;
-+#if defined(CONFIG_SL_WRITE_TS)
-+
-+ static TS_EVENT data, raw_data;
-+ char tmp[50];
-+ int len;
-+ len=49;
-+ if(len>count) len=count;
-+ copy_from_user(tmp,buffer,len);
-+ tmp[len]='\0';
-+
-+ if (sscanf(tmp,"%d %d %d %d",&data.pressure, &data.x, &data.y, &data.millisecs) == 4) {
-+// printk("pressure= %d : x= %d : y= %d : millosecs= %d\n", data.pressure, data.x, data.y, data.millisecs);
-+
-+ if (cal_ok) {
-+ raw_data.x = (x_rev) ? raw_max_x - ((raw_max_x - raw_min_x) * data.x) / res_x
-+ : raw_min_x + ((raw_max_x - raw_min_x) * data.x) / res_x;
-+
-+ raw_data.y = (y_rev) ? raw_max_y - ((raw_max_y - raw_min_y) * data.y) / res_y
-+ : raw_min_y + ((raw_max_y - raw_min_y) * data.y) / res_y;
-+
-+ } else {
-+ raw_data.x = data.x;
-+ raw_data.y = data.y;
-+ }
-+
-+ if (xyswap) {
-+ short tmp = raw_data.x;
-+ raw_data.x = raw_data.y;
-+ raw_data.y = tmp;
-+ }
-+
-+ raw_data.pressure = data.pressure;
-+ raw_data.millisecs = data.millisecs;
-+
-+ write_new_data(raw_data);
-+ return count;
-+
-+ }else {
-+#endif
-+ wait_after_sync_hs = simple_strtol(buffer, &endp, 0);
-+ printk("Wait_after_sync_hs: %d\n",(int) wait_after_sync_hs);
-+ return count+endp-buffer;
-+
-+#if defined(CONFIG_SL_WRITE_TS)
-+ }
-+#endif
-+
- #else
- return 0;
- #endif
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P07-C3000-KBDDEV_041206.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P07-C3000-KBDDEV_041206.patch
deleted file mode 100644
index b82be1551d..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P07-C3000-KBDDEV_041206.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-diff -Nur c3000_pre/linux/drivers/char/Config.in c3000_work/linux/drivers/char/Config.in
---- c3000_pre/linux/drivers/char/Config.in 2004-12-06 17:24:32.000000000 +0900
-+++ c3000_work/linux/drivers/char/Config.in 2004-12-06 17:25:51.000000000 +0900
-@@ -171,6 +171,7 @@
- bool ' SL-series Bluetooth support' CONFIG_BLUETOOTH_SL
- fi
- fi
-+bool 'Use Keyboard device file (EXPERIMENTAL)' CONFIG_KBD_DEV_FILE
- if [ "$CONFIG_ARCH_DBMX1" = "y" ]; then
- tristate 'DragonBall MX1 serial port support' CONFIG_SERIAL_DBMX1
- if [ "$CONFIG_SERIAL_DBMX1" = "y" ]; then
-diff -Nur c3000_pre/linux/drivers/char/keyboard.c c3000_work/linux/drivers/char/keyboard.c
---- c3000_pre/linux/drivers/char/keyboard.c 2004-08-21 09:48:25.000000000 +0900
-+++ c3000_work/linux/drivers/char/keyboard.c 2004-12-06 17:32:08.000000000 +0900
-@@ -35,6 +35,7 @@
-
- #include <asm/keyboard.h>
- #include <asm/bitops.h>
-+#include <asm/uaccess.h>
-
- #include <linux/kbd_kern.h>
- #include <linux/kbd_diacr.h>
-@@ -921,12 +922,35 @@
-
- pm_callback pm_kbd_request_override = NULL;
-
-+#if defined(CONFIG_KBD_DEV_FILE)
-+#define KBD_MAJOR 241
-+struct fasync_struct *fasync_kbd;
-+
-+static int kbd_open(struct inode *, struct file *);
-+static int kbd_release(struct inode *, struct file *);
-+static int kbd_fasync(int fd, struct file *filp, int on);
-+static ssize_t kbd_read(struct file *, char *, size_t, loff_t *);
-+static ssize_t kbd_write(struct file *, const char *, size_t, loff_t *);
-+
-+struct file_operations kbd_fops = {
-+ open: kbd_open,
-+ release: kbd_release,
-+ fasync: kbd_fasync,
-+ read: kbd_read,
-+ write: kbd_write,
-+};
-+#endif
-+
- int __init kbd_init(void)
- {
- int i;
- struct kbd_struct kbd0;
- extern struct tty_driver console_driver;
-
-+#if defined(CONFIG_KBD_DEV_FILE)
-+ if ( register_chrdev(KBD_MAJOR,"kbd",&kbd_fops) )
-+ printk("unable to get major %d for keyboard\n", KBD_MAJOR);
-+#endif
- kbd0.ledflagstate = kbd0.default_ledflagstate = KBD_DEFLEDS;
- kbd0.ledmode = LED_SHOW_FLAGS;
- kbd0.lockstate = KBD_DEFLOCK;
-@@ -948,3 +972,56 @@
-
- return 0;
- }
-+
-+#if defined(CONFIG_KBD_DEV_FILE)
-+static int kbd_open(struct inode *inode, struct file *file)
-+{
-+ kdev_t dev = inode->i_rdev;
-+
-+ return 0;
-+}
-+
-+
-+static int kbd_release(struct inode *inode, struct file *file)
-+{
-+ kbd_fasync(-1, file, 0);
-+ return 0;
-+}
-+
-+static int kbd_fasync(int fd, struct file *filp, int on)
-+{
-+ int retval;
-+
-+ retval = fasync_helper(fd, filp, on, &fasync_kbd);
-+ if (retval < 0)
-+ return retval;
-+ return 0;
-+}
-+
-+static ssize_t kbd_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
-+{
-+// printk("kbd read\n");
-+ return 0;
-+}
-+
-+static ssize_t kbd_write(struct file *file, const char *buffer, size_t count, loff_t *ppos)
-+{
-+ char tmp[50];
-+ int len;
-+ int kbd_scancode,kbd_down;
-+
-+ len=49;
-+
-+ if(len>count) len=count;
-+ copy_from_user(tmp,buffer,len);
-+ tmp[len]='\0';
-+
-+ if (sscanf(tmp,"%d %d",&kbd_scancode, &kbd_down) == 2) {
-+// printk("kbd write %02x %02x\n",kbd_scancode,kbd_down);
-+ handle_scancode(kbd_scancode,kbd_down);
-+ }
-+
-+// printk("kbd write\n");
-+ return count;
-+}
-+#endif
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P08-rtc-mremap-mremap2nd-fix_041213.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P08-rtc-mremap-mremap2nd-fix_041213.patch
deleted file mode 100644
index fea565a04a..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P08-rtc-mremap-mremap2nd-fix_041213.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-diff -Nur c3000_pre/linux/arch/cris/drivers/ds1302.c c3000_test/linux/arch/cris/drivers/ds1302.c
---- c3000_pre/linux/arch/cris/drivers/ds1302.c 2004-08-21 09:48:08.000000000 +0900
-+++ c3000_test/linux/arch/cris/drivers/ds1302.c 2004-12-13 23:30:00.000000000 +0900
-@@ -315,6 +315,7 @@
- {
- struct rtc_time rtc_tm;
-
-+ memset(&rtc_tm, 0, sizeof (struct rtc_time));
- get_rtc_time(&rtc_tm);
- if (copy_to_user((struct rtc_time*)arg, &rtc_tm, sizeof(struct rtc_time)))
- return -EFAULT;
-diff -Nur c3000_pre/linux/arch/m68k/bvme6000/rtc.c c3000_test/linux/arch/m68k/bvme6000/rtc.c
---- c3000_pre/linux/arch/m68k/bvme6000/rtc.c 2004-08-21 09:48:10.000000000 +0900
-+++ c3000_test/linux/arch/m68k/bvme6000/rtc.c 2004-12-13 23:30:00.000000000 +0900
-@@ -54,6 +54,7 @@
- /* Ensure clock and real-time-mode-register are accessible */
- msr = rtc->msr & 0xc0;
- rtc->msr = 0x40;
-+ memset(&wtime, 0, sizeof(struct rtc_time));
- do {
- wtime.tm_sec = BCD2BIN(rtc->bcd_sec);
- wtime.tm_min = BCD2BIN(rtc->bcd_min);
-diff -Nur c3000_pre/linux/arch/m68k/mvme16x/rtc.c c3000_test/linux/arch/m68k/mvme16x/rtc.c
---- c3000_pre/linux/arch/m68k/mvme16x/rtc.c 2004-08-21 09:48:11.000000000 +0900
-+++ c3000_test/linux/arch/m68k/mvme16x/rtc.c 2004-12-13 23:30:00.000000000 +0900
-@@ -52,6 +52,7 @@
- cli();
- /* Ensure clock and real-time-mode-register are accessible */
- rtc->ctrl = RTC_READ;
-+ memset(&wtime, 0, sizeof(struct rtc_time));
- wtime.tm_sec = BCD2BIN(rtc->bcd_sec);
- wtime.tm_min = BCD2BIN(rtc->bcd_min);
- wtime.tm_hour = BCD2BIN(rtc->bcd_hr);
-diff -Nur c3000_pre/linux/drivers/char/efirtc.c c3000_test/linux/drivers/char/efirtc.c
---- c3000_pre/linux/drivers/char/efirtc.c 2004-08-21 09:48:25.000000000 +0900
-+++ c3000_test/linux/drivers/char/efirtc.c 2004-12-13 23:30:00.000000000 +0900
-@@ -118,6 +118,7 @@
- static void
- convert_from_efi_time(efi_time_t *eft, struct rtc_time *wtime)
- {
-+ memset(wtime, 0, sizeof(struct rtc_time));
- wtime->tm_sec = eft->second;
- wtime->tm_min = eft->minute;
- wtime->tm_hour = eft->hour;
-diff -Nur c3000_pre/linux/drivers/char/rtc.c c3000_test/linux/drivers/char/rtc.c
---- c3000_pre/linux/drivers/char/rtc.c 2004-08-21 09:48:25.000000000 +0900
-+++ c3000_test/linux/drivers/char/rtc.c 2004-12-13 23:30:00.000000000 +0900
-@@ -375,7 +375,7 @@
- * means "don't care" or "match all". Only the tm_hour,
- * tm_min, and tm_sec values are filled in.
- */
--
-+ memset(&wtime, 0, sizeof(struct rtc_time));
- get_rtc_alm_time(&wtime);
- break;
- }
-@@ -423,6 +423,7 @@
- }
- case RTC_RD_TIME: /* Read the time/date from RTC */
- {
-+ memset(&wtime, 0, sizeof(struct rtc_time));
- get_rtc_time(&wtime);
- break;
- }
-diff -Nur c3000_pre/linux/drivers/macintosh/rtc.c c3000_test/linux/drivers/macintosh/rtc.c
---- c3000_pre/linux/drivers/macintosh/rtc.c 2004-08-21 09:48:35.000000000 +0900
-+++ c3000_test/linux/drivers/macintosh/rtc.c 2004-12-13 23:30:00.000000000 +0900
-@@ -64,6 +64,7 @@
- case RTC_RD_TIME:
- if (ppc_md.get_rtc_time)
- {
-+ memset(&rtc_tm, 0, sizeof(struct rtc_time));
- get_rtc_time(&rtc_tm);
-
- if (copy_to_user((struct rtc_time*)arg, &rtc_tm, sizeof(struct rtc_time)))
-diff -Nur c3000_pre/linux/drivers/sbus/char/rtc.c c3000_test/linux/drivers/sbus/char/rtc.c
---- c3000_pre/linux/drivers/sbus/char/rtc.c 2004-08-21 09:48:39.000000000 +0900
-+++ c3000_test/linux/drivers/sbus/char/rtc.c 2004-12-13 23:30:00.000000000 +0900
-@@ -89,6 +89,7 @@
- switch (cmd)
- {
- case RTCGET:
-+ memset(&rtc_tm, 0, sizeof(struct rtc_time));
- get_rtc_time(&rtc_tm);
-
- if (copy_to_user((struct rtc_time*)arg, &rtc_tm, sizeof(struct rtc_time)))
-diff -Nur c3000_pre/linux/mm/mmap.c c3000_test/linux/mm/mmap.c
---- c3000_pre/linux/mm/mmap.c 2004-08-21 09:49:15.000000000 +0900
-+++ c3000_test/linux/mm/mmap.c 2004-12-13 23:27:31.000000000 +0900
-@@ -1045,6 +1045,9 @@
- if (!len)
- return addr;
-
-+ if ((addr + len) > TASK_SIZE || (addr + len) < addr)
-+ return -EINVAL;
-+
- /*
- * mlock MCL_FUTURE?
- */
-diff -Nur c3000_pre/linux/mm/mremap.c c3000_test/linux/mm/mremap.c
---- c3000_pre/linux/mm/mremap.c 2004-08-21 09:49:15.000000000 +0900
-+++ c3000_test/linux/mm/mremap.c 2004-12-13 23:30:18.000000000 +0900
-@@ -242,6 +242,13 @@
-
- if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len)
- goto out;
-+ /*
-+ * Allow new_len == 0 only if new_addr == addr
-+ * to preserve truncation in place (that was working
-+ * safe and some app may depend on it).
-+ */
-+ if (unlikely(!new_len && new_addr != addr))
-+ goto out;
-
- /* Check if the location we're moving into overlaps the
- * old location at all, and fail if it does.
-@@ -252,16 +259,20 @@
- if ((addr <= new_addr) && (addr+old_len) > new_addr)
- goto out;
-
-- do_munmap(current->mm, new_addr, new_len);
-+ ret = do_munmap(current->mm, new_addr, new_len);
-+ if (ret && new_len)
-+ goto out;
- }
-
- /*
- * Always allow a shrinking remap: that just unmaps
- * the unnecessary pages..
- */
-- ret = addr;
- if (old_len >= new_len) {
-- do_munmap(current->mm, addr+new_len, old_len - new_len);
-+ ret = do_munmap(current->mm, addr+new_len, old_len - new_len);
-+ if (ret && old_len != new_len)
-+ goto out;
-+ ret = addr;
- if (!(flags & MREMAP_FIXED) || (new_addr == addr))
- goto out;
- }
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P09-ext3-isofs-fix_041216.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P09-ext3-isofs-fix_041216.patch
deleted file mode 100644
index 42acf857c6..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P09-ext3-isofs-fix_041216.patch
+++ /dev/null
@@ -1,359 +0,0 @@
-diff -Nur c3000_pre/linux/drivers/char/drm/r128_state.c c3000_work/linux/drivers/char/drm/r128_state.c
---- c3000_pre/linux/drivers/char/drm/r128_state.c 2004-08-21 09:48:33.000000000 +0900
-+++ c3000_work/linux/drivers/char/drm/r128_state.c 2004-12-16 21:11:04.000000000 +0900
-@@ -23,8 +23,22 @@
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * RED HAT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+ * DEALINGS IN THE SOFTWARE.
-+ *
-+ * THIS SOFTWARE IS NOT INTENDED FOR USE IN SAFETY CRITICAL SYSTEMS
-+ *
- * Authors:
- * Gareth Hughes <gareth@valinux.com>
-+ *
-+ * Memory allocation size checks added 14/01/2003, Alan Cox <alan@redhat.com>
-+ * Memory allocation size checks enhanced 16/02/2004, Thomas Biege <thomas@suse.de>
-+ *
- */
-
- #include "r128.h"
-@@ -902,6 +916,9 @@
- DRM_DEBUG( "%s\n", __FUNCTION__ );
-
- count = depth->n;
-+
-+ if( count > 4096 || count <= 0)
-+ return -EMSGSIZE;
- if ( copy_from_user( &x, depth->x, sizeof(x) ) ) {
- return -EFAULT;
- }
-@@ -996,6 +1013,9 @@
-
- count = depth->n;
-
-+ if( count > 4096 || count <= 0)
-+ return -EMSGSIZE;
-+
- x = kmalloc( count * sizeof(*x), GFP_KERNEL );
- if ( x == NULL ) {
- return -ENOMEM;
-@@ -1110,6 +1130,9 @@
- DRM_DEBUG( "%s\n", __FUNCTION__ );
-
- count = depth->n;
-+
-+ if ( count > 4096 || count <= 0)
-+ return -EMSGSIZE;
- if ( copy_from_user( &x, depth->x, sizeof(x) ) ) {
- return -EFAULT;
- }
-@@ -1152,9 +1175,14 @@
- DRM_DEBUG( "%s\n", __FUNCTION__ );
-
- count = depth->n;
-+ if ( count > 4096 || count <= 0)
-+ return -EMSGSIZE;
- if ( count > dev_priv->depth_pitch ) {
- count = dev_priv->depth_pitch;
- }
-+ if( count * sizeof(int) <= 0 || count * sizeof(*x) <= 0 || count * sizeof(*y) <= 0)
-+ return -EMSGSIZE;
-+
-
- x = kmalloc( count * sizeof(*x), GFP_KERNEL );
- if ( x == NULL ) {
-diff -Nur c3000_pre/linux/drivers/char/drm-4.0/r128_state.c c3000_work/linux/drivers/char/drm-4.0/r128_state.c
---- c3000_pre/linux/drivers/char/drm-4.0/r128_state.c 2004-08-21 09:48:33.000000000 +0900
-+++ c3000_work/linux/drivers/char/drm-4.0/r128_state.c 2004-12-16 21:11:04.000000000 +0900
-@@ -26,6 +26,8 @@
- * Authors:
- * Gareth Hughes <gareth@valinux.com>
- *
-+ * Memory allocation size checks added 16/02/2004, Thomas Biege <thomas@suse.de>
-+ *
- */
-
- #define __NO_VERSION__
-@@ -938,6 +940,9 @@
- }
-
- count = depth->n;
-+
-+ if( count > 4096 || count <= 0)
-+ return -EMSGSIZE;
- if ( copy_from_user( &x, depth->x, sizeof(x) ) ) {
- return -EFAULT;
- }
-@@ -1047,6 +1052,9 @@
- }
-
- count = depth->n;
-+ if( count > 4096 || count <= 0 || count * sizeof(*x) <= 0 ||
-+ count * sizeof(*y) <= 0)
-+ return -EMSGSIZE;
-
- x = kmalloc( count * sizeof(*x), 0 );
- if ( x == NULL ) {
-@@ -1178,6 +1186,9 @@
- }
-
- count = depth->n;
-+
-+ if ( count > 4096 || count <= 0)
-+ return -EMSGSIZE;
- if ( copy_from_user( &x, depth->x, sizeof(x) ) ) {
- return -EFAULT;
- }
-@@ -1235,9 +1246,13 @@
- }
-
- count = depth->n;
-+ if ( count > 4096 || count <= 0)
-+ return -EMSGSIZE;
- if ( count > dev_priv->depth_pitch ) {
- count = dev_priv->depth_pitch;
- }
-+ if( count * sizeof(int) <= 0 || count * sizeof(*x) <= 0 || count * sizeof(*y) <= 0)
-+ return -EMSGSIZE;
-
- x = kmalloc( count * sizeof(*x), 0 );
- if ( x == NULL ) {
-diff -Nur c3000_pre/linux/drivers/sound/sb_audio.c c3000_work/linux/drivers/sound/sb_audio.c
---- c3000_pre/linux/drivers/sound/sb_audio.c 2004-08-21 09:48:54.000000000 +0900
-+++ c3000_work/linux/drivers/sound/sb_audio.c 2004-12-16 21:11:04.000000000 +0900
-@@ -879,7 +879,7 @@
- c -= locallen; p += locallen;
- }
- /* used = ( samples * 16 bits size ) */
-- *used = len << 1;
-+ *used = (max_in > (max_out << 1)) ? (max_out << 1) : max_in;
- /* returned = ( samples * 8 bits size ) */
- *returned = len;
- }
-diff -Nur c3000_pre/linux/fs/isofs/dir.c c3000_work/linux/fs/isofs/dir.c
---- c3000_pre/linux/fs/isofs/dir.c 2004-08-21 09:48:59.000000000 +0900
-+++ c3000_work/linux/fs/isofs/dir.c 2004-12-16 21:11:04.000000000 +0900
-@@ -63,7 +63,8 @@
- break;
-
- /* Convert remaining ';' to '.' */
-- if (c == ';')
-+ /* Also '/' to '.' (broken Acorn-generated ISO9660 images) */
-+ if (c == ';' || c == '/')
- c = '.';
-
- new[i] = c;
-diff -Nur c3000_pre/linux/fs/jbd/journal.c c3000_work/linux/fs/jbd/journal.c
---- c3000_pre/linux/fs/jbd/journal.c 2004-08-21 09:48:59.000000000 +0900
-+++ c3000_work/linux/fs/jbd/journal.c 2004-12-16 21:11:04.000000000 +0900
-@@ -671,6 +671,7 @@
-
- bh = getblk(journal->j_dev, blocknr, journal->j_blocksize);
- lock_buffer(bh);
-+ memset(bh->b_data, 0, journal->j_blocksize);
- BUFFER_TRACE(bh, "return this buffer");
- return journal_add_journal_head(bh);
- }
-diff -Nur c3000_pre/linux/fs/ncpfs/dir.c c3000_work/linux/fs/ncpfs/dir.c
---- c3000_pre/linux/fs/ncpfs/dir.c 2004-08-21 09:49:00.000000000 +0900
-+++ c3000_work/linux/fs/ncpfs/dir.c 2004-12-16 21:11:04.000000000 +0900
-@@ -266,8 +266,8 @@
- struct ncp_server *server;
- struct inode *dir = dentry->d_parent->d_inode;
- struct ncp_entry_info finfo;
-- int res, val = 0, len = dentry->d_name.len + 1;
-- __u8 __name[len];
-+ int res, val = 0, len;
-+ __u8 __name[NCP_MAXPATHLEN + 1];
-
- if (!dentry->d_inode || !dir)
- goto finished;
-@@ -291,14 +291,15 @@
- dentry->d_parent->d_name.name, dentry->d_name.name,
- NCP_GET_AGE(dentry));
-
-+ len = sizeof(__name);
- if (ncp_is_server_root(dir)) {
- res = ncp_io2vol(server, __name, &len, dentry->d_name.name,
-- len-1, 1);
-+ dentry->d_name.len, 1);
- if (!res)
- res = ncp_lookup_volume(server, __name, &(finfo.i));
- } else {
- res = ncp_io2vol(server, __name, &len, dentry->d_name.name,
-- len-1, !ncp_preserve_case(dir));
-+ dentry->d_name.len, !ncp_preserve_case(dir));
- if (!res)
- res = ncp_obtain_info(server, dir, __name, &(finfo.i));
- }
-@@ -548,9 +549,9 @@
- int valid = 0;
- int hashed = 0;
- ino_t ino = 0;
-- __u8 __name[256];
-+ __u8 __name[NCP_MAXPATHLEN + 1];
-
-- qname.len = 256;
-+ qname.len = sizeof(__name);
- if (ncp_vol2io(NCP_SERVER(inode), __name, &qname.len,
- entry->i.entryName, entry->i.nameLen,
- !ncp_preserve_entry_case(inode, entry->i.NSCreator)))
-@@ -705,16 +706,19 @@
- {
- struct ncp_server* server = NCP_SBP(sb);
- struct nw_info_struct i;
-- int result, len = strlen(server->m.mounted_vol) + 1;
-- __u8 __name[len];
-+ int result;
-
- if (ncp_single_volume(server)) {
-+ int len;
- struct dentry* dent;
-+ __u8 __name[NCP_MAXPATHLEN + 1];
-
-- result = -ENOENT;
-- if (ncp_io2vol(server, __name, &len, server->m.mounted_vol,
-- len-1, 1))
-+ len = sizeof(__name);
-+ result = ncp_io2vol(server, __name, &len, server->m.mounted_vol,
-+ strlen(server->m.mounted_vol), 1);
-+ if (result)
- goto out;
-+ result = -ENOENT;
- if (ncp_lookup_volume(server, __name, &i)) {
- PPRINTK("ncp_conn_logged_in: %s not found\n",
- server->m.mounted_vol);
-@@ -745,8 +749,8 @@
- struct ncp_server *server = NCP_SERVER(dir);
- struct inode *inode = NULL;
- struct ncp_entry_info finfo;
-- int error, res, len = dentry->d_name.len + 1;
-- __u8 __name[len];
-+ int error, res, len;
-+ __u8 __name[NCP_MAXPATHLEN + 1];
-
- error = -EIO;
- if (!ncp_conn_valid(server))
-@@ -755,14 +759,15 @@
- PPRINTK("ncp_lookup: server lookup for %s/%s\n",
- dentry->d_parent->d_name.name, dentry->d_name.name);
-
-+ len = sizeof(__name);
- if (ncp_is_server_root(dir)) {
- res = ncp_io2vol(server, __name, &len, dentry->d_name.name,
-- len-1, 1);
-+ dentry->d_name.len, 1);
- if (!res)
- res = ncp_lookup_volume(server, __name, &(finfo.i));
- } else {
- res = ncp_io2vol(server, __name, &len, dentry->d_name.name,
-- len-1, !ncp_preserve_case(dir));
-+ dentry->d_name.len, !ncp_preserve_case(dir));
- if (!res)
- res = ncp_obtain_info(server, dir, __name, &(finfo.i));
- }
-@@ -825,9 +830,9 @@
- {
- struct ncp_server *server = NCP_SERVER(dir);
- struct ncp_entry_info finfo;
-- int error, result, len = dentry->d_name.len + 1;
-+ int error, result, len;
- int opmode;
-- __u8 __name[len];
-+ __u8 __name[NCP_MAXPATHLEN + 1];
-
- PPRINTK("ncp_create_new: creating %s/%s, mode=%x\n",
- dentry->d_parent->d_name.name, dentry->d_name.name, mode);
-@@ -836,8 +841,9 @@
- goto out;
-
- ncp_age_dentry(server, dentry);
-+ len = sizeof(__name);
- error = ncp_io2vol(server, __name, &len, dentry->d_name.name,
-- len-1, !ncp_preserve_case(dir));
-+ dentry->d_name.len, !ncp_preserve_case(dir));
- if (error)
- goto out;
-
-@@ -880,8 +886,8 @@
- {
- struct ncp_entry_info finfo;
- struct ncp_server *server = NCP_SERVER(dir);
-- int error, len = dentry->d_name.len + 1;
-- __u8 __name[len];
-+ int error, len;
-+ __u8 __name[NCP_MAXPATHLEN + 1];
-
- DPRINTK("ncp_mkdir: making %s/%s\n",
- dentry->d_parent->d_name.name, dentry->d_name.name);
-@@ -890,8 +896,9 @@
- goto out;
-
- ncp_age_dentry(server, dentry);
-+ len = sizeof(__name);
- error = ncp_io2vol(server, __name, &len, dentry->d_name.name,
-- len-1, !ncp_preserve_case(dir));
-+ dentry->d_name.len, !ncp_preserve_case(dir));
- if (error)
- goto out;
-
-@@ -909,8 +916,8 @@
- static int ncp_rmdir(struct inode *dir, struct dentry *dentry)
- {
- struct ncp_server *server = NCP_SERVER(dir);
-- int error, result, len = dentry->d_name.len + 1;
-- __u8 __name[len];
-+ int error, result, len;
-+ __u8 __name[NCP_MAXPATHLEN + 1];
-
- DPRINTK("ncp_rmdir: removing %s/%s\n",
- dentry->d_parent->d_name.name, dentry->d_name.name);
-@@ -923,8 +930,9 @@
- if (!d_unhashed(dentry))
- goto out;
-
-+ len = sizeof(__name);
- error = ncp_io2vol(server, __name, &len, dentry->d_name.name,
-- len-1, !ncp_preserve_case(dir));
-+ dentry->d_name.len, !ncp_preserve_case(dir));
- if (error)
- goto out;
-
-@@ -1022,9 +1030,8 @@
- {
- struct ncp_server *server = NCP_SERVER(old_dir);
- int error;
-- int old_len = old_dentry->d_name.len + 1;
-- int new_len = new_dentry->d_name.len + 1;
-- __u8 __old_name[old_len], __new_name[new_len];
-+ int old_len, new_len;
-+ __u8 __old_name[NCP_MAXPATHLEN + 1], __new_name[NCP_MAXPATHLEN + 1];
-
- DPRINTK("ncp_rename: %s/%s to %s/%s\n",
- old_dentry->d_parent->d_name.name, old_dentry->d_name.name,
-@@ -1037,14 +1044,16 @@
- ncp_age_dentry(server, old_dentry);
- ncp_age_dentry(server, new_dentry);
-
-+ old_len = sizeof(__old_name);
- error = ncp_io2vol(server, __old_name, &old_len,
-- old_dentry->d_name.name, old_len-1,
-+ old_dentry->d_name.name, old_dentry->d_name.len,
- !ncp_preserve_case(old_dir));
- if (error)
- goto out;
-
-+ new_len = sizeof(__new_name);
- error = ncp_io2vol(server, __new_name, &new_len,
-- new_dentry->d_name.name, new_len-1,
-+ new_dentry->d_name.name, new_dentry->d_name.len,
- !ncp_preserve_case(new_dir));
- if (error)
- goto out;
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P10-ntfs-fix_041216.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P10-ntfs-fix_041216.patch
deleted file mode 100644
index 9c3601aeda..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P10-ntfs-fix_041216.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -Nur c3000_pre/linux/fs/ntfs/attrib.c c3000_work/linux/fs/ntfs/attrib.c
---- c3000_pre/linux/fs/ntfs/attrib.c 2004-08-21 09:49:00.000000000 +0900
-+++ c3000_work/linux/fs/ntfs/attrib.c 2004-12-16 22:58:06.000000000 +0900
-@@ -1223,6 +1223,21 @@
- *
- * Return 0 on success or -errno on error.
- */
-+/* ##koko */
-+int __cmpdi2( const s64 arg1, const s64 arg2 )
-+{
-+ u32 low1, low2;
-+ s32 hi1, hi2;
-+ hi1 = (s32)( arg1>>32 ) & 0xFFFFFFFF;
-+ hi2 = (s32)( arg2>>32 ) & 0xFFFFFFFF;
-+ if( hi1<hi2 ) return( -1 );
-+ else if( hi1>hi2 ) return( 1 );
-+ low1 = (u32)arg1 & 0xFFFFFFFF;
-+ low2 = (u32)arg2 & 0xFFFFFFFF;
-+ if( low1<low2 ) return( -1 );
-+ else if( low1>low2 ) return( 1 );
-+ return( 0 );
-+}
- int load_attribute_list(ntfs_volume *vol, run_list *run_list, u8 *al,
- const s64 size, const s64 initialized_size)
- {
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P11-bluetooth-mh18_041216.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P11-bluetooth-mh18_041216.patch
deleted file mode 100644
index 0a2b7fbde4..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P11-bluetooth-mh18_041216.patch
+++ /dev/null
@@ -1,16593 +0,0 @@
-diff -Nur c3000_pre/linux/CREDITS c3000_work/linux/CREDITS
---- c3000_pre/linux/CREDITS 2004-08-21 09:48:05.000000000 +0900
-+++ c3000_work/linux/CREDITS 2004-12-16 23:01:14.000000000 +0900
-@@ -1344,7 +1344,11 @@
- N: Marcel Holtmann
- E: marcel@holtmann.org
- W: http://www.holtmann.org
--D: Author of the Linux Bluetooth Subsystem PC Card drivers
-+D: Maintainer of the Linux Bluetooth Subsystem
-+D: Author and maintainer of the various Bluetooth HCI drivers
-+D: Author and maintainer of the CAPI message transport protocol driver
-+D: Author and maintainer of the Bluetooth HID protocol driver
-+D: Various other Bluetooth related patches, cleanups and fixes
- S: Germany
-
- N: Rob W. W. Hooft
-@@ -2592,6 +2596,7 @@
- N: Aristeu Sergio Rozanski Filho
- E: aris@conectiva.com.br
- D: Support for EtherExpress 10 ISA (i82595) in eepro driver
-+D: User level driver support for input
- S: Conectiva S.A.
- S: R. Tocantins, 89 - Cristo Rei
- S: 80050-430 - Curitiba - Paraná
-diff -Nur c3000_pre/linux/Documentation/Configure.help c3000_work/linux/Documentation/Configure.help
---- c3000_pre/linux/Documentation/Configure.help 2004-08-21 09:48:06.000000000 +0900
-+++ c3000_work/linux/Documentation/Configure.help 2004-12-16 23:01:14.000000000 +0900
-@@ -12238,6 +12238,12 @@
-
- If unsure, say N.
-
-+Hotplug firmware loading support (EXPERIMENTAL)
-+CONFIG_FW_LOADER
-+ This option is provided for the case where no in-kernel-tree modules require
-+ hotplug firmware loading support, but a module built outside the kernel tree
-+ does.
-+
- Use PCI shared memory for NIC registers
- CONFIG_TULIP_MMIO
- Use PCI shared memory for the NIC registers, rather than going through
-@@ -14373,6 +14379,15 @@
- accessible under char device 13:64+ - /dev/input/eventX in a generic
- way. This is the future ...
-
-+CONFIG_INPUT_UINPUT
-+ Say Y here if you want to support user level drivers for input
-+ subsystem accessible under char device 10:223 - /dev/input/uinput.
-+
-+ This driver is also available as a module ( = code which can be
-+ inserted in and removed from the running kernel whenever you want).
-+ The module will be called uinput.o. If you want to compile it as a
-+ module, say M here and read <file:Documentation/modules.txt>.
-+
- USB Scanner support
- CONFIG_USB_SCANNER
- Say Y here if you want to connect a USB scanner to your computer's
-@@ -21868,19 +21883,21 @@
-
- Linux Bluetooth subsystem consist of several layers:
- BlueZ Core (HCI device and connection manager, scheduler)
-- HCI Device drivers (interface to the hardware)
-- L2CAP Module (L2CAP protocol)
-- SCO Module (SCO links)
-+ HCI Device drivers (Interface to the hardware)
-+ SCO Module (SCO audio links)
-+ L2CAP Module (Logical Link Control and Adaptation Protocol)
-+ RFCOMM Module (RFCOMM Protocol)
-+ BNEP Module (Bluetooth Network Encapsulation Protocol)
-+ CMTP Module (CAPI Message Transport Protocol)
-+ HIDP Module (Human Interface Device Protocol)
-
-- Say Y here to enable Linux Bluetooth support and to build BlueZ Core
-- layer.
-+ Say Y here to compile Bluetooth support into the kernel or say M to
-+ compile it as module (bluez.o).
-
- To use Linux Bluetooth subsystem, you will need several user-space
- utilities like hciconfig and hcid. These utilities and updates to
- Bluetooth kernel modules are provided in the BlueZ package.
-- For more information, see <http://bluez.sourceforge.net/>.
--
-- If you want to compile BlueZ Core as module (bluez.o) say M here.
-+ For more information, see <http://www.bluez.org/>.
-
- L2CAP protocol support
- CONFIG_BLUEZ_L2CAP
-@@ -21893,25 +21910,60 @@
-
- SCO links support
- CONFIG_BLUEZ_SCO
-- SCO link provides voice transport over Bluetooth. SCO support is
-+ SCO link provides voice transport over Bluetooth. SCO support is
- required for voice applications like Headset and Audio.
-
- Say Y here to compile SCO support into the kernel or say M to
- compile it as module (sco.o).
-
-+RFCOMM protocol support
-+CONFIG_BLUEZ_RFCOMM
-+ RFCOMM provides connection oriented stream transport. RFCOMM
-+ support is required for Dialup Networking, OBEX and other Bluetooth
-+ applications.
-+
-+ Say Y here to compile RFCOMM support into the kernel or say M to
-+ compile it as module (rfcomm.o).
-+
-+RFCOMM TTY emulation support
-+CONFIG_BLUEZ_RFCOMM_TTY
-+ This option enables TTY emulation support for RFCOMM channels.
-+
- BNEP protocol support
- CONFIG_BLUEZ_BNEP
- BNEP (Bluetooth Network Encapsulation Protocol) is Ethernet
-- emulation layer on top of Bluetooth. BNEP is required for Bluetooth
-- PAN (Personal Area Network).
--
-- To use BNEP, you will need user-space utilities provided in the
-- BlueZ-PAN package.
-- For more information, see <http://bluez.sourceforge.net>.
-+ emulation layer on top of Bluetooth. BNEP is required for
-+ Bluetooth PAN (Personal Area Network).
-
- Say Y here to compile BNEP support into the kernel or say M to
- compile it as module (bnep.o).
-
-+BNEP multicast filter support
-+CONFIG_BLUEZ_BNEP_MC_FILTER
-+ This option enables the multicast filter support for BNEP.
-+
-+BNEP protocol filter support
-+CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ This option enables the protocol filter support for BNEP.
-+
-+CMTP protocol support
-+CONFIG_BLUEZ_CMTP
-+ CMTP (CAPI Message Transport Protocol) is a transport layer
-+ for CAPI messages. CMTP is required for the Bluetooth Common
-+ ISDN Access Profile.
-+
-+ Say Y here to compile CMTP support into the kernel or say M to
-+ compile it as module (cmtp.o).
-+
-+HIDP protocol support
-+CONFIG_BLUEZ_HIDP
-+ HIDP (Human Interface Device Protocol) is a transport layer
-+ for HID reports. HIDP is required for the Bluetooth Human
-+ Interface Device Profile.
-+
-+ Say Y here to compile HIDP support into the kernel or say M to
-+ compile it as module (hidp.o).
-+
- HCI UART driver
- CONFIG_BLUEZ_HCIUART
- Bluetooth HCI UART driver.
-@@ -21926,11 +21978,26 @@
- HCI UART (H4) protocol support
- CONFIG_BLUEZ_HCIUART_H4
- UART (H4) is serial protocol for communication between Bluetooth
-- device and host. This protocol is required for most UART based
-- Bluetooth device (including PCMCIA and CF).
-+ device and host. This protocol is required for most Bluetooth devices
-+ with UART interface, including PCMCIA and CF cards.
-
- Say Y here to compile support for HCI UART (H4) protocol.
-
-+HCI BCSP protocol support
-+CONFIG_BLUEZ_HCIUART_BCSP
-+ BCSP (BlueCore Serial Protocol) is serial protocol for communication
-+ between Bluetooth device and host. This protocol is required for non
-+ USB Bluetooth devices based on CSR BlueCore chip, including PCMCIA and
-+ CF cards.
-+
-+ Say Y here to compile support for HCI BCSP protocol.
-+
-+HCI BCSP transmit CRC with every BCSP packet
-+CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ If you say Y here, a 16-bit CRC checksum will be transmitted along with
-+ every BCSP (BlueCore Serial Protocol) packet sent to the Bluetooth chip.
-+ This increases reliability, but slightly reduces efficiency.
-+
- HCI USB driver
- CONFIG_BLUEZ_HCIUSB
- Bluetooth HCI USB driver.
-@@ -21940,14 +22007,15 @@
- Say Y here to compile support for Bluetooth USB devices into the
- kernel or say M to compile it as module (hci_usb.o).
-
--HCI USB zero packet support
--CONFIG_BLUEZ_USB_ZERO_PACKET
-- Support for USB zero packets.
-- This option is provided only as a work around for buggy Bluetooth USB
-- devices. Do _not_ enable it unless you know for sure that your device
-- requires zero packets.
-- Most people should say N here.
--
-+HCI USB SCO (voice) support
-+CONFIG_BLUEZ_HCIUSB_SCO
-+ This option enables the SCO support in the HCI USB driver. You need this
-+ to transmit voice data with your Bluetooth USB device. And your device
-+ must also support sending SCO data over the HCI layer, because some of
-+ them sends the SCO data to an internal PCM adapter.
-+
-+ Say Y here to compile support for HCI SCO data.
-+
- HCI VHCI Virtual HCI device driver
- CONFIG_BLUEZ_HCIVHCI
- Bluetooth Virtual HCI device driver.
-@@ -21956,6 +22024,16 @@
- Say Y here to compile support for virtual HCI devices into the
- kernel or say M to compile it as module (hci_vhci.o).
-
-+HCI BFUSB device driver
-+CONFIG_BLUEZ_HCIBFUSB
-+ Bluetooth HCI BlueFRITZ! USB driver.
-+ This driver provides support for Bluetooth USB devices with AVM
-+ interface:
-+ AVM BlueFRITZ! USB
-+
-+ Say Y here to compile support for HCI BFUSB devices into the
-+ kernel or say M to compile it as module (bfusb.o).
-+
- HCI DTL1 (PC Card) device driver
- CONFIG_BLUEZ_HCIDTL1
- Bluetooth HCI DTL1 (PC Card) driver.
-@@ -21975,9 +22053,6 @@
- 3Com Bluetooth Card (3CRWB6096)
- HP Bluetooth Card
-
-- The HCI BT3C driver uses external firmware loader program provided in
-- the BlueFW package. For more information, see <http://bluez.sf.net>.
--
- Say Y here to compile support for HCI BT3C devices into the
- kernel or say M to compile it as module (bt3c_cs.o).
-
-@@ -21992,6 +22067,20 @@
- Say Y here to compile support for HCI BlueCard devices into the
- kernel or say M to compile it as module (bluecard_cs.o).
-
-+HCI UART (PC Card) device driver
-+CONFIG_BLUEZ_HCIBTUART
-+ Bluetooth HCI UART (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ an UART interface:
-+ Xircom CreditCard Bluetooth Adapter
-+ Xircom RealPort2 Bluetooth Adapter
-+ Sphinx PICO Card
-+ H-Soft blue+Card
-+ Cyber-blue Compact Flash Card
-+
-+ Say Y here to compile support for HCI UART devices into the
-+ kernel or say M to compile it as module (btuart_cs.o).
-+
- # The following options are for Linux when running on the Hitachi
- # SuperH family of RISC microprocessors.
-
-diff -Nur c3000_pre/linux/Documentation/devices.txt c3000_work/linux/Documentation/devices.txt
---- c3000_pre/linux/Documentation/devices.txt 2004-08-21 09:48:06.000000000 +0900
-+++ c3000_work/linux/Documentation/devices.txt 2004-12-16 23:01:14.000000000 +0900
-@@ -419,6 +419,7 @@
- 220 = /dev/mptctl Message passing technology (MPT) control
- 221 = /dev/mvista/hssdsi Montavista PICMG hot swap system driver
- 222 = /dev/mvista/hasi Montavista PICMG high availability
-+ 223 = /dev/input/uinput User level driver support for input
- 240-255 Reserved for local use
-
- 11 char Raw keyboard device
-diff -Nur c3000_pre/linux/Documentation/firmware_class/README c3000_work/linux/Documentation/firmware_class/README
---- c3000_pre/linux/Documentation/firmware_class/README 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/Documentation/firmware_class/README 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,58 @@
-+
-+ request_firmware() hotplug interface:
-+ ------------------------------------
-+ Copyright (C) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+
-+ Why:
-+ ---
-+
-+ Today, the most extended way to use firmware in the Linux kernel is linking
-+ it statically in a header file. Which has political and technical issues:
-+
-+ 1) Some firmware is not legal to redistribute.
-+ 2) The firmware occupies memory permanently, even though it often is just
-+ used once.
-+ 3) Some people, like the Debian crowd, don't consider some firmware free
-+ enough and remove entire drivers (e.g.: keyspan).
-+
-+ about in-kernel persistence:
-+ ---------------------------
-+ Under some circumstances, as explained below, it would be interesting to keep
-+ firmware images in non-swappable kernel memory or even in the kernel image
-+ (probably within initramfs).
-+
-+ Note that this functionality has not been implemented.
-+
-+ - Why OPTIONAL in-kernel persistence may be a good idea sometimes:
-+
-+ - If the device that needs the firmware is needed to access the
-+ filesystem. When upon some error the device has to be reset and the
-+ firmware reloaded, it won't be possible to get it from userspace.
-+ e.g.:
-+ - A diskless client with a network card that needs firmware.
-+ - The filesystem is stored in a disk behind an scsi device
-+ that needs firmware.
-+ - Replacing buggy DSDT/SSDT ACPI tables on boot.
-+ Note: this would require the persistent objects to be included
-+ within the kernel image, probably within initramfs.
-+
-+ And the same device can be needed to access the filesystem or not depending
-+ on the setup, so I think that the choice on what firmware to make
-+ persistent should be left to userspace.
-+
-+ - Why register_firmware()+__init can be useful:
-+ - For boot devices needing firmware.
-+ - To make the transition easier:
-+ The firmware can be declared __init and register_firmware()
-+ called on module_init. Then the firmware is warranted to be
-+ there even if "firmware hotplug userspace" is not there yet or
-+ it doesn't yet provide the needed firmware.
-+ Once the firmware is widely available in userspace, it can be
-+ removed from the kernel. Or made optional (CONFIG_.*_FIRMWARE).
-+
-+ In either case, if firmware hotplug support is there, it can move the
-+ firmware out of kernel memory into the real filesystem for later
-+ usage.
-+
-+ Note: If persistence is implemented on top of initramfs,
-+ register_firmware() may not be appropriate.
-diff -Nur c3000_pre/linux/Documentation/firmware_class/firmware_sample_driver.c c3000_work/linux/Documentation/firmware_class/firmware_sample_driver.c
---- c3000_pre/linux/Documentation/firmware_class/firmware_sample_driver.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/Documentation/firmware_class/firmware_sample_driver.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,121 @@
-+/*
-+ * firmware_sample_driver.c -
-+ *
-+ * Copyright (c) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+ *
-+ * Sample code on how to use request_firmware() from drivers.
-+ *
-+ * Note that register_firmware() is currently useless.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/string.h>
-+
-+#include "linux/firmware.h"
-+
-+#define WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+char __init inkernel_firmware[] = "let's say that this is firmware\n";
-+#endif
-+
-+static char ghost_device[] = "ghost0";
-+
-+static void sample_firmware_load(char *firmware, int size)
-+{
-+ u8 buf[size+1];
-+ memcpy(buf, firmware, size);
-+ buf[size] = '\0';
-+ printk("firmware_sample_driver: firmware: %s\n", buf);
-+}
-+
-+static void sample_probe_default(void)
-+{
-+ /* uses the default method to get the firmware */
-+ const struct firmware *fw_entry;
-+ printk("firmware_sample_driver: a ghost device got inserted :)\n");
-+
-+ if(request_firmware(&fw_entry, "sample_driver_fw", ghost_device)!=0)
-+ {
-+ printk(KERN_ERR
-+ "firmware_sample_driver: Firmware not available\n");
-+ return;
-+ }
-+
-+ sample_firmware_load(fw_entry->data, fw_entry->size);
-+
-+ release_firmware(fw_entry);
-+
-+ /* finish setting up the device */
-+}
-+static void sample_probe_specific(void)
-+{
-+ /* Uses some specific hotplug support to get the firmware from
-+ * userspace directly into the hardware, or via some sysfs file */
-+
-+ /* NOTE: This currently doesn't work */
-+
-+ printk("firmware_sample_driver: a ghost device got inserted :)\n");
-+
-+ if(request_firmware(NULL, "sample_driver_fw", ghost_device)!=0)
-+ {
-+ printk(KERN_ERR
-+ "firmware_sample_driver: Firmware load failed\n");
-+ return;
-+ }
-+
-+ /* request_firmware blocks until userspace finished, so at
-+ * this point the firmware should be already in the device */
-+
-+ /* finish setting up the device */
-+}
-+static void sample_probe_async_cont(const struct firmware *fw, void *context)
-+{
-+ if(!fw){
-+ printk(KERN_ERR
-+ "firmware_sample_driver: firmware load failed\n");
-+ return;
-+ }
-+
-+ printk("firmware_sample_driver: device pointer \"%s\"\n",
-+ (char *)context);
-+ sample_firmware_load(fw->data, fw->size);
-+}
-+static void sample_probe_async(void)
-+{
-+ /* Let's say that I can't sleep */
-+ int error;
-+ error = request_firmware_nowait (THIS_MODULE,
-+ "sample_driver_fw", ghost_device,
-+ "my device pointer",
-+ sample_probe_async_cont);
-+ if(error){
-+ printk(KERN_ERR
-+ "firmware_sample_driver:"
-+ " request_firmware_nowait failed\n");
-+ }
-+}
-+
-+static int sample_init(void)
-+{
-+#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+ register_firmware("sample_driver_fw", inkernel_firmware,
-+ sizeof(inkernel_firmware));
-+#endif
-+ /* since there is no real hardware insertion I just call the
-+ * sample probe functions here */
-+ sample_probe_specific();
-+ sample_probe_default();
-+ sample_probe_async();
-+ return 0;
-+}
-+static void __exit sample_exit(void)
-+{
-+}
-+
-+module_init (sample_init);
-+module_exit (sample_exit);
-+
-+MODULE_LICENSE("GPL");
-diff -Nur c3000_pre/linux/Documentation/firmware_class/hotplug-script c3000_work/linux/Documentation/firmware_class/hotplug-script
---- c3000_pre/linux/Documentation/firmware_class/hotplug-script 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/Documentation/firmware_class/hotplug-script 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,16 @@
-+#!/bin/sh
-+
-+# Simple hotplug script sample:
-+#
-+# Both $DEVPATH and $FIRMWARE are already provided in the environment.
-+
-+HOTPLUG_FW_DIR=/usr/lib/hotplug/firmware/
-+
-+echo 1 > /sysfs/$DEVPATH/loading
-+cat $HOTPLUG_FW_DIR/$FIRMWARE > /sysfs/$DEVPATH/data
-+echo 0 > /sysfs/$DEVPATH/loading
-+
-+# To cancel the load in case of error:
-+#
-+# echo -1 > /sysfs/$DEVPATH/loading
-+#
-diff -Nur c3000_pre/linux/MAINTAINERS c3000_work/linux/MAINTAINERS
---- c3000_pre/linux/MAINTAINERS 2004-08-21 09:48:05.000000000 +0900
-+++ c3000_work/linux/MAINTAINERS 2004-12-16 23:01:14.000000000 +0900
-@@ -267,16 +267,88 @@
- L: linux-kernel@vger.kernel.org
- S: Maintained
-
--BLUETOOTH SUBSYSTEM (BlueZ)
-+BLUETOOTH SUBSYSTEM
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
- P: Maxim Krasnyansky
- M: maxk@qualcomm.com
-+L: bluez-devel@lists.sf.net
- W: http://bluez.sf.net
-+W: http://www.bluez.org
-+W: http://www.holtmann.org/linux/bluetooth/
- S: Maintained
-
--BLUETOOTH SUBSYSTEM (PC Card Drivers)
-+BLUETOOTH RFCOMM LAYER
- P: Marcel Holtmann
- M: marcel@holtmann.org
--W: http://www.holtmann.org/linux/bluetooth/
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH BNEP LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH CMTP LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HIDP LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI UART DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH HCI USB DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH HCI BCM203X DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BFUSB DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI DTL1 DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BLUECARD DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BT3C DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BTUART DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI VHCI DRIVER
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
- S: Maintained
-
- BTTV VIDEO4LINUX DRIVER
-diff -Nur c3000_pre/linux/arch/sparc64/kernel/ioctl32.c c3000_work/linux/arch/sparc64/kernel/ioctl32.c
---- c3000_pre/linux/arch/sparc64/kernel/ioctl32.c 2004-08-21 09:48:22.000000000 +0900
-+++ c3000_work/linux/arch/sparc64/kernel/ioctl32.c 2004-12-16 23:01:14.000000000 +0900
-@@ -95,6 +95,7 @@
-
- #include <net/bluetooth/bluetooth.h>
- #include <net/bluetooth/hci.h>
-+#include <net/bluetooth/rfcomm.h>
-
- #include <linux/usb.h>
- #include <linux/usbdevice_fs.h>
-@@ -4286,6 +4287,25 @@
- return sys_ioctl(fd, BLKGETSIZE64, arg);
- }
-
-+/* Bluetooth ioctls */
-+#define HCIUARTSETPROTO _IOW('U', 200, int)
-+#define HCIUARTGETPROTO _IOR('U', 201, int)
-+
-+#define BNEPCONNADD _IOW('B', 200, int)
-+#define BNEPCONNDEL _IOW('B', 201, int)
-+#define BNEPGETCONNLIST _IOR('B', 210, int)
-+#define BNEPGETCONNINFO _IOR('B', 211, int)
-+
-+#define CMTPCONNADD _IOW('C', 200, int)
-+#define CMTPCONNDEL _IOW('C', 201, int)
-+#define CMTPGETCONNLIST _IOR('C', 210, int)
-+#define CMTPGETCONNINFO _IOR('C', 211, int)
-+
-+#define HIDPCONNADD _IOW('H', 200, int)
-+#define HIDPCONNDEL _IOW('H', 201, int)
-+#define HIDPGETCONNLIST _IOR('H', 210, int)
-+#define HIDPGETCONNINFO _IOR('H', 211, int)
-+
- struct ioctl_trans {
- unsigned int cmd;
- unsigned int handler;
-@@ -4987,6 +5007,25 @@
- COMPATIBLE_IOCTL(HCISETACLMTU)
- COMPATIBLE_IOCTL(HCISETSCOMTU)
- COMPATIBLE_IOCTL(HCIINQUIRY)
-+COMPATIBLE_IOCTL(HCIUARTSETPROTO)
-+COMPATIBLE_IOCTL(HCIUARTGETPROTO)
-+COMPATIBLE_IOCTL(RFCOMMCREATEDEV)
-+COMPATIBLE_IOCTL(RFCOMMRELEASEDEV)
-+COMPATIBLE_IOCTL(RFCOMMGETDEVLIST)
-+COMPATIBLE_IOCTL(RFCOMMGETDEVINFO)
-+COMPATIBLE_IOCTL(RFCOMMSTEALDLC)
-+COMPATIBLE_IOCTL(BNEPCONNADD)
-+COMPATIBLE_IOCTL(BNEPCONNDEL)
-+COMPATIBLE_IOCTL(BNEPGETCONNLIST)
-+COMPATIBLE_IOCTL(BNEPGETCONNINFO)
-+COMPATIBLE_IOCTL(CMTPCONNADD)
-+COMPATIBLE_IOCTL(CMTPCONNDEL)
-+COMPATIBLE_IOCTL(CMTPGETCONNLIST)
-+COMPATIBLE_IOCTL(CMTPGETCONNINFO)
-+COMPATIBLE_IOCTL(HIDPCONNADD)
-+COMPATIBLE_IOCTL(HIDPCONNDEL)
-+COMPATIBLE_IOCTL(HIDPGETCONNLIST)
-+COMPATIBLE_IOCTL(HIDPGETCONNINFO)
- /* Misc. */
- COMPATIBLE_IOCTL(0x41545900) /* ATYIO_CLKR */
- COMPATIBLE_IOCTL(0x41545901) /* ATYIO_CLKW */
-diff -Nur c3000_pre/linux/drivers/bluetooth/Config.in c3000_work/linux/drivers/bluetooth/Config.in
---- c3000_pre/linux/drivers/bluetooth/Config.in 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/Config.in 2004-12-16 23:01:14.000000000 +0900
-@@ -1,22 +1,33 @@
-+#
-+# Bluetooth HCI device drivers configuration
-+#
-+
- mainmenu_option next_comment
- comment 'Bluetooth device drivers'
-
- dep_tristate 'HCI USB driver' CONFIG_BLUEZ_HCIUSB $CONFIG_BLUEZ $CONFIG_USB
- if [ "$CONFIG_BLUEZ_HCIUSB" != "n" ]; then
-- bool ' USB zero packet support' CONFIG_BLUEZ_USB_ZERO_PACKET
-+ bool ' SCO (voice) support' CONFIG_BLUEZ_HCIUSB_SCO
- fi
-
- dep_tristate 'HCI UART driver' CONFIG_BLUEZ_HCIUART $CONFIG_BLUEZ
- if [ "$CONFIG_BLUEZ_HCIUART" != "n" ]; then
- bool ' UART (H4) protocol support' CONFIG_BLUEZ_HCIUART_H4
-+ bool ' BCSP protocol support' CONFIG_BLUEZ_HCIUART_BCSP
-+ dep_bool ' Transmit CRC with every BCSP packet' CONFIG_BLUEZ_HCIUART_BCSP_TXCRC $CONFIG_BLUEZ_HCIUART_BCSP
- fi
-
-+dep_tristate 'HCI BlueFRITZ! USB driver' CONFIG_BLUEZ_HCIBFUSB $CONFIG_BLUEZ $CONFIG_USB
-+
- dep_tristate 'HCI DTL1 (PC Card) driver' CONFIG_BLUEZ_HCIDTL1 $CONFIG_PCMCIA $CONFIG_BLUEZ
-
- dep_tristate 'HCI BT3C (PC Card) driver' CONFIG_BLUEZ_HCIBT3C $CONFIG_PCMCIA $CONFIG_BLUEZ
-
- dep_tristate 'HCI BlueCard (PC Card) driver' CONFIG_BLUEZ_HCIBLUECARD $CONFIG_PCMCIA $CONFIG_BLUEZ
-
-+dep_tristate 'HCI UART (PC Card) driver' CONFIG_BLUEZ_HCIBTUART $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
- dep_tristate 'HCI VHCI (Virtual HCI device) driver' CONFIG_BLUEZ_HCIVHCI $CONFIG_BLUEZ
-
- endmenu
-+
-diff -Nur c3000_pre/linux/drivers/bluetooth/Makefile c3000_work/linux/drivers/bluetooth/Makefile
---- c3000_pre/linux/drivers/bluetooth/Makefile 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/Makefile 2004-12-16 23:01:14.000000000 +0900
-@@ -1,5 +1,5 @@
- #
--# Makefile for Bluetooth HCI device drivers.
-+# Makefile for the Linux Bluetooth HCI device drivers
- #
-
- O_TARGET := bluetooth.o
-@@ -9,13 +9,17 @@
- obj-$(CONFIG_BLUEZ_HCIUSB) += hci_usb.o
- obj-$(CONFIG_BLUEZ_HCIVHCI) += hci_vhci.o
-
--obj-$(CONFIG_BLUEZ_HCIUART) += hci_uart.o
--uart-y := hci_ldisc.o
--uart-$(CONFIG_BLUEZ_HCIUART_H4) += hci_h4.o
-+obj-$(CONFIG_BLUEZ_HCIUART) += hci_uart.o
-+uart-y := hci_ldisc.o
-+uart-$(CONFIG_BLUEZ_HCIUART_H4) += hci_h4.o
-+uart-$(CONFIG_BLUEZ_HCIUART_BCSP) += hci_bcsp.o
-+
-+obj-$(CONFIG_BLUEZ_HCIBFUSB) += bfusb.o
-
- obj-$(CONFIG_BLUEZ_HCIDTL1) += dtl1_cs.o
- obj-$(CONFIG_BLUEZ_HCIBT3C) += bt3c_cs.o
- obj-$(CONFIG_BLUEZ_HCIBLUECARD) += bluecard_cs.o
-+obj-$(CONFIG_BLUEZ_HCIBTUART) += btuart_cs.o
-
- include $(TOPDIR)/Rules.make
-
-diff -Nur c3000_pre/linux/drivers/bluetooth/Makefile.lib c3000_work/linux/drivers/bluetooth/Makefile.lib
---- c3000_pre/linux/drivers/bluetooth/Makefile.lib 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/Makefile.lib 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,2 @@
-+obj-$(CONFIG_BLUEZ_HCIBFUSB) += firmware_class.o
-+obj-$(CONFIG_BLUEZ_HCIBT3C) += firmware_class.o
-diff -Nur c3000_pre/linux/drivers/bluetooth/bfusb.c c3000_work/linux/drivers/bluetooth/bfusb.c
---- c3000_pre/linux/drivers/bluetooth/bfusb.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/bfusb.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,782 @@
-+/*
-+ *
-+ * AVM BlueFRITZ! USB driver
-+ *
-+ * Copyright (C) 2003 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/errno.h>
-+#include <linux/skbuff.h>
-+
-+#include <linux/firmware.h>
-+#include <linux/usb.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+#ifndef CONFIG_BLUEZ_HCIBFUSB_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.1"
-+
-+static struct usb_device_id bfusb_table[] = {
-+ /* AVM BlueFRITZ! USB */
-+ { USB_DEVICE(0x057c, 0x2200) },
-+
-+ { } /* Terminating entry */
-+};
-+
-+MODULE_DEVICE_TABLE(usb, bfusb_table);
-+
-+
-+#define BFUSB_MAX_BLOCK_SIZE 256
-+
-+#define BFUSB_BLOCK_TIMEOUT (HZ * 3)
-+
-+#define BFUSB_TX_PROCESS 1
-+#define BFUSB_TX_WAKEUP 2
-+
-+#define BFUSB_MAX_BULK_TX 1
-+#define BFUSB_MAX_BULK_RX 1
-+
-+struct bfusb {
-+ struct hci_dev hdev;
-+
-+ unsigned long state;
-+
-+ struct usb_device *udev;
-+
-+ unsigned int bulk_in_ep;
-+ unsigned int bulk_out_ep;
-+ unsigned int bulk_pkt_size;
-+
-+ rwlock_t lock;
-+
-+ struct sk_buff_head transmit_q;
-+
-+ struct sk_buff *reassembly;
-+
-+ atomic_t pending_tx;
-+ struct sk_buff_head pending_q;
-+ struct sk_buff_head completed_q;
-+};
-+
-+struct bfusb_scb {
-+ struct urb *urb;
-+};
-+
-+static void bfusb_tx_complete(struct urb *urb);
-+static void bfusb_rx_complete(struct urb *urb);
-+
-+static struct urb *bfusb_get_completed(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+ struct urb *urb = NULL;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ skb = skb_dequeue(&bfusb->completed_q);
-+ if (skb) {
-+ urb = ((struct bfusb_scb *) skb->cb)->urb;
-+ kfree_skb(skb);
-+ }
-+
-+ return urb;
-+}
-+
-+static inline void bfusb_unlink_urbs(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+ struct urb *urb;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ while ((skb = skb_dequeue(&bfusb->pending_q))) {
-+ urb = ((struct bfusb_scb *) skb->cb)->urb;
-+ usb_unlink_urb(urb);
-+ skb_queue_tail(&bfusb->completed_q, skb);
-+ }
-+
-+ while ((urb = bfusb_get_completed(bfusb)))
-+ usb_free_urb(urb);
-+}
-+
-+
-+static int bfusb_send_bulk(struct bfusb *bfusb, struct sk_buff *skb)
-+{
-+ struct bfusb_scb *scb = (void *) skb->cb;
-+ struct urb *urb = bfusb_get_completed(bfusb);
-+ int err, pipe;
-+
-+ BT_DBG("bfusb %p skb %p len %d", bfusb, skb, skb->len);
-+
-+ if (!urb && !(urb = usb_alloc_urb(0)))
-+ return -ENOMEM;
-+
-+ pipe = usb_sndbulkpipe(bfusb->udev, bfusb->bulk_out_ep);
-+
-+ FILL_BULK_URB(urb, bfusb->udev, pipe, skb->data, skb->len,
-+ bfusb_tx_complete, skb);
-+
-+ urb->transfer_flags = USB_QUEUE_BULK;
-+
-+ scb->urb = urb;
-+
-+ skb_queue_tail(&bfusb->pending_q, skb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk tx submit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ skb_unlink(skb);
-+ usb_free_urb(urb);
-+ } else
-+ atomic_inc(&bfusb->pending_tx);
-+
-+ return err;
-+}
-+
-+static void bfusb_tx_wakeup(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ if (test_and_set_bit(BFUSB_TX_PROCESS, &bfusb->state)) {
-+ set_bit(BFUSB_TX_WAKEUP, &bfusb->state);
-+ return;
-+ }
-+
-+ do {
-+ clear_bit(BFUSB_TX_WAKEUP, &bfusb->state);
-+
-+ while ((atomic_read(&bfusb->pending_tx) < BFUSB_MAX_BULK_TX) &&
-+ (skb = skb_dequeue(&bfusb->transmit_q))) {
-+ if (bfusb_send_bulk(bfusb, skb) < 0) {
-+ skb_queue_head(&bfusb->transmit_q, skb);
-+ break;
-+ }
-+ }
-+
-+ } while (test_bit(BFUSB_TX_WAKEUP, &bfusb->state));
-+
-+ clear_bit(BFUSB_TX_PROCESS, &bfusb->state);
-+}
-+
-+static void bfusb_tx_complete(struct urb *urb)
-+{
-+ struct sk_buff *skb = (struct sk_buff *) urb->context;
-+ struct bfusb *bfusb = (struct bfusb *) skb->dev;
-+
-+ BT_DBG("bfusb %p urb %p skb %p len %d", bfusb, urb, skb, skb->len);
-+
-+ atomic_dec(&bfusb->pending_tx);
-+
-+ if (!test_bit(HCI_RUNNING, &bfusb->hdev.flags))
-+ return;
-+
-+ if (!urb->status)
-+ bfusb->hdev.stat.byte_tx += skb->len;
-+ else
-+ bfusb->hdev.stat.err_tx++;
-+
-+ read_lock(&bfusb->lock);
-+
-+ skb_unlink(skb);
-+ skb_queue_tail(&bfusb->completed_q, skb);
-+
-+ bfusb_tx_wakeup(bfusb);
-+
-+ read_unlock(&bfusb->lock);
-+}
-+
-+
-+static int bfusb_rx_submit(struct bfusb *bfusb, struct urb *urb)
-+{
-+ struct bfusb_scb *scb;
-+ struct sk_buff *skb;
-+ int err, pipe, size = HCI_MAX_FRAME_SIZE + 32;
-+
-+ BT_DBG("bfusb %p urb %p", bfusb, urb);
-+
-+ if (!urb && !(urb = usb_alloc_urb(0)))
-+ return -ENOMEM;
-+
-+ if (!(skb = bluez_skb_alloc(size, GFP_ATOMIC))) {
-+ usb_free_urb(urb);
-+ return -ENOMEM;
-+ }
-+
-+ skb->dev = (void *) bfusb;
-+
-+ scb = (struct bfusb_scb *) skb->cb;
-+ scb->urb = urb;
-+
-+ pipe = usb_rcvbulkpipe(bfusb->udev, bfusb->bulk_in_ep);
-+
-+ FILL_BULK_URB(urb, bfusb->udev, pipe, skb->data, size,
-+ bfusb_rx_complete, skb);
-+
-+ urb->transfer_flags = USB_QUEUE_BULK;
-+
-+ skb_queue_tail(&bfusb->pending_q, skb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk rx submit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ skb_unlink(skb);
-+ kfree_skb(skb);
-+ usb_free_urb(urb);
-+ }
-+
-+ return err;
-+}
-+
-+static inline int bfusb_recv_block(struct bfusb *bfusb, int hdr, unsigned char *data, int len)
-+{
-+ BT_DBG("bfusb %p hdr 0x%02x data %p len %d", bfusb, hdr, data, len);
-+
-+ if (hdr & 0x10) {
-+ BT_ERR("%s error in block", bfusb->hdev.name);
-+ if (bfusb->reassembly)
-+ kfree_skb(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ return -EIO;
-+ }
-+
-+ if (hdr & 0x04) {
-+ struct sk_buff *skb;
-+ unsigned char pkt_type;
-+ int pkt_len = 0;
-+
-+ if (bfusb->reassembly) {
-+ BT_ERR("%s unexpected start block", bfusb->hdev.name);
-+ kfree_skb(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ }
-+
-+ if (len < 1) {
-+ BT_ERR("%s no packet type found", bfusb->hdev.name);
-+ return -EPROTO;
-+ }
-+
-+ pkt_type = *data++; len--;
-+
-+ switch (pkt_type) {
-+ case HCI_EVENT_PKT:
-+ if (len >= HCI_EVENT_HDR_SIZE) {
-+ hci_event_hdr *hdr = (hci_event_hdr *) data;
-+ pkt_len = HCI_EVENT_HDR_SIZE + hdr->plen;
-+ } else {
-+ BT_ERR("%s event block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ if (len >= HCI_ACL_HDR_SIZE) {
-+ hci_acl_hdr *hdr = (hci_acl_hdr *) data;
-+ pkt_len = HCI_ACL_HDR_SIZE + __le16_to_cpu(hdr->dlen);
-+ } else {
-+ BT_ERR("%s data block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ if (len >= HCI_SCO_HDR_SIZE) {
-+ hci_sco_hdr *hdr = (hci_sco_hdr *) data;
-+ pkt_len = HCI_SCO_HDR_SIZE + hdr->dlen;
-+ } else {
-+ BT_ERR("%s audio block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+ }
-+
-+ skb = bluez_skb_alloc(pkt_len, GFP_ATOMIC);
-+ if (!skb) {
-+ BT_ERR("%s no memory for the packet", bfusb->hdev.name);
-+ return -ENOMEM;
-+ }
-+
-+ skb->dev = (void *) &bfusb->hdev;
-+ skb->pkt_type = pkt_type;
-+
-+ bfusb->reassembly = skb;
-+ } else {
-+ if (!bfusb->reassembly) {
-+ BT_ERR("%s unexpected continuation block", bfusb->hdev.name);
-+ return -EIO;
-+ }
-+ }
-+
-+ if (len > 0)
-+ memcpy(skb_put(bfusb->reassembly, len), data, len);
-+
-+ if (hdr & 0x08) {
-+ hci_recv_frame(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ }
-+
-+ return 0;
-+}
-+
-+static void bfusb_rx_complete(struct urb *urb)
-+{
-+ struct sk_buff *skb = (struct sk_buff *) urb->context;
-+ struct bfusb *bfusb = (struct bfusb *) skb->dev;
-+ unsigned char *buf = urb->transfer_buffer;
-+ int count = urb->actual_length;
-+ int err, hdr, len;
-+
-+ BT_DBG("bfusb %p urb %p skb %p len %d", bfusb, urb, skb, skb->len);
-+
-+ read_lock(&bfusb->lock);
-+
-+ if (!test_bit(HCI_RUNNING, &bfusb->hdev.flags))
-+ goto unlock;
-+
-+ if (urb->status || !count)
-+ goto resubmit;
-+
-+ bfusb->hdev.stat.byte_rx += count;
-+
-+ skb_put(skb, count);
-+
-+ while (count) {
-+ hdr = buf[0] | (buf[1] << 8);
-+
-+ if (hdr & 0x4000) {
-+ len = 0;
-+ count -= 2;
-+ buf += 2;
-+ } else {
-+ len = (buf[2] == 0) ? 256 : buf[2];
-+ count -= 3;
-+ buf += 3;
-+ }
-+
-+ if (count < len) {
-+ BT_ERR("%s block extends over URB buffer ranges",
-+ bfusb->hdev.name);
-+ }
-+
-+ if ((hdr & 0xe1) == 0xc1)
-+ bfusb_recv_block(bfusb, hdr, buf, len);
-+
-+ count -= len;
-+ buf += len;
-+ }
-+
-+ skb_unlink(skb);
-+ kfree_skb(skb);
-+
-+ bfusb_rx_submit(bfusb, urb);
-+
-+ read_unlock(&bfusb->lock);
-+
-+ return;
-+
-+resubmit:
-+ urb->dev = bfusb->udev;
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk resubmit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ }
-+
-+unlock:
-+ read_unlock(&bfusb->lock);
-+}
-+
-+
-+static int bfusb_open(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+ unsigned long flags;
-+ int i, err;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ if (test_and_set_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ write_lock_irqsave(&bfusb->lock, flags);
-+
-+ err = bfusb_rx_submit(bfusb, NULL);
-+ if (!err) {
-+ for (i = 1; i < BFUSB_MAX_BULK_RX; i++)
-+ bfusb_rx_submit(bfusb, NULL);
-+ } else {
-+ clear_bit(HCI_RUNNING, &hdev->flags);
-+ MOD_DEC_USE_COUNT;
-+ }
-+
-+ write_unlock_irqrestore(&bfusb->lock, flags);
-+
-+ return err;
-+}
-+
-+static int bfusb_flush(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ skb_queue_purge(&bfusb->transmit_q);
-+
-+ return 0;
-+}
-+
-+static int bfusb_close(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+ unsigned long flags;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
-+ write_lock_irqsave(&bfusb->lock, flags);
-+
-+ bfusb_unlink_urbs(bfusb);
-+ bfusb_flush(hdev);
-+
-+ write_unlock_irqrestore(&bfusb->lock, flags);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ return 0;
-+}
-+
-+static int bfusb_send_frame(struct sk_buff *skb)
-+{
-+ struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-+ struct bfusb *bfusb;
-+ struct sk_buff *nskb;
-+ unsigned char buf[3];
-+ int sent = 0, size, count;
-+
-+ BT_DBG("hdev %p skb %p type %d len %d", hdev, skb, skb->pkt_type, skb->len);
-+
-+ if (!hdev) {
-+ BT_ERR("Frame for unknown HCI device (hdev=NULL)");
-+ return -ENODEV;
-+ }
-+
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return -EBUSY;
-+
-+ bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+
-+ count = skb->len;
-+
-+ /* Max HCI frame size seems to be 1511 + 1 */
-+ if (!(nskb = bluez_skb_alloc(count + 32, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for new packet");
-+ return -ENOMEM;
-+ }
-+
-+ nskb->dev = (void *) bfusb;
-+
-+ while (count) {
-+ size = min_t(uint, count, BFUSB_MAX_BLOCK_SIZE);
-+
-+ buf[0] = 0xc1 | ((sent == 0) ? 0x04 : 0) | ((count == size) ? 0x08 : 0);
-+ buf[1] = 0x00;
-+ buf[2] = (size == BFUSB_MAX_BLOCK_SIZE) ? 0 : size;
-+
-+ memcpy(skb_put(nskb, 3), buf, 3);
-+ memcpy(skb_put(nskb, size), skb->data + sent, size);
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ /* Don't send frame with multiple size of bulk max packet */
-+ if ((nskb->len % bfusb->bulk_pkt_size) == 0) {
-+ buf[0] = 0xdd;
-+ buf[1] = 0x00;
-+ memcpy(skb_put(nskb, 2), buf, 2);
-+ }
-+
-+ read_lock(&bfusb->lock);
-+
-+ skb_queue_tail(&bfusb->transmit_q, nskb);
-+ bfusb_tx_wakeup(bfusb);
-+
-+ read_unlock(&bfusb->lock);
-+
-+ kfree_skb(skb);
-+
-+ return 0;
-+}
-+
-+static void bfusb_destruct(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ kfree(bfusb);
-+}
-+
-+static int bfusb_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+static int bfusb_load_firmware(struct bfusb *bfusb, unsigned char *firmware, int count)
-+{
-+ unsigned char *buf;
-+ int err, pipe, len, size, sent = 0;
-+
-+ BT_DBG("bfusb %p udev %p firmware %p count %d", bfusb, bfusb->udev, firmware, count);
-+
-+ BT_INFO("BlueFRITZ! USB loading firmware");
-+
-+ if (usb_set_configuration(bfusb->udev, 1) < 0) {
-+ BT_ERR("Can't change to loading configuration");
-+ return -EBUSY;
-+ }
-+
-+ buf = kmalloc(BFUSB_MAX_BLOCK_SIZE + 3, GFP_ATOMIC);
-+ if (!buf) {
-+ BT_ERR("Can't allocate memory chunk for firmware");
-+ return -ENOMEM;
-+ }
-+
-+ pipe = usb_sndbulkpipe(bfusb->udev, bfusb->bulk_out_ep);
-+
-+ while (count) {
-+ size = min_t(uint, count, BFUSB_MAX_BLOCK_SIZE + 3);
-+
-+ memcpy(buf, firmware + sent, size);
-+
-+ err = usb_bulk_msg(bfusb->udev, pipe, buf, size,
-+ &len, BFUSB_BLOCK_TIMEOUT);
-+
-+ if (err || (len != size)) {
-+ BT_ERR("Error in firmware loading");
-+ goto error;
-+ }
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ if ((err = usb_bulk_msg(bfusb->udev, pipe, NULL, 0,
-+ &len, BFUSB_BLOCK_TIMEOUT)) < 0) {
-+ BT_ERR("Error in null packet request");
-+ goto error;
-+ }
-+
-+ if ((err = usb_set_configuration(bfusb->udev, 2)) < 0) {
-+ BT_ERR("Can't change to running configuration");
-+ goto error;
-+ }
-+
-+ BT_INFO("BlueFRITZ! USB device ready");
-+
-+ kfree(buf);
-+ return 0;
-+
-+error:
-+ kfree(buf);
-+
-+ pipe = usb_sndctrlpipe(bfusb->udev, 0);
-+
-+ usb_control_msg(bfusb->udev, pipe, USB_REQ_SET_CONFIGURATION,
-+ 0, 0, 0, NULL, 0, BFUSB_BLOCK_TIMEOUT);
-+
-+ return err;
-+}
-+
-+static void *bfusb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id)
-+{
-+ const struct firmware *firmware;
-+ char device[16];
-+ struct usb_interface *iface;
-+ struct usb_interface_descriptor *iface_desc;
-+ struct usb_endpoint_descriptor *bulk_out_ep;
-+ struct usb_endpoint_descriptor *bulk_in_ep;
-+ struct hci_dev *hdev;
-+ struct bfusb *bfusb;
-+
-+ BT_DBG("udev %p ifnum %d id %p", udev, ifnum, id);
-+
-+ /* Check number of endpoints */
-+ iface = &udev->actconfig->interface[0];
-+ iface_desc = &iface->altsetting[0];
-+
-+ if (iface_desc->bNumEndpoints < 2)
-+ return NULL;
-+
-+ bulk_out_ep = &iface_desc->endpoint[0];
-+ bulk_in_ep = &iface_desc->endpoint[1];
-+
-+ if (!bulk_out_ep || !bulk_in_ep) {
-+ BT_ERR("Bulk endpoints not found");
-+ goto done;
-+ }
-+
-+ /* Initialize control structure and load firmware */
-+ if (!(bfusb = kmalloc(sizeof(struct bfusb), GFP_KERNEL))) {
-+ BT_ERR("Can't allocate memory for control structure");
-+ goto done;
-+ }
-+
-+ memset(bfusb, 0, sizeof(struct bfusb));
-+
-+ bfusb->udev = udev;
-+ bfusb->bulk_in_ep = bulk_in_ep->bEndpointAddress;
-+ bfusb->bulk_out_ep = bulk_out_ep->bEndpointAddress;
-+ bfusb->bulk_pkt_size = bulk_out_ep->wMaxPacketSize;
-+
-+ bfusb->lock = RW_LOCK_UNLOCKED;
-+
-+ bfusb->reassembly = NULL;
-+
-+ skb_queue_head_init(&bfusb->transmit_q);
-+ skb_queue_head_init(&bfusb->pending_q);
-+ skb_queue_head_init(&bfusb->completed_q);
-+
-+ snprintf(device, sizeof(device), "bfusb%3.3d%3.3d", udev->bus->busnum, udev->devnum);
-+
-+ if (request_firmware(&firmware, "bfubase.frm", device) < 0) {
-+ BT_ERR("Firmware request failed");
-+ goto error;
-+ }
-+
-+ if (bfusb_load_firmware(bfusb, firmware->data, firmware->size) < 0) {
-+ BT_ERR("Firmware loading failed");
-+ goto release;
-+ }
-+
-+ release_firmware(firmware);
-+
-+ /* Initialize and register HCI device */
-+ hdev = &bfusb->hdev;
-+
-+ hdev->type = HCI_USB;
-+ hdev->driver_data = bfusb;
-+
-+ hdev->open = bfusb_open;
-+ hdev->close = bfusb_close;
-+ hdev->flush = bfusb_flush;
-+ hdev->send = bfusb_send_frame;
-+ hdev->destruct = bfusb_destruct;
-+ hdev->ioctl = bfusb_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ BT_ERR("Can't register HCI device");
-+ goto error;
-+ }
-+
-+ return bfusb;
-+
-+release:
-+ release_firmware(firmware);
-+
-+error:
-+ kfree(bfusb);
-+
-+done:
-+ return NULL;
-+}
-+
-+static void bfusb_disconnect(struct usb_device *udev, void *ptr)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) ptr;
-+ struct hci_dev *hdev = &bfusb->hdev;
-+
-+ BT_DBG("udev %p ptr %p", udev, ptr);
-+
-+ if (!hdev)
-+ return;
-+
-+ bfusb_close(hdev);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ BT_ERR("Can't unregister HCI device %s", hdev->name);
-+}
-+
-+static struct usb_driver bfusb_driver = {
-+ name: "bfusb",
-+ probe: bfusb_probe,
-+ disconnect: bfusb_disconnect,
-+ id_table: bfusb_table,
-+};
-+
-+static int __init bfusb_init(void)
-+{
-+ int err;
-+
-+ BT_INFO("BlueFRITZ! USB driver ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2003 Marcel Holtmann <marcel@holtmann.org>");
-+
-+ if ((err = usb_register(&bfusb_driver)) < 0)
-+ BT_ERR("Failed to register BlueFRITZ! USB driver");
-+
-+ return err;
-+}
-+
-+static void __exit bfusb_cleanup(void)
-+{
-+ usb_deregister(&bfusb_driver);
-+}
-+
-+module_init(bfusb_init);
-+module_exit(bfusb_cleanup);
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueFRITZ! USB driver ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -Nur c3000_pre/linux/drivers/bluetooth/bluecard_cs.c c3000_work/linux/drivers/bluetooth/bluecard_cs.c
---- c3000_pre/linux/drivers/bluetooth/bluecard_cs.c 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/bluecard_cs.c 2004-12-16 23:01:14.000000000 +0900
-@@ -803,6 +803,9 @@
- unsigned int iobase = info->link.io.BasePort1;
- struct hci_dev *hdev = &(info->hdev);
-
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
- bluecard_hci_close(hdev);
-
- clear_bit(CARD_READY, &(info->hw_state));
-diff -Nur c3000_pre/linux/drivers/bluetooth/bt3c_cs.c c3000_work/linux/drivers/bluetooth/bt3c_cs.c
---- c3000_pre/linux/drivers/bluetooth/bt3c_cs.c 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/bt3c_cs.c 2004-12-16 23:01:14.000000000 +0900
-@@ -24,8 +24,6 @@
- #include <linux/config.h>
- #include <linux/module.h>
-
--#define __KERNEL_SYSCALLS__
--
- #include <linux/kernel.h>
- #include <linux/kmod.h>
- #include <linux/init.h>
-@@ -48,6 +46,8 @@
- #include <asm/bitops.h>
- #include <asm/io.h>
-
-+#include <linux/firmware.h>
-+
- #include <pcmcia/version.h>
- #include <pcmcia/cs_types.h>
- #include <pcmcia/cs.h>
-@@ -485,78 +485,101 @@
-
-
-
--/* ======================== User mode firmware loader ======================== */
-+/* ======================== Card services HCI interaction ======================== */
-
-
--#define FW_LOADER "/sbin/bluefw"
--static int errno;
-+static int bt3c_load_firmware(bt3c_info_t *info, unsigned char *firmware, int count)
-+{
-+ char *ptr = (char *) firmware;
-+ char b[9];
-+ unsigned int iobase, size, addr, fcs, tmp;
-+ int i, err = 0;
-
-+ iobase = info->link.io.BasePort1;
-
--static int bt3c_fw_loader_exec(void *dev)
--{
-- char *argv[] = { FW_LOADER, "pccard", dev, NULL };
-- char *envp[] = { "HOME=/", "TERM=linux", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };
-- int err;
-+ /* Reset */
-
-- err = exec_usermodehelper(FW_LOADER, argv, envp);
-- if (err)
-- printk(KERN_WARNING "bt3c_cs: Failed to exec \"%s pccard %s\".\n", FW_LOADER, (char *)dev);
-+ bt3c_io_write(iobase, 0x8040, 0x0404);
-+ bt3c_io_write(iobase, 0x8040, 0x0400);
-
-- return err;
--}
-+ udelay(1);
-
-+ bt3c_io_write(iobase, 0x8040, 0x0404);
-
--static int bt3c_firmware_load(bt3c_info_t *info)
--{
-- sigset_t tmpsig;
-- char dev[16];
-- pid_t pid;
-- int result;
-+ udelay(17);
-
-- /* Check if root fs is mounted */
-- if (!current->fs->root) {
-- printk(KERN_WARNING "bt3c_cs: Root filesystem is not mounted.\n");
-- return -EPERM;
-- }
-+ /* Load */
-
-- sprintf(dev, "%04x", info->link.io.BasePort1);
-+ while (count) {
-+ if (ptr[0] != 'S') {
-+ printk(KERN_WARNING "bt3c_cs: Bad address in firmware.\n");
-+ err = -EFAULT;
-+ goto error;
-+ }
-
-- pid = kernel_thread(bt3c_fw_loader_exec, (void *)dev, 0);
-- if (pid < 0) {
-- printk(KERN_WARNING "bt3c_cs: Forking of kernel thread failed (errno=%d).\n", -pid);
-- return pid;
-- }
-+ memset(b, 0, sizeof(b));
-+ memcpy(b, ptr + 2, 2);
-+ size = simple_strtol(b, NULL, 16);
-+
-+ memset(b, 0, sizeof(b));
-+ memcpy(b, ptr + 4, 8);
-+ addr = simple_strtol(b, NULL, 16);
-+
-+ memset(b, 0, sizeof(b));
-+ memcpy(b, ptr + (size * 2) + 2, 2);
-+ fcs = simple_strtol(b, NULL, 16);
-+
-+ memset(b, 0, sizeof(b));
-+ for (tmp = 0, i = 0; i < size; i++) {
-+ memcpy(b, ptr + (i * 2) + 2, 2);
-+ tmp += simple_strtol(b, NULL, 16);
-+ }
-
-- /* Block signals, everything but SIGKILL/SIGSTOP */
-- spin_lock_irq(&current->sigmask_lock);
-- tmpsig = current->blocked;
-- siginitsetinv(&current->blocked, sigmask(SIGKILL) | sigmask(SIGSTOP));
-- recalc_sigpending(current);
-- spin_unlock_irq(&current->sigmask_lock);
-+ if (((tmp + fcs) & 0xff) != 0xff) {
-+ printk(KERN_WARNING "bt3c_cs: Checksum error in firmware.\n");
-+ err = -EILSEQ;
-+ goto error;
-+ }
-
-- result = waitpid(pid, NULL, __WCLONE);
-+ if (ptr[1] == '3') {
-+ bt3c_address(iobase, addr);
-
-- /* Allow signals again */
-- spin_lock_irq(&current->sigmask_lock);
-- current->blocked = tmpsig;
-- recalc_sigpending(current);
-- spin_unlock_irq(&current->sigmask_lock);
-+ memset(b, 0, sizeof(b));
-+ for (i = 0; i < (size - 4) / 2; i++) {
-+ memcpy(b, ptr + (i * 4) + 12, 4);
-+ tmp = simple_strtol(b, NULL, 16);
-+ bt3c_put(iobase, tmp);
-+ }
-+ }
-
-- if (result != pid) {
-- printk(KERN_WARNING "bt3c_cs: Waiting for pid %d failed (errno=%d).\n", pid, -result);
-- return -result;
-+ ptr += (size * 2) + 6;
-+ count -= (size * 2) + 6;
- }
-
-- return 0;
--}
-+ udelay(17);
-
-+ /* Boot */
-
-+ bt3c_address(iobase, 0x3000);
-+ outb(inb(iobase + CONTROL) | 0x40, iobase + CONTROL);
-
--/* ======================== Card services HCI interaction ======================== */
-+error:
-+ udelay(17);
-+
-+ /* Clear */
-+
-+ bt3c_io_write(iobase, 0x7006, 0x0000);
-+ bt3c_io_write(iobase, 0x7005, 0x0000);
-+ bt3c_io_write(iobase, 0x7001, 0x0000);
-+
-+ return err;
-+}
-
-
- int bt3c_open(bt3c_info_t *info)
- {
-+ const struct firmware *firmware;
-+ char device[16];
- struct hci_dev *hdev;
- int err;
-
-@@ -570,8 +593,22 @@
-
- /* Load firmware */
-
-- if ((err = bt3c_firmware_load(info)) < 0)
-+ snprintf(device, sizeof(device), "bt3c%4.4x", info->link.io.BasePort1);
-+
-+ err = request_firmware(&firmware, "BT3CPCC.bin", device);
-+ if (err < 0) {
-+ printk(KERN_WARNING "bt3c_cs: Firmware request failed.\n");
- return err;
-+ }
-+
-+ err = bt3c_load_firmware(info, firmware->data, firmware->size);
-+
-+ release_firmware(firmware);
-+
-+ if (err < 0) {
-+ printk(KERN_WARNING "bt3c_cs: Firmware loading failed.\n");
-+ return err;
-+ }
-
- /* Timeout before it is safe to send the first HCI packet */
-
-@@ -606,6 +643,9 @@
- {
- struct hci_dev *hdev = &(info->hdev);
-
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
- bt3c_hci_close(hdev);
-
- if (hci_unregister_dev(hdev) < 0)
-diff -Nur c3000_pre/linux/drivers/bluetooth/btuart_cs.c c3000_work/linux/drivers/bluetooth/btuart_cs.c
---- c3000_pre/linux/drivers/bluetooth/btuart_cs.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/btuart_cs.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,909 @@
-+/*
-+ *
-+ * Driver for Bluetooth PCMCIA cards with HCI UART interface
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/skbuff.h>
-+#include <linux/string.h>
-+#include <linux/serial.h>
-+#include <linux/serial_reg.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0xffff;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ driver for Bluetooth PCMCIA cards with HCI UART interface");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct btuart_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+} btuart_info_t;
-+
-+
-+void btuart_config(dev_link_t *link);
-+void btuart_release(u_long arg);
-+int btuart_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "btuart_cs";
-+
-+dev_link_t *btuart_attach(void);
-+void btuart_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Maximum baud rate */
-+#define SPEED_MAX 115200
-+
-+/* Default baud rate: 57600, 115200, 230400 or 460800 */
-+#define DEFAULT_BAUD_RATE 115200
-+
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_WAITING 8
-+
-+/* Receiver states */
-+#define RECV_WAIT_PACKET_TYPE 0
-+#define RECV_WAIT_EVENT_HEADER 1
-+#define RECV_WAIT_ACL_HEADER 2
-+#define RECV_WAIT_SCO_HEADER 3
-+#define RECV_WAIT_DATA 4
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int btuart_write(unsigned int iobase, int fifo_size, __u8 *buf, int len)
-+{
-+ int actual = 0;
-+
-+ /* Tx FIFO should be empty */
-+ if (!(inb(iobase + UART_LSR) & UART_LSR_THRE))
-+ return 0;
-+
-+ /* Fill FIFO with current frame */
-+ while ((fifo_size-- > 0) && (actual < len)) {
-+ /* Transmit next byte */
-+ outb(buf[actual], iobase + UART_TX);
-+ actual++;
-+ }
-+
-+ return actual;
-+}
-+
-+
-+static void btuart_write_wakeup(btuart_info_t *info)
-+{
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ clear_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ return;
-+
-+ if (!(skb = skb_dequeue(&(info->txq))))
-+ break;
-+
-+ /* Send frame */
-+ len = btuart_write(iobase, 16, skb->data, skb->len);
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (len == skb->len) {
-+ kfree_skb(skb);
-+ } else {
-+ skb_pull(skb, len);
-+ skb_queue_head(&(info->txq), skb);
-+ }
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
-+
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+}
-+
-+
-+static void btuart_receive(btuart_info_t *info)
-+{
-+ unsigned int iobase;
-+ int boguscount = 0;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ do {
-+ info->hdev.stat.byte_rx++;
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL) {
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "btuart_cs: Can't allocate mem for new packet.\n");
-+ return;
-+ }
-+ }
-+
-+ if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
-+
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type = inb(iobase + UART_RX);
-+
-+ switch (info->rx_skb->pkt_type) {
-+
-+ case HCI_EVENT_PKT:
-+ info->rx_state = RECV_WAIT_EVENT_HEADER;
-+ info->rx_count = HCI_EVENT_HDR_SIZE;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ info->rx_state = RECV_WAIT_ACL_HEADER;
-+ info->rx_count = HCI_ACL_HDR_SIZE;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ info->rx_state = RECV_WAIT_SCO_HEADER;
-+ info->rx_count = HCI_SCO_HDR_SIZE;
-+ break;
-+
-+ default:
-+ /* Unknown packet */
-+ printk(KERN_WARNING "btuart_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ info->hdev.stat.err_rx++;
-+ clear_bit(HCI_RUNNING, &(info->hdev.flags));
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ } else {
-+
-+ *skb_put(info->rx_skb, 1) = inb(iobase + UART_RX);
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ int dlen;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+
-+
-+ switch (info->rx_state) {
-+
-+ case RECV_WAIT_EVENT_HEADER:
-+ eh = (hci_event_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = eh->plen;
-+ break;
-+
-+ case RECV_WAIT_ACL_HEADER:
-+ ah = (hci_acl_hdr *)(info->rx_skb->data);
-+ dlen = __le16_to_cpu(ah->dlen);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = dlen;
-+ break;
-+
-+ case RECV_WAIT_SCO_HEADER:
-+ sh = (hci_sco_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = sh->dlen;
-+ break;
-+
-+ case RECV_WAIT_DATA:
-+ hci_recv_frame(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 16)
-+ break;
-+
-+ } while (inb(iobase + UART_LSR) & UART_LSR_DR);
-+}
-+
-+
-+void btuart_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ btuart_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ int boguscount = 0;
-+ int iir, lsr;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+ while (iir) {
-+
-+ /* Clear interrupt */
-+ lsr = inb(iobase + UART_LSR);
-+
-+ switch (iir) {
-+ case UART_IIR_RLSI:
-+ printk(KERN_NOTICE "btuart_cs: RLSI\n");
-+ break;
-+ case UART_IIR_RDI:
-+ /* Receive interrupt */
-+ btuart_receive(info);
-+ break;
-+ case UART_IIR_THRI:
-+ if (lsr & UART_LSR_THRE) {
-+ /* Transmitter ready for data */
-+ btuart_write_wakeup(info);
-+ }
-+ break;
-+ default:
-+ printk(KERN_NOTICE "btuart_cs: Unhandled IIR=%#x\n", iir);
-+ break;
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 100)
-+ break;
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+
-+ }
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+static void btuart_change_speed(btuart_info_t *info, unsigned int speed)
-+{
-+ unsigned long flags;
-+ unsigned int iobase;
-+ int fcr; /* FIFO control reg */
-+ int lcr; /* Line control reg */
-+ int divisor;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of change speed for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ divisor = SPEED_MAX / speed;
-+
-+ fcr = UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT;
-+
-+ /*
-+ * Use trigger level 1 to avoid 3 ms. timeout delay at 9600 bps, and
-+ * almost 1,7 ms at 19200 bps. At speeds above that we can just forget
-+ * about this timeout since it will always be fast enough.
-+ */
-+
-+ if (speed < 38400)
-+ fcr |= UART_FCR_TRIGGER_1;
-+ else
-+ fcr |= UART_FCR_TRIGGER_14;
-+
-+ /* Bluetooth cards use 8N1 */
-+ lcr = UART_LCR_WLEN8;
-+
-+ outb(UART_LCR_DLAB | lcr, iobase + UART_LCR); /* Set DLAB */
-+ outb(divisor & 0xff, iobase + UART_DLL); /* Set speed */
-+ outb(divisor >> 8, iobase + UART_DLM);
-+ outb(lcr, iobase + UART_LCR); /* Set 8N1 */
-+ outb(fcr, iobase + UART_FCR); /* Enable FIFO's */
-+
-+ /* Turn on interrups */
-+ outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+}
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int btuart_hci_flush(struct hci_dev *hdev)
-+{
-+ btuart_info_t *info = (btuart_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_open(struct hci_dev *hdev)
-+{
-+ set_bit(HCI_RUNNING, &(hdev->flags));
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_close(struct hci_dev *hdev)
-+{
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ btuart_hci_flush(hdev);
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_send_frame(struct sk_buff *skb)
-+{
-+ btuart_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "btuart_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (btuart_info_t *)(hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ btuart_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+static void btuart_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int btuart_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+int btuart_open(btuart_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ info->rx_skb = NULL;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ /* Initialize UART */
-+ outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */
-+ outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR);
-+
-+ /* Turn on interrupts */
-+ // outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ btuart_change_speed(info, DEFAULT_BAUD_RATE);
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ);
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = btuart_hci_open;
-+ hdev->close = btuart_hci_close;
-+ hdev->flush = btuart_hci_flush;
-+ hdev->send = btuart_hci_send_frame;
-+ hdev->destruct = btuart_hci_destruct;
-+ hdev->ioctl = btuart_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "btuart_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int btuart_close(btuart_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
-+ btuart_hci_close(hdev);
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "btuart_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *btuart_attach(void)
-+{
-+ btuart_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &btuart_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = btuart_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &btuart_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ btuart_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void btuart_detach(dev_link_t *link)
-+{
-+ btuart_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+ if (link->state & DEV_CONFIG)
-+ btuart_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void btuart_config(dev_link_t *link)
-+{
-+ static ioaddr_t base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
-+ client_handle_t handle = link->handle;
-+ btuart_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
-+ int i, j, try, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ /* First pass: look for a config entry that looks normal. */
-+ tuple.TupleData = (cisdata_t *) buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-+ /* Two tries: without IO aliases, then with aliases */
-+ for (try = 0; try < 2; try++) {
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if (i != CS_SUCCESS)
-+ goto next_entry;
-+ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) {
-+ link->conf.ConfigIndex = cf->index;
-+ link->io.BasePort1 = cf->io.win[0].base;
-+ link->io.IOAddrLines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+next_entry:
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+ }
-+
-+ /* Second pass: try to find an entry that isn't picky about
-+ its base address, then try to grab any standard serial port
-+ address, and finally try to get any free port. */
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if ((i == CS_SUCCESS) && (cf->io.nwin > 0)
-+ && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-+ link->conf.ConfigIndex = cf->index;
-+ for (j = 0; j < 5; j++) {
-+ link->io.BasePort1 = base[j];
-+ link->io.IOAddrLines = base[j] ? 16 : 3;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+ }
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+
-+found_port:
-+ if (i != CS_SUCCESS) {
-+ printk(KERN_NOTICE "btuart_cs: No usable port range found. Giving up.\n");
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (btuart_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ btuart_release((u_long) link);
-+}
-+
-+
-+void btuart_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ btuart_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ btuart_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int btuart_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ btuart_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ btuart_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ btuart_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_btuart_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "btuart_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &btuart_attach, &btuart_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_btuart_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ btuart_detach(dev_list);
-+}
-+
-+
-+module_init(init_btuart_cs);
-+module_exit(exit_btuart_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -Nur c3000_pre/linux/drivers/bluetooth/dtl1_cs.c c3000_work/linux/drivers/bluetooth/dtl1_cs.c
---- c3000_pre/linux/drivers/bluetooth/dtl1_cs.c 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/dtl1_cs.c 2004-12-16 23:01:14.000000000 +0900
-@@ -535,6 +535,9 @@
- unsigned int iobase = info->link.io.BasePort1;
- struct hci_dev *hdev = &(info->hdev);
-
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
- dtl1_hci_close(hdev);
-
- spin_lock_irqsave(&(info->lock), flags);
-diff -Nur c3000_pre/linux/drivers/bluetooth/hci_bcsp.c c3000_work/linux/drivers/bluetooth/hci_bcsp.c
---- c3000_pre/linux/drivers/bluetooth/hci_bcsp.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/hci_bcsp.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,710 @@
-+/*
-+ BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ).
-+ Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com>
-+
-+ Based on
-+ hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com>
-+ ABCSP by Carl Orsborn <cjo@csr.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_bcsp.c,v 1.2 2002/09/26 05:05:14 maxk Exp $
-+ */
-+
-+#define VERSION "0.1"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/poll.h>
-+
-+#include <linux/slab.h>
-+#include <linux/tty.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/signal.h>
-+#include <linux/ioctl.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include "hci_uart.h"
-+#include "hci_bcsp.h"
-+
-+#ifndef HCI_UART_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
-+#endif
-+
-+/* ---- BCSP CRC calculation ---- */
-+
-+/* Table for calculating CRC for polynomial 0x1021, LSB processed first,
-+initial value 0xffff, bits shifted in reverse order. */
-+
-+static const u16 crc_table[] = {
-+ 0x0000, 0x1081, 0x2102, 0x3183,
-+ 0x4204, 0x5285, 0x6306, 0x7387,
-+ 0x8408, 0x9489, 0xa50a, 0xb58b,
-+ 0xc60c, 0xd68d, 0xe70e, 0xf78f
-+};
-+
-+/* Initialise the crc calculator */
-+#define BCSP_CRC_INIT(x) x = 0xffff
-+
-+/*
-+ Update crc with next data byte
-+
-+ Implementation note
-+ The data byte is treated as two nibbles. The crc is generated
-+ in reverse, i.e., bits are fed into the register from the top.
-+*/
-+static void bcsp_crc_update(u16 *crc, u8 d)
-+{
-+ u16 reg = *crc;
-+
-+ reg = (reg >> 4) ^ crc_table[(reg ^ d) & 0x000f];
-+ reg = (reg >> 4) ^ crc_table[(reg ^ (d >> 4)) & 0x000f];
-+
-+ *crc = reg;
-+}
-+
-+/*
-+ Get reverse of generated crc
-+
-+ Implementation note
-+ The crc generator (bcsp_crc_init() and bcsp_crc_update())
-+ creates a reversed crc, so it needs to be swapped back before
-+ being passed on.
-+*/
-+static u16 bcsp_crc_reverse(u16 crc)
-+{
-+ u16 b, rev;
-+
-+ for (b = 0, rev = 0; b < 16; b++) {
-+ rev = rev << 1;
-+ rev |= (crc & 1);
-+ crc = crc >> 1;
-+ }
-+ return (rev);
-+}
-+
-+/* ---- BCSP core ---- */
-+
-+static void bcsp_slip_msgdelim(struct sk_buff *skb)
-+{
-+ const char pkt_delim = 0xc0;
-+ memcpy(skb_put(skb, 1), &pkt_delim, 1);
-+}
-+
-+static void bcsp_slip_one_byte(struct sk_buff *skb, u8 c)
-+{
-+ const char esc_c0[2] = { 0xdb, 0xdc };
-+ const char esc_db[2] = { 0xdb, 0xdd };
-+
-+ switch (c) {
-+ case 0xc0:
-+ memcpy(skb_put(skb, 2), &esc_c0, 2);
-+ break;
-+ case 0xdb:
-+ memcpy(skb_put(skb, 2), &esc_db, 2);
-+ break;
-+ default:
-+ memcpy(skb_put(skb, 1), &c, 1);
-+ }
-+}
-+
-+static int bcsp_enqueue(struct hci_uart *hu, struct sk_buff *skb)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+
-+ if (skb->len > 0xFFF) {
-+ BT_ERR("Packet too long");
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+
-+ switch (skb->pkt_type) {
-+ case HCI_ACLDATA_PKT:
-+ case HCI_COMMAND_PKT:
-+ skb_queue_tail(&bcsp->rel, skb);
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ skb_queue_tail(&bcsp->unrel, skb);
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown packet type");
-+ kfree_skb(skb);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data,
-+ int len, int pkt_type)
-+{
-+ struct sk_buff *nskb;
-+ u8 hdr[4], chan;
-+ int rel, i;
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ u16 BCSP_CRC_INIT(bcsp_txmsg_crc);
-+#endif
-+
-+ switch (pkt_type) {
-+ case HCI_ACLDATA_PKT:
-+ chan = 6; /* BCSP ACL channel */
-+ rel = 1; /* reliable channel */
-+ break;
-+ case HCI_COMMAND_PKT:
-+ chan = 5; /* BCSP cmd/evt channel */
-+ rel = 1; /* reliable channel */
-+ break;
-+ case HCI_SCODATA_PKT:
-+ chan = 7; /* BCSP SCO channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ case BCSP_LE_PKT:
-+ chan = 1; /* BCSP LE channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ case BCSP_ACK_PKT:
-+ chan = 0; /* BCSP internal channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ default:
-+ BT_ERR("Unknown packet type");
-+ return NULL;
-+ }
-+
-+ /* Max len of packet: (original len +4(bcsp hdr) +2(crc))*2
-+ (because bytes 0xc0 and 0xdb are escaped, worst case is
-+ when the packet is all made of 0xc0 and 0xdb :) )
-+ + 2 (0xc0 delimiters at start and end). */
-+
-+ nskb = alloc_skb((len + 6) * 2 + 2, GFP_ATOMIC);
-+ if (!nskb)
-+ return NULL;
-+
-+ nskb->pkt_type = pkt_type;
-+
-+ bcsp_slip_msgdelim(nskb);
-+
-+ hdr[0] = bcsp->rxseq_txack << 3;
-+ bcsp->txack_req = 0;
-+ BT_DBG("We request packet no %u to card", bcsp->rxseq_txack);
-+
-+ if (rel) {
-+ hdr[0] |= 0x80 + bcsp->msgq_txseq;
-+ BT_DBG("Sending packet with seqno %u", bcsp->msgq_txseq);
-+ bcsp->msgq_txseq = ++(bcsp->msgq_txseq) & 0x07;
-+ }
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ hdr[0] |= 0x40;
-+#endif
-+
-+ hdr[1] = (len << 4) & 0xFF;
-+ hdr[1] |= chan;
-+ hdr[2] = len >> 4;
-+ hdr[3] = ~(hdr[0] + hdr[1] + hdr[2]);
-+
-+ /* Put BCSP header */
-+ for (i = 0; i < 4; i++) {
-+ bcsp_slip_one_byte(nskb, hdr[i]);
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ bcsp_crc_update(&bcsp_txmsg_crc, hdr[i]);
-+#endif
-+ }
-+
-+ /* Put payload */
-+ for (i = 0; i < len; i++) {
-+ bcsp_slip_one_byte(nskb, data[i]);
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ bcsp_crc_update(&bcsp_txmsg_crc, data[i]);
-+#endif
-+ }
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ /* Put CRC */
-+ bcsp_txmsg_crc = bcsp_crc_reverse(bcsp_txmsg_crc);
-+ bcsp_slip_one_byte(nskb, (u8) ((bcsp_txmsg_crc >> 8) & 0x00ff));
-+ bcsp_slip_one_byte(nskb, (u8) (bcsp_txmsg_crc & 0x00ff));
-+#endif
-+
-+ bcsp_slip_msgdelim(nskb);
-+ return nskb;
-+}
-+
-+/* This is a rewrite of pkt_avail in ABCSP */
-+static struct sk_buff *bcsp_dequeue(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = (struct bcsp_struct *) hu->priv;
-+ unsigned long flags;
-+ struct sk_buff *skb;
-+
-+ /* First of all, check for unreliable messages in the queue,
-+ since they have priority */
-+
-+ if ((skb = skb_dequeue(&bcsp->unrel)) != NULL) {
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, skb->data, skb->len, skb->pkt_type);
-+ if (nskb) {
-+ kfree_skb(skb);
-+ return nskb;
-+ } else {
-+ skb_queue_head(&bcsp->unrel, skb);
-+ BT_ERR("Could not dequeue pkt because alloc_skb failed");
-+ }
-+ }
-+
-+ /* Now, try to send a reliable pkt. We can only send a
-+ reliable packet if the number of packets sent but not yet ack'ed
-+ is < than the winsize */
-+
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ if (bcsp->unack.qlen < BCSP_TXWINSIZE && (skb = skb_dequeue(&bcsp->rel)) != NULL) {
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, skb->data, skb->len, skb->pkt_type);
-+ if (nskb) {
-+ __skb_queue_tail(&bcsp->unack, skb);
-+ mod_timer(&bcsp->tbcsp, jiffies + HZ / 4);
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+ return nskb;
-+ } else {
-+ skb_queue_head(&bcsp->rel, skb);
-+ BT_ERR("Could not dequeue pkt because alloc_skb failed");
-+ }
-+ }
-+
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+
-+ /* We could not send a reliable packet, either because there are
-+ none or because there are too many unack'ed pkts. Did we receive
-+ any packets we have not acknowledged yet ? */
-+
-+ if (bcsp->txack_req) {
-+ /* if so, craft an empty ACK pkt and send it on BCSP unreliable
-+ channel 0 */
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, NULL, 0, BCSP_ACK_PKT);
-+ return nskb;
-+ }
-+
-+ /* We have nothing to send */
-+ return NULL;
-+}
-+
-+static int bcsp_flush(struct hci_uart *hu)
-+{
-+ BT_DBG("hu %p", hu);
-+ return 0;
-+}
-+
-+/* Remove ack'ed packets */
-+static void bcsp_pkt_cull(struct bcsp_struct *bcsp)
-+{
-+ unsigned long flags;
-+ struct sk_buff *skb;
-+ int i, pkts_to_be_removed;
-+ u8 seqno;
-+
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ pkts_to_be_removed = bcsp->unack.qlen;
-+ seqno = bcsp->msgq_txseq;
-+
-+ while (pkts_to_be_removed) {
-+ if (bcsp->rxack == seqno)
-+ break;
-+ pkts_to_be_removed--;
-+ seqno = (seqno - 1) & 0x07;
-+ }
-+
-+ if (bcsp->rxack != seqno)
-+ BT_ERR("Peer acked invalid packet");
-+
-+ BT_DBG("Removing %u pkts out of %u, up to seqno %u",
-+ pkts_to_be_removed, bcsp->unack.qlen, (seqno - 1) & 0x07);
-+
-+ for (i = 0, skb = ((struct sk_buff *) &bcsp->unack)->next; i < pkts_to_be_removed
-+ && skb != (struct sk_buff *) &bcsp->unack; i++) {
-+ struct sk_buff *nskb;
-+
-+ nskb = skb->next;
-+ __skb_unlink(skb, &bcsp->unack);
-+ kfree_skb(skb);
-+ skb = nskb;
-+ }
-+ if (bcsp->unack.qlen == 0)
-+ del_timer(&bcsp->tbcsp);
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+ if (i != pkts_to_be_removed)
-+ BT_ERR("Removed only %u out of %u pkts", i, pkts_to_be_removed);
-+}
-+
-+/* Handle BCSP link-establishment packets. When we
-+ detect a "sync" packet, symptom that the BT module has reset,
-+ we do nothing :) (yet) */
-+static void bcsp_handle_le_pkt(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ u8 conf_pkt[4] = { 0xad, 0xef, 0xac, 0xed };
-+ u8 conf_rsp_pkt[4] = { 0xde, 0xad, 0xd0, 0xd0 };
-+ u8 sync_pkt[4] = { 0xda, 0xdc, 0xed, 0xed };
-+
-+ /* spot "conf" pkts and reply with a "conf rsp" pkt */
-+ if (bcsp->rx_skb->data[1] >> 4 == 4 && bcsp->rx_skb->data[2] == 0 &&
-+ !memcmp(&bcsp->rx_skb->data[4], conf_pkt, 4)) {
-+ struct sk_buff *nskb = alloc_skb(4, GFP_ATOMIC);
-+
-+ BT_DBG("Found a LE conf pkt");
-+ if (!nskb)
-+ return;
-+ memcpy(skb_put(nskb, 4), conf_rsp_pkt, 4);
-+ nskb->pkt_type = BCSP_LE_PKT;
-+
-+ skb_queue_head(&bcsp->unrel, nskb);
-+ hci_uart_tx_wakeup(hu);
-+ }
-+ /* Spot "sync" pkts. If we find one...disaster! */
-+ else if (bcsp->rx_skb->data[1] >> 4 == 4 && bcsp->rx_skb->data[2] == 0 &&
-+ !memcmp(&bcsp->rx_skb->data[4], sync_pkt, 4)) {
-+ BT_ERR("Found a LE sync pkt, card has reset");
-+ }
-+}
-+
-+static inline void bcsp_unslip_one_byte(struct bcsp_struct *bcsp, unsigned char byte)
-+{
-+ const u8 c0 = 0xc0, db = 0xdb;
-+
-+ switch (bcsp->rx_esc_state) {
-+ case BCSP_ESCSTATE_NOESC:
-+ switch (byte) {
-+ case 0xdb:
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_ESC;
-+ break;
-+ default:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &byte, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp->message_crc, byte);
-+ bcsp->rx_count--;
-+ }
-+ break;
-+
-+ case BCSP_ESCSTATE_ESC:
-+ switch (byte) {
-+ case 0xdc:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &c0, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp-> message_crc, 0xc0);
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ bcsp->rx_count--;
-+ break;
-+
-+ case 0xdd:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &db, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp-> message_crc, 0xdb);
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ bcsp->rx_count--;
-+ break;
-+
-+ default:
-+ BT_ERR ("Invalid byte %02x after esc byte", byte);
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_skb = NULL;
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ }
-+ }
-+}
-+
-+static inline void bcsp_complete_rx_pkt(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ int pass_up;
-+
-+ if (bcsp->rx_skb->data[0] & 0x80) { /* reliable pkt */
-+ BT_DBG("Received seqno %u from card", bcsp->rxseq_txack);
-+ bcsp->rxseq_txack++;
-+ bcsp->rxseq_txack %= 0x8;
-+ bcsp->txack_req = 1;
-+
-+ /* If needed, transmit an ack pkt */
-+ hci_uart_tx_wakeup(hu);
-+ }
-+
-+ bcsp->rxack = (bcsp->rx_skb->data[0] >> 3) & 0x07;
-+ BT_DBG("Request for pkt %u from card", bcsp->rxack);
-+
-+ bcsp_pkt_cull(bcsp);
-+ if ((bcsp->rx_skb->data[1] & 0x0f) == 6 &&
-+ bcsp->rx_skb->data[0] & 0x80) {
-+ bcsp->rx_skb->pkt_type = HCI_ACLDATA_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 5 &&
-+ bcsp->rx_skb->data[0] & 0x80) {
-+ bcsp->rx_skb->pkt_type = HCI_EVENT_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 7) {
-+ bcsp->rx_skb->pkt_type = HCI_SCODATA_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 1 &&
-+ !(bcsp->rx_skb->data[0] & 0x80)) {
-+ bcsp_handle_le_pkt(hu);
-+ pass_up = 0;
-+ } else
-+ pass_up = 0;
-+
-+ if (!pass_up) {
-+ if ((bcsp->rx_skb->data[1] & 0x0f) != 0 &&
-+ (bcsp->rx_skb->data[1] & 0x0f) != 1) {
-+ BT_ERR ("Packet for unknown channel (%u %s)",
-+ bcsp->rx_skb->data[1] & 0x0f,
-+ bcsp->rx_skb->data[0] & 0x80 ?
-+ "reliable" : "unreliable");
-+ }
-+ kfree_skb(bcsp->rx_skb);
-+ } else {
-+ /* Pull out BCSP hdr */
-+ skb_pull(bcsp->rx_skb, 4);
-+
-+ hci_recv_frame(bcsp->rx_skb);
-+ }
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_skb = NULL;
-+}
-+
-+/* Recv data */
-+static int bcsp_recv(struct hci_uart *hu, void *data, int count)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ register unsigned char *ptr;
-+
-+ BT_DBG("hu %p count %d rx_state %ld rx_count %ld",
-+ hu, count, bcsp->rx_state, bcsp->rx_count);
-+
-+ ptr = data;
-+ while (count) {
-+ if (bcsp->rx_count) {
-+ if (*ptr == 0xc0) {
-+ BT_ERR("Short BCSP packet");
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_START;
-+ bcsp->rx_count = 0;
-+ } else
-+ bcsp_unslip_one_byte(bcsp, *ptr);
-+
-+ ptr++; count--;
-+ continue;
-+ }
-+
-+ switch (bcsp->rx_state) {
-+ case BCSP_W4_BCSP_HDR:
-+ if ((0xff & (u8) ~ (bcsp->rx_skb->data[0] + bcsp->rx_skb->data[1] +
-+ bcsp->rx_skb->data[2])) != bcsp->rx_skb->data[3]) {
-+ BT_ERR("Error in BCSP hdr checksum");
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ if (bcsp->rx_skb->data[0] & 0x80 /* reliable pkt */
-+ && (bcsp->rx_skb->data[0] & 0x07) != bcsp->rxseq_txack) {
-+ BT_ERR ("Out-of-order packet arrived, got %u expected %u",
-+ bcsp->rx_skb->data[0] & 0x07, bcsp->rxseq_txack);
-+
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ bcsp->rx_state = BCSP_W4_DATA;
-+ bcsp->rx_count = (bcsp->rx_skb->data[1] >> 4) +
-+ (bcsp->rx_skb->data[2] << 4); /* May be 0 */
-+ continue;
-+
-+ case BCSP_W4_DATA:
-+ if (bcsp->rx_skb->data[0] & 0x40) { /* pkt with crc */
-+ bcsp->rx_state = BCSP_W4_CRC;
-+ bcsp->rx_count = 2;
-+ } else
-+ bcsp_complete_rx_pkt(hu);
-+ continue;
-+
-+ case BCSP_W4_CRC:
-+ if (bcsp_crc_reverse(bcsp->message_crc) !=
-+ (bcsp->rx_skb->data[bcsp->rx_skb->len - 2] << 8) +
-+ bcsp->rx_skb->data[bcsp->rx_skb->len - 1]) {
-+
-+ BT_ERR ("Checksum failed: computed %04x received %04x",
-+ bcsp_crc_reverse(bcsp->message_crc),
-+ (bcsp->rx_skb-> data[bcsp->rx_skb->len - 2] << 8) +
-+ bcsp->rx_skb->data[bcsp->rx_skb->len - 1]);
-+
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ skb_trim(bcsp->rx_skb, bcsp->rx_skb->len - 2);
-+ bcsp_complete_rx_pkt(hu);
-+ continue;
-+
-+ case BCSP_W4_PKT_DELIMITER:
-+ switch (*ptr) {
-+ case 0xc0:
-+ bcsp->rx_state = BCSP_W4_PKT_START;
-+ break;
-+ default:
-+ /*BT_ERR("Ignoring byte %02x", *ptr);*/
-+ break;
-+ }
-+ ptr++; count--;
-+ break;
-+
-+ case BCSP_W4_PKT_START:
-+ switch (*ptr) {
-+ case 0xc0:
-+ ptr++; count--;
-+ break;
-+
-+ default:
-+ bcsp->rx_state = BCSP_W4_BCSP_HDR;
-+ bcsp->rx_count = 4;
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ BCSP_CRC_INIT(bcsp->message_crc);
-+
-+ /* Do not increment ptr or decrement count
-+ * Allocate packet. Max len of a BCSP pkt=
-+ * 0xFFF (payload) +4 (header) +2 (crc) */
-+
-+ bcsp->rx_skb = bluez_skb_alloc(0x1005, GFP_ATOMIC);
-+ if (!bcsp->rx_skb) {
-+ BT_ERR("Can't allocate mem for new packet");
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ return 0;
-+ }
-+ bcsp->rx_skb->dev = (void *) &hu->hdev;
-+ break;
-+ }
-+ break;
-+ }
-+ }
-+ return count;
-+}
-+
-+ /* Arrange to retransmit all messages in the relq. */
-+static void bcsp_timed_event(unsigned long arg)
-+{
-+ struct hci_uart *hu = (struct hci_uart *) arg;
-+ struct bcsp_struct *bcsp = (struct bcsp_struct *) hu->priv;
-+ struct sk_buff *skb;
-+ unsigned long flags;
-+
-+ BT_DBG("hu %p retransmitting %u pkts", hu, bcsp->unack.qlen);
-+
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ while ((skb = __skb_dequeue_tail(&bcsp->unack)) != NULL) {
-+ bcsp->msgq_txseq = (bcsp->msgq_txseq - 1) & 0x07;
-+ skb_queue_head(&bcsp->rel, skb);
-+ }
-+
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+ hci_uart_tx_wakeup(hu);
-+}
-+
-+static int bcsp_open(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ bcsp = kmalloc(sizeof(*bcsp), GFP_ATOMIC);
-+ if (!bcsp)
-+ return -ENOMEM;
-+ memset(bcsp, 0, sizeof(*bcsp));
-+
-+ hu->priv = bcsp;
-+ skb_queue_head_init(&bcsp->unack);
-+ skb_queue_head_init(&bcsp->rel);
-+ skb_queue_head_init(&bcsp->unrel);
-+
-+ init_timer(&bcsp->tbcsp);
-+ bcsp->tbcsp.function = bcsp_timed_event;
-+ bcsp->tbcsp.data = (u_long) hu;
-+
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+
-+ return 0;
-+}
-+
-+static int bcsp_close(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ hu->priv = NULL;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ skb_queue_purge(&bcsp->unack);
-+ skb_queue_purge(&bcsp->rel);
-+ skb_queue_purge(&bcsp->unrel);
-+ del_timer(&bcsp->tbcsp);
-+
-+ kfree(bcsp);
-+ return 0;
-+}
-+
-+static struct hci_uart_proto bcsp = {
-+ id: HCI_UART_BCSP,
-+ open: bcsp_open,
-+ close: bcsp_close,
-+ enqueue: bcsp_enqueue,
-+ dequeue: bcsp_dequeue,
-+ recv: bcsp_recv,
-+ flush: bcsp_flush
-+};
-+
-+int bcsp_init(void)
-+{
-+ return hci_uart_register_proto(&bcsp);
-+}
-+
-+int bcsp_deinit(void)
-+{
-+ return hci_uart_unregister_proto(&bcsp);
-+}
-diff -Nur c3000_pre/linux/drivers/bluetooth/hci_bcsp.h c3000_work/linux/drivers/bluetooth/hci_bcsp.h
---- c3000_pre/linux/drivers/bluetooth/hci_bcsp.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/hci_bcsp.h 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,70 @@
-+/*
-+ BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ).
-+ Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com>
-+
-+ Based on
-+ hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com>
-+ ABCSP by Carl Orsborn <cjo@csr.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_bcsp.h,v 1.2 2002/09/26 05:05:14 maxk Exp $
-+ */
-+
-+#ifndef __HCI_BCSP_H__
-+#define __HCI_BCSP_H__
-+
-+#define BCSP_TXWINSIZE 4
-+
-+#define BCSP_ACK_PKT 0x05
-+#define BCSP_LE_PKT 0x06
-+
-+struct bcsp_struct {
-+ struct sk_buff_head unack; /* Unack'ed packets queue */
-+ struct sk_buff_head rel; /* Reliable packets queue */
-+ struct sk_buff_head unrel; /* Unreliable packets queue */
-+
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+ u8 rxseq_txack; /* rxseq == txack. */
-+ u8 rxack; /* Last packet sent by us that the peer ack'ed */
-+ struct timer_list tbcsp;
-+
-+ enum {
-+ BCSP_W4_PKT_DELIMITER,
-+ BCSP_W4_PKT_START,
-+ BCSP_W4_BCSP_HDR,
-+ BCSP_W4_DATA,
-+ BCSP_W4_CRC
-+ } rx_state;
-+
-+ enum {
-+ BCSP_ESCSTATE_NOESC,
-+ BCSP_ESCSTATE_ESC
-+ } rx_esc_state;
-+
-+ u16 message_crc;
-+ u8 txack_req; /* Do we need to send ack's to the peer? */
-+
-+ /* Reliable packet sequence number - used to assign seq to each rel pkt. */
-+ u8 msgq_txseq;
-+};
-+
-+#endif /* __HCI_BCSP_H__ */
-diff -Nur c3000_pre/linux/drivers/bluetooth/hci_h4.c c3000_work/linux/drivers/bluetooth/hci_h4.c
---- c3000_pre/linux/drivers/bluetooth/hci_h4.c 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/hci_h4.c 2004-12-16 23:01:14.000000000 +0900
-@@ -25,15 +25,14 @@
- /*
- * BlueZ HCI UART(H4) protocol.
- *
-- * $Id: hci_h4.c,v 1.2 2002/04/17 17:37:20 maxk Exp $
-+ * $Id: hci_h4.c,v 1.3 2002/09/09 01:17:32 maxk Exp $
- */
--#define VERSION "1.1"
-+#define VERSION "1.2"
-
- #include <linux/config.h>
- #include <linux/module.h>
-
- #include <linux/version.h>
--#include <linux/config.h>
- #include <linux/kernel.h>
- #include <linux/init.h>
- #include <linux/sched.h>
-@@ -64,63 +63,61 @@
- #endif
-
- /* Initialize protocol */
--static int h4_open(struct n_hci *n_hci)
-+static int h4_open(struct hci_uart *hu)
- {
- struct h4_struct *h4;
-
-- BT_DBG("n_hci %p", n_hci);
-+ BT_DBG("hu %p", hu);
-
- h4 = kmalloc(sizeof(*h4), GFP_ATOMIC);
- if (!h4)
- return -ENOMEM;
- memset(h4, 0, sizeof(*h4));
-
-- n_hci->priv = h4;
-+ skb_queue_head_init(&h4->txq);
-+
-+ hu->priv = h4;
- return 0;
- }
-
- /* Flush protocol data */
--static int h4_flush(struct n_hci *n_hci)
-+static int h4_flush(struct hci_uart *hu)
- {
-- BT_DBG("n_hci %p", n_hci);
-+ struct h4_struct *h4 = hu->priv;
-+
-+ BT_DBG("hu %p", hu);
-+ skb_queue_purge(&h4->txq);
- return 0;
- }
-
- /* Close protocol */
--static int h4_close(struct n_hci *n_hci)
-+static int h4_close(struct hci_uart *hu)
- {
-- struct h4_struct *h4 = n_hci->priv;
-- n_hci->priv = NULL;
-+ struct h4_struct *h4 = hu->priv;
-+ hu->priv = NULL;
-
-- BT_DBG("n_hci %p", n_hci);
-+ BT_DBG("hu %p", hu);
-
-+ skb_queue_purge(&h4->txq);
- if (h4->rx_skb)
- kfree_skb(h4->rx_skb);
-
-+ hu->priv = NULL;
- kfree(h4);
- return 0;
- }
-
--/* Send data */
--static int h4_send(struct n_hci *n_hci, void *data, int len)
-+/* Enqueue frame for transmittion (padding, crc, etc) */
-+static int h4_enqueue(struct hci_uart *hu, struct sk_buff *skb)
- {
-- struct tty_struct *tty = n_hci->tty;
--
-- BT_DBG("n_hci %p len %d", n_hci, len);
-+ struct h4_struct *h4 = hu->priv;
-
-- /* Send frame to TTY driver */
-- tty->flags |= (1 << TTY_DO_WRITE_WAKEUP);
-- return tty->driver.write(tty, 0, data, len);
--}
--
--/* Init frame before queueing (padding, crc, etc) */
--static struct sk_buff* h4_preq(struct n_hci *n_hci, struct sk_buff *skb)
--{
-- BT_DBG("n_hci %p skb %p", n_hci, skb);
-+ BT_DBG("hu %p skb %p", hu, skb);
-
- /* Prepend skb with frame type */
- memcpy(skb_push(skb, 1), &skb->pkt_type, 1);
-- return skb;
-+ skb_queue_tail(&h4->txq, skb);
-+ return 0;
- }
-
- static inline int h4_check_data_len(struct h4_struct *h4, int len)
-@@ -132,7 +129,7 @@
- BT_DMP(h4->rx_skb->data, h4->rx_skb->len);
- hci_recv_frame(h4->rx_skb);
- } else if (len > room) {
-- BT_ERR("Data length is to large");
-+ BT_ERR("Data length is too large");
- kfree_skb(h4->rx_skb);
- } else {
- h4->rx_state = H4_W4_DATA;
-@@ -147,16 +144,17 @@
- }
-
- /* Recv data */
--static int h4_recv(struct n_hci *n_hci, void *data, int count)
-+static int h4_recv(struct hci_uart *hu, void *data, int count)
- {
-- struct h4_struct *h4 = n_hci->priv;
-+ struct h4_struct *h4 = hu->priv;
- register char *ptr;
- hci_event_hdr *eh;
- hci_acl_hdr *ah;
- hci_sco_hdr *sh;
- register int len, type, dlen;
-
-- BT_DBG("n_hci %p count %d rx_state %ld rx_count %ld", n_hci, count, h4->rx_state, h4->rx_count);
-+ BT_DBG("hu %p count %d rx_state %ld rx_count %ld",
-+ hu, count, h4->rx_state, h4->rx_count);
-
- ptr = data;
- while (count) {
-@@ -204,7 +202,7 @@
-
- h4_check_data_len(h4, sh->dlen);
- continue;
-- };
-+ }
- }
-
- /* H4_W4_PACKET_TYPE */
-@@ -232,7 +230,7 @@
-
- default:
- BT_ERR("Unknown HCI packet type %2.2x", (__u8)*ptr);
-- n_hci->hdev.stat.err_rx++;
-+ hu->hdev.stat.err_rx++;
- ptr++; count--;
- continue;
- };
-@@ -246,20 +244,26 @@
- h4->rx_count = 0;
- return 0;
- }
-- h4->rx_skb->dev = (void *) &n_hci->hdev;
-+ h4->rx_skb->dev = (void *) &hu->hdev;
- h4->rx_skb->pkt_type = type;
- }
- return count;
- }
-
-+static struct sk_buff *h4_dequeue(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+ return skb_dequeue(&h4->txq);
-+}
-+
- static struct hci_uart_proto h4p = {
-- id: HCI_UART_H4,
-- open: h4_open,
-- close: h4_close,
-- send: h4_send,
-- recv: h4_recv,
-- preq: h4_preq,
-- flush: h4_flush,
-+ id: HCI_UART_H4,
-+ open: h4_open,
-+ close: h4_close,
-+ recv: h4_recv,
-+ enqueue: h4_enqueue,
-+ dequeue: h4_dequeue,
-+ flush: h4_flush,
- };
-
- int h4_init(void)
-diff -Nur c3000_pre/linux/drivers/bluetooth/hci_h4.h c3000_work/linux/drivers/bluetooth/hci_h4.h
---- c3000_pre/linux/drivers/bluetooth/hci_h4.h 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/hci_h4.h 2004-12-16 23:01:14.000000000 +0900
-@@ -23,7 +23,7 @@
- */
-
- /*
-- * $Id: hci_h4.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $
-+ * $Id: hci_h4.h,v 1.2 2002/09/09 01:17:32 maxk Exp $
- */
-
- #ifdef __KERNEL__
-@@ -31,6 +31,7 @@
- unsigned long rx_state;
- unsigned long rx_count;
- struct sk_buff *rx_skb;
-+ struct sk_buff_head txq;
- };
-
- /* H4 receiver States */
-diff -Nur c3000_pre/linux/drivers/bluetooth/hci_ldisc.c c3000_work/linux/drivers/bluetooth/hci_ldisc.c
---- c3000_pre/linux/drivers/bluetooth/hci_ldisc.c 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/hci_ldisc.c 2004-12-16 23:01:14.000000000 +0900
-@@ -25,9 +25,9 @@
- /*
- * BlueZ HCI UART driver.
- *
-- * $Id: hci_ldisc.c,v 1.2 2002/04/17 17:37:20 maxk Exp $
-+ * $Id: hci_ldisc.c,v 1.5 2002/10/02 18:37:20 maxk Exp $
- */
--#define VERSION "2.0"
-+#define VERSION "2.1"
-
- #include <linux/config.h>
- #include <linux/module.h>
-@@ -87,16 +87,86 @@
- return 0;
- }
-
--static struct hci_uart_proto *n_hci_get_proto(unsigned int id)
-+static struct hci_uart_proto *hci_uart_get_proto(unsigned int id)
- {
- if (id >= HCI_UART_MAX_PROTO)
- return NULL;
- return hup[id];
- }
-
-+static inline void hci_uart_tx_complete(struct hci_uart *hu, int pkt_type)
-+{
-+ struct hci_dev *hdev = &hu->hdev;
-+
-+ /* Update HCI stat counters */
-+ switch (pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ }
-+}
-+
-+static inline struct sk_buff *hci_uart_dequeue(struct hci_uart *hu)
-+{
-+ struct sk_buff *skb = hu->tx_skb;
-+ if (!skb)
-+ skb = hu->proto->dequeue(hu);
-+ else
-+ hu->tx_skb = NULL;
-+ return skb;
-+}
-+
-+int hci_uart_tx_wakeup(struct hci_uart *hu)
-+{
-+ struct tty_struct *tty = hu->tty;
-+ struct hci_dev *hdev = &hu->hdev;
-+ struct sk_buff *skb;
-+
-+ if (test_and_set_bit(HCI_UART_SENDING, &hu->tx_state)) {
-+ set_bit(HCI_UART_TX_WAKEUP, &hu->tx_state);
-+ return 0;
-+ }
-+
-+ BT_DBG("");
-+
-+restart:
-+ clear_bit(HCI_UART_TX_WAKEUP, &hu->tx_state);
-+
-+ while ((skb = hci_uart_dequeue(hu))) {
-+ int len;
-+
-+ set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
-+ len = tty->driver.write(tty, 0, skb->data, skb->len);
-+ hdev->stat.byte_tx += len;
-+
-+ skb_pull(skb, len);
-+ if (skb->len) {
-+ hu->tx_skb = skb;
-+ break;
-+ }
-+
-+ hci_uart_tx_complete(hu, skb->pkt_type);
-+ kfree_skb(skb);
-+ }
-+
-+ if (test_bit(HCI_UART_TX_WAKEUP, &hu->tx_state))
-+ goto restart;
-+
-+ clear_bit(HCI_UART_SENDING, &hu->tx_state);
-+ return 0;
-+}
-+
- /* ------- Interface to HCI layer ------ */
- /* Initialize device */
--static int n_hci_open(struct hci_dev *hdev)
-+static int hci_uart_open(struct hci_dev *hdev)
- {
- BT_DBG("%s %p", hdev->name, hdev);
-
-@@ -107,15 +177,16 @@
- }
-
- /* Reset device */
--static int n_hci_flush(struct hci_dev *hdev)
-+static int hci_uart_flush(struct hci_dev *hdev)
- {
-- struct n_hci *n_hci = (struct n_hci *) hdev->driver_data;
-- struct tty_struct *tty = n_hci->tty;
-+ struct hci_uart *hu = (struct hci_uart *) hdev->driver_data;
-+ struct tty_struct *tty = hu->tty;
-
- BT_DBG("hdev %p tty %p", hdev, tty);
-
-- /* Drop TX queue */
-- skb_queue_purge(&n_hci->txq);
-+ if (hu->tx_skb) {
-+ kfree_skb(hu->tx_skb); hu->tx_skb = NULL;
-+ }
-
- /* Flush any pending characters in the driver and discipline. */
- if (tty->ldisc.flush_buffer)
-@@ -124,80 +195,30 @@
- if (tty->driver.flush_buffer)
- tty->driver.flush_buffer(tty);
-
-- if (n_hci->proto->flush)
-- n_hci->proto->flush(n_hci);
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ hu->proto->flush(hu);
-
- return 0;
- }
-
- /* Close device */
--static int n_hci_close(struct hci_dev *hdev)
-+static int hci_uart_close(struct hci_dev *hdev)
- {
- BT_DBG("hdev %p", hdev);
-
- if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
- return 0;
-
-- n_hci_flush(hdev);
-- return 0;
--}
--
--static int n_hci_tx_wakeup(struct n_hci *n_hci)
--{
-- struct hci_dev *hdev = &n_hci->hdev;
--
-- if (test_and_set_bit(N_HCI_SENDING, &n_hci->tx_state)) {
-- set_bit(N_HCI_TX_WAKEUP, &n_hci->tx_state);
-- return 0;
-- }
--
-- BT_DBG("");
-- do {
-- register struct sk_buff *skb;
-- register int len;
--
-- clear_bit(N_HCI_TX_WAKEUP, &n_hci->tx_state);
--
-- if (!(skb = skb_dequeue(&n_hci->txq)))
-- break;
--
-- len = n_hci->proto->send(n_hci, skb->data, skb->len);
-- n_hci->hdev.stat.byte_tx += len;
--
-- if (len == skb->len) {
-- /* Complete frame was sent */
--
-- switch (skb->pkt_type) {
-- case HCI_COMMAND_PKT:
-- hdev->stat.cmd_tx++;
-- break;
--
-- case HCI_ACLDATA_PKT:
-- hdev->stat.acl_tx++;
-- break;
--
-- case HCI_SCODATA_PKT:
-- hdev->stat.cmd_tx++;
-- break;
-- };
--
-- kfree_skb(skb);
-- } else {
-- /* Subtract sent part and requeue */
-- skb_pull(skb, len);
-- skb_queue_head(&n_hci->txq, skb);
-- }
-- } while (test_bit(N_HCI_TX_WAKEUP, &n_hci->tx_state));
-- clear_bit(N_HCI_SENDING, &n_hci->tx_state);
-+ hci_uart_flush(hdev);
- return 0;
- }
-
- /* Send frames from HCI layer */
--static int n_hci_send_frame(struct sk_buff *skb)
-+static int hci_uart_send_frame(struct sk_buff *skb)
- {
- struct hci_dev* hdev = (struct hci_dev *) skb->dev;
- struct tty_struct *tty;
-- struct n_hci *n_hci;
-+ struct hci_uart *hu;
-
- if (!hdev) {
- BT_ERR("Frame for uknown device (hdev=NULL)");
-@@ -207,66 +228,60 @@
- if (!test_bit(HCI_RUNNING, &hdev->flags))
- return -EBUSY;
-
-- n_hci = (struct n_hci *) hdev->driver_data;
-- tty = n_hci->tty;
-+ hu = (struct hci_uart *) hdev->driver_data;
-+ tty = hu->tty;
-
- BT_DBG("%s: type %d len %d", hdev->name, skb->pkt_type, skb->len);
-
-- if (n_hci->proto->preq) {
-- skb = n_hci->proto->preq(n_hci, skb);
-- if (!skb)
-- return 0;
-- }
--
-- skb_queue_tail(&n_hci->txq, skb);
-- n_hci_tx_wakeup(n_hci);
-+ hu->proto->enqueue(hu, skb);
-+
-+ hci_uart_tx_wakeup(hu);
- return 0;
- }
-
--static void n_hci_destruct(struct hci_dev *hdev)
-+static void hci_uart_destruct(struct hci_dev *hdev)
- {
-- struct n_hci *n_hci;
-+ struct hci_uart *hu;
-
- if (!hdev) return;
-
- BT_DBG("%s", hdev->name);
-
-- n_hci = (struct n_hci *) hdev->driver_data;
-- kfree(n_hci);
-+ hu = (struct hci_uart *) hdev->driver_data;
-+ kfree(hu);
-
- MOD_DEC_USE_COUNT;
- }
-
- /* ------ LDISC part ------ */
--/* n_hci_tty_open
-+/* hci_uart_tty_open
- *
-- * Called when line discipline changed to N_HCI.
-+ * Called when line discipline changed to HCI_UART.
- *
- * Arguments:
- * tty pointer to tty info structure
- * Return Value:
- * 0 if success, otherwise error code
- */
--static int n_hci_tty_open(struct tty_struct *tty)
-+static int hci_uart_tty_open(struct tty_struct *tty)
- {
-- struct n_hci *n_hci = (void *)tty->disc_data;
-+ struct hci_uart *hu = (void *) tty->disc_data;
-
- BT_DBG("tty %p", tty);
-
-- if (n_hci)
-+ if (hu)
- return -EEXIST;
-
-- if (!(n_hci = kmalloc(sizeof(struct n_hci), GFP_KERNEL))) {
-+ if (!(hu = kmalloc(sizeof(struct hci_uart), GFP_KERNEL))) {
- BT_ERR("Can't allocate controll structure");
- return -ENFILE;
- }
-- memset(n_hci, 0, sizeof(struct n_hci));
-+ memset(hu, 0, sizeof(struct hci_uart));
-
-- tty->disc_data = n_hci;
-- n_hci->tty = tty;
-+ tty->disc_data = hu;
-+ hu->tty = tty;
-
-- spin_lock_init(&n_hci->rx_lock);
-- skb_queue_head_init(&n_hci->txq);
-+ spin_lock_init(&hu->rx_lock);
-
- /* Flush any pending characters in the driver and line discipline */
- if (tty->ldisc.flush_buffer)
-@@ -279,34 +294,34 @@
- return 0;
- }
-
--/* n_hci_tty_close()
-+/* hci_uart_tty_close()
- *
- * Called when the line discipline is changed to something
- * else, the tty is closed, or the tty detects a hangup.
- */
--static void n_hci_tty_close(struct tty_struct *tty)
-+static void hci_uart_tty_close(struct tty_struct *tty)
- {
-- struct n_hci *n_hci = (void *)tty->disc_data;
-+ struct hci_uart *hu = (void *)tty->disc_data;
-
- BT_DBG("tty %p", tty);
-
- /* Detach from the tty */
- tty->disc_data = NULL;
-
-- if (n_hci) {
-- struct hci_dev *hdev = &n_hci->hdev;
-- n_hci_close(hdev);
-+ if (hu) {
-+ struct hci_dev *hdev = &hu->hdev;
-+ hci_uart_close(hdev);
-
-- if (test_and_clear_bit(N_HCI_PROTO_SET, &n_hci->flags)) {
-- n_hci->proto->close(n_hci);
-+ if (test_and_clear_bit(HCI_UART_PROTO_SET, &hu->flags)) {
-+ hu->proto->close(hu);
- hci_unregister_dev(hdev);
- }
--
-+
- MOD_DEC_USE_COUNT;
- }
- }
-
--/* n_hci_tty_wakeup()
-+/* hci_uart_tty_wakeup()
- *
- * Callback for transmit wakeup. Called when low level
- * device driver can accept more send data.
-@@ -314,24 +329,25 @@
- * Arguments: tty pointer to associated tty instance data
- * Return Value: None
- */
--static void n_hci_tty_wakeup( struct tty_struct *tty )
-+static void hci_uart_tty_wakeup(struct tty_struct *tty)
- {
-- struct n_hci *n_hci = (void *)tty->disc_data;
-+ struct hci_uart *hu = (void *)tty->disc_data;
-
- BT_DBG("");
-
-- if (!n_hci)
-+ if (!hu)
- return;
-
-- tty->flags &= ~(1 << TTY_DO_WRITE_WAKEUP);
-+ clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
-
-- if (tty != n_hci->tty)
-+ if (tty != hu->tty)
- return;
-
-- n_hci_tx_wakeup(n_hci);
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ hci_uart_tx_wakeup(hu);
- }
-
--/* n_hci_tty_room()
-+/* hci_uart_tty_room()
- *
- * Callback function from tty driver. Return the amount of
- * space left in the receiver's buffer to decide if remote
-@@ -340,12 +356,12 @@
- * Arguments: tty pointer to associated tty instance data
- * Return Value: number of bytes left in receive buffer
- */
--static int n_hci_tty_room (struct tty_struct *tty)
-+static int hci_uart_tty_room (struct tty_struct *tty)
- {
- return 65536;
- }
-
--/* n_hci_tty_receive()
-+/* hci_uart_tty_receive()
- *
- * Called by tty low level driver when receive data is
- * available.
-@@ -357,42 +373,42 @@
- *
- * Return Value: None
- */
--static void n_hci_tty_receive(struct tty_struct *tty, const __u8 * data, char *flags, int count)
-+static void hci_uart_tty_receive(struct tty_struct *tty, const __u8 *data, char *flags, int count)
- {
-- struct n_hci *n_hci = (void *)tty->disc_data;
-+ struct hci_uart *hu = (void *)tty->disc_data;
-
-- if (!n_hci || tty != n_hci->tty)
-+ if (!hu || tty != hu->tty)
- return;
-
-- if (!test_bit(N_HCI_PROTO_SET, &n_hci->flags))
-+ if (!test_bit(HCI_UART_PROTO_SET, &hu->flags))
- return;
-
-- spin_lock(&n_hci->rx_lock);
-- n_hci->proto->recv(n_hci, (void *) data, count);
-- n_hci->hdev.stat.byte_rx += count;
-- spin_unlock(&n_hci->rx_lock);
-+ spin_lock(&hu->rx_lock);
-+ hu->proto->recv(hu, (void *) data, count);
-+ hu->hdev.stat.byte_rx += count;
-+ spin_unlock(&hu->rx_lock);
-
- if (test_and_clear_bit(TTY_THROTTLED,&tty->flags) && tty->driver.unthrottle)
- tty->driver.unthrottle(tty);
- }
-
--static int n_hci_register_dev(struct n_hci *n_hci)
-+static int hci_uart_register_dev(struct hci_uart *hu)
- {
- struct hci_dev *hdev;
-
- BT_DBG("");
-
- /* Initialize and register HCI device */
-- hdev = &n_hci->hdev;
-+ hdev = &hu->hdev;
-
- hdev->type = HCI_UART;
-- hdev->driver_data = n_hci;
-+ hdev->driver_data = hu;
-
-- hdev->open = n_hci_open;
-- hdev->close = n_hci_close;
-- hdev->flush = n_hci_flush;
-- hdev->send = n_hci_send_frame;
-- hdev->destruct = n_hci_destruct;
-+ hdev->open = hci_uart_open;
-+ hdev->close = hci_uart_close;
-+ hdev->flush = hci_uart_flush;
-+ hdev->send = hci_uart_send_frame;
-+ hdev->destruct = hci_uart_destruct;
-
- if (hci_register_dev(hdev) < 0) {
- BT_ERR("Can't register HCI device %s", hdev->name);
-@@ -402,30 +418,30 @@
- return 0;
- }
-
--static int n_hci_set_proto(struct n_hci *n_hci, int id)
-+static int hci_uart_set_proto(struct hci_uart *hu, int id)
- {
- struct hci_uart_proto *p;
- int err;
-
-- p = n_hci_get_proto(id);
-+ p = hci_uart_get_proto(id);
- if (!p)
- return -EPROTONOSUPPORT;
-
-- err = p->open(n_hci);
-+ err = p->open(hu);
- if (err)
- return err;
-
-- n_hci->proto = p;
-+ hu->proto = p;
-
-- err = n_hci_register_dev(n_hci);
-+ err = hci_uart_register_dev(hu);
- if (err) {
-- p->close(n_hci);
-+ p->close(hu);
- return err;
- }
- return 0;
- }
-
--/* n_hci_tty_ioctl()
-+/* hci_uart_tty_ioctl()
- *
- * Process IOCTL system call for the tty device.
- *
-@@ -438,24 +454,24 @@
- *
- * Return Value: Command dependent
- */
--static int n_hci_tty_ioctl(struct tty_struct *tty, struct file * file,
-+static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file * file,
- unsigned int cmd, unsigned long arg)
- {
-- struct n_hci *n_hci = (void *)tty->disc_data;
-+ struct hci_uart *hu = (void *)tty->disc_data;
- int err = 0;
-
- BT_DBG("");
-
- /* Verify the status of the device */
-- if (!n_hci)
-+ if (!hu)
- return -EBADF;
-
- switch (cmd) {
- case HCIUARTSETPROTO:
-- if (!test_and_set_bit(N_HCI_PROTO_SET, &n_hci->flags)) {
-- err = n_hci_set_proto(n_hci, arg);
-+ if (!test_and_set_bit(HCI_UART_PROTO_SET, &hu->flags)) {
-+ err = hci_uart_set_proto(hu, arg);
- if (err) {
-- clear_bit(N_HCI_PROTO_SET, &n_hci->flags);
-+ clear_bit(HCI_UART_PROTO_SET, &hu->flags);
- return err;
- }
- tty->low_latency = 1;
-@@ -463,8 +479,8 @@
- return -EBUSY;
-
- case HCIUARTGETPROTO:
-- if (test_bit(N_HCI_PROTO_SET, &n_hci->flags))
-- return n_hci->proto->id;
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ return hu->proto->id;
- return -EUNATCH;
-
- default:
-@@ -478,15 +494,15 @@
- /*
- * We don't provide read/write/poll interface for user space.
- */
--static ssize_t n_hci_tty_read(struct tty_struct *tty, struct file *file, unsigned char *buf, size_t nr)
-+static ssize_t hci_uart_tty_read(struct tty_struct *tty, struct file *file, unsigned char *buf, size_t nr)
- {
- return 0;
- }
--static ssize_t n_hci_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *data, size_t count)
-+static ssize_t hci_uart_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *data, size_t count)
- {
- return 0;
- }
--static unsigned int n_hci_tty_poll(struct tty_struct *tty, struct file *filp, poll_table *wait)
-+static unsigned int hci_uart_tty_poll(struct tty_struct *tty, struct file *filp, poll_table *wait)
- {
- return 0;
- }
-@@ -495,10 +511,14 @@
- int h4_init(void);
- int h4_deinit(void);
- #endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+int bcsp_init(void);
-+int bcsp_deinit(void);
-+#endif
-
--int __init n_hci_init(void)
-+int __init hci_uart_init(void)
- {
-- static struct tty_ldisc n_hci_ldisc;
-+ static struct tty_ldisc hci_uart_ldisc;
- int err;
-
- BT_INFO("BlueZ HCI UART driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-@@ -507,20 +527,20 @@
-
- /* Register the tty discipline */
-
-- memset(&n_hci_ldisc, 0, sizeof (n_hci_ldisc));
-- n_hci_ldisc.magic = TTY_LDISC_MAGIC;
-- n_hci_ldisc.name = "n_hci";
-- n_hci_ldisc.open = n_hci_tty_open;
-- n_hci_ldisc.close = n_hci_tty_close;
-- n_hci_ldisc.read = n_hci_tty_read;
-- n_hci_ldisc.write = n_hci_tty_write;
-- n_hci_ldisc.ioctl = n_hci_tty_ioctl;
-- n_hci_ldisc.poll = n_hci_tty_poll;
-- n_hci_ldisc.receive_room= n_hci_tty_room;
-- n_hci_ldisc.receive_buf = n_hci_tty_receive;
-- n_hci_ldisc.write_wakeup= n_hci_tty_wakeup;
-+ memset(&hci_uart_ldisc, 0, sizeof (hci_uart_ldisc));
-+ hci_uart_ldisc.magic = TTY_LDISC_MAGIC;
-+ hci_uart_ldisc.name = "n_hci";
-+ hci_uart_ldisc.open = hci_uart_tty_open;
-+ hci_uart_ldisc.close = hci_uart_tty_close;
-+ hci_uart_ldisc.read = hci_uart_tty_read;
-+ hci_uart_ldisc.write = hci_uart_tty_write;
-+ hci_uart_ldisc.ioctl = hci_uart_tty_ioctl;
-+ hci_uart_ldisc.poll = hci_uart_tty_poll;
-+ hci_uart_ldisc.receive_room= hci_uart_tty_room;
-+ hci_uart_ldisc.receive_buf = hci_uart_tty_receive;
-+ hci_uart_ldisc.write_wakeup= hci_uart_tty_wakeup;
-
-- if ((err = tty_register_ldisc(N_HCI, &n_hci_ldisc))) {
-+ if ((err = tty_register_ldisc(N_HCI, &hci_uart_ldisc))) {
- BT_ERR("Can't register HCI line discipline (%d)", err);
- return err;
- }
-@@ -528,25 +548,31 @@
- #ifdef CONFIG_BLUEZ_HCIUART_H4
- h4_init();
- #endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+ bcsp_init();
-+#endif
-
- return 0;
- }
-
--void n_hci_cleanup(void)
-+void hci_uart_cleanup(void)
- {
- int err;
-
- #ifdef CONFIG_BLUEZ_HCIUART_H4
- h4_deinit();
- #endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+ bcsp_deinit();
-+#endif
-
- /* Release tty registration of line discipline */
- if ((err = tty_register_ldisc(N_HCI, NULL)))
- BT_ERR("Can't unregister HCI line discipline (%d)", err);
- }
-
--module_init(n_hci_init);
--module_exit(n_hci_cleanup);
-+module_init(hci_uart_init);
-+module_exit(hci_uart_cleanup);
-
- MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
- MODULE_DESCRIPTION("BlueZ HCI UART driver ver " VERSION);
-diff -Nur c3000_pre/linux/drivers/bluetooth/hci_uart.h c3000_work/linux/drivers/bluetooth/hci_uart.h
---- c3000_pre/linux/drivers/bluetooth/hci_uart.h 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/hci_uart.h 2004-12-16 23:01:14.000000000 +0900
-@@ -23,10 +23,10 @@
- */
-
- /*
-- * $Id: hci_uart.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $
-+ * $Id: hci_uart.h,v 1.2 2002/09/09 01:17:32 maxk Exp $
- */
-
--#ifndef N_HCI
-+#ifndef N_HCI
- #define N_HCI 15
- #endif
-
-@@ -35,26 +35,27 @@
- #define HCIUARTGETPROTO _IOR('U', 201, int)
-
- /* UART protocols */
--#define HCI_UART_MAX_PROTO 3
-+#define HCI_UART_MAX_PROTO 4
-
- #define HCI_UART_H4 0
- #define HCI_UART_BCSP 1
--#define HCI_UART_NCSP 2
-+#define HCI_UART_3WIRE 2
-+#define HCI_UART_H4DS 3
-
- #ifdef __KERNEL__
--struct n_hci;
-+struct hci_uart;
-
- struct hci_uart_proto {
- unsigned int id;
-- int (*open)(struct n_hci *n_hci);
-- int (*recv)(struct n_hci *n_hci, void *data, int len);
-- int (*send)(struct n_hci *n_hci, void *data, int len);
-- int (*close)(struct n_hci *n_hci);
-- int (*flush)(struct n_hci *n_hci);
-- struct sk_buff* (*preq)(struct n_hci *n_hci, struct sk_buff *skb);
-+ int (*open)(struct hci_uart *hu);
-+ int (*close)(struct hci_uart *hu);
-+ int (*flush)(struct hci_uart *hu);
-+ int (*recv)(struct hci_uart *hu, void *data, int len);
-+ int (*enqueue)(struct hci_uart *hu, struct sk_buff *skb);
-+ struct sk_buff *(*dequeue)(struct hci_uart *hu);
- };
-
--struct n_hci {
-+struct hci_uart {
- struct tty_struct *tty;
- struct hci_dev hdev;
- unsigned long flags;
-@@ -62,19 +63,20 @@
- struct hci_uart_proto *proto;
- void *priv;
-
-- struct sk_buff_head txq;
-- unsigned long tx_state;
-- spinlock_t rx_lock;
-+ struct sk_buff *tx_skb;
-+ unsigned long tx_state;
-+ spinlock_t rx_lock;
- };
-
--/* N_HCI flag bits */
--#define N_HCI_PROTO_SET 0x00
-+/* HCI_UART flag bits */
-+#define HCI_UART_PROTO_SET 0
-
- /* TX states */
--#define N_HCI_SENDING 1
--#define N_HCI_TX_WAKEUP 2
-+#define HCI_UART_SENDING 1
-+#define HCI_UART_TX_WAKEUP 2
-
- int hci_uart_register_proto(struct hci_uart_proto *p);
- int hci_uart_unregister_proto(struct hci_uart_proto *p);
-+int hci_uart_tx_wakeup(struct hci_uart *hu);
-
- #endif /* __KERNEL__ */
-diff -Nur c3000_pre/linux/drivers/bluetooth/hci_usb.c c3000_work/linux/drivers/bluetooth/hci_usb.c
---- c3000_pre/linux/drivers/bluetooth/hci_usb.c 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/hci_usb.c 2004-12-16 23:01:14.000000000 +0900
-@@ -1,9 +1,10 @@
- /*
-- BlueZ - Bluetooth protocol stack for Linux
-+ HCI USB driver for Linux Bluetooth protocol stack (BlueZ)
- Copyright (C) 2000-2001 Qualcomm Incorporated
--
- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-
-+ Copyright (C) 2003 Maxim Krasnyansky <maxk@qualcomm.com>
-+
- 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;
-@@ -23,20 +24,17 @@
- */
-
- /*
-- * BlueZ HCI USB driver.
- * Based on original USB Bluetooth driver for Linux kernel
- * Copyright (c) 2000 Greg Kroah-Hartman <greg@kroah.com>
- * Copyright (c) 2000 Mark Douglas Corner <mcorner@umich.edu>
- *
- * $Id: hci_usb.c,v 1.8 2002/07/18 17:23:09 maxk Exp $
- */
--#define VERSION "2.1"
-+#define VERSION "2.7"
-
- #include <linux/config.h>
- #include <linux/module.h>
-
--#define __KERNEL_SYSCALLS__
--
- #include <linux/version.h>
- #include <linux/kernel.h>
- #include <linux/init.h>
-@@ -49,15 +47,13 @@
- #include <linux/errno.h>
- #include <linux/string.h>
- #include <linux/skbuff.h>
--#include <linux/kmod.h>
-
- #include <linux/usb.h>
-
- #include <net/bluetooth/bluetooth.h>
- #include <net/bluetooth/hci_core.h>
--#include "hci_usb.h"
-
--#define HCI_MAX_PENDING (HCI_MAX_BULK_RX + HCI_MAX_BULK_TX + 1)
-+#include "hci_usb.h"
-
- #ifndef HCI_USB_DEBUG
- #undef BT_DBG
-@@ -66,7 +62,7 @@
- #define BT_DMP( A... )
- #endif
-
--#ifndef CONFIG_BLUEZ_USB_ZERO_PACKET
-+#ifndef CONFIG_BLUEZ_HCIUSB_ZERO_PACKET
- #undef USB_ZERO_PACKET
- #define USB_ZERO_PACKET 0
- #endif
-@@ -77,6 +73,16 @@
- /* Generic Bluetooth USB device */
- { USB_DEVICE_INFO(HCI_DEV_CLASS, HCI_DEV_SUBCLASS, HCI_DEV_PROTOCOL) },
-
-+ /* AVM BlueFRITZ! USB v2.0 */
-+ { USB_DEVICE(0x057c, 0x3800) },
-+
-+ /* Bluetooth Ultraport Module from IBM */
-+ { USB_DEVICE(0x04bf, 0x030a) },
-+
-+ /* ALPS Modules with non-standard id */
-+ { USB_DEVICE(0x044e, 0x3001) },
-+ { USB_DEVICE(0x044e, 0x3002) },
-+
- /* Ericsson with non-standard id */
- { USB_DEVICE(0x0bdb, 0x1002) },
-
-@@ -85,116 +91,214 @@
-
- MODULE_DEVICE_TABLE (usb, bluetooth_ids);
-
--static struct usb_device_id ignore_ids[] = {
-+static struct usb_device_id blacklist_ids[] = {
- /* Broadcom BCM2033 without firmware */
-- { USB_DEVICE(0x0a5c, 0x2033) },
-+ { USB_DEVICE(0x0a5c, 0x2033), driver_info: HCI_IGNORE },
-+
-+ /* Broadcom BCM2035 */
-+ { USB_DEVICE(0x0a5c, 0x200a), driver_info: HCI_RESET },
-+
-+ /* ISSC Bluetooth Adapter v3.1 */
-+ { USB_DEVICE(0x1131, 0x1001), driver_info: HCI_RESET },
-+
-+ /* Digianswer device */
-+ { USB_DEVICE(0x08fd, 0x0001), driver_info: HCI_DIGIANSWER },
-+
-+ /* RTX Telecom based adapter with buggy SCO support */
-+ { USB_DEVICE(0x0400, 0x0807), driver_info: HCI_BROKEN_ISOC },
-
- { } /* Terminating entry */
- };
-
--static void hci_usb_interrupt(struct urb *urb);
-+struct _urb *_urb_alloc(int isoc, int gfp)
-+{
-+ struct _urb *_urb = kmalloc(sizeof(struct _urb) +
-+ sizeof(struct iso_packet_descriptor) * isoc, gfp);
-+ if (_urb) {
-+ memset(_urb, 0, sizeof(*_urb));
-+ spin_lock_init(&_urb->urb.lock);
-+ }
-+ return _urb;
-+}
-+
-+struct _urb *_urb_dequeue(struct _urb_queue *q)
-+{
-+ struct _urb *_urb = NULL;
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ {
-+ struct list_head *head = &q->head;
-+ struct list_head *next = head->next;
-+ if (next != head) {
-+ _urb = list_entry(next, struct _urb, list);
-+ list_del(next); _urb->queue = NULL;
-+ }
-+ }
-+ spin_unlock_irqrestore(&q->lock, flags);
-+ return _urb;
-+}
-+
- static void hci_usb_rx_complete(struct urb *urb);
- static void hci_usb_tx_complete(struct urb *urb);
-
--static struct urb *hci_usb_get_completed(struct hci_usb *husb)
-+#define __pending_tx(husb, type) (&husb->pending_tx[type-1])
-+#define __pending_q(husb, type) (&husb->pending_q[type-1])
-+#define __completed_q(husb, type) (&husb->completed_q[type-1])
-+#define __transmit_q(husb, type) (&husb->transmit_q[type-1])
-+#define __reassembly(husb, type) (husb->reassembly[type-1])
-+
-+static inline struct _urb *__get_completed(struct hci_usb *husb, int type)
- {
-- struct sk_buff *skb;
-- struct urb *urb = NULL;
-+ return _urb_dequeue(__completed_q(husb, type));
-+}
-
-- skb = skb_dequeue(&husb->completed_q);
-- if (skb) {
-- urb = ((struct hci_usb_scb *) skb->cb)->urb;
-- kfree_skb(skb);
-- }
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+static void __fill_isoc_desc(struct urb *urb, int len, int mtu)
-+{
-+ int offset = 0, i;
-
-- BT_DBG("%s urb %p", husb->hdev.name, urb);
-- return urb;
-+ BT_DBG("len %d mtu %d", len, mtu);
-+
-+ for (i=0; i < HCI_MAX_ISOC_FRAMES && len >= mtu; i++, offset += mtu, len -= mtu) {
-+ urb->iso_frame_desc[i].offset = offset;
-+ urb->iso_frame_desc[i].length = mtu;
-+ BT_DBG("desc %d offset %d len %d", i, offset, mtu);
-+ }
-+ if (len && i < HCI_MAX_ISOC_FRAMES) {
-+ urb->iso_frame_desc[i].offset = offset;
-+ urb->iso_frame_desc[i].length = len;
-+ BT_DBG("desc %d offset %d len %d", i, offset, len);
-+ i++;
-+ }
-+ urb->number_of_packets = i;
- }
-+#endif
-
--static int hci_usb_enable_intr(struct hci_usb *husb)
-+static int hci_usb_intr_rx_submit(struct hci_usb *husb)
- {
-+ struct _urb *_urb;
- struct urb *urb;
-- int pipe, size;
-+ int err, pipe, interval, size;
- void *buf;
-
- BT_DBG("%s", husb->hdev.name);
-
-- if (!(urb = usb_alloc_urb(0)))
-+ size = husb->intr_in_ep->wMaxPacketSize;
-+
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
- return -ENOMEM;
-
-- if (!(buf = kmalloc(HCI_MAX_EVENT_SIZE, GFP_KERNEL))) {
-- usb_free_urb(urb);
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
- return -ENOMEM;
- }
-+ _urb->type = HCI_EVENT_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-
-- husb->intr_urb = urb;
--
-- pipe = usb_rcvintpipe(husb->udev, husb->intr_ep);
-- size = usb_maxpacket(husb->udev, pipe, usb_pipeout(pipe));
-- FILL_INT_URB(urb, husb->udev, pipe, buf, size,
-- hci_usb_interrupt, husb, husb->intr_interval);
-+ urb = &_urb->urb;
-+ pipe = usb_rcvintpipe(husb->udev, husb->intr_in_ep->bEndpointAddress);
-+ interval = husb->intr_in_ep->bInterval;
-+ FILL_INT_URB(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb, interval);
-
-- return usb_submit_urb(urb);
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s intr rx submit failed urb %p err %d",
-+ husb->hdev.name, urb, err);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
-+ }
-+ return err;
- }
-
--static int hci_usb_disable_intr(struct hci_usb *husb)
-+static int hci_usb_bulk_rx_submit(struct hci_usb *husb)
- {
-- struct urb *urb = husb->intr_urb;
-- struct sk_buff *skb;
--
-- BT_DBG("%s", husb->hdev.name);
-+ struct _urb *_urb;
-+ struct urb *urb;
-+ int err, pipe, size = HCI_MAX_FRAME_SIZE;
-+ void *buf;
-
-- usb_unlink_urb(urb); usb_free_urb(urb);
-- husb->intr_urb = NULL;
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
-+ return -ENOMEM;
-
-- skb = husb->intr_skb;
-- if (skb) {
-- husb->intr_skb = NULL;
-- kfree_skb(skb);
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
-+ return -ENOMEM;
- }
-+ _urb->type = HCI_ACLDATA_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-
-- return 0;
-+ urb = &_urb->urb;
-+ pipe = usb_rcvbulkpipe(husb->udev, husb->bulk_in_ep->bEndpointAddress);
-+ FILL_BULK_URB(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb);
-+ urb->transfer_flags = USB_QUEUE_BULK;
-+
-+ BT_DBG("%s urb %p", husb->hdev.name, urb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk rx submit failed urb %p err %d",
-+ husb->hdev.name, urb, err);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
-+ }
-+ return err;
- }
-
--static int hci_usb_rx_submit(struct hci_usb *husb, struct urb *urb)
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+static int hci_usb_isoc_rx_submit(struct hci_usb *husb)
- {
-- struct hci_usb_scb *scb;
-- struct sk_buff *skb;
-- int pipe, size, err;
-+ struct _urb *_urb;
-+ struct urb *urb;
-+ int err, mtu, size;
-+ void *buf;
-
-- if (!urb && !(urb = usb_alloc_urb(0)))
-- return -ENOMEM;
-+ mtu = husb->isoc_in_ep->wMaxPacketSize;
-+ size = mtu * HCI_MAX_ISOC_FRAMES;
-
-- size = HCI_MAX_FRAME_SIZE;
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
-+ return -ENOMEM;
-
-- if (!(skb = bluez_skb_alloc(size, GFP_ATOMIC))) {
-- usb_free_urb(urb);
-+ _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
- return -ENOMEM;
- }
--
-- BT_DBG("%s urb %p", husb->hdev.name, urb);
-+ _urb->type = HCI_SCODATA_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-
-- skb->dev = (void *) &husb->hdev;
-- skb->pkt_type = HCI_ACLDATA_PKT;
-+ urb = &_urb->urb;
-
-- scb = (struct hci_usb_scb *) skb->cb;
-- scb->urb = urb;
-+ urb->context = husb;
-+ urb->dev = husb->udev;
-+ urb->pipe = usb_rcvisocpipe(husb->udev, husb->isoc_in_ep->bEndpointAddress);
-+ urb->complete = hci_usb_rx_complete;
-
-- pipe = usb_rcvbulkpipe(husb->udev, husb->bulk_in_ep);
-+ urb->transfer_buffer_length = size;
-+ urb->transfer_buffer = buf;
-+ urb->transfer_flags = USB_ISO_ASAP;
-
-- FILL_BULK_URB(urb, husb->udev, pipe, skb->data, size, hci_usb_rx_complete, skb);
-- urb->transfer_flags = USB_QUEUE_BULK;
-+ __fill_isoc_desc(urb, size, mtu);
-+
-+ BT_DBG("%s urb %p", husb->hdev.name, urb);
-
-- skb_queue_tail(&husb->pending_q, skb);
- err = usb_submit_urb(urb);
- if (err) {
-- BT_ERR("%s bulk rx submit failed urb %p err %d",
-+ BT_ERR("%s isoc rx submit failed urb %p err %d",
- husb->hdev.name, urb, err);
-- skb_unlink(skb);
-- usb_free_urb(urb);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
- }
- return err;
- }
-+#endif
-
- /* Initialize device */
- static int hci_usb_open(struct hci_dev *hdev)
-@@ -212,10 +316,16 @@
-
- write_lock_irqsave(&husb->completion_lock, flags);
-
-- err = hci_usb_enable_intr(husb);
-+ err = hci_usb_intr_rx_submit(husb);
- if (!err) {
-- for (i = 0; i < HCI_MAX_BULK_TX; i++)
-- hci_usb_rx_submit(husb, NULL);
-+ for (i = 0; i < HCI_MAX_BULK_RX; i++)
-+ hci_usb_bulk_rx_submit(husb);
-+
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ if (husb->isoc_iface)
-+ for (i = 0; i < HCI_MAX_ISOC_RX; i++)
-+ hci_usb_isoc_rx_submit(husb);
-+#endif
- } else {
- clear_bit(HCI_RUNNING, &hdev->flags);
- MOD_DEC_USE_COUNT;
-@@ -229,29 +339,52 @@
- static int hci_usb_flush(struct hci_dev *hdev)
- {
- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ int i;
-
- BT_DBG("%s", hdev->name);
-
-- skb_queue_purge(&husb->cmd_q);
-- skb_queue_purge(&husb->acl_q);
-+ for (i=0; i < 4; i++)
-+ skb_queue_purge(&husb->transmit_q[i]);
- return 0;
- }
-
--static inline void hci_usb_unlink_urbs(struct hci_usb *husb)
-+static void hci_usb_unlink_urbs(struct hci_usb *husb)
- {
-- struct sk_buff *skb;
-- struct urb *urb;
-+ int i;
-
- BT_DBG("%s", husb->hdev.name);
-
-- while ((skb = skb_dequeue(&husb->pending_q))) {
-- urb = ((struct hci_usb_scb *) skb->cb)->urb;
-- usb_unlink_urb(urb);
-- kfree_skb(skb);
-- }
-+ for (i=0; i < 4; i++) {
-+ struct _urb *_urb;
-+ struct urb *urb;
-+
-+ /* Kill pending requests */
-+ while ((_urb = _urb_dequeue(&husb->pending_q[i]))) {
-+ urb = &_urb->urb;
-+ BT_DBG("%s unlinking _urb %p type %d urb %p",
-+ husb->hdev.name, _urb, _urb->type, urb);
-+ usb_unlink_urb(urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-+ }
-+
-+ /* Release completed requests */
-+ while ((_urb = _urb_dequeue(&husb->completed_q[i]))) {
-+ urb = &_urb->urb;
-+ BT_DBG("%s freeing _urb %p type %d urb %p",
-+ husb->hdev.name, _urb, _urb->type, urb);
-+ if (urb->setup_packet)
-+ kfree(urb->setup_packet);
-+ if (urb->transfer_buffer)
-+ kfree(urb->transfer_buffer);
-+ _urb_free(_urb);
-+ }
-
-- while ((urb = hci_usb_get_completed(husb)))
-- usb_free_urb(urb);
-+ /* Release reassembly buffers */
-+ if (husb->reassembly[i]) {
-+ kfree_skb(husb->reassembly[i]);
-+ husb->reassembly[i] = NULL;
-+ }
-+ }
- }
-
- /* Close device */
-@@ -267,7 +400,6 @@
-
- write_lock_irqsave(&husb->completion_lock, flags);
-
-- hci_usb_disable_intr(husb);
- hci_usb_unlink_urbs(husb);
- hci_usb_flush(hdev);
-
-@@ -277,104 +409,157 @@
- return 0;
- }
-
-+static int __tx_submit(struct hci_usb *husb, struct _urb *_urb)
-+{
-+ struct urb *urb = &_urb->urb;
-+ int err;
-+
-+ BT_DBG("%s urb %p type %d", husb->hdev.name, urb, _urb->type);
-+
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s tx submit failed urb %p type %d err %d",
-+ husb->hdev.name, urb, _urb->type, err);
-+ _urb_unlink(_urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-+ } else
-+ atomic_inc(__pending_tx(husb, _urb->type));
-+
-+ return err;
-+}
-+
- static inline int hci_usb_send_ctrl(struct hci_usb *husb, struct sk_buff *skb)
- {
-- struct hci_usb_scb *scb = (void *) skb->cb;
-- struct urb *urb = hci_usb_get_completed(husb);
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
- struct usb_ctrlrequest *dr;
-- int pipe, err;
--
-- if (!urb && !(urb = usb_alloc_urb(0)))
-- return -ENOMEM;
-+ struct urb *urb;
-
-- if (!(dr = kmalloc(sizeof(*dr), GFP_ATOMIC))) {
-- usb_free_urb(urb);
-- return -ENOMEM;
-- }
--
-- pipe = usb_sndctrlpipe(husb->udev, 0);
-+ if (!_urb) {
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
-+
-+ dr = kmalloc(sizeof(*dr), GFP_ATOMIC);
-+ if (!dr) {
-+ _urb_free(_urb);
-+ return -ENOMEM;
-+ }
-+ } else
-+ dr = (void *) _urb->urb.setup_packet;
-
-- dr->bRequestType = HCI_CTRL_REQ;
-+ dr->bRequestType = husb->ctrl_req;
- dr->bRequest = 0;
- dr->wIndex = 0;
- dr->wValue = 0;
- dr->wLength = __cpu_to_le16(skb->len);
-
-- FILL_CONTROL_URB(urb, husb->udev, pipe, (void *) dr,
-- skb->data, skb->len, hci_usb_tx_complete, skb);
--
-- BT_DBG("%s urb %p len %d", husb->hdev.name, urb, skb->len);
--
-- scb->urb = urb;
-+ urb = &_urb->urb;
-+ FILL_CONTROL_URB(urb, husb->udev, usb_sndctrlpipe(husb->udev, 0),
-+ (void *) dr, skb->data, skb->len, hci_usb_tx_complete, husb);
-
-- skb_queue_tail(&husb->pending_q, skb);
-- err = usb_submit_urb(urb);
-- if (err) {
-- BT_ERR("%s ctrl tx submit failed urb %p err %d",
-- husb->hdev.name, urb, err);
-- skb_unlink(skb);
-- usb_free_urb(urb); kfree(dr);
-- }
-- return err;
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-+
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
- }
-
- static inline int hci_usb_send_bulk(struct hci_usb *husb, struct sk_buff *skb)
- {
-- struct hci_usb_scb *scb = (void *) skb->cb;
-- struct urb *urb = hci_usb_get_completed(husb);
-- int pipe, err;
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
-+ struct urb *urb;
-+ int pipe;
-
-- if (!urb && !(urb = usb_alloc_urb(0)))
-- return -ENOMEM;
-+ if (!_urb) {
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
-+ }
-
-- pipe = usb_sndbulkpipe(husb->udev, husb->bulk_out_ep);
--
-- FILL_BULK_URB(urb, husb->udev, pipe, skb->data, skb->len,
-- hci_usb_tx_complete, skb);
-+ urb = &_urb->urb;
-+ pipe = usb_sndbulkpipe(husb->udev, husb->bulk_out_ep->bEndpointAddress);
-+ FILL_BULK_URB(urb, husb->udev, pipe, skb->data, skb->len,
-+ hci_usb_tx_complete, husb);
- urb->transfer_flags = USB_QUEUE_BULK | USB_ZERO_PACKET;
-
-- BT_DBG("%s urb %p len %d", husb->hdev.name, urb, skb->len);
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-
-- scb->urb = urb;
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
-+}
-
-- skb_queue_tail(&husb->pending_q, skb);
-- err = usb_submit_urb(urb);
-- if (err) {
-- BT_ERR("%s bulk tx submit failed urb %p err %d",
-- husb->hdev.name, urb, err);
-- skb_unlink(skb);
-- usb_free_urb(urb);
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+static inline int hci_usb_send_isoc(struct hci_usb *husb, struct sk_buff *skb)
-+{
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
-+ struct urb *urb;
-+
-+ if (!_urb) {
-+ _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
- }
-- return err;
-+
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-+
-+ urb = &_urb->urb;
-+
-+ urb->context = husb;
-+ urb->dev = husb->udev;
-+ urb->pipe = usb_sndisocpipe(husb->udev, husb->isoc_out_ep->bEndpointAddress);
-+ urb->complete = hci_usb_tx_complete;
-+ urb->transfer_flags = USB_ISO_ASAP;
-+
-+ urb->transfer_buffer = skb->data;
-+ urb->transfer_buffer_length = skb->len;
-+
-+ __fill_isoc_desc(urb, skb->len, husb->isoc_out_ep->wMaxPacketSize);
-+
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
- }
-+#endif
-
- static void hci_usb_tx_process(struct hci_usb *husb)
- {
-+ struct sk_buff_head *q;
- struct sk_buff *skb;
-
- BT_DBG("%s", husb->hdev.name);
-
- do {
- clear_bit(HCI_USB_TX_WAKEUP, &husb->state);
-+
-+ /* Process command queue */
-+ q = __transmit_q(husb, HCI_COMMAND_PKT);
-+ if (!atomic_read(__pending_tx(husb, HCI_COMMAND_PKT)) &&
-+ (skb = skb_dequeue(q))) {
-+ if (hci_usb_send_ctrl(husb, skb) < 0)
-+ skb_queue_head(q, skb);
-+ }
-+
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ /* Process SCO queue */
-+ q = __transmit_q(husb, HCI_SCODATA_PKT);
-+ if (atomic_read(__pending_tx(husb, HCI_SCODATA_PKT)) < HCI_MAX_ISOC_TX &&
-+ (skb = skb_dequeue(q))) {
-+ if (hci_usb_send_isoc(husb, skb) < 0)
-+ skb_queue_head(q, skb);
-+ }
-+#endif
-
- /* Process ACL queue */
-- while (skb_queue_len(&husb->pending_q) < HCI_MAX_PENDING &&
-- (skb = skb_dequeue(&husb->acl_q))) {
-+ q = __transmit_q(husb, HCI_ACLDATA_PKT);
-+ while (atomic_read(__pending_tx(husb, HCI_ACLDATA_PKT)) < HCI_MAX_BULK_TX &&
-+ (skb = skb_dequeue(q))) {
- if (hci_usb_send_bulk(husb, skb) < 0) {
-- skb_queue_head(&husb->acl_q, skb);
-+ skb_queue_head(q, skb);
- break;
- }
- }
--
-- /* Process command queue */
-- if (!test_bit(HCI_USB_CTRL_TX, &husb->state) &&
-- (skb = skb_dequeue(&husb->cmd_q)) != NULL) {
-- set_bit(HCI_USB_CTRL_TX, &husb->state);
-- if (hci_usb_send_ctrl(husb, skb) < 0) {
-- skb_queue_head(&husb->cmd_q, skb);
-- clear_bit(HCI_USB_CTRL_TX, &husb->state);
-- }
-- }
- } while(test_bit(HCI_USB_TX_WAKEUP, &husb->state));
- }
-
-@@ -389,7 +574,7 @@
- }
-
- /* Send frames from HCI layer */
--int hci_usb_send_frame(struct sk_buff *skb)
-+static int hci_usb_send_frame(struct sk_buff *skb)
- {
- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
- struct hci_usb *husb;
-@@ -402,204 +587,209 @@
- if (!test_bit(HCI_RUNNING, &hdev->flags))
- return -EBUSY;
-
-- husb = (struct hci_usb *) hdev->driver_data;
--
- BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-
-- read_lock(&husb->completion_lock);
-+ husb = (struct hci_usb *) hdev->driver_data;
-
- switch (skb->pkt_type) {
- case HCI_COMMAND_PKT:
-- skb_queue_tail(&husb->cmd_q, skb);
- hdev->stat.cmd_tx++;
- break;
-
- case HCI_ACLDATA_PKT:
-- skb_queue_tail(&husb->acl_q, skb);
- hdev->stat.acl_tx++;
- break;
-
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
- case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+#endif
-+
- default:
- kfree_skb(skb);
-- break;
-+ return 0;
- }
-+
-+ read_lock(&husb->completion_lock);
-+
-+ skb_queue_tail(__transmit_q(husb, skb->pkt_type), skb);
- hci_usb_tx_wakeup(husb);
-
- read_unlock(&husb->completion_lock);
- return 0;
- }
-
--static void hci_usb_interrupt(struct urb *urb)
-+static inline int __recv_frame(struct hci_usb *husb, int type, void *data, int count)
- {
-- struct hci_usb *husb = (void *) urb->context;
-- struct hci_usb_scb *scb;
-- struct sk_buff *skb;
-- hci_event_hdr *eh;
-- __u8 *data = urb->transfer_buffer;
-- int count = urb->actual_length;
-- int len = HCI_EVENT_HDR_SIZE;
-+ BT_DBG("%s type %d data %p count %d", husb->hdev.name, type, data, count);
-
-- BT_DBG("%s urb %p count %d", husb->hdev.name, urb, count);
-+ husb->hdev.stat.byte_rx += count;
-
-- if (!test_bit(HCI_RUNNING, &husb->hdev.flags))
-- return;
-+ while (count) {
-+ struct sk_buff *skb = __reassembly(husb, type);
-+ struct { int expect; } *scb;
-+ int len = 0;
-+
-+ if (!skb) {
-+ /* Start of the frame */
-
-- if (urb->status || !count) {
-- BT_DBG("%s intr status %d, count %d",
-- husb->hdev.name, urb->status, count);
-- return;
-- }
-+ switch (type) {
-+ case HCI_EVENT_PKT:
-+ if (count >= HCI_EVENT_HDR_SIZE) {
-+ hci_event_hdr *h = data;
-+ len = HCI_EVENT_HDR_SIZE + h->plen;
-+ } else
-+ return -EILSEQ;
-+ break;
-
-- read_lock(&husb->completion_lock);
--
-- husb->hdev.stat.byte_rx += count;
-+ case HCI_ACLDATA_PKT:
-+ if (count >= HCI_ACL_HDR_SIZE) {
-+ hci_acl_hdr *h = data;
-+ len = HCI_ACL_HDR_SIZE + __le16_to_cpu(h->dlen);
-+ } else
-+ return -EILSEQ;
-+ break;
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ case HCI_SCODATA_PKT:
-+ if (count >= HCI_SCO_HDR_SIZE) {
-+ hci_sco_hdr *h = data;
-+ len = HCI_SCO_HDR_SIZE + h->dlen;
-+ } else
-+ return -EILSEQ;
-+ break;
-+#endif
-+ }
-+ BT_DBG("new packet len %d", len);
-
-- if (!(skb = husb->intr_skb)) {
-- /* Start of the frame */
-- if (count < HCI_EVENT_HDR_SIZE)
-- goto bad_len;
-+ skb = bluez_skb_alloc(len, GFP_ATOMIC);
-+ if (!skb) {
-+ BT_ERR("%s no memory for the packet", husb->hdev.name);
-+ return -ENOMEM;
-+ }
-+ skb->dev = (void *) &husb->hdev;
-+ skb->pkt_type = type;
-+
-+ __reassembly(husb, type) = skb;
-
-- eh = (hci_event_hdr *) data;
-- len = eh->plen + HCI_EVENT_HDR_SIZE;
-+ scb = (void *) skb->cb;
-+ scb->expect = len;
-+ } else {
-+ /* Continuation */
-+ scb = (void *) skb->cb;
-+ len = scb->expect;
-+ }
-
-- if (count > len)
-- goto bad_len;
-+ len = min(len, count);
-+
-+ memcpy(skb_put(skb, len), data, len);
-
-- skb = bluez_skb_alloc(len, GFP_ATOMIC);
-- if (!skb) {
-- BT_ERR("%s no memory for event packet", husb->hdev.name);
-- goto done;
-+ scb->expect -= len;
-+ if (!scb->expect) {
-+ /* Complete frame */
-+ __reassembly(husb, type) = NULL;
-+ hci_recv_frame(skb);
- }
-- scb = (void *) skb->cb;
-
-- skb->dev = (void *) &husb->hdev;
-- skb->pkt_type = HCI_EVENT_PKT;
-+ count -= len; data += len;
-+ }
-+ return 0;
-+}
-+
-+static void hci_usb_rx_complete(struct urb *urb)
-+{
-+ struct _urb *_urb = container_of(urb, struct _urb, urb);
-+ struct hci_usb *husb = (void *) urb->context;
-+ struct hci_dev *hdev = &husb->hdev;
-+ int err, count = urb->actual_length;
-+
-+ BT_DBG("%s urb %p type %d status %d count %d flags %x", hdev->name, urb,
-+ _urb->type, urb->status, count, urb->transfer_flags);
-+
-+ read_lock(&husb->completion_lock);
-+
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ goto unlock;
-+
-+ if (urb->status || !count)
-+ goto resubmit;
-
-- husb->intr_skb = skb;
-- scb->intr_len = len;
-+ if (_urb->type == HCI_SCODATA_PKT) {
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ int i;
-+ for (i=0; i < urb->number_of_packets; i++) {
-+ BT_DBG("desc %d status %d offset %d len %d", i,
-+ urb->iso_frame_desc[i].status,
-+ urb->iso_frame_desc[i].offset,
-+ urb->iso_frame_desc[i].actual_length);
-+
-+ if (!urb->iso_frame_desc[i].status)
-+ __recv_frame(husb, _urb->type,
-+ urb->transfer_buffer + urb->iso_frame_desc[i].offset,
-+ urb->iso_frame_desc[i].actual_length);
-+ }
-+#else
-+ ;
-+#endif
- } else {
-- /* Continuation */
-- scb = (void *) skb->cb;
-- len = scb->intr_len;
-- if (count > len) {
-- husb->intr_skb = NULL;
-- kfree_skb(skb);
-- goto bad_len;
-+ err = __recv_frame(husb, _urb->type, urb->transfer_buffer, count);
-+ if (err < 0) {
-+ BT_ERR("%s corrupted packet: type %d count %d",
-+ husb->hdev.name, _urb->type, count);
-+ hdev->stat.err_rx++;
- }
- }
-
-- memcpy(skb_put(skb, count), data, count);
-- scb->intr_len -= count;
--
-- if (!scb->intr_len) {
-- /* Complete frame */
-- husb->intr_skb = NULL;
-- hci_recv_frame(skb);
-+resubmit:
-+ if (_urb->type != HCI_EVENT_PKT) {
-+ urb->dev = husb->udev;
-+ err = usb_submit_urb(urb);
-+ BT_DBG("%s urb %p type %d resubmit status %d", hdev->name, urb,
-+ _urb->type, err);
- }
-
--done:
-- read_unlock(&husb->completion_lock);
-- return;
--
--bad_len:
-- BT_ERR("%s bad frame len %d expected %d", husb->hdev.name, count, len);
-- husb->hdev.stat.err_rx++;
-+unlock:
- read_unlock(&husb->completion_lock);
- }
-
- static void hci_usb_tx_complete(struct urb *urb)
- {
-- struct sk_buff *skb = (struct sk_buff *) urb->context;
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ struct _urb *_urb = container_of(urb, struct _urb, urb);
-+ struct hci_usb *husb = (void *) urb->context;
-+ struct hci_dev *hdev = &husb->hdev;
-
-- BT_DBG("%s urb %p status %d flags %x", husb->hdev.name, urb,
-+ BT_DBG("%s urb %p status %d flags %x", hdev->name, urb,
- urb->status, urb->transfer_flags);
-
-- if (urb->pipe == usb_sndctrlpipe(husb->udev, 0)) {
-- kfree(urb->setup_packet);
-- clear_bit(HCI_USB_CTRL_TX, &husb->state);
-- }
-+ atomic_dec(__pending_tx(husb, _urb->type));
-+
-+ urb->transfer_buffer = NULL;
-+ kfree_skb((struct sk_buff *) _urb->priv);
-
- if (!test_bit(HCI_RUNNING, &hdev->flags))
- return;
-
-- read_lock(&husb->completion_lock);
--
- if (!urb->status)
-- husb->hdev.stat.byte_tx += skb->len;
-+ hdev->stat.byte_tx += urb->transfer_buffer_length;
- else
-- husb->hdev.stat.err_tx++;
--
-- skb_unlink(skb);
-- skb_queue_tail(&husb->completed_q, skb);
-- hci_usb_tx_wakeup(husb);
--
-- read_unlock(&husb->completion_lock);
-- return;
--}
--
--static void hci_usb_rx_complete(struct urb *urb)
--{
-- struct sk_buff *skb = (struct sk_buff *) urb->context;
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-- int status, count = urb->actual_length;
-- hci_acl_hdr *ah;
-- int dlen, size;
--
-- BT_DBG("%s urb %p status %d count %d flags %x", husb->hdev.name, urb,
-- urb->status, count, urb->transfer_flags);
--
-- if (!test_bit(HCI_RUNNING, &hdev->flags))
-- return;
-+ hdev->stat.err_tx++;
-
- read_lock(&husb->completion_lock);
-
-- if (urb->status || !count)
-- goto resubmit;
--
-- husb->hdev.stat.byte_rx += count;
--
-- ah = (hci_acl_hdr *) skb->data;
-- dlen = __le16_to_cpu(ah->dlen);
-- size = HCI_ACL_HDR_SIZE + dlen;
--
-- /* Verify frame len and completeness */
-- if (count != size) {
-- BT_ERR("%s corrupted ACL packet: count %d, dlen %d",
-- husb->hdev.name, count, dlen);
-- bluez_dump("hci_usb", skb->data, count);
-- husb->hdev.stat.err_rx++;
-- goto resubmit;
-- }
--
-- skb_unlink(skb);
-- skb_put(skb, count);
-- hci_recv_frame(skb);
--
-- hci_usb_rx_submit(husb, urb);
-+ _urb_unlink(_urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-
-- read_unlock(&husb->completion_lock);
-- return;
--
--resubmit:
-- urb->dev = husb->udev;
-- status = usb_submit_urb(urb);
-- BT_DBG("%s URB resubmit status %d", husb->hdev.name, status);
-+ hci_usb_tx_wakeup(husb);
-+
- read_unlock(&husb->completion_lock);
- }
-
- static void hci_usb_destruct(struct hci_dev *hdev)
- {
-- struct hci_usb *husb;
--
-- if (!hdev) return;
-+ struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-
- BT_DBG("%s", hdev->name);
-
-- husb = (struct hci_usb *) hdev->driver_data;
- kfree(husb);
- }
-
-@@ -621,8 +811,14 @@
-
- iface = &udev->actconfig->interface[0];
-
-- /* Check our black list */
-- if (usb_match_id(udev, iface, ignore_ids))
-+ if (!id->driver_info) {
-+ const struct usb_device_id *match;
-+ match = usb_match_id(udev, iface, blacklist_ids);
-+ if (match)
-+ id = match;
-+ }
-+
-+ if (id->driver_info & HCI_IGNORE)
- return NULL;
-
- /* Check number of endpoints */
-@@ -662,8 +858,9 @@
- bulk_out_ep[i] = ep;
- break;
-
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
- case USB_ENDPOINT_XFER_ISOC:
-- if (ep->wMaxPacketSize < size)
-+ if (ep->wMaxPacketSize < size || a > 2)
- break;
- size = ep->wMaxPacketSize;
-
-@@ -676,6 +873,7 @@
- else
- isoc_out_ep[i] = ep;
- break;
-+#endif
- }
- }
- }
-@@ -686,10 +884,12 @@
- goto done;
- }
-
-- if (!isoc_in_ep[1] || !isoc_out_ep[1]) {
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ if (id->driver_info & HCI_BROKEN_ISOC || !isoc_in_ep[1] || !isoc_out_ep[1]) {
- BT_DBG("Isoc endpoints not found");
- isoc_iface = NULL;
- }
-+#endif
-
- if (!(husb = kmalloc(sizeof(struct hci_usb), GFP_KERNEL))) {
- BT_ERR("Can't allocate: control structure");
-@@ -699,35 +899,41 @@
- memset(husb, 0, sizeof(struct hci_usb));
-
- husb->udev = udev;
-- husb->bulk_out_ep = bulk_out_ep[0]->bEndpointAddress;
-- husb->bulk_in_ep = bulk_in_ep[0]->bEndpointAddress;
-+ husb->bulk_out_ep = bulk_out_ep[0];
-+ husb->bulk_in_ep = bulk_in_ep[0];
-+ husb->intr_in_ep = intr_in_ep[0];
-
-- husb->intr_ep = intr_in_ep[0]->bEndpointAddress;
-- husb->intr_interval = intr_in_ep[0]->bInterval;
-+ if (id->driver_info & HCI_DIGIANSWER)
-+ husb->ctrl_req = HCI_DIGI_REQ;
-+ else
-+ husb->ctrl_req = HCI_CTRL_REQ;
-
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
- if (isoc_iface) {
-+ BT_DBG("isoc ifnum %d alts %d", isoc_ifnum, isoc_alts);
- if (usb_set_interface(udev, isoc_ifnum, isoc_alts)) {
- BT_ERR("Can't set isoc interface settings");
- isoc_iface = NULL;
- }
- usb_driver_claim_interface(&hci_usb_driver, isoc_iface, husb);
- husb->isoc_iface = isoc_iface;
--
-- husb->isoc_in_ep = isoc_in_ep[1]->bEndpointAddress;
-- husb->isoc_out_ep = isoc_in_ep[1]->bEndpointAddress;
-+ husb->isoc_in_ep = isoc_in_ep[isoc_ifnum];
-+ husb->isoc_out_ep = isoc_out_ep[isoc_ifnum];
- }
--
-- husb->completion_lock = RW_LOCK_UNLOCKED;
-+#endif
-
-- skb_queue_head_init(&husb->acl_q);
-- skb_queue_head_init(&husb->cmd_q);
-- skb_queue_head_init(&husb->pending_q);
-- skb_queue_head_init(&husb->completed_q);
-+ husb->completion_lock = RW_LOCK_UNLOCKED;
-+
-+ for (i = 0; i < 4; i++) {
-+ skb_queue_head_init(&husb->transmit_q[i]);
-+ _urb_queue_init(&husb->pending_q[i]);
-+ _urb_queue_init(&husb->completed_q[i]);
-+ }
-
- /* Initialize and register HCI device */
- hdev = &husb->hdev;
-
-- hdev->type = HCI_USB;
-+ hdev->type = HCI_USB;
- hdev->driver_data = husb;
-
- hdev->open = hci_usb_open;
-@@ -736,6 +942,9 @@
- hdev->send = hci_usb_send_frame;
- hdev->destruct = hci_usb_destruct;
-
-+ if (id->driver_info & HCI_RESET)
-+ set_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks);
-+
- if (hci_register_dev(hdev) < 0) {
- BT_ERR("Can't register HCI device");
- goto probe_error;
-@@ -798,6 +1007,6 @@
- module_init(hci_usb_init);
- module_exit(hci_usb_cleanup);
-
--MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>");
- MODULE_DESCRIPTION("BlueZ HCI USB driver ver " VERSION);
- MODULE_LICENSE("GPL");
-diff -Nur c3000_pre/linux/drivers/bluetooth/hci_usb.h c3000_work/linux/drivers/bluetooth/hci_usb.h
---- c3000_pre/linux/drivers/bluetooth/hci_usb.h 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_work/linux/drivers/bluetooth/hci_usb.h 2004-12-16 23:01:14.000000000 +0900
-@@ -1,9 +1,10 @@
- /*
-- BlueZ - Bluetooth protocol stack for Linux
-+ HCI USB driver for Linux Bluetooth protocol stack (BlueZ)
- Copyright (C) 2000-2001 Qualcomm Incorporated
--
- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-
-+ Copyright (C) 2003 Maxim Krasnyansky <maxk@qualcomm.com>
-+
- 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;
-@@ -34,46 +35,113 @@
- #define HCI_DEV_PROTOCOL 0x01 /* Bluetooth programming protocol */
-
- #define HCI_CTRL_REQ 0x20
-+#define HCI_DIGI_REQ 0x40
-+
-+#define HCI_IGNORE 0x01
-+#define HCI_RESET 0x02
-+#define HCI_DIGIANSWER 0x04
-+#define HCI_BROKEN_ISOC 0x08
-
- #define HCI_MAX_IFACE_NUM 3
-
- #define HCI_MAX_BULK_TX 4
- #define HCI_MAX_BULK_RX 1
-
-+#define HCI_MAX_ISOC_RX 2
-+#define HCI_MAX_ISOC_TX 2
-+
-+#define HCI_MAX_ISOC_FRAMES 10
-+
-+struct _urb_queue {
-+ struct list_head head;
-+ spinlock_t lock;
-+};
-+
-+struct _urb {
-+ struct list_head list;
-+ struct _urb_queue *queue;
-+ int type;
-+ void *priv;
-+ struct urb urb;
-+};
-+
-+struct _urb *_urb_alloc(int isoc, int gfp);
-+
-+static inline void _urb_free(struct _urb *_urb)
-+{
-+ kfree(_urb);
-+}
-+
-+static inline void _urb_queue_init(struct _urb_queue *q)
-+{
-+ INIT_LIST_HEAD(&q->head);
-+ spin_lock_init(&q->lock);
-+}
-+
-+static inline void _urb_queue_head(struct _urb_queue *q, struct _urb *_urb)
-+{
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_add(&_urb->list, &q->head); _urb->queue = q;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+}
-+
-+static inline void _urb_queue_tail(struct _urb_queue *q, struct _urb *_urb)
-+{
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_add_tail(&_urb->list, &q->head); _urb->queue = q;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+}
-+
-+static inline void _urb_unlink(struct _urb *_urb)
-+{
-+ struct _urb_queue *q = _urb->queue;
-+ unsigned long flags;
-+ if (q) {
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_del(&_urb->list); _urb->queue = NULL;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+ }
-+}
-+
-+struct _urb *_urb_dequeue(struct _urb_queue *q);
-+
-+#ifndef container_of
-+#define container_of(ptr, type, member) ({ \
-+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
-+ (type *)( (char *)__mptr - offsetof(type,member) );})
-+#endif
-+
- struct hci_usb {
- struct hci_dev hdev;
-
- unsigned long state;
-
- struct usb_device *udev;
-- struct usb_interface *isoc_iface;
-
-- __u8 bulk_out_ep;
-- __u8 bulk_in_ep;
-- __u8 isoc_out_ep;
-- __u8 isoc_in_ep;
--
-- __u8 intr_ep;
-- __u8 intr_interval;
-- struct urb *intr_urb;
-- struct sk_buff * intr_skb;
-+ struct usb_endpoint_descriptor *bulk_in_ep;
-+ struct usb_endpoint_descriptor *bulk_out_ep;
-+ struct usb_endpoint_descriptor *intr_in_ep;
-+
-+ struct usb_interface *isoc_iface;
-+ struct usb_endpoint_descriptor *isoc_out_ep;
-+ struct usb_endpoint_descriptor *isoc_in_ep;
-+
-+ __u8 ctrl_req;
-+
-+ struct sk_buff_head transmit_q[4];
-+ struct sk_buff *reassembly[4]; // Reassembly buffers
-
- rwlock_t completion_lock;
--
-- struct sk_buff_head cmd_q; // TX Commands
-- struct sk_buff_head acl_q; // TX ACLs
-- struct sk_buff_head pending_q; // Pending requests
-- struct sk_buff_head completed_q; // Completed requests
--};
-
--struct hci_usb_scb {
-- struct urb *urb;
-- int intr_len;
-+ atomic_t pending_tx[4]; // Number of pending requests
-+ struct _urb_queue pending_q[4]; // Pending requests
-+ struct _urb_queue completed_q[4]; // Completed requests
- };
-
- /* States */
- #define HCI_USB_TX_PROCESS 1
- #define HCI_USB_TX_WAKEUP 2
--#define HCI_USB_CTRL_TX 3
-
- #endif /* __KERNEL__ */
-diff -Nur c3000_pre/linux/drivers/char/pcmcia/serial_cs.c c3000_work/linux/drivers/char/pcmcia/serial_cs.c
---- c3000_pre/linux/drivers/char/pcmcia/serial_cs.c 2004-08-21 09:48:33.000000000 +0900
-+++ c3000_work/linux/drivers/char/pcmcia/serial_cs.c 2004-12-16 23:01:14.000000000 +0900
-@@ -2,7 +2,7 @@
-
- A driver for PCMCIA serial devices
-
-- serial_cs.c 1.128 2001/10/18 12:18:35
-+ serial_cs.c 1.138 2002/10/25 06:24:52
-
- The contents of this file are subject to the Mozilla Public
- License Version 1.1 (the "License"); you may not use this file
-@@ -72,14 +72,14 @@
- static int irq_list[4] = { -1 };
- MODULE_PARM(irq_list, "1-4i");
-
--/* Enable the speaker? */
--INT_MODULE_PARM(do_sound, 1);
-+INT_MODULE_PARM(do_sound, 1); /* Enable the speaker? */
-+INT_MODULE_PARM(buggy_uart, 0); /* Skip strict UART tests? */
-
- #ifdef PCMCIA_DEBUG
- INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG);
- #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args)
- static char *version =
--"serial_cs.c 1.128 2001/10/18 12:18:35 (David Hinds)";
-+"serial_cs.c 1.138 2002/10/25 06:24:52 (David Hinds)";
- #else
- #define DEBUG(n, args...)
- #endif
-@@ -98,6 +98,7 @@
- { MANFID_OMEGA, PRODID_OMEGA_QSP_100, 4 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D1, 2 },
-+ { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D2, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS232, 4 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS422, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS422, 4 },
-@@ -151,7 +152,7 @@
- client_reg_t client_reg;
- dev_link_t *link;
- int i, ret;
--
-+
- DEBUG(0, "serial_attach()\n");
-
- /* Create new serial device */
-@@ -163,7 +164,7 @@
- link->release.function = &serial_release;
- link->release.data = (u_long)link;
- link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-- link->io.NumPorts1 = 8;
-+ link->io.Attributes2 = IO_DATA_PATH_WIDTH_8;
- link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
- link->irq.IRQInfo1 = IRQ_INFO2_VALID|IRQ_LEVEL_ID;
- if (irq_list[0] == -1)
-@@ -172,13 +173,12 @@
- for (i = 0; i < 4; i++)
- link->irq.IRQInfo2 |= 1 << irq_list[i];
- link->conf.Attributes = CONF_ENABLE_IRQ;
-- link->conf.Vcc = 50;
- if (do_sound) {
- link->conf.Attributes |= CONF_ENABLE_SPKR;
- link->conf.Status = CCSR_AUDIO_ENA;
- }
- link->conf.IntType = INT_MEMORY_AND_IO;
--
-+
- /* Register with Card Services */
- link->next = dev_list;
- dev_list = link;
-@@ -197,7 +197,7 @@
- serial_detach(link);
- return NULL;
- }
--
-+
- return link;
- } /* serial_attach */
-
-@@ -217,7 +217,7 @@
- int ret;
-
- DEBUG(0, "serial_detach(0x%p)\n", link);
--
-+
- /* Locate device structure */
- for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
- if (*linkp == link) break;
-@@ -227,17 +227,17 @@
- del_timer(&link->release);
- if (link->state & DEV_CONFIG)
- serial_release((u_long)link);
--
-+
- if (link->handle) {
- ret = CardServices(DeregisterClient, link->handle);
- if (ret != CS_SUCCESS)
- cs_error(link->handle, DeregisterClient, ret);
- }
--
-+
- /* Unlink device structure, free bits */
- *linkp = link->next;
- kfree(info);
--
-+
- } /* serial_detach */
-
- /*====================================================================*/
-@@ -257,6 +257,8 @@
- #endif
- serial.irq = irq;
- serial.flags = ASYNC_SKIP_TEST | ASYNC_SHARE_IRQ;
-+ if (buggy_uart)
-+ serial.flags |= ASYNC_BUGGY_UART;
- line = register_serial(&serial);
- if (line < 0) {
- printk(KERN_NOTICE "serial_cs: register_serial() at 0x%04lx,"
-@@ -271,7 +273,7 @@
- if (info->ndev > 0)
- info->node[info->ndev-1].next = &info->node[info->ndev];
- info->ndev++;
--
-+
- return 0;
- }
-
-@@ -322,7 +324,10 @@
- return setup_serial(info, port, config.AssignedIRQ);
- }
- link->conf.Vcc = config.Vcc;
--
-+
-+ link->io.NumPorts1 = 8;
-+ link->io.NumPorts2 = 0;
-+
- /* First pass: look for a config entry that looks normal. */
- tuple.TupleData = (cisdata_t *)buf;
- tuple.TupleOffset = 0; tuple.TupleDataMax = 255;
-@@ -349,7 +354,7 @@
- i = next_tuple(handle, &tuple, &parse);
- }
- }
--
-+
- /* Second pass: try to find an entry that isn't picky about
- its base address, then try to grab any standard serial port
- address, and finally try to get any free port. */
-@@ -361,8 +366,7 @@
- for (j = 0; j < 5; j++) {
- link->io.BasePort1 = base[j];
- link->io.IOAddrLines = base[j] ? 16 : 3;
-- i = CardServices(RequestIO, link->handle,
-- &link->io);
-+ i = CardServices(RequestIO, link->handle, &link->io);
- if (i == CS_SUCCESS) goto found_port;
- }
- }
-@@ -374,7 +378,7 @@
- cs_error(link->handle, RequestIO, i);
- return -1;
- }
--
-+
- i = CardServices(RequestIRQ, link->handle, &link->irq);
- if (i != CS_SUCCESS) {
- cs_error(link->handle, RequestIRQ, i);
-@@ -399,8 +403,12 @@
- u_char buf[256];
- cisparse_t parse;
- cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
- int i, base2 = 0;
-
-+ CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
- tuple.TupleData = (cisdata_t *)buf;
- tuple.TupleOffset = 0; tuple.TupleDataMax = 255;
- tuple.Attributes = 0;
-@@ -442,12 +450,12 @@
- i = next_tuple(handle, &tuple, &parse);
- }
- }
--
-+
- if (i != CS_SUCCESS) {
-- cs_error(link->handle, RequestIO, i);
-- return -1;
-+ /* At worst, try to configure as a single port */
-+ return simple_config(link);
- }
--
-+
- i = CardServices(RequestIRQ, link->handle, &link->irq);
- if (i != CS_SUCCESS) {
- cs_error(link->handle, RequestIRQ, i);
-@@ -463,14 +471,27 @@
- cs_error(link->handle, RequestConfiguration, i);
- return -1;
- }
--
-+
-+ /* The Oxford Semiconductor OXCF950 cards are in fact single-port:
-+ 8 registers are for the UART, the others are extra registers */
-+ if (info->manfid == MANFID_OXSEMI) {
-+ if (cf->index == 1 || cf->index == 3) {
-+ setup_serial(info, base2, link->irq.AssignedIRQ);
-+ outb(12,link->io.BasePort1+1);
-+ } else {
-+ setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ);
-+ outb(12,base2+1);
-+ }
-+ return 0;
-+ }
-+
- setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ);
- /* The Nokia cards are not really multiport cards */
- if (info->manfid == MANFID_NOKIA)
- return 0;
- for (i = 0; i < info->multi-1; i++)
- setup_serial(info, base2+(8*i), link->irq.AssignedIRQ);
--
-+
- return 0;
- }
-
-@@ -531,7 +552,7 @@
- }
- link->conf.ConfigBase = parse.config.base;
- link->conf.Present = parse.config.rmask[0];
--
-+
- /* Configure card */
- link->state |= DEV_CONFIG;
-
-@@ -539,8 +560,8 @@
- tuple.DesiredTuple = CISTPL_LONGLINK_MFC;
- tuple.Attributes = TUPLE_RETURN_COMMON | TUPLE_RETURN_LINK;
- info->multi = (first_tuple(handle, &tuple, &parse) == CS_SUCCESS);
--
-- /* Is this a multiport card? */
-+
-+ /* Scan list of known multiport card ID's */
- tuple.DesiredTuple = CISTPL_MANFID;
- if (first_tuple(handle, &tuple, &parse) == CS_SUCCESS) {
- info->manfid = le16_to_cpu(buf[0]);
-@@ -595,15 +616,15 @@
- }
- #endif
- }
--
-+
- if (info->multi > 1)
- multi_config(link);
- else
- simple_config(link);
--
-+
- if (info->ndev == 0)
- goto failed;
--
-+
- if (info->manfid == MANFID_IBM) {
- conf_reg_t reg = { 0, CS_READ, 0x800, 0 };
- CS_CHECK(AccessConfigurationRegister, link->handle, &reg);
-@@ -620,6 +641,7 @@
- cs_error(link->handle, last_fn, last_ret);
- failed:
- serial_release((u_long)link);
-+ link->state &= ~DEV_CONFIG_PENDING;
-
- } /* serial_config */
-
-@@ -627,7 +649,7 @@
-
- After a card is removed, serial_release() will unregister the net
- device, and release the PCMCIA configuration.
--
-+
- ======================================================================*/
-
- void serial_release(u_long arg)
-@@ -635,7 +657,7 @@
- dev_link_t *link = (dev_link_t *)arg;
- serial_info_t *info = link->priv;
- int i;
--
-+
- DEBUG(0, "serial_release(0x%p)\n", link);
-
- for (i = 0; i < info->ndev; i++) {
-@@ -648,7 +670,7 @@
- CardServices(ReleaseIO, link->handle, &link->io);
- CardServices(ReleaseIRQ, link->handle, &link->irq);
- }
--
-+
- link->state &= ~DEV_CONFIG;
-
- } /* serial_release */
-@@ -659,7 +681,7 @@
- stuff to run after an event is received. A CARD_REMOVAL event
- also sets some flags to discourage the serial drivers from
- talking to the ports.
--
-+
- ======================================================================*/
-
- static int serial_event(event_t event, int priority,
-@@ -667,9 +689,9 @@
- {
- dev_link_t *link = args->client_data;
- serial_info_t *info = link->priv;
--
-+
- DEBUG(1, "serial_event(0x%06x)\n", event);
--
-+
- switch (event) {
- case CS_EVENT_CARD_REMOVAL:
- link->state &= ~DEV_PRESENT;
-@@ -714,7 +736,7 @@
- if (serv.Revision != CS_RELEASE_CODE) {
- printk(KERN_NOTICE "serial_cs: Card Services release "
- "does not match!\n");
-- return -1;
-+ return -EINVAL;
- }
- register_pccard_driver(&dev_info, &serial_attach, &serial_detach);
- return 0;
-diff -Nur c3000_pre/linux/drivers/char/serial.c c3000_work/linux/drivers/char/serial.c
---- c3000_pre/linux/drivers/char/serial.c 2004-08-21 09:48:26.000000000 +0900
-+++ c3000_work/linux/drivers/char/serial.c 2004-12-16 23:01:14.000000000 +0900
-@@ -961,10 +961,15 @@
- if (status & UART_LSR_DR)
- receive_chars(info, &status, regs);
- check_modem_status(info);
-+#ifdef CONFIG_MELAN
- if ((status & UART_LSR_THRE) ||
- /* for buggy ELAN processors */
- ((iir & UART_IIR_ID) == UART_IIR_THRI))
- transmit_chars(info, 0);
-+#else
-+ if (status & UART_LSR_THRE)
-+ transmit_chars(info, 0);
-+#endif
-
- next:
- info = info->next_port;
-diff -Nur c3000_pre/linux/drivers/input/Config.in c3000_work/linux/drivers/input/Config.in
---- c3000_pre/linux/drivers/input/Config.in 2004-08-21 09:48:34.000000000 +0900
-+++ c3000_work/linux/drivers/input/Config.in 2004-12-16 23:01:14.000000000 +0900
-@@ -14,5 +14,6 @@
- fi
- dep_tristate ' Joystick support' CONFIG_INPUT_JOYDEV $CONFIG_INPUT
- dep_tristate ' Event interface support' CONFIG_INPUT_EVDEV $CONFIG_INPUT
-+dep_tristate ' User level driver support' CONFIG_INPUT_UINPUT $CONFIG_INPUT
-
- endmenu
-diff -Nur c3000_pre/linux/drivers/input/Makefile c3000_work/linux/drivers/input/Makefile
---- c3000_pre/linux/drivers/input/Makefile 2004-08-21 09:48:34.000000000 +0900
-+++ c3000_work/linux/drivers/input/Makefile 2004-12-16 23:01:14.000000000 +0900
-@@ -24,6 +24,7 @@
- obj-$(CONFIG_INPUT_MOUSEDEV) += mousedev.o
- obj-$(CONFIG_INPUT_JOYDEV) += joydev.o
- obj-$(CONFIG_INPUT_EVDEV) += evdev.o
-+obj-$(CONFIG_INPUT_UINPUT) += uinput.o
-
- # The global Rules.make.
-
-diff -Nur c3000_pre/linux/drivers/input/keybdev.c c3000_work/linux/drivers/input/keybdev.c
---- c3000_pre/linux/drivers/input/keybdev.c 2004-08-21 09:48:34.000000000 +0900
-+++ c3000_work/linux/drivers/input/keybdev.c 2004-12-16 23:01:14.000000000 +0900
-@@ -166,16 +166,18 @@
-
- static struct input_handler keybdev_handler;
-
-+static unsigned int ledstate = 0xff;
-+
- void keybdev_ledfunc(unsigned int led)
- {
- struct input_handle *handle;
-
-- for (handle = keybdev_handler.handle; handle; handle = handle->hnext) {
-+ ledstate = led;
-
-+ for (handle = keybdev_handler.handle; handle; handle = handle->hnext) {
- input_event(handle->dev, EV_LED, LED_SCROLLL, !!(led & 0x01));
- input_event(handle->dev, EV_LED, LED_NUML, !!(led & 0x02));
- input_event(handle->dev, EV_LED, LED_CAPSL, !!(led & 0x04));
--
- }
- }
-
-@@ -214,6 +216,12 @@
-
- // printk(KERN_INFO "keybdev.c: Adding keyboard: input%d\n", dev->number);
-
-+ if (ledstate != 0xff) {
-+ input_event(dev, EV_LED, LED_SCROLLL, !!(ledstate & 0x01));
-+ input_event(dev, EV_LED, LED_NUML, !!(ledstate & 0x02));
-+ input_event(dev, EV_LED, LED_CAPSL, !!(ledstate & 0x04));
-+ }
-+
- return handle;
- }
-
-diff -Nur c3000_pre/linux/drivers/input/uinput.c c3000_work/linux/drivers/input/uinput.c
---- c3000_pre/linux/drivers/input/uinput.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/input/uinput.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,428 @@
-+/*
-+ * User level driver support for input subsystem
-+ *
-+ * Heavily based on evdev.c by Vojtech Pavlik
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
-+ *
-+ * Changes/Revisions:
-+ * 0.1 20/06/2002
-+ * - first public version
-+ */
-+
-+#include <linux/poll.h>
-+#include <linux/slab.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/input.h>
-+#include <linux/smp_lock.h>
-+#include <linux/fs.h>
-+#include <linux/miscdevice.h>
-+#include <linux/uinput.h>
-+
-+static int uinput_dev_open(struct input_dev *dev)
-+{
-+ return 0;
-+}
-+
-+static void uinput_dev_close(struct input_dev *dev)
-+{
-+}
-+
-+static int uinput_dev_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
-+{
-+ struct uinput_device *udev;
-+
-+ udev = (struct uinput_device *)dev->private;
-+
-+ udev->buff[udev->head].type = type;
-+ udev->buff[udev->head].code = code;
-+ udev->buff[udev->head].value = value;
-+ do_gettimeofday(&udev->buff[udev->head].time);
-+ udev->head = (udev->head + 1) % UINPUT_BUFFER_SIZE;
-+
-+ wake_up_interruptible(&udev->waitq);
-+
-+ return 0;
-+}
-+
-+static int uinput_dev_upload_effect(struct input_dev *dev, struct ff_effect *effect)
-+{
-+ return 0;
-+}
-+
-+static int uinput_dev_erase_effect(struct input_dev *dev, int effect_id)
-+{
-+ return 0;
-+}
-+
-+static int uinput_create_device(struct uinput_device *udev)
-+{
-+ if (!udev->dev->name) {
-+ printk(KERN_DEBUG "%s: write device info first\n", UINPUT_NAME);
-+ return -EINVAL;
-+ }
-+
-+ udev->dev->open = uinput_dev_open;
-+ udev->dev->close = uinput_dev_close;
-+ udev->dev->event = uinput_dev_event;
-+ udev->dev->upload_effect = uinput_dev_upload_effect;
-+ udev->dev->erase_effect = uinput_dev_erase_effect;
-+ udev->dev->private = udev;
-+
-+ init_waitqueue_head(&(udev->waitq));
-+
-+ input_register_device(udev->dev);
-+
-+ set_bit(UIST_CREATED, &(udev->state));
-+
-+ return 0;
-+}
-+
-+static int uinput_destroy_device(struct uinput_device *udev)
-+{
-+ if (!test_bit(UIST_CREATED, &(udev->state))) {
-+ printk(KERN_WARNING "%s: create the device first\n", UINPUT_NAME);
-+ return -EINVAL;
-+ }
-+
-+ input_unregister_device(udev->dev);
-+
-+ clear_bit(UIST_CREATED, &(udev->state));
-+
-+ return 0;
-+}
-+
-+static int uinput_open(struct inode *inode, struct file *file)
-+{
-+ struct uinput_device *newdev;
-+ struct input_dev *newinput;
-+
-+ newdev = kmalloc(sizeof(struct uinput_device), GFP_KERNEL);
-+ if (!newdev)
-+ goto error;
-+ memset(newdev, 0, sizeof(struct uinput_device));
-+
-+ newinput = kmalloc(sizeof(struct input_dev), GFP_KERNEL);
-+ if (!newinput)
-+ goto cleanup;
-+ memset(newinput, 0, sizeof(struct input_dev));
-+
-+ newdev->dev = newinput;
-+
-+ file->private_data = newdev;
-+
-+ return 0;
-+cleanup:
-+ kfree(newdev);
-+error:
-+ return -ENOMEM;
-+}
-+
-+static int uinput_validate_absbits(struct input_dev *dev)
-+{
-+ unsigned int cnt;
-+ int retval = 0;
-+
-+ for (cnt = 0; cnt < ABS_MAX; cnt++) {
-+ if (!test_bit(cnt, dev->absbit))
-+ continue;
-+
-+ if (/*!dev->absmin[cnt] || !dev->absmax[cnt] || */
-+ (dev->absmax[cnt] <= dev->absmin[cnt])) {
-+ printk(KERN_DEBUG
-+ "%s: invalid abs[%02x] min:%d max:%d\n",
-+ UINPUT_NAME, cnt,
-+ dev->absmin[cnt], dev->absmax[cnt]);
-+ retval = -EINVAL;
-+ break;
-+ }
-+
-+ if ((dev->absflat[cnt] < dev->absmin[cnt]) ||
-+ (dev->absflat[cnt] > dev->absmax[cnt])) {
-+ printk(KERN_DEBUG
-+ "%s: absflat[%02x] out of range: %d "
-+ "(min:%d/max:%d)\n",
-+ UINPUT_NAME, cnt, dev->absflat[cnt],
-+ dev->absmin[cnt], dev->absmax[cnt]);
-+ retval = -EINVAL;
-+ break;
-+ }
-+ }
-+ return retval;
-+}
-+
-+static int uinput_alloc_device(struct file *file, const char *buffer, size_t count)
-+{
-+ struct uinput_user_dev *user_dev;
-+ struct input_dev *dev;
-+ struct uinput_device *udev;
-+ int size,
-+ retval;
-+
-+ retval = count;
-+
-+ udev = (struct uinput_device *)file->private_data;
-+ dev = udev->dev;
-+
-+ user_dev = kmalloc(sizeof(*user_dev), GFP_KERNEL);
-+ if (!user_dev) {
-+ retval = -ENOMEM;
-+ goto exit;
-+ }
-+
-+ if (copy_from_user(user_dev, buffer, sizeof(struct uinput_user_dev))) {
-+ retval = -EFAULT;
-+ goto exit;
-+ }
-+
-+ if (NULL != dev->name)
-+ kfree(dev->name);
-+
-+ size = strnlen(user_dev->name, UINPUT_MAX_NAME_SIZE) + 1;
-+ dev->name = kmalloc(size, GFP_KERNEL);
-+ if (!dev->name) {
-+ retval = -ENOMEM;
-+ goto exit;
-+ }
-+
-+ strncpy(dev->name, user_dev->name, size);
-+ dev->idbus = user_dev->idbus;
-+ dev->idvendor = user_dev->idvendor;
-+ dev->idproduct = user_dev->idproduct;
-+ dev->idversion = user_dev->idversion;
-+ dev->ff_effects_max = user_dev->ff_effects_max;
-+
-+ size = sizeof(int) * (ABS_MAX + 1);
-+ memcpy(dev->absmax, user_dev->absmax, size);
-+ memcpy(dev->absmin, user_dev->absmin, size);
-+ memcpy(dev->absfuzz, user_dev->absfuzz, size);
-+ memcpy(dev->absflat, user_dev->absflat, size);
-+
-+ /* check if absmin/absmax/absfuzz/absflat are filled as
-+ * told in Documentation/input/input-programming.txt */
-+ if (test_bit(EV_ABS, dev->evbit)) {
-+ retval = uinput_validate_absbits(dev);
-+ if (retval < 0)
-+ kfree(dev->name);
-+ }
-+
-+exit:
-+ kfree(user_dev);
-+ return retval;
-+}
-+
-+static ssize_t uinput_write(struct file *file, const char *buffer, size_t count, loff_t *ppos)
-+{
-+ struct uinput_device *udev = file->private_data;
-+
-+ if (test_bit(UIST_CREATED, &(udev->state))) {
-+ struct input_event ev;
-+
-+ if (copy_from_user(&ev, buffer, sizeof(struct input_event)))
-+ return -EFAULT;
-+ input_event(udev->dev, ev.type, ev.code, ev.value);
-+ }
-+ else
-+ count = uinput_alloc_device(file, buffer, count);
-+
-+ return count;
-+}
-+
-+static ssize_t uinput_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
-+{
-+ struct uinput_device *udev = file->private_data;
-+ int retval = 0;
-+
-+ if (!test_bit(UIST_CREATED, &(udev->state)))
-+ return -ENODEV;
-+
-+ if ((udev->head == udev->tail) && (file->f_flags & O_NONBLOCK))
-+ return -EAGAIN;
-+
-+ retval = wait_event_interruptible(udev->waitq,
-+ (udev->head != udev->tail) ||
-+ !test_bit(UIST_CREATED, &(udev->state)));
-+
-+ if (retval)
-+ return retval;
-+
-+ if (!test_bit(UIST_CREATED, &(udev->state)))
-+ return -ENODEV;
-+
-+ while ((udev->head != udev->tail) &&
-+ (retval + sizeof(struct input_event) <= count)) {
-+ if (copy_to_user(buffer + retval, &(udev->buff[udev->tail]),
-+ sizeof(struct input_event))) return -EFAULT;
-+ udev->tail = (udev->tail + 1) % UINPUT_BUFFER_SIZE;
-+ retval += sizeof(struct input_event);
-+ }
-+
-+ return retval;
-+}
-+
-+static unsigned int uinput_poll(struct file *file, poll_table *wait)
-+{
-+ struct uinput_device *udev = file->private_data;
-+
-+ poll_wait(file, &udev->waitq, wait);
-+
-+ if (udev->head != udev->tail)
-+ return POLLIN | POLLRDNORM;
-+
-+ return 0;
-+}
-+
-+static int uinput_burn_device(struct uinput_device *udev)
-+{
-+ if (test_bit(UIST_CREATED, &(udev->state)))
-+ uinput_destroy_device(udev);
-+
-+ kfree(udev->dev);
-+ kfree(udev);
-+
-+ return 0;
-+}
-+
-+static int uinput_close(struct inode *inode, struct file *file)
-+{
-+ return uinput_burn_device((struct uinput_device *)file->private_data);
-+}
-+
-+static int uinput_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
-+{
-+ int retval = 0;
-+ struct uinput_device *udev;
-+
-+ udev = (struct uinput_device *)file->private_data;
-+
-+ /* device attributes can not be changed after the device is created */
-+ if (cmd >= UI_SET_EVBIT && test_bit(UIST_CREATED, &(udev->state)))
-+ return -EINVAL;
-+
-+ switch (cmd) {
-+ case UI_DEV_CREATE:
-+ retval = uinput_create_device(udev);
-+ break;
-+
-+ case UI_DEV_DESTROY:
-+ retval = uinput_destroy_device(udev);
-+ break;
-+
-+ case UI_SET_EVBIT:
-+ if (arg > EV_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->evbit);
-+ break;
-+
-+ case UI_SET_KEYBIT:
-+ if (arg > KEY_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->keybit);
-+ break;
-+
-+ case UI_SET_RELBIT:
-+ if (arg > REL_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->relbit);
-+ break;
-+
-+ case UI_SET_ABSBIT:
-+ if (arg > ABS_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->absbit);
-+ break;
-+
-+ case UI_SET_MSCBIT:
-+ if (arg > MSC_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->mscbit);
-+ break;
-+
-+ case UI_SET_LEDBIT:
-+ if (arg > LED_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->ledbit);
-+ break;
-+
-+ case UI_SET_SNDBIT:
-+ if (arg > SND_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->sndbit);
-+ break;
-+
-+ case UI_SET_FFBIT:
-+ if (arg > FF_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->ffbit);
-+ break;
-+
-+ default:
-+ retval = -EFAULT;
-+ }
-+ return retval;
-+}
-+
-+struct file_operations uinput_fops = {
-+ owner: THIS_MODULE,
-+ open: uinput_open,
-+ release: uinput_close,
-+ read: uinput_read,
-+ write: uinput_write,
-+ poll: uinput_poll,
-+ ioctl: uinput_ioctl,
-+};
-+
-+static struct miscdevice uinput_misc = {
-+ fops: &uinput_fops,
-+ minor: UINPUT_MINOR,
-+ name: UINPUT_NAME,
-+};
-+
-+static int __init uinput_init(void)
-+{
-+ return misc_register(&uinput_misc);
-+}
-+
-+static void __exit uinput_exit(void)
-+{
-+ misc_deregister(&uinput_misc);
-+}
-+
-+MODULE_AUTHOR("Aristeu Sergio Rozanski Filho");
-+MODULE_DESCRIPTION("User level driver support for input subsystem");
-+MODULE_LICENSE("GPL");
-+
-+module_init(uinput_init);
-+module_exit(uinput_exit);
-+
-diff -Nur c3000_pre/linux/drivers/isdn/avmb1/capidrv.c c3000_work/linux/drivers/isdn/avmb1/capidrv.c
---- c3000_pre/linux/drivers/isdn/avmb1/capidrv.c 2004-08-21 09:48:34.000000000 +0900
-+++ c3000_work/linux/drivers/isdn/avmb1/capidrv.c 2004-12-16 23:01:14.000000000 +0900
-@@ -514,13 +514,25 @@
-
- static void send_message(capidrv_contr * card, _cmsg * cmsg)
- {
-- struct sk_buff *skb;
-- size_t len;
-+ struct sk_buff *skb;
-+ size_t len;
-+ u16 err;
-+
- capi_cmsg2message(cmsg, cmsg->buf);
- len = CAPIMSG_LEN(cmsg->buf);
- skb = alloc_skb(len, GFP_ATOMIC);
-+ if(!skb) {
-+ printk(KERN_ERR "no skb len(%d) memory\n", len);
-+ return;
-+ }
- memcpy(skb_put(skb, len), cmsg->buf, len);
-- (*capifuncs->capi_put_message) (global.appid, skb);
-+ err = (*capifuncs->capi_put_message) (global.appid, skb);
-+ if (err) {
-+ printk(KERN_WARNING "%s: capi_put_message error: %04x\n",
-+ __FUNCTION__, err);
-+ kfree_skb(skb);
-+ return;
-+ }
- global.nsentctlpkt++;
- }
-
-@@ -2179,10 +2191,10 @@
- free_ncci(card, card->bchans[card->nbchan-1].nccip);
- if (card->bchans[card->nbchan-1].plcip)
- free_plci(card, card->bchans[card->nbchan-1].plcip);
-- if (card->plci_list)
-- printk(KERN_ERR "capidrv: bug in free_plci()\n");
- card->nbchan--;
- }
-+ if (card->plci_list)
-+ printk(KERN_ERR "capidrv: bug in free_plci()\n");
- kfree(card->bchans);
- card->bchans = 0;
-
-diff -Nur c3000_pre/linux/drivers/isdn/avmb1/kcapi.c c3000_work/linux/drivers/isdn/avmb1/kcapi.c
---- c3000_pre/linux/drivers/isdn/avmb1/kcapi.c 2004-08-21 09:48:34.000000000 +0900
-+++ c3000_work/linux/drivers/isdn/avmb1/kcapi.c 2004-12-16 23:01:14.000000000 +0900
-@@ -545,7 +545,13 @@
- static void notify_up(__u32 contr)
- {
- struct capi_interface_user *p;
-+ __u16 appl;
-
-+ for (appl = 1; appl <= CAPI_MAXAPPL; appl++) {
-+ if (!VALID_APPLID(appl)) continue;
-+ if (APPL(appl)->releasing) continue;
-+ CARD(contr)->driver->register_appl(CARD(contr), appl, &APPL(appl)->rparam);
-+ }
- printk(KERN_NOTICE "kcapi: notify up contr %d\n", contr);
- spin_lock(&capi_users_lock);
- for (p = capi_users; p; p = p->next) {
-@@ -705,12 +711,16 @@
- nextpp = &(*pp)->next;
- }
- }
-- APPL(appl)->releasing--;
-- if (APPL(appl)->releasing <= 0) {
-- APPL(appl)->signal = 0;
-- APPL_MARK_FREE(appl);
-- printk(KERN_INFO "kcapi: appl %d down\n", appl);
-- }
-+ if (APPL(appl)->releasing) { /* only release if the application was marked for release */
-+ printk(KERN_DEBUG "kcapi: appl %d releasing(%d)\n", appl, APPL(appl)->releasing);
-+ APPL(appl)->releasing--;
-+ if (APPL(appl)->releasing <= 0) {
-+ APPL(appl)->signal = 0;
-+ APPL_MARK_FREE(appl);
-+ printk(KERN_INFO "kcapi: appl %d down\n", appl);
-+ }
-+ } else
-+ printk(KERN_WARNING "kcapi: appl %d card%d released without request\n", appl, card->cnr);
- }
- /*
- * ncci management
-@@ -863,16 +873,7 @@
-
- static void controllercb_ready(struct capi_ctr * card)
- {
-- __u16 appl;
--
- card->cardstate = CARD_RUNNING;
--
-- for (appl = 1; appl <= CAPI_MAXAPPL; appl++) {
-- if (!VALID_APPLID(appl)) continue;
-- if (APPL(appl)->releasing) continue;
-- card->driver->register_appl(card, appl, &APPL(appl)->rparam);
-- }
--
- printk(KERN_NOTICE "kcapi: card %d \"%s\" ready.\n",
- CARDNR(card), card->name);
-
-diff -Nur c3000_pre/linux/drivers/usb/Config.in c3000_work/linux/drivers/usb/Config.in
---- c3000_pre/linux/drivers/usb/Config.in 2004-08-21 09:48:56.000000000 +0900
-+++ c3000_work/linux/drivers/usb/Config.in 2004-12-16 23:01:14.000000000 +0900
-@@ -63,7 +63,13 @@
- comment 'USB Device Class drivers'
- dep_tristate ' USB Audio support' CONFIG_USB_AUDIO $CONFIG_USB $CONFIG_SOUND
- dep_tristate ' EMI 2|6 USB Audio interface support' CONFIG_USB_EMI26 $CONFIG_USB_AUDIO
-- dep_tristate ' USB Bluetooth support (EXPERIMENTAL)' CONFIG_USB_BLUETOOTH $CONFIG_USB $CONFIG_EXPERIMENTAL
-+ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-+ if [ "$CONFIG_BLUEZ" = "n" ]; then
-+ dep_tristate ' USB Bluetooth support (EXPERIMENTAL)' CONFIG_USB_BLUETOOTH $CONFIG_USB
-+ else
-+ comment ' USB Bluetooth can only be used with disabled Bluetooth subsystem'
-+ fi
-+ fi
- dep_tristate ' USB MIDI support' CONFIG_USB_MIDI $CONFIG_USB
- if [ "$CONFIG_SCSI" = "n" ]; then
- comment ' SCSI support is needed for USB Storage'
-diff -Nur c3000_pre/linux/drivers/usb/hid-core.c c3000_work/linux/drivers/usb/hid-core.c
---- c3000_pre/linux/drivers/usb/hid-core.c 2004-08-21 09:48:57.000000000 +0900
-+++ c3000_work/linux/drivers/usb/hid-core.c 2004-12-16 23:01:14.000000000 +0900
-@@ -211,6 +211,8 @@
-
- offset = report->size;
- report->size += parser->global.report_size * parser->global.report_count;
-+ if (usages < parser->global.report_count)
-+ usages = parser->global.report_count;
-
- if (usages == 0)
- return 0; /* ignore padding fields */
-diff -Nur c3000_pre/linux/include/linux/firmware.h c3000_work/linux/include/linux/firmware.h
---- c3000_pre/linux/include/linux/firmware.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/include/linux/firmware.h 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,20 @@
-+#ifndef _LINUX_FIRMWARE_H
-+#define _LINUX_FIRMWARE_H
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#define FIRMWARE_NAME_MAX 30
-+struct firmware {
-+ size_t size;
-+ u8 *data;
-+};
-+int request_firmware (const struct firmware **fw, const char *name,
-+ const char *device);
-+int request_firmware_nowait (
-+ struct module *module,
-+ const char *name, const char *device, void *context,
-+ void (*cont)(const struct firmware *fw, void *context));
-+/* On 2.5 'device' is 'struct device *' */
-+
-+void release_firmware (const struct firmware *fw);
-+void register_firmware (const char *name, const u8 *data, size_t size);
-+#endif
-diff -Nur c3000_pre/linux/include/linux/input.h c3000_work/linux/include/linux/input.h
---- c3000_pre/linux/include/linux/input.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_work/linux/include/linux/input.h 2004-12-16 23:01:14.000000000 +0900
-@@ -471,7 +471,8 @@
- #define BUS_PCI 0x01
- #define BUS_ISAPNP 0x02
- #define BUS_USB 0x03
--#define BUS_HIL 0x04
-+#define BUS_HIL 0x04
-+#define BUS_BLUETOOTH 0x05
-
- #define BUS_ISA 0x10
- #define BUS_I8042 0x11
-diff -Nur c3000_pre/linux/include/linux/net.h c3000_work/linux/include/linux/net.h
---- c3000_pre/linux/include/linux/net.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_work/linux/include/linux/net.h 2004-12-16 23:01:14.000000000 +0900
-@@ -139,6 +139,7 @@
- extern int sock_recvmsg(struct socket *, struct msghdr *m, int len, int flags);
- extern int sock_readv_writev(int type, struct inode * inode, struct file * file,
- const struct iovec * iov, long count, long size);
-+extern struct socket *sockfd_lookup(int fd, int *err);
-
- extern int net_ratelimit(void);
- extern unsigned long net_random(void);
-diff -Nur c3000_pre/linux/include/linux/uinput.h c3000_work/linux/include/linux/uinput.h
---- c3000_pre/linux/include/linux/uinput.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/include/linux/uinput.h 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,79 @@
-+/*
-+ * User level driver support for input subsystem
-+ *
-+ * Heavily based on evdev.c by Vojtech Pavlik
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
-+ *
-+ * Changes/Revisions:
-+ * 0.1 20/06/2002
-+ * - first public version
-+ */
-+
-+#ifndef __UINPUT_H_
-+#define __UINPUT_H_
-+
-+#ifdef __KERNEL__
-+#define UINPUT_MINOR 223
-+#define UINPUT_NAME "uinput"
-+#define UINPUT_BUFFER_SIZE 16
-+
-+/* state flags => bit index for {set|clear|test}_bit ops */
-+#define UIST_CREATED 0
-+
-+struct uinput_device {
-+ struct input_dev *dev;
-+ unsigned long state;
-+ wait_queue_head_t waitq;
-+ unsigned char ready,
-+ head,
-+ tail;
-+ struct input_event buff[UINPUT_BUFFER_SIZE];
-+};
-+#endif /* __KERNEL__ */
-+
-+/* ioctl */
-+#define UINPUT_IOCTL_BASE 'U'
-+#define UI_DEV_CREATE _IO(UINPUT_IOCTL_BASE, 1)
-+#define UI_DEV_DESTROY _IO(UINPUT_IOCTL_BASE, 2)
-+#define UI_SET_EVBIT _IOW(UINPUT_IOCTL_BASE, 100, int)
-+#define UI_SET_KEYBIT _IOW(UINPUT_IOCTL_BASE, 101, int)
-+#define UI_SET_RELBIT _IOW(UINPUT_IOCTL_BASE, 102, int)
-+#define UI_SET_ABSBIT _IOW(UINPUT_IOCTL_BASE, 103, int)
-+#define UI_SET_MSCBIT _IOW(UINPUT_IOCTL_BASE, 104, int)
-+#define UI_SET_LEDBIT _IOW(UINPUT_IOCTL_BASE, 105, int)
-+#define UI_SET_SNDBIT _IOW(UINPUT_IOCTL_BASE, 106, int)
-+#define UI_SET_FFBIT _IOW(UINPUT_IOCTL_BASE, 107, int)
-+
-+#ifndef NBITS
-+#define NBITS(x) ((((x)-1)/(sizeof(long)*8))+1)
-+#endif /* NBITS */
-+
-+#define UINPUT_MAX_NAME_SIZE 80
-+struct uinput_user_dev {
-+ char name[UINPUT_MAX_NAME_SIZE];
-+ unsigned short idbus;
-+ unsigned short idvendor;
-+ unsigned short idproduct;
-+ unsigned short idversion;
-+ int ff_effects_max;
-+ int absmax[ABS_MAX + 1];
-+ int absmin[ABS_MAX + 1];
-+ int absfuzz[ABS_MAX + 1];
-+ int absflat[ABS_MAX + 1];
-+};
-+#endif /* __UINPUT_H_ */
-diff -Nur c3000_pre/linux/include/net/bluetooth/bluetooth.h c3000_work/linux/include/net/bluetooth/bluetooth.h
---- c3000_pre/linux/include/net/bluetooth/bluetooth.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_work/linux/include/net/bluetooth/bluetooth.h 2004-12-16 23:01:14.000000000 +0900
-@@ -51,6 +51,8 @@
- #define BTPROTO_SCO 2
- #define BTPROTO_RFCOMM 3
- #define BTPROTO_BNEP 4
-+#define BTPROTO_CMTP 5
-+#define BTPROTO_HIDP 6
-
- #define SOL_HCI 0
- #define SOL_L2CAP 6
-@@ -155,7 +157,7 @@
- void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *s);
- int bluez_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm);
- uint bluez_sock_poll(struct file * file, struct socket *sock, poll_table *wait);
--int bluez_sock_w4_connect(struct sock *sk, int flags);
-+int bluez_sock_wait_state(struct sock *sk, int state, unsigned long timeo);
-
- void bluez_accept_enqueue(struct sock *parent, struct sock *sk);
- struct sock * bluez_accept_dequeue(struct sock *parent, struct socket *newsock);
-diff -Nur c3000_pre/linux/include/net/bluetooth/hci.h c3000_work/linux/include/net/bluetooth/hci.h
---- c3000_pre/linux/include/net/bluetooth/hci.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_work/linux/include/net/bluetooth/hci.h 2004-12-16 23:01:14.000000000 +0900
-@@ -39,6 +39,8 @@
- #define HCI_DEV_UNREG 2
- #define HCI_DEV_UP 3
- #define HCI_DEV_DOWN 4
-+#define HCI_DEV_SUSPEND 5
-+#define HCI_DEV_RESUME 6
-
- /* HCI device types */
- #define HCI_VHCI 0
-@@ -46,6 +48,12 @@
- #define HCI_PCCARD 2
- #define HCI_UART 3
- #define HCI_RS232 4
-+#define HCI_PCI 5
-+
-+/* HCI device quirks */
-+enum {
-+ HCI_QUIRK_RESET_ON_INIT
-+};
-
- /* HCI device flags */
- enum {
-@@ -157,6 +165,7 @@
- #define HCI_LM_AUTH 0x0002
- #define HCI_LM_ENCRYPT 0x0004
- #define HCI_LM_TRUSTED 0x0008
-+#define HCI_LM_RELIABLE 0x0010
-
- /* ----- HCI Commands ----- */
- /* OGF & OCF values */
-@@ -330,6 +339,8 @@
- } __attribute__ ((packed)) status_bdaddr_rp;
- #define STATUS_BDADDR_RP_SIZE 7
-
-+#define OCF_INQUIRY_CANCEL 0x0002
-+
- #define OCF_LINK_KEY_REPLY 0x000B
- #define OCF_LINK_KEY_NEG_REPLY 0x000C
- typedef struct {
-@@ -436,6 +447,12 @@
- /* Status params */
- #define OGF_STATUS_PARAM 0x05
-
-+/* Testing commands */
-+#define OGF_TESTING_CMD 0x3e
-+
-+/* Vendor specific commands */
-+#define OGF_VENDOR_CMD 0x3f
-+
- /* ---- HCI Events ---- */
- #define EVT_INQUIRY_COMPLETE 0x01
-
-@@ -450,6 +467,17 @@
- } __attribute__ ((packed)) inquiry_info;
- #define INQUIRY_INFO_SIZE 14
-
-+#define EVT_INQUIRY_RESULT_WITH_RSSI 0x22
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 pscan_rep_mode;
-+ __u8 pscan_period_mode;
-+ __u8 dev_class[3];
-+ __u16 clock_offset;
-+ __s8 rssi;
-+} __attribute__ ((packed)) inquiry_info_with_rssi;
-+#define INQUIRY_INFO_WITH_RSSI_SIZE 14
-+
- #define EVT_CONN_COMPLETE 0x03
- typedef struct {
- __u8 status;
-@@ -542,7 +570,7 @@
- bdaddr_t bdaddr;
- __u8 role;
- } __attribute__ ((packed)) evt_role_change;
--#define EVT_ROLE_CHANGE_SIZE 1
-+#define EVT_ROLE_CHANGE_SIZE 8
-
- #define EVT_PIN_CODE_REQ 0x16
- typedef struct {
-diff -Nur c3000_pre/linux/include/net/bluetooth/hci_core.h c3000_work/linux/include/net/bluetooth/hci_core.h
---- c3000_pre/linux/include/net/bluetooth/hci_core.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_work/linux/include/net/bluetooth/hci_core.h 2004-12-16 23:01:14.000000000 +0900
-@@ -72,7 +72,9 @@
- __u16 pkt_type;
- __u16 link_policy;
- __u16 link_mode;
--
-+
-+ unsigned long quirks;
-+
- atomic_t cmd_cnt;
- unsigned int acl_cnt;
- unsigned int sco_cnt;
-@@ -167,6 +169,12 @@
- c->list = NULL;
- }
-
-+static inline int inquiry_cache_empty(struct hci_dev *hdev)
-+{
-+ struct inquiry_cache *c = &hdev->inq_cache;
-+ return (c->list == NULL);
-+}
-+
- static inline long inquiry_cache_age(struct hci_dev *hdev)
- {
- struct inquiry_cache *c = &hdev->inq_cache;
-@@ -281,8 +289,14 @@
-
- static inline void hci_conn_put(struct hci_conn *conn)
- {
-- if (atomic_dec_and_test(&conn->refcnt) && conn->out)
-- hci_conn_set_timer(conn, HCI_DISCONN_TIMEOUT);
-+ if (atomic_dec_and_test(&conn->refcnt)) {
-+ if (conn->type == ACL_LINK) {
-+ unsigned long timeo = (conn->out) ?
-+ HCI_DISCONN_TIMEOUT : HCI_DISCONN_TIMEOUT * 2;
-+ hci_conn_set_timer(conn, timeo);
-+ } else
-+ hci_conn_set_timer(conn, HZ / 100);
-+ }
- }
-
- /* ----- HCI Devices ----- */
-@@ -302,6 +316,8 @@
- struct hci_dev *hci_get_route(bdaddr_t *src, bdaddr_t *dst);
- int hci_register_dev(struct hci_dev *hdev);
- int hci_unregister_dev(struct hci_dev *hdev);
-+int hci_suspend_dev(struct hci_dev *hdev);
-+int hci_resume_dev(struct hci_dev *hdev);
- int hci_dev_open(__u16 dev);
- int hci_dev_close(__u16 dev);
- int hci_dev_reset(__u16 dev);
-@@ -429,7 +445,6 @@
- int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void *param);
- int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags);
- int hci_send_sco(struct hci_conn *conn, struct sk_buff *skb);
--int hci_send_raw(struct sk_buff *skb);
-
- void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf);
-
-@@ -447,7 +462,7 @@
- };
-
- /* HCI security filter */
--#define HCI_SFLT_MAX_OGF 4
-+#define HCI_SFLT_MAX_OGF 5
-
- struct hci_sec_filter {
- __u32 type_mask;
-@@ -455,7 +470,6 @@
- __u32 ocf_mask[HCI_SFLT_MAX_OGF + 1][4];
- };
-
--
- /* ----- HCI requests ----- */
- #define HCI_REQ_DONE 0
- #define HCI_REQ_PEND 1
-diff -Nur c3000_pre/linux/include/net/bluetooth/l2cap.h c3000_work/linux/include/net/bluetooth/l2cap.h
---- c3000_pre/linux/include/net/bluetooth/l2cap.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_work/linux/include/net/bluetooth/l2cap.h 2004-12-16 23:01:14.000000000 +0900
-@@ -60,6 +60,7 @@
- #define L2CAP_LM_AUTH 0x0002
- #define L2CAP_LM_ENCRYPT 0x0004
- #define L2CAP_LM_TRUSTED 0x0008
-+#define L2CAP_LM_RELIABLE 0x0010
-
- #define L2CAP_QOS 0x04
- struct l2cap_qos {
-@@ -189,6 +190,14 @@
- } __attribute__ ((packed)) l2cap_info_rsp;
- #define L2CAP_INFO_RSP_SIZE 4
-
-+/* info type */
-+#define L2CAP_IT_CL_MTU 0x0001
-+#define L2CAP_IT_FEAT_MASK 0x0002
-+
-+/* info result */
-+#define L2CAP_IR_SUCCESS 0x0000
-+#define L2CAP_IR_NOTSUPP 0x0001
-+
- /* ----- L2CAP connections ----- */
- struct l2cap_chan_list {
- struct sock *head;
-@@ -229,6 +238,7 @@
- __u32 link_mode;
-
- __u8 conf_state;
-+ __u8 conf_retry;
- __u16 conf_mtu;
-
- __u8 ident;
-@@ -238,8 +248,11 @@
- struct sock *prev_c;
- };
-
--#define CONF_REQ_SENT 0x01
--#define CONF_INPUT_DONE 0x02
--#define CONF_OUTPUT_DONE 0x04
-+#define L2CAP_CONF_REQ_SENT 0x01
-+#define L2CAP_CONF_INPUT_DONE 0x02
-+#define L2CAP_CONF_OUTPUT_DONE 0x04
-+#define L2CAP_CONF_MAX_RETRIES 2
-+
-+void l2cap_load(void);
-
- #endif /* __L2CAP_H */
-diff -Nur c3000_pre/linux/include/net/bluetooth/rfcomm.h c3000_work/linux/include/net/bluetooth/rfcomm.h
---- c3000_pre/linux/include/net/bluetooth/rfcomm.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/include/net/bluetooth/rfcomm.h 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,361 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ RPN support - Dirk Husemann <hud@zurich.ibm.com>
-+*/
-+
-+/*
-+ * $Id: rfcomm.h,v 1.31 2002/10/18 20:12:11 maxk Exp $
-+ */
-+
-+#ifndef __RFCOMM_H
-+#define __RFCOMM_H
-+
-+#define RFCOMM_PSM 3
-+
-+#define RFCOMM_CONN_TIMEOUT (HZ * 30)
-+#define RFCOMM_DISC_TIMEOUT (HZ * 20)
-+
-+#define RFCOMM_DEFAULT_MTU 127
-+#define RFCOMM_DEFAULT_CREDITS 7
-+
-+#define RFCOMM_MAX_L2CAP_MTU 1024
-+#define RFCOMM_MAX_CREDITS 40
-+
-+#define RFCOMM_SKB_HEAD_RESERVE 8
-+#define RFCOMM_SKB_TAIL_RESERVE 2
-+#define RFCOMM_SKB_RESERVE (RFCOMM_SKB_HEAD_RESERVE + RFCOMM_SKB_TAIL_RESERVE)
-+
-+#define RFCOMM_SABM 0x2f
-+#define RFCOMM_DISC 0x43
-+#define RFCOMM_UA 0x63
-+#define RFCOMM_DM 0x0f
-+#define RFCOMM_UIH 0xef
-+
-+#define RFCOMM_TEST 0x08
-+#define RFCOMM_FCON 0x28
-+#define RFCOMM_FCOFF 0x18
-+#define RFCOMM_MSC 0x38
-+#define RFCOMM_RPN 0x24
-+#define RFCOMM_RLS 0x14
-+#define RFCOMM_PN 0x20
-+#define RFCOMM_NSC 0x04
-+
-+#define RFCOMM_V24_FC 0x02
-+#define RFCOMM_V24_RTC 0x04
-+#define RFCOMM_V24_RTR 0x08
-+#define RFCOMM_V24_IC 0x40
-+#define RFCOMM_V24_DV 0x80
-+
-+#define RFCOMM_RPN_BR_2400 0x0
-+#define RFCOMM_RPN_BR_4800 0x1
-+#define RFCOMM_RPN_BR_7200 0x2
-+#define RFCOMM_RPN_BR_9600 0x3
-+#define RFCOMM_RPN_BR_19200 0x4
-+#define RFCOMM_RPN_BR_38400 0x5
-+#define RFCOMM_RPN_BR_57600 0x6
-+#define RFCOMM_RPN_BR_115200 0x7
-+#define RFCOMM_RPN_BR_230400 0x8
-+
-+#define RFCOMM_RPN_DATA_5 0x0
-+#define RFCOMM_RPN_DATA_6 0x1
-+#define RFCOMM_RPN_DATA_7 0x2
-+#define RFCOMM_RPN_DATA_8 0x3
-+
-+#define RFCOMM_RPN_STOP_1 0
-+#define RFCOMM_RPN_STOP_15 1
-+
-+#define RFCOMM_RPN_PARITY_NONE 0x0
-+#define RFCOMM_RPN_PARITY_ODD 0x4
-+#define RFCOMM_RPN_PARITY_EVEN 0x5
-+#define RFCOMM_RPN_PARITY_MARK 0x6
-+#define RFCOMM_RPN_PARITY_SPACE 0x7
-+
-+#define RFCOMM_RPN_FLOW_NONE 0x00
-+
-+#define RFCOMM_RPN_XON_CHAR 0x11
-+#define RFCOMM_RPN_XOFF_CHAR 0x13
-+
-+#define RFCOMM_RPN_PM_BITRATE 0x0001
-+#define RFCOMM_RPN_PM_DATA 0x0002
-+#define RFCOMM_RPN_PM_STOP 0x0004
-+#define RFCOMM_RPN_PM_PARITY 0x0008
-+#define RFCOMM_RPN_PM_PARITY_TYPE 0x0010
-+#define RFCOMM_RPN_PM_XON 0x0020
-+#define RFCOMM_RPN_PM_XOFF 0x0040
-+#define RFCOMM_RPN_PM_FLOW 0x3F00
-+
-+#define RFCOMM_RPN_PM_ALL 0x3F7F
-+
-+struct rfcomm_hdr {
-+ u8 addr;
-+ u8 ctrl;
-+ u8 len; // Actual size can be 2 bytes
-+} __attribute__ ((packed));
-+
-+struct rfcomm_cmd {
-+ u8 addr;
-+ u8 ctrl;
-+ u8 len;
-+ u8 fcs;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_mcc {
-+ u8 type;
-+ u8 len;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_pn {
-+ u8 dlci;
-+ u8 flow_ctrl;
-+ u8 priority;
-+ u8 ack_timer;
-+ u16 mtu;
-+ u8 max_retrans;
-+ u8 credits;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_rpn {
-+ u8 dlci;
-+ u8 bit_rate;
-+ u8 line_settings;
-+ u8 flow_ctrl;
-+ u8 xon_char;
-+ u8 xoff_char;
-+ u16 param_mask;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_rls {
-+ u8 dlci;
-+ u8 status;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_msc {
-+ u8 dlci;
-+ u8 v24_sig;
-+} __attribute__ ((packed));
-+
-+/* ---- Core structures, flags etc ---- */
-+
-+struct rfcomm_session {
-+ struct list_head list;
-+ struct socket *sock;
-+ unsigned long state;
-+ unsigned long flags;
-+ atomic_t refcnt;
-+ int initiator;
-+
-+ /* Default DLC parameters */
-+ int cfc;
-+ uint mtu;
-+
-+ struct list_head dlcs;
-+};
-+
-+struct rfcomm_dlc {
-+ struct list_head list;
-+ struct rfcomm_session *session;
-+ struct sk_buff_head tx_queue;
-+ struct timer_list timer;
-+
-+ spinlock_t lock;
-+ unsigned long state;
-+ unsigned long flags;
-+ atomic_t refcnt;
-+ u8 dlci;
-+ u8 addr;
-+ u8 priority;
-+ u8 v24_sig;
-+ u8 mscex;
-+
-+ uint mtu;
-+ uint cfc;
-+ uint rx_credits;
-+ uint tx_credits;
-+
-+ void *owner;
-+
-+ void (*data_ready)(struct rfcomm_dlc *d, struct sk_buff *skb);
-+ void (*state_change)(struct rfcomm_dlc *d, int err);
-+ void (*modem_status)(struct rfcomm_dlc *d, u8 v24_sig);
-+};
-+
-+/* DLC and session flags */
-+#define RFCOMM_RX_THROTTLED 0
-+#define RFCOMM_TX_THROTTLED 1
-+#define RFCOMM_MSC_PENDING 2
-+#define RFCOMM_TIMED_OUT 3
-+
-+/* Scheduling flags and events */
-+#define RFCOMM_SCHED_STATE 0
-+#define RFCOMM_SCHED_RX 1
-+#define RFCOMM_SCHED_TX 2
-+#define RFCOMM_SCHED_TIMEO 3
-+#define RFCOMM_SCHED_WAKEUP 31
-+
-+/* MSC exchange flags */
-+#define RFCOMM_MSCEX_TX 1
-+#define RFCOMM_MSCEX_RX 2
-+#define RFCOMM_MSCEX_OK (RFCOMM_MSCEX_TX + RFCOMM_MSCEX_RX)
-+
-+/* CFC states */
-+#define RFCOMM_CFC_UNKNOWN -1
-+#define RFCOMM_CFC_DISABLED 0
-+#define RFCOMM_CFC_ENABLED RFCOMM_MAX_CREDITS
-+
-+extern struct task_struct *rfcomm_thread;
-+extern unsigned long rfcomm_event;
-+
-+static inline void rfcomm_schedule(uint event)
-+{
-+ if (!rfcomm_thread)
-+ return;
-+ set_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
-+ wake_up_process(rfcomm_thread);
-+}
-+
-+extern struct semaphore rfcomm_sem;
-+#define rfcomm_lock() down(&rfcomm_sem);
-+#define rfcomm_unlock() up(&rfcomm_sem);
-+
-+/* ---- RFCOMM DLCs (channels) ---- */
-+struct rfcomm_dlc *rfcomm_dlc_alloc(int prio);
-+void rfcomm_dlc_free(struct rfcomm_dlc *d);
-+int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel);
-+int rfcomm_dlc_close(struct rfcomm_dlc *d, int reason);
-+int rfcomm_dlc_send(struct rfcomm_dlc *d, struct sk_buff *skb);
-+int rfcomm_dlc_set_modem_status(struct rfcomm_dlc *d, u8 v24_sig);
-+int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig);
-+
-+#define rfcomm_dlc_lock(d) spin_lock(&d->lock)
-+#define rfcomm_dlc_unlock(d) spin_unlock(&d->lock)
-+
-+static inline void rfcomm_dlc_hold(struct rfcomm_dlc *d)
-+{
-+ atomic_inc(&d->refcnt);
-+}
-+
-+static inline void rfcomm_dlc_put(struct rfcomm_dlc *d)
-+{
-+ if (atomic_dec_and_test(&d->refcnt))
-+ rfcomm_dlc_free(d);
-+}
-+
-+extern void FASTCALL(__rfcomm_dlc_throttle(struct rfcomm_dlc *d));
-+extern void FASTCALL(__rfcomm_dlc_unthrottle(struct rfcomm_dlc *d));
-+
-+static inline void rfcomm_dlc_throttle(struct rfcomm_dlc *d)
-+{
-+ if (!test_and_set_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ __rfcomm_dlc_throttle(d);
-+}
-+
-+static inline void rfcomm_dlc_unthrottle(struct rfcomm_dlc *d)
-+{
-+ if (test_and_clear_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ __rfcomm_dlc_unthrottle(d);
-+}
-+
-+/* ---- RFCOMM sessions ---- */
-+struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state);
-+struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst);
-+struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err);
-+void rfcomm_session_del(struct rfcomm_session *s);
-+void rfcomm_session_close(struct rfcomm_session *s, int err);
-+void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst);
-+
-+static inline void rfcomm_session_hold(struct rfcomm_session *s)
-+{
-+ atomic_inc(&s->refcnt);
-+}
-+
-+static inline void rfcomm_session_put(struct rfcomm_session *s)
-+{
-+ if (atomic_dec_and_test(&s->refcnt))
-+ rfcomm_session_del(s);
-+}
-+
-+/* ---- RFCOMM chechsum ---- */
-+extern u8 rfcomm_crc_table[];
-+
-+/* ---- RFCOMM sockets ---- */
-+struct sockaddr_rc {
-+ sa_family_t rc_family;
-+ bdaddr_t rc_bdaddr;
-+ u8 rc_channel;
-+};
-+
-+#define rfcomm_pi(sk) ((struct rfcomm_pinfo *) &sk->tp_pinfo)
-+
-+struct rfcomm_pinfo {
-+ struct rfcomm_dlc *dlc;
-+ u8 channel;
-+};
-+
-+int rfcomm_init_sockets(void);
-+void rfcomm_cleanup_sockets(void);
-+
-+int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc **d);
-+
-+/* ---- RFCOMM TTY ---- */
-+#define RFCOMM_MAX_DEV 256
-+
-+#define RFCOMMCREATEDEV _IOW('R', 200, int)
-+#define RFCOMMRELEASEDEV _IOW('R', 201, int)
-+#define RFCOMMGETDEVLIST _IOR('R', 210, int)
-+#define RFCOMMGETDEVINFO _IOR('R', 211, int)
-+#define RFCOMMSTEALDLC _IOW('R', 220, int)
-+
-+#define RFCOMM_REUSE_DLC 0
-+#define RFCOMM_RELEASE_ONHUP 1
-+#define RFCOMM_HANGUP_NOW 2
-+#define RFCOMM_TTY_ATTACHED 3
-+
-+struct rfcomm_dev_req {
-+ s16 dev_id;
-+ u32 flags;
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+};
-+
-+struct rfcomm_dev_info {
-+ s16 id;
-+ u32 flags;
-+ u16 state;
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+};
-+
-+struct rfcomm_dev_list_req {
-+ u16 dev_num;
-+ struct rfcomm_dev_info dev_info[0];
-+};
-+
-+int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg);
-+int rfcomm_init_ttys(void);
-+void rfcomm_cleanup_ttys(void);
-+
-+#endif /* __RFCOMM_H */
-diff -Nur c3000_pre/linux/include/pcmcia/ciscode.h c3000_work/linux/include/pcmcia/ciscode.h
---- c3000_pre/linux/include/pcmcia/ciscode.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_work/linux/include/pcmcia/ciscode.h 2004-12-16 23:01:14.000000000 +0900
-@@ -1,5 +1,5 @@
- /*
-- * ciscode.h 1.48 2001/08/24 12:16:12
-+ * ciscode.h 1.57 2002/11/03 20:38:14
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
-@@ -60,6 +60,10 @@
- #define PRODID_INTEL_DUAL_RS232 0x0301
- #define PRODID_INTEL_2PLUS 0x8422
-
-+#define MANFID_KME 0x0032
-+#define PRODID_KME_KXLC005_A 0x0704
-+#define PRODID_KME_KXLC005_B 0x2904
-+
- #define MANFID_LINKSYS 0x0143
- #define PRODID_LINKSYS_PCMLM28 0xc0ab
- #define PRODID_LINKSYS_3400 0x3341
-@@ -94,6 +98,8 @@
- #define PRODID_OSITECH_JACK_336 0x0007
- #define PRODID_OSITECH_SEVEN 0x0008
-
-+#define MANFID_OXSEMI 0x0279
-+
- #define MANFID_PIONEER 0x000b
-
- #define MANFID_PSION 0x016c
-@@ -103,6 +109,7 @@
- #define PRODID_QUATECH_SPP100 0x0003
- #define PRODID_QUATECH_DUAL_RS232 0x0012
- #define PRODID_QUATECH_DUAL_RS232_D1 0x0007
-+#define PRODID_QUATECH_DUAL_RS232_D2 0x0052
- #define PRODID_QUATECH_QUAD_RS232 0x001b
- #define PRODID_QUATECH_DUAL_RS422 0x000e
- #define PRODID_QUATECH_QUAD_RS422 0x0045
-@@ -120,9 +127,12 @@
-
- #define MANFID_TDK 0x0105
- #define PRODID_TDK_CF010 0x0900
-+#define PRODID_TDK_GN3410 0x4815
-
- #define MANFID_TOSHIBA 0x0098
-
-+#define MANFID_UNGERMANN 0x02c0
-+
- #define MANFID_XIRCOM 0x0105
-
- #endif /* _LINUX_CISCODE_H */
-diff -Nur c3000_pre/linux/kernel/ksyms.c c3000_work/linux/kernel/ksyms.c
---- c3000_pre/linux/kernel/ksyms.c 2004-08-21 09:49:14.000000000 +0900
-+++ c3000_work/linux/kernel/ksyms.c 2004-12-16 23:01:14.000000000 +0900
-@@ -51,6 +51,7 @@
- #include <linux/completion.h>
- #include <linux/seq_file.h>
- #include <linux/dnotify.h>
-+#include <linux/firmware.h>
- #include <asm/checksum.h>
-
- #if defined(CONFIG_PROC_FS)
-@@ -587,6 +588,13 @@
- EXPORT_SYMBOL(md5_pad);
- EXPORT_SYMBOL(md5_result);
-
-+#ifdef CONFIG_FW_LOADER
-+EXPORT_SYMBOL(release_firmware);
-+EXPORT_SYMBOL(request_firmware);
-+EXPORT_SYMBOL(request_firmware_nowait);
-+EXPORT_SYMBOL(register_firmware);
-+#endif
-+
- /* software interrupts */
- EXPORT_SYMBOL(tasklet_hi_vec);
- EXPORT_SYMBOL(tasklet_vec);
-diff -Nur c3000_pre/linux/lib/Config.in c3000_work/linux/lib/Config.in
---- c3000_pre/linux/lib/Config.in 2004-08-21 09:49:14.000000000 +0900
-+++ c3000_work/linux/lib/Config.in 2004-12-16 23:01:14.000000000 +0900
-@@ -9,4 +9,9 @@
-
- source crypto/Config.in
-
-+if [ "$CONFIG_EXPERIMENTAL" = "y" -a \
-+ "$CONFIG_HOTPLUG" = "y" ]; then
-+ tristate 'Hotplug firmware loading support (EXPERIMENTAL)' CONFIG_FW_LOADER
-+fi
-+
- endmenu
-diff -Nur c3000_pre/linux/lib/Makefile c3000_work/linux/lib/Makefile
---- c3000_pre/linux/lib/Makefile 2004-08-21 09:49:14.000000000 +0900
-+++ c3000_work/linux/lib/Makefile 2004-12-16 23:01:14.000000000 +0900
-@@ -9,10 +9,12 @@
-
- L_TARGET := lib.a
-
--export-objs := cmdline.o dec_and_lock.o rwsem-spinlock.o rwsem.o rbtree.o
-+export-objs := cmdline.o dec_and_lock.o rwsem-spinlock.o rwsem.o \
-+ rbtree.o firmware_class.o
-
- obj-y := errno.o ctype.o string.o vsprintf.o brlock.o cmdline.o bust_spinlocks.o rbtree.o md5.o
-
-+obj-$(CONFIG_FW_LOADER) += firmware_class.o
- obj-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
- obj-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
-
-@@ -23,6 +25,8 @@
- subdir-$(CONFIG_ZLIB_INFLATE) += zlib_inflate
- subdir-$(CONFIG_ZLIB_DEFLATE) += zlib_deflate
-
-+include $(TOPDIR)/drivers/bluetooth/Makefile.lib
-+
- # Include the subdirs, if necessary.
- obj-y += $(join $(subdir-y),$(subdir-y:%=/%.o))
-
-diff -Nur c3000_pre/linux/lib/firmware_class.c c3000_work/linux/lib/firmware_class.c
---- c3000_pre/linux/lib/firmware_class.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/lib/firmware_class.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,573 @@
-+/*
-+ * firmware_class.c - Multi purpose firmware loading support
-+ *
-+ * Copyright (c) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+ *
-+ * Please see Documentation/firmware_class/ for more information.
-+ *
-+ */
-+/*
-+ * Based on kernel/kmod.c and drivers/usb/usb.c
-+ */
-+/*
-+ kernel/kmod.c
-+ Kirk Petersen
-+
-+ Reorganized not to be a daemon by Adam Richter, with guidance
-+ from Greg Zornetzer.
-+
-+ Modified to avoid chroot and file sharing problems.
-+ Mikael Pettersson
-+
-+ Limit the concurrent number of kmod modprobes to catch loops from
-+ "modprobe needs a service that is in a module".
-+ Keith Owens <kaos@ocs.com.au> December 1999
-+
-+ Unblock all signals when we exec a usermode process.
-+ Shuu Yamaguchi <shuu@wondernetworkresources.com> December 2000
-+*/
-+/*
-+ * drivers/usb/usb.c
-+ *
-+ * (C) Copyright Linus Torvalds 1999
-+ * (C) Copyright Johannes Erdfelt 1999-2001
-+ * (C) Copyright Andreas Gal 1999
-+ * (C) Copyright Gregory P. Smith 1999
-+ * (C) Copyright Deti Fliegl 1999 (new USB architecture)
-+ * (C) Copyright Randy Dunlap 2000
-+ * (C) Copyright David Brownell 2000 (kernel hotplug, usb_device_id)
-+ * (C) Copyright Yggdrasil Computing, Inc. 2000
-+ * (usb_device_id matching changes by Adam J. Richter)
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/string.h>
-+#include <linux/types.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/kmod.h>
-+#include <linux/proc_fs.h>
-+#include <linux/vmalloc.h>
-+#include <asm/hardirq.h>
-+
-+#include "linux/firmware.h"
-+
-+MODULE_AUTHOR("Manuel Estrada Sainz <ranty@debian.org>");
-+MODULE_DESCRIPTION("Multi purpose firmware loading support");
-+MODULE_LICENSE("GPL");
-+
-+#define err(format, arg...) \
-+ printk(KERN_ERR "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+
-+static int loading_timeout = 10; /* In seconds */
-+static struct proc_dir_entry *proc_dir_timeout;
-+static struct proc_dir_entry *proc_dir;
-+
-+#ifdef CONFIG_HOTPLUG
-+
-+static int
-+call_helper(char *verb, const char *name, const char *device)
-+{
-+ char *argv[3], **envp, *buf, *scratch;
-+ int i = 0;
-+
-+ int retval = 0;
-+
-+ if (!hotplug_path[0])
-+ return -ENOENT;
-+ if (in_interrupt()) {
-+ err("in_interrupt");
-+ return -EFAULT;
-+ }
-+ if (!current->fs->root) {
-+ warn("call_policy %s -- no FS yet", verb);
-+ return -EPERM;
-+ }
-+
-+ if (!(envp = (char **) kmalloc(20 * sizeof (char *), GFP_KERNEL))) {
-+ err("unable to allocate envp");
-+ return -ENOMEM;
-+ }
-+ if (!(buf = kmalloc(256, GFP_KERNEL))) {
-+ kfree(envp);
-+ err("unable to allocate buf");
-+ return -ENOMEM;
-+ }
-+
-+ /* only one standardized param to hotplug command: type */
-+ argv[0] = hotplug_path;
-+ argv[1] = "firmware";
-+ argv[2] = 0;
-+
-+ /* minimal command environment */
-+ envp[i++] = "HOME=/";
-+ envp[i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
-+
-+#ifdef DEBUG
-+ /* hint that policy agent should enter no-stdout debug mode */
-+ envp[i++] = "DEBUG=kernel";
-+#endif
-+ scratch = buf;
-+
-+ if (device) {
-+ envp[i++] = scratch;
-+ scratch += snprintf(scratch, FIRMWARE_NAME_MAX+25,
-+ "DEVPATH=/driver/firmware/%s", device) + 1;
-+ }
-+
-+ envp[i++] = scratch;
-+ scratch += sprintf(scratch, "ACTION=%s", verb) + 1;
-+
-+ envp[i++] = scratch;
-+ scratch += snprintf(scratch, FIRMWARE_NAME_MAX,
-+ "FIRMWARE=%s", name) + 1;
-+
-+ envp[i++] = 0;
-+
-+#ifdef DEBUG
-+ dbg("firmware: %s %s %s", argv[0], argv[1], verb);
-+#endif
-+
-+ retval = call_usermodehelper(argv[0], argv, envp);
-+ if (retval) {
-+ printk("call_usermodehelper return %d\n", retval);
-+ }
-+
-+ kfree(buf);
-+ kfree(envp);
-+ return retval;
-+}
-+#else
-+
-+static inline int
-+call_helper(char *verb, const char *name, const char *device)
-+{
-+ return -ENOENT;
-+}
-+
-+#endif /* CONFIG_HOTPLUG */
-+
-+struct firmware_priv {
-+ struct completion completion;
-+ struct proc_dir_entry *proc_dir;
-+ struct proc_dir_entry *attr_data;
-+ struct proc_dir_entry *attr_loading;
-+ struct firmware *fw;
-+ int loading;
-+ int abort;
-+ int alloc_size;
-+ struct timer_list timeout;
-+};
-+
-+static int
-+firmware_timeout_show(char *buf, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ return sprintf(buf, "%d\n", loading_timeout);
-+}
-+
-+/**
-+ * firmware_timeout_store:
-+ * Description:
-+ * Sets the number of seconds to wait for the firmware. Once
-+ * this expires an error will be return to the driver and no
-+ * firmware will be provided.
-+ *
-+ * Note: zero means 'wait for ever'
-+ *
-+ **/
-+static int
-+firmware_timeout_store(struct file *file, const char *buf,
-+ unsigned long count, void *data)
-+{
-+ loading_timeout = simple_strtol(buf, NULL, 10);
-+ return count;
-+}
-+
-+static int
-+firmware_loading_show(char *buf, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ return sprintf(buf, "%d\n", fw_priv->loading);
-+}
-+
-+/**
-+ * firmware_loading_store: - loading control file
-+ * Description:
-+ * The relevant values are:
-+ *
-+ * 1: Start a load, discarding any previous partial load.
-+ * 0: Conclude the load and handle the data to the driver code.
-+ * -1: Conclude the load with an error and discard any written data.
-+ **/
-+static int
-+firmware_loading_store(struct file *file, const char *buf,
-+ unsigned long count, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ int prev_loading = fw_priv->loading;
-+
-+ fw_priv->loading = simple_strtol(buf, NULL, 10);
-+
-+ switch (fw_priv->loading) {
-+ case -1:
-+ fw_priv->abort = 1;
-+ wmb();
-+ complete(&fw_priv->completion);
-+ break;
-+ case 1:
-+ kfree(fw_priv->fw->data);
-+ fw_priv->fw->data = NULL;
-+ fw_priv->fw->size = 0;
-+ fw_priv->alloc_size = 0;
-+ break;
-+ case 0:
-+ if (prev_loading == 1)
-+ complete(&fw_priv->completion);
-+ break;
-+ }
-+
-+ return count;
-+}
-+
-+static int
-+firmware_data_read(char *buffer, char **start, off_t offset,
-+ int count, int *eof, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ struct firmware *fw = fw_priv->fw;
-+
-+ if (offset > fw->size)
-+ return 0;
-+ if (offset + count > fw->size)
-+ count = fw->size - offset;
-+
-+ memcpy(buffer, fw->data + offset, count);
-+ *start = (void *) ((long) count);
-+ return count;
-+}
-+static int
-+fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size)
-+{
-+ u8 *new_data;
-+ int new_size;
-+
-+ if (min_size <= fw_priv->alloc_size)
-+ return 0;
-+ if((min_size % PAGE_SIZE) == 0)
-+ new_size = min_size;
-+ else
-+ new_size = (min_size + PAGE_SIZE) & PAGE_MASK;
-+ new_data = vmalloc(new_size);
-+ if (!new_data) {
-+ printk(KERN_ERR "%s: unable to alloc buffer\n", __FUNCTION__);
-+ /* Make sure that we don't keep incomplete data */
-+ fw_priv->abort = 1;
-+ return -ENOMEM;
-+ }
-+ fw_priv->alloc_size = new_size;
-+ if (fw_priv->fw->data) {
-+ memcpy(new_data, fw_priv->fw->data, fw_priv->fw->size);
-+ vfree(fw_priv->fw->data);
-+ }
-+ fw_priv->fw->data = new_data;
-+ BUG_ON(min_size > fw_priv->alloc_size);
-+ return 0;
-+}
-+
-+/**
-+ * firmware_data_write:
-+ *
-+ * Description:
-+ *
-+ * Data written to the 'data' attribute will be later handled to
-+ * the driver as a firmware image.
-+ **/
-+static int
-+firmware_data_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ struct firmware *fw = fw_priv->fw;
-+ int offset = file->f_pos;
-+ int retval;
-+
-+ retval = fw_realloc_buffer(fw_priv, offset + count);
-+ if (retval) {
-+ printk("%s: retval:%d\n", __FUNCTION__, retval);
-+ return retval;
-+ }
-+
-+ memcpy(fw->data + offset, buffer, count);
-+
-+ fw->size = max_t(size_t, offset + count, fw->size);
-+ file->f_pos += count;
-+ return count;
-+}
-+
-+static void
-+firmware_class_timeout(u_long data)
-+{
-+ struct firmware_priv *fw_priv = (struct firmware_priv *) data;
-+ fw_priv->abort = 1;
-+ wmb();
-+ complete(&fw_priv->completion);
-+}
-+static int
-+fw_setup_class_device(struct firmware_priv **fw_priv_p,
-+ const char *fw_name, const char *device)
-+{
-+ int retval;
-+ struct firmware_priv *fw_priv = kmalloc(sizeof (struct firmware_priv),
-+ GFP_KERNEL);
-+ *fw_priv_p = fw_priv;
-+ if (!fw_priv) {
-+ retval = -ENOMEM;
-+ goto out;
-+ }
-+ memset(fw_priv, 0, sizeof (*fw_priv));
-+
-+ init_completion(&fw_priv->completion);
-+
-+ fw_priv->timeout.function = firmware_class_timeout;
-+ fw_priv->timeout.data = (u_long) fw_priv;
-+ init_timer(&fw_priv->timeout);
-+
-+ retval = -EAGAIN;
-+ fw_priv->proc_dir = create_proc_entry(device, 0644 | S_IFDIR, proc_dir);
-+ if (!fw_priv->proc_dir)
-+ goto err_free_fw_priv;
-+
-+ fw_priv->attr_data = create_proc_entry("data", 0644 | S_IFREG,
-+ fw_priv->proc_dir);
-+ if (!fw_priv->attr_data)
-+ goto err_remove_dir;
-+
-+ fw_priv->attr_data->read_proc = firmware_data_read;
-+ fw_priv->attr_data->write_proc = firmware_data_write;
-+ fw_priv->attr_data->data = fw_priv;
-+
-+ fw_priv->attr_loading = create_proc_entry("loading", 0644 | S_IFREG,
-+ fw_priv->proc_dir);
-+ if (!fw_priv->attr_loading)
-+ goto err_remove_data;
-+
-+ fw_priv->attr_loading->read_proc = firmware_loading_show;
-+ fw_priv->attr_loading->write_proc = firmware_loading_store;
-+ fw_priv->attr_loading->data = fw_priv;
-+
-+ retval = 0;
-+ fw_priv->fw = kmalloc(sizeof (struct firmware), GFP_KERNEL);
-+ if (!fw_priv->fw) {
-+ printk(KERN_ERR "%s: kmalloc(struct firmware) failed\n",
-+ __FUNCTION__);
-+ retval = -ENOMEM;
-+ goto err_remove_loading;
-+ }
-+ memset(fw_priv->fw, 0, sizeof (*fw_priv->fw));
-+
-+ goto out;
-+
-+err_remove_loading:
-+ remove_proc_entry("loading", fw_priv->proc_dir);
-+err_remove_data:
-+ remove_proc_entry("data", fw_priv->proc_dir);
-+err_remove_dir:
-+ remove_proc_entry(device, proc_dir);
-+err_free_fw_priv:
-+ kfree(fw_priv);
-+out:
-+ return retval;
-+}
-+static void
-+fw_remove_class_device(struct firmware_priv *fw_priv)
-+{
-+ remove_proc_entry("loading", fw_priv->proc_dir);
-+ remove_proc_entry("data", fw_priv->proc_dir);
-+ remove_proc_entry(fw_priv->proc_dir->name, proc_dir);
-+}
-+
-+/**
-+ * request_firmware: - request firmware to hotplug and wait for it
-+ * Description:
-+ * @firmware will be used to return a firmware image by the name
-+ * of @name for device @device.
-+ *
-+ * Should be called from user context where sleeping is allowed.
-+ *
-+ * @name will be use as $FIRMWARE in the hotplug environment and
-+ * should be distinctive enough not to be confused with any other
-+ * firmware image for this or any other device.
-+ **/
-+int
-+request_firmware(const struct firmware **firmware, const char *name,
-+ const char *device)
-+{
-+ struct firmware_priv *fw_priv;
-+ int retval;
-+
-+ if (!firmware) {
-+ retval = -EINVAL;
-+ goto out;
-+ }
-+ *firmware = NULL;
-+
-+ retval = fw_setup_class_device(&fw_priv, name, device);
-+ if (retval)
-+ goto out;
-+
-+ retval = call_helper("add", name, device);
-+ if (retval)
-+ goto out;
-+ if (loading_timeout) {
-+ fw_priv->timeout.expires = jiffies + loading_timeout * HZ;
-+ add_timer(&fw_priv->timeout);
-+ }
-+
-+ wait_for_completion(&fw_priv->completion);
-+
-+ del_timer(&fw_priv->timeout);
-+ fw_remove_class_device(fw_priv);
-+
-+ if (fw_priv->fw->size && !fw_priv->abort) {
-+ *firmware = fw_priv->fw;
-+ } else {
-+ retval = -ENOENT;
-+ vfree(fw_priv->fw->data);
-+ kfree(fw_priv->fw);
-+ }
-+out:
-+ kfree(fw_priv);
-+ return retval;
-+}
-+
-+void
-+release_firmware(const struct firmware *fw)
-+{
-+ if (fw) {
-+ vfree(fw->data);
-+ kfree(fw);
-+ }
-+}
-+
-+/**
-+ * register_firmware: - provide a firmware image for later usage
-+ *
-+ * Description:
-+ * Make sure that @data will be available by requesting firmware @name.
-+ *
-+ * Note: This will not be possible until some kind of persistence
-+ * is available.
-+ **/
-+void
-+register_firmware(const char *name, const u8 *data, size_t size)
-+{
-+ /* This is meaningless without firmware caching, so until we
-+ * decide if firmware caching is reasonable just leave it as a
-+ * noop */
-+}
-+
-+/* Async support */
-+struct firmware_work {
-+ struct tq_struct work;
-+ struct module *module;
-+ const char *name;
-+ const char *device;
-+ void *context;
-+ void (*cont)(const struct firmware *fw, void *context);
-+};
-+
-+static void
-+request_firmware_work_func(void *arg)
-+{
-+ struct firmware_work *fw_work = arg;
-+ const struct firmware *fw;
-+ if (!arg)
-+ return;
-+ request_firmware(&fw, fw_work->name, fw_work->device);
-+ fw_work->cont(fw, fw_work->context);
-+ release_firmware(fw);
-+ __MOD_DEC_USE_COUNT(fw_work->module);
-+ kfree(fw_work);
-+}
-+
-+/**
-+ * request_firmware_nowait:
-+ *
-+ * Description:
-+ * Asynchronous variant of request_firmware() for contexts where
-+ * it is not possible to sleep.
-+ *
-+ * @cont will be called asynchronously when the firmware request is over.
-+ *
-+ * @context will be passed over to @cont.
-+ *
-+ * @fw may be %NULL if firmware request fails.
-+ *
-+ **/
-+int
-+request_firmware_nowait(
-+ struct module *module,
-+ const char *name, const char *device, void *context,
-+ void (*cont)(const struct firmware *fw, void *context))
-+{
-+ struct firmware_work *fw_work = kmalloc(sizeof (struct firmware_work),
-+ GFP_ATOMIC);
-+ if (!fw_work)
-+ return -ENOMEM;
-+ if (!try_inc_mod_count(module)) {
-+ kfree(fw_work);
-+ return -EFAULT;
-+ }
-+
-+ *fw_work = (struct firmware_work) {
-+ .module = module,
-+ .name = name,
-+ .device = device,
-+ .context = context,
-+ .cont = cont,
-+ };
-+ INIT_TQUEUE(&fw_work->work, request_firmware_work_func, fw_work);
-+
-+ schedule_task(&fw_work->work);
-+ return 0;
-+}
-+
-+static int __init
-+firmware_class_init(void)
-+{
-+ proc_dir = create_proc_entry("driver/firmware", 0755 | S_IFDIR, NULL);
-+ if (!proc_dir)
-+ return -EAGAIN;
-+ proc_dir_timeout = create_proc_entry("timeout",
-+ 0644 | S_IFREG, proc_dir);
-+ if (!proc_dir_timeout) {
-+ remove_proc_entry("driver/firmware", NULL);
-+ return -EAGAIN;
-+ }
-+ proc_dir_timeout->read_proc = firmware_timeout_show;
-+ proc_dir_timeout->write_proc = firmware_timeout_store;
-+ return 0;
-+}
-+static void __exit
-+firmware_class_exit(void)
-+{
-+ remove_proc_entry("timeout", proc_dir);
-+ remove_proc_entry("driver/firmware", NULL);
-+}
-+
-+module_init(firmware_class_init);
-+module_exit(firmware_class_exit);
-+
-+#ifndef CONFIG_FW_LOADER
-+EXPORT_SYMBOL(release_firmware);
-+EXPORT_SYMBOL(request_firmware);
-+EXPORT_SYMBOL(request_firmware_nowait);
-+EXPORT_SYMBOL(register_firmware);
-+#endif
-diff -Nur c3000_pre/linux/net/bluetooth/Config.in c3000_work/linux/net/bluetooth/Config.in
---- c3000_pre/linux/net/bluetooth/Config.in 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/Config.in 2004-12-16 23:01:14.000000000 +0900
-@@ -1,8 +1,9 @@
- #
--# Bluetooth configuration
-+# Bluetooth subsystem configuration
- #
-
- if [ "$CONFIG_NET" != "n" ]; then
-+
- mainmenu_option next_comment
- comment 'Bluetooth support'
- dep_tristate 'Bluetooth subsystem support' CONFIG_BLUEZ $CONFIG_NET
-@@ -10,9 +11,13 @@
- if [ "$CONFIG_BLUEZ" != "n" ]; then
- dep_tristate 'L2CAP protocol support' CONFIG_BLUEZ_L2CAP $CONFIG_BLUEZ
- dep_tristate 'SCO links support' CONFIG_BLUEZ_SCO $CONFIG_BLUEZ
-+ source net/bluetooth/rfcomm/Config.in
- source net/bluetooth/bnep/Config.in
-+ source net/bluetooth/cmtp/Config.in
-+ source net/bluetooth/hidp/Config.in
- source drivers/bluetooth/Config.in
- fi
-+
- endmenu
- fi
-
-diff -Nur c3000_pre/linux/net/bluetooth/Makefile c3000_work/linux/net/bluetooth/Makefile
---- c3000_pre/linux/net/bluetooth/Makefile 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/Makefile 2004-12-16 23:01:14.000000000 +0900
-@@ -1,10 +1,11 @@
- #
--# Makefile for the Bluetooth subsystem
-+# Makefile for the Linux Bluetooth subsystem
- #
-+
- O_TARGET := bluetooth.o
-
- list-multi := bluez.o
--export-objs := syms.o
-+export-objs := syms.o l2cap.o
-
- bluez-objs := af_bluetooth.o hci_core.o hci_conn.o hci_event.o hci_sock.o lib.o syms.o
-
-@@ -12,12 +13,27 @@
- obj-$(CONFIG_BLUEZ_L2CAP) += l2cap.o
- obj-$(CONFIG_BLUEZ_SCO) += sco.o
-
-+subdir-$(CONFIG_BLUEZ_RFCOMM) += rfcomm
- subdir-$(CONFIG_BLUEZ_BNEP) += bnep
-+subdir-$(CONFIG_BLUEZ_CMTP) += cmtp
-+subdir-$(CONFIG_BLUEZ_HIDP) += hidp
-+
-+ifeq ($(CONFIG_BLUEZ_RFCOMM),y)
-+obj-y += rfcomm/rfcomm.o
-+endif
-
- ifeq ($(CONFIG_BLUEZ_BNEP),y)
- obj-y += bnep/bnep.o
- endif
-
-+ifeq ($(CONFIG_BLUEZ_CMTP),y)
-+obj-y += cmtp/cmtp.o
-+endif
-+
-+ifeq ($(CONFIG_BLUEZ_HIDP),y)
-+obj-y += hidp/hidp.o
-+endif
-+
- include $(TOPDIR)/Rules.make
-
- bluez.o: $(bluez-objs)
-diff -Nur c3000_pre/linux/net/bluetooth/af_bluetooth.c c3000_work/linux/net/bluetooth/af_bluetooth.c
---- c3000_pre/linux/net/bluetooth/af_bluetooth.c 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/af_bluetooth.c 2004-12-16 23:01:14.000000000 +0900
-@@ -27,7 +27,7 @@
- *
- * $Id: af_bluetooth.c,v 1.8 2002/07/22 20:32:54 maxk Exp $
- */
--#define VERSION "2.2"
-+#define VERSION "2.4"
-
- #include <linux/config.h>
- #include <linux/module.h>
-@@ -57,7 +57,7 @@
- #endif
-
- /* Bluetooth sockets */
--#define BLUEZ_MAX_PROTO 5
-+#define BLUEZ_MAX_PROTO 7
- static struct net_proto_family *bluez_proto[BLUEZ_MAX_PROTO];
-
- int bluez_sock_register(int proto, struct net_proto_family *ops)
-@@ -221,12 +221,11 @@
- unsigned int bluez_sock_poll(struct file * file, struct socket *sock, poll_table *wait)
- {
- struct sock *sk = sock->sk;
-- unsigned int mask;
-+ unsigned int mask = 0;
-
- BT_DBG("sock %p, sk %p", sock, sk);
-
- poll_wait(file, sk->sleep, wait);
-- mask = 0;
-
- if (sk->err || !skb_queue_empty(&sk->error_queue))
- mask |= POLLERR;
-@@ -242,9 +241,11 @@
- if (sk->state == BT_CLOSED)
- mask |= POLLHUP;
-
-- if (sk->state == BT_CONNECT || sk->state == BT_CONNECT2)
-+ if (sk->state == BT_CONNECT ||
-+ sk->state == BT_CONNECT2 ||
-+ sk->state == BT_CONFIG)
- return mask;
--
-+
- if (sock_writeable(sk))
- mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
- else
-@@ -253,39 +254,35 @@
- return mask;
- }
-
--int bluez_sock_w4_connect(struct sock *sk, int flags)
-+int bluez_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
- {
- DECLARE_WAITQUEUE(wait, current);
-- long timeo = sock_sndtimeo(sk, flags & O_NONBLOCK);
- int err = 0;
-
- BT_DBG("sk %p", sk);
-
- add_wait_queue(sk->sleep, &wait);
-- while (sk->state != BT_CONNECTED) {
-+ while (sk->state != state) {
- set_current_state(TASK_INTERRUPTIBLE);
-+
- if (!timeo) {
- err = -EAGAIN;
- break;
- }
-
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+
- release_sock(sk);
- timeo = schedule_timeout(timeo);
- lock_sock(sk);
-
-- err = 0;
-- if (sk->state == BT_CONNECTED)
-- break;
--
- if (sk->err) {
- err = sock_error(sk);
- break;
- }
--
-- if (signal_pending(current)) {
-- err = sock_intr_errno(timeo);
-- break;
-- }
- }
- set_current_state(TASK_RUNNING);
- remove_wait_queue(sk->sleep, &wait);
-diff -Nur c3000_pre/linux/net/bluetooth/bnep/Config.in c3000_work/linux/net/bluetooth/bnep/Config.in
---- c3000_pre/linux/net/bluetooth/bnep/Config.in 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/bnep/Config.in 2004-12-16 23:01:14.000000000 +0900
-@@ -1,6 +1,11 @@
-+#
-+# Bluetooth BNEP layer configuration
-+#
-
- dep_tristate 'BNEP protocol support' CONFIG_BLUEZ_BNEP $CONFIG_BLUEZ_L2CAP
-+
- if [ "$CONFIG_BLUEZ_BNEP" != "n" ]; then
-- bool ' Multicast filter support' CONFIG_BNEP_MC_FILTER
-- bool ' Protocol filter support' CONFIG_BNEP_PROTO_FILTER
-+ bool ' Multicast filter support' CONFIG_BLUEZ_BNEP_MC_FILTER
-+ bool ' Protocol filter support' CONFIG_BLUEZ_BNEP_PROTO_FILTER
- fi
-+
-diff -Nur c3000_pre/linux/net/bluetooth/bnep/Makefile c3000_work/linux/net/bluetooth/bnep/Makefile
---- c3000_pre/linux/net/bluetooth/bnep/Makefile 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/bnep/Makefile 2004-12-16 23:01:14.000000000 +0900
-@@ -1,5 +1,5 @@
- #
--# Makefile for BNEP protocol
-+# Makefile for the Linux Bluetooth BNEP layer
- #
-
- O_TARGET := bnep.o
-diff -Nur c3000_pre/linux/net/bluetooth/bnep/bnep.h c3000_work/linux/net/bluetooth/bnep/bnep.h
---- c3000_pre/linux/net/bluetooth/bnep/bnep.h 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/bnep/bnep.h 2004-12-16 23:01:14.000000000 +0900
-@@ -112,25 +112,25 @@
- __u8 data[0];
- } __attribute__((packed));
-
--// Ioctl interface
--#define BNEPCONADD 1
--#define BNEPCONDEL 2
--#define BNEPGETCONLIST 3
--#define BNEPGETCONINFO 4
-+/* BNEP ioctl defines */
-+#define BNEPCONNADD _IOW('B', 200, int)
-+#define BNEPCONNDEL _IOW('B', 201, int)
-+#define BNEPGETCONNLIST _IOR('B', 210, int)
-+#define BNEPGETCONNINFO _IOR('B', 211, int)
-
--struct bnep_conadd_req {
-+struct bnep_connadd_req {
- int sock; // Connected socket
- __u32 flags;
- __u16 role;
- char device[16]; // Name of the Ethernet device
- };
-
--struct bnep_condel_req {
-+struct bnep_conndel_req {
- __u32 flags;
- __u8 dst[ETH_ALEN];
- };
-
--struct bnep_coninfo {
-+struct bnep_conninfo {
- __u32 flags;
- __u16 role;
- __u16 state;
-@@ -138,9 +138,9 @@
- char device[16];
- };
-
--struct bnep_conlist_req {
-+struct bnep_connlist_req {
- __u32 cnum;
-- struct bnep_coninfo *ci;
-+ struct bnep_conninfo *ci;
- };
-
- struct bnep_proto_filter {
-@@ -148,10 +148,10 @@
- __u16 end;
- };
-
--int bnep_add_connection(struct bnep_conadd_req *req, struct socket *sock);
--int bnep_del_connection(struct bnep_condel_req *req);
--int bnep_get_conlist(struct bnep_conlist_req *req);
--int bnep_get_coninfo(struct bnep_coninfo *ci);
-+int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock);
-+int bnep_del_connection(struct bnep_conndel_req *req);
-+int bnep_get_connlist(struct bnep_connlist_req *req);
-+int bnep_get_conninfo(struct bnep_conninfo *ci);
-
- // BNEP sessions
- struct bnep_session {
-diff -Nur c3000_pre/linux/net/bluetooth/bnep/core.c c3000_work/linux/net/bluetooth/bnep/core.c
---- c3000_pre/linux/net/bluetooth/bnep/core.c 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/bnep/core.c 2004-12-16 23:01:14.000000000 +0900
-@@ -58,17 +58,17 @@
-
- #include "bnep.h"
-
--#ifndef CONFIG_BNEP_DEBUG
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
- #undef BT_DBG
- #define BT_DBG(D...)
- #endif
-
--#define VERSION "1.0"
-+#define VERSION "1.2"
-
- static LIST_HEAD(bnep_session_list);
- static DECLARE_RWSEM(bnep_session_sem);
-
--static struct bnep_session *__bnep_get_session(__u8 *dst)
-+static struct bnep_session *__bnep_get_session(u8 *dst)
- {
- struct bnep_session *s;
- struct list_head *p;
-@@ -104,7 +104,7 @@
- return sock->ops->sendmsg(sock, &s->msg, len, NULL);
- }
-
--static int bnep_send_rsp(struct bnep_session *s, __u8 ctrl, __u16 resp)
-+static int bnep_send_rsp(struct bnep_session *s, u8 ctrl, u16 resp)
- {
- struct bnep_control_rsp rsp;
- rsp.type = BNEP_CONTROL;
-@@ -113,23 +113,37 @@
- return bnep_send(s, &rsp, sizeof(rsp));
- }
-
--static int bnep_ctrl_set_netfilter(struct bnep_session *s, struct sk_buff *skb)
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+static inline void bnep_set_default_proto_filter(struct bnep_session *s)
-+{
-+ /* (IPv4, ARP) */
-+ s->proto_filter[0].start = htons(0x0800);
-+ s->proto_filter[0].end = htons(0x0806);
-+ /* (RARP, AppleTalk) */
-+ s->proto_filter[1].start = htons(0x8035);
-+ s->proto_filter[1].end = htons(0x80F3);
-+ /* (IPX, IPv6) */
-+ s->proto_filter[2].start = htons(0x8137);
-+ s->proto_filter[2].end = htons(0x86DD);
-+}
-+#endif
-+
-+static int bnep_ctrl_set_netfilter(struct bnep_session *s, u16 *data, int len)
- {
-- __u16 *data;
- int n;
--
-- data = (void *) skb->data;
-- if (!skb_pull(skb, 2))
-+
-+ if (len < 2)
- return -EILSEQ;
-+
- n = ntohs(get_unaligned(data));
-+ data++; len -= 2;
-
-- data = (void *) skb->data;
-- if (!skb_pull(skb, n))
-+ if (len < n)
- return -EILSEQ;
-
- BT_DBG("filter len %d", n);
-
--#ifdef CONFIG_BNEP_PROTO_FILTER
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
- n /= 4;
- if (n <= BNEP_MAX_PROTO_FILTERS) {
- struct bnep_proto_filter *f = s->proto_filter;
-@@ -142,9 +156,13 @@
- BT_DBG("proto filter start %d end %d",
- f[i].start, f[i].end);
- }
-+
- if (i < BNEP_MAX_PROTO_FILTERS)
- memset(f + i, 0, sizeof(*f));
-
-+ if (n == 0)
-+ bnep_set_default_proto_filter(s);
-+
- bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_SUCCESS);
- } else {
- bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_FILTER_LIMIT_REACHED);
-@@ -155,23 +173,22 @@
- return 0;
- }
-
--static int bnep_ctrl_set_mcfilter(struct bnep_session *s, struct sk_buff *skb)
-+static int bnep_ctrl_set_mcfilter(struct bnep_session *s, u8 *data, int len)
- {
-- u8 *data;
- int n;
--
-- data = (void *) skb->data;
-- if (!skb_pull(skb, 2))
-+
-+ if (len < 2)
- return -EILSEQ;
-- n = ntohs(get_unaligned((u16 *) data));
-
-- data = (void *) skb->data;
-- if (!skb_pull(skb, n))
-+ n = ntohs(get_unaligned((u16 *) data));
-+ data += 2; len -= 2;
-+
-+ if (len < n)
- return -EILSEQ;
-
- BT_DBG("filter len %d", n);
-
--#ifdef CONFIG_BNEP_MC_FILTER
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
- n /= (ETH_ALEN * 2);
-
- if (n > 0) {
-@@ -210,12 +227,13 @@
- return 0;
- }
-
--static int bnep_rx_control(struct bnep_session *s, struct sk_buff *skb)
-+static int bnep_rx_control(struct bnep_session *s, void *data, int len)
- {
-+ u8 cmd = *(u8 *)data;
- int err = 0;
-- __u8 cmd = *(__u8 *) skb->data;
-- skb_pull(skb, 1);
--
-+
-+ data++; len--;
-+
- switch (cmd) {
- case BNEP_CMD_NOT_UNDERSTOOD:
- case BNEP_SETUP_CONN_REQ:
-@@ -226,15 +244,15 @@
- break;
-
- case BNEP_FILTER_NET_TYPE_SET:
-- err = bnep_ctrl_set_netfilter(s, skb);
-+ err = bnep_ctrl_set_netfilter(s, data, len);
- break;
-
- case BNEP_FILTER_MULTI_ADDR_SET:
-- err = bnep_ctrl_set_mcfilter(s, skb);
-+ err = bnep_ctrl_set_mcfilter(s, data, len);
- break;
-
- default: {
-- __u8 pkt[3];
-+ u8 pkt[3];
- pkt[0] = BNEP_CONTROL;
- pkt[1] = BNEP_CMD_NOT_UNDERSTOOD;
- pkt[2] = cmd;
-@@ -262,21 +280,24 @@
-
- switch (h->type & BNEP_TYPE_MASK) {
- case BNEP_EXT_CONTROL:
-- err = bnep_rx_control(s, skb);
-+ bnep_rx_control(s, skb->data, skb->len);
- break;
-
- default:
-- /* Unknown extension */
-- if (!skb_pull(skb, h->len))
-- err = -EILSEQ;
-+ /* Unknown extension, skip it. */
-+ break;
-+ }
-+
-+ if (!skb_pull(skb, h->len)) {
-+ err = -EILSEQ;
- break;
- }
- } while (!err && (h->type & BNEP_EXT_HEADER));
--
-+
- return err;
- }
-
--static __u8 __bnep_rx_hlen[] = {
-+static u8 __bnep_rx_hlen[] = {
- ETH_HLEN, /* BNEP_GENERAL */
- 0, /* BNEP_CONTROL */
- 2, /* BNEP_COMPRESSED */
-@@ -289,18 +310,18 @@
- {
- struct net_device *dev = &s->dev;
- struct sk_buff *nskb;
-- __u8 type;
-+ u8 type;
-
- dev->last_rx = jiffies;
- s->stats.rx_bytes += skb->len;
-
-- type = *(__u8 *) skb->data; skb_pull(skb, 1);
-+ type = *(u8 *) skb->data; skb_pull(skb, 1);
-
- if ((type & BNEP_TYPE_MASK) > BNEP_RX_TYPES)
- goto badframe;
--
-+
- if ((type & BNEP_TYPE_MASK) == BNEP_CONTROL) {
-- bnep_rx_control(s, skb);
-+ bnep_rx_control(s, skb->data, skb->len);
- kfree_skb(skb);
- return 0;
- }
-@@ -311,7 +332,7 @@
- if (!skb_pull(skb, __bnep_rx_hlen[type & BNEP_TYPE_MASK]))
- goto badframe;
-
-- s->eh.h_proto = get_unaligned((__u16 *) (skb->data - 2));
-+ s->eh.h_proto = get_unaligned((u16 *) (skb->data - 2));
-
- if (type & BNEP_EXT_HEADER) {
- if (bnep_rx_extension(s, skb) < 0)
-@@ -322,9 +343,9 @@
- if (ntohs(s->eh.h_proto) == 0x8100) {
- if (!skb_pull(skb, 4))
- goto badframe;
-- s->eh.h_proto = get_unaligned((__u16 *) (skb->data - 2));
-+ s->eh.h_proto = get_unaligned((u16 *) (skb->data - 2));
- }
--
-+
- /* We have to alloc new skb and copy data here :(. Because original skb
- * may not be modified and because of the alignment requirements. */
- nskb = alloc_skb(2 + ETH_HLEN + skb->len, GFP_KERNEL);
-@@ -340,11 +361,11 @@
- case BNEP_COMPRESSED:
- memcpy(__skb_put(nskb, ETH_HLEN), &s->eh, ETH_HLEN);
- break;
--
-+
- case BNEP_COMPRESSED_SRC_ONLY:
- memcpy(__skb_put(nskb, ETH_ALEN), s->eh.h_dest, ETH_ALEN);
- memcpy(__skb_put(nskb, ETH_ALEN), skb->mac.raw, ETH_ALEN);
-- put_unaligned(s->eh.h_proto, (__u16 *) __skb_put(nskb, 2));
-+ put_unaligned(s->eh.h_proto, (u16 *) __skb_put(nskb, 2));
- break;
-
- case BNEP_COMPRESSED_DST_ONLY:
-@@ -354,13 +375,13 @@
-
- case BNEP_GENERAL:
- memcpy(__skb_put(nskb, ETH_ALEN * 2), skb->mac.raw, ETH_ALEN * 2);
-- put_unaligned(s->eh.h_proto, (__u16 *) __skb_put(nskb, 2));
-+ put_unaligned(s->eh.h_proto, (u16 *) __skb_put(nskb, 2));
- break;
- }
-
- memcpy(__skb_put(nskb, skb->len), skb->data, skb->len);
- kfree_skb(skb);
--
-+
- s->stats.rx_packets++;
- nskb->dev = dev;
- nskb->ip_summed = CHECKSUM_UNNECESSARY;
-@@ -374,7 +395,7 @@
- return 0;
- }
-
--static __u8 __bnep_tx_types[] = {
-+static u8 __bnep_tx_types[] = {
- BNEP_GENERAL,
- BNEP_COMPRESSED_SRC_ONLY,
- BNEP_COMPRESSED_DST_ONLY,
-@@ -387,7 +408,7 @@
- struct socket *sock = s->sock;
- struct iovec iv[3];
- int len = 0, il = 0;
-- __u8 type = 0;
-+ u8 type = 0;
-
- BT_DBG("skb %p dev %p type %d", skb, skb->dev, skb->pkt_type);
-
-@@ -424,9 +445,9 @@
- send:
- iv[il++] = (struct iovec) { skb->data, skb->len };
- len += skb->len;
--
-+
- /* FIXME: linearize skb */
--
-+
- s->msg.msg_iov = iv;
- s->msg.msg_iovlen = il;
- len = sock->ops->sendmsg(sock, &s->msg, len, NULL);
-@@ -451,16 +472,16 @@
-
- BT_DBG("");
-
-- daemonize(); reparent_to_init();
-+ daemonize(); reparent_to_init();
-
-- sprintf(current->comm, "kbnepd %s", dev->name);
--
-- sigfillset(&current->blocked);
-+ sprintf(current->comm, "kbnepd %s", dev->name);
-+
-+ sigfillset(&current->blocked);
- flush_signals(current);
-
- current->nice = -15;
-
-- set_fs(KERNEL_DS);
-+ set_fs(KERNEL_DS);
-
- init_waitqueue_entry(&wait, current);
- add_wait_queue(sk->sleep, &wait);
-@@ -475,13 +496,13 @@
-
- if (sk->state != BT_CONNECTED)
- break;
--
-+
- // TX
- while ((skb = skb_dequeue(&sk->write_queue)))
- if (bnep_tx_frame(s, skb))
- break;
- netif_wake_queue(dev);
--
-+
- schedule();
- }
- set_current_state(TASK_RUNNING);
-@@ -503,11 +524,11 @@
- return 0;
- }
-
--int bnep_add_connection(struct bnep_conadd_req *req, struct socket *sock)
-+int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock)
- {
- struct net_device *dev;
- struct bnep_session *s, *ss;
-- __u8 dst[ETH_ALEN], src[ETH_ALEN];
-+ u8 dst[ETH_ALEN], src[ETH_ALEN];
- int err;
-
- BT_DBG("");
-@@ -535,6 +556,8 @@
- else
- strcpy(dev->name, "bnep%d");
-
-+ memset(dev->broadcast, 0xff, ETH_ALEN);
-+
- /* This is rx header therefor addresses are swaped.
- * ie eh.h_dest is our local address. */
- memcpy(s->eh.h_dest, &src, ETH_ALEN);
-@@ -543,28 +566,19 @@
- s->sock = sock;
- s->role = req->role;
- s->state = BT_CONNECTED;
--
-+
- s->msg.msg_flags = MSG_NOSIGNAL;
-
--#ifdef CONFIG_BNEP_MC_FILTER
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
- /* Set default mc filter */
- set_bit(bnep_mc_hash(dev->broadcast), &s->mc_filter);
- #endif
--
--#ifdef CONFIG_BNEP_PROTO_FILTER
-- /* Set default protocol filter */
-
-- /* (IPv4, ARP) */
-- s->proto_filter[0].start = htons(0x0800);
-- s->proto_filter[0].end = htons(0x0806);
-- /* (RARP, AppleTalk) */
-- s->proto_filter[1].start = htons(0x8035);
-- s->proto_filter[1].end = htons(0x80F3);
-- /* (IPX, IPv6) */
-- s->proto_filter[2].start = htons(0x8137);
-- s->proto_filter[2].end = htons(0x86DD);
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ /* Set default protocol filter */
-+ bnep_set_default_proto_filter(s);
- #endif
--
-+
- dev->init = bnep_net_init;
- dev->priv = s;
- err = register_netdev(dev);
-@@ -573,7 +587,7 @@
- }
-
- __bnep_link_session(s);
--
-+
- err = kernel_thread(bnep_session, s, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
- if (err < 0) {
- /* Session thread start failed, gotta cleanup. */
-@@ -592,7 +606,7 @@
- return err;
- }
-
--int bnep_del_connection(struct bnep_condel_req *req)
-+int bnep_del_connection(struct bnep_conndel_req *req)
- {
- struct bnep_session *s;
- int err = 0;
-@@ -617,7 +631,7 @@
- return err;
- }
-
--static void __bnep_copy_ci(struct bnep_coninfo *ci, struct bnep_session *s)
-+static void __bnep_copy_ci(struct bnep_conninfo *ci, struct bnep_session *s)
- {
- memcpy(ci->dst, s->eh.h_source, ETH_ALEN);
- strcpy(ci->device, s->dev.name);
-@@ -626,7 +640,7 @@
- ci->role = s->role;
- }
-
--int bnep_get_conlist(struct bnep_conlist_req *req)
-+int bnep_get_connlist(struct bnep_connlist_req *req)
- {
- struct list_head *p;
- int err = 0, n = 0;
-@@ -635,7 +649,7 @@
-
- list_for_each(p, &bnep_session_list) {
- struct bnep_session *s;
-- struct bnep_coninfo ci;
-+ struct bnep_conninfo ci;
-
- s = list_entry(p, struct bnep_session, list);
-
-@@ -657,7 +671,7 @@
- return err;
- }
-
--int bnep_get_coninfo(struct bnep_coninfo *ci)
-+int bnep_get_conninfo(struct bnep_conninfo *ci)
- {
- struct bnep_session *s;
- int err = 0;
-@@ -676,17 +690,16 @@
-
- static int __init bnep_init_module(void)
- {
-- BT_INFO("BNEP: BNEP2 ver %s\n"
-- "BNEP: Copyright (C) 2002 Inventel\n"
-- "BNEP: Written 2001,2002 by\n"
-- "BNEP: \tClement Moreau <clement.moreau@inventel.fr> "
-- "David Libault <david.libault@inventel.fr>\n"
-- "BNEP: Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>",
-- VERSION);
-+ l2cap_load();
-
-+ bnep_crc32_init();
- bnep_sock_init();
-
-- bnep_crc32_init();
-+ BT_INFO("BlueZ BNEP ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2001,2002 Inventel Systemes");
-+ BT_INFO("Written 2001,2002 by Clement Moreau <clement.moreau@inventel.fr>");
-+ BT_INFO("Written 2001,2002 by David Libault <david.libault@inventel.fr>");
-+ BT_INFO("Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>");
-
- return 0;
- }
-@@ -694,13 +707,12 @@
- static void __exit bnep_cleanup_module(void)
- {
- bnep_sock_cleanup();
--
- bnep_crc32_cleanup();
- }
-
- module_init(bnep_init_module);
- module_exit(bnep_cleanup_module);
-
--MODULE_DESCRIPTION("BNEP2 ver " VERSION);
--MODULE_AUTHOR("David Libault <david.libault@inventel.fr> Maxim Krasnyanskiy <maxk@qualcomm.com>");
-+MODULE_DESCRIPTION("BlueZ BNEP ver " VERSION);
-+MODULE_AUTHOR("David Libault <david.libault@inventel.fr>, Maxim Krasnyanskiy <maxk@qualcomm.com>");
- MODULE_LICENSE("GPL");
-diff -Nur c3000_pre/linux/net/bluetooth/bnep/netdev.c c3000_work/linux/net/bluetooth/bnep/netdev.c
---- c3000_pre/linux/net/bluetooth/bnep/netdev.c 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/bnep/netdev.c 2004-12-16 23:01:14.000000000 +0900
-@@ -46,7 +46,7 @@
-
- #include "bnep.h"
-
--#ifndef CONFIG_BNEP_DEBUG
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
- #undef BT_DBG
- #define BT_DBG( A... )
- #endif
-@@ -73,7 +73,7 @@
-
- static void bnep_net_set_mc_list(struct net_device *dev)
- {
--#ifdef CONFIG_BNEP_MC_FILTER
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
- struct bnep_session *s = dev->priv;
- struct sock *sk = s->sock->sk;
- struct bnep_set_filter_req *r;
-@@ -143,27 +143,31 @@
- return -EINVAL;
- }
-
--#ifdef CONFIG_BNEP_MC_FILTER
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
- static inline int bnep_net_mc_filter(struct sk_buff *skb, struct bnep_session *s)
- {
- struct ethhdr *eh = (void *) skb->data;
-
-- if ((eh->h_dest[0] & 1) && !test_bit(bnep_mc_hash(eh->h_dest), &s->mc_filter))
-+ if ((eh->h_dest[0] & 1) && !test_bit(bnep_mc_hash(eh->h_dest), &s->mc_filter)) {
-+ BT_DBG("BNEP: filtered skb %p, dst %.2x:%.2x:%.2x:%.2x:%.2x:%.2x", skb,
-+ eh->h_dest[0], eh->h_dest[1], eh->h_dest[2],
-+ eh->h_dest[3], eh->h_dest[4], eh->h_dest[5]);
- return 1;
-+ }
- return 0;
- }
- #endif
-
--#ifdef CONFIG_BNEP_PROTO_FILTER
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
- /* Determine ether protocol. Based on eth_type_trans. */
--static inline __u16 bnep_net_eth_proto(struct sk_buff *skb)
-+static inline u16 bnep_net_eth_proto(struct sk_buff *skb)
- {
- struct ethhdr *eh = (void *) skb->data;
-
- if (ntohs(eh->h_proto) >= 1536)
- return eh->h_proto;
-
-- if (get_unaligned((__u16 *) skb->data) == 0xFFFF)
-+ if (get_unaligned((u16 *) skb->data) == 0xFFFF)
- return htons(ETH_P_802_3);
-
- return htons(ETH_P_802_2);
-@@ -171,7 +175,7 @@
-
- static inline int bnep_net_proto_filter(struct sk_buff *skb, struct bnep_session *s)
- {
-- __u16 proto = bnep_net_eth_proto(skb);
-+ u16 proto = bnep_net_eth_proto(skb);
- struct bnep_proto_filter *f = s->proto_filter;
- int i;
-
-@@ -192,14 +196,14 @@
-
- BT_DBG("skb %p, dev %p", skb, dev);
-
--#ifdef CONFIG_BNEP_MC_FILTER
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
- if (bnep_net_mc_filter(skb, s)) {
- kfree_skb(skb);
- return 0;
- }
- #endif
-
--#ifdef CONFIG_BNEP_PROTO_FILTER
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
- if (bnep_net_proto_filter(skb, s)) {
- kfree_skb(skb);
- return 0;
-diff -Nur c3000_pre/linux/net/bluetooth/bnep/sock.c c3000_work/linux/net/bluetooth/bnep/sock.c
---- c3000_pre/linux/net/bluetooth/bnep/sock.c 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/bnep/sock.c 2004-12-16 23:01:14.000000000 +0900
-@@ -50,41 +50,11 @@
-
- #include "bnep.h"
-
--#ifndef CONFIG_BNEP_DEBUG
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
- #undef BT_DBG
- #define BT_DBG( A... )
- #endif
-
--static inline struct socket *socki_lookup(struct inode *inode)
--{
-- return &inode->u.socket_i;
--}
--
--static struct socket *sockfd_lookup(int fd, int *err)
--{
-- struct file *file;
-- struct inode *inode;
-- struct socket *sock;
--
-- if (!(file = fget(fd))) {
-- *err = -EBADF;
-- return NULL;
-- }
--
-- inode = file->f_dentry->d_inode;
-- if (!inode->i_sock || !(sock = socki_lookup(inode))) {
-- *err = -ENOTSOCK;
-- fput(file);
-- return NULL;
-- }
--
-- if (sock->file != file) {
-- printk(KERN_ERR "socki_lookup: socket file changed!\n");
-- sock->file = file;
-- }
-- return sock;
--}
--
- static int bnep_sock_release(struct socket *sock)
- {
- struct sock *sk = sock->sk;
-@@ -103,17 +73,17 @@
-
- static int bnep_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
- {
-- struct bnep_conlist_req cl;
-- struct bnep_conadd_req ca;
-- struct bnep_condel_req cd;
-- struct bnep_coninfo ci;
-+ struct bnep_connlist_req cl;
-+ struct bnep_connadd_req ca;
-+ struct bnep_conndel_req cd;
-+ struct bnep_conninfo ci;
- struct socket *nsock;
- int err;
-
- BT_DBG("cmd %x arg %lx", cmd, arg);
-
- switch (cmd) {
-- case BNEPCONADD:
-+ case BNEPCONNADD:
- if (!capable(CAP_NET_ADMIN))
- return -EACCES;
-
-@@ -124,8 +94,10 @@
- if (!nsock)
- return err;
-
-- if (nsock->sk->state != BT_CONNECTED)
-+ if (nsock->sk->state != BT_CONNECTED) {
-+ fput(nsock->file);
- return -EBADFD;
-+ }
-
- err = bnep_add_connection(&ca, nsock);
- if (!err) {
-@@ -136,7 +108,7 @@
-
- return err;
-
-- case BNEPCONDEL:
-+ case BNEPCONNDEL:
- if (!capable(CAP_NET_ADMIN))
- return -EACCES;
-
-@@ -145,24 +117,24 @@
-
- return bnep_del_connection(&cd);
-
-- case BNEPGETCONLIST:
-+ case BNEPGETCONNLIST:
- if (copy_from_user(&cl, (void *) arg, sizeof(cl)))
- return -EFAULT;
-
- if (cl.cnum <= 0)
- return -EINVAL;
-
-- err = bnep_get_conlist(&cl);
-+ err = bnep_get_connlist(&cl);
- if (!err && copy_to_user((void *) arg, &cl, sizeof(cl)))
- return -EFAULT;
-
- return err;
-
-- case BNEPGETCONINFO:
-+ case BNEPGETCONNINFO:
- if (copy_from_user(&ci, (void *) arg, sizeof(ci)))
- return -EFAULT;
-
-- err = bnep_get_coninfo(&ci);
-+ err = bnep_get_conninfo(&ci);
- if (!err && copy_to_user((void *) arg, &ci, sizeof(ci)))
- return -EFAULT;
-
-diff -Nur c3000_pre/linux/net/bluetooth/cmtp/Config.in c3000_work/linux/net/bluetooth/cmtp/Config.in
---- c3000_pre/linux/net/bluetooth/cmtp/Config.in 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/cmtp/Config.in 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,7 @@
-+#
-+# Bluetooth CMTP layer configuration
-+#
-+
-+if [ "$CONFIG_ISDN" = "y" -o "$CONFIG_ISDN" = "m" ]; then
-+ dep_tristate 'CMTP protocol support' CONFIG_BLUEZ_CMTP $CONFIG_ISDN_CAPI $CONFIG_BLUEZ_L2CAP
-+fi
-diff -Nur c3000_pre/linux/net/bluetooth/cmtp/Makefile c3000_work/linux/net/bluetooth/cmtp/Makefile
---- c3000_pre/linux/net/bluetooth/cmtp/Makefile 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/cmtp/Makefile 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,10 @@
-+#
-+# Makefile for the Linux Bluetooth CMTP layer
-+#
-+
-+O_TARGET := cmtp.o
-+
-+obj-y := core.o sock.o capi.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -Nur c3000_pre/linux/net/bluetooth/cmtp/capi.c c3000_work/linux/net/bluetooth/cmtp/capi.c
---- c3000_pre/linux/net/bluetooth/cmtp/capi.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/cmtp/capi.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,707 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <net/sock.h>
-+
-+#include <linux/capi.h>
-+
-+#include "../drivers/isdn/avmb1/capilli.h"
-+#include "../drivers/isdn/avmb1/capicmd.h"
-+#include "../drivers/isdn/avmb1/capiutil.h"
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define REVISION "1.0"
-+
-+#define CAPI_INTEROPERABILITY 0x20
-+
-+#define CAPI_INTEROPERABILITY_REQ CAPICMD(CAPI_INTEROPERABILITY, CAPI_REQ)
-+#define CAPI_INTEROPERABILITY_CONF CAPICMD(CAPI_INTEROPERABILITY, CAPI_CONF)
-+#define CAPI_INTEROPERABILITY_IND CAPICMD(CAPI_INTEROPERABILITY, CAPI_IND)
-+#define CAPI_INTEROPERABILITY_RESP CAPICMD(CAPI_INTEROPERABILITY, CAPI_RESP)
-+
-+#define CAPI_INTEROPERABILITY_REQ_LEN (CAPI_MSG_BASELEN + 2)
-+#define CAPI_INTEROPERABILITY_CONF_LEN (CAPI_MSG_BASELEN + 4)
-+#define CAPI_INTEROPERABILITY_IND_LEN (CAPI_MSG_BASELEN + 2)
-+#define CAPI_INTEROPERABILITY_RESP_LEN (CAPI_MSG_BASELEN + 2)
-+
-+#define CAPI_FUNCTION_REGISTER 0
-+#define CAPI_FUNCTION_RELEASE 1
-+#define CAPI_FUNCTION_GET_PROFILE 2
-+#define CAPI_FUNCTION_GET_MANUFACTURER 3
-+#define CAPI_FUNCTION_GET_VERSION 4
-+#define CAPI_FUNCTION_GET_SERIAL_NUMBER 5
-+#define CAPI_FUNCTION_MANUFACTURER 6
-+#define CAPI_FUNCTION_LOOPBACK 7
-+
-+static struct capi_driver_interface *di;
-+
-+
-+#define CMTP_MSGNUM 1
-+#define CMTP_APPLID 2
-+#define CMTP_MAPPING 3
-+
-+static struct cmtp_application *cmtp_application_add(struct cmtp_session *session, __u16 appl)
-+{
-+ struct cmtp_application *app = kmalloc(sizeof(*app), GFP_KERNEL);
-+
-+ BT_DBG("session %p application %p appl %d", session, app, appl);
-+
-+ if (!app)
-+ return NULL;
-+
-+ memset(app, 0, sizeof(*app));
-+
-+ app->state = BT_OPEN;
-+ app->appl = appl;
-+
-+ list_add_tail(&app->list, &session->applications);
-+
-+ return app;
-+}
-+
-+static void cmtp_application_del(struct cmtp_session *session, struct cmtp_application *app)
-+{
-+ BT_DBG("session %p application %p", session, app);
-+
-+ if (app) {
-+ list_del(&app->list);
-+ kfree(app);
-+ }
-+}
-+
-+static struct cmtp_application *cmtp_application_get(struct cmtp_session *session, int pattern, __u16 value)
-+{
-+ struct cmtp_application *app;
-+ struct list_head *p, *n;
-+
-+ list_for_each_safe(p, n, &session->applications) {
-+ app = list_entry(p, struct cmtp_application, list);
-+ switch (pattern) {
-+ case CMTP_MSGNUM:
-+ if (app->msgnum == value)
-+ return app;
-+ break;
-+ case CMTP_APPLID:
-+ if (app->appl == value)
-+ return app;
-+ break;
-+ case CMTP_MAPPING:
-+ if (app->mapping == value)
-+ return app;
-+ break;
-+ }
-+ }
-+
-+ return NULL;
-+}
-+
-+static int cmtp_msgnum_get(struct cmtp_session *session)
-+{
-+ session->msgnum++;
-+
-+ if ((session->msgnum & 0xff) > 200)
-+ session->msgnum = CMTP_INITIAL_MSGNUM + 1;
-+
-+ return session->msgnum;
-+}
-+
-+
-+static void cmtp_send_interopmsg(struct cmtp_session *session,
-+ __u8 subcmd, __u16 appl, __u16 msgnum,
-+ __u16 function, unsigned char *buf, int len)
-+{
-+ struct sk_buff *skb;
-+ unsigned char *s;
-+
-+ BT_DBG("session %p subcmd 0x%02x appl %d msgnum %d", session, subcmd, appl, msgnum);
-+
-+ if (!(skb = alloc_skb(CAPI_MSG_BASELEN + 6 + len, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for interoperability packet");
-+ return;
-+ }
-+
-+ s = skb_put(skb, CAPI_MSG_BASELEN + 6 + len);
-+
-+ capimsg_setu16(s, 0, CAPI_MSG_BASELEN + 6 + len);
-+ capimsg_setu16(s, 2, appl);
-+ capimsg_setu8 (s, 4, CAPI_INTEROPERABILITY);
-+ capimsg_setu8 (s, 5, subcmd);
-+ capimsg_setu16(s, 6, msgnum);
-+
-+ /* Interoperability selector (Bluetooth Device Management) */
-+ capimsg_setu16(s, 8, 0x0001);
-+
-+ capimsg_setu8 (s, 10, 3 + len);
-+ capimsg_setu16(s, 11, function);
-+ capimsg_setu8 (s, 13, len);
-+
-+ if (len > 0)
-+ memcpy(s + 14, buf, len);
-+
-+ cmtp_send_capimsg(session, skb);
-+}
-+
-+static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+ struct cmtp_application *application;
-+ __u16 appl, msgnum, func, info;
-+ __u32 controller;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ switch (CAPIMSG_SUBCOMMAND(skb->data)) {
-+ case CAPI_CONF:
-+ func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 5);
-+ info = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 8);
-+
-+ switch (func) {
-+ case CAPI_FUNCTION_REGISTER:
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MSGNUM, msgnum);
-+ if (application) {
-+ application->state = BT_CONNECTED;
-+ application->msgnum = 0;
-+ application->mapping = CAPIMSG_APPID(skb->data);
-+ wake_up_interruptible(&session->wait);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_RELEASE:
-+ appl = CAPIMSG_APPID(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MAPPING, appl);
-+ if (application) {
-+ application->state = BT_CLOSED;
-+ application->msgnum = 0;
-+ wake_up_interruptible(&session->wait);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_PROFILE:
-+ controller = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 11);
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+
-+ if (!info && (msgnum == CMTP_INITIAL_MSGNUM)) {
-+ session->ncontroller = controller;
-+ wake_up_interruptible(&session->wait);
-+ break;
-+ }
-+
-+ if (!info && ctrl) {
-+ memcpy(&ctrl->profile,
-+ skb->data + CAPI_MSG_BASELEN + 11,
-+ sizeof(capi_profile));
-+ session->state = BT_CONNECTED;
-+ ctrl->ready(ctrl);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_MANUFACTURER:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 10);
-+
-+ if (!info && ctrl) {
-+ strncpy(ctrl->manu,
-+ skb->data + CAPI_MSG_BASELEN + 15,
-+ skb->data[CAPI_MSG_BASELEN + 14]);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_VERSION:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12);
-+
-+ if (!info && ctrl) {
-+ ctrl->version.majorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 16);
-+ ctrl->version.minorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 20);
-+ ctrl->version.majormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 24);
-+ ctrl->version.minormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 28);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_SERIAL_NUMBER:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12);
-+
-+ if (!info && ctrl) {
-+ memset(ctrl->serial, 0, CAPI_SERIAL_LEN);
-+ strncpy(ctrl->serial,
-+ skb->data + CAPI_MSG_BASELEN + 17,
-+ skb->data[CAPI_MSG_BASELEN + 16]);
-+ }
-+
-+ break;
-+ }
-+
-+ break;
-+
-+ case CAPI_IND:
-+ func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 3);
-+
-+ if (func == CAPI_FUNCTION_LOOPBACK) {
-+ appl = CAPIMSG_APPID(skb->data);
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+ cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func,
-+ skb->data + CAPI_MSG_BASELEN + 6,
-+ skb->data[CAPI_MSG_BASELEN + 5]);
-+ }
-+
-+ break;
-+ }
-+
-+ kfree_skb(skb);
-+}
-+
-+void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+ struct cmtp_application *application;
-+ __u16 cmd, appl, info;
-+ __u32 ncci, contr;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ if (CAPIMSG_COMMAND(skb->data) == CAPI_INTEROPERABILITY) {
-+ cmtp_recv_interopmsg(session, skb);
-+ return;
-+ }
-+
-+ if (session->flags & (1 << CMTP_LOOPBACK)) {
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ cmd = CAPICMD(CAPIMSG_COMMAND(skb->data), CAPIMSG_SUBCOMMAND(skb->data));
-+ appl = CAPIMSG_APPID(skb->data);
-+ contr = CAPIMSG_CONTROL(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MAPPING, appl);
-+ if (application) {
-+ appl = application->appl;
-+ CAPIMSG_SETAPPID(skb->data, appl);
-+ } else {
-+ BT_ERR("Can't find application with id %d", appl);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ if ((contr & 0x7f) == 0x01) {
-+ contr = (contr & 0xffffff80) | session->num;
-+ CAPIMSG_SETCONTROL(skb->data, contr);
-+ }
-+
-+ if (!ctrl) {
-+ BT_ERR("Can't find controller %d for message", session->num);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ switch (cmd) {
-+ case CAPI_CONNECT_B3_CONF:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+ info = CAPIMSG_U16(skb->data, 12);
-+
-+ BT_DBG("CONNECT_B3_CONF ncci 0x%02x info 0x%02x", ncci, info);
-+
-+ if (info == 0)
-+ ctrl->new_ncci(ctrl, appl, ncci, 8);
-+
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+
-+ case CAPI_CONNECT_B3_IND:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+
-+ BT_DBG("CONNECT_B3_IND ncci 0x%02x", ncci);
-+
-+ ctrl->new_ncci(ctrl, appl, ncci, 8);
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+
-+ case CAPI_DISCONNECT_B3_IND:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+
-+ BT_DBG("DISCONNECT_B3_IND ncci 0x%02x", ncci);
-+
-+ if (ncci == 0xffffffff)
-+ BT_ERR("DISCONNECT_B3_IND with ncci 0xffffffff");
-+
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ ctrl->free_ncci(ctrl, appl, ncci);
-+ break;
-+
-+ default:
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+ }
-+}
-+
-+void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct cmtp_scb *scb = (void *) skb->cb;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ scb->id = -1;
-+ scb->data = (CAPIMSG_COMMAND(skb->data) == CAPI_DATA_B3);
-+
-+ skb_queue_tail(&session->transmit, skb);
-+
-+ cmtp_schedule(session);
-+}
-+
-+
-+static int cmtp_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
-+{
-+ BT_DBG("ctrl %p data %p", ctrl, data);
-+
-+ return -EIO;
-+}
-+
-+static void cmtp_reset_ctr(struct capi_ctr *ctrl)
-+{
-+ BT_DBG("ctrl %p", ctrl);
-+
-+ ctrl->reseted(ctrl);
-+}
-+
-+static void cmtp_remove_ctr(struct capi_ctr *ctrl)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+
-+ BT_DBG("ctrl %p", ctrl);
-+
-+ ctrl->suspend_output(ctrl);
-+
-+ atomic_inc(&session->terminate);
-+ cmtp_schedule(session);
-+}
-+
-+static void cmtp_register_appl(struct capi_ctr *ctrl, __u16 appl, capi_register_params *rp)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+ unsigned char buf[8];
-+ int err = 0, nconn, want = rp->level3cnt;
-+
-+ BT_DBG("ctrl %p appl %d level3cnt %d datablkcnt %d datablklen %d",
-+ ctrl, appl, rp->level3cnt, rp->datablkcnt, rp->datablklen);
-+
-+ application = cmtp_application_add(session, appl);
-+ if (!application) {
-+ BT_ERR("Can't allocate memory for new application");
-+ ctrl->appl_released(ctrl, appl);
-+ return;
-+ }
-+
-+ if (want < 0)
-+ nconn = ctrl->profile.nbchannel * -want;
-+ else
-+ nconn = want;
-+
-+ if (nconn == 0)
-+ nconn = ctrl->profile.nbchannel;
-+
-+ capimsg_setu16(buf, 0, nconn);
-+ capimsg_setu16(buf, 2, rp->datablkcnt);
-+ capimsg_setu16(buf, 4, rp->datablklen);
-+
-+ application->state = BT_CONFIG;
-+ application->msgnum = cmtp_msgnum_get(session);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0x0000, application->msgnum,
-+ CAPI_FUNCTION_REGISTER, buf, 6);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (1) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ if (application->state == BT_CLOSED) {
-+ err = -application->err;
-+ break;
-+ }
-+
-+ if (application->state == BT_CONNECTED)
-+ break;
-+
-+ if (signal_pending(current)) {
-+ err = -EINTR;
-+ break;
-+ }
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ if (err) {
-+ ctrl->appl_released(ctrl, appl);
-+ cmtp_application_del(session, application);
-+ return;
-+ }
-+
-+ ctrl->appl_registered(ctrl, appl);
-+}
-+
-+static void cmtp_release_appl(struct capi_ctr *ctrl, __u16 appl)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+
-+ BT_DBG("ctrl %p appl %d", ctrl, appl);
-+
-+ application = cmtp_application_get(session, CMTP_APPLID, appl);
-+ if (!application) {
-+ BT_ERR("Can't find application");
-+ return;
-+ }
-+
-+ application->msgnum = cmtp_msgnum_get(session);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, application->mapping, application->msgnum,
-+ CAPI_FUNCTION_RELEASE, NULL, 0);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (timeo) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (application->state == BT_CLOSED)
-+ break;
-+
-+ if (signal_pending(current))
-+ break;
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ cmtp_application_del(session, application);
-+ ctrl->appl_released(ctrl, appl);
-+}
-+
-+static void cmtp_send_message(struct capi_ctr *ctrl, struct sk_buff *skb)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ __u16 appl;
-+ __u32 contr;
-+
-+ BT_DBG("ctrl %p skb %p", ctrl, skb);
-+
-+ appl = CAPIMSG_APPID(skb->data);
-+ contr = CAPIMSG_CONTROL(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_APPLID, appl);
-+ if ((!application) || (application->state != BT_CONNECTED)) {
-+ BT_ERR("Can't find application with id %d", appl);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ CAPIMSG_SETAPPID(skb->data, application->mapping);
-+
-+ if ((contr & 0x7f) == session->num) {
-+ contr = (contr & 0xffffff80) | 0x01;
-+ CAPIMSG_SETCONTROL(skb->data, contr);
-+ }
-+
-+ cmtp_send_capimsg(session, skb);
-+}
-+
-+static char *cmtp_procinfo(struct capi_ctr *ctrl)
-+{
-+ return "CAPI Message Transport Protocol";
-+}
-+
-+static int cmtp_ctr_read_proc(char *page, char **start, off_t off, int count, int *eof, struct capi_ctr *ctrl)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *app;
-+ struct list_head *p, *n;
-+ int len = 0;
-+
-+ len += sprintf(page + len, "%s (Revision %s)\n\n", cmtp_procinfo(ctrl), REVISION);
-+ len += sprintf(page + len, "addr %s\n", session->name);
-+ len += sprintf(page + len, "ctrl %d\n", session->num);
-+
-+ list_for_each_safe(p, n, &session->applications) {
-+ app = list_entry(p, struct cmtp_application, list);
-+ len += sprintf(page + len, "appl %d -> %d\n", app->appl, app->mapping);
-+ }
-+
-+ if (off + count >= len)
-+ *eof = 1;
-+
-+ if (len < off)
-+ return 0;
-+
-+ *start = page + off;
-+
-+ return ((count < len - off) ? count : len - off);
-+}
-+
-+static struct capi_driver cmtp_driver = {
-+ name: "cmtp",
-+ revision: REVISION,
-+ load_firmware: cmtp_load_firmware,
-+ reset_ctr: cmtp_reset_ctr,
-+ remove_ctr: cmtp_remove_ctr,
-+ register_appl: cmtp_register_appl,
-+ release_appl: cmtp_release_appl,
-+ send_message: cmtp_send_message,
-+ procinfo: cmtp_procinfo,
-+ ctr_read_proc: cmtp_ctr_read_proc,
-+
-+ driver_read_proc: 0,
-+ add_card: 0,
-+};
-+
-+
-+int cmtp_attach_device(struct cmtp_session *session)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+ unsigned char buf[4];
-+
-+ BT_DBG("session %p", session);
-+
-+ capimsg_setu32(buf, 0, 0);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, CMTP_INITIAL_MSGNUM,
-+ CAPI_FUNCTION_GET_PROFILE, buf, 4);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (timeo) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (session->ncontroller)
-+ break;
-+
-+ if (signal_pending(current))
-+ break;
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ BT_INFO("Found %d CAPI controller(s) on device %s", session->ncontroller, session->name);
-+
-+ if (!timeo)
-+ return -ETIMEDOUT;
-+
-+ if (!session->ncontroller)
-+ return -ENODEV;
-+
-+
-+ if (session->ncontroller > 1)
-+ BT_INFO("Setting up only CAPI controller 1");
-+
-+ if (!(session->ctrl = di->attach_ctr(&cmtp_driver, session->name, session))) {
-+ BT_ERR("Can't attach new controller");
-+ return -EBUSY;
-+ }
-+
-+ session->num = session->ctrl->cnr;
-+
-+ BT_DBG("session %p ctrl %p num %d", session, session->ctrl, session->num);
-+
-+ capimsg_setu32(buf, 0, 1);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_MANUFACTURER, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_VERSION, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_SERIAL_NUMBER, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_PROFILE, buf, 4);
-+
-+ return 0;
-+}
-+
-+void cmtp_detach_device(struct cmtp_session *session)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+
-+ BT_DBG("session %p ctrl %p", session, ctrl);
-+
-+ if (!ctrl)
-+ return;
-+
-+ ctrl->reseted(ctrl);
-+
-+ di->detach_ctr(ctrl);
-+}
-+
-+int cmtp_init_capi(void)
-+{
-+ if (!(di = attach_capi_driver(&cmtp_driver))) {
-+ BT_ERR("Can't attach CAPI driver");
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+void cmtp_cleanup_capi(void)
-+{
-+ detach_capi_driver(&cmtp_driver);
-+}
-diff -Nur c3000_pre/linux/net/bluetooth/cmtp/cmtp.h c3000_work/linux/net/bluetooth/cmtp/cmtp.h
---- c3000_pre/linux/net/bluetooth/cmtp/cmtp.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/cmtp/cmtp.h 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,138 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#ifndef __CMTP_H
-+#define __CMTP_H
-+
-+#include <linux/types.h>
-+#include <net/bluetooth/bluetooth.h>
-+
-+#define BTNAMSIZ 18
-+
-+/* CMTP ioctl defines */
-+#define CMTPCONNADD _IOW('C', 200, int)
-+#define CMTPCONNDEL _IOW('C', 201, int)
-+#define CMTPGETCONNLIST _IOR('C', 210, int)
-+#define CMTPGETCONNINFO _IOR('C', 211, int)
-+
-+#define CMTP_LOOPBACK 0
-+
-+struct cmtp_connadd_req {
-+ int sock; // Connected socket
-+ __u32 flags;
-+};
-+
-+struct cmtp_conndel_req {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+};
-+
-+struct cmtp_conninfo {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+ __u16 state;
-+ int num;
-+};
-+
-+struct cmtp_connlist_req {
-+ __u32 cnum;
-+ struct cmtp_conninfo *ci;
-+};
-+
-+int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock);
-+int cmtp_del_connection(struct cmtp_conndel_req *req);
-+int cmtp_get_connlist(struct cmtp_connlist_req *req);
-+int cmtp_get_conninfo(struct cmtp_conninfo *ci);
-+
-+/* CMTP session defines */
-+#define CMTP_INTEROP_TIMEOUT (HZ * 5)
-+#define CMTP_INITIAL_MSGNUM 0xff00
-+
-+struct cmtp_session {
-+ struct list_head list;
-+
-+ struct socket *sock;
-+
-+ bdaddr_t bdaddr;
-+
-+ unsigned long state;
-+ unsigned long flags;
-+
-+ uint mtu;
-+
-+ char name[BTNAMSIZ];
-+
-+ atomic_t terminate;
-+
-+ wait_queue_head_t wait;
-+
-+ int ncontroller;
-+ int num;
-+ struct capi_ctr *ctrl;
-+
-+ struct list_head applications;
-+
-+ unsigned long blockids;
-+ int msgnum;
-+
-+ struct sk_buff_head transmit;
-+
-+ struct sk_buff *reassembly[16];
-+};
-+
-+struct cmtp_application {
-+ struct list_head list;
-+
-+ unsigned long state;
-+ int err;
-+
-+ __u16 appl;
-+ __u16 mapping;
-+
-+ __u16 msgnum;
-+};
-+
-+struct cmtp_scb {
-+ int id;
-+ int data;
-+};
-+
-+int cmtp_attach_device(struct cmtp_session *session);
-+void cmtp_detach_device(struct cmtp_session *session);
-+
-+void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb);
-+void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb);
-+
-+static inline void cmtp_schedule(struct cmtp_session *session)
-+{
-+ struct sock *sk = session->sock->sk;
-+
-+ wake_up_interruptible(sk->sleep);
-+}
-+
-+/* CMTP init defines */
-+int cmtp_init_capi(void);
-+int cmtp_init_sockets(void);
-+void cmtp_cleanup_capi(void);
-+void cmtp_cleanup_sockets(void);
-+
-+#endif /* __CMTP_H */
-diff -Nur c3000_pre/linux/net/bluetooth/cmtp/core.c c3000_work/linux/net/bluetooth/cmtp/core.c
---- c3000_pre/linux/net/bluetooth/cmtp/core.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/cmtp/core.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,515 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <linux/init.h>
-+#include <net/sock.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.0"
-+
-+static DECLARE_RWSEM(cmtp_session_sem);
-+static LIST_HEAD(cmtp_session_list);
-+
-+static struct cmtp_session *__cmtp_get_session(bdaddr_t *bdaddr)
-+{
-+ struct cmtp_session *session;
-+ struct list_head *p;
-+
-+ BT_DBG("");
-+
-+ list_for_each(p, &cmtp_session_list) {
-+ session = list_entry(p, struct cmtp_session, list);
-+ if (!bacmp(bdaddr, &session->bdaddr))
-+ return session;
-+ }
-+ return NULL;
-+}
-+
-+static void __cmtp_link_session(struct cmtp_session *session)
-+{
-+ MOD_INC_USE_COUNT;
-+ list_add(&session->list, &cmtp_session_list);
-+}
-+
-+static void __cmtp_unlink_session(struct cmtp_session *session)
-+{
-+ list_del(&session->list);
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci)
-+{
-+ bacpy(&ci->bdaddr, &session->bdaddr);
-+
-+ ci->flags = session->flags;
-+ ci->state = session->state;
-+
-+ ci->num = session->num;
-+}
-+
-+
-+static inline int cmtp_alloc_block_id(struct cmtp_session *session)
-+{
-+ int i, id = -1;
-+
-+ for (i = 0; i < 16; i++)
-+ if (!test_and_set_bit(i, &session->blockids)) {
-+ id = i;
-+ break;
-+ }
-+
-+ return id;
-+}
-+
-+static inline void cmtp_free_block_id(struct cmtp_session *session, int id)
-+{
-+ clear_bit(id, &session->blockids);
-+}
-+
-+static inline void cmtp_add_msgpart(struct cmtp_session *session, int id, const unsigned char *buf, int count)
-+{
-+ struct sk_buff *skb = session->reassembly[id], *nskb;
-+ int size;
-+
-+ BT_DBG("session %p buf %p count %d", session, buf, count);
-+
-+ size = (skb) ? skb->len + count : count;
-+
-+ if (!(nskb = alloc_skb(size, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for CAPI message");
-+ return;
-+ }
-+
-+ if (skb && (skb->len > 0))
-+ memcpy(skb_put(nskb, skb->len), skb->data, skb->len);
-+
-+ memcpy(skb_put(nskb, count), buf, count);
-+
-+ session->reassembly[id] = nskb;
-+
-+ if (skb)
-+ kfree_skb(skb);
-+}
-+
-+static inline int cmtp_recv_frame(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ __u8 hdr, hdrlen, id;
-+ __u16 len;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ while (skb->len > 0) {
-+ hdr = skb->data[0];
-+
-+ switch (hdr & 0xc0) {
-+ case 0x40:
-+ hdrlen = 2;
-+ len = skb->data[1];
-+ break;
-+ case 0x80:
-+ hdrlen = 3;
-+ len = skb->data[1] | (skb->data[2] << 8);
-+ break;
-+ default:
-+ hdrlen = 1;
-+ len = 0;
-+ break;
-+ }
-+
-+ id = (hdr & 0x3c) >> 2;
-+
-+ BT_DBG("hdr 0x%02x hdrlen %d len %d id %d", hdr, hdrlen, len, id);
-+
-+ if (hdrlen + len > skb->len) {
-+ BT_ERR("Wrong size or header information in CMTP frame");
-+ break;
-+ }
-+
-+ if (len == 0) {
-+ skb_pull(skb, hdrlen);
-+ continue;
-+ }
-+
-+ switch (hdr & 0x03) {
-+ case 0x00:
-+ cmtp_add_msgpart(session, id, skb->data + hdrlen, len);
-+ cmtp_recv_capimsg(session, session->reassembly[id]);
-+ session->reassembly[id] = NULL;
-+ break;
-+ case 0x01:
-+ cmtp_add_msgpart(session, id, skb->data + hdrlen, len);
-+ break;
-+ default:
-+ if (session->reassembly[id] != NULL)
-+ kfree_skb(session->reassembly[id]);
-+ session->reassembly[id] = NULL;
-+ break;
-+ }
-+
-+ skb_pull(skb, hdrlen + len);
-+ }
-+
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static int cmtp_send_frame(struct cmtp_session *session, unsigned char *data, int len)
-+{
-+ struct socket *sock = session->sock;
-+ struct iovec iv = { data, len };
-+ struct msghdr msg;
-+ int err;
-+
-+ BT_DBG("session %p data %p len %d", session, data, len);
-+
-+ if (!len)
-+ return 0;
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 1;
-+ msg.msg_iov = &iv;
-+
-+ err = sock->ops->sendmsg(sock, &msg, len, 0);
-+ return err;
-+}
-+
-+static int cmtp_process_transmit(struct cmtp_session *session)
-+{
-+ struct sk_buff *skb, *nskb;
-+ unsigned char *hdr;
-+ unsigned int size, tail;
-+
-+ BT_DBG("session %p", session);
-+
-+ if (!(nskb = alloc_skb(session->mtu, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for new frame");
-+ return -ENOMEM;
-+ }
-+
-+ while ((skb = skb_dequeue(&session->transmit))) {
-+ struct cmtp_scb *scb = (void *) skb->cb;
-+
-+ if ((tail = (session->mtu - nskb->len)) < 5) {
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+ skb_trim(nskb, 0);
-+ tail = session->mtu;
-+ }
-+
-+ size = min_t(uint, ((tail < 258) ? (tail - 2) : (tail - 3)), skb->len);
-+
-+ if ((scb->id < 0) && ((scb->id = cmtp_alloc_block_id(session)) < 0)) {
-+ skb_queue_head(&session->transmit, skb);
-+ break;
-+ }
-+
-+ if (size < 256) {
-+ hdr = skb_put(nskb, 2);
-+ hdr[0] = 0x40
-+ | ((scb->id << 2) & 0x3c)
-+ | ((skb->len == size) ? 0x00 : 0x01);
-+ hdr[1] = size;
-+ } else {
-+ hdr = skb_put(nskb, 3);
-+ hdr[0] = 0x80
-+ | ((scb->id << 2) & 0x3c)
-+ | ((skb->len == size) ? 0x00 : 0x01);
-+ hdr[1] = size & 0xff;
-+ hdr[2] = size >> 8;
-+ }
-+
-+ memcpy(skb_put(nskb, size), skb->data, size);
-+ skb_pull(skb, size);
-+
-+ if (skb->len > 0) {
-+ skb_queue_head(&session->transmit, skb);
-+ } else {
-+ cmtp_free_block_id(session, scb->id);
-+ if (scb->data) {
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+ skb_trim(nskb, 0);
-+ }
-+ kfree_skb(skb);
-+ }
-+ }
-+
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+
-+ kfree_skb(nskb);
-+
-+ return skb_queue_len(&session->transmit);
-+}
-+
-+static int cmtp_session(void *arg)
-+{
-+ struct cmtp_session *session = arg;
-+ struct sock *sk = session->sock->sk;
-+ struct sk_buff *skb;
-+ wait_queue_t wait;
-+
-+ BT_DBG("session %p", session);
-+
-+ daemonize(); reparent_to_init();
-+
-+ sprintf(current->comm, "kcmtpd_ctr_%d", session->num);
-+
-+ sigfillset(&current->blocked);
-+ flush_signals(current);
-+
-+ current->nice = -15;
-+
-+ set_fs(KERNEL_DS);
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(sk->sleep, &wait);
-+ while (!atomic_read(&session->terminate)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (sk->state != BT_CONNECTED)
-+ break;
-+
-+ while ((skb = skb_dequeue(&sk->receive_queue))) {
-+ skb_orphan(skb);
-+ cmtp_recv_frame(session, skb);
-+ }
-+
-+ cmtp_process_transmit(session);
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ down_write(&cmtp_session_sem);
-+
-+ if (!(session->flags & (1 << CMTP_LOOPBACK)))
-+ cmtp_detach_device(session);
-+
-+ fput(session->sock->file);
-+
-+ __cmtp_unlink_session(session);
-+
-+ up_write(&cmtp_session_sem);
-+
-+ kfree(session);
-+ return 0;
-+}
-+
-+int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
-+{
-+ struct cmtp_session *session, *s;
-+ bdaddr_t src, dst;
-+ int i, err;
-+
-+ BT_DBG("");
-+
-+ baswap(&src, &bluez_pi(sock->sk)->src);
-+ baswap(&dst, &bluez_pi(sock->sk)->dst);
-+
-+ session = kmalloc(sizeof(struct cmtp_session), GFP_KERNEL);
-+ if (!session)
-+ return -ENOMEM;
-+ memset(session, 0, sizeof(struct cmtp_session));
-+
-+ down_write(&cmtp_session_sem);
-+
-+ s = __cmtp_get_session(&bluez_pi(sock->sk)->dst);
-+ if (s && s->state == BT_CONNECTED) {
-+ err = -EEXIST;
-+ goto failed;
-+ }
-+
-+ bacpy(&session->bdaddr, &bluez_pi(sock->sk)->dst);
-+
-+ session->mtu = min_t(uint, l2cap_pi(sock->sk)->omtu, l2cap_pi(sock->sk)->imtu);
-+
-+ BT_DBG("mtu %d", session->mtu);
-+
-+ sprintf(session->name, "%s", batostr(&dst));
-+
-+ session->sock = sock;
-+ session->state = BT_CONFIG;
-+
-+ init_waitqueue_head(&session->wait);
-+
-+ session->ctrl = NULL;
-+ session->msgnum = CMTP_INITIAL_MSGNUM;
-+
-+ INIT_LIST_HEAD(&session->applications);
-+
-+ skb_queue_head_init(&session->transmit);
-+
-+ for (i = 0; i < 16; i++)
-+ session->reassembly[i] = NULL;
-+
-+ session->flags = req->flags;
-+
-+ __cmtp_link_session(session);
-+
-+ err = kernel_thread(cmtp_session, session, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+ if (err < 0)
-+ goto unlink;
-+
-+ if (!(session->flags & (1 << CMTP_LOOPBACK))) {
-+ err = cmtp_attach_device(session);
-+ if (err < 0)
-+ goto detach;
-+ }
-+
-+ up_write(&cmtp_session_sem);
-+ return 0;
-+
-+detach:
-+ cmtp_detach_device(session);
-+
-+unlink:
-+ __cmtp_unlink_session(session);
-+
-+failed:
-+ up_write(&cmtp_session_sem);
-+ kfree(session);
-+ return err;
-+}
-+
-+int cmtp_del_connection(struct cmtp_conndel_req *req)
-+{
-+ struct cmtp_session *session;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&cmtp_session_sem);
-+
-+ session = __cmtp_get_session(&req->bdaddr);
-+ if (session) {
-+ /* Flush the transmit queue */
-+ skb_queue_purge(&session->transmit);
-+
-+ /* Kill session thread */
-+ atomic_inc(&session->terminate);
-+ cmtp_schedule(session);
-+ } else
-+ err = -ENOENT;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+int cmtp_get_connlist(struct cmtp_connlist_req *req)
-+{
-+ struct list_head *p;
-+ int err = 0, n = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&cmtp_session_sem);
-+
-+ list_for_each(p, &cmtp_session_list) {
-+ struct cmtp_session *session;
-+ struct cmtp_conninfo ci;
-+
-+ session = list_entry(p, struct cmtp_session, list);
-+
-+ __cmtp_copy_session(session, &ci);
-+
-+ if (copy_to_user(req->ci, &ci, sizeof(ci))) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (++n >= req->cnum)
-+ break;
-+
-+ req->ci++;
-+ }
-+ req->cnum = n;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+int cmtp_get_conninfo(struct cmtp_conninfo *ci)
-+{
-+ struct cmtp_session *session;
-+ int err = 0;
-+
-+ down_read(&cmtp_session_sem);
-+
-+ session = __cmtp_get_session(&ci->bdaddr);
-+ if (session)
-+ __cmtp_copy_session(session, ci);
-+ else
-+ err = -ENOENT;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+
-+int __init init_cmtp(void)
-+{
-+ l2cap_load();
-+
-+ cmtp_init_capi();
-+ cmtp_init_sockets();
-+
-+ BT_INFO("BlueZ CMTP ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>");
-+
-+ return 0;
-+}
-+
-+void __exit exit_cmtp(void)
-+{
-+ cmtp_cleanup_sockets();
-+ cmtp_cleanup_capi();
-+}
-+
-+module_init(init_cmtp);
-+module_exit(exit_cmtp);
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ CMTP ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -Nur c3000_pre/linux/net/bluetooth/cmtp/sock.c c3000_work/linux/net/bluetooth/cmtp/sock.c
---- c3000_pre/linux/net/bluetooth/cmtp/sock.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/cmtp/sock.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,208 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+static int cmtp_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sock_orphan(sk);
-+ sock_put(sk);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int cmtp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct cmtp_connadd_req ca;
-+ struct cmtp_conndel_req cd;
-+ struct cmtp_connlist_req cl;
-+ struct cmtp_conninfo ci;
-+ struct socket *nsock;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
-+ case CMTPCONNADD:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&ca, (void *) arg, sizeof(ca)))
-+ return -EFAULT;
-+
-+ nsock = sockfd_lookup(ca.sock, &err);
-+ if (!nsock)
-+ return err;
-+
-+ if (nsock->sk->state != BT_CONNECTED) {
-+ fput(nsock->file);
-+ return -EBADFD;
-+ }
-+
-+ err = cmtp_add_connection(&ca, nsock);
-+ if (!err) {
-+ if (copy_to_user((void *) arg, &ca, sizeof(ca)))
-+ err = -EFAULT;
-+ } else
-+ fput(nsock->file);
-+
-+ return err;
-+
-+ case CMTPCONNDEL:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&cd, (void *) arg, sizeof(cd)))
-+ return -EFAULT;
-+
-+ return cmtp_del_connection(&cd);
-+
-+ case CMTPGETCONNLIST:
-+ if (copy_from_user(&cl, (void *) arg, sizeof(cl)))
-+ return -EFAULT;
-+
-+ if (cl.cnum <= 0)
-+ return -EINVAL;
-+
-+ err = cmtp_get_connlist(&cl);
-+ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ case CMTPGETCONNINFO:
-+ if (copy_from_user(&ci, (void *) arg, sizeof(ci)))
-+ return -EFAULT;
-+
-+ err = cmtp_get_conninfo(&ci);
-+ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci)))
-+ return -EFAULT;
-+
-+ return err;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static struct proto_ops cmtp_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: cmtp_sock_release,
-+ ioctl: cmtp_sock_ioctl,
-+ bind: sock_no_bind,
-+ getname: sock_no_getname,
-+ sendmsg: sock_no_sendmsg,
-+ recvmsg: sock_no_recvmsg,
-+ poll: sock_no_poll,
-+ listen: sock_no_listen,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sock_no_setsockopt,
-+ getsockopt: sock_no_getsockopt,
-+ connect: sock_no_connect,
-+ socketpair: sock_no_socketpair,
-+ accept: sock_no_accept,
-+ mmap: sock_no_mmap
-+};
-+
-+static int cmtp_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ if (sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &cmtp_sock_ops;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1)))
-+ return -ENOMEM;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ sock->state = SS_UNCONNECTED;
-+ sock_init_data(sock, sk);
-+
-+ sk->destruct = NULL;
-+ sk->protocol = protocol;
-+
-+ return 0;
-+}
-+
-+static struct net_proto_family cmtp_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: cmtp_sock_create
-+};
-+
-+int cmtp_init_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_CMTP, &cmtp_sock_family_ops))) {
-+ BT_ERR("Can't register CMTP socket layer (%d)", err);
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+void cmtp_cleanup_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_unregister(BTPROTO_CMTP)))
-+ BT_ERR("Can't unregister CMTP socket layer (%d)", err);
-+
-+ return;
-+}
-diff -Nur c3000_pre/linux/net/bluetooth/hci_conn.c c3000_work/linux/net/bluetooth/hci_conn.c
---- c3000_pre/linux/net/bluetooth/hci_conn.c 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/hci_conn.c 2004-12-16 23:01:14.000000000 +0900
-@@ -71,6 +71,7 @@
-
- memset(&cp, 0, sizeof(cp));
- bacpy(&cp.bdaddr, &conn->dst);
-+ cp.pscan_rep_mode = 0x02;
-
- if ((ie = inquiry_cache_lookup(hdev, &conn->dst)) &&
- inquiry_entry_age(ie) <= INQUIRY_ENTRY_AGE_MAX) {
-@@ -357,21 +358,24 @@
- struct hci_conn_info *ci;
- struct hci_dev *hdev;
- struct list_head *p;
-- int n = 0, size;
-+ int n = 0, size, err;
-
- if (copy_from_user(&req, (void *) arg, sizeof(req)))
- return -EFAULT;
-
-- if (!(hdev = hci_dev_get(req.dev_id)))
-- return -ENODEV;
--
-- size = req.conn_num * sizeof(struct hci_conn_info) + sizeof(req);
-+ if (!req.conn_num || req.conn_num > (PAGE_SIZE * 2) / sizeof(*ci))
-+ return -EINVAL;
-
-- if (verify_area(VERIFY_WRITE, (void *)arg, size))
-- return -EFAULT;
-+ size = sizeof(req) + req.conn_num * sizeof(*ci);
-
- if (!(cl = (void *) kmalloc(size, GFP_KERNEL)))
- return -ENOMEM;
-+
-+ if (!(hdev = hci_dev_get(req.dev_id))) {
-+ kfree(cl);
-+ return -ENODEV;
-+ }
-+
- ci = cl->conn_info;
-
- hci_dev_lock_bh(hdev);
-@@ -385,20 +389,21 @@
- (ci + n)->out = c->out;
- (ci + n)->state = c->state;
- (ci + n)->link_mode = c->link_mode;
-- n++;
-+ if (++n >= req.conn_num)
-+ break;
- }
- hci_dev_unlock_bh(hdev);
-
- cl->dev_id = hdev->id;
- cl->conn_num = n;
-- size = n * sizeof(struct hci_conn_info) + sizeof(req);
-+ size = sizeof(req) + n * sizeof(*ci);
-
- hci_dev_put(hdev);
-
-- copy_to_user((void *) arg, cl, size);
-+ err = copy_to_user((void *) arg, cl, size);
- kfree(cl);
-
-- return 0;
-+ return err ? -EFAULT : 0;
- }
-
- int hci_get_conn_info(struct hci_dev *hdev, unsigned long arg)
-@@ -411,9 +416,6 @@
- if (copy_from_user(&req, (void *) arg, sizeof(req)))
- return -EFAULT;
-
-- if (verify_area(VERIFY_WRITE, ptr, sizeof(ci)))
-- return -EFAULT;
--
- hci_dev_lock_bh(hdev);
- conn = conn_hash_lookup_ba(hdev, req.type, &req.bdaddr);
- if (conn) {
-@@ -429,6 +431,5 @@
- if (!conn)
- return -ENOENT;
-
-- copy_to_user(ptr, &ci, sizeof(ci));
-- return 0;
-+ return copy_to_user(ptr, &ci, sizeof(ci)) ? -EFAULT : 0;
- }
-diff -Nur c3000_pre/linux/net/bluetooth/hci_core.c c3000_work/linux/net/bluetooth/hci_core.c
---- c3000_pre/linux/net/bluetooth/hci_core.c 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/hci_core.c 2004-12-16 23:01:14.000000000 +0900
-@@ -218,6 +218,10 @@
-
- /* Mandatory initialization */
-
-+ /* Reset */
-+ if (test_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks))
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_RESET, 0, NULL);
-+
- /* Read Local Supported Features */
- hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_LOCAL_FEATURES, 0, NULL);
-
-@@ -395,7 +399,7 @@
- {
- struct hci_inquiry_req ir;
- struct hci_dev *hdev;
-- int err = 0, do_inquiry = 0;
-+ int err = 0, do_inquiry = 0, max_rsp;
- long timeo;
- __u8 *buf, *ptr;
-
-@@ -408,6 +412,7 @@
-
- hci_dev_lock_bh(hdev);
- if (inquiry_cache_age(hdev) > INQUIRY_CACHE_AGE_MAX ||
-+ inquiry_cache_empty(hdev) ||
- ir.flags & IREQ_CACHE_FLUSH) {
- inquiry_cache_flush(hdev);
- do_inquiry = 1;
-@@ -418,16 +423,19 @@
- if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0)
- goto done;
-
-+ /* for unlimited number of responses we will use buffer with 255 entries */
-+ max_rsp = (ir.num_rsp == 0) ? 255 : ir.num_rsp;
-+
- /* cache_dump can't sleep. Therefore we allocate temp buffer and then
- * copy it to the user space.
- */
-- if (!(buf = kmalloc(sizeof(inquiry_info) * ir.num_rsp, GFP_KERNEL))) {
-+ if (!(buf = kmalloc(sizeof(inquiry_info) * max_rsp, GFP_KERNEL))) {
- err = -ENOMEM;
- goto done;
- }
-
- hci_dev_lock_bh(hdev);
-- ir.num_rsp = inquiry_cache_dump(hdev, ir.num_rsp, buf);
-+ ir.num_rsp = inquiry_cache_dump(hdev, max_rsp, buf);
- hci_dev_unlock_bh(hdev);
-
- BT_DBG("num_rsp %d", ir.num_rsp);
-@@ -708,22 +716,20 @@
- struct hci_dev_list_req *dl;
- struct hci_dev_req *dr;
- struct list_head *p;
-- int n = 0, size;
-+ int n = 0, size, err;
- __u16 dev_num;
-
- if (get_user(dev_num, (__u16 *) arg))
- return -EFAULT;
-
-- if (!dev_num)
-+ if (!dev_num || dev_num > (PAGE_SIZE * 2) / sizeof(*dr))
- return -EINVAL;
--
-- size = dev_num * sizeof(struct hci_dev_req) + sizeof(__u16);
-
-- if (verify_area(VERIFY_WRITE, (void *) arg, size))
-- return -EFAULT;
-+ size = sizeof(*dl) + dev_num * sizeof(*dr);
-
- if (!(dl = kmalloc(size, GFP_KERNEL)))
- return -ENOMEM;
-+
- dr = dl->dev_req;
-
- read_lock_bh(&hdev_list_lock);
-@@ -738,12 +744,12 @@
- read_unlock_bh(&hdev_list_lock);
-
- dl->dev_num = n;
-- size = n * sizeof(struct hci_dev_req) + sizeof(__u16);
-+ size = sizeof(*dl) + n * sizeof(*dr);
-
-- copy_to_user((void *) arg, dl, size);
-+ err = copy_to_user((void *) arg, dl, size);
- kfree(dl);
-
-- return 0;
-+ return err ? -EFAULT : 0;
- }
-
- int hci_get_dev_info(unsigned long arg)
-@@ -864,6 +870,22 @@
- return 0;
- }
-
-+/* Suspend HCI device */
-+int hci_suspend_dev(struct hci_dev *hdev)
-+{
-+ hci_notify(hdev, HCI_DEV_SUSPEND);
-+ hci_run_hotplug(hdev->name, "suspend");
-+ return 0;
-+}
-+
-+/* Resume HCI device */
-+int hci_resume_dev(struct hci_dev *hdev)
-+{
-+ hci_notify(hdev, HCI_DEV_RESUME);
-+ hci_run_hotplug(hdev->name, "resume");
-+ return 0;
-+}
-+
- /* Receive frame from HCI drivers */
- int hci_recv_frame(struct sk_buff *skb)
- {
-@@ -959,40 +981,6 @@
- return hdev->send(skb);
- }
-
--/* Send raw HCI frame */
--int hci_send_raw(struct sk_buff *skb)
--{
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
--
-- if (!hdev) {
-- kfree_skb(skb);
-- return -ENODEV;
-- }
--
-- BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
--
-- if (!test_bit(HCI_RAW, &hdev->flags)) {
-- /* Queue frame according it's type */
-- switch (skb->pkt_type) {
-- case HCI_COMMAND_PKT:
-- skb_queue_tail(&hdev->cmd_q, skb);
-- hci_sched_cmd(hdev);
-- return 0;
--
-- case HCI_ACLDATA_PKT:
-- case HCI_SCODATA_PKT:
-- /* FIXME:
-- * Check header here and queue to apropriate connection.
-- */
-- break;
-- }
-- }
--
-- skb_queue_tail(&hdev->raw_q, skb);
-- hci_sched_tx(hdev);
-- return 0;
--}
--
- /* Send HCI command */
- int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void *param)
- {
-diff -Nur c3000_pre/linux/net/bluetooth/hci_event.c c3000_work/linux/net/bluetooth/hci_event.c
---- c3000_pre/linux/net/bluetooth/hci_event.c 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/hci_event.c 2004-12-16 23:01:14.000000000 +0900
-@@ -62,9 +62,22 @@
- /* Command Complete OGF LINK_CTL */
- static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
- {
-+ __u8 status;
-+
- BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-
- switch (ocf) {
-+ case OCF_INQUIRY_CANCEL:
-+ status = *((__u8 *) skb->data);
-+
-+ if (status) {
-+ BT_DBG("%s Inquiry cancel error: status 0x%x", hdev->name, status);
-+ } else {
-+ clear_bit(HCI_INQUIRY, &hdev->flags);
-+ hci_req_complete(hdev, status);
-+ }
-+ break;
-+
- default:
- BT_DBG("%s Command complete: ogf LINK_CTL ocf %x", hdev->name, ocf);
- break;
-@@ -307,7 +320,7 @@
- status, batostr(&cc->bdaddr), conn);
-
- if (status) {
-- if (conn) {
-+ if (conn && conn->state == BT_CONNECT) {
- conn->state = BT_CLOSED;
- hci_proto_connect_cfm(conn, status);
- hci_conn_del(conn);
-@@ -439,6 +452,29 @@
- hci_dev_unlock(hdev);
- }
-
-+/* Inquiry Result With RSSI */
-+static inline void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ inquiry_info_with_rssi *info = (inquiry_info_with_rssi *) (skb->data + 1);
-+ int num_rsp = *((__u8 *) skb->data);
-+
-+ BT_DBG("%s num_rsp %d", hdev->name, num_rsp);
-+
-+ hci_dev_lock(hdev);
-+ for (; num_rsp; num_rsp--) {
-+ inquiry_info tmp;
-+ bacpy(&tmp.bdaddr, &info->bdaddr);
-+ tmp.pscan_rep_mode = info->pscan_rep_mode;
-+ tmp.pscan_period_mode = info->pscan_period_mode;
-+ tmp.pscan_mode = 0x00;
-+ memcpy(tmp.dev_class, &info->dev_class, 3);
-+ tmp.clock_offset = info->clock_offset;
-+ info++;
-+ inquiry_cache_update(hdev, &tmp);
-+ }
-+ hci_dev_unlock(hdev);
-+}
-+
- /* Connect Request */
- static inline void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
- {
-@@ -735,6 +771,10 @@
- hci_inquiry_result_evt(hdev, skb);
- break;
-
-+ case EVT_INQUIRY_RESULT_WITH_RSSI:
-+ hci_inquiry_result_with_rssi_evt(hdev, skb);
-+ break;
-+
- case EVT_CONN_REQUEST:
- hci_conn_request_evt(hdev, skb);
- break;
-diff -Nur c3000_pre/linux/net/bluetooth/hci_sock.c c3000_work/linux/net/bluetooth/hci_sock.c
---- c3000_pre/linux/net/bluetooth/hci_sock.c 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/hci_sock.c 2004-12-16 23:01:14.000000000 +0900
-@@ -49,6 +49,7 @@
-
- #include <asm/system.h>
- #include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-
- #include <net/bluetooth/bluetooth.h>
- #include <net/bluetooth/hci_core.h>
-@@ -65,17 +66,20 @@
- /* Packet types */
- 0x10,
- /* Events */
-- { 0xd9fe, 0x0 },
-+ { 0x1000d9fe, 0x0000300c },
- /* Commands */
- {
-+ { 0x0 },
- /* OGF_LINK_CTL */
-- { 0x2a000002, 0x0, 0x0, 0x0 },
-+ { 0xbe000006, 0x00000001, 0x0000, 0x00 },
- /* OGF_LINK_POLICY */
-- { 0x1200, 0x0, 0x0, 0x0 },
-+ { 0x00005200, 0x00000000, 0x0000, 0x00 },
- /* OGF_HOST_CTL */
-- { 0x80100000, 0xa, 0x0, 0x0 },
-+ { 0xaab00200, 0x2b402aaa, 0x0154, 0x00 },
- /* OGF_INFO_PARAM */
-- { 0x22a, 0x0, 0x0, 0x0 }
-+ { 0x000002be, 0x00000000, 0x0000, 0x00 },
-+ /* OGF_STATUS_PARAM */
-+ { 0x000000ea, 0x00000000, 0x0000, 0x00 }
- }
- };
-
-@@ -387,25 +391,37 @@
-
- skb->pkt_type = *((unsigned char *) skb->data);
- skb_pull(skb, 1);
-+ skb->dev = (void *) hdev;
-
-- if (!capable(CAP_NET_RAW)) {
-- err = -EPERM;
-+ if (skb->pkt_type == HCI_COMMAND_PKT) {
-+ u16 opcode = __le16_to_cpu(get_unaligned((u16 *)skb->data));
-+ u16 ogf = cmd_opcode_ogf(opcode);
-+ u16 ocf = cmd_opcode_ocf(opcode);
-+
-+ if (((ogf > HCI_SFLT_MAX_OGF) ||
-+ !hci_test_bit(ocf & HCI_FLT_OCF_BITS, &hci_sec_filter.ocf_mask[ogf])) &&
-+ !capable(CAP_NET_RAW)) {
-+ err = -EPERM;
-+ goto drop;
-+ }
-
-- if (skb->pkt_type == HCI_COMMAND_PKT) {
-- __u16 opcode = __le16_to_cpu(*(__u16 *)skb->data);
-- __u16 ogf = cmd_opcode_ogf(opcode) - 1;
-- __u16 ocf = cmd_opcode_ocf(opcode) & HCI_FLT_OCF_BITS;
--
-- if (ogf > HCI_SFLT_MAX_OGF ||
-- !hci_test_bit(ocf, &hci_sec_filter.ocf_mask[ogf]))
-- goto drop;
-- } else
-+ if (test_bit(HCI_RAW, &hdev->flags) || (ogf == OGF_VENDOR_CMD)) {
-+ skb_queue_tail(&hdev->raw_q, skb);
-+ hci_sched_tx(hdev);
-+ } else {
-+ skb_queue_tail(&hdev->cmd_q, skb);
-+ hci_sched_cmd(hdev);
-+ }
-+ } else {
-+ if (!capable(CAP_NET_RAW)) {
-+ err = -EPERM;
- goto drop;
-+ }
-+
-+ skb_queue_tail(&hdev->raw_q, skb);
-+ hci_sched_tx(hdev);
- }
--
-- /* Send frame to HCI core */
-- skb->dev = (void *) hdev;
-- hci_send_raw(skb);
-+
- err = len;
-
- done:
-diff -Nur c3000_pre/linux/net/bluetooth/hidp/Config.in c3000_work/linux/net/bluetooth/hidp/Config.in
---- c3000_pre/linux/net/bluetooth/hidp/Config.in 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/hidp/Config.in 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,5 @@
-+#
-+# Bluetooth HIDP layer configuration
-+#
-+
-+dep_tristate 'HIDP protocol support' CONFIG_BLUEZ_HIDP $CONFIG_INPUT $CONFIG_BLUEZ_L2CAP
-diff -Nur c3000_pre/linux/net/bluetooth/hidp/Makefile c3000_work/linux/net/bluetooth/hidp/Makefile
---- c3000_pre/linux/net/bluetooth/hidp/Makefile 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/hidp/Makefile 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,10 @@
-+#
-+# Makefile for the Linux Bluetooth HIDP layer
-+#
-+
-+O_TARGET := hidp.o
-+
-+obj-y := core.o sock.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -Nur c3000_pre/linux/net/bluetooth/hidp/core.c c3000_work/linux/net/bluetooth/hidp/core.c
---- c3000_pre/linux/net/bluetooth/hidp/core.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/hidp/core.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,655 @@
-+/*
-+ HIDP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <linux/init.h>
-+#include <net/sock.h>
-+
-+#include <linux/input.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "hidp.h"
-+
-+#ifndef CONFIG_BT_HIDP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.0"
-+
-+static DECLARE_RWSEM(hidp_session_sem);
-+static LIST_HEAD(hidp_session_list);
-+
-+static unsigned char hidp_keycode[256] = {
-+ 0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38,
-+ 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3,
-+ 4, 5, 6, 7, 8, 9, 10, 11, 28, 1, 14, 15, 57, 12, 13, 26,
-+ 27, 43, 43, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64,
-+ 65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106,
-+ 105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71,
-+ 72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190,
-+ 191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113,
-+ 115,114, 0, 0, 0,121, 0, 89, 93,124, 92, 94, 95, 0, 0, 0,
-+ 122,123, 90, 91, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,
-+ 150,158,159,128,136,177,178,176,142,152,173,140
-+};
-+
-+static struct hidp_session *__hidp_get_session(bdaddr_t *bdaddr)
-+{
-+ struct hidp_session *session;
-+ struct list_head *p;
-+
-+ BT_DBG("");
-+
-+ list_for_each(p, &hidp_session_list) {
-+ session = list_entry(p, struct hidp_session, list);
-+ if (!bacmp(bdaddr, &session->bdaddr))
-+ return session;
-+ }
-+ return NULL;
-+}
-+
-+static void __hidp_link_session(struct hidp_session *session)
-+{
-+ MOD_INC_USE_COUNT;
-+ list_add(&session->list, &hidp_session_list);
-+}
-+
-+static void __hidp_unlink_session(struct hidp_session *session)
-+{
-+ list_del(&session->list);
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void __hidp_copy_session(struct hidp_session *session, struct hidp_conninfo *ci)
-+{
-+ bacpy(&ci->bdaddr, &session->bdaddr);
-+
-+ ci->flags = session->flags;
-+ ci->state = session->state;
-+
-+ ci->vendor = 0x0000;
-+ ci->product = 0x0000;
-+ ci->version = 0x0000;
-+ memset(ci->name, 0, 128);
-+
-+ if (session->input) {
-+ ci->vendor = session->input->idvendor;
-+ ci->product = session->input->idproduct;
-+ ci->version = session->input->idversion;
-+ if (session->input->name)
-+ strncpy(ci->name, session->input->name, 128);
-+ else
-+ strncpy(ci->name, "HID Boot Device", 128);
-+ }
-+}
-+
-+static int hidp_input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
-+{
-+ struct hidp_session *session = dev->private;
-+ struct sk_buff *skb;
-+ unsigned char newleds;
-+
-+ BT_DBG("session %p hid %p data %p size %d", session, device, data, size);
-+
-+ if (type != EV_LED)
-+ return -1;
-+
-+ newleds = (!!test_bit(LED_KANA, dev->led) << 3) |
-+ (!!test_bit(LED_COMPOSE, dev->led) << 3) |
-+ (!!test_bit(LED_SCROLLL, dev->led) << 2) |
-+ (!!test_bit(LED_CAPSL, dev->led) << 1) |
-+ (!!test_bit(LED_NUML, dev->led));
-+
-+ if (session->leds == newleds)
-+ return 0;
-+
-+ session->leds = newleds;
-+
-+ if (!(skb = alloc_skb(3, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for new frame");
-+ return -ENOMEM;
-+ }
-+
-+ *skb_put(skb, 1) = 0xa2;
-+ *skb_put(skb, 1) = 0x01;
-+ *skb_put(skb, 1) = newleds;
-+
-+ skb_queue_tail(&session->intr_transmit, skb);
-+
-+ hidp_schedule(session);
-+
-+ return 0;
-+}
-+
-+static void hidp_input_report(struct hidp_session *session, struct sk_buff *skb)
-+{
-+ struct input_dev *dev = session->input;
-+ unsigned char *keys = session->keys;
-+ unsigned char *udata = skb->data + 1;
-+ signed char *sdata = skb->data + 1;
-+ int i, size = skb->len - 1;
-+
-+ switch (skb->data[0]) {
-+ case 0x01: /* Keyboard report */
-+ for (i = 0; i < 8; i++)
-+ input_report_key(dev, hidp_keycode[i + 224], (udata[0] >> i) & 1);
-+
-+ for (i = 2; i < 8; i++) {
-+ if (keys[i] > 3 && memscan(udata + 2, keys[i], 6) == udata + 8) {
-+ if (hidp_keycode[keys[i]])
-+ input_report_key(dev, hidp_keycode[keys[i]], 0);
-+ else
-+ BT_ERR("Unknown key (scancode %#x) released.", keys[i]);
-+ }
-+
-+ if (udata[i] > 3 && memscan(keys + 2, udata[i], 6) == keys + 8) {
-+ if (hidp_keycode[udata[i]])
-+ input_report_key(dev, hidp_keycode[udata[i]], 1);
-+ else
-+ BT_ERR("Unknown key (scancode %#x) pressed.", udata[i]);
-+ }
-+ }
-+
-+ memcpy(keys, udata, 8);
-+ break;
-+
-+ case 0x02: /* Mouse report */
-+ input_report_key(dev, BTN_LEFT, sdata[0] & 0x01);
-+ input_report_key(dev, BTN_RIGHT, sdata[0] & 0x02);
-+ input_report_key(dev, BTN_MIDDLE, sdata[0] & 0x04);
-+ input_report_key(dev, BTN_SIDE, sdata[0] & 0x08);
-+ input_report_key(dev, BTN_EXTRA, sdata[0] & 0x10);
-+
-+ input_report_rel(dev, REL_X, sdata[1]);
-+ input_report_rel(dev, REL_Y, sdata[2]);
-+
-+ if (size > 3)
-+ input_report_rel(dev, REL_WHEEL, sdata[3]);
-+ break;
-+ }
-+
-+ input_event(dev, EV_RST, 0, 0);
-+}
-+
-+static void hidp_idle_timeout(unsigned long arg)
-+{
-+ struct hidp_session *session = (struct hidp_session *) arg;
-+
-+ atomic_inc(&session->terminate);
-+ hidp_schedule(session);
-+}
-+
-+static inline void hidp_set_timer(struct hidp_session *session)
-+{
-+ if (session->idle_to > 0)
-+ mod_timer(&session->timer, jiffies + HZ * session->idle_to);
-+}
-+
-+static inline void hidp_del_timer(struct hidp_session *session)
-+{
-+ if (session->idle_to > 0)
-+ del_timer(&session->timer);
-+}
-+
-+static inline void hidp_send_message(struct hidp_session *session, unsigned char hdr)
-+{
-+ struct sk_buff *skb;
-+
-+ BT_DBG("session %p", session);
-+
-+ if (!(skb = alloc_skb(1, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for message");
-+ return;
-+ }
-+
-+ *skb_put(skb, 1) = hdr;
-+
-+ skb_queue_tail(&session->ctrl_transmit, skb);
-+
-+ hidp_schedule(session);
-+}
-+
-+static inline int hidp_recv_frame(struct hidp_session *session, struct sk_buff *skb)
-+{
-+ __u8 hdr;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ hdr = skb->data[0];
-+ skb_pull(skb, 1);
-+
-+ if (hdr == 0xa1) {
-+ hidp_set_timer(session);
-+
-+ if (session->input)
-+ hidp_input_report(session, skb);
-+ } else {
-+ BT_DBG("Unsupported protocol header 0x%02x", hdr);
-+ }
-+
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static int hidp_send_frame(struct socket *sock, unsigned char *data, int len)
-+{
-+ struct iovec iv = { data, len };
-+ struct msghdr msg;
-+
-+ BT_DBG("sock %p data %p len %d", sock, data, len);
-+
-+ if (!len)
-+ return 0;
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 1;
-+ msg.msg_iov = &iv;
-+
-+ return sock_sendmsg(sock, &msg, len);
-+}
-+
-+static int hidp_process_transmit(struct hidp_session *session)
-+{
-+ struct sk_buff *skb;
-+
-+ BT_DBG("session %p", session);
-+
-+ while ((skb = skb_dequeue(&session->ctrl_transmit))) {
-+ if (hidp_send_frame(session->ctrl_sock, skb->data, skb->len) < 0) {
-+ skb_queue_head(&session->ctrl_transmit, skb);
-+ break;
-+ }
-+
-+ hidp_set_timer(session);
-+ kfree_skb(skb);
-+ }
-+
-+ while ((skb = skb_dequeue(&session->intr_transmit))) {
-+ if (hidp_send_frame(session->intr_sock, skb->data, skb->len) < 0) {
-+ skb_queue_head(&session->intr_transmit, skb);
-+ break;
-+ }
-+
-+ hidp_set_timer(session);
-+ kfree_skb(skb);
-+ }
-+
-+ return skb_queue_len(&session->ctrl_transmit) +
-+ skb_queue_len(&session->intr_transmit);
-+}
-+
-+static int hidp_session(void *arg)
-+{
-+ struct hidp_session *session = arg;
-+ struct sock *ctrl_sk = session->ctrl_sock->sk;
-+ struct sock *intr_sk = session->intr_sock->sk;
-+ struct sk_buff *skb;
-+ int vendor = 0x0000, product = 0x0000;
-+ wait_queue_t ctrl_wait, intr_wait;
-+ unsigned long timeo = HZ;
-+
-+ BT_DBG("session %p", session);
-+
-+ if (session->input) {
-+ vendor = session->input->idvendor;
-+ product = session->input->idproduct;
-+ }
-+
-+ daemonize(); reparent_to_init();
-+
-+ sprintf(current->comm, "khidpd_%04x%04x", vendor, product);
-+
-+ sigfillset(&current->blocked);
-+ flush_signals(current);
-+
-+ current->nice = -15;
-+
-+ set_fs(KERNEL_DS);
-+
-+ init_waitqueue_entry(&ctrl_wait, current);
-+ init_waitqueue_entry(&intr_wait, current);
-+ add_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+ add_wait_queue(intr_sk->sleep, &intr_wait);
-+ while (!atomic_read(&session->terminate)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (ctrl_sk->state != BT_CONNECTED || intr_sk->state != BT_CONNECTED)
-+ break;
-+
-+ while ((skb = skb_dequeue(&ctrl_sk->receive_queue))) {
-+ skb_orphan(skb);
-+ hidp_recv_frame(session, skb);
-+ }
-+
-+ while ((skb = skb_dequeue(&intr_sk->receive_queue))) {
-+ skb_orphan(skb);
-+ hidp_recv_frame(session, skb);
-+ }
-+
-+ hidp_process_transmit(session);
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(intr_sk->sleep, &intr_wait);
-+ remove_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+
-+ down_write(&hidp_session_sem);
-+
-+ hidp_del_timer(session);
-+
-+ if (intr_sk->state != BT_CONNECTED) {
-+ init_waitqueue_entry(&ctrl_wait, current);
-+ add_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+ while (timeo && ctrl_sk->state != BT_CLOSED) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+ timeo = HZ;
-+ }
-+
-+ fput(session->ctrl_sock->file);
-+
-+ init_waitqueue_entry(&intr_wait, current);
-+ add_wait_queue(intr_sk->sleep, &intr_wait);
-+ while (timeo && intr_sk->state != BT_CLOSED) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(intr_sk->sleep, &intr_wait);
-+
-+ fput(session->intr_sock->file);
-+
-+ __hidp_unlink_session(session);
-+
-+ if (session->input) {
-+ input_unregister_device(session->input);
-+ kfree(session->input);
-+ }
-+
-+ up_write(&hidp_session_sem);
-+
-+ kfree(session);
-+ return 0;
-+}
-+
-+static inline void hidp_setup_input(struct hidp_session *session, struct hidp_connadd_req *req)
-+{
-+ struct input_dev *input = session->input;
-+ int i;
-+
-+ input->private = session;
-+
-+ input->idbus = BUS_BLUETOOTH;
-+ input->idvendor = req->vendor;
-+ input->idproduct = req->product;
-+ input->idversion = req->version;
-+
-+ if (req->subclass & 0x40) {
-+ set_bit(EV_KEY, input->evbit);
-+ set_bit(EV_LED, input->evbit);
-+ set_bit(EV_REP, input->evbit);
-+
-+ set_bit(LED_NUML, input->ledbit);
-+ set_bit(LED_CAPSL, input->ledbit);
-+ set_bit(LED_SCROLLL, input->ledbit);
-+ set_bit(LED_COMPOSE, input->ledbit);
-+ set_bit(LED_KANA, input->ledbit);
-+
-+ for (i = 0; i < sizeof(hidp_keycode); i++)
-+ set_bit(hidp_keycode[i], input->keybit);
-+ clear_bit(0, input->keybit);
-+ }
-+
-+ if (req->subclass & 0x80) {
-+ input->evbit[0] = BIT(EV_KEY) | BIT(EV_REL);
-+ input->keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | BIT(BTN_RIGHT) | BIT(BTN_MIDDLE);
-+ input->relbit[0] = BIT(REL_X) | BIT(REL_Y);
-+ input->keybit[LONG(BTN_MOUSE)] |= BIT(BTN_SIDE) | BIT(BTN_EXTRA);
-+ input->relbit[0] |= BIT(REL_WHEEL);
-+ }
-+
-+ input->event = hidp_input_event;
-+
-+ input_register_device(input);
-+}
-+
-+int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock)
-+{
-+ struct hidp_session *session, *s;
-+ int err;
-+
-+ BT_DBG("");
-+
-+ if (bacmp(&bluez_pi(ctrl_sock->sk)->src, &bluez_pi(intr_sock->sk)->src) ||
-+ bacmp(&bluez_pi(ctrl_sock->sk)->dst, &bluez_pi(intr_sock->sk)->dst))
-+ return -ENOTUNIQ;
-+
-+ session = kmalloc(sizeof(struct hidp_session), GFP_KERNEL);
-+ if (!session)
-+ return -ENOMEM;
-+ memset(session, 0, sizeof(struct hidp_session));
-+
-+ session->input = kmalloc(sizeof(struct input_dev), GFP_KERNEL);
-+ if (!session->input) {
-+ kfree(session);
-+ return -ENOMEM;
-+ }
-+ memset(session->input, 0, sizeof(struct input_dev));
-+
-+ down_write(&hidp_session_sem);
-+
-+ s = __hidp_get_session(&bluez_pi(ctrl_sock->sk)->dst);
-+ if (s && s->state == BT_CONNECTED) {
-+ err = -EEXIST;
-+ goto failed;
-+ }
-+
-+ bacpy(&session->bdaddr, &bluez_pi(ctrl_sock->sk)->dst);
-+
-+ session->ctrl_mtu = min_t(uint, l2cap_pi(ctrl_sock->sk)->omtu, l2cap_pi(ctrl_sock->sk)->imtu);
-+ session->intr_mtu = min_t(uint, l2cap_pi(intr_sock->sk)->omtu, l2cap_pi(intr_sock->sk)->imtu);
-+
-+ BT_DBG("ctrl mtu %d intr mtu %d", session->ctrl_mtu, session->intr_mtu);
-+
-+ session->ctrl_sock = ctrl_sock;
-+ session->intr_sock = intr_sock;
-+ session->state = BT_CONNECTED;
-+
-+ init_timer(&session->timer);
-+
-+ session->timer.function = hidp_idle_timeout;
-+ session->timer.data = (unsigned long) session;
-+
-+ skb_queue_head_init(&session->ctrl_transmit);
-+ skb_queue_head_init(&session->intr_transmit);
-+
-+ session->flags = req->flags & (1 << HIDP_BLUETOOTH_VENDOR_ID);
-+ session->idle_to = req->idle_to;
-+
-+ if (session->input)
-+ hidp_setup_input(session, req);
-+
-+ __hidp_link_session(session);
-+
-+ hidp_set_timer(session);
-+
-+ err = kernel_thread(hidp_session, session, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+ if (err < 0)
-+ goto unlink;
-+
-+ if (session->input) {
-+ hidp_send_message(session, 0x70);
-+ session->flags |= (1 << HIDP_BOOT_PROTOCOL_MODE);
-+
-+ session->leds = 0xff;
-+ hidp_input_event(session->input, EV_LED, 0, 0);
-+ }
-+
-+ up_write(&hidp_session_sem);
-+ return 0;
-+
-+unlink:
-+ hidp_del_timer(session);
-+
-+ __hidp_unlink_session(session);
-+
-+ if (session->input)
-+ input_unregister_device(session->input);
-+
-+failed:
-+ up_write(&hidp_session_sem);
-+
-+ if (session->input)
-+ kfree(session->input);
-+
-+ kfree(session);
-+ return err;
-+}
-+
-+int hidp_del_connection(struct hidp_conndel_req *req)
-+{
-+ struct hidp_session *session;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&hidp_session_sem);
-+
-+ session = __hidp_get_session(&req->bdaddr);
-+ if (session) {
-+ if (req->flags & (1 << HIDP_VIRTUAL_CABLE_UNPLUG)) {
-+ hidp_send_message(session, 0x15);
-+ } else {
-+ /* Flush the transmit queues */
-+ skb_queue_purge(&session->ctrl_transmit);
-+ skb_queue_purge(&session->intr_transmit);
-+
-+ /* Kill session thread */
-+ atomic_inc(&session->terminate);
-+ hidp_schedule(session);
-+ }
-+ } else
-+ err = -ENOENT;
-+
-+ up_read(&hidp_session_sem);
-+ return err;
-+}
-+
-+int hidp_get_connlist(struct hidp_connlist_req *req)
-+{
-+ struct list_head *p;
-+ int err = 0, n = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&hidp_session_sem);
-+
-+ list_for_each(p, &hidp_session_list) {
-+ struct hidp_session *session;
-+ struct hidp_conninfo ci;
-+
-+ session = list_entry(p, struct hidp_session, list);
-+
-+ __hidp_copy_session(session, &ci);
-+
-+ if (copy_to_user(req->ci, &ci, sizeof(ci))) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (++n >= req->cnum)
-+ break;
-+
-+ req->ci++;
-+ }
-+ req->cnum = n;
-+
-+ up_read(&hidp_session_sem);
-+ return err;
-+}
-+
-+int hidp_get_conninfo(struct hidp_conninfo *ci)
-+{
-+ struct hidp_session *session;
-+ int err = 0;
-+
-+ down_read(&hidp_session_sem);
-+
-+ session = __hidp_get_session(&ci->bdaddr);
-+ if (session)
-+ __hidp_copy_session(session, ci);
-+ else
-+ err = -ENOENT;
-+
-+ up_read(&hidp_session_sem);
-+ return err;
-+}
-+
-+static int __init hidp_init(void)
-+{
-+ l2cap_load();
-+
-+ hidp_init_sockets();
-+
-+ BT_INFO("BlueZ HIDP ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>");
-+
-+ return 0;
-+}
-+
-+static void __exit hidp_exit(void)
-+{
-+ hidp_cleanup_sockets();
-+}
-+
-+module_init(hidp_init);
-+module_exit(hidp_exit);
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("Bluetooth HIDP ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -Nur c3000_pre/linux/net/bluetooth/hidp/hidp.h c3000_work/linux/net/bluetooth/hidp/hidp.h
---- c3000_pre/linux/net/bluetooth/hidp/hidp.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/hidp/hidp.h 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,122 @@
-+/*
-+ HIDP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#ifndef __HIDP_H
-+#define __HIDP_H
-+
-+#include <linux/types.h>
-+#include <net/bluetooth/bluetooth.h>
-+
-+/* HIDP ioctl defines */
-+#define HIDPCONNADD _IOW('H', 200, int)
-+#define HIDPCONNDEL _IOW('H', 201, int)
-+#define HIDPGETCONNLIST _IOR('H', 210, int)
-+#define HIDPGETCONNINFO _IOR('H', 211, int)
-+
-+#define HIDP_VIRTUAL_CABLE_UNPLUG 0
-+#define HIDP_BOOT_PROTOCOL_MODE 1
-+#define HIDP_BLUETOOTH_VENDOR_ID 9
-+
-+struct hidp_connadd_req {
-+ int ctrl_sock; // Connected control socket
-+ int intr_sock; // Connteted interrupt socket
-+ __u16 parser;
-+ __u16 rd_size;
-+ __u8 *rd_data;
-+ __u8 country;
-+ __u8 subclass;
-+ __u16 vendor;
-+ __u16 product;
-+ __u16 version;
-+ __u32 flags;
-+ __u32 idle_to;
-+ char name[128];
-+};
-+
-+struct hidp_conndel_req {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+};
-+
-+struct hidp_conninfo {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+ __u16 state;
-+ __u16 vendor;
-+ __u16 product;
-+ __u16 version;
-+ char name[128];
-+};
-+
-+struct hidp_connlist_req {
-+ __u32 cnum;
-+ struct hidp_conninfo *ci;
-+};
-+
-+int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock);
-+int hidp_del_connection(struct hidp_conndel_req *req);
-+int hidp_get_connlist(struct hidp_connlist_req *req);
-+int hidp_get_conninfo(struct hidp_conninfo *ci);
-+
-+/* HIDP session defines */
-+struct hidp_session {
-+ struct list_head list;
-+
-+ struct socket *ctrl_sock;
-+ struct socket *intr_sock;
-+
-+ bdaddr_t bdaddr;
-+
-+ unsigned long state;
-+ unsigned long flags;
-+ unsigned long idle_to;
-+
-+ uint ctrl_mtu;
-+ uint intr_mtu;
-+
-+ atomic_t terminate;
-+
-+ unsigned char keys[8];
-+ unsigned char leds;
-+
-+ struct input_dev *input;
-+
-+ struct timer_list timer;
-+
-+ struct sk_buff_head ctrl_transmit;
-+ struct sk_buff_head intr_transmit;
-+};
-+
-+static inline void hidp_schedule(struct hidp_session *session)
-+{
-+ struct sock *ctrl_sk = session->ctrl_sock->sk;
-+ struct sock *intr_sk = session->intr_sock->sk;
-+
-+ wake_up_interruptible(ctrl_sk->sleep);
-+ wake_up_interruptible(intr_sk->sleep);
-+}
-+
-+/* HIDP init defines */
-+extern int __init hidp_init_sockets(void);
-+extern void __exit hidp_cleanup_sockets(void);
-+
-+#endif /* __HIDP_H */
-diff -Nur c3000_pre/linux/net/bluetooth/hidp/sock.c c3000_work/linux/net/bluetooth/hidp/sock.c
---- c3000_pre/linux/net/bluetooth/hidp/sock.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/hidp/sock.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,212 @@
-+/*
-+ HIDP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <linux/init.h>
-+#include <net/sock.h>
-+
-+#include "hidp.h"
-+
-+#ifndef CONFIG_BT_HIDP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+static int hidp_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sock_orphan(sk);
-+ sock_put(sk);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct hidp_connadd_req ca;
-+ struct hidp_conndel_req cd;
-+ struct hidp_connlist_req cl;
-+ struct hidp_conninfo ci;
-+ struct socket *csock;
-+ struct socket *isock;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
-+ case HIDPCONNADD:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&ca, (void *) arg, sizeof(ca)))
-+ return -EFAULT;
-+
-+ csock = sockfd_lookup(ca.ctrl_sock, &err);
-+ if (!csock)
-+ return err;
-+
-+ isock = sockfd_lookup(ca.intr_sock, &err);
-+ if (!isock) {
-+ fput(csock->file);
-+ return err;
-+ }
-+
-+ if (csock->sk->state != BT_CONNECTED || isock->sk->state != BT_CONNECTED) {
-+ fput(csock->file);
-+ fput(isock->file);
-+ return -EBADFD;
-+ }
-+
-+ err = hidp_add_connection(&ca, csock, isock);
-+ if (!err) {
-+ if (copy_to_user((void *) arg, &ca, sizeof(ca)))
-+ err = -EFAULT;
-+ } else {
-+ fput(csock->file);
-+ fput(isock->file);
-+ }
-+
-+ return err;
-+
-+ case HIDPCONNDEL:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&cd, (void *) arg, sizeof(cd)))
-+ return -EFAULT;
-+
-+ return hidp_del_connection(&cd);
-+
-+ case HIDPGETCONNLIST:
-+ if (copy_from_user(&cl, (void *) arg, sizeof(cl)))
-+ return -EFAULT;
-+
-+ if (cl.cnum <= 0)
-+ return -EINVAL;
-+
-+ err = hidp_get_connlist(&cl);
-+ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ case HIDPGETCONNINFO:
-+ if (copy_from_user(&ci, (void *) arg, sizeof(ci)))
-+ return -EFAULT;
-+
-+ err = hidp_get_conninfo(&ci);
-+ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci)))
-+ return -EFAULT;
-+
-+ return err;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static struct proto_ops hidp_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: hidp_sock_release,
-+ ioctl: hidp_sock_ioctl,
-+ bind: sock_no_bind,
-+ getname: sock_no_getname,
-+ sendmsg: sock_no_sendmsg,
-+ recvmsg: sock_no_recvmsg,
-+ poll: sock_no_poll,
-+ listen: sock_no_listen,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sock_no_setsockopt,
-+ getsockopt: sock_no_getsockopt,
-+ connect: sock_no_connect,
-+ socketpair: sock_no_socketpair,
-+ accept: sock_no_accept,
-+ mmap: sock_no_mmap
-+};
-+
-+static int hidp_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ if (sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &hidp_sock_ops;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1)))
-+ return -ENOMEM;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ sock->state = SS_UNCONNECTED;
-+ sock_init_data(sock, sk);
-+
-+ sk->destruct = NULL;
-+ sk->protocol = protocol;
-+
-+ return 0;
-+}
-+
-+static struct net_proto_family hidp_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: hidp_sock_create
-+};
-+
-+int __init hidp_init_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_HIDP, &hidp_sock_family_ops)))
-+ BT_ERR("Can't register HIDP socket layer (%d)", err);
-+
-+ return err;
-+}
-+
-+void __exit hidp_cleanup_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_unregister(BTPROTO_HIDP)))
-+ BT_ERR("Can't unregister HIDP socket layer (%d)", err);
-+}
-diff -Nur c3000_pre/linux/net/bluetooth/l2cap.c c3000_work/linux/net/bluetooth/l2cap.c
---- c3000_pre/linux/net/bluetooth/l2cap.c 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/l2cap.c 2004-12-16 23:01:14.000000000 +0900
-@@ -27,7 +27,7 @@
- *
- * $Id: l2cap.c,v 1.15 2002/09/09 01:14:52 maxk Exp $
- */
--#define VERSION "2.1"
-+#define VERSION "2.3"
-
- #include <linux/config.h>
- #include <linux/module.h>
-@@ -178,69 +178,12 @@
- return 0;
- }
-
--int l2cap_connect(struct sock *sk)
--{
-- bdaddr_t *src = &bluez_pi(sk)->src;
-- bdaddr_t *dst = &bluez_pi(sk)->dst;
-- struct l2cap_conn *conn;
-- struct hci_conn *hcon;
-- struct hci_dev *hdev;
-- int err = 0;
--
-- BT_DBG("%s -> %s psm 0x%2.2x", batostr(src), batostr(dst), l2cap_pi(sk)->psm);
--
-- if (!(hdev = hci_get_route(dst, src)))
-- return -EHOSTUNREACH;
--
-- hci_dev_lock_bh(hdev);
--
-- err = -ENOMEM;
--
-- hcon = hci_connect(hdev, ACL_LINK, dst);
-- if (!hcon)
-- goto done;
--
-- conn = l2cap_conn_add(hcon, 0);
-- if (!conn) {
-- hci_conn_put(hcon);
-- goto done;
-- }
--
-- err = 0;
--
-- /* Update source addr of the socket */
-- bacpy(src, conn->src);
--
-- l2cap_chan_add(conn, sk, NULL);
--
-- sk->state = BT_CONNECT;
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
--
-- if (hcon->state == BT_CONNECTED) {
-- if (sk->type == SOCK_SEQPACKET) {
-- l2cap_conn_req req;
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- req.psm = l2cap_pi(sk)->psm;
-- l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
-- } else {
-- l2cap_sock_clear_timer(sk);
-- sk->state = BT_CONNECTED;
-- }
-- }
--
--done:
-- hci_dev_unlock_bh(hdev);
-- hci_dev_put(hdev);
-- return err;
--}
--
- /* -------- Socket interface ---------- */
- static struct sock *__l2cap_get_sock_by_addr(__u16 psm, bdaddr_t *src)
- {
- struct sock *sk;
- for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-- if (l2cap_pi(sk)->psm == psm &&
-- !bacmp(&bluez_pi(sk)->src, src))
-+ if (sk->sport == psm && !bacmp(&bluez_pi(sk)->src, src))
- break;
- }
- return sk;
-@@ -341,7 +284,7 @@
- l2cap_disconn_req req;
-
- sk->state = BT_DISCONN;
-- l2cap_sock_set_timer(sk, HZ * 5);
-+ l2cap_sock_set_timer(sk, sk->sndtimeo);
-
- req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-@@ -366,11 +309,9 @@
- static void l2cap_sock_close(struct sock *sk)
- {
- l2cap_sock_clear_timer(sk);
--
- lock_sock(sk);
- __l2cap_sock_close(sk, ECONNRESET);
- release_sock(sk);
--
- l2cap_sock_kill(sk);
- }
-
-@@ -432,6 +373,9 @@
- if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
- return -ESOCKTNOSUPPORT;
-
-+ if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW))
-+ return -EPERM;
-+
- sock->ops = &l2cap_sock_ops;
-
- if (!(sk = l2cap_sock_alloc(sock, protocol, GFP_KERNEL)))
-@@ -466,9 +410,9 @@
- /* Save source address */
- bacpy(&bluez_pi(sk)->src, &la->l2_bdaddr);
- l2cap_pi(sk)->psm = la->l2_psm;
-+ sk->sport = la->l2_psm;
- sk->state = BT_BOUND;
- }
--
- write_unlock_bh(&l2cap_sk_list.lock);
-
- done:
-@@ -476,6 +420,62 @@
- return err;
- }
-
-+static int l2cap_do_connect(struct sock *sk)
-+{
-+ bdaddr_t *src = &bluez_pi(sk)->src;
-+ bdaddr_t *dst = &bluez_pi(sk)->dst;
-+ struct l2cap_conn *conn;
-+ struct hci_conn *hcon;
-+ struct hci_dev *hdev;
-+ int err = 0;
-+
-+ BT_DBG("%s -> %s psm 0x%2.2x", batostr(src), batostr(dst), l2cap_pi(sk)->psm);
-+
-+ if (!(hdev = hci_get_route(dst, src)))
-+ return -EHOSTUNREACH;
-+
-+ hci_dev_lock_bh(hdev);
-+
-+ err = -ENOMEM;
-+
-+ hcon = hci_connect(hdev, ACL_LINK, dst);
-+ if (!hcon)
-+ goto done;
-+
-+ conn = l2cap_conn_add(hcon, 0);
-+ if (!conn) {
-+ hci_conn_put(hcon);
-+ goto done;
-+ }
-+
-+ err = 0;
-+
-+ /* Update source addr of the socket */
-+ bacpy(src, conn->src);
-+
-+ l2cap_chan_add(conn, sk, NULL);
-+
-+ sk->state = BT_CONNECT;
-+ l2cap_sock_set_timer(sk, sk->sndtimeo);
-+
-+ if (hcon->state == BT_CONNECTED) {
-+ if (sk->type == SOCK_SEQPACKET) {
-+ l2cap_conn_req req;
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ req.psm = l2cap_pi(sk)->psm;
-+ l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
-+ } else {
-+ l2cap_sock_clear_timer(sk);
-+ sk->state = BT_CONNECTED;
-+ }
-+ }
-+
-+done:
-+ hci_dev_unlock_bh(hdev);
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
- static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
- {
- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-@@ -521,11 +521,12 @@
- bacpy(&bluez_pi(sk)->dst, &la->l2_bdaddr);
- l2cap_pi(sk)->psm = la->l2_psm;
-
-- if ((err = l2cap_connect(sk)))
-+ if ((err = l2cap_do_connect(sk)))
- goto done;
-
- wait:
-- err = bluez_sock_w4_connect(sk, flags);
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-
- done:
- release_sock(sk);
-@@ -758,32 +759,39 @@
- static int l2cap_sock_shutdown(struct socket *sock, int how)
- {
- struct sock *sk = sock->sk;
-+ int err = 0;
-
- BT_DBG("sock %p, sk %p", sock, sk);
-
- if (!sk) return 0;
-
-- l2cap_sock_clear_timer(sk);
--
- lock_sock(sk);
-- sk->shutdown = SHUTDOWN_MASK;
-- __l2cap_sock_close(sk, ECONNRESET);
-- release_sock(sk);
-+ if (!sk->shutdown) {
-+ sk->shutdown = SHUTDOWN_MASK;
-+ l2cap_sock_clear_timer(sk);
-+ __l2cap_sock_close(sk, 0);
-
-- return 0;
-+ if (sk->linger)
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ }
-+ release_sock(sk);
-+ return err;
- }
-
- static int l2cap_sock_release(struct socket *sock)
- {
- struct sock *sk = sock->sk;
-+ int err;
-
- BT_DBG("sock %p, sk %p", sock, sk);
-
- if (!sk) return 0;
-
-+ err = l2cap_sock_shutdown(sock, 2);
-+
- sock_orphan(sk);
-- l2cap_sock_close(sk);
-- return 0;
-+ l2cap_sock_kill(sk);
-+ return err;
- }
-
- /* --------- L2CAP channels --------- */
-@@ -915,10 +923,12 @@
- hci_conn_put(conn->hcon);
- }
-
-- sk->state = BT_CLOSED;
-- sk->err = err;
-+ sk->state = BT_CLOSED;
- sk->zapped = 1;
-
-+ if (err)
-+ sk->err = err;
-+
- if (parent)
- parent->data_ready(parent, 0);
- else
-@@ -954,6 +964,22 @@
- read_unlock(&l->lock);
- }
-
-+/* Notify sockets that we cannot guaranty reliability anymore */
-+static void l2cap_conn_unreliable(struct l2cap_conn *conn, int err)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ struct sock *sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ if (l2cap_pi(sk)->link_mode & L2CAP_LM_RELIABLE)
-+ sk->err = err;
-+ }
-+ read_unlock(&l->lock);
-+}
-+
- static void l2cap_chan_ready(struct sock *sk)
- {
- struct sock *parent = bluez_pi(sk)->parent;
-@@ -1318,15 +1344,18 @@
- {
- l2cap_conf_rsp *rsp = (l2cap_conf_rsp *) data;
- void *ptr = rsp->data;
-+ u16 flags = 0;
-
- BT_DBG("sk %p complete %d", sk, result ? 1 : 0);
-
- if (result)
- *result = l2cap_conf_output(sk, &ptr);
-+ else
-+ flags |= 0x0001;
-
- rsp->scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
- rsp->result = __cpu_to_le16(result ? *result : 0);
-- rsp->flags = __cpu_to_le16(0);
-+ rsp->flags = __cpu_to_le16(flags);
-
- return ptr - data;
- }
-@@ -1439,7 +1468,7 @@
- case L2CAP_CR_SUCCESS:
- sk->state = BT_CONFIG;
- l2cap_pi(sk)->dcid = dcid;
-- l2cap_pi(sk)->conf_state |= CONF_REQ_SENT;
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_REQ_SENT;
-
- l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
- break;
-@@ -1474,7 +1503,7 @@
-
- l2cap_parse_conf_req(sk, req->data, cmd->len - L2CAP_CONF_REQ_SIZE);
-
-- if (flags & 0x01) {
-+ if (flags & 0x0001) {
- /* Incomplete config. Send empty response. */
- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, NULL), rsp);
- goto unlock;
-@@ -1487,12 +1516,12 @@
- goto unlock;
-
- /* Output config done */
-- l2cap_pi(sk)->conf_state |= CONF_OUTPUT_DONE;
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_OUTPUT_DONE;
-
-- if (l2cap_pi(sk)->conf_state & CONF_INPUT_DONE) {
-+ if (l2cap_pi(sk)->conf_state & L2CAP_CONF_INPUT_DONE) {
- sk->state = BT_CONNECTED;
- l2cap_chan_ready(sk);
-- } else if (!(l2cap_pi(sk)->conf_state & CONF_REQ_SENT)) {
-+ } else if (!(l2cap_pi(sk)->conf_state & L2CAP_CONF_REQ_SENT)) {
- char req[64];
- l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
- }
-@@ -1518,18 +1547,34 @@
- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
- return -ENOENT;
-
-- if (result) {
-- l2cap_disconn_req req;
-+ switch (result) {
-+ case L2CAP_CONF_SUCCESS:
-+ break;
-
-- /* They didn't like our options. Well... we do not negotiate.
-- * Close channel.
-- */
-+ case L2CAP_CONF_UNACCEPT:
-+ if (++l2cap_pi(sk)->conf_retry < L2CAP_CONF_MAX_RETRIES) {
-+ char req[128];
-+ /*
-+ It does not make sense to adjust L2CAP parameters
-+ that are currently defined in the spec. We simply
-+ resend config request that we sent earlier. It is
-+ stupid :) but it helps qualification testing
-+ which expects at least some response from us.
-+ */
-+ l2cap_send_req(conn, L2CAP_CONF_REQ,
-+ l2cap_build_conf_req(sk, req), req);
-+ goto done;
-+ }
-+ default:
- sk->state = BT_DISCONN;
-+ sk->err = ECONNRESET;
- l2cap_sock_set_timer(sk, HZ * 5);
--
-- req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
-+ {
-+ l2cap_disconn_req req;
-+ req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
-+ }
- goto done;
- }
-
-@@ -1537,9 +1582,9 @@
- goto done;
-
- /* Input config done */
-- l2cap_pi(sk)->conf_state |= CONF_INPUT_DONE;
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_INPUT_DONE;
-
-- if (l2cap_pi(sk)->conf_state & CONF_OUTPUT_DONE) {
-+ if (l2cap_pi(sk)->conf_state & L2CAP_CONF_OUTPUT_DONE) {
- sk->state = BT_CONNECTED;
- l2cap_chan_ready(sk);
- }
-@@ -1590,13 +1635,42 @@
-
- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
- return 0;
-- l2cap_chan_del(sk, ECONNABORTED);
-+ l2cap_chan_del(sk, 0);
- bh_unlock_sock(sk);
-
- l2cap_sock_kill(sk);
- return 0;
- }
-
-+static inline int l2cap_information_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, u8 *data)
-+{
-+ l2cap_info_req *req = (l2cap_info_req *) data;
-+ l2cap_info_rsp rsp;
-+ u16 type;
-+
-+ type = __le16_to_cpu(req->type);
-+
-+ BT_DBG("type 0x%4.4x", type);
-+
-+ rsp.type = __cpu_to_le16(type);
-+ rsp.result = __cpu_to_le16(L2CAP_IR_NOTSUPP);
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_INFO_RSP, sizeof(rsp), &rsp);
-+ return 0;
-+}
-+
-+static inline int l2cap_information_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, u8 *data)
-+{
-+ l2cap_info_rsp *rsp = (l2cap_info_rsp *) data;
-+ u16 type, result;
-+
-+ type = __le16_to_cpu(rsp->type);
-+ result = __le16_to_cpu(rsp->result);
-+
-+ BT_DBG("type 0x%4.4x result 0x%2.2x", type, result);
-+
-+ return 0;
-+}
-+
- static inline void l2cap_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb)
- {
- __u8 *data = skb->data;
-@@ -1604,6 +1678,8 @@
- l2cap_cmd_hdr cmd;
- int err = 0;
-
-+ l2cap_raw_recv(conn, skb);
-+
- while (len >= L2CAP_CMD_HDR_SIZE) {
- memcpy(&cmd, data, L2CAP_CMD_HDR_SIZE);
- data += L2CAP_CMD_HDR_SIZE;
-@@ -1619,6 +1695,10 @@
- }
-
- switch (cmd.code) {
-+ case L2CAP_COMMAND_REJ:
-+ /* FIXME: We should process this */
-+ break;
-+
- case L2CAP_CONN_REQ:
- err = l2cap_connect_req(conn, &cmd, data);
- break;
-@@ -1643,23 +1723,23 @@
- err = l2cap_disconnect_rsp(conn, &cmd, data);
- break;
-
-- case L2CAP_COMMAND_REJ:
-- /* FIXME: We should process this */
-- l2cap_raw_recv(conn, skb);
-- break;
--
- case L2CAP_ECHO_REQ:
- l2cap_send_rsp(conn, cmd.ident, L2CAP_ECHO_RSP, cmd.len, data);
- break;
-
- case L2CAP_ECHO_RSP:
-+ break;
-+
- case L2CAP_INFO_REQ:
-+ err = l2cap_information_req(conn, &cmd, data);
-+ break;
-+
- case L2CAP_INFO_RSP:
-- l2cap_raw_recv(conn, skb);
-+ err = l2cap_information_rsp(conn, &cmd, data);
- break;
-
- default:
-- BT_ERR("Uknown signaling command 0x%2.2x", cmd.code);
-+ BT_ERR("Unknown signaling command 0x%2.2x", cmd.code);
- err = -EINVAL;
- break;
- };
-@@ -1668,7 +1748,7 @@
- l2cap_cmd_rej rej;
- BT_DBG("error %d", err);
-
-- /* FIXME: Map err to a valid reason. */
-+ /* FIXME: Map err to a valid reason */
- rej.reason = __cpu_to_le16(0);
- l2cap_send_rsp(conn, cmd.ident, L2CAP_COMMAND_REJ, L2CAP_CMD_REJ_SIZE, &rej);
- }
-@@ -1787,7 +1867,7 @@
- if (sk->state != BT_LISTEN)
- continue;
-
-- if (!bacmp(&bluez_pi(sk)->src, bdaddr)) {
-+ if (!bacmp(&bluez_pi(sk)->src, &hdev->bdaddr)) {
- lm1 |= (HCI_LM_ACCEPT | l2cap_pi(sk)->link_mode);
- exact++;
- } else if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-@@ -1941,26 +2021,36 @@
- kfree_skb(conn->rx_skb);
- conn->rx_skb = NULL;
- conn->rx_len = 0;
-+ l2cap_conn_unreliable(conn, ECOMM);
- }
-
- if (skb->len < 2) {
-- BT_ERR("Frame is too small (len %d)", skb->len);
-+ BT_ERR("Frame is too short (len %d)", skb->len);
-+ l2cap_conn_unreliable(conn, ECOMM);
- goto drop;
- }
-
- hdr = (l2cap_hdr *) skb->data;
- len = __le16_to_cpu(hdr->len) + L2CAP_HDR_SIZE;
-
-- BT_DBG("Start: total len %d, frag len %d", len, skb->len);
--
- if (len == skb->len) {
- /* Complete frame received */
- l2cap_recv_frame(conn, skb);
- return 0;
- }
-
-- /* Allocate skb for the complete frame (with header) */
-- if (!(conn->rx_skb = bluez_skb_alloc(len, GFP_ATOMIC)))
-+ BT_DBG("Start: total len %d, frag len %d", len, skb->len);
-+
-+ if (skb->len > len) {
-+ BT_ERR("Frame is too long (len %d, expected len %d)",
-+ skb->len, len);
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ /* Allocate skb for the complete frame including header */
-+ conn->rx_skb = bluez_skb_alloc(len, GFP_ATOMIC);
-+ if (!conn->rx_skb)
- goto drop;
-
- memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
-@@ -1970,15 +2060,17 @@
-
- if (!conn->rx_len) {
- BT_ERR("Unexpected continuation frame (len %d)", skb->len);
-+ l2cap_conn_unreliable(conn, ECOMM);
- goto drop;
- }
-
- if (skb->len > conn->rx_len) {
-- BT_ERR("Fragment is too large (len %d, expect %d)",
-+ BT_ERR("Fragment is too long (len %d, expected %d)",
- skb->len, conn->rx_len);
- kfree_skb(conn->rx_skb);
- conn->rx_skb = NULL;
- conn->rx_len = 0;
-+ l2cap_conn_unreliable(conn, ECOMM);
- goto drop;
- }
-
-@@ -2112,6 +2204,16 @@
- BT_ERR("Can't unregister L2CAP protocol");
- }
-
-+void l2cap_load(void)
-+{
-+ /* Dummy function to trigger automatic L2CAP module loading by
-+ other modules that use L2CAP sockets but do not use any other
-+ symbols from it. */
-+ return;
-+}
-+
-+EXPORT_SYMBOL(l2cap_load);
-+
- module_init(l2cap_init);
- module_exit(l2cap_cleanup);
-
-diff -Nur c3000_pre/linux/net/bluetooth/rfcomm/Config.in c3000_work/linux/net/bluetooth/rfcomm/Config.in
---- c3000_pre/linux/net/bluetooth/rfcomm/Config.in 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/rfcomm/Config.in 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,10 @@
-+#
-+# Bluetooth RFCOMM layer configuration
-+#
-+
-+dep_tristate 'RFCOMM protocol support' CONFIG_BLUEZ_RFCOMM $CONFIG_BLUEZ_L2CAP
-+
-+if [ "$CONFIG_BLUEZ_RFCOMM" != "n" ]; then
-+ bool ' RFCOMM TTY support' CONFIG_BLUEZ_RFCOMM_TTY
-+fi
-+
-diff -Nur c3000_pre/linux/net/bluetooth/rfcomm/Makefile c3000_work/linux/net/bluetooth/rfcomm/Makefile
---- c3000_pre/linux/net/bluetooth/rfcomm/Makefile 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/rfcomm/Makefile 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,11 @@
-+#
-+# Makefile for the Linux Bluetooth RFCOMM layer
-+#
-+
-+O_TARGET := rfcomm.o
-+
-+obj-y := core.o sock.o crc.o
-+obj-$(CONFIG_BLUEZ_RFCOMM_TTY) += tty.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -Nur c3000_pre/linux/net/bluetooth/rfcomm/core.c c3000_work/linux/net/bluetooth/rfcomm/core.c
---- c3000_pre/linux/net/bluetooth/rfcomm/core.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/rfcomm/core.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,1940 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ RPN support - Dirk Husemann <hud@zurich.ibm.com>
-+*/
-+
-+/*
-+ * RFCOMM core.
-+ *
-+ * $Id: core.c,v 1.46 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#define __KERNEL_SYSCALLS__
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/signal.h>
-+#include <linux/init.h>
-+#include <linux/wait.h>
-+#include <linux/net.h>
-+#include <linux/proc_fs.h>
-+#include <net/sock.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#define VERSION "1.1"
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+struct task_struct *rfcomm_thread;
-+DECLARE_MUTEX(rfcomm_sem);
-+unsigned long rfcomm_event;
-+
-+static LIST_HEAD(session_list);
-+static atomic_t terminate, running;
-+
-+static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len);
-+static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci);
-+static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci);
-+static int rfcomm_queue_disc(struct rfcomm_dlc *d);
-+static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type);
-+static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d);
-+static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig);
-+static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len);
-+static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits);
-+static void rfcomm_make_uih(struct sk_buff *skb, u8 addr);
-+
-+static void rfcomm_process_connect(struct rfcomm_session *s);
-+
-+/* ---- RFCOMM frame parsing macros ---- */
-+#define __get_dlci(b) ((b & 0xfc) >> 2)
-+#define __get_channel(b) ((b & 0xf8) >> 3)
-+#define __get_dir(b) ((b & 0x04) >> 2)
-+#define __get_type(b) ((b & 0xef))
-+
-+#define __test_ea(b) ((b & 0x01))
-+#define __test_cr(b) ((b & 0x02))
-+#define __test_pf(b) ((b & 0x10))
-+
-+#define __addr(cr, dlci) (((dlci & 0x3f) << 2) | (cr << 1) | 0x01)
-+#define __ctrl(type, pf) (((type & 0xef) | (pf << 4)))
-+#define __dlci(dir, chn) (((chn & 0x1f) << 1) | dir)
-+#define __srv_channel(dlci) (dlci >> 1)
-+#define __dir(dlci) (dlci & 0x01)
-+
-+#define __len8(len) (((len) << 1) | 1)
-+#define __len16(len) ((len) << 1)
-+
-+/* MCC macros */
-+#define __mcc_type(cr, type) (((type << 2) | (cr << 1) | 0x01))
-+#define __get_mcc_type(b) ((b & 0xfc) >> 2)
-+#define __get_mcc_len(b) ((b & 0xfe) >> 1)
-+
-+/* RPN macros */
-+#define __rpn_line_settings(data, stop, parity) ((data & 0x3) | ((stop & 0x1) << 2) | ((parity & 0x3) << 3))
-+#define __get_rpn_data_bits(line) ((line) & 0x3)
-+#define __get_rpn_stop_bits(line) (((line) >> 2) & 0x1)
-+#define __get_rpn_parity(line) (((line) >> 3) & 0x3)
-+
-+/* ---- RFCOMM FCS computation ---- */
-+
-+/* CRC on 2 bytes */
-+#define __crc(data) (rfcomm_crc_table[rfcomm_crc_table[0xff ^ data[0]] ^ data[1]])
-+
-+/* FCS on 2 bytes */
-+static inline u8 __fcs(u8 *data)
-+{
-+ return (0xff - __crc(data));
-+}
-+
-+/* FCS on 3 bytes */
-+static inline u8 __fcs2(u8 *data)
-+{
-+ return (0xff - rfcomm_crc_table[__crc(data) ^ data[2]]);
-+}
-+
-+/* Check FCS */
-+static inline int __check_fcs(u8 *data, int type, u8 fcs)
-+{
-+ u8 f = __crc(data);
-+
-+ if (type != RFCOMM_UIH)
-+ f = rfcomm_crc_table[f ^ data[2]];
-+
-+ return rfcomm_crc_table[f ^ fcs] != 0xcf;
-+}
-+
-+/* ---- L2CAP callbacks ---- */
-+static void rfcomm_l2state_change(struct sock *sk)
-+{
-+ BT_DBG("%p state %d", sk, sk->state);
-+ rfcomm_schedule(RFCOMM_SCHED_STATE);
-+}
-+
-+static void rfcomm_l2data_ready(struct sock *sk, int bytes)
-+{
-+ BT_DBG("%p bytes %d", sk, bytes);
-+ rfcomm_schedule(RFCOMM_SCHED_RX);
-+}
-+
-+static int rfcomm_l2sock_create(struct socket **sock)
-+{
-+ int err;
-+
-+ BT_DBG("");
-+
-+ err = sock_create(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP, sock);
-+ if (!err) {
-+ struct sock *sk = (*sock)->sk;
-+ sk->data_ready = rfcomm_l2data_ready;
-+ sk->state_change = rfcomm_l2state_change;
-+ }
-+ return err;
-+}
-+
-+/* ---- RFCOMM DLCs ---- */
-+static void rfcomm_dlc_timeout(unsigned long arg)
-+{
-+ struct rfcomm_dlc *d = (void *) arg;
-+
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ set_bit(RFCOMM_TIMED_OUT, &d->flags);
-+ rfcomm_dlc_put(d);
-+ rfcomm_schedule(RFCOMM_SCHED_TIMEO);
-+}
-+
-+static void rfcomm_dlc_set_timer(struct rfcomm_dlc *d, long timeout)
-+{
-+ BT_DBG("dlc %p state %ld timeout %ld", d, d->state, timeout);
-+
-+ if (!mod_timer(&d->timer, jiffies + timeout))
-+ rfcomm_dlc_hold(d);
-+}
-+
-+static void rfcomm_dlc_clear_timer(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (timer_pending(&d->timer) && del_timer(&d->timer))
-+ rfcomm_dlc_put(d);
-+}
-+
-+static void rfcomm_dlc_clear_state(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("%p", d);
-+
-+ d->state = BT_OPEN;
-+ d->flags = 0;
-+ d->mscex = 0;
-+ d->mtu = RFCOMM_DEFAULT_MTU;
-+ d->v24_sig = RFCOMM_V24_RTC | RFCOMM_V24_RTR | RFCOMM_V24_DV;
-+
-+ d->cfc = RFCOMM_CFC_DISABLED;
-+ d->rx_credits = RFCOMM_DEFAULT_CREDITS;
-+}
-+
-+struct rfcomm_dlc *rfcomm_dlc_alloc(int prio)
-+{
-+ struct rfcomm_dlc *d = kmalloc(sizeof(*d), prio);
-+ if (!d)
-+ return NULL;
-+ memset(d, 0, sizeof(*d));
-+
-+ init_timer(&d->timer);
-+ d->timer.function = rfcomm_dlc_timeout;
-+ d->timer.data = (unsigned long) d;
-+
-+ skb_queue_head_init(&d->tx_queue);
-+ spin_lock_init(&d->lock);
-+ atomic_set(&d->refcnt, 1);
-+
-+ rfcomm_dlc_clear_state(d);
-+
-+ BT_DBG("%p", d);
-+ return d;
-+}
-+
-+void rfcomm_dlc_free(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("%p", d);
-+
-+ skb_queue_purge(&d->tx_queue);
-+ kfree(d);
-+}
-+
-+static void rfcomm_dlc_link(struct rfcomm_session *s, struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p session %p", d, s);
-+
-+ rfcomm_session_hold(s);
-+
-+ rfcomm_dlc_hold(d);
-+ list_add(&d->list, &s->dlcs);
-+ d->session = s;
-+}
-+
-+static void rfcomm_dlc_unlink(struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_session *s = d->session;
-+
-+ BT_DBG("dlc %p refcnt %d session %p", d, atomic_read(&d->refcnt), s);
-+
-+ list_del(&d->list);
-+ d->session = NULL;
-+ rfcomm_dlc_put(d);
-+
-+ rfcomm_session_put(s);
-+}
-+
-+static struct rfcomm_dlc *rfcomm_dlc_get(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p;
-+
-+ list_for_each(p, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (d->dlci == dlci)
-+ return d;
-+ }
-+ return NULL;
-+}
-+
-+static int __rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel)
-+{
-+ struct rfcomm_session *s;
-+ int err = 0;
-+ u8 dlci;
-+
-+ BT_DBG("dlc %p state %ld %s %s channel %d",
-+ d, d->state, batostr(src), batostr(dst), channel);
-+
-+ if (channel < 1 || channel > 30)
-+ return -EINVAL;
-+
-+ if (d->state != BT_OPEN && d->state != BT_CLOSED)
-+ return 0;
-+
-+ s = rfcomm_session_get(src, dst);
-+ if (!s) {
-+ s = rfcomm_session_create(src, dst, &err);
-+ if (!s)
-+ return err;
-+ }
-+
-+ dlci = __dlci(!s->initiator, channel);
-+
-+ /* Check if DLCI already exists */
-+ if (rfcomm_dlc_get(s, dlci))
-+ return -EBUSY;
-+
-+ rfcomm_dlc_clear_state(d);
-+
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ d->priority = 7;
-+
-+ d->state = BT_CONFIG;
-+ rfcomm_dlc_link(s, d);
-+
-+ d->mtu = s->mtu;
-+ d->cfc = (s->cfc == RFCOMM_CFC_UNKNOWN) ? 0 : s->cfc;
-+
-+ if (s->state == BT_CONNECTED)
-+ rfcomm_send_pn(s, 1, d);
-+ rfcomm_dlc_set_timer(d, RFCOMM_CONN_TIMEOUT);
-+ return 0;
-+}
-+
-+int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel)
-+{
-+ mm_segment_t fs;
-+ int r;
-+
-+ rfcomm_lock();
-+
-+ fs = get_fs(); set_fs(KERNEL_DS);
-+ r = __rfcomm_dlc_open(d, src, dst, channel);
-+ set_fs(fs);
-+
-+ rfcomm_unlock();
-+ return r;
-+}
-+
-+static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err)
-+{
-+ struct rfcomm_session *s = d->session;
-+ if (!s)
-+ return 0;
-+
-+ BT_DBG("dlc %p state %ld dlci %d err %d session %p",
-+ d, d->state, d->dlci, err, s);
-+
-+ switch (d->state) {
-+ case BT_CONNECTED:
-+ case BT_CONFIG:
-+ case BT_CONNECT:
-+ d->state = BT_DISCONN;
-+ if (skb_queue_empty(&d->tx_queue)) {
-+ rfcomm_send_disc(s, d->dlci);
-+ rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT);
-+ } else {
-+ rfcomm_queue_disc(d);
-+ rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT * 2);
-+ }
-+ break;
-+
-+ default:
-+ rfcomm_dlc_clear_timer(d);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CLOSED;
-+ d->state_change(d, err);
-+ rfcomm_dlc_unlock(d);
-+
-+ skb_queue_purge(&d->tx_queue);
-+ rfcomm_dlc_unlink(d);
-+ }
-+
-+ return 0;
-+}
-+
-+int rfcomm_dlc_close(struct rfcomm_dlc *d, int err)
-+{
-+ mm_segment_t fs;
-+ int r;
-+
-+ rfcomm_lock();
-+
-+ fs = get_fs(); set_fs(KERNEL_DS);
-+ r = __rfcomm_dlc_close(d, err);
-+ set_fs(fs);
-+
-+ rfcomm_unlock();
-+ return r;
-+}
-+
-+int rfcomm_dlc_send(struct rfcomm_dlc *d, struct sk_buff *skb)
-+{
-+ int len = skb->len;
-+
-+ if (d->state != BT_CONNECTED)
-+ return -ENOTCONN;
-+
-+ BT_DBG("dlc %p mtu %d len %d", d, d->mtu, len);
-+
-+ if (len > d->mtu)
-+ return -EINVAL;
-+
-+ rfcomm_make_uih(skb, d->addr);
-+ skb_queue_tail(&d->tx_queue, skb);
-+
-+ if (!test_bit(RFCOMM_TX_THROTTLED, &d->flags))
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+ return len;
-+}
-+
-+void __rfcomm_dlc_throttle(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (!d->cfc) {
-+ d->v24_sig |= RFCOMM_V24_FC;
-+ set_bit(RFCOMM_MSC_PENDING, &d->flags);
-+ }
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+}
-+
-+void __rfcomm_dlc_unthrottle(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (!d->cfc) {
-+ d->v24_sig &= ~RFCOMM_V24_FC;
-+ set_bit(RFCOMM_MSC_PENDING, &d->flags);
-+ }
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+}
-+
-+/*
-+ Set/get modem status functions use _local_ status i.e. what we report
-+ to the other side.
-+ Remote status is provided by dlc->modem_status() callback.
-+ */
-+int rfcomm_dlc_set_modem_status(struct rfcomm_dlc *d, u8 v24_sig)
-+{
-+ BT_DBG("dlc %p state %ld v24_sig 0x%x",
-+ d, d->state, v24_sig);
-+
-+ if (test_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ v24_sig |= RFCOMM_V24_FC;
-+ else
-+ v24_sig &= ~RFCOMM_V24_FC;
-+
-+ d->v24_sig = v24_sig;
-+
-+ if (!test_and_set_bit(RFCOMM_MSC_PENDING, &d->flags))
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+
-+ return 0;
-+}
-+
-+int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig)
-+{
-+ BT_DBG("dlc %p state %ld v24_sig 0x%x",
-+ d, d->state, d->v24_sig);
-+
-+ *v24_sig = d->v24_sig;
-+ return 0;
-+}
-+
-+/* ---- RFCOMM sessions ---- */
-+struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state)
-+{
-+ struct rfcomm_session *s = kmalloc(sizeof(*s), GFP_KERNEL);
-+ if (!s)
-+ return NULL;
-+ memset(s, 0, sizeof(*s));
-+
-+ BT_DBG("session %p sock %p", s, sock);
-+
-+ INIT_LIST_HEAD(&s->dlcs);
-+ s->state = state;
-+ s->sock = sock;
-+
-+ s->mtu = RFCOMM_DEFAULT_MTU;
-+ s->cfc = RFCOMM_CFC_UNKNOWN;
-+
-+ list_add(&s->list, &session_list);
-+
-+ /* Do not increment module usage count for listeting sessions.
-+ * Otherwise we won't be able to unload the module. */
-+ if (state != BT_LISTEN)
-+ MOD_INC_USE_COUNT;
-+ return s;
-+}
-+
-+void rfcomm_session_del(struct rfcomm_session *s)
-+{
-+ int state = s->state;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_del(&s->list);
-+
-+ if (state == BT_CONNECTED)
-+ rfcomm_send_disc(s, 0);
-+
-+ sock_release(s->sock);
-+ kfree(s);
-+
-+ if (state != BT_LISTEN)
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst)
-+{
-+ struct rfcomm_session *s;
-+ struct list_head *p, *n;
-+ struct bluez_pinfo *pi;
-+ list_for_each_safe(p, n, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ pi = bluez_pi(s->sock->sk);
-+
-+ if ((!bacmp(src, BDADDR_ANY) || !bacmp(&pi->src, src)) &&
-+ !bacmp(&pi->dst, dst))
-+ return s;
-+ }
-+ return NULL;
-+}
-+
-+void rfcomm_session_close(struct rfcomm_session *s, int err)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld err %d", s, s->state, err);
-+
-+ rfcomm_session_hold(s);
-+
-+ s->state = BT_CLOSED;
-+
-+ /* Close all dlcs */
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ }
-+
-+ rfcomm_session_put(s);
-+}
-+
-+struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err)
-+{
-+ struct rfcomm_session *s = NULL;
-+ struct sockaddr_l2 addr;
-+ struct l2cap_options opts;
-+ struct socket *sock;
-+ int size;
-+
-+ BT_DBG("%s %s", batostr(src), batostr(dst));
-+
-+ *err = rfcomm_l2sock_create(&sock);
-+ if (*err < 0)
-+ return NULL;
-+
-+ bacpy(&addr.l2_bdaddr, src);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = 0;
-+ *err = sock->ops->bind(sock, (struct sockaddr *) &addr, sizeof(addr));
-+ if (*err < 0)
-+ goto failed;
-+
-+ /* Set L2CAP options */
-+ size = sizeof(opts);
-+ sock->ops->getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, &size);
-+
-+ opts.imtu = RFCOMM_MAX_L2CAP_MTU;
-+ sock->ops->setsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, size);
-+
-+ s = rfcomm_session_add(sock, BT_BOUND);
-+ if (!s) {
-+ *err = -ENOMEM;
-+ goto failed;
-+ }
-+
-+ s->initiator = 1;
-+
-+ bacpy(&addr.l2_bdaddr, dst);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = htobs(RFCOMM_PSM);
-+ *err = sock->ops->connect(sock, (struct sockaddr *) &addr, sizeof(addr), O_NONBLOCK);
-+ if (*err == 0 || *err == -EAGAIN)
-+ return s;
-+
-+ rfcomm_session_del(s);
-+ return NULL;
-+
-+failed:
-+ sock_release(sock);
-+ return NULL;
-+}
-+
-+void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst)
-+{
-+ struct sock *sk = s->sock->sk;
-+ if (src)
-+ bacpy(src, &bluez_pi(sk)->src);
-+ if (dst)
-+ bacpy(dst, &bluez_pi(sk)->dst);
-+}
-+
-+/* ---- RFCOMM frame sending ---- */
-+static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len)
-+{
-+ struct socket *sock = s->sock;
-+ struct iovec iv = { data, len };
-+ struct msghdr msg;
-+ int err;
-+
-+ BT_DBG("session %p len %d", s, len);
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 1;
-+ msg.msg_iov = &iv;
-+
-+ err = sock->ops->sendmsg(sock, &msg, len, 0);
-+ return err;
-+}
-+
-+static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_SABM, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_ua(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(!s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_UA, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_DISC, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_queue_disc(struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_cmd *cmd;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("dlc %p dlci %d", d, d->dlci);
-+
-+ skb = alloc_skb(sizeof(*cmd), GFP_KERNEL);
-+ if (!skb)
-+ return -ENOMEM;
-+
-+ cmd = (void *) __skb_put(skb, sizeof(*cmd));
-+ cmd->addr = d->addr;
-+ cmd->ctrl = __ctrl(RFCOMM_DISC, 1);
-+ cmd->len = __len8(0);
-+ cmd->fcs = __fcs2((u8 *) cmd);
-+
-+ skb_queue_tail(&d->tx_queue, skb);
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+ return 0;
-+}
-+
-+static int rfcomm_send_dm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(!s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_DM, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d type %d", s, cr, type);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + 1);
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_NSC);
-+ mcc->len = __len8(1);
-+
-+ /* Type that we didn't like */
-+ *ptr = __mcc_type(cr, type); ptr++;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_pn *pn;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d dlci %d mtu %d", s, cr, d->dlci, d->mtu);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*pn));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_PN);
-+ mcc->len = __len8(sizeof(*pn));
-+
-+ pn = (void *) ptr; ptr += sizeof(*pn);
-+ pn->dlci = d->dlci;
-+ pn->priority = d->priority;
-+ pn->ack_timer = 0;
-+ pn->max_retrans = 0;
-+
-+ if (s->cfc) {
-+ pn->flow_ctrl = cr ? 0xf0 : 0xe0;
-+ pn->credits = RFCOMM_DEFAULT_CREDITS;
-+ } else {
-+ pn->flow_ctrl = 0;
-+ pn->credits = 0;
-+ }
-+
-+ pn->mtu = htobs(d->mtu);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci,
-+ u8 bit_rate, u8 data_bits, u8 stop_bits,
-+ u8 parity, u8 flow_ctrl_settings,
-+ u8 xon_char, u8 xoff_char, u16 param_mask)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_rpn *rpn;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d dlci %d bit_r 0x%x data_b 0x%x stop_b 0x%x parity 0x%x"
-+ "flwc_s 0x%x xon_c 0x%x xoff_c 0x%x p_mask 0x%x",
-+ s, cr, dlci, bit_rate, data_bits, stop_bits, parity,
-+ flow_ctrl_settings, xon_char, xoff_char, param_mask);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*rpn));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_RPN);
-+ mcc->len = __len8(sizeof(*rpn));
-+
-+ rpn = (void *) ptr; ptr += sizeof(*rpn);
-+ rpn->dlci = __addr(1, dlci);
-+ rpn->bit_rate = bit_rate;
-+ rpn->line_settings = __rpn_line_settings(data_bits, stop_bits, parity);
-+ rpn->flow_ctrl = flow_ctrl_settings;
-+ rpn->xon_char = xon_char;
-+ rpn->xoff_char = xoff_char;
-+ rpn->param_mask = param_mask;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_rls(struct rfcomm_session *s, int cr, u8 dlci, u8 status)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_rls *rls;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d status 0x%x", s, cr, status);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*rls));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_RLS);
-+ mcc->len = __len8(sizeof(*rls));
-+
-+ rls = (void *) ptr; ptr += sizeof(*rls);
-+ rls->dlci = __addr(1, dlci);
-+ rls->status = status;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_msc *msc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d v24 0x%x", s, cr, v24_sig);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*msc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_MSC);
-+ mcc->len = __len8(sizeof(*msc));
-+
-+ msc = (void *) ptr; ptr += sizeof(*msc);
-+ msc->dlci = __addr(1, dlci);
-+ msc->v24_sig = v24_sig | 0x01;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_fcoff(struct rfcomm_session *s, int cr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_FCOFF);
-+ mcc->len = __len8(0);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_fcon(struct rfcomm_session *s, int cr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_FCON);
-+ mcc->len = __len8(0);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len)
-+{
-+ struct socket *sock = s->sock;
-+ struct iovec iv[3];
-+ struct msghdr msg;
-+ unsigned char hdr[5], crc[1];
-+
-+ if (len > 125)
-+ return -EINVAL;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr[0] = __addr(s->initiator, 0);
-+ hdr[1] = __ctrl(RFCOMM_UIH, 0);
-+ hdr[2] = 0x01 | ((len + 2) << 1);
-+ hdr[3] = 0x01 | ((cr & 0x01) << 1) | (RFCOMM_TEST << 2);
-+ hdr[4] = 0x01 | (len << 1);
-+
-+ crc[0] = __fcs(hdr);
-+
-+ iv[0].iov_base = hdr;
-+ iv[0].iov_len = 5;
-+ iv[1].iov_base = pattern;
-+ iv[1].iov_len = len;
-+ iv[2].iov_base = crc;
-+ iv[2].iov_len = 1;
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 3;
-+ msg.msg_iov = iv;
-+ return sock->ops->sendmsg(sock, &msg, 6 + len, 0);
-+}
-+
-+static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits)
-+{
-+ struct rfcomm_hdr *hdr;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p addr %d credits %d", s, addr, credits);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = addr;
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 1);
-+ hdr->len = __len8(0);
-+
-+ *ptr = credits; ptr++;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static void rfcomm_make_uih(struct sk_buff *skb, u8 addr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ int len = skb->len;
-+ u8 *crc;
-+
-+ if (len > 127) {
-+ hdr = (void *) skb_push(skb, 4);
-+ put_unaligned(htobs(__len16(len)), (u16 *) &hdr->len);
-+ } else {
-+ hdr = (void *) skb_push(skb, 3);
-+ hdr->len = __len8(len);
-+ }
-+ hdr->addr = addr;
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+
-+ crc = skb_put(skb, 1);
-+ *crc = __fcs((void *) hdr);
-+}
-+
-+/* ---- RFCOMM frame reception ---- */
-+static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci)
-+{
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ /* Data channel */
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (!d) {
-+ rfcomm_send_dm(s, dlci);
-+ return 0;
-+ }
-+
-+ switch (d->state) {
-+ case BT_CONNECT:
-+ rfcomm_dlc_clear_timer(d);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ break;
-+
-+ case BT_DISCONN:
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, 0);
-+ break;
-+ }
-+ } else {
-+ /* Control channel */
-+ switch (s->state) {
-+ case BT_CONNECT:
-+ s->state = BT_CONNECTED;
-+ rfcomm_process_connect(s);
-+ break;
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_dm(struct rfcomm_session *s, u8 dlci)
-+{
-+ int err = 0;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ /* Data DLC */
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (d->state == BT_CONNECT || d->state == BT_CONFIG)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ }
-+ } else {
-+ if (s->state == BT_CONNECT)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, err);
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_disc(struct rfcomm_session *s, u8 dlci)
-+{
-+ int err = 0;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ rfcomm_send_ua(s, dlci);
-+
-+ if (d->state == BT_CONNECT || d->state == BT_CONFIG)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ } else
-+ rfcomm_send_dm(s, dlci);
-+
-+ } else {
-+ rfcomm_send_ua(s, 0);
-+
-+ if (s->state == BT_CONNECT)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, err);
-+ }
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_sabm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_dlc *d;
-+ u8 channel;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (!dlci) {
-+ rfcomm_send_ua(s, 0);
-+
-+ if (s->state == BT_OPEN) {
-+ s->state = BT_CONNECTED;
-+ rfcomm_process_connect(s);
-+ }
-+ return 0;
-+ }
-+
-+ /* Check if DLC exists */
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (d->state == BT_OPEN) {
-+ /* DLC was previously opened by PN request */
-+ rfcomm_send_ua(s, dlci);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ }
-+ return 0;
-+ }
-+
-+ /* Notify socket layer about incomming connection */
-+ channel = __srv_channel(dlci);
-+ if (rfcomm_connect_ind(s, channel, &d)) {
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ rfcomm_dlc_link(s, d);
-+
-+ rfcomm_send_ua(s, dlci);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ } else {
-+ rfcomm_send_dm(s, dlci);
-+ }
-+
-+ return 0;
-+}
-+
-+static int rfcomm_apply_pn(struct rfcomm_dlc *d, int cr, struct rfcomm_pn *pn)
-+{
-+ struct rfcomm_session *s = d->session;
-+
-+ BT_DBG("dlc %p state %ld dlci %d mtu %d fc 0x%x credits %d",
-+ d, d->state, d->dlci, pn->mtu, pn->flow_ctrl, pn->credits);
-+
-+ if (pn->flow_ctrl == 0xf0 || pn->flow_ctrl == 0xe0) {
-+ d->cfc = s->cfc = RFCOMM_CFC_ENABLED;
-+ d->tx_credits = pn->credits;
-+ } else {
-+ d->cfc = s->cfc = RFCOMM_CFC_DISABLED;
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ }
-+
-+ d->priority = pn->priority;
-+
-+ d->mtu = s->mtu = btohs(pn->mtu);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_pn(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_pn *pn = (void *) skb->data;
-+ struct rfcomm_dlc *d;
-+ u8 dlci = pn->dlci;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (!dlci)
-+ return 0;
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (cr) {
-+ /* PN request */
-+ rfcomm_apply_pn(d, cr, pn);
-+ rfcomm_send_pn(s, 0, d);
-+ } else {
-+ /* PN response */
-+ switch (d->state) {
-+ case BT_CONFIG:
-+ rfcomm_apply_pn(d, cr, pn);
-+
-+ d->state = BT_CONNECT;
-+ rfcomm_send_sabm(s, d->dlci);
-+ break;
-+ }
-+ }
-+ } else {
-+ u8 channel = __srv_channel(dlci);
-+
-+ if (!cr)
-+ return 0;
-+
-+ /* PN request for non existing DLC.
-+ * Assume incomming connection. */
-+ if (rfcomm_connect_ind(s, channel, &d)) {
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ rfcomm_dlc_link(s, d);
-+
-+ rfcomm_apply_pn(d, cr, pn);
-+
-+ d->state = BT_OPEN;
-+ rfcomm_send_pn(s, 0, d);
-+ } else {
-+ rfcomm_send_dm(s, dlci);
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_rpn(struct rfcomm_session *s, int cr, int len, struct sk_buff *skb)
-+{
-+ struct rfcomm_rpn *rpn = (void *) skb->data;
-+ u8 dlci = __get_dlci(rpn->dlci);
-+
-+ u8 bit_rate = 0;
-+ u8 data_bits = 0;
-+ u8 stop_bits = 0;
-+ u8 parity = 0;
-+ u8 flow_ctrl = 0;
-+ u8 xon_char = 0;
-+ u8 xoff_char = 0;
-+ u16 rpn_mask = RFCOMM_RPN_PM_ALL;
-+
-+ BT_DBG("dlci %d cr %d len 0x%x bitr 0x%x line 0x%x flow 0x%x xonc 0x%x xoffc 0x%x pm 0x%x",
-+ dlci, cr, len, rpn->bit_rate, rpn->line_settings, rpn->flow_ctrl,
-+ rpn->xon_char, rpn->xoff_char, rpn->param_mask);
-+
-+ if (!cr)
-+ return 0;
-+
-+ if (len == 1) {
-+ /* request: return default setting */
-+ bit_rate = RFCOMM_RPN_BR_115200;
-+ data_bits = RFCOMM_RPN_DATA_8;
-+ stop_bits = RFCOMM_RPN_STOP_1;
-+ parity = RFCOMM_RPN_PARITY_NONE;
-+ flow_ctrl = RFCOMM_RPN_FLOW_NONE;
-+ xon_char = RFCOMM_RPN_XON_CHAR;
-+ xoff_char = RFCOMM_RPN_XOFF_CHAR;
-+
-+ goto rpn_out;
-+ }
-+ /* check for sane values: ignore/accept bit_rate, 8 bits, 1 stop bit, no parity,
-+ no flow control lines, normal XON/XOFF chars */
-+ if (rpn->param_mask & RFCOMM_RPN_PM_BITRATE) {
-+ bit_rate = rpn->bit_rate;
-+ if (bit_rate != RFCOMM_RPN_BR_115200) {
-+ BT_DBG("RPN bit rate mismatch 0x%x", bit_rate);
-+ bit_rate = RFCOMM_RPN_BR_115200;
-+ rpn_mask ^= RFCOMM_RPN_PM_BITRATE;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_DATA) {
-+ data_bits = __get_rpn_data_bits(rpn->line_settings);
-+ if (data_bits != RFCOMM_RPN_DATA_8) {
-+ BT_DBG("RPN data bits mismatch 0x%x", data_bits);
-+ data_bits = RFCOMM_RPN_DATA_8;
-+ rpn_mask ^= RFCOMM_RPN_PM_DATA;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_STOP) {
-+ stop_bits = __get_rpn_stop_bits(rpn->line_settings);
-+ if (stop_bits != RFCOMM_RPN_STOP_1) {
-+ BT_DBG("RPN stop bits mismatch 0x%x", stop_bits);
-+ stop_bits = RFCOMM_RPN_STOP_1;
-+ rpn_mask ^= RFCOMM_RPN_PM_STOP;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_PARITY) {
-+ parity = __get_rpn_parity(rpn->line_settings);
-+ if (parity != RFCOMM_RPN_PARITY_NONE) {
-+ BT_DBG("RPN parity mismatch 0x%x", parity);
-+ parity = RFCOMM_RPN_PARITY_NONE;
-+ rpn_mask ^= RFCOMM_RPN_PM_PARITY;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_FLOW) {
-+ flow_ctrl = rpn->flow_ctrl;
-+ if (flow_ctrl != RFCOMM_RPN_FLOW_NONE) {
-+ BT_DBG("RPN flow ctrl mismatch 0x%x", flow_ctrl);
-+ flow_ctrl = RFCOMM_RPN_FLOW_NONE;
-+ rpn_mask ^= RFCOMM_RPN_PM_FLOW;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_XON) {
-+ xon_char = rpn->xon_char;
-+ if (xon_char != RFCOMM_RPN_XON_CHAR) {
-+ BT_DBG("RPN XON char mismatch 0x%x", xon_char);
-+ xon_char = RFCOMM_RPN_XON_CHAR;
-+ rpn_mask ^= RFCOMM_RPN_PM_XON;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_XOFF) {
-+ xoff_char = rpn->xoff_char;
-+ if (xoff_char != RFCOMM_RPN_XOFF_CHAR) {
-+ BT_DBG("RPN XOFF char mismatch 0x%x", xoff_char);
-+ xoff_char = RFCOMM_RPN_XOFF_CHAR;
-+ rpn_mask ^= RFCOMM_RPN_PM_XOFF;
-+ }
-+ }
-+
-+rpn_out:
-+ rfcomm_send_rpn(s, 0, dlci,
-+ bit_rate, data_bits, stop_bits, parity, flow_ctrl,
-+ xon_char, xoff_char, rpn_mask);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_rls(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_rls *rls = (void *) skb->data;
-+ u8 dlci = __get_dlci(rls->dlci);
-+
-+ BT_DBG("dlci %d cr %d status 0x%x", dlci, cr, rls->status);
-+
-+ if (!cr)
-+ return 0;
-+
-+ /* FIXME: We should probably do something with this
-+ information here. But for now it's sufficient just
-+ to reply -- Bluetooth 1.1 says it's mandatory to
-+ recognise and respond to RLS */
-+
-+ rfcomm_send_rls(s, 0, dlci, rls->status);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_msc(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_msc *msc = (void *) skb->data;
-+ struct rfcomm_dlc *d;
-+ u8 dlci = __get_dlci(msc->dlci);
-+
-+ BT_DBG("dlci %d cr %d v24 0x%x", dlci, cr, msc->v24_sig);
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (!d)
-+ return 0;
-+
-+ if (cr) {
-+ if (msc->v24_sig & RFCOMM_V24_FC && !d->cfc)
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ else
-+ clear_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+
-+ rfcomm_dlc_lock(d);
-+ if (d->modem_status)
-+ d->modem_status(d, msc->v24_sig);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 0, dlci, msc->v24_sig);
-+
-+ d->mscex |= RFCOMM_MSCEX_RX;
-+ } else
-+ d->mscex |= RFCOMM_MSCEX_TX;
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_mcc(struct rfcomm_session *s, struct sk_buff *skb)
-+{
-+ struct rfcomm_mcc *mcc = (void *) skb->data;
-+ u8 type, cr, len;
-+
-+ cr = __test_cr(mcc->type);
-+ type = __get_mcc_type(mcc->type);
-+ len = __get_mcc_len(mcc->len);
-+
-+ BT_DBG("%p type 0x%x cr %d", s, type, cr);
-+
-+ skb_pull(skb, 2);
-+
-+ switch (type) {
-+ case RFCOMM_PN:
-+ rfcomm_recv_pn(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_RPN:
-+ rfcomm_recv_rpn(s, cr, len, skb);
-+ break;
-+
-+ case RFCOMM_RLS:
-+ rfcomm_recv_rls(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_MSC:
-+ rfcomm_recv_msc(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_FCOFF:
-+ if (cr) {
-+ set_bit(RFCOMM_TX_THROTTLED, &s->flags);
-+ rfcomm_send_fcoff(s, 0);
-+ }
-+ break;
-+
-+ case RFCOMM_FCON:
-+ if (cr) {
-+ clear_bit(RFCOMM_TX_THROTTLED, &s->flags);
-+ rfcomm_send_fcon(s, 0);
-+ }
-+ break;
-+
-+ case RFCOMM_TEST:
-+ if (cr)
-+ rfcomm_send_test(s, 0, skb->data, skb->len);
-+ break;
-+
-+ case RFCOMM_NSC:
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown control type 0x%02x", type);
-+ rfcomm_send_nsc(s, cr, type);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_data(struct rfcomm_session *s, u8 dlci, int pf, struct sk_buff *skb)
-+{
-+ struct rfcomm_dlc *d;
-+
-+ BT_DBG("session %p state %ld dlci %d pf %d", s, s->state, dlci, pf);
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (!d) {
-+ rfcomm_send_dm(s, dlci);
-+ goto drop;
-+ }
-+
-+ if (pf && d->cfc) {
-+ u8 credits = *(u8 *) skb->data; skb_pull(skb, 1);
-+
-+ d->tx_credits += credits;
-+ if (d->tx_credits)
-+ clear_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ }
-+
-+ if (skb->len && d->state == BT_CONNECTED) {
-+ rfcomm_dlc_lock(d);
-+ d->rx_credits--;
-+ d->data_ready(d, skb);
-+ rfcomm_dlc_unlock(d);
-+ return 0;
-+ }
-+
-+drop:
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static int rfcomm_recv_frame(struct rfcomm_session *s, struct sk_buff *skb)
-+{
-+ struct rfcomm_hdr *hdr = (void *) skb->data;
-+ u8 type, dlci, fcs;
-+
-+ dlci = __get_dlci(hdr->addr);
-+ type = __get_type(hdr->ctrl);
-+
-+ /* Trim FCS */
-+ skb->len--; skb->tail--;
-+ fcs = *(u8 *) skb->tail;
-+
-+ if (__check_fcs(skb->data, type, fcs)) {
-+ BT_ERR("bad checksum in packet");
-+ kfree_skb(skb);
-+ return -EILSEQ;
-+ }
-+
-+ if (__test_ea(hdr->len))
-+ skb_pull(skb, 3);
-+ else
-+ skb_pull(skb, 4);
-+
-+ switch (type) {
-+ case RFCOMM_SABM:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_sabm(s, dlci);
-+ break;
-+
-+ case RFCOMM_DISC:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_disc(s, dlci);
-+ break;
-+
-+ case RFCOMM_UA:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_ua(s, dlci);
-+ break;
-+
-+ case RFCOMM_DM:
-+ rfcomm_recv_dm(s, dlci);
-+ break;
-+
-+ case RFCOMM_UIH:
-+ if (dlci)
-+ return rfcomm_recv_data(s, dlci, __test_pf(hdr->ctrl), skb);
-+
-+ rfcomm_recv_mcc(s, skb);
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown packet type 0x%02x\n", type);
-+ break;
-+ }
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+/* ---- Connection and data processing ---- */
-+
-+static void rfcomm_process_connect(struct rfcomm_session *s)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (d->state == BT_CONFIG) {
-+ d->mtu = s->mtu;
-+ rfcomm_send_pn(s, 1, d);
-+ }
-+ }
-+}
-+
-+/* Send data queued for the DLC.
-+ * Return number of frames left in the queue.
-+ */
-+static inline int rfcomm_process_tx(struct rfcomm_dlc *d)
-+{
-+ struct sk_buff *skb;
-+ int err;
-+
-+ BT_DBG("dlc %p state %ld cfc %d rx_credits %d tx_credits %d",
-+ d, d->state, d->cfc, d->rx_credits, d->tx_credits);
-+
-+ /* Send pending MSC */
-+ if (test_and_clear_bit(RFCOMM_MSC_PENDING, &d->flags))
-+ rfcomm_send_msc(d->session, 1, d->dlci, d->v24_sig);
-+
-+ if (d->cfc) {
-+ /* CFC enabled.
-+ * Give them some credits */
-+ if (!test_bit(RFCOMM_RX_THROTTLED, &d->flags) &&
-+ d->rx_credits <= (d->cfc >> 2)) {
-+ rfcomm_send_credits(d->session, d->addr, d->cfc - d->rx_credits);
-+ d->rx_credits = d->cfc;
-+ }
-+ } else {
-+ /* CFC disabled.
-+ * Give ourselves some credits */
-+ d->tx_credits = 5;
-+ }
-+
-+ if (test_bit(RFCOMM_TX_THROTTLED, &d->flags))
-+ return skb_queue_len(&d->tx_queue);
-+
-+ while (d->tx_credits && (skb = skb_dequeue(&d->tx_queue))) {
-+ err = rfcomm_send_frame(d->session, skb->data, skb->len);
-+ if (err < 0) {
-+ skb_queue_head(&d->tx_queue, skb);
-+ break;
-+ }
-+ kfree_skb(skb);
-+ d->tx_credits--;
-+ }
-+
-+ if (d->cfc && !d->tx_credits) {
-+ /* We're out of TX credits.
-+ * Set TX_THROTTLED flag to avoid unnesary wakeups by dlc_send. */
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ }
-+
-+ return skb_queue_len(&d->tx_queue);
-+}
-+
-+static inline void rfcomm_process_dlcs(struct rfcomm_session *s)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (test_bit(RFCOMM_TIMED_OUT, &d->flags)) {
-+ __rfcomm_dlc_close(d, ETIMEDOUT);
-+ continue;
-+ }
-+
-+ if (test_bit(RFCOMM_TX_THROTTLED, &s->flags))
-+ continue;
-+
-+ if ((d->state == BT_CONNECTED || d->state == BT_DISCONN) &&
-+ d->mscex == RFCOMM_MSCEX_OK)
-+ rfcomm_process_tx(d);
-+ }
-+}
-+
-+static inline void rfcomm_process_rx(struct rfcomm_session *s)
-+{
-+ struct socket *sock = s->sock;
-+ struct sock *sk = sock->sk;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("session %p state %ld qlen %d", s, s->state, skb_queue_len(&sk->receive_queue));
-+
-+ /* Get data directly from socket receive queue without copying it. */
-+ while ((skb = skb_dequeue(&sk->receive_queue))) {
-+ skb_orphan(skb);
-+ rfcomm_recv_frame(s, skb);
-+ }
-+
-+ if (sk->state == BT_CLOSED) {
-+ if (!s->initiator)
-+ rfcomm_session_put(s);
-+
-+ rfcomm_session_close(s, sk->err);
-+ }
-+}
-+
-+static inline void rfcomm_accept_connection(struct rfcomm_session *s)
-+{
-+ struct socket *sock = s->sock, *nsock;
-+ int err;
-+
-+ /* Fast check for a new connection.
-+ * Avoids unnesesary socket allocations. */
-+ if (list_empty(&bluez_pi(sock->sk)->accept_q))
-+ return;
-+
-+ BT_DBG("session %p", s);
-+
-+ nsock = sock_alloc();
-+ if (!nsock)
-+ return;
-+
-+ nsock->type = sock->type;
-+ nsock->ops = sock->ops;
-+
-+ err = sock->ops->accept(sock, nsock, O_NONBLOCK);
-+ if (err < 0) {
-+ sock_release(nsock);
-+ return;
-+ }
-+
-+ /* Set our callbacks */
-+ nsock->sk->data_ready = rfcomm_l2data_ready;
-+ nsock->sk->state_change = rfcomm_l2state_change;
-+
-+ s = rfcomm_session_add(nsock, BT_OPEN);
-+ if (s) {
-+ rfcomm_session_hold(s);
-+ rfcomm_schedule(RFCOMM_SCHED_RX);
-+ } else
-+ sock_release(nsock);
-+}
-+
-+static inline void rfcomm_check_connection(struct rfcomm_session *s)
-+{
-+ struct sock *sk = s->sock->sk;
-+
-+ BT_DBG("%p state %ld", s, s->state);
-+
-+ switch(sk->state) {
-+ case BT_CONNECTED:
-+ s->state = BT_CONNECT;
-+
-+ /* We can adjust MTU on outgoing sessions.
-+ * L2CAP MTU minus UIH header and FCS. */
-+ s->mtu = min(l2cap_pi(sk)->omtu, l2cap_pi(sk)->imtu) - 5;
-+
-+ rfcomm_send_sabm(s, 0);
-+ break;
-+
-+ case BT_CLOSED:
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, sk->err);
-+ break;
-+ }
-+}
-+
-+static inline void rfcomm_process_sessions(void)
-+{
-+ struct list_head *p, *n;
-+
-+ rfcomm_lock();
-+
-+ list_for_each_safe(p, n, &session_list) {
-+ struct rfcomm_session *s;
-+ s = list_entry(p, struct rfcomm_session, list);
-+
-+ if (s->state == BT_LISTEN) {
-+ rfcomm_accept_connection(s);
-+ continue;
-+ }
-+
-+ rfcomm_session_hold(s);
-+
-+ switch (s->state) {
-+ case BT_BOUND:
-+ rfcomm_check_connection(s);
-+ break;
-+
-+ default:
-+ rfcomm_process_rx(s);
-+ break;
-+ }
-+
-+ rfcomm_process_dlcs(s);
-+
-+ rfcomm_session_put(s);
-+ }
-+
-+ rfcomm_unlock();
-+}
-+
-+static void rfcomm_worker(void)
-+{
-+ BT_DBG("");
-+
-+ daemonize(); reparent_to_init();
-+ set_fs(KERNEL_DS);
-+
-+ while (!atomic_read(&terminate)) {
-+ BT_DBG("worker loop event 0x%lx", rfcomm_event);
-+
-+ if (!test_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event)) {
-+ /* No pending events. Let's sleep.
-+ * Incomming connections and data will wake us up. */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule();
-+ }
-+
-+ /* Process stuff */
-+ clear_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
-+ rfcomm_process_sessions();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ return;
-+}
-+
-+static int rfcomm_add_listener(bdaddr_t *ba)
-+{
-+ struct sockaddr_l2 addr;
-+ struct l2cap_options opts;
-+ struct socket *sock;
-+ struct rfcomm_session *s;
-+ int size, err = 0;
-+
-+ /* Create socket */
-+ err = rfcomm_l2sock_create(&sock);
-+ if (err < 0) {
-+ BT_ERR("Create socket failed %d", err);
-+ return err;
-+ }
-+
-+ /* Bind socket */
-+ bacpy(&addr.l2_bdaddr, ba);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = htobs(RFCOMM_PSM);
-+ err = sock->ops->bind(sock, (struct sockaddr *) &addr, sizeof(addr));
-+ if (err < 0) {
-+ BT_ERR("Bind failed %d", err);
-+ goto failed;
-+ }
-+
-+ /* Set L2CAP options */
-+ size = sizeof(opts);
-+ sock->ops->getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, &size);
-+
-+ opts.imtu = RFCOMM_MAX_L2CAP_MTU;
-+ sock->ops->setsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, size);
-+
-+ /* Start listening on the socket */
-+ err = sock->ops->listen(sock, 10);
-+ if (err) {
-+ BT_ERR("Listen failed %d", err);
-+ goto failed;
-+ }
-+
-+ /* Add listening session */
-+ s = rfcomm_session_add(sock, BT_LISTEN);
-+ if (!s)
-+ goto failed;
-+
-+ rfcomm_session_hold(s);
-+ return 0;
-+failed:
-+ sock_release(sock);
-+ return err;
-+}
-+
-+static void rfcomm_kill_listener(void)
-+{
-+ struct rfcomm_session *s;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("");
-+
-+ list_for_each_safe(p, n, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ rfcomm_session_del(s);
-+ }
-+}
-+
-+static int rfcomm_run(void *unused)
-+{
-+ rfcomm_thread = current;
-+
-+ atomic_inc(&running);
-+
-+ daemonize(); reparent_to_init();
-+
-+ sigfillset(&current->blocked);
-+ set_fs(KERNEL_DS);
-+
-+ sprintf(current->comm, "krfcommd");
-+
-+ BT_DBG("");
-+
-+ rfcomm_add_listener(BDADDR_ANY);
-+
-+ rfcomm_worker();
-+
-+ rfcomm_kill_listener();
-+
-+ atomic_dec(&running);
-+ return 0;
-+}
-+
-+/* ---- Proc fs support ---- */
-+static int rfcomm_dlc_dump(char *buf)
-+{
-+ struct rfcomm_session *s;
-+ struct sock *sk;
-+ struct list_head *p, *pp;
-+ char *ptr = buf;
-+
-+ rfcomm_lock();
-+
-+ list_for_each(p, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ sk = s->sock->sk;
-+
-+ list_for_each(pp, &s->dlcs) {
-+ struct rfcomm_dlc *d;
-+ d = list_entry(pp, struct rfcomm_dlc, list);
-+
-+ ptr += sprintf(ptr, "dlc %s %s %ld %d %d %d %d\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ d->state, d->dlci, d->mtu, d->rx_credits, d->tx_credits);
-+ }
-+ }
-+
-+ rfcomm_unlock();
-+
-+ return ptr - buf;
-+}
-+
-+extern int rfcomm_sock_dump(char *buf);
-+
-+static int rfcomm_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
-+{
-+ char *ptr = buf;
-+ int len;
-+
-+ BT_DBG("count %d, offset %ld", count, offset);
-+
-+ ptr += rfcomm_dlc_dump(ptr);
-+ ptr += rfcomm_sock_dump(ptr);
-+ len = ptr - buf;
-+
-+ if (len <= count + offset)
-+ *eof = 1;
-+
-+ *start = buf + offset;
-+ len -= offset;
-+
-+ if (len > count)
-+ len = count;
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+
-+/* ---- Initialization ---- */
-+int __init rfcomm_init(void)
-+{
-+ l2cap_load();
-+
-+ kernel_thread(rfcomm_run, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+
-+ rfcomm_init_sockets();
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ rfcomm_init_ttys();
-+#endif
-+
-+ create_proc_read_entry("bluetooth/rfcomm", 0, 0, rfcomm_read_proc, NULL);
-+
-+ BT_INFO("BlueZ RFCOMM ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>");
-+ return 0;
-+}
-+
-+void rfcomm_cleanup(void)
-+{
-+ /* Terminate working thread.
-+ * ie. Set terminate flag and wake it up */
-+ atomic_inc(&terminate);
-+ rfcomm_schedule(RFCOMM_SCHED_STATE);
-+
-+ /* Wait until thread is running */
-+ while (atomic_read(&running))
-+ schedule();
-+
-+ remove_proc_entry("bluetooth/rfcomm", NULL);
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ rfcomm_cleanup_ttys();
-+#endif
-+
-+ rfcomm_cleanup_sockets();
-+ return;
-+}
-+
-+module_init(rfcomm_init);
-+module_exit(rfcomm_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ RFCOMM ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -Nur c3000_pre/linux/net/bluetooth/rfcomm/crc.c c3000_work/linux/net/bluetooth/rfcomm/crc.c
---- c3000_pre/linux/net/bluetooth/rfcomm/crc.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/rfcomm/crc.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,71 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM FCS calculation.
-+ *
-+ * $Id: crc.c,v 1.2 2002/09/21 09:54:32 holtmann Exp $
-+ */
-+
-+/* reversed, 8-bit, poly=0x07 */
-+unsigned char rfcomm_crc_table[256] = {
-+ 0x00, 0x91, 0xe3, 0x72, 0x07, 0x96, 0xe4, 0x75,
-+ 0x0e, 0x9f, 0xed, 0x7c, 0x09, 0x98, 0xea, 0x7b,
-+ 0x1c, 0x8d, 0xff, 0x6e, 0x1b, 0x8a, 0xf8, 0x69,
-+ 0x12, 0x83, 0xf1, 0x60, 0x15, 0x84, 0xf6, 0x67,
-+
-+ 0x38, 0xa9, 0xdb, 0x4a, 0x3f, 0xae, 0xdc, 0x4d,
-+ 0x36, 0xa7, 0xd5, 0x44, 0x31, 0xa0, 0xd2, 0x43,
-+ 0x24, 0xb5, 0xc7, 0x56, 0x23, 0xb2, 0xc0, 0x51,
-+ 0x2a, 0xbb, 0xc9, 0x58, 0x2d, 0xbc, 0xce, 0x5f,
-+
-+ 0x70, 0xe1, 0x93, 0x02, 0x77, 0xe6, 0x94, 0x05,
-+ 0x7e, 0xef, 0x9d, 0x0c, 0x79, 0xe8, 0x9a, 0x0b,
-+ 0x6c, 0xfd, 0x8f, 0x1e, 0x6b, 0xfa, 0x88, 0x19,
-+ 0x62, 0xf3, 0x81, 0x10, 0x65, 0xf4, 0x86, 0x17,
-+
-+ 0x48, 0xd9, 0xab, 0x3a, 0x4f, 0xde, 0xac, 0x3d,
-+ 0x46, 0xd7, 0xa5, 0x34, 0x41, 0xd0, 0xa2, 0x33,
-+ 0x54, 0xc5, 0xb7, 0x26, 0x53, 0xc2, 0xb0, 0x21,
-+ 0x5a, 0xcb, 0xb9, 0x28, 0x5d, 0xcc, 0xbe, 0x2f,
-+
-+ 0xe0, 0x71, 0x03, 0x92, 0xe7, 0x76, 0x04, 0x95,
-+ 0xee, 0x7f, 0x0d, 0x9c, 0xe9, 0x78, 0x0a, 0x9b,
-+ 0xfc, 0x6d, 0x1f, 0x8e, 0xfb, 0x6a, 0x18, 0x89,
-+ 0xf2, 0x63, 0x11, 0x80, 0xf5, 0x64, 0x16, 0x87,
-+
-+ 0xd8, 0x49, 0x3b, 0xaa, 0xdf, 0x4e, 0x3c, 0xad,
-+ 0xd6, 0x47, 0x35, 0xa4, 0xd1, 0x40, 0x32, 0xa3,
-+ 0xc4, 0x55, 0x27, 0xb6, 0xc3, 0x52, 0x20, 0xb1,
-+ 0xca, 0x5b, 0x29, 0xb8, 0xcd, 0x5c, 0x2e, 0xbf,
-+
-+ 0x90, 0x01, 0x73, 0xe2, 0x97, 0x06, 0x74, 0xe5,
-+ 0x9e, 0x0f, 0x7d, 0xec, 0x99, 0x08, 0x7a, 0xeb,
-+ 0x8c, 0x1d, 0x6f, 0xfe, 0x8b, 0x1a, 0x68, 0xf9,
-+ 0x82, 0x13, 0x61, 0xf0, 0x85, 0x14, 0x66, 0xf7,
-+
-+ 0xa8, 0x39, 0x4b, 0xda, 0xaf, 0x3e, 0x4c, 0xdd,
-+ 0xa6, 0x37, 0x45, 0xd4, 0xa1, 0x30, 0x42, 0xd3,
-+ 0xb4, 0x25, 0x57, 0xc6, 0xb3, 0x22, 0x50, 0xc1,
-+ 0xba, 0x2b, 0x59, 0xc8, 0xbd, 0x2c, 0x5e, 0xcf
-+};
-diff -Nur c3000_pre/linux/net/bluetooth/rfcomm/sock.c c3000_work/linux/net/bluetooth/rfcomm/sock.c
---- c3000_pre/linux/net/bluetooth/rfcomm/sock.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/rfcomm/sock.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,847 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM sockets.
-+ *
-+ * $Id: sock.c,v 1.30 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/socket.h>
-+#include <linux/skbuff.h>
-+#include <linux/list.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+static struct proto_ops rfcomm_sock_ops;
-+
-+static struct bluez_sock_list rfcomm_sk_list = {
-+ lock: RW_LOCK_UNLOCKED
-+};
-+
-+static void rfcomm_sock_close(struct sock *sk);
-+static void rfcomm_sock_kill(struct sock *sk);
-+
-+/* ---- DLC callbacks ----
-+ *
-+ * called under rfcomm_dlc_lock()
-+ */
-+static void rfcomm_sk_data_ready(struct rfcomm_dlc *d, struct sk_buff *skb)
-+{
-+ struct sock *sk = d->owner;
-+ if (!sk)
-+ return;
-+
-+ atomic_add(skb->len, &sk->rmem_alloc);
-+ skb_queue_tail(&sk->receive_queue, skb);
-+ sk->data_ready(sk, skb->len);
-+
-+ if (atomic_read(&sk->rmem_alloc) >= sk->rcvbuf)
-+ rfcomm_dlc_throttle(d);
-+}
-+
-+static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err)
-+{
-+ struct sock *sk = d->owner, *parent;
-+ if (!sk)
-+ return;
-+
-+ BT_DBG("dlc %p state %ld err %d", d, d->state, err);
-+
-+ bh_lock_sock(sk);
-+
-+ if (err)
-+ sk->err = err;
-+ sk->state = d->state;
-+
-+ parent = bluez_pi(sk)->parent;
-+ if (!parent) {
-+ if (d->state == BT_CONNECTED)
-+ rfcomm_session_getaddr(d->session, &bluez_pi(sk)->src, NULL);
-+ sk->state_change(sk);
-+ } else
-+ parent->data_ready(parent, 0);
-+
-+ bh_unlock_sock(sk);
-+}
-+
-+/* ---- Socket functions ---- */
-+static struct sock *__rfcomm_get_sock_by_addr(u8 channel, bdaddr_t *src)
-+{
-+ struct sock *sk;
-+
-+ for (sk = rfcomm_sk_list.head; sk; sk = sk->next) {
-+ if (rfcomm_pi(sk)->channel == channel &&
-+ !bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+ }
-+
-+ return sk;
-+}
-+
-+/* Find socket with channel and source bdaddr.
-+ * Returns closest match.
-+ */
-+static struct sock *__rfcomm_get_sock_by_channel(int state, u8 channel, bdaddr_t *src)
-+{
-+ struct sock *sk, *sk1 = NULL;
-+
-+ for (sk = rfcomm_sk_list.head; sk; sk = sk->next) {
-+ if (state && sk->state != state)
-+ continue;
-+
-+ if (rfcomm_pi(sk)->channel == channel) {
-+ /* Exact match. */
-+ if (!bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+
-+ /* Closest match */
-+ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ sk1 = sk;
-+ }
-+ }
-+ return sk ? sk : sk1;
-+}
-+
-+/* Find socket with given address (channel, src).
-+ * Returns locked socket */
-+static inline struct sock *rfcomm_get_sock_by_channel(int state, u8 channel, bdaddr_t *src)
-+{
-+ struct sock *s;
-+ read_lock(&rfcomm_sk_list.lock);
-+ s = __rfcomm_get_sock_by_channel(state, channel, src);
-+ if (s) bh_lock_sock(s);
-+ read_unlock(&rfcomm_sk_list.lock);
-+ return s;
-+}
-+
-+static void rfcomm_sock_destruct(struct sock *sk)
-+{
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+
-+ BT_DBG("sk %p dlc %p", sk, d);
-+
-+ skb_queue_purge(&sk->receive_queue);
-+ skb_queue_purge(&sk->write_queue);
-+
-+ rfcomm_dlc_lock(d);
-+ rfcomm_pi(sk)->dlc = NULL;
-+
-+ /* Detach DLC if it's owned by this socket */
-+ if (d->owner == sk)
-+ d->owner = NULL;
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_dlc_put(d);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void rfcomm_sock_cleanup_listen(struct sock *parent)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ /* Close not yet accepted dlcs */
-+ while ((sk = bluez_accept_dequeue(parent, NULL))) {
-+ rfcomm_sock_close(sk);
-+ rfcomm_sock_kill(sk);
-+ }
-+
-+ parent->state = BT_CLOSED;
-+ parent->zapped = 1;
-+}
-+
-+/* Kill socket (only if zapped and orphan)
-+ * Must be called on unlocked socket.
-+ */
-+static void rfcomm_sock_kill(struct sock *sk)
-+{
-+ if (!sk->zapped || sk->socket)
-+ return;
-+
-+ BT_DBG("sk %p state %d refcnt %d", sk, sk->state, atomic_read(&sk->refcnt));
-+
-+ /* Kill poor orphan */
-+ bluez_sock_unlink(&rfcomm_sk_list, sk);
-+ sk->dead = 1;
-+ sock_put(sk);
-+}
-+
-+static void __rfcomm_sock_close(struct sock *sk)
-+{
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+
-+ BT_DBG("sk %p state %d socket %p", sk, sk->state, sk->socket);
-+
-+ switch (sk->state) {
-+ case BT_LISTEN:
-+ rfcomm_sock_cleanup_listen(sk);
-+ break;
-+
-+ case BT_CONNECT:
-+ case BT_CONNECT2:
-+ case BT_CONFIG:
-+ case BT_CONNECTED:
-+ rfcomm_dlc_close(d, 0);
-+
-+ default:
-+ sk->zapped = 1;
-+ break;
-+ }
-+}
-+
-+/* Close socket.
-+ * Must be called on unlocked socket.
-+ */
-+static void rfcomm_sock_close(struct sock *sk)
-+{
-+ lock_sock(sk);
-+ __rfcomm_sock_close(sk);
-+ release_sock(sk);
-+}
-+
-+static void rfcomm_sock_init(struct sock *sk, struct sock *parent)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ if (parent)
-+ sk->type = parent->type;
-+}
-+
-+static struct sock *rfcomm_sock_alloc(struct socket *sock, int proto, int prio)
-+{
-+ struct rfcomm_dlc *d;
-+ struct sock *sk;
-+
-+ sk = sk_alloc(PF_BLUETOOTH, prio, 1);
-+ if (!sk)
-+ return NULL;
-+
-+ d = rfcomm_dlc_alloc(prio);
-+ if (!d) {
-+ sk_free(sk);
-+ return NULL;
-+ }
-+ d->data_ready = rfcomm_sk_data_ready;
-+ d->state_change = rfcomm_sk_state_change;
-+
-+ rfcomm_pi(sk)->dlc = d;
-+ d->owner = sk;
-+
-+ bluez_sock_init(sock, sk);
-+
-+ sk->zapped = 0;
-+
-+ sk->destruct = rfcomm_sock_destruct;
-+ sk->sndtimeo = RFCOMM_CONN_TIMEOUT;
-+
-+ sk->sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10;
-+ sk->rcvbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10;
-+
-+ sk->protocol = proto;
-+ sk->state = BT_OPEN;
-+
-+ bluez_sock_link(&rfcomm_sk_list, sk);
-+
-+ BT_DBG("sk %p", sk);
-+
-+ MOD_INC_USE_COUNT;
-+ return sk;
-+}
-+
-+static int rfcomm_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ sock->state = SS_UNCONNECTED;
-+
-+ if (sock->type != SOCK_STREAM && sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &rfcomm_sock_ops;
-+
-+ if (!(sk = rfcomm_sock_alloc(sock, protocol, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ rfcomm_sock_init(sk, NULL);
-+ return 0;
-+}
-+
-+static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p %s", sk, batostr(&sa->rc_bdaddr));
-+
-+ if (!addr || addr->sa_family != AF_BLUETOOTH)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_OPEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ write_lock_bh(&rfcomm_sk_list.lock);
-+
-+ if (sa->rc_channel && __rfcomm_get_sock_by_addr(sa->rc_channel, &sa->rc_bdaddr)) {
-+ err = -EADDRINUSE;
-+ } else {
-+ /* Save source address */
-+ bacpy(&bluez_pi(sk)->src, &sa->rc_bdaddr);
-+ rfcomm_pi(sk)->channel = sa->rc_channel;
-+ sk->state = BT_BOUND;
-+ }
-+
-+ write_unlock_bh(&rfcomm_sk_list.lock);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_rc))
-+ return -EINVAL;
-+
-+ if (sk->state != BT_OPEN && sk->state != BT_BOUND)
-+ return -EBADFD;
-+
-+ if (sk->type != SOCK_STREAM)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ sk->state = BT_CONNECT;
-+ bacpy(&bluez_pi(sk)->dst, &sa->rc_bdaddr);
-+ rfcomm_pi(sk)->channel = sa->rc_channel;
-+
-+ err = rfcomm_dlc_open(d, &bluez_pi(sk)->src, &sa->rc_bdaddr, sa->rc_channel);
-+ if (!err)
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int rfcomm_sock_listen(struct socket *sock, int backlog)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p backlog %d", sk, backlog);
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_BOUND) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ sk->max_ack_backlog = backlog;
-+ sk->ack_backlog = 0;
-+ sk->state = BT_LISTEN;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int flags)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct sock *sk = sock->sk, *nsk;
-+ long timeo;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
-+
-+ BT_DBG("sk %p timeo %ld", sk, timeo);
-+
-+ /* Wait for an incoming connection. (wake-one). */
-+ add_wait_queue_exclusive(sk->sleep, &wait);
-+ while (!(nsk = bluez_accept_dequeue(sk, newsock))) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ if (err)
-+ goto done;
-+
-+ newsock->state = SS_CONNECTED;
-+
-+ BT_DBG("new socket %p", nsk);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ sa->rc_family = AF_BLUETOOTH;
-+ sa->rc_channel = rfcomm_pi(sk)->channel;
-+ if (peer)
-+ bacpy(&sa->rc_bdaddr, &bluez_pi(sk)->dst);
-+ else
-+ bacpy(&sa->rc_bdaddr, &bluez_pi(sk)->src);
-+
-+ *len = sizeof(struct sockaddr_rc);
-+ return 0;
-+}
-+
-+static int rfcomm_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len,
-+ struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+ struct sk_buff *skb;
-+ int err, size;
-+ int sent = 0;
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ if (sk->shutdown & SEND_SHUTDOWN)
-+ return -EPIPE;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ lock_sock(sk);
-+
-+ while (len) {
-+ size = min_t(uint, len, d->mtu);
-+
-+ skb = sock_alloc_send_skb(sk, size + RFCOMM_SKB_RESERVE,
-+ msg->msg_flags & MSG_DONTWAIT, &err);
-+ if (!skb)
-+ break;
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size);
-+ if (err) {
-+ kfree_skb(skb);
-+ sent = err;
-+ break;
-+ }
-+
-+ err = rfcomm_dlc_send(d, skb);
-+ if (err < 0) {
-+ kfree_skb(skb);
-+ break;
-+ }
-+
-+ sent += size;
-+ len -= size;
-+ }
-+
-+ release_sock(sk);
-+
-+ return sent ? sent : err;
-+}
-+
-+static long rfcomm_sock_data_wait(struct sock *sk, long timeo)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+
-+ add_wait_queue(sk->sleep, &wait);
-+ for (;;) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (skb_queue_len(&sk->receive_queue) || sk->err || (sk->shutdown & RCV_SHUTDOWN) ||
-+ signal_pending(current) || !timeo)
-+ break;
-+
-+ set_bit(SOCK_ASYNC_WAITDATA, &sk->socket->flags);
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+ clear_bit(SOCK_ASYNC_WAITDATA, &sk->socket->flags);
-+ }
-+
-+ __set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+ return timeo;
-+}
-+
-+static int rfcomm_sock_recvmsg(struct socket *sock, struct msghdr *msg, int size,
-+ int flags, struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ int target, err = 0, copied = 0;
-+ long timeo;
-+
-+ if (flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ msg->msg_namelen = 0;
-+
-+ BT_DBG("sk %p size %d", sk, size);
-+
-+ lock_sock(sk);
-+
-+ target = sock_rcvlowat(sk, flags & MSG_WAITALL, size);
-+ timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT);
-+
-+ do {
-+ struct sk_buff *skb;
-+ int chunk;
-+
-+ skb = skb_dequeue(&sk->receive_queue);
-+ if (!skb) {
-+ if (copied >= target)
-+ break;
-+
-+ if ((err = sock_error(sk)) != 0)
-+ break;
-+ if (sk->shutdown & RCV_SHUTDOWN)
-+ break;
-+
-+ err = -EAGAIN;
-+ if (!timeo)
-+ break;
-+
-+ timeo = rfcomm_sock_data_wait(sk, timeo);
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ goto out;
-+ }
-+ continue;
-+ }
-+
-+ chunk = min_t(unsigned int, skb->len, size);
-+ if (memcpy_toiovec(msg->msg_iov, skb->data, chunk)) {
-+ skb_queue_head(&sk->receive_queue, skb);
-+ if (!copied)
-+ copied = -EFAULT;
-+ break;
-+ }
-+ copied += chunk;
-+ size -= chunk;
-+
-+ if (!(flags & MSG_PEEK)) {
-+ atomic_sub(chunk, &sk->rmem_alloc);
-+
-+ skb_pull(skb, chunk);
-+ if (skb->len) {
-+ skb_queue_head(&sk->receive_queue, skb);
-+ break;
-+ }
-+ kfree_skb(skb);
-+
-+ } else {
-+ /* put message back and return */
-+ skb_queue_head(&sk->receive_queue, skb);
-+ break;
-+ }
-+ } while (size);
-+
-+out:
-+ if (atomic_read(&sk->rmem_alloc) <= (sk->rcvbuf >> 2))
-+ rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc);
-+
-+ release_sock(sk);
-+ return copied ? : err;
-+}
-+
-+static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ int len, err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (get_user(len, optlen))
-+ return -EFAULT;
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct sock *sk = sock->sk;
-+ int err;
-+
-+ lock_sock(sk);
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ err = rfcomm_dev_ioctl(sk, cmd, arg);
-+#else
-+ err = -EOPNOTSUPP;
-+#endif
-+
-+ release_sock(sk);
-+
-+ return err;
-+}
-+
-+static int rfcomm_sock_shutdown(struct socket *sock, int how)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk) return 0;
-+
-+ lock_sock(sk);
-+ if (!sk->shutdown) {
-+ sk->shutdown = SHUTDOWN_MASK;
-+ __rfcomm_sock_close(sk);
-+
-+ if (sk->linger)
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ }
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ err = rfcomm_sock_shutdown(sock, 2);
-+
-+ sock_orphan(sk);
-+ rfcomm_sock_kill(sk);
-+ return err;
-+}
-+
-+/* ---- RFCOMM core layer callbacks ----
-+ *
-+ * called under rfcomm_lock()
-+ */
-+int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc **d)
-+{
-+ struct sock *sk, *parent;
-+ bdaddr_t src, dst;
-+ int result = 0;
-+
-+ BT_DBG("session %p channel %d", s, channel);
-+
-+ rfcomm_session_getaddr(s, &src, &dst);
-+
-+ /* Check if we have socket listening on this channel */
-+ parent = rfcomm_get_sock_by_channel(BT_LISTEN, channel, &src);
-+ if (!parent)
-+ return 0;
-+
-+ /* Check for backlog size */
-+ if (parent->ack_backlog > parent->max_ack_backlog) {
-+ BT_DBG("backlog full %d", parent->ack_backlog);
-+ goto done;
-+ }
-+
-+ sk = rfcomm_sock_alloc(NULL, BTPROTO_RFCOMM, GFP_ATOMIC);
-+ if (!sk)
-+ goto done;
-+
-+ rfcomm_sock_init(sk, parent);
-+ bacpy(&bluez_pi(sk)->src, &src);
-+ bacpy(&bluez_pi(sk)->dst, &dst);
-+ rfcomm_pi(sk)->channel = channel;
-+
-+ sk->state = BT_CONFIG;
-+ bluez_accept_enqueue(parent, sk);
-+
-+ /* Accept connection and return socket DLC */
-+ *d = rfcomm_pi(sk)->dlc;
-+ result = 1;
-+
-+done:
-+ bh_unlock_sock(parent);
-+ return result;
-+}
-+
-+/* ---- Proc fs support ---- */
-+int rfcomm_sock_dump(char *buf)
-+{
-+ struct bluez_sock_list *list = &rfcomm_sk_list;
-+ struct rfcomm_pinfo *pi;
-+ struct sock *sk;
-+ char *ptr = buf;
-+
-+ write_lock_bh(&list->lock);
-+
-+ for (sk = list->head; sk; sk = sk->next) {
-+ pi = rfcomm_pi(sk);
-+ ptr += sprintf(ptr, "sk %s %s %d %d\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ sk->state, rfcomm_pi(sk)->channel);
-+ }
-+
-+ write_unlock_bh(&list->lock);
-+
-+ return ptr - buf;
-+}
-+
-+static struct proto_ops rfcomm_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: rfcomm_sock_release,
-+ bind: rfcomm_sock_bind,
-+ connect: rfcomm_sock_connect,
-+ listen: rfcomm_sock_listen,
-+ accept: rfcomm_sock_accept,
-+ getname: rfcomm_sock_getname,
-+ sendmsg: rfcomm_sock_sendmsg,
-+ recvmsg: rfcomm_sock_recvmsg,
-+ shutdown: rfcomm_sock_shutdown,
-+ setsockopt: rfcomm_sock_setsockopt,
-+ getsockopt: rfcomm_sock_getsockopt,
-+ ioctl: rfcomm_sock_ioctl,
-+ poll: bluez_sock_poll,
-+ socketpair: sock_no_socketpair,
-+ mmap: sock_no_mmap
-+};
-+
-+static struct net_proto_family rfcomm_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: rfcomm_sock_create
-+};
-+
-+int rfcomm_init_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_RFCOMM, &rfcomm_sock_family_ops))) {
-+ BT_ERR("Can't register RFCOMM socket layer");
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+void rfcomm_cleanup_sockets(void)
-+{
-+ int err;
-+
-+ /* Unregister socket, protocol and notifier */
-+ if ((err = bluez_sock_unregister(BTPROTO_RFCOMM)))
-+ BT_ERR("Can't unregister RFCOMM socket layer %d", err);
-+}
-diff -Nur c3000_pre/linux/net/bluetooth/rfcomm/tty.c c3000_work/linux/net/bluetooth/rfcomm/tty.c
---- c3000_pre/linux/net/bluetooth/rfcomm/tty.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/rfcomm/tty.c 2004-12-16 23:01:14.000000000 +0900
-@@ -0,0 +1,960 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM TTY.
-+ *
-+ * $Id: tty.c,v 1.26 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/tty.h>
-+#include <linux/tty_driver.h>
-+#include <linux/tty_flip.h>
-+
-+#include <linux/slab.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define RFCOMM_TTY_MAGIC 0x6d02 /* magic number for rfcomm struct */
-+#define RFCOMM_TTY_PORTS RFCOMM_MAX_DEV /* whole lotta rfcomm devices */
-+#define RFCOMM_TTY_MAJOR 216 /* device node major id of the usb/bluetooth.c driver */
-+#define RFCOMM_TTY_MINOR 0
-+
-+struct rfcomm_dev {
-+ struct list_head list;
-+ atomic_t refcnt;
-+
-+ char name[12];
-+ int id;
-+ unsigned long flags;
-+ int opened;
-+ int err;
-+
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+
-+ uint modem_status;
-+
-+ struct rfcomm_dlc *dlc;
-+ struct tty_struct *tty;
-+ wait_queue_head_t wait;
-+ struct tasklet_struct wakeup_task;
-+
-+ atomic_t wmem_alloc;
-+};
-+
-+static LIST_HEAD(rfcomm_dev_list);
-+static rwlock_t rfcomm_dev_lock = RW_LOCK_UNLOCKED;
-+
-+static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb);
-+static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err);
-+static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig);
-+
-+static void rfcomm_tty_wakeup(unsigned long arg);
-+
-+/* ---- Device functions ---- */
-+static void rfcomm_dev_destruct(struct rfcomm_dev *dev)
-+{
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+
-+ BT_DBG("dev %p dlc %p", dev, dlc);
-+
-+ rfcomm_dlc_lock(dlc);
-+ /* Detach DLC if it's owned by this dev */
-+ if (dlc->owner == dev)
-+ dlc->owner = NULL;
-+ rfcomm_dlc_unlock(dlc);
-+
-+ rfcomm_dlc_put(dlc);
-+ kfree(dev);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static inline void rfcomm_dev_hold(struct rfcomm_dev *dev)
-+{
-+ atomic_inc(&dev->refcnt);
-+}
-+
-+static inline void rfcomm_dev_put(struct rfcomm_dev *dev)
-+{
-+ /* The reason this isn't actually a race, as you no
-+ doubt have a little voice screaming at you in your
-+ head, is that the refcount should never actually
-+ reach zero unless the device has already been taken
-+ off the list, in rfcomm_dev_del(). And if that's not
-+ true, we'll hit the BUG() in rfcomm_dev_destruct()
-+ anyway. */
-+ if (atomic_dec_and_test(&dev->refcnt))
-+ rfcomm_dev_destruct(dev);
-+}
-+
-+static struct rfcomm_dev *__rfcomm_dev_get(int id)
-+{
-+ struct rfcomm_dev *dev;
-+ struct list_head *p;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ dev = list_entry(p, struct rfcomm_dev, list);
-+ if (dev->id == id)
-+ return dev;
-+ }
-+
-+ return NULL;
-+}
-+
-+static inline struct rfcomm_dev *rfcomm_dev_get(int id)
-+{
-+ struct rfcomm_dev *dev;
-+
-+ read_lock(&rfcomm_dev_lock);
-+
-+ dev = __rfcomm_dev_get(id);
-+ if (dev)
-+ rfcomm_dev_hold(dev);
-+
-+ read_unlock(&rfcomm_dev_lock);
-+
-+ return dev;
-+}
-+
-+static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
-+{
-+ struct rfcomm_dev *dev;
-+ struct list_head *head = &rfcomm_dev_list, *p;
-+ int err = 0;
-+
-+ BT_DBG("id %d channel %d", req->dev_id, req->channel);
-+
-+ dev = kmalloc(sizeof(struct rfcomm_dev), GFP_KERNEL);
-+ if (!dev)
-+ return -ENOMEM;
-+ memset(dev, 0, sizeof(struct rfcomm_dev));
-+
-+ write_lock_bh(&rfcomm_dev_lock);
-+
-+ if (req->dev_id < 0) {
-+ dev->id = 0;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ if (list_entry(p, struct rfcomm_dev, list)->id != dev->id)
-+ break;
-+
-+ dev->id++;
-+ head = p;
-+ }
-+ } else {
-+ dev->id = req->dev_id;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ struct rfcomm_dev *entry = list_entry(p, struct rfcomm_dev, list);
-+
-+ if (entry->id == dev->id) {
-+ err = -EADDRINUSE;
-+ goto out;
-+ }
-+
-+ if (entry->id > dev->id - 1)
-+ break;
-+
-+ head = p;
-+ }
-+ }
-+
-+ if ((dev->id < 0) || (dev->id > RFCOMM_MAX_DEV - 1)) {
-+ err = -ENFILE;
-+ goto out;
-+ }
-+
-+ sprintf(dev->name, "rfcomm%d", dev->id);
-+
-+ list_add(&dev->list, head);
-+ atomic_set(&dev->refcnt, 1);
-+
-+ bacpy(&dev->src, &req->src);
-+ bacpy(&dev->dst, &req->dst);
-+ dev->channel = req->channel;
-+
-+ dev->flags = req->flags &
-+ ((1 << RFCOMM_RELEASE_ONHUP) | (1 << RFCOMM_REUSE_DLC));
-+
-+ init_waitqueue_head(&dev->wait);
-+ tasklet_init(&dev->wakeup_task, rfcomm_tty_wakeup, (unsigned long) dev);
-+
-+ rfcomm_dlc_lock(dlc);
-+ dlc->data_ready = rfcomm_dev_data_ready;
-+ dlc->state_change = rfcomm_dev_state_change;
-+ dlc->modem_status = rfcomm_dev_modem_status;
-+
-+ dlc->owner = dev;
-+ dev->dlc = dlc;
-+ rfcomm_dlc_unlock(dlc);
-+
-+ MOD_INC_USE_COUNT;
-+
-+out:
-+ write_unlock_bh(&rfcomm_dev_lock);
-+
-+ if (err) {
-+ kfree(dev);
-+ return err;
-+ } else
-+ return dev->id;
-+}
-+
-+static void rfcomm_dev_del(struct rfcomm_dev *dev)
-+{
-+ BT_DBG("dev %p", dev);
-+
-+ write_lock_bh(&rfcomm_dev_lock);
-+ list_del_init(&dev->list);
-+ write_unlock_bh(&rfcomm_dev_lock);
-+
-+ rfcomm_dev_put(dev);
-+}
-+
-+/* ---- Send buffer ---- */
-+
-+static inline unsigned int rfcomm_room(struct rfcomm_dlc *dlc)
-+{
-+ /* We can't let it be zero, because we don't get a callback
-+ when tx_credits becomes nonzero, hence we'd never wake up */
-+ return dlc->mtu * (dlc->tx_credits?:1);
-+}
-+
-+static void rfcomm_wfree(struct sk_buff *skb)
-+{
-+ struct rfcomm_dev *dev = (void *) skb->sk;
-+ atomic_sub(skb->truesize, &dev->wmem_alloc);
-+ if (test_bit(RFCOMM_TTY_ATTACHED, &dev->flags))
-+ tasklet_schedule(&dev->wakeup_task);
-+ rfcomm_dev_put(dev);
-+}
-+
-+static inline void rfcomm_set_owner_w(struct sk_buff *skb, struct rfcomm_dev *dev)
-+{
-+ rfcomm_dev_hold(dev);
-+ atomic_add(skb->truesize, &dev->wmem_alloc);
-+ skb->sk = (void *) dev;
-+ skb->destructor = rfcomm_wfree;
-+}
-+
-+static struct sk_buff *rfcomm_wmalloc(struct rfcomm_dev *dev, unsigned long size, int force, int priority)
-+{
-+ if (force || atomic_read(&dev->wmem_alloc) < rfcomm_room(dev->dlc)) {
-+ struct sk_buff *skb = alloc_skb(size, priority);
-+ if (skb) {
-+ rfcomm_set_owner_w(skb, dev);
-+ return skb;
-+ }
-+ }
-+ return NULL;
-+}
-+
-+/* ---- Device IOCTLs ---- */
-+
-+#define NOCAP_FLAGS ((1 << RFCOMM_REUSE_DLC) | (1 << RFCOMM_RELEASE_ONHUP))
-+
-+static int rfcomm_create_dev(struct sock *sk, unsigned long arg)
-+{
-+ struct rfcomm_dev_req req;
-+ struct rfcomm_dlc *dlc;
-+ int id;
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ BT_DBG("sk %p dev_id %id flags 0x%x", sk, req.dev_id, req.flags);
-+
-+ if (req.flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN))
-+ return -EPERM;
-+
-+ if (req.flags & (1 << RFCOMM_REUSE_DLC)) {
-+ /* Socket must be connected */
-+ if (sk->state != BT_CONNECTED)
-+ return -EBADFD;
-+
-+ dlc = rfcomm_pi(sk)->dlc;
-+ rfcomm_dlc_hold(dlc);
-+ } else {
-+ dlc = rfcomm_dlc_alloc(GFP_KERNEL);
-+ if (!dlc)
-+ return -ENOMEM;
-+ }
-+
-+ id = rfcomm_dev_add(&req, dlc);
-+ if (id < 0) {
-+ rfcomm_dlc_put(dlc);
-+ return id;
-+ }
-+
-+ if (req.flags & (1 << RFCOMM_REUSE_DLC)) {
-+ /* DLC is now used by device.
-+ * Socket must be disconnected */
-+ sk->state = BT_CLOSED;
-+ }
-+
-+ return id;
-+}
-+
-+static int rfcomm_release_dev(unsigned long arg)
-+{
-+ struct rfcomm_dev_req req;
-+ struct rfcomm_dev *dev;
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ BT_DBG("dev_id %id flags 0x%x", req.dev_id, req.flags);
-+
-+ if (!(dev = rfcomm_dev_get(req.dev_id)))
-+ return -ENODEV;
-+
-+ if (dev->flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN)) {
-+ rfcomm_dev_put(dev);
-+ return -EPERM;
-+ }
-+
-+ if (req.flags & (1 << RFCOMM_HANGUP_NOW))
-+ rfcomm_dlc_close(dev->dlc, 0);
-+
-+ rfcomm_dev_del(dev);
-+ rfcomm_dev_put(dev);
-+ return 0;
-+}
-+
-+static int rfcomm_get_dev_list(unsigned long arg)
-+{
-+ struct rfcomm_dev_list_req *dl;
-+ struct rfcomm_dev_info *di;
-+ struct list_head *p;
-+ int n = 0, size, err;
-+ u16 dev_num;
-+
-+ BT_DBG("");
-+
-+ if (get_user(dev_num, (u16 *) arg))
-+ return -EFAULT;
-+
-+ if (!dev_num || dev_num > (PAGE_SIZE * 4) / sizeof(*di))
-+ return -EINVAL;
-+
-+ size = sizeof(*dl) + dev_num * sizeof(*di);
-+
-+ if (!(dl = kmalloc(size, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ di = dl->dev_info;
-+
-+ read_lock_bh(&rfcomm_dev_lock);
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ struct rfcomm_dev *dev = list_entry(p, struct rfcomm_dev, list);
-+ (di + n)->id = dev->id;
-+ (di + n)->flags = dev->flags;
-+ (di + n)->state = dev->dlc->state;
-+ (di + n)->channel = dev->channel;
-+ bacpy(&(di + n)->src, &dev->src);
-+ bacpy(&(di + n)->dst, &dev->dst);
-+ if (++n >= dev_num)
-+ break;
-+ }
-+
-+ read_unlock_bh(&rfcomm_dev_lock);
-+
-+ dl->dev_num = n;
-+ size = sizeof(*dl) + n * sizeof(*di);
-+
-+ err = copy_to_user((void *) arg, dl, size);
-+ kfree(dl);
-+
-+ return err ? -EFAULT : 0;
-+}
-+
-+static int rfcomm_get_dev_info(unsigned long arg)
-+{
-+ struct rfcomm_dev *dev;
-+ struct rfcomm_dev_info di;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ if (copy_from_user(&di, (void *)arg, sizeof(di)))
-+ return -EFAULT;
-+
-+ if (!(dev = rfcomm_dev_get(di.id)))
-+ return -ENODEV;
-+
-+ di.flags = dev->flags;
-+ di.channel = dev->channel;
-+ di.state = dev->dlc->state;
-+ bacpy(&di.src, &dev->src);
-+ bacpy(&di.dst, &dev->dst);
-+
-+ if (copy_to_user((void *)arg, &di, sizeof(di)))
-+ err = -EFAULT;
-+
-+ rfcomm_dev_put(dev);
-+ return err;
-+}
-+
-+int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg)
-+{
-+ BT_DBG("cmd %d arg %ld", cmd, arg);
-+
-+ switch (cmd) {
-+ case RFCOMMCREATEDEV:
-+ return rfcomm_create_dev(sk, arg);
-+
-+ case RFCOMMRELEASEDEV:
-+ return rfcomm_release_dev(arg);
-+
-+ case RFCOMMGETDEVLIST:
-+ return rfcomm_get_dev_list(arg);
-+
-+ case RFCOMMGETDEVINFO:
-+ return rfcomm_get_dev_info(arg);
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+/* ---- DLC callbacks ---- */
-+static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ struct tty_struct *tty;
-+
-+ if (!dev || !(tty = dev->tty)) {
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ BT_DBG("dlc %p tty %p len %d", dlc, tty, skb->len);
-+
-+ if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
-+ register int i;
-+ for (i = 0; i < skb->len; i++) {
-+ if (tty->flip.count >= TTY_FLIPBUF_SIZE)
-+ tty_flip_buffer_push(tty);
-+
-+ tty_insert_flip_char(tty, skb->data[i], 0);
-+ }
-+ tty_flip_buffer_push(tty);
-+ } else
-+ tty->ldisc.receive_buf(tty, skb->data, NULL, skb->len);
-+
-+ kfree_skb(skb);
-+}
-+
-+static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("dlc %p dev %p err %d", dlc, dev, err);
-+
-+ dev->err = err;
-+ wake_up_interruptible(&dev->wait);
-+
-+ if (dlc->state == BT_CLOSED) {
-+ if (!dev->tty) {
-+ if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) {
-+ rfcomm_dev_hold(dev);
-+ rfcomm_dev_del(dev);
-+
-+ /* We have to drop DLC lock here, otherwise
-+ rfcomm_dev_put() will dead lock if it's
-+ the last reference. */
-+ rfcomm_dlc_unlock(dlc);
-+ rfcomm_dev_put(dev);
-+ rfcomm_dlc_lock(dlc);
-+ }
-+ } else
-+ tty_hangup(dev->tty);
-+ }
-+}
-+
-+static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig);
-+
-+ dev->modem_status =
-+ ((v24_sig & RFCOMM_V24_RTC) ? (TIOCM_DSR | TIOCM_DTR) : 0) |
-+ ((v24_sig & RFCOMM_V24_RTR) ? (TIOCM_RTS | TIOCM_CTS) : 0) |
-+ ((v24_sig & RFCOMM_V24_IC) ? TIOCM_RI : 0) |
-+ ((v24_sig & RFCOMM_V24_DV) ? TIOCM_CD : 0);
-+}
-+
-+/* ---- TTY functions ---- */
-+static void rfcomm_tty_wakeup(unsigned long arg)
-+{
-+ struct rfcomm_dev *dev = (void *) arg;
-+ struct tty_struct *tty = dev->tty;
-+ if (!tty)
-+ return;
-+
-+ BT_DBG("dev %p tty %p", dev, tty);
-+
-+ if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup)
-+ (tty->ldisc.write_wakeup)(tty);
-+
-+ wake_up_interruptible(&tty->write_wait);
-+#ifdef SERIAL_HAVE_POLL_WAIT
-+ wake_up_interruptible(&tty->poll_wait);
-+#endif
-+}
-+
-+static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct rfcomm_dev *dev;
-+ struct rfcomm_dlc *dlc;
-+ int err, id;
-+
-+ id = MINOR(tty->device) - tty->driver.minor_start;
-+
-+ BT_DBG("tty %p id %d", tty, id);
-+
-+ /* We don't leak this refcount. For reasons which are not entirely
-+ clear, the TTY layer will call our ->close() method even if the
-+ open fails. We decrease the refcount there, and decreasing it
-+ here too would cause breakage. */
-+ dev = rfcomm_dev_get(id);
-+ if (!dev)
-+ return -ENODEV;
-+
-+ BT_DBG("dev %p dst %s channel %d opened %d", dev, batostr(&dev->dst), dev->channel, dev->opened);
-+
-+ if (dev->opened++ != 0)
-+ return 0;
-+
-+ dlc = dev->dlc;
-+
-+ /* Attach TTY and open DLC */
-+
-+ rfcomm_dlc_lock(dlc);
-+ tty->driver_data = dev;
-+ dev->tty = tty;
-+ rfcomm_dlc_unlock(dlc);
-+ set_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
-+
-+ err = rfcomm_dlc_open(dlc, &dev->src, &dev->dst, dev->channel);
-+ if (err < 0)
-+ return err;
-+
-+ /* Wait for DLC to connect */
-+ add_wait_queue(&dev->wait, &wait);
-+ while (1) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (dlc->state == BT_CLOSED) {
-+ err = -dev->err;
-+ break;
-+ }
-+
-+ if (dlc->state == BT_CONNECTED)
-+ break;
-+
-+ if (signal_pending(current)) {
-+ err = -EINTR;
-+ break;
-+ }
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&dev->wait, &wait);
-+
-+ return err;
-+}
-+
-+static void rfcomm_tty_close(struct tty_struct *tty, struct file *filp)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc, dev->opened);
-+
-+ if (--dev->opened == 0) {
-+ /* Close DLC and dettach TTY */
-+ rfcomm_dlc_close(dev->dlc, 0);
-+
-+ clear_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
-+ tasklet_kill(&dev->wakeup_task);
-+
-+ rfcomm_dlc_lock(dev->dlc);
-+ tty->driver_data = NULL;
-+ dev->tty = NULL;
-+ rfcomm_dlc_unlock(dev->dlc);
-+ }
-+
-+ rfcomm_dev_put(dev);
-+}
-+
-+static int rfcomm_tty_write(struct tty_struct *tty, int from_user, const unsigned char *buf, int count)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ struct sk_buff *skb;
-+ int err = 0, sent = 0, size;
-+
-+ BT_DBG("tty %p from_user %d count %d", tty, from_user, count);
-+
-+ while (count) {
-+ size = min_t(uint, count, dlc->mtu);
-+
-+ if (from_user)
-+ skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, 0, GFP_KERNEL);
-+ else
-+ skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, 0, GFP_ATOMIC);
-+
-+ if (!skb)
-+ break;
-+
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ if (from_user)
-+ copy_from_user(skb_put(skb, size), buf + sent, size);
-+ else
-+ memcpy(skb_put(skb, size), buf + sent, size);
-+
-+ if ((err = rfcomm_dlc_send(dlc, skb)) < 0) {
-+ kfree_skb(skb);
-+ break;
-+ }
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ return sent ? sent : err;
-+}
-+
-+static void rfcomm_tty_put_char(struct tty_struct *tty, unsigned char ch)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("tty %p char %x", tty, ch);
-+
-+ skb = rfcomm_wmalloc(dev, 1 + RFCOMM_SKB_RESERVE, 1, GFP_ATOMIC);
-+
-+ if (!skb)
-+ return;
-+
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ *(char *)skb_put(skb, 1) = ch;
-+
-+ if ((rfcomm_dlc_send(dlc, skb)) < 0)
-+ kfree_skb(skb);
-+}
-+
-+static int rfcomm_tty_write_room(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ int room;
-+
-+ BT_DBG("tty %p", tty);
-+
-+ room = rfcomm_room(dev->dlc) - atomic_read(&dev->wmem_alloc);
-+ if (room < 0)
-+ room = 0;
-+
-+ return room;
-+}
-+
-+static int rfcomm_tty_set_modem_status(uint cmd, struct rfcomm_dlc *dlc, uint status)
-+{
-+ u8 v24_sig, mask;
-+
-+ BT_DBG("dlc %p cmd 0x%02x", dlc, cmd);
-+
-+ if (cmd == TIOCMSET)
-+ v24_sig = 0;
-+ else
-+ rfcomm_dlc_get_modem_status(dlc, &v24_sig);
-+
-+ mask = ((status & TIOCM_DSR) ? RFCOMM_V24_RTC : 0) |
-+ ((status & TIOCM_DTR) ? RFCOMM_V24_RTC : 0) |
-+ ((status & TIOCM_RTS) ? RFCOMM_V24_RTR : 0) |
-+ ((status & TIOCM_CTS) ? RFCOMM_V24_RTR : 0) |
-+ ((status & TIOCM_RI) ? RFCOMM_V24_IC : 0) |
-+ ((status & TIOCM_CD) ? RFCOMM_V24_DV : 0);
-+
-+ if (cmd == TIOCMBIC)
-+ v24_sig &= ~mask;
-+ else
-+ v24_sig |= mask;
-+
-+ rfcomm_dlc_set_modem_status(dlc, v24_sig);
-+ return 0;
-+}
-+
-+static int rfcomm_tty_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, unsigned long arg)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ uint status;
-+ int err;
-+
-+ BT_DBG("tty %p cmd 0x%02x", tty, cmd);
-+
-+ switch (cmd) {
-+ case TCGETS:
-+ BT_DBG("TCGETS is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TCSETS:
-+ BT_DBG("TCSETS is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCMGET:
-+ BT_DBG("TIOCMGET");
-+
-+ return put_user(dev->modem_status, (unsigned int *)arg);
-+
-+ case TIOCMSET: /* Turns on and off the lines as specified by the mask */
-+ case TIOCMBIS: /* Turns on the lines as specified by the mask */
-+ case TIOCMBIC: /* Turns off the lines as specified by the mask */
-+ if ((err = get_user(status, (unsigned int *)arg)))
-+ return err;
-+ return rfcomm_tty_set_modem_status(cmd, dlc, status);
-+
-+ case TIOCMIWAIT:
-+ BT_DBG("TIOCMIWAIT");
-+ break;
-+
-+ case TIOCGICOUNT:
-+ BT_DBG("TIOCGICOUNT");
-+ break;
-+
-+ case TIOCGSERIAL:
-+ BT_ERR("TIOCGSERIAL is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSSERIAL:
-+ BT_ERR("TIOCSSERIAL is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERGSTRUCT:
-+ BT_ERR("TIOCSERGSTRUCT is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERGETLSR:
-+ BT_ERR("TIOCSERGETLSR is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERCONFIG:
-+ BT_ERR("TIOCSERCONFIG is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ default:
-+ return -ENOIOCTLCMD; /* ioctls which we must ignore */
-+
-+ }
-+
-+ return -ENOIOCTLCMD;
-+}
-+
-+#define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK))
-+
-+static void rfcomm_tty_set_termios(struct tty_struct *tty, struct termios *old)
-+{
-+ BT_DBG("tty %p", tty);
-+
-+ if ((tty->termios->c_cflag == old->c_cflag) &&
-+ (RELEVANT_IFLAG(tty->termios->c_iflag) == RELEVANT_IFLAG(old->c_iflag)))
-+ return;
-+
-+ /* handle turning off CRTSCTS */
-+ if ((old->c_cflag & CRTSCTS) && !(tty->termios->c_cflag & CRTSCTS)) {
-+ BT_DBG("turning off CRTSCTS");
-+ }
-+}
-+
-+static void rfcomm_tty_throttle(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_dlc_throttle(dev->dlc);
-+}
-+
-+static void rfcomm_tty_unthrottle(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_dlc_unthrottle(dev->dlc);
-+}
-+
-+static int rfcomm_tty_chars_in_buffer(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ if (skb_queue_len(&dlc->tx_queue))
-+ return dlc->mtu;
-+
-+ return 0;
-+}
-+
-+static void rfcomm_tty_flush_buffer(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ skb_queue_purge(&dev->dlc->tx_queue);
-+
-+ if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup)
-+ tty->ldisc.write_wakeup(tty);
-+}
-+
-+static void rfcomm_tty_send_xchar(struct tty_struct *tty, char ch)
-+{
-+ BT_DBG("tty %p ch %c", tty, ch);
-+}
-+
-+static void rfcomm_tty_wait_until_sent(struct tty_struct *tty, int timeout)
-+{
-+ BT_DBG("tty %p timeout %d", tty, timeout);
-+}
-+
-+static void rfcomm_tty_hangup(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_tty_flush_buffer(tty);
-+
-+ if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags))
-+ rfcomm_dev_del(dev);
-+}
-+
-+static int rfcomm_tty_read_proc(char *buf, char **start, off_t offset, int len, int *eof, void *unused)
-+{
-+ return 0;
-+}
-+
-+/* ---- TTY structure ---- */
-+static int rfcomm_tty_refcount; /* If we manage several devices */
-+
-+static struct tty_struct *rfcomm_tty_table[RFCOMM_TTY_PORTS];
-+static struct termios *rfcomm_tty_termios[RFCOMM_TTY_PORTS];
-+static struct termios *rfcomm_tty_termios_locked[RFCOMM_TTY_PORTS];
-+
-+static struct tty_driver rfcomm_tty_driver = {
-+ magic: TTY_DRIVER_MAGIC,
-+ driver_name: "rfcomm",
-+#ifdef CONFIG_DEVFS_FS
-+ name: "bluetooth/rfcomm/%d",
-+#else
-+ name: "rfcomm",
-+#endif
-+ major: RFCOMM_TTY_MAJOR,
-+ minor_start: RFCOMM_TTY_MINOR,
-+ num: RFCOMM_TTY_PORTS,
-+ type: TTY_DRIVER_TYPE_SERIAL,
-+ subtype: SERIAL_TYPE_NORMAL,
-+ flags: TTY_DRIVER_REAL_RAW,
-+
-+ refcount: &rfcomm_tty_refcount,
-+ table: rfcomm_tty_table,
-+ termios: rfcomm_tty_termios,
-+ termios_locked: rfcomm_tty_termios_locked,
-+
-+ open: rfcomm_tty_open,
-+ close: rfcomm_tty_close,
-+ put_char: rfcomm_tty_put_char,
-+ write: rfcomm_tty_write,
-+ write_room: rfcomm_tty_write_room,
-+ chars_in_buffer: rfcomm_tty_chars_in_buffer,
-+ flush_buffer: rfcomm_tty_flush_buffer,
-+ ioctl: rfcomm_tty_ioctl,
-+ throttle: rfcomm_tty_throttle,
-+ unthrottle: rfcomm_tty_unthrottle,
-+ set_termios: rfcomm_tty_set_termios,
-+ send_xchar: rfcomm_tty_send_xchar,
-+ stop: NULL,
-+ start: NULL,
-+ hangup: rfcomm_tty_hangup,
-+ wait_until_sent: rfcomm_tty_wait_until_sent,
-+ read_proc: rfcomm_tty_read_proc,
-+};
-+
-+int rfcomm_init_ttys(void)
-+{
-+ int i;
-+
-+ /* Initalize our global data */
-+ for (i = 0; i < RFCOMM_TTY_PORTS; i++)
-+ rfcomm_tty_table[i] = NULL;
-+
-+ /* Register the TTY driver */
-+ rfcomm_tty_driver.init_termios = tty_std_termios;
-+ rfcomm_tty_driver.init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
-+ rfcomm_tty_driver.flags = TTY_DRIVER_REAL_RAW;
-+
-+ if (tty_register_driver(&rfcomm_tty_driver)) {
-+ BT_ERR("Can't register RFCOMM TTY driver");
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
-+void rfcomm_cleanup_ttys(void)
-+{
-+ tty_unregister_driver(&rfcomm_tty_driver);
-+ return;
-+}
-diff -Nur c3000_pre/linux/net/bluetooth/sco.c c3000_work/linux/net/bluetooth/sco.c
---- c3000_pre/linux/net/bluetooth/sco.c 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/sco.c 2004-12-16 23:01:14.000000000 +0900
-@@ -332,8 +332,10 @@
- BT_DBG("parent %p", parent);
-
- /* Close not yet accepted channels */
-- while ((sk = bluez_accept_dequeue(parent, NULL)))
-+ while ((sk = bluez_accept_dequeue(parent, NULL))) {
- sco_sock_close(sk);
-+ sco_sock_kill(sk);
-+ }
-
- parent->state = BT_CLOSED;
- parent->zapped = 1;
-@@ -388,8 +390,6 @@
- };
-
- release_sock(sk);
--
-- sco_sock_kill(sk);
- }
-
- static void sco_sock_init(struct sock *sk, struct sock *parent)
-@@ -508,7 +508,8 @@
- if ((err = sco_connect(sk)))
- goto done;
-
-- err = bluez_sock_w4_connect(sk, flags);
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-
- done:
- release_sock(sk);
-@@ -678,7 +679,7 @@
-
- opts.mtu = sco_pi(sk)->conn->mtu;
-
-- BT_INFO("mtu %d", opts.mtu);
-+ BT_DBG("mtu %d", opts.mtu);
-
- len = MIN(len, sizeof(opts));
- if (copy_to_user(optval, (char *)&opts, len))
-@@ -712,16 +713,23 @@
- static int sco_sock_release(struct socket *sock)
- {
- struct sock *sk = sock->sk;
-+ int err = 0;
-
- BT_DBG("sock %p, sk %p", sock, sk);
-
- if (!sk)
- return 0;
-
-- sock_orphan(sk);
- sco_sock_close(sk);
-+ if (sk->linger) {
-+ lock_sock(sk);
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ release_sock(sk);
-+ }
-
-- return 0;
-+ sock_orphan(sk);
-+ sco_sock_kill(sk);
-+ return err;
- }
-
- static void __sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent)
-diff -Nur c3000_pre/linux/net/bluetooth/syms.c c3000_work/linux/net/bluetooth/syms.c
---- c3000_pre/linux/net/bluetooth/syms.c 2004-08-21 09:49:19.000000000 +0900
-+++ c3000_work/linux/net/bluetooth/syms.c 2004-12-16 23:01:14.000000000 +0900
-@@ -44,6 +44,9 @@
- /* HCI Core */
- EXPORT_SYMBOL(hci_register_dev);
- EXPORT_SYMBOL(hci_unregister_dev);
-+EXPORT_SYMBOL(hci_suspend_dev);
-+EXPORT_SYMBOL(hci_resume_dev);
-+
- EXPORT_SYMBOL(hci_register_proto);
- EXPORT_SYMBOL(hci_unregister_proto);
-
-@@ -56,7 +59,7 @@
- EXPORT_SYMBOL(hci_recv_frame);
- EXPORT_SYMBOL(hci_send_acl);
- EXPORT_SYMBOL(hci_send_sco);
--EXPORT_SYMBOL(hci_send_raw);
-+EXPORT_SYMBOL(hci_send_cmd);
- EXPORT_SYMBOL(hci_si_event);
-
- /* BlueZ lib */
-@@ -75,4 +78,4 @@
- EXPORT_SYMBOL(bluez_sock_poll);
- EXPORT_SYMBOL(bluez_accept_enqueue);
- EXPORT_SYMBOL(bluez_accept_dequeue);
--EXPORT_SYMBOL(bluez_sock_w4_connect);
-+EXPORT_SYMBOL(bluez_sock_wait_state);
-diff -Nur c3000_pre/linux/net/netsyms.c c3000_work/linux/net/netsyms.c
---- c3000_pre/linux/net/netsyms.c 2004-08-21 09:49:17.000000000 +0900
-+++ c3000_work/linux/net/netsyms.c 2004-12-16 23:01:14.000000000 +0900
-@@ -168,6 +168,7 @@
- EXPORT_SYMBOL(put_cmsg);
- EXPORT_SYMBOL(sock_kmalloc);
- EXPORT_SYMBOL(sock_kfree_s);
-+EXPORT_SYMBOL(sockfd_lookup);
-
- #ifdef CONFIG_FILTER
- EXPORT_SYMBOL(sk_run_filter);
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P12-fbcon-fix_041219.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P12-fbcon-fix_041219.patch
deleted file mode 100644
index 37ca13e9a5..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P12-fbcon-fix_041219.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-diff -Nur c3000_pre/linux/drivers/video/fbcon-cfb16.c c3000_work/linux/drivers/video/fbcon-cfb16.c
---- c3000_pre/linux/drivers/video/fbcon-cfb16.c 2004-12-16 22:55:38.000000000 +0900
-+++ c3000_work/linux/drivers/video/fbcon-cfb16.c 2004-12-19 00:11:24.000000000 +0900
-@@ -219,7 +219,7 @@
-
- width *= fontwidth(p)/4;
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-- if (width * 8 == bytes)
-+ if (height * 8 == bytes)
- rectfill(dest, 1, lines * width * 4, bgx, bytes);
- else
- rectfill(dest, lines, width * 4, bgx, bytes);
-diff -Nur c3000_pre/linux/drivers/video/fbcon.c c3000_work/linux/drivers/video/fbcon.c
---- c3000_pre/linux/drivers/video/fbcon.c 2004-12-16 22:55:38.000000000 +0900
-+++ c3000_work/linux/drivers/video/fbcon.c 2004-12-19 00:28:12.000000000 +0900
-@@ -247,7 +247,7 @@
-
- static void fbcon_setup(int con, int init, int logo);
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
--static __inline__ int real_x(struct display *p, int ypos);
-+static __inline__ int real_x(struct display *p, int xpos);
- #else
- static __inline__ int real_y(struct display *p, int ypos);
- #endif
-@@ -263,7 +263,7 @@
- static __inline__ void xpan_down(int unit, struct vc_data *conp,
- struct display *p, int count);
- static void fbcon_bmove_rec(struct display *p, int sx, int sy, int dx, int dy,
-- int height, int width, u_int y_break);
-+ int height, int width, u_int x_break);
- #else
- static __inline__ void ywrap_up(int unit, struct vc_data *conp,
- struct display *p, int count);
-@@ -1011,7 +1010,7 @@
-
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- if ((sx <= p->cursor_x) && (p->cursor_x < sx+height) &&
-- (sx <= p->cursor_y) && (p->cursor_y < sy+width)) {
-+ (sy <= p->cursor_y) && (p->cursor_y < sy+width)) {
- #else
- if ((sy <= p->cursor_y) && (p->cursor_y < sy+height) &&
- (sx <= p->cursor_x) && (p->cursor_x < sx+width)) {
-@@ -1235,7 +1234,7 @@
- if (p->dispsw->cursor) {
- #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
- p->cursor_y = conp->vc_y;
-- p->cursor_y = x;
-+ p->cursor_x = x;
- p->dispsw->cursor(p, mode, p->cursor_y, real_x(p, p->cursor_x));
- #else
- p->cursor_x = conp->vc_x;
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P14-lowlatency_041221.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P14-lowlatency_041221.patch
deleted file mode 100644
index edd63fb13b..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P14-lowlatency_041221.patch
+++ /dev/null
@@ -1,1677 +0,0 @@
-diff -Nur c3000_pre/linux/arch/arm/config.in c3000_test/linux/arch/arm/config.in
---- c3000_pre/linux/arch/arm/config.in 2004-12-16 22:55:34.000000000 +0900
-+++ c3000_test/linux/arch/arm/config.in 2004-12-20 23:23:28.000000000 +0900
-@@ -574,6 +574,8 @@
- fi
- fi
- dep_bool 'Preemptible Kernel support' CONFIG_PREEMPT $CONFIG_CPU_32
-+bool 'Low latency scheduling' CONFIG_LOLAT
-+dep_bool 'Control low latency with sysctl' CONFIG_LOLAT_SYSCTL $CONFIG_LOLAT
-
- endmenu
-
-diff -Nur c3000_pre/linux/arch/i386/config.in c3000_test/linux/arch/i386/config.in
---- c3000_pre/linux/arch/i386/config.in 2004-08-21 09:48:09.000000000 +0900
-+++ c3000_test/linux/arch/i386/config.in 2004-12-20 22:56:21.000000000 +0900
-@@ -25,6 +25,9 @@
-
- mainmenu_option next_comment
- comment 'Processor type and features'
-+bool 'Low latency scheduling' CONFIG_LOLAT
-+dep_bool 'Control low latency with sysctl' CONFIG_LOLAT_SYSCTL $CONFIG_LOLAT
-+
- choice 'Processor family' \
- "386 CONFIG_M386 \
- 486 CONFIG_M486 \
-diff -Nur c3000_pre/linux/drivers/block/ll_rw_blk.c c3000_test/linux/drivers/block/ll_rw_blk.c
---- c3000_pre/linux/drivers/block/ll_rw_blk.c 2004-08-21 09:48:24.000000000 +0900
-+++ c3000_test/linux/drivers/block/ll_rw_blk.c 2004-12-20 22:56:21.000000000 +0900
-@@ -1211,6 +1211,7 @@
- kstat.pgpgin += count;
- break;
- }
-+ conditional_schedule();
- }
-
- /**
-diff -Nur c3000_pre/linux/drivers/char/mem.c c3000_test/linux/drivers/char/mem.c
---- c3000_pre/linux/drivers/char/mem.c 2004-08-21 09:48:25.000000000 +0900
-+++ c3000_test/linux/drivers/char/mem.c 2004-12-20 22:56:21.000000000 +0900
-@@ -422,7 +422,7 @@
- if (count > size)
- count = size;
-
-- zap_page_range(mm, addr, count);
-+ zap_page_range(mm, addr, count, 0);
- zeromap_page_range(addr, count, PAGE_COPY);
-
- size -= count;
-diff -Nur c3000_pre/linux/drivers/char/random.c c3000_test/linux/drivers/char/random.c
---- c3000_pre/linux/drivers/char/random.c 2004-08-21 09:48:25.000000000 +0900
-+++ c3000_test/linux/drivers/char/random.c 2004-12-20 22:56:21.000000000 +0900
-@@ -1374,6 +1374,11 @@
- buf += i;
- ret += i;
- add_timer_randomness(&extract_timer_state, nbytes);
-+#if LOWLATENCY_NEEDED
-+ /* This can happen in softirq's, but that's what we want */
-+ if (conditional_schedule_needed())
-+ break;
-+#endif
- }
-
- /* Wipe data just returned from memory */
-diff -Nur c3000_pre/linux/drivers/i2c/i2c-core.c c3000_test/linux/drivers/i2c/i2c-core.c
---- c3000_pre/linux/drivers/i2c/i2c-core.c 2004-08-21 09:48:34.000000000 +0900
-+++ c3000_test/linux/drivers/i2c/i2c-core.c 2004-12-20 22:56:21.000000000 +0900
-@@ -761,6 +761,8 @@
- {
- int ret;
-
-+ conditional_schedule();
-+
- if (adap->algo->master_xfer) {
- DEB2(printk("i2c-core.o: master_xfer: %s with %d msgs.\n",
- adap->name,num));
-@@ -783,6 +785,8 @@
- struct i2c_adapter *adap=client->adapter;
- struct i2c_msg msg;
-
-+ conditional_schedule();
-+
- if (client->adapter->algo->master_xfer) {
- msg.addr = client->addr;
- msg.flags = client->flags & I2C_M_TEN;
-@@ -812,6 +816,9 @@
- struct i2c_adapter *adap=client->adapter;
- struct i2c_msg msg;
- int ret;
-+
-+ conditional_schedule();
-+
- if (client->adapter->algo->master_xfer) {
- msg.addr = client->addr;
- msg.flags = client->flags & I2C_M_TEN;
-diff -Nur c3000_pre/linux/fs/buffer.c c3000_test/linux/fs/buffer.c
---- c3000_pre/linux/fs/buffer.c 2004-08-21 09:48:58.000000000 +0900
-+++ c3000_test/linux/fs/buffer.c 2004-12-20 22:56:21.000000000 +0900
-@@ -216,8 +216,10 @@
-
- if (dev != NODEV && bh->b_dev != dev)
- continue;
-- if (test_and_set_bit(BH_Lock, &bh->b_state))
-+ if (test_and_set_bit(BH_Lock, &bh->b_state)) {
-+ __refile_buffer(bh);
- continue;
-+ }
- if (atomic_set_buffer_clean(bh)) {
- __refile_buffer(bh);
- get_bh(bh);
-@@ -227,6 +229,7 @@
-
- spin_unlock(&lru_list_lock);
- write_locked_buffers(array, count);
-+ conditional_schedule();
- return -EAGAIN;
- }
- unlock_buffer(bh);
-@@ -260,12 +263,19 @@
- struct buffer_head * next;
- int nr;
-
-- next = lru_list[index];
- nr = nr_buffers_type[index];
-+repeat:
-+ next = lru_list[index];
- while (next && --nr >= 0) {
- struct buffer_head *bh = next;
- next = bh->b_next_free;
-
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&lru_list_lock);
-+ unconditional_schedule();
-+ spin_lock(&lru_list_lock);
-+ goto repeat;
-+ }
- if (!buffer_locked(bh)) {
- if (refile)
- __refile_buffer(bh);
-@@ -273,7 +283,6 @@
- }
- if (dev != NODEV && bh->b_dev != dev)
- continue;
--
- get_bh(bh);
- spin_unlock(&lru_list_lock);
- wait_on_buffer (bh);
-@@ -306,6 +315,15 @@
- {
- int err = 0;
-
-+#if LOWLATENCY_NEEDED
-+ /*
-+ * syncing devA when there are lots of buffers dirty against
-+ * devB is expensive.
-+ */
-+ if (enable_lowlatency)
-+ dev = NODEV;
-+#endif
-+
- /* One pass for no-wait, three for wait:
- * 0) write out all dirty, unlocked buffers;
- * 1) wait for all dirty locked buffers;
-@@ -697,6 +715,16 @@
- /* Not hashed? */
- if (!bh->b_pprev)
- continue;
-+
-+ if (conditional_schedule_needed()) {
-+ get_bh(bh);
-+ spin_unlock(&lru_list_lock);
-+ unconditional_schedule();
-+ spin_lock(&lru_list_lock);
-+ put_bh(bh);
-+ slept = 1;
-+ }
-+
- if (buffer_locked(bh)) {
- get_bh(bh);
- spin_unlock(&lru_list_lock);
-@@ -848,12 +876,19 @@
- struct buffer_head *bh;
- struct inode tmp;
- int err = 0, err2;
--
-+ DEFINE_RESCHED_COUNT;
-+
- INIT_LIST_HEAD(&tmp.i_dirty_buffers);
--
-+
-+repeat:
- spin_lock(&lru_list_lock);
-
- while (!list_empty(list)) {
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&lru_list_lock);
-+ unconditional_schedule();
-+ goto repeat;
-+ }
- bh = BH_ENTRY(list->next);
- list_del(&bh->b_inode_buffers);
- if (!buffer_dirty(bh) && !buffer_locked(bh))
-@@ -878,8 +913,18 @@
- spin_lock(&lru_list_lock);
- }
- }
-+ if (TEST_RESCHED_COUNT(32)) {
-+ RESET_RESCHED_COUNT();
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&lru_list_lock);
-+ unconditional_schedule(); /* Syncing many dirty buffers */
-+ spin_lock(&lru_list_lock);
-+ }
-+ }
- }
-
-+ RESET_RESCHED_COUNT();
-+
- while (!list_empty(&tmp.i_dirty_buffers)) {
- bh = BH_ENTRY(tmp.i_dirty_buffers.prev);
- remove_inode_queue(bh);
-@@ -889,6 +934,7 @@
- if (!buffer_uptodate(bh))
- err = -EIO;
- brelse(bh);
-+ conditional_schedule();
- spin_lock(&lru_list_lock);
- }
-
-@@ -916,11 +962,20 @@
- struct buffer_head *bh;
- struct list_head *p;
- int err = 0;
-+ DEFINE_RESCHED_COUNT;
-
-+repeat:
-+ conditional_schedule();
- spin_lock(&lru_list_lock);
-
-- repeat:
- list_for_each_prev(p, list) {
-+ if (TEST_RESCHED_COUNT(32)) {
-+ RESET_RESCHED_COUNT();
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&lru_list_lock);
-+ goto repeat;
-+ }
-+ }
- bh = BH_ENTRY(p);
- if (buffer_locked(bh)) {
- get_bh(bh);
-@@ -929,7 +984,6 @@
- if (!buffer_uptodate(bh))
- err = -EIO;
- brelse(bh);
-- spin_lock(&lru_list_lock);
- goto repeat;
- }
- }
-@@ -946,12 +1000,24 @@
- void invalidate_inode_buffers(struct inode *inode)
- {
- struct list_head * entry;
--
-+
-+repeat:
-+ conditional_schedule();
- spin_lock(&lru_list_lock);
-- while ((entry = inode->i_dirty_buffers.next) != &inode->i_dirty_buffers)
-+ while ((entry = inode->i_dirty_buffers.next) != &inode->i_dirty_buffers) {
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&lru_list_lock);
-+ goto repeat;
-+ }
- remove_inode_queue(BH_ENTRY(entry));
-- while ((entry = inode->i_dirty_data_buffers.next) != &inode->i_dirty_data_buffers)
-+ }
-+ while ((entry = inode->i_dirty_data_buffers.next) != &inode->i_dirty_data_buffers) {
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&lru_list_lock);
-+ goto repeat;
-+ }
- remove_inode_queue(BH_ENTRY(entry));
-+ }
- spin_unlock(&lru_list_lock);
- }
-
-@@ -974,6 +1040,7 @@
- bh = get_hash_table(dev, block, size);
- if (bh) {
- touch_buffer(bh);
-+ conditional_schedule();
- return bh;
- }
-
-@@ -2831,7 +2898,7 @@
-
- DECLARE_WAIT_QUEUE_HEAD(bdflush_wait);
-
--void wakeup_bdflush(void)
-+void wakeup_bdflush(void)
- {
- wake_up_interruptible(&bdflush_wait);
- }
-diff -Nur c3000_pre/linux/fs/dcache.c c3000_test/linux/fs/dcache.c
---- c3000_pre/linux/fs/dcache.c 2004-08-21 09:48:58.000000000 +0900
-+++ c3000_test/linux/fs/dcache.c 2004-12-20 22:56:21.000000000 +0900
-@@ -320,11 +320,23 @@
-
- void prune_dcache(int count)
- {
-+ DEFINE_RESCHED_COUNT;
-+
-+redo:
- spin_lock(&dcache_lock);
- for (;;) {
- struct dentry *dentry;
- struct list_head *tmp;
-
-+ if (TEST_RESCHED_COUNT(100)) {
-+ RESET_RESCHED_COUNT();
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&dcache_lock);
-+ unconditional_schedule();
-+ goto redo;
-+ }
-+ }
-+
- tmp = dentry_unused.prev;
-
- if (tmp == &dentry_unused)
-@@ -479,6 +491,7 @@
- struct dentry *this_parent = parent;
- struct list_head *next;
- int found = 0;
-+ DEFINE_RESCHED_COUNT;
-
- spin_lock(&dcache_lock);
- repeat:
-@@ -493,6 +506,13 @@
- list_add(&dentry->d_lru, dentry_unused.prev);
- found++;
- }
-+
-+ if (TEST_RESCHED_COUNT(500) && found > 10) {
-+ if (conditional_schedule_needed()) /* Typically sys_rmdir() */
-+ goto out;
-+ RESET_RESCHED_COUNT();
-+ }
-+
- /*
- * Descend a level if the d_subdirs list is non-empty.
- */
-@@ -517,6 +537,7 @@
- #endif
- goto resume;
- }
-+out:
- spin_unlock(&dcache_lock);
- return found;
- }
-@@ -532,8 +553,10 @@
- {
- int found;
-
-- while ((found = select_parent(parent)) != 0)
-+ while ((found = select_parent(parent)) != 0) {
- prune_dcache(found);
-+ conditional_schedule(); /* Typically sys_rmdir() */
-+ }
- }
-
- /*
-diff -Nur c3000_pre/linux/fs/exec.c c3000_test/linux/fs/exec.c
---- c3000_pre/linux/fs/exec.c 2004-08-21 09:48:58.000000000 +0900
-+++ c3000_test/linux/fs/exec.c 2004-12-20 22:56:21.000000000 +0900
-@@ -249,7 +249,7 @@
- memset(kaddr+offset+len, 0,
- PAGE_SIZE-offset-len);
- }
-- err = copy_from_user(kaddr+offset, str, bytes_to_copy);
-+ err = ll_copy_from_user(kaddr+offset, str, bytes_to_copy);
- if (err) {
- ret = -EFAULT;
- goto out;
-diff -Nur c3000_pre/linux/fs/ext2/dir.c c3000_test/linux/fs/ext2/dir.c
---- c3000_pre/linux/fs/ext2/dir.c 2004-08-21 09:48:59.000000000 +0900
-+++ c3000_test/linux/fs/ext2/dir.c 2004-12-20 22:56:21.000000000 +0900
-@@ -153,6 +153,7 @@
- struct address_space *mapping = dir->i_mapping;
- struct page *page = read_cache_page(mapping, n,
- (filler_t*)mapping->a_ops->readpage, NULL);
-+ conditional_schedule(); /* Scanning large directories */
- if (!IS_ERR(page)) {
- wait_on_page(page);
- kmap(page);
-diff -Nur c3000_pre/linux/fs/ext2/inode.c c3000_test/linux/fs/ext2/inode.c
---- c3000_pre/linux/fs/ext2/inode.c 2004-08-21 09:48:59.000000000 +0900
-+++ c3000_test/linux/fs/ext2/inode.c 2004-12-20 22:56:21.000000000 +0900
-@@ -715,8 +715,13 @@
- {
- unsigned long block_to_free = 0, count = 0;
- unsigned long nr;
-+ DEFINE_RESCHED_COUNT;
-
- for ( ; p < q ; p++) {
-+ if (TEST_RESCHED_COUNT(32)) {
-+ RESET_RESCHED_COUNT();
-+ conditional_schedule();
-+ }
- nr = le32_to_cpu(*p);
- if (nr) {
- *p = 0;
-@@ -759,6 +764,7 @@
- if (depth--) {
- int addr_per_block = EXT2_ADDR_PER_BLOCK(inode->i_sb);
- for ( ; p < q ; p++) {
-+ conditional_schedule(); /* Deleting large files */
- nr = le32_to_cpu(*p);
- if (!nr)
- continue;
-diff -Nur c3000_pre/linux/fs/ext3/balloc.c c3000_test/linux/fs/ext3/balloc.c
---- c3000_pre/linux/fs/ext3/balloc.c 2004-08-21 09:48:59.000000000 +0900
-+++ c3000_test/linux/fs/ext3/balloc.c 2004-12-20 22:56:21.000000000 +0900
-@@ -363,6 +363,9 @@
- }
- }
- #endif
-+ /* superblock lock is held, so this is safe */
-+ conditional_schedule();
-+
- BUFFER_TRACE(bitmap_bh, "clear bit");
- if (!ext3_clear_bit (bit + i, bitmap_bh->b_data)) {
- ext3_error (sb, __FUNCTION__,
-diff -Nur c3000_pre/linux/fs/ext3/inode.c c3000_test/linux/fs/ext3/inode.c
---- c3000_pre/linux/fs/ext3/inode.c 2004-08-21 09:48:59.000000000 +0900
-+++ c3000_test/linux/fs/ext3/inode.c 2004-12-20 22:56:21.000000000 +0900
-@@ -902,6 +902,8 @@
-
- prev_blocks = inode->i_blocks;
-
-+ conditional_schedule(); /* Reading large directories */
-+
- bh = ext3_getblk (handle, inode, block, create, err);
- if (!bh)
- return bh;
-@@ -1605,6 +1607,7 @@
- */
- for (p = first; p < last; p++) {
- u32 nr = le32_to_cpu(*p);
-+ conditional_schedule();
- if (nr) {
- struct buffer_head *bh;
-
-@@ -1659,6 +1662,7 @@
- }
-
- for (p = first; p < last; p++) {
-+ conditional_schedule();
- nr = le32_to_cpu(*p);
- if (nr) {
- /* accumulate blocks to free if they're contiguous */
-diff -Nur c3000_pre/linux/fs/ext3/namei.c c3000_test/linux/fs/ext3/namei.c
---- c3000_pre/linux/fs/ext3/namei.c 2004-08-21 09:48:59.000000000 +0900
-+++ c3000_test/linux/fs/ext3/namei.c 2004-12-20 22:56:21.000000000 +0900
-@@ -157,6 +157,7 @@
- if ((bh = bh_use[ra_ptr++]) == NULL)
- goto next;
- wait_on_buffer(bh);
-+ conditional_schedule();
- if (!buffer_uptodate(bh)) {
- /* read error, skip block & hope for the best */
- brelse(bh);
-diff -Nur c3000_pre/linux/fs/inode.c c3000_test/linux/fs/inode.c
---- c3000_pre/linux/fs/inode.c 2004-08-21 09:48:58.000000000 +0900
-+++ c3000_test/linux/fs/inode.c 2004-12-20 23:00:06.000000000 +0900
-@@ -251,6 +251,8 @@
-
- filemap_fdatawait(inode->i_mapping);
-
-+ conditional_schedule();
-+
- spin_lock(&inode_lock);
- inode->i_state &= ~I_LOCK;
- if (!(inode->i_state & I_FREEING)) {
-@@ -561,6 +563,7 @@
-
- while ((inode_entry = head->next) != head)
- {
-+ conditional_schedule();
- list_del(inode_entry);
-
- inode = list_entry(inode_entry, struct inode, i_list);
-@@ -589,9 +592,22 @@
- if (tmp == head)
- break;
- inode = list_entry(tmp, struct inode, i_list);
-+
-+ if (conditional_schedule_needed()) {
-+ atomic_inc(&inode->i_count);
-+ spin_unlock(&inode_lock);
-+ unconditional_schedule();
-+ spin_lock(&inode_lock);
-+ atomic_dec(&inode->i_count);
-+ }
-+
- if (inode->i_sb != sb)
- continue;
-+ atomic_inc(&inode->i_count);
-+ spin_unlock(&inode_lock);
- invalidate_inode_buffers(inode);
-+ spin_lock(&inode_lock);
-+ atomic_dec(&inode->i_count);
- if (!atomic_read(&inode->i_count)) {
- list_del_init(&inode->i_hash);
- list_del(&inode->i_list);
-@@ -896,6 +912,8 @@
- if (inode) {
- struct inode * old;
-
-+ conditional_schedule(); /* sync_old_buffers */
-+
- spin_lock(&inode_lock);
- /* We released the lock, so.. */
- old = find_inode(sb, ino, head, find_actor, opaque);
-@@ -1313,18 +1331,32 @@
- int request=goal;
- int loop=0;
- #endif
-+ int nr_to_scan = inodes_stat.nr_unused;
-
-+resume:
- spin_lock(&inode_lock);
-
- count = 0;
- entry = inode_unused.prev;
-- while (entry != &inode_unused)
-- {
-+ while (entry != &inode_unused && nr_to_scan--) {
- struct list_head *tmp = entry;
-
- #ifdef JFFS2_INODE_DEBUG
- loop++;
- #endif
-+ if (conditional_schedule_needed()) {
-+ /*
-+ * Need to drop the lock. Reposition
-+ * the list head so we start here next time.
-+ * This can corrupt the LRU nature of the
-+ * unused list, but this isn't very important.
-+ */
-+ list_del(&inode_unused);
-+ list_add(&inode_unused, entry);
-+ spin_unlock(&inode_lock);
-+ unconditional_schedule();
-+ goto resume;
-+ }
- entry = entry->prev;
- inode = INODE(tmp);
- if (inode->i_state & (I_FREEING|I_CLEAR|I_LOCK))
-diff -Nur c3000_pre/linux/fs/jbd/checkpoint.c c3000_test/linux/fs/jbd/checkpoint.c
---- c3000_pre/linux/fs/jbd/checkpoint.c 2004-08-21 09:48:59.000000000 +0900
-+++ c3000_test/linux/fs/jbd/checkpoint.c 2004-12-20 22:56:21.000000000 +0900
-@@ -431,7 +431,11 @@
- {
- transaction_t *transaction, *last_transaction, *next_transaction;
- int ret = 0;
-+ int ll_retries = 4; /* lowlatency addition */
-
-+restart:
-+ if (ll_retries-- == 0)
-+ goto out;
- transaction = journal->j_checkpoint_transactions;
- if (transaction == 0)
- goto out;
-@@ -451,6 +455,12 @@
- jh = next_jh;
- next_jh = jh->b_cpnext;
- ret += __try_to_free_cp_buf(jh);
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&journal_datalist_lock);
-+ unconditional_schedule();
-+ spin_lock(&journal_datalist_lock);
-+ goto restart;
-+ }
- } while (jh != last_jh);
- }
- } while (transaction != last_transaction);
-diff -Nur c3000_pre/linux/fs/jbd/commit.c c3000_test/linux/fs/jbd/commit.c
---- c3000_pre/linux/fs/jbd/commit.c 2004-08-21 09:48:59.000000000 +0900
-+++ c3000_test/linux/fs/jbd/commit.c 2004-12-20 22:56:21.000000000 +0900
-@@ -212,6 +212,16 @@
- __journal_remove_journal_head(bh);
- refile_buffer(bh);
- __brelse(bh);
-+ if (conditional_schedule_needed()) {
-+ if (commit_transaction->t_sync_datalist)
-+ commit_transaction->t_sync_datalist =
-+ next_jh;
-+ if (bufs)
-+ break;
-+ spin_unlock(&journal_datalist_lock);
-+ unconditional_schedule();
-+ goto write_out_data;
-+ }
- }
- }
- if (bufs == ARRAY_SIZE(wbuf)) {
-@@ -235,8 +245,7 @@
- journal_brelse_array(wbuf, bufs);
- lock_journal(journal);
- spin_lock(&journal_datalist_lock);
-- if (bufs)
-- goto write_out_data_locked;
-+ goto write_out_data_locked;
- }
-
- /*
-@@ -272,6 +281,14 @@
- */
- while ((jh = commit_transaction->t_async_datalist)) {
- struct buffer_head *bh = jh2bh(jh);
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&journal_datalist_lock);
-+ unlock_journal(journal);
-+ unconditional_schedule();
-+ lock_journal(journal);
-+ spin_lock(&journal_datalist_lock);
-+ continue; /* List may have changed */
-+ }
- if (buffer_locked(bh)) {
- spin_unlock(&journal_datalist_lock);
- unlock_journal(journal);
-@@ -486,6 +503,8 @@
- wait_for_iobuf:
- while (commit_transaction->t_iobuf_list != NULL) {
- struct buffer_head *bh;
-+
-+ conditional_schedule();
- jh = commit_transaction->t_iobuf_list->b_tprev;
- bh = jh2bh(jh);
- if (buffer_locked(bh)) {
-@@ -644,6 +663,8 @@
- transaction_t *cp_transaction;
- struct buffer_head *bh;
-
-+ conditional_schedule(); /* journal is locked */
-+
- jh = commit_transaction->t_forget;
- J_ASSERT_JH(jh, jh->b_transaction == commit_transaction ||
- jh->b_transaction == journal->j_running_transaction);
-diff -Nur c3000_pre/linux/fs/proc/array.c c3000_test/linux/fs/proc/array.c
---- c3000_pre/linux/fs/proc/array.c 2004-08-21 09:49:01.000000000 +0900
-+++ c3000_test/linux/fs/proc/array.c 2004-12-20 22:56:21.000000000 +0900
-@@ -498,9 +498,11 @@
- if (end > PMD_SIZE)
- end = PMD_SIZE;
- do {
-- pte_t page = *pte;
-+ pte_t page;
- struct page *ptpage;
-
-+ conditional_schedule(); /* For `top' and `ps' */
-+ page = *pte;
- address += PAGE_SIZE;
- pte++;
- if (pte_none(page))
-diff -Nur c3000_pre/linux/fs/proc/generic.c c3000_test/linux/fs/proc/generic.c
---- c3000_pre/linux/fs/proc/generic.c 2004-08-21 09:49:01.000000000 +0900
-+++ c3000_test/linux/fs/proc/generic.c 2004-12-20 22:56:21.000000000 +0900
-@@ -98,6 +98,8 @@
- retval = n;
- break;
- }
-+
-+ conditional_schedule(); /* Some /proc files are large */
-
- /* This is a hack to allow mangling of file pos independent
- * of actual bytes read. Simply place the data at page,
-diff -Nur c3000_pre/linux/fs/reiserfs/buffer2.c c3000_test/linux/fs/reiserfs/buffer2.c
---- c3000_pre/linux/fs/reiserfs/buffer2.c 2004-08-21 09:49:01.000000000 +0900
-+++ c3000_test/linux/fs/reiserfs/buffer2.c 2004-12-20 22:56:21.000000000 +0900
-@@ -54,6 +54,7 @@
- PROC_EXP( unsigned int ctx_switches = kstat.context_swtch );
-
- result = bread (super -> s_dev, n_block, n_size);
-+ conditional_schedule();
- PROC_INFO_INC( super, breads );
- PROC_EXP( if( kstat.context_swtch != ctx_switches )
- PROC_INFO_INC( super, bread_miss ) );
-diff -Nur c3000_pre/linux/fs/reiserfs/journal.c c3000_test/linux/fs/reiserfs/journal.c
---- c3000_pre/linux/fs/reiserfs/journal.c 2004-08-21 09:49:01.000000000 +0900
-+++ c3000_test/linux/fs/reiserfs/journal.c 2004-12-20 22:56:21.000000000 +0900
-@@ -573,6 +573,7 @@
- /* lock the current transaction */
- inline static void lock_journal(struct super_block *p_s_sb) {
- PROC_INFO_INC( p_s_sb, journal.lock_journal );
-+ conditional_schedule();
- while(atomic_read(&(SB_JOURNAL(p_s_sb)->j_wlock)) > 0) {
- PROC_INFO_INC( p_s_sb, journal.lock_journal_wait );
- sleep_on(&(SB_JOURNAL(p_s_sb)->j_wait)) ;
-@@ -703,6 +704,7 @@
- mark_buffer_dirty(tbh) ;
- }
- ll_rw_block(WRITE, 1, &tbh) ;
-+ conditional_schedule();
- count++ ;
- put_bh(tbh) ; /* once for our get_hash */
- }
-@@ -832,6 +834,7 @@
- set_bit(BH_Dirty, &(SB_JOURNAL(p_s_sb)->j_header_bh->b_state)) ;
- ll_rw_block(WRITE, 1, &(SB_JOURNAL(p_s_sb)->j_header_bh)) ;
- wait_on_buffer((SB_JOURNAL(p_s_sb)->j_header_bh)) ;
-+ conditional_schedule();
- if (!buffer_uptodate(SB_JOURNAL(p_s_sb)->j_header_bh)) {
- printk( "reiserfs: journal-837: IO error during journal replay\n" );
- return -EIO ;
-@@ -2125,6 +2128,7 @@
- }
-
- int journal_begin(struct reiserfs_transaction_handle *th, struct super_block * p_s_sb, unsigned long nblocks) {
-+ conditional_schedule();
- return do_journal_begin_r(th, p_s_sb, nblocks, 0) ;
- }
-
-@@ -2265,6 +2269,7 @@
- }
-
- int journal_end(struct reiserfs_transaction_handle *th, struct super_block *p_s_sb, unsigned long nblocks) {
-+ conditional_schedule();
- return do_journal_end(th, p_s_sb, nblocks, 0) ;
- }
-
-@@ -2716,6 +2721,7 @@
- RFALSE( buffer_locked(bh) && cur_tb != NULL,
- "waiting while do_balance was running\n") ;
- wait_on_buffer(bh) ;
-+ conditional_schedule();
- }
- PROC_INFO_INC( p_s_sb, journal.prepare_retry );
- retry_count++ ;
-@@ -2888,6 +2894,7 @@
- /* copy all the real blocks into log area. dirty log blocks */
- if (test_bit(BH_JDirty, &cn->bh->b_state)) {
- struct buffer_head *tmp_bh ;
-+ conditional_schedule();
- tmp_bh = sb_getblk(p_s_sb, reiserfs_get_journal_block(p_s_sb) +
- ((cur_write_start + jindex) % JOURNAL_BLOCK_COUNT)) ;
- mark_buffer_uptodate(tmp_bh, 1) ;
-diff -Nur c3000_pre/linux/fs/reiserfs/stree.c c3000_test/linux/fs/reiserfs/stree.c
---- c3000_pre/linux/fs/reiserfs/stree.c 2004-08-21 09:49:01.000000000 +0900
-+++ c3000_test/linux/fs/reiserfs/stree.c 2004-12-20 22:56:21.000000000 +0900
-@@ -652,9 +652,8 @@
- stop at leaf level - set to
- DISK_LEAF_NODE_LEVEL */
- ) {
-- int n_block_number = SB_ROOT_BLOCK (p_s_sb),
-- expected_level = SB_TREE_HEIGHT (p_s_sb),
-- n_block_size = p_s_sb->s_blocksize;
-+ int n_block_number, expected_level;
-+ int n_block_size = p_s_sb->s_blocksize;
- struct buffer_head * p_s_bh;
- struct path_element * p_s_last_element;
- int n_node_level, n_retval;
-@@ -666,7 +665,8 @@
- #endif
-
- PROC_INFO_INC( p_s_sb, search_by_key );
--
-+ conditional_schedule();
-+
- /* As we add each node to a path we increase its count. This means that
- we must be careful to release all nodes in a path before we either
- discard the path struct or re-use the path struct, as we do here. */
-@@ -678,6 +678,8 @@
- /* With each iteration of this loop we search through the items in the
- current node, and calculate the next current node(next path element)
- for the next iteration of this loop.. */
-+ n_block_number = SB_ROOT_BLOCK (p_s_sb);
-+ expected_level = SB_TREE_HEIGHT (p_s_sb);
- while ( 1 ) {
-
- #ifdef CONFIG_REISERFS_CHECK
-@@ -1104,6 +1106,8 @@
- for (n_counter = *p_n_removed;
- n_counter < n_unfm_number; n_counter++, p_n_unfm_pointer-- ) {
-
-+ conditional_schedule();
-+
- if (item_moved (&s_ih, p_s_path)) {
- need_research = 1 ;
- break;
-diff -Nur c3000_pre/linux/include/linux/low-latency.h c3000_test/linux/include/linux/low-latency.h
---- c3000_pre/linux/include/linux/low-latency.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_test/linux/include/linux/low-latency.h 2004-12-20 22:56:21.000000000 +0900
-@@ -0,0 +1,109 @@
-+/*
-+ * include/linux/low-latency.h
-+ *
-+ * Andrew Morton <akpm@zip.com.au>
-+ */
-+
-+#ifndef LOW_LATENCY_H_INCLUDED
-+#define LOW_LATENCY_H_INCLUDED
-+
-+#if defined(CONFIG_LOLAT)
-+#define LOWLATENCY_NEEDED 1
-+#else
-+#define LOWLATENCY_NEEDED 0
-+#endif
-+
-+#if LOWLATENCY_NEEDED
-+
-+#include <linux/cache.h> /* For ____cacheline_aligned */
-+
-+#ifdef CONFIG_LOLAT_SYSCTL
-+extern struct low_latency_enable_struct {
-+ int yep;
-+} ____cacheline_aligned __enable_lowlatency;
-+#define enable_lowlatency __enable_lowlatency.yep
-+
-+#else
-+#define enable_lowlatency 1
-+#endif
-+
-+/*
-+ * Set this non-zero to generate low-latency instrumentation
-+ */
-+#define LOWLATENCY_DEBUG 0
-+
-+/*
-+ * Set this non-zero for robustness testing
-+ */
-+#define LOWLATENCY_ALWAYS_SCHEDULE 0
-+
-+#if LOWLATENCY_DEBUG
-+
-+#if LOWLATENCY_ALWAYS_SCHEDULE
-+#define conditional_schedule_needed() ((enable_lowlatency == 2) || (enable_lowlatency && current->need_resched))
-+#else
-+#define conditional_schedule_needed() (enable_lowlatency && current->need_resched)
-+#endif
-+
-+struct lolat_stats_t {
-+ unsigned long count;
-+ int visited;
-+ const char *file;
-+ int line;
-+ struct lolat_stats_t *next;
-+};
-+
-+void set_running_and_schedule(struct lolat_stats_t *stats);
-+
-+#define unconditional_schedule() \
-+ do { \
-+ static struct lolat_stats_t stats = { \
-+ file: __FILE__, \
-+ line: __LINE__, \
-+ }; \
-+ set_running_and_schedule(&stats); \
-+ } while (0)
-+
-+extern void show_lolat_stats(void);
-+
-+#else /* LOWLATENCY_DEBUG */
-+
-+#if LOWLATENCY_ALWAYS_SCHEDULE
-+#define conditional_schedule_needed() 1
-+#else
-+#define conditional_schedule_needed() (current->need_resched)
-+#endif
-+
-+void set_running_and_schedule(void);
-+#define unconditional_schedule() set_running_and_schedule()
-+
-+#endif /* LOWLATENCY_DEBUG */
-+
-+#define conditional_schedule() \
-+ do { \
-+ if (conditional_schedule_needed()) \
-+ unconditional_schedule(); \
-+ } while (0)
-+
-+#define DEFINE_RESCHED_COUNT int resched_count = 0
-+#define TEST_RESCHED_COUNT(n) (enable_lowlatency && (++resched_count > (n)))
-+#define RESET_RESCHED_COUNT() resched_count = 0
-+extern int ll_copy_to_user(void *to_user, const void *from, unsigned long len);
-+extern int ll_copy_from_user(void *to, const void *from_user, unsigned long len);
-+
-+#else /* LOWLATENCY_NEEDED */
-+
-+#define conditional_schedule_needed() 0
-+#define conditional_schedule()
-+#define unconditional_schedule()
-+
-+#define DEFINE_RESCHED_COUNT
-+#define TEST_RESCHED_COUNT(n) 0
-+#define RESET_RESCHED_COUNT()
-+#define ll_copy_to_user(to_user, from, len) copy_to_user((to_user), (from), (len))
-+#define ll_copy_from_user(to, from_user, len) copy_from_user((to), (from_user), (len))
-+
-+#endif /* LOWLATENCY_NEEDED */
-+
-+#endif /* LOW_LATENCY_H_INCLUDED */
-+
-diff -Nur c3000_pre/linux/include/linux/mm.h c3000_test/linux/include/linux/mm.h
---- c3000_pre/linux/include/linux/mm.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_test/linux/include/linux/mm.h 2004-12-20 22:56:21.000000000 +0900
-@@ -149,6 +149,8 @@
- */
- extern pgprot_t protection_map[16];
-
-+/* Actions for zap_page_range() */
-+#define ZPR_COND_RESCHED 1 /* Do a conditional_schedule() occasionally */
-
- /*
- * These are the virtual MM functions - opening of an area, closing and
-@@ -500,7 +502,7 @@
- extern void shmem_lock(struct file * file, int lock);
- extern int shmem_zero_setup(struct vm_area_struct *);
-
--extern void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size);
-+extern void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size, int actions);
- extern int copy_page_range(struct mm_struct *dst, struct mm_struct *src, struct vm_area_struct *vma);
- extern int remap_page_range(unsigned long from, unsigned long to, unsigned long size, pgprot_t prot);
- extern int zeromap_page_range(unsigned long from, unsigned long size, pgprot_t prot);
-diff -Nur c3000_pre/linux/include/linux/reiserfs_fs.h c3000_test/linux/include/linux/reiserfs_fs.h
---- c3000_pre/linux/include/linux/reiserfs_fs.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_test/linux/include/linux/reiserfs_fs.h 2004-12-20 22:56:21.000000000 +0900
-@@ -1197,8 +1197,8 @@
- #define fs_generation(s) ((s)->u.reiserfs_sb.s_generation_counter)
- #define get_generation(s) atomic_read (&fs_generation(s))
- #define FILESYSTEM_CHANGED_TB(tb) (get_generation((tb)->tb_sb) != (tb)->fs_gen)
--#define fs_changed(gen,s) (gen != get_generation (s))
--
-+#define __fs_changed(gen,s) (gen != get_generation (s))
-+#define fs_changed(gen,s) ({conditional_schedule(); __fs_changed(gen,s);})
-
- /***************************************************************************/
- /* FIXATE NODES */
-diff -Nur c3000_pre/linux/include/linux/sched.h c3000_test/linux/include/linux/sched.h
---- c3000_pre/linux/include/linux/sched.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_test/linux/include/linux/sched.h 2004-12-20 22:56:21.000000000 +0900
-@@ -1092,6 +1092,7 @@
- #include <linux/dcache.h>
- #include <linux/tqueue.h>
- #include <linux/fs_struct.h>
-+#include <linux/low-latency.h>
-
- #endif /* __KERNEL__ */
- #endif
-diff -Nur c3000_pre/linux/include/linux/sysctl.h c3000_test/linux/include/linux/sysctl.h
---- c3000_pre/linux/include/linux/sysctl.h 2004-08-21 09:49:13.000000000 +0900
-+++ c3000_test/linux/include/linux/sysctl.h 2004-12-20 22:56:21.000000000 +0900
-@@ -131,6 +131,7 @@
- KERN_CORE_USES_PID=52, /* int: use core or core.%pid */
- KERN_TAINTED=53, /* int: various kernel tainted flags */
- KERN_CADPID=54, /* int: PID of the process to notify on CAD */
-+ KERN_LOWLATENCY=55, /* int: enable low latency scheduling */
- };
-
-
-diff -Nur c3000_pre/linux/kernel/exit.c c3000_test/linux/kernel/exit.c
---- c3000_pre/linux/kernel/exit.c 2004-08-21 09:49:14.000000000 +0900
-+++ c3000_test/linux/kernel/exit.c 2004-12-20 22:56:21.000000000 +0900
-@@ -196,6 +196,7 @@
- }
- i++;
- set >>= 1;
-+ conditional_schedule(); /* sys_exit, many files open */
- }
- }
- }
-diff -Nur c3000_pre/linux/kernel/ksyms.c c3000_test/linux/kernel/ksyms.c
---- c3000_pre/linux/kernel/ksyms.c 2004-12-19 00:35:59.000000000 +0900
-+++ c3000_test/linux/kernel/ksyms.c 2004-12-20 23:07:26.000000000 +0900
-@@ -481,6 +481,13 @@
- EXPORT_SYMBOL(do_gettimeofday);
- EXPORT_SYMBOL(do_settimeofday);
-
-+#if LOWLATENCY_NEEDED
-+EXPORT_SYMBOL(set_running_and_schedule);
-+#ifdef CONFIG_LOLAT_SYSCTL
-+EXPORT_SYMBOL(__enable_lowlatency);
-+#endif
-+#endif
-+
- #if !defined(__ia64__)
- EXPORT_SYMBOL(loops_per_jiffy);
- #endif
-diff -Nur c3000_pre/linux/kernel/module.c c3000_test/linux/kernel/module.c
---- c3000_pre/linux/kernel/module.c 2004-08-21 09:49:14.000000000 +0900
-+++ c3000_test/linux/kernel/module.c 2004-12-20 22:56:21.000000000 +0900
-@@ -1174,6 +1174,11 @@
- return ERR_PTR(-ENOMEM);
- lock_kernel();
- for (v = module_list, n = *pos; v; n -= v->nsyms, v = v->next) {
-+#if 0
-+ /* We can't actually do this, because we'd create a
-+ * race against module unload. Need a semaphore. */
-+ conditional_schedule();
-+#endif
- if (n < v->nsyms) {
- p->mod = v;
- p->index = n;
-diff -Nur c3000_pre/linux/kernel/sched.c c3000_test/linux/kernel/sched.c
---- c3000_pre/linux/kernel/sched.c 2004-08-21 09:49:14.000000000 +0900
-+++ c3000_test/linux/kernel/sched.c 2004-12-20 22:56:21.000000000 +0900
-@@ -302,6 +302,17 @@
- if (tsk->processor != this_cpu)
- smp_send_reschedule(tsk->processor);
- }
-+#if LOWLATENCY_NEEDED
-+ if (enable_lowlatency && (p->policy != SCHED_OTHER)) {
-+ struct task_struct *t;
-+ for (i = 0; i < smp_num_cpus; i++) {
-+ cpu = cpu_logical_map(i);
-+ t = cpu_curr(cpu);
-+ if (t != tsk)
-+ t->need_resched = 1;
-+ }
-+ }
-+#endif
- return;
-
-
-@@ -1429,3 +1440,93 @@
- atomic_inc(&init_mm.mm_count);
- enter_lazy_tlb(&init_mm, current, cpu);
- }
-+
-+#if LOWLATENCY_NEEDED
-+#if LOWLATENCY_DEBUG
-+
-+static struct lolat_stats_t *lolat_stats_head;
-+static spinlock_t lolat_stats_lock = SPIN_LOCK_UNLOCKED;
-+
-+void set_running_and_schedule(struct lolat_stats_t *stats)
-+{
-+ spin_lock(&lolat_stats_lock);
-+ if (stats->visited == 0) {
-+ stats->visited = 1;
-+ stats->next = lolat_stats_head;
-+ lolat_stats_head = stats;
-+ }
-+ stats->count++;
-+ spin_unlock(&lolat_stats_lock);
-+
-+ if (current->state != TASK_RUNNING)
-+ set_current_state(TASK_RUNNING);
-+ schedule();
-+}
-+
-+void show_lolat_stats(void)
-+{
-+ struct lolat_stats_t *stats = lolat_stats_head;
-+
-+ printk("Low latency scheduling stats:\n");
-+ while (stats) {
-+ printk("%s:%d: %lu\n", stats->file, stats->line, stats->count);
-+ stats->count = 0;
-+ stats = stats->next;
-+ }
-+}
-+
-+#else /* LOWLATENCY_DEBUG */
-+
-+void set_running_and_schedule()
-+{
-+ if (current->state != TASK_RUNNING)
-+ __set_current_state(TASK_RUNNING);
-+ schedule();
-+}
-+
-+#endif /* LOWLATENCY_DEBUG */
-+
-+int ll_copy_to_user(void *to_user, const void *from, unsigned long len)
-+{
-+ while (len) {
-+ unsigned long n_to_copy = len;
-+ unsigned long remainder;
-+
-+ if (n_to_copy > 4096)
-+ n_to_copy = 4096;
-+ remainder = copy_to_user(to_user, from, n_to_copy);
-+ if (remainder)
-+ return remainder + len;
-+ to_user = ((char *)to_user) + n_to_copy;
-+ from = ((char *)from) + n_to_copy;
-+ len -= n_to_copy;
-+ conditional_schedule();
-+ }
-+ return 0;
-+}
-+
-+int ll_copy_from_user(void *to, const void *from_user, unsigned long len)
-+{
-+ while (len) {
-+ unsigned long n_to_copy = len;
-+ unsigned long remainder;
-+
-+ if (n_to_copy > 4096)
-+ n_to_copy = 4096;
-+ remainder = copy_from_user(to, from_user, n_to_copy);
-+ if (remainder)
-+ return remainder + len;
-+ to = ((char *)to) + n_to_copy;
-+ from_user = ((char *)from_user) + n_to_copy;
-+ len -= n_to_copy;
-+ conditional_schedule();
-+ }
-+ return 0;
-+}
-+
-+#ifdef CONFIG_LOLAT_SYSCTL
-+struct low_latency_enable_struct __enable_lowlatency = { 0, };
-+#endif
-+
-+#endif /* LOWLATENCY_NEEDED */
-+
-diff -Nur c3000_pre/linux/kernel/sysctl.c c3000_test/linux/kernel/sysctl.c
---- c3000_pre/linux/kernel/sysctl.c 2004-08-21 09:49:14.000000000 +0900
-+++ c3000_test/linux/kernel/sysctl.c 2004-12-20 22:56:21.000000000 +0900
-@@ -271,6 +271,10 @@
- {KERN_S390_USER_DEBUG_LOGGING,"userprocess_debug",
- &sysctl_userprocess_debug,sizeof(int),0644,NULL,&proc_dointvec},
- #endif
-+#ifdef CONFIG_LOLAT_SYSCTL
-+ {KERN_LOWLATENCY, "lowlatency", &enable_lowlatency, sizeof (int),
-+ 0644, NULL, &proc_dointvec},
-+#endif
- {0}
- };
-
-diff -Nur c3000_pre/linux/mm/filemap.c c3000_test/linux/mm/filemap.c
---- c3000_pre/linux/mm/filemap.c 2004-08-21 09:49:15.000000000 +0900
-+++ c3000_test/linux/mm/filemap.c 2004-12-20 22:56:21.000000000 +0900
-@@ -179,7 +179,9 @@
- {
- struct list_head *head, *curr;
- struct page * page;
-+ int ll_count = 100;
-
-+restart:
- head = &inode->i_mapping->clean_pages;
-
- spin_lock(&pagemap_lru_lock);
-@@ -190,6 +192,14 @@
- page = list_entry(curr, struct page, list);
- curr = curr->next;
-
-+ if (conditional_schedule_needed() && ll_count) {
-+ spin_unlock(&pagecache_lock);
-+ spin_unlock(&pagemap_lru_lock);
-+ unconditional_schedule();
-+ ll_count--;
-+ goto restart;
-+ }
-+
- /* We cannot invalidate something in dirty.. */
- if (PageDirty(page))
- continue;
-@@ -253,8 +263,7 @@
- page_cache_release(page);
- }
-
--static int FASTCALL(truncate_list_pages(struct list_head *, unsigned long, unsigned *));
--static int truncate_list_pages(struct list_head *head, unsigned long start, unsigned *partial)
-+static int truncate_list_pages(struct list_head *head, unsigned long start, unsigned *partial, int *restart_count)
- {
- struct list_head *curr;
- struct page * page;
-@@ -265,6 +274,17 @@
- while (curr != head) {
- unsigned long offset;
-
-+ if (conditional_schedule_needed() && *restart_count) {
-+ (*restart_count)--;
-+ list_del(head);
-+ list_add(head, curr); /* Restart on this page */
-+ spin_unlock(&pagecache_lock);
-+ unconditional_schedule();
-+ spin_lock(&pagecache_lock);
-+ unlocked = 1;
-+ goto restart;
-+ }
-+
- page = list_entry(curr, struct page, list);
- offset = page->index;
-
-@@ -297,13 +317,11 @@
- } else
- wait_on_page(page);
-
-- page_cache_release(page);
--
-- if (current->need_resched) {
-- __set_current_state(TASK_RUNNING);
-- schedule();
-+ if (LOWLATENCY_NEEDED) {
-+ *restart_count = 4; /* We made progress */
- }
-
-+ page_cache_release(page);
- spin_lock(&pagecache_lock);
- goto restart;
- }
-@@ -326,13 +344,14 @@
- {
- unsigned long start = (lstart + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
- unsigned partial = lstart & (PAGE_CACHE_SIZE - 1);
-+ int restart_count = 4;
- int unlocked;
-
- spin_lock(&pagecache_lock);
- do {
-- unlocked = truncate_list_pages(&mapping->clean_pages, start, &partial);
-- unlocked |= truncate_list_pages(&mapping->dirty_pages, start, &partial);
-- unlocked |= truncate_list_pages(&mapping->locked_pages, start, &partial);
-+ unlocked = truncate_list_pages(&mapping->clean_pages, start, &partial, &restart_count);
-+ unlocked |= truncate_list_pages(&mapping->dirty_pages, start, &partial, &restart_count);
-+ unlocked |= truncate_list_pages(&mapping->locked_pages, start, &partial, &restart_count);
- } while (unlocked);
- /* Traversed all three lists without dropping the lock */
- spin_unlock(&pagecache_lock);
-@@ -477,6 +496,7 @@
-
- page_cache_get(page);
- spin_unlock(&pagecache_lock);
-+ conditional_schedule(); /* sys_msync() (only used by minixfs, udf) */
- lock_page(page);
-
- /* The buffers could have been free'd while we waited for the page lock */
-@@ -563,12 +583,14 @@
- list_del(&page->list);
- list_add(&page->list, &mapping->locked_pages);
-
-- if (!PageDirty(page))
-- continue;
--
- page_cache_get(page);
- spin_unlock(&pagecache_lock);
-
-+ conditional_schedule(); /* sys_msync() */
-+
-+ if (!PageDirty(page))
-+ goto clean;
-+
- lock_page(page);
-
- if (PageDirty(page)) {
-@@ -579,7 +601,7 @@
- ret = err;
- } else
- UnlockPage(page);
--
-+clean:
- page_cache_release(page);
- spin_lock(&pagecache_lock);
- }
-@@ -597,7 +619,8 @@
- int filemap_fdatawait(struct address_space * mapping)
- {
- int ret = 0;
--
-+ DEFINE_RESCHED_COUNT;
-+restart:
- spin_lock(&pagecache_lock);
-
- while (!list_empty(&mapping->locked_pages)) {
-@@ -606,6 +629,17 @@
- list_del(&page->list);
- list_add(&page->list, &mapping->clean_pages);
-
-+ if (TEST_RESCHED_COUNT(32)) {
-+ RESET_RESCHED_COUNT();
-+ if (conditional_schedule_needed()) {
-+ page_cache_get(page);
-+ spin_unlock(&pagecache_lock);
-+ unconditional_schedule();
-+ page_cache_release(page);
-+ goto restart;
-+ }
-+ }
-+
- if (!PageLocked(page))
- continue;
-
-@@ -706,8 +740,10 @@
- spin_lock(&pagecache_lock);
- page = __find_page_nolock(mapping, offset, *hash);
- spin_unlock(&pagecache_lock);
-- if (page)
-+ if (page) {
-+ conditional_schedule();
- return 0;
-+ }
-
- page = page_cache_alloc(mapping);
- if (!page)
-@@ -963,6 +999,11 @@
- * the hash-list needs a held write-lock.
- */
- repeat:
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&pagecache_lock);
-+ unconditional_schedule();
-+ spin_lock(&pagecache_lock);
-+ }
- page = __find_page_nolock(mapping, offset, hash);
- if (page) {
- page_cache_get(page);
-@@ -1413,6 +1454,8 @@
- page_cache_get(page);
- spin_unlock(&pagecache_lock);
-
-+ conditional_schedule(); /* sys_read() */
-+
- if (!Page_Uptodate(page))
- goto page_not_up_to_date;
- generic_file_readahead(reada_ok, filp, inode, page);
-@@ -2114,6 +2157,12 @@
- address += PAGE_SIZE;
- pte++;
- } while (address && (address < end));
-+
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&vma->vm_mm->page_table_lock);
-+ unconditional_schedule(); /* syncing large mapped files */
-+ spin_lock(&vma->vm_mm->page_table_lock);
-+ }
- return error;
- }
-
-@@ -2530,7 +2579,9 @@
- if (vma->vm_flags & VM_LOCKED)
- return -EINVAL;
-
-- zap_page_range(vma->vm_mm, start, end - start);
-+ zap_page_range(vma->vm_mm, start, end - start,
-+ ZPR_COND_RESCHED); /* sys_madvise(MADV_DONTNEED) */
-+
- return 0;
- }
-
-@@ -3095,6 +3146,9 @@
- goto sync_failure;
- page_fault = __copy_from_user(kaddr+offset, buf, bytes);
- flush_dcache_page(page);
-+
-+ conditional_schedule();
-+
- status = mapping->a_ops->commit_write(file, page, offset, offset+bytes);
- if (page_fault)
- goto fail_write;
-diff -Nur c3000_pre/linux/mm/memory.c c3000_test/linux/mm/memory.c
---- c3000_pre/linux/mm/memory.c 2004-08-21 09:49:15.000000000 +0900
-+++ c3000_test/linux/mm/memory.c 2004-12-20 22:56:21.000000000 +0900
-@@ -370,7 +370,7 @@
- /*
- * remove user pages in a given range.
- */
--void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size)
-+static void do_zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size)
- {
- mmu_gather_t *tlb;
- pgd_t * dir;
-@@ -494,6 +494,10 @@
- struct page *map;
- while (!(map = follow_page(mm, start, write))) {
- spin_unlock(&mm->page_table_lock);
-+
-+ /* Pinning down many physical pages (kiobufs, mlockall) */
-+ conditional_schedule();
-+
- switch (handle_mm_fault(mm, vma, start, write)) {
- case 1:
- tsk->min_flt++;
-@@ -655,6 +659,21 @@
- iobuf->locked = 0;
- }
-
-+#define MAX_ZAP_BYTES 256*PAGE_SIZE
-+
-+void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size, int actions)
-+{
-+ while (size) {
-+ unsigned long chunk = size;
-+ if (actions & ZPR_COND_RESCHED && chunk > MAX_ZAP_BYTES)
-+ chunk = MAX_ZAP_BYTES;
-+ do_zap_page_range(mm, address, chunk);
-+ if (actions & ZPR_COND_RESCHED)
-+ conditional_schedule();
-+ address += chunk;
-+ size -= chunk;
-+ }
-+}
-
- /*
- * Lock down all of the pages of a kiovec for IO.
-@@ -764,11 +783,18 @@
- return 0;
- }
-
--static inline void zeromap_pte_range(pte_t * pte, unsigned long address,
-- unsigned long size, pgprot_t prot)
-+static inline void zeromap_pte_range(struct mm_struct *mm, pte_t * pte,
-+ unsigned long address, unsigned long size,
-+ pgprot_t prot)
- {
- unsigned long end;
-
-+ if (conditional_schedule_needed()) {
-+ spin_unlock(&mm->page_table_lock);
-+ unconditional_schedule(); /* mmap(/dev/zero) */
-+ spin_lock(&mm->page_table_lock);
-+ }
-+
- address &= ~PMD_MASK;
- end = address + size;
- if (end > PMD_SIZE)
-@@ -796,7 +822,7 @@
- pte_t * pte = pte_alloc(mm, pmd, address);
- if (!pte)
- return -ENOMEM;
-- zeromap_pte_range(pte, address, end - address, prot);
-+ zeromap_pte_range(mm, pte, address, end - address, prot);
- address = (address + PMD_SIZE) & PMD_MASK;
- pmd++;
- } while (address && (address < end));
-@@ -1044,7 +1070,7 @@
-
- /* mapping wholly truncated? */
- if (mpnt->vm_pgoff >= pgoff) {
-- zap_page_range(mm, start, len);
-+ zap_page_range(mm, start, len, 0);
- continue;
- }
-
-@@ -1057,7 +1083,7 @@
- /* Ok, partially affected.. */
- start += diff << PAGE_SHIFT;
- len = (len - diff) << PAGE_SHIFT;
-- zap_page_range(mm, start, len);
-+ zap_page_range(mm, start, len, 0);
- } while ((mpnt = mpnt->vm_next_share) != NULL);
- }
-
-diff -Nur c3000_pre/linux/mm/mmap.c c3000_test/linux/mm/mmap.c
---- c3000_pre/linux/mm/mmap.c 2004-12-16 22:55:54.000000000 +0900
-+++ c3000_test/linux/mm/mmap.c 2004-12-20 23:07:25.000000000 +0900
-@@ -598,7 +598,7 @@
- fput(file);
-
- /* Undo any partial mapping done by a device driver. */
-- zap_page_range(mm, vma->vm_start, vma->vm_end - vma->vm_start);
-+ zap_page_range(mm, vma->vm_start, vma->vm_end - vma->vm_start, 0);
- free_vma:
- kmem_cache_free(vm_area_cachep, vma);
- return error;
-@@ -998,7 +998,7 @@
- remove_shared_vm_struct(mpnt);
- mm->map_count--;
-
-- zap_page_range(mm, st, size);
-+ zap_page_range(mm, st, size, ZPR_COND_RESCHED); /* sys_munmap() */
-
- /*
- * Fix the mapping, and free the old area if it wasn't reused.
-@@ -1158,7 +1158,7 @@
- }
- mm->map_count--;
- remove_shared_vm_struct(mpnt);
-- zap_page_range(mm, start, size);
-+ zap_page_range(mm, start, size, ZPR_COND_RESCHED); /* sys_exit() */
- if (mpnt->vm_file)
- fput(mpnt->vm_file);
- kmem_cache_free(vm_area_cachep, mpnt);
-diff -Nur c3000_pre/linux/mm/mremap.c c3000_test/linux/mm/mremap.c
---- c3000_pre/linux/mm/mremap.c 2004-12-16 22:55:54.000000000 +0900
-+++ c3000_test/linux/mm/mremap.c 2004-12-20 23:07:25.000000000 +0900
-@@ -121,7 +121,7 @@
- flush_cache_range(mm, new_addr, new_addr + len);
- while ((offset += PAGE_SIZE) < len)
- move_one_page(mm, new_addr + offset, old_addr + offset);
-- zap_page_range(mm, new_addr, len);
-+ zap_page_range(mm, new_addr, len, 0);
- #ifdef __arm__
- memc_update_mm(mm);
- #endif
-diff -Nur c3000_pre/linux/mm/slab.c c3000_test/linux/mm/slab.c
---- c3000_pre/linux/mm/slab.c 2004-11-16 15:31:09.000000000 +0900
-+++ c3000_test/linux/mm/slab.c 2004-12-20 22:56:21.000000000 +0900
-@@ -940,6 +940,7 @@
- list_del(&slabp->list);
-
- spin_unlock_irq(&cachep->spinlock);
-+ conditional_schedule();
- kmem_slab_destroy(cachep, slabp);
- ret++;
- spin_lock_irq(&cachep->spinlock);
-@@ -1853,6 +1854,7 @@
- */
- spin_unlock_irq(&best_cachep->spinlock);
- kmem_slab_destroy(best_cachep, slabp);
-+ conditional_schedule(); /* try_to_free_pages() */
- spin_lock_irq(&best_cachep->spinlock);
- }
- spin_unlock_irq(&best_cachep->spinlock);
-diff -Nur c3000_pre/linux/mm/swapfile.c c3000_test/linux/mm/swapfile.c
---- c3000_pre/linux/mm/swapfile.c 2004-08-21 09:49:16.000000000 +0900
-+++ c3000_test/linux/mm/swapfile.c 2004-12-20 22:56:21.000000000 +0900
-@@ -819,7 +819,7 @@
- len += sprintf(buf + len, "partition\t");
-
- usedswap = 0;
-- for (j = 0; j < ptr->max; ++j)
-+ for (j = 0; j < ptr->max; ++j) {
- switch (ptr->swap_map[j]) {
- case SWAP_MAP_BAD:
- case 0:
-@@ -827,6 +827,8 @@
- default:
- usedswap++;
- }
-+ conditional_schedule();
-+ }
- len += sprintf(buf + len, "%d\t%d\t%d\n", ptr->pages << (PAGE_SHIFT - 10),
- usedswap << (PAGE_SHIFT - 10), ptr->prio);
- }
-@@ -1120,6 +1122,11 @@
- if (swap_info[i].flags != SWP_USED)
- continue;
- for (j = 0; j < swap_info[i].max; ++j) {
-+ if (conditional_schedule_needed()) {
-+ swap_list_unlock();
-+ conditional_schedule();
-+ swap_list_lock();
-+ }
- switch (swap_info[i].swap_map[j]) {
- case 0:
- case SWAP_MAP_BAD:
-diff -Nur c3000_pre/linux/mm/vmscan.c c3000_test/linux/mm/vmscan.c
---- c3000_pre/linux/mm/vmscan.c 2004-08-21 09:49:16.000000000 +0900
-+++ c3000_test/linux/mm/vmscan.c 2004-12-20 22:56:21.000000000 +0900
-@@ -173,6 +173,7 @@
- {
- pte_t * pte;
- unsigned long pmd_end;
-+ DEFINE_RESCHED_COUNT;
-
- if (pmd_none(*dir))
- return count;
-@@ -198,11 +199,17 @@
- address += PAGE_SIZE;
- break;
- }
-+ if (TEST_RESCHED_COUNT(4)) {
-+ if (conditional_schedule_needed())
-+ goto out;
-+ RESET_RESCHED_COUNT();
-+ }
- }
- }
- address += PAGE_SIZE;
- pte++;
- } while (address && (address < end));
-+out:
- mm->swap_address = address;
- return count;
- }
-@@ -231,6 +238,8 @@
- count = swap_out_pmd(mm, vma, pmd, address, end, count, classzone);
- if (!count)
- break;
-+ if (conditional_schedule_needed())
-+ return count;
- address = (address + PMD_SIZE) & PMD_MASK;
- pmd++;
- } while (address && (address < end));
-@@ -255,6 +264,8 @@
- count = swap_out_pgd(mm, vma, pgdir, address, end, count, classzone);
- if (!count)
- break;
-+ if (conditional_schedule_needed())
-+ return count;
- address = (address + PGDIR_SIZE) & PGDIR_MASK;
- pgdir++;
- } while (address && (address < end));
-@@ -276,6 +287,7 @@
- * Find the proper vm-area after freezing the vma chain
- * and ptes.
- */
-+continue_scan:
- spin_lock(&mm->page_table_lock);
- address = mm->swap_address;
- if (address == TASK_SIZE || swap_mm != mm) {
-@@ -293,6 +305,12 @@
- vma = vma->vm_next;
- if (!vma)
- break;
-+ if (conditional_schedule_needed()) { /* Scanning a large vma */
-+ spin_unlock(&mm->page_table_lock);
-+ unconditional_schedule();
-+ /* Continue from where we left off */
-+ goto continue_scan;
-+ }
- if (!count)
- goto out_unlock;
- address = vma->vm_start;
-diff -Nur c3000_pre/linux/net/core/iovec.c c3000_test/linux/net/core/iovec.c
---- c3000_pre/linux/net/core/iovec.c 2004-08-21 11:23:13.000000000 +0900
-+++ c3000_test/linux/net/core/iovec.c 2004-12-20 22:56:21.000000000 +0900
-@@ -88,7 +88,7 @@
- if(iov->iov_len)
- {
- int copy = min_t(unsigned int, iov->iov_len, len);
-- if (copy_to_user(iov->iov_base, kdata, copy))
-+ if (ll_copy_to_user(iov->iov_base, kdata, copy))
- goto out;
- kdata+=copy;
- len-=copy;
-diff -Nur c3000_pre/linux/net/ipv4/tcp_minisocks.c c3000_test/linux/net/ipv4/tcp_minisocks.c
---- c3000_pre/linux/net/ipv4/tcp_minisocks.c 2004-08-21 09:49:22.000000000 +0900
-+++ c3000_test/linux/net/ipv4/tcp_minisocks.c 2004-12-20 22:56:21.000000000 +0900
-@@ -440,6 +440,9 @@
- {
- struct tcp_tw_bucket *tw;
- int killed = 0;
-+#if LOWLATENCY_NEEDED
-+ int max_killed = 0;
-+#endif
-
- /* NOTE: compare this to previous version where lock
- * was released after detaching chain. It was racy,
-@@ -453,6 +456,13 @@
- goto out;
-
- while((tw = tcp_tw_death_row[tcp_tw_death_row_slot]) != NULL) {
-+#if LOWLATENCY_NEEDED
-+ /* This loop takes ~6 usecs per iteration. */
-+ if (killed > 100) {
-+ max_killed = 1;
-+ break;
-+ }
-+#endif
- tcp_tw_death_row[tcp_tw_death_row_slot] = tw->next_death;
- tw->pprev_death = NULL;
- spin_unlock(&tw_death_lock);
-@@ -463,12 +473,24 @@
- killed++;
-
- spin_lock(&tw_death_lock);
-+
-+ }
-+
-+#if LOWLATENCY_NEEDED
-+ if (max_killed) { /* More to do: do it soon */
-+ mod_timer(&tcp_tw_timer, jiffies+2);
-+ tcp_tw_count -= killed;
-+ }
-+ else
-+#endif
-+ {
-+ tcp_tw_death_row_slot =
-+ ((tcp_tw_death_row_slot + 1) & (TCP_TWKILL_SLOTS - 1));
-+
-+ if ((tcp_tw_count -= killed) != 0)
-+ mod_timer(&tcp_tw_timer, jiffies+TCP_TWKILL_PERIOD);
- }
-- tcp_tw_death_row_slot =
-- ((tcp_tw_death_row_slot + 1) & (TCP_TWKILL_SLOTS - 1));
-
-- if ((tcp_tw_count -= killed) != 0)
-- mod_timer(&tcp_tw_timer, jiffies+TCP_TWKILL_PERIOD);
- net_statistics[smp_processor_id()*2].TimeWaited += killed;
- out:
- spin_unlock(&tw_death_lock);
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P17-bvdd_050222.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P17-bvdd_050222.patch
deleted file mode 100644
index 785470a6aa..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P17-bvdd_050222.patch
+++ /dev/null
@@ -1,1506 +0,0 @@
-diff -Nur c3000_pre/linux/drivers/video/Config.in c3000_work/linux/drivers/video/Config.in
---- c3000_pre/linux/drivers/video/Config.in 2005-02-22 00:14:45.000000000 +0900
-+++ c3000_work/linux/drivers/video/Config.in 2005-02-21 23:36:35.000000000 +0900
-@@ -86,6 +86,7 @@
- dep_bool ' Sharp SL-Series PXA LCD support' CONFIG_FB_SHARPSL_PXA $CONFIG_ARCH_SHARP_SL
- if [ "$CONFIG_FB_SHARPSL_PXA" = "y" ]; then
- dep_bool ' Cached FB support for Sharp SL PXA LCDC' CONFIG_SHARPSL_PXA_CONSISTENT_ALLOC $CONFIG_FB_SHARPSL_PXA
-+ dep_tristate ' PXA270 overlay(bvdd) support(EXPERIMENTAL)' CONFIG_FB_SHARPSL_PXA_BVDD $CONFIG_FB_SHARPSL_PXA
- fi
- dep_bool ' SHARP LOGO screen support' CONFIG_SHARP_LOGO_SCREEN $CONFIG_ARCH_SHARP_SL
- if [ "$CONFIG_FB_PXA" != "n" -a "$CONFIG_ARCH_LUBBOCK" = "y" ]; then
-diff -Nur c3000_pre/linux/drivers/video/Makefile c3000_work/linux/drivers/video/Makefile
---- c3000_pre/linux/drivers/video/Makefile 2005-02-22 00:14:45.000000000 +0900
-+++ c3000_work/linux/drivers/video/Makefile 2005-02-21 23:40:57.000000000 +0900
-@@ -160,6 +160,7 @@
- obj-$(CONFIG_FB_CORGI) += w100fb.o fbgen.o corgi_backlight.o
- obj-$(CONFIG_FB_TOSA) += tc6393fb.o fbgen.o tosa_backlight.o
- obj-$(CONFIG_FB_SHARPSL_PXA) += sharpsl_pxafb.o fbgen.o corgi_backlight.o
-+obj-$(CONFIG_FB_SHARPSL_PXA_BVDD) += bvdd.o
-
- # Generic Low Level Drivers
-
-diff -Nur c3000_pre/linux/drivers/video/bvdd.c c3000_work/linux/drivers/video/bvdd.c
---- c3000_pre/linux/drivers/video/bvdd.c 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/video/bvdd.c 2005-02-22 00:05:24.000000000 +0900
-@@ -0,0 +1,1124 @@
-+/* bvdd.c - Create an input/output character device
-+ */
-+
-+#include <linux/kernel.h> /* We're doing kernel work */
-+#include <linux/module.h> /* Specifically, a module */
-+
-+#if CONFIG_MODVERSIONS==1
-+#define MODVERSIONS
-+#include <linux/modversions.h>
-+#endif
-+
-+#include <linux/fs.h> /* The character device definitions are here */
-+#include <linux/wrapper.h>
-+#include <linux/mm.h>
-+#include <linux/sched.h>
-+#include <asm/system.h>
-+#include <asm/hardware.h>
-+#include <asm/uaccess.h> /* for get_user and put_user */
-+#include <asm/io.h>
-+
-+/* Our own ioctl numbers */
-+#include "bvdd.h"
-+#include "bvdd_p.h"
-+
-+#define SUCCESS 0
-+
-+#define DEVICE_NAME "bvdd" /* The name for our device */
-+
-+#ifdef DEBUG
-+# define PRINT_DEBUG(x...) printk(KERN_WARNING DEVICE_NAME ": " x)
-+# define PRINT_INFO(x...) printk(KERN_WARNING DEVICE_NAME ": " x)
-+# define PRINT_WARN(x...) printk(KERN_WARNING DEVICE_NAME ": " x)
-+# define PRINT_ERROR(x...) printk(KERN_ERROR DEVICE_NAME ": " x)
-+# define PRINT_FATAL(x...) printk(KERN_FATAL DEVICE_NAME ": " x)
-+#else
-+# define PRINT_DEBUG(x...)
-+# define PRINT_INFO(x...)
-+# define PRINT_WARN(x...) printk(KERN_WARNING DEVICE_NAME ": " x)
-+# define PRINT_ERROR(x...) printk(KERN_ERROR DEVICE_NAME ": " x)
-+# define PRINT_FATAL(x...) printk(KERN_FATAL DEVICE_NAME ": " x)
-+#endif
-+
-+/* Is the device open right now? Used to prevent concurent access into the same device */
-+static int device_open = 0;
-+
-+static dma_addr_t vram_sharpsl_pxafb_phys;
-+static void *vram_virt = NULL; /* virtual address of VRAM (if NULL, VRAM is not allocated) */
-+static dma_addr_t vram_phys = 0; /* physical address of VRAM */
-+static u32 vram_size = 0; /* VRAM size */
-+
-+#undef FDADR
-+// ----------------------------------------------------------------
-+// ¥Ç¥£¥¹¥¯¥ê¥×¥¿
-+// aligned on a 16-byte boundary
-+
-+typedef struct {
-+ unsigned long FDADR; /* frame descriptor address */
-+ unsigned long FSADR; /* DMA Frame Source Address Registers */
-+ unsigned long FIDR; /* frame id reg */
-+ unsigned long LDCMD; /* LCD command reg */
-+} descriptor_t;
-+
-+static descriptor_t *descriptors = NULL;
-+#ifndef USE_PXAFB_DESCRIPTOR_AREA
-+# define MAX_DESCRIPTORS (PAGE_SIZE / 16)
-+static descriptor_t *descriptor_virt; /* ¥Ç¥£¥¹¥¯¥ê¥×¥¿ÇÛÎó¤Î²¾ÁÛ¥¢¥É¥ì¥¹ */
-+static dma_addr_t descriptor_phys; /* ¥Ç¥£¥¹¥¯¥ê¥×¥¿ÇÛÎó¤ÎʪÍý¥¢¥É¥ì¥¹ */
-+static u32 descriptor_size; /* ¥Ç¥£¥¹¥¯¥ê¥×¥¿ÇÛÎó¤Î¥µ¥¤¥º */
-+#else
-+# define MAX_DESCRIPTORS ((PAGE_SIZE - 16) / 16)
-+#endif
-+
-+// Physical addresses, offsets & lengths
-+#define SRAM_BASE 0xfe100000
-+#define SRAM_BASE_PHYS 0x5c000000
-+#define MAX_VRAM_SIZE (1024 * 4)
-+static unsigned long offset2phys_map[MAX_VRAM_SIZE >> PAGE_SHIFT];
-+#define OFFSET2PHYS_MAP_SRAM_INDEX 0
-+
-+// vram manager
-+typedef struct {
-+ unsigned long start_phys;
-+ void *start_virt;
-+ unsigned long end_phys;
-+ unsigned long offset;
-+} vram_area_t;
-+#define MAX_VRAM_AREAS 128
-+static vram_area_t vram_areas[MAX_VRAM_AREAS];
-+
-+// test
-+static volatile unsigned int next_fbr2 = 0;
-+static volatile unsigned int next_fbr3 = 0;
-+static volatile unsigned int next_fbr4 = 0;
-+static wait_queue_head_t fbr2_wait;
-+static wait_queue_head_t fbr3_wait;
-+static wait_queue_head_t fbr4_wait;
-+static wait_queue_head_t wq_lcd_quick_disable_done;
-+static wait_queue_head_t wq_lcd_disable_done;
-+
-+
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+extern int read_cccr(void);
-+extern void write_cccr(int);
-+#endif
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+extern int read_vcore(void);
-+extern void write_vcore(int);
-+#endif
-+
-+// ----------------------------------------------------------------
-+static void bvdd_vsync();
-+
-+// ----------------------------------------------------------------
-+#if 1
-+static void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle);
-+static void *l_consistent_alloc2(int gfp, size_t size, dma_addr_t *dma_handle, int pte);
-+static void consistent_free(void *vaddr, size_t size, dma_addr_t handle);
-+#endif
-+
-+
-+static void inttest(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ static int count = 0;
-+ static int start = 0;
-+ LCSR0_u lcsr0;
-+ LCSR1_u lcsr1;
-+ int st = 0;
-+
-+ lcsr1.val = REG_LCSR1;
-+ if (lcsr1.f.EOF2 == 1) {
-+ LCSR1_u v;
-+/* if ((next_fbr2 != 0) && ((REG_FBR2 & 1) == 0)) { */
-+ if ((next_fbr2 != 0)) {
-+ REG_FBR2 = next_fbr2 | 3;
-+/* REG_FDADR2 = next_fbr2; */
-+/* wake_up_interruptible(&fbr2_wait); */
-+ }
-+ v.val = 0;
-+ v.f.EOF2 = 1;
-+ REG_LCSR1 = v.val;
-+ }
-+ else if (lcsr1.f.EOF3 == 1) {
-+ LCSR1_u v;
-+/* if ((next_fbr3 != 0) && ((REG_FBR3 & 1) == 0)) { */
-+ if ((next_fbr3 != 0)) {
-+ REG_FBR3 = next_fbr3 | 3;
-+/* REG_FDADR3 = next_fbr3; */
-+/* next_fbr3 = 0; */
-+/* wake_up_interruptible(&fbr3_wait); */
-+ }
-+ v.val = 0;
-+ v.f.EOF3 = 1;
-+ REG_LCSR1 = v.val;
-+ }
-+ else if (lcsr1.f.EOF4 == 1) {
-+ LCSR1_u v;
-+/* if ((next_fbr4 != 0) && ((REG_FBR4 & 1) == 0)) { */
-+ if ((next_fbr4 != 0)) {
-+ REG_FBR4 = next_fbr4 | 3;
-+/* REG_FDADR4 = next_fbr4; */
-+/* next_fbr4 = 0; */
-+/* wake_up_interruptible(&fbr4_wait); */
-+ }
-+ v.val = 0;
-+ v.f.EOF4 = 1;
-+ REG_LCSR1 = v.val;
-+ }
-+ if (REG_LCSR1 & 0x20000) { /* BS2 */
-+ next_fbr2 = 0;
-+ wake_up_interruptible(&fbr2_wait);
-+ REG_LCSR1 = 0x20000;
-+ }
-+ if (REG_LCSR1 & 0x40000) { /* BS3 */
-+ next_fbr3 = 0;
-+ wake_up_interruptible(&fbr3_wait);
-+ REG_LCSR1 = 0x40000;
-+ }
-+ if (REG_LCSR1 & 0x80000) { /* BS4 */
-+ next_fbr4 = 0;
-+ wake_up_interruptible(&fbr4_wait);
-+ REG_LCSR1 = 0x80000;
-+ }
-+
-+#if 0
-+ lcsr0.val = REG_LCSR0;
-+ if (lcsr0.f.QD == 1) {
-+ LCSR0_u v;
-+ v.val = 0;
-+ v.f.QD = 1;
-+ REG_LCSR0 = v.val;
-+ wake_up_interruptible(&wq_lcd_quick_disable_done);
-+ }
-+ if (lcsr0.f.LDD == 1) {
-+ LCSR0_u v;
-+ v.val = 0;
-+ v.f.LDD = 1;
-+ REG_LCSR0 = v.val;
-+ wake_up_interruptible(&wq_lcd_disable_done);
-+ }
-+#endif
-+}
-+
-+static int setup_vram(int size)
-+{
-+ int order, i;
-+ unsigned int offset = BVDD_VRAM_OFFSET_USER;
-+
-+ size = PAGE_ALIGN(size);
-+ order = get_order(size);
-+ PRINT_DEBUG("setup_vram(size=%d)\n", size);
-+
-+ for (i = 2; i < MAX_VRAM_AREAS - 2; ++i) {
-+ vram_area_t *va = &vram_areas[i];
-+ va->start_virt = NULL;
-+ do {
-+/* if (order > 3) { */
-+/* order --; */
-+/* continue; */
-+/* } */
-+ va->start_virt = consistent_alloc(GFP_KERNEL|GFP_DMA, PAGE_SIZE << order, (dma_addr_t *)&va->start_phys);
-+ if (va->start_virt == NULL) {
-+ order --;
-+ if (order < 1)
-+ return -1;
-+ }
-+ } while (va->start_virt == NULL);
-+ va->end_phys = va->start_phys + (PAGE_SIZE << order);
-+ va->offset = offset;
-+ offset += PAGE_SIZE << order;
-+ size -= PAGE_SIZE << order;
-+ PRINT_DEBUG(" vram_area[%2d] : 0x%p, %d, 0x%p\n", i, va->start_phys, PAGE_SIZE << order, va->offset);
-+ if (size <= 0)
-+ break;
-+ }
-+
-+ if (size > 0)
-+ return -1;
-+ else
-+ return 0;
-+}
-+
-+static int free_vram(void)
-+{
-+ int i;
-+ for (i = 2; i < MAX_VRAM_AREAS - 2; ++i) {
-+ vram_area_t *va = &vram_areas[i];
-+ if (va->start_virt != NULL) {
-+ consistent_free(va->start_virt, va->end_phys - va->start_phys, va->start_phys);
-+ memset(va, 0, sizeof(vram_area_t));
-+ }
-+ }
-+}
-+
-+// ----------------------------------------------------------------
-+static lcdc_state_t lcdc_state_orig;
-+static lcdc_state_t lcdc_state;
-+
-+static void lcdc_state_read(lcdc_state_t *ls)
-+{
-+ ls->cken20_intmem = (CKEN & CKEN20_INTMEM) ? 1 : 0;
-+ ls->lccr0.val = REG_LCCR0;
-+ ls->lccr0.f.reserved1 = 0;
-+ ls->lccr0.f.reserved2 = 0;
-+ ls->lccr1.val = REG_LCCR1;
-+ ls->lccr2.val = REG_LCCR2;
-+ ls->lccr3.val = REG_LCCR3;
-+ ls->lccr3.f.reserved1 = 0;
-+ ls->lccr4.val = REG_LCCR4;
-+ ls->lccr4.f.reserved1 = 0;
-+ ls->lccr4.f.reserved2 = 0;
-+ ls->ovl1c1.val = REG_OVL1C1;
-+ ls->ovl1c1.f.reserved1 = 0;
-+ ls->ovl1c2.val = REG_OVL1C2;
-+ ls->ovl1c2.f.reserved1 = 0;
-+ ls->ovl2c1.val = REG_OVL2C1;
-+ ls->ovl2c1.f.reserved1 = 0;
-+ ls->ovl2c2.val = REG_OVL2C2;
-+ ls->ovl2c2.f.reserved1 = 0;
-+ ls->fdadr0 = REG_FDADR0;
-+ ls->fdadr1 = REG_FDADR1;
-+ ls->fdadr2 = REG_FDADR2;
-+ ls->fdadr3 = REG_FDADR3;
-+ ls->fdadr4 = REG_FDADR4;
-+ ls->fdadr5 = REG_FDADR5;
-+ ls->fdadr6 = REG_FDADR6;
-+}
-+
-+static void lcdc_state_write(lcdc_state_t *ls)
-+{
-+ int i;
-+
-+ ls->cken20_intmem = (CKEN & CKEN20_INTMEM) ? 1 : 0;
-+ if (ls->cken20_intmem)
-+ CKEN |= CKEN20_INTMEM;
-+ else
-+ CKEN &= ~CKEN20_INTMEM;
-+
-+/* { */
-+/* LCCR0_u v; */
-+/* v.val = 0; */
-+/* v.f.QDM = 1; */
-+/* v.f.LDM = 1; */
-+/* REG_LCCR0 &= ~v.val; */
-+/* } */
-+
-+ ls->lccr2.f.EFW = 64;
-+ ls->lccr2.f.VSW = 64;
-+ for (i = 0; i < 2; ++i) {
-+ bvdd_vsync();
-+ REG_LCCR0 |= 0x400; /* Disable LCD controller */
-+/* interruptible_sleep_on(&wq_lcd_disable_done); */
-+
-+ bvdd_vsync(); /* Wait for disabled */
-+ REG_LCCR0 &= ~1; /* Do a quick disable */
-+
-+ REG_OVL2C1 = ls->ovl2c1.val;
-+ REG_OVL2C2 = ls->ovl2c2.val;
-+ REG_OVL1C1 = ls->ovl1c1.val;
-+ REG_OVL1C2 = ls->ovl1c2.val;
-+ REG_LCCR1 = ls->lccr1.val;
-+ REG_LCCR2 = ls->lccr2.val;
-+ REG_LCCR3 = ls->lccr3.val;
-+ REG_LCCR4 = ls->lccr4.val;
-+/* REG_LCCR5 = 0x3F3F3F31; */
-+/* REG_LCCR5 = 0x3F3F313F; /\* EOF *\/ */
-+ REG_LCCR5 = 0x3F31313F; /* BSM/EOF */
-+
-+ REG_LCDBSCNTR = 5;
-+
-+ REG_LCSR0 = 0x00001FFF;
-+ REG_LCSR1 = 0x3E3F3F3F;
-+
-+ ls->lccr0.f.ENB = 1;
-+ REG_LCCR0 = ls->lccr0.val; /* Enable LCD controller */
-+
-+ REG_LCCR0 &= ~1; /* Do a quick disable */
-+/* interruptible_sleep_on(&wq_lcd_quick_disable_done); */
-+
-+ REG_FDADR0 = ls->fdadr0;
-+ REG_FDADR1 = ls->fdadr1;
-+ REG_FDADR2 = ls->fdadr2;
-+ REG_FDADR3 = ls->fdadr3;
-+ REG_FDADR4 = ls->fdadr4;
-+ REG_FDADR5 = ls->fdadr5;
-+ REG_FDADR6 = ls->fdadr6;
-+
-+ REG_LCCR0 = ls->lccr0.val;
-+ }
-+}
-+
-+static void lcdc_state_print_descriptor(int n, unsigned long addr)
-+{
-+ PRINT_DEBUG(" FDADR%d : 0x%08x FDADR FSADR FIDR LDCMD\n", n, addr);
-+ if (addr == 0)
-+ PRINT_DEBUG(" ---------- ---------- ---------- ----------\n");
-+ else {
-+ PRINT_DEBUG(" 0x%08x 0x%08x 0x%08x 0x%08x\n",
-+ ((unsigned long *)__phys_to_virt(addr))[0],
-+ ((unsigned long *)__phys_to_virt(addr))[1],
-+ ((unsigned long *)__phys_to_virt(addr))[2],
-+ ((unsigned long *)__phys_to_virt(addr))[3]);
-+ }
-+}
-+
-+static void lcdc_state_print(lcdc_state_t *ls)
-+{
-+ PRINT_DEBUG("lcdc_state_print(lcdc_state_t * = 0x%p)\n", ls);
-+ PRINT_DEBUG(" CKEN20_INTMEM : %d\n", ls->cken20_intmem);
-+ PRINT_DEBUG(" LCCR0 : 0x%08x\n", ls->lccr0.val);
-+ PRINT_DEBUG(" ENB CMS SDS LDM SOFM0 IUM EOFM0 PAS DPD DIS QDM PDD BSM0 OUM LCDT\n");
-+ PRINT_DEBUG(" %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d\n",
-+ ls->lccr0.f.ENB, ls->lccr0.f.CMS, ls->lccr0.f.SDS, ls->lccr0.f.LDM, ls->lccr0.f.SOFM0,
-+ ls->lccr0.f.IUM, ls->lccr0.f.EOFM0, ls->lccr0.f.PAS, ls->lccr0.f.DPD, ls->lccr0.f.DIS,
-+ ls->lccr0.f.QDM, ls->lccr0.f.PDD, ls->lccr0.f.BSM0, ls->lccr0.f.OUM, ls->lccr0.f.LCDT);
-+ PRINT_DEBUG(" RDSTM CMDIM OUC LDDALT\n");
-+ PRINT_DEBUG(" %3d %3d %3d %3d\n",
-+ ls->lccr0.f.RDSTM, ls->lccr0.f.CMDIM, ls->lccr0.f.OUC, ls->lccr0.f.LDDALT);
-+ PRINT_DEBUG(" LCCR1 : 0x%08x\n", ls->lccr1.val);
-+ PRINT_DEBUG(" PPL HSW ELW BLW\n");
-+ PRINT_DEBUG(" %4d %3d %3d %3d\n",
-+ ls->lccr1.f.PPL, ls->lccr1.f.HSW, ls->lccr1.f.ELW, ls->lccr1.f.BLW);
-+ PRINT_DEBUG(" LCCR2 : 0x%08x\n", ls->lccr2.val);
-+ PRINT_DEBUG(" LPP VSW EFW BFW\n");
-+ PRINT_DEBUG(" %4d %3d %3d %3d\n",
-+ ls->lccr2.f.LPP, ls->lccr2.f.VSW, ls->lccr2.f.EFW, ls->lccr2.f.BFW);
-+ PRINT_DEBUG(" LCCR3 : 0x%08x\n", ls->lccr3.val);
-+ PRINT_DEBUG(" PCD ACB API VSP HSP PCP OEP BPP DPC BPP3 PDFOR\n");
-+ PRINT_DEBUG(" %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d\n",
-+ ls->lccr3.f.PCD, ls->lccr3.f.ACB, ls->lccr3.f.API, ls->lccr3.f.VSP,
-+ ls->lccr3.f.HSP, ls->lccr3.f.PCP, ls->lccr3.f.OEP, ls->lccr3.f.BPP,
-+ ls->lccr3.f.DPC, ls->lccr3.f.BPP3, ls->lccr3.f.PDFOR);
-+ PRINT_DEBUG(" LCCR4 : 0x%08x\n", ls->lccr4.val);
-+ PRINT_DEBUG(" K1 K2 K3 PAL_FOR PCDDIV\n");
-+ PRINT_DEBUG(" %2d %2d %2d %3d %3d\n",
-+ ls->lccr4.f.K1, ls->lccr4.f.K2, ls->lccr4.f.K3, ls->lccr4.f.PAL_FOR,
-+ ls->lccr4.f.PCDDIV);
-+ PRINT_DEBUG(" OVL1C1 : 0x%08x\n", ls->ovl1c1.val);
-+ PRINT_DEBUG(" PPL1 LPO1 BPP1 O1EN\n");
-+ PRINT_DEBUG(" %3d %3d %3d %3d\n",
-+ ls->ovl1c1.f.PPL1, ls->ovl1c1.f.LPO1, ls->ovl1c1.f.BPP1, ls->ovl1c1.f.O1EN);
-+ PRINT_DEBUG(" OVL1C2 : 0x%08x\n", ls->ovl1c2.val);
-+ PRINT_DEBUG(" O1XPOS O1YPOS\n");
-+ PRINT_DEBUG(" %4d %4d\n",
-+ ls->ovl1c2.f.O1XPOS, ls->ovl1c2.f.O1YPOS);
-+ PRINT_DEBUG(" OVL2C1 : 0x%08x\n", ls->ovl2c1.val);
-+ PRINT_DEBUG(" PPL2 LPO2 BPP2 O2EN\n");
-+ PRINT_DEBUG(" %3d %3d %3d %3d\n",
-+ ls->ovl2c1.f.PPL2, ls->ovl2c1.f.LPO2, ls->ovl2c1.f.BPP2, ls->ovl2c1.f.O2EN);
-+ PRINT_DEBUG(" OVL2C2 : 0x%08x\n", ls->ovl2c2.val);
-+ PRINT_DEBUG(" O2XPOS O2YPOS FOR\n");
-+ PRINT_DEBUG(" %4d %4d %3d\n",
-+ ls->ovl2c2.f.O2XPOS, ls->ovl2c2.f.O2YPOS, ls->ovl2c2.f.FOR);
-+ lcdc_state_print_descriptor(0, ls->fdadr0);
-+ lcdc_state_print_descriptor(1, ls->fdadr1);
-+ lcdc_state_print_descriptor(2, ls->fdadr2);
-+ lcdc_state_print_descriptor(3, ls->fdadr3);
-+ lcdc_state_print_descriptor(4, ls->fdadr4);
-+ lcdc_state_print_descriptor(5, ls->fdadr5);
-+ lcdc_state_print_descriptor(6, ls->fdadr6);
-+}
-+
-+typedef struct {
-+ unsigned int offset;
-+ int size;
-+ unsigned int desc_phys;
-+} desc_cache_t;
-+
-+#define MAX_DESC_CACHE 256
-+desc_cache_t desc_cache[MAX_DESC_CACHE];
-+int desc_cache_index = 0;
-+
-+static unsigned int lcdc_set_descriptor(unsigned long offset, int size)
-+{
-+ descriptor_t *desc, *desc_prev = NULL, *desc_prev2, *desc_first = NULL;
-+ int i, count = 0, is_first_desc = 1;
-+ unsigned int desc_phys, desc_first_phys;
-+ unsigned int offset_orig = offset, size_orig = size;
-+
-+ PRINT_DEBUG("lcdc_set_descriptor(offset=0x%08x, size=0x%08x)\n", offset, size);
-+
-+ for (i = 0; i < desc_cache_index; ++i) {
-+ if (desc_cache[i].offset == offset && desc_cache[i].size == size)
-+ return desc_cache[i].desc_phys;
-+ }
-+
-+ /* build descriptor */
-+ while (size > 0) {
-+ vram_area_t *va = NULL;
-+ unsigned int alen, aoff;
-+
-+ desc = NULL;
-+ for (i = 0; i < MAX_DESCRIPTORS; ++i) {
-+ unsigned int fdadr = *(unsigned int *)(&descriptors[i]);
-+ if (fdadr == 0) {
-+ desc = &descriptors[i];
-+ desc_phys = descriptor_phys + (sizeof(descriptor_t) * i);
-+ break;
-+ }
-+ }
-+ if (desc == NULL) {
-+ // empty
-+ return 0;
-+ }
-+
-+ for (i = 0; i < MAX_VRAM_AREAS; ++i) {
-+ va = &vram_areas[i];
-+ if (va->offset <= offset && offset < (va->offset + (va->end_phys - va->start_phys)))
-+ break;
-+ }
-+ if (i == MAX_VRAM_AREAS) {
-+ return 0;
-+ }
-+
-+ aoff = offset - va->offset;
-+ if (is_first_desc) {
-+ alen = 4 * 1024;
-+ is_first_desc = 0;
-+ } else {
-+ alen = va->end_phys - va->start_phys - aoff;
-+ if (alen > size)
-+ alen = size;
-+ }
-+
-+ desc->FDADR = desc_phys;
-+ desc->FSADR = va->start_phys + aoff;
-+ desc->FIDR = 0;
-+ desc->LDCMD = alen;
-+
-+ if (desc_prev != NULL)
-+ desc_prev->FDADR = desc_phys;
-+ desc_prev2 = desc_prev;
-+ desc_prev = desc;
-+
-+ if (desc_first == NULL) {
-+ desc_first = desc;
-+ desc_first_phys = desc_phys;
-+ }
-+
-+ size -= alen;
-+ offset += alen;
-+ }
-+
-+ /* ÀèƬ¤Î¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ø¥ê¥ó¥¯¤µ¤»¤ë */
-+ desc->FDADR = desc_first_phys;
-+
-+ /* ËöÈø¤Î¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ÏSOF/EOF³ä¤ê¹þ¤ß¤òȯÀ¸¤µ¤»¤ë */
-+/* desc->LDCMD = desc->LDCMD | 0x400000; */
-+/* desc->LDCMD = desc->LDCMD | 0x200000; */
-+ desc_prev2->LDCMD |= 0x200000;
-+
-+ desc_cache[desc_cache_index].offset = offset_orig;
-+ desc_cache[desc_cache_index].size = size_orig;
-+ desc_cache[desc_cache_index].desc_phys = desc_first_phys;
-+ ++ desc_cache_index; /* FIXME: buffer overflow */
-+
-+#if 0
-+ desc = desc_first;
-+ desc_phys = desc_first_phys;
-+ do {
-+ lcdc_state_print_descriptor(count++, desc_phys);
-+ if (count >= MAX_DESCRIPTORS)
-+ break;
-+ desc_prev = desc;
-+ desc_phys = desc->FDADR;
-+ } while (desc_prev->FDADR != desc_first_phys);
-+#endif
-+
-+ return desc_first_phys;
-+}
-+
-+// ----------------------------------------------------------------
-+
-+static int bvdd_open(struct inode *inode,
-+ struct file *file)
-+{
-+ int i;
-+ printk(DEVICE_NAME ": bvdd_open(0x%p, 0x%p)\n", inode, file);
-+
-+ if (device_open)
-+ return -EBUSY;
-+
-+ lcdc_state_read(&lcdc_state_orig);
-+ lcdc_state_orig.fdadr1 = 0;
-+ lcdc_state_orig.fdadr2 = 0;
-+ lcdc_state_orig.fdadr3 = 0;
-+ lcdc_state_orig.fdadr4 = 0;
-+ lcdc_state_orig.fdadr5 = 0;
-+ lcdc_state_orig.fdadr6 = 0;
-+/* lcdc_state_print(&lcdc_state_orig); */
-+
-+ memcpy(&lcdc_state, &lcdc_state_orig, sizeof(lcdc_state));
-+ lcdc_state.cken20_intmem = 1;
-+
-+#ifndef USE_PXAFB_DESCRIPTOR_AREA
-+ descriptor_size = PAGE_ALIGN(sizeof(descriptor_t) * MAX_DESCRIPTORS);
-+ descriptors = consistent_alloc(GFP_KERNEL|GFP_DMA, descriptor_size, &descriptor_phys);
-+ memset(descriptors, 0, sizeof(descriptor_t) * MAX_DESCRIPTORS);
-+ printk(DEVICE_NAME ": descriptor: virt=0x%p, phys=0x%p, size=%d\n",
-+ descriptors, descriptor_phys, descriptor_size);
-+#else
-+ // SHARPSL_PXAFB¤¬³ÎÊݤ·¤Æ¤¤¤ëÎΰè¤ò¼ÚÍѤ¹¤ë¡£
-+ // Ƭ¤Î16¥Ð¥¤¥È¤ÏSLARPSL_PXAFB¤¬»È¤Ã¤Æ¤¤¤ë¤Î¤Ç¥¹¥­¥Ã¥×¤¹¤ë¡£
-+ descriptors = (descriptor_t *)__phys_to_virt((lcdc_state_orig.fdadr0 + 16));
-+ PRINT_DEBUG(" descriptors : phys=0x%p, virt=0x%p\n", lcdc_state_orig.fdadr0 + 16, descriptors);
-+ memset(descriptors, 0, sizeof(descriptor_t) * MAX_DESCRIPTORS);
-+ PRINT_DEBUG(" descriptors : 0x%p, 0x%p\n", &descriptors[0], &descriptors[1]);
-+#endif
-+
-+ init_waitqueue_head(&fbr2_wait);
-+ init_waitqueue_head(&fbr3_wait);
-+ init_waitqueue_head(&fbr4_wait);
-+ init_waitqueue_head(&wq_lcd_quick_disable_done);
-+ init_waitqueue_head(&wq_lcd_disable_done);
-+
-+ next_fbr2 = 0;
-+ next_fbr3 = 0;
-+ next_fbr4 = 0;
-+
-+ request_irq(17, inttest, SA_INTERRUPT|SA_SHIRQ, "bvdd", (void *)0xDEADBEAF);
-+
-+ device_open++;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ return 0;
-+}
-+
-+
-+static int bvdd_release(struct inode *inode,
-+ struct file *file)
-+{
-+ PRINT_DEBUG("bvdd_release(0x%p, 0x%p)\n", inode, file);
-+ PRINT_DEBUG(" ***** %d\n", REG_LCSR1 & 0x200);
-+
-+ free_irq(17, (void *)0xDEADBEAF);
-+
-+ /* restore lcdc state */
-+ lcdc_state_write(&lcdc_state_orig);
-+ lcdc_state_write(&lcdc_state_orig);
-+
-+ // free vram
-+ if (vram_virt != NULL) {
-+ printk(DEVICE_NAME ": Now freeing vram.\n");
-+ consistent_free(vram_virt, vram_size, vram_phys);
-+ vram_virt = NULL;
-+ } else {
-+ printk(DEVICE_NAME ": vram is not allocated.\n");
-+ }
-+ free_vram();
-+
-+#ifndef USE_PXAFB_DESCRIPTOR_AREA
-+ // free descriptor
-+ consistent_free(descriptors, descriptor_size, descriptor_phys);
-+ descriptors = NULL;
-+ descriptor_size = 0;
-+ descriptor_phys = 0;
-+#else
-+ descriptors = NULL;
-+#endif
-+
-+ // free descriptor cache
-+ desc_cache_index = 0;
-+
-+ __asm__ __volatile__ ("mcr p15, 0, %0, c15, c1, 0" : :"r"(0));
-+
-+ /* We're now ready for our next caller */
-+ device_open --;
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ return 0;
-+}
-+
-+#define SHARPSL_PXA_VSYNC_TIMEOUT 30000 // timeout = 30[ms] > 16.8[ms]
-+//
-+static void bvdd_vsync()
-+{
-+ int timeout = SHARPSL_PXA_VSYNC_TIMEOUT;
-+
-+ while(timeout > 0)
-+ {
-+ if ((GPLR(GPIO74_LCD_FCLK) & GPIO_bit(GPIO74_LCD_FCLK)))
-+ break;
-+ udelay(1);
-+ timeout--;
-+ }
-+ while(timeout > 0)
-+ {
-+ if (!(GPLR(GPIO74_LCD_FCLK) & GPIO_bit(GPIO74_LCD_FCLK)))
-+ break;
-+ udelay(1);
-+ timeout--;
-+ }
-+}
-+
-+static int bvdd_setup_frame(int type, bvdd_frame_t *frame_user, int is_branch)
-+{
-+ bvdd_frame_t frame;
-+ int i;
-+
-+ copy_from_user(&frame, (void *)frame_user, sizeof(frame));
-+
-+#if 0
-+ PRINT_DEBUG("bvdd_setup_frame(type=%d,bvdd_frame_t*=0x%p)\n", type, frame_user);
-+ printk(DEVICE_NAME ": bvdd_frame_t {\n");
-+ printk(DEVICE_NAME ": format=%d\n", frame.format);
-+ printk(DEVICE_NAME ": width=%d\n", frame.width);
-+ printk(DEVICE_NAME ": height=%d\n", frame.height);
-+ printk(DEVICE_NAME ": x=%d\n", frame.x);
-+ printk(DEVICE_NAME ": y=%d\n", frame.y);
-+ printk(DEVICE_NAME ": offset=0x%p\n", frame.offset);
-+ printk(DEVICE_NAME ": u_offset=0x%p\n", frame.u_offset);
-+ printk(DEVICE_NAME ": v_offset=0x%p\n", frame.v_offset);
-+ printk(DEVICE_NAME ": }\n");
-+#endif
-+
-+ if (frame.format > 16) {
-+ unsigned int desc, y_stride, uv_stride;
-+
-+ y_stride = (frame.width + 15) & ~15;
-+ uv_stride = y_stride / 2;
-+
-+/* lcdc_state.lccr3.f.PDFOR = 3; */
-+
-+ lcdc_state.ovl2c1.f.O2EN = 1;
-+ lcdc_state.ovl2c1.f.LPO2 = frame.height - 1;
-+ lcdc_state.ovl2c1.f.PPL2 = y_stride - 1;
-+ lcdc_state.ovl2c1.f.BPP2 = 0;
-+ lcdc_state.ovl2c2.f.FOR = frame.format - 16;
-+/* lcdc_state.ovl2c2.f.FOR = 4; */
-+ lcdc_state.ovl2c2.f.O2XPOS = frame.x;
-+ lcdc_state.ovl2c2.f.O2YPOS = frame.y;
-+
-+ desc = lcdc_set_descriptor(frame.offset, y_stride * frame.height);
-+ if (desc == 0) {
-+ PRINT_DEBUG(" couldn't set descriptors.\n");
-+ return -1;
-+ }
-+ lcdc_state.fdadr2 = desc;
-+
-+ desc = lcdc_set_descriptor(frame.u_offset, uv_stride * (frame.height / 2));
-+ if (desc == 0) {
-+ PRINT_DEBUG(" couldn't set descriptors.\n");
-+ lcdc_state.fdadr2 = 0;
-+ return -1;
-+ }
-+ lcdc_state.fdadr3 = desc;
-+
-+ desc = lcdc_set_descriptor(frame.v_offset, uv_stride * (frame.height / 2));
-+ if (desc == 0) {
-+ PRINT_DEBUG(" couldn't set descriptors.\n");
-+ lcdc_state.fdadr2 = 0;
-+ lcdc_state.fdadr3 = 0;
-+ return -1;
-+ }
-+ lcdc_state.fdadr4 = desc;
-+
-+ if (is_branch) {
-+/* interruptible_sleep_on(&fbr2_wait); */
-+/* interruptible_sleep_on(&fbr3_wait); */
-+/* interruptible_sleep_on(&fbr4_wait); */
-+ wait_event_interruptible(fbr2_wait, (next_fbr2 == 0));
-+ wait_event_interruptible(fbr3_wait, (next_fbr3 == 0));
-+ wait_event_interruptible(fbr4_wait, (next_fbr4 == 0));
-+ disable_irq(17);
-+ next_fbr2 = lcdc_state.fdadr2;
-+ next_fbr3 = lcdc_state.fdadr3;
-+ next_fbr4 = lcdc_state.fdadr4;
-+ enable_irq(17);
-+ } else {
-+ lcdc_state_print(&lcdc_state);
-+ lcdc_state_write(&lcdc_state);
-+ }
-+ }
-+}
-+
-+static int bvdd_ioctl(struct inode *inode, struct file *file,
-+ unsigned int ioctl_num, unsigned long ioctl_param)
-+{
-+ int i;
-+ char *temp;
-+ char ch;
-+
-+ switch (ioctl_num) {
-+ case BVDD_IOCTL_SETUP_VRAM: {
-+ printk(DEVICE_NAME ": BVDD_IOCTL_SETUP_VRAM(0x%08x)\n", ioctl_param);
-+#if 0
-+ // ´û¤ËVRAM¤¬³ÎÊݤµ¤ì¤Æ¤¤¤ì¤Ð²òÊü¤¹¤ë
-+ if (vram_virt != NULL) {
-+ printk(DEVICE_NAME ": now freeing allocated vram\n");
-+ consistent_free(vram_virt, vram_size, vram_phys);
-+ }
-+
-+ vram_size = PAGE_ALIGN(ioctl_param + PAGE_SIZE);
-+ vram_virt = consistent_alloc(GFP_KERNEL /* | GFP_DMA */, vram_size, &vram_phys);
-+ if (vram_virt == NULL) {
-+ printk(DEVICE_NAME ": consistent_alloc failed\n");
-+ return -EINVAL;
-+ }
-+
-+ printk(DEVICE_NAME ": vram_virt=0x%p\n", vram_virt);
-+ printk(DEVICE_NAME ": vram_phys=0x%p\n", vram_phys);
-+ printk(DEVICE_NAME ": vram_size=%d\n", vram_size);
-+ vram_areas[2].start_virt = vram_virt;
-+ vram_areas[2].start_phys = vram_phys;
-+ vram_areas[2].end_phys = vram_phys + vram_size;
-+ vram_areas[2].offset = BVDD_VRAM_OFFSET_USER;
-+#endif
-+ free_vram();
-+ if (setup_vram(ioctl_param) < 0)
-+ return -EINVAL;
-+
-+ break;
-+ }
-+
-+ case BVDD_IOCTL_SETUP_BASE_FRAME: {
-+ printk(DEVICE_NAME ": BVDD_IOCTL_SETUP_BASE_FRAME(0x%08x)\n", ioctl_param);
-+ break;
-+ }
-+ case BVDD_IOCTL_SETUP_OVERLAY1_FRAME: {
-+ break;
-+ }
-+ case BVDD_IOCTL_SETUP_OVERLAY2_FRAME: {
-+ bvdd_frame_t frame;
-+ printk(DEVICE_NAME ": BVDD_IOCTL_SETUP_OVERLAY2_FRAME(0x%08x)\n", ioctl_param);
-+ bvdd_setup_frame(2, (bvdd_frame_t *)ioctl_param, 0);
-+ break;
-+ }
-+
-+ case BVDD_IOCTL_BRANCH_OVERLAY2_FRAME: {
-+ bvdd_frame_t frame;
-+/* PRINT_DEBUG("BVDD_IOCTL_BRANCH_OVERLAY2_FRAME(0x%08x)\n", ioctl_param); */
-+ bvdd_setup_frame(2, (bvdd_frame_t *)ioctl_param, 1);
-+ break;
-+ }
-+
-+ case BVDD_IOCTL_SET_IWMMXT_STATE: {
-+ __asm__ __volatile__ ("mcr p15, 0, %0, c15, c1, 0" : :"r"(ioctl_param ? 3 : 0));
-+ break;
-+ }
-+
-+#if defined(CONFIG_SL_CCCR_CHANGE)
-+ case BVDD_IOCTL_GET_CCCR: {
-+ *((int *)ioctl_param) = read_cccr();
-+ printk(DEVICE_NAME ": Read CCCR = %x.\n", *((int *)ioctl_param));
-+ break;
-+ }
-+ case BVDD_IOCTL_SET_CCCR: {
-+ write_cccr((int)ioctl_param);
-+ printk(DEVICE_NAME ": Change CCCR = %x.\n", (int)ioctl_param);
-+ break;
-+ }
-+#endif
-+#if defined(CONFIG_CHANGE_CORE_VOLT)
-+ case BVDD_IOCTL_GET_VCORE: {
-+ *((int *)ioctl_param) = read_vcore();
-+ printk(DEVICE_NAME ": Read VCORE = %x.\n", *((int *)ioctl_param));
-+ break;
-+ }
-+ case BVDD_IOCTL_SET_VCORE: {
-+ write_vcore((int)ioctl_param);
-+ printk(DEVICE_NAME ": Change VCORE = %x.\n", (int)ioctl_param);
-+ break;
-+ }
-+#endif
-+
-+ case BVDD_IOCTL_DEBUG: {
-+ printk(DEVICE_NAME ": BVDD_IOCTL_DEBUG\n");
-+ break;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+/*
-+ vma->vm_start, vma->vm_end ¤Ï¡¢mmap°ú¿ô¤¬¥Ú¡¼¥¸¶­³¦¤Ç¤Ê¤¯¤È¤â¥¢¥é¥¤¥ó¤µ¤ì¤¿¤â¤Î¤¬¤³¤Î´Ø¿ô¤ËÅϤ롣
-+ vma->vm_pgoff ¤Ï¡¢mmap°ú¿ô¤¬¥Ú¡¼¥¸¶­³¦¤Ç¤Ê¤±¤ì¤Ð¥¨¥é¡¼¤Ë¤Ê¤ë¡£
-+*/
-+static int bvdd_mmap(struct file *file, struct vm_area_struct *vma)
-+{
-+ unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
-+ struct page *map, *mapend;
-+ int i, size;
-+ unsigned long vma_start;
-+
-+ PRINT_DEBUG("bvdd_mmap(file=0x%p, vma=0x%p)\n", file, vma);
-+
-+/* if (vram_virt == NULL) { */
-+/* printk(DEVICE_NAME ": vram is not allocated.\n"); */
-+/* return -EINVAL; */
-+/* } */
-+
-+ printk(DEVICE_NAME ": vm_start = 0x%p\n", (uint32_t)vma->vm_start);
-+ printk(DEVICE_NAME ": vm_end = 0x%p\n", (uint32_t)vma->vm_end);
-+ printk(DEVICE_NAME ": vm_pgoff = 0x%p\n", (uint32_t)vma->vm_pgoff);
-+ printk(DEVICE_NAME ": vm_page_prot.pgprot = 0x%08u\n", (uint32_t)vma->vm_page_prot.pgprot);
-+ printk(DEVICE_NAME ": PAGE_OFFSET = %x\n", (int)PAGE_OFFSET);
-+ printk(DEVICE_NAME ": offset = %x\n", (int)offset);
-+ printk(DEVICE_NAME ": vram_phys = 0x%p\n", vram_phys);
-+
-+ if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
-+ return -EINVAL;
-+
-+#if 0
-+ if ((vma->vm_end - vma->vm_start + offset) > vram_size) {
-+ printk(DEVICE_NAME ": mmap length is too large (vram_size=%d, len=%d\n",
-+ vram_size, vma->vm_end - vma->vm_start + offset);
-+ return -EINVAL;
-+ }
-+#endif
-+
-+ // from fbmem.c
-+ vma->vm_flags |= VM_IO;
-+ vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | L_PTE_CACHEABLE);
-+
-+#if 0
-+ for (i = vma->vm_pgoff; i < vma->vm_pgoff + ((vma->vm_end - vma->vm_start) >> PAGE_SHIFT); ++i) {
-+ if (offset2phys_map[i] == 0) {
-+ printk(DEVICE_NAME ": io_remap_page_range failed.\n");
-+ return -EAGAIN;
-+ }
-+ if (io_remap_page_range(vma->vm_start + (i << PAGE_SHIFT),
-+ offset2phys_map[i],
-+ PAGE_SIZE, vma->vm_page_prot)) {
-+ printk(DEVICE_NAME ": io_remap_page_range failed.\n");
-+ return -EAGAIN;
-+ }
-+ }
-+#endif
-+
-+#if 1
-+ vma_start = vma->vm_start;
-+ size = vma->vm_end - vma->vm_start;
-+ while (size > 0) {
-+ vram_area_t *va = NULL;
-+ int aoff, alen;
-+
-+ for (i = 0; i < MAX_VRAM_AREAS; ++i) {
-+ va = &vram_areas[i];
-+ if (va->offset <= offset && offset < va->offset + (va->end_phys - va->start_phys))
-+ break;
-+ }
-+ if (i == MAX_VRAM_AREAS) {
-+ return -EAGAIN;
-+ }
-+
-+ aoff = offset - va->offset;
-+ alen = va->end_phys - va->start_phys - aoff;
-+ if (alen > size)
-+ alen = size;
-+ PRINT_DEBUG("io_remap_page_range(0x%p, 0x%p, %d)\n", vma_start, va->start_phys + aoff, alen);
-+ if (io_remap_page_range(vma_start, va->start_phys + aoff, alen, vma->vm_page_prot)) {
-+ printk(DEVICE_NAME ": io_remap_page_range failed.\n");
-+ return -EAGAIN;
-+ }
-+ vma_start += alen;
-+ size -= alen;
-+ offset += alen;
-+ }
-+
-+ printk(DEVICE_NAME ": successed.\n");
-+ return 0;
-+#endif
-+}
-+
-+/* Module Declarations *************************** */
-+
-+
-+/* This structure will hold the functions to be called
-+ * when a process does something to the device we
-+ * created. Since a pointer to this structure is kept in
-+ * the devices table, it can't be local to
-+ * init_module. NULL is for unimplemented functions. */
-+struct file_operations fops = {
-+ ioctl : bvdd_ioctl,
-+ mmap : bvdd_mmap,
-+ open : bvdd_open,
-+ release : bvdd_release,
-+};
-+
-+
-+/* Initialize the module - Register the character device */
-+int init_module()
-+{
-+ int i, ret;
-+ unsigned long *p;
-+
-+ /* Register the character device (atleast try) */
-+ ret = register_chrdev(BVDD_MAJOR_NUM, DEVICE_NAME, &fops);
-+
-+ /* Negative values signify an error */
-+ if (ret < 0) {
-+ printk (DEVICE_NAME ": Registering the device failed with %d\n", ret);
-+ return ret;
-+ }
-+
-+ printk (DEVICE_NAME ": Registeration is a success. \n");
-+
-+ /* TODO */
-+/* vram_sharpsl_pxafb_phys = ((descriptor_t *)__phys_to_virt(FDADR0))->FSADR; */
-+ vram_sharpsl_pxafb_phys = (dma_addr_t)0xA3E00000UL;
-+
-+#if 0
-+ p = offset2phys_map;
-+ for (i = 0; i < ((256 * 1024) >> PAGE_SHIFT); ++i) {
-+ *p++ = SRAM_BASE_PHYS + (i << PAGE_SHIFT);
-+ }
-+ for (i = 0; i < ((PAGE_ALIGN(640 * 480 * 2)) >> PAGE_SHIFT); ++i) {
-+ *p++ = vram_sharpsl_pxafb_phys + (i << PAGE_SHIFT);
-+ }
-+#endif
-+
-+ memset(vram_areas, 0, sizeof(vram_areas));
-+ vram_areas[0].start_phys = vram_sharpsl_pxafb_phys;
-+ vram_areas[0].start_virt = (void *)__phys_to_virt(vram_sharpsl_pxafb_phys);
-+ vram_areas[0].end_phys = vram_areas[0].start_phys + PAGE_ALIGN(480 * 640 * 2);
-+ vram_areas[0].offset = 0;
-+ vram_areas[1].start_phys = SRAM_BASE_PHYS;
-+ vram_areas[1].start_virt = (void *)SRAM_BASE;
-+ vram_areas[1].end_phys = vram_areas[1].start_phys + 256 * 1024;
-+ vram_areas[1].offset = PAGE_ALIGN(480 * 640 * 2);
-+
-+ return 0;
-+}
-+
-+
-+/* Cleanup - unregister the appropriate file from /proc */
-+void cleanup_module()
-+{
-+ int ret;
-+
-+ /* Unregister the device */
-+ ret = unregister_chrdev(BVDD_MAJOR_NUM, DEVICE_NAME);
-+
-+ /* If there's an error, report it */
-+ if (ret < 0)
-+ printk(DEVICE_NAME ": Error in unregister_chrdev: %d\n", ret);
-+ printk (DEVICE_NAME ": Unregisteration is a success. \n");
-+}
-+
-+#if 1
-+//////////////////////////////////////////////
-+#include <linux/interrupt.h>
-+
-+/*
-+ * This allocates one page of cache-coherent memory space and returns
-+ * both the virtual and a "dma" address to that space. It is not clear
-+ * whether this could be called from an interrupt context or not. For
-+ * now, we expressly forbid it, especially as some of the stuff we do
-+ * here is not interrupt context safe.
-+ *
-+ * We should allow this function to be called from interrupt context.
-+ * However, we call ioremap, which needs to fiddle around with various
-+ * things (like the vmlist_lock, and allocating page tables). These
-+ * things aren't interrupt safe (yet).
-+ *
-+ * Note that this does *not* zero the allocated area!
-+ */
-+static void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle)
-+{
-+ return l_consistent_alloc2(gfp, size, dma_handle, L_PTE_CACHEABLE);
-+}
-+
-+static void *l_consistent_alloc2(int gfp, size_t size, dma_addr_t *dma_handle, int pte)
-+{
-+ struct page *page, *end, *free;
-+ unsigned long order;
-+ void *ret;
-+
-+ /* FIXME */
-+ if (in_interrupt())
-+ BUG();
-+
-+ size = PAGE_ALIGN(size);
-+ order = get_order(size);
-+
-+ page = alloc_pages(gfp, order);
-+ if (!page) {
-+ printk("size:%d, order:%d\n", size, order);
-+ goto no_page;
-+ }
-+
-+ *dma_handle = page_to_bus(page);
-+ //ret = __ioremap(page_to_pfn(page) << PAGE_SHIFT, size, 0);
-+ ret = __ioremap(page_to_pfn(page) << PAGE_SHIFT, size, pte);
-+ if (!ret) {
-+ goto no_remap;
-+ }
-+
-+#if 0 /* ioremap_does_flush_cache_all */
-+ {
-+ void *virt = page_address(page);
-+
-+ /*
-+ * we need to ensure that there are no cachelines in use, or
-+ * worse dirty in this area. Really, we don't need to do
-+ * this since __ioremap does a flush_cache_all() anyway. --rmk
-+ */
-+ invalidate_dcache_range(virt, virt + size);
-+ }
-+#endif
-+
-+ /*
-+ * free wasted pages. We skip the first page since we know
-+ * that it will have count = 1 and won't require freeing.
-+ * We also mark the pages in use as reserved so that
-+ * remap_page_range works.
-+ */
-+ free = page + (size >> PAGE_SHIFT);
-+ end = page + (1 << order);
-+
-+ for (; page < end; page++) {
-+ set_page_count(page, 1);
-+ if (page >= free)
-+ __free_page(page);
-+ else
-+ SetPageReserved(page);
-+ }
-+ return ret;
-+
-+ no_remap:
-+ __free_pages(page, order);
-+ no_page:
-+ return NULL;
-+}
-+
-+/*
-+ * free a page as defined by the above mapping. We expressly forbid
-+ * calling this from interrupt context.
-+ */
-+static void consistent_free(void *vaddr, size_t size, dma_addr_t handle)
-+{
-+ struct page *page, *end;
-+
-+ if (in_interrupt())
-+ BUG();
-+
-+ /*
-+ * More messing around with the MM internals. This is
-+ * sick, but then so is remap_page_range().
-+ */
-+ size = PAGE_ALIGN(size);
-+ page = virt_to_page(bus_to_virt(handle));
-+ end = page + (size >> PAGE_SHIFT);
-+
-+ for (; page < end; page++)
-+ ClearPageReserved(page);
-+
-+ __iounmap(vaddr);
-+}
-+
-+#endif
-+
-+/*
-+
-+document
-+
-+- Do not change resolution (VGA, QVGA) while bvdd device opened. (TODO)
-+- open()¤¹¤ë¤È¤­¤Èclose()¤¹¤ë¤È¤­¤Î²òÁüÅÙ¤¬Æ±¤¸¤Ç¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£
-+ ¾õÂÖ¤¬°ã¤Ã¤¿¤È¤­¤ÎÆ°ºî¤Ï̤ÊݾڤǤ¹¡£
-+
-+
-+*/
-diff -Nur c3000_pre/linux/drivers/video/bvdd.h c3000_work/linux/drivers/video/bvdd.h
---- c3000_pre/linux/drivers/video/bvdd.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/video/bvdd.h 2005-02-21 23:48:01.000000000 +0900
-@@ -0,0 +1,64 @@
-+/* bulverded.h - bulverde(PXA27x) display driver
-+BulVerDD
-+ */
-+
-+#ifndef CHARDEV_H
-+#define CHARDEV_H
-+
-+#include <linux/ioctl.h>
-+
-+#define BVDD_VRAM_OFFSET_PXAFB (0)
-+#define BVDD_VRAM_OFFSET_SRAM (480 * 640 * 2)
-+#define BVDD_VRAM_OFFSET_USER (BVDD_VRAM_OFFSET_SRAM + (256 * 1024))
-+
-+#define BVDD_FORMAT_RGB2 1 /* 2-bits/pixel [4 entry palette] */
-+#define BVDD_FORMAT_RGB4 2 /* 4-bits/pixel [16 entry palette] */
-+#define BVDD_FORMAT_RGB8 3 /* 8-bits/pixel [256 entry palette] */
-+#define BVDD_FORMAT_RGB16 4 /* 16-bits/pixel */
-+#define BVDD_FORMAT_RGB18 5 /* 18-bits/pixel, unpacked */
-+#define BVDD_FORMAT_RGB18P 6 /* 18-bits/pixel, packed */
-+#define BVDD_FORMAT_RGB19 7 /* 19-bits/pixel, unpacked */
-+#define BVDD_FORMAT_RGB19P 8 /* 19-bits/pixel, packed */
-+#define BVDD_FORMAT_RGB24 9 /* 24-bits/pixel */
-+#define BVDD_FORMAT_RGB25 10 /* 25-bits/pixel */
-+#define BVDD_FORMAT_YUV444P 17 /* YCbCr4:4:4 Packed */
-+#define BVDD_FORMAT_YUV444 18 /* YCbCr4:4:4 Planar */
-+#define BVDD_FORMAT_YUV422 19 /* YCbCr4:2:2 Planar */
-+#define BVDD_FORMAT_YUV420 20 /* YCbCr4:2:0 Planar */
-+
-+
-+typedef struct {
-+ unsigned char format;
-+ unsigned short width;
-+ unsigned short height;
-+ unsigned short x;
-+ unsigned short y;
-+ unsigned long offset; /* aligned on a 16-byte boundary */
-+ unsigned long u_offset; /* aligned on a 16-byte boundary */
-+ unsigned long v_offset; /* aligned on a 16-byte boundary */
-+} bvdd_frame_t;
-+
-+/* The major device number. We can't rely on dynamic
-+ * registration any more, because ioctls need to know
-+ * it. */
-+#define BVDD_MAJOR_NUM 240
-+
-+/* Set the message of the device driver */
-+#define BVDD_IOCTL_SETUP_VRAM _IOR(BVDD_MAJOR_NUM, 0, uint32_t)
-+#define BVDD_IOCTL_SETUP_BASE_FRAME _IOR(BVDD_MAJOR_NUM, 1, bvdd_frame_t *)
-+#define BVDD_IOCTL_SETUP_OVERLAY1_FRAME _IOR(BVDD_MAJOR_NUM, 2, bvdd_frame_t *)
-+#define BVDD_IOCTL_SETUP_OVERLAY2_FRAME _IOR(BVDD_MAJOR_NUM, 3, bvdd_frame_t *)
-+#define BVDD_IOCTL_BRANCH_OVERLAY2_FRAME _IOR(BVDD_MAJOR_NUM, 6, bvdd_frame_t *)
-+#define BVDD_IOCTL_SET_IWMMXT_STATE _IOR(BVDD_MAJOR_NUM, 7, int)
-+#define BVDD_IOCTL_GET_CCCR _IOR(BVDD_MAJOR_NUM, 11, int *)
-+#define BVDD_IOCTL_SET_CCCR _IOR(BVDD_MAJOR_NUM, 12, int)
-+#define BVDD_IOCTL_GET_VCORE _IOR(BVDD_MAJOR_NUM, 13, int *)
-+#define BVDD_IOCTL_SET_VCORE _IOR(BVDD_MAJOR_NUM, 14, int)
-+
-+#define BVDD_IOCTL_DEBUG _IO(BVDD_MAJOR_NUM, 10)
-+
-+/* The name of the device file */
-+#define BVDD_DEVICE_FILE_NAME "bvdd"
-+
-+
-+#endif
-diff -Nur c3000_pre/linux/drivers/video/bvdd_p.h c3000_work/linux/drivers/video/bvdd_p.h
---- c3000_pre/linux/drivers/video/bvdd_p.h 1970-01-01 09:00:00.000000000 +0900
-+++ c3000_work/linux/drivers/video/bvdd_p.h 2005-02-21 23:41:29.000000000 +0900
-@@ -0,0 +1,284 @@
-+#ifndef BVDD_P_INCLUDED
-+#define BVDD_P_INCLUDED
-+
-+#include <asm/hardware.h>
-+
-+#define REG_LCCR0 __REG(0x44000000) /* LCD Controller Control register 0 */
-+#define REG_LCCR1 __REG(0x44000004) /* LCD Controller Control register 1 */
-+#define REG_LCCR2 __REG(0x44000008) /* LCD Controller Control register 2 */
-+#define REG_LCCR3 __REG(0x4400000C) /* LCD Controller Control register 3 */
-+#define REG_LCCR4 __REG(0x44000010) /* LCD Controller Control register 4 */
-+#define REG_LCCR5 __REG(0x44000014) /* LCD Controller Control register 5 */
-+#define REG_FBR0 __REG(0x44000020)
-+#define REG_FBR1 __REG(0x44000024)
-+#define REG_FBR2 __REG(0x44000028)
-+#define REG_FBR3 __REG(0x4400002C)
-+#define REG_FBR4 __REG(0x44000030)
-+#define REG_LCSR1 __REG(0x44000034)
-+#define REG_LCSR0 __REG(0x44000038)
-+#define REG_LIIDR __REG(0x4400003C)
-+#define REG_TRGBR __REG(0x44000040)
-+#define REG_TCR __REG(0x44000044)
-+#define REG_OVL1C1 __REG(0x44000050)
-+#define REG_OVL1C2 __REG(0x44000060)
-+#define REG_OVL2C1 __REG(0x44000070)
-+#define REG_OVL2C2 __REG(0x44000080)
-+#define REG_CCR __REG(0x44000090)
-+#define REG_CMDCR __REG(0x44000100)
-+#define REG_PRSR __REG(0x44000104)
-+#define REG_FBR5 __REG(0x44000110)
-+#define REG_FBR6 __REG(0x44000114)
-+#define REG_FDADR0 __REG(0x44000200)
-+#define REG_FSADR0 __REG(0x44000204)
-+#define REG_FIDR0 __REG(0x44000208)
-+#define REG_LDCMD0 __REG(0x4400020C)
-+#define REG_FDADR1 __REG(0x44000210)
-+#define REG_FSADR1 __REG(0x44000214)
-+#define REG_FIDR1 __REG(0x44000218)
-+#define REG_LDCMD1 __REG(0x4400021C)
-+#define REG_FDADR2 __REG(0x44000220)
-+#define REG_FSADR2 __REG(0x44000224)
-+#define REG_FIDR2 __REG(0x44000228)
-+#define REG_LDCMD2 __REG(0x4400022C)
-+#define REG_FDADR3 __REG(0x44000230)
-+#define REG_FSADR3 __REG(0x44000234)
-+#define REG_FIDR3 __REG(0x44000238)
-+#define REG_LDCMD3 __REG(0x4400023C)
-+#define REG_FDADR4 __REG(0x44000240)
-+#define REG_FSADR4 __REG(0x44000244)
-+#define REG_FIDR4 __REG(0x44000248)
-+#define REG_LDCMD4 __REG(0x4400024C)
-+#define REG_FDADR5 __REG(0x44000250)
-+#define REG_FSADR5 __REG(0x44000254)
-+#define REG_FIDR5 __REG(0x44000258)
-+#define REG_LDCMD5 __REG(0x4400025C)
-+#define REG_FDADR6 __REG(0x44000260)
-+#define REG_FSADR6 __REG(0x44000264)
-+#define REG_FIDR6 __REG(0x44000268)
-+#define REG_LDCMD6 __REG(0x4400026C)
-+#define REG_LCDBSCNTR __REG(0x48000054)
-+
-+typedef struct {
-+ unsigned long ENB : 1; /* LCD Controller Enable */
-+ unsigned long CMS : 1; /* Color/Monochrome Select */
-+ unsigned long SDS : 1; /* Single-Scan/dual-scan Display Select */
-+ unsigned long LDM : 1; /* LCD Disable Done Mask */
-+ unsigned long SOFM0 : 1; /* Start of Frame Mask for Channel 0 and Channel 1 (Dual Scan) */
-+ unsigned long IUM : 1; /* Input FIFO Underrun Mask */
-+ unsigned long EOFM0 : 1; /* End of Frame Mask for Channel 0 and for Channel 1 (Dual Scan) */
-+ unsigned long PAS : 1; /* Passive/Active Display Select */
-+ unsigned long reserved2 : 1;
-+ unsigned long DPD : 1; /* Double-Pixel Data (DPD) Pin Mode */
-+ unsigned long DIS : 1; /* LCD Disable */
-+ unsigned long QDM : 1; /* LCD Quick Disable Mask */
-+ unsigned long PDD : 8; /* Palette DMA Request Delay */
-+ unsigned long BSM0 : 1; /* Branch Status Mask */
-+ unsigned long OUM : 1; /* Output FIFO Underrun Mask */
-+ unsigned long LCDT : 1; /* LCD Panel Type */
-+ unsigned long RDSTM : 1; /* LCD Read Status Interrupt Mask */
-+ unsigned long CMDIM : 1; /* LCD Command Interrupt Mask */
-+ unsigned long OUC : 1; /* Overlay Underlay Control Bit */
-+ unsigned long LDDALT : 1; /* LDD Alternate Mapping Control Bit */
-+ unsigned long reserved1 : 5;
-+} LCCR0_t;
-+typedef union {
-+ LCCR0_t f;
-+ unsigned long val;
-+} LCCR0_u;
-+
-+typedef struct {
-+ unsigned long PPL :10; /* Pixels per Line for the Base Frame */
-+ unsigned long HSW : 6; /* Horizontal Sync Pulse Width */
-+ unsigned long ELW : 8; /* End-of-Line Pixel Clock Wait Count */
-+ unsigned long BLW : 8; /* Beginning-of-Line Pixel Clock Wait Count */
-+} LCCR1_t;
-+typedef union {
-+ LCCR1_t f;
-+ unsigned long val;
-+} LCCR1_u;
-+
-+typedef struct {
-+ unsigned long LPP :10; /* Lines per Panel for the Base Frame */
-+ unsigned long VSW : 6; /* Vertical Sync Pulse Width */
-+ unsigned long EFW : 8; /* End-of-Frame Line Clock Wait Count */
-+ unsigned long BFW : 8; /* Beginning-of-Frame Line Clock Wait Count */
-+} LCCR2_t;
-+typedef union {
-+ LCCR2_t f;
-+ unsigned long val;
-+} LCCR2_u;
-+
-+typedef struct {
-+ unsigned long PCD : 8; /* Pixel Clock Divisor */
-+ unsigned long ACB : 8; /* AC Bias Pin Frequency */
-+ unsigned long API : 4; /* AC Bias Pin Transitions per Interrupt */
-+ unsigned long VSP : 1; /* Vertical Sync Polarity */
-+ unsigned long HSP : 1; /* Horizontal Sync Polarity */
-+ unsigned long PCP : 1; /* Pixel Clock Polarity */
-+ unsigned long OEP : 1; /* Output Enable Polarity */
-+ unsigned long BPP : 3; /* Bits per Pixel */
-+ unsigned long DPC : 1; /* Double Pixel Clock Mode */
-+ unsigned long reserved1 : 1;
-+ unsigned long BPP3 : 1; /* Bits per Pixel */
-+ unsigned long PDFOR : 2; /* Pixel Data Format */
-+} LCCR3_t;
-+typedef union {
-+ LCCR3_t f;
-+ unsigned long val;
-+} LCCR3_u;
-+
-+typedef struct {
-+ unsigned long K1 : 3; /* Multiplication Constant for Red for Half Transparency */
-+ unsigned long K2 : 3; /* Multiplication Constant for Blue for Half Transparency */
-+ unsigned long K3 : 3; /* Multiplication Constant for Green for Half Transparency */
-+ unsigned long reserved2 : 6;
-+ unsigned long PAL_FOR : 2; /* Palette Data Format */
-+ unsigned long reserved1 :12;
-+ unsigned long PCDDIV : 1; /* PCD Divisor Selection */
-+} LCCR4_t;
-+typedef union {
-+ LCCR4_t f;
-+ unsigned long val;
-+} LCCR4_u;
-+
-+/* LCCR5 unused */
-+
-+typedef struct {
-+ unsigned long PPL1 :10; /* Pixels per Line for Overlay 1 Frame */
-+ unsigned long LPO1 :10; /* Number of Lines for Overlay 1 */
-+ unsigned long BPP1 : 4; /* Bits per Pixel for Overlay 1 */
-+ unsigned long reserved1 : 7;
-+ unsigned long O1EN : 1; /* Enable bit for Overlay 1 */
-+} OVL1C1_t;
-+typedef union {
-+ OVL1C1_t f;
-+ unsigned long val;
-+} OVL1C1_u;
-+
-+typedef struct {
-+ unsigned long O1XPOS :10; /* Horizontal Position of the Upper Left-Most Pixel of Overlay 1 Window */
-+ unsigned long O1YPOS :10; /* Vertical Position of the Upper Left-Most Pixel of Overlay 1 Window */
-+ unsigned long reserved1 :12;
-+} OVL1C2_t;
-+typedef union {
-+ OVL1C2_t f;
-+ unsigned long val;
-+} OVL1C2_u;
-+
-+typedef struct {
-+ unsigned long PPL2 :10; /* Pixels per Line for Overlay 2 Frame */
-+ unsigned long LPO2 :10; /* Number of Lines for Overlay 2 Frame */
-+ unsigned long BPP2 : 4; /* Bits per Pixel for Overlay 2 */
-+ unsigned long reserved1 : 7;
-+ unsigned long O2EN : 1; /* Overlay 2 Enable */
-+} OVL2C1_t;
-+typedef union {
-+ OVL2C1_t f;
-+ unsigned long val;
-+} OVL2C1_u;
-+
-+typedef struct {
-+ unsigned long O2XPOS :10; /* Horizontal Position of the Upper Left Most Pixel of Overlay 2 */
-+ unsigned long O2YPOS :10; /* Vertical Position of the Upper Left Most Pixel of Overlay 2 */
-+ unsigned long FOR : 3; /* Format */
-+ unsigned long reserved1 : 9;
-+} OVL2C2_t;
-+typedef union {
-+ OVL2C2_t f;
-+ unsigned long val;
-+} OVL2C2_u;
-+
-+#undef BS0
-+typedef struct {
-+ unsigned long LDD : 1; /* LCD Disable Done Flag */
-+ unsigned long SOF0 : 1; /* Start of Frame Status for Base */
-+ unsigned long BER : 1; /* Bus Error Status */
-+ unsigned long ABC : 1; /* AC Bias Count Status */
-+ unsigned long IU0 : 1; /* Input FIFO Underrun for Channel 0 */
-+ unsigned long IU1 : 1; /* Input FIFO Underrun for Channel 1 */
-+ unsigned long OU : 1; /* Output FIFO Underrun */
-+ unsigned long QD : 1; /* LCD Quick Disable Status */
-+ unsigned long EOF0 : 1; /* End of Frame Status for Base (Channel 0) */
-+ unsigned long BS0 : 1; /* Branch Status for Base */
-+ unsigned long SINT : 1; /* Subsequent Interrupt Status */
-+ unsigned long RD_ST : 1; /* Read Status */
-+ unsigned long CMD_INT : 1; /* Command Interrupt Status */
-+ unsigned long reserved2 :15;
-+ unsigned long BER_CH : 3; /* Bus Error Channel Number */
-+ unsigned long reserved1 : 1;
-+} LCSR0_t;
-+typedef union {
-+ LCSR0_t f;
-+ unsigned long val;
-+} LCSR0_u;
-+
-+#undef BS1
-+typedef struct {
-+ unsigned long SOF1 : 1; /* Start of Frame Status for Channel 1 */
-+ unsigned long SOF2 : 1; /* Start of Frame Status for Channel 2 */
-+ unsigned long SOF3 : 1; /* Start of Frame Status for Channel 3 */
-+ unsigned long SOF4 : 1; /* Start of Frame Status for Channel 4 */
-+ unsigned long SOF5 : 1; /* Start of Frame Status for Channel 5 */
-+ unsigned long SOF6 : 1; /* Start of Frame Status for Channel 6 */
-+ unsigned long reserved4 : 2;
-+ unsigned long EOF1 : 1; /* End of Frame Status for Channel 1 */
-+ unsigned long EOF2 : 1; /* End of Frame Status for Channel 2 */
-+ unsigned long EOF3 : 1; /* End of Frame Status for Channel 3 */
-+ unsigned long EOF4 : 1; /* End of Frame Status for Channel 4 */
-+ unsigned long EOF5 : 1; /* End of Frame Status for Channel 5 */
-+ unsigned long EOF6 : 1; /* End of Frame Status for Channel 6 */
-+ unsigned long reserved3 : 2;
-+ unsigned long BS1 : 1; /* Branch Status for Channel 1 (Command Register) */
-+ unsigned long BS2 : 1; /* Branch Status for Channel 2 (Command Register) */
-+ unsigned long BS3 : 1; /* Branch Status for Channel 3 (Command Register) */
-+ unsigned long BS4 : 1; /* Branch Status for Channel 4 (Command Register) */
-+ unsigned long BS5 : 1; /* Branch Status for Channel 5 (Command Register) */
-+ unsigned long BS6 : 1; /* Branch Status for Channel 6 (Command Register) */
-+ unsigned long reserved2 : 3;
-+ unsigned long IU2 : 1; /* Input FIFO Underrun for Channel 2 */
-+ unsigned long IU3 : 1; /* Input FIFO Underrun for Channel 3 */
-+ unsigned long IU4 : 1; /* Input FIFO Underrun for Channel 4 */
-+ unsigned long IU5 : 1; /* Input FIFO Underrun for Channel 5 */
-+ unsigned long IU6 : 1; /* Input FIFO Underrun for Channel 6 */
-+ unsigned long reserved1 : 2;
-+} LCSR1_t;
-+typedef union {
-+ LCSR1_t f;
-+ unsigned long val;
-+} LCSR1_u;
-+
-+/* CCR unused */
-+/* CMDCR unused */
-+/* TRGBR unused */
-+/* TCR unused */
-+
-+typedef struct {
-+ unsigned long LCDBS : 4; /* LCD Buffer Strength */
-+ unsigned long reserved1 :28;
-+} LCDBSCNTR_t;
-+typedef union {
-+ LCDBSCNTR_t f;
-+ unsigned long val;
-+} LCDBSCNTR_u;
-+
-+typedef struct {
-+ LCCR0_u lccr0;
-+ LCCR1_u lccr1;
-+ LCCR2_u lccr2;
-+ LCCR3_u lccr3;
-+ LCCR4_u lccr4;
-+ OVL1C1_u ovl1c1;
-+ OVL1C2_u ovl1c2;
-+ OVL2C1_u ovl2c1;
-+ OVL2C2_u ovl2c2;
-+ unsigned long fdadr0;
-+ unsigned long fdadr1;
-+ unsigned long fdadr2;
-+ unsigned long fdadr3;
-+ unsigned long fdadr4;
-+ unsigned long fdadr5;
-+ unsigned long fdadr6;
-+ char cken20_intmem;
-+} lcdc_state_t;
-+
-+#endif /* BVDD_P_INCLUDED */
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P18-detailed_battery_050309.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P18-detailed_battery_050309.patch
deleted file mode 100644
index 1dd6db199b..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/P18-detailed_battery_050309.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-diff -Nur c3000_pre/linux/arch/arm/mach-pxa/sharpsl_battery.c c3000_work/linux/arch/arm/mach-pxa/sharpsl_battery.c
---- c3000_pre/linux/arch/arm/mach-pxa/sharpsl_battery.c 2004-11-16 15:31:06.000000000 +0900
-+++ c3000_work/linux/arch/arm/mach-pxa/sharpsl_battery.c 2005-03-08 23:05:29.000000000 +0900
-@@ -337,20 +337,88 @@
-
- #if defined(CONFIG_ARCH_PXA_SPITZ)
- BATTERY_THRESH sharpsl_main_battery_thresh_temp_h[] = {
-- { 194, 100, SHARPSL_BATTERY_STATUS_HIGH},
-- { 188, 75, SHARPSL_BATTERY_STATUS_HIGH},
-- { 184, 50, SHARPSL_BATTERY_STATUS_HIGH},
-- { 180, 25, SHARPSL_BATTERY_STATUS_LOW},
-- { 176, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
-+ { 212, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 212, 98, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 211, 95, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 210, 93, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 209, 90, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 208, 88, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 207, 85, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 206, 83, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 205, 80, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 204, 78, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 203, 75, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 202, 73, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 201, 70, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 200, 68, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 199, 65, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 198, 63, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 197, 60, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 196, 58, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 195, 55, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 194, 53, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 193, 50, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 192, 48, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 192, 45, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 191, 43, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 191, 40, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 190, 38, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 190, 35, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 189, 33, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 188, 30, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 187, 28, SHARPSL_BATTERY_STATUS_LOW},
-+ { 186, 25, SHARPSL_BATTERY_STATUS_LOW},
-+ { 185, 23, SHARPSL_BATTERY_STATUS_LOW},
-+ { 184, 20, SHARPSL_BATTERY_STATUS_LOW},
-+ { 183, 18, SHARPSL_BATTERY_STATUS_LOW},
-+ { 182, 15, SHARPSL_BATTERY_STATUS_LOW},
-+ { 181, 13, SHARPSL_BATTERY_STATUS_LOW},
-+ { 180, 10, SHARPSL_BATTERY_STATUS_LOW},
-+ { 179, 8, SHARPSL_BATTERY_STATUS_LOW},
-+ { 178, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
- { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL},
- };
-
- BATTERY_THRESH sharpsl_main_battery_thresh_temp_l[] = {
-- { 194, 100, SHARPSL_BATTERY_STATUS_HIGH},
-- { 188, 75, SHARPSL_BATTERY_STATUS_HIGH},
-- { 184, 50, SHARPSL_BATTERY_STATUS_HIGH},
-- { 180, 25, SHARPSL_BATTERY_STATUS_LOW},
-- { 176, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
-+ { 212, 100, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 212, 98, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 211, 95, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 210, 93, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 209, 90, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 208, 88, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 207, 85, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 206, 83, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 205, 80, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 204, 78, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 203, 75, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 202, 73, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 201, 70, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 200, 68, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 199, 65, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 198, 63, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 197, 60, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 196, 58, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 195, 55, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 194, 53, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 193, 50, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 192, 48, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 191, 45, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 190, 43, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 189, 40, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 188, 38, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 187, 35, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 186, 33, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 185, 30, SHARPSL_BATTERY_STATUS_HIGH},
-+ { 184, 28, SHARPSL_BATTERY_STATUS_LOW},
-+ { 183, 25, SHARPSL_BATTERY_STATUS_LOW},
-+ { 182, 23, SHARPSL_BATTERY_STATUS_LOW},
-+ { 181, 20, SHARPSL_BATTERY_STATUS_LOW},
-+ { 180, 18, SHARPSL_BATTERY_STATUS_LOW},
-+ { 179, 15, SHARPSL_BATTERY_STATUS_LOW},
-+ { 178, 13, SHARPSL_BATTERY_STATUS_LOW},
-+ { 177, 10, SHARPSL_BATTERY_STATUS_LOW},
-+ { 176, 8, SHARPSL_BATTERY_STATUS_LOW},
-+ { 175, 5, SHARPSL_BATTERY_STATUS_VERYLOW},
- { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL},
- };
- #else
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/add-oz-release-string.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/add-oz-release-string.patch
deleted file mode 100644
index 1674ed18ff..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/add-oz-release-string.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux_n1/Makefile~add-oz-release-string
-+++ linux_n1/Makefile
-@@ -394,6 +394,7 @@
- @echo \#define UTS_RELEASE \"$(KERNELRELEASE)\" > .ver
- @echo \#define LINUX_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)` >> .ver
- @echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))' >>.ver
-+ @echo \#define OPENZAURUS_RELEASE \"$(OPENZAURUS_RELEASE)\" >> .ver
- @mv -f .ver $@
-
- comma := ,
---- linux_n1/init/version.c~add-oz-release-string
-+++ linux_n1/init/version.c
-@@ -22,5 +22,5 @@
- };
-
- const char *linux_banner =
-- "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
-+ "Linux version " UTS_RELEASE OPENZAURUS_RELEASE " (" LINUX_COMPILE_BY "@"
- LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/armdeffix.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/armdeffix.patch
deleted file mode 100644
index 4a7a8d8f20..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/armdeffix.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- linux/include/asm-arm/processor.h.orig 2005-04-22 16:17:14.240797608 +0100
-+++ linux/include/asm-arm/processor.h 2005-04-22 16:18:16.671306728 +0100
-@@ -46,6 +46,10 @@
- #include <asm/proc/processor.h>
- #include <asm/types.h>
-
-+/*
-+ * Evil hack because the Embedix 2.95 defines this which breaks things. JMD.
-+ */
-+#undef arm
- union debug_insn {
- u32 arm;
- u16 thumb;
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/bluecard_cs.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/bluecard_cs.patch
deleted file mode 100644
index eacada33f5..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/bluecard_cs.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- linux-orig/drivers/bluetooth/bluecard_cs.c 2004-02-16 10:51:46.000000000 +0300
-+++ linux/drivers/bluetooth/bluecard_cs.c 2004-02-17 03:45:31.000000000 +0300
-@@ -102,7 +102,7 @@
-
-
- /* Default baud rate: 57600, 115200, 230400 or 460800 */
--#define DEFAULT_BAUD_RATE 230400
-+#define DEFAULT_BAUD_RATE 460800
-
-
- /* Hardware states */
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/compile.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/compile.patch
deleted file mode 100644
index 1a19b85daa..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/compile.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- linux/include/linux/jffs2_fs_i.h.old 2003-02-01 00:24:48.000000000 -0600
-+++ linux/include/linux/jffs2_fs_i.h 2003-02-01 00:25:14.000000000 -0600
-@@ -48,9 +48,11 @@
- uint32_t nr_frags;
- #endif
-
-+#ifdef KERNEL_VERSION
- #if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,2)
- struct inode vfs_inode;
- #endif
-+#endif
- };
-
- #endif /* _JFFS2_FS_I */
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/corgi-default-brightness.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/corgi-default-brightness.patch
deleted file mode 100644
index 97070991c6..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/corgi-default-brightness.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux/drivers/video/corgi_backlight.c~corgi-default-brightness
-+++ linux/drivers/video/corgi_backlight.c
-@@ -67,11 +67,7 @@
- static int is_corgibl_pm = 0;
-
- #define CORGI_LIGHT_SETTING 7 // range setting : 0(OFF) dim 1 2 3 4 5(MAX)
--#if defined(CONFIG_ARCH_PXA_SPITZ)
- #define CORGI_LIGHT_DEFAULT 1
--#else
--#define CORGI_LIGHT_DEFAULT 6
--#endif
- static int is_corgibl_blank = 0;
- int counter_step_contrast = CORGI_LIGHT_DEFAULT;
- static corgibl_limit = CORGI_LIGHT_SETTING - 1;
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/corgi-fbcon-logo.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/corgi-fbcon-logo.patch
deleted file mode 100644
index 4d3b42445b..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/corgi-fbcon-logo.patch
+++ /dev/null
@@ -1,281 +0,0 @@
---- linux/drivers/video/w100fb.c 2004-11-04 12:44:29.000000000 -0600
-+++ linux/drivers/video/w100fb.c~corgi.patch 2004-11-04 12:50:27.000000000 -0600
-@@ -982,6 +982,17 @@
- #endif
- #endif
-
-+#ifdef CONFIG_ARCH_SHARP_SL_E // English message
-+#include "corgiLogoMsg.c"
-+#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L)
-+static int logo_msg_xoff __initdata = 400;
-+static int logo_msg_yoff __initdata = 100;
-+#else
-+static int logo_msg_xoff __initdata = 120;
-+static int logo_msg_yoff __initdata = 500;
-+#endif
-+#endif
-+
- #endif // CONFIG_ARCH_PXA_SHEPHERD
-
- #endif
---- /dev/null 2004-06-13 02:32:19.000000000 +0100
-+++ linux/drivers/video/corgiLogoMsg.c 2004-11-12 19:57:23.000000000 +0000
-@@ -0,0 +1,258 @@
-+/* Logo Screen 16bits RGB(565) data*/
-+#ifndef __initdata
-+#define __initdata
-+#endif
-+
-+static int logo_msg_width __initdata = 30;
-+static int logo_msg_height __initdata = 250;
-+static unsigned short logo_msg_data[] __initdata ={
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xad55,0x7bef,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x738e,0x0020,0x0000,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0x0020,0x528a,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x18c3,0x738e,0x9cf3,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x52aa,0x2104,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0x1082,0x18e3,0xef3d,0xffff,0xffff,0xffff,0xffff,0xe73c,0xbdf7,0xdebb,0xffdf,0xffff,0xffff,0xffdf,0x6b6d,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xdebd,0xad17,0x0000,0x5a8c,0xef3e,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bb1,0xc5da,0xd67c,0xffbf,0xffff,0xef7d,0x0000,0x632c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xb558,0x0000,0x6b4e,0xf7bf,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x62ec,0xce1b,0xc5ba,0xce1b,0xffff,0xf7be,0x0000,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xc5fb,0xce1b,0xffff,0x18e3,0x2124,0xf79e,0xffff,0xffdf,0xf77e,0xef7d,0x2945,0x0000,0x10a2,0xe71c,0xdebd,0xc5ba,0xef1e,0x94b2,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xc5ba,0xdebd,0xffff,0x8c71,0x0000,0x2945,0x8430,0x9493,0x6b0e,0x2125,0x0000,0x94b2,0x0020,0x0841,0x526a,0x4209,0x3166,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xc5ba,0xdedd,0xffff,0xffff,0x8430,0x0020,0x0000,0x0000,0x0000,0x0000,0x8410,0xffff,0xb596,0x18e3,0x0000,0x0000,0x0000,0x3186,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xcdfb,0xce1b,0xffff,0xffff,0xffff,0xe71c,0x9cd3,0x630d,0x6b4f,0xa4f6,0xffbf,0xffff,0xffff,0xffff,0xbdd8,0x9474,0xc5f9,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xce1b,0xe6fd,0xef3e,0xe6fd,0xce1b,0xc5ba,0xe71d,0xc5da,0xc5db,0xd67c,0xde9c,0xd63c,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5da,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xe6dd,0xffff,0xef5e,0xcdfb,0xc5ba,0xc5ba,0xc5ba,0xce3b,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xef1e,0xe6dd,0xe71d,0xf79f,0xffff,0xffff,0xffff,0xffff,0xf79f,0xf77e,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2124,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x4a69,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xf79f,0xffff,0xffff,0x4a69,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xce1b,0xce1b,0xffff,0x4208,0x632c,0x2945,0x0000,0x630c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x1082,0x0841,0xc618,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xd67c,0x2104,0x5aeb,0xe73c,0x2965,0x0000,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7bf,0xdebd,0xffff,0xffff,0xc618,0x0861,0x0861,0x94b2,0xffdf,0xffff,0xffff,0xd67c,0xc5ba,0x18e3,0x5aeb,0xffff,0xf79e,0x5aeb,0x0000,0x0861,0x8c71,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xe71d,0xffff,0xffff,0xc638,0x18e3,0x0000,0x18c3,0x6b6d,0x9494,0xc5fa,0xce1b,0x18c3,0x526a,0xffff,0xffff,0xffff,0xad55,0x10a2,0x0000,0x2124,0xef7d,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xc5fb,0xc5db,0xf77e,0xffff,0xffff,0xf79e,0x8410,0x18e3,0x0000,0x0000,0x0000,0x0861,0x0000,0x4209,0xd63c,0xffbf,0xffff,0xffff,0xef7d,0x738e,0x39c7,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5db,0xc5db,0xe71d,0xffff,0xffff,0xffff,0xffff,0xc618,0x6b0e,0x4209,0x2945,0x0000,0x4a6a,0xc5ba,0xc5db,0xe6fd,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0x9cb5,0x8c13,0xcdfb,0xdebd,0xef5e,0xffdf,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xef3e,0xc5fb,0xc5ba,0xce1b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x528a,0xcdfb,0xc5ba,0xc5ba,0xc5ba,0xc5db,0xc5da,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffdf,0xdebd,0xd65c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xf77e,0xe6fd,0xd67c,0xce1b,0xc5ba,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xf7be,0x9492,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf79e,0xef5e,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xbdf7,0x2124,0x0000,0x0841,0xef7d,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x528a,0xdefb,0xdefb,0xdefb,0xffdf,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0x8410,0x0020,0x0020,0x6b4d,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffdf,0x5acb,0x0000,0x18e3,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xdefb,0x5aeb,0x4228,0x4228,0x4228,0x4228,0x4228,0x31a7,0x20e4,0x2104,0x2104,0x73ae,0x4a6a,0x0000,0x2946,0xbd79,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xd67c,0xf7bf,0xf7bf,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xffff,0x6b4e,0x0000,0x3187,0xd65b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xde9c,0xffff,0x9473,0x0000,0x2105,0xe73d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7bf,0xde9c,0xd65c,0xd65c,0xd65c,0xd65c,0xd65c,0xd65c,0xce1b,0xce1b,0xce1b,0xdebd,0xd67c,0x3166,0x0861,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xce1a,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xd69a,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xce3b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x4228,0xad55,0xffdf,0xd65c,0xc5fb,0xffbf,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xce59,0x2945,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x6b6d,0x2104,0x0000,0x10a2,0x630c,0xad55,0xf79e,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xce79,0x0000,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xdebb,0xdefb,0xdefb,0xdefb,0xdefb,0xb5b6,0x6b6d,0x31a6,0x0000,0x0841,0x39c7,0x6b6d,0x1082,0x528a,0xdefb,0xdefb,0xce59,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x9493,0x83d1,0x7bb1,0x7bb1,0x8c32,0x94b3,0xa514,0x8430,0x2945,0x0000,0x18e3,0x9492,0x10a2,0x39c7,0x7bb1,0x94b3,0xa514,0x2945,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xf7bf,0xf7bf,0xf7bf,0xf7bf,0xef5e,0xdebd,0xbdb9,0x7b90,0x3187,0x0000,0x10a2,0x734f,0xce3b,0xf7bf,0x2104,0x5acb,0xc5ba,0xe71d,0xffff,0x7bcf,0x0841,0xf79e,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x62ee,0x0000,0x0000,0x20e4,0x7370,0xbd9a,0xc5ba,0xc5ba,0xc5ba,0x18c3,0x4209,0xc5ba,0xdebd,0xffff,0xbdd7,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xef5e,0xef3e,0xef3e,0x8411,0x18e4,0xef3e,0xb577,0x526a,0x9c94,0xc5ba,0xce1b,0xe71d,0x8c33,0x9494,0xef3e,0xce3a,0xb5b7,0xb558,0xb578,0xdefb,0xdedb,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xef1e,0xd65c,0xc5ba,0x0000,0x738e,0xffff,0xffff,0x31a7,0x39c7,0xffff,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x736e,0x0000,0xc5ba,0xce1b,0xe71d,0x0000,0x7bef,0xffff,0xffff,0x31a7,0x39c7,0xffff,0xdefb,0x0000,0x62ec,0x83f1,0x9cf3,0x39c7,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe71d,0xce1b,0xffff,0x7baf,0x0000,0xf77e,0xffff,0xffff,0x0000,0x73af,0xef5e,0xffff,0x4208,0x4208,0xf7bf,0xd6bb,0x0000,0x9cd3,0xf7bf,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xc5ba,0xacf7,0x0000,0x7bb1,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0x62cd,0x736e,0x7bef,0x0000,0x3187,0x6b2e,0x7bef,0x2104,0x3187,0xdebc,0xce3a,0x0000,0x83f1,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xe6dd,0x736e,0x0000,0xc5ba,0xd65c,0xe6dd,0x0000,0x630d,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xc5ba,0x62cd,0x0000,0xc5ba,0xc5ba,0xc5ba,0x0000,0x62cd,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x738f,0xb537,0xdefb,0x528a,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0xc638,0xbd98,0xd65c,0xffff,0x736e,0x5a8c,0xef3e,0xf79e,0xa514,0x8c32,0x83d1,0xa514,0xa514,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xe71c,0xc638,0xc5ba,0xe6dd,0xffff,0xffff,0xd65c,0xd65c,0xffff,0xf7bf,0xc5ba,0xe6fd,0xf7bf,0xf7bf,0xd67c,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0xffff,0xd65c,0xd65c,0xffff,0xf7bf,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xdefb,0xdedb,0xf77e,0xffbf,0xffff,0xffff,0xdebd,0xdebd,0xffff,0xffff,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xef5e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffbf,0xf77e,0xffff,0x5aeb,0x0000,0x39e7,0x8c71,0xbdf7,0xdefb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf7bf,0xf7bf,0xffff,0xffff,0xffff,0xe73c,0xb5b6,0x9492,0x7bef,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x528a,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xd65c,0xbdd8,0x9493,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xffff,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xe71d,0xce3b,0xc5ba,0x2945,0x1082,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x4209,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x736e,0x0000,0xb577,0xde9c,0xde9c,0xd67c,0x9473,0x18e3,0xbdd9,0xde9c,0xde9c,0xde9c,0x4a4a,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf79f,0xef1e,0xffff,0xc618,0x0000,0x8430,0xffff,0xf7be,0x2965,0x528a,0x0000,0xdefb,0xa514,0x73af,0x7bef,0x2965,0x0861,0x738f,0xad75,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd63c,0xcdfb,0xffff,0xffff,0x18e3,0x39e7,0xffff,0x7bcf,0x0000,0x5aeb,0x0000,0xdefb,0x4a6a,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xf79e,0xffff,0x73ae,0x0000,0xbdb7,0x0020,0x4a69,0xa514,0x0000,0xdefb,0x4a6a,0x10a3,0xdefb,0x4a69,0x10a3,0xce3a,0xd69a,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe6fd,0xffff,0xdefb,0x0000,0x10a2,0x0000,0xce59,0x9493,0x0000,0xc5f9,0x4a2a,0x18c3,0xe6dd,0x52ab,0x18c3,0xef3e,0xdefb,0x0000,0x39c7,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xcdfb,0xd65c,0xffff,0xe6dd,0x39c8,0x0000,0x3187,0xf7bf,0x8c32,0x0000,0xacf7,0x4209,0x18c3,0xc5ba,0x528a,0x18c3,0xef3e,0xdefb,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xf79e,0xc5db,0x630d,0x0000,0x62ed,0xf7bf,0x8c32,0x0000,0xd6bb,0x4a4a,0x18c3,0xf7bf,0x5acb,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5ba,0xcdfb,0xbd9a,0x1082,0x0000,0x1082,0xef7e,0x8c32,0x0000,0xdefb,0x4a6a,0x18c3,0xffff,0x5acb,0x18c3,0xd65c,0xbdb8,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0xc5ba,0x8411,0x0000,0x6b4d,0x0000,0x8410,0x8c32,0x0000,0xdefb,0x4a6a,0x18c3,0xffff,0x5acb,0x18c3,0xc5ba,0xacf7,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0x39a7,0x1082,0xe6fd,0x4a2a,0x0861,0x736e,0x0000,0xdefb,0x4a6a,0x0020,0x4228,0x18c3,0x0020,0x39e8,0x94b2,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fb,0xb558,0x0000,0x5acb,0xef3e,0xb559,0x2104,0x0020,0x0000,0xdefb,0x62ed,0x18c3,0x2104,0x0861,0x0000,0x18e4,0x8c71,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0x9452,0x0000,0x9493,0xef3e,0xc5ba,0xce59,0x0841,0x0000,0xdefb,0xde9c,0xce1b,0xffff,0x5acb,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5fb,0x5aeb,0x0000,0xb558,0xe6fd,0xc5ba,0xf7bf,0xa515,0x62ed,0xc5fa,0xcdfb,0xc5db,0xd65c,0x528a,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffdf,0xc5da,0xde9c,0x5aeb,0x2124,0xce1b,0xc5db,0xc5ba,0xf7bf,0xdebd,0xce1b,0xce1b,0xc5db,0xc5da,0xce1b,0x7bcf,0x4209,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xef3e,0xffff,0xef7d,0xf79f,0xc5db,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffdf,0xffff,0xffff,0xffff,0xf77e,0xe6dd,0xffdf,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xffff,0xffff,0xffff,0xef5d,0x9cd3,0x7bef,0xa534,0xef7d,0xffff,0xe6fd,0xde9c,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xad55,0x0861,0x0000,0x0000,0x0000,0x1082,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x2104,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0841,0x1082,0xa534,0xdefb,0xad75,0x2965,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x6b4e,0x0000,0xa535,0xffdf,0xffff,0xffff,0xf79e,0x2965,0x0841,0xdefb,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5db,0x4209,0x0000,0xbd9a,0xc5fb,0xef1e,0xffff,0xffff,0xd69a,0x0000,0x630c,0xe71d,0xce1b,0xffbf,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5db,0xc5fb,0x83f0,0x0000,0x4a6a,0x8c32,0x9474,0xb576,0xc638,0xc638,0x3186,0x0861,0xad56,0x9474,0xbdf8,0x630c,0x0000,0xad55,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xef5e,0xf79e,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xffff,0xffff,0xd6ba,0xad75,0x9cd3,0x7bb1,0x8c32,0xa514,0x8430,0x0000,0x528a,0x7bb1,0x9cf3,0x528a,0x0000,0x8c71,0xa514,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xd67c,0xef5e,0xef3d,0xf77e,0xf77e,0xf77e,0xce3b,0xc5db,0xf77e,0xef5e,0x0000,0x5aac,0xc5ba,0xef3e,0x7baf,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0x4a2a,0x20e4,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x18c3,0x3187,0xc5ba,0xc5ba,0x62cd,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x41e8,0x0841,0xef3e,0xef3e,0xef3e,0xe6fd,0xc5ba,0xde9c,0xef3e,0x18e4,0x39a7,0xc5ba,0xe6fd,0x738f,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xef5d,0xffff,0xffff,0xffff,0xc5ba,0xdebc,0xffff,0x1082,0x4229,0xc5ba,0xf7bf,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0x8c71,0x0000,0xb596,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xdefb,0x0000,0x630d,0xc5ba,0xf7bf,0xe71c,0xc638,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5db,0xffff,0xd69a,0x0000,0x5acb,0xffff,0xffff,0xffff,0xce1b,0xd65c,0x8410,0x0000,0xa515,0xc5ba,0xf7bf,0xffff,0x94b2,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffdf,0xffff,0x2965,0x0020,0xc618,0xffff,0xffff,0xc5fb,0xad57,0x0861,0x2124,0xdebc,0xc5ba,0xf7bf,0x8c71,0x0000,0x39e7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xef5e,0xffff,0xce59,0x0020,0x0861,0x73ae,0x9cf3,0x526b,0x0020,0x0861,0xc638,0xffbf,0xf77e,0x7bef,0x0000,0x2124,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf79f,0xc5ba,0xde9c,0xffff,0xffff,0xb5b6,0x2104,0x0000,0x0000,0x0000,0x3186,0xd69a,0xffff,0xffff,0xce5a,0x18a3,0x39e7,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xce3b,0xc5da,0xf77e,0xffff,0xffff,0xffff,0xce39,0x9474,0xb578,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xbd98,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xc5da,0xc5db,0xdedd,0xef3e,0xdebc,0xc5db,0xc5db,0xf77e,0xffff,0xffff,0xe6dd,0xc5ba,0xce1b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5e,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xd63b,0xf79f,0xd6ba,0xffff,0xffdf,0xcdfb,0xd65c,0xffdf,0xef5d,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79f,0xf77e,0xffbf,0xffff,0x9cd3,0x0020,0xad55,0xffff,0xffbf,0xffff,0xffdf,0x39e7,0x4a69,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x18c3,0x0000,0x8430,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x3186,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x73ae,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x4228,0x0000,0x0000,0x4228,0xe71c,0xffff,0xffdf,0x7bef,0x0000,0x1082,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x7bef,0xef7d,0xffff,0xbdf7,0x2104,0x0000,0x2965,0xd69a,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xcdfb,0xc5ba,0xe6fd,0xffff,0xffff,0xffff,0xad57,0x2925,0x0000,0x1082,0xd69a,0xffff,0xf7be,0x8410,0x0841,0xdedb,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xdebd,0xde9c,0xde9c,0xde9c,0xde9c,0xde9c,0xde9c,0xd65c,0xc5ba,0xc5ba,0xd65c,0xffbf,0xffff,0xffff,0xe6dd,0x83d1,0x39a7,0xe6fd,0xffff,0xffff,0xffff,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x3187,0x7bb1,0xe6dd,0xffdf,0x5aeb,0x2104,0xce1b,0xc5ba,0xa516,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0x6b0d,0xc5ba,0xc5fb,0x5acb,0x2104,0xffff,0xe6dd,0x7bb1,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x4228,0xffdf,0x0000,0x7bef,0xef3e,0xd65c,0x5aeb,0x2104,0xffff,0xffff,0x9cf4,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x5aeb,0x0000,0x10a3,0xd6ba,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x2104,0xe6dd,0xffdf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x39a8,0xc61a,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x18e4,0xc5ba,0xf7bf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xb577,0xa514,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x10a3,0x9474,0xbdf8,0x7bef,0x0000,0xad55,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xd67c,0xacf7,0xcdfb,0xf79f,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0x20e4,0x4a4a,0xffbf,0xffff,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x1082,0x7bb1,0x9cf3,0x632c,0x0000,0x8c71,0xa514,0xe73c,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x18e4,0x5aeb,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xcdfb,0xf77e,0x5aab,0x18e3,0xc5ba,0xef3e,0x9cb3,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xffff,0x2104,0x4228,0xc638,0xc638,0x9474,0xad56,0xc638,0x0000,0x528b,0x9474,0x9474,0x31a7,0x18c3,0xc5ba,0xc5ba,0x7bb1,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0xc5ba,0xe6fd,0x9493,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xf79e,0xa534,0xa514,0xa514,0x7bb1,0x8c52,0xa514,0x0000,0x4209,0x83d1,0xa514,0x39c7,0x18e4,0xc5ba,0xf7bf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xce1b,0xd65c,0xf77e,0xf77e,0xf77e,0xf77e,0xf77e,0xc5ba,0xde9c,0xf77e,0x0000,0x6b2e,0xce1b,0xffff,0x5aeb,0x18e4,0xc5ba,0xf7bf,0xb5b6,0x4228,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xffff,0xdedb,0xb5b7,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xc5ba,0xd67c,0xef3e,0xef3e,0xd65c,0xce1b,0xffff,0xffff,0xef3e,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xffff,0xef5e,0xa4d5,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xef5d,0xf79e,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x0841,0x4a69,0x9cf3,0xe73c,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x18c3,0x1082,0x0000,0x0000,0x3186,0x5aeb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0xd6bb,0xef5e,0xffff,0xf79e,0x3186,0x0020,0xce79,0xa4f4,0x41e9,0x0841,0x0000,0x0000,0x0861,0x528a,0x9492,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b6d,0x0000,0xbdb8,0xc5ba,0xc5db,0xd67c,0xce5a,0x0861,0x4208,0xf77e,0xc5ba,0xe6fd,0x94b2,0x0000,0x18e3,0x0000,0x0000,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0861,0xdebc,0xc5ba,0xcdfb,0xc5fb,0xc5ba,0x62ed,0x0000,0xa4f5,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xef5d,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xe6dd,0xffbf,0x2965,0x31a6,0xffff,0xce3b,0xc5da,0xf79e,0xef3e,0xce1a,0x0020,0x4209,0xc5ba,0xc5db,0xa4f5,0x0000,0x9cf4,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xf7bf,0x2104,0x4228,0xffff,0xffbf,0xc5db,0xd65c,0xffff,0xffff,0x4229,0x10a2,0xc5ba,0xcdfb,0x9474,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5db,0xffff,0x2104,0x4228,0xffff,0xffff,0xe6dd,0xc5ba,0xf77e,0xffff,0x738e,0x0000,0xb558,0xef3e,0xc5f8,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce3b,0xce3b,0xffff,0x4208,0x18e3,0xffff,0xffff,0xffdf,0xc5db,0xde9c,0xffff,0x7bef,0x0000,0xacf7,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xffff,0x632c,0x0000,0xef5d,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0x6b4d,0x0000,0xb559,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xffff,0xad55,0x0000,0x9cd3,0xffff,0xffff,0xdebd,0xc5ba,0xffdf,0x2124,0x2104,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0xf7be,0x10a2,0x2104,0xf79e,0xffff,0xe6dd,0xc5ba,0xa4f4,0x0000,0x6b4d,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebc,0xc5ba,0xffdf,0xffff,0x9492,0x0000,0x4228,0xdedb,0xde9c,0x83d1,0x0861,0x10a2,0xdedc,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xe71d,0xffff,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x1082,0xc618,0xf77e,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fb,0xce1b,0xffff,0xffff,0xffff,0xbdd7,0x630d,0x4209,0x7bd0,0xef5d,0xffff,0xf77e,0xc5ba,0xef3e,0xe71c,0x7bef,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd65c,0xf7bf,0xffff,0xef3e,0xc5db,0xc5fb,0xffdf,0xffff,0xffff,0xf77e,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5fb,0xf77e,0xffff,0xe71c,0x8430,0xbdd8,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7e,0xdebd,0xde9c,0xe71d,0xffdf,0xffff,0xe73c,0x18c3,0x0000,0x0020,0xb557,0xf79f,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b4d,0x0000,0x73ae,0x0020,0x3186,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xc619,0x0020,0x528a,0xffff,0x7bcf,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xcdfb,0x41e9,0x0000,0xc639,0xffff,0xf7be,0x2104,0x1082,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdebc,0x9474,0x0000,0x39c8,0xce3b,0xffff,0xffff,0xb596,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5ba,0x2104,0x0020,0xc5f9,0xc5ba,0xe71d,0xffff,0xffff,0x52aa,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0x62cd,0x0000,0x6b6d,0xffff,0xce1b,0xc5fb,0xffbf,0xffff,0xe71c,0x1082,0x10a2,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0x9cb5,0x0000,0x18c3,0xef7d,0xffff,0xef5e,0xc5ba,0xd67c,0xffff,0xffff,0x94b2,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fa,0x2105,0x0000,0xad55,0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xef3e,0xffff,0xffff,0x39c7,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0x524b,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffbf,0xc5fb,0xc5fb,0xffdf,0xffff,0xdedb,0x0841,0x0861,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79f,0x7bb1,0x0000,0x18c3,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd67c,0xffff,0xffff,0x9492,0x0000,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce3b,0x5acd,0x0020,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xef3e,0xffff,0xffff,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xdebc,0xc5ba,0xd67c,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5db,0xc5db,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xcdfb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd65c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5da,0xef7e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xde9c,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce79,0x528a,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x73ae,0x0000,0x0000,0x39e7,0xa534,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x5aeb,0x0861,0x0000,0x0861,0x52aa,0xa514,0xe73c,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf79e,0xd67c,0xf79f,0xffff,0xffff,0xffff,0xf79e,0xa534,0x52aa,0x0861,0x0000,0x0000,0x2104,0x39c8,0x7bd0,0x8410,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xc5ba,0xd65c,0xef3e,0xffff,0xffff,0xffff,0xffff,0xf7be,0xbdd7,0x7bcf,0x39c7,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xde9c,0xc5db,0xc5ba,0xc5db,0xd67c,0xef3e,0xffdf,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xbdf8,0x8c51,0x0000,0x4208,0x4a69,0x2945,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd4,0x1082,0x0841,0x528c,0xbd79,0xce1b,0xd67c,0xe6fd,0xe6dd,0xc5ba,0xe6fd,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x0841,0x0020,0x10a2,0x1082,0xd65b,0xd65c,0xc5db,0x9474,0x62cd,0xb559,0xc5ba,0x9474,0x0000,0x94b3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x9cf3,0xffdf,0xbdf7,0xffff,0xffff,0xffff,0x7bf0,0x0000,0x9454,0xd65c,0xa4f5,0x0000,0x94b3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5fb,0x4a29,0x0000,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x7bb1,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffbf,0xc5db,0xc5da,0x3187,0x10a3,0xffdf,0xffff,0xffff,0xf77e,0xe6dd,0xffdf,0xce79,0x0000,0x62ed,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xef1e,0x4228,0x2104,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xf77e,0xdefb,0x0000,0x62cd,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0x4228,0x18e3,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xef3e,0xdefb,0x0000,0x62cd,0xef3e,0xe71c,0x7bef,0xd69a,0xf7be,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0x5acb,0x0000,0xffdf,0xffff,0xffff,0xf79e,0xc5ba,0xe6fd,0xc638,0x0000,0x7370,0xef3e,0xffff,0xe71c,0x630c,0x10a2,0x4a69,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xce1b,0xffff,0x738e,0x0000,0xd69a,0xffff,0xffff,0xf7bf,0xc5ba,0xe6dd,0xad55,0x0000,0x8c12,0xef3e,0xffff,0xf79e,0x1082,0x528a,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0xa534,0x0000,0x94b2,0xffff,0xffff,0xf7bf,0xc5ba,0xe6dd,0x9cf3,0x2104,0xbdd9,0xf79f,0xffff,0xffdf,0xf7be,0xffff,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xdedb,0x5aeb,0xbdf7,0xffff,0xffff,0xf77e,0xc5ba,0xe71d,0xffff,0xffff,0xffbf,0xde9c,0xc5fb,0xd67c,0xbdf7,0x4a69,0x0020,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xf79f,0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xef5e,0xffff,0xffff,0xffff,0xc5fb,0xd67c,0xef5e,0xa534,0x18e3,0x73ae,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xe71d,0xffff,0xffff,0xffff,0xffff,0xffff,0xef1e,0xce1b,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xde9c,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xd67c,0xc5da,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xa534,0x528a,0x4228,0x738e,0xe71c,0xffff,0xffff,0xffff,0xef3e,0xcdfb,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x0861,0x18c3,0x0000,0x18c3,0xdedb,0xffff,0xffff,0xffff,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x632c,0xf7be,0xffff,0xb5b6,0x0841,0x3186,0xffff,0xffff,0xffff,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0x10a2,0x20e4,0xdebc,0xffbf,0xffff,0xffff,0x73ae,0x0000,0xbdd7,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0x9474,0x0000,0x7370,0xc5ba,0xcdfb,0xf7bf,0xffff,0xd6ba,0x0000,0x6b6d,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0x7bd0,0x0000,0xd69a,0xef5e,0xc5db,0xce3b,0xffff,0xffff,0x1082,0x4a49,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xcdfb,0xce1b,0x6b6d,0x0000,0xf79e,0xffff,0xdedd,0xc5ba,0xef7e,0xffff,0x2104,0x4228,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe71d,0x5aeb,0x0000,0xffff,0xffff,0xf7bf,0xc5ba,0xdebd,0xffff,0x10a2,0x4a69,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xf79f,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xc5fb,0xd65c,0xe71c,0x0000,0x6b6d,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xffff,0x6b6d,0x0000,0xe73c,0xffff,0xffff,0xce1b,0xd65c,0x9cd3,0x0000,0xb596,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xdedb,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0x9492,0x0000,0xbdf7,0xffff,0xffff,0xc5fb,0xd67c,0x2965,0x1082,0xf7be,0xc5ba,0xde9c,0xd69a,0x0000,0x0841,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xbdf7,0x0000,0x8430,0xffff,0xffbf,0xc5ba,0x8c52,0x0000,0x8410,0xf7be,0x7370,0x2945,0x0000,0x0000,0x18c3,0x6b6d,0xb596,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xffdf,0xf7be,0x4228,0x6b4d,0xffff,0xe71d,0xbd79,0x18c3,0x1082,0x6b6d,0x10a2,0x0000,0x0861,0x632d,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xf77e,0xffff,0xffff,0xffff,0xffff,0xce3b,0x5aac,0x0000,0x0000,0x0000,0x2124,0x7370,0xbd9a,0xc5ba,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe6fd,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0x9cb4,0x0000,0x2945,0x8c33,0xc5ba,0xc5ba,0xcdfb,0xdebd,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xdebc,0xffff,0xffff,0xffff,0xcdfb,0xc5fb,0xdebd,0x9474,0xc5ba,0xc5fb,0xdebc,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xe71d,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xce3b,0xef5e,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xb596,0x9cf3,0x7bef,0x7bef,0x736e,0x73af,0xa514,0xad55,0xc638,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x632c,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0020,0x0000,0x18e3,0x632c,0xa514,0xc638,0xdefb,0xdefb,0xdefb,0xd69a,0xc638,0x9cf3,0x738e,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0020,0x18c3,0x9cd4,0xe6fd,0xe6dd,0xe6dd,0xe6dd,0xe6dd,0xef3e,0xef3e,0xf77e,0xffbf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x8c32,0x0000,0x4a2a,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce3b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5da,0xa4d6,0x0000,0x0000,0x4a49,0xb576,0xef7e,0xf7bf,0xf7bf,0xf79f,0xf77e,0xef1e,0xdebd,0xe6fd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5da,0xcdfb,0xef3e,0x94b2,0x1082,0x0000,0x0000,0x2104,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xde9c,0xffff,0xffff,0xef7d,0x94b2,0x4208,0x7bcf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xf79f,0xc5ba,0xc5ba,0xd67c,0xef7e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5fb,0xc5ba,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xe71d,0xd65c,0xe6dd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x8410,0x18e3,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad55,0x52aa,0x0841,0x0000,0x0841,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xd69a,0xbdd7,0x94b2,0x6b4d,0x39c7,0x0020,0x0000,0x0000,0x2104,0x8c51,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x630d,0x9c94,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8410,0x4228,0x630c,0x8430,0xad35,0xc5fa,0xc5db,0xc5ba,0xc5db,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xf79f,0xef7e,0xe71d,0xdebc,0xd63c,0xc5da,0xc5ba,0xc5ba,0xce1b,0xe6fd,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xdebd,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xd65c,0xde9c,0xe6fd,0xef5e,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0x8c51,0x7bef,0x7bef,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xe6dd,0xe6dd,0x8c71,0x7bef,0x7bef,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xe6dd,0xe6dd,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff};
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-akita b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-akita
deleted file mode 100644
index 3c6d3478b2..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-akita
+++ /dev/null
@@ -1,1365 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200DK is not set
-# CONFIG_ARCH_KATANA is not set
-# CONFIG_ARCH_S1C38000 is not set
-# CONFIG_ARCH_DBMX1 is not set
-# CONFIG_ARCH_DBMX2 is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSAGC is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_ADSBITSYPLUS is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_H3XXX is not set
-# CONFIG_H3600_SLEEVE is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_SA1100_SSP is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_COTULLA_DMA is not set
-# CONFIG_SABINAL_DISCOVERY is not set
-# CONFIG_ARCH_SABINAL is not set
-# CONFIG_ARCH_PXA_POODLE is not set
-# CONFIG_POODLE_TR0 is not set
-CONFIG_ARCH_PXA_CORGI=y
-# CONFIG_CORGI_TR0 is not set
-CONFIG_ARCH_PXA_SHEPHERD=y
-CONFIG_ARCH_PXA_HUSKY=y
-CONFIG_ARCH_PXA_BOXER=y
-CONFIG_ARCH_PXA_SPITZ=y
-CONFIG_ARCH_PXA_AKITA=y
-# CONFIG_ARCH_PXA_BORZOI is not set
-# CONFIG_SPITZ_TR0 is not set
-# CONFIG_SPITZ_TR0_5 is not set
-# CONFIG_ARCH_PXA_TOSA is not set
-# CONFIG_ARCH_PXA_TOSA_SKIP is not set
-CONFIG_ARCH_SHARP_SL=y
-CONFIG_ARCH_SHARP_SL_E=y
-# CONFIG_ARCH_SHARP_SL_V is not set
-# CONFIG_ARCH_SHARP_SL_G is not set
-# CONFIG_ARCH_SHARP_SL_J is not set
-# CONFIG_ARCH_SHARP_SL_S is not set
-# CONFIG_ARCH_SHARP_SL_I is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_GUIDEA07 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-
-#
-# S1C38000 Implementations
-#
-# CONFIG_S1C38000_TTE301 is not set
-
-#
-# DBMX1 Implementations
-#
-# CONFIG_DBMX1_TPM102 is not set
-
-#
-# DBMX2 Implementations
-#
-# CONFIG_ARCH_MX2ADS is not set
-# CONFIG_ARCH_APLAT is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_PXA27X=y
-CONFIG_SL_CCCR_CHANGE=y
-CONFIG_CHANGE_CORE_VOLT=y
-CONFIG_SL_SIGSTOP_FIX=y
-CONFIG_BATT=y
-# CONFIG_XSCALE_CACHE_ERRATA is not set
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-CONFIG_ARM_FCSE=y
-# CONFIG_DISCONTIGMEM is not set
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_RTHAL is not set
-# CONFIG_PREEMPT is not set
-CONFIG_LOLAT=y
-CONFIG_LOLAT_SYSCTL=y
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=y
-# CONFIG_PCMCIA_SHARP_SL_2SLOT is not set
-
-#
-# MMC device drivers
-#
-# CONFIG_MMC is not set
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-CONFIG_BINFMT_AOUT=y
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-CONFIG_APM_CPU_IDLE=y
-CONFIG_APM_DISPLAY_BLANK=y
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="<see .bb file>"
-# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_FREEPG_SIGNAL=y
-CONFIG_OOM_KILL_SURVIVAL=y
-CONFIG_DEVICEINFO=y
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-# CONFIG_MTD_GEN_PROBE is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_UCLINUX is not set
-# CONFIG_MTD_DRAGONIX is not set
-# CONFIG_MTD_NETtel is not set
-# CONFIG_MTD_NETteluC is not set
-# CONFIG_MTD_KEYTECHNOLOGY is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_MX2ADS is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_PXA_CERF is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_DISCOVERY is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_KATANA is not set
-# CONFIG_MTD_TPM102 is not set
-# CONFIG_MTD_PCI is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDROM_SA1100 is not set
-# CONFIG_MTD_MTDRAM_SA1100 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
-CONFIG_MTD_NAND_POST_BADBLOCK=y
-CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
-CONFIG_MTD_NAND_IDS=y
-CONFIG_MTD_NAND_SHARP_SL=y
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_RAMDISK_DATA is not set
-# CONFIG_BLK_DEV_BLKMEM is not set
-# CONFIG_BLK_STATS is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Cryptography support (CryptoAPI)
-#
-# CONFIG_CRYPTO is not set
-# CONFIG_CIPHERS is not set
-# CONFIG_DIGESTS is not set
-# CONFIG_CRYPTODEV is not set
-# CONFIG_CRYPTOLOOP is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_FILTER is not set
-# CONFIG_NET_NEIGH_DEBUG is not set
-# CONFIG_NET_RESTRICTED_REUSE is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_UNCLEAN=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_MIRROR=m
-# CONFIG_IP_NF_NAT is not set
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_ARPTABLES is not set
-# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_DEBUG is not set
-CONFIG_IPV6_IM=y
-# CONFIG_IPV6_DROP_FAKE_V4MAPPED is not set
-# CONFIG_IPV6_RESTRICTED_DOUBLE_BIND is not set
-CONFIG_IPV6_6TO4_NEXTHOP=y
-CONFIG_IPV6_PRIVACY=y
-CONFIG_IPV6_ANYCAST=y
-CONFIG_IPV6_ANYCAST_GROUP=y
-# CONFIG_IPV6_ISATAP is not set
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MLD6_ALL_DONE is not set
-# CONFIG_IPV6_NODEINFO is not set
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-CONFIG_IPV6_IPSEC_TUNNEL=y
-CONFIG_IPV6_IPV6_TUNNEL=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_FEC is not set
-# CONFIG_CS89x0 is not set
-# CONFIG_UCCS8900 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=y
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=y
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPP_DEFLATE is not set
-CONFIG_PPP_BSDCOMP=y
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=y
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_NET_PCMCIA_RADIO is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=y
-# CONFIG_IRLAN is not set
-# CONFIG_IRNET is not set
-CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-CONFIG_IRTTY_SIR=y
-# CONFIG_IRPORT_SIR is not set
-# CONFIG_DONGLE is not set
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_OLD is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_SD_EXTRA_DEVS=40
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=y
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_SCSI_PCMCIA is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_KEYBDEV=y
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Character devices
-#
-# CONFIG_LEDMAN is not set
-# CONFIG_DS1302 is not set
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-CONFIG_SERIAL_SL_SERIES=y
-# CONFIG_SL_TS_PRESSURE is not set
-# CONFIG_BOOT_PRESSURE_ON is not set
-# CONFIG_SL_WRITE_TS is not set
-# CONFIG_BLUETOOTH_SL is not set
-CONFIG_KBD_DEV_FILE=y
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_KATANA is not set
-# CONFIG_SERIAL_KATANA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_OMAHA is not set
-# CONFIG_SERIAL_OMAHA_CONSOLE is not set
-# CONFIG_SERIAL_AT91US3 is not set
-# CONFIG_SERIAL_AT91US3_CONSOLE is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=y
-CONFIG_PSMOUSE=y
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-# CONFIG_INPUT_SERIO is not set
-# CONFIG_INPUT_SERPORT is not set
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_AMD_PM768 is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_PXA_RTC is not set
-CONFIG_COTULLA_RTC=y
-CONFIG_ADS7846_TS=y
-# CONFIG_TOSA_TS is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=y
-CONFIG_PCMCIA_CHRDEV=y
-# CONFIG_SYNCLINK_CS is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FS_SYNC=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BEFS_DEBUG is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=y
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_VFAT_SHORTCUT_SYMLINK is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_NAND=y
-CONFIG_JFFS2_LARGE_PARTITION=y
-CONFIG_JFFS2_PROC_FS=y
-CONFIG_JFFS2_NODEMERGE=y
-CONFIG_JFFS2_DYNFRAGTREE=y
-CONFIG_JFFS2_RESERVED_BLOCKS_BAD=20
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-# CONFIG_JFS_FS is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-CONFIG_MINIX_FS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_DEBUG is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_TCP=y
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=y
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-CONFIG_ZISOFS_FS=y
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-CONFIG_NLS_CODEPAGE_932=y
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_UNICON is not set
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_COTULLA is not set
-# CONFIG_FB_POODLE is not set
-# CONFIG_FB_CORGI is not set
-# CONFIG_FB_TOSA is not set
-CONFIG_FB_SHARPSL_PXA=y
-CONFIG_SHARPSL_PXA_CONSISTENT_ALLOC=y
-CONFIG_FB_SHARPSL_PXA_BVDD=y
-# CONFIG_SHARP_LOGO_SCREEN is not set
-# CONFIG_FB_KATANA is not set
-# CONFIG_FB_DBMX1 is not set
-# CONFIG_FB_DBMX21 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-CONFIG_FBCON_ROTATE_R=y
-# CONFIG_FBCON_ROTATE_L is not set
-# CONFIG_FBCON_LOGO_CENTER is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_ALI5455 is not set
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_FORTE is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_VIDC is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-# CONFIG_SOUND_POODLE is not set
-# CONFIG_SOUND_CORGI is not set
-# CONFIG_SOUND_TOSA is not set
-# CONFIG_BUZZER_TOSA is not set
-CONFIG_SOUND_SPITZ=y
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-CONFIG_USB_DEBUG=y
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SH7727 is not set
-# CONFIG_USB_OHCI_SH is not set
-# CONFIG_USB_OHCI_VOYAGERGX is not set
-# CONFIG_USB_OHCI_TC6393 is not set
-# CONFIG_USB_USE_INTERNAL_MEMORY is not set
-CONFIG_USB_OHCI_PXA27X=m
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_MIDI is not set
-CONFIG_USB_STORAGE=m
-CONFIG_USB_STORAGE_DEBUG=y
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_DPCM=y
-CONFIG_USB_STORAGE_HP8200e=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_ACM=m
-# CONFIG_USB_PRINTER is not set
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-CONFIG_USB_HIDDEV=y
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_TIGL is not set
-# CONFIG_USB_BRLVGER is not set
-# CONFIG_USB_LCD is not set
-
-#
-# USB Device Support
-#
-CONFIG_USBD=m
-CONFIG_USBD_VENDORID=04DD
-CONFIG_USBD_PRODUCTID=8007
-CONFIG_USBD_PRODUCT_NAME="SL-AV200"
-CONFIG_USBD_MANUFACTURER="Sharp"
-# CONFIG_USBD_USE_SERIAL_NUMBER is not set
-CONFIG_USBD_SELFPOWERED=y
-CONFIG_USBD_MONITOR=m
-CONFIG_USBD_PROCFS=y
-
-#
-# Network Function
-#
-CONFIG_USBD_NET=m
-CONFIG_USBD_NET_VENDORID=04DD
-CONFIG_USBD_NET_PRODUCTID=8007
-CONFIG_USBD_NET_IFNAME="usbd"
-CONFIG_USBD_NET_OUT_ENDPOINT=2
-CONFIG_USBD_NET_OUT_PKTSIZE=64
-CONFIG_USBD_NET_IN_ENDPOINT=1
-CONFIG_USBD_NET_IN_PKTSIZE=64
-CONFIG_USBD_NET_INT_ENDPOINT=5
-CONFIG_USBD_NET_INT_PKTSIZE=8
-# CONFIG_USBD_NET_ALWAYSUP is not set
-# CONFIG_USBD_NET_SAFE is not set
-CONFIG_USBD_NET_MDLM=y
-# CONFIG_USBD_NET_CDC is not set
-CONFIG_USBD_NET_REMOTE_MACADDR=""
-CONFIG_USBD_NET_REMOTE_OUI=400002
-CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y
-CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-CONFIG_USBD_NET_LOCAL_OUI=400001
-
-#
-# Serial Function
-#
-# CONFIG_USBD_SERIAL is not set
-
-#
-# Mass Storage Function
-#
-CONFIG_USBD_STORAGE=m
-CONFIG_USBD_STORAGE_VENDORID=04DD
-CONFIG_USBD_STORAGE_PRODUCTID=9050
-CONFIG_USBD_STORAGE_OUT_ENDPOINT=2
-CONFIG_USBD_STORAGE_OUT_PKTSIZE=64
-CONFIG_USBD_STORAGE_IN_ENDPOINT=1
-CONFIG_USBD_STORAGE_IN_PKTSIZE=64
-CONFIG_USBD_STORAGE_INT_ENDPOINT=5
-CONFIG_USBD_STORAGE_INT_PKTSIZE=8
-CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="/dev/hda1"
-
-#
-# USB Device Bus Interface Support
-#
-CONFIG_USBD_PXA27X_BUS=m
-# CONFIG_USBD_GENERIC_BUS is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-CONFIG_BLUEZ_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-CONFIG_BLUEZ_HCIUSB_SCO=y
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-CONFIG_BLUEZ_HCIBFUSB=m
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-CONFIG_BLUEZ_HCIVHCI=m
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_INFO_YDC is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_KGDB is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Library routines
-#
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-
-#
-# Cryptography support (CryptoAPI)
-#
-# CONFIG_CRYPTO is not set
-# CONFIG_CIPHERS is not set
-# CONFIG_DIGESTS is not set
-# CONFIG_CRYPTODEV is not set
-# CONFIG_CRYPTOLOOP is not set
-# CONFIG_FW_LOADER is not set
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-borzoi b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-borzoi
deleted file mode 100644
index d0b1ffa1bf..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-borzoi
+++ /dev/null
@@ -1,1364 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200DK is not set
-# CONFIG_ARCH_KATANA is not set
-# CONFIG_ARCH_S1C38000 is not set
-# CONFIG_ARCH_DBMX1 is not set
-# CONFIG_ARCH_DBMX2 is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSAGC is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_ADSBITSYPLUS is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_H3XXX is not set
-# CONFIG_H3600_SLEEVE is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_SA1100_SSP is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_COTULLA_DMA is not set
-# CONFIG_SABINAL_DISCOVERY is not set
-# CONFIG_ARCH_SABINAL is not set
-# CONFIG_ARCH_PXA_POODLE is not set
-# CONFIG_POODLE_TR0 is not set
-CONFIG_ARCH_PXA_CORGI=y
-# CONFIG_CORGI_TR0 is not set
-CONFIG_ARCH_PXA_SHEPHERD=y
-CONFIG_ARCH_PXA_HUSKY=y
-CONFIG_ARCH_PXA_BOXER=y
-CONFIG_ARCH_PXA_SPITZ=y
-CONFIG_ARCH_PXA_BORZOI=y
-# CONFIG_SPITZ_TR0 is not set
-# CONFIG_SPITZ_TR0_5 is not set
-# CONFIG_ARCH_PXA_TOSA is not set
-# CONFIG_ARCH_PXA_TOSA_SKIP is not set
-CONFIG_ARCH_SHARP_SL=y
-CONFIG_ARCH_SHARP_SL_E=y
-# CONFIG_ARCH_SHARP_SL_V is not set
-# CONFIG_ARCH_SHARP_SL_G is not set
-# CONFIG_ARCH_SHARP_SL_J is not set
-# CONFIG_ARCH_SHARP_SL_S is not set
-# CONFIG_ARCH_SHARP_SL_I is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_GUIDEA07 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-
-#
-# S1C38000 Implementations
-#
-# CONFIG_S1C38000_TTE301 is not set
-
-#
-# DBMX1 Implementations
-#
-# CONFIG_DBMX1_TPM102 is not set
-
-#
-# DBMX2 Implementations
-#
-# CONFIG_ARCH_MX2ADS is not set
-# CONFIG_ARCH_APLAT is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_PXA27X=y
-CONFIG_SL_CCCR_CHANGE=y
-CONFIG_CHANGE_CORE_VOLT=y
-CONFIG_SL_SIGSTOP_FIX=y
-CONFIG_BATT=y
-# CONFIG_XSCALE_CACHE_ERRATA is not set
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-CONFIG_ARM_FCSE=y
-# CONFIG_DISCONTIGMEM is not set
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_RTHAL is not set
-# CONFIG_PREEMPT is not set
-CONFIG_LOLAT=y
-CONFIG_LOLAT_SYSCTL=y
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=y
-CONFIG_PCMCIA_SHARP_SL_2SLOT=y
-
-#
-# MMC device drivers
-#
-# CONFIG_MMC is not set
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-CONFIG_BINFMT_AOUT=y
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-CONFIG_APM_CPU_IDLE=y
-CONFIG_APM_DISPLAY_BLANK=y
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="<see .bb file>"
-# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_FREEPG_SIGNAL=y
-CONFIG_OOM_KILL_SURVIVAL=y
-CONFIG_DEVICEINFO=y
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-# CONFIG_MTD_GEN_PROBE is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_UCLINUX is not set
-# CONFIG_MTD_DRAGONIX is not set
-# CONFIG_MTD_NETtel is not set
-# CONFIG_MTD_NETteluC is not set
-# CONFIG_MTD_KEYTECHNOLOGY is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_MX2ADS is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_PXA_CERF is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_DISCOVERY is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_KATANA is not set
-# CONFIG_MTD_TPM102 is not set
-# CONFIG_MTD_PCI is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDROM_SA1100 is not set
-# CONFIG_MTD_MTDRAM_SA1100 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
-CONFIG_MTD_NAND_POST_BADBLOCK=y
-CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
-CONFIG_MTD_NAND_IDS=y
-CONFIG_MTD_NAND_SHARP_SL=y
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_RAMDISK_DATA is not set
-# CONFIG_BLK_DEV_BLKMEM is not set
-# CONFIG_BLK_STATS is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Cryptography support (CryptoAPI)
-#
-# CONFIG_CRYPTO is not set
-# CONFIG_CIPHERS is not set
-# CONFIG_DIGESTS is not set
-# CONFIG_CRYPTODEV is not set
-# CONFIG_CRYPTOLOOP is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_FILTER is not set
-# CONFIG_NET_NEIGH_DEBUG is not set
-# CONFIG_NET_RESTRICTED_REUSE is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_UNCLEAN=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_MIRROR=m
-# CONFIG_IP_NF_NAT is not set
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_ARPTABLES is not set
-# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_DEBUG is not set
-CONFIG_IPV6_IM=y
-# CONFIG_IPV6_DROP_FAKE_V4MAPPED is not set
-# CONFIG_IPV6_RESTRICTED_DOUBLE_BIND is not set
-CONFIG_IPV6_6TO4_NEXTHOP=y
-CONFIG_IPV6_PRIVACY=y
-CONFIG_IPV6_ANYCAST=y
-CONFIG_IPV6_ANYCAST_GROUP=y
-# CONFIG_IPV6_ISATAP is not set
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MLD6_ALL_DONE is not set
-# CONFIG_IPV6_NODEINFO is not set
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-CONFIG_IPV6_IPSEC_TUNNEL=y
-CONFIG_IPV6_IPV6_TUNNEL=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_FEC is not set
-# CONFIG_CS89x0 is not set
-# CONFIG_UCCS8900 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=y
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=y
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPP_DEFLATE is not set
-CONFIG_PPP_BSDCOMP=y
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=y
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_NET_PCMCIA_RADIO is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=y
-# CONFIG_IRLAN is not set
-# CONFIG_IRNET is not set
-CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-CONFIG_IRTTY_SIR=y
-# CONFIG_IRPORT_SIR is not set
-# CONFIG_DONGLE is not set
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_OLD is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_SD_EXTRA_DEVS=40
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=y
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_SCSI_PCMCIA is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_KEYBDEV=y
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Character devices
-#
-# CONFIG_LEDMAN is not set
-# CONFIG_DS1302 is not set
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-CONFIG_SERIAL_SL_SERIES=y
-# CONFIG_SL_TS_PRESSURE is not set
-# CONFIG_BOOT_PRESSURE_ON is not set
-# CONFIG_SL_WRITE_TS is not set
-# CONFIG_BLUETOOTH_SL is not set
-CONFIG_KBD_DEV_FILE=y
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_KATANA is not set
-# CONFIG_SERIAL_KATANA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_OMAHA is not set
-# CONFIG_SERIAL_OMAHA_CONSOLE is not set
-# CONFIG_SERIAL_AT91US3 is not set
-# CONFIG_SERIAL_AT91US3_CONSOLE is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=y
-CONFIG_PSMOUSE=y
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-# CONFIG_INPUT_SERIO is not set
-# CONFIG_INPUT_SERPORT is not set
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_AMD_PM768 is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_PXA_RTC is not set
-CONFIG_COTULLA_RTC=y
-CONFIG_ADS7846_TS=y
-# CONFIG_TOSA_TS is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=y
-CONFIG_PCMCIA_CHRDEV=y
-# CONFIG_SYNCLINK_CS is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FS_SYNC=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BEFS_DEBUG is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=y
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_VFAT_SHORTCUT_SYMLINK is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_NAND=y
-CONFIG_JFFS2_LARGE_PARTITION=y
-CONFIG_JFFS2_PROC_FS=y
-CONFIG_JFFS2_NODEMERGE=y
-CONFIG_JFFS2_DYNFRAGTREE=y
-CONFIG_JFFS2_RESERVED_BLOCKS_BAD=28
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-# CONFIG_JFS_FS is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-CONFIG_MINIX_FS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_DEBUG is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_TCP=y
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=y
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-CONFIG_ZISOFS_FS=y
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-CONFIG_NLS_CODEPAGE_932=y
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_UNICON is not set
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_COTULLA is not set
-# CONFIG_FB_POODLE is not set
-# CONFIG_FB_CORGI is not set
-# CONFIG_FB_TOSA is not set
-CONFIG_FB_SHARPSL_PXA=y
-CONFIG_SHARPSL_PXA_CONSISTENT_ALLOC=y
-CONFIG_FB_SHARPSL_PXA_BVDD=y
-# CONFIG_SHARP_LOGO_SCREEN is not set
-# CONFIG_FB_KATANA is not set
-# CONFIG_FB_DBMX1 is not set
-# CONFIG_FB_DBMX21 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-CONFIG_FBCON_ROTATE_R=y
-# CONFIG_FBCON_ROTATE_L is not set
-# CONFIG_FBCON_LOGO_CENTER is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_ALI5455 is not set
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_FORTE is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_VIDC is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-# CONFIG_SOUND_POODLE is not set
-# CONFIG_SOUND_CORGI is not set
-# CONFIG_SOUND_TOSA is not set
-# CONFIG_BUZZER_TOSA is not set
-CONFIG_SOUND_SPITZ=y
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-CONFIG_USB_DEBUG=y
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SH7727 is not set
-# CONFIG_USB_OHCI_SH is not set
-# CONFIG_USB_OHCI_VOYAGERGX is not set
-# CONFIG_USB_OHCI_TC6393 is not set
-# CONFIG_USB_USE_INTERNAL_MEMORY is not set
-CONFIG_USB_OHCI_PXA27X=m
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_MIDI is not set
-CONFIG_USB_STORAGE=m
-CONFIG_USB_STORAGE_DEBUG=y
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_DPCM=y
-CONFIG_USB_STORAGE_HP8200e=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_ACM=m
-# CONFIG_USB_PRINTER is not set
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-CONFIG_USB_HIDDEV=y
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_TIGL is not set
-# CONFIG_USB_BRLVGER is not set
-# CONFIG_USB_LCD is not set
-
-#
-# USB Device Support
-#
-CONFIG_USBD=m
-CONFIG_USBD_VENDORID=04DD
-CONFIG_USBD_PRODUCTID=8007
-CONFIG_USBD_PRODUCT_NAME="SL-AV200"
-CONFIG_USBD_MANUFACTURER="Sharp"
-# CONFIG_USBD_USE_SERIAL_NUMBER is not set
-CONFIG_USBD_SELFPOWERED=y
-CONFIG_USBD_MONITOR=m
-CONFIG_USBD_PROCFS=y
-
-#
-# Network Function
-#
-CONFIG_USBD_NET=m
-CONFIG_USBD_NET_VENDORID=04DD
-CONFIG_USBD_NET_PRODUCTID=8007
-CONFIG_USBD_NET_IFNAME="usbd"
-CONFIG_USBD_NET_OUT_ENDPOINT=2
-CONFIG_USBD_NET_OUT_PKTSIZE=64
-CONFIG_USBD_NET_IN_ENDPOINT=1
-CONFIG_USBD_NET_IN_PKTSIZE=64
-CONFIG_USBD_NET_INT_ENDPOINT=5
-CONFIG_USBD_NET_INT_PKTSIZE=8
-# CONFIG_USBD_NET_ALWAYSUP is not set
-# CONFIG_USBD_NET_SAFE is not set
-CONFIG_USBD_NET_MDLM=y
-# CONFIG_USBD_NET_CDC is not set
-CONFIG_USBD_NET_REMOTE_MACADDR=""
-CONFIG_USBD_NET_REMOTE_OUI=400002
-CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y
-CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-CONFIG_USBD_NET_LOCAL_OUI=400001
-
-#
-# Serial Function
-#
-# CONFIG_USBD_SERIAL is not set
-
-#
-# Mass Storage Function
-#
-CONFIG_USBD_STORAGE=m
-CONFIG_USBD_STORAGE_VENDORID=04DD
-CONFIG_USBD_STORAGE_PRODUCTID=9050
-CONFIG_USBD_STORAGE_OUT_ENDPOINT=2
-CONFIG_USBD_STORAGE_OUT_PKTSIZE=64
-CONFIG_USBD_STORAGE_IN_ENDPOINT=1
-CONFIG_USBD_STORAGE_IN_PKTSIZE=64
-CONFIG_USBD_STORAGE_INT_ENDPOINT=5
-CONFIG_USBD_STORAGE_INT_PKTSIZE=8
-CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="/dev/hda1"
-
-#
-# USB Device Bus Interface Support
-#
-CONFIG_USBD_PXA27X_BUS=m
-# CONFIG_USBD_GENERIC_BUS is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-CONFIG_BLUEZ_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-CONFIG_BLUEZ_HCIUSB_SCO=y
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-CONFIG_BLUEZ_HCIBFUSB=m
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-CONFIG_BLUEZ_HCIVHCI=m
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_INFO_YDC is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_KGDB is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Library routines
-#
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-
-#
-# Cryptography support (CryptoAPI)
-#
-# CONFIG_CRYPTO is not set
-# CONFIG_CIPHERS is not set
-# CONFIG_DIGESTS is not set
-# CONFIG_CRYPTODEV is not set
-# CONFIG_CRYPTOLOOP is not set
-# CONFIG_FW_LOADER is not set
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-spitz b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-spitz
deleted file mode 100644
index 64e2610c12..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/defconfig-spitz
+++ /dev/null
@@ -1,1364 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_OMAHA is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_RISCSTATION is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_AT91RM9200DK is not set
-# CONFIG_ARCH_KATANA is not set
-# CONFIG_ARCH_S1C38000 is not set
-# CONFIG_ARCH_DBMX1 is not set
-# CONFIG_ARCH_DBMX2 is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ACCELENT is not set
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSAGC is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_ADSBITSYPLUS is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_H3XXX is not set
-# CONFIG_H3600_SLEEVE is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SIMPUTER is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_SA1100_SSP is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_COTULLA_DMA is not set
-# CONFIG_SABINAL_DISCOVERY is not set
-# CONFIG_ARCH_SABINAL is not set
-# CONFIG_ARCH_PXA_POODLE is not set
-# CONFIG_POODLE_TR0 is not set
-CONFIG_ARCH_PXA_CORGI=y
-# CONFIG_CORGI_TR0 is not set
-CONFIG_ARCH_PXA_SHEPHERD=y
-CONFIG_ARCH_PXA_HUSKY=y
-CONFIG_ARCH_PXA_BOXER=y
-CONFIG_ARCH_PXA_SPITZ=y
-# CONFIG_ARCH_PXA_BORZOI is not set
-# CONFIG_SPITZ_TR0 is not set
-# CONFIG_SPITZ_TR0_5 is not set
-# CONFIG_ARCH_PXA_TOSA is not set
-# CONFIG_ARCH_PXA_TOSA_SKIP is not set
-CONFIG_ARCH_SHARP_SL=y
-CONFIG_ARCH_SHARP_SL_E=y
-# CONFIG_ARCH_SHARP_SL_V is not set
-# CONFIG_ARCH_SHARP_SL_G is not set
-# CONFIG_ARCH_SHARP_SL_J is not set
-# CONFIG_ARCH_SHARP_SL_S is not set
-# CONFIG_ARCH_SHARP_SL_I is not set
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_GUIDEA07 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-
-#
-# S1C38000 Implementations
-#
-# CONFIG_S1C38000_TTE301 is not set
-
-#
-# DBMX1 Implementations
-#
-# CONFIG_DBMX1_TPM102 is not set
-
-#
-# DBMX2 Implementations
-#
-# CONFIG_ARCH_MX2ADS is not set
-# CONFIG_ARCH_APLAT is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1026 is not set
-# CONFIG_CPU_SA110 is not set
-# CONFIG_CPU_SA1100 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_PXA27X=y
-CONFIG_SL_CCCR_CHANGE=y
-CONFIG_CHANGE_CORE_VOLT=y
-CONFIG_SL_SIGSTOP_FIX=y
-CONFIG_BATT=y
-# CONFIG_XSCALE_CACHE_ERRATA is not set
-# CONFIG_CPU_32v3 is not set
-# CONFIG_CPU_32v4 is not set
-CONFIG_ARM_FCSE=y
-# CONFIG_DISCONTIGMEM is not set
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_RTHAL is not set
-# CONFIG_PREEMPT is not set
-CONFIG_LOLAT=y
-CONFIG_LOLAT_SYSCTL=y
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-# CONFIG_PCMCIA_SA1100 is not set
-CONFIG_PCMCIA_PXA=y
-CONFIG_PCMCIA_SHARP_SL_2SLOT=y
-
-#
-# MMC device drivers
-#
-# CONFIG_MMC is not set
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-CONFIG_BINFMT_AOUT=y
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-CONFIG_APM_CPU_IDLE=y
-CONFIG_APM_DISPLAY_BLANK=y
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="<see .bb file>"
-# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_FREEPG_SIGNAL=y
-CONFIG_OOM_KILL_SURVIVAL=y
-CONFIG_DEVICEINFO=y
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-# CONFIG_MTD_GEN_PROBE is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_UCLINUX is not set
-# CONFIG_MTD_DRAGONIX is not set
-# CONFIG_MTD_NETtel is not set
-# CONFIG_MTD_NETteluC is not set
-# CONFIG_MTD_KEYTECHNOLOGY is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-# CONFIG_MTD_MX2ADS is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_PXA_CERF is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_DISCOVERY is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_KATANA is not set
-# CONFIG_MTD_TPM102 is not set
-# CONFIG_MTD_PCI is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDROM_SA1100 is not set
-# CONFIG_MTD_MTDRAM_SA1100 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set
-CONFIG_MTD_NAND_POST_BADBLOCK=y
-CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y
-CONFIG_MTD_NAND_IDS=y
-CONFIG_MTD_NAND_SHARP_SL=y
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_RAMDISK_DATA is not set
-# CONFIG_BLK_DEV_BLKMEM is not set
-# CONFIG_BLK_STATS is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Cryptography support (CryptoAPI)
-#
-# CONFIG_CRYPTO is not set
-# CONFIG_CIPHERS is not set
-# CONFIG_DIGESTS is not set
-# CONFIG_CRYPTODEV is not set
-# CONFIG_CRYPTOLOOP is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_FILTER is not set
-# CONFIG_NET_NEIGH_DEBUG is not set
-# CONFIG_NET_RESTRICTED_REUSE is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_UNCLEAN=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_MIRROR=m
-# CONFIG_IP_NF_NAT is not set
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_ARPTABLES is not set
-# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_DEBUG is not set
-CONFIG_IPV6_IM=y
-# CONFIG_IPV6_DROP_FAKE_V4MAPPED is not set
-# CONFIG_IPV6_RESTRICTED_DOUBLE_BIND is not set
-CONFIG_IPV6_6TO4_NEXTHOP=y
-CONFIG_IPV6_PRIVACY=y
-CONFIG_IPV6_ANYCAST=y
-CONFIG_IPV6_ANYCAST_GROUP=y
-# CONFIG_IPV6_ISATAP is not set
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MLD6_ALL_DONE is not set
-# CONFIG_IPV6_NODEINFO is not set
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-CONFIG_IPV6_IPSEC_TUNNEL=y
-CONFIG_IPV6_IPV6_TUNNEL=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_FEC is not set
-# CONFIG_CS89x0 is not set
-# CONFIG_UCCS8900 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=y
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=y
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPP_DEFLATE is not set
-CONFIG_PPP_BSDCOMP=y
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=y
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_NET_PCMCIA_RADIO is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=y
-# CONFIG_IRLAN is not set
-# CONFIG_IRNET is not set
-CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-CONFIG_IRTTY_SIR=y
-# CONFIG_IRPORT_SIR is not set
-# CONFIG_DONGLE is not set
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_OLD is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_SD_EXTRA_DEVS=40
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=y
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_SCSI_PCMCIA is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=y
-CONFIG_INPUT_KEYBDEV=y
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Character devices
-#
-# CONFIG_LEDMAN is not set
-# CONFIG_DS1302 is not set
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-CONFIG_SERIAL_SL_SERIES=y
-# CONFIG_SL_TS_PRESSURE is not set
-# CONFIG_BOOT_PRESSURE_ON is not set
-# CONFIG_SL_WRITE_TS is not set
-# CONFIG_BLUETOOTH_SL is not set
-CONFIG_KBD_DEV_FILE=y
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_KATANA is not set
-# CONFIG_SERIAL_KATANA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_OMAHA is not set
-# CONFIG_SERIAL_OMAHA_CONSOLE is not set
-# CONFIG_SERIAL_AT91US3 is not set
-# CONFIG_SERIAL_AT91US3_CONSOLE is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=y
-CONFIG_PSMOUSE=y
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_MK712_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-# CONFIG_INPUT_SERIO is not set
-# CONFIG_INPUT_SERPORT is not set
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_AMD_PM768 is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_PXA_RTC is not set
-CONFIG_COTULLA_RTC=y
-CONFIG_ADS7846_TS=y
-# CONFIG_TOSA_TS is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=y
-CONFIG_PCMCIA_CHRDEV=y
-# CONFIG_SYNCLINK_CS is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FS_SYNC=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BEFS_DEBUG is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=y
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_VFAT_SHORTCUT_SYMLINK is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_NAND=y
-CONFIG_JFFS2_LARGE_PARTITION=y
-CONFIG_JFFS2_PROC_FS=y
-CONFIG_JFFS2_NODEMERGE=y
-CONFIG_JFFS2_DYNFRAGTREE=y
-CONFIG_JFFS2_RESERVED_BLOCKS_BAD=80
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-# CONFIG_JFS_FS is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-CONFIG_MINIX_FS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_DEBUG is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_TCP=y
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=y
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-CONFIG_ZISOFS_FS=y
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=y
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-CONFIG_NLS_CODEPAGE_932=y
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_UNICON is not set
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_COTULLA is not set
-# CONFIG_FB_POODLE is not set
-# CONFIG_FB_CORGI is not set
-# CONFIG_FB_TOSA is not set
-CONFIG_FB_SHARPSL_PXA=y
-CONFIG_SHARPSL_PXA_CONSISTENT_ALLOC=y
-CONFIG_FB_SHARPSL_PXA_BVDD=y
-# CONFIG_SHARP_LOGO_SCREEN is not set
-# CONFIG_FB_KATANA is not set
-# CONFIG_FB_DBMX1 is not set
-# CONFIG_FB_DBMX21 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-CONFIG_FBCON_ROTATE_R=y
-# CONFIG_FBCON_ROTATE_L is not set
-# CONFIG_FBCON_LOGO_CENTER is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_ALI5455 is not set
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_FORTE is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_VIDC is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-# CONFIG_SOUND_POODLE is not set
-# CONFIG_SOUND_CORGI is not set
-# CONFIG_SOUND_TOSA is not set
-# CONFIG_BUZZER_TOSA is not set
-CONFIG_SOUND_SPITZ=y
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-CONFIG_USB_DEBUG=y
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SH7727 is not set
-# CONFIG_USB_OHCI_SH is not set
-# CONFIG_USB_OHCI_VOYAGERGX is not set
-# CONFIG_USB_OHCI_TC6393 is not set
-# CONFIG_USB_USE_INTERNAL_MEMORY is not set
-CONFIG_USB_OHCI_PXA27X=m
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_MIDI is not set
-CONFIG_USB_STORAGE=m
-CONFIG_USB_STORAGE_DEBUG=y
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_DPCM=y
-CONFIG_USB_STORAGE_HP8200e=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_ACM=m
-# CONFIG_USB_PRINTER is not set
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-CONFIG_USB_HIDDEV=y
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_TIGL is not set
-# CONFIG_USB_BRLVGER is not set
-# CONFIG_USB_LCD is not set
-
-#
-# USB Device Support
-#
-CONFIG_USBD=m
-CONFIG_USBD_VENDORID=04DD
-CONFIG_USBD_PRODUCTID=8007
-CONFIG_USBD_PRODUCT_NAME="SL-AV200"
-CONFIG_USBD_MANUFACTURER="Sharp"
-# CONFIG_USBD_USE_SERIAL_NUMBER is not set
-CONFIG_USBD_SELFPOWERED=y
-CONFIG_USBD_MONITOR=m
-CONFIG_USBD_PROCFS=y
-
-#
-# Network Function
-#
-CONFIG_USBD_NET=m
-CONFIG_USBD_NET_VENDORID=04DD
-CONFIG_USBD_NET_PRODUCTID=8007
-CONFIG_USBD_NET_IFNAME="usbd"
-CONFIG_USBD_NET_OUT_ENDPOINT=2
-CONFIG_USBD_NET_OUT_PKTSIZE=64
-CONFIG_USBD_NET_IN_ENDPOINT=1
-CONFIG_USBD_NET_IN_PKTSIZE=64
-CONFIG_USBD_NET_INT_ENDPOINT=5
-CONFIG_USBD_NET_INT_PKTSIZE=8
-# CONFIG_USBD_NET_ALWAYSUP is not set
-# CONFIG_USBD_NET_SAFE is not set
-CONFIG_USBD_NET_MDLM=y
-# CONFIG_USBD_NET_CDC is not set
-CONFIG_USBD_NET_REMOTE_MACADDR=""
-CONFIG_USBD_NET_REMOTE_OUI=400002
-CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y
-CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-CONFIG_USBD_NET_LOCAL_OUI=400001
-
-#
-# Serial Function
-#
-# CONFIG_USBD_SERIAL is not set
-
-#
-# Mass Storage Function
-#
-CONFIG_USBD_STORAGE=m
-CONFIG_USBD_STORAGE_VENDORID=04DD
-CONFIG_USBD_STORAGE_PRODUCTID=9050
-CONFIG_USBD_STORAGE_OUT_ENDPOINT=2
-CONFIG_USBD_STORAGE_OUT_PKTSIZE=64
-CONFIG_USBD_STORAGE_IN_ENDPOINT=1
-CONFIG_USBD_STORAGE_IN_PKTSIZE=64
-CONFIG_USBD_STORAGE_INT_ENDPOINT=5
-CONFIG_USBD_STORAGE_INT_PKTSIZE=8
-CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="/dev/hda1"
-
-#
-# USB Device Bus Interface Support
-#
-CONFIG_USBD_PXA27X_BUS=m
-# CONFIG_USBD_GENERIC_BUS is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-CONFIG_BLUEZ_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-CONFIG_BLUEZ_HCIUSB_SCO=y
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
-CONFIG_BLUEZ_HCIBFUSB=m
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-CONFIG_BLUEZ_HCIVHCI=m
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_INFO_YDC is not set
-# CONFIG_NO_PGT_CACHE is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_KGDB is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
-
-#
-# Library routines
-#
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-
-#
-# Cryptography support (CryptoAPI)
-#
-# CONFIG_CRYPTO is not set
-# CONFIG_CIPHERS is not set
-# CONFIG_DIGESTS is not set
-# CONFIG_CRYPTODEV is not set
-# CONFIG_CRYPTOLOOP is not set
-# CONFIG_FW_LOADER is not set
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/deviceinfo.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/deviceinfo.patch
deleted file mode 100644
index 58343c5b55..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/deviceinfo.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- linux/arch/arm/mach-pxa/Makefile.old 2004-09-24 20:49:09.000000000 +0930
-+++ linux/arch/arm/mach-pxa/Makefile 2004-09-24 20:49:11.000000000 +0930
-@@ -94,6 +94,23 @@
- endif
- endif
-
-+ifeq ($(CONFIG_DEVICEINFO),m)
-+ obj-$(CONFIG_DEVICEINFO) += devinfo.o
-+ ifeq ($(CONFIG_SABINAL_DISCOVERY),y)
-+ devinfo-objs-m += deviceinfo.o
-+ devinfo-objs-$(CONFIG_DISCOVERY_DEVICEINFO) += discovery_deviceinfo.o
-+ endif
-+ ifeq ($(CONFIG_ARCH_PXA_POODLE),y)
-+ devinfo-objs-m += sharpsl_deviceinfo.o
-+ endif
-+ ifeq ($(CONFIG_ARCH_PXA_CORGI),y)
-+ devinfo-objs-m += sharpsl_deviceinfo.o
-+ endif
-+ ifeq ($(CONFIG_ARCH_PXA_TOSA),y)
-+ devinfo-objs-m += sharpsl_deviceinfo.o
-+ endif
-+endif
-+
- obj-m += registers.o
-
- include $(TOPDIR)/Rules.make
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/disable-pcmcia-probe.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/disable-pcmcia-probe.patch
deleted file mode 100644
index 79ba036323..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/disable-pcmcia-probe.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- linux/drivers/pcmcia/Config.in~disable-pcmcia-probe 2003-05-13 11:18:23.000000000 +0200
-+++ linux/drivers/pcmcia/Config.in 2004-05-27 13:59:50.000000000 +0200
-@@ -15,9 +15,6 @@
- tristate 'PCMCIA/CardBus support' CONFIG_PCMCIA
- if [ "$CONFIG_PCMCIA" != "n" ]; then
- # yes, I really mean the following...
-- if [ "$CONFIG_ISA" = "y" -o "$CONFIG_ARCH_SA1100" = "y" ]; then
-- define_bool CONFIG_PCMCIA_PROBE y
-- fi
- if [ "$CONFIG_PCI" != "n" ]; then
- bool ' CardBus support' CONFIG_CARDBUS
- fi
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/idecs.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/idecs.patch
deleted file mode 100644
index 73d0f1c51c..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/idecs.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- linux/drivers/ide/ide-cs.c 2004-11-15 22:31:07.000000000 -0800
-+++ linux/drivers/ide/ide-cs.c.new 2005-03-01 22:07:52.334266784 -0800
-@@ -2,7 +2,7 @@
-
- A driver for PCMCIA IDE/ATA disk cards
-
-- ide_cs.c 1.26 1999/11/16 02:10:49
-+ ide-cs.c 1.26 1999/11/16 02:10:49
-
- The contents of this file are subject to the Mozilla Public
- License Version 1.1 (the "License"); you may not use this file
-@@ -68,7 +68,7 @@
- MODULE_PARM(pc_debug, "i");
- #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args)
- static char *version =
--"ide_cs.c 1.26 1999/11/16 02:10:49 (David Hinds)";
-+"ide-cs.c 1.26 1999/11/16 02:10:49 (David Hinds)";
- #else
- #define DEBUG(n, args...)
- #endif
-@@ -113,7 +113,7 @@
- event_callback_args_t *args);
-
- #ifdef CONFIG_ARCH_SHARP_SL
--static dev_info_t dev_info = "ide_cs";
-+static dev_info_t dev_info = "ide-cs";
- #else
- static dev_info_t dev_info = "ide-cs";
- #endif
-@@ -379,7 +379,7 @@
- }
-
- if (hd < 0) {
-- printk(KERN_NOTICE "ide_cs: ide_register() at 0x%03x & 0x%03x"
-+ printk(KERN_NOTICE "ide-cs: ide_register() at 0x%03x & 0x%03x"
- ", irq %u failed\n", io_base, ctl_base,
- link->irq.AssignedIRQ);
- goto failed;
-@@ -392,7 +392,7 @@
- info->node.minor = 0;
- info->hd = hd;
- link->dev = &info->node;
-- printk(KERN_INFO "ide_cs: %s: Vcc = %d.%d, Vpp = %d.%d\n",
-+ printk(KERN_INFO "ide-cs: %s: Vcc = %d.%d, Vpp = %d.%d\n",
- info->node.dev_name, link->conf.Vcc/10, link->conf.Vcc%10,
- link->conf.Vpp1/10, link->conf.Vpp1%10);
-
-@@ -434,10 +434,10 @@
-
- #ifdef CONFIG_ARCH_SHARP_SL
- request_region(link->io.BasePort1,
-- link->io.NumPorts1 << PCMCIA_ADDRESS_SHIFT,"ide_cs");
-+ link->io.NumPorts1 << PCMCIA_ADDRESS_SHIFT,"ide-cs");
- if (link->io.NumPorts2)
- request_region(link->io.BasePort2,
-- link->io.NumPorts2 << PCMCIA_ADDRESS_SHIFT,"ide_cs");
-+ link->io.NumPorts2 << PCMCIA_ADDRESS_SHIFT,"ide-cs");
- #else
- request_region(link->io.BasePort1,
- link->io.NumPorts1 << PCMCIA_ADDRESS_SHIFT,"ide-cs");
-@@ -556,7 +556,7 @@
- DEBUG(0, "%s\n", version);
- CardServices(GetCardServicesInfo, &serv);
- if (serv.Revision != CS_RELEASE_CODE) {
-- printk(KERN_NOTICE "ide_cs: Card Services release "
-+ printk(KERN_NOTICE "ide-cs: Card Services release "
- "does not match!\n");
- return -1;
- }
-@@ -566,7 +566,7 @@
-
- static void __exit exit_ide_cs(void)
- {
-- DEBUG(0, "ide_cs: unloading\n");
-+ DEBUG(0, "ide-cs: unloading\n");
- unregister_pccard_driver(&dev_info);
- while (dev_list != NULL)
- ide_detach(dev_list);
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/initsh.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/initsh.patch
deleted file mode 100644
index a672631194..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/initsh.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- linux/init/main.c 2002-02-25 13:38:13.000000000 -0600
-+++ linux.new/init/main.c 2003-03-16 11:49:45.000000000 -0600
-@@ -830,8 +830,10 @@
- * trying to recover a really broken machine.
- */
-
-- if (execute_command)
-+ if (execute_command) {
-+ argv_init[0] = execute_command;
- execve(execute_command,argv_init,envp_init);
-+ }
- execve("/sbin/init",argv_init,envp_init);
- execve("/etc/init",argv_init,envp_init);
- execve("/bin/init",argv_init,envp_init);
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/logo.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/logo.patch
deleted file mode 100644
index fd8084254c..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/logo.patch
+++ /dev/null
@@ -1,2598 +0,0 @@
---- linux/drivers/video/fbcon.c 2003-02-27 21:47:36.000000000 -0600
-+++ linux.new/drivers/video/fbcon.c 2003-02-27 18:39:39.000000000 -0600
-@@ -126,8 +126,8 @@
- #define LOGO_H (320-16)
- #define LOGO_W 240
- #else
--#define LOGO_H 80
--#define LOGO_W 80
-+#define LOGO_H 52
-+#define LOGO_W 240
- #endif
- #define LOGO_LINE (LOGO_W/8)
- #if defined(CONFIG_SHARP_LOGO_SCREEN)
---- linux/include/linux/linux_logo.h 2001-06-11 21:15:27.000000000 -0500
-+++ linux.new/include/linux/linux_logo.h 2003-02-27 15:58:15.000000000 -0600
-@@ -1,4 +1,4 @@
--/* $Id: linux_logo.h,v 1.5 1998/07/30 16:30:58 jj Exp $
-+/* linux_logo.h created with fblogo, 2002/12/29 02:43:36
- * include/linux/linux_logo.h: This is a linux logo
- * to be displayed on boot.
- *
-@@ -7,907 +7,1673 @@
- *
- * You can put anything here, but:
- * LINUX_LOGO_COLORS has to be less than 224
-- * image size has to be 80x80
-- * values have to start from 0x20
-- * (i.e. RGB(linux_logo_red[0],
-- * linux_logo_green[0],
-- * linux_logo_blue[0]) is color 0x20)
-- * BW image has to be 80x80 as well, with MS bit
-- * on the left
-- * Serial_console ascii image can be any size,
-- * but should contain %s to display the version
-+ * Generated by fblogo version 0.5.0
-+ *
-+ *
-+ * Remember to modify drivers/video/fbcon.c:
-+ * Change "#define LOGO_H 80" to "#define LOGO_H 52"
-+ * Change "#define LOGO_W 80" to "#define LOGO_W 240"
- */
-
- #ifndef __HAVE_ARCH_LINUX_LOGO
--#define LINUX_LOGO_COLORS 187
-+#define LINUX_LOGO_COLORS 223
- #endif
--
- #ifdef INCLUDE_LINUX_LOGO_DATA
--
- #ifndef __HAVE_ARCH_LINUX_LOGO
--
- unsigned char linux_logo_red[] __initdata = {
-- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22,
-- 0x12, 0x00, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56,
-- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x02, 0x65,
-- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6,
-- 0xc3, 0x65, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6,
-- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7,
-- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x76, 0x79,
-- 0x62, 0x36, 0x9a, 0xe2, 0xec, 0xe1, 0xb8, 0xd7,
-- 0xaf, 0x25, 0xbc, 0xc0, 0xef, 0xea, 0xe8, 0xe8,
-- 0xf5, 0xf1, 0xda, 0xd3, 0x79, 0xdb, 0xf4, 0xf6,
-- 0xf6, 0xf6, 0xe2, 0x3d, 0xb4, 0xce, 0xe6, 0xee,
-- 0xf6, 0x68, 0xd8, 0xec, 0xf5, 0xc6, 0xc8, 0x9c,
-- 0x89, 0xd2, 0xee, 0xcb, 0xb9, 0xd2, 0x66, 0x5e,
-- 0x8b, 0xbe, 0xa8, 0xd5, 0xca, 0xb6, 0xae, 0x9c,
-- 0xc5, 0xbe, 0xbe, 0xca, 0x90, 0xb2, 0x9a, 0xa8,
-- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x12,
-- 0x4a, 0x8e, 0xf2, 0xf6, 0xf6, 0xee, 0xb5, 0xe4,
-- 0xf1, 0x26, 0x9a, 0xea, 0xf6, 0xe0, 0xd2, 0x16,
-- 0x9a, 0x2e, 0x70, 0xd6, 0x46, 0x7c, 0xb4, 0x62,
-- 0xd6, 0xa3, 0x74, 0xa7, 0xa2, 0xca, 0xe0, 0xae,
-- 0xbe, 0xce, 0xa3, 0x8e, 0x6d, 0x8e, 0x32, 0xaf,
-- 0x50, 0x9e, 0x5b, 0x8a, 0x98, 0x82, 0x7a, 0x82,
-- 0x56, 0x7c, 0x8a, 0x56, 0x5e, 0x86, 0x6a, 0x52,
-- 0x59, 0x64, 0x5e,
-+ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA,
-+ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE,
-+ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA,
-+ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36,
-+ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82,
-+ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6,
-+ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E,
-+ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x32, 0x7E,
-+ 0x3A, 0x16, 0x02, 0x02, 0x06, 0x1F, 0x02, 0x02,
-+ 0x06, 0x02, 0x22, 0x3A, 0x35, 0x16, 0x0A, 0x02,
-+ 0x2A, 0x3E, 0x39, 0x32, 0x2A, 0x1E, 0x16, 0x06,
-+ 0x22, 0x22, 0x1E, 0x16, 0x6E, 0x82, 0x6E, 0x2E,
-+ 0x1E, 0x2E, 0x1E, 0x0A, 0x3A, 0xDA, 0xFE, 0xFA,
-+ 0xFA, 0xE2, 0x6A, 0x3A, 0x1A, 0xFA, 0xF6, 0x9E,
-+ 0x02, 0x6E, 0xFE, 0xF6, 0x3E, 0x66, 0x52, 0x1B,
-+ 0xD6, 0x5A, 0xEE, 0xC6, 0x72, 0x36, 0x22, 0x1E,
-+ 0x02, 0x96, 0xF6, 0xDE, 0xA2, 0xD6, 0x39, 0x0E,
-+ 0xAA, 0x52, 0x5A, 0xD2, 0xDE, 0x61, 0x46, 0xDE,
-+ 0x7A, 0x57, 0x9E, 0xBA, 0xB6, 0x4A, 0x5A, 0xA6,
-+ 0x96, 0x23, 0x1E, 0x12, 0x9A, 0x4E, 0x76, 0xAE,
-+ 0x2E, 0xBE, 0x86, 0x48, 0xA6, 0x52, 0x06, 0x2E,
-+ 0x56, 0x13, 0x2A, 0x4A, 0x36, 0x56, 0x2E, 0x1E,
-+ 0x46, 0x3A, 0x66, 0x02, 0x3D, 0x3E, 0x2E, 0x3E,
-+ 0x4A, 0x32, 0x52, 0x72, 0x76, 0x67, 0x68, 0x5A,
-+ 0x3A, 0x1A, 0x0E, 0x2E, 0x4E, 0x02, 0x3E, 0x0A,
-+ 0x28, 0x42, 0x10, 0x26, 0x8E, 0x0A, 0x86, 0xC2,
-+ 0x02, 0x6E, 0x92, 0x02, 0x42, 0x02, 0xBE, 0x4E,
-+ 0x02, 0x22, 0x02, 0x3E, 0x3A, 0x32
- };
-
- unsigned char linux_logo_green[] __initdata = {
-- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22,
-- 0x12, 0x00, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56,
-- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x02, 0x65,
-- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6,
-- 0xc3, 0x62, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6,
-- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7,
-- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x62, 0x5c,
-- 0x4e, 0x26, 0x72, 0xaa, 0xba, 0xaf, 0x90, 0xae,
-- 0x92, 0x1a, 0xa4, 0x85, 0xb6, 0xbe, 0xc3, 0xc8,
-- 0xcf, 0xd0, 0xc2, 0xce, 0x57, 0xa2, 0xd6, 0xda,
-- 0xda, 0xd7, 0xb8, 0x2a, 0x7b, 0x91, 0xae, 0xca,
-- 0xda, 0x45, 0x9e, 0xb2, 0xd7, 0x9b, 0x90, 0x76,
-- 0x5c, 0xa2, 0xbe, 0xa6, 0x85, 0x96, 0x4e, 0x46,
-- 0x66, 0x92, 0x7a, 0x9a, 0x96, 0x9d, 0x9a, 0x6b,
-- 0x8a, 0x8e, 0xb2, 0xca, 0x90, 0xa6, 0x79, 0x7c,
-- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x0e,
-- 0x36, 0x86, 0xba, 0xbe, 0xe6, 0xcc, 0x8e, 0xb8,
-- 0xc4, 0x1e, 0x8e, 0xae, 0xba, 0xb2, 0xa6, 0x12,
-- 0x7a, 0x20, 0x64, 0xaa, 0x2f, 0x70, 0x85, 0x46,
-- 0xa6, 0x6e, 0x51, 0x72, 0x92, 0xa2, 0xa6, 0x87,
-- 0x96, 0xa2, 0x85, 0x7a, 0x6a, 0x6e, 0x22, 0x76,
-- 0x36, 0x76, 0x3c, 0x6e, 0x63, 0x53, 0x66, 0x62,
-- 0x42, 0x50, 0x56, 0x42, 0x56, 0x56, 0x56, 0x3e,
-- 0x51, 0x52, 0x56,
-+ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA,
-+ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE,
-+ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA,
-+ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36,
-+ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82,
-+ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6,
-+ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E,
-+ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x2E, 0x7E,
-+ 0x3A, 0x3E, 0x6A, 0xA2, 0x92, 0x30, 0x95, 0x76,
-+ 0x4E, 0x86, 0x36, 0x7E, 0x9A, 0x6E, 0x42, 0x56,
-+ 0x5A, 0xC2, 0xBE, 0xB2, 0xAA, 0x9A, 0x63, 0x1E,
-+ 0xA2, 0x9E, 0x96, 0x5A, 0x3A, 0x42, 0x4A, 0x52,
-+ 0x91, 0x46, 0x4E, 0x62, 0x22, 0x4A, 0x6E, 0x86,
-+ 0x92, 0x9A, 0x52, 0x4A, 0x76, 0x7A, 0x9E, 0x76,
-+ 0x62, 0x32, 0x5E, 0xAE, 0x3E, 0x66, 0x52, 0x81,
-+ 0xA6, 0x5A, 0xEE, 0xC6, 0x72, 0x5C, 0x6A, 0x8A,
-+ 0x36, 0x3E, 0xBA, 0xBA, 0xA2, 0xD6, 0xAA, 0x4E,
-+ 0x8A, 0x4E, 0x5A, 0xD2, 0xDE, 0x64, 0x32, 0x9A,
-+ 0x5E, 0x57, 0x9E, 0xBA, 0xB6, 0x52, 0x62, 0xA6,
-+ 0x9A, 0x47, 0x3E, 0x56, 0x02, 0x1A, 0x76, 0xAE,
-+ 0x4A, 0x02, 0x02, 0x38, 0x02, 0x4A, 0x46, 0x86,
-+ 0x1E, 0x2E, 0x7A, 0xD2, 0x5E, 0x26, 0x92, 0x62,
-+ 0xCA, 0x42, 0x66, 0x26, 0x67, 0xB6, 0x62, 0x92,
-+ 0x9E, 0x72, 0xB2, 0xF2, 0xFE, 0xDE, 0xFE, 0xFE,
-+ 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x8A, 0x2A,
-+ 0x42, 0x52, 0x6A, 0x26, 0x8E, 0x26, 0x86, 0xC2,
-+ 0xE2, 0x6E, 0x92, 0xBE, 0x42, 0xC6, 0xBE, 0x4E,
-+ 0xEE, 0x5A, 0xEA, 0x3E, 0x4A, 0x32
- };
-
- unsigned char linux_logo_blue[] __initdata = {
-- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22,
-- 0x12, 0x01, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56,
-- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x06, 0x65,
-- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6,
-- 0xc3, 0x59, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6,
-- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7,
-- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x2e, 0x08,
-- 0x0a, 0x06, 0x0a, 0x0b, 0x0b, 0x0f, 0x0c, 0x0f,
-- 0x3d, 0x09, 0x73, 0x09, 0x0d, 0x0a, 0x10, 0x1e,
-- 0x2d, 0x13, 0x86, 0xba, 0x19, 0x0a, 0x36, 0x3c,
-- 0x26, 0x14, 0x0d, 0x06, 0x07, 0x0a, 0x0b, 0x0f,
-- 0x4a, 0x06, 0x0a, 0x0c, 0x2b, 0x0a, 0x0b, 0x0a,
-- 0x06, 0x0a, 0x0a, 0x11, 0x0b, 0x0a, 0x0a, 0x1e,
-- 0x0f, 0x0d, 0x0a, 0x0b, 0x22, 0x6a, 0x72, 0x0b,
-- 0x0b, 0x22, 0x90, 0xca, 0x90, 0x92, 0x3c, 0x2c,
-- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x06,
-- 0x0e, 0x6a, 0x0e, 0x0e, 0xbe, 0x5b, 0x2c, 0x3e,
-- 0x0e, 0x0a, 0x5a, 0x0d, 0x0e, 0x3e, 0x0a, 0x06,
-- 0x2e, 0x06, 0x4e, 0x36, 0x06, 0x58, 0x24, 0x06,
-- 0x3a, 0x08, 0x08, 0x07, 0x5e, 0x45, 0x0a, 0x32,
-- 0x2e, 0x2a, 0x43, 0x48, 0x5f, 0x2e, 0x06, 0x06,
-- 0x07, 0x24, 0x06, 0x32, 0x06, 0x06, 0x46, 0x2e,
-- 0x22, 0x06, 0x06, 0x1e, 0x4c, 0x06, 0x3a, 0x22,
-- 0x42, 0x34, 0x42,
-+ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA,
-+ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE,
-+ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA,
-+ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36,
-+ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82,
-+ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6,
-+ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E,
-+ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x1A, 0x06,
-+ 0x1A, 0x2A, 0x36, 0x52, 0x46, 0x23, 0x4D, 0x3E,
-+ 0x2A, 0x42, 0x2A, 0x5A, 0x69, 0x42, 0x26, 0x2E,
-+ 0x42, 0x7E, 0x7C, 0x72, 0x6A, 0x5E, 0x3B, 0x12,
-+ 0x62, 0x5E, 0x5A, 0x36, 0x26, 0x1E, 0x26, 0x42,
-+ 0x56, 0x3A, 0x36, 0x36, 0x1E, 0x2E, 0x2A, 0x22,
-+ 0x22, 0x1A, 0x16, 0x42, 0x46, 0x26, 0x1E, 0x12,
-+ 0x32, 0x2A, 0x2E, 0x16, 0x2A, 0x1A, 0x2E, 0x4E,
-+ 0x12, 0x22, 0x02, 0x02, 0x12, 0x4A, 0x46, 0x52,
-+ 0x1E, 0x1E, 0x16, 0x0E, 0x02, 0x02, 0x6F, 0x2E,
-+ 0x0E, 0x1A, 0x06, 0x02, 0x02, 0x04, 0x22, 0x16,
-+ 0x0E, 0x12, 0x02, 0x02, 0x02, 0x0A, 0x5A, 0x02,
-+ 0x02, 0x1B, 0x2E, 0x32, 0x02, 0x02, 0x02, 0x02,
-+ 0x16, 0x02, 0x02, 0x10, 0x02, 0x02, 0x26, 0x5A,
-+ 0x02, 0x1F, 0x52, 0x8E, 0x22, 0x02, 0x5E, 0x3E,
-+ 0x86, 0x0E, 0x16, 0x16, 0x52, 0x7A, 0x4A, 0x66,
-+ 0x72, 0x52, 0x82, 0xB2, 0xBA, 0xA4, 0xB2, 0xAA,
-+ 0x9E, 0x8E, 0x88, 0x96, 0xA6, 0x82, 0x62, 0x1A,
-+ 0x34, 0x4A, 0x31, 0x16, 0x02, 0x1A, 0x02, 0x02,
-+ 0x72, 0x02, 0x02, 0x5E, 0x1A, 0x62, 0x02, 0x0E,
-+ 0x76, 0x1E, 0x76, 0x1E, 0x0A, 0x02
- };
-
- unsigned char linux_logo[] __initdata = {
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22, 0x22,
-- 0x22, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
-- 0x26, 0x26, 0x25, 0x28, 0x23, 0x22, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x23, 0x25, 0x2a, 0x2b, 0x2c, 0x2d, 0x2d,
-- 0x2d, 0x2e, 0x2c, 0x2b, 0x2a, 0x25, 0x28, 0x22,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x24, 0x2a, 0x2c, 0x2f, 0x2c, 0x30, 0x30, 0x24,
-- 0x25, 0x27, 0x2b, 0x2c, 0x2f, 0x31, 0x32, 0x25,
-- 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x25,
-- 0x33, 0x34, 0x35, 0x21, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x21, 0x2b, 0x2f, 0x2c,
-- 0x30, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24, 0x33,
-- 0x2d, 0x27, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x31,
-- 0x2d, 0x32, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x28, 0x2a, 0x34,
-- 0x25, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x23, 0x32, 0x27, 0x21, 0x36,
-- 0x2a, 0x2d, 0x2a, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x22, 0x26, 0x2c, 0x35,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x25, 0x2f, 0x37, 0x32, 0x22,
-- 0x36, 0x35, 0x31, 0x27, 0x22, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x23, 0x2a, 0x2f, 0x22,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x26, 0x38, 0x38, 0x35, 0x25,
-- 0x36, 0x21, 0x2d, 0x2b, 0x24, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x24, 0x39, 0x39, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x25, 0x2b, 0x30, 0x28, 0x22,
-- 0x36, 0x36, 0x27, 0x34, 0x30, 0x23, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x26, 0x2d, 0x26, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x22, 0x22, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x2d, 0x33, 0x28, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x23, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x2b, 0x2c, 0x25, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x34, 0x36, 0x36,
-- 0x36, 0x21, 0x22, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x21, 0x23, 0x22, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x28, 0x34, 0x27, 0x22, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x36,
-- 0x21, 0x21, 0x24, 0x27, 0x21, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x28, 0x27, 0x22, 0x33, 0x24, 0x36,
-- 0x36, 0x36, 0x36, 0x22, 0x2f, 0x2a, 0x23, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x36,
-- 0x30, 0x3a, 0x38, 0x24, 0x24, 0x36, 0x36, 0x36,
-- 0x23, 0x2f, 0x3b, 0x3c, 0x3d, 0x30, 0x25, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x2f, 0x32, 0x23, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x23,
-- 0x3e, 0x3f, 0x40, 0x3a, 0x22, 0x36, 0x36, 0x21,
-- 0x41, 0x42, 0x43, 0x44, 0x45, 0x3e, 0x23, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x2f, 0x33, 0x28, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x2b,
-- 0x44, 0x40, 0x46, 0x47, 0x35, 0x36, 0x36, 0x26,
-- 0x43, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x2e, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x31, 0x35, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x34, 0x36, 0x4d,
-- 0x4e, 0x25, 0x2f, 0x46, 0x4a, 0x22, 0x23, 0x32,
-- 0x4f, 0x50, 0x21, 0x31, 0x51, 0x52, 0x53, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x31, 0x35, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x2f, 0x21, 0x3a,
-- 0x4d, 0x21, 0x31, 0x54, 0x55, 0x28, 0x30, 0x2b,
-- 0x4b, 0x4d, 0x36, 0x23, 0x32, 0x50, 0x3f, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x2e, 0x39, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x20, 0x29, 0x20, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x38, 0x23, 0x37,
-- 0x55, 0x36, 0x28, 0x3a, 0x56, 0x57, 0x57, 0x58,
-- 0x3c, 0x4d, 0x36, 0x36, 0x36, 0x40, 0x40, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x2e, 0x39, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x29, 0x29, 0x20, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x51, 0x23, 0x35,
-- 0x43, 0x25, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e,
-- 0x5f, 0x60, 0x61, 0x36, 0x31, 0x47, 0x3b, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x31, 0x2c, 0x25, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x23, 0x22,
-- 0x40, 0x62, 0x63, 0x5d, 0x64, 0x65, 0x66, 0x67,
-- 0x68, 0x69, 0x66, 0x5e, 0x6a, 0x6b, 0x2a, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x33, 0x2e, 0x26, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x27, 0x2f, 0x23, 0x36,
-- 0x6c, 0x63, 0x6d, 0x64, 0x5c, 0x66, 0x69, 0x6e,
-- 0x6f, 0x70, 0x71, 0x69, 0x69, 0x72, 0x6c, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x33, 0x34, 0x27, 0x22,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x27, 0x34, 0x26, 0x73,
-- 0x74, 0x75, 0x76, 0x64, 0x65, 0x77, 0x69, 0x78,
-- 0x70, 0x71, 0x71, 0x71, 0x72, 0x5f, 0x5e, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x25, 0x38, 0x2a, 0x23,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2d, 0x33, 0x79,
-- 0x63, 0x7a, 0x7b, 0x5c, 0x66, 0x69, 0x6e, 0x7c,
-- 0x71, 0x71, 0x69, 0x7d, 0x7e, 0x7a, 0x7f, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x21, 0x51, 0x2b, 0x28,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2d, 0x32, 0x24,
-- 0x80, 0x81, 0x64, 0x82, 0x77, 0x69, 0x71, 0x71,
-- 0x69, 0x83, 0x84, 0x85, 0x7a, 0x85, 0x86, 0x36,
-- 0x21, 0x2b, 0x23, 0x36, 0x36, 0x39, 0x2e, 0x26,
-- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x27, 0x2d, 0x33, 0x21,
-- 0x87, 0x88, 0x89, 0x72, 0x67, 0x66, 0x5f, 0x89,
-- 0x8a, 0x63, 0x85, 0x8b, 0x8c, 0x8d, 0x41, 0x36,
-- 0x36, 0x2d, 0x3a, 0x35, 0x36, 0x24, 0x51, 0x32,
-- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x33, 0x21,
-- 0x55, 0x8e, 0x8f, 0x8a, 0x7d, 0x5e, 0x90, 0x7e,
-- 0x75, 0x75, 0x90, 0x62, 0x40, 0x3f, 0x49, 0x23,
-- 0x36, 0x24, 0x3a, 0x3a, 0x24, 0x36, 0x2e, 0x31,
-- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x21, 0x28, 0x33, 0x37, 0x25, 0x22,
-- 0x3b, 0x50, 0x8e, 0x8f, 0x90, 0x7e, 0x90, 0x63,
-- 0x74, 0x91, 0x92, 0x42, 0x93, 0x4b, 0x45, 0x2c,
-- 0x36, 0x36, 0x33, 0x39, 0x21, 0x36, 0x22, 0x51,
-- 0x33, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x22, 0x27, 0x2e, 0x2e, 0x36, 0x21,
-- 0x94, 0x3f, 0x50, 0x95, 0x96, 0x8f, 0x8f, 0x97,
-- 0x8e, 0x42, 0x50, 0x43, 0x47, 0x48, 0x48, 0x98,
-- 0x21, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x39,
-- 0x2e, 0x27, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x22, 0x24, 0x2b, 0x38, 0x28, 0x36, 0x32,
-- 0x4c, 0x4b, 0x50, 0x50, 0x50, 0x42, 0x42, 0x50,
-- 0x50, 0x40, 0x45, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x34, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x23,
-- 0x2f, 0x2b, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x28, 0x32, 0x51, 0x32, 0x28, 0x21, 0x98,
-- 0x48, 0x47, 0x9a, 0x50, 0x50, 0x50, 0x50, 0x50,
-- 0x9a, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x93, 0x23, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x2a, 0x2f, 0x2a, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x23, 0x30, 0x2e, 0x2c, 0x36, 0x21, 0x51, 0x9b,
-- 0x48, 0x48, 0x52, 0x3f, 0x50, 0x50, 0x40, 0x4b,
-- 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x34, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2d, 0x31, 0x27, 0x23, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
-- 0x27, 0x2c, 0x2d, 0x21, 0x36, 0x28, 0x44, 0x48,
-- 0x48, 0x48, 0x48, 0x47, 0x46, 0x4f, 0x47, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x9c, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x28, 0x51, 0x39, 0x26, 0x22, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x25,
-- 0x35, 0x51, 0x28, 0x36, 0x36, 0x9d, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x9b, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x4f, 0x28, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x28, 0x38, 0x2b, 0x25, 0x22, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24, 0x33,
-- 0x51, 0x25, 0x36, 0x36, 0x23, 0x40, 0x9b, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x9b, 0x99, 0x2b, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x30, 0x2f, 0x33, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x23, 0x30, 0x34,
-- 0x27, 0x36, 0x36, 0x36, 0x2a, 0x40, 0x47, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x99, 0x99, 0x9b, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x9b, 0x47, 0x52,
-- 0x46, 0x4f, 0x37, 0x21, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x30, 0x34, 0x2a, 0x23,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x22, 0x25, 0x39, 0x2c,
-- 0x36, 0x36, 0x36, 0x21, 0x31, 0x4e, 0x9a, 0x4c,
-- 0x47, 0x9b, 0x9b, 0x52, 0x46, 0x4f, 0x52, 0x9b,
-- 0x9b, 0x9b, 0x47, 0x4f, 0x45, 0x9a, 0x93, 0x93,
-- 0x3f, 0x93, 0x98, 0x28, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x39, 0x2c, 0x26,
-- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x23, 0x2a, 0x34, 0x28,
-- 0x36, 0x36, 0x36, 0x22, 0x38, 0x98, 0x44, 0x99,
-- 0x9b, 0x48, 0x48, 0x9b, 0x4c, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x47, 0x52, 0x46, 0x43, 0x93,
-- 0x40, 0x40, 0x43, 0x53, 0x21, 0x23, 0x33, 0x23,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x2f, 0x32,
-- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x24, 0x2b, 0x31, 0x36,
-- 0x36, 0x22, 0x36, 0x24, 0x9e, 0x4f, 0x9b, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x99, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x47,
-- 0x4f, 0x9a, 0x3f, 0x46, 0x38, 0x36, 0x21, 0x30,
-- 0x26, 0x36, 0x36, 0x36, 0x36, 0x36, 0x39, 0x2c,
-- 0x25, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2e, 0x33, 0x36,
-- 0x25, 0x25, 0x36, 0x4d, 0x52, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x47, 0x44, 0x93, 0x43, 0x23, 0x36, 0x36,
-- 0x26, 0x24, 0x36, 0x36, 0x36, 0x36, 0x28, 0x2f,
-- 0x2a, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x51, 0x24, 0x36,
-- 0x2a, 0x36, 0x28, 0x44, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x9b, 0x4b, 0x44, 0x37, 0x36, 0x23,
-- 0x28, 0x30, 0x22, 0x36, 0x36, 0x36, 0x36, 0x2d,
-- 0x35, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x21, 0x28, 0x2b, 0x34, 0x36, 0x25,
-- 0x24, 0x36, 0x4a, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x52, 0x3f, 0x21, 0x30,
-- 0x35, 0x25, 0x30, 0x36, 0x36, 0x36, 0x36, 0x32,
-- 0x2d, 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x22, 0x26, 0x2e, 0x35, 0x36, 0x2a,
-- 0x36, 0x24, 0x4f, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x47, 0x32, 0x30,
-- 0x2a, 0x23, 0x30, 0x23, 0x36, 0x36, 0x36, 0x21,
-- 0x2f, 0x32, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x23, 0x2a, 0x51, 0x28, 0x28, 0x25,
-- 0x36, 0x3a, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x9b, 0x52, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x38, 0x21,
-- 0x36, 0x36, 0x22, 0x27, 0x36, 0x36, 0x36, 0x36,
-- 0x2e, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x22, 0x25, 0x2c, 0x34, 0x36, 0x30, 0x21,
-- 0x23, 0x43, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x47, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x94, 0x36,
-- 0x36, 0x36, 0x36, 0x32, 0x36, 0x36, 0x36, 0x36,
-- 0x2a, 0x2e, 0x26, 0x22, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x23, 0x2a, 0x51, 0x25, 0x21, 0x2a, 0x36,
-- 0x2e, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x99, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x98, 0x36,
-- 0x36, 0x36, 0x36, 0x32, 0x36, 0x36, 0x36, 0x36,
-- 0x22, 0x2f, 0x30, 0x22, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x22, 0x25, 0x2c, 0x34, 0x36, 0x24, 0x28, 0x36,
-- 0x54, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x9a, 0x36,
-- 0x36, 0x36, 0x36, 0x30, 0x36, 0x36, 0x36, 0x36,
-- 0x21, 0x2f, 0x32, 0x23, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x28, 0x32, 0x2f, 0x28, 0x36, 0x27, 0x22, 0x21,
-- 0x43, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4b, 0x21,
-- 0x36, 0x36, 0x21, 0x26, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x34, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x25, 0x2c, 0x39, 0x36, 0x36, 0x30, 0x22, 0x25,
-- 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x52, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4f, 0x21,
-- 0x36, 0x36, 0x22, 0x26, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x30, 0x2d, 0x21, 0x36, 0x36, 0x32, 0x23, 0x2a,
-- 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4c, 0x22,
-- 0x36, 0x36, 0x24, 0x23, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x39, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x33, 0x2e, 0x36, 0x36, 0x23, 0x31, 0x27, 0x39,
-- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4c, 0x23,
-- 0x36, 0x36, 0x26, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x39, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x2b, 0x39, 0x36, 0x36, 0x36, 0x26, 0x32, 0x31,
-- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x46, 0x22,
-- 0x36, 0x21, 0x26, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24,
-- 0x35, 0x39, 0x36, 0x36, 0x36, 0x36, 0x26, 0x2d,
-- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x9a, 0x36,
-- 0x24, 0x27, 0x9f, 0x24, 0x25, 0x28, 0x21, 0x36,
-- 0x36, 0x34, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x25,
-- 0x39, 0x4d, 0xa0, 0x84, 0x81, 0x57, 0x21, 0x39,
-- 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x53, 0x28,
-- 0x23, 0x36, 0x36, 0x36, 0x21, 0x28, 0x2c, 0x30,
-- 0x21, 0x38, 0x33, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x22, 0x22, 0x28, 0x30,
-- 0x2d, 0xa1, 0x7a, 0xa2, 0xa3, 0xa3, 0x7f, 0x22,
-- 0x51, 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0xa4, 0xa5, 0xa5, 0xa6, 0x61,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x30, 0x32,
-- 0x25, 0x4d, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x23, 0x24, 0x26, 0x30, 0x33, 0x31,
-- 0x4d, 0x91, 0x5b, 0xa2, 0xa3, 0xa3, 0xa3, 0x5a,
-- 0x21, 0x2e, 0x46, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0xa7, 0xa8, 0x69, 0x66, 0xa9,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x26, 0x25,
-- 0x83, 0xaa, 0x2c, 0x25, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x28, 0x30, 0x35, 0x2d, 0x2f, 0x37, 0x4a,
-- 0x60, 0x85, 0xab, 0xac, 0xa3, 0xa3, 0xa3, 0x82,
-- 0x86, 0x36, 0x32, 0x3f, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0xad, 0xa2, 0xa8, 0xae, 0xaf,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x57,
-- 0x77, 0x66, 0x34, 0x27, 0x22, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x23, 0x30, 0x31, 0xb0, 0x91, 0x7e, 0x90, 0x90,
-- 0x8b, 0x5b, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0x5d, 0xb1, 0x36, 0x24, 0x53, 0x9b, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x9b, 0x99, 0xad, 0x64, 0x5c, 0x8b, 0xb1,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x73, 0x5d,
-- 0x82, 0x5c, 0xb2, 0x2a, 0x23, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x24, 0x2b, 0xb0, 0x8b, 0x5b, 0x76, 0x5b, 0x5b,
-- 0x7b, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa8, 0x5e, 0x22, 0x36, 0x21, 0x3a, 0x99, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x4f, 0x3f, 0xb3, 0x7b, 0x7b, 0x85, 0x80,
-- 0x9f, 0x36, 0x36, 0x36, 0x21, 0xb4, 0x7e, 0x7b,
-- 0x64, 0x64, 0xb5, 0x35, 0x24, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x31, 0xb6, 0x5b, 0x64, 0xa2, 0xa2, 0xac,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0x66, 0xb7, 0x36, 0x36, 0x36, 0x2c, 0x4b,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x9a, 0x3f, 0xb8, 0x76, 0x76, 0x7a, 0x63,
-- 0xb9, 0xba, 0x86, 0xba, 0xbb, 0x90, 0x5b, 0x64,
-- 0xa2, 0xa2, 0xbc, 0x2d, 0x27, 0x23, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x26, 0x2d, 0x91, 0x5b, 0x64, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa8, 0x83, 0xaf, 0x36, 0x36, 0x36, 0x30,
-- 0x44, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x9b, 0x9a, 0x3f, 0xbd, 0x5b, 0x7b, 0xbe, 0x85,
-- 0x7e, 0x90, 0x63, 0x90, 0x85, 0x5b, 0xa2, 0xa3,
-- 0xa3, 0xac, 0x5d, 0xb5, 0x39, 0x26, 0x23, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x2d, 0xbf, 0xbe, 0x64, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa8, 0x88, 0x36, 0x36, 0x36, 0x36,
-- 0x2d, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x9b, 0x45, 0x3f, 0xc0, 0x6d, 0x7b, 0xab, 0xbe,
-- 0x7a, 0x8b, 0x8b, 0x7a, 0x5b, 0x64, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa2, 0xc1, 0x37, 0x35, 0x26, 0x23,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x2e, 0xbf, 0x7a, 0x7b, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa8, 0x72, 0x73, 0x36, 0x36, 0x36,
-- 0x24, 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x46, 0x42, 0xb6, 0x7a, 0x7b, 0x64, 0x7b,
-- 0x76, 0x5b, 0x5b, 0x76, 0x7b, 0xa2, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xac, 0x64, 0xc1, 0x4d, 0x2c, 0x27,
-- 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x25, 0x31, 0xc2, 0x8b, 0x7b, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa8, 0x89, 0x9f, 0x36, 0x36,
-- 0x32, 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x4b, 0x2f, 0x8f, 0x7a, 0x7b, 0xa2, 0xac,
-- 0xa2, 0x64, 0x64, 0xa2, 0xa2, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x5d, 0xc3, 0x2c,
-- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x25, 0x31, 0xc2, 0x85, 0x7b, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0x66, 0x57, 0x27, 0x4d,
-- 0x4b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x99, 0x34, 0x9f, 0xb9, 0x7a, 0x7b, 0xa2, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0xc2,
-- 0x32, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x2d, 0xc2, 0x85, 0x7b, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa8, 0x5f, 0x92, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x44,
-- 0x35, 0x36, 0xaf, 0xbb, 0x7a, 0x7b, 0xac, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0xa2, 0xc0,
-- 0x2b, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
-- 0x30, 0x2f, 0xb6, 0x8b, 0x7b, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x66, 0x89, 0x45,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x9b, 0x4e, 0x25,
-- 0x36, 0x36, 0x61, 0xb9, 0x6d, 0x64, 0xac, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x7b, 0xbe, 0xc3,
-- 0x32, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x33, 0xc4, 0x63, 0xbe, 0xa2, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x72, 0x81, 0xc5,
-- 0x46, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x3f, 0x2c, 0x36, 0x36,
-- 0x36, 0x36, 0xc6, 0x8f, 0x6d, 0x64, 0xac, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa2, 0xab, 0x8b, 0xb0, 0x2c,
-- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24,
-- 0x35, 0x96, 0x75, 0xab, 0xa2, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x7b, 0x81, 0xb9,
-- 0x73, 0x3b, 0x44, 0x9b, 0x48, 0x48, 0x48, 0x9b,
-- 0x99, 0x43, 0x94, 0x2c, 0x21, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x73, 0xb9, 0x7a, 0x7b, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0x64, 0x76, 0x7a, 0x91, 0xb5, 0x31, 0x30,
-- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24,
-- 0x39, 0x97, 0x75, 0xbe, 0x7b, 0x64, 0xa2, 0xa2,
-- 0xac, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x7b, 0x7a, 0xc7,
-- 0xc8, 0x36, 0x21, 0x26, 0x2b, 0x39, 0x33, 0x30,
-- 0x23, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x21, 0xc8, 0xbb, 0x8b, 0x7b, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x64, 0x64,
-- 0x76, 0x85, 0xbf, 0xb5, 0x34, 0x2b, 0x27, 0x28,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x33, 0xc9, 0x63, 0x7e, 0x7a, 0x6d, 0xbe, 0x5b,
-- 0x76, 0x7b, 0x64, 0x64, 0xa2, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x76, 0x85, 0xb9,
-- 0x79, 0x22, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x21, 0xca, 0xbb, 0x75, 0x76, 0xa2, 0xa3,
-- 0xa3, 0xa3, 0xac, 0xa2, 0x64, 0x76, 0xbe, 0x8b,
-- 0xb6, 0xb5, 0x2f, 0x35, 0x30, 0x24, 0x22, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
-- 0x27, 0x31, 0xcb, 0xc9, 0xbb, 0x74, 0x63, 0x90,
-- 0x7e, 0x75, 0x8b, 0x6d, 0xbe, 0x76, 0x64, 0xa2,
-- 0xac, 0xac, 0xac, 0xac, 0x64, 0x7a, 0x84, 0xcc,
-- 0x79, 0x9f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x21, 0xc8, 0xcc, 0x63, 0x6d, 0x7b, 0x64,
-- 0xac, 0xa2, 0x64, 0x7b, 0xbe, 0x75, 0x63, 0x96,
-- 0x38, 0x39, 0x2a, 0x24, 0x23, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x28, 0x27, 0x35, 0x2d, 0x41, 0xb5, 0xc5, 0x8f,
-- 0xb9, 0xbb, 0xc7, 0x74, 0x84, 0x90, 0x85, 0x6d,
-- 0x5b, 0x7b, 0x7b, 0xab, 0x6d, 0x90, 0xb9, 0xcd,
-- 0xca, 0x22, 0x36, 0x36, 0x28, 0x30, 0x30, 0x30,
-- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x25, 0x36,
-- 0x36, 0x21, 0xb4, 0x80, 0xc7, 0x7e, 0x6d, 0x76,
-- 0xab, 0x76, 0x6d, 0x85, 0x63, 0xb9, 0xb5, 0x34,
-- 0x33, 0x26, 0x23, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x23, 0x24, 0x27, 0x2a, 0x35, 0x2e, 0x2f,
-- 0x41, 0xce, 0xcf, 0x6c, 0x80, 0xcc, 0xb9, 0x74,
-- 0x84, 0x90, 0x75, 0x7e, 0x74, 0x8f, 0xcd, 0x79,
-- 0xc6, 0x2b, 0x9d, 0x41, 0x2f, 0x34, 0x2d, 0x2d,
-- 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x34, 0x2f, 0x38,
-- 0x4d, 0x37, 0xd0, 0xd1, 0x8f, 0x74, 0x63, 0x7e,
-- 0x75, 0x7e, 0x63, 0xc7, 0x88, 0xc4, 0x31, 0x2a,
-- 0x24, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x21, 0x22, 0x23, 0x24, 0x26, 0x30,
-- 0x33, 0x39, 0x2e, 0x51, 0x41, 0xb2, 0x6c, 0xd1,
-- 0x80, 0xcc, 0xcc, 0xcc, 0xd2, 0xd1, 0xb7, 0xd3,
-- 0x41, 0x34, 0x35, 0x32, 0x30, 0x27, 0x27, 0x27,
-- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x30, 0x2a,
-- 0x2b, 0x34, 0xd4, 0xca, 0xd5, 0x8f, 0xbb, 0xc7,
-- 0xc7, 0xbb, 0xcc, 0x6c, 0x41, 0x39, 0x27, 0x28,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22,
-- 0x28, 0x24, 0x26, 0x2a, 0x33, 0x2c, 0x2f, 0x41,
-- 0xd6, 0xb7, 0x79, 0x79, 0x79, 0xca, 0xd7, 0x51,
-- 0x39, 0x30, 0x24, 0x23, 0x22, 0x22, 0x22, 0x22,
-- 0x22, 0x22, 0x21, 0x22, 0x22, 0x22, 0x22, 0x23,
-- 0x24, 0x2a, 0x31, 0xd8, 0xc8, 0x79, 0xd1, 0x80,
-- 0xd5, 0xba, 0xd9, 0x2f, 0x35, 0x26, 0x23, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x22, 0x23, 0x28, 0x25, 0x30, 0x2b,
-- 0x31, 0x2f, 0xd4, 0xd8, 0xd8, 0x2f, 0x2e, 0x33,
-- 0x26, 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x28, 0x27, 0x35, 0x34, 0xd8, 0xd8, 0xd8,
-- 0xda, 0xd4, 0x2e, 0x33, 0x25, 0x23, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x23, 0x28,
-- 0x26, 0x30, 0x32, 0x2b, 0x33, 0x2a, 0x26, 0x28,
-- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x23, 0x25, 0x30, 0x33, 0x35, 0x35,
-- 0x2b, 0x2a, 0x26, 0x28, 0x22, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x21, 0x22, 0x23, 0x28, 0x28, 0x23, 0x22, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x23, 0x28, 0x24, 0x24,
-- 0x28, 0x23, 0x22, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x33, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x61, 0x62, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x35, 0x61, 0x63, 0x64, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x65, 0x66, 0x66, 0x67, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B,
-+ 0x3B, 0x68, 0x64, 0x69, 0x62, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x22, 0x23, 0x23, 0x55, 0x6A, 0x6B,
-+ 0x6C, 0x6D, 0x6E, 0x6F, 0x6F, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x22, 0x23, 0x35, 0x33, 0x3B, 0x70, 0x71, 0x72,
-+ 0x73, 0x74, 0x75, 0x76, 0x77, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x23, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x23, 0x55,
-+ 0x2B, 0x34, 0x34, 0x42, 0x70, 0x71, 0x73, 0x78,
-+ 0x78, 0x78, 0x79, 0x7A, 0x7B, 0x34, 0x22, 0x21,
-+ 0x55, 0x33, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x3B, 0x7C, 0x7D, 0x7E, 0x34, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x35, 0x3B, 0x4C, 0x3C,
-+ 0x42, 0x3F, 0x56, 0x7F, 0x71, 0x74, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x79, 0x80, 0x81, 0x3C, 0x82,
-+ 0x83, 0x62, 0x61, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A,
-+ 0x3B, 0x21, 0x55, 0x55, 0x2B, 0x34, 0x39, 0x3F,
-+ 0x2A, 0x57, 0x8B, 0x72, 0x74, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x75, 0x8C, 0x6F, 0x63,
-+ 0x63, 0x66, 0x61, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x84, 0x85, 0x86, 0x8D, 0x88, 0x8E, 0x8F, 0x5E,
-+ 0x3C, 0x34, 0x3B, 0x34, 0x3F, 0x2A, 0x58, 0x57,
-+ 0x52, 0x46, 0x6C, 0x73, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x79, 0x7A, 0x6E, 0x69,
-+ 0x69, 0x90, 0x34, 0x33, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x91, 0x92, 0x8D, 0x87, 0x8E, 0x93, 0x8A, 0x35,
-+ 0x94, 0x95, 0x96, 0x56, 0x32, 0x32, 0x52, 0x5C,
-+ 0x4D, 0x82, 0x72, 0x78, 0x78, 0x78, 0x78, 0x79,
-+ 0x97, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6D, 0x6F,
-+ 0x62, 0x65, 0x34, 0x4C, 0x33, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B,
-+ 0x91, 0x86, 0x87, 0x88, 0x93, 0x98, 0x60, 0x3F,
-+ 0x99, 0x9A, 0x9A, 0x9B, 0x9C, 0x57, 0x5C, 0x36,
-+ 0x9D, 0x9E, 0x6D, 0x78, 0x78, 0x78, 0x97, 0x6E,
-+ 0x9F, 0x78, 0x78, 0x78, 0x78, 0x79, 0x80, 0xA0,
-+ 0x61, 0x51, 0x51, 0x3C, 0x4C, 0x55, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x3B, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C,
-+ 0xA1, 0x8D, 0x88, 0x8E, 0xA2, 0xA3, 0x94, 0x42,
-+ 0x51, 0xA4, 0x9A, 0x9A, 0x9A, 0xA5, 0x9C, 0x2A,
-+ 0xA6, 0x74, 0x8C, 0x75, 0x97, 0xA7, 0x76, 0x75,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6E,
-+ 0x46, 0x52, 0x56, 0x3F, 0x42, 0x34, 0x33, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x22, 0x21, 0x21, 0x22,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x3A,
-+ 0x5A, 0x53, 0x53, 0x29, 0x43, 0x50, 0x53, 0x5A,
-+ 0x5A, 0x29, 0x5A, 0x43, 0x53, 0x5D, 0x44, 0x2A,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55,
-+ 0x7D, 0x87, 0x8E, 0x93, 0xA8, 0xA9, 0xAA, 0x2A,
-+ 0x57, 0x94, 0xA4, 0x9B, 0xAB, 0xAC, 0x9A, 0x9B,
-+ 0xAD, 0x76, 0x79, 0x78, 0x75, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6D,
-+ 0x46, 0x5C, 0x57, 0x56, 0x51, 0x42, 0x4C, 0x55,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x24, 0x25, 0x26, 0x26, 0x27, 0x28, 0x27,
-+ 0x29, 0x2A, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x38, 0x30,
-+ 0x59, 0x3D, 0x3D, 0x3D, 0x27, 0x27, 0x26, 0x5D,
-+ 0x27, 0x27, 0x54, 0x37, 0x2E, 0x4A, 0x36, 0x2B,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0xAE, 0x88, 0xAF, 0xB0, 0xAA, 0x2A, 0x39, 0x34,
-+ 0x4C, 0x5C, 0x58, 0xB1, 0xB2, 0xB3, 0xAB, 0xA5,
-+ 0x9A, 0xB4, 0xB5, 0x8C, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x80,
-+ 0xB6, 0x38, 0x5C, 0x57, 0x56, 0x3F, 0x42, 0x3B,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x32,
-+ 0x31, 0x2C, 0x26, 0x2C, 0x33, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x34,
-+ 0x32, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x33,
-+ 0x33, 0x55, 0x55, 0x55, 0x23, 0x23, 0x35, 0x23,
-+ 0x23, 0x35, 0x2B, 0x4E, 0x4F, 0x2A, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x55, 0x38, 0x25,
-+ 0x2C, 0x52, 0x34, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x55, 0x8A, 0x8F, 0x39, 0x34, 0x3C, 0x57, 0x32,
-+ 0x46, 0x42, 0x52, 0x4A, 0x51, 0xAA, 0xB7, 0xB3,
-+ 0xAB, 0xAC, 0xAC, 0xB8, 0xB9, 0x79, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x7A,
-+ 0xBA, 0x70, 0x7B, 0xBB, 0x82, 0x56, 0x3F, 0x34,
-+ 0x4C, 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x36,
-+ 0x2D, 0x37, 0x38, 0x2A, 0x2B, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x39, 0x3A, 0x2C, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0x3C, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x24, 0x3D,
-+ 0x3E, 0x25, 0x3C, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x33, 0x29, 0x26, 0x2A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x54, 0x3E, 0x28,
-+ 0x28, 0x59, 0x59, 0x48, 0x51, 0x3F, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x2B, 0x56, 0x4D, 0x29, 0x5B, 0x34,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x55, 0x60, 0x3F, 0x42, 0x51, 0x32, 0x52,
-+ 0x40, 0x38, 0x40, 0x46, 0x42, 0xBC, 0xBD, 0xBE,
-+ 0xBF, 0x9B, 0xAB, 0x9B, 0xC0, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75,
-+ 0xA7, 0x63, 0x63, 0x66, 0x6F, 0x58, 0x56, 0x39,
-+ 0x34, 0x2B, 0x23, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x24, 0x2F,
-+ 0x3D, 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x40, 0x41, 0x3B, 0x21,
-+ 0x21, 0x22, 0x42, 0x38, 0x43, 0x44, 0x3A, 0x45,
-+ 0x34, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x46, 0x30, 0x47,
-+ 0x2A, 0x48, 0x48, 0x21, 0x21, 0x21, 0x21, 0x22,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x34, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x4D, 0x44, 0x2A, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x50, 0x4A, 0x57, 0x35,
-+ 0x35, 0x2B, 0x56, 0x27, 0x4B, 0x5D, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x3B, 0x52, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x38,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x3C, 0x42, 0x21, 0x33, 0x24, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x33, 0x38, 0x59, 0x37, 0x27, 0x27, 0x4A, 0x47,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x23, 0x4C, 0x4C, 0x2A, 0x56, 0x46, 0x31,
-+ 0x4D, 0x36, 0x50, 0x5A, 0x35, 0xC1, 0xC1, 0xC2,
-+ 0xC3, 0xB7, 0xB3, 0xBE, 0x76, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75,
-+ 0x6D, 0x62, 0x69, 0x6F, 0x58, 0x46, 0x32, 0x2A,
-+ 0x39, 0x34, 0x35, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x44, 0x49,
-+ 0x31, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x23, 0x29, 0x48, 0x22,
-+ 0x42, 0x3A, 0x4A, 0x49, 0x4B, 0x2E, 0x4B, 0x3E,
-+ 0x4A, 0x2C, 0x34, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x30, 0x40, 0x22,
-+ 0x21, 0x32, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x39,
-+ 0x36, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22,
-+ 0x31, 0x4F, 0x2A, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x31, 0x59, 0x2A, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x55, 0x27, 0x24, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4C, 0x44, 0x27, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x2A, 0x26, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3A,
-+ 0x40, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51, 0x49,
-+ 0x35, 0x21, 0x21, 0x21, 0x21, 0x22, 0x58, 0x25,
-+ 0x5A, 0x57, 0x21, 0x4C, 0x3D, 0x34, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x38,
-+ 0x47, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x3A, 0x4B, 0x53, 0x56, 0x55, 0x33, 0x42, 0x56,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x55, 0x4C, 0x42, 0x2A, 0x57, 0x5C, 0x38,
-+ 0x36, 0x47, 0x5A, 0xB6, 0x77, 0xC4, 0xC1, 0xC1,
-+ 0xC4, 0xC5, 0xB7, 0xB9, 0x79, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75,
-+ 0x97, 0xC6, 0x68, 0x57, 0x4D, 0x38, 0x46, 0x32,
-+ 0x51, 0x42, 0x2B, 0x35, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x4D, 0x2D, 0x38,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4E, 0x3C,
-+ 0x47, 0x4F, 0x50, 0x51, 0x3F, 0x44, 0x42, 0x34,
-+ 0x52, 0x53, 0x28, 0x2A, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x48, 0x54, 0x33, 0x21,
-+ 0x23, 0x3A, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x2A,
-+ 0x26, 0x33, 0x21, 0x21, 0x21, 0x21, 0x23, 0x45,
-+ 0x37, 0x3D, 0x41, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x31,
-+ 0x59, 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x28, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x27, 0x5B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x54, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4B,
-+ 0x46, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x49,
-+ 0x2B, 0x21, 0x21, 0x21, 0x23, 0x40, 0x43, 0x32,
-+ 0x35, 0x21, 0x21, 0x33, 0x28, 0x4C, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x4F,
-+ 0x5B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x50,
-+ 0x44, 0x39, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x3B, 0x34, 0x3F, 0x58, 0x46, 0x40, 0x36,
-+ 0x50, 0x41, 0x4D, 0xC7, 0x65, 0xC2, 0xC1, 0xC1,
-+ 0xC8, 0xBF, 0xB1, 0x97, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79,
-+ 0x80, 0xC9, 0x36, 0x50, 0x36, 0x38, 0x31, 0x32,
-+ 0x56, 0x39, 0x34, 0x33, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x2B, 0x3D, 0x28, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x40, 0x4D,
-+ 0x55, 0x2B, 0x21, 0x21, 0x2B, 0x28, 0x3B, 0x21,
-+ 0x21, 0x22, 0x52, 0x27, 0x56, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x2A, 0x30, 0x3F, 0x21, 0x22,
-+ 0x57, 0x44, 0x58, 0x21, 0x21, 0x21, 0x21, 0x56,
-+ 0x37, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x56, 0x3E,
-+ 0x36, 0x2A, 0x59, 0x23, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, 0x50, 0x3D,
-+ 0x42, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x40, 0x5A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x56, 0x49, 0x24, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x42, 0x54, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4D, 0x59,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x4A,
-+ 0x51, 0x21, 0x21, 0x33, 0x47, 0x47, 0x33, 0x21,
-+ 0x21, 0x21, 0x21, 0x55, 0x27, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x32, 0x4B,
-+ 0x4C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x34, 0x44,
-+ 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x33, 0x4C, 0x3C, 0x51, 0x57, 0x5C, 0x38, 0x38,
-+ 0x9D, 0xCA, 0x61, 0xCB, 0xCC, 0xCD, 0xC4, 0xC8,
-+ 0xA4, 0x9C, 0x76, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79,
-+ 0x7A, 0x7F, 0x41, 0x29, 0x47, 0x38, 0x40, 0x57,
-+ 0x32, 0x51, 0x42, 0x2B, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x57, 0x49, 0x32, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x57, 0x27,
-+ 0x35, 0x21, 0x21, 0x21, 0x2B, 0x59, 0x2A, 0x21,
-+ 0x21, 0x21, 0x21, 0x56, 0x54, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x4C, 0x2E, 0x5A, 0x23, 0x55, 0x5B,
-+ 0x49, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x21, 0x32,
-+ 0x3E, 0x3B, 0x21, 0x21, 0x21, 0x35, 0x54, 0x53,
-+ 0x23, 0x55, 0x4F, 0x55, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x25, 0x44, 0x42,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x41, 0x46, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x53, 0x2F, 0x2A, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x32, 0x28, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x59, 0x5B,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x54,
-+ 0x57, 0x21, 0x35, 0x53, 0x47, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x44, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x41, 0x43,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3F, 0x29,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x55, 0x4C, 0x3F, 0x2A, 0x46, 0x31, 0x36, 0x46,
-+ 0x71, 0x97, 0xCE, 0xCB, 0xCF, 0xA4, 0x9C, 0xA4,
-+ 0xAD, 0x76, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x8C,
-+ 0x7A, 0xA7, 0x36, 0x50, 0x3A, 0x36, 0x38, 0x52,
-+ 0x32, 0x2A, 0x3F, 0x2B, 0x22, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x22, 0x5A, 0x5A, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x28,
-+ 0x35, 0x21, 0x21, 0x21, 0x55, 0x30, 0x56, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x5B, 0x45, 0x21, 0x21,
-+ 0x21, 0x21, 0x2B, 0x2E, 0x25, 0x47, 0x3D, 0x2D,
-+ 0x25, 0x4C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x39,
-+ 0x44, 0x55, 0x21, 0x21, 0x21, 0x46, 0x59, 0x3B,
-+ 0x21, 0x23, 0x30, 0x34, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x2A, 0x28, 0x4E, 0x42, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x3C, 0x3D, 0x42, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x51, 0x4B, 0x49, 0x39, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x5C, 0x25, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x38, 0x4B, 0x3B,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x54,
-+ 0x56, 0x21, 0x5B, 0x3A, 0x35, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x51, 0x59, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x32, 0x2D, 0x42,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x3A,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x2B, 0x3C, 0x39, 0x56, 0x46, 0x40, 0x36, 0xB6,
-+ 0x73, 0x82, 0xCB, 0xD0, 0x75, 0xD1, 0xD2, 0xD1,
-+ 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x74, 0xCE,
-+ 0x9E, 0x6E, 0xD3, 0xC6, 0x6F, 0x81, 0x38, 0x5C,
-+ 0x52, 0x58, 0x39, 0x4C, 0x35, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x4C, 0x4A, 0x40, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x36, 0x3A,
-+ 0x21, 0x21, 0x21, 0x21, 0x55, 0x27, 0x3F, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x25, 0x3B, 0x21,
-+ 0x21, 0x21, 0x42, 0x2E, 0x2D, 0x2D, 0x26, 0x46,
-+ 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51,
-+ 0x44, 0x55, 0x21, 0x21, 0x35, 0x25, 0x40, 0x21,
-+ 0x21, 0x22, 0x4E, 0x58, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x39, 0x59, 0x38, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x56, 0x59, 0x23, 0x21, 0x21, 0x21,
-+ 0x21, 0x4C, 0x54, 0x5B, 0x59, 0x4C, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x57, 0x3A, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x4D, 0x49, 0x26, 0x23,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x53,
-+ 0x32, 0x51, 0x27, 0x42, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x42, 0x25, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x24, 0x37, 0x3E, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x48,
-+ 0x48, 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x3B, 0x39, 0x3F, 0x32, 0x5C, 0x38, 0x47, 0xD4,
-+ 0x7A, 0xC7, 0xCB, 0xD0, 0x74, 0x80, 0x8C, 0x9F,
-+ 0x80, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x73, 0x72, 0xD5, 0xCA, 0x61, 0xD3, 0x40, 0x5C,
-+ 0x46, 0x58, 0x51, 0x42, 0x33, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x39, 0x4B, 0x58, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x2A, 0x3D, 0x51,
-+ 0x21, 0x21, 0x21, 0x21, 0x55, 0x28, 0x42, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x47, 0x52, 0x21,
-+ 0x21, 0x21, 0x58, 0x59, 0x42, 0x3C, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x57,
-+ 0x4E, 0x23, 0x21, 0x22, 0x4D, 0x54, 0x35, 0x21,
-+ 0x21, 0x21, 0x5A, 0x46, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x56, 0x59, 0x36, 0x35, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x36, 0x5B, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x53, 0x48, 0x3F, 0x27, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x24, 0x47, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x22, 0x40, 0x27, 0x29, 0x29, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x47,
-+ 0x40, 0x41, 0x5C, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x39, 0x41, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x32, 0x26, 0x47, 0x28, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B,
-+ 0x53, 0x28, 0x36, 0x42, 0x23, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x4C, 0x39, 0x58, 0x32, 0x31, 0x38, 0x47, 0xD4,
-+ 0xCF, 0xD0, 0x6C, 0x9E, 0xD6, 0x6B, 0xD7, 0xD8,
-+ 0xD7, 0x6B, 0xCF, 0x7B, 0x80, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x74, 0x72, 0xD0, 0xA6, 0x70, 0x51,
-+ 0x46, 0x56, 0x51, 0x42, 0x55, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x5C, 0x27, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x32, 0x37, 0x54, 0x33,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x44, 0x2A, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x2C, 0x21,
-+ 0x21, 0x21, 0x47, 0x36, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52,
-+ 0x54, 0x23, 0x21, 0x24, 0x4F, 0x46, 0x21, 0x21,
-+ 0x21, 0x21, 0x38, 0x2C, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x42, 0x55, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x45, 0x54, 0x56, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x53, 0x24, 0x21, 0x21, 0x21, 0x21,
-+ 0x46, 0x5D, 0x4C, 0x52, 0x4E, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x31, 0x48, 0x22, 0x21, 0x21,
-+ 0x21, 0x22, 0x46, 0x54, 0x3B, 0x45, 0x29, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x47,
-+ 0x28, 0x28, 0x55, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x51, 0x41, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x56, 0x54, 0x39, 0x56, 0x28, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x34, 0x50, 0x30, 0x4E, 0x40, 0x34, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x4C, 0x39, 0x58, 0x52, 0x5C, 0x38, 0x47, 0x9D,
-+ 0xC9, 0xD9, 0xDA, 0xDB, 0xDC, 0xDC, 0xDC, 0xDC,
-+ 0xDC, 0xDC, 0xDC, 0xDD, 0x6B, 0x7B, 0x75, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x74, 0x71, 0xD0, 0x3F,
-+ 0x52, 0x57, 0x2A, 0x42, 0x2B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x47, 0x3A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x35, 0x45, 0x4A, 0x2C, 0x3B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x30, 0x56, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x58, 0x29, 0x21,
-+ 0x21, 0x21, 0x53, 0x3F, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x31,
-+ 0x43, 0x22, 0x3B, 0x28, 0x48, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x56, 0x25, 0x35, 0x21, 0x21, 0x21,
-+ 0x39, 0x54, 0x34, 0x21, 0x21, 0x21, 0x35, 0x3A,
-+ 0x30, 0x57, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0x39, 0x21, 0x21,
-+ 0x21, 0x35, 0x25, 0x3F, 0x21, 0x21, 0x21, 0x56,
-+ 0x30, 0x58, 0x21, 0x24, 0x43, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4D, 0x29, 0x22, 0x21, 0x21,
-+ 0x22, 0x32, 0x26, 0x42, 0x21, 0x46, 0x2C, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x48,
-+ 0x2E, 0x36, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x56, 0x28, 0x35, 0x21, 0x21,
-+ 0x21, 0x3F, 0x27, 0x32, 0x21, 0x51, 0x25, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x22, 0x39, 0x38, 0x25, 0x54, 0x50,
-+ 0x58, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x4C, 0x3F, 0x56, 0x52, 0x31, 0x4D, 0x47, 0x39,
-+ 0xD8, 0xDC, 0xDC, 0xDC, 0xDE, 0xDF, 0xDF, 0xDF,
-+ 0xDF, 0xDF, 0xDE, 0xDE, 0xDC, 0xDD, 0xD6, 0x97,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x97, 0x56,
-+ 0x46, 0x57, 0x2A, 0x42, 0x2B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x38, 0x29, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x35, 0x5B, 0x3D, 0x40, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x59, 0x3F, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x40, 0x5A, 0x21,
-+ 0x21, 0x22, 0x5D, 0x34, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x5B,
-+ 0x2C, 0x33, 0x29, 0x28, 0x3B, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x34, 0x59, 0x3C, 0x21, 0x21, 0x2B,
-+ 0x53, 0x36, 0x22, 0x21, 0x21, 0x34, 0x5A, 0x28,
-+ 0x3F, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x40, 0x41, 0x23, 0x21,
-+ 0x21, 0x3B, 0x28, 0x2B, 0x21, 0x21, 0x2A, 0x44,
-+ 0x38, 0x22, 0x21, 0x24, 0x50, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x50, 0x25, 0x23, 0x21, 0x23,
-+ 0x45, 0x5D, 0x52, 0x21, 0x21, 0x40, 0x50, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x50,
-+ 0x2D, 0x39, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x46, 0x30, 0x33, 0x21, 0x22,
-+ 0x24, 0x4E, 0x45, 0x22, 0x21, 0x58, 0x25, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, 0x3C, 0x48,
-+ 0x27, 0x39, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x34, 0x3F, 0x58, 0x57, 0x31, 0x4D, 0x47, 0x56,
-+ 0xDB, 0xDC, 0xDE, 0xE0, 0xE1, 0xE2, 0xE2, 0xE2,
-+ 0xE2, 0xE2, 0xE1, 0xE3, 0xE4, 0xDE, 0xDC, 0x6B,
-+ 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0xA7, 0x38,
-+ 0x46, 0x56, 0x2A, 0x39, 0x3B, 0x23, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x32, 0x44, 0x34, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x3F,
-+ 0x4D, 0x41, 0x29, 0x42, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x44, 0x46, 0x34,
-+ 0x2B, 0x55, 0x55, 0x2B, 0x56, 0x59, 0x36, 0x21,
-+ 0x21, 0x22, 0x59, 0x2B, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x55, 0x5C, 0x21, 0x21, 0x21, 0x40,
-+ 0x50, 0x4D, 0x4F, 0x32, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x55, 0x44, 0x31, 0x22, 0x3B, 0x5A,
-+ 0x41, 0x55, 0x21, 0x35, 0x57, 0x4A, 0x2E, 0x48,
-+ 0x57, 0x32, 0x3F, 0x55, 0x35, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x25, 0x47, 0x22, 0x21,
-+ 0x21, 0x4C, 0x28, 0x35, 0x21, 0x34, 0x30, 0x3A,
-+ 0x23, 0x21, 0x21, 0x58, 0x3A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4D, 0x4E, 0x35, 0x33, 0x48,
-+ 0x44, 0x56, 0x21, 0x21, 0x21, 0x58, 0x41, 0x23,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x29,
-+ 0x4A, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x32, 0x44, 0x2B, 0x23, 0x45,
-+ 0x3D, 0x31, 0x22, 0x21, 0x21, 0x4C, 0x27, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x53, 0x53, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x34, 0x3F, 0x58, 0x57, 0x40, 0x38, 0x47, 0xD4,
-+ 0xDC, 0xDE, 0xE0, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE2, 0xE1, 0xDF, 0xDC,
-+ 0xE6, 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x2A, 0x40,
-+ 0x46, 0x58, 0x2A, 0x42, 0x34, 0x34, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x2B, 0x54, 0x5A, 0x34, 0x23,
-+ 0x35, 0x23, 0x35, 0x33, 0x2B, 0x24, 0x54, 0x4B,
-+ 0x59, 0x5C, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4B, 0x44, 0x59,
-+ 0x27, 0x26, 0x26, 0x4A, 0x3E, 0x41, 0x55, 0x21,
-+ 0x21, 0x22, 0x41, 0x39, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x34, 0x53, 0x4D, 0x21, 0x21, 0x21, 0x5C,
-+ 0x4B, 0x4F, 0x40, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x48, 0x30, 0x50, 0x26, 0x54,
-+ 0x34, 0x21, 0x55, 0x4E, 0x2D, 0x2F, 0x4F, 0x37,
-+ 0x3E, 0x4B, 0x4B, 0x30, 0x27, 0x53, 0x2C, 0x57,
-+ 0x42, 0x4C, 0x55, 0x22, 0x22, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x39, 0x4A, 0x3F, 0x21, 0x21,
-+ 0x21, 0x55, 0x53, 0x55, 0x2A, 0x26, 0x54, 0x33,
-+ 0x21, 0x21, 0x21, 0x51, 0x54, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x51, 0x3D, 0x46, 0x5A, 0x4F,
-+ 0x52, 0x21, 0x21, 0x21, 0x21, 0x22, 0x27, 0x31,
-+ 0x33, 0x23, 0x42, 0x4C, 0x21, 0x21, 0x21, 0x5B,
-+ 0x54, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3B, 0x44, 0x45, 0x48, 0x4B,
-+ 0x38, 0x22, 0x21, 0x21, 0x21, 0x21, 0x53, 0x48,
-+ 0x33, 0x23, 0x34, 0x3C, 0x22, 0x57, 0x4D, 0x33,
-+ 0x21, 0x21, 0x21, 0x21, 0x22, 0x23, 0x34, 0x40,
-+ 0x44, 0x31, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x3B, 0x42, 0x2A, 0x57, 0x31, 0x38, 0x5C, 0xD8,
-+ 0xDC, 0xE4, 0xE2, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE2, 0xE0,
-+ 0xDE, 0xCA, 0x9F, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x80, 0x76, 0x57, 0x5C,
-+ 0x31, 0x6E, 0x34, 0x3C, 0xC9, 0x3B, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x33, 0x5B, 0x30, 0x25,
-+ 0x5D, 0x5A, 0x53, 0x27, 0x26, 0x59, 0x36, 0x56,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x3D, 0x2A, 0x55,
-+ 0x42, 0x51, 0x56, 0x24, 0x2A, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x45, 0x53, 0x3B, 0x22, 0x22, 0x35,
-+ 0x46, 0x59, 0x54, 0x55, 0x21, 0x21, 0x21, 0x31,
-+ 0x2D, 0x47, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x33, 0x50, 0x5D, 0x45, 0x55,
-+ 0x21, 0x21, 0x34, 0x4F, 0x29, 0x58, 0x33, 0x4C,
-+ 0x39, 0x3C, 0x2A, 0x40, 0x48, 0x54, 0x3D, 0x3D,
-+ 0x37, 0x4A, 0x59, 0x29, 0x5B, 0x36, 0x52, 0x2A,
-+ 0x42, 0x3C, 0x32, 0x30, 0x41, 0x35, 0x21, 0x21,
-+ 0x21, 0x33, 0x41, 0x26, 0x4B, 0x5A, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x3E, 0x41, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x41, 0x49, 0x30, 0x32,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x4F,
-+ 0x5D, 0x41, 0x27, 0x58, 0x21, 0x21, 0x21, 0x5B,
-+ 0x41, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x47, 0x49, 0x4F, 0x5C,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x39, 0x4A,
-+ 0x28, 0x43, 0x27, 0x5C, 0x35, 0x25, 0x49, 0x5B,
-+ 0x58, 0x52, 0x5C, 0x38, 0x48, 0x41, 0x4A, 0x4B,
-+ 0x50, 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x3B, 0x3C, 0x2A, 0x32, 0x5C, 0x40, 0x32, 0xDD,
-+ 0xDC, 0xE3, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE1, 0xE0, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x80, 0xE7, 0x58, 0x52,
-+ 0x5C, 0x67, 0xE7, 0x6C, 0xE8, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x23, 0x39, 0x5C,
-+ 0x29, 0x5A, 0x4D, 0x5C, 0x2A, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x44, 0x42, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x33, 0x27, 0x30, 0x5A, 0x2C, 0x25,
-+ 0x4B, 0x50, 0x3B, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x2C, 0x3B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4C, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x55, 0x2B,
-+ 0x39, 0x32, 0x4D, 0x29, 0x26, 0x3D, 0x2D, 0x2D,
-+ 0x4B, 0x4B, 0x2F, 0x30, 0x42, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x3B, 0x29, 0x2C, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x50, 0x4D, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x32, 0x3B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51,
-+ 0x48, 0x45, 0x34, 0x21, 0x21, 0x21, 0x21, 0x38,
-+ 0x44, 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0x32, 0x34, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3C,
-+ 0x5B, 0x4D, 0x42, 0x21, 0x21, 0x34, 0x4D, 0x47,
-+ 0x5A, 0x5D, 0x27, 0x4E, 0x25, 0x3A, 0x5C, 0x42,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x2B, 0x34, 0x51, 0x56, 0x46, 0x40, 0xE9, 0xDA,
-+ 0xDD, 0xE1, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE2, 0xEA, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x76, 0xD3, 0x67, 0x39,
-+ 0x3C, 0xCF, 0xD5, 0x9F, 0x3B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x28, 0x2B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x53, 0x44, 0x3D, 0x43,
-+ 0x57, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x35, 0x55, 0x3F, 0x2A,
-+ 0x57, 0x24, 0x3F, 0x3B, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55,
-+ 0x3C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x55, 0x4C, 0x3F, 0x58, 0x46, 0x31, 0x8B, 0xAD,
-+ 0xCC, 0xE2, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xEA, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x97, 0x35, 0x6E, 0xC6, 0x82,
-+ 0xA6, 0x73, 0x75, 0xBA, 0x2B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x34, 0x44, 0x3B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x33, 0x34, 0xEB, 0x34, 0x57, 0x5C, 0x4C, 0xA4,
-+ 0xEC, 0x64, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0x83, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x80, 0xED, 0xCF, 0xCE, 0x78, 0x78,
-+ 0x78, 0x7A, 0x6D, 0x34, 0x22, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x55, 0x25, 0x55, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x34, 0xEE, 0xEF, 0x5F, 0x96, 0x23, 0xB3,
-+ 0xBF, 0xB5, 0xF0, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x9F, 0x78, 0x78, 0x78, 0x78,
-+ 0x80, 0x9F, 0x65, 0x33, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x28, 0x55, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x4C, 0xF1, 0xA5, 0xAC, 0xAB, 0x60, 0xB3,
-+ 0xB3, 0xF2, 0xEA, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xF3, 0x6D, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x80, 0x61, 0x34, 0x23, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x25, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B, 0x5E,
-+ 0x4C, 0x3B, 0xF4, 0xA5, 0x9B, 0x9B, 0xB4, 0xEF,
-+ 0xEF, 0xBF, 0xAD, 0xF5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0x67, 0x75, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80,
-+ 0xA7, 0x3F, 0x55, 0x22, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4E, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B, 0x5F,
-+ 0x9B, 0xD2, 0x3C, 0xB7, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xB3, 0xB8, 0xEA, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xF0, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x82,
-+ 0x34, 0x3B, 0x33, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x5D, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x60,
-+ 0xAB, 0xA5, 0xB8, 0xB1, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xF6, 0xB7, 0xB5, 0xF0, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0x67, 0x80, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x80, 0x9F, 0xBA, 0x42,
-+ 0x4C, 0x2B, 0x22, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x3A, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55,
-+ 0xF2, 0x9B, 0x9B, 0xB4, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB4, 0x5F, 0x63, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xF5,
-+ 0x76, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x80, 0x6D, 0x65, 0x3C, 0x34,
-+ 0x3B, 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2A, 0x29, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0xF7, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB3, 0xB8, 0xEA, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xF8, 0x68,
-+ 0x7A, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x80, 0x97, 0x82, 0x39, 0x39, 0x34, 0x3B,
-+ 0x33, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2A, 0x29, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x3B, 0xB8, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xF6, 0xB2, 0xF9, 0xFA, 0xFA, 0xFA,
-+ 0xFA, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0x6F, 0x97,
-+ 0x80, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x8C, 0x61, 0x39, 0x2A, 0x3F, 0x3C, 0x4C, 0x55,
-+ 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x31, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0xFB, 0xF6, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB3, 0xB2, 0xF9, 0xF3, 0xF3, 0xF3,
-+ 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0x90, 0x6D, 0x97,
-+ 0x8C, 0x6D, 0x76, 0xBB, 0xC6, 0xB9, 0xC0, 0xFC,
-+ 0xAD, 0xFB, 0x2A, 0x58, 0x42, 0x4C, 0x55, 0x33,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x33, 0xD2, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB4, 0xB8, 0xEB, 0xE8, 0x7F, 0xD6,
-+ 0xD6, 0xD6, 0xD6, 0x9D, 0x9D, 0x52, 0xEB, 0x5F,
-+ 0x5F, 0x5F, 0xF2, 0xA4, 0xBF, 0xBF, 0xB4, 0xBF,
-+ 0xEE, 0x56, 0x2A, 0x42, 0x4C, 0x2B, 0x33, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x4C, 0xBE, 0xF6, 0xEF, 0xEF, 0xEF,
-+ 0xF6, 0xB4, 0xB2, 0xF1, 0x3C, 0x56, 0x46, 0x5C,
-+ 0x31, 0x38, 0x40, 0x40, 0x4D, 0x4D, 0xB8, 0xAC,
-+ 0xBF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xB4,
-+ 0xB1, 0x39, 0x39, 0x3B, 0x2B, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3B, 0xAD, 0xA4, 0xBF, 0xBF,
-+ 0xB7, 0xB2, 0xEE, 0x5E, 0x39, 0x51, 0x2A, 0x32,
-+ 0x52, 0x46, 0x5C, 0x31, 0x31, 0x2A, 0xA5, 0xEF,
-+ 0xFD, 0xB4, 0xEF, 0xF6, 0xF6, 0xEF, 0xF6, 0xB2,
-+ 0x3F, 0x34, 0x2B, 0x55, 0x23, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0xEB, 0xF7, 0xAA,
-+ 0xAA, 0xF7, 0xEB, 0x55, 0x3B, 0x3C, 0x39, 0x51,
-+ 0x2A, 0x56, 0x32, 0x57, 0x57, 0x2A, 0x96, 0x3C,
-+ 0x2A, 0xEE, 0xEF, 0x5F, 0xD2, 0xEF, 0xB4, 0xAA,
-+ 0x42, 0x55, 0x35, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x3B,
-+ 0x3B, 0x35, 0x21, 0x23, 0x33, 0x3B, 0x4C, 0x3C,
-+ 0x39, 0x3F, 0x51, 0x2A, 0x51, 0x51, 0x58, 0x32,
-+ 0x56, 0xF4, 0xB1, 0x42, 0x3C, 0xF2, 0x9C, 0x3F,
-+ 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x33, 0x55,
-+ 0x3B, 0x4C, 0x4C, 0x3C, 0x42, 0x42, 0x3C, 0x34,
-+ 0x34, 0x3F, 0x4C, 0x3B, 0x4C, 0x3B, 0x3C, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x35, 0x33, 0x55, 0x33, 0x33, 0x33, 0x55, 0x2B,
-+ 0x2B, 0x35, 0x35, 0x35, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
- };
-
- #endif /* !__HAVE_ARCH_LINUX_LOGO */
-@@ -994,7 +1760,7 @@
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
- };
-
- #endif /* !__HAVE_ARCH_LINUX_LOGOBW */
-@@ -1401,7 +2167,7 @@
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- };
-
- #endif /* !__HAVE_ARCH_LINUX_LOGO16 */
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/saner-spitz-keymap.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/saner-spitz-keymap.patch
deleted file mode 100644
index 59021882fc..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/saner-spitz-keymap.patch
+++ /dev/null
@@ -1,225 +0,0 @@
---- linux_n1/drivers/char/spitz_keymap.c~saner-spitz-keymap 2005-05-04 09:24:39.039602352 +0100
-+++ linux_n1/drivers/char/spitz_keymap.c 2005-05-04 09:45:48.879557336 +0100
-@@ -10,7 +10,7 @@
- 0xf200, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66, 0xfb67,
- 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e, 0xfb6f,
- 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76, 0xfb77,
-- 0xfb78, 0xfb79, 0xfb7a, 0xf700, 0xf201, 0xf101, 0xf703, 0xf008,
-+ 0xfb78, 0xfb79, 0xfb7a, 0xf700, 0xf201, 0xf10a, 0xf701, 0xf008,
- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
- 0xf200, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
- 0xf038, 0xf039, 0xf030, 0xf02d, 0xf05e, 0xf05c, 0xf05b, 0xf040,
-@@ -18,7 +18,7 @@
- 0xf200, 0xf009, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf301,
- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf201, 0xf30b, 0xf30a, 0xf30e,
-- 0xf702, 0xf703, 0xf01b, 0xf200, 0xf020, 0xf310, 0xf200, 0xf03b,
-+ 0xf108, 0xf109, 0xf10c, 0xf200, 0xf020, 0xf310, 0xf200, 0xf03b,
- 0xf03a, 0xf05d, 0xf02c, 0xf02e, 0xf02f, 0xf05f, 0xf200, 0xf02e,
- 0xf114, 0xf117, 0xf118, 0xf119, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-@@ -29,7 +29,7 @@
- 0xf200, 0xfb41, 0xfb42, 0xfb43, 0xfb44, 0xfb45, 0xfb46, 0xfb47,
- 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e, 0xfb4f,
- 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56, 0xfb57,
-- 0xfb58, 0xfb59, 0xfb5a, 0xf700, 0xf201, 0xf101, 0xf703, 0xf008,
-+ 0xfb58, 0xfb59, 0xfb5a, 0xf700, 0xf201, 0xf10a, 0xf701, 0xf008,
- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
- 0xf200, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027,
- 0xf028, 0xf029, 0xf07e, 0xf03d, 0xf07e, 0xf07c, 0xf07b, 0xf060,
-@@ -37,7 +37,7 @@
- 0xf200, 0xf009, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf301,
- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf201, 0xf30b, 0xf30a, 0xf30e,
-- 0xf702, 0xf703, 0xf01b, 0xf200, 0xf020, 0xf310, 0xf200, 0xf02b,
-+ 0xf108, 0xf109, 0xf10c, 0xf200, 0xf020, 0xf310, 0xf200, 0xf02b,
- 0xf02a, 0xf07d, 0xf03c, 0xf03e, 0xf03f, 0xf05f, 0xf200, 0xf03f,
- 0xf114, 0xf117, 0xf20b, 0xf20a, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-@@ -48,7 +48,7 @@
- 0xf200, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007,
- 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f,
- 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017,
-- 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf101, 0xf703, 0xf008,
-+ 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf10a, 0xf701, 0xf008,
- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-@@ -56,7 +56,7 @@
- 0xf200, 0xf009, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf301,
- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf201, 0xf30b, 0xf30a, 0xf30e,
-- 0xf702, 0xf703, 0xf01b, 0xf200, 0xf020, 0xf310, 0xf200, 0xf200,
-+ 0xf108, 0xf109, 0xf10c, 0xf200, 0xf020, 0xf310, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf114, 0xf117, 0xf118, 0xf119, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-@@ -67,7 +67,7 @@
- 0xf200, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007,
- 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f,
- 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017,
-- 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf101, 0xf703, 0xf008,
-+ 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf10a, 0xf701, 0xf008,
- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-@@ -75,18 +75,18 @@
- 0xf200, 0xf009, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf301,
- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf201, 0xf30b, 0xf30a, 0xf30e,
-- 0xf702, 0xf703, 0xf01b, 0xf200, 0xf020, 0xf310, 0xf200, 0xf200,
-+ 0xf108, 0xf109, 0xf10c, 0xf200, 0xf020, 0xf310, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf114, 0xf117, 0xf118, 0xf119, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short alt_map[NR_KEYS] = {
-- 0xf200, 0xf861, 0xf05f, 0xf863, 0xf864, 0xf03d, 0xf05c, 0xf03b,
-- 0xf03a, 0xf869, 0xf02a, 0xf05c, 0xf07c, 0xf86d, 0xf86e, 0xf86f,
-- 0xf870, 0xf871, 0xf02b, 0xf873, 0xf05b, 0xf875, 0xf876, 0xf05e,
-- 0xf878, 0xf05d, 0xf87a, 0xf700, 0xf201, 0xf101, 0xf703, 0xf07f,
-+u_short altgr_map[NR_KEYS] = {
-+ 0xf200, 0xfb61, 0xf05f, 0xfb63, 0xfb64, 0xf03d, 0xf05c, 0xf03b,
-+ 0xf03a, 0xfb69, 0xf02a, 0xf05c, 0xf07c, 0xfb6d, 0xfb6e, 0xfb6f,
-+ 0xfb70, 0xfb71, 0xf02b, 0xfb73, 0xf05b, 0xfb75, 0xfb76, 0xf05e,
-+ 0xfb78, 0xf05d, 0xfb7a, 0xf700, 0xf201, 0xf10a, 0xf701, 0xf07f,
- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-@@ -94,7 +94,7 @@
- 0xf200, 0xf207, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf301,
- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309,
- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf201, 0xf30b, 0xf30a, 0xf30e,
-- 0xf702, 0xf703, 0xf01b, 0xf200, 0xf020, 0xf310, 0xf200, 0xf200,
-+ 0xf108, 0xf109, 0xf10c, 0xf200, 0xf020, 0xf310, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf03e,
- 0xf114, 0xf117, 0xf118, 0xf119, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200,
-@@ -102,9 +102,8 @@
- };
-
- ushort *key_maps[MAX_NR_KEYMAPS] = {
-- plain_map, shift_map, 0, 0,
-- ctrl_map, shift_ctrl_map, 0, 0,
-- alt_map, 0
-+ plain_map, shift_map, altgr_map, 0,
-+ ctrl_map, shift_ctrl_map, 0
- };
-
- unsigned int keymap_count = 5;
---- linux_n1/drivers/char/spitz_keymap.map~saner-spitz-keymap 2005-05-04 09:24:57.100856624 +0100
-+++ linux_n1/drivers/char/spitz_keymap.map 2005-05-04 09:42:32.880353744 +0100
-@@ -10,7 +10,7 @@
- # 5 for [CTRL] [SHIFT] , to symbol input for debug
- # 8 for [ALT]
- #
--keymaps 0,1,4,5,8
-+keymaps 0,1,2,4,5
- #
- # loadkeys --mktable iris_keymap.map
- #
-@@ -21,48 +21,48 @@
- #
- keycode 1 = a
- keycode 2 = b
-- alt keycode 2 = underscore
-+ altgr keycode 2 = underscore
- keycode 3 = c
- keycode 4 = d
- keycode 5 = e
-- alt keycode 5 = equal
-+ altgr keycode 5 = equal
- keycode 6 = f
-- alt keycode 6 = backslash
-+ altgr keycode 6 = backslash
- keycode 7 = g
-- alt keycode 7 = semicolon
-+ altgr keycode 7 = semicolon
- keycode 8 = h
-- alt keycode 8 = colon
-+ altgr keycode 8 = colon
- keycode 9 = i
- keycode 10 = j
-- alt keycode 10 = asterisk
-+ altgr keycode 10 = asterisk
- keycode 11 = k
-- alt keycode 11 = backslash
-+ altgr keycode 11 = backslash
- keycode 12 = l
-- alt keycode 12 = bar
-+ altgr keycode 12 = bar
- keycode 13 = m
- keycode 14 = n
- keycode 15 = o
- keycode 16 = p
- keycode 17 = q
- keycode 18 = r
-- alt keycode 18 = plus
-+ altgr keycode 18 = plus
- keycode 19 = s
- keycode 20 = t
-- alt keycode 20 = bracketleft
-+ altgr keycode 20 = bracketleft
- keycode 21 = u
- keycode 22 = v
- keycode 23 = w
-- alt keycode 23 = asciicircum
-+ altgr keycode 23 = asciicircum
- keycode 24 = x
- keycode 25 = y
-- alt keycode 25 = bracketright
-+ altgr keycode 25 = bracketright
- keycode 26 = z
- keycode 27 = Shift
- keycode 28 = Return
--keycode 29 = F2
--keycode 30 = Alt
-+keycode 29 = F11
-+keycode 30 = AltGr
- keycode 31 = BackSpace
-- alt keycode 31 = Delete
-+ altgr keycode 31 = Delete
- keycode 32 = Num_Lock
- keycode 34 = Escape
- keycode 35 = Left
-@@ -93,9 +93,9 @@
- keycode 59 = minus at
- keycode 60 = Shift_Lock
- keycode 63 = comma slash
-- alt keycode 63 = less
-+ altgr keycode 63 = less
- keycode 65 = Tab
-- alt keycode 65 = Caps_Lock
-+ altgr keycode 65 = Caps_Lock
- keycode 71 = KP_1
- keycode 72 = KP_2
- keycode 73 = KP_3
-@@ -113,11 +113,12 @@
- keycode 85 = KP_Subtract
- keycode 86 = KP_Add
- keycode 87 = KP_Enter
--# (Activity:88) -> Ctrl
--keycode 88 = Control
--# (Contacts:89) -> Alt
--keycode 89 = Alt
--keycode 90 = Escape
-+# (Activity:88) -> F9
-+keycode 88 = F9
-+# (Contacts:89) -> F10
-+keycode 89 = F10
-+# (Mail:90) -> F13
-+keycode 90 = F13
- keycode 92 = space
- keycode 93 = KP_Period
- keycode 94 =
-@@ -130,7 +131,7 @@
- keycode 101 = underscore underscore
- keycode 102 =
- keycode 103 = period question
-- alt keycode 103 = greater
-+ altgr keycode 103 = greater
- keycode 104 = Find
- keycode 105 = Select
- keycode 106 = Prior
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/swap-performance.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/swap-performance.patch
deleted file mode 100644
index 1cde717bb4..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/swap-performance.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-*** ../linux/mm/swap.c Tue Jan 14 14:54:41 2003
---- linux/mm/swap.c Sun Sep 28 21:34:25 2003
-***************
-*** 32,38 ****
- int page_cluster;
-
- pager_daemon_t pager_daemon = {
-! 512, /* base number for calculating the number of tries */
- SWAP_CLUSTER_MAX, /* minimum number of tries */
- 8, /* do swap I/O in clusters of this size */
- };
---- 32,38 ----
- int page_cluster;
-
- pager_daemon_t pager_daemon = {
-! 128, /* base number for calculating the number of tries */
- SWAP_CLUSTER_MAX, /* minimum number of tries */
- 8, /* do swap I/O in clusters of this size */
- };
diff --git a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/tosa_ts.patch b/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/tosa_ts.patch
deleted file mode 100644
index 678cb2e25b..0000000000
--- a/recipes/linux/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602/tosa_ts.patch
+++ /dev/null
@@ -1,207 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux/drivers/char/tosa_ts.c~tosa_ts.patch
-+++ linux/drivers/char/tosa_ts.c
-@@ -102,6 +102,8 @@
- static int head = 0, tail = 0;
-
- #ifdef CONFIG_PM
-+#include <linux/pm.h>
-+static struct pm_dev* tosa_ts_pm_dev;
- static int tp_suspend = 0;
- #endif /* CONFIG_PM */
-
-@@ -495,25 +497,6 @@
- ioctl: ts_ioctl,
- };
-
--static void ts_exit(void)
--{
-- ts_timer_clear();
-- ts_clear();
-- free_irq(IRQ_GPIO_TP_INT, NULL);
-- wm9712_power_mode_ts(WM9712_PWR_OFF);
--
-- pxa_ac97_put(&ac97_on);
--}
--
--#ifdef MODULE
--static void __exit ac97_ts_cleanup(void)
--{
-- ts_exit();
-- unregister_chrdev(TS_MAJOR, "ts");
--}
--module_exit(ac97_ts_cleanup);
--#endif /* MODULE */
--
- extern int tc6393fb_lcdMode;
-
- int ac97_ad_input(int ch, unsigned short *dat)
-@@ -608,7 +591,7 @@
- #endif
- }
-
--static int ts_init(void)
-+static int tosa_ts_hardware_start(void)
- {
- pxa_ac97_get(&codec, &ac97_on);
-
-@@ -625,7 +608,6 @@
- /* GPIO3/PENDOWN wakeup */
- ac97_bit_set(AC97_GPIO_WAKE_UP, CODEC_PENDOWN);
-
-- ts_clear();
-
- /* Init queue */
- //X kernel_thread(ts_pendown, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-@@ -639,12 +621,39 @@
- return -EBUSY;
- }
-
-- // printk(KERN_INFO "Tosa Touch Screen driver initialized\n");
--
- return 0;
- }
-
--static int __init ac97_ts_init(void)
-+static void tosa_ts_hardware_stop(void)
-+{
-+ ts_timer_clear();
-+ ts_clear();
-+ free_irq(IRQ_GPIO_TP_INT, NULL);
-+ wm9712_power_mode_ts(WM9712_PWR_OFF);
-+
-+ pxa_ac97_put(&ac97_on);
-+}
-+
-+#ifdef CONFIG_PM
-+static int tosa_ts_pm_callback(struct pm_dev *pm_dev,
-+ pm_request_t req, void *data)
-+{
-+ switch (req) {
-+ case PM_SUSPEND:
-+ tp_suspend = 1;
-+ tosa_ts_hardware_stop();
-+ break;
-+ case PM_RESUME:
-+ tp_suspend = 0;
-+ tosa_ts_hardware_start();
-+ break;
-+ }
-+ return 0;
-+}
-+#endif
-+
-+
-+static int __init tosa_ts_init(void)
- {
- ac97_on = 0;
-
-@@ -663,28 +672,37 @@
-
- if( register_chrdev(TS_MAJOR,DEV_NAME, &ts_fops) ) {
- printk("unable to get major %d for touch screen\n", TS_MAJOR);
-- ts_exit();
- }
-
- init_procinfo();
-
-+ tosa_ts_hardware_start();
-+
-+#ifdef CONFIG_PM
-+ tosa_ts_pm_dev = pm_register(PM_SYS_DEV, 0, tosa_ts_pm_callback);
-+#endif
-+
- kernel_thread(ts_pendown, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-
- return 0;
- }
-
--module_init(ac97_ts_init);
-+static int __exit tosa_ts_cleanup()
-+{
-+ tosa_hardware_stop();
-+ pm_unregister(tosa_ts_pm_dev);
-+ unregister_chrdev(TS_MAJOR, "ts");
-+}
-+
-+module_init(tosa_ts_init);
-+module_exit(tosa_ts_cleanup);
-
- /*
- * Driver functions
- */
- static int ts_open(struct inode *inode, struct file *file)
- {
-- if( ts_init() < 0 ) {
-- ts_exit();
-- return -EINVAL;
-- }
--
-+ ts_clear();
- MOD_INC_USE_COUNT;
- return 0;
- }
-@@ -692,7 +710,6 @@
-
- static int ts_release(struct inode *inode, struct file *file)
- {
-- ts_exit();
-
- MOD_DEC_USE_COUNT;
- return 0;
-@@ -788,20 +805,3 @@
- return 0;
- }
-
--#ifdef CONFIG_PM
--void tosa_ts_suspend(void)
--{
-- DEBUG(DBG_L1, "in\n");
-- tp_suspend = 1;
-- ts_exit();
-- DEBUG(DBG_L1, "out\n");
--}
--
--void tosa_ts_resume(void)
--{
-- DEBUG(DBG_L1, "in\n");
-- tp_suspend = 0;
-- ts_init();
-- DEBUG(DBG_L1, "out\n");
--}
--#endif /* CONFIG_PM */
---- linux/drivers/sound/pxa-ac97_tosa.c~tosa_ts.patch
-+++ linux/drivers/sound/pxa-ac97_tosa.c
-@@ -90,8 +90,6 @@
- #include <linux/pm.h>
- static struct pm_dev* pxa_sound_pm_dev;
- static int tosa_pm_callback(struct pm_dev *,pm_request_t, void *);
--extern void tosa_ts_suspend(void);
--extern void tosa_ts_resume(void);
- #endif /* CONFIG_PM */
-
- /************************************************************
-@@ -2195,9 +2193,6 @@
- case PM_SUSPEND:
- DEBUG(DBG_L1, "PM_SUSPEND: start\n");
- wm9712_suspend();
--#ifdef CONFIG_TOSA_TS
-- tosa_ts_suspend();
--#endif /* CONFIG_TOSA_TS */
- if ( ac97_audio_state.rd_ref != 0 ) {
- audio_clear_buf(ac97_audio_state.input_stream);
- *ac97_audio_state.input_stream->drcmr = 0;
-@@ -2239,9 +2234,6 @@
- ac97_audio_state.input_stream->dma_ch = err;
- }
- wm9712_resume();
--#ifdef CONFIG_TOSA_TS
-- tosa_ts_resume();
--#endif /* CONFIG_TOSA_TS */
- DEBUG(DBG_L1, "PM_RESUME: done\n");
- break;
- }
diff --git a/recipes/linux/openzaurus-pxa27x_2.4.20-rmk2-embedix20050602.bb b/recipes/linux/openzaurus-pxa27x_2.4.20-rmk2-embedix20050602.bb
deleted file mode 100644
index a8e1cca561..0000000000
--- a/recipes/linux/openzaurus-pxa27x_2.4.20-rmk2-embedix20050602.bb
+++ /dev/null
@@ -1,99 +0,0 @@
-DESCRIPTION = "Linux kernel 2.4.20-embedix for Sharp Zaurus SL-C1000 and SL-C3000 devices."
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/openzaurus-pxa27x-2.4.20-rmk2-embedix20050602"
-SECTION = "kernel"
-PV = "2.4.20-rmk2-embedix"
-LICENSE = "GPLv2"
-KV = "2.4.20"
-PR = "r18"
-
-SRC_URI = "http://developer.ezaurus.com/sl_j/source/c3100/20050602/linux-c3100-20050602-rom1_01.tar.bz2;name=kernel \
- file://P01-C3000-clockup_050221.patch;striplevel=2 \
- file://P02-C3000-voltage_050221.patch;striplevel=2 \
- file://P03-C3000-SIGSTOP_FIX_041207.patch;striplevel=2 \
- file://P04-C3000-UNICON_041206.patch;striplevel=2 \
- file://P05-C3000-TSPRESSURE_041207.patch;striplevel=2 \
- file://P06-C3000-WRITETS_041206.patch;striplevel=2 \
- file://P07-C3000-KBDDEV_041206.patch;striplevel=2 \
- file://P08-rtc-mremap-mremap2nd-fix_041213.patch;striplevel=2 \
- file://P09-ext3-isofs-fix_041216.patch;striplevel=2 \
- file://P10-ntfs-fix_041216.patch;striplevel=2 \
- file://P11-bluetooth-mh18_041216.patch;striplevel=2 \
- file://P12-fbcon-fix_041219.patch;striplevel=2 \
- file://P14-lowlatency_041221.patch;striplevel=2 \
- file://P17-bvdd_050222.patch;striplevel=2 \
- file://P18-detailed_battery_050309.patch;striplevel=2 \
- file://P02++050226.patch \
- \
- file://swap-performance.patch \
- file://iw240_we15-6.diff \
- file://iw241_we16-6.diff \
- file://iw249_we17-13.diff \
- file://iw240_we18-5.diff \
- file://bluecard_cs.patch \
- file://compile.patch \
- file://idecs.patch \
- file://logo.patch \
- file://initsh.patch \
- file://disable-pcmcia-probe.patch \
- file://deviceinfo.patch \
- file://corgi-fbcon-logo.patch \
- file://corgi-default-brightness.patch \
- file://1764-1.patch \
- file://armdeffix.patch \
- file://add-oz-release-string.patch \
- file://saner-spitz-keymap.patch \
- file://defconfig-${MACHINE} "
-# Breaks compilation for now, needs to be fixed
-# SRC_URI += "file://CPAR050218.patch"
-
-S = "${WORKDIR}/linux"
-
-inherit kernel
-
-#
-# Create the kernel command line. CMDLINE_CONSOLE is set through kernel.oeclass.
-#
-CMDLINE_MTDPARTS_spitz = "mtdparts=sharpsl-nand:7168k@0k(smf),5120k@7168k(root),-(home) jffs2_orphaned_inodes=delete"
-CMDLINE_MTDPARTS_akita = "mtdparts=sharpsl-nand:7168k@0k(smf),59392k@7168k(root),-(home) jffs2_orphaned_inodes=delete"
-CMDLINE_MTDPARTS_borzoi = "mtdparts=sharpsl-nand:7168k@0k(smf),32768k@7168k(root),-(home) jffs2_orphaned_inodes=delete"
-# CMDLINE_INIT = "init=bin/busybox ash"
-CMDLINE_INIT = ""
-CMDLINE_SHARP_spitz = "RTC_RESET=1 EQUIPMENT=4 LOGOLANG=1 DEFYEAR=2005 LOGO=1 LAUNCH=q"
-CMDLINE_SHARP_akita = "EQUIPMENT=0 LOGOLANG=1 DEFYEAR=2006 LOGO=1 LAUNCH=q"
-CMDLINE_SHARP_borzoi = "EQUIPMENT=4 LOGOLANG=1 DEFYEAR=2006 LOGO=1 LAUNCH=q"
-CMDLINE_ROOT = "root=/dev/mtdblock2"
-# Caution: ttyS0 doesn't seem to work for 2.4.20, so it's either NULL or tty1
-CMDLINE_CONSOLE = "quiet tty1"
-CMDLINE = "${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_MTDPARTS} ${CMDLINE_SHARP} ${CMDLINE_INIT}"
-
-#
-# Compensate for sucky bootloader on all Sharp Zaurus models
-#
-ALLOW_EMPTY = "1"
-FILES_kernel-image = ""
-EXTRA_OEMAKE = "OPENZAURUS_RELEASE=-${DISTRO_VERSION}"
-KERNEL_CCSUFFIX = "-2.95"
-KERNEL_LDSUFFIX = "-2.11.2"
-COMPATIBLE_HOST = "arm.*-linux"
-
-# For these old 2.4 kernels we override in sharprom-compatible.conf
-#COMPATIBLE_MACHINE = "(akita|spitz|borzoi)"
-COMPATIBLE_MACHINE = "none"
-
-PARALLEL_MAKE = ""
-
-#
-# autoload modules
-#
-module_conf_usbdmonitor = "alias usbd0 usbdmonitor"
-module_conf_pxa27x_bi = "below pxa27x_bi net_fd usbdcore "
-module_autoload_pxa27x_bi = "pxa27x_bi"
-module_autoload_usb_ohci_pxa27x = "usb_ohci_pxa27x"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/defconfig-${MACHINE} ${S}/.config || die "No default configuration for ${MACHINE} available."
- echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
-}
-
-SRC_URI[kernel.md5sum] = "cdd92f6ecffc4ecce4ea6194b789716e"
-SRC_URI[kernel.sha256sum] = "224a81da20b793c003f3d8e9abae7d4abc92320c956f0b5ed346430369772fed"
diff --git a/recipes/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.bb b/recipes/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.bb
deleted file mode 100644
index e94183aa57..0000000000
--- a/recipes/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
-
diff --git a/recipes/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc b/recipes/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
deleted file mode 100644
index 9e382e2e64..0000000000
--- a/recipes/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
+++ /dev/null
@@ -1,124 +0,0 @@
-DESCRIPTION = "Linux kernel for OpenZaurus PXA processor based devices."
-SECTION = "kernel"
-LICENSE = "GPLv2"
-PV = "2.4.18-rmk7-pxa3-embedix"
-PR = "r46"
-KV = "2.4.18"
-RMKV = "7"
-PXAV = "3"
-SHARPV = "20031107"
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/openzaurus-pxa-${KV}-rmk${RMKV}-pxa${PXAV}-embedix${SHARPV}"
-
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.4/linux-${KV}.tar.bz2;name=kernel \
- ftp://ftp.linux.org.uk/pub/armlinux/source/kernel-patches/v2.4/patch-${KV}-rmk${RMKV}.gz;apply=yes;name=patch1 \
- ftp://source.mvista.com/pub/xscale/pxa/diff-${KV}-rmk${RMKV}-pxa${PXAV}.gz;apply=yes;name=patch2 \
- http://openzaurus.org/mirror/linux-${PV}-slc860-${SHARPV}-rom1_10.bz2;apply=yes;name=patch3 \
- file://piro.patch \
- file://swap-performance.patch \
- file://bluetooth-2.4.18-mh15.patch \
- file://iw_handlers.w13-5.diff \
- file://iw_handlers.w14-5.diff \
- file://iw240_we15-6.diff \
- file://iw249_we16-6.diff \
- file://iw249_we17-13.diff \
- file://iw240_we18-5.diff \
- file://bt950_cs.patch \
- file://bluecard_cs.patch \
- file://sharpsl_battery.patch \
- file://buffered-fbmem.patch \
- file://enable-sysrq.patch \
- file://compile.patch \
- file://idecs.patch \
- file://logo.patch \
- file://initsh.patch \
- file://keyboard-ctrl+alt.patch \
- file://keymap-more-sane.patch \
- file://mkdep.patch \
- file://disable-pcmcia-probe.patch \
- file://deviceinfo.patch \
- file://linux-2.4.18-list_move.patch \
- file://tosa_map.patch \
- file://tosa_ts.patch \
- file://corgi-fbcon-logo.patch \
- file://corgi-default-brightness.patch \
- http://www.openswan.org/download/old/openswan-2.2.0-kernel-2.4-klips.patch.gz;name=patch4 \
- file://1764-1.patch \
- file://module_licence.patch \
- file://ir240_sys_max_tx-2.diff \
- file://ir241_qos_param-2.diff \
- http://us1.samba.org/samba/ftp/cifs-cvs/cifs-1.20c-2.4.tar.gz;name=patch5 \
- file://fix_tosa_apm.patch \
- file://dumb-hack-for-wlan-ng.patch \
- file://unb0rk-apm.patch \
- file://apm_arrowkey.patch \
- file://defconfig-${MACHINE} "
-
-SRC_URI_append_poodle += " file://smallfonts.diff"
-SRC_URI_append_poodle255 += " file://smallfonts.diff"
-SRC_URI_append_tosa = " file://tosa-power-key-off.patch"
-
-S = "${WORKDIR}/linux"
-
-inherit kernel
-
-#
-# Create the kernel command line. CMDLINE_CONSOLE is set through kernel.oeclass.
-#
-CMDLINE_MTDPARTS_poodle = "mtdparts=sharpsl-nand:7168k@0k(smf),22528k@7168k(root),-(home)"
-CMDLINE_MTDPARTS_poodle255 = "mtdparts=sharpsl-nand:7168k@0k(smf),22528k@7168k(root),-(home)"
-CMDLINE_MTDPARTS_corgi = "mtdparts=sharpsl-nand:7168k@0k(smf),25600k@7168k(root),-(home)"
-CMDLINE_MTDPARTS_shepherd = "mtdparts=sharpsl-nand:7168k@0k(smf),25600k@7168k(root),-(home)"
-CMDLINE_MTDPARTS_husky = "mtdparts=sharpsl-nand:7168k@0k(smf),54272k@7168k(root),-(home)"
-CMDLINE_MTDPARTS_tosa = "mtdparts=sharpsl-nand:7168k@0k(smf),28672k@7168k(root),-(home) EQUIPMENT=2"
-
-CMDLINE_ROOT = "root=/dev/mtdblock2 rootfstype=jffs2 jffs2_orphaned_inodes=delete"
-# CMDLINE_INIT = "init=/bin/busybox ash"
-CMDLINE_INIT = " "
-CMDLINE = "${CMDLINE_MTDPARTS} ${CMDLINE_ROOT} ${CMDLINE_CONSOLE} ${CMDLINE_INIT}"
-
-#
-# Compensate for sucky bootloader on all Sharp Zaurus models
-#
-ALLOW_EMPTY = "1"
-FILES_kernel-image = ""
-EXTRA_OEMAKE = " EMBEDIXRELEASE=-${DISTRO_VERSION}"
-KERNEL_CCSUFFIX = "-2.95"
-KERNEL_LDSUFFIX = "-2.11.2"
-COMPATIBLE_HOST = "arm.*-linux"
-
-# For these old 2.4 kernels we override in sharprom-compatible.conf
-#COMPATIBLE_MACHINE = "(poodle|corgi|shepherd|husky|poodle255|tosa)"
-COMPATIBLE_MACHINE = "none"
-
-PARALLEL_MAKE = ""
-
-#
-# autoload modules
-#
-module_conf_usbdmonitor = "alias usbd0 usbdmonitor"
-module_conf_pxa_bi = "below pxa_bi net_fd usbdcore "
-module_autoload_pxa_bi = "pxa_bi"
-
-do_configure_prepend() {
- patch -p1 < cifs_24.patch
- install -m 0644 ${WORKDIR}/defconfig-${MACHINE} ${S}/.config || die "No default configuration for ${MACHINE} available."
- echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
-}
-
-PACKAGE_ARCH_corgi = "c7x0"
-PACKAGE_ARCH_shepherd = "c7x0"
-PACKAGE_ARCH_husky = "c7x0"
-
-SRC_URI[kernel.md5sum] = "ad92859baaa837847b34d842b9f39d38"
-SRC_URI[kernel.sha256sum] = "90d9a45ba395f742050f791b6944f6263d0ab03c84aad8a32967ca866906490e"
-SRC_URI[patch1.md5sum] = "90c1cfbc47c7069a14a5cb584a5ada9a"
-SRC_URI[patch1.sha256sum] = "8cbde563f5b77a7cf5ab900e7e627c493c1e36948b2c021b4738de82ca686d00"
-SRC_URI[patch2.md5sum] = "249c7a63a506d302c96be26517a70298"
-SRC_URI[patch2.sha256sum] = "ca569dfa1e5cfd2f4134f3f61f667bcfab5e15c7d43c8a6e835d384ac5b31a07"
-SRC_URI[patch3.md5sum] = "c90b4f5cabe9c0dfd3a25d9228c97b43"
-SRC_URI[patch3.sha256sum] = "b0d64fb17e52fb0df38c7dcbe14e21e1f6601ba21f805e17dd6eea636d6fd28b"
-SRC_URI[patch4.md5sum] = "5c54040bba6fea2bfb47df01056e953f"
-SRC_URI[patch4.sha256sum] = "d35213dc854f1e1a08512154c7a92fb94d9f0506cc5107f8b2f248412679fb53"
-SRC_URI[patch5.md5sum] = "f3b96692f679239488de30f2bd896825"
-SRC_URI[patch5.sha256sum] = "885eda0bbe68018b5770437e542473508f88205bb09cbfde7fc6e0c31f5a6f83"
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/1764-1.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/1764-1.patch
deleted file mode 100644
index 0b660f3521..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/1764-1.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-__arch_strncpy_from_user needs to be exported if you build the framebuffer console driver as a module.
-
-Cheers,
-
-Ian.
-
---- linux-2.6-bkpxa.orig/arch/arm/kernel/armksyms.c 2004-02-27 10:35:29.000000000 +0000
-+++ linux-2.6-bkpxa/arch/arm/kernel/armksyms.c 2004-02-27 14:55:02.000000000 +0000
-@@ -187,6 +187,7 @@
- EXPORT_SYMBOL(__arch_copy_to_user);
- EXPORT_SYMBOL(__arch_clear_user);
- EXPORT_SYMBOL(__arch_strnlen_user);
-+EXPORT_SYMBOL(__arch_strncpy_from_user);
-
- /* consistent area handling */
- EXPORT_SYMBOL(consistent_alloc);
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/battery.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/battery.patch
deleted file mode 100644
index 1912b33328..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/battery.patch
+++ /dev/null
@@ -1,326 +0,0 @@
-
---- linux/arch/arm/mach-sa1100/collie_battery.c Tue Jul 22 02:24:32 2003
-+++ linux/arch/arm/mach-sa1100/collie_battery.c Tue Jul 22 03:07:56 2003
-@@ -14,10 +14,11 @@
- * 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.
- *
- * ChangeLog:
-+ * Nov 2002 Dietz Proepper: improved battery status.
- * 12-Nov-2001 Lineo Japan, Inc.
- * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18
- * 29-Jan-2003 Sharp Corporation modify for new QT I/F
- *
- */
-@@ -79,10 +80,11 @@ int collie_read_BackBattery(void);
- int collie_read_Temp(void);
- int collie_check_temp(void);
- int collie_check_voltage(void);
- static void collie_charge_on(void);
- static void collie_charge_off(void);
-+static void do_main_battery(void);
- int set_led_status(int which,int status);
- int GetMainLevel( int Volt );
- int GetBackLevel( int Volt );
- int collie_get_main_battery(void);
- unsigned short GetBackupBatteryAD(void);
-@@ -91,40 +93,35 @@ int suspend_collie_read_Temp(void);
- /*** extern ***********************************************************************/
- extern u32 apm_wakeup_src_mask;
- extern int counter_step_contrast;
-
-
--/*** gloabal variables ************************************************************/
--int charge_status = 0; /* charge status 1 : charge 0: not charge */
--
--typedef struct BatteryThresh {
-- int high;
-- int low;
-- int verylow;
--} BATTERY_THRESH;
-+/* defines */
-+#define COLLIE_BATTERY_STATUS_HIGH APM_BATTERY_STATUS_HIGH
-+#define COLLIE_BATTERY_STATUS_LOW APM_BATTERY_STATUS_LOW
-+#define COLLIE_BATTERY_STATUS_VERYLOW APM_BATTERY_STATUS_VERY_LOW
-+#define COLLIE_BATTERY_STATUS_CRITICAL APM_BATTERY_STATUS_CRITICAL
-
-+/*** gloabal variables ************************************************************/
-+int charge_status = 0; /* charge status 1 : charge 0: not charge */
-
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0) || \
-- defined(CONFIG_COLLIE_TR1) || defined(CONFIG_COLLIE_DEV)
--BATTERY_THRESH collie_main_battery_thresh_fl = {
-- 368, 358, 356
--};
--
--BATTERY_THRESH collie_main_battery_thresh_nofl = {
-- 378, 364, 362
--};
--#else
--BATTERY_THRESH collie_main_battery_thresh_fl = {
-- 368, 358, 356
--};
--
--BATTERY_THRESH collie_main_battery_thresh_nofl = {
-- 378, 365, 363
-+typedef struct {
-+ int voltage_thres[2]; /* 0: nofl 1: fl */
-+ int percent;
-+ int state;
-+} main_battery_thres;
-+
-+#define MAIN_BATTERY_THRES 4
-+
-+main_battery_thres main_batt_thres[MAIN_BATTERY_THRES+2] = {
-+ {{5000, 5000}, 100, COLLIE_BATTERY_STATUS_HIGH }, /* do not remove! */
-+ {{412,408}, 100, COLLIE_BATTERY_STATUS_HIGH},
-+ {{378,368}, 40, COLLIE_BATTERY_STATUS_HIGH},
-+ {{364,358}, 5, COLLIE_BATTERY_STATUS_LOW},
-+ {{362,356}, 1, COLLIE_BATTERY_STATUS_CRITICAL},
-+ {{0, 0}, 1, COLLIE_BATTERY_STATUS_CRITICAL } /* do not remove, too! */
- };
--#endif
--
--
-
- typedef struct ChargeThresh {
- int bar1;
- int bar2;
- int bar3;
-@@ -180,24 +177,18 @@ static struct miscdevice battery_device
- #define GetBackADCtoPower(x) (( 330 * x * 2 ) / 1024 ) // MAX 3.3V
- #define ConvRevise(x) ( ( ad_revise * x ) / 652 )
- #define MAIN_DIFF 50 // 0.5V
- #define DIFF_CNT ( 3 - 1 )
-
--#define COLLIE_BATTERY_STATUS_HIGH APM_BATTERY_STATUS_HIGH
--#define COLLIE_BATTERY_STATUS_LOW APM_BATTERY_STATUS_LOW
--#define COLLIE_BATTERY_STATUS_VERYLOW APM_BATTERY_STATUS_VERY_LOW
--#define COLLIE_BATTERY_STATUS_CRITICAL APM_BATTERY_STATUS_CRITICAL
--
- #define COLLIE_AC_LINE_STATUS (!( GPLR & GPIO_AC_IN ) ? APM_AC_OFFLINE : APM_AC_ONLINE)
-
--
- #define COLLIE_PM_TICK ( 1000 / 10 ) // 1sec
- #define COLLIE_APO_TICKTIME ( 5 * COLLIE_PM_TICK ) // 5sec
- #define COLLIE_LPO_TICKTIME COLLIE_APO_TICKTIME
- #define COLLIE_APO_DEFAULT ( ( 3 * 60 ) * COLLIE_PM_TICK ) // 3 min
- #define COLLIE_LPO_DEFAULT ( 20 * COLLIE_PM_TICK ) // 20 sec
--#define COLLIE_MAIN_GOOD_COUNT ( 10*60 / ( COLLIE_APO_TICKTIME / COLLIE_PM_TICK ) )
-+#define COLLIE_MAIN_GOOD_COUNT ( 1*60 / ( COLLIE_APO_TICKTIME / COLLIE_PM_TICK ) )
- #define COLLIE_MAIN_NOGOOD_COUNT ( 1*60 / ( COLLIE_APO_TICKTIME / COLLIE_PM_TICK ) )
-
- #define COLLIE_BACKUP_BATTERY_CK_TIME ( 10*60*1*100 ) // 10min
- #define COLLIE_BACKUP_BATTERY_LOW ( 190 )
-
-@@ -212,10 +203,11 @@ unsigned int LPOCntWk = 0;
- static DECLARE_WAIT_QUEUE_HEAD(queue);
- static int msglevel;
-
- int collie_backup_battery = COLLIE_BATTERY_STATUS_HIGH;
- int collie_main_battery = COLLIE_BATTERY_STATUS_HIGH;
-+int collie_main_battery_percent = 100;
- int collie_main_charge_battery = 100;
- int collie_ac_status = APM_AC_OFFLINE;
- int ad_revise = 0;
-
- static int MainCntWk = COLLIE_MAIN_GOOD_COUNT;
-@@ -229,10 +221,11 @@ static struct pm_dev *battery_pm_dev; /
-
- static int battery_off_flag = 0; /* charge : suspend while get adc */
- static int collie_charge_temp = 973;
- static int collie_charge_volt = 465; /* charge : check charge 3.0V */
- static int charge_off_mode = 0; /* charge : check volt or non */
-+static int collie_main_battery_voltage = 400;
-
- static DECLARE_WAIT_QUEUE_HEAD(wq_on);
- static DECLARE_WAIT_QUEUE_HEAD(wq_off);
- #if 1 // 2003.1.29
- static DECLARE_WAIT_QUEUE_HEAD(battery_waitqueue);
-@@ -276,28 +269,11 @@ int collie_apm_get_power_status(u_char *
- }
- collie_battery_status = *battery_status;
- #endif
-
- // main battery status to percentage
-- switch (*battery_status)
-- {
-- case COLLIE_BATTERY_STATUS_HIGH:
-- *battery_percentage = 100;
-- break;
-- case COLLIE_BATTERY_STATUS_LOW:
-- *battery_percentage = 40;
-- break;
-- case COLLIE_BATTERY_STATUS_VERYLOW:
-- *battery_percentage = 5;
-- break;
-- case COLLIE_BATTERY_STATUS_CRITICAL:
-- *battery_percentage = 1;
-- break;
-- default:
-- *battery_percentage = 100;
-- break;
-- }
-+ *battery_percentage = collie_main_battery_percent;
-
- if ( *ac_line_status == APM_AC_ONLINE )
- *battery_percentage = 100;
-
- // good or ac in --> GOOD_COUNT
-@@ -529,12 +505,13 @@ int collie_get_main_battery(void)
- voltage = collie_read_MainBattery();
- if ( voltage > 0 ) break;
- if ( i++ > 5 ) { voltage = 380; break; }
- }
-
-- collie_main_battery = GetMainLevel(GetMainADCtoPower(voltage));
-- collie_main_charge_battery = GetMainChargePercent(GetMainADCtoPower(voltage));
-+ collie_main_battery_voltage = GetMainADCtoPower(voltage);
-+ do_main_battery();
-+ collie_main_charge_battery = GetMainChargePercent(collie_main_battery_voltage);
-
- DPRINTK2("charge percent = %d ( at %d ) \n",collie_main_charge_battery,jiffies);
-
- DPRINTK(" get Main battery status %d\n",collie_main_battery);
-
-@@ -562,36 +539,36 @@ int GetMainChargePercent( int Volt )
- } else {
- return 5;
- }
- }
-
--int GetMainLevel( int Volt )
-+static void do_main_battery()
- {
--
-- DPRINTK(" volt = %d \n",Volt);
--
--
-- if ( counter_step_contrast ) {
-- if ( Volt > collie_main_battery_thresh_fl.high )
-- return COLLIE_BATTERY_STATUS_HIGH;
-- else if ( Volt > collie_main_battery_thresh_fl.low )
-- return COLLIE_BATTERY_STATUS_LOW;
-- else if ( Volt > collie_main_battery_thresh_fl.verylow )
-- return COLLIE_BATTERY_STATUS_VERYLOW;
-- else
-- return COLLIE_BATTERY_STATUS_CRITICAL;
-- } else {
-- if ( Volt > collie_main_battery_thresh_nofl.high )
-- return COLLIE_BATTERY_STATUS_HIGH;
-- else if ( Volt > collie_main_battery_thresh_nofl.low )
-- return COLLIE_BATTERY_STATUS_LOW;
-- else if ( Volt > collie_main_battery_thresh_nofl.verylow )
-- return COLLIE_BATTERY_STATUS_VERYLOW;
-- else
-- return COLLIE_BATTERY_STATUS_CRITICAL;
-- }
--
-+ int i = MAIN_BATTERY_THRES;
-+ int fl = (counter_step_contrast)? 1 : 0;
-+
-+ while ( i > 0 &&
-+ ( collie_main_battery_voltage > main_batt_thres[i].voltage_thres[fl] ) )
-+ i--;
-+ /* i is now between 0 and MAIN_BATTERY_THRES. That means
-+ * we can safely access main_batt_thres[i] and
-+ * main_batt_thres[i+1] */
-+
-+ collie_main_battery = main_batt_thres[i].state;
-+ { /* perhaps we should put that deltas to our table, too? */
-+ long deltav = main_batt_thres[i].voltage_thres[fl] -
-+ main_batt_thres[i+1].voltage_thres[fl];
-+ long deltap = main_batt_thres[i].percent -
-+ main_batt_thres[i+1].percent;
-+
-+ collie_main_battery_percent = /* (1) */
-+ main_batt_thres[i+1].percent +
-+ deltap * (collie_main_battery_voltage -
-+ main_batt_thres[i+1].voltage_thres[fl]) /
-+ deltav;
-+ DPRINTK("Battery stuff: v=%i i=%i , dv=%li , dp=%li , p=%i",collie_main_battery_voltage , i, deltav, deltap, collie_main_battery_percent );
-+ }
- }
-
-
- int GetBackLevel( int Volt )
- {
-@@ -834,20 +811,18 @@ unsigned short chkFatalBatt(void)
- GEDR = GPIO_CO;
- // printk("CO = %x\n",GEDR&GPIO_CO);
- }
-
-
-- if ( volt < collie_main_battery_thresh_nofl.verylow )
-+ if ( volt < main_batt_thres[MAIN_BATTERY_THRES].voltage_thres[0] )
- return 0;
- else
- return 1;
- #endif
- }
-
-
--
--
- int suspend_collie_check_temp(void)
- {
- unsigned short temp , i = 0;
-
- while(1) {
-@@ -1032,10 +1007,11 @@ struct proc_dir_entry *proc_batt;
- typedef struct collie_battery_entry {
- int* addr;
- int def_value;
- char* name;
- char* description;
-+ char readonly;
- unsigned short low_ino;
- } collie_battery_entry_t;
-
- #if 1 // 2003.1.29
- static collie_battery_entry_t collie_battery_params[] = {
-@@ -1044,11 +1020,13 @@ static collie_battery_entry_t collie_bat
- { &collie_change_battery_status , 0 , "chg_status", "Change status" }
- };
- #else
- static collie_battery_entry_t collie_battery_params[] = {
- /* { addr, def_value, name, description }*/
-- { &msglevel, 0, "msglevel", "debug message output level" }
-+/* { &msglevel, 0, "msglevel", "debug message output level" } */
-+ { &msglevel, 0, "msglevel", "debug message output level", 0 },
-+ { &collie_main_battery_voltage, -1, "main_voltage", "main battery voltage", 1 }
- };
- #endif
- #define NUM_OF_BATTERY_ENTRY (sizeof(collie_battery_params)/sizeof(collie_battery_entry_t))
-
- static ssize_t collie_battery_read_params(struct file *file, char *buf,
-@@ -1069,11 +1047,12 @@ static ssize_t collie_battery_read_param
- }
- }
- if (current_param==NULL) {
- return -EINVAL;
- }
-- count = sprintf(outputbuf, "0x%08X\n",
-+// count = sprintf(outputbuf, "0x%08X\n",
-+ count = sprintf(outputbuf, "%04i\n",
- *((volatile Word *) current_param->addr));
- *ppos += count;
- if (count>nbytes) /* Assume output can be read at one time */
- return -EINVAL;
- if (copy_to_user(buf, outputbuf, count))
-@@ -1094,11 +1073,12 @@ static ssize_t collie_battery_write_para
- if(collie_battery_params[i].low_ino==i_ino) {
- current_param = &collie_battery_params[i];
- break;
- }
- }
-- if (current_param==NULL) {
-+// if (current_param==NULL) {
-+ if (current_param==NULL || current_param->readonly) {
- return -EINVAL;
- }
-
- param = simple_strtoul(buf,&endp,0);
- if (param == -1) {
-
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/bluetooth-2.4.18-mh15.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/bluetooth-2.4.18-mh15.patch
deleted file mode 100644
index d6575dd604..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/bluetooth-2.4.18-mh15.patch
+++ /dev/null
@@ -1,32759 +0,0 @@
-diff -urN linux-2.4.18/arch/alpha/config.in linux-2.4.18-mh15/arch/alpha/config.in
---- linux-2.4.18/arch/alpha/config.in 2001-11-21 00:49:31.000000000 +0100
-+++ linux-2.4.18-mh15/arch/alpha/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -371,9 +371,7 @@
- source drivers/usb/Config.in
- source drivers/input/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/arm/config.in linux-2.4.18-mh15/arch/arm/config.in
---- linux-2.4.18/arch/arm/config.in 2001-11-09 22:58:02.000000000 +0100
-+++ linux-2.4.18-mh15/arch/arm/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -584,9 +584,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/i386/config.in linux-2.4.18-mh15/arch/i386/config.in
---- linux-2.4.18/arch/i386/config.in 2002-02-25 20:37:52.000000000 +0100
-+++ linux-2.4.18-mh15/arch/i386/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -407,9 +407,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/ppc/config.in linux-2.4.18-mh15/arch/ppc/config.in
---- linux-2.4.18/arch/ppc/config.in 2002-02-25 20:37:55.000000000 +0100
-+++ linux-2.4.18-mh15/arch/ppc/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -389,9 +389,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/sparc/config.in linux-2.4.18-mh15/arch/sparc/config.in
---- linux-2.4.18/arch/sparc/config.in 2001-06-12 04:15:27.000000000 +0200
-+++ linux-2.4.18-mh15/arch/sparc/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -251,9 +251,7 @@
-
- source fs/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Watchdog'
-diff -urN linux-2.4.18/arch/sparc64/config.in linux-2.4.18-mh15/arch/sparc64/config.in
---- linux-2.4.18/arch/sparc64/config.in 2001-12-21 18:41:53.000000000 +0100
-+++ linux-2.4.18-mh15/arch/sparc64/config.in 2004-08-01 16:26:22.000000000 +0200
-@@ -283,9 +283,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Watchdog'
-diff -urN linux-2.4.18/arch/sparc64/kernel/ioctl32.c linux-2.4.18-mh15/arch/sparc64/kernel/ioctl32.c
---- linux-2.4.18/arch/sparc64/kernel/ioctl32.c 2002-02-25 20:37:56.000000000 +0100
-+++ linux-2.4.18-mh15/arch/sparc64/kernel/ioctl32.c 2004-08-01 16:26:23.000000000 +0200
-@@ -92,6 +92,7 @@
-
- #include <net/bluetooth/bluetooth.h>
- #include <net/bluetooth/hci.h>
-+#include <net/bluetooth/rfcomm.h>
-
- #include <linux/usb.h>
- #include <linux/usbdevice_fs.h>
-@@ -3822,6 +3823,15 @@
- return err;
- }
-
-+/* Bluetooth ioctls */
-+#define HCIUARTSETPROTO _IOW('U', 200, int)
-+#define HCIUARTGETPROTO _IOR('U', 201, int)
-+
-+#define BNEPCONNADD _IOW('B', 200, int)
-+#define BNEPCONNDEL _IOW('B', 201, int)
-+#define BNEPGETCONNLIST _IOR('B', 210, int)
-+#define BNEPGETCONNINFO _IOR('B', 211, int)
-+
- struct mtd_oob_buf32 {
- u32 start;
- u32 length;
-@@ -3878,6 +3888,16 @@
- return ((0 == ret) ? 0 : -EFAULT);
- }
-
-+#define CMTPCONNADD _IOW('C', 200, int)
-+#define CMTPCONNDEL _IOW('C', 201, int)
-+#define CMTPGETCONNLIST _IOR('C', 210, int)
-+#define CMTPGETCONNINFO _IOR('C', 211, int)
-+
-+#define HIDPCONNADD _IOW('H', 200, int)
-+#define HIDPCONNDEL _IOW('H', 201, int)
-+#define HIDPGETCONNLIST _IOR('H', 210, int)
-+#define HIDPGETCONNINFO _IOR('H', 211, int)
-+
- struct ioctl_trans {
- unsigned int cmd;
- unsigned int handler;
-@@ -4540,6 +4560,25 @@
- COMPATIBLE_IOCTL(HCISETSCAN)
- COMPATIBLE_IOCTL(HCISETAUTH)
- COMPATIBLE_IOCTL(HCIINQUIRY)
-+COMPATIBLE_IOCTL(HCIUARTSETPROTO)
-+COMPATIBLE_IOCTL(HCIUARTGETPROTO)
-+COMPATIBLE_IOCTL(RFCOMMCREATEDEV)
-+COMPATIBLE_IOCTL(RFCOMMRELEASEDEV)
-+COMPATIBLE_IOCTL(RFCOMMGETDEVLIST)
-+COMPATIBLE_IOCTL(RFCOMMGETDEVINFO)
-+COMPATIBLE_IOCTL(RFCOMMSTEALDLC)
-+COMPATIBLE_IOCTL(BNEPCONNADD)
-+COMPATIBLE_IOCTL(BNEPCONNDEL)
-+COMPATIBLE_IOCTL(BNEPGETCONNLIST)
-+COMPATIBLE_IOCTL(BNEPGETCONNINFO)
-+COMPATIBLE_IOCTL(CMTPCONNADD)
-+COMPATIBLE_IOCTL(CMTPCONNDEL)
-+COMPATIBLE_IOCTL(CMTPGETCONNLIST)
-+COMPATIBLE_IOCTL(CMTPGETCONNINFO)
-+COMPATIBLE_IOCTL(HIDPCONNADD)
-+COMPATIBLE_IOCTL(HIDPCONNDEL)
-+COMPATIBLE_IOCTL(HIDPGETCONNLIST)
-+COMPATIBLE_IOCTL(HIDPGETCONNINFO)
- /* Misc. */
- COMPATIBLE_IOCTL(0x41545900) /* ATYIO_CLKR */
- COMPATIBLE_IOCTL(0x41545901) /* ATYIO_CLKW */
-diff -urN linux-2.4.18/CREDITS linux-2.4.18-mh15/CREDITS
---- linux-2.4.18/CREDITS 2002-02-25 20:37:50.000000000 +0100
-+++ linux-2.4.18-mh15/CREDITS 2004-08-01 16:26:23.000000000 +0200
-@@ -1317,6 +1317,16 @@
- S: Provo, Utah 84606-5607
- S: USA
-
-+N: Marcel Holtmann
-+E: marcel@holtmann.org
-+W: http://www.holtmann.org
-+D: Maintainer of the Linux Bluetooth Subsystem
-+D: Author and maintainer of the various Bluetooth HCI drivers
-+D: Author and maintainer of the CAPI message transport protocol driver
-+D: Author and maintainer of the Bluetooth HID protocol driver
-+D: Various other Bluetooth related patches, cleanups and fixes
-+S: Germany
-+
- N: Rob W. W. Hooft
- E: hooft@EMBL-Heidelberg.DE
- D: Shared libs for graphics-tools and for the f2c compiler
-@@ -2546,6 +2556,7 @@
- N: Aristeu Sergio Rozanski Filho
- E: aris@conectiva.com.br
- D: Support for EtherExpress 10 ISA (i82595) in eepro driver
-+D: User level driver support for input
- S: Conectiva S.A.
- S: R. Tocantins, 89 - Cristo Rei
- S: 80050-430 - Curitiba - Paraná
-diff -urN linux-2.4.18/Documentation/Configure.help linux-2.4.18-mh15/Documentation/Configure.help
---- linux-2.4.18/Documentation/Configure.help 2002-02-25 20:37:51.000000000 +0100
-+++ linux-2.4.18-mh15/Documentation/Configure.help 2004-08-01 16:26:23.000000000 +0200
-@@ -2824,14 +2824,6 @@
-
- If unsure, say N.
-
--HCI EMU (virtual device) driver
--CONFIG_BLUEZ_HCIEMU
-- Bluetooth Virtual HCI device driver.
-- This driver is required if you want to use HCI Emulation software.
--
-- Say Y here to compile support for Virtual HCI devices into the
-- kernel or say M to compile it as module (hci_usb.o).
--
- # Choice: alphatype
- Alpha system type
- CONFIG_ALPHA_GENERIC
-@@ -11037,6 +11029,12 @@
-
- If unsure, say N.
-
-+Hotplug firmware loading support (EXPERIMENTAL)
-+CONFIG_FW_LOADER
-+ This option is provided for the case where no in-kernel-tree modules require
-+ hotplug firmware loading support, but a module built outside the kernel tree
-+ does.
-+
- Use PCI shared memory for NIC registers
- CONFIG_TULIP_MMIO
- Use PCI shared memory for the NIC registers, rather than going through
-@@ -12896,6 +12894,15 @@
- accessible under char device 13:64+ - /dev/input/eventX in a generic
- way. This is the future ...
-
-+CONFIG_INPUT_UINPUT
-+ Say Y here if you want to support user level drivers for input
-+ subsystem accessible under char device 10:223 - /dev/input/uinput.
-+
-+ This driver is also available as a module ( = code which can be
-+ inserted in and removed from the running kernel whenever you want).
-+ The module will be called uinput.o. If you want to compile it as a
-+ module, say M here and read <file:Documentation/modules.txt>.
-+
- USB Scanner support
- CONFIG_USB_SCANNER
- Say Y here if you want to connect a USB scanner to your computer's
-@@ -19870,19 +19877,22 @@
- Bluetooth can be found at <http://www.bluetooth.com/>.
-
- Linux Bluetooth subsystem consist of several layers:
-- HCI Core (device and connection manager, scheduler)
-- HCI Device drivers (interface to the hardware)
-- L2CAP Module (L2CAP protocol)
-+ BlueZ Core (HCI device and connection manager, scheduler)
-+ HCI Device drivers (Interface to the hardware)
-+ SCO Module (SCO audio links)
-+ L2CAP Module (Logical Link Control and Adaptation Protocol)
-+ RFCOMM Module (RFCOMM Protocol)
-+ BNEP Module (Bluetooth Network Encapsulation Protocol)
-+ CMTP Module (CAPI Message Transport Protocol)
-+ HIDP Module (Human Interface Device Protocol)
-
-- Say Y here to enable Linux Bluetooth support and to build HCI Core
-- layer.
-+ Say Y here to compile Bluetooth support into the kernel or say M to
-+ compile it as module (bluez.o).
-
- To use Linux Bluetooth subsystem, you will need several user-space
- utilities like hciconfig and hcid. These utilities and updates to
- Bluetooth kernel modules are provided in the BlueZ package.
-- For more information, see <http://bluez.sourceforge.net/>.
--
-- If you want to compile HCI Core as module (hci.o) say M here.
-+ For more information, see <http://www.bluez.org/>.
-
- L2CAP protocol support
- CONFIG_BLUEZ_L2CAP
-@@ -19893,15 +19903,96 @@
- Say Y here to compile L2CAP support into the kernel or say M to
- compile it as module (l2cap.o).
-
-+SCO links support
-+CONFIG_BLUEZ_SCO
-+ SCO link provides voice transport over Bluetooth. SCO support is
-+ required for voice applications like Headset and Audio.
-+
-+ Say Y here to compile SCO support into the kernel or say M to
-+ compile it as module (sco.o).
-+
-+RFCOMM protocol support
-+CONFIG_BLUEZ_RFCOMM
-+ RFCOMM provides connection oriented stream transport. RFCOMM
-+ support is required for Dialup Networking, OBEX and other Bluetooth
-+ applications.
-+
-+ Say Y here to compile RFCOMM support into the kernel or say M to
-+ compile it as module (rfcomm.o).
-+
-+RFCOMM TTY emulation support
-+CONFIG_BLUEZ_RFCOMM_TTY
-+ This option enables TTY emulation support for RFCOMM channels.
-+
-+BNEP protocol support
-+CONFIG_BLUEZ_BNEP
-+ BNEP (Bluetooth Network Encapsulation Protocol) is Ethernet
-+ emulation layer on top of Bluetooth. BNEP is required for
-+ Bluetooth PAN (Personal Area Network).
-+
-+ Say Y here to compile BNEP support into the kernel or say M to
-+ compile it as module (bnep.o).
-+
-+BNEP multicast filter support
-+CONFIG_BLUEZ_BNEP_MC_FILTER
-+ This option enables the multicast filter support for BNEP.
-+
-+BNEP protocol filter support
-+CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ This option enables the protocol filter support for BNEP.
-+
-+CMTP protocol support
-+CONFIG_BLUEZ_CMTP
-+ CMTP (CAPI Message Transport Protocol) is a transport layer
-+ for CAPI messages. CMTP is required for the Bluetooth Common
-+ ISDN Access Profile.
-+
-+ Say Y here to compile CMTP support into the kernel or say M to
-+ compile it as module (cmtp.o).
-+
-+HIDP protocol support
-+CONFIG_BLUEZ_HIDP
-+ HIDP (Human Interface Device Protocol) is a transport layer
-+ for HID reports. HIDP is required for the Bluetooth Human
-+ Interface Device Profile.
-+
-+ Say Y here to compile HIDP support into the kernel or say M to
-+ compile it as module (hidp.o).
-+
- HCI UART driver
- CONFIG_BLUEZ_HCIUART
- Bluetooth HCI UART driver.
- This driver is required if you want to use Bluetooth devices with
-- serial port interface.
-+ serial port interface. You will also need this driver if you have
-+ UART based Bluetooth PCMCIA and CF devices like Xircom Credit Card
-+ adapter and BrainBoxes Bluetooth PC Card.
-
- Say Y here to compile support for Bluetooth UART devices into the
- kernel or say M to compile it as module (hci_uart.o).
-
-+HCI UART (H4) protocol support
-+CONFIG_BLUEZ_HCIUART_H4
-+ UART (H4) is serial protocol for communication between Bluetooth
-+ device and host. This protocol is required for most Bluetooth devices
-+ with UART interface, including PCMCIA and CF cards.
-+
-+ Say Y here to compile support for HCI UART (H4) protocol.
-+
-+HCI BCSP protocol support
-+CONFIG_BLUEZ_HCIUART_BCSP
-+ BCSP (BlueCore Serial Protocol) is serial protocol for communication
-+ between Bluetooth device and host. This protocol is required for non
-+ USB Bluetooth devices based on CSR BlueCore chip, including PCMCIA and
-+ CF cards.
-+
-+ Say Y here to compile support for HCI BCSP protocol.
-+
-+HCI BCSP transmit CRC with every BCSP packet
-+CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ If you say Y here, a 16-bit CRC checksum will be transmitted along with
-+ every BCSP (BlueCore Serial Protocol) packet sent to the Bluetooth chip.
-+ This increases reliability, but slightly reduces efficiency.
-+
- HCI USB driver
- CONFIG_BLUEZ_HCIUSB
- Bluetooth HCI USB driver.
-@@ -19911,7 +20002,16 @@
- Say Y here to compile support for Bluetooth USB devices into the
- kernel or say M to compile it as module (hci_usb.o).
-
--HCI VHCI virtual HCI device driver
-+HCI USB SCO (voice) support
-+CONFIG_BLUEZ_HCIUSB_SCO
-+ This option enables the SCO support in the HCI USB driver. You need this
-+ to transmit voice data with your Bluetooth USB device. And your device
-+ must also support sending SCO data over the HCI layer, because some of
-+ them sends the SCO data to an internal PCM adapter.
-+
-+ Say Y here to compile support for HCI SCO data.
-+
-+HCI VHCI Virtual HCI device driver
- CONFIG_BLUEZ_HCIVHCI
- Bluetooth Virtual HCI device driver.
- This driver is required if you want to use HCI Emulation software.
-@@ -19919,6 +20019,63 @@
- Say Y here to compile support for virtual HCI devices into the
- kernel or say M to compile it as module (hci_vhci.o).
-
-+HCI BFUSB device driver
-+CONFIG_BLUEZ_HCIBFUSB
-+ Bluetooth HCI BlueFRITZ! USB driver.
-+ This driver provides support for Bluetooth USB devices with AVM
-+ interface:
-+ AVM BlueFRITZ! USB
-+
-+ Say Y here to compile support for HCI BFUSB devices into the
-+ kernel or say M to compile it as module (bfusb.o).
-+
-+HCI DTL1 (PC Card) device driver
-+CONFIG_BLUEZ_HCIDTL1
-+ Bluetooth HCI DTL1 (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ Nokia DTL1 interface:
-+ Nokia Bluetooth Card
-+ Socket Bluetooth CF Card
-+
-+ Say Y here to compile support for HCI DTL1 devices into the
-+ kernel or say M to compile it as module (dtl1_cs.o).
-+
-+HCI BT3C (PC Card) device driver
-+CONFIG_BLUEZ_HCIBT3C
-+ Bluetooth HCI BT3C (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ 3Com BT3C interface:
-+ 3Com Bluetooth Card (3CRWB6096)
-+ HP Bluetooth Card
-+
-+ Say Y here to compile support for HCI BT3C devices into the
-+ kernel or say M to compile it as module (bt3c_cs.o).
-+
-+HCI BlueCard (PC Card) device driver
-+CONFIG_BLUEZ_HCIBLUECARD
-+ Bluetooth HCI BlueCard (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ Anycom BlueCard interface:
-+ Anycom Bluetooth PC Card
-+ Anycom Bluetooth CF Card
-+
-+ Say Y here to compile support for HCI BlueCard devices into the
-+ kernel or say M to compile it as module (bluecard_cs.o).
-+
-+HCI UART (PC Card) device driver
-+CONFIG_BLUEZ_HCIBTUART
-+ Bluetooth HCI UART (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ an UART interface:
-+ Xircom CreditCard Bluetooth Adapter
-+ Xircom RealPort2 Bluetooth Adapter
-+ Sphinx PICO Card
-+ H-Soft blue+Card
-+ Cyber-blue Compact Flash Card
-+
-+ Say Y here to compile support for HCI UART devices into the
-+ kernel or say M to compile it as module (btuart_cs.o).
-+
- # The following options are for Linux when running on the Hitachi
- # SuperH family of RISC microprocessors.
-
-diff -urN linux-2.4.18/Documentation/devices.txt linux-2.4.18-mh15/Documentation/devices.txt
---- linux-2.4.18/Documentation/devices.txt 2001-11-07 23:46:01.000000000 +0100
-+++ linux-2.4.18-mh15/Documentation/devices.txt 2004-08-01 16:26:23.000000000 +0200
-@@ -419,6 +419,7 @@
- 220 = /dev/mptctl Message passing technology (MPT) control
- 221 = /dev/mvista/hssdsi Montavista PICMG hot swap system driver
- 222 = /dev/mvista/hasi Montavista PICMG high availability
-+ 223 = /dev/input/uinput User level driver support for input
- 240-255 Reserved for local use
-
- 11 char Raw keyboard device
-diff -urN linux-2.4.18/Documentation/firmware_class/firmware_sample_driver.c linux-2.4.18-mh15/Documentation/firmware_class/firmware_sample_driver.c
---- linux-2.4.18/Documentation/firmware_class/firmware_sample_driver.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/Documentation/firmware_class/firmware_sample_driver.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,121 @@
-+/*
-+ * firmware_sample_driver.c -
-+ *
-+ * Copyright (c) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+ *
-+ * Sample code on how to use request_firmware() from drivers.
-+ *
-+ * Note that register_firmware() is currently useless.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/string.h>
-+
-+#include "linux/firmware.h"
-+
-+#define WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+char __init inkernel_firmware[] = "let's say that this is firmware\n";
-+#endif
-+
-+static char ghost_device[] = "ghost0";
-+
-+static void sample_firmware_load(char *firmware, int size)
-+{
-+ u8 buf[size+1];
-+ memcpy(buf, firmware, size);
-+ buf[size] = '\0';
-+ printk("firmware_sample_driver: firmware: %s\n", buf);
-+}
-+
-+static void sample_probe_default(void)
-+{
-+ /* uses the default method to get the firmware */
-+ const struct firmware *fw_entry;
-+ printk("firmware_sample_driver: a ghost device got inserted :)\n");
-+
-+ if(request_firmware(&fw_entry, "sample_driver_fw", ghost_device)!=0)
-+ {
-+ printk(KERN_ERR
-+ "firmware_sample_driver: Firmware not available\n");
-+ return;
-+ }
-+
-+ sample_firmware_load(fw_entry->data, fw_entry->size);
-+
-+ release_firmware(fw_entry);
-+
-+ /* finish setting up the device */
-+}
-+static void sample_probe_specific(void)
-+{
-+ /* Uses some specific hotplug support to get the firmware from
-+ * userspace directly into the hardware, or via some sysfs file */
-+
-+ /* NOTE: This currently doesn't work */
-+
-+ printk("firmware_sample_driver: a ghost device got inserted :)\n");
-+
-+ if(request_firmware(NULL, "sample_driver_fw", ghost_device)!=0)
-+ {
-+ printk(KERN_ERR
-+ "firmware_sample_driver: Firmware load failed\n");
-+ return;
-+ }
-+
-+ /* request_firmware blocks until userspace finished, so at
-+ * this point the firmware should be already in the device */
-+
-+ /* finish setting up the device */
-+}
-+static void sample_probe_async_cont(const struct firmware *fw, void *context)
-+{
-+ if(!fw){
-+ printk(KERN_ERR
-+ "firmware_sample_driver: firmware load failed\n");
-+ return;
-+ }
-+
-+ printk("firmware_sample_driver: device pointer \"%s\"\n",
-+ (char *)context);
-+ sample_firmware_load(fw->data, fw->size);
-+}
-+static void sample_probe_async(void)
-+{
-+ /* Let's say that I can't sleep */
-+ int error;
-+ error = request_firmware_nowait (THIS_MODULE,
-+ "sample_driver_fw", ghost_device,
-+ "my device pointer",
-+ sample_probe_async_cont);
-+ if(error){
-+ printk(KERN_ERR
-+ "firmware_sample_driver:"
-+ " request_firmware_nowait failed\n");
-+ }
-+}
-+
-+static int sample_init(void)
-+{
-+#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+ register_firmware("sample_driver_fw", inkernel_firmware,
-+ sizeof(inkernel_firmware));
-+#endif
-+ /* since there is no real hardware insertion I just call the
-+ * sample probe functions here */
-+ sample_probe_specific();
-+ sample_probe_default();
-+ sample_probe_async();
-+ return 0;
-+}
-+static void __exit sample_exit(void)
-+{
-+}
-+
-+module_init (sample_init);
-+module_exit (sample_exit);
-+
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/Documentation/firmware_class/hotplug-script linux-2.4.18-mh15/Documentation/firmware_class/hotplug-script
---- linux-2.4.18/Documentation/firmware_class/hotplug-script 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/Documentation/firmware_class/hotplug-script 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,16 @@
-+#!/bin/sh
-+
-+# Simple hotplug script sample:
-+#
-+# Both $DEVPATH and $FIRMWARE are already provided in the environment.
-+
-+HOTPLUG_FW_DIR=/usr/lib/hotplug/firmware/
-+
-+echo 1 > /sysfs/$DEVPATH/loading
-+cat $HOTPLUG_FW_DIR/$FIRMWARE > /sysfs/$DEVPATH/data
-+echo 0 > /sysfs/$DEVPATH/loading
-+
-+# To cancel the load in case of error:
-+#
-+# echo -1 > /sysfs/$DEVPATH/loading
-+#
-diff -urN linux-2.4.18/Documentation/firmware_class/README linux-2.4.18-mh15/Documentation/firmware_class/README
---- linux-2.4.18/Documentation/firmware_class/README 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/Documentation/firmware_class/README 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,58 @@
-+
-+ request_firmware() hotplug interface:
-+ ------------------------------------
-+ Copyright (C) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+
-+ Why:
-+ ---
-+
-+ Today, the most extended way to use firmware in the Linux kernel is linking
-+ it statically in a header file. Which has political and technical issues:
-+
-+ 1) Some firmware is not legal to redistribute.
-+ 2) The firmware occupies memory permanently, even though it often is just
-+ used once.
-+ 3) Some people, like the Debian crowd, don't consider some firmware free
-+ enough and remove entire drivers (e.g.: keyspan).
-+
-+ about in-kernel persistence:
-+ ---------------------------
-+ Under some circumstances, as explained below, it would be interesting to keep
-+ firmware images in non-swappable kernel memory or even in the kernel image
-+ (probably within initramfs).
-+
-+ Note that this functionality has not been implemented.
-+
-+ - Why OPTIONAL in-kernel persistence may be a good idea sometimes:
-+
-+ - If the device that needs the firmware is needed to access the
-+ filesystem. When upon some error the device has to be reset and the
-+ firmware reloaded, it won't be possible to get it from userspace.
-+ e.g.:
-+ - A diskless client with a network card that needs firmware.
-+ - The filesystem is stored in a disk behind an scsi device
-+ that needs firmware.
-+ - Replacing buggy DSDT/SSDT ACPI tables on boot.
-+ Note: this would require the persistent objects to be included
-+ within the kernel image, probably within initramfs.
-+
-+ And the same device can be needed to access the filesystem or not depending
-+ on the setup, so I think that the choice on what firmware to make
-+ persistent should be left to userspace.
-+
-+ - Why register_firmware()+__init can be useful:
-+ - For boot devices needing firmware.
-+ - To make the transition easier:
-+ The firmware can be declared __init and register_firmware()
-+ called on module_init. Then the firmware is warranted to be
-+ there even if "firmware hotplug userspace" is not there yet or
-+ it doesn't yet provide the needed firmware.
-+ Once the firmware is widely available in userspace, it can be
-+ removed from the kernel. Or made optional (CONFIG_.*_FIRMWARE).
-+
-+ In either case, if firmware hotplug support is there, it can move the
-+ firmware out of kernel memory into the real filesystem for later
-+ usage.
-+
-+ Note: If persistence is implemented on top of initramfs,
-+ register_firmware() may not be appropriate.
-diff -urN linux-2.4.18/drivers/bluetooth/bfusb.c linux-2.4.18-mh15/drivers/bluetooth/bfusb.c
---- linux-2.4.18/drivers/bluetooth/bfusb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/bfusb.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,782 @@
-+/*
-+ *
-+ * AVM BlueFRITZ! USB driver
-+ *
-+ * Copyright (C) 2003 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/errno.h>
-+#include <linux/skbuff.h>
-+
-+#include <linux/firmware.h>
-+#include <linux/usb.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+#ifndef CONFIG_BLUEZ_HCIBFUSB_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.1"
-+
-+static struct usb_device_id bfusb_table[] = {
-+ /* AVM BlueFRITZ! USB */
-+ { USB_DEVICE(0x057c, 0x2200) },
-+
-+ { } /* Terminating entry */
-+};
-+
-+MODULE_DEVICE_TABLE(usb, bfusb_table);
-+
-+
-+#define BFUSB_MAX_BLOCK_SIZE 256
-+
-+#define BFUSB_BLOCK_TIMEOUT (HZ * 3)
-+
-+#define BFUSB_TX_PROCESS 1
-+#define BFUSB_TX_WAKEUP 2
-+
-+#define BFUSB_MAX_BULK_TX 1
-+#define BFUSB_MAX_BULK_RX 1
-+
-+struct bfusb {
-+ struct hci_dev hdev;
-+
-+ unsigned long state;
-+
-+ struct usb_device *udev;
-+
-+ unsigned int bulk_in_ep;
-+ unsigned int bulk_out_ep;
-+ unsigned int bulk_pkt_size;
-+
-+ rwlock_t lock;
-+
-+ struct sk_buff_head transmit_q;
-+
-+ struct sk_buff *reassembly;
-+
-+ atomic_t pending_tx;
-+ struct sk_buff_head pending_q;
-+ struct sk_buff_head completed_q;
-+};
-+
-+struct bfusb_scb {
-+ struct urb *urb;
-+};
-+
-+static void bfusb_tx_complete(struct urb *urb);
-+static void bfusb_rx_complete(struct urb *urb);
-+
-+static struct urb *bfusb_get_completed(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+ struct urb *urb = NULL;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ skb = skb_dequeue(&bfusb->completed_q);
-+ if (skb) {
-+ urb = ((struct bfusb_scb *) skb->cb)->urb;
-+ kfree_skb(skb);
-+ }
-+
-+ return urb;
-+}
-+
-+static inline void bfusb_unlink_urbs(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+ struct urb *urb;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ while ((skb = skb_dequeue(&bfusb->pending_q))) {
-+ urb = ((struct bfusb_scb *) skb->cb)->urb;
-+ usb_unlink_urb(urb);
-+ skb_queue_tail(&bfusb->completed_q, skb);
-+ }
-+
-+ while ((urb = bfusb_get_completed(bfusb)))
-+ usb_free_urb(urb);
-+}
-+
-+
-+static int bfusb_send_bulk(struct bfusb *bfusb, struct sk_buff *skb)
-+{
-+ struct bfusb_scb *scb = (void *) skb->cb;
-+ struct urb *urb = bfusb_get_completed(bfusb);
-+ int err, pipe;
-+
-+ BT_DBG("bfusb %p skb %p len %d", bfusb, skb, skb->len);
-+
-+ if (!urb && !(urb = usb_alloc_urb(0)))
-+ return -ENOMEM;
-+
-+ pipe = usb_sndbulkpipe(bfusb->udev, bfusb->bulk_out_ep);
-+
-+ FILL_BULK_URB(urb, bfusb->udev, pipe, skb->data, skb->len,
-+ bfusb_tx_complete, skb);
-+
-+ urb->transfer_flags = USB_QUEUE_BULK;
-+
-+ scb->urb = urb;
-+
-+ skb_queue_tail(&bfusb->pending_q, skb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk tx submit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ skb_unlink(skb);
-+ usb_free_urb(urb);
-+ } else
-+ atomic_inc(&bfusb->pending_tx);
-+
-+ return err;
-+}
-+
-+static void bfusb_tx_wakeup(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ if (test_and_set_bit(BFUSB_TX_PROCESS, &bfusb->state)) {
-+ set_bit(BFUSB_TX_WAKEUP, &bfusb->state);
-+ return;
-+ }
-+
-+ do {
-+ clear_bit(BFUSB_TX_WAKEUP, &bfusb->state);
-+
-+ while ((atomic_read(&bfusb->pending_tx) < BFUSB_MAX_BULK_TX) &&
-+ (skb = skb_dequeue(&bfusb->transmit_q))) {
-+ if (bfusb_send_bulk(bfusb, skb) < 0) {
-+ skb_queue_head(&bfusb->transmit_q, skb);
-+ break;
-+ }
-+ }
-+
-+ } while (test_bit(BFUSB_TX_WAKEUP, &bfusb->state));
-+
-+ clear_bit(BFUSB_TX_PROCESS, &bfusb->state);
-+}
-+
-+static void bfusb_tx_complete(struct urb *urb)
-+{
-+ struct sk_buff *skb = (struct sk_buff *) urb->context;
-+ struct bfusb *bfusb = (struct bfusb *) skb->dev;
-+
-+ BT_DBG("bfusb %p urb %p skb %p len %d", bfusb, urb, skb, skb->len);
-+
-+ atomic_dec(&bfusb->pending_tx);
-+
-+ if (!test_bit(HCI_RUNNING, &bfusb->hdev.flags))
-+ return;
-+
-+ if (!urb->status)
-+ bfusb->hdev.stat.byte_tx += skb->len;
-+ else
-+ bfusb->hdev.stat.err_tx++;
-+
-+ read_lock(&bfusb->lock);
-+
-+ skb_unlink(skb);
-+ skb_queue_tail(&bfusb->completed_q, skb);
-+
-+ bfusb_tx_wakeup(bfusb);
-+
-+ read_unlock(&bfusb->lock);
-+}
-+
-+
-+static int bfusb_rx_submit(struct bfusb *bfusb, struct urb *urb)
-+{
-+ struct bfusb_scb *scb;
-+ struct sk_buff *skb;
-+ int err, pipe, size = HCI_MAX_FRAME_SIZE + 32;
-+
-+ BT_DBG("bfusb %p urb %p", bfusb, urb);
-+
-+ if (!urb && !(urb = usb_alloc_urb(0)))
-+ return -ENOMEM;
-+
-+ if (!(skb = bluez_skb_alloc(size, GFP_ATOMIC))) {
-+ usb_free_urb(urb);
-+ return -ENOMEM;
-+ }
-+
-+ skb->dev = (void *) bfusb;
-+
-+ scb = (struct bfusb_scb *) skb->cb;
-+ scb->urb = urb;
-+
-+ pipe = usb_rcvbulkpipe(bfusb->udev, bfusb->bulk_in_ep);
-+
-+ FILL_BULK_URB(urb, bfusb->udev, pipe, skb->data, size,
-+ bfusb_rx_complete, skb);
-+
-+ urb->transfer_flags = USB_QUEUE_BULK;
-+
-+ skb_queue_tail(&bfusb->pending_q, skb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk rx submit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ skb_unlink(skb);
-+ kfree_skb(skb);
-+ usb_free_urb(urb);
-+ }
-+
-+ return err;
-+}
-+
-+static inline int bfusb_recv_block(struct bfusb *bfusb, int hdr, unsigned char *data, int len)
-+{
-+ BT_DBG("bfusb %p hdr 0x%02x data %p len %d", bfusb, hdr, data, len);
-+
-+ if (hdr & 0x10) {
-+ BT_ERR("%s error in block", bfusb->hdev.name);
-+ if (bfusb->reassembly)
-+ kfree_skb(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ return -EIO;
-+ }
-+
-+ if (hdr & 0x04) {
-+ struct sk_buff *skb;
-+ unsigned char pkt_type;
-+ int pkt_len = 0;
-+
-+ if (bfusb->reassembly) {
-+ BT_ERR("%s unexpected start block", bfusb->hdev.name);
-+ kfree_skb(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ }
-+
-+ if (len < 1) {
-+ BT_ERR("%s no packet type found", bfusb->hdev.name);
-+ return -EPROTO;
-+ }
-+
-+ pkt_type = *data++; len--;
-+
-+ switch (pkt_type) {
-+ case HCI_EVENT_PKT:
-+ if (len >= HCI_EVENT_HDR_SIZE) {
-+ hci_event_hdr *hdr = (hci_event_hdr *) data;
-+ pkt_len = HCI_EVENT_HDR_SIZE + hdr->plen;
-+ } else {
-+ BT_ERR("%s event block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ if (len >= HCI_ACL_HDR_SIZE) {
-+ hci_acl_hdr *hdr = (hci_acl_hdr *) data;
-+ pkt_len = HCI_ACL_HDR_SIZE + __le16_to_cpu(hdr->dlen);
-+ } else {
-+ BT_ERR("%s data block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ if (len >= HCI_SCO_HDR_SIZE) {
-+ hci_sco_hdr *hdr = (hci_sco_hdr *) data;
-+ pkt_len = HCI_SCO_HDR_SIZE + hdr->dlen;
-+ } else {
-+ BT_ERR("%s audio block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+ }
-+
-+ skb = bluez_skb_alloc(pkt_len, GFP_ATOMIC);
-+ if (!skb) {
-+ BT_ERR("%s no memory for the packet", bfusb->hdev.name);
-+ return -ENOMEM;
-+ }
-+
-+ skb->dev = (void *) &bfusb->hdev;
-+ skb->pkt_type = pkt_type;
-+
-+ bfusb->reassembly = skb;
-+ } else {
-+ if (!bfusb->reassembly) {
-+ BT_ERR("%s unexpected continuation block", bfusb->hdev.name);
-+ return -EIO;
-+ }
-+ }
-+
-+ if (len > 0)
-+ memcpy(skb_put(bfusb->reassembly, len), data, len);
-+
-+ if (hdr & 0x08) {
-+ hci_recv_frame(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ }
-+
-+ return 0;
-+}
-+
-+static void bfusb_rx_complete(struct urb *urb)
-+{
-+ struct sk_buff *skb = (struct sk_buff *) urb->context;
-+ struct bfusb *bfusb = (struct bfusb *) skb->dev;
-+ unsigned char *buf = urb->transfer_buffer;
-+ int count = urb->actual_length;
-+ int err, hdr, len;
-+
-+ BT_DBG("bfusb %p urb %p skb %p len %d", bfusb, urb, skb, skb->len);
-+
-+ read_lock(&bfusb->lock);
-+
-+ if (!test_bit(HCI_RUNNING, &bfusb->hdev.flags))
-+ goto unlock;
-+
-+ if (urb->status || !count)
-+ goto resubmit;
-+
-+ bfusb->hdev.stat.byte_rx += count;
-+
-+ skb_put(skb, count);
-+
-+ while (count) {
-+ hdr = buf[0] | (buf[1] << 8);
-+
-+ if (hdr & 0x4000) {
-+ len = 0;
-+ count -= 2;
-+ buf += 2;
-+ } else {
-+ len = (buf[2] == 0) ? 256 : buf[2];
-+ count -= 3;
-+ buf += 3;
-+ }
-+
-+ if (count < len) {
-+ BT_ERR("%s block extends over URB buffer ranges",
-+ bfusb->hdev.name);
-+ }
-+
-+ if ((hdr & 0xe1) == 0xc1)
-+ bfusb_recv_block(bfusb, hdr, buf, len);
-+
-+ count -= len;
-+ buf += len;
-+ }
-+
-+ skb_unlink(skb);
-+ kfree_skb(skb);
-+
-+ bfusb_rx_submit(bfusb, urb);
-+
-+ read_unlock(&bfusb->lock);
-+
-+ return;
-+
-+resubmit:
-+ urb->dev = bfusb->udev;
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk resubmit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ }
-+
-+unlock:
-+ read_unlock(&bfusb->lock);
-+}
-+
-+
-+static int bfusb_open(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+ unsigned long flags;
-+ int i, err;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ if (test_and_set_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ write_lock_irqsave(&bfusb->lock, flags);
-+
-+ err = bfusb_rx_submit(bfusb, NULL);
-+ if (!err) {
-+ for (i = 1; i < BFUSB_MAX_BULK_RX; i++)
-+ bfusb_rx_submit(bfusb, NULL);
-+ } else {
-+ clear_bit(HCI_RUNNING, &hdev->flags);
-+ MOD_DEC_USE_COUNT;
-+ }
-+
-+ write_unlock_irqrestore(&bfusb->lock, flags);
-+
-+ return err;
-+}
-+
-+static int bfusb_flush(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ skb_queue_purge(&bfusb->transmit_q);
-+
-+ return 0;
-+}
-+
-+static int bfusb_close(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+ unsigned long flags;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
-+ write_lock_irqsave(&bfusb->lock, flags);
-+
-+ bfusb_unlink_urbs(bfusb);
-+ bfusb_flush(hdev);
-+
-+ write_unlock_irqrestore(&bfusb->lock, flags);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ return 0;
-+}
-+
-+static int bfusb_send_frame(struct sk_buff *skb)
-+{
-+ struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-+ struct bfusb *bfusb;
-+ struct sk_buff *nskb;
-+ unsigned char buf[3];
-+ int sent = 0, size, count;
-+
-+ BT_DBG("hdev %p skb %p type %d len %d", hdev, skb, skb->pkt_type, skb->len);
-+
-+ if (!hdev) {
-+ BT_ERR("Frame for unknown HCI device (hdev=NULL)");
-+ return -ENODEV;
-+ }
-+
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return -EBUSY;
-+
-+ bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+
-+ count = skb->len;
-+
-+ /* Max HCI frame size seems to be 1511 + 1 */
-+ if (!(nskb = bluez_skb_alloc(count + 32, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for new packet");
-+ return -ENOMEM;
-+ }
-+
-+ nskb->dev = (void *) bfusb;
-+
-+ while (count) {
-+ size = min_t(uint, count, BFUSB_MAX_BLOCK_SIZE);
-+
-+ buf[0] = 0xc1 | ((sent == 0) ? 0x04 : 0) | ((count == size) ? 0x08 : 0);
-+ buf[1] = 0x00;
-+ buf[2] = (size == BFUSB_MAX_BLOCK_SIZE) ? 0 : size;
-+
-+ memcpy(skb_put(nskb, 3), buf, 3);
-+ memcpy(skb_put(nskb, size), skb->data + sent, size);
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ /* Don't send frame with multiple size of bulk max packet */
-+ if ((nskb->len % bfusb->bulk_pkt_size) == 0) {
-+ buf[0] = 0xdd;
-+ buf[1] = 0x00;
-+ memcpy(skb_put(nskb, 2), buf, 2);
-+ }
-+
-+ read_lock(&bfusb->lock);
-+
-+ skb_queue_tail(&bfusb->transmit_q, nskb);
-+ bfusb_tx_wakeup(bfusb);
-+
-+ read_unlock(&bfusb->lock);
-+
-+ kfree_skb(skb);
-+
-+ return 0;
-+}
-+
-+static void bfusb_destruct(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ kfree(bfusb);
-+}
-+
-+static int bfusb_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+static int bfusb_load_firmware(struct bfusb *bfusb, unsigned char *firmware, int count)
-+{
-+ unsigned char *buf;
-+ int err, pipe, len, size, sent = 0;
-+
-+ BT_DBG("bfusb %p udev %p firmware %p count %d", bfusb, bfusb->udev, firmware, count);
-+
-+ BT_INFO("BlueFRITZ! USB loading firmware");
-+
-+ if (usb_set_configuration(bfusb->udev, 1) < 0) {
-+ BT_ERR("Can't change to loading configuration");
-+ return -EBUSY;
-+ }
-+
-+ buf = kmalloc(BFUSB_MAX_BLOCK_SIZE + 3, GFP_ATOMIC);
-+ if (!buf) {
-+ BT_ERR("Can't allocate memory chunk for firmware");
-+ return -ENOMEM;
-+ }
-+
-+ pipe = usb_sndbulkpipe(bfusb->udev, bfusb->bulk_out_ep);
-+
-+ while (count) {
-+ size = min_t(uint, count, BFUSB_MAX_BLOCK_SIZE + 3);
-+
-+ memcpy(buf, firmware + sent, size);
-+
-+ err = usb_bulk_msg(bfusb->udev, pipe, buf, size,
-+ &len, BFUSB_BLOCK_TIMEOUT);
-+
-+ if (err || (len != size)) {
-+ BT_ERR("Error in firmware loading");
-+ goto error;
-+ }
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ if ((err = usb_bulk_msg(bfusb->udev, pipe, NULL, 0,
-+ &len, BFUSB_BLOCK_TIMEOUT)) < 0) {
-+ BT_ERR("Error in null packet request");
-+ goto error;
-+ }
-+
-+ if ((err = usb_set_configuration(bfusb->udev, 2)) < 0) {
-+ BT_ERR("Can't change to running configuration");
-+ goto error;
-+ }
-+
-+ BT_INFO("BlueFRITZ! USB device ready");
-+
-+ kfree(buf);
-+ return 0;
-+
-+error:
-+ kfree(buf);
-+
-+ pipe = usb_sndctrlpipe(bfusb->udev, 0);
-+
-+ usb_control_msg(bfusb->udev, pipe, USB_REQ_SET_CONFIGURATION,
-+ 0, 0, 0, NULL, 0, BFUSB_BLOCK_TIMEOUT);
-+
-+ return err;
-+}
-+
-+static void *bfusb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id)
-+{
-+ const struct firmware *firmware;
-+ char device[16];
-+ struct usb_interface *iface;
-+ struct usb_interface_descriptor *iface_desc;
-+ struct usb_endpoint_descriptor *bulk_out_ep;
-+ struct usb_endpoint_descriptor *bulk_in_ep;
-+ struct hci_dev *hdev;
-+ struct bfusb *bfusb;
-+
-+ BT_DBG("udev %p ifnum %d id %p", udev, ifnum, id);
-+
-+ /* Check number of endpoints */
-+ iface = &udev->actconfig->interface[0];
-+ iface_desc = &iface->altsetting[0];
-+
-+ if (iface_desc->bNumEndpoints < 2)
-+ return NULL;
-+
-+ bulk_out_ep = &iface_desc->endpoint[0];
-+ bulk_in_ep = &iface_desc->endpoint[1];
-+
-+ if (!bulk_out_ep || !bulk_in_ep) {
-+ BT_ERR("Bulk endpoints not found");
-+ goto done;
-+ }
-+
-+ /* Initialize control structure and load firmware */
-+ if (!(bfusb = kmalloc(sizeof(struct bfusb), GFP_KERNEL))) {
-+ BT_ERR("Can't allocate memory for control structure");
-+ goto done;
-+ }
-+
-+ memset(bfusb, 0, sizeof(struct bfusb));
-+
-+ bfusb->udev = udev;
-+ bfusb->bulk_in_ep = bulk_in_ep->bEndpointAddress;
-+ bfusb->bulk_out_ep = bulk_out_ep->bEndpointAddress;
-+ bfusb->bulk_pkt_size = bulk_out_ep->wMaxPacketSize;
-+
-+ bfusb->lock = RW_LOCK_UNLOCKED;
-+
-+ bfusb->reassembly = NULL;
-+
-+ skb_queue_head_init(&bfusb->transmit_q);
-+ skb_queue_head_init(&bfusb->pending_q);
-+ skb_queue_head_init(&bfusb->completed_q);
-+
-+ snprintf(device, sizeof(device), "bfusb%3.3d%3.3d", udev->bus->busnum, udev->devnum);
-+
-+ if (request_firmware(&firmware, "bfubase.frm", device) < 0) {
-+ BT_ERR("Firmware request failed");
-+ goto error;
-+ }
-+
-+ if (bfusb_load_firmware(bfusb, firmware->data, firmware->size) < 0) {
-+ BT_ERR("Firmware loading failed");
-+ goto release;
-+ }
-+
-+ release_firmware(firmware);
-+
-+ /* Initialize and register HCI device */
-+ hdev = &bfusb->hdev;
-+
-+ hdev->type = HCI_USB;
-+ hdev->driver_data = bfusb;
-+
-+ hdev->open = bfusb_open;
-+ hdev->close = bfusb_close;
-+ hdev->flush = bfusb_flush;
-+ hdev->send = bfusb_send_frame;
-+ hdev->destruct = bfusb_destruct;
-+ hdev->ioctl = bfusb_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ BT_ERR("Can't register HCI device");
-+ goto error;
-+ }
-+
-+ return bfusb;
-+
-+release:
-+ release_firmware(firmware);
-+
-+error:
-+ kfree(bfusb);
-+
-+done:
-+ return NULL;
-+}
-+
-+static void bfusb_disconnect(struct usb_device *udev, void *ptr)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) ptr;
-+ struct hci_dev *hdev = &bfusb->hdev;
-+
-+ BT_DBG("udev %p ptr %p", udev, ptr);
-+
-+ if (!hdev)
-+ return;
-+
-+ bfusb_close(hdev);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ BT_ERR("Can't unregister HCI device %s", hdev->name);
-+}
-+
-+static struct usb_driver bfusb_driver = {
-+ name: "bfusb",
-+ probe: bfusb_probe,
-+ disconnect: bfusb_disconnect,
-+ id_table: bfusb_table,
-+};
-+
-+static int __init bfusb_init(void)
-+{
-+ int err;
-+
-+ BT_INFO("BlueFRITZ! USB driver ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2003 Marcel Holtmann <marcel@holtmann.org>");
-+
-+ if ((err = usb_register(&bfusb_driver)) < 0)
-+ BT_ERR("Failed to register BlueFRITZ! USB driver");
-+
-+ return err;
-+}
-+
-+static void __exit bfusb_cleanup(void)
-+{
-+ usb_deregister(&bfusb_driver);
-+}
-+
-+module_init(bfusb_init);
-+module_exit(bfusb_cleanup);
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueFRITZ! USB driver ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/bluecard_cs.c linux-2.4.18-mh15/drivers/bluetooth/bluecard_cs.c
---- linux-2.4.18/drivers/bluetooth/bluecard_cs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/bluecard_cs.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,1116 @@
-+/*
-+ *
-+ * Bluetooth driver for the Anycom BlueCard (LSE039/LSE041)
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+#include <linux/skbuff.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0x86bc;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ driver for the Anycom BlueCard (LSE039/LSE041)");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct bluecard_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+ struct timer_list timer; /* For LED control */
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+
-+ unsigned char ctrl_reg;
-+ unsigned long hw_state; /* Status of the hardware and LED control */
-+} bluecard_info_t;
-+
-+
-+void bluecard_config(dev_link_t *link);
-+void bluecard_release(u_long arg);
-+int bluecard_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "bluecard_cs";
-+
-+dev_link_t *bluecard_attach(void);
-+void bluecard_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Default baud rate: 57600, 115200, 230400 or 460800 */
-+#define DEFAULT_BAUD_RATE 230400
-+
-+
-+/* Hardware states */
-+#define CARD_READY 1
-+#define CARD_HAS_PCCARD_ID 4
-+#define CARD_HAS_POWER_LED 5
-+#define CARD_HAS_ACTIVITY_LED 6
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_BUFFER_NUMBER 5 /* unset = buffer one, set = buffer two */
-+#define XMIT_BUF_ONE_READY 6
-+#define XMIT_BUF_TWO_READY 7
-+#define XMIT_SENDING_READY 8
-+
-+/* Receiver states */
-+#define RECV_WAIT_PACKET_TYPE 0
-+#define RECV_WAIT_EVENT_HEADER 1
-+#define RECV_WAIT_ACL_HEADER 2
-+#define RECV_WAIT_SCO_HEADER 3
-+#define RECV_WAIT_DATA 4
-+
-+/* Special packet types */
-+#define PKT_BAUD_RATE_57600 0x80
-+#define PKT_BAUD_RATE_115200 0x81
-+#define PKT_BAUD_RATE_230400 0x82
-+#define PKT_BAUD_RATE_460800 0x83
-+
-+
-+/* These are the register offsets */
-+#define REG_COMMAND 0x20
-+#define REG_INTERRUPT 0x21
-+#define REG_CONTROL 0x22
-+#define REG_RX_CONTROL 0x24
-+#define REG_CARD_RESET 0x30
-+#define REG_LED_CTRL 0x30
-+
-+/* REG_COMMAND */
-+#define REG_COMMAND_TX_BUF_ONE 0x01
-+#define REG_COMMAND_TX_BUF_TWO 0x02
-+#define REG_COMMAND_RX_BUF_ONE 0x04
-+#define REG_COMMAND_RX_BUF_TWO 0x08
-+#define REG_COMMAND_RX_WIN_ONE 0x00
-+#define REG_COMMAND_RX_WIN_TWO 0x10
-+
-+/* REG_CONTROL */
-+#define REG_CONTROL_BAUD_RATE_57600 0x00
-+#define REG_CONTROL_BAUD_RATE_115200 0x01
-+#define REG_CONTROL_BAUD_RATE_230400 0x02
-+#define REG_CONTROL_BAUD_RATE_460800 0x03
-+#define REG_CONTROL_RTS 0x04
-+#define REG_CONTROL_BT_ON 0x08
-+#define REG_CONTROL_BT_RESET 0x10
-+#define REG_CONTROL_BT_RES_PU 0x20
-+#define REG_CONTROL_INTERRUPT 0x40
-+#define REG_CONTROL_CARD_RESET 0x80
-+
-+/* REG_RX_CONTROL */
-+#define RTS_LEVEL_SHIFT_BITS 0x02
-+
-+
-+
-+/* ======================== LED handling routines ======================== */
-+
-+
-+void bluecard_activity_led_timeout(u_long arg)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)arg;
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ if (test_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state))) {
-+ /* Disable activity LED */
-+ outb(0x08 | 0x20, iobase + 0x30);
-+ } else {
-+ /* Disable power LED */
-+ outb(0x00, iobase + 0x30);
-+ }
-+}
-+
-+
-+static void bluecard_enable_activity_led(bluecard_info_t *info)
-+{
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ if (test_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state))) {
-+ /* Enable activity LED */
-+ outb(0x10 | 0x40, iobase + 0x30);
-+
-+ /* Stop the LED after HZ/4 */
-+ mod_timer(&(info->timer), jiffies + HZ / 4);
-+ } else {
-+ /* Enable power LED */
-+ outb(0x08 | 0x20, iobase + 0x30);
-+
-+ /* Stop the LED after HZ/2 */
-+ mod_timer(&(info->timer), jiffies + HZ / 2);
-+ }
-+}
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int bluecard_write(unsigned int iobase, unsigned int offset, __u8 *buf, int len)
-+{
-+ int i, actual;
-+
-+ actual = (len > 15) ? 15 : len;
-+
-+ outb_p(actual, iobase + offset);
-+
-+ for (i = 0; i < actual; i++)
-+ outb_p(buf[i], iobase + offset + i + 1);
-+
-+ return actual;
-+}
-+
-+
-+static void bluecard_write_wakeup(bluecard_info_t *info)
-+{
-+ if (!info) {
-+ printk(KERN_WARNING "bluecard_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (!test_bit(XMIT_SENDING_READY, &(info->tx_state)))
-+ return;
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register unsigned int offset;
-+ register unsigned char command;
-+ register unsigned long ready_bit;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ clear_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ return;
-+
-+ if (test_bit(XMIT_BUFFER_NUMBER, &(info->tx_state))) {
-+ if (!test_bit(XMIT_BUF_TWO_READY, &(info->tx_state)))
-+ break;
-+ offset = 0x10;
-+ command = REG_COMMAND_TX_BUF_TWO;
-+ ready_bit = XMIT_BUF_TWO_READY;
-+ } else {
-+ if (!test_bit(XMIT_BUF_ONE_READY, &(info->tx_state)))
-+ break;
-+ offset = 0x00;
-+ command = REG_COMMAND_TX_BUF_ONE;
-+ ready_bit = XMIT_BUF_ONE_READY;
-+ }
-+
-+ if (!(skb = skb_dequeue(&(info->txq))))
-+ break;
-+
-+ if (skb->pkt_type & 0x80) {
-+ /* Disable RTS */
-+ info->ctrl_reg |= REG_CONTROL_RTS;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+ }
-+
-+ /* Activate LED */
-+ bluecard_enable_activity_led(info);
-+
-+ /* Send frame */
-+ len = bluecard_write(iobase, offset, skb->data, skb->len);
-+
-+ /* Tell the FPGA to send the data */
-+ outb_p(command, iobase + REG_COMMAND);
-+
-+ /* Mark the buffer as dirty */
-+ clear_bit(ready_bit, &(info->tx_state));
-+
-+ if (skb->pkt_type & 0x80) {
-+
-+ wait_queue_head_t wait;
-+ unsigned char baud_reg;
-+
-+ switch (skb->pkt_type) {
-+ case PKT_BAUD_RATE_460800:
-+ baud_reg = REG_CONTROL_BAUD_RATE_460800;
-+ break;
-+ case PKT_BAUD_RATE_230400:
-+ baud_reg = REG_CONTROL_BAUD_RATE_230400;
-+ break;
-+ case PKT_BAUD_RATE_115200:
-+ baud_reg = REG_CONTROL_BAUD_RATE_115200;
-+ break;
-+ case PKT_BAUD_RATE_57600:
-+ /* Fall through... */
-+ default:
-+ baud_reg = REG_CONTROL_BAUD_RATE_57600;
-+ break;
-+ }
-+
-+ /* Wait until the command reaches the baseband */
-+ init_waitqueue_head(&wait);
-+ interruptible_sleep_on_timeout(&wait, HZ / 10);
-+
-+ /* Set baud on baseband */
-+ info->ctrl_reg &= ~0x03;
-+ info->ctrl_reg |= baud_reg;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Enable RTS */
-+ info->ctrl_reg &= ~REG_CONTROL_RTS;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Wait before the next HCI packet can be send */
-+ interruptible_sleep_on_timeout(&wait, HZ);
-+
-+ }
-+
-+ if (len == skb->len) {
-+ kfree_skb(skb);
-+ } else {
-+ skb_pull(skb, len);
-+ skb_queue_head(&(info->txq), skb);
-+ }
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ /* Change buffer */
-+ change_bit(XMIT_BUFFER_NUMBER, &(info->tx_state));
-+
-+ } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
-+
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+}
-+
-+
-+static int bluecard_read(unsigned int iobase, unsigned int offset, __u8 *buf, int size)
-+{
-+ int i, n, len;
-+
-+ outb(REG_COMMAND_RX_WIN_ONE, iobase + REG_COMMAND);
-+
-+ len = inb(iobase + offset);
-+ n = 0;
-+ i = 1;
-+
-+ while (n < len) {
-+
-+ if (i == 16) {
-+ outb(REG_COMMAND_RX_WIN_TWO, iobase + REG_COMMAND);
-+ i = 0;
-+ }
-+
-+ buf[n] = inb(iobase + offset + i);
-+
-+ n++;
-+ i++;
-+
-+ }
-+
-+ return len;
-+}
-+
-+
-+static void bluecard_receive(bluecard_info_t *info, unsigned int offset)
-+{
-+ unsigned int iobase;
-+ unsigned char buf[31];
-+ int i, len;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bluecard_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ if (test_bit(XMIT_SENDING_READY, &(info->tx_state)))
-+ bluecard_enable_activity_led(info);
-+
-+ len = bluecard_read(iobase, offset, buf, sizeof(buf));
-+
-+ for (i = 0; i < len; i++) {
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL) {
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "bluecard_cs: Can't allocate mem for new packet.\n");
-+ return;
-+ }
-+ }
-+
-+ if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
-+
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type = buf[i];
-+
-+ switch (info->rx_skb->pkt_type) {
-+
-+ case 0x00:
-+ /* init packet */
-+ if (offset != 0x00) {
-+ set_bit(XMIT_BUF_ONE_READY, &(info->tx_state));
-+ set_bit(XMIT_BUF_TWO_READY, &(info->tx_state));
-+ set_bit(XMIT_SENDING_READY, &(info->tx_state));
-+ bluecard_write_wakeup(info);
-+ }
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ case HCI_EVENT_PKT:
-+ info->rx_state = RECV_WAIT_EVENT_HEADER;
-+ info->rx_count = HCI_EVENT_HDR_SIZE;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ info->rx_state = RECV_WAIT_ACL_HEADER;
-+ info->rx_count = HCI_ACL_HDR_SIZE;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ info->rx_state = RECV_WAIT_SCO_HEADER;
-+ info->rx_count = HCI_SCO_HDR_SIZE;
-+ break;
-+
-+ default:
-+ /* unknown packet */
-+ printk(KERN_WARNING "bluecard_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ info->hdev.stat.err_rx++;
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ } else {
-+
-+ *skb_put(info->rx_skb, 1) = buf[i];
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ int dlen;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+
-+ switch (info->rx_state) {
-+
-+ case RECV_WAIT_EVENT_HEADER:
-+ eh = (hci_event_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = eh->plen;
-+ break;
-+
-+ case RECV_WAIT_ACL_HEADER:
-+ ah = (hci_acl_hdr *)(info->rx_skb->data);
-+ dlen = __le16_to_cpu(ah->dlen);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = dlen;
-+ break;
-+
-+ case RECV_WAIT_SCO_HEADER:
-+ sh = (hci_sco_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = sh->dlen;
-+ break;
-+
-+ case RECV_WAIT_DATA:
-+ hci_recv_frame(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+
-+ }
-+
-+ info->hdev.stat.byte_rx += len;
-+}
-+
-+
-+void bluecard_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ bluecard_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ unsigned char reg;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bluecard_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ if (!test_bit(CARD_READY, &(info->hw_state)))
-+ return;
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ /* Disable interrupt */
-+ info->ctrl_reg &= ~REG_CONTROL_INTERRUPT;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ reg = inb(iobase + REG_INTERRUPT);
-+
-+ if ((reg != 0x00) && (reg != 0xff)) {
-+
-+ if (reg & 0x04) {
-+ bluecard_receive(info, 0x00);
-+ outb(0x04, iobase + REG_INTERRUPT);
-+ outb(REG_COMMAND_RX_BUF_ONE, iobase + REG_COMMAND);
-+ }
-+
-+ if (reg & 0x08) {
-+ bluecard_receive(info, 0x10);
-+ outb(0x08, iobase + REG_INTERRUPT);
-+ outb(REG_COMMAND_RX_BUF_TWO, iobase + REG_COMMAND);
-+ }
-+
-+ if (reg & 0x01) {
-+ set_bit(XMIT_BUF_ONE_READY, &(info->tx_state));
-+ outb(0x01, iobase + REG_INTERRUPT);
-+ bluecard_write_wakeup(info);
-+ }
-+
-+ if (reg & 0x02) {
-+ set_bit(XMIT_BUF_TWO_READY, &(info->tx_state));
-+ outb(0x02, iobase + REG_INTERRUPT);
-+ bluecard_write_wakeup(info);
-+ }
-+
-+ }
-+
-+ /* Enable interrupt */
-+ info->ctrl_reg |= REG_CONTROL_INTERRUPT;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+
-+/* ======================== Device specific HCI commands ======================== */
-+
-+
-+static int bluecard_hci_set_baud_rate(struct hci_dev *hdev, int baud)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+ struct sk_buff *skb;
-+
-+ /* Ericsson baud rate command */
-+ unsigned char cmd[] = { HCI_COMMAND_PKT, 0x09, 0xfc, 0x01, 0x03 };
-+
-+ if (!(skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "bluecard_cs: Can't allocate mem for new packet.\n");
-+ return -1;
-+ }
-+
-+ switch (baud) {
-+ case 460800:
-+ cmd[4] = 0x00;
-+ skb->pkt_type = PKT_BAUD_RATE_460800;
-+ break;
-+ case 230400:
-+ cmd[4] = 0x01;
-+ skb->pkt_type = PKT_BAUD_RATE_230400;
-+ break;
-+ case 115200:
-+ cmd[4] = 0x02;
-+ skb->pkt_type = PKT_BAUD_RATE_115200;
-+ break;
-+ case 57600:
-+ /* Fall through... */
-+ default:
-+ cmd[4] = 0x03;
-+ skb->pkt_type = PKT_BAUD_RATE_57600;
-+ break;
-+ }
-+
-+ memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd));
-+
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ bluecard_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int bluecard_hci_flush(struct hci_dev *hdev)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int bluecard_hci_open(struct hci_dev *hdev)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ bluecard_hci_set_baud_rate(hdev, DEFAULT_BAUD_RATE);
-+
-+ if (test_and_set_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ /* Enable LED */
-+ outb(0x08 | 0x20, iobase + 0x30);
-+
-+ return 0;
-+}
-+
-+
-+static int bluecard_hci_close(struct hci_dev *hdev)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ bluecard_hci_flush(hdev);
-+
-+ /* Disable LED */
-+ outb(0x00, iobase + 0x30);
-+
-+ return 0;
-+}
-+
-+
-+static int bluecard_hci_send_frame(struct sk_buff *skb)
-+{
-+ bluecard_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "bluecard_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (bluecard_info_t *)(hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ bluecard_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+static void bluecard_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int bluecard_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+int bluecard_open(bluecard_info_t *info)
-+{
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev;
-+ unsigned char id;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ init_timer(&(info->timer));
-+ info->timer.function = &bluecard_activity_led_timeout;
-+ info->timer.data = (u_long)info;
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ info->rx_skb = NULL;
-+
-+ id = inb(iobase + 0x30);
-+
-+ if ((id & 0x0f) == 0x02)
-+ set_bit(CARD_HAS_PCCARD_ID, &(info->hw_state));
-+
-+ if (id & 0x10)
-+ set_bit(CARD_HAS_POWER_LED, &(info->hw_state));
-+
-+ if (id & 0x20)
-+ set_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state));
-+
-+ /* Reset card */
-+ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Turn FPGA off */
-+ outb(0x80, iobase + 0x30);
-+
-+ /* Wait some time */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ / 100);
-+
-+ /* Turn FPGA on */
-+ outb(0x00, iobase + 0x30);
-+
-+ /* Activate card */
-+ info->ctrl_reg = REG_CONTROL_BT_ON | REG_CONTROL_BT_RES_PU;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Enable interrupt */
-+ outb(0xff, iobase + REG_INTERRUPT);
-+ info->ctrl_reg |= REG_CONTROL_INTERRUPT;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Start the RX buffers */
-+ outb(REG_COMMAND_RX_BUF_ONE, iobase + REG_COMMAND);
-+ outb(REG_COMMAND_RX_BUF_TWO, iobase + REG_COMMAND);
-+
-+ /* Signal that the hardware is ready */
-+ set_bit(CARD_READY, &(info->hw_state));
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ /* Control the point at which RTS is enabled */
-+ outb((0x0f << RTS_LEVEL_SHIFT_BITS) | 1, iobase + REG_RX_CONTROL);
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout((HZ * 5) / 4); // or set it to 3/2
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = bluecard_hci_open;
-+ hdev->close = bluecard_hci_close;
-+ hdev->flush = bluecard_hci_flush;
-+ hdev->send = bluecard_hci_send_frame;
-+ hdev->destruct = bluecard_hci_destruct;
-+ hdev->ioctl = bluecard_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "bluecard_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int bluecard_close(bluecard_info_t *info)
-+{
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
-+ bluecard_hci_close(hdev);
-+
-+ clear_bit(CARD_READY, &(info->hw_state));
-+
-+ /* Reset card */
-+ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Turn FPGA off */
-+ outb(0x80, iobase + 0x30);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "bluecard_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *bluecard_attach(void)
-+{
-+ bluecard_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &bluecard_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = bluecard_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &bluecard_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ bluecard_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void bluecard_detach(dev_link_t *link)
-+{
-+ bluecard_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+ if (link->state & DEV_CONFIG)
-+ bluecard_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void bluecard_config(dev_link_t *link)
-+{
-+ client_handle_t handle = link->handle;
-+ bluecard_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ config_info_t config;
-+ int i, n, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ link->conf.ConfigIndex = 0x20;
-+ link->io.NumPorts1 = 64;
-+ link->io.IOAddrLines = 6;
-+
-+ for (n = 0; n < 0x400; n += 0x40) {
-+ link->io.BasePort1 = n ^ 0x300;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ break;
-+ }
-+
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (bluecard_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ bluecard_release((u_long)link);
-+}
-+
-+
-+void bluecard_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ bluecard_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ bluecard_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int bluecard_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ bluecard_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ bluecard_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ bluecard_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_bluecard_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "bluecard_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &bluecard_attach, &bluecard_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_bluecard_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ bluecard_detach(dev_list);
-+}
-+
-+
-+module_init(init_bluecard_cs);
-+module_exit(exit_bluecard_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/bt3c_cs.c linux-2.4.18-mh15/drivers/bluetooth/bt3c_cs.c
---- linux-2.4.18/drivers/bluetooth/bt3c_cs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/bt3c_cs.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,986 @@
-+/*
-+ *
-+ * Driver for the 3Com Bluetooth PCMCIA card
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ * Jose Orlando Pereira <jop@di.uminho.pt>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/kmod.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/delay.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/unistd.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/skbuff.h>
-+#include <linux/string.h>
-+#include <linux/serial.h>
-+#include <linux/serial_reg.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/io.h>
-+
-+#include <linux/firmware.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0xffff;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>, Jose Orlando Pereira <jop@di.uminho.pt>");
-+MODULE_DESCRIPTION("BlueZ driver for the 3Com Bluetooth PCMCIA card");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct bt3c_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+} bt3c_info_t;
-+
-+
-+void bt3c_config(dev_link_t *link);
-+void bt3c_release(u_long arg);
-+int bt3c_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "bt3c_cs";
-+
-+dev_link_t *bt3c_attach(void);
-+void bt3c_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_WAITING 8
-+
-+/* Receiver states */
-+#define RECV_WAIT_PACKET_TYPE 0
-+#define RECV_WAIT_EVENT_HEADER 1
-+#define RECV_WAIT_ACL_HEADER 2
-+#define RECV_WAIT_SCO_HEADER 3
-+#define RECV_WAIT_DATA 4
-+
-+
-+
-+/* ======================== Special I/O functions ======================== */
-+
-+
-+#define DATA_L 0
-+#define DATA_H 1
-+#define ADDR_L 2
-+#define ADDR_H 3
-+#define CONTROL 4
-+
-+
-+inline void bt3c_address(unsigned int iobase, unsigned short addr)
-+{
-+ outb(addr & 0xff, iobase + ADDR_L);
-+ outb((addr >> 8) & 0xff, iobase + ADDR_H);
-+}
-+
-+
-+inline void bt3c_put(unsigned int iobase, unsigned short value)
-+{
-+ outb(value & 0xff, iobase + DATA_L);
-+ outb((value >> 8) & 0xff, iobase + DATA_H);
-+}
-+
-+
-+inline void bt3c_io_write(unsigned int iobase, unsigned short addr, unsigned short value)
-+{
-+ bt3c_address(iobase, addr);
-+ bt3c_put(iobase, value);
-+}
-+
-+
-+inline unsigned short bt3c_get(unsigned int iobase)
-+{
-+ unsigned short value = inb(iobase + DATA_L);
-+
-+ value |= inb(iobase + DATA_H) << 8;
-+
-+ return value;
-+}
-+
-+
-+inline unsigned short bt3c_read(unsigned int iobase, unsigned short addr)
-+{
-+ bt3c_address(iobase, addr);
-+
-+ return bt3c_get(iobase);
-+}
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int bt3c_write(unsigned int iobase, int fifo_size, __u8 *buf, int len)
-+{
-+ int actual = 0;
-+
-+ bt3c_address(iobase, 0x7080);
-+
-+ /* Fill FIFO with current frame */
-+ while (actual < len) {
-+ /* Transmit next byte */
-+ bt3c_put(iobase, buf[actual]);
-+ actual++;
-+ }
-+
-+ bt3c_io_write(iobase, 0x7005, actual);
-+
-+ return actual;
-+}
-+
-+
-+static void bt3c_write_wakeup(bt3c_info_t *info, int from)
-+{
-+ unsigned long flags;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bt3c_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state)))
-+ return;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ break;
-+
-+
-+ if (!(skb = skb_dequeue(&(info->txq)))) {
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+ break;
-+ }
-+
-+ /* Send frame */
-+ len = bt3c_write(iobase, 256, skb->data, skb->len);
-+
-+ if (len != skb->len) {
-+ printk(KERN_WARNING "bt3c_cs: very strange\n");
-+ }
-+
-+ kfree_skb(skb);
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ } while (0);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+}
-+
-+
-+static void bt3c_receive(bt3c_info_t *info)
-+{
-+ unsigned int iobase;
-+ int size = 0, avail;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bt3c_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ avail = bt3c_read(iobase, 0x7006);
-+ //printk("bt3c_cs: receiving %d bytes\n", avail);
-+
-+ bt3c_address(iobase, 0x7480);
-+ while (size < avail) {
-+ size++;
-+ info->hdev.stat.byte_rx++;
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL) {
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "bt3c_cs: Can't allocate mem for new packet.\n");
-+ return;
-+ }
-+ }
-+
-+
-+ if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
-+
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type = inb(iobase + DATA_L);
-+ inb(iobase + DATA_H);
-+ //printk("bt3c: PACKET_TYPE=%02x\n", info->rx_skb->pkt_type);
-+
-+ switch (info->rx_skb->pkt_type) {
-+
-+ case HCI_EVENT_PKT:
-+ info->rx_state = RECV_WAIT_EVENT_HEADER;
-+ info->rx_count = HCI_EVENT_HDR_SIZE;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ info->rx_state = RECV_WAIT_ACL_HEADER;
-+ info->rx_count = HCI_ACL_HDR_SIZE;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ info->rx_state = RECV_WAIT_SCO_HEADER;
-+ info->rx_count = HCI_SCO_HDR_SIZE;
-+ break;
-+
-+ default:
-+ /* Unknown packet */
-+ printk(KERN_WARNING "bt3c_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ info->hdev.stat.err_rx++;
-+ clear_bit(HCI_RUNNING, &(info->hdev.flags));
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ } else {
-+
-+ __u8 x = inb(iobase + DATA_L);
-+
-+ *skb_put(info->rx_skb, 1) = x;
-+ inb(iobase + DATA_H);
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ int dlen;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+
-+ switch (info->rx_state) {
-+
-+ case RECV_WAIT_EVENT_HEADER:
-+ eh = (hci_event_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = eh->plen;
-+ break;
-+
-+ case RECV_WAIT_ACL_HEADER:
-+ ah = (hci_acl_hdr *)(info->rx_skb->data);
-+ dlen = __le16_to_cpu(ah->dlen);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = dlen;
-+ break;
-+
-+ case RECV_WAIT_SCO_HEADER:
-+ sh = (hci_sco_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = sh->dlen;
-+ break;
-+
-+ case RECV_WAIT_DATA:
-+ hci_recv_frame(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+ bt3c_io_write(iobase, 0x7006, 0x0000);
-+}
-+
-+
-+void bt3c_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ bt3c_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ int iir;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bt3c_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ iir = inb(iobase + CONTROL);
-+ if (iir & 0x80) {
-+ int stat = bt3c_read(iobase, 0x7001);
-+
-+ if ((stat & 0xff) == 0x7f) {
-+ printk(KERN_WARNING "bt3c_cs: STRANGE stat=%04x\n", stat);
-+ } else if ((stat & 0xff) != 0xff) {
-+ if (stat & 0x0020) {
-+ int stat = bt3c_read(iobase, 0x7002) & 0x10;
-+ printk(KERN_WARNING "bt3c_cs: antena %s\n", stat ? "OUT" : "IN");
-+ }
-+ if (stat & 0x0001)
-+ bt3c_receive(info);
-+ if (stat & 0x0002) {
-+ //printk("bt3c_cs: ACK %04x\n", stat);
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+ bt3c_write_wakeup(info, 1);
-+ }
-+
-+ bt3c_io_write(iobase, 0x7001, 0x0000);
-+
-+ outb(iir, iobase + CONTROL);
-+ }
-+ }
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int bt3c_hci_flush(struct hci_dev *hdev)
-+{
-+ bt3c_info_t *info = (bt3c_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int bt3c_hci_open(struct hci_dev *hdev)
-+{
-+ set_bit(HCI_RUNNING, &(hdev->flags));
-+
-+ return 0;
-+}
-+
-+
-+static int bt3c_hci_close(struct hci_dev *hdev)
-+{
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ bt3c_hci_flush(hdev);
-+
-+ return 0;
-+}
-+
-+
-+static int bt3c_hci_send_frame(struct sk_buff *skb)
-+{
-+ bt3c_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "bt3c_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (bt3c_info_t *) (hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ bt3c_write_wakeup(info, 0);
-+
-+ return 0;
-+}
-+
-+
-+static void bt3c_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int bt3c_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+static int bt3c_load_firmware(bt3c_info_t *info, unsigned char *firmware, int count)
-+{
-+ char *ptr = (char *) firmware;
-+ char b[9];
-+ unsigned int iobase, size, addr, fcs, tmp;
-+ int i, err = 0;
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ /* Reset */
-+
-+ bt3c_io_write(iobase, 0x8040, 0x0404);
-+ bt3c_io_write(iobase, 0x8040, 0x0400);
-+
-+ udelay(1);
-+
-+ bt3c_io_write(iobase, 0x8040, 0x0404);
-+
-+ udelay(17);
-+
-+ /* Load */
-+
-+ while (count) {
-+ if (ptr[0] != 'S') {
-+ printk(KERN_WARNING "bt3c_cs: Bad address in firmware.\n");
-+ err = -EFAULT;
-+ goto error;
-+ }
-+
-+ memset(b, 0, sizeof(b));
-+ memcpy(b, ptr + 2, 2);
-+ size = simple_strtol(b, NULL, 16);
-+
-+ memset(b, 0, sizeof(b));
-+ memcpy(b, ptr + 4, 8);
-+ addr = simple_strtol(b, NULL, 16);
-+
-+ memset(b, 0, sizeof(b));
-+ memcpy(b, ptr + (size * 2) + 2, 2);
-+ fcs = simple_strtol(b, NULL, 16);
-+
-+ memset(b, 0, sizeof(b));
-+ for (tmp = 0, i = 0; i < size; i++) {
-+ memcpy(b, ptr + (i * 2) + 2, 2);
-+ tmp += simple_strtol(b, NULL, 16);
-+ }
-+
-+ if (((tmp + fcs) & 0xff) != 0xff) {
-+ printk(KERN_WARNING "bt3c_cs: Checksum error in firmware.\n");
-+ err = -EILSEQ;
-+ goto error;
-+ }
-+
-+ if (ptr[1] == '3') {
-+ bt3c_address(iobase, addr);
-+
-+ memset(b, 0, sizeof(b));
-+ for (i = 0; i < (size - 4) / 2; i++) {
-+ memcpy(b, ptr + (i * 4) + 12, 4);
-+ tmp = simple_strtol(b, NULL, 16);
-+ bt3c_put(iobase, tmp);
-+ }
-+ }
-+
-+ ptr += (size * 2) + 6;
-+ count -= (size * 2) + 6;
-+ }
-+
-+ udelay(17);
-+
-+ /* Boot */
-+
-+ bt3c_address(iobase, 0x3000);
-+ outb(inb(iobase + CONTROL) | 0x40, iobase + CONTROL);
-+
-+error:
-+ udelay(17);
-+
-+ /* Clear */
-+
-+ bt3c_io_write(iobase, 0x7006, 0x0000);
-+ bt3c_io_write(iobase, 0x7005, 0x0000);
-+ bt3c_io_write(iobase, 0x7001, 0x0000);
-+
-+ return err;
-+}
-+
-+
-+int bt3c_open(bt3c_info_t *info)
-+{
-+ const struct firmware *firmware;
-+ char device[16];
-+ struct hci_dev *hdev;
-+ int err;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ info->rx_skb = NULL;
-+
-+ /* Load firmware */
-+
-+ snprintf(device, sizeof(device), "bt3c%4.4x", info->link.io.BasePort1);
-+
-+ err = request_firmware(&firmware, "BT3CPCC.bin", device);
-+ if (err < 0) {
-+ printk(KERN_WARNING "bt3c_cs: Firmware request failed.\n");
-+ return err;
-+ }
-+
-+ err = bt3c_load_firmware(info, firmware->data, firmware->size);
-+
-+ release_firmware(firmware);
-+
-+ if (err < 0) {
-+ printk(KERN_WARNING "bt3c_cs: Firmware loading failed.\n");
-+ return err;
-+ }
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ);
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = bt3c_hci_open;
-+ hdev->close = bt3c_hci_close;
-+ hdev->flush = bt3c_hci_flush;
-+ hdev->send = bt3c_hci_send_frame;
-+ hdev->destruct = bt3c_hci_destruct;
-+ hdev->ioctl = bt3c_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "bt3c_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int bt3c_close(bt3c_info_t *info)
-+{
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
-+ bt3c_hci_close(hdev);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "bt3c_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *bt3c_attach(void)
-+{
-+ bt3c_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &bt3c_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = bt3c_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &bt3c_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ bt3c_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void bt3c_detach(dev_link_t *link)
-+{
-+ bt3c_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+
-+ if (link->state & DEV_CONFIG)
-+ bt3c_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void bt3c_config(dev_link_t *link)
-+{
-+ static ioaddr_t base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
-+ client_handle_t handle = link->handle;
-+ bt3c_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
-+ int i, j, try, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ /* First pass: look for a config entry that looks normal. */
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-+ /* Two tries: without IO aliases, then with aliases */
-+ for (try = 0; try < 2; try++) {
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if (i != CS_SUCCESS)
-+ goto next_entry;
-+ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) {
-+ link->conf.ConfigIndex = cf->index;
-+ link->io.BasePort1 = cf->io.win[0].base;
-+ link->io.IOAddrLines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+next_entry:
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+ }
-+
-+ /* Second pass: try to find an entry that isn't picky about
-+ its base address, then try to grab any standard serial port
-+ address, and finally try to get any free port. */
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if ((i == CS_SUCCESS) && (cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-+ link->conf.ConfigIndex = cf->index;
-+ for (j = 0; j < 5; j++) {
-+ link->io.BasePort1 = base[j];
-+ link->io.IOAddrLines = base[j] ? 16 : 3;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+ }
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+
-+found_port:
-+ if (i != CS_SUCCESS) {
-+ printk(KERN_NOTICE "bt3c_cs: No usable port range found. Giving up.\n");
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (bt3c_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ bt3c_release((u_long)link);
-+}
-+
-+
-+void bt3c_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ bt3c_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ bt3c_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int bt3c_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ bt3c_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ bt3c_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ bt3c_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_bt3c_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "bt3c_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &bt3c_attach, &bt3c_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_bt3c_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ bt3c_detach(dev_list);
-+}
-+
-+
-+module_init(init_bt3c_cs);
-+module_exit(exit_bt3c_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/btuart_cs.c linux-2.4.18-mh15/drivers/bluetooth/btuart_cs.c
---- linux-2.4.18/drivers/bluetooth/btuart_cs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/btuart_cs.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,909 @@
-+/*
-+ *
-+ * Driver for Bluetooth PCMCIA cards with HCI UART interface
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/skbuff.h>
-+#include <linux/string.h>
-+#include <linux/serial.h>
-+#include <linux/serial_reg.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0xffff;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ driver for Bluetooth PCMCIA cards with HCI UART interface");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct btuart_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+} btuart_info_t;
-+
-+
-+void btuart_config(dev_link_t *link);
-+void btuart_release(u_long arg);
-+int btuart_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "btuart_cs";
-+
-+dev_link_t *btuart_attach(void);
-+void btuart_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Maximum baud rate */
-+#define SPEED_MAX 115200
-+
-+/* Default baud rate: 57600, 115200, 230400 or 460800 */
-+#define DEFAULT_BAUD_RATE 115200
-+
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_WAITING 8
-+
-+/* Receiver states */
-+#define RECV_WAIT_PACKET_TYPE 0
-+#define RECV_WAIT_EVENT_HEADER 1
-+#define RECV_WAIT_ACL_HEADER 2
-+#define RECV_WAIT_SCO_HEADER 3
-+#define RECV_WAIT_DATA 4
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int btuart_write(unsigned int iobase, int fifo_size, __u8 *buf, int len)
-+{
-+ int actual = 0;
-+
-+ /* Tx FIFO should be empty */
-+ if (!(inb(iobase + UART_LSR) & UART_LSR_THRE))
-+ return 0;
-+
-+ /* Fill FIFO with current frame */
-+ while ((fifo_size-- > 0) && (actual < len)) {
-+ /* Transmit next byte */
-+ outb(buf[actual], iobase + UART_TX);
-+ actual++;
-+ }
-+
-+ return actual;
-+}
-+
-+
-+static void btuart_write_wakeup(btuart_info_t *info)
-+{
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ clear_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ return;
-+
-+ if (!(skb = skb_dequeue(&(info->txq))))
-+ break;
-+
-+ /* Send frame */
-+ len = btuart_write(iobase, 16, skb->data, skb->len);
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (len == skb->len) {
-+ kfree_skb(skb);
-+ } else {
-+ skb_pull(skb, len);
-+ skb_queue_head(&(info->txq), skb);
-+ }
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
-+
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+}
-+
-+
-+static void btuart_receive(btuart_info_t *info)
-+{
-+ unsigned int iobase;
-+ int boguscount = 0;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ do {
-+ info->hdev.stat.byte_rx++;
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL) {
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "btuart_cs: Can't allocate mem for new packet.\n");
-+ return;
-+ }
-+ }
-+
-+ if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
-+
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type = inb(iobase + UART_RX);
-+
-+ switch (info->rx_skb->pkt_type) {
-+
-+ case HCI_EVENT_PKT:
-+ info->rx_state = RECV_WAIT_EVENT_HEADER;
-+ info->rx_count = HCI_EVENT_HDR_SIZE;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ info->rx_state = RECV_WAIT_ACL_HEADER;
-+ info->rx_count = HCI_ACL_HDR_SIZE;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ info->rx_state = RECV_WAIT_SCO_HEADER;
-+ info->rx_count = HCI_SCO_HDR_SIZE;
-+ break;
-+
-+ default:
-+ /* Unknown packet */
-+ printk(KERN_WARNING "btuart_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ info->hdev.stat.err_rx++;
-+ clear_bit(HCI_RUNNING, &(info->hdev.flags));
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ } else {
-+
-+ *skb_put(info->rx_skb, 1) = inb(iobase + UART_RX);
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ int dlen;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+
-+
-+ switch (info->rx_state) {
-+
-+ case RECV_WAIT_EVENT_HEADER:
-+ eh = (hci_event_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = eh->plen;
-+ break;
-+
-+ case RECV_WAIT_ACL_HEADER:
-+ ah = (hci_acl_hdr *)(info->rx_skb->data);
-+ dlen = __le16_to_cpu(ah->dlen);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = dlen;
-+ break;
-+
-+ case RECV_WAIT_SCO_HEADER:
-+ sh = (hci_sco_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = sh->dlen;
-+ break;
-+
-+ case RECV_WAIT_DATA:
-+ hci_recv_frame(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 16)
-+ break;
-+
-+ } while (inb(iobase + UART_LSR) & UART_LSR_DR);
-+}
-+
-+
-+void btuart_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ btuart_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ int boguscount = 0;
-+ int iir, lsr;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+ while (iir) {
-+
-+ /* Clear interrupt */
-+ lsr = inb(iobase + UART_LSR);
-+
-+ switch (iir) {
-+ case UART_IIR_RLSI:
-+ printk(KERN_NOTICE "btuart_cs: RLSI\n");
-+ break;
-+ case UART_IIR_RDI:
-+ /* Receive interrupt */
-+ btuart_receive(info);
-+ break;
-+ case UART_IIR_THRI:
-+ if (lsr & UART_LSR_THRE) {
-+ /* Transmitter ready for data */
-+ btuart_write_wakeup(info);
-+ }
-+ break;
-+ default:
-+ printk(KERN_NOTICE "btuart_cs: Unhandled IIR=%#x\n", iir);
-+ break;
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 100)
-+ break;
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+
-+ }
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+static void btuart_change_speed(btuart_info_t *info, unsigned int speed)
-+{
-+ unsigned long flags;
-+ unsigned int iobase;
-+ int fcr; /* FIFO control reg */
-+ int lcr; /* Line control reg */
-+ int divisor;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of change speed for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ divisor = SPEED_MAX / speed;
-+
-+ fcr = UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT;
-+
-+ /*
-+ * Use trigger level 1 to avoid 3 ms. timeout delay at 9600 bps, and
-+ * almost 1,7 ms at 19200 bps. At speeds above that we can just forget
-+ * about this timeout since it will always be fast enough.
-+ */
-+
-+ if (speed < 38400)
-+ fcr |= UART_FCR_TRIGGER_1;
-+ else
-+ fcr |= UART_FCR_TRIGGER_14;
-+
-+ /* Bluetooth cards use 8N1 */
-+ lcr = UART_LCR_WLEN8;
-+
-+ outb(UART_LCR_DLAB | lcr, iobase + UART_LCR); /* Set DLAB */
-+ outb(divisor & 0xff, iobase + UART_DLL); /* Set speed */
-+ outb(divisor >> 8, iobase + UART_DLM);
-+ outb(lcr, iobase + UART_LCR); /* Set 8N1 */
-+ outb(fcr, iobase + UART_FCR); /* Enable FIFO's */
-+
-+ /* Turn on interrups */
-+ outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+}
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int btuart_hci_flush(struct hci_dev *hdev)
-+{
-+ btuart_info_t *info = (btuart_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_open(struct hci_dev *hdev)
-+{
-+ set_bit(HCI_RUNNING, &(hdev->flags));
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_close(struct hci_dev *hdev)
-+{
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ btuart_hci_flush(hdev);
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_send_frame(struct sk_buff *skb)
-+{
-+ btuart_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "btuart_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (btuart_info_t *)(hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ btuart_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+static void btuart_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int btuart_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+int btuart_open(btuart_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ info->rx_skb = NULL;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ /* Initialize UART */
-+ outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */
-+ outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR);
-+
-+ /* Turn on interrupts */
-+ // outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ btuart_change_speed(info, DEFAULT_BAUD_RATE);
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ);
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = btuart_hci_open;
-+ hdev->close = btuart_hci_close;
-+ hdev->flush = btuart_hci_flush;
-+ hdev->send = btuart_hci_send_frame;
-+ hdev->destruct = btuart_hci_destruct;
-+ hdev->ioctl = btuart_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "btuart_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int btuart_close(btuart_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
-+ btuart_hci_close(hdev);
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "btuart_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *btuart_attach(void)
-+{
-+ btuart_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &btuart_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = btuart_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &btuart_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ btuart_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void btuart_detach(dev_link_t *link)
-+{
-+ btuart_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+ if (link->state & DEV_CONFIG)
-+ btuart_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void btuart_config(dev_link_t *link)
-+{
-+ static ioaddr_t base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
-+ client_handle_t handle = link->handle;
-+ btuart_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
-+ int i, j, try, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ /* First pass: look for a config entry that looks normal. */
-+ tuple.TupleData = (cisdata_t *) buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-+ /* Two tries: without IO aliases, then with aliases */
-+ for (try = 0; try < 2; try++) {
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if (i != CS_SUCCESS)
-+ goto next_entry;
-+ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) {
-+ link->conf.ConfigIndex = cf->index;
-+ link->io.BasePort1 = cf->io.win[0].base;
-+ link->io.IOAddrLines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+next_entry:
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+ }
-+
-+ /* Second pass: try to find an entry that isn't picky about
-+ its base address, then try to grab any standard serial port
-+ address, and finally try to get any free port. */
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if ((i == CS_SUCCESS) && (cf->io.nwin > 0)
-+ && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-+ link->conf.ConfigIndex = cf->index;
-+ for (j = 0; j < 5; j++) {
-+ link->io.BasePort1 = base[j];
-+ link->io.IOAddrLines = base[j] ? 16 : 3;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+ }
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+
-+found_port:
-+ if (i != CS_SUCCESS) {
-+ printk(KERN_NOTICE "btuart_cs: No usable port range found. Giving up.\n");
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (btuart_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ btuart_release((u_long) link);
-+}
-+
-+
-+void btuart_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ btuart_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ btuart_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int btuart_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ btuart_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ btuart_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ btuart_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_btuart_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "btuart_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &btuart_attach, &btuart_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_btuart_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ btuart_detach(dev_list);
-+}
-+
-+
-+module_init(init_btuart_cs);
-+module_exit(exit_btuart_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/Config.in linux-2.4.18-mh15/drivers/bluetooth/Config.in
---- linux-2.4.18/drivers/bluetooth/Config.in 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/bluetooth/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -1,8 +1,33 @@
-+#
-+# Bluetooth HCI device drivers configuration
-+#
-+
- mainmenu_option next_comment
- comment 'Bluetooth device drivers'
-
- dep_tristate 'HCI USB driver' CONFIG_BLUEZ_HCIUSB $CONFIG_BLUEZ $CONFIG_USB
-+if [ "$CONFIG_BLUEZ_HCIUSB" != "n" ]; then
-+ bool ' SCO (voice) support' CONFIG_BLUEZ_HCIUSB_SCO
-+fi
-+
- dep_tristate 'HCI UART driver' CONFIG_BLUEZ_HCIUART $CONFIG_BLUEZ
--dep_tristate 'HCI VHCI virtual HCI device driver' CONFIG_BLUEZ_HCIVHCI $CONFIG_BLUEZ
-+if [ "$CONFIG_BLUEZ_HCIUART" != "n" ]; then
-+ bool ' UART (H4) protocol support' CONFIG_BLUEZ_HCIUART_H4
-+ bool ' BCSP protocol support' CONFIG_BLUEZ_HCIUART_BCSP
-+ dep_bool ' Transmit CRC with every BCSP packet' CONFIG_BLUEZ_HCIUART_BCSP_TXCRC $CONFIG_BLUEZ_HCIUART_BCSP
-+fi
-+
-+dep_tristate 'HCI BlueFRITZ! USB driver' CONFIG_BLUEZ_HCIBFUSB $CONFIG_BLUEZ $CONFIG_USB
-+
-+dep_tristate 'HCI DTL1 (PC Card) driver' CONFIG_BLUEZ_HCIDTL1 $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI BT3C (PC Card) driver' CONFIG_BLUEZ_HCIBT3C $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI BlueCard (PC Card) driver' CONFIG_BLUEZ_HCIBLUECARD $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI UART (PC Card) driver' CONFIG_BLUEZ_HCIBTUART $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI VHCI (Virtual HCI device) driver' CONFIG_BLUEZ_HCIVHCI $CONFIG_BLUEZ
-
- endmenu
-+
-diff -urN linux-2.4.18/drivers/bluetooth/dtl1_cs.c linux-2.4.18-mh15/drivers/bluetooth/dtl1_cs.c
---- linux-2.4.18/drivers/bluetooth/dtl1_cs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/dtl1_cs.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,861 @@
-+/*
-+ *
-+ * A driver for Nokia Connectivity Card DTL-1 devices
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/skbuff.h>
-+#include <linux/string.h>
-+#include <linux/serial.h>
-+#include <linux/serial_reg.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0xffff;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ driver for Nokia Connectivity Card DTL-1");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct dtl1_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+
-+ unsigned long flowmask; /* HCI flow mask */
-+ int ri_latch;
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+} dtl1_info_t;
-+
-+
-+void dtl1_config(dev_link_t *link);
-+void dtl1_release(u_long arg);
-+int dtl1_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "dtl1_cs";
-+
-+dev_link_t *dtl1_attach(void);
-+void dtl1_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_WAITING 8
-+
-+/* Receiver States */
-+#define RECV_WAIT_NSH 0
-+#define RECV_WAIT_DATA 1
-+
-+
-+typedef struct {
-+ u8 type;
-+ u8 zero;
-+ u16 len;
-+} __attribute__ ((packed)) nsh_t; /* Nokia Specific Header */
-+
-+#define NSHL 4 /* Nokia Specific Header Length */
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int dtl1_write(unsigned int iobase, int fifo_size, __u8 *buf, int len)
-+{
-+ int actual = 0;
-+
-+ /* Tx FIFO should be empty */
-+ if (!(inb(iobase + UART_LSR) & UART_LSR_THRE))
-+ return 0;
-+
-+ /* Fill FIFO with current frame */
-+ while ((fifo_size-- > 0) && (actual < len)) {
-+ /* Transmit next byte */
-+ outb(buf[actual], iobase + UART_TX);
-+ actual++;
-+ }
-+
-+ return actual;
-+}
-+
-+
-+static void dtl1_write_wakeup(dtl1_info_t *info)
-+{
-+ if (!info) {
-+ printk(KERN_WARNING "dtl1_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (test_bit(XMIT_WAITING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ clear_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ return;
-+
-+ if (!(skb = skb_dequeue(&(info->txq))))
-+ break;
-+
-+ /* Send frame */
-+ len = dtl1_write(iobase, 32, skb->data, skb->len);
-+
-+ if (len == skb->len) {
-+ set_bit(XMIT_WAITING, &(info->tx_state));
-+ kfree_skb(skb);
-+ } else {
-+ skb_pull(skb, len);
-+ skb_queue_head(&(info->txq), skb);
-+ }
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
-+
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+}
-+
-+
-+static void dtl1_control(dtl1_info_t *info, struct sk_buff *skb)
-+{
-+ u8 flowmask = *(u8 *)skb->data;
-+ int i;
-+
-+ printk(KERN_INFO "dtl1_cs: Nokia control data = ");
-+ for (i = 0; i < skb->len; i++) {
-+ printk("%02x ", skb->data[i]);
-+ }
-+ printk("\n");
-+
-+ /* transition to active state */
-+ if (((info->flowmask & 0x07) == 0) && ((flowmask & 0x07) != 0)) {
-+ clear_bit(XMIT_WAITING, &(info->tx_state));
-+ dtl1_write_wakeup(info);
-+ }
-+
-+ info->flowmask = flowmask;
-+
-+ kfree_skb(skb);
-+}
-+
-+
-+static void dtl1_receive(dtl1_info_t *info)
-+{
-+ unsigned int iobase;
-+ nsh_t *nsh;
-+ int boguscount = 0;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "dtl1_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ do {
-+ info->hdev.stat.byte_rx++;
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL)
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "dtl1_cs: Can't allocate mem for new packet.\n");
-+ info->rx_state = RECV_WAIT_NSH;
-+ info->rx_count = NSHL;
-+ return;
-+ }
-+
-+ *skb_put(info->rx_skb, 1) = inb(iobase + UART_RX);
-+ nsh = (nsh_t *)info->rx_skb->data;
-+
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ switch (info->rx_state) {
-+ case RECV_WAIT_NSH:
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = nsh->len + (nsh->len & 0x0001);
-+ break;
-+ case RECV_WAIT_DATA:
-+ info->rx_skb->pkt_type = nsh->type;
-+
-+ /* remove PAD byte if it exists */
-+ if (nsh->len & 0x0001) {
-+ info->rx_skb->tail--;
-+ info->rx_skb->len--;
-+ }
-+
-+ /* remove NSH */
-+ skb_pull(info->rx_skb, NSHL);
-+
-+ switch (info->rx_skb->pkt_type) {
-+ case 0x80:
-+ /* control data for the Nokia Card */
-+ dtl1_control(info, info->rx_skb);
-+ break;
-+ case 0x82:
-+ case 0x83:
-+ case 0x84:
-+ /* send frame to the HCI layer */
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type &= 0x0f;
-+ hci_recv_frame(info->rx_skb);
-+ break;
-+ default:
-+ /* unknown packet */
-+ printk(KERN_WARNING "dtl1_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ kfree_skb(info->rx_skb);
-+ break;
-+ }
-+
-+ info->rx_state = RECV_WAIT_NSH;
-+ info->rx_count = NSHL;
-+ info->rx_skb = NULL;
-+ break;
-+ }
-+
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 32)
-+ break;
-+
-+ } while (inb(iobase + UART_LSR) & UART_LSR_DR);
-+}
-+
-+
-+void dtl1_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ dtl1_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ unsigned char msr;
-+ int boguscount = 0;
-+ int iir, lsr;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "dtl1_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+ while (iir) {
-+
-+ /* Clear interrupt */
-+ lsr = inb(iobase + UART_LSR);
-+
-+ switch (iir) {
-+ case UART_IIR_RLSI:
-+ printk(KERN_NOTICE "dtl1_cs: RLSI\n");
-+ break;
-+ case UART_IIR_RDI:
-+ /* Receive interrupt */
-+ dtl1_receive(info);
-+ break;
-+ case UART_IIR_THRI:
-+ if (lsr & UART_LSR_THRE) {
-+ /* Transmitter ready for data */
-+ dtl1_write_wakeup(info);
-+ }
-+ break;
-+ default:
-+ printk(KERN_NOTICE "dtl1_cs: Unhandled IIR=%#x\n", iir);
-+ break;
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 100)
-+ break;
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+
-+ }
-+
-+ msr = inb(iobase + UART_MSR);
-+
-+ if (info->ri_latch ^ (msr & UART_MSR_RI)) {
-+ info->ri_latch = msr & UART_MSR_RI;
-+ clear_bit(XMIT_WAITING, &(info->tx_state));
-+ dtl1_write_wakeup(info);
-+ }
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int dtl1_hci_open(struct hci_dev *hdev)
-+{
-+ set_bit(HCI_RUNNING, &(hdev->flags));
-+
-+ return 0;
-+}
-+
-+
-+static int dtl1_hci_flush(struct hci_dev *hdev)
-+{
-+ dtl1_info_t *info = (dtl1_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int dtl1_hci_close(struct hci_dev *hdev)
-+{
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ dtl1_hci_flush(hdev);
-+
-+ return 0;
-+}
-+
-+
-+static int dtl1_hci_send_frame(struct sk_buff *skb)
-+{
-+ dtl1_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+ struct sk_buff *s;
-+ nsh_t nsh;
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "dtl1_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (dtl1_info_t *)(hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ nsh.type = 0x81;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ nsh.type = 0x82;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ nsh.type = 0x83;
-+ break;
-+ };
-+
-+ nsh.zero = 0;
-+ nsh.len = skb->len;
-+
-+ s = bluez_skb_alloc(NSHL + skb->len + 1, GFP_ATOMIC);
-+ skb_reserve(s, NSHL);
-+ memcpy(skb_put(s, skb->len), skb->data, skb->len);
-+ if (skb->len & 0x0001)
-+ *skb_put(s, 1) = 0; /* PAD */
-+
-+ /* Prepend skb with Nokia frame header and queue */
-+ memcpy(skb_push(s, NSHL), &nsh, NSHL);
-+ skb_queue_tail(&(info->txq), s);
-+
-+ dtl1_write_wakeup(info);
-+
-+ kfree_skb(skb);
-+
-+ return 0;
-+}
-+
-+
-+static void dtl1_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int dtl1_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+int dtl1_open(dtl1_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_NSH;
-+ info->rx_count = NSHL;
-+ info->rx_skb = NULL;
-+
-+ set_bit(XMIT_WAITING, &(info->tx_state));
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ /* Initialize UART */
-+ outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */
-+ outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR);
-+
-+ info->ri_latch = inb(info->link.io.BasePort1 + UART_MSR) & UART_MSR_RI;
-+
-+ /* Turn on interrupts */
-+ outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ * 2);
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = dtl1_hci_open;
-+ hdev->close = dtl1_hci_close;
-+ hdev->flush = dtl1_hci_flush;
-+ hdev->send = dtl1_hci_send_frame;
-+ hdev->destruct = dtl1_hci_destruct;
-+ hdev->ioctl = dtl1_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "dtl1_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int dtl1_close(dtl1_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ if (info->link.state & DEV_CONFIG_PENDING)
-+ return -ENODEV;
-+
-+ dtl1_hci_close(hdev);
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "dtl1_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *dtl1_attach(void)
-+{
-+ dtl1_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &dtl1_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = dtl1_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &dtl1_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ dtl1_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void dtl1_detach(dev_link_t *link)
-+{
-+ dtl1_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+ if (link->state & DEV_CONFIG)
-+ dtl1_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void dtl1_config(dev_link_t *link)
-+{
-+ client_handle_t handle = link->handle;
-+ dtl1_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
-+ int i, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-+
-+ /* Look for a generic full-sized window */
-+ link->io.NumPorts1 = 8;
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if ((i == CS_SUCCESS) && (cf->io.nwin == 1) && (cf->io.win[0].len > 8)) {
-+ link->conf.ConfigIndex = cf->index;
-+ link->io.BasePort1 = cf->io.win[0].base;
-+ link->io.NumPorts1 = cf->io.win[0].len; /*yo */
-+ link->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ break;
-+ }
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (dtl1_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ dtl1_release((u_long)link);
-+}
-+
-+
-+void dtl1_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ dtl1_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ dtl1_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int dtl1_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ dtl1_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ dtl1_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ dtl1_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_dtl1_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "dtl1_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &dtl1_attach, &dtl1_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_dtl1_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ dtl1_detach(dev_list);
-+}
-+
-+
-+module_init(init_dtl1_cs);
-+module_exit(exit_dtl1_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/hci_bcsp.c linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.c
---- linux-2.4.18/drivers/bluetooth/hci_bcsp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,710 @@
-+/*
-+ BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ).
-+ Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com>
-+
-+ Based on
-+ hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com>
-+ ABCSP by Carl Orsborn <cjo@csr.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_bcsp.c,v 1.2 2002/09/26 05:05:14 maxk Exp $
-+ */
-+
-+#define VERSION "0.1"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/poll.h>
-+
-+#include <linux/slab.h>
-+#include <linux/tty.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/signal.h>
-+#include <linux/ioctl.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include "hci_uart.h"
-+#include "hci_bcsp.h"
-+
-+#ifndef HCI_UART_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
-+#endif
-+
-+/* ---- BCSP CRC calculation ---- */
-+
-+/* Table for calculating CRC for polynomial 0x1021, LSB processed first,
-+initial value 0xffff, bits shifted in reverse order. */
-+
-+static const u16 crc_table[] = {
-+ 0x0000, 0x1081, 0x2102, 0x3183,
-+ 0x4204, 0x5285, 0x6306, 0x7387,
-+ 0x8408, 0x9489, 0xa50a, 0xb58b,
-+ 0xc60c, 0xd68d, 0xe70e, 0xf78f
-+};
-+
-+/* Initialise the crc calculator */
-+#define BCSP_CRC_INIT(x) x = 0xffff
-+
-+/*
-+ Update crc with next data byte
-+
-+ Implementation note
-+ The data byte is treated as two nibbles. The crc is generated
-+ in reverse, i.e., bits are fed into the register from the top.
-+*/
-+static void bcsp_crc_update(u16 *crc, u8 d)
-+{
-+ u16 reg = *crc;
-+
-+ reg = (reg >> 4) ^ crc_table[(reg ^ d) & 0x000f];
-+ reg = (reg >> 4) ^ crc_table[(reg ^ (d >> 4)) & 0x000f];
-+
-+ *crc = reg;
-+}
-+
-+/*
-+ Get reverse of generated crc
-+
-+ Implementation note
-+ The crc generator (bcsp_crc_init() and bcsp_crc_update())
-+ creates a reversed crc, so it needs to be swapped back before
-+ being passed on.
-+*/
-+static u16 bcsp_crc_reverse(u16 crc)
-+{
-+ u16 b, rev;
-+
-+ for (b = 0, rev = 0; b < 16; b++) {
-+ rev = rev << 1;
-+ rev |= (crc & 1);
-+ crc = crc >> 1;
-+ }
-+ return (rev);
-+}
-+
-+/* ---- BCSP core ---- */
-+
-+static void bcsp_slip_msgdelim(struct sk_buff *skb)
-+{
-+ const char pkt_delim = 0xc0;
-+ memcpy(skb_put(skb, 1), &pkt_delim, 1);
-+}
-+
-+static void bcsp_slip_one_byte(struct sk_buff *skb, u8 c)
-+{
-+ const char esc_c0[2] = { 0xdb, 0xdc };
-+ const char esc_db[2] = { 0xdb, 0xdd };
-+
-+ switch (c) {
-+ case 0xc0:
-+ memcpy(skb_put(skb, 2), &esc_c0, 2);
-+ break;
-+ case 0xdb:
-+ memcpy(skb_put(skb, 2), &esc_db, 2);
-+ break;
-+ default:
-+ memcpy(skb_put(skb, 1), &c, 1);
-+ }
-+}
-+
-+static int bcsp_enqueue(struct hci_uart *hu, struct sk_buff *skb)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+
-+ if (skb->len > 0xFFF) {
-+ BT_ERR("Packet too long");
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+
-+ switch (skb->pkt_type) {
-+ case HCI_ACLDATA_PKT:
-+ case HCI_COMMAND_PKT:
-+ skb_queue_tail(&bcsp->rel, skb);
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ skb_queue_tail(&bcsp->unrel, skb);
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown packet type");
-+ kfree_skb(skb);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data,
-+ int len, int pkt_type)
-+{
-+ struct sk_buff *nskb;
-+ u8 hdr[4], chan;
-+ int rel, i;
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ u16 BCSP_CRC_INIT(bcsp_txmsg_crc);
-+#endif
-+
-+ switch (pkt_type) {
-+ case HCI_ACLDATA_PKT:
-+ chan = 6; /* BCSP ACL channel */
-+ rel = 1; /* reliable channel */
-+ break;
-+ case HCI_COMMAND_PKT:
-+ chan = 5; /* BCSP cmd/evt channel */
-+ rel = 1; /* reliable channel */
-+ break;
-+ case HCI_SCODATA_PKT:
-+ chan = 7; /* BCSP SCO channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ case BCSP_LE_PKT:
-+ chan = 1; /* BCSP LE channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ case BCSP_ACK_PKT:
-+ chan = 0; /* BCSP internal channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ default:
-+ BT_ERR("Unknown packet type");
-+ return NULL;
-+ }
-+
-+ /* Max len of packet: (original len +4(bcsp hdr) +2(crc))*2
-+ (because bytes 0xc0 and 0xdb are escaped, worst case is
-+ when the packet is all made of 0xc0 and 0xdb :) )
-+ + 2 (0xc0 delimiters at start and end). */
-+
-+ nskb = alloc_skb((len + 6) * 2 + 2, GFP_ATOMIC);
-+ if (!nskb)
-+ return NULL;
-+
-+ nskb->pkt_type = pkt_type;
-+
-+ bcsp_slip_msgdelim(nskb);
-+
-+ hdr[0] = bcsp->rxseq_txack << 3;
-+ bcsp->txack_req = 0;
-+ BT_DBG("We request packet no %u to card", bcsp->rxseq_txack);
-+
-+ if (rel) {
-+ hdr[0] |= 0x80 + bcsp->msgq_txseq;
-+ BT_DBG("Sending packet with seqno %u", bcsp->msgq_txseq);
-+ bcsp->msgq_txseq = ++(bcsp->msgq_txseq) & 0x07;
-+ }
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ hdr[0] |= 0x40;
-+#endif
-+
-+ hdr[1] = (len << 4) & 0xFF;
-+ hdr[1] |= chan;
-+ hdr[2] = len >> 4;
-+ hdr[3] = ~(hdr[0] + hdr[1] + hdr[2]);
-+
-+ /* Put BCSP header */
-+ for (i = 0; i < 4; i++) {
-+ bcsp_slip_one_byte(nskb, hdr[i]);
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ bcsp_crc_update(&bcsp_txmsg_crc, hdr[i]);
-+#endif
-+ }
-+
-+ /* Put payload */
-+ for (i = 0; i < len; i++) {
-+ bcsp_slip_one_byte(nskb, data[i]);
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ bcsp_crc_update(&bcsp_txmsg_crc, data[i]);
-+#endif
-+ }
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ /* Put CRC */
-+ bcsp_txmsg_crc = bcsp_crc_reverse(bcsp_txmsg_crc);
-+ bcsp_slip_one_byte(nskb, (u8) ((bcsp_txmsg_crc >> 8) & 0x00ff));
-+ bcsp_slip_one_byte(nskb, (u8) (bcsp_txmsg_crc & 0x00ff));
-+#endif
-+
-+ bcsp_slip_msgdelim(nskb);
-+ return nskb;
-+}
-+
-+/* This is a rewrite of pkt_avail in ABCSP */
-+static struct sk_buff *bcsp_dequeue(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = (struct bcsp_struct *) hu->priv;
-+ unsigned long flags;
-+ struct sk_buff *skb;
-+
-+ /* First of all, check for unreliable messages in the queue,
-+ since they have priority */
-+
-+ if ((skb = skb_dequeue(&bcsp->unrel)) != NULL) {
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, skb->data, skb->len, skb->pkt_type);
-+ if (nskb) {
-+ kfree_skb(skb);
-+ return nskb;
-+ } else {
-+ skb_queue_head(&bcsp->unrel, skb);
-+ BT_ERR("Could not dequeue pkt because alloc_skb failed");
-+ }
-+ }
-+
-+ /* Now, try to send a reliable pkt. We can only send a
-+ reliable packet if the number of packets sent but not yet ack'ed
-+ is < than the winsize */
-+
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ if (bcsp->unack.qlen < BCSP_TXWINSIZE && (skb = skb_dequeue(&bcsp->rel)) != NULL) {
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, skb->data, skb->len, skb->pkt_type);
-+ if (nskb) {
-+ __skb_queue_tail(&bcsp->unack, skb);
-+ mod_timer(&bcsp->tbcsp, jiffies + HZ / 4);
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+ return nskb;
-+ } else {
-+ skb_queue_head(&bcsp->rel, skb);
-+ BT_ERR("Could not dequeue pkt because alloc_skb failed");
-+ }
-+ }
-+
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+
-+ /* We could not send a reliable packet, either because there are
-+ none or because there are too many unack'ed pkts. Did we receive
-+ any packets we have not acknowledged yet ? */
-+
-+ if (bcsp->txack_req) {
-+ /* if so, craft an empty ACK pkt and send it on BCSP unreliable
-+ channel 0 */
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, NULL, 0, BCSP_ACK_PKT);
-+ return nskb;
-+ }
-+
-+ /* We have nothing to send */
-+ return NULL;
-+}
-+
-+static int bcsp_flush(struct hci_uart *hu)
-+{
-+ BT_DBG("hu %p", hu);
-+ return 0;
-+}
-+
-+/* Remove ack'ed packets */
-+static void bcsp_pkt_cull(struct bcsp_struct *bcsp)
-+{
-+ unsigned long flags;
-+ struct sk_buff *skb;
-+ int i, pkts_to_be_removed;
-+ u8 seqno;
-+
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ pkts_to_be_removed = bcsp->unack.qlen;
-+ seqno = bcsp->msgq_txseq;
-+
-+ while (pkts_to_be_removed) {
-+ if (bcsp->rxack == seqno)
-+ break;
-+ pkts_to_be_removed--;
-+ seqno = (seqno - 1) & 0x07;
-+ }
-+
-+ if (bcsp->rxack != seqno)
-+ BT_ERR("Peer acked invalid packet");
-+
-+ BT_DBG("Removing %u pkts out of %u, up to seqno %u",
-+ pkts_to_be_removed, bcsp->unack.qlen, (seqno - 1) & 0x07);
-+
-+ for (i = 0, skb = ((struct sk_buff *) &bcsp->unack)->next; i < pkts_to_be_removed
-+ && skb != (struct sk_buff *) &bcsp->unack; i++) {
-+ struct sk_buff *nskb;
-+
-+ nskb = skb->next;
-+ __skb_unlink(skb, &bcsp->unack);
-+ kfree_skb(skb);
-+ skb = nskb;
-+ }
-+ if (bcsp->unack.qlen == 0)
-+ del_timer(&bcsp->tbcsp);
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+ if (i != pkts_to_be_removed)
-+ BT_ERR("Removed only %u out of %u pkts", i, pkts_to_be_removed);
-+}
-+
-+/* Handle BCSP link-establishment packets. When we
-+ detect a "sync" packet, symptom that the BT module has reset,
-+ we do nothing :) (yet) */
-+static void bcsp_handle_le_pkt(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ u8 conf_pkt[4] = { 0xad, 0xef, 0xac, 0xed };
-+ u8 conf_rsp_pkt[4] = { 0xde, 0xad, 0xd0, 0xd0 };
-+ u8 sync_pkt[4] = { 0xda, 0xdc, 0xed, 0xed };
-+
-+ /* spot "conf" pkts and reply with a "conf rsp" pkt */
-+ if (bcsp->rx_skb->data[1] >> 4 == 4 && bcsp->rx_skb->data[2] == 0 &&
-+ !memcmp(&bcsp->rx_skb->data[4], conf_pkt, 4)) {
-+ struct sk_buff *nskb = alloc_skb(4, GFP_ATOMIC);
-+
-+ BT_DBG("Found a LE conf pkt");
-+ if (!nskb)
-+ return;
-+ memcpy(skb_put(nskb, 4), conf_rsp_pkt, 4);
-+ nskb->pkt_type = BCSP_LE_PKT;
-+
-+ skb_queue_head(&bcsp->unrel, nskb);
-+ hci_uart_tx_wakeup(hu);
-+ }
-+ /* Spot "sync" pkts. If we find one...disaster! */
-+ else if (bcsp->rx_skb->data[1] >> 4 == 4 && bcsp->rx_skb->data[2] == 0 &&
-+ !memcmp(&bcsp->rx_skb->data[4], sync_pkt, 4)) {
-+ BT_ERR("Found a LE sync pkt, card has reset");
-+ }
-+}
-+
-+static inline void bcsp_unslip_one_byte(struct bcsp_struct *bcsp, unsigned char byte)
-+{
-+ const u8 c0 = 0xc0, db = 0xdb;
-+
-+ switch (bcsp->rx_esc_state) {
-+ case BCSP_ESCSTATE_NOESC:
-+ switch (byte) {
-+ case 0xdb:
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_ESC;
-+ break;
-+ default:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &byte, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp->message_crc, byte);
-+ bcsp->rx_count--;
-+ }
-+ break;
-+
-+ case BCSP_ESCSTATE_ESC:
-+ switch (byte) {
-+ case 0xdc:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &c0, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp-> message_crc, 0xc0);
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ bcsp->rx_count--;
-+ break;
-+
-+ case 0xdd:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &db, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp-> message_crc, 0xdb);
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ bcsp->rx_count--;
-+ break;
-+
-+ default:
-+ BT_ERR ("Invalid byte %02x after esc byte", byte);
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_skb = NULL;
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ }
-+ }
-+}
-+
-+static inline void bcsp_complete_rx_pkt(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ int pass_up;
-+
-+ if (bcsp->rx_skb->data[0] & 0x80) { /* reliable pkt */
-+ BT_DBG("Received seqno %u from card", bcsp->rxseq_txack);
-+ bcsp->rxseq_txack++;
-+ bcsp->rxseq_txack %= 0x8;
-+ bcsp->txack_req = 1;
-+
-+ /* If needed, transmit an ack pkt */
-+ hci_uart_tx_wakeup(hu);
-+ }
-+
-+ bcsp->rxack = (bcsp->rx_skb->data[0] >> 3) & 0x07;
-+ BT_DBG("Request for pkt %u from card", bcsp->rxack);
-+
-+ bcsp_pkt_cull(bcsp);
-+ if ((bcsp->rx_skb->data[1] & 0x0f) == 6 &&
-+ bcsp->rx_skb->data[0] & 0x80) {
-+ bcsp->rx_skb->pkt_type = HCI_ACLDATA_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 5 &&
-+ bcsp->rx_skb->data[0] & 0x80) {
-+ bcsp->rx_skb->pkt_type = HCI_EVENT_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 7) {
-+ bcsp->rx_skb->pkt_type = HCI_SCODATA_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 1 &&
-+ !(bcsp->rx_skb->data[0] & 0x80)) {
-+ bcsp_handle_le_pkt(hu);
-+ pass_up = 0;
-+ } else
-+ pass_up = 0;
-+
-+ if (!pass_up) {
-+ if ((bcsp->rx_skb->data[1] & 0x0f) != 0 &&
-+ (bcsp->rx_skb->data[1] & 0x0f) != 1) {
-+ BT_ERR ("Packet for unknown channel (%u %s)",
-+ bcsp->rx_skb->data[1] & 0x0f,
-+ bcsp->rx_skb->data[0] & 0x80 ?
-+ "reliable" : "unreliable");
-+ }
-+ kfree_skb(bcsp->rx_skb);
-+ } else {
-+ /* Pull out BCSP hdr */
-+ skb_pull(bcsp->rx_skb, 4);
-+
-+ hci_recv_frame(bcsp->rx_skb);
-+ }
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_skb = NULL;
-+}
-+
-+/* Recv data */
-+static int bcsp_recv(struct hci_uart *hu, void *data, int count)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ register unsigned char *ptr;
-+
-+ BT_DBG("hu %p count %d rx_state %ld rx_count %ld",
-+ hu, count, bcsp->rx_state, bcsp->rx_count);
-+
-+ ptr = data;
-+ while (count) {
-+ if (bcsp->rx_count) {
-+ if (*ptr == 0xc0) {
-+ BT_ERR("Short BCSP packet");
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_START;
-+ bcsp->rx_count = 0;
-+ } else
-+ bcsp_unslip_one_byte(bcsp, *ptr);
-+
-+ ptr++; count--;
-+ continue;
-+ }
-+
-+ switch (bcsp->rx_state) {
-+ case BCSP_W4_BCSP_HDR:
-+ if ((0xff & (u8) ~ (bcsp->rx_skb->data[0] + bcsp->rx_skb->data[1] +
-+ bcsp->rx_skb->data[2])) != bcsp->rx_skb->data[3]) {
-+ BT_ERR("Error in BCSP hdr checksum");
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ if (bcsp->rx_skb->data[0] & 0x80 /* reliable pkt */
-+ && (bcsp->rx_skb->data[0] & 0x07) != bcsp->rxseq_txack) {
-+ BT_ERR ("Out-of-order packet arrived, got %u expected %u",
-+ bcsp->rx_skb->data[0] & 0x07, bcsp->rxseq_txack);
-+
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ bcsp->rx_state = BCSP_W4_DATA;
-+ bcsp->rx_count = (bcsp->rx_skb->data[1] >> 4) +
-+ (bcsp->rx_skb->data[2] << 4); /* May be 0 */
-+ continue;
-+
-+ case BCSP_W4_DATA:
-+ if (bcsp->rx_skb->data[0] & 0x40) { /* pkt with crc */
-+ bcsp->rx_state = BCSP_W4_CRC;
-+ bcsp->rx_count = 2;
-+ } else
-+ bcsp_complete_rx_pkt(hu);
-+ continue;
-+
-+ case BCSP_W4_CRC:
-+ if (bcsp_crc_reverse(bcsp->message_crc) !=
-+ (bcsp->rx_skb->data[bcsp->rx_skb->len - 2] << 8) +
-+ bcsp->rx_skb->data[bcsp->rx_skb->len - 1]) {
-+
-+ BT_ERR ("Checksum failed: computed %04x received %04x",
-+ bcsp_crc_reverse(bcsp->message_crc),
-+ (bcsp->rx_skb-> data[bcsp->rx_skb->len - 2] << 8) +
-+ bcsp->rx_skb->data[bcsp->rx_skb->len - 1]);
-+
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ skb_trim(bcsp->rx_skb, bcsp->rx_skb->len - 2);
-+ bcsp_complete_rx_pkt(hu);
-+ continue;
-+
-+ case BCSP_W4_PKT_DELIMITER:
-+ switch (*ptr) {
-+ case 0xc0:
-+ bcsp->rx_state = BCSP_W4_PKT_START;
-+ break;
-+ default:
-+ /*BT_ERR("Ignoring byte %02x", *ptr);*/
-+ break;
-+ }
-+ ptr++; count--;
-+ break;
-+
-+ case BCSP_W4_PKT_START:
-+ switch (*ptr) {
-+ case 0xc0:
-+ ptr++; count--;
-+ break;
-+
-+ default:
-+ bcsp->rx_state = BCSP_W4_BCSP_HDR;
-+ bcsp->rx_count = 4;
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ BCSP_CRC_INIT(bcsp->message_crc);
-+
-+ /* Do not increment ptr or decrement count
-+ * Allocate packet. Max len of a BCSP pkt=
-+ * 0xFFF (payload) +4 (header) +2 (crc) */
-+
-+ bcsp->rx_skb = bluez_skb_alloc(0x1005, GFP_ATOMIC);
-+ if (!bcsp->rx_skb) {
-+ BT_ERR("Can't allocate mem for new packet");
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ return 0;
-+ }
-+ bcsp->rx_skb->dev = (void *) &hu->hdev;
-+ break;
-+ }
-+ break;
-+ }
-+ }
-+ return count;
-+}
-+
-+ /* Arrange to retransmit all messages in the relq. */
-+static void bcsp_timed_event(unsigned long arg)
-+{
-+ struct hci_uart *hu = (struct hci_uart *) arg;
-+ struct bcsp_struct *bcsp = (struct bcsp_struct *) hu->priv;
-+ struct sk_buff *skb;
-+ unsigned long flags;
-+
-+ BT_DBG("hu %p retransmitting %u pkts", hu, bcsp->unack.qlen);
-+
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ while ((skb = __skb_dequeue_tail(&bcsp->unack)) != NULL) {
-+ bcsp->msgq_txseq = (bcsp->msgq_txseq - 1) & 0x07;
-+ skb_queue_head(&bcsp->rel, skb);
-+ }
-+
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+ hci_uart_tx_wakeup(hu);
-+}
-+
-+static int bcsp_open(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ bcsp = kmalloc(sizeof(*bcsp), GFP_ATOMIC);
-+ if (!bcsp)
-+ return -ENOMEM;
-+ memset(bcsp, 0, sizeof(*bcsp));
-+
-+ hu->priv = bcsp;
-+ skb_queue_head_init(&bcsp->unack);
-+ skb_queue_head_init(&bcsp->rel);
-+ skb_queue_head_init(&bcsp->unrel);
-+
-+ init_timer(&bcsp->tbcsp);
-+ bcsp->tbcsp.function = bcsp_timed_event;
-+ bcsp->tbcsp.data = (u_long) hu;
-+
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+
-+ return 0;
-+}
-+
-+static int bcsp_close(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ hu->priv = NULL;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ skb_queue_purge(&bcsp->unack);
-+ skb_queue_purge(&bcsp->rel);
-+ skb_queue_purge(&bcsp->unrel);
-+ del_timer(&bcsp->tbcsp);
-+
-+ kfree(bcsp);
-+ return 0;
-+}
-+
-+static struct hci_uart_proto bcsp = {
-+ id: HCI_UART_BCSP,
-+ open: bcsp_open,
-+ close: bcsp_close,
-+ enqueue: bcsp_enqueue,
-+ dequeue: bcsp_dequeue,
-+ recv: bcsp_recv,
-+ flush: bcsp_flush
-+};
-+
-+int bcsp_init(void)
-+{
-+ return hci_uart_register_proto(&bcsp);
-+}
-+
-+int bcsp_deinit(void)
-+{
-+ return hci_uart_unregister_proto(&bcsp);
-+}
-diff -urN linux-2.4.18/drivers/bluetooth/hci_bcsp.h linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.h
---- linux-2.4.18/drivers/bluetooth/hci_bcsp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,70 @@
-+/*
-+ BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ).
-+ Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com>
-+
-+ Based on
-+ hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com>
-+ ABCSP by Carl Orsborn <cjo@csr.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_bcsp.h,v 1.2 2002/09/26 05:05:14 maxk Exp $
-+ */
-+
-+#ifndef __HCI_BCSP_H__
-+#define __HCI_BCSP_H__
-+
-+#define BCSP_TXWINSIZE 4
-+
-+#define BCSP_ACK_PKT 0x05
-+#define BCSP_LE_PKT 0x06
-+
-+struct bcsp_struct {
-+ struct sk_buff_head unack; /* Unack'ed packets queue */
-+ struct sk_buff_head rel; /* Reliable packets queue */
-+ struct sk_buff_head unrel; /* Unreliable packets queue */
-+
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+ u8 rxseq_txack; /* rxseq == txack. */
-+ u8 rxack; /* Last packet sent by us that the peer ack'ed */
-+ struct timer_list tbcsp;
-+
-+ enum {
-+ BCSP_W4_PKT_DELIMITER,
-+ BCSP_W4_PKT_START,
-+ BCSP_W4_BCSP_HDR,
-+ BCSP_W4_DATA,
-+ BCSP_W4_CRC
-+ } rx_state;
-+
-+ enum {
-+ BCSP_ESCSTATE_NOESC,
-+ BCSP_ESCSTATE_ESC
-+ } rx_esc_state;
-+
-+ u16 message_crc;
-+ u8 txack_req; /* Do we need to send ack's to the peer? */
-+
-+ /* Reliable packet sequence number - used to assign seq to each rel pkt. */
-+ u8 msgq_txseq;
-+};
-+
-+#endif /* __HCI_BCSP_H__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_h4.c linux-2.4.18-mh15/drivers/bluetooth/hci_h4.c
---- linux-2.4.18/drivers/bluetooth/hci_h4.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_h4.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,277 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ HCI UART(H4) protocol.
-+ *
-+ * $Id: hci_h4.c,v 1.3 2002/09/09 01:17:32 maxk Exp $
-+ */
-+#define VERSION "1.2"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/poll.h>
-+
-+#include <linux/slab.h>
-+#include <linux/tty.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/signal.h>
-+#include <linux/ioctl.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include "hci_uart.h"
-+#include "hci_h4.h"
-+
-+#ifndef HCI_UART_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
-+#endif
-+
-+/* Initialize protocol */
-+static int h4_open(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ h4 = kmalloc(sizeof(*h4), GFP_ATOMIC);
-+ if (!h4)
-+ return -ENOMEM;
-+ memset(h4, 0, sizeof(*h4));
-+
-+ skb_queue_head_init(&h4->txq);
-+
-+ hu->priv = h4;
-+ return 0;
-+}
-+
-+/* Flush protocol data */
-+static int h4_flush(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+
-+ BT_DBG("hu %p", hu);
-+ skb_queue_purge(&h4->txq);
-+ return 0;
-+}
-+
-+/* Close protocol */
-+static int h4_close(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+ hu->priv = NULL;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ skb_queue_purge(&h4->txq);
-+ if (h4->rx_skb)
-+ kfree_skb(h4->rx_skb);
-+
-+ hu->priv = NULL;
-+ kfree(h4);
-+ return 0;
-+}
-+
-+/* Enqueue frame for transmittion (padding, crc, etc) */
-+static int h4_enqueue(struct hci_uart *hu, struct sk_buff *skb)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+
-+ BT_DBG("hu %p skb %p", hu, skb);
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &skb->pkt_type, 1);
-+ skb_queue_tail(&h4->txq, skb);
-+ return 0;
-+}
-+
-+static inline int h4_check_data_len(struct h4_struct *h4, int len)
-+{
-+ register int room = skb_tailroom(h4->rx_skb);
-+
-+ BT_DBG("len %d room %d", len, room);
-+ if (!len) {
-+ BT_DMP(h4->rx_skb->data, h4->rx_skb->len);
-+ hci_recv_frame(h4->rx_skb);
-+ } else if (len > room) {
-+ BT_ERR("Data length is too large");
-+ kfree_skb(h4->rx_skb);
-+ } else {
-+ h4->rx_state = H4_W4_DATA;
-+ h4->rx_count = len;
-+ return len;
-+ }
-+
-+ h4->rx_state = H4_W4_PACKET_TYPE;
-+ h4->rx_skb = NULL;
-+ h4->rx_count = 0;
-+ return 0;
-+}
-+
-+/* Recv data */
-+static int h4_recv(struct hci_uart *hu, void *data, int count)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+ register char *ptr;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+ register int len, type, dlen;
-+
-+ BT_DBG("hu %p count %d rx_state %ld rx_count %ld",
-+ hu, count, h4->rx_state, h4->rx_count);
-+
-+ ptr = data;
-+ while (count) {
-+ if (h4->rx_count) {
-+ len = MIN(h4->rx_count, count);
-+ memcpy(skb_put(h4->rx_skb, len), ptr, len);
-+ h4->rx_count -= len; count -= len; ptr += len;
-+
-+ if (h4->rx_count)
-+ continue;
-+
-+ switch (h4->rx_state) {
-+ case H4_W4_DATA:
-+ BT_DBG("Complete data");
-+
-+ BT_DMP(h4->rx_skb->data, h4->rx_skb->len);
-+
-+ hci_recv_frame(h4->rx_skb);
-+
-+ h4->rx_state = H4_W4_PACKET_TYPE;
-+ h4->rx_skb = NULL;
-+ continue;
-+
-+ case H4_W4_EVENT_HDR:
-+ eh = (hci_event_hdr *) h4->rx_skb->data;
-+
-+ BT_DBG("Event header: evt 0x%2.2x plen %d", eh->evt, eh->plen);
-+
-+ h4_check_data_len(h4, eh->plen);
-+ continue;
-+
-+ case H4_W4_ACL_HDR:
-+ ah = (hci_acl_hdr *) h4->rx_skb->data;
-+ dlen = __le16_to_cpu(ah->dlen);
-+
-+ BT_DBG("ACL header: dlen %d", dlen);
-+
-+ h4_check_data_len(h4, dlen);
-+ continue;
-+
-+ case H4_W4_SCO_HDR:
-+ sh = (hci_sco_hdr *) h4->rx_skb->data;
-+
-+ BT_DBG("SCO header: dlen %d", sh->dlen);
-+
-+ h4_check_data_len(h4, sh->dlen);
-+ continue;
-+ }
-+ }
-+
-+ /* H4_W4_PACKET_TYPE */
-+ switch (*ptr) {
-+ case HCI_EVENT_PKT:
-+ BT_DBG("Event packet");
-+ h4->rx_state = H4_W4_EVENT_HDR;
-+ h4->rx_count = HCI_EVENT_HDR_SIZE;
-+ type = HCI_EVENT_PKT;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ BT_DBG("ACL packet");
-+ h4->rx_state = H4_W4_ACL_HDR;
-+ h4->rx_count = HCI_ACL_HDR_SIZE;
-+ type = HCI_ACLDATA_PKT;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ BT_DBG("SCO packet");
-+ h4->rx_state = H4_W4_SCO_HDR;
-+ h4->rx_count = HCI_SCO_HDR_SIZE;
-+ type = HCI_SCODATA_PKT;
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown HCI packet type %2.2x", (__u8)*ptr);
-+ hu->hdev.stat.err_rx++;
-+ ptr++; count--;
-+ continue;
-+ };
-+ ptr++; count--;
-+
-+ /* Allocate packet */
-+ h4->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC);
-+ if (!h4->rx_skb) {
-+ BT_ERR("Can't allocate mem for new packet");
-+ h4->rx_state = H4_W4_PACKET_TYPE;
-+ h4->rx_count = 0;
-+ return 0;
-+ }
-+ h4->rx_skb->dev = (void *) &hu->hdev;
-+ h4->rx_skb->pkt_type = type;
-+ }
-+ return count;
-+}
-+
-+static struct sk_buff *h4_dequeue(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+ return skb_dequeue(&h4->txq);
-+}
-+
-+static struct hci_uart_proto h4p = {
-+ id: HCI_UART_H4,
-+ open: h4_open,
-+ close: h4_close,
-+ recv: h4_recv,
-+ enqueue: h4_enqueue,
-+ dequeue: h4_dequeue,
-+ flush: h4_flush,
-+};
-+
-+int h4_init(void)
-+{
-+ return hci_uart_register_proto(&h4p);
-+}
-+
-+int h4_deinit(void)
-+{
-+ return hci_uart_unregister_proto(&h4p);
-+}
-diff -urN linux-2.4.18/drivers/bluetooth/hci_h4.h linux-2.4.18-mh15/drivers/bluetooth/hci_h4.h
---- linux-2.4.18/drivers/bluetooth/hci_h4.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_h4.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,44 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_h4.h,v 1.2 2002/09/09 01:17:32 maxk Exp $
-+ */
-+
-+#ifdef __KERNEL__
-+struct h4_struct {
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+ struct sk_buff_head txq;
-+};
-+
-+/* H4 receiver States */
-+#define H4_W4_PACKET_TYPE 0
-+#define H4_W4_EVENT_HDR 1
-+#define H4_W4_ACL_HDR 2
-+#define H4_W4_SCO_HDR 3
-+#define H4_W4_DATA 4
-+
-+#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_ldisc.c linux-2.4.18-mh15/drivers/bluetooth/hci_ldisc.c
---- linux-2.4.18/drivers/bluetooth/hci_ldisc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_ldisc.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,579 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ HCI UART driver.
-+ *
-+ * $Id: hci_ldisc.c,v 1.5 2002/10/02 18:37:20 maxk Exp $
-+ */
-+#define VERSION "2.1"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/poll.h>
-+
-+#include <linux/slab.h>
-+#include <linux/tty.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/signal.h>
-+#include <linux/ioctl.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include "hci_uart.h"
-+
-+#ifndef HCI_UART_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
-+#endif
-+
-+static struct hci_uart_proto *hup[HCI_UART_MAX_PROTO];
-+
-+int hci_uart_register_proto(struct hci_uart_proto *p)
-+{
-+ if (p->id >= HCI_UART_MAX_PROTO)
-+ return -EINVAL;
-+
-+ if (hup[p->id])
-+ return -EEXIST;
-+
-+ hup[p->id] = p;
-+ return 0;
-+}
-+
-+int hci_uart_unregister_proto(struct hci_uart_proto *p)
-+{
-+ if (p->id >= HCI_UART_MAX_PROTO)
-+ return -EINVAL;
-+
-+ if (!hup[p->id])
-+ return -EINVAL;
-+
-+ hup[p->id] = NULL;
-+ return 0;
-+}
-+
-+static struct hci_uart_proto *hci_uart_get_proto(unsigned int id)
-+{
-+ if (id >= HCI_UART_MAX_PROTO)
-+ return NULL;
-+ return hup[id];
-+}
-+
-+static inline void hci_uart_tx_complete(struct hci_uart *hu, int pkt_type)
-+{
-+ struct hci_dev *hdev = &hu->hdev;
-+
-+ /* Update HCI stat counters */
-+ switch (pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ }
-+}
-+
-+static inline struct sk_buff *hci_uart_dequeue(struct hci_uart *hu)
-+{
-+ struct sk_buff *skb = hu->tx_skb;
-+ if (!skb)
-+ skb = hu->proto->dequeue(hu);
-+ else
-+ hu->tx_skb = NULL;
-+ return skb;
-+}
-+
-+int hci_uart_tx_wakeup(struct hci_uart *hu)
-+{
-+ struct tty_struct *tty = hu->tty;
-+ struct hci_dev *hdev = &hu->hdev;
-+ struct sk_buff *skb;
-+
-+ if (test_and_set_bit(HCI_UART_SENDING, &hu->tx_state)) {
-+ set_bit(HCI_UART_TX_WAKEUP, &hu->tx_state);
-+ return 0;
-+ }
-+
-+ BT_DBG("");
-+
-+restart:
-+ clear_bit(HCI_UART_TX_WAKEUP, &hu->tx_state);
-+
-+ while ((skb = hci_uart_dequeue(hu))) {
-+ int len;
-+
-+ set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
-+ len = tty->driver.write(tty, 0, skb->data, skb->len);
-+ hdev->stat.byte_tx += len;
-+
-+ skb_pull(skb, len);
-+ if (skb->len) {
-+ hu->tx_skb = skb;
-+ break;
-+ }
-+
-+ hci_uart_tx_complete(hu, skb->pkt_type);
-+ kfree_skb(skb);
-+ }
-+
-+ if (test_bit(HCI_UART_TX_WAKEUP, &hu->tx_state))
-+ goto restart;
-+
-+ clear_bit(HCI_UART_SENDING, &hu->tx_state);
-+ return 0;
-+}
-+
-+/* ------- Interface to HCI layer ------ */
-+/* Initialize device */
-+static int hci_uart_open(struct hci_dev *hdev)
-+{
-+ BT_DBG("%s %p", hdev->name, hdev);
-+
-+ /* Nothing to do for UART driver */
-+
-+ set_bit(HCI_RUNNING, &hdev->flags);
-+ return 0;
-+}
-+
-+/* Reset device */
-+static int hci_uart_flush(struct hci_dev *hdev)
-+{
-+ struct hci_uart *hu = (struct hci_uart *) hdev->driver_data;
-+ struct tty_struct *tty = hu->tty;
-+
-+ BT_DBG("hdev %p tty %p", hdev, tty);
-+
-+ if (hu->tx_skb) {
-+ kfree_skb(hu->tx_skb); hu->tx_skb = NULL;
-+ }
-+
-+ /* Flush any pending characters in the driver and discipline. */
-+ if (tty->ldisc.flush_buffer)
-+ tty->ldisc.flush_buffer(tty);
-+
-+ if (tty->driver.flush_buffer)
-+ tty->driver.flush_buffer(tty);
-+
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ hu->proto->flush(hu);
-+
-+ return 0;
-+}
-+
-+/* Close device */
-+static int hci_uart_close(struct hci_dev *hdev)
-+{
-+ BT_DBG("hdev %p", hdev);
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
-+ hci_uart_flush(hdev);
-+ return 0;
-+}
-+
-+/* Send frames from HCI layer */
-+static int hci_uart_send_frame(struct sk_buff *skb)
-+{
-+ struct hci_dev* hdev = (struct hci_dev *) skb->dev;
-+ struct tty_struct *tty;
-+ struct hci_uart *hu;
-+
-+ if (!hdev) {
-+ BT_ERR("Frame for uknown device (hdev=NULL)");
-+ return -ENODEV;
-+ }
-+
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return -EBUSY;
-+
-+ hu = (struct hci_uart *) hdev->driver_data;
-+ tty = hu->tty;
-+
-+ BT_DBG("%s: type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+
-+ hu->proto->enqueue(hu, skb);
-+
-+ hci_uart_tx_wakeup(hu);
-+ return 0;
-+}
-+
-+static void hci_uart_destruct(struct hci_dev *hdev)
-+{
-+ struct hci_uart *hu;
-+
-+ if (!hdev) return;
-+
-+ BT_DBG("%s", hdev->name);
-+
-+ hu = (struct hci_uart *) hdev->driver_data;
-+ kfree(hu);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+/* ------ LDISC part ------ */
-+/* hci_uart_tty_open
-+ *
-+ * Called when line discipline changed to HCI_UART.
-+ *
-+ * Arguments:
-+ * tty pointer to tty info structure
-+ * Return Value:
-+ * 0 if success, otherwise error code
-+ */
-+static int hci_uart_tty_open(struct tty_struct *tty)
-+{
-+ struct hci_uart *hu = (void *) tty->disc_data;
-+
-+ BT_DBG("tty %p", tty);
-+
-+ if (hu)
-+ return -EEXIST;
-+
-+ if (!(hu = kmalloc(sizeof(struct hci_uart), GFP_KERNEL))) {
-+ BT_ERR("Can't allocate controll structure");
-+ return -ENFILE;
-+ }
-+ memset(hu, 0, sizeof(struct hci_uart));
-+
-+ tty->disc_data = hu;
-+ hu->tty = tty;
-+
-+ spin_lock_init(&hu->rx_lock);
-+
-+ /* Flush any pending characters in the driver and line discipline */
-+ if (tty->ldisc.flush_buffer)
-+ tty->ldisc.flush_buffer(tty);
-+
-+ if (tty->driver.flush_buffer)
-+ tty->driver.flush_buffer(tty);
-+
-+ MOD_INC_USE_COUNT;
-+ return 0;
-+}
-+
-+/* hci_uart_tty_close()
-+ *
-+ * Called when the line discipline is changed to something
-+ * else, the tty is closed, or the tty detects a hangup.
-+ */
-+static void hci_uart_tty_close(struct tty_struct *tty)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+
-+ BT_DBG("tty %p", tty);
-+
-+ /* Detach from the tty */
-+ tty->disc_data = NULL;
-+
-+ if (hu) {
-+ struct hci_dev *hdev = &hu->hdev;
-+ hci_uart_close(hdev);
-+
-+ if (test_and_clear_bit(HCI_UART_PROTO_SET, &hu->flags)) {
-+ hu->proto->close(hu);
-+ hci_unregister_dev(hdev);
-+ }
-+
-+ MOD_DEC_USE_COUNT;
-+ }
-+}
-+
-+/* hci_uart_tty_wakeup()
-+ *
-+ * Callback for transmit wakeup. Called when low level
-+ * device driver can accept more send data.
-+ *
-+ * Arguments: tty pointer to associated tty instance data
-+ * Return Value: None
-+ */
-+static void hci_uart_tty_wakeup(struct tty_struct *tty)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+
-+ BT_DBG("");
-+
-+ if (!hu)
-+ return;
-+
-+ clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
-+
-+ if (tty != hu->tty)
-+ return;
-+
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ hci_uart_tx_wakeup(hu);
-+}
-+
-+/* hci_uart_tty_room()
-+ *
-+ * Callback function from tty driver. Return the amount of
-+ * space left in the receiver's buffer to decide if remote
-+ * transmitter is to be throttled.
-+ *
-+ * Arguments: tty pointer to associated tty instance data
-+ * Return Value: number of bytes left in receive buffer
-+ */
-+static int hci_uart_tty_room (struct tty_struct *tty)
-+{
-+ return 65536;
-+}
-+
-+/* hci_uart_tty_receive()
-+ *
-+ * Called by tty low level driver when receive data is
-+ * available.
-+ *
-+ * Arguments: tty pointer to tty isntance data
-+ * data pointer to received data
-+ * flags pointer to flags for data
-+ * count count of received data in bytes
-+ *
-+ * Return Value: None
-+ */
-+static void hci_uart_tty_receive(struct tty_struct *tty, const __u8 *data, char *flags, int count)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+
-+ if (!hu || tty != hu->tty)
-+ return;
-+
-+ if (!test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ return;
-+
-+ spin_lock(&hu->rx_lock);
-+ hu->proto->recv(hu, (void *) data, count);
-+ hu->hdev.stat.byte_rx += count;
-+ spin_unlock(&hu->rx_lock);
-+
-+ if (test_and_clear_bit(TTY_THROTTLED,&tty->flags) && tty->driver.unthrottle)
-+ tty->driver.unthrottle(tty);
-+}
-+
-+static int hci_uart_register_dev(struct hci_uart *hu)
-+{
-+ struct hci_dev *hdev;
-+
-+ BT_DBG("");
-+
-+ /* Initialize and register HCI device */
-+ hdev = &hu->hdev;
-+
-+ hdev->type = HCI_UART;
-+ hdev->driver_data = hu;
-+
-+ hdev->open = hci_uart_open;
-+ hdev->close = hci_uart_close;
-+ hdev->flush = hci_uart_flush;
-+ hdev->send = hci_uart_send_frame;
-+ hdev->destruct = hci_uart_destruct;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ BT_ERR("Can't register HCI device %s", hdev->name);
-+ return -ENODEV;
-+ }
-+ MOD_INC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int hci_uart_set_proto(struct hci_uart *hu, int id)
-+{
-+ struct hci_uart_proto *p;
-+ int err;
-+
-+ p = hci_uart_get_proto(id);
-+ if (!p)
-+ return -EPROTONOSUPPORT;
-+
-+ err = p->open(hu);
-+ if (err)
-+ return err;
-+
-+ hu->proto = p;
-+
-+ err = hci_uart_register_dev(hu);
-+ if (err) {
-+ p->close(hu);
-+ return err;
-+ }
-+ return 0;
-+}
-+
-+/* hci_uart_tty_ioctl()
-+ *
-+ * Process IOCTL system call for the tty device.
-+ *
-+ * Arguments:
-+ *
-+ * tty pointer to tty instance data
-+ * file pointer to open file object for device
-+ * cmd IOCTL command code
-+ * arg argument for IOCTL call (cmd dependent)
-+ *
-+ * Return Value: Command dependent
-+ */
-+static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file * file,
-+ unsigned int cmd, unsigned long arg)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ /* Verify the status of the device */
-+ if (!hu)
-+ return -EBADF;
-+
-+ switch (cmd) {
-+ case HCIUARTSETPROTO:
-+ if (!test_and_set_bit(HCI_UART_PROTO_SET, &hu->flags)) {
-+ err = hci_uart_set_proto(hu, arg);
-+ if (err) {
-+ clear_bit(HCI_UART_PROTO_SET, &hu->flags);
-+ return err;
-+ }
-+ tty->low_latency = 1;
-+ } else
-+ return -EBUSY;
-+
-+ case HCIUARTGETPROTO:
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ return hu->proto->id;
-+ return -EUNATCH;
-+
-+ default:
-+ err = n_tty_ioctl(tty, file, cmd, arg);
-+ break;
-+ };
-+
-+ return err;
-+}
-+
-+/*
-+ * We don't provide read/write/poll interface for user space.
-+ */
-+static ssize_t hci_uart_tty_read(struct tty_struct *tty, struct file *file, unsigned char *buf, size_t nr)
-+{
-+ return 0;
-+}
-+static ssize_t hci_uart_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *data, size_t count)
-+{
-+ return 0;
-+}
-+static unsigned int hci_uart_tty_poll(struct tty_struct *tty, struct file *filp, poll_table *wait)
-+{
-+ return 0;
-+}
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_H4
-+int h4_init(void);
-+int h4_deinit(void);
-+#endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+int bcsp_init(void);
-+int bcsp_deinit(void);
-+#endif
-+
-+int __init hci_uart_init(void)
-+{
-+ static struct tty_ldisc hci_uart_ldisc;
-+ int err;
-+
-+ BT_INFO("BlueZ HCI UART driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ VERSION);
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+
-+ /* Register the tty discipline */
-+
-+ memset(&hci_uart_ldisc, 0, sizeof (hci_uart_ldisc));
-+ hci_uart_ldisc.magic = TTY_LDISC_MAGIC;
-+ hci_uart_ldisc.name = "n_hci";
-+ hci_uart_ldisc.open = hci_uart_tty_open;
-+ hci_uart_ldisc.close = hci_uart_tty_close;
-+ hci_uart_ldisc.read = hci_uart_tty_read;
-+ hci_uart_ldisc.write = hci_uart_tty_write;
-+ hci_uart_ldisc.ioctl = hci_uart_tty_ioctl;
-+ hci_uart_ldisc.poll = hci_uart_tty_poll;
-+ hci_uart_ldisc.receive_room= hci_uart_tty_room;
-+ hci_uart_ldisc.receive_buf = hci_uart_tty_receive;
-+ hci_uart_ldisc.write_wakeup= hci_uart_tty_wakeup;
-+
-+ if ((err = tty_register_ldisc(N_HCI, &hci_uart_ldisc))) {
-+ BT_ERR("Can't register HCI line discipline (%d)", err);
-+ return err;
-+ }
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_H4
-+ h4_init();
-+#endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+ bcsp_init();
-+#endif
-+
-+ return 0;
-+}
-+
-+void hci_uart_cleanup(void)
-+{
-+ int err;
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_H4
-+ h4_deinit();
-+#endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+ bcsp_deinit();
-+#endif
-+
-+ /* Release tty registration of line discipline */
-+ if ((err = tty_register_ldisc(N_HCI, NULL)))
-+ BT_ERR("Can't unregister HCI line discipline (%d)", err);
-+}
-+
-+module_init(hci_uart_init);
-+module_exit(hci_uart_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_DESCRIPTION("BlueZ HCI UART driver ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/hci_uart.c linux-2.4.18-mh15/drivers/bluetooth/hci_uart.c
---- linux-2.4.18/drivers/bluetooth/hci_uart.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_uart.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,580 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * BlueZ HCI UART driver.
-- *
-- * $Id: hci_uart.c,v 1.5 2001/07/05 18:42:44 maxk Exp $
-- */
--#define VERSION "1.0"
--
--#include <linux/config.h>
--#include <linux/module.h>
--
--#include <linux/version.h>
--#include <linux/config.h>
--#include <linux/kernel.h>
--#include <linux/init.h>
--#include <linux/sched.h>
--#include <linux/types.h>
--#include <linux/fcntl.h>
--#include <linux/interrupt.h>
--#include <linux/ptrace.h>
--#include <linux/poll.h>
--
--#include <linux/slab.h>
--#include <linux/tty.h>
--#include <linux/errno.h>
--#include <linux/string.h>
--#include <linux/signal.h>
--#include <linux/ioctl.h>
--#include <linux/skbuff.h>
--
--#include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
--#include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/hci_uart.h>
--
--#ifndef HCI_UART_DEBUG
--#undef DBG
--#define DBG( A... )
--#undef DMP
--#define DMP( A... )
--#endif
--
--/* ------- Interface to HCI layer ------ */
--/* Initialize device */
--int n_hci_open(struct hci_dev *hdev)
--{
-- DBG("%s %p", hdev->name, hdev);
--
-- /* Nothing to do for UART driver */
--
-- hdev->flags |= HCI_RUNNING;
--
-- return 0;
--}
--
--/* Reset device */
--int n_hci_flush(struct hci_dev *hdev)
--{
-- struct n_hci *n_hci = (struct n_hci *) hdev->driver_data;
-- struct tty_struct *tty = n_hci->tty;
--
-- DBG("hdev %p tty %p", hdev, tty);
--
-- /* Drop TX queue */
-- skb_queue_purge(&n_hci->txq);
--
-- /* Flush any pending characters in the driver and discipline. */
-- if (tty->ldisc.flush_buffer)
-- tty->ldisc.flush_buffer(tty);
--
-- if (tty->driver.flush_buffer)
-- tty->driver.flush_buffer(tty);
--
-- return 0;
--}
--
--/* Close device */
--int n_hci_close(struct hci_dev *hdev)
--{
-- DBG("hdev %p", hdev);
--
-- hdev->flags &= ~HCI_RUNNING;
--
-- n_hci_flush(hdev);
--
-- return 0;
--}
--
--int n_hci_tx_wakeup(struct n_hci *n_hci)
--{
-- register struct tty_struct *tty = n_hci->tty;
--
-- if (test_and_set_bit(TRANS_SENDING, &n_hci->tx_state)) {
-- set_bit(TRANS_WAKEUP, &n_hci->tx_state);
-- return 0;
-- }
--
-- DBG("");
-- do {
-- register struct sk_buff *skb;
-- register int len;
--
-- clear_bit(TRANS_WAKEUP, &n_hci->tx_state);
--
-- if (!(skb = skb_dequeue(&n_hci->txq)))
-- break;
--
-- DMP(skb->data, skb->len);
--
-- /* Send frame to TTY driver */
-- tty->flags |= (1 << TTY_DO_WRITE_WAKEUP);
-- len = tty->driver.write(tty, 0, skb->data, skb->len);
--
-- n_hci->hdev.stat.byte_tx += len;
--
-- DBG("sent %d", len);
--
-- if (len == skb->len) {
-- /* Full frame was sent */
-- kfree_skb(skb);
-- } else {
-- /* Subtract sent part and requeue */
-- skb_pull(skb, len);
-- skb_queue_head(&n_hci->txq, skb);
-- }
-- } while (test_bit(TRANS_WAKEUP, &n_hci->tx_state));
-- clear_bit(TRANS_SENDING, &n_hci->tx_state);
--
-- return 0;
--}
--
--/* Send frames from HCI layer */
--int n_hci_send_frame(struct sk_buff *skb)
--{
-- struct hci_dev* hdev = (struct hci_dev *) skb->dev;
-- struct tty_struct *tty;
-- struct n_hci *n_hci;
--
-- if (!hdev) {
-- ERR("Frame for uknown device (hdev=NULL)");
-- return -ENODEV;
-- }
--
-- if (!(hdev->flags & HCI_RUNNING))
-- return -EBUSY;
--
-- n_hci = (struct n_hci *) hdev->driver_data;
-- tty = n_hci2tty(n_hci);
--
-- DBG("%s: type %d len %d", hdev->name, skb->pkt_type, skb->len);
--
-- switch (skb->pkt_type) {
-- case HCI_COMMAND_PKT:
-- hdev->stat.cmd_tx++;
-- break;
--
-- case HCI_ACLDATA_PKT:
-- hdev->stat.acl_tx++;
-- break;
--
-- case HCI_SCODATA_PKT:
-- hdev->stat.cmd_tx++;
-- break;
-- };
--
-- /* Prepend skb with frame type and queue */
-- memcpy(skb_push(skb, 1), &skb->pkt_type, 1);
-- skb_queue_tail(&n_hci->txq, skb);
--
-- n_hci_tx_wakeup(n_hci);
--
-- return 0;
--}
--
--/* ------ LDISC part ------ */
--
--/* n_hci_tty_open
-- *
-- * Called when line discipline changed to N_HCI.
-- *
-- * Arguments:
-- * tty pointer to tty info structure
-- * Return Value:
-- * 0 if success, otherwise error code
-- */
--static int n_hci_tty_open(struct tty_struct *tty)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
-- struct hci_dev *hdev;
--
-- DBG("tty %p", tty);
--
-- if (n_hci)
-- return -EEXIST;
--
-- if (!(n_hci = kmalloc(sizeof(struct n_hci), GFP_KERNEL))) {
-- ERR("Can't allocate controll structure");
-- return -ENFILE;
-- }
-- memset(n_hci, 0, sizeof(struct n_hci));
--
-- /* Initialize and register HCI device */
-- hdev = &n_hci->hdev;
--
-- hdev->type = HCI_UART;
-- hdev->driver_data = n_hci;
--
-- hdev->open = n_hci_open;
-- hdev->close = n_hci_close;
-- hdev->flush = n_hci_flush;
-- hdev->send = n_hci_send_frame;
--
-- if (hci_register_dev(hdev) < 0) {
-- ERR("Can't register HCI device %s", hdev->name);
-- kfree(n_hci);
-- return -ENODEV;
-- }
--
-- tty->disc_data = n_hci;
-- n_hci->tty = tty;
--
-- spin_lock_init(&n_hci->rx_lock);
-- n_hci->rx_state = WAIT_PACKET_TYPE;
--
-- skb_queue_head_init(&n_hci->txq);
--
-- MOD_INC_USE_COUNT;
--
-- /* Flush any pending characters in the driver and discipline. */
-- if (tty->ldisc.flush_buffer)
-- tty->ldisc.flush_buffer(tty);
--
-- if (tty->driver.flush_buffer)
-- tty->driver.flush_buffer(tty);
--
-- return 0;
--}
--
--/* n_hci_tty_close()
-- *
-- * Called when the line discipline is changed to something
-- * else, the tty is closed, or the tty detects a hangup.
-- */
--static void n_hci_tty_close(struct tty_struct *tty)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
-- struct hci_dev *hdev = &n_hci->hdev;
--
-- DBG("tty %p hdev %p", tty, hdev);
--
-- if (n_hci != NULL) {
-- n_hci_close(hdev);
--
-- if (hci_unregister_dev(hdev) < 0) {
-- ERR("Can't unregister HCI device %s",hdev->name);
-- }
--
-- hdev->driver_data = NULL;
-- tty->disc_data = NULL;
-- kfree(n_hci);
--
-- MOD_DEC_USE_COUNT;
-- }
--}
--
--/* n_hci_tty_wakeup()
-- *
-- * Callback for transmit wakeup. Called when low level
-- * device driver can accept more send data.
-- *
-- * Arguments: tty pointer to associated tty instance data
-- * Return Value: None
-- */
--static void n_hci_tty_wakeup( struct tty_struct *tty )
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
--
-- DBG("");
--
-- if (!n_hci)
-- return;
--
-- tty->flags &= ~(1 << TTY_DO_WRITE_WAKEUP);
--
-- if (tty != n_hci->tty)
-- return;
--
-- n_hci_tx_wakeup(n_hci);
--}
--
--/* n_hci_tty_room()
-- *
-- * Callback function from tty driver. Return the amount of
-- * space left in the receiver's buffer to decide if remote
-- * transmitter is to be throttled.
-- *
-- * Arguments: tty pointer to associated tty instance data
-- * Return Value: number of bytes left in receive buffer
-- */
--static int n_hci_tty_room (struct tty_struct *tty)
--{
-- return 65536;
--}
--
--static inline int n_hci_check_data_len(struct n_hci *n_hci, int len)
--{
-- register int room = skb_tailroom(n_hci->rx_skb);
--
-- DBG("len %d room %d", len, room);
-- if (!len) {
-- DMP(n_hci->rx_skb->data, n_hci->rx_skb->len);
-- hci_recv_frame(n_hci->rx_skb);
-- } else if (len > room) {
-- ERR("Data length is to large");
-- kfree_skb(n_hci->rx_skb);
-- n_hci->hdev.stat.err_rx++;
-- } else {
-- n_hci->rx_state = WAIT_DATA;
-- n_hci->rx_count = len;
-- return len;
-- }
--
-- n_hci->rx_state = WAIT_PACKET_TYPE;
-- n_hci->rx_skb = NULL;
-- n_hci->rx_count = 0;
-- return 0;
--}
--
--static inline void n_hci_rx(struct n_hci *n_hci, const __u8 * data, char *flags, int count)
--{
-- register const char *ptr;
-- hci_event_hdr *eh;
-- hci_acl_hdr *ah;
-- hci_sco_hdr *sh;
-- register int len, type, dlen;
--
-- DBG("count %d state %ld rx_count %ld", count, n_hci->rx_state, n_hci->rx_count);
--
-- n_hci->hdev.stat.byte_rx += count;
--
-- ptr = data;
-- while (count) {
-- if (n_hci->rx_count) {
-- len = MIN(n_hci->rx_count, count);
-- memcpy(skb_put(n_hci->rx_skb, len), ptr, len);
-- n_hci->rx_count -= len; count -= len; ptr += len;
--
-- if (n_hci->rx_count)
-- continue;
--
-- switch (n_hci->rx_state) {
-- case WAIT_DATA:
-- DBG("Complete data");
--
-- DMP(n_hci->rx_skb->data, n_hci->rx_skb->len);
--
-- hci_recv_frame(n_hci->rx_skb);
--
-- n_hci->rx_state = WAIT_PACKET_TYPE;
-- n_hci->rx_skb = NULL;
-- continue;
--
-- case WAIT_EVENT_HDR:
-- eh = (hci_event_hdr *) n_hci->rx_skb->data;
--
-- DBG("Event header: evt 0x%2.2x plen %d", eh->evt, eh->plen);
--
-- n_hci_check_data_len(n_hci, eh->plen);
-- continue;
--
-- case WAIT_ACL_HDR:
-- ah = (hci_acl_hdr *) n_hci->rx_skb->data;
-- dlen = __le16_to_cpu(ah->dlen);
--
-- DBG("ACL header: dlen %d", dlen);
--
-- n_hci_check_data_len(n_hci, dlen);
-- continue;
--
-- case WAIT_SCO_HDR:
-- sh = (hci_sco_hdr *) n_hci->rx_skb->data;
--
-- DBG("SCO header: dlen %d", sh->dlen);
--
-- n_hci_check_data_len(n_hci, sh->dlen);
-- continue;
-- };
-- }
--
-- /* WAIT_PACKET_TYPE */
-- switch (*ptr) {
-- case HCI_EVENT_PKT:
-- DBG("Event packet");
-- n_hci->rx_state = WAIT_EVENT_HDR;
-- n_hci->rx_count = HCI_EVENT_HDR_SIZE;
-- type = HCI_EVENT_PKT;
-- break;
--
-- case HCI_ACLDATA_PKT:
-- DBG("ACL packet");
-- n_hci->rx_state = WAIT_ACL_HDR;
-- n_hci->rx_count = HCI_ACL_HDR_SIZE;
-- type = HCI_ACLDATA_PKT;
-- break;
--
-- case HCI_SCODATA_PKT:
-- DBG("SCO packet");
-- n_hci->rx_state = WAIT_SCO_HDR;
-- n_hci->rx_count = HCI_SCO_HDR_SIZE;
-- type = HCI_SCODATA_PKT;
-- break;
--
-- default:
-- ERR("Unknown HCI packet type %2.2x", (__u8)*ptr);
-- n_hci->hdev.stat.err_rx++;
-- ptr++; count--;
-- continue;
-- };
-- ptr++; count--;
--
-- /* Allocate packet */
-- if (!(n_hci->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-- ERR("Can't allocate mem for new packet");
--
-- n_hci->rx_state = WAIT_PACKET_TYPE;
-- n_hci->rx_count = 0;
-- return;
-- }
-- n_hci->rx_skb->dev = (void *) &n_hci->hdev;
-- n_hci->rx_skb->pkt_type = type;
-- }
--}
--
--/* n_hci_tty_receive()
-- *
-- * Called by tty low level driver when receive data is
-- * available.
-- *
-- * Arguments: tty pointer to tty isntance data
-- * data pointer to received data
-- * flags pointer to flags for data
-- * count count of received data in bytes
-- *
-- * Return Value: None
-- */
--static void n_hci_tty_receive(struct tty_struct *tty, const __u8 * data, char *flags, int count)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
--
-- if (!n_hci || tty != n_hci->tty)
-- return;
--
-- spin_lock(&n_hci->rx_lock);
-- n_hci_rx(n_hci, data, flags, count);
-- spin_unlock(&n_hci->rx_lock);
--
-- if (test_and_clear_bit(TTY_THROTTLED,&tty->flags) && tty->driver.unthrottle)
-- tty->driver.unthrottle(tty);
--}
--
--/* n_hci_tty_ioctl()
-- *
-- * Process IOCTL system call for the tty device.
-- *
-- * Arguments:
-- *
-- * tty pointer to tty instance data
-- * file pointer to open file object for device
-- * cmd IOCTL command code
-- * arg argument for IOCTL call (cmd dependent)
-- *
-- * Return Value: Command dependent
-- */
--static int n_hci_tty_ioctl (struct tty_struct *tty, struct file * file,
-- unsigned int cmd, unsigned long arg)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
-- int error = 0;
--
-- DBG("");
--
-- /* Verify the status of the device */
-- if (!n_hci)
-- return -EBADF;
--
-- switch (cmd) {
-- default:
-- error = n_tty_ioctl(tty, file, cmd, arg);
-- break;
-- };
--
-- return error;
--}
--
--/*
-- * We don't provide read/write/poll interface for user space.
-- */
--static ssize_t n_hci_tty_read(struct tty_struct *tty, struct file *file, unsigned char *buf, size_t nr)
--{
-- return 0;
--}
--static ssize_t n_hci_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *data, size_t count)
--{
-- return 0;
--}
--static unsigned int n_hci_tty_poll(struct tty_struct *tty, struct file *filp, poll_table *wait)
--{
-- return 0;
--}
--
--int __init n_hci_init(void)
--{
-- static struct tty_ldisc n_hci_ldisc;
-- int err;
--
-- INF("BlueZ HCI UART driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
--
-- /* Register the tty discipline */
--
-- memset(&n_hci_ldisc, 0, sizeof (n_hci_ldisc));
-- n_hci_ldisc.magic = TTY_LDISC_MAGIC;
-- n_hci_ldisc.name = "n_hci";
-- n_hci_ldisc.open = n_hci_tty_open;
-- n_hci_ldisc.close = n_hci_tty_close;
-- n_hci_ldisc.read = n_hci_tty_read;
-- n_hci_ldisc.write = n_hci_tty_write;
-- n_hci_ldisc.ioctl = n_hci_tty_ioctl;
-- n_hci_ldisc.poll = n_hci_tty_poll;
-- n_hci_ldisc.receive_room= n_hci_tty_room;
-- n_hci_ldisc.receive_buf = n_hci_tty_receive;
-- n_hci_ldisc.write_wakeup= n_hci_tty_wakeup;
--
-- if ((err = tty_register_ldisc(N_HCI, &n_hci_ldisc))) {
-- ERR("Can't register HCI line discipline (%d)", err);
-- return err;
-- }
--
-- return 0;
--}
--
--void n_hci_cleanup(void)
--{
-- int err;
--
-- /* Release tty registration of line discipline */
-- if ((err = tty_register_ldisc(N_HCI, NULL)))
-- ERR("Can't unregister HCI line discipline (%d)", err);
--}
--
--module_init(n_hci_init);
--module_exit(n_hci_cleanup);
--
--MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
--MODULE_DESCRIPTION("BlueZ HCI UART driver ver " VERSION);
--MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/hci_uart.h linux-2.4.18-mh15/drivers/bluetooth/hci_uart.h
---- linux-2.4.18/drivers/bluetooth/hci_uart.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_uart.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,82 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_uart.h,v 1.2 2002/09/09 01:17:32 maxk Exp $
-+ */
-+
-+#ifndef N_HCI
-+#define N_HCI 15
-+#endif
-+
-+/* Ioctls */
-+#define HCIUARTSETPROTO _IOW('U', 200, int)
-+#define HCIUARTGETPROTO _IOR('U', 201, int)
-+
-+/* UART protocols */
-+#define HCI_UART_MAX_PROTO 4
-+
-+#define HCI_UART_H4 0
-+#define HCI_UART_BCSP 1
-+#define HCI_UART_3WIRE 2
-+#define HCI_UART_H4DS 3
-+
-+#ifdef __KERNEL__
-+struct hci_uart;
-+
-+struct hci_uart_proto {
-+ unsigned int id;
-+ int (*open)(struct hci_uart *hu);
-+ int (*close)(struct hci_uart *hu);
-+ int (*flush)(struct hci_uart *hu);
-+ int (*recv)(struct hci_uart *hu, void *data, int len);
-+ int (*enqueue)(struct hci_uart *hu, struct sk_buff *skb);
-+ struct sk_buff *(*dequeue)(struct hci_uart *hu);
-+};
-+
-+struct hci_uart {
-+ struct tty_struct *tty;
-+ struct hci_dev hdev;
-+ unsigned long flags;
-+
-+ struct hci_uart_proto *proto;
-+ void *priv;
-+
-+ struct sk_buff *tx_skb;
-+ unsigned long tx_state;
-+ spinlock_t rx_lock;
-+};
-+
-+/* HCI_UART flag bits */
-+#define HCI_UART_PROTO_SET 0
-+
-+/* TX states */
-+#define HCI_UART_SENDING 1
-+#define HCI_UART_TX_WAKEUP 2
-+
-+int hci_uart_register_proto(struct hci_uart_proto *p);
-+int hci_uart_unregister_proto(struct hci_uart_proto *p);
-+int hci_uart_tx_wakeup(struct hci_uart *hu);
-+
-+#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_usb.c linux-2.4.18-mh15/drivers/bluetooth/hci_usb.c
---- linux-2.4.18/drivers/bluetooth/hci_usb.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_usb.c 2004-08-01 16:26:23.000000000 +0200
-@@ -1,9 +1,10 @@
- /*
-- BlueZ - Bluetooth protocol stack for Linux
-+ HCI USB driver for Linux Bluetooth protocol stack (BlueZ)
- Copyright (C) 2000-2001 Qualcomm Incorporated
--
- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-
-+ Copyright (C) 2003 Maxim Krasnyansky <maxk@qualcomm.com>
-+
- 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;
-@@ -23,598 +24,938 @@
- */
-
- /*
-- * BlueZ HCI USB driver.
- * Based on original USB Bluetooth driver for Linux kernel
- * Copyright (c) 2000 Greg Kroah-Hartman <greg@kroah.com>
- * Copyright (c) 2000 Mark Douglas Corner <mcorner@umich.edu>
- *
-- * $Id: hci_usb.c,v 1.5 2001/07/05 18:42:44 maxk Exp $
-+ * $Id: hci_usb.c,v 1.8 2002/07/18 17:23:09 maxk Exp $
- */
--#define VERSION "1.0"
-+#define VERSION "2.7"
-
- #include <linux/config.h>
- #include <linux/module.h>
-
- #include <linux/version.h>
--#include <linux/config.h>
- #include <linux/kernel.h>
- #include <linux/init.h>
- #include <linux/sched.h>
-+#include <linux/unistd.h>
- #include <linux/types.h>
--#include <linux/fcntl.h>
- #include <linux/interrupt.h>
--#include <linux/ptrace.h>
--#include <linux/poll.h>
-
- #include <linux/slab.h>
--#include <linux/tty.h>
- #include <linux/errno.h>
- #include <linux/string.h>
--#include <linux/signal.h>
--#include <linux/ioctl.h>
- #include <linux/skbuff.h>
-
- #include <linux/usb.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/hci_usb.h>
-+
-+#include "hci_usb.h"
-
- #ifndef HCI_USB_DEBUG
--#undef DBG
--#define DBG( A... )
--#undef DMP
--#define DMP( A... )
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
- #endif
-
--static struct usb_device_id usb_bluetooth_ids [] = {
-+#ifndef CONFIG_BLUEZ_HCIUSB_ZERO_PACKET
-+#undef USB_ZERO_PACKET
-+#define USB_ZERO_PACKET 0
-+#endif
-+
-+static struct usb_driver hci_usb_driver;
-+
-+static struct usb_device_id bluetooth_ids[] = {
-+ /* Generic Bluetooth USB device */
- { USB_DEVICE_INFO(HCI_DEV_CLASS, HCI_DEV_SUBCLASS, HCI_DEV_PROTOCOL) },
-+
-+ /* AVM BlueFRITZ! USB v2.0 */
-+ { USB_DEVICE(0x057c, 0x3800) },
-+
-+ /* Bluetooth Ultraport Module from IBM */
-+ { USB_DEVICE(0x04bf, 0x030a) },
-+
-+ /* ALPS Modules with non-standard id */
-+ { USB_DEVICE(0x044e, 0x3001) },
-+ { USB_DEVICE(0x044e, 0x3002) },
-+
-+ /* Ericsson with non-standard id */
-+ { USB_DEVICE(0x0bdb, 0x1002) },
-+
- { } /* Terminating entry */
- };
-
--MODULE_DEVICE_TABLE (usb, usb_bluetooth_ids);
-+MODULE_DEVICE_TABLE (usb, bluetooth_ids);
-
--static int hci_usb_ctrl_msg(struct hci_usb *husb, struct sk_buff *skb);
--static int hci_usb_write_msg(struct hci_usb *husb, struct sk_buff *skb);
-+static struct usb_device_id blacklist_ids[] = {
-+ /* Broadcom BCM2033 without firmware */
-+ { USB_DEVICE(0x0a5c, 0x2033), driver_info: HCI_IGNORE },
-
--static void hci_usb_unlink_urbs(struct hci_usb *husb)
-+ /* Broadcom BCM2035 */
-+ { USB_DEVICE(0x0a5c, 0x200a), driver_info: HCI_RESET },
-+
-+ /* ISSC Bluetooth Adapter v3.1 */
-+ { USB_DEVICE(0x1131, 0x1001), driver_info: HCI_RESET },
-+
-+ /* Digianswer device */
-+ { USB_DEVICE(0x08fd, 0x0001), driver_info: HCI_DIGIANSWER },
-+
-+ /* RTX Telecom based adapter with buggy SCO support */
-+ { USB_DEVICE(0x0400, 0x0807), driver_info: HCI_BROKEN_ISOC },
-+
-+ { } /* Terminating entry */
-+};
-+
-+struct _urb *_urb_alloc(int isoc, int gfp)
- {
-- usb_unlink_urb(husb->read_urb);
-- usb_unlink_urb(husb->intr_urb);
-- usb_unlink_urb(husb->ctrl_urb);
-- usb_unlink_urb(husb->write_urb);
-+ struct _urb *_urb = kmalloc(sizeof(struct _urb) +
-+ sizeof(iso_packet_descriptor_t) * isoc, gfp);
-+ if (_urb) {
-+ memset(_urb, 0, sizeof(*_urb));
-+ spin_lock_init(&_urb->urb.lock);
-+ }
-+ return _urb;
-+}
-+
-+struct _urb *_urb_dequeue(struct _urb_queue *q)
-+{
-+ struct _urb *_urb = NULL;
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ {
-+ struct list_head *head = &q->head;
-+ struct list_head *next = head->next;
-+ if (next != head) {
-+ _urb = list_entry(next, struct _urb, list);
-+ list_del(next); _urb->queue = NULL;
-+ }
-+ }
-+ spin_unlock_irqrestore(&q->lock, flags);
-+ return _urb;
- }
-
--static void hci_usb_free_bufs(struct hci_usb *husb)
-+static void hci_usb_rx_complete(struct urb *urb);
-+static void hci_usb_tx_complete(struct urb *urb);
-+
-+#define __pending_tx(husb, type) (&husb->pending_tx[type-1])
-+#define __pending_q(husb, type) (&husb->pending_q[type-1])
-+#define __completed_q(husb, type) (&husb->completed_q[type-1])
-+#define __transmit_q(husb, type) (&husb->transmit_q[type-1])
-+#define __reassembly(husb, type) (husb->reassembly[type-1])
-+
-+static inline struct _urb *__get_completed(struct hci_usb *husb, int type)
- {
-- if (husb->read_urb) {
-- if (husb->read_urb->transfer_buffer)
-- kfree(husb->read_urb->transfer_buffer);
-- usb_free_urb(husb->read_urb);
-- }
-+ return _urb_dequeue(__completed_q(husb, type));
-+}
-
-- if (husb->intr_urb) {
-- if (husb->intr_urb->transfer_buffer)
-- kfree(husb->intr_urb->transfer_buffer);
-- usb_free_urb(husb->intr_urb);
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+static void __fill_isoc_desc(struct urb *urb, int len, int mtu)
-+{
-+ int offset = 0, i;
-+
-+ BT_DBG("len %d mtu %d", len, mtu);
-+
-+ for (i=0; i < HCI_MAX_ISOC_FRAMES && len >= mtu; i++, offset += mtu, len -= mtu) {
-+ urb->iso_frame_desc[i].offset = offset;
-+ urb->iso_frame_desc[i].length = mtu;
-+ BT_DBG("desc %d offset %d len %d", i, offset, mtu);
-+ }
-+ if (len && i < HCI_MAX_ISOC_FRAMES) {
-+ urb->iso_frame_desc[i].offset = offset;
-+ urb->iso_frame_desc[i].length = len;
-+ BT_DBG("desc %d offset %d len %d", i, offset, len);
-+ i++;
- }
-+ urb->number_of_packets = i;
-+}
-+#endif
-
-- if (husb->ctrl_urb)
-- usb_free_urb(husb->ctrl_urb);
-+static int hci_usb_intr_rx_submit(struct hci_usb *husb)
-+{
-+ struct _urb *_urb;
-+ struct urb *urb;
-+ int err, pipe, interval, size;
-+ void *buf;
-+
-+ BT_DBG("%s", husb->hdev.name);
-+
-+ size = husb->intr_in_ep->wMaxPacketSize;
-+
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
-+ return -ENOMEM;
-+
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
-+ return -ENOMEM;
-+ }
-+ _urb->type = HCI_EVENT_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-+
-+ urb = &_urb->urb;
-+ pipe = usb_rcvintpipe(husb->udev, husb->intr_in_ep->bEndpointAddress);
-+ interval = husb->intr_in_ep->bInterval;
-+ FILL_INT_URB(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb, interval);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s intr rx submit failed urb %p err %d",
-+ husb->hdev.name, urb, err);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
-+ }
-+ return err;
-+}
-
-- if (husb->write_urb)
-- usb_free_urb(husb->write_urb);
-+static int hci_usb_bulk_rx_submit(struct hci_usb *husb)
-+{
-+ struct _urb *_urb;
-+ struct urb *urb;
-+ int err, pipe, size = HCI_MAX_FRAME_SIZE;
-+ void *buf;
-+
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
-+ return -ENOMEM;
-+
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
-+ return -ENOMEM;
-+ }
-+ _urb->type = HCI_ACLDATA_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-+
-+ urb = &_urb->urb;
-+ pipe = usb_rcvbulkpipe(husb->udev, husb->bulk_in_ep->bEndpointAddress);
-+ FILL_BULK_URB(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb);
-+ urb->transfer_flags = USB_QUEUE_BULK;
-+
-+ BT_DBG("%s urb %p", husb->hdev.name, urb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk rx submit failed urb %p err %d",
-+ husb->hdev.name, urb, err);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
-+ }
-+ return err;
-+}
-
-- if (husb->intr_skb)
-- kfree_skb(husb->intr_skb);
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+static int hci_usb_isoc_rx_submit(struct hci_usb *husb)
-+{
-+ struct _urb *_urb;
-+ struct urb *urb;
-+ int err, mtu, size;
-+ void *buf;
-+
-+ mtu = husb->isoc_in_ep->wMaxPacketSize;
-+ size = mtu * HCI_MAX_ISOC_FRAMES;
-+
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
-+ return -ENOMEM;
-+
-+ _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
-+ return -ENOMEM;
-+ }
-+ _urb->type = HCI_SCODATA_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-+
-+ urb = &_urb->urb;
-+
-+ urb->context = husb;
-+ urb->dev = husb->udev;
-+ urb->pipe = usb_rcvisocpipe(husb->udev, husb->isoc_in_ep->bEndpointAddress);
-+ urb->complete = hci_usb_rx_complete;
-+
-+ urb->transfer_buffer_length = size;
-+ urb->transfer_buffer = buf;
-+ urb->transfer_flags = USB_ISO_ASAP;
-+
-+ __fill_isoc_desc(urb, size, mtu);
-+
-+ BT_DBG("%s urb %p", husb->hdev.name, urb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s isoc rx submit failed urb %p err %d",
-+ husb->hdev.name, urb, err);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
-+ }
-+ return err;
- }
-+#endif
-
--/* ------- Interface to HCI layer ------ */
- /* Initialize device */
--int hci_usb_open(struct hci_dev *hdev)
-+static int hci_usb_open(struct hci_dev *hdev)
- {
- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-- int status;
-+ int i, err;
-+ unsigned long flags;
-+
-+ BT_DBG("%s", hdev->name);
-
-- DBG("%s", hdev->name);
-+ if (test_and_set_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-
-- husb->read_urb->dev = husb->udev;
-- if ((status = usb_submit_urb(husb->read_urb)))
-- DBG("read submit failed. %d", status);
-+ MOD_INC_USE_COUNT;
-
-- husb->intr_urb->dev = husb->udev;
-- if ((status = usb_submit_urb(husb->intr_urb)))
-- DBG("interrupt submit failed. %d", status);
-+ write_lock_irqsave(&husb->completion_lock, flags);
-
-- hdev->flags |= HCI_RUNNING;
-+ err = hci_usb_intr_rx_submit(husb);
-+ if (!err) {
-+ for (i = 0; i < HCI_MAX_BULK_RX; i++)
-+ hci_usb_bulk_rx_submit(husb);
-+
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ if (husb->isoc_iface)
-+ for (i = 0; i < HCI_MAX_ISOC_RX; i++)
-+ hci_usb_isoc_rx_submit(husb);
-+#endif
-+ } else {
-+ clear_bit(HCI_RUNNING, &hdev->flags);
-+ MOD_DEC_USE_COUNT;
-+ }
-
-- return 0;
-+ write_unlock_irqrestore(&husb->completion_lock, flags);
-+ return err;
- }
-
- /* Reset device */
--int hci_usb_flush(struct hci_dev *hdev)
-+static int hci_usb_flush(struct hci_dev *hdev)
- {
- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ int i;
-
-- DBG("%s", hdev->name);
--
-- /* Drop TX queues */
-- skb_queue_purge(&husb->tx_ctrl_q);
-- skb_queue_purge(&husb->tx_write_q);
-+ BT_DBG("%s", hdev->name);
-
-+ for (i=0; i < 4; i++)
-+ skb_queue_purge(&husb->transmit_q[i]);
- return 0;
- }
-
--/* Close device */
--int hci_usb_close(struct hci_dev *hdev)
-+static void hci_usb_unlink_urbs(struct hci_usb *husb)
- {
-- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ int i;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s", husb->hdev.name);
-
-- hdev->flags &= ~HCI_RUNNING;
-- hci_usb_unlink_urbs(husb);
-+ for (i=0; i < 4; i++) {
-+ struct _urb *_urb;
-+ struct urb *urb;
-+
-+ /* Kill pending requests */
-+ while ((_urb = _urb_dequeue(&husb->pending_q[i]))) {
-+ urb = &_urb->urb;
-+ BT_DBG("%s unlinking _urb %p type %d urb %p",
-+ husb->hdev.name, _urb, _urb->type, urb);
-+ usb_unlink_urb(urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-+ }
-
-- hci_usb_flush(hdev);
-+ /* Release completed requests */
-+ while ((_urb = _urb_dequeue(&husb->completed_q[i]))) {
-+ urb = &_urb->urb;
-+ BT_DBG("%s freeing _urb %p type %d urb %p",
-+ husb->hdev.name, _urb, _urb->type, urb);
-+ if (urb->setup_packet)
-+ kfree(urb->setup_packet);
-+ if (urb->transfer_buffer)
-+ kfree(urb->transfer_buffer);
-+ _urb_free(_urb);
-+ }
-
-- return 0;
-+ /* Release reassembly buffers */
-+ if (husb->reassembly[i]) {
-+ kfree_skb(husb->reassembly[i]);
-+ husb->reassembly[i] = NULL;
-+ }
-+ }
- }
-
--void hci_usb_ctrl_wakeup(struct hci_usb *husb)
-+/* Close device */
-+static int hci_usb_close(struct hci_dev *hdev)
- {
-- struct sk_buff *skb;
-+ struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ unsigned long flags;
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-
-- if (test_and_set_bit(HCI_TX_CTRL, &husb->tx_state))
-- return;
-+ BT_DBG("%s", hdev->name);
-
-- DBG("%s", husb->hdev.name);
-+ write_lock_irqsave(&husb->completion_lock, flags);
-+
-+ hci_usb_unlink_urbs(husb);
-+ hci_usb_flush(hdev);
-
-- if (!(skb = skb_dequeue(&husb->tx_ctrl_q)))
-- goto done;
-+ write_unlock_irqrestore(&husb->completion_lock, flags);
-
-- if (hci_usb_ctrl_msg(husb, skb)){
-- kfree_skb(skb);
-- goto done;
-- }
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-
-- DMP(skb->data, skb->len);
-+static int __tx_submit(struct hci_usb *husb, struct _urb *_urb)
-+{
-+ struct urb *urb = &_urb->urb;
-+ int err;
-
-- husb->hdev.stat.byte_tx += skb->len;
-- return;
-+ BT_DBG("%s urb %p type %d", husb->hdev.name, urb, _urb->type);
-+
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s tx submit failed urb %p type %d err %d",
-+ husb->hdev.name, urb, _urb->type, err);
-+ _urb_unlink(_urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-+ } else
-+ atomic_inc(__pending_tx(husb, _urb->type));
-
--done:
-- clear_bit(HCI_TX_CTRL, &husb->tx_state);
-- return;
-+ return err;
- }
-
--void hci_usb_write_wakeup(struct hci_usb *husb)
-+static inline int hci_usb_send_ctrl(struct hci_usb *husb, struct sk_buff *skb)
- {
-- struct sk_buff *skb;
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
-+ devrequest *dr;
-+ struct urb *urb;
-+
-+ if (!_urb) {
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
-+
-+ dr = kmalloc(sizeof(*dr), GFP_ATOMIC);
-+ if (!dr) {
-+ _urb_free(_urb);
-+ return -ENOMEM;
-+ }
-+ } else
-+ dr = (void *) _urb->urb.setup_packet;
-
-- if (test_and_set_bit(HCI_TX_WRITE, &husb->tx_state))
-- return;
-+ dr->requesttype = husb->ctrl_req;
-+ dr->request = 0;
-+ dr->index = 0;
-+ dr->value = 0;
-+ dr->length = __cpu_to_le16(skb->len);
-
-- DBG("%s", husb->hdev.name);
-+ urb = &_urb->urb;
-+ FILL_CONTROL_URB(urb, husb->udev, usb_sndctrlpipe(husb->udev, 0),
-+ (void *) dr, skb->data, skb->len, hci_usb_tx_complete, husb);
-
-- if (!(skb = skb_dequeue(&husb->tx_write_q)))
-- goto done;
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-+
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
-+}
-
-- if (hci_usb_write_msg(husb, skb)) {
-- skb_queue_head(&husb->tx_write_q, skb);
-- goto done;
-+static inline int hci_usb_send_bulk(struct hci_usb *husb, struct sk_buff *skb)
-+{
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
-+ struct urb *urb;
-+ int pipe;
-+
-+ if (!_urb) {
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
- }
-
-- DMP(skb->data, skb->len);
-+ urb = &_urb->urb;
-+ pipe = usb_sndbulkpipe(husb->udev, husb->bulk_out_ep->bEndpointAddress);
-+ FILL_BULK_URB(urb, husb->udev, pipe, skb->data, skb->len,
-+ hci_usb_tx_complete, husb);
-+ urb->transfer_flags = USB_QUEUE_BULK | USB_ZERO_PACKET;
-
-- husb->hdev.stat.byte_tx += skb->len;
-- return;
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-
--done:
-- clear_bit(HCI_TX_WRITE, &husb->tx_state);
-- return;
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
- }
-
--/* Send frames from HCI layer */
--int hci_usb_send_frame(struct sk_buff *skb)
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+static inline int hci_usb_send_isoc(struct hci_usb *husb, struct sk_buff *skb)
- {
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-- struct hci_usb *husb;
--
-- if (!hdev) {
-- ERR("frame for uknown device (hdev=NULL)");
-- return -ENODEV;
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
-+ struct urb *urb;
-+
-+ if (!_urb) {
-+ _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
- }
-
-- if (!(hdev->flags & HCI_RUNNING))
-- return 0;
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-
-- husb = (struct hci_usb *) hdev->driver_data;
-+ urb = &_urb->urb;
-+
-+ urb->context = husb;
-+ urb->dev = husb->udev;
-+ urb->pipe = usb_sndisocpipe(husb->udev, husb->isoc_out_ep->bEndpointAddress);
-+ urb->complete = hci_usb_tx_complete;
-+ urb->transfer_flags = USB_ISO_ASAP;
-
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+ urb->transfer_buffer = skb->data;
-+ urb->transfer_buffer_length = skb->len;
-+
-+ __fill_isoc_desc(urb, skb->len, husb->isoc_out_ep->wMaxPacketSize);
-
-- switch (skb->pkt_type) {
-- case HCI_COMMAND_PKT:
-- skb_queue_tail(&husb->tx_ctrl_q, skb);
-- hci_usb_ctrl_wakeup(husb);
-- hdev->stat.cmd_tx++;
-- return 0;
--
-- case HCI_ACLDATA_PKT:
-- skb_queue_tail(&husb->tx_write_q, skb);
-- hci_usb_write_wakeup(husb);
-- hdev->stat.acl_tx++;
-- return 0;
--
-- case HCI_SCODATA_PKT:
-- return -EOPNOTSUPP;
-- };
--
-- return 0;
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
- }
-+#endif
-
--/* ---------- USB ------------- */
--
--static void hci_usb_ctrl(struct urb *urb)
-+static void hci_usb_tx_process(struct hci_usb *husb)
- {
-- struct sk_buff *skb = (struct sk_buff *) urb->context;
-- struct hci_dev *hdev;
-- struct hci_usb *husb;
-+ struct sk_buff_head *q;
-+ struct sk_buff *skb;
-
-- if (!skb)
-- return;
-- hdev = (struct hci_dev *) skb->dev;
-- husb = (struct hci_usb *) hdev->driver_data;
-+ BT_DBG("%s", husb->hdev.name);
-
-- DBG("%s", hdev->name);
-+ do {
-+ clear_bit(HCI_USB_TX_WAKEUP, &husb->state);
-
-- if (urb->status)
-- DBG("%s ctrl status: %d", hdev->name, urb->status);
-+ /* Process command queue */
-+ q = __transmit_q(husb, HCI_COMMAND_PKT);
-+ if (!atomic_read(__pending_tx(husb, HCI_COMMAND_PKT)) &&
-+ (skb = skb_dequeue(q))) {
-+ if (hci_usb_send_ctrl(husb, skb) < 0)
-+ skb_queue_head(q, skb);
-+ }
-
-- clear_bit(HCI_TX_CTRL, &husb->tx_state);
-- kfree_skb(skb);
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ /* Process SCO queue */
-+ q = __transmit_q(husb, HCI_SCODATA_PKT);
-+ if (atomic_read(__pending_tx(husb, HCI_SCODATA_PKT)) < HCI_MAX_ISOC_TX &&
-+ (skb = skb_dequeue(q))) {
-+ if (hci_usb_send_isoc(husb, skb) < 0)
-+ skb_queue_head(q, skb);
-+ }
-+#endif
-+
-+ /* Process ACL queue */
-+ q = __transmit_q(husb, HCI_ACLDATA_PKT);
-+ while (atomic_read(__pending_tx(husb, HCI_ACLDATA_PKT)) < HCI_MAX_BULK_TX &&
-+ (skb = skb_dequeue(q))) {
-+ if (hci_usb_send_bulk(husb, skb) < 0) {
-+ skb_queue_head(q, skb);
-+ break;
-+ }
-+ }
-+ } while(test_bit(HCI_USB_TX_WAKEUP, &husb->state));
-+}
-
-- /* Wake up device */
-- hci_usb_ctrl_wakeup(husb);
-+static inline void hci_usb_tx_wakeup(struct hci_usb *husb)
-+{
-+ /* Serialize TX queue processing to avoid data reordering */
-+ if (!test_and_set_bit(HCI_USB_TX_PROCESS, &husb->state)) {
-+ hci_usb_tx_process(husb);
-+ clear_bit(HCI_USB_TX_PROCESS, &husb->state);
-+ } else
-+ set_bit(HCI_USB_TX_WAKEUP, &husb->state);
- }
-
--static void hci_usb_bulk_write(struct urb *urb)
-+/* Send frames from HCI layer */
-+static int hci_usb_send_frame(struct sk_buff *skb)
- {
-- struct sk_buff *skb = (struct sk_buff *) urb->context;
-- struct hci_dev *hdev;
-+ struct hci_dev *hdev = (struct hci_dev *) skb->dev;
- struct hci_usb *husb;
-
-- if (!skb)
-- return;
-- hdev = (struct hci_dev *) skb->dev;
-- husb = (struct hci_usb *) hdev->driver_data;
-+ if (!hdev) {
-+ BT_ERR("frame for uknown device (hdev=NULL)");
-+ return -ENODEV;
-+ }
-
-- DBG("%s", hdev->name);
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return -EBUSY;
-
-- if (urb->status)
-- DBG("%s bulk write status: %d", hdev->name, urb->status);
-+ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-
-- clear_bit(HCI_TX_WRITE, &husb->tx_state);
-- kfree_skb(skb);
-+ husb = (struct hci_usb *) hdev->driver_data;
-
-- /* Wake up device */
-- hci_usb_write_wakeup(husb);
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+#endif
-
-- return;
--}
-+ default:
-+ kfree_skb(skb);
-+ return 0;
-+ }
-
--static void hci_usb_intr(struct urb *urb)
--{
-- struct hci_usb *husb = (struct hci_usb *) urb->context;
-- unsigned char *data = urb->transfer_buffer;
-- register int count = urb->actual_length;
-- register struct sk_buff *skb = husb->intr_skb;
-- hci_event_hdr *eh;
-- register int len;
-+ read_lock(&husb->completion_lock);
-
-- if (!husb)
-- return;
-+ skb_queue_tail(__transmit_q(husb, skb->pkt_type), skb);
-+ hci_usb_tx_wakeup(husb);
-
-- DBG("%s count %d", husb->hdev.name, count);
-+ read_unlock(&husb->completion_lock);
-+ return 0;
-+}
-
-- if (urb->status || !count) {
-- DBG("%s intr status %d, count %d", husb->hdev.name, urb->status, count);
-- return;
-- }
-+static inline int __recv_frame(struct hci_usb *husb, int type, void *data, int count)
-+{
-+ BT_DBG("%s type %d data %p count %d", husb->hdev.name, type, data, count);
-
-- /* Do we really have to handle continuations here ? */
-- if (!skb) {
-- /* New frame */
-- if (count < HCI_EVENT_HDR_SIZE) {
-- DBG("%s bad frame len %d", husb->hdev.name, count);
-- return;
-- }
-+ husb->hdev.stat.byte_rx += count;
-
-- eh = (hci_event_hdr *) data;
-- len = eh->plen + HCI_EVENT_HDR_SIZE;
-+ while (count) {
-+ struct sk_buff *skb = __reassembly(husb, type);
-+ struct { int expect; } *scb;
-+ int len = 0;
-+
-+ if (!skb) {
-+ /* Start of the frame */
-+
-+ switch (type) {
-+ case HCI_EVENT_PKT:
-+ if (count >= HCI_EVENT_HDR_SIZE) {
-+ hci_event_hdr *h = data;
-+ len = HCI_EVENT_HDR_SIZE + h->plen;
-+ } else
-+ return -EILSEQ;
-+ break;
-
-- if (count > len) {
-- DBG("%s corrupted frame, len %d", husb->hdev.name, count);
-- return;
-- }
-+ case HCI_ACLDATA_PKT:
-+ if (count >= HCI_ACL_HDR_SIZE) {
-+ hci_acl_hdr *h = data;
-+ len = HCI_ACL_HDR_SIZE + __le16_to_cpu(h->dlen);
-+ } else
-+ return -EILSEQ;
-+ break;
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ case HCI_SCODATA_PKT:
-+ if (count >= HCI_SCO_HDR_SIZE) {
-+ hci_sco_hdr *h = data;
-+ len = HCI_SCO_HDR_SIZE + h->dlen;
-+ } else
-+ return -EILSEQ;
-+ break;
-+#endif
-+ }
-+ BT_DBG("new packet len %d", len);
-
-- /* Allocate skb */
-- if (!(skb = bluez_skb_alloc(len, GFP_ATOMIC))) {
-- ERR("Can't allocate mem for new packet");
-- return;
-+ skb = bluez_skb_alloc(len, GFP_ATOMIC);
-+ if (!skb) {
-+ BT_ERR("%s no memory for the packet", husb->hdev.name);
-+ return -ENOMEM;
-+ }
-+ skb->dev = (void *) &husb->hdev;
-+ skb->pkt_type = type;
-+
-+ __reassembly(husb, type) = skb;
-+
-+ scb = (void *) skb->cb;
-+ scb->expect = len;
-+ } else {
-+ /* Continuation */
-+ scb = (void *) skb->cb;
-+ len = scb->expect;
- }
-- skb->dev = (void *) &husb->hdev;
-- skb->pkt_type = HCI_EVENT_PKT;
--
-- husb->intr_skb = skb;
-- husb->intr_count = len;
-- } else {
-- /* Continuation */
-- if (count > husb->intr_count) {
-- ERR("%s bad frame len %d (expected %d)", husb->hdev.name, count, husb->intr_count);
-
-- kfree_skb(skb);
-- husb->intr_skb = NULL;
-- husb->intr_count = 0;
-- return;
-+ len = min(len, count);
-+
-+ memcpy(skb_put(skb, len), data, len);
-+
-+ scb->expect -= len;
-+ if (!scb->expect) {
-+ /* Complete frame */
-+ __reassembly(husb, type) = NULL;
-+ hci_recv_frame(skb);
- }
-- }
--
-- memcpy(skb_put(skb, count), data, count);
-- husb->intr_count -= count;
--
-- DMP(data, count);
--
-- if (!husb->intr_count) {
-- /* Got complete frame */
-
-- husb->hdev.stat.byte_rx += skb->len;
-- hci_recv_frame(skb);
--
-- husb->intr_skb = NULL;
-+ count -= len; data += len;
- }
-+ return 0;
- }
-
--static void hci_usb_bulk_read(struct urb *urb)
-+static void hci_usb_rx_complete(struct urb *urb)
- {
-- struct hci_usb *husb = (struct hci_usb *) urb->context;
-- unsigned char *data = urb->transfer_buffer;
-- int count = urb->actual_length, status;
-- struct sk_buff *skb;
-- hci_acl_hdr *ah;
-- register __u16 dlen;
--
-- if (!husb)
-- return;
-+ struct _urb *_urb = container_of(urb, struct _urb, urb);
-+ struct hci_usb *husb = (void *) urb->context;
-+ struct hci_dev *hdev = &husb->hdev;
-+ int err, count = urb->actual_length;
-
-- DBG("%s status %d, count %d, flags %x", husb->hdev.name, urb->status, count, urb->transfer_flags);
-+ BT_DBG("%s urb %p type %d status %d count %d flags %x", hdev->name, urb,
-+ _urb->type, urb->status, count, urb->transfer_flags);
-
-- if (urb->status) {
-- /* Do not re-submit URB on critical errors */
-- switch (urb->status) {
-- case -ENOENT:
-- return;
-- default:
-- goto resubmit;
-- };
-- }
-- if (!count)
-- goto resubmit;
--
-- DMP(data, count);
-+ read_lock(&husb->completion_lock);
-
-- ah = (hci_acl_hdr *) data;
-- dlen = le16_to_cpu(ah->dlen);
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ goto unlock;
-
-- /* Verify frame len and completeness */
-- if ((count - HCI_ACL_HDR_SIZE) != dlen) {
-- ERR("%s corrupted ACL packet: count %d, plen %d", husb->hdev.name, count, dlen);
-+ if (urb->status || !count)
- goto resubmit;
-- }
-
-- /* Allocate packet */
-- if (!(skb = bluez_skb_alloc(count, GFP_ATOMIC))) {
-- ERR("Can't allocate mem for new packet");
-- goto resubmit;
-+ if (_urb->type == HCI_SCODATA_PKT) {
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ int i;
-+ for (i=0; i < urb->number_of_packets; i++) {
-+ BT_DBG("desc %d status %d offset %d len %d", i,
-+ urb->iso_frame_desc[i].status,
-+ urb->iso_frame_desc[i].offset,
-+ urb->iso_frame_desc[i].actual_length);
-+
-+ if (!urb->iso_frame_desc[i].status)
-+ __recv_frame(husb, _urb->type,
-+ urb->transfer_buffer + urb->iso_frame_desc[i].offset,
-+ urb->iso_frame_desc[i].actual_length);
-+ }
-+#else
-+ ;
-+#endif
-+ } else {
-+ err = __recv_frame(husb, _urb->type, urb->transfer_buffer, count);
-+ if (err < 0) {
-+ BT_ERR("%s corrupted packet: type %d count %d",
-+ husb->hdev.name, _urb->type, count);
-+ hdev->stat.err_rx++;
-+ }
- }
-
-- memcpy(skb_put(skb, count), data, count);
-- skb->dev = (void *) &husb->hdev;
-- skb->pkt_type = HCI_ACLDATA_PKT;
--
-- husb->hdev.stat.byte_rx += skb->len;
--
-- hci_recv_frame(skb);
--
- resubmit:
-- husb->read_urb->dev = husb->udev;
-- if ((status = usb_submit_urb(husb->read_urb)))
-- DBG("%s read URB submit failed %d", husb->hdev.name, status);
-+ if (_urb->type != HCI_EVENT_PKT) {
-+ urb->dev = husb->udev;
-+ err = usb_submit_urb(urb);
-+ BT_DBG("%s urb %p type %d resubmit status %d", hdev->name, urb,
-+ _urb->type, err);
-+ }
-
-- DBG("%s read URB re-submited", husb->hdev.name);
-+unlock:
-+ read_unlock(&husb->completion_lock);
- }
-
--static int hci_usb_ctrl_msg(struct hci_usb *husb, struct sk_buff *skb)
-+static void hci_usb_tx_complete(struct urb *urb)
- {
-- struct urb *urb = husb->ctrl_urb;
-- devrequest *dr = &husb->dev_req;
-- int pipe, status;
-+ struct _urb *_urb = container_of(urb, struct _urb, urb);
-+ struct hci_usb *husb = (void *) urb->context;
-+ struct hci_dev *hdev = &husb->hdev;
-
-- DBG("%s len %d", husb->hdev.name, skb->len);
-+ BT_DBG("%s urb %p status %d flags %x", hdev->name, urb,
-+ urb->status, urb->transfer_flags);
-
-- pipe = usb_sndctrlpipe(husb->udev, 0);
-+ atomic_dec(__pending_tx(husb, _urb->type));
-
-- dr->requesttype = HCI_CTRL_REQ;
-- dr->request = 0;
-- dr->index = 0;
-- dr->value = 0;
-- dr->length = cpu_to_le16(skb->len);
--
-- FILL_CONTROL_URB(urb, husb->udev, pipe, (void*)dr, skb->data, skb->len,
-- hci_usb_ctrl, skb);
-+ urb->transfer_buffer = NULL;
-+ kfree_skb((struct sk_buff *) _urb->priv);
-
-- if ((status = usb_submit_urb(urb))) {
-- DBG("%s control URB submit failed %d", husb->hdev.name, status);
-- return status;
-- }
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return;
-
-- return 0;
--}
-+ if (!urb->status)
-+ hdev->stat.byte_tx += urb->transfer_buffer_length;
-+ else
-+ hdev->stat.err_tx++;
-
--static int hci_usb_write_msg(struct hci_usb *husb, struct sk_buff *skb)
--{
-- struct urb *urb = husb->write_urb;
-- int pipe, status;
-+ read_lock(&husb->completion_lock);
-
-- DBG("%s len %d", husb->hdev.name, skb->len);
-+ _urb_unlink(_urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-
-- pipe = usb_sndbulkpipe(husb->udev, husb->bulk_out_ep_addr);
-+ hci_usb_tx_wakeup(husb);
-+
-+ read_unlock(&husb->completion_lock);
-+}
-
-- FILL_BULK_URB(urb, husb->udev, pipe, skb->data, skb->len,
-- hci_usb_bulk_write, skb);
-- urb->transfer_flags |= USB_QUEUE_BULK;
-+static void hci_usb_destruct(struct hci_dev *hdev)
-+{
-+ struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-
-- if ((status = usb_submit_urb(urb))) {
-- DBG("%s write URB submit failed %d", husb->hdev.name, status);
-- return status;
-- }
-+ BT_DBG("%s", hdev->name);
-
-- return 0;
-+ kfree(husb);
- }
-
--static void * hci_usb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id)
-+static void *hci_usb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id)
- {
-- struct usb_endpoint_descriptor *bulk_out_ep, *intr_in_ep, *bulk_in_ep;
-+ struct usb_endpoint_descriptor *bulk_out_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *isoc_out_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *bulk_in_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *isoc_in_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *intr_in_ep[HCI_MAX_IFACE_NUM];
- struct usb_interface_descriptor *uif;
- struct usb_endpoint_descriptor *ep;
-+ struct usb_interface *iface, *isoc_iface;
- struct hci_usb *husb;
- struct hci_dev *hdev;
-- int i, size, pipe;
-- __u8 * buf;
-+ int i, a, e, size, ifn, isoc_ifnum, isoc_alts;
-
-- DBG("udev %p ifnum %d", udev, ifnum);
-+ BT_DBG("udev %p ifnum %d", udev, ifnum);
-
-- /* Check device signature */
-- if ((udev->descriptor.bDeviceClass != HCI_DEV_CLASS) ||
-- (udev->descriptor.bDeviceSubClass != HCI_DEV_SUBCLASS)||
-- (udev->descriptor.bDeviceProtocol != HCI_DEV_PROTOCOL) )
-- return NULL;
-+ iface = &udev->actconfig->interface[0];
-
-- MOD_INC_USE_COUNT;
--
-- uif = &udev->actconfig->interface[ifnum].altsetting[0];
-+ if (!id->driver_info) {
-+ const struct usb_device_id *match;
-+ match = usb_match_id(udev, iface, blacklist_ids);
-+ if (match)
-+ id = match;
-+ }
-
-- if (uif->bNumEndpoints != 3) {
-- DBG("Wrong number of endpoints %d", uif->bNumEndpoints);
-- MOD_DEC_USE_COUNT;
-+ if (id->driver_info & HCI_IGNORE)
- return NULL;
-- }
-
-- bulk_out_ep = intr_in_ep = bulk_in_ep = NULL;
-+ /* Check number of endpoints */
-+ if (udev->actconfig->interface[ifnum].altsetting[0].bNumEndpoints < 3)
-+ return NULL;
-
-+ memset(bulk_out_ep, 0, sizeof(bulk_out_ep));
-+ memset(isoc_out_ep, 0, sizeof(isoc_out_ep));
-+ memset(bulk_in_ep, 0, sizeof(bulk_in_ep));
-+ memset(isoc_in_ep, 0, sizeof(isoc_in_ep));
-+ memset(intr_in_ep, 0, sizeof(intr_in_ep));
-+
-+ size = 0;
-+ isoc_iface = NULL;
-+ isoc_alts = isoc_ifnum = 0;
-+
- /* Find endpoints that we need */
-- for ( i = 0; i < uif->bNumEndpoints; ++i) {
-- ep = &uif->endpoint[i];
-
-- switch (ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-- case USB_ENDPOINT_XFER_BULK:
-- if (ep->bEndpointAddress & USB_DIR_IN)
-- bulk_in_ep = ep;
-- else
-- bulk_out_ep = ep;
-- break;
-+ ifn = MIN(udev->actconfig->bNumInterfaces, HCI_MAX_IFACE_NUM);
-+ for (i = 0; i < ifn; i++) {
-+ iface = &udev->actconfig->interface[i];
-+ for (a = 0; a < iface->num_altsetting; a++) {
-+ uif = &iface->altsetting[a];
-+ for (e = 0; e < uif->bNumEndpoints; e++) {
-+ ep = &uif->endpoint[e];
-+
-+ switch (ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-+ case USB_ENDPOINT_XFER_INT:
-+ if (ep->bEndpointAddress & USB_DIR_IN)
-+ intr_in_ep[i] = ep;
-+ break;
-+
-+ case USB_ENDPOINT_XFER_BULK:
-+ if (ep->bEndpointAddress & USB_DIR_IN)
-+ bulk_in_ep[i] = ep;
-+ else
-+ bulk_out_ep[i] = ep;
-+ break;
-+
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ case USB_ENDPOINT_XFER_ISOC:
-+ if (ep->wMaxPacketSize < size || a > 2)
-+ break;
-+ size = ep->wMaxPacketSize;
-+
-+ isoc_iface = iface;
-+ isoc_alts = a;
-+ isoc_ifnum = i;
-+
-+ if (ep->bEndpointAddress & USB_DIR_IN)
-+ isoc_in_ep[i] = ep;
-+ else
-+ isoc_out_ep[i] = ep;
-+ break;
-+#endif
-+ }
-+ }
-+ }
-+ }
-
-- case USB_ENDPOINT_XFER_INT:
-- intr_in_ep = ep;
-- break;
-- };
-+ if (!bulk_in_ep[0] || !bulk_out_ep[0] || !intr_in_ep[0]) {
-+ BT_DBG("Bulk endpoints not found");
-+ goto done;
- }
-
-- if (!bulk_in_ep || !bulk_out_ep || !intr_in_ep) {
-- DBG("Endpoints not found: %p %p %p", bulk_in_ep, bulk_out_ep, intr_in_ep);
-- MOD_DEC_USE_COUNT;
-- return NULL;
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ if (id->driver_info & HCI_BROKEN_ISOC || !isoc_in_ep[1] || !isoc_out_ep[1]) {
-+ BT_DBG("Isoc endpoints not found");
-+ isoc_iface = NULL;
- }
-+#endif
-
- if (!(husb = kmalloc(sizeof(struct hci_usb), GFP_KERNEL))) {
-- ERR("Can't allocate: control structure");
-- MOD_DEC_USE_COUNT;
-- return NULL;
-+ BT_ERR("Can't allocate: control structure");
-+ goto done;
- }
-
- memset(husb, 0, sizeof(struct hci_usb));
-
- husb->udev = udev;
-- husb->bulk_out_ep_addr = bulk_out_ep->bEndpointAddress;
--
-- if (!(husb->ctrl_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: control URB");
-- goto probe_error;
-- }
--
-- if (!(husb->write_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: write URB");
-- goto probe_error;
-- }
--
-- if (!(husb->read_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: read URB");
-- goto probe_error;
-- }
--
-- ep = bulk_in_ep;
-- pipe = usb_rcvbulkpipe(udev, ep->bEndpointAddress);
-- size = HCI_MAX_FRAME_SIZE;
--
-- if (!(buf = kmalloc(size, GFP_KERNEL))) {
-- ERR("Can't allocate: read buffer");
-- goto probe_error;
-- }
--
-- FILL_BULK_URB(husb->read_urb, udev, pipe, buf, size, hci_usb_bulk_read, husb);
-- husb->read_urb->transfer_flags |= USB_QUEUE_BULK;
--
-- ep = intr_in_ep;
-- pipe = usb_rcvintpipe(udev, ep->bEndpointAddress);
-- size = usb_maxpacket(udev, pipe, usb_pipeout(pipe));
--
-- if (!(husb->intr_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: interrupt URB");
-- goto probe_error;
-+ husb->bulk_out_ep = bulk_out_ep[0];
-+ husb->bulk_in_ep = bulk_in_ep[0];
-+ husb->intr_in_ep = intr_in_ep[0];
-+
-+ if (id->driver_info & HCI_DIGIANSWER)
-+ husb->ctrl_req = HCI_DIGI_REQ;
-+ else
-+ husb->ctrl_req = HCI_CTRL_REQ;
-+
-+#ifdef CONFIG_BLUEZ_HCIUSB_SCO
-+ if (isoc_iface) {
-+ BT_DBG("isoc ifnum %d alts %d", isoc_ifnum, isoc_alts);
-+ if (usb_set_interface(udev, isoc_ifnum, isoc_alts)) {
-+ BT_ERR("Can't set isoc interface settings");
-+ isoc_iface = NULL;
-+ }
-+ usb_driver_claim_interface(&hci_usb_driver, isoc_iface, husb);
-+ husb->isoc_iface = isoc_iface;
-+ husb->isoc_in_ep = isoc_in_ep[isoc_ifnum];
-+ husb->isoc_out_ep = isoc_out_ep[isoc_ifnum];
- }
-+#endif
-+
-+ husb->completion_lock = RW_LOCK_UNLOCKED;
-
-- if (!(buf = kmalloc(size, GFP_KERNEL))) {
-- ERR("Can't allocate: interrupt buffer");
-- goto probe_error;
-+ for (i = 0; i < 4; i++) {
-+ skb_queue_head_init(&husb->transmit_q[i]);
-+ _urb_queue_init(&husb->pending_q[i]);
-+ _urb_queue_init(&husb->completed_q[i]);
- }
-
-- FILL_INT_URB(husb->intr_urb, udev, pipe, buf, size, hci_usb_intr, husb, ep->bInterval);
--
-- skb_queue_head_init(&husb->tx_ctrl_q);
-- skb_queue_head_init(&husb->tx_write_q);
--
- /* Initialize and register HCI device */
- hdev = &husb->hdev;
-
-- hdev->type = HCI_USB;
-+ hdev->type = HCI_USB;
- hdev->driver_data = husb;
-
- hdev->open = hci_usb_open;
- hdev->close = hci_usb_close;
- hdev->flush = hci_usb_flush;
-- hdev->send = hci_usb_send_frame;
-+ hdev->send = hci_usb_send_frame;
-+ hdev->destruct = hci_usb_destruct;
-+
-+ if (id->driver_info & HCI_RESET)
-+ set_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks);
-
- if (hci_register_dev(hdev) < 0) {
-- ERR("Can't register HCI device %s", hdev->name);
-+ BT_ERR("Can't register HCI device");
- goto probe_error;
- }
-
- return husb;
-
- probe_error:
-- hci_usb_free_bufs(husb);
- kfree(husb);
-- MOD_DEC_USE_COUNT;
-+
-+done:
- return NULL;
- }
-
-@@ -626,38 +967,34 @@
- if (!husb)
- return;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s", hdev->name);
-
- hci_usb_close(hdev);
-
-- if (hci_unregister_dev(hdev) < 0) {
-- ERR("Can't unregister HCI device %s", hdev->name);
-- }
-+ if (husb->isoc_iface)
-+ usb_driver_release_interface(&hci_usb_driver, husb->isoc_iface);
-
-- hci_usb_free_bufs(husb);
-- kfree(husb);
--
-- MOD_DEC_USE_COUNT;
-+ if (hci_unregister_dev(hdev) < 0)
-+ BT_ERR("Can't unregister HCI device %s", hdev->name);
- }
-
--static struct usb_driver hci_usb_driver =
--{
-+static struct usb_driver hci_usb_driver = {
- name: "hci_usb",
- probe: hci_usb_probe,
- disconnect: hci_usb_disconnect,
-- id_table: usb_bluetooth_ids,
-+ id_table: bluetooth_ids,
- };
-
- int hci_usb_init(void)
- {
- int err;
-
-- INF("BlueZ HCI USB driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ BT_INFO("BlueZ HCI USB driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-
- if ((err = usb_register(&hci_usb_driver)) < 0)
-- ERR("Failed to register HCI USB driver");
-+ BT_ERR("Failed to register HCI USB driver");
-
- return err;
- }
-@@ -670,6 +1007,6 @@
- module_init(hci_usb_init);
- module_exit(hci_usb_cleanup);
-
--MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>");
- MODULE_DESCRIPTION("BlueZ HCI USB driver ver " VERSION);
- MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/hci_usb.h linux-2.4.18-mh15/drivers/bluetooth/hci_usb.h
---- linux-2.4.18/drivers/bluetooth/hci_usb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_usb.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,147 @@
-+/*
-+ HCI USB driver for Linux Bluetooth protocol stack (BlueZ)
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ Copyright (C) 2003 Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_usb.h,v 1.2 2002/03/18 19:10:04 maxk Exp $
-+ */
-+
-+#ifdef __KERNEL__
-+
-+/* Class, SubClass, and Protocol codes that describe a Bluetooth device */
-+#define HCI_DEV_CLASS 0xe0 /* Wireless class */
-+#define HCI_DEV_SUBCLASS 0x01 /* RF subclass */
-+#define HCI_DEV_PROTOCOL 0x01 /* Bluetooth programming protocol */
-+
-+#define HCI_CTRL_REQ 0x20
-+#define HCI_DIGI_REQ 0x40
-+
-+#define HCI_IGNORE 0x01
-+#define HCI_RESET 0x02
-+#define HCI_DIGIANSWER 0x04
-+#define HCI_BROKEN_ISOC 0x08
-+
-+#define HCI_MAX_IFACE_NUM 3
-+
-+#define HCI_MAX_BULK_TX 4
-+#define HCI_MAX_BULK_RX 1
-+
-+#define HCI_MAX_ISOC_RX 2
-+#define HCI_MAX_ISOC_TX 2
-+
-+#define HCI_MAX_ISOC_FRAMES 10
-+
-+struct _urb_queue {
-+ struct list_head head;
-+ spinlock_t lock;
-+};
-+
-+struct _urb {
-+ struct list_head list;
-+ struct _urb_queue *queue;
-+ int type;
-+ void *priv;
-+ struct urb urb;
-+};
-+
-+struct _urb *_urb_alloc(int isoc, int gfp);
-+
-+static inline void _urb_free(struct _urb *_urb)
-+{
-+ kfree(_urb);
-+}
-+
-+static inline void _urb_queue_init(struct _urb_queue *q)
-+{
-+ INIT_LIST_HEAD(&q->head);
-+ spin_lock_init(&q->lock);
-+}
-+
-+static inline void _urb_queue_head(struct _urb_queue *q, struct _urb *_urb)
-+{
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_add(&_urb->list, &q->head); _urb->queue = q;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+}
-+
-+static inline void _urb_queue_tail(struct _urb_queue *q, struct _urb *_urb)
-+{
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_add_tail(&_urb->list, &q->head); _urb->queue = q;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+}
-+
-+static inline void _urb_unlink(struct _urb *_urb)
-+{
-+ struct _urb_queue *q = _urb->queue;
-+ unsigned long flags;
-+ if (q) {
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_del(&_urb->list); _urb->queue = NULL;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+ }
-+}
-+
-+struct _urb *_urb_dequeue(struct _urb_queue *q);
-+
-+#ifndef container_of
-+#define container_of(ptr, type, member) ({ \
-+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
-+ (type *)( (char *)__mptr - offsetof(type,member) );})
-+#endif
-+
-+struct hci_usb {
-+ struct hci_dev hdev;
-+
-+ unsigned long state;
-+
-+ struct usb_device *udev;
-+
-+ struct usb_endpoint_descriptor *bulk_in_ep;
-+ struct usb_endpoint_descriptor *bulk_out_ep;
-+ struct usb_endpoint_descriptor *intr_in_ep;
-+
-+ struct usb_interface *isoc_iface;
-+ struct usb_endpoint_descriptor *isoc_out_ep;
-+ struct usb_endpoint_descriptor *isoc_in_ep;
-+
-+ __u8 ctrl_req;
-+
-+ struct sk_buff_head transmit_q[4];
-+ struct sk_buff *reassembly[4]; // Reassembly buffers
-+
-+ rwlock_t completion_lock;
-+
-+ atomic_t pending_tx[4]; // Number of pending requests
-+ struct _urb_queue pending_q[4]; // Pending requests
-+ struct _urb_queue completed_q[4]; // Completed requests
-+};
-+
-+/* States */
-+#define HCI_USB_TX_PROCESS 1
-+#define HCI_USB_TX_WAKEUP 2
-+
-+#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_vhci.c linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.c
---- linux-2.4.18/drivers/bluetooth/hci_vhci.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,9 +25,9 @@
- /*
- * BlueZ HCI virtual device driver.
- *
-- * $Id: hci_vhci.c,v 1.3 2001/08/03 04:19:50 maxk Exp $
-+ * $Id: hci_vhci.c,v 1.3 2002/04/17 17:37:20 maxk Exp $
- */
--#define VERSION "1.0"
-+#define VERSION "1.1"
-
- #include <linux/config.h>
- #include <linux/module.h>
-@@ -49,43 +49,56 @@
- #include <asm/uaccess.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/hci_vhci.h>
-+#include "hci_vhci.h"
-
- /* HCI device part */
-
--int hci_vhci_open(struct hci_dev *hdev)
-+static int hci_vhci_open(struct hci_dev *hdev)
- {
-- hdev->flags |= HCI_RUNNING;
-+ set_bit(HCI_RUNNING, &hdev->flags);
- return 0;
- }
-
--int hci_vhci_flush(struct hci_dev *hdev)
-+static int hci_vhci_flush(struct hci_dev *hdev)
- {
- struct hci_vhci_struct *hci_vhci = (struct hci_vhci_struct *) hdev->driver_data;
- skb_queue_purge(&hci_vhci->readq);
- return 0;
- }
-
--int hci_vhci_close(struct hci_dev *hdev)
-+static int hci_vhci_close(struct hci_dev *hdev)
- {
-- hdev->flags &= ~HCI_RUNNING;
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
- hci_vhci_flush(hdev);
- return 0;
- }
-
--int hci_vhci_send_frame(struct sk_buff *skb)
-+static void hci_vhci_destruct(struct hci_dev *hdev)
-+{
-+ struct hci_vhci_struct *vhci;
-+
-+ if (!hdev) return;
-+
-+ vhci = (struct hci_vhci_struct *) hdev->driver_data;
-+ kfree(vhci);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static int hci_vhci_send_frame(struct sk_buff *skb)
- {
- struct hci_dev* hdev = (struct hci_dev *) skb->dev;
- struct hci_vhci_struct *hci_vhci;
-
- if (!hdev) {
-- ERR("Frame for uknown device (hdev=NULL)");
-+ BT_ERR("Frame for uknown device (hdev=NULL)");
- return -ENODEV;
- }
-
-- if (!(hdev->flags & HCI_RUNNING))
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
- return -EBUSY;
-
- hci_vhci = (struct hci_vhci_struct *) hdev->driver_data;
-@@ -188,7 +201,7 @@
-
- add_wait_queue(&hci_vhci->read_wait, &wait);
- while (count) {
-- current->state = TASK_INTERRUPTIBLE;
-+ set_current_state(TASK_INTERRUPTIBLE);
-
- /* Read frames from device queue */
- if (!(skb = skb_dequeue(&hci_vhci->readq))) {
-@@ -214,8 +227,7 @@
- kfree_skb(skb);
- break;
- }
--
-- current->state = TASK_RUNNING;
-+ set_current_state(TASK_RUNNING);
- remove_wait_queue(&hci_vhci->read_wait, &wait);
-
- return ret;
-@@ -270,11 +282,13 @@
- hdev->close = hci_vhci_close;
- hdev->flush = hci_vhci_flush;
- hdev->send = hci_vhci_send_frame;
-+ hdev->destruct = hci_vhci_destruct;
-
- if (hci_register_dev(hdev) < 0) {
- kfree(hci_vhci);
- return -EBUSY;
- }
-+ MOD_INC_USE_COUNT;
-
- file->private_data = hci_vhci;
- return 0;
-@@ -285,12 +299,10 @@
- struct hci_vhci_struct *hci_vhci = (struct hci_vhci_struct *) file->private_data;
-
- if (hci_unregister_dev(&hci_vhci->hdev) < 0) {
-- ERR("Can't unregister HCI device %s", hci_vhci->hdev.name);
-+ BT_ERR("Can't unregister HCI device %s", hci_vhci->hdev.name);
- }
-
-- kfree(hci_vhci);
- file->private_data = NULL;
--
- return 0;
- }
-
-@@ -315,12 +327,12 @@
-
- int __init hci_vhci_init(void)
- {
-- INF("BlueZ VHCI driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ BT_INFO("BlueZ VHCI driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-
- if (misc_register(&hci_vhci_miscdev)) {
-- ERR("Can't register misc device %d\n", VHCI_MINOR);
-+ BT_ERR("Can't register misc device %d\n", VHCI_MINOR);
- return -EIO;
- }
-
-@@ -337,4 +349,4 @@
-
- MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
- MODULE_DESCRIPTION("BlueZ VHCI driver ver " VERSION);
--MODULE_LICENSE("GPL");
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/hci_vhci.h linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.h
---- linux-2.4.18/drivers/bluetooth/hci_vhci.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,50 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_vhci.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $
-+ */
-+
-+#ifndef __HCI_VHCI_H
-+#define __HCI_VHCI_H
-+
-+#ifdef __KERNEL__
-+
-+struct hci_vhci_struct {
-+ struct hci_dev hdev;
-+ __u32 flags;
-+ wait_queue_head_t read_wait;
-+ struct sk_buff_head readq;
-+ struct fasync_struct *fasync;
-+};
-+
-+/* VHCI device flags */
-+#define VHCI_FASYNC 0x0010
-+
-+#endif /* __KERNEL__ */
-+
-+#define VHCI_DEV "/dev/vhci"
-+#define VHCI_MINOR 250
-+
-+#endif /* __HCI_VHCI_H */
-diff -urN linux-2.4.18/drivers/bluetooth/Makefile linux-2.4.18-mh15/drivers/bluetooth/Makefile
---- linux-2.4.18/drivers/bluetooth/Makefile 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/bluetooth/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -1,11 +1,27 @@
- #
--# Makefile for Bluetooth HCI device drivers.
-+# Makefile for the Linux Bluetooth HCI device drivers
- #
-
- O_TARGET := bluetooth.o
-
-+list-multi := hci_uart.o
-+
- obj-$(CONFIG_BLUEZ_HCIUSB) += hci_usb.o
--obj-$(CONFIG_BLUEZ_HCIUART) += hci_uart.o
- obj-$(CONFIG_BLUEZ_HCIVHCI) += hci_vhci.o
-
-+obj-$(CONFIG_BLUEZ_HCIUART) += hci_uart.o
-+uart-y := hci_ldisc.o
-+uart-$(CONFIG_BLUEZ_HCIUART_H4) += hci_h4.o
-+uart-$(CONFIG_BLUEZ_HCIUART_BCSP) += hci_bcsp.o
-+
-+obj-$(CONFIG_BLUEZ_HCIBFUSB) += bfusb.o
-+
-+obj-$(CONFIG_BLUEZ_HCIDTL1) += dtl1_cs.o
-+obj-$(CONFIG_BLUEZ_HCIBT3C) += bt3c_cs.o
-+obj-$(CONFIG_BLUEZ_HCIBLUECARD) += bluecard_cs.o
-+obj-$(CONFIG_BLUEZ_HCIBTUART) += btuart_cs.o
-+
- include $(TOPDIR)/Rules.make
-+
-+hci_uart.o: $(uart-y)
-+ $(LD) -r -o $@ $(uart-y)
-diff -urN linux-2.4.18/drivers/bluetooth/Makefile.lib linux-2.4.18-mh15/drivers/bluetooth/Makefile.lib
---- linux-2.4.18/drivers/bluetooth/Makefile.lib 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/bluetooth/Makefile.lib 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,2 @@
-+obj-$(CONFIG_BLUEZ_HCIBFUSB) += firmware_class.o
-+obj-$(CONFIG_BLUEZ_HCIBT3C) += firmware_class.o
-diff -urN linux-2.4.18/drivers/char/pcmcia/serial_cs.c linux-2.4.18-mh15/drivers/char/pcmcia/serial_cs.c
---- linux-2.4.18/drivers/char/pcmcia/serial_cs.c 2001-12-21 18:41:54.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/char/pcmcia/serial_cs.c 2004-08-01 16:26:23.000000000 +0200
-@@ -2,7 +2,7 @@
-
- A driver for PCMCIA serial devices
-
-- serial_cs.c 1.128 2001/10/18 12:18:35
-+ serial_cs.c 1.138 2002/10/25 06:24:52
-
- The contents of this file are subject to the Mozilla Public
- License Version 1.1 (the "License"); you may not use this file
-@@ -69,14 +69,14 @@
- static int irq_list[4] = { -1 };
- MODULE_PARM(irq_list, "1-4i");
-
--/* Enable the speaker? */
--INT_MODULE_PARM(do_sound, 1);
-+INT_MODULE_PARM(do_sound, 1); /* Enable the speaker? */
-+INT_MODULE_PARM(buggy_uart, 0); /* Skip strict UART tests? */
-
- #ifdef PCMCIA_DEBUG
- INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG);
- #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args)
- static char *version =
--"serial_cs.c 1.128 2001/10/18 12:18:35 (David Hinds)";
-+"serial_cs.c 1.138 2002/10/25 06:24:52 (David Hinds)";
- #else
- #define DEBUG(n, args...)
- #endif
-@@ -95,6 +95,7 @@
- { MANFID_OMEGA, PRODID_OMEGA_QSP_100, 4 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D1, 2 },
-+ { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D2, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS232, 4 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS422, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS422, 4 },
-@@ -148,7 +149,7 @@
- client_reg_t client_reg;
- dev_link_t *link;
- int i, ret;
--
-+
- DEBUG(0, "serial_attach()\n");
-
- /* Create new serial device */
-@@ -160,7 +161,7 @@
- link->release.function = &serial_release;
- link->release.data = (u_long)link;
- link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-- link->io.NumPorts1 = 8;
-+ link->io.Attributes2 = IO_DATA_PATH_WIDTH_8;
- link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
- link->irq.IRQInfo1 = IRQ_INFO2_VALID|IRQ_LEVEL_ID;
- if (irq_list[0] == -1)
-@@ -169,13 +170,12 @@
- for (i = 0; i < 4; i++)
- link->irq.IRQInfo2 |= 1 << irq_list[i];
- link->conf.Attributes = CONF_ENABLE_IRQ;
-- link->conf.Vcc = 50;
- if (do_sound) {
- link->conf.Attributes |= CONF_ENABLE_SPKR;
- link->conf.Status = CCSR_AUDIO_ENA;
- }
- link->conf.IntType = INT_MEMORY_AND_IO;
--
-+
- /* Register with Card Services */
- link->next = dev_list;
- dev_list = link;
-@@ -194,7 +194,7 @@
- serial_detach(link);
- return NULL;
- }
--
-+
- return link;
- } /* serial_attach */
-
-@@ -214,7 +214,7 @@
- int ret;
-
- DEBUG(0, "serial_detach(0x%p)\n", link);
--
-+
- /* Locate device structure */
- for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
- if (*linkp == link) break;
-@@ -224,17 +224,17 @@
- del_timer(&link->release);
- if (link->state & DEV_CONFIG)
- serial_release((u_long)link);
--
-+
- if (link->handle) {
- ret = CardServices(DeregisterClient, link->handle);
- if (ret != CS_SUCCESS)
- cs_error(link->handle, DeregisterClient, ret);
- }
--
-+
- /* Unlink device structure, free bits */
- *linkp = link->next;
- kfree(info);
--
-+
- } /* serial_detach */
-
- /*====================================================================*/
-@@ -243,18 +243,20 @@
- {
- struct serial_struct serial;
- int line;
--
-+
- memset(&serial, 0, sizeof(serial));
- serial.port = port;
- serial.irq = irq;
- serial.flags = ASYNC_SKIP_TEST | ASYNC_SHARE_IRQ;
-+ if (buggy_uart)
-+ serial.flags |= ASYNC_BUGGY_UART;
- line = register_serial(&serial);
- if (line < 0) {
- printk(KERN_NOTICE "serial_cs: register_serial() at 0x%04lx,"
- " irq %d failed\n", (u_long)serial.port, serial.irq);
- return -1;
- }
--
-+
- info->line[info->ndev] = line;
- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
- info->node[info->ndev].major = TTY_MAJOR;
-@@ -262,7 +264,7 @@
- if (info->ndev > 0)
- info->node[info->ndev-1].next = &info->node[info->ndev];
- info->ndev++;
--
-+
- return 0;
- }
-
-@@ -313,7 +315,10 @@
- return setup_serial(info, port, config.AssignedIRQ);
- }
- link->conf.Vcc = config.Vcc;
--
-+
-+ link->io.NumPorts1 = 8;
-+ link->io.NumPorts2 = 0;
-+
- /* First pass: look for a config entry that looks normal. */
- tuple.TupleData = (cisdata_t *)buf;
- tuple.TupleOffset = 0; tuple.TupleDataMax = 255;
-@@ -340,7 +345,7 @@
- i = next_tuple(handle, &tuple, &parse);
- }
- }
--
-+
- /* Second pass: try to find an entry that isn't picky about
- its base address, then try to grab any standard serial port
- address, and finally try to get any free port. */
-@@ -352,8 +357,7 @@
- for (j = 0; j < 5; j++) {
- link->io.BasePort1 = base[j];
- link->io.IOAddrLines = base[j] ? 16 : 3;
-- i = CardServices(RequestIO, link->handle,
-- &link->io);
-+ i = CardServices(RequestIO, link->handle, &link->io);
- if (i == CS_SUCCESS) goto found_port;
- }
- }
-@@ -365,7 +369,7 @@
- cs_error(link->handle, RequestIO, i);
- return -1;
- }
--
-+
- i = CardServices(RequestIRQ, link->handle, &link->irq);
- if (i != CS_SUCCESS) {
- cs_error(link->handle, RequestIRQ, i);
-@@ -390,8 +394,12 @@
- u_char buf[256];
- cisparse_t parse;
- cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
- int i, base2 = 0;
-
-+ CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
- tuple.TupleData = (cisdata_t *)buf;
- tuple.TupleOffset = 0; tuple.TupleDataMax = 255;
- tuple.Attributes = 0;
-@@ -433,12 +441,12 @@
- i = next_tuple(handle, &tuple, &parse);
- }
- }
--
-+
- if (i != CS_SUCCESS) {
-- cs_error(link->handle, RequestIO, i);
-- return -1;
-+ /* At worst, try to configure as a single port */
-+ return simple_config(link);
- }
--
-+
- i = CardServices(RequestIRQ, link->handle, &link->irq);
- if (i != CS_SUCCESS) {
- cs_error(link->handle, RequestIRQ, i);
-@@ -454,14 +462,27 @@
- cs_error(link->handle, RequestConfiguration, i);
- return -1;
- }
--
-+
-+ /* The Oxford Semiconductor OXCF950 cards are in fact single-port:
-+ 8 registers are for the UART, the others are extra registers */
-+ if (info->manfid == MANFID_OXSEMI) {
-+ if (cf->index == 1 || cf->index == 3) {
-+ setup_serial(info, base2, link->irq.AssignedIRQ);
-+ outb(12,link->io.BasePort1+1);
-+ } else {
-+ setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ);
-+ outb(12,base2+1);
-+ }
-+ return 0;
-+ }
-+
- setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ);
- /* The Nokia cards are not really multiport cards */
- if (info->manfid == MANFID_NOKIA)
- return 0;
- for (i = 0; i < info->multi-1; i++)
- setup_serial(info, base2+(8*i), link->irq.AssignedIRQ);
--
-+
- return 0;
- }
-
-@@ -500,7 +521,7 @@
- }
- link->conf.ConfigBase = parse.config.base;
- link->conf.Present = parse.config.rmask[0];
--
-+
- /* Configure card */
- link->state |= DEV_CONFIG;
-
-@@ -508,8 +529,8 @@
- tuple.DesiredTuple = CISTPL_LONGLINK_MFC;
- tuple.Attributes = TUPLE_RETURN_COMMON | TUPLE_RETURN_LINK;
- info->multi = (first_tuple(handle, &tuple, &parse) == CS_SUCCESS);
--
-- /* Is this a multiport card? */
-+
-+ /* Scan list of known multiport card ID's */
- tuple.DesiredTuple = CISTPL_MANFID;
- if (first_tuple(handle, &tuple, &parse) == CS_SUCCESS) {
- info->manfid = le16_to_cpu(buf[0]);
-@@ -537,15 +558,15 @@
- info->multi = 2;
- }
- }
--
-+
- if (info->multi > 1)
- multi_config(link);
- else
- simple_config(link);
--
-+
- if (info->ndev == 0)
- goto failed;
--
-+
- if (info->manfid == MANFID_IBM) {
- conf_reg_t reg = { 0, CS_READ, 0x800, 0 };
- CS_CHECK(AccessConfigurationRegister, link->handle, &reg);
-@@ -562,6 +583,7 @@
- cs_error(link->handle, last_fn, last_ret);
- failed:
- serial_release((u_long)link);
-+ link->state &= ~DEV_CONFIG_PENDING;
-
- } /* serial_config */
-
-@@ -569,7 +591,7 @@
-
- After a card is removed, serial_release() will unregister the net
- device, and release the PCMCIA configuration.
--
-+
- ======================================================================*/
-
- void serial_release(u_long arg)
-@@ -577,7 +599,7 @@
- dev_link_t *link = (dev_link_t *)arg;
- serial_info_t *info = link->priv;
- int i;
--
-+
- DEBUG(0, "serial_release(0x%p)\n", link);
-
- for (i = 0; i < info->ndev; i++) {
-@@ -590,7 +612,7 @@
- CardServices(ReleaseIO, link->handle, &link->io);
- CardServices(ReleaseIRQ, link->handle, &link->irq);
- }
--
-+
- link->state &= ~DEV_CONFIG;
-
- } /* serial_release */
-@@ -601,7 +623,7 @@
- stuff to run after an event is received. A CARD_REMOVAL event
- also sets some flags to discourage the serial drivers from
- talking to the ports.
--
-+
- ======================================================================*/
-
- static int serial_event(event_t event, int priority,
-@@ -609,9 +631,9 @@
- {
- dev_link_t *link = args->client_data;
- serial_info_t *info = link->priv;
--
-+
- DEBUG(1, "serial_event(0x%06x)\n", event);
--
-+
- switch (event) {
- case CS_EVENT_CARD_REMOVAL:
- link->state &= ~DEV_PRESENT;
-@@ -650,7 +672,7 @@
- if (serv.Revision != CS_RELEASE_CODE) {
- printk(KERN_NOTICE "serial_cs: Card Services release "
- "does not match!\n");
-- return -1;
-+ return -EINVAL;
- }
- register_pccard_driver(&dev_info, &serial_attach, &serial_detach);
- return 0;
-diff -urN linux-2.4.18/drivers/input/Config.in linux-2.4.18-mh15/drivers/input/Config.in
---- linux-2.4.18/drivers/input/Config.in 2001-09-13 00:34:06.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/input/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -14,5 +14,6 @@
- fi
- dep_tristate ' Joystick support' CONFIG_INPUT_JOYDEV $CONFIG_INPUT
- dep_tristate ' Event interface support' CONFIG_INPUT_EVDEV $CONFIG_INPUT
-+dep_tristate ' User level driver support' CONFIG_INPUT_UINPUT $CONFIG_INPUT
-
- endmenu
-diff -urN linux-2.4.18/drivers/input/keybdev.c linux-2.4.18-mh15/drivers/input/keybdev.c
---- linux-2.4.18/drivers/input/keybdev.c 2001-10-11 18:14:32.000000000 +0200
-+++ linux-2.4.18-mh15/drivers/input/keybdev.c 2004-08-01 16:26:23.000000000 +0200
-@@ -154,16 +154,18 @@
-
- static struct input_handler keybdev_handler;
-
-+static unsigned int ledstate = 0xff;
-+
- void keybdev_ledfunc(unsigned int led)
- {
- struct input_handle *handle;
-
-- for (handle = keybdev_handler.handle; handle; handle = handle->hnext) {
-+ ledstate = led;
-
-+ for (handle = keybdev_handler.handle; handle; handle = handle->hnext) {
- input_event(handle->dev, EV_LED, LED_SCROLLL, !!(led & 0x01));
- input_event(handle->dev, EV_LED, LED_NUML, !!(led & 0x02));
- input_event(handle->dev, EV_LED, LED_CAPSL, !!(led & 0x04));
--
- }
- }
-
-@@ -202,6 +204,12 @@
-
- // printk(KERN_INFO "keybdev.c: Adding keyboard: input%d\n", dev->number);
-
-+ if (ledstate != 0xff) {
-+ input_event(dev, EV_LED, LED_SCROLLL, !!(ledstate & 0x01));
-+ input_event(dev, EV_LED, LED_NUML, !!(ledstate & 0x02));
-+ input_event(dev, EV_LED, LED_CAPSL, !!(ledstate & 0x04));
-+ }
-+
- return handle;
- }
-
-diff -urN linux-2.4.18/drivers/input/Makefile linux-2.4.18-mh15/drivers/input/Makefile
---- linux-2.4.18/drivers/input/Makefile 2000-12-29 23:07:22.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/input/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -24,6 +24,7 @@
- obj-$(CONFIG_INPUT_MOUSEDEV) += mousedev.o
- obj-$(CONFIG_INPUT_JOYDEV) += joydev.o
- obj-$(CONFIG_INPUT_EVDEV) += evdev.o
-+obj-$(CONFIG_INPUT_UINPUT) += uinput.o
-
- # The global Rules.make.
-
-diff -urN linux-2.4.18/drivers/input/uinput.c linux-2.4.18-mh15/drivers/input/uinput.c
---- linux-2.4.18/drivers/input/uinput.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/input/uinput.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,428 @@
-+/*
-+ * User level driver support for input subsystem
-+ *
-+ * Heavily based on evdev.c by Vojtech Pavlik
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
-+ *
-+ * Changes/Revisions:
-+ * 0.1 20/06/2002
-+ * - first public version
-+ */
-+
-+#include <linux/poll.h>
-+#include <linux/slab.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/input.h>
-+#include <linux/smp_lock.h>
-+#include <linux/fs.h>
-+#include <linux/miscdevice.h>
-+#include <linux/uinput.h>
-+
-+static int uinput_dev_open(struct input_dev *dev)
-+{
-+ return 0;
-+}
-+
-+static void uinput_dev_close(struct input_dev *dev)
-+{
-+}
-+
-+static int uinput_dev_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
-+{
-+ struct uinput_device *udev;
-+
-+ udev = (struct uinput_device *)dev->private;
-+
-+ udev->buff[udev->head].type = type;
-+ udev->buff[udev->head].code = code;
-+ udev->buff[udev->head].value = value;
-+ do_gettimeofday(&udev->buff[udev->head].time);
-+ udev->head = (udev->head + 1) % UINPUT_BUFFER_SIZE;
-+
-+ wake_up_interruptible(&udev->waitq);
-+
-+ return 0;
-+}
-+
-+static int uinput_dev_upload_effect(struct input_dev *dev, struct ff_effect *effect)
-+{
-+ return 0;
-+}
-+
-+static int uinput_dev_erase_effect(struct input_dev *dev, int effect_id)
-+{
-+ return 0;
-+}
-+
-+static int uinput_create_device(struct uinput_device *udev)
-+{
-+ if (!udev->dev->name) {
-+ printk(KERN_DEBUG "%s: write device info first\n", UINPUT_NAME);
-+ return -EINVAL;
-+ }
-+
-+ udev->dev->open = uinput_dev_open;
-+ udev->dev->close = uinput_dev_close;
-+ udev->dev->event = uinput_dev_event;
-+ udev->dev->upload_effect = uinput_dev_upload_effect;
-+ udev->dev->erase_effect = uinput_dev_erase_effect;
-+ udev->dev->private = udev;
-+
-+ init_waitqueue_head(&(udev->waitq));
-+
-+ input_register_device(udev->dev);
-+
-+ set_bit(UIST_CREATED, &(udev->state));
-+
-+ return 0;
-+}
-+
-+static int uinput_destroy_device(struct uinput_device *udev)
-+{
-+ if (!test_bit(UIST_CREATED, &(udev->state))) {
-+ printk(KERN_WARNING "%s: create the device first\n", UINPUT_NAME);
-+ return -EINVAL;
-+ }
-+
-+ input_unregister_device(udev->dev);
-+
-+ clear_bit(UIST_CREATED, &(udev->state));
-+
-+ return 0;
-+}
-+
-+static int uinput_open(struct inode *inode, struct file *file)
-+{
-+ struct uinput_device *newdev;
-+ struct input_dev *newinput;
-+
-+ newdev = kmalloc(sizeof(struct uinput_device), GFP_KERNEL);
-+ if (!newdev)
-+ goto error;
-+ memset(newdev, 0, sizeof(struct uinput_device));
-+
-+ newinput = kmalloc(sizeof(struct input_dev), GFP_KERNEL);
-+ if (!newinput)
-+ goto cleanup;
-+ memset(newinput, 0, sizeof(struct input_dev));
-+
-+ newdev->dev = newinput;
-+
-+ file->private_data = newdev;
-+
-+ return 0;
-+cleanup:
-+ kfree(newdev);
-+error:
-+ return -ENOMEM;
-+}
-+
-+static int uinput_validate_absbits(struct input_dev *dev)
-+{
-+ unsigned int cnt;
-+ int retval = 0;
-+
-+ for (cnt = 0; cnt < ABS_MAX; cnt++) {
-+ if (!test_bit(cnt, dev->absbit))
-+ continue;
-+
-+ if (/*!dev->absmin[cnt] || !dev->absmax[cnt] || */
-+ (dev->absmax[cnt] <= dev->absmin[cnt])) {
-+ printk(KERN_DEBUG
-+ "%s: invalid abs[%02x] min:%d max:%d\n",
-+ UINPUT_NAME, cnt,
-+ dev->absmin[cnt], dev->absmax[cnt]);
-+ retval = -EINVAL;
-+ break;
-+ }
-+
-+ if ((dev->absflat[cnt] < dev->absmin[cnt]) ||
-+ (dev->absflat[cnt] > dev->absmax[cnt])) {
-+ printk(KERN_DEBUG
-+ "%s: absflat[%02x] out of range: %d "
-+ "(min:%d/max:%d)\n",
-+ UINPUT_NAME, cnt, dev->absflat[cnt],
-+ dev->absmin[cnt], dev->absmax[cnt]);
-+ retval = -EINVAL;
-+ break;
-+ }
-+ }
-+ return retval;
-+}
-+
-+static int uinput_alloc_device(struct file *file, const char *buffer, size_t count)
-+{
-+ struct uinput_user_dev *user_dev;
-+ struct input_dev *dev;
-+ struct uinput_device *udev;
-+ int size,
-+ retval;
-+
-+ retval = count;
-+
-+ udev = (struct uinput_device *)file->private_data;
-+ dev = udev->dev;
-+
-+ user_dev = kmalloc(sizeof(*user_dev), GFP_KERNEL);
-+ if (!user_dev) {
-+ retval = -ENOMEM;
-+ goto exit;
-+ }
-+
-+ if (copy_from_user(user_dev, buffer, sizeof(struct uinput_user_dev))) {
-+ retval = -EFAULT;
-+ goto exit;
-+ }
-+
-+ if (NULL != dev->name)
-+ kfree(dev->name);
-+
-+ size = strnlen(user_dev->name, UINPUT_MAX_NAME_SIZE) + 1;
-+ dev->name = kmalloc(size, GFP_KERNEL);
-+ if (!dev->name) {
-+ retval = -ENOMEM;
-+ goto exit;
-+ }
-+
-+ strncpy(dev->name, user_dev->name, size);
-+ dev->idbus = user_dev->idbus;
-+ dev->idvendor = user_dev->idvendor;
-+ dev->idproduct = user_dev->idproduct;
-+ dev->idversion = user_dev->idversion;
-+ dev->ff_effects_max = user_dev->ff_effects_max;
-+
-+ size = sizeof(int) * (ABS_MAX + 1);
-+ memcpy(dev->absmax, user_dev->absmax, size);
-+ memcpy(dev->absmin, user_dev->absmin, size);
-+ memcpy(dev->absfuzz, user_dev->absfuzz, size);
-+ memcpy(dev->absflat, user_dev->absflat, size);
-+
-+ /* check if absmin/absmax/absfuzz/absflat are filled as
-+ * told in Documentation/input/input-programming.txt */
-+ if (test_bit(EV_ABS, dev->evbit)) {
-+ retval = uinput_validate_absbits(dev);
-+ if (retval < 0)
-+ kfree(dev->name);
-+ }
-+
-+exit:
-+ kfree(user_dev);
-+ return retval;
-+}
-+
-+static ssize_t uinput_write(struct file *file, const char *buffer, size_t count, loff_t *ppos)
-+{
-+ struct uinput_device *udev = file->private_data;
-+
-+ if (test_bit(UIST_CREATED, &(udev->state))) {
-+ struct input_event ev;
-+
-+ if (copy_from_user(&ev, buffer, sizeof(struct input_event)))
-+ return -EFAULT;
-+ input_event(udev->dev, ev.type, ev.code, ev.value);
-+ }
-+ else
-+ count = uinput_alloc_device(file, buffer, count);
-+
-+ return count;
-+}
-+
-+static ssize_t uinput_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
-+{
-+ struct uinput_device *udev = file->private_data;
-+ int retval = 0;
-+
-+ if (!test_bit(UIST_CREATED, &(udev->state)))
-+ return -ENODEV;
-+
-+ if ((udev->head == udev->tail) && (file->f_flags & O_NONBLOCK))
-+ return -EAGAIN;
-+
-+ retval = wait_event_interruptible(udev->waitq,
-+ (udev->head != udev->tail) ||
-+ !test_bit(UIST_CREATED, &(udev->state)));
-+
-+ if (retval)
-+ return retval;
-+
-+ if (!test_bit(UIST_CREATED, &(udev->state)))
-+ return -ENODEV;
-+
-+ while ((udev->head != udev->tail) &&
-+ (retval + sizeof(struct input_event) <= count)) {
-+ if (copy_to_user(buffer + retval, &(udev->buff[udev->tail]),
-+ sizeof(struct input_event))) return -EFAULT;
-+ udev->tail = (udev->tail + 1) % UINPUT_BUFFER_SIZE;
-+ retval += sizeof(struct input_event);
-+ }
-+
-+ return retval;
-+}
-+
-+static unsigned int uinput_poll(struct file *file, poll_table *wait)
-+{
-+ struct uinput_device *udev = file->private_data;
-+
-+ poll_wait(file, &udev->waitq, wait);
-+
-+ if (udev->head != udev->tail)
-+ return POLLIN | POLLRDNORM;
-+
-+ return 0;
-+}
-+
-+static int uinput_burn_device(struct uinput_device *udev)
-+{
-+ if (test_bit(UIST_CREATED, &(udev->state)))
-+ uinput_destroy_device(udev);
-+
-+ kfree(udev->dev);
-+ kfree(udev);
-+
-+ return 0;
-+}
-+
-+static int uinput_close(struct inode *inode, struct file *file)
-+{
-+ return uinput_burn_device((struct uinput_device *)file->private_data);
-+}
-+
-+static int uinput_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
-+{
-+ int retval = 0;
-+ struct uinput_device *udev;
-+
-+ udev = (struct uinput_device *)file->private_data;
-+
-+ /* device attributes can not be changed after the device is created */
-+ if (cmd >= UI_SET_EVBIT && test_bit(UIST_CREATED, &(udev->state)))
-+ return -EINVAL;
-+
-+ switch (cmd) {
-+ case UI_DEV_CREATE:
-+ retval = uinput_create_device(udev);
-+ break;
-+
-+ case UI_DEV_DESTROY:
-+ retval = uinput_destroy_device(udev);
-+ break;
-+
-+ case UI_SET_EVBIT:
-+ if (arg > EV_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->evbit);
-+ break;
-+
-+ case UI_SET_KEYBIT:
-+ if (arg > KEY_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->keybit);
-+ break;
-+
-+ case UI_SET_RELBIT:
-+ if (arg > REL_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->relbit);
-+ break;
-+
-+ case UI_SET_ABSBIT:
-+ if (arg > ABS_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->absbit);
-+ break;
-+
-+ case UI_SET_MSCBIT:
-+ if (arg > MSC_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->mscbit);
-+ break;
-+
-+ case UI_SET_LEDBIT:
-+ if (arg > LED_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->ledbit);
-+ break;
-+
-+ case UI_SET_SNDBIT:
-+ if (arg > SND_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->sndbit);
-+ break;
-+
-+ case UI_SET_FFBIT:
-+ if (arg > FF_MAX) {
-+ retval = -EINVAL;
-+ break;
-+ }
-+ set_bit(arg, udev->dev->ffbit);
-+ break;
-+
-+ default:
-+ retval = -EFAULT;
-+ }
-+ return retval;
-+}
-+
-+struct file_operations uinput_fops = {
-+ owner: THIS_MODULE,
-+ open: uinput_open,
-+ release: uinput_close,
-+ read: uinput_read,
-+ write: uinput_write,
-+ poll: uinput_poll,
-+ ioctl: uinput_ioctl,
-+};
-+
-+static struct miscdevice uinput_misc = {
-+ fops: &uinput_fops,
-+ minor: UINPUT_MINOR,
-+ name: UINPUT_NAME,
-+};
-+
-+static int __init uinput_init(void)
-+{
-+ return misc_register(&uinput_misc);
-+}
-+
-+static void __exit uinput_exit(void)
-+{
-+ misc_deregister(&uinput_misc);
-+}
-+
-+MODULE_AUTHOR("Aristeu Sergio Rozanski Filho");
-+MODULE_DESCRIPTION("User level driver support for input subsystem");
-+MODULE_LICENSE("GPL");
-+
-+module_init(uinput_init);
-+module_exit(uinput_exit);
-+
-diff -urN linux-2.4.18/drivers/isdn/avmb1/capidrv.c linux-2.4.18-mh15/drivers/isdn/avmb1/capidrv.c
---- linux-2.4.18/drivers/isdn/avmb1/capidrv.c 2001-12-21 18:41:54.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/isdn/avmb1/capidrv.c 2004-08-01 16:26:23.000000000 +0200
-@@ -514,13 +514,25 @@
-
- static void send_message(capidrv_contr * card, _cmsg * cmsg)
- {
-- struct sk_buff *skb;
-- size_t len;
-+ struct sk_buff *skb;
-+ size_t len;
-+ u16 err;
-+
- capi_cmsg2message(cmsg, cmsg->buf);
- len = CAPIMSG_LEN(cmsg->buf);
- skb = alloc_skb(len, GFP_ATOMIC);
-+ if(!skb) {
-+ printk(KERN_ERR "no skb len(%d) memory\n", len);
-+ return;
-+ }
- memcpy(skb_put(skb, len), cmsg->buf, len);
-- (*capifuncs->capi_put_message) (global.appid, skb);
-+ err = (*capifuncs->capi_put_message) (global.appid, skb);
-+ if (err) {
-+ printk(KERN_WARNING "%s: capi_put_message error: %04x\n",
-+ __FUNCTION__, err);
-+ kfree_skb(skb);
-+ return;
-+ }
- global.nsentctlpkt++;
- }
-
-@@ -2179,10 +2191,10 @@
- free_ncci(card, card->bchans[card->nbchan-1].nccip);
- if (card->bchans[card->nbchan-1].plcip)
- free_plci(card, card->bchans[card->nbchan-1].plcip);
-- if (card->plci_list)
-- printk(KERN_ERR "capidrv: bug in free_plci()\n");
- card->nbchan--;
- }
-+ if (card->plci_list)
-+ printk(KERN_ERR "capidrv: bug in free_plci()\n");
- kfree(card->bchans);
- card->bchans = 0;
-
-diff -urN linux-2.4.18/drivers/isdn/avmb1/kcapi.c linux-2.4.18-mh15/drivers/isdn/avmb1/kcapi.c
---- linux-2.4.18/drivers/isdn/avmb1/kcapi.c 2001-12-21 18:41:54.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/isdn/avmb1/kcapi.c 2004-08-01 16:26:23.000000000 +0200
-@@ -545,7 +545,13 @@
- static void notify_up(__u32 contr)
- {
- struct capi_interface_user *p;
-+ __u16 appl;
-
-+ for (appl = 1; appl <= CAPI_MAXAPPL; appl++) {
-+ if (!VALID_APPLID(appl)) continue;
-+ if (APPL(appl)->releasing) continue;
-+ CARD(contr)->driver->register_appl(CARD(contr), appl, &APPL(appl)->rparam);
-+ }
- printk(KERN_NOTICE "kcapi: notify up contr %d\n", contr);
- spin_lock(&capi_users_lock);
- for (p = capi_users; p; p = p->next) {
-@@ -705,12 +711,16 @@
- nextpp = &(*pp)->next;
- }
- }
-- APPL(appl)->releasing--;
-- if (APPL(appl)->releasing <= 0) {
-- APPL(appl)->signal = 0;
-- APPL_MARK_FREE(appl);
-- printk(KERN_INFO "kcapi: appl %d down\n", appl);
-- }
-+ if (APPL(appl)->releasing) { /* only release if the application was marked for release */
-+ printk(KERN_DEBUG "kcapi: appl %d releasing(%d)\n", appl, APPL(appl)->releasing);
-+ APPL(appl)->releasing--;
-+ if (APPL(appl)->releasing <= 0) {
-+ APPL(appl)->signal = 0;
-+ APPL_MARK_FREE(appl);
-+ printk(KERN_INFO "kcapi: appl %d down\n", appl);
-+ }
-+ } else
-+ printk(KERN_WARNING "kcapi: appl %d card%d released without request\n", appl, card->cnr);
- }
- /*
- * ncci management
-@@ -863,16 +873,7 @@
-
- static void controllercb_ready(struct capi_ctr * card)
- {
-- __u16 appl;
--
- card->cardstate = CARD_RUNNING;
--
-- for (appl = 1; appl <= CAPI_MAXAPPL; appl++) {
-- if (!VALID_APPLID(appl)) continue;
-- if (APPL(appl)->releasing) continue;
-- card->driver->register_appl(card, appl, &APPL(appl)->rparam);
-- }
--
- printk(KERN_NOTICE "kcapi: card %d \"%s\" ready.\n",
- CARDNR(card), card->name);
-
-diff -urN linux-2.4.18/drivers/usb/Config.in linux-2.4.18-mh15/drivers/usb/Config.in
---- linux-2.4.18/drivers/usb/Config.in 2002-02-25 20:38:07.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/usb/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -31,7 +31,13 @@
-
- comment 'USB Device Class drivers'
- dep_tristate ' USB Audio support' CONFIG_USB_AUDIO $CONFIG_USB $CONFIG_SOUND
--dep_tristate ' USB Bluetooth support (EXPERIMENTAL)' CONFIG_USB_BLUETOOTH $CONFIG_USB $CONFIG_EXPERIMENTAL
-+if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-+ if [ "$CONFIG_BLUEZ" = "n" ]; then
-+ dep_tristate ' USB Bluetooth support (EXPERIMENTAL)' CONFIG_USB_BLUETOOTH $CONFIG_USB
-+ else
-+ comment ' USB Bluetooth can only be used with disabled Bluetooth subsystem'
-+ fi
-+fi
- if [ "$CONFIG_SCSI" = "n" ]; then
- comment ' SCSI support is needed for USB Storage'
- fi
-diff -urN linux-2.4.18/drivers/usb/hid-core.c linux-2.4.18-mh15/drivers/usb/hid-core.c
---- linux-2.4.18/drivers/usb/hid-core.c 2001-12-21 18:41:55.000000000 +0100
-+++ linux-2.4.18-mh15/drivers/usb/hid-core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -217,6 +217,8 @@
-
- offset = report->size;
- report->size += parser->global.report_size * parser->global.report_count;
-+ if (usages < parser->global.report_count)
-+ usages = parser->global.report_count;
-
- if (usages == 0)
- return 0; /* ignore padding fields */
-diff -urN linux-2.4.18/include/linux/firmware.h linux-2.4.18-mh15/include/linux/firmware.h
---- linux-2.4.18/include/linux/firmware.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/include/linux/firmware.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,20 @@
-+#ifndef _LINUX_FIRMWARE_H
-+#define _LINUX_FIRMWARE_H
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#define FIRMWARE_NAME_MAX 30
-+struct firmware {
-+ size_t size;
-+ u8 *data;
-+};
-+int request_firmware (const struct firmware **fw, const char *name,
-+ const char *device);
-+int request_firmware_nowait (
-+ struct module *module,
-+ const char *name, const char *device, void *context,
-+ void (*cont)(const struct firmware *fw, void *context));
-+/* On 2.5 'device' is 'struct device *' */
-+
-+void release_firmware (const struct firmware *fw);
-+void register_firmware (const char *name, const u8 *data, size_t size);
-+#endif
-diff -urN linux-2.4.18/include/linux/input.h linux-2.4.18-mh15/include/linux/input.h
---- linux-2.4.18/include/linux/input.h 2001-09-13 00:34:06.000000000 +0200
-+++ linux-2.4.18-mh15/include/linux/input.h 2004-08-01 16:26:23.000000000 +0200
-@@ -468,6 +468,8 @@
- #define BUS_PCI 0x01
- #define BUS_ISAPNP 0x02
- #define BUS_USB 0x03
-+#define BUS_HIL 0x04
-+#define BUS_BLUETOOTH 0x05
-
- #define BUS_ISA 0x10
- #define BUS_I8042 0x11
-diff -urN linux-2.4.18/include/linux/kernel.h linux-2.4.18-mh15/include/linux/kernel.h
---- linux-2.4.18/include/linux/kernel.h 2002-02-25 20:38:13.000000000 +0100
-+++ linux-2.4.18-mh15/include/linux/kernel.h 2004-08-01 16:26:23.000000000 +0200
-@@ -11,6 +11,7 @@
- #include <linux/linkage.h>
- #include <linux/stddef.h>
- #include <linux/types.h>
-+#include <linux/compiler.h>
-
- /* Optimization barrier */
- /* The "volatile" is due to gcc bugs */
-@@ -181,4 +182,6 @@
- char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */
- };
-
--#endif
-+#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0)
-+
-+#endif /* _LINUX_KERNEL_H */
-diff -urN linux-2.4.18/include/linux/net.h linux-2.4.18-mh15/include/linux/net.h
---- linux-2.4.18/include/linux/net.h 2001-11-22 20:46:19.000000000 +0100
-+++ linux-2.4.18-mh15/include/linux/net.h 2004-08-01 16:26:23.000000000 +0200
-@@ -139,6 +139,7 @@
- extern int sock_recvmsg(struct socket *, struct msghdr *m, int len, int flags);
- extern int sock_readv_writev(int type, struct inode * inode, struct file * file,
- const struct iovec * iov, long count, long size);
-+extern struct socket *sockfd_lookup(int fd, int *err);
-
- extern int net_ratelimit(void);
- extern unsigned long net_random(void);
-diff -urN linux-2.4.18/include/linux/uinput.h linux-2.4.18-mh15/include/linux/uinput.h
---- linux-2.4.18/include/linux/uinput.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/include/linux/uinput.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,79 @@
-+/*
-+ * User level driver support for input subsystem
-+ *
-+ * Heavily based on evdev.c by Vojtech Pavlik
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
-+ *
-+ * Changes/Revisions:
-+ * 0.1 20/06/2002
-+ * - first public version
-+ */
-+
-+#ifndef __UINPUT_H_
-+#define __UINPUT_H_
-+
-+#ifdef __KERNEL__
-+#define UINPUT_MINOR 223
-+#define UINPUT_NAME "uinput"
-+#define UINPUT_BUFFER_SIZE 16
-+
-+/* state flags => bit index for {set|clear|test}_bit ops */
-+#define UIST_CREATED 0
-+
-+struct uinput_device {
-+ struct input_dev *dev;
-+ unsigned long state;
-+ wait_queue_head_t waitq;
-+ unsigned char ready,
-+ head,
-+ tail;
-+ struct input_event buff[UINPUT_BUFFER_SIZE];
-+};
-+#endif /* __KERNEL__ */
-+
-+/* ioctl */
-+#define UINPUT_IOCTL_BASE 'U'
-+#define UI_DEV_CREATE _IO(UINPUT_IOCTL_BASE, 1)
-+#define UI_DEV_DESTROY _IO(UINPUT_IOCTL_BASE, 2)
-+#define UI_SET_EVBIT _IOW(UINPUT_IOCTL_BASE, 100, int)
-+#define UI_SET_KEYBIT _IOW(UINPUT_IOCTL_BASE, 101, int)
-+#define UI_SET_RELBIT _IOW(UINPUT_IOCTL_BASE, 102, int)
-+#define UI_SET_ABSBIT _IOW(UINPUT_IOCTL_BASE, 103, int)
-+#define UI_SET_MSCBIT _IOW(UINPUT_IOCTL_BASE, 104, int)
-+#define UI_SET_LEDBIT _IOW(UINPUT_IOCTL_BASE, 105, int)
-+#define UI_SET_SNDBIT _IOW(UINPUT_IOCTL_BASE, 106, int)
-+#define UI_SET_FFBIT _IOW(UINPUT_IOCTL_BASE, 107, int)
-+
-+#ifndef NBITS
-+#define NBITS(x) ((((x)-1)/(sizeof(long)*8))+1)
-+#endif /* NBITS */
-+
-+#define UINPUT_MAX_NAME_SIZE 80
-+struct uinput_user_dev {
-+ char name[UINPUT_MAX_NAME_SIZE];
-+ unsigned short idbus;
-+ unsigned short idvendor;
-+ unsigned short idproduct;
-+ unsigned short idversion;
-+ int ff_effects_max;
-+ int absmax[ABS_MAX + 1];
-+ int absmin[ABS_MAX + 1];
-+ int absfuzz[ABS_MAX + 1];
-+ int absflat[ABS_MAX + 1];
-+};
-+#endif /* __UINPUT_H_ */
-diff -urN linux-2.4.18/include/net/bluetooth/bluetooth.h linux-2.4.18-mh15/include/net/bluetooth/bluetooth.h
---- linux-2.4.18/include/net/bluetooth/bluetooth.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/bluetooth.h 2004-08-01 16:26:23.000000000 +0200
-@@ -23,7 +23,7 @@
- */
-
- /*
-- * $Id: bluetooth.h,v 1.6 2001/08/03 04:19:49 maxk Exp $
-+ * $Id: bluetooth.h,v 1.9 2002/05/06 21:11:55 maxk Exp $
- */
-
- #ifndef __BLUETOOTH_H
-@@ -31,17 +31,64 @@
-
- #include <asm/types.h>
- #include <asm/byteorder.h>
-+#include <linux/poll.h>
-+#include <net/sock.h>
-
- #ifndef AF_BLUETOOTH
- #define AF_BLUETOOTH 31
- #define PF_BLUETOOTH AF_BLUETOOTH
- #endif
-
-+/* Reserv for core and drivers use */
-+#define BLUEZ_SKB_RESERVE 8
-+
-+#ifndef MIN
-+#define MIN(a,b) ((a) < (b) ? (a) : (b))
-+#endif
-+
- #define BTPROTO_L2CAP 0
- #define BTPROTO_HCI 1
-+#define BTPROTO_SCO 2
-+#define BTPROTO_RFCOMM 3
-+#define BTPROTO_BNEP 4
-+#define BTPROTO_CMTP 5
-+#define BTPROTO_HIDP 6
-
- #define SOL_HCI 0
- #define SOL_L2CAP 6
-+#define SOL_SCO 17
-+#define SOL_RFCOMM 18
-+
-+/* Debugging */
-+#ifdef CONFIG_BLUEZ_DEBUG
-+
-+#define HCI_CORE_DEBUG 1
-+#define HCI_SOCK_DEBUG 1
-+#define HCI_UART_DEBUG 1
-+#define HCI_USB_DEBUG 1
-+//#define HCI_DATA_DUMP 1
-+
-+#define L2CAP_DEBUG 1
-+#define SCO_DEBUG 1
-+#define AF_BLUETOOTH_DEBUG 1
-+
-+#endif /* CONFIG_BLUEZ_DEBUG */
-+
-+extern void bluez_dump(char *pref, __u8 *buf, int count);
-+
-+#if __GNUC__ <= 2 && __GNUC_MINOR__ < 95
-+#define __func__ __FUNCTION__
-+#endif
-+
-+#define BT_INFO(fmt, arg...) printk(KERN_INFO fmt "\n" , ## arg)
-+#define BT_DBG(fmt, arg...) printk(KERN_INFO "%s: " fmt "\n" , __func__ , ## arg)
-+#define BT_ERR(fmt, arg...) printk(KERN_ERR "%s: " fmt "\n" , __func__ , ## arg)
-+
-+#ifdef HCI_DATA_DUMP
-+#define BT_DMP(buf, len) bluez_dump(__func__, buf, len)
-+#else
-+#define BT_DMP(D...)
-+#endif
-
- /* Connection and socket states */
- enum {
-@@ -50,6 +97,7 @@
- BT_BOUND,
- BT_LISTEN,
- BT_CONNECT,
-+ BT_CONNECT2,
- BT_CONFIG,
- BT_DISCONN,
- BT_CLOSED
-@@ -66,7 +114,8 @@
- __u8 b[6];
- } __attribute__((packed)) bdaddr_t;
-
--#define BDADDR_ANY ((bdaddr_t *)"\000\000\000\000\000")
-+#define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
-+#define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}})
-
- /* Copy, swap, convert BD Address */
- static inline int bacmp(bdaddr_t *ba1, bdaddr_t *ba2)
-@@ -82,6 +131,91 @@
- char *batostr(bdaddr_t *ba);
- bdaddr_t *strtoba(char *str);
-
-+/* Common socket structures and functions */
-+
-+#define bluez_pi(sk) ((struct bluez_pinfo *) &sk->protinfo)
-+#define bluez_sk(pi) ((struct sock *) \
-+ ((void *)pi - (unsigned long)(&((struct sock *)0)->protinfo)))
-+
-+struct bluez_pinfo {
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+
-+ struct list_head accept_q;
-+ struct sock *parent;
-+};
-+
-+struct bluez_sock_list {
-+ struct sock *head;
-+ rwlock_t lock;
-+};
-+
-+int bluez_sock_register(int proto, struct net_proto_family *ops);
-+int bluez_sock_unregister(int proto);
-+void bluez_sock_init(struct socket *sock, struct sock *sk);
-+void bluez_sock_link(struct bluez_sock_list *l, struct sock *s);
-+void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *s);
-+int bluez_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm);
-+uint bluez_sock_poll(struct file * file, struct socket *sock, poll_table *wait);
-+int bluez_sock_wait_state(struct sock *sk, int state, unsigned long timeo);
-+
-+void bluez_accept_enqueue(struct sock *parent, struct sock *sk);
-+struct sock * bluez_accept_dequeue(struct sock *parent, struct socket *newsock);
-+
-+/* Skb helpers */
-+struct bluez_skb_cb {
-+ int incomming;
-+};
-+#define bluez_cb(skb) ((struct bluez_skb_cb *)(skb->cb))
-+
-+static inline struct sk_buff *bluez_skb_alloc(unsigned int len, int how)
-+{
-+ struct sk_buff *skb;
-+
-+ if ((skb = alloc_skb(len + BLUEZ_SKB_RESERVE, how))) {
-+ skb_reserve(skb, BLUEZ_SKB_RESERVE);
-+ bluez_cb(skb)->incomming = 0;
-+ }
-+ return skb;
-+}
-+
-+static inline struct sk_buff *bluez_skb_send_alloc(struct sock *sk, unsigned long len,
-+ int nb, int *err)
-+{
-+ struct sk_buff *skb;
-+
-+ if ((skb = sock_alloc_send_skb(sk, len + BLUEZ_SKB_RESERVE, nb, err))) {
-+ skb_reserve(skb, BLUEZ_SKB_RESERVE);
-+ bluez_cb(skb)->incomming = 0;
-+ }
-+
-+ return skb;
-+}
-+
-+static inline int skb_frags_no(struct sk_buff *skb)
-+{
-+ register struct sk_buff *frag = skb_shinfo(skb)->frag_list;
-+ register int n = 1;
-+
-+ for (; frag; frag=frag->next, n++);
-+ return n;
-+}
-+
-+int hci_core_init(void);
-+int hci_core_cleanup(void);
-+int hci_sock_init(void);
-+int hci_sock_cleanup(void);
-+
- int bterr(__u16 code);
-
-+#ifndef MODULE_LICENSE
-+#define MODULE_LICENSE(x)
-+#endif
-+
-+#ifndef list_for_each_safe
-+#define list_for_each_safe(pos, n, head) \
-+ for (pos = (head)->next, n = pos->next; pos != (head); \
-+ pos = n, n = pos->next)
-+#endif
-+
- #endif /* __BLUETOOTH_H */
-diff -urN linux-2.4.18/include/net/bluetooth/bluez.h linux-2.4.18-mh15/include/net/bluetooth/bluez.h
---- linux-2.4.18/include/net/bluetooth/bluez.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/bluez.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,124 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: bluez.h,v 1.4 2001/08/03 04:19:49 maxk Exp $
-- */
--
--#ifndef __IF_BLUEZ_H
--#define __IF_BLUEZ_H
--
--#include <net/sock.h>
--
--#define BLUEZ_MAX_PROTO 2
--
--/* Reserv for core and drivers use */
--#define BLUEZ_SKB_RESERVE 8
--
--#ifndef MIN
--#define MIN(a,b) ((a) < (b) ? (a) : (b))
--#endif
--
--/* Debugging */
--#ifdef BLUEZ_DEBUG
--
--#define HCI_CORE_DEBUG 1
--#define HCI_SOCK_DEBUG 1
--#define HCI_UART_DEBUG 1
--#define HCI_USB_DEBUG 1
--//#define HCI_DATA_DUMP 1
--
--#define L2CAP_DEBUG 1
--
--#endif /* BLUEZ_DEBUG */
--
--extern void bluez_dump(char *pref, __u8 *buf, int count);
--
--#define INF(fmt, arg...) printk(KERN_INFO fmt "\n" , ## arg)
--#define DBG(fmt, arg...) printk(KERN_INFO __FUNCTION__ ": " fmt "\n" , ## arg)
--#define ERR(fmt, arg...) printk(KERN_ERR __FUNCTION__ ": " fmt "\n" , ## arg)
--
--#ifdef HCI_DATA_DUMP
--#define DMP(buf, len) bluez_dump(__FUNCTION__, buf, len)
--#else
--#define DMP(D...)
--#endif
--
--/* ----- Sockets ------ */
--struct bluez_sock_list {
-- struct sock *head;
-- rwlock_t lock;
--};
--
--extern int bluez_sock_register(int proto, struct net_proto_family *ops);
--extern int bluez_sock_unregister(int proto);
--
--extern void bluez_sock_link(struct bluez_sock_list *l, struct sock *s);
--extern void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *s);
--
--/* ----- SKB helpers ----- */
--struct bluez_skb_cb {
-- int incomming;
--};
--#define bluez_cb(skb) ((struct bluez_skb_cb *)(skb->cb))
--
--static inline struct sk_buff *bluez_skb_alloc(unsigned int len, int how)
--{
-- struct sk_buff *skb;
--
-- if ((skb = alloc_skb(len + BLUEZ_SKB_RESERVE, how))) {
-- skb_reserve(skb, BLUEZ_SKB_RESERVE);
-- bluez_cb(skb)->incomming = 0;
-- }
-- return skb;
--}
--
--static inline struct sk_buff *bluez_skb_send_alloc(struct sock *sk, unsigned long len,
-- int nb, int *err)
--{
-- struct sk_buff *skb;
--
-- if ((skb = sock_alloc_send_skb(sk, len + BLUEZ_SKB_RESERVE, nb, err))) {
-- skb_reserve(skb, BLUEZ_SKB_RESERVE);
-- bluez_cb(skb)->incomming = 0;
-- }
--
-- return skb;
--}
--
--static inline int skb_frags_no(struct sk_buff *skb)
--{
-- register struct sk_buff *frag = skb_shinfo(skb)->frag_list;
-- register int n = 1;
--
-- for (; frag; frag=frag->next, n++);
-- return n;
--}
--
--extern int hci_core_init(void);
--extern int hci_core_cleanup(void);
--extern int hci_sock_init(void);
--extern int hci_sock_cleanup(void);
--
--#endif /* __IF_BLUEZ_H */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_core.h linux-2.4.18-mh15/include/net/bluetooth/hci_core.h
---- linux-2.4.18/include/net/bluetooth/hci_core.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/hci_core.h 2004-08-01 16:26:23.000000000 +0200
-@@ -23,7 +23,7 @@
- */
-
- /*
-- * $Id: hci_core.h,v 1.11 2001/08/05 06:02:15 maxk Exp $
-+ * $Id: hci_core.h,v 1.5 2002/06/27 04:56:30 maxk Exp $
- */
-
- #ifndef __HCI_CORE_H
-@@ -32,14 +32,12 @@
- #include <net/bluetooth/hci.h>
-
- /* HCI upper protocols */
--#define HCI_MAX_PROTO 1
- #define HCI_PROTO_L2CAP 0
-+#define HCI_PROTO_SCO 1
-
- #define HCI_INIT_TIMEOUT (HZ * 10)
-
--/* ----- Inquiry cache ----- */
--#define INQUIRY_CACHE_AGE_MAX (HZ*5) // 5 seconds
--#define INQUIRY_ENTRY_AGE_MAX (HZ*60) // 60 seconds
-+/* HCI Core structures */
-
- struct inquiry_entry {
- struct inquiry_entry *next;
-@@ -53,111 +51,188 @@
- struct inquiry_entry *list;
- };
-
--static inline void inquiry_cache_init(struct inquiry_cache *cache)
--{
-- spin_lock_init(&cache->lock);
-- cache->list = NULL;
--}
-+struct conn_hash {
-+ struct list_head list;
-+ spinlock_t lock;
-+ unsigned int num;
-+};
-
--static inline void inquiry_cache_lock(struct inquiry_cache *cache)
--{
-- spin_lock(&cache->lock);
--}
-+struct hci_dev {
-+ struct list_head list;
-+ spinlock_t lock;
-+ atomic_t refcnt;
-
--static inline void inquiry_cache_unlock(struct inquiry_cache *cache)
--{
-- spin_unlock(&cache->lock);
--}
-+ char name[8];
-+ unsigned long flags;
-+ __u16 id;
-+ __u8 type;
-+ bdaddr_t bdaddr;
-+ __u8 features[8];
-
--static inline void inquiry_cache_lock_bh(struct inquiry_cache *cache)
--{
-- spin_lock_bh(&cache->lock);
--}
-+ __u16 pkt_type;
-+ __u16 link_policy;
-+ __u16 link_mode;
-
--static inline void inquiry_cache_unlock_bh(struct inquiry_cache *cache)
--{
-- spin_unlock_bh(&cache->lock);
--}
-+ unsigned long quirks;
-
--static inline long inquiry_cache_age(struct inquiry_cache *cache)
--{
-- return jiffies - cache->timestamp;
--}
-+ atomic_t cmd_cnt;
-+ unsigned int acl_cnt;
-+ unsigned int sco_cnt;
-
--static inline long inquiry_entry_age(struct inquiry_entry *e)
--{
-- return jiffies - e->timestamp;
--}
--extern void inquiry_cache_flush(struct inquiry_cache *cache);
-+ unsigned int acl_mtu;
-+ unsigned int sco_mtu;
-+ unsigned int acl_pkts;
-+ unsigned int sco_pkts;
-
--struct hci_dev;
-+ unsigned long cmd_last_tx;
-+ unsigned long acl_last_tx;
-+ unsigned long sco_last_tx;
-+
-+ struct tasklet_struct cmd_task;
-+ struct tasklet_struct rx_task;
-+ struct tasklet_struct tx_task;
-+
-+ struct sk_buff_head rx_q;
-+ struct sk_buff_head raw_q;
-+ struct sk_buff_head cmd_q;
-+
-+ struct sk_buff *sent_cmd;
-+
-+ struct semaphore req_lock;
-+ wait_queue_head_t req_wait_q;
-+ __u32 req_status;
-+ __u32 req_result;
-+
-+ struct inquiry_cache inq_cache;
-+ struct conn_hash conn_hash;
-+
-+ struct hci_dev_stats stat;
-+
-+ void *driver_data;
-+ void *core_data;
-+
-+ atomic_t promisc;
-+
-+ int (*open)(struct hci_dev *hdev);
-+ int (*close)(struct hci_dev *hdev);
-+ int (*flush)(struct hci_dev *hdev);
-+ int (*send)(struct sk_buff *skb);
-+ void (*destruct)(struct hci_dev *hdev);
-+ int (*ioctl)(struct hci_dev *hdev, unsigned int cmd, unsigned long arg);
-+};
-
--/* ----- HCI Connections ----- */
- struct hci_conn {
- struct list_head list;
-+
-+ atomic_t refcnt;
-+ spinlock_t lock;
-+
- bdaddr_t dst;
- __u16 handle;
-+ __u16 state;
- __u8 type;
-- unsigned int sent;
-+ __u8 out;
-+ __u32 link_mode;
-+ unsigned long pend;
-+
-+ unsigned int sent;
-+
-+ struct sk_buff_head data_q;
-
-+ struct timer_list timer;
-+
- struct hci_dev *hdev;
- void *l2cap_data;
-+ void *sco_data;
- void *priv;
-
-- struct sk_buff_head data_q;
-+ struct hci_conn *link;
- };
-
--struct conn_hash {
-- struct list_head list;
-- spinlock_t lock;
-- unsigned int num;
--};
-+extern struct hci_proto *hci_proto[];
-+extern struct list_head hdev_list;
-+extern rwlock_t hdev_list_lock;
-+
-+/* ----- Inquiry cache ----- */
-+#define INQUIRY_CACHE_AGE_MAX (HZ*30) // 30 seconds
-+#define INQUIRY_ENTRY_AGE_MAX (HZ*60) // 60 seconds
-+
-+#define inquiry_cache_lock(c) spin_lock(&c->lock)
-+#define inquiry_cache_unlock(c) spin_unlock(&c->lock)
-+#define inquiry_cache_lock_bh(c) spin_lock_bh(&c->lock)
-+#define inquiry_cache_unlock_bh(c) spin_unlock_bh(&c->lock)
-
--static inline void conn_hash_init(struct conn_hash *h)
-+static inline void inquiry_cache_init(struct hci_dev *hdev)
- {
-- INIT_LIST_HEAD(&h->list);
-- spin_lock_init(&h->lock);
-- h->num = 0;
-+ struct inquiry_cache *c = &hdev->inq_cache;
-+ spin_lock_init(&c->lock);
-+ c->list = NULL;
- }
-
--static inline void conn_hash_lock(struct conn_hash *h)
-+static inline int inquiry_cache_empty(struct hci_dev *hdev)
- {
-- spin_lock(&h->lock);
-+ struct inquiry_cache *c = &hdev->inq_cache;
-+ return (c->list == NULL);
- }
-
--static inline void conn_hash_unlock(struct conn_hash *h)
-+static inline long inquiry_cache_age(struct hci_dev *hdev)
- {
-- spin_unlock(&h->lock);
-+ struct inquiry_cache *c = &hdev->inq_cache;
-+ return jiffies - c->timestamp;
- }
-
--static inline void __conn_hash_add(struct conn_hash *h, __u16 handle, struct hci_conn *c)
-+static inline long inquiry_entry_age(struct inquiry_entry *e)
- {
-- list_add(&c->list, &h->list);
-- h->num++;
-+ return jiffies - e->timestamp;
- }
-
--static inline void conn_hash_add(struct conn_hash *h, __u16 handle, struct hci_conn *c)
-+struct inquiry_entry *inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr);
-+void inquiry_cache_update(struct hci_dev *hdev, inquiry_info *info);
-+void inquiry_cache_flush(struct hci_dev *hdev);
-+int inquiry_cache_dump(struct hci_dev *hdev, int num, __u8 *buf);
-+
-+/* ----- HCI Connections ----- */
-+enum {
-+ HCI_CONN_AUTH_PEND,
-+ HCI_CONN_ENCRYPT_PEND
-+};
-+
-+#define hci_conn_lock(c) spin_lock(&c->lock)
-+#define hci_conn_unlock(c) spin_unlock(&c->lock)
-+#define hci_conn_lock_bh(c) spin_lock_bh(&c->lock)
-+#define hci_conn_unlock_bh(c) spin_unlock_bh(&c->lock)
-+
-+#define conn_hash_lock(d) spin_lock(&d->conn_hash->lock)
-+#define conn_hash_unlock(d) spin_unlock(&d->conn_hash->lock)
-+#define conn_hash_lock_bh(d) spin_lock_bh(&d->conn_hash->lock)
-+#define conn_hash_unlock_bh(d) spin_unlock_bh(&d->conn_hash->lock)
-+
-+static inline void conn_hash_init(struct hci_dev *hdev)
- {
-- conn_hash_lock(h);
-- __conn_hash_add(h, handle, c);
-- conn_hash_unlock(h);
-+ struct conn_hash *h = &hdev->conn_hash;
-+ INIT_LIST_HEAD(&h->list);
-+ spin_lock_init(&h->lock);
-+ h->num = 0;
- }
-
--static inline void __conn_hash_del(struct conn_hash *h, struct hci_conn *c)
-+static inline void conn_hash_add(struct hci_dev *hdev, struct hci_conn *c)
- {
-- list_del(&c->list);
-- h->num--;
-+ struct conn_hash *h = &hdev->conn_hash;
-+ list_add(&c->list, &h->list);
-+ h->num++;
- }
-
--static inline void conn_hash_del(struct conn_hash *h, struct hci_conn *c)
-+static inline void conn_hash_del(struct hci_dev *hdev, struct hci_conn *c)
- {
-- conn_hash_lock(h);
-- __conn_hash_del(h, c);
-- conn_hash_unlock(h);
-+ struct conn_hash *h = &hdev->conn_hash;
-+ list_del(&c->list);
-+ h->num--;
- }
-
--static inline struct hci_conn *__conn_hash_lookup(struct conn_hash *h, __u16 handle)
-+static inline struct hci_conn *conn_hash_lookup_handle(struct hci_dev *hdev,
-+ __u16 handle)
- {
-+ register struct conn_hash *h = &hdev->conn_hash;
- register struct list_head *p;
- register struct hci_conn *c;
-
-@@ -169,101 +244,97 @@
- return NULL;
- }
-
--static inline struct hci_conn *conn_hash_lookup(struct conn_hash *h, __u16 handle)
-+static inline struct hci_conn *conn_hash_lookup_ba(struct hci_dev *hdev,
-+ __u8 type, bdaddr_t *ba)
- {
-- struct hci_conn *conn;
-+ register struct conn_hash *h = &hdev->conn_hash;
-+ register struct list_head *p;
-+ register struct hci_conn *c;
-
-- conn_hash_lock(h);
-- conn = __conn_hash_lookup(h, handle);
-- conn_hash_unlock(h);
-- return conn;
-+ list_for_each(p, &h->list) {
-+ c = list_entry(p, struct hci_conn, list);
-+ if (c->type == type && !bacmp(&c->dst, ba))
-+ return c;
-+ }
-+ return NULL;
- }
-
--/* ----- HCI Devices ----- */
--struct hci_dev {
-- atomic_t refcnt;
--
-- char name[8];
-- __u32 flags;
-- __u16 id;
-- __u8 type;
-- bdaddr_t bdaddr;
-- __u8 features[8];
--
-- __u16 pkt_type;
--
-- atomic_t cmd_cnt;
-- unsigned int acl_cnt;
-- unsigned int sco_cnt;
--
-- unsigned int acl_mtu;
-- unsigned int sco_mtu;
-- unsigned int acl_max;
-- unsigned int sco_max;
--
-- void *driver_data;
-- void *l2cap_data;
-- void *priv;
--
-- struct tasklet_struct cmd_task;
-- struct tasklet_struct rx_task;
-- struct tasklet_struct tx_task;
--
-- struct sk_buff_head rx_q;
-- struct sk_buff_head raw_q;
-- struct sk_buff_head cmd_q;
--
-- struct sk_buff *sent_cmd;
-+void hci_acl_connect(struct hci_conn *conn);
-+void hci_acl_disconn(struct hci_conn *conn, __u8 reason);
-+void hci_add_sco(struct hci_conn *conn, __u16 handle);
-
-- struct semaphore req_lock;
-- wait_queue_head_t req_wait_q;
-- __u32 req_status;
-- __u32 req_result;
-+struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst);
-+int hci_conn_del(struct hci_conn *conn);
-+void hci_conn_hash_flush(struct hci_dev *hdev);
-
-- struct inquiry_cache inq_cache;
-+struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *src);
-+int hci_conn_auth(struct hci_conn *conn);
-+int hci_conn_encrypt(struct hci_conn *conn);
-
-- struct conn_hash conn_hash;
--
-- struct hci_dev_stats stat;
--
-- int (*open)(struct hci_dev *hdev);
-- int (*close)(struct hci_dev *hdev);
-- int (*flush)(struct hci_dev *hdev);
-- int (*send)(struct sk_buff *skb);
--};
-+static inline void hci_conn_set_timer(struct hci_conn *conn, long timeout)
-+{
-+ mod_timer(&conn->timer, jiffies + timeout);
-+}
-
--static inline void hci_dev_hold(struct hci_dev *hdev)
-+static inline void hci_conn_del_timer(struct hci_conn *conn)
- {
-- atomic_inc(&hdev->refcnt);
-+ del_timer(&conn->timer);
- }
-
--static inline void hci_dev_put(struct hci_dev *hdev)
-+static inline void hci_conn_hold(struct hci_conn *conn)
- {
-- atomic_dec(&hdev->refcnt);
-+ atomic_inc(&conn->refcnt);
-+ hci_conn_del_timer(conn);
- }
-
--extern struct hci_dev *hci_dev_get(int index);
--extern int hci_register_dev(struct hci_dev *hdev);
--extern int hci_unregister_dev(struct hci_dev *hdev);
--extern int hci_dev_open(__u16 dev);
--extern int hci_dev_close(__u16 dev);
--extern int hci_dev_reset(__u16 dev);
--extern int hci_dev_reset_stat(__u16 dev);
--extern int hci_dev_info(unsigned long arg);
--extern int hci_dev_list(unsigned long arg);
--extern int hci_dev_setscan(unsigned long arg);
--extern int hci_dev_setauth(unsigned long arg);
--extern int hci_dev_setptype(unsigned long arg);
--extern int hci_conn_list(unsigned long arg);
--extern int hci_inquiry(unsigned long arg);
-+static inline void hci_conn_put(struct hci_conn *conn)
-+{
-+ if (atomic_dec_and_test(&conn->refcnt)) {
-+ if (conn->type == ACL_LINK) {
-+ unsigned long timeo = (conn->out) ?
-+ HCI_DISCONN_TIMEOUT : HCI_DISCONN_TIMEOUT * 2;
-+ hci_conn_set_timer(conn, timeo);
-+ } else
-+ hci_conn_set_timer(conn, HZ / 100);
-+ }
-+}
-
--extern __u32 hci_dev_setmode(struct hci_dev *hdev, __u32 mode);
--extern __u32 hci_dev_getmode(struct hci_dev *hdev);
-+/* ----- HCI Devices ----- */
-+static inline void hci_dev_put(struct hci_dev *d)
-+{
-+ if (atomic_dec_and_test(&d->refcnt))
-+ d->destruct(d);
-+}
-+#define hci_dev_hold(d) atomic_inc(&d->refcnt)
-+
-+#define hci_dev_lock(d) spin_lock(&d->lock)
-+#define hci_dev_unlock(d) spin_unlock(&d->lock)
-+#define hci_dev_lock_bh(d) spin_lock_bh(&d->lock)
-+#define hci_dev_unlock_bh(d) spin_unlock_bh(&d->lock)
-+
-+struct hci_dev *hci_dev_get(int index);
-+struct hci_dev *hci_get_route(bdaddr_t *src, bdaddr_t *dst);
-+int hci_register_dev(struct hci_dev *hdev);
-+int hci_unregister_dev(struct hci_dev *hdev);
-+int hci_suspend_dev(struct hci_dev *hdev);
-+int hci_resume_dev(struct hci_dev *hdev);
-+int hci_dev_open(__u16 dev);
-+int hci_dev_close(__u16 dev);
-+int hci_dev_reset(__u16 dev);
-+int hci_dev_reset_stat(__u16 dev);
-+int hci_dev_cmd(unsigned int cmd, unsigned long arg);
-+int hci_get_dev_list(unsigned long arg);
-+int hci_get_dev_info(unsigned long arg);
-+int hci_get_conn_list(unsigned long arg);
-+int hci_get_conn_info(struct hci_dev *hdev, unsigned long arg);
-+int hci_inquiry(unsigned long arg);
-
--extern int hci_recv_frame(struct sk_buff *skb);
-+int hci_recv_frame(struct sk_buff *skb);
-+void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb);
-
- /* ----- LMP capabilities ----- */
- #define lmp_rswitch_capable(dev) (dev->features[0] & LMP_RSWITCH)
-+#define lmp_encrypt_capable(dev) (dev->features[0] & LMP_ENCRYPT)
-
- /* ----- HCI tasks ----- */
- static inline void hci_sched_cmd(struct hci_dev *hdev)
-@@ -284,43 +355,130 @@
- /* ----- HCI protocols ----- */
- struct hci_proto {
- char *name;
-- __u32 id;
-- __u32 flags;
-+ unsigned int id;
-+ unsigned long flags;
-
- void *priv;
-
-- int (*connect_ind) (struct hci_dev *hdev, bdaddr_t *bdaddr);
-- int (*connect_cfm) (struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 status, struct hci_conn *conn);
-+ int (*connect_ind) (struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type);
-+ int (*connect_cfm) (struct hci_conn *conn, __u8 status);
- int (*disconn_ind) (struct hci_conn *conn, __u8 reason);
-- int (*recv_acldata) (struct hci_conn *conn, struct sk_buff *skb , __u16 flags);
-+ int (*recv_acldata) (struct hci_conn *conn, struct sk_buff *skb, __u16 flags);
- int (*recv_scodata) (struct hci_conn *conn, struct sk_buff *skb);
-+ int (*auth_cfm) (struct hci_conn *conn, __u8 status);
-+ int (*encrypt_cfm) (struct hci_conn *conn, __u8 status);
- };
-
--extern int hci_register_proto(struct hci_proto *hproto);
--extern int hci_unregister_proto(struct hci_proto *hproto);
--extern int hci_register_notifier(struct notifier_block *nb);
--extern int hci_unregister_notifier(struct notifier_block *nb);
--extern int hci_connect(struct hci_dev * hdev, bdaddr_t * bdaddr);
--extern int hci_disconnect(struct hci_conn *conn, __u8 reason);
--extern int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void * param);
--extern int hci_send_raw(struct sk_buff *skb);
--extern int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags);
--extern int hci_send_sco(struct hci_conn *conn, struct sk_buff *skb);
-+static inline int hci_proto_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
-+{
-+ register struct hci_proto *hp;
-+ int mask = 0;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->connect_ind)
-+ mask |= hp->connect_ind(hdev, bdaddr, type);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->connect_ind)
-+ mask |= hp->connect_ind(hdev, bdaddr, type);
-+
-+ return mask;
-+}
-+
-+static inline void hci_proto_connect_cfm(struct hci_conn *conn, __u8 status)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->connect_cfm)
-+ hp->connect_cfm(conn, status);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->connect_cfm)
-+ hp->connect_cfm(conn, status);
-+}
-+
-+static inline void hci_proto_disconn_ind(struct hci_conn *conn, __u8 reason)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->disconn_ind)
-+ hp->disconn_ind(conn, reason);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->disconn_ind)
-+ hp->disconn_ind(conn, reason);
-+}
-+
-+static inline void hci_proto_auth_cfm(struct hci_conn *conn, __u8 status)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->auth_cfm)
-+ hp->auth_cfm(conn, status);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->auth_cfm)
-+ hp->auth_cfm(conn, status);
-+}
-+
-+static inline void hci_proto_encrypt_cfm(struct hci_conn *conn, __u8 status)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->encrypt_cfm)
-+ hp->encrypt_cfm(conn, status);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->encrypt_cfm)
-+ hp->encrypt_cfm(conn, status);
-+}
-+
-+int hci_register_proto(struct hci_proto *hproto);
-+int hci_unregister_proto(struct hci_proto *hproto);
-+int hci_register_notifier(struct notifier_block *nb);
-+int hci_unregister_notifier(struct notifier_block *nb);
-+
-+int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void *param);
-+int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags);
-+int hci_send_sco(struct hci_conn *conn, struct sk_buff *skb);
-+
-+void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf);
-+
-+void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data);
-
- /* ----- HCI Sockets ----- */
--extern void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb);
-+void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb);
-
- /* HCI info for socket */
--#define hci_pi(sk) ((struct hci_pinfo *) &sk->protinfo)
-+#define hci_pi(sk) ((struct hci_pinfo *) &sk->tp_pinfo)
- struct hci_pinfo {
- struct hci_dev *hdev;
- struct hci_filter filter;
- __u32 cmsg_mask;
- };
-
-+/* HCI security filter */
-+#define HCI_SFLT_MAX_OGF 5
-+
-+struct hci_sec_filter {
-+ __u32 type_mask;
-+ __u32 event_mask[2];
-+ __u32 ocf_mask[HCI_SFLT_MAX_OGF + 1][4];
-+};
-+
- /* ----- HCI requests ----- */
- #define HCI_REQ_DONE 0
- #define HCI_REQ_PEND 1
- #define HCI_REQ_CANCELED 2
-
-+#define hci_req_lock(d) down(&d->req_lock)
-+#define hci_req_unlock(d) up(&d->req_lock)
-+
-+void hci_req_complete(struct hci_dev *hdev, int result);
-+void hci_req_cancel(struct hci_dev *hdev, int err);
-+
- #endif /* __HCI_CORE_H */
-diff -urN linux-2.4.18/include/net/bluetooth/hci.h linux-2.4.18-mh15/include/net/bluetooth/hci.h
---- linux-2.4.18/include/net/bluetooth/hci.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/hci.h 2004-08-01 16:26:23.000000000 +0200
-@@ -23,59 +23,80 @@
- */
-
- /*
-- * $Id: hci.h,v 1.15 2001/08/05 06:02:15 maxk Exp $
-+ * $Id: hci.h,v 1.5 2002/06/27 17:29:30 maxk Exp $
- */
-
- #ifndef __HCI_H
- #define __HCI_H
-
--#include <asm/byteorder.h>
--
--#define HCI_MAX_DEV 8
--#define HCI_MAX_FRAME_SIZE 2048
-+#define HCI_MAX_ACL_SIZE 1024
-+#define HCI_MAX_SCO_SIZE 255
-+#define HCI_MAX_EVENT_SIZE 260
-+#define HCI_MAX_FRAME_SIZE (HCI_MAX_ACL_SIZE + 4)
-
- /* HCI dev events */
- #define HCI_DEV_REG 1
- #define HCI_DEV_UNREG 2
- #define HCI_DEV_UP 3
- #define HCI_DEV_DOWN 4
-+#define HCI_DEV_SUSPEND 5
-+#define HCI_DEV_RESUME 6
-
- /* HCI device types */
--#define HCI_UART 0
-+#define HCI_VHCI 0
- #define HCI_USB 1
--#define HCI_VHCI 2
--
--/* HCI device modes */
--#define HCI_NORMAL 0x0001
--#define HCI_RAW 0x0002
--#define HCI_MODE_MASK (HCI_NORMAL | HCI_RAW)
--#define HCI_SOCK 0x1000
--
--/* HCI device states */
--#define HCI_INIT 0x0010
--#define HCI_UP 0x0020
--#define HCI_RUNNING 0x0040
-+#define HCI_PCCARD 2
-+#define HCI_UART 3
-+#define HCI_RS232 4
-+#define HCI_PCI 5
-+
-+/* HCI device quirks */
-+enum {
-+ HCI_QUIRK_RESET_ON_INIT
-+};
-
- /* HCI device flags */
--#define HCI_PSCAN 0x0100
--#define HCI_ISCAN 0x0200
--#define HCI_AUTH 0x0400
-+enum {
-+ HCI_UP,
-+ HCI_INIT,
-+ HCI_RUNNING,
-+
-+ HCI_PSCAN,
-+ HCI_ISCAN,
-+ HCI_AUTH,
-+ HCI_ENCRYPT,
-+ HCI_INQUIRY,
-+
-+ HCI_RAW
-+};
-
--/* HCI Ioctl defines */
-+/* HCI ioctl defines */
- #define HCIDEVUP _IOW('H', 201, int)
- #define HCIDEVDOWN _IOW('H', 202, int)
- #define HCIDEVRESET _IOW('H', 203, int)
--#define HCIRESETSTAT _IOW('H', 204, int)
--#define HCIGETINFO _IOR('H', 205, int)
--#define HCIGETDEVLIST _IOR('H', 206, int)
--#define HCISETRAW _IOW('H', 207, int)
--#define HCISETSCAN _IOW('H', 208, int)
--#define HCISETAUTH _IOW('H', 209, int)
--#define HCIINQUIRY _IOR('H', 210, int)
--#define HCISETPTYPE _IOW('H', 211, int)
-+#define HCIDEVRESTAT _IOW('H', 204, int)
-+
-+#define HCIGETDEVLIST _IOR('H', 210, int)
-+#define HCIGETDEVINFO _IOR('H', 211, int)
- #define HCIGETCONNLIST _IOR('H', 212, int)
-+#define HCIGETCONNINFO _IOR('H', 213, int)
-
--#ifndef __NO_HCI_DEFS
-+#define HCISETRAW _IOW('H', 220, int)
-+#define HCISETSCAN _IOW('H', 221, int)
-+#define HCISETAUTH _IOW('H', 222, int)
-+#define HCISETENCRYPT _IOW('H', 223, int)
-+#define HCISETPTYPE _IOW('H', 224, int)
-+#define HCISETLINKPOL _IOW('H', 225, int)
-+#define HCISETLINKMODE _IOW('H', 226, int)
-+#define HCISETACLMTU _IOW('H', 227, int)
-+#define HCISETSCOMTU _IOW('H', 228, int)
-+
-+#define HCIINQUIRY _IOR('H', 240, int)
-+
-+/* HCI timeouts */
-+#define HCI_CONN_TIMEOUT (HZ * 40)
-+#define HCI_DISCONN_TIMEOUT (HZ * 2)
-+#define HCI_CONN_IDLE_TIMEOUT (HZ * 60)
-
- /* HCI Packet types */
- #define HCI_COMMAND_PKT 0x01
-@@ -92,11 +113,18 @@
- #define HCI_DH3 0x0800
- #define HCI_DH5 0x8000
-
-+#define HCI_HV1 0x0020
-+#define HCI_HV2 0x0040
-+#define HCI_HV3 0x0080
-+
-+#define SCO_PTYPE_MASK (HCI_HV1 | HCI_HV2 | HCI_HV3)
-+#define ACL_PTYPE_MASK (~SCO_PTYPE_MASK)
-+
- /* ACL flags */
--#define ACL_CONT 0x0001
--#define ACL_START 0x0002
--#define ACL_ACTIVE_BCAST 0x0010
--#define ACL_PICO_BCAST 0x0020
-+#define ACL_CONT 0x01
-+#define ACL_START 0x02
-+#define ACL_ACTIVE_BCAST 0x04
-+#define ACL_PICO_BCAST 0x08
-
- /* Baseband links */
- #define SCO_LINK 0x00
-@@ -125,6 +153,20 @@
- #define LMP_PSCHEME 0x02
- #define LMP_PCONTROL 0x04
-
-+/* Link policies */
-+#define HCI_LP_RSWITCH 0x0001
-+#define HCI_LP_HOLD 0x0002
-+#define HCI_LP_SNIFF 0x0004
-+#define HCI_LP_PARK 0x0008
-+
-+/* Link mode */
-+#define HCI_LM_ACCEPT 0x8000
-+#define HCI_LM_MASTER 0x0001
-+#define HCI_LM_AUTH 0x0002
-+#define HCI_LM_ENCRYPT 0x0004
-+#define HCI_LM_TRUSTED 0x0008
-+#define HCI_LM_RELIABLE 0x0010
-+
- /* ----- HCI Commands ----- */
- /* OGF & OCF values */
-
-@@ -137,9 +179,10 @@
- __u8 hci_ver;
- __u16 hci_rev;
- __u8 lmp_ver;
-- __u16 man_name;
-- __u16 lmp_sub;
-+ __u16 manufacturer;
-+ __u16 lmp_subver;
- } __attribute__ ((packed)) read_local_version_rp;
-+#define READ_LOCAL_VERSION_RP_SIZE 9
-
- #define OCF_READ_LOCAL_FEATURES 0x0003
- typedef struct {
-@@ -165,18 +208,24 @@
- /* Host Controller and Baseband */
- #define OGF_HOST_CTL 0x03
- #define OCF_RESET 0x0003
-+#define OCF_READ_AUTH_ENABLE 0x001F
- #define OCF_WRITE_AUTH_ENABLE 0x0020
-- #define AUTH_DISABLED 0x00
-- #define AUTH_ENABLED 0x01
-+ #define AUTH_DISABLED 0x00
-+ #define AUTH_ENABLED 0x01
-+
-+#define OCF_READ_ENCRYPT_MODE 0x0021
-+#define OCF_WRITE_ENCRYPT_MODE 0x0022
-+ #define ENCRYPT_DISABLED 0x00
-+ #define ENCRYPT_P2P 0x01
-+ #define ENCRYPT_BOTH 0x02
-
- #define OCF_WRITE_CA_TIMEOUT 0x0016
- #define OCF_WRITE_PG_TIMEOUT 0x0018
-
- #define OCF_WRITE_SCAN_ENABLE 0x001A
-- #define SCANS_DISABLED 0x00
-- #define IS_ENA_PS_DIS 0x01
-- #define IS_DIS_PS_ENA 0x02
-- #define IS_ENA_PS_ENA 0x03
-+ #define SCAN_DISABLED 0x00
-+ #define SCAN_INQUIRY 0x01
-+ #define SCAN_PAGE 0x02
-
- #define OCF_SET_EVENT_FLT 0x0005
- typedef struct {
-@@ -226,9 +275,18 @@
- } __attribute__ ((packed)) write_class_of_dev_cp;
- #define WRITE_CLASS_OF_DEV_CP_SIZE 3
-
-+#define OCF_HOST_BUFFER_SIZE 0x0033
-+typedef struct {
-+ __u16 acl_mtu;
-+ __u8 sco_mtu;
-+ __u16 acl_max_pkt;
-+ __u16 sco_max_pkt;
-+} __attribute__ ((packed)) host_buffer_size_cp;
-+#define HOST_BUFFER_SIZE_CP_SIZE 7
-+
- /* Link Control */
- #define OGF_LINK_CTL 0x01
--#define OCF_CREATE_CONN 0x0005
-+#define OCF_CREATE_CONN 0x0005
- typedef struct {
- bdaddr_t bdaddr;
- __u16 pkt_type;
-@@ -246,6 +304,13 @@
- } __attribute__ ((packed)) accept_conn_req_cp;
- #define ACCEPT_CONN_REQ_CP_SIZE 7
-
-+#define OCF_REJECT_CONN_REQ 0x000a
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 reason;
-+} __attribute__ ((packed)) reject_conn_req_cp;
-+#define REJECT_CONN_REQ_CP_SIZE 7
-+
- #define OCF_DISCONNECT 0x0006
- typedef struct {
- __u16 handle;
-@@ -253,17 +318,142 @@
- } __attribute__ ((packed)) disconnect_cp;
- #define DISCONNECT_CP_SIZE 3
-
-+#define OCF_ADD_SCO 0x0007
-+typedef struct {
-+ __u16 handle;
-+ __u16 pkt_type;
-+} __attribute__ ((packed)) add_sco_cp;
-+#define ADD_SCO_CP_SIZE 4
-+
- #define OCF_INQUIRY 0x0001
- typedef struct {
- __u8 lap[3];
-- __u8 lenght;
-+ __u8 length;
- __u8 num_rsp;
- } __attribute__ ((packed)) inquiry_cp;
- #define INQUIRY_CP_SIZE 5
-
--#define OGF_LINK_POLICY 0x02 /* Link Policy */
-+typedef struct {
-+ __u8 status;
-+ bdaddr_t bdaddr;
-+} __attribute__ ((packed)) status_bdaddr_rp;
-+#define STATUS_BDADDR_RP_SIZE 7
-+
-+#define OCF_INQUIRY_CANCEL 0x0002
-+
-+#define OCF_LINK_KEY_REPLY 0x000B
-+#define OCF_LINK_KEY_NEG_REPLY 0x000C
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 link_key[16];
-+} __attribute__ ((packed)) link_key_reply_cp;
-+#define LINK_KEY_REPLY_CP_SIZE 22
-+
-+#define OCF_PIN_CODE_REPLY 0x000D
-+#define OCF_PIN_CODE_NEG_REPLY 0x000E
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 pin_len;
-+ __u8 pin_code[16];
-+} __attribute__ ((packed)) pin_code_reply_cp;
-+#define PIN_CODE_REPLY_CP_SIZE 23
-+
-+#define OCF_CHANGE_CONN_PTYPE 0x000F
-+typedef struct {
-+ __u16 handle;
-+ __u16 pkt_type;
-+} __attribute__ ((packed)) change_conn_ptype_cp;
-+#define CHANGE_CONN_PTYPE_CP_SIZE 4
-+
-+#define OCF_AUTH_REQUESTED 0x0011
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) auth_requested_cp;
-+#define AUTH_REQUESTED_CP_SIZE 2
-+
-+#define OCF_SET_CONN_ENCRYPT 0x0013
-+typedef struct {
-+ __u16 handle;
-+ __u8 encrypt;
-+} __attribute__ ((packed)) set_conn_encrypt_cp;
-+#define SET_CONN_ENCRYPT_CP_SIZE 3
-+
-+#define OCF_REMOTE_NAME_REQ 0x0019
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 pscan_rep_mode;
-+ __u8 pscan_mode;
-+ __u16 clock_offset;
-+} __attribute__ ((packed)) remote_name_req_cp;
-+#define REMOTE_NAME_REQ_CP_SIZE 10
-+
-+#define OCF_READ_REMOTE_FEATURES 0x001B
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) read_remote_features_cp;
-+#define READ_REMOTE_FEATURES_CP_SIZE 2
-+
-+#define OCF_READ_REMOTE_VERSION 0x001D
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) read_remote_version_cp;
-+#define READ_REMOTE_VERSION_CP_SIZE 2
-+
-+/* Link Policy */
-+#define OGF_LINK_POLICY 0x02
-+#define OCF_ROLE_DISCOVERY 0x0009
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) role_discovery_cp;
-+#define ROLE_DISCOVERY_CP_SIZE 2
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 role;
-+} __attribute__ ((packed)) role_discovery_rp;
-+#define ROLE_DISCOVERY_RP_SIZE 4
-+
-+#define OCF_READ_LINK_POLICY 0x000C
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) read_link_policy_cp;
-+#define READ_LINK_POLICY_CP_SIZE 2
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u16 policy;
-+} __attribute__ ((packed)) read_link_policy_rp;
-+#define READ_LINK_POLICY_RP_SIZE 5
-
--/* --------- HCI Events --------- */
-+#define OCF_SWITCH_ROLE 0x000B
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 role;
-+} __attribute__ ((packed)) switch_role_cp;
-+#define SWITCH_ROLE_CP_SIZE 7
-+
-+#define OCF_WRITE_LINK_POLICY 0x000D
-+typedef struct {
-+ __u16 handle;
-+ __u16 policy;
-+} __attribute__ ((packed)) write_link_policy_cp;
-+#define WRITE_LINK_POLICY_CP_SIZE 4
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+} __attribute__ ((packed)) write_link_policy_rp;
-+#define WRITE_LINK_POLICY_RP_SIZE 3
-+
-+/* Status params */
-+#define OGF_STATUS_PARAM 0x05
-+
-+/* Testing commands */
-+#define OGF_TESTING_CMD 0x3e
-+
-+/* Vendor specific commands */
-+#define OGF_VENDOR_CMD 0x3f
-+
-+/* ---- HCI Events ---- */
- #define EVT_INQUIRY_COMPLETE 0x01
-
- #define EVT_INQUIRY_RESULT 0x02
-@@ -272,11 +462,22 @@
- __u8 pscan_rep_mode;
- __u8 pscan_period_mode;
- __u8 pscan_mode;
-- __u8 class[3];
-+ __u8 dev_class[3];
- __u16 clock_offset;
- } __attribute__ ((packed)) inquiry_info;
- #define INQUIRY_INFO_SIZE 14
-
-+#define EVT_INQUIRY_RESULT_WITH_RSSI 0x22
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 pscan_rep_mode;
-+ __u8 pscan_period_mode;
-+ __u8 dev_class[3];
-+ __u16 clock_offset;
-+ __s8 rssi;
-+} __attribute__ ((packed)) inquiry_info_with_rssi;
-+#define INQUIRY_INFO_WITH_RSSI_SIZE 14
-+
- #define EVT_CONN_COMPLETE 0x03
- typedef struct {
- __u8 status;
-@@ -303,6 +504,44 @@
- } __attribute__ ((packed)) evt_disconn_complete;
- #define EVT_DISCONN_COMPLETE_SIZE 4
-
-+#define EVT_AUTH_COMPLETE 0x06
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+} __attribute__ ((packed)) evt_auth_complete;
-+#define EVT_AUTH_COMPLETE_SIZE 3
-+
-+#define EVT_REMOTE_NAME_REQ_COMPLETE 0x07
-+typedef struct {
-+ __u8 status;
-+ bdaddr_t bdaddr;
-+ __u8 name[248];
-+} __attribute__ ((packed)) evt_remote_name_req_complete;
-+#define EVT_REMOTE_NAME_REQ_COMPLETE_SIZE 255
-+
-+#define EVT_ENCRYPT_CHANGE 0x08
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 encrypt;
-+} __attribute__ ((packed)) evt_encrypt_change;
-+#define EVT_ENCRYPT_CHANGE_SIZE 5
-+
-+#define EVT_QOS_SETUP_COMPLETE 0x0D
-+typedef struct {
-+ __u8 service_type;
-+ __u32 token_rate;
-+ __u32 peak_bandwidth;
-+ __u32 latency;
-+ __u32 delay_variation;
-+} __attribute__ ((packed)) hci_qos;
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ hci_qos qos;
-+} __attribute__ ((packed)) evt_qos_setup_complete;
-+#define EVT_QOS_SETUP_COMPLETE_SIZE 20
-+
- #define EVT_CMD_COMPLETE 0x0e
- typedef struct {
- __u8 ncmd;
-@@ -321,16 +560,78 @@
- #define EVT_NUM_COMP_PKTS 0x13
- typedef struct {
- __u8 num_hndl;
-- /* variable lenght part */
-+ /* variable length part */
- } __attribute__ ((packed)) evt_num_comp_pkts;
- #define EVT_NUM_COMP_PKTS_SIZE 1
-
--#define EVT_HCI_DEV_EVENT 0xfd
-+#define EVT_ROLE_CHANGE 0x12
-+typedef struct {
-+ __u8 status;
-+ bdaddr_t bdaddr;
-+ __u8 role;
-+} __attribute__ ((packed)) evt_role_change;
-+#define EVT_ROLE_CHANGE_SIZE 8
-+
-+#define EVT_PIN_CODE_REQ 0x16
-+typedef struct {
-+ bdaddr_t bdaddr;
-+} __attribute__ ((packed)) evt_pin_code_req;
-+#define EVT_PIN_CODE_REQ_SIZE 6
-+
-+#define EVT_LINK_KEY_REQ 0x17
-+typedef struct {
-+ bdaddr_t bdaddr;
-+} __attribute__ ((packed)) evt_link_key_req;
-+#define EVT_LINK_KEY_REQ_SIZE 6
-+
-+#define EVT_LINK_KEY_NOTIFY 0x18
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 link_key[16];
-+ __u8 key_type;
-+} __attribute__ ((packed)) evt_link_key_notify;
-+#define EVT_LINK_KEY_NOTIFY_SIZE 23
-+
-+#define EVT_READ_REMOTE_FEATURES_COMPLETE 0x0B
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 features[8];
-+} __attribute__ ((packed)) evt_read_remote_features_complete;
-+#define EVT_READ_REMOTE_FEATURES_COMPLETE_SIZE 11
-+
-+#define EVT_READ_REMOTE_VERSION_COMPLETE 0x0C
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 lmp_ver;
-+ __u16 manufacturer;
-+ __u16 lmp_subver;
-+} __attribute__ ((packed)) evt_read_remote_version_complete;
-+#define EVT_READ_REMOTE_VERSION_COMPLETE_SIZE 8
-+
-+/* Internal events generated by BlueZ stack */
-+#define EVT_STACK_INTERNAL 0xfd
-+typedef struct {
-+ __u16 type;
-+ __u8 data[0];
-+} __attribute__ ((packed)) evt_stack_internal;
-+#define EVT_STACK_INTERNAL_SIZE 2
-+
-+#define EVT_SI_DEVICE 0x01
-+typedef struct {
-+ __u16 event;
-+ __u16 dev_id;
-+} __attribute__ ((packed)) evt_si_device;
-+#define EVT_SI_DEVICE_SIZE 4
-+
-+#define EVT_SI_SECURITY 0x02
- typedef struct {
- __u16 event;
-- __u16 param;
--} __attribute__ ((packed)) evt_hci_dev_event;
--#define EVT_HCI_DEV_EVENT_SIZE 4
-+ __u16 proto;
-+ __u16 subproto;
-+ __u8 incomming;
-+} __attribute__ ((packed)) evt_si_security;
-
- /* -------- HCI Packet structures -------- */
- #define HCI_TYPE_LEN 1
-@@ -369,14 +670,14 @@
- #define acl_handle(h) (h & 0x0fff)
- #define acl_flags(h) (h >> 12)
-
--#endif /* _NO_HCI_DEFS */
--
- /* HCI Socket options */
--#define HCI_DATA_DIR 0x0001
--#define HCI_FILTER 0x0002
-+#define HCI_DATA_DIR 1
-+#define HCI_FILTER 2
-+#define HCI_TIME_STAMP 3
-
- /* HCI CMSG flags */
- #define HCI_CMSG_DIR 0x0001
-+#define HCI_CMSG_TSTAMP 0x0002
-
- struct sockaddr_hci {
- sa_family_t hci_family;
-@@ -387,27 +688,29 @@
- struct hci_filter {
- __u32 type_mask;
- __u32 event_mask[2];
-+ __u16 opcode;
- };
-
--struct hci_dev_req {
-- __u16 dev_id;
-- __u32 dev_opt;
--};
--
--struct hci_dev_list_req {
-- __u16 dev_num;
-- struct hci_dev_req dev_req[0]; /* hci_dev_req structures */
--};
--
--struct hci_inquiry_req {
-- __u16 dev_id;
-- __u16 flags;
-- __u8 lap[3];
-- __u8 length;
-- __u8 num_rsp;
--};
--#define IREQ_CACHE_FLUSH 0x0001
-+#define HCI_FLT_TYPE_BITS 31
-+#define HCI_FLT_EVENT_BITS 63
-+#define HCI_FLT_OGF_BITS 63
-+#define HCI_FLT_OCF_BITS 127
-+
-+#if BITS_PER_LONG == 64
-+static inline void hci_set_bit(int nr, void *addr)
-+{
-+ *((__u32 *) addr + (nr >> 5)) |= ((__u32) 1 << (nr & 31));
-+}
-+static inline int hci_test_bit(int nr, void *addr)
-+{
-+ return *((__u32 *) addr + (nr >> 5)) & ((__u32) 1 << (nr & 31));
-+}
-+#else
-+#define hci_set_bit set_bit
-+#define hci_test_bit test_bit
-+#endif
-
-+/* Ioctl requests structures */
- struct hci_dev_stats {
- __u32 err_rx;
- __u32 err_tx;
-@@ -433,11 +736,13 @@
- __u8 features[8];
-
- __u32 pkt_type;
-+ __u32 link_policy;
-+ __u32 link_mode;
-
- __u16 acl_mtu;
-- __u16 acl_max;
-+ __u16 acl_pkts;
- __u16 sco_mtu;
-- __u16 sco_max;
-+ __u16 sco_pkts;
-
- struct hci_dev_stats stat;
- };
-@@ -445,6 +750,20 @@
- struct hci_conn_info {
- __u16 handle;
- bdaddr_t bdaddr;
-+ __u8 type;
-+ __u8 out;
-+ __u16 state;
-+ __u32 link_mode;
-+};
-+
-+struct hci_dev_req {
-+ __u16 dev_id;
-+ __u32 dev_opt;
-+};
-+
-+struct hci_dev_list_req {
-+ __u16 dev_num;
-+ struct hci_dev_req dev_req[0]; /* hci_dev_req structures */
- };
-
- struct hci_conn_list_req {
-@@ -453,4 +772,26 @@
- struct hci_conn_info conn_info[0];
- };
-
-+struct hci_conn_info_req {
-+ bdaddr_t bdaddr;
-+ __u8 type;
-+ struct hci_conn_info conn_info[0];
-+};
-+
-+struct hci_inquiry_req {
-+ __u16 dev_id;
-+ __u16 flags;
-+ __u8 lap[3];
-+ __u8 length;
-+ __u8 num_rsp;
-+};
-+#define IREQ_CACHE_FLUSH 0x0001
-+
-+struct hci_remotename_req {
-+ __u16 dev_id;
-+ __u16 flags;
-+ bdaddr_t bdaddr;
-+ __u8 name[248];
-+};
-+
- #endif /* __HCI_H */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_uart.h linux-2.4.18-mh15/include/net/bluetooth/hci_uart.h
---- linux-2.4.18/include/net/bluetooth/hci_uart.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/hci_uart.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,62 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: hci_uart.h,v 1.2 2001/06/02 01:40:08 maxk Exp $
-- */
--
--#ifndef N_HCI
--#define N_HCI 15
--#endif
--
--#ifdef __KERNEL__
--
--#define tty2n_hci(tty) ((struct n_hci *)((tty)->disc_data))
--#define n_hci2tty(n_hci) ((n_hci)->tty)
--
--struct n_hci {
-- struct tty_struct *tty;
-- struct hci_dev hdev;
--
-- struct sk_buff_head txq;
-- unsigned long tx_state;
--
-- spinlock_t rx_lock;
-- unsigned long rx_state;
-- unsigned long rx_count;
-- struct sk_buff *rx_skb;
--};
--
--/* Transmit states */
--#define TRANS_SENDING 1
--#define TRANS_WAKEUP 2
--
--/* Receiver States */
--#define WAIT_PACKET_TYPE 0
--#define WAIT_EVENT_HDR 1
--#define WAIT_ACL_HDR 2
--#define WAIT_SCO_HDR 3
--#define WAIT_DATA 4
--
--#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_usb.h linux-2.4.18-mh15/include/net/bluetooth/hci_usb.h
---- linux-2.4.18/include/net/bluetooth/hci_usb.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/hci_usb.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,68 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: hci_usb.h,v 1.3 2001/06/02 01:40:08 maxk Exp $
-- */
--
--#ifdef __KERNEL__
--
--/* Class, SubClass, and Protocol codes that describe a Bluetooth device */
--#define HCI_DEV_CLASS 0xe0 /* Wireless class */
--#define HCI_DEV_SUBCLASS 0x01 /* RF subclass */
--#define HCI_DEV_PROTOCOL 0x01 /* Bluetooth programming protocol */
--
--#define HCI_CTRL_REQ 0x20
--
--struct hci_usb {
-- struct usb_device *udev;
--
-- devrequest dev_req;
-- struct urb *ctrl_urb;
-- struct urb *intr_urb;
-- struct urb *read_urb;
-- struct urb *write_urb;
--
-- __u8 *read_buf;
-- __u8 *intr_buf;
-- struct sk_buff *intr_skb;
-- int intr_count;
--
-- __u8 bulk_out_ep_addr;
-- __u8 bulk_in_ep_addr;
-- __u8 intr_in_ep_addr;
-- __u8 intr_in_interval;
--
-- struct hci_dev hdev;
--
-- unsigned long tx_state;
-- struct sk_buff_head tx_ctrl_q;
-- struct sk_buff_head tx_write_q;
--};
--
--/* Transmit states */
--#define HCI_TX_CTRL 1
--#define HCI_TX_WRITE 2
--
--#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_vhci.h linux-2.4.18-mh15/include/net/bluetooth/hci_vhci.h
---- linux-2.4.18/include/net/bluetooth/hci_vhci.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/hci_vhci.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,50 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: hci_vhci.h,v 1.2 2001/08/01 01:02:20 maxk Exp $
-- */
--
--#ifndef __HCI_VHCI_H
--#define __HCI_VHCI_H
--
--#ifdef __KERNEL__
--
--struct hci_vhci_struct {
-- struct hci_dev hdev;
-- __u32 flags;
-- wait_queue_head_t read_wait;
-- struct sk_buff_head readq;
-- struct fasync_struct *fasync;
--};
--
--/* VHCI device flags */
--#define VHCI_FASYNC 0x0010
--
--#endif /* __KERNEL__ */
--
--#define VHCI_DEV "/dev/vhci"
--#define VHCI_MINOR 250
--
--#endif /* __HCI_VHCI_H */
-diff -urN linux-2.4.18/include/net/bluetooth/l2cap_core.h linux-2.4.18-mh15/include/net/bluetooth/l2cap_core.h
---- linux-2.4.18/include/net/bluetooth/l2cap_core.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/l2cap_core.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,144 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: l2cap_core.h,v 1.6 2001/08/03 04:19:49 maxk Exp $
-- */
--
--#ifndef __L2CAP_CORE_H
--#define __L2CAP_CORE_H
--
--#ifdef __KERNEL__
--
--/* ----- L2CAP interface ----- */
--struct l2cap_iff {
-- struct list_head list;
-- struct hci_dev *hdev;
-- bdaddr_t *bdaddr;
-- __u16 mtu;
-- spinlock_t lock;
-- struct list_head conn_list;
--};
--
--static inline void l2cap_iff_lock(struct l2cap_iff *iff)
--{
-- spin_lock(&iff->lock);
--}
--
--static inline void l2cap_iff_unlock(struct l2cap_iff *iff)
--{
-- spin_unlock(&iff->lock);
--}
--
--/* ----- L2CAP connections ----- */
--struct l2cap_chan_list {
-- struct sock *head;
-- rwlock_t lock;
-- long num;
--};
--
--struct l2cap_conn {
-- struct l2cap_iff *iff;
-- struct list_head list;
--
-- struct hci_conn *hconn;
--
-- __u16 state;
-- __u8 out;
-- bdaddr_t src;
-- bdaddr_t dst;
--
-- spinlock_t lock;
-- atomic_t refcnt;
--
-- struct sk_buff *rx_skb;
-- __u32 rx_len;
-- __u8 rx_ident;
-- __u8 tx_ident;
--
-- struct l2cap_chan_list chan_list;
--
-- struct timer_list timer;
--};
--
--static inline void __l2cap_conn_link(struct l2cap_iff *iff, struct l2cap_conn *c)
--{
-- list_add(&c->list, &iff->conn_list);
--}
--
--static inline void __l2cap_conn_unlink(struct l2cap_iff *iff, struct l2cap_conn *c)
--{
-- list_del(&c->list);
--}
--
--/* ----- L2CAP channel and socket info ----- */
--#define l2cap_pi(sk) ((struct l2cap_pinfo *) &sk->protinfo)
--
--struct l2cap_accept_q {
-- struct sock *head;
-- struct sock *tail;
--};
--
--struct l2cap_pinfo {
-- bdaddr_t src;
-- bdaddr_t dst;
-- __u16 psm;
-- __u16 dcid;
-- __u16 scid;
-- __u32 flags;
--
-- __u16 imtu;
-- __u16 omtu;
-- __u16 flush_to;
--
-- __u8 conf_state;
-- __u16 conf_mtu;
--
-- __u8 ident;
--
-- struct l2cap_conn *conn;
-- struct sock *next_c;
-- struct sock *prev_c;
--
-- struct sock *parent;
-- struct sock *next_q;
-- struct sock *prev_q;
--
-- struct l2cap_accept_q accept_q;
--};
--
--#define CONF_REQ_SENT 0x01
--#define CONF_INPUT_DONE 0x02
--#define CONF_OUTPUT_DONE 0x04
--
--extern struct bluez_sock_list l2cap_sk_list;
--extern struct list_head l2cap_iff_list;
--extern rwlock_t l2cap_rt_lock;
--
--extern void l2cap_register_proc(void);
--extern void l2cap_unregister_proc(void);
--
--#endif /* __KERNEL__ */
--
--#endif /* __L2CAP_CORE_H */
-diff -urN linux-2.4.18/include/net/bluetooth/l2cap.h linux-2.4.18-mh15/include/net/bluetooth/l2cap.h
---- linux-2.4.18/include/net/bluetooth/l2cap.h 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/include/net/bluetooth/l2cap.h 2004-08-01 16:26:23.000000000 +0200
-@@ -23,22 +23,17 @@
- */
-
- /*
-- * $Id: l2cap.h,v 1.5 2001/06/14 21:28:26 maxk Exp $
-+ * $Id: l2cap.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $
- */
-
- #ifndef __L2CAP_H
- #define __L2CAP_H
-
--#include <asm/types.h>
--#include <asm/byteorder.h>
--
- /* L2CAP defaults */
- #define L2CAP_DEFAULT_MTU 672
- #define L2CAP_DEFAULT_FLUSH_TO 0xFFFF
-
- #define L2CAP_CONN_TIMEOUT (HZ * 40)
--#define L2CAP_DISCONN_TIMEOUT (HZ * 2)
--#define L2CAP_CONN_IDLE_TIMEOUT (HZ * 60)
-
- /* L2CAP socket address */
- struct sockaddr_l2 {
-@@ -47,17 +42,12 @@
- bdaddr_t l2_bdaddr;
- };
-
--/* set/get sockopt defines */
--#define L2CAP_OPTIONS 0x01
-+/* Socket options */
-+#define L2CAP_OPTIONS 0x01
- struct l2cap_options {
- __u16 omtu;
- __u16 imtu;
- __u16 flush_to;
-- __u32 token_rate;
-- __u32 bucket_size;
-- __u32 pick_band;
-- __u32 latency;
-- __u32 delay_var;
- };
-
- #define L2CAP_CONNINFO 0x02
-@@ -65,6 +55,27 @@
- __u16 hci_handle;
- };
-
-+#define L2CAP_LM 0x03
-+#define L2CAP_LM_MASTER 0x0001
-+#define L2CAP_LM_AUTH 0x0002
-+#define L2CAP_LM_ENCRYPT 0x0004
-+#define L2CAP_LM_TRUSTED 0x0008
-+#define L2CAP_LM_RELIABLE 0x0010
-+
-+#define L2CAP_QOS 0x04
-+struct l2cap_qos {
-+ __u16 service_type;
-+ __u32 token_rate;
-+ __u32 token_bucket_size;
-+ __u32 peak_bandwidth;
-+ __u32 latency;
-+ __u32 delay_variation;
-+};
-+
-+#define L2CAP_SERV_NO_TRAFFIC 0x00
-+#define L2CAP_SERV_BEST_EFFORT 0x01
-+#define L2CAP_SERV_GUARANTEED 0x02
-+
- /* L2CAP command codes */
- #define L2CAP_COMMAND_REJ 0x01
- #define L2CAP_CONN_REQ 0x02
-@@ -79,7 +90,6 @@
- #define L2CAP_INFO_RSP 0x0b
-
- /* L2CAP structures */
--
- typedef struct {
- __u16 len;
- __u16 cid;
-@@ -112,11 +122,17 @@
- } __attribute__ ((packed)) l2cap_conn_rsp;
- #define L2CAP_CONN_RSP_SIZE 8
-
--#define L2CAP_CONN_SUCCESS 0x0000
--#define L2CAP_CONN_PEND 0x0001
--#define L2CAP_CONN_BAD_PSM 0x0002
--#define L2CAP_CONN_SEC_BLOCK 0x0003
--#define L2CAP_CONN_NO_MEM 0x0004
-+/* connect result */
-+#define L2CAP_CR_SUCCESS 0x0000
-+#define L2CAP_CR_PEND 0x0001
-+#define L2CAP_CR_BAD_PSM 0x0002
-+#define L2CAP_CR_SEC_BLOCK 0x0003
-+#define L2CAP_CR_NO_MEM 0x0004
-+
-+/* connect status */
-+#define L2CAP_CS_NO_INFO 0x0000
-+#define L2CAP_CS_AUTHEN_PEND 0x0001
-+#define L2CAP_CS_AUTHOR_PEND 0x0002
-
- typedef struct {
- __u16 dcid;
-@@ -147,6 +163,8 @@
- #define L2CAP_CONF_FLUSH_TO 0x02
- #define L2CAP_CONF_QOS 0x03
-
-+#define L2CAP_CONF_MAX_SIZE 22
-+
- typedef struct {
- __u16 dcid;
- __u16 scid;
-@@ -159,4 +177,82 @@
- } __attribute__ ((packed)) l2cap_disconn_rsp;
- #define L2CAP_DISCONN_RSP_SIZE 4
-
-+typedef struct {
-+ __u16 type;
-+ __u8 data[0];
-+} __attribute__ ((packed)) l2cap_info_req;
-+#define L2CAP_INFO_REQ_SIZE 2
-+
-+typedef struct {
-+ __u16 type;
-+ __u16 result;
-+ __u8 data[0];
-+} __attribute__ ((packed)) l2cap_info_rsp;
-+#define L2CAP_INFO_RSP_SIZE 4
-+
-+/* info type */
-+#define L2CAP_IT_CL_MTU 0x0001
-+#define L2CAP_IT_FEAT_MASK 0x0002
-+
-+/* info result */
-+#define L2CAP_IR_SUCCESS 0x0000
-+#define L2CAP_IR_NOTSUPP 0x0001
-+
-+/* ----- L2CAP connections ----- */
-+struct l2cap_chan_list {
-+ struct sock *head;
-+ rwlock_t lock;
-+ long num;
-+};
-+
-+struct l2cap_conn {
-+ struct hci_conn *hcon;
-+
-+ bdaddr_t *dst;
-+ bdaddr_t *src;
-+
-+ unsigned int mtu;
-+
-+ spinlock_t lock;
-+
-+ struct sk_buff *rx_skb;
-+ __u32 rx_len;
-+ __u8 rx_ident;
-+ __u8 tx_ident;
-+
-+ struct l2cap_chan_list chan_list;
-+};
-+
-+/* ----- L2CAP channel and socket info ----- */
-+#define l2cap_pi(sk) ((struct l2cap_pinfo *) &sk->tp_pinfo)
-+
-+struct l2cap_pinfo {
-+ __u16 psm;
-+ __u16 dcid;
-+ __u16 scid;
-+
-+ __u16 imtu;
-+ __u16 omtu;
-+ __u16 flush_to;
-+
-+ __u32 link_mode;
-+
-+ __u8 conf_state;
-+ __u8 conf_retry;
-+ __u16 conf_mtu;
-+
-+ __u8 ident;
-+
-+ struct l2cap_conn *conn;
-+ struct sock *next_c;
-+ struct sock *prev_c;
-+};
-+
-+#define L2CAP_CONF_REQ_SENT 0x01
-+#define L2CAP_CONF_INPUT_DONE 0x02
-+#define L2CAP_CONF_OUTPUT_DONE 0x04
-+#define L2CAP_CONF_MAX_RETRIES 2
-+
-+void l2cap_load(void);
-+
- #endif /* __L2CAP_H */
-diff -urN linux-2.4.18/include/net/bluetooth/rfcomm.h linux-2.4.18-mh15/include/net/bluetooth/rfcomm.h
---- linux-2.4.18/include/net/bluetooth/rfcomm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/include/net/bluetooth/rfcomm.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,361 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ RPN support - Dirk Husemann <hud@zurich.ibm.com>
-+*/
-+
-+/*
-+ * $Id: rfcomm.h,v 1.31 2002/10/18 20:12:11 maxk Exp $
-+ */
-+
-+#ifndef __RFCOMM_H
-+#define __RFCOMM_H
-+
-+#define RFCOMM_PSM 3
-+
-+#define RFCOMM_CONN_TIMEOUT (HZ * 30)
-+#define RFCOMM_DISC_TIMEOUT (HZ * 20)
-+
-+#define RFCOMM_DEFAULT_MTU 127
-+#define RFCOMM_DEFAULT_CREDITS 7
-+
-+#define RFCOMM_MAX_L2CAP_MTU 1024
-+#define RFCOMM_MAX_CREDITS 40
-+
-+#define RFCOMM_SKB_HEAD_RESERVE 8
-+#define RFCOMM_SKB_TAIL_RESERVE 2
-+#define RFCOMM_SKB_RESERVE (RFCOMM_SKB_HEAD_RESERVE + RFCOMM_SKB_TAIL_RESERVE)
-+
-+#define RFCOMM_SABM 0x2f
-+#define RFCOMM_DISC 0x43
-+#define RFCOMM_UA 0x63
-+#define RFCOMM_DM 0x0f
-+#define RFCOMM_UIH 0xef
-+
-+#define RFCOMM_TEST 0x08
-+#define RFCOMM_FCON 0x28
-+#define RFCOMM_FCOFF 0x18
-+#define RFCOMM_MSC 0x38
-+#define RFCOMM_RPN 0x24
-+#define RFCOMM_RLS 0x14
-+#define RFCOMM_PN 0x20
-+#define RFCOMM_NSC 0x04
-+
-+#define RFCOMM_V24_FC 0x02
-+#define RFCOMM_V24_RTC 0x04
-+#define RFCOMM_V24_RTR 0x08
-+#define RFCOMM_V24_IC 0x40
-+#define RFCOMM_V24_DV 0x80
-+
-+#define RFCOMM_RPN_BR_2400 0x0
-+#define RFCOMM_RPN_BR_4800 0x1
-+#define RFCOMM_RPN_BR_7200 0x2
-+#define RFCOMM_RPN_BR_9600 0x3
-+#define RFCOMM_RPN_BR_19200 0x4
-+#define RFCOMM_RPN_BR_38400 0x5
-+#define RFCOMM_RPN_BR_57600 0x6
-+#define RFCOMM_RPN_BR_115200 0x7
-+#define RFCOMM_RPN_BR_230400 0x8
-+
-+#define RFCOMM_RPN_DATA_5 0x0
-+#define RFCOMM_RPN_DATA_6 0x1
-+#define RFCOMM_RPN_DATA_7 0x2
-+#define RFCOMM_RPN_DATA_8 0x3
-+
-+#define RFCOMM_RPN_STOP_1 0
-+#define RFCOMM_RPN_STOP_15 1
-+
-+#define RFCOMM_RPN_PARITY_NONE 0x0
-+#define RFCOMM_RPN_PARITY_ODD 0x4
-+#define RFCOMM_RPN_PARITY_EVEN 0x5
-+#define RFCOMM_RPN_PARITY_MARK 0x6
-+#define RFCOMM_RPN_PARITY_SPACE 0x7
-+
-+#define RFCOMM_RPN_FLOW_NONE 0x00
-+
-+#define RFCOMM_RPN_XON_CHAR 0x11
-+#define RFCOMM_RPN_XOFF_CHAR 0x13
-+
-+#define RFCOMM_RPN_PM_BITRATE 0x0001
-+#define RFCOMM_RPN_PM_DATA 0x0002
-+#define RFCOMM_RPN_PM_STOP 0x0004
-+#define RFCOMM_RPN_PM_PARITY 0x0008
-+#define RFCOMM_RPN_PM_PARITY_TYPE 0x0010
-+#define RFCOMM_RPN_PM_XON 0x0020
-+#define RFCOMM_RPN_PM_XOFF 0x0040
-+#define RFCOMM_RPN_PM_FLOW 0x3F00
-+
-+#define RFCOMM_RPN_PM_ALL 0x3F7F
-+
-+struct rfcomm_hdr {
-+ u8 addr;
-+ u8 ctrl;
-+ u8 len; // Actual size can be 2 bytes
-+} __attribute__ ((packed));
-+
-+struct rfcomm_cmd {
-+ u8 addr;
-+ u8 ctrl;
-+ u8 len;
-+ u8 fcs;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_mcc {
-+ u8 type;
-+ u8 len;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_pn {
-+ u8 dlci;
-+ u8 flow_ctrl;
-+ u8 priority;
-+ u8 ack_timer;
-+ u16 mtu;
-+ u8 max_retrans;
-+ u8 credits;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_rpn {
-+ u8 dlci;
-+ u8 bit_rate;
-+ u8 line_settings;
-+ u8 flow_ctrl;
-+ u8 xon_char;
-+ u8 xoff_char;
-+ u16 param_mask;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_rls {
-+ u8 dlci;
-+ u8 status;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_msc {
-+ u8 dlci;
-+ u8 v24_sig;
-+} __attribute__ ((packed));
-+
-+/* ---- Core structures, flags etc ---- */
-+
-+struct rfcomm_session {
-+ struct list_head list;
-+ struct socket *sock;
-+ unsigned long state;
-+ unsigned long flags;
-+ atomic_t refcnt;
-+ int initiator;
-+
-+ /* Default DLC parameters */
-+ int cfc;
-+ uint mtu;
-+
-+ struct list_head dlcs;
-+};
-+
-+struct rfcomm_dlc {
-+ struct list_head list;
-+ struct rfcomm_session *session;
-+ struct sk_buff_head tx_queue;
-+ struct timer_list timer;
-+
-+ spinlock_t lock;
-+ unsigned long state;
-+ unsigned long flags;
-+ atomic_t refcnt;
-+ u8 dlci;
-+ u8 addr;
-+ u8 priority;
-+ u8 v24_sig;
-+ u8 mscex;
-+
-+ uint mtu;
-+ uint cfc;
-+ uint rx_credits;
-+ uint tx_credits;
-+
-+ void *owner;
-+
-+ void (*data_ready)(struct rfcomm_dlc *d, struct sk_buff *skb);
-+ void (*state_change)(struct rfcomm_dlc *d, int err);
-+ void (*modem_status)(struct rfcomm_dlc *d, u8 v24_sig);
-+};
-+
-+/* DLC and session flags */
-+#define RFCOMM_RX_THROTTLED 0
-+#define RFCOMM_TX_THROTTLED 1
-+#define RFCOMM_MSC_PENDING 2
-+#define RFCOMM_TIMED_OUT 3
-+
-+/* Scheduling flags and events */
-+#define RFCOMM_SCHED_STATE 0
-+#define RFCOMM_SCHED_RX 1
-+#define RFCOMM_SCHED_TX 2
-+#define RFCOMM_SCHED_TIMEO 3
-+#define RFCOMM_SCHED_WAKEUP 31
-+
-+/* MSC exchange flags */
-+#define RFCOMM_MSCEX_TX 1
-+#define RFCOMM_MSCEX_RX 2
-+#define RFCOMM_MSCEX_OK (RFCOMM_MSCEX_TX + RFCOMM_MSCEX_RX)
-+
-+/* CFC states */
-+#define RFCOMM_CFC_UNKNOWN -1
-+#define RFCOMM_CFC_DISABLED 0
-+#define RFCOMM_CFC_ENABLED RFCOMM_MAX_CREDITS
-+
-+extern struct task_struct *rfcomm_thread;
-+extern unsigned long rfcomm_event;
-+
-+static inline void rfcomm_schedule(uint event)
-+{
-+ if (!rfcomm_thread)
-+ return;
-+ set_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
-+ wake_up_process(rfcomm_thread);
-+}
-+
-+extern struct semaphore rfcomm_sem;
-+#define rfcomm_lock() down(&rfcomm_sem);
-+#define rfcomm_unlock() up(&rfcomm_sem);
-+
-+/* ---- RFCOMM DLCs (channels) ---- */
-+struct rfcomm_dlc *rfcomm_dlc_alloc(int prio);
-+void rfcomm_dlc_free(struct rfcomm_dlc *d);
-+int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel);
-+int rfcomm_dlc_close(struct rfcomm_dlc *d, int reason);
-+int rfcomm_dlc_send(struct rfcomm_dlc *d, struct sk_buff *skb);
-+int rfcomm_dlc_set_modem_status(struct rfcomm_dlc *d, u8 v24_sig);
-+int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig);
-+
-+#define rfcomm_dlc_lock(d) spin_lock(&d->lock)
-+#define rfcomm_dlc_unlock(d) spin_unlock(&d->lock)
-+
-+static inline void rfcomm_dlc_hold(struct rfcomm_dlc *d)
-+{
-+ atomic_inc(&d->refcnt);
-+}
-+
-+static inline void rfcomm_dlc_put(struct rfcomm_dlc *d)
-+{
-+ if (atomic_dec_and_test(&d->refcnt))
-+ rfcomm_dlc_free(d);
-+}
-+
-+extern void FASTCALL(__rfcomm_dlc_throttle(struct rfcomm_dlc *d));
-+extern void FASTCALL(__rfcomm_dlc_unthrottle(struct rfcomm_dlc *d));
-+
-+static inline void rfcomm_dlc_throttle(struct rfcomm_dlc *d)
-+{
-+ if (!test_and_set_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ __rfcomm_dlc_throttle(d);
-+}
-+
-+static inline void rfcomm_dlc_unthrottle(struct rfcomm_dlc *d)
-+{
-+ if (test_and_clear_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ __rfcomm_dlc_unthrottle(d);
-+}
-+
-+/* ---- RFCOMM sessions ---- */
-+struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state);
-+struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst);
-+struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err);
-+void rfcomm_session_del(struct rfcomm_session *s);
-+void rfcomm_session_close(struct rfcomm_session *s, int err);
-+void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst);
-+
-+static inline void rfcomm_session_hold(struct rfcomm_session *s)
-+{
-+ atomic_inc(&s->refcnt);
-+}
-+
-+static inline void rfcomm_session_put(struct rfcomm_session *s)
-+{
-+ if (atomic_dec_and_test(&s->refcnt))
-+ rfcomm_session_del(s);
-+}
-+
-+/* ---- RFCOMM chechsum ---- */
-+extern u8 rfcomm_crc_table[];
-+
-+/* ---- RFCOMM sockets ---- */
-+struct sockaddr_rc {
-+ sa_family_t rc_family;
-+ bdaddr_t rc_bdaddr;
-+ u8 rc_channel;
-+};
-+
-+#define rfcomm_pi(sk) ((struct rfcomm_pinfo *) &sk->tp_pinfo)
-+
-+struct rfcomm_pinfo {
-+ struct rfcomm_dlc *dlc;
-+ u8 channel;
-+};
-+
-+int rfcomm_init_sockets(void);
-+void rfcomm_cleanup_sockets(void);
-+
-+int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc **d);
-+
-+/* ---- RFCOMM TTY ---- */
-+#define RFCOMM_MAX_DEV 256
-+
-+#define RFCOMMCREATEDEV _IOW('R', 200, int)
-+#define RFCOMMRELEASEDEV _IOW('R', 201, int)
-+#define RFCOMMGETDEVLIST _IOR('R', 210, int)
-+#define RFCOMMGETDEVINFO _IOR('R', 211, int)
-+#define RFCOMMSTEALDLC _IOW('R', 220, int)
-+
-+#define RFCOMM_REUSE_DLC 0
-+#define RFCOMM_RELEASE_ONHUP 1
-+#define RFCOMM_HANGUP_NOW 2
-+#define RFCOMM_TTY_ATTACHED 3
-+
-+struct rfcomm_dev_req {
-+ s16 dev_id;
-+ u32 flags;
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+};
-+
-+struct rfcomm_dev_info {
-+ s16 id;
-+ u32 flags;
-+ u16 state;
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+};
-+
-+struct rfcomm_dev_list_req {
-+ u16 dev_num;
-+ struct rfcomm_dev_info dev_info[0];
-+};
-+
-+int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg);
-+int rfcomm_init_ttys(void);
-+void rfcomm_cleanup_ttys(void);
-+
-+#endif /* __RFCOMM_H */
-diff -urN linux-2.4.18/include/net/bluetooth/sco.h linux-2.4.18-mh15/include/net/bluetooth/sco.h
---- linux-2.4.18/include/net/bluetooth/sco.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/include/net/bluetooth/sco.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,81 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: sco.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $
-+ */
-+
-+#ifndef __SCO_H
-+#define __SCO_H
-+
-+/* SCO defaults */
-+#define SCO_DEFAULT_MTU 500
-+#define SCO_DEFAULT_FLUSH_TO 0xFFFF
-+
-+#define SCO_CONN_TIMEOUT (HZ * 40)
-+#define SCO_DISCONN_TIMEOUT (HZ * 2)
-+#define SCO_CONN_IDLE_TIMEOUT (HZ * 60)
-+
-+/* SCO socket address */
-+struct sockaddr_sco {
-+ sa_family_t sco_family;
-+ bdaddr_t sco_bdaddr;
-+};
-+
-+/* set/get sockopt defines */
-+#define SCO_OPTIONS 0x01
-+struct sco_options {
-+ __u16 mtu;
-+};
-+
-+#define SCO_CONNINFO 0x02
-+struct sco_conninfo {
-+ __u16 hci_handle;
-+};
-+
-+/* ---- SCO connections ---- */
-+struct sco_conn {
-+ struct hci_conn *hcon;
-+
-+ bdaddr_t *dst;
-+ bdaddr_t *src;
-+
-+ spinlock_t lock;
-+ struct sock *sk;
-+
-+ unsigned int mtu;
-+};
-+
-+#define sco_conn_lock(c) spin_lock(&c->lock);
-+#define sco_conn_unlock(c) spin_unlock(&c->lock);
-+
-+/* ----- SCO socket info ----- */
-+#define sco_pi(sk) ((struct sco_pinfo *) &sk->tp_pinfo)
-+
-+struct sco_pinfo {
-+ __u32 flags;
-+ struct sco_conn *conn;
-+};
-+
-+#endif /* __SCO_H */
-diff -urN linux-2.4.18/include/pcmcia/ciscode.h linux-2.4.18-mh15/include/pcmcia/ciscode.h
---- linux-2.4.18/include/pcmcia/ciscode.h 2001-12-21 18:42:04.000000000 +0100
-+++ linux-2.4.18-mh15/include/pcmcia/ciscode.h 2004-08-01 16:26:23.000000000 +0200
-@@ -1,5 +1,5 @@
- /*
-- * ciscode.h 1.48 2001/08/24 12:16:12
-+ * ciscode.h 1.57 2002/11/03 20:38:14
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
-@@ -60,6 +60,10 @@
- #define PRODID_INTEL_DUAL_RS232 0x0301
- #define PRODID_INTEL_2PLUS 0x8422
-
-+#define MANFID_KME 0x0032
-+#define PRODID_KME_KXLC005_A 0x0704
-+#define PRODID_KME_KXLC005_B 0x2904
-+
- #define MANFID_LINKSYS 0x0143
- #define PRODID_LINKSYS_PCMLM28 0xc0ab
- #define PRODID_LINKSYS_3400 0x3341
-@@ -94,6 +98,8 @@
- #define PRODID_OSITECH_JACK_336 0x0007
- #define PRODID_OSITECH_SEVEN 0x0008
-
-+#define MANFID_OXSEMI 0x0279
-+
- #define MANFID_PIONEER 0x000b
-
- #define MANFID_PSION 0x016c
-@@ -103,6 +109,7 @@
- #define PRODID_QUATECH_SPP100 0x0003
- #define PRODID_QUATECH_DUAL_RS232 0x0012
- #define PRODID_QUATECH_DUAL_RS232_D1 0x0007
-+#define PRODID_QUATECH_DUAL_RS232_D2 0x0052
- #define PRODID_QUATECH_QUAD_RS232 0x001b
- #define PRODID_QUATECH_DUAL_RS422 0x000e
- #define PRODID_QUATECH_QUAD_RS422 0x0045
-@@ -120,9 +127,12 @@
-
- #define MANFID_TDK 0x0105
- #define PRODID_TDK_CF010 0x0900
-+#define PRODID_TDK_GN3410 0x4815
-
- #define MANFID_TOSHIBA 0x0098
-
-+#define MANFID_UNGERMANN 0x02c0
-+
- #define MANFID_XIRCOM 0x0105
-
- #endif /* _LINUX_CISCODE_H */
-diff -urN linux-2.4.18/kernel/ksyms.c linux-2.4.18-mh15/kernel/ksyms.c
---- linux-2.4.18/kernel/ksyms.c 2002-02-25 20:38:13.000000000 +0100
-+++ linux-2.4.18-mh15/kernel/ksyms.c 2004-08-01 16:26:23.000000000 +0200
-@@ -47,6 +47,7 @@
- #include <linux/in6.h>
- #include <linux/completion.h>
- #include <linux/seq_file.h>
-+#include <linux/firmware.h>
- #include <asm/checksum.h>
-
- #if defined(CONFIG_PROC_FS)
-@@ -538,6 +539,13 @@
- EXPORT_SYMBOL(strspn);
- EXPORT_SYMBOL(strsep);
-
-+#ifdef CONFIG_FW_LOADER
-+EXPORT_SYMBOL(release_firmware);
-+EXPORT_SYMBOL(request_firmware);
-+EXPORT_SYMBOL(request_firmware_nowait);
-+EXPORT_SYMBOL(register_firmware);
-+#endif
-+
- /* software interrupts */
- EXPORT_SYMBOL(tasklet_hi_vec);
- EXPORT_SYMBOL(tasklet_vec);
-diff -urN linux-2.4.18/lib/Config.in linux-2.4.18-mh15/lib/Config.in
---- linux-2.4.18/lib/Config.in 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/lib/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,12 @@
-+#
-+# Library configuration
-+#
-+mainmenu_option next_comment
-+comment 'Library routines'
-+
-+if [ "$CONFIG_EXPERIMENTAL" = "y" -a \
-+ "$CONFIG_HOTPLUG" = "y" ]; then
-+ tristate 'Hotplug firmware loading support (EXPERIMENTAL)' CONFIG_FW_LOADER
-+fi
-+
-+endmenu
-diff -urN linux-2.4.18/lib/firmware_class.c linux-2.4.18-mh15/lib/firmware_class.c
---- linux-2.4.18/lib/firmware_class.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/lib/firmware_class.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,573 @@
-+/*
-+ * firmware_class.c - Multi purpose firmware loading support
-+ *
-+ * Copyright (c) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+ *
-+ * Please see Documentation/firmware_class/ for more information.
-+ *
-+ */
-+/*
-+ * Based on kernel/kmod.c and drivers/usb/usb.c
-+ */
-+/*
-+ kernel/kmod.c
-+ Kirk Petersen
-+
-+ Reorganized not to be a daemon by Adam Richter, with guidance
-+ from Greg Zornetzer.
-+
-+ Modified to avoid chroot and file sharing problems.
-+ Mikael Pettersson
-+
-+ Limit the concurrent number of kmod modprobes to catch loops from
-+ "modprobe needs a service that is in a module".
-+ Keith Owens <kaos@ocs.com.au> December 1999
-+
-+ Unblock all signals when we exec a usermode process.
-+ Shuu Yamaguchi <shuu@wondernetworkresources.com> December 2000
-+*/
-+/*
-+ * drivers/usb/usb.c
-+ *
-+ * (C) Copyright Linus Torvalds 1999
-+ * (C) Copyright Johannes Erdfelt 1999-2001
-+ * (C) Copyright Andreas Gal 1999
-+ * (C) Copyright Gregory P. Smith 1999
-+ * (C) Copyright Deti Fliegl 1999 (new USB architecture)
-+ * (C) Copyright Randy Dunlap 2000
-+ * (C) Copyright David Brownell 2000 (kernel hotplug, usb_device_id)
-+ * (C) Copyright Yggdrasil Computing, Inc. 2000
-+ * (usb_device_id matching changes by Adam J. Richter)
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/string.h>
-+#include <linux/types.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/kmod.h>
-+#include <linux/proc_fs.h>
-+#include <linux/vmalloc.h>
-+#include <asm/hardirq.h>
-+
-+#include "linux/firmware.h"
-+
-+MODULE_AUTHOR("Manuel Estrada Sainz <ranty@debian.org>");
-+MODULE_DESCRIPTION("Multi purpose firmware loading support");
-+MODULE_LICENSE("GPL");
-+
-+#define err(format, arg...) \
-+ printk(KERN_ERR "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+
-+static int loading_timeout = 10; /* In seconds */
-+static struct proc_dir_entry *proc_dir_timeout;
-+static struct proc_dir_entry *proc_dir;
-+
-+#ifdef CONFIG_HOTPLUG
-+
-+static int
-+call_helper(char *verb, const char *name, const char *device)
-+{
-+ char *argv[3], **envp, *buf, *scratch;
-+ int i = 0;
-+
-+ int retval = 0;
-+
-+ if (!hotplug_path[0])
-+ return -ENOENT;
-+ if (in_interrupt()) {
-+ err("in_interrupt");
-+ return -EFAULT;
-+ }
-+ if (!current->fs->root) {
-+ warn("call_policy %s -- no FS yet", verb);
-+ return -EPERM;
-+ }
-+
-+ if (!(envp = (char **) kmalloc(20 * sizeof (char *), GFP_KERNEL))) {
-+ err("unable to allocate envp");
-+ return -ENOMEM;
-+ }
-+ if (!(buf = kmalloc(256, GFP_KERNEL))) {
-+ kfree(envp);
-+ err("unable to allocate buf");
-+ return -ENOMEM;
-+ }
-+
-+ /* only one standardized param to hotplug command: type */
-+ argv[0] = hotplug_path;
-+ argv[1] = "firmware";
-+ argv[2] = 0;
-+
-+ /* minimal command environment */
-+ envp[i++] = "HOME=/";
-+ envp[i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
-+
-+#ifdef DEBUG
-+ /* hint that policy agent should enter no-stdout debug mode */
-+ envp[i++] = "DEBUG=kernel";
-+#endif
-+ scratch = buf;
-+
-+ if (device) {
-+ envp[i++] = scratch;
-+ scratch += snprintf(scratch, FIRMWARE_NAME_MAX+25,
-+ "DEVPATH=/driver/firmware/%s", device) + 1;
-+ }
-+
-+ envp[i++] = scratch;
-+ scratch += sprintf(scratch, "ACTION=%s", verb) + 1;
-+
-+ envp[i++] = scratch;
-+ scratch += snprintf(scratch, FIRMWARE_NAME_MAX,
-+ "FIRMWARE=%s", name) + 1;
-+
-+ envp[i++] = 0;
-+
-+#ifdef DEBUG
-+ dbg("firmware: %s %s %s", argv[0], argv[1], verb);
-+#endif
-+
-+ retval = call_usermodehelper(argv[0], argv, envp);
-+ if (retval) {
-+ printk("call_usermodehelper return %d\n", retval);
-+ }
-+
-+ kfree(buf);
-+ kfree(envp);
-+ return retval;
-+}
-+#else
-+
-+static inline int
-+call_helper(char *verb, const char *name, const char *device)
-+{
-+ return -ENOENT;
-+}
-+
-+#endif /* CONFIG_HOTPLUG */
-+
-+struct firmware_priv {
-+ struct completion completion;
-+ struct proc_dir_entry *proc_dir;
-+ struct proc_dir_entry *attr_data;
-+ struct proc_dir_entry *attr_loading;
-+ struct firmware *fw;
-+ int loading;
-+ int abort;
-+ int alloc_size;
-+ struct timer_list timeout;
-+};
-+
-+static int
-+firmware_timeout_show(char *buf, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ return sprintf(buf, "%d\n", loading_timeout);
-+}
-+
-+/**
-+ * firmware_timeout_store:
-+ * Description:
-+ * Sets the number of seconds to wait for the firmware. Once
-+ * this expires an error will be return to the driver and no
-+ * firmware will be provided.
-+ *
-+ * Note: zero means 'wait for ever'
-+ *
-+ **/
-+static int
-+firmware_timeout_store(struct file *file, const char *buf,
-+ unsigned long count, void *data)
-+{
-+ loading_timeout = simple_strtol(buf, NULL, 10);
-+ return count;
-+}
-+
-+static int
-+firmware_loading_show(char *buf, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ return sprintf(buf, "%d\n", fw_priv->loading);
-+}
-+
-+/**
-+ * firmware_loading_store: - loading control file
-+ * Description:
-+ * The relevant values are:
-+ *
-+ * 1: Start a load, discarding any previous partial load.
-+ * 0: Conclude the load and handle the data to the driver code.
-+ * -1: Conclude the load with an error and discard any written data.
-+ **/
-+static int
-+firmware_loading_store(struct file *file, const char *buf,
-+ unsigned long count, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ int prev_loading = fw_priv->loading;
-+
-+ fw_priv->loading = simple_strtol(buf, NULL, 10);
-+
-+ switch (fw_priv->loading) {
-+ case -1:
-+ fw_priv->abort = 1;
-+ wmb();
-+ complete(&fw_priv->completion);
-+ break;
-+ case 1:
-+ kfree(fw_priv->fw->data);
-+ fw_priv->fw->data = NULL;
-+ fw_priv->fw->size = 0;
-+ fw_priv->alloc_size = 0;
-+ break;
-+ case 0:
-+ if (prev_loading == 1)
-+ complete(&fw_priv->completion);
-+ break;
-+ }
-+
-+ return count;
-+}
-+
-+static int
-+firmware_data_read(char *buffer, char **start, off_t offset,
-+ int count, int *eof, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ struct firmware *fw = fw_priv->fw;
-+
-+ if (offset > fw->size)
-+ return 0;
-+ if (offset + count > fw->size)
-+ count = fw->size - offset;
-+
-+ memcpy(buffer, fw->data + offset, count);
-+ *start = (void *) ((long) count);
-+ return count;
-+}
-+static int
-+fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size)
-+{
-+ u8 *new_data;
-+ int new_size;
-+
-+ if (min_size <= fw_priv->alloc_size)
-+ return 0;
-+ if((min_size % PAGE_SIZE) == 0)
-+ new_size = min_size;
-+ else
-+ new_size = (min_size + PAGE_SIZE) & PAGE_MASK;
-+ new_data = vmalloc(new_size);
-+ if (!new_data) {
-+ printk(KERN_ERR "%s: unable to alloc buffer\n", __FUNCTION__);
-+ /* Make sure that we don't keep incomplete data */
-+ fw_priv->abort = 1;
-+ return -ENOMEM;
-+ }
-+ fw_priv->alloc_size = new_size;
-+ if (fw_priv->fw->data) {
-+ memcpy(new_data, fw_priv->fw->data, fw_priv->fw->size);
-+ vfree(fw_priv->fw->data);
-+ }
-+ fw_priv->fw->data = new_data;
-+ BUG_ON(min_size > fw_priv->alloc_size);
-+ return 0;
-+}
-+
-+/**
-+ * firmware_data_write:
-+ *
-+ * Description:
-+ *
-+ * Data written to the 'data' attribute will be later handled to
-+ * the driver as a firmware image.
-+ **/
-+static int
-+firmware_data_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ struct firmware *fw = fw_priv->fw;
-+ int offset = file->f_pos;
-+ int retval;
-+
-+ retval = fw_realloc_buffer(fw_priv, offset + count);
-+ if (retval) {
-+ printk("%s: retval:%d\n", __FUNCTION__, retval);
-+ return retval;
-+ }
-+
-+ memcpy(fw->data + offset, buffer, count);
-+
-+ fw->size = max_t(size_t, offset + count, fw->size);
-+ file->f_pos += count;
-+ return count;
-+}
-+
-+static void
-+firmware_class_timeout(u_long data)
-+{
-+ struct firmware_priv *fw_priv = (struct firmware_priv *) data;
-+ fw_priv->abort = 1;
-+ wmb();
-+ complete(&fw_priv->completion);
-+}
-+static int
-+fw_setup_class_device(struct firmware_priv **fw_priv_p,
-+ const char *fw_name, const char *device)
-+{
-+ int retval;
-+ struct firmware_priv *fw_priv = kmalloc(sizeof (struct firmware_priv),
-+ GFP_KERNEL);
-+ *fw_priv_p = fw_priv;
-+ if (!fw_priv) {
-+ retval = -ENOMEM;
-+ goto out;
-+ }
-+ memset(fw_priv, 0, sizeof (*fw_priv));
-+
-+ init_completion(&fw_priv->completion);
-+
-+ fw_priv->timeout.function = firmware_class_timeout;
-+ fw_priv->timeout.data = (u_long) fw_priv;
-+ init_timer(&fw_priv->timeout);
-+
-+ retval = -EAGAIN;
-+ fw_priv->proc_dir = create_proc_entry(device, 0644 | S_IFDIR, proc_dir);
-+ if (!fw_priv->proc_dir)
-+ goto err_free_fw_priv;
-+
-+ fw_priv->attr_data = create_proc_entry("data", 0644 | S_IFREG,
-+ fw_priv->proc_dir);
-+ if (!fw_priv->attr_data)
-+ goto err_remove_dir;
-+
-+ fw_priv->attr_data->read_proc = firmware_data_read;
-+ fw_priv->attr_data->write_proc = firmware_data_write;
-+ fw_priv->attr_data->data = fw_priv;
-+
-+ fw_priv->attr_loading = create_proc_entry("loading", 0644 | S_IFREG,
-+ fw_priv->proc_dir);
-+ if (!fw_priv->attr_loading)
-+ goto err_remove_data;
-+
-+ fw_priv->attr_loading->read_proc = firmware_loading_show;
-+ fw_priv->attr_loading->write_proc = firmware_loading_store;
-+ fw_priv->attr_loading->data = fw_priv;
-+
-+ retval = 0;
-+ fw_priv->fw = kmalloc(sizeof (struct firmware), GFP_KERNEL);
-+ if (!fw_priv->fw) {
-+ printk(KERN_ERR "%s: kmalloc(struct firmware) failed\n",
-+ __FUNCTION__);
-+ retval = -ENOMEM;
-+ goto err_remove_loading;
-+ }
-+ memset(fw_priv->fw, 0, sizeof (*fw_priv->fw));
-+
-+ goto out;
-+
-+err_remove_loading:
-+ remove_proc_entry("loading", fw_priv->proc_dir);
-+err_remove_data:
-+ remove_proc_entry("data", fw_priv->proc_dir);
-+err_remove_dir:
-+ remove_proc_entry(device, proc_dir);
-+err_free_fw_priv:
-+ kfree(fw_priv);
-+out:
-+ return retval;
-+}
-+static void
-+fw_remove_class_device(struct firmware_priv *fw_priv)
-+{
-+ remove_proc_entry("loading", fw_priv->proc_dir);
-+ remove_proc_entry("data", fw_priv->proc_dir);
-+ remove_proc_entry(fw_priv->proc_dir->name, proc_dir);
-+}
-+
-+/**
-+ * request_firmware: - request firmware to hotplug and wait for it
-+ * Description:
-+ * @firmware will be used to return a firmware image by the name
-+ * of @name for device @device.
-+ *
-+ * Should be called from user context where sleeping is allowed.
-+ *
-+ * @name will be use as $FIRMWARE in the hotplug environment and
-+ * should be distinctive enough not to be confused with any other
-+ * firmware image for this or any other device.
-+ **/
-+int
-+request_firmware(const struct firmware **firmware, const char *name,
-+ const char *device)
-+{
-+ struct firmware_priv *fw_priv;
-+ int retval;
-+
-+ if (!firmware) {
-+ retval = -EINVAL;
-+ goto out;
-+ }
-+ *firmware = NULL;
-+
-+ retval = fw_setup_class_device(&fw_priv, name, device);
-+ if (retval)
-+ goto out;
-+
-+ retval = call_helper("add", name, device);
-+ if (retval)
-+ goto out;
-+ if (loading_timeout) {
-+ fw_priv->timeout.expires = jiffies + loading_timeout * HZ;
-+ add_timer(&fw_priv->timeout);
-+ }
-+
-+ wait_for_completion(&fw_priv->completion);
-+
-+ del_timer(&fw_priv->timeout);
-+ fw_remove_class_device(fw_priv);
-+
-+ if (fw_priv->fw->size && !fw_priv->abort) {
-+ *firmware = fw_priv->fw;
-+ } else {
-+ retval = -ENOENT;
-+ vfree(fw_priv->fw->data);
-+ kfree(fw_priv->fw);
-+ }
-+out:
-+ kfree(fw_priv);
-+ return retval;
-+}
-+
-+void
-+release_firmware(const struct firmware *fw)
-+{
-+ if (fw) {
-+ vfree(fw->data);
-+ kfree(fw);
-+ }
-+}
-+
-+/**
-+ * register_firmware: - provide a firmware image for later usage
-+ *
-+ * Description:
-+ * Make sure that @data will be available by requesting firmware @name.
-+ *
-+ * Note: This will not be possible until some kind of persistence
-+ * is available.
-+ **/
-+void
-+register_firmware(const char *name, const u8 *data, size_t size)
-+{
-+ /* This is meaningless without firmware caching, so until we
-+ * decide if firmware caching is reasonable just leave it as a
-+ * noop */
-+}
-+
-+/* Async support */
-+struct firmware_work {
-+ struct tq_struct work;
-+ struct module *module;
-+ const char *name;
-+ const char *device;
-+ void *context;
-+ void (*cont)(const struct firmware *fw, void *context);
-+};
-+
-+static void
-+request_firmware_work_func(void *arg)
-+{
-+ struct firmware_work *fw_work = arg;
-+ const struct firmware *fw;
-+ if (!arg)
-+ return;
-+ request_firmware(&fw, fw_work->name, fw_work->device);
-+ fw_work->cont(fw, fw_work->context);
-+ release_firmware(fw);
-+ __MOD_DEC_USE_COUNT(fw_work->module);
-+ kfree(fw_work);
-+}
-+
-+/**
-+ * request_firmware_nowait:
-+ *
-+ * Description:
-+ * Asynchronous variant of request_firmware() for contexts where
-+ * it is not possible to sleep.
-+ *
-+ * @cont will be called asynchronously when the firmware request is over.
-+ *
-+ * @context will be passed over to @cont.
-+ *
-+ * @fw may be %NULL if firmware request fails.
-+ *
-+ **/
-+int
-+request_firmware_nowait(
-+ struct module *module,
-+ const char *name, const char *device, void *context,
-+ void (*cont)(const struct firmware *fw, void *context))
-+{
-+ struct firmware_work *fw_work = kmalloc(sizeof (struct firmware_work),
-+ GFP_ATOMIC);
-+ if (!fw_work)
-+ return -ENOMEM;
-+ if (!try_inc_mod_count(module)) {
-+ kfree(fw_work);
-+ return -EFAULT;
-+ }
-+
-+ *fw_work = (struct firmware_work) {
-+ .module = module,
-+ .name = name,
-+ .device = device,
-+ .context = context,
-+ .cont = cont,
-+ };
-+ INIT_TQUEUE(&fw_work->work, request_firmware_work_func, fw_work);
-+
-+ schedule_task(&fw_work->work);
-+ return 0;
-+}
-+
-+static int __init
-+firmware_class_init(void)
-+{
-+ proc_dir = create_proc_entry("driver/firmware", 0755 | S_IFDIR, NULL);
-+ if (!proc_dir)
-+ return -EAGAIN;
-+ proc_dir_timeout = create_proc_entry("timeout",
-+ 0644 | S_IFREG, proc_dir);
-+ if (!proc_dir_timeout) {
-+ remove_proc_entry("driver/firmware", NULL);
-+ return -EAGAIN;
-+ }
-+ proc_dir_timeout->read_proc = firmware_timeout_show;
-+ proc_dir_timeout->write_proc = firmware_timeout_store;
-+ return 0;
-+}
-+static void __exit
-+firmware_class_exit(void)
-+{
-+ remove_proc_entry("timeout", proc_dir);
-+ remove_proc_entry("driver/firmware", NULL);
-+}
-+
-+module_init(firmware_class_init);
-+module_exit(firmware_class_exit);
-+
-+#ifndef CONFIG_FW_LOADER
-+EXPORT_SYMBOL(release_firmware);
-+EXPORT_SYMBOL(request_firmware);
-+EXPORT_SYMBOL(request_firmware_nowait);
-+EXPORT_SYMBOL(register_firmware);
-+#endif
-diff -urN linux-2.4.18/lib/Makefile linux-2.4.18-mh15/lib/Makefile
---- linux-2.4.18/lib/Makefile 2001-09-18 00:31:15.000000000 +0200
-+++ linux-2.4.18-mh15/lib/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -8,13 +8,17 @@
-
- L_TARGET := lib.a
-
--export-objs := cmdline.o dec_and_lock.o rwsem-spinlock.o rwsem.o
-+export-objs := cmdline.o dec_and_lock.o rwsem-spinlock.o rwsem.o \
-+ firmware_class.o
-
- obj-y := errno.o ctype.o string.o vsprintf.o brlock.o cmdline.o bust_spinlocks.o rbtree.o
-
-+obj-$(CONFIG_FW_LOADER) += firmware_class.o
- obj-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
- obj-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
-
-+include $(TOPDIR)/drivers/bluetooth/Makefile.lib
-+
- ifneq ($(CONFIG_HAVE_DEC_LOCK),y)
- obj-y += dec_and_lock.o
- endif
-diff -urN linux-2.4.18/MAINTAINERS linux-2.4.18-mh15/MAINTAINERS
---- linux-2.4.18/MAINTAINERS 2002-02-25 20:37:52.000000000 +0100
-+++ linux-2.4.18-mh15/MAINTAINERS 2004-08-01 16:26:23.000000000 +0200
-@@ -252,10 +252,88 @@
- L: linux-kernel@vger.kernel.org
- S: Maintained
-
--BLUETOOTH SUBSYSTEM (BlueZ)
-+BLUETOOTH SUBSYSTEM
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
- P: Maxim Krasnyansky
- M: maxk@qualcomm.com
-+L: bluez-devel@lists.sf.net
- W: http://bluez.sf.net
-+W: http://www.bluez.org
-+W: http://www.holtmann.org/linux/bluetooth/
-+S: Maintained
-+
-+BLUETOOTH RFCOMM LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH BNEP LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH CMTP LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HIDP LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI UART DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH HCI USB DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+S: Maintained
-+
-+BLUETOOTH HCI BCM203X DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BFUSB DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI DTL1 DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BLUECARD DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BT3C DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI BTUART DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+S: Maintained
-+
-+BLUETOOTH HCI VHCI DRIVER
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
- S: Maintained
-
- BTTV VIDEO4LINUX DRIVER
-diff -urN linux-2.4.18/net/bluetooth/af_bluetooth.c linux-2.4.18-mh15/net/bluetooth/af_bluetooth.c
---- linux-2.4.18/net/bluetooth/af_bluetooth.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/af_bluetooth.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,14 +25,15 @@
- /*
- * BlueZ Bluetooth address family and sockets.
- *
-- * $Id: af_bluetooth.c,v 1.4 2001/07/05 18:42:44 maxk Exp $
-+ * $Id: af_bluetooth.c,v 1.8 2002/07/22 20:32:54 maxk Exp $
- */
--#define VERSION "1.1"
-+#define VERSION "2.4"
-
- #include <linux/config.h>
- #include <linux/module.h>
-
- #include <linux/types.h>
-+#include <linux/list.h>
- #include <linux/errno.h>
- #include <linux/kernel.h>
- #include <linux/major.h>
-@@ -40,6 +41,7 @@
- #include <linux/slab.h>
- #include <linux/skbuff.h>
- #include <linux/init.h>
-+#include <linux/poll.h>
- #include <linux/proc_fs.h>
- #include <net/sock.h>
-
-@@ -48,70 +50,79 @@
- #endif
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
-+
-+#ifndef AF_BLUETOOTH_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-
- /* Bluetooth sockets */
--static struct net_proto_family *bluez_sock[BLUEZ_MAX_PROTO];
-+#define BLUEZ_MAX_PROTO 7
-+static struct net_proto_family *bluez_proto[BLUEZ_MAX_PROTO];
-
- int bluez_sock_register(int proto, struct net_proto_family *ops)
- {
-- if (proto > BLUEZ_MAX_PROTO)
-+ if (proto >= BLUEZ_MAX_PROTO)
- return -EINVAL;
-
-- if (bluez_sock[proto])
-+ if (bluez_proto[proto])
- return -EEXIST;
-
-- bluez_sock[proto] = ops;
-+ bluez_proto[proto] = ops;
- return 0;
- }
-
- int bluez_sock_unregister(int proto)
- {
-- if (proto > BLUEZ_MAX_PROTO)
-+ if (proto >= BLUEZ_MAX_PROTO)
- return -EINVAL;
-
-- if (!bluez_sock[proto])
-+ if (!bluez_proto[proto])
- return -ENOENT;
-
-- bluez_sock[proto] = NULL;
-+ bluez_proto[proto] = NULL;
- return 0;
- }
-
- static int bluez_sock_create(struct socket *sock, int proto)
- {
-- if (proto > BLUEZ_MAX_PROTO)
-+ if (proto >= BLUEZ_MAX_PROTO)
- return -EINVAL;
-
- #if defined(CONFIG_KMOD)
-- if (!bluez_sock[proto]) {
-+ if (!bluez_proto[proto]) {
- char module_name[30];
- sprintf(module_name, "bt-proto-%d", proto);
- request_module(module_name);
- }
- #endif
-
-- if (!bluez_sock[proto])
-+ if (!bluez_proto[proto])
- return -ENOENT;
-
-- return bluez_sock[proto]->create(sock, proto);
-+ return bluez_proto[proto]->create(sock, proto);
-+}
-+
-+void bluez_sock_init(struct socket *sock, struct sock *sk)
-+{
-+ sock_init_data(sock, sk);
-+ INIT_LIST_HEAD(&bluez_pi(sk)->accept_q);
- }
-
- void bluez_sock_link(struct bluez_sock_list *l, struct sock *sk)
- {
-- write_lock(&l->lock);
--
-+ write_lock_bh(&l->lock);
- sk->next = l->head;
- l->head = sk;
- sock_hold(sk);
--
-- write_unlock(&l->lock);
-+ write_unlock_bh(&l->lock);
- }
-
- void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *sk)
- {
- struct sock **skp;
-
-- write_lock(&l->lock);
-+ write_lock_bh(&l->lock);
- for (skp = &l->head; *skp; skp = &((*skp)->next)) {
- if (*skp == sk) {
- *skp = sk->next;
-@@ -119,7 +130,163 @@
- break;
- }
- }
-- write_unlock(&l->lock);
-+ write_unlock_bh(&l->lock);
-+}
-+
-+void bluez_accept_enqueue(struct sock *parent, struct sock *sk)
-+{
-+ BT_DBG("parent %p, sk %p", parent, sk);
-+
-+ sock_hold(sk);
-+ list_add_tail(&bluez_pi(sk)->accept_q, &bluez_pi(parent)->accept_q);
-+ bluez_pi(sk)->parent = parent;
-+ parent->ack_backlog++;
-+}
-+
-+static void bluez_accept_unlink(struct sock *sk)
-+{
-+ BT_DBG("sk %p state %d", sk, sk->state);
-+
-+ list_del_init(&bluez_pi(sk)->accept_q);
-+ bluez_pi(sk)->parent->ack_backlog--;
-+ bluez_pi(sk)->parent = NULL;
-+ sock_put(sk);
-+}
-+
-+struct sock *bluez_accept_dequeue(struct sock *parent, struct socket *newsock)
-+{
-+ struct list_head *p, *n;
-+ struct bluez_pinfo *pi;
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ list_for_each_safe(p, n, &bluez_pi(parent)->accept_q) {
-+ pi = list_entry(p, struct bluez_pinfo, accept_q);
-+ sk = bluez_sk(pi);
-+
-+ lock_sock(sk);
-+ if (sk->state == BT_CLOSED) {
-+ release_sock(sk);
-+ bluez_accept_unlink(sk);
-+ continue;
-+ }
-+
-+ if (sk->state == BT_CONNECTED || !newsock) {
-+ bluez_accept_unlink(sk);
-+ if (newsock)
-+ sock_graft(sk, newsock);
-+ release_sock(sk);
-+ return sk;
-+ }
-+ release_sock(sk);
-+ }
-+ return NULL;
-+}
-+
-+int bluez_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm)
-+{
-+ int noblock = flags & MSG_DONTWAIT;
-+ struct sock *sk = sock->sk;
-+ struct sk_buff *skb;
-+ int copied, err;
-+
-+ BT_DBG("sock %p sk %p len %d", sock, sk, len);
-+
-+ if (flags & (MSG_OOB))
-+ return -EOPNOTSUPP;
-+
-+ if (!(skb = skb_recv_datagram(sk, flags, noblock, &err))) {
-+ if (sk->shutdown & RCV_SHUTDOWN)
-+ return 0;
-+ return err;
-+ }
-+
-+ msg->msg_namelen = 0;
-+
-+ copied = skb->len;
-+ if (len < copied) {
-+ msg->msg_flags |= MSG_TRUNC;
-+ copied = len;
-+ }
-+
-+ skb->h.raw = skb->data;
-+ err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
-+
-+ skb_free_datagram(sk, skb);
-+
-+ return err ? : copied;
-+}
-+
-+unsigned int bluez_sock_poll(struct file * file, struct socket *sock, poll_table *wait)
-+{
-+ struct sock *sk = sock->sk;
-+ unsigned int mask = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ poll_wait(file, sk->sleep, wait);
-+
-+ if (sk->err || !skb_queue_empty(&sk->error_queue))
-+ mask |= POLLERR;
-+
-+ if (sk->shutdown == SHUTDOWN_MASK)
-+ mask |= POLLHUP;
-+
-+ if (!skb_queue_empty(&sk->receive_queue) ||
-+ !list_empty(&bluez_pi(sk)->accept_q) ||
-+ (sk->shutdown & RCV_SHUTDOWN))
-+ mask |= POLLIN | POLLRDNORM;
-+
-+ if (sk->state == BT_CLOSED)
-+ mask |= POLLHUP;
-+
-+ if (sk->state == BT_CONNECT ||
-+ sk->state == BT_CONNECT2 ||
-+ sk->state == BT_CONFIG)
-+ return mask;
-+
-+ if (sock_writeable(sk))
-+ mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
-+ else
-+ set_bit(SOCK_ASYNC_NOSPACE, &sk->socket->flags);
-+
-+ return mask;
-+}
-+
-+int bluez_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ add_wait_queue(sk->sleep, &wait);
-+ while (sk->state != state) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->err) {
-+ err = sock_error(sk);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+ return err;
- }
-
- struct net_proto_family bluez_sock_family_ops =
-@@ -129,9 +296,9 @@
-
- int bluez_init(void)
- {
-- INF("BlueZ HCI Core ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ BT_INFO("BlueZ Core ver %s Copyright (C) 2000,2001 Qualcomm Inc",
- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-
- proc_mkdir("bluetooth", NULL);
-
-@@ -164,5 +331,6 @@
- module_exit(bluez_cleanup);
-
- MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
--MODULE_DESCRIPTION("BlueZ HCI Core ver " VERSION);
-+MODULE_DESCRIPTION("BlueZ Core ver " VERSION);
-+MODULE_LICENSE("GPL");
- #endif
-diff -urN linux-2.4.18/net/bluetooth/bnep/bnep.h linux-2.4.18-mh15/net/bluetooth/bnep/bnep.h
---- linux-2.4.18/net/bluetooth/bnep/bnep.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/bnep.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,185 @@
-+/*
-+ BNEP protocol definition for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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.
-+
-+ 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+*/
-+
-+/*
-+ * $Id: bnep2.h,v 1.9 2002/07/14 07:09:19 maxk Exp $
-+ */
-+
-+#ifndef _BNEP_H
-+#define _BNEP_H
-+
-+#include <linux/types.h>
-+#include <net/bluetooth/bluetooth.h>
-+
-+#include "crc32.h"
-+
-+// Limits
-+#define BNEP_MAX_PROTO_FILTERS 5
-+#define BNEP_MAX_MULTICAST_FILTERS 20
-+
-+// UUIDs
-+#define BNEP_BASE_UUID 0x0000000000001000800000805F9B34FB
-+#define BNEP_UUID16 0x02
-+#define BNEP_UUID32 0x04
-+#define BNEP_UUID128 0x16
-+
-+#define BNEP_SVC_PANU 0x1115
-+#define BNEP_SVC_NAP 0x1116
-+#define BNEP_SVC_GN 0x1117
-+
-+// Packet types
-+#define BNEP_GENERAL 0x00
-+#define BNEP_CONTROL 0x01
-+#define BNEP_COMPRESSED 0x02
-+#define BNEP_COMPRESSED_SRC_ONLY 0x03
-+#define BNEP_COMPRESSED_DST_ONLY 0x04
-+
-+// Control types
-+#define BNEP_CMD_NOT_UNDERSTOOD 0x00
-+#define BNEP_SETUP_CONN_REQ 0x01
-+#define BNEP_SETUP_CONN_RSP 0x02
-+#define BNEP_FILTER_NET_TYPE_SET 0x03
-+#define BNEP_FILTER_NET_TYPE_RSP 0x04
-+#define BNEP_FILTER_MULTI_ADDR_SET 0x05
-+#define BNEP_FILTER_MULTI_ADDR_RSP 0x06
-+
-+// Extension types
-+#define BNEP_EXT_CONTROL 0x00
-+
-+// Response messages
-+#define BNEP_SUCCESS 0x00
-+
-+#define BNEP_CONN_INVALID_DST 0x01
-+#define BNEP_CONN_INVALID_SRC 0x02
-+#define BNEP_CONN_INVALID_SVC 0x03
-+#define BNEP_CONN_NOT_ALLOWED 0x04
-+
-+#define BNEP_FILTER_UNSUPPORTED_REQ 0x01
-+#define BNEP_FILTER_INVALID_RANGE 0x02
-+#define BNEP_FILTER_INVALID_MCADDR 0x02
-+#define BNEP_FILTER_LIMIT_REACHED 0x03
-+#define BNEP_FILTER_DENIED_SECURITY 0x04
-+
-+// L2CAP settings
-+#define BNEP_MTU 1691
-+#define BNEP_PSM 0x0f
-+#define BNEP_FLUSH_TO 0xffff
-+#define BNEP_CONNECT_TO 15
-+#define BNEP_FILTER_TO 15
-+
-+// Headers
-+#define BNEP_TYPE_MASK 0x7f
-+#define BNEP_EXT_HEADER 0x80
-+
-+struct bnep_setup_conn_req {
-+ __u8 type;
-+ __u8 ctrl;
-+ __u8 uuid_size;
-+ __u8 service[0];
-+} __attribute__((packed));
-+
-+struct bnep_set_filter_req {
-+ __u8 type;
-+ __u8 ctrl;
-+ __u16 len;
-+ __u8 list[0];
-+} __attribute__((packed));
-+
-+struct bnep_control_rsp {
-+ __u8 type;
-+ __u8 ctrl;
-+ __u16 resp;
-+} __attribute__((packed));
-+
-+struct bnep_ext_hdr {
-+ __u8 type;
-+ __u8 len;
-+ __u8 data[0];
-+} __attribute__((packed));
-+
-+/* BNEP ioctl defines */
-+#define BNEPCONNADD _IOW('B', 200, int)
-+#define BNEPCONNDEL _IOW('B', 201, int)
-+#define BNEPGETCONNLIST _IOR('B', 210, int)
-+#define BNEPGETCONNINFO _IOR('B', 211, int)
-+
-+struct bnep_connadd_req {
-+ int sock; // Connected socket
-+ __u32 flags;
-+ __u16 role;
-+ char device[16]; // Name of the Ethernet device
-+};
-+
-+struct bnep_conndel_req {
-+ __u32 flags;
-+ __u8 dst[ETH_ALEN];
-+};
-+
-+struct bnep_conninfo {
-+ __u32 flags;
-+ __u16 role;
-+ __u16 state;
-+ __u8 dst[ETH_ALEN];
-+ char device[16];
-+};
-+
-+struct bnep_connlist_req {
-+ __u32 cnum;
-+ struct bnep_conninfo *ci;
-+};
-+
-+struct bnep_proto_filter {
-+ __u16 start;
-+ __u16 end;
-+};
-+
-+int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock);
-+int bnep_del_connection(struct bnep_conndel_req *req);
-+int bnep_get_connlist(struct bnep_connlist_req *req);
-+int bnep_get_conninfo(struct bnep_conninfo *ci);
-+
-+// BNEP sessions
-+struct bnep_session {
-+ struct list_head list;
-+
-+ unsigned int role;
-+ unsigned long state;
-+ unsigned long flags;
-+ atomic_t killed;
-+
-+ struct ethhdr eh;
-+ struct msghdr msg;
-+
-+ struct bnep_proto_filter proto_filter[BNEP_MAX_PROTO_FILTERS];
-+ u64 mc_filter;
-+
-+ struct socket *sock;
-+ struct net_device dev;
-+ struct net_device_stats stats;
-+};
-+
-+int bnep_net_init(struct net_device *dev);
-+int bnep_sock_init(void);
-+int bnep_sock_cleanup(void);
-+
-+static inline int bnep_mc_hash(__u8 *addr)
-+{
-+ return (bnep_crc32(~0, addr, ETH_ALEN) >> 26);
-+}
-+
-+#endif
-diff -urN linux-2.4.18/net/bluetooth/bnep/Config.in linux-2.4.18-mh15/net/bluetooth/bnep/Config.in
---- linux-2.4.18/net/bluetooth/bnep/Config.in 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,11 @@
-+#
-+# Bluetooth BNEP layer configuration
-+#
-+
-+dep_tristate 'BNEP protocol support' CONFIG_BLUEZ_BNEP $CONFIG_BLUEZ_L2CAP
-+
-+if [ "$CONFIG_BLUEZ_BNEP" != "n" ]; then
-+ bool ' Multicast filter support' CONFIG_BLUEZ_BNEP_MC_FILTER
-+ bool ' Protocol filter support' CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+fi
-+
-diff -urN linux-2.4.18/net/bluetooth/bnep/core.c linux-2.4.18-mh15/net/bluetooth/bnep/core.c
---- linux-2.4.18/net/bluetooth/bnep/core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,718 @@
-+/*
-+ BNEP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2001-2002 Inventel Systemes
-+ Written 2001-2002 by
-+ Clément Moreau <clement.moreau@inventel.fr>
-+ David Libault <david.libault@inventel.fr>
-+
-+ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: core.c,v 1.18 2002/07/14 07:09:19 maxk Exp $
-+ */
-+
-+#define __KERNEL_SYSCALLS__
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/signal.h>
-+#include <linux/init.h>
-+#include <linux/wait.h>
-+#include <linux/errno.h>
-+#include <linux/smp_lock.h>
-+#include <linux/net.h>
-+#include <net/sock.h>
-+
-+#include <linux/socket.h>
-+#include <linux/file.h>
-+
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/skbuff.h>
-+
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "bnep.h"
-+
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.2"
-+
-+static LIST_HEAD(bnep_session_list);
-+static DECLARE_RWSEM(bnep_session_sem);
-+
-+static struct bnep_session *__bnep_get_session(u8 *dst)
-+{
-+ struct bnep_session *s;
-+ struct list_head *p;
-+
-+ BT_DBG("");
-+
-+ list_for_each(p, &bnep_session_list) {
-+ s = list_entry(p, struct bnep_session, list);
-+ if (!memcmp(dst, s->eh.h_source, ETH_ALEN))
-+ return s;
-+ }
-+ return NULL;
-+}
-+
-+static void __bnep_link_session(struct bnep_session *s)
-+{
-+ MOD_INC_USE_COUNT;
-+ list_add(&s->list, &bnep_session_list);
-+}
-+
-+static void __bnep_unlink_session(struct bnep_session *s)
-+{
-+ list_del(&s->list);
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static int bnep_send(struct bnep_session *s, void *data, size_t len)
-+{
-+ struct socket *sock = s->sock;
-+ struct iovec iv = { data, len };
-+ s->msg.msg_iov = &iv;
-+ s->msg.msg_iovlen = 1;
-+ return sock->ops->sendmsg(sock, &s->msg, len, NULL);
-+}
-+
-+static int bnep_send_rsp(struct bnep_session *s, u8 ctrl, u16 resp)
-+{
-+ struct bnep_control_rsp rsp;
-+ rsp.type = BNEP_CONTROL;
-+ rsp.ctrl = ctrl;
-+ rsp.resp = htons(resp);
-+ return bnep_send(s, &rsp, sizeof(rsp));
-+}
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+static inline void bnep_set_default_proto_filter(struct bnep_session *s)
-+{
-+ /* (IPv4, ARP) */
-+ s->proto_filter[0].start = htons(0x0800);
-+ s->proto_filter[0].end = htons(0x0806);
-+ /* (RARP, AppleTalk) */
-+ s->proto_filter[1].start = htons(0x8035);
-+ s->proto_filter[1].end = htons(0x80F3);
-+ /* (IPX, IPv6) */
-+ s->proto_filter[2].start = htons(0x8137);
-+ s->proto_filter[2].end = htons(0x86DD);
-+}
-+#endif
-+
-+static int bnep_ctrl_set_netfilter(struct bnep_session *s, u16 *data, int len)
-+{
-+ int n;
-+
-+ if (len < 2)
-+ return -EILSEQ;
-+
-+ n = ntohs(get_unaligned(data));
-+ data++; len -= 2;
-+
-+ if (len < n)
-+ return -EILSEQ;
-+
-+ BT_DBG("filter len %d", n);
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ n /= 4;
-+ if (n <= BNEP_MAX_PROTO_FILTERS) {
-+ struct bnep_proto_filter *f = s->proto_filter;
-+ int i;
-+
-+ for (i = 0; i < n; i++) {
-+ f[i].start = get_unaligned(data++);
-+ f[i].end = get_unaligned(data++);
-+
-+ BT_DBG("proto filter start %d end %d",
-+ f[i].start, f[i].end);
-+ }
-+
-+ if (i < BNEP_MAX_PROTO_FILTERS)
-+ memset(f + i, 0, sizeof(*f));
-+
-+ if (n == 0)
-+ bnep_set_default_proto_filter(s);
-+
-+ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_SUCCESS);
-+ } else {
-+ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_FILTER_LIMIT_REACHED);
-+ }
-+#else
-+ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_FILTER_UNSUPPORTED_REQ);
-+#endif
-+ return 0;
-+}
-+
-+static int bnep_ctrl_set_mcfilter(struct bnep_session *s, u8 *data, int len)
-+{
-+ int n;
-+
-+ if (len < 2)
-+ return -EILSEQ;
-+
-+ n = ntohs(get_unaligned((u16 *) data));
-+ data += 2; len -= 2;
-+
-+ if (len < n)
-+ return -EILSEQ;
-+
-+ BT_DBG("filter len %d", n);
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ n /= (ETH_ALEN * 2);
-+
-+ if (n > 0) {
-+ s->mc_filter = 0;
-+
-+ /* Always send broadcast */
-+ set_bit(bnep_mc_hash(s->dev.broadcast), &s->mc_filter);
-+
-+ /* Add address ranges to the multicast hash */
-+ for (; n > 0; n--) {
-+ u8 a1[6], *a2;
-+
-+ memcpy(a1, data, ETH_ALEN); data += ETH_ALEN;
-+ a2 = data; data += ETH_ALEN;
-+
-+ BT_DBG("mc filter %s -> %s",
-+ batostr((void *) a1), batostr((void *) a2));
-+
-+ #define INCA(a) { int i = 5; while (i >=0 && ++a[i--] == 0); }
-+
-+ /* Iterate from a1 to a2 */
-+ set_bit(bnep_mc_hash(a1), &s->mc_filter);
-+ while (memcmp(a1, a2, 6) < 0 && s->mc_filter != ~0LL) {
-+ INCA(a1);
-+ set_bit(bnep_mc_hash(a1), &s->mc_filter);
-+ }
-+ }
-+ }
-+
-+ BT_DBG("mc filter hash 0x%llx", s->mc_filter);
-+
-+ bnep_send_rsp(s, BNEP_FILTER_MULTI_ADDR_RSP, BNEP_SUCCESS);
-+#else
-+ bnep_send_rsp(s, BNEP_FILTER_MULTI_ADDR_RSP, BNEP_FILTER_UNSUPPORTED_REQ);
-+#endif
-+ return 0;
-+}
-+
-+static int bnep_rx_control(struct bnep_session *s, void *data, int len)
-+{
-+ u8 cmd = *(u8 *)data;
-+ int err = 0;
-+
-+ data++; len--;
-+
-+ switch (cmd) {
-+ case BNEP_CMD_NOT_UNDERSTOOD:
-+ case BNEP_SETUP_CONN_REQ:
-+ case BNEP_SETUP_CONN_RSP:
-+ case BNEP_FILTER_NET_TYPE_RSP:
-+ case BNEP_FILTER_MULTI_ADDR_RSP:
-+ /* Ignore these for now */
-+ break;
-+
-+ case BNEP_FILTER_NET_TYPE_SET:
-+ err = bnep_ctrl_set_netfilter(s, data, len);
-+ break;
-+
-+ case BNEP_FILTER_MULTI_ADDR_SET:
-+ err = bnep_ctrl_set_mcfilter(s, data, len);
-+ break;
-+
-+ default: {
-+ u8 pkt[3];
-+ pkt[0] = BNEP_CONTROL;
-+ pkt[1] = BNEP_CMD_NOT_UNDERSTOOD;
-+ pkt[2] = cmd;
-+ bnep_send(s, pkt, sizeof(pkt));
-+ }
-+ break;
-+ }
-+
-+ return err;
-+}
-+
-+static int bnep_rx_extension(struct bnep_session *s, struct sk_buff *skb)
-+{
-+ struct bnep_ext_hdr *h;
-+ int err = 0;
-+
-+ do {
-+ h = (void *) skb->data;
-+ if (!skb_pull(skb, sizeof(*h))) {
-+ err = -EILSEQ;
-+ break;
-+ }
-+
-+ BT_DBG("type 0x%x len %d", h->type, h->len);
-+
-+ switch (h->type & BNEP_TYPE_MASK) {
-+ case BNEP_EXT_CONTROL:
-+ bnep_rx_control(s, skb->data, skb->len);
-+ break;
-+
-+ default:
-+ /* Unknown extension, skip it. */
-+ break;
-+ }
-+
-+ if (!skb_pull(skb, h->len)) {
-+ err = -EILSEQ;
-+ break;
-+ }
-+ } while (!err && (h->type & BNEP_EXT_HEADER));
-+
-+ return err;
-+}
-+
-+static u8 __bnep_rx_hlen[] = {
-+ ETH_HLEN, /* BNEP_GENERAL */
-+ 0, /* BNEP_CONTROL */
-+ 2, /* BNEP_COMPRESSED */
-+ ETH_ALEN + 2, /* BNEP_COMPRESSED_SRC_ONLY */
-+ ETH_ALEN + 2 /* BNEP_COMPRESSED_DST_ONLY */
-+};
-+#define BNEP_RX_TYPES (sizeof(__bnep_rx_hlen) - 1)
-+
-+static inline int bnep_rx_frame(struct bnep_session *s, struct sk_buff *skb)
-+{
-+ struct net_device *dev = &s->dev;
-+ struct sk_buff *nskb;
-+ u8 type;
-+
-+ dev->last_rx = jiffies;
-+ s->stats.rx_bytes += skb->len;
-+
-+ type = *(u8 *) skb->data; skb_pull(skb, 1);
-+
-+ if ((type & BNEP_TYPE_MASK) > BNEP_RX_TYPES)
-+ goto badframe;
-+
-+ if ((type & BNEP_TYPE_MASK) == BNEP_CONTROL) {
-+ bnep_rx_control(s, skb->data, skb->len);
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+
-+ skb->mac.raw = skb->data;
-+
-+ /* Verify and pull out header */
-+ if (!skb_pull(skb, __bnep_rx_hlen[type & BNEP_TYPE_MASK]))
-+ goto badframe;
-+
-+ s->eh.h_proto = get_unaligned((u16 *) (skb->data - 2));
-+
-+ if (type & BNEP_EXT_HEADER) {
-+ if (bnep_rx_extension(s, skb) < 0)
-+ goto badframe;
-+ }
-+
-+ /* Strip 802.1p header */
-+ if (ntohs(s->eh.h_proto) == 0x8100) {
-+ if (!skb_pull(skb, 4))
-+ goto badframe;
-+ s->eh.h_proto = get_unaligned((u16 *) (skb->data - 2));
-+ }
-+
-+ /* We have to alloc new skb and copy data here :(. Because original skb
-+ * may not be modified and because of the alignment requirements. */
-+ nskb = alloc_skb(2 + ETH_HLEN + skb->len, GFP_KERNEL);
-+ if (!nskb) {
-+ s->stats.rx_dropped++;
-+ kfree_skb(skb);
-+ return -ENOMEM;
-+ }
-+ skb_reserve(nskb, 2);
-+
-+ /* Decompress header and construct ether frame */
-+ switch (type & BNEP_TYPE_MASK) {
-+ case BNEP_COMPRESSED:
-+ memcpy(__skb_put(nskb, ETH_HLEN), &s->eh, ETH_HLEN);
-+ break;
-+
-+ case BNEP_COMPRESSED_SRC_ONLY:
-+ memcpy(__skb_put(nskb, ETH_ALEN), s->eh.h_dest, ETH_ALEN);
-+ memcpy(__skb_put(nskb, ETH_ALEN), skb->mac.raw, ETH_ALEN);
-+ put_unaligned(s->eh.h_proto, (u16 *) __skb_put(nskb, 2));
-+ break;
-+
-+ case BNEP_COMPRESSED_DST_ONLY:
-+ memcpy(__skb_put(nskb, ETH_ALEN), skb->mac.raw, ETH_ALEN);
-+ memcpy(__skb_put(nskb, ETH_ALEN + 2), s->eh.h_source, ETH_ALEN + 2);
-+ break;
-+
-+ case BNEP_GENERAL:
-+ memcpy(__skb_put(nskb, ETH_ALEN * 2), skb->mac.raw, ETH_ALEN * 2);
-+ put_unaligned(s->eh.h_proto, (u16 *) __skb_put(nskb, 2));
-+ break;
-+ }
-+
-+ memcpy(__skb_put(nskb, skb->len), skb->data, skb->len);
-+ kfree_skb(skb);
-+
-+ s->stats.rx_packets++;
-+ nskb->dev = dev;
-+ nskb->ip_summed = CHECKSUM_UNNECESSARY;
-+ nskb->protocol = eth_type_trans(nskb, dev);
-+ netif_rx_ni(nskb);
-+ return 0;
-+
-+badframe:
-+ s->stats.rx_errors++;
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static u8 __bnep_tx_types[] = {
-+ BNEP_GENERAL,
-+ BNEP_COMPRESSED_SRC_ONLY,
-+ BNEP_COMPRESSED_DST_ONLY,
-+ BNEP_COMPRESSED
-+};
-+
-+static inline int bnep_tx_frame(struct bnep_session *s, struct sk_buff *skb)
-+{
-+ struct ethhdr *eh = (void *) skb->data;
-+ struct socket *sock = s->sock;
-+ struct iovec iv[3];
-+ int len = 0, il = 0;
-+ u8 type = 0;
-+
-+ BT_DBG("skb %p dev %p type %d", skb, skb->dev, skb->pkt_type);
-+
-+ if (!skb->dev) {
-+ /* Control frame sent by us */
-+ goto send;
-+ }
-+
-+ iv[il++] = (struct iovec) { &type, 1 };
-+ len++;
-+
-+ if (!memcmp(eh->h_dest, s->eh.h_source, ETH_ALEN))
-+ type |= 0x01;
-+
-+ if (!memcmp(eh->h_source, s->eh.h_dest, ETH_ALEN))
-+ type |= 0x02;
-+
-+ if (type)
-+ skb_pull(skb, ETH_ALEN * 2);
-+
-+ type = __bnep_tx_types[type];
-+ switch (type) {
-+ case BNEP_COMPRESSED_SRC_ONLY:
-+ iv[il++] = (struct iovec) { eh->h_source, ETH_ALEN };
-+ len += ETH_ALEN;
-+ break;
-+
-+ case BNEP_COMPRESSED_DST_ONLY:
-+ iv[il++] = (struct iovec) { eh->h_dest, ETH_ALEN };
-+ len += ETH_ALEN;
-+ break;
-+ }
-+
-+send:
-+ iv[il++] = (struct iovec) { skb->data, skb->len };
-+ len += skb->len;
-+
-+ /* FIXME: linearize skb */
-+
-+ s->msg.msg_iov = iv;
-+ s->msg.msg_iovlen = il;
-+ len = sock->ops->sendmsg(sock, &s->msg, len, NULL);
-+ kfree_skb(skb);
-+
-+ if (len > 0) {
-+ s->stats.tx_bytes += len;
-+ s->stats.tx_packets++;
-+ return 0;
-+ }
-+
-+ return len;
-+}
-+
-+static int bnep_session(void *arg)
-+{
-+ struct bnep_session *s = arg;
-+ struct net_device *dev = &s->dev;
-+ struct sock *sk = s->sock->sk;
-+ struct sk_buff *skb;
-+ wait_queue_t wait;
-+
-+ BT_DBG("");
-+
-+ daemonize(); reparent_to_init();
-+
-+ sprintf(current->comm, "kbnepd %s", dev->name);
-+
-+ sigfillset(&current->blocked);
-+ flush_signals(current);
-+
-+ current->nice = -15;
-+
-+ set_fs(KERNEL_DS);
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(sk->sleep, &wait);
-+ while (!atomic_read(&s->killed)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ // RX
-+ while ((skb = skb_dequeue(&sk->receive_queue))) {
-+ skb_orphan(skb);
-+ bnep_rx_frame(s, skb);
-+ }
-+
-+ if (sk->state != BT_CONNECTED)
-+ break;
-+
-+ // TX
-+ while ((skb = skb_dequeue(&sk->write_queue)))
-+ if (bnep_tx_frame(s, skb))
-+ break;
-+ netif_wake_queue(dev);
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ /* Cleanup session */
-+ down_write(&bnep_session_sem);
-+
-+ /* Delete network device */
-+ unregister_netdev(dev);
-+
-+ /* Release the socket */
-+ fput(s->sock->file);
-+
-+ __bnep_unlink_session(s);
-+
-+ up_write(&bnep_session_sem);
-+ kfree(s);
-+ return 0;
-+}
-+
-+int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock)
-+{
-+ struct net_device *dev;
-+ struct bnep_session *s, *ss;
-+ u8 dst[ETH_ALEN], src[ETH_ALEN];
-+ int err;
-+
-+ BT_DBG("");
-+
-+ baswap((void *) dst, &bluez_pi(sock->sk)->dst);
-+ baswap((void *) src, &bluez_pi(sock->sk)->src);
-+
-+ s = kmalloc(sizeof(struct bnep_session), GFP_KERNEL);
-+ if (!s)
-+ return -ENOMEM;
-+ memset(s, 0, sizeof(struct bnep_session));
-+
-+ down_write(&bnep_session_sem);
-+
-+ ss = __bnep_get_session(dst);
-+ if (ss && ss->state == BT_CONNECTED) {
-+ err = -EEXIST;
-+ goto failed;
-+ }
-+
-+ dev = &s->dev;
-+
-+ if (*req->device)
-+ strcpy(dev->name, req->device);
-+ else
-+ strcpy(dev->name, "bnep%d");
-+
-+ memset(dev->broadcast, 0xff, ETH_ALEN);
-+
-+ /* This is rx header therefor addresses are swaped.
-+ * ie eh.h_dest is our local address. */
-+ memcpy(s->eh.h_dest, &src, ETH_ALEN);
-+ memcpy(s->eh.h_source, &dst, ETH_ALEN);
-+
-+ s->sock = sock;
-+ s->role = req->role;
-+ s->state = BT_CONNECTED;
-+
-+ s->msg.msg_flags = MSG_NOSIGNAL;
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ /* Set default mc filter */
-+ set_bit(bnep_mc_hash(dev->broadcast), &s->mc_filter);
-+#endif
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ /* Set default protocol filter */
-+ bnep_set_default_proto_filter(s);
-+#endif
-+
-+ dev->init = bnep_net_init;
-+ dev->priv = s;
-+ err = register_netdev(dev);
-+ if (err) {
-+ goto failed;
-+ }
-+
-+ __bnep_link_session(s);
-+
-+ err = kernel_thread(bnep_session, s, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+ if (err < 0) {
-+ /* Session thread start failed, gotta cleanup. */
-+ unregister_netdev(dev);
-+ __bnep_unlink_session(s);
-+ goto failed;
-+ }
-+
-+ up_write(&bnep_session_sem);
-+ strcpy(req->device, dev->name);
-+ return 0;
-+
-+failed:
-+ up_write(&bnep_session_sem);
-+ kfree(s);
-+ return err;
-+}
-+
-+int bnep_del_connection(struct bnep_conndel_req *req)
-+{
-+ struct bnep_session *s;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&bnep_session_sem);
-+
-+ s = __bnep_get_session(req->dst);
-+ if (s) {
-+ /* Wakeup user-space which is polling for socket errors.
-+ * This is temporary hack untill we have shutdown in L2CAP */
-+ s->sock->sk->err = EUNATCH;
-+
-+ /* Kill session thread */
-+ atomic_inc(&s->killed);
-+ wake_up_interruptible(s->sock->sk->sleep);
-+ } else
-+ err = -ENOENT;
-+
-+ up_read(&bnep_session_sem);
-+ return err;
-+}
-+
-+static void __bnep_copy_ci(struct bnep_conninfo *ci, struct bnep_session *s)
-+{
-+ memcpy(ci->dst, s->eh.h_source, ETH_ALEN);
-+ strcpy(ci->device, s->dev.name);
-+ ci->flags = s->flags;
-+ ci->state = s->state;
-+ ci->role = s->role;
-+}
-+
-+int bnep_get_connlist(struct bnep_connlist_req *req)
-+{
-+ struct list_head *p;
-+ int err = 0, n = 0;
-+
-+ down_read(&bnep_session_sem);
-+
-+ list_for_each(p, &bnep_session_list) {
-+ struct bnep_session *s;
-+ struct bnep_conninfo ci;
-+
-+ s = list_entry(p, struct bnep_session, list);
-+
-+ __bnep_copy_ci(&ci, s);
-+
-+ if (copy_to_user(req->ci, &ci, sizeof(ci))) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (++n >= req->cnum)
-+ break;
-+
-+ req->ci++;
-+ }
-+ req->cnum = n;
-+
-+ up_read(&bnep_session_sem);
-+ return err;
-+}
-+
-+int bnep_get_conninfo(struct bnep_conninfo *ci)
-+{
-+ struct bnep_session *s;
-+ int err = 0;
-+
-+ down_read(&bnep_session_sem);
-+
-+ s = __bnep_get_session(ci->dst);
-+ if (s)
-+ __bnep_copy_ci(ci, s);
-+ else
-+ err = -ENOENT;
-+
-+ up_read(&bnep_session_sem);
-+ return err;
-+}
-+
-+static int __init bnep_init_module(void)
-+{
-+ l2cap_load();
-+
-+ bnep_crc32_init();
-+ bnep_sock_init();
-+
-+ BT_INFO("BlueZ BNEP ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2001,2002 Inventel Systemes");
-+ BT_INFO("Written 2001,2002 by Clement Moreau <clement.moreau@inventel.fr>");
-+ BT_INFO("Written 2001,2002 by David Libault <david.libault@inventel.fr>");
-+ BT_INFO("Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>");
-+
-+ return 0;
-+}
-+
-+static void __exit bnep_cleanup_module(void)
-+{
-+ bnep_sock_cleanup();
-+ bnep_crc32_cleanup();
-+}
-+
-+module_init(bnep_init_module);
-+module_exit(bnep_cleanup_module);
-+
-+MODULE_DESCRIPTION("BlueZ BNEP ver " VERSION);
-+MODULE_AUTHOR("David Libault <david.libault@inventel.fr>, Maxim Krasnyanskiy <maxk@qualcomm.com>");
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/bnep/crc32.c linux-2.4.18-mh15/net/bluetooth/bnep/crc32.c
---- linux-2.4.18/net/bluetooth/bnep/crc32.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/crc32.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,59 @@
-+/*
-+ * Based on linux-2.5/lib/crc32 by Matt Domsch <Matt_Domsch@dell.com>
-+ *
-+ * FIXME: Remove in 2.5
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/slab.h>
-+#include <linux/init.h>
-+#include <asm/atomic.h>
-+
-+#include "crc32.h"
-+
-+#define CRCPOLY_BE 0x04c11db7
-+#define CRC_BE_BITS 8
-+
-+static u32 *bnep_crc32_table;
-+
-+/*
-+ * This code is in the public domain; copyright abandoned.
-+ * Liability for non-performance of this code is limited to the amount
-+ * you paid for it. Since it is distributed for free, your refund will
-+ * be very very small. If it breaks, you get to keep both pieces.
-+ */
-+u32 bnep_crc32(u32 crc, unsigned char const *p, size_t len)
-+{
-+ while (len--)
-+ crc = (crc << 8) ^ bnep_crc32_table[(crc >> 24) ^ *p++];
-+
-+ return crc;
-+}
-+
-+int __init bnep_crc32_init(void)
-+{
-+ unsigned i, j;
-+ u32 crc = 0x80000000;
-+
-+ bnep_crc32_table = kmalloc((1 << CRC_BE_BITS) * sizeof(u32), GFP_KERNEL);
-+ if (!bnep_crc32_table)
-+ return -ENOMEM;
-+
-+ bnep_crc32_table[0] = 0;
-+
-+ for (i = 1; i < 1 << CRC_BE_BITS; i <<= 1) {
-+ crc = (crc << 1) ^ ((crc & 0x80000000) ? CRCPOLY_BE : 0);
-+ for (j = 0; j < i; j++)
-+ bnep_crc32_table[i + j] = crc ^ bnep_crc32_table[j];
-+ }
-+ return 0;
-+}
-+
-+void __exit bnep_crc32_cleanup(void)
-+{
-+ if (bnep_crc32_table)
-+ kfree(bnep_crc32_table);
-+ bnep_crc32_table = NULL;
-+}
-diff -urN linux-2.4.18/net/bluetooth/bnep/crc32.h linux-2.4.18-mh15/net/bluetooth/bnep/crc32.h
---- linux-2.4.18/net/bluetooth/bnep/crc32.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/crc32.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,10 @@
-+/*
-+ * crc32.h
-+ * See crc32.c for license and changes
-+ *
-+ * FIXME: Remove in 2.5
-+ */
-+
-+int bnep_crc32_init(void);
-+void bnep_crc32_cleanup(void);
-+u32 bnep_crc32(u32 crc, unsigned char const *p, size_t len);
-diff -urN linux-2.4.18/net/bluetooth/bnep/Makefile linux-2.4.18-mh15/net/bluetooth/bnep/Makefile
---- linux-2.4.18/net/bluetooth/bnep/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,10 @@
-+#
-+# Makefile for the Linux Bluetooth BNEP layer
-+#
-+
-+O_TARGET := bnep.o
-+
-+obj-y := core.o sock.o netdev.o crc32.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.18/net/bluetooth/bnep/netdev.c linux-2.4.18-mh15/net/bluetooth/bnep/netdev.c
---- linux-2.4.18/net/bluetooth/bnep/netdev.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/netdev.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,254 @@
-+/*
-+ BNEP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2001-2002 Inventel Systemes
-+ Written 2001-2002 by
-+ Clément Moreau <clement.moreau@inventel.fr>
-+ David Libault <david.libault@inventel.fr>
-+
-+ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: netdev.c,v 1.7 2002/07/14 05:39:26 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/socket.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/skbuff.h>
-+#include <linux/wait.h>
-+
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "bnep.h"
-+
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+#define BNEP_TX_QUEUE_LEN 20
-+
-+static int bnep_net_open(struct net_device *dev)
-+{
-+ netif_start_queue(dev);
-+ return 0;
-+}
-+
-+static int bnep_net_close(struct net_device *dev)
-+{
-+ netif_stop_queue(dev);
-+ return 0;
-+}
-+
-+static struct net_device_stats *bnep_net_get_stats(struct net_device *dev)
-+{
-+ struct bnep_session *s = dev->priv;
-+ return &s->stats;
-+}
-+
-+static void bnep_net_set_mc_list(struct net_device *dev)
-+{
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ struct bnep_session *s = dev->priv;
-+ struct sock *sk = s->sock->sk;
-+ struct bnep_set_filter_req *r;
-+ struct sk_buff *skb;
-+ int size;
-+
-+ BT_DBG("%s mc_count %d", dev->name, dev->mc_count);
-+
-+ size = sizeof(*r) + (BNEP_MAX_MULTICAST_FILTERS + 1) * ETH_ALEN * 2;
-+ skb = alloc_skb(size, GFP_ATOMIC);
-+ if (!skb) {
-+ BT_ERR("%s Multicast list allocation failed", dev->name);
-+ return;
-+ }
-+
-+ r = (void *) skb->data;
-+ __skb_put(skb, sizeof(*r));
-+
-+ r->type = BNEP_CONTROL;
-+ r->ctrl = BNEP_FILTER_MULTI_ADDR_SET;
-+
-+ if (dev->flags & (IFF_PROMISC | IFF_ALLMULTI)) {
-+ u8 start[ETH_ALEN] = { 0x01 };
-+
-+ /* Request all addresses */
-+ memcpy(__skb_put(skb, ETH_ALEN), start, ETH_ALEN);
-+ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
-+ r->len = htons(ETH_ALEN * 2);
-+ } else {
-+ struct dev_mc_list *dmi = dev->mc_list;
-+ int i, len = skb->len;
-+
-+ if (dev->flags & IFF_BROADCAST) {
-+ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
-+ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
-+ }
-+
-+ /* FIXME: We should group addresses here. */
-+
-+ for (i = 0; i < dev->mc_count && i < BNEP_MAX_MULTICAST_FILTERS; i++) {
-+ memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN);
-+ memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN);
-+ dmi = dmi->next;
-+ }
-+ r->len = htons(skb->len - len);
-+ }
-+
-+ skb_queue_tail(&sk->write_queue, skb);
-+ wake_up_interruptible(sk->sleep);
-+#endif
-+}
-+
-+static int bnep_net_set_mac_addr(struct net_device *dev, void *arg)
-+{
-+ BT_DBG("%s", dev->name);
-+ return 0;
-+}
-+
-+static void bnep_net_timeout(struct net_device *dev)
-+{
-+ BT_DBG("net_timeout");
-+ netif_wake_queue(dev);
-+}
-+
-+static int bnep_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-+{
-+ return -EINVAL;
-+}
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+static inline int bnep_net_mc_filter(struct sk_buff *skb, struct bnep_session *s)
-+{
-+ struct ethhdr *eh = (void *) skb->data;
-+
-+ if ((eh->h_dest[0] & 1) && !test_bit(bnep_mc_hash(eh->h_dest), &s->mc_filter)) {
-+ BT_DBG("BNEP: filtered skb %p, dst %.2x:%.2x:%.2x:%.2x:%.2x:%.2x", skb,
-+ eh->h_dest[0], eh->h_dest[1], eh->h_dest[2],
-+ eh->h_dest[3], eh->h_dest[4], eh->h_dest[5]);
-+ return 1;
-+ }
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+/* Determine ether protocol. Based on eth_type_trans. */
-+static inline u16 bnep_net_eth_proto(struct sk_buff *skb)
-+{
-+ struct ethhdr *eh = (void *) skb->data;
-+
-+ if (ntohs(eh->h_proto) >= 1536)
-+ return eh->h_proto;
-+
-+ if (get_unaligned((u16 *) skb->data) == 0xFFFF)
-+ return htons(ETH_P_802_3);
-+
-+ return htons(ETH_P_802_2);
-+}
-+
-+static inline int bnep_net_proto_filter(struct sk_buff *skb, struct bnep_session *s)
-+{
-+ u16 proto = bnep_net_eth_proto(skb);
-+ struct bnep_proto_filter *f = s->proto_filter;
-+ int i;
-+
-+ for (i = 0; i < BNEP_MAX_PROTO_FILTERS && f[i].end; i++) {
-+ if (proto >= f[i].start && proto <= f[i].end)
-+ return 0;
-+ }
-+
-+ BT_DBG("BNEP: filtered skb %p, proto 0x%.4x", skb, proto);
-+ return 1;
-+}
-+#endif
-+
-+static int bnep_net_xmit(struct sk_buff *skb, struct net_device *dev)
-+{
-+ struct bnep_session *s = dev->priv;
-+ struct sock *sk = s->sock->sk;
-+
-+ BT_DBG("skb %p, dev %p", skb, dev);
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ if (bnep_net_mc_filter(skb, s)) {
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+#endif
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ if (bnep_net_proto_filter(skb, s)) {
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+#endif
-+
-+ /*
-+ * We cannot send L2CAP packets from here as we are potentially in a bh.
-+ * So we have to queue them and wake up session thread which is sleeping
-+ * on the sk->sleep.
-+ */
-+ dev->trans_start = jiffies;
-+ skb_queue_tail(&sk->write_queue, skb);
-+ wake_up_interruptible(sk->sleep);
-+
-+ if (skb_queue_len(&sk->write_queue) >= BNEP_TX_QUEUE_LEN) {
-+ BT_DBG("tx queue is full");
-+
-+ /* Stop queuing.
-+ * Session thread will do netif_wake_queue() */
-+ netif_stop_queue(dev);
-+ }
-+
-+ return 0;
-+}
-+
-+int bnep_net_init(struct net_device *dev)
-+{
-+ struct bnep_session *s = dev->priv;
-+
-+ memcpy(dev->dev_addr, s->eh.h_dest, ETH_ALEN);
-+ dev->addr_len = ETH_ALEN;
-+
-+ ether_setup(dev);
-+
-+ dev->open = bnep_net_open;
-+ dev->stop = bnep_net_close;
-+ dev->hard_start_xmit = bnep_net_xmit;
-+ dev->get_stats = bnep_net_get_stats;
-+ dev->do_ioctl = bnep_net_ioctl;
-+ dev->set_mac_address = bnep_net_set_mac_addr;
-+ dev->set_multicast_list = bnep_net_set_mc_list;
-+
-+ dev->watchdog_timeo = HZ * 2;
-+ dev->tx_timeout = bnep_net_timeout;
-+
-+ return 0;
-+}
-diff -urN linux-2.4.18/net/bluetooth/bnep/sock.c linux-2.4.18-mh15/net/bluetooth/bnep/sock.c
---- linux-2.4.18/net/bluetooth/bnep/sock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/bnep/sock.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,210 @@
-+/*
-+ BNEP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2001-2002 Inventel Systemes
-+ Written 2001-2002 by
-+ David Libault <david.libault@inventel.fr>
-+
-+ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: sock.c,v 1.3 2002/07/10 22:59:52 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include "bnep.h"
-+
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+static int bnep_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sock_orphan(sk);
-+ sock_put(sk);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int bnep_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct bnep_connlist_req cl;
-+ struct bnep_connadd_req ca;
-+ struct bnep_conndel_req cd;
-+ struct bnep_conninfo ci;
-+ struct socket *nsock;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
-+ case BNEPCONNADD:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&ca, (void *) arg, sizeof(ca)))
-+ return -EFAULT;
-+
-+ nsock = sockfd_lookup(ca.sock, &err);
-+ if (!nsock)
-+ return err;
-+
-+ if (nsock->sk->state != BT_CONNECTED) {
-+ fput(nsock->file);
-+ return -EBADFD;
-+ }
-+
-+ err = bnep_add_connection(&ca, nsock);
-+ if (!err) {
-+ if (copy_to_user((void *) arg, &ca, sizeof(ca)))
-+ err = -EFAULT;
-+ } else
-+ fput(nsock->file);
-+
-+ return err;
-+
-+ case BNEPCONNDEL:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&cd, (void *) arg, sizeof(cd)))
-+ return -EFAULT;
-+
-+ return bnep_del_connection(&cd);
-+
-+ case BNEPGETCONNLIST:
-+ if (copy_from_user(&cl, (void *) arg, sizeof(cl)))
-+ return -EFAULT;
-+
-+ if (cl.cnum <= 0)
-+ return -EINVAL;
-+
-+ err = bnep_get_connlist(&cl);
-+ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ case BNEPGETCONNINFO:
-+ if (copy_from_user(&ci, (void *) arg, sizeof(ci)))
-+ return -EFAULT;
-+
-+ err = bnep_get_conninfo(&ci);
-+ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static struct proto_ops bnep_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: bnep_sock_release,
-+ ioctl: bnep_sock_ioctl,
-+ bind: sock_no_bind,
-+ getname: sock_no_getname,
-+ sendmsg: sock_no_sendmsg,
-+ recvmsg: sock_no_recvmsg,
-+ poll: sock_no_poll,
-+ listen: sock_no_listen,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sock_no_setsockopt,
-+ getsockopt: sock_no_getsockopt,
-+ connect: sock_no_connect,
-+ socketpair: sock_no_socketpair,
-+ accept: sock_no_accept,
-+ mmap: sock_no_mmap
-+};
-+
-+static int bnep_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ if (sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &bnep_sock_ops;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1)))
-+ return -ENOMEM;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ sock->state = SS_UNCONNECTED;
-+ sock_init_data(sock, sk);
-+
-+ sk->destruct = NULL;
-+ sk->protocol = protocol;
-+
-+ return 0;
-+}
-+
-+static struct net_proto_family bnep_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: bnep_sock_create
-+};
-+
-+int bnep_sock_init(void)
-+{
-+ bluez_sock_register(BTPROTO_BNEP, &bnep_sock_family_ops);
-+ return 0;
-+}
-+
-+int bnep_sock_cleanup(void)
-+{
-+ if (bluez_sock_unregister(BTPROTO_BNEP))
-+ BT_ERR("Can't unregister BNEP socket");
-+ return 0;
-+}
-diff -urN linux-2.4.18/net/bluetooth/cmtp/capi.c linux-2.4.18-mh15/net/bluetooth/cmtp/capi.c
---- linux-2.4.18/net/bluetooth/cmtp/capi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/capi.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,707 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <net/sock.h>
-+
-+#include <linux/capi.h>
-+
-+#include "../drivers/isdn/avmb1/capilli.h"
-+#include "../drivers/isdn/avmb1/capicmd.h"
-+#include "../drivers/isdn/avmb1/capiutil.h"
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define REVISION "1.0"
-+
-+#define CAPI_INTEROPERABILITY 0x20
-+
-+#define CAPI_INTEROPERABILITY_REQ CAPICMD(CAPI_INTEROPERABILITY, CAPI_REQ)
-+#define CAPI_INTEROPERABILITY_CONF CAPICMD(CAPI_INTEROPERABILITY, CAPI_CONF)
-+#define CAPI_INTEROPERABILITY_IND CAPICMD(CAPI_INTEROPERABILITY, CAPI_IND)
-+#define CAPI_INTEROPERABILITY_RESP CAPICMD(CAPI_INTEROPERABILITY, CAPI_RESP)
-+
-+#define CAPI_INTEROPERABILITY_REQ_LEN (CAPI_MSG_BASELEN + 2)
-+#define CAPI_INTEROPERABILITY_CONF_LEN (CAPI_MSG_BASELEN + 4)
-+#define CAPI_INTEROPERABILITY_IND_LEN (CAPI_MSG_BASELEN + 2)
-+#define CAPI_INTEROPERABILITY_RESP_LEN (CAPI_MSG_BASELEN + 2)
-+
-+#define CAPI_FUNCTION_REGISTER 0
-+#define CAPI_FUNCTION_RELEASE 1
-+#define CAPI_FUNCTION_GET_PROFILE 2
-+#define CAPI_FUNCTION_GET_MANUFACTURER 3
-+#define CAPI_FUNCTION_GET_VERSION 4
-+#define CAPI_FUNCTION_GET_SERIAL_NUMBER 5
-+#define CAPI_FUNCTION_MANUFACTURER 6
-+#define CAPI_FUNCTION_LOOPBACK 7
-+
-+static struct capi_driver_interface *di;
-+
-+
-+#define CMTP_MSGNUM 1
-+#define CMTP_APPLID 2
-+#define CMTP_MAPPING 3
-+
-+static struct cmtp_application *cmtp_application_add(struct cmtp_session *session, __u16 appl)
-+{
-+ struct cmtp_application *app = kmalloc(sizeof(*app), GFP_KERNEL);
-+
-+ BT_DBG("session %p application %p appl %d", session, app, appl);
-+
-+ if (!app)
-+ return NULL;
-+
-+ memset(app, 0, sizeof(*app));
-+
-+ app->state = BT_OPEN;
-+ app->appl = appl;
-+
-+ list_add_tail(&app->list, &session->applications);
-+
-+ return app;
-+}
-+
-+static void cmtp_application_del(struct cmtp_session *session, struct cmtp_application *app)
-+{
-+ BT_DBG("session %p application %p", session, app);
-+
-+ if (app) {
-+ list_del(&app->list);
-+ kfree(app);
-+ }
-+}
-+
-+static struct cmtp_application *cmtp_application_get(struct cmtp_session *session, int pattern, __u16 value)
-+{
-+ struct cmtp_application *app;
-+ struct list_head *p, *n;
-+
-+ list_for_each_safe(p, n, &session->applications) {
-+ app = list_entry(p, struct cmtp_application, list);
-+ switch (pattern) {
-+ case CMTP_MSGNUM:
-+ if (app->msgnum == value)
-+ return app;
-+ break;
-+ case CMTP_APPLID:
-+ if (app->appl == value)
-+ return app;
-+ break;
-+ case CMTP_MAPPING:
-+ if (app->mapping == value)
-+ return app;
-+ break;
-+ }
-+ }
-+
-+ return NULL;
-+}
-+
-+static int cmtp_msgnum_get(struct cmtp_session *session)
-+{
-+ session->msgnum++;
-+
-+ if ((session->msgnum & 0xff) > 200)
-+ session->msgnum = CMTP_INITIAL_MSGNUM + 1;
-+
-+ return session->msgnum;
-+}
-+
-+
-+static void cmtp_send_interopmsg(struct cmtp_session *session,
-+ __u8 subcmd, __u16 appl, __u16 msgnum,
-+ __u16 function, unsigned char *buf, int len)
-+{
-+ struct sk_buff *skb;
-+ unsigned char *s;
-+
-+ BT_DBG("session %p subcmd 0x%02x appl %d msgnum %d", session, subcmd, appl, msgnum);
-+
-+ if (!(skb = alloc_skb(CAPI_MSG_BASELEN + 6 + len, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for interoperability packet");
-+ return;
-+ }
-+
-+ s = skb_put(skb, CAPI_MSG_BASELEN + 6 + len);
-+
-+ capimsg_setu16(s, 0, CAPI_MSG_BASELEN + 6 + len);
-+ capimsg_setu16(s, 2, appl);
-+ capimsg_setu8 (s, 4, CAPI_INTEROPERABILITY);
-+ capimsg_setu8 (s, 5, subcmd);
-+ capimsg_setu16(s, 6, msgnum);
-+
-+ /* Interoperability selector (Bluetooth Device Management) */
-+ capimsg_setu16(s, 8, 0x0001);
-+
-+ capimsg_setu8 (s, 10, 3 + len);
-+ capimsg_setu16(s, 11, function);
-+ capimsg_setu8 (s, 13, len);
-+
-+ if (len > 0)
-+ memcpy(s + 14, buf, len);
-+
-+ cmtp_send_capimsg(session, skb);
-+}
-+
-+static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+ struct cmtp_application *application;
-+ __u16 appl, msgnum, func, info;
-+ __u32 controller;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ switch (CAPIMSG_SUBCOMMAND(skb->data)) {
-+ case CAPI_CONF:
-+ func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 5);
-+ info = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 8);
-+
-+ switch (func) {
-+ case CAPI_FUNCTION_REGISTER:
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MSGNUM, msgnum);
-+ if (application) {
-+ application->state = BT_CONNECTED;
-+ application->msgnum = 0;
-+ application->mapping = CAPIMSG_APPID(skb->data);
-+ wake_up_interruptible(&session->wait);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_RELEASE:
-+ appl = CAPIMSG_APPID(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MAPPING, appl);
-+ if (application) {
-+ application->state = BT_CLOSED;
-+ application->msgnum = 0;
-+ wake_up_interruptible(&session->wait);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_PROFILE:
-+ controller = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 11);
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+
-+ if (!info && (msgnum == CMTP_INITIAL_MSGNUM)) {
-+ session->ncontroller = controller;
-+ wake_up_interruptible(&session->wait);
-+ break;
-+ }
-+
-+ if (!info && ctrl) {
-+ memcpy(&ctrl->profile,
-+ skb->data + CAPI_MSG_BASELEN + 11,
-+ sizeof(capi_profile));
-+ session->state = BT_CONNECTED;
-+ ctrl->ready(ctrl);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_MANUFACTURER:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 10);
-+
-+ if (!info && ctrl) {
-+ strncpy(ctrl->manu,
-+ skb->data + CAPI_MSG_BASELEN + 15,
-+ skb->data[CAPI_MSG_BASELEN + 14]);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_VERSION:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12);
-+
-+ if (!info && ctrl) {
-+ ctrl->version.majorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 16);
-+ ctrl->version.minorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 20);
-+ ctrl->version.majormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 24);
-+ ctrl->version.minormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 28);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_SERIAL_NUMBER:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12);
-+
-+ if (!info && ctrl) {
-+ memset(ctrl->serial, 0, CAPI_SERIAL_LEN);
-+ strncpy(ctrl->serial,
-+ skb->data + CAPI_MSG_BASELEN + 17,
-+ skb->data[CAPI_MSG_BASELEN + 16]);
-+ }
-+
-+ break;
-+ }
-+
-+ break;
-+
-+ case CAPI_IND:
-+ func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 3);
-+
-+ if (func == CAPI_FUNCTION_LOOPBACK) {
-+ appl = CAPIMSG_APPID(skb->data);
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+ cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func,
-+ skb->data + CAPI_MSG_BASELEN + 6,
-+ skb->data[CAPI_MSG_BASELEN + 5]);
-+ }
-+
-+ break;
-+ }
-+
-+ kfree_skb(skb);
-+}
-+
-+void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+ struct cmtp_application *application;
-+ __u16 cmd, appl, info;
-+ __u32 ncci, contr;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ if (CAPIMSG_COMMAND(skb->data) == CAPI_INTEROPERABILITY) {
-+ cmtp_recv_interopmsg(session, skb);
-+ return;
-+ }
-+
-+ if (session->flags & (1 << CMTP_LOOPBACK)) {
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ cmd = CAPICMD(CAPIMSG_COMMAND(skb->data), CAPIMSG_SUBCOMMAND(skb->data));
-+ appl = CAPIMSG_APPID(skb->data);
-+ contr = CAPIMSG_CONTROL(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MAPPING, appl);
-+ if (application) {
-+ appl = application->appl;
-+ CAPIMSG_SETAPPID(skb->data, appl);
-+ } else {
-+ BT_ERR("Can't find application with id %d", appl);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ if ((contr & 0x7f) == 0x01) {
-+ contr = (contr & 0xffffff80) | session->num;
-+ CAPIMSG_SETCONTROL(skb->data, contr);
-+ }
-+
-+ if (!ctrl) {
-+ BT_ERR("Can't find controller %d for message", session->num);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ switch (cmd) {
-+ case CAPI_CONNECT_B3_CONF:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+ info = CAPIMSG_U16(skb->data, 12);
-+
-+ BT_DBG("CONNECT_B3_CONF ncci 0x%02x info 0x%02x", ncci, info);
-+
-+ if (info == 0)
-+ ctrl->new_ncci(ctrl, appl, ncci, 8);
-+
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+
-+ case CAPI_CONNECT_B3_IND:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+
-+ BT_DBG("CONNECT_B3_IND ncci 0x%02x", ncci);
-+
-+ ctrl->new_ncci(ctrl, appl, ncci, 8);
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+
-+ case CAPI_DISCONNECT_B3_IND:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+
-+ BT_DBG("DISCONNECT_B3_IND ncci 0x%02x", ncci);
-+
-+ if (ncci == 0xffffffff)
-+ BT_ERR("DISCONNECT_B3_IND with ncci 0xffffffff");
-+
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ ctrl->free_ncci(ctrl, appl, ncci);
-+ break;
-+
-+ default:
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+ }
-+}
-+
-+void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct cmtp_scb *scb = (void *) skb->cb;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ scb->id = -1;
-+ scb->data = (CAPIMSG_COMMAND(skb->data) == CAPI_DATA_B3);
-+
-+ skb_queue_tail(&session->transmit, skb);
-+
-+ cmtp_schedule(session);
-+}
-+
-+
-+static int cmtp_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
-+{
-+ BT_DBG("ctrl %p data %p", ctrl, data);
-+
-+ return -EIO;
-+}
-+
-+static void cmtp_reset_ctr(struct capi_ctr *ctrl)
-+{
-+ BT_DBG("ctrl %p", ctrl);
-+
-+ ctrl->reseted(ctrl);
-+}
-+
-+static void cmtp_remove_ctr(struct capi_ctr *ctrl)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+
-+ BT_DBG("ctrl %p", ctrl);
-+
-+ ctrl->suspend_output(ctrl);
-+
-+ atomic_inc(&session->terminate);
-+ cmtp_schedule(session);
-+}
-+
-+static void cmtp_register_appl(struct capi_ctr *ctrl, __u16 appl, capi_register_params *rp)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+ unsigned char buf[8];
-+ int err = 0, nconn, want = rp->level3cnt;
-+
-+ BT_DBG("ctrl %p appl %d level3cnt %d datablkcnt %d datablklen %d",
-+ ctrl, appl, rp->level3cnt, rp->datablkcnt, rp->datablklen);
-+
-+ application = cmtp_application_add(session, appl);
-+ if (!application) {
-+ BT_ERR("Can't allocate memory for new application");
-+ ctrl->appl_released(ctrl, appl);
-+ return;
-+ }
-+
-+ if (want < 0)
-+ nconn = ctrl->profile.nbchannel * -want;
-+ else
-+ nconn = want;
-+
-+ if (nconn == 0)
-+ nconn = ctrl->profile.nbchannel;
-+
-+ capimsg_setu16(buf, 0, nconn);
-+ capimsg_setu16(buf, 2, rp->datablkcnt);
-+ capimsg_setu16(buf, 4, rp->datablklen);
-+
-+ application->state = BT_CONFIG;
-+ application->msgnum = cmtp_msgnum_get(session);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0x0000, application->msgnum,
-+ CAPI_FUNCTION_REGISTER, buf, 6);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (1) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ if (application->state == BT_CLOSED) {
-+ err = -application->err;
-+ break;
-+ }
-+
-+ if (application->state == BT_CONNECTED)
-+ break;
-+
-+ if (signal_pending(current)) {
-+ err = -EINTR;
-+ break;
-+ }
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ if (err) {
-+ ctrl->appl_released(ctrl, appl);
-+ cmtp_application_del(session, application);
-+ return;
-+ }
-+
-+ ctrl->appl_registered(ctrl, appl);
-+}
-+
-+static void cmtp_release_appl(struct capi_ctr *ctrl, __u16 appl)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+
-+ BT_DBG("ctrl %p appl %d", ctrl, appl);
-+
-+ application = cmtp_application_get(session, CMTP_APPLID, appl);
-+ if (!application) {
-+ BT_ERR("Can't find application");
-+ return;
-+ }
-+
-+ application->msgnum = cmtp_msgnum_get(session);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, application->mapping, application->msgnum,
-+ CAPI_FUNCTION_RELEASE, NULL, 0);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (timeo) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (application->state == BT_CLOSED)
-+ break;
-+
-+ if (signal_pending(current))
-+ break;
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ cmtp_application_del(session, application);
-+ ctrl->appl_released(ctrl, appl);
-+}
-+
-+static void cmtp_send_message(struct capi_ctr *ctrl, struct sk_buff *skb)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ __u16 appl;
-+ __u32 contr;
-+
-+ BT_DBG("ctrl %p skb %p", ctrl, skb);
-+
-+ appl = CAPIMSG_APPID(skb->data);
-+ contr = CAPIMSG_CONTROL(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_APPLID, appl);
-+ if ((!application) || (application->state != BT_CONNECTED)) {
-+ BT_ERR("Can't find application with id %d", appl);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ CAPIMSG_SETAPPID(skb->data, application->mapping);
-+
-+ if ((contr & 0x7f) == session->num) {
-+ contr = (contr & 0xffffff80) | 0x01;
-+ CAPIMSG_SETCONTROL(skb->data, contr);
-+ }
-+
-+ cmtp_send_capimsg(session, skb);
-+}
-+
-+static char *cmtp_procinfo(struct capi_ctr *ctrl)
-+{
-+ return "CAPI Message Transport Protocol";
-+}
-+
-+static int cmtp_ctr_read_proc(char *page, char **start, off_t off, int count, int *eof, struct capi_ctr *ctrl)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *app;
-+ struct list_head *p, *n;
-+ int len = 0;
-+
-+ len += sprintf(page + len, "%s (Revision %s)\n\n", cmtp_procinfo(ctrl), REVISION);
-+ len += sprintf(page + len, "addr %s\n", session->name);
-+ len += sprintf(page + len, "ctrl %d\n", session->num);
-+
-+ list_for_each_safe(p, n, &session->applications) {
-+ app = list_entry(p, struct cmtp_application, list);
-+ len += sprintf(page + len, "appl %d -> %d\n", app->appl, app->mapping);
-+ }
-+
-+ if (off + count >= len)
-+ *eof = 1;
-+
-+ if (len < off)
-+ return 0;
-+
-+ *start = page + off;
-+
-+ return ((count < len - off) ? count : len - off);
-+}
-+
-+static struct capi_driver cmtp_driver = {
-+ name: "cmtp",
-+ revision: REVISION,
-+ load_firmware: cmtp_load_firmware,
-+ reset_ctr: cmtp_reset_ctr,
-+ remove_ctr: cmtp_remove_ctr,
-+ register_appl: cmtp_register_appl,
-+ release_appl: cmtp_release_appl,
-+ send_message: cmtp_send_message,
-+ procinfo: cmtp_procinfo,
-+ ctr_read_proc: cmtp_ctr_read_proc,
-+
-+ driver_read_proc: 0,
-+ add_card: 0,
-+};
-+
-+
-+int cmtp_attach_device(struct cmtp_session *session)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+ unsigned char buf[4];
-+
-+ BT_DBG("session %p", session);
-+
-+ capimsg_setu32(buf, 0, 0);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, CMTP_INITIAL_MSGNUM,
-+ CAPI_FUNCTION_GET_PROFILE, buf, 4);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (timeo) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (session->ncontroller)
-+ break;
-+
-+ if (signal_pending(current))
-+ break;
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ BT_INFO("Found %d CAPI controller(s) on device %s", session->ncontroller, session->name);
-+
-+ if (!timeo)
-+ return -ETIMEDOUT;
-+
-+ if (!session->ncontroller)
-+ return -ENODEV;
-+
-+
-+ if (session->ncontroller > 1)
-+ BT_INFO("Setting up only CAPI controller 1");
-+
-+ if (!(session->ctrl = di->attach_ctr(&cmtp_driver, session->name, session))) {
-+ BT_ERR("Can't attach new controller");
-+ return -EBUSY;
-+ }
-+
-+ session->num = session->ctrl->cnr;
-+
-+ BT_DBG("session %p ctrl %p num %d", session, session->ctrl, session->num);
-+
-+ capimsg_setu32(buf, 0, 1);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_MANUFACTURER, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_VERSION, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_SERIAL_NUMBER, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_PROFILE, buf, 4);
-+
-+ return 0;
-+}
-+
-+void cmtp_detach_device(struct cmtp_session *session)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+
-+ BT_DBG("session %p ctrl %p", session, ctrl);
-+
-+ if (!ctrl)
-+ return;
-+
-+ ctrl->reseted(ctrl);
-+
-+ di->detach_ctr(ctrl);
-+}
-+
-+int cmtp_init_capi(void)
-+{
-+ if (!(di = attach_capi_driver(&cmtp_driver))) {
-+ BT_ERR("Can't attach CAPI driver");
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+void cmtp_cleanup_capi(void)
-+{
-+ detach_capi_driver(&cmtp_driver);
-+}
-diff -urN linux-2.4.18/net/bluetooth/cmtp/cmtp.h linux-2.4.18-mh15/net/bluetooth/cmtp/cmtp.h
---- linux-2.4.18/net/bluetooth/cmtp/cmtp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/cmtp.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,138 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#ifndef __CMTP_H
-+#define __CMTP_H
-+
-+#include <linux/types.h>
-+#include <net/bluetooth/bluetooth.h>
-+
-+#define BTNAMSIZ 18
-+
-+/* CMTP ioctl defines */
-+#define CMTPCONNADD _IOW('C', 200, int)
-+#define CMTPCONNDEL _IOW('C', 201, int)
-+#define CMTPGETCONNLIST _IOR('C', 210, int)
-+#define CMTPGETCONNINFO _IOR('C', 211, int)
-+
-+#define CMTP_LOOPBACK 0
-+
-+struct cmtp_connadd_req {
-+ int sock; // Connected socket
-+ __u32 flags;
-+};
-+
-+struct cmtp_conndel_req {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+};
-+
-+struct cmtp_conninfo {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+ __u16 state;
-+ int num;
-+};
-+
-+struct cmtp_connlist_req {
-+ __u32 cnum;
-+ struct cmtp_conninfo *ci;
-+};
-+
-+int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock);
-+int cmtp_del_connection(struct cmtp_conndel_req *req);
-+int cmtp_get_connlist(struct cmtp_connlist_req *req);
-+int cmtp_get_conninfo(struct cmtp_conninfo *ci);
-+
-+/* CMTP session defines */
-+#define CMTP_INTEROP_TIMEOUT (HZ * 5)
-+#define CMTP_INITIAL_MSGNUM 0xff00
-+
-+struct cmtp_session {
-+ struct list_head list;
-+
-+ struct socket *sock;
-+
-+ bdaddr_t bdaddr;
-+
-+ unsigned long state;
-+ unsigned long flags;
-+
-+ uint mtu;
-+
-+ char name[BTNAMSIZ];
-+
-+ atomic_t terminate;
-+
-+ wait_queue_head_t wait;
-+
-+ int ncontroller;
-+ int num;
-+ struct capi_ctr *ctrl;
-+
-+ struct list_head applications;
-+
-+ unsigned long blockids;
-+ int msgnum;
-+
-+ struct sk_buff_head transmit;
-+
-+ struct sk_buff *reassembly[16];
-+};
-+
-+struct cmtp_application {
-+ struct list_head list;
-+
-+ unsigned long state;
-+ int err;
-+
-+ __u16 appl;
-+ __u16 mapping;
-+
-+ __u16 msgnum;
-+};
-+
-+struct cmtp_scb {
-+ int id;
-+ int data;
-+};
-+
-+int cmtp_attach_device(struct cmtp_session *session);
-+void cmtp_detach_device(struct cmtp_session *session);
-+
-+void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb);
-+void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb);
-+
-+static inline void cmtp_schedule(struct cmtp_session *session)
-+{
-+ struct sock *sk = session->sock->sk;
-+
-+ wake_up_interruptible(sk->sleep);
-+}
-+
-+/* CMTP init defines */
-+int cmtp_init_capi(void);
-+int cmtp_init_sockets(void);
-+void cmtp_cleanup_capi(void);
-+void cmtp_cleanup_sockets(void);
-+
-+#endif /* __CMTP_H */
-diff -urN linux-2.4.18/net/bluetooth/cmtp/Config.in linux-2.4.18-mh15/net/bluetooth/cmtp/Config.in
---- linux-2.4.18/net/bluetooth/cmtp/Config.in 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,7 @@
-+#
-+# Bluetooth CMTP layer configuration
-+#
-+
-+if [ "$CONFIG_ISDN" = "y" -o "$CONFIG_ISDN" = "m" ]; then
-+ dep_tristate 'CMTP protocol support' CONFIG_BLUEZ_CMTP $CONFIG_ISDN_CAPI $CONFIG_BLUEZ_L2CAP
-+fi
-diff -urN linux-2.4.18/net/bluetooth/cmtp/core.c linux-2.4.18-mh15/net/bluetooth/cmtp/core.c
---- linux-2.4.18/net/bluetooth/cmtp/core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,515 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <linux/init.h>
-+#include <net/sock.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.0"
-+
-+static DECLARE_RWSEM(cmtp_session_sem);
-+static LIST_HEAD(cmtp_session_list);
-+
-+static struct cmtp_session *__cmtp_get_session(bdaddr_t *bdaddr)
-+{
-+ struct cmtp_session *session;
-+ struct list_head *p;
-+
-+ BT_DBG("");
-+
-+ list_for_each(p, &cmtp_session_list) {
-+ session = list_entry(p, struct cmtp_session, list);
-+ if (!bacmp(bdaddr, &session->bdaddr))
-+ return session;
-+ }
-+ return NULL;
-+}
-+
-+static void __cmtp_link_session(struct cmtp_session *session)
-+{
-+ MOD_INC_USE_COUNT;
-+ list_add(&session->list, &cmtp_session_list);
-+}
-+
-+static void __cmtp_unlink_session(struct cmtp_session *session)
-+{
-+ list_del(&session->list);
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci)
-+{
-+ bacpy(&ci->bdaddr, &session->bdaddr);
-+
-+ ci->flags = session->flags;
-+ ci->state = session->state;
-+
-+ ci->num = session->num;
-+}
-+
-+
-+static inline int cmtp_alloc_block_id(struct cmtp_session *session)
-+{
-+ int i, id = -1;
-+
-+ for (i = 0; i < 16; i++)
-+ if (!test_and_set_bit(i, &session->blockids)) {
-+ id = i;
-+ break;
-+ }
-+
-+ return id;
-+}
-+
-+static inline void cmtp_free_block_id(struct cmtp_session *session, int id)
-+{
-+ clear_bit(id, &session->blockids);
-+}
-+
-+static inline void cmtp_add_msgpart(struct cmtp_session *session, int id, const unsigned char *buf, int count)
-+{
-+ struct sk_buff *skb = session->reassembly[id], *nskb;
-+ int size;
-+
-+ BT_DBG("session %p buf %p count %d", session, buf, count);
-+
-+ size = (skb) ? skb->len + count : count;
-+
-+ if (!(nskb = alloc_skb(size, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for CAPI message");
-+ return;
-+ }
-+
-+ if (skb && (skb->len > 0))
-+ memcpy(skb_put(nskb, skb->len), skb->data, skb->len);
-+
-+ memcpy(skb_put(nskb, count), buf, count);
-+
-+ session->reassembly[id] = nskb;
-+
-+ if (skb)
-+ kfree_skb(skb);
-+}
-+
-+static inline int cmtp_recv_frame(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ __u8 hdr, hdrlen, id;
-+ __u16 len;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ while (skb->len > 0) {
-+ hdr = skb->data[0];
-+
-+ switch (hdr & 0xc0) {
-+ case 0x40:
-+ hdrlen = 2;
-+ len = skb->data[1];
-+ break;
-+ case 0x80:
-+ hdrlen = 3;
-+ len = skb->data[1] | (skb->data[2] << 8);
-+ break;
-+ default:
-+ hdrlen = 1;
-+ len = 0;
-+ break;
-+ }
-+
-+ id = (hdr & 0x3c) >> 2;
-+
-+ BT_DBG("hdr 0x%02x hdrlen %d len %d id %d", hdr, hdrlen, len, id);
-+
-+ if (hdrlen + len > skb->len) {
-+ BT_ERR("Wrong size or header information in CMTP frame");
-+ break;
-+ }
-+
-+ if (len == 0) {
-+ skb_pull(skb, hdrlen);
-+ continue;
-+ }
-+
-+ switch (hdr & 0x03) {
-+ case 0x00:
-+ cmtp_add_msgpart(session, id, skb->data + hdrlen, len);
-+ cmtp_recv_capimsg(session, session->reassembly[id]);
-+ session->reassembly[id] = NULL;
-+ break;
-+ case 0x01:
-+ cmtp_add_msgpart(session, id, skb->data + hdrlen, len);
-+ break;
-+ default:
-+ if (session->reassembly[id] != NULL)
-+ kfree_skb(session->reassembly[id]);
-+ session->reassembly[id] = NULL;
-+ break;
-+ }
-+
-+ skb_pull(skb, hdrlen + len);
-+ }
-+
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static int cmtp_send_frame(struct cmtp_session *session, unsigned char *data, int len)
-+{
-+ struct socket *sock = session->sock;
-+ struct iovec iv = { data, len };
-+ struct msghdr msg;
-+ int err;
-+
-+ BT_DBG("session %p data %p len %d", session, data, len);
-+
-+ if (!len)
-+ return 0;
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 1;
-+ msg.msg_iov = &iv;
-+
-+ err = sock->ops->sendmsg(sock, &msg, len, 0);
-+ return err;
-+}
-+
-+static int cmtp_process_transmit(struct cmtp_session *session)
-+{
-+ struct sk_buff *skb, *nskb;
-+ unsigned char *hdr;
-+ unsigned int size, tail;
-+
-+ BT_DBG("session %p", session);
-+
-+ if (!(nskb = alloc_skb(session->mtu, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for new frame");
-+ return -ENOMEM;
-+ }
-+
-+ while ((skb = skb_dequeue(&session->transmit))) {
-+ struct cmtp_scb *scb = (void *) skb->cb;
-+
-+ if ((tail = (session->mtu - nskb->len)) < 5) {
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+ skb_trim(nskb, 0);
-+ tail = session->mtu;
-+ }
-+
-+ size = min_t(uint, ((tail < 258) ? (tail - 2) : (tail - 3)), skb->len);
-+
-+ if ((scb->id < 0) && ((scb->id = cmtp_alloc_block_id(session)) < 0)) {
-+ skb_queue_head(&session->transmit, skb);
-+ break;
-+ }
-+
-+ if (size < 256) {
-+ hdr = skb_put(nskb, 2);
-+ hdr[0] = 0x40
-+ | ((scb->id << 2) & 0x3c)
-+ | ((skb->len == size) ? 0x00 : 0x01);
-+ hdr[1] = size;
-+ } else {
-+ hdr = skb_put(nskb, 3);
-+ hdr[0] = 0x80
-+ | ((scb->id << 2) & 0x3c)
-+ | ((skb->len == size) ? 0x00 : 0x01);
-+ hdr[1] = size & 0xff;
-+ hdr[2] = size >> 8;
-+ }
-+
-+ memcpy(skb_put(nskb, size), skb->data, size);
-+ skb_pull(skb, size);
-+
-+ if (skb->len > 0) {
-+ skb_queue_head(&session->transmit, skb);
-+ } else {
-+ cmtp_free_block_id(session, scb->id);
-+ if (scb->data) {
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+ skb_trim(nskb, 0);
-+ }
-+ kfree_skb(skb);
-+ }
-+ }
-+
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+
-+ kfree_skb(nskb);
-+
-+ return skb_queue_len(&session->transmit);
-+}
-+
-+static int cmtp_session(void *arg)
-+{
-+ struct cmtp_session *session = arg;
-+ struct sock *sk = session->sock->sk;
-+ struct sk_buff *skb;
-+ wait_queue_t wait;
-+
-+ BT_DBG("session %p", session);
-+
-+ daemonize(); reparent_to_init();
-+
-+ sprintf(current->comm, "kcmtpd_ctr_%d", session->num);
-+
-+ sigfillset(&current->blocked);
-+ flush_signals(current);
-+
-+ current->nice = -15;
-+
-+ set_fs(KERNEL_DS);
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(sk->sleep, &wait);
-+ while (!atomic_read(&session->terminate)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (sk->state != BT_CONNECTED)
-+ break;
-+
-+ while ((skb = skb_dequeue(&sk->receive_queue))) {
-+ skb_orphan(skb);
-+ cmtp_recv_frame(session, skb);
-+ }
-+
-+ cmtp_process_transmit(session);
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ down_write(&cmtp_session_sem);
-+
-+ if (!(session->flags & (1 << CMTP_LOOPBACK)))
-+ cmtp_detach_device(session);
-+
-+ fput(session->sock->file);
-+
-+ __cmtp_unlink_session(session);
-+
-+ up_write(&cmtp_session_sem);
-+
-+ kfree(session);
-+ return 0;
-+}
-+
-+int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
-+{
-+ struct cmtp_session *session, *s;
-+ bdaddr_t src, dst;
-+ int i, err;
-+
-+ BT_DBG("");
-+
-+ baswap(&src, &bluez_pi(sock->sk)->src);
-+ baswap(&dst, &bluez_pi(sock->sk)->dst);
-+
-+ session = kmalloc(sizeof(struct cmtp_session), GFP_KERNEL);
-+ if (!session)
-+ return -ENOMEM;
-+ memset(session, 0, sizeof(struct cmtp_session));
-+
-+ down_write(&cmtp_session_sem);
-+
-+ s = __cmtp_get_session(&bluez_pi(sock->sk)->dst);
-+ if (s && s->state == BT_CONNECTED) {
-+ err = -EEXIST;
-+ goto failed;
-+ }
-+
-+ bacpy(&session->bdaddr, &bluez_pi(sock->sk)->dst);
-+
-+ session->mtu = min_t(uint, l2cap_pi(sock->sk)->omtu, l2cap_pi(sock->sk)->imtu);
-+
-+ BT_DBG("mtu %d", session->mtu);
-+
-+ sprintf(session->name, "%s", batostr(&dst));
-+
-+ session->sock = sock;
-+ session->state = BT_CONFIG;
-+
-+ init_waitqueue_head(&session->wait);
-+
-+ session->ctrl = NULL;
-+ session->msgnum = CMTP_INITIAL_MSGNUM;
-+
-+ INIT_LIST_HEAD(&session->applications);
-+
-+ skb_queue_head_init(&session->transmit);
-+
-+ for (i = 0; i < 16; i++)
-+ session->reassembly[i] = NULL;
-+
-+ session->flags = req->flags;
-+
-+ __cmtp_link_session(session);
-+
-+ err = kernel_thread(cmtp_session, session, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+ if (err < 0)
-+ goto unlink;
-+
-+ if (!(session->flags & (1 << CMTP_LOOPBACK))) {
-+ err = cmtp_attach_device(session);
-+ if (err < 0)
-+ goto detach;
-+ }
-+
-+ up_write(&cmtp_session_sem);
-+ return 0;
-+
-+detach:
-+ cmtp_detach_device(session);
-+
-+unlink:
-+ __cmtp_unlink_session(session);
-+
-+failed:
-+ up_write(&cmtp_session_sem);
-+ kfree(session);
-+ return err;
-+}
-+
-+int cmtp_del_connection(struct cmtp_conndel_req *req)
-+{
-+ struct cmtp_session *session;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&cmtp_session_sem);
-+
-+ session = __cmtp_get_session(&req->bdaddr);
-+ if (session) {
-+ /* Flush the transmit queue */
-+ skb_queue_purge(&session->transmit);
-+
-+ /* Kill session thread */
-+ atomic_inc(&session->terminate);
-+ cmtp_schedule(session);
-+ } else
-+ err = -ENOENT;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+int cmtp_get_connlist(struct cmtp_connlist_req *req)
-+{
-+ struct list_head *p;
-+ int err = 0, n = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&cmtp_session_sem);
-+
-+ list_for_each(p, &cmtp_session_list) {
-+ struct cmtp_session *session;
-+ struct cmtp_conninfo ci;
-+
-+ session = list_entry(p, struct cmtp_session, list);
-+
-+ __cmtp_copy_session(session, &ci);
-+
-+ if (copy_to_user(req->ci, &ci, sizeof(ci))) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (++n >= req->cnum)
-+ break;
-+
-+ req->ci++;
-+ }
-+ req->cnum = n;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+int cmtp_get_conninfo(struct cmtp_conninfo *ci)
-+{
-+ struct cmtp_session *session;
-+ int err = 0;
-+
-+ down_read(&cmtp_session_sem);
-+
-+ session = __cmtp_get_session(&ci->bdaddr);
-+ if (session)
-+ __cmtp_copy_session(session, ci);
-+ else
-+ err = -ENOENT;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+
-+int __init init_cmtp(void)
-+{
-+ l2cap_load();
-+
-+ cmtp_init_capi();
-+ cmtp_init_sockets();
-+
-+ BT_INFO("BlueZ CMTP ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>");
-+
-+ return 0;
-+}
-+
-+void __exit exit_cmtp(void)
-+{
-+ cmtp_cleanup_sockets();
-+ cmtp_cleanup_capi();
-+}
-+
-+module_init(init_cmtp);
-+module_exit(exit_cmtp);
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ CMTP ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/cmtp/Makefile linux-2.4.18-mh15/net/bluetooth/cmtp/Makefile
---- linux-2.4.18/net/bluetooth/cmtp/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,10 @@
-+#
-+# Makefile for the Linux Bluetooth CMTP layer
-+#
-+
-+O_TARGET := cmtp.o
-+
-+obj-y := core.o sock.o capi.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.18/net/bluetooth/cmtp/sock.c linux-2.4.18-mh15/net/bluetooth/cmtp/sock.c
---- linux-2.4.18/net/bluetooth/cmtp/sock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/cmtp/sock.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,208 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+static int cmtp_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sock_orphan(sk);
-+ sock_put(sk);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int cmtp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct cmtp_connadd_req ca;
-+ struct cmtp_conndel_req cd;
-+ struct cmtp_connlist_req cl;
-+ struct cmtp_conninfo ci;
-+ struct socket *nsock;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
-+ case CMTPCONNADD:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&ca, (void *) arg, sizeof(ca)))
-+ return -EFAULT;
-+
-+ nsock = sockfd_lookup(ca.sock, &err);
-+ if (!nsock)
-+ return err;
-+
-+ if (nsock->sk->state != BT_CONNECTED) {
-+ fput(nsock->file);
-+ return -EBADFD;
-+ }
-+
-+ err = cmtp_add_connection(&ca, nsock);
-+ if (!err) {
-+ if (copy_to_user((void *) arg, &ca, sizeof(ca)))
-+ err = -EFAULT;
-+ } else
-+ fput(nsock->file);
-+
-+ return err;
-+
-+ case CMTPCONNDEL:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&cd, (void *) arg, sizeof(cd)))
-+ return -EFAULT;
-+
-+ return cmtp_del_connection(&cd);
-+
-+ case CMTPGETCONNLIST:
-+ if (copy_from_user(&cl, (void *) arg, sizeof(cl)))
-+ return -EFAULT;
-+
-+ if (cl.cnum <= 0)
-+ return -EINVAL;
-+
-+ err = cmtp_get_connlist(&cl);
-+ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ case CMTPGETCONNINFO:
-+ if (copy_from_user(&ci, (void *) arg, sizeof(ci)))
-+ return -EFAULT;
-+
-+ err = cmtp_get_conninfo(&ci);
-+ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci)))
-+ return -EFAULT;
-+
-+ return err;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static struct proto_ops cmtp_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: cmtp_sock_release,
-+ ioctl: cmtp_sock_ioctl,
-+ bind: sock_no_bind,
-+ getname: sock_no_getname,
-+ sendmsg: sock_no_sendmsg,
-+ recvmsg: sock_no_recvmsg,
-+ poll: sock_no_poll,
-+ listen: sock_no_listen,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sock_no_setsockopt,
-+ getsockopt: sock_no_getsockopt,
-+ connect: sock_no_connect,
-+ socketpair: sock_no_socketpair,
-+ accept: sock_no_accept,
-+ mmap: sock_no_mmap
-+};
-+
-+static int cmtp_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ if (sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &cmtp_sock_ops;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1)))
-+ return -ENOMEM;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ sock->state = SS_UNCONNECTED;
-+ sock_init_data(sock, sk);
-+
-+ sk->destruct = NULL;
-+ sk->protocol = protocol;
-+
-+ return 0;
-+}
-+
-+static struct net_proto_family cmtp_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: cmtp_sock_create
-+};
-+
-+int cmtp_init_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_CMTP, &cmtp_sock_family_ops))) {
-+ BT_ERR("Can't register CMTP socket layer (%d)", err);
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+void cmtp_cleanup_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_unregister(BTPROTO_CMTP)))
-+ BT_ERR("Can't unregister CMTP socket layer (%d)", err);
-+
-+ return;
-+}
-diff -urN linux-2.4.18/net/bluetooth/Config.in linux-2.4.18-mh15/net/bluetooth/Config.in
---- linux-2.4.18/net/bluetooth/Config.in 2001-06-12 04:15:27.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -1,16 +1,23 @@
- #
--# Bluetooth configuration
-+# Bluetooth subsystem configuration
- #
-
- if [ "$CONFIG_NET" != "n" ]; then
-+
- mainmenu_option next_comment
- comment 'Bluetooth support'
- dep_tristate 'Bluetooth subsystem support' CONFIG_BLUEZ $CONFIG_NET
-
- if [ "$CONFIG_BLUEZ" != "n" ]; then
- dep_tristate 'L2CAP protocol support' CONFIG_BLUEZ_L2CAP $CONFIG_BLUEZ
-+ dep_tristate 'SCO links support' CONFIG_BLUEZ_SCO $CONFIG_BLUEZ
-+ source net/bluetooth/rfcomm/Config.in
-+ source net/bluetooth/bnep/Config.in
-+ source net/bluetooth/cmtp/Config.in
-+ source net/bluetooth/hidp/Config.in
- source drivers/bluetooth/Config.in
- fi
-+
- endmenu
- fi
-
-diff -urN linux-2.4.18/net/bluetooth/hci_conn.c linux-2.4.18-mh15/net/bluetooth/hci_conn.c
---- linux-2.4.18/net/bluetooth/hci_conn.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hci_conn.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,435 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * HCI Connection handling.
-+ *
-+ * $Id: hci_conn.c,v 1.5 2002/07/17 18:46:25 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/notifier.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+#ifndef HCI_CORE_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+void hci_acl_connect(struct hci_conn *conn)
-+{
-+ struct hci_dev *hdev = conn->hdev;
-+ struct inquiry_entry *ie;
-+ create_conn_cp cp;
-+
-+ BT_DBG("%p", conn);
-+
-+ conn->state = BT_CONNECT;
-+ conn->out = 1;
-+ conn->link_mode = HCI_LM_MASTER;
-+
-+ memset(&cp, 0, sizeof(cp));
-+ bacpy(&cp.bdaddr, &conn->dst);
-+ cp.pscan_rep_mode = 0x02;
-+
-+ if ((ie = inquiry_cache_lookup(hdev, &conn->dst)) &&
-+ inquiry_entry_age(ie) <= INQUIRY_ENTRY_AGE_MAX) {
-+ cp.pscan_rep_mode = ie->info.pscan_rep_mode;
-+ cp.pscan_mode = ie->info.pscan_mode;
-+ cp.clock_offset = ie->info.clock_offset | __cpu_to_le16(0x8000);
-+ }
-+
-+ cp.pkt_type = __cpu_to_le16(hdev->pkt_type & ACL_PTYPE_MASK);
-+ if (lmp_rswitch_capable(hdev) && !(hdev->link_mode & HCI_LM_MASTER))
-+ cp.role_switch = 0x01;
-+ else
-+ cp.role_switch = 0x00;
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CREATE_CONN,
-+ CREATE_CONN_CP_SIZE, &cp);
-+}
-+
-+void hci_acl_disconn(struct hci_conn *conn, __u8 reason)
-+{
-+ disconnect_cp cp;
-+
-+ BT_DBG("%p", conn);
-+
-+ conn->state = BT_DISCONN;
-+
-+ cp.handle = __cpu_to_le16(conn->handle);
-+ cp.reason = reason;
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_DISCONNECT,
-+ DISCONNECT_CP_SIZE, &cp);
-+}
-+
-+void hci_add_sco(struct hci_conn *conn, __u16 handle)
-+{
-+ struct hci_dev *hdev = conn->hdev;
-+ add_sco_cp cp;
-+
-+ BT_DBG("%p", conn);
-+
-+ conn->state = BT_CONNECT;
-+ conn->out = 1;
-+
-+ cp.pkt_type = __cpu_to_le16(hdev->pkt_type & SCO_PTYPE_MASK);
-+ cp.handle = __cpu_to_le16(handle);
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ADD_SCO, ADD_SCO_CP_SIZE, &cp);
-+}
-+
-+static void hci_conn_timeout(unsigned long arg)
-+{
-+ struct hci_conn *conn = (void *)arg;
-+ struct hci_dev *hdev = conn->hdev;
-+
-+ BT_DBG("conn %p state %d", conn, conn->state);
-+
-+ if (atomic_read(&conn->refcnt))
-+ return;
-+
-+ hci_dev_lock(hdev);
-+ if (conn->state == BT_CONNECTED)
-+ hci_acl_disconn(conn, 0x13);
-+ else
-+ conn->state = BT_CLOSED;
-+ hci_dev_unlock(hdev);
-+ return;
-+}
-+
-+static void hci_conn_init_timer(struct hci_conn *conn)
-+{
-+ init_timer(&conn->timer);
-+ conn->timer.function = hci_conn_timeout;
-+ conn->timer.data = (unsigned long)conn;
-+}
-+
-+struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst)
-+{
-+ struct hci_conn *conn;
-+
-+ BT_DBG("%s dst %s", hdev->name, batostr(dst));
-+
-+ if (!(conn = kmalloc(sizeof(struct hci_conn), GFP_ATOMIC)))
-+ return NULL;
-+ memset(conn, 0, sizeof(struct hci_conn));
-+
-+ bacpy(&conn->dst, dst);
-+ conn->type = type;
-+ conn->hdev = hdev;
-+ conn->state = BT_OPEN;
-+
-+ skb_queue_head_init(&conn->data_q);
-+ hci_conn_init_timer(conn);
-+
-+ atomic_set(&conn->refcnt, 0);
-+
-+ hci_dev_hold(hdev);
-+
-+ tasklet_disable(&hdev->tx_task);
-+ conn_hash_add(hdev, conn);
-+ tasklet_enable(&hdev->tx_task);
-+
-+ return conn;
-+}
-+
-+int hci_conn_del(struct hci_conn *conn)
-+{
-+ struct hci_dev *hdev = conn->hdev;
-+
-+ BT_DBG("%s conn %p handle %d", hdev->name, conn, conn->handle);
-+
-+ hci_conn_del_timer(conn);
-+
-+ if (conn->type == SCO_LINK) {
-+ struct hci_conn *acl = conn->link;
-+ if (acl) {
-+ acl->link = NULL;
-+ hci_conn_put(acl);
-+ }
-+ } else {
-+ struct hci_conn *sco = conn->link;
-+ if (sco)
-+ sco->link = NULL;
-+
-+ /* Unacked frames */
-+ hdev->acl_cnt += conn->sent;
-+ }
-+
-+ tasklet_disable(&hdev->tx_task);
-+ conn_hash_del(hdev, conn);
-+ tasklet_enable(&hdev->tx_task);
-+
-+ skb_queue_purge(&conn->data_q);
-+
-+ hci_dev_put(hdev);
-+
-+ kfree(conn);
-+ return 0;
-+}
-+
-+struct hci_dev *hci_get_route(bdaddr_t *dst, bdaddr_t *src)
-+{
-+ int use_src = bacmp(src, BDADDR_ANY);
-+ struct hci_dev *hdev = NULL;
-+ struct list_head *p;
-+
-+ BT_DBG("%s -> %s", batostr(src), batostr(dst));
-+
-+ read_lock_bh(&hdev_list_lock);
-+
-+ list_for_each(p, &hdev_list) {
-+ struct hci_dev *d;
-+ d = list_entry(p, struct hci_dev, list);
-+
-+ if (!test_bit(HCI_UP, &d->flags))
-+ continue;
-+
-+ /* Simple routing:
-+ * No source address - find interface with bdaddr != dst
-+ * Source address - find interface with bdaddr == src
-+ */
-+
-+ if (use_src) {
-+ if (!bacmp(&d->bdaddr, src)) {
-+ hdev = d; break;
-+ }
-+ } else {
-+ if (bacmp(&d->bdaddr, dst)) {
-+ hdev = d; break;
-+ }
-+ }
-+ }
-+
-+ if (hdev)
-+ hci_dev_hold(hdev);
-+
-+ read_unlock_bh(&hdev_list_lock);
-+ return hdev;
-+}
-+
-+/* Create SCO or ACL connection.
-+ * Device _must_ be locked */
-+struct hci_conn * hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst)
-+{
-+ struct hci_conn *acl;
-+
-+ BT_DBG("%s dst %s", hdev->name, batostr(dst));
-+
-+ if (!(acl = conn_hash_lookup_ba(hdev, ACL_LINK, dst))) {
-+ if (!(acl = hci_conn_add(hdev, ACL_LINK, dst)))
-+ return NULL;
-+ }
-+
-+ hci_conn_hold(acl);
-+
-+ if (acl->state == BT_OPEN || acl->state == BT_CLOSED)
-+ hci_acl_connect(acl);
-+
-+ if (type == SCO_LINK) {
-+ struct hci_conn *sco;
-+
-+ if (!(sco = conn_hash_lookup_ba(hdev, SCO_LINK, dst))) {
-+ if (!(sco = hci_conn_add(hdev, SCO_LINK, dst))) {
-+ hci_conn_put(acl);
-+ return NULL;
-+ }
-+ }
-+ acl->link = sco;
-+ sco->link = acl;
-+
-+ hci_conn_hold(sco);
-+
-+ if (acl->state == BT_CONNECTED &&
-+ (sco->state == BT_OPEN || sco->state == BT_CLOSED))
-+ hci_add_sco(sco, acl->handle);
-+
-+ return sco;
-+ } else {
-+ return acl;
-+ }
-+}
-+
-+/* Authenticate remote device */
-+int hci_conn_auth(struct hci_conn *conn)
-+{
-+ BT_DBG("conn %p", conn);
-+
-+ if (conn->link_mode & HCI_LM_AUTH)
-+ return 1;
-+
-+ if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
-+ auth_requested_cp ar;
-+ ar.handle = __cpu_to_le16(conn->handle);
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_AUTH_REQUESTED,
-+ AUTH_REQUESTED_CP_SIZE, &ar);
-+ }
-+ return 0;
-+}
-+
-+/* Enable encryption */
-+int hci_conn_encrypt(struct hci_conn *conn)
-+{
-+ BT_DBG("conn %p", conn);
-+
-+ if (conn->link_mode & HCI_LM_ENCRYPT)
-+ return 1;
-+
-+ if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
-+ return 0;
-+
-+ if (hci_conn_auth(conn)) {
-+ set_conn_encrypt_cp ce;
-+ ce.handle = __cpu_to_le16(conn->handle);
-+ ce.encrypt = 1;
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_SET_CONN_ENCRYPT,
-+ SET_CONN_ENCRYPT_CP_SIZE, &ce);
-+ }
-+ return 0;
-+}
-+
-+/* Drop all connection on the device */
-+void hci_conn_hash_flush(struct hci_dev *hdev)
-+{
-+ struct conn_hash *h = &hdev->conn_hash;
-+ struct list_head *p;
-+
-+ BT_DBG("hdev %s", hdev->name);
-+
-+ p = h->list.next;
-+ while (p != &h->list) {
-+ struct hci_conn *c;
-+
-+ c = list_entry(p, struct hci_conn, list);
-+ p = p->next;
-+
-+ c->state = BT_CLOSED;
-+
-+ hci_proto_disconn_ind(c, 0x16);
-+ hci_conn_del(c);
-+ }
-+}
-+
-+int hci_get_conn_list(unsigned long arg)
-+{
-+ struct hci_conn_list_req req, *cl;
-+ struct hci_conn_info *ci;
-+ struct hci_dev *hdev;
-+ struct list_head *p;
-+ int n = 0, size, err;
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ if (!req.conn_num || req.conn_num > (PAGE_SIZE * 2) / sizeof(*ci))
-+ return -EINVAL;
-+
-+ size = sizeof(req) + req.conn_num * sizeof(*ci);
-+
-+ if (!(cl = (void *) kmalloc(size, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ if (!(hdev = hci_dev_get(req.dev_id))) {
-+ kfree(cl);
-+ return -ENODEV;
-+ }
-+
-+ ci = cl->conn_info;
-+
-+ hci_dev_lock_bh(hdev);
-+ list_for_each(p, &hdev->conn_hash.list) {
-+ register struct hci_conn *c;
-+ c = list_entry(p, struct hci_conn, list);
-+
-+ bacpy(&(ci + n)->bdaddr, &c->dst);
-+ (ci + n)->handle = c->handle;
-+ (ci + n)->type = c->type;
-+ (ci + n)->out = c->out;
-+ (ci + n)->state = c->state;
-+ (ci + n)->link_mode = c->link_mode;
-+ if (++n >= req.conn_num)
-+ break;
-+ }
-+ hci_dev_unlock_bh(hdev);
-+
-+ cl->dev_id = hdev->id;
-+ cl->conn_num = n;
-+ size = sizeof(req) + n * sizeof(*ci);
-+
-+ hci_dev_put(hdev);
-+
-+ err = copy_to_user((void *) arg, cl, size);
-+ kfree(cl);
-+
-+ return err ? -EFAULT : 0;
-+}
-+
-+int hci_get_conn_info(struct hci_dev *hdev, unsigned long arg)
-+{
-+ struct hci_conn_info_req req;
-+ struct hci_conn_info ci;
-+ struct hci_conn *conn;
-+ char *ptr = (void *) arg + sizeof(req);
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ hci_dev_lock_bh(hdev);
-+ conn = conn_hash_lookup_ba(hdev, req.type, &req.bdaddr);
-+ if (conn) {
-+ bacpy(&ci.bdaddr, &conn->dst);
-+ ci.handle = conn->handle;
-+ ci.type = conn->type;
-+ ci.out = conn->out;
-+ ci.state = conn->state;
-+ ci.link_mode = conn->link_mode;
-+ }
-+ hci_dev_unlock_bh(hdev);
-+
-+ if (!conn)
-+ return -ENOENT;
-+
-+ return copy_to_user(ptr, &ci, sizeof(ci)) ? -EFAULT : 0;
-+}
-diff -urN linux-2.4.18/net/bluetooth/hci_core.c linux-2.4.18-mh15/net/bluetooth/hci_core.c
---- linux-2.4.18/net/bluetooth/hci_core.c 2001-11-09 23:21:21.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hci_core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,11 +25,12 @@
- /*
- * BlueZ HCI Core.
- *
-- * $Id: hci_core.c,v 1.22 2001/08/03 04:19:50 maxk Exp $
-+ * $Id: hci_core.c,v 1.14 2002/08/26 16:57:57 maxk Exp $
- */
-
- #include <linux/config.h>
- #include <linux/module.h>
-+#include <linux/kmod.h>
-
- #include <linux/types.h>
- #include <linux/errno.h>
-@@ -50,12 +51,11 @@
- #include <asm/unaligned.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
-
- #ifndef HCI_CORE_DEBUG
--#undef DBG
--#define DBG( A... )
-+#undef BT_DBG
-+#define BT_DBG( A... )
- #endif
-
- static void hci_cmd_task(unsigned long arg);
-@@ -63,279 +63,69 @@
- static void hci_tx_task(unsigned long arg);
- static void hci_notify(struct hci_dev *hdev, int event);
-
--static rwlock_t hci_task_lock = RW_LOCK_UNLOCKED;
-+rwlock_t hci_task_lock = RW_LOCK_UNLOCKED;
-
- /* HCI device list */
--struct hci_dev *hdev_list[HCI_MAX_DEV];
--spinlock_t hdev_list_lock;
--#define GET_HDEV(a) (hdev_list[a])
--
--/* HCI protocol list */
--struct hci_proto *hproto_list[HCI_MAX_PROTO];
--#define GET_HPROTO(a) (hproto_list[a])
-+LIST_HEAD(hdev_list);
-+rwlock_t hdev_list_lock = RW_LOCK_UNLOCKED;
-
--/* HCI notifiers list */
--struct notifier_block *hci_dev_notifier;
--
--/* HCI device notifications */
--int hci_register_notifier(struct notifier_block *nb)
--{
-- int err, i;
-- struct hci_dev *hdev;
--
-- if ((err = notifier_chain_register(&hci_dev_notifier, nb)))
-- return err;
--
-- /* Notify about already registered devices */
-- spin_lock(&hdev_list_lock);
-- for (i = 0; i < HCI_MAX_DEV; i++) {
-- if (!(hdev = GET_HDEV(i)))
-- continue;
-- if (hdev->flags & HCI_UP)
-- (*nb->notifier_call)(nb, HCI_DEV_UP, hdev);
-- }
-- spin_unlock(&hdev_list_lock);
--
-- return 0;
--}
--
--int hci_unregister_notifier(struct notifier_block *nb)
--{
-- return notifier_chain_unregister(&hci_dev_notifier, nb);
--}
--
--static inline void hci_notify(struct hci_dev *hdev, int event)
--{
-- notifier_call_chain(&hci_dev_notifier, event, hdev);
--}
--
--/* Get HCI device by index (device is locked on return)*/
--struct hci_dev *hci_dev_get(int index)
--{
-- struct hci_dev *hdev;
-- DBG("%d", index);
--
-- if (index < 0 || index >= HCI_MAX_DEV)
-- return NULL;
--
-- spin_lock(&hdev_list_lock);
-- if ((hdev = GET_HDEV(index)))
-- hci_dev_hold(hdev);
-- spin_unlock(&hdev_list_lock);
--
-- return hdev;
--}
--
--/* Flush inquiry cache */
--void inquiry_cache_flush(struct inquiry_cache *cache)
--{
-- struct inquiry_entry *next = cache->list, *e;
--
-- DBG("cache %p", cache);
--
-- cache->list = NULL;
-- while ((e = next)) {
-- next = e->next;
-- kfree(e);
-- }
--}
--
--/* Lookup by bdaddr.
-- * Cache must be locked. */
--static struct inquiry_entry * __inquiry_cache_lookup(struct inquiry_cache *cache, bdaddr_t *bdaddr)
--{
-- struct inquiry_entry *e;
--
-- DBG("cache %p, %s", cache, batostr(bdaddr));
--
-- for (e = cache->list; e; e = e->next)
-- if (!bacmp(&e->info.bdaddr, bdaddr))
-- break;
--
-- return e;
--}
--
--static void inquiry_cache_update(struct inquiry_cache *cache, inquiry_info *info)
--{
-- struct inquiry_entry *e;
--
-- DBG("cache %p, %s", cache, batostr(&info->bdaddr));
--
-- inquiry_cache_lock(cache);
--
-- if (!(e = __inquiry_cache_lookup(cache, &info->bdaddr))) {
-- /* Entry not in the cache. Add new one. */
-- if (!(e = kmalloc(sizeof(struct inquiry_entry), GFP_ATOMIC)))
-- goto unlock;
-- memset(e, 0, sizeof(struct inquiry_entry));
-- e->next = cache->list;
-- cache->list = e;
-- }
--
-- memcpy(&e->info, info, sizeof(inquiry_info));
-- e->timestamp = jiffies;
-- cache->timestamp = jiffies;
--unlock:
-- inquiry_cache_unlock(cache);
--}
--
--static int inquiry_cache_dump(struct inquiry_cache *cache, int num, __u8 *buf)
--{
-- inquiry_info *info = (inquiry_info *) buf;
-- struct inquiry_entry *e;
-- int copied = 0;
-+/* HCI protocols */
-+#define HCI_MAX_PROTO 2
-+struct hci_proto *hci_proto[HCI_MAX_PROTO];
-
-- inquiry_cache_lock(cache);
--
-- for (e = cache->list; e && copied < num; e = e->next, copied++)
-- memcpy(info++, &e->info, sizeof(inquiry_info));
-+/* HCI notifiers list */
-+static struct notifier_block *hci_notifier;
-
-- inquiry_cache_unlock(cache);
-
-- DBG("cache %p, copied %d", cache, copied);
-- return copied;
--}
-+/* ---- HCI notifications ---- */
-
--/* --------- BaseBand connections --------- */
--static struct hci_conn *hci_conn_add(struct hci_dev *hdev, __u16 handle, __u8 type, bdaddr_t *dst)
-+int hci_register_notifier(struct notifier_block *nb)
- {
-- struct hci_conn *conn;
--
-- DBG("%s handle %d dst %s", hdev->name, handle, batostr(dst));
--
-- if ( conn_hash_lookup(&hdev->conn_hash, handle)) {
-- ERR("%s handle 0x%x already exists", hdev->name, handle);
-- return NULL;
-- }
--
-- if (!(conn = kmalloc(sizeof(struct hci_conn), GFP_ATOMIC)))
-- return NULL;
-- memset(conn, 0, sizeof(struct hci_conn));
--
-- bacpy(&conn->dst, dst);
-- conn->handle = handle;
-- conn->type = type;
-- conn->hdev = hdev;
--
-- skb_queue_head_init(&conn->data_q);
--
-- hci_dev_hold(hdev);
-- conn_hash_add(&hdev->conn_hash, handle, conn);
--
-- return conn;
-+ return notifier_chain_register(&hci_notifier, nb);
- }
-
--static int hci_conn_del(struct hci_dev *hdev, struct hci_conn *conn)
-+int hci_unregister_notifier(struct notifier_block *nb)
- {
-- DBG("%s conn %p handle %d", hdev->name, conn, conn->handle);
--
-- conn_hash_del(&hdev->conn_hash, conn);
-- hci_dev_put(hdev);
--
-- /* Unacked frames */
-- hdev->acl_cnt += conn->sent;
--
-- skb_queue_purge(&conn->data_q);
--
-- kfree(conn);
-- return 0;
-+ return notifier_chain_unregister(&hci_notifier, nb);
- }
-
--/* Drop all connection on the device */
--static void hci_conn_hash_flush(struct hci_dev *hdev)
-+void hci_notify(struct hci_dev *hdev, int event)
- {
-- struct conn_hash *h = &hdev->conn_hash;
-- struct hci_proto *hp;
-- struct list_head *p;
--
-- DBG("hdev %s", hdev->name);
--
-- p = h->list.next;
-- while (p != &h->list) {
-- struct hci_conn *c;
--
-- c = list_entry(p, struct hci_conn, list);
-- p = p->next;
--
-- if (c->type == ACL_LINK) {
-- /* ACL link notify L2CAP layer */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->disconn_ind)
-- hp->disconn_ind(c, 0x16);
-- } else {
-- /* SCO link (no notification) */
-- }
--
-- hci_conn_del(hdev, c);
-- }
-+ notifier_call_chain(&hci_notifier, event, hdev);
- }
-
--int hci_connect(struct hci_dev *hdev, bdaddr_t *bdaddr)
--{
-- struct inquiry_cache *cache = &hdev->inq_cache;
-- struct inquiry_entry *e;
-- create_conn_cp cc;
-- __u16 clock_offset;
--
-- DBG("%s bdaddr %s", hdev->name, batostr(bdaddr));
--
-- if (!(hdev->flags & HCI_UP))
-- return -ENODEV;
--
-- inquiry_cache_lock_bh(cache);
--
-- if (!(e = __inquiry_cache_lookup(cache, bdaddr)) || inquiry_entry_age(e) > INQUIRY_ENTRY_AGE_MAX) {
-- cc.pscan_rep_mode = 0;
-- cc.pscan_mode = 0;
-- clock_offset = 0;
-- } else {
-- cc.pscan_rep_mode = e->info.pscan_rep_mode;
-- cc.pscan_mode = e->info.pscan_mode;
-- clock_offset = __le16_to_cpu(e->info.clock_offset) & 0x8000;
-- }
--
-- inquiry_cache_unlock_bh(cache);
--
-- bacpy(&cc.bdaddr, bdaddr);
-- cc.pkt_type = __cpu_to_le16(hdev->pkt_type);
-- cc.clock_offset = __cpu_to_le16(clock_offset);
--
-- if (lmp_rswitch_capable(hdev))
-- cc.role_switch = 0x01;
-- else
-- cc.role_switch = 0x00;
--
-- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CREATE_CONN, CREATE_CONN_CP_SIZE, &cc);
-+/* ---- HCI hotplug support ---- */
-
-- return 0;
--}
-+#ifdef CONFIG_HOTPLUG
-
--int hci_disconnect(struct hci_conn *conn, __u8 reason)
-+static int hci_run_hotplug(char *dev, char *action)
- {
-- disconnect_cp dc;
--
-- DBG("conn %p handle %d", conn, conn->handle);
-+ char *argv[3], *envp[5], dstr[20], astr[32];
-
-- dc.handle = __cpu_to_le16(conn->handle);
-- dc.reason = reason;
-- hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_DISCONNECT, DISCONNECT_CP_SIZE, &dc);
-+ sprintf(dstr, "DEVICE=%s", dev);
-+ sprintf(astr, "ACTION=%s", action);
-
-- return 0;
--}
-+ argv[0] = hotplug_path;
-+ argv[1] = "bluetooth";
-+ argv[2] = NULL;
-
--/* --------- HCI request handling ------------ */
--static inline void hci_req_lock(struct hci_dev *hdev)
--{
-- down(&hdev->req_lock);
-+ envp[0] = "HOME=/";
-+ envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
-+ envp[2] = dstr;
-+ envp[3] = astr;
-+ envp[4] = NULL;
-+
-+ return call_usermodehelper(argv[0], argv, envp);
- }
-+#else
-+#define hci_run_hotplug(A...)
-+#endif
-
--static inline void hci_req_unlock(struct hci_dev *hdev)
--{
-- up(&hdev->req_lock);
--}
-+/* ---- HCI requests ---- */
-
--static inline void hci_req_complete(struct hci_dev *hdev, int result)
-+void hci_req_complete(struct hci_dev *hdev, int result)
- {
-- DBG("%s result 0x%2.2x", hdev->name, result);
-+ BT_DBG("%s result 0x%2.2x", hdev->name, result);
-
- if (hdev->req_status == HCI_REQ_PEND) {
- hdev->req_result = result;
-@@ -344,9 +134,9 @@
- }
- }
-
--static inline void hci_req_cancel(struct hci_dev *hdev, int err)
-+void hci_req_cancel(struct hci_dev *hdev, int err)
- {
-- DBG("%s err 0x%2.2x", hdev->name, err);
-+ BT_DBG("%s err 0x%2.2x", hdev->name, err);
-
- if (hdev->req_status == HCI_REQ_PEND) {
- hdev->req_result = err;
-@@ -356,23 +146,22 @@
- }
-
- /* Execute request and wait for completion. */
--static int __hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt),
-- unsigned long opt, __u32 timeout)
-+static int __hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt), unsigned long opt, __u32 timeout)
- {
- DECLARE_WAITQUEUE(wait, current);
- int err = 0;
-
-- DBG("%s start", hdev->name);
-+ BT_DBG("%s start", hdev->name);
-
- hdev->req_status = HCI_REQ_PEND;
-
- add_wait_queue(&hdev->req_wait_q, &wait);
-- current->state = TASK_INTERRUPTIBLE;
-+ set_current_state(TASK_INTERRUPTIBLE);
-
- req(hdev, opt);
- schedule_timeout(timeout);
-
-- current->state = TASK_RUNNING;
-+ set_current_state(TASK_RUNNING);
- remove_wait_queue(&hdev->req_wait_q, &wait);
-
- if (signal_pending(current))
-@@ -394,7 +183,7 @@
-
- hdev->req_status = hdev->req_result = 0;
-
-- DBG("%s end: err %d", hdev->name, err);
-+ BT_DBG("%s end: err %d", hdev->name, err);
-
- return err;
- }
-@@ -412,10 +201,9 @@
- return ret;
- }
-
--/* --------- HCI requests ---------- */
- static void hci_reset_req(struct hci_dev *hdev, unsigned long opt)
- {
-- DBG("%s %ld", hdev->name, opt);
-+ BT_DBG("%s %ld", hdev->name, opt);
-
- /* Reset device */
- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_RESET, 0, NULL);
-@@ -423,27 +211,44 @@
-
- static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
- {
-- set_event_flt_cp ec;
-+ set_event_flt_cp ef;
- __u16 param;
-
-- DBG("%s %ld", hdev->name, opt);
-+ BT_DBG("%s %ld", hdev->name, opt);
-
- /* Mandatory initialization */
-
-+ /* Reset */
-+ if (test_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks))
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_RESET, 0, NULL);
-+
- /* Read Local Supported Features */
- hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_LOCAL_FEATURES, 0, NULL);
-
- /* Read Buffer Size (ACL mtu, max pkt, etc.) */
- hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_BUFFER_SIZE, 0, NULL);
-
-+#if 0
-+ /* Host buffer size */
-+ {
-+ host_buffer_size_cp bs;
-+ bs.acl_mtu = __cpu_to_le16(HCI_MAX_ACL_SIZE);
-+ bs.sco_mtu = HCI_MAX_SCO_SIZE;
-+ bs.acl_max_pkt = __cpu_to_le16(0xffff);
-+ bs.sco_max_pkt = __cpu_to_le16(0xffff);
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_HOST_BUFFER_SIZE,
-+ HOST_BUFFER_SIZE_CP_SIZE, &bs);
-+ }
-+#endif
-+
- /* Read BD Address */
- hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_BD_ADDR, 0, NULL);
-
- /* Optional initialization */
-
- /* Clear Event Filters */
-- ec.flt_type = FLT_CLEAR_ALL;
-- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_SET_EVENT_FLT, 1, &ec);
-+ ef.flt_type = FLT_CLEAR_ALL;
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_SET_EVENT_FLT, 1, &ef);
-
- /* Page timeout ~20 secs */
- param = __cpu_to_le16(0x8000);
-@@ -458,7 +263,7 @@
- {
- __u8 scan = opt;
-
-- DBG("%s %x", hdev->name, scan);
-+ BT_DBG("%s %x", hdev->name, scan);
-
- /* Inquiry and Page scans */
- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE, 1, &scan);
-@@ -468,116 +273,273 @@
- {
- __u8 auth = opt;
-
-- DBG("%s %x", hdev->name, auth);
-+ BT_DBG("%s %x", hdev->name, auth);
-
- /* Authentication */
- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE, 1, &auth);
- }
-
--static void hci_inq_req(struct hci_dev *hdev, unsigned long opt)
-+static void hci_encrypt_req(struct hci_dev *hdev, unsigned long opt)
- {
-- struct hci_inquiry_req *ir = (struct hci_inquiry_req *) opt;
-- inquiry_cp ic;
-+ __u8 encrypt = opt;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s %x", hdev->name, encrypt);
-
-- /* Start Inquiry */
-- memcpy(&ic.lap, &ir->lap, 3);
-- ic.lenght = ir->length;
-- ic.num_rsp = ir->num_rsp;
-- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_INQUIRY, INQUIRY_CP_SIZE, &ic);
-+ /* Authentication */
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_ENCRYPT_MODE, 1, &encrypt);
- }
-
--/* HCI ioctl helpers */
--int hci_dev_open(__u16 dev)
-+/* Get HCI device by index.
-+ * Device is locked on return. */
-+struct hci_dev *hci_dev_get(int index)
- {
- struct hci_dev *hdev;
-- int ret = 0;
--
-- if (!(hdev = hci_dev_get(dev)))
-- return -ENODEV;
-+ struct list_head *p;
-
-- DBG("%s %p", hdev->name, hdev);
-+ BT_DBG("%d", index);
-
-- hci_req_lock(hdev);
-+ if (index < 0)
-+ return NULL;
-
-- if (hdev->flags & HCI_UP) {
-- ret = -EALREADY;
-- goto done;
-+ read_lock(&hdev_list_lock);
-+ list_for_each(p, &hdev_list) {
-+ hdev = list_entry(p, struct hci_dev, list);
-+ if (hdev->id == index) {
-+ hci_dev_hold(hdev);
-+ goto done;
-+ }
- }
-+ hdev = NULL;
-+done:
-+ read_unlock(&hdev_list_lock);
-+ return hdev;
-+}
-
-- if (hdev->open(hdev)) {
-- ret = -EIO;
-- goto done;
-- }
-+/* ---- Inquiry support ---- */
-+void inquiry_cache_flush(struct hci_dev *hdev)
-+{
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ struct inquiry_entry *next = cache->list, *e;
-
-- if (hdev->flags & HCI_NORMAL) {
-- atomic_set(&hdev->cmd_cnt, 1);
-- hdev->flags |= HCI_INIT;
-+ BT_DBG("cache %p", cache);
-
-- //__hci_request(hdev, hci_reset_req, 0, HZ);
-- ret = __hci_request(hdev, hci_init_req, 0, HCI_INIT_TIMEOUT);
--
-- hdev->flags &= ~HCI_INIT;
-+ cache->list = NULL;
-+ while ((e = next)) {
-+ next = e->next;
-+ kfree(e);
- }
-+}
-
-- if (!ret) {
-- hdev->flags |= HCI_UP;
-- hci_notify(hdev, HCI_DEV_UP);
-- } else {
-- /* Init failed, cleanup */
-- tasklet_kill(&hdev->rx_task);
-- tasklet_kill(&hdev->tx_task);
-- tasklet_kill(&hdev->cmd_task);
-+struct inquiry_entry *inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr)
-+{
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ struct inquiry_entry *e;
-
-- skb_queue_purge(&hdev->cmd_q);
-- skb_queue_purge(&hdev->rx_q);
-+ BT_DBG("cache %p, %s", cache, batostr(bdaddr));
-
-- if (hdev->flush)
-- hdev->flush(hdev);
-+ for (e = cache->list; e; e = e->next)
-+ if (!bacmp(&e->info.bdaddr, bdaddr))
-+ break;
-+ return e;
-+}
-
-- if (hdev->sent_cmd) {
-- kfree_skb(hdev->sent_cmd);
-- hdev->sent_cmd = NULL;
-- }
-+void inquiry_cache_update(struct hci_dev *hdev, inquiry_info *info)
-+{
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ struct inquiry_entry *e;
-
-- hdev->close(hdev);
-- }
-+ BT_DBG("cache %p, %s", cache, batostr(&info->bdaddr));
-
--done:
-- hci_req_unlock(hdev);
-- hci_dev_put(hdev);
-+ if (!(e = inquiry_cache_lookup(hdev, &info->bdaddr))) {
-+ /* Entry not in the cache. Add new one. */
-+ if (!(e = kmalloc(sizeof(struct inquiry_entry), GFP_ATOMIC)))
-+ return;
-+ memset(e, 0, sizeof(struct inquiry_entry));
-+ e->next = cache->list;
-+ cache->list = e;
-+ }
-
-- return ret;
-+ memcpy(&e->info, info, sizeof(inquiry_info));
-+ e->timestamp = jiffies;
-+ cache->timestamp = jiffies;
- }
-
--int hci_dev_close(__u16 dev)
-+int inquiry_cache_dump(struct hci_dev *hdev, int num, __u8 *buf)
- {
-- struct hci_dev *hdev;
--
-- if (!(hdev = hci_dev_get(dev)))
-- return -ENODEV;
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ inquiry_info *info = (inquiry_info *) buf;
-+ struct inquiry_entry *e;
-+ int copied = 0;
-
-- DBG("%s %p", hdev->name, hdev);
-+ for (e = cache->list; e && copied < num; e = e->next, copied++)
-+ memcpy(info++, &e->info, sizeof(inquiry_info));
-
-- hci_req_cancel(hdev, ENODEV);
-- hci_req_lock(hdev);
-+ BT_DBG("cache %p, copied %d", cache, copied);
-+ return copied;
-+}
-
-- if (!(hdev->flags & HCI_UP))
-- goto done;
-+static void hci_inq_req(struct hci_dev *hdev, unsigned long opt)
-+{
-+ struct hci_inquiry_req *ir = (struct hci_inquiry_req *) opt;
-+ inquiry_cp ic;
-
-- /* Kill RX and TX tasks */
-- tasklet_kill(&hdev->rx_task);
-- tasklet_kill(&hdev->tx_task);
-+ BT_DBG("%s", hdev->name);
-
-- inquiry_cache_flush(&hdev->inq_cache);
-+ if (test_bit(HCI_INQUIRY, &hdev->flags))
-+ return;
-
-- hci_conn_hash_flush(hdev);
-+ /* Start Inquiry */
-+ memcpy(&ic.lap, &ir->lap, 3);
-+ ic.length = ir->length;
-+ ic.num_rsp = ir->num_rsp;
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_INQUIRY, INQUIRY_CP_SIZE, &ic);
-+}
-
-- /* Clear flags */
-- hdev->flags &= HCI_SOCK;
-- hdev->flags |= HCI_NORMAL;
-+int hci_inquiry(unsigned long arg)
-+{
-+ struct hci_inquiry_req ir;
-+ struct hci_dev *hdev;
-+ int err = 0, do_inquiry = 0, max_rsp;
-+ long timeo;
-+ __u8 *buf, *ptr;
-
-+ ptr = (void *) arg;
-+ if (copy_from_user(&ir, ptr, sizeof(ir)))
-+ return -EFAULT;
-+
-+ if (!(hdev = hci_dev_get(ir.dev_id)))
-+ return -ENODEV;
-+
-+ hci_dev_lock_bh(hdev);
-+ if (inquiry_cache_age(hdev) > INQUIRY_CACHE_AGE_MAX ||
-+ inquiry_cache_empty(hdev) ||
-+ ir.flags & IREQ_CACHE_FLUSH) {
-+ inquiry_cache_flush(hdev);
-+ do_inquiry = 1;
-+ }
-+ hci_dev_unlock_bh(hdev);
-+
-+ timeo = ir.length * 2 * HZ;
-+ if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0)
-+ goto done;
-+
-+ /* for unlimited number of responses we will use buffer with 255 entries */
-+ max_rsp = (ir.num_rsp == 0) ? 255 : ir.num_rsp;
-+
-+ /* cache_dump can't sleep. Therefore we allocate temp buffer and then
-+ * copy it to the user space.
-+ */
-+ if (!(buf = kmalloc(sizeof(inquiry_info) * max_rsp, GFP_KERNEL))) {
-+ err = -ENOMEM;
-+ goto done;
-+ }
-+
-+ hci_dev_lock_bh(hdev);
-+ ir.num_rsp = inquiry_cache_dump(hdev, max_rsp, buf);
-+ hci_dev_unlock_bh(hdev);
-+
-+ BT_DBG("num_rsp %d", ir.num_rsp);
-+
-+ if (!verify_area(VERIFY_WRITE, ptr, sizeof(ir) +
-+ (sizeof(inquiry_info) * ir.num_rsp))) {
-+ copy_to_user(ptr, &ir, sizeof(ir));
-+ ptr += sizeof(ir);
-+ copy_to_user(ptr, buf, sizeof(inquiry_info) * ir.num_rsp);
-+ } else
-+ err = -EFAULT;
-+
-+ kfree(buf);
-+
-+done:
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
-+/* ---- HCI ioctl helpers ---- */
-+
-+int hci_dev_open(__u16 dev)
-+{
-+ struct hci_dev *hdev;
-+ int ret = 0;
-+
-+ if (!(hdev = hci_dev_get(dev)))
-+ return -ENODEV;
-+
-+ BT_DBG("%s %p", hdev->name, hdev);
-+
-+ hci_req_lock(hdev);
-+
-+ if (test_bit(HCI_UP, &hdev->flags)) {
-+ ret = -EALREADY;
-+ goto done;
-+ }
-+
-+ if (hdev->open(hdev)) {
-+ ret = -EIO;
-+ goto done;
-+ }
-+
-+ if (!test_bit(HCI_RAW, &hdev->flags)) {
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ set_bit(HCI_INIT, &hdev->flags);
-+
-+ //__hci_request(hdev, hci_reset_req, 0, HZ);
-+ ret = __hci_request(hdev, hci_init_req, 0, HCI_INIT_TIMEOUT);
-+
-+ clear_bit(HCI_INIT, &hdev->flags);
-+ }
-+
-+ if (!ret) {
-+ set_bit(HCI_UP, &hdev->flags);
-+ hci_notify(hdev, HCI_DEV_UP);
-+ } else {
-+ /* Init failed, cleanup */
-+ tasklet_kill(&hdev->rx_task);
-+ tasklet_kill(&hdev->tx_task);
-+ tasklet_kill(&hdev->cmd_task);
-+
-+ skb_queue_purge(&hdev->cmd_q);
-+ skb_queue_purge(&hdev->rx_q);
-+
-+ if (hdev->flush)
-+ hdev->flush(hdev);
-+
-+ if (hdev->sent_cmd) {
-+ kfree_skb(hdev->sent_cmd);
-+ hdev->sent_cmd = NULL;
-+ }
-+
-+ hdev->close(hdev);
-+ hdev->flags = 0;
-+ }
-+
-+done:
-+ hci_req_unlock(hdev);
-+ hci_dev_put(hdev);
-+ return ret;
-+}
-+
-+static int hci_dev_do_close(struct hci_dev *hdev)
-+{
-+ BT_DBG("%s %p", hdev->name, hdev);
-+
-+ hci_req_cancel(hdev, ENODEV);
-+ hci_req_lock(hdev);
-+
-+ if (!test_and_clear_bit(HCI_UP, &hdev->flags)) {
-+ hci_req_unlock(hdev);
-+ return 0;
-+ }
-+
-+ /* Kill RX and TX tasks */
-+ tasklet_kill(&hdev->rx_task);
-+ tasklet_kill(&hdev->tx_task);
-+
-+ hci_dev_lock_bh(hdev);
-+ inquiry_cache_flush(hdev);
-+ hci_conn_hash_flush(hdev);
-+ hci_dev_unlock_bh(hdev);
-+
- hci_notify(hdev, HCI_DEV_DOWN);
-
- if (hdev->flush)
-@@ -586,9 +548,9 @@
- /* Reset device */
- skb_queue_purge(&hdev->cmd_q);
- atomic_set(&hdev->cmd_cnt, 1);
-- hdev->flags |= HCI_INIT;
-- __hci_request(hdev, hci_reset_req, 0, HZ);
-- hdev->flags &= ~HCI_INIT;
-+ set_bit(HCI_INIT, &hdev->flags);
-+ __hci_request(hdev, hci_reset_req, 0, HZ/4);
-+ clear_bit(HCI_INIT, &hdev->flags);
-
- /* Kill cmd task */
- tasklet_kill(&hdev->cmd_task);
-@@ -605,17 +567,28 @@
- }
-
- /* After this point our queues are empty
-- * and no tasks are scheduled.
-- */
-+ * and no tasks are scheduled. */
- hdev->close(hdev);
-
--done:
-- hci_req_unlock(hdev);
-- hci_dev_put(hdev);
-+ /* Clear flags */
-+ hdev->flags = 0;
-
-+ hci_req_unlock(hdev);
- return 0;
- }
-
-+int hci_dev_close(__u16 dev)
-+{
-+ struct hci_dev *hdev;
-+ int err;
-+
-+ if (!(hdev = hci_dev_get(dev)))
-+ return -ENODEV;
-+ err = hci_dev_do_close(hdev);
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
- int hci_dev_reset(__u16 dev)
- {
- struct hci_dev *hdev;
-@@ -627,16 +600,17 @@
- hci_req_lock(hdev);
- tasklet_disable(&hdev->tx_task);
-
-- if (!(hdev->flags & HCI_UP))
-+ if (!test_bit(HCI_UP, &hdev->flags))
- goto done;
-
- /* Drop queues */
- skb_queue_purge(&hdev->rx_q);
- skb_queue_purge(&hdev->cmd_q);
-
-- inquiry_cache_flush(&hdev->inq_cache);
--
-+ hci_dev_lock_bh(hdev);
-+ inquiry_cache_flush(hdev);
- hci_conn_hash_flush(hdev);
-+ hci_dev_unlock_bh(hdev);
-
- if (hdev->flush)
- hdev->flush(hdev);
-@@ -650,7 +624,6 @@
- tasklet_enable(&hdev->tx_task);
- hci_req_unlock(hdev);
- hci_dev_put(hdev);
--
- return ret;
- }
-
-@@ -669,30 +642,11 @@
- return ret;
- }
-
--int hci_dev_setauth(unsigned long arg)
--{
-- struct hci_dev *hdev;
-- struct hci_dev_req dr;
-- int ret = 0;
--
-- if (copy_from_user(&dr, (void *) arg, sizeof(dr)))
-- return -EFAULT;
--
-- if (!(hdev = hci_dev_get(dr.dev_id)))
-- return -ENODEV;
--
-- ret = hci_request(hdev, hci_auth_req, dr.dev_opt, HCI_INIT_TIMEOUT);
--
-- hci_dev_put(hdev);
--
-- return ret;
--}
--
--int hci_dev_setscan(unsigned long arg)
-+int hci_dev_cmd(unsigned int cmd, unsigned long arg)
- {
- struct hci_dev *hdev;
- struct hci_dev_req dr;
-- int ret = 0;
-+ int err = 0;
-
- if (copy_from_user(&dr, (void *) arg, sizeof(dr)))
- return -EFAULT;
-@@ -700,75 +654,105 @@
- if (!(hdev = hci_dev_get(dr.dev_id)))
- return -ENODEV;
-
-- ret = hci_request(hdev, hci_scan_req, dr.dev_opt, HCI_INIT_TIMEOUT);
--
-- hci_dev_put(hdev);
-+ switch (cmd) {
-+ case HCISETAUTH:
-+ err = hci_request(hdev, hci_auth_req, dr.dev_opt, HCI_INIT_TIMEOUT);
-+ break;
-
-- return ret;
--}
-+ case HCISETENCRYPT:
-+ if (!lmp_encrypt_capable(hdev)) {
-+ err = -EOPNOTSUPP;
-+ break;
-+ }
-
--int hci_dev_setptype(unsigned long arg)
--{
-- struct hci_dev *hdev;
-- struct hci_dev_req dr;
-- int ret = 0;
-+ if (!test_bit(HCI_AUTH, &hdev->flags)) {
-+ /* Auth must be enabled first */
-+ err = hci_request(hdev, hci_auth_req,
-+ dr.dev_opt, HCI_INIT_TIMEOUT);
-+ if (err)
-+ break;
-+ }
-+
-+ err = hci_request(hdev, hci_encrypt_req,
-+ dr.dev_opt, HCI_INIT_TIMEOUT);
-+ break;
-+
-+ case HCISETSCAN:
-+ err = hci_request(hdev, hci_scan_req, dr.dev_opt, HCI_INIT_TIMEOUT);
-+ break;
-+
-+ case HCISETPTYPE:
-+ hdev->pkt_type = (__u16) dr.dev_opt;
-+ break;
-+
-+ case HCISETLINKPOL:
-+ hdev->link_policy = (__u16) dr.dev_opt;
-+ break;
-
-- if (copy_from_user(&dr, (void *) arg, sizeof(dr)))
-- return -EFAULT;
-+ case HCISETLINKMODE:
-+ hdev->link_mode = ((__u16) dr.dev_opt) & (HCI_LM_MASTER | HCI_LM_ACCEPT);
-+ break;
-
-- if (!(hdev = hci_dev_get(dr.dev_id)))
-- return -ENODEV;
-+ case HCISETACLMTU:
-+ hdev->acl_mtu = *((__u16 *)&dr.dev_opt + 1);
-+ hdev->acl_pkts = *((__u16 *)&dr.dev_opt + 0);
-+ break;
-
-- hdev->pkt_type = (__u16) dr.dev_opt;
-+ case HCISETSCOMTU:
-+ hdev->sco_mtu = *((__u16 *)&dr.dev_opt + 1);
-+ hdev->sco_pkts = *((__u16 *)&dr.dev_opt + 0);
-+ break;
-
-+ default:
-+ err = -EINVAL;
-+ break;
-+ }
- hci_dev_put(hdev);
--
-- return ret;
-+ return err;
- }
-
--int hci_dev_list(unsigned long arg)
-+int hci_get_dev_list(unsigned long arg)
- {
- struct hci_dev_list_req *dl;
- struct hci_dev_req *dr;
-- struct hci_dev *hdev;
-- int i, n, size;
-+ struct list_head *p;
-+ int n = 0, size, err;
- __u16 dev_num;
-
- if (get_user(dev_num, (__u16 *) arg))
- return -EFAULT;
-
-- /* Avoid long loop, overflow */
-- if (dev_num > 2048)
-+ if (!dev_num || dev_num > (PAGE_SIZE * 2) / sizeof(*dr))
- return -EINVAL;
--
-- size = dev_num * sizeof(struct hci_dev_req) + sizeof(__u16);
-
-- if (verify_area(VERIFY_WRITE, (void *) arg, size))
-- return -EFAULT;
-+ size = sizeof(*dl) + dev_num * sizeof(*dr);
-
- if (!(dl = kmalloc(size, GFP_KERNEL)))
- return -ENOMEM;
-+
- dr = dl->dev_req;
-
-- spin_lock_bh(&hdev_list_lock);
-- for (i = 0, n = 0; i < HCI_MAX_DEV && n < dev_num; i++) {
-- if ((hdev = hdev_list[i])) {
-- (dr + n)->dev_id = hdev->id;
-- (dr + n)->dev_opt = hdev->flags;
-- n++;
-- }
-+ read_lock_bh(&hdev_list_lock);
-+ list_for_each(p, &hdev_list) {
-+ struct hci_dev *hdev;
-+ hdev = list_entry(p, struct hci_dev, list);
-+ (dr + n)->dev_id = hdev->id;
-+ (dr + n)->dev_opt = hdev->flags;
-+ if (++n >= dev_num)
-+ break;
- }
-- spin_unlock_bh(&hdev_list_lock);
-+ read_unlock_bh(&hdev_list_lock);
-
- dl->dev_num = n;
-- size = n * sizeof(struct hci_dev_req) + sizeof(__u16);
-+ size = sizeof(*dl) + n * sizeof(*dr);
-
-- copy_to_user((void *) arg, dl, size);
-+ err = copy_to_user((void *) arg, dl, size);
-+ kfree(dl);
-
-- return 0;
-+ return err ? -EFAULT : 0;
- }
-
--int hci_dev_info(unsigned long arg)
-+int hci_get_dev_info(unsigned long arg)
- {
- struct hci_dev *hdev;
- struct hci_dev_info di;
-@@ -786,9 +770,11 @@
- di.flags = hdev->flags;
- di.pkt_type = hdev->pkt_type;
- di.acl_mtu = hdev->acl_mtu;
-- di.acl_max = hdev->acl_max;
-+ di.acl_pkts = hdev->acl_pkts;
- di.sco_mtu = hdev->sco_mtu;
-- di.sco_max = hdev->sco_max;
-+ di.sco_pkts = hdev->sco_pkts;
-+ di.link_policy = hdev->link_policy;
-+ di.link_mode = hdev->link_mode;
-
- memcpy(&di.stat, &hdev->stat, sizeof(di.stat));
- memcpy(&di.features, &hdev->features, sizeof(di.features));
-@@ -801,258 +787,168 @@
- return err;
- }
-
--__u32 hci_dev_setmode(struct hci_dev *hdev, __u32 mode)
--{
-- __u32 omode = hdev->flags & HCI_MODE_MASK;
--
-- hdev->flags &= ~HCI_MODE_MASK;
-- hdev->flags |= (mode & HCI_MODE_MASK);
-
-- return omode;
--}
-+/* ---- Interface to HCI drivers ---- */
-
--__u32 hci_dev_getmode(struct hci_dev *hdev)
-+/* Register HCI device */
-+int hci_register_dev(struct hci_dev *hdev)
- {
-- return hdev->flags & HCI_MODE_MASK;
--}
-+ struct list_head *head = &hdev_list, *p;
-+ int id = 0;
-
--int hci_conn_list(unsigned long arg)
--{
-- struct hci_conn_list_req req, *cl;
-- struct hci_conn_info *ci;
-- struct hci_dev *hdev;
-- struct list_head *p;
-- int n = 0, size;
-+ BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
-
-- if (copy_from_user(&req, (void *) arg, sizeof(req)))
-- return -EFAULT;
-+ if (!hdev->open || !hdev->close || !hdev->destruct)
-+ return -EINVAL;
-
-- if (!(hdev = hci_dev_get(req.dev_id)))
-- return -ENODEV;
-+ write_lock_bh(&hdev_list_lock);
-
-- /* Set a limit to avoid overlong loops, and also numeric overflow - AC */
-- if(req.conn_num < 2048)
-- return -EINVAL;
-+ /* Find first available device id */
-+ list_for_each(p, &hdev_list) {
-+ if (list_entry(p, struct hci_dev, list)->id != id)
-+ break;
-+ head = p; id++;
-+ }
-
-- size = req.conn_num * sizeof(struct hci_conn_info) + sizeof(req);
-+ sprintf(hdev->name, "hci%d", id);
-+ hdev->id = id;
-+ list_add(&hdev->list, head);
-
-- if (!(cl = kmalloc(size, GFP_KERNEL)))
-- return -ENOMEM;
-- ci = cl->conn_info;
--
-- local_bh_disable();
-- conn_hash_lock(&hdev->conn_hash);
-- list_for_each(p, &hdev->conn_hash.list) {
-- register struct hci_conn *c;
-- c = list_entry(p, struct hci_conn, list);
-+ atomic_set(&hdev->refcnt, 1);
-+ spin_lock_init(&hdev->lock);
-+
-+ hdev->flags = 0;
-+ hdev->pkt_type = (HCI_DM1 | HCI_DH1 | HCI_HV1);
-+ hdev->link_mode = (HCI_LM_ACCEPT);
-
-- (ci + n)->handle = c->handle;
-- bacpy(&(ci + n)->bdaddr, &c->dst);
-- n++;
-- }
-- conn_hash_unlock(&hdev->conn_hash);
-- local_bh_enable();
--
-- cl->dev_id = hdev->id;
-- cl->conn_num = n;
-- size = n * sizeof(struct hci_conn_info) + sizeof(req);
-+ tasklet_init(&hdev->cmd_task, hci_cmd_task,(unsigned long) hdev);
-+ tasklet_init(&hdev->rx_task, hci_rx_task, (unsigned long) hdev);
-+ tasklet_init(&hdev->tx_task, hci_tx_task, (unsigned long) hdev);
-
-- hci_dev_put(hdev);
-+ skb_queue_head_init(&hdev->rx_q);
-+ skb_queue_head_init(&hdev->cmd_q);
-+ skb_queue_head_init(&hdev->raw_q);
-
-- if(copy_to_user((void *) arg, cl, size))
-- return -EFAULT;
-- return 0;
--}
-+ init_waitqueue_head(&hdev->req_wait_q);
-+ init_MUTEX(&hdev->req_lock);
-
--int hci_inquiry(unsigned long arg)
--{
-- struct inquiry_cache *cache;
-- struct hci_inquiry_req ir;
-- struct hci_dev *hdev;
-- int err = 0, do_inquiry = 0;
-- long timeo;
-- __u8 *buf, *ptr;
-+ inquiry_cache_init(hdev);
-
-- ptr = (void *) arg;
-- if (copy_from_user(&ir, ptr, sizeof(ir)))
-- return -EFAULT;
-+ conn_hash_init(hdev);
-
-- if (!(hdev = hci_dev_get(ir.dev_id)))
-- return -ENODEV;
-+ memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));
-
-- cache = &hdev->inq_cache;
-+ atomic_set(&hdev->promisc, 0);
-
-- inquiry_cache_lock(cache);
-- if (inquiry_cache_age(cache) > INQUIRY_CACHE_AGE_MAX || ir.flags & IREQ_CACHE_FLUSH) {
-- inquiry_cache_flush(cache);
-- do_inquiry = 1;
-- }
-- inquiry_cache_unlock(cache);
-+ MOD_INC_USE_COUNT;
-
-- /* Limit inquiry time, also avoid overflows */
-+ write_unlock_bh(&hdev_list_lock);
-
-- if(ir.length > 2048 || ir.num_rsp > 2048)
-- {
-- err = -EINVAL;
-- goto done;
-- }
-+ hci_notify(hdev, HCI_DEV_REG);
-+ hci_run_hotplug(hdev->name, "register");
-
-- timeo = ir.length * 2 * HZ;
-- if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0)
-- goto done;
-+ return id;
-+}
-
-- /* cache_dump can't sleep. Therefore we allocate temp buffer and then
-- * copy it to the user space.
-- */
-- if (!(buf = kmalloc(sizeof(inquiry_info) * ir.num_rsp, GFP_KERNEL))) {
-- err = -ENOMEM;
-- goto done;
-- }
-- ir.num_rsp = inquiry_cache_dump(cache, ir.num_rsp, buf);
-+/* Unregister HCI device */
-+int hci_unregister_dev(struct hci_dev *hdev)
-+{
-+ BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
-
-- DBG("num_rsp %d", ir.num_rsp);
-+ write_lock_bh(&hdev_list_lock);
-+ list_del(&hdev->list);
-+ write_unlock_bh(&hdev_list_lock);
-
-- if (!verify_area(VERIFY_WRITE, ptr, sizeof(ir) + (sizeof(inquiry_info) * ir.num_rsp))) {
-- copy_to_user(ptr, &ir, sizeof(ir));
-- ptr += sizeof(ir);
-- copy_to_user(ptr, buf, sizeof(inquiry_info) * ir.num_rsp);
-- } else
-- err = -EFAULT;
-+ hci_dev_do_close(hdev);
-
-- kfree(buf);
-+ hci_notify(hdev, HCI_DEV_UNREG);
-+ hci_run_hotplug(hdev->name, "unregister");
-
--done:
- hci_dev_put(hdev);
-
-- return err;
-+ MOD_DEC_USE_COUNT;
-+ return 0;
- }
-
--/* Interface to HCI drivers */
--
--/* Register HCI device */
--int hci_register_dev(struct hci_dev *hdev)
-+/* Suspend HCI device */
-+int hci_suspend_dev(struct hci_dev *hdev)
- {
-- int i;
-+ hci_notify(hdev, HCI_DEV_SUSPEND);
-+ hci_run_hotplug(hdev->name, "suspend");
-+ return 0;
-+}
-
-- DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
-+/* Resume HCI device */
-+int hci_resume_dev(struct hci_dev *hdev)
-+{
-+ hci_notify(hdev, HCI_DEV_RESUME);
-+ hci_run_hotplug(hdev->name, "resume");
-+ return 0;
-+}
-
-- /* Find free slot */
-- spin_lock_bh(&hdev_list_lock);
-- for (i = 0; i < HCI_MAX_DEV; i++) {
-- if (!hdev_list[i]) {
-- hdev_list[i] = hdev;
--
-- sprintf(hdev->name, "hci%d", i);
-- atomic_set(&hdev->refcnt, 0);
-- hdev->id = i;
-- hdev->flags = HCI_NORMAL;
--
-- hdev->pkt_type = (HCI_DM1 | HCI_DH1);
--
-- tasklet_init(&hdev->cmd_task, hci_cmd_task, (unsigned long) hdev);
-- tasklet_init(&hdev->rx_task, hci_rx_task, (unsigned long) hdev);
-- tasklet_init(&hdev->tx_task, hci_tx_task, (unsigned long) hdev);
--
-- skb_queue_head_init(&hdev->rx_q);
-- skb_queue_head_init(&hdev->cmd_q);
-- skb_queue_head_init(&hdev->raw_q);
--
-- init_waitqueue_head(&hdev->req_wait_q);
-- init_MUTEX(&hdev->req_lock);
--
-- inquiry_cache_init(&hdev->inq_cache);
--
-- conn_hash_init(&hdev->conn_hash);
--
-- memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));
--
-- hci_notify(hdev, HCI_DEV_REG);
--
-- MOD_INC_USE_COUNT;
-- break;
-- }
-- }
-- spin_unlock_bh(&hdev_list_lock);
--
-- return (i == HCI_MAX_DEV) ? -1 : i;
--}
--
--/* Unregister HCI device */
--int hci_unregister_dev(struct hci_dev *hdev)
-+/* Receive frame from HCI drivers */
-+int hci_recv_frame(struct sk_buff *skb)
- {
-- int i;
--
-- DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
--
-- if (hdev->flags & HCI_UP)
-- hci_dev_close(hdev->id);
-+ struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-
-- /* Find device slot */
-- spin_lock(&hdev_list_lock);
-- for (i = 0; i < HCI_MAX_DEV; i++) {
-- if (hdev_list[i] == hdev) {
-- hdev_list[i] = NULL;
-- MOD_DEC_USE_COUNT;
-- break;
-- }
-+ if (!hdev || (!test_bit(HCI_UP, &hdev->flags) &&
-+ !test_bit(HCI_INIT, &hdev->flags)) ) {
-+ kfree_skb(skb);
-+ return -1;
- }
-- spin_unlock(&hdev_list_lock);
-
-- hci_notify(hdev, HCI_DEV_UNREG);
--
-- /* Sleep while device is in use */
-- while (atomic_read(&hdev->refcnt)) {
-- int sleep_cnt = 100;
-+ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-
-- DBG("%s sleeping on lock %d", hdev->name, atomic_read(&hdev->refcnt));
-+ /* Incomming skb */
-+ bluez_cb(skb)->incomming = 1;
-
-- sleep_on_timeout(&hdev->req_wait_q, HZ*10);
-- if (!(--sleep_cnt))
-- break;
-- }
-+ /* Time stamp */
-+ do_gettimeofday(&skb->stamp);
-
-+ /* Queue frame for rx task */
-+ skb_queue_tail(&hdev->rx_q, skb);
-+ hci_sched_rx(hdev);
- return 0;
- }
-
--/* Interface to upper protocols */
-+/* ---- Interface to upper protocols ---- */
-
- /* Register/Unregister protocols.
-- * hci_task_lock is used to ensure that no tasks are running.
-- */
--int hci_register_proto(struct hci_proto *hproto)
-+ * hci_task_lock is used to ensure that no tasks are running. */
-+int hci_register_proto(struct hci_proto *hp)
- {
- int err = 0;
-
-- DBG("%p name %s", hproto, hproto->name);
-+ BT_DBG("%p name %s id %d", hp, hp->name, hp->id);
-
-- if (hproto->id >= HCI_MAX_PROTO)
-+ if (hp->id >= HCI_MAX_PROTO)
- return -EINVAL;
-
- write_lock_bh(&hci_task_lock);
-
-- if (!hproto_list[hproto->id])
-- hproto_list[hproto->id] = hproto;
-+ if (!hci_proto[hp->id])
-+ hci_proto[hp->id] = hp;
- else
-- err = -1;
-+ err = -EEXIST;
-
- write_unlock_bh(&hci_task_lock);
-
- return err;
- }
-
--int hci_unregister_proto(struct hci_proto *hproto)
-+int hci_unregister_proto(struct hci_proto *hp)
- {
- int err = 0;
-
-- DBG("%p name %s", hproto, hproto->name);
-+ BT_DBG("%p name %s id %d", hp, hp->name, hp->id);
-
-- if (hproto->id > HCI_MAX_PROTO)
-+ if (hp->id >= HCI_MAX_PROTO)
- return -EINVAL;
-
- write_lock_bh(&hci_task_lock);
-
-- if (hproto_list[hproto->id])
-- hproto_list[hproto->id] = NULL;
-+ if (hci_proto[hp->id])
-+ hci_proto[hp->id] = NULL;
- else
- err = -ENOENT;
-
-@@ -1070,10 +966,14 @@
- return -ENODEV;
- }
-
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+
-+ if (atomic_read(&hdev->promisc)) {
-+ /* Time stamp */
-+ do_gettimeofday(&skb->stamp);
-
-- if (hdev->flags & HCI_SOCK)
- hci_send_to_sock(hdev, skb);
-+ }
-
- /* Get rid of skb owner, prior to sending to the driver. */
- skb_orphan(skb);
-@@ -1081,128 +981,6 @@
- return hdev->send(skb);
- }
-
--/* Connection scheduler */
--static inline struct hci_conn *hci_low_sent(struct hci_dev *hdev, __u8 type, int *quote)
--{
-- struct conn_hash *h = &hdev->conn_hash;
-- struct hci_conn *conn = NULL;
-- int num = 0, min = 0xffff;
-- struct list_head *p;
--
-- conn_hash_lock(h);
-- list_for_each(p, &h->list) {
-- register struct hci_conn *c;
--
-- c = list_entry(p, struct hci_conn, list);
--
-- if (c->type != type || skb_queue_empty(&c->data_q))
-- continue;
-- num++;
--
-- if (c->sent < min) {
-- min = c->sent;
-- conn = c;
-- }
-- }
-- conn_hash_unlock(h);
--
-- if (conn) {
-- int q = hdev->acl_cnt / num;
-- *quote = q ? q : 1;
-- } else
-- *quote = 0;
--
-- DBG("conn %p quote %d", conn, *quote);
--
-- return conn;
--}
--
--static inline void hci_sched_acl(struct hci_dev *hdev)
--{
-- struct hci_conn *conn;
-- struct sk_buff *skb;
-- int quote;
--
-- DBG("%s", hdev->name);
--
-- while (hdev->acl_cnt && (conn = hci_low_sent(hdev, ACL_LINK, &quote))) {
-- while (quote && (skb = skb_dequeue(&conn->data_q))) {
-- DBG("skb %p len %d", skb, skb->len);
--
-- hci_send_frame(skb);
--
-- conn->sent++;
-- hdev->acl_cnt--;
-- quote--;
-- }
-- }
--}
--
--/* Schedule SCO */
--static inline void hci_sched_sco(struct hci_dev *hdev)
--{
-- /* FIXME: For now we queue SCO packets to the raw queue
--
-- while (hdev->sco_cnt && (skb = skb_dequeue(&conn->data_q))) {
-- hci_send_frame(skb);
-- conn->sco_sent++;
-- hdev->sco_cnt--;
-- }
-- */
--}
--
--/* Get data from the previously sent command */
--static void * hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf)
--{
-- hci_command_hdr *hc;
--
-- if (!hdev->sent_cmd)
-- return NULL;
--
-- hc = (void *) hdev->sent_cmd->data;
--
-- if (hc->opcode != __cpu_to_le16(cmd_opcode_pack(ogf, ocf)))
-- return NULL;
--
-- DBG("%s ogf 0x%x ocf 0x%x", hdev->name, ogf, ocf);
--
-- return hdev->sent_cmd->data + HCI_COMMAND_HDR_SIZE;
--}
--
--/* Send raw HCI frame */
--int hci_send_raw(struct sk_buff *skb)
--{
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
--
-- if (!hdev) {
-- kfree_skb(skb);
-- return -ENODEV;
-- }
--
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
--
-- if (hdev->flags & HCI_NORMAL) {
-- /* Queue frame according it's type */
-- switch (skb->pkt_type) {
-- case HCI_COMMAND_PKT:
-- skb_queue_tail(&hdev->cmd_q, skb);
-- hci_sched_cmd(hdev);
-- return 0;
--
-- case HCI_ACLDATA_PKT:
-- case HCI_SCODATA_PKT:
-- /* FIXME:
-- * Check header here and queue to apropriate connection.
-- */
-- break;
-- }
-- }
--
-- skb_queue_tail(&hdev->raw_q, skb);
-- hci_sched_tx(hdev);
-- return 0;
--}
--
- /* Send HCI command */
- int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void *param)
- {
-@@ -1210,10 +988,10 @@
- hci_command_hdr *hc;
- struct sk_buff *skb;
-
-- DBG("%s ogf 0x%x ocf 0x%x plen %d", hdev->name, ogf, ocf, plen);
-+ BT_DBG("%s ogf 0x%x ocf 0x%x plen %d", hdev->name, ogf, ocf, plen);
-
- if (!(skb = bluez_skb_alloc(len, GFP_ATOMIC))) {
-- ERR("%s Can't allocate memory for HCI command", hdev->name);
-+ BT_ERR("%s Can't allocate memory for HCI command", hdev->name);
- return -ENOMEM;
- }
-
-@@ -1224,7 +1002,7 @@
- if (plen)
- memcpy(skb_put(skb, plen), param, plen);
-
-- DBG("skb len %d", skb->len);
-+ BT_DBG("skb len %d", skb->len);
-
- skb->pkt_type = HCI_COMMAND_PKT;
- skb->dev = (void *) hdev;
-@@ -1234,10 +1012,28 @@
- return 0;
- }
-
-+/* Get data from the previously sent command */
-+void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf)
-+{
-+ hci_command_hdr *hc;
-+
-+ if (!hdev->sent_cmd)
-+ return NULL;
-+
-+ hc = (void *) hdev->sent_cmd->data;
-+
-+ if (hc->opcode != __cpu_to_le16(cmd_opcode_pack(ogf, ocf)))
-+ return NULL;
-+
-+ BT_DBG("%s ogf 0x%x ocf 0x%x", hdev->name, ogf, ocf);
-+
-+ return hdev->sent_cmd->data + HCI_COMMAND_HDR_SIZE;
-+}
-+
- /* Send ACL data */
- static void hci_add_acl_hdr(struct sk_buff *skb, __u16 handle, __u16 flags)
- {
-- int len = skb->len;
-+ int len = skb->len;
- hci_acl_hdr *ah;
-
- ah = (hci_acl_hdr *) skb_push(skb, HCI_ACL_HDR_SIZE);
-@@ -1252,7 +1048,7 @@
- struct hci_dev *hdev = conn->hdev;
- struct sk_buff *list;
-
-- DBG("%s conn %p flags 0x%x", hdev->name, conn, flags);
-+ BT_DBG("%s conn %p flags 0x%x", hdev->name, conn, flags);
-
- skb->dev = (void *) hdev;
- skb->pkt_type = HCI_ACLDATA_PKT;
-@@ -1260,12 +1056,12 @@
-
- if (!(list = skb_shinfo(skb)->frag_list)) {
- /* Non fragmented */
-- DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len);
-+ BT_DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len);
-
- skb_queue_tail(&conn->data_q, skb);
- } else {
- /* Fragmented */
-- DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-+ BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-
- skb_shinfo(skb)->frag_list = NULL;
-
-@@ -1280,7 +1076,7 @@
- skb->pkt_type = HCI_ACLDATA_PKT;
- hci_add_acl_hdr(skb, conn->handle, flags | ACL_CONT);
-
-- DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-+ BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-
- __skb_queue_tail(&conn->data_q, skb);
- } while (list);
-@@ -1298,7 +1094,7 @@
- struct hci_dev *hdev = conn->hdev;
- hci_sco_hdr hs;
-
-- DBG("%s len %d", hdev->name, skb->len);
-+ BT_DBG("%s len %d", hdev->name, skb->len);
-
- if (skb->len > hdev->sco_mtu) {
- kfree_skb(skb);
-@@ -1315,544 +1111,136 @@
- skb->pkt_type = HCI_SCODATA_PKT;
- skb_queue_tail(&conn->data_q, skb);
- hci_sched_tx(hdev);
--
- return 0;
- }
-
--/* Handle HCI Event packets */
--
--/* Command Complete OGF LINK_CTL */
--static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command complete: ogf LINK_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Complete OGF LINK_POLICY */
--static void hci_cc_link_policy(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s: Command complete: ogf LINK_POLICY ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Complete OGF HOST_CTL */
--static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
--{
-- __u8 status, param;
-- void *sent;
--
--
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- case OCF_RESET:
-- status = *((__u8 *) skb->data);
--
-- hci_req_complete(hdev, status);
-- break;
--
-- case OCF_SET_EVENT_FLT:
-- status = *((__u8 *) skb->data);
--
-- if (status) {
-- DBG("%s SET_EVENT_FLT failed %d", hdev->name, status);
-- } else {
-- DBG("%s SET_EVENT_FLT succeseful", hdev->name);
-- }
-- break;
--
-- case OCF_WRITE_AUTH_ENABLE:
-- if (!(sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE)))
-- break;
--
-- status = *((__u8 *) skb->data);
-- param = *((__u8 *) sent);
--
-- if (!status) {
-- if (param == AUTH_ENABLED)
-- hdev->flags |= HCI_AUTH;
-- else
-- hdev->flags &= ~HCI_AUTH;
-- }
-- hci_req_complete(hdev, status);
-- break;
--
-- case OCF_WRITE_CA_TIMEOUT:
-- status = *((__u8 *) skb->data);
--
-- if (status) {
-- DBG("%s OCF_WRITE_CA_TIMEOUT failed %d", hdev->name, status);
-- } else {
-- DBG("%s OCF_WRITE_CA_TIMEOUT succeseful", hdev->name);
-- }
-- break;
--
-- case OCF_WRITE_PG_TIMEOUT:
-- status = *((__u8 *) skb->data);
--
-- if (status) {
-- DBG("%s OCF_WRITE_PG_TIMEOUT failed %d", hdev->name, status);
-- } else {
-- DBG("%s: OCF_WRITE_PG_TIMEOUT succeseful", hdev->name);
-- }
-- break;
--
-- case OCF_WRITE_SCAN_ENABLE:
-- if (!(sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE)))
-- break;
-- status = *((__u8 *) skb->data);
-- param = *((__u8 *) sent);
--
-- DBG("param 0x%x", param);
--
-- if (!status) {
-- switch (param) {
-- case IS_ENA_PS_ENA:
-- hdev->flags |= HCI_PSCAN | HCI_ISCAN;
-- break;
--
-- case IS_ENA_PS_DIS:
-- hdev->flags &= ~HCI_PSCAN;
-- hdev->flags |= HCI_ISCAN;
-- break;
-+/* ---- HCI TX task (outgoing data) ---- */
-
-- case IS_DIS_PS_ENA:
-- hdev->flags &= ~HCI_ISCAN;
-- hdev->flags |= HCI_PSCAN;
-- break;
--
-- default:
-- hdev->flags &= ~(HCI_ISCAN | HCI_PSCAN);
-- break;
-- };
-- }
-- hci_req_complete(hdev, status);
-- break;
--
-- default:
-- DBG("%s Command complete: ogf HOST_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Complete OGF INFO_PARAM */
--static void hci_cc_info_param(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+/* HCI Connection scheduler */
-+static inline struct hci_conn *hci_low_sent(struct hci_dev *hdev, __u8 type, int *quote)
- {
-- read_local_features_rp *lf;
-- read_buffer_size_rp *bs;
-- read_bd_addr_rp *ba;
--
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- case OCF_READ_LOCAL_FEATURES:
-- lf = (read_local_features_rp *) skb->data;
--
-- if (lf->status) {
-- DBG("%s READ_LOCAL_FEATURES failed %d", hdev->name, lf->status);
-- break;
-- }
--
-- memcpy(hdev->features, lf->features, sizeof(hdev->features));
--
-- /* Adjust default settings according to features
-- * supported by device. */
-- if (hdev->features[0] & LMP_3SLOT)
-- hdev->pkt_type |= (HCI_DM3 | HCI_DH3);
--
-- if (hdev->features[0] & LMP_5SLOT)
-- hdev->pkt_type |= (HCI_DM5 | HCI_DH5);
--
-- DBG("%s: features 0x%x 0x%x 0x%x", hdev->name, lf->features[0], lf->features[1], lf->features[2]);
--
-- break;
--
-- case OCF_READ_BUFFER_SIZE:
-- bs = (read_buffer_size_rp *) skb->data;
--
-- if (bs->status) {
-- DBG("%s READ_BUFFER_SIZE failed %d", hdev->name, bs->status);
-- break;
-- }
--
-- hdev->acl_mtu = __le16_to_cpu(bs->acl_mtu);
-- hdev->sco_mtu = bs->sco_mtu;
-- hdev->acl_max = hdev->acl_cnt = __le16_to_cpu(bs->acl_max_pkt);
-- hdev->sco_max = hdev->sco_cnt = __le16_to_cpu(bs->sco_max_pkt);
--
-- DBG("%s mtu: acl %d, sco %d max_pkt: acl %d, sco %d", hdev->name,
-- hdev->acl_mtu, hdev->sco_mtu, hdev->acl_max, hdev->sco_max);
-+ struct conn_hash *h = &hdev->conn_hash;
-+ struct hci_conn *conn = NULL;
-+ int num = 0, min = ~0;
-+ struct list_head *p;
-
-- break;
-+ /* We don't have to lock device here. Connections are always
-+ * added and removed with TX task disabled. */
-+ list_for_each(p, &h->list) {
-+ struct hci_conn *c;
-+ c = list_entry(p, struct hci_conn, list);
-
-- case OCF_READ_BD_ADDR:
-- ba = (read_bd_addr_rp *) skb->data;
-+ if (c->type != type || c->state != BT_CONNECTED
-+ || skb_queue_empty(&c->data_q))
-+ continue;
-+ num++;
-
-- if (!ba->status) {
-- bacpy(&hdev->bdaddr, &ba->bdaddr);
-- } else {
-- DBG("%s: READ_BD_ADDR failed %d", hdev->name, ba->status);
-+ if (c->sent < min) {
-+ min = c->sent;
-+ conn = c;
- }
-+ }
-
-- hci_req_complete(hdev, ba->status);
-- break;
-+ if (conn) {
-+ int cnt = (type == ACL_LINK ? hdev->acl_cnt : hdev->sco_cnt);
-+ int q = cnt / num;
-+ *quote = q ? q : 1;
-+ } else
-+ *quote = 0;
-
-- default:
-- DBG("%s Command complete: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-- break;
-- };
-+ BT_DBG("conn %p quote %d", conn, *quote);
-+ return conn;
- }
-
--/* Command Status OGF LINK_CTL */
--static void hci_cs_link_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+static inline void hci_acl_tx_to(struct hci_dev *hdev)
- {
-- struct hci_proto * hp;
--
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- case OCF_CREATE_CONN:
-- if (status) {
-- create_conn_cp *cc = hci_sent_cmd_data(hdev, OGF_LINK_CTL, OCF_CREATE_CONN);
--
-- if (!cc)
-- break;
--
-- DBG("%s Create connection error: status 0x%x %s", hdev->name,
-- status, batostr(&cc->bdaddr));
-+ struct conn_hash *h = &hdev->conn_hash;
-+ struct list_head *p;
-+ struct hci_conn *c;
-
-- /* Notify upper protocols */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_cfm) {
-- tasklet_disable(&hdev->tx_task);
-- hp->connect_cfm(hdev, &cc->bdaddr, status, NULL);
-- tasklet_enable(&hdev->tx_task);
-- }
-- }
-- break;
-+ BT_ERR("%s ACL tx timeout", hdev->name);
-
-- case OCF_INQUIRY:
-- if (status) {
-- DBG("%s Inquiry error: status 0x%x", hdev->name, status);
-- hci_req_complete(hdev, status);
-+ /* Kill stalled connections */
-+ list_for_each(p, &h->list) {
-+ c = list_entry(p, struct hci_conn, list);
-+ if (c->type == ACL_LINK && c->sent) {
-+ BT_ERR("%s killing stalled ACL connection %s",
-+ hdev->name, batostr(&c->dst));
-+ hci_acl_disconn(c, 0x13);
- }
-- break;
--
-- default:
-- DBG("%s Command status: ogf LINK_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Status OGF LINK_POLICY */
--static void hci_cs_link_policy(struct hci_dev *hdev, __u16 ocf, __u8 status)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command status: ogf HOST_POLICY ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Status OGF HOST_CTL */
--static void hci_cs_host_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command status: ogf HOST_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Status OGF INFO_PARAM */
--static void hci_cs_info_param(struct hci_dev *hdev, __u16 ocf, __u8 status)
--{
-- DBG("%s: hci_cs_info_param: ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command status: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Inquiry Complete */
--static void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- __u8 status = *((__u8 *) skb->data);
--
-- DBG("%s status %d", hdev->name, status);
--
-- hci_req_complete(hdev, status);
-+ }
- }
-
--/* Inquiry Result */
--static void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+static inline void hci_sched_acl(struct hci_dev *hdev)
- {
-- inquiry_info *info = (inquiry_info *) (skb->data + 1);
-- int num_rsp = *((__u8 *) skb->data);
--
-- DBG("%s num_rsp %d", hdev->name, num_rsp);
-+ struct hci_conn *conn;
-+ struct sk_buff *skb;
-+ int quote;
-
-- for (; num_rsp; num_rsp--)
-- inquiry_cache_update(&hdev->inq_cache, info++);
--}
-+ BT_DBG("%s", hdev->name);
-
--/* Connect Request */
--static void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- evt_conn_request *cr = (evt_conn_request *) skb->data;
-- struct hci_proto *hp;
-- accept_conn_req_cp ac;
-- int accept = 0;
-+ /* ACL tx timeout must be longer than maximum
-+ * link supervision timeout (40.9 seconds) */
-+ if (!hdev->acl_cnt && (jiffies - hdev->acl_last_tx) > (HZ * 45))
-+ hci_acl_tx_to(hdev);
-
-- DBG("%s Connection request: %s type 0x%x", hdev->name, batostr(&cr->bdaddr), cr->link_type);
-+ while (hdev->acl_cnt && (conn = hci_low_sent(hdev, ACL_LINK, &quote))) {
-+ while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
-+ BT_DBG("skb %p len %d", skb, skb->len);
-+ hci_send_frame(skb);
-+ hdev->acl_last_tx = jiffies;
-
-- /* Notify upper protocols */
-- if (cr->link_type == ACL_LINK) {
-- /* ACL link notify L2CAP */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_ind) {
-- tasklet_disable(&hdev->tx_task);
-- accept = hp->connect_ind(hdev, &cr->bdaddr);
-- tasklet_enable(&hdev->tx_task);
-+ hdev->acl_cnt--;
-+ conn->sent++;
- }
-- } else {
-- /* SCO link (no notification) */
-- /* FIXME: Should be accept it here or let the requester (app) accept it ? */
-- accept = 1;
-- }
--
-- if (accept) {
-- /* Connection accepted by upper layer */
-- bacpy(&ac.bdaddr, &cr->bdaddr);
-- ac.role = 0x01; /* Remain slave */
-- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ACCEPT_CONN_REQ, ACCEPT_CONN_REQ_CP_SIZE, &ac);
-- } else {
-- /* Connection rejected by upper layer */
-- /* FIXME:
-- * Should we use HCI reject here ?
-- */
-- return;
- }
- }
-
--/* Connect Complete */
--static void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+/* Schedule SCO */
-+static inline void hci_sched_sco(struct hci_dev *hdev)
- {
-- evt_conn_complete *cc = (evt_conn_complete *) skb->data;
-- struct hci_conn *conn = NULL;
-- struct hci_proto *hp;
--
-- DBG("%s", hdev->name);
--
-- tasklet_disable(&hdev->tx_task);
--
-- if (!cc->status)
-- conn = hci_conn_add(hdev, __le16_to_cpu(cc->handle), cc->link_type, &cc->bdaddr);
-+ struct hci_conn *conn;
-+ struct sk_buff *skb;
-+ int quote;
-
-- /* Notify upper protocols */
-- if (cc->link_type == ACL_LINK) {
-- /* ACL link notify L2CAP layer */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_cfm)
-- hp->connect_cfm(hdev, &cc->bdaddr, cc->status, conn);
-- } else {
-- /* SCO link (no notification) */
-- }
-+ BT_DBG("%s", hdev->name);
-
-- tasklet_enable(&hdev->tx_task);
--}
-+ while (hdev->sco_cnt && (conn = hci_low_sent(hdev, SCO_LINK, &quote))) {
-+ while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
-+ BT_DBG("skb %p len %d", skb, skb->len);
-+ hci_send_frame(skb);
-
--/* Disconnect Complete */
--static void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- evt_disconn_complete *dc = (evt_disconn_complete *) skb->data;
-- struct hci_conn *conn = NULL;
-- struct hci_proto *hp;
-- __u16 handle = __le16_to_cpu(dc->handle);
--
-- DBG("%s", hdev->name);
--
-- if (!dc->status && (conn = conn_hash_lookup(&hdev->conn_hash, handle))) {
-- tasklet_disable(&hdev->tx_task);
--
-- /* Notify upper protocols */
-- if (conn->type == ACL_LINK) {
-- /* ACL link notify L2CAP layer */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->disconn_ind)
-- hp->disconn_ind(conn, dc->reason);
-- } else {
-- /* SCO link (no notification) */
-+ conn->sent++;
-+ if (conn->sent == ~0)
-+ conn->sent = 0;
- }
--
-- hci_conn_del(hdev, conn);
--
-- tasklet_enable(&hdev->tx_task);
- }
- }
-
--/* Number of completed packets */
--static void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+static void hci_tx_task(unsigned long arg)
- {
-- evt_num_comp_pkts *nc = (evt_num_comp_pkts *) skb->data;
-- __u16 *ptr;
-- int i;
--
-- skb_pull(skb, EVT_NUM_COMP_PKTS_SIZE);
--
-- DBG("%s num_hndl %d", hdev->name, nc->num_hndl);
-+ struct hci_dev *hdev = (struct hci_dev *) arg;
-+ struct sk_buff *skb;
-
-- if (skb->len < nc->num_hndl * 4) {
-- DBG("%s bad parameters", hdev->name);
-- return;
-- }
-+ read_lock(&hci_task_lock);
-
-- tasklet_disable(&hdev->tx_task);
-+ BT_DBG("%s acl %d sco %d", hdev->name, hdev->acl_cnt, hdev->sco_cnt);
-
-- for (i = 0, ptr = (__u16 *) skb->data; i < nc->num_hndl; i++) {
-- struct hci_conn *conn;
-- __u16 handle, count;
-+ /* Schedule queues and send stuff to HCI driver */
-
-- handle = __le16_to_cpu(get_unaligned(ptr++));
-- count = __le16_to_cpu(get_unaligned(ptr++));
-+ hci_sched_acl(hdev);
-
-- hdev->acl_cnt += count;
-+ hci_sched_sco(hdev);
-
-- if ((conn = conn_hash_lookup(&hdev->conn_hash, handle)))
-- conn->sent -= count;
-- }
-+ /* Send next queued raw (unknown type) packet */
-+ while ((skb = skb_dequeue(&hdev->raw_q)))
-+ hci_send_frame(skb);
-
-- tasklet_enable(&hdev->tx_task);
--
-- hci_sched_tx(hdev);
-+ read_unlock(&hci_task_lock);
- }
-
--static inline void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- hci_event_hdr *he = (hci_event_hdr *) skb->data;
-- evt_cmd_status *cs;
-- evt_cmd_complete *ec;
-- __u16 opcode, ocf, ogf;
--
-- skb_pull(skb, HCI_EVENT_HDR_SIZE);
--
-- DBG("%s evt 0x%x", hdev->name, he->evt);
--
-- switch (he->evt) {
-- case EVT_NUM_COMP_PKTS:
-- hci_num_comp_pkts_evt(hdev, skb);
-- break;
--
-- case EVT_INQUIRY_COMPLETE:
-- hci_inquiry_complete_evt(hdev, skb);
-- break;
-
-- case EVT_INQUIRY_RESULT:
-- hci_inquiry_result_evt(hdev, skb);
-- break;
--
-- case EVT_CONN_REQUEST:
-- hci_conn_request_evt(hdev, skb);
-- break;
--
-- case EVT_CONN_COMPLETE:
-- hci_conn_complete_evt(hdev, skb);
-- break;
--
-- case EVT_DISCONN_COMPLETE:
-- hci_disconn_complete_evt(hdev, skb);
-- break;
--
-- case EVT_CMD_STATUS:
-- cs = (evt_cmd_status *) skb->data;
-- skb_pull(skb, EVT_CMD_STATUS_SIZE);
--
-- opcode = __le16_to_cpu(cs->opcode);
-- ogf = cmd_opcode_ogf(opcode);
-- ocf = cmd_opcode_ocf(opcode);
--
-- switch (ogf) {
-- case OGF_INFO_PARAM:
-- hci_cs_info_param(hdev, ocf, cs->status);
-- break;
--
-- case OGF_HOST_CTL:
-- hci_cs_host_ctl(hdev, ocf, cs->status);
-- break;
--
-- case OGF_LINK_CTL:
-- hci_cs_link_ctl(hdev, ocf, cs->status);
-- break;
--
-- case OGF_LINK_POLICY:
-- hci_cs_link_policy(hdev, ocf, cs->status);
-- break;
--
-- default:
-- DBG("%s Command Status OGF %x", hdev->name, ogf);
-- break;
-- };
--
-- if (cs->ncmd) {
-- atomic_set(&hdev->cmd_cnt, 1);
-- if (!skb_queue_empty(&hdev->cmd_q))
-- hci_sched_cmd(hdev);
-- }
-- break;
--
-- case EVT_CMD_COMPLETE:
-- ec = (evt_cmd_complete *) skb->data;
-- skb_pull(skb, EVT_CMD_COMPLETE_SIZE);
--
-- opcode = __le16_to_cpu(ec->opcode);
-- ogf = cmd_opcode_ogf(opcode);
-- ocf = cmd_opcode_ocf(opcode);
--
-- switch (ogf) {
-- case OGF_INFO_PARAM:
-- hci_cc_info_param(hdev, ocf, skb);
-- break;
--
-- case OGF_HOST_CTL:
-- hci_cc_host_ctl(hdev, ocf, skb);
-- break;
--
-- case OGF_LINK_CTL:
-- hci_cc_link_ctl(hdev, ocf, skb);
-- break;
--
-- case OGF_LINK_POLICY:
-- hci_cc_link_policy(hdev, ocf, skb);
-- break;
--
-- default:
-- DBG("%s Command Completed OGF %x", hdev->name, ogf);
-- break;
-- };
--
-- if (ec->ncmd) {
-- atomic_set(&hdev->cmd_cnt, 1);
-- if (!skb_queue_empty(&hdev->cmd_q))
-- hci_sched_cmd(hdev);
-- }
-- break;
-- };
--
-- kfree_skb(skb);
-- hdev->stat.evt_rx++;
--}
-+/* ----- HCI RX task (incomming data proccessing) ----- */
-
- /* ACL data packet */
- static inline void hci_acldata_packet(struct hci_dev *hdev, struct sk_buff *skb)
-@@ -1867,51 +1255,86 @@
- flags = acl_flags(handle);
- handle = acl_handle(handle);
-
-- DBG("%s len %d handle 0x%x flags 0x%x", hdev->name, skb->len, handle, flags);
-+ BT_DBG("%s len %d handle 0x%x flags 0x%x", hdev->name, skb->len, handle, flags);
-+
-+ hdev->stat.acl_rx++;
-
-- if ((conn = conn_hash_lookup(&hdev->conn_hash, handle))) {
-+ hci_dev_lock(hdev);
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ hci_dev_unlock(hdev);
-+
-+ if (conn) {
- register struct hci_proto *hp;
-
- /* Send to upper protocol */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->recv_acldata) {
-+ if ((hp = hci_proto[HCI_PROTO_L2CAP]) && hp->recv_acldata) {
- hp->recv_acldata(conn, skb, flags);
-- goto sent;
-+ return;
- }
- } else {
-- ERR("%s ACL packet for unknown connection handle %d", hdev->name, handle);
-+ BT_ERR("%s ACL packet for unknown connection handle %d",
-+ hdev->name, handle);
- }
-
- kfree_skb(skb);
--sent:
-- hdev->stat.acl_rx++;
- }
-
- /* SCO data packet */
- static inline void hci_scodata_packet(struct hci_dev *hdev, struct sk_buff *skb)
- {
-- DBG("%s len %d", hdev->name, skb->len);
-+ hci_sco_hdr *sh = (void *) skb->data;
-+ struct hci_conn *conn;
-+ __u16 handle;
-+
-+ skb_pull(skb, HCI_SCO_HDR_SIZE);
-+
-+ handle = __le16_to_cpu(sh->handle);
-+
-+ BT_DBG("%s len %d handle 0x%x", hdev->name, skb->len, handle);
-
-- kfree_skb(skb);
- hdev->stat.sco_rx++;
-+
-+ hci_dev_lock(hdev);
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ hci_dev_unlock(hdev);
-+
-+ if (conn) {
-+ register struct hci_proto *hp;
-+
-+ /* Send to upper protocol */
-+ if ((hp = hci_proto[HCI_PROTO_SCO]) && hp->recv_scodata) {
-+ hp->recv_scodata(conn, skb);
-+ return;
-+ }
-+ } else {
-+ BT_ERR("%s SCO packet for unknown connection handle %d",
-+ hdev->name, handle);
-+ }
-+
-+ kfree_skb(skb);
- }
-
--/* ----- HCI tasks ----- */
- void hci_rx_task(unsigned long arg)
- {
- struct hci_dev *hdev = (struct hci_dev *) arg;
- struct sk_buff *skb;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s", hdev->name);
-
- read_lock(&hci_task_lock);
-
- while ((skb = skb_dequeue(&hdev->rx_q))) {
-- if (hdev->flags & HCI_SOCK) {
-+ if (atomic_read(&hdev->promisc)) {
- /* Send copy to the sockets */
- hci_send_to_sock(hdev, skb);
- }
-
-- if (hdev->flags & HCI_INIT) {
-+ if (test_bit(HCI_RAW, &hdev->flags)) {
-+ kfree_skb(skb);
-+ continue;
-+ }
-+
-+ if (test_bit(HCI_INIT, &hdev->flags)) {
- /* Don't process data packets in this states. */
- switch (skb->pkt_type) {
- case HCI_ACLDATA_PKT:
-@@ -1921,64 +1344,43 @@
- };
- }
-
-- if (hdev->flags & HCI_NORMAL) {
-- /* Process frame */
-- switch (skb->pkt_type) {
-- case HCI_EVENT_PKT:
-- hci_event_packet(hdev, skb);
-- break;
-+ /* Process frame */
-+ switch (skb->pkt_type) {
-+ case HCI_EVENT_PKT:
-+ hci_event_packet(hdev, skb);
-+ break;
-
-- case HCI_ACLDATA_PKT:
-- DBG("%s ACL data packet", hdev->name);
-- hci_acldata_packet(hdev, skb);
-- break;
-+ case HCI_ACLDATA_PKT:
-+ BT_DBG("%s ACL data packet", hdev->name);
-+ hci_acldata_packet(hdev, skb);
-+ break;
-
-- case HCI_SCODATA_PKT:
-- DBG("%s SCO data packet", hdev->name);
-- hci_scodata_packet(hdev, skb);
-- break;
-+ case HCI_SCODATA_PKT:
-+ BT_DBG("%s SCO data packet", hdev->name);
-+ hci_scodata_packet(hdev, skb);
-+ break;
-
-- default:
-- kfree_skb(skb);
-- break;
-- };
-- } else {
-+ default:
- kfree_skb(skb);
-+ break;
- }
- }
-
- read_unlock(&hci_task_lock);
- }
-
--static void hci_tx_task(unsigned long arg)
--{
-- struct hci_dev *hdev = (struct hci_dev *) arg;
-- struct sk_buff *skb;
--
-- read_lock(&hci_task_lock);
--
-- DBG("%s acl %d sco %d", hdev->name, hdev->acl_cnt, hdev->sco_cnt);
--
-- /* Schedule queues and send stuff to HCI driver */
--
-- hci_sched_acl(hdev);
--
-- hci_sched_sco(hdev);
--
-- /* Send next queued raw (unknown type) packet */
-- while ((skb = skb_dequeue(&hdev->raw_q)))
-- hci_send_frame(skb);
--
-- read_unlock(&hci_task_lock);
--}
--
- static void hci_cmd_task(unsigned long arg)
- {
- struct hci_dev *hdev = (struct hci_dev *) arg;
- struct sk_buff *skb;
-
-- DBG("%s cmd %d", hdev->name, atomic_read(&hdev->cmd_cnt));
-+ BT_DBG("%s cmd %d", hdev->name, atomic_read(&hdev->cmd_cnt));
-
-+ if (!atomic_read(&hdev->cmd_cnt) && (jiffies - hdev->cmd_last_tx) > HZ) {
-+ BT_ERR("%s command tx timeout", hdev->name);
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ }
-+
- /* Send queued commands */
- if (atomic_read(&hdev->cmd_cnt) && (skb = skb_dequeue(&hdev->cmd_q))) {
- if (hdev->sent_cmd)
-@@ -1987,6 +1389,7 @@
- if ((hdev->sent_cmd = skb_clone(skb, GFP_ATOMIC))) {
- atomic_dec(&hdev->cmd_cnt);
- hci_send_frame(skb);
-+ hdev->cmd_last_tx = jiffies;
- } else {
- skb_queue_head(&hdev->cmd_q, skb);
- hci_sched_cmd(hdev);
-@@ -1994,33 +1397,10 @@
- }
- }
-
--/* Receive frame from HCI drivers */
--int hci_recv_frame(struct sk_buff *skb)
--{
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
--
-- if (!hdev || !(hdev->flags & (HCI_UP | HCI_INIT))) {
-- kfree_skb(skb);
-- return -1;
-- }
--
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
--
-- /* Incomming skb */
-- bluez_cb(skb)->incomming = 1;
--
-- /* Queue frame for rx task */
-- skb_queue_tail(&hdev->rx_q, skb);
-- hci_sched_rx(hdev);
--
-- return 0;
--}
-+/* ---- Initialization ---- */
-
- int hci_core_init(void)
- {
-- /* Init locks */
-- spin_lock_init(&hdev_list_lock);
--
- return 0;
- }
-
-@@ -2028,5 +1408,3 @@
- {
- return 0;
- }
--
--MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/hci_event.c linux-2.4.18-mh15/net/bluetooth/hci_event.c
---- linux-2.4.18/net/bluetooth/hci_event.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hci_event.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,910 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * HCI Events.
-+ *
-+ * $Id: hci_event.c,v 1.4 2002/07/27 18:14:38 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/notifier.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+#ifndef HCI_CORE_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+/* Handle HCI Event packets */
-+
-+/* Command Complete OGF LINK_CTL */
-+static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ __u8 status;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_INQUIRY_CANCEL:
-+ status = *((__u8 *) skb->data);
-+
-+ if (status) {
-+ BT_DBG("%s Inquiry cancel error: status 0x%x", hdev->name, status);
-+ } else {
-+ clear_bit(HCI_INQUIRY, &hdev->flags);
-+ hci_req_complete(hdev, status);
-+ }
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command complete: ogf LINK_CTL ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Complete OGF LINK_POLICY */
-+static void hci_cc_link_policy(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ struct hci_conn *conn;
-+ role_discovery_rp *rd;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_ROLE_DISCOVERY:
-+ rd = (void *) skb->data;
-+
-+ if (rd->status)
-+ break;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, __le16_to_cpu(rd->handle));
-+ if (conn) {
-+ if (rd->role)
-+ conn->link_mode &= ~HCI_LM_MASTER;
-+ else
-+ conn->link_mode |= HCI_LM_MASTER;
-+ }
-+
-+ hci_dev_unlock(hdev);
-+ break;
-+
-+ default:
-+ BT_DBG("%s: Command complete: ogf LINK_POLICY ocf %x",
-+ hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Complete OGF HOST_CTL */
-+static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ __u8 status, param;
-+ void *sent;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_RESET:
-+ status = *((__u8 *) skb->data);
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_SET_EVENT_FLT:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s SET_EVENT_FLT failed %d", hdev->name, status);
-+ } else {
-+ BT_DBG("%s SET_EVENT_FLT succeseful", hdev->name);
-+ }
-+ break;
-+
-+ case OCF_WRITE_AUTH_ENABLE:
-+ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE);
-+ if (!sent)
-+ break;
-+
-+ status = *((__u8 *) skb->data);
-+ param = *((__u8 *) sent);
-+
-+ if (!status) {
-+ if (param == AUTH_ENABLED)
-+ set_bit(HCI_AUTH, &hdev->flags);
-+ else
-+ clear_bit(HCI_AUTH, &hdev->flags);
-+ }
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_WRITE_ENCRYPT_MODE:
-+ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_ENCRYPT_MODE);
-+ if (!sent)
-+ break;
-+
-+ status = *((__u8 *) skb->data);
-+ param = *((__u8 *) sent);
-+
-+ if (!status) {
-+ if (param)
-+ set_bit(HCI_ENCRYPT, &hdev->flags);
-+ else
-+ clear_bit(HCI_ENCRYPT, &hdev->flags);
-+ }
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_WRITE_CA_TIMEOUT:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s OCF_WRITE_CA_TIMEOUT failed %d", hdev->name, status);
-+ } else {
-+ BT_DBG("%s OCF_WRITE_CA_TIMEOUT succeseful", hdev->name);
-+ }
-+ break;
-+
-+ case OCF_WRITE_PG_TIMEOUT:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s OCF_WRITE_PG_TIMEOUT failed %d", hdev->name, status);
-+ } else {
-+ BT_DBG("%s: OCF_WRITE_PG_TIMEOUT succeseful", hdev->name);
-+ }
-+ break;
-+
-+ case OCF_WRITE_SCAN_ENABLE:
-+ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE);
-+ if (!sent)
-+ break;
-+ status = *((__u8 *) skb->data);
-+ param = *((__u8 *) sent);
-+
-+ BT_DBG("param 0x%x", param);
-+
-+ if (!status) {
-+ clear_bit(HCI_PSCAN, &hdev->flags);
-+ clear_bit(HCI_ISCAN, &hdev->flags);
-+ if (param & SCAN_INQUIRY)
-+ set_bit(HCI_ISCAN, &hdev->flags);
-+
-+ if (param & SCAN_PAGE)
-+ set_bit(HCI_PSCAN, &hdev->flags);
-+ }
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_HOST_BUFFER_SIZE:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s OCF_BUFFER_SIZE failed %d", hdev->name, status);
-+ hci_req_complete(hdev, status);
-+ }
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command complete: ogf HOST_CTL ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Complete OGF INFO_PARAM */
-+static void hci_cc_info_param(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ read_local_features_rp *lf;
-+ read_buffer_size_rp *bs;
-+ read_bd_addr_rp *ba;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_READ_LOCAL_FEATURES:
-+ lf = (read_local_features_rp *) skb->data;
-+
-+ if (lf->status) {
-+ BT_DBG("%s READ_LOCAL_FEATURES failed %d", hdev->name, lf->status);
-+ break;
-+ }
-+
-+ memcpy(hdev->features, lf->features, sizeof(hdev->features));
-+
-+ /* Adjust default settings according to features
-+ * supported by device. */
-+ if (hdev->features[0] & LMP_3SLOT)
-+ hdev->pkt_type |= (HCI_DM3 | HCI_DH3);
-+
-+ if (hdev->features[0] & LMP_5SLOT)
-+ hdev->pkt_type |= (HCI_DM5 | HCI_DH5);
-+
-+ if (hdev->features[1] & LMP_HV2)
-+ hdev->pkt_type |= (HCI_HV2);
-+
-+ if (hdev->features[1] & LMP_HV3)
-+ hdev->pkt_type |= (HCI_HV3);
-+
-+ BT_DBG("%s: features 0x%x 0x%x 0x%x", hdev->name, lf->features[0], lf->features[1], lf->features[2]);
-+
-+ break;
-+
-+ case OCF_READ_BUFFER_SIZE:
-+ bs = (read_buffer_size_rp *) skb->data;
-+
-+ if (bs->status) {
-+ BT_DBG("%s READ_BUFFER_SIZE failed %d", hdev->name, bs->status);
-+ hci_req_complete(hdev, bs->status);
-+ break;
-+ }
-+
-+ hdev->acl_mtu = __le16_to_cpu(bs->acl_mtu);
-+ hdev->sco_mtu = bs->sco_mtu ? bs->sco_mtu : 64;
-+ hdev->acl_pkts = hdev->acl_cnt = __le16_to_cpu(bs->acl_max_pkt);
-+ hdev->sco_pkts = hdev->sco_cnt = __le16_to_cpu(bs->sco_max_pkt);
-+
-+ BT_DBG("%s mtu: acl %d, sco %d max_pkt: acl %d, sco %d", hdev->name,
-+ hdev->acl_mtu, hdev->sco_mtu, hdev->acl_pkts, hdev->sco_pkts);
-+ break;
-+
-+ case OCF_READ_BD_ADDR:
-+ ba = (read_bd_addr_rp *) skb->data;
-+
-+ if (!ba->status) {
-+ bacpy(&hdev->bdaddr, &ba->bdaddr);
-+ } else {
-+ BT_DBG("%s: READ_BD_ADDR failed %d", hdev->name, ba->status);
-+ }
-+
-+ hci_req_complete(hdev, ba->status);
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command complete: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF LINK_CTL */
-+static inline void hci_cs_create_conn(struct hci_dev *hdev, __u8 status)
-+{
-+ struct hci_conn *conn;
-+ create_conn_cp *cc = hci_sent_cmd_data(hdev, OGF_LINK_CTL, OCF_CREATE_CONN);
-+
-+ if (!cc)
-+ return;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_ba(hdev, ACL_LINK, &cc->bdaddr);
-+
-+ BT_DBG("%s status 0x%x bdaddr %s conn %p", hdev->name,
-+ status, batostr(&cc->bdaddr), conn);
-+
-+ if (status) {
-+ if (conn && conn->state == BT_CONNECT) {
-+ conn->state = BT_CLOSED;
-+ hci_proto_connect_cfm(conn, status);
-+ hci_conn_del(conn);
-+ }
-+ } else {
-+ if (!conn) {
-+ conn = hci_conn_add(hdev, ACL_LINK, &cc->bdaddr);
-+ if (conn) {
-+ conn->out = 1;
-+ conn->link_mode |= HCI_LM_MASTER;
-+ } else
-+ BT_ERR("No memmory for new connection");
-+ }
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+static void hci_cs_link_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_CREATE_CONN:
-+ hci_cs_create_conn(hdev, status);
-+ break;
-+
-+ case OCF_ADD_SCO:
-+ if (status) {
-+ struct hci_conn *acl, *sco;
-+ add_sco_cp *cp = hci_sent_cmd_data(hdev,
-+ OGF_LINK_CTL, OCF_ADD_SCO);
-+ __u16 handle;
-+
-+ if (!cp)
-+ break;
-+
-+ handle = __le16_to_cpu(cp->handle);
-+
-+ BT_DBG("%s Add SCO error: handle %d status 0x%x", hdev->name, handle, status);
-+
-+ hci_dev_lock(hdev);
-+
-+ acl = conn_hash_lookup_handle(hdev, handle);
-+ if (acl && (sco = acl->link)) {
-+ sco->state = BT_CLOSED;
-+ hci_proto_connect_cfm(sco, status);
-+ hci_conn_del(sco);
-+ }
-+
-+ hci_dev_unlock(hdev);
-+ }
-+ break;
-+
-+ case OCF_INQUIRY:
-+ if (status) {
-+ BT_DBG("%s Inquiry error: status 0x%x", hdev->name, status);
-+ hci_req_complete(hdev, status);
-+ } else {
-+ set_bit(HCI_INQUIRY, &hdev->flags);
-+ }
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command status: ogf LINK_CTL ocf %x status %d",
-+ hdev->name, ocf, status);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF LINK_POLICY */
-+static void hci_cs_link_policy(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ default:
-+ BT_DBG("%s Command status: ogf HOST_POLICY ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF HOST_CTL */
-+static void hci_cs_host_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ default:
-+ BT_DBG("%s Command status: ogf HOST_CTL ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF INFO_PARAM */
-+static void hci_cs_info_param(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s: hci_cs_info_param: ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ default:
-+ BT_DBG("%s Command status: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Inquiry Complete */
-+static inline void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ __u8 status = *((__u8 *) skb->data);
-+
-+ BT_DBG("%s status %d", hdev->name, status);
-+
-+ clear_bit(HCI_INQUIRY, &hdev->flags);
-+ hci_req_complete(hdev, status);
-+}
-+
-+/* Inquiry Result */
-+static inline void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ inquiry_info *info = (inquiry_info *) (skb->data + 1);
-+ int num_rsp = *((__u8 *) skb->data);
-+
-+ BT_DBG("%s num_rsp %d", hdev->name, num_rsp);
-+
-+ hci_dev_lock(hdev);
-+ for (; num_rsp; num_rsp--)
-+ inquiry_cache_update(hdev, info++);
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Inquiry Result With RSSI */
-+static inline void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ inquiry_info_with_rssi *info = (inquiry_info_with_rssi *) (skb->data + 1);
-+ int num_rsp = *((__u8 *) skb->data);
-+
-+ BT_DBG("%s num_rsp %d", hdev->name, num_rsp);
-+
-+ hci_dev_lock(hdev);
-+ for (; num_rsp; num_rsp--) {
-+ inquiry_info tmp;
-+ bacpy(&tmp.bdaddr, &info->bdaddr);
-+ tmp.pscan_rep_mode = info->pscan_rep_mode;
-+ tmp.pscan_period_mode = info->pscan_period_mode;
-+ tmp.pscan_mode = 0x00;
-+ memcpy(tmp.dev_class, &info->dev_class, 3);
-+ tmp.clock_offset = info->clock_offset;
-+ info++;
-+ inquiry_cache_update(hdev, &tmp);
-+ }
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Connect Request */
-+static inline void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_conn_request *cr = (evt_conn_request *) skb->data;
-+ int mask = hdev->link_mode;
-+
-+ BT_DBG("%s Connection request: %s type 0x%x", hdev->name,
-+ batostr(&cr->bdaddr), cr->link_type);
-+
-+ mask |= hci_proto_connect_ind(hdev, &cr->bdaddr, cr->link_type);
-+
-+ if (mask & HCI_LM_ACCEPT) {
-+ /* Connection accepted */
-+ struct hci_conn *conn;
-+ accept_conn_req_cp ac;
-+
-+ hci_dev_lock(hdev);
-+ conn = conn_hash_lookup_ba(hdev, cr->link_type, &cr->bdaddr);
-+ if (!conn) {
-+ if (!(conn = hci_conn_add(hdev, cr->link_type, &cr->bdaddr))) {
-+ BT_ERR("No memmory for new connection");
-+ hci_dev_unlock(hdev);
-+ return;
-+ }
-+ }
-+ conn->state = BT_CONNECT;
-+ hci_dev_unlock(hdev);
-+
-+ bacpy(&ac.bdaddr, &cr->bdaddr);
-+
-+ if (lmp_rswitch_capable(hdev) && (mask & HCI_LM_MASTER))
-+ ac.role = 0x00; /* Become master */
-+ else
-+ ac.role = 0x01; /* Remain slave */
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ACCEPT_CONN_REQ,
-+ ACCEPT_CONN_REQ_CP_SIZE, &ac);
-+ } else {
-+ /* Connection rejected */
-+ reject_conn_req_cp rc;
-+
-+ bacpy(&rc.bdaddr, &cr->bdaddr);
-+ rc.reason = 0x0f;
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_REJECT_CONN_REQ,
-+ REJECT_CONN_REQ_CP_SIZE, &rc);
-+ }
-+}
-+
-+/* Connect Complete */
-+static inline void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_conn_complete *cc = (evt_conn_complete *) skb->data;
-+ struct hci_conn *conn = NULL;
-+
-+ BT_DBG("%s", hdev->name);
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_ba(hdev, cc->link_type, &cc->bdaddr);
-+ if (!conn) {
-+ hci_dev_unlock(hdev);
-+ return;
-+ }
-+
-+ if (!cc->status) {
-+ conn->handle = __le16_to_cpu(cc->handle);
-+ conn->state = BT_CONNECTED;
-+
-+ if (test_bit(HCI_AUTH, &hdev->flags))
-+ conn->link_mode |= HCI_LM_AUTH;
-+
-+ if (test_bit(HCI_ENCRYPT, &hdev->flags))
-+ conn->link_mode |= HCI_LM_ENCRYPT;
-+
-+
-+ /* Set link policy */
-+ if (conn->type == ACL_LINK && hdev->link_policy) {
-+ write_link_policy_cp lp;
-+ lp.handle = cc->handle;
-+ lp.policy = __cpu_to_le16(hdev->link_policy);
-+ hci_send_cmd(hdev, OGF_LINK_POLICY, OCF_WRITE_LINK_POLICY,
-+ WRITE_LINK_POLICY_CP_SIZE, &lp);
-+ }
-+
-+ /* Set packet type for incomming connection */
-+ if (!conn->out) {
-+ change_conn_ptype_cp cp;
-+ cp.handle = cc->handle;
-+ cp.pkt_type = (conn->type == ACL_LINK) ?
-+ __cpu_to_le16(hdev->pkt_type & ACL_PTYPE_MASK):
-+ __cpu_to_le16(hdev->pkt_type & SCO_PTYPE_MASK);
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CHANGE_CONN_PTYPE,
-+ CHANGE_CONN_PTYPE_CP_SIZE, &cp);
-+ }
-+ } else
-+ conn->state = BT_CLOSED;
-+
-+ if (conn->type == ACL_LINK) {
-+ struct hci_conn *sco = conn->link;
-+ if (sco) {
-+ if (!cc->status)
-+ hci_add_sco(sco, conn->handle);
-+ else {
-+ hci_proto_connect_cfm(sco, cc->status);
-+ hci_conn_del(sco);
-+ }
-+ }
-+ }
-+
-+ hci_proto_connect_cfm(conn, cc->status);
-+ if (cc->status)
-+ hci_conn_del(conn);
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Disconnect Complete */
-+static inline void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_disconn_complete *dc = (evt_disconn_complete *) skb->data;
-+ struct hci_conn *conn = NULL;
-+ __u16 handle = __le16_to_cpu(dc->handle);
-+
-+ BT_DBG("%s status %d", hdev->name, dc->status);
-+
-+ if (dc->status)
-+ return;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ conn->state = BT_CLOSED;
-+ hci_proto_disconn_ind(conn, dc->reason);
-+ hci_conn_del(conn);
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Number of completed packets */
-+static inline void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_num_comp_pkts *nc = (evt_num_comp_pkts *) skb->data;
-+ __u16 *ptr;
-+ int i;
-+
-+ skb_pull(skb, EVT_NUM_COMP_PKTS_SIZE);
-+
-+ BT_DBG("%s num_hndl %d", hdev->name, nc->num_hndl);
-+
-+ if (skb->len < nc->num_hndl * 4) {
-+ BT_DBG("%s bad parameters", hdev->name);
-+ return;
-+ }
-+
-+ tasklet_disable(&hdev->tx_task);
-+
-+ for (i = 0, ptr = (__u16 *) skb->data; i < nc->num_hndl; i++) {
-+ struct hci_conn *conn;
-+ __u16 handle, count;
-+
-+ handle = __le16_to_cpu(get_unaligned(ptr++));
-+ count = __le16_to_cpu(get_unaligned(ptr++));
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ conn->sent -= count;
-+
-+ if (conn->type == SCO_LINK) {
-+ if ((hdev->sco_cnt += count) > hdev->sco_pkts)
-+ hdev->sco_cnt = hdev->sco_pkts;
-+ } else {
-+ if ((hdev->acl_cnt += count) > hdev->acl_pkts)
-+ hdev->acl_cnt = hdev->acl_pkts;
-+ }
-+ }
-+ }
-+ hci_sched_tx(hdev);
-+
-+ tasklet_enable(&hdev->tx_task);
-+}
-+
-+/* Role Change */
-+static inline void hci_role_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_role_change *rc = (evt_role_change *) skb->data;
-+ struct hci_conn *conn = NULL;
-+
-+ BT_DBG("%s status %d", hdev->name, rc->status);
-+
-+ if (rc->status)
-+ return;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_ba(hdev, ACL_LINK, &rc->bdaddr);
-+ if (conn) {
-+ if (rc->role)
-+ conn->link_mode &= ~HCI_LM_MASTER;
-+ else
-+ conn->link_mode |= HCI_LM_MASTER;
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Authentication Complete */
-+static inline void hci_auth_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_auth_complete *ac = (evt_auth_complete *) skb->data;
-+ struct hci_conn *conn = NULL;
-+ __u16 handle = __le16_to_cpu(ac->handle);
-+
-+ BT_DBG("%s status %d", hdev->name, ac->status);
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ if (!ac->status)
-+ conn->link_mode |= HCI_LM_AUTH;
-+ clear_bit(HCI_CONN_AUTH_PEND, &conn->pend);
-+
-+ hci_proto_auth_cfm(conn, ac->status);
-+
-+ if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend)) {
-+ if (!ac->status) {
-+ set_conn_encrypt_cp ce;
-+ ce.handle = __cpu_to_le16(conn->handle);
-+ ce.encrypt = 1;
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL,
-+ OCF_SET_CONN_ENCRYPT,
-+ SET_CONN_ENCRYPT_CP_SIZE, &ce);
-+ } else {
-+ clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend);
-+ hci_proto_encrypt_cfm(conn, ac->status);
-+ }
-+ }
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Encryption Change */
-+static inline void hci_encrypt_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_encrypt_change *ec = (evt_encrypt_change *) skb->data;
-+ struct hci_conn *conn = NULL;
-+ __u16 handle = __le16_to_cpu(ec->handle);
-+
-+ BT_DBG("%s status %d", hdev->name, ec->status);
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ if (!ec->status) {
-+ if (ec->encrypt)
-+ conn->link_mode |= HCI_LM_ENCRYPT;
-+ else
-+ conn->link_mode &= ~HCI_LM_ENCRYPT;
-+ }
-+ clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend);
-+
-+ hci_proto_encrypt_cfm(conn, ec->status);
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ hci_event_hdr *he = (hci_event_hdr *) skb->data;
-+ evt_cmd_status *cs;
-+ evt_cmd_complete *ec;
-+ __u16 opcode, ocf, ogf;
-+
-+ skb_pull(skb, HCI_EVENT_HDR_SIZE);
-+
-+ BT_DBG("%s evt 0x%x", hdev->name, he->evt);
-+
-+ switch (he->evt) {
-+ case EVT_NUM_COMP_PKTS:
-+ hci_num_comp_pkts_evt(hdev, skb);
-+ break;
-+
-+ case EVT_INQUIRY_COMPLETE:
-+ hci_inquiry_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_INQUIRY_RESULT:
-+ hci_inquiry_result_evt(hdev, skb);
-+ break;
-+
-+ case EVT_INQUIRY_RESULT_WITH_RSSI:
-+ hci_inquiry_result_with_rssi_evt(hdev, skb);
-+ break;
-+
-+ case EVT_CONN_REQUEST:
-+ hci_conn_request_evt(hdev, skb);
-+ break;
-+
-+ case EVT_CONN_COMPLETE:
-+ hci_conn_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_DISCONN_COMPLETE:
-+ hci_disconn_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_ROLE_CHANGE:
-+ hci_role_change_evt(hdev, skb);
-+ break;
-+
-+ case EVT_AUTH_COMPLETE:
-+ hci_auth_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_ENCRYPT_CHANGE:
-+ hci_encrypt_change_evt(hdev, skb);
-+ break;
-+
-+ case EVT_CMD_STATUS:
-+ cs = (evt_cmd_status *) skb->data;
-+ skb_pull(skb, EVT_CMD_STATUS_SIZE);
-+
-+ opcode = __le16_to_cpu(cs->opcode);
-+ ogf = cmd_opcode_ogf(opcode);
-+ ocf = cmd_opcode_ocf(opcode);
-+
-+ switch (ogf) {
-+ case OGF_INFO_PARAM:
-+ hci_cs_info_param(hdev, ocf, cs->status);
-+ break;
-+
-+ case OGF_HOST_CTL:
-+ hci_cs_host_ctl(hdev, ocf, cs->status);
-+ break;
-+
-+ case OGF_LINK_CTL:
-+ hci_cs_link_ctl(hdev, ocf, cs->status);
-+ break;
-+
-+ case OGF_LINK_POLICY:
-+ hci_cs_link_policy(hdev, ocf, cs->status);
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command Status OGF %x", hdev->name, ogf);
-+ break;
-+ };
-+
-+ if (cs->ncmd) {
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ if (!skb_queue_empty(&hdev->cmd_q))
-+ hci_sched_cmd(hdev);
-+ }
-+ break;
-+
-+ case EVT_CMD_COMPLETE:
-+ ec = (evt_cmd_complete *) skb->data;
-+ skb_pull(skb, EVT_CMD_COMPLETE_SIZE);
-+
-+ opcode = __le16_to_cpu(ec->opcode);
-+ ogf = cmd_opcode_ogf(opcode);
-+ ocf = cmd_opcode_ocf(opcode);
-+
-+ switch (ogf) {
-+ case OGF_INFO_PARAM:
-+ hci_cc_info_param(hdev, ocf, skb);
-+ break;
-+
-+ case OGF_HOST_CTL:
-+ hci_cc_host_ctl(hdev, ocf, skb);
-+ break;
-+
-+ case OGF_LINK_CTL:
-+ hci_cc_link_ctl(hdev, ocf, skb);
-+ break;
-+
-+ case OGF_LINK_POLICY:
-+ hci_cc_link_policy(hdev, ocf, skb);
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command Completed OGF %x", hdev->name, ogf);
-+ break;
-+ };
-+
-+ if (ec->ncmd) {
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ if (!skb_queue_empty(&hdev->cmd_q))
-+ hci_sched_cmd(hdev);
-+ }
-+ break;
-+ };
-+
-+ kfree_skb(skb);
-+ hdev->stat.evt_rx++;
-+}
-+
-+/* General internal stack event */
-+void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data)
-+{
-+ hci_event_hdr *eh;
-+ evt_stack_internal *si;
-+ struct sk_buff *skb;
-+ int size;
-+ void *ptr;
-+
-+ size = HCI_EVENT_HDR_SIZE + EVT_STACK_INTERNAL_SIZE + dlen;
-+ skb = bluez_skb_alloc(size, GFP_ATOMIC);
-+ if (!skb)
-+ return;
-+
-+ ptr = skb_put(skb, size);
-+
-+ eh = ptr;
-+ eh->evt = EVT_STACK_INTERNAL;
-+ eh->plen = EVT_STACK_INTERNAL_SIZE + dlen;
-+ ptr += HCI_EVENT_HDR_SIZE;
-+
-+ si = ptr;
-+ si->type = type;
-+ memcpy(si->data, data, dlen);
-+
-+ skb->pkt_type = HCI_EVENT_PKT;
-+ skb->dev = (void *) hdev;
-+ hci_send_to_sock(hdev, skb);
-+ kfree_skb(skb);
-+}
-diff -urN linux-2.4.18/net/bluetooth/hci_sock.c linux-2.4.18-mh15/net/bluetooth/hci_sock.c
---- linux-2.4.18/net/bluetooth/hci_sock.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/hci_sock.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,7 +25,7 @@
- /*
- * BlueZ HCI socket layer.
- *
-- * $Id: hci_sock.c,v 1.9 2001/08/05 06:02:16 maxk Exp $
-+ * $Id: hci_sock.c,v 1.5 2002/07/22 20:32:54 maxk Exp $
- */
-
- #include <linux/config.h>
-@@ -49,45 +49,54 @@
-
- #include <asm/system.h>
- #include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
-
- #ifndef HCI_SOCK_DEBUG
--#undef DBG
--#define DBG( A... )
-+#undef BT_DBG
-+#define BT_DBG( A... )
- #endif
-
--/* HCI socket interface */
-+/* ----- HCI socket interface ----- */
-+
-+/* Security filter */
-+static struct hci_sec_filter hci_sec_filter = {
-+ /* Packet types */
-+ 0x10,
-+ /* Events */
-+ { 0x1000d9fe, 0x0000300c },
-+ /* Commands */
-+ {
-+ { 0x0 },
-+ /* OGF_LINK_CTL */
-+ { 0xbe000006, 0x00000001, 0x0000, 0x00 },
-+ /* OGF_LINK_POLICY */
-+ { 0x00005200, 0x00000000, 0x0000, 0x00 },
-+ /* OGF_HOST_CTL */
-+ { 0xaab00200, 0x2b402aaa, 0x0154, 0x00 },
-+ /* OGF_INFO_PARAM */
-+ { 0x000002be, 0x00000000, 0x0000, 0x00 },
-+ /* OGF_STATUS_PARAM */
-+ { 0x000000ea, 0x00000000, 0x0000, 0x00 }
-+ }
-+};
-
- static struct bluez_sock_list hci_sk_list = {
- lock: RW_LOCK_UNLOCKED
- };
-
--static struct sock *hci_sock_lookup(struct hci_dev *hdev)
--{
-- struct sock *sk;
--
-- read_lock(&hci_sk_list.lock);
-- for (sk = hci_sk_list.head; sk; sk = sk->next) {
-- if (hci_pi(sk)->hdev == hdev)
-- break;
-- }
-- read_unlock(&hci_sk_list.lock);
-- return sk;
--}
--
- /* Send frame to RAW socket */
- void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb)
- {
- struct sock * sk;
-
-- DBG("hdev %p len %d", hdev, skb->len);
-+ BT_DBG("hdev %p len %d", hdev, skb->len);
-
- read_lock(&hci_sk_list.lock);
- for (sk = hci_sk_list.head; sk; sk = sk->next) {
-- struct hci_filter *flt;
-+ struct hci_filter *flt;
- struct sk_buff *nskb;
-
- if (sk->state != BT_BOUND || hci_pi(sk)->hdev != hdev)
-@@ -100,13 +109,19 @@
- /* Apply filter */
- flt = &hci_pi(sk)->filter;
-
-- if (!test_bit(skb->pkt_type, &flt->type_mask))
-+ if (!hci_test_bit((skb->pkt_type & HCI_FLT_TYPE_BITS), &flt->type_mask))
- continue;
-
- if (skb->pkt_type == HCI_EVENT_PKT) {
-- register int evt = (*(__u8 *)skb->data & 63);
-+ register int evt = (*(__u8 *)skb->data & HCI_FLT_EVENT_BITS);
-+
-+ if (!hci_test_bit(evt, &flt->event_mask))
-+ continue;
-
-- if (!test_bit(evt, &flt->event_mask))
-+ if (flt->opcode && ((evt == EVT_CMD_COMPLETE &&
-+ flt->opcode != *(__u16 *)(skb->data + 3)) ||
-+ (evt == EVT_CMD_STATUS &&
-+ flt->opcode != *(__u16 *)(skb->data + 4))))
- continue;
- }
-
-@@ -116,8 +131,8 @@
- /* Put type byte before the data */
- memcpy(skb_push(nskb, 1), &nskb->pkt_type, 1);
-
-- skb_queue_tail(&sk->receive_queue, nskb);
-- sk->data_ready(sk, nskb->len);
-+ if (sock_queue_rcv_skb(sk, nskb))
-+ kfree_skb(nskb);
- }
- read_unlock(&hci_sk_list.lock);
- }
-@@ -127,7 +142,7 @@
- struct sock *sk = sock->sk;
- struct hci_dev *hdev = hci_pi(sk)->hdev;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p sk %p", sock, sk);
-
- if (!sk)
- return 0;
-@@ -135,9 +150,7 @@
- bluez_sock_unlink(&hci_sk_list, sk);
-
- if (hdev) {
-- if (!hci_sock_lookup(hdev))
-- hdev->flags &= ~HCI_SOCK;
--
-+ atomic_dec(&hdev->promisc);
- hci_dev_put(hdev);
- }
-
-@@ -149,24 +162,55 @@
- sock_put(sk);
-
- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
--static int hci_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+/* Ioctls that require bound socket */
-+static inline int hci_sock_bound_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg)
- {
-- struct sock *sk = sock->sk;
- struct hci_dev *hdev = hci_pi(sk)->hdev;
-- __u32 mode;
-
-- DBG("cmd %x arg %lx", cmd, arg);
-+ if (!hdev)
-+ return -EBADFD;
-
- switch (cmd) {
-- case HCIGETINFO:
-- return hci_dev_info(arg);
-+ case HCISETRAW:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-
-+ if (arg)
-+ set_bit(HCI_RAW, &hdev->flags);
-+ else
-+ clear_bit(HCI_RAW, &hdev->flags);
-+
-+ return 0;
-+
-+ case HCIGETCONNINFO:
-+ return hci_get_conn_info(hdev, arg);
-+
-+ default:
-+ if (hdev->ioctl)
-+ return hdev->ioctl(hdev, cmd, arg);
-+ return -EINVAL;
-+ }
-+}
-+
-+static int hci_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct sock *sk = sock->sk;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
- case HCIGETDEVLIST:
-- return hci_dev_list(arg);
-+ return hci_get_dev_list(arg);
-+
-+ case HCIGETDEVINFO:
-+ return hci_get_dev_info(arg);
-+
-+ case HCIGETCONNLIST:
-+ return hci_get_conn_list(arg);
-
- case HCIDEVUP:
- if (!capable(CAP_NET_ADMIN))
-@@ -183,48 +227,31 @@
- return -EACCES;
- return hci_dev_reset(arg);
-
-- case HCIRESETSTAT:
-+ case HCIDEVRESTAT:
- if (!capable(CAP_NET_ADMIN))
- return -EACCES;
- return hci_dev_reset_stat(arg);
-
- case HCISETSCAN:
-- if (!capable(CAP_NET_ADMIN))
-- return -EACCES;
-- return hci_dev_setscan(arg);
--
- case HCISETAUTH:
-- if (!capable(CAP_NET_ADMIN))
-- return -EACCES;
-- return hci_dev_setauth(arg);
--
-- case HCISETRAW:
-- if (!capable(CAP_NET_ADMIN))
-- return -EACCES;
--
-- if (!hdev)
-- return -EBADFD;
--
-- if (arg)
-- mode = HCI_RAW;
-- else
-- mode = HCI_NORMAL;
--
-- return hci_dev_setmode(hdev, mode);
--
-+ case HCISETENCRYPT:
- case HCISETPTYPE:
-+ case HCISETLINKPOL:
-+ case HCISETLINKMODE:
-+ case HCISETACLMTU:
-+ case HCISETSCOMTU:
- if (!capable(CAP_NET_ADMIN))
- return -EACCES;
-- return hci_dev_setptype(arg);
-+ return hci_dev_cmd(cmd, arg);
-
- case HCIINQUIRY:
- return hci_inquiry(arg);
-
-- case HCIGETCONNLIST:
-- return hci_conn_list(arg);
--
- default:
-- return -EINVAL;
-+ lock_sock(sk);
-+ err = hci_sock_bound_ioctl(sk, cmd, arg);
-+ release_sock(sk);
-+ return err;
- };
- }
-
-@@ -233,28 +260,35 @@
- struct sockaddr_hci *haddr = (struct sockaddr_hci *) addr;
- struct sock *sk = sock->sk;
- struct hci_dev *hdev = NULL;
-+ int err = 0;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p sk %p", sock, sk);
-
- if (!haddr || haddr->hci_family != AF_BLUETOOTH)
- return -EINVAL;
-
-+ lock_sock(sk);
-+
- if (hci_pi(sk)->hdev) {
-- /* Already bound */
-- return 0;
-+ err = -EALREADY;
-+ goto done;
- }
-
- if (haddr->hci_dev != HCI_DEV_NONE) {
-- if (!(hdev = hci_dev_get(haddr->hci_dev)))
-- return -ENODEV;
-+ if (!(hdev = hci_dev_get(haddr->hci_dev))) {
-+ err = -ENODEV;
-+ goto done;
-+ }
-
-- hdev->flags |= HCI_SOCK;
-+ atomic_inc(&hdev->promisc);
- }
-
- hci_pi(sk)->hdev = hdev;
- sk->state = BT_BOUND;
-
-- return 0;
-+done:
-+ release_sock(sk);
-+ return err;
- }
-
- static int hci_sock_getname(struct socket *sock, struct sockaddr *addr, int *addr_len, int peer)
-@@ -262,73 +296,44 @@
- struct sockaddr_hci *haddr = (struct sockaddr_hci *) addr;
- struct sock *sk = sock->sk;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ lock_sock(sk);
-
- *addr_len = sizeof(*haddr);
- haddr->hci_family = AF_BLUETOOTH;
- haddr->hci_dev = hci_pi(sk)->hdev->id;
-
-+ release_sock(sk);
- return 0;
- }
-
--static int hci_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len,
-- struct scm_cookie *scm)
--{
-- struct sock *sk = sock->sk;
-- struct hci_dev *hdev = hci_pi(sk)->hdev;
-- struct sk_buff *skb;
-- int err;
--
-- DBG("sock %p sk %p", sock, sk);
--
-- if (msg->msg_flags & MSG_OOB)
-- return -EOPNOTSUPP;
--
-- if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_NOSIGNAL|MSG_ERRQUEUE))
-- return -EINVAL;
--
-- if (!hdev)
-- return -EBADFD;
--
-- if (!(skb = bluez_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err)))
-- return err;
--
-- if (memcpy_fromiovec(skb_put(skb, len), msg->msg_iov, len)) {
-- kfree_skb(skb);
-- return -EFAULT;
-- }
--
-- skb->dev = (void *) hdev;
-- skb->pkt_type = *((unsigned char *) skb->data);
-- skb_pull(skb, 1);
--
-- /* Send frame to HCI core */
-- hci_send_raw(skb);
--
-- return len;
--}
--
- static inline void hci_sock_cmsg(struct sock *sk, struct msghdr *msg, struct sk_buff *skb)
- {
- __u32 mask = hci_pi(sk)->cmsg_mask;
-
- if (mask & HCI_CMSG_DIR)
- put_cmsg(msg, SOL_HCI, HCI_CMSG_DIR, sizeof(int), &bluez_cb(skb)->incomming);
-+
-+ if (mask & HCI_CMSG_TSTAMP)
-+ put_cmsg(msg, SOL_HCI, HCI_CMSG_TSTAMP, sizeof(skb->stamp), &skb->stamp);
- }
-
--static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len,
-- int flags, struct scm_cookie *scm)
-+static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm)
- {
- int noblock = flags & MSG_DONTWAIT;
- struct sock *sk = sock->sk;
- struct sk_buff *skb;
- int copied, err;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p, sk %p", sock, sk);
-
-- if (flags & (MSG_OOB | MSG_PEEK))
-+ if (flags & (MSG_OOB))
- return -EOPNOTSUPP;
-
-+ if (sk->state == BT_CLOSED)
-+ return 0;
-+
- if (!(skb = skb_recv_datagram(sk, flags, noblock, &err)))
- return err;
-
-@@ -343,28 +348,107 @@
- skb->h.raw = skb->data;
- err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
-
-- if (hci_pi(sk)->cmsg_mask)
-- hci_sock_cmsg(sk, msg, skb);
--
-+ hci_sock_cmsg(sk, msg, skb);
-+
- skb_free_datagram(sk, skb);
-
- return err ? : copied;
- }
-
-+static int hci_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len,
-+ struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ struct hci_dev *hdev;
-+ struct sk_buff *skb;
-+ int err;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_NOSIGNAL|MSG_ERRQUEUE))
-+ return -EINVAL;
-+
-+ if (len < 4)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (!(hdev = hci_pi(sk)->hdev)) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ if (!(skb = bluez_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err)))
-+ goto done;
-+
-+ if (memcpy_fromiovec(skb_put(skb, len), msg->msg_iov, len)) {
-+ err = -EFAULT;
-+ goto drop;
-+ }
-+
-+ skb->pkt_type = *((unsigned char *) skb->data);
-+ skb_pull(skb, 1);
-+ skb->dev = (void *) hdev;
-+
-+ if (skb->pkt_type == HCI_COMMAND_PKT) {
-+ u16 opcode = __le16_to_cpu(get_unaligned((u16 *)skb->data));
-+ u16 ogf = cmd_opcode_ogf(opcode);
-+ u16 ocf = cmd_opcode_ocf(opcode);
-+
-+ if (((ogf > HCI_SFLT_MAX_OGF) ||
-+ !hci_test_bit(ocf & HCI_FLT_OCF_BITS, &hci_sec_filter.ocf_mask[ogf])) &&
-+ !capable(CAP_NET_RAW)) {
-+ err = -EPERM;
-+ goto drop;
-+ }
-+
-+ if (test_bit(HCI_RAW, &hdev->flags) || (ogf == OGF_VENDOR_CMD)) {
-+ skb_queue_tail(&hdev->raw_q, skb);
-+ hci_sched_tx(hdev);
-+ } else {
-+ skb_queue_tail(&hdev->cmd_q, skb);
-+ hci_sched_cmd(hdev);
-+ }
-+ } else {
-+ if (!capable(CAP_NET_RAW)) {
-+ err = -EPERM;
-+ goto drop;
-+ }
-+
-+ skb_queue_tail(&hdev->raw_q, skb);
-+ hci_sched_tx(hdev);
-+ }
-+
-+ err = len;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+
-+drop:
-+ kfree_skb(skb);
-+ goto done;
-+}
-+
- int hci_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int len)
- {
- struct sock *sk = sock->sk;
-- struct hci_filter flt;
-+ struct hci_filter flt = { opcode: 0 };
- int err = 0, opt = 0;
-
-- DBG("sk %p, opt %d", sk, optname);
-+ BT_DBG("sk %p, opt %d", sk, optname);
-
- lock_sock(sk);
-
- switch (optname) {
- case HCI_DATA_DIR:
-- if (get_user(opt, (int *)optval))
-- return -EFAULT;
-+ if (get_user(opt, (int *)optval)) {
-+ err = -EFAULT;
-+ break;
-+ }
-
- if (opt)
- hci_pi(sk)->cmsg_mask |= HCI_CMSG_DIR;
-@@ -372,12 +456,31 @@
- hci_pi(sk)->cmsg_mask &= ~HCI_CMSG_DIR;
- break;
-
-+ case HCI_TIME_STAMP:
-+ if (get_user(opt, (int *)optval)) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (opt)
-+ hci_pi(sk)->cmsg_mask |= HCI_CMSG_TSTAMP;
-+ else
-+ hci_pi(sk)->cmsg_mask &= ~HCI_CMSG_TSTAMP;
-+ break;
-+
- case HCI_FILTER:
- len = MIN(len, sizeof(struct hci_filter));
- if (copy_from_user(&flt, optval, len)) {
- err = -EFAULT;
- break;
- }
-+
-+ if (!capable(CAP_NET_RAW)) {
-+ flt.type_mask &= hci_sec_filter.type_mask;
-+ flt.event_mask[0] &= hci_sec_filter.event_mask[0];
-+ flt.event_mask[1] &= hci_sec_filter.event_mask[1];
-+ }
-+
- memcpy(&hci_pi(sk)->filter, &flt, len);
- break;
-
-@@ -409,6 +512,16 @@
- return -EFAULT;
- break;
-
-+ case HCI_TIME_STAMP:
-+ if (hci_pi(sk)->cmsg_mask & HCI_CMSG_TSTAMP)
-+ opt = 1;
-+ else
-+ opt = 0;
-+
-+ if (put_user(opt, optval))
-+ return -EFAULT;
-+ break;
-+
- case HCI_FILTER:
- len = MIN(len, sizeof(struct hci_filter));
- if (copy_to_user(optval, &hci_pi(sk)->filter, len))
-@@ -446,7 +559,7 @@
- {
- struct sock *sk;
-
-- DBG("sock %p", sock);
-+ BT_DBG("sock %p", sock);
-
- if (sock->type != SOCK_RAW)
- return -ESOCKTNOSUPPORT;
-@@ -464,44 +577,31 @@
- sk->protocol = protocol;
- sk->state = BT_OPEN;
-
-- /* Initialize filter */
-- hci_pi(sk)->filter.type_mask = (1<<HCI_EVENT_PKT);
-- hci_pi(sk)->filter.event_mask[0] = ~0L;
-- hci_pi(sk)->filter.event_mask[1] = ~0L;
--
- bluez_sock_link(&hci_sk_list, sk);
-
- MOD_INC_USE_COUNT;
--
- return 0;
- }
-
- static int hci_sock_dev_event(struct notifier_block *this, unsigned long event, void *ptr)
- {
- struct hci_dev *hdev = (struct hci_dev *) ptr;
-- struct sk_buff *skb;
--
-- DBG("hdev %s event %ld", hdev->name, event);
-+ evt_si_device sd;
-+
-+ BT_DBG("hdev %s event %ld", hdev->name, event);
-
- /* Send event to sockets */
-- if ((skb = bluez_skb_alloc(HCI_EVENT_HDR_SIZE + EVT_HCI_DEV_EVENT_SIZE, GFP_ATOMIC))) {
-- hci_event_hdr eh = { EVT_HCI_DEV_EVENT, EVT_HCI_DEV_EVENT_SIZE };
-- evt_hci_dev_event he = { event, hdev->id };
--
-- skb->pkt_type = HCI_EVENT_PKT;
-- memcpy(skb_put(skb, HCI_EVENT_HDR_SIZE), &eh, HCI_EVENT_HDR_SIZE);
-- memcpy(skb_put(skb, EVT_HCI_DEV_EVENT_SIZE), &he, EVT_HCI_DEV_EVENT_SIZE);
--
-- hci_send_to_sock(NULL, skb);
-- kfree_skb(skb);
-- }
--
-+ sd.event = event;
-+ sd.dev_id = hdev->id;
-+ hci_si_event(NULL, EVT_SI_DEVICE, EVT_SI_DEVICE_SIZE, &sd);
-+
- if (event == HCI_DEV_UNREG) {
- struct sock *sk;
-
- /* Detach sockets from device */
- read_lock(&hci_sk_list.lock);
- for (sk = hci_sk_list.head; sk; sk = sk->next) {
-+ bh_lock_sock(sk);
- if (hci_pi(sk)->hdev == hdev) {
- hci_pi(sk)->hdev = NULL;
- sk->err = EPIPE;
-@@ -510,6 +610,7 @@
-
- hci_dev_put(hdev);
- }
-+ bh_unlock_sock(sk);
- }
- read_unlock(&hci_sk_list.lock);
- }
-@@ -529,21 +630,19 @@
- int hci_sock_init(void)
- {
- if (bluez_sock_register(BTPROTO_HCI, &hci_sock_family_ops)) {
-- ERR("Can't register HCI socket");
-+ BT_ERR("Can't register HCI socket");
- return -EPROTO;
- }
-
- hci_register_notifier(&hci_sock_nblock);
--
- return 0;
- }
-
- int hci_sock_cleanup(void)
- {
- if (bluez_sock_unregister(BTPROTO_HCI))
-- ERR("Can't unregister HCI socket");
-+ BT_ERR("Can't unregister HCI socket");
-
- hci_unregister_notifier(&hci_sock_nblock);
--
- return 0;
- }
-diff -urN linux-2.4.18/net/bluetooth/hidp/Config.in linux-2.4.18-mh15/net/bluetooth/hidp/Config.in
---- linux-2.4.18/net/bluetooth/hidp/Config.in 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hidp/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,5 @@
-+#
-+# Bluetooth HIDP layer configuration
-+#
-+
-+dep_tristate 'HIDP protocol support' CONFIG_BLUEZ_HIDP $CONFIG_INPUT $CONFIG_BLUEZ_L2CAP
-diff -urN linux-2.4.18/net/bluetooth/hidp/core.c linux-2.4.18-mh15/net/bluetooth/hidp/core.c
---- linux-2.4.18/net/bluetooth/hidp/core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hidp/core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,655 @@
-+/*
-+ HIDP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <linux/init.h>
-+#include <net/sock.h>
-+
-+#include <linux/input.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "hidp.h"
-+
-+#ifndef CONFIG_BT_HIDP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.0"
-+
-+static DECLARE_RWSEM(hidp_session_sem);
-+static LIST_HEAD(hidp_session_list);
-+
-+static unsigned char hidp_keycode[256] = {
-+ 0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38,
-+ 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3,
-+ 4, 5, 6, 7, 8, 9, 10, 11, 28, 1, 14, 15, 57, 12, 13, 26,
-+ 27, 43, 43, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64,
-+ 65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106,
-+ 105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71,
-+ 72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190,
-+ 191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113,
-+ 115,114, 0, 0, 0,121, 0, 89, 93,124, 92, 94, 95, 0, 0, 0,
-+ 122,123, 90, 91, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+ 29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,
-+ 150,158,159,128,136,177,178,176,142,152,173,140
-+};
-+
-+static struct hidp_session *__hidp_get_session(bdaddr_t *bdaddr)
-+{
-+ struct hidp_session *session;
-+ struct list_head *p;
-+
-+ BT_DBG("");
-+
-+ list_for_each(p, &hidp_session_list) {
-+ session = list_entry(p, struct hidp_session, list);
-+ if (!bacmp(bdaddr, &session->bdaddr))
-+ return session;
-+ }
-+ return NULL;
-+}
-+
-+static void __hidp_link_session(struct hidp_session *session)
-+{
-+ MOD_INC_USE_COUNT;
-+ list_add(&session->list, &hidp_session_list);
-+}
-+
-+static void __hidp_unlink_session(struct hidp_session *session)
-+{
-+ list_del(&session->list);
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void __hidp_copy_session(struct hidp_session *session, struct hidp_conninfo *ci)
-+{
-+ bacpy(&ci->bdaddr, &session->bdaddr);
-+
-+ ci->flags = session->flags;
-+ ci->state = session->state;
-+
-+ ci->vendor = 0x0000;
-+ ci->product = 0x0000;
-+ ci->version = 0x0000;
-+ memset(ci->name, 0, 128);
-+
-+ if (session->input) {
-+ ci->vendor = session->input->idvendor;
-+ ci->product = session->input->idproduct;
-+ ci->version = session->input->idversion;
-+ if (session->input->name)
-+ strncpy(ci->name, session->input->name, 128);
-+ else
-+ strncpy(ci->name, "HID Boot Device", 128);
-+ }
-+}
-+
-+static int hidp_input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
-+{
-+ struct hidp_session *session = dev->private;
-+ struct sk_buff *skb;
-+ unsigned char newleds;
-+
-+ BT_DBG("session %p hid %p data %p size %d", session, device, data, size);
-+
-+ if (type != EV_LED)
-+ return -1;
-+
-+ newleds = (!!test_bit(LED_KANA, dev->led) << 3) |
-+ (!!test_bit(LED_COMPOSE, dev->led) << 3) |
-+ (!!test_bit(LED_SCROLLL, dev->led) << 2) |
-+ (!!test_bit(LED_CAPSL, dev->led) << 1) |
-+ (!!test_bit(LED_NUML, dev->led));
-+
-+ if (session->leds == newleds)
-+ return 0;
-+
-+ session->leds = newleds;
-+
-+ if (!(skb = alloc_skb(3, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for new frame");
-+ return -ENOMEM;
-+ }
-+
-+ *skb_put(skb, 1) = 0xa2;
-+ *skb_put(skb, 1) = 0x01;
-+ *skb_put(skb, 1) = newleds;
-+
-+ skb_queue_tail(&session->intr_transmit, skb);
-+
-+ hidp_schedule(session);
-+
-+ return 0;
-+}
-+
-+static void hidp_input_report(struct hidp_session *session, struct sk_buff *skb)
-+{
-+ struct input_dev *dev = session->input;
-+ unsigned char *keys = session->keys;
-+ unsigned char *udata = skb->data + 1;
-+ signed char *sdata = skb->data + 1;
-+ int i, size = skb->len - 1;
-+
-+ switch (skb->data[0]) {
-+ case 0x01: /* Keyboard report */
-+ for (i = 0; i < 8; i++)
-+ input_report_key(dev, hidp_keycode[i + 224], (udata[0] >> i) & 1);
-+
-+ for (i = 2; i < 8; i++) {
-+ if (keys[i] > 3 && memscan(udata + 2, keys[i], 6) == udata + 8) {
-+ if (hidp_keycode[keys[i]])
-+ input_report_key(dev, hidp_keycode[keys[i]], 0);
-+ else
-+ BT_ERR("Unknown key (scancode %#x) released.", keys[i]);
-+ }
-+
-+ if (udata[i] > 3 && memscan(keys + 2, udata[i], 6) == keys + 8) {
-+ if (hidp_keycode[udata[i]])
-+ input_report_key(dev, hidp_keycode[udata[i]], 1);
-+ else
-+ BT_ERR("Unknown key (scancode %#x) pressed.", udata[i]);
-+ }
-+ }
-+
-+ memcpy(keys, udata, 8);
-+ break;
-+
-+ case 0x02: /* Mouse report */
-+ input_report_key(dev, BTN_LEFT, sdata[0] & 0x01);
-+ input_report_key(dev, BTN_RIGHT, sdata[0] & 0x02);
-+ input_report_key(dev, BTN_MIDDLE, sdata[0] & 0x04);
-+ input_report_key(dev, BTN_SIDE, sdata[0] & 0x08);
-+ input_report_key(dev, BTN_EXTRA, sdata[0] & 0x10);
-+
-+ input_report_rel(dev, REL_X, sdata[1]);
-+ input_report_rel(dev, REL_Y, sdata[2]);
-+
-+ if (size > 3)
-+ input_report_rel(dev, REL_WHEEL, sdata[3]);
-+ break;
-+ }
-+
-+ input_event(dev, EV_RST, 0, 0);
-+}
-+
-+static void hidp_idle_timeout(unsigned long arg)
-+{
-+ struct hidp_session *session = (struct hidp_session *) arg;
-+
-+ atomic_inc(&session->terminate);
-+ hidp_schedule(session);
-+}
-+
-+static inline void hidp_set_timer(struct hidp_session *session)
-+{
-+ if (session->idle_to > 0)
-+ mod_timer(&session->timer, jiffies + HZ * session->idle_to);
-+}
-+
-+static inline void hidp_del_timer(struct hidp_session *session)
-+{
-+ if (session->idle_to > 0)
-+ del_timer(&session->timer);
-+}
-+
-+static inline void hidp_send_message(struct hidp_session *session, unsigned char hdr)
-+{
-+ struct sk_buff *skb;
-+
-+ BT_DBG("session %p", session);
-+
-+ if (!(skb = alloc_skb(1, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for message");
-+ return;
-+ }
-+
-+ *skb_put(skb, 1) = hdr;
-+
-+ skb_queue_tail(&session->ctrl_transmit, skb);
-+
-+ hidp_schedule(session);
-+}
-+
-+static inline int hidp_recv_frame(struct hidp_session *session, struct sk_buff *skb)
-+{
-+ __u8 hdr;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ hdr = skb->data[0];
-+ skb_pull(skb, 1);
-+
-+ if (hdr == 0xa1) {
-+ hidp_set_timer(session);
-+
-+ if (session->input)
-+ hidp_input_report(session, skb);
-+ } else {
-+ BT_DBG("Unsupported protocol header 0x%02x", hdr);
-+ }
-+
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static int hidp_send_frame(struct socket *sock, unsigned char *data, int len)
-+{
-+ struct iovec iv = { data, len };
-+ struct msghdr msg;
-+
-+ BT_DBG("sock %p data %p len %d", sock, data, len);
-+
-+ if (!len)
-+ return 0;
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 1;
-+ msg.msg_iov = &iv;
-+
-+ return sock_sendmsg(sock, &msg, len);
-+}
-+
-+static int hidp_process_transmit(struct hidp_session *session)
-+{
-+ struct sk_buff *skb;
-+
-+ BT_DBG("session %p", session);
-+
-+ while ((skb = skb_dequeue(&session->ctrl_transmit))) {
-+ if (hidp_send_frame(session->ctrl_sock, skb->data, skb->len) < 0) {
-+ skb_queue_head(&session->ctrl_transmit, skb);
-+ break;
-+ }
-+
-+ hidp_set_timer(session);
-+ kfree_skb(skb);
-+ }
-+
-+ while ((skb = skb_dequeue(&session->intr_transmit))) {
-+ if (hidp_send_frame(session->intr_sock, skb->data, skb->len) < 0) {
-+ skb_queue_head(&session->intr_transmit, skb);
-+ break;
-+ }
-+
-+ hidp_set_timer(session);
-+ kfree_skb(skb);
-+ }
-+
-+ return skb_queue_len(&session->ctrl_transmit) +
-+ skb_queue_len(&session->intr_transmit);
-+}
-+
-+static int hidp_session(void *arg)
-+{
-+ struct hidp_session *session = arg;
-+ struct sock *ctrl_sk = session->ctrl_sock->sk;
-+ struct sock *intr_sk = session->intr_sock->sk;
-+ struct sk_buff *skb;
-+ int vendor = 0x0000, product = 0x0000;
-+ wait_queue_t ctrl_wait, intr_wait;
-+ unsigned long timeo = HZ;
-+
-+ BT_DBG("session %p", session);
-+
-+ if (session->input) {
-+ vendor = session->input->idvendor;
-+ product = session->input->idproduct;
-+ }
-+
-+ daemonize(); reparent_to_init();
-+
-+ sprintf(current->comm, "khidpd_%04x%04x", vendor, product);
-+
-+ sigfillset(&current->blocked);
-+ flush_signals(current);
-+
-+ current->nice = -15;
-+
-+ set_fs(KERNEL_DS);
-+
-+ init_waitqueue_entry(&ctrl_wait, current);
-+ init_waitqueue_entry(&intr_wait, current);
-+ add_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+ add_wait_queue(intr_sk->sleep, &intr_wait);
-+ while (!atomic_read(&session->terminate)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (ctrl_sk->state != BT_CONNECTED || intr_sk->state != BT_CONNECTED)
-+ break;
-+
-+ while ((skb = skb_dequeue(&ctrl_sk->receive_queue))) {
-+ skb_orphan(skb);
-+ hidp_recv_frame(session, skb);
-+ }
-+
-+ while ((skb = skb_dequeue(&intr_sk->receive_queue))) {
-+ skb_orphan(skb);
-+ hidp_recv_frame(session, skb);
-+ }
-+
-+ hidp_process_transmit(session);
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(intr_sk->sleep, &intr_wait);
-+ remove_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+
-+ down_write(&hidp_session_sem);
-+
-+ hidp_del_timer(session);
-+
-+ if (intr_sk->state != BT_CONNECTED) {
-+ init_waitqueue_entry(&ctrl_wait, current);
-+ add_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+ while (timeo && ctrl_sk->state != BT_CLOSED) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(ctrl_sk->sleep, &ctrl_wait);
-+ timeo = HZ;
-+ }
-+
-+ fput(session->ctrl_sock->file);
-+
-+ init_waitqueue_entry(&intr_wait, current);
-+ add_wait_queue(intr_sk->sleep, &intr_wait);
-+ while (timeo && intr_sk->state != BT_CLOSED) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(intr_sk->sleep, &intr_wait);
-+
-+ fput(session->intr_sock->file);
-+
-+ __hidp_unlink_session(session);
-+
-+ if (session->input) {
-+ input_unregister_device(session->input);
-+ kfree(session->input);
-+ }
-+
-+ up_write(&hidp_session_sem);
-+
-+ kfree(session);
-+ return 0;
-+}
-+
-+static inline void hidp_setup_input(struct hidp_session *session, struct hidp_connadd_req *req)
-+{
-+ struct input_dev *input = session->input;
-+ int i;
-+
-+ input->private = session;
-+
-+ input->idbus = BUS_BLUETOOTH;
-+ input->idvendor = req->vendor;
-+ input->idproduct = req->product;
-+ input->idversion = req->version;
-+
-+ if (req->subclass & 0x40) {
-+ set_bit(EV_KEY, input->evbit);
-+ set_bit(EV_LED, input->evbit);
-+ set_bit(EV_REP, input->evbit);
-+
-+ set_bit(LED_NUML, input->ledbit);
-+ set_bit(LED_CAPSL, input->ledbit);
-+ set_bit(LED_SCROLLL, input->ledbit);
-+ set_bit(LED_COMPOSE, input->ledbit);
-+ set_bit(LED_KANA, input->ledbit);
-+
-+ for (i = 0; i < sizeof(hidp_keycode); i++)
-+ set_bit(hidp_keycode[i], input->keybit);
-+ clear_bit(0, input->keybit);
-+ }
-+
-+ if (req->subclass & 0x80) {
-+ input->evbit[0] = BIT(EV_KEY) | BIT(EV_REL);
-+ input->keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | BIT(BTN_RIGHT) | BIT(BTN_MIDDLE);
-+ input->relbit[0] = BIT(REL_X) | BIT(REL_Y);
-+ input->keybit[LONG(BTN_MOUSE)] |= BIT(BTN_SIDE) | BIT(BTN_EXTRA);
-+ input->relbit[0] |= BIT(REL_WHEEL);
-+ }
-+
-+ input->event = hidp_input_event;
-+
-+ input_register_device(input);
-+}
-+
-+int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock)
-+{
-+ struct hidp_session *session, *s;
-+ int err;
-+
-+ BT_DBG("");
-+
-+ if (bacmp(&bluez_pi(ctrl_sock->sk)->src, &bluez_pi(intr_sock->sk)->src) ||
-+ bacmp(&bluez_pi(ctrl_sock->sk)->dst, &bluez_pi(intr_sock->sk)->dst))
-+ return -ENOTUNIQ;
-+
-+ session = kmalloc(sizeof(struct hidp_session), GFP_KERNEL);
-+ if (!session)
-+ return -ENOMEM;
-+ memset(session, 0, sizeof(struct hidp_session));
-+
-+ session->input = kmalloc(sizeof(struct input_dev), GFP_KERNEL);
-+ if (!session->input) {
-+ kfree(session);
-+ return -ENOMEM;
-+ }
-+ memset(session->input, 0, sizeof(struct input_dev));
-+
-+ down_write(&hidp_session_sem);
-+
-+ s = __hidp_get_session(&bluez_pi(ctrl_sock->sk)->dst);
-+ if (s && s->state == BT_CONNECTED) {
-+ err = -EEXIST;
-+ goto failed;
-+ }
-+
-+ bacpy(&session->bdaddr, &bluez_pi(ctrl_sock->sk)->dst);
-+
-+ session->ctrl_mtu = min_t(uint, l2cap_pi(ctrl_sock->sk)->omtu, l2cap_pi(ctrl_sock->sk)->imtu);
-+ session->intr_mtu = min_t(uint, l2cap_pi(intr_sock->sk)->omtu, l2cap_pi(intr_sock->sk)->imtu);
-+
-+ BT_DBG("ctrl mtu %d intr mtu %d", session->ctrl_mtu, session->intr_mtu);
-+
-+ session->ctrl_sock = ctrl_sock;
-+ session->intr_sock = intr_sock;
-+ session->state = BT_CONNECTED;
-+
-+ init_timer(&session->timer);
-+
-+ session->timer.function = hidp_idle_timeout;
-+ session->timer.data = (unsigned long) session;
-+
-+ skb_queue_head_init(&session->ctrl_transmit);
-+ skb_queue_head_init(&session->intr_transmit);
-+
-+ session->flags = req->flags & (1 << HIDP_BLUETOOTH_VENDOR_ID);
-+ session->idle_to = req->idle_to;
-+
-+ if (session->input)
-+ hidp_setup_input(session, req);
-+
-+ __hidp_link_session(session);
-+
-+ hidp_set_timer(session);
-+
-+ err = kernel_thread(hidp_session, session, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+ if (err < 0)
-+ goto unlink;
-+
-+ if (session->input) {
-+ hidp_send_message(session, 0x70);
-+ session->flags |= (1 << HIDP_BOOT_PROTOCOL_MODE);
-+
-+ session->leds = 0xff;
-+ hidp_input_event(session->input, EV_LED, 0, 0);
-+ }
-+
-+ up_write(&hidp_session_sem);
-+ return 0;
-+
-+unlink:
-+ hidp_del_timer(session);
-+
-+ __hidp_unlink_session(session);
-+
-+ if (session->input)
-+ input_unregister_device(session->input);
-+
-+failed:
-+ up_write(&hidp_session_sem);
-+
-+ if (session->input)
-+ kfree(session->input);
-+
-+ kfree(session);
-+ return err;
-+}
-+
-+int hidp_del_connection(struct hidp_conndel_req *req)
-+{
-+ struct hidp_session *session;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&hidp_session_sem);
-+
-+ session = __hidp_get_session(&req->bdaddr);
-+ if (session) {
-+ if (req->flags & (1 << HIDP_VIRTUAL_CABLE_UNPLUG)) {
-+ hidp_send_message(session, 0x15);
-+ } else {
-+ /* Flush the transmit queues */
-+ skb_queue_purge(&session->ctrl_transmit);
-+ skb_queue_purge(&session->intr_transmit);
-+
-+ /* Kill session thread */
-+ atomic_inc(&session->terminate);
-+ hidp_schedule(session);
-+ }
-+ } else
-+ err = -ENOENT;
-+
-+ up_read(&hidp_session_sem);
-+ return err;
-+}
-+
-+int hidp_get_connlist(struct hidp_connlist_req *req)
-+{
-+ struct list_head *p;
-+ int err = 0, n = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&hidp_session_sem);
-+
-+ list_for_each(p, &hidp_session_list) {
-+ struct hidp_session *session;
-+ struct hidp_conninfo ci;
-+
-+ session = list_entry(p, struct hidp_session, list);
-+
-+ __hidp_copy_session(session, &ci);
-+
-+ if (copy_to_user(req->ci, &ci, sizeof(ci))) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (++n >= req->cnum)
-+ break;
-+
-+ req->ci++;
-+ }
-+ req->cnum = n;
-+
-+ up_read(&hidp_session_sem);
-+ return err;
-+}
-+
-+int hidp_get_conninfo(struct hidp_conninfo *ci)
-+{
-+ struct hidp_session *session;
-+ int err = 0;
-+
-+ down_read(&hidp_session_sem);
-+
-+ session = __hidp_get_session(&ci->bdaddr);
-+ if (session)
-+ __hidp_copy_session(session, ci);
-+ else
-+ err = -ENOENT;
-+
-+ up_read(&hidp_session_sem);
-+ return err;
-+}
-+
-+static int __init hidp_init(void)
-+{
-+ l2cap_load();
-+
-+ hidp_init_sockets();
-+
-+ BT_INFO("BlueZ HIDP ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>");
-+
-+ return 0;
-+}
-+
-+static void __exit hidp_exit(void)
-+{
-+ hidp_cleanup_sockets();
-+}
-+
-+module_init(hidp_init);
-+module_exit(hidp_exit);
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("Bluetooth HIDP ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/hidp/hidp.h linux-2.4.18-mh15/net/bluetooth/hidp/hidp.h
---- linux-2.4.18/net/bluetooth/hidp/hidp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hidp/hidp.h 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,122 @@
-+/*
-+ HIDP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#ifndef __HIDP_H
-+#define __HIDP_H
-+
-+#include <linux/types.h>
-+#include <net/bluetooth/bluetooth.h>
-+
-+/* HIDP ioctl defines */
-+#define HIDPCONNADD _IOW('H', 200, int)
-+#define HIDPCONNDEL _IOW('H', 201, int)
-+#define HIDPGETCONNLIST _IOR('H', 210, int)
-+#define HIDPGETCONNINFO _IOR('H', 211, int)
-+
-+#define HIDP_VIRTUAL_CABLE_UNPLUG 0
-+#define HIDP_BOOT_PROTOCOL_MODE 1
-+#define HIDP_BLUETOOTH_VENDOR_ID 9
-+
-+struct hidp_connadd_req {
-+ int ctrl_sock; // Connected control socket
-+ int intr_sock; // Connteted interrupt socket
-+ __u16 parser;
-+ __u16 rd_size;
-+ __u8 *rd_data;
-+ __u8 country;
-+ __u8 subclass;
-+ __u16 vendor;
-+ __u16 product;
-+ __u16 version;
-+ __u32 flags;
-+ __u32 idle_to;
-+ char name[128];
-+};
-+
-+struct hidp_conndel_req {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+};
-+
-+struct hidp_conninfo {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+ __u16 state;
-+ __u16 vendor;
-+ __u16 product;
-+ __u16 version;
-+ char name[128];
-+};
-+
-+struct hidp_connlist_req {
-+ __u32 cnum;
-+ struct hidp_conninfo *ci;
-+};
-+
-+int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock);
-+int hidp_del_connection(struct hidp_conndel_req *req);
-+int hidp_get_connlist(struct hidp_connlist_req *req);
-+int hidp_get_conninfo(struct hidp_conninfo *ci);
-+
-+/* HIDP session defines */
-+struct hidp_session {
-+ struct list_head list;
-+
-+ struct socket *ctrl_sock;
-+ struct socket *intr_sock;
-+
-+ bdaddr_t bdaddr;
-+
-+ unsigned long state;
-+ unsigned long flags;
-+ unsigned long idle_to;
-+
-+ uint ctrl_mtu;
-+ uint intr_mtu;
-+
-+ atomic_t terminate;
-+
-+ unsigned char keys[8];
-+ unsigned char leds;
-+
-+ struct input_dev *input;
-+
-+ struct timer_list timer;
-+
-+ struct sk_buff_head ctrl_transmit;
-+ struct sk_buff_head intr_transmit;
-+};
-+
-+static inline void hidp_schedule(struct hidp_session *session)
-+{
-+ struct sock *ctrl_sk = session->ctrl_sock->sk;
-+ struct sock *intr_sk = session->intr_sock->sk;
-+
-+ wake_up_interruptible(ctrl_sk->sleep);
-+ wake_up_interruptible(intr_sk->sleep);
-+}
-+
-+/* HIDP init defines */
-+extern int __init hidp_init_sockets(void);
-+extern void __exit hidp_cleanup_sockets(void);
-+
-+#endif /* __HIDP_H */
-diff -urN linux-2.4.18/net/bluetooth/hidp/Makefile linux-2.4.18-mh15/net/bluetooth/hidp/Makefile
---- linux-2.4.18/net/bluetooth/hidp/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hidp/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,10 @@
-+#
-+# Makefile for the Linux Bluetooth HIDP layer
-+#
-+
-+O_TARGET := hidp.o
-+
-+obj-y := core.o sock.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.18/net/bluetooth/hidp/sock.c linux-2.4.18-mh15/net/bluetooth/hidp/sock.c
---- linux-2.4.18/net/bluetooth/hidp/sock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/hidp/sock.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,212 @@
-+/*
-+ HIDP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <linux/init.h>
-+#include <net/sock.h>
-+
-+#include "hidp.h"
-+
-+#ifndef CONFIG_BT_HIDP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+static int hidp_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sock_orphan(sk);
-+ sock_put(sk);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct hidp_connadd_req ca;
-+ struct hidp_conndel_req cd;
-+ struct hidp_connlist_req cl;
-+ struct hidp_conninfo ci;
-+ struct socket *csock;
-+ struct socket *isock;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
-+ case HIDPCONNADD:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&ca, (void *) arg, sizeof(ca)))
-+ return -EFAULT;
-+
-+ csock = sockfd_lookup(ca.ctrl_sock, &err);
-+ if (!csock)
-+ return err;
-+
-+ isock = sockfd_lookup(ca.intr_sock, &err);
-+ if (!isock) {
-+ fput(csock->file);
-+ return err;
-+ }
-+
-+ if (csock->sk->state != BT_CONNECTED || isock->sk->state != BT_CONNECTED) {
-+ fput(csock->file);
-+ fput(isock->file);
-+ return -EBADFD;
-+ }
-+
-+ err = hidp_add_connection(&ca, csock, isock);
-+ if (!err) {
-+ if (copy_to_user((void *) arg, &ca, sizeof(ca)))
-+ err = -EFAULT;
-+ } else {
-+ fput(csock->file);
-+ fput(isock->file);
-+ }
-+
-+ return err;
-+
-+ case HIDPCONNDEL:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&cd, (void *) arg, sizeof(cd)))
-+ return -EFAULT;
-+
-+ return hidp_del_connection(&cd);
-+
-+ case HIDPGETCONNLIST:
-+ if (copy_from_user(&cl, (void *) arg, sizeof(cl)))
-+ return -EFAULT;
-+
-+ if (cl.cnum <= 0)
-+ return -EINVAL;
-+
-+ err = hidp_get_connlist(&cl);
-+ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ case HIDPGETCONNINFO:
-+ if (copy_from_user(&ci, (void *) arg, sizeof(ci)))
-+ return -EFAULT;
-+
-+ err = hidp_get_conninfo(&ci);
-+ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci)))
-+ return -EFAULT;
-+
-+ return err;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static struct proto_ops hidp_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: hidp_sock_release,
-+ ioctl: hidp_sock_ioctl,
-+ bind: sock_no_bind,
-+ getname: sock_no_getname,
-+ sendmsg: sock_no_sendmsg,
-+ recvmsg: sock_no_recvmsg,
-+ poll: sock_no_poll,
-+ listen: sock_no_listen,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sock_no_setsockopt,
-+ getsockopt: sock_no_getsockopt,
-+ connect: sock_no_connect,
-+ socketpair: sock_no_socketpair,
-+ accept: sock_no_accept,
-+ mmap: sock_no_mmap
-+};
-+
-+static int hidp_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ if (sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &hidp_sock_ops;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1)))
-+ return -ENOMEM;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ sock->state = SS_UNCONNECTED;
-+ sock_init_data(sock, sk);
-+
-+ sk->destruct = NULL;
-+ sk->protocol = protocol;
-+
-+ return 0;
-+}
-+
-+static struct net_proto_family hidp_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: hidp_sock_create
-+};
-+
-+int __init hidp_init_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_HIDP, &hidp_sock_family_ops)))
-+ BT_ERR("Can't register HIDP socket layer (%d)", err);
-+
-+ return err;
-+}
-+
-+void __exit hidp_cleanup_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_unregister(BTPROTO_HIDP)))
-+ BT_ERR("Can't unregister HIDP socket layer (%d)", err);
-+}
-diff -urN linux-2.4.18/net/bluetooth/l2cap.c linux-2.4.18-mh15/net/bluetooth/l2cap.c
---- linux-2.4.18/net/bluetooth/l2cap.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/l2cap.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,2222 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ L2CAP core and sockets.
-+ *
-+ * $Id: l2cap.c,v 1.15 2002/09/09 01:14:52 maxk Exp $
-+ */
-+#define VERSION "2.3"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/socket.h>
-+#include <linux/skbuff.h>
-+#include <linux/proc_fs.h>
-+#include <linux/list.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#ifndef L2CAP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+static struct proto_ops l2cap_sock_ops;
-+
-+struct bluez_sock_list l2cap_sk_list = {
-+ lock: RW_LOCK_UNLOCKED
-+};
-+
-+static int l2cap_conn_del(struct hci_conn *conn, int err);
-+
-+static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent);
-+static void l2cap_chan_del(struct sock *sk, int err);
-+static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len);
-+
-+static void __l2cap_sock_close(struct sock *sk, int reason);
-+static void l2cap_sock_close(struct sock *sk);
-+static void l2cap_sock_kill(struct sock *sk);
-+
-+static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data);
-+static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data);
-+
-+/* ----- L2CAP timers ------ */
-+static void l2cap_sock_timeout(unsigned long arg)
-+{
-+ struct sock *sk = (struct sock *) arg;
-+
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ bh_lock_sock(sk);
-+ __l2cap_sock_close(sk, ETIMEDOUT);
-+ bh_unlock_sock(sk);
-+
-+ l2cap_sock_kill(sk);
-+ sock_put(sk);
-+}
-+
-+static void l2cap_sock_set_timer(struct sock *sk, long timeout)
-+{
-+ BT_DBG("sk %p state %d timeout %ld", sk, sk->state, timeout);
-+
-+ if (!mod_timer(&sk->timer, jiffies + timeout))
-+ sock_hold(sk);
-+}
-+
-+static void l2cap_sock_clear_timer(struct sock *sk)
-+{
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ if (timer_pending(&sk->timer) && del_timer(&sk->timer))
-+ __sock_put(sk);
-+}
-+
-+static void l2cap_sock_init_timer(struct sock *sk)
-+{
-+ init_timer(&sk->timer);
-+ sk->timer.function = l2cap_sock_timeout;
-+ sk->timer.data = (unsigned long)sk;
-+}
-+
-+/* -------- L2CAP connections --------- */
-+static struct l2cap_conn *l2cap_conn_add(struct hci_conn *hcon, __u8 status)
-+{
-+ struct l2cap_conn *conn;
-+
-+ if ((conn = hcon->l2cap_data))
-+ return conn;
-+
-+ if (status)
-+ return conn;
-+
-+ if (!(conn = kmalloc(sizeof(struct l2cap_conn), GFP_ATOMIC)))
-+ return NULL;
-+ memset(conn, 0, sizeof(struct l2cap_conn));
-+
-+ hcon->l2cap_data = conn;
-+ conn->hcon = hcon;
-+
-+ conn->mtu = hcon->hdev->acl_mtu;
-+ conn->src = &hcon->hdev->bdaddr;
-+ conn->dst = &hcon->dst;
-+
-+ spin_lock_init(&conn->lock);
-+ conn->chan_list.lock = RW_LOCK_UNLOCKED;
-+
-+ BT_DBG("hcon %p conn %p", hcon, conn);
-+
-+ MOD_INC_USE_COUNT;
-+ return conn;
-+}
-+
-+static int l2cap_conn_del(struct hci_conn *hcon, int err)
-+{
-+ struct l2cap_conn *conn;
-+ struct sock *sk;
-+
-+ if (!(conn = hcon->l2cap_data))
-+ return 0;
-+
-+ BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
-+
-+ if (conn->rx_skb)
-+ kfree_skb(conn->rx_skb);
-+
-+ /* Kill channels */
-+ while ((sk = conn->chan_list.head)) {
-+ bh_lock_sock(sk);
-+ l2cap_chan_del(sk, err);
-+ bh_unlock_sock(sk);
-+ l2cap_sock_kill(sk);
-+ }
-+
-+ hcon->l2cap_data = NULL;
-+ kfree(conn);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+/* -------- Socket interface ---------- */
-+static struct sock *__l2cap_get_sock_by_addr(__u16 psm, bdaddr_t *src)
-+{
-+ struct sock *sk;
-+ for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-+ if (sk->sport == psm && !bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+ }
-+ return sk;
-+}
-+
-+/* Find socket with psm and source bdaddr.
-+ * Returns closest match.
-+ */
-+static struct sock *__l2cap_get_sock_by_psm(int state, __u16 psm, bdaddr_t *src)
-+{
-+ struct sock *sk, *sk1 = NULL;
-+
-+ for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-+ if (state && sk->state != state)
-+ continue;
-+
-+ if (l2cap_pi(sk)->psm == psm) {
-+ /* Exact match. */
-+ if (!bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+
-+ /* Closest match */
-+ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ sk1 = sk;
-+ }
-+ }
-+ return sk ? sk : sk1;
-+}
-+
-+/* Find socket with given address (psm, src).
-+ * Returns locked socket */
-+static inline struct sock *l2cap_get_sock_by_psm(int state, __u16 psm, bdaddr_t *src)
-+{
-+ struct sock *s;
-+ read_lock(&l2cap_sk_list.lock);
-+ s = __l2cap_get_sock_by_psm(state, psm, src);
-+ if (s) bh_lock_sock(s);
-+ read_unlock(&l2cap_sk_list.lock);
-+ return s;
-+}
-+
-+static void l2cap_sock_destruct(struct sock *sk)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ skb_queue_purge(&sk->receive_queue);
-+ skb_queue_purge(&sk->write_queue);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void l2cap_sock_cleanup_listen(struct sock *parent)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ /* Close not yet accepted channels */
-+ while ((sk = bluez_accept_dequeue(parent, NULL)))
-+ l2cap_sock_close(sk);
-+
-+ parent->state = BT_CLOSED;
-+ parent->zapped = 1;
-+}
-+
-+/* Kill socket (only if zapped and orphan)
-+ * Must be called on unlocked socket.
-+ */
-+static void l2cap_sock_kill(struct sock *sk)
-+{
-+ if (!sk->zapped || sk->socket)
-+ return;
-+
-+ BT_DBG("sk %p state %d", sk, sk->state);
-+
-+ /* Kill poor orphan */
-+ bluez_sock_unlink(&l2cap_sk_list, sk);
-+ sk->dead = 1;
-+ sock_put(sk);
-+}
-+
-+/* Close socket.
-+ */
-+static void __l2cap_sock_close(struct sock *sk, int reason)
-+{
-+ BT_DBG("sk %p state %d socket %p", sk, sk->state, sk->socket);
-+
-+ switch (sk->state) {
-+ case BT_LISTEN:
-+ l2cap_sock_cleanup_listen(sk);
-+ break;
-+
-+ case BT_CONNECTED:
-+ case BT_CONFIG:
-+ case BT_CONNECT2:
-+ if (sk->type == SOCK_SEQPACKET) {
-+ struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-+ l2cap_disconn_req req;
-+
-+ sk->state = BT_DISCONN;
-+ l2cap_sock_set_timer(sk, sk->sndtimeo);
-+
-+ req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
-+ } else {
-+ l2cap_chan_del(sk, reason);
-+ }
-+ break;
-+
-+ case BT_CONNECT:
-+ case BT_DISCONN:
-+ l2cap_chan_del(sk, reason);
-+ break;
-+
-+ default:
-+ sk->zapped = 1;
-+ break;
-+ };
-+}
-+
-+/* Must be called on unlocked socket. */
-+static void l2cap_sock_close(struct sock *sk)
-+{
-+ l2cap_sock_clear_timer(sk);
-+ lock_sock(sk);
-+ __l2cap_sock_close(sk, ECONNRESET);
-+ release_sock(sk);
-+ l2cap_sock_kill(sk);
-+}
-+
-+static void l2cap_sock_init(struct sock *sk, struct sock *parent)
-+{
-+ struct l2cap_pinfo *pi = l2cap_pi(sk);
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (parent) {
-+ sk->type = parent->type;
-+ pi->imtu = l2cap_pi(parent)->imtu;
-+ pi->omtu = l2cap_pi(parent)->omtu;
-+ pi->link_mode = l2cap_pi(parent)->link_mode;
-+ } else {
-+ pi->imtu = L2CAP_DEFAULT_MTU;
-+ pi->omtu = 0;
-+ pi->link_mode = 0;
-+ }
-+
-+ /* Default config options */
-+ pi->conf_mtu = L2CAP_DEFAULT_MTU;
-+ pi->flush_to = L2CAP_DEFAULT_FLUSH_TO;
-+}
-+
-+static struct sock *l2cap_sock_alloc(struct socket *sock, int proto, int prio)
-+{
-+ struct sock *sk;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1)))
-+ return NULL;
-+
-+ bluez_sock_init(sock, sk);
-+
-+ sk->zapped = 0;
-+
-+ sk->destruct = l2cap_sock_destruct;
-+ sk->sndtimeo = L2CAP_CONN_TIMEOUT;
-+
-+ sk->protocol = proto;
-+ sk->state = BT_OPEN;
-+
-+ l2cap_sock_init_timer(sk);
-+
-+ bluez_sock_link(&l2cap_sk_list, sk);
-+
-+ MOD_INC_USE_COUNT;
-+ return sk;
-+}
-+
-+static int l2cap_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ sock->state = SS_UNCONNECTED;
-+
-+ if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW))
-+ return -EPERM;
-+
-+ sock->ops = &l2cap_sock_ops;
-+
-+ if (!(sk = l2cap_sock_alloc(sock, protocol, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ l2cap_sock_init(sk, NULL);
-+ return 0;
-+}
-+
-+static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
-+{
-+ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p, %s %d", sk, batostr(&la->l2_bdaddr), la->l2_psm);
-+
-+ if (!addr || addr->sa_family != AF_BLUETOOTH)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_OPEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ write_lock_bh(&l2cap_sk_list.lock);
-+ if (la->l2_psm && __l2cap_get_sock_by_addr(la->l2_psm, &la->l2_bdaddr)) {
-+ err = -EADDRINUSE;
-+ } else {
-+ /* Save source address */
-+ bacpy(&bluez_pi(sk)->src, &la->l2_bdaddr);
-+ l2cap_pi(sk)->psm = la->l2_psm;
-+ sk->sport = la->l2_psm;
-+ sk->state = BT_BOUND;
-+ }
-+ write_unlock_bh(&l2cap_sk_list.lock);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_do_connect(struct sock *sk)
-+{
-+ bdaddr_t *src = &bluez_pi(sk)->src;
-+ bdaddr_t *dst = &bluez_pi(sk)->dst;
-+ struct l2cap_conn *conn;
-+ struct hci_conn *hcon;
-+ struct hci_dev *hdev;
-+ int err = 0;
-+
-+ BT_DBG("%s -> %s psm 0x%2.2x", batostr(src), batostr(dst), l2cap_pi(sk)->psm);
-+
-+ if (!(hdev = hci_get_route(dst, src)))
-+ return -EHOSTUNREACH;
-+
-+ hci_dev_lock_bh(hdev);
-+
-+ err = -ENOMEM;
-+
-+ hcon = hci_connect(hdev, ACL_LINK, dst);
-+ if (!hcon)
-+ goto done;
-+
-+ conn = l2cap_conn_add(hcon, 0);
-+ if (!conn) {
-+ hci_conn_put(hcon);
-+ goto done;
-+ }
-+
-+ err = 0;
-+
-+ /* Update source addr of the socket */
-+ bacpy(src, conn->src);
-+
-+ l2cap_chan_add(conn, sk, NULL);
-+
-+ sk->state = BT_CONNECT;
-+ l2cap_sock_set_timer(sk, sk->sndtimeo);
-+
-+ if (hcon->state == BT_CONNECTED) {
-+ if (sk->type == SOCK_SEQPACKET) {
-+ l2cap_conn_req req;
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ req.psm = l2cap_pi(sk)->psm;
-+ l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
-+ } else {
-+ l2cap_sock_clear_timer(sk);
-+ sk->state = BT_CONNECTED;
-+ }
-+ }
-+
-+done:
-+ hci_dev_unlock_bh(hdev);
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
-+static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
-+{
-+ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_l2)) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-+
-+ if (sk->type == SOCK_SEQPACKET && !la->l2_psm) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-+
-+ switch(sk->state) {
-+ case BT_CONNECT:
-+ case BT_CONNECT2:
-+ case BT_CONFIG:
-+ /* Already connecting */
-+ goto wait;
-+
-+ case BT_CONNECTED:
-+ /* Already connected */
-+ goto done;
-+
-+ case BT_OPEN:
-+ case BT_BOUND:
-+ /* Can connect */
-+ break;
-+
-+ default:
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ /* Set destination address and psm */
-+ bacpy(&bluez_pi(sk)->dst, &la->l2_bdaddr);
-+ l2cap_pi(sk)->psm = la->l2_psm;
-+
-+ if ((err = l2cap_do_connect(sk)))
-+ goto done;
-+
-+wait:
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int l2cap_sock_listen(struct socket *sock, int backlog)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p backlog %d", sk, backlog);
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ if (!l2cap_pi(sk)->psm) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-+
-+ sk->max_ack_backlog = backlog;
-+ sk->ack_backlog = 0;
-+ sk->state = BT_LISTEN;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct sock *sk = sock->sk, *nsk;
-+ long timeo;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
-+
-+ BT_DBG("sk %p timeo %ld", sk, timeo);
-+
-+ /* Wait for an incoming connection. (wake-one). */
-+ add_wait_queue_exclusive(sk->sleep, &wait);
-+ while (!(nsk = bluez_accept_dequeue(sk, newsock))) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ if (err)
-+ goto done;
-+
-+ newsock->state = SS_CONNECTED;
-+
-+ BT_DBG("new socket %p", nsk);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
-+{
-+ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ addr->sa_family = AF_BLUETOOTH;
-+ *len = sizeof(struct sockaddr_l2);
-+
-+ if (peer)
-+ bacpy(&la->l2_bdaddr, &bluez_pi(sk)->dst);
-+ else
-+ bacpy(&la->l2_bdaddr, &bluez_pi(sk)->src);
-+
-+ la->l2_psm = l2cap_pi(sk)->psm;
-+ return 0;
-+}
-+
-+static int l2cap_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (sk->err)
-+ return sock_error(sk);
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ /* Check outgoing MTU */
-+ if (len > l2cap_pi(sk)->omtu)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state == BT_CONNECTED)
-+ err = l2cap_chan_send(sk, msg, len);
-+ else
-+ err = -ENOTCONN;
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ struct l2cap_options opts;
-+ int err = 0, len;
-+ __u32 opt;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ case L2CAP_OPTIONS:
-+ len = MIN(sizeof(opts), optlen);
-+ if (copy_from_user((char *)&opts, optval, len)) {
-+ err = -EFAULT;
-+ break;
-+ }
-+ l2cap_pi(sk)->imtu = opts.imtu;
-+ l2cap_pi(sk)->omtu = opts.omtu;
-+ break;
-+
-+ case L2CAP_LM:
-+ if (get_user(opt, (__u32 *)optval)) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ l2cap_pi(sk)->link_mode = opt;
-+ break;
-+
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ struct l2cap_options opts;
-+ struct l2cap_conninfo cinfo;
-+ int len, err = 0;
-+
-+ if (get_user(len, optlen))
-+ return -EFAULT;
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ case L2CAP_OPTIONS:
-+ opts.imtu = l2cap_pi(sk)->imtu;
-+ opts.omtu = l2cap_pi(sk)->omtu;
-+ opts.flush_to = l2cap_pi(sk)->flush_to;
-+
-+ len = MIN(len, sizeof(opts));
-+ if (copy_to_user(optval, (char *)&opts, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ case L2CAP_LM:
-+ if (put_user(l2cap_pi(sk)->link_mode, (__u32 *)optval))
-+ err = -EFAULT;
-+ break;
-+
-+ case L2CAP_CONNINFO:
-+ if (sk->state != BT_CONNECTED) {
-+ err = -ENOTCONN;
-+ break;
-+ }
-+
-+ cinfo.hci_handle = l2cap_pi(sk)->conn->hcon->handle;
-+
-+ len = MIN(len, sizeof(cinfo));
-+ if (copy_to_user(optval, (char *)&cinfo, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_shutdown(struct socket *sock, int how)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk) return 0;
-+
-+ lock_sock(sk);
-+ if (!sk->shutdown) {
-+ sk->shutdown = SHUTDOWN_MASK;
-+ l2cap_sock_clear_timer(sk);
-+ __l2cap_sock_close(sk, 0);
-+
-+ if (sk->linger)
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ }
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+ int err;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk) return 0;
-+
-+ err = l2cap_sock_shutdown(sock, 2);
-+
-+ sock_orphan(sk);
-+ l2cap_sock_kill(sk);
-+ return err;
-+}
-+
-+/* --------- L2CAP channels --------- */
-+static struct sock * __l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid)
-+{
-+ struct sock *s;
-+ for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-+ if (l2cap_pi(s)->dcid == cid)
-+ break;
-+ }
-+ return s;
-+}
-+
-+static struct sock *__l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
-+{
-+ struct sock *s;
-+ for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-+ if (l2cap_pi(s)->scid == cid)
-+ break;
-+ }
-+ return s;
-+}
-+
-+/* Find channel with given SCID.
-+ * Returns locked socket */
-+static inline struct sock *l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
-+{
-+ struct sock *s;
-+ read_lock(&l->lock);
-+ s = __l2cap_get_chan_by_scid(l, cid);
-+ if (s) bh_lock_sock(s);
-+ read_unlock(&l->lock);
-+ return s;
-+}
-+
-+static __u16 l2cap_alloc_cid(struct l2cap_chan_list *l)
-+{
-+ __u16 cid = 0x0040;
-+
-+ for (; cid < 0xffff; cid++) {
-+ if(!__l2cap_get_chan_by_scid(l, cid))
-+ return cid;
-+ }
-+
-+ return 0;
-+}
-+
-+static inline void __l2cap_chan_link(struct l2cap_chan_list *l, struct sock *sk)
-+{
-+ sock_hold(sk);
-+
-+ if (l->head)
-+ l2cap_pi(l->head)->prev_c = sk;
-+
-+ l2cap_pi(sk)->next_c = l->head;
-+ l2cap_pi(sk)->prev_c = NULL;
-+ l->head = sk;
-+}
-+
-+static inline void l2cap_chan_unlink(struct l2cap_chan_list *l, struct sock *sk)
-+{
-+ struct sock *next = l2cap_pi(sk)->next_c, *prev = l2cap_pi(sk)->prev_c;
-+
-+ write_lock(&l->lock);
-+ if (sk == l->head)
-+ l->head = next;
-+
-+ if (next)
-+ l2cap_pi(next)->prev_c = prev;
-+ if (prev)
-+ l2cap_pi(prev)->next_c = next;
-+ write_unlock(&l->lock);
-+
-+ __sock_put(sk);
-+}
-+
-+static void __l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+
-+ BT_DBG("conn %p, psm 0x%2.2x, dcid 0x%4.4x", conn, l2cap_pi(sk)->psm, l2cap_pi(sk)->dcid);
-+
-+ l2cap_pi(sk)->conn = conn;
-+
-+ if (sk->type == SOCK_SEQPACKET) {
-+ /* Alloc CID for connection-oriented socket */
-+ l2cap_pi(sk)->scid = l2cap_alloc_cid(l);
-+ } else if (sk->type == SOCK_DGRAM) {
-+ /* Connectionless socket */
-+ l2cap_pi(sk)->scid = 0x0002;
-+ l2cap_pi(sk)->dcid = 0x0002;
-+ l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU;
-+ } else {
-+ /* Raw socket can send/recv signalling messages only */
-+ l2cap_pi(sk)->scid = 0x0001;
-+ l2cap_pi(sk)->dcid = 0x0001;
-+ l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU;
-+ }
-+
-+ __l2cap_chan_link(l, sk);
-+
-+ if (parent)
-+ bluez_accept_enqueue(parent, sk);
-+}
-+
-+static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ write_lock(&l->lock);
-+ __l2cap_chan_add(conn, sk, parent);
-+ write_unlock(&l->lock);
-+}
-+
-+/* Delete channel.
-+ * Must be called on the locked socket. */
-+static void l2cap_chan_del(struct sock *sk, int err)
-+{
-+ struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-+ struct sock *parent = bluez_pi(sk)->parent;
-+
-+ l2cap_sock_clear_timer(sk);
-+
-+ BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
-+
-+ if (conn) {
-+ /* Unlink from channel list */
-+ l2cap_chan_unlink(&conn->chan_list, sk);
-+ l2cap_pi(sk)->conn = NULL;
-+ hci_conn_put(conn->hcon);
-+ }
-+
-+ sk->state = BT_CLOSED;
-+ sk->zapped = 1;
-+
-+ if (err)
-+ sk->err = err;
-+
-+ if (parent)
-+ parent->data_ready(parent, 0);
-+ else
-+ sk->state_change(sk);
-+}
-+
-+static void l2cap_conn_ready(struct l2cap_conn *conn)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ struct sock *sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ bh_lock_sock(sk);
-+
-+ if (sk->type != SOCK_SEQPACKET) {
-+ l2cap_sock_clear_timer(sk);
-+ sk->state = BT_CONNECTED;
-+ sk->state_change(sk);
-+ } else if (sk->state == BT_CONNECT) {
-+ l2cap_conn_req req;
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ req.psm = l2cap_pi(sk)->psm;
-+ l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
-+ }
-+
-+ bh_unlock_sock(sk);
-+ }
-+
-+ read_unlock(&l->lock);
-+}
-+
-+/* Notify sockets that we cannot guaranty reliability anymore */
-+static void l2cap_conn_unreliable(struct l2cap_conn *conn, int err)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ struct sock *sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ if (l2cap_pi(sk)->link_mode & L2CAP_LM_RELIABLE)
-+ sk->err = err;
-+ }
-+ read_unlock(&l->lock);
-+}
-+
-+static void l2cap_chan_ready(struct sock *sk)
-+{
-+ struct sock *parent = bluez_pi(sk)->parent;
-+
-+ BT_DBG("sk %p, parent %p", sk, parent);
-+
-+ l2cap_pi(sk)->conf_state = 0;
-+ l2cap_sock_clear_timer(sk);
-+
-+ if (!parent) {
-+ /* Outgoing channel.
-+ * Wake up socket sleeping on connect.
-+ */
-+ sk->state = BT_CONNECTED;
-+ sk->state_change(sk);
-+ } else {
-+ /* Incomming channel.
-+ * Wake up socket sleeping on accept.
-+ */
-+ parent->data_ready(parent, 0);
-+ }
-+}
-+
-+/* Copy frame to all raw sockets on that connection */
-+void l2cap_raw_recv(struct l2cap_conn *conn, struct sk_buff *skb)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ struct sk_buff *nskb;
-+ struct sock * sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ if (sk->type != SOCK_RAW)
-+ continue;
-+
-+ /* Don't send frame to the socket it came from */
-+ if (skb->sk == sk)
-+ continue;
-+
-+ if (!(nskb = skb_clone(skb, GFP_ATOMIC)))
-+ continue;
-+
-+ if (sock_queue_rcv_skb(sk, nskb))
-+ kfree_skb(nskb);
-+ }
-+ read_unlock(&l->lock);
-+}
-+
-+static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len)
-+{
-+ struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-+ struct sk_buff *skb, **frag;
-+ int err, hlen, count, sent=0;
-+ l2cap_hdr *lh;
-+
-+ BT_DBG("sk %p len %d", sk, len);
-+
-+ /* First fragment (with L2CAP header) */
-+ if (sk->type == SOCK_DGRAM)
-+ hlen = L2CAP_HDR_SIZE + 2;
-+ else
-+ hlen = L2CAP_HDR_SIZE;
-+
-+ count = MIN(conn->mtu - hlen, len);
-+
-+ skb = bluez_skb_send_alloc(sk, hlen + count,
-+ msg->msg_flags & MSG_DONTWAIT, &err);
-+ if (!skb)
-+ return err;
-+
-+ /* Create L2CAP header */
-+ lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-+ lh->cid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ lh->len = __cpu_to_le16(len + (hlen - L2CAP_HDR_SIZE));
-+
-+ if (sk->type == SOCK_DGRAM)
-+ put_unaligned(l2cap_pi(sk)->psm, (__u16 *) skb_put(skb, 2));
-+
-+ if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) {
-+ err = -EFAULT;
-+ goto fail;
-+ }
-+
-+ sent += count;
-+ len -= count;
-+
-+ /* Continuation fragments (no L2CAP header) */
-+ frag = &skb_shinfo(skb)->frag_list;
-+ while (len) {
-+ count = MIN(conn->mtu, len);
-+
-+ *frag = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err);
-+ if (!*frag)
-+ goto fail;
-+
-+ if (memcpy_fromiovec(skb_put(*frag, count), msg->msg_iov, count)) {
-+ err = -EFAULT;
-+ goto fail;
-+ }
-+
-+ sent += count;
-+ len -= count;
-+
-+ frag = &(*frag)->next;
-+ }
-+
-+ if ((err = hci_send_acl(conn->hcon, skb, 0)) < 0)
-+ goto fail;
-+
-+ return sent;
-+
-+fail:
-+ kfree_skb(skb);
-+ return err;
-+}
-+
-+/* --------- L2CAP signalling commands --------- */
-+static inline __u8 l2cap_get_ident(struct l2cap_conn *conn)
-+{
-+ __u8 id;
-+
-+ /* Get next available identificator.
-+ * 1 - 199 are used by kernel.
-+ * 200 - 254 are used by utilities like l2ping, etc
-+ */
-+
-+ spin_lock(&conn->lock);
-+
-+ if (++conn->tx_ident > 199)
-+ conn->tx_ident = 1;
-+
-+ id = conn->tx_ident;
-+
-+ spin_unlock(&conn->lock);
-+
-+ return id;
-+}
-+
-+static struct sk_buff *l2cap_build_cmd(struct l2cap_conn *conn,
-+ __u8 code, __u8 ident, __u16 dlen, void *data)
-+{
-+ struct sk_buff *skb, **frag;
-+ l2cap_cmd_hdr *cmd;
-+ l2cap_hdr *lh;
-+ int len, count;
-+
-+ BT_DBG("conn %p, code 0x%2.2x, ident 0x%2.2x, len %d", conn, code, ident, dlen);
-+
-+ len = L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE + dlen;
-+ count = MIN(conn->mtu, len);
-+
-+ skb = bluez_skb_alloc(count, GFP_ATOMIC);
-+ if (!skb)
-+ return NULL;
-+
-+ lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-+ lh->len = __cpu_to_le16(L2CAP_CMD_HDR_SIZE + dlen);
-+ lh->cid = __cpu_to_le16(0x0001);
-+
-+ cmd = (l2cap_cmd_hdr *) skb_put(skb, L2CAP_CMD_HDR_SIZE);
-+ cmd->code = code;
-+ cmd->ident = ident;
-+ cmd->len = __cpu_to_le16(dlen);
-+
-+ if (dlen) {
-+ count -= L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE;
-+ memcpy(skb_put(skb, count), data, count);
-+ data += count;
-+ }
-+
-+ len -= skb->len;
-+
-+ /* Continuation fragments (no L2CAP header) */
-+ frag = &skb_shinfo(skb)->frag_list;
-+ while (len) {
-+ count = MIN(conn->mtu, len);
-+
-+ *frag = bluez_skb_alloc(count, GFP_ATOMIC);
-+ if (!*frag)
-+ goto fail;
-+
-+ memcpy(skb_put(*frag, count), data, count);
-+
-+ len -= count;
-+ data += count;
-+
-+ frag = &(*frag)->next;
-+ }
-+
-+ return skb;
-+
-+fail:
-+ kfree_skb(skb);
-+ return NULL;
-+}
-+
-+static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data)
-+{
-+ __u8 ident = l2cap_get_ident(conn);
-+ struct sk_buff *skb = l2cap_build_cmd(conn, code, ident, len, data);
-+
-+ BT_DBG("code 0x%2.2x", code);
-+
-+ if (!skb)
-+ return -ENOMEM;
-+ return hci_send_acl(conn->hcon, skb, 0);
-+}
-+
-+static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data)
-+{
-+ struct sk_buff *skb = l2cap_build_cmd(conn, code, ident, len, data);
-+
-+ BT_DBG("code 0x%2.2x", code);
-+
-+ if (!skb)
-+ return -ENOMEM;
-+ return hci_send_acl(conn->hcon, skb, 0);
-+}
-+
-+static inline int l2cap_get_conf_opt(void **ptr, int *type, int *olen, unsigned long *val)
-+{
-+ l2cap_conf_opt *opt = *ptr;
-+ int len;
-+
-+ len = L2CAP_CONF_OPT_SIZE + opt->len;
-+ *ptr += len;
-+
-+ *type = opt->type;
-+ *olen = opt->len;
-+
-+ switch (opt->len) {
-+ case 1:
-+ *val = *((__u8 *) opt->val);
-+ break;
-+
-+ case 2:
-+ *val = __le16_to_cpu(*((__u16 *)opt->val));
-+ break;
-+
-+ case 4:
-+ *val = __le32_to_cpu(*((__u32 *)opt->val));
-+ break;
-+
-+ default:
-+ *val = (unsigned long) opt->val;
-+ break;
-+ };
-+
-+ BT_DBG("type 0x%2.2x len %d val 0x%lx", *type, opt->len, *val);
-+ return len;
-+}
-+
-+static inline void l2cap_parse_conf_req(struct sock *sk, void *data, int len)
-+{
-+ int type, hint, olen;
-+ unsigned long val;
-+ void *ptr = data;
-+
-+ BT_DBG("sk %p len %d", sk, len);
-+
-+ while (len >= L2CAP_CONF_OPT_SIZE) {
-+ len -= l2cap_get_conf_opt(&ptr, &type, &olen, &val);
-+
-+ hint = type & 0x80;
-+ type &= 0x7f;
-+
-+ switch (type) {
-+ case L2CAP_CONF_MTU:
-+ l2cap_pi(sk)->conf_mtu = val;
-+ break;
-+
-+ case L2CAP_CONF_FLUSH_TO:
-+ l2cap_pi(sk)->flush_to = val;
-+ break;
-+
-+ case L2CAP_CONF_QOS:
-+ break;
-+
-+ default:
-+ if (hint)
-+ break;
-+
-+ /* FIXME: Reject unknown option */
-+ break;
-+ };
-+ }
-+}
-+
-+static void l2cap_add_conf_opt(void **ptr, __u8 type, __u8 len, unsigned long val)
-+{
-+ register l2cap_conf_opt *opt = *ptr;
-+
-+ BT_DBG("type 0x%2.2x len %d val 0x%lx", type, len, val);
-+
-+ opt->type = type;
-+ opt->len = len;
-+
-+ switch (len) {
-+ case 1:
-+ *((__u8 *) opt->val) = val;
-+ break;
-+
-+ case 2:
-+ *((__u16 *) opt->val) = __cpu_to_le16(val);
-+ break;
-+
-+ case 4:
-+ *((__u32 *) opt->val) = __cpu_to_le32(val);
-+ break;
-+
-+ default:
-+ memcpy(opt->val, (void *) val, len);
-+ break;
-+ };
-+
-+ *ptr += L2CAP_CONF_OPT_SIZE + len;
-+}
-+
-+static int l2cap_build_conf_req(struct sock *sk, void *data)
-+{
-+ struct l2cap_pinfo *pi = l2cap_pi(sk);
-+ l2cap_conf_req *req = (l2cap_conf_req *) data;
-+ void *ptr = req->data;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (pi->imtu != L2CAP_DEFAULT_MTU)
-+ l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->imtu);
-+
-+ /* FIXME. Need actual value of the flush timeout */
-+ //if (flush_to != L2CAP_DEFAULT_FLUSH_TO)
-+ // l2cap_add_conf_opt(&ptr, L2CAP_CONF_FLUSH_TO, 2, pi->flush_to);
-+
-+ req->dcid = __cpu_to_le16(pi->dcid);
-+ req->flags = __cpu_to_le16(0);
-+
-+ return ptr - data;
-+}
-+
-+static inline int l2cap_conf_output(struct sock *sk, void **ptr)
-+{
-+ struct l2cap_pinfo *pi = l2cap_pi(sk);
-+ int result = 0;
-+
-+ /* Configure output options and let the other side know
-+ * which ones we don't like.
-+ */
-+ if (pi->conf_mtu < pi->omtu) {
-+ l2cap_add_conf_opt(ptr, L2CAP_CONF_MTU, 2, pi->omtu);
-+ result = L2CAP_CONF_UNACCEPT;
-+ } else {
-+ pi->omtu = pi->conf_mtu;
-+ }
-+
-+ BT_DBG("sk %p result %d", sk, result);
-+ return result;
-+}
-+
-+static int l2cap_build_conf_rsp(struct sock *sk, void *data, int *result)
-+{
-+ l2cap_conf_rsp *rsp = (l2cap_conf_rsp *) data;
-+ void *ptr = rsp->data;
-+ u16 flags = 0;
-+
-+ BT_DBG("sk %p complete %d", sk, result ? 1 : 0);
-+
-+ if (result)
-+ *result = l2cap_conf_output(sk, &ptr);
-+ else
-+ flags |= 0x0001;
-+
-+ rsp->scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ rsp->result = __cpu_to_le16(result ? *result : 0);
-+ rsp->flags = __cpu_to_le16(flags);
-+
-+ return ptr - data;
-+}
-+
-+static inline int l2cap_connect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ struct l2cap_chan_list *list = &conn->chan_list;
-+ l2cap_conn_req *req = (l2cap_conn_req *) data;
-+ l2cap_conn_rsp rsp;
-+ struct sock *sk, *parent;
-+ int result = 0, status = 0;
-+
-+ __u16 dcid = 0, scid = __le16_to_cpu(req->scid);
-+ __u16 psm = req->psm;
-+
-+ BT_DBG("psm 0x%2.2x scid 0x%4.4x", psm, scid);
-+
-+ /* Check if we have socket listening on psm */
-+ parent = l2cap_get_sock_by_psm(BT_LISTEN, psm, conn->src);
-+ if (!parent) {
-+ result = L2CAP_CR_BAD_PSM;
-+ goto sendresp;
-+ }
-+
-+ result = L2CAP_CR_NO_MEM;
-+
-+ /* Check for backlog size */
-+ if (parent->ack_backlog > parent->max_ack_backlog) {
-+ BT_DBG("backlog full %d", parent->ack_backlog);
-+ goto response;
-+ }
-+
-+ sk = l2cap_sock_alloc(NULL, BTPROTO_L2CAP, GFP_ATOMIC);
-+ if (!sk)
-+ goto response;
-+
-+ write_lock(&list->lock);
-+
-+ /* Check if we already have channel with that dcid */
-+ if (__l2cap_get_chan_by_dcid(list, scid)) {
-+ write_unlock(&list->lock);
-+ sk->zapped = 1;
-+ l2cap_sock_kill(sk);
-+ goto response;
-+ }
-+
-+ hci_conn_hold(conn->hcon);
-+
-+ l2cap_sock_init(sk, parent);
-+ bacpy(&bluez_pi(sk)->src, conn->src);
-+ bacpy(&bluez_pi(sk)->dst, conn->dst);
-+ l2cap_pi(sk)->psm = psm;
-+ l2cap_pi(sk)->dcid = scid;
-+
-+ __l2cap_chan_add(conn, sk, parent);
-+ dcid = l2cap_pi(sk)->scid;
-+
-+ l2cap_sock_set_timer(sk, sk->sndtimeo);
-+
-+ /* Service level security */
-+ result = L2CAP_CR_PEND;
-+ status = L2CAP_CS_AUTHEN_PEND;
-+ sk->state = BT_CONNECT2;
-+ l2cap_pi(sk)->ident = cmd->ident;
-+
-+ if (l2cap_pi(sk)->link_mode & L2CAP_LM_ENCRYPT) {
-+ if (!hci_conn_encrypt(conn->hcon))
-+ goto done;
-+ } else if (l2cap_pi(sk)->link_mode & L2CAP_LM_AUTH) {
-+ if (!hci_conn_auth(conn->hcon))
-+ goto done;
-+ }
-+
-+ sk->state = BT_CONFIG;
-+ result = status = 0;
-+
-+done:
-+ write_unlock(&list->lock);
-+
-+response:
-+ bh_unlock_sock(parent);
-+
-+sendresp:
-+ rsp.scid = __cpu_to_le16(scid);
-+ rsp.dcid = __cpu_to_le16(dcid);
-+ rsp.result = __cpu_to_le16(result);
-+ rsp.status = __cpu_to_le16(status);
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp);
-+ return 0;
-+}
-+
-+static inline int l2cap_connect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_conn_rsp *rsp = (l2cap_conn_rsp *) data;
-+ __u16 scid, dcid, result, status;
-+ struct sock *sk;
-+ char req[128];
-+
-+ scid = __le16_to_cpu(rsp->scid);
-+ dcid = __le16_to_cpu(rsp->dcid);
-+ result = __le16_to_cpu(rsp->result);
-+ status = __le16_to_cpu(rsp->status);
-+
-+ BT_DBG("dcid 0x%4.4x scid 0x%4.4x result 0x%2.2x status 0x%2.2x", dcid, scid, result, status);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-+ return -ENOENT;
-+
-+ switch (result) {
-+ case L2CAP_CR_SUCCESS:
-+ sk->state = BT_CONFIG;
-+ l2cap_pi(sk)->dcid = dcid;
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_REQ_SENT;
-+
-+ l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-+ break;
-+
-+ case L2CAP_CR_PEND:
-+ break;
-+
-+ default:
-+ l2cap_chan_del(sk, ECONNREFUSED);
-+ break;
-+ }
-+
-+ bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_config_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_conf_req * req = (l2cap_conf_req *) data;
-+ __u16 dcid, flags;
-+ __u8 rsp[64];
-+ struct sock *sk;
-+ int result;
-+
-+ dcid = __le16_to_cpu(req->dcid);
-+ flags = __le16_to_cpu(req->flags);
-+
-+ BT_DBG("dcid 0x%4.4x flags 0x%2.2x", dcid, flags);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-+ return -ENOENT;
-+
-+ l2cap_parse_conf_req(sk, req->data, cmd->len - L2CAP_CONF_REQ_SIZE);
-+
-+ if (flags & 0x0001) {
-+ /* Incomplete config. Send empty response. */
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, NULL), rsp);
-+ goto unlock;
-+ }
-+
-+ /* Complete config. */
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, &result), rsp);
-+
-+ if (result)
-+ goto unlock;
-+
-+ /* Output config done */
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_OUTPUT_DONE;
-+
-+ if (l2cap_pi(sk)->conf_state & L2CAP_CONF_INPUT_DONE) {
-+ sk->state = BT_CONNECTED;
-+ l2cap_chan_ready(sk);
-+ } else if (!(l2cap_pi(sk)->conf_state & L2CAP_CONF_REQ_SENT)) {
-+ char req[64];
-+ l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-+ }
-+
-+unlock:
-+ bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_config_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_conf_rsp *rsp = (l2cap_conf_rsp *)data;
-+ __u16 scid, flags, result;
-+ struct sock *sk;
-+ int err = 0;
-+
-+ scid = __le16_to_cpu(rsp->scid);
-+ flags = __le16_to_cpu(rsp->flags);
-+ result = __le16_to_cpu(rsp->result);
-+
-+ BT_DBG("scid 0x%4.4x flags 0x%2.2x result 0x%2.2x", scid, flags, result);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-+ return -ENOENT;
-+
-+ switch (result) {
-+ case L2CAP_CONF_SUCCESS:
-+ break;
-+
-+ case L2CAP_CONF_UNACCEPT:
-+ if (++l2cap_pi(sk)->conf_retry < L2CAP_CONF_MAX_RETRIES) {
-+ char req[128];
-+ /*
-+ It does not make sense to adjust L2CAP parameters
-+ that are currently defined in the spec. We simply
-+ resend config request that we sent earlier. It is
-+ stupid :) but it helps qualification testing
-+ which expects at least some response from us.
-+ */
-+ l2cap_send_req(conn, L2CAP_CONF_REQ,
-+ l2cap_build_conf_req(sk, req), req);
-+ goto done;
-+ }
-+ default:
-+ sk->state = BT_DISCONN;
-+ sk->err = ECONNRESET;
-+ l2cap_sock_set_timer(sk, HZ * 5);
-+ {
-+ l2cap_disconn_req req;
-+ req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
-+ }
-+ goto done;
-+ }
-+
-+ if (flags & 0x01)
-+ goto done;
-+
-+ /* Input config done */
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_INPUT_DONE;
-+
-+ if (l2cap_pi(sk)->conf_state & L2CAP_CONF_OUTPUT_DONE) {
-+ sk->state = BT_CONNECTED;
-+ l2cap_chan_ready(sk);
-+ }
-+
-+done:
-+ bh_unlock_sock(sk);
-+ return err;
-+}
-+
-+static inline int l2cap_disconnect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_disconn_req *req = (l2cap_disconn_req *) data;
-+ l2cap_disconn_rsp rsp;
-+ __u16 dcid, scid;
-+ struct sock *sk;
-+
-+ scid = __le16_to_cpu(req->scid);
-+ dcid = __le16_to_cpu(req->dcid);
-+
-+ BT_DBG("scid 0x%4.4x dcid 0x%4.4x", scid, dcid);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-+ return 0;
-+
-+ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_DISCONN_RSP, L2CAP_DISCONN_RSP_SIZE, &rsp);
-+
-+ sk->shutdown = SHUTDOWN_MASK;
-+
-+ l2cap_chan_del(sk, ECONNRESET);
-+ bh_unlock_sock(sk);
-+
-+ l2cap_sock_kill(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_disconnect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_disconn_rsp *rsp = (l2cap_disconn_rsp *) data;
-+ __u16 dcid, scid;
-+ struct sock *sk;
-+
-+ scid = __le16_to_cpu(rsp->scid);
-+ dcid = __le16_to_cpu(rsp->dcid);
-+
-+ BT_DBG("dcid 0x%4.4x scid 0x%4.4x", dcid, scid);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-+ return 0;
-+ l2cap_chan_del(sk, 0);
-+ bh_unlock_sock(sk);
-+
-+ l2cap_sock_kill(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_information_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, u8 *data)
-+{
-+ l2cap_info_req *req = (l2cap_info_req *) data;
-+ l2cap_info_rsp rsp;
-+ u16 type;
-+
-+ type = __le16_to_cpu(req->type);
-+
-+ BT_DBG("type 0x%4.4x", type);
-+
-+ rsp.type = __cpu_to_le16(type);
-+ rsp.result = __cpu_to_le16(L2CAP_IR_NOTSUPP);
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_INFO_RSP, sizeof(rsp), &rsp);
-+ return 0;
-+}
-+
-+static inline int l2cap_information_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, u8 *data)
-+{
-+ l2cap_info_rsp *rsp = (l2cap_info_rsp *) data;
-+ u16 type, result;
-+
-+ type = __le16_to_cpu(rsp->type);
-+ result = __le16_to_cpu(rsp->result);
-+
-+ BT_DBG("type 0x%4.4x result 0x%2.2x", type, result);
-+
-+ return 0;
-+}
-+
-+static inline void l2cap_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb)
-+{
-+ __u8 *data = skb->data;
-+ int len = skb->len;
-+ l2cap_cmd_hdr cmd;
-+ int err = 0;
-+
-+ l2cap_raw_recv(conn, skb);
-+
-+ while (len >= L2CAP_CMD_HDR_SIZE) {
-+ memcpy(&cmd, data, L2CAP_CMD_HDR_SIZE);
-+ data += L2CAP_CMD_HDR_SIZE;
-+ len -= L2CAP_CMD_HDR_SIZE;
-+
-+ cmd.len = __le16_to_cpu(cmd.len);
-+
-+ BT_DBG("code 0x%2.2x len %d id 0x%2.2x", cmd.code, cmd.len, cmd.ident);
-+
-+ if (cmd.len > len || !cmd.ident) {
-+ BT_DBG("corrupted command");
-+ break;
-+ }
-+
-+ switch (cmd.code) {
-+ case L2CAP_COMMAND_REJ:
-+ /* FIXME: We should process this */
-+ break;
-+
-+ case L2CAP_CONN_REQ:
-+ err = l2cap_connect_req(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_CONN_RSP:
-+ err = l2cap_connect_rsp(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_CONF_REQ:
-+ err = l2cap_config_req(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_CONF_RSP:
-+ err = l2cap_config_rsp(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_DISCONN_REQ:
-+ err = l2cap_disconnect_req(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_DISCONN_RSP:
-+ err = l2cap_disconnect_rsp(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_ECHO_REQ:
-+ l2cap_send_rsp(conn, cmd.ident, L2CAP_ECHO_RSP, cmd.len, data);
-+ break;
-+
-+ case L2CAP_ECHO_RSP:
-+ break;
-+
-+ case L2CAP_INFO_REQ:
-+ err = l2cap_information_req(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_INFO_RSP:
-+ err = l2cap_information_rsp(conn, &cmd, data);
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown signaling command 0x%2.2x", cmd.code);
-+ err = -EINVAL;
-+ break;
-+ };
-+
-+ if (err) {
-+ l2cap_cmd_rej rej;
-+ BT_DBG("error %d", err);
-+
-+ /* FIXME: Map err to a valid reason */
-+ rej.reason = __cpu_to_le16(0);
-+ l2cap_send_rsp(conn, cmd.ident, L2CAP_COMMAND_REJ, L2CAP_CMD_REJ_SIZE, &rej);
-+ }
-+
-+ data += cmd.len;
-+ len -= cmd.len;
-+ }
-+
-+ kfree_skb(skb);
-+}
-+
-+static inline int l2cap_data_channel(struct l2cap_conn *conn, __u16 cid, struct sk_buff *skb)
-+{
-+ struct sock *sk;
-+
-+ sk = l2cap_get_chan_by_scid(&conn->chan_list, cid);
-+ if (!sk) {
-+ BT_DBG("unknown cid 0x%4.4x", cid);
-+ goto drop;
-+ }
-+
-+ BT_DBG("sk %p, len %d", sk, skb->len);
-+
-+ if (sk->state != BT_CONNECTED)
-+ goto drop;
-+
-+ if (l2cap_pi(sk)->imtu < skb->len)
-+ goto drop;
-+
-+ /* If socket recv buffers overflows we drop data here
-+ * which is *bad* because L2CAP has to be reliable.
-+ * But we don't have any other choice. L2CAP doesn't
-+ * provide flow control mechanism */
-+
-+ if (!sock_queue_rcv_skb(sk, skb))
-+ goto done;
-+
-+drop:
-+ kfree_skb(skb);
-+
-+done:
-+ if (sk) bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_conless_channel(struct l2cap_conn *conn, __u16 psm, struct sk_buff *skb)
-+{
-+ struct sock *sk;
-+
-+ sk = l2cap_get_sock_by_psm(0, psm, conn->src);
-+ if (!sk)
-+ goto drop;
-+
-+ BT_DBG("sk %p, len %d", sk, skb->len);
-+
-+ if (sk->state != BT_BOUND && sk->state != BT_CONNECTED)
-+ goto drop;
-+
-+ if (l2cap_pi(sk)->imtu < skb->len)
-+ goto drop;
-+
-+ if (!sock_queue_rcv_skb(sk, skb))
-+ goto done;
-+
-+drop:
-+ kfree_skb(skb);
-+
-+done:
-+ if (sk) bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb)
-+{
-+ l2cap_hdr *lh = (l2cap_hdr *) skb->data;
-+ __u16 cid, psm, len;
-+
-+ skb_pull(skb, L2CAP_HDR_SIZE);
-+ cid = __le16_to_cpu(lh->cid);
-+ len = __le16_to_cpu(lh->len);
-+
-+ BT_DBG("len %d, cid 0x%4.4x", len, cid);
-+
-+ switch (cid) {
-+ case 0x0001:
-+ l2cap_sig_channel(conn, skb);
-+ break;
-+
-+ case 0x0002:
-+ psm = get_unaligned((__u16 *) skb->data);
-+ skb_pull(skb, 2);
-+ l2cap_conless_channel(conn, psm, skb);
-+ break;
-+
-+ default:
-+ l2cap_data_channel(conn, cid, skb);
-+ break;
-+ }
-+}
-+
-+/* ------------ L2CAP interface with lower layer (HCI) ------------- */
-+
-+static int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
-+{
-+ int exact = 0, lm1 = 0, lm2 = 0;
-+ register struct sock *sk;
-+
-+ if (type != ACL_LINK)
-+ return 0;
-+
-+ BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
-+
-+ /* Find listening sockets and check their link_mode */
-+ read_lock(&l2cap_sk_list.lock);
-+ for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-+ if (sk->state != BT_LISTEN)
-+ continue;
-+
-+ if (!bacmp(&bluez_pi(sk)->src, &hdev->bdaddr)) {
-+ lm1 |= (HCI_LM_ACCEPT | l2cap_pi(sk)->link_mode);
-+ exact++;
-+ } else if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ lm2 |= (HCI_LM_ACCEPT | l2cap_pi(sk)->link_mode);
-+ }
-+ read_unlock(&l2cap_sk_list.lock);
-+
-+ return exact ? lm1 : lm2;
-+}
-+
-+static int l2cap_connect_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status);
-+
-+ if (hcon->type != ACL_LINK)
-+ return 0;
-+
-+ if (!status) {
-+ struct l2cap_conn *conn;
-+
-+ conn = l2cap_conn_add(hcon, status);
-+ if (conn)
-+ l2cap_conn_ready(conn);
-+ } else
-+ l2cap_conn_del(hcon, bterr(status));
-+
-+ return 0;
-+}
-+
-+static int l2cap_disconn_ind(struct hci_conn *hcon, __u8 reason)
-+{
-+ BT_DBG("hcon %p reason %d", hcon, reason);
-+
-+ if (hcon->type != ACL_LINK)
-+ return 0;
-+
-+ l2cap_conn_del(hcon, bterr(reason));
-+ return 0;
-+}
-+
-+static int l2cap_auth_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ struct l2cap_chan_list *l;
-+ struct l2cap_conn *conn;
-+ l2cap_conn_rsp rsp;
-+ struct sock *sk;
-+ int result;
-+
-+ if (!(conn = hcon->l2cap_data))
-+ return 0;
-+ l = &conn->chan_list;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ bh_lock_sock(sk);
-+
-+ if (sk->state != BT_CONNECT2 ||
-+ (l2cap_pi(sk)->link_mode & L2CAP_LM_ENCRYPT)) {
-+ bh_unlock_sock(sk);
-+ continue;
-+ }
-+
-+ if (!status) {
-+ sk->state = BT_CONFIG;
-+ result = 0;
-+ } else {
-+ sk->state = BT_DISCONN;
-+ l2cap_sock_set_timer(sk, HZ/10);
-+ result = L2CAP_CR_SEC_BLOCK;
-+ }
-+
-+ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ rsp.result = __cpu_to_le16(result);
-+ rsp.status = __cpu_to_le16(0);
-+ l2cap_send_rsp(conn, l2cap_pi(sk)->ident, L2CAP_CONN_RSP,
-+ L2CAP_CONN_RSP_SIZE, &rsp);
-+
-+ bh_unlock_sock(sk);
-+ }
-+
-+ read_unlock(&l->lock);
-+ return 0;
-+}
-+
-+static int l2cap_encrypt_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ struct l2cap_chan_list *l;
-+ struct l2cap_conn *conn;
-+ l2cap_conn_rsp rsp;
-+ struct sock *sk;
-+ int result;
-+
-+ if (!(conn = hcon->l2cap_data))
-+ return 0;
-+ l = &conn->chan_list;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ bh_lock_sock(sk);
-+
-+ if (sk->state != BT_CONNECT2) {
-+ bh_unlock_sock(sk);
-+ continue;
-+ }
-+
-+ if (!status) {
-+ sk->state = BT_CONFIG;
-+ result = 0;
-+ } else {
-+ sk->state = BT_DISCONN;
-+ l2cap_sock_set_timer(sk, HZ/10);
-+ result = L2CAP_CR_SEC_BLOCK;
-+ }
-+
-+ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ rsp.result = __cpu_to_le16(result);
-+ rsp.status = __cpu_to_le16(0);
-+ l2cap_send_rsp(conn, l2cap_pi(sk)->ident, L2CAP_CONN_RSP,
-+ L2CAP_CONN_RSP_SIZE, &rsp);
-+
-+ bh_unlock_sock(sk);
-+ }
-+
-+ read_unlock(&l->lock);
-+ return 0;
-+}
-+
-+static int l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb, __u16 flags)
-+{
-+ struct l2cap_conn *conn = hcon->l2cap_data;
-+
-+ if (!conn && !(conn = l2cap_conn_add(hcon, 0)))
-+ goto drop;
-+
-+ BT_DBG("conn %p len %d flags 0x%x", conn, skb->len, flags);
-+
-+ if (flags & ACL_START) {
-+ l2cap_hdr *hdr;
-+ int len;
-+
-+ if (conn->rx_len) {
-+ BT_ERR("Unexpected start frame (len %d)", skb->len);
-+ kfree_skb(conn->rx_skb);
-+ conn->rx_skb = NULL;
-+ conn->rx_len = 0;
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ }
-+
-+ if (skb->len < 2) {
-+ BT_ERR("Frame is too short (len %d)", skb->len);
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ hdr = (l2cap_hdr *) skb->data;
-+ len = __le16_to_cpu(hdr->len) + L2CAP_HDR_SIZE;
-+
-+ if (len == skb->len) {
-+ /* Complete frame received */
-+ l2cap_recv_frame(conn, skb);
-+ return 0;
-+ }
-+
-+ BT_DBG("Start: total len %d, frag len %d", len, skb->len);
-+
-+ if (skb->len > len) {
-+ BT_ERR("Frame is too long (len %d, expected len %d)",
-+ skb->len, len);
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ /* Allocate skb for the complete frame including header */
-+ conn->rx_skb = bluez_skb_alloc(len, GFP_ATOMIC);
-+ if (!conn->rx_skb)
-+ goto drop;
-+
-+ memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
-+ conn->rx_len = len - skb->len;
-+ } else {
-+ BT_DBG("Cont: frag len %d (expecting %d)", skb->len, conn->rx_len);
-+
-+ if (!conn->rx_len) {
-+ BT_ERR("Unexpected continuation frame (len %d)", skb->len);
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ if (skb->len > conn->rx_len) {
-+ BT_ERR("Fragment is too long (len %d, expected %d)",
-+ skb->len, conn->rx_len);
-+ kfree_skb(conn->rx_skb);
-+ conn->rx_skb = NULL;
-+ conn->rx_len = 0;
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
-+ conn->rx_len -= skb->len;
-+
-+ if (!conn->rx_len) {
-+ /* Complete frame received */
-+ l2cap_recv_frame(conn, conn->rx_skb);
-+ conn->rx_skb = NULL;
-+ }
-+ }
-+
-+drop:
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+/* ----- Proc fs support ------ */
-+static int l2cap_sock_dump(char *buf, struct bluez_sock_list *list)
-+{
-+ struct l2cap_pinfo *pi;
-+ struct sock *sk;
-+ char *ptr = buf;
-+
-+ read_lock_bh(&list->lock);
-+
-+ for (sk = list->head; sk; sk = sk->next) {
-+ pi = l2cap_pi(sk);
-+ ptr += sprintf(ptr, "%s %s %d %d 0x%4.4x 0x%4.4x %d %d 0x%x\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ sk->state, pi->psm, pi->scid, pi->dcid, pi->imtu, pi->omtu,
-+ pi->link_mode);
-+ }
-+
-+ read_unlock_bh(&list->lock);
-+
-+ ptr += sprintf(ptr, "\n");
-+ return ptr - buf;
-+}
-+
-+static int l2cap_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
-+{
-+ char *ptr = buf;
-+ int len;
-+
-+ BT_DBG("count %d, offset %ld", count, offset);
-+
-+ ptr += l2cap_sock_dump(ptr, &l2cap_sk_list);
-+ len = ptr - buf;
-+
-+ if (len <= count + offset)
-+ *eof = 1;
-+
-+ *start = buf + offset;
-+ len -= offset;
-+
-+ if (len > count)
-+ len = count;
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+
-+static struct proto_ops l2cap_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: l2cap_sock_release,
-+ bind: l2cap_sock_bind,
-+ connect: l2cap_sock_connect,
-+ listen: l2cap_sock_listen,
-+ accept: l2cap_sock_accept,
-+ getname: l2cap_sock_getname,
-+ sendmsg: l2cap_sock_sendmsg,
-+ recvmsg: bluez_sock_recvmsg,
-+ poll: bluez_sock_poll,
-+ socketpair: sock_no_socketpair,
-+ ioctl: sock_no_ioctl,
-+ shutdown: l2cap_sock_shutdown,
-+ setsockopt: l2cap_sock_setsockopt,
-+ getsockopt: l2cap_sock_getsockopt,
-+ mmap: sock_no_mmap
-+};
-+
-+static struct net_proto_family l2cap_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: l2cap_sock_create
-+};
-+
-+static struct hci_proto l2cap_hci_proto = {
-+ name: "L2CAP",
-+ id: HCI_PROTO_L2CAP,
-+ connect_ind: l2cap_connect_ind,
-+ connect_cfm: l2cap_connect_cfm,
-+ disconn_ind: l2cap_disconn_ind,
-+ recv_acldata: l2cap_recv_acldata,
-+ auth_cfm: l2cap_auth_cfm,
-+ encrypt_cfm: l2cap_encrypt_cfm
-+};
-+
-+int __init l2cap_init(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops))) {
-+ BT_ERR("Can't register L2CAP socket");
-+ return err;
-+ }
-+
-+ if ((err = hci_register_proto(&l2cap_hci_proto))) {
-+ BT_ERR("Can't register L2CAP protocol");
-+ return err;
-+ }
-+
-+ create_proc_read_entry("bluetooth/l2cap", 0, 0, l2cap_read_proc, NULL);
-+
-+ BT_INFO("BlueZ L2CAP ver %s Copyright (C) 2000,2001 Qualcomm Inc", VERSION);
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ return 0;
-+}
-+
-+void l2cap_cleanup(void)
-+{
-+ remove_proc_entry("bluetooth/l2cap", NULL);
-+
-+ /* Unregister socket and protocol */
-+ if (bluez_sock_unregister(BTPROTO_L2CAP))
-+ BT_ERR("Can't unregister L2CAP socket");
-+
-+ if (hci_unregister_proto(&l2cap_hci_proto))
-+ BT_ERR("Can't unregister L2CAP protocol");
-+}
-+
-+void l2cap_load(void)
-+{
-+ /* Dummy function to trigger automatic L2CAP module loading by
-+ other modules that use L2CAP sockets but do not use any other
-+ symbols from it. */
-+ return;
-+}
-+
-+EXPORT_SYMBOL(l2cap_load);
-+
-+module_init(l2cap_init);
-+module_exit(l2cap_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_DESCRIPTION("BlueZ L2CAP ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/l2cap_core.c linux-2.4.18-mh15/net/bluetooth/l2cap_core.c
---- linux-2.4.18/net/bluetooth/l2cap_core.c 2001-09-30 21:26:08.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/l2cap_core.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,2316 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * BlueZ L2CAP core and sockets.
-- *
-- * $Id: l2cap_core.c,v 1.19 2001/08/03 04:19:50 maxk Exp $
-- */
--#define VERSION "1.1"
--
--#include <linux/config.h>
--#include <linux/module.h>
--
--#include <linux/types.h>
--#include <linux/errno.h>
--#include <linux/kernel.h>
--#include <linux/major.h>
--#include <linux/sched.h>
--#include <linux/slab.h>
--#include <linux/poll.h>
--#include <linux/fcntl.h>
--#include <linux/init.h>
--#include <linux/skbuff.h>
--#include <linux/interrupt.h>
--#include <linux/socket.h>
--#include <linux/skbuff.h>
--#include <linux/proc_fs.h>
--#include <linux/list.h>
--#include <net/sock.h>
--
--#include <asm/system.h>
--#include <asm/uaccess.h>
--
--#include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
--#include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/l2cap.h>
--#include <net/bluetooth/l2cap_core.h>
--
--#ifndef L2CAP_DEBUG
--#undef DBG
--#define DBG( A... )
--#endif
--
--struct proto_ops l2cap_sock_ops;
--
--struct bluez_sock_list l2cap_sk_list = {
-- lock: RW_LOCK_UNLOCKED
--};
--
--struct list_head l2cap_iff_list = LIST_HEAD_INIT(l2cap_iff_list);
--rwlock_t l2cap_rt_lock = RW_LOCK_UNLOCKED;
--
--static int l2cap_conn_del(struct l2cap_conn *conn, int err);
--
--static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent);
--static void l2cap_chan_del(struct sock *sk, int err);
--static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len);
--
--static void l2cap_sock_close(struct sock *sk);
--static void l2cap_sock_kill(struct sock *sk);
--
--static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data);
--static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data);
--
--/* -------- L2CAP interfaces & routing --------- */
--/* Add/delete L2CAP interface.
-- * Must be called with locked rt_lock
-- */
--
--static void l2cap_iff_add(struct hci_dev *hdev)
--{
-- struct l2cap_iff *iff;
--
-- DBG("%s", hdev->name);
--
-- DBG("iff_list %p next %p prev %p", &l2cap_iff_list, l2cap_iff_list.next, l2cap_iff_list.prev);
--
-- /* Allocate new interface and lock HCI device */
-- if (!(iff = kmalloc(sizeof(struct l2cap_iff), GFP_KERNEL))) {
-- ERR("Can't allocate new interface %s", hdev->name);
-- return;
-- }
-- memset(iff, 0, sizeof(struct l2cap_iff));
--
-- hci_dev_hold(hdev);
-- hdev->l2cap_data = iff;
-- iff->hdev = hdev;
-- iff->mtu = hdev->acl_mtu - HCI_ACL_HDR_SIZE;
-- iff->bdaddr = &hdev->bdaddr;
--
-- spin_lock_init(&iff->lock);
-- INIT_LIST_HEAD(&iff->conn_list);
--
-- list_add(&iff->list, &l2cap_iff_list);
--}
--
--static void l2cap_iff_del(struct hci_dev *hdev)
--{
-- struct l2cap_iff *iff;
--
-- if (!(iff = hdev->l2cap_data))
-- return;
--
-- DBG("%s iff %p", hdev->name, iff);
--
-- list_del(&iff->list);
--
-- l2cap_iff_lock(iff);
--
-- /* Drop connections */
-- while (!list_empty(&iff->conn_list)) {
-- struct l2cap_conn *c;
--
-- c = list_entry(iff->conn_list.next, struct l2cap_conn, list);
-- l2cap_conn_del(c, ENODEV);
-- }
--
-- l2cap_iff_unlock(iff);
--
-- /* Unlock HCI device */
-- hdev->l2cap_data = NULL;
-- hci_dev_put(hdev);
--
-- kfree(iff);
--}
--
--/* Get route. Returns L2CAP interface.
-- * Must be called with locked rt_lock
-- */
--static struct l2cap_iff *l2cap_get_route(bdaddr_t *src, bdaddr_t *dst)
--{
-- struct list_head *p;
-- int use_src;
--
-- DBG("%s -> %s", batostr(src), batostr(dst));
--
-- use_src = bacmp(src, BDADDR_ANY) ? 0 : 1;
--
-- /* Simple routing:
-- * No source address - find interface with bdaddr != dst
-- * Source address - find interface with bdaddr == src
-- */
--
-- list_for_each(p, &l2cap_iff_list) {
-- struct l2cap_iff *iff;
--
-- iff = list_entry(p, struct l2cap_iff, list);
--
-- if (use_src && !bacmp(iff->bdaddr, src))
-- return iff;
-- else if (bacmp(iff->bdaddr, dst))
-- return iff;
-- }
-- return NULL;
--}
--
--/* ----- L2CAP timers ------ */
--static void l2cap_sock_timeout(unsigned long arg)
--{
-- struct sock *sk = (struct sock *) arg;
--
-- DBG("sock %p state %d", sk, sk->state);
--
-- bh_lock_sock(sk);
-- switch (sk->state) {
-- case BT_DISCONN:
-- l2cap_chan_del(sk, ETIMEDOUT);
-- break;
--
-- default:
-- sk->err = ETIMEDOUT;
-- sk->state_change(sk);
-- break;
-- };
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
-- sock_put(sk);
--}
--
--static void l2cap_sock_set_timer(struct sock *sk, long timeout)
--{
-- DBG("sock %p state %d timeout %ld", sk, sk->state, timeout);
--
-- if (!mod_timer(&sk->timer, jiffies + timeout))
-- sock_hold(sk);
--}
--
--static void l2cap_sock_clear_timer(struct sock *sk)
--{
-- DBG("sock %p state %d", sk, sk->state);
--
-- if (timer_pending(&sk->timer) && del_timer(&sk->timer))
-- __sock_put(sk);
--}
--
--static void l2cap_sock_init_timer(struct sock *sk)
--{
-- init_timer(&sk->timer);
-- sk->timer.function = l2cap_sock_timeout;
-- sk->timer.data = (unsigned long)sk;
--}
--
--static void l2cap_conn_timeout(unsigned long arg)
--{
-- struct l2cap_conn *conn = (void *)arg;
--
-- DBG("conn %p state %d", conn, conn->state);
--
-- if (conn->state == BT_CONNECTED) {
-- hci_disconnect(conn->hconn, 0x13);
-- }
--
-- return;
--}
--
--static void l2cap_conn_set_timer(struct l2cap_conn *conn, long timeout)
--{
-- DBG("conn %p state %d timeout %ld", conn, conn->state, timeout);
--
-- mod_timer(&conn->timer, jiffies + timeout);
--}
--
--static void l2cap_conn_clear_timer(struct l2cap_conn *conn)
--{
-- DBG("conn %p state %d", conn, conn->state);
--
-- del_timer(&conn->timer);
--}
--
--static void l2cap_conn_init_timer(struct l2cap_conn *conn)
--{
-- init_timer(&conn->timer);
-- conn->timer.function = l2cap_conn_timeout;
-- conn->timer.data = (unsigned long)conn;
--}
--
--/* -------- L2CAP connections --------- */
--/* Add new connection to the interface.
-- * Interface must be locked
-- */
--static struct l2cap_conn *l2cap_conn_add(struct l2cap_iff *iff, bdaddr_t *dst)
--{
-- struct l2cap_conn *conn;
-- bdaddr_t *src = iff->bdaddr;
--
-- if (!(conn = kmalloc(sizeof(struct l2cap_conn), GFP_KERNEL)))
-- return NULL;
--
-- memset(conn, 0, sizeof(struct l2cap_conn));
--
-- conn->state = BT_OPEN;
-- conn->iff = iff;
-- bacpy(&conn->src, src);
-- bacpy(&conn->dst, dst);
--
-- spin_lock_init(&conn->lock);
-- conn->chan_list.lock = RW_LOCK_UNLOCKED;
--
-- l2cap_conn_init_timer(conn);
--
-- __l2cap_conn_link(iff, conn);
--
-- DBG("%s -> %s, %p", batostr(src), batostr(dst), conn);
--
-- MOD_INC_USE_COUNT;
--
-- return conn;
--}
--
--/* Delete connection on the interface.
-- * Interface must be locked
-- */
--static int l2cap_conn_del(struct l2cap_conn *conn, int err)
--{
-- struct sock *sk;
--
-- DBG("conn %p, state %d, err %d", conn, conn->state, err);
--
-- l2cap_conn_clear_timer(conn);
-- __l2cap_conn_unlink(conn->iff, conn);
--
-- conn->state = BT_CLOSED;
--
-- if (conn->rx_skb)
-- kfree_skb(conn->rx_skb);
--
-- /* Kill channels */
-- while ((sk = conn->chan_list.head)) {
-- bh_lock_sock(sk);
-- l2cap_sock_clear_timer(sk);
-- l2cap_chan_del(sk, err);
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
-- }
--
-- kfree(conn);
--
-- MOD_DEC_USE_COUNT;
-- return 0;
--}
--
--static inline struct l2cap_conn *l2cap_get_conn_by_addr(struct l2cap_iff *iff, bdaddr_t *dst)
--{
-- struct list_head *p;
--
-- list_for_each(p, &iff->conn_list) {
-- struct l2cap_conn *c;
--
-- c = list_entry(p, struct l2cap_conn, list);
-- if (!bacmp(&c->dst, dst))
-- return c;
-- }
-- return NULL;
--}
--
--int l2cap_connect(struct sock *sk)
--{
-- bdaddr_t *src = &l2cap_pi(sk)->src;
-- bdaddr_t *dst = &l2cap_pi(sk)->dst;
-- struct l2cap_conn *conn;
-- struct l2cap_iff *iff;
-- int err = 0;
--
-- DBG("%s -> %s psm 0x%2.2x", batostr(src), batostr(dst), l2cap_pi(sk)->psm);
--
-- read_lock_bh(&l2cap_rt_lock);
--
-- /* Get route to remote BD address */
-- if (!(iff = l2cap_get_route(src, dst))) {
-- err = -EHOSTUNREACH;
-- goto done;
-- }
--
-- /* Update source addr of the socket */
-- bacpy(src, iff->bdaddr);
--
-- l2cap_iff_lock(iff);
--
-- if (!(conn = l2cap_get_conn_by_addr(iff, dst))) {
-- /* Connection doesn't exist */
-- if (!(conn = l2cap_conn_add(iff, dst))) {
-- l2cap_iff_unlock(iff);
-- err = -ENOMEM;
-- goto done;
-- }
-- conn->out = 1;
-- }
--
-- l2cap_iff_unlock(iff);
--
-- l2cap_chan_add(conn, sk, NULL);
--
-- sk->state = BT_CONNECT;
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
--
-- switch (conn->state) {
-- case BT_CONNECTED:
-- if (sk->type == SOCK_SEQPACKET) {
-- l2cap_conn_req req;
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- req.psm = l2cap_pi(sk)->psm;
-- l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
-- } else {
-- l2cap_sock_clear_timer(sk);
-- sk->state = BT_CONNECTED;
-- }
-- break;
--
-- case BT_CONNECT:
-- break;
--
-- default:
-- /* Create ACL connection */
-- conn->state = BT_CONNECT;
-- hci_connect(iff->hdev, dst);
-- break;
-- };
--
--done:
-- read_unlock_bh(&l2cap_rt_lock);
-- return err;
--}
--
--/* ------ Channel queues for listening sockets ------ */
--void l2cap_accept_queue(struct sock *parent, struct sock *sk)
--{
-- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q;
--
-- DBG("parent %p, sk %p", parent, sk);
--
-- sock_hold(sk);
-- l2cap_pi(sk)->parent = parent;
-- l2cap_pi(sk)->next_q = NULL;
--
-- if (!q->head) {
-- q->head = q->tail = sk;
-- } else {
-- struct sock *tail = q->tail;
--
-- l2cap_pi(sk)->prev_q = tail;
-- l2cap_pi(tail)->next_q = sk;
-- q->tail = sk;
-- }
--
-- parent->ack_backlog++;
--}
--
--void l2cap_accept_unlink(struct sock *sk)
--{
-- struct sock *parent = l2cap_pi(sk)->parent;
-- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q;
-- struct sock *next, *prev;
--
-- DBG("sk %p", sk);
--
-- next = l2cap_pi(sk)->next_q;
-- prev = l2cap_pi(sk)->prev_q;
--
-- if (sk == q->head)
-- q->head = next;
-- if (sk == q->tail)
-- q->tail = prev;
--
-- if (next)
-- l2cap_pi(next)->prev_q = prev;
-- if (prev)
-- l2cap_pi(prev)->next_q = next;
--
-- l2cap_pi(sk)->parent = NULL;
--
-- parent->ack_backlog--;
-- __sock_put(sk);
--}
--
--/* Get next connected channel in queue. */
--struct sock *l2cap_accept_dequeue(struct sock *parent, int state)
--{
-- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q;
-- struct sock *sk;
--
-- for (sk = q->head; sk; sk = l2cap_pi(sk)->next_q) {
-- if (!state || sk->state == state) {
-- l2cap_accept_unlink(sk);
-- break;
-- }
-- }
--
-- DBG("parent %p, sk %p", parent, sk);
--
-- return sk;
--}
--
--/* -------- Socket interface ---------- */
--static struct sock *__l2cap_get_sock_by_addr(struct sockaddr_l2 *addr)
--{
-- bdaddr_t *src = &addr->l2_bdaddr;
-- __u16 psm = addr->l2_psm;
-- struct sock *sk;
--
-- for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-- if (l2cap_pi(sk)->psm == psm &&
-- !bacmp(&l2cap_pi(sk)->src, src))
-- break;
-- }
--
-- return sk;
--}
--
--/* Find socket listening on psm and source bdaddr.
-- * Returns closest match.
-- */
--static struct sock *l2cap_get_sock_listen(bdaddr_t *src, __u16 psm)
--{
-- struct sock *sk, *sk1 = NULL;
--
-- read_lock(&l2cap_sk_list.lock);
--
-- for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-- struct l2cap_pinfo *pi;
--
-- if (sk->state != BT_LISTEN)
-- continue;
--
-- pi = l2cap_pi(sk);
--
-- if (pi->psm == psm) {
-- /* Exact match. */
-- if (!bacmp(&pi->src, src))
-- break;
--
-- /* Closest match */
-- if (!bacmp(&pi->src, BDADDR_ANY))
-- sk1 = sk;
-- }
-- }
--
-- read_unlock(&l2cap_sk_list.lock);
--
-- return sk ? sk : sk1;
--}
--
--static void l2cap_sock_destruct(struct sock *sk)
--{
-- DBG("sk %p", sk);
--
-- skb_queue_purge(&sk->receive_queue);
-- skb_queue_purge(&sk->write_queue);
--
-- MOD_DEC_USE_COUNT;
--}
--
--static void l2cap_sock_cleanup_listen(struct sock *parent)
--{
-- struct sock *sk;
--
-- DBG("parent %p", parent);
--
-- /* Close not yet accepted channels */
-- while ((sk = l2cap_accept_dequeue(parent, 0)))
-- l2cap_sock_close(sk);
--
-- parent->state = BT_CLOSED;
-- parent->zapped = 1;
--}
--
--/* Kill socket (only if zapped and orphan)
-- * Must be called on unlocked socket.
-- */
--static void l2cap_sock_kill(struct sock *sk)
--{
-- if (!sk->zapped || sk->socket)
-- return;
--
-- DBG("sk %p state %d", sk, sk->state);
--
-- /* Kill poor orphan */
-- bluez_sock_unlink(&l2cap_sk_list, sk);
-- sk->dead = 1;
-- sock_put(sk);
--}
--
--/* Close socket.
-- * Must be called on unlocked socket.
-- */
--static void l2cap_sock_close(struct sock *sk)
--{
-- struct l2cap_conn *conn;
--
-- l2cap_sock_clear_timer(sk);
--
-- lock_sock(sk);
--
-- conn = l2cap_pi(sk)->conn;
--
-- DBG("sk %p state %d conn %p socket %p", sk, sk->state, conn, sk->socket);
--
-- switch (sk->state) {
-- case BT_LISTEN:
-- l2cap_sock_cleanup_listen(sk);
-- break;
--
-- case BT_CONNECTED:
-- case BT_CONFIG:
-- if (sk->type == SOCK_SEQPACKET) {
-- l2cap_disconn_req req;
--
-- sk->state = BT_DISCONN;
--
-- req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
--
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
-- } else {
-- l2cap_chan_del(sk, ECONNRESET);
-- }
-- break;
--
-- case BT_CONNECT:
-- case BT_DISCONN:
-- l2cap_chan_del(sk, ECONNRESET);
-- break;
--
-- default:
-- sk->zapped = 1;
-- break;
-- };
--
-- release_sock(sk);
--
-- l2cap_sock_kill(sk);
--}
--
--static void l2cap_sock_init(struct sock *sk, struct sock *parent)
--{
-- struct l2cap_pinfo *pi = l2cap_pi(sk);
--
-- DBG("sk %p", sk);
--
-- if (parent) {
-- sk->type = parent->type;
--
-- pi->imtu = l2cap_pi(parent)->imtu;
-- pi->omtu = l2cap_pi(parent)->omtu;
-- } else {
-- pi->imtu = L2CAP_DEFAULT_MTU;
-- pi->omtu = 0;
-- }
--
-- /* Default config options */
-- pi->conf_mtu = L2CAP_DEFAULT_MTU;
-- pi->flush_to = L2CAP_DEFAULT_FLUSH_TO;
--}
--
--static struct sock *l2cap_sock_alloc(struct socket *sock, int proto, int prio)
--{
-- struct sock *sk;
--
-- if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1)))
-- return NULL;
--
-- sock_init_data(sock, sk);
--
-- sk->zapped = 0;
--
-- sk->destruct = l2cap_sock_destruct;
-- sk->sndtimeo = L2CAP_CONN_TIMEOUT;
--
-- sk->protocol = proto;
-- sk->state = BT_OPEN;
--
-- l2cap_sock_init_timer(sk);
--
-- bluez_sock_link(&l2cap_sk_list, sk);
--
-- MOD_INC_USE_COUNT;
--
-- return sk;
--}
--
--static int l2cap_sock_create(struct socket *sock, int protocol)
--{
-- struct sock *sk;
--
-- DBG("sock %p", sock);
--
-- sock->state = SS_UNCONNECTED;
--
-- if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_RAW)
-- return -ESOCKTNOSUPPORT;
--
-- sock->ops = &l2cap_sock_ops;
--
-- if (!(sk = l2cap_sock_alloc(sock, protocol, GFP_KERNEL)))
-- return -ENOMEM;
--
-- l2cap_sock_init(sk, NULL);
--
-- return 0;
--}
--
--static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
--{
-- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- DBG("sk %p, %s %d", sk, batostr(&la->l2_bdaddr), la->l2_psm);
--
-- if (!addr || addr->sa_family != AF_BLUETOOTH)
-- return -EINVAL;
--
-- lock_sock(sk);
--
-- if (sk->state != BT_OPEN) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- write_lock(&l2cap_sk_list.lock);
--
-- if (la->l2_psm && __l2cap_get_sock_by_addr(la)) {
-- err = -EADDRINUSE;
-- goto unlock;
-- }
--
-- /* Save source address */
-- bacpy(&l2cap_pi(sk)->src, &la->l2_bdaddr);
-- l2cap_pi(sk)->psm = la->l2_psm;
-- sk->state = BT_BOUND;
--
--unlock:
-- write_unlock(&l2cap_sk_list.lock);
--
--done:
-- release_sock(sk);
--
-- return err;
--}
--
--static int l2cap_sock_w4_connect(struct sock *sk, int flags)
--{
-- DECLARE_WAITQUEUE(wait, current);
-- long timeo = sock_sndtimeo(sk, flags & O_NONBLOCK);
-- int err = 0;
--
-- DBG("sk %p", sk);
--
-- add_wait_queue(sk->sleep, &wait);
-- current->state = TASK_INTERRUPTIBLE;
--
-- while (sk->state != BT_CONNECTED) {
-- if (!timeo) {
-- err = -EAGAIN;
-- break;
-- }
--
-- release_sock(sk);
-- timeo = schedule_timeout(timeo);
-- lock_sock(sk);
--
-- err = 0;
-- if (sk->state == BT_CONNECTED)
-- break;
--
-- if (sk->err) {
-- err = sock_error(sk);
-- break;
-- }
--
-- if (signal_pending(current)) {
-- err = sock_intr_errno(timeo);
-- break;
-- }
-- }
-- current->state = TASK_RUNNING;
-- remove_wait_queue(sk->sleep, &wait);
--
-- return err;
--}
--
--static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
--{
-- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- lock_sock(sk);
--
-- DBG("sk %p", sk);
--
-- if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_l2)) {
-- err = -EINVAL;
-- goto done;
-- }
--
-- if (sk->state != BT_OPEN && sk->state != BT_BOUND) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- if (sk->type == SOCK_SEQPACKET && !la->l2_psm) {
-- err = -EINVAL;
-- goto done;
-- }
--
-- /* Set destination address and psm */
-- bacpy(&l2cap_pi(sk)->dst, &la->l2_bdaddr);
-- l2cap_pi(sk)->psm = la->l2_psm;
--
-- if ((err = l2cap_connect(sk)))
-- goto done;
--
-- err = l2cap_sock_w4_connect(sk, flags);
--
--done:
-- release_sock(sk);
-- return err;
--}
--
--int l2cap_sock_listen(struct socket *sock, int backlog)
--{
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- DBG("sk %p backlog %d", sk, backlog);
--
-- lock_sock(sk);
--
-- if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- if (!l2cap_pi(sk)->psm) {
-- err = -EINVAL;
-- goto done;
-- }
--
-- sk->max_ack_backlog = backlog;
-- sk->ack_backlog = 0;
-- sk->state = BT_LISTEN;
--
--done:
-- release_sock(sk);
-- return err;
--}
--
--int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
--{
-- DECLARE_WAITQUEUE(wait, current);
-- struct sock *sk = sock->sk, *ch;
-- long timeo;
-- int err = 0;
--
-- lock_sock(sk);
--
-- if (sk->state != BT_LISTEN) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
--
-- DBG("sk %p timeo %ld", sk, timeo);
--
-- /* Wait for an incoming connection. (wake-one). */
-- add_wait_queue_exclusive(sk->sleep, &wait);
-- current->state = TASK_INTERRUPTIBLE;
-- while (!(ch = l2cap_accept_dequeue(sk, BT_CONNECTED))) {
-- if (!timeo) {
-- err = -EAGAIN;
-- break;
-- }
--
-- release_sock(sk);
-- timeo = schedule_timeout(timeo);
-- lock_sock(sk);
--
-- if (sk->state != BT_LISTEN) {
-- err = -EBADFD;
-- break;
-- }
--
-- if (signal_pending(current)) {
-- err = sock_intr_errno(timeo);
-- break;
-- }
-- }
-- current->state = TASK_RUNNING;
-- remove_wait_queue(sk->sleep, &wait);
--
-- if (err)
-- goto done;
--
-- sock_graft(ch, newsock);
-- newsock->state = SS_CONNECTED;
--
-- DBG("new socket %p", ch);
--
--done:
-- release_sock(sk);
--
-- return err;
--}
--
--static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
--{
-- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-- struct sock *sk = sock->sk;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- addr->sa_family = AF_BLUETOOTH;
-- *len = sizeof(struct sockaddr_l2);
--
-- if (peer)
-- bacpy(&la->l2_bdaddr, &l2cap_pi(sk)->dst);
-- else
-- bacpy(&la->l2_bdaddr, &l2cap_pi(sk)->src);
--
-- la->l2_psm = l2cap_pi(sk)->psm;
--
-- return 0;
--}
--
--static int l2cap_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm)
--{
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- if (sk->err)
-- return sock_error(sk);
--
-- if (msg->msg_flags & MSG_OOB)
-- return -EOPNOTSUPP;
--
-- lock_sock(sk);
--
-- if (sk->state == BT_CONNECTED)
-- err = l2cap_chan_send(sk, msg, len);
-- else
-- err = -ENOTCONN;
--
-- release_sock(sk);
-- return err;
--}
--
--static int l2cap_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm)
--{
-- struct sock *sk = sock->sk;
-- int noblock = flags & MSG_DONTWAIT;
-- int copied, err;
-- struct sk_buff *skb;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- if (flags & (MSG_OOB))
-- return -EOPNOTSUPP;
--
-- if (sk->state == BT_CLOSED)
-- return 0;
--
-- if (!(skb = skb_recv_datagram(sk, flags, noblock, &err)))
-- return err;
--
-- msg->msg_namelen = 0;
--
-- copied = skb->len;
-- if (len < copied) {
-- msg->msg_flags |= MSG_TRUNC;
-- copied = len;
-- }
--
-- skb->h.raw = skb->data;
-- err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
--
-- skb_free_datagram(sk, skb);
--
-- return err ? : copied;
--}
--
--int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
--{
-- struct sock *sk = sock->sk;
-- struct l2cap_options opts;
-- int err = 0;
--
-- DBG("sk %p", sk);
--
-- lock_sock(sk);
--
-- switch (optname) {
-- case L2CAP_OPTIONS:
-- if (copy_from_user((char *)&opts, optval, optlen)) {
-- err = -EFAULT;
-- break;
-- }
-- l2cap_pi(sk)->imtu = opts.imtu;
-- l2cap_pi(sk)->omtu = opts.omtu;
-- break;
--
-- default:
-- err = -ENOPROTOOPT;
-- break;
-- };
--
-- release_sock(sk);
-- return err;
--}
--
--int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
--{
-- struct sock *sk = sock->sk;
-- struct l2cap_options opts;
-- struct l2cap_conninfo cinfo;
-- int len, err = 0;
--
-- if (get_user(len, optlen))
-- return -EFAULT;
--
-- lock_sock(sk);
--
-- switch (optname) {
-- case L2CAP_OPTIONS:
-- opts.imtu = l2cap_pi(sk)->imtu;
-- opts.omtu = l2cap_pi(sk)->omtu;
-- opts.flush_to = l2cap_pi(sk)->flush_to;
--
-- len = MIN(len, sizeof(opts));
-- if (copy_to_user(optval, (char *)&opts, len))
-- err = -EFAULT;
--
-- break;
--
-- case L2CAP_CONNINFO:
-- if (sk->state != BT_CONNECTED) {
-- err = -ENOTCONN;
-- break;
-- }
--
-- cinfo.hci_handle = l2cap_pi(sk)->conn->hconn->handle;
--
-- len = MIN(len, sizeof(cinfo));
-- if (copy_to_user(optval, (char *)&cinfo, len))
-- err = -EFAULT;
--
-- break;
--
-- default:
-- err = -ENOPROTOOPT;
-- break;
-- };
--
-- release_sock(sk);
-- return err;
--}
--
--static unsigned int l2cap_sock_poll(struct file * file, struct socket *sock, poll_table *wait)
--{
-- struct sock *sk = sock->sk;
-- struct l2cap_accept_q *aq;
-- unsigned int mask;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- poll_wait(file, sk->sleep, wait);
-- mask = 0;
--
-- if (sk->err || !skb_queue_empty(&sk->error_queue))
-- mask |= POLLERR;
--
-- if (sk->shutdown == SHUTDOWN_MASK)
-- mask |= POLLHUP;
--
-- aq = &l2cap_pi(sk)->accept_q;
-- if (!skb_queue_empty(&sk->receive_queue) || aq->head || (sk->shutdown & RCV_SHUTDOWN))
-- mask |= POLLIN | POLLRDNORM;
--
-- if (sk->state == BT_CLOSED)
-- mask |= POLLHUP;
--
-- if (sock_writeable(sk))
-- mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
-- else
-- set_bit(SOCK_ASYNC_NOSPACE, &sk->socket->flags);
--
-- return mask;
--}
--
--static int l2cap_sock_release(struct socket *sock)
--{
-- struct sock *sk = sock->sk;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- if (!sk)
-- return 0;
--
-- sock_orphan(sk);
--
-- l2cap_sock_close(sk);
--
-- return 0;
--}
--
--/* --------- L2CAP channels --------- */
--static struct sock * __l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-- if (l2cap_pi(s)->dcid == cid)
-- break;
-- }
--
-- return s;
--}
--
--static inline struct sock *l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- read_lock(&l->lock);
-- s = __l2cap_get_chan_by_dcid(l, cid);
-- read_unlock(&l->lock);
--
-- return s;
--}
--
--static struct sock *__l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-- if (l2cap_pi(s)->scid == cid)
-- break;
-- }
--
-- return s;
--}
--static inline struct sock *l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- read_lock(&l->lock);
-- s = __l2cap_get_chan_by_scid(l, cid);
-- read_unlock(&l->lock);
--
-- return s;
--}
--
--static struct sock *__l2cap_get_chan_by_ident(struct l2cap_chan_list *l, __u8 ident)
--{
-- struct sock *s;
--
-- for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-- if (l2cap_pi(s)->ident == ident)
-- break;
-- }
--
-- return s;
--}
--
--static inline struct sock *l2cap_get_chan_by_ident(struct l2cap_chan_list *l, __u8 ident)
--{
-- struct sock *s;
--
-- read_lock(&l->lock);
-- s = __l2cap_get_chan_by_ident(l, ident);
-- read_unlock(&l->lock);
--
-- return s;
--}
--
--static __u16 l2cap_alloc_cid(struct l2cap_chan_list *l)
--{
-- __u16 cid = 0x0040;
--
-- for (; cid < 0xffff; cid++) {
-- if(!__l2cap_get_chan_by_scid(l, cid))
-- return cid;
-- }
--
-- return 0;
--}
--
--static inline void __l2cap_chan_link(struct l2cap_chan_list *l, struct sock *sk)
--{
-- sock_hold(sk);
--
-- if (l->head)
-- l2cap_pi(l->head)->prev_c = sk;
--
-- l2cap_pi(sk)->next_c = l->head;
-- l2cap_pi(sk)->prev_c = NULL;
-- l->head = sk;
--}
--
--static inline void l2cap_chan_unlink(struct l2cap_chan_list *l, struct sock *sk)
--{
-- struct sock *next = l2cap_pi(sk)->next_c, *prev = l2cap_pi(sk)->prev_c;
--
-- write_lock(&l->lock);
-- if (sk == l->head)
-- l->head = next;
--
-- if (next)
-- l2cap_pi(next)->prev_c = prev;
-- if (prev)
-- l2cap_pi(prev)->next_c = next;
-- write_unlock(&l->lock);
--
-- __sock_put(sk);
--}
--
--static void __l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
--
-- DBG("conn %p, psm 0x%2.2x, dcid 0x%4.4x", conn, l2cap_pi(sk)->psm, l2cap_pi(sk)->dcid);
--
-- l2cap_conn_clear_timer(conn);
--
-- atomic_inc(&conn->refcnt);
-- l2cap_pi(sk)->conn = conn;
--
-- if (sk->type == SOCK_SEQPACKET) {
-- /* Alloc CID for normal socket */
-- l2cap_pi(sk)->scid = l2cap_alloc_cid(l);
-- } else {
-- /* Raw socket can send only signalling messages */
-- l2cap_pi(sk)->scid = 0x0001;
-- l2cap_pi(sk)->dcid = 0x0001;
-- l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU;
-- }
--
-- __l2cap_chan_link(l, sk);
--
-- if (parent)
-- l2cap_accept_queue(parent, sk);
--}
--
--static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
--
-- write_lock(&l->lock);
-- __l2cap_chan_add(conn, sk, parent);
-- write_unlock(&l->lock);
--}
--
--/* Delete channel.
-- * Must be called on the locked socket. */
--static void l2cap_chan_del(struct sock *sk, int err)
--{
-- struct l2cap_conn *conn;
-- struct sock *parent;
--
-- conn = l2cap_pi(sk)->conn;
-- parent = l2cap_pi(sk)->parent;
--
-- DBG("sk %p, conn %p, err %d", sk, conn, err);
--
-- if (parent) {
-- /* Unlink from parent accept queue */
-- bh_lock_sock(parent);
-- l2cap_accept_unlink(sk);
-- bh_unlock_sock(parent);
-- }
--
-- if (conn) {
-- long timeout;
--
-- /* Unlink from channel list */
-- l2cap_chan_unlink(&conn->chan_list, sk);
-- l2cap_pi(sk)->conn = NULL;
--
-- if (conn->out)
-- timeout = L2CAP_DISCONN_TIMEOUT;
-- else
-- timeout = L2CAP_CONN_IDLE_TIMEOUT;
--
-- if (atomic_dec_and_test(&conn->refcnt) && conn->state == BT_CONNECTED) {
-- /* Schedule Baseband disconnect */
-- l2cap_conn_set_timer(conn, timeout);
-- }
-- }
--
-- sk->state = BT_CLOSED;
-- sk->err = err;
-- sk->state_change(sk);
--
-- sk->zapped = 1;
--}
--
--static void l2cap_conn_ready(struct l2cap_conn *conn)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
-- struct sock *sk;
--
-- DBG("conn %p", conn);
--
-- read_lock(&l->lock);
--
-- for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-- bh_lock_sock(sk);
--
-- if (sk->type != SOCK_SEQPACKET) {
-- sk->state = BT_CONNECTED;
-- sk->state_change(sk);
-- l2cap_sock_clear_timer(sk);
-- } else if (sk->state == BT_CONNECT) {
-- l2cap_conn_req req;
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- req.psm = l2cap_pi(sk)->psm;
-- l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
--
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
-- }
--
-- bh_unlock_sock(sk);
-- }
--
-- read_unlock(&l->lock);
--}
--
--static void l2cap_chan_ready(struct sock *sk)
--{
-- struct sock *parent = l2cap_pi(sk)->parent;
--
-- DBG("sk %p, parent %p", sk, parent);
--
-- l2cap_pi(sk)->conf_state = 0;
-- l2cap_sock_clear_timer(sk);
--
-- if (!parent) {
-- /* Outgoing channel.
-- * Wake up socket sleeping on connect.
-- */
-- sk->state = BT_CONNECTED;
-- sk->state_change(sk);
-- } else {
-- /* Incomming channel.
-- * Wake up socket sleeping on accept.
-- */
-- parent->data_ready(parent, 1);
-- }
--}
--
--/* Copy frame to all raw sockets on that connection */
--void l2cap_raw_recv(struct l2cap_conn *conn, struct sk_buff *skb)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
-- struct sk_buff *nskb;
-- struct sock * sk;
--
-- DBG("conn %p", conn);
--
-- read_lock(&l->lock);
-- for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-- if (sk->type != SOCK_RAW)
-- continue;
--
-- /* Don't send frame to the socket it came from */
-- if (skb->sk == sk)
-- continue;
--
-- if (!(nskb = skb_clone(skb, GFP_ATOMIC)))
-- continue;
--
-- skb_queue_tail(&sk->receive_queue, nskb);
-- sk->data_ready(sk, nskb->len);
-- }
-- read_unlock(&l->lock);
--}
--
--static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len)
--{
-- struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-- struct sk_buff *skb, **frag;
-- int err, size, count, sent=0;
-- l2cap_hdr *lh;
--
-- /* Check outgoing MTU */
-- if (len > l2cap_pi(sk)->omtu)
-- return -EINVAL;
--
-- DBG("sk %p len %d", sk, len);
--
-- /* First fragment (with L2CAP header) */
-- count = MIN(conn->iff->mtu - L2CAP_HDR_SIZE, len);
-- size = L2CAP_HDR_SIZE + count;
-- if (!(skb = bluez_skb_send_alloc(sk, size, msg->msg_flags & MSG_DONTWAIT, &err)))
-- return err;
--
-- /* Create L2CAP header */
-- lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-- lh->len = __cpu_to_le16(len);
-- lh->cid = __cpu_to_le16(l2cap_pi(sk)->dcid);
--
-- if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) {
-- err = -EFAULT;
-- goto fail;
-- }
--
-- sent += count;
-- len -= count;
--
-- /* Continuation fragments (no L2CAP header) */
-- frag = &skb_shinfo(skb)->frag_list;
-- while (len) {
-- count = MIN(conn->iff->mtu, len);
--
-- *frag = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err);
-- if (!*frag)
-- goto fail;
--
-- if (memcpy_fromiovec(skb_put(*frag, count), msg->msg_iov, count)) {
-- err = -EFAULT;
-- goto fail;
-- }
--
-- sent += count;
-- len -= count;
--
-- frag = &(*frag)->next;
-- }
--
-- if ((err = hci_send_acl(conn->hconn, skb, 0)) < 0)
-- goto fail;
--
-- return sent;
--
--fail:
-- kfree_skb(skb);
-- return err;
--}
--
--/* --------- L2CAP signalling commands --------- */
--static inline __u8 l2cap_get_ident(struct l2cap_conn *conn)
--{
-- __u8 id;
--
-- /* Get next available identificator.
-- * 1 - 199 are used by kernel.
-- * 200 - 254 are used by utilities like l2ping, etc
-- */
--
-- spin_lock(&conn->lock);
--
-- if (++conn->tx_ident > 199)
-- conn->tx_ident = 1;
--
-- id = conn->tx_ident;
--
-- spin_unlock(&conn->lock);
--
-- return id;
--}
--
--static inline struct sk_buff *l2cap_build_cmd(__u8 code, __u8 ident, __u16 len, void *data)
--{
-- struct sk_buff *skb;
-- l2cap_cmd_hdr *cmd;
-- l2cap_hdr *lh;
-- int size;
--
-- DBG("code 0x%2.2x, ident 0x%2.2x, len %d", code, ident, len);
--
-- size = L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE + len;
-- if (!(skb = bluez_skb_alloc(size, GFP_ATOMIC)))
-- return NULL;
--
-- lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-- lh->len = __cpu_to_le16(L2CAP_CMD_HDR_SIZE + len);
-- lh->cid = __cpu_to_le16(0x0001);
--
-- cmd = (l2cap_cmd_hdr *) skb_put(skb, L2CAP_CMD_HDR_SIZE);
-- cmd->code = code;
-- cmd->ident = ident;
-- cmd->len = __cpu_to_le16(len);
--
-- if (len)
-- memcpy(skb_put(skb, len), data, len);
--
-- return skb;
--}
--
--static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data)
--{
-- struct sk_buff *skb;
-- __u8 ident;
--
-- DBG("code 0x%2.2x", code);
--
-- ident = l2cap_get_ident(conn);
-- if (!(skb = l2cap_build_cmd(code, ident, len, data)))
-- return -ENOMEM;
-- return hci_send_acl(conn->hconn, skb, 0);
--}
--
--static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data)
--{
-- struct sk_buff *skb;
--
-- DBG("code 0x%2.2x", code);
--
-- if (!(skb = l2cap_build_cmd(code, ident, len, data)))
-- return -ENOMEM;
-- return hci_send_acl(conn->hconn, skb, 0);
--}
--
--static inline int l2cap_get_conf_opt(__u8 **ptr, __u8 *type, __u32 *val)
--{
-- l2cap_conf_opt *opt = (l2cap_conf_opt *) (*ptr);
-- int len;
--
-- *type = opt->type;
-- switch (opt->len) {
-- case 1:
-- *val = *((__u8 *) opt->val);
-- break;
--
-- case 2:
-- *val = __le16_to_cpu(*((__u16 *)opt->val));
-- break;
--
-- case 4:
-- *val = __le32_to_cpu(*((__u32 *)opt->val));
-- break;
--
-- default:
-- *val = 0L;
-- break;
-- };
--
-- DBG("type 0x%2.2x len %d val 0x%8.8x", *type, opt->len, *val);
--
-- len = L2CAP_CONF_OPT_SIZE + opt->len;
--
-- *ptr += len;
--
-- return len;
--}
--
--static inline void l2cap_parse_conf_req(struct sock *sk, char *data, int len)
--{
-- __u8 type, hint; __u32 val;
-- __u8 *ptr = data;
--
-- DBG("sk %p len %d", sk, len);
--
-- while (len >= L2CAP_CONF_OPT_SIZE) {
-- len -= l2cap_get_conf_opt(&ptr, &type, &val);
--
-- hint = type & 0x80;
-- type &= 0x7f;
--
-- switch (type) {
-- case L2CAP_CONF_MTU:
-- l2cap_pi(sk)->conf_mtu = val;
-- break;
--
-- case L2CAP_CONF_FLUSH_TO:
-- l2cap_pi(sk)->flush_to = val;
-- break;
--
-- case L2CAP_CONF_QOS:
-- break;
--
-- default:
-- if (hint)
-- break;
--
-- /* FIXME: Reject unknon option */
-- break;
-- };
-- }
--}
--
--static inline void l2cap_add_conf_opt(__u8 **ptr, __u8 type, __u8 len, __u32 val)
--{
-- register l2cap_conf_opt *opt = (l2cap_conf_opt *) (*ptr);
--
-- DBG("type 0x%2.2x len %d val 0x%8.8x", type, len, val);
--
-- opt->type = type;
-- opt->len = len;
-- switch (len) {
-- case 1:
-- *((__u8 *) opt->val) = val;
-- break;
--
-- case 2:
-- *((__u16 *) opt->val) = __cpu_to_le16(val);
-- break;
--
-- case 4:
-- *((__u32 *) opt->val) = __cpu_to_le32(val);
-- break;
-- };
--
-- *ptr += L2CAP_CONF_OPT_SIZE + len;
--}
--
--static int l2cap_build_conf_req(struct sock *sk, __u8 *data)
--{
-- struct l2cap_pinfo *pi = l2cap_pi(sk);
-- l2cap_conf_req *req = (l2cap_conf_req *) data;
-- __u8 *ptr = req->data;
--
-- DBG("sk %p", sk);
--
-- if (pi->imtu != L2CAP_DEFAULT_MTU)
-- l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->imtu);
--
-- /* FIXME. Need actual value of the flush timeout */
-- //if (flush_to != L2CAP_DEFAULT_FLUSH_TO)
-- // l2cap_add_conf_opt(&ptr, L2CAP_CONF_FLUSH_TO, 2, pi->flush_to);
--
-- req->dcid = __cpu_to_le16(pi->dcid);
-- req->flags = __cpu_to_le16(0);
--
-- return ptr - data;
--}
--
--static int l2cap_conf_output(struct sock *sk, __u8 **ptr)
--{
-- struct l2cap_pinfo *pi = l2cap_pi(sk);
-- int result = 0;
--
-- /* Configure output options and let other side know
-- * which ones we don't like.
-- */
-- if (pi->conf_mtu < pi->omtu) {
-- l2cap_add_conf_opt(ptr, L2CAP_CONF_MTU, 2, l2cap_pi(sk)->omtu);
-- result = L2CAP_CONF_UNACCEPT;
-- } else {
-- pi->omtu = pi->conf_mtu;
-- }
--
-- DBG("sk %p result %d", sk, result);
-- return result;
--}
--
--static int l2cap_build_conf_rsp(struct sock *sk, __u8 *data, int *result)
--{
-- l2cap_conf_rsp *rsp = (l2cap_conf_rsp *) data;
-- __u8 *ptr = rsp->data;
--
-- DBG("sk %p complete %d", sk, result ? 1 : 0);
--
-- if (result)
-- *result = l2cap_conf_output(sk, &ptr);
--
-- rsp->scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- rsp->result = __cpu_to_le16(result ? *result : 0);
-- rsp->flags = __cpu_to_le16(0);
--
-- return ptr - data;
--}
--
--static inline int l2cap_connect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- struct l2cap_chan_list *list = &conn->chan_list;
-- l2cap_conn_req *req = (l2cap_conn_req *) data;
-- l2cap_conn_rsp rsp;
-- struct sock *sk, *parent;
--
-- __u16 scid = __le16_to_cpu(req->scid);
-- __u16 psm = req->psm;
--
-- DBG("psm 0x%2.2x scid 0x%4.4x", psm, scid);
--
-- /* Check if we have socket listening on psm */
-- if (!(parent = l2cap_get_sock_listen(&conn->src, psm)))
-- goto reject;
--
-- bh_lock_sock(parent);
-- write_lock(&list->lock);
--
-- /* Check if we already have channel with that dcid */
-- if (__l2cap_get_chan_by_dcid(list, scid))
-- goto unlock;
--
-- /* Check for backlog size */
-- if (parent->ack_backlog > parent->max_ack_backlog)
-- goto unlock;
--
-- if (!(sk = l2cap_sock_alloc(NULL, BTPROTO_L2CAP, GFP_ATOMIC)))
-- goto unlock;
--
-- l2cap_sock_init(sk, parent);
--
-- bacpy(&l2cap_pi(sk)->src, &conn->src);
-- bacpy(&l2cap_pi(sk)->dst, &conn->dst);
-- l2cap_pi(sk)->psm = psm;
-- l2cap_pi(sk)->dcid = scid;
--
-- __l2cap_chan_add(conn, sk, parent);
-- sk->state = BT_CONFIG;
--
-- write_unlock(&list->lock);
-- bh_unlock_sock(parent);
--
-- rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- rsp.result = __cpu_to_le16(0);
-- rsp.status = __cpu_to_le16(0);
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp);
--
-- return 0;
--
--unlock:
-- write_unlock(&list->lock);
-- bh_unlock_sock(parent);
--
--reject:
-- rsp.scid = __cpu_to_le16(scid);
-- rsp.dcid = __cpu_to_le16(0);
-- rsp.status = __cpu_to_le16(0);
-- rsp.result = __cpu_to_le16(L2CAP_CONN_NO_MEM);
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp);
--
-- return 0;
--}
--
--static inline int l2cap_connect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_conn_rsp *rsp = (l2cap_conn_rsp *) data;
-- __u16 scid, dcid, result, status;
-- struct sock *sk;
--
-- scid = __le16_to_cpu(rsp->scid);
-- dcid = __le16_to_cpu(rsp->dcid);
-- result = __le16_to_cpu(rsp->result);
-- status = __le16_to_cpu(rsp->status);
--
-- DBG("dcid 0x%4.4x scid 0x%4.4x result 0x%2.2x status 0x%2.2x", dcid, scid, result, status);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
--
-- if (!result) {
-- char req[64];
--
-- sk->state = BT_CONFIG;
-- l2cap_pi(sk)->dcid = dcid;
-- l2cap_pi(sk)->conf_state |= CONF_REQ_SENT;
--
-- l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-- } else {
-- l2cap_chan_del(sk, ECONNREFUSED);
-- }
--
-- bh_unlock_sock(sk);
-- return 0;
--}
--
--static inline int l2cap_config_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_conf_req * req = (l2cap_conf_req *) data;
-- __u16 dcid, flags;
-- __u8 rsp[64];
-- struct sock *sk;
-- int result;
--
-- dcid = __le16_to_cpu(req->dcid);
-- flags = __le16_to_cpu(req->flags);
--
-- DBG("dcid 0x%4.4x flags 0x%2.2x", dcid, flags);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
--
-- l2cap_parse_conf_req(sk, req->data, cmd->len - L2CAP_CONF_REQ_SIZE);
--
-- if (flags & 0x01) {
-- /* Incomplete config. Send empty response. */
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, NULL), rsp);
-- goto unlock;
-- }
--
-- /* Complete config. */
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, &result), rsp);
--
-- if (result)
-- goto unlock;
--
-- /* Output config done */
-- l2cap_pi(sk)->conf_state |= CONF_OUTPUT_DONE;
--
-- if (l2cap_pi(sk)->conf_state & CONF_INPUT_DONE) {
-- sk->state = BT_CONNECTED;
-- l2cap_chan_ready(sk);
-- } else if (!(l2cap_pi(sk)->conf_state & CONF_REQ_SENT)) {
-- char req[64];
-- l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-- }
--
--unlock:
-- bh_unlock_sock(sk);
--
-- return 0;
--}
--
--static inline int l2cap_config_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_conf_rsp *rsp = (l2cap_conf_rsp *)data;
-- __u16 scid, flags, result;
-- struct sock *sk;
-- int err = 0;
--
-- scid = __le16_to_cpu(rsp->scid);
-- flags = __le16_to_cpu(rsp->flags);
-- result = __le16_to_cpu(rsp->result);
--
-- DBG("scid 0x%4.4x flags 0x%2.2x result 0x%2.2x", scid, flags, result);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
--
-- if (result) {
-- l2cap_disconn_req req;
--
-- /* They didn't like our options. Well... we do not negotiate.
-- * Close channel.
-- */
-- sk->state = BT_DISCONN;
--
-- req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
--
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
-- goto done;
-- }
--
-- if (flags & 0x01)
-- goto done;
--
-- /* Input config done */
-- l2cap_pi(sk)->conf_state |= CONF_INPUT_DONE;
--
-- if (l2cap_pi(sk)->conf_state & CONF_OUTPUT_DONE) {
-- sk->state = BT_CONNECTED;
-- l2cap_chan_ready(sk);
-- }
--
--done:
-- bh_unlock_sock(sk);
--
-- return err;
--}
--
--static inline int l2cap_disconnect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_disconn_req *req = (l2cap_disconn_req *) data;
-- l2cap_disconn_rsp rsp;
-- __u16 dcid, scid;
-- struct sock *sk;
--
-- scid = __le16_to_cpu(req->scid);
-- dcid = __le16_to_cpu(req->dcid);
--
-- DBG("scid 0x%4.4x dcid 0x%4.4x", scid, dcid);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-- return 0;
--
-- bh_lock_sock(sk);
--
-- rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_DISCONN_RSP, L2CAP_DISCONN_RSP_SIZE, &rsp);
--
-- l2cap_chan_del(sk, ECONNRESET);
--
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
--
-- return 0;
--}
--
--static inline int l2cap_disconnect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_disconn_rsp *rsp = (l2cap_disconn_rsp *) data;
-- __u16 dcid, scid;
-- struct sock *sk;
--
-- scid = __le16_to_cpu(rsp->scid);
-- dcid = __le16_to_cpu(rsp->dcid);
--
-- DBG("dcid 0x%4.4x scid 0x%4.4x", dcid, scid);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
-- l2cap_sock_clear_timer(sk);
-- l2cap_chan_del(sk, ECONNABORTED);
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
--
-- return 0;
--}
--
--static inline void l2cap_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb)
--{
-- __u8 *data = skb->data;
-- int len = skb->len;
-- l2cap_cmd_hdr cmd;
-- int err = 0;
--
-- while (len >= L2CAP_CMD_HDR_SIZE) {
-- memcpy(&cmd, data, L2CAP_CMD_HDR_SIZE);
-- data += L2CAP_CMD_HDR_SIZE;
-- len -= L2CAP_CMD_HDR_SIZE;
--
-- cmd.len = __le16_to_cpu(cmd.len);
--
-- DBG("code 0x%2.2x len %d id 0x%2.2x", cmd.code, cmd.len, cmd.ident);
--
-- if (cmd.len > len || !cmd.ident) {
-- DBG("corrupted command");
-- break;
-- }
--
-- switch (cmd.code) {
-- case L2CAP_CONN_REQ:
-- err = l2cap_connect_req(conn, &cmd, data);
-- break;
--
-- case L2CAP_CONN_RSP:
-- err = l2cap_connect_rsp(conn, &cmd, data);
-- break;
--
-- case L2CAP_CONF_REQ:
-- err = l2cap_config_req(conn, &cmd, data);
-- break;
--
-- case L2CAP_CONF_RSP:
-- err = l2cap_config_rsp(conn, &cmd, data);
-- break;
--
-- case L2CAP_DISCONN_REQ:
-- err = l2cap_disconnect_req(conn, &cmd, data);
-- break;
--
-- case L2CAP_DISCONN_RSP:
-- err = l2cap_disconnect_rsp(conn, &cmd, data);
-- break;
--
-- case L2CAP_COMMAND_REJ:
-- /* FIXME: We should process this */
-- l2cap_raw_recv(conn, skb);
-- break;
--
-- case L2CAP_ECHO_REQ:
-- l2cap_send_rsp(conn, cmd.ident, L2CAP_ECHO_RSP, cmd.len, data);
-- break;
--
-- case L2CAP_ECHO_RSP:
-- case L2CAP_INFO_REQ:
-- case L2CAP_INFO_RSP:
-- l2cap_raw_recv(conn, skb);
-- break;
--
-- default:
-- ERR("Uknown signaling command 0x%2.2x", cmd.code);
-- err = -EINVAL;
-- break;
-- };
--
-- if (err) {
-- l2cap_cmd_rej rej;
-- DBG("error %d", err);
--
-- /* FIXME: Map err to a valid reason. */
-- rej.reason = __cpu_to_le16(0);
-- l2cap_send_rsp(conn, cmd.ident, L2CAP_COMMAND_REJ, L2CAP_CMD_REJ_SIZE, &rej);
-- }
--
-- data += cmd.len;
-- len -= cmd.len;
-- }
--
-- kfree_skb(skb);
--}
--
--static inline int l2cap_data_channel(struct l2cap_conn *conn, __u16 cid, struct sk_buff *skb)
--{
-- struct sock *sk;
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, cid))) {
-- DBG("unknown cid 0x%4.4x", cid);
-- goto drop;
-- }
--
-- DBG("sk %p, len %d", sk, skb->len);
--
-- if (sk->state != BT_CONNECTED)
-- goto drop;
--
-- if (l2cap_pi(sk)->imtu < skb->len)
-- goto drop;
--
-- skb_queue_tail(&sk->receive_queue, skb);
-- sk->data_ready(sk, skb->len);
--
-- return 0;
--
--drop:
-- kfree_skb(skb);
--
-- return 0;
--}
--
--static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb)
--{
-- l2cap_hdr *lh = (l2cap_hdr *) skb->data;
-- __u16 cid, len;
--
-- skb_pull(skb, L2CAP_HDR_SIZE);
-- cid = __le16_to_cpu(lh->cid);
-- len = __le16_to_cpu(lh->len);
--
-- DBG("len %d, cid 0x%4.4x", len, cid);
--
-- if (cid == 0x0001)
-- l2cap_sig_channel(conn, skb);
-- else
-- l2cap_data_channel(conn, cid, skb);
--}
--
--/* ------------ L2CAP interface with lower layer (HCI) ------------- */
--static int l2cap_dev_event(struct notifier_block *this, unsigned long event, void *ptr)
--{
-- struct hci_dev *hdev = (struct hci_dev *) ptr;
--
-- DBG("hdev %s, event %ld", hdev->name, event);
--
-- write_lock(&l2cap_rt_lock);
--
-- switch (event) {
-- case HCI_DEV_UP:
-- l2cap_iff_add(hdev);
-- break;
--
-- case HCI_DEV_DOWN:
-- l2cap_iff_del(hdev);
-- break;
-- };
--
-- write_unlock(&l2cap_rt_lock);
--
-- return NOTIFY_DONE;
--}
--
--int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr)
--{
-- struct l2cap_iff *iff;
--
-- DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
--
-- if (!(iff = hdev->l2cap_data)) {
-- ERR("unknown interface");
-- return 0;
-- }
--
-- /* Always accept connection */
-- return 1;
--}
--
--int l2cap_connect_cfm(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 status, struct hci_conn *hconn)
--{
-- struct l2cap_conn *conn;
-- struct l2cap_iff *iff;
-- int err = 0;
--
-- DBG("hdev %s bdaddr %s hconn %p", hdev->name, batostr(bdaddr), hconn);
--
-- if (!(iff = hdev->l2cap_data)) {
-- ERR("unknown interface");
-- return 0;
-- }
--
-- l2cap_iff_lock(iff);
--
-- conn = l2cap_get_conn_by_addr(iff, bdaddr);
--
-- if (conn) {
-- /* Outgoing connection */
-- DBG("Outgoing connection: %s -> %s, %p, %2.2x", batostr(iff->bdaddr), batostr(bdaddr), conn, status);
--
-- if (!status && hconn) {
-- conn->state = BT_CONNECTED;
-- conn->hconn = hconn;
--
-- hconn->l2cap_data = (void *)conn;
--
-- /* Establish channels */
-- l2cap_conn_ready(conn);
-- } else {
-- l2cap_conn_del(conn, bterr(status));
-- }
-- } else {
-- /* Incomming connection */
-- DBG("Incomming connection: %s -> %s, %2.2x", batostr(iff->bdaddr), batostr(bdaddr), status);
--
-- if (status || !hconn)
-- goto done;
--
-- if (!(conn = l2cap_conn_add(iff, bdaddr))) {
-- err = -ENOMEM;
-- goto done;
-- }
--
-- conn->hconn = hconn;
-- hconn->l2cap_data = (void *)conn;
--
-- conn->state = BT_CONNECTED;
-- }
--
--done:
-- l2cap_iff_unlock(iff);
--
-- return err;
--}
--
--int l2cap_disconn_ind(struct hci_conn *hconn, __u8 reason)
--{
-- struct l2cap_conn *conn = hconn->l2cap_data;
--
-- DBG("hconn %p reason %d", hconn, reason);
--
-- if (!conn) {
-- ERR("unknown connection");
-- return 0;
-- }
-- conn->hconn = NULL;
--
-- l2cap_iff_lock(conn->iff);
-- l2cap_conn_del(conn, bterr(reason));
-- l2cap_iff_unlock(conn->iff);
--
-- return 0;
--}
--
--int l2cap_recv_acldata(struct hci_conn *hconn, struct sk_buff *skb, __u16 flags)
--{
-- struct l2cap_conn *conn = hconn->l2cap_data;
--
-- if (!conn) {
-- ERR("unknown connection %p", hconn);
-- goto drop;
-- }
--
-- DBG("conn %p len %d flags 0x%x", conn, skb->len, flags);
--
-- if (flags & ACL_START) {
-- int flen, tlen, size;
-- l2cap_hdr *lh;
--
-- if (conn->rx_len) {
-- ERR("Unexpected start frame (len %d)", skb->len);
-- kfree_skb(conn->rx_skb); conn->rx_skb = NULL;
-- conn->rx_len = 0;
-- }
--
-- if (skb->len < L2CAP_HDR_SIZE) {
-- ERR("Frame is too small (len %d)", skb->len);
-- goto drop;
-- }
--
-- lh = (l2cap_hdr *)skb->data;
-- tlen = __le16_to_cpu(lh->len);
-- flen = skb->len - L2CAP_HDR_SIZE;
--
-- DBG("Start: total len %d, frag len %d", tlen, flen);
--
-- if (flen == tlen) {
-- /* Complete frame received */
-- l2cap_recv_frame(conn, skb);
-- return 0;
-- }
--
-- /* Allocate skb for the complete frame (with header) */
-- size = L2CAP_HDR_SIZE + tlen;
-- if (!(conn->rx_skb = bluez_skb_alloc(size, GFP_ATOMIC)))
-- goto drop;
--
-- memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
--
-- conn->rx_len = tlen - flen;
-- } else {
-- DBG("Cont: frag len %d (expecting %d)", skb->len, conn->rx_len);
--
-- if (!conn->rx_len) {
-- ERR("Unexpected continuation frame (len %d)", skb->len);
-- goto drop;
-- }
--
-- if (skb->len > conn->rx_len) {
-- ERR("Fragment is too large (len %d)", skb->len);
-- kfree_skb(conn->rx_skb); conn->rx_skb = NULL;
-- goto drop;
-- }
--
-- memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
-- conn->rx_len -= skb->len;
--
-- if (!conn->rx_len) {
-- /* Complete frame received */
-- l2cap_recv_frame(conn, conn->rx_skb);
-- conn->rx_skb = NULL;
-- }
-- }
--
--drop:
-- kfree_skb(skb);
-- return 0;
--}
--
--struct proto_ops l2cap_sock_ops = {
-- family: PF_BLUETOOTH,
-- release: l2cap_sock_release,
-- bind: l2cap_sock_bind,
-- connect: l2cap_sock_connect,
-- listen: l2cap_sock_listen,
-- accept: l2cap_sock_accept,
-- getname: l2cap_sock_getname,
-- sendmsg: l2cap_sock_sendmsg,
-- recvmsg: l2cap_sock_recvmsg,
-- poll: l2cap_sock_poll,
-- socketpair: sock_no_socketpair,
-- ioctl: sock_no_ioctl,
-- shutdown: sock_no_shutdown,
-- setsockopt: l2cap_sock_setsockopt,
-- getsockopt: l2cap_sock_getsockopt,
-- mmap: sock_no_mmap
--};
--
--struct net_proto_family l2cap_sock_family_ops = {
-- family: PF_BLUETOOTH,
-- create: l2cap_sock_create
--};
--
--struct hci_proto l2cap_hci_proto = {
-- name: "L2CAP",
-- id: HCI_PROTO_L2CAP,
-- connect_ind: l2cap_connect_ind,
-- connect_cfm: l2cap_connect_cfm,
-- disconn_ind: l2cap_disconn_ind,
-- recv_acldata: l2cap_recv_acldata,
--};
--
--struct notifier_block l2cap_nblock = {
-- notifier_call: l2cap_dev_event
--};
--
--int __init l2cap_init(void)
--{
-- INF("BlueZ L2CAP ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
--
-- if (bluez_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops)) {
-- ERR("Can't register L2CAP socket");
-- return -EPROTO;
-- }
--
-- if (hci_register_proto(&l2cap_hci_proto) < 0) {
-- ERR("Can't register L2CAP protocol");
-- return -EPROTO;
-- }
--
-- hci_register_notifier(&l2cap_nblock);
--
-- l2cap_register_proc();
--
-- return 0;
--}
--
--void l2cap_cleanup(void)
--{
-- l2cap_unregister_proc();
--
-- /* Unregister socket, protocol and notifier */
-- if (bluez_sock_unregister(BTPROTO_L2CAP))
-- ERR("Can't unregister L2CAP socket");
--
-- if (hci_unregister_proto(&l2cap_hci_proto) < 0)
-- ERR("Can't unregister L2CAP protocol");
--
-- hci_unregister_notifier(&l2cap_nblock);
--
-- /* We _must_ not have any sockets and/or connections
-- * at this stage.
-- */
--
-- /* Free interface list and unlock HCI devices */
-- {
-- struct list_head *list = &l2cap_iff_list;
--
-- while (!list_empty(list)) {
-- struct l2cap_iff *iff;
--
-- iff = list_entry(list->next, struct l2cap_iff, list);
-- l2cap_iff_del(iff->hdev);
-- }
-- }
--}
--
--module_init(l2cap_init);
--module_exit(l2cap_cleanup);
--
--MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
--MODULE_DESCRIPTION("BlueZ L2CAP ver " VERSION);
--MODULE_LICENSE("GPL");
--
-diff -urN linux-2.4.18/net/bluetooth/l2cap_proc.c linux-2.4.18-mh15/net/bluetooth/l2cap_proc.c
---- linux-2.4.18/net/bluetooth/l2cap_proc.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/l2cap_proc.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,165 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * BlueZ L2CAP proc fs support.
-- *
-- * $Id: l2cap_proc.c,v 1.2 2001/06/02 01:40:09 maxk Exp $
-- */
--
--#include <linux/config.h>
--#include <linux/module.h>
--
--#include <linux/types.h>
--#include <linux/errno.h>
--#include <linux/kernel.h>
--#include <linux/major.h>
--#include <linux/sched.h>
--#include <linux/slab.h>
--#include <linux/poll.h>
--#include <linux/fcntl.h>
--#include <linux/init.h>
--#include <linux/skbuff.h>
--#include <linux/interrupt.h>
--#include <linux/socket.h>
--#include <linux/skbuff.h>
--#include <linux/proc_fs.h>
--#include <linux/list.h>
--#include <net/sock.h>
--
--#include <asm/system.h>
--#include <asm/uaccess.h>
--
--#include <net/bluetooth/bluez.h>
--#include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/l2cap_core.h>
--
--#ifndef L2CAP_DEBUG
--#undef DBG
--#define DBG( A... )
--#endif
--
--/* ----- PROC fs support ----- */
--static int l2cap_conn_dump(char *buf, struct l2cap_iff *iff)
--{
-- struct list_head *p;
-- char *ptr = buf;
--
-- list_for_each(p, &iff->conn_list) {
-- struct l2cap_conn *c;
--
-- c = list_entry(p, struct l2cap_conn, list);
-- ptr += sprintf(ptr, " %p %d %p %p %s %s\n",
-- c, c->state, c->iff, c->hconn, batostr(&c->src), batostr(&c->dst));
-- }
--
-- return ptr - buf;
--}
--
--static int l2cap_iff_dump(char *buf)
--{
-- struct list_head *p;
-- char *ptr = buf;
--
-- ptr += sprintf(ptr, "Interfaces:\n");
--
-- write_lock(&l2cap_rt_lock);
--
-- list_for_each(p, &l2cap_iff_list) {
-- struct l2cap_iff *iff;
--
-- iff = list_entry(p, struct l2cap_iff, list);
--
-- ptr += sprintf(ptr, " %s %p %p\n", iff->hdev->name, iff, iff->hdev);
--
-- l2cap_iff_lock(iff);
-- ptr += l2cap_conn_dump(ptr, iff);
-- l2cap_iff_unlock(iff);
-- }
--
-- write_unlock(&l2cap_rt_lock);
--
-- ptr += sprintf(ptr, "\n");
--
-- return ptr - buf;
--}
--
--static int l2cap_sock_dump(char *buf, struct bluez_sock_list *list)
--{
-- struct l2cap_pinfo *pi;
-- struct sock *sk;
-- char *ptr = buf;
--
-- ptr += sprintf(ptr, "Sockets:\n");
--
-- write_lock(&list->lock);
--
-- for (sk = list->head; sk; sk = sk->next) {
-- pi = l2cap_pi(sk);
-- ptr += sprintf(ptr, " %p %d %p %d %s %s 0x%4.4x 0x%4.4x %d %d\n", sk, sk->state, pi->conn, pi->psm,
-- batostr(&pi->src), batostr(&pi->dst), pi->scid, pi->dcid, pi->imtu, pi->omtu );
-- }
--
-- write_unlock(&list->lock);
--
-- ptr += sprintf(ptr, "\n");
--
-- return ptr - buf;
--}
--
--static int l2cap_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
--{
-- char *ptr = buf;
-- int len;
--
-- DBG("count %d, offset %ld", count, offset);
--
-- ptr += l2cap_iff_dump(ptr);
-- ptr += l2cap_sock_dump(ptr, &l2cap_sk_list);
-- len = ptr - buf;
--
-- if (len <= count + offset)
-- *eof = 1;
--
-- *start = buf + offset;
-- len -= offset;
--
-- if (len > count)
-- len = count;
-- if (len < 0)
-- len = 0;
--
-- return len;
--}
--
--void l2cap_register_proc(void)
--{
-- create_proc_read_entry("bluetooth/l2cap", 0, 0, l2cap_read_proc, NULL);
--}
--
--void l2cap_unregister_proc(void)
--{
-- remove_proc_entry("bluetooth/l2cap", NULL);
--}
-diff -urN linux-2.4.18/net/bluetooth/lib.c linux-2.4.18-mh15/net/bluetooth/lib.c
---- linux-2.4.18/net/bluetooth/lib.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/lib.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,7 +25,7 @@
- /*
- * BlueZ kernel library.
- *
-- * $Id: lib.c,v 1.3 2001/06/22 23:14:23 maxk Exp $
-+ * $Id: lib.c,v 1.2 2002/06/20 19:55:08 maxk Exp $
- */
-
- #include <linux/kernel.h>
-@@ -105,7 +105,7 @@
- return EACCES;
-
- case 0x06:
-- return EINVAL;
-+ return EBADE;
-
- case 0x07:
- return ENOMEM;
-diff -urN linux-2.4.18/net/bluetooth/Makefile linux-2.4.18-mh15/net/bluetooth/Makefile
---- linux-2.4.18/net/bluetooth/Makefile 2001-06-12 04:15:27.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -1,20 +1,40 @@
- #
--# Makefile for the Bluetooth subsystem
-+# Makefile for the Linux Bluetooth subsystem
- #
--O_TARGET := bluetooth.o
-
--list-multi := hci.o l2cap.o
--export-objs := syms.o
--hci-objs := af_bluetooth.o hci_core.o hci_sock.o lib.o syms.o
--l2cap-objs := l2cap_core.o l2cap_proc.o
-+O_TARGET := bluetooth.o
-
--obj-$(CONFIG_BLUEZ) += hci.o
-+list-multi := bluez.o
-+export-objs := syms.o l2cap.o
-+
-+bluez-objs := af_bluetooth.o hci_core.o hci_conn.o hci_event.o hci_sock.o lib.o syms.o
-+
-+obj-$(CONFIG_BLUEZ) += bluez.o
- obj-$(CONFIG_BLUEZ_L2CAP) += l2cap.o
-+obj-$(CONFIG_BLUEZ_SCO) += sco.o
-
--include $(TOPDIR)/Rules.make
-+subdir-$(CONFIG_BLUEZ_RFCOMM) += rfcomm
-+subdir-$(CONFIG_BLUEZ_BNEP) += bnep
-+subdir-$(CONFIG_BLUEZ_CMTP) += cmtp
-+subdir-$(CONFIG_BLUEZ_HIDP) += hidp
-+
-+ifeq ($(CONFIG_BLUEZ_RFCOMM),y)
-+obj-y += rfcomm/rfcomm.o
-+endif
-
--hci.o: $(hci-objs)
-- $(LD) -r -o $@ $(hci-objs)
-+ifeq ($(CONFIG_BLUEZ_BNEP),y)
-+obj-y += bnep/bnep.o
-+endif
-+
-+ifeq ($(CONFIG_BLUEZ_CMTP),y)
-+obj-y += cmtp/cmtp.o
-+endif
-+
-+ifeq ($(CONFIG_BLUEZ_HIDP),y)
-+obj-y += hidp/hidp.o
-+endif
-+
-+include $(TOPDIR)/Rules.make
-
--l2cap.o: $(l2cap-objs)
-- $(LD) -r -o $@ $(l2cap-objs)
-+bluez.o: $(bluez-objs)
-+ $(LD) -r -o $@ $(bluez-objs)
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/Config.in linux-2.4.18-mh15/net/bluetooth/rfcomm/Config.in
---- linux-2.4.18/net/bluetooth/rfcomm/Config.in 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/Config.in 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,10 @@
-+#
-+# Bluetooth RFCOMM layer configuration
-+#
-+
-+dep_tristate 'RFCOMM protocol support' CONFIG_BLUEZ_RFCOMM $CONFIG_BLUEZ_L2CAP
-+
-+if [ "$CONFIG_BLUEZ_RFCOMM" != "n" ]; then
-+ bool ' RFCOMM TTY support' CONFIG_BLUEZ_RFCOMM_TTY
-+fi
-+
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/core.c linux-2.4.18-mh15/net/bluetooth/rfcomm/core.c
---- linux-2.4.18/net/bluetooth/rfcomm/core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/core.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,1940 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ RPN support - Dirk Husemann <hud@zurich.ibm.com>
-+*/
-+
-+/*
-+ * RFCOMM core.
-+ *
-+ * $Id: core.c,v 1.46 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#define __KERNEL_SYSCALLS__
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/signal.h>
-+#include <linux/init.h>
-+#include <linux/wait.h>
-+#include <linux/net.h>
-+#include <linux/proc_fs.h>
-+#include <net/sock.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#define VERSION "1.1"
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+struct task_struct *rfcomm_thread;
-+DECLARE_MUTEX(rfcomm_sem);
-+unsigned long rfcomm_event;
-+
-+static LIST_HEAD(session_list);
-+static atomic_t terminate, running;
-+
-+static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len);
-+static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci);
-+static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci);
-+static int rfcomm_queue_disc(struct rfcomm_dlc *d);
-+static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type);
-+static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d);
-+static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig);
-+static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len);
-+static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits);
-+static void rfcomm_make_uih(struct sk_buff *skb, u8 addr);
-+
-+static void rfcomm_process_connect(struct rfcomm_session *s);
-+
-+/* ---- RFCOMM frame parsing macros ---- */
-+#define __get_dlci(b) ((b & 0xfc) >> 2)
-+#define __get_channel(b) ((b & 0xf8) >> 3)
-+#define __get_dir(b) ((b & 0x04) >> 2)
-+#define __get_type(b) ((b & 0xef))
-+
-+#define __test_ea(b) ((b & 0x01))
-+#define __test_cr(b) ((b & 0x02))
-+#define __test_pf(b) ((b & 0x10))
-+
-+#define __addr(cr, dlci) (((dlci & 0x3f) << 2) | (cr << 1) | 0x01)
-+#define __ctrl(type, pf) (((type & 0xef) | (pf << 4)))
-+#define __dlci(dir, chn) (((chn & 0x1f) << 1) | dir)
-+#define __srv_channel(dlci) (dlci >> 1)
-+#define __dir(dlci) (dlci & 0x01)
-+
-+#define __len8(len) (((len) << 1) | 1)
-+#define __len16(len) ((len) << 1)
-+
-+/* MCC macros */
-+#define __mcc_type(cr, type) (((type << 2) | (cr << 1) | 0x01))
-+#define __get_mcc_type(b) ((b & 0xfc) >> 2)
-+#define __get_mcc_len(b) ((b & 0xfe) >> 1)
-+
-+/* RPN macros */
-+#define __rpn_line_settings(data, stop, parity) ((data & 0x3) | ((stop & 0x1) << 2) | ((parity & 0x3) << 3))
-+#define __get_rpn_data_bits(line) ((line) & 0x3)
-+#define __get_rpn_stop_bits(line) (((line) >> 2) & 0x1)
-+#define __get_rpn_parity(line) (((line) >> 3) & 0x3)
-+
-+/* ---- RFCOMM FCS computation ---- */
-+
-+/* CRC on 2 bytes */
-+#define __crc(data) (rfcomm_crc_table[rfcomm_crc_table[0xff ^ data[0]] ^ data[1]])
-+
-+/* FCS on 2 bytes */
-+static inline u8 __fcs(u8 *data)
-+{
-+ return (0xff - __crc(data));
-+}
-+
-+/* FCS on 3 bytes */
-+static inline u8 __fcs2(u8 *data)
-+{
-+ return (0xff - rfcomm_crc_table[__crc(data) ^ data[2]]);
-+}
-+
-+/* Check FCS */
-+static inline int __check_fcs(u8 *data, int type, u8 fcs)
-+{
-+ u8 f = __crc(data);
-+
-+ if (type != RFCOMM_UIH)
-+ f = rfcomm_crc_table[f ^ data[2]];
-+
-+ return rfcomm_crc_table[f ^ fcs] != 0xcf;
-+}
-+
-+/* ---- L2CAP callbacks ---- */
-+static void rfcomm_l2state_change(struct sock *sk)
-+{
-+ BT_DBG("%p state %d", sk, sk->state);
-+ rfcomm_schedule(RFCOMM_SCHED_STATE);
-+}
-+
-+static void rfcomm_l2data_ready(struct sock *sk, int bytes)
-+{
-+ BT_DBG("%p bytes %d", sk, bytes);
-+ rfcomm_schedule(RFCOMM_SCHED_RX);
-+}
-+
-+static int rfcomm_l2sock_create(struct socket **sock)
-+{
-+ int err;
-+
-+ BT_DBG("");
-+
-+ err = sock_create(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP, sock);
-+ if (!err) {
-+ struct sock *sk = (*sock)->sk;
-+ sk->data_ready = rfcomm_l2data_ready;
-+ sk->state_change = rfcomm_l2state_change;
-+ }
-+ return err;
-+}
-+
-+/* ---- RFCOMM DLCs ---- */
-+static void rfcomm_dlc_timeout(unsigned long arg)
-+{
-+ struct rfcomm_dlc *d = (void *) arg;
-+
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ set_bit(RFCOMM_TIMED_OUT, &d->flags);
-+ rfcomm_dlc_put(d);
-+ rfcomm_schedule(RFCOMM_SCHED_TIMEO);
-+}
-+
-+static void rfcomm_dlc_set_timer(struct rfcomm_dlc *d, long timeout)
-+{
-+ BT_DBG("dlc %p state %ld timeout %ld", d, d->state, timeout);
-+
-+ if (!mod_timer(&d->timer, jiffies + timeout))
-+ rfcomm_dlc_hold(d);
-+}
-+
-+static void rfcomm_dlc_clear_timer(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (timer_pending(&d->timer) && del_timer(&d->timer))
-+ rfcomm_dlc_put(d);
-+}
-+
-+static void rfcomm_dlc_clear_state(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("%p", d);
-+
-+ d->state = BT_OPEN;
-+ d->flags = 0;
-+ d->mscex = 0;
-+ d->mtu = RFCOMM_DEFAULT_MTU;
-+ d->v24_sig = RFCOMM_V24_RTC | RFCOMM_V24_RTR | RFCOMM_V24_DV;
-+
-+ d->cfc = RFCOMM_CFC_DISABLED;
-+ d->rx_credits = RFCOMM_DEFAULT_CREDITS;
-+}
-+
-+struct rfcomm_dlc *rfcomm_dlc_alloc(int prio)
-+{
-+ struct rfcomm_dlc *d = kmalloc(sizeof(*d), prio);
-+ if (!d)
-+ return NULL;
-+ memset(d, 0, sizeof(*d));
-+
-+ init_timer(&d->timer);
-+ d->timer.function = rfcomm_dlc_timeout;
-+ d->timer.data = (unsigned long) d;
-+
-+ skb_queue_head_init(&d->tx_queue);
-+ spin_lock_init(&d->lock);
-+ atomic_set(&d->refcnt, 1);
-+
-+ rfcomm_dlc_clear_state(d);
-+
-+ BT_DBG("%p", d);
-+ return d;
-+}
-+
-+void rfcomm_dlc_free(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("%p", d);
-+
-+ skb_queue_purge(&d->tx_queue);
-+ kfree(d);
-+}
-+
-+static void rfcomm_dlc_link(struct rfcomm_session *s, struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p session %p", d, s);
-+
-+ rfcomm_session_hold(s);
-+
-+ rfcomm_dlc_hold(d);
-+ list_add(&d->list, &s->dlcs);
-+ d->session = s;
-+}
-+
-+static void rfcomm_dlc_unlink(struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_session *s = d->session;
-+
-+ BT_DBG("dlc %p refcnt %d session %p", d, atomic_read(&d->refcnt), s);
-+
-+ list_del(&d->list);
-+ d->session = NULL;
-+ rfcomm_dlc_put(d);
-+
-+ rfcomm_session_put(s);
-+}
-+
-+static struct rfcomm_dlc *rfcomm_dlc_get(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p;
-+
-+ list_for_each(p, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (d->dlci == dlci)
-+ return d;
-+ }
-+ return NULL;
-+}
-+
-+static int __rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel)
-+{
-+ struct rfcomm_session *s;
-+ int err = 0;
-+ u8 dlci;
-+
-+ BT_DBG("dlc %p state %ld %s %s channel %d",
-+ d, d->state, batostr(src), batostr(dst), channel);
-+
-+ if (channel < 1 || channel > 30)
-+ return -EINVAL;
-+
-+ if (d->state != BT_OPEN && d->state != BT_CLOSED)
-+ return 0;
-+
-+ s = rfcomm_session_get(src, dst);
-+ if (!s) {
-+ s = rfcomm_session_create(src, dst, &err);
-+ if (!s)
-+ return err;
-+ }
-+
-+ dlci = __dlci(!s->initiator, channel);
-+
-+ /* Check if DLCI already exists */
-+ if (rfcomm_dlc_get(s, dlci))
-+ return -EBUSY;
-+
-+ rfcomm_dlc_clear_state(d);
-+
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ d->priority = 7;
-+
-+ d->state = BT_CONFIG;
-+ rfcomm_dlc_link(s, d);
-+
-+ d->mtu = s->mtu;
-+ d->cfc = (s->cfc == RFCOMM_CFC_UNKNOWN) ? 0 : s->cfc;
-+
-+ if (s->state == BT_CONNECTED)
-+ rfcomm_send_pn(s, 1, d);
-+ rfcomm_dlc_set_timer(d, RFCOMM_CONN_TIMEOUT);
-+ return 0;
-+}
-+
-+int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel)
-+{
-+ mm_segment_t fs;
-+ int r;
-+
-+ rfcomm_lock();
-+
-+ fs = get_fs(); set_fs(KERNEL_DS);
-+ r = __rfcomm_dlc_open(d, src, dst, channel);
-+ set_fs(fs);
-+
-+ rfcomm_unlock();
-+ return r;
-+}
-+
-+static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err)
-+{
-+ struct rfcomm_session *s = d->session;
-+ if (!s)
-+ return 0;
-+
-+ BT_DBG("dlc %p state %ld dlci %d err %d session %p",
-+ d, d->state, d->dlci, err, s);
-+
-+ switch (d->state) {
-+ case BT_CONNECTED:
-+ case BT_CONFIG:
-+ case BT_CONNECT:
-+ d->state = BT_DISCONN;
-+ if (skb_queue_empty(&d->tx_queue)) {
-+ rfcomm_send_disc(s, d->dlci);
-+ rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT);
-+ } else {
-+ rfcomm_queue_disc(d);
-+ rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT * 2);
-+ }
-+ break;
-+
-+ default:
-+ rfcomm_dlc_clear_timer(d);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CLOSED;
-+ d->state_change(d, err);
-+ rfcomm_dlc_unlock(d);
-+
-+ skb_queue_purge(&d->tx_queue);
-+ rfcomm_dlc_unlink(d);
-+ }
-+
-+ return 0;
-+}
-+
-+int rfcomm_dlc_close(struct rfcomm_dlc *d, int err)
-+{
-+ mm_segment_t fs;
-+ int r;
-+
-+ rfcomm_lock();
-+
-+ fs = get_fs(); set_fs(KERNEL_DS);
-+ r = __rfcomm_dlc_close(d, err);
-+ set_fs(fs);
-+
-+ rfcomm_unlock();
-+ return r;
-+}
-+
-+int rfcomm_dlc_send(struct rfcomm_dlc *d, struct sk_buff *skb)
-+{
-+ int len = skb->len;
-+
-+ if (d->state != BT_CONNECTED)
-+ return -ENOTCONN;
-+
-+ BT_DBG("dlc %p mtu %d len %d", d, d->mtu, len);
-+
-+ if (len > d->mtu)
-+ return -EINVAL;
-+
-+ rfcomm_make_uih(skb, d->addr);
-+ skb_queue_tail(&d->tx_queue, skb);
-+
-+ if (!test_bit(RFCOMM_TX_THROTTLED, &d->flags))
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+ return len;
-+}
-+
-+void __rfcomm_dlc_throttle(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (!d->cfc) {
-+ d->v24_sig |= RFCOMM_V24_FC;
-+ set_bit(RFCOMM_MSC_PENDING, &d->flags);
-+ }
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+}
-+
-+void __rfcomm_dlc_unthrottle(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (!d->cfc) {
-+ d->v24_sig &= ~RFCOMM_V24_FC;
-+ set_bit(RFCOMM_MSC_PENDING, &d->flags);
-+ }
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+}
-+
-+/*
-+ Set/get modem status functions use _local_ status i.e. what we report
-+ to the other side.
-+ Remote status is provided by dlc->modem_status() callback.
-+ */
-+int rfcomm_dlc_set_modem_status(struct rfcomm_dlc *d, u8 v24_sig)
-+{
-+ BT_DBG("dlc %p state %ld v24_sig 0x%x",
-+ d, d->state, v24_sig);
-+
-+ if (test_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ v24_sig |= RFCOMM_V24_FC;
-+ else
-+ v24_sig &= ~RFCOMM_V24_FC;
-+
-+ d->v24_sig = v24_sig;
-+
-+ if (!test_and_set_bit(RFCOMM_MSC_PENDING, &d->flags))
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+
-+ return 0;
-+}
-+
-+int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig)
-+{
-+ BT_DBG("dlc %p state %ld v24_sig 0x%x",
-+ d, d->state, d->v24_sig);
-+
-+ *v24_sig = d->v24_sig;
-+ return 0;
-+}
-+
-+/* ---- RFCOMM sessions ---- */
-+struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state)
-+{
-+ struct rfcomm_session *s = kmalloc(sizeof(*s), GFP_KERNEL);
-+ if (!s)
-+ return NULL;
-+ memset(s, 0, sizeof(*s));
-+
-+ BT_DBG("session %p sock %p", s, sock);
-+
-+ INIT_LIST_HEAD(&s->dlcs);
-+ s->state = state;
-+ s->sock = sock;
-+
-+ s->mtu = RFCOMM_DEFAULT_MTU;
-+ s->cfc = RFCOMM_CFC_UNKNOWN;
-+
-+ list_add(&s->list, &session_list);
-+
-+ /* Do not increment module usage count for listeting sessions.
-+ * Otherwise we won't be able to unload the module. */
-+ if (state != BT_LISTEN)
-+ MOD_INC_USE_COUNT;
-+ return s;
-+}
-+
-+void rfcomm_session_del(struct rfcomm_session *s)
-+{
-+ int state = s->state;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_del(&s->list);
-+
-+ if (state == BT_CONNECTED)
-+ rfcomm_send_disc(s, 0);
-+
-+ sock_release(s->sock);
-+ kfree(s);
-+
-+ if (state != BT_LISTEN)
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst)
-+{
-+ struct rfcomm_session *s;
-+ struct list_head *p, *n;
-+ struct bluez_pinfo *pi;
-+ list_for_each_safe(p, n, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ pi = bluez_pi(s->sock->sk);
-+
-+ if ((!bacmp(src, BDADDR_ANY) || !bacmp(&pi->src, src)) &&
-+ !bacmp(&pi->dst, dst))
-+ return s;
-+ }
-+ return NULL;
-+}
-+
-+void rfcomm_session_close(struct rfcomm_session *s, int err)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld err %d", s, s->state, err);
-+
-+ rfcomm_session_hold(s);
-+
-+ s->state = BT_CLOSED;
-+
-+ /* Close all dlcs */
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ }
-+
-+ rfcomm_session_put(s);
-+}
-+
-+struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err)
-+{
-+ struct rfcomm_session *s = NULL;
-+ struct sockaddr_l2 addr;
-+ struct l2cap_options opts;
-+ struct socket *sock;
-+ int size;
-+
-+ BT_DBG("%s %s", batostr(src), batostr(dst));
-+
-+ *err = rfcomm_l2sock_create(&sock);
-+ if (*err < 0)
-+ return NULL;
-+
-+ bacpy(&addr.l2_bdaddr, src);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = 0;
-+ *err = sock->ops->bind(sock, (struct sockaddr *) &addr, sizeof(addr));
-+ if (*err < 0)
-+ goto failed;
-+
-+ /* Set L2CAP options */
-+ size = sizeof(opts);
-+ sock->ops->getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, &size);
-+
-+ opts.imtu = RFCOMM_MAX_L2CAP_MTU;
-+ sock->ops->setsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, size);
-+
-+ s = rfcomm_session_add(sock, BT_BOUND);
-+ if (!s) {
-+ *err = -ENOMEM;
-+ goto failed;
-+ }
-+
-+ s->initiator = 1;
-+
-+ bacpy(&addr.l2_bdaddr, dst);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = htobs(RFCOMM_PSM);
-+ *err = sock->ops->connect(sock, (struct sockaddr *) &addr, sizeof(addr), O_NONBLOCK);
-+ if (*err == 0 || *err == -EAGAIN)
-+ return s;
-+
-+ rfcomm_session_del(s);
-+ return NULL;
-+
-+failed:
-+ sock_release(sock);
-+ return NULL;
-+}
-+
-+void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst)
-+{
-+ struct sock *sk = s->sock->sk;
-+ if (src)
-+ bacpy(src, &bluez_pi(sk)->src);
-+ if (dst)
-+ bacpy(dst, &bluez_pi(sk)->dst);
-+}
-+
-+/* ---- RFCOMM frame sending ---- */
-+static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len)
-+{
-+ struct socket *sock = s->sock;
-+ struct iovec iv = { data, len };
-+ struct msghdr msg;
-+ int err;
-+
-+ BT_DBG("session %p len %d", s, len);
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 1;
-+ msg.msg_iov = &iv;
-+
-+ err = sock->ops->sendmsg(sock, &msg, len, 0);
-+ return err;
-+}
-+
-+static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_SABM, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_ua(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(!s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_UA, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_DISC, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_queue_disc(struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_cmd *cmd;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("dlc %p dlci %d", d, d->dlci);
-+
-+ skb = alloc_skb(sizeof(*cmd), GFP_KERNEL);
-+ if (!skb)
-+ return -ENOMEM;
-+
-+ cmd = (void *) __skb_put(skb, sizeof(*cmd));
-+ cmd->addr = d->addr;
-+ cmd->ctrl = __ctrl(RFCOMM_DISC, 1);
-+ cmd->len = __len8(0);
-+ cmd->fcs = __fcs2((u8 *) cmd);
-+
-+ skb_queue_tail(&d->tx_queue, skb);
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+ return 0;
-+}
-+
-+static int rfcomm_send_dm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(!s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_DM, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d type %d", s, cr, type);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + 1);
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_NSC);
-+ mcc->len = __len8(1);
-+
-+ /* Type that we didn't like */
-+ *ptr = __mcc_type(cr, type); ptr++;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_pn *pn;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d dlci %d mtu %d", s, cr, d->dlci, d->mtu);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*pn));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_PN);
-+ mcc->len = __len8(sizeof(*pn));
-+
-+ pn = (void *) ptr; ptr += sizeof(*pn);
-+ pn->dlci = d->dlci;
-+ pn->priority = d->priority;
-+ pn->ack_timer = 0;
-+ pn->max_retrans = 0;
-+
-+ if (s->cfc) {
-+ pn->flow_ctrl = cr ? 0xf0 : 0xe0;
-+ pn->credits = RFCOMM_DEFAULT_CREDITS;
-+ } else {
-+ pn->flow_ctrl = 0;
-+ pn->credits = 0;
-+ }
-+
-+ pn->mtu = htobs(d->mtu);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci,
-+ u8 bit_rate, u8 data_bits, u8 stop_bits,
-+ u8 parity, u8 flow_ctrl_settings,
-+ u8 xon_char, u8 xoff_char, u16 param_mask)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_rpn *rpn;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d dlci %d bit_r 0x%x data_b 0x%x stop_b 0x%x parity 0x%x"
-+ "flwc_s 0x%x xon_c 0x%x xoff_c 0x%x p_mask 0x%x",
-+ s, cr, dlci, bit_rate, data_bits, stop_bits, parity,
-+ flow_ctrl_settings, xon_char, xoff_char, param_mask);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*rpn));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_RPN);
-+ mcc->len = __len8(sizeof(*rpn));
-+
-+ rpn = (void *) ptr; ptr += sizeof(*rpn);
-+ rpn->dlci = __addr(1, dlci);
-+ rpn->bit_rate = bit_rate;
-+ rpn->line_settings = __rpn_line_settings(data_bits, stop_bits, parity);
-+ rpn->flow_ctrl = flow_ctrl_settings;
-+ rpn->xon_char = xon_char;
-+ rpn->xoff_char = xoff_char;
-+ rpn->param_mask = param_mask;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_rls(struct rfcomm_session *s, int cr, u8 dlci, u8 status)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_rls *rls;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d status 0x%x", s, cr, status);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*rls));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_RLS);
-+ mcc->len = __len8(sizeof(*rls));
-+
-+ rls = (void *) ptr; ptr += sizeof(*rls);
-+ rls->dlci = __addr(1, dlci);
-+ rls->status = status;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_msc *msc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d v24 0x%x", s, cr, v24_sig);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*msc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_MSC);
-+ mcc->len = __len8(sizeof(*msc));
-+
-+ msc = (void *) ptr; ptr += sizeof(*msc);
-+ msc->dlci = __addr(1, dlci);
-+ msc->v24_sig = v24_sig | 0x01;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_fcoff(struct rfcomm_session *s, int cr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_FCOFF);
-+ mcc->len = __len8(0);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_fcon(struct rfcomm_session *s, int cr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_FCON);
-+ mcc->len = __len8(0);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len)
-+{
-+ struct socket *sock = s->sock;
-+ struct iovec iv[3];
-+ struct msghdr msg;
-+ unsigned char hdr[5], crc[1];
-+
-+ if (len > 125)
-+ return -EINVAL;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr[0] = __addr(s->initiator, 0);
-+ hdr[1] = __ctrl(RFCOMM_UIH, 0);
-+ hdr[2] = 0x01 | ((len + 2) << 1);
-+ hdr[3] = 0x01 | ((cr & 0x01) << 1) | (RFCOMM_TEST << 2);
-+ hdr[4] = 0x01 | (len << 1);
-+
-+ crc[0] = __fcs(hdr);
-+
-+ iv[0].iov_base = hdr;
-+ iv[0].iov_len = 5;
-+ iv[1].iov_base = pattern;
-+ iv[1].iov_len = len;
-+ iv[2].iov_base = crc;
-+ iv[2].iov_len = 1;
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 3;
-+ msg.msg_iov = iv;
-+ return sock->ops->sendmsg(sock, &msg, 6 + len, 0);
-+}
-+
-+static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits)
-+{
-+ struct rfcomm_hdr *hdr;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p addr %d credits %d", s, addr, credits);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = addr;
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 1);
-+ hdr->len = __len8(0);
-+
-+ *ptr = credits; ptr++;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static void rfcomm_make_uih(struct sk_buff *skb, u8 addr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ int len = skb->len;
-+ u8 *crc;
-+
-+ if (len > 127) {
-+ hdr = (void *) skb_push(skb, 4);
-+ put_unaligned(htobs(__len16(len)), (u16 *) &hdr->len);
-+ } else {
-+ hdr = (void *) skb_push(skb, 3);
-+ hdr->len = __len8(len);
-+ }
-+ hdr->addr = addr;
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+
-+ crc = skb_put(skb, 1);
-+ *crc = __fcs((void *) hdr);
-+}
-+
-+/* ---- RFCOMM frame reception ---- */
-+static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci)
-+{
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ /* Data channel */
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (!d) {
-+ rfcomm_send_dm(s, dlci);
-+ return 0;
-+ }
-+
-+ switch (d->state) {
-+ case BT_CONNECT:
-+ rfcomm_dlc_clear_timer(d);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ break;
-+
-+ case BT_DISCONN:
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, 0);
-+ break;
-+ }
-+ } else {
-+ /* Control channel */
-+ switch (s->state) {
-+ case BT_CONNECT:
-+ s->state = BT_CONNECTED;
-+ rfcomm_process_connect(s);
-+ break;
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_dm(struct rfcomm_session *s, u8 dlci)
-+{
-+ int err = 0;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ /* Data DLC */
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (d->state == BT_CONNECT || d->state == BT_CONFIG)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ }
-+ } else {
-+ if (s->state == BT_CONNECT)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, err);
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_disc(struct rfcomm_session *s, u8 dlci)
-+{
-+ int err = 0;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ rfcomm_send_ua(s, dlci);
-+
-+ if (d->state == BT_CONNECT || d->state == BT_CONFIG)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ } else
-+ rfcomm_send_dm(s, dlci);
-+
-+ } else {
-+ rfcomm_send_ua(s, 0);
-+
-+ if (s->state == BT_CONNECT)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, err);
-+ }
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_sabm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_dlc *d;
-+ u8 channel;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (!dlci) {
-+ rfcomm_send_ua(s, 0);
-+
-+ if (s->state == BT_OPEN) {
-+ s->state = BT_CONNECTED;
-+ rfcomm_process_connect(s);
-+ }
-+ return 0;
-+ }
-+
-+ /* Check if DLC exists */
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (d->state == BT_OPEN) {
-+ /* DLC was previously opened by PN request */
-+ rfcomm_send_ua(s, dlci);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ }
-+ return 0;
-+ }
-+
-+ /* Notify socket layer about incomming connection */
-+ channel = __srv_channel(dlci);
-+ if (rfcomm_connect_ind(s, channel, &d)) {
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ rfcomm_dlc_link(s, d);
-+
-+ rfcomm_send_ua(s, dlci);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ } else {
-+ rfcomm_send_dm(s, dlci);
-+ }
-+
-+ return 0;
-+}
-+
-+static int rfcomm_apply_pn(struct rfcomm_dlc *d, int cr, struct rfcomm_pn *pn)
-+{
-+ struct rfcomm_session *s = d->session;
-+
-+ BT_DBG("dlc %p state %ld dlci %d mtu %d fc 0x%x credits %d",
-+ d, d->state, d->dlci, pn->mtu, pn->flow_ctrl, pn->credits);
-+
-+ if (pn->flow_ctrl == 0xf0 || pn->flow_ctrl == 0xe0) {
-+ d->cfc = s->cfc = RFCOMM_CFC_ENABLED;
-+ d->tx_credits = pn->credits;
-+ } else {
-+ d->cfc = s->cfc = RFCOMM_CFC_DISABLED;
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ }
-+
-+ d->priority = pn->priority;
-+
-+ d->mtu = s->mtu = btohs(pn->mtu);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_pn(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_pn *pn = (void *) skb->data;
-+ struct rfcomm_dlc *d;
-+ u8 dlci = pn->dlci;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (!dlci)
-+ return 0;
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (cr) {
-+ /* PN request */
-+ rfcomm_apply_pn(d, cr, pn);
-+ rfcomm_send_pn(s, 0, d);
-+ } else {
-+ /* PN response */
-+ switch (d->state) {
-+ case BT_CONFIG:
-+ rfcomm_apply_pn(d, cr, pn);
-+
-+ d->state = BT_CONNECT;
-+ rfcomm_send_sabm(s, d->dlci);
-+ break;
-+ }
-+ }
-+ } else {
-+ u8 channel = __srv_channel(dlci);
-+
-+ if (!cr)
-+ return 0;
-+
-+ /* PN request for non existing DLC.
-+ * Assume incomming connection. */
-+ if (rfcomm_connect_ind(s, channel, &d)) {
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ rfcomm_dlc_link(s, d);
-+
-+ rfcomm_apply_pn(d, cr, pn);
-+
-+ d->state = BT_OPEN;
-+ rfcomm_send_pn(s, 0, d);
-+ } else {
-+ rfcomm_send_dm(s, dlci);
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_rpn(struct rfcomm_session *s, int cr, int len, struct sk_buff *skb)
-+{
-+ struct rfcomm_rpn *rpn = (void *) skb->data;
-+ u8 dlci = __get_dlci(rpn->dlci);
-+
-+ u8 bit_rate = 0;
-+ u8 data_bits = 0;
-+ u8 stop_bits = 0;
-+ u8 parity = 0;
-+ u8 flow_ctrl = 0;
-+ u8 xon_char = 0;
-+ u8 xoff_char = 0;
-+ u16 rpn_mask = RFCOMM_RPN_PM_ALL;
-+
-+ BT_DBG("dlci %d cr %d len 0x%x bitr 0x%x line 0x%x flow 0x%x xonc 0x%x xoffc 0x%x pm 0x%x",
-+ dlci, cr, len, rpn->bit_rate, rpn->line_settings, rpn->flow_ctrl,
-+ rpn->xon_char, rpn->xoff_char, rpn->param_mask);
-+
-+ if (!cr)
-+ return 0;
-+
-+ if (len == 1) {
-+ /* request: return default setting */
-+ bit_rate = RFCOMM_RPN_BR_115200;
-+ data_bits = RFCOMM_RPN_DATA_8;
-+ stop_bits = RFCOMM_RPN_STOP_1;
-+ parity = RFCOMM_RPN_PARITY_NONE;
-+ flow_ctrl = RFCOMM_RPN_FLOW_NONE;
-+ xon_char = RFCOMM_RPN_XON_CHAR;
-+ xoff_char = RFCOMM_RPN_XOFF_CHAR;
-+
-+ goto rpn_out;
-+ }
-+ /* check for sane values: ignore/accept bit_rate, 8 bits, 1 stop bit, no parity,
-+ no flow control lines, normal XON/XOFF chars */
-+ if (rpn->param_mask & RFCOMM_RPN_PM_BITRATE) {
-+ bit_rate = rpn->bit_rate;
-+ if (bit_rate != RFCOMM_RPN_BR_115200) {
-+ BT_DBG("RPN bit rate mismatch 0x%x", bit_rate);
-+ bit_rate = RFCOMM_RPN_BR_115200;
-+ rpn_mask ^= RFCOMM_RPN_PM_BITRATE;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_DATA) {
-+ data_bits = __get_rpn_data_bits(rpn->line_settings);
-+ if (data_bits != RFCOMM_RPN_DATA_8) {
-+ BT_DBG("RPN data bits mismatch 0x%x", data_bits);
-+ data_bits = RFCOMM_RPN_DATA_8;
-+ rpn_mask ^= RFCOMM_RPN_PM_DATA;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_STOP) {
-+ stop_bits = __get_rpn_stop_bits(rpn->line_settings);
-+ if (stop_bits != RFCOMM_RPN_STOP_1) {
-+ BT_DBG("RPN stop bits mismatch 0x%x", stop_bits);
-+ stop_bits = RFCOMM_RPN_STOP_1;
-+ rpn_mask ^= RFCOMM_RPN_PM_STOP;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_PARITY) {
-+ parity = __get_rpn_parity(rpn->line_settings);
-+ if (parity != RFCOMM_RPN_PARITY_NONE) {
-+ BT_DBG("RPN parity mismatch 0x%x", parity);
-+ parity = RFCOMM_RPN_PARITY_NONE;
-+ rpn_mask ^= RFCOMM_RPN_PM_PARITY;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_FLOW) {
-+ flow_ctrl = rpn->flow_ctrl;
-+ if (flow_ctrl != RFCOMM_RPN_FLOW_NONE) {
-+ BT_DBG("RPN flow ctrl mismatch 0x%x", flow_ctrl);
-+ flow_ctrl = RFCOMM_RPN_FLOW_NONE;
-+ rpn_mask ^= RFCOMM_RPN_PM_FLOW;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_XON) {
-+ xon_char = rpn->xon_char;
-+ if (xon_char != RFCOMM_RPN_XON_CHAR) {
-+ BT_DBG("RPN XON char mismatch 0x%x", xon_char);
-+ xon_char = RFCOMM_RPN_XON_CHAR;
-+ rpn_mask ^= RFCOMM_RPN_PM_XON;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_XOFF) {
-+ xoff_char = rpn->xoff_char;
-+ if (xoff_char != RFCOMM_RPN_XOFF_CHAR) {
-+ BT_DBG("RPN XOFF char mismatch 0x%x", xoff_char);
-+ xoff_char = RFCOMM_RPN_XOFF_CHAR;
-+ rpn_mask ^= RFCOMM_RPN_PM_XOFF;
-+ }
-+ }
-+
-+rpn_out:
-+ rfcomm_send_rpn(s, 0, dlci,
-+ bit_rate, data_bits, stop_bits, parity, flow_ctrl,
-+ xon_char, xoff_char, rpn_mask);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_rls(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_rls *rls = (void *) skb->data;
-+ u8 dlci = __get_dlci(rls->dlci);
-+
-+ BT_DBG("dlci %d cr %d status 0x%x", dlci, cr, rls->status);
-+
-+ if (!cr)
-+ return 0;
-+
-+ /* FIXME: We should probably do something with this
-+ information here. But for now it's sufficient just
-+ to reply -- Bluetooth 1.1 says it's mandatory to
-+ recognise and respond to RLS */
-+
-+ rfcomm_send_rls(s, 0, dlci, rls->status);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_msc(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_msc *msc = (void *) skb->data;
-+ struct rfcomm_dlc *d;
-+ u8 dlci = __get_dlci(msc->dlci);
-+
-+ BT_DBG("dlci %d cr %d v24 0x%x", dlci, cr, msc->v24_sig);
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (!d)
-+ return 0;
-+
-+ if (cr) {
-+ if (msc->v24_sig & RFCOMM_V24_FC && !d->cfc)
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ else
-+ clear_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+
-+ rfcomm_dlc_lock(d);
-+ if (d->modem_status)
-+ d->modem_status(d, msc->v24_sig);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 0, dlci, msc->v24_sig);
-+
-+ d->mscex |= RFCOMM_MSCEX_RX;
-+ } else
-+ d->mscex |= RFCOMM_MSCEX_TX;
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_mcc(struct rfcomm_session *s, struct sk_buff *skb)
-+{
-+ struct rfcomm_mcc *mcc = (void *) skb->data;
-+ u8 type, cr, len;
-+
-+ cr = __test_cr(mcc->type);
-+ type = __get_mcc_type(mcc->type);
-+ len = __get_mcc_len(mcc->len);
-+
-+ BT_DBG("%p type 0x%x cr %d", s, type, cr);
-+
-+ skb_pull(skb, 2);
-+
-+ switch (type) {
-+ case RFCOMM_PN:
-+ rfcomm_recv_pn(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_RPN:
-+ rfcomm_recv_rpn(s, cr, len, skb);
-+ break;
-+
-+ case RFCOMM_RLS:
-+ rfcomm_recv_rls(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_MSC:
-+ rfcomm_recv_msc(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_FCOFF:
-+ if (cr) {
-+ set_bit(RFCOMM_TX_THROTTLED, &s->flags);
-+ rfcomm_send_fcoff(s, 0);
-+ }
-+ break;
-+
-+ case RFCOMM_FCON:
-+ if (cr) {
-+ clear_bit(RFCOMM_TX_THROTTLED, &s->flags);
-+ rfcomm_send_fcon(s, 0);
-+ }
-+ break;
-+
-+ case RFCOMM_TEST:
-+ if (cr)
-+ rfcomm_send_test(s, 0, skb->data, skb->len);
-+ break;
-+
-+ case RFCOMM_NSC:
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown control type 0x%02x", type);
-+ rfcomm_send_nsc(s, cr, type);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_data(struct rfcomm_session *s, u8 dlci, int pf, struct sk_buff *skb)
-+{
-+ struct rfcomm_dlc *d;
-+
-+ BT_DBG("session %p state %ld dlci %d pf %d", s, s->state, dlci, pf);
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (!d) {
-+ rfcomm_send_dm(s, dlci);
-+ goto drop;
-+ }
-+
-+ if (pf && d->cfc) {
-+ u8 credits = *(u8 *) skb->data; skb_pull(skb, 1);
-+
-+ d->tx_credits += credits;
-+ if (d->tx_credits)
-+ clear_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ }
-+
-+ if (skb->len && d->state == BT_CONNECTED) {
-+ rfcomm_dlc_lock(d);
-+ d->rx_credits--;
-+ d->data_ready(d, skb);
-+ rfcomm_dlc_unlock(d);
-+ return 0;
-+ }
-+
-+drop:
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static int rfcomm_recv_frame(struct rfcomm_session *s, struct sk_buff *skb)
-+{
-+ struct rfcomm_hdr *hdr = (void *) skb->data;
-+ u8 type, dlci, fcs;
-+
-+ dlci = __get_dlci(hdr->addr);
-+ type = __get_type(hdr->ctrl);
-+
-+ /* Trim FCS */
-+ skb->len--; skb->tail--;
-+ fcs = *(u8 *) skb->tail;
-+
-+ if (__check_fcs(skb->data, type, fcs)) {
-+ BT_ERR("bad checksum in packet");
-+ kfree_skb(skb);
-+ return -EILSEQ;
-+ }
-+
-+ if (__test_ea(hdr->len))
-+ skb_pull(skb, 3);
-+ else
-+ skb_pull(skb, 4);
-+
-+ switch (type) {
-+ case RFCOMM_SABM:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_sabm(s, dlci);
-+ break;
-+
-+ case RFCOMM_DISC:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_disc(s, dlci);
-+ break;
-+
-+ case RFCOMM_UA:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_ua(s, dlci);
-+ break;
-+
-+ case RFCOMM_DM:
-+ rfcomm_recv_dm(s, dlci);
-+ break;
-+
-+ case RFCOMM_UIH:
-+ if (dlci)
-+ return rfcomm_recv_data(s, dlci, __test_pf(hdr->ctrl), skb);
-+
-+ rfcomm_recv_mcc(s, skb);
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown packet type 0x%02x\n", type);
-+ break;
-+ }
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+/* ---- Connection and data processing ---- */
-+
-+static void rfcomm_process_connect(struct rfcomm_session *s)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (d->state == BT_CONFIG) {
-+ d->mtu = s->mtu;
-+ rfcomm_send_pn(s, 1, d);
-+ }
-+ }
-+}
-+
-+/* Send data queued for the DLC.
-+ * Return number of frames left in the queue.
-+ */
-+static inline int rfcomm_process_tx(struct rfcomm_dlc *d)
-+{
-+ struct sk_buff *skb;
-+ int err;
-+
-+ BT_DBG("dlc %p state %ld cfc %d rx_credits %d tx_credits %d",
-+ d, d->state, d->cfc, d->rx_credits, d->tx_credits);
-+
-+ /* Send pending MSC */
-+ if (test_and_clear_bit(RFCOMM_MSC_PENDING, &d->flags))
-+ rfcomm_send_msc(d->session, 1, d->dlci, d->v24_sig);
-+
-+ if (d->cfc) {
-+ /* CFC enabled.
-+ * Give them some credits */
-+ if (!test_bit(RFCOMM_RX_THROTTLED, &d->flags) &&
-+ d->rx_credits <= (d->cfc >> 2)) {
-+ rfcomm_send_credits(d->session, d->addr, d->cfc - d->rx_credits);
-+ d->rx_credits = d->cfc;
-+ }
-+ } else {
-+ /* CFC disabled.
-+ * Give ourselves some credits */
-+ d->tx_credits = 5;
-+ }
-+
-+ if (test_bit(RFCOMM_TX_THROTTLED, &d->flags))
-+ return skb_queue_len(&d->tx_queue);
-+
-+ while (d->tx_credits && (skb = skb_dequeue(&d->tx_queue))) {
-+ err = rfcomm_send_frame(d->session, skb->data, skb->len);
-+ if (err < 0) {
-+ skb_queue_head(&d->tx_queue, skb);
-+ break;
-+ }
-+ kfree_skb(skb);
-+ d->tx_credits--;
-+ }
-+
-+ if (d->cfc && !d->tx_credits) {
-+ /* We're out of TX credits.
-+ * Set TX_THROTTLED flag to avoid unnesary wakeups by dlc_send. */
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ }
-+
-+ return skb_queue_len(&d->tx_queue);
-+}
-+
-+static inline void rfcomm_process_dlcs(struct rfcomm_session *s)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (test_bit(RFCOMM_TIMED_OUT, &d->flags)) {
-+ __rfcomm_dlc_close(d, ETIMEDOUT);
-+ continue;
-+ }
-+
-+ if (test_bit(RFCOMM_TX_THROTTLED, &s->flags))
-+ continue;
-+
-+ if ((d->state == BT_CONNECTED || d->state == BT_DISCONN) &&
-+ d->mscex == RFCOMM_MSCEX_OK)
-+ rfcomm_process_tx(d);
-+ }
-+}
-+
-+static inline void rfcomm_process_rx(struct rfcomm_session *s)
-+{
-+ struct socket *sock = s->sock;
-+ struct sock *sk = sock->sk;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("session %p state %ld qlen %d", s, s->state, skb_queue_len(&sk->receive_queue));
-+
-+ /* Get data directly from socket receive queue without copying it. */
-+ while ((skb = skb_dequeue(&sk->receive_queue))) {
-+ skb_orphan(skb);
-+ rfcomm_recv_frame(s, skb);
-+ }
-+
-+ if (sk->state == BT_CLOSED) {
-+ if (!s->initiator)
-+ rfcomm_session_put(s);
-+
-+ rfcomm_session_close(s, sk->err);
-+ }
-+}
-+
-+static inline void rfcomm_accept_connection(struct rfcomm_session *s)
-+{
-+ struct socket *sock = s->sock, *nsock;
-+ int err;
-+
-+ /* Fast check for a new connection.
-+ * Avoids unnesesary socket allocations. */
-+ if (list_empty(&bluez_pi(sock->sk)->accept_q))
-+ return;
-+
-+ BT_DBG("session %p", s);
-+
-+ nsock = sock_alloc();
-+ if (!nsock)
-+ return;
-+
-+ nsock->type = sock->type;
-+ nsock->ops = sock->ops;
-+
-+ err = sock->ops->accept(sock, nsock, O_NONBLOCK);
-+ if (err < 0) {
-+ sock_release(nsock);
-+ return;
-+ }
-+
-+ /* Set our callbacks */
-+ nsock->sk->data_ready = rfcomm_l2data_ready;
-+ nsock->sk->state_change = rfcomm_l2state_change;
-+
-+ s = rfcomm_session_add(nsock, BT_OPEN);
-+ if (s) {
-+ rfcomm_session_hold(s);
-+ rfcomm_schedule(RFCOMM_SCHED_RX);
-+ } else
-+ sock_release(nsock);
-+}
-+
-+static inline void rfcomm_check_connection(struct rfcomm_session *s)
-+{
-+ struct sock *sk = s->sock->sk;
-+
-+ BT_DBG("%p state %ld", s, s->state);
-+
-+ switch(sk->state) {
-+ case BT_CONNECTED:
-+ s->state = BT_CONNECT;
-+
-+ /* We can adjust MTU on outgoing sessions.
-+ * L2CAP MTU minus UIH header and FCS. */
-+ s->mtu = min(l2cap_pi(sk)->omtu, l2cap_pi(sk)->imtu) - 5;
-+
-+ rfcomm_send_sabm(s, 0);
-+ break;
-+
-+ case BT_CLOSED:
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, sk->err);
-+ break;
-+ }
-+}
-+
-+static inline void rfcomm_process_sessions(void)
-+{
-+ struct list_head *p, *n;
-+
-+ rfcomm_lock();
-+
-+ list_for_each_safe(p, n, &session_list) {
-+ struct rfcomm_session *s;
-+ s = list_entry(p, struct rfcomm_session, list);
-+
-+ if (s->state == BT_LISTEN) {
-+ rfcomm_accept_connection(s);
-+ continue;
-+ }
-+
-+ rfcomm_session_hold(s);
-+
-+ switch (s->state) {
-+ case BT_BOUND:
-+ rfcomm_check_connection(s);
-+ break;
-+
-+ default:
-+ rfcomm_process_rx(s);
-+ break;
-+ }
-+
-+ rfcomm_process_dlcs(s);
-+
-+ rfcomm_session_put(s);
-+ }
-+
-+ rfcomm_unlock();
-+}
-+
-+static void rfcomm_worker(void)
-+{
-+ BT_DBG("");
-+
-+ daemonize(); reparent_to_init();
-+ set_fs(KERNEL_DS);
-+
-+ while (!atomic_read(&terminate)) {
-+ BT_DBG("worker loop event 0x%lx", rfcomm_event);
-+
-+ if (!test_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event)) {
-+ /* No pending events. Let's sleep.
-+ * Incomming connections and data will wake us up. */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule();
-+ }
-+
-+ /* Process stuff */
-+ clear_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
-+ rfcomm_process_sessions();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ return;
-+}
-+
-+static int rfcomm_add_listener(bdaddr_t *ba)
-+{
-+ struct sockaddr_l2 addr;
-+ struct l2cap_options opts;
-+ struct socket *sock;
-+ struct rfcomm_session *s;
-+ int size, err = 0;
-+
-+ /* Create socket */
-+ err = rfcomm_l2sock_create(&sock);
-+ if (err < 0) {
-+ BT_ERR("Create socket failed %d", err);
-+ return err;
-+ }
-+
-+ /* Bind socket */
-+ bacpy(&addr.l2_bdaddr, ba);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = htobs(RFCOMM_PSM);
-+ err = sock->ops->bind(sock, (struct sockaddr *) &addr, sizeof(addr));
-+ if (err < 0) {
-+ BT_ERR("Bind failed %d", err);
-+ goto failed;
-+ }
-+
-+ /* Set L2CAP options */
-+ size = sizeof(opts);
-+ sock->ops->getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, &size);
-+
-+ opts.imtu = RFCOMM_MAX_L2CAP_MTU;
-+ sock->ops->setsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, size);
-+
-+ /* Start listening on the socket */
-+ err = sock->ops->listen(sock, 10);
-+ if (err) {
-+ BT_ERR("Listen failed %d", err);
-+ goto failed;
-+ }
-+
-+ /* Add listening session */
-+ s = rfcomm_session_add(sock, BT_LISTEN);
-+ if (!s)
-+ goto failed;
-+
-+ rfcomm_session_hold(s);
-+ return 0;
-+failed:
-+ sock_release(sock);
-+ return err;
-+}
-+
-+static void rfcomm_kill_listener(void)
-+{
-+ struct rfcomm_session *s;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("");
-+
-+ list_for_each_safe(p, n, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ rfcomm_session_del(s);
-+ }
-+}
-+
-+static int rfcomm_run(void *unused)
-+{
-+ rfcomm_thread = current;
-+
-+ atomic_inc(&running);
-+
-+ daemonize(); reparent_to_init();
-+
-+ sigfillset(&current->blocked);
-+ set_fs(KERNEL_DS);
-+
-+ sprintf(current->comm, "krfcommd");
-+
-+ BT_DBG("");
-+
-+ rfcomm_add_listener(BDADDR_ANY);
-+
-+ rfcomm_worker();
-+
-+ rfcomm_kill_listener();
-+
-+ atomic_dec(&running);
-+ return 0;
-+}
-+
-+/* ---- Proc fs support ---- */
-+static int rfcomm_dlc_dump(char *buf)
-+{
-+ struct rfcomm_session *s;
-+ struct sock *sk;
-+ struct list_head *p, *pp;
-+ char *ptr = buf;
-+
-+ rfcomm_lock();
-+
-+ list_for_each(p, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ sk = s->sock->sk;
-+
-+ list_for_each(pp, &s->dlcs) {
-+ struct rfcomm_dlc *d;
-+ d = list_entry(pp, struct rfcomm_dlc, list);
-+
-+ ptr += sprintf(ptr, "dlc %s %s %ld %d %d %d %d\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ d->state, d->dlci, d->mtu, d->rx_credits, d->tx_credits);
-+ }
-+ }
-+
-+ rfcomm_unlock();
-+
-+ return ptr - buf;
-+}
-+
-+extern int rfcomm_sock_dump(char *buf);
-+
-+static int rfcomm_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
-+{
-+ char *ptr = buf;
-+ int len;
-+
-+ BT_DBG("count %d, offset %ld", count, offset);
-+
-+ ptr += rfcomm_dlc_dump(ptr);
-+ ptr += rfcomm_sock_dump(ptr);
-+ len = ptr - buf;
-+
-+ if (len <= count + offset)
-+ *eof = 1;
-+
-+ *start = buf + offset;
-+ len -= offset;
-+
-+ if (len > count)
-+ len = count;
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+
-+/* ---- Initialization ---- */
-+int __init rfcomm_init(void)
-+{
-+ l2cap_load();
-+
-+ kernel_thread(rfcomm_run, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+
-+ rfcomm_init_sockets();
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ rfcomm_init_ttys();
-+#endif
-+
-+ create_proc_read_entry("bluetooth/rfcomm", 0, 0, rfcomm_read_proc, NULL);
-+
-+ BT_INFO("BlueZ RFCOMM ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>");
-+ return 0;
-+}
-+
-+void rfcomm_cleanup(void)
-+{
-+ /* Terminate working thread.
-+ * ie. Set terminate flag and wake it up */
-+ atomic_inc(&terminate);
-+ rfcomm_schedule(RFCOMM_SCHED_STATE);
-+
-+ /* Wait until thread is running */
-+ while (atomic_read(&running))
-+ schedule();
-+
-+ remove_proc_entry("bluetooth/rfcomm", NULL);
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ rfcomm_cleanup_ttys();
-+#endif
-+
-+ rfcomm_cleanup_sockets();
-+ return;
-+}
-+
-+module_init(rfcomm_init);
-+module_exit(rfcomm_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ RFCOMM ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/crc.c linux-2.4.18-mh15/net/bluetooth/rfcomm/crc.c
---- linux-2.4.18/net/bluetooth/rfcomm/crc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/crc.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,71 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM FCS calculation.
-+ *
-+ * $Id: crc.c,v 1.2 2002/09/21 09:54:32 holtmann Exp $
-+ */
-+
-+/* reversed, 8-bit, poly=0x07 */
-+unsigned char rfcomm_crc_table[256] = {
-+ 0x00, 0x91, 0xe3, 0x72, 0x07, 0x96, 0xe4, 0x75,
-+ 0x0e, 0x9f, 0xed, 0x7c, 0x09, 0x98, 0xea, 0x7b,
-+ 0x1c, 0x8d, 0xff, 0x6e, 0x1b, 0x8a, 0xf8, 0x69,
-+ 0x12, 0x83, 0xf1, 0x60, 0x15, 0x84, 0xf6, 0x67,
-+
-+ 0x38, 0xa9, 0xdb, 0x4a, 0x3f, 0xae, 0xdc, 0x4d,
-+ 0x36, 0xa7, 0xd5, 0x44, 0x31, 0xa0, 0xd2, 0x43,
-+ 0x24, 0xb5, 0xc7, 0x56, 0x23, 0xb2, 0xc0, 0x51,
-+ 0x2a, 0xbb, 0xc9, 0x58, 0x2d, 0xbc, 0xce, 0x5f,
-+
-+ 0x70, 0xe1, 0x93, 0x02, 0x77, 0xe6, 0x94, 0x05,
-+ 0x7e, 0xef, 0x9d, 0x0c, 0x79, 0xe8, 0x9a, 0x0b,
-+ 0x6c, 0xfd, 0x8f, 0x1e, 0x6b, 0xfa, 0x88, 0x19,
-+ 0x62, 0xf3, 0x81, 0x10, 0x65, 0xf4, 0x86, 0x17,
-+
-+ 0x48, 0xd9, 0xab, 0x3a, 0x4f, 0xde, 0xac, 0x3d,
-+ 0x46, 0xd7, 0xa5, 0x34, 0x41, 0xd0, 0xa2, 0x33,
-+ 0x54, 0xc5, 0xb7, 0x26, 0x53, 0xc2, 0xb0, 0x21,
-+ 0x5a, 0xcb, 0xb9, 0x28, 0x5d, 0xcc, 0xbe, 0x2f,
-+
-+ 0xe0, 0x71, 0x03, 0x92, 0xe7, 0x76, 0x04, 0x95,
-+ 0xee, 0x7f, 0x0d, 0x9c, 0xe9, 0x78, 0x0a, 0x9b,
-+ 0xfc, 0x6d, 0x1f, 0x8e, 0xfb, 0x6a, 0x18, 0x89,
-+ 0xf2, 0x63, 0x11, 0x80, 0xf5, 0x64, 0x16, 0x87,
-+
-+ 0xd8, 0x49, 0x3b, 0xaa, 0xdf, 0x4e, 0x3c, 0xad,
-+ 0xd6, 0x47, 0x35, 0xa4, 0xd1, 0x40, 0x32, 0xa3,
-+ 0xc4, 0x55, 0x27, 0xb6, 0xc3, 0x52, 0x20, 0xb1,
-+ 0xca, 0x5b, 0x29, 0xb8, 0xcd, 0x5c, 0x2e, 0xbf,
-+
-+ 0x90, 0x01, 0x73, 0xe2, 0x97, 0x06, 0x74, 0xe5,
-+ 0x9e, 0x0f, 0x7d, 0xec, 0x99, 0x08, 0x7a, 0xeb,
-+ 0x8c, 0x1d, 0x6f, 0xfe, 0x8b, 0x1a, 0x68, 0xf9,
-+ 0x82, 0x13, 0x61, 0xf0, 0x85, 0x14, 0x66, 0xf7,
-+
-+ 0xa8, 0x39, 0x4b, 0xda, 0xaf, 0x3e, 0x4c, 0xdd,
-+ 0xa6, 0x37, 0x45, 0xd4, 0xa1, 0x30, 0x42, 0xd3,
-+ 0xb4, 0x25, 0x57, 0xc6, 0xb3, 0x22, 0x50, 0xc1,
-+ 0xba, 0x2b, 0x59, 0xc8, 0xbd, 0x2c, 0x5e, 0xcf
-+};
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/Makefile linux-2.4.18-mh15/net/bluetooth/rfcomm/Makefile
---- linux-2.4.18/net/bluetooth/rfcomm/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/Makefile 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,11 @@
-+#
-+# Makefile for the Linux Bluetooth RFCOMM layer
-+#
-+
-+O_TARGET := rfcomm.o
-+
-+obj-y := core.o sock.o crc.o
-+obj-$(CONFIG_BLUEZ_RFCOMM_TTY) += tty.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/sock.c linux-2.4.18-mh15/net/bluetooth/rfcomm/sock.c
---- linux-2.4.18/net/bluetooth/rfcomm/sock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/sock.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,847 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM sockets.
-+ *
-+ * $Id: sock.c,v 1.30 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/socket.h>
-+#include <linux/skbuff.h>
-+#include <linux/list.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+static struct proto_ops rfcomm_sock_ops;
-+
-+static struct bluez_sock_list rfcomm_sk_list = {
-+ lock: RW_LOCK_UNLOCKED
-+};
-+
-+static void rfcomm_sock_close(struct sock *sk);
-+static void rfcomm_sock_kill(struct sock *sk);
-+
-+/* ---- DLC callbacks ----
-+ *
-+ * called under rfcomm_dlc_lock()
-+ */
-+static void rfcomm_sk_data_ready(struct rfcomm_dlc *d, struct sk_buff *skb)
-+{
-+ struct sock *sk = d->owner;
-+ if (!sk)
-+ return;
-+
-+ atomic_add(skb->len, &sk->rmem_alloc);
-+ skb_queue_tail(&sk->receive_queue, skb);
-+ sk->data_ready(sk, skb->len);
-+
-+ if (atomic_read(&sk->rmem_alloc) >= sk->rcvbuf)
-+ rfcomm_dlc_throttle(d);
-+}
-+
-+static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err)
-+{
-+ struct sock *sk = d->owner, *parent;
-+ if (!sk)
-+ return;
-+
-+ BT_DBG("dlc %p state %ld err %d", d, d->state, err);
-+
-+ bh_lock_sock(sk);
-+
-+ if (err)
-+ sk->err = err;
-+ sk->state = d->state;
-+
-+ parent = bluez_pi(sk)->parent;
-+ if (!parent) {
-+ if (d->state == BT_CONNECTED)
-+ rfcomm_session_getaddr(d->session, &bluez_pi(sk)->src, NULL);
-+ sk->state_change(sk);
-+ } else
-+ parent->data_ready(parent, 0);
-+
-+ bh_unlock_sock(sk);
-+}
-+
-+/* ---- Socket functions ---- */
-+static struct sock *__rfcomm_get_sock_by_addr(u8 channel, bdaddr_t *src)
-+{
-+ struct sock *sk;
-+
-+ for (sk = rfcomm_sk_list.head; sk; sk = sk->next) {
-+ if (rfcomm_pi(sk)->channel == channel &&
-+ !bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+ }
-+
-+ return sk;
-+}
-+
-+/* Find socket with channel and source bdaddr.
-+ * Returns closest match.
-+ */
-+static struct sock *__rfcomm_get_sock_by_channel(int state, u8 channel, bdaddr_t *src)
-+{
-+ struct sock *sk, *sk1 = NULL;
-+
-+ for (sk = rfcomm_sk_list.head; sk; sk = sk->next) {
-+ if (state && sk->state != state)
-+ continue;
-+
-+ if (rfcomm_pi(sk)->channel == channel) {
-+ /* Exact match. */
-+ if (!bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+
-+ /* Closest match */
-+ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ sk1 = sk;
-+ }
-+ }
-+ return sk ? sk : sk1;
-+}
-+
-+/* Find socket with given address (channel, src).
-+ * Returns locked socket */
-+static inline struct sock *rfcomm_get_sock_by_channel(int state, u8 channel, bdaddr_t *src)
-+{
-+ struct sock *s;
-+ read_lock(&rfcomm_sk_list.lock);
-+ s = __rfcomm_get_sock_by_channel(state, channel, src);
-+ if (s) bh_lock_sock(s);
-+ read_unlock(&rfcomm_sk_list.lock);
-+ return s;
-+}
-+
-+static void rfcomm_sock_destruct(struct sock *sk)
-+{
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+
-+ BT_DBG("sk %p dlc %p", sk, d);
-+
-+ skb_queue_purge(&sk->receive_queue);
-+ skb_queue_purge(&sk->write_queue);
-+
-+ rfcomm_dlc_lock(d);
-+ rfcomm_pi(sk)->dlc = NULL;
-+
-+ /* Detach DLC if it's owned by this socket */
-+ if (d->owner == sk)
-+ d->owner = NULL;
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_dlc_put(d);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void rfcomm_sock_cleanup_listen(struct sock *parent)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ /* Close not yet accepted dlcs */
-+ while ((sk = bluez_accept_dequeue(parent, NULL))) {
-+ rfcomm_sock_close(sk);
-+ rfcomm_sock_kill(sk);
-+ }
-+
-+ parent->state = BT_CLOSED;
-+ parent->zapped = 1;
-+}
-+
-+/* Kill socket (only if zapped and orphan)
-+ * Must be called on unlocked socket.
-+ */
-+static void rfcomm_sock_kill(struct sock *sk)
-+{
-+ if (!sk->zapped || sk->socket)
-+ return;
-+
-+ BT_DBG("sk %p state %d refcnt %d", sk, sk->state, atomic_read(&sk->refcnt));
-+
-+ /* Kill poor orphan */
-+ bluez_sock_unlink(&rfcomm_sk_list, sk);
-+ sk->dead = 1;
-+ sock_put(sk);
-+}
-+
-+static void __rfcomm_sock_close(struct sock *sk)
-+{
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+
-+ BT_DBG("sk %p state %d socket %p", sk, sk->state, sk->socket);
-+
-+ switch (sk->state) {
-+ case BT_LISTEN:
-+ rfcomm_sock_cleanup_listen(sk);
-+ break;
-+
-+ case BT_CONNECT:
-+ case BT_CONNECT2:
-+ case BT_CONFIG:
-+ case BT_CONNECTED:
-+ rfcomm_dlc_close(d, 0);
-+
-+ default:
-+ sk->zapped = 1;
-+ break;
-+ }
-+}
-+
-+/* Close socket.
-+ * Must be called on unlocked socket.
-+ */
-+static void rfcomm_sock_close(struct sock *sk)
-+{
-+ lock_sock(sk);
-+ __rfcomm_sock_close(sk);
-+ release_sock(sk);
-+}
-+
-+static void rfcomm_sock_init(struct sock *sk, struct sock *parent)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ if (parent)
-+ sk->type = parent->type;
-+}
-+
-+static struct sock *rfcomm_sock_alloc(struct socket *sock, int proto, int prio)
-+{
-+ struct rfcomm_dlc *d;
-+ struct sock *sk;
-+
-+ sk = sk_alloc(PF_BLUETOOTH, prio, 1);
-+ if (!sk)
-+ return NULL;
-+
-+ d = rfcomm_dlc_alloc(prio);
-+ if (!d) {
-+ sk_free(sk);
-+ return NULL;
-+ }
-+ d->data_ready = rfcomm_sk_data_ready;
-+ d->state_change = rfcomm_sk_state_change;
-+
-+ rfcomm_pi(sk)->dlc = d;
-+ d->owner = sk;
-+
-+ bluez_sock_init(sock, sk);
-+
-+ sk->zapped = 0;
-+
-+ sk->destruct = rfcomm_sock_destruct;
-+ sk->sndtimeo = RFCOMM_CONN_TIMEOUT;
-+
-+ sk->sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10;
-+ sk->rcvbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10;
-+
-+ sk->protocol = proto;
-+ sk->state = BT_OPEN;
-+
-+ bluez_sock_link(&rfcomm_sk_list, sk);
-+
-+ BT_DBG("sk %p", sk);
-+
-+ MOD_INC_USE_COUNT;
-+ return sk;
-+}
-+
-+static int rfcomm_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ sock->state = SS_UNCONNECTED;
-+
-+ if (sock->type != SOCK_STREAM && sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &rfcomm_sock_ops;
-+
-+ if (!(sk = rfcomm_sock_alloc(sock, protocol, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ rfcomm_sock_init(sk, NULL);
-+ return 0;
-+}
-+
-+static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p %s", sk, batostr(&sa->rc_bdaddr));
-+
-+ if (!addr || addr->sa_family != AF_BLUETOOTH)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_OPEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ write_lock_bh(&rfcomm_sk_list.lock);
-+
-+ if (sa->rc_channel && __rfcomm_get_sock_by_addr(sa->rc_channel, &sa->rc_bdaddr)) {
-+ err = -EADDRINUSE;
-+ } else {
-+ /* Save source address */
-+ bacpy(&bluez_pi(sk)->src, &sa->rc_bdaddr);
-+ rfcomm_pi(sk)->channel = sa->rc_channel;
-+ sk->state = BT_BOUND;
-+ }
-+
-+ write_unlock_bh(&rfcomm_sk_list.lock);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_rc))
-+ return -EINVAL;
-+
-+ if (sk->state != BT_OPEN && sk->state != BT_BOUND)
-+ return -EBADFD;
-+
-+ if (sk->type != SOCK_STREAM)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ sk->state = BT_CONNECT;
-+ bacpy(&bluez_pi(sk)->dst, &sa->rc_bdaddr);
-+ rfcomm_pi(sk)->channel = sa->rc_channel;
-+
-+ err = rfcomm_dlc_open(d, &bluez_pi(sk)->src, &sa->rc_bdaddr, sa->rc_channel);
-+ if (!err)
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int rfcomm_sock_listen(struct socket *sock, int backlog)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p backlog %d", sk, backlog);
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_BOUND) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ sk->max_ack_backlog = backlog;
-+ sk->ack_backlog = 0;
-+ sk->state = BT_LISTEN;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int flags)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct sock *sk = sock->sk, *nsk;
-+ long timeo;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
-+
-+ BT_DBG("sk %p timeo %ld", sk, timeo);
-+
-+ /* Wait for an incoming connection. (wake-one). */
-+ add_wait_queue_exclusive(sk->sleep, &wait);
-+ while (!(nsk = bluez_accept_dequeue(sk, newsock))) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ if (err)
-+ goto done;
-+
-+ newsock->state = SS_CONNECTED;
-+
-+ BT_DBG("new socket %p", nsk);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ sa->rc_family = AF_BLUETOOTH;
-+ sa->rc_channel = rfcomm_pi(sk)->channel;
-+ if (peer)
-+ bacpy(&sa->rc_bdaddr, &bluez_pi(sk)->dst);
-+ else
-+ bacpy(&sa->rc_bdaddr, &bluez_pi(sk)->src);
-+
-+ *len = sizeof(struct sockaddr_rc);
-+ return 0;
-+}
-+
-+static int rfcomm_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len,
-+ struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+ struct sk_buff *skb;
-+ int err, size;
-+ int sent = 0;
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ if (sk->shutdown & SEND_SHUTDOWN)
-+ return -EPIPE;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ lock_sock(sk);
-+
-+ while (len) {
-+ size = min_t(uint, len, d->mtu);
-+
-+ skb = sock_alloc_send_skb(sk, size + RFCOMM_SKB_RESERVE,
-+ msg->msg_flags & MSG_DONTWAIT, &err);
-+ if (!skb)
-+ break;
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size);
-+ if (err) {
-+ kfree_skb(skb);
-+ sent = err;
-+ break;
-+ }
-+
-+ err = rfcomm_dlc_send(d, skb);
-+ if (err < 0) {
-+ kfree_skb(skb);
-+ break;
-+ }
-+
-+ sent += size;
-+ len -= size;
-+ }
-+
-+ release_sock(sk);
-+
-+ return sent ? sent : err;
-+}
-+
-+static long rfcomm_sock_data_wait(struct sock *sk, long timeo)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+
-+ add_wait_queue(sk->sleep, &wait);
-+ for (;;) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (skb_queue_len(&sk->receive_queue) || sk->err || (sk->shutdown & RCV_SHUTDOWN) ||
-+ signal_pending(current) || !timeo)
-+ break;
-+
-+ set_bit(SOCK_ASYNC_WAITDATA, &sk->socket->flags);
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+ clear_bit(SOCK_ASYNC_WAITDATA, &sk->socket->flags);
-+ }
-+
-+ __set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+ return timeo;
-+}
-+
-+static int rfcomm_sock_recvmsg(struct socket *sock, struct msghdr *msg, int size,
-+ int flags, struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ int target, err = 0, copied = 0;
-+ long timeo;
-+
-+ if (flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ msg->msg_namelen = 0;
-+
-+ BT_DBG("sk %p size %d", sk, size);
-+
-+ lock_sock(sk);
-+
-+ target = sock_rcvlowat(sk, flags & MSG_WAITALL, size);
-+ timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT);
-+
-+ do {
-+ struct sk_buff *skb;
-+ int chunk;
-+
-+ skb = skb_dequeue(&sk->receive_queue);
-+ if (!skb) {
-+ if (copied >= target)
-+ break;
-+
-+ if ((err = sock_error(sk)) != 0)
-+ break;
-+ if (sk->shutdown & RCV_SHUTDOWN)
-+ break;
-+
-+ err = -EAGAIN;
-+ if (!timeo)
-+ break;
-+
-+ timeo = rfcomm_sock_data_wait(sk, timeo);
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ goto out;
-+ }
-+ continue;
-+ }
-+
-+ chunk = min_t(unsigned int, skb->len, size);
-+ if (memcpy_toiovec(msg->msg_iov, skb->data, chunk)) {
-+ skb_queue_head(&sk->receive_queue, skb);
-+ if (!copied)
-+ copied = -EFAULT;
-+ break;
-+ }
-+ copied += chunk;
-+ size -= chunk;
-+
-+ if (!(flags & MSG_PEEK)) {
-+ atomic_sub(chunk, &sk->rmem_alloc);
-+
-+ skb_pull(skb, chunk);
-+ if (skb->len) {
-+ skb_queue_head(&sk->receive_queue, skb);
-+ break;
-+ }
-+ kfree_skb(skb);
-+
-+ } else {
-+ /* put message back and return */
-+ skb_queue_head(&sk->receive_queue, skb);
-+ break;
-+ }
-+ } while (size);
-+
-+out:
-+ if (atomic_read(&sk->rmem_alloc) <= (sk->rcvbuf >> 2))
-+ rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc);
-+
-+ release_sock(sk);
-+ return copied ? : err;
-+}
-+
-+static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ int len, err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (get_user(len, optlen))
-+ return -EFAULT;
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct sock *sk = sock->sk;
-+ int err;
-+
-+ lock_sock(sk);
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ err = rfcomm_dev_ioctl(sk, cmd, arg);
-+#else
-+ err = -EOPNOTSUPP;
-+#endif
-+
-+ release_sock(sk);
-+
-+ return err;
-+}
-+
-+static int rfcomm_sock_shutdown(struct socket *sock, int how)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk) return 0;
-+
-+ lock_sock(sk);
-+ if (!sk->shutdown) {
-+ sk->shutdown = SHUTDOWN_MASK;
-+ __rfcomm_sock_close(sk);
-+
-+ if (sk->linger)
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ }
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ err = rfcomm_sock_shutdown(sock, 2);
-+
-+ sock_orphan(sk);
-+ rfcomm_sock_kill(sk);
-+ return err;
-+}
-+
-+/* ---- RFCOMM core layer callbacks ----
-+ *
-+ * called under rfcomm_lock()
-+ */
-+int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc **d)
-+{
-+ struct sock *sk, *parent;
-+ bdaddr_t src, dst;
-+ int result = 0;
-+
-+ BT_DBG("session %p channel %d", s, channel);
-+
-+ rfcomm_session_getaddr(s, &src, &dst);
-+
-+ /* Check if we have socket listening on this channel */
-+ parent = rfcomm_get_sock_by_channel(BT_LISTEN, channel, &src);
-+ if (!parent)
-+ return 0;
-+
-+ /* Check for backlog size */
-+ if (parent->ack_backlog > parent->max_ack_backlog) {
-+ BT_DBG("backlog full %d", parent->ack_backlog);
-+ goto done;
-+ }
-+
-+ sk = rfcomm_sock_alloc(NULL, BTPROTO_RFCOMM, GFP_ATOMIC);
-+ if (!sk)
-+ goto done;
-+
-+ rfcomm_sock_init(sk, parent);
-+ bacpy(&bluez_pi(sk)->src, &src);
-+ bacpy(&bluez_pi(sk)->dst, &dst);
-+ rfcomm_pi(sk)->channel = channel;
-+
-+ sk->state = BT_CONFIG;
-+ bluez_accept_enqueue(parent, sk);
-+
-+ /* Accept connection and return socket DLC */
-+ *d = rfcomm_pi(sk)->dlc;
-+ result = 1;
-+
-+done:
-+ bh_unlock_sock(parent);
-+ return result;
-+}
-+
-+/* ---- Proc fs support ---- */
-+int rfcomm_sock_dump(char *buf)
-+{
-+ struct bluez_sock_list *list = &rfcomm_sk_list;
-+ struct rfcomm_pinfo *pi;
-+ struct sock *sk;
-+ char *ptr = buf;
-+
-+ write_lock_bh(&list->lock);
-+
-+ for (sk = list->head; sk; sk = sk->next) {
-+ pi = rfcomm_pi(sk);
-+ ptr += sprintf(ptr, "sk %s %s %d %d\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ sk->state, rfcomm_pi(sk)->channel);
-+ }
-+
-+ write_unlock_bh(&list->lock);
-+
-+ return ptr - buf;
-+}
-+
-+static struct proto_ops rfcomm_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: rfcomm_sock_release,
-+ bind: rfcomm_sock_bind,
-+ connect: rfcomm_sock_connect,
-+ listen: rfcomm_sock_listen,
-+ accept: rfcomm_sock_accept,
-+ getname: rfcomm_sock_getname,
-+ sendmsg: rfcomm_sock_sendmsg,
-+ recvmsg: rfcomm_sock_recvmsg,
-+ shutdown: rfcomm_sock_shutdown,
-+ setsockopt: rfcomm_sock_setsockopt,
-+ getsockopt: rfcomm_sock_getsockopt,
-+ ioctl: rfcomm_sock_ioctl,
-+ poll: bluez_sock_poll,
-+ socketpair: sock_no_socketpair,
-+ mmap: sock_no_mmap
-+};
-+
-+static struct net_proto_family rfcomm_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: rfcomm_sock_create
-+};
-+
-+int rfcomm_init_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_RFCOMM, &rfcomm_sock_family_ops))) {
-+ BT_ERR("Can't register RFCOMM socket layer");
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+void rfcomm_cleanup_sockets(void)
-+{
-+ int err;
-+
-+ /* Unregister socket, protocol and notifier */
-+ if ((err = bluez_sock_unregister(BTPROTO_RFCOMM)))
-+ BT_ERR("Can't unregister RFCOMM socket layer %d", err);
-+}
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/tty.c linux-2.4.18-mh15/net/bluetooth/rfcomm/tty.c
---- linux-2.4.18/net/bluetooth/rfcomm/tty.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/rfcomm/tty.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,960 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM TTY.
-+ *
-+ * $Id: tty.c,v 1.26 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/tty.h>
-+#include <linux/tty_driver.h>
-+#include <linux/tty_flip.h>
-+
-+#include <linux/slab.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define RFCOMM_TTY_MAGIC 0x6d02 /* magic number for rfcomm struct */
-+#define RFCOMM_TTY_PORTS RFCOMM_MAX_DEV /* whole lotta rfcomm devices */
-+#define RFCOMM_TTY_MAJOR 216 /* device node major id of the usb/bluetooth.c driver */
-+#define RFCOMM_TTY_MINOR 0
-+
-+struct rfcomm_dev {
-+ struct list_head list;
-+ atomic_t refcnt;
-+
-+ char name[12];
-+ int id;
-+ unsigned long flags;
-+ int opened;
-+ int err;
-+
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+
-+ uint modem_status;
-+
-+ struct rfcomm_dlc *dlc;
-+ struct tty_struct *tty;
-+ wait_queue_head_t wait;
-+ struct tasklet_struct wakeup_task;
-+
-+ atomic_t wmem_alloc;
-+};
-+
-+static LIST_HEAD(rfcomm_dev_list);
-+static rwlock_t rfcomm_dev_lock = RW_LOCK_UNLOCKED;
-+
-+static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb);
-+static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err);
-+static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig);
-+
-+static void rfcomm_tty_wakeup(unsigned long arg);
-+
-+/* ---- Device functions ---- */
-+static void rfcomm_dev_destruct(struct rfcomm_dev *dev)
-+{
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+
-+ BT_DBG("dev %p dlc %p", dev, dlc);
-+
-+ rfcomm_dlc_lock(dlc);
-+ /* Detach DLC if it's owned by this dev */
-+ if (dlc->owner == dev)
-+ dlc->owner = NULL;
-+ rfcomm_dlc_unlock(dlc);
-+
-+ rfcomm_dlc_put(dlc);
-+ kfree(dev);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static inline void rfcomm_dev_hold(struct rfcomm_dev *dev)
-+{
-+ atomic_inc(&dev->refcnt);
-+}
-+
-+static inline void rfcomm_dev_put(struct rfcomm_dev *dev)
-+{
-+ /* The reason this isn't actually a race, as you no
-+ doubt have a little voice screaming at you in your
-+ head, is that the refcount should never actually
-+ reach zero unless the device has already been taken
-+ off the list, in rfcomm_dev_del(). And if that's not
-+ true, we'll hit the BUG() in rfcomm_dev_destruct()
-+ anyway. */
-+ if (atomic_dec_and_test(&dev->refcnt))
-+ rfcomm_dev_destruct(dev);
-+}
-+
-+static struct rfcomm_dev *__rfcomm_dev_get(int id)
-+{
-+ struct rfcomm_dev *dev;
-+ struct list_head *p;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ dev = list_entry(p, struct rfcomm_dev, list);
-+ if (dev->id == id)
-+ return dev;
-+ }
-+
-+ return NULL;
-+}
-+
-+static inline struct rfcomm_dev *rfcomm_dev_get(int id)
-+{
-+ struct rfcomm_dev *dev;
-+
-+ read_lock(&rfcomm_dev_lock);
-+
-+ dev = __rfcomm_dev_get(id);
-+ if (dev)
-+ rfcomm_dev_hold(dev);
-+
-+ read_unlock(&rfcomm_dev_lock);
-+
-+ return dev;
-+}
-+
-+static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
-+{
-+ struct rfcomm_dev *dev;
-+ struct list_head *head = &rfcomm_dev_list, *p;
-+ int err = 0;
-+
-+ BT_DBG("id %d channel %d", req->dev_id, req->channel);
-+
-+ dev = kmalloc(sizeof(struct rfcomm_dev), GFP_KERNEL);
-+ if (!dev)
-+ return -ENOMEM;
-+ memset(dev, 0, sizeof(struct rfcomm_dev));
-+
-+ write_lock_bh(&rfcomm_dev_lock);
-+
-+ if (req->dev_id < 0) {
-+ dev->id = 0;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ if (list_entry(p, struct rfcomm_dev, list)->id != dev->id)
-+ break;
-+
-+ dev->id++;
-+ head = p;
-+ }
-+ } else {
-+ dev->id = req->dev_id;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ struct rfcomm_dev *entry = list_entry(p, struct rfcomm_dev, list);
-+
-+ if (entry->id == dev->id) {
-+ err = -EADDRINUSE;
-+ goto out;
-+ }
-+
-+ if (entry->id > dev->id - 1)
-+ break;
-+
-+ head = p;
-+ }
-+ }
-+
-+ if ((dev->id < 0) || (dev->id > RFCOMM_MAX_DEV - 1)) {
-+ err = -ENFILE;
-+ goto out;
-+ }
-+
-+ sprintf(dev->name, "rfcomm%d", dev->id);
-+
-+ list_add(&dev->list, head);
-+ atomic_set(&dev->refcnt, 1);
-+
-+ bacpy(&dev->src, &req->src);
-+ bacpy(&dev->dst, &req->dst);
-+ dev->channel = req->channel;
-+
-+ dev->flags = req->flags &
-+ ((1 << RFCOMM_RELEASE_ONHUP) | (1 << RFCOMM_REUSE_DLC));
-+
-+ init_waitqueue_head(&dev->wait);
-+ tasklet_init(&dev->wakeup_task, rfcomm_tty_wakeup, (unsigned long) dev);
-+
-+ rfcomm_dlc_lock(dlc);
-+ dlc->data_ready = rfcomm_dev_data_ready;
-+ dlc->state_change = rfcomm_dev_state_change;
-+ dlc->modem_status = rfcomm_dev_modem_status;
-+
-+ dlc->owner = dev;
-+ dev->dlc = dlc;
-+ rfcomm_dlc_unlock(dlc);
-+
-+ MOD_INC_USE_COUNT;
-+
-+out:
-+ write_unlock_bh(&rfcomm_dev_lock);
-+
-+ if (err) {
-+ kfree(dev);
-+ return err;
-+ } else
-+ return dev->id;
-+}
-+
-+static void rfcomm_dev_del(struct rfcomm_dev *dev)
-+{
-+ BT_DBG("dev %p", dev);
-+
-+ write_lock_bh(&rfcomm_dev_lock);
-+ list_del_init(&dev->list);
-+ write_unlock_bh(&rfcomm_dev_lock);
-+
-+ rfcomm_dev_put(dev);
-+}
-+
-+/* ---- Send buffer ---- */
-+
-+static inline unsigned int rfcomm_room(struct rfcomm_dlc *dlc)
-+{
-+ /* We can't let it be zero, because we don't get a callback
-+ when tx_credits becomes nonzero, hence we'd never wake up */
-+ return dlc->mtu * (dlc->tx_credits?:1);
-+}
-+
-+static void rfcomm_wfree(struct sk_buff *skb)
-+{
-+ struct rfcomm_dev *dev = (void *) skb->sk;
-+ atomic_sub(skb->truesize, &dev->wmem_alloc);
-+ if (test_bit(RFCOMM_TTY_ATTACHED, &dev->flags))
-+ tasklet_schedule(&dev->wakeup_task);
-+ rfcomm_dev_put(dev);
-+}
-+
-+static inline void rfcomm_set_owner_w(struct sk_buff *skb, struct rfcomm_dev *dev)
-+{
-+ rfcomm_dev_hold(dev);
-+ atomic_add(skb->truesize, &dev->wmem_alloc);
-+ skb->sk = (void *) dev;
-+ skb->destructor = rfcomm_wfree;
-+}
-+
-+static struct sk_buff *rfcomm_wmalloc(struct rfcomm_dev *dev, unsigned long size, int force, int priority)
-+{
-+ if (force || atomic_read(&dev->wmem_alloc) < rfcomm_room(dev->dlc)) {
-+ struct sk_buff *skb = alloc_skb(size, priority);
-+ if (skb) {
-+ rfcomm_set_owner_w(skb, dev);
-+ return skb;
-+ }
-+ }
-+ return NULL;
-+}
-+
-+/* ---- Device IOCTLs ---- */
-+
-+#define NOCAP_FLAGS ((1 << RFCOMM_REUSE_DLC) | (1 << RFCOMM_RELEASE_ONHUP))
-+
-+static int rfcomm_create_dev(struct sock *sk, unsigned long arg)
-+{
-+ struct rfcomm_dev_req req;
-+ struct rfcomm_dlc *dlc;
-+ int id;
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ BT_DBG("sk %p dev_id %id flags 0x%x", sk, req.dev_id, req.flags);
-+
-+ if (req.flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN))
-+ return -EPERM;
-+
-+ if (req.flags & (1 << RFCOMM_REUSE_DLC)) {
-+ /* Socket must be connected */
-+ if (sk->state != BT_CONNECTED)
-+ return -EBADFD;
-+
-+ dlc = rfcomm_pi(sk)->dlc;
-+ rfcomm_dlc_hold(dlc);
-+ } else {
-+ dlc = rfcomm_dlc_alloc(GFP_KERNEL);
-+ if (!dlc)
-+ return -ENOMEM;
-+ }
-+
-+ id = rfcomm_dev_add(&req, dlc);
-+ if (id < 0) {
-+ rfcomm_dlc_put(dlc);
-+ return id;
-+ }
-+
-+ if (req.flags & (1 << RFCOMM_REUSE_DLC)) {
-+ /* DLC is now used by device.
-+ * Socket must be disconnected */
-+ sk->state = BT_CLOSED;
-+ }
-+
-+ return id;
-+}
-+
-+static int rfcomm_release_dev(unsigned long arg)
-+{
-+ struct rfcomm_dev_req req;
-+ struct rfcomm_dev *dev;
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ BT_DBG("dev_id %id flags 0x%x", req.dev_id, req.flags);
-+
-+ if (!(dev = rfcomm_dev_get(req.dev_id)))
-+ return -ENODEV;
-+
-+ if (dev->flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN)) {
-+ rfcomm_dev_put(dev);
-+ return -EPERM;
-+ }
-+
-+ if (req.flags & (1 << RFCOMM_HANGUP_NOW))
-+ rfcomm_dlc_close(dev->dlc, 0);
-+
-+ rfcomm_dev_del(dev);
-+ rfcomm_dev_put(dev);
-+ return 0;
-+}
-+
-+static int rfcomm_get_dev_list(unsigned long arg)
-+{
-+ struct rfcomm_dev_list_req *dl;
-+ struct rfcomm_dev_info *di;
-+ struct list_head *p;
-+ int n = 0, size, err;
-+ u16 dev_num;
-+
-+ BT_DBG("");
-+
-+ if (get_user(dev_num, (u16 *) arg))
-+ return -EFAULT;
-+
-+ if (!dev_num || dev_num > (PAGE_SIZE * 4) / sizeof(*di))
-+ return -EINVAL;
-+
-+ size = sizeof(*dl) + dev_num * sizeof(*di);
-+
-+ if (!(dl = kmalloc(size, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ di = dl->dev_info;
-+
-+ read_lock_bh(&rfcomm_dev_lock);
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ struct rfcomm_dev *dev = list_entry(p, struct rfcomm_dev, list);
-+ (di + n)->id = dev->id;
-+ (di + n)->flags = dev->flags;
-+ (di + n)->state = dev->dlc->state;
-+ (di + n)->channel = dev->channel;
-+ bacpy(&(di + n)->src, &dev->src);
-+ bacpy(&(di + n)->dst, &dev->dst);
-+ if (++n >= dev_num)
-+ break;
-+ }
-+
-+ read_unlock_bh(&rfcomm_dev_lock);
-+
-+ dl->dev_num = n;
-+ size = sizeof(*dl) + n * sizeof(*di);
-+
-+ err = copy_to_user((void *) arg, dl, size);
-+ kfree(dl);
-+
-+ return err ? -EFAULT : 0;
-+}
-+
-+static int rfcomm_get_dev_info(unsigned long arg)
-+{
-+ struct rfcomm_dev *dev;
-+ struct rfcomm_dev_info di;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ if (copy_from_user(&di, (void *)arg, sizeof(di)))
-+ return -EFAULT;
-+
-+ if (!(dev = rfcomm_dev_get(di.id)))
-+ return -ENODEV;
-+
-+ di.flags = dev->flags;
-+ di.channel = dev->channel;
-+ di.state = dev->dlc->state;
-+ bacpy(&di.src, &dev->src);
-+ bacpy(&di.dst, &dev->dst);
-+
-+ if (copy_to_user((void *)arg, &di, sizeof(di)))
-+ err = -EFAULT;
-+
-+ rfcomm_dev_put(dev);
-+ return err;
-+}
-+
-+int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg)
-+{
-+ BT_DBG("cmd %d arg %ld", cmd, arg);
-+
-+ switch (cmd) {
-+ case RFCOMMCREATEDEV:
-+ return rfcomm_create_dev(sk, arg);
-+
-+ case RFCOMMRELEASEDEV:
-+ return rfcomm_release_dev(arg);
-+
-+ case RFCOMMGETDEVLIST:
-+ return rfcomm_get_dev_list(arg);
-+
-+ case RFCOMMGETDEVINFO:
-+ return rfcomm_get_dev_info(arg);
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+/* ---- DLC callbacks ---- */
-+static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ struct tty_struct *tty;
-+
-+ if (!dev || !(tty = dev->tty)) {
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ BT_DBG("dlc %p tty %p len %d", dlc, tty, skb->len);
-+
-+ if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
-+ register int i;
-+ for (i = 0; i < skb->len; i++) {
-+ if (tty->flip.count >= TTY_FLIPBUF_SIZE)
-+ tty_flip_buffer_push(tty);
-+
-+ tty_insert_flip_char(tty, skb->data[i], 0);
-+ }
-+ tty_flip_buffer_push(tty);
-+ } else
-+ tty->ldisc.receive_buf(tty, skb->data, NULL, skb->len);
-+
-+ kfree_skb(skb);
-+}
-+
-+static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("dlc %p dev %p err %d", dlc, dev, err);
-+
-+ dev->err = err;
-+ wake_up_interruptible(&dev->wait);
-+
-+ if (dlc->state == BT_CLOSED) {
-+ if (!dev->tty) {
-+ if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) {
-+ rfcomm_dev_hold(dev);
-+ rfcomm_dev_del(dev);
-+
-+ /* We have to drop DLC lock here, otherwise
-+ rfcomm_dev_put() will dead lock if it's
-+ the last reference. */
-+ rfcomm_dlc_unlock(dlc);
-+ rfcomm_dev_put(dev);
-+ rfcomm_dlc_lock(dlc);
-+ }
-+ } else
-+ tty_hangup(dev->tty);
-+ }
-+}
-+
-+static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig);
-+
-+ dev->modem_status =
-+ ((v24_sig & RFCOMM_V24_RTC) ? (TIOCM_DSR | TIOCM_DTR) : 0) |
-+ ((v24_sig & RFCOMM_V24_RTR) ? (TIOCM_RTS | TIOCM_CTS) : 0) |
-+ ((v24_sig & RFCOMM_V24_IC) ? TIOCM_RI : 0) |
-+ ((v24_sig & RFCOMM_V24_DV) ? TIOCM_CD : 0);
-+}
-+
-+/* ---- TTY functions ---- */
-+static void rfcomm_tty_wakeup(unsigned long arg)
-+{
-+ struct rfcomm_dev *dev = (void *) arg;
-+ struct tty_struct *tty = dev->tty;
-+ if (!tty)
-+ return;
-+
-+ BT_DBG("dev %p tty %p", dev, tty);
-+
-+ if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup)
-+ (tty->ldisc.write_wakeup)(tty);
-+
-+ wake_up_interruptible(&tty->write_wait);
-+#ifdef SERIAL_HAVE_POLL_WAIT
-+ wake_up_interruptible(&tty->poll_wait);
-+#endif
-+}
-+
-+static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct rfcomm_dev *dev;
-+ struct rfcomm_dlc *dlc;
-+ int err, id;
-+
-+ id = MINOR(tty->device) - tty->driver.minor_start;
-+
-+ BT_DBG("tty %p id %d", tty, id);
-+
-+ /* We don't leak this refcount. For reasons which are not entirely
-+ clear, the TTY layer will call our ->close() method even if the
-+ open fails. We decrease the refcount there, and decreasing it
-+ here too would cause breakage. */
-+ dev = rfcomm_dev_get(id);
-+ if (!dev)
-+ return -ENODEV;
-+
-+ BT_DBG("dev %p dst %s channel %d opened %d", dev, batostr(&dev->dst), dev->channel, dev->opened);
-+
-+ if (dev->opened++ != 0)
-+ return 0;
-+
-+ dlc = dev->dlc;
-+
-+ /* Attach TTY and open DLC */
-+
-+ rfcomm_dlc_lock(dlc);
-+ tty->driver_data = dev;
-+ dev->tty = tty;
-+ rfcomm_dlc_unlock(dlc);
-+ set_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
-+
-+ err = rfcomm_dlc_open(dlc, &dev->src, &dev->dst, dev->channel);
-+ if (err < 0)
-+ return err;
-+
-+ /* Wait for DLC to connect */
-+ add_wait_queue(&dev->wait, &wait);
-+ while (1) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (dlc->state == BT_CLOSED) {
-+ err = -dev->err;
-+ break;
-+ }
-+
-+ if (dlc->state == BT_CONNECTED)
-+ break;
-+
-+ if (signal_pending(current)) {
-+ err = -EINTR;
-+ break;
-+ }
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&dev->wait, &wait);
-+
-+ return err;
-+}
-+
-+static void rfcomm_tty_close(struct tty_struct *tty, struct file *filp)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc, dev->opened);
-+
-+ if (--dev->opened == 0) {
-+ /* Close DLC and dettach TTY */
-+ rfcomm_dlc_close(dev->dlc, 0);
-+
-+ clear_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
-+ tasklet_kill(&dev->wakeup_task);
-+
-+ rfcomm_dlc_lock(dev->dlc);
-+ tty->driver_data = NULL;
-+ dev->tty = NULL;
-+ rfcomm_dlc_unlock(dev->dlc);
-+ }
-+
-+ rfcomm_dev_put(dev);
-+}
-+
-+static int rfcomm_tty_write(struct tty_struct *tty, int from_user, const unsigned char *buf, int count)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ struct sk_buff *skb;
-+ int err = 0, sent = 0, size;
-+
-+ BT_DBG("tty %p from_user %d count %d", tty, from_user, count);
-+
-+ while (count) {
-+ size = min_t(uint, count, dlc->mtu);
-+
-+ if (from_user)
-+ skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, 0, GFP_KERNEL);
-+ else
-+ skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, 0, GFP_ATOMIC);
-+
-+ if (!skb)
-+ break;
-+
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ if (from_user)
-+ copy_from_user(skb_put(skb, size), buf + sent, size);
-+ else
-+ memcpy(skb_put(skb, size), buf + sent, size);
-+
-+ if ((err = rfcomm_dlc_send(dlc, skb)) < 0) {
-+ kfree_skb(skb);
-+ break;
-+ }
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ return sent ? sent : err;
-+}
-+
-+static void rfcomm_tty_put_char(struct tty_struct *tty, unsigned char ch)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("tty %p char %x", tty, ch);
-+
-+ skb = rfcomm_wmalloc(dev, 1 + RFCOMM_SKB_RESERVE, 1, GFP_ATOMIC);
-+
-+ if (!skb)
-+ return;
-+
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ *(char *)skb_put(skb, 1) = ch;
-+
-+ if ((rfcomm_dlc_send(dlc, skb)) < 0)
-+ kfree_skb(skb);
-+}
-+
-+static int rfcomm_tty_write_room(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ int room;
-+
-+ BT_DBG("tty %p", tty);
-+
-+ room = rfcomm_room(dev->dlc) - atomic_read(&dev->wmem_alloc);
-+ if (room < 0)
-+ room = 0;
-+
-+ return room;
-+}
-+
-+static int rfcomm_tty_set_modem_status(uint cmd, struct rfcomm_dlc *dlc, uint status)
-+{
-+ u8 v24_sig, mask;
-+
-+ BT_DBG("dlc %p cmd 0x%02x", dlc, cmd);
-+
-+ if (cmd == TIOCMSET)
-+ v24_sig = 0;
-+ else
-+ rfcomm_dlc_get_modem_status(dlc, &v24_sig);
-+
-+ mask = ((status & TIOCM_DSR) ? RFCOMM_V24_RTC : 0) |
-+ ((status & TIOCM_DTR) ? RFCOMM_V24_RTC : 0) |
-+ ((status & TIOCM_RTS) ? RFCOMM_V24_RTR : 0) |
-+ ((status & TIOCM_CTS) ? RFCOMM_V24_RTR : 0) |
-+ ((status & TIOCM_RI) ? RFCOMM_V24_IC : 0) |
-+ ((status & TIOCM_CD) ? RFCOMM_V24_DV : 0);
-+
-+ if (cmd == TIOCMBIC)
-+ v24_sig &= ~mask;
-+ else
-+ v24_sig |= mask;
-+
-+ rfcomm_dlc_set_modem_status(dlc, v24_sig);
-+ return 0;
-+}
-+
-+static int rfcomm_tty_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, unsigned long arg)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ uint status;
-+ int err;
-+
-+ BT_DBG("tty %p cmd 0x%02x", tty, cmd);
-+
-+ switch (cmd) {
-+ case TCGETS:
-+ BT_DBG("TCGETS is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TCSETS:
-+ BT_DBG("TCSETS is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCMGET:
-+ BT_DBG("TIOCMGET");
-+
-+ return put_user(dev->modem_status, (unsigned int *)arg);
-+
-+ case TIOCMSET: /* Turns on and off the lines as specified by the mask */
-+ case TIOCMBIS: /* Turns on the lines as specified by the mask */
-+ case TIOCMBIC: /* Turns off the lines as specified by the mask */
-+ if ((err = get_user(status, (unsigned int *)arg)))
-+ return err;
-+ return rfcomm_tty_set_modem_status(cmd, dlc, status);
-+
-+ case TIOCMIWAIT:
-+ BT_DBG("TIOCMIWAIT");
-+ break;
-+
-+ case TIOCGICOUNT:
-+ BT_DBG("TIOCGICOUNT");
-+ break;
-+
-+ case TIOCGSERIAL:
-+ BT_ERR("TIOCGSERIAL is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSSERIAL:
-+ BT_ERR("TIOCSSERIAL is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERGSTRUCT:
-+ BT_ERR("TIOCSERGSTRUCT is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERGETLSR:
-+ BT_ERR("TIOCSERGETLSR is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERCONFIG:
-+ BT_ERR("TIOCSERCONFIG is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ default:
-+ return -ENOIOCTLCMD; /* ioctls which we must ignore */
-+
-+ }
-+
-+ return -ENOIOCTLCMD;
-+}
-+
-+#define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK))
-+
-+static void rfcomm_tty_set_termios(struct tty_struct *tty, struct termios *old)
-+{
-+ BT_DBG("tty %p", tty);
-+
-+ if ((tty->termios->c_cflag == old->c_cflag) &&
-+ (RELEVANT_IFLAG(tty->termios->c_iflag) == RELEVANT_IFLAG(old->c_iflag)))
-+ return;
-+
-+ /* handle turning off CRTSCTS */
-+ if ((old->c_cflag & CRTSCTS) && !(tty->termios->c_cflag & CRTSCTS)) {
-+ BT_DBG("turning off CRTSCTS");
-+ }
-+}
-+
-+static void rfcomm_tty_throttle(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_dlc_throttle(dev->dlc);
-+}
-+
-+static void rfcomm_tty_unthrottle(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_dlc_unthrottle(dev->dlc);
-+}
-+
-+static int rfcomm_tty_chars_in_buffer(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ if (skb_queue_len(&dlc->tx_queue))
-+ return dlc->mtu;
-+
-+ return 0;
-+}
-+
-+static void rfcomm_tty_flush_buffer(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ skb_queue_purge(&dev->dlc->tx_queue);
-+
-+ if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup)
-+ tty->ldisc.write_wakeup(tty);
-+}
-+
-+static void rfcomm_tty_send_xchar(struct tty_struct *tty, char ch)
-+{
-+ BT_DBG("tty %p ch %c", tty, ch);
-+}
-+
-+static void rfcomm_tty_wait_until_sent(struct tty_struct *tty, int timeout)
-+{
-+ BT_DBG("tty %p timeout %d", tty, timeout);
-+}
-+
-+static void rfcomm_tty_hangup(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_tty_flush_buffer(tty);
-+
-+ if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags))
-+ rfcomm_dev_del(dev);
-+}
-+
-+static int rfcomm_tty_read_proc(char *buf, char **start, off_t offset, int len, int *eof, void *unused)
-+{
-+ return 0;
-+}
-+
-+/* ---- TTY structure ---- */
-+static int rfcomm_tty_refcount; /* If we manage several devices */
-+
-+static struct tty_struct *rfcomm_tty_table[RFCOMM_TTY_PORTS];
-+static struct termios *rfcomm_tty_termios[RFCOMM_TTY_PORTS];
-+static struct termios *rfcomm_tty_termios_locked[RFCOMM_TTY_PORTS];
-+
-+static struct tty_driver rfcomm_tty_driver = {
-+ magic: TTY_DRIVER_MAGIC,
-+ driver_name: "rfcomm",
-+#ifdef CONFIG_DEVFS_FS
-+ name: "bluetooth/rfcomm/%d",
-+#else
-+ name: "rfcomm",
-+#endif
-+ major: RFCOMM_TTY_MAJOR,
-+ minor_start: RFCOMM_TTY_MINOR,
-+ num: RFCOMM_TTY_PORTS,
-+ type: TTY_DRIVER_TYPE_SERIAL,
-+ subtype: SERIAL_TYPE_NORMAL,
-+ flags: TTY_DRIVER_REAL_RAW,
-+
-+ refcount: &rfcomm_tty_refcount,
-+ table: rfcomm_tty_table,
-+ termios: rfcomm_tty_termios,
-+ termios_locked: rfcomm_tty_termios_locked,
-+
-+ open: rfcomm_tty_open,
-+ close: rfcomm_tty_close,
-+ put_char: rfcomm_tty_put_char,
-+ write: rfcomm_tty_write,
-+ write_room: rfcomm_tty_write_room,
-+ chars_in_buffer: rfcomm_tty_chars_in_buffer,
-+ flush_buffer: rfcomm_tty_flush_buffer,
-+ ioctl: rfcomm_tty_ioctl,
-+ throttle: rfcomm_tty_throttle,
-+ unthrottle: rfcomm_tty_unthrottle,
-+ set_termios: rfcomm_tty_set_termios,
-+ send_xchar: rfcomm_tty_send_xchar,
-+ stop: NULL,
-+ start: NULL,
-+ hangup: rfcomm_tty_hangup,
-+ wait_until_sent: rfcomm_tty_wait_until_sent,
-+ read_proc: rfcomm_tty_read_proc,
-+};
-+
-+int rfcomm_init_ttys(void)
-+{
-+ int i;
-+
-+ /* Initalize our global data */
-+ for (i = 0; i < RFCOMM_TTY_PORTS; i++)
-+ rfcomm_tty_table[i] = NULL;
-+
-+ /* Register the TTY driver */
-+ rfcomm_tty_driver.init_termios = tty_std_termios;
-+ rfcomm_tty_driver.init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
-+ rfcomm_tty_driver.flags = TTY_DRIVER_REAL_RAW;
-+
-+ if (tty_register_driver(&rfcomm_tty_driver)) {
-+ BT_ERR("Can't register RFCOMM TTY driver");
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
-+void rfcomm_cleanup_ttys(void)
-+{
-+ tty_unregister_driver(&rfcomm_tty_driver);
-+ return;
-+}
-diff -urN linux-2.4.18/net/bluetooth/sco.c linux-2.4.18-mh15/net/bluetooth/sco.c
---- linux-2.4.18/net/bluetooth/sco.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18-mh15/net/bluetooth/sco.c 2004-08-01 16:26:23.000000000 +0200
-@@ -0,0 +1,1019 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ SCO sockets.
-+ *
-+ * $Id: sco.c,v 1.4 2002/07/22 20:32:54 maxk Exp $
-+ */
-+#define VERSION "0.3"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/socket.h>
-+#include <linux/skbuff.h>
-+#include <linux/proc_fs.h>
-+#include <linux/list.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include <net/bluetooth/sco.h>
-+
-+#ifndef SCO_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+static struct proto_ops sco_sock_ops;
-+
-+static struct bluez_sock_list sco_sk_list = {
-+ lock: RW_LOCK_UNLOCKED
-+};
-+
-+static inline int sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent);
-+static void sco_chan_del(struct sock *sk, int err);
-+static inline struct sock * sco_chan_get(struct sco_conn *conn);
-+
-+static int sco_conn_del(struct hci_conn *conn, int err);
-+
-+static void sco_sock_close(struct sock *sk);
-+static void sco_sock_kill(struct sock *sk);
-+
-+/* ----- SCO timers ------ */
-+static void sco_sock_timeout(unsigned long arg)
-+{
-+ struct sock *sk = (struct sock *) arg;
-+
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ bh_lock_sock(sk);
-+ sk->err = ETIMEDOUT;
-+ sk->state_change(sk);
-+ bh_unlock_sock(sk);
-+
-+ sco_sock_kill(sk);
-+ sock_put(sk);
-+}
-+
-+static void sco_sock_set_timer(struct sock *sk, long timeout)
-+{
-+ BT_DBG("sock %p state %d timeout %ld", sk, sk->state, timeout);
-+
-+ if (!mod_timer(&sk->timer, jiffies + timeout))
-+ sock_hold(sk);
-+}
-+
-+static void sco_sock_clear_timer(struct sock *sk)
-+{
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ if (timer_pending(&sk->timer) && del_timer(&sk->timer))
-+ __sock_put(sk);
-+}
-+
-+static void sco_sock_init_timer(struct sock *sk)
-+{
-+ init_timer(&sk->timer);
-+ sk->timer.function = sco_sock_timeout;
-+ sk->timer.data = (unsigned long)sk;
-+}
-+
-+/* -------- SCO connections --------- */
-+static struct sco_conn *sco_conn_add(struct hci_conn *hcon, __u8 status)
-+{
-+ struct hci_dev *hdev = hcon->hdev;
-+ struct sco_conn *conn;
-+
-+ if ((conn = hcon->sco_data))
-+ return conn;
-+
-+ if (status)
-+ return conn;
-+
-+ if (!(conn = kmalloc(sizeof(struct sco_conn), GFP_ATOMIC)))
-+ return NULL;
-+ memset(conn, 0, sizeof(struct sco_conn));
-+
-+ spin_lock_init(&conn->lock);
-+
-+ hcon->sco_data = conn;
-+ conn->hcon = hcon;
-+
-+ conn->src = &hdev->bdaddr;
-+ conn->dst = &hcon->dst;
-+
-+ if (hdev->sco_mtu > 0)
-+ conn->mtu = hdev->sco_mtu;
-+ else
-+ conn->mtu = 60;
-+
-+ BT_DBG("hcon %p conn %p", hcon, conn);
-+
-+ MOD_INC_USE_COUNT;
-+ return conn;
-+}
-+
-+static int sco_conn_del(struct hci_conn *hcon, int err)
-+{
-+ struct sco_conn *conn;
-+ struct sock *sk;
-+
-+ if (!(conn = hcon->sco_data))
-+ return 0;
-+
-+ BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
-+
-+ /* Kill socket */
-+ if ((sk = sco_chan_get(conn))) {
-+ bh_lock_sock(sk);
-+ sco_sock_clear_timer(sk);
-+ sco_chan_del(sk, err);
-+ bh_unlock_sock(sk);
-+ sco_sock_kill(sk);
-+ }
-+
-+ hcon->sco_data = NULL;
-+ kfree(conn);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+int sco_connect(struct sock *sk)
-+{
-+ bdaddr_t *src = &bluez_pi(sk)->src;
-+ bdaddr_t *dst = &bluez_pi(sk)->dst;
-+ struct sco_conn *conn;
-+ struct hci_conn *hcon;
-+ struct hci_dev *hdev;
-+ int err = 0;
-+
-+ BT_DBG("%s -> %s", batostr(src), batostr(dst));
-+
-+ if (!(hdev = hci_get_route(dst, src)))
-+ return -EHOSTUNREACH;
-+
-+ hci_dev_lock_bh(hdev);
-+
-+ err = -ENOMEM;
-+
-+ hcon = hci_connect(hdev, SCO_LINK, dst);
-+ if (!hcon)
-+ goto done;
-+
-+ conn = sco_conn_add(hcon, 0);
-+ if (!conn) {
-+ hci_conn_put(hcon);
-+ goto done;
-+ }
-+
-+ /* Update source addr of the socket */
-+ bacpy(src, conn->src);
-+
-+ err = sco_chan_add(conn, sk, NULL);
-+ if (err)
-+ goto done;
-+
-+ if (hcon->state == BT_CONNECTED) {
-+ sco_sock_clear_timer(sk);
-+ sk->state = BT_CONNECTED;
-+ } else {
-+ sk->state = BT_CONNECT;
-+ sco_sock_set_timer(sk, sk->sndtimeo);
-+ }
-+done:
-+ hci_dev_unlock_bh(hdev);
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
-+static inline int sco_send_frame(struct sock *sk, struct msghdr *msg, int len)
-+{
-+ struct sco_conn *conn = sco_pi(sk)->conn;
-+ struct sk_buff *skb;
-+ int err, count;
-+
-+ /* Check outgoing MTU */
-+ if (len > conn->mtu)
-+ return -EINVAL;
-+
-+ BT_DBG("sk %p len %d", sk, len);
-+
-+ count = MIN(conn->mtu, len);
-+ if (!(skb = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err)))
-+ return err;
-+
-+ if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) {
-+ err = -EFAULT;
-+ goto fail;
-+ }
-+
-+ if ((err = hci_send_sco(conn->hcon, skb)) < 0)
-+ goto fail;
-+
-+ return count;
-+
-+fail:
-+ kfree_skb(skb);
-+ return err;
-+}
-+
-+static inline void sco_recv_frame(struct sco_conn *conn, struct sk_buff *skb)
-+{
-+ struct sock *sk = sco_chan_get(conn);
-+
-+ if (!sk)
-+ goto drop;
-+
-+ BT_DBG("sk %p len %d", sk, skb->len);
-+
-+ if (sk->state != BT_CONNECTED)
-+ goto drop;
-+
-+ if (!sock_queue_rcv_skb(sk, skb))
-+ return;
-+
-+drop:
-+ kfree_skb(skb);
-+ return;
-+}
-+
-+/* -------- Socket interface ---------- */
-+static struct sock *__sco_get_sock_by_addr(bdaddr_t *ba)
-+{
-+ struct sock *sk;
-+
-+ for (sk = sco_sk_list.head; sk; sk = sk->next) {
-+ if (!bacmp(&bluez_pi(sk)->src, ba))
-+ break;
-+ }
-+
-+ return sk;
-+}
-+
-+/* Find socket listening on source bdaddr.
-+ * Returns closest match.
-+ */
-+static struct sock *sco_get_sock_listen(bdaddr_t *src)
-+{
-+ struct sock *sk, *sk1 = NULL;
-+
-+ read_lock(&sco_sk_list.lock);
-+
-+ for (sk = sco_sk_list.head; sk; sk = sk->next) {
-+ if (sk->state != BT_LISTEN)
-+ continue;
-+
-+ /* Exact match. */
-+ if (!bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+
-+ /* Closest match */
-+ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ sk1 = sk;
-+ }
-+
-+ read_unlock(&sco_sk_list.lock);
-+
-+ return sk ? sk : sk1;
-+}
-+
-+static void sco_sock_destruct(struct sock *sk)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ skb_queue_purge(&sk->receive_queue);
-+ skb_queue_purge(&sk->write_queue);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void sco_sock_cleanup_listen(struct sock *parent)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ /* Close not yet accepted channels */
-+ while ((sk = bluez_accept_dequeue(parent, NULL))) {
-+ sco_sock_close(sk);
-+ sco_sock_kill(sk);
-+ }
-+
-+ parent->state = BT_CLOSED;
-+ parent->zapped = 1;
-+}
-+
-+/* Kill socket (only if zapped and orphan)
-+ * Must be called on unlocked socket.
-+ */
-+static void sco_sock_kill(struct sock *sk)
-+{
-+ if (!sk->zapped || sk->socket)
-+ return;
-+
-+ BT_DBG("sk %p state %d", sk, sk->state);
-+
-+ /* Kill poor orphan */
-+ bluez_sock_unlink(&sco_sk_list, sk);
-+ sk->dead = 1;
-+ sock_put(sk);
-+}
-+
-+/* Close socket.
-+ * Must be called on unlocked socket.
-+ */
-+static void sco_sock_close(struct sock *sk)
-+{
-+ struct sco_conn *conn;
-+
-+ sco_sock_clear_timer(sk);
-+
-+ lock_sock(sk);
-+
-+ conn = sco_pi(sk)->conn;
-+
-+ BT_DBG("sk %p state %d conn %p socket %p", sk, sk->state, conn, sk->socket);
-+
-+ switch (sk->state) {
-+ case BT_LISTEN:
-+ sco_sock_cleanup_listen(sk);
-+ break;
-+
-+ case BT_CONNECTED:
-+ case BT_CONFIG:
-+ case BT_CONNECT:
-+ case BT_DISCONN:
-+ sco_chan_del(sk, ECONNRESET);
-+ break;
-+
-+ default:
-+ sk->zapped = 1;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+}
-+
-+static void sco_sock_init(struct sock *sk, struct sock *parent)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ if (parent)
-+ sk->type = parent->type;
-+}
-+
-+static struct sock *sco_sock_alloc(struct socket *sock, int proto, int prio)
-+{
-+ struct sock *sk;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1)))
-+ return NULL;
-+
-+ bluez_sock_init(sock, sk);
-+
-+ sk->zapped = 0;
-+
-+ sk->destruct = sco_sock_destruct;
-+ sk->sndtimeo = SCO_CONN_TIMEOUT;
-+
-+ sk->protocol = proto;
-+ sk->state = BT_OPEN;
-+
-+ sco_sock_init_timer(sk);
-+
-+ bluez_sock_link(&sco_sk_list, sk);
-+
-+ MOD_INC_USE_COUNT;
-+ return sk;
-+}
-+
-+static int sco_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ sock->state = SS_UNCONNECTED;
-+
-+ if (sock->type != SOCK_SEQPACKET)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &sco_sock_ops;
-+
-+ if (!(sk = sco_sock_alloc(sock, protocol, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ sco_sock_init(sk, NULL);
-+ return 0;
-+}
-+
-+static int sco_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
-+{
-+ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
-+ struct sock *sk = sock->sk;
-+ bdaddr_t *src = &sa->sco_bdaddr;
-+ int err = 0;
-+
-+ BT_DBG("sk %p %s", sk, batostr(&sa->sco_bdaddr));
-+
-+ if (!addr || addr->sa_family != AF_BLUETOOTH)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_OPEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ write_lock_bh(&sco_sk_list.lock);
-+
-+ if (bacmp(src, BDADDR_ANY) && __sco_get_sock_by_addr(src)) {
-+ err = -EADDRINUSE;
-+ } else {
-+ /* Save source address */
-+ bacpy(&bluez_pi(sk)->src, &sa->sco_bdaddr);
-+ sk->state = BT_BOUND;
-+ }
-+
-+ write_unlock_bh(&sco_sk_list.lock);
-+
-+done:
-+ release_sock(sk);
-+
-+ return err;
-+}
-+
-+static int sco_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
-+{
-+ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_sco))
-+ return -EINVAL;
-+
-+ if (sk->state != BT_OPEN && sk->state != BT_BOUND)
-+ return -EBADFD;
-+
-+ if (sk->type != SOCK_SEQPACKET)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ /* Set destination address and psm */
-+ bacpy(&bluez_pi(sk)->dst, &sa->sco_bdaddr);
-+
-+ if ((err = sco_connect(sk)))
-+ goto done;
-+
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_listen(struct socket *sock, int backlog)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p backlog %d", sk, backlog);
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ sk->max_ack_backlog = backlog;
-+ sk->ack_backlog = 0;
-+ sk->state = BT_LISTEN;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_accept(struct socket *sock, struct socket *newsock, int flags)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct sock *sk = sock->sk, *ch;
-+ long timeo;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
-+
-+ BT_DBG("sk %p timeo %ld", sk, timeo);
-+
-+ /* Wait for an incoming connection. (wake-one). */
-+ add_wait_queue_exclusive(sk->sleep, &wait);
-+ while (!(ch = bluez_accept_dequeue(sk, newsock))) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ if (err)
-+ goto done;
-+
-+ newsock->state = SS_CONNECTED;
-+
-+ BT_DBG("new socket %p", ch);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int sco_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
-+{
-+ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ addr->sa_family = AF_BLUETOOTH;
-+ *len = sizeof(struct sockaddr_sco);
-+
-+ if (peer)
-+ bacpy(&sa->sco_bdaddr, &bluez_pi(sk)->dst);
-+ else
-+ bacpy(&sa->sco_bdaddr, &bluez_pi(sk)->src);
-+
-+ return 0;
-+}
-+
-+static int sco_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (sk->err)
-+ return sock_error(sk);
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state == BT_CONNECTED)
-+ err = sco_send_frame(sk, msg, len);
-+ else
-+ err = -ENOTCONN;
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ struct sco_options opts;
-+ struct sco_conninfo cinfo;
-+ int len, err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (get_user(len, optlen))
-+ return -EFAULT;
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ case SCO_OPTIONS:
-+ if (sk->state != BT_CONNECTED) {
-+ err = -ENOTCONN;
-+ break;
-+ }
-+
-+ opts.mtu = sco_pi(sk)->conn->mtu;
-+
-+ BT_DBG("mtu %d", opts.mtu);
-+
-+ len = MIN(len, sizeof(opts));
-+ if (copy_to_user(optval, (char *)&opts, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ case SCO_CONNINFO:
-+ if (sk->state != BT_CONNECTED) {
-+ err = -ENOTCONN;
-+ break;
-+ }
-+
-+ cinfo.hci_handle = sco_pi(sk)->conn->hcon->handle;
-+
-+ len = MIN(len, sizeof(cinfo));
-+ if (copy_to_user(optval, (char *)&cinfo, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int sco_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sco_sock_close(sk);
-+ if (sk->linger) {
-+ lock_sock(sk);
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ release_sock(sk);
-+ }
-+
-+ sock_orphan(sk);
-+ sco_sock_kill(sk);
-+ return err;
-+}
-+
-+static void __sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ BT_DBG("conn %p", conn);
-+
-+ sco_pi(sk)->conn = conn;
-+ conn->sk = sk;
-+
-+ if (parent)
-+ bluez_accept_enqueue(parent, sk);
-+}
-+
-+static inline int sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ int err = 0;
-+
-+ sco_conn_lock(conn);
-+ if (conn->sk) {
-+ err = -EBUSY;
-+ } else {
-+ __sco_chan_add(conn, sk, parent);
-+ }
-+ sco_conn_unlock(conn);
-+ return err;
-+}
-+
-+static inline struct sock * sco_chan_get(struct sco_conn *conn)
-+{
-+ struct sock *sk = NULL;
-+ sco_conn_lock(conn);
-+ sk = conn->sk;
-+ sco_conn_unlock(conn);
-+ return sk;
-+}
-+
-+/* Delete channel.
-+ * Must be called on the locked socket. */
-+static void sco_chan_del(struct sock *sk, int err)
-+{
-+ struct sco_conn *conn;
-+
-+ conn = sco_pi(sk)->conn;
-+
-+ BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
-+
-+ if (conn) {
-+ sco_conn_lock(conn);
-+ conn->sk = NULL;
-+ sco_pi(sk)->conn = NULL;
-+ sco_conn_unlock(conn);
-+ hci_conn_put(conn->hcon);
-+ }
-+
-+ sk->state = BT_CLOSED;
-+ sk->err = err;
-+ sk->state_change(sk);
-+
-+ sk->zapped = 1;
-+}
-+
-+static void sco_conn_ready(struct sco_conn *conn)
-+{
-+ struct sock *parent, *sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ sco_conn_lock(conn);
-+
-+ if ((sk = conn->sk)) {
-+ sco_sock_clear_timer(sk);
-+ bh_lock_sock(sk);
-+ sk->state = BT_CONNECTED;
-+ sk->state_change(sk);
-+ bh_unlock_sock(sk);
-+ } else {
-+ parent = sco_get_sock_listen(conn->src);
-+ if (!parent)
-+ goto done;
-+
-+ bh_lock_sock(parent);
-+
-+ sk = sco_sock_alloc(NULL, BTPROTO_SCO, GFP_ATOMIC);
-+ if (!sk) {
-+ bh_unlock_sock(parent);
-+ goto done;
-+ }
-+
-+ sco_sock_init(sk, parent);
-+
-+ bacpy(&bluez_pi(sk)->src, conn->src);
-+ bacpy(&bluez_pi(sk)->dst, conn->dst);
-+
-+ hci_conn_hold(conn->hcon);
-+ __sco_chan_add(conn, sk, parent);
-+
-+ sk->state = BT_CONNECTED;
-+
-+ /* Wake up parent */
-+ parent->data_ready(parent, 1);
-+
-+ bh_unlock_sock(parent);
-+ }
-+
-+done:
-+ sco_conn_unlock(conn);
-+}
-+
-+/* ----- SCO interface with lower layer (HCI) ----- */
-+int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
-+{
-+ BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
-+
-+ /* Always accept connection */
-+ return HCI_LM_ACCEPT;
-+}
-+
-+int sco_connect_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status);
-+
-+ if (hcon->type != SCO_LINK)
-+ return 0;
-+
-+ if (!status) {
-+ struct sco_conn *conn;
-+
-+ conn = sco_conn_add(hcon, status);
-+ if (conn)
-+ sco_conn_ready(conn);
-+ } else
-+ sco_conn_del(hcon, bterr(status));
-+
-+ return 0;
-+}
-+
-+int sco_disconn_ind(struct hci_conn *hcon, __u8 reason)
-+{
-+ BT_DBG("hcon %p reason %d", hcon, reason);
-+
-+ if (hcon->type != SCO_LINK)
-+ return 0;
-+
-+ sco_conn_del(hcon, bterr(reason));
-+ return 0;
-+}
-+
-+int sco_recv_scodata(struct hci_conn *hcon, struct sk_buff *skb)
-+{
-+ struct sco_conn *conn = hcon->sco_data;
-+
-+ if (!conn)
-+ goto drop;
-+
-+ BT_DBG("conn %p len %d", conn, skb->len);
-+
-+ if (skb->len) {
-+ sco_recv_frame(conn, skb);
-+ return 0;
-+ }
-+
-+drop:
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+/* ----- Proc fs support ------ */
-+static int sco_sock_dump(char *buf, struct bluez_sock_list *list)
-+{
-+ struct sco_pinfo *pi;
-+ struct sock *sk;
-+ char *ptr = buf;
-+
-+ write_lock_bh(&list->lock);
-+
-+ for (sk = list->head; sk; sk = sk->next) {
-+ pi = sco_pi(sk);
-+ ptr += sprintf(ptr, "%s %s %d\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ sk->state);
-+ }
-+
-+ write_unlock_bh(&list->lock);
-+
-+ ptr += sprintf(ptr, "\n");
-+
-+ return ptr - buf;
-+}
-+
-+static int sco_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
-+{
-+ char *ptr = buf;
-+ int len;
-+
-+ BT_DBG("count %d, offset %ld", count, offset);
-+
-+ ptr += sco_sock_dump(ptr, &sco_sk_list);
-+ len = ptr - buf;
-+
-+ if (len <= count + offset)
-+ *eof = 1;
-+
-+ *start = buf + offset;
-+ len -= offset;
-+
-+ if (len > count)
-+ len = count;
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+
-+static struct proto_ops sco_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: sco_sock_release,
-+ bind: sco_sock_bind,
-+ connect: sco_sock_connect,
-+ listen: sco_sock_listen,
-+ accept: sco_sock_accept,
-+ getname: sco_sock_getname,
-+ sendmsg: sco_sock_sendmsg,
-+ recvmsg: bluez_sock_recvmsg,
-+ poll: bluez_sock_poll,
-+ socketpair: sock_no_socketpair,
-+ ioctl: sock_no_ioctl,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sco_sock_setsockopt,
-+ getsockopt: sco_sock_getsockopt,
-+ mmap: sock_no_mmap
-+};
-+
-+static struct net_proto_family sco_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: sco_sock_create
-+};
-+
-+static struct hci_proto sco_hci_proto = {
-+ name: "SCO",
-+ id: HCI_PROTO_SCO,
-+ connect_ind: sco_connect_ind,
-+ connect_cfm: sco_connect_cfm,
-+ disconn_ind: sco_disconn_ind,
-+ recv_scodata: sco_recv_scodata,
-+};
-+
-+int __init sco_init(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_SCO, &sco_sock_family_ops))) {
-+ BT_ERR("Can't register SCO socket layer");
-+ return err;
-+ }
-+
-+ if ((err = hci_register_proto(&sco_hci_proto))) {
-+ BT_ERR("Can't register SCO protocol");
-+ return err;
-+ }
-+
-+ create_proc_read_entry("bluetooth/sco", 0, 0, sco_read_proc, NULL);
-+
-+ BT_INFO("BlueZ SCO ver %s Copyright (C) 2000,2001 Qualcomm Inc", VERSION);
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ return 0;
-+}
-+
-+void sco_cleanup(void)
-+{
-+ int err;
-+
-+ remove_proc_entry("bluetooth/sco", NULL);
-+
-+ /* Unregister socket, protocol and notifier */
-+ if ((err = bluez_sock_unregister(BTPROTO_SCO)))
-+ BT_ERR("Can't unregister SCO socket layer %d", err);
-+
-+ if ((err = hci_unregister_proto(&sco_hci_proto)))
-+ BT_ERR("Can't unregister SCO protocol %d", err);
-+}
-+
-+module_init(sco_init);
-+module_exit(sco_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_DESCRIPTION("BlueZ SCO ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/syms.c linux-2.4.18-mh15/net/bluetooth/syms.c
---- linux-2.4.18/net/bluetooth/syms.c 2001-09-07 18:28:38.000000000 +0200
-+++ linux-2.4.18-mh15/net/bluetooth/syms.c 2004-08-01 16:26:23.000000000 +0200
-@@ -25,7 +25,7 @@
- /*
- * BlueZ symbols.
- *
-- * $Id: syms.c,v 1.1 2001/07/12 19:31:24 maxk Exp $
-+ * $Id: syms.c,v 1.1 2002/03/08 21:06:59 maxk Exp $
- */
-
- #include <linux/config.h>
-@@ -39,25 +39,28 @@
- #include <linux/socket.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
-
- /* HCI Core */
- EXPORT_SYMBOL(hci_register_dev);
- EXPORT_SYMBOL(hci_unregister_dev);
-+EXPORT_SYMBOL(hci_suspend_dev);
-+EXPORT_SYMBOL(hci_resume_dev);
-+
- EXPORT_SYMBOL(hci_register_proto);
- EXPORT_SYMBOL(hci_unregister_proto);
--EXPORT_SYMBOL(hci_register_notifier);
--EXPORT_SYMBOL(hci_unregister_notifier);
-
-+EXPORT_SYMBOL(hci_get_route);
- EXPORT_SYMBOL(hci_connect);
--EXPORT_SYMBOL(hci_disconnect);
- EXPORT_SYMBOL(hci_dev_get);
-+EXPORT_SYMBOL(hci_conn_auth);
-+EXPORT_SYMBOL(hci_conn_encrypt);
-
- EXPORT_SYMBOL(hci_recv_frame);
- EXPORT_SYMBOL(hci_send_acl);
- EXPORT_SYMBOL(hci_send_sco);
--EXPORT_SYMBOL(hci_send_raw);
-+EXPORT_SYMBOL(hci_send_cmd);
-+EXPORT_SYMBOL(hci_si_event);
-
- /* BlueZ lib */
- EXPORT_SYMBOL(bluez_dump);
-@@ -68,5 +71,11 @@
- /* BlueZ sockets */
- EXPORT_SYMBOL(bluez_sock_register);
- EXPORT_SYMBOL(bluez_sock_unregister);
-+EXPORT_SYMBOL(bluez_sock_init);
- EXPORT_SYMBOL(bluez_sock_link);
- EXPORT_SYMBOL(bluez_sock_unlink);
-+EXPORT_SYMBOL(bluez_sock_recvmsg);
-+EXPORT_SYMBOL(bluez_sock_poll);
-+EXPORT_SYMBOL(bluez_accept_enqueue);
-+EXPORT_SYMBOL(bluez_accept_dequeue);
-+EXPORT_SYMBOL(bluez_sock_wait_state);
-diff -urN linux-2.4.18/net/netsyms.c linux-2.4.18-mh15/net/netsyms.c
---- linux-2.4.18/net/netsyms.c 2002-02-25 20:38:14.000000000 +0100
-+++ linux-2.4.18-mh15/net/netsyms.c 2004-08-01 16:26:23.000000000 +0200
-@@ -159,6 +159,7 @@
- EXPORT_SYMBOL(put_cmsg);
- EXPORT_SYMBOL(sock_kmalloc);
- EXPORT_SYMBOL(sock_kfree_s);
-+EXPORT_SYMBOL(sockfd_lookup);
-
- #ifdef CONFIG_FILTER
- EXPORT_SYMBOL(sk_run_filter);
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/bluetooth-patch-2.4.18-mh9.diff b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/bluetooth-patch-2.4.18-mh9.diff
deleted file mode 100644
index 38e7e24dab..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/bluetooth-patch-2.4.18-mh9.diff
+++ /dev/null
@@ -1,30831 +0,0 @@
-diff -urN linux-2.4.18/CREDITS linux-2.4.18-mh9/CREDITS
---- linux-2.4.18/CREDITS Mon Feb 25 20:37:50 2002
-+++ linux-2.4.18-mh9/CREDITS Mon Aug 25 18:38:09 2003
-@@ -1317,6 +1317,14 @@
- S: Provo, Utah 84606-5607
- S: USA
-
-+N: Marcel Holtmann
-+E: marcel@holtmann.org
-+W: http://www.holtmann.org
-+D: Author and maintainer of the various Bluetooth HCI drivers
-+D: Author and maintainer of the CAPI message transport protocol driver
-+D: Various other Bluetooth related patches, cleanups and fixes
-+S: Germany
-+
- N: Rob W. W. Hooft
- E: hooft@EMBL-Heidelberg.DE
- D: Shared libs for graphics-tools and for the f2c compiler
-diff -urN linux-2.4.18/Documentation/Configure.help linux-2.4.18-mh9/Documentation/Configure.help
---- linux-2.4.18/Documentation/Configure.help Mon Feb 25 20:37:51 2002
-+++ linux-2.4.18-mh9/Documentation/Configure.help Mon Aug 25 18:38:10 2003
-@@ -2824,14 +2824,6 @@
-
- If unsure, say N.
-
--HCI EMU (virtual device) driver
--CONFIG_BLUEZ_HCIEMU
-- Bluetooth Virtual HCI device driver.
-- This driver is required if you want to use HCI Emulation software.
--
-- Say Y here to compile support for Virtual HCI devices into the
-- kernel or say M to compile it as module (hci_usb.o).
--
- # Choice: alphatype
- Alpha system type
- CONFIG_ALPHA_GENERIC
-@@ -11037,6 +11029,12 @@
-
- If unsure, say N.
-
-+Hotplug firmware loading support (EXPERIMENTAL)
-+CONFIG_FW_LOADER
-+ This option is provided for the case where no in-kernel-tree modules require
-+ hotplug firmware loading support, but a module built outside the kernel tree
-+ does.
-+
- Use PCI shared memory for NIC registers
- CONFIG_TULIP_MMIO
- Use PCI shared memory for the NIC registers, rather than going through
-@@ -19870,11 +19868,15 @@
- Bluetooth can be found at <http://www.bluetooth.com/>.
-
- Linux Bluetooth subsystem consist of several layers:
-- HCI Core (device and connection manager, scheduler)
-+ BlueZ Core (HCI device and connection manager, scheduler)
- HCI Device drivers (interface to the hardware)
- L2CAP Module (L2CAP protocol)
-+ SCO Module (SCO links)
-+ RFCOMM Module (RFCOMM protocol)
-+ BNEP Module (BNEP protocol)
-+ CMTP Module (CMTP protocol)
-
-- Say Y here to enable Linux Bluetooth support and to build HCI Core
-+ Say Y here to enable Linux Bluetooth support and to build BlueZ Core
- layer.
-
- To use Linux Bluetooth subsystem, you will need several user-space
-@@ -19882,7 +19884,7 @@
- Bluetooth kernel modules are provided in the BlueZ package.
- For more information, see <http://bluez.sourceforge.net/>.
-
-- If you want to compile HCI Core as module (hci.o) say M here.
-+ If you want to compile BlueZ Core as module (bluez.o) say M here.
-
- L2CAP protocol support
- CONFIG_BLUEZ_L2CAP
-@@ -19893,15 +19895,91 @@
- Say Y here to compile L2CAP support into the kernel or say M to
- compile it as module (l2cap.o).
-
-+SCO links support
-+CONFIG_BLUEZ_SCO
-+ SCO link provides voice transport over Bluetooth. SCO support is
-+ required for voice applications like Headset and Audio.
-+
-+ Say Y here to compile SCO support into the kernel or say M to
-+ compile it as module (sco.o).
-+
-+RFCOMM protocol support
-+CONFIG_BLUEZ_RFCOMM
-+ RFCOMM provides connection oriented stream transport. RFCOMM
-+ support is required for Dialup Networking, OBEX and other Bluetooth
-+ applications.
-+
-+ Say Y here to compile RFCOMM support into the kernel or say M to
-+ compile it as module (rfcomm.o).
-+
-+RFCOMM TTY emulation support
-+CONFIG_BLUEZ_RFCOMM_TTY
-+ This option enables TTY emulation support for RFCOMM channels.
-+
-+BNEP protocol support
-+CONFIG_BLUEZ_BNEP
-+ BNEP (Bluetooth Network Encapsulation Protocol) is Ethernet
-+ emulation layer on top of Bluetooth. BNEP is required for Bluetooth
-+ PAN (Personal Area Network).
-+
-+ To use BNEP, you will need user-space utilities provided in the
-+ BlueZ-PAN package.
-+ For more information, see <http://bluez.sourceforge.net>.
-+
-+ Say Y here to compile BNEP support into the kernel or say M to
-+ compile it as module (bnep.o).
-+
-+CMTP protocol support
-+CONFIG_BLUEZ_CMTP
-+ CMTP (CAPI Message Transport Protocol) is a transport layer
-+ for CAPI messages. CMTP is required for the Bluetooth Common
-+ ISDN Access Profile.
-+
-+ Say Y here to compile CMTP support into the kernel or say M to
-+ compile it as module (cmtp.o).
-+
-+BNEP multicast filter support
-+CONFIG_BLUEZ_BNEP_MC_FILTER
-+ This option enables the multicast filter support for BNEP.
-+
-+BNEP protocol filter support
-+CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ This option enables the protocol filter support for BNEP.
-+
- HCI UART driver
- CONFIG_BLUEZ_HCIUART
- Bluetooth HCI UART driver.
- This driver is required if you want to use Bluetooth devices with
-- serial port interface.
-+ serial port interface. You will also need this driver if you have
-+ UART based Bluetooth PCMCIA and CF devices like Xircom Credit Card
-+ adapter and BrainBoxes Bluetooth PC Card.
-
- Say Y here to compile support for Bluetooth UART devices into the
- kernel or say M to compile it as module (hci_uart.o).
-
-+HCI UART (H4) protocol support
-+CONFIG_BLUEZ_HCIUART_H4
-+ UART (H4) is serial protocol for communication between Bluetooth
-+ device and host. This protocol is required for most Bluetooth devices
-+ with UART interface, including PCMCIA and CF cards.
-+
-+ Say Y here to compile support for HCI UART (H4) protocol.
-+
-+HCI BCSP protocol support
-+CONFIG_BLUEZ_HCIUART_BCSP
-+ BCSP (BlueCore Serial Protocol) is serial protocol for communication
-+ between Bluetooth device and host. This protocol is required for non
-+ USB Bluetooth devices based on CSR BlueCore chip, including PCMCIA and
-+ CF cards.
-+
-+ Say Y here to compile support for HCI BCSP protocol.
-+
-+HCI BCSP transmit CRC with every BCSP packet
-+CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ If you say Y here, a 16-bit CRC checksum will be transmitted along with
-+ every BCSP (BlueCore Serial Protocol) packet sent to the Bluetooth chip.
-+ This increases reliability, but slightly reduces efficiency.
-+
- HCI USB driver
- CONFIG_BLUEZ_HCIUSB
- Bluetooth HCI USB driver.
-@@ -19911,13 +19989,90 @@
- Say Y here to compile support for Bluetooth USB devices into the
- kernel or say M to compile it as module (hci_usb.o).
-
--HCI VHCI virtual HCI device driver
-+HCI USB SCO (voice) support
-+CONFIG_BLUEZ_USB_SCO
-+ This option enables the SCO support in the HCI USB driver. You need this
-+ to transmit voice data with your Bluetooth USB device. And your device
-+ must also support sending SCO data over the HCI layer, because some of
-+ them sends the SCO data to an internal PCM adapter.
-+
-+ Say Y here to compile support for HCI SCO data.
-+
-+HCI USB zero packet support
-+CONFIG_BLUEZ_USB_ZERO_PACKET
-+ This option is provided only as a work around for buggy Bluetooth USB
-+ devices. Do NOT enable it unless you know for sure that your device
-+ requires zero packets.
-+
-+ Most people should say N here.
-+
-+HCI VHCI Virtual HCI device driver
- CONFIG_BLUEZ_HCIVHCI
- Bluetooth Virtual HCI device driver.
- This driver is required if you want to use HCI Emulation software.
-
- Say Y here to compile support for virtual HCI devices into the
- kernel or say M to compile it as module (hci_vhci.o).
-+
-+HCI BFUSB device driver
-+CONFIG_BLUEZ_HCIBFUSB
-+ Bluetooth HCI BlueFRITZ! USB driver.
-+ This driver provides support for Bluetooth USB devices with AVM
-+ interface:
-+ AVM BlueFRITZ! USB
-+
-+ Say Y here to compile support for HCI BFUSB devices into the
-+ kernel or say M to compile it as module (bfusb.o).
-+
-+HCI DTL1 (PC Card) device driver
-+CONFIG_BLUEZ_HCIDTL1
-+ Bluetooth HCI DTL1 (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ Nokia DTL1 interface:
-+ Nokia Bluetooth Card
-+ Socket Bluetooth CF Card
-+
-+ Say Y here to compile support for HCI DTL1 devices into the
-+ kernel or say M to compile it as module (dtl1_cs.o).
-+
-+HCI BT3C (PC Card) device driver
-+CONFIG_BLUEZ_HCIBT3C
-+ Bluetooth HCI BT3C (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ 3Com BT3C interface:
-+ 3Com Bluetooth Card (3CRWB6096)
-+ HP Bluetooth Card
-+
-+ The HCI BT3C driver uses external firmware loader program provided in
-+ the BlueFW package. For more information, see <http://bluez.sf.net>.
-+
-+ Say Y here to compile support for HCI BT3C devices into the
-+ kernel or say M to compile it as module (bt3c_cs.o).
-+
-+HCI BlueCard (PC Card) device driver
-+CONFIG_BLUEZ_HCIBLUECARD
-+ Bluetooth HCI BlueCard (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ Anycom BlueCard interface:
-+ Anycom Bluetooth PC Card
-+ Anycom Bluetooth CF Card
-+
-+ Say Y here to compile support for HCI BlueCard devices into the
-+ kernel or say M to compile it as module (bluecard_cs.o).
-+
-+HCI UART (PC Card) device driver
-+CONFIG_BLUEZ_HCIBTUART
-+ Bluetooth HCI UART (PC Card) driver.
-+ This driver provides support for Bluetooth PCMCIA devices with
-+ an UART interface:
-+ Xircom CreditCard Bluetooth Adapter
-+ Xircom RealPort2 Bluetooth Adapter
-+ Sphinx PICO Card
-+ H-Soft blue+Card
-+ Cyber-blue Compact Flash Card
-+
-+ Say Y here to compile support for HCI UART devices into the
-+ kernel or say M to compile it as module (btuart_cs.o).
-
- # The following options are for Linux when running on the Hitachi
- # SuperH family of RISC microprocessors.
-diff -urN linux-2.4.18/Documentation/firmware_class/README linux-2.4.18-mh9/Documentation/firmware_class/README
---- linux-2.4.18/Documentation/firmware_class/README Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/Documentation/firmware_class/README Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,58 @@
-+
-+ request_firmware() hotplug interface:
-+ ------------------------------------
-+ Copyright (C) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+
-+ Why:
-+ ---
-+
-+ Today, the most extended way to use firmware in the Linux kernel is linking
-+ it statically in a header file. Which has political and technical issues:
-+
-+ 1) Some firmware is not legal to redistribute.
-+ 2) The firmware occupies memory permanently, even though it often is just
-+ used once.
-+ 3) Some people, like the Debian crowd, don't consider some firmware free
-+ enough and remove entire drivers (e.g.: keyspan).
-+
-+ about in-kernel persistence:
-+ ---------------------------
-+ Under some circumstances, as explained below, it would be interesting to keep
-+ firmware images in non-swappable kernel memory or even in the kernel image
-+ (probably within initramfs).
-+
-+ Note that this functionality has not been implemented.
-+
-+ - Why OPTIONAL in-kernel persistence may be a good idea sometimes:
-+
-+ - If the device that needs the firmware is needed to access the
-+ filesystem. When upon some error the device has to be reset and the
-+ firmware reloaded, it won't be possible to get it from userspace.
-+ e.g.:
-+ - A diskless client with a network card that needs firmware.
-+ - The filesystem is stored in a disk behind an scsi device
-+ that needs firmware.
-+ - Replacing buggy DSDT/SSDT ACPI tables on boot.
-+ Note: this would require the persistent objects to be included
-+ within the kernel image, probably within initramfs.
-+
-+ And the same device can be needed to access the filesystem or not depending
-+ on the setup, so I think that the choice on what firmware to make
-+ persistent should be left to userspace.
-+
-+ - Why register_firmware()+__init can be useful:
-+ - For boot devices needing firmware.
-+ - To make the transition easier:
-+ The firmware can be declared __init and register_firmware()
-+ called on module_init. Then the firmware is warranted to be
-+ there even if "firmware hotplug userspace" is not there yet or
-+ it doesn't yet provide the needed firmware.
-+ Once the firmware is widely available in userspace, it can be
-+ removed from the kernel. Or made optional (CONFIG_.*_FIRMWARE).
-+
-+ In either case, if firmware hotplug support is there, it can move the
-+ firmware out of kernel memory into the real filesystem for later
-+ usage.
-+
-+ Note: If persistence is implemented on top of initramfs,
-+ register_firmware() may not be appropriate.
-diff -urN linux-2.4.18/Documentation/firmware_class/firmware_sample_driver.c linux-2.4.18-mh9/Documentation/firmware_class/firmware_sample_driver.c
---- linux-2.4.18/Documentation/firmware_class/firmware_sample_driver.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/Documentation/firmware_class/firmware_sample_driver.c Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,121 @@
-+/*
-+ * firmware_sample_driver.c -
-+ *
-+ * Copyright (c) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+ *
-+ * Sample code on how to use request_firmware() from drivers.
-+ *
-+ * Note that register_firmware() is currently useless.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/string.h>
-+
-+#include "linux/firmware.h"
-+
-+#define WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+char __init inkernel_firmware[] = "let's say that this is firmware\n";
-+#endif
-+
-+static char ghost_device[] = "ghost0";
-+
-+static void sample_firmware_load(char *firmware, int size)
-+{
-+ u8 buf[size+1];
-+ memcpy(buf, firmware, size);
-+ buf[size] = '\0';
-+ printk("firmware_sample_driver: firmware: %s\n", buf);
-+}
-+
-+static void sample_probe_default(void)
-+{
-+ /* uses the default method to get the firmware */
-+ const struct firmware *fw_entry;
-+ printk("firmware_sample_driver: a ghost device got inserted :)\n");
-+
-+ if(request_firmware(&fw_entry, "sample_driver_fw", ghost_device)!=0)
-+ {
-+ printk(KERN_ERR
-+ "firmware_sample_driver: Firmware not available\n");
-+ return;
-+ }
-+
-+ sample_firmware_load(fw_entry->data, fw_entry->size);
-+
-+ release_firmware(fw_entry);
-+
-+ /* finish setting up the device */
-+}
-+static void sample_probe_specific(void)
-+{
-+ /* Uses some specific hotplug support to get the firmware from
-+ * userspace directly into the hardware, or via some sysfs file */
-+
-+ /* NOTE: This currently doesn't work */
-+
-+ printk("firmware_sample_driver: a ghost device got inserted :)\n");
-+
-+ if(request_firmware(NULL, "sample_driver_fw", ghost_device)!=0)
-+ {
-+ printk(KERN_ERR
-+ "firmware_sample_driver: Firmware load failed\n");
-+ return;
-+ }
-+
-+ /* request_firmware blocks until userspace finished, so at
-+ * this point the firmware should be already in the device */
-+
-+ /* finish setting up the device */
-+}
-+static void sample_probe_async_cont(const struct firmware *fw, void *context)
-+{
-+ if(!fw){
-+ printk(KERN_ERR
-+ "firmware_sample_driver: firmware load failed\n");
-+ return;
-+ }
-+
-+ printk("firmware_sample_driver: device pointer \"%s\"\n",
-+ (char *)context);
-+ sample_firmware_load(fw->data, fw->size);
-+}
-+static void sample_probe_async(void)
-+{
-+ /* Let's say that I can't sleep */
-+ int error;
-+ error = request_firmware_nowait (THIS_MODULE,
-+ "sample_driver_fw", ghost_device,
-+ "my device pointer",
-+ sample_probe_async_cont);
-+ if(error){
-+ printk(KERN_ERR
-+ "firmware_sample_driver:"
-+ " request_firmware_nowait failed\n");
-+ }
-+}
-+
-+static int sample_init(void)
-+{
-+#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE
-+ register_firmware("sample_driver_fw", inkernel_firmware,
-+ sizeof(inkernel_firmware));
-+#endif
-+ /* since there is no real hardware insertion I just call the
-+ * sample probe functions here */
-+ sample_probe_specific();
-+ sample_probe_default();
-+ sample_probe_async();
-+ return 0;
-+}
-+static void __exit sample_exit(void)
-+{
-+}
-+
-+module_init (sample_init);
-+module_exit (sample_exit);
-+
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/Documentation/firmware_class/hotplug-script linux-2.4.18-mh9/Documentation/firmware_class/hotplug-script
---- linux-2.4.18/Documentation/firmware_class/hotplug-script Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/Documentation/firmware_class/hotplug-script Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,16 @@
-+#!/bin/sh
-+
-+# Simple hotplug script sample:
-+#
-+# Both $DEVPATH and $FIRMWARE are already provided in the environment.
-+
-+HOTPLUG_FW_DIR=/usr/lib/hotplug/firmware/
-+
-+echo 1 > /sysfs/$DEVPATH/loading
-+cat $HOTPLUG_FW_DIR/$FIRMWARE > /sysfs/$DEVPATH/data
-+echo 0 > /sysfs/$DEVPATH/loading
-+
-+# To cancel the load in case of error:
-+#
-+# echo -1 > /sysfs/$DEVPATH/loading
-+#
-diff -urN linux-2.4.18/MAINTAINERS linux-2.4.18-mh9/MAINTAINERS
---- linux-2.4.18/MAINTAINERS Mon Feb 25 20:37:52 2002
-+++ linux-2.4.18-mh9/MAINTAINERS Mon Aug 25 18:38:10 2003
-@@ -252,7 +252,73 @@
- L: linux-kernel@vger.kernel.org
- S: Maintained
-
--BLUETOOTH SUBSYSTEM (BlueZ)
-+BLUETOOTH SUBSYSTEM
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+W: http://bluez.sf.net
-+S: Maintained
-+
-+BLUETOOTH RFCOMM LAYER
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+W: http://bluez.sf.net
-+S: Maintained
-+
-+BLUETOOTH BNEP LAYER
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+W: http://bluez.sf.net
-+S: Maintained
-+
-+BLUETOOTH CMTP LAYER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+W: http://www.holtmann.org/linux/bluetooth/
-+S: Maintained
-+
-+BLUETOOTH HCI USB DRIVER
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+W: http://bluez.sf.net
-+S: Maintained
-+
-+BLUETOOTH HCI UART DRIVER
-+P: Maxim Krasnyansky
-+M: maxk@qualcomm.com
-+W: http://bluez.sf.net
-+S: Maintained
-+
-+BLUETOOTH HCI BFUSB DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+W: http://www.holtmann.org/linux/bluetooth/
-+S: Maintained
-+
-+BLUETOOTH HCI DTL1 DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+W: http://www.holtmann.org/linux/bluetooth/
-+S: Maintained
-+
-+BLUETOOTH HCI BLUECARD DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+W: http://www.holtmann.org/linux/bluetooth/
-+S: Maintained
-+
-+BLUETOOTH HCI BT3C DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+W: http://www.holtmann.org/linux/bluetooth/
-+S: Maintained
-+
-+BLUETOOTH HCI BTUART DRIVER
-+P: Marcel Holtmann
-+M: marcel@holtmann.org
-+W: http://www.holtmann.org/linux/bluetooth/
-+S: Maintained
-+
-+BLUETOOTH HCI VHCI DRIVER
- P: Maxim Krasnyansky
- M: maxk@qualcomm.com
- W: http://bluez.sf.net
-diff -urN linux-2.4.18/arch/alpha/config.in linux-2.4.18-mh9/arch/alpha/config.in
---- linux-2.4.18/arch/alpha/config.in Wed Nov 21 00:49:31 2001
-+++ linux-2.4.18-mh9/arch/alpha/config.in Mon Aug 25 18:38:10 2003
-@@ -371,9 +371,7 @@
- source drivers/usb/Config.in
- source drivers/input/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/arm/config.in linux-2.4.18-mh9/arch/arm/config.in
---- linux-2.4.18/arch/arm/config.in Fri Nov 9 22:58:02 2001
-+++ linux-2.4.18-mh9/arch/arm/config.in Mon Aug 25 18:38:10 2003
-@@ -584,9 +584,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/i386/config.in linux-2.4.18-mh9/arch/i386/config.in
---- linux-2.4.18/arch/i386/config.in Mon Feb 25 20:37:52 2002
-+++ linux-2.4.18-mh9/arch/i386/config.in Mon Aug 25 18:38:10 2003
-@@ -407,9 +407,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/ppc/config.in linux-2.4.18-mh9/arch/ppc/config.in
---- linux-2.4.18/arch/ppc/config.in Mon Feb 25 20:37:55 2002
-+++ linux-2.4.18-mh9/arch/ppc/config.in Mon Aug 25 18:38:10 2003
-@@ -389,9 +389,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Kernel hacking'
-diff -urN linux-2.4.18/arch/sparc/config.in linux-2.4.18-mh9/arch/sparc/config.in
---- linux-2.4.18/arch/sparc/config.in Tue Jun 12 04:15:27 2001
-+++ linux-2.4.18-mh9/arch/sparc/config.in Mon Aug 25 18:38:10 2003
-@@ -251,9 +251,7 @@
-
- source fs/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Watchdog'
-diff -urN linux-2.4.18/arch/sparc64/config.in linux-2.4.18-mh9/arch/sparc64/config.in
---- linux-2.4.18/arch/sparc64/config.in Fri Dec 21 18:41:53 2001
-+++ linux-2.4.18-mh9/arch/sparc64/config.in Mon Aug 25 18:38:10 2003
-@@ -283,9 +283,7 @@
-
- source drivers/usb/Config.in
-
--if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-- source net/bluetooth/Config.in
--fi
-+source net/bluetooth/Config.in
-
- mainmenu_option next_comment
- comment 'Watchdog'
-diff -urN linux-2.4.18/arch/sparc64/kernel/ioctl32.c linux-2.4.18-mh9/arch/sparc64/kernel/ioctl32.c
---- linux-2.4.18/arch/sparc64/kernel/ioctl32.c Mon Feb 25 20:37:56 2002
-+++ linux-2.4.18-mh9/arch/sparc64/kernel/ioctl32.c Mon Aug 25 18:38:10 2003
-@@ -92,6 +92,7 @@
-
- #include <net/bluetooth/bluetooth.h>
- #include <net/bluetooth/hci.h>
-+#include <net/bluetooth/rfcomm.h>
-
- #include <linux/usb.h>
- #include <linux/usbdevice_fs.h>
-@@ -3822,6 +3823,15 @@
- return err;
- }
-
-+/* Bluetooth ioctls */
-+#define HCIUARTSETPROTO _IOW('U', 200, int)
-+#define HCIUARTGETPROTO _IOR('U', 201, int)
-+
-+#define BNEPCONNADD _IOW('B', 200, int)
-+#define BNEPCONNDEL _IOW('B', 201, int)
-+#define BNEPGETCONNLIST _IOR('B', 210, int)
-+#define BNEPGETCONNINFO _IOR('B', 211, int)
-+
- struct mtd_oob_buf32 {
- u32 start;
- u32 length;
-@@ -3878,6 +3888,11 @@
- return ((0 == ret) ? 0 : -EFAULT);
- }
-
-+#define CMTPCONNADD _IOW('C', 200, int)
-+#define CMTPCONNDEL _IOW('C', 201, int)
-+#define CMTPGETCONNLIST _IOR('C', 210, int)
-+#define CMTPGETCONNINFO _IOR('C', 211, int)
-+
- struct ioctl_trans {
- unsigned int cmd;
- unsigned int handler;
-@@ -4540,6 +4555,21 @@
- COMPATIBLE_IOCTL(HCISETSCAN)
- COMPATIBLE_IOCTL(HCISETAUTH)
- COMPATIBLE_IOCTL(HCIINQUIRY)
-+COMPATIBLE_IOCTL(HCIUARTSETPROTO)
-+COMPATIBLE_IOCTL(HCIUARTGETPROTO)
-+COMPATIBLE_IOCTL(RFCOMMCREATEDEV)
-+COMPATIBLE_IOCTL(RFCOMMRELEASEDEV)
-+COMPATIBLE_IOCTL(RFCOMMGETDEVLIST)
-+COMPATIBLE_IOCTL(RFCOMMGETDEVINFO)
-+COMPATIBLE_IOCTL(RFCOMMSTEALDLC)
-+COMPATIBLE_IOCTL(BNEPCONNADD)
-+COMPATIBLE_IOCTL(BNEPCONNDEL)
-+COMPATIBLE_IOCTL(BNEPGETCONNLIST)
-+COMPATIBLE_IOCTL(BNEPGETCONNINFO)
-+COMPATIBLE_IOCTL(CMTPCONNADD)
-+COMPATIBLE_IOCTL(CMTPCONNDEL)
-+COMPATIBLE_IOCTL(CMTPGETCONNLIST)
-+COMPATIBLE_IOCTL(CMTPGETCONNINFO)
- /* Misc. */
- COMPATIBLE_IOCTL(0x41545900) /* ATYIO_CLKR */
- COMPATIBLE_IOCTL(0x41545901) /* ATYIO_CLKW */
-diff -urN linux-2.4.18/drivers/bluetooth/Config.in linux-2.4.18-mh9/drivers/bluetooth/Config.in
---- linux-2.4.18/drivers/bluetooth/Config.in Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/drivers/bluetooth/Config.in Mon Aug 25 18:38:10 2003
-@@ -1,8 +1,34 @@
-+#
-+# Bluetooth HCI device drivers configuration
-+#
-+
- mainmenu_option next_comment
- comment 'Bluetooth device drivers'
-
- dep_tristate 'HCI USB driver' CONFIG_BLUEZ_HCIUSB $CONFIG_BLUEZ $CONFIG_USB
-+if [ "$CONFIG_BLUEZ_HCIUSB" != "n" ]; then
-+ bool ' SCO (voice) support' CONFIG_BLUEZ_USB_SCO
-+ bool ' USB zero packet support' CONFIG_BLUEZ_USB_ZERO_PACKET
-+fi
-+
- dep_tristate 'HCI UART driver' CONFIG_BLUEZ_HCIUART $CONFIG_BLUEZ
--dep_tristate 'HCI VHCI virtual HCI device driver' CONFIG_BLUEZ_HCIVHCI $CONFIG_BLUEZ
-+if [ "$CONFIG_BLUEZ_HCIUART" != "n" ]; then
-+ bool ' UART (H4) protocol support' CONFIG_BLUEZ_HCIUART_H4
-+ bool ' BCSP protocol support' CONFIG_BLUEZ_HCIUART_BCSP
-+ dep_bool ' Transmit CRC with every BCSP packet' CONFIG_BLUEZ_HCIUART_BCSP_TXCRC $CONFIG_BLUEZ_HCIUART_BCSP
-+fi
-+
-+dep_tristate 'HCI BlueFRITZ! USB driver' CONFIG_BLUEZ_HCIBFUSB $CONFIG_BLUEZ $CONFIG_USB
-+
-+dep_tristate 'HCI DTL1 (PC Card) driver' CONFIG_BLUEZ_HCIDTL1 $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI BT3C (PC Card) driver' CONFIG_BLUEZ_HCIBT3C $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI BlueCard (PC Card) driver' CONFIG_BLUEZ_HCIBLUECARD $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI UART (PC Card) driver' CONFIG_BLUEZ_HCIBTUART $CONFIG_PCMCIA $CONFIG_BLUEZ
-+
-+dep_tristate 'HCI VHCI (Virtual HCI device) driver' CONFIG_BLUEZ_HCIVHCI $CONFIG_BLUEZ
-
- endmenu
-+
-diff -urN linux-2.4.18/drivers/bluetooth/Makefile linux-2.4.18-mh9/drivers/bluetooth/Makefile
---- linux-2.4.18/drivers/bluetooth/Makefile Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/drivers/bluetooth/Makefile Mon Aug 25 18:38:10 2003
-@@ -1,11 +1,27 @@
- #
--# Makefile for Bluetooth HCI device drivers.
-+# Makefile for the Linux Bluetooth HCI device drivers
- #
-
- O_TARGET := bluetooth.o
-
-+list-multi := hci_uart.o
-+
- obj-$(CONFIG_BLUEZ_HCIUSB) += hci_usb.o
--obj-$(CONFIG_BLUEZ_HCIUART) += hci_uart.o
- obj-$(CONFIG_BLUEZ_HCIVHCI) += hci_vhci.o
-
-+obj-$(CONFIG_BLUEZ_HCIUART) += hci_uart.o
-+uart-y := hci_ldisc.o
-+uart-$(CONFIG_BLUEZ_HCIUART_H4) += hci_h4.o
-+uart-$(CONFIG_BLUEZ_HCIUART_BCSP) += hci_bcsp.o
-+
-+obj-$(CONFIG_BLUEZ_HCIBFUSB) += bfusb.o
-+
-+obj-$(CONFIG_BLUEZ_HCIDTL1) += dtl1_cs.o
-+obj-$(CONFIG_BLUEZ_HCIBT3C) += bt3c_cs.o
-+obj-$(CONFIG_BLUEZ_HCIBLUECARD) += bluecard_cs.o
-+obj-$(CONFIG_BLUEZ_HCIBTUART) += btuart_cs.o
-+
- include $(TOPDIR)/Rules.make
-+
-+hci_uart.o: $(uart-y)
-+ $(LD) -r -o $@ $(uart-y)
-diff -urN linux-2.4.18/drivers/bluetooth/Makefile.lib linux-2.4.18-mh9/drivers/bluetooth/Makefile.lib
---- linux-2.4.18/drivers/bluetooth/Makefile.lib Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/Makefile.lib Mon Aug 25 18:38:10 2003
-@@ -0,0 +1 @@
-+obj-$(CONFIG_BLUEZ_HCIBFUSB) += firmware_class.o
-diff -urN linux-2.4.18/drivers/bluetooth/bfusb.c linux-2.4.18-mh9/drivers/bluetooth/bfusb.c
---- linux-2.4.18/drivers/bluetooth/bfusb.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/bfusb.c Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,781 @@
-+/*
-+ *
-+ * AVM BlueFRITZ! USB driver
-+ *
-+ * Copyright (C) 2003 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/errno.h>
-+#include <linux/skbuff.h>
-+
-+#include <linux/firmware.h>
-+#include <linux/usb.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+#ifndef CONFIG_BLUEZ_HCIBFUSB_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.1"
-+
-+static struct usb_device_id bfusb_table[] = {
-+ /* AVM BlueFRITZ! USB */
-+ { USB_DEVICE(0x057c, 0x2200) },
-+
-+ { } /* Terminating entry */
-+};
-+
-+MODULE_DEVICE_TABLE(usb, bfusb_table);
-+
-+
-+#define BFUSB_MAX_BLOCK_SIZE 256
-+
-+#define BFUSB_BLOCK_TIMEOUT (HZ * 3)
-+
-+#define BFUSB_TX_PROCESS 1
-+#define BFUSB_TX_WAKEUP 2
-+
-+#define BFUSB_MAX_BULK_TX 1
-+#define BFUSB_MAX_BULK_RX 1
-+
-+struct bfusb {
-+ struct hci_dev hdev;
-+
-+ unsigned long state;
-+
-+ struct usb_device *udev;
-+
-+ unsigned int bulk_in_ep;
-+ unsigned int bulk_out_ep;
-+ unsigned int bulk_pkt_size;
-+
-+ rwlock_t lock;
-+
-+ struct sk_buff_head transmit_q;
-+
-+ struct sk_buff *reassembly;
-+
-+ atomic_t pending_tx;
-+ struct sk_buff_head pending_q;
-+ struct sk_buff_head completed_q;
-+};
-+
-+struct bfusb_scb {
-+ struct urb *urb;
-+};
-+
-+static void bfusb_tx_complete(struct urb *urb);
-+static void bfusb_rx_complete(struct urb *urb);
-+
-+static struct urb *bfusb_get_completed(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+ struct urb *urb = NULL;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ skb = skb_dequeue(&bfusb->completed_q);
-+ if (skb) {
-+ urb = ((struct bfusb_scb *) skb->cb)->urb;
-+ kfree_skb(skb);
-+ }
-+
-+ return urb;
-+}
-+
-+static inline void bfusb_unlink_urbs(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+ struct urb *urb;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ while ((skb = skb_dequeue(&bfusb->pending_q))) {
-+ urb = ((struct bfusb_scb *) skb->cb)->urb;
-+ usb_unlink_urb(urb);
-+ skb_queue_tail(&bfusb->completed_q, skb);
-+ }
-+
-+ while ((urb = bfusb_get_completed(bfusb)))
-+ usb_free_urb(urb);
-+}
-+
-+
-+static int bfusb_send_bulk(struct bfusb *bfusb, struct sk_buff *skb)
-+{
-+ struct bfusb_scb *scb = (void *) skb->cb;
-+ struct urb *urb = bfusb_get_completed(bfusb);
-+ int err, pipe;
-+
-+ BT_DBG("bfusb %p skb %p len %d", bfusb, skb, skb->len);
-+
-+ if (!urb && !(urb = usb_alloc_urb(0)))
-+ return -ENOMEM;
-+
-+ pipe = usb_sndbulkpipe(bfusb->udev, bfusb->bulk_out_ep);
-+
-+ FILL_BULK_URB(urb, bfusb->udev, pipe, skb->data, skb->len,
-+ bfusb_tx_complete, skb);
-+
-+ urb->transfer_flags = USB_QUEUE_BULK;
-+
-+ scb->urb = urb;
-+
-+ skb_queue_tail(&bfusb->pending_q, skb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk tx submit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ skb_unlink(skb);
-+ usb_free_urb(urb);
-+ } else
-+ atomic_inc(&bfusb->pending_tx);
-+
-+ return err;
-+}
-+
-+static void bfusb_tx_wakeup(struct bfusb *bfusb)
-+{
-+ struct sk_buff *skb;
-+
-+ BT_DBG("bfusb %p", bfusb);
-+
-+ if (test_and_set_bit(BFUSB_TX_PROCESS, &bfusb->state)) {
-+ set_bit(BFUSB_TX_WAKEUP, &bfusb->state);
-+ return;
-+ }
-+
-+ do {
-+ clear_bit(BFUSB_TX_WAKEUP, &bfusb->state);
-+
-+ while ((atomic_read(&bfusb->pending_tx) < BFUSB_MAX_BULK_TX) &&
-+ (skb = skb_dequeue(&bfusb->transmit_q))) {
-+ if (bfusb_send_bulk(bfusb, skb) < 0) {
-+ skb_queue_head(&bfusb->transmit_q, skb);
-+ break;
-+ }
-+ }
-+
-+ } while (test_bit(BFUSB_TX_WAKEUP, &bfusb->state));
-+
-+ clear_bit(BFUSB_TX_PROCESS, &bfusb->state);
-+}
-+
-+static void bfusb_tx_complete(struct urb *urb)
-+{
-+ struct sk_buff *skb = (struct sk_buff *) urb->context;
-+ struct bfusb *bfusb = (struct bfusb *) skb->dev;
-+
-+ BT_DBG("bfusb %p urb %p skb %p len %d", bfusb, urb, skb, skb->len);
-+
-+ atomic_dec(&bfusb->pending_tx);
-+
-+ if (!test_bit(HCI_RUNNING, &bfusb->hdev.flags))
-+ return;
-+
-+ if (!urb->status)
-+ bfusb->hdev.stat.byte_tx += skb->len;
-+ else
-+ bfusb->hdev.stat.err_tx++;
-+
-+ read_lock(&bfusb->lock);
-+
-+ skb_unlink(skb);
-+ skb_queue_tail(&bfusb->completed_q, skb);
-+
-+ bfusb_tx_wakeup(bfusb);
-+
-+ read_unlock(&bfusb->lock);
-+}
-+
-+
-+static int bfusb_rx_submit(struct bfusb *bfusb, struct urb *urb)
-+{
-+ struct bfusb_scb *scb;
-+ struct sk_buff *skb;
-+ int err, pipe, size = HCI_MAX_FRAME_SIZE + 32;
-+
-+ BT_DBG("bfusb %p urb %p", bfusb, urb);
-+
-+ if (!urb && !(urb = usb_alloc_urb(0)))
-+ return -ENOMEM;
-+
-+ if (!(skb = bluez_skb_alloc(size, GFP_ATOMIC))) {
-+ usb_free_urb(urb);
-+ return -ENOMEM;
-+ }
-+
-+ skb->dev = (void *) bfusb;
-+
-+ scb = (struct bfusb_scb *) skb->cb;
-+ scb->urb = urb;
-+
-+ pipe = usb_rcvbulkpipe(bfusb->udev, bfusb->bulk_in_ep);
-+
-+ FILL_BULK_URB(urb, bfusb->udev, pipe, skb->data, size,
-+ bfusb_rx_complete, skb);
-+
-+ urb->transfer_flags = USB_QUEUE_BULK;
-+
-+ skb_queue_tail(&bfusb->pending_q, skb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk rx submit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ skb_unlink(skb);
-+ kfree_skb(skb);
-+ usb_free_urb(urb);
-+ }
-+
-+ return err;
-+}
-+
-+static inline int bfusb_recv_block(struct bfusb *bfusb, int hdr, unsigned char *data, int len)
-+{
-+ BT_DBG("bfusb %p hdr 0x%02x data %p len %d", bfusb, hdr, data, len);
-+
-+ if (hdr & 0x10) {
-+ BT_ERR("%s error in block", bfusb->hdev.name);
-+ if (bfusb->reassembly)
-+ kfree_skb(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ return -EIO;
-+ }
-+
-+ if (hdr & 0x04) {
-+ struct sk_buff *skb;
-+ unsigned char pkt_type;
-+ int pkt_len = 0;
-+
-+ if (bfusb->reassembly) {
-+ BT_ERR("%s unexpected start block", bfusb->hdev.name);
-+ kfree_skb(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ }
-+
-+ if (len < 1) {
-+ BT_ERR("%s no packet type found", bfusb->hdev.name);
-+ return -EPROTO;
-+ }
-+
-+ pkt_type = *data++; len--;
-+
-+ switch (pkt_type) {
-+ case HCI_EVENT_PKT:
-+ if (len >= HCI_EVENT_HDR_SIZE) {
-+ hci_event_hdr *hdr = (hci_event_hdr *) data;
-+ pkt_len = HCI_EVENT_HDR_SIZE + hdr->plen;
-+ } else {
-+ BT_ERR("%s event block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ if (len >= HCI_ACL_HDR_SIZE) {
-+ hci_acl_hdr *hdr = (hci_acl_hdr *) data;
-+ pkt_len = HCI_ACL_HDR_SIZE + __le16_to_cpu(hdr->dlen);
-+ } else {
-+ BT_ERR("%s data block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ if (len >= HCI_SCO_HDR_SIZE) {
-+ hci_sco_hdr *hdr = (hci_sco_hdr *) data;
-+ pkt_len = HCI_SCO_HDR_SIZE + hdr->dlen;
-+ } else {
-+ BT_ERR("%s audio block is too short", bfusb->hdev.name);
-+ return -EILSEQ;
-+ }
-+ break;
-+ }
-+
-+ skb = bluez_skb_alloc(pkt_len, GFP_ATOMIC);
-+ if (!skb) {
-+ BT_ERR("%s no memory for the packet", bfusb->hdev.name);
-+ return -ENOMEM;
-+ }
-+
-+ skb->dev = (void *) &bfusb->hdev;
-+ skb->pkt_type = pkt_type;
-+
-+ bfusb->reassembly = skb;
-+ } else {
-+ if (!bfusb->reassembly) {
-+ BT_ERR("%s unexpected continuation block", bfusb->hdev.name);
-+ return -EIO;
-+ }
-+ }
-+
-+ if (len > 0)
-+ memcpy(skb_put(bfusb->reassembly, len), data, len);
-+
-+ if (hdr & 0x08) {
-+ hci_recv_frame(bfusb->reassembly);
-+ bfusb->reassembly = NULL;
-+ }
-+
-+ return 0;
-+}
-+
-+static void bfusb_rx_complete(struct urb *urb)
-+{
-+ struct sk_buff *skb = (struct sk_buff *) urb->context;
-+ struct bfusb *bfusb = (struct bfusb *) skb->dev;
-+ unsigned char *buf = urb->transfer_buffer;
-+ int count = urb->actual_length;
-+ int err, hdr, len;
-+
-+ BT_DBG("bfusb %p urb %p skb %p len %d", bfusb, urb, skb, skb->len);
-+
-+ if (!test_bit(HCI_RUNNING, &bfusb->hdev.flags))
-+ return;
-+
-+ read_lock(&bfusb->lock);
-+
-+ if (urb->status || !count)
-+ goto resubmit;
-+
-+ bfusb->hdev.stat.byte_rx += count;
-+
-+ skb_put(skb, count);
-+
-+ while (count) {
-+ hdr = buf[0] | (buf[1] << 8);
-+
-+ if (hdr & 0x4000) {
-+ len = 0;
-+ count -= 2;
-+ buf += 2;
-+ } else {
-+ len = (buf[2] == 0) ? 256 : buf[2];
-+ count -= 3;
-+ buf += 3;
-+ }
-+
-+ if (count < len) {
-+ BT_ERR("%s block extends over URB buffer ranges",
-+ bfusb->hdev.name);
-+ }
-+
-+ if ((hdr & 0xe1) == 0xc1)
-+ bfusb_recv_block(bfusb, hdr, buf, len);
-+
-+ count -= len;
-+ buf += len;
-+ }
-+
-+ skb_unlink(skb);
-+ kfree_skb(skb);
-+
-+ bfusb_rx_submit(bfusb, urb);
-+
-+ read_unlock(&bfusb->lock);
-+
-+ return;
-+
-+resubmit:
-+ urb->dev = bfusb->udev;
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk resubmit failed urb %p err %d",
-+ bfusb->hdev.name, urb, err);
-+ }
-+
-+ read_unlock(&bfusb->lock);
-+}
-+
-+
-+static int bfusb_open(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+ unsigned long flags;
-+ int i, err;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ if (test_and_set_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ write_lock_irqsave(&bfusb->lock, flags);
-+
-+ err = bfusb_rx_submit(bfusb, NULL);
-+ if (!err) {
-+ for (i = 1; i < BFUSB_MAX_BULK_RX; i++)
-+ bfusb_rx_submit(bfusb, NULL);
-+ } else {
-+ clear_bit(HCI_RUNNING, &hdev->flags);
-+ MOD_DEC_USE_COUNT;
-+ }
-+
-+ write_unlock_irqrestore(&bfusb->lock, flags);
-+
-+ return err;
-+}
-+
-+static int bfusb_flush(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ skb_queue_purge(&bfusb->transmit_q);
-+
-+ return 0;
-+}
-+
-+static int bfusb_close(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+ unsigned long flags;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
-+ write_lock_irqsave(&bfusb->lock, flags);
-+
-+ bfusb_unlink_urbs(bfusb);
-+ bfusb_flush(hdev);
-+
-+ write_unlock_irqrestore(&bfusb->lock, flags);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ return 0;
-+}
-+
-+static int bfusb_send_frame(struct sk_buff *skb)
-+{
-+ struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-+ struct bfusb *bfusb;
-+ struct sk_buff *nskb;
-+ unsigned char buf[3];
-+ int sent = 0, size, count;
-+
-+ BT_DBG("hdev %p skb %p type %d len %d", hdev, skb, skb->pkt_type, skb->len);
-+
-+ if (!hdev) {
-+ BT_ERR("Frame for unknown HCI device (hdev=NULL)");
-+ return -ENODEV;
-+ }
-+
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return -EBUSY;
-+
-+ bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+
-+ count = skb->len;
-+
-+ /* Max HCI frame size seems to be 1511 + 1 */
-+ if (!(nskb = bluez_skb_alloc(count + 32, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for new packet");
-+ return -ENOMEM;
-+ }
-+
-+ nskb->dev = (void *) bfusb;
-+
-+ while (count) {
-+ size = min_t(uint, count, BFUSB_MAX_BLOCK_SIZE);
-+
-+ buf[0] = 0xc1 | ((sent == 0) ? 0x04 : 0) | ((count == size) ? 0x08 : 0);
-+ buf[1] = 0x00;
-+ buf[2] = (size == BFUSB_MAX_BLOCK_SIZE) ? 0 : size;
-+
-+ memcpy(skb_put(nskb, 3), buf, 3);
-+ memcpy(skb_put(nskb, size), skb->data + sent, size);
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ /* Don't send frame with multiple size of bulk max packet */
-+ if ((nskb->len % bfusb->bulk_pkt_size) == 0) {
-+ buf[0] = 0xdd;
-+ buf[1] = 0x00;
-+ memcpy(skb_put(nskb, 2), buf, 2);
-+ }
-+
-+ read_lock(&bfusb->lock);
-+
-+ skb_queue_tail(&bfusb->transmit_q, nskb);
-+ bfusb_tx_wakeup(bfusb);
-+
-+ read_unlock(&bfusb->lock);
-+
-+ kfree_skb(skb);
-+
-+ return 0;
-+}
-+
-+static void bfusb_destruct(struct hci_dev *hdev)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data;
-+
-+ BT_DBG("hdev %p bfusb %p", hdev, bfusb);
-+
-+ kfree(bfusb);
-+}
-+
-+static int bfusb_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+static int bfusb_load_firmware(struct bfusb *bfusb, unsigned char *firmware, int count)
-+{
-+ unsigned char *buf;
-+ int err, pipe, len, size, sent = 0;
-+
-+ BT_DBG("bfusb %p udev %p firmware %p count %d", bfusb, bfusb->udev, firmware, count);
-+
-+ BT_INFO("BlueFRITZ! USB loading firmware");
-+
-+ if (usb_set_configuration(bfusb->udev, 1) < 0) {
-+ BT_ERR("Can't change to loading configuration");
-+ return -EBUSY;
-+ }
-+
-+ buf = kmalloc(BFUSB_MAX_BLOCK_SIZE + 3, GFP_ATOMIC);
-+ if (!buf) {
-+ BT_ERR("Can't allocate memory chunk for firmware");
-+ return -ENOMEM;
-+ }
-+
-+ pipe = usb_sndbulkpipe(bfusb->udev, bfusb->bulk_out_ep);
-+
-+ while (count) {
-+ size = min_t(uint, count, BFUSB_MAX_BLOCK_SIZE + 3);
-+
-+ memcpy(buf, firmware + sent, size);
-+
-+ err = usb_bulk_msg(bfusb->udev, pipe, buf, size,
-+ &len, BFUSB_BLOCK_TIMEOUT);
-+
-+ if (err || (len != size)) {
-+ BT_ERR("Error in firmware loading");
-+ goto error;
-+ }
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ if ((err = usb_bulk_msg(bfusb->udev, pipe, NULL, 0,
-+ &len, BFUSB_BLOCK_TIMEOUT)) < 0) {
-+ BT_ERR("Error in null packet request");
-+ goto error;
-+ }
-+
-+ if ((err = usb_set_configuration(bfusb->udev, 2)) < 0) {
-+ BT_ERR("Can't change to running configuration");
-+ goto error;
-+ }
-+
-+ BT_INFO("BlueFRITZ! USB device ready");
-+
-+ kfree(buf);
-+ return 0;
-+
-+error:
-+ kfree(buf);
-+
-+ pipe = usb_sndctrlpipe(bfusb->udev, 0);
-+
-+ usb_control_msg(bfusb->udev, pipe, USB_REQ_SET_CONFIGURATION,
-+ 0, 0, 0, NULL, 0, BFUSB_BLOCK_TIMEOUT);
-+
-+ return err;
-+}
-+
-+static void *bfusb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id)
-+{
-+ const struct firmware *firmware;
-+ char device[16];
-+ struct usb_interface *iface;
-+ struct usb_interface_descriptor *iface_desc;
-+ struct usb_endpoint_descriptor *bulk_out_ep;
-+ struct usb_endpoint_descriptor *bulk_in_ep;
-+ struct hci_dev *hdev;
-+ struct bfusb *bfusb;
-+
-+ BT_DBG("udev %p ifnum %d id %p", udev, ifnum, id);
-+
-+ /* Check number of endpoints */
-+ iface = &udev->actconfig->interface[0];
-+ iface_desc = &iface->altsetting[0];
-+
-+ if (iface_desc->bNumEndpoints < 2)
-+ return NULL;
-+
-+ bulk_out_ep = &iface_desc->endpoint[0];
-+ bulk_in_ep = &iface_desc->endpoint[1];
-+
-+ if (!bulk_out_ep || !bulk_in_ep) {
-+ BT_ERR("Bulk endpoints not found");
-+ goto done;
-+ }
-+
-+ /* Initialize control structure and load firmware */
-+ if (!(bfusb = kmalloc(sizeof(struct bfusb), GFP_KERNEL))) {
-+ BT_ERR("Can't allocate memory for control structure");
-+ goto done;
-+ }
-+
-+ memset(bfusb, 0, sizeof(struct bfusb));
-+
-+ bfusb->udev = udev;
-+ bfusb->bulk_in_ep = bulk_in_ep->bEndpointAddress;
-+ bfusb->bulk_out_ep = bulk_out_ep->bEndpointAddress;
-+ bfusb->bulk_pkt_size = bulk_out_ep->wMaxPacketSize;
-+
-+ bfusb->lock = RW_LOCK_UNLOCKED;
-+
-+ bfusb->reassembly = NULL;
-+
-+ skb_queue_head_init(&bfusb->transmit_q);
-+ skb_queue_head_init(&bfusb->pending_q);
-+ skb_queue_head_init(&bfusb->completed_q);
-+
-+ snprintf(device, sizeof(device), "bfusb%3.3d%3.3d", udev->bus->busnum, udev->devnum);
-+
-+ if (request_firmware(&firmware, "bfubase.frm", device) < 0) {
-+ BT_ERR("Firmware request failed");
-+ goto error;
-+ }
-+
-+ if (bfusb_load_firmware(bfusb, firmware->data, firmware->size) < 0) {
-+ BT_ERR("Firmware loading failed");
-+ goto release;
-+ }
-+
-+ release_firmware(firmware);
-+
-+ /* Initialize and register HCI device */
-+ hdev = &bfusb->hdev;
-+
-+ hdev->type = HCI_USB;
-+ hdev->driver_data = bfusb;
-+
-+ hdev->open = bfusb_open;
-+ hdev->close = bfusb_close;
-+ hdev->flush = bfusb_flush;
-+ hdev->send = bfusb_send_frame;
-+ hdev->destruct = bfusb_destruct;
-+ hdev->ioctl = bfusb_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ BT_ERR("Can't register HCI device");
-+ goto error;
-+ }
-+
-+ return bfusb;
-+
-+release:
-+ release_firmware(firmware);
-+
-+error:
-+ kfree(bfusb);
-+
-+done:
-+ return NULL;
-+}
-+
-+static void bfusb_disconnect(struct usb_device *udev, void *ptr)
-+{
-+ struct bfusb *bfusb = (struct bfusb *) ptr;
-+ struct hci_dev *hdev = &bfusb->hdev;
-+
-+ BT_DBG("udev %p ptr %p", udev, ptr);
-+
-+ if (!hdev)
-+ return;
-+
-+ bfusb_close(hdev);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ BT_ERR("Can't unregister HCI device %s", hdev->name);
-+}
-+
-+static struct usb_driver bfusb_driver = {
-+ name: "bfusb",
-+ probe: bfusb_probe,
-+ disconnect: bfusb_disconnect,
-+ id_table: bfusb_table,
-+};
-+
-+static int __init bfusb_init(void)
-+{
-+ int err;
-+
-+ BT_INFO("BlueFRITZ! USB driver ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2003 Marcel Holtmann <marcel@holtmann.org>");
-+
-+ if ((err = usb_register(&bfusb_driver)) < 0)
-+ BT_ERR("Failed to register BlueFRITZ! USB driver");
-+
-+ return err;
-+}
-+
-+static void __exit bfusb_cleanup(void)
-+{
-+ usb_deregister(&bfusb_driver);
-+}
-+
-+module_init(bfusb_init);
-+module_exit(bfusb_cleanup);
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueFRITZ! USB driver ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/bluecard_cs.c linux-2.4.18-mh9/drivers/bluetooth/bluecard_cs.c
---- linux-2.4.18/drivers/bluetooth/bluecard_cs.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/bluecard_cs.c Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,1113 @@
-+/*
-+ *
-+ * Bluetooth driver for the Anycom BlueCard (LSE039/LSE041)
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+#include <linux/skbuff.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0x86bc;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ driver for the Anycom BlueCard (LSE039/LSE041)");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct bluecard_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+ struct timer_list timer; /* For LED control */
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+
-+ unsigned char ctrl_reg;
-+ unsigned long hw_state; /* Status of the hardware and LED control */
-+} bluecard_info_t;
-+
-+
-+void bluecard_config(dev_link_t *link);
-+void bluecard_release(u_long arg);
-+int bluecard_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "bluecard_cs";
-+
-+dev_link_t *bluecard_attach(void);
-+void bluecard_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Default baud rate: 57600, 115200, 230400 or 460800 */
-+#define DEFAULT_BAUD_RATE 230400
-+
-+
-+/* Hardware states */
-+#define CARD_READY 1
-+#define CARD_HAS_PCCARD_ID 4
-+#define CARD_HAS_POWER_LED 5
-+#define CARD_HAS_ACTIVITY_LED 6
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_BUFFER_NUMBER 5 /* unset = buffer one, set = buffer two */
-+#define XMIT_BUF_ONE_READY 6
-+#define XMIT_BUF_TWO_READY 7
-+#define XMIT_SENDING_READY 8
-+
-+/* Receiver states */
-+#define RECV_WAIT_PACKET_TYPE 0
-+#define RECV_WAIT_EVENT_HEADER 1
-+#define RECV_WAIT_ACL_HEADER 2
-+#define RECV_WAIT_SCO_HEADER 3
-+#define RECV_WAIT_DATA 4
-+
-+/* Special packet types */
-+#define PKT_BAUD_RATE_57600 0x80
-+#define PKT_BAUD_RATE_115200 0x81
-+#define PKT_BAUD_RATE_230400 0x82
-+#define PKT_BAUD_RATE_460800 0x83
-+
-+
-+/* These are the register offsets */
-+#define REG_COMMAND 0x20
-+#define REG_INTERRUPT 0x21
-+#define REG_CONTROL 0x22
-+#define REG_RX_CONTROL 0x24
-+#define REG_CARD_RESET 0x30
-+#define REG_LED_CTRL 0x30
-+
-+/* REG_COMMAND */
-+#define REG_COMMAND_TX_BUF_ONE 0x01
-+#define REG_COMMAND_TX_BUF_TWO 0x02
-+#define REG_COMMAND_RX_BUF_ONE 0x04
-+#define REG_COMMAND_RX_BUF_TWO 0x08
-+#define REG_COMMAND_RX_WIN_ONE 0x00
-+#define REG_COMMAND_RX_WIN_TWO 0x10
-+
-+/* REG_CONTROL */
-+#define REG_CONTROL_BAUD_RATE_57600 0x00
-+#define REG_CONTROL_BAUD_RATE_115200 0x01
-+#define REG_CONTROL_BAUD_RATE_230400 0x02
-+#define REG_CONTROL_BAUD_RATE_460800 0x03
-+#define REG_CONTROL_RTS 0x04
-+#define REG_CONTROL_BT_ON 0x08
-+#define REG_CONTROL_BT_RESET 0x10
-+#define REG_CONTROL_BT_RES_PU 0x20
-+#define REG_CONTROL_INTERRUPT 0x40
-+#define REG_CONTROL_CARD_RESET 0x80
-+
-+/* REG_RX_CONTROL */
-+#define RTS_LEVEL_SHIFT_BITS 0x02
-+
-+
-+
-+/* ======================== LED handling routines ======================== */
-+
-+
-+void bluecard_activity_led_timeout(u_long arg)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)arg;
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ if (test_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state))) {
-+ /* Disable activity LED */
-+ outb(0x08 | 0x20, iobase + 0x30);
-+ } else {
-+ /* Disable power LED */
-+ outb(0x00, iobase + 0x30);
-+ }
-+}
-+
-+
-+static void bluecard_enable_activity_led(bluecard_info_t *info)
-+{
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ if (test_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state))) {
-+ /* Enable activity LED */
-+ outb(0x10 | 0x40, iobase + 0x30);
-+
-+ /* Stop the LED after HZ/4 */
-+ mod_timer(&(info->timer), jiffies + HZ / 4);
-+ } else {
-+ /* Enable power LED */
-+ outb(0x08 | 0x20, iobase + 0x30);
-+
-+ /* Stop the LED after HZ/2 */
-+ mod_timer(&(info->timer), jiffies + HZ / 2);
-+ }
-+}
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int bluecard_write(unsigned int iobase, unsigned int offset, __u8 *buf, int len)
-+{
-+ int i, actual;
-+
-+ actual = (len > 15) ? 15 : len;
-+
-+ outb_p(actual, iobase + offset);
-+
-+ for (i = 0; i < actual; i++)
-+ outb_p(buf[i], iobase + offset + i + 1);
-+
-+ return actual;
-+}
-+
-+
-+static void bluecard_write_wakeup(bluecard_info_t *info)
-+{
-+ if (!info) {
-+ printk(KERN_WARNING "bluecard_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (!test_bit(XMIT_SENDING_READY, &(info->tx_state)))
-+ return;
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register unsigned int offset;
-+ register unsigned char command;
-+ register unsigned long ready_bit;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ clear_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ return;
-+
-+ if (test_bit(XMIT_BUFFER_NUMBER, &(info->tx_state))) {
-+ if (!test_bit(XMIT_BUF_TWO_READY, &(info->tx_state)))
-+ break;
-+ offset = 0x10;
-+ command = REG_COMMAND_TX_BUF_TWO;
-+ ready_bit = XMIT_BUF_TWO_READY;
-+ } else {
-+ if (!test_bit(XMIT_BUF_ONE_READY, &(info->tx_state)))
-+ break;
-+ offset = 0x00;
-+ command = REG_COMMAND_TX_BUF_ONE;
-+ ready_bit = XMIT_BUF_ONE_READY;
-+ }
-+
-+ if (!(skb = skb_dequeue(&(info->txq))))
-+ break;
-+
-+ if (skb->pkt_type & 0x80) {
-+ /* Disable RTS */
-+ info->ctrl_reg |= REG_CONTROL_RTS;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+ }
-+
-+ /* Activate LED */
-+ bluecard_enable_activity_led(info);
-+
-+ /* Send frame */
-+ len = bluecard_write(iobase, offset, skb->data, skb->len);
-+
-+ /* Tell the FPGA to send the data */
-+ outb_p(command, iobase + REG_COMMAND);
-+
-+ /* Mark the buffer as dirty */
-+ clear_bit(ready_bit, &(info->tx_state));
-+
-+ if (skb->pkt_type & 0x80) {
-+
-+ wait_queue_head_t wait;
-+ unsigned char baud_reg;
-+
-+ switch (skb->pkt_type) {
-+ case PKT_BAUD_RATE_460800:
-+ baud_reg = REG_CONTROL_BAUD_RATE_460800;
-+ break;
-+ case PKT_BAUD_RATE_230400:
-+ baud_reg = REG_CONTROL_BAUD_RATE_230400;
-+ break;
-+ case PKT_BAUD_RATE_115200:
-+ baud_reg = REG_CONTROL_BAUD_RATE_115200;
-+ break;
-+ case PKT_BAUD_RATE_57600:
-+ /* Fall through... */
-+ default:
-+ baud_reg = REG_CONTROL_BAUD_RATE_57600;
-+ break;
-+ }
-+
-+ /* Wait until the command reaches the baseband */
-+ init_waitqueue_head(&wait);
-+ interruptible_sleep_on_timeout(&wait, HZ / 10);
-+
-+ /* Set baud on baseband */
-+ info->ctrl_reg &= ~0x03;
-+ info->ctrl_reg |= baud_reg;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Enable RTS */
-+ info->ctrl_reg &= ~REG_CONTROL_RTS;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Wait before the next HCI packet can be send */
-+ interruptible_sleep_on_timeout(&wait, HZ);
-+
-+ }
-+
-+ if (len == skb->len) {
-+ kfree_skb(skb);
-+ } else {
-+ skb_pull(skb, len);
-+ skb_queue_head(&(info->txq), skb);
-+ }
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ /* Change buffer */
-+ change_bit(XMIT_BUFFER_NUMBER, &(info->tx_state));
-+
-+ } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
-+
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+}
-+
-+
-+static int bluecard_read(unsigned int iobase, unsigned int offset, __u8 *buf, int size)
-+{
-+ int i, n, len;
-+
-+ outb(REG_COMMAND_RX_WIN_ONE, iobase + REG_COMMAND);
-+
-+ len = inb(iobase + offset);
-+ n = 0;
-+ i = 1;
-+
-+ while (n < len) {
-+
-+ if (i == 16) {
-+ outb(REG_COMMAND_RX_WIN_TWO, iobase + REG_COMMAND);
-+ i = 0;
-+ }
-+
-+ buf[n] = inb(iobase + offset + i);
-+
-+ n++;
-+ i++;
-+
-+ }
-+
-+ return len;
-+}
-+
-+
-+static void bluecard_receive(bluecard_info_t *info, unsigned int offset)
-+{
-+ unsigned int iobase;
-+ unsigned char buf[31];
-+ int i, len;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bluecard_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ if (test_bit(XMIT_SENDING_READY, &(info->tx_state)))
-+ bluecard_enable_activity_led(info);
-+
-+ len = bluecard_read(iobase, offset, buf, sizeof(buf));
-+
-+ for (i = 0; i < len; i++) {
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL) {
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "bluecard_cs: Can't allocate mem for new packet.\n");
-+ return;
-+ }
-+ }
-+
-+ if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
-+
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type = buf[i];
-+
-+ switch (info->rx_skb->pkt_type) {
-+
-+ case 0x00:
-+ /* init packet */
-+ if (offset != 0x00) {
-+ set_bit(XMIT_BUF_ONE_READY, &(info->tx_state));
-+ set_bit(XMIT_BUF_TWO_READY, &(info->tx_state));
-+ set_bit(XMIT_SENDING_READY, &(info->tx_state));
-+ bluecard_write_wakeup(info);
-+ }
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ case HCI_EVENT_PKT:
-+ info->rx_state = RECV_WAIT_EVENT_HEADER;
-+ info->rx_count = HCI_EVENT_HDR_SIZE;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ info->rx_state = RECV_WAIT_ACL_HEADER;
-+ info->rx_count = HCI_ACL_HDR_SIZE;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ info->rx_state = RECV_WAIT_SCO_HEADER;
-+ info->rx_count = HCI_SCO_HDR_SIZE;
-+ break;
-+
-+ default:
-+ /* unknown packet */
-+ printk(KERN_WARNING "bluecard_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ info->hdev.stat.err_rx++;
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ } else {
-+
-+ *skb_put(info->rx_skb, 1) = buf[i];
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ int dlen;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+
-+ switch (info->rx_state) {
-+
-+ case RECV_WAIT_EVENT_HEADER:
-+ eh = (hci_event_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = eh->plen;
-+ break;
-+
-+ case RECV_WAIT_ACL_HEADER:
-+ ah = (hci_acl_hdr *)(info->rx_skb->data);
-+ dlen = __le16_to_cpu(ah->dlen);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = dlen;
-+ break;
-+
-+ case RECV_WAIT_SCO_HEADER:
-+ sh = (hci_sco_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = sh->dlen;
-+ break;
-+
-+ case RECV_WAIT_DATA:
-+ hci_recv_frame(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+
-+ }
-+
-+ info->hdev.stat.byte_rx += len;
-+}
-+
-+
-+void bluecard_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ bluecard_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ unsigned char reg;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bluecard_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ if (!test_bit(CARD_READY, &(info->hw_state)))
-+ return;
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ /* Disable interrupt */
-+ info->ctrl_reg &= ~REG_CONTROL_INTERRUPT;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ reg = inb(iobase + REG_INTERRUPT);
-+
-+ if ((reg != 0x00) && (reg != 0xff)) {
-+
-+ if (reg & 0x04) {
-+ bluecard_receive(info, 0x00);
-+ outb(0x04, iobase + REG_INTERRUPT);
-+ outb(REG_COMMAND_RX_BUF_ONE, iobase + REG_COMMAND);
-+ }
-+
-+ if (reg & 0x08) {
-+ bluecard_receive(info, 0x10);
-+ outb(0x08, iobase + REG_INTERRUPT);
-+ outb(REG_COMMAND_RX_BUF_TWO, iobase + REG_COMMAND);
-+ }
-+
-+ if (reg & 0x01) {
-+ set_bit(XMIT_BUF_ONE_READY, &(info->tx_state));
-+ outb(0x01, iobase + REG_INTERRUPT);
-+ bluecard_write_wakeup(info);
-+ }
-+
-+ if (reg & 0x02) {
-+ set_bit(XMIT_BUF_TWO_READY, &(info->tx_state));
-+ outb(0x02, iobase + REG_INTERRUPT);
-+ bluecard_write_wakeup(info);
-+ }
-+
-+ }
-+
-+ /* Enable interrupt */
-+ info->ctrl_reg |= REG_CONTROL_INTERRUPT;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+
-+/* ======================== Device specific HCI commands ======================== */
-+
-+
-+static int bluecard_hci_set_baud_rate(struct hci_dev *hdev, int baud)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+ struct sk_buff *skb;
-+
-+ /* Ericsson baud rate command */
-+ unsigned char cmd[] = { HCI_COMMAND_PKT, 0x09, 0xfc, 0x01, 0x03 };
-+
-+ if (!(skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "bluecard_cs: Can't allocate mem for new packet.\n");
-+ return -1;
-+ }
-+
-+ switch (baud) {
-+ case 460800:
-+ cmd[4] = 0x00;
-+ skb->pkt_type = PKT_BAUD_RATE_460800;
-+ break;
-+ case 230400:
-+ cmd[4] = 0x01;
-+ skb->pkt_type = PKT_BAUD_RATE_230400;
-+ break;
-+ case 115200:
-+ cmd[4] = 0x02;
-+ skb->pkt_type = PKT_BAUD_RATE_115200;
-+ break;
-+ case 57600:
-+ /* Fall through... */
-+ default:
-+ cmd[4] = 0x03;
-+ skb->pkt_type = PKT_BAUD_RATE_57600;
-+ break;
-+ }
-+
-+ memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd));
-+
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ bluecard_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int bluecard_hci_flush(struct hci_dev *hdev)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int bluecard_hci_open(struct hci_dev *hdev)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ bluecard_hci_set_baud_rate(hdev, DEFAULT_BAUD_RATE);
-+
-+ if (test_and_set_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ /* Enable LED */
-+ outb(0x08 | 0x20, iobase + 0x30);
-+
-+ return 0;
-+}
-+
-+
-+static int bluecard_hci_close(struct hci_dev *hdev)
-+{
-+ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data);
-+ unsigned int iobase = info->link.io.BasePort1;
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ bluecard_hci_flush(hdev);
-+
-+ /* Disable LED */
-+ outb(0x00, iobase + 0x30);
-+
-+ return 0;
-+}
-+
-+
-+static int bluecard_hci_send_frame(struct sk_buff *skb)
-+{
-+ bluecard_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "bluecard_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (bluecard_info_t *)(hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ bluecard_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+static void bluecard_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int bluecard_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+int bluecard_open(bluecard_info_t *info)
-+{
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev;
-+ unsigned char id;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ init_timer(&(info->timer));
-+ info->timer.function = &bluecard_activity_led_timeout;
-+ info->timer.data = (u_long)info;
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ info->rx_skb = NULL;
-+
-+ id = inb(iobase + 0x30);
-+
-+ if ((id & 0x0f) == 0x02)
-+ set_bit(CARD_HAS_PCCARD_ID, &(info->hw_state));
-+
-+ if (id & 0x10)
-+ set_bit(CARD_HAS_POWER_LED, &(info->hw_state));
-+
-+ if (id & 0x20)
-+ set_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state));
-+
-+ /* Reset card */
-+ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Turn FPGA off */
-+ outb(0x80, iobase + 0x30);
-+
-+ /* Wait some time */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ / 100);
-+
-+ /* Turn FPGA on */
-+ outb(0x00, iobase + 0x30);
-+
-+ /* Activate card */
-+ info->ctrl_reg = REG_CONTROL_BT_ON | REG_CONTROL_BT_RES_PU;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Enable interrupt */
-+ outb(0xff, iobase + REG_INTERRUPT);
-+ info->ctrl_reg |= REG_CONTROL_INTERRUPT;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Start the RX buffers */
-+ outb(REG_COMMAND_RX_BUF_ONE, iobase + REG_COMMAND);
-+ outb(REG_COMMAND_RX_BUF_TWO, iobase + REG_COMMAND);
-+
-+ /* Signal that the hardware is ready */
-+ set_bit(CARD_READY, &(info->hw_state));
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ /* Control the point at which RTS is enabled */
-+ outb((0x0f << RTS_LEVEL_SHIFT_BITS) | 1, iobase + REG_RX_CONTROL);
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout((HZ * 5) / 4); // or set it to 3/2
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = bluecard_hci_open;
-+ hdev->close = bluecard_hci_close;
-+ hdev->flush = bluecard_hci_flush;
-+ hdev->send = bluecard_hci_send_frame;
-+ hdev->destruct = bluecard_hci_destruct;
-+ hdev->ioctl = bluecard_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "bluecard_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int bluecard_close(bluecard_info_t *info)
-+{
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ bluecard_hci_close(hdev);
-+
-+ clear_bit(CARD_READY, &(info->hw_state));
-+
-+ /* Reset card */
-+ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET;
-+ outb(info->ctrl_reg, iobase + REG_CONTROL);
-+
-+ /* Turn FPGA off */
-+ outb(0x80, iobase + 0x30);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "bluecard_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *bluecard_attach(void)
-+{
-+ bluecard_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &bluecard_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = bluecard_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &bluecard_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ bluecard_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void bluecard_detach(dev_link_t *link)
-+{
-+ bluecard_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+ if (link->state & DEV_CONFIG)
-+ bluecard_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void bluecard_config(dev_link_t *link)
-+{
-+ client_handle_t handle = link->handle;
-+ bluecard_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ config_info_t config;
-+ int i, n, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ link->conf.ConfigIndex = 0x20;
-+ link->io.NumPorts1 = 64;
-+ link->io.IOAddrLines = 6;
-+
-+ for (n = 0; n < 0x400; n += 0x40) {
-+ link->io.BasePort1 = n ^ 0x300;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ break;
-+ }
-+
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (bluecard_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ bluecard_release((u_long)link);
-+}
-+
-+
-+void bluecard_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ bluecard_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ bluecard_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int bluecard_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ bluecard_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ bluecard_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ bluecard_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_bluecard_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "bluecard_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &bluecard_attach, &bluecard_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_bluecard_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ bluecard_detach(dev_list);
-+}
-+
-+
-+module_init(init_bluecard_cs);
-+module_exit(exit_bluecard_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/bt3c_cs.c linux-2.4.18-mh9/drivers/bluetooth/bt3c_cs.c
---- linux-2.4.18/drivers/bluetooth/bt3c_cs.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/bt3c_cs.c Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,946 @@
-+/*
-+ *
-+ * Driver for the 3Com Bluetooth PCMCIA card
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ * Jose Orlando Pereira <jop@di.uminho.pt>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#define __KERNEL_SYSCALLS__
-+
-+#include <linux/kernel.h>
-+#include <linux/kmod.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/delay.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/unistd.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/skbuff.h>
-+#include <linux/string.h>
-+#include <linux/serial.h>
-+#include <linux/serial_reg.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0xffff;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>, Jose Orlando Pereira <jop@di.uminho.pt>");
-+MODULE_DESCRIPTION("BlueZ driver for the 3Com Bluetooth PCMCIA card");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct bt3c_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+} bt3c_info_t;
-+
-+
-+void bt3c_config(dev_link_t *link);
-+void bt3c_release(u_long arg);
-+int bt3c_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "bt3c_cs";
-+
-+dev_link_t *bt3c_attach(void);
-+void bt3c_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_WAITING 8
-+
-+/* Receiver states */
-+#define RECV_WAIT_PACKET_TYPE 0
-+#define RECV_WAIT_EVENT_HEADER 1
-+#define RECV_WAIT_ACL_HEADER 2
-+#define RECV_WAIT_SCO_HEADER 3
-+#define RECV_WAIT_DATA 4
-+
-+
-+
-+/* ======================== Special I/O functions ======================== */
-+
-+
-+#define DATA_L 0
-+#define DATA_H 1
-+#define ADDR_L 2
-+#define ADDR_H 3
-+#define CONTROL 4
-+
-+
-+inline void bt3c_address(unsigned int iobase, unsigned short addr)
-+{
-+ outb(addr & 0xff, iobase + ADDR_L);
-+ outb((addr >> 8) & 0xff, iobase + ADDR_H);
-+}
-+
-+
-+inline void bt3c_put(unsigned int iobase, unsigned short value)
-+{
-+ outb(value & 0xff, iobase + DATA_L);
-+ outb((value >> 8) & 0xff, iobase + DATA_H);
-+}
-+
-+
-+inline void bt3c_io_write(unsigned int iobase, unsigned short addr, unsigned short value)
-+{
-+ bt3c_address(iobase, addr);
-+ bt3c_put(iobase, value);
-+}
-+
-+
-+inline unsigned short bt3c_get(unsigned int iobase)
-+{
-+ unsigned short value = inb(iobase + DATA_L);
-+
-+ value |= inb(iobase + DATA_H) << 8;
-+
-+ return value;
-+}
-+
-+
-+inline unsigned short bt3c_read(unsigned int iobase, unsigned short addr)
-+{
-+ bt3c_address(iobase, addr);
-+
-+ return bt3c_get(iobase);
-+}
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int bt3c_write(unsigned int iobase, int fifo_size, __u8 *buf, int len)
-+{
-+ int actual = 0;
-+
-+ bt3c_address(iobase, 0x7080);
-+
-+ /* Fill FIFO with current frame */
-+ while (actual < len) {
-+ /* Transmit next byte */
-+ bt3c_put(iobase, buf[actual]);
-+ actual++;
-+ }
-+
-+ bt3c_io_write(iobase, 0x7005, actual);
-+
-+ return actual;
-+}
-+
-+
-+static void bt3c_write_wakeup(bt3c_info_t *info, int from)
-+{
-+ unsigned long flags;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bt3c_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state)))
-+ return;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ break;
-+
-+
-+ if (!(skb = skb_dequeue(&(info->txq)))) {
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+ break;
-+ }
-+
-+ /* Send frame */
-+ len = bt3c_write(iobase, 256, skb->data, skb->len);
-+
-+ if (len != skb->len) {
-+ printk(KERN_WARNING "bt3c_cs: very strange\n");
-+ }
-+
-+ kfree_skb(skb);
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ } while (0);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+}
-+
-+
-+static void bt3c_receive(bt3c_info_t *info)
-+{
-+ unsigned int iobase;
-+ int size = 0, avail;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bt3c_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ avail = bt3c_read(iobase, 0x7006);
-+ //printk("bt3c_cs: receiving %d bytes\n", avail);
-+
-+ bt3c_address(iobase, 0x7480);
-+ while (size < avail) {
-+ size++;
-+ info->hdev.stat.byte_rx++;
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL) {
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "bt3c_cs: Can't allocate mem for new packet.\n");
-+ return;
-+ }
-+ }
-+
-+
-+ if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
-+
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type = inb(iobase + DATA_L);
-+ inb(iobase + DATA_H);
-+ //printk("bt3c: PACKET_TYPE=%02x\n", info->rx_skb->pkt_type);
-+
-+ switch (info->rx_skb->pkt_type) {
-+
-+ case HCI_EVENT_PKT:
-+ info->rx_state = RECV_WAIT_EVENT_HEADER;
-+ info->rx_count = HCI_EVENT_HDR_SIZE;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ info->rx_state = RECV_WAIT_ACL_HEADER;
-+ info->rx_count = HCI_ACL_HDR_SIZE;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ info->rx_state = RECV_WAIT_SCO_HEADER;
-+ info->rx_count = HCI_SCO_HDR_SIZE;
-+ break;
-+
-+ default:
-+ /* Unknown packet */
-+ printk(KERN_WARNING "bt3c_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ info->hdev.stat.err_rx++;
-+ clear_bit(HCI_RUNNING, &(info->hdev.flags));
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ } else {
-+
-+ __u8 x = inb(iobase + DATA_L);
-+
-+ *skb_put(info->rx_skb, 1) = x;
-+ inb(iobase + DATA_H);
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ int dlen;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+
-+ switch (info->rx_state) {
-+
-+ case RECV_WAIT_EVENT_HEADER:
-+ eh = (hci_event_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = eh->plen;
-+ break;
-+
-+ case RECV_WAIT_ACL_HEADER:
-+ ah = (hci_acl_hdr *)(info->rx_skb->data);
-+ dlen = __le16_to_cpu(ah->dlen);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = dlen;
-+ break;
-+
-+ case RECV_WAIT_SCO_HEADER:
-+ sh = (hci_sco_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = sh->dlen;
-+ break;
-+
-+ case RECV_WAIT_DATA:
-+ hci_recv_frame(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+ bt3c_io_write(iobase, 0x7006, 0x0000);
-+}
-+
-+
-+void bt3c_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ bt3c_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ int iir;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "bt3c_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ iir = inb(iobase + CONTROL);
-+ if (iir & 0x80) {
-+ int stat = bt3c_read(iobase, 0x7001);
-+
-+ if ((stat & 0xff) == 0x7f) {
-+ printk(KERN_WARNING "bt3c_cs: STRANGE stat=%04x\n", stat);
-+ } else if ((stat & 0xff) != 0xff) {
-+ if (stat & 0x0020) {
-+ int stat = bt3c_read(iobase, 0x7002) & 0x10;
-+ printk(KERN_WARNING "bt3c_cs: antena %s\n", stat ? "OUT" : "IN");
-+ }
-+ if (stat & 0x0001)
-+ bt3c_receive(info);
-+ if (stat & 0x0002) {
-+ //printk("bt3c_cs: ACK %04x\n", stat);
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+ bt3c_write_wakeup(info, 1);
-+ }
-+
-+ bt3c_io_write(iobase, 0x7001, 0x0000);
-+
-+ outb(iir, iobase + CONTROL);
-+ }
-+ }
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int bt3c_hci_flush(struct hci_dev *hdev)
-+{
-+ bt3c_info_t *info = (bt3c_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int bt3c_hci_open(struct hci_dev *hdev)
-+{
-+ set_bit(HCI_RUNNING, &(hdev->flags));
-+
-+ return 0;
-+}
-+
-+
-+static int bt3c_hci_close(struct hci_dev *hdev)
-+{
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ bt3c_hci_flush(hdev);
-+
-+ return 0;
-+}
-+
-+
-+static int bt3c_hci_send_frame(struct sk_buff *skb)
-+{
-+ bt3c_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "bt3c_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (bt3c_info_t *) (hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ bt3c_write_wakeup(info, 0);
-+
-+ return 0;
-+}
-+
-+
-+static void bt3c_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int bt3c_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== User mode firmware loader ======================== */
-+
-+
-+#define FW_LOADER "/sbin/bluefw"
-+static int errno;
-+
-+
-+static int bt3c_fw_loader_exec(void *dev)
-+{
-+ char *argv[] = { FW_LOADER, "pccard", dev, NULL };
-+ char *envp[] = { "HOME=/", "TERM=linux", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };
-+ int err;
-+
-+ err = exec_usermodehelper(FW_LOADER, argv, envp);
-+ if (err)
-+ printk(KERN_WARNING "bt3c_cs: Failed to exec \"%s pccard %s\".\n", FW_LOADER, (char *)dev);
-+
-+ return err;
-+}
-+
-+
-+static int bt3c_firmware_load(bt3c_info_t *info)
-+{
-+ sigset_t tmpsig;
-+ char dev[16];
-+ pid_t pid;
-+ int result;
-+
-+ /* Check if root fs is mounted */
-+ if (!current->fs->root) {
-+ printk(KERN_WARNING "bt3c_cs: Root filesystem is not mounted.\n");
-+ return -EPERM;
-+ }
-+
-+ sprintf(dev, "%04x", info->link.io.BasePort1);
-+
-+ pid = kernel_thread(bt3c_fw_loader_exec, (void *)dev, 0);
-+ if (pid < 0) {
-+ printk(KERN_WARNING "bt3c_cs: Forking of kernel thread failed (errno=%d).\n", -pid);
-+ return pid;
-+ }
-+
-+ /* Block signals, everything but SIGKILL/SIGSTOP */
-+ spin_lock_irq(&current->sigmask_lock);
-+ tmpsig = current->blocked;
-+ siginitsetinv(&current->blocked, sigmask(SIGKILL) | sigmask(SIGSTOP));
-+ recalc_sigpending(current);
-+ spin_unlock_irq(&current->sigmask_lock);
-+
-+ result = waitpid(pid, NULL, __WCLONE);
-+
-+ /* Allow signals again */
-+ spin_lock_irq(&current->sigmask_lock);
-+ current->blocked = tmpsig;
-+ recalc_sigpending(current);
-+ spin_unlock_irq(&current->sigmask_lock);
-+
-+ if (result != pid) {
-+ printk(KERN_WARNING "bt3c_cs: Waiting for pid %d failed (errno=%d).\n", pid, -result);
-+ return -result;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+int bt3c_open(bt3c_info_t *info)
-+{
-+ struct hci_dev *hdev;
-+ int err;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ info->rx_skb = NULL;
-+
-+ /* Load firmware */
-+
-+ if ((err = bt3c_firmware_load(info)) < 0)
-+ return err;
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ);
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = bt3c_hci_open;
-+ hdev->close = bt3c_hci_close;
-+ hdev->flush = bt3c_hci_flush;
-+ hdev->send = bt3c_hci_send_frame;
-+ hdev->destruct = bt3c_hci_destruct;
-+ hdev->ioctl = bt3c_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "bt3c_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int bt3c_close(bt3c_info_t *info)
-+{
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ bt3c_hci_close(hdev);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "bt3c_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *bt3c_attach(void)
-+{
-+ bt3c_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &bt3c_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = bt3c_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &bt3c_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ bt3c_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void bt3c_detach(dev_link_t *link)
-+{
-+ bt3c_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+
-+ if (link->state & DEV_CONFIG)
-+ bt3c_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void bt3c_config(dev_link_t *link)
-+{
-+ static ioaddr_t base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
-+ client_handle_t handle = link->handle;
-+ bt3c_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
-+ int i, j, try, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ /* First pass: look for a config entry that looks normal. */
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-+ /* Two tries: without IO aliases, then with aliases */
-+ for (try = 0; try < 2; try++) {
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if (i != CS_SUCCESS)
-+ goto next_entry;
-+ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) {
-+ link->conf.ConfigIndex = cf->index;
-+ link->io.BasePort1 = cf->io.win[0].base;
-+ link->io.IOAddrLines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+next_entry:
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+ }
-+
-+ /* Second pass: try to find an entry that isn't picky about
-+ its base address, then try to grab any standard serial port
-+ address, and finally try to get any free port. */
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if ((i == CS_SUCCESS) && (cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-+ link->conf.ConfigIndex = cf->index;
-+ for (j = 0; j < 5; j++) {
-+ link->io.BasePort1 = base[j];
-+ link->io.IOAddrLines = base[j] ? 16 : 3;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+ }
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+
-+found_port:
-+ if (i != CS_SUCCESS) {
-+ printk(KERN_NOTICE "bt3c_cs: No usable port range found. Giving up.\n");
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (bt3c_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ bt3c_release((u_long)link);
-+}
-+
-+
-+void bt3c_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ bt3c_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ bt3c_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int bt3c_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ bt3c_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ bt3c_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ bt3c_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_bt3c_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "bt3c_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &bt3c_attach, &bt3c_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_bt3c_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ bt3c_detach(dev_list);
-+}
-+
-+
-+module_init(init_bt3c_cs);
-+module_exit(exit_bt3c_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/btuart_cs.c linux-2.4.18-mh9/drivers/bluetooth/btuart_cs.c
---- linux-2.4.18/drivers/bluetooth/btuart_cs.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/btuart_cs.c Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,906 @@
-+/*
-+ *
-+ * Driver for Bluetooth PCMCIA cards with HCI UART interface
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/skbuff.h>
-+#include <linux/string.h>
-+#include <linux/serial.h>
-+#include <linux/serial_reg.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0xffff;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ driver for Bluetooth PCMCIA cards with HCI UART interface");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct btuart_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+} btuart_info_t;
-+
-+
-+void btuart_config(dev_link_t *link);
-+void btuart_release(u_long arg);
-+int btuart_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "btuart_cs";
-+
-+dev_link_t *btuart_attach(void);
-+void btuart_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Maximum baud rate */
-+#define SPEED_MAX 115200
-+
-+/* Default baud rate: 57600, 115200, 230400 or 460800 */
-+#define DEFAULT_BAUD_RATE 115200
-+
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_WAITING 8
-+
-+/* Receiver states */
-+#define RECV_WAIT_PACKET_TYPE 0
-+#define RECV_WAIT_EVENT_HEADER 1
-+#define RECV_WAIT_ACL_HEADER 2
-+#define RECV_WAIT_SCO_HEADER 3
-+#define RECV_WAIT_DATA 4
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int btuart_write(unsigned int iobase, int fifo_size, __u8 *buf, int len)
-+{
-+ int actual = 0;
-+
-+ /* Tx FIFO should be empty */
-+ if (!(inb(iobase + UART_LSR) & UART_LSR_THRE))
-+ return 0;
-+
-+ /* Fill FIFO with current frame */
-+ while ((fifo_size-- > 0) && (actual < len)) {
-+ /* Transmit next byte */
-+ outb(buf[actual], iobase + UART_TX);
-+ actual++;
-+ }
-+
-+ return actual;
-+}
-+
-+
-+static void btuart_write_wakeup(btuart_info_t *info)
-+{
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ clear_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ return;
-+
-+ if (!(skb = skb_dequeue(&(info->txq))))
-+ break;
-+
-+ /* Send frame */
-+ len = btuart_write(iobase, 16, skb->data, skb->len);
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (len == skb->len) {
-+ kfree_skb(skb);
-+ } else {
-+ skb_pull(skb, len);
-+ skb_queue_head(&(info->txq), skb);
-+ }
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
-+
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+}
-+
-+
-+static void btuart_receive(btuart_info_t *info)
-+{
-+ unsigned int iobase;
-+ int boguscount = 0;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ do {
-+ info->hdev.stat.byte_rx++;
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL) {
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "btuart_cs: Can't allocate mem for new packet.\n");
-+ return;
-+ }
-+ }
-+
-+ if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
-+
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type = inb(iobase + UART_RX);
-+
-+ switch (info->rx_skb->pkt_type) {
-+
-+ case HCI_EVENT_PKT:
-+ info->rx_state = RECV_WAIT_EVENT_HEADER;
-+ info->rx_count = HCI_EVENT_HDR_SIZE;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ info->rx_state = RECV_WAIT_ACL_HEADER;
-+ info->rx_count = HCI_ACL_HDR_SIZE;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ info->rx_state = RECV_WAIT_SCO_HEADER;
-+ info->rx_count = HCI_SCO_HDR_SIZE;
-+ break;
-+
-+ default:
-+ /* Unknown packet */
-+ printk(KERN_WARNING "btuart_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ info->hdev.stat.err_rx++;
-+ clear_bit(HCI_RUNNING, &(info->hdev.flags));
-+
-+ kfree_skb(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ } else {
-+
-+ *skb_put(info->rx_skb, 1) = inb(iobase + UART_RX);
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ int dlen;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+
-+
-+ switch (info->rx_state) {
-+
-+ case RECV_WAIT_EVENT_HEADER:
-+ eh = (hci_event_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = eh->plen;
-+ break;
-+
-+ case RECV_WAIT_ACL_HEADER:
-+ ah = (hci_acl_hdr *)(info->rx_skb->data);
-+ dlen = __le16_to_cpu(ah->dlen);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = dlen;
-+ break;
-+
-+ case RECV_WAIT_SCO_HEADER:
-+ sh = (hci_sco_hdr *)(info->rx_skb->data);
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = sh->dlen;
-+ break;
-+
-+ case RECV_WAIT_DATA:
-+ hci_recv_frame(info->rx_skb);
-+ info->rx_skb = NULL;
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 16)
-+ break;
-+
-+ } while (inb(iobase + UART_LSR) & UART_LSR_DR);
-+}
-+
-+
-+void btuart_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ btuart_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ int boguscount = 0;
-+ int iir, lsr;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+ while (iir) {
-+
-+ /* Clear interrupt */
-+ lsr = inb(iobase + UART_LSR);
-+
-+ switch (iir) {
-+ case UART_IIR_RLSI:
-+ printk(KERN_NOTICE "btuart_cs: RLSI\n");
-+ break;
-+ case UART_IIR_RDI:
-+ /* Receive interrupt */
-+ btuart_receive(info);
-+ break;
-+ case UART_IIR_THRI:
-+ if (lsr & UART_LSR_THRE) {
-+ /* Transmitter ready for data */
-+ btuart_write_wakeup(info);
-+ }
-+ break;
-+ default:
-+ printk(KERN_NOTICE "btuart_cs: Unhandled IIR=%#x\n", iir);
-+ break;
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 100)
-+ break;
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+
-+ }
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+static void btuart_change_speed(btuart_info_t *info, unsigned int speed)
-+{
-+ unsigned long flags;
-+ unsigned int iobase;
-+ int fcr; /* FIFO control reg */
-+ int lcr; /* Line control reg */
-+ int divisor;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "btuart_cs: Call of change speed for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ divisor = SPEED_MAX / speed;
-+
-+ fcr = UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT;
-+
-+ /*
-+ * Use trigger level 1 to avoid 3 ms. timeout delay at 9600 bps, and
-+ * almost 1,7 ms at 19200 bps. At speeds above that we can just forget
-+ * about this timeout since it will always be fast enough.
-+ */
-+
-+ if (speed < 38400)
-+ fcr |= UART_FCR_TRIGGER_1;
-+ else
-+ fcr |= UART_FCR_TRIGGER_14;
-+
-+ /* Bluetooth cards use 8N1 */
-+ lcr = UART_LCR_WLEN8;
-+
-+ outb(UART_LCR_DLAB | lcr, iobase + UART_LCR); /* Set DLAB */
-+ outb(divisor & 0xff, iobase + UART_DLL); /* Set speed */
-+ outb(divisor >> 8, iobase + UART_DLM);
-+ outb(lcr, iobase + UART_LCR); /* Set 8N1 */
-+ outb(fcr, iobase + UART_FCR); /* Enable FIFO's */
-+
-+ /* Turn on interrups */
-+ outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+}
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int btuart_hci_flush(struct hci_dev *hdev)
-+{
-+ btuart_info_t *info = (btuart_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_open(struct hci_dev *hdev)
-+{
-+ set_bit(HCI_RUNNING, &(hdev->flags));
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_close(struct hci_dev *hdev)
-+{
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ btuart_hci_flush(hdev);
-+
-+ return 0;
-+}
-+
-+
-+static int btuart_hci_send_frame(struct sk_buff *skb)
-+{
-+ btuart_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "btuart_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (btuart_info_t *)(hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+ };
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1);
-+ skb_queue_tail(&(info->txq), skb);
-+
-+ btuart_write_wakeup(info);
-+
-+ return 0;
-+}
-+
-+
-+static void btuart_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int btuart_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+int btuart_open(btuart_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_PACKET_TYPE;
-+ info->rx_count = 0;
-+ info->rx_skb = NULL;
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ /* Initialize UART */
-+ outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */
-+ outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR);
-+
-+ /* Turn on interrupts */
-+ // outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ btuart_change_speed(info, DEFAULT_BAUD_RATE);
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ);
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = btuart_hci_open;
-+ hdev->close = btuart_hci_close;
-+ hdev->flush = btuart_hci_flush;
-+ hdev->send = btuart_hci_send_frame;
-+ hdev->destruct = btuart_hci_destruct;
-+ hdev->ioctl = btuart_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "btuart_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int btuart_close(btuart_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ btuart_hci_close(hdev);
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "btuart_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *btuart_attach(void)
-+{
-+ btuart_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &btuart_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = btuart_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &btuart_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ btuart_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void btuart_detach(dev_link_t *link)
-+{
-+ btuart_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+ if (link->state & DEV_CONFIG)
-+ btuart_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void btuart_config(dev_link_t *link)
-+{
-+ static ioaddr_t base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
-+ client_handle_t handle = link->handle;
-+ btuart_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
-+ int i, j, try, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ /* First pass: look for a config entry that looks normal. */
-+ tuple.TupleData = (cisdata_t *) buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-+ /* Two tries: without IO aliases, then with aliases */
-+ for (try = 0; try < 2; try++) {
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if (i != CS_SUCCESS)
-+ goto next_entry;
-+ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) {
-+ link->conf.ConfigIndex = cf->index;
-+ link->io.BasePort1 = cf->io.win[0].base;
-+ link->io.IOAddrLines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+next_entry:
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+ }
-+
-+ /* Second pass: try to find an entry that isn't picky about
-+ its base address, then try to grab any standard serial port
-+ address, and finally try to get any free port. */
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if ((i == CS_SUCCESS) && (cf->io.nwin > 0)
-+ && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-+ link->conf.ConfigIndex = cf->index;
-+ for (j = 0; j < 5; j++) {
-+ link->io.BasePort1 = base[j];
-+ link->io.IOAddrLines = base[j] ? 16 : 3;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ goto found_port;
-+ }
-+ }
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+
-+found_port:
-+ if (i != CS_SUCCESS) {
-+ printk(KERN_NOTICE "btuart_cs: No usable port range found. Giving up.\n");
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (btuart_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ btuart_release((u_long) link);
-+}
-+
-+
-+void btuart_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ btuart_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ btuart_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int btuart_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ btuart_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ btuart_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ btuart_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_btuart_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "btuart_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &btuart_attach, &btuart_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_btuart_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ btuart_detach(dev_list);
-+}
-+
-+
-+module_init(init_btuart_cs);
-+module_exit(exit_btuart_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/dtl1_cs.c linux-2.4.18-mh9/drivers/bluetooth/dtl1_cs.c
---- linux-2.4.18/drivers/bluetooth/dtl1_cs.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/dtl1_cs.c Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,858 @@
-+/*
-+ *
-+ * A driver for Nokia Connectivity Card DTL-1 devices
-+ *
-+ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org>
-+ *
-+ *
-+ * 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;
-+ *
-+ * Software distributed under the License is distributed on an "AS
-+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-+ * implied. See the License for the specific language governing
-+ * rights and limitations under the License.
-+ *
-+ * The initial developer of the original code is David A. Hinds
-+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
-+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/errno.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/skbuff.h>
-+#include <linux/string.h>
-+#include <linux/serial.h>
-+#include <linux/serial_reg.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/io.h>
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/ciscode.h>
-+#include <pcmcia/ds.h>
-+#include <pcmcia/cisreg.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+
-+
-+/* ======================== Module parameters ======================== */
-+
-+
-+/* Bit map of interrupts to choose from */
-+static u_int irq_mask = 0xffff;
-+static int irq_list[4] = { -1 };
-+
-+MODULE_PARM(irq_mask, "i");
-+MODULE_PARM(irq_list, "1-4i");
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ driver for Nokia Connectivity Card DTL-1");
-+MODULE_LICENSE("GPL");
-+
-+
-+
-+/* ======================== Local structures ======================== */
-+
-+
-+typedef struct dtl1_info_t {
-+ dev_link_t link;
-+ dev_node_t node;
-+
-+ struct hci_dev hdev;
-+
-+ spinlock_t lock; /* For serializing operations */
-+
-+ unsigned long flowmask; /* HCI flow mask */
-+ int ri_latch;
-+
-+ struct sk_buff_head txq;
-+ unsigned long tx_state;
-+
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+} dtl1_info_t;
-+
-+
-+void dtl1_config(dev_link_t *link);
-+void dtl1_release(u_long arg);
-+int dtl1_event(event_t event, int priority, event_callback_args_t *args);
-+
-+static dev_info_t dev_info = "dtl1_cs";
-+
-+dev_link_t *dtl1_attach(void);
-+void dtl1_detach(dev_link_t *);
-+
-+static dev_link_t *dev_list = NULL;
-+
-+
-+/* Transmit states */
-+#define XMIT_SENDING 1
-+#define XMIT_WAKEUP 2
-+#define XMIT_WAITING 8
-+
-+/* Receiver States */
-+#define RECV_WAIT_NSH 0
-+#define RECV_WAIT_DATA 1
-+
-+
-+typedef struct {
-+ u8 type;
-+ u8 zero;
-+ u16 len;
-+} __attribute__ ((packed)) nsh_t; /* Nokia Specific Header */
-+
-+#define NSHL 4 /* Nokia Specific Header Length */
-+
-+
-+
-+/* ======================== Interrupt handling ======================== */
-+
-+
-+static int dtl1_write(unsigned int iobase, int fifo_size, __u8 *buf, int len)
-+{
-+ int actual = 0;
-+
-+ /* Tx FIFO should be empty */
-+ if (!(inb(iobase + UART_LSR) & UART_LSR_THRE))
-+ return 0;
-+
-+ /* Fill FIFO with current frame */
-+ while ((fifo_size-- > 0) && (actual < len)) {
-+ /* Transmit next byte */
-+ outb(buf[actual], iobase + UART_TX);
-+ actual++;
-+ }
-+
-+ return actual;
-+}
-+
-+
-+static void dtl1_write_wakeup(dtl1_info_t *info)
-+{
-+ if (!info) {
-+ printk(KERN_WARNING "dtl1_cs: Call of write_wakeup for unknown device.\n");
-+ return;
-+ }
-+
-+ if (test_bit(XMIT_WAITING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
-+ set_bit(XMIT_WAKEUP, &(info->tx_state));
-+ return;
-+ }
-+
-+ do {
-+ register unsigned int iobase = info->link.io.BasePort1;
-+ register struct sk_buff *skb;
-+ register int len;
-+
-+ clear_bit(XMIT_WAKEUP, &(info->tx_state));
-+
-+ if (!(info->link.state & DEV_PRESENT))
-+ return;
-+
-+ if (!(skb = skb_dequeue(&(info->txq))))
-+ break;
-+
-+ /* Send frame */
-+ len = dtl1_write(iobase, 32, skb->data, skb->len);
-+
-+ if (len == skb->len) {
-+ set_bit(XMIT_WAITING, &(info->tx_state));
-+ kfree_skb(skb);
-+ } else {
-+ skb_pull(skb, len);
-+ skb_queue_head(&(info->txq), skb);
-+ }
-+
-+ info->hdev.stat.byte_tx += len;
-+
-+ } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
-+
-+ clear_bit(XMIT_SENDING, &(info->tx_state));
-+}
-+
-+
-+static void dtl1_control(dtl1_info_t *info, struct sk_buff *skb)
-+{
-+ u8 flowmask = *(u8 *)skb->data;
-+ int i;
-+
-+ printk(KERN_INFO "dtl1_cs: Nokia control data = ");
-+ for (i = 0; i < skb->len; i++) {
-+ printk("%02x ", skb->data[i]);
-+ }
-+ printk("\n");
-+
-+ /* transition to active state */
-+ if (((info->flowmask & 0x07) == 0) && ((flowmask & 0x07) != 0)) {
-+ clear_bit(XMIT_WAITING, &(info->tx_state));
-+ dtl1_write_wakeup(info);
-+ }
-+
-+ info->flowmask = flowmask;
-+
-+ kfree_skb(skb);
-+}
-+
-+
-+static void dtl1_receive(dtl1_info_t *info)
-+{
-+ unsigned int iobase;
-+ nsh_t *nsh;
-+ int boguscount = 0;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "dtl1_cs: Call of receive for unknown device.\n");
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ do {
-+ info->hdev.stat.byte_rx++;
-+
-+ /* Allocate packet */
-+ if (info->rx_skb == NULL)
-+ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-+ printk(KERN_WARNING "dtl1_cs: Can't allocate mem for new packet.\n");
-+ info->rx_state = RECV_WAIT_NSH;
-+ info->rx_count = NSHL;
-+ return;
-+ }
-+
-+ *skb_put(info->rx_skb, 1) = inb(iobase + UART_RX);
-+ nsh = (nsh_t *)info->rx_skb->data;
-+
-+ info->rx_count--;
-+
-+ if (info->rx_count == 0) {
-+
-+ switch (info->rx_state) {
-+ case RECV_WAIT_NSH:
-+ info->rx_state = RECV_WAIT_DATA;
-+ info->rx_count = nsh->len + (nsh->len & 0x0001);
-+ break;
-+ case RECV_WAIT_DATA:
-+ info->rx_skb->pkt_type = nsh->type;
-+
-+ /* remove PAD byte if it exists */
-+ if (nsh->len & 0x0001) {
-+ info->rx_skb->tail--;
-+ info->rx_skb->len--;
-+ }
-+
-+ /* remove NSH */
-+ skb_pull(info->rx_skb, NSHL);
-+
-+ switch (info->rx_skb->pkt_type) {
-+ case 0x80:
-+ /* control data for the Nokia Card */
-+ dtl1_control(info, info->rx_skb);
-+ break;
-+ case 0x82:
-+ case 0x83:
-+ case 0x84:
-+ /* send frame to the HCI layer */
-+ info->rx_skb->dev = (void *)&(info->hdev);
-+ info->rx_skb->pkt_type &= 0x0f;
-+ hci_recv_frame(info->rx_skb);
-+ break;
-+ default:
-+ /* unknown packet */
-+ printk(KERN_WARNING "dtl1_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type);
-+ kfree_skb(info->rx_skb);
-+ break;
-+ }
-+
-+ info->rx_state = RECV_WAIT_NSH;
-+ info->rx_count = NSHL;
-+ info->rx_skb = NULL;
-+ break;
-+ }
-+
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 32)
-+ break;
-+
-+ } while (inb(iobase + UART_LSR) & UART_LSR_DR);
-+}
-+
-+
-+void dtl1_interrupt(int irq, void *dev_inst, struct pt_regs *regs)
-+{
-+ dtl1_info_t *info = dev_inst;
-+ unsigned int iobase;
-+ unsigned char msr;
-+ int boguscount = 0;
-+ int iir, lsr;
-+
-+ if (!info) {
-+ printk(KERN_WARNING "dtl1_cs: Call of irq %d for unknown device.\n", irq);
-+ return;
-+ }
-+
-+ iobase = info->link.io.BasePort1;
-+
-+ spin_lock(&(info->lock));
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+ while (iir) {
-+
-+ /* Clear interrupt */
-+ lsr = inb(iobase + UART_LSR);
-+
-+ switch (iir) {
-+ case UART_IIR_RLSI:
-+ printk(KERN_NOTICE "dtl1_cs: RLSI\n");
-+ break;
-+ case UART_IIR_RDI:
-+ /* Receive interrupt */
-+ dtl1_receive(info);
-+ break;
-+ case UART_IIR_THRI:
-+ if (lsr & UART_LSR_THRE) {
-+ /* Transmitter ready for data */
-+ dtl1_write_wakeup(info);
-+ }
-+ break;
-+ default:
-+ printk(KERN_NOTICE "dtl1_cs: Unhandled IIR=%#x\n", iir);
-+ break;
-+ }
-+
-+ /* Make sure we don't stay here to long */
-+ if (boguscount++ > 100)
-+ break;
-+
-+ iir = inb(iobase + UART_IIR) & UART_IIR_ID;
-+
-+ }
-+
-+ msr = inb(iobase + UART_MSR);
-+
-+ if (info->ri_latch ^ (msr & UART_MSR_RI)) {
-+ info->ri_latch = msr & UART_MSR_RI;
-+ clear_bit(XMIT_WAITING, &(info->tx_state));
-+ dtl1_write_wakeup(info);
-+ }
-+
-+ spin_unlock(&(info->lock));
-+}
-+
-+
-+
-+/* ======================== HCI interface ======================== */
-+
-+
-+static int dtl1_hci_open(struct hci_dev *hdev)
-+{
-+ set_bit(HCI_RUNNING, &(hdev->flags));
-+
-+ return 0;
-+}
-+
-+
-+static int dtl1_hci_flush(struct hci_dev *hdev)
-+{
-+ dtl1_info_t *info = (dtl1_info_t *)(hdev->driver_data);
-+
-+ /* Drop TX queue */
-+ skb_queue_purge(&(info->txq));
-+
-+ return 0;
-+}
-+
-+
-+static int dtl1_hci_close(struct hci_dev *hdev)
-+{
-+ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags)))
-+ return 0;
-+
-+ dtl1_hci_flush(hdev);
-+
-+ return 0;
-+}
-+
-+
-+static int dtl1_hci_send_frame(struct sk_buff *skb)
-+{
-+ dtl1_info_t *info;
-+ struct hci_dev *hdev = (struct hci_dev *)(skb->dev);
-+ struct sk_buff *s;
-+ nsh_t nsh;
-+
-+ if (!hdev) {
-+ printk(KERN_WARNING "dtl1_cs: Frame for unknown HCI device (hdev=NULL).");
-+ return -ENODEV;
-+ }
-+
-+ info = (dtl1_info_t *)(hdev->driver_data);
-+
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ nsh.type = 0x81;
-+ break;
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ nsh.type = 0x82;
-+ break;
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ nsh.type = 0x83;
-+ break;
-+ };
-+
-+ nsh.zero = 0;
-+ nsh.len = skb->len;
-+
-+ s = bluez_skb_alloc(NSHL + skb->len + 1, GFP_ATOMIC);
-+ skb_reserve(s, NSHL);
-+ memcpy(skb_put(s, skb->len), skb->data, skb->len);
-+ if (skb->len & 0x0001)
-+ *skb_put(s, 1) = 0; /* PAD */
-+
-+ /* Prepend skb with Nokia frame header and queue */
-+ memcpy(skb_push(s, NSHL), &nsh, NSHL);
-+ skb_queue_tail(&(info->txq), s);
-+
-+ dtl1_write_wakeup(info);
-+
-+ kfree_skb(skb);
-+
-+ return 0;
-+}
-+
-+
-+static void dtl1_hci_destruct(struct hci_dev *hdev)
-+{
-+}
-+
-+
-+static int dtl1_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg)
-+{
-+ return -ENOIOCTLCMD;
-+}
-+
-+
-+
-+/* ======================== Card services HCI interaction ======================== */
-+
-+
-+int dtl1_open(dtl1_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev;
-+
-+ spin_lock_init(&(info->lock));
-+
-+ skb_queue_head_init(&(info->txq));
-+
-+ info->rx_state = RECV_WAIT_NSH;
-+ info->rx_count = NSHL;
-+ info->rx_skb = NULL;
-+
-+ set_bit(XMIT_WAITING, &(info->tx_state));
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ /* Initialize UART */
-+ outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */
-+ outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR);
-+
-+ info->ri_latch = inb(info->link.io.BasePort1 + UART_MSR) & UART_MSR_RI;
-+
-+ /* Turn on interrupts */
-+ outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ /* Timeout before it is safe to send the first HCI packet */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ * 2);
-+
-+
-+ /* Initialize and register HCI device */
-+
-+ hdev = &(info->hdev);
-+
-+ hdev->type = HCI_PCCARD;
-+ hdev->driver_data = info;
-+
-+ hdev->open = dtl1_hci_open;
-+ hdev->close = dtl1_hci_close;
-+ hdev->flush = dtl1_hci_flush;
-+ hdev->send = dtl1_hci_send_frame;
-+ hdev->destruct = dtl1_hci_destruct;
-+ hdev->ioctl = dtl1_hci_ioctl;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ printk(KERN_WARNING "dtl1_cs: Can't register HCI device %s.\n", hdev->name);
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int dtl1_close(dtl1_info_t *info)
-+{
-+ unsigned long flags;
-+ unsigned int iobase = info->link.io.BasePort1;
-+ struct hci_dev *hdev = &(info->hdev);
-+
-+ dtl1_hci_close(hdev);
-+
-+ spin_lock_irqsave(&(info->lock), flags);
-+
-+ /* Reset UART */
-+ outb(0, iobase + UART_MCR);
-+
-+ /* Turn off interrupts */
-+ outb(0, iobase + UART_IER);
-+
-+ spin_unlock_irqrestore(&(info->lock), flags);
-+
-+ if (hci_unregister_dev(hdev) < 0)
-+ printk(KERN_WARNING "dtl1_cs: Can't unregister HCI device %s.\n", hdev->name);
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Card services ======================== */
-+
-+
-+static void cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+
-+ CardServices(ReportError, handle, &err);
-+}
-+
-+
-+dev_link_t *dtl1_attach(void)
-+{
-+ dtl1_info_t *info;
-+ client_reg_t client_reg;
-+ dev_link_t *link;
-+ int i, ret;
-+
-+ /* Create new info device */
-+ info = kmalloc(sizeof(*info), GFP_KERNEL);
-+ if (!info)
-+ return NULL;
-+ memset(info, 0, sizeof(*info));
-+
-+ link = &info->link;
-+ link->priv = info;
-+
-+ link->release.function = &dtl1_release;
-+ link->release.data = (u_long)link;
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 8;
-+ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
-+ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
-+
-+ if (irq_list[0] == -1)
-+ link->irq.IRQInfo2 = irq_mask;
-+ else
-+ for (i = 0; i < 4; i++)
-+ link->irq.IRQInfo2 |= 1 << irq_list[i];
-+
-+ link->irq.Handler = dtl1_interrupt;
-+ link->irq.Instance = info;
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.Vcc = 50;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ /* Register with Card Services */
-+ link->next = dev_list;
-+ dev_list = link;
-+ client_reg.dev_info = &dev_info;
-+ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
-+ client_reg.EventMask =
-+ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
-+ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
-+ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
-+ client_reg.event_handler = &dtl1_event;
-+ client_reg.Version = 0x0210;
-+ client_reg.event_callback_args.client_data = link;
-+
-+ ret = CardServices(RegisterClient, &link->handle, &client_reg);
-+ if (ret != CS_SUCCESS) {
-+ cs_error(link->handle, RegisterClient, ret);
-+ dtl1_detach(link);
-+ return NULL;
-+ }
-+
-+ return link;
-+}
-+
-+
-+void dtl1_detach(dev_link_t *link)
-+{
-+ dtl1_info_t *info = link->priv;
-+ dev_link_t **linkp;
-+ int ret;
-+
-+ /* Locate device structure */
-+ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
-+ if (*linkp == link)
-+ break;
-+
-+ if (*linkp == NULL)
-+ return;
-+
-+ del_timer(&link->release);
-+ if (link->state & DEV_CONFIG)
-+ dtl1_release((u_long)link);
-+
-+ if (link->handle) {
-+ ret = CardServices(DeregisterClient, link->handle);
-+ if (ret != CS_SUCCESS)
-+ cs_error(link->handle, DeregisterClient, ret);
-+ }
-+
-+ /* Unlink device structure, free bits */
-+ *linkp = link->next;
-+
-+ kfree(info);
-+}
-+
-+
-+static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse)
-+{
-+ int i;
-+
-+ i = CardServices(fn, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return CS_NO_MORE_ITEMS;
-+
-+ i = CardServices(GetTupleData, handle, tuple);
-+ if (i != CS_SUCCESS)
-+ return i;
-+
-+ return CardServices(ParseTuple, handle, tuple, parse);
-+}
-+
-+
-+#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c)
-+#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c)
-+
-+void dtl1_config(dev_link_t *link)
-+{
-+ client_handle_t handle = link->handle;
-+ dtl1_info_t *info = link->priv;
-+ tuple_t tuple;
-+ u_short buf[256];
-+ cisparse_t parse;
-+ cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
-+ int i, last_ret, last_fn;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+
-+ /* Get configuration register information */
-+ tuple.DesiredTuple = CISTPL_CONFIG;
-+ last_ret = first_tuple(handle, &tuple, &parse);
-+ if (last_ret != CS_SUCCESS) {
-+ last_fn = ParseTuple;
-+ goto cs_failed;
-+ }
-+ link->conf.ConfigBase = parse.config.base;
-+ link->conf.Present = parse.config.rmask[0];
-+
-+ /* Configure card */
-+ link->state |= DEV_CONFIG;
-+ i = CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
-+ tuple.TupleData = (cisdata_t *)buf;
-+ tuple.TupleOffset = 0;
-+ tuple.TupleDataMax = 255;
-+ tuple.Attributes = 0;
-+ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-+
-+ /* Look for a generic full-sized window */
-+ link->io.NumPorts1 = 8;
-+ i = first_tuple(handle, &tuple, &parse);
-+ while (i != CS_NO_MORE_ITEMS) {
-+ if ((i == CS_SUCCESS) && (cf->io.nwin == 1) && (cf->io.win[0].len > 8)) {
-+ link->conf.ConfigIndex = cf->index;
-+ link->io.BasePort1 = cf->io.win[0].base;
-+ link->io.NumPorts1 = cf->io.win[0].len; /*yo */
-+ link->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK;
-+ i = CardServices(RequestIO, link->handle, &link->io);
-+ if (i == CS_SUCCESS)
-+ break;
-+ }
-+ i = next_tuple(handle, &tuple, &parse);
-+ }
-+
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIO, i);
-+ goto failed;
-+ }
-+
-+ i = CardServices(RequestIRQ, link->handle, &link->irq);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestIRQ, i);
-+ link->irq.AssignedIRQ = 0;
-+ }
-+
-+ i = CardServices(RequestConfiguration, link->handle, &link->conf);
-+ if (i != CS_SUCCESS) {
-+ cs_error(link->handle, RequestConfiguration, i);
-+ goto failed;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ if (dtl1_open(info) != 0)
-+ goto failed;
-+
-+ strcpy(info->node.dev_name, info->hdev.name);
-+ link->dev = &info->node;
-+ link->state &= ~DEV_CONFIG_PENDING;
-+
-+ return;
-+
-+cs_failed:
-+ cs_error(link->handle, last_fn, last_ret);
-+
-+failed:
-+ dtl1_release((u_long)link);
-+}
-+
-+
-+void dtl1_release(u_long arg)
-+{
-+ dev_link_t *link = (dev_link_t *)arg;
-+ dtl1_info_t *info = link->priv;
-+
-+ if (link->state & DEV_PRESENT)
-+ dtl1_close(info);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ link->dev = NULL;
-+
-+ CardServices(ReleaseConfiguration, link->handle);
-+ CardServices(ReleaseIO, link->handle, &link->io);
-+ CardServices(ReleaseIRQ, link->handle, &link->irq);
-+
-+ link->state &= ~DEV_CONFIG;
-+}
-+
-+
-+int dtl1_event(event_t event, int priority, event_callback_args_t *args)
-+{
-+ dev_link_t *link = args->client_data;
-+ dtl1_info_t *info = link->priv;
-+
-+ switch (event) {
-+ case CS_EVENT_CARD_REMOVAL:
-+ link->state &= ~DEV_PRESENT;
-+ if (link->state & DEV_CONFIG) {
-+ dtl1_close(info);
-+ mod_timer(&link->release, jiffies + HZ / 20);
-+ }
-+ break;
-+ case CS_EVENT_CARD_INSERTION:
-+ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-+ dtl1_config(link);
-+ break;
-+ case CS_EVENT_PM_SUSPEND:
-+ link->state |= DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_RESET_PHYSICAL:
-+ if (link->state & DEV_CONFIG)
-+ CardServices(ReleaseConfiguration, link->handle);
-+ break;
-+ case CS_EVENT_PM_RESUME:
-+ link->state &= ~DEV_SUSPEND;
-+ /* Fall through... */
-+ case CS_EVENT_CARD_RESET:
-+ if (DEV_OK(link))
-+ CardServices(RequestConfiguration, link->handle, &link->conf);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+/* ======================== Module initialization ======================== */
-+
-+
-+int __init init_dtl1_cs(void)
-+{
-+ servinfo_t serv;
-+ int err;
-+
-+ CardServices(GetCardServicesInfo, &serv);
-+ if (serv.Revision != CS_RELEASE_CODE) {
-+ printk(KERN_NOTICE "dtl1_cs: Card Services release does not match!\n");
-+ return -1;
-+ }
-+
-+ err = register_pccard_driver(&dev_info, &dtl1_attach, &dtl1_detach);
-+
-+ return err;
-+}
-+
-+
-+void __exit exit_dtl1_cs(void)
-+{
-+ unregister_pccard_driver(&dev_info);
-+
-+ while (dev_list != NULL)
-+ dtl1_detach(dev_list);
-+}
-+
-+
-+module_init(init_dtl1_cs);
-+module_exit(exit_dtl1_cs);
-+
-+EXPORT_NO_SYMBOLS;
-diff -urN linux-2.4.18/drivers/bluetooth/hci_bcsp.c linux-2.4.18-mh9/drivers/bluetooth/hci_bcsp.c
---- linux-2.4.18/drivers/bluetooth/hci_bcsp.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/hci_bcsp.c Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,710 @@
-+/*
-+ BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ).
-+ Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com>
-+
-+ Based on
-+ hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com>
-+ ABCSP by Carl Orsborn <cjo@csr.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_bcsp.c,v 1.2 2002/09/26 05:05:14 maxk Exp $
-+ */
-+
-+#define VERSION "0.1"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/version.h>
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/poll.h>
-+
-+#include <linux/slab.h>
-+#include <linux/tty.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/signal.h>
-+#include <linux/ioctl.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include "hci_uart.h"
-+#include "hci_bcsp.h"
-+
-+#ifndef HCI_UART_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
-+#endif
-+
-+/* ---- BCSP CRC calculation ---- */
-+
-+/* Table for calculating CRC for polynomial 0x1021, LSB processed first,
-+initial value 0xffff, bits shifted in reverse order. */
-+
-+static const u16 crc_table[] = {
-+ 0x0000, 0x1081, 0x2102, 0x3183,
-+ 0x4204, 0x5285, 0x6306, 0x7387,
-+ 0x8408, 0x9489, 0xa50a, 0xb58b,
-+ 0xc60c, 0xd68d, 0xe70e, 0xf78f
-+};
-+
-+/* Initialise the crc calculator */
-+#define BCSP_CRC_INIT(x) x = 0xffff
-+
-+/*
-+ Update crc with next data byte
-+
-+ Implementation note
-+ The data byte is treated as two nibbles. The crc is generated
-+ in reverse, i.e., bits are fed into the register from the top.
-+*/
-+static void bcsp_crc_update(u16 *crc, u8 d)
-+{
-+ u16 reg = *crc;
-+
-+ reg = (reg >> 4) ^ crc_table[(reg ^ d) & 0x000f];
-+ reg = (reg >> 4) ^ crc_table[(reg ^ (d >> 4)) & 0x000f];
-+
-+ *crc = reg;
-+}
-+
-+/*
-+ Get reverse of generated crc
-+
-+ Implementation note
-+ The crc generator (bcsp_crc_init() and bcsp_crc_update())
-+ creates a reversed crc, so it needs to be swapped back before
-+ being passed on.
-+*/
-+static u16 bcsp_crc_reverse(u16 crc)
-+{
-+ u16 b, rev;
-+
-+ for (b = 0, rev = 0; b < 16; b++) {
-+ rev = rev << 1;
-+ rev |= (crc & 1);
-+ crc = crc >> 1;
-+ }
-+ return (rev);
-+}
-+
-+/* ---- BCSP core ---- */
-+
-+static void bcsp_slip_msgdelim(struct sk_buff *skb)
-+{
-+ const char pkt_delim = 0xc0;
-+ memcpy(skb_put(skb, 1), &pkt_delim, 1);
-+}
-+
-+static void bcsp_slip_one_byte(struct sk_buff *skb, u8 c)
-+{
-+ const char esc_c0[2] = { 0xdb, 0xdc };
-+ const char esc_db[2] = { 0xdb, 0xdd };
-+
-+ switch (c) {
-+ case 0xc0:
-+ memcpy(skb_put(skb, 2), &esc_c0, 2);
-+ break;
-+ case 0xdb:
-+ memcpy(skb_put(skb, 2), &esc_db, 2);
-+ break;
-+ default:
-+ memcpy(skb_put(skb, 1), &c, 1);
-+ }
-+}
-+
-+static int bcsp_enqueue(struct hci_uart *hu, struct sk_buff *skb)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+
-+ if (skb->len > 0xFFF) {
-+ BT_ERR("Packet too long");
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+
-+ switch (skb->pkt_type) {
-+ case HCI_ACLDATA_PKT:
-+ case HCI_COMMAND_PKT:
-+ skb_queue_tail(&bcsp->rel, skb);
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ skb_queue_tail(&bcsp->unrel, skb);
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown packet type");
-+ kfree_skb(skb);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data,
-+ int len, int pkt_type)
-+{
-+ struct sk_buff *nskb;
-+ u8 hdr[4], chan;
-+ int rel, i;
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ u16 BCSP_CRC_INIT(bcsp_txmsg_crc);
-+#endif
-+
-+ switch (pkt_type) {
-+ case HCI_ACLDATA_PKT:
-+ chan = 6; /* BCSP ACL channel */
-+ rel = 1; /* reliable channel */
-+ break;
-+ case HCI_COMMAND_PKT:
-+ chan = 5; /* BCSP cmd/evt channel */
-+ rel = 1; /* reliable channel */
-+ break;
-+ case HCI_SCODATA_PKT:
-+ chan = 7; /* BCSP SCO channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ case BCSP_LE_PKT:
-+ chan = 1; /* BCSP LE channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ case BCSP_ACK_PKT:
-+ chan = 0; /* BCSP internal channel */
-+ rel = 0; /* unreliable channel */
-+ break;
-+ default:
-+ BT_ERR("Unknown packet type");
-+ return NULL;
-+ }
-+
-+ /* Max len of packet: (original len +4(bcsp hdr) +2(crc))*2
-+ (because bytes 0xc0 and 0xdb are escaped, worst case is
-+ when the packet is all made of 0xc0 and 0xdb :) )
-+ + 2 (0xc0 delimiters at start and end). */
-+
-+ nskb = alloc_skb((len + 6) * 2 + 2, GFP_ATOMIC);
-+ if (!nskb)
-+ return NULL;
-+
-+ nskb->pkt_type = pkt_type;
-+
-+ bcsp_slip_msgdelim(nskb);
-+
-+ hdr[0] = bcsp->rxseq_txack << 3;
-+ bcsp->txack_req = 0;
-+ BT_DBG("We request packet no %u to card", bcsp->rxseq_txack);
-+
-+ if (rel) {
-+ hdr[0] |= 0x80 + bcsp->msgq_txseq;
-+ BT_DBG("Sending packet with seqno %u", bcsp->msgq_txseq);
-+ bcsp->msgq_txseq = ++(bcsp->msgq_txseq) & 0x07;
-+ }
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ hdr[0] |= 0x40;
-+#endif
-+
-+ hdr[1] = (len << 4) & 0xFF;
-+ hdr[1] |= chan;
-+ hdr[2] = len >> 4;
-+ hdr[3] = ~(hdr[0] + hdr[1] + hdr[2]);
-+
-+ /* Put BCSP header */
-+ for (i = 0; i < 4; i++) {
-+ bcsp_slip_one_byte(nskb, hdr[i]);
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ bcsp_crc_update(&bcsp_txmsg_crc, hdr[i]);
-+#endif
-+ }
-+
-+ /* Put payload */
-+ for (i = 0; i < len; i++) {
-+ bcsp_slip_one_byte(nskb, data[i]);
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ bcsp_crc_update(&bcsp_txmsg_crc, data[i]);
-+#endif
-+ }
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC
-+ /* Put CRC */
-+ bcsp_txmsg_crc = bcsp_crc_reverse(bcsp_txmsg_crc);
-+ bcsp_slip_one_byte(nskb, (u8) ((bcsp_txmsg_crc >> 8) & 0x00ff));
-+ bcsp_slip_one_byte(nskb, (u8) (bcsp_txmsg_crc & 0x00ff));
-+#endif
-+
-+ bcsp_slip_msgdelim(nskb);
-+ return nskb;
-+}
-+
-+/* This is a rewrite of pkt_avail in ABCSP */
-+static struct sk_buff *bcsp_dequeue(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = (struct bcsp_struct *) hu->priv;
-+ unsigned long flags;
-+ struct sk_buff *skb;
-+
-+ /* First of all, check for unreliable messages in the queue,
-+ since they have priority */
-+
-+ if ((skb = skb_dequeue(&bcsp->unrel)) != NULL) {
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, skb->data, skb->len, skb->pkt_type);
-+ if (nskb) {
-+ kfree_skb(skb);
-+ return nskb;
-+ } else {
-+ skb_queue_head(&bcsp->unrel, skb);
-+ BT_ERR("Could not dequeue pkt because alloc_skb failed");
-+ }
-+ }
-+
-+ /* Now, try to send a reliable pkt. We can only send a
-+ reliable packet if the number of packets sent but not yet ack'ed
-+ is < than the winsize */
-+
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ if (bcsp->unack.qlen < BCSP_TXWINSIZE && (skb = skb_dequeue(&bcsp->rel)) != NULL) {
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, skb->data, skb->len, skb->pkt_type);
-+ if (nskb) {
-+ __skb_queue_tail(&bcsp->unack, skb);
-+ mod_timer(&bcsp->tbcsp, jiffies + HZ / 4);
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+ return nskb;
-+ } else {
-+ skb_queue_head(&bcsp->rel, skb);
-+ BT_ERR("Could not dequeue pkt because alloc_skb failed");
-+ }
-+ }
-+
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+
-+ /* We could not send a reliable packet, either because there are
-+ none or because there are too many unack'ed pkts. Did we receive
-+ any packets we have not acknowledged yet ? */
-+
-+ if (bcsp->txack_req) {
-+ /* if so, craft an empty ACK pkt and send it on BCSP unreliable
-+ channel 0 */
-+ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, NULL, 0, BCSP_ACK_PKT);
-+ return nskb;
-+ }
-+
-+ /* We have nothing to send */
-+ return NULL;
-+}
-+
-+static int bcsp_flush(struct hci_uart *hu)
-+{
-+ BT_DBG("hu %p", hu);
-+ return 0;
-+}
-+
-+/* Remove ack'ed packets */
-+static void bcsp_pkt_cull(struct bcsp_struct *bcsp)
-+{
-+ unsigned long flags;
-+ struct sk_buff *skb;
-+ int i, pkts_to_be_removed;
-+ u8 seqno;
-+
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ pkts_to_be_removed = bcsp->unack.qlen;
-+ seqno = bcsp->msgq_txseq;
-+
-+ while (pkts_to_be_removed) {
-+ if (bcsp->rxack == seqno)
-+ break;
-+ pkts_to_be_removed--;
-+ seqno = (seqno - 1) & 0x07;
-+ }
-+
-+ if (bcsp->rxack != seqno)
-+ BT_ERR("Peer acked invalid packet");
-+
-+ BT_DBG("Removing %u pkts out of %u, up to seqno %u",
-+ pkts_to_be_removed, bcsp->unack.qlen, (seqno - 1) & 0x07);
-+
-+ for (i = 0, skb = ((struct sk_buff *) &bcsp->unack)->next; i < pkts_to_be_removed
-+ && skb != (struct sk_buff *) &bcsp->unack; i++) {
-+ struct sk_buff *nskb;
-+
-+ nskb = skb->next;
-+ __skb_unlink(skb, &bcsp->unack);
-+ kfree_skb(skb);
-+ skb = nskb;
-+ }
-+ if (bcsp->unack.qlen == 0)
-+ del_timer(&bcsp->tbcsp);
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+ if (i != pkts_to_be_removed)
-+ BT_ERR("Removed only %u out of %u pkts", i, pkts_to_be_removed);
-+}
-+
-+/* Handle BCSP link-establishment packets. When we
-+ detect a "sync" packet, symptom that the BT module has reset,
-+ we do nothing :) (yet) */
-+static void bcsp_handle_le_pkt(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ u8 conf_pkt[4] = { 0xad, 0xef, 0xac, 0xed };
-+ u8 conf_rsp_pkt[4] = { 0xde, 0xad, 0xd0, 0xd0 };
-+ u8 sync_pkt[4] = { 0xda, 0xdc, 0xed, 0xed };
-+
-+ /* spot "conf" pkts and reply with a "conf rsp" pkt */
-+ if (bcsp->rx_skb->data[1] >> 4 == 4 && bcsp->rx_skb->data[2] == 0 &&
-+ !memcmp(&bcsp->rx_skb->data[4], conf_pkt, 4)) {
-+ struct sk_buff *nskb = alloc_skb(4, GFP_ATOMIC);
-+
-+ BT_DBG("Found a LE conf pkt");
-+ if (!nskb)
-+ return;
-+ memcpy(skb_put(nskb, 4), conf_rsp_pkt, 4);
-+ nskb->pkt_type = BCSP_LE_PKT;
-+
-+ skb_queue_head(&bcsp->unrel, nskb);
-+ hci_uart_tx_wakeup(hu);
-+ }
-+ /* Spot "sync" pkts. If we find one...disaster! */
-+ else if (bcsp->rx_skb->data[1] >> 4 == 4 && bcsp->rx_skb->data[2] == 0 &&
-+ !memcmp(&bcsp->rx_skb->data[4], sync_pkt, 4)) {
-+ BT_ERR("Found a LE sync pkt, card has reset");
-+ }
-+}
-+
-+static inline void bcsp_unslip_one_byte(struct bcsp_struct *bcsp, unsigned char byte)
-+{
-+ const u8 c0 = 0xc0, db = 0xdb;
-+
-+ switch (bcsp->rx_esc_state) {
-+ case BCSP_ESCSTATE_NOESC:
-+ switch (byte) {
-+ case 0xdb:
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_ESC;
-+ break;
-+ default:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &byte, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp->message_crc, byte);
-+ bcsp->rx_count--;
-+ }
-+ break;
-+
-+ case BCSP_ESCSTATE_ESC:
-+ switch (byte) {
-+ case 0xdc:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &c0, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp-> message_crc, 0xc0);
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ bcsp->rx_count--;
-+ break;
-+
-+ case 0xdd:
-+ memcpy(skb_put(bcsp->rx_skb, 1), &db, 1);
-+ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 &&
-+ bcsp->rx_state != BCSP_W4_CRC)
-+ bcsp_crc_update(&bcsp-> message_crc, 0xdb);
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ bcsp->rx_count--;
-+ break;
-+
-+ default:
-+ BT_ERR ("Invalid byte %02x after esc byte", byte);
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_skb = NULL;
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ }
-+ }
-+}
-+
-+static inline void bcsp_complete_rx_pkt(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ int pass_up;
-+
-+ if (bcsp->rx_skb->data[0] & 0x80) { /* reliable pkt */
-+ BT_DBG("Received seqno %u from card", bcsp->rxseq_txack);
-+ bcsp->rxseq_txack++;
-+ bcsp->rxseq_txack %= 0x8;
-+ bcsp->txack_req = 1;
-+
-+ /* If needed, transmit an ack pkt */
-+ hci_uart_tx_wakeup(hu);
-+ }
-+
-+ bcsp->rxack = (bcsp->rx_skb->data[0] >> 3) & 0x07;
-+ BT_DBG("Request for pkt %u from card", bcsp->rxack);
-+
-+ bcsp_pkt_cull(bcsp);
-+ if ((bcsp->rx_skb->data[1] & 0x0f) == 6 &&
-+ bcsp->rx_skb->data[0] & 0x80) {
-+ bcsp->rx_skb->pkt_type = HCI_ACLDATA_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 5 &&
-+ bcsp->rx_skb->data[0] & 0x80) {
-+ bcsp->rx_skb->pkt_type = HCI_EVENT_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 7) {
-+ bcsp->rx_skb->pkt_type = HCI_SCODATA_PKT;
-+ pass_up = 1;
-+ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 1 &&
-+ !(bcsp->rx_skb->data[0] & 0x80)) {
-+ bcsp_handle_le_pkt(hu);
-+ pass_up = 0;
-+ } else
-+ pass_up = 0;
-+
-+ if (!pass_up) {
-+ if ((bcsp->rx_skb->data[1] & 0x0f) != 0 &&
-+ (bcsp->rx_skb->data[1] & 0x0f) != 1) {
-+ BT_ERR ("Packet for unknown channel (%u %s)",
-+ bcsp->rx_skb->data[1] & 0x0f,
-+ bcsp->rx_skb->data[0] & 0x80 ?
-+ "reliable" : "unreliable");
-+ }
-+ kfree_skb(bcsp->rx_skb);
-+ } else {
-+ /* Pull out BCSP hdr */
-+ skb_pull(bcsp->rx_skb, 4);
-+
-+ hci_recv_frame(bcsp->rx_skb);
-+ }
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_skb = NULL;
-+}
-+
-+/* Recv data */
-+static int bcsp_recv(struct hci_uart *hu, void *data, int count)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ register unsigned char *ptr;
-+
-+ BT_DBG("hu %p count %d rx_state %ld rx_count %ld",
-+ hu, count, bcsp->rx_state, bcsp->rx_count);
-+
-+ ptr = data;
-+ while (count) {
-+ if (bcsp->rx_count) {
-+ if (*ptr == 0xc0) {
-+ BT_ERR("Short BCSP packet");
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_START;
-+ bcsp->rx_count = 0;
-+ } else
-+ bcsp_unslip_one_byte(bcsp, *ptr);
-+
-+ ptr++; count--;
-+ continue;
-+ }
-+
-+ switch (bcsp->rx_state) {
-+ case BCSP_W4_BCSP_HDR:
-+ if ((0xff & (u8) ~ (bcsp->rx_skb->data[0] + bcsp->rx_skb->data[1] +
-+ bcsp->rx_skb->data[2])) != bcsp->rx_skb->data[3]) {
-+ BT_ERR("Error in BCSP hdr checksum");
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ if (bcsp->rx_skb->data[0] & 0x80 /* reliable pkt */
-+ && (bcsp->rx_skb->data[0] & 0x07) != bcsp->rxseq_txack) {
-+ BT_ERR ("Out-of-order packet arrived, got %u expected %u",
-+ bcsp->rx_skb->data[0] & 0x07, bcsp->rxseq_txack);
-+
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ bcsp->rx_state = BCSP_W4_DATA;
-+ bcsp->rx_count = (bcsp->rx_skb->data[1] >> 4) +
-+ (bcsp->rx_skb->data[2] << 4); /* May be 0 */
-+ continue;
-+
-+ case BCSP_W4_DATA:
-+ if (bcsp->rx_skb->data[0] & 0x40) { /* pkt with crc */
-+ bcsp->rx_state = BCSP_W4_CRC;
-+ bcsp->rx_count = 2;
-+ } else
-+ bcsp_complete_rx_pkt(hu);
-+ continue;
-+
-+ case BCSP_W4_CRC:
-+ if (bcsp_crc_reverse(bcsp->message_crc) !=
-+ (bcsp->rx_skb->data[bcsp->rx_skb->len - 2] << 8) +
-+ bcsp->rx_skb->data[bcsp->rx_skb->len - 1]) {
-+
-+ BT_ERR ("Checksum failed: computed %04x received %04x",
-+ bcsp_crc_reverse(bcsp->message_crc),
-+ (bcsp->rx_skb-> data[bcsp->rx_skb->len - 2] << 8) +
-+ bcsp->rx_skb->data[bcsp->rx_skb->len - 1]);
-+
-+ kfree_skb(bcsp->rx_skb);
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ continue;
-+ }
-+ skb_trim(bcsp->rx_skb, bcsp->rx_skb->len - 2);
-+ bcsp_complete_rx_pkt(hu);
-+ continue;
-+
-+ case BCSP_W4_PKT_DELIMITER:
-+ switch (*ptr) {
-+ case 0xc0:
-+ bcsp->rx_state = BCSP_W4_PKT_START;
-+ break;
-+ default:
-+ /*BT_ERR("Ignoring byte %02x", *ptr);*/
-+ break;
-+ }
-+ ptr++; count--;
-+ break;
-+
-+ case BCSP_W4_PKT_START:
-+ switch (*ptr) {
-+ case 0xc0:
-+ ptr++; count--;
-+ break;
-+
-+ default:
-+ bcsp->rx_state = BCSP_W4_BCSP_HDR;
-+ bcsp->rx_count = 4;
-+ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC;
-+ BCSP_CRC_INIT(bcsp->message_crc);
-+
-+ /* Do not increment ptr or decrement count
-+ * Allocate packet. Max len of a BCSP pkt=
-+ * 0xFFF (payload) +4 (header) +2 (crc) */
-+
-+ bcsp->rx_skb = bluez_skb_alloc(0x1005, GFP_ATOMIC);
-+ if (!bcsp->rx_skb) {
-+ BT_ERR("Can't allocate mem for new packet");
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+ bcsp->rx_count = 0;
-+ return 0;
-+ }
-+ bcsp->rx_skb->dev = (void *) &hu->hdev;
-+ break;
-+ }
-+ break;
-+ }
-+ }
-+ return count;
-+}
-+
-+ /* Arrange to retransmit all messages in the relq. */
-+static void bcsp_timed_event(unsigned long arg)
-+{
-+ struct hci_uart *hu = (struct hci_uart *) arg;
-+ struct bcsp_struct *bcsp = (struct bcsp_struct *) hu->priv;
-+ struct sk_buff *skb;
-+ unsigned long flags;
-+
-+ BT_ERR("Timeout, retransmitting %u pkts", bcsp->unack.qlen);
-+ spin_lock_irqsave(&bcsp->unack.lock, flags);
-+
-+ while ((skb = __skb_dequeue_tail(&bcsp->unack)) != NULL) {
-+ bcsp->msgq_txseq = (bcsp->msgq_txseq - 1) & 0x07;
-+ skb_queue_head(&bcsp->rel, skb);
-+ }
-+
-+ spin_unlock_irqrestore(&bcsp->unack.lock, flags);
-+
-+ hci_uart_tx_wakeup(hu);
-+}
-+
-+static int bcsp_open(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ bcsp = kmalloc(sizeof(*bcsp), GFP_ATOMIC);
-+ if (!bcsp)
-+ return -ENOMEM;
-+ memset(bcsp, 0, sizeof(*bcsp));
-+
-+ hu->priv = bcsp;
-+ skb_queue_head_init(&bcsp->unack);
-+ skb_queue_head_init(&bcsp->rel);
-+ skb_queue_head_init(&bcsp->unrel);
-+
-+ init_timer(&bcsp->tbcsp);
-+ bcsp->tbcsp.function = bcsp_timed_event;
-+ bcsp->tbcsp.data = (u_long) hu;
-+
-+ bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
-+
-+ return 0;
-+}
-+
-+static int bcsp_close(struct hci_uart *hu)
-+{
-+ struct bcsp_struct *bcsp = hu->priv;
-+ hu->priv = NULL;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ skb_queue_purge(&bcsp->unack);
-+ skb_queue_purge(&bcsp->rel);
-+ skb_queue_purge(&bcsp->unrel);
-+ del_timer(&bcsp->tbcsp);
-+
-+ kfree(bcsp);
-+ return 0;
-+}
-+
-+static struct hci_uart_proto bcsp = {
-+ id: HCI_UART_BCSP,
-+ open: bcsp_open,
-+ close: bcsp_close,
-+ enqueue: bcsp_enqueue,
-+ dequeue: bcsp_dequeue,
-+ recv: bcsp_recv,
-+ flush: bcsp_flush
-+};
-+
-+int bcsp_init(void)
-+{
-+ return hci_uart_register_proto(&bcsp);
-+}
-+
-+int bcsp_deinit(void)
-+{
-+ return hci_uart_unregister_proto(&bcsp);
-+}
-diff -urN linux-2.4.18/drivers/bluetooth/hci_bcsp.h linux-2.4.18-mh9/drivers/bluetooth/hci_bcsp.h
---- linux-2.4.18/drivers/bluetooth/hci_bcsp.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/hci_bcsp.h Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,70 @@
-+/*
-+ BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ).
-+ Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com>
-+
-+ Based on
-+ hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com>
-+ ABCSP by Carl Orsborn <cjo@csr.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_bcsp.h,v 1.2 2002/09/26 05:05:14 maxk Exp $
-+ */
-+
-+#ifndef __HCI_BCSP_H__
-+#define __HCI_BCSP_H__
-+
-+#define BCSP_TXWINSIZE 4
-+
-+#define BCSP_ACK_PKT 0x05
-+#define BCSP_LE_PKT 0x06
-+
-+struct bcsp_struct {
-+ struct sk_buff_head unack; /* Unack'ed packets queue */
-+ struct sk_buff_head rel; /* Reliable packets queue */
-+ struct sk_buff_head unrel; /* Unreliable packets queue */
-+
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+ u8 rxseq_txack; /* rxseq == txack. */
-+ u8 rxack; /* Last packet sent by us that the peer ack'ed */
-+ struct timer_list tbcsp;
-+
-+ enum {
-+ BCSP_W4_PKT_DELIMITER,
-+ BCSP_W4_PKT_START,
-+ BCSP_W4_BCSP_HDR,
-+ BCSP_W4_DATA,
-+ BCSP_W4_CRC
-+ } rx_state;
-+
-+ enum {
-+ BCSP_ESCSTATE_NOESC,
-+ BCSP_ESCSTATE_ESC
-+ } rx_esc_state;
-+
-+ u16 message_crc;
-+ u8 txack_req; /* Do we need to send ack's to the peer? */
-+
-+ /* Reliable packet sequence number - used to assign seq to each rel pkt. */
-+ u8 msgq_txseq;
-+};
-+
-+#endif /* __HCI_BCSP_H__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_h4.c linux-2.4.18-mh9/drivers/bluetooth/hci_h4.c
---- linux-2.4.18/drivers/bluetooth/hci_h4.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/hci_h4.c Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,277 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ HCI UART(H4) protocol.
-+ *
-+ * $Id: hci_h4.c,v 1.3 2002/09/09 01:17:32 maxk Exp $
-+ */
-+#define VERSION "1.2"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/poll.h>
-+
-+#include <linux/slab.h>
-+#include <linux/tty.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/signal.h>
-+#include <linux/ioctl.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include "hci_uart.h"
-+#include "hci_h4.h"
-+
-+#ifndef HCI_UART_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
-+#endif
-+
-+/* Initialize protocol */
-+static int h4_open(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ h4 = kmalloc(sizeof(*h4), GFP_ATOMIC);
-+ if (!h4)
-+ return -ENOMEM;
-+ memset(h4, 0, sizeof(*h4));
-+
-+ skb_queue_head_init(&h4->txq);
-+
-+ hu->priv = h4;
-+ return 0;
-+}
-+
-+/* Flush protocol data */
-+static int h4_flush(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+
-+ BT_DBG("hu %p", hu);
-+ skb_queue_purge(&h4->txq);
-+ return 0;
-+}
-+
-+/* Close protocol */
-+static int h4_close(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+ hu->priv = NULL;
-+
-+ BT_DBG("hu %p", hu);
-+
-+ skb_queue_purge(&h4->txq);
-+ if (h4->rx_skb)
-+ kfree_skb(h4->rx_skb);
-+
-+ hu->priv = NULL;
-+ kfree(h4);
-+ return 0;
-+}
-+
-+/* Enqueue frame for transmittion (padding, crc, etc) */
-+static int h4_enqueue(struct hci_uart *hu, struct sk_buff *skb)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+
-+ BT_DBG("hu %p skb %p", hu, skb);
-+
-+ /* Prepend skb with frame type */
-+ memcpy(skb_push(skb, 1), &skb->pkt_type, 1);
-+ skb_queue_tail(&h4->txq, skb);
-+ return 0;
-+}
-+
-+static inline int h4_check_data_len(struct h4_struct *h4, int len)
-+{
-+ register int room = skb_tailroom(h4->rx_skb);
-+
-+ BT_DBG("len %d room %d", len, room);
-+ if (!len) {
-+ BT_DMP(h4->rx_skb->data, h4->rx_skb->len);
-+ hci_recv_frame(h4->rx_skb);
-+ } else if (len > room) {
-+ BT_ERR("Data length is too large");
-+ kfree_skb(h4->rx_skb);
-+ } else {
-+ h4->rx_state = H4_W4_DATA;
-+ h4->rx_count = len;
-+ return len;
-+ }
-+
-+ h4->rx_state = H4_W4_PACKET_TYPE;
-+ h4->rx_skb = NULL;
-+ h4->rx_count = 0;
-+ return 0;
-+}
-+
-+/* Recv data */
-+static int h4_recv(struct hci_uart *hu, void *data, int count)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+ register char *ptr;
-+ hci_event_hdr *eh;
-+ hci_acl_hdr *ah;
-+ hci_sco_hdr *sh;
-+ register int len, type, dlen;
-+
-+ BT_DBG("hu %p count %d rx_state %ld rx_count %ld",
-+ hu, count, h4->rx_state, h4->rx_count);
-+
-+ ptr = data;
-+ while (count) {
-+ if (h4->rx_count) {
-+ len = MIN(h4->rx_count, count);
-+ memcpy(skb_put(h4->rx_skb, len), ptr, len);
-+ h4->rx_count -= len; count -= len; ptr += len;
-+
-+ if (h4->rx_count)
-+ continue;
-+
-+ switch (h4->rx_state) {
-+ case H4_W4_DATA:
-+ BT_DBG("Complete data");
-+
-+ BT_DMP(h4->rx_skb->data, h4->rx_skb->len);
-+
-+ hci_recv_frame(h4->rx_skb);
-+
-+ h4->rx_state = H4_W4_PACKET_TYPE;
-+ h4->rx_skb = NULL;
-+ continue;
-+
-+ case H4_W4_EVENT_HDR:
-+ eh = (hci_event_hdr *) h4->rx_skb->data;
-+
-+ BT_DBG("Event header: evt 0x%2.2x plen %d", eh->evt, eh->plen);
-+
-+ h4_check_data_len(h4, eh->plen);
-+ continue;
-+
-+ case H4_W4_ACL_HDR:
-+ ah = (hci_acl_hdr *) h4->rx_skb->data;
-+ dlen = __le16_to_cpu(ah->dlen);
-+
-+ BT_DBG("ACL header: dlen %d", dlen);
-+
-+ h4_check_data_len(h4, dlen);
-+ continue;
-+
-+ case H4_W4_SCO_HDR:
-+ sh = (hci_sco_hdr *) h4->rx_skb->data;
-+
-+ BT_DBG("SCO header: dlen %d", sh->dlen);
-+
-+ h4_check_data_len(h4, sh->dlen);
-+ continue;
-+ }
-+ }
-+
-+ /* H4_W4_PACKET_TYPE */
-+ switch (*ptr) {
-+ case HCI_EVENT_PKT:
-+ BT_DBG("Event packet");
-+ h4->rx_state = H4_W4_EVENT_HDR;
-+ h4->rx_count = HCI_EVENT_HDR_SIZE;
-+ type = HCI_EVENT_PKT;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ BT_DBG("ACL packet");
-+ h4->rx_state = H4_W4_ACL_HDR;
-+ h4->rx_count = HCI_ACL_HDR_SIZE;
-+ type = HCI_ACLDATA_PKT;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ BT_DBG("SCO packet");
-+ h4->rx_state = H4_W4_SCO_HDR;
-+ h4->rx_count = HCI_SCO_HDR_SIZE;
-+ type = HCI_SCODATA_PKT;
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown HCI packet type %2.2x", (__u8)*ptr);
-+ hu->hdev.stat.err_rx++;
-+ ptr++; count--;
-+ continue;
-+ };
-+ ptr++; count--;
-+
-+ /* Allocate packet */
-+ h4->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC);
-+ if (!h4->rx_skb) {
-+ BT_ERR("Can't allocate mem for new packet");
-+ h4->rx_state = H4_W4_PACKET_TYPE;
-+ h4->rx_count = 0;
-+ return 0;
-+ }
-+ h4->rx_skb->dev = (void *) &hu->hdev;
-+ h4->rx_skb->pkt_type = type;
-+ }
-+ return count;
-+}
-+
-+static struct sk_buff *h4_dequeue(struct hci_uart *hu)
-+{
-+ struct h4_struct *h4 = hu->priv;
-+ return skb_dequeue(&h4->txq);
-+}
-+
-+static struct hci_uart_proto h4p = {
-+ id: HCI_UART_H4,
-+ open: h4_open,
-+ close: h4_close,
-+ recv: h4_recv,
-+ enqueue: h4_enqueue,
-+ dequeue: h4_dequeue,
-+ flush: h4_flush,
-+};
-+
-+int h4_init(void)
-+{
-+ return hci_uart_register_proto(&h4p);
-+}
-+
-+int h4_deinit(void)
-+{
-+ return hci_uart_unregister_proto(&h4p);
-+}
-diff -urN linux-2.4.18/drivers/bluetooth/hci_h4.h linux-2.4.18-mh9/drivers/bluetooth/hci_h4.h
---- linux-2.4.18/drivers/bluetooth/hci_h4.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/hci_h4.h Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,44 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_h4.h,v 1.2 2002/09/09 01:17:32 maxk Exp $
-+ */
-+
-+#ifdef __KERNEL__
-+struct h4_struct {
-+ unsigned long rx_state;
-+ unsigned long rx_count;
-+ struct sk_buff *rx_skb;
-+ struct sk_buff_head txq;
-+};
-+
-+/* H4 receiver States */
-+#define H4_W4_PACKET_TYPE 0
-+#define H4_W4_EVENT_HDR 1
-+#define H4_W4_ACL_HDR 2
-+#define H4_W4_SCO_HDR 3
-+#define H4_W4_DATA 4
-+
-+#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_ldisc.c linux-2.4.18-mh9/drivers/bluetooth/hci_ldisc.c
---- linux-2.4.18/drivers/bluetooth/hci_ldisc.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/hci_ldisc.c Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,580 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ HCI UART driver.
-+ *
-+ * $Id: hci_ldisc.c,v 1.5 2002/10/02 18:37:20 maxk Exp $
-+ */
-+#define VERSION "2.1"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/version.h>
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/poll.h>
-+
-+#include <linux/slab.h>
-+#include <linux/tty.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/signal.h>
-+#include <linux/ioctl.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include "hci_uart.h"
-+
-+#ifndef HCI_UART_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
-+#endif
-+
-+static struct hci_uart_proto *hup[HCI_UART_MAX_PROTO];
-+
-+int hci_uart_register_proto(struct hci_uart_proto *p)
-+{
-+ if (p->id >= HCI_UART_MAX_PROTO)
-+ return -EINVAL;
-+
-+ if (hup[p->id])
-+ return -EEXIST;
-+
-+ hup[p->id] = p;
-+ return 0;
-+}
-+
-+int hci_uart_unregister_proto(struct hci_uart_proto *p)
-+{
-+ if (p->id >= HCI_UART_MAX_PROTO)
-+ return -EINVAL;
-+
-+ if (!hup[p->id])
-+ return -EINVAL;
-+
-+ hup[p->id] = NULL;
-+ return 0;
-+}
-+
-+static struct hci_uart_proto *hci_uart_get_proto(unsigned int id)
-+{
-+ if (id >= HCI_UART_MAX_PROTO)
-+ return NULL;
-+ return hup[id];
-+}
-+
-+static inline void hci_uart_tx_complete(struct hci_uart *hu, int pkt_type)
-+{
-+ struct hci_dev *hdev = &hu->hdev;
-+
-+ /* Update HCI stat counters */
-+ switch (pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+ }
-+}
-+
-+static inline struct sk_buff *hci_uart_dequeue(struct hci_uart *hu)
-+{
-+ struct sk_buff *skb = hu->tx_skb;
-+ if (!skb)
-+ skb = hu->proto->dequeue(hu);
-+ else
-+ hu->tx_skb = NULL;
-+ return skb;
-+}
-+
-+int hci_uart_tx_wakeup(struct hci_uart *hu)
-+{
-+ struct tty_struct *tty = hu->tty;
-+ struct hci_dev *hdev = &hu->hdev;
-+ struct sk_buff *skb;
-+
-+ if (test_and_set_bit(HCI_UART_SENDING, &hu->tx_state)) {
-+ set_bit(HCI_UART_TX_WAKEUP, &hu->tx_state);
-+ return 0;
-+ }
-+
-+ BT_DBG("");
-+
-+restart:
-+ clear_bit(HCI_UART_TX_WAKEUP, &hu->tx_state);
-+
-+ while ((skb = hci_uart_dequeue(hu))) {
-+ int len;
-+
-+ set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
-+ len = tty->driver.write(tty, 0, skb->data, skb->len);
-+ hdev->stat.byte_tx += len;
-+
-+ skb_pull(skb, len);
-+ if (skb->len) {
-+ hu->tx_skb = skb;
-+ break;
-+ }
-+
-+ hci_uart_tx_complete(hu, skb->pkt_type);
-+ kfree_skb(skb);
-+ }
-+
-+ if (test_bit(HCI_UART_TX_WAKEUP, &hu->tx_state))
-+ goto restart;
-+
-+ clear_bit(HCI_UART_SENDING, &hu->tx_state);
-+ return 0;
-+}
-+
-+/* ------- Interface to HCI layer ------ */
-+/* Initialize device */
-+static int hci_uart_open(struct hci_dev *hdev)
-+{
-+ BT_DBG("%s %p", hdev->name, hdev);
-+
-+ /* Nothing to do for UART driver */
-+
-+ set_bit(HCI_RUNNING, &hdev->flags);
-+ return 0;
-+}
-+
-+/* Reset device */
-+static int hci_uart_flush(struct hci_dev *hdev)
-+{
-+ struct hci_uart *hu = (struct hci_uart *) hdev->driver_data;
-+ struct tty_struct *tty = hu->tty;
-+
-+ BT_DBG("hdev %p tty %p", hdev, tty);
-+
-+ if (hu->tx_skb) {
-+ kfree_skb(hu->tx_skb); hu->tx_skb = NULL;
-+ }
-+
-+ /* Flush any pending characters in the driver and discipline. */
-+ if (tty->ldisc.flush_buffer)
-+ tty->ldisc.flush_buffer(tty);
-+
-+ if (tty->driver.flush_buffer)
-+ tty->driver.flush_buffer(tty);
-+
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ hu->proto->flush(hu);
-+
-+ return 0;
-+}
-+
-+/* Close device */
-+static int hci_uart_close(struct hci_dev *hdev)
-+{
-+ BT_DBG("hdev %p", hdev);
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
-+ hci_uart_flush(hdev);
-+ return 0;
-+}
-+
-+/* Send frames from HCI layer */
-+static int hci_uart_send_frame(struct sk_buff *skb)
-+{
-+ struct hci_dev* hdev = (struct hci_dev *) skb->dev;
-+ struct tty_struct *tty;
-+ struct hci_uart *hu;
-+
-+ if (!hdev) {
-+ BT_ERR("Frame for uknown device (hdev=NULL)");
-+ return -ENODEV;
-+ }
-+
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return -EBUSY;
-+
-+ hu = (struct hci_uart *) hdev->driver_data;
-+ tty = hu->tty;
-+
-+ BT_DBG("%s: type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+
-+ hu->proto->enqueue(hu, skb);
-+
-+ hci_uart_tx_wakeup(hu);
-+ return 0;
-+}
-+
-+static void hci_uart_destruct(struct hci_dev *hdev)
-+{
-+ struct hci_uart *hu;
-+
-+ if (!hdev) return;
-+
-+ BT_DBG("%s", hdev->name);
-+
-+ hu = (struct hci_uart *) hdev->driver_data;
-+ kfree(hu);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+/* ------ LDISC part ------ */
-+/* hci_uart_tty_open
-+ *
-+ * Called when line discipline changed to HCI_UART.
-+ *
-+ * Arguments:
-+ * tty pointer to tty info structure
-+ * Return Value:
-+ * 0 if success, otherwise error code
-+ */
-+static int hci_uart_tty_open(struct tty_struct *tty)
-+{
-+ struct hci_uart *hu = (void *) tty->disc_data;
-+
-+ BT_DBG("tty %p", tty);
-+
-+ if (hu)
-+ return -EEXIST;
-+
-+ if (!(hu = kmalloc(sizeof(struct hci_uart), GFP_KERNEL))) {
-+ BT_ERR("Can't allocate controll structure");
-+ return -ENFILE;
-+ }
-+ memset(hu, 0, sizeof(struct hci_uart));
-+
-+ tty->disc_data = hu;
-+ hu->tty = tty;
-+
-+ spin_lock_init(&hu->rx_lock);
-+
-+ /* Flush any pending characters in the driver and line discipline */
-+ if (tty->ldisc.flush_buffer)
-+ tty->ldisc.flush_buffer(tty);
-+
-+ if (tty->driver.flush_buffer)
-+ tty->driver.flush_buffer(tty);
-+
-+ MOD_INC_USE_COUNT;
-+ return 0;
-+}
-+
-+/* hci_uart_tty_close()
-+ *
-+ * Called when the line discipline is changed to something
-+ * else, the tty is closed, or the tty detects a hangup.
-+ */
-+static void hci_uart_tty_close(struct tty_struct *tty)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+
-+ BT_DBG("tty %p", tty);
-+
-+ /* Detach from the tty */
-+ tty->disc_data = NULL;
-+
-+ if (hu) {
-+ struct hci_dev *hdev = &hu->hdev;
-+ hci_uart_close(hdev);
-+
-+ if (test_and_clear_bit(HCI_UART_PROTO_SET, &hu->flags)) {
-+ hu->proto->close(hu);
-+ hci_unregister_dev(hdev);
-+ }
-+
-+ MOD_DEC_USE_COUNT;
-+ }
-+}
-+
-+/* hci_uart_tty_wakeup()
-+ *
-+ * Callback for transmit wakeup. Called when low level
-+ * device driver can accept more send data.
-+ *
-+ * Arguments: tty pointer to associated tty instance data
-+ * Return Value: None
-+ */
-+static void hci_uart_tty_wakeup(struct tty_struct *tty)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+
-+ BT_DBG("");
-+
-+ if (!hu)
-+ return;
-+
-+ clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
-+
-+ if (tty != hu->tty)
-+ return;
-+
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ hci_uart_tx_wakeup(hu);
-+}
-+
-+/* hci_uart_tty_room()
-+ *
-+ * Callback function from tty driver. Return the amount of
-+ * space left in the receiver's buffer to decide if remote
-+ * transmitter is to be throttled.
-+ *
-+ * Arguments: tty pointer to associated tty instance data
-+ * Return Value: number of bytes left in receive buffer
-+ */
-+static int hci_uart_tty_room (struct tty_struct *tty)
-+{
-+ return 65536;
-+}
-+
-+/* hci_uart_tty_receive()
-+ *
-+ * Called by tty low level driver when receive data is
-+ * available.
-+ *
-+ * Arguments: tty pointer to tty isntance data
-+ * data pointer to received data
-+ * flags pointer to flags for data
-+ * count count of received data in bytes
-+ *
-+ * Return Value: None
-+ */
-+static void hci_uart_tty_receive(struct tty_struct *tty, const __u8 *data, char *flags, int count)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+
-+ if (!hu || tty != hu->tty)
-+ return;
-+
-+ if (!test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ return;
-+
-+ spin_lock(&hu->rx_lock);
-+ hu->proto->recv(hu, (void *) data, count);
-+ hu->hdev.stat.byte_rx += count;
-+ spin_unlock(&hu->rx_lock);
-+
-+ if (test_and_clear_bit(TTY_THROTTLED,&tty->flags) && tty->driver.unthrottle)
-+ tty->driver.unthrottle(tty);
-+}
-+
-+static int hci_uart_register_dev(struct hci_uart *hu)
-+{
-+ struct hci_dev *hdev;
-+
-+ BT_DBG("");
-+
-+ /* Initialize and register HCI device */
-+ hdev = &hu->hdev;
-+
-+ hdev->type = HCI_UART;
-+ hdev->driver_data = hu;
-+
-+ hdev->open = hci_uart_open;
-+ hdev->close = hci_uart_close;
-+ hdev->flush = hci_uart_flush;
-+ hdev->send = hci_uart_send_frame;
-+ hdev->destruct = hci_uart_destruct;
-+
-+ if (hci_register_dev(hdev) < 0) {
-+ BT_ERR("Can't register HCI device %s", hdev->name);
-+ return -ENODEV;
-+ }
-+ MOD_INC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int hci_uart_set_proto(struct hci_uart *hu, int id)
-+{
-+ struct hci_uart_proto *p;
-+ int err;
-+
-+ p = hci_uart_get_proto(id);
-+ if (!p)
-+ return -EPROTONOSUPPORT;
-+
-+ err = p->open(hu);
-+ if (err)
-+ return err;
-+
-+ hu->proto = p;
-+
-+ err = hci_uart_register_dev(hu);
-+ if (err) {
-+ p->close(hu);
-+ return err;
-+ }
-+ return 0;
-+}
-+
-+/* hci_uart_tty_ioctl()
-+ *
-+ * Process IOCTL system call for the tty device.
-+ *
-+ * Arguments:
-+ *
-+ * tty pointer to tty instance data
-+ * file pointer to open file object for device
-+ * cmd IOCTL command code
-+ * arg argument for IOCTL call (cmd dependent)
-+ *
-+ * Return Value: Command dependent
-+ */
-+static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file * file,
-+ unsigned int cmd, unsigned long arg)
-+{
-+ struct hci_uart *hu = (void *)tty->disc_data;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ /* Verify the status of the device */
-+ if (!hu)
-+ return -EBADF;
-+
-+ switch (cmd) {
-+ case HCIUARTSETPROTO:
-+ if (!test_and_set_bit(HCI_UART_PROTO_SET, &hu->flags)) {
-+ err = hci_uart_set_proto(hu, arg);
-+ if (err) {
-+ clear_bit(HCI_UART_PROTO_SET, &hu->flags);
-+ return err;
-+ }
-+ tty->low_latency = 1;
-+ } else
-+ return -EBUSY;
-+
-+ case HCIUARTGETPROTO:
-+ if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
-+ return hu->proto->id;
-+ return -EUNATCH;
-+
-+ default:
-+ err = n_tty_ioctl(tty, file, cmd, arg);
-+ break;
-+ };
-+
-+ return err;
-+}
-+
-+/*
-+ * We don't provide read/write/poll interface for user space.
-+ */
-+static ssize_t hci_uart_tty_read(struct tty_struct *tty, struct file *file, unsigned char *buf, size_t nr)
-+{
-+ return 0;
-+}
-+static ssize_t hci_uart_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *data, size_t count)
-+{
-+ return 0;
-+}
-+static unsigned int hci_uart_tty_poll(struct tty_struct *tty, struct file *filp, poll_table *wait)
-+{
-+ return 0;
-+}
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_H4
-+int h4_init(void);
-+int h4_deinit(void);
-+#endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+int bcsp_init(void);
-+int bcsp_deinit(void);
-+#endif
-+
-+int __init hci_uart_init(void)
-+{
-+ static struct tty_ldisc hci_uart_ldisc;
-+ int err;
-+
-+ BT_INFO("BlueZ HCI UART driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ VERSION);
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+
-+ /* Register the tty discipline */
-+
-+ memset(&hci_uart_ldisc, 0, sizeof (hci_uart_ldisc));
-+ hci_uart_ldisc.magic = TTY_LDISC_MAGIC;
-+ hci_uart_ldisc.name = "n_hci";
-+ hci_uart_ldisc.open = hci_uart_tty_open;
-+ hci_uart_ldisc.close = hci_uart_tty_close;
-+ hci_uart_ldisc.read = hci_uart_tty_read;
-+ hci_uart_ldisc.write = hci_uart_tty_write;
-+ hci_uart_ldisc.ioctl = hci_uart_tty_ioctl;
-+ hci_uart_ldisc.poll = hci_uart_tty_poll;
-+ hci_uart_ldisc.receive_room= hci_uart_tty_room;
-+ hci_uart_ldisc.receive_buf = hci_uart_tty_receive;
-+ hci_uart_ldisc.write_wakeup= hci_uart_tty_wakeup;
-+
-+ if ((err = tty_register_ldisc(N_HCI, &hci_uart_ldisc))) {
-+ BT_ERR("Can't register HCI line discipline (%d)", err);
-+ return err;
-+ }
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_H4
-+ h4_init();
-+#endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+ bcsp_init();
-+#endif
-+
-+ return 0;
-+}
-+
-+void hci_uart_cleanup(void)
-+{
-+ int err;
-+
-+#ifdef CONFIG_BLUEZ_HCIUART_H4
-+ h4_deinit();
-+#endif
-+#ifdef CONFIG_BLUEZ_HCIUART_BCSP
-+ bcsp_deinit();
-+#endif
-+
-+ /* Release tty registration of line discipline */
-+ if ((err = tty_register_ldisc(N_HCI, NULL)))
-+ BT_ERR("Can't unregister HCI line discipline (%d)", err);
-+}
-+
-+module_init(hci_uart_init);
-+module_exit(hci_uart_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_DESCRIPTION("BlueZ HCI UART driver ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/hci_uart.c linux-2.4.18-mh9/drivers/bluetooth/hci_uart.c
---- linux-2.4.18/drivers/bluetooth/hci_uart.c Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/drivers/bluetooth/hci_uart.c Thu Jan 1 01:00:00 1970
-@@ -1,580 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * BlueZ HCI UART driver.
-- *
-- * $Id: hci_uart.c,v 1.5 2001/07/05 18:42:44 maxk Exp $
-- */
--#define VERSION "1.0"
--
--#include <linux/config.h>
--#include <linux/module.h>
--
--#include <linux/version.h>
--#include <linux/config.h>
--#include <linux/kernel.h>
--#include <linux/init.h>
--#include <linux/sched.h>
--#include <linux/types.h>
--#include <linux/fcntl.h>
--#include <linux/interrupt.h>
--#include <linux/ptrace.h>
--#include <linux/poll.h>
--
--#include <linux/slab.h>
--#include <linux/tty.h>
--#include <linux/errno.h>
--#include <linux/string.h>
--#include <linux/signal.h>
--#include <linux/ioctl.h>
--#include <linux/skbuff.h>
--
--#include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
--#include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/hci_uart.h>
--
--#ifndef HCI_UART_DEBUG
--#undef DBG
--#define DBG( A... )
--#undef DMP
--#define DMP( A... )
--#endif
--
--/* ------- Interface to HCI layer ------ */
--/* Initialize device */
--int n_hci_open(struct hci_dev *hdev)
--{
-- DBG("%s %p", hdev->name, hdev);
--
-- /* Nothing to do for UART driver */
--
-- hdev->flags |= HCI_RUNNING;
--
-- return 0;
--}
--
--/* Reset device */
--int n_hci_flush(struct hci_dev *hdev)
--{
-- struct n_hci *n_hci = (struct n_hci *) hdev->driver_data;
-- struct tty_struct *tty = n_hci->tty;
--
-- DBG("hdev %p tty %p", hdev, tty);
--
-- /* Drop TX queue */
-- skb_queue_purge(&n_hci->txq);
--
-- /* Flush any pending characters in the driver and discipline. */
-- if (tty->ldisc.flush_buffer)
-- tty->ldisc.flush_buffer(tty);
--
-- if (tty->driver.flush_buffer)
-- tty->driver.flush_buffer(tty);
--
-- return 0;
--}
--
--/* Close device */
--int n_hci_close(struct hci_dev *hdev)
--{
-- DBG("hdev %p", hdev);
--
-- hdev->flags &= ~HCI_RUNNING;
--
-- n_hci_flush(hdev);
--
-- return 0;
--}
--
--int n_hci_tx_wakeup(struct n_hci *n_hci)
--{
-- register struct tty_struct *tty = n_hci->tty;
--
-- if (test_and_set_bit(TRANS_SENDING, &n_hci->tx_state)) {
-- set_bit(TRANS_WAKEUP, &n_hci->tx_state);
-- return 0;
-- }
--
-- DBG("");
-- do {
-- register struct sk_buff *skb;
-- register int len;
--
-- clear_bit(TRANS_WAKEUP, &n_hci->tx_state);
--
-- if (!(skb = skb_dequeue(&n_hci->txq)))
-- break;
--
-- DMP(skb->data, skb->len);
--
-- /* Send frame to TTY driver */
-- tty->flags |= (1 << TTY_DO_WRITE_WAKEUP);
-- len = tty->driver.write(tty, 0, skb->data, skb->len);
--
-- n_hci->hdev.stat.byte_tx += len;
--
-- DBG("sent %d", len);
--
-- if (len == skb->len) {
-- /* Full frame was sent */
-- kfree_skb(skb);
-- } else {
-- /* Subtract sent part and requeue */
-- skb_pull(skb, len);
-- skb_queue_head(&n_hci->txq, skb);
-- }
-- } while (test_bit(TRANS_WAKEUP, &n_hci->tx_state));
-- clear_bit(TRANS_SENDING, &n_hci->tx_state);
--
-- return 0;
--}
--
--/* Send frames from HCI layer */
--int n_hci_send_frame(struct sk_buff *skb)
--{
-- struct hci_dev* hdev = (struct hci_dev *) skb->dev;
-- struct tty_struct *tty;
-- struct n_hci *n_hci;
--
-- if (!hdev) {
-- ERR("Frame for uknown device (hdev=NULL)");
-- return -ENODEV;
-- }
--
-- if (!(hdev->flags & HCI_RUNNING))
-- return -EBUSY;
--
-- n_hci = (struct n_hci *) hdev->driver_data;
-- tty = n_hci2tty(n_hci);
--
-- DBG("%s: type %d len %d", hdev->name, skb->pkt_type, skb->len);
--
-- switch (skb->pkt_type) {
-- case HCI_COMMAND_PKT:
-- hdev->stat.cmd_tx++;
-- break;
--
-- case HCI_ACLDATA_PKT:
-- hdev->stat.acl_tx++;
-- break;
--
-- case HCI_SCODATA_PKT:
-- hdev->stat.cmd_tx++;
-- break;
-- };
--
-- /* Prepend skb with frame type and queue */
-- memcpy(skb_push(skb, 1), &skb->pkt_type, 1);
-- skb_queue_tail(&n_hci->txq, skb);
--
-- n_hci_tx_wakeup(n_hci);
--
-- return 0;
--}
--
--/* ------ LDISC part ------ */
--
--/* n_hci_tty_open
-- *
-- * Called when line discipline changed to N_HCI.
-- *
-- * Arguments:
-- * tty pointer to tty info structure
-- * Return Value:
-- * 0 if success, otherwise error code
-- */
--static int n_hci_tty_open(struct tty_struct *tty)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
-- struct hci_dev *hdev;
--
-- DBG("tty %p", tty);
--
-- if (n_hci)
-- return -EEXIST;
--
-- if (!(n_hci = kmalloc(sizeof(struct n_hci), GFP_KERNEL))) {
-- ERR("Can't allocate controll structure");
-- return -ENFILE;
-- }
-- memset(n_hci, 0, sizeof(struct n_hci));
--
-- /* Initialize and register HCI device */
-- hdev = &n_hci->hdev;
--
-- hdev->type = HCI_UART;
-- hdev->driver_data = n_hci;
--
-- hdev->open = n_hci_open;
-- hdev->close = n_hci_close;
-- hdev->flush = n_hci_flush;
-- hdev->send = n_hci_send_frame;
--
-- if (hci_register_dev(hdev) < 0) {
-- ERR("Can't register HCI device %s", hdev->name);
-- kfree(n_hci);
-- return -ENODEV;
-- }
--
-- tty->disc_data = n_hci;
-- n_hci->tty = tty;
--
-- spin_lock_init(&n_hci->rx_lock);
-- n_hci->rx_state = WAIT_PACKET_TYPE;
--
-- skb_queue_head_init(&n_hci->txq);
--
-- MOD_INC_USE_COUNT;
--
-- /* Flush any pending characters in the driver and discipline. */
-- if (tty->ldisc.flush_buffer)
-- tty->ldisc.flush_buffer(tty);
--
-- if (tty->driver.flush_buffer)
-- tty->driver.flush_buffer(tty);
--
-- return 0;
--}
--
--/* n_hci_tty_close()
-- *
-- * Called when the line discipline is changed to something
-- * else, the tty is closed, or the tty detects a hangup.
-- */
--static void n_hci_tty_close(struct tty_struct *tty)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
-- struct hci_dev *hdev = &n_hci->hdev;
--
-- DBG("tty %p hdev %p", tty, hdev);
--
-- if (n_hci != NULL) {
-- n_hci_close(hdev);
--
-- if (hci_unregister_dev(hdev) < 0) {
-- ERR("Can't unregister HCI device %s",hdev->name);
-- }
--
-- hdev->driver_data = NULL;
-- tty->disc_data = NULL;
-- kfree(n_hci);
--
-- MOD_DEC_USE_COUNT;
-- }
--}
--
--/* n_hci_tty_wakeup()
-- *
-- * Callback for transmit wakeup. Called when low level
-- * device driver can accept more send data.
-- *
-- * Arguments: tty pointer to associated tty instance data
-- * Return Value: None
-- */
--static void n_hci_tty_wakeup( struct tty_struct *tty )
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
--
-- DBG("");
--
-- if (!n_hci)
-- return;
--
-- tty->flags &= ~(1 << TTY_DO_WRITE_WAKEUP);
--
-- if (tty != n_hci->tty)
-- return;
--
-- n_hci_tx_wakeup(n_hci);
--}
--
--/* n_hci_tty_room()
-- *
-- * Callback function from tty driver. Return the amount of
-- * space left in the receiver's buffer to decide if remote
-- * transmitter is to be throttled.
-- *
-- * Arguments: tty pointer to associated tty instance data
-- * Return Value: number of bytes left in receive buffer
-- */
--static int n_hci_tty_room (struct tty_struct *tty)
--{
-- return 65536;
--}
--
--static inline int n_hci_check_data_len(struct n_hci *n_hci, int len)
--{
-- register int room = skb_tailroom(n_hci->rx_skb);
--
-- DBG("len %d room %d", len, room);
-- if (!len) {
-- DMP(n_hci->rx_skb->data, n_hci->rx_skb->len);
-- hci_recv_frame(n_hci->rx_skb);
-- } else if (len > room) {
-- ERR("Data length is to large");
-- kfree_skb(n_hci->rx_skb);
-- n_hci->hdev.stat.err_rx++;
-- } else {
-- n_hci->rx_state = WAIT_DATA;
-- n_hci->rx_count = len;
-- return len;
-- }
--
-- n_hci->rx_state = WAIT_PACKET_TYPE;
-- n_hci->rx_skb = NULL;
-- n_hci->rx_count = 0;
-- return 0;
--}
--
--static inline void n_hci_rx(struct n_hci *n_hci, const __u8 * data, char *flags, int count)
--{
-- register const char *ptr;
-- hci_event_hdr *eh;
-- hci_acl_hdr *ah;
-- hci_sco_hdr *sh;
-- register int len, type, dlen;
--
-- DBG("count %d state %ld rx_count %ld", count, n_hci->rx_state, n_hci->rx_count);
--
-- n_hci->hdev.stat.byte_rx += count;
--
-- ptr = data;
-- while (count) {
-- if (n_hci->rx_count) {
-- len = MIN(n_hci->rx_count, count);
-- memcpy(skb_put(n_hci->rx_skb, len), ptr, len);
-- n_hci->rx_count -= len; count -= len; ptr += len;
--
-- if (n_hci->rx_count)
-- continue;
--
-- switch (n_hci->rx_state) {
-- case WAIT_DATA:
-- DBG("Complete data");
--
-- DMP(n_hci->rx_skb->data, n_hci->rx_skb->len);
--
-- hci_recv_frame(n_hci->rx_skb);
--
-- n_hci->rx_state = WAIT_PACKET_TYPE;
-- n_hci->rx_skb = NULL;
-- continue;
--
-- case WAIT_EVENT_HDR:
-- eh = (hci_event_hdr *) n_hci->rx_skb->data;
--
-- DBG("Event header: evt 0x%2.2x plen %d", eh->evt, eh->plen);
--
-- n_hci_check_data_len(n_hci, eh->plen);
-- continue;
--
-- case WAIT_ACL_HDR:
-- ah = (hci_acl_hdr *) n_hci->rx_skb->data;
-- dlen = __le16_to_cpu(ah->dlen);
--
-- DBG("ACL header: dlen %d", dlen);
--
-- n_hci_check_data_len(n_hci, dlen);
-- continue;
--
-- case WAIT_SCO_HDR:
-- sh = (hci_sco_hdr *) n_hci->rx_skb->data;
--
-- DBG("SCO header: dlen %d", sh->dlen);
--
-- n_hci_check_data_len(n_hci, sh->dlen);
-- continue;
-- };
-- }
--
-- /* WAIT_PACKET_TYPE */
-- switch (*ptr) {
-- case HCI_EVENT_PKT:
-- DBG("Event packet");
-- n_hci->rx_state = WAIT_EVENT_HDR;
-- n_hci->rx_count = HCI_EVENT_HDR_SIZE;
-- type = HCI_EVENT_PKT;
-- break;
--
-- case HCI_ACLDATA_PKT:
-- DBG("ACL packet");
-- n_hci->rx_state = WAIT_ACL_HDR;
-- n_hci->rx_count = HCI_ACL_HDR_SIZE;
-- type = HCI_ACLDATA_PKT;
-- break;
--
-- case HCI_SCODATA_PKT:
-- DBG("SCO packet");
-- n_hci->rx_state = WAIT_SCO_HDR;
-- n_hci->rx_count = HCI_SCO_HDR_SIZE;
-- type = HCI_SCODATA_PKT;
-- break;
--
-- default:
-- ERR("Unknown HCI packet type %2.2x", (__u8)*ptr);
-- n_hci->hdev.stat.err_rx++;
-- ptr++; count--;
-- continue;
-- };
-- ptr++; count--;
--
-- /* Allocate packet */
-- if (!(n_hci->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) {
-- ERR("Can't allocate mem for new packet");
--
-- n_hci->rx_state = WAIT_PACKET_TYPE;
-- n_hci->rx_count = 0;
-- return;
-- }
-- n_hci->rx_skb->dev = (void *) &n_hci->hdev;
-- n_hci->rx_skb->pkt_type = type;
-- }
--}
--
--/* n_hci_tty_receive()
-- *
-- * Called by tty low level driver when receive data is
-- * available.
-- *
-- * Arguments: tty pointer to tty isntance data
-- * data pointer to received data
-- * flags pointer to flags for data
-- * count count of received data in bytes
-- *
-- * Return Value: None
-- */
--static void n_hci_tty_receive(struct tty_struct *tty, const __u8 * data, char *flags, int count)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
--
-- if (!n_hci || tty != n_hci->tty)
-- return;
--
-- spin_lock(&n_hci->rx_lock);
-- n_hci_rx(n_hci, data, flags, count);
-- spin_unlock(&n_hci->rx_lock);
--
-- if (test_and_clear_bit(TTY_THROTTLED,&tty->flags) && tty->driver.unthrottle)
-- tty->driver.unthrottle(tty);
--}
--
--/* n_hci_tty_ioctl()
-- *
-- * Process IOCTL system call for the tty device.
-- *
-- * Arguments:
-- *
-- * tty pointer to tty instance data
-- * file pointer to open file object for device
-- * cmd IOCTL command code
-- * arg argument for IOCTL call (cmd dependent)
-- *
-- * Return Value: Command dependent
-- */
--static int n_hci_tty_ioctl (struct tty_struct *tty, struct file * file,
-- unsigned int cmd, unsigned long arg)
--{
-- struct n_hci *n_hci = tty2n_hci(tty);
-- int error = 0;
--
-- DBG("");
--
-- /* Verify the status of the device */
-- if (!n_hci)
-- return -EBADF;
--
-- switch (cmd) {
-- default:
-- error = n_tty_ioctl(tty, file, cmd, arg);
-- break;
-- };
--
-- return error;
--}
--
--/*
-- * We don't provide read/write/poll interface for user space.
-- */
--static ssize_t n_hci_tty_read(struct tty_struct *tty, struct file *file, unsigned char *buf, size_t nr)
--{
-- return 0;
--}
--static ssize_t n_hci_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *data, size_t count)
--{
-- return 0;
--}
--static unsigned int n_hci_tty_poll(struct tty_struct *tty, struct file *filp, poll_table *wait)
--{
-- return 0;
--}
--
--int __init n_hci_init(void)
--{
-- static struct tty_ldisc n_hci_ldisc;
-- int err;
--
-- INF("BlueZ HCI UART driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
--
-- /* Register the tty discipline */
--
-- memset(&n_hci_ldisc, 0, sizeof (n_hci_ldisc));
-- n_hci_ldisc.magic = TTY_LDISC_MAGIC;
-- n_hci_ldisc.name = "n_hci";
-- n_hci_ldisc.open = n_hci_tty_open;
-- n_hci_ldisc.close = n_hci_tty_close;
-- n_hci_ldisc.read = n_hci_tty_read;
-- n_hci_ldisc.write = n_hci_tty_write;
-- n_hci_ldisc.ioctl = n_hci_tty_ioctl;
-- n_hci_ldisc.poll = n_hci_tty_poll;
-- n_hci_ldisc.receive_room= n_hci_tty_room;
-- n_hci_ldisc.receive_buf = n_hci_tty_receive;
-- n_hci_ldisc.write_wakeup= n_hci_tty_wakeup;
--
-- if ((err = tty_register_ldisc(N_HCI, &n_hci_ldisc))) {
-- ERR("Can't register HCI line discipline (%d)", err);
-- return err;
-- }
--
-- return 0;
--}
--
--void n_hci_cleanup(void)
--{
-- int err;
--
-- /* Release tty registration of line discipline */
-- if ((err = tty_register_ldisc(N_HCI, NULL)))
-- ERR("Can't unregister HCI line discipline (%d)", err);
--}
--
--module_init(n_hci_init);
--module_exit(n_hci_cleanup);
--
--MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
--MODULE_DESCRIPTION("BlueZ HCI UART driver ver " VERSION);
--MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/hci_uart.h linux-2.4.18-mh9/drivers/bluetooth/hci_uart.h
---- linux-2.4.18/drivers/bluetooth/hci_uart.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/hci_uart.h Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,81 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_uart.h,v 1.2 2002/09/09 01:17:32 maxk Exp $
-+ */
-+
-+#ifndef N_HCI
-+#define N_HCI 15
-+#endif
-+
-+/* Ioctls */
-+#define HCIUARTSETPROTO _IOW('U', 200, int)
-+#define HCIUARTGETPROTO _IOR('U', 201, int)
-+
-+/* UART protocols */
-+#define HCI_UART_MAX_PROTO 3
-+
-+#define HCI_UART_H4 0
-+#define HCI_UART_BCSP 1
-+#define HCI_UART_NCSP 2
-+
-+#ifdef __KERNEL__
-+struct hci_uart;
-+
-+struct hci_uart_proto {
-+ unsigned int id;
-+ int (*open)(struct hci_uart *hu);
-+ int (*close)(struct hci_uart *hu);
-+ int (*flush)(struct hci_uart *hu);
-+ int (*recv)(struct hci_uart *hu, void *data, int len);
-+ int (*enqueue)(struct hci_uart *hu, struct sk_buff *skb);
-+ struct sk_buff *(*dequeue)(struct hci_uart *hu);
-+};
-+
-+struct hci_uart {
-+ struct tty_struct *tty;
-+ struct hci_dev hdev;
-+ unsigned long flags;
-+
-+ struct hci_uart_proto *proto;
-+ void *priv;
-+
-+ struct sk_buff *tx_skb;
-+ unsigned long tx_state;
-+ spinlock_t rx_lock;
-+};
-+
-+/* HCI_UART flag bits */
-+#define HCI_UART_PROTO_SET 0
-+
-+/* TX states */
-+#define HCI_UART_SENDING 1
-+#define HCI_UART_TX_WAKEUP 2
-+
-+int hci_uart_register_proto(struct hci_uart_proto *p);
-+int hci_uart_unregister_proto(struct hci_uart_proto *p);
-+int hci_uart_tx_wakeup(struct hci_uart *hu);
-+
-+#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_usb.c linux-2.4.18-mh9/drivers/bluetooth/hci_usb.c
---- linux-2.4.18/drivers/bluetooth/hci_usb.c Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/drivers/bluetooth/hci_usb.c Mon Aug 25 18:38:12 2003
-@@ -1,9 +1,10 @@
- /*
-- BlueZ - Bluetooth protocol stack for Linux
-+ HCI USB driver for Linux Bluetooth protocol stack (BlueZ)
- Copyright (C) 2000-2001 Qualcomm Incorporated
--
- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-
-+ Copyright (C) 2003 Maxim Krasnyansky <maxk@qualcomm.com>
-+
- 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;
-@@ -23,598 +24,901 @@
- */
-
- /*
-- * BlueZ HCI USB driver.
- * Based on original USB Bluetooth driver for Linux kernel
- * Copyright (c) 2000 Greg Kroah-Hartman <greg@kroah.com>
- * Copyright (c) 2000 Mark Douglas Corner <mcorner@umich.edu>
- *
-- * $Id: hci_usb.c,v 1.5 2001/07/05 18:42:44 maxk Exp $
-+ * $Id: hci_usb.c,v 1.8 2002/07/18 17:23:09 maxk Exp $
- */
--#define VERSION "1.0"
-+#define VERSION "2.4"
-
- #include <linux/config.h>
- #include <linux/module.h>
-
- #include <linux/version.h>
--#include <linux/config.h>
- #include <linux/kernel.h>
- #include <linux/init.h>
- #include <linux/sched.h>
-+#include <linux/unistd.h>
- #include <linux/types.h>
--#include <linux/fcntl.h>
- #include <linux/interrupt.h>
--#include <linux/ptrace.h>
--#include <linux/poll.h>
-
- #include <linux/slab.h>
--#include <linux/tty.h>
- #include <linux/errno.h>
- #include <linux/string.h>
--#include <linux/signal.h>
--#include <linux/ioctl.h>
- #include <linux/skbuff.h>
-
- #include <linux/usb.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/hci_usb.h>
-+
-+#include "hci_usb.h"
-
- #ifndef HCI_USB_DEBUG
--#undef DBG
--#define DBG( A... )
--#undef DMP
--#define DMP( A... )
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#undef BT_DMP
-+#define BT_DMP( A... )
- #endif
-
--static struct usb_device_id usb_bluetooth_ids [] = {
-+#ifndef CONFIG_BLUEZ_USB_ZERO_PACKET
-+#undef USB_ZERO_PACKET
-+#define USB_ZERO_PACKET 0
-+#endif
-+
-+static struct usb_driver hci_usb_driver;
-+
-+static struct usb_device_id bluetooth_ids[] = {
-+ /* Generic Bluetooth USB device */
- { USB_DEVICE_INFO(HCI_DEV_CLASS, HCI_DEV_SUBCLASS, HCI_DEV_PROTOCOL) },
-+
-+ /* Ericsson with non-standard id */
-+ { USB_DEVICE(0x0bdb, 0x1002) },
-+
-+ /* Bluetooth Ultraport Module from IBM */
-+ { USB_DEVICE(0x04bf, 0x030a) },
-+
- { } /* Terminating entry */
- };
-
--MODULE_DEVICE_TABLE (usb, usb_bluetooth_ids);
-+MODULE_DEVICE_TABLE (usb, bluetooth_ids);
-
--static int hci_usb_ctrl_msg(struct hci_usb *husb, struct sk_buff *skb);
--static int hci_usb_write_msg(struct hci_usb *husb, struct sk_buff *skb);
-+static struct usb_device_id ignore_ids[] = {
-+ /* Broadcom BCM2033 without firmware */
-+ { USB_DEVICE(0x0a5c, 0x2033) },
-
--static void hci_usb_unlink_urbs(struct hci_usb *husb)
--{
-- usb_unlink_urb(husb->read_urb);
-- usb_unlink_urb(husb->intr_urb);
-- usb_unlink_urb(husb->ctrl_urb);
-- usb_unlink_urb(husb->write_urb);
--}
-+ { } /* Terminating entry */
-+};
-
--static void hci_usb_free_bufs(struct hci_usb *husb)
-+struct _urb *_urb_alloc(int isoc, int gfp)
- {
-- if (husb->read_urb) {
-- if (husb->read_urb->transfer_buffer)
-- kfree(husb->read_urb->transfer_buffer);
-- usb_free_urb(husb->read_urb);
-- }
--
-- if (husb->intr_urb) {
-- if (husb->intr_urb->transfer_buffer)
-- kfree(husb->intr_urb->transfer_buffer);
-- usb_free_urb(husb->intr_urb);
-+ struct _urb *_urb = kmalloc(sizeof(struct _urb) +
-+ sizeof(iso_packet_descriptor_t) * isoc, gfp);
-+ if (_urb) {
-+ memset(_urb, 0, sizeof(*_urb));
-+ spin_lock_init(&_urb->urb.lock);
-+ }
-+ return _urb;
-+}
-+
-+struct _urb *_urb_dequeue(struct _urb_queue *q)
-+{
-+ struct _urb *_urb = NULL;
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ {
-+ struct list_head *head = &q->head;
-+ struct list_head *next = head->next;
-+ if (next != head) {
-+ _urb = list_entry(next, struct _urb, list);
-+ list_del(next); _urb->queue = NULL;
-+ }
- }
-+ spin_unlock_irqrestore(&q->lock, flags);
-+ return _urb;
-+}
-
-- if (husb->ctrl_urb)
-- usb_free_urb(husb->ctrl_urb);
-+static void hci_usb_rx_complete(struct urb *urb);
-+static void hci_usb_tx_complete(struct urb *urb);
-
-- if (husb->write_urb)
-- usb_free_urb(husb->write_urb);
-+#define __pending_tx(husb, type) (&husb->pending_tx[type-1])
-+#define __pending_q(husb, type) (&husb->pending_q[type-1])
-+#define __completed_q(husb, type) (&husb->completed_q[type-1])
-+#define __transmit_q(husb, type) (&husb->transmit_q[type-1])
-+#define __reassembly(husb, type) (husb->reassembly[type-1])
-
-- if (husb->intr_skb)
-- kfree_skb(husb->intr_skb);
-+static inline struct _urb *__get_completed(struct hci_usb *husb, int type)
-+{
-+ return _urb_dequeue(__completed_q(husb, type));
- }
-
--/* ------- Interface to HCI layer ------ */
--/* Initialize device */
--int hci_usb_open(struct hci_dev *hdev)
-+static void __fill_isoc_desc(struct urb *urb, int len, int mtu)
- {
-- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-- int status;
--
-- DBG("%s", hdev->name);
--
-- husb->read_urb->dev = husb->udev;
-- if ((status = usb_submit_urb(husb->read_urb)))
-- DBG("read submit failed. %d", status);
-+ int offset = 0, i;
-
-- husb->intr_urb->dev = husb->udev;
-- if ((status = usb_submit_urb(husb->intr_urb)))
-- DBG("interrupt submit failed. %d", status);
-+ BT_DBG("len %d mtu %d", len, mtu);
-
-- hdev->flags |= HCI_RUNNING;
--
-- return 0;
-+ for (i=0; i < HCI_MAX_ISOC_FRAMES && len >= mtu; i++, offset += mtu, len -= mtu) {
-+ urb->iso_frame_desc[i].offset = offset;
-+ urb->iso_frame_desc[i].length = mtu;
-+ BT_DBG("desc %d offset %d len %d", i, offset, mtu);
-+ }
-+ if (len && i < HCI_MAX_ISOC_FRAMES) {
-+ urb->iso_frame_desc[i].offset = offset;
-+ urb->iso_frame_desc[i].length = len;
-+ BT_DBG("desc %d offset %d len %d", i, offset, len);
-+ i++;
-+ }
-+ urb->number_of_packets = i;
- }
-
--/* Reset device */
--int hci_usb_flush(struct hci_dev *hdev)
-+static int hci_usb_intr_rx_submit(struct hci_usb *husb)
- {
-- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ struct _urb *_urb;
-+ struct urb *urb;
-+ int err, pipe, interval, size;
-+ void *buf;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s", husb->hdev.name);
-
-- /* Drop TX queues */
-- skb_queue_purge(&husb->tx_ctrl_q);
-- skb_queue_purge(&husb->tx_write_q);
-+ size = husb->intr_in_ep->wMaxPacketSize;
-
-- return 0;
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
-+ return -ENOMEM;
-+
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
-+ return -ENOMEM;
-+ }
-+ _urb->type = HCI_EVENT_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-+
-+ urb = &_urb->urb;
-+ pipe = usb_rcvintpipe(husb->udev, husb->intr_in_ep->bEndpointAddress);
-+ interval = husb->intr_in_ep->bInterval;
-+ FILL_INT_URB(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb, interval);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s intr rx submit failed urb %p err %d",
-+ husb->hdev.name, urb, err);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
-+ }
-+ return err;
- }
-
--/* Close device */
--int hci_usb_close(struct hci_dev *hdev)
-+static int hci_usb_bulk_rx_submit(struct hci_usb *husb)
- {
-- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ struct _urb *_urb;
-+ struct urb *urb;
-+ int err, pipe, size = HCI_MAX_FRAME_SIZE;
-+ void *buf;
-
-- DBG("%s", hdev->name);
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
-+ return -ENOMEM;
-
-- hdev->flags &= ~HCI_RUNNING;
-- hci_usb_unlink_urbs(husb);
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
-+ return -ENOMEM;
-+ }
-+ _urb->type = HCI_ACLDATA_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-
-- hci_usb_flush(hdev);
-+ urb = &_urb->urb;
-+ pipe = usb_rcvbulkpipe(husb->udev, husb->bulk_in_ep->bEndpointAddress);
-+ FILL_BULK_URB(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb);
-+ urb->transfer_flags = USB_QUEUE_BULK;
-
-- return 0;
-+ BT_DBG("%s urb %p", husb->hdev.name, urb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s bulk rx submit failed urb %p err %d",
-+ husb->hdev.name, urb, err);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
-+ }
-+ return err;
- }
-
--void hci_usb_ctrl_wakeup(struct hci_usb *husb)
-+#ifdef CONFIG_BLUEZ_USB_SCO
-+static int hci_usb_isoc_rx_submit(struct hci_usb *husb)
- {
-- struct sk_buff *skb;
--
-- if (test_and_set_bit(HCI_TX_CTRL, &husb->tx_state))
-- return;
-+ struct _urb *_urb;
-+ struct urb *urb;
-+ int err, mtu, size;
-+ void *buf;
-
-- DBG("%s", husb->hdev.name);
-+ mtu = husb->isoc_in_ep->wMaxPacketSize;
-+ size = mtu * HCI_MAX_ISOC_FRAMES;
-
-- if (!(skb = skb_dequeue(&husb->tx_ctrl_q)))
-- goto done;
-+ buf = kmalloc(size, GFP_ATOMIC);
-+ if (!buf)
-+ return -ENOMEM;
-
-- if (hci_usb_ctrl_msg(husb, skb)){
-- kfree_skb(skb);
-- goto done;
-+ _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC);
-+ if (!_urb) {
-+ kfree(buf);
-+ return -ENOMEM;
- }
-+ _urb->type = HCI_SCODATA_PKT;
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-
-- DMP(skb->data, skb->len);
-+ urb = &_urb->urb;
-
-- husb->hdev.stat.byte_tx += skb->len;
-- return;
-+ urb->context = husb;
-+ urb->dev = husb->udev;
-+ urb->pipe = usb_rcvisocpipe(husb->udev, husb->isoc_in_ep->bEndpointAddress);
-+ urb->complete = hci_usb_rx_complete;
-
--done:
-- clear_bit(HCI_TX_CTRL, &husb->tx_state);
-- return;
-+ urb->transfer_buffer_length = size;
-+ urb->transfer_buffer = buf;
-+ urb->transfer_flags = USB_ISO_ASAP;
-+
-+ __fill_isoc_desc(urb, size, mtu);
-+
-+ BT_DBG("%s urb %p", husb->hdev.name, urb);
-+
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s isoc rx submit failed urb %p err %d",
-+ husb->hdev.name, urb, err);
-+ _urb_unlink(_urb);
-+ _urb_free(_urb);
-+ kfree(buf);
-+ }
-+ return err;
- }
-+#endif
-
--void hci_usb_write_wakeup(struct hci_usb *husb)
-+/* Initialize device */
-+static int hci_usb_open(struct hci_dev *hdev)
- {
-- struct sk_buff *skb;
-+ struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ int i, err;
-+ unsigned long flags;
-
-- if (test_and_set_bit(HCI_TX_WRITE, &husb->tx_state))
-- return;
-+ BT_DBG("%s", hdev->name);
-
-- DBG("%s", husb->hdev.name);
-+ if (test_and_set_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-
-- if (!(skb = skb_dequeue(&husb->tx_write_q)))
-- goto done;
-+ MOD_INC_USE_COUNT;
-
-- if (hci_usb_write_msg(husb, skb)) {
-- skb_queue_head(&husb->tx_write_q, skb);
-- goto done;
-+ write_lock_irqsave(&husb->completion_lock, flags);
-+
-+ err = hci_usb_intr_rx_submit(husb);
-+ if (!err) {
-+ for (i = 0; i < HCI_MAX_BULK_RX; i++)
-+ hci_usb_bulk_rx_submit(husb);
-+
-+#ifdef CONFIG_BLUEZ_USB_SCO
-+ if (husb->isoc_iface)
-+ for (i = 0; i < HCI_MAX_ISOC_RX; i++)
-+ hci_usb_isoc_rx_submit(husb);
-+#endif
-+ } else {
-+ clear_bit(HCI_RUNNING, &hdev->flags);
-+ MOD_DEC_USE_COUNT;
- }
-
-- DMP(skb->data, skb->len);
-+ write_unlock_irqrestore(&husb->completion_lock, flags);
-+ return err;
-+}
-+
-+/* Reset device */
-+static int hci_usb_flush(struct hci_dev *hdev)
-+{
-+ struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ int i;
-
-- husb->hdev.stat.byte_tx += skb->len;
-- return;
-+ BT_DBG("%s", hdev->name);
-
--done:
-- clear_bit(HCI_TX_WRITE, &husb->tx_state);
-- return;
-+ for (i=0; i < 4; i++)
-+ skb_queue_purge(&husb->transmit_q[i]);
-+ return 0;
- }
-
--/* Send frames from HCI layer */
--int hci_usb_send_frame(struct sk_buff *skb)
-+static void hci_usb_unlink_urbs(struct hci_usb *husb)
- {
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-- struct hci_usb *husb;
-+ int i;
-
-- if (!hdev) {
-- ERR("frame for uknown device (hdev=NULL)");
-- return -ENODEV;
-+ BT_DBG("%s", husb->hdev.name);
-+
-+ for (i=0; i < 4; i++) {
-+ struct _urb *_urb;
-+ struct urb *urb;
-+
-+ /* Kill pending requests */
-+ while ((_urb = _urb_dequeue(&husb->pending_q[i]))) {
-+ urb = &_urb->urb;
-+ BT_DBG("%s unlinking _urb %p type %d urb %p",
-+ husb->hdev.name, _urb, _urb->type, urb);
-+ usb_unlink_urb(urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-+ }
-+
-+ /* Release completed requests */
-+ while ((_urb = _urb_dequeue(&husb->completed_q[i]))) {
-+ urb = &_urb->urb;
-+ BT_DBG("%s freeing _urb %p type %d urb %p",
-+ husb->hdev.name, _urb, _urb->type, urb);
-+ if (urb->setup_packet)
-+ kfree(urb->setup_packet);
-+ if (urb->transfer_buffer)
-+ kfree(urb->transfer_buffer);
-+ _urb_free(_urb);
-+ }
-+
-+ /* Release reassembly buffers */
-+ if (husb->reassembly[i]) {
-+ kfree_skb(husb->reassembly[i]);
-+ husb->reassembly[i] = NULL;
-+ }
- }
-+}
-
-- if (!(hdev->flags & HCI_RUNNING))
-+/* Close device */
-+static int hci_usb_close(struct hci_dev *hdev)
-+{
-+ struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-+ unsigned long flags;
-+
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
- return 0;
-
-- husb = (struct hci_usb *) hdev->driver_data;
-+ BT_DBG("%s", hdev->name);
-
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+ write_lock_irqsave(&husb->completion_lock, flags);
-+
-+ hci_usb_unlink_urbs(husb);
-+ hci_usb_flush(hdev);
-
-- switch (skb->pkt_type) {
-- case HCI_COMMAND_PKT:
-- skb_queue_tail(&husb->tx_ctrl_q, skb);
-- hci_usb_ctrl_wakeup(husb);
-- hdev->stat.cmd_tx++;
-- return 0;
--
-- case HCI_ACLDATA_PKT:
-- skb_queue_tail(&husb->tx_write_q, skb);
-- hci_usb_write_wakeup(husb);
-- hdev->stat.acl_tx++;
-- return 0;
--
-- case HCI_SCODATA_PKT:
-- return -EOPNOTSUPP;
-- };
-+ write_unlock_irqrestore(&husb->completion_lock, flags);
-
-+ MOD_DEC_USE_COUNT;
- return 0;
- }
-
--/* ---------- USB ------------- */
--
--static void hci_usb_ctrl(struct urb *urb)
-+static int __tx_submit(struct hci_usb *husb, struct _urb *_urb)
- {
-- struct sk_buff *skb = (struct sk_buff *) urb->context;
-- struct hci_dev *hdev;
-- struct hci_usb *husb;
--
-- if (!skb)
-- return;
-- hdev = (struct hci_dev *) skb->dev;
-- husb = (struct hci_usb *) hdev->driver_data;
-+ struct urb *urb = &_urb->urb;
-+ int err;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s urb %p type %d", husb->hdev.name, urb, _urb->type);
-+
-+ _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-+ err = usb_submit_urb(urb);
-+ if (err) {
-+ BT_ERR("%s tx submit failed urb %p type %d err %d",
-+ husb->hdev.name, urb, _urb->type, err);
-+ _urb_unlink(_urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-+ } else
-+ atomic_inc(__pending_tx(husb, _urb->type));
-+
-+ return err;
-+}
-+
-+static inline int hci_usb_send_ctrl(struct hci_usb *husb, struct sk_buff *skb)
-+{
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
-+ devrequest *dr;
-+ struct urb *urb;
-+
-+ if (!_urb) {
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
-+
-+ dr = kmalloc(sizeof(*dr), GFP_ATOMIC);
-+ if (!dr) {
-+ _urb_free(_urb);
-+ return -ENOMEM;
-+ }
-+ } else
-+ dr = (void *) _urb->urb.setup_packet;
-
-- if (urb->status)
-- DBG("%s ctrl status: %d", hdev->name, urb->status);
-+ dr->requesttype = HCI_CTRL_REQ;
-+ dr->request = 0;
-+ dr->index = 0;
-+ dr->value = 0;
-+ dr->length = __cpu_to_le16(skb->len);
-
-- clear_bit(HCI_TX_CTRL, &husb->tx_state);
-- kfree_skb(skb);
-+ urb = &_urb->urb;
-+ FILL_CONTROL_URB(urb, husb->udev, usb_sndctrlpipe(husb->udev, 0),
-+ (void *) dr, skb->data, skb->len, hci_usb_tx_complete, husb);
-
-- /* Wake up device */
-- hci_usb_ctrl_wakeup(husb);
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-+
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
- }
-
--static void hci_usb_bulk_write(struct urb *urb)
-+static inline int hci_usb_send_bulk(struct hci_usb *husb, struct sk_buff *skb)
- {
-- struct sk_buff *skb = (struct sk_buff *) urb->context;
-- struct hci_dev *hdev;
-- struct hci_usb *husb;
--
-- if (!skb)
-- return;
-- hdev = (struct hci_dev *) skb->dev;
-- husb = (struct hci_usb *) hdev->driver_data;
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
-+ struct urb *urb;
-+ int pipe;
-
-- DBG("%s", hdev->name);
--
-- if (urb->status)
-- DBG("%s bulk write status: %d", hdev->name, urb->status);
-+ if (!_urb) {
-+ _urb = _urb_alloc(0, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
-+ }
-
-- clear_bit(HCI_TX_WRITE, &husb->tx_state);
-- kfree_skb(skb);
-+ urb = &_urb->urb;
-+ pipe = usb_sndbulkpipe(husb->udev, husb->bulk_out_ep->bEndpointAddress);
-+ FILL_BULK_URB(urb, husb->udev, pipe, skb->data, skb->len,
-+ hci_usb_tx_complete, husb);
-+ urb->transfer_flags = USB_QUEUE_BULK | USB_ZERO_PACKET;
-
-- /* Wake up device */
-- hci_usb_write_wakeup(husb);
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-
-- return;
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
- }
-
--static void hci_usb_intr(struct urb *urb)
-+#ifdef CONFIG_BLUEZ_USB_SCO
-+static inline int hci_usb_send_isoc(struct hci_usb *husb, struct sk_buff *skb)
- {
-- struct hci_usb *husb = (struct hci_usb *) urb->context;
-- unsigned char *data = urb->transfer_buffer;
-- register int count = urb->actual_length;
-- register struct sk_buff *skb = husb->intr_skb;
-- hci_event_hdr *eh;
-- register int len;
-+ struct _urb *_urb = __get_completed(husb, skb->pkt_type);
-+ struct urb *urb;
-+
-+ if (!_urb) {
-+ _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC);
-+ if (!_urb)
-+ return -ENOMEM;
-+ _urb->type = skb->pkt_type;
-+ }
-
-- if (!husb)
-- return;
-+ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len);
-
-- DBG("%s count %d", husb->hdev.name, count);
-+ urb = &_urb->urb;
-+
-+ urb->context = husb;
-+ urb->dev = husb->udev;
-+ urb->pipe = usb_sndisocpipe(husb->udev, husb->isoc_out_ep->bEndpointAddress);
-+ urb->complete = hci_usb_tx_complete;
-+ urb->transfer_flags = USB_ISO_ASAP;
-
-- if (urb->status || !count) {
-- DBG("%s intr status %d, count %d", husb->hdev.name, urb->status, count);
-- return;
-- }
-+ urb->transfer_buffer = skb->data;
-+ urb->transfer_buffer_length = skb->len;
-+
-+ __fill_isoc_desc(urb, skb->len, husb->isoc_out_ep->wMaxPacketSize);
-
-- /* Do we really have to handle continuations here ? */
-- if (!skb) {
-- /* New frame */
-- if (count < HCI_EVENT_HDR_SIZE) {
-- DBG("%s bad frame len %d", husb->hdev.name, count);
-- return;
-- }
-+ _urb->priv = skb;
-+ return __tx_submit(husb, _urb);
-+}
-+#endif
-+
-+static void hci_usb_tx_process(struct hci_usb *husb)
-+{
-+ struct sk_buff_head *q;
-+ struct sk_buff *skb;
-
-- eh = (hci_event_hdr *) data;
-- len = eh->plen + HCI_EVENT_HDR_SIZE;
-+ BT_DBG("%s", husb->hdev.name);
-
-- if (count > len) {
-- DBG("%s corrupted frame, len %d", husb->hdev.name, count);
-- return;
-+ do {
-+ clear_bit(HCI_USB_TX_WAKEUP, &husb->state);
-+
-+ /* Process command queue */
-+ q = __transmit_q(husb, HCI_COMMAND_PKT);
-+ if (!atomic_read(__pending_tx(husb, HCI_COMMAND_PKT)) &&
-+ (skb = skb_dequeue(q))) {
-+ if (hci_usb_send_ctrl(husb, skb) < 0)
-+ skb_queue_head(q, skb);
- }
-
-- /* Allocate skb */
-- if (!(skb = bluez_skb_alloc(len, GFP_ATOMIC))) {
-- ERR("Can't allocate mem for new packet");
-- return;
-+#ifdef CONFIG_BLUEZ_USB_SCO
-+ /* Process SCO queue */
-+ q = __transmit_q(husb, HCI_SCODATA_PKT);
-+ if (atomic_read(__pending_tx(husb, HCI_SCODATA_PKT)) < HCI_MAX_ISOC_TX &&
-+ (skb = skb_dequeue(q))) {
-+ if (hci_usb_send_isoc(husb, skb) < 0)
-+ skb_queue_head(q, skb);
-+ }
-+#endif
-+
-+ /* Process ACL queue */
-+ q = __transmit_q(husb, HCI_ACLDATA_PKT);
-+ while (atomic_read(__pending_tx(husb, HCI_ACLDATA_PKT)) < HCI_MAX_BULK_TX &&
-+ (skb = skb_dequeue(q))) {
-+ if (hci_usb_send_bulk(husb, skb) < 0) {
-+ skb_queue_head(q, skb);
-+ break;
-+ }
- }
-- skb->dev = (void *) &husb->hdev;
-- skb->pkt_type = HCI_EVENT_PKT;
-+ } while(test_bit(HCI_USB_TX_WAKEUP, &husb->state));
-+}
-
-- husb->intr_skb = skb;
-- husb->intr_count = len;
-- } else {
-- /* Continuation */
-- if (count > husb->intr_count) {
-- ERR("%s bad frame len %d (expected %d)", husb->hdev.name, count, husb->intr_count);
-+static inline void hci_usb_tx_wakeup(struct hci_usb *husb)
-+{
-+ /* Serialize TX queue processing to avoid data reordering */
-+ if (!test_and_set_bit(HCI_USB_TX_PROCESS, &husb->state)) {
-+ hci_usb_tx_process(husb);
-+ clear_bit(HCI_USB_TX_PROCESS, &husb->state);
-+ } else
-+ set_bit(HCI_USB_TX_WAKEUP, &husb->state);
-+}
-
-- kfree_skb(skb);
-- husb->intr_skb = NULL;
-- husb->intr_count = 0;
-- return;
-- }
-+/* Send frames from HCI layer */
-+static int hci_usb_send_frame(struct sk_buff *skb)
-+{
-+ struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-+ struct hci_usb *husb;
-+
-+ if (!hdev) {
-+ BT_ERR("frame for uknown device (hdev=NULL)");
-+ return -ENODEV;
- }
-
-- memcpy(skb_put(skb, count), data, count);
-- husb->intr_count -= count;
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return -EBUSY;
-
-- DMP(data, count);
-+ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-
-- if (!husb->intr_count) {
-- /* Got complete frame */
-+ husb = (struct hci_usb *) hdev->driver_data;
-
-- husb->hdev.stat.byte_rx += skb->len;
-- hci_recv_frame(skb);
-+ switch (skb->pkt_type) {
-+ case HCI_COMMAND_PKT:
-+ hdev->stat.cmd_tx++;
-+ break;
-+
-+ case HCI_ACLDATA_PKT:
-+ hdev->stat.acl_tx++;
-+ break;
-+
-+#ifdef CONFIG_BLUEZ_USB_SCO
-+ case HCI_SCODATA_PKT:
-+ hdev->stat.sco_tx++;
-+ break;
-+#endif
-
-- husb->intr_skb = NULL;
-+ default:
-+ kfree_skb(skb);
-+ return 0;
- }
-+
-+ read_lock(&husb->completion_lock);
-+
-+ skb_queue_tail(__transmit_q(husb, skb->pkt_type), skb);
-+ hci_usb_tx_wakeup(husb);
-+
-+ read_unlock(&husb->completion_lock);
-+ return 0;
- }
-
--static void hci_usb_bulk_read(struct urb *urb)
-+static inline int __recv_frame(struct hci_usb *husb, int type, void *data, int count)
- {
-- struct hci_usb *husb = (struct hci_usb *) urb->context;
-- unsigned char *data = urb->transfer_buffer;
-- int count = urb->actual_length, status;
-- struct sk_buff *skb;
-- hci_acl_hdr *ah;
-- register __u16 dlen;
--
-- if (!husb)
-- return;
-+ BT_DBG("%s type %d data %p count %d", husb->hdev.name, type, data, count);
-
-- DBG("%s status %d, count %d, flags %x", husb->hdev.name, urb->status, count, urb->transfer_flags);
-+ husb->hdev.stat.byte_rx += count;
-
-- if (urb->status) {
-- /* Do not re-submit URB on critical errors */
-- switch (urb->status) {
-- case -ENOENT:
-- return;
-- default:
-- goto resubmit;
-- };
-- }
-- if (!count)
-- goto resubmit;
-+ while (count) {
-+ struct sk_buff *skb = __reassembly(husb, type);
-+ struct { int expect; } *scb;
-+ int len = 0;
-+
-+ if (!skb) {
-+ /* Start of the frame */
-+
-+ switch (type) {
-+ case HCI_EVENT_PKT:
-+ if (count >= HCI_EVENT_HDR_SIZE) {
-+ hci_event_hdr *h = data;
-+ len = HCI_EVENT_HDR_SIZE + h->plen;
-+ } else
-+ return -EILSEQ;
-+ break;
-
-- DMP(data, count);
-+ case HCI_ACLDATA_PKT:
-+ if (count >= HCI_ACL_HDR_SIZE) {
-+ hci_acl_hdr *h = data;
-+ len = HCI_ACL_HDR_SIZE + __le16_to_cpu(h->dlen);
-+ } else
-+ return -EILSEQ;
-+ break;
-+#ifdef CONFIG_BLUEZ_USB_SCO
-+ case HCI_SCODATA_PKT:
-+ if (count >= HCI_SCO_HDR_SIZE) {
-+ hci_sco_hdr *h = data;
-+ len = HCI_SCO_HDR_SIZE + h->dlen;
-+ } else
-+ return -EILSEQ;
-+ break;
-+#endif
-+ }
-+ BT_DBG("new packet len %d", len);
-+
-+ skb = bluez_skb_alloc(len, GFP_ATOMIC);
-+ if (!skb) {
-+ BT_ERR("%s no memory for the packet", husb->hdev.name);
-+ return -ENOMEM;
-+ }
-+ skb->dev = (void *) &husb->hdev;
-+ skb->pkt_type = type;
-+
-+ __reassembly(husb, type) = skb;
-+
-+ scb = (void *) skb->cb;
-+ scb->expect = len;
-+ } else {
-+ /* Continuation */
-+ scb = (void *) skb->cb;
-+ len = scb->expect;
-+ }
-
-- ah = (hci_acl_hdr *) data;
-- dlen = le16_to_cpu(ah->dlen);
-+ len = min(len, count);
-+
-+ memcpy(skb_put(skb, len), data, len);
-+
-+ scb->expect -= len;
-+ if (!scb->expect) {
-+ /* Complete frame */
-+ __reassembly(husb, type) = NULL;
-+ hci_recv_frame(skb);
-+ }
-
-- /* Verify frame len and completeness */
-- if ((count - HCI_ACL_HDR_SIZE) != dlen) {
-- ERR("%s corrupted ACL packet: count %d, plen %d", husb->hdev.name, count, dlen);
-- goto resubmit;
-+ count -= len; data += len;
- }
-+ return 0;
-+}
-
-- /* Allocate packet */
-- if (!(skb = bluez_skb_alloc(count, GFP_ATOMIC))) {
-- ERR("Can't allocate mem for new packet");
-- goto resubmit;
-- }
-+static void hci_usb_rx_complete(struct urb *urb)
-+{
-+ struct _urb *_urb = container_of(urb, struct _urb, urb);
-+ struct hci_usb *husb = (void *) urb->context;
-+ struct hci_dev *hdev = &husb->hdev;
-+ int err, count = urb->actual_length;
-
-- memcpy(skb_put(skb, count), data, count);
-- skb->dev = (void *) &husb->hdev;
-- skb->pkt_type = HCI_ACLDATA_PKT;
-+ BT_DBG("%s urb %p type %d status %d count %d flags %x", hdev->name, urb,
-+ _urb->type, urb->status, count, urb->transfer_flags);
-
-- husb->hdev.stat.byte_rx += skb->len;
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return;
-
-- hci_recv_frame(skb);
-+ read_lock(&husb->completion_lock);
-
--resubmit:
-- husb->read_urb->dev = husb->udev;
-- if ((status = usb_submit_urb(husb->read_urb)))
-- DBG("%s read URB submit failed %d", husb->hdev.name, status);
-+ if (urb->status || !count)
-+ goto resubmit;
-+
-+ if (_urb->type == HCI_SCODATA_PKT) {
-+#ifdef CONFIG_BLUEZ_USB_SCO
-+ int i;
-+ for (i=0; i < urb->number_of_packets; i++) {
-+ BT_DBG("desc %d status %d offset %d len %d", i,
-+ urb->iso_frame_desc[i].status,
-+ urb->iso_frame_desc[i].offset,
-+ urb->iso_frame_desc[i].actual_length);
-+
-+ if (!urb->iso_frame_desc[i].status)
-+ __recv_frame(husb, _urb->type,
-+ urb->transfer_buffer + urb->iso_frame_desc[i].offset,
-+ urb->iso_frame_desc[i].actual_length);
-+ }
-+#else
-+ ;
-+#endif
-+ } else {
-+ err = __recv_frame(husb, _urb->type, urb->transfer_buffer, count);
-+ if (err < 0) {
-+ BT_ERR("%s corrupted packet: type %d count %d",
-+ husb->hdev.name, _urb->type, count);
-+ hdev->stat.err_rx++;
-+ }
-+ }
-
-- DBG("%s read URB re-submited", husb->hdev.name);
-+resubmit:
-+ if (_urb->type != HCI_EVENT_PKT) {
-+ urb->dev = husb->udev;
-+ err = usb_submit_urb(urb);
-+ BT_DBG("%s urb %p type %d resubmit status %d", hdev->name, urb,
-+ _urb->type, err);
-+ }
-+ read_unlock(&husb->completion_lock);
- }
-
--static int hci_usb_ctrl_msg(struct hci_usb *husb, struct sk_buff *skb)
-+static void hci_usb_tx_complete(struct urb *urb)
- {
-- struct urb *urb = husb->ctrl_urb;
-- devrequest *dr = &husb->dev_req;
-- int pipe, status;
-+ struct _urb *_urb = container_of(urb, struct _urb, urb);
-+ struct hci_usb *husb = (void *) urb->context;
-+ struct hci_dev *hdev = &husb->hdev;
-
-- DBG("%s len %d", husb->hdev.name, skb->len);
-+ BT_DBG("%s urb %p status %d flags %x", hdev->name, urb,
-+ urb->status, urb->transfer_flags);
-
-- pipe = usb_sndctrlpipe(husb->udev, 0);
-+ atomic_dec(__pending_tx(husb, _urb->type));
-
-- dr->requesttype = HCI_CTRL_REQ;
-- dr->request = 0;
-- dr->index = 0;
-- dr->value = 0;
-- dr->length = cpu_to_le16(skb->len);
-+ urb->transfer_buffer = NULL;
-+ kfree_skb((struct sk_buff *) _urb->priv);
-
-- FILL_CONTROL_URB(urb, husb->udev, pipe, (void*)dr, skb->data, skb->len,
-- hci_usb_ctrl, skb);
--
-- if ((status = usb_submit_urb(urb))) {
-- DBG("%s control URB submit failed %d", husb->hdev.name, status);
-- return status;
-- }
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
-+ return;
-
-- return 0;
--}
-+ if (!urb->status)
-+ hdev->stat.byte_tx += urb->transfer_buffer_length;
-+ else
-+ hdev->stat.err_tx++;
-
--static int hci_usb_write_msg(struct hci_usb *husb, struct sk_buff *skb)
--{
-- struct urb *urb = husb->write_urb;
-- int pipe, status;
-+ read_lock(&husb->completion_lock);
-
-- DBG("%s len %d", husb->hdev.name, skb->len);
-+ _urb_unlink(_urb);
-+ _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-
-- pipe = usb_sndbulkpipe(husb->udev, husb->bulk_out_ep_addr);
-+ hci_usb_tx_wakeup(husb);
-+
-+ read_unlock(&husb->completion_lock);
-+}
-
-- FILL_BULK_URB(urb, husb->udev, pipe, skb->data, skb->len,
-- hci_usb_bulk_write, skb);
-- urb->transfer_flags |= USB_QUEUE_BULK;
-+static void hci_usb_destruct(struct hci_dev *hdev)
-+{
-+ struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-
-- if ((status = usb_submit_urb(urb))) {
-- DBG("%s write URB submit failed %d", husb->hdev.name, status);
-- return status;
-- }
-+ BT_DBG("%s", hdev->name);
-
-- return 0;
-+ kfree(husb);
- }
-
--static void * hci_usb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id)
-+static void *hci_usb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id)
- {
-- struct usb_endpoint_descriptor *bulk_out_ep, *intr_in_ep, *bulk_in_ep;
-+ struct usb_endpoint_descriptor *bulk_out_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *isoc_out_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *bulk_in_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *isoc_in_ep[HCI_MAX_IFACE_NUM];
-+ struct usb_endpoint_descriptor *intr_in_ep[HCI_MAX_IFACE_NUM];
- struct usb_interface_descriptor *uif;
- struct usb_endpoint_descriptor *ep;
-+ struct usb_interface *iface, *isoc_iface;
- struct hci_usb *husb;
- struct hci_dev *hdev;
-- int i, size, pipe;
-- __u8 * buf;
-+ int i, a, e, size, ifn, isoc_ifnum, isoc_alts;
-
-- DBG("udev %p ifnum %d", udev, ifnum);
--
-- /* Check device signature */
-- if ((udev->descriptor.bDeviceClass != HCI_DEV_CLASS) ||
-- (udev->descriptor.bDeviceSubClass != HCI_DEV_SUBCLASS)||
-- (udev->descriptor.bDeviceProtocol != HCI_DEV_PROTOCOL) )
-- return NULL;
--
-- MOD_INC_USE_COUNT;
-+ BT_DBG("udev %p ifnum %d", udev, ifnum);
-
-- uif = &udev->actconfig->interface[ifnum].altsetting[0];
-+ iface = &udev->actconfig->interface[0];
-
-- if (uif->bNumEndpoints != 3) {
-- DBG("Wrong number of endpoints %d", uif->bNumEndpoints);
-- MOD_DEC_USE_COUNT;
-+ /* Check our black list */
-+ if (usb_match_id(udev, iface, ignore_ids))
- return NULL;
-- }
-
-- bulk_out_ep = intr_in_ep = bulk_in_ep = NULL;
-+ /* Check number of endpoints */
-+ if (udev->actconfig->interface[ifnum].altsetting[0].bNumEndpoints < 3)
-+ return NULL;
-
-+ memset(bulk_out_ep, 0, sizeof(bulk_out_ep));
-+ memset(isoc_out_ep, 0, sizeof(isoc_out_ep));
-+ memset(bulk_in_ep, 0, sizeof(bulk_in_ep));
-+ memset(isoc_in_ep, 0, sizeof(isoc_in_ep));
-+ memset(intr_in_ep, 0, sizeof(intr_in_ep));
-+
-+ size = 0;
-+ isoc_iface = NULL;
-+ isoc_alts = isoc_ifnum = 0;
-+
- /* Find endpoints that we need */
-- for ( i = 0; i < uif->bNumEndpoints; ++i) {
-- ep = &uif->endpoint[i];
-
-- switch (ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-- case USB_ENDPOINT_XFER_BULK:
-- if (ep->bEndpointAddress & USB_DIR_IN)
-- bulk_in_ep = ep;
-- else
-- bulk_out_ep = ep;
-- break;
-+ ifn = MIN(udev->actconfig->bNumInterfaces, HCI_MAX_IFACE_NUM);
-+ for (i = 0; i < ifn; i++) {
-+ iface = &udev->actconfig->interface[i];
-+ for (a = 0; a < iface->num_altsetting; a++) {
-+ uif = &iface->altsetting[a];
-+ for (e = 0; e < uif->bNumEndpoints; e++) {
-+ ep = &uif->endpoint[e];
-+
-+ switch (ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-+ case USB_ENDPOINT_XFER_INT:
-+ if (ep->bEndpointAddress & USB_DIR_IN)
-+ intr_in_ep[i] = ep;
-+ break;
-+
-+ case USB_ENDPOINT_XFER_BULK:
-+ if (ep->bEndpointAddress & USB_DIR_IN)
-+ bulk_in_ep[i] = ep;
-+ else
-+ bulk_out_ep[i] = ep;
-+ break;
-+
-+#ifdef CONFIG_BLUEZ_USB_SCO
-+ case USB_ENDPOINT_XFER_ISOC:
-+ if (ep->wMaxPacketSize < size || a > 2)
-+ break;
-+ size = ep->wMaxPacketSize;
-+
-+ isoc_iface = iface;
-+ isoc_alts = a;
-+ isoc_ifnum = i;
-+
-+ if (ep->bEndpointAddress & USB_DIR_IN)
-+ isoc_in_ep[i] = ep;
-+ else
-+ isoc_out_ep[i] = ep;
-+ break;
-+#endif
-+ }
-+ }
-+ }
-+ }
-
-- case USB_ENDPOINT_XFER_INT:
-- intr_in_ep = ep;
-- break;
-- };
-+ if (!bulk_in_ep[0] || !bulk_out_ep[0] || !intr_in_ep[0]) {
-+ BT_DBG("Bulk endpoints not found");
-+ goto done;
- }
-
-- if (!bulk_in_ep || !bulk_out_ep || !intr_in_ep) {
-- DBG("Endpoints not found: %p %p %p", bulk_in_ep, bulk_out_ep, intr_in_ep);
-- MOD_DEC_USE_COUNT;
-- return NULL;
-+#ifdef CONFIG_BLUEZ_USB_SCO
-+ if (!isoc_in_ep[1] || !isoc_out_ep[1]) {
-+ BT_DBG("Isoc endpoints not found");
-+ isoc_iface = NULL;
- }
-+#endif
-
- if (!(husb = kmalloc(sizeof(struct hci_usb), GFP_KERNEL))) {
-- ERR("Can't allocate: control structure");
-- MOD_DEC_USE_COUNT;
-- return NULL;
-+ BT_ERR("Can't allocate: control structure");
-+ goto done;
- }
-
- memset(husb, 0, sizeof(struct hci_usb));
-
- husb->udev = udev;
-- husb->bulk_out_ep_addr = bulk_out_ep->bEndpointAddress;
--
-- if (!(husb->ctrl_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: control URB");
-- goto probe_error;
-- }
--
-- if (!(husb->write_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: write URB");
-- goto probe_error;
-- }
--
-- if (!(husb->read_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: read URB");
-- goto probe_error;
-- }
--
-- ep = bulk_in_ep;
-- pipe = usb_rcvbulkpipe(udev, ep->bEndpointAddress);
-- size = HCI_MAX_FRAME_SIZE;
--
-- if (!(buf = kmalloc(size, GFP_KERNEL))) {
-- ERR("Can't allocate: read buffer");
-- goto probe_error;
-- }
--
-- FILL_BULK_URB(husb->read_urb, udev, pipe, buf, size, hci_usb_bulk_read, husb);
-- husb->read_urb->transfer_flags |= USB_QUEUE_BULK;
--
-- ep = intr_in_ep;
-- pipe = usb_rcvintpipe(udev, ep->bEndpointAddress);
-- size = usb_maxpacket(udev, pipe, usb_pipeout(pipe));
--
-- if (!(husb->intr_urb = usb_alloc_urb(0))) {
-- ERR("Can't allocate: interrupt URB");
-- goto probe_error;
-+ husb->bulk_out_ep = bulk_out_ep[0];
-+ husb->bulk_in_ep = bulk_in_ep[0];
-+ husb->intr_in_ep = intr_in_ep[0];
-+
-+#ifdef CONFIG_BLUEZ_USB_SCO
-+ if (isoc_iface) {
-+ BT_DBG("isoc ifnum %d alts %d", isoc_ifnum, isoc_alts);
-+ if (usb_set_interface(udev, isoc_ifnum, isoc_alts)) {
-+ BT_ERR("Can't set isoc interface settings");
-+ isoc_iface = NULL;
-+ }
-+ usb_driver_claim_interface(&hci_usb_driver, isoc_iface, husb);
-+ husb->isoc_iface = isoc_iface;
-+ husb->isoc_in_ep = isoc_in_ep[isoc_ifnum];
-+ husb->isoc_out_ep = isoc_out_ep[isoc_ifnum];
- }
-+#endif
-+
-+ husb->completion_lock = RW_LOCK_UNLOCKED;
-
-- if (!(buf = kmalloc(size, GFP_KERNEL))) {
-- ERR("Can't allocate: interrupt buffer");
-- goto probe_error;
-+ for (i = 0; i < 4; i++) {
-+ skb_queue_head_init(&husb->transmit_q[i]);
-+ _urb_queue_init(&husb->pending_q[i]);
-+ _urb_queue_init(&husb->completed_q[i]);
- }
-
-- FILL_INT_URB(husb->intr_urb, udev, pipe, buf, size, hci_usb_intr, husb, ep->bInterval);
--
-- skb_queue_head_init(&husb->tx_ctrl_q);
-- skb_queue_head_init(&husb->tx_write_q);
--
- /* Initialize and register HCI device */
- hdev = &husb->hdev;
-
-- hdev->type = HCI_USB;
-+ hdev->type = HCI_USB;
- hdev->driver_data = husb;
-
- hdev->open = hci_usb_open;
- hdev->close = hci_usb_close;
- hdev->flush = hci_usb_flush;
-- hdev->send = hci_usb_send_frame;
-+ hdev->send = hci_usb_send_frame;
-+ hdev->destruct = hci_usb_destruct;
-
- if (hci_register_dev(hdev) < 0) {
-- ERR("Can't register HCI device %s", hdev->name);
-+ BT_ERR("Can't register HCI device");
- goto probe_error;
- }
-
- return husb;
-
- probe_error:
-- hci_usb_free_bufs(husb);
- kfree(husb);
-- MOD_DEC_USE_COUNT;
-+
-+done:
- return NULL;
- }
-
-@@ -626,38 +930,34 @@
- if (!husb)
- return;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s", hdev->name);
-
- hci_usb_close(hdev);
-
-- if (hci_unregister_dev(hdev) < 0) {
-- ERR("Can't unregister HCI device %s", hdev->name);
-- }
-+ if (husb->isoc_iface)
-+ usb_driver_release_interface(&hci_usb_driver, husb->isoc_iface);
-
-- hci_usb_free_bufs(husb);
-- kfree(husb);
--
-- MOD_DEC_USE_COUNT;
-+ if (hci_unregister_dev(hdev) < 0)
-+ BT_ERR("Can't unregister HCI device %s", hdev->name);
- }
-
--static struct usb_driver hci_usb_driver =
--{
-+static struct usb_driver hci_usb_driver = {
- name: "hci_usb",
- probe: hci_usb_probe,
- disconnect: hci_usb_disconnect,
-- id_table: usb_bluetooth_ids,
-+ id_table: bluetooth_ids,
- };
-
- int hci_usb_init(void)
- {
- int err;
-
-- INF("BlueZ HCI USB driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ BT_INFO("BlueZ HCI USB driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-
- if ((err = usb_register(&hci_usb_driver)) < 0)
-- ERR("Failed to register HCI USB driver");
-+ BT_ERR("Failed to register HCI USB driver");
-
- return err;
- }
-diff -urN linux-2.4.18/drivers/bluetooth/hci_usb.h linux-2.4.18-mh9/drivers/bluetooth/hci_usb.h
---- linux-2.4.18/drivers/bluetooth/hci_usb.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/hci_usb.h Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,139 @@
-+/*
-+ HCI USB driver for Linux Bluetooth protocol stack (BlueZ)
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ Copyright (C) 2003 Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_usb.h,v 1.2 2002/03/18 19:10:04 maxk Exp $
-+ */
-+
-+#ifdef __KERNEL__
-+
-+/* Class, SubClass, and Protocol codes that describe a Bluetooth device */
-+#define HCI_DEV_CLASS 0xe0 /* Wireless class */
-+#define HCI_DEV_SUBCLASS 0x01 /* RF subclass */
-+#define HCI_DEV_PROTOCOL 0x01 /* Bluetooth programming protocol */
-+
-+#define HCI_CTRL_REQ 0x20
-+
-+#define HCI_MAX_IFACE_NUM 3
-+
-+#define HCI_MAX_BULK_TX 4
-+#define HCI_MAX_BULK_RX 1
-+
-+#define HCI_MAX_ISOC_RX 2
-+#define HCI_MAX_ISOC_TX 2
-+
-+#define HCI_MAX_ISOC_FRAMES 10
-+
-+struct _urb_queue {
-+ struct list_head head;
-+ spinlock_t lock;
-+};
-+
-+struct _urb {
-+ struct list_head list;
-+ struct _urb_queue *queue;
-+ int type;
-+ void *priv;
-+ struct urb urb;
-+};
-+
-+struct _urb *_urb_alloc(int isoc, int gfp);
-+
-+static inline void _urb_free(struct _urb *_urb)
-+{
-+ kfree(_urb);
-+}
-+
-+static inline void _urb_queue_init(struct _urb_queue *q)
-+{
-+ INIT_LIST_HEAD(&q->head);
-+ spin_lock_init(&q->lock);
-+}
-+
-+static inline void _urb_queue_head(struct _urb_queue *q, struct _urb *_urb)
-+{
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_add(&_urb->list, &q->head); _urb->queue = q;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+}
-+
-+static inline void _urb_queue_tail(struct _urb_queue *q, struct _urb *_urb)
-+{
-+ unsigned long flags;
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_add_tail(&_urb->list, &q->head); _urb->queue = q;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+}
-+
-+static inline void _urb_unlink(struct _urb *_urb)
-+{
-+ struct _urb_queue *q = _urb->queue;
-+ unsigned long flags;
-+ if (q) {
-+ spin_lock_irqsave(&q->lock, flags);
-+ list_del(&_urb->list); _urb->queue = NULL;
-+ spin_unlock_irqrestore(&q->lock, flags);
-+ }
-+}
-+
-+struct _urb *_urb_dequeue(struct _urb_queue *q);
-+
-+#ifndef container_of
-+#define container_of(ptr, type, member) ({ \
-+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
-+ (type *)( (char *)__mptr - offsetof(type,member) );})
-+#endif
-+
-+struct hci_usb {
-+ struct hci_dev hdev;
-+
-+ unsigned long state;
-+
-+ struct usb_device *udev;
-+
-+ struct usb_endpoint_descriptor *bulk_in_ep;
-+ struct usb_endpoint_descriptor *bulk_out_ep;
-+ struct usb_endpoint_descriptor *intr_in_ep;
-+
-+ struct usb_interface *isoc_iface;
-+ struct usb_endpoint_descriptor *isoc_out_ep;
-+ struct usb_endpoint_descriptor *isoc_in_ep;
-+
-+ struct sk_buff_head transmit_q[4];
-+ struct sk_buff *reassembly[4]; // Reassembly buffers
-+
-+ rwlock_t completion_lock;
-+
-+ atomic_t pending_tx[4]; // Number of pending requests
-+ struct _urb_queue pending_q[4]; // Pending requests
-+ struct _urb_queue completed_q[4]; // Completed requests
-+};
-+
-+/* States */
-+#define HCI_USB_TX_PROCESS 1
-+#define HCI_USB_TX_WAKEUP 2
-+
-+#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/drivers/bluetooth/hci_vhci.c linux-2.4.18-mh9/drivers/bluetooth/hci_vhci.c
---- linux-2.4.18/drivers/bluetooth/hci_vhci.c Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/drivers/bluetooth/hci_vhci.c Mon Aug 25 18:38:10 2003
-@@ -25,9 +25,9 @@
- /*
- * BlueZ HCI virtual device driver.
- *
-- * $Id: hci_vhci.c,v 1.3 2001/08/03 04:19:50 maxk Exp $
-+ * $Id: hci_vhci.c,v 1.3 2002/04/17 17:37:20 maxk Exp $
- */
--#define VERSION "1.0"
-+#define VERSION "1.1"
-
- #include <linux/config.h>
- #include <linux/module.h>
-@@ -49,43 +49,56 @@
- #include <asm/uaccess.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/hci_vhci.h>
-+#include "hci_vhci.h"
-
- /* HCI device part */
-
--int hci_vhci_open(struct hci_dev *hdev)
-+static int hci_vhci_open(struct hci_dev *hdev)
- {
-- hdev->flags |= HCI_RUNNING;
-+ set_bit(HCI_RUNNING, &hdev->flags);
- return 0;
- }
-
--int hci_vhci_flush(struct hci_dev *hdev)
-+static int hci_vhci_flush(struct hci_dev *hdev)
- {
- struct hci_vhci_struct *hci_vhci = (struct hci_vhci_struct *) hdev->driver_data;
- skb_queue_purge(&hci_vhci->readq);
- return 0;
- }
-
--int hci_vhci_close(struct hci_dev *hdev)
-+static int hci_vhci_close(struct hci_dev *hdev)
- {
-- hdev->flags &= ~HCI_RUNNING;
-+ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-+ return 0;
-+
- hci_vhci_flush(hdev);
- return 0;
- }
-
--int hci_vhci_send_frame(struct sk_buff *skb)
-+static void hci_vhci_destruct(struct hci_dev *hdev)
-+{
-+ struct hci_vhci_struct *vhci;
-+
-+ if (!hdev) return;
-+
-+ vhci = (struct hci_vhci_struct *) hdev->driver_data;
-+ kfree(vhci);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static int hci_vhci_send_frame(struct sk_buff *skb)
- {
- struct hci_dev* hdev = (struct hci_dev *) skb->dev;
- struct hci_vhci_struct *hci_vhci;
-
- if (!hdev) {
-- ERR("Frame for uknown device (hdev=NULL)");
-+ BT_ERR("Frame for uknown device (hdev=NULL)");
- return -ENODEV;
- }
-
-- if (!(hdev->flags & HCI_RUNNING))
-+ if (!test_bit(HCI_RUNNING, &hdev->flags))
- return -EBUSY;
-
- hci_vhci = (struct hci_vhci_struct *) hdev->driver_data;
-@@ -188,7 +201,7 @@
-
- add_wait_queue(&hci_vhci->read_wait, &wait);
- while (count) {
-- current->state = TASK_INTERRUPTIBLE;
-+ set_current_state(TASK_INTERRUPTIBLE);
-
- /* Read frames from device queue */
- if (!(skb = skb_dequeue(&hci_vhci->readq))) {
-@@ -214,8 +227,7 @@
- kfree_skb(skb);
- break;
- }
--
-- current->state = TASK_RUNNING;
-+ set_current_state(TASK_RUNNING);
- remove_wait_queue(&hci_vhci->read_wait, &wait);
-
- return ret;
-@@ -270,11 +282,13 @@
- hdev->close = hci_vhci_close;
- hdev->flush = hci_vhci_flush;
- hdev->send = hci_vhci_send_frame;
-+ hdev->destruct = hci_vhci_destruct;
-
- if (hci_register_dev(hdev) < 0) {
- kfree(hci_vhci);
- return -EBUSY;
- }
-+ MOD_INC_USE_COUNT;
-
- file->private_data = hci_vhci;
- return 0;
-@@ -285,12 +299,10 @@
- struct hci_vhci_struct *hci_vhci = (struct hci_vhci_struct *) file->private_data;
-
- if (hci_unregister_dev(&hci_vhci->hdev) < 0) {
-- ERR("Can't unregister HCI device %s", hci_vhci->hdev.name);
-+ BT_ERR("Can't unregister HCI device %s", hci_vhci->hdev.name);
- }
-
-- kfree(hci_vhci);
- file->private_data = NULL;
--
- return 0;
- }
-
-@@ -315,12 +327,12 @@
-
- int __init hci_vhci_init(void)
- {
-- INF("BlueZ VHCI driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ BT_INFO("BlueZ VHCI driver ver %s Copyright (C) 2000,2001 Qualcomm Inc",
- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-
- if (misc_register(&hci_vhci_miscdev)) {
-- ERR("Can't register misc device %d\n", VHCI_MINOR);
-+ BT_ERR("Can't register misc device %d\n", VHCI_MINOR);
- return -EIO;
- }
-
-@@ -337,4 +349,4 @@
-
- MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
- MODULE_DESCRIPTION("BlueZ VHCI driver ver " VERSION);
--MODULE_LICENSE("GPL");
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/drivers/bluetooth/hci_vhci.h linux-2.4.18-mh9/drivers/bluetooth/hci_vhci.h
---- linux-2.4.18/drivers/bluetooth/hci_vhci.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/drivers/bluetooth/hci_vhci.h Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,50 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: hci_vhci.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $
-+ */
-+
-+#ifndef __HCI_VHCI_H
-+#define __HCI_VHCI_H
-+
-+#ifdef __KERNEL__
-+
-+struct hci_vhci_struct {
-+ struct hci_dev hdev;
-+ __u32 flags;
-+ wait_queue_head_t read_wait;
-+ struct sk_buff_head readq;
-+ struct fasync_struct *fasync;
-+};
-+
-+/* VHCI device flags */
-+#define VHCI_FASYNC 0x0010
-+
-+#endif /* __KERNEL__ */
-+
-+#define VHCI_DEV "/dev/vhci"
-+#define VHCI_MINOR 250
-+
-+#endif /* __HCI_VHCI_H */
-diff -urN linux-2.4.18/drivers/char/pcmcia/serial_cs.c linux-2.4.18-mh9/drivers/char/pcmcia/serial_cs.c
---- linux-2.4.18/drivers/char/pcmcia/serial_cs.c Fri Dec 21 18:41:54 2001
-+++ linux-2.4.18-mh9/drivers/char/pcmcia/serial_cs.c Mon Aug 25 18:38:10 2003
-@@ -2,7 +2,7 @@
-
- A driver for PCMCIA serial devices
-
-- serial_cs.c 1.128 2001/10/18 12:18:35
-+ serial_cs.c 1.138 2002/10/25 06:24:52
-
- The contents of this file are subject to the Mozilla Public
- License Version 1.1 (the "License"); you may not use this file
-@@ -28,7 +28,7 @@
- and other provisions required by the GPL. If you do not delete
- the provisions above, a recipient may use your version of this
- file under either the MPL or the GPL.
--
-+
- ======================================================================*/
-
- #include <linux/module.h>
-@@ -69,14 +69,14 @@
- static int irq_list[4] = { -1 };
- MODULE_PARM(irq_list, "1-4i");
-
--/* Enable the speaker? */
--INT_MODULE_PARM(do_sound, 1);
-+INT_MODULE_PARM(do_sound, 1); /* Enable the speaker? */
-+INT_MODULE_PARM(buggy_uart, 0); /* Skip strict UART tests? */
-
- #ifdef PCMCIA_DEBUG
- INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG);
- #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args)
- static char *version =
--"serial_cs.c 1.128 2001/10/18 12:18:35 (David Hinds)";
-+"serial_cs.c 1.138 2002/10/25 06:24:52 (David Hinds)";
- #else
- #define DEBUG(n, args...)
- #endif
-@@ -95,6 +95,7 @@
- { MANFID_OMEGA, PRODID_OMEGA_QSP_100, 4 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D1, 2 },
-+ { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D2, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS232, 4 },
- { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS422, 2 },
- { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS422, 4 },
-@@ -148,7 +149,7 @@
- client_reg_t client_reg;
- dev_link_t *link;
- int i, ret;
--
-+
- DEBUG(0, "serial_attach()\n");
-
- /* Create new serial device */
-@@ -160,7 +161,7 @@
- link->release.function = &serial_release;
- link->release.data = (u_long)link;
- link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-- link->io.NumPorts1 = 8;
-+ link->io.Attributes2 = IO_DATA_PATH_WIDTH_8;
- link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
- link->irq.IRQInfo1 = IRQ_INFO2_VALID|IRQ_LEVEL_ID;
- if (irq_list[0] == -1)
-@@ -169,13 +170,12 @@
- for (i = 0; i < 4; i++)
- link->irq.IRQInfo2 |= 1 << irq_list[i];
- link->conf.Attributes = CONF_ENABLE_IRQ;
-- link->conf.Vcc = 50;
- if (do_sound) {
- link->conf.Attributes |= CONF_ENABLE_SPKR;
- link->conf.Status = CCSR_AUDIO_ENA;
- }
- link->conf.IntType = INT_MEMORY_AND_IO;
--
-+
- /* Register with Card Services */
- link->next = dev_list;
- dev_list = link;
-@@ -194,7 +194,7 @@
- serial_detach(link);
- return NULL;
- }
--
-+
- return link;
- } /* serial_attach */
-
-@@ -214,7 +214,7 @@
- int ret;
-
- DEBUG(0, "serial_detach(0x%p)\n", link);
--
-+
- /* Locate device structure */
- for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
- if (*linkp == link) break;
-@@ -224,17 +224,17 @@
- del_timer(&link->release);
- if (link->state & DEV_CONFIG)
- serial_release((u_long)link);
--
-+
- if (link->handle) {
- ret = CardServices(DeregisterClient, link->handle);
- if (ret != CS_SUCCESS)
- cs_error(link->handle, DeregisterClient, ret);
- }
--
-+
- /* Unlink device structure, free bits */
- *linkp = link->next;
- kfree(info);
--
-+
- } /* serial_detach */
-
- /*====================================================================*/
-@@ -243,18 +243,20 @@
- {
- struct serial_struct serial;
- int line;
--
-+
- memset(&serial, 0, sizeof(serial));
- serial.port = port;
- serial.irq = irq;
- serial.flags = ASYNC_SKIP_TEST | ASYNC_SHARE_IRQ;
-+ if (buggy_uart)
-+ serial.flags |= ASYNC_BUGGY_UART;
- line = register_serial(&serial);
- if (line < 0) {
- printk(KERN_NOTICE "serial_cs: register_serial() at 0x%04lx,"
- " irq %d failed\n", (u_long)serial.port, serial.irq);
- return -1;
- }
--
-+
- info->line[info->ndev] = line;
- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
- info->node[info->ndev].major = TTY_MAJOR;
-@@ -262,7 +264,7 @@
- if (info->ndev > 0)
- info->node[info->ndev-1].next = &info->node[info->ndev];
- info->ndev++;
--
-+
- return 0;
- }
-
-@@ -313,7 +315,10 @@
- return setup_serial(info, port, config.AssignedIRQ);
- }
- link->conf.Vcc = config.Vcc;
--
-+
-+ link->io.NumPorts1 = 8;
-+ link->io.NumPorts2 = 0;
-+
- /* First pass: look for a config entry that looks normal. */
- tuple.TupleData = (cisdata_t *)buf;
- tuple.TupleOffset = 0; tuple.TupleDataMax = 255;
-@@ -340,7 +345,7 @@
- i = next_tuple(handle, &tuple, &parse);
- }
- }
--
-+
- /* Second pass: try to find an entry that isn't picky about
- its base address, then try to grab any standard serial port
- address, and finally try to get any free port. */
-@@ -352,8 +357,7 @@
- for (j = 0; j < 5; j++) {
- link->io.BasePort1 = base[j];
- link->io.IOAddrLines = base[j] ? 16 : 3;
-- i = CardServices(RequestIO, link->handle,
-- &link->io);
-+ i = CardServices(RequestIO, link->handle, &link->io);
- if (i == CS_SUCCESS) goto found_port;
- }
- }
-@@ -365,7 +369,7 @@
- cs_error(link->handle, RequestIO, i);
- return -1;
- }
--
-+
- i = CardServices(RequestIRQ, link->handle, &link->irq);
- if (i != CS_SUCCESS) {
- cs_error(link->handle, RequestIRQ, i);
-@@ -390,8 +394,12 @@
- u_char buf[256];
- cisparse_t parse;
- cistpl_cftable_entry_t *cf = &parse.cftable_entry;
-+ config_info_t config;
- int i, base2 = 0;
-
-+ CardServices(GetConfigurationInfo, handle, &config);
-+ link->conf.Vcc = config.Vcc;
-+
- tuple.TupleData = (cisdata_t *)buf;
- tuple.TupleOffset = 0; tuple.TupleDataMax = 255;
- tuple.Attributes = 0;
-@@ -433,12 +441,12 @@
- i = next_tuple(handle, &tuple, &parse);
- }
- }
--
-+
- if (i != CS_SUCCESS) {
-- cs_error(link->handle, RequestIO, i);
-- return -1;
-+ /* At worst, try to configure as a single port */
-+ return simple_config(link);
- }
--
-+
- i = CardServices(RequestIRQ, link->handle, &link->irq);
- if (i != CS_SUCCESS) {
- cs_error(link->handle, RequestIRQ, i);
-@@ -454,14 +462,27 @@
- cs_error(link->handle, RequestConfiguration, i);
- return -1;
- }
--
-+
-+ /* The Oxford Semiconductor OXCF950 cards are in fact single-port:
-+ 8 registers are for the UART, the others are extra registers */
-+ if (info->manfid == MANFID_OXSEMI) {
-+ if (cf->index == 1 || cf->index == 3) {
-+ setup_serial(info, base2, link->irq.AssignedIRQ);
-+ outb(12,link->io.BasePort1+1);
-+ } else {
-+ setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ);
-+ outb(12,base2+1);
-+ }
-+ return 0;
-+ }
-+
- setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ);
- /* The Nokia cards are not really multiport cards */
- if (info->manfid == MANFID_NOKIA)
- return 0;
- for (i = 0; i < info->multi-1; i++)
- setup_serial(info, base2+(8*i), link->irq.AssignedIRQ);
--
-+
- return 0;
- }
-
-@@ -487,7 +508,7 @@
- int i, last_ret, last_fn;
-
- DEBUG(0, "serial_config(0x%p)\n", link);
--
-+
- tuple.TupleData = (cisdata_t *)buf;
- tuple.TupleOffset = 0; tuple.TupleDataMax = 255;
- tuple.Attributes = 0;
-@@ -500,7 +521,7 @@
- }
- link->conf.ConfigBase = parse.config.base;
- link->conf.Present = parse.config.rmask[0];
--
-+
- /* Configure card */
- link->state |= DEV_CONFIG;
-
-@@ -508,8 +529,8 @@
- tuple.DesiredTuple = CISTPL_LONGLINK_MFC;
- tuple.Attributes = TUPLE_RETURN_COMMON | TUPLE_RETURN_LINK;
- info->multi = (first_tuple(handle, &tuple, &parse) == CS_SUCCESS);
--
-- /* Is this a multiport card? */
-+
-+ /* Scan list of known multiport card ID's */
- tuple.DesiredTuple = CISTPL_MANFID;
- if (first_tuple(handle, &tuple, &parse) == CS_SUCCESS) {
- info->manfid = le16_to_cpu(buf[0]);
-@@ -537,15 +558,15 @@
- info->multi = 2;
- }
- }
--
-+
- if (info->multi > 1)
- multi_config(link);
- else
- simple_config(link);
--
-+
- if (info->ndev == 0)
- goto failed;
--
-+
- if (info->manfid == MANFID_IBM) {
- conf_reg_t reg = { 0, CS_READ, 0x800, 0 };
- CS_CHECK(AccessConfigurationRegister, link->handle, &reg);
-@@ -562,6 +583,7 @@
- cs_error(link->handle, last_fn, last_ret);
- failed:
- serial_release((u_long)link);
-+ link->state &= ~DEV_CONFIG_PENDING;
-
- } /* serial_config */
-
-@@ -569,7 +591,7 @@
-
- After a card is removed, serial_release() will unregister the net
- device, and release the PCMCIA configuration.
--
-+
- ======================================================================*/
-
- void serial_release(u_long arg)
-@@ -577,7 +599,7 @@
- dev_link_t *link = (dev_link_t *)arg;
- serial_info_t *info = link->priv;
- int i;
--
-+
- DEBUG(0, "serial_release(0x%p)\n", link);
-
- for (i = 0; i < info->ndev; i++) {
-@@ -590,7 +612,7 @@
- CardServices(ReleaseIO, link->handle, &link->io);
- CardServices(ReleaseIRQ, link->handle, &link->irq);
- }
--
-+
- link->state &= ~DEV_CONFIG;
-
- } /* serial_release */
-@@ -601,7 +623,7 @@
- stuff to run after an event is received. A CARD_REMOVAL event
- also sets some flags to discourage the serial drivers from
- talking to the ports.
--
-+
- ======================================================================*/
-
- static int serial_event(event_t event, int priority,
-@@ -609,9 +631,9 @@
- {
- dev_link_t *link = args->client_data;
- serial_info_t *info = link->priv;
--
-+
- DEBUG(1, "serial_event(0x%06x)\n", event);
--
-+
- switch (event) {
- case CS_EVENT_CARD_REMOVAL:
- link->state &= ~DEV_PRESENT;
-@@ -650,7 +672,7 @@
- if (serv.Revision != CS_RELEASE_CODE) {
- printk(KERN_NOTICE "serial_cs: Card Services release "
- "does not match!\n");
-- return -1;
-+ return -EINVAL;
- }
- register_pccard_driver(&dev_info, &serial_attach, &serial_detach);
- return 0;
-diff -urN linux-2.4.18/drivers/usb/Config.in linux-2.4.18-mh9/drivers/usb/Config.in
---- linux-2.4.18/drivers/usb/Config.in Mon Feb 25 20:38:07 2002
-+++ linux-2.4.18-mh9/drivers/usb/Config.in Mon Aug 25 18:38:10 2003
-@@ -31,7 +31,13 @@
-
- comment 'USB Device Class drivers'
- dep_tristate ' USB Audio support' CONFIG_USB_AUDIO $CONFIG_USB $CONFIG_SOUND
--dep_tristate ' USB Bluetooth support (EXPERIMENTAL)' CONFIG_USB_BLUETOOTH $CONFIG_USB $CONFIG_EXPERIMENTAL
-+if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-+ if [ "$CONFIG_BLUEZ" = "n" ]; then
-+ dep_tristate ' USB Bluetooth support (EXPERIMENTAL)' CONFIG_USB_BLUETOOTH $CONFIG_USB
-+ else
-+ comment ' USB Bluetooth can only be used with disabled Bluetooth subsystem'
-+ fi
-+fi
- if [ "$CONFIG_SCSI" = "n" ]; then
- comment ' SCSI support is needed for USB Storage'
- fi
-diff -urN linux-2.4.18/include/linux/firmware.h linux-2.4.18-mh9/include/linux/firmware.h
---- linux-2.4.18/include/linux/firmware.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/include/linux/firmware.h Mon Aug 25 18:38:10 2003
-@@ -0,0 +1,20 @@
-+#ifndef _LINUX_FIRMWARE_H
-+#define _LINUX_FIRMWARE_H
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#define FIRMWARE_NAME_MAX 30
-+struct firmware {
-+ size_t size;
-+ u8 *data;
-+};
-+int request_firmware (const struct firmware **fw, const char *name,
-+ const char *device);
-+int request_firmware_nowait (
-+ struct module *module,
-+ const char *name, const char *device, void *context,
-+ void (*cont)(const struct firmware *fw, void *context));
-+/* On 2.5 'device' is 'struct device *' */
-+
-+void release_firmware (const struct firmware *fw);
-+void register_firmware (const char *name, const u8 *data, size_t size);
-+#endif
-diff -urN linux-2.4.18/include/linux/kernel.h linux-2.4.18-mh9/include/linux/kernel.h
---- linux-2.4.18/include/linux/kernel.h Mon Feb 25 20:38:13 2002
-+++ linux-2.4.18-mh9/include/linux/kernel.h Mon Aug 25 18:38:11 2003
-@@ -11,6 +11,7 @@
- #include <linux/linkage.h>
- #include <linux/stddef.h>
- #include <linux/types.h>
-+#include <linux/compiler.h>
-
- /* Optimization barrier */
- /* The "volatile" is due to gcc bugs */
-@@ -181,4 +182,6 @@
- char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */
- };
-
--#endif
-+#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0)
-+
-+#endif /* _LINUX_KERNEL_H */
-diff -urN linux-2.4.18/include/net/bluetooth/bluetooth.h linux-2.4.18-mh9/include/net/bluetooth/bluetooth.h
---- linux-2.4.18/include/net/bluetooth/bluetooth.h Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/include/net/bluetooth/bluetooth.h Mon Aug 25 18:38:11 2003
-@@ -23,7 +23,7 @@
- */
-
- /*
-- * $Id: bluetooth.h,v 1.6 2001/08/03 04:19:49 maxk Exp $
-+ * $Id: bluetooth.h,v 1.9 2002/05/06 21:11:55 maxk Exp $
- */
-
- #ifndef __BLUETOOTH_H
-@@ -31,17 +31,63 @@
-
- #include <asm/types.h>
- #include <asm/byteorder.h>
-+#include <linux/poll.h>
-+#include <net/sock.h>
-
- #ifndef AF_BLUETOOTH
- #define AF_BLUETOOTH 31
- #define PF_BLUETOOTH AF_BLUETOOTH
- #endif
-
-+/* Reserv for core and drivers use */
-+#define BLUEZ_SKB_RESERVE 8
-+
-+#ifndef MIN
-+#define MIN(a,b) ((a) < (b) ? (a) : (b))
-+#endif
-+
- #define BTPROTO_L2CAP 0
- #define BTPROTO_HCI 1
-+#define BTPROTO_SCO 2
-+#define BTPROTO_RFCOMM 3
-+#define BTPROTO_BNEP 4
-+#define BTPROTO_CMTP 5
-
- #define SOL_HCI 0
- #define SOL_L2CAP 6
-+#define SOL_SCO 17
-+#define SOL_RFCOMM 18
-+
-+/* Debugging */
-+#ifdef CONFIG_BLUEZ_DEBUG
-+
-+#define HCI_CORE_DEBUG 1
-+#define HCI_SOCK_DEBUG 1
-+#define HCI_UART_DEBUG 1
-+#define HCI_USB_DEBUG 1
-+//#define HCI_DATA_DUMP 1
-+
-+#define L2CAP_DEBUG 1
-+#define SCO_DEBUG 1
-+#define AF_BLUETOOTH_DEBUG 1
-+
-+#endif /* CONFIG_BLUEZ_DEBUG */
-+
-+extern void bluez_dump(char *pref, __u8 *buf, int count);
-+
-+#if __GNUC__ <= 2 && __GNUC_MINOR__ < 95
-+#define __func__ __FUNCTION__
-+#endif
-+
-+#define BT_INFO(fmt, arg...) printk(KERN_INFO fmt "\n" , ## arg)
-+#define BT_DBG(fmt, arg...) printk(KERN_INFO "%s: " fmt "\n" , __func__ , ## arg)
-+#define BT_ERR(fmt, arg...) printk(KERN_ERR "%s: " fmt "\n" , __func__ , ## arg)
-+
-+#ifdef HCI_DATA_DUMP
-+#define BT_DMP(buf, len) bluez_dump(__func__, buf, len)
-+#else
-+#define BT_DMP(D...)
-+#endif
-
- /* Connection and socket states */
- enum {
-@@ -50,6 +96,7 @@
- BT_BOUND,
- BT_LISTEN,
- BT_CONNECT,
-+ BT_CONNECT2,
- BT_CONFIG,
- BT_DISCONN,
- BT_CLOSED
-@@ -66,7 +113,8 @@
- __u8 b[6];
- } __attribute__((packed)) bdaddr_t;
-
--#define BDADDR_ANY ((bdaddr_t *)"\000\000\000\000\000")
-+#define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
-+#define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}})
-
- /* Copy, swap, convert BD Address */
- static inline int bacmp(bdaddr_t *ba1, bdaddr_t *ba2)
-@@ -82,6 +130,91 @@
- char *batostr(bdaddr_t *ba);
- bdaddr_t *strtoba(char *str);
-
-+/* Common socket structures and functions */
-+
-+#define bluez_pi(sk) ((struct bluez_pinfo *) &sk->protinfo)
-+#define bluez_sk(pi) ((struct sock *) \
-+ ((void *)pi - (unsigned long)(&((struct sock *)0)->protinfo)))
-+
-+struct bluez_pinfo {
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+
-+ struct list_head accept_q;
-+ struct sock *parent;
-+};
-+
-+struct bluez_sock_list {
-+ struct sock *head;
-+ rwlock_t lock;
-+};
-+
-+int bluez_sock_register(int proto, struct net_proto_family *ops);
-+int bluez_sock_unregister(int proto);
-+void bluez_sock_init(struct socket *sock, struct sock *sk);
-+void bluez_sock_link(struct bluez_sock_list *l, struct sock *s);
-+void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *s);
-+int bluez_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm);
-+uint bluez_sock_poll(struct file * file, struct socket *sock, poll_table *wait);
-+int bluez_sock_wait_state(struct sock *sk, int state, unsigned long timeo);
-+
-+void bluez_accept_enqueue(struct sock *parent, struct sock *sk);
-+struct sock * bluez_accept_dequeue(struct sock *parent, struct socket *newsock);
-+
-+/* Skb helpers */
-+struct bluez_skb_cb {
-+ int incomming;
-+};
-+#define bluez_cb(skb) ((struct bluez_skb_cb *)(skb->cb))
-+
-+static inline struct sk_buff *bluez_skb_alloc(unsigned int len, int how)
-+{
-+ struct sk_buff *skb;
-+
-+ if ((skb = alloc_skb(len + BLUEZ_SKB_RESERVE, how))) {
-+ skb_reserve(skb, BLUEZ_SKB_RESERVE);
-+ bluez_cb(skb)->incomming = 0;
-+ }
-+ return skb;
-+}
-+
-+static inline struct sk_buff *bluez_skb_send_alloc(struct sock *sk, unsigned long len,
-+ int nb, int *err)
-+{
-+ struct sk_buff *skb;
-+
-+ if ((skb = sock_alloc_send_skb(sk, len + BLUEZ_SKB_RESERVE, nb, err))) {
-+ skb_reserve(skb, BLUEZ_SKB_RESERVE);
-+ bluez_cb(skb)->incomming = 0;
-+ }
-+
-+ return skb;
-+}
-+
-+static inline int skb_frags_no(struct sk_buff *skb)
-+{
-+ register struct sk_buff *frag = skb_shinfo(skb)->frag_list;
-+ register int n = 1;
-+
-+ for (; frag; frag=frag->next, n++);
-+ return n;
-+}
-+
-+int hci_core_init(void);
-+int hci_core_cleanup(void);
-+int hci_sock_init(void);
-+int hci_sock_cleanup(void);
-+
- int bterr(__u16 code);
-+
-+#ifndef MODULE_LICENSE
-+#define MODULE_LICENSE(x)
-+#endif
-+
-+#ifndef list_for_each_safe
-+#define list_for_each_safe(pos, n, head) \
-+ for (pos = (head)->next, n = pos->next; pos != (head); \
-+ pos = n, n = pos->next)
-+#endif
-
- #endif /* __BLUETOOTH_H */
-diff -urN linux-2.4.18/include/net/bluetooth/bluez.h linux-2.4.18-mh9/include/net/bluetooth/bluez.h
---- linux-2.4.18/include/net/bluetooth/bluez.h Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/include/net/bluetooth/bluez.h Thu Jan 1 01:00:00 1970
-@@ -1,124 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: bluez.h,v 1.4 2001/08/03 04:19:49 maxk Exp $
-- */
--
--#ifndef __IF_BLUEZ_H
--#define __IF_BLUEZ_H
--
--#include <net/sock.h>
--
--#define BLUEZ_MAX_PROTO 2
--
--/* Reserv for core and drivers use */
--#define BLUEZ_SKB_RESERVE 8
--
--#ifndef MIN
--#define MIN(a,b) ((a) < (b) ? (a) : (b))
--#endif
--
--/* Debugging */
--#ifdef BLUEZ_DEBUG
--
--#define HCI_CORE_DEBUG 1
--#define HCI_SOCK_DEBUG 1
--#define HCI_UART_DEBUG 1
--#define HCI_USB_DEBUG 1
--//#define HCI_DATA_DUMP 1
--
--#define L2CAP_DEBUG 1
--
--#endif /* BLUEZ_DEBUG */
--
--extern void bluez_dump(char *pref, __u8 *buf, int count);
--
--#define INF(fmt, arg...) printk(KERN_INFO fmt "\n" , ## arg)
--#define DBG(fmt, arg...) printk(KERN_INFO __FUNCTION__ ": " fmt "\n" , ## arg)
--#define ERR(fmt, arg...) printk(KERN_ERR __FUNCTION__ ": " fmt "\n" , ## arg)
--
--#ifdef HCI_DATA_DUMP
--#define DMP(buf, len) bluez_dump(__FUNCTION__, buf, len)
--#else
--#define DMP(D...)
--#endif
--
--/* ----- Sockets ------ */
--struct bluez_sock_list {
-- struct sock *head;
-- rwlock_t lock;
--};
--
--extern int bluez_sock_register(int proto, struct net_proto_family *ops);
--extern int bluez_sock_unregister(int proto);
--
--extern void bluez_sock_link(struct bluez_sock_list *l, struct sock *s);
--extern void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *s);
--
--/* ----- SKB helpers ----- */
--struct bluez_skb_cb {
-- int incomming;
--};
--#define bluez_cb(skb) ((struct bluez_skb_cb *)(skb->cb))
--
--static inline struct sk_buff *bluez_skb_alloc(unsigned int len, int how)
--{
-- struct sk_buff *skb;
--
-- if ((skb = alloc_skb(len + BLUEZ_SKB_RESERVE, how))) {
-- skb_reserve(skb, BLUEZ_SKB_RESERVE);
-- bluez_cb(skb)->incomming = 0;
-- }
-- return skb;
--}
--
--static inline struct sk_buff *bluez_skb_send_alloc(struct sock *sk, unsigned long len,
-- int nb, int *err)
--{
-- struct sk_buff *skb;
--
-- if ((skb = sock_alloc_send_skb(sk, len + BLUEZ_SKB_RESERVE, nb, err))) {
-- skb_reserve(skb, BLUEZ_SKB_RESERVE);
-- bluez_cb(skb)->incomming = 0;
-- }
--
-- return skb;
--}
--
--static inline int skb_frags_no(struct sk_buff *skb)
--{
-- register struct sk_buff *frag = skb_shinfo(skb)->frag_list;
-- register int n = 1;
--
-- for (; frag; frag=frag->next, n++);
-- return n;
--}
--
--extern int hci_core_init(void);
--extern int hci_core_cleanup(void);
--extern int hci_sock_init(void);
--extern int hci_sock_cleanup(void);
--
--#endif /* __IF_BLUEZ_H */
-diff -urN linux-2.4.18/include/net/bluetooth/hci.h linux-2.4.18-mh9/include/net/bluetooth/hci.h
---- linux-2.4.18/include/net/bluetooth/hci.h Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/include/net/bluetooth/hci.h Mon Aug 25 18:38:12 2003
-@@ -23,59 +23,80 @@
- */
-
- /*
-- * $Id: hci.h,v 1.15 2001/08/05 06:02:15 maxk Exp $
-+ * $Id: hci.h,v 1.5 2002/06/27 17:29:30 maxk Exp $
- */
-
- #ifndef __HCI_H
- #define __HCI_H
-
--#include <asm/byteorder.h>
--
--#define HCI_MAX_DEV 8
--#define HCI_MAX_FRAME_SIZE 2048
-+#define HCI_MAX_ACL_SIZE 1024
-+#define HCI_MAX_SCO_SIZE 255
-+#define HCI_MAX_EVENT_SIZE 260
-+#define HCI_MAX_FRAME_SIZE (HCI_MAX_ACL_SIZE + 4)
-
- /* HCI dev events */
- #define HCI_DEV_REG 1
- #define HCI_DEV_UNREG 2
- #define HCI_DEV_UP 3
- #define HCI_DEV_DOWN 4
-+#define HCI_DEV_SUSPEND 5
-+#define HCI_DEV_RESUME 6
-+
-+/* HCI notify events */
-+#define HCI_NOTIFY_CONN_ADD 1
-+#define HCI_NOTIFY_CONN_DEL 2
-+#define HCI_NOTIFY_VOICE_SETTING 3
-
- /* HCI device types */
--#define HCI_UART 0
-+#define HCI_VHCI 0
- #define HCI_USB 1
--#define HCI_VHCI 2
--
--/* HCI device modes */
--#define HCI_NORMAL 0x0001
--#define HCI_RAW 0x0002
--#define HCI_MODE_MASK (HCI_NORMAL | HCI_RAW)
--#define HCI_SOCK 0x1000
--
--/* HCI device states */
--#define HCI_INIT 0x0010
--#define HCI_UP 0x0020
--#define HCI_RUNNING 0x0040
-+#define HCI_PCCARD 2
-+#define HCI_UART 3
-+#define HCI_RS232 4
-+#define HCI_PCI 5
-
- /* HCI device flags */
--#define HCI_PSCAN 0x0100
--#define HCI_ISCAN 0x0200
--#define HCI_AUTH 0x0400
-+enum {
-+ HCI_UP,
-+ HCI_INIT,
-+ HCI_RUNNING,
-+
-+ HCI_PSCAN,
-+ HCI_ISCAN,
-+ HCI_AUTH,
-+ HCI_ENCRYPT,
-+ HCI_INQUIRY,
-+
-+ HCI_RAW
-+};
-
--/* HCI Ioctl defines */
-+/* HCI ioctl defines */
- #define HCIDEVUP _IOW('H', 201, int)
- #define HCIDEVDOWN _IOW('H', 202, int)
- #define HCIDEVRESET _IOW('H', 203, int)
--#define HCIRESETSTAT _IOW('H', 204, int)
--#define HCIGETINFO _IOR('H', 205, int)
--#define HCIGETDEVLIST _IOR('H', 206, int)
--#define HCISETRAW _IOW('H', 207, int)
--#define HCISETSCAN _IOW('H', 208, int)
--#define HCISETAUTH _IOW('H', 209, int)
--#define HCIINQUIRY _IOR('H', 210, int)
--#define HCISETPTYPE _IOW('H', 211, int)
-+#define HCIDEVRESTAT _IOW('H', 204, int)
-+
-+#define HCIGETDEVLIST _IOR('H', 210, int)
-+#define HCIGETDEVINFO _IOR('H', 211, int)
- #define HCIGETCONNLIST _IOR('H', 212, int)
-+#define HCIGETCONNINFO _IOR('H', 213, int)
-
--#ifndef __NO_HCI_DEFS
-+#define HCISETRAW _IOW('H', 220, int)
-+#define HCISETSCAN _IOW('H', 221, int)
-+#define HCISETAUTH _IOW('H', 222, int)
-+#define HCISETENCRYPT _IOW('H', 223, int)
-+#define HCISETPTYPE _IOW('H', 224, int)
-+#define HCISETLINKPOL _IOW('H', 225, int)
-+#define HCISETLINKMODE _IOW('H', 226, int)
-+#define HCISETACLMTU _IOW('H', 227, int)
-+#define HCISETSCOMTU _IOW('H', 228, int)
-+
-+#define HCIINQUIRY _IOR('H', 240, int)
-+
-+/* HCI timeouts */
-+#define HCI_CONN_TIMEOUT (HZ * 40)
-+#define HCI_DISCONN_TIMEOUT (HZ * 2)
-+#define HCI_CONN_IDLE_TIMEOUT (HZ * 60)
-
- /* HCI Packet types */
- #define HCI_COMMAND_PKT 0x01
-@@ -92,11 +113,18 @@
- #define HCI_DH3 0x0800
- #define HCI_DH5 0x8000
-
-+#define HCI_HV1 0x0020
-+#define HCI_HV2 0x0040
-+#define HCI_HV3 0x0080
-+
-+#define SCO_PTYPE_MASK (HCI_HV1 | HCI_HV2 | HCI_HV3)
-+#define ACL_PTYPE_MASK (~SCO_PTYPE_MASK)
-+
- /* ACL flags */
--#define ACL_CONT 0x0001
--#define ACL_START 0x0002
--#define ACL_ACTIVE_BCAST 0x0010
--#define ACL_PICO_BCAST 0x0020
-+#define ACL_CONT 0x01
-+#define ACL_START 0x02
-+#define ACL_ACTIVE_BCAST 0x04
-+#define ACL_PICO_BCAST 0x08
-
- /* Baseband links */
- #define SCO_LINK 0x00
-@@ -125,6 +153,20 @@
- #define LMP_PSCHEME 0x02
- #define LMP_PCONTROL 0x04
-
-+/* Link policies */
-+#define HCI_LP_RSWITCH 0x0001
-+#define HCI_LP_HOLD 0x0002
-+#define HCI_LP_SNIFF 0x0004
-+#define HCI_LP_PARK 0x0008
-+
-+/* Link mode */
-+#define HCI_LM_ACCEPT 0x8000
-+#define HCI_LM_MASTER 0x0001
-+#define HCI_LM_AUTH 0x0002
-+#define HCI_LM_ENCRYPT 0x0004
-+#define HCI_LM_TRUSTED 0x0008
-+#define HCI_LM_RELIABLE 0x0010
-+
- /* ----- HCI Commands ----- */
- /* OGF & OCF values */
-
-@@ -137,9 +179,10 @@
- __u8 hci_ver;
- __u16 hci_rev;
- __u8 lmp_ver;
-- __u16 man_name;
-- __u16 lmp_sub;
-+ __u16 manufacturer;
-+ __u16 lmp_subver;
- } __attribute__ ((packed)) read_local_version_rp;
-+#define READ_LOCAL_VERSION_RP_SIZE 9
-
- #define OCF_READ_LOCAL_FEATURES 0x0003
- typedef struct {
-@@ -165,18 +208,24 @@
- /* Host Controller and Baseband */
- #define OGF_HOST_CTL 0x03
- #define OCF_RESET 0x0003
-+#define OCF_READ_AUTH_ENABLE 0x001F
- #define OCF_WRITE_AUTH_ENABLE 0x0020
-- #define AUTH_DISABLED 0x00
-- #define AUTH_ENABLED 0x01
-+ #define AUTH_DISABLED 0x00
-+ #define AUTH_ENABLED 0x01
-+
-+#define OCF_READ_ENCRYPT_MODE 0x0021
-+#define OCF_WRITE_ENCRYPT_MODE 0x0022
-+ #define ENCRYPT_DISABLED 0x00
-+ #define ENCRYPT_P2P 0x01
-+ #define ENCRYPT_BOTH 0x02
-
- #define OCF_WRITE_CA_TIMEOUT 0x0016
- #define OCF_WRITE_PG_TIMEOUT 0x0018
-
- #define OCF_WRITE_SCAN_ENABLE 0x001A
-- #define SCANS_DISABLED 0x00
-- #define IS_ENA_PS_DIS 0x01
-- #define IS_DIS_PS_ENA 0x02
-- #define IS_ENA_PS_ENA 0x03
-+ #define SCAN_DISABLED 0x00
-+ #define SCAN_INQUIRY 0x01
-+ #define SCAN_PAGE 0x02
-
- #define OCF_SET_EVENT_FLT 0x0005
- typedef struct {
-@@ -226,9 +275,31 @@
- } __attribute__ ((packed)) write_class_of_dev_cp;
- #define WRITE_CLASS_OF_DEV_CP_SIZE 3
-
-+#define OCF_READ_VOICE_SETTING 0x0025
-+typedef struct {
-+ __u8 status;
-+ __u16 voice_setting;
-+} __attribute__ ((packed)) read_voice_setting_rp;
-+#define READ_VOICE_SETTING_RP_SIZE 3
-+
-+#define OCF_WRITE_VOICE_SETTING 0x0026
-+typedef struct {
-+ __u16 voice_setting;
-+} __attribute__ ((packed)) write_voice_setting_cp;
-+#define WRITE_VOICE_SETTING_CP_SIZE 2
-+
-+#define OCF_HOST_BUFFER_SIZE 0x0033
-+typedef struct {
-+ __u16 acl_mtu;
-+ __u8 sco_mtu;
-+ __u16 acl_max_pkt;
-+ __u16 sco_max_pkt;
-+} __attribute__ ((packed)) host_buffer_size_cp;
-+#define HOST_BUFFER_SIZE_CP_SIZE 7
-+
- /* Link Control */
- #define OGF_LINK_CTL 0x01
--#define OCF_CREATE_CONN 0x0005
-+#define OCF_CREATE_CONN 0x0005
- typedef struct {
- bdaddr_t bdaddr;
- __u16 pkt_type;
-@@ -246,6 +317,13 @@
- } __attribute__ ((packed)) accept_conn_req_cp;
- #define ACCEPT_CONN_REQ_CP_SIZE 7
-
-+#define OCF_REJECT_CONN_REQ 0x000a
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 reason;
-+} __attribute__ ((packed)) reject_conn_req_cp;
-+#define REJECT_CONN_REQ_CP_SIZE 7
-+
- #define OCF_DISCONNECT 0x0006
- typedef struct {
- __u16 handle;
-@@ -253,17 +331,142 @@
- } __attribute__ ((packed)) disconnect_cp;
- #define DISCONNECT_CP_SIZE 3
-
-+#define OCF_ADD_SCO 0x0007
-+typedef struct {
-+ __u16 handle;
-+ __u16 pkt_type;
-+} __attribute__ ((packed)) add_sco_cp;
-+#define ADD_SCO_CP_SIZE 4
-+
- #define OCF_INQUIRY 0x0001
- typedef struct {
- __u8 lap[3];
-- __u8 lenght;
-+ __u8 length;
- __u8 num_rsp;
- } __attribute__ ((packed)) inquiry_cp;
- #define INQUIRY_CP_SIZE 5
-
--#define OGF_LINK_POLICY 0x02 /* Link Policy */
-+typedef struct {
-+ __u8 status;
-+ bdaddr_t bdaddr;
-+} __attribute__ ((packed)) status_bdaddr_rp;
-+#define STATUS_BDADDR_RP_SIZE 7
-+
-+#define OCF_INQUIRY_CANCEL 0x0002
-+
-+#define OCF_LINK_KEY_REPLY 0x000B
-+#define OCF_LINK_KEY_NEG_REPLY 0x000C
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 link_key[16];
-+} __attribute__ ((packed)) link_key_reply_cp;
-+#define LINK_KEY_REPLY_CP_SIZE 22
-+
-+#define OCF_PIN_CODE_REPLY 0x000D
-+#define OCF_PIN_CODE_NEG_REPLY 0x000E
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 pin_len;
-+ __u8 pin_code[16];
-+} __attribute__ ((packed)) pin_code_reply_cp;
-+#define PIN_CODE_REPLY_CP_SIZE 23
-+
-+#define OCF_CHANGE_CONN_PTYPE 0x000F
-+typedef struct {
-+ __u16 handle;
-+ __u16 pkt_type;
-+} __attribute__ ((packed)) change_conn_ptype_cp;
-+#define CHANGE_CONN_PTYPE_CP_SIZE 4
-+
-+#define OCF_AUTH_REQUESTED 0x0011
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) auth_requested_cp;
-+#define AUTH_REQUESTED_CP_SIZE 2
-+
-+#define OCF_SET_CONN_ENCRYPT 0x0013
-+typedef struct {
-+ __u16 handle;
-+ __u8 encrypt;
-+} __attribute__ ((packed)) set_conn_encrypt_cp;
-+#define SET_CONN_ENCRYPT_CP_SIZE 3
-+
-+#define OCF_REMOTE_NAME_REQ 0x0019
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 pscan_rep_mode;
-+ __u8 pscan_mode;
-+ __u16 clock_offset;
-+} __attribute__ ((packed)) remote_name_req_cp;
-+#define REMOTE_NAME_REQ_CP_SIZE 10
-+
-+#define OCF_READ_REMOTE_FEATURES 0x001B
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) read_remote_features_cp;
-+#define READ_REMOTE_FEATURES_CP_SIZE 2
-+
-+#define OCF_READ_REMOTE_VERSION 0x001D
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) read_remote_version_cp;
-+#define READ_REMOTE_VERSION_CP_SIZE 2
-+
-+/* Link Policy */
-+#define OGF_LINK_POLICY 0x02
-+#define OCF_ROLE_DISCOVERY 0x0009
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) role_discovery_cp;
-+#define ROLE_DISCOVERY_CP_SIZE 2
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 role;
-+} __attribute__ ((packed)) role_discovery_rp;
-+#define ROLE_DISCOVERY_RP_SIZE 4
-
--/* --------- HCI Events --------- */
-+#define OCF_READ_LINK_POLICY 0x000C
-+typedef struct {
-+ __u16 handle;
-+} __attribute__ ((packed)) read_link_policy_cp;
-+#define READ_LINK_POLICY_CP_SIZE 2
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u16 policy;
-+} __attribute__ ((packed)) read_link_policy_rp;
-+#define READ_LINK_POLICY_RP_SIZE 5
-+
-+#define OCF_SWITCH_ROLE 0x000B
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 role;
-+} __attribute__ ((packed)) switch_role_cp;
-+#define SWITCH_ROLE_CP_SIZE 7
-+
-+#define OCF_WRITE_LINK_POLICY 0x000D
-+typedef struct {
-+ __u16 handle;
-+ __u16 policy;
-+} __attribute__ ((packed)) write_link_policy_cp;
-+#define WRITE_LINK_POLICY_CP_SIZE 4
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+} __attribute__ ((packed)) write_link_policy_rp;
-+#define WRITE_LINK_POLICY_RP_SIZE 3
-+
-+/* Status params */
-+#define OGF_STATUS_PARAM 0x05
-+
-+/* Testing commands */
-+#define OGF_TESTING_CMD 0x3e
-+
-+/* Vendor specific commands */
-+#define OGF_VENDOR_CMD 0x3f
-+
-+/* ---- HCI Events ---- */
- #define EVT_INQUIRY_COMPLETE 0x01
-
- #define EVT_INQUIRY_RESULT 0x02
-@@ -272,7 +475,7 @@
- __u8 pscan_rep_mode;
- __u8 pscan_period_mode;
- __u8 pscan_mode;
-- __u8 class[3];
-+ __u8 dev_class[3];
- __u16 clock_offset;
- } __attribute__ ((packed)) inquiry_info;
- #define INQUIRY_INFO_SIZE 14
-@@ -303,6 +506,44 @@
- } __attribute__ ((packed)) evt_disconn_complete;
- #define EVT_DISCONN_COMPLETE_SIZE 4
-
-+#define EVT_AUTH_COMPLETE 0x06
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+} __attribute__ ((packed)) evt_auth_complete;
-+#define EVT_AUTH_COMPLETE_SIZE 3
-+
-+#define EVT_REMOTE_NAME_REQ_COMPLETE 0x07
-+typedef struct {
-+ __u8 status;
-+ bdaddr_t bdaddr;
-+ __u8 name[248];
-+} __attribute__ ((packed)) evt_remote_name_req_complete;
-+#define EVT_REMOTE_NAME_REQ_COMPLETE_SIZE 255
-+
-+#define EVT_ENCRYPT_CHANGE 0x08
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 encrypt;
-+} __attribute__ ((packed)) evt_encrypt_change;
-+#define EVT_ENCRYPT_CHANGE_SIZE 5
-+
-+#define EVT_QOS_SETUP_COMPLETE 0x0D
-+typedef struct {
-+ __u8 service_type;
-+ __u32 token_rate;
-+ __u32 peak_bandwidth;
-+ __u32 latency;
-+ __u32 delay_variation;
-+} __attribute__ ((packed)) hci_qos;
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ hci_qos qos;
-+} __attribute__ ((packed)) evt_qos_setup_complete;
-+#define EVT_QOS_SETUP_COMPLETE_SIZE 20
-+
- #define EVT_CMD_COMPLETE 0x0e
- typedef struct {
- __u8 ncmd;
-@@ -321,16 +562,78 @@
- #define EVT_NUM_COMP_PKTS 0x13
- typedef struct {
- __u8 num_hndl;
-- /* variable lenght part */
-+ /* variable length part */
- } __attribute__ ((packed)) evt_num_comp_pkts;
- #define EVT_NUM_COMP_PKTS_SIZE 1
-
--#define EVT_HCI_DEV_EVENT 0xfd
-+#define EVT_ROLE_CHANGE 0x12
-+typedef struct {
-+ __u8 status;
-+ bdaddr_t bdaddr;
-+ __u8 role;
-+} __attribute__ ((packed)) evt_role_change;
-+#define EVT_ROLE_CHANGE_SIZE 8
-+
-+#define EVT_PIN_CODE_REQ 0x16
-+typedef struct {
-+ bdaddr_t bdaddr;
-+} __attribute__ ((packed)) evt_pin_code_req;
-+#define EVT_PIN_CODE_REQ_SIZE 6
-+
-+#define EVT_LINK_KEY_REQ 0x17
-+typedef struct {
-+ bdaddr_t bdaddr;
-+} __attribute__ ((packed)) evt_link_key_req;
-+#define EVT_LINK_KEY_REQ_SIZE 6
-+
-+#define EVT_LINK_KEY_NOTIFY 0x18
-+typedef struct {
-+ bdaddr_t bdaddr;
-+ __u8 link_key[16];
-+ __u8 key_type;
-+} __attribute__ ((packed)) evt_link_key_notify;
-+#define EVT_LINK_KEY_NOTIFY_SIZE 23
-+
-+#define EVT_READ_REMOTE_FEATURES_COMPLETE 0x0B
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 features[8];
-+} __attribute__ ((packed)) evt_read_remote_features_complete;
-+#define EVT_READ_REMOTE_FEATURES_COMPLETE_SIZE 11
-+
-+#define EVT_READ_REMOTE_VERSION_COMPLETE 0x0C
-+typedef struct {
-+ __u8 status;
-+ __u16 handle;
-+ __u8 lmp_ver;
-+ __u16 manufacturer;
-+ __u16 lmp_subver;
-+} __attribute__ ((packed)) evt_read_remote_version_complete;
-+#define EVT_READ_REMOTE_VERSION_COMPLETE_SIZE 8
-+
-+/* Internal events generated by BlueZ stack */
-+#define EVT_STACK_INTERNAL 0xfd
-+typedef struct {
-+ __u16 type;
-+ __u8 data[0];
-+} __attribute__ ((packed)) evt_stack_internal;
-+#define EVT_STACK_INTERNAL_SIZE 2
-+
-+#define EVT_SI_DEVICE 0x01
-+typedef struct {
-+ __u16 event;
-+ __u16 dev_id;
-+} __attribute__ ((packed)) evt_si_device;
-+#define EVT_SI_DEVICE_SIZE 4
-+
-+#define EVT_SI_SECURITY 0x02
- typedef struct {
- __u16 event;
-- __u16 param;
--} __attribute__ ((packed)) evt_hci_dev_event;
--#define EVT_HCI_DEV_EVENT_SIZE 4
-+ __u16 proto;
-+ __u16 subproto;
-+ __u8 incomming;
-+} __attribute__ ((packed)) evt_si_security;
-
- /* -------- HCI Packet structures -------- */
- #define HCI_TYPE_LEN 1
-@@ -369,14 +672,14 @@
- #define acl_handle(h) (h & 0x0fff)
- #define acl_flags(h) (h >> 12)
-
--#endif /* _NO_HCI_DEFS */
--
- /* HCI Socket options */
--#define HCI_DATA_DIR 0x0001
--#define HCI_FILTER 0x0002
-+#define HCI_DATA_DIR 1
-+#define HCI_FILTER 2
-+#define HCI_TIME_STAMP 3
-
- /* HCI CMSG flags */
- #define HCI_CMSG_DIR 0x0001
-+#define HCI_CMSG_TSTAMP 0x0002
-
- struct sockaddr_hci {
- sa_family_t hci_family;
-@@ -387,27 +690,29 @@
- struct hci_filter {
- __u32 type_mask;
- __u32 event_mask[2];
-+ __u16 opcode;
- };
-
--struct hci_dev_req {
-- __u16 dev_id;
-- __u32 dev_opt;
--};
--
--struct hci_dev_list_req {
-- __u16 dev_num;
-- struct hci_dev_req dev_req[0]; /* hci_dev_req structures */
--};
--
--struct hci_inquiry_req {
-- __u16 dev_id;
-- __u16 flags;
-- __u8 lap[3];
-- __u8 length;
-- __u8 num_rsp;
--};
--#define IREQ_CACHE_FLUSH 0x0001
-+#define HCI_FLT_TYPE_BITS 31
-+#define HCI_FLT_EVENT_BITS 63
-+#define HCI_FLT_OGF_BITS 63
-+#define HCI_FLT_OCF_BITS 127
-+
-+#if BITS_PER_LONG == 64
-+static inline void hci_set_bit(int nr, void *addr)
-+{
-+ *((__u32 *) addr + (nr >> 5)) |= ((__u32) 1 << (nr & 31));
-+}
-+static inline int hci_test_bit(int nr, void *addr)
-+{
-+ return *((__u32 *) addr + (nr >> 5)) & ((__u32) 1 << (nr & 31));
-+}
-+#else
-+#define hci_set_bit set_bit
-+#define hci_test_bit test_bit
-+#endif
-
-+/* Ioctl requests structures */
- struct hci_dev_stats {
- __u32 err_rx;
- __u32 err_tx;
-@@ -433,11 +738,13 @@
- __u8 features[8];
-
- __u32 pkt_type;
-+ __u32 link_policy;
-+ __u32 link_mode;
-
- __u16 acl_mtu;
-- __u16 acl_max;
-+ __u16 acl_pkts;
- __u16 sco_mtu;
-- __u16 sco_max;
-+ __u16 sco_pkts;
-
- struct hci_dev_stats stat;
- };
-@@ -445,12 +752,48 @@
- struct hci_conn_info {
- __u16 handle;
- bdaddr_t bdaddr;
-+ __u8 type;
-+ __u8 out;
-+ __u16 state;
-+ __u32 link_mode;
-+};
-+
-+struct hci_dev_req {
-+ __u16 dev_id;
-+ __u32 dev_opt;
-+};
-+
-+struct hci_dev_list_req {
-+ __u16 dev_num;
-+ struct hci_dev_req dev_req[0]; /* hci_dev_req structures */
- };
-
- struct hci_conn_list_req {
- __u16 dev_id;
- __u16 conn_num;
- struct hci_conn_info conn_info[0];
-+};
-+
-+struct hci_conn_info_req {
-+ bdaddr_t bdaddr;
-+ __u8 type;
-+ struct hci_conn_info conn_info[0];
-+};
-+
-+struct hci_inquiry_req {
-+ __u16 dev_id;
-+ __u16 flags;
-+ __u8 lap[3];
-+ __u8 length;
-+ __u8 num_rsp;
-+};
-+#define IREQ_CACHE_FLUSH 0x0001
-+
-+struct hci_remotename_req {
-+ __u16 dev_id;
-+ __u16 flags;
-+ bdaddr_t bdaddr;
-+ __u8 name[248];
- };
-
- #endif /* __HCI_H */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_core.h linux-2.4.18-mh9/include/net/bluetooth/hci_core.h
---- linux-2.4.18/include/net/bluetooth/hci_core.h Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/include/net/bluetooth/hci_core.h Mon Aug 25 18:38:12 2003
-@@ -23,7 +23,7 @@
- */
-
- /*
-- * $Id: hci_core.h,v 1.11 2001/08/05 06:02:15 maxk Exp $
-+ * $Id: hci_core.h,v 1.5 2002/06/27 04:56:30 maxk Exp $
- */
-
- #ifndef __HCI_CORE_H
-@@ -32,14 +32,12 @@
- #include <net/bluetooth/hci.h>
-
- /* HCI upper protocols */
--#define HCI_MAX_PROTO 1
- #define HCI_PROTO_L2CAP 0
-+#define HCI_PROTO_SCO 1
-
- #define HCI_INIT_TIMEOUT (HZ * 10)
-
--/* ----- Inquiry cache ----- */
--#define INQUIRY_CACHE_AGE_MAX (HZ*5) // 5 seconds
--#define INQUIRY_ENTRY_AGE_MAX (HZ*60) // 60 seconds
-+/* HCI Core structures */
-
- struct inquiry_entry {
- struct inquiry_entry *next;
-@@ -53,111 +51,182 @@
- struct inquiry_entry *list;
- };
-
--static inline void inquiry_cache_init(struct inquiry_cache *cache)
--{
-- spin_lock_init(&cache->lock);
-- cache->list = NULL;
--}
-+struct conn_hash {
-+ struct list_head list;
-+ spinlock_t lock;
-+ unsigned int num;
-+};
-
--static inline void inquiry_cache_lock(struct inquiry_cache *cache)
--{
-- spin_lock(&cache->lock);
--}
-+struct hci_dev {
-+ struct list_head list;
-+ spinlock_t lock;
-+ atomic_t refcnt;
-
--static inline void inquiry_cache_unlock(struct inquiry_cache *cache)
--{
-- spin_unlock(&cache->lock);
--}
-+ char name[8];
-+ unsigned long flags;
-+ __u16 id;
-+ __u8 type;
-+ bdaddr_t bdaddr;
-+ __u8 features[8];
-+ __u16 voice_setting;
-
--static inline void inquiry_cache_lock_bh(struct inquiry_cache *cache)
--{
-- spin_lock_bh(&cache->lock);
--}
-+ __u16 pkt_type;
-+ __u16 link_policy;
-+ __u16 link_mode;
-
--static inline void inquiry_cache_unlock_bh(struct inquiry_cache *cache)
--{
-- spin_unlock_bh(&cache->lock);
--}
-+ atomic_t cmd_cnt;
-+ unsigned int acl_cnt;
-+ unsigned int sco_cnt;
-
--static inline long inquiry_cache_age(struct inquiry_cache *cache)
--{
-- return jiffies - cache->timestamp;
--}
-+ unsigned int acl_mtu;
-+ unsigned int sco_mtu;
-+ unsigned int acl_pkts;
-+ unsigned int sco_pkts;
-
--static inline long inquiry_entry_age(struct inquiry_entry *e)
--{
-- return jiffies - e->timestamp;
--}
--extern void inquiry_cache_flush(struct inquiry_cache *cache);
-+ unsigned long cmd_last_tx;
-+ unsigned long acl_last_tx;
-+ unsigned long sco_last_tx;
-+
-+ struct tasklet_struct cmd_task;
-+ struct tasklet_struct rx_task;
-+ struct tasklet_struct tx_task;
-
--struct hci_dev;
-+ struct sk_buff_head rx_q;
-+ struct sk_buff_head raw_q;
-+ struct sk_buff_head cmd_q;
-+
-+ struct sk_buff *sent_cmd;
-+
-+ struct semaphore req_lock;
-+ wait_queue_head_t req_wait_q;
-+ __u32 req_status;
-+ __u32 req_result;
-+
-+ struct inquiry_cache inq_cache;
-+ struct conn_hash conn_hash;
-+
-+ struct hci_dev_stats stat;
-+
-+ void *driver_data;
-+ void *core_data;
-+
-+ atomic_t promisc;
-+
-+ int (*open)(struct hci_dev *hdev);
-+ int (*close)(struct hci_dev *hdev);
-+ int (*flush)(struct hci_dev *hdev);
-+ int (*send)(struct sk_buff *skb);
-+ void (*destruct)(struct hci_dev *hdev);
-+ void (*notify)(struct hci_dev *hdev, unsigned int evt, unsigned long arg);
-+ int (*ioctl)(struct hci_dev *hdev, unsigned int cmd, unsigned long arg);
-+};
-
--/* ----- HCI Connections ----- */
- struct hci_conn {
- struct list_head list;
-+
-+ atomic_t refcnt;
-+ spinlock_t lock;
-+
- bdaddr_t dst;
- __u16 handle;
-+ __u16 state;
- __u8 type;
-- unsigned int sent;
-+ __u8 out;
-+ __u32 link_mode;
-+ unsigned long pend;
-+
-+ unsigned int sent;
-+
-+ struct sk_buff_head data_q;
-
-+ struct timer_list timer;
-+
- struct hci_dev *hdev;
- void *l2cap_data;
-+ void *sco_data;
- void *priv;
-
-- struct sk_buff_head data_q;
-+ struct hci_conn *link;
- };
-
--struct conn_hash {
-- struct list_head list;
-- spinlock_t lock;
-- unsigned int num;
--};
-+extern struct hci_proto *hci_proto[];
-+extern struct list_head hdev_list;
-+extern rwlock_t hdev_list_lock;
-+
-+/* ----- Inquiry cache ----- */
-+#define INQUIRY_CACHE_AGE_MAX (HZ*30) // 30 seconds
-+#define INQUIRY_ENTRY_AGE_MAX (HZ*60) // 60 seconds
-+
-+#define inquiry_cache_lock(c) spin_lock(&c->lock)
-+#define inquiry_cache_unlock(c) spin_unlock(&c->lock)
-+#define inquiry_cache_lock_bh(c) spin_lock_bh(&c->lock)
-+#define inquiry_cache_unlock_bh(c) spin_unlock_bh(&c->lock)
-
--static inline void conn_hash_init(struct conn_hash *h)
-+static inline void inquiry_cache_init(struct hci_dev *hdev)
- {
-- INIT_LIST_HEAD(&h->list);
-- spin_lock_init(&h->lock);
-- h->num = 0;
-+ struct inquiry_cache *c = &hdev->inq_cache;
-+ spin_lock_init(&c->lock);
-+ c->list = NULL;
- }
-
--static inline void conn_hash_lock(struct conn_hash *h)
-+static inline long inquiry_cache_age(struct hci_dev *hdev)
- {
-- spin_lock(&h->lock);
-+ struct inquiry_cache *c = &hdev->inq_cache;
-+ return jiffies - c->timestamp;
- }
-
--static inline void conn_hash_unlock(struct conn_hash *h)
-+static inline long inquiry_entry_age(struct inquiry_entry *e)
- {
-- spin_unlock(&h->lock);
-+ return jiffies - e->timestamp;
- }
-
--static inline void __conn_hash_add(struct conn_hash *h, __u16 handle, struct hci_conn *c)
-+struct inquiry_entry *inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr);
-+void inquiry_cache_update(struct hci_dev *hdev, inquiry_info *info);
-+void inquiry_cache_flush(struct hci_dev *hdev);
-+int inquiry_cache_dump(struct hci_dev *hdev, int num, __u8 *buf);
-+
-+/* ----- HCI Connections ----- */
-+enum {
-+ HCI_CONN_AUTH_PEND,
-+ HCI_CONN_ENCRYPT_PEND
-+};
-+
-+#define hci_conn_lock(c) spin_lock(&c->lock)
-+#define hci_conn_unlock(c) spin_unlock(&c->lock)
-+#define hci_conn_lock_bh(c) spin_lock_bh(&c->lock)
-+#define hci_conn_unlock_bh(c) spin_unlock_bh(&c->lock)
-+
-+#define conn_hash_lock(d) spin_lock(&d->conn_hash->lock)
-+#define conn_hash_unlock(d) spin_unlock(&d->conn_hash->lock)
-+#define conn_hash_lock_bh(d) spin_lock_bh(&d->conn_hash->lock)
-+#define conn_hash_unlock_bh(d) spin_unlock_bh(&d->conn_hash->lock)
-+
-+static inline void conn_hash_init(struct hci_dev *hdev)
- {
-- list_add(&c->list, &h->list);
-- h->num++;
-+ struct conn_hash *h = &hdev->conn_hash;
-+ INIT_LIST_HEAD(&h->list);
-+ spin_lock_init(&h->lock);
-+ h->num = 0;
- }
-
--static inline void conn_hash_add(struct conn_hash *h, __u16 handle, struct hci_conn *c)
-+static inline void conn_hash_add(struct hci_dev *hdev, struct hci_conn *c)
- {
-- conn_hash_lock(h);
-- __conn_hash_add(h, handle, c);
-- conn_hash_unlock(h);
-+ struct conn_hash *h = &hdev->conn_hash;
-+ list_add(&c->list, &h->list);
-+ h->num++;
- }
-
--static inline void __conn_hash_del(struct conn_hash *h, struct hci_conn *c)
-+static inline void conn_hash_del(struct hci_dev *hdev, struct hci_conn *c)
- {
-+ struct conn_hash *h = &hdev->conn_hash;
- list_del(&c->list);
- h->num--;
- }
-
--static inline void conn_hash_del(struct conn_hash *h, struct hci_conn *c)
--{
-- conn_hash_lock(h);
-- __conn_hash_del(h, c);
-- conn_hash_unlock(h);
--}
--
--static inline struct hci_conn *__conn_hash_lookup(struct conn_hash *h, __u16 handle)
-+static inline struct hci_conn *conn_hash_lookup_handle(struct hci_dev *hdev,
-+ __u16 handle)
- {
-+ register struct conn_hash *h = &hdev->conn_hash;
- register struct list_head *p;
- register struct hci_conn *c;
-
-@@ -169,101 +238,95 @@
- return NULL;
- }
-
--static inline struct hci_conn *conn_hash_lookup(struct conn_hash *h, __u16 handle)
-+static inline struct hci_conn *conn_hash_lookup_ba(struct hci_dev *hdev,
-+ __u8 type, bdaddr_t *ba)
- {
-- struct hci_conn *conn;
-+ register struct conn_hash *h = &hdev->conn_hash;
-+ register struct list_head *p;
-+ register struct hci_conn *c;
-
-- conn_hash_lock(h);
-- conn = __conn_hash_lookup(h, handle);
-- conn_hash_unlock(h);
-- return conn;
-+ list_for_each(p, &h->list) {
-+ c = list_entry(p, struct hci_conn, list);
-+ if (c->type == type && !bacmp(&c->dst, ba))
-+ return c;
-+ }
-+ return NULL;
- }
-
--/* ----- HCI Devices ----- */
--struct hci_dev {
-- atomic_t refcnt;
--
-- char name[8];
-- __u32 flags;
-- __u16 id;
-- __u8 type;
-- bdaddr_t bdaddr;
-- __u8 features[8];
--
-- __u16 pkt_type;
--
-- atomic_t cmd_cnt;
-- unsigned int acl_cnt;
-- unsigned int sco_cnt;
--
-- unsigned int acl_mtu;
-- unsigned int sco_mtu;
-- unsigned int acl_max;
-- unsigned int sco_max;
--
-- void *driver_data;
-- void *l2cap_data;
-- void *priv;
--
-- struct tasklet_struct cmd_task;
-- struct tasklet_struct rx_task;
-- struct tasklet_struct tx_task;
--
-- struct sk_buff_head rx_q;
-- struct sk_buff_head raw_q;
-- struct sk_buff_head cmd_q;
--
-- struct sk_buff *sent_cmd;
--
-- struct semaphore req_lock;
-- wait_queue_head_t req_wait_q;
-- __u32 req_status;
-- __u32 req_result;
--
-- struct inquiry_cache inq_cache;
-+void hci_acl_connect(struct hci_conn *conn);
-+void hci_acl_disconn(struct hci_conn *conn, __u8 reason);
-+void hci_add_sco(struct hci_conn *conn, __u16 handle);
-
-- struct conn_hash conn_hash;
-+struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst);
-+int hci_conn_del(struct hci_conn *conn);
-+void hci_conn_hash_flush(struct hci_dev *hdev);
-
-- struct hci_dev_stats stat;
-+struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *src);
-+int hci_conn_auth(struct hci_conn *conn);
-+int hci_conn_encrypt(struct hci_conn *conn);
-
-- int (*open)(struct hci_dev *hdev);
-- int (*close)(struct hci_dev *hdev);
-- int (*flush)(struct hci_dev *hdev);
-- int (*send)(struct sk_buff *skb);
--};
-+static inline void hci_conn_set_timer(struct hci_conn *conn, long timeout)
-+{
-+ mod_timer(&conn->timer, jiffies + timeout);
-+}
-
--static inline void hci_dev_hold(struct hci_dev *hdev)
-+static inline void hci_conn_del_timer(struct hci_conn *conn)
- {
-- atomic_inc(&hdev->refcnt);
-+ del_timer(&conn->timer);
- }
-
--static inline void hci_dev_put(struct hci_dev *hdev)
-+static inline void hci_conn_hold(struct hci_conn *conn)
- {
-- atomic_dec(&hdev->refcnt);
-+ atomic_inc(&conn->refcnt);
-+ hci_conn_del_timer(conn);
- }
-
--extern struct hci_dev *hci_dev_get(int index);
--extern int hci_register_dev(struct hci_dev *hdev);
--extern int hci_unregister_dev(struct hci_dev *hdev);
--extern int hci_dev_open(__u16 dev);
--extern int hci_dev_close(__u16 dev);
--extern int hci_dev_reset(__u16 dev);
--extern int hci_dev_reset_stat(__u16 dev);
--extern int hci_dev_info(unsigned long arg);
--extern int hci_dev_list(unsigned long arg);
--extern int hci_dev_setscan(unsigned long arg);
--extern int hci_dev_setauth(unsigned long arg);
--extern int hci_dev_setptype(unsigned long arg);
--extern int hci_conn_list(unsigned long arg);
--extern int hci_inquiry(unsigned long arg);
-+static inline void hci_conn_put(struct hci_conn *conn)
-+{
-+ if (atomic_dec_and_test(&conn->refcnt)) {
-+ if (conn->type == SCO_LINK)
-+ hci_conn_set_timer(conn, HZ / 100);
-+ else if (conn->out)
-+ hci_conn_set_timer(conn, HCI_DISCONN_TIMEOUT);
-+ }
-+}
-
--extern __u32 hci_dev_setmode(struct hci_dev *hdev, __u32 mode);
--extern __u32 hci_dev_getmode(struct hci_dev *hdev);
-+/* ----- HCI Devices ----- */
-+static inline void hci_dev_put(struct hci_dev *d)
-+{
-+ if (atomic_dec_and_test(&d->refcnt))
-+ d->destruct(d);
-+}
-+#define hci_dev_hold(d) atomic_inc(&d->refcnt)
-+
-+#define hci_dev_lock(d) spin_lock(&d->lock)
-+#define hci_dev_unlock(d) spin_unlock(&d->lock)
-+#define hci_dev_lock_bh(d) spin_lock_bh(&d->lock)
-+#define hci_dev_unlock_bh(d) spin_unlock_bh(&d->lock)
-+
-+struct hci_dev *hci_dev_get(int index);
-+struct hci_dev *hci_get_route(bdaddr_t *src, bdaddr_t *dst);
-+int hci_register_dev(struct hci_dev *hdev);
-+int hci_unregister_dev(struct hci_dev *hdev);
-+int hci_suspend_dev(struct hci_dev *hdev);
-+int hci_resume_dev(struct hci_dev *hdev);
-+int hci_dev_open(__u16 dev);
-+int hci_dev_close(__u16 dev);
-+int hci_dev_reset(__u16 dev);
-+int hci_dev_reset_stat(__u16 dev);
-+int hci_dev_cmd(unsigned int cmd, unsigned long arg);
-+int hci_get_dev_list(unsigned long arg);
-+int hci_get_dev_info(unsigned long arg);
-+int hci_get_conn_list(unsigned long arg);
-+int hci_get_conn_info(struct hci_dev *hdev, unsigned long arg);
-+int hci_inquiry(unsigned long arg);
-
--extern int hci_recv_frame(struct sk_buff *skb);
-+int hci_recv_frame(struct sk_buff *skb);
-+void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb);
-
- /* ----- LMP capabilities ----- */
- #define lmp_rswitch_capable(dev) (dev->features[0] & LMP_RSWITCH)
-+#define lmp_encrypt_capable(dev) (dev->features[0] & LMP_ENCRYPT)
-
- /* ----- HCI tasks ----- */
- static inline void hci_sched_cmd(struct hci_dev *hdev)
-@@ -284,43 +347,130 @@
- /* ----- HCI protocols ----- */
- struct hci_proto {
- char *name;
-- __u32 id;
-- __u32 flags;
-+ unsigned int id;
-+ unsigned long flags;
-
- void *priv;
-
-- int (*connect_ind) (struct hci_dev *hdev, bdaddr_t *bdaddr);
-- int (*connect_cfm) (struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 status, struct hci_conn *conn);
-+ int (*connect_ind) (struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type);
-+ int (*connect_cfm) (struct hci_conn *conn, __u8 status);
- int (*disconn_ind) (struct hci_conn *conn, __u8 reason);
-- int (*recv_acldata) (struct hci_conn *conn, struct sk_buff *skb , __u16 flags);
-+ int (*recv_acldata) (struct hci_conn *conn, struct sk_buff *skb, __u16 flags);
- int (*recv_scodata) (struct hci_conn *conn, struct sk_buff *skb);
-+ int (*auth_cfm) (struct hci_conn *conn, __u8 status);
-+ int (*encrypt_cfm) (struct hci_conn *conn, __u8 status);
- };
-
--extern int hci_register_proto(struct hci_proto *hproto);
--extern int hci_unregister_proto(struct hci_proto *hproto);
--extern int hci_register_notifier(struct notifier_block *nb);
--extern int hci_unregister_notifier(struct notifier_block *nb);
--extern int hci_connect(struct hci_dev * hdev, bdaddr_t * bdaddr);
--extern int hci_disconnect(struct hci_conn *conn, __u8 reason);
--extern int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void * param);
--extern int hci_send_raw(struct sk_buff *skb);
--extern int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags);
--extern int hci_send_sco(struct hci_conn *conn, struct sk_buff *skb);
-+static inline int hci_proto_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
-+{
-+ register struct hci_proto *hp;
-+ int mask = 0;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->connect_ind)
-+ mask |= hp->connect_ind(hdev, bdaddr, type);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->connect_ind)
-+ mask |= hp->connect_ind(hdev, bdaddr, type);
-+
-+ return mask;
-+}
-+
-+static inline void hci_proto_connect_cfm(struct hci_conn *conn, __u8 status)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->connect_cfm)
-+ hp->connect_cfm(conn, status);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->connect_cfm)
-+ hp->connect_cfm(conn, status);
-+}
-+
-+static inline void hci_proto_disconn_ind(struct hci_conn *conn, __u8 reason)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->disconn_ind)
-+ hp->disconn_ind(conn, reason);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->disconn_ind)
-+ hp->disconn_ind(conn, reason);
-+}
-+
-+static inline void hci_proto_auth_cfm(struct hci_conn *conn, __u8 status)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->auth_cfm)
-+ hp->auth_cfm(conn, status);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->auth_cfm)
-+ hp->auth_cfm(conn, status);
-+}
-+
-+static inline void hci_proto_encrypt_cfm(struct hci_conn *conn, __u8 status)
-+{
-+ register struct hci_proto *hp;
-+
-+ hp = hci_proto[HCI_PROTO_L2CAP];
-+ if (hp && hp->encrypt_cfm)
-+ hp->encrypt_cfm(conn, status);
-+
-+ hp = hci_proto[HCI_PROTO_SCO];
-+ if (hp && hp->encrypt_cfm)
-+ hp->encrypt_cfm(conn, status);
-+}
-+
-+int hci_register_proto(struct hci_proto *hproto);
-+int hci_unregister_proto(struct hci_proto *hproto);
-+int hci_register_notifier(struct notifier_block *nb);
-+int hci_unregister_notifier(struct notifier_block *nb);
-+
-+int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void *param);
-+int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags);
-+int hci_send_sco(struct hci_conn *conn, struct sk_buff *skb);
-+
-+void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf);
-+
-+void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data);
-
- /* ----- HCI Sockets ----- */
--extern void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb);
-+void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb);
-
- /* HCI info for socket */
--#define hci_pi(sk) ((struct hci_pinfo *) &sk->protinfo)
-+#define hci_pi(sk) ((struct hci_pinfo *) &sk->tp_pinfo)
- struct hci_pinfo {
- struct hci_dev *hdev;
- struct hci_filter filter;
- __u32 cmsg_mask;
- };
-
-+/* HCI security filter */
-+#define HCI_SFLT_MAX_OGF 5
-+
-+struct hci_sec_filter {
-+ __u32 type_mask;
-+ __u32 event_mask[2];
-+ __u32 ocf_mask[HCI_SFLT_MAX_OGF + 1][4];
-+};
-+
- /* ----- HCI requests ----- */
- #define HCI_REQ_DONE 0
- #define HCI_REQ_PEND 1
- #define HCI_REQ_CANCELED 2
-+
-+#define hci_req_lock(d) down(&d->req_lock)
-+#define hci_req_unlock(d) up(&d->req_lock)
-+
-+void hci_req_complete(struct hci_dev *hdev, int result);
-+void hci_req_cancel(struct hci_dev *hdev, int err);
-
- #endif /* __HCI_CORE_H */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_uart.h linux-2.4.18-mh9/include/net/bluetooth/hci_uart.h
---- linux-2.4.18/include/net/bluetooth/hci_uart.h Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/include/net/bluetooth/hci_uart.h Thu Jan 1 01:00:00 1970
-@@ -1,62 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: hci_uart.h,v 1.2 2001/06/02 01:40:08 maxk Exp $
-- */
--
--#ifndef N_HCI
--#define N_HCI 15
--#endif
--
--#ifdef __KERNEL__
--
--#define tty2n_hci(tty) ((struct n_hci *)((tty)->disc_data))
--#define n_hci2tty(n_hci) ((n_hci)->tty)
--
--struct n_hci {
-- struct tty_struct *tty;
-- struct hci_dev hdev;
--
-- struct sk_buff_head txq;
-- unsigned long tx_state;
--
-- spinlock_t rx_lock;
-- unsigned long rx_state;
-- unsigned long rx_count;
-- struct sk_buff *rx_skb;
--};
--
--/* Transmit states */
--#define TRANS_SENDING 1
--#define TRANS_WAKEUP 2
--
--/* Receiver States */
--#define WAIT_PACKET_TYPE 0
--#define WAIT_EVENT_HDR 1
--#define WAIT_ACL_HDR 2
--#define WAIT_SCO_HDR 3
--#define WAIT_DATA 4
--
--#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_usb.h linux-2.4.18-mh9/include/net/bluetooth/hci_usb.h
---- linux-2.4.18/include/net/bluetooth/hci_usb.h Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/include/net/bluetooth/hci_usb.h Thu Jan 1 01:00:00 1970
-@@ -1,68 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: hci_usb.h,v 1.3 2001/06/02 01:40:08 maxk Exp $
-- */
--
--#ifdef __KERNEL__
--
--/* Class, SubClass, and Protocol codes that describe a Bluetooth device */
--#define HCI_DEV_CLASS 0xe0 /* Wireless class */
--#define HCI_DEV_SUBCLASS 0x01 /* RF subclass */
--#define HCI_DEV_PROTOCOL 0x01 /* Bluetooth programming protocol */
--
--#define HCI_CTRL_REQ 0x20
--
--struct hci_usb {
-- struct usb_device *udev;
--
-- devrequest dev_req;
-- struct urb *ctrl_urb;
-- struct urb *intr_urb;
-- struct urb *read_urb;
-- struct urb *write_urb;
--
-- __u8 *read_buf;
-- __u8 *intr_buf;
-- struct sk_buff *intr_skb;
-- int intr_count;
--
-- __u8 bulk_out_ep_addr;
-- __u8 bulk_in_ep_addr;
-- __u8 intr_in_ep_addr;
-- __u8 intr_in_interval;
--
-- struct hci_dev hdev;
--
-- unsigned long tx_state;
-- struct sk_buff_head tx_ctrl_q;
-- struct sk_buff_head tx_write_q;
--};
--
--/* Transmit states */
--#define HCI_TX_CTRL 1
--#define HCI_TX_WRITE 2
--
--#endif /* __KERNEL__ */
-diff -urN linux-2.4.18/include/net/bluetooth/hci_vhci.h linux-2.4.18-mh9/include/net/bluetooth/hci_vhci.h
---- linux-2.4.18/include/net/bluetooth/hci_vhci.h Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/include/net/bluetooth/hci_vhci.h Thu Jan 1 01:00:00 1970
-@@ -1,50 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: hci_vhci.h,v 1.2 2001/08/01 01:02:20 maxk Exp $
-- */
--
--#ifndef __HCI_VHCI_H
--#define __HCI_VHCI_H
--
--#ifdef __KERNEL__
--
--struct hci_vhci_struct {
-- struct hci_dev hdev;
-- __u32 flags;
-- wait_queue_head_t read_wait;
-- struct sk_buff_head readq;
-- struct fasync_struct *fasync;
--};
--
--/* VHCI device flags */
--#define VHCI_FASYNC 0x0010
--
--#endif /* __KERNEL__ */
--
--#define VHCI_DEV "/dev/vhci"
--#define VHCI_MINOR 250
--
--#endif /* __HCI_VHCI_H */
-diff -urN linux-2.4.18/include/net/bluetooth/l2cap.h linux-2.4.18-mh9/include/net/bluetooth/l2cap.h
---- linux-2.4.18/include/net/bluetooth/l2cap.h Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/include/net/bluetooth/l2cap.h Mon Aug 25 18:38:12 2003
-@@ -23,22 +23,17 @@
- */
-
- /*
-- * $Id: l2cap.h,v 1.5 2001/06/14 21:28:26 maxk Exp $
-+ * $Id: l2cap.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $
- */
-
- #ifndef __L2CAP_H
- #define __L2CAP_H
-
--#include <asm/types.h>
--#include <asm/byteorder.h>
--
- /* L2CAP defaults */
- #define L2CAP_DEFAULT_MTU 672
- #define L2CAP_DEFAULT_FLUSH_TO 0xFFFF
-
- #define L2CAP_CONN_TIMEOUT (HZ * 40)
--#define L2CAP_DISCONN_TIMEOUT (HZ * 2)
--#define L2CAP_CONN_IDLE_TIMEOUT (HZ * 60)
-
- /* L2CAP socket address */
- struct sockaddr_l2 {
-@@ -47,17 +42,12 @@
- bdaddr_t l2_bdaddr;
- };
-
--/* set/get sockopt defines */
--#define L2CAP_OPTIONS 0x01
-+/* Socket options */
-+#define L2CAP_OPTIONS 0x01
- struct l2cap_options {
- __u16 omtu;
- __u16 imtu;
- __u16 flush_to;
-- __u32 token_rate;
-- __u32 bucket_size;
-- __u32 pick_band;
-- __u32 latency;
-- __u32 delay_var;
- };
-
- #define L2CAP_CONNINFO 0x02
-@@ -65,6 +55,27 @@
- __u16 hci_handle;
- };
-
-+#define L2CAP_LM 0x03
-+#define L2CAP_LM_MASTER 0x0001
-+#define L2CAP_LM_AUTH 0x0002
-+#define L2CAP_LM_ENCRYPT 0x0004
-+#define L2CAP_LM_TRUSTED 0x0008
-+#define L2CAP_LM_RELIABLE 0x0010
-+
-+#define L2CAP_QOS 0x04
-+struct l2cap_qos {
-+ __u16 service_type;
-+ __u32 token_rate;
-+ __u32 token_bucket_size;
-+ __u32 peak_bandwidth;
-+ __u32 latency;
-+ __u32 delay_variation;
-+};
-+
-+#define L2CAP_SERV_NO_TRAFFIC 0x00
-+#define L2CAP_SERV_BEST_EFFORT 0x01
-+#define L2CAP_SERV_GUARANTEED 0x02
-+
- /* L2CAP command codes */
- #define L2CAP_COMMAND_REJ 0x01
- #define L2CAP_CONN_REQ 0x02
-@@ -79,7 +90,6 @@
- #define L2CAP_INFO_RSP 0x0b
-
- /* L2CAP structures */
--
- typedef struct {
- __u16 len;
- __u16 cid;
-@@ -112,11 +122,17 @@
- } __attribute__ ((packed)) l2cap_conn_rsp;
- #define L2CAP_CONN_RSP_SIZE 8
-
--#define L2CAP_CONN_SUCCESS 0x0000
--#define L2CAP_CONN_PEND 0x0001
--#define L2CAP_CONN_BAD_PSM 0x0002
--#define L2CAP_CONN_SEC_BLOCK 0x0003
--#define L2CAP_CONN_NO_MEM 0x0004
-+/* connect result */
-+#define L2CAP_CR_SUCCESS 0x0000
-+#define L2CAP_CR_PEND 0x0001
-+#define L2CAP_CR_BAD_PSM 0x0002
-+#define L2CAP_CR_SEC_BLOCK 0x0003
-+#define L2CAP_CR_NO_MEM 0x0004
-+
-+/* connect status */
-+#define L2CAP_CS_NO_INFO 0x0000
-+#define L2CAP_CS_AUTHEN_PEND 0x0001
-+#define L2CAP_CS_AUTHOR_PEND 0x0002
-
- typedef struct {
- __u16 dcid;
-@@ -147,6 +163,8 @@
- #define L2CAP_CONF_FLUSH_TO 0x02
- #define L2CAP_CONF_QOS 0x03
-
-+#define L2CAP_CONF_MAX_SIZE 22
-+
- typedef struct {
- __u16 dcid;
- __u16 scid;
-@@ -158,5 +176,75 @@
- __u16 scid;
- } __attribute__ ((packed)) l2cap_disconn_rsp;
- #define L2CAP_DISCONN_RSP_SIZE 4
-+
-+typedef struct {
-+ __u16 type;
-+ __u8 data[0];
-+} __attribute__ ((packed)) l2cap_info_req;
-+#define L2CAP_INFO_REQ_SIZE 2
-+
-+typedef struct {
-+ __u16 type;
-+ __u16 result;
-+ __u8 data[0];
-+} __attribute__ ((packed)) l2cap_info_rsp;
-+#define L2CAP_INFO_RSP_SIZE 4
-+
-+/* ----- L2CAP connections ----- */
-+struct l2cap_chan_list {
-+ struct sock *head;
-+ rwlock_t lock;
-+ long num;
-+};
-+
-+struct l2cap_conn {
-+ struct hci_conn *hcon;
-+
-+ bdaddr_t *dst;
-+ bdaddr_t *src;
-+
-+ unsigned int mtu;
-+
-+ spinlock_t lock;
-+
-+ struct sk_buff *rx_skb;
-+ __u32 rx_len;
-+ __u8 rx_ident;
-+ __u8 tx_ident;
-+
-+ struct l2cap_chan_list chan_list;
-+};
-+
-+/* ----- L2CAP channel and socket info ----- */
-+#define l2cap_pi(sk) ((struct l2cap_pinfo *) &sk->tp_pinfo)
-+
-+struct l2cap_pinfo {
-+ __u16 psm;
-+ __u16 dcid;
-+ __u16 scid;
-+
-+ __u16 imtu;
-+ __u16 omtu;
-+ __u16 flush_to;
-+
-+ __u32 link_mode;
-+
-+ __u8 conf_state;
-+ __u8 conf_retry;
-+ __u16 conf_mtu;
-+
-+ __u8 ident;
-+
-+ struct l2cap_conn *conn;
-+ struct sock *next_c;
-+ struct sock *prev_c;
-+};
-+
-+#define L2CAP_CONF_REQ_SENT 0x01
-+#define L2CAP_CONF_INPUT_DONE 0x02
-+#define L2CAP_CONF_OUTPUT_DONE 0x04
-+#define L2CAP_CONF_MAX_RETRIES 2
-+
-+void l2cap_load(void);
-
- #endif /* __L2CAP_H */
-diff -urN linux-2.4.18/include/net/bluetooth/l2cap_core.h linux-2.4.18-mh9/include/net/bluetooth/l2cap_core.h
---- linux-2.4.18/include/net/bluetooth/l2cap_core.h Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/include/net/bluetooth/l2cap_core.h Thu Jan 1 01:00:00 1970
-@@ -1,144 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * $Id: l2cap_core.h,v 1.6 2001/08/03 04:19:49 maxk Exp $
-- */
--
--#ifndef __L2CAP_CORE_H
--#define __L2CAP_CORE_H
--
--#ifdef __KERNEL__
--
--/* ----- L2CAP interface ----- */
--struct l2cap_iff {
-- struct list_head list;
-- struct hci_dev *hdev;
-- bdaddr_t *bdaddr;
-- __u16 mtu;
-- spinlock_t lock;
-- struct list_head conn_list;
--};
--
--static inline void l2cap_iff_lock(struct l2cap_iff *iff)
--{
-- spin_lock(&iff->lock);
--}
--
--static inline void l2cap_iff_unlock(struct l2cap_iff *iff)
--{
-- spin_unlock(&iff->lock);
--}
--
--/* ----- L2CAP connections ----- */
--struct l2cap_chan_list {
-- struct sock *head;
-- rwlock_t lock;
-- long num;
--};
--
--struct l2cap_conn {
-- struct l2cap_iff *iff;
-- struct list_head list;
--
-- struct hci_conn *hconn;
--
-- __u16 state;
-- __u8 out;
-- bdaddr_t src;
-- bdaddr_t dst;
--
-- spinlock_t lock;
-- atomic_t refcnt;
--
-- struct sk_buff *rx_skb;
-- __u32 rx_len;
-- __u8 rx_ident;
-- __u8 tx_ident;
--
-- struct l2cap_chan_list chan_list;
--
-- struct timer_list timer;
--};
--
--static inline void __l2cap_conn_link(struct l2cap_iff *iff, struct l2cap_conn *c)
--{
-- list_add(&c->list, &iff->conn_list);
--}
--
--static inline void __l2cap_conn_unlink(struct l2cap_iff *iff, struct l2cap_conn *c)
--{
-- list_del(&c->list);
--}
--
--/* ----- L2CAP channel and socket info ----- */
--#define l2cap_pi(sk) ((struct l2cap_pinfo *) &sk->protinfo)
--
--struct l2cap_accept_q {
-- struct sock *head;
-- struct sock *tail;
--};
--
--struct l2cap_pinfo {
-- bdaddr_t src;
-- bdaddr_t dst;
-- __u16 psm;
-- __u16 dcid;
-- __u16 scid;
-- __u32 flags;
--
-- __u16 imtu;
-- __u16 omtu;
-- __u16 flush_to;
--
-- __u8 conf_state;
-- __u16 conf_mtu;
--
-- __u8 ident;
--
-- struct l2cap_conn *conn;
-- struct sock *next_c;
-- struct sock *prev_c;
--
-- struct sock *parent;
-- struct sock *next_q;
-- struct sock *prev_q;
--
-- struct l2cap_accept_q accept_q;
--};
--
--#define CONF_REQ_SENT 0x01
--#define CONF_INPUT_DONE 0x02
--#define CONF_OUTPUT_DONE 0x04
--
--extern struct bluez_sock_list l2cap_sk_list;
--extern struct list_head l2cap_iff_list;
--extern rwlock_t l2cap_rt_lock;
--
--extern void l2cap_register_proc(void);
--extern void l2cap_unregister_proc(void);
--
--#endif /* __KERNEL__ */
--
--#endif /* __L2CAP_CORE_H */
-diff -urN linux-2.4.18/include/net/bluetooth/rfcomm.h linux-2.4.18-mh9/include/net/bluetooth/rfcomm.h
---- linux-2.4.18/include/net/bluetooth/rfcomm.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/include/net/bluetooth/rfcomm.h Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,356 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ RPN support - Dirk Husemann <hud@zurich.ibm.com>
-+*/
-+
-+/*
-+ * $Id: rfcomm.h,v 1.31 2002/10/18 20:12:11 maxk Exp $
-+ */
-+
-+#ifndef __RFCOMM_H
-+#define __RFCOMM_H
-+
-+#define RFCOMM_PSM 3
-+
-+#define RFCOMM_CONN_TIMEOUT (HZ * 30)
-+#define RFCOMM_DISC_TIMEOUT (HZ * 20)
-+
-+#define RFCOMM_DEFAULT_MTU 127
-+#define RFCOMM_DEFAULT_CREDITS 7
-+
-+#define RFCOMM_MAX_L2CAP_MTU 1024
-+#define RFCOMM_MAX_CREDITS 40
-+
-+#define RFCOMM_SKB_HEAD_RESERVE 8
-+#define RFCOMM_SKB_TAIL_RESERVE 2
-+#define RFCOMM_SKB_RESERVE (RFCOMM_SKB_HEAD_RESERVE + RFCOMM_SKB_TAIL_RESERVE)
-+
-+#define RFCOMM_SABM 0x2f
-+#define RFCOMM_DISC 0x43
-+#define RFCOMM_UA 0x63
-+#define RFCOMM_DM 0x0f
-+#define RFCOMM_UIH 0xef
-+
-+#define RFCOMM_TEST 0x08
-+#define RFCOMM_FCON 0x28
-+#define RFCOMM_FCOFF 0x18
-+#define RFCOMM_MSC 0x38
-+#define RFCOMM_RPN 0x24
-+#define RFCOMM_RLS 0x14
-+#define RFCOMM_PN 0x20
-+#define RFCOMM_NSC 0x04
-+
-+#define RFCOMM_V24_FC 0x02
-+#define RFCOMM_V24_RTC 0x04
-+#define RFCOMM_V24_RTR 0x08
-+#define RFCOMM_V24_IC 0x40
-+#define RFCOMM_V24_DV 0x80
-+
-+#define RFCOMM_RPN_BR_2400 0x0
-+#define RFCOMM_RPN_BR_4800 0x1
-+#define RFCOMM_RPN_BR_7200 0x2
-+#define RFCOMM_RPN_BR_9600 0x3
-+#define RFCOMM_RPN_BR_19200 0x4
-+#define RFCOMM_RPN_BR_38400 0x5
-+#define RFCOMM_RPN_BR_57600 0x6
-+#define RFCOMM_RPN_BR_115200 0x7
-+#define RFCOMM_RPN_BR_230400 0x8
-+
-+#define RFCOMM_RPN_DATA_5 0x0
-+#define RFCOMM_RPN_DATA_6 0x1
-+#define RFCOMM_RPN_DATA_7 0x2
-+#define RFCOMM_RPN_DATA_8 0x3
-+
-+#define RFCOMM_RPN_STOP_1 0
-+#define RFCOMM_RPN_STOP_15 1
-+
-+#define RFCOMM_RPN_PARITY_NONE 0x0
-+#define RFCOMM_RPN_PARITY_ODD 0x4
-+#define RFCOMM_RPN_PARITY_EVEN 0x5
-+#define RFCOMM_RPN_PARITY_MARK 0x6
-+#define RFCOMM_RPN_PARITY_SPACE 0x7
-+
-+#define RFCOMM_RPN_FLOW_NONE 0x00
-+
-+#define RFCOMM_RPN_XON_CHAR 0x11
-+#define RFCOMM_RPN_XOFF_CHAR 0x13
-+
-+#define RFCOMM_RPN_PM_BITRATE 0x0001
-+#define RFCOMM_RPN_PM_DATA 0x0002
-+#define RFCOMM_RPN_PM_STOP 0x0004
-+#define RFCOMM_RPN_PM_PARITY 0x0008
-+#define RFCOMM_RPN_PM_PARITY_TYPE 0x0010
-+#define RFCOMM_RPN_PM_XON 0x0020
-+#define RFCOMM_RPN_PM_XOFF 0x0040
-+#define RFCOMM_RPN_PM_FLOW 0x3F00
-+
-+#define RFCOMM_RPN_PM_ALL 0x3F7F
-+
-+struct rfcomm_hdr {
-+ u8 addr;
-+ u8 ctrl;
-+ u8 len; // Actual size can be 2 bytes
-+} __attribute__ ((packed));
-+
-+struct rfcomm_cmd {
-+ u8 addr;
-+ u8 ctrl;
-+ u8 len;
-+ u8 fcs;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_mcc {
-+ u8 type;
-+ u8 len;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_pn {
-+ u8 dlci;
-+ u8 flow_ctrl;
-+ u8 priority;
-+ u8 ack_timer;
-+ u16 mtu;
-+ u8 max_retrans;
-+ u8 credits;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_rpn {
-+ u8 dlci;
-+ u8 bit_rate;
-+ u8 line_settings;
-+ u8 flow_ctrl;
-+ u8 xon_char;
-+ u8 xoff_char;
-+ u16 param_mask;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_rls {
-+ u8 dlci;
-+ u8 status;
-+} __attribute__ ((packed));
-+
-+struct rfcomm_msc {
-+ u8 dlci;
-+ u8 v24_sig;
-+} __attribute__ ((packed));
-+
-+/* ---- Core structures, flags etc ---- */
-+
-+struct rfcomm_session {
-+ struct list_head list;
-+ struct socket *sock;
-+ unsigned long state;
-+ unsigned long flags;
-+ atomic_t refcnt;
-+ int initiator;
-+
-+ /* Default DLC parameters */
-+ uint mtu;
-+ uint credits;
-+
-+ struct list_head dlcs;
-+};
-+
-+struct rfcomm_dlc {
-+ struct list_head list;
-+ struct rfcomm_session *session;
-+ struct sk_buff_head tx_queue;
-+ struct timer_list timer;
-+
-+ spinlock_t lock;
-+ unsigned long state;
-+ unsigned long flags;
-+ atomic_t refcnt;
-+ u8 dlci;
-+ u8 addr;
-+ u8 priority;
-+ u8 v24_sig;
-+ u8 mscex;
-+
-+ uint mtu;
-+ uint credits;
-+ uint rx_credits;
-+ uint tx_credits;
-+
-+ void *owner;
-+
-+ void (*data_ready)(struct rfcomm_dlc *d, struct sk_buff *skb);
-+ void (*state_change)(struct rfcomm_dlc *d, int err);
-+ void (*modem_status)(struct rfcomm_dlc *d, u8 v24_sig);
-+};
-+
-+/* DLC and session flags */
-+#define RFCOMM_RX_THROTTLED 0
-+#define RFCOMM_TX_THROTTLED 1
-+#define RFCOMM_MSC_PENDING 2
-+#define RFCOMM_TIMED_OUT 3
-+
-+/* Scheduling flags and events */
-+#define RFCOMM_SCHED_STATE 0
-+#define RFCOMM_SCHED_RX 1
-+#define RFCOMM_SCHED_TX 2
-+#define RFCOMM_SCHED_TIMEO 3
-+#define RFCOMM_SCHED_WAKEUP 31
-+
-+/* MSC exchange flags */
-+#define RFCOMM_MSCEX_TX 1
-+#define RFCOMM_MSCEX_RX 2
-+#define RFCOMM_MSCEX_OK (RFCOMM_MSCEX_TX + RFCOMM_MSCEX_RX)
-+
-+extern struct task_struct *rfcomm_thread;
-+extern unsigned long rfcomm_event;
-+
-+static inline void rfcomm_schedule(uint event)
-+{
-+ if (!rfcomm_thread)
-+ return;
-+ set_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
-+ wake_up_process(rfcomm_thread);
-+}
-+
-+extern struct semaphore rfcomm_sem;
-+#define rfcomm_lock() down(&rfcomm_sem);
-+#define rfcomm_unlock() up(&rfcomm_sem);
-+
-+/* ---- RFCOMM DLCs (channels) ---- */
-+struct rfcomm_dlc *rfcomm_dlc_alloc(int prio);
-+void rfcomm_dlc_free(struct rfcomm_dlc *d);
-+int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel);
-+int rfcomm_dlc_close(struct rfcomm_dlc *d, int reason);
-+int rfcomm_dlc_send(struct rfcomm_dlc *d, struct sk_buff *skb);
-+int rfcomm_dlc_set_modem_status(struct rfcomm_dlc *d, u8 v24_sig);
-+int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig);
-+
-+#define rfcomm_dlc_lock(d) spin_lock(&d->lock)
-+#define rfcomm_dlc_unlock(d) spin_unlock(&d->lock)
-+
-+static inline void rfcomm_dlc_hold(struct rfcomm_dlc *d)
-+{
-+ atomic_inc(&d->refcnt);
-+}
-+
-+static inline void rfcomm_dlc_put(struct rfcomm_dlc *d)
-+{
-+ if (atomic_dec_and_test(&d->refcnt))
-+ rfcomm_dlc_free(d);
-+}
-+
-+extern void FASTCALL(__rfcomm_dlc_throttle(struct rfcomm_dlc *d));
-+extern void FASTCALL(__rfcomm_dlc_unthrottle(struct rfcomm_dlc *d));
-+
-+static inline void rfcomm_dlc_throttle(struct rfcomm_dlc *d)
-+{
-+ if (!test_and_set_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ __rfcomm_dlc_throttle(d);
-+}
-+
-+static inline void rfcomm_dlc_unthrottle(struct rfcomm_dlc *d)
-+{
-+ if (test_and_clear_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ __rfcomm_dlc_unthrottle(d);
-+}
-+
-+/* ---- RFCOMM sessions ---- */
-+struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state);
-+struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst);
-+struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err);
-+void rfcomm_session_del(struct rfcomm_session *s);
-+void rfcomm_session_close(struct rfcomm_session *s, int err);
-+void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst);
-+
-+static inline void rfcomm_session_hold(struct rfcomm_session *s)
-+{
-+ atomic_inc(&s->refcnt);
-+}
-+
-+static inline void rfcomm_session_put(struct rfcomm_session *s)
-+{
-+ if (atomic_dec_and_test(&s->refcnt))
-+ rfcomm_session_del(s);
-+}
-+
-+/* ---- RFCOMM chechsum ---- */
-+extern u8 rfcomm_crc_table[];
-+
-+/* ---- RFCOMM sockets ---- */
-+struct sockaddr_rc {
-+ sa_family_t rc_family;
-+ bdaddr_t rc_bdaddr;
-+ u8 rc_channel;
-+};
-+
-+#define rfcomm_pi(sk) ((struct rfcomm_pinfo *) &sk->tp_pinfo)
-+
-+struct rfcomm_pinfo {
-+ struct rfcomm_dlc *dlc;
-+ u8 channel;
-+};
-+
-+int rfcomm_init_sockets(void);
-+void rfcomm_cleanup_sockets(void);
-+
-+int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc **d);
-+
-+/* ---- RFCOMM TTY ---- */
-+#define RFCOMM_MAX_DEV 256
-+
-+#define RFCOMMCREATEDEV _IOW('R', 200, int)
-+#define RFCOMMRELEASEDEV _IOW('R', 201, int)
-+#define RFCOMMGETDEVLIST _IOR('R', 210, int)
-+#define RFCOMMGETDEVINFO _IOR('R', 211, int)
-+#define RFCOMMSTEALDLC _IOW('R', 220, int)
-+
-+#define RFCOMM_REUSE_DLC 0
-+#define RFCOMM_RELEASE_ONHUP 1
-+#define RFCOMM_HANGUP_NOW 2
-+#define RFCOMM_TTY_ATTACHED 3
-+
-+struct rfcomm_dev_req {
-+ s16 dev_id;
-+ u32 flags;
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+};
-+
-+struct rfcomm_dev_info {
-+ s16 id;
-+ u32 flags;
-+ u16 state;
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+};
-+
-+struct rfcomm_dev_list_req {
-+ u16 dev_num;
-+ struct rfcomm_dev_info dev_info[0];
-+};
-+
-+int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg);
-+int rfcomm_init_ttys(void);
-+void rfcomm_cleanup_ttys(void);
-+
-+#endif /* __RFCOMM_H */
-diff -urN linux-2.4.18/include/net/bluetooth/sco.h linux-2.4.18-mh9/include/net/bluetooth/sco.h
---- linux-2.4.18/include/net/bluetooth/sco.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/include/net/bluetooth/sco.h Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,81 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: sco.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $
-+ */
-+
-+#ifndef __SCO_H
-+#define __SCO_H
-+
-+/* SCO defaults */
-+#define SCO_DEFAULT_MTU 500
-+#define SCO_DEFAULT_FLUSH_TO 0xFFFF
-+
-+#define SCO_CONN_TIMEOUT (HZ * 40)
-+#define SCO_DISCONN_TIMEOUT (HZ * 2)
-+#define SCO_CONN_IDLE_TIMEOUT (HZ * 60)
-+
-+/* SCO socket address */
-+struct sockaddr_sco {
-+ sa_family_t sco_family;
-+ bdaddr_t sco_bdaddr;
-+};
-+
-+/* set/get sockopt defines */
-+#define SCO_OPTIONS 0x01
-+struct sco_options {
-+ __u16 mtu;
-+};
-+
-+#define SCO_CONNINFO 0x02
-+struct sco_conninfo {
-+ __u16 hci_handle;
-+};
-+
-+/* ---- SCO connections ---- */
-+struct sco_conn {
-+ struct hci_conn *hcon;
-+
-+ bdaddr_t *dst;
-+ bdaddr_t *src;
-+
-+ spinlock_t lock;
-+ struct sock *sk;
-+
-+ unsigned int mtu;
-+};
-+
-+#define sco_conn_lock(c) spin_lock(&c->lock);
-+#define sco_conn_unlock(c) spin_unlock(&c->lock);
-+
-+/* ----- SCO socket info ----- */
-+#define sco_pi(sk) ((struct sco_pinfo *) &sk->tp_pinfo)
-+
-+struct sco_pinfo {
-+ __u32 flags;
-+ struct sco_conn *conn;
-+};
-+
-+#endif /* __SCO_H */
-diff -urN linux-2.4.18/include/pcmcia/ciscode.h linux-2.4.18-mh9/include/pcmcia/ciscode.h
---- linux-2.4.18/include/pcmcia/ciscode.h Fri Dec 21 18:42:04 2001
-+++ linux-2.4.18-mh9/include/pcmcia/ciscode.h Mon Aug 25 18:38:12 2003
-@@ -1,5 +1,5 @@
- /*
-- * ciscode.h 1.48 2001/08/24 12:16:12
-+ * ciscode.h 1.57 2002/11/03 20:38:14
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
-@@ -60,6 +60,10 @@
- #define PRODID_INTEL_DUAL_RS232 0x0301
- #define PRODID_INTEL_2PLUS 0x8422
-
-+#define MANFID_KME 0x0032
-+#define PRODID_KME_KXLC005_A 0x0704
-+#define PRODID_KME_KXLC005_B 0x2904
-+
- #define MANFID_LINKSYS 0x0143
- #define PRODID_LINKSYS_PCMLM28 0xc0ab
- #define PRODID_LINKSYS_3400 0x3341
-@@ -94,6 +98,8 @@
- #define PRODID_OSITECH_JACK_336 0x0007
- #define PRODID_OSITECH_SEVEN 0x0008
-
-+#define MANFID_OXSEMI 0x0279
-+
- #define MANFID_PIONEER 0x000b
-
- #define MANFID_PSION 0x016c
-@@ -103,6 +109,7 @@
- #define PRODID_QUATECH_SPP100 0x0003
- #define PRODID_QUATECH_DUAL_RS232 0x0012
- #define PRODID_QUATECH_DUAL_RS232_D1 0x0007
-+#define PRODID_QUATECH_DUAL_RS232_D2 0x0052
- #define PRODID_QUATECH_QUAD_RS232 0x001b
- #define PRODID_QUATECH_DUAL_RS422 0x000e
- #define PRODID_QUATECH_QUAD_RS422 0x0045
-@@ -120,8 +127,11 @@
-
- #define MANFID_TDK 0x0105
- #define PRODID_TDK_CF010 0x0900
-+#define PRODID_TDK_GN3410 0x4815
-
- #define MANFID_TOSHIBA 0x0098
-+
-+#define MANFID_UNGERMANN 0x02c0
-
- #define MANFID_XIRCOM 0x0105
-
-diff -urN linux-2.4.18/lib/Config.in linux-2.4.18-mh9/lib/Config.in
---- linux-2.4.18/lib/Config.in Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/lib/Config.in Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,12 @@
-+#
-+# Library configuration
-+#
-+mainmenu_option next_comment
-+comment 'Library routines'
-+
-+if [ "$CONFIG_EXPERIMENTAL" = "y" -a \
-+ "$CONFIG_HOTPLUG" = "y" ]; then
-+ tristate 'Hotplug firmware loading support (EXPERIMENTAL)' CONFIG_FW_LOADER
-+fi
-+
-+endmenu
-diff -urN linux-2.4.18/lib/Makefile linux-2.4.18-mh9/lib/Makefile
---- linux-2.4.18/lib/Makefile Tue Sep 18 00:31:15 2001
-+++ linux-2.4.18-mh9/lib/Makefile Mon Aug 25 18:38:12 2003
-@@ -8,12 +8,16 @@
-
- L_TARGET := lib.a
-
--export-objs := cmdline.o dec_and_lock.o rwsem-spinlock.o rwsem.o
-+export-objs := cmdline.o dec_and_lock.o rwsem-spinlock.o rwsem.o \
-+ firmware_class.o
-
- obj-y := errno.o ctype.o string.o vsprintf.o brlock.o cmdline.o bust_spinlocks.o rbtree.o
-
-+obj-$(CONFIG_FW_LOADER) += firmware_class.o
- obj-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
- obj-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
-+
-+include $(TOPDIR)/drivers/bluetooth/Makefile.lib
-
- ifneq ($(CONFIG_HAVE_DEC_LOCK),y)
- obj-y += dec_and_lock.o
-diff -urN linux-2.4.18/lib/firmware_class.c linux-2.4.18-mh9/lib/firmware_class.c
---- linux-2.4.18/lib/firmware_class.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/lib/firmware_class.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,571 @@
-+/*
-+ * firmware_class.c - Multi purpose firmware loading support
-+ *
-+ * Copyright (c) 2003 Manuel Estrada Sainz <ranty@debian.org>
-+ *
-+ * Please see Documentation/firmware_class/ for more information.
-+ *
-+ */
-+/*
-+ * Based on kernel/kmod.c and drivers/usb/usb.c
-+ */
-+/*
-+ kernel/kmod.c
-+ Kirk Petersen
-+
-+ Reorganized not to be a daemon by Adam Richter, with guidance
-+ from Greg Zornetzer.
-+
-+ Modified to avoid chroot and file sharing problems.
-+ Mikael Pettersson
-+
-+ Limit the concurrent number of kmod modprobes to catch loops from
-+ "modprobe needs a service that is in a module".
-+ Keith Owens <kaos@ocs.com.au> December 1999
-+
-+ Unblock all signals when we exec a usermode process.
-+ Shuu Yamaguchi <shuu@wondernetworkresources.com> December 2000
-+*/
-+/*
-+ * drivers/usb/usb.c
-+ *
-+ * (C) Copyright Linus Torvalds 1999
-+ * (C) Copyright Johannes Erdfelt 1999-2001
-+ * (C) Copyright Andreas Gal 1999
-+ * (C) Copyright Gregory P. Smith 1999
-+ * (C) Copyright Deti Fliegl 1999 (new USB architecture)
-+ * (C) Copyright Randy Dunlap 2000
-+ * (C) Copyright David Brownell 2000 (kernel hotplug, usb_device_id)
-+ * (C) Copyright Yggdrasil Computing, Inc. 2000
-+ * (usb_device_id matching changes by Adam J. Richter)
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/string.h>
-+#include <linux/types.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/kmod.h>
-+#include <linux/proc_fs.h>
-+#include <linux/vmalloc.h>
-+#include <asm/hardirq.h>
-+
-+#include "linux/firmware.h"
-+
-+MODULE_AUTHOR("Manuel Estrada Sainz <ranty@debian.org>");
-+MODULE_DESCRIPTION("Multi purpose firmware loading support");
-+MODULE_LICENSE("GPL");
-+
-+#define err(format, arg...) \
-+ printk(KERN_ERR "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg)
-+
-+static int loading_timeout = 10; /* In seconds */
-+static struct proc_dir_entry *proc_dir_timeout;
-+static struct proc_dir_entry *proc_dir;
-+
-+#ifdef CONFIG_HOTPLUG
-+
-+static int
-+call_helper(char *verb, const char *name, const char *device)
-+{
-+ char *argv[3], **envp, *buf, *scratch;
-+ int i = 0;
-+
-+ int retval = 0;
-+
-+ if (!hotplug_path[0])
-+ return -ENOENT;
-+ if (in_interrupt()) {
-+ err("in_interrupt");
-+ return -EFAULT;
-+ }
-+ if (!current->fs->root) {
-+ warn("call_policy %s -- no FS yet", verb);
-+ return -EPERM;
-+ }
-+
-+ if (!(envp = (char **) kmalloc(20 * sizeof (char *), GFP_KERNEL))) {
-+ err("unable to allocate envp");
-+ return -ENOMEM;
-+ }
-+ if (!(buf = kmalloc(256, GFP_KERNEL))) {
-+ kfree(envp);
-+ err("unable to allocate buf");
-+ return -ENOMEM;
-+ }
-+
-+ /* only one standardized param to hotplug command: type */
-+ argv[0] = hotplug_path;
-+ argv[1] = "firmware";
-+ argv[2] = 0;
-+
-+ /* minimal command environment */
-+ envp[i++] = "HOME=/";
-+ envp[i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
-+
-+#ifdef DEBUG
-+ /* hint that policy agent should enter no-stdout debug mode */
-+ envp[i++] = "DEBUG=kernel";
-+#endif
-+ scratch = buf;
-+
-+ if (device) {
-+ envp[i++] = scratch;
-+ scratch += snprintf(scratch, FIRMWARE_NAME_MAX+25,
-+ "DEVPATH=/driver/firmware/%s", device) + 1;
-+ }
-+
-+ envp[i++] = scratch;
-+ scratch += sprintf(scratch, "ACTION=%s", verb) + 1;
-+
-+ envp[i++] = scratch;
-+ scratch += snprintf(scratch, FIRMWARE_NAME_MAX,
-+ "FIRMWARE=%s", name) + 1;
-+
-+ envp[i++] = 0;
-+
-+#ifdef DEBUG
-+ dbg("firmware: %s %s %s", argv[0], argv[1], verb);
-+#endif
-+
-+ retval = call_usermodehelper(argv[0], argv, envp);
-+ if (retval) {
-+ printk("call_usermodehelper return %d\n", retval);
-+ }
-+
-+ kfree(buf);
-+ kfree(envp);
-+ return retval;
-+}
-+#else
-+
-+static inline int
-+call_helper(char *verb, const char *name, const char *device)
-+{
-+ return -ENOENT;
-+}
-+
-+#endif /* CONFIG_HOTPLUG */
-+
-+struct firmware_priv {
-+ struct completion completion;
-+ struct proc_dir_entry *proc_dir;
-+ struct proc_dir_entry *attr_data;
-+ struct proc_dir_entry *attr_loading;
-+ struct firmware *fw;
-+ int loading;
-+ int abort;
-+ int alloc_size;
-+ struct timer_list timeout;
-+};
-+
-+static int
-+firmware_timeout_show(char *buf, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ return sprintf(buf, "%d\n", loading_timeout);
-+}
-+
-+/**
-+ * firmware_timeout_store:
-+ * Description:
-+ * Sets the number of seconds to wait for the firmware. Once
-+ * this expires an error will be return to the driver and no
-+ * firmware will be provided.
-+ *
-+ * Note: zero means 'wait for ever'
-+ *
-+ **/
-+static int
-+firmware_timeout_store(struct file *file, const char *buf,
-+ unsigned long count, void *data)
-+{
-+ loading_timeout = simple_strtol(buf, NULL, 10);
-+ return count;
-+}
-+
-+static int
-+firmware_loading_show(char *buf, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ return sprintf(buf, "%d\n", fw_priv->loading);
-+}
-+
-+/**
-+ * firmware_loading_store: - loading control file
-+ * Description:
-+ * The relevant values are:
-+ *
-+ * 1: Start a load, discarding any previous partial load.
-+ * 0: Conclude the load and handle the data to the driver code.
-+ * -1: Conclude the load with an error and discard any written data.
-+ **/
-+static int
-+firmware_loading_store(struct file *file, const char *buf,
-+ unsigned long count, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ int prev_loading = fw_priv->loading;
-+
-+ fw_priv->loading = simple_strtol(buf, NULL, 10);
-+
-+ switch (fw_priv->loading) {
-+ case -1:
-+ fw_priv->abort = 1;
-+ wmb();
-+ complete(&fw_priv->completion);
-+ break;
-+ case 1:
-+ kfree(fw_priv->fw->data);
-+ fw_priv->fw->data = NULL;
-+ fw_priv->fw->size = 0;
-+ fw_priv->alloc_size = 0;
-+ break;
-+ case 0:
-+ if (prev_loading == 1)
-+ complete(&fw_priv->completion);
-+ break;
-+ }
-+
-+ return count;
-+}
-+
-+static int
-+firmware_data_read(char *buffer, char **start, off_t offset,
-+ int count, int *eof, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ struct firmware *fw = fw_priv->fw;
-+
-+ if (offset > fw->size)
-+ return 0;
-+ if (offset + count > fw->size)
-+ count = fw->size - offset;
-+
-+ memcpy(buffer, fw->data + offset, count);
-+ *start = (void *) ((long) count);
-+ return count;
-+}
-+static int
-+fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size)
-+{
-+ u8 *new_data;
-+ int new_size;
-+
-+ if (min_size <= fw_priv->alloc_size)
-+ return 0;
-+ if((min_size % PAGE_SIZE) == 0)
-+ new_size = min_size;
-+ else
-+ new_size = (min_size + PAGE_SIZE) & PAGE_MASK;
-+ new_data = vmalloc(new_size);
-+ if (!new_data) {
-+ printk(KERN_ERR "%s: unable to alloc buffer\n", __FUNCTION__);
-+ /* Make sure that we don't keep incomplete data */
-+ fw_priv->abort = 1;
-+ return -ENOMEM;
-+ }
-+ fw_priv->alloc_size = new_size;
-+ if (fw_priv->fw->data) {
-+ memcpy(new_data, fw_priv->fw->data, fw_priv->fw->size);
-+ vfree(fw_priv->fw->data);
-+ }
-+ fw_priv->fw->data = new_data;
-+ BUG_ON(min_size > fw_priv->alloc_size);
-+ return 0;
-+}
-+
-+/**
-+ * firmware_data_write:
-+ *
-+ * Description:
-+ *
-+ * Data written to the 'data' attribute will be later handled to
-+ * the driver as a firmware image.
-+ **/
-+static int
-+firmware_data_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ struct firmware_priv *fw_priv = data;
-+ struct firmware *fw = fw_priv->fw;
-+ int offset = file->f_pos;
-+ int retval;
-+
-+ retval = fw_realloc_buffer(fw_priv, offset + count);
-+ if (retval) {
-+ printk("%s: retval:%d\n", __FUNCTION__, retval);
-+ return retval;
-+ }
-+
-+ memcpy(fw->data + offset, buffer, count);
-+
-+ fw->size = max_t(size_t, offset + count, fw->size);
-+ file->f_pos += count;
-+ return count;
-+}
-+
-+static void
-+firmware_class_timeout(u_long data)
-+{
-+ struct firmware_priv *fw_priv = (struct firmware_priv *) data;
-+ fw_priv->abort = 1;
-+ wmb();
-+ complete(&fw_priv->completion);
-+}
-+static int
-+fw_setup_class_device(struct firmware_priv **fw_priv_p,
-+ const char *fw_name, const char *device)
-+{
-+ int retval;
-+ struct firmware_priv *fw_priv = kmalloc(sizeof (struct firmware_priv),
-+ GFP_KERNEL);
-+ *fw_priv_p = fw_priv;
-+ if (!fw_priv) {
-+ retval = -ENOMEM;
-+ goto out;
-+ }
-+ memset(fw_priv, 0, sizeof (*fw_priv));
-+
-+ init_completion(&fw_priv->completion);
-+
-+ fw_priv->timeout.function = firmware_class_timeout;
-+ fw_priv->timeout.data = (u_long) fw_priv;
-+ init_timer(&fw_priv->timeout);
-+
-+ retval = -EAGAIN;
-+ fw_priv->proc_dir = create_proc_entry(device, 0644 | S_IFDIR, proc_dir);
-+ if (!fw_priv->proc_dir)
-+ goto err_free_fw_priv;
-+
-+ fw_priv->attr_data = create_proc_entry("data", 0644 | S_IFREG,
-+ fw_priv->proc_dir);
-+ if (!fw_priv->attr_data)
-+ goto err_remove_dir;
-+
-+ fw_priv->attr_data->read_proc = firmware_data_read;
-+ fw_priv->attr_data->write_proc = firmware_data_write;
-+ fw_priv->attr_data->data = fw_priv;
-+
-+ fw_priv->attr_loading = create_proc_entry("loading", 0644 | S_IFREG,
-+ fw_priv->proc_dir);
-+ if (!fw_priv->attr_loading)
-+ goto err_remove_data;
-+
-+ fw_priv->attr_loading->read_proc = firmware_loading_show;
-+ fw_priv->attr_loading->write_proc = firmware_loading_store;
-+ fw_priv->attr_loading->data = fw_priv;
-+
-+ retval = 0;
-+ fw_priv->fw = kmalloc(sizeof (struct firmware), GFP_KERNEL);
-+ if (!fw_priv->fw) {
-+ printk(KERN_ERR "%s: kmalloc(struct firmware) failed\n",
-+ __FUNCTION__);
-+ retval = -ENOMEM;
-+ goto err_remove_loading;
-+ }
-+ memset(fw_priv->fw, 0, sizeof (*fw_priv->fw));
-+
-+ goto out;
-+
-+err_remove_loading:
-+ remove_proc_entry("loading", fw_priv->proc_dir);
-+err_remove_data:
-+ remove_proc_entry("data", fw_priv->proc_dir);
-+err_remove_dir:
-+ remove_proc_entry(device, proc_dir);
-+err_free_fw_priv:
-+ kfree(fw_priv);
-+out:
-+ return retval;
-+}
-+static void
-+fw_remove_class_device(struct firmware_priv *fw_priv)
-+{
-+ remove_proc_entry("loading", fw_priv->proc_dir);
-+ remove_proc_entry("data", fw_priv->proc_dir);
-+ remove_proc_entry(fw_priv->proc_dir->name, proc_dir);
-+}
-+
-+/**
-+ * request_firmware: - request firmware to hotplug and wait for it
-+ * Description:
-+ * @firmware will be used to return a firmware image by the name
-+ * of @name for device @device.
-+ *
-+ * Should be called from user context where sleeping is allowed.
-+ *
-+ * @name will be use as $FIRMWARE in the hotplug environment and
-+ * should be distinctive enough not to be confused with any other
-+ * firmware image for this or any other device.
-+ **/
-+int
-+request_firmware(const struct firmware **firmware, const char *name,
-+ const char *device)
-+{
-+ struct firmware_priv *fw_priv;
-+ int retval;
-+
-+ if (!firmware) {
-+ retval = -EINVAL;
-+ goto out;
-+ }
-+ *firmware = NULL;
-+
-+ retval = fw_setup_class_device(&fw_priv, name, device);
-+ if (retval)
-+ goto out;
-+
-+ retval = call_helper("add", name, device);
-+ if (retval)
-+ goto out;
-+ if (loading_timeout) {
-+ fw_priv->timeout.expires = jiffies + loading_timeout * HZ;
-+ add_timer(&fw_priv->timeout);
-+ }
-+
-+ wait_for_completion(&fw_priv->completion);
-+
-+ del_timer(&fw_priv->timeout);
-+ fw_remove_class_device(fw_priv);
-+
-+ if (fw_priv->fw->size && !fw_priv->abort) {
-+ *firmware = fw_priv->fw;
-+ } else {
-+ retval = -ENOENT;
-+ vfree(fw_priv->fw->data);
-+ kfree(fw_priv->fw);
-+ }
-+out:
-+ kfree(fw_priv);
-+ return retval;
-+}
-+
-+void
-+release_firmware(const struct firmware *fw)
-+{
-+ if (fw) {
-+ vfree(fw->data);
-+ kfree(fw);
-+ }
-+}
-+
-+/**
-+ * register_firmware: - provide a firmware image for later usage
-+ *
-+ * Description:
-+ * Make sure that @data will be available by requesting firmware @name.
-+ *
-+ * Note: This will not be possible until some kind of persistence
-+ * is available.
-+ **/
-+void
-+register_firmware(const char *name, const u8 *data, size_t size)
-+{
-+ /* This is meaningless without firmware caching, so until we
-+ * decide if firmware caching is reasonable just leave it as a
-+ * noop */
-+}
-+
-+/* Async support */
-+struct firmware_work {
-+ struct tq_struct work;
-+ struct module *module;
-+ const char *name;
-+ const char *device;
-+ void *context;
-+ void (*cont)(const struct firmware *fw, void *context);
-+};
-+
-+static void
-+request_firmware_work_func(void *arg)
-+{
-+ struct firmware_work *fw_work = arg;
-+ const struct firmware *fw;
-+ if (!arg)
-+ return;
-+ request_firmware(&fw, fw_work->name, fw_work->device);
-+ fw_work->cont(fw, fw_work->context);
-+ release_firmware(fw);
-+ __MOD_DEC_USE_COUNT(fw_work->module);
-+ kfree(fw_work);
-+}
-+
-+/**
-+ * request_firmware_nowait:
-+ *
-+ * Description:
-+ * Asynchronous variant of request_firmware() for contexts where
-+ * it is not possible to sleep.
-+ *
-+ * @cont will be called asynchronously when the firmware request is over.
-+ *
-+ * @context will be passed over to @cont.
-+ *
-+ * @fw may be %NULL if firmware request fails.
-+ *
-+ **/
-+int
-+request_firmware_nowait(
-+ struct module *module,
-+ const char *name, const char *device, void *context,
-+ void (*cont)(const struct firmware *fw, void *context))
-+{
-+ struct firmware_work *fw_work = kmalloc(sizeof (struct firmware_work),
-+ GFP_ATOMIC);
-+ if (!fw_work)
-+ return -ENOMEM;
-+ if (!try_inc_mod_count(module)) {
-+ kfree(fw_work);
-+ return -EFAULT;
-+ }
-+
-+ *fw_work = (struct firmware_work) {
-+ .module = module,
-+ .name = name,
-+ .device = device,
-+ .context = context,
-+ .cont = cont,
-+ };
-+ INIT_TQUEUE(&fw_work->work, request_firmware_work_func, fw_work);
-+
-+ schedule_task(&fw_work->work);
-+ return 0;
-+}
-+
-+static int __init
-+firmware_class_init(void)
-+{
-+ proc_dir = create_proc_entry("driver/firmware", 0755 | S_IFDIR, NULL);
-+ if (!proc_dir)
-+ return -EAGAIN;
-+ proc_dir_timeout = create_proc_entry("timeout",
-+ 0644 | S_IFREG, proc_dir);
-+ if (!proc_dir_timeout) {
-+ remove_proc_entry("driver/firmware", NULL);
-+ return -EAGAIN;
-+ }
-+ proc_dir_timeout->read_proc = firmware_timeout_show;
-+ proc_dir_timeout->write_proc = firmware_timeout_store;
-+ return 0;
-+}
-+static void __exit
-+firmware_class_exit(void)
-+{
-+ remove_proc_entry("timeout", proc_dir);
-+ remove_proc_entry("driver/firmware", NULL);
-+}
-+
-+module_init(firmware_class_init);
-+module_exit(firmware_class_exit);
-+
-+EXPORT_SYMBOL(release_firmware);
-+EXPORT_SYMBOL(request_firmware);
-+EXPORT_SYMBOL(request_firmware_nowait);
-+EXPORT_SYMBOL(register_firmware);
-diff -urN linux-2.4.18/net/bluetooth/Config.in linux-2.4.18-mh9/net/bluetooth/Config.in
---- linux-2.4.18/net/bluetooth/Config.in Tue Jun 12 04:15:27 2001
-+++ linux-2.4.18-mh9/net/bluetooth/Config.in Mon Aug 25 18:38:12 2003
-@@ -1,16 +1,22 @@
- #
--# Bluetooth configuration
-+# Bluetooth subsystem configuration
- #
-
- if [ "$CONFIG_NET" != "n" ]; then
-+
- mainmenu_option next_comment
- comment 'Bluetooth support'
- dep_tristate 'Bluetooth subsystem support' CONFIG_BLUEZ $CONFIG_NET
-
- if [ "$CONFIG_BLUEZ" != "n" ]; then
- dep_tristate 'L2CAP protocol support' CONFIG_BLUEZ_L2CAP $CONFIG_BLUEZ
-+ dep_tristate 'SCO links support' CONFIG_BLUEZ_SCO $CONFIG_BLUEZ
-+ source net/bluetooth/rfcomm/Config.in
-+ source net/bluetooth/bnep/Config.in
-+ source net/bluetooth/cmtp/Config.in
- source drivers/bluetooth/Config.in
- fi
-+
- endmenu
- fi
-
-diff -urN linux-2.4.18/net/bluetooth/Makefile linux-2.4.18-mh9/net/bluetooth/Makefile
---- linux-2.4.18/net/bluetooth/Makefile Tue Jun 12 04:15:27 2001
-+++ linux-2.4.18-mh9/net/bluetooth/Makefile Mon Aug 25 18:38:12 2003
-@@ -1,20 +1,31 @@
- #
--# Makefile for the Bluetooth subsystem
-+# Makefile for the Linux Bluetooth subsystem
- #
--O_TARGET := bluetooth.o
-
--list-multi := hci.o l2cap.o
--export-objs := syms.o
--hci-objs := af_bluetooth.o hci_core.o hci_sock.o lib.o syms.o
--l2cap-objs := l2cap_core.o l2cap_proc.o
-+O_TARGET := bluetooth.o
-
--obj-$(CONFIG_BLUEZ) += hci.o
-+list-multi := bluez.o
-+export-objs := syms.o l2cap.o
-+
-+bluez-objs := af_bluetooth.o hci_core.o hci_conn.o hci_event.o hci_sock.o lib.o syms.o
-+
-+obj-$(CONFIG_BLUEZ) += bluez.o
- obj-$(CONFIG_BLUEZ_L2CAP) += l2cap.o
-+obj-$(CONFIG_BLUEZ_SCO) += sco.o
-
--include $(TOPDIR)/Rules.make
-+subdir-$(CONFIG_BLUEZ_RFCOMM) += rfcomm
-+subdir-$(CONFIG_BLUEZ_BNEP) += bnep
-+subdir-$(CONFIG_BLUEZ_CMTP) += cmtp
-
--hci.o: $(hci-objs)
-- $(LD) -r -o $@ $(hci-objs)
-+ifeq ($(CONFIG_BLUEZ_RFCOMM),y)
-+obj-y += rfcomm/rfcomm.o
-+endif
-+
-+ifeq ($(CONFIG_BLUEZ_BNEP),y)
-+obj-y += bnep/bnep.o
-+endif
-+
-+include $(TOPDIR)/Rules.make
-
--l2cap.o: $(l2cap-objs)
-- $(LD) -r -o $@ $(l2cap-objs)
-+bluez.o: $(bluez-objs)
-+ $(LD) -r -o $@ $(bluez-objs)
-diff -urN linux-2.4.18/net/bluetooth/af_bluetooth.c linux-2.4.18-mh9/net/bluetooth/af_bluetooth.c
---- linux-2.4.18/net/bluetooth/af_bluetooth.c Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/net/bluetooth/af_bluetooth.c Mon Aug 25 18:38:12 2003
-@@ -25,14 +25,15 @@
- /*
- * BlueZ Bluetooth address family and sockets.
- *
-- * $Id: af_bluetooth.c,v 1.4 2001/07/05 18:42:44 maxk Exp $
-+ * $Id: af_bluetooth.c,v 1.8 2002/07/22 20:32:54 maxk Exp $
- */
--#define VERSION "1.1"
-+#define VERSION "2.4"
-
- #include <linux/config.h>
- #include <linux/module.h>
-
- #include <linux/types.h>
-+#include <linux/list.h>
- #include <linux/errno.h>
- #include <linux/kernel.h>
- #include <linux/major.h>
-@@ -40,6 +41,7 @@
- #include <linux/slab.h>
- #include <linux/skbuff.h>
- #include <linux/init.h>
-+#include <linux/poll.h>
- #include <linux/proc_fs.h>
- #include <net/sock.h>
-
-@@ -48,70 +50,79 @@
- #endif
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
-+
-+#ifndef AF_BLUETOOTH_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-
- /* Bluetooth sockets */
--static struct net_proto_family *bluez_sock[BLUEZ_MAX_PROTO];
-+#define BLUEZ_MAX_PROTO 6
-+static struct net_proto_family *bluez_proto[BLUEZ_MAX_PROTO];
-
- int bluez_sock_register(int proto, struct net_proto_family *ops)
- {
-- if (proto > BLUEZ_MAX_PROTO)
-+ if (proto >= BLUEZ_MAX_PROTO)
- return -EINVAL;
-
-- if (bluez_sock[proto])
-+ if (bluez_proto[proto])
- return -EEXIST;
-
-- bluez_sock[proto] = ops;
-+ bluez_proto[proto] = ops;
- return 0;
- }
-
- int bluez_sock_unregister(int proto)
- {
-- if (proto > BLUEZ_MAX_PROTO)
-+ if (proto >= BLUEZ_MAX_PROTO)
- return -EINVAL;
-
-- if (!bluez_sock[proto])
-+ if (!bluez_proto[proto])
- return -ENOENT;
-
-- bluez_sock[proto] = NULL;
-+ bluez_proto[proto] = NULL;
- return 0;
- }
-
- static int bluez_sock_create(struct socket *sock, int proto)
- {
-- if (proto > BLUEZ_MAX_PROTO)
-+ if (proto >= BLUEZ_MAX_PROTO)
- return -EINVAL;
-
- #if defined(CONFIG_KMOD)
-- if (!bluez_sock[proto]) {
-+ if (!bluez_proto[proto]) {
- char module_name[30];
- sprintf(module_name, "bt-proto-%d", proto);
- request_module(module_name);
- }
- #endif
-
-- if (!bluez_sock[proto])
-+ if (!bluez_proto[proto])
- return -ENOENT;
-
-- return bluez_sock[proto]->create(sock, proto);
-+ return bluez_proto[proto]->create(sock, proto);
-+}
-+
-+void bluez_sock_init(struct socket *sock, struct sock *sk)
-+{
-+ sock_init_data(sock, sk);
-+ INIT_LIST_HEAD(&bluez_pi(sk)->accept_q);
- }
-
- void bluez_sock_link(struct bluez_sock_list *l, struct sock *sk)
- {
-- write_lock(&l->lock);
--
-+ write_lock_bh(&l->lock);
- sk->next = l->head;
- l->head = sk;
- sock_hold(sk);
--
-- write_unlock(&l->lock);
-+ write_unlock_bh(&l->lock);
- }
-
- void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *sk)
- {
- struct sock **skp;
-
-- write_lock(&l->lock);
-+ write_lock_bh(&l->lock);
- for (skp = &l->head; *skp; skp = &((*skp)->next)) {
- if (*skp == sk) {
- *skp = sk->next;
-@@ -119,7 +130,162 @@
- break;
- }
- }
-- write_unlock(&l->lock);
-+ write_unlock_bh(&l->lock);
-+}
-+
-+void bluez_accept_enqueue(struct sock *parent, struct sock *sk)
-+{
-+ BT_DBG("parent %p, sk %p", parent, sk);
-+
-+ sock_hold(sk);
-+ list_add_tail(&bluez_pi(sk)->accept_q, &bluez_pi(parent)->accept_q);
-+ bluez_pi(sk)->parent = parent;
-+ parent->ack_backlog++;
-+}
-+
-+static void bluez_accept_unlink(struct sock *sk)
-+{
-+ BT_DBG("sk %p state %d", sk, sk->state);
-+
-+ list_del_init(&bluez_pi(sk)->accept_q);
-+ bluez_pi(sk)->parent->ack_backlog--;
-+ bluez_pi(sk)->parent = NULL;
-+ sock_put(sk);
-+}
-+
-+struct sock *bluez_accept_dequeue(struct sock *parent, struct socket *newsock)
-+{
-+ struct list_head *p, *n;
-+ struct bluez_pinfo *pi;
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ list_for_each_safe(p, n, &bluez_pi(parent)->accept_q) {
-+ pi = list_entry(p, struct bluez_pinfo, accept_q);
-+ sk = bluez_sk(pi);
-+
-+ lock_sock(sk);
-+ if (sk->state == BT_CLOSED) {
-+ release_sock(sk);
-+ bluez_accept_unlink(sk);
-+ continue;
-+ }
-+
-+ if (sk->state == BT_CONNECTED || !newsock) {
-+ bluez_accept_unlink(sk);
-+ if (newsock)
-+ sock_graft(sk, newsock);
-+ release_sock(sk);
-+ return sk;
-+ }
-+ release_sock(sk);
-+ }
-+ return NULL;
-+}
-+
-+int bluez_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm)
-+{
-+ int noblock = flags & MSG_DONTWAIT;
-+ struct sock *sk = sock->sk;
-+ struct sk_buff *skb;
-+ int copied, err;
-+
-+ BT_DBG("sock %p sk %p len %d", sock, sk, len);
-+
-+ if (flags & (MSG_OOB))
-+ return -EOPNOTSUPP;
-+
-+ if (!(skb = skb_recv_datagram(sk, flags, noblock, &err))) {
-+ if (sk->shutdown & RCV_SHUTDOWN)
-+ return 0;
-+ return err;
-+ }
-+
-+ msg->msg_namelen = 0;
-+
-+ copied = skb->len;
-+ if (len < copied) {
-+ msg->msg_flags |= MSG_TRUNC;
-+ copied = len;
-+ }
-+
-+ skb->h.raw = skb->data;
-+ err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
-+
-+ skb_free_datagram(sk, skb);
-+
-+ return err ? : copied;
-+}
-+
-+unsigned int bluez_sock_poll(struct file * file, struct socket *sock, poll_table *wait)
-+{
-+ struct sock *sk = sock->sk;
-+ unsigned int mask;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ poll_wait(file, sk->sleep, wait);
-+ mask = 0;
-+
-+ if (sk->err || !skb_queue_empty(&sk->error_queue))
-+ mask |= POLLERR;
-+
-+ if (sk->shutdown == SHUTDOWN_MASK)
-+ mask |= POLLHUP;
-+
-+ if (!skb_queue_empty(&sk->receive_queue) ||
-+ !list_empty(&bluez_pi(sk)->accept_q) ||
-+ (sk->shutdown & RCV_SHUTDOWN))
-+ mask |= POLLIN | POLLRDNORM;
-+
-+ if (sk->state == BT_CLOSED)
-+ mask |= POLLHUP;
-+
-+ if (sk->state == BT_CONNECT || sk->state == BT_CONNECT2)
-+ return mask;
-+
-+ if (sock_writeable(sk))
-+ mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
-+ else
-+ set_bit(SOCK_ASYNC_NOSPACE, &sk->socket->flags);
-+
-+ return mask;
-+}
-+
-+int bluez_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ add_wait_queue(sk->sleep, &wait);
-+ while (sk->state != state) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->err) {
-+ err = sock_error(sk);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+ return err;
- }
-
- struct net_proto_family bluez_sock_family_ops =
-@@ -129,9 +295,9 @@
-
- int bluez_init(void)
- {
-- INF("BlueZ HCI Core ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-+ BT_INFO("BlueZ Core ver %s Copyright (C) 2000,2001 Qualcomm Inc",
- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-
- proc_mkdir("bluetooth", NULL);
-
-@@ -164,5 +330,6 @@
- module_exit(bluez_cleanup);
-
- MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
--MODULE_DESCRIPTION("BlueZ HCI Core ver " VERSION);
-+MODULE_DESCRIPTION("BlueZ Core ver " VERSION);
-+MODULE_LICENSE("GPL");
- #endif
-diff -urN linux-2.4.18/net/bluetooth/bnep/Config.in linux-2.4.18-mh9/net/bluetooth/bnep/Config.in
---- linux-2.4.18/net/bluetooth/bnep/Config.in Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/bnep/Config.in Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,11 @@
-+#
-+# Bluetooth BNEP layer configuration
-+#
-+
-+dep_tristate 'BNEP protocol support' CONFIG_BLUEZ_BNEP $CONFIG_BLUEZ_L2CAP
-+
-+if [ "$CONFIG_BLUEZ_BNEP" != "n" ]; then
-+ bool ' Multicast filter support' CONFIG_BLUEZ_BNEP_MC_FILTER
-+ bool ' Protocol filter support' CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+fi
-+
-diff -urN linux-2.4.18/net/bluetooth/bnep/Makefile linux-2.4.18-mh9/net/bluetooth/bnep/Makefile
---- linux-2.4.18/net/bluetooth/bnep/Makefile Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/bnep/Makefile Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,10 @@
-+#
-+# Makefile for the Linux Bluetooth BNEP layer
-+#
-+
-+O_TARGET := bnep.o
-+
-+obj-y := core.o sock.o netdev.o crc32.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.18/net/bluetooth/bnep/bnep.h linux-2.4.18-mh9/net/bluetooth/bnep/bnep.h
---- linux-2.4.18/net/bluetooth/bnep/bnep.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/bnep/bnep.h Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,185 @@
-+/*
-+ BNEP protocol definition for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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.
-+
-+ 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+*/
-+
-+/*
-+ * $Id: bnep2.h,v 1.9 2002/07/14 07:09:19 maxk Exp $
-+ */
-+
-+#ifndef _BNEP_H
-+#define _BNEP_H
-+
-+#include <linux/types.h>
-+#include <net/bluetooth/bluetooth.h>
-+
-+#include "crc32.h"
-+
-+// Limits
-+#define BNEP_MAX_PROTO_FILTERS 5
-+#define BNEP_MAX_MULTICAST_FILTERS 20
-+
-+// UUIDs
-+#define BNEP_BASE_UUID 0x0000000000001000800000805F9B34FB
-+#define BNEP_UUID16 0x02
-+#define BNEP_UUID32 0x04
-+#define BNEP_UUID128 0x16
-+
-+#define BNEP_SVC_PANU 0x1115
-+#define BNEP_SVC_NAP 0x1116
-+#define BNEP_SVC_GN 0x1117
-+
-+// Packet types
-+#define BNEP_GENERAL 0x00
-+#define BNEP_CONTROL 0x01
-+#define BNEP_COMPRESSED 0x02
-+#define BNEP_COMPRESSED_SRC_ONLY 0x03
-+#define BNEP_COMPRESSED_DST_ONLY 0x04
-+
-+// Control types
-+#define BNEP_CMD_NOT_UNDERSTOOD 0x00
-+#define BNEP_SETUP_CONN_REQ 0x01
-+#define BNEP_SETUP_CONN_RSP 0x02
-+#define BNEP_FILTER_NET_TYPE_SET 0x03
-+#define BNEP_FILTER_NET_TYPE_RSP 0x04
-+#define BNEP_FILTER_MULTI_ADDR_SET 0x05
-+#define BNEP_FILTER_MULTI_ADDR_RSP 0x06
-+
-+// Extension types
-+#define BNEP_EXT_CONTROL 0x00
-+
-+// Response messages
-+#define BNEP_SUCCESS 0x00
-+
-+#define BNEP_CONN_INVALID_DST 0x01
-+#define BNEP_CONN_INVALID_SRC 0x02
-+#define BNEP_CONN_INVALID_SVC 0x03
-+#define BNEP_CONN_NOT_ALLOWED 0x04
-+
-+#define BNEP_FILTER_UNSUPPORTED_REQ 0x01
-+#define BNEP_FILTER_INVALID_RANGE 0x02
-+#define BNEP_FILTER_INVALID_MCADDR 0x02
-+#define BNEP_FILTER_LIMIT_REACHED 0x03
-+#define BNEP_FILTER_DENIED_SECURITY 0x04
-+
-+// L2CAP settings
-+#define BNEP_MTU 1691
-+#define BNEP_PSM 0x0f
-+#define BNEP_FLUSH_TO 0xffff
-+#define BNEP_CONNECT_TO 15
-+#define BNEP_FILTER_TO 15
-+
-+// Headers
-+#define BNEP_TYPE_MASK 0x7f
-+#define BNEP_EXT_HEADER 0x80
-+
-+struct bnep_setup_conn_req {
-+ __u8 type;
-+ __u8 ctrl;
-+ __u8 uuid_size;
-+ __u8 service[0];
-+} __attribute__((packed));
-+
-+struct bnep_set_filter_req {
-+ __u8 type;
-+ __u8 ctrl;
-+ __u16 len;
-+ __u8 list[0];
-+} __attribute__((packed));
-+
-+struct bnep_control_rsp {
-+ __u8 type;
-+ __u8 ctrl;
-+ __u16 resp;
-+} __attribute__((packed));
-+
-+struct bnep_ext_hdr {
-+ __u8 type;
-+ __u8 len;
-+ __u8 data[0];
-+} __attribute__((packed));
-+
-+/* BNEP ioctl defines */
-+#define BNEPCONNADD _IOW('B', 200, int)
-+#define BNEPCONNDEL _IOW('B', 201, int)
-+#define BNEPGETCONNLIST _IOR('B', 210, int)
-+#define BNEPGETCONNINFO _IOR('B', 211, int)
-+
-+struct bnep_connadd_req {
-+ int sock; // Connected socket
-+ __u32 flags;
-+ __u16 role;
-+ char device[16]; // Name of the Ethernet device
-+};
-+
-+struct bnep_conndel_req {
-+ __u32 flags;
-+ __u8 dst[ETH_ALEN];
-+};
-+
-+struct bnep_conninfo {
-+ __u32 flags;
-+ __u16 role;
-+ __u16 state;
-+ __u8 dst[ETH_ALEN];
-+ char device[16];
-+};
-+
-+struct bnep_connlist_req {
-+ __u32 cnum;
-+ struct bnep_conninfo *ci;
-+};
-+
-+struct bnep_proto_filter {
-+ __u16 start;
-+ __u16 end;
-+};
-+
-+int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock);
-+int bnep_del_connection(struct bnep_conndel_req *req);
-+int bnep_get_connlist(struct bnep_connlist_req *req);
-+int bnep_get_conninfo(struct bnep_conninfo *ci);
-+
-+// BNEP sessions
-+struct bnep_session {
-+ struct list_head list;
-+
-+ unsigned int role;
-+ unsigned long state;
-+ unsigned long flags;
-+ atomic_t killed;
-+
-+ struct ethhdr eh;
-+ struct msghdr msg;
-+
-+ struct bnep_proto_filter proto_filter[BNEP_MAX_PROTO_FILTERS];
-+ u64 mc_filter;
-+
-+ struct socket *sock;
-+ struct net_device dev;
-+ struct net_device_stats stats;
-+};
-+
-+int bnep_net_init(struct net_device *dev);
-+int bnep_sock_init(void);
-+int bnep_sock_cleanup(void);
-+
-+static inline int bnep_mc_hash(__u8 *addr)
-+{
-+ return (bnep_crc32(~0, addr, ETH_ALEN) >> 26);
-+}
-+
-+#endif
-diff -urN linux-2.4.18/net/bluetooth/bnep/core.c linux-2.4.18-mh9/net/bluetooth/bnep/core.c
---- linux-2.4.18/net/bluetooth/bnep/core.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/bnep/core.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,708 @@
-+/*
-+ BNEP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2001-2002 Inventel Systemes
-+ Written 2001-2002 by
-+ Clément Moreau <clement.moreau@inventel.fr>
-+ David Libault <david.libault@inventel.fr>
-+
-+ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: core.c,v 1.18 2002/07/14 07:09:19 maxk Exp $
-+ */
-+
-+#define __KERNEL_SYSCALLS__
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/signal.h>
-+#include <linux/init.h>
-+#include <linux/wait.h>
-+#include <linux/errno.h>
-+#include <linux/smp_lock.h>
-+#include <linux/net.h>
-+#include <net/sock.h>
-+
-+#include <linux/socket.h>
-+#include <linux/file.h>
-+
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/skbuff.h>
-+
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "bnep.h"
-+
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.1"
-+
-+static LIST_HEAD(bnep_session_list);
-+static DECLARE_RWSEM(bnep_session_sem);
-+
-+static struct bnep_session *__bnep_get_session(u8 *dst)
-+{
-+ struct bnep_session *s;
-+ struct list_head *p;
-+
-+ BT_DBG("");
-+
-+ list_for_each(p, &bnep_session_list) {
-+ s = list_entry(p, struct bnep_session, list);
-+ if (!memcmp(dst, s->eh.h_source, ETH_ALEN))
-+ return s;
-+ }
-+ return NULL;
-+}
-+
-+static void __bnep_link_session(struct bnep_session *s)
-+{
-+ MOD_INC_USE_COUNT;
-+ list_add(&s->list, &bnep_session_list);
-+}
-+
-+static void __bnep_unlink_session(struct bnep_session *s)
-+{
-+ list_del(&s->list);
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static int bnep_send(struct bnep_session *s, void *data, size_t len)
-+{
-+ struct socket *sock = s->sock;
-+ struct iovec iv = { data, len };
-+ s->msg.msg_iov = &iv;
-+ s->msg.msg_iovlen = 1;
-+ return sock->ops->sendmsg(sock, &s->msg, len, NULL);
-+}
-+
-+static int bnep_send_rsp(struct bnep_session *s, u8 ctrl, u16 resp)
-+{
-+ struct bnep_control_rsp rsp;
-+ rsp.type = BNEP_CONTROL;
-+ rsp.ctrl = ctrl;
-+ rsp.resp = htons(resp);
-+ return bnep_send(s, &rsp, sizeof(rsp));
-+}
-+
-+static int bnep_ctrl_set_netfilter(struct bnep_session *s, u16 *data, int len)
-+{
-+ int n;
-+
-+ if (len < 2)
-+ return -EILSEQ;
-+
-+ n = ntohs(get_unaligned(data));
-+ data++; len -= 2;
-+
-+ if (len < n)
-+ return -EILSEQ;
-+
-+ BT_DBG("filter len %d", n);
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ n /= 4;
-+ if (n <= BNEP_MAX_PROTO_FILTERS) {
-+ struct bnep_proto_filter *f = s->proto_filter;
-+ int i;
-+
-+ for (i = 0; i < n; i++) {
-+ f[i].start = get_unaligned(data++);
-+ f[i].end = get_unaligned(data++);
-+
-+ BT_DBG("proto filter start %d end %d",
-+ f[i].start, f[i].end);
-+ }
-+ if (i < BNEP_MAX_PROTO_FILTERS)
-+ memset(f + i, 0, sizeof(*f));
-+
-+ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_SUCCESS);
-+ } else {
-+ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_FILTER_LIMIT_REACHED);
-+ }
-+#else
-+ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_FILTER_UNSUPPORTED_REQ);
-+#endif
-+ return 0;
-+}
-+
-+static int bnep_ctrl_set_mcfilter(struct bnep_session *s, u8 *data, int len)
-+{
-+ int n;
-+
-+ if (len < 2)
-+ return -EILSEQ;
-+
-+ n = ntohs(get_unaligned((u16 *) data));
-+ data += 2; len -= 2;
-+
-+ if (len < n)
-+ return -EILSEQ;
-+
-+ BT_DBG("filter len %d", n);
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ n /= (ETH_ALEN * 2);
-+
-+ if (n > 0) {
-+ s->mc_filter = 0;
-+
-+ /* Always send broadcast */
-+ set_bit(bnep_mc_hash(s->dev.broadcast), &s->mc_filter);
-+
-+ /* Add address ranges to the multicast hash */
-+ for (; n > 0; n--) {
-+ u8 a1[6], *a2;
-+
-+ memcpy(a1, data, ETH_ALEN); data += ETH_ALEN;
-+ a2 = data; data += ETH_ALEN;
-+
-+ BT_DBG("mc filter %s -> %s",
-+ batostr((void *) a1), batostr((void *) a2));
-+
-+ #define INCA(a) { int i = 5; while (i >=0 && ++a[i--] == 0); }
-+
-+ /* Iterate from a1 to a2 */
-+ set_bit(bnep_mc_hash(a1), &s->mc_filter);
-+ while (memcmp(a1, a2, 6) < 0 && s->mc_filter != ~0LL) {
-+ INCA(a1);
-+ set_bit(bnep_mc_hash(a1), &s->mc_filter);
-+ }
-+ }
-+ }
-+
-+ BT_DBG("mc filter hash 0x%llx", s->mc_filter);
-+
-+ bnep_send_rsp(s, BNEP_FILTER_MULTI_ADDR_RSP, BNEP_SUCCESS);
-+#else
-+ bnep_send_rsp(s, BNEP_FILTER_MULTI_ADDR_RSP, BNEP_FILTER_UNSUPPORTED_REQ);
-+#endif
-+ return 0;
-+}
-+
-+static int bnep_rx_control(struct bnep_session *s, void *data, int len)
-+{
-+ u8 cmd = *(u8 *)data;
-+ int err = 0;
-+
-+ data++; len--;
-+
-+ switch (cmd) {
-+ case BNEP_CMD_NOT_UNDERSTOOD:
-+ case BNEP_SETUP_CONN_REQ:
-+ case BNEP_SETUP_CONN_RSP:
-+ case BNEP_FILTER_NET_TYPE_RSP:
-+ case BNEP_FILTER_MULTI_ADDR_RSP:
-+ /* Ignore these for now */
-+ break;
-+
-+ case BNEP_FILTER_NET_TYPE_SET:
-+ err = bnep_ctrl_set_netfilter(s, data, len);
-+ break;
-+
-+ case BNEP_FILTER_MULTI_ADDR_SET:
-+ err = bnep_ctrl_set_mcfilter(s, data, len);
-+ break;
-+
-+ default: {
-+ u8 pkt[3];
-+ pkt[0] = BNEP_CONTROL;
-+ pkt[1] = BNEP_CMD_NOT_UNDERSTOOD;
-+ pkt[2] = cmd;
-+ bnep_send(s, pkt, sizeof(pkt));
-+ }
-+ break;
-+ }
-+
-+ return err;
-+}
-+
-+static int bnep_rx_extension(struct bnep_session *s, struct sk_buff *skb)
-+{
-+ struct bnep_ext_hdr *h;
-+ int err = 0;
-+
-+ do {
-+ h = (void *) skb->data;
-+ if (!skb_pull(skb, sizeof(*h))) {
-+ err = -EILSEQ;
-+ break;
-+ }
-+
-+ BT_DBG("type 0x%x len %d", h->type, h->len);
-+
-+ switch (h->type & BNEP_TYPE_MASK) {
-+ case BNEP_EXT_CONTROL:
-+ bnep_rx_control(s, skb->data, skb->len);
-+ break;
-+
-+ default:
-+ /* Unknown extension, skip it. */
-+ break;
-+ }
-+
-+ if (!skb_pull(skb, h->len)) {
-+ err = -EILSEQ;
-+ break;
-+ }
-+ } while (!err && (h->type & BNEP_EXT_HEADER));
-+
-+ return err;
-+}
-+
-+static u8 __bnep_rx_hlen[] = {
-+ ETH_HLEN, /* BNEP_GENERAL */
-+ 0, /* BNEP_CONTROL */
-+ 2, /* BNEP_COMPRESSED */
-+ ETH_ALEN + 2, /* BNEP_COMPRESSED_SRC_ONLY */
-+ ETH_ALEN + 2 /* BNEP_COMPRESSED_DST_ONLY */
-+};
-+#define BNEP_RX_TYPES (sizeof(__bnep_rx_hlen) - 1)
-+
-+static inline int bnep_rx_frame(struct bnep_session *s, struct sk_buff *skb)
-+{
-+ struct net_device *dev = &s->dev;
-+ struct sk_buff *nskb;
-+ u8 type;
-+
-+ dev->last_rx = jiffies;
-+ s->stats.rx_bytes += skb->len;
-+
-+ type = *(u8 *) skb->data; skb_pull(skb, 1);
-+
-+ if ((type & BNEP_TYPE_MASK) > BNEP_RX_TYPES)
-+ goto badframe;
-+
-+ if ((type & BNEP_TYPE_MASK) == BNEP_CONTROL) {
-+ bnep_rx_control(s, skb->data, skb->len);
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+
-+ skb->mac.raw = skb->data;
-+
-+ /* Verify and pull out header */
-+ if (!skb_pull(skb, __bnep_rx_hlen[type & BNEP_TYPE_MASK]))
-+ goto badframe;
-+
-+ s->eh.h_proto = get_unaligned((u16 *) (skb->data - 2));
-+
-+ if (type & BNEP_EXT_HEADER) {
-+ if (bnep_rx_extension(s, skb) < 0)
-+ goto badframe;
-+ }
-+
-+ /* Strip 802.1p header */
-+ if (ntohs(s->eh.h_proto) == 0x8100) {
-+ if (!skb_pull(skb, 4))
-+ goto badframe;
-+ s->eh.h_proto = get_unaligned((u16 *) (skb->data - 2));
-+ }
-+
-+ /* We have to alloc new skb and copy data here :(. Because original skb
-+ * may not be modified and because of the alignment requirements. */
-+ nskb = alloc_skb(2 + ETH_HLEN + skb->len, GFP_KERNEL);
-+ if (!nskb) {
-+ s->stats.rx_dropped++;
-+ kfree_skb(skb);
-+ return -ENOMEM;
-+ }
-+ skb_reserve(nskb, 2);
-+
-+ /* Decompress header and construct ether frame */
-+ switch (type & BNEP_TYPE_MASK) {
-+ case BNEP_COMPRESSED:
-+ memcpy(__skb_put(nskb, ETH_HLEN), &s->eh, ETH_HLEN);
-+ break;
-+
-+ case BNEP_COMPRESSED_SRC_ONLY:
-+ memcpy(__skb_put(nskb, ETH_ALEN), s->eh.h_dest, ETH_ALEN);
-+ memcpy(__skb_put(nskb, ETH_ALEN), skb->mac.raw, ETH_ALEN);
-+ put_unaligned(s->eh.h_proto, (u16 *) __skb_put(nskb, 2));
-+ break;
-+
-+ case BNEP_COMPRESSED_DST_ONLY:
-+ memcpy(__skb_put(nskb, ETH_ALEN), skb->mac.raw, ETH_ALEN);
-+ memcpy(__skb_put(nskb, ETH_ALEN + 2), s->eh.h_source, ETH_ALEN + 2);
-+ break;
-+
-+ case BNEP_GENERAL:
-+ memcpy(__skb_put(nskb, ETH_ALEN * 2), skb->mac.raw, ETH_ALEN * 2);
-+ put_unaligned(s->eh.h_proto, (u16 *) __skb_put(nskb, 2));
-+ break;
-+ }
-+
-+ memcpy(__skb_put(nskb, skb->len), skb->data, skb->len);
-+ kfree_skb(skb);
-+
-+ s->stats.rx_packets++;
-+ nskb->dev = dev;
-+ nskb->ip_summed = CHECKSUM_UNNECESSARY;
-+ nskb->protocol = eth_type_trans(nskb, dev);
-+ netif_rx_ni(nskb);
-+ return 0;
-+
-+badframe:
-+ s->stats.rx_errors++;
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static u8 __bnep_tx_types[] = {
-+ BNEP_GENERAL,
-+ BNEP_COMPRESSED_SRC_ONLY,
-+ BNEP_COMPRESSED_DST_ONLY,
-+ BNEP_COMPRESSED
-+};
-+
-+static inline int bnep_tx_frame(struct bnep_session *s, struct sk_buff *skb)
-+{
-+ struct ethhdr *eh = (void *) skb->data;
-+ struct socket *sock = s->sock;
-+ struct iovec iv[3];
-+ int len = 0, il = 0;
-+ u8 type = 0;
-+
-+ BT_DBG("skb %p dev %p type %d", skb, skb->dev, skb->pkt_type);
-+
-+ if (!skb->dev) {
-+ /* Control frame sent by us */
-+ goto send;
-+ }
-+
-+ iv[il++] = (struct iovec) { &type, 1 };
-+ len++;
-+
-+ if (!memcmp(eh->h_dest, s->eh.h_source, ETH_ALEN))
-+ type |= 0x01;
-+
-+ if (!memcmp(eh->h_source, s->eh.h_dest, ETH_ALEN))
-+ type |= 0x02;
-+
-+ if (type)
-+ skb_pull(skb, ETH_ALEN * 2);
-+
-+ type = __bnep_tx_types[type];
-+ switch (type) {
-+ case BNEP_COMPRESSED_SRC_ONLY:
-+ iv[il++] = (struct iovec) { eh->h_source, ETH_ALEN };
-+ len += ETH_ALEN;
-+ break;
-+
-+ case BNEP_COMPRESSED_DST_ONLY:
-+ iv[il++] = (struct iovec) { eh->h_dest, ETH_ALEN };
-+ len += ETH_ALEN;
-+ break;
-+ }
-+
-+send:
-+ iv[il++] = (struct iovec) { skb->data, skb->len };
-+ len += skb->len;
-+
-+ /* FIXME: linearize skb */
-+
-+ s->msg.msg_iov = iv;
-+ s->msg.msg_iovlen = il;
-+ len = sock->ops->sendmsg(sock, &s->msg, len, NULL);
-+ kfree_skb(skb);
-+
-+ if (len > 0) {
-+ s->stats.tx_bytes += len;
-+ s->stats.tx_packets++;
-+ return 0;
-+ }
-+
-+ return len;
-+}
-+
-+static int bnep_session(void *arg)
-+{
-+ struct bnep_session *s = arg;
-+ struct net_device *dev = &s->dev;
-+ struct sock *sk = s->sock->sk;
-+ struct sk_buff *skb;
-+ wait_queue_t wait;
-+
-+ BT_DBG("");
-+
-+ daemonize(); reparent_to_init();
-+
-+ sprintf(current->comm, "kbnepd %s", dev->name);
-+
-+ sigfillset(&current->blocked);
-+ flush_signals(current);
-+
-+ current->nice = -15;
-+
-+ set_fs(KERNEL_DS);
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(sk->sleep, &wait);
-+ while (!atomic_read(&s->killed)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ // RX
-+ while ((skb = skb_dequeue(&sk->receive_queue))) {
-+ skb_orphan(skb);
-+ bnep_rx_frame(s, skb);
-+ }
-+
-+ if (sk->state != BT_CONNECTED)
-+ break;
-+
-+ // TX
-+ while ((skb = skb_dequeue(&sk->write_queue)))
-+ if (bnep_tx_frame(s, skb))
-+ break;
-+ netif_wake_queue(dev);
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ /* Cleanup session */
-+ down_write(&bnep_session_sem);
-+
-+ /* Delete network device */
-+ unregister_netdev(dev);
-+
-+ /* Release the socket */
-+ fput(s->sock->file);
-+
-+ __bnep_unlink_session(s);
-+
-+ up_write(&bnep_session_sem);
-+ kfree(s);
-+ return 0;
-+}
-+
-+int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock)
-+{
-+ struct net_device *dev;
-+ struct bnep_session *s, *ss;
-+ u8 dst[ETH_ALEN], src[ETH_ALEN];
-+ int err;
-+
-+ BT_DBG("");
-+
-+ baswap((void *) dst, &bluez_pi(sock->sk)->dst);
-+ baswap((void *) src, &bluez_pi(sock->sk)->src);
-+
-+ s = kmalloc(sizeof(struct bnep_session), GFP_KERNEL);
-+ if (!s)
-+ return -ENOMEM;
-+ memset(s, 0, sizeof(struct bnep_session));
-+
-+ down_write(&bnep_session_sem);
-+
-+ ss = __bnep_get_session(dst);
-+ if (ss && ss->state == BT_CONNECTED) {
-+ err = -EEXIST;
-+ goto failed;
-+ }
-+
-+ dev = &s->dev;
-+
-+ if (*req->device)
-+ strcpy(dev->name, req->device);
-+ else
-+ strcpy(dev->name, "bnep%d");
-+
-+ memset(dev->broadcast, 0xff, ETH_ALEN);
-+
-+ /* This is rx header therefor addresses are swaped.
-+ * ie eh.h_dest is our local address. */
-+ memcpy(s->eh.h_dest, &src, ETH_ALEN);
-+ memcpy(s->eh.h_source, &dst, ETH_ALEN);
-+
-+ s->sock = sock;
-+ s->role = req->role;
-+ s->state = BT_CONNECTED;
-+
-+ s->msg.msg_flags = MSG_NOSIGNAL;
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ /* Set default mc filter */
-+ set_bit(bnep_mc_hash(dev->broadcast), &s->mc_filter);
-+#endif
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ /* Set default protocol filter */
-+
-+ /* (IPv4, ARP) */
-+ s->proto_filter[0].start = htons(0x0800);
-+ s->proto_filter[0].end = htons(0x0806);
-+ /* (RARP, AppleTalk) */
-+ s->proto_filter[1].start = htons(0x8035);
-+ s->proto_filter[1].end = htons(0x80F3);
-+ /* (IPX, IPv6) */
-+ s->proto_filter[2].start = htons(0x8137);
-+ s->proto_filter[2].end = htons(0x86DD);
-+#endif
-+
-+ dev->init = bnep_net_init;
-+ dev->priv = s;
-+ err = register_netdev(dev);
-+ if (err) {
-+ goto failed;
-+ }
-+
-+ __bnep_link_session(s);
-+
-+ err = kernel_thread(bnep_session, s, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+ if (err < 0) {
-+ /* Session thread start failed, gotta cleanup. */
-+ unregister_netdev(dev);
-+ __bnep_unlink_session(s);
-+ goto failed;
-+ }
-+
-+ up_write(&bnep_session_sem);
-+ strcpy(req->device, dev->name);
-+ return 0;
-+
-+failed:
-+ up_write(&bnep_session_sem);
-+ kfree(s);
-+ return err;
-+}
-+
-+int bnep_del_connection(struct bnep_conndel_req *req)
-+{
-+ struct bnep_session *s;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&bnep_session_sem);
-+
-+ s = __bnep_get_session(req->dst);
-+ if (s) {
-+ /* Wakeup user-space which is polling for socket errors.
-+ * This is temporary hack untill we have shutdown in L2CAP */
-+ s->sock->sk->err = EUNATCH;
-+
-+ /* Kill session thread */
-+ atomic_inc(&s->killed);
-+ wake_up_interruptible(s->sock->sk->sleep);
-+ } else
-+ err = -ENOENT;
-+
-+ up_read(&bnep_session_sem);
-+ return err;
-+}
-+
-+static void __bnep_copy_ci(struct bnep_conninfo *ci, struct bnep_session *s)
-+{
-+ memcpy(ci->dst, s->eh.h_source, ETH_ALEN);
-+ strcpy(ci->device, s->dev.name);
-+ ci->flags = s->flags;
-+ ci->state = s->state;
-+ ci->role = s->role;
-+}
-+
-+int bnep_get_connlist(struct bnep_connlist_req *req)
-+{
-+ struct list_head *p;
-+ int err = 0, n = 0;
-+
-+ down_read(&bnep_session_sem);
-+
-+ list_for_each(p, &bnep_session_list) {
-+ struct bnep_session *s;
-+ struct bnep_conninfo ci;
-+
-+ s = list_entry(p, struct bnep_session, list);
-+
-+ __bnep_copy_ci(&ci, s);
-+
-+ if (copy_to_user(req->ci, &ci, sizeof(ci))) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (++n >= req->cnum)
-+ break;
-+
-+ req->ci++;
-+ }
-+ req->cnum = n;
-+
-+ up_read(&bnep_session_sem);
-+ return err;
-+}
-+
-+int bnep_get_conninfo(struct bnep_conninfo *ci)
-+{
-+ struct bnep_session *s;
-+ int err = 0;
-+
-+ down_read(&bnep_session_sem);
-+
-+ s = __bnep_get_session(ci->dst);
-+ if (s)
-+ __bnep_copy_ci(ci, s);
-+ else
-+ err = -ENOENT;
-+
-+ up_read(&bnep_session_sem);
-+ return err;
-+}
-+
-+static int __init bnep_init_module(void)
-+{
-+ l2cap_load();
-+
-+ bnep_crc32_init();
-+ bnep_sock_init();
-+
-+ BT_INFO("BlueZ BNEP ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2001,2002 Inventel Systemes");
-+ BT_INFO("Written 2001,2002 by Clement Moreau <clement.moreau@inventel.fr>");
-+ BT_INFO("Written 2001,2002 by David Libault <david.libault@inventel.fr>");
-+ BT_INFO("Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>");
-+
-+ return 0;
-+}
-+
-+static void __exit bnep_cleanup_module(void)
-+{
-+ bnep_sock_cleanup();
-+ bnep_crc32_cleanup();
-+}
-+
-+module_init(bnep_init_module);
-+module_exit(bnep_cleanup_module);
-+
-+MODULE_DESCRIPTION("BlueZ BNEP ver " VERSION);
-+MODULE_AUTHOR("David Libault <david.libault@inventel.fr>, Maxim Krasnyanskiy <maxk@qualcomm.com>");
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/bnep/crc32.c linux-2.4.18-mh9/net/bluetooth/bnep/crc32.c
---- linux-2.4.18/net/bluetooth/bnep/crc32.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/bnep/crc32.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,59 @@
-+/*
-+ * Based on linux-2.5/lib/crc32 by Matt Domsch <Matt_Domsch@dell.com>
-+ *
-+ * FIXME: Remove in 2.5
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/slab.h>
-+#include <linux/init.h>
-+#include <asm/atomic.h>
-+
-+#include "crc32.h"
-+
-+#define CRCPOLY_BE 0x04c11db7
-+#define CRC_BE_BITS 8
-+
-+static u32 *bnep_crc32_table;
-+
-+/*
-+ * This code is in the public domain; copyright abandoned.
-+ * Liability for non-performance of this code is limited to the amount
-+ * you paid for it. Since it is distributed for free, your refund will
-+ * be very very small. If it breaks, you get to keep both pieces.
-+ */
-+u32 bnep_crc32(u32 crc, unsigned char const *p, size_t len)
-+{
-+ while (len--)
-+ crc = (crc << 8) ^ bnep_crc32_table[(crc >> 24) ^ *p++];
-+
-+ return crc;
-+}
-+
-+int __init bnep_crc32_init(void)
-+{
-+ unsigned i, j;
-+ u32 crc = 0x80000000;
-+
-+ bnep_crc32_table = kmalloc((1 << CRC_BE_BITS) * sizeof(u32), GFP_KERNEL);
-+ if (!bnep_crc32_table)
-+ return -ENOMEM;
-+
-+ bnep_crc32_table[0] = 0;
-+
-+ for (i = 1; i < 1 << CRC_BE_BITS; i <<= 1) {
-+ crc = (crc << 1) ^ ((crc & 0x80000000) ? CRCPOLY_BE : 0);
-+ for (j = 0; j < i; j++)
-+ bnep_crc32_table[i + j] = crc ^ bnep_crc32_table[j];
-+ }
-+ return 0;
-+}
-+
-+void __exit bnep_crc32_cleanup(void)
-+{
-+ if (bnep_crc32_table)
-+ kfree(bnep_crc32_table);
-+ bnep_crc32_table = NULL;
-+}
-diff -urN linux-2.4.18/net/bluetooth/bnep/crc32.h linux-2.4.18-mh9/net/bluetooth/bnep/crc32.h
---- linux-2.4.18/net/bluetooth/bnep/crc32.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/bnep/crc32.h Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,10 @@
-+/*
-+ * crc32.h
-+ * See crc32.c for license and changes
-+ *
-+ * FIXME: Remove in 2.5
-+ */
-+
-+int bnep_crc32_init(void);
-+void bnep_crc32_cleanup(void);
-+u32 bnep_crc32(u32 crc, unsigned char const *p, size_t len);
-diff -urN linux-2.4.18/net/bluetooth/bnep/netdev.c linux-2.4.18-mh9/net/bluetooth/bnep/netdev.c
---- linux-2.4.18/net/bluetooth/bnep/netdev.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/bnep/netdev.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,254 @@
-+/*
-+ BNEP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2001-2002 Inventel Systemes
-+ Written 2001-2002 by
-+ Clément Moreau <clement.moreau@inventel.fr>
-+ David Libault <david.libault@inventel.fr>
-+
-+ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: netdev.c,v 1.7 2002/07/14 05:39:26 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/socket.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/skbuff.h>
-+#include <linux/wait.h>
-+
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "bnep.h"
-+
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+#define BNEP_TX_QUEUE_LEN 20
-+
-+static int bnep_net_open(struct net_device *dev)
-+{
-+ netif_start_queue(dev);
-+ return 0;
-+}
-+
-+static int bnep_net_close(struct net_device *dev)
-+{
-+ netif_stop_queue(dev);
-+ return 0;
-+}
-+
-+static struct net_device_stats *bnep_net_get_stats(struct net_device *dev)
-+{
-+ struct bnep_session *s = dev->priv;
-+ return &s->stats;
-+}
-+
-+static void bnep_net_set_mc_list(struct net_device *dev)
-+{
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ struct bnep_session *s = dev->priv;
-+ struct sock *sk = s->sock->sk;
-+ struct bnep_set_filter_req *r;
-+ struct sk_buff *skb;
-+ int size;
-+
-+ BT_DBG("%s mc_count %d", dev->name, dev->mc_count);
-+
-+ size = sizeof(*r) + (BNEP_MAX_MULTICAST_FILTERS + 1) * ETH_ALEN * 2;
-+ skb = alloc_skb(size, GFP_ATOMIC);
-+ if (!skb) {
-+ BT_ERR("%s Multicast list allocation failed", dev->name);
-+ return;
-+ }
-+
-+ r = (void *) skb->data;
-+ __skb_put(skb, sizeof(*r));
-+
-+ r->type = BNEP_CONTROL;
-+ r->ctrl = BNEP_FILTER_MULTI_ADDR_SET;
-+
-+ if (dev->flags & (IFF_PROMISC | IFF_ALLMULTI)) {
-+ u8 start[ETH_ALEN] = { 0x01 };
-+
-+ /* Request all addresses */
-+ memcpy(__skb_put(skb, ETH_ALEN), start, ETH_ALEN);
-+ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
-+ r->len = htons(ETH_ALEN * 2);
-+ } else {
-+ struct dev_mc_list *dmi = dev->mc_list;
-+ int i, len = skb->len;
-+
-+ if (dev->flags & IFF_BROADCAST) {
-+ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
-+ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
-+ }
-+
-+ /* FIXME: We should group addresses here. */
-+
-+ for (i = 0; i < dev->mc_count && i < BNEP_MAX_MULTICAST_FILTERS; i++) {
-+ memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN);
-+ memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN);
-+ dmi = dmi->next;
-+ }
-+ r->len = htons(skb->len - len);
-+ }
-+
-+ skb_queue_tail(&sk->write_queue, skb);
-+ wake_up_interruptible(sk->sleep);
-+#endif
-+}
-+
-+static int bnep_net_set_mac_addr(struct net_device *dev, void *arg)
-+{
-+ BT_DBG("%s", dev->name);
-+ return 0;
-+}
-+
-+static void bnep_net_timeout(struct net_device *dev)
-+{
-+ BT_DBG("net_timeout");
-+ netif_wake_queue(dev);
-+}
-+
-+static int bnep_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-+{
-+ return -EINVAL;
-+}
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+static inline int bnep_net_mc_filter(struct sk_buff *skb, struct bnep_session *s)
-+{
-+ struct ethhdr *eh = (void *) skb->data;
-+
-+ if ((eh->h_dest[0] & 1) && !test_bit(bnep_mc_hash(eh->h_dest), &s->mc_filter)) {
-+ BT_DBG("BNEP: filtered skb %p, dst %.2x:%.2x:%.2x:%.2x:%.2x:%.2x", skb,
-+ eh->h_dest[0], eh->h_dest[1], eh->h_dest[2],
-+ eh->h_dest[3], eh->h_dest[4], eh->h_dest[5]);
-+ return 1;
-+ }
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+/* Determine ether protocol. Based on eth_type_trans. */
-+static inline u16 bnep_net_eth_proto(struct sk_buff *skb)
-+{
-+ struct ethhdr *eh = (void *) skb->data;
-+
-+ if (ntohs(eh->h_proto) >= 1536)
-+ return eh->h_proto;
-+
-+ if (get_unaligned((u16 *) skb->data) == 0xFFFF)
-+ return htons(ETH_P_802_3);
-+
-+ return htons(ETH_P_802_2);
-+}
-+
-+static inline int bnep_net_proto_filter(struct sk_buff *skb, struct bnep_session *s)
-+{
-+ u16 proto = bnep_net_eth_proto(skb);
-+ struct bnep_proto_filter *f = s->proto_filter;
-+ int i;
-+
-+ for (i = 0; i < BNEP_MAX_PROTO_FILTERS && f[i].end; i++) {
-+ if (proto >= f[i].start && proto <= f[i].end)
-+ return 0;
-+ }
-+
-+ BT_DBG("BNEP: filtered skb %p, proto 0x%.4x", skb, proto);
-+ return 1;
-+}
-+#endif
-+
-+static int bnep_net_xmit(struct sk_buff *skb, struct net_device *dev)
-+{
-+ struct bnep_session *s = dev->priv;
-+ struct sock *sk = s->sock->sk;
-+
-+ BT_DBG("skb %p, dev %p", skb, dev);
-+
-+#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER
-+ if (bnep_net_mc_filter(skb, s)) {
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+#endif
-+
-+#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER
-+ if (bnep_net_proto_filter(skb, s)) {
-+ kfree_skb(skb);
-+ return 0;
-+ }
-+#endif
-+
-+ /*
-+ * We cannot send L2CAP packets from here as we are potentially in a bh.
-+ * So we have to queue them and wake up session thread which is sleeping
-+ * on the sk->sleep.
-+ */
-+ dev->trans_start = jiffies;
-+ skb_queue_tail(&sk->write_queue, skb);
-+ wake_up_interruptible(sk->sleep);
-+
-+ if (skb_queue_len(&sk->write_queue) >= BNEP_TX_QUEUE_LEN) {
-+ BT_DBG("tx queue is full");
-+
-+ /* Stop queuing.
-+ * Session thread will do netif_wake_queue() */
-+ netif_stop_queue(dev);
-+ }
-+
-+ return 0;
-+}
-+
-+int bnep_net_init(struct net_device *dev)
-+{
-+ struct bnep_session *s = dev->priv;
-+
-+ memcpy(dev->dev_addr, s->eh.h_dest, ETH_ALEN);
-+ dev->addr_len = ETH_ALEN;
-+
-+ ether_setup(dev);
-+
-+ dev->open = bnep_net_open;
-+ dev->stop = bnep_net_close;
-+ dev->hard_start_xmit = bnep_net_xmit;
-+ dev->get_stats = bnep_net_get_stats;
-+ dev->do_ioctl = bnep_net_ioctl;
-+ dev->set_mac_address = bnep_net_set_mac_addr;
-+ dev->set_multicast_list = bnep_net_set_mc_list;
-+
-+ dev->watchdog_timeo = HZ * 2;
-+ dev->tx_timeout = bnep_net_timeout;
-+
-+ return 0;
-+}
-diff -urN linux-2.4.18/net/bluetooth/bnep/sock.c linux-2.4.18-mh9/net/bluetooth/bnep/sock.c
---- linux-2.4.18/net/bluetooth/bnep/sock.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/bnep/sock.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,238 @@
-+/*
-+ BNEP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2001-2002 Inventel Systemes
-+ Written 2001-2002 by
-+ David Libault <david.libault@inventel.fr>
-+
-+ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * $Id: sock.c,v 1.3 2002/07/10 22:59:52 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include "bnep.h"
-+
-+#ifndef CONFIG_BLUEZ_BNEP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+static inline struct socket *socki_lookup(struct inode *inode)
-+{
-+ return &inode->u.socket_i;
-+}
-+
-+static struct socket *sockfd_lookup(int fd, int *err)
-+{
-+ struct file *file;
-+ struct inode *inode;
-+ struct socket *sock;
-+
-+ if (!(file = fget(fd))) {
-+ *err = -EBADF;
-+ return NULL;
-+ }
-+
-+ inode = file->f_dentry->d_inode;
-+ if (!inode->i_sock || !(sock = socki_lookup(inode))) {
-+ *err = -ENOTSOCK;
-+ fput(file);
-+ return NULL;
-+ }
-+
-+ if (sock->file != file) {
-+ printk(KERN_ERR "socki_lookup: socket file changed!\n");
-+ sock->file = file;
-+ }
-+ return sock;
-+}
-+
-+static int bnep_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sock_orphan(sk);
-+ sock_put(sk);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int bnep_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct bnep_connlist_req cl;
-+ struct bnep_connadd_req ca;
-+ struct bnep_conndel_req cd;
-+ struct bnep_conninfo ci;
-+ struct socket *nsock;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
-+ case BNEPCONNADD:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&ca, (void *) arg, sizeof(ca)))
-+ return -EFAULT;
-+
-+ nsock = sockfd_lookup(ca.sock, &err);
-+ if (!nsock)
-+ return err;
-+
-+ if (nsock->sk->state != BT_CONNECTED)
-+ return -EBADFD;
-+
-+ err = bnep_add_connection(&ca, nsock);
-+ if (!err) {
-+ if (copy_to_user((void *) arg, &ca, sizeof(ca)))
-+ err = -EFAULT;
-+ } else
-+ fput(nsock->file);
-+
-+ return err;
-+
-+ case BNEPCONNDEL:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&cd, (void *) arg, sizeof(cd)))
-+ return -EFAULT;
-+
-+ return bnep_del_connection(&cd);
-+
-+ case BNEPGETCONNLIST:
-+ if (copy_from_user(&cl, (void *) arg, sizeof(cl)))
-+ return -EFAULT;
-+
-+ if (cl.cnum <= 0)
-+ return -EINVAL;
-+
-+ err = bnep_get_connlist(&cl);
-+ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ case BNEPGETCONNINFO:
-+ if (copy_from_user(&ci, (void *) arg, sizeof(ci)))
-+ return -EFAULT;
-+
-+ err = bnep_get_conninfo(&ci);
-+ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static struct proto_ops bnep_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: bnep_sock_release,
-+ ioctl: bnep_sock_ioctl,
-+ bind: sock_no_bind,
-+ getname: sock_no_getname,
-+ sendmsg: sock_no_sendmsg,
-+ recvmsg: sock_no_recvmsg,
-+ poll: sock_no_poll,
-+ listen: sock_no_listen,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sock_no_setsockopt,
-+ getsockopt: sock_no_getsockopt,
-+ connect: sock_no_connect,
-+ socketpair: sock_no_socketpair,
-+ accept: sock_no_accept,
-+ mmap: sock_no_mmap
-+};
-+
-+static int bnep_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ if (sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &bnep_sock_ops;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1)))
-+ return -ENOMEM;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ sock->state = SS_UNCONNECTED;
-+ sock_init_data(sock, sk);
-+
-+ sk->destruct = NULL;
-+ sk->protocol = protocol;
-+
-+ return 0;
-+}
-+
-+static struct net_proto_family bnep_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: bnep_sock_create
-+};
-+
-+int bnep_sock_init(void)
-+{
-+ bluez_sock_register(BTPROTO_BNEP, &bnep_sock_family_ops);
-+ return 0;
-+}
-+
-+int bnep_sock_cleanup(void)
-+{
-+ if (bluez_sock_unregister(BTPROTO_BNEP))
-+ BT_ERR("Can't unregister BNEP socket");
-+ return 0;
-+}
-diff -urN linux-2.4.18/net/bluetooth/cmtp/Config.in linux-2.4.18-mh9/net/bluetooth/cmtp/Config.in
---- linux-2.4.18/net/bluetooth/cmtp/Config.in Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/cmtp/Config.in Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,7 @@
-+#
-+# Bluetooth CMTP layer configuration
-+#
-+
-+if [ "$CONFIG_ISDN" = "y" -o "$CONFIG_ISDN" = "m" ]; then
-+ dep_tristate 'CMTP protocol support' CONFIG_BLUEZ_CMTP $CONFIG_ISDN_CAPI $CONFIG_BLUEZ_L2CAP
-+fi
-diff -urN linux-2.4.18/net/bluetooth/cmtp/Makefile linux-2.4.18-mh9/net/bluetooth/cmtp/Makefile
---- linux-2.4.18/net/bluetooth/cmtp/Makefile Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/cmtp/Makefile Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,10 @@
-+#
-+# Makefile for the Linux Bluetooth CMTP layer
-+#
-+
-+O_TARGET := cmtp.o
-+
-+obj-y := core.o sock.o capi.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.18/net/bluetooth/cmtp/capi.c linux-2.4.18-mh9/net/bluetooth/cmtp/capi.c
---- linux-2.4.18/net/bluetooth/cmtp/capi.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/cmtp/capi.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,707 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <net/sock.h>
-+
-+#include <linux/capi.h>
-+
-+#include "../drivers/isdn/avmb1/capilli.h"
-+#include "../drivers/isdn/avmb1/capicmd.h"
-+#include "../drivers/isdn/avmb1/capiutil.h"
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define REVISION "1.0"
-+
-+#define CAPI_INTEROPERABILITY 0x20
-+
-+#define CAPI_INTEROPERABILITY_REQ CAPICMD(CAPI_INTEROPERABILITY, CAPI_REQ)
-+#define CAPI_INTEROPERABILITY_CONF CAPICMD(CAPI_INTEROPERABILITY, CAPI_CONF)
-+#define CAPI_INTEROPERABILITY_IND CAPICMD(CAPI_INTEROPERABILITY, CAPI_IND)
-+#define CAPI_INTEROPERABILITY_RESP CAPICMD(CAPI_INTEROPERABILITY, CAPI_RESP)
-+
-+#define CAPI_INTEROPERABILITY_REQ_LEN (CAPI_MSG_BASELEN + 2)
-+#define CAPI_INTEROPERABILITY_CONF_LEN (CAPI_MSG_BASELEN + 4)
-+#define CAPI_INTEROPERABILITY_IND_LEN (CAPI_MSG_BASELEN + 2)
-+#define CAPI_INTEROPERABILITY_RESP_LEN (CAPI_MSG_BASELEN + 2)
-+
-+#define CAPI_FUNCTION_REGISTER 0
-+#define CAPI_FUNCTION_RELEASE 1
-+#define CAPI_FUNCTION_GET_PROFILE 2
-+#define CAPI_FUNCTION_GET_MANUFACTURER 3
-+#define CAPI_FUNCTION_GET_VERSION 4
-+#define CAPI_FUNCTION_GET_SERIAL_NUMBER 5
-+#define CAPI_FUNCTION_MANUFACTURER 6
-+#define CAPI_FUNCTION_LOOPBACK 7
-+
-+static struct capi_driver_interface *di;
-+
-+
-+#define CMTP_MSGNUM 1
-+#define CMTP_APPLID 2
-+#define CMTP_MAPPING 3
-+
-+static struct cmtp_application *cmtp_application_add(struct cmtp_session *session, __u16 appl)
-+{
-+ struct cmtp_application *app = kmalloc(sizeof(*app), GFP_KERNEL);
-+
-+ BT_DBG("session %p application %p appl %d", session, app, appl);
-+
-+ if (!app)
-+ return NULL;
-+
-+ memset(app, 0, sizeof(*app));
-+
-+ app->state = BT_OPEN;
-+ app->appl = appl;
-+
-+ list_add_tail(&app->list, &session->applications);
-+
-+ return app;
-+}
-+
-+static void cmtp_application_del(struct cmtp_session *session, struct cmtp_application *app)
-+{
-+ BT_DBG("session %p application %p", session, app);
-+
-+ if (app) {
-+ list_del(&app->list);
-+ kfree(app);
-+ }
-+}
-+
-+static struct cmtp_application *cmtp_application_get(struct cmtp_session *session, int pattern, __u16 value)
-+{
-+ struct cmtp_application *app;
-+ struct list_head *p, *n;
-+
-+ list_for_each_safe(p, n, &session->applications) {
-+ app = list_entry(p, struct cmtp_application, list);
-+ switch (pattern) {
-+ case CMTP_MSGNUM:
-+ if (app->msgnum == value)
-+ return app;
-+ break;
-+ case CMTP_APPLID:
-+ if (app->appl == value)
-+ return app;
-+ break;
-+ case CMTP_MAPPING:
-+ if (app->mapping == value)
-+ return app;
-+ break;
-+ }
-+ }
-+
-+ return NULL;
-+}
-+
-+static int cmtp_msgnum_get(struct cmtp_session *session)
-+{
-+ session->msgnum++;
-+
-+ if ((session->msgnum & 0xff) > 200)
-+ session->msgnum = CMTP_INITIAL_MSGNUM + 1;
-+
-+ return session->msgnum;
-+}
-+
-+
-+static void cmtp_send_interopmsg(struct cmtp_session *session,
-+ __u8 subcmd, __u16 appl, __u16 msgnum,
-+ __u16 function, unsigned char *buf, int len)
-+{
-+ struct sk_buff *skb;
-+ unsigned char *s;
-+
-+ BT_DBG("session %p subcmd 0x%02x appl %d msgnum %d", session, subcmd, appl, msgnum);
-+
-+ if (!(skb = alloc_skb(CAPI_MSG_BASELEN + 6 + len, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for interoperability packet");
-+ return;
-+ }
-+
-+ s = skb_put(skb, CAPI_MSG_BASELEN + 6 + len);
-+
-+ capimsg_setu16(s, 0, CAPI_MSG_BASELEN + 6 + len);
-+ capimsg_setu16(s, 2, appl);
-+ capimsg_setu8 (s, 4, CAPI_INTEROPERABILITY);
-+ capimsg_setu8 (s, 5, subcmd);
-+ capimsg_setu16(s, 6, msgnum);
-+
-+ /* Interoperability selector (Bluetooth Device Management) */
-+ capimsg_setu16(s, 8, 0x0001);
-+
-+ capimsg_setu8 (s, 10, 3 + len);
-+ capimsg_setu16(s, 11, function);
-+ capimsg_setu8 (s, 13, len);
-+
-+ if (len > 0)
-+ memcpy(s + 14, buf, len);
-+
-+ cmtp_send_capimsg(session, skb);
-+}
-+
-+static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+ struct cmtp_application *application;
-+ __u16 appl, msgnum, func, info;
-+ __u32 controller;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ switch (CAPIMSG_SUBCOMMAND(skb->data)) {
-+ case CAPI_CONF:
-+ func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 5);
-+ info = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 8);
-+
-+ switch (func) {
-+ case CAPI_FUNCTION_REGISTER:
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MSGNUM, msgnum);
-+ if (application) {
-+ application->state = BT_CONNECTED;
-+ application->msgnum = 0;
-+ application->mapping = CAPIMSG_APPID(skb->data);
-+ wake_up_interruptible(&session->wait);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_RELEASE:
-+ appl = CAPIMSG_APPID(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MAPPING, appl);
-+ if (application) {
-+ application->state = BT_CLOSED;
-+ application->msgnum = 0;
-+ wake_up_interruptible(&session->wait);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_PROFILE:
-+ controller = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 11);
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+
-+ if (!info && (msgnum == CMTP_INITIAL_MSGNUM)) {
-+ session->ncontroller = controller;
-+ wake_up_interruptible(&session->wait);
-+ break;
-+ }
-+
-+ if (!info && ctrl) {
-+ memcpy(&ctrl->profile,
-+ skb->data + CAPI_MSG_BASELEN + 11,
-+ sizeof(capi_profile));
-+ session->state = BT_CONNECTED;
-+ ctrl->ready(ctrl);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_MANUFACTURER:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 10);
-+
-+ if (!info && ctrl) {
-+ strncpy(ctrl->manu,
-+ skb->data + CAPI_MSG_BASELEN + 15,
-+ skb->data[CAPI_MSG_BASELEN + 14]);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_VERSION:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12);
-+
-+ if (!info && ctrl) {
-+ ctrl->version.majorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 16);
-+ ctrl->version.minorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 20);
-+ ctrl->version.majormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 24);
-+ ctrl->version.minormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 28);
-+ }
-+
-+ break;
-+
-+ case CAPI_FUNCTION_GET_SERIAL_NUMBER:
-+ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12);
-+
-+ if (!info && ctrl) {
-+ memset(ctrl->serial, 0, CAPI_SERIAL_LEN);
-+ strncpy(ctrl->serial,
-+ skb->data + CAPI_MSG_BASELEN + 17,
-+ skb->data[CAPI_MSG_BASELEN + 16]);
-+ }
-+
-+ break;
-+ }
-+
-+ break;
-+
-+ case CAPI_IND:
-+ func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 3);
-+
-+ if (func == CAPI_FUNCTION_LOOPBACK) {
-+ appl = CAPIMSG_APPID(skb->data);
-+ msgnum = CAPIMSG_MSGID(skb->data);
-+ cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func,
-+ skb->data + CAPI_MSG_BASELEN + 6,
-+ skb->data[CAPI_MSG_BASELEN + 5]);
-+ }
-+
-+ break;
-+ }
-+
-+ kfree_skb(skb);
-+}
-+
-+void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+ struct cmtp_application *application;
-+ __u16 cmd, appl, info;
-+ __u32 ncci, contr;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ if (CAPIMSG_COMMAND(skb->data) == CAPI_INTEROPERABILITY) {
-+ cmtp_recv_interopmsg(session, skb);
-+ return;
-+ }
-+
-+ if (session->flags & (1 << CMTP_LOOPBACK)) {
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ cmd = CAPICMD(CAPIMSG_COMMAND(skb->data), CAPIMSG_SUBCOMMAND(skb->data));
-+ appl = CAPIMSG_APPID(skb->data);
-+ contr = CAPIMSG_CONTROL(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_MAPPING, appl);
-+ if (application) {
-+ appl = application->appl;
-+ CAPIMSG_SETAPPID(skb->data, appl);
-+ } else {
-+ BT_ERR("Can't find application with id %d", appl);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ if ((contr & 0x7f) == 0x01) {
-+ contr = (contr & 0xffffff80) | session->num;
-+ CAPIMSG_SETCONTROL(skb->data, contr);
-+ }
-+
-+ if (!ctrl) {
-+ BT_ERR("Can't find controller %d for message", session->num);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ switch (cmd) {
-+ case CAPI_CONNECT_B3_CONF:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+ info = CAPIMSG_U16(skb->data, 12);
-+
-+ BT_DBG("CONNECT_B3_CONF ncci 0x%02x info 0x%02x", ncci, info);
-+
-+ if (info == 0)
-+ ctrl->new_ncci(ctrl, appl, ncci, 8);
-+
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+
-+ case CAPI_CONNECT_B3_IND:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+
-+ BT_DBG("CONNECT_B3_IND ncci 0x%02x", ncci);
-+
-+ ctrl->new_ncci(ctrl, appl, ncci, 8);
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+
-+ case CAPI_DISCONNECT_B3_IND:
-+ ncci = CAPIMSG_NCCI(skb->data);
-+
-+ BT_DBG("DISCONNECT_B3_IND ncci 0x%02x", ncci);
-+
-+ if (ncci == 0xffffffff)
-+ BT_ERR("DISCONNECT_B3_IND with ncci 0xffffffff");
-+
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ ctrl->free_ncci(ctrl, appl, ncci);
-+ break;
-+
-+ default:
-+ ctrl->handle_capimsg(ctrl, appl, skb);
-+ break;
-+ }
-+}
-+
-+void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ struct cmtp_scb *scb = (void *) skb->cb;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ scb->id = -1;
-+ scb->data = (CAPIMSG_COMMAND(skb->data) == CAPI_DATA_B3);
-+
-+ skb_queue_tail(&session->transmit, skb);
-+
-+ cmtp_schedule(session);
-+}
-+
-+
-+static int cmtp_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
-+{
-+ BT_DBG("ctrl %p data %p", ctrl, data);
-+
-+ return -EIO;
-+}
-+
-+static void cmtp_reset_ctr(struct capi_ctr *ctrl)
-+{
-+ BT_DBG("ctrl %p", ctrl);
-+
-+ ctrl->reseted(ctrl);
-+}
-+
-+static void cmtp_remove_ctr(struct capi_ctr *ctrl)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+
-+ BT_DBG("ctrl %p", ctrl);
-+
-+ ctrl->suspend_output(ctrl);
-+
-+ atomic_inc(&session->terminate);
-+ cmtp_schedule(session);
-+}
-+
-+static void cmtp_register_appl(struct capi_ctr *ctrl, __u16 appl, capi_register_params *rp)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+ unsigned char buf[8];
-+ int err = 0, nconn, want = rp->level3cnt;
-+
-+ BT_DBG("ctrl %p appl %d level3cnt %d datablkcnt %d datablklen %d",
-+ ctrl, appl, rp->level3cnt, rp->datablkcnt, rp->datablklen);
-+
-+ application = cmtp_application_add(session, appl);
-+ if (!application) {
-+ BT_ERR("Can't allocate memory for new application");
-+ ctrl->appl_released(ctrl, appl);
-+ return;
-+ }
-+
-+ if (want < 0)
-+ nconn = ctrl->profile.nbchannel * -want;
-+ else
-+ nconn = want;
-+
-+ if (nconn == 0)
-+ nconn = ctrl->profile.nbchannel;
-+
-+ capimsg_setu16(buf, 0, nconn);
-+ capimsg_setu16(buf, 2, rp->datablkcnt);
-+ capimsg_setu16(buf, 4, rp->datablklen);
-+
-+ application->state = BT_CONFIG;
-+ application->msgnum = cmtp_msgnum_get(session);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0x0000, application->msgnum,
-+ CAPI_FUNCTION_REGISTER, buf, 6);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (1) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ if (application->state == BT_CLOSED) {
-+ err = -application->err;
-+ break;
-+ }
-+
-+ if (application->state == BT_CONNECTED)
-+ break;
-+
-+ if (signal_pending(current)) {
-+ err = -EINTR;
-+ break;
-+ }
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ if (err) {
-+ ctrl->appl_released(ctrl, appl);
-+ cmtp_application_del(session, application);
-+ return;
-+ }
-+
-+ ctrl->appl_registered(ctrl, appl);
-+}
-+
-+static void cmtp_release_appl(struct capi_ctr *ctrl, __u16 appl)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+
-+ BT_DBG("ctrl %p appl %d", ctrl, appl);
-+
-+ application = cmtp_application_get(session, CMTP_APPLID, appl);
-+ if (!application) {
-+ BT_ERR("Can't find application");
-+ return;
-+ }
-+
-+ application->msgnum = cmtp_msgnum_get(session);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, application->mapping, application->msgnum,
-+ CAPI_FUNCTION_RELEASE, NULL, 0);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (timeo) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (application->state == BT_CLOSED)
-+ break;
-+
-+ if (signal_pending(current))
-+ break;
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ cmtp_application_del(session, application);
-+ ctrl->appl_released(ctrl, appl);
-+}
-+
-+static void cmtp_send_message(struct capi_ctr *ctrl, struct sk_buff *skb)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *application;
-+ __u16 appl;
-+ __u32 contr;
-+
-+ BT_DBG("ctrl %p skb %p", ctrl, skb);
-+
-+ appl = CAPIMSG_APPID(skb->data);
-+ contr = CAPIMSG_CONTROL(skb->data);
-+
-+ application = cmtp_application_get(session, CMTP_APPLID, appl);
-+ if ((!application) || (application->state != BT_CONNECTED)) {
-+ BT_ERR("Can't find application with id %d", appl);
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ CAPIMSG_SETAPPID(skb->data, application->mapping);
-+
-+ if ((contr & 0x7f) == session->num) {
-+ contr = (contr & 0xffffff80) | 0x01;
-+ CAPIMSG_SETCONTROL(skb->data, contr);
-+ }
-+
-+ cmtp_send_capimsg(session, skb);
-+}
-+
-+static char *cmtp_procinfo(struct capi_ctr *ctrl)
-+{
-+ return "CAPI Message Transport Protocol";
-+}
-+
-+static int cmtp_ctr_read_proc(char *page, char **start, off_t off, int count, int *eof, struct capi_ctr *ctrl)
-+{
-+ struct cmtp_session *session = ctrl->driverdata;
-+ struct cmtp_application *app;
-+ struct list_head *p, *n;
-+ int len = 0;
-+
-+ len += sprintf(page + len, "%s (Revision %s)\n\n", cmtp_procinfo(ctrl), REVISION);
-+ len += sprintf(page + len, "addr %s\n", session->name);
-+ len += sprintf(page + len, "ctrl %d\n", session->num);
-+
-+ list_for_each_safe(p, n, &session->applications) {
-+ app = list_entry(p, struct cmtp_application, list);
-+ len += sprintf(page + len, "appl %d -> %d\n", app->appl, app->mapping);
-+ }
-+
-+ if (off + count >= len)
-+ *eof = 1;
-+
-+ if (len < off)
-+ return 0;
-+
-+ *start = page + off;
-+
-+ return ((count < len - off) ? count : len - off);
-+}
-+
-+static struct capi_driver cmtp_driver = {
-+ name: "cmtp",
-+ revision: REVISION,
-+ load_firmware: cmtp_load_firmware,
-+ reset_ctr: cmtp_reset_ctr,
-+ remove_ctr: cmtp_remove_ctr,
-+ register_appl: cmtp_register_appl,
-+ release_appl: cmtp_release_appl,
-+ send_message: cmtp_send_message,
-+ procinfo: cmtp_procinfo,
-+ ctr_read_proc: cmtp_ctr_read_proc,
-+
-+ driver_read_proc: 0,
-+ add_card: 0,
-+};
-+
-+
-+int cmtp_attach_device(struct cmtp_session *session)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ unsigned long timeo = CMTP_INTEROP_TIMEOUT;
-+ unsigned char buf[4];
-+
-+ BT_DBG("session %p", session);
-+
-+ capimsg_setu32(buf, 0, 0);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, CMTP_INITIAL_MSGNUM,
-+ CAPI_FUNCTION_GET_PROFILE, buf, 4);
-+
-+ add_wait_queue(&session->wait, &wait);
-+ while (timeo) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (session->ncontroller)
-+ break;
-+
-+ if (signal_pending(current))
-+ break;
-+
-+ timeo = schedule_timeout(timeo);
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&session->wait, &wait);
-+
-+ BT_INFO("Found %d CAPI controller(s) on device %s", session->ncontroller, session->name);
-+
-+ if (!timeo)
-+ return -ETIMEDOUT;
-+
-+ if (!session->ncontroller)
-+ return -ENODEV;
-+
-+
-+ if (session->ncontroller > 1)
-+ BT_INFO("Setting up only CAPI controller 1");
-+
-+ if (!(session->ctrl = di->attach_ctr(&cmtp_driver, session->name, session))) {
-+ BT_ERR("Can't attach new controller");
-+ return -EBUSY;
-+ }
-+
-+ session->num = session->ctrl->cnr;
-+
-+ BT_DBG("session %p ctrl %p num %d", session, session->ctrl, session->num);
-+
-+ capimsg_setu32(buf, 0, 1);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_MANUFACTURER, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_VERSION, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_SERIAL_NUMBER, buf, 4);
-+
-+ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session),
-+ CAPI_FUNCTION_GET_PROFILE, buf, 4);
-+
-+ return 0;
-+}
-+
-+void cmtp_detach_device(struct cmtp_session *session)
-+{
-+ struct capi_ctr *ctrl = session->ctrl;
-+
-+ BT_DBG("session %p ctrl %p", session, ctrl);
-+
-+ if (!ctrl)
-+ return;
-+
-+ ctrl->reseted(ctrl);
-+
-+ di->detach_ctr(ctrl);
-+}
-+
-+int cmtp_init_capi(void)
-+{
-+ if (!(di = attach_capi_driver(&cmtp_driver))) {
-+ BT_ERR("Can't attach CAPI driver");
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+void cmtp_cleanup_capi(void)
-+{
-+ detach_capi_driver(&cmtp_driver);
-+}
-diff -urN linux-2.4.18/net/bluetooth/cmtp/cmtp.h linux-2.4.18-mh9/net/bluetooth/cmtp/cmtp.h
---- linux-2.4.18/net/bluetooth/cmtp/cmtp.h Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/cmtp/cmtp.h Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,138 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#ifndef __CMTP_H
-+#define __CMTP_H
-+
-+#include <linux/types.h>
-+#include <net/bluetooth/bluetooth.h>
-+
-+#define BTNAMSIZ 18
-+
-+/* CMTP ioctl defines */
-+#define CMTPCONNADD _IOW('C', 200, int)
-+#define CMTPCONNDEL _IOW('C', 201, int)
-+#define CMTPGETCONNLIST _IOR('C', 210, int)
-+#define CMTPGETCONNINFO _IOR('C', 211, int)
-+
-+#define CMTP_LOOPBACK 0
-+
-+struct cmtp_connadd_req {
-+ int sock; // Connected socket
-+ __u32 flags;
-+};
-+
-+struct cmtp_conndel_req {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+};
-+
-+struct cmtp_conninfo {
-+ bdaddr_t bdaddr;
-+ __u32 flags;
-+ __u16 state;
-+ int num;
-+};
-+
-+struct cmtp_connlist_req {
-+ __u32 cnum;
-+ struct cmtp_conninfo *ci;
-+};
-+
-+int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock);
-+int cmtp_del_connection(struct cmtp_conndel_req *req);
-+int cmtp_get_connlist(struct cmtp_connlist_req *req);
-+int cmtp_get_conninfo(struct cmtp_conninfo *ci);
-+
-+/* CMTP session defines */
-+#define CMTP_INTEROP_TIMEOUT (HZ * 5)
-+#define CMTP_INITIAL_MSGNUM 0xff00
-+
-+struct cmtp_session {
-+ struct list_head list;
-+
-+ struct socket *sock;
-+
-+ bdaddr_t bdaddr;
-+
-+ unsigned long state;
-+ unsigned long flags;
-+
-+ uint mtu;
-+
-+ char name[BTNAMSIZ];
-+
-+ atomic_t terminate;
-+
-+ wait_queue_head_t wait;
-+
-+ int ncontroller;
-+ int num;
-+ struct capi_ctr *ctrl;
-+
-+ struct list_head applications;
-+
-+ unsigned long blockids;
-+ int msgnum;
-+
-+ struct sk_buff_head transmit;
-+
-+ struct sk_buff *reassembly[16];
-+};
-+
-+struct cmtp_application {
-+ struct list_head list;
-+
-+ unsigned long state;
-+ int err;
-+
-+ __u16 appl;
-+ __u16 mapping;
-+
-+ __u16 msgnum;
-+};
-+
-+struct cmtp_scb {
-+ int id;
-+ int data;
-+};
-+
-+int cmtp_attach_device(struct cmtp_session *session);
-+void cmtp_detach_device(struct cmtp_session *session);
-+
-+void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb);
-+void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb);
-+
-+static inline void cmtp_schedule(struct cmtp_session *session)
-+{
-+ struct sock *sk = session->sock->sk;
-+
-+ wake_up_interruptible(sk->sleep);
-+}
-+
-+/* CMTP init defines */
-+int cmtp_init_capi(void);
-+int cmtp_init_sockets(void);
-+void cmtp_cleanup_capi(void);
-+void cmtp_cleanup_sockets(void);
-+
-+#endif /* __CMTP_H */
-diff -urN linux-2.4.18/net/bluetooth/cmtp/core.c linux-2.4.18-mh9/net/bluetooth/cmtp/core.c
---- linux-2.4.18/net/bluetooth/cmtp/core.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/cmtp/core.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,515 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <linux/init.h>
-+#include <net/sock.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define VERSION "1.0"
-+
-+static DECLARE_RWSEM(cmtp_session_sem);
-+static LIST_HEAD(cmtp_session_list);
-+
-+static struct cmtp_session *__cmtp_get_session(bdaddr_t *bdaddr)
-+{
-+ struct cmtp_session *session;
-+ struct list_head *p;
-+
-+ BT_DBG("");
-+
-+ list_for_each(p, &cmtp_session_list) {
-+ session = list_entry(p, struct cmtp_session, list);
-+ if (!bacmp(bdaddr, &session->bdaddr))
-+ return session;
-+ }
-+ return NULL;
-+}
-+
-+static void __cmtp_link_session(struct cmtp_session *session)
-+{
-+ MOD_INC_USE_COUNT;
-+ list_add(&session->list, &cmtp_session_list);
-+}
-+
-+static void __cmtp_unlink_session(struct cmtp_session *session)
-+{
-+ list_del(&session->list);
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci)
-+{
-+ bacpy(&ci->bdaddr, &session->bdaddr);
-+
-+ ci->flags = session->flags;
-+ ci->state = session->state;
-+
-+ ci->num = session->num;
-+}
-+
-+
-+static inline int cmtp_alloc_block_id(struct cmtp_session *session)
-+{
-+ int i, id = -1;
-+
-+ for (i = 0; i < 16; i++)
-+ if (!test_and_set_bit(i, &session->blockids)) {
-+ id = i;
-+ break;
-+ }
-+
-+ return id;
-+}
-+
-+static inline void cmtp_free_block_id(struct cmtp_session *session, int id)
-+{
-+ clear_bit(id, &session->blockids);
-+}
-+
-+static inline void cmtp_add_msgpart(struct cmtp_session *session, int id, const unsigned char *buf, int count)
-+{
-+ struct sk_buff *skb = session->reassembly[id], *nskb;
-+ int size;
-+
-+ BT_DBG("session %p buf %p count %d", session, buf, count);
-+
-+ size = (skb) ? skb->len + count : count;
-+
-+ if (!(nskb = alloc_skb(size, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for CAPI message");
-+ return;
-+ }
-+
-+ if (skb && (skb->len > 0))
-+ memcpy(skb_put(nskb, skb->len), skb->data, skb->len);
-+
-+ memcpy(skb_put(nskb, count), buf, count);
-+
-+ session->reassembly[id] = nskb;
-+
-+ if (skb)
-+ kfree_skb(skb);
-+}
-+
-+static inline int cmtp_recv_frame(struct cmtp_session *session, struct sk_buff *skb)
-+{
-+ __u8 hdr, hdrlen, id;
-+ __u16 len;
-+
-+ BT_DBG("session %p skb %p len %d", session, skb, skb->len);
-+
-+ while (skb->len > 0) {
-+ hdr = skb->data[0];
-+
-+ switch (hdr & 0xc0) {
-+ case 0x40:
-+ hdrlen = 2;
-+ len = skb->data[1];
-+ break;
-+ case 0x80:
-+ hdrlen = 3;
-+ len = skb->data[1] | (skb->data[2] << 8);
-+ break;
-+ default:
-+ hdrlen = 1;
-+ len = 0;
-+ break;
-+ }
-+
-+ id = (hdr & 0x3c) >> 2;
-+
-+ BT_DBG("hdr 0x%02x hdrlen %d len %d id %d", hdr, hdrlen, len, id);
-+
-+ if (hdrlen + len > skb->len) {
-+ BT_ERR("Wrong size or header information in CMTP frame");
-+ break;
-+ }
-+
-+ if (len == 0) {
-+ skb_pull(skb, hdrlen);
-+ continue;
-+ }
-+
-+ switch (hdr & 0x03) {
-+ case 0x00:
-+ cmtp_add_msgpart(session, id, skb->data + hdrlen, len);
-+ cmtp_recv_capimsg(session, session->reassembly[id]);
-+ session->reassembly[id] = NULL;
-+ break;
-+ case 0x01:
-+ cmtp_add_msgpart(session, id, skb->data + hdrlen, len);
-+ break;
-+ default:
-+ if (session->reassembly[id] != NULL)
-+ kfree_skb(session->reassembly[id]);
-+ session->reassembly[id] = NULL;
-+ break;
-+ }
-+
-+ skb_pull(skb, hdrlen + len);
-+ }
-+
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static int cmtp_send_frame(struct cmtp_session *session, unsigned char *data, int len)
-+{
-+ struct socket *sock = session->sock;
-+ struct iovec iv = { data, len };
-+ struct msghdr msg;
-+ int err;
-+
-+ BT_DBG("session %p data %p len %d", session, data, len);
-+
-+ if (!len)
-+ return 0;
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 1;
-+ msg.msg_iov = &iv;
-+
-+ err = sock->ops->sendmsg(sock, &msg, len, 0);
-+ return err;
-+}
-+
-+static int cmtp_process_transmit(struct cmtp_session *session)
-+{
-+ struct sk_buff *skb, *nskb;
-+ unsigned char *hdr;
-+ unsigned int size, tail;
-+
-+ BT_DBG("session %p", session);
-+
-+ if (!(nskb = alloc_skb(session->mtu, GFP_ATOMIC))) {
-+ BT_ERR("Can't allocate memory for new frame");
-+ return -ENOMEM;
-+ }
-+
-+ while ((skb = skb_dequeue(&session->transmit))) {
-+ struct cmtp_scb *scb = (void *) skb->cb;
-+
-+ if ((tail = (session->mtu - nskb->len)) < 5) {
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+ skb_trim(nskb, 0);
-+ tail = session->mtu;
-+ }
-+
-+ size = min_t(uint, ((tail < 258) ? (tail - 2) : (tail - 3)), skb->len);
-+
-+ if ((scb->id < 0) && ((scb->id = cmtp_alloc_block_id(session)) < 0)) {
-+ skb_queue_head(&session->transmit, skb);
-+ break;
-+ }
-+
-+ if (size < 256) {
-+ hdr = skb_put(nskb, 2);
-+ hdr[0] = 0x40
-+ | ((scb->id << 2) & 0x3c)
-+ | ((skb->len == size) ? 0x00 : 0x01);
-+ hdr[1] = size;
-+ } else {
-+ hdr = skb_put(nskb, 3);
-+ hdr[0] = 0x80
-+ | ((scb->id << 2) & 0x3c)
-+ | ((skb->len == size) ? 0x00 : 0x01);
-+ hdr[1] = size & 0xff;
-+ hdr[2] = size >> 8;
-+ }
-+
-+ memcpy(skb_put(nskb, size), skb->data, size);
-+ skb_pull(skb, size);
-+
-+ if (skb->len > 0) {
-+ skb_queue_head(&session->transmit, skb);
-+ } else {
-+ cmtp_free_block_id(session, scb->id);
-+ if (scb->data) {
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+ skb_trim(nskb, 0);
-+ }
-+ kfree_skb(skb);
-+ }
-+ }
-+
-+ cmtp_send_frame(session, nskb->data, nskb->len);
-+
-+ kfree_skb(nskb);
-+
-+ return skb_queue_len(&session->transmit);
-+}
-+
-+static int cmtp_session(void *arg)
-+{
-+ struct cmtp_session *session = arg;
-+ struct sock *sk = session->sock->sk;
-+ struct sk_buff *skb;
-+ wait_queue_t wait;
-+
-+ BT_DBG("session %p", session);
-+
-+ daemonize(); reparent_to_init();
-+
-+ sprintf(current->comm, "kcmtpd_ctr_%d", session->num);
-+
-+ sigfillset(&current->blocked);
-+ flush_signals(current);
-+
-+ current->nice = -15;
-+
-+ set_fs(KERNEL_DS);
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(sk->sleep, &wait);
-+ while (!atomic_read(&session->terminate)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (sk->state != BT_CONNECTED)
-+ break;
-+
-+ while ((skb = skb_dequeue(&sk->receive_queue))) {
-+ skb_orphan(skb);
-+ cmtp_recv_frame(session, skb);
-+ }
-+
-+ cmtp_process_transmit(session);
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ down_write(&cmtp_session_sem);
-+
-+ if (!(session->flags & (1 << CMTP_LOOPBACK)))
-+ cmtp_detach_device(session);
-+
-+ fput(session->sock->file);
-+
-+ __cmtp_unlink_session(session);
-+
-+ up_write(&cmtp_session_sem);
-+
-+ kfree(session);
-+ return 0;
-+}
-+
-+int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
-+{
-+ struct cmtp_session *session, *s;
-+ bdaddr_t src, dst;
-+ int i, err;
-+
-+ BT_DBG("");
-+
-+ baswap(&src, &bluez_pi(sock->sk)->src);
-+ baswap(&dst, &bluez_pi(sock->sk)->dst);
-+
-+ session = kmalloc(sizeof(struct cmtp_session), GFP_KERNEL);
-+ if (!session)
-+ return -ENOMEM;
-+ memset(session, 0, sizeof(struct cmtp_session));
-+
-+ down_write(&cmtp_session_sem);
-+
-+ s = __cmtp_get_session(&bluez_pi(sock->sk)->dst);
-+ if (s && s->state == BT_CONNECTED) {
-+ err = -EEXIST;
-+ goto failed;
-+ }
-+
-+ bacpy(&session->bdaddr, &bluez_pi(sock->sk)->dst);
-+
-+ session->mtu = min_t(uint, l2cap_pi(sock->sk)->omtu, l2cap_pi(sock->sk)->imtu);
-+
-+ BT_DBG("mtu %d", session->mtu);
-+
-+ sprintf(session->name, "%s", batostr(&dst));
-+
-+ session->sock = sock;
-+ session->state = BT_CONFIG;
-+
-+ init_waitqueue_head(&session->wait);
-+
-+ session->ctrl = NULL;
-+ session->msgnum = CMTP_INITIAL_MSGNUM;
-+
-+ INIT_LIST_HEAD(&session->applications);
-+
-+ skb_queue_head_init(&session->transmit);
-+
-+ for (i = 0; i < 16; i++)
-+ session->reassembly[i] = NULL;
-+
-+ session->flags = req->flags;
-+
-+ __cmtp_link_session(session);
-+
-+ err = kernel_thread(cmtp_session, session, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+ if (err < 0)
-+ goto unlink;
-+
-+ if (!(session->flags & (1 << CMTP_LOOPBACK))) {
-+ err = cmtp_attach_device(session);
-+ if (err < 0)
-+ goto detach;
-+ }
-+
-+ up_write(&cmtp_session_sem);
-+ return 0;
-+
-+detach:
-+ cmtp_detach_device(session);
-+
-+unlink:
-+ __cmtp_unlink_session(session);
-+
-+failed:
-+ up_write(&cmtp_session_sem);
-+ kfree(session);
-+ return err;
-+}
-+
-+int cmtp_del_connection(struct cmtp_conndel_req *req)
-+{
-+ struct cmtp_session *session;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&cmtp_session_sem);
-+
-+ session = __cmtp_get_session(&req->bdaddr);
-+ if (session) {
-+ /* Flush the transmit queue */
-+ skb_queue_purge(&session->transmit);
-+
-+ /* Kill session thread */
-+ atomic_inc(&session->terminate);
-+ cmtp_schedule(session);
-+ } else
-+ err = -ENOENT;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+int cmtp_get_connlist(struct cmtp_connlist_req *req)
-+{
-+ struct list_head *p;
-+ int err = 0, n = 0;
-+
-+ BT_DBG("");
-+
-+ down_read(&cmtp_session_sem);
-+
-+ list_for_each(p, &cmtp_session_list) {
-+ struct cmtp_session *session;
-+ struct cmtp_conninfo ci;
-+
-+ session = list_entry(p, struct cmtp_session, list);
-+
-+ __cmtp_copy_session(session, &ci);
-+
-+ if (copy_to_user(req->ci, &ci, sizeof(ci))) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (++n >= req->cnum)
-+ break;
-+
-+ req->ci++;
-+ }
-+ req->cnum = n;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+int cmtp_get_conninfo(struct cmtp_conninfo *ci)
-+{
-+ struct cmtp_session *session;
-+ int err = 0;
-+
-+ down_read(&cmtp_session_sem);
-+
-+ session = __cmtp_get_session(&ci->bdaddr);
-+ if (session)
-+ __cmtp_copy_session(session, ci);
-+ else
-+ err = -ENOENT;
-+
-+ up_read(&cmtp_session_sem);
-+ return err;
-+}
-+
-+
-+int __init init_cmtp(void)
-+{
-+ l2cap_load();
-+
-+ cmtp_init_capi();
-+ cmtp_init_sockets();
-+
-+ BT_INFO("BlueZ CMTP ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>");
-+
-+ return 0;
-+}
-+
-+void __exit exit_cmtp(void)
-+{
-+ cmtp_cleanup_sockets();
-+ cmtp_cleanup_capi();
-+}
-+
-+module_init(init_cmtp);
-+module_exit(exit_cmtp);
-+
-+MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ CMTP ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/cmtp/sock.c linux-2.4.18-mh9/net/bluetooth/cmtp/sock.c
---- linux-2.4.18/net/bluetooth/cmtp/sock.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/cmtp/sock.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,236 @@
-+/*
-+ CMTP implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/skbuff.h>
-+#include <linux/socket.h>
-+#include <linux/ioctl.h>
-+#include <linux/file.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include "cmtp.h"
-+
-+#ifndef CONFIG_BLUEZ_CMTP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+static inline struct socket *socki_lookup(struct inode *inode)
-+{
-+ return &inode->u.socket_i;
-+}
-+
-+static struct socket *sockfd_lookup(int fd, int *err)
-+{
-+ struct file *file;
-+ struct inode *inode;
-+ struct socket *sock;
-+
-+ if (!(file = fget(fd))) {
-+ *err = -EBADF;
-+ return NULL;
-+ }
-+
-+ inode = file->f_dentry->d_inode;
-+ if (!inode->i_sock || !(sock = socki_lookup(inode))) {
-+ *err = -ENOTSOCK;
-+ fput(file);
-+ return NULL;
-+ }
-+
-+ if (sock->file != file) {
-+ printk(KERN_ERR "socki_lookup: socket file changed!\n");
-+ sock->file = file;
-+ }
-+ return sock;
-+}
-+
-+static int cmtp_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sock_orphan(sk);
-+ sock_put(sk);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int cmtp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct cmtp_connadd_req ca;
-+ struct cmtp_conndel_req cd;
-+ struct cmtp_connlist_req cl;
-+ struct cmtp_conninfo ci;
-+ struct socket *nsock;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
-+ case CMTPCONNADD:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&ca, (void *) arg, sizeof(ca)))
-+ return -EFAULT;
-+
-+ nsock = sockfd_lookup(ca.sock, &err);
-+ if (!nsock)
-+ return err;
-+
-+ if (nsock->sk->state != BT_CONNECTED)
-+ return -EBADFD;
-+
-+ err = cmtp_add_connection(&ca, nsock);
-+ if (!err) {
-+ if (copy_to_user((void *) arg, &ca, sizeof(ca)))
-+ err = -EFAULT;
-+ } else
-+ fput(nsock->file);
-+
-+ return err;
-+
-+ case CMTPCONNDEL:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-+
-+ if (copy_from_user(&cd, (void *) arg, sizeof(cd)))
-+ return -EFAULT;
-+
-+ return cmtp_del_connection(&cd);
-+
-+ case CMTPGETCONNLIST:
-+ if (copy_from_user(&cl, (void *) arg, sizeof(cl)))
-+ return -EFAULT;
-+
-+ if (cl.cnum <= 0)
-+ return -EINVAL;
-+
-+ err = cmtp_get_connlist(&cl);
-+ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl)))
-+ return -EFAULT;
-+
-+ return err;
-+
-+ case CMTPGETCONNINFO:
-+ if (copy_from_user(&ci, (void *) arg, sizeof(ci)))
-+ return -EFAULT;
-+
-+ err = cmtp_get_conninfo(&ci);
-+ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci)))
-+ return -EFAULT;
-+
-+ return err;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static struct proto_ops cmtp_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: cmtp_sock_release,
-+ ioctl: cmtp_sock_ioctl,
-+ bind: sock_no_bind,
-+ getname: sock_no_getname,
-+ sendmsg: sock_no_sendmsg,
-+ recvmsg: sock_no_recvmsg,
-+ poll: sock_no_poll,
-+ listen: sock_no_listen,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sock_no_setsockopt,
-+ getsockopt: sock_no_getsockopt,
-+ connect: sock_no_connect,
-+ socketpair: sock_no_socketpair,
-+ accept: sock_no_accept,
-+ mmap: sock_no_mmap
-+};
-+
-+static int cmtp_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ if (sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &cmtp_sock_ops;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1)))
-+ return -ENOMEM;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ sock->state = SS_UNCONNECTED;
-+ sock_init_data(sock, sk);
-+
-+ sk->destruct = NULL;
-+ sk->protocol = protocol;
-+
-+ return 0;
-+}
-+
-+static struct net_proto_family cmtp_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: cmtp_sock_create
-+};
-+
-+int cmtp_init_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_CMTP, &cmtp_sock_family_ops))) {
-+ BT_ERR("Can't register CMTP socket layer (%d)", err);
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+void cmtp_cleanup_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_unregister(BTPROTO_CMTP)))
-+ BT_ERR("Can't unregister CMTP socket layer (%d)", err);
-+
-+ return;
-+}
-diff -urN linux-2.4.18/net/bluetooth/hci_conn.c linux-2.4.18-mh9/net/bluetooth/hci_conn.c
---- linux-2.4.18/net/bluetooth/hci_conn.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/hci_conn.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,441 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * HCI Connection handling.
-+ *
-+ * $Id: hci_conn.c,v 1.5 2002/07/17 18:46:25 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/notifier.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+#ifndef HCI_CORE_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+void hci_acl_connect(struct hci_conn *conn)
-+{
-+ struct hci_dev *hdev = conn->hdev;
-+ struct inquiry_entry *ie;
-+ create_conn_cp cp;
-+
-+ BT_DBG("%p", conn);
-+
-+ conn->state = BT_CONNECT;
-+ conn->out = 1;
-+ conn->link_mode = HCI_LM_MASTER;
-+
-+ memset(&cp, 0, sizeof(cp));
-+ bacpy(&cp.bdaddr, &conn->dst);
-+ cp.pscan_rep_mode = 0x01;
-+
-+ if ((ie = inquiry_cache_lookup(hdev, &conn->dst)) &&
-+ inquiry_entry_age(ie) <= INQUIRY_ENTRY_AGE_MAX) {
-+ cp.pscan_rep_mode = ie->info.pscan_rep_mode;
-+ cp.pscan_mode = ie->info.pscan_mode;
-+ cp.clock_offset = ie->info.clock_offset | __cpu_to_le16(0x8000);
-+ }
-+
-+ cp.pkt_type = __cpu_to_le16(hdev->pkt_type & ACL_PTYPE_MASK);
-+ if (lmp_rswitch_capable(hdev) && !(hdev->link_mode & HCI_LM_MASTER))
-+ cp.role_switch = 0x01;
-+ else
-+ cp.role_switch = 0x00;
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CREATE_CONN,
-+ CREATE_CONN_CP_SIZE, &cp);
-+}
-+
-+void hci_acl_disconn(struct hci_conn *conn, __u8 reason)
-+{
-+ disconnect_cp cp;
-+
-+ BT_DBG("%p", conn);
-+
-+ conn->state = BT_DISCONN;
-+
-+ cp.handle = __cpu_to_le16(conn->handle);
-+ cp.reason = reason;
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_DISCONNECT,
-+ DISCONNECT_CP_SIZE, &cp);
-+}
-+
-+void hci_add_sco(struct hci_conn *conn, __u16 handle)
-+{
-+ struct hci_dev *hdev = conn->hdev;
-+ add_sco_cp cp;
-+
-+ BT_DBG("%p", conn);
-+
-+ conn->state = BT_CONNECT;
-+ conn->out = 1;
-+
-+ cp.pkt_type = __cpu_to_le16(hdev->pkt_type & SCO_PTYPE_MASK);
-+ cp.handle = __cpu_to_le16(handle);
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ADD_SCO, ADD_SCO_CP_SIZE, &cp);
-+}
-+
-+static void hci_conn_timeout(unsigned long arg)
-+{
-+ struct hci_conn *conn = (void *)arg;
-+ struct hci_dev *hdev = conn->hdev;
-+
-+ BT_DBG("conn %p state %d", conn, conn->state);
-+
-+ if (atomic_read(&conn->refcnt))
-+ return;
-+
-+ hci_dev_lock(hdev);
-+ if (conn->state == BT_CONNECTED)
-+ hci_acl_disconn(conn, 0x13);
-+ else
-+ conn->state = BT_CLOSED;
-+ hci_dev_unlock(hdev);
-+ return;
-+}
-+
-+static void hci_conn_init_timer(struct hci_conn *conn)
-+{
-+ init_timer(&conn->timer);
-+ conn->timer.function = hci_conn_timeout;
-+ conn->timer.data = (unsigned long)conn;
-+}
-+
-+struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst)
-+{
-+ struct hci_conn *conn;
-+
-+ BT_DBG("%s dst %s", hdev->name, batostr(dst));
-+
-+ if (!(conn = kmalloc(sizeof(struct hci_conn), GFP_ATOMIC)))
-+ return NULL;
-+ memset(conn, 0, sizeof(struct hci_conn));
-+
-+ bacpy(&conn->dst, dst);
-+ conn->type = type;
-+ conn->hdev = hdev;
-+ conn->state = BT_OPEN;
-+
-+ skb_queue_head_init(&conn->data_q);
-+ hci_conn_init_timer(conn);
-+
-+ atomic_set(&conn->refcnt, 0);
-+
-+ hci_dev_hold(hdev);
-+
-+ if (hdev->notify)
-+ hdev->notify(hdev, HCI_NOTIFY_CONN_ADD, (unsigned long) conn);
-+
-+ tasklet_disable(&hdev->tx_task);
-+ conn_hash_add(hdev, conn);
-+ tasklet_enable(&hdev->tx_task);
-+
-+ return conn;
-+}
-+
-+int hci_conn_del(struct hci_conn *conn)
-+{
-+ struct hci_dev *hdev = conn->hdev;
-+
-+ BT_DBG("%s conn %p handle %d", hdev->name, conn, conn->handle);
-+
-+ hci_conn_del_timer(conn);
-+
-+ if (conn->type == SCO_LINK) {
-+ struct hci_conn *acl = conn->link;
-+ if (acl) {
-+ acl->link = NULL;
-+ hci_conn_put(acl);
-+ }
-+ } else {
-+ struct hci_conn *sco = conn->link;
-+ if (sco)
-+ sco->link = NULL;
-+
-+ /* Unacked frames */
-+ hdev->acl_cnt += conn->sent;
-+ }
-+
-+ tasklet_disable(&hdev->tx_task);
-+ conn_hash_del(hdev, conn);
-+ tasklet_enable(&hdev->tx_task);
-+
-+ skb_queue_purge(&conn->data_q);
-+
-+ if (hdev->notify)
-+ hdev->notify(hdev, HCI_NOTIFY_CONN_DEL, (unsigned long) conn);
-+
-+ hci_dev_put(hdev);
-+
-+ kfree(conn);
-+ return 0;
-+}
-+
-+struct hci_dev *hci_get_route(bdaddr_t *dst, bdaddr_t *src)
-+{
-+ int use_src = bacmp(src, BDADDR_ANY);
-+ struct hci_dev *hdev = NULL;
-+ struct list_head *p;
-+
-+ BT_DBG("%s -> %s", batostr(src), batostr(dst));
-+
-+ read_lock_bh(&hdev_list_lock);
-+
-+ list_for_each(p, &hdev_list) {
-+ struct hci_dev *d;
-+ d = list_entry(p, struct hci_dev, list);
-+
-+ if (!test_bit(HCI_UP, &d->flags))
-+ continue;
-+
-+ /* Simple routing:
-+ * No source address - find interface with bdaddr != dst
-+ * Source address - find interface with bdaddr == src
-+ */
-+
-+ if (use_src) {
-+ if (!bacmp(&d->bdaddr, src)) {
-+ hdev = d; break;
-+ }
-+ } else {
-+ if (bacmp(&d->bdaddr, dst)) {
-+ hdev = d; break;
-+ }
-+ }
-+ }
-+
-+ if (hdev)
-+ hci_dev_hold(hdev);
-+
-+ read_unlock_bh(&hdev_list_lock);
-+ return hdev;
-+}
-+
-+/* Create SCO or ACL connection.
-+ * Device _must_ be locked */
-+struct hci_conn * hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst)
-+{
-+ struct hci_conn *acl;
-+
-+ BT_DBG("%s dst %s", hdev->name, batostr(dst));
-+
-+ if (!(acl = conn_hash_lookup_ba(hdev, ACL_LINK, dst))) {
-+ if (!(acl = hci_conn_add(hdev, ACL_LINK, dst)))
-+ return NULL;
-+ }
-+
-+ hci_conn_hold(acl);
-+
-+ if (acl->state == BT_OPEN || acl->state == BT_CLOSED)
-+ hci_acl_connect(acl);
-+
-+ if (type == SCO_LINK) {
-+ struct hci_conn *sco;
-+
-+ if (!(sco = conn_hash_lookup_ba(hdev, SCO_LINK, dst))) {
-+ if (!(sco = hci_conn_add(hdev, SCO_LINK, dst))) {
-+ hci_conn_put(acl);
-+ return NULL;
-+ }
-+ }
-+ acl->link = sco;
-+ sco->link = acl;
-+
-+ hci_conn_hold(sco);
-+
-+ if (acl->state == BT_CONNECTED &&
-+ (sco->state == BT_OPEN || sco->state == BT_CLOSED))
-+ hci_add_sco(sco, acl->handle);
-+
-+ return sco;
-+ } else {
-+ return acl;
-+ }
-+}
-+
-+/* Authenticate remote device */
-+int hci_conn_auth(struct hci_conn *conn)
-+{
-+ BT_DBG("conn %p", conn);
-+
-+ if (conn->link_mode & HCI_LM_AUTH)
-+ return 1;
-+
-+ if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
-+ auth_requested_cp ar;
-+ ar.handle = __cpu_to_le16(conn->handle);
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_AUTH_REQUESTED,
-+ AUTH_REQUESTED_CP_SIZE, &ar);
-+ }
-+ return 0;
-+}
-+
-+/* Enable encryption */
-+int hci_conn_encrypt(struct hci_conn *conn)
-+{
-+ BT_DBG("conn %p", conn);
-+
-+ if (conn->link_mode & HCI_LM_ENCRYPT)
-+ return 1;
-+
-+ if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
-+ return 0;
-+
-+ if (hci_conn_auth(conn)) {
-+ set_conn_encrypt_cp ce;
-+ ce.handle = __cpu_to_le16(conn->handle);
-+ ce.encrypt = 1;
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_SET_CONN_ENCRYPT,
-+ SET_CONN_ENCRYPT_CP_SIZE, &ce);
-+ }
-+ return 0;
-+}
-+
-+/* Drop all connection on the device */
-+void hci_conn_hash_flush(struct hci_dev *hdev)
-+{
-+ struct conn_hash *h = &hdev->conn_hash;
-+ struct list_head *p;
-+
-+ BT_DBG("hdev %s", hdev->name);
-+
-+ p = h->list.next;
-+ while (p != &h->list) {
-+ struct hci_conn *c;
-+
-+ c = list_entry(p, struct hci_conn, list);
-+ p = p->next;
-+
-+ c->state = BT_CLOSED;
-+
-+ hci_proto_disconn_ind(c, 0x16);
-+ hci_conn_del(c);
-+ }
-+}
-+
-+int hci_get_conn_list(unsigned long arg)
-+{
-+ struct hci_conn_list_req req, *cl;
-+ struct hci_conn_info *ci;
-+ struct hci_dev *hdev;
-+ struct list_head *p;
-+ int n = 0, size;
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ if (!(hdev = hci_dev_get(req.dev_id)))
-+ return -ENODEV;
-+
-+ size = req.conn_num * sizeof(struct hci_conn_info) + sizeof(req);
-+
-+ if (verify_area(VERIFY_WRITE, (void *)arg, size))
-+ return -EFAULT;
-+
-+ if (!(cl = (void *) kmalloc(size, GFP_KERNEL)))
-+ return -ENOMEM;
-+ ci = cl->conn_info;
-+
-+ hci_dev_lock_bh(hdev);
-+ list_for_each(p, &hdev->conn_hash.list) {
-+ register struct hci_conn *c;
-+ c = list_entry(p, struct hci_conn, list);
-+
-+ bacpy(&(ci + n)->bdaddr, &c->dst);
-+ (ci + n)->handle = c->handle;
-+ (ci + n)->type = c->type;
-+ (ci + n)->out = c->out;
-+ (ci + n)->state = c->state;
-+ (ci + n)->link_mode = c->link_mode;
-+ n++;
-+ }
-+ hci_dev_unlock_bh(hdev);
-+
-+ cl->dev_id = hdev->id;
-+ cl->conn_num = n;
-+ size = n * sizeof(struct hci_conn_info) + sizeof(req);
-+
-+ hci_dev_put(hdev);
-+
-+ copy_to_user((void *) arg, cl, size);
-+ kfree(cl);
-+
-+ return 0;
-+}
-+
-+int hci_get_conn_info(struct hci_dev *hdev, unsigned long arg)
-+{
-+ struct hci_conn_info_req req;
-+ struct hci_conn_info ci;
-+ struct hci_conn *conn;
-+ char *ptr = (void *) arg + sizeof(req);
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ if (verify_area(VERIFY_WRITE, ptr, sizeof(ci)))
-+ return -EFAULT;
-+
-+ hci_dev_lock_bh(hdev);
-+ conn = conn_hash_lookup_ba(hdev, req.type, &req.bdaddr);
-+ if (conn) {
-+ bacpy(&ci.bdaddr, &conn->dst);
-+ ci.handle = conn->handle;
-+ ci.type = conn->type;
-+ ci.out = conn->out;
-+ ci.state = conn->state;
-+ ci.link_mode = conn->link_mode;
-+ }
-+ hci_dev_unlock_bh(hdev);
-+
-+ if (!conn)
-+ return -ENOENT;
-+
-+ copy_to_user(ptr, &ci, sizeof(ci));
-+ return 0;
-+}
-diff -urN linux-2.4.18/net/bluetooth/hci_core.c linux-2.4.18-mh9/net/bluetooth/hci_core.c
---- linux-2.4.18/net/bluetooth/hci_core.c Fri Nov 9 23:21:21 2001
-+++ linux-2.4.18-mh9/net/bluetooth/hci_core.c Mon Aug 25 18:38:12 2003
-@@ -25,11 +25,12 @@
- /*
- * BlueZ HCI Core.
- *
-- * $Id: hci_core.c,v 1.22 2001/08/03 04:19:50 maxk Exp $
-+ * $Id: hci_core.c,v 1.14 2002/08/26 16:57:57 maxk Exp $
- */
-
- #include <linux/config.h>
- #include <linux/module.h>
-+#include <linux/kmod.h>
-
- #include <linux/types.h>
- #include <linux/errno.h>
-@@ -50,12 +51,11 @@
- #include <asm/unaligned.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
-
- #ifndef HCI_CORE_DEBUG
--#undef DBG
--#define DBG( A... )
-+#undef BT_DBG
-+#define BT_DBG( A... )
- #endif
-
- static void hci_cmd_task(unsigned long arg);
-@@ -63,279 +63,69 @@
- static void hci_tx_task(unsigned long arg);
- static void hci_notify(struct hci_dev *hdev, int event);
-
--static rwlock_t hci_task_lock = RW_LOCK_UNLOCKED;
-+rwlock_t hci_task_lock = RW_LOCK_UNLOCKED;
-
- /* HCI device list */
--struct hci_dev *hdev_list[HCI_MAX_DEV];
--spinlock_t hdev_list_lock;
--#define GET_HDEV(a) (hdev_list[a])
--
--/* HCI protocol list */
--struct hci_proto *hproto_list[HCI_MAX_PROTO];
--#define GET_HPROTO(a) (hproto_list[a])
-+LIST_HEAD(hdev_list);
-+rwlock_t hdev_list_lock = RW_LOCK_UNLOCKED;
-
--/* HCI notifiers list */
--struct notifier_block *hci_dev_notifier;
--
--/* HCI device notifications */
--int hci_register_notifier(struct notifier_block *nb)
--{
-- int err, i;
-- struct hci_dev *hdev;
--
-- if ((err = notifier_chain_register(&hci_dev_notifier, nb)))
-- return err;
--
-- /* Notify about already registered devices */
-- spin_lock(&hdev_list_lock);
-- for (i = 0; i < HCI_MAX_DEV; i++) {
-- if (!(hdev = GET_HDEV(i)))
-- continue;
-- if (hdev->flags & HCI_UP)
-- (*nb->notifier_call)(nb, HCI_DEV_UP, hdev);
-- }
-- spin_unlock(&hdev_list_lock);
--
-- return 0;
--}
--
--int hci_unregister_notifier(struct notifier_block *nb)
--{
-- return notifier_chain_unregister(&hci_dev_notifier, nb);
--}
--
--static inline void hci_notify(struct hci_dev *hdev, int event)
--{
-- notifier_call_chain(&hci_dev_notifier, event, hdev);
--}
--
--/* Get HCI device by index (device is locked on return)*/
--struct hci_dev *hci_dev_get(int index)
--{
-- struct hci_dev *hdev;
-- DBG("%d", index);
--
-- if (index < 0 || index >= HCI_MAX_DEV)
-- return NULL;
--
-- spin_lock(&hdev_list_lock);
-- if ((hdev = GET_HDEV(index)))
-- hci_dev_hold(hdev);
-- spin_unlock(&hdev_list_lock);
--
-- return hdev;
--}
--
--/* Flush inquiry cache */
--void inquiry_cache_flush(struct inquiry_cache *cache)
--{
-- struct inquiry_entry *next = cache->list, *e;
--
-- DBG("cache %p", cache);
--
-- cache->list = NULL;
-- while ((e = next)) {
-- next = e->next;
-- kfree(e);
-- }
--}
--
--/* Lookup by bdaddr.
-- * Cache must be locked. */
--static struct inquiry_entry * __inquiry_cache_lookup(struct inquiry_cache *cache, bdaddr_t *bdaddr)
--{
-- struct inquiry_entry *e;
--
-- DBG("cache %p, %s", cache, batostr(bdaddr));
--
-- for (e = cache->list; e; e = e->next)
-- if (!bacmp(&e->info.bdaddr, bdaddr))
-- break;
--
-- return e;
--}
--
--static void inquiry_cache_update(struct inquiry_cache *cache, inquiry_info *info)
--{
-- struct inquiry_entry *e;
--
-- DBG("cache %p, %s", cache, batostr(&info->bdaddr));
--
-- inquiry_cache_lock(cache);
--
-- if (!(e = __inquiry_cache_lookup(cache, &info->bdaddr))) {
-- /* Entry not in the cache. Add new one. */
-- if (!(e = kmalloc(sizeof(struct inquiry_entry), GFP_ATOMIC)))
-- goto unlock;
-- memset(e, 0, sizeof(struct inquiry_entry));
-- e->next = cache->list;
-- cache->list = e;
-- }
--
-- memcpy(&e->info, info, sizeof(inquiry_info));
-- e->timestamp = jiffies;
-- cache->timestamp = jiffies;
--unlock:
-- inquiry_cache_unlock(cache);
--}
--
--static int inquiry_cache_dump(struct inquiry_cache *cache, int num, __u8 *buf)
--{
-- inquiry_info *info = (inquiry_info *) buf;
-- struct inquiry_entry *e;
-- int copied = 0;
-+/* HCI protocols */
-+#define HCI_MAX_PROTO 2
-+struct hci_proto *hci_proto[HCI_MAX_PROTO];
-
-- inquiry_cache_lock(cache);
--
-- for (e = cache->list; e && copied < num; e = e->next, copied++)
-- memcpy(info++, &e->info, sizeof(inquiry_info));
-+/* HCI notifiers list */
-+static struct notifier_block *hci_notifier;
-
-- inquiry_cache_unlock(cache);
-
-- DBG("cache %p, copied %d", cache, copied);
-- return copied;
--}
-+/* ---- HCI notifications ---- */
-
--/* --------- BaseBand connections --------- */
--static struct hci_conn *hci_conn_add(struct hci_dev *hdev, __u16 handle, __u8 type, bdaddr_t *dst)
-+int hci_register_notifier(struct notifier_block *nb)
- {
-- struct hci_conn *conn;
--
-- DBG("%s handle %d dst %s", hdev->name, handle, batostr(dst));
--
-- if ( conn_hash_lookup(&hdev->conn_hash, handle)) {
-- ERR("%s handle 0x%x already exists", hdev->name, handle);
-- return NULL;
-- }
--
-- if (!(conn = kmalloc(sizeof(struct hci_conn), GFP_ATOMIC)))
-- return NULL;
-- memset(conn, 0, sizeof(struct hci_conn));
--
-- bacpy(&conn->dst, dst);
-- conn->handle = handle;
-- conn->type = type;
-- conn->hdev = hdev;
--
-- skb_queue_head_init(&conn->data_q);
--
-- hci_dev_hold(hdev);
-- conn_hash_add(&hdev->conn_hash, handle, conn);
--
-- return conn;
-+ return notifier_chain_register(&hci_notifier, nb);
- }
-
--static int hci_conn_del(struct hci_dev *hdev, struct hci_conn *conn)
-+int hci_unregister_notifier(struct notifier_block *nb)
- {
-- DBG("%s conn %p handle %d", hdev->name, conn, conn->handle);
--
-- conn_hash_del(&hdev->conn_hash, conn);
-- hci_dev_put(hdev);
--
-- /* Unacked frames */
-- hdev->acl_cnt += conn->sent;
--
-- skb_queue_purge(&conn->data_q);
--
-- kfree(conn);
-- return 0;
-+ return notifier_chain_unregister(&hci_notifier, nb);
- }
-
--/* Drop all connection on the device */
--static void hci_conn_hash_flush(struct hci_dev *hdev)
-+void hci_notify(struct hci_dev *hdev, int event)
- {
-- struct conn_hash *h = &hdev->conn_hash;
-- struct hci_proto *hp;
-- struct list_head *p;
--
-- DBG("hdev %s", hdev->name);
--
-- p = h->list.next;
-- while (p != &h->list) {
-- struct hci_conn *c;
--
-- c = list_entry(p, struct hci_conn, list);
-- p = p->next;
--
-- if (c->type == ACL_LINK) {
-- /* ACL link notify L2CAP layer */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->disconn_ind)
-- hp->disconn_ind(c, 0x16);
-- } else {
-- /* SCO link (no notification) */
-- }
--
-- hci_conn_del(hdev, c);
-- }
-+ notifier_call_chain(&hci_notifier, event, hdev);
- }
-
--int hci_connect(struct hci_dev *hdev, bdaddr_t *bdaddr)
--{
-- struct inquiry_cache *cache = &hdev->inq_cache;
-- struct inquiry_entry *e;
-- create_conn_cp cc;
-- __u16 clock_offset;
--
-- DBG("%s bdaddr %s", hdev->name, batostr(bdaddr));
--
-- if (!(hdev->flags & HCI_UP))
-- return -ENODEV;
--
-- inquiry_cache_lock_bh(cache);
--
-- if (!(e = __inquiry_cache_lookup(cache, bdaddr)) || inquiry_entry_age(e) > INQUIRY_ENTRY_AGE_MAX) {
-- cc.pscan_rep_mode = 0;
-- cc.pscan_mode = 0;
-- clock_offset = 0;
-- } else {
-- cc.pscan_rep_mode = e->info.pscan_rep_mode;
-- cc.pscan_mode = e->info.pscan_mode;
-- clock_offset = __le16_to_cpu(e->info.clock_offset) & 0x8000;
-- }
--
-- inquiry_cache_unlock_bh(cache);
--
-- bacpy(&cc.bdaddr, bdaddr);
-- cc.pkt_type = __cpu_to_le16(hdev->pkt_type);
-- cc.clock_offset = __cpu_to_le16(clock_offset);
--
-- if (lmp_rswitch_capable(hdev))
-- cc.role_switch = 0x01;
-- else
-- cc.role_switch = 0x00;
--
-- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CREATE_CONN, CREATE_CONN_CP_SIZE, &cc);
-+/* ---- HCI hotplug support ---- */
-
-- return 0;
--}
-+#ifdef CONFIG_HOTPLUG
-
--int hci_disconnect(struct hci_conn *conn, __u8 reason)
-+static int hci_run_hotplug(char *dev, char *action)
- {
-- disconnect_cp dc;
--
-- DBG("conn %p handle %d", conn, conn->handle);
-+ char *argv[3], *envp[5], dstr[20], astr[32];
-
-- dc.handle = __cpu_to_le16(conn->handle);
-- dc.reason = reason;
-- hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_DISCONNECT, DISCONNECT_CP_SIZE, &dc);
-+ sprintf(dstr, "DEVICE=%s", dev);
-+ sprintf(astr, "ACTION=%s", action);
-
-- return 0;
--}
-+ argv[0] = hotplug_path;
-+ argv[1] = "bluetooth";
-+ argv[2] = NULL;
-
--/* --------- HCI request handling ------------ */
--static inline void hci_req_lock(struct hci_dev *hdev)
--{
-- down(&hdev->req_lock);
-+ envp[0] = "HOME=/";
-+ envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
-+ envp[2] = dstr;
-+ envp[3] = astr;
-+ envp[4] = NULL;
-+
-+ return call_usermodehelper(argv[0], argv, envp);
- }
-+#else
-+#define hci_run_hotplug(A...)
-+#endif
-
--static inline void hci_req_unlock(struct hci_dev *hdev)
--{
-- up(&hdev->req_lock);
--}
-+/* ---- HCI requests ---- */
-
--static inline void hci_req_complete(struct hci_dev *hdev, int result)
-+void hci_req_complete(struct hci_dev *hdev, int result)
- {
-- DBG("%s result 0x%2.2x", hdev->name, result);
-+ BT_DBG("%s result 0x%2.2x", hdev->name, result);
-
- if (hdev->req_status == HCI_REQ_PEND) {
- hdev->req_result = result;
-@@ -344,9 +134,9 @@
- }
- }
-
--static inline void hci_req_cancel(struct hci_dev *hdev, int err)
-+void hci_req_cancel(struct hci_dev *hdev, int err)
- {
-- DBG("%s err 0x%2.2x", hdev->name, err);
-+ BT_DBG("%s err 0x%2.2x", hdev->name, err);
-
- if (hdev->req_status == HCI_REQ_PEND) {
- hdev->req_result = err;
-@@ -356,23 +146,22 @@
- }
-
- /* Execute request and wait for completion. */
--static int __hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt),
-- unsigned long opt, __u32 timeout)
-+static int __hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt), unsigned long opt, __u32 timeout)
- {
- DECLARE_WAITQUEUE(wait, current);
- int err = 0;
-
-- DBG("%s start", hdev->name);
-+ BT_DBG("%s start", hdev->name);
-
- hdev->req_status = HCI_REQ_PEND;
-
- add_wait_queue(&hdev->req_wait_q, &wait);
-- current->state = TASK_INTERRUPTIBLE;
-+ set_current_state(TASK_INTERRUPTIBLE);
-
- req(hdev, opt);
- schedule_timeout(timeout);
-
-- current->state = TASK_RUNNING;
-+ set_current_state(TASK_RUNNING);
- remove_wait_queue(&hdev->req_wait_q, &wait);
-
- if (signal_pending(current))
-@@ -394,7 +183,7 @@
-
- hdev->req_status = hdev->req_result = 0;
-
-- DBG("%s end: err %d", hdev->name, err);
-+ BT_DBG("%s end: err %d", hdev->name, err);
-
- return err;
- }
-@@ -412,10 +201,9 @@
- return ret;
- }
-
--/* --------- HCI requests ---------- */
- static void hci_reset_req(struct hci_dev *hdev, unsigned long opt)
- {
-- DBG("%s %ld", hdev->name, opt);
-+ BT_DBG("%s %ld", hdev->name, opt);
-
- /* Reset device */
- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_RESET, 0, NULL);
-@@ -423,10 +211,10 @@
-
- static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
- {
-- set_event_flt_cp ec;
-+ set_event_flt_cp ef;
- __u16 param;
-
-- DBG("%s %ld", hdev->name, opt);
-+ BT_DBG("%s %ld", hdev->name, opt);
-
- /* Mandatory initialization */
-
-@@ -436,14 +224,30 @@
- /* Read Buffer Size (ACL mtu, max pkt, etc.) */
- hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_BUFFER_SIZE, 0, NULL);
-
-+#if 0
-+ /* Host buffer size */
-+ {
-+ host_buffer_size_cp bs;
-+ bs.acl_mtu = __cpu_to_le16(HCI_MAX_ACL_SIZE);
-+ bs.sco_mtu = HCI_MAX_SCO_SIZE;
-+ bs.acl_max_pkt = __cpu_to_le16(0xffff);
-+ bs.sco_max_pkt = __cpu_to_le16(0xffff);
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_HOST_BUFFER_SIZE,
-+ HOST_BUFFER_SIZE_CP_SIZE, &bs);
-+ }
-+#endif
-+
- /* Read BD Address */
- hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_BD_ADDR, 0, NULL);
-
-+ /* Read Voice Setting */
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_READ_VOICE_SETTING, 0, NULL);
-+
- /* Optional initialization */
-
- /* Clear Event Filters */
-- ec.flt_type = FLT_CLEAR_ALL;
-- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_SET_EVENT_FLT, 1, &ec);
-+ ef.flt_type = FLT_CLEAR_ALL;
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_SET_EVENT_FLT, 1, &ef);
-
- /* Page timeout ~20 secs */
- param = __cpu_to_le16(0x8000);
-@@ -458,7 +262,7 @@
- {
- __u8 scan = opt;
-
-- DBG("%s %x", hdev->name, scan);
-+ BT_DBG("%s %x", hdev->name, scan);
-
- /* Inquiry and Page scans */
- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE, 1, &scan);
-@@ -468,116 +272,272 @@
- {
- __u8 auth = opt;
-
-- DBG("%s %x", hdev->name, auth);
-+ BT_DBG("%s %x", hdev->name, auth);
-
- /* Authentication */
- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE, 1, &auth);
- }
-
--static void hci_inq_req(struct hci_dev *hdev, unsigned long opt)
-+static void hci_encrypt_req(struct hci_dev *hdev, unsigned long opt)
- {
-- struct hci_inquiry_req *ir = (struct hci_inquiry_req *) opt;
-- inquiry_cp ic;
-+ __u8 encrypt = opt;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s %x", hdev->name, encrypt);
-
-- /* Start Inquiry */
-- memcpy(&ic.lap, &ir->lap, 3);
-- ic.lenght = ir->length;
-- ic.num_rsp = ir->num_rsp;
-- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_INQUIRY, INQUIRY_CP_SIZE, &ic);
-+ /* Authentication */
-+ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_ENCRYPT_MODE, 1, &encrypt);
- }
-
--/* HCI ioctl helpers */
--int hci_dev_open(__u16 dev)
-+/* Get HCI device by index.
-+ * Device is locked on return. */
-+struct hci_dev *hci_dev_get(int index)
- {
- struct hci_dev *hdev;
-- int ret = 0;
--
-- if (!(hdev = hci_dev_get(dev)))
-- return -ENODEV;
-+ struct list_head *p;
-
-- DBG("%s %p", hdev->name, hdev);
-+ BT_DBG("%d", index);
-
-- hci_req_lock(hdev);
-+ if (index < 0)
-+ return NULL;
-
-- if (hdev->flags & HCI_UP) {
-- ret = -EALREADY;
-- goto done;
-+ read_lock(&hdev_list_lock);
-+ list_for_each(p, &hdev_list) {
-+ hdev = list_entry(p, struct hci_dev, list);
-+ if (hdev->id == index) {
-+ hci_dev_hold(hdev);
-+ goto done;
-+ }
- }
-+ hdev = NULL;
-+done:
-+ read_unlock(&hdev_list_lock);
-+ return hdev;
-+}
-
-- if (hdev->open(hdev)) {
-- ret = -EIO;
-- goto done;
-- }
-+/* ---- Inquiry support ---- */
-+void inquiry_cache_flush(struct hci_dev *hdev)
-+{
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ struct inquiry_entry *next = cache->list, *e;
-
-- if (hdev->flags & HCI_NORMAL) {
-- atomic_set(&hdev->cmd_cnt, 1);
-- hdev->flags |= HCI_INIT;
-+ BT_DBG("cache %p", cache);
-
-- //__hci_request(hdev, hci_reset_req, 0, HZ);
-- ret = __hci_request(hdev, hci_init_req, 0, HCI_INIT_TIMEOUT);
--
-- hdev->flags &= ~HCI_INIT;
-+ cache->list = NULL;
-+ while ((e = next)) {
-+ next = e->next;
-+ kfree(e);
- }
-+}
-
-- if (!ret) {
-- hdev->flags |= HCI_UP;
-- hci_notify(hdev, HCI_DEV_UP);
-- } else {
-- /* Init failed, cleanup */
-- tasklet_kill(&hdev->rx_task);
-- tasklet_kill(&hdev->tx_task);
-- tasklet_kill(&hdev->cmd_task);
-+struct inquiry_entry *inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr)
-+{
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ struct inquiry_entry *e;
-
-- skb_queue_purge(&hdev->cmd_q);
-- skb_queue_purge(&hdev->rx_q);
-+ BT_DBG("cache %p, %s", cache, batostr(bdaddr));
-
-- if (hdev->flush)
-- hdev->flush(hdev);
-+ for (e = cache->list; e; e = e->next)
-+ if (!bacmp(&e->info.bdaddr, bdaddr))
-+ break;
-+ return e;
-+}
-
-- if (hdev->sent_cmd) {
-- kfree_skb(hdev->sent_cmd);
-- hdev->sent_cmd = NULL;
-- }
-+void inquiry_cache_update(struct hci_dev *hdev, inquiry_info *info)
-+{
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ struct inquiry_entry *e;
-
-- hdev->close(hdev);
-- }
-+ BT_DBG("cache %p, %s", cache, batostr(&info->bdaddr));
-
--done:
-- hci_req_unlock(hdev);
-- hci_dev_put(hdev);
-+ if (!(e = inquiry_cache_lookup(hdev, &info->bdaddr))) {
-+ /* Entry not in the cache. Add new one. */
-+ if (!(e = kmalloc(sizeof(struct inquiry_entry), GFP_ATOMIC)))
-+ return;
-+ memset(e, 0, sizeof(struct inquiry_entry));
-+ e->next = cache->list;
-+ cache->list = e;
-+ }
-
-- return ret;
-+ memcpy(&e->info, info, sizeof(inquiry_info));
-+ e->timestamp = jiffies;
-+ cache->timestamp = jiffies;
- }
-
--int hci_dev_close(__u16 dev)
-+int inquiry_cache_dump(struct hci_dev *hdev, int num, __u8 *buf)
- {
-- struct hci_dev *hdev;
--
-- if (!(hdev = hci_dev_get(dev)))
-- return -ENODEV;
-+ struct inquiry_cache *cache = &hdev->inq_cache;
-+ inquiry_info *info = (inquiry_info *) buf;
-+ struct inquiry_entry *e;
-+ int copied = 0;
-
-- DBG("%s %p", hdev->name, hdev);
-+ for (e = cache->list; e && copied < num; e = e->next, copied++)
-+ memcpy(info++, &e->info, sizeof(inquiry_info));
-
-- hci_req_cancel(hdev, ENODEV);
-- hci_req_lock(hdev);
-+ BT_DBG("cache %p, copied %d", cache, copied);
-+ return copied;
-+}
-
-- if (!(hdev->flags & HCI_UP))
-- goto done;
-+static void hci_inq_req(struct hci_dev *hdev, unsigned long opt)
-+{
-+ struct hci_inquiry_req *ir = (struct hci_inquiry_req *) opt;
-+ inquiry_cp ic;
-
-- /* Kill RX and TX tasks */
-- tasklet_kill(&hdev->rx_task);
-- tasklet_kill(&hdev->tx_task);
-+ BT_DBG("%s", hdev->name);
-
-- inquiry_cache_flush(&hdev->inq_cache);
-+ if (test_bit(HCI_INQUIRY, &hdev->flags))
-+ return;
-
-- hci_conn_hash_flush(hdev);
-+ /* Start Inquiry */
-+ memcpy(&ic.lap, &ir->lap, 3);
-+ ic.length = ir->length;
-+ ic.num_rsp = ir->num_rsp;
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_INQUIRY, INQUIRY_CP_SIZE, &ic);
-+}
-
-- /* Clear flags */
-- hdev->flags &= HCI_SOCK;
-- hdev->flags |= HCI_NORMAL;
-+int hci_inquiry(unsigned long arg)
-+{
-+ struct hci_inquiry_req ir;
-+ struct hci_dev *hdev;
-+ int err = 0, do_inquiry = 0, max_rsp;
-+ long timeo;
-+ __u8 *buf, *ptr;
-
-+ ptr = (void *) arg;
-+ if (copy_from_user(&ir, ptr, sizeof(ir)))
-+ return -EFAULT;
-+
-+ if (!(hdev = hci_dev_get(ir.dev_id)))
-+ return -ENODEV;
-+
-+ hci_dev_lock_bh(hdev);
-+ if (inquiry_cache_age(hdev) > INQUIRY_CACHE_AGE_MAX ||
-+ ir.flags & IREQ_CACHE_FLUSH) {
-+ inquiry_cache_flush(hdev);
-+ do_inquiry = 1;
-+ }
-+ hci_dev_unlock_bh(hdev);
-+
-+ timeo = ir.length * 2 * HZ;
-+ if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0)
-+ goto done;
-+
-+ /* for unlimited number of responses we will use buffer with 255 entries */
-+ max_rsp = (ir.num_rsp == 0) ? 255 : ir.num_rsp;
-+
-+ /* cache_dump can't sleep. Therefore we allocate temp buffer and then
-+ * copy it to the user space.
-+ */
-+ if (!(buf = kmalloc(sizeof(inquiry_info) * max_rsp, GFP_KERNEL))) {
-+ err = -ENOMEM;
-+ goto done;
-+ }
-+
-+ hci_dev_lock_bh(hdev);
-+ ir.num_rsp = inquiry_cache_dump(hdev, max_rsp, buf);
-+ hci_dev_unlock_bh(hdev);
-+
-+ BT_DBG("num_rsp %d", ir.num_rsp);
-+
-+ if (!verify_area(VERIFY_WRITE, ptr, sizeof(ir) +
-+ (sizeof(inquiry_info) * ir.num_rsp))) {
-+ copy_to_user(ptr, &ir, sizeof(ir));
-+ ptr += sizeof(ir);
-+ copy_to_user(ptr, buf, sizeof(inquiry_info) * ir.num_rsp);
-+ } else
-+ err = -EFAULT;
-+
-+ kfree(buf);
-+
-+done:
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
-+/* ---- HCI ioctl helpers ---- */
-+
-+int hci_dev_open(__u16 dev)
-+{
-+ struct hci_dev *hdev;
-+ int ret = 0;
-+
-+ if (!(hdev = hci_dev_get(dev)))
-+ return -ENODEV;
-+
-+ BT_DBG("%s %p", hdev->name, hdev);
-+
-+ hci_req_lock(hdev);
-+
-+ if (test_bit(HCI_UP, &hdev->flags)) {
-+ ret = -EALREADY;
-+ goto done;
-+ }
-+
-+ if (hdev->open(hdev)) {
-+ ret = -EIO;
-+ goto done;
-+ }
-+
-+ if (!test_bit(HCI_RAW, &hdev->flags)) {
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ set_bit(HCI_INIT, &hdev->flags);
-+
-+ //__hci_request(hdev, hci_reset_req, 0, HZ);
-+ ret = __hci_request(hdev, hci_init_req, 0, HCI_INIT_TIMEOUT);
-+
-+ clear_bit(HCI_INIT, &hdev->flags);
-+ }
-+
-+ if (!ret) {
-+ set_bit(HCI_UP, &hdev->flags);
-+ hci_notify(hdev, HCI_DEV_UP);
-+ } else {
-+ /* Init failed, cleanup */
-+ tasklet_kill(&hdev->rx_task);
-+ tasklet_kill(&hdev->tx_task);
-+ tasklet_kill(&hdev->cmd_task);
-+
-+ skb_queue_purge(&hdev->cmd_q);
-+ skb_queue_purge(&hdev->rx_q);
-+
-+ if (hdev->flush)
-+ hdev->flush(hdev);
-+
-+ if (hdev->sent_cmd) {
-+ kfree_skb(hdev->sent_cmd);
-+ hdev->sent_cmd = NULL;
-+ }
-+
-+ hdev->close(hdev);
-+ hdev->flags = 0;
-+ }
-+
-+done:
-+ hci_req_unlock(hdev);
-+ hci_dev_put(hdev);
-+ return ret;
-+}
-+
-+static int hci_dev_do_close(struct hci_dev *hdev)
-+{
-+ BT_DBG("%s %p", hdev->name, hdev);
-+
-+ hci_req_cancel(hdev, ENODEV);
-+ hci_req_lock(hdev);
-+
-+ if (!test_and_clear_bit(HCI_UP, &hdev->flags)) {
-+ hci_req_unlock(hdev);
-+ return 0;
-+ }
-+
-+ /* Kill RX and TX tasks */
-+ tasklet_kill(&hdev->rx_task);
-+ tasklet_kill(&hdev->tx_task);
-+
-+ hci_dev_lock_bh(hdev);
-+ inquiry_cache_flush(hdev);
-+ hci_conn_hash_flush(hdev);
-+ hci_dev_unlock_bh(hdev);
-+
- hci_notify(hdev, HCI_DEV_DOWN);
-
- if (hdev->flush)
-@@ -586,9 +546,9 @@
- /* Reset device */
- skb_queue_purge(&hdev->cmd_q);
- atomic_set(&hdev->cmd_cnt, 1);
-- hdev->flags |= HCI_INIT;
-- __hci_request(hdev, hci_reset_req, 0, HZ);
-- hdev->flags &= ~HCI_INIT;
-+ set_bit(HCI_INIT, &hdev->flags);
-+ __hci_request(hdev, hci_reset_req, 0, HZ/4);
-+ clear_bit(HCI_INIT, &hdev->flags);
-
- /* Kill cmd task */
- tasklet_kill(&hdev->cmd_task);
-@@ -605,17 +565,28 @@
- }
-
- /* After this point our queues are empty
-- * and no tasks are scheduled.
-- */
-+ * and no tasks are scheduled. */
- hdev->close(hdev);
-
--done:
-- hci_req_unlock(hdev);
-- hci_dev_put(hdev);
-+ /* Clear flags */
-+ hdev->flags = 0;
-
-+ hci_req_unlock(hdev);
- return 0;
- }
-
-+int hci_dev_close(__u16 dev)
-+{
-+ struct hci_dev *hdev;
-+ int err;
-+
-+ if (!(hdev = hci_dev_get(dev)))
-+ return -ENODEV;
-+ err = hci_dev_do_close(hdev);
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
- int hci_dev_reset(__u16 dev)
- {
- struct hci_dev *hdev;
-@@ -627,16 +598,17 @@
- hci_req_lock(hdev);
- tasklet_disable(&hdev->tx_task);
-
-- if (!(hdev->flags & HCI_UP))
-+ if (!test_bit(HCI_UP, &hdev->flags))
- goto done;
-
- /* Drop queues */
- skb_queue_purge(&hdev->rx_q);
- skb_queue_purge(&hdev->cmd_q);
-
-- inquiry_cache_flush(&hdev->inq_cache);
--
-+ hci_dev_lock_bh(hdev);
-+ inquiry_cache_flush(hdev);
- hci_conn_hash_flush(hdev);
-+ hci_dev_unlock_bh(hdev);
-
- if (hdev->flush)
- hdev->flush(hdev);
-@@ -650,7 +622,6 @@
- tasklet_enable(&hdev->tx_task);
- hci_req_unlock(hdev);
- hci_dev_put(hdev);
--
- return ret;
- }
-
-@@ -669,30 +640,11 @@
- return ret;
- }
-
--int hci_dev_setauth(unsigned long arg)
--{
-- struct hci_dev *hdev;
-- struct hci_dev_req dr;
-- int ret = 0;
--
-- if (copy_from_user(&dr, (void *) arg, sizeof(dr)))
-- return -EFAULT;
--
-- if (!(hdev = hci_dev_get(dr.dev_id)))
-- return -ENODEV;
--
-- ret = hci_request(hdev, hci_auth_req, dr.dev_opt, HCI_INIT_TIMEOUT);
--
-- hci_dev_put(hdev);
--
-- return ret;
--}
--
--int hci_dev_setscan(unsigned long arg)
-+int hci_dev_cmd(unsigned int cmd, unsigned long arg)
- {
- struct hci_dev *hdev;
- struct hci_dev_req dr;
-- int ret = 0;
-+ int err = 0;
-
- if (copy_from_user(&dr, (void *) arg, sizeof(dr)))
- return -EFAULT;
-@@ -700,48 +652,78 @@
- if (!(hdev = hci_dev_get(dr.dev_id)))
- return -ENODEV;
-
-- ret = hci_request(hdev, hci_scan_req, dr.dev_opt, HCI_INIT_TIMEOUT);
--
-- hci_dev_put(hdev);
-+ switch (cmd) {
-+ case HCISETAUTH:
-+ err = hci_request(hdev, hci_auth_req, dr.dev_opt, HCI_INIT_TIMEOUT);
-+ break;
-
-- return ret;
--}
-+ case HCISETENCRYPT:
-+ if (!lmp_encrypt_capable(hdev)) {
-+ err = -EOPNOTSUPP;
-+ break;
-+ }
-
--int hci_dev_setptype(unsigned long arg)
--{
-- struct hci_dev *hdev;
-- struct hci_dev_req dr;
-- int ret = 0;
-+ if (!test_bit(HCI_AUTH, &hdev->flags)) {
-+ /* Auth must be enabled first */
-+ err = hci_request(hdev, hci_auth_req,
-+ dr.dev_opt, HCI_INIT_TIMEOUT);
-+ if (err)
-+ break;
-+ }
-+
-+ err = hci_request(hdev, hci_encrypt_req,
-+ dr.dev_opt, HCI_INIT_TIMEOUT);
-+ break;
-+
-+ case HCISETSCAN:
-+ err = hci_request(hdev, hci_scan_req, dr.dev_opt, HCI_INIT_TIMEOUT);
-+ break;
-+
-+ case HCISETPTYPE:
-+ hdev->pkt_type = (__u16) dr.dev_opt;
-+ break;
-+
-+ case HCISETLINKPOL:
-+ hdev->link_policy = (__u16) dr.dev_opt;
-+ break;
-
-- if (copy_from_user(&dr, (void *) arg, sizeof(dr)))
-- return -EFAULT;
-+ case HCISETLINKMODE:
-+ hdev->link_mode = ((__u16) dr.dev_opt) & (HCI_LM_MASTER | HCI_LM_ACCEPT);
-+ break;
-
-- if (!(hdev = hci_dev_get(dr.dev_id)))
-- return -ENODEV;
-+ case HCISETACLMTU:
-+ hdev->acl_mtu = *((__u16 *)&dr.dev_opt + 1);
-+ hdev->acl_pkts = *((__u16 *)&dr.dev_opt + 0);
-+ break;
-
-- hdev->pkt_type = (__u16) dr.dev_opt;
-+ case HCISETSCOMTU:
-+ hdev->sco_mtu = *((__u16 *)&dr.dev_opt + 1);
-+ hdev->sco_pkts = *((__u16 *)&dr.dev_opt + 0);
-+ break;
-
-+ default:
-+ err = -EINVAL;
-+ break;
-+ }
- hci_dev_put(hdev);
--
-- return ret;
-+ return err;
- }
-
--int hci_dev_list(unsigned long arg)
-+int hci_get_dev_list(unsigned long arg)
- {
- struct hci_dev_list_req *dl;
- struct hci_dev_req *dr;
-- struct hci_dev *hdev;
-- int i, n, size;
-+ struct list_head *p;
-+ int n = 0, size;
- __u16 dev_num;
-
- if (get_user(dev_num, (__u16 *) arg))
- return -EFAULT;
-
-- /* Avoid long loop, overflow */
-- if (dev_num > 2048)
-+ if (!dev_num)
- return -EINVAL;
-
-- size = dev_num * sizeof(struct hci_dev_req) + sizeof(__u16);
-+ size = dev_num * sizeof(*dr) + sizeof(*dl);
-
- if (verify_area(VERIFY_WRITE, (void *) arg, size))
- return -EFAULT;
-@@ -750,25 +732,27 @@
- return -ENOMEM;
- dr = dl->dev_req;
-
-- spin_lock_bh(&hdev_list_lock);
-- for (i = 0, n = 0; i < HCI_MAX_DEV && n < dev_num; i++) {
-- if ((hdev = hdev_list[i])) {
-- (dr + n)->dev_id = hdev->id;
-- (dr + n)->dev_opt = hdev->flags;
-- n++;
-- }
-+ read_lock_bh(&hdev_list_lock);
-+ list_for_each(p, &hdev_list) {
-+ struct hci_dev *hdev;
-+ hdev = list_entry(p, struct hci_dev, list);
-+ (dr + n)->dev_id = hdev->id;
-+ (dr + n)->dev_opt = hdev->flags;
-+ if (++n >= dev_num)
-+ break;
- }
-- spin_unlock_bh(&hdev_list_lock);
-+ read_unlock_bh(&hdev_list_lock);
-
- dl->dev_num = n;
-- size = n * sizeof(struct hci_dev_req) + sizeof(__u16);
-+ size = n * sizeof(*dr) + sizeof(*dl);
-
- copy_to_user((void *) arg, dl, size);
-+ kfree(dl);
-
- return 0;
- }
-
--int hci_dev_info(unsigned long arg)
-+int hci_get_dev_info(unsigned long arg)
- {
- struct hci_dev *hdev;
- struct hci_dev_info di;
-@@ -786,9 +770,11 @@
- di.flags = hdev->flags;
- di.pkt_type = hdev->pkt_type;
- di.acl_mtu = hdev->acl_mtu;
-- di.acl_max = hdev->acl_max;
-+ di.acl_pkts = hdev->acl_pkts;
- di.sco_mtu = hdev->sco_mtu;
-- di.sco_max = hdev->sco_max;
-+ di.sco_pkts = hdev->sco_pkts;
-+ di.link_policy = hdev->link_policy;
-+ di.link_mode = hdev->link_mode;
-
- memcpy(&di.stat, &hdev->stat, sizeof(di.stat));
- memcpy(&di.features, &hdev->features, sizeof(di.features));
-@@ -801,258 +787,168 @@
- return err;
- }
-
--__u32 hci_dev_setmode(struct hci_dev *hdev, __u32 mode)
--{
-- __u32 omode = hdev->flags & HCI_MODE_MASK;
--
-- hdev->flags &= ~HCI_MODE_MASK;
-- hdev->flags |= (mode & HCI_MODE_MASK);
-
-- return omode;
--}
-+/* ---- Interface to HCI drivers ---- */
-
--__u32 hci_dev_getmode(struct hci_dev *hdev)
-+/* Register HCI device */
-+int hci_register_dev(struct hci_dev *hdev)
- {
-- return hdev->flags & HCI_MODE_MASK;
--}
-+ struct list_head *head = &hdev_list, *p;
-+ int id = 0;
-
--int hci_conn_list(unsigned long arg)
--{
-- struct hci_conn_list_req req, *cl;
-- struct hci_conn_info *ci;
-- struct hci_dev *hdev;
-- struct list_head *p;
-- int n = 0, size;
-+ BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
-
-- if (copy_from_user(&req, (void *) arg, sizeof(req)))
-- return -EFAULT;
-+ if (!hdev->open || !hdev->close || !hdev->destruct)
-+ return -EINVAL;
-
-- if (!(hdev = hci_dev_get(req.dev_id)))
-- return -ENODEV;
-+ write_lock_bh(&hdev_list_lock);
-
-- /* Set a limit to avoid overlong loops, and also numeric overflow - AC */
-- if(req.conn_num < 2048)
-- return -EINVAL;
-+ /* Find first available device id */
-+ list_for_each(p, &hdev_list) {
-+ if (list_entry(p, struct hci_dev, list)->id != id)
-+ break;
-+ head = p; id++;
-+ }
-
-- size = req.conn_num * sizeof(struct hci_conn_info) + sizeof(req);
--
-- if (!(cl = kmalloc(size, GFP_KERNEL)))
-- return -ENOMEM;
-- ci = cl->conn_info;
-+ sprintf(hdev->name, "hci%d", id);
-+ hdev->id = id;
-+ list_add(&hdev->list, head);
-
-- local_bh_disable();
-- conn_hash_lock(&hdev->conn_hash);
-- list_for_each(p, &hdev->conn_hash.list) {
-- register struct hci_conn *c;
-- c = list_entry(p, struct hci_conn, list);
-+ atomic_set(&hdev->refcnt, 1);
-+ spin_lock_init(&hdev->lock);
-+
-+ hdev->flags = 0;
-+ hdev->pkt_type = (HCI_DM1 | HCI_DH1 | HCI_HV1);
-+ hdev->link_mode = (HCI_LM_ACCEPT);
-
-- (ci + n)->handle = c->handle;
-- bacpy(&(ci + n)->bdaddr, &c->dst);
-- n++;
-- }
-- conn_hash_unlock(&hdev->conn_hash);
-- local_bh_enable();
--
-- cl->dev_id = hdev->id;
-- cl->conn_num = n;
-- size = n * sizeof(struct hci_conn_info) + sizeof(req);
-+ tasklet_init(&hdev->cmd_task, hci_cmd_task,(unsigned long) hdev);
-+ tasklet_init(&hdev->rx_task, hci_rx_task, (unsigned long) hdev);
-+ tasklet_init(&hdev->tx_task, hci_tx_task, (unsigned long) hdev);
-
-- hci_dev_put(hdev);
-+ skb_queue_head_init(&hdev->rx_q);
-+ skb_queue_head_init(&hdev->cmd_q);
-+ skb_queue_head_init(&hdev->raw_q);
-
-- if(copy_to_user((void *) arg, cl, size))
-- return -EFAULT;
-- return 0;
--}
-+ init_waitqueue_head(&hdev->req_wait_q);
-+ init_MUTEX(&hdev->req_lock);
-
--int hci_inquiry(unsigned long arg)
--{
-- struct inquiry_cache *cache;
-- struct hci_inquiry_req ir;
-- struct hci_dev *hdev;
-- int err = 0, do_inquiry = 0;
-- long timeo;
-- __u8 *buf, *ptr;
-+ inquiry_cache_init(hdev);
-
-- ptr = (void *) arg;
-- if (copy_from_user(&ir, ptr, sizeof(ir)))
-- return -EFAULT;
-+ conn_hash_init(hdev);
-
-- if (!(hdev = hci_dev_get(ir.dev_id)))
-- return -ENODEV;
-+ memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));
-
-- cache = &hdev->inq_cache;
-+ atomic_set(&hdev->promisc, 0);
-
-- inquiry_cache_lock(cache);
-- if (inquiry_cache_age(cache) > INQUIRY_CACHE_AGE_MAX || ir.flags & IREQ_CACHE_FLUSH) {
-- inquiry_cache_flush(cache);
-- do_inquiry = 1;
-- }
-- inquiry_cache_unlock(cache);
-+ MOD_INC_USE_COUNT;
-
-- /* Limit inquiry time, also avoid overflows */
-+ write_unlock_bh(&hdev_list_lock);
-
-- if(ir.length > 2048 || ir.num_rsp > 2048)
-- {
-- err = -EINVAL;
-- goto done;
-- }
-+ hci_notify(hdev, HCI_DEV_REG);
-+ hci_run_hotplug(hdev->name, "register");
-
-- timeo = ir.length * 2 * HZ;
-- if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0)
-- goto done;
-+ return id;
-+}
-
-- /* cache_dump can't sleep. Therefore we allocate temp buffer and then
-- * copy it to the user space.
-- */
-- if (!(buf = kmalloc(sizeof(inquiry_info) * ir.num_rsp, GFP_KERNEL))) {
-- err = -ENOMEM;
-- goto done;
-- }
-- ir.num_rsp = inquiry_cache_dump(cache, ir.num_rsp, buf);
-+/* Unregister HCI device */
-+int hci_unregister_dev(struct hci_dev *hdev)
-+{
-+ BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
-
-- DBG("num_rsp %d", ir.num_rsp);
-+ write_lock_bh(&hdev_list_lock);
-+ list_del(&hdev->list);
-+ write_unlock_bh(&hdev_list_lock);
-
-- if (!verify_area(VERIFY_WRITE, ptr, sizeof(ir) + (sizeof(inquiry_info) * ir.num_rsp))) {
-- copy_to_user(ptr, &ir, sizeof(ir));
-- ptr += sizeof(ir);
-- copy_to_user(ptr, buf, sizeof(inquiry_info) * ir.num_rsp);
-- } else
-- err = -EFAULT;
-+ hci_dev_do_close(hdev);
-
-- kfree(buf);
-+ hci_notify(hdev, HCI_DEV_UNREG);
-+ hci_run_hotplug(hdev->name, "unregister");
-
--done:
- hci_dev_put(hdev);
-
-- return err;
-+ MOD_DEC_USE_COUNT;
-+ return 0;
- }
-
--/* Interface to HCI drivers */
--
--/* Register HCI device */
--int hci_register_dev(struct hci_dev *hdev)
-+/* Suspend HCI device */
-+int hci_suspend_dev(struct hci_dev *hdev)
- {
-- int i;
--
-- DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
--
-- /* Find free slot */
-- spin_lock_bh(&hdev_list_lock);
-- for (i = 0; i < HCI_MAX_DEV; i++) {
-- if (!hdev_list[i]) {
-- hdev_list[i] = hdev;
-+ hci_notify(hdev, HCI_DEV_SUSPEND);
-+ hci_run_hotplug(hdev->name, "suspend");
-+ return 0;
-+}
-
-- sprintf(hdev->name, "hci%d", i);
-- atomic_set(&hdev->refcnt, 0);
-- hdev->id = i;
-- hdev->flags = HCI_NORMAL;
-+/* Resume HCI device */
-+int hci_resume_dev(struct hci_dev *hdev)
-+{
-+ hci_notify(hdev, HCI_DEV_RESUME);
-+ hci_run_hotplug(hdev->name, "resume");
-+ return 0;
-+}
-
-- hdev->pkt_type = (HCI_DM1 | HCI_DH1);
--
-- tasklet_init(&hdev->cmd_task, hci_cmd_task, (unsigned long) hdev);
-- tasklet_init(&hdev->rx_task, hci_rx_task, (unsigned long) hdev);
-- tasklet_init(&hdev->tx_task, hci_tx_task, (unsigned long) hdev);
--
-- skb_queue_head_init(&hdev->rx_q);
-- skb_queue_head_init(&hdev->cmd_q);
-- skb_queue_head_init(&hdev->raw_q);
--
-- init_waitqueue_head(&hdev->req_wait_q);
-- init_MUTEX(&hdev->req_lock);
--
-- inquiry_cache_init(&hdev->inq_cache);
--
-- conn_hash_init(&hdev->conn_hash);
--
-- memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));
--
-- hci_notify(hdev, HCI_DEV_REG);
--
-- MOD_INC_USE_COUNT;
-- break;
-- }
-- }
-- spin_unlock_bh(&hdev_list_lock);
--
-- return (i == HCI_MAX_DEV) ? -1 : i;
--}
--
--/* Unregister HCI device */
--int hci_unregister_dev(struct hci_dev *hdev)
-+/* Receive frame from HCI drivers */
-+int hci_recv_frame(struct sk_buff *skb)
- {
-- int i;
--
-- DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
--
-- if (hdev->flags & HCI_UP)
-- hci_dev_close(hdev->id);
-+ struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-
-- /* Find device slot */
-- spin_lock(&hdev_list_lock);
-- for (i = 0; i < HCI_MAX_DEV; i++) {
-- if (hdev_list[i] == hdev) {
-- hdev_list[i] = NULL;
-- MOD_DEC_USE_COUNT;
-- break;
-- }
-+ if (!hdev || (!test_bit(HCI_UP, &hdev->flags) &&
-+ !test_bit(HCI_INIT, &hdev->flags)) ) {
-+ kfree_skb(skb);
-+ return -1;
- }
-- spin_unlock(&hdev_list_lock);
--
-- hci_notify(hdev, HCI_DEV_UNREG);
-
-- /* Sleep while device is in use */
-- while (atomic_read(&hdev->refcnt)) {
-- int sleep_cnt = 100;
-+ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-
-- DBG("%s sleeping on lock %d", hdev->name, atomic_read(&hdev->refcnt));
-+ /* Incomming skb */
-+ bluez_cb(skb)->incomming = 1;
-
-- sleep_on_timeout(&hdev->req_wait_q, HZ*10);
-- if (!(--sleep_cnt))
-- break;
-- }
-+ /* Time stamp */
-+ do_gettimeofday(&skb->stamp);
-
-+ /* Queue frame for rx task */
-+ skb_queue_tail(&hdev->rx_q, skb);
-+ hci_sched_rx(hdev);
- return 0;
- }
-
--/* Interface to upper protocols */
-+/* ---- Interface to upper protocols ---- */
-
- /* Register/Unregister protocols.
-- * hci_task_lock is used to ensure that no tasks are running.
-- */
--int hci_register_proto(struct hci_proto *hproto)
-+ * hci_task_lock is used to ensure that no tasks are running. */
-+int hci_register_proto(struct hci_proto *hp)
- {
- int err = 0;
-
-- DBG("%p name %s", hproto, hproto->name);
-+ BT_DBG("%p name %s id %d", hp, hp->name, hp->id);
-
-- if (hproto->id >= HCI_MAX_PROTO)
-+ if (hp->id >= HCI_MAX_PROTO)
- return -EINVAL;
-
- write_lock_bh(&hci_task_lock);
-
-- if (!hproto_list[hproto->id])
-- hproto_list[hproto->id] = hproto;
-+ if (!hci_proto[hp->id])
-+ hci_proto[hp->id] = hp;
- else
-- err = -1;
-+ err = -EEXIST;
-
- write_unlock_bh(&hci_task_lock);
-
- return err;
- }
-
--int hci_unregister_proto(struct hci_proto *hproto)
-+int hci_unregister_proto(struct hci_proto *hp)
- {
- int err = 0;
-
-- DBG("%p name %s", hproto, hproto->name);
-+ BT_DBG("%p name %s id %d", hp, hp->name, hp->id);
-
-- if (hproto->id > HCI_MAX_PROTO)
-+ if (hp->id >= HCI_MAX_PROTO)
- return -EINVAL;
-
- write_lock_bh(&hci_task_lock);
-
-- if (hproto_list[hproto->id])
-- hproto_list[hproto->id] = NULL;
-+ if (hci_proto[hp->id])
-+ hci_proto[hp->id] = NULL;
- else
- err = -ENOENT;
-
-@@ -1070,10 +966,14 @@
- return -ENODEV;
- }
-
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
-+
-+ if (atomic_read(&hdev->promisc)) {
-+ /* Time stamp */
-+ do_gettimeofday(&skb->stamp);
-
-- if (hdev->flags & HCI_SOCK)
- hci_send_to_sock(hdev, skb);
-+ }
-
- /* Get rid of skb owner, prior to sending to the driver. */
- skb_orphan(skb);
-@@ -1081,128 +981,6 @@
- return hdev->send(skb);
- }
-
--/* Connection scheduler */
--static inline struct hci_conn *hci_low_sent(struct hci_dev *hdev, __u8 type, int *quote)
--{
-- struct conn_hash *h = &hdev->conn_hash;
-- struct hci_conn *conn = NULL;
-- int num = 0, min = 0xffff;
-- struct list_head *p;
--
-- conn_hash_lock(h);
-- list_for_each(p, &h->list) {
-- register struct hci_conn *c;
--
-- c = list_entry(p, struct hci_conn, list);
--
-- if (c->type != type || skb_queue_empty(&c->data_q))
-- continue;
-- num++;
--
-- if (c->sent < min) {
-- min = c->sent;
-- conn = c;
-- }
-- }
-- conn_hash_unlock(h);
--
-- if (conn) {
-- int q = hdev->acl_cnt / num;
-- *quote = q ? q : 1;
-- } else
-- *quote = 0;
--
-- DBG("conn %p quote %d", conn, *quote);
--
-- return conn;
--}
--
--static inline void hci_sched_acl(struct hci_dev *hdev)
--{
-- struct hci_conn *conn;
-- struct sk_buff *skb;
-- int quote;
--
-- DBG("%s", hdev->name);
--
-- while (hdev->acl_cnt && (conn = hci_low_sent(hdev, ACL_LINK, &quote))) {
-- while (quote && (skb = skb_dequeue(&conn->data_q))) {
-- DBG("skb %p len %d", skb, skb->len);
--
-- hci_send_frame(skb);
--
-- conn->sent++;
-- hdev->acl_cnt--;
-- quote--;
-- }
-- }
--}
--
--/* Schedule SCO */
--static inline void hci_sched_sco(struct hci_dev *hdev)
--{
-- /* FIXME: For now we queue SCO packets to the raw queue
--
-- while (hdev->sco_cnt && (skb = skb_dequeue(&conn->data_q))) {
-- hci_send_frame(skb);
-- conn->sco_sent++;
-- hdev->sco_cnt--;
-- }
-- */
--}
--
--/* Get data from the previously sent command */
--static void * hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf)
--{
-- hci_command_hdr *hc;
--
-- if (!hdev->sent_cmd)
-- return NULL;
--
-- hc = (void *) hdev->sent_cmd->data;
--
-- if (hc->opcode != __cpu_to_le16(cmd_opcode_pack(ogf, ocf)))
-- return NULL;
--
-- DBG("%s ogf 0x%x ocf 0x%x", hdev->name, ogf, ocf);
--
-- return hdev->sent_cmd->data + HCI_COMMAND_HDR_SIZE;
--}
--
--/* Send raw HCI frame */
--int hci_send_raw(struct sk_buff *skb)
--{
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
--
-- if (!hdev) {
-- kfree_skb(skb);
-- return -ENODEV;
-- }
--
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
--
-- if (hdev->flags & HCI_NORMAL) {
-- /* Queue frame according it's type */
-- switch (skb->pkt_type) {
-- case HCI_COMMAND_PKT:
-- skb_queue_tail(&hdev->cmd_q, skb);
-- hci_sched_cmd(hdev);
-- return 0;
--
-- case HCI_ACLDATA_PKT:
-- case HCI_SCODATA_PKT:
-- /* FIXME:
-- * Check header here and queue to apropriate connection.
-- */
-- break;
-- }
-- }
--
-- skb_queue_tail(&hdev->raw_q, skb);
-- hci_sched_tx(hdev);
-- return 0;
--}
--
- /* Send HCI command */
- int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void *param)
- {
-@@ -1210,10 +988,10 @@
- hci_command_hdr *hc;
- struct sk_buff *skb;
-
-- DBG("%s ogf 0x%x ocf 0x%x plen %d", hdev->name, ogf, ocf, plen);
-+ BT_DBG("%s ogf 0x%x ocf 0x%x plen %d", hdev->name, ogf, ocf, plen);
-
- if (!(skb = bluez_skb_alloc(len, GFP_ATOMIC))) {
-- ERR("%s Can't allocate memory for HCI command", hdev->name);
-+ BT_ERR("%s Can't allocate memory for HCI command", hdev->name);
- return -ENOMEM;
- }
-
-@@ -1224,7 +1002,7 @@
- if (plen)
- memcpy(skb_put(skb, plen), param, plen);
-
-- DBG("skb len %d", skb->len);
-+ BT_DBG("skb len %d", skb->len);
-
- skb->pkt_type = HCI_COMMAND_PKT;
- skb->dev = (void *) hdev;
-@@ -1234,10 +1012,28 @@
- return 0;
- }
-
-+/* Get data from the previously sent command */
-+void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf)
-+{
-+ hci_command_hdr *hc;
-+
-+ if (!hdev->sent_cmd)
-+ return NULL;
-+
-+ hc = (void *) hdev->sent_cmd->data;
-+
-+ if (hc->opcode != __cpu_to_le16(cmd_opcode_pack(ogf, ocf)))
-+ return NULL;
-+
-+ BT_DBG("%s ogf 0x%x ocf 0x%x", hdev->name, ogf, ocf);
-+
-+ return hdev->sent_cmd->data + HCI_COMMAND_HDR_SIZE;
-+}
-+
- /* Send ACL data */
- static void hci_add_acl_hdr(struct sk_buff *skb, __u16 handle, __u16 flags)
- {
-- int len = skb->len;
-+ int len = skb->len;
- hci_acl_hdr *ah;
-
- ah = (hci_acl_hdr *) skb_push(skb, HCI_ACL_HDR_SIZE);
-@@ -1252,7 +1048,7 @@
- struct hci_dev *hdev = conn->hdev;
- struct sk_buff *list;
-
-- DBG("%s conn %p flags 0x%x", hdev->name, conn, flags);
-+ BT_DBG("%s conn %p flags 0x%x", hdev->name, conn, flags);
-
- skb->dev = (void *) hdev;
- skb->pkt_type = HCI_ACLDATA_PKT;
-@@ -1260,12 +1056,12 @@
-
- if (!(list = skb_shinfo(skb)->frag_list)) {
- /* Non fragmented */
-- DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len);
-+ BT_DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len);
-
- skb_queue_tail(&conn->data_q, skb);
- } else {
- /* Fragmented */
-- DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-+ BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-
- skb_shinfo(skb)->frag_list = NULL;
-
-@@ -1280,7 +1076,7 @@
- skb->pkt_type = HCI_ACLDATA_PKT;
- hci_add_acl_hdr(skb, conn->handle, flags | ACL_CONT);
-
-- DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-+ BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
-
- __skb_queue_tail(&conn->data_q, skb);
- } while (list);
-@@ -1298,7 +1094,7 @@
- struct hci_dev *hdev = conn->hdev;
- hci_sco_hdr hs;
-
-- DBG("%s len %d", hdev->name, skb->len);
-+ BT_DBG("%s len %d", hdev->name, skb->len);
-
- if (skb->len > hdev->sco_mtu) {
- kfree_skb(skb);
-@@ -1315,544 +1111,136 @@
- skb->pkt_type = HCI_SCODATA_PKT;
- skb_queue_tail(&conn->data_q, skb);
- hci_sched_tx(hdev);
--
- return 0;
- }
-
--/* Handle HCI Event packets */
--
--/* Command Complete OGF LINK_CTL */
--static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command complete: ogf LINK_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Complete OGF LINK_POLICY */
--static void hci_cc_link_policy(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s: Command complete: ogf LINK_POLICY ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Complete OGF HOST_CTL */
--static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
--{
-- __u8 status, param;
-- void *sent;
--
--
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- case OCF_RESET:
-- status = *((__u8 *) skb->data);
--
-- hci_req_complete(hdev, status);
-- break;
--
-- case OCF_SET_EVENT_FLT:
-- status = *((__u8 *) skb->data);
--
-- if (status) {
-- DBG("%s SET_EVENT_FLT failed %d", hdev->name, status);
-- } else {
-- DBG("%s SET_EVENT_FLT succeseful", hdev->name);
-- }
-- break;
--
-- case OCF_WRITE_AUTH_ENABLE:
-- if (!(sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE)))
-- break;
--
-- status = *((__u8 *) skb->data);
-- param = *((__u8 *) sent);
-+/* ---- HCI TX task (outgoing data) ---- */
-
-- if (!status) {
-- if (param == AUTH_ENABLED)
-- hdev->flags |= HCI_AUTH;
-- else
-- hdev->flags &= ~HCI_AUTH;
-- }
-- hci_req_complete(hdev, status);
-- break;
--
-- case OCF_WRITE_CA_TIMEOUT:
-- status = *((__u8 *) skb->data);
--
-- if (status) {
-- DBG("%s OCF_WRITE_CA_TIMEOUT failed %d", hdev->name, status);
-- } else {
-- DBG("%s OCF_WRITE_CA_TIMEOUT succeseful", hdev->name);
-- }
-- break;
--
-- case OCF_WRITE_PG_TIMEOUT:
-- status = *((__u8 *) skb->data);
--
-- if (status) {
-- DBG("%s OCF_WRITE_PG_TIMEOUT failed %d", hdev->name, status);
-- } else {
-- DBG("%s: OCF_WRITE_PG_TIMEOUT succeseful", hdev->name);
-- }
-- break;
--
-- case OCF_WRITE_SCAN_ENABLE:
-- if (!(sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE)))
-- break;
-- status = *((__u8 *) skb->data);
-- param = *((__u8 *) sent);
--
-- DBG("param 0x%x", param);
--
-- if (!status) {
-- switch (param) {
-- case IS_ENA_PS_ENA:
-- hdev->flags |= HCI_PSCAN | HCI_ISCAN;
-- break;
--
-- case IS_ENA_PS_DIS:
-- hdev->flags &= ~HCI_PSCAN;
-- hdev->flags |= HCI_ISCAN;
-- break;
--
-- case IS_DIS_PS_ENA:
-- hdev->flags &= ~HCI_ISCAN;
-- hdev->flags |= HCI_PSCAN;
-- break;
--
-- default:
-- hdev->flags &= ~(HCI_ISCAN | HCI_PSCAN);
-- break;
-- };
-- }
-- hci_req_complete(hdev, status);
-- break;
--
-- default:
-- DBG("%s Command complete: ogf HOST_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Complete OGF INFO_PARAM */
--static void hci_cc_info_param(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+/* HCI Connection scheduler */
-+static inline struct hci_conn *hci_low_sent(struct hci_dev *hdev, __u8 type, int *quote)
- {
-- read_local_features_rp *lf;
-- read_buffer_size_rp *bs;
-- read_bd_addr_rp *ba;
--
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- case OCF_READ_LOCAL_FEATURES:
-- lf = (read_local_features_rp *) skb->data;
--
-- if (lf->status) {
-- DBG("%s READ_LOCAL_FEATURES failed %d", hdev->name, lf->status);
-- break;
-- }
--
-- memcpy(hdev->features, lf->features, sizeof(hdev->features));
--
-- /* Adjust default settings according to features
-- * supported by device. */
-- if (hdev->features[0] & LMP_3SLOT)
-- hdev->pkt_type |= (HCI_DM3 | HCI_DH3);
--
-- if (hdev->features[0] & LMP_5SLOT)
-- hdev->pkt_type |= (HCI_DM5 | HCI_DH5);
--
-- DBG("%s: features 0x%x 0x%x 0x%x", hdev->name, lf->features[0], lf->features[1], lf->features[2]);
--
-- break;
--
-- case OCF_READ_BUFFER_SIZE:
-- bs = (read_buffer_size_rp *) skb->data;
--
-- if (bs->status) {
-- DBG("%s READ_BUFFER_SIZE failed %d", hdev->name, bs->status);
-- break;
-- }
--
-- hdev->acl_mtu = __le16_to_cpu(bs->acl_mtu);
-- hdev->sco_mtu = bs->sco_mtu;
-- hdev->acl_max = hdev->acl_cnt = __le16_to_cpu(bs->acl_max_pkt);
-- hdev->sco_max = hdev->sco_cnt = __le16_to_cpu(bs->sco_max_pkt);
--
-- DBG("%s mtu: acl %d, sco %d max_pkt: acl %d, sco %d", hdev->name,
-- hdev->acl_mtu, hdev->sco_mtu, hdev->acl_max, hdev->sco_max);
-+ struct conn_hash *h = &hdev->conn_hash;
-+ struct hci_conn *conn = NULL;
-+ int num = 0, min = ~0;
-+ struct list_head *p;
-
-- break;
-+ /* We don't have to lock device here. Connections are always
-+ * added and removed with TX task disabled. */
-+ list_for_each(p, &h->list) {
-+ struct hci_conn *c;
-+ c = list_entry(p, struct hci_conn, list);
-
-- case OCF_READ_BD_ADDR:
-- ba = (read_bd_addr_rp *) skb->data;
-+ if (c->type != type || c->state != BT_CONNECTED
-+ || skb_queue_empty(&c->data_q))
-+ continue;
-+ num++;
-
-- if (!ba->status) {
-- bacpy(&hdev->bdaddr, &ba->bdaddr);
-- } else {
-- DBG("%s: READ_BD_ADDR failed %d", hdev->name, ba->status);
-+ if (c->sent < min) {
-+ min = c->sent;
-+ conn = c;
- }
-+ }
-
-- hci_req_complete(hdev, ba->status);
-- break;
-+ if (conn) {
-+ int cnt = (type == ACL_LINK ? hdev->acl_cnt : hdev->sco_cnt);
-+ int q = cnt / num;
-+ *quote = q ? q : 1;
-+ } else
-+ *quote = 0;
-
-- default:
-- DBG("%s Command complete: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-- break;
-- };
-+ BT_DBG("conn %p quote %d", conn, *quote);
-+ return conn;
- }
-
--/* Command Status OGF LINK_CTL */
--static void hci_cs_link_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+static inline void hci_acl_tx_to(struct hci_dev *hdev)
- {
-- struct hci_proto * hp;
--
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- case OCF_CREATE_CONN:
-- if (status) {
-- create_conn_cp *cc = hci_sent_cmd_data(hdev, OGF_LINK_CTL, OCF_CREATE_CONN);
--
-- if (!cc)
-- break;
--
-- DBG("%s Create connection error: status 0x%x %s", hdev->name,
-- status, batostr(&cc->bdaddr));
-+ struct conn_hash *h = &hdev->conn_hash;
-+ struct list_head *p;
-+ struct hci_conn *c;
-
-- /* Notify upper protocols */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_cfm) {
-- tasklet_disable(&hdev->tx_task);
-- hp->connect_cfm(hdev, &cc->bdaddr, status, NULL);
-- tasklet_enable(&hdev->tx_task);
-- }
-- }
-- break;
-+ BT_ERR("%s ACL tx timeout", hdev->name);
-
-- case OCF_INQUIRY:
-- if (status) {
-- DBG("%s Inquiry error: status 0x%x", hdev->name, status);
-- hci_req_complete(hdev, status);
-+ /* Kill stalled connections */
-+ list_for_each(p, &h->list) {
-+ c = list_entry(p, struct hci_conn, list);
-+ if (c->type == ACL_LINK && c->sent) {
-+ BT_ERR("%s killing stalled ACL connection %s",
-+ hdev->name, batostr(&c->dst));
-+ hci_acl_disconn(c, 0x13);
- }
-- break;
--
-- default:
-- DBG("%s Command status: ogf LINK_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Status OGF LINK_POLICY */
--static void hci_cs_link_policy(struct hci_dev *hdev, __u16 ocf, __u8 status)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command status: ogf HOST_POLICY ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Status OGF HOST_CTL */
--static void hci_cs_host_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
--{
-- DBG("%s ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command status: ogf HOST_CTL ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Command Status OGF INFO_PARAM */
--static void hci_cs_info_param(struct hci_dev *hdev, __u16 ocf, __u8 status)
--{
-- DBG("%s: hci_cs_info_param: ocf 0x%x", hdev->name, ocf);
--
-- switch (ocf) {
-- default:
-- DBG("%s Command status: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-- break;
-- };
--}
--
--/* Inquiry Complete */
--static void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- __u8 status = *((__u8 *) skb->data);
--
-- DBG("%s status %d", hdev->name, status);
--
-- hci_req_complete(hdev, status);
-+ }
- }
-
--/* Inquiry Result */
--static void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+static inline void hci_sched_acl(struct hci_dev *hdev)
- {
-- inquiry_info *info = (inquiry_info *) (skb->data + 1);
-- int num_rsp = *((__u8 *) skb->data);
--
-- DBG("%s num_rsp %d", hdev->name, num_rsp);
-+ struct hci_conn *conn;
-+ struct sk_buff *skb;
-+ int quote;
-
-- for (; num_rsp; num_rsp--)
-- inquiry_cache_update(&hdev->inq_cache, info++);
--}
-+ BT_DBG("%s", hdev->name);
-
--/* Connect Request */
--static void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- evt_conn_request *cr = (evt_conn_request *) skb->data;
-- struct hci_proto *hp;
-- accept_conn_req_cp ac;
-- int accept = 0;
-+ /* ACL tx timeout must be longer than maximum
-+ * link supervision timeout (40.9 seconds) */
-+ if (!hdev->acl_cnt && (jiffies - hdev->acl_last_tx) > (HZ * 45))
-+ hci_acl_tx_to(hdev);
-
-- DBG("%s Connection request: %s type 0x%x", hdev->name, batostr(&cr->bdaddr), cr->link_type);
-+ while (hdev->acl_cnt && (conn = hci_low_sent(hdev, ACL_LINK, &quote))) {
-+ while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
-+ BT_DBG("skb %p len %d", skb, skb->len);
-+ hci_send_frame(skb);
-+ hdev->acl_last_tx = jiffies;
-
-- /* Notify upper protocols */
-- if (cr->link_type == ACL_LINK) {
-- /* ACL link notify L2CAP */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_ind) {
-- tasklet_disable(&hdev->tx_task);
-- accept = hp->connect_ind(hdev, &cr->bdaddr);
-- tasklet_enable(&hdev->tx_task);
-+ hdev->acl_cnt--;
-+ conn->sent++;
- }
-- } else {
-- /* SCO link (no notification) */
-- /* FIXME: Should be accept it here or let the requester (app) accept it ? */
-- accept = 1;
-- }
--
-- if (accept) {
-- /* Connection accepted by upper layer */
-- bacpy(&ac.bdaddr, &cr->bdaddr);
-- ac.role = 0x01; /* Remain slave */
-- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ACCEPT_CONN_REQ, ACCEPT_CONN_REQ_CP_SIZE, &ac);
-- } else {
-- /* Connection rejected by upper layer */
-- /* FIXME:
-- * Should we use HCI reject here ?
-- */
-- return;
- }
- }
-
--/* Connect Complete */
--static void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+/* Schedule SCO */
-+static inline void hci_sched_sco(struct hci_dev *hdev)
- {
-- evt_conn_complete *cc = (evt_conn_complete *) skb->data;
-- struct hci_conn *conn = NULL;
-- struct hci_proto *hp;
--
-- DBG("%s", hdev->name);
--
-- tasklet_disable(&hdev->tx_task);
--
-- if (!cc->status)
-- conn = hci_conn_add(hdev, __le16_to_cpu(cc->handle), cc->link_type, &cc->bdaddr);
-+ struct hci_conn *conn;
-+ struct sk_buff *skb;
-+ int quote;
-
-- /* Notify upper protocols */
-- if (cc->link_type == ACL_LINK) {
-- /* ACL link notify L2CAP layer */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_cfm)
-- hp->connect_cfm(hdev, &cc->bdaddr, cc->status, conn);
-- } else {
-- /* SCO link (no notification) */
-- }
-+ BT_DBG("%s", hdev->name);
-
-- tasklet_enable(&hdev->tx_task);
--}
-+ while (hdev->sco_cnt && (conn = hci_low_sent(hdev, SCO_LINK, &quote))) {
-+ while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
-+ BT_DBG("skb %p len %d", skb, skb->len);
-+ hci_send_frame(skb);
-
--/* Disconnect Complete */
--static void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- evt_disconn_complete *dc = (evt_disconn_complete *) skb->data;
-- struct hci_conn *conn = NULL;
-- struct hci_proto *hp;
-- __u16 handle = __le16_to_cpu(dc->handle);
--
-- DBG("%s", hdev->name);
--
-- if (!dc->status && (conn = conn_hash_lookup(&hdev->conn_hash, handle))) {
-- tasklet_disable(&hdev->tx_task);
--
-- /* Notify upper protocols */
-- if (conn->type == ACL_LINK) {
-- /* ACL link notify L2CAP layer */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->disconn_ind)
-- hp->disconn_ind(conn, dc->reason);
-- } else {
-- /* SCO link (no notification) */
-+ conn->sent++;
-+ if (conn->sent == ~0)
-+ conn->sent = 0;
- }
--
-- hci_conn_del(hdev, conn);
--
-- tasklet_enable(&hdev->tx_task);
- }
- }
-
--/* Number of completed packets */
--static void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+static void hci_tx_task(unsigned long arg)
- {
-- evt_num_comp_pkts *nc = (evt_num_comp_pkts *) skb->data;
-- __u16 *ptr;
-- int i;
--
-- skb_pull(skb, EVT_NUM_COMP_PKTS_SIZE);
--
-- DBG("%s num_hndl %d", hdev->name, nc->num_hndl);
-+ struct hci_dev *hdev = (struct hci_dev *) arg;
-+ struct sk_buff *skb;
-
-- if (skb->len < nc->num_hndl * 4) {
-- DBG("%s bad parameters", hdev->name);
-- return;
-- }
-+ read_lock(&hci_task_lock);
-
-- tasklet_disable(&hdev->tx_task);
-+ BT_DBG("%s acl %d sco %d", hdev->name, hdev->acl_cnt, hdev->sco_cnt);
-
-- for (i = 0, ptr = (__u16 *) skb->data; i < nc->num_hndl; i++) {
-- struct hci_conn *conn;
-- __u16 handle, count;
-+ /* Schedule queues and send stuff to HCI driver */
-
-- handle = __le16_to_cpu(get_unaligned(ptr++));
-- count = __le16_to_cpu(get_unaligned(ptr++));
-+ hci_sched_acl(hdev);
-
-- hdev->acl_cnt += count;
-+ hci_sched_sco(hdev);
-
-- if ((conn = conn_hash_lookup(&hdev->conn_hash, handle)))
-- conn->sent -= count;
-- }
-+ /* Send next queued raw (unknown type) packet */
-+ while ((skb = skb_dequeue(&hdev->raw_q)))
-+ hci_send_frame(skb);
-
-- tasklet_enable(&hdev->tx_task);
--
-- hci_sched_tx(hdev);
-+ read_unlock(&hci_task_lock);
- }
-
--static inline void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
--{
-- hci_event_hdr *he = (hci_event_hdr *) skb->data;
-- evt_cmd_status *cs;
-- evt_cmd_complete *ec;
-- __u16 opcode, ocf, ogf;
--
-- skb_pull(skb, HCI_EVENT_HDR_SIZE);
--
-- DBG("%s evt 0x%x", hdev->name, he->evt);
--
-- switch (he->evt) {
-- case EVT_NUM_COMP_PKTS:
-- hci_num_comp_pkts_evt(hdev, skb);
-- break;
--
-- case EVT_INQUIRY_COMPLETE:
-- hci_inquiry_complete_evt(hdev, skb);
-- break;
--
-- case EVT_INQUIRY_RESULT:
-- hci_inquiry_result_evt(hdev, skb);
-- break;
--
-- case EVT_CONN_REQUEST:
-- hci_conn_request_evt(hdev, skb);
-- break;
--
-- case EVT_CONN_COMPLETE:
-- hci_conn_complete_evt(hdev, skb);
-- break;
--
-- case EVT_DISCONN_COMPLETE:
-- hci_disconn_complete_evt(hdev, skb);
-- break;
--
-- case EVT_CMD_STATUS:
-- cs = (evt_cmd_status *) skb->data;
-- skb_pull(skb, EVT_CMD_STATUS_SIZE);
--
-- opcode = __le16_to_cpu(cs->opcode);
-- ogf = cmd_opcode_ogf(opcode);
-- ocf = cmd_opcode_ocf(opcode);
--
-- switch (ogf) {
-- case OGF_INFO_PARAM:
-- hci_cs_info_param(hdev, ocf, cs->status);
-- break;
--
-- case OGF_HOST_CTL:
-- hci_cs_host_ctl(hdev, ocf, cs->status);
-- break;
--
-- case OGF_LINK_CTL:
-- hci_cs_link_ctl(hdev, ocf, cs->status);
-- break;
--
-- case OGF_LINK_POLICY:
-- hci_cs_link_policy(hdev, ocf, cs->status);
-- break;
--
-- default:
-- DBG("%s Command Status OGF %x", hdev->name, ogf);
-- break;
-- };
--
-- if (cs->ncmd) {
-- atomic_set(&hdev->cmd_cnt, 1);
-- if (!skb_queue_empty(&hdev->cmd_q))
-- hci_sched_cmd(hdev);
-- }
-- break;
--
-- case EVT_CMD_COMPLETE:
-- ec = (evt_cmd_complete *) skb->data;
-- skb_pull(skb, EVT_CMD_COMPLETE_SIZE);
--
-- opcode = __le16_to_cpu(ec->opcode);
-- ogf = cmd_opcode_ogf(opcode);
-- ocf = cmd_opcode_ocf(opcode);
--
-- switch (ogf) {
-- case OGF_INFO_PARAM:
-- hci_cc_info_param(hdev, ocf, skb);
-- break;
--
-- case OGF_HOST_CTL:
-- hci_cc_host_ctl(hdev, ocf, skb);
-- break;
--
-- case OGF_LINK_CTL:
-- hci_cc_link_ctl(hdev, ocf, skb);
-- break;
--
-- case OGF_LINK_POLICY:
-- hci_cc_link_policy(hdev, ocf, skb);
-- break;
-
-- default:
-- DBG("%s Command Completed OGF %x", hdev->name, ogf);
-- break;
-- };
--
-- if (ec->ncmd) {
-- atomic_set(&hdev->cmd_cnt, 1);
-- if (!skb_queue_empty(&hdev->cmd_q))
-- hci_sched_cmd(hdev);
-- }
-- break;
-- };
--
-- kfree_skb(skb);
-- hdev->stat.evt_rx++;
--}
-+/* ----- HCI RX task (incomming data proccessing) ----- */
-
- /* ACL data packet */
- static inline void hci_acldata_packet(struct hci_dev *hdev, struct sk_buff *skb)
-@@ -1867,51 +1255,86 @@
- flags = acl_flags(handle);
- handle = acl_handle(handle);
-
-- DBG("%s len %d handle 0x%x flags 0x%x", hdev->name, skb->len, handle, flags);
-+ BT_DBG("%s len %d handle 0x%x flags 0x%x", hdev->name, skb->len, handle, flags);
-+
-+ hdev->stat.acl_rx++;
-
-- if ((conn = conn_hash_lookup(&hdev->conn_hash, handle))) {
-+ hci_dev_lock(hdev);
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ hci_dev_unlock(hdev);
-+
-+ if (conn) {
- register struct hci_proto *hp;
-
- /* Send to upper protocol */
-- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->recv_acldata) {
-+ if ((hp = hci_proto[HCI_PROTO_L2CAP]) && hp->recv_acldata) {
- hp->recv_acldata(conn, skb, flags);
-- goto sent;
-+ return;
- }
- } else {
-- ERR("%s ACL packet for unknown connection handle %d", hdev->name, handle);
-+ BT_ERR("%s ACL packet for unknown connection handle %d",
-+ hdev->name, handle);
- }
-
- kfree_skb(skb);
--sent:
-- hdev->stat.acl_rx++;
- }
-
- /* SCO data packet */
- static inline void hci_scodata_packet(struct hci_dev *hdev, struct sk_buff *skb)
- {
-- DBG("%s len %d", hdev->name, skb->len);
-+ hci_sco_hdr *sh = (void *) skb->data;
-+ struct hci_conn *conn;
-+ __u16 handle;
-+
-+ skb_pull(skb, HCI_SCO_HDR_SIZE);
-+
-+ handle = __le16_to_cpu(sh->handle);
-+
-+ BT_DBG("%s len %d handle 0x%x", hdev->name, skb->len, handle);
-
-- kfree_skb(skb);
- hdev->stat.sco_rx++;
-+
-+ hci_dev_lock(hdev);
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ hci_dev_unlock(hdev);
-+
-+ if (conn) {
-+ register struct hci_proto *hp;
-+
-+ /* Send to upper protocol */
-+ if ((hp = hci_proto[HCI_PROTO_SCO]) && hp->recv_scodata) {
-+ hp->recv_scodata(conn, skb);
-+ return;
-+ }
-+ } else {
-+ BT_ERR("%s SCO packet for unknown connection handle %d",
-+ hdev->name, handle);
-+ }
-+
-+ kfree_skb(skb);
- }
-
--/* ----- HCI tasks ----- */
- void hci_rx_task(unsigned long arg)
- {
- struct hci_dev *hdev = (struct hci_dev *) arg;
- struct sk_buff *skb;
-
-- DBG("%s", hdev->name);
-+ BT_DBG("%s", hdev->name);
-
- read_lock(&hci_task_lock);
-
- while ((skb = skb_dequeue(&hdev->rx_q))) {
-- if (hdev->flags & HCI_SOCK) {
-+ if (atomic_read(&hdev->promisc)) {
- /* Send copy to the sockets */
- hci_send_to_sock(hdev, skb);
- }
-
-- if (hdev->flags & HCI_INIT) {
-+ if (test_bit(HCI_RAW, &hdev->flags)) {
-+ kfree_skb(skb);
-+ continue;
-+ }
-+
-+ if (test_bit(HCI_INIT, &hdev->flags)) {
- /* Don't process data packets in this states. */
- switch (skb->pkt_type) {
- case HCI_ACLDATA_PKT:
-@@ -1921,64 +1344,43 @@
- };
- }
-
-- if (hdev->flags & HCI_NORMAL) {
-- /* Process frame */
-- switch (skb->pkt_type) {
-- case HCI_EVENT_PKT:
-- hci_event_packet(hdev, skb);
-- break;
-+ /* Process frame */
-+ switch (skb->pkt_type) {
-+ case HCI_EVENT_PKT:
-+ hci_event_packet(hdev, skb);
-+ break;
-
-- case HCI_ACLDATA_PKT:
-- DBG("%s ACL data packet", hdev->name);
-- hci_acldata_packet(hdev, skb);
-- break;
-+ case HCI_ACLDATA_PKT:
-+ BT_DBG("%s ACL data packet", hdev->name);
-+ hci_acldata_packet(hdev, skb);
-+ break;
-
-- case HCI_SCODATA_PKT:
-- DBG("%s SCO data packet", hdev->name);
-- hci_scodata_packet(hdev, skb);
-- break;
-+ case HCI_SCODATA_PKT:
-+ BT_DBG("%s SCO data packet", hdev->name);
-+ hci_scodata_packet(hdev, skb);
-+ break;
-
-- default:
-- kfree_skb(skb);
-- break;
-- };
-- } else {
-+ default:
- kfree_skb(skb);
-+ break;
- }
- }
-
- read_unlock(&hci_task_lock);
- }
-
--static void hci_tx_task(unsigned long arg)
--{
-- struct hci_dev *hdev = (struct hci_dev *) arg;
-- struct sk_buff *skb;
--
-- read_lock(&hci_task_lock);
--
-- DBG("%s acl %d sco %d", hdev->name, hdev->acl_cnt, hdev->sco_cnt);
--
-- /* Schedule queues and send stuff to HCI driver */
--
-- hci_sched_acl(hdev);
--
-- hci_sched_sco(hdev);
--
-- /* Send next queued raw (unknown type) packet */
-- while ((skb = skb_dequeue(&hdev->raw_q)))
-- hci_send_frame(skb);
--
-- read_unlock(&hci_task_lock);
--}
--
- static void hci_cmd_task(unsigned long arg)
- {
- struct hci_dev *hdev = (struct hci_dev *) arg;
- struct sk_buff *skb;
-
-- DBG("%s cmd %d", hdev->name, atomic_read(&hdev->cmd_cnt));
-+ BT_DBG("%s cmd %d", hdev->name, atomic_read(&hdev->cmd_cnt));
-
-+ if (!atomic_read(&hdev->cmd_cnt) && (jiffies - hdev->cmd_last_tx) > HZ) {
-+ BT_ERR("%s command tx timeout", hdev->name);
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ }
-+
- /* Send queued commands */
- if (atomic_read(&hdev->cmd_cnt) && (skb = skb_dequeue(&hdev->cmd_q))) {
- if (hdev->sent_cmd)
-@@ -1987,6 +1389,7 @@
- if ((hdev->sent_cmd = skb_clone(skb, GFP_ATOMIC))) {
- atomic_dec(&hdev->cmd_cnt);
- hci_send_frame(skb);
-+ hdev->cmd_last_tx = jiffies;
- } else {
- skb_queue_head(&hdev->cmd_q, skb);
- hci_sched_cmd(hdev);
-@@ -1994,33 +1397,10 @@
- }
- }
-
--/* Receive frame from HCI drivers */
--int hci_recv_frame(struct sk_buff *skb)
--{
-- struct hci_dev *hdev = (struct hci_dev *) skb->dev;
--
-- if (!hdev || !(hdev->flags & (HCI_UP | HCI_INIT))) {
-- kfree_skb(skb);
-- return -1;
-- }
--
-- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len);
--
-- /* Incomming skb */
-- bluez_cb(skb)->incomming = 1;
--
-- /* Queue frame for rx task */
-- skb_queue_tail(&hdev->rx_q, skb);
-- hci_sched_rx(hdev);
--
-- return 0;
--}
-+/* ---- Initialization ---- */
-
- int hci_core_init(void)
- {
-- /* Init locks */
-- spin_lock_init(&hdev_list_lock);
--
- return 0;
- }
-
-@@ -2028,5 +1408,3 @@
- {
- return 0;
- }
--
--MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/hci_event.c linux-2.4.18-mh9/net/bluetooth/hci_event.c
---- linux-2.4.18/net/bluetooth/hci_event.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/hci_event.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,927 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * HCI Events.
-+ *
-+ * $Id: hci_event.c,v 1.4 2002/07/27 18:14:38 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/notifier.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+
-+#ifndef HCI_CORE_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+/* Handle HCI Event packets */
-+
-+/* Command Complete OGF LINK_CTL */
-+static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ __u8 status;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_INQUIRY_CANCEL:
-+ status = *((__u8 *) skb->data);
-+
-+ if (status) {
-+ BT_DBG("%s Inquiry cancel error: status 0x%x", hdev->name, status);
-+ } else {
-+ clear_bit(HCI_INQUIRY, &hdev->flags);
-+ hci_req_complete(hdev, status);
-+ }
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command complete: ogf LINK_CTL ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Complete OGF LINK_POLICY */
-+static void hci_cc_link_policy(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ struct hci_conn *conn;
-+ role_discovery_rp *rd;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_ROLE_DISCOVERY:
-+ rd = (void *) skb->data;
-+
-+ if (rd->status)
-+ break;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, __le16_to_cpu(rd->handle));
-+ if (conn) {
-+ if (rd->role)
-+ conn->link_mode &= ~HCI_LM_MASTER;
-+ else
-+ conn->link_mode |= HCI_LM_MASTER;
-+ }
-+
-+ hci_dev_unlock(hdev);
-+ break;
-+
-+ default:
-+ BT_DBG("%s: Command complete: ogf LINK_POLICY ocf %x",
-+ hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Complete OGF HOST_CTL */
-+static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ __u8 status, param;
-+ __u16 setting;
-+ read_voice_setting_rp *vs;
-+ void *sent;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_RESET:
-+ status = *((__u8 *) skb->data);
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_SET_EVENT_FLT:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s SET_EVENT_FLT failed %d", hdev->name, status);
-+ } else {
-+ BT_DBG("%s SET_EVENT_FLT succeseful", hdev->name);
-+ }
-+ break;
-+
-+ case OCF_WRITE_AUTH_ENABLE:
-+ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE);
-+ if (!sent)
-+ break;
-+
-+ status = *((__u8 *) skb->data);
-+ param = *((__u8 *) sent);
-+
-+ if (!status) {
-+ if (param == AUTH_ENABLED)
-+ set_bit(HCI_AUTH, &hdev->flags);
-+ else
-+ clear_bit(HCI_AUTH, &hdev->flags);
-+ }
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_WRITE_ENCRYPT_MODE:
-+ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_ENCRYPT_MODE);
-+ if (!sent)
-+ break;
-+
-+ status = *((__u8 *) skb->data);
-+ param = *((__u8 *) sent);
-+
-+ if (!status) {
-+ if (param)
-+ set_bit(HCI_ENCRYPT, &hdev->flags);
-+ else
-+ clear_bit(HCI_ENCRYPT, &hdev->flags);
-+ }
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_WRITE_CA_TIMEOUT:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s OCF_WRITE_CA_TIMEOUT failed %d", hdev->name, status);
-+ } else {
-+ BT_DBG("%s OCF_WRITE_CA_TIMEOUT succeseful", hdev->name);
-+ }
-+ break;
-+
-+ case OCF_WRITE_PG_TIMEOUT:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s OCF_WRITE_PG_TIMEOUT failed %d", hdev->name, status);
-+ } else {
-+ BT_DBG("%s: OCF_WRITE_PG_TIMEOUT succeseful", hdev->name);
-+ }
-+ break;
-+
-+ case OCF_WRITE_SCAN_ENABLE:
-+ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE);
-+ if (!sent)
-+ break;
-+
-+ status = *((__u8 *) skb->data);
-+ param = *((__u8 *) sent);
-+
-+ BT_DBG("param 0x%x", param);
-+
-+ if (!status) {
-+ clear_bit(HCI_PSCAN, &hdev->flags);
-+ clear_bit(HCI_ISCAN, &hdev->flags);
-+ if (param & SCAN_INQUIRY)
-+ set_bit(HCI_ISCAN, &hdev->flags);
-+
-+ if (param & SCAN_PAGE)
-+ set_bit(HCI_PSCAN, &hdev->flags);
-+ }
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_READ_VOICE_SETTING:
-+ vs = (read_voice_setting_rp *) skb->data;
-+
-+ if (vs->status) {
-+ BT_DBG("%s READ_VOICE_SETTING failed %d", hdev->name, vc->status);
-+ break;
-+ }
-+
-+ setting = __le16_to_cpu(vs->voice_setting);
-+
-+ if (hdev->voice_setting != setting ) {
-+ hdev->voice_setting = setting;
-+
-+ BT_DBG("%s: voice setting 0x%04x", hdev->name, setting);
-+
-+ if (hdev->notify)
-+ hdev->notify(hdev, HCI_NOTIFY_VOICE_SETTING, 0);
-+ }
-+
-+ break;
-+
-+ case OCF_WRITE_VOICE_SETTING:
-+ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_VOICE_SETTING);
-+ if (!sent)
-+ break;
-+
-+ status = *((__u8 *) skb->data);
-+ setting = __le16_to_cpu(get_unaligned((__u16 *) sent));
-+
-+ if (!status && hdev->voice_setting != setting) {
-+ hdev->voice_setting = setting;
-+
-+ BT_DBG("%s: voice setting 0x%04x", hdev->name, setting);
-+
-+ if (hdev->notify)
-+ hdev->notify(hdev, HCI_NOTIFY_VOICE_SETTING, 0);
-+ }
-+ hci_req_complete(hdev, status);
-+ break;
-+
-+ case OCF_HOST_BUFFER_SIZE:
-+ status = *((__u8 *) skb->data);
-+ if (status) {
-+ BT_DBG("%s OCF_BUFFER_SIZE failed %d", hdev->name, status);
-+ hci_req_complete(hdev, status);
-+ }
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command complete: ogf HOST_CTL ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Complete OGF INFO_PARAM */
-+static void hci_cc_info_param(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
-+{
-+ read_local_features_rp *lf;
-+ read_buffer_size_rp *bs;
-+ read_bd_addr_rp *ba;
-+
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_READ_LOCAL_FEATURES:
-+ lf = (read_local_features_rp *) skb->data;
-+
-+ if (lf->status) {
-+ BT_DBG("%s READ_LOCAL_FEATURES failed %d", hdev->name, lf->status);
-+ break;
-+ }
-+
-+ memcpy(hdev->features, lf->features, sizeof(hdev->features));
-+
-+ /* Adjust default settings according to features
-+ * supported by device. */
-+ if (hdev->features[0] & LMP_3SLOT)
-+ hdev->pkt_type |= (HCI_DM3 | HCI_DH3);
-+
-+ if (hdev->features[0] & LMP_5SLOT)
-+ hdev->pkt_type |= (HCI_DM5 | HCI_DH5);
-+
-+ if (hdev->features[1] & LMP_HV2)
-+ hdev->pkt_type |= (HCI_HV2);
-+
-+ if (hdev->features[1] & LMP_HV3)
-+ hdev->pkt_type |= (HCI_HV3);
-+
-+ BT_DBG("%s: features 0x%x 0x%x 0x%x", hdev->name, lf->features[0], lf->features[1], lf->features[2]);
-+
-+ break;
-+
-+ case OCF_READ_BUFFER_SIZE:
-+ bs = (read_buffer_size_rp *) skb->data;
-+
-+ if (bs->status) {
-+ BT_DBG("%s READ_BUFFER_SIZE failed %d", hdev->name, bs->status);
-+ hci_req_complete(hdev, bs->status);
-+ break;
-+ }
-+
-+ hdev->acl_mtu = __le16_to_cpu(bs->acl_mtu);
-+ hdev->sco_mtu = bs->sco_mtu ? bs->sco_mtu : 64;
-+ hdev->acl_pkts = hdev->acl_cnt = __le16_to_cpu(bs->acl_max_pkt);
-+ hdev->sco_pkts = hdev->sco_cnt = __le16_to_cpu(bs->sco_max_pkt);
-+
-+ BT_DBG("%s mtu: acl %d, sco %d max_pkt: acl %d, sco %d", hdev->name,
-+ hdev->acl_mtu, hdev->sco_mtu, hdev->acl_pkts, hdev->sco_pkts);
-+
-+ break;
-+
-+ case OCF_READ_BD_ADDR:
-+ ba = (read_bd_addr_rp *) skb->data;
-+
-+ if (!ba->status) {
-+ bacpy(&hdev->bdaddr, &ba->bdaddr);
-+ } else {
-+ BT_DBG("%s: READ_BD_ADDR failed %d", hdev->name, ba->status);
-+ }
-+
-+ hci_req_complete(hdev, ba->status);
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command complete: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF LINK_CTL */
-+static inline void hci_cs_create_conn(struct hci_dev *hdev, __u8 status)
-+{
-+ struct hci_conn *conn;
-+ create_conn_cp *cc = hci_sent_cmd_data(hdev, OGF_LINK_CTL, OCF_CREATE_CONN);
-+
-+ if (!cc)
-+ return;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_ba(hdev, ACL_LINK, &cc->bdaddr);
-+
-+ BT_DBG("%s status 0x%x bdaddr %s conn %p", hdev->name,
-+ status, batostr(&cc->bdaddr), conn);
-+
-+ if (status) {
-+ if (conn) {
-+ conn->state = BT_CLOSED;
-+ hci_proto_connect_cfm(conn, status);
-+ hci_conn_del(conn);
-+ }
-+ } else {
-+ if (!conn) {
-+ conn = hci_conn_add(hdev, ACL_LINK, &cc->bdaddr);
-+ if (conn) {
-+ conn->out = 1;
-+ conn->link_mode |= HCI_LM_MASTER;
-+ } else
-+ BT_ERR("No memmory for new connection");
-+ }
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+static void hci_cs_link_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ case OCF_CREATE_CONN:
-+ hci_cs_create_conn(hdev, status);
-+ break;
-+
-+ case OCF_ADD_SCO:
-+ if (status) {
-+ struct hci_conn *acl, *sco;
-+ add_sco_cp *cp = hci_sent_cmd_data(hdev,
-+ OGF_LINK_CTL, OCF_ADD_SCO);
-+ __u16 handle;
-+
-+ if (!cp)
-+ break;
-+
-+ handle = __le16_to_cpu(cp->handle);
-+
-+ BT_DBG("%s Add SCO error: handle %d status 0x%x", hdev->name, handle, status);
-+
-+ hci_dev_lock(hdev);
-+
-+ acl = conn_hash_lookup_handle(hdev, handle);
-+ if (acl && (sco = acl->link)) {
-+ sco->state = BT_CLOSED;
-+ hci_proto_connect_cfm(sco, status);
-+ hci_conn_del(sco);
-+ }
-+
-+ hci_dev_unlock(hdev);
-+ }
-+ break;
-+
-+ case OCF_INQUIRY:
-+ if (status) {
-+ BT_DBG("%s Inquiry error: status 0x%x", hdev->name, status);
-+ hci_req_complete(hdev, status);
-+ } else {
-+ set_bit(HCI_INQUIRY, &hdev->flags);
-+ }
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command status: ogf LINK_CTL ocf %x status %d",
-+ hdev->name, ocf, status);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF LINK_POLICY */
-+static void hci_cs_link_policy(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ default:
-+ BT_DBG("%s Command status: ogf HOST_POLICY ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF HOST_CTL */
-+static void hci_cs_host_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ default:
-+ BT_DBG("%s Command status: ogf HOST_CTL ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Command Status OGF INFO_PARAM */
-+static void hci_cs_info_param(struct hci_dev *hdev, __u16 ocf, __u8 status)
-+{
-+ BT_DBG("%s: hci_cs_info_param: ocf 0x%x", hdev->name, ocf);
-+
-+ switch (ocf) {
-+ default:
-+ BT_DBG("%s Command status: ogf INFO_PARAM ocf %x", hdev->name, ocf);
-+ break;
-+ };
-+}
-+
-+/* Inquiry Complete */
-+static inline void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ __u8 status = *((__u8 *) skb->data);
-+
-+ BT_DBG("%s status %d", hdev->name, status);
-+
-+ clear_bit(HCI_INQUIRY, &hdev->flags);
-+ hci_req_complete(hdev, status);
-+}
-+
-+/* Inquiry Result */
-+static inline void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ inquiry_info *info = (inquiry_info *) (skb->data + 1);
-+ int num_rsp = *((__u8 *) skb->data);
-+
-+ BT_DBG("%s num_rsp %d", hdev->name, num_rsp);
-+
-+ hci_dev_lock(hdev);
-+ for (; num_rsp; num_rsp--)
-+ inquiry_cache_update(hdev, info++);
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Connect Request */
-+static inline void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_conn_request *cr = (evt_conn_request *) skb->data;
-+ int mask = hdev->link_mode;
-+
-+ BT_DBG("%s Connection request: %s type 0x%x", hdev->name,
-+ batostr(&cr->bdaddr), cr->link_type);
-+
-+ mask |= hci_proto_connect_ind(hdev, &cr->bdaddr, cr->link_type);
-+
-+ if (mask & HCI_LM_ACCEPT) {
-+ /* Connection accepted */
-+ struct hci_conn *conn;
-+ accept_conn_req_cp ac;
-+
-+ hci_dev_lock(hdev);
-+ conn = conn_hash_lookup_ba(hdev, cr->link_type, &cr->bdaddr);
-+ if (!conn) {
-+ if (!(conn = hci_conn_add(hdev, cr->link_type, &cr->bdaddr))) {
-+ BT_ERR("No memmory for new connection");
-+ hci_dev_unlock(hdev);
-+ return;
-+ }
-+ }
-+ conn->state = BT_CONNECT;
-+ hci_dev_unlock(hdev);
-+
-+ bacpy(&ac.bdaddr, &cr->bdaddr);
-+
-+ if (lmp_rswitch_capable(hdev) && (mask & HCI_LM_MASTER))
-+ ac.role = 0x00; /* Become master */
-+ else
-+ ac.role = 0x01; /* Remain slave */
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ACCEPT_CONN_REQ,
-+ ACCEPT_CONN_REQ_CP_SIZE, &ac);
-+ } else {
-+ /* Connection rejected */
-+ reject_conn_req_cp rc;
-+
-+ bacpy(&rc.bdaddr, &cr->bdaddr);
-+ rc.reason = 0x0f;
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_REJECT_CONN_REQ,
-+ REJECT_CONN_REQ_CP_SIZE, &rc);
-+ }
-+}
-+
-+/* Connect Complete */
-+static inline void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_conn_complete *cc = (evt_conn_complete *) skb->data;
-+ struct hci_conn *conn = NULL;
-+
-+ BT_DBG("%s", hdev->name);
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_ba(hdev, cc->link_type, &cc->bdaddr);
-+ if (!conn) {
-+ hci_dev_unlock(hdev);
-+ return;
-+ }
-+
-+ if (!cc->status) {
-+ conn->handle = __le16_to_cpu(cc->handle);
-+ conn->state = BT_CONNECTED;
-+
-+ if (test_bit(HCI_AUTH, &hdev->flags))
-+ conn->link_mode |= HCI_LM_AUTH;
-+
-+ if (test_bit(HCI_ENCRYPT, &hdev->flags))
-+ conn->link_mode |= HCI_LM_ENCRYPT;
-+
-+
-+ /* Set link policy */
-+ if (conn->type == ACL_LINK && hdev->link_policy) {
-+ write_link_policy_cp lp;
-+ lp.handle = cc->handle;
-+ lp.policy = __cpu_to_le16(hdev->link_policy);
-+ hci_send_cmd(hdev, OGF_LINK_POLICY, OCF_WRITE_LINK_POLICY,
-+ WRITE_LINK_POLICY_CP_SIZE, &lp);
-+ }
-+
-+ /* Set packet type for incomming connection */
-+ if (!conn->out) {
-+ change_conn_ptype_cp cp;
-+ cp.handle = cc->handle;
-+ cp.pkt_type = (conn->type == ACL_LINK) ?
-+ __cpu_to_le16(hdev->pkt_type & ACL_PTYPE_MASK):
-+ __cpu_to_le16(hdev->pkt_type & SCO_PTYPE_MASK);
-+
-+ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CHANGE_CONN_PTYPE,
-+ CHANGE_CONN_PTYPE_CP_SIZE, &cp);
-+ }
-+ } else
-+ conn->state = BT_CLOSED;
-+
-+ if (conn->type == ACL_LINK) {
-+ struct hci_conn *sco = conn->link;
-+ if (sco) {
-+ if (!cc->status)
-+ hci_add_sco(sco, conn->handle);
-+ else {
-+ hci_proto_connect_cfm(sco, cc->status);
-+ hci_conn_del(sco);
-+ }
-+ }
-+ }
-+
-+ hci_proto_connect_cfm(conn, cc->status);
-+ if (cc->status)
-+ hci_conn_del(conn);
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Disconnect Complete */
-+static inline void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_disconn_complete *dc = (evt_disconn_complete *) skb->data;
-+ struct hci_conn *conn = NULL;
-+ __u16 handle = __le16_to_cpu(dc->handle);
-+
-+ BT_DBG("%s status %d", hdev->name, dc->status);
-+
-+ if (dc->status)
-+ return;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ conn->state = BT_CLOSED;
-+ hci_proto_disconn_ind(conn, dc->reason);
-+ hci_conn_del(conn);
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Number of completed packets */
-+static inline void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_num_comp_pkts *nc = (evt_num_comp_pkts *) skb->data;
-+ __u16 *ptr;
-+ int i;
-+
-+ skb_pull(skb, EVT_NUM_COMP_PKTS_SIZE);
-+
-+ BT_DBG("%s num_hndl %d", hdev->name, nc->num_hndl);
-+
-+ if (skb->len < nc->num_hndl * 4) {
-+ BT_DBG("%s bad parameters", hdev->name);
-+ return;
-+ }
-+
-+ tasklet_disable(&hdev->tx_task);
-+
-+ for (i = 0, ptr = (__u16 *) skb->data; i < nc->num_hndl; i++) {
-+ struct hci_conn *conn;
-+ __u16 handle, count;
-+
-+ handle = __le16_to_cpu(get_unaligned(ptr++));
-+ count = __le16_to_cpu(get_unaligned(ptr++));
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ conn->sent -= count;
-+
-+ if (conn->type == SCO_LINK) {
-+ if ((hdev->sco_cnt += count) > hdev->sco_pkts)
-+ hdev->sco_cnt = hdev->sco_pkts;
-+ } else {
-+ if ((hdev->acl_cnt += count) > hdev->acl_pkts)
-+ hdev->acl_cnt = hdev->acl_pkts;
-+ }
-+ }
-+ }
-+ hci_sched_tx(hdev);
-+
-+ tasklet_enable(&hdev->tx_task);
-+}
-+
-+/* Role Change */
-+static inline void hci_role_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_role_change *rc = (evt_role_change *) skb->data;
-+ struct hci_conn *conn = NULL;
-+
-+ BT_DBG("%s status %d", hdev->name, rc->status);
-+
-+ if (rc->status)
-+ return;
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_ba(hdev, ACL_LINK, &rc->bdaddr);
-+ if (conn) {
-+ if (rc->role)
-+ conn->link_mode &= ~HCI_LM_MASTER;
-+ else
-+ conn->link_mode |= HCI_LM_MASTER;
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Authentication Complete */
-+static inline void hci_auth_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_auth_complete *ac = (evt_auth_complete *) skb->data;
-+ struct hci_conn *conn = NULL;
-+ __u16 handle = __le16_to_cpu(ac->handle);
-+
-+ BT_DBG("%s status %d", hdev->name, ac->status);
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ if (!ac->status)
-+ conn->link_mode |= HCI_LM_AUTH;
-+ clear_bit(HCI_CONN_AUTH_PEND, &conn->pend);
-+
-+ hci_proto_auth_cfm(conn, ac->status);
-+
-+ if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend)) {
-+ if (!ac->status) {
-+ set_conn_encrypt_cp ce;
-+ ce.handle = __cpu_to_le16(conn->handle);
-+ ce.encrypt = 1;
-+ hci_send_cmd(conn->hdev, OGF_LINK_CTL,
-+ OCF_SET_CONN_ENCRYPT,
-+ SET_CONN_ENCRYPT_CP_SIZE, &ce);
-+ } else {
-+ clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend);
-+ hci_proto_encrypt_cfm(conn, ac->status);
-+ }
-+ }
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+/* Encryption Change */
-+static inline void hci_encrypt_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ evt_encrypt_change *ec = (evt_encrypt_change *) skb->data;
-+ struct hci_conn *conn = NULL;
-+ __u16 handle = __le16_to_cpu(ec->handle);
-+
-+ BT_DBG("%s status %d", hdev->name, ec->status);
-+
-+ hci_dev_lock(hdev);
-+
-+ conn = conn_hash_lookup_handle(hdev, handle);
-+ if (conn) {
-+ if (!ec->status) {
-+ if (ec->encrypt)
-+ conn->link_mode |= HCI_LM_ENCRYPT;
-+ else
-+ conn->link_mode &= ~HCI_LM_ENCRYPT;
-+ }
-+ clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend);
-+
-+ hci_proto_encrypt_cfm(conn, ec->status);
-+ }
-+
-+ hci_dev_unlock(hdev);
-+}
-+
-+void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
-+{
-+ hci_event_hdr *he = (hci_event_hdr *) skb->data;
-+ evt_cmd_status *cs;
-+ evt_cmd_complete *ec;
-+ __u16 opcode, ocf, ogf;
-+
-+ skb_pull(skb, HCI_EVENT_HDR_SIZE);
-+
-+ BT_DBG("%s evt 0x%x", hdev->name, he->evt);
-+
-+ switch (he->evt) {
-+ case EVT_NUM_COMP_PKTS:
-+ hci_num_comp_pkts_evt(hdev, skb);
-+ break;
-+
-+ case EVT_INQUIRY_COMPLETE:
-+ hci_inquiry_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_INQUIRY_RESULT:
-+ hci_inquiry_result_evt(hdev, skb);
-+ break;
-+
-+ case EVT_CONN_REQUEST:
-+ hci_conn_request_evt(hdev, skb);
-+ break;
-+
-+ case EVT_CONN_COMPLETE:
-+ hci_conn_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_DISCONN_COMPLETE:
-+ hci_disconn_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_ROLE_CHANGE:
-+ hci_role_change_evt(hdev, skb);
-+ break;
-+
-+ case EVT_AUTH_COMPLETE:
-+ hci_auth_complete_evt(hdev, skb);
-+ break;
-+
-+ case EVT_ENCRYPT_CHANGE:
-+ hci_encrypt_change_evt(hdev, skb);
-+ break;
-+
-+ case EVT_CMD_STATUS:
-+ cs = (evt_cmd_status *) skb->data;
-+ skb_pull(skb, EVT_CMD_STATUS_SIZE);
-+
-+ opcode = __le16_to_cpu(cs->opcode);
-+ ogf = cmd_opcode_ogf(opcode);
-+ ocf = cmd_opcode_ocf(opcode);
-+
-+ switch (ogf) {
-+ case OGF_INFO_PARAM:
-+ hci_cs_info_param(hdev, ocf, cs->status);
-+ break;
-+
-+ case OGF_HOST_CTL:
-+ hci_cs_host_ctl(hdev, ocf, cs->status);
-+ break;
-+
-+ case OGF_LINK_CTL:
-+ hci_cs_link_ctl(hdev, ocf, cs->status);
-+ break;
-+
-+ case OGF_LINK_POLICY:
-+ hci_cs_link_policy(hdev, ocf, cs->status);
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command Status OGF %x", hdev->name, ogf);
-+ break;
-+ };
-+
-+ if (cs->ncmd) {
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ if (!skb_queue_empty(&hdev->cmd_q))
-+ hci_sched_cmd(hdev);
-+ }
-+ break;
-+
-+ case EVT_CMD_COMPLETE:
-+ ec = (evt_cmd_complete *) skb->data;
-+ skb_pull(skb, EVT_CMD_COMPLETE_SIZE);
-+
-+ opcode = __le16_to_cpu(ec->opcode);
-+ ogf = cmd_opcode_ogf(opcode);
-+ ocf = cmd_opcode_ocf(opcode);
-+
-+ switch (ogf) {
-+ case OGF_INFO_PARAM:
-+ hci_cc_info_param(hdev, ocf, skb);
-+ break;
-+
-+ case OGF_HOST_CTL:
-+ hci_cc_host_ctl(hdev, ocf, skb);
-+ break;
-+
-+ case OGF_LINK_CTL:
-+ hci_cc_link_ctl(hdev, ocf, skb);
-+ break;
-+
-+ case OGF_LINK_POLICY:
-+ hci_cc_link_policy(hdev, ocf, skb);
-+ break;
-+
-+ default:
-+ BT_DBG("%s Command Completed OGF %x", hdev->name, ogf);
-+ break;
-+ };
-+
-+ if (ec->ncmd) {
-+ atomic_set(&hdev->cmd_cnt, 1);
-+ if (!skb_queue_empty(&hdev->cmd_q))
-+ hci_sched_cmd(hdev);
-+ }
-+ break;
-+ };
-+
-+ kfree_skb(skb);
-+ hdev->stat.evt_rx++;
-+}
-+
-+/* General internal stack event */
-+void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data)
-+{
-+ hci_event_hdr *eh;
-+ evt_stack_internal *si;
-+ struct sk_buff *skb;
-+ int size;
-+ void *ptr;
-+
-+ size = HCI_EVENT_HDR_SIZE + EVT_STACK_INTERNAL_SIZE + dlen;
-+ skb = bluez_skb_alloc(size, GFP_ATOMIC);
-+ if (!skb)
-+ return;
-+
-+ ptr = skb_put(skb, size);
-+
-+ eh = ptr;
-+ eh->evt = EVT_STACK_INTERNAL;
-+ eh->plen = EVT_STACK_INTERNAL_SIZE + dlen;
-+ ptr += HCI_EVENT_HDR_SIZE;
-+
-+ si = ptr;
-+ si->type = type;
-+ memcpy(si->data, data, dlen);
-+
-+ skb->pkt_type = HCI_EVENT_PKT;
-+ skb->dev = (void *) hdev;
-+ hci_send_to_sock(hdev, skb);
-+ kfree_skb(skb);
-+}
-diff -urN linux-2.4.18/net/bluetooth/hci_sock.c linux-2.4.18-mh9/net/bluetooth/hci_sock.c
---- linux-2.4.18/net/bluetooth/hci_sock.c Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/net/bluetooth/hci_sock.c Mon Aug 25 18:38:12 2003
-@@ -25,7 +25,7 @@
- /*
- * BlueZ HCI socket layer.
- *
-- * $Id: hci_sock.c,v 1.9 2001/08/05 06:02:16 maxk Exp $
-+ * $Id: hci_sock.c,v 1.5 2002/07/22 20:32:54 maxk Exp $
- */
-
- #include <linux/config.h>
-@@ -49,45 +49,54 @@
-
- #include <asm/system.h>
- #include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
-
- #ifndef HCI_SOCK_DEBUG
--#undef DBG
--#define DBG( A... )
-+#undef BT_DBG
-+#define BT_DBG( A... )
- #endif
-
--/* HCI socket interface */
-+/* ----- HCI socket interface ----- */
-+
-+/* Security filter */
-+static struct hci_sec_filter hci_sec_filter = {
-+ /* Packet types */
-+ 0x10,
-+ /* Events */
-+ { 0xd9fe, 0x0 },
-+ /* Commands */
-+ {
-+ { 0x0 },
-+ /* OGF_LINK_CTL */
-+ { 0x2a000002, 0x0, 0x0, 0x0 },
-+ /* OGF_LINK_POLICY */
-+ { 0x1200, 0x0, 0x0, 0x0 },
-+ /* OGF_HOST_CTL */
-+ { 0x80100000, 0x202a, 0x0, 0x0 },
-+ /* OGF_INFO_PARAM */
-+ { 0x22a, 0x0, 0x0, 0x0 },
-+ /* OGF_STATUS_PARAM */
-+ { 0x2e, 0x0, 0x0, 0x0 }
-+ }
-+};
-
- static struct bluez_sock_list hci_sk_list = {
- lock: RW_LOCK_UNLOCKED
- };
-
--static struct sock *hci_sock_lookup(struct hci_dev *hdev)
--{
-- struct sock *sk;
--
-- read_lock(&hci_sk_list.lock);
-- for (sk = hci_sk_list.head; sk; sk = sk->next) {
-- if (hci_pi(sk)->hdev == hdev)
-- break;
-- }
-- read_unlock(&hci_sk_list.lock);
-- return sk;
--}
--
- /* Send frame to RAW socket */
- void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb)
- {
- struct sock * sk;
-
-- DBG("hdev %p len %d", hdev, skb->len);
-+ BT_DBG("hdev %p len %d", hdev, skb->len);
-
- read_lock(&hci_sk_list.lock);
- for (sk = hci_sk_list.head; sk; sk = sk->next) {
-- struct hci_filter *flt;
-+ struct hci_filter *flt;
- struct sk_buff *nskb;
-
- if (sk->state != BT_BOUND || hci_pi(sk)->hdev != hdev)
-@@ -100,13 +109,19 @@
- /* Apply filter */
- flt = &hci_pi(sk)->filter;
-
-- if (!test_bit(skb->pkt_type, &flt->type_mask))
-+ if (!hci_test_bit((skb->pkt_type & HCI_FLT_TYPE_BITS), &flt->type_mask))
- continue;
-
- if (skb->pkt_type == HCI_EVENT_PKT) {
-- register int evt = (*(__u8 *)skb->data & 63);
-+ register int evt = (*(__u8 *)skb->data & HCI_FLT_EVENT_BITS);
-+
-+ if (!hci_test_bit(evt, &flt->event_mask))
-+ continue;
-
-- if (!test_bit(evt, &flt->event_mask))
-+ if (flt->opcode && ((evt == EVT_CMD_COMPLETE &&
-+ flt->opcode != *(__u16 *)(skb->data + 3)) ||
-+ (evt == EVT_CMD_STATUS &&
-+ flt->opcode != *(__u16 *)(skb->data + 4))))
- continue;
- }
-
-@@ -116,8 +131,8 @@
- /* Put type byte before the data */
- memcpy(skb_push(nskb, 1), &nskb->pkt_type, 1);
-
-- skb_queue_tail(&sk->receive_queue, nskb);
-- sk->data_ready(sk, nskb->len);
-+ if (sock_queue_rcv_skb(sk, nskb))
-+ kfree_skb(nskb);
- }
- read_unlock(&hci_sk_list.lock);
- }
-@@ -127,7 +142,7 @@
- struct sock *sk = sock->sk;
- struct hci_dev *hdev = hci_pi(sk)->hdev;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p sk %p", sock, sk);
-
- if (!sk)
- return 0;
-@@ -135,9 +150,7 @@
- bluez_sock_unlink(&hci_sk_list, sk);
-
- if (hdev) {
-- if (!hci_sock_lookup(hdev))
-- hdev->flags &= ~HCI_SOCK;
--
-+ atomic_dec(&hdev->promisc);
- hci_dev_put(hdev);
- }
-
-@@ -149,24 +162,55 @@
- sock_put(sk);
-
- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
--static int hci_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+/* Ioctls that require bound socket */
-+static inline int hci_sock_bound_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg)
- {
-- struct sock *sk = sock->sk;
- struct hci_dev *hdev = hci_pi(sk)->hdev;
-- __u32 mode;
-
-- DBG("cmd %x arg %lx", cmd, arg);
-+ if (!hdev)
-+ return -EBADFD;
-
- switch (cmd) {
-- case HCIGETINFO:
-- return hci_dev_info(arg);
-+ case HCISETRAW:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EACCES;
-
-+ if (arg)
-+ set_bit(HCI_RAW, &hdev->flags);
-+ else
-+ clear_bit(HCI_RAW, &hdev->flags);
-+
-+ return 0;
-+
-+ case HCIGETCONNINFO:
-+ return hci_get_conn_info(hdev, arg);
-+
-+ default:
-+ if (hdev->ioctl)
-+ return hdev->ioctl(hdev, cmd, arg);
-+ return -EINVAL;
-+ }
-+}
-+
-+static int hci_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct sock *sk = sock->sk;
-+ int err;
-+
-+ BT_DBG("cmd %x arg %lx", cmd, arg);
-+
-+ switch (cmd) {
- case HCIGETDEVLIST:
-- return hci_dev_list(arg);
-+ return hci_get_dev_list(arg);
-+
-+ case HCIGETDEVINFO:
-+ return hci_get_dev_info(arg);
-+
-+ case HCIGETCONNLIST:
-+ return hci_get_conn_list(arg);
-
- case HCIDEVUP:
- if (!capable(CAP_NET_ADMIN))
-@@ -183,48 +227,31 @@
- return -EACCES;
- return hci_dev_reset(arg);
-
-- case HCIRESETSTAT:
-+ case HCIDEVRESTAT:
- if (!capable(CAP_NET_ADMIN))
- return -EACCES;
- return hci_dev_reset_stat(arg);
-
- case HCISETSCAN:
-- if (!capable(CAP_NET_ADMIN))
-- return -EACCES;
-- return hci_dev_setscan(arg);
--
- case HCISETAUTH:
-- if (!capable(CAP_NET_ADMIN))
-- return -EACCES;
-- return hci_dev_setauth(arg);
--
-- case HCISETRAW:
-- if (!capable(CAP_NET_ADMIN))
-- return -EACCES;
--
-- if (!hdev)
-- return -EBADFD;
--
-- if (arg)
-- mode = HCI_RAW;
-- else
-- mode = HCI_NORMAL;
--
-- return hci_dev_setmode(hdev, mode);
--
-+ case HCISETENCRYPT:
- case HCISETPTYPE:
-+ case HCISETLINKPOL:
-+ case HCISETLINKMODE:
-+ case HCISETACLMTU:
-+ case HCISETSCOMTU:
- if (!capable(CAP_NET_ADMIN))
- return -EACCES;
-- return hci_dev_setptype(arg);
-+ return hci_dev_cmd(cmd, arg);
-
- case HCIINQUIRY:
- return hci_inquiry(arg);
-
-- case HCIGETCONNLIST:
-- return hci_conn_list(arg);
--
- default:
-- return -EINVAL;
-+ lock_sock(sk);
-+ err = hci_sock_bound_ioctl(sk, cmd, arg);
-+ release_sock(sk);
-+ return err;
- };
- }
-
-@@ -233,28 +260,35 @@
- struct sockaddr_hci *haddr = (struct sockaddr_hci *) addr;
- struct sock *sk = sock->sk;
- struct hci_dev *hdev = NULL;
-+ int err = 0;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p sk %p", sock, sk);
-
- if (!haddr || haddr->hci_family != AF_BLUETOOTH)
- return -EINVAL;
-
-+ lock_sock(sk);
-+
- if (hci_pi(sk)->hdev) {
-- /* Already bound */
-- return 0;
-+ err = -EALREADY;
-+ goto done;
- }
-
- if (haddr->hci_dev != HCI_DEV_NONE) {
-- if (!(hdev = hci_dev_get(haddr->hci_dev)))
-- return -ENODEV;
-+ if (!(hdev = hci_dev_get(haddr->hci_dev))) {
-+ err = -ENODEV;
-+ goto done;
-+ }
-
-- hdev->flags |= HCI_SOCK;
-+ atomic_inc(&hdev->promisc);
- }
-
- hci_pi(sk)->hdev = hdev;
- sk->state = BT_BOUND;
-
-- return 0;
-+done:
-+ release_sock(sk);
-+ return err;
- }
-
- static int hci_sock_getname(struct socket *sock, struct sockaddr *addr, int *addr_len, int peer)
-@@ -262,73 +296,44 @@
- struct sockaddr_hci *haddr = (struct sockaddr_hci *) addr;
- struct sock *sk = sock->sk;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ lock_sock(sk);
-
- *addr_len = sizeof(*haddr);
- haddr->hci_family = AF_BLUETOOTH;
- haddr->hci_dev = hci_pi(sk)->hdev->id;
-
-+ release_sock(sk);
- return 0;
- }
-
--static int hci_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len,
-- struct scm_cookie *scm)
--{
-- struct sock *sk = sock->sk;
-- struct hci_dev *hdev = hci_pi(sk)->hdev;
-- struct sk_buff *skb;
-- int err;
--
-- DBG("sock %p sk %p", sock, sk);
--
-- if (msg->msg_flags & MSG_OOB)
-- return -EOPNOTSUPP;
--
-- if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_NOSIGNAL|MSG_ERRQUEUE))
-- return -EINVAL;
--
-- if (!hdev)
-- return -EBADFD;
--
-- if (!(skb = bluez_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err)))
-- return err;
--
-- if (memcpy_fromiovec(skb_put(skb, len), msg->msg_iov, len)) {
-- kfree_skb(skb);
-- return -EFAULT;
-- }
--
-- skb->dev = (void *) hdev;
-- skb->pkt_type = *((unsigned char *) skb->data);
-- skb_pull(skb, 1);
--
-- /* Send frame to HCI core */
-- hci_send_raw(skb);
--
-- return len;
--}
--
- static inline void hci_sock_cmsg(struct sock *sk, struct msghdr *msg, struct sk_buff *skb)
- {
- __u32 mask = hci_pi(sk)->cmsg_mask;
-
- if (mask & HCI_CMSG_DIR)
- put_cmsg(msg, SOL_HCI, HCI_CMSG_DIR, sizeof(int), &bluez_cb(skb)->incomming);
-+
-+ if (mask & HCI_CMSG_TSTAMP)
-+ put_cmsg(msg, SOL_HCI, HCI_CMSG_TSTAMP, sizeof(skb->stamp), &skb->stamp);
- }
-
--static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len,
-- int flags, struct scm_cookie *scm)
-+static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm)
- {
- int noblock = flags & MSG_DONTWAIT;
- struct sock *sk = sock->sk;
- struct sk_buff *skb;
- int copied, err;
-
-- DBG("sock %p sk %p", sock, sk);
-+ BT_DBG("sock %p, sk %p", sock, sk);
-
-- if (flags & (MSG_OOB | MSG_PEEK))
-+ if (flags & (MSG_OOB))
- return -EOPNOTSUPP;
-
-+ if (sk->state == BT_CLOSED)
-+ return 0;
-+
- if (!(skb = skb_recv_datagram(sk, flags, noblock, &err)))
- return err;
-
-@@ -343,28 +348,107 @@
- skb->h.raw = skb->data;
- err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
-
-- if (hci_pi(sk)->cmsg_mask)
-- hci_sock_cmsg(sk, msg, skb);
--
-+ hci_sock_cmsg(sk, msg, skb);
-+
- skb_free_datagram(sk, skb);
-
- return err ? : copied;
- }
-
-+static int hci_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len,
-+ struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ struct hci_dev *hdev;
-+ struct sk_buff *skb;
-+ int err;
-+
-+ BT_DBG("sock %p sk %p", sock, sk);
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_NOSIGNAL|MSG_ERRQUEUE))
-+ return -EINVAL;
-+
-+ if (len < 4)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (!(hdev = hci_pi(sk)->hdev)) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ if (!(skb = bluez_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err)))
-+ goto done;
-+
-+ if (memcpy_fromiovec(skb_put(skb, len), msg->msg_iov, len)) {
-+ err = -EFAULT;
-+ goto drop;
-+ }
-+
-+ skb->pkt_type = *((unsigned char *) skb->data);
-+ skb_pull(skb, 1);
-+ skb->dev = (void *) hdev;
-+
-+ if (skb->pkt_type == HCI_COMMAND_PKT) {
-+ u16 opcode = __le16_to_cpu(get_unaligned((u16 *)skb->data));
-+ u16 ogf = cmd_opcode_ogf(opcode);
-+ u16 ocf = cmd_opcode_ocf(opcode);
-+
-+ if (((ogf > HCI_SFLT_MAX_OGF) ||
-+ !hci_test_bit(ocf & HCI_FLT_OCF_BITS, &hci_sec_filter.ocf_mask[ogf])) &&
-+ !capable(CAP_NET_RAW)) {
-+ err = -EPERM;
-+ goto drop;
-+ }
-+
-+ if (test_bit(HCI_RAW, &hdev->flags) || (ogf == OGF_VENDOR_CMD)) {
-+ skb_queue_tail(&hdev->raw_q, skb);
-+ hci_sched_tx(hdev);
-+ } else {
-+ skb_queue_tail(&hdev->cmd_q, skb);
-+ hci_sched_cmd(hdev);
-+ }
-+ } else {
-+ if (!capable(CAP_NET_RAW)) {
-+ err = -EPERM;
-+ goto drop;
-+ }
-+
-+ skb_queue_tail(&hdev->raw_q, skb);
-+ hci_sched_tx(hdev);
-+ }
-+
-+ err = len;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+
-+drop:
-+ kfree_skb(skb);
-+ goto done;
-+}
-+
- int hci_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int len)
- {
- struct sock *sk = sock->sk;
-- struct hci_filter flt;
-+ struct hci_filter flt = { opcode: 0 };
- int err = 0, opt = 0;
-
-- DBG("sk %p, opt %d", sk, optname);
-+ BT_DBG("sk %p, opt %d", sk, optname);
-
- lock_sock(sk);
-
- switch (optname) {
- case HCI_DATA_DIR:
-- if (get_user(opt, (int *)optval))
-- return -EFAULT;
-+ if (get_user(opt, (int *)optval)) {
-+ err = -EFAULT;
-+ break;
-+ }
-
- if (opt)
- hci_pi(sk)->cmsg_mask |= HCI_CMSG_DIR;
-@@ -372,12 +456,31 @@
- hci_pi(sk)->cmsg_mask &= ~HCI_CMSG_DIR;
- break;
-
-+ case HCI_TIME_STAMP:
-+ if (get_user(opt, (int *)optval)) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ if (opt)
-+ hci_pi(sk)->cmsg_mask |= HCI_CMSG_TSTAMP;
-+ else
-+ hci_pi(sk)->cmsg_mask &= ~HCI_CMSG_TSTAMP;
-+ break;
-+
- case HCI_FILTER:
- len = MIN(len, sizeof(struct hci_filter));
- if (copy_from_user(&flt, optval, len)) {
- err = -EFAULT;
- break;
- }
-+
-+ if (!capable(CAP_NET_RAW)) {
-+ flt.type_mask &= hci_sec_filter.type_mask;
-+ flt.event_mask[0] &= hci_sec_filter.event_mask[0];
-+ flt.event_mask[1] &= hci_sec_filter.event_mask[1];
-+ }
-+
- memcpy(&hci_pi(sk)->filter, &flt, len);
- break;
-
-@@ -409,6 +512,16 @@
- return -EFAULT;
- break;
-
-+ case HCI_TIME_STAMP:
-+ if (hci_pi(sk)->cmsg_mask & HCI_CMSG_TSTAMP)
-+ opt = 1;
-+ else
-+ opt = 0;
-+
-+ if (put_user(opt, optval))
-+ return -EFAULT;
-+ break;
-+
- case HCI_FILTER:
- len = MIN(len, sizeof(struct hci_filter));
- if (copy_to_user(optval, &hci_pi(sk)->filter, len))
-@@ -446,7 +559,7 @@
- {
- struct sock *sk;
-
-- DBG("sock %p", sock);
-+ BT_DBG("sock %p", sock);
-
- if (sock->type != SOCK_RAW)
- return -ESOCKTNOSUPPORT;
-@@ -464,44 +577,31 @@
- sk->protocol = protocol;
- sk->state = BT_OPEN;
-
-- /* Initialize filter */
-- hci_pi(sk)->filter.type_mask = (1<<HCI_EVENT_PKT);
-- hci_pi(sk)->filter.event_mask[0] = ~0L;
-- hci_pi(sk)->filter.event_mask[1] = ~0L;
--
- bluez_sock_link(&hci_sk_list, sk);
-
- MOD_INC_USE_COUNT;
--
- return 0;
- }
-
- static int hci_sock_dev_event(struct notifier_block *this, unsigned long event, void *ptr)
- {
- struct hci_dev *hdev = (struct hci_dev *) ptr;
-- struct sk_buff *skb;
--
-- DBG("hdev %s event %ld", hdev->name, event);
-+ evt_si_device sd;
-+
-+ BT_DBG("hdev %s event %ld", hdev->name, event);
-
- /* Send event to sockets */
-- if ((skb = bluez_skb_alloc(HCI_EVENT_HDR_SIZE + EVT_HCI_DEV_EVENT_SIZE, GFP_ATOMIC))) {
-- hci_event_hdr eh = { EVT_HCI_DEV_EVENT, EVT_HCI_DEV_EVENT_SIZE };
-- evt_hci_dev_event he = { event, hdev->id };
--
-- skb->pkt_type = HCI_EVENT_PKT;
-- memcpy(skb_put(skb, HCI_EVENT_HDR_SIZE), &eh, HCI_EVENT_HDR_SIZE);
-- memcpy(skb_put(skb, EVT_HCI_DEV_EVENT_SIZE), &he, EVT_HCI_DEV_EVENT_SIZE);
--
-- hci_send_to_sock(NULL, skb);
-- kfree_skb(skb);
-- }
--
-+ sd.event = event;
-+ sd.dev_id = hdev->id;
-+ hci_si_event(NULL, EVT_SI_DEVICE, EVT_SI_DEVICE_SIZE, &sd);
-+
- if (event == HCI_DEV_UNREG) {
- struct sock *sk;
-
- /* Detach sockets from device */
- read_lock(&hci_sk_list.lock);
- for (sk = hci_sk_list.head; sk; sk = sk->next) {
-+ bh_lock_sock(sk);
- if (hci_pi(sk)->hdev == hdev) {
- hci_pi(sk)->hdev = NULL;
- sk->err = EPIPE;
-@@ -510,6 +610,7 @@
-
- hci_dev_put(hdev);
- }
-+ bh_unlock_sock(sk);
- }
- read_unlock(&hci_sk_list.lock);
- }
-@@ -529,21 +630,19 @@
- int hci_sock_init(void)
- {
- if (bluez_sock_register(BTPROTO_HCI, &hci_sock_family_ops)) {
-- ERR("Can't register HCI socket");
-+ BT_ERR("Can't register HCI socket");
- return -EPROTO;
- }
-
- hci_register_notifier(&hci_sock_nblock);
--
- return 0;
- }
-
- int hci_sock_cleanup(void)
- {
- if (bluez_sock_unregister(BTPROTO_HCI))
-- ERR("Can't unregister HCI socket");
-+ BT_ERR("Can't unregister HCI socket");
-
- hci_unregister_notifier(&hci_sock_nblock);
--
- return 0;
- }
-diff -urN linux-2.4.18/net/bluetooth/l2cap.c linux-2.4.18-mh9/net/bluetooth/l2cap.c
---- linux-2.4.18/net/bluetooth/l2cap.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/l2cap.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,2187 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ L2CAP core and sockets.
-+ *
-+ * $Id: l2cap.c,v 1.15 2002/09/09 01:14:52 maxk Exp $
-+ */
-+#define VERSION "2.3"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/socket.h>
-+#include <linux/skbuff.h>
-+#include <linux/proc_fs.h>
-+#include <linux/list.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include <net/bluetooth/l2cap.h>
-+
-+#ifndef L2CAP_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+static struct proto_ops l2cap_sock_ops;
-+
-+struct bluez_sock_list l2cap_sk_list = {
-+ lock: RW_LOCK_UNLOCKED
-+};
-+
-+static int l2cap_conn_del(struct hci_conn *conn, int err);
-+
-+static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent);
-+static void l2cap_chan_del(struct sock *sk, int err);
-+static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len);
-+
-+static void __l2cap_sock_close(struct sock *sk, int reason);
-+static void l2cap_sock_close(struct sock *sk);
-+static void l2cap_sock_kill(struct sock *sk);
-+
-+static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data);
-+static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data);
-+
-+/* ----- L2CAP timers ------ */
-+static void l2cap_sock_timeout(unsigned long arg)
-+{
-+ struct sock *sk = (struct sock *) arg;
-+
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ bh_lock_sock(sk);
-+ __l2cap_sock_close(sk, ETIMEDOUT);
-+ bh_unlock_sock(sk);
-+
-+ l2cap_sock_kill(sk);
-+ sock_put(sk);
-+}
-+
-+static void l2cap_sock_set_timer(struct sock *sk, long timeout)
-+{
-+ BT_DBG("sk %p state %d timeout %ld", sk, sk->state, timeout);
-+
-+ if (!mod_timer(&sk->timer, jiffies + timeout))
-+ sock_hold(sk);
-+}
-+
-+static void l2cap_sock_clear_timer(struct sock *sk)
-+{
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ if (timer_pending(&sk->timer) && del_timer(&sk->timer))
-+ __sock_put(sk);
-+}
-+
-+static void l2cap_sock_init_timer(struct sock *sk)
-+{
-+ init_timer(&sk->timer);
-+ sk->timer.function = l2cap_sock_timeout;
-+ sk->timer.data = (unsigned long)sk;
-+}
-+
-+/* -------- L2CAP connections --------- */
-+static struct l2cap_conn *l2cap_conn_add(struct hci_conn *hcon, __u8 status)
-+{
-+ struct l2cap_conn *conn;
-+
-+ if ((conn = hcon->l2cap_data))
-+ return conn;
-+
-+ if (status)
-+ return conn;
-+
-+ if (!(conn = kmalloc(sizeof(struct l2cap_conn), GFP_ATOMIC)))
-+ return NULL;
-+ memset(conn, 0, sizeof(struct l2cap_conn));
-+
-+ hcon->l2cap_data = conn;
-+ conn->hcon = hcon;
-+
-+ conn->mtu = hcon->hdev->acl_mtu;
-+ conn->src = &hcon->hdev->bdaddr;
-+ conn->dst = &hcon->dst;
-+
-+ spin_lock_init(&conn->lock);
-+ conn->chan_list.lock = RW_LOCK_UNLOCKED;
-+
-+ BT_DBG("hcon %p conn %p", hcon, conn);
-+
-+ MOD_INC_USE_COUNT;
-+ return conn;
-+}
-+
-+static int l2cap_conn_del(struct hci_conn *hcon, int err)
-+{
-+ struct l2cap_conn *conn;
-+ struct sock *sk;
-+
-+ if (!(conn = hcon->l2cap_data))
-+ return 0;
-+
-+ BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
-+
-+ if (conn->rx_skb)
-+ kfree_skb(conn->rx_skb);
-+
-+ /* Kill channels */
-+ while ((sk = conn->chan_list.head)) {
-+ bh_lock_sock(sk);
-+ l2cap_chan_del(sk, err);
-+ bh_unlock_sock(sk);
-+ l2cap_sock_kill(sk);
-+ }
-+
-+ hcon->l2cap_data = NULL;
-+ kfree(conn);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+/* -------- Socket interface ---------- */
-+static struct sock *__l2cap_get_sock_by_addr(__u16 psm, bdaddr_t *src)
-+{
-+ struct sock *sk;
-+ for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-+ if (sk->sport == psm && !bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+ }
-+ return sk;
-+}
-+
-+/* Find socket with psm and source bdaddr.
-+ * Returns closest match.
-+ */
-+static struct sock *__l2cap_get_sock_by_psm(int state, __u16 psm, bdaddr_t *src)
-+{
-+ struct sock *sk, *sk1 = NULL;
-+
-+ for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-+ if (state && sk->state != state)
-+ continue;
-+
-+ if (l2cap_pi(sk)->psm == psm) {
-+ /* Exact match. */
-+ if (!bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+
-+ /* Closest match */
-+ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ sk1 = sk;
-+ }
-+ }
-+ return sk ? sk : sk1;
-+}
-+
-+/* Find socket with given address (psm, src).
-+ * Returns locked socket */
-+static inline struct sock *l2cap_get_sock_by_psm(int state, __u16 psm, bdaddr_t *src)
-+{
-+ struct sock *s;
-+ read_lock(&l2cap_sk_list.lock);
-+ s = __l2cap_get_sock_by_psm(state, psm, src);
-+ if (s) bh_lock_sock(s);
-+ read_unlock(&l2cap_sk_list.lock);
-+ return s;
-+}
-+
-+static void l2cap_sock_destruct(struct sock *sk)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ skb_queue_purge(&sk->receive_queue);
-+ skb_queue_purge(&sk->write_queue);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void l2cap_sock_cleanup_listen(struct sock *parent)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ /* Close not yet accepted channels */
-+ while ((sk = bluez_accept_dequeue(parent, NULL)))
-+ l2cap_sock_close(sk);
-+
-+ parent->state = BT_CLOSED;
-+ parent->zapped = 1;
-+}
-+
-+/* Kill socket (only if zapped and orphan)
-+ * Must be called on unlocked socket.
-+ */
-+static void l2cap_sock_kill(struct sock *sk)
-+{
-+ if (!sk->zapped || sk->socket)
-+ return;
-+
-+ BT_DBG("sk %p state %d", sk, sk->state);
-+
-+ /* Kill poor orphan */
-+ bluez_sock_unlink(&l2cap_sk_list, sk);
-+ sk->dead = 1;
-+ sock_put(sk);
-+}
-+
-+/* Close socket.
-+ */
-+static void __l2cap_sock_close(struct sock *sk, int reason)
-+{
-+ BT_DBG("sk %p state %d socket %p", sk, sk->state, sk->socket);
-+
-+ switch (sk->state) {
-+ case BT_LISTEN:
-+ l2cap_sock_cleanup_listen(sk);
-+ break;
-+
-+ case BT_CONNECTED:
-+ case BT_CONFIG:
-+ case BT_CONNECT2:
-+ if (sk->type == SOCK_SEQPACKET) {
-+ struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-+ l2cap_disconn_req req;
-+
-+ sk->state = BT_DISCONN;
-+ l2cap_sock_set_timer(sk, sk->sndtimeo);
-+
-+ req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
-+ } else {
-+ l2cap_chan_del(sk, reason);
-+ }
-+ break;
-+
-+ case BT_CONNECT:
-+ case BT_DISCONN:
-+ l2cap_chan_del(sk, reason);
-+ break;
-+
-+ default:
-+ sk->zapped = 1;
-+ break;
-+ };
-+}
-+
-+/* Must be called on unlocked socket. */
-+static void l2cap_sock_close(struct sock *sk)
-+{
-+ l2cap_sock_clear_timer(sk);
-+ lock_sock(sk);
-+ __l2cap_sock_close(sk, ECONNRESET);
-+ release_sock(sk);
-+ l2cap_sock_kill(sk);
-+}
-+
-+static void l2cap_sock_init(struct sock *sk, struct sock *parent)
-+{
-+ struct l2cap_pinfo *pi = l2cap_pi(sk);
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (parent) {
-+ sk->type = parent->type;
-+ pi->imtu = l2cap_pi(parent)->imtu;
-+ pi->omtu = l2cap_pi(parent)->omtu;
-+ pi->link_mode = l2cap_pi(parent)->link_mode;
-+ } else {
-+ pi->imtu = L2CAP_DEFAULT_MTU;
-+ pi->omtu = 0;
-+ pi->link_mode = 0;
-+ }
-+
-+ /* Default config options */
-+ pi->conf_mtu = L2CAP_DEFAULT_MTU;
-+ pi->flush_to = L2CAP_DEFAULT_FLUSH_TO;
-+}
-+
-+static struct sock *l2cap_sock_alloc(struct socket *sock, int proto, int prio)
-+{
-+ struct sock *sk;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1)))
-+ return NULL;
-+
-+ bluez_sock_init(sock, sk);
-+
-+ sk->zapped = 0;
-+
-+ sk->destruct = l2cap_sock_destruct;
-+ sk->sndtimeo = L2CAP_CONN_TIMEOUT;
-+
-+ sk->protocol = proto;
-+ sk->state = BT_OPEN;
-+
-+ l2cap_sock_init_timer(sk);
-+
-+ bluez_sock_link(&l2cap_sk_list, sk);
-+
-+ MOD_INC_USE_COUNT;
-+ return sk;
-+}
-+
-+static int l2cap_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ sock->state = SS_UNCONNECTED;
-+
-+ if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW))
-+ return -EPERM;
-+
-+ sock->ops = &l2cap_sock_ops;
-+
-+ if (!(sk = l2cap_sock_alloc(sock, protocol, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ l2cap_sock_init(sk, NULL);
-+ return 0;
-+}
-+
-+static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
-+{
-+ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p, %s %d", sk, batostr(&la->l2_bdaddr), la->l2_psm);
-+
-+ if (!addr || addr->sa_family != AF_BLUETOOTH)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_OPEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ write_lock_bh(&l2cap_sk_list.lock);
-+ if (la->l2_psm && __l2cap_get_sock_by_addr(la->l2_psm, &la->l2_bdaddr)) {
-+ err = -EADDRINUSE;
-+ } else {
-+ /* Save source address */
-+ bacpy(&bluez_pi(sk)->src, &la->l2_bdaddr);
-+ l2cap_pi(sk)->psm = la->l2_psm;
-+ sk->sport = la->l2_psm;
-+ sk->state = BT_BOUND;
-+ }
-+ write_unlock_bh(&l2cap_sk_list.lock);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_do_connect(struct sock *sk)
-+{
-+ bdaddr_t *src = &bluez_pi(sk)->src;
-+ bdaddr_t *dst = &bluez_pi(sk)->dst;
-+ struct l2cap_conn *conn;
-+ struct hci_conn *hcon;
-+ struct hci_dev *hdev;
-+ int err = 0;
-+
-+ BT_DBG("%s -> %s psm 0x%2.2x", batostr(src), batostr(dst), l2cap_pi(sk)->psm);
-+
-+ if (!(hdev = hci_get_route(dst, src)))
-+ return -EHOSTUNREACH;
-+
-+ hci_dev_lock_bh(hdev);
-+
-+ err = -ENOMEM;
-+
-+ hcon = hci_connect(hdev, ACL_LINK, dst);
-+ if (!hcon)
-+ goto done;
-+
-+ conn = l2cap_conn_add(hcon, 0);
-+ if (!conn) {
-+ hci_conn_put(hcon);
-+ goto done;
-+ }
-+
-+ err = 0;
-+
-+ /* Update source addr of the socket */
-+ bacpy(src, conn->src);
-+
-+ l2cap_chan_add(conn, sk, NULL);
-+
-+ sk->state = BT_CONNECT;
-+ l2cap_sock_set_timer(sk, sk->sndtimeo);
-+
-+ if (hcon->state == BT_CONNECTED) {
-+ if (sk->type == SOCK_SEQPACKET) {
-+ l2cap_conn_req req;
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ req.psm = l2cap_pi(sk)->psm;
-+ l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
-+ } else {
-+ l2cap_sock_clear_timer(sk);
-+ sk->state = BT_CONNECTED;
-+ }
-+ }
-+
-+done:
-+ hci_dev_unlock_bh(hdev);
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
-+static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
-+{
-+ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_l2)) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-+
-+ if (sk->type == SOCK_SEQPACKET && !la->l2_psm) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-+
-+ switch(sk->state) {
-+ case BT_CONNECT:
-+ case BT_CONNECT2:
-+ case BT_CONFIG:
-+ /* Already connecting */
-+ goto wait;
-+
-+ case BT_CONNECTED:
-+ /* Already connected */
-+ goto done;
-+
-+ case BT_OPEN:
-+ case BT_BOUND:
-+ /* Can connect */
-+ break;
-+
-+ default:
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ /* Set destination address and psm */
-+ bacpy(&bluez_pi(sk)->dst, &la->l2_bdaddr);
-+ l2cap_pi(sk)->psm = la->l2_psm;
-+
-+ if ((err = l2cap_do_connect(sk)))
-+ goto done;
-+
-+wait:
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int l2cap_sock_listen(struct socket *sock, int backlog)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p backlog %d", sk, backlog);
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ if (!l2cap_pi(sk)->psm) {
-+ err = -EINVAL;
-+ goto done;
-+ }
-+
-+ sk->max_ack_backlog = backlog;
-+ sk->ack_backlog = 0;
-+ sk->state = BT_LISTEN;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct sock *sk = sock->sk, *nsk;
-+ long timeo;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
-+
-+ BT_DBG("sk %p timeo %ld", sk, timeo);
-+
-+ /* Wait for an incoming connection. (wake-one). */
-+ add_wait_queue_exclusive(sk->sleep, &wait);
-+ while (!(nsk = bluez_accept_dequeue(sk, newsock))) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ if (err)
-+ goto done;
-+
-+ newsock->state = SS_CONNECTED;
-+
-+ BT_DBG("new socket %p", nsk);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
-+{
-+ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ addr->sa_family = AF_BLUETOOTH;
-+ *len = sizeof(struct sockaddr_l2);
-+
-+ if (peer)
-+ bacpy(&la->l2_bdaddr, &bluez_pi(sk)->dst);
-+ else
-+ bacpy(&la->l2_bdaddr, &bluez_pi(sk)->src);
-+
-+ la->l2_psm = l2cap_pi(sk)->psm;
-+ return 0;
-+}
-+
-+static int l2cap_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (sk->err)
-+ return sock_error(sk);
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ /* Check outgoing MTU */
-+ if (len > l2cap_pi(sk)->omtu)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state == BT_CONNECTED)
-+ err = l2cap_chan_send(sk, msg, len);
-+ else
-+ err = -ENOTCONN;
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ struct l2cap_options opts;
-+ int err = 0, len;
-+ __u32 opt;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ case L2CAP_OPTIONS:
-+ len = MIN(sizeof(opts), optlen);
-+ if (copy_from_user((char *)&opts, optval, len)) {
-+ err = -EFAULT;
-+ break;
-+ }
-+ l2cap_pi(sk)->imtu = opts.imtu;
-+ l2cap_pi(sk)->omtu = opts.omtu;
-+ break;
-+
-+ case L2CAP_LM:
-+ if (get_user(opt, (__u32 *)optval)) {
-+ err = -EFAULT;
-+ break;
-+ }
-+
-+ l2cap_pi(sk)->link_mode = opt;
-+ break;
-+
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ struct l2cap_options opts;
-+ struct l2cap_conninfo cinfo;
-+ int len, err = 0;
-+
-+ if (get_user(len, optlen))
-+ return -EFAULT;
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ case L2CAP_OPTIONS:
-+ opts.imtu = l2cap_pi(sk)->imtu;
-+ opts.omtu = l2cap_pi(sk)->omtu;
-+ opts.flush_to = l2cap_pi(sk)->flush_to;
-+
-+ len = MIN(len, sizeof(opts));
-+ if (copy_to_user(optval, (char *)&opts, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ case L2CAP_LM:
-+ if (put_user(l2cap_pi(sk)->link_mode, (__u32 *)optval))
-+ err = -EFAULT;
-+ break;
-+
-+ case L2CAP_CONNINFO:
-+ if (sk->state != BT_CONNECTED) {
-+ err = -ENOTCONN;
-+ break;
-+ }
-+
-+ cinfo.hci_handle = l2cap_pi(sk)->conn->hcon->handle;
-+
-+ len = MIN(len, sizeof(cinfo));
-+ if (copy_to_user(optval, (char *)&cinfo, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_shutdown(struct socket *sock, int how)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk) return 0;
-+
-+ lock_sock(sk);
-+ if (!sk->shutdown) {
-+ sk->shutdown = SHUTDOWN_MASK;
-+ l2cap_sock_clear_timer(sk);
-+ __l2cap_sock_close(sk, 0);
-+
-+ if (sk->linger)
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ }
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int l2cap_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+ int err;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk) return 0;
-+
-+ err = l2cap_sock_shutdown(sock, 2);
-+
-+ sock_orphan(sk);
-+ l2cap_sock_kill(sk);
-+ return err;
-+}
-+
-+/* --------- L2CAP channels --------- */
-+static struct sock * __l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid)
-+{
-+ struct sock *s;
-+ for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-+ if (l2cap_pi(s)->dcid == cid)
-+ break;
-+ }
-+ return s;
-+}
-+
-+static struct sock *__l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
-+{
-+ struct sock *s;
-+ for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-+ if (l2cap_pi(s)->scid == cid)
-+ break;
-+ }
-+ return s;
-+}
-+
-+/* Find channel with given SCID.
-+ * Returns locked socket */
-+static inline struct sock *l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
-+{
-+ struct sock *s;
-+ read_lock(&l->lock);
-+ s = __l2cap_get_chan_by_scid(l, cid);
-+ if (s) bh_lock_sock(s);
-+ read_unlock(&l->lock);
-+ return s;
-+}
-+
-+static __u16 l2cap_alloc_cid(struct l2cap_chan_list *l)
-+{
-+ __u16 cid = 0x0040;
-+
-+ for (; cid < 0xffff; cid++) {
-+ if(!__l2cap_get_chan_by_scid(l, cid))
-+ return cid;
-+ }
-+
-+ return 0;
-+}
-+
-+static inline void __l2cap_chan_link(struct l2cap_chan_list *l, struct sock *sk)
-+{
-+ sock_hold(sk);
-+
-+ if (l->head)
-+ l2cap_pi(l->head)->prev_c = sk;
-+
-+ l2cap_pi(sk)->next_c = l->head;
-+ l2cap_pi(sk)->prev_c = NULL;
-+ l->head = sk;
-+}
-+
-+static inline void l2cap_chan_unlink(struct l2cap_chan_list *l, struct sock *sk)
-+{
-+ struct sock *next = l2cap_pi(sk)->next_c, *prev = l2cap_pi(sk)->prev_c;
-+
-+ write_lock(&l->lock);
-+ if (sk == l->head)
-+ l->head = next;
-+
-+ if (next)
-+ l2cap_pi(next)->prev_c = prev;
-+ if (prev)
-+ l2cap_pi(prev)->next_c = next;
-+ write_unlock(&l->lock);
-+
-+ __sock_put(sk);
-+}
-+
-+static void __l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+
-+ BT_DBG("conn %p, psm 0x%2.2x, dcid 0x%4.4x", conn, l2cap_pi(sk)->psm, l2cap_pi(sk)->dcid);
-+
-+ l2cap_pi(sk)->conn = conn;
-+
-+ if (sk->type == SOCK_SEQPACKET) {
-+ /* Alloc CID for connection-oriented socket */
-+ l2cap_pi(sk)->scid = l2cap_alloc_cid(l);
-+ } else if (sk->type == SOCK_DGRAM) {
-+ /* Connectionless socket */
-+ l2cap_pi(sk)->scid = 0x0002;
-+ l2cap_pi(sk)->dcid = 0x0002;
-+ l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU;
-+ } else {
-+ /* Raw socket can send/recv signalling messages only */
-+ l2cap_pi(sk)->scid = 0x0001;
-+ l2cap_pi(sk)->dcid = 0x0001;
-+ l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU;
-+ }
-+
-+ __l2cap_chan_link(l, sk);
-+
-+ if (parent)
-+ bluez_accept_enqueue(parent, sk);
-+}
-+
-+static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ write_lock(&l->lock);
-+ __l2cap_chan_add(conn, sk, parent);
-+ write_unlock(&l->lock);
-+}
-+
-+/* Delete channel.
-+ * Must be called on the locked socket. */
-+static void l2cap_chan_del(struct sock *sk, int err)
-+{
-+ struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-+ struct sock *parent = bluez_pi(sk)->parent;
-+
-+ l2cap_sock_clear_timer(sk);
-+
-+ BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
-+
-+ if (conn) {
-+ /* Unlink from channel list */
-+ l2cap_chan_unlink(&conn->chan_list, sk);
-+ l2cap_pi(sk)->conn = NULL;
-+ hci_conn_put(conn->hcon);
-+ }
-+
-+ sk->state = BT_CLOSED;
-+ sk->zapped = 1;
-+
-+ if (err)
-+ sk->err = err;
-+
-+ if (parent)
-+ parent->data_ready(parent, 0);
-+ else
-+ sk->state_change(sk);
-+}
-+
-+static void l2cap_conn_ready(struct l2cap_conn *conn)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ struct sock *sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ bh_lock_sock(sk);
-+
-+ if (sk->type != SOCK_SEQPACKET) {
-+ l2cap_sock_clear_timer(sk);
-+ sk->state = BT_CONNECTED;
-+ sk->state_change(sk);
-+ } else if (sk->state == BT_CONNECT) {
-+ l2cap_conn_req req;
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ req.psm = l2cap_pi(sk)->psm;
-+ l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
-+ }
-+
-+ bh_unlock_sock(sk);
-+ }
-+
-+ read_unlock(&l->lock);
-+}
-+
-+/* Notify sockets that we cannot guaranty reliability anymore */
-+static void l2cap_conn_unreliable(struct l2cap_conn *conn, int err)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ struct sock *sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ if (l2cap_pi(sk)->link_mode & L2CAP_LM_RELIABLE)
-+ sk->err = err;
-+ }
-+ read_unlock(&l->lock);
-+}
-+
-+static void l2cap_chan_ready(struct sock *sk)
-+{
-+ struct sock *parent = bluez_pi(sk)->parent;
-+
-+ BT_DBG("sk %p, parent %p", sk, parent);
-+
-+ l2cap_pi(sk)->conf_state = 0;
-+ l2cap_sock_clear_timer(sk);
-+
-+ if (!parent) {
-+ /* Outgoing channel.
-+ * Wake up socket sleeping on connect.
-+ */
-+ sk->state = BT_CONNECTED;
-+ sk->state_change(sk);
-+ } else {
-+ /* Incomming channel.
-+ * Wake up socket sleeping on accept.
-+ */
-+ parent->data_ready(parent, 0);
-+ }
-+}
-+
-+/* Copy frame to all raw sockets on that connection */
-+void l2cap_raw_recv(struct l2cap_conn *conn, struct sk_buff *skb)
-+{
-+ struct l2cap_chan_list *l = &conn->chan_list;
-+ struct sk_buff *nskb;
-+ struct sock * sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ if (sk->type != SOCK_RAW)
-+ continue;
-+
-+ /* Don't send frame to the socket it came from */
-+ if (skb->sk == sk)
-+ continue;
-+
-+ if (!(nskb = skb_clone(skb, GFP_ATOMIC)))
-+ continue;
-+
-+ if (sock_queue_rcv_skb(sk, nskb))
-+ kfree_skb(nskb);
-+ }
-+ read_unlock(&l->lock);
-+}
-+
-+static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len)
-+{
-+ struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-+ struct sk_buff *skb, **frag;
-+ int err, hlen, count, sent=0;
-+ l2cap_hdr *lh;
-+
-+ BT_DBG("sk %p len %d", sk, len);
-+
-+ /* First fragment (with L2CAP header) */
-+ if (sk->type == SOCK_DGRAM)
-+ hlen = L2CAP_HDR_SIZE + 2;
-+ else
-+ hlen = L2CAP_HDR_SIZE;
-+
-+ count = MIN(conn->mtu - hlen, len);
-+
-+ skb = bluez_skb_send_alloc(sk, hlen + count,
-+ msg->msg_flags & MSG_DONTWAIT, &err);
-+ if (!skb)
-+ return err;
-+
-+ /* Create L2CAP header */
-+ lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-+ lh->cid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ lh->len = __cpu_to_le16(len + (hlen - L2CAP_HDR_SIZE));
-+
-+ if (sk->type == SOCK_DGRAM)
-+ put_unaligned(l2cap_pi(sk)->psm, (__u16 *) skb_put(skb, 2));
-+
-+ if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) {
-+ err = -EFAULT;
-+ goto fail;
-+ }
-+
-+ sent += count;
-+ len -= count;
-+
-+ /* Continuation fragments (no L2CAP header) */
-+ frag = &skb_shinfo(skb)->frag_list;
-+ while (len) {
-+ count = MIN(conn->mtu, len);
-+
-+ *frag = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err);
-+ if (!*frag)
-+ goto fail;
-+
-+ if (memcpy_fromiovec(skb_put(*frag, count), msg->msg_iov, count)) {
-+ err = -EFAULT;
-+ goto fail;
-+ }
-+
-+ sent += count;
-+ len -= count;
-+
-+ frag = &(*frag)->next;
-+ }
-+
-+ if ((err = hci_send_acl(conn->hcon, skb, 0)) < 0)
-+ goto fail;
-+
-+ return sent;
-+
-+fail:
-+ kfree_skb(skb);
-+ return err;
-+}
-+
-+/* --------- L2CAP signalling commands --------- */
-+static inline __u8 l2cap_get_ident(struct l2cap_conn *conn)
-+{
-+ __u8 id;
-+
-+ /* Get next available identificator.
-+ * 1 - 199 are used by kernel.
-+ * 200 - 254 are used by utilities like l2ping, etc
-+ */
-+
-+ spin_lock(&conn->lock);
-+
-+ if (++conn->tx_ident > 199)
-+ conn->tx_ident = 1;
-+
-+ id = conn->tx_ident;
-+
-+ spin_unlock(&conn->lock);
-+
-+ return id;
-+}
-+
-+static struct sk_buff *l2cap_build_cmd(struct l2cap_conn *conn,
-+ __u8 code, __u8 ident, __u16 dlen, void *data)
-+{
-+ struct sk_buff *skb, **frag;
-+ l2cap_cmd_hdr *cmd;
-+ l2cap_hdr *lh;
-+ int len, count;
-+
-+ BT_DBG("conn %p, code 0x%2.2x, ident 0x%2.2x, len %d", conn, code, ident, dlen);
-+
-+ len = L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE + dlen;
-+ count = MIN(conn->mtu, len);
-+
-+ skb = bluez_skb_alloc(count, GFP_ATOMIC);
-+ if (!skb)
-+ return NULL;
-+
-+ lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-+ lh->len = __cpu_to_le16(L2CAP_CMD_HDR_SIZE + dlen);
-+ lh->cid = __cpu_to_le16(0x0001);
-+
-+ cmd = (l2cap_cmd_hdr *) skb_put(skb, L2CAP_CMD_HDR_SIZE);
-+ cmd->code = code;
-+ cmd->ident = ident;
-+ cmd->len = __cpu_to_le16(dlen);
-+
-+ if (dlen) {
-+ count -= L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE;
-+ memcpy(skb_put(skb, count), data, count);
-+ data += count;
-+ }
-+
-+ len -= skb->len;
-+
-+ /* Continuation fragments (no L2CAP header) */
-+ frag = &skb_shinfo(skb)->frag_list;
-+ while (len) {
-+ count = MIN(conn->mtu, len);
-+
-+ *frag = bluez_skb_alloc(count, GFP_ATOMIC);
-+ if (!*frag)
-+ goto fail;
-+
-+ memcpy(skb_put(*frag, count), data, count);
-+
-+ len -= count;
-+ data += count;
-+
-+ frag = &(*frag)->next;
-+ }
-+
-+ return skb;
-+
-+fail:
-+ kfree_skb(skb);
-+ return NULL;
-+}
-+
-+static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data)
-+{
-+ __u8 ident = l2cap_get_ident(conn);
-+ struct sk_buff *skb = l2cap_build_cmd(conn, code, ident, len, data);
-+
-+ BT_DBG("code 0x%2.2x", code);
-+
-+ if (!skb)
-+ return -ENOMEM;
-+ return hci_send_acl(conn->hcon, skb, 0);
-+}
-+
-+static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data)
-+{
-+ struct sk_buff *skb = l2cap_build_cmd(conn, code, ident, len, data);
-+
-+ BT_DBG("code 0x%2.2x", code);
-+
-+ if (!skb)
-+ return -ENOMEM;
-+ return hci_send_acl(conn->hcon, skb, 0);
-+}
-+
-+static inline int l2cap_get_conf_opt(void **ptr, int *type, int *olen, unsigned long *val)
-+{
-+ l2cap_conf_opt *opt = *ptr;
-+ int len;
-+
-+ len = L2CAP_CONF_OPT_SIZE + opt->len;
-+ *ptr += len;
-+
-+ *type = opt->type;
-+ *olen = opt->len;
-+
-+ switch (opt->len) {
-+ case 1:
-+ *val = *((__u8 *) opt->val);
-+ break;
-+
-+ case 2:
-+ *val = __le16_to_cpu(*((__u16 *)opt->val));
-+ break;
-+
-+ case 4:
-+ *val = __le32_to_cpu(*((__u32 *)opt->val));
-+ break;
-+
-+ default:
-+ *val = (unsigned long) opt->val;
-+ break;
-+ };
-+
-+ BT_DBG("type 0x%2.2x len %d val 0x%lx", *type, opt->len, *val);
-+ return len;
-+}
-+
-+static inline void l2cap_parse_conf_req(struct sock *sk, void *data, int len)
-+{
-+ int type, hint, olen;
-+ unsigned long val;
-+ void *ptr = data;
-+
-+ BT_DBG("sk %p len %d", sk, len);
-+
-+ while (len >= L2CAP_CONF_OPT_SIZE) {
-+ len -= l2cap_get_conf_opt(&ptr, &type, &olen, &val);
-+
-+ hint = type & 0x80;
-+ type &= 0x7f;
-+
-+ switch (type) {
-+ case L2CAP_CONF_MTU:
-+ l2cap_pi(sk)->conf_mtu = val;
-+ break;
-+
-+ case L2CAP_CONF_FLUSH_TO:
-+ l2cap_pi(sk)->flush_to = val;
-+ break;
-+
-+ case L2CAP_CONF_QOS:
-+ break;
-+
-+ default:
-+ if (hint)
-+ break;
-+
-+ /* FIXME: Reject unknown option */
-+ break;
-+ };
-+ }
-+}
-+
-+static void l2cap_add_conf_opt(void **ptr, __u8 type, __u8 len, unsigned long val)
-+{
-+ register l2cap_conf_opt *opt = *ptr;
-+
-+ BT_DBG("type 0x%2.2x len %d val 0x%lx", type, len, val);
-+
-+ opt->type = type;
-+ opt->len = len;
-+
-+ switch (len) {
-+ case 1:
-+ *((__u8 *) opt->val) = val;
-+ break;
-+
-+ case 2:
-+ *((__u16 *) opt->val) = __cpu_to_le16(val);
-+ break;
-+
-+ case 4:
-+ *((__u32 *) opt->val) = __cpu_to_le32(val);
-+ break;
-+
-+ default:
-+ memcpy(opt->val, (void *) val, len);
-+ break;
-+ };
-+
-+ *ptr += L2CAP_CONF_OPT_SIZE + len;
-+}
-+
-+static int l2cap_build_conf_req(struct sock *sk, void *data)
-+{
-+ struct l2cap_pinfo *pi = l2cap_pi(sk);
-+ l2cap_conf_req *req = (l2cap_conf_req *) data;
-+ void *ptr = req->data;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (pi->imtu != L2CAP_DEFAULT_MTU)
-+ l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->imtu);
-+
-+ /* FIXME. Need actual value of the flush timeout */
-+ //if (flush_to != L2CAP_DEFAULT_FLUSH_TO)
-+ // l2cap_add_conf_opt(&ptr, L2CAP_CONF_FLUSH_TO, 2, pi->flush_to);
-+
-+ req->dcid = __cpu_to_le16(pi->dcid);
-+ req->flags = __cpu_to_le16(0);
-+
-+ return ptr - data;
-+}
-+
-+static inline int l2cap_conf_output(struct sock *sk, void **ptr)
-+{
-+ struct l2cap_pinfo *pi = l2cap_pi(sk);
-+ int result = 0;
-+
-+ /* Configure output options and let the other side know
-+ * which ones we don't like.
-+ */
-+ if (pi->conf_mtu < pi->omtu) {
-+ l2cap_add_conf_opt(ptr, L2CAP_CONF_MTU, 2, pi->omtu);
-+ result = L2CAP_CONF_UNACCEPT;
-+ } else {
-+ pi->omtu = pi->conf_mtu;
-+ }
-+
-+ BT_DBG("sk %p result %d", sk, result);
-+ return result;
-+}
-+
-+static int l2cap_build_conf_rsp(struct sock *sk, void *data, int *result)
-+{
-+ l2cap_conf_rsp *rsp = (l2cap_conf_rsp *) data;
-+ void *ptr = rsp->data;
-+ u16 flags = 0;
-+
-+ BT_DBG("sk %p complete %d", sk, result ? 1 : 0);
-+
-+ if (result)
-+ *result = l2cap_conf_output(sk, &ptr);
-+ else
-+ flags |= 0x0001;
-+
-+ rsp->scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ rsp->result = __cpu_to_le16(result ? *result : 0);
-+ rsp->flags = __cpu_to_le16(flags);
-+
-+ return ptr - data;
-+}
-+
-+static inline int l2cap_connect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ struct l2cap_chan_list *list = &conn->chan_list;
-+ l2cap_conn_req *req = (l2cap_conn_req *) data;
-+ l2cap_conn_rsp rsp;
-+ struct sock *sk, *parent;
-+ int result = 0, status = 0;
-+
-+ __u16 dcid = 0, scid = __le16_to_cpu(req->scid);
-+ __u16 psm = req->psm;
-+
-+ BT_DBG("psm 0x%2.2x scid 0x%4.4x", psm, scid);
-+
-+ /* Check if we have socket listening on psm */
-+ parent = l2cap_get_sock_by_psm(BT_LISTEN, psm, conn->src);
-+ if (!parent) {
-+ result = L2CAP_CR_BAD_PSM;
-+ goto sendresp;
-+ }
-+
-+ result = L2CAP_CR_NO_MEM;
-+
-+ /* Check for backlog size */
-+ if (parent->ack_backlog > parent->max_ack_backlog) {
-+ BT_DBG("backlog full %d", parent->ack_backlog);
-+ goto response;
-+ }
-+
-+ sk = l2cap_sock_alloc(NULL, BTPROTO_L2CAP, GFP_ATOMIC);
-+ if (!sk)
-+ goto response;
-+
-+ write_lock(&list->lock);
-+
-+ /* Check if we already have channel with that dcid */
-+ if (__l2cap_get_chan_by_dcid(list, scid)) {
-+ write_unlock(&list->lock);
-+ sk->zapped = 1;
-+ l2cap_sock_kill(sk);
-+ goto response;
-+ }
-+
-+ hci_conn_hold(conn->hcon);
-+
-+ l2cap_sock_init(sk, parent);
-+ bacpy(&bluez_pi(sk)->src, conn->src);
-+ bacpy(&bluez_pi(sk)->dst, conn->dst);
-+ l2cap_pi(sk)->psm = psm;
-+ l2cap_pi(sk)->dcid = scid;
-+
-+ __l2cap_chan_add(conn, sk, parent);
-+ dcid = l2cap_pi(sk)->scid;
-+
-+ l2cap_sock_set_timer(sk, sk->sndtimeo);
-+
-+ /* Service level security */
-+ result = L2CAP_CR_PEND;
-+ status = L2CAP_CS_AUTHEN_PEND;
-+ sk->state = BT_CONNECT2;
-+ l2cap_pi(sk)->ident = cmd->ident;
-+
-+ if (l2cap_pi(sk)->link_mode & L2CAP_LM_ENCRYPT) {
-+ if (!hci_conn_encrypt(conn->hcon))
-+ goto done;
-+ } else if (l2cap_pi(sk)->link_mode & L2CAP_LM_AUTH) {
-+ if (!hci_conn_auth(conn->hcon))
-+ goto done;
-+ }
-+
-+ sk->state = BT_CONFIG;
-+ result = status = 0;
-+
-+done:
-+ write_unlock(&list->lock);
-+
-+response:
-+ bh_unlock_sock(parent);
-+
-+sendresp:
-+ rsp.scid = __cpu_to_le16(scid);
-+ rsp.dcid = __cpu_to_le16(dcid);
-+ rsp.result = __cpu_to_le16(result);
-+ rsp.status = __cpu_to_le16(status);
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp);
-+ return 0;
-+}
-+
-+static inline int l2cap_connect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_conn_rsp *rsp = (l2cap_conn_rsp *) data;
-+ __u16 scid, dcid, result, status;
-+ struct sock *sk;
-+ char req[128];
-+
-+ scid = __le16_to_cpu(rsp->scid);
-+ dcid = __le16_to_cpu(rsp->dcid);
-+ result = __le16_to_cpu(rsp->result);
-+ status = __le16_to_cpu(rsp->status);
-+
-+ BT_DBG("dcid 0x%4.4x scid 0x%4.4x result 0x%2.2x status 0x%2.2x", dcid, scid, result, status);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-+ return -ENOENT;
-+
-+ switch (result) {
-+ case L2CAP_CR_SUCCESS:
-+ sk->state = BT_CONFIG;
-+ l2cap_pi(sk)->dcid = dcid;
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_REQ_SENT;
-+
-+ l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-+ break;
-+
-+ case L2CAP_CR_PEND:
-+ break;
-+
-+ default:
-+ l2cap_chan_del(sk, ECONNREFUSED);
-+ break;
-+ }
-+
-+ bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_config_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_conf_req * req = (l2cap_conf_req *) data;
-+ __u16 dcid, flags;
-+ __u8 rsp[64];
-+ struct sock *sk;
-+ int result;
-+
-+ dcid = __le16_to_cpu(req->dcid);
-+ flags = __le16_to_cpu(req->flags);
-+
-+ BT_DBG("dcid 0x%4.4x flags 0x%2.2x", dcid, flags);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-+ return -ENOENT;
-+
-+ l2cap_parse_conf_req(sk, req->data, cmd->len - L2CAP_CONF_REQ_SIZE);
-+
-+ if (flags & 0x0001) {
-+ /* Incomplete config. Send empty response. */
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, NULL), rsp);
-+ goto unlock;
-+ }
-+
-+ /* Complete config. */
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, &result), rsp);
-+
-+ if (result)
-+ goto unlock;
-+
-+ /* Output config done */
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_OUTPUT_DONE;
-+
-+ if (l2cap_pi(sk)->conf_state & L2CAP_CONF_INPUT_DONE) {
-+ sk->state = BT_CONNECTED;
-+ l2cap_chan_ready(sk);
-+ } else if (!(l2cap_pi(sk)->conf_state & L2CAP_CONF_REQ_SENT)) {
-+ char req[64];
-+ l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-+ }
-+
-+unlock:
-+ bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_config_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_conf_rsp *rsp = (l2cap_conf_rsp *)data;
-+ __u16 scid, flags, result;
-+ struct sock *sk;
-+ int err = 0;
-+
-+ scid = __le16_to_cpu(rsp->scid);
-+ flags = __le16_to_cpu(rsp->flags);
-+ result = __le16_to_cpu(rsp->result);
-+
-+ BT_DBG("scid 0x%4.4x flags 0x%2.2x result 0x%2.2x", scid, flags, result);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-+ return -ENOENT;
-+
-+ switch (result) {
-+ case L2CAP_CONF_SUCCESS:
-+ break;
-+
-+ case L2CAP_CONF_UNACCEPT:
-+ if (++l2cap_pi(sk)->conf_retry < L2CAP_CONF_MAX_RETRIES) {
-+ char req[128];
-+ /*
-+ It does not make sense to adjust L2CAP parameters
-+ that are currently defined in the spec. We simply
-+ resend config request that we sent earlier. It is
-+ stupid :) but it helps qualification testing
-+ which expects at least some response from us.
-+ */
-+ l2cap_send_req(conn, L2CAP_CONF_REQ,
-+ l2cap_build_conf_req(sk, req), req);
-+ goto done;
-+ }
-+ default:
-+ sk->state = BT_DISCONN;
-+ sk->err = ECONNRESET;
-+ l2cap_sock_set_timer(sk, HZ * 5);
-+ {
-+ l2cap_disconn_req req;
-+ req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
-+ }
-+ goto done;
-+ }
-+
-+ if (flags & 0x01)
-+ goto done;
-+
-+ /* Input config done */
-+ l2cap_pi(sk)->conf_state |= L2CAP_CONF_INPUT_DONE;
-+
-+ if (l2cap_pi(sk)->conf_state & L2CAP_CONF_OUTPUT_DONE) {
-+ sk->state = BT_CONNECTED;
-+ l2cap_chan_ready(sk);
-+ }
-+
-+done:
-+ bh_unlock_sock(sk);
-+ return err;
-+}
-+
-+static inline int l2cap_disconnect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_disconn_req *req = (l2cap_disconn_req *) data;
-+ l2cap_disconn_rsp rsp;
-+ __u16 dcid, scid;
-+ struct sock *sk;
-+
-+ scid = __le16_to_cpu(req->scid);
-+ dcid = __le16_to_cpu(req->dcid);
-+
-+ BT_DBG("scid 0x%4.4x dcid 0x%4.4x", scid, dcid);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-+ return 0;
-+
-+ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ l2cap_send_rsp(conn, cmd->ident, L2CAP_DISCONN_RSP, L2CAP_DISCONN_RSP_SIZE, &rsp);
-+
-+ sk->shutdown = SHUTDOWN_MASK;
-+
-+ l2cap_chan_del(sk, ECONNRESET);
-+ bh_unlock_sock(sk);
-+
-+ l2cap_sock_kill(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_disconnect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
-+{
-+ l2cap_disconn_rsp *rsp = (l2cap_disconn_rsp *) data;
-+ __u16 dcid, scid;
-+ struct sock *sk;
-+
-+ scid = __le16_to_cpu(rsp->scid);
-+ dcid = __le16_to_cpu(rsp->dcid);
-+
-+ BT_DBG("dcid 0x%4.4x scid 0x%4.4x", dcid, scid);
-+
-+ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-+ return 0;
-+ l2cap_chan_del(sk, 0);
-+ bh_unlock_sock(sk);
-+
-+ l2cap_sock_kill(sk);
-+ return 0;
-+}
-+
-+static inline void l2cap_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb)
-+{
-+ __u8 *data = skb->data;
-+ int len = skb->len;
-+ l2cap_cmd_hdr cmd;
-+ int err = 0;
-+
-+ while (len >= L2CAP_CMD_HDR_SIZE) {
-+ memcpy(&cmd, data, L2CAP_CMD_HDR_SIZE);
-+ data += L2CAP_CMD_HDR_SIZE;
-+ len -= L2CAP_CMD_HDR_SIZE;
-+
-+ cmd.len = __le16_to_cpu(cmd.len);
-+
-+ BT_DBG("code 0x%2.2x len %d id 0x%2.2x", cmd.code, cmd.len, cmd.ident);
-+
-+ if (cmd.len > len || !cmd.ident) {
-+ BT_DBG("corrupted command");
-+ break;
-+ }
-+
-+ switch (cmd.code) {
-+ case L2CAP_CONN_REQ:
-+ err = l2cap_connect_req(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_CONN_RSP:
-+ err = l2cap_connect_rsp(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_CONF_REQ:
-+ err = l2cap_config_req(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_CONF_RSP:
-+ err = l2cap_config_rsp(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_DISCONN_REQ:
-+ err = l2cap_disconnect_req(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_DISCONN_RSP:
-+ err = l2cap_disconnect_rsp(conn, &cmd, data);
-+ break;
-+
-+ case L2CAP_COMMAND_REJ:
-+ /* FIXME: We should process this */
-+ l2cap_raw_recv(conn, skb);
-+ break;
-+
-+ case L2CAP_ECHO_REQ:
-+ l2cap_send_rsp(conn, cmd.ident, L2CAP_ECHO_RSP, cmd.len, data);
-+ break;
-+
-+ case L2CAP_ECHO_RSP:
-+ case L2CAP_INFO_REQ:
-+ case L2CAP_INFO_RSP:
-+ l2cap_raw_recv(conn, skb);
-+ break;
-+
-+ default:
-+ BT_ERR("Uknown signaling command 0x%2.2x", cmd.code);
-+ err = -EINVAL;
-+ break;
-+ };
-+
-+ if (err) {
-+ l2cap_cmd_rej rej;
-+ BT_DBG("error %d", err);
-+
-+ /* FIXME: Map err to a valid reason. */
-+ rej.reason = __cpu_to_le16(0);
-+ l2cap_send_rsp(conn, cmd.ident, L2CAP_COMMAND_REJ, L2CAP_CMD_REJ_SIZE, &rej);
-+ }
-+
-+ data += cmd.len;
-+ len -= cmd.len;
-+ }
-+
-+ kfree_skb(skb);
-+}
-+
-+static inline int l2cap_data_channel(struct l2cap_conn *conn, __u16 cid, struct sk_buff *skb)
-+{
-+ struct sock *sk;
-+
-+ sk = l2cap_get_chan_by_scid(&conn->chan_list, cid);
-+ if (!sk) {
-+ BT_DBG("unknown cid 0x%4.4x", cid);
-+ goto drop;
-+ }
-+
-+ BT_DBG("sk %p, len %d", sk, skb->len);
-+
-+ if (sk->state != BT_CONNECTED)
-+ goto drop;
-+
-+ if (l2cap_pi(sk)->imtu < skb->len)
-+ goto drop;
-+
-+ /* If socket recv buffers overflows we drop data here
-+ * which is *bad* because L2CAP has to be reliable.
-+ * But we don't have any other choice. L2CAP doesn't
-+ * provide flow control mechanism */
-+
-+ if (!sock_queue_rcv_skb(sk, skb))
-+ goto done;
-+
-+drop:
-+ kfree_skb(skb);
-+
-+done:
-+ if (sk) bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static inline int l2cap_conless_channel(struct l2cap_conn *conn, __u16 psm, struct sk_buff *skb)
-+{
-+ struct sock *sk;
-+
-+ sk = l2cap_get_sock_by_psm(0, psm, conn->src);
-+ if (!sk)
-+ goto drop;
-+
-+ BT_DBG("sk %p, len %d", sk, skb->len);
-+
-+ if (sk->state != BT_BOUND && sk->state != BT_CONNECTED)
-+ goto drop;
-+
-+ if (l2cap_pi(sk)->imtu < skb->len)
-+ goto drop;
-+
-+ if (!sock_queue_rcv_skb(sk, skb))
-+ goto done;
-+
-+drop:
-+ kfree_skb(skb);
-+
-+done:
-+ if (sk) bh_unlock_sock(sk);
-+ return 0;
-+}
-+
-+static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb)
-+{
-+ l2cap_hdr *lh = (l2cap_hdr *) skb->data;
-+ __u16 cid, psm, len;
-+
-+ skb_pull(skb, L2CAP_HDR_SIZE);
-+ cid = __le16_to_cpu(lh->cid);
-+ len = __le16_to_cpu(lh->len);
-+
-+ BT_DBG("len %d, cid 0x%4.4x", len, cid);
-+
-+ switch (cid) {
-+ case 0x0001:
-+ l2cap_sig_channel(conn, skb);
-+ break;
-+
-+ case 0x0002:
-+ psm = get_unaligned((__u16 *) skb->data);
-+ skb_pull(skb, 2);
-+ l2cap_conless_channel(conn, psm, skb);
-+ break;
-+
-+ default:
-+ l2cap_data_channel(conn, cid, skb);
-+ break;
-+ }
-+}
-+
-+/* ------------ L2CAP interface with lower layer (HCI) ------------- */
-+
-+static int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
-+{
-+ int exact = 0, lm1 = 0, lm2 = 0;
-+ register struct sock *sk;
-+
-+ if (type != ACL_LINK)
-+ return 0;
-+
-+ BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
-+
-+ /* Find listening sockets and check their link_mode */
-+ read_lock(&l2cap_sk_list.lock);
-+ for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-+ if (sk->state != BT_LISTEN)
-+ continue;
-+
-+ if (!bacmp(&bluez_pi(sk)->src, &hdev->bdaddr)) {
-+ lm1 |= (HCI_LM_ACCEPT | l2cap_pi(sk)->link_mode);
-+ exact++;
-+ } else if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ lm2 |= (HCI_LM_ACCEPT | l2cap_pi(sk)->link_mode);
-+ }
-+ read_unlock(&l2cap_sk_list.lock);
-+
-+ return exact ? lm1 : lm2;
-+}
-+
-+static int l2cap_connect_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status);
-+
-+ if (hcon->type != ACL_LINK)
-+ return 0;
-+
-+ if (!status) {
-+ struct l2cap_conn *conn;
-+
-+ conn = l2cap_conn_add(hcon, status);
-+ if (conn)
-+ l2cap_conn_ready(conn);
-+ } else
-+ l2cap_conn_del(hcon, bterr(status));
-+
-+ return 0;
-+}
-+
-+static int l2cap_disconn_ind(struct hci_conn *hcon, __u8 reason)
-+{
-+ BT_DBG("hcon %p reason %d", hcon, reason);
-+
-+ if (hcon->type != ACL_LINK)
-+ return 0;
-+
-+ l2cap_conn_del(hcon, bterr(reason));
-+ return 0;
-+}
-+
-+static int l2cap_auth_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ struct l2cap_chan_list *l;
-+ struct l2cap_conn *conn;
-+ l2cap_conn_rsp rsp;
-+ struct sock *sk;
-+ int result;
-+
-+ if (!(conn = hcon->l2cap_data))
-+ return 0;
-+ l = &conn->chan_list;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ bh_lock_sock(sk);
-+
-+ if (sk->state != BT_CONNECT2 ||
-+ (l2cap_pi(sk)->link_mode & L2CAP_LM_ENCRYPT)) {
-+ bh_unlock_sock(sk);
-+ continue;
-+ }
-+
-+ if (!status) {
-+ sk->state = BT_CONFIG;
-+ result = 0;
-+ } else {
-+ sk->state = BT_DISCONN;
-+ l2cap_sock_set_timer(sk, HZ/10);
-+ result = L2CAP_CR_SEC_BLOCK;
-+ }
-+
-+ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ rsp.result = __cpu_to_le16(result);
-+ rsp.status = __cpu_to_le16(0);
-+ l2cap_send_rsp(conn, l2cap_pi(sk)->ident, L2CAP_CONN_RSP,
-+ L2CAP_CONN_RSP_SIZE, &rsp);
-+
-+ bh_unlock_sock(sk);
-+ }
-+
-+ read_unlock(&l->lock);
-+ return 0;
-+}
-+
-+static int l2cap_encrypt_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ struct l2cap_chan_list *l;
-+ struct l2cap_conn *conn;
-+ l2cap_conn_rsp rsp;
-+ struct sock *sk;
-+ int result;
-+
-+ if (!(conn = hcon->l2cap_data))
-+ return 0;
-+ l = &conn->chan_list;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ read_lock(&l->lock);
-+
-+ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-+ bh_lock_sock(sk);
-+
-+ if (sk->state != BT_CONNECT2) {
-+ bh_unlock_sock(sk);
-+ continue;
-+ }
-+
-+ if (!status) {
-+ sk->state = BT_CONFIG;
-+ result = 0;
-+ } else {
-+ sk->state = BT_DISCONN;
-+ l2cap_sock_set_timer(sk, HZ/10);
-+ result = L2CAP_CR_SEC_BLOCK;
-+ }
-+
-+ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-+ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-+ rsp.result = __cpu_to_le16(result);
-+ rsp.status = __cpu_to_le16(0);
-+ l2cap_send_rsp(conn, l2cap_pi(sk)->ident, L2CAP_CONN_RSP,
-+ L2CAP_CONN_RSP_SIZE, &rsp);
-+
-+ bh_unlock_sock(sk);
-+ }
-+
-+ read_unlock(&l->lock);
-+ return 0;
-+}
-+
-+static int l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb, __u16 flags)
-+{
-+ struct l2cap_conn *conn = hcon->l2cap_data;
-+
-+ if (!conn && !(conn = l2cap_conn_add(hcon, 0)))
-+ goto drop;
-+
-+ BT_DBG("conn %p len %d flags 0x%x", conn, skb->len, flags);
-+
-+ if (flags & ACL_START) {
-+ l2cap_hdr *hdr;
-+ int len;
-+
-+ if (conn->rx_len) {
-+ BT_ERR("Unexpected start frame (len %d)", skb->len);
-+ kfree_skb(conn->rx_skb);
-+ conn->rx_skb = NULL;
-+ conn->rx_len = 0;
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ }
-+
-+ if (skb->len < 2) {
-+ BT_ERR("Frame is too short (len %d)", skb->len);
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ hdr = (l2cap_hdr *) skb->data;
-+ len = __le16_to_cpu(hdr->len) + L2CAP_HDR_SIZE;
-+
-+ if (len == skb->len) {
-+ /* Complete frame received */
-+ l2cap_recv_frame(conn, skb);
-+ return 0;
-+ }
-+
-+ BT_DBG("Start: total len %d, frag len %d", len, skb->len);
-+
-+ if (skb->len > len) {
-+ BT_ERR("Frame is too long (len %d, expected len %d)",
-+ skb->len, len);
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ /* Allocate skb for the complete frame including header */
-+ conn->rx_skb = bluez_skb_alloc(len, GFP_ATOMIC);
-+ if (!conn->rx_skb)
-+ goto drop;
-+
-+ memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
-+ conn->rx_len = len - skb->len;
-+ } else {
-+ BT_DBG("Cont: frag len %d (expecting %d)", skb->len, conn->rx_len);
-+
-+ if (!conn->rx_len) {
-+ BT_ERR("Unexpected continuation frame (len %d)", skb->len);
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ if (skb->len > conn->rx_len) {
-+ BT_ERR("Fragment is too long (len %d, expected %d)",
-+ skb->len, conn->rx_len);
-+ kfree_skb(conn->rx_skb);
-+ conn->rx_skb = NULL;
-+ conn->rx_len = 0;
-+ l2cap_conn_unreliable(conn, ECOMM);
-+ goto drop;
-+ }
-+
-+ memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
-+ conn->rx_len -= skb->len;
-+
-+ if (!conn->rx_len) {
-+ /* Complete frame received */
-+ l2cap_recv_frame(conn, conn->rx_skb);
-+ conn->rx_skb = NULL;
-+ }
-+ }
-+
-+drop:
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+/* ----- Proc fs support ------ */
-+static int l2cap_sock_dump(char *buf, struct bluez_sock_list *list)
-+{
-+ struct l2cap_pinfo *pi;
-+ struct sock *sk;
-+ char *ptr = buf;
-+
-+ read_lock_bh(&list->lock);
-+
-+ for (sk = list->head; sk; sk = sk->next) {
-+ pi = l2cap_pi(sk);
-+ ptr += sprintf(ptr, "%s %s %d %d 0x%4.4x 0x%4.4x %d %d 0x%x\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ sk->state, pi->psm, pi->scid, pi->dcid, pi->imtu, pi->omtu,
-+ pi->link_mode);
-+ }
-+
-+ read_unlock_bh(&list->lock);
-+
-+ ptr += sprintf(ptr, "\n");
-+ return ptr - buf;
-+}
-+
-+static int l2cap_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
-+{
-+ char *ptr = buf;
-+ int len;
-+
-+ BT_DBG("count %d, offset %ld", count, offset);
-+
-+ ptr += l2cap_sock_dump(ptr, &l2cap_sk_list);
-+ len = ptr - buf;
-+
-+ if (len <= count + offset)
-+ *eof = 1;
-+
-+ *start = buf + offset;
-+ len -= offset;
-+
-+ if (len > count)
-+ len = count;
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+
-+static struct proto_ops l2cap_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: l2cap_sock_release,
-+ bind: l2cap_sock_bind,
-+ connect: l2cap_sock_connect,
-+ listen: l2cap_sock_listen,
-+ accept: l2cap_sock_accept,
-+ getname: l2cap_sock_getname,
-+ sendmsg: l2cap_sock_sendmsg,
-+ recvmsg: bluez_sock_recvmsg,
-+ poll: bluez_sock_poll,
-+ socketpair: sock_no_socketpair,
-+ ioctl: sock_no_ioctl,
-+ shutdown: l2cap_sock_shutdown,
-+ setsockopt: l2cap_sock_setsockopt,
-+ getsockopt: l2cap_sock_getsockopt,
-+ mmap: sock_no_mmap
-+};
-+
-+static struct net_proto_family l2cap_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: l2cap_sock_create
-+};
-+
-+static struct hci_proto l2cap_hci_proto = {
-+ name: "L2CAP",
-+ id: HCI_PROTO_L2CAP,
-+ connect_ind: l2cap_connect_ind,
-+ connect_cfm: l2cap_connect_cfm,
-+ disconn_ind: l2cap_disconn_ind,
-+ recv_acldata: l2cap_recv_acldata,
-+ auth_cfm: l2cap_auth_cfm,
-+ encrypt_cfm: l2cap_encrypt_cfm
-+};
-+
-+int __init l2cap_init(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops))) {
-+ BT_ERR("Can't register L2CAP socket");
-+ return err;
-+ }
-+
-+ if ((err = hci_register_proto(&l2cap_hci_proto))) {
-+ BT_ERR("Can't register L2CAP protocol");
-+ return err;
-+ }
-+
-+ create_proc_read_entry("bluetooth/l2cap", 0, 0, l2cap_read_proc, NULL);
-+
-+ BT_INFO("BlueZ L2CAP ver %s Copyright (C) 2000,2001 Qualcomm Inc", VERSION);
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ return 0;
-+}
-+
-+void l2cap_cleanup(void)
-+{
-+ remove_proc_entry("bluetooth/l2cap", NULL);
-+
-+ /* Unregister socket and protocol */
-+ if (bluez_sock_unregister(BTPROTO_L2CAP))
-+ BT_ERR("Can't unregister L2CAP socket");
-+
-+ if (hci_unregister_proto(&l2cap_hci_proto))
-+ BT_ERR("Can't unregister L2CAP protocol");
-+}
-+
-+void l2cap_load(void)
-+{
-+ /* Dummy function to trigger automatic L2CAP module loading by
-+ other modules that use L2CAP sockets but do not use any other
-+ symbols from it. */
-+ return;
-+}
-+
-+EXPORT_SYMBOL(l2cap_load);
-+
-+module_init(l2cap_init);
-+module_exit(l2cap_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_DESCRIPTION("BlueZ L2CAP ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/l2cap_core.c linux-2.4.18-mh9/net/bluetooth/l2cap_core.c
---- linux-2.4.18/net/bluetooth/l2cap_core.c Sun Sep 30 21:26:08 2001
-+++ linux-2.4.18-mh9/net/bluetooth/l2cap_core.c Thu Jan 1 01:00:00 1970
-@@ -1,2316 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * BlueZ L2CAP core and sockets.
-- *
-- * $Id: l2cap_core.c,v 1.19 2001/08/03 04:19:50 maxk Exp $
-- */
--#define VERSION "1.1"
--
--#include <linux/config.h>
--#include <linux/module.h>
--
--#include <linux/types.h>
--#include <linux/errno.h>
--#include <linux/kernel.h>
--#include <linux/major.h>
--#include <linux/sched.h>
--#include <linux/slab.h>
--#include <linux/poll.h>
--#include <linux/fcntl.h>
--#include <linux/init.h>
--#include <linux/skbuff.h>
--#include <linux/interrupt.h>
--#include <linux/socket.h>
--#include <linux/skbuff.h>
--#include <linux/proc_fs.h>
--#include <linux/list.h>
--#include <net/sock.h>
--
--#include <asm/system.h>
--#include <asm/uaccess.h>
--
--#include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
--#include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/l2cap.h>
--#include <net/bluetooth/l2cap_core.h>
--
--#ifndef L2CAP_DEBUG
--#undef DBG
--#define DBG( A... )
--#endif
--
--struct proto_ops l2cap_sock_ops;
--
--struct bluez_sock_list l2cap_sk_list = {
-- lock: RW_LOCK_UNLOCKED
--};
--
--struct list_head l2cap_iff_list = LIST_HEAD_INIT(l2cap_iff_list);
--rwlock_t l2cap_rt_lock = RW_LOCK_UNLOCKED;
--
--static int l2cap_conn_del(struct l2cap_conn *conn, int err);
--
--static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent);
--static void l2cap_chan_del(struct sock *sk, int err);
--static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len);
--
--static void l2cap_sock_close(struct sock *sk);
--static void l2cap_sock_kill(struct sock *sk);
--
--static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data);
--static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data);
--
--/* -------- L2CAP interfaces & routing --------- */
--/* Add/delete L2CAP interface.
-- * Must be called with locked rt_lock
-- */
--
--static void l2cap_iff_add(struct hci_dev *hdev)
--{
-- struct l2cap_iff *iff;
--
-- DBG("%s", hdev->name);
--
-- DBG("iff_list %p next %p prev %p", &l2cap_iff_list, l2cap_iff_list.next, l2cap_iff_list.prev);
--
-- /* Allocate new interface and lock HCI device */
-- if (!(iff = kmalloc(sizeof(struct l2cap_iff), GFP_KERNEL))) {
-- ERR("Can't allocate new interface %s", hdev->name);
-- return;
-- }
-- memset(iff, 0, sizeof(struct l2cap_iff));
--
-- hci_dev_hold(hdev);
-- hdev->l2cap_data = iff;
-- iff->hdev = hdev;
-- iff->mtu = hdev->acl_mtu - HCI_ACL_HDR_SIZE;
-- iff->bdaddr = &hdev->bdaddr;
--
-- spin_lock_init(&iff->lock);
-- INIT_LIST_HEAD(&iff->conn_list);
--
-- list_add(&iff->list, &l2cap_iff_list);
--}
--
--static void l2cap_iff_del(struct hci_dev *hdev)
--{
-- struct l2cap_iff *iff;
--
-- if (!(iff = hdev->l2cap_data))
-- return;
--
-- DBG("%s iff %p", hdev->name, iff);
--
-- list_del(&iff->list);
--
-- l2cap_iff_lock(iff);
--
-- /* Drop connections */
-- while (!list_empty(&iff->conn_list)) {
-- struct l2cap_conn *c;
--
-- c = list_entry(iff->conn_list.next, struct l2cap_conn, list);
-- l2cap_conn_del(c, ENODEV);
-- }
--
-- l2cap_iff_unlock(iff);
--
-- /* Unlock HCI device */
-- hdev->l2cap_data = NULL;
-- hci_dev_put(hdev);
--
-- kfree(iff);
--}
--
--/* Get route. Returns L2CAP interface.
-- * Must be called with locked rt_lock
-- */
--static struct l2cap_iff *l2cap_get_route(bdaddr_t *src, bdaddr_t *dst)
--{
-- struct list_head *p;
-- int use_src;
--
-- DBG("%s -> %s", batostr(src), batostr(dst));
--
-- use_src = bacmp(src, BDADDR_ANY) ? 0 : 1;
--
-- /* Simple routing:
-- * No source address - find interface with bdaddr != dst
-- * Source address - find interface with bdaddr == src
-- */
--
-- list_for_each(p, &l2cap_iff_list) {
-- struct l2cap_iff *iff;
--
-- iff = list_entry(p, struct l2cap_iff, list);
--
-- if (use_src && !bacmp(iff->bdaddr, src))
-- return iff;
-- else if (bacmp(iff->bdaddr, dst))
-- return iff;
-- }
-- return NULL;
--}
--
--/* ----- L2CAP timers ------ */
--static void l2cap_sock_timeout(unsigned long arg)
--{
-- struct sock *sk = (struct sock *) arg;
--
-- DBG("sock %p state %d", sk, sk->state);
--
-- bh_lock_sock(sk);
-- switch (sk->state) {
-- case BT_DISCONN:
-- l2cap_chan_del(sk, ETIMEDOUT);
-- break;
--
-- default:
-- sk->err = ETIMEDOUT;
-- sk->state_change(sk);
-- break;
-- };
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
-- sock_put(sk);
--}
--
--static void l2cap_sock_set_timer(struct sock *sk, long timeout)
--{
-- DBG("sock %p state %d timeout %ld", sk, sk->state, timeout);
--
-- if (!mod_timer(&sk->timer, jiffies + timeout))
-- sock_hold(sk);
--}
--
--static void l2cap_sock_clear_timer(struct sock *sk)
--{
-- DBG("sock %p state %d", sk, sk->state);
--
-- if (timer_pending(&sk->timer) && del_timer(&sk->timer))
-- __sock_put(sk);
--}
--
--static void l2cap_sock_init_timer(struct sock *sk)
--{
-- init_timer(&sk->timer);
-- sk->timer.function = l2cap_sock_timeout;
-- sk->timer.data = (unsigned long)sk;
--}
--
--static void l2cap_conn_timeout(unsigned long arg)
--{
-- struct l2cap_conn *conn = (void *)arg;
--
-- DBG("conn %p state %d", conn, conn->state);
--
-- if (conn->state == BT_CONNECTED) {
-- hci_disconnect(conn->hconn, 0x13);
-- }
--
-- return;
--}
--
--static void l2cap_conn_set_timer(struct l2cap_conn *conn, long timeout)
--{
-- DBG("conn %p state %d timeout %ld", conn, conn->state, timeout);
--
-- mod_timer(&conn->timer, jiffies + timeout);
--}
--
--static void l2cap_conn_clear_timer(struct l2cap_conn *conn)
--{
-- DBG("conn %p state %d", conn, conn->state);
--
-- del_timer(&conn->timer);
--}
--
--static void l2cap_conn_init_timer(struct l2cap_conn *conn)
--{
-- init_timer(&conn->timer);
-- conn->timer.function = l2cap_conn_timeout;
-- conn->timer.data = (unsigned long)conn;
--}
--
--/* -------- L2CAP connections --------- */
--/* Add new connection to the interface.
-- * Interface must be locked
-- */
--static struct l2cap_conn *l2cap_conn_add(struct l2cap_iff *iff, bdaddr_t *dst)
--{
-- struct l2cap_conn *conn;
-- bdaddr_t *src = iff->bdaddr;
--
-- if (!(conn = kmalloc(sizeof(struct l2cap_conn), GFP_KERNEL)))
-- return NULL;
--
-- memset(conn, 0, sizeof(struct l2cap_conn));
--
-- conn->state = BT_OPEN;
-- conn->iff = iff;
-- bacpy(&conn->src, src);
-- bacpy(&conn->dst, dst);
--
-- spin_lock_init(&conn->lock);
-- conn->chan_list.lock = RW_LOCK_UNLOCKED;
--
-- l2cap_conn_init_timer(conn);
--
-- __l2cap_conn_link(iff, conn);
--
-- DBG("%s -> %s, %p", batostr(src), batostr(dst), conn);
--
-- MOD_INC_USE_COUNT;
--
-- return conn;
--}
--
--/* Delete connection on the interface.
-- * Interface must be locked
-- */
--static int l2cap_conn_del(struct l2cap_conn *conn, int err)
--{
-- struct sock *sk;
--
-- DBG("conn %p, state %d, err %d", conn, conn->state, err);
--
-- l2cap_conn_clear_timer(conn);
-- __l2cap_conn_unlink(conn->iff, conn);
--
-- conn->state = BT_CLOSED;
--
-- if (conn->rx_skb)
-- kfree_skb(conn->rx_skb);
--
-- /* Kill channels */
-- while ((sk = conn->chan_list.head)) {
-- bh_lock_sock(sk);
-- l2cap_sock_clear_timer(sk);
-- l2cap_chan_del(sk, err);
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
-- }
--
-- kfree(conn);
--
-- MOD_DEC_USE_COUNT;
-- return 0;
--}
--
--static inline struct l2cap_conn *l2cap_get_conn_by_addr(struct l2cap_iff *iff, bdaddr_t *dst)
--{
-- struct list_head *p;
--
-- list_for_each(p, &iff->conn_list) {
-- struct l2cap_conn *c;
--
-- c = list_entry(p, struct l2cap_conn, list);
-- if (!bacmp(&c->dst, dst))
-- return c;
-- }
-- return NULL;
--}
--
--int l2cap_connect(struct sock *sk)
--{
-- bdaddr_t *src = &l2cap_pi(sk)->src;
-- bdaddr_t *dst = &l2cap_pi(sk)->dst;
-- struct l2cap_conn *conn;
-- struct l2cap_iff *iff;
-- int err = 0;
--
-- DBG("%s -> %s psm 0x%2.2x", batostr(src), batostr(dst), l2cap_pi(sk)->psm);
--
-- read_lock_bh(&l2cap_rt_lock);
--
-- /* Get route to remote BD address */
-- if (!(iff = l2cap_get_route(src, dst))) {
-- err = -EHOSTUNREACH;
-- goto done;
-- }
--
-- /* Update source addr of the socket */
-- bacpy(src, iff->bdaddr);
--
-- l2cap_iff_lock(iff);
--
-- if (!(conn = l2cap_get_conn_by_addr(iff, dst))) {
-- /* Connection doesn't exist */
-- if (!(conn = l2cap_conn_add(iff, dst))) {
-- l2cap_iff_unlock(iff);
-- err = -ENOMEM;
-- goto done;
-- }
-- conn->out = 1;
-- }
--
-- l2cap_iff_unlock(iff);
--
-- l2cap_chan_add(conn, sk, NULL);
--
-- sk->state = BT_CONNECT;
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
--
-- switch (conn->state) {
-- case BT_CONNECTED:
-- if (sk->type == SOCK_SEQPACKET) {
-- l2cap_conn_req req;
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- req.psm = l2cap_pi(sk)->psm;
-- l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
-- } else {
-- l2cap_sock_clear_timer(sk);
-- sk->state = BT_CONNECTED;
-- }
-- break;
--
-- case BT_CONNECT:
-- break;
--
-- default:
-- /* Create ACL connection */
-- conn->state = BT_CONNECT;
-- hci_connect(iff->hdev, dst);
-- break;
-- };
--
--done:
-- read_unlock_bh(&l2cap_rt_lock);
-- return err;
--}
--
--/* ------ Channel queues for listening sockets ------ */
--void l2cap_accept_queue(struct sock *parent, struct sock *sk)
--{
-- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q;
--
-- DBG("parent %p, sk %p", parent, sk);
--
-- sock_hold(sk);
-- l2cap_pi(sk)->parent = parent;
-- l2cap_pi(sk)->next_q = NULL;
--
-- if (!q->head) {
-- q->head = q->tail = sk;
-- } else {
-- struct sock *tail = q->tail;
--
-- l2cap_pi(sk)->prev_q = tail;
-- l2cap_pi(tail)->next_q = sk;
-- q->tail = sk;
-- }
--
-- parent->ack_backlog++;
--}
--
--void l2cap_accept_unlink(struct sock *sk)
--{
-- struct sock *parent = l2cap_pi(sk)->parent;
-- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q;
-- struct sock *next, *prev;
--
-- DBG("sk %p", sk);
--
-- next = l2cap_pi(sk)->next_q;
-- prev = l2cap_pi(sk)->prev_q;
--
-- if (sk == q->head)
-- q->head = next;
-- if (sk == q->tail)
-- q->tail = prev;
--
-- if (next)
-- l2cap_pi(next)->prev_q = prev;
-- if (prev)
-- l2cap_pi(prev)->next_q = next;
--
-- l2cap_pi(sk)->parent = NULL;
--
-- parent->ack_backlog--;
-- __sock_put(sk);
--}
--
--/* Get next connected channel in queue. */
--struct sock *l2cap_accept_dequeue(struct sock *parent, int state)
--{
-- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q;
-- struct sock *sk;
--
-- for (sk = q->head; sk; sk = l2cap_pi(sk)->next_q) {
-- if (!state || sk->state == state) {
-- l2cap_accept_unlink(sk);
-- break;
-- }
-- }
--
-- DBG("parent %p, sk %p", parent, sk);
--
-- return sk;
--}
--
--/* -------- Socket interface ---------- */
--static struct sock *__l2cap_get_sock_by_addr(struct sockaddr_l2 *addr)
--{
-- bdaddr_t *src = &addr->l2_bdaddr;
-- __u16 psm = addr->l2_psm;
-- struct sock *sk;
--
-- for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-- if (l2cap_pi(sk)->psm == psm &&
-- !bacmp(&l2cap_pi(sk)->src, src))
-- break;
-- }
--
-- return sk;
--}
--
--/* Find socket listening on psm and source bdaddr.
-- * Returns closest match.
-- */
--static struct sock *l2cap_get_sock_listen(bdaddr_t *src, __u16 psm)
--{
-- struct sock *sk, *sk1 = NULL;
--
-- read_lock(&l2cap_sk_list.lock);
--
-- for (sk = l2cap_sk_list.head; sk; sk = sk->next) {
-- struct l2cap_pinfo *pi;
--
-- if (sk->state != BT_LISTEN)
-- continue;
--
-- pi = l2cap_pi(sk);
--
-- if (pi->psm == psm) {
-- /* Exact match. */
-- if (!bacmp(&pi->src, src))
-- break;
--
-- /* Closest match */
-- if (!bacmp(&pi->src, BDADDR_ANY))
-- sk1 = sk;
-- }
-- }
--
-- read_unlock(&l2cap_sk_list.lock);
--
-- return sk ? sk : sk1;
--}
--
--static void l2cap_sock_destruct(struct sock *sk)
--{
-- DBG("sk %p", sk);
--
-- skb_queue_purge(&sk->receive_queue);
-- skb_queue_purge(&sk->write_queue);
--
-- MOD_DEC_USE_COUNT;
--}
--
--static void l2cap_sock_cleanup_listen(struct sock *parent)
--{
-- struct sock *sk;
--
-- DBG("parent %p", parent);
--
-- /* Close not yet accepted channels */
-- while ((sk = l2cap_accept_dequeue(parent, 0)))
-- l2cap_sock_close(sk);
--
-- parent->state = BT_CLOSED;
-- parent->zapped = 1;
--}
--
--/* Kill socket (only if zapped and orphan)
-- * Must be called on unlocked socket.
-- */
--static void l2cap_sock_kill(struct sock *sk)
--{
-- if (!sk->zapped || sk->socket)
-- return;
--
-- DBG("sk %p state %d", sk, sk->state);
--
-- /* Kill poor orphan */
-- bluez_sock_unlink(&l2cap_sk_list, sk);
-- sk->dead = 1;
-- sock_put(sk);
--}
--
--/* Close socket.
-- * Must be called on unlocked socket.
-- */
--static void l2cap_sock_close(struct sock *sk)
--{
-- struct l2cap_conn *conn;
--
-- l2cap_sock_clear_timer(sk);
--
-- lock_sock(sk);
--
-- conn = l2cap_pi(sk)->conn;
--
-- DBG("sk %p state %d conn %p socket %p", sk, sk->state, conn, sk->socket);
--
-- switch (sk->state) {
-- case BT_LISTEN:
-- l2cap_sock_cleanup_listen(sk);
-- break;
--
-- case BT_CONNECTED:
-- case BT_CONFIG:
-- if (sk->type == SOCK_SEQPACKET) {
-- l2cap_disconn_req req;
--
-- sk->state = BT_DISCONN;
--
-- req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
--
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
-- } else {
-- l2cap_chan_del(sk, ECONNRESET);
-- }
-- break;
--
-- case BT_CONNECT:
-- case BT_DISCONN:
-- l2cap_chan_del(sk, ECONNRESET);
-- break;
--
-- default:
-- sk->zapped = 1;
-- break;
-- };
--
-- release_sock(sk);
--
-- l2cap_sock_kill(sk);
--}
--
--static void l2cap_sock_init(struct sock *sk, struct sock *parent)
--{
-- struct l2cap_pinfo *pi = l2cap_pi(sk);
--
-- DBG("sk %p", sk);
--
-- if (parent) {
-- sk->type = parent->type;
--
-- pi->imtu = l2cap_pi(parent)->imtu;
-- pi->omtu = l2cap_pi(parent)->omtu;
-- } else {
-- pi->imtu = L2CAP_DEFAULT_MTU;
-- pi->omtu = 0;
-- }
--
-- /* Default config options */
-- pi->conf_mtu = L2CAP_DEFAULT_MTU;
-- pi->flush_to = L2CAP_DEFAULT_FLUSH_TO;
--}
--
--static struct sock *l2cap_sock_alloc(struct socket *sock, int proto, int prio)
--{
-- struct sock *sk;
--
-- if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1)))
-- return NULL;
--
-- sock_init_data(sock, sk);
--
-- sk->zapped = 0;
--
-- sk->destruct = l2cap_sock_destruct;
-- sk->sndtimeo = L2CAP_CONN_TIMEOUT;
--
-- sk->protocol = proto;
-- sk->state = BT_OPEN;
--
-- l2cap_sock_init_timer(sk);
--
-- bluez_sock_link(&l2cap_sk_list, sk);
--
-- MOD_INC_USE_COUNT;
--
-- return sk;
--}
--
--static int l2cap_sock_create(struct socket *sock, int protocol)
--{
-- struct sock *sk;
--
-- DBG("sock %p", sock);
--
-- sock->state = SS_UNCONNECTED;
--
-- if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_RAW)
-- return -ESOCKTNOSUPPORT;
--
-- sock->ops = &l2cap_sock_ops;
--
-- if (!(sk = l2cap_sock_alloc(sock, protocol, GFP_KERNEL)))
-- return -ENOMEM;
--
-- l2cap_sock_init(sk, NULL);
--
-- return 0;
--}
--
--static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
--{
-- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- DBG("sk %p, %s %d", sk, batostr(&la->l2_bdaddr), la->l2_psm);
--
-- if (!addr || addr->sa_family != AF_BLUETOOTH)
-- return -EINVAL;
--
-- lock_sock(sk);
--
-- if (sk->state != BT_OPEN) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- write_lock(&l2cap_sk_list.lock);
--
-- if (la->l2_psm && __l2cap_get_sock_by_addr(la)) {
-- err = -EADDRINUSE;
-- goto unlock;
-- }
--
-- /* Save source address */
-- bacpy(&l2cap_pi(sk)->src, &la->l2_bdaddr);
-- l2cap_pi(sk)->psm = la->l2_psm;
-- sk->state = BT_BOUND;
--
--unlock:
-- write_unlock(&l2cap_sk_list.lock);
--
--done:
-- release_sock(sk);
--
-- return err;
--}
--
--static int l2cap_sock_w4_connect(struct sock *sk, int flags)
--{
-- DECLARE_WAITQUEUE(wait, current);
-- long timeo = sock_sndtimeo(sk, flags & O_NONBLOCK);
-- int err = 0;
--
-- DBG("sk %p", sk);
--
-- add_wait_queue(sk->sleep, &wait);
-- current->state = TASK_INTERRUPTIBLE;
--
-- while (sk->state != BT_CONNECTED) {
-- if (!timeo) {
-- err = -EAGAIN;
-- break;
-- }
--
-- release_sock(sk);
-- timeo = schedule_timeout(timeo);
-- lock_sock(sk);
--
-- err = 0;
-- if (sk->state == BT_CONNECTED)
-- break;
--
-- if (sk->err) {
-- err = sock_error(sk);
-- break;
-- }
--
-- if (signal_pending(current)) {
-- err = sock_intr_errno(timeo);
-- break;
-- }
-- }
-- current->state = TASK_RUNNING;
-- remove_wait_queue(sk->sleep, &wait);
--
-- return err;
--}
--
--static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
--{
-- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- lock_sock(sk);
--
-- DBG("sk %p", sk);
--
-- if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_l2)) {
-- err = -EINVAL;
-- goto done;
-- }
--
-- if (sk->state != BT_OPEN && sk->state != BT_BOUND) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- if (sk->type == SOCK_SEQPACKET && !la->l2_psm) {
-- err = -EINVAL;
-- goto done;
-- }
--
-- /* Set destination address and psm */
-- bacpy(&l2cap_pi(sk)->dst, &la->l2_bdaddr);
-- l2cap_pi(sk)->psm = la->l2_psm;
--
-- if ((err = l2cap_connect(sk)))
-- goto done;
--
-- err = l2cap_sock_w4_connect(sk, flags);
--
--done:
-- release_sock(sk);
-- return err;
--}
--
--int l2cap_sock_listen(struct socket *sock, int backlog)
--{
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- DBG("sk %p backlog %d", sk, backlog);
--
-- lock_sock(sk);
--
-- if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- if (!l2cap_pi(sk)->psm) {
-- err = -EINVAL;
-- goto done;
-- }
--
-- sk->max_ack_backlog = backlog;
-- sk->ack_backlog = 0;
-- sk->state = BT_LISTEN;
--
--done:
-- release_sock(sk);
-- return err;
--}
--
--int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
--{
-- DECLARE_WAITQUEUE(wait, current);
-- struct sock *sk = sock->sk, *ch;
-- long timeo;
-- int err = 0;
--
-- lock_sock(sk);
--
-- if (sk->state != BT_LISTEN) {
-- err = -EBADFD;
-- goto done;
-- }
--
-- timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
--
-- DBG("sk %p timeo %ld", sk, timeo);
--
-- /* Wait for an incoming connection. (wake-one). */
-- add_wait_queue_exclusive(sk->sleep, &wait);
-- current->state = TASK_INTERRUPTIBLE;
-- while (!(ch = l2cap_accept_dequeue(sk, BT_CONNECTED))) {
-- if (!timeo) {
-- err = -EAGAIN;
-- break;
-- }
--
-- release_sock(sk);
-- timeo = schedule_timeout(timeo);
-- lock_sock(sk);
--
-- if (sk->state != BT_LISTEN) {
-- err = -EBADFD;
-- break;
-- }
--
-- if (signal_pending(current)) {
-- err = sock_intr_errno(timeo);
-- break;
-- }
-- }
-- current->state = TASK_RUNNING;
-- remove_wait_queue(sk->sleep, &wait);
--
-- if (err)
-- goto done;
--
-- sock_graft(ch, newsock);
-- newsock->state = SS_CONNECTED;
--
-- DBG("new socket %p", ch);
--
--done:
-- release_sock(sk);
--
-- return err;
--}
--
--static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
--{
-- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
-- struct sock *sk = sock->sk;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- addr->sa_family = AF_BLUETOOTH;
-- *len = sizeof(struct sockaddr_l2);
--
-- if (peer)
-- bacpy(&la->l2_bdaddr, &l2cap_pi(sk)->dst);
-- else
-- bacpy(&la->l2_bdaddr, &l2cap_pi(sk)->src);
--
-- la->l2_psm = l2cap_pi(sk)->psm;
--
-- return 0;
--}
--
--static int l2cap_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm)
--{
-- struct sock *sk = sock->sk;
-- int err = 0;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- if (sk->err)
-- return sock_error(sk);
--
-- if (msg->msg_flags & MSG_OOB)
-- return -EOPNOTSUPP;
--
-- lock_sock(sk);
--
-- if (sk->state == BT_CONNECTED)
-- err = l2cap_chan_send(sk, msg, len);
-- else
-- err = -ENOTCONN;
--
-- release_sock(sk);
-- return err;
--}
--
--static int l2cap_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm)
--{
-- struct sock *sk = sock->sk;
-- int noblock = flags & MSG_DONTWAIT;
-- int copied, err;
-- struct sk_buff *skb;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- if (flags & (MSG_OOB))
-- return -EOPNOTSUPP;
--
-- if (sk->state == BT_CLOSED)
-- return 0;
--
-- if (!(skb = skb_recv_datagram(sk, flags, noblock, &err)))
-- return err;
--
-- msg->msg_namelen = 0;
--
-- copied = skb->len;
-- if (len < copied) {
-- msg->msg_flags |= MSG_TRUNC;
-- copied = len;
-- }
--
-- skb->h.raw = skb->data;
-- err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
--
-- skb_free_datagram(sk, skb);
--
-- return err ? : copied;
--}
--
--int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
--{
-- struct sock *sk = sock->sk;
-- struct l2cap_options opts;
-- int err = 0;
--
-- DBG("sk %p", sk);
--
-- lock_sock(sk);
--
-- switch (optname) {
-- case L2CAP_OPTIONS:
-- if (copy_from_user((char *)&opts, optval, optlen)) {
-- err = -EFAULT;
-- break;
-- }
-- l2cap_pi(sk)->imtu = opts.imtu;
-- l2cap_pi(sk)->omtu = opts.omtu;
-- break;
--
-- default:
-- err = -ENOPROTOOPT;
-- break;
-- };
--
-- release_sock(sk);
-- return err;
--}
--
--int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
--{
-- struct sock *sk = sock->sk;
-- struct l2cap_options opts;
-- struct l2cap_conninfo cinfo;
-- int len, err = 0;
--
-- if (get_user(len, optlen))
-- return -EFAULT;
--
-- lock_sock(sk);
--
-- switch (optname) {
-- case L2CAP_OPTIONS:
-- opts.imtu = l2cap_pi(sk)->imtu;
-- opts.omtu = l2cap_pi(sk)->omtu;
-- opts.flush_to = l2cap_pi(sk)->flush_to;
--
-- len = MIN(len, sizeof(opts));
-- if (copy_to_user(optval, (char *)&opts, len))
-- err = -EFAULT;
--
-- break;
--
-- case L2CAP_CONNINFO:
-- if (sk->state != BT_CONNECTED) {
-- err = -ENOTCONN;
-- break;
-- }
--
-- cinfo.hci_handle = l2cap_pi(sk)->conn->hconn->handle;
--
-- len = MIN(len, sizeof(cinfo));
-- if (copy_to_user(optval, (char *)&cinfo, len))
-- err = -EFAULT;
--
-- break;
--
-- default:
-- err = -ENOPROTOOPT;
-- break;
-- };
--
-- release_sock(sk);
-- return err;
--}
--
--static unsigned int l2cap_sock_poll(struct file * file, struct socket *sock, poll_table *wait)
--{
-- struct sock *sk = sock->sk;
-- struct l2cap_accept_q *aq;
-- unsigned int mask;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- poll_wait(file, sk->sleep, wait);
-- mask = 0;
--
-- if (sk->err || !skb_queue_empty(&sk->error_queue))
-- mask |= POLLERR;
--
-- if (sk->shutdown == SHUTDOWN_MASK)
-- mask |= POLLHUP;
--
-- aq = &l2cap_pi(sk)->accept_q;
-- if (!skb_queue_empty(&sk->receive_queue) || aq->head || (sk->shutdown & RCV_SHUTDOWN))
-- mask |= POLLIN | POLLRDNORM;
--
-- if (sk->state == BT_CLOSED)
-- mask |= POLLHUP;
--
-- if (sock_writeable(sk))
-- mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
-- else
-- set_bit(SOCK_ASYNC_NOSPACE, &sk->socket->flags);
--
-- return mask;
--}
--
--static int l2cap_sock_release(struct socket *sock)
--{
-- struct sock *sk = sock->sk;
--
-- DBG("sock %p, sk %p", sock, sk);
--
-- if (!sk)
-- return 0;
--
-- sock_orphan(sk);
--
-- l2cap_sock_close(sk);
--
-- return 0;
--}
--
--/* --------- L2CAP channels --------- */
--static struct sock * __l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-- if (l2cap_pi(s)->dcid == cid)
-- break;
-- }
--
-- return s;
--}
--
--static inline struct sock *l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- read_lock(&l->lock);
-- s = __l2cap_get_chan_by_dcid(l, cid);
-- read_unlock(&l->lock);
--
-- return s;
--}
--
--static struct sock *__l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-- if (l2cap_pi(s)->scid == cid)
-- break;
-- }
--
-- return s;
--}
--static inline struct sock *l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid)
--{
-- struct sock *s;
--
-- read_lock(&l->lock);
-- s = __l2cap_get_chan_by_scid(l, cid);
-- read_unlock(&l->lock);
--
-- return s;
--}
--
--static struct sock *__l2cap_get_chan_by_ident(struct l2cap_chan_list *l, __u8 ident)
--{
-- struct sock *s;
--
-- for (s = l->head; s; s = l2cap_pi(s)->next_c) {
-- if (l2cap_pi(s)->ident == ident)
-- break;
-- }
--
-- return s;
--}
--
--static inline struct sock *l2cap_get_chan_by_ident(struct l2cap_chan_list *l, __u8 ident)
--{
-- struct sock *s;
--
-- read_lock(&l->lock);
-- s = __l2cap_get_chan_by_ident(l, ident);
-- read_unlock(&l->lock);
--
-- return s;
--}
--
--static __u16 l2cap_alloc_cid(struct l2cap_chan_list *l)
--{
-- __u16 cid = 0x0040;
--
-- for (; cid < 0xffff; cid++) {
-- if(!__l2cap_get_chan_by_scid(l, cid))
-- return cid;
-- }
--
-- return 0;
--}
--
--static inline void __l2cap_chan_link(struct l2cap_chan_list *l, struct sock *sk)
--{
-- sock_hold(sk);
--
-- if (l->head)
-- l2cap_pi(l->head)->prev_c = sk;
--
-- l2cap_pi(sk)->next_c = l->head;
-- l2cap_pi(sk)->prev_c = NULL;
-- l->head = sk;
--}
--
--static inline void l2cap_chan_unlink(struct l2cap_chan_list *l, struct sock *sk)
--{
-- struct sock *next = l2cap_pi(sk)->next_c, *prev = l2cap_pi(sk)->prev_c;
--
-- write_lock(&l->lock);
-- if (sk == l->head)
-- l->head = next;
--
-- if (next)
-- l2cap_pi(next)->prev_c = prev;
-- if (prev)
-- l2cap_pi(prev)->next_c = next;
-- write_unlock(&l->lock);
--
-- __sock_put(sk);
--}
--
--static void __l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
--
-- DBG("conn %p, psm 0x%2.2x, dcid 0x%4.4x", conn, l2cap_pi(sk)->psm, l2cap_pi(sk)->dcid);
--
-- l2cap_conn_clear_timer(conn);
--
-- atomic_inc(&conn->refcnt);
-- l2cap_pi(sk)->conn = conn;
--
-- if (sk->type == SOCK_SEQPACKET) {
-- /* Alloc CID for normal socket */
-- l2cap_pi(sk)->scid = l2cap_alloc_cid(l);
-- } else {
-- /* Raw socket can send only signalling messages */
-- l2cap_pi(sk)->scid = 0x0001;
-- l2cap_pi(sk)->dcid = 0x0001;
-- l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU;
-- }
--
-- __l2cap_chan_link(l, sk);
--
-- if (parent)
-- l2cap_accept_queue(parent, sk);
--}
--
--static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
--
-- write_lock(&l->lock);
-- __l2cap_chan_add(conn, sk, parent);
-- write_unlock(&l->lock);
--}
--
--/* Delete channel.
-- * Must be called on the locked socket. */
--static void l2cap_chan_del(struct sock *sk, int err)
--{
-- struct l2cap_conn *conn;
-- struct sock *parent;
--
-- conn = l2cap_pi(sk)->conn;
-- parent = l2cap_pi(sk)->parent;
--
-- DBG("sk %p, conn %p, err %d", sk, conn, err);
--
-- if (parent) {
-- /* Unlink from parent accept queue */
-- bh_lock_sock(parent);
-- l2cap_accept_unlink(sk);
-- bh_unlock_sock(parent);
-- }
--
-- if (conn) {
-- long timeout;
--
-- /* Unlink from channel list */
-- l2cap_chan_unlink(&conn->chan_list, sk);
-- l2cap_pi(sk)->conn = NULL;
--
-- if (conn->out)
-- timeout = L2CAP_DISCONN_TIMEOUT;
-- else
-- timeout = L2CAP_CONN_IDLE_TIMEOUT;
--
-- if (atomic_dec_and_test(&conn->refcnt) && conn->state == BT_CONNECTED) {
-- /* Schedule Baseband disconnect */
-- l2cap_conn_set_timer(conn, timeout);
-- }
-- }
--
-- sk->state = BT_CLOSED;
-- sk->err = err;
-- sk->state_change(sk);
--
-- sk->zapped = 1;
--}
--
--static void l2cap_conn_ready(struct l2cap_conn *conn)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
-- struct sock *sk;
--
-- DBG("conn %p", conn);
--
-- read_lock(&l->lock);
--
-- for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-- bh_lock_sock(sk);
--
-- if (sk->type != SOCK_SEQPACKET) {
-- sk->state = BT_CONNECTED;
-- sk->state_change(sk);
-- l2cap_sock_clear_timer(sk);
-- } else if (sk->state == BT_CONNECT) {
-- l2cap_conn_req req;
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- req.psm = l2cap_pi(sk)->psm;
-- l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req);
--
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
-- }
--
-- bh_unlock_sock(sk);
-- }
--
-- read_unlock(&l->lock);
--}
--
--static void l2cap_chan_ready(struct sock *sk)
--{
-- struct sock *parent = l2cap_pi(sk)->parent;
--
-- DBG("sk %p, parent %p", sk, parent);
--
-- l2cap_pi(sk)->conf_state = 0;
-- l2cap_sock_clear_timer(sk);
--
-- if (!parent) {
-- /* Outgoing channel.
-- * Wake up socket sleeping on connect.
-- */
-- sk->state = BT_CONNECTED;
-- sk->state_change(sk);
-- } else {
-- /* Incomming channel.
-- * Wake up socket sleeping on accept.
-- */
-- parent->data_ready(parent, 1);
-- }
--}
--
--/* Copy frame to all raw sockets on that connection */
--void l2cap_raw_recv(struct l2cap_conn *conn, struct sk_buff *skb)
--{
-- struct l2cap_chan_list *l = &conn->chan_list;
-- struct sk_buff *nskb;
-- struct sock * sk;
--
-- DBG("conn %p", conn);
--
-- read_lock(&l->lock);
-- for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
-- if (sk->type != SOCK_RAW)
-- continue;
--
-- /* Don't send frame to the socket it came from */
-- if (skb->sk == sk)
-- continue;
--
-- if (!(nskb = skb_clone(skb, GFP_ATOMIC)))
-- continue;
--
-- skb_queue_tail(&sk->receive_queue, nskb);
-- sk->data_ready(sk, nskb->len);
-- }
-- read_unlock(&l->lock);
--}
--
--static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len)
--{
-- struct l2cap_conn *conn = l2cap_pi(sk)->conn;
-- struct sk_buff *skb, **frag;
-- int err, size, count, sent=0;
-- l2cap_hdr *lh;
--
-- /* Check outgoing MTU */
-- if (len > l2cap_pi(sk)->omtu)
-- return -EINVAL;
--
-- DBG("sk %p len %d", sk, len);
--
-- /* First fragment (with L2CAP header) */
-- count = MIN(conn->iff->mtu - L2CAP_HDR_SIZE, len);
-- size = L2CAP_HDR_SIZE + count;
-- if (!(skb = bluez_skb_send_alloc(sk, size, msg->msg_flags & MSG_DONTWAIT, &err)))
-- return err;
--
-- /* Create L2CAP header */
-- lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-- lh->len = __cpu_to_le16(len);
-- lh->cid = __cpu_to_le16(l2cap_pi(sk)->dcid);
--
-- if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) {
-- err = -EFAULT;
-- goto fail;
-- }
--
-- sent += count;
-- len -= count;
--
-- /* Continuation fragments (no L2CAP header) */
-- frag = &skb_shinfo(skb)->frag_list;
-- while (len) {
-- count = MIN(conn->iff->mtu, len);
--
-- *frag = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err);
-- if (!*frag)
-- goto fail;
--
-- if (memcpy_fromiovec(skb_put(*frag, count), msg->msg_iov, count)) {
-- err = -EFAULT;
-- goto fail;
-- }
--
-- sent += count;
-- len -= count;
--
-- frag = &(*frag)->next;
-- }
--
-- if ((err = hci_send_acl(conn->hconn, skb, 0)) < 0)
-- goto fail;
--
-- return sent;
--
--fail:
-- kfree_skb(skb);
-- return err;
--}
--
--/* --------- L2CAP signalling commands --------- */
--static inline __u8 l2cap_get_ident(struct l2cap_conn *conn)
--{
-- __u8 id;
--
-- /* Get next available identificator.
-- * 1 - 199 are used by kernel.
-- * 200 - 254 are used by utilities like l2ping, etc
-- */
--
-- spin_lock(&conn->lock);
--
-- if (++conn->tx_ident > 199)
-- conn->tx_ident = 1;
--
-- id = conn->tx_ident;
--
-- spin_unlock(&conn->lock);
--
-- return id;
--}
--
--static inline struct sk_buff *l2cap_build_cmd(__u8 code, __u8 ident, __u16 len, void *data)
--{
-- struct sk_buff *skb;
-- l2cap_cmd_hdr *cmd;
-- l2cap_hdr *lh;
-- int size;
--
-- DBG("code 0x%2.2x, ident 0x%2.2x, len %d", code, ident, len);
--
-- size = L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE + len;
-- if (!(skb = bluez_skb_alloc(size, GFP_ATOMIC)))
-- return NULL;
--
-- lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
-- lh->len = __cpu_to_le16(L2CAP_CMD_HDR_SIZE + len);
-- lh->cid = __cpu_to_le16(0x0001);
--
-- cmd = (l2cap_cmd_hdr *) skb_put(skb, L2CAP_CMD_HDR_SIZE);
-- cmd->code = code;
-- cmd->ident = ident;
-- cmd->len = __cpu_to_le16(len);
--
-- if (len)
-- memcpy(skb_put(skb, len), data, len);
--
-- return skb;
--}
--
--static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data)
--{
-- struct sk_buff *skb;
-- __u8 ident;
--
-- DBG("code 0x%2.2x", code);
--
-- ident = l2cap_get_ident(conn);
-- if (!(skb = l2cap_build_cmd(code, ident, len, data)))
-- return -ENOMEM;
-- return hci_send_acl(conn->hconn, skb, 0);
--}
--
--static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data)
--{
-- struct sk_buff *skb;
--
-- DBG("code 0x%2.2x", code);
--
-- if (!(skb = l2cap_build_cmd(code, ident, len, data)))
-- return -ENOMEM;
-- return hci_send_acl(conn->hconn, skb, 0);
--}
--
--static inline int l2cap_get_conf_opt(__u8 **ptr, __u8 *type, __u32 *val)
--{
-- l2cap_conf_opt *opt = (l2cap_conf_opt *) (*ptr);
-- int len;
--
-- *type = opt->type;
-- switch (opt->len) {
-- case 1:
-- *val = *((__u8 *) opt->val);
-- break;
--
-- case 2:
-- *val = __le16_to_cpu(*((__u16 *)opt->val));
-- break;
--
-- case 4:
-- *val = __le32_to_cpu(*((__u32 *)opt->val));
-- break;
--
-- default:
-- *val = 0L;
-- break;
-- };
--
-- DBG("type 0x%2.2x len %d val 0x%8.8x", *type, opt->len, *val);
--
-- len = L2CAP_CONF_OPT_SIZE + opt->len;
--
-- *ptr += len;
--
-- return len;
--}
--
--static inline void l2cap_parse_conf_req(struct sock *sk, char *data, int len)
--{
-- __u8 type, hint; __u32 val;
-- __u8 *ptr = data;
--
-- DBG("sk %p len %d", sk, len);
--
-- while (len >= L2CAP_CONF_OPT_SIZE) {
-- len -= l2cap_get_conf_opt(&ptr, &type, &val);
--
-- hint = type & 0x80;
-- type &= 0x7f;
--
-- switch (type) {
-- case L2CAP_CONF_MTU:
-- l2cap_pi(sk)->conf_mtu = val;
-- break;
--
-- case L2CAP_CONF_FLUSH_TO:
-- l2cap_pi(sk)->flush_to = val;
-- break;
--
-- case L2CAP_CONF_QOS:
-- break;
--
-- default:
-- if (hint)
-- break;
--
-- /* FIXME: Reject unknon option */
-- break;
-- };
-- }
--}
--
--static inline void l2cap_add_conf_opt(__u8 **ptr, __u8 type, __u8 len, __u32 val)
--{
-- register l2cap_conf_opt *opt = (l2cap_conf_opt *) (*ptr);
--
-- DBG("type 0x%2.2x len %d val 0x%8.8x", type, len, val);
--
-- opt->type = type;
-- opt->len = len;
-- switch (len) {
-- case 1:
-- *((__u8 *) opt->val) = val;
-- break;
--
-- case 2:
-- *((__u16 *) opt->val) = __cpu_to_le16(val);
-- break;
--
-- case 4:
-- *((__u32 *) opt->val) = __cpu_to_le32(val);
-- break;
-- };
--
-- *ptr += L2CAP_CONF_OPT_SIZE + len;
--}
--
--static int l2cap_build_conf_req(struct sock *sk, __u8 *data)
--{
-- struct l2cap_pinfo *pi = l2cap_pi(sk);
-- l2cap_conf_req *req = (l2cap_conf_req *) data;
-- __u8 *ptr = req->data;
--
-- DBG("sk %p", sk);
--
-- if (pi->imtu != L2CAP_DEFAULT_MTU)
-- l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->imtu);
--
-- /* FIXME. Need actual value of the flush timeout */
-- //if (flush_to != L2CAP_DEFAULT_FLUSH_TO)
-- // l2cap_add_conf_opt(&ptr, L2CAP_CONF_FLUSH_TO, 2, pi->flush_to);
--
-- req->dcid = __cpu_to_le16(pi->dcid);
-- req->flags = __cpu_to_le16(0);
--
-- return ptr - data;
--}
--
--static int l2cap_conf_output(struct sock *sk, __u8 **ptr)
--{
-- struct l2cap_pinfo *pi = l2cap_pi(sk);
-- int result = 0;
--
-- /* Configure output options and let other side know
-- * which ones we don't like.
-- */
-- if (pi->conf_mtu < pi->omtu) {
-- l2cap_add_conf_opt(ptr, L2CAP_CONF_MTU, 2, l2cap_pi(sk)->omtu);
-- result = L2CAP_CONF_UNACCEPT;
-- } else {
-- pi->omtu = pi->conf_mtu;
-- }
--
-- DBG("sk %p result %d", sk, result);
-- return result;
--}
--
--static int l2cap_build_conf_rsp(struct sock *sk, __u8 *data, int *result)
--{
-- l2cap_conf_rsp *rsp = (l2cap_conf_rsp *) data;
-- __u8 *ptr = rsp->data;
--
-- DBG("sk %p complete %d", sk, result ? 1 : 0);
--
-- if (result)
-- *result = l2cap_conf_output(sk, &ptr);
--
-- rsp->scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- rsp->result = __cpu_to_le16(result ? *result : 0);
-- rsp->flags = __cpu_to_le16(0);
--
-- return ptr - data;
--}
--
--static inline int l2cap_connect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- struct l2cap_chan_list *list = &conn->chan_list;
-- l2cap_conn_req *req = (l2cap_conn_req *) data;
-- l2cap_conn_rsp rsp;
-- struct sock *sk, *parent;
--
-- __u16 scid = __le16_to_cpu(req->scid);
-- __u16 psm = req->psm;
--
-- DBG("psm 0x%2.2x scid 0x%4.4x", psm, scid);
--
-- /* Check if we have socket listening on psm */
-- if (!(parent = l2cap_get_sock_listen(&conn->src, psm)))
-- goto reject;
--
-- bh_lock_sock(parent);
-- write_lock(&list->lock);
--
-- /* Check if we already have channel with that dcid */
-- if (__l2cap_get_chan_by_dcid(list, scid))
-- goto unlock;
--
-- /* Check for backlog size */
-- if (parent->ack_backlog > parent->max_ack_backlog)
-- goto unlock;
--
-- if (!(sk = l2cap_sock_alloc(NULL, BTPROTO_L2CAP, GFP_ATOMIC)))
-- goto unlock;
--
-- l2cap_sock_init(sk, parent);
--
-- bacpy(&l2cap_pi(sk)->src, &conn->src);
-- bacpy(&l2cap_pi(sk)->dst, &conn->dst);
-- l2cap_pi(sk)->psm = psm;
-- l2cap_pi(sk)->dcid = scid;
--
-- __l2cap_chan_add(conn, sk, parent);
-- sk->state = BT_CONFIG;
--
-- write_unlock(&list->lock);
-- bh_unlock_sock(parent);
--
-- rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- rsp.result = __cpu_to_le16(0);
-- rsp.status = __cpu_to_le16(0);
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp);
--
-- return 0;
--
--unlock:
-- write_unlock(&list->lock);
-- bh_unlock_sock(parent);
--
--reject:
-- rsp.scid = __cpu_to_le16(scid);
-- rsp.dcid = __cpu_to_le16(0);
-- rsp.status = __cpu_to_le16(0);
-- rsp.result = __cpu_to_le16(L2CAP_CONN_NO_MEM);
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp);
--
-- return 0;
--}
--
--static inline int l2cap_connect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_conn_rsp *rsp = (l2cap_conn_rsp *) data;
-- __u16 scid, dcid, result, status;
-- struct sock *sk;
--
-- scid = __le16_to_cpu(rsp->scid);
-- dcid = __le16_to_cpu(rsp->dcid);
-- result = __le16_to_cpu(rsp->result);
-- status = __le16_to_cpu(rsp->status);
--
-- DBG("dcid 0x%4.4x scid 0x%4.4x result 0x%2.2x status 0x%2.2x", dcid, scid, result, status);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
--
-- if (!result) {
-- char req[64];
--
-- sk->state = BT_CONFIG;
-- l2cap_pi(sk)->dcid = dcid;
-- l2cap_pi(sk)->conf_state |= CONF_REQ_SENT;
--
-- l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-- } else {
-- l2cap_chan_del(sk, ECONNREFUSED);
-- }
--
-- bh_unlock_sock(sk);
-- return 0;
--}
--
--static inline int l2cap_config_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_conf_req * req = (l2cap_conf_req *) data;
-- __u16 dcid, flags;
-- __u8 rsp[64];
-- struct sock *sk;
-- int result;
--
-- dcid = __le16_to_cpu(req->dcid);
-- flags = __le16_to_cpu(req->flags);
--
-- DBG("dcid 0x%4.4x flags 0x%2.2x", dcid, flags);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
--
-- l2cap_parse_conf_req(sk, req->data, cmd->len - L2CAP_CONF_REQ_SIZE);
--
-- if (flags & 0x01) {
-- /* Incomplete config. Send empty response. */
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, NULL), rsp);
-- goto unlock;
-- }
--
-- /* Complete config. */
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, &result), rsp);
--
-- if (result)
-- goto unlock;
--
-- /* Output config done */
-- l2cap_pi(sk)->conf_state |= CONF_OUTPUT_DONE;
--
-- if (l2cap_pi(sk)->conf_state & CONF_INPUT_DONE) {
-- sk->state = BT_CONNECTED;
-- l2cap_chan_ready(sk);
-- } else if (!(l2cap_pi(sk)->conf_state & CONF_REQ_SENT)) {
-- char req[64];
-- l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req);
-- }
--
--unlock:
-- bh_unlock_sock(sk);
--
-- return 0;
--}
--
--static inline int l2cap_config_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_conf_rsp *rsp = (l2cap_conf_rsp *)data;
-- __u16 scid, flags, result;
-- struct sock *sk;
-- int err = 0;
--
-- scid = __le16_to_cpu(rsp->scid);
-- flags = __le16_to_cpu(rsp->flags);
-- result = __le16_to_cpu(rsp->result);
--
-- DBG("scid 0x%4.4x flags 0x%2.2x result 0x%2.2x", scid, flags, result);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
--
-- if (result) {
-- l2cap_disconn_req req;
--
-- /* They didn't like our options. Well... we do not negotiate.
-- * Close channel.
-- */
-- sk->state = BT_DISCONN;
--
-- req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req);
--
-- l2cap_sock_set_timer(sk, sk->sndtimeo);
-- goto done;
-- }
--
-- if (flags & 0x01)
-- goto done;
--
-- /* Input config done */
-- l2cap_pi(sk)->conf_state |= CONF_INPUT_DONE;
--
-- if (l2cap_pi(sk)->conf_state & CONF_OUTPUT_DONE) {
-- sk->state = BT_CONNECTED;
-- l2cap_chan_ready(sk);
-- }
--
--done:
-- bh_unlock_sock(sk);
--
-- return err;
--}
--
--static inline int l2cap_disconnect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_disconn_req *req = (l2cap_disconn_req *) data;
-- l2cap_disconn_rsp rsp;
-- __u16 dcid, scid;
-- struct sock *sk;
--
-- scid = __le16_to_cpu(req->scid);
-- dcid = __le16_to_cpu(req->dcid);
--
-- DBG("scid 0x%4.4x dcid 0x%4.4x", scid, dcid);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid)))
-- return 0;
--
-- bh_lock_sock(sk);
--
-- rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid);
-- rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid);
-- l2cap_send_rsp(conn, cmd->ident, L2CAP_DISCONN_RSP, L2CAP_DISCONN_RSP_SIZE, &rsp);
--
-- l2cap_chan_del(sk, ECONNRESET);
--
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
--
-- return 0;
--}
--
--static inline int l2cap_disconnect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data)
--{
-- l2cap_disconn_rsp *rsp = (l2cap_disconn_rsp *) data;
-- __u16 dcid, scid;
-- struct sock *sk;
--
-- scid = __le16_to_cpu(rsp->scid);
-- dcid = __le16_to_cpu(rsp->dcid);
--
-- DBG("dcid 0x%4.4x scid 0x%4.4x", dcid, scid);
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid)))
-- return -ENOENT;
--
-- bh_lock_sock(sk);
-- l2cap_sock_clear_timer(sk);
-- l2cap_chan_del(sk, ECONNABORTED);
-- bh_unlock_sock(sk);
--
-- l2cap_sock_kill(sk);
--
-- return 0;
--}
--
--static inline void l2cap_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb)
--{
-- __u8 *data = skb->data;
-- int len = skb->len;
-- l2cap_cmd_hdr cmd;
-- int err = 0;
--
-- while (len >= L2CAP_CMD_HDR_SIZE) {
-- memcpy(&cmd, data, L2CAP_CMD_HDR_SIZE);
-- data += L2CAP_CMD_HDR_SIZE;
-- len -= L2CAP_CMD_HDR_SIZE;
--
-- cmd.len = __le16_to_cpu(cmd.len);
--
-- DBG("code 0x%2.2x len %d id 0x%2.2x", cmd.code, cmd.len, cmd.ident);
--
-- if (cmd.len > len || !cmd.ident) {
-- DBG("corrupted command");
-- break;
-- }
--
-- switch (cmd.code) {
-- case L2CAP_CONN_REQ:
-- err = l2cap_connect_req(conn, &cmd, data);
-- break;
--
-- case L2CAP_CONN_RSP:
-- err = l2cap_connect_rsp(conn, &cmd, data);
-- break;
--
-- case L2CAP_CONF_REQ:
-- err = l2cap_config_req(conn, &cmd, data);
-- break;
--
-- case L2CAP_CONF_RSP:
-- err = l2cap_config_rsp(conn, &cmd, data);
-- break;
--
-- case L2CAP_DISCONN_REQ:
-- err = l2cap_disconnect_req(conn, &cmd, data);
-- break;
--
-- case L2CAP_DISCONN_RSP:
-- err = l2cap_disconnect_rsp(conn, &cmd, data);
-- break;
--
-- case L2CAP_COMMAND_REJ:
-- /* FIXME: We should process this */
-- l2cap_raw_recv(conn, skb);
-- break;
--
-- case L2CAP_ECHO_REQ:
-- l2cap_send_rsp(conn, cmd.ident, L2CAP_ECHO_RSP, cmd.len, data);
-- break;
--
-- case L2CAP_ECHO_RSP:
-- case L2CAP_INFO_REQ:
-- case L2CAP_INFO_RSP:
-- l2cap_raw_recv(conn, skb);
-- break;
--
-- default:
-- ERR("Uknown signaling command 0x%2.2x", cmd.code);
-- err = -EINVAL;
-- break;
-- };
--
-- if (err) {
-- l2cap_cmd_rej rej;
-- DBG("error %d", err);
--
-- /* FIXME: Map err to a valid reason. */
-- rej.reason = __cpu_to_le16(0);
-- l2cap_send_rsp(conn, cmd.ident, L2CAP_COMMAND_REJ, L2CAP_CMD_REJ_SIZE, &rej);
-- }
--
-- data += cmd.len;
-- len -= cmd.len;
-- }
--
-- kfree_skb(skb);
--}
--
--static inline int l2cap_data_channel(struct l2cap_conn *conn, __u16 cid, struct sk_buff *skb)
--{
-- struct sock *sk;
--
-- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, cid))) {
-- DBG("unknown cid 0x%4.4x", cid);
-- goto drop;
-- }
--
-- DBG("sk %p, len %d", sk, skb->len);
--
-- if (sk->state != BT_CONNECTED)
-- goto drop;
--
-- if (l2cap_pi(sk)->imtu < skb->len)
-- goto drop;
--
-- skb_queue_tail(&sk->receive_queue, skb);
-- sk->data_ready(sk, skb->len);
--
-- return 0;
--
--drop:
-- kfree_skb(skb);
--
-- return 0;
--}
--
--static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb)
--{
-- l2cap_hdr *lh = (l2cap_hdr *) skb->data;
-- __u16 cid, len;
--
-- skb_pull(skb, L2CAP_HDR_SIZE);
-- cid = __le16_to_cpu(lh->cid);
-- len = __le16_to_cpu(lh->len);
--
-- DBG("len %d, cid 0x%4.4x", len, cid);
--
-- if (cid == 0x0001)
-- l2cap_sig_channel(conn, skb);
-- else
-- l2cap_data_channel(conn, cid, skb);
--}
--
--/* ------------ L2CAP interface with lower layer (HCI) ------------- */
--static int l2cap_dev_event(struct notifier_block *this, unsigned long event, void *ptr)
--{
-- struct hci_dev *hdev = (struct hci_dev *) ptr;
--
-- DBG("hdev %s, event %ld", hdev->name, event);
--
-- write_lock(&l2cap_rt_lock);
--
-- switch (event) {
-- case HCI_DEV_UP:
-- l2cap_iff_add(hdev);
-- break;
--
-- case HCI_DEV_DOWN:
-- l2cap_iff_del(hdev);
-- break;
-- };
--
-- write_unlock(&l2cap_rt_lock);
--
-- return NOTIFY_DONE;
--}
--
--int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr)
--{
-- struct l2cap_iff *iff;
--
-- DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
--
-- if (!(iff = hdev->l2cap_data)) {
-- ERR("unknown interface");
-- return 0;
-- }
--
-- /* Always accept connection */
-- return 1;
--}
--
--int l2cap_connect_cfm(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 status, struct hci_conn *hconn)
--{
-- struct l2cap_conn *conn;
-- struct l2cap_iff *iff;
-- int err = 0;
--
-- DBG("hdev %s bdaddr %s hconn %p", hdev->name, batostr(bdaddr), hconn);
--
-- if (!(iff = hdev->l2cap_data)) {
-- ERR("unknown interface");
-- return 0;
-- }
--
-- l2cap_iff_lock(iff);
--
-- conn = l2cap_get_conn_by_addr(iff, bdaddr);
--
-- if (conn) {
-- /* Outgoing connection */
-- DBG("Outgoing connection: %s -> %s, %p, %2.2x", batostr(iff->bdaddr), batostr(bdaddr), conn, status);
--
-- if (!status && hconn) {
-- conn->state = BT_CONNECTED;
-- conn->hconn = hconn;
--
-- hconn->l2cap_data = (void *)conn;
--
-- /* Establish channels */
-- l2cap_conn_ready(conn);
-- } else {
-- l2cap_conn_del(conn, bterr(status));
-- }
-- } else {
-- /* Incomming connection */
-- DBG("Incomming connection: %s -> %s, %2.2x", batostr(iff->bdaddr), batostr(bdaddr), status);
--
-- if (status || !hconn)
-- goto done;
--
-- if (!(conn = l2cap_conn_add(iff, bdaddr))) {
-- err = -ENOMEM;
-- goto done;
-- }
--
-- conn->hconn = hconn;
-- hconn->l2cap_data = (void *)conn;
--
-- conn->state = BT_CONNECTED;
-- }
--
--done:
-- l2cap_iff_unlock(iff);
--
-- return err;
--}
--
--int l2cap_disconn_ind(struct hci_conn *hconn, __u8 reason)
--{
-- struct l2cap_conn *conn = hconn->l2cap_data;
--
-- DBG("hconn %p reason %d", hconn, reason);
--
-- if (!conn) {
-- ERR("unknown connection");
-- return 0;
-- }
-- conn->hconn = NULL;
--
-- l2cap_iff_lock(conn->iff);
-- l2cap_conn_del(conn, bterr(reason));
-- l2cap_iff_unlock(conn->iff);
--
-- return 0;
--}
--
--int l2cap_recv_acldata(struct hci_conn *hconn, struct sk_buff *skb, __u16 flags)
--{
-- struct l2cap_conn *conn = hconn->l2cap_data;
--
-- if (!conn) {
-- ERR("unknown connection %p", hconn);
-- goto drop;
-- }
--
-- DBG("conn %p len %d flags 0x%x", conn, skb->len, flags);
--
-- if (flags & ACL_START) {
-- int flen, tlen, size;
-- l2cap_hdr *lh;
--
-- if (conn->rx_len) {
-- ERR("Unexpected start frame (len %d)", skb->len);
-- kfree_skb(conn->rx_skb); conn->rx_skb = NULL;
-- conn->rx_len = 0;
-- }
--
-- if (skb->len < L2CAP_HDR_SIZE) {
-- ERR("Frame is too small (len %d)", skb->len);
-- goto drop;
-- }
--
-- lh = (l2cap_hdr *)skb->data;
-- tlen = __le16_to_cpu(lh->len);
-- flen = skb->len - L2CAP_HDR_SIZE;
--
-- DBG("Start: total len %d, frag len %d", tlen, flen);
--
-- if (flen == tlen) {
-- /* Complete frame received */
-- l2cap_recv_frame(conn, skb);
-- return 0;
-- }
--
-- /* Allocate skb for the complete frame (with header) */
-- size = L2CAP_HDR_SIZE + tlen;
-- if (!(conn->rx_skb = bluez_skb_alloc(size, GFP_ATOMIC)))
-- goto drop;
--
-- memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
--
-- conn->rx_len = tlen - flen;
-- } else {
-- DBG("Cont: frag len %d (expecting %d)", skb->len, conn->rx_len);
--
-- if (!conn->rx_len) {
-- ERR("Unexpected continuation frame (len %d)", skb->len);
-- goto drop;
-- }
--
-- if (skb->len > conn->rx_len) {
-- ERR("Fragment is too large (len %d)", skb->len);
-- kfree_skb(conn->rx_skb); conn->rx_skb = NULL;
-- goto drop;
-- }
--
-- memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len);
-- conn->rx_len -= skb->len;
--
-- if (!conn->rx_len) {
-- /* Complete frame received */
-- l2cap_recv_frame(conn, conn->rx_skb);
-- conn->rx_skb = NULL;
-- }
-- }
--
--drop:
-- kfree_skb(skb);
-- return 0;
--}
--
--struct proto_ops l2cap_sock_ops = {
-- family: PF_BLUETOOTH,
-- release: l2cap_sock_release,
-- bind: l2cap_sock_bind,
-- connect: l2cap_sock_connect,
-- listen: l2cap_sock_listen,
-- accept: l2cap_sock_accept,
-- getname: l2cap_sock_getname,
-- sendmsg: l2cap_sock_sendmsg,
-- recvmsg: l2cap_sock_recvmsg,
-- poll: l2cap_sock_poll,
-- socketpair: sock_no_socketpair,
-- ioctl: sock_no_ioctl,
-- shutdown: sock_no_shutdown,
-- setsockopt: l2cap_sock_setsockopt,
-- getsockopt: l2cap_sock_getsockopt,
-- mmap: sock_no_mmap
--};
--
--struct net_proto_family l2cap_sock_family_ops = {
-- family: PF_BLUETOOTH,
-- create: l2cap_sock_create
--};
--
--struct hci_proto l2cap_hci_proto = {
-- name: "L2CAP",
-- id: HCI_PROTO_L2CAP,
-- connect_ind: l2cap_connect_ind,
-- connect_cfm: l2cap_connect_cfm,
-- disconn_ind: l2cap_disconn_ind,
-- recv_acldata: l2cap_recv_acldata,
--};
--
--struct notifier_block l2cap_nblock = {
-- notifier_call: l2cap_dev_event
--};
--
--int __init l2cap_init(void)
--{
-- INF("BlueZ L2CAP ver %s Copyright (C) 2000,2001 Qualcomm Inc",
-- VERSION);
-- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
--
-- if (bluez_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops)) {
-- ERR("Can't register L2CAP socket");
-- return -EPROTO;
-- }
--
-- if (hci_register_proto(&l2cap_hci_proto) < 0) {
-- ERR("Can't register L2CAP protocol");
-- return -EPROTO;
-- }
--
-- hci_register_notifier(&l2cap_nblock);
--
-- l2cap_register_proc();
--
-- return 0;
--}
--
--void l2cap_cleanup(void)
--{
-- l2cap_unregister_proc();
--
-- /* Unregister socket, protocol and notifier */
-- if (bluez_sock_unregister(BTPROTO_L2CAP))
-- ERR("Can't unregister L2CAP socket");
--
-- if (hci_unregister_proto(&l2cap_hci_proto) < 0)
-- ERR("Can't unregister L2CAP protocol");
--
-- hci_unregister_notifier(&l2cap_nblock);
--
-- /* We _must_ not have any sockets and/or connections
-- * at this stage.
-- */
--
-- /* Free interface list and unlock HCI devices */
-- {
-- struct list_head *list = &l2cap_iff_list;
--
-- while (!list_empty(list)) {
-- struct l2cap_iff *iff;
--
-- iff = list_entry(list->next, struct l2cap_iff, list);
-- l2cap_iff_del(iff->hdev);
-- }
-- }
--}
--
--module_init(l2cap_init);
--module_exit(l2cap_cleanup);
--
--MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
--MODULE_DESCRIPTION("BlueZ L2CAP ver " VERSION);
--MODULE_LICENSE("GPL");
--
-diff -urN linux-2.4.18/net/bluetooth/l2cap_proc.c linux-2.4.18-mh9/net/bluetooth/l2cap_proc.c
---- linux-2.4.18/net/bluetooth/l2cap_proc.c Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/net/bluetooth/l2cap_proc.c Thu Jan 1 01:00:00 1970
-@@ -1,165 +0,0 @@
--/*
-- BlueZ - Bluetooth protocol stack for Linux
-- Copyright (C) 2000-2001 Qualcomm Incorporated
--
-- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
--
-- 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--
-- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-- SOFTWARE IS DISCLAIMED.
--*/
--
--/*
-- * BlueZ L2CAP proc fs support.
-- *
-- * $Id: l2cap_proc.c,v 1.2 2001/06/02 01:40:09 maxk Exp $
-- */
--
--#include <linux/config.h>
--#include <linux/module.h>
--
--#include <linux/types.h>
--#include <linux/errno.h>
--#include <linux/kernel.h>
--#include <linux/major.h>
--#include <linux/sched.h>
--#include <linux/slab.h>
--#include <linux/poll.h>
--#include <linux/fcntl.h>
--#include <linux/init.h>
--#include <linux/skbuff.h>
--#include <linux/interrupt.h>
--#include <linux/socket.h>
--#include <linux/skbuff.h>
--#include <linux/proc_fs.h>
--#include <linux/list.h>
--#include <net/sock.h>
--
--#include <asm/system.h>
--#include <asm/uaccess.h>
--
--#include <net/bluetooth/bluez.h>
--#include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/hci_core.h>
--#include <net/bluetooth/l2cap_core.h>
--
--#ifndef L2CAP_DEBUG
--#undef DBG
--#define DBG( A... )
--#endif
--
--/* ----- PROC fs support ----- */
--static int l2cap_conn_dump(char *buf, struct l2cap_iff *iff)
--{
-- struct list_head *p;
-- char *ptr = buf;
--
-- list_for_each(p, &iff->conn_list) {
-- struct l2cap_conn *c;
--
-- c = list_entry(p, struct l2cap_conn, list);
-- ptr += sprintf(ptr, " %p %d %p %p %s %s\n",
-- c, c->state, c->iff, c->hconn, batostr(&c->src), batostr(&c->dst));
-- }
--
-- return ptr - buf;
--}
--
--static int l2cap_iff_dump(char *buf)
--{
-- struct list_head *p;
-- char *ptr = buf;
--
-- ptr += sprintf(ptr, "Interfaces:\n");
--
-- write_lock(&l2cap_rt_lock);
--
-- list_for_each(p, &l2cap_iff_list) {
-- struct l2cap_iff *iff;
--
-- iff = list_entry(p, struct l2cap_iff, list);
--
-- ptr += sprintf(ptr, " %s %p %p\n", iff->hdev->name, iff, iff->hdev);
--
-- l2cap_iff_lock(iff);
-- ptr += l2cap_conn_dump(ptr, iff);
-- l2cap_iff_unlock(iff);
-- }
--
-- write_unlock(&l2cap_rt_lock);
--
-- ptr += sprintf(ptr, "\n");
--
-- return ptr - buf;
--}
--
--static int l2cap_sock_dump(char *buf, struct bluez_sock_list *list)
--{
-- struct l2cap_pinfo *pi;
-- struct sock *sk;
-- char *ptr = buf;
--
-- ptr += sprintf(ptr, "Sockets:\n");
--
-- write_lock(&list->lock);
--
-- for (sk = list->head; sk; sk = sk->next) {
-- pi = l2cap_pi(sk);
-- ptr += sprintf(ptr, " %p %d %p %d %s %s 0x%4.4x 0x%4.4x %d %d\n", sk, sk->state, pi->conn, pi->psm,
-- batostr(&pi->src), batostr(&pi->dst), pi->scid, pi->dcid, pi->imtu, pi->omtu );
-- }
--
-- write_unlock(&list->lock);
--
-- ptr += sprintf(ptr, "\n");
--
-- return ptr - buf;
--}
--
--static int l2cap_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
--{
-- char *ptr = buf;
-- int len;
--
-- DBG("count %d, offset %ld", count, offset);
--
-- ptr += l2cap_iff_dump(ptr);
-- ptr += l2cap_sock_dump(ptr, &l2cap_sk_list);
-- len = ptr - buf;
--
-- if (len <= count + offset)
-- *eof = 1;
--
-- *start = buf + offset;
-- len -= offset;
--
-- if (len > count)
-- len = count;
-- if (len < 0)
-- len = 0;
--
-- return len;
--}
--
--void l2cap_register_proc(void)
--{
-- create_proc_read_entry("bluetooth/l2cap", 0, 0, l2cap_read_proc, NULL);
--}
--
--void l2cap_unregister_proc(void)
--{
-- remove_proc_entry("bluetooth/l2cap", NULL);
--}
-diff -urN linux-2.4.18/net/bluetooth/lib.c linux-2.4.18-mh9/net/bluetooth/lib.c
---- linux-2.4.18/net/bluetooth/lib.c Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/net/bluetooth/lib.c Mon Aug 25 18:38:12 2003
-@@ -25,7 +25,7 @@
- /*
- * BlueZ kernel library.
- *
-- * $Id: lib.c,v 1.3 2001/06/22 23:14:23 maxk Exp $
-+ * $Id: lib.c,v 1.2 2002/06/20 19:55:08 maxk Exp $
- */
-
- #include <linux/kernel.h>
-@@ -105,7 +105,7 @@
- return EACCES;
-
- case 0x06:
-- return EINVAL;
-+ return EBADE;
-
- case 0x07:
- return ENOMEM;
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/Config.in linux-2.4.18-mh9/net/bluetooth/rfcomm/Config.in
---- linux-2.4.18/net/bluetooth/rfcomm/Config.in Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/rfcomm/Config.in Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,10 @@
-+#
-+# Bluetooth RFCOMM layer configuration
-+#
-+
-+dep_tristate 'RFCOMM protocol support' CONFIG_BLUEZ_RFCOMM $CONFIG_BLUEZ_L2CAP
-+
-+if [ "$CONFIG_BLUEZ_RFCOMM" != "n" ]; then
-+ bool ' RFCOMM TTY support' CONFIG_BLUEZ_RFCOMM_TTY
-+fi
-+
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/Makefile linux-2.4.18-mh9/net/bluetooth/rfcomm/Makefile
---- linux-2.4.18/net/bluetooth/rfcomm/Makefile Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/rfcomm/Makefile Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,11 @@
-+#
-+# Makefile for the Linux Bluetooth RFCOMM layer
-+#
-+
-+O_TARGET := rfcomm.o
-+
-+obj-y := core.o sock.o crc.o
-+obj-$(CONFIG_BLUEZ_RFCOMM_TTY) += tty.o
-+obj-m += $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/core.c linux-2.4.18-mh9/net/bluetooth/rfcomm/core.c
---- linux-2.4.18/net/bluetooth/rfcomm/core.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/rfcomm/core.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,1951 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ RPN support - Dirk Husemann <hud@zurich.ibm.com>
-+*/
-+
-+/*
-+ * RFCOMM core.
-+ *
-+ * $Id: core.c,v 1.46 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#define __KERNEL_SYSCALLS__
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/signal.h>
-+#include <linux/init.h>
-+#include <linux/wait.h>
-+#include <linux/net.h>
-+#include <linux/proc_fs.h>
-+#include <net/sock.h>
-+#include <asm/uaccess.h>
-+#include <asm/unaligned.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/l2cap.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#define VERSION "1.0"
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+struct task_struct *rfcomm_thread;
-+DECLARE_MUTEX(rfcomm_sem);
-+unsigned long rfcomm_event;
-+
-+static LIST_HEAD(session_list);
-+static atomic_t terminate, running;
-+
-+static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len);
-+static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci);
-+static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci);
-+static int rfcomm_queue_disc(struct rfcomm_dlc *d);
-+static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type);
-+static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d);
-+static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig);
-+static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len);
-+static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits);
-+static void rfcomm_make_uih(struct sk_buff *skb, u8 addr);
-+
-+static void rfcomm_process_connect(struct rfcomm_session *s);
-+
-+/* ---- RFCOMM frame parsing macros ---- */
-+#define __get_dlci(b) ((b & 0xfc) >> 2)
-+#define __get_channel(b) ((b & 0xf8) >> 3)
-+#define __get_dir(b) ((b & 0x04) >> 2)
-+#define __get_type(b) ((b & 0xef))
-+
-+#define __test_ea(b) ((b & 0x01))
-+#define __test_cr(b) ((b & 0x02))
-+#define __test_pf(b) ((b & 0x10))
-+
-+#define __addr(cr, dlci) (((dlci & 0x3f) << 2) | (cr << 1) | 0x01)
-+#define __ctrl(type, pf) (((type & 0xef) | (pf << 4)))
-+#define __dlci(dir, chn) (((chn & 0x1f) << 1) | dir)
-+#define __srv_channel(dlci) (dlci >> 1)
-+#define __dir(dlci) (dlci & 0x01)
-+
-+#define __len8(len) (((len) << 1) | 1)
-+#define __len16(len) ((len) << 1)
-+
-+/* MCC macros */
-+#define __mcc_type(cr, type) (((type << 2) | (cr << 1) | 0x01))
-+#define __get_mcc_type(b) ((b & 0xfc) >> 2)
-+#define __get_mcc_len(b) ((b & 0xfe) >> 1)
-+
-+/* RPN macros */
-+#define __rpn_line_settings(data, stop, parity) ((data & 0x3) | ((stop & 0x1) << 2) | ((parity & 0x3) << 3))
-+#define __get_rpn_data_bits(line) ((line) & 0x3)
-+#define __get_rpn_stop_bits(line) (((line) >> 2) & 0x1)
-+#define __get_rpn_parity(line) (((line) >> 3) & 0x3)
-+
-+/* ---- RFCOMM FCS computation ---- */
-+
-+/* CRC on 2 bytes */
-+#define __crc(data) (rfcomm_crc_table[rfcomm_crc_table[0xff ^ data[0]] ^ data[1]])
-+
-+/* FCS on 2 bytes */
-+static inline u8 __fcs(u8 *data)
-+{
-+ return (0xff - __crc(data));
-+}
-+
-+/* FCS on 3 bytes */
-+static inline u8 __fcs2(u8 *data)
-+{
-+ return (0xff - rfcomm_crc_table[__crc(data) ^ data[2]]);
-+}
-+
-+/* Check FCS */
-+static inline int __check_fcs(u8 *data, int type, u8 fcs)
-+{
-+ u8 f = __crc(data);
-+
-+ if (type != RFCOMM_UIH)
-+ f = rfcomm_crc_table[f ^ data[2]];
-+
-+ return rfcomm_crc_table[f ^ fcs] != 0xcf;
-+}
-+
-+/* ---- L2CAP callbacks ---- */
-+static void rfcomm_l2state_change(struct sock *sk)
-+{
-+ BT_DBG("%p state %d", sk, sk->state);
-+ rfcomm_schedule(RFCOMM_SCHED_STATE);
-+}
-+
-+static void rfcomm_l2data_ready(struct sock *sk, int bytes)
-+{
-+ BT_DBG("%p bytes %d", sk, bytes);
-+ rfcomm_schedule(RFCOMM_SCHED_RX);
-+}
-+
-+static int rfcomm_l2sock_create(struct socket **sock)
-+{
-+ int err;
-+
-+ BT_DBG("");
-+
-+ err = sock_create(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP, sock);
-+ if (!err) {
-+ struct sock *sk = (*sock)->sk;
-+ sk->data_ready = rfcomm_l2data_ready;
-+ sk->state_change = rfcomm_l2state_change;
-+ }
-+ return err;
-+}
-+
-+/* ---- RFCOMM DLCs ---- */
-+static void rfcomm_dlc_timeout(unsigned long arg)
-+{
-+ struct rfcomm_dlc *d = (void *) arg;
-+
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ set_bit(RFCOMM_TIMED_OUT, &d->flags);
-+ rfcomm_dlc_put(d);
-+ rfcomm_schedule(RFCOMM_SCHED_TIMEO);
-+}
-+
-+static void rfcomm_dlc_set_timer(struct rfcomm_dlc *d, long timeout)
-+{
-+ BT_DBG("dlc %p state %ld timeout %ld", d, d->state, timeout);
-+
-+ if (!mod_timer(&d->timer, jiffies + timeout))
-+ rfcomm_dlc_hold(d);
-+}
-+
-+static void rfcomm_dlc_clear_timer(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (timer_pending(&d->timer) && del_timer(&d->timer))
-+ rfcomm_dlc_put(d);
-+}
-+
-+static void rfcomm_dlc_clear_state(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("%p", d);
-+
-+ d->state = BT_OPEN;
-+ d->flags = 0;
-+ d->mscex = 0;
-+ d->mtu = RFCOMM_DEFAULT_MTU;
-+ d->v24_sig = RFCOMM_V24_RTC | RFCOMM_V24_RTR | RFCOMM_V24_DV;
-+
-+ d->credits = 0;
-+ d->rx_credits = RFCOMM_DEFAULT_CREDITS;
-+}
-+
-+struct rfcomm_dlc *rfcomm_dlc_alloc(int prio)
-+{
-+ struct rfcomm_dlc *d = kmalloc(sizeof(*d), prio);
-+ if (!d)
-+ return NULL;
-+ memset(d, 0, sizeof(*d));
-+
-+ init_timer(&d->timer);
-+ d->timer.function = rfcomm_dlc_timeout;
-+ d->timer.data = (unsigned long) d;
-+
-+ skb_queue_head_init(&d->tx_queue);
-+ spin_lock_init(&d->lock);
-+ atomic_set(&d->refcnt, 1);
-+
-+ rfcomm_dlc_clear_state(d);
-+
-+ BT_DBG("%p", d);
-+ return d;
-+}
-+
-+void rfcomm_dlc_free(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("%p", d);
-+
-+ skb_queue_purge(&d->tx_queue);
-+ kfree(d);
-+}
-+
-+static void rfcomm_dlc_link(struct rfcomm_session *s, struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p session %p", d, s);
-+
-+ rfcomm_session_hold(s);
-+
-+ rfcomm_dlc_hold(d);
-+ list_add(&d->list, &s->dlcs);
-+ d->session = s;
-+}
-+
-+static void rfcomm_dlc_unlink(struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_session *s = d->session;
-+
-+ BT_DBG("dlc %p refcnt %d session %p", d, atomic_read(&d->refcnt), s);
-+
-+ list_del(&d->list);
-+ d->session = NULL;
-+ rfcomm_dlc_put(d);
-+
-+ rfcomm_session_put(s);
-+}
-+
-+static struct rfcomm_dlc *rfcomm_dlc_get(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p;
-+
-+ list_for_each(p, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (d->dlci == dlci)
-+ return d;
-+ }
-+ return NULL;
-+}
-+
-+static int __rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel)
-+{
-+ struct rfcomm_session *s;
-+ int err = 0;
-+ u8 dlci;
-+
-+ BT_DBG("dlc %p state %ld %s %s channel %d",
-+ d, d->state, batostr(src), batostr(dst), channel);
-+
-+ if (channel < 1 || channel > 30)
-+ return -EINVAL;
-+
-+ if (d->state != BT_OPEN && d->state != BT_CLOSED)
-+ return 0;
-+
-+ s = rfcomm_session_get(src, dst);
-+ if (!s) {
-+ s = rfcomm_session_create(src, dst, &err);
-+ if (!s)
-+ return err;
-+ }
-+
-+ dlci = __dlci(!s->initiator, channel);
-+
-+ /* Check if DLCI already exists */
-+ if (rfcomm_dlc_get(s, dlci))
-+ return -EBUSY;
-+
-+ rfcomm_dlc_clear_state(d);
-+
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ d->priority = 7;
-+
-+ d->state = BT_CONFIG;
-+ rfcomm_dlc_link(s, d);
-+
-+ d->mtu = s->mtu;
-+ d->credits = s->credits;
-+
-+ if (s->state == BT_CONNECTED)
-+ rfcomm_send_pn(s, 1, d);
-+ rfcomm_dlc_set_timer(d, RFCOMM_CONN_TIMEOUT);
-+ return 0;
-+}
-+
-+int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel)
-+{
-+ mm_segment_t fs;
-+ int r;
-+
-+ rfcomm_lock();
-+
-+ fs = get_fs(); set_fs(KERNEL_DS);
-+ r = __rfcomm_dlc_open(d, src, dst, channel);
-+ set_fs(fs);
-+
-+ rfcomm_unlock();
-+ return r;
-+}
-+
-+static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err)
-+{
-+ struct rfcomm_session *s = d->session;
-+ if (!s)
-+ return 0;
-+
-+ BT_DBG("dlc %p state %ld dlci %d err %d session %p",
-+ d, d->state, d->dlci, err, s);
-+
-+ switch (d->state) {
-+ case BT_CONNECTED:
-+ case BT_CONFIG:
-+ case BT_CONNECT:
-+ d->state = BT_DISCONN;
-+ if (skb_queue_empty(&d->tx_queue)) {
-+ rfcomm_send_disc(s, d->dlci);
-+ rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT);
-+ } else {
-+ rfcomm_queue_disc(d);
-+ rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT * 2);
-+ }
-+ break;
-+
-+ default:
-+ rfcomm_dlc_clear_timer(d);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CLOSED;
-+ d->state_change(d, err);
-+ rfcomm_dlc_unlock(d);
-+
-+ skb_queue_purge(&d->tx_queue);
-+ rfcomm_dlc_unlink(d);
-+ }
-+
-+ return 0;
-+}
-+
-+int rfcomm_dlc_close(struct rfcomm_dlc *d, int err)
-+{
-+ mm_segment_t fs;
-+ int r;
-+
-+ rfcomm_lock();
-+
-+ fs = get_fs(); set_fs(KERNEL_DS);
-+ r = __rfcomm_dlc_close(d, err);
-+ set_fs(fs);
-+
-+ rfcomm_unlock();
-+ return r;
-+}
-+
-+int rfcomm_dlc_send(struct rfcomm_dlc *d, struct sk_buff *skb)
-+{
-+ int len = skb->len;
-+
-+ if (d->state != BT_CONNECTED)
-+ return -ENOTCONN;
-+
-+ BT_DBG("dlc %p mtu %d len %d", d, d->mtu, len);
-+
-+ if (len > d->mtu)
-+ return -EINVAL;
-+
-+ rfcomm_make_uih(skb, d->addr);
-+ skb_queue_tail(&d->tx_queue, skb);
-+
-+ if (!test_bit(RFCOMM_TX_THROTTLED, &d->flags))
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+ return len;
-+}
-+
-+void __rfcomm_dlc_throttle(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (!d->credits) {
-+ d->v24_sig |= RFCOMM_V24_FC;
-+ set_bit(RFCOMM_MSC_PENDING, &d->flags);
-+ }
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+}
-+
-+void __rfcomm_dlc_unthrottle(struct rfcomm_dlc *d)
-+{
-+ BT_DBG("dlc %p state %ld", d, d->state);
-+
-+ if (!d->credits) {
-+ d->v24_sig &= ~RFCOMM_V24_FC;
-+ set_bit(RFCOMM_MSC_PENDING, &d->flags);
-+ }
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+}
-+
-+/*
-+ Set/get modem status functions use _local_ status i.e. what we report
-+ to the other side.
-+ Remote status is provided by dlc->modem_status() callback.
-+ */
-+int rfcomm_dlc_set_modem_status(struct rfcomm_dlc *d, u8 v24_sig)
-+{
-+ BT_DBG("dlc %p state %ld v24_sig 0x%x",
-+ d, d->state, v24_sig);
-+
-+ if (test_bit(RFCOMM_RX_THROTTLED, &d->flags))
-+ v24_sig |= RFCOMM_V24_FC;
-+ else
-+ v24_sig &= ~RFCOMM_V24_FC;
-+
-+ d->v24_sig = v24_sig;
-+
-+ if (!test_and_set_bit(RFCOMM_MSC_PENDING, &d->flags))
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+
-+ return 0;
-+}
-+
-+int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig)
-+{
-+ BT_DBG("dlc %p state %ld v24_sig 0x%x",
-+ d, d->state, d->v24_sig);
-+
-+ *v24_sig = d->v24_sig;
-+ return 0;
-+}
-+
-+/* ---- RFCOMM sessions ---- */
-+struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state)
-+{
-+ struct rfcomm_session *s = kmalloc(sizeof(*s), GFP_KERNEL);
-+ if (!s)
-+ return NULL;
-+ memset(s, 0, sizeof(*s));
-+
-+ BT_DBG("session %p sock %p", s, sock);
-+
-+ INIT_LIST_HEAD(&s->dlcs);
-+ s->state = state;
-+ s->sock = sock;
-+
-+ s->mtu = RFCOMM_DEFAULT_MTU;
-+ s->credits = 0;
-+
-+ list_add(&s->list, &session_list);
-+
-+ /* Do not increment module usage count for listeting sessions.
-+ * Otherwise we won't be able to unload the module. */
-+ if (state != BT_LISTEN)
-+ MOD_INC_USE_COUNT;
-+ return s;
-+}
-+
-+void rfcomm_session_del(struct rfcomm_session *s)
-+{
-+ int state = s->state;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_del(&s->list);
-+
-+ if (state == BT_CONNECTED)
-+ rfcomm_send_disc(s, 0);
-+
-+ sock_release(s->sock);
-+ kfree(s);
-+
-+ if (state != BT_LISTEN)
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst)
-+{
-+ struct rfcomm_session *s;
-+ struct list_head *p, *n;
-+ struct bluez_pinfo *pi;
-+ list_for_each_safe(p, n, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ pi = bluez_pi(s->sock->sk);
-+
-+ if ((!bacmp(src, BDADDR_ANY) || !bacmp(&pi->src, src)) &&
-+ !bacmp(&pi->dst, dst))
-+ return s;
-+ }
-+ return NULL;
-+}
-+
-+void rfcomm_session_close(struct rfcomm_session *s, int err)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld err %d", s, s->state, err);
-+
-+ rfcomm_session_hold(s);
-+
-+ s->state = BT_CLOSED;
-+
-+ /* Close all dlcs */
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ }
-+
-+ rfcomm_session_put(s);
-+}
-+
-+struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err)
-+{
-+ struct rfcomm_session *s = NULL;
-+ struct sockaddr_l2 addr;
-+ struct l2cap_options opts;
-+ struct socket *sock;
-+ int size;
-+
-+ BT_DBG("%s %s", batostr(src), batostr(dst));
-+
-+ *err = rfcomm_l2sock_create(&sock);
-+ if (*err < 0)
-+ return NULL;
-+
-+ bacpy(&addr.l2_bdaddr, src);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = 0;
-+ *err = sock->ops->bind(sock, (struct sockaddr *) &addr, sizeof(addr));
-+ if (*err < 0)
-+ goto failed;
-+
-+ /* Set L2CAP options */
-+ size = sizeof(opts);
-+ sock->ops->getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, &size);
-+
-+ opts.imtu = RFCOMM_MAX_L2CAP_MTU;
-+ sock->ops->setsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, size);
-+
-+ s = rfcomm_session_add(sock, BT_BOUND);
-+ if (!s) {
-+ *err = -ENOMEM;
-+ goto failed;
-+ }
-+
-+ s->initiator = 1;
-+
-+ bacpy(&addr.l2_bdaddr, dst);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = htobs(RFCOMM_PSM);
-+ *err = sock->ops->connect(sock, (struct sockaddr *) &addr, sizeof(addr), O_NONBLOCK);
-+ if (*err == 0 || *err == -EAGAIN)
-+ return s;
-+
-+ rfcomm_session_del(s);
-+ return NULL;
-+
-+failed:
-+ sock_release(sock);
-+ return NULL;
-+}
-+
-+void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst)
-+{
-+ struct sock *sk = s->sock->sk;
-+ if (src)
-+ bacpy(src, &bluez_pi(sk)->src);
-+ if (dst)
-+ bacpy(dst, &bluez_pi(sk)->dst);
-+}
-+
-+/* ---- RFCOMM frame sending ---- */
-+static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len)
-+{
-+ struct socket *sock = s->sock;
-+ struct iovec iv = { data, len };
-+ struct msghdr msg;
-+ int err;
-+
-+ BT_DBG("session %p len %d", s, len);
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 1;
-+ msg.msg_iov = &iv;
-+
-+ err = sock->ops->sendmsg(sock, &msg, len, 0);
-+ return err;
-+}
-+
-+static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_SABM, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_ua(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(!s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_UA, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_DISC, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_queue_disc(struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_cmd *cmd;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("dlc %p dlci %d", d, d->dlci);
-+
-+ skb = alloc_skb(sizeof(*cmd), GFP_KERNEL);
-+ if (!skb)
-+ return -ENOMEM;
-+
-+ cmd = (void *) __skb_put(skb, sizeof(*cmd));
-+ cmd->addr = d->addr;
-+ cmd->ctrl = __ctrl(RFCOMM_DISC, 1);
-+ cmd->len = __len8(0);
-+ cmd->fcs = __fcs2((u8 *) cmd);
-+
-+ skb_queue_tail(&d->tx_queue, skb);
-+ rfcomm_schedule(RFCOMM_SCHED_TX);
-+ return 0;
-+}
-+
-+static int rfcomm_send_dm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_cmd cmd;
-+
-+ BT_DBG("%p dlci %d", s, dlci);
-+
-+ cmd.addr = __addr(!s->initiator, dlci);
-+ cmd.ctrl = __ctrl(RFCOMM_DM, 1);
-+ cmd.len = __len8(0);
-+ cmd.fcs = __fcs2((u8 *) &cmd);
-+
-+ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd));
-+}
-+
-+static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d type %d", s, cr, type);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + 1);
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_NSC);
-+ mcc->len = __len8(1);
-+
-+ /* Type that we didn't like */
-+ *ptr = __mcc_type(cr, type); ptr++;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_pn *pn;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d dlci %d mtu %d", s, cr, d->dlci, d->mtu);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*pn));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_PN);
-+ mcc->len = __len8(sizeof(*pn));
-+
-+ pn = (void *) ptr; ptr += sizeof(*pn);
-+ pn->dlci = d->dlci;
-+ pn->priority = d->priority;
-+ pn->ack_timer = 0;
-+ pn->max_retrans = 0;
-+
-+ if (cr || d->credits) {
-+ pn->flow_ctrl = cr ? 0xf0 : 0xe0;
-+ pn->credits = RFCOMM_DEFAULT_CREDITS;
-+ } else {
-+ pn->flow_ctrl = 0;
-+ pn->credits = 0;
-+ }
-+
-+ pn->mtu = htobs(d->mtu);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci,
-+ u8 bit_rate, u8 data_bits, u8 stop_bits,
-+ u8 parity, u8 flow_ctrl_settings,
-+ u8 xon_char, u8 xoff_char, u16 param_mask)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_rpn *rpn;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d dlci %d bit_r 0x%x data_b 0x%x stop_b 0x%x parity 0x%x"
-+ "flwc_s 0x%x xon_c 0x%x xoff_c 0x%x p_mask 0x%x",
-+ s, cr, dlci, bit_rate, data_bits, stop_bits, parity,
-+ flow_ctrl_settings, xon_char, xoff_char, param_mask);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*rpn));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_RPN);
-+ mcc->len = __len8(sizeof(*rpn));
-+
-+ rpn = (void *) ptr; ptr += sizeof(*rpn);
-+ rpn->dlci = __addr(1, dlci);
-+ rpn->bit_rate = bit_rate;
-+ rpn->line_settings = __rpn_line_settings(data_bits, stop_bits, parity);
-+ rpn->flow_ctrl = flow_ctrl_settings;
-+ rpn->xon_char = xon_char;
-+ rpn->xoff_char = xoff_char;
-+ rpn->param_mask = param_mask;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_rls(struct rfcomm_session *s, int cr, u8 dlci, u8 status)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_rls *rls;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d status 0x%x", s, cr, status);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*rls));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_RLS);
-+ mcc->len = __len8(sizeof(*rls));
-+
-+ rls = (void *) ptr; ptr += sizeof(*rls);
-+ rls->dlci = __addr(1, dlci);
-+ rls->status = status;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ struct rfcomm_msc *msc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d v24 0x%x", s, cr, v24_sig);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc) + sizeof(*msc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_MSC);
-+ mcc->len = __len8(sizeof(*msc));
-+
-+ msc = (void *) ptr; ptr += sizeof(*msc);
-+ msc->dlci = __addr(1, dlci);
-+ msc->v24_sig = v24_sig | 0x01;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_fcoff(struct rfcomm_session *s, int cr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_FCOFF);
-+ mcc->len = __len8(0);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_fcon(struct rfcomm_session *s, int cr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ struct rfcomm_mcc *mcc;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = __addr(s->initiator, 0);
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+ hdr->len = __len8(sizeof(*mcc));
-+
-+ mcc = (void *) ptr; ptr += sizeof(*mcc);
-+ mcc->type = __mcc_type(cr, RFCOMM_FCON);
-+ mcc->len = __len8(0);
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len)
-+{
-+ struct socket *sock = s->sock;
-+ struct iovec iv[3];
-+ struct msghdr msg;
-+ unsigned char hdr[5], crc[1];
-+
-+ if (len > 125)
-+ return -EINVAL;
-+
-+ BT_DBG("%p cr %d", s, cr);
-+
-+ hdr[0] = __addr(s->initiator, 0);
-+ hdr[1] = __ctrl(RFCOMM_UIH, 0);
-+ hdr[2] = 0x01 | ((len + 2) << 1);
-+ hdr[3] = 0x01 | ((cr & 0x01) << 1) | (RFCOMM_TEST << 2);
-+ hdr[4] = 0x01 | (len << 1);
-+
-+ crc[0] = __fcs(hdr);
-+
-+ iv[0].iov_base = hdr;
-+ iv[0].iov_len = 5;
-+ iv[1].iov_base = pattern;
-+ iv[1].iov_len = len;
-+ iv[2].iov_base = crc;
-+ iv[2].iov_len = 1;
-+
-+ memset(&msg, 0, sizeof(msg));
-+ msg.msg_iovlen = 3;
-+ msg.msg_iov = iv;
-+ return sock->ops->sendmsg(sock, &msg, 6 + len, 0);
-+}
-+
-+static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits)
-+{
-+ struct rfcomm_hdr *hdr;
-+ u8 buf[16], *ptr = buf;
-+
-+ BT_DBG("%p addr %d credits %d", s, addr, credits);
-+
-+ hdr = (void *) ptr; ptr += sizeof(*hdr);
-+ hdr->addr = addr;
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 1);
-+ hdr->len = __len8(0);
-+
-+ *ptr = credits; ptr++;
-+
-+ *ptr = __fcs(buf); ptr++;
-+
-+ return rfcomm_send_frame(s, buf, ptr - buf);
-+}
-+
-+static void rfcomm_make_uih(struct sk_buff *skb, u8 addr)
-+{
-+ struct rfcomm_hdr *hdr;
-+ int len = skb->len;
-+ u8 *crc;
-+
-+ if (len > 127) {
-+ hdr = (void *) skb_push(skb, 4);
-+ put_unaligned(htobs(__len16(len)), (u16 *) &hdr->len);
-+ } else {
-+ hdr = (void *) skb_push(skb, 3);
-+ hdr->len = __len8(len);
-+ }
-+ hdr->addr = addr;
-+ hdr->ctrl = __ctrl(RFCOMM_UIH, 0);
-+
-+ crc = skb_put(skb, 1);
-+ *crc = __fcs((void *) hdr);
-+}
-+
-+/* ---- RFCOMM frame reception ---- */
-+static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci)
-+{
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ /* Data channel */
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (!d) {
-+ rfcomm_send_dm(s, dlci);
-+ return 0;
-+ }
-+
-+ switch (d->state) {
-+ case BT_CONNECT:
-+ rfcomm_dlc_clear_timer(d);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ break;
-+
-+ case BT_DISCONN:
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, 0);
-+ break;
-+ }
-+ } else {
-+ /* Control channel */
-+ switch (s->state) {
-+ case BT_CONNECT:
-+ s->state = BT_CONNECTED;
-+ rfcomm_process_connect(s);
-+ break;
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_dm(struct rfcomm_session *s, u8 dlci)
-+{
-+ int err = 0;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ /* Data DLC */
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (d->state == BT_CONNECT || d->state == BT_CONFIG)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ }
-+ } else {
-+ if (s->state == BT_CONNECT)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, err);
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_disc(struct rfcomm_session *s, u8 dlci)
-+{
-+ int err = 0;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (dlci) {
-+ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ rfcomm_send_ua(s, dlci);
-+
-+ if (d->state == BT_CONNECT || d->state == BT_CONFIG)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ d->state = BT_CLOSED;
-+ __rfcomm_dlc_close(d, err);
-+ } else
-+ rfcomm_send_dm(s, dlci);
-+
-+ } else {
-+ rfcomm_send_ua(s, 0);
-+
-+ if (s->state == BT_CONNECT)
-+ err = ECONNREFUSED;
-+ else
-+ err = ECONNRESET;
-+
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, err);
-+ }
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_sabm(struct rfcomm_session *s, u8 dlci)
-+{
-+ struct rfcomm_dlc *d;
-+ u8 channel;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (!dlci) {
-+ rfcomm_send_ua(s, 0);
-+
-+ if (s->state == BT_OPEN) {
-+ s->state = BT_CONNECTED;
-+ rfcomm_process_connect(s);
-+ }
-+ return 0;
-+ }
-+
-+ /* Check if DLC exists */
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (d->state == BT_OPEN) {
-+ /* DLC was previously opened by PN request */
-+ rfcomm_send_ua(s, dlci);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ }
-+ return 0;
-+ }
-+
-+ /* Notify socket layer about incomming connection */
-+ channel = __srv_channel(dlci);
-+ if (rfcomm_connect_ind(s, channel, &d)) {
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ rfcomm_dlc_link(s, d);
-+
-+ rfcomm_send_ua(s, dlci);
-+
-+ rfcomm_dlc_lock(d);
-+ d->state = BT_CONNECTED;
-+ d->state_change(d, 0);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 1, dlci, d->v24_sig);
-+ } else {
-+ rfcomm_send_dm(s, dlci);
-+ }
-+
-+ return 0;
-+}
-+
-+static int rfcomm_apply_pn(struct rfcomm_dlc *d, int cr, struct rfcomm_pn *pn)
-+{
-+ struct rfcomm_session *s = d->session;
-+
-+ BT_DBG("dlc %p state %ld dlci %d mtu %d fc 0x%x credits %d",
-+ d, d->state, d->dlci, pn->mtu, pn->flow_ctrl, pn->credits);
-+
-+ if (cr) {
-+ if (pn->flow_ctrl == 0xf0) {
-+ s->credits = RFCOMM_MAX_CREDITS;
-+ d->credits = s->credits;
-+ d->tx_credits = pn->credits;
-+ } else {
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ d->credits = 0;
-+ }
-+ } else {
-+ if (pn->flow_ctrl == 0xe0) {
-+ s->credits = RFCOMM_MAX_CREDITS;
-+ d->credits = s->credits;
-+ d->tx_credits = pn->credits;
-+ } else {
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ d->credits = 0;
-+ }
-+ }
-+
-+ d->priority = pn->priority;
-+
-+ d->mtu = btohs(pn->mtu);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_pn(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_pn *pn = (void *) skb->data;
-+ struct rfcomm_dlc *d;
-+ u8 dlci = pn->dlci;
-+
-+ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci);
-+
-+ if (!dlci)
-+ return 0;
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (d) {
-+ if (cr) {
-+ /* PN request */
-+ rfcomm_apply_pn(d, cr, pn);
-+ rfcomm_send_pn(s, 0, d);
-+ } else {
-+ /* PN response */
-+ switch (d->state) {
-+ case BT_CONFIG:
-+ rfcomm_apply_pn(d, cr, pn);
-+
-+ d->state = BT_CONNECT;
-+ rfcomm_send_sabm(s, d->dlci);
-+ break;
-+ }
-+ }
-+ } else {
-+ u8 channel = __srv_channel(dlci);
-+
-+ if (!cr)
-+ return 0;
-+
-+ /* PN request for non existing DLC.
-+ * Assume incomming connection. */
-+ if (rfcomm_connect_ind(s, channel, &d)) {
-+ d->dlci = dlci;
-+ d->addr = __addr(s->initiator, dlci);
-+ rfcomm_dlc_link(s, d);
-+
-+ rfcomm_apply_pn(d, cr, pn);
-+
-+ d->state = BT_OPEN;
-+ rfcomm_send_pn(s, 0, d);
-+ } else {
-+ rfcomm_send_dm(s, dlci);
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_rpn(struct rfcomm_session *s, int cr, int len, struct sk_buff *skb)
-+{
-+ struct rfcomm_rpn *rpn = (void *) skb->data;
-+ u8 dlci = __get_dlci(rpn->dlci);
-+
-+ u8 bit_rate = 0;
-+ u8 data_bits = 0;
-+ u8 stop_bits = 0;
-+ u8 parity = 0;
-+ u8 flow_ctrl = 0;
-+ u8 xon_char = 0;
-+ u8 xoff_char = 0;
-+ u16 rpn_mask = RFCOMM_RPN_PM_ALL;
-+
-+ BT_DBG("dlci %d cr %d len 0x%x bitr 0x%x line 0x%x flow 0x%x xonc 0x%x xoffc 0x%x pm 0x%x",
-+ dlci, cr, len, rpn->bit_rate, rpn->line_settings, rpn->flow_ctrl,
-+ rpn->xon_char, rpn->xoff_char, rpn->param_mask);
-+
-+ if (!cr)
-+ return 0;
-+
-+ if (len == 1) {
-+ /* request: return default setting */
-+ bit_rate = RFCOMM_RPN_BR_115200;
-+ data_bits = RFCOMM_RPN_DATA_8;
-+ stop_bits = RFCOMM_RPN_STOP_1;
-+ parity = RFCOMM_RPN_PARITY_NONE;
-+ flow_ctrl = RFCOMM_RPN_FLOW_NONE;
-+ xon_char = RFCOMM_RPN_XON_CHAR;
-+ xoff_char = RFCOMM_RPN_XOFF_CHAR;
-+
-+ goto rpn_out;
-+ }
-+ /* check for sane values: ignore/accept bit_rate, 8 bits, 1 stop bit, no parity,
-+ no flow control lines, normal XON/XOFF chars */
-+ if (rpn->param_mask & RFCOMM_RPN_PM_BITRATE) {
-+ bit_rate = rpn->bit_rate;
-+ if (bit_rate != RFCOMM_RPN_BR_115200) {
-+ BT_DBG("RPN bit rate mismatch 0x%x", bit_rate);
-+ bit_rate = RFCOMM_RPN_BR_115200;
-+ rpn_mask ^= RFCOMM_RPN_PM_BITRATE;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_DATA) {
-+ data_bits = __get_rpn_data_bits(rpn->line_settings);
-+ if (data_bits != RFCOMM_RPN_DATA_8) {
-+ BT_DBG("RPN data bits mismatch 0x%x", data_bits);
-+ data_bits = RFCOMM_RPN_DATA_8;
-+ rpn_mask ^= RFCOMM_RPN_PM_DATA;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_STOP) {
-+ stop_bits = __get_rpn_stop_bits(rpn->line_settings);
-+ if (stop_bits != RFCOMM_RPN_STOP_1) {
-+ BT_DBG("RPN stop bits mismatch 0x%x", stop_bits);
-+ stop_bits = RFCOMM_RPN_STOP_1;
-+ rpn_mask ^= RFCOMM_RPN_PM_STOP;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_PARITY) {
-+ parity = __get_rpn_parity(rpn->line_settings);
-+ if (parity != RFCOMM_RPN_PARITY_NONE) {
-+ BT_DBG("RPN parity mismatch 0x%x", parity);
-+ parity = RFCOMM_RPN_PARITY_NONE;
-+ rpn_mask ^= RFCOMM_RPN_PM_PARITY;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_FLOW) {
-+ flow_ctrl = rpn->flow_ctrl;
-+ if (flow_ctrl != RFCOMM_RPN_FLOW_NONE) {
-+ BT_DBG("RPN flow ctrl mismatch 0x%x", flow_ctrl);
-+ flow_ctrl = RFCOMM_RPN_FLOW_NONE;
-+ rpn_mask ^= RFCOMM_RPN_PM_FLOW;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_XON) {
-+ xon_char = rpn->xon_char;
-+ if (xon_char != RFCOMM_RPN_XON_CHAR) {
-+ BT_DBG("RPN XON char mismatch 0x%x", xon_char);
-+ xon_char = RFCOMM_RPN_XON_CHAR;
-+ rpn_mask ^= RFCOMM_RPN_PM_XON;
-+ }
-+ }
-+ if (rpn->param_mask & RFCOMM_RPN_PM_XOFF) {
-+ xoff_char = rpn->xoff_char;
-+ if (xoff_char != RFCOMM_RPN_XOFF_CHAR) {
-+ BT_DBG("RPN XOFF char mismatch 0x%x", xoff_char);
-+ xoff_char = RFCOMM_RPN_XOFF_CHAR;
-+ rpn_mask ^= RFCOMM_RPN_PM_XOFF;
-+ }
-+ }
-+
-+rpn_out:
-+ rfcomm_send_rpn(s, 0, dlci,
-+ bit_rate, data_bits, stop_bits, parity, flow_ctrl,
-+ xon_char, xoff_char, rpn_mask);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_rls(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_rls *rls = (void *) skb->data;
-+ u8 dlci = __get_dlci(rls->dlci);
-+
-+ BT_DBG("dlci %d cr %d status 0x%x", dlci, cr, rls->status);
-+
-+ if (!cr)
-+ return 0;
-+
-+ /* FIXME: We should probably do something with this
-+ information here. But for now it's sufficient just
-+ to reply -- Bluetooth 1.1 says it's mandatory to
-+ recognise and respond to RLS */
-+
-+ rfcomm_send_rls(s, 0, dlci, rls->status);
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_msc(struct rfcomm_session *s, int cr, struct sk_buff *skb)
-+{
-+ struct rfcomm_msc *msc = (void *) skb->data;
-+ struct rfcomm_dlc *d;
-+ u8 dlci = __get_dlci(msc->dlci);
-+
-+ BT_DBG("dlci %d cr %d v24 0x%x", dlci, cr, msc->v24_sig);
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (!d)
-+ return 0;
-+
-+ if (cr) {
-+ if (msc->v24_sig & RFCOMM_V24_FC && !d->credits)
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ else
-+ clear_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+
-+ rfcomm_dlc_lock(d);
-+ if (d->modem_status)
-+ d->modem_status(d, msc->v24_sig);
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_send_msc(s, 0, dlci, msc->v24_sig);
-+
-+ d->mscex |= RFCOMM_MSCEX_RX;
-+ } else
-+ d->mscex |= RFCOMM_MSCEX_TX;
-+
-+ return 0;
-+}
-+
-+static int rfcomm_recv_mcc(struct rfcomm_session *s, struct sk_buff *skb)
-+{
-+ struct rfcomm_mcc *mcc = (void *) skb->data;
-+ u8 type, cr, len;
-+
-+ cr = __test_cr(mcc->type);
-+ type = __get_mcc_type(mcc->type);
-+ len = __get_mcc_len(mcc->len);
-+
-+ BT_DBG("%p type 0x%x cr %d", s, type, cr);
-+
-+ skb_pull(skb, 2);
-+
-+ switch (type) {
-+ case RFCOMM_PN:
-+ rfcomm_recv_pn(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_RPN:
-+ rfcomm_recv_rpn(s, cr, len, skb);
-+ break;
-+
-+ case RFCOMM_RLS:
-+ rfcomm_recv_rls(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_MSC:
-+ rfcomm_recv_msc(s, cr, skb);
-+ break;
-+
-+ case RFCOMM_FCOFF:
-+ if (cr) {
-+ set_bit(RFCOMM_TX_THROTTLED, &s->flags);
-+ rfcomm_send_fcoff(s, 0);
-+ }
-+ break;
-+
-+ case RFCOMM_FCON:
-+ if (cr) {
-+ clear_bit(RFCOMM_TX_THROTTLED, &s->flags);
-+ rfcomm_send_fcon(s, 0);
-+ }
-+ break;
-+
-+ case RFCOMM_TEST:
-+ if (cr)
-+ rfcomm_send_test(s, 0, skb->data, skb->len);
-+ break;
-+
-+ case RFCOMM_NSC:
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown control type 0x%02x", type);
-+ rfcomm_send_nsc(s, cr, type);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static int rfcomm_recv_data(struct rfcomm_session *s, u8 dlci, int pf, struct sk_buff *skb)
-+{
-+ struct rfcomm_dlc *d;
-+
-+ BT_DBG("session %p state %ld dlci %d pf %d", s, s->state, dlci, pf);
-+
-+ d = rfcomm_dlc_get(s, dlci);
-+ if (!d) {
-+ rfcomm_send_dm(s, dlci);
-+ goto drop;
-+ }
-+
-+ if (pf && d->credits) {
-+ u8 credits = *(u8 *) skb->data; skb_pull(skb, 1);
-+
-+ d->tx_credits += credits;
-+ if (d->tx_credits)
-+ clear_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ }
-+
-+ if (skb->len && d->state == BT_CONNECTED) {
-+ rfcomm_dlc_lock(d);
-+ d->rx_credits--;
-+ d->data_ready(d, skb);
-+ rfcomm_dlc_unlock(d);
-+ return 0;
-+ }
-+
-+drop:
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+static int rfcomm_recv_frame(struct rfcomm_session *s, struct sk_buff *skb)
-+{
-+ struct rfcomm_hdr *hdr = (void *) skb->data;
-+ u8 type, dlci, fcs;
-+
-+ dlci = __get_dlci(hdr->addr);
-+ type = __get_type(hdr->ctrl);
-+
-+ /* Trim FCS */
-+ skb->len--; skb->tail--;
-+ fcs = *(u8 *) skb->tail;
-+
-+ if (__check_fcs(skb->data, type, fcs)) {
-+ BT_ERR("bad checksum in packet");
-+ kfree_skb(skb);
-+ return -EILSEQ;
-+ }
-+
-+ if (__test_ea(hdr->len))
-+ skb_pull(skb, 3);
-+ else
-+ skb_pull(skb, 4);
-+
-+ switch (type) {
-+ case RFCOMM_SABM:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_sabm(s, dlci);
-+ break;
-+
-+ case RFCOMM_DISC:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_disc(s, dlci);
-+ break;
-+
-+ case RFCOMM_UA:
-+ if (__test_pf(hdr->ctrl))
-+ rfcomm_recv_ua(s, dlci);
-+ break;
-+
-+ case RFCOMM_DM:
-+ rfcomm_recv_dm(s, dlci);
-+ break;
-+
-+ case RFCOMM_UIH:
-+ if (dlci)
-+ return rfcomm_recv_data(s, dlci, __test_pf(hdr->ctrl), skb);
-+
-+ rfcomm_recv_mcc(s, skb);
-+ break;
-+
-+ default:
-+ BT_ERR("Unknown packet type 0x%02x\n", type);
-+ break;
-+ }
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+/* ---- Connection and data processing ---- */
-+
-+static void rfcomm_process_connect(struct rfcomm_session *s)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (d->state == BT_CONFIG) {
-+ d->mtu = s->mtu;
-+ rfcomm_send_pn(s, 1, d);
-+ }
-+ }
-+}
-+
-+/* Send data queued for the DLC.
-+ * Return number of frames left in the queue.
-+ */
-+static inline int rfcomm_process_tx(struct rfcomm_dlc *d)
-+{
-+ struct sk_buff *skb;
-+ int err;
-+
-+ BT_DBG("dlc %p state %ld credits %d rx_credits %d tx_credits %d",
-+ d, d->state, d->credits, d->rx_credits, d->tx_credits);
-+
-+ /* Send pending MSC */
-+ if (test_and_clear_bit(RFCOMM_MSC_PENDING, &d->flags))
-+ rfcomm_send_msc(d->session, 1, d->dlci, d->v24_sig);
-+
-+ if (d->credits) {
-+ /* CFC enabled.
-+ * Give them some credits */
-+ if (!test_bit(RFCOMM_RX_THROTTLED, &d->flags) &&
-+ d->rx_credits <= (d->credits >> 2)) {
-+ rfcomm_send_credits(d->session, d->addr, d->credits - d->rx_credits);
-+ d->rx_credits = d->credits;
-+ }
-+ } else {
-+ /* CFC disabled.
-+ * Give ourselves some credits */
-+ d->tx_credits = 5;
-+ }
-+
-+ if (test_bit(RFCOMM_TX_THROTTLED, &d->flags))
-+ return skb_queue_len(&d->tx_queue);
-+
-+ while (d->tx_credits && (skb = skb_dequeue(&d->tx_queue))) {
-+ err = rfcomm_send_frame(d->session, skb->data, skb->len);
-+ if (err < 0) {
-+ skb_queue_head(&d->tx_queue, skb);
-+ break;
-+ }
-+ kfree_skb(skb);
-+ d->tx_credits--;
-+ }
-+
-+ if (d->credits && !d->tx_credits) {
-+ /* We're out of TX credits.
-+ * Set TX_THROTTLED flag to avoid unnesary wakeups by dlc_send. */
-+ set_bit(RFCOMM_TX_THROTTLED, &d->flags);
-+ }
-+
-+ return skb_queue_len(&d->tx_queue);
-+}
-+
-+static inline void rfcomm_process_dlcs(struct rfcomm_session *s)
-+{
-+ struct rfcomm_dlc *d;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("session %p state %ld", s, s->state);
-+
-+ list_for_each_safe(p, n, &s->dlcs) {
-+ d = list_entry(p, struct rfcomm_dlc, list);
-+ if (test_bit(RFCOMM_TIMED_OUT, &d->flags)) {
-+ __rfcomm_dlc_close(d, ETIMEDOUT);
-+ continue;
-+ }
-+
-+ if (test_bit(RFCOMM_TX_THROTTLED, &s->flags))
-+ continue;
-+
-+ if ((d->state == BT_CONNECTED || d->state == BT_DISCONN) &&
-+ d->mscex == RFCOMM_MSCEX_OK)
-+ rfcomm_process_tx(d);
-+ }
-+}
-+
-+static inline void rfcomm_process_rx(struct rfcomm_session *s)
-+{
-+ struct socket *sock = s->sock;
-+ struct sock *sk = sock->sk;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("session %p state %ld qlen %d", s, s->state, skb_queue_len(&sk->receive_queue));
-+
-+ /* Get data directly from socket receive queue without copying it. */
-+ while ((skb = skb_dequeue(&sk->receive_queue))) {
-+ skb_orphan(skb);
-+ rfcomm_recv_frame(s, skb);
-+ }
-+
-+ if (sk->state == BT_CLOSED) {
-+ if (!s->initiator)
-+ rfcomm_session_put(s);
-+
-+ rfcomm_session_close(s, sk->err);
-+ }
-+}
-+
-+static inline void rfcomm_accept_connection(struct rfcomm_session *s)
-+{
-+ struct socket *sock = s->sock, *nsock;
-+ int err;
-+
-+ /* Fast check for a new connection.
-+ * Avoids unnesesary socket allocations. */
-+ if (list_empty(&bluez_pi(sock->sk)->accept_q))
-+ return;
-+
-+ BT_DBG("session %p", s);
-+
-+ nsock = sock_alloc();
-+ if (!nsock)
-+ return;
-+
-+ nsock->type = sock->type;
-+ nsock->ops = sock->ops;
-+
-+ err = sock->ops->accept(sock, nsock, O_NONBLOCK);
-+ if (err < 0) {
-+ sock_release(nsock);
-+ return;
-+ }
-+
-+ /* Set our callbacks */
-+ nsock->sk->data_ready = rfcomm_l2data_ready;
-+ nsock->sk->state_change = rfcomm_l2state_change;
-+
-+ s = rfcomm_session_add(nsock, BT_OPEN);
-+ if (s)
-+ rfcomm_session_hold(s);
-+ else
-+ sock_release(nsock);
-+}
-+
-+static inline void rfcomm_check_connection(struct rfcomm_session *s)
-+{
-+ struct sock *sk = s->sock->sk;
-+
-+ BT_DBG("%p state %ld", s, s->state);
-+
-+ switch(sk->state) {
-+ case BT_CONNECTED:
-+ s->state = BT_CONNECT;
-+
-+ /* We can adjust MTU on outgoing sessions.
-+ * L2CAP MTU minus UIH header and FCS. */
-+ s->mtu = min(l2cap_pi(sk)->omtu, l2cap_pi(sk)->imtu) - 5;
-+
-+ rfcomm_send_sabm(s, 0);
-+ break;
-+
-+ case BT_CLOSED:
-+ s->state = BT_CLOSED;
-+ rfcomm_session_close(s, sk->err);
-+ break;
-+ }
-+}
-+
-+static inline void rfcomm_process_sessions(void)
-+{
-+ struct list_head *p, *n;
-+
-+ rfcomm_lock();
-+
-+ list_for_each_safe(p, n, &session_list) {
-+ struct rfcomm_session *s;
-+ s = list_entry(p, struct rfcomm_session, list);
-+
-+ if (s->state == BT_LISTEN) {
-+ rfcomm_accept_connection(s);
-+ continue;
-+ }
-+
-+ rfcomm_session_hold(s);
-+
-+ switch (s->state) {
-+ case BT_BOUND:
-+ rfcomm_check_connection(s);
-+ break;
-+
-+ default:
-+ rfcomm_process_rx(s);
-+ break;
-+ }
-+
-+ rfcomm_process_dlcs(s);
-+
-+ rfcomm_session_put(s);
-+ }
-+
-+ rfcomm_unlock();
-+}
-+
-+static void rfcomm_worker(void)
-+{
-+ BT_DBG("");
-+
-+ daemonize(); reparent_to_init();
-+ set_fs(KERNEL_DS);
-+
-+ while (!atomic_read(&terminate)) {
-+ BT_DBG("worker loop event 0x%lx", rfcomm_event);
-+
-+ if (!test_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event)) {
-+ /* No pending events. Let's sleep.
-+ * Incomming connections and data will wake us up. */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule();
-+ }
-+
-+ /* Process stuff */
-+ clear_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
-+ rfcomm_process_sessions();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ return;
-+}
-+
-+static int rfcomm_add_listener(bdaddr_t *ba)
-+{
-+ struct sockaddr_l2 addr;
-+ struct l2cap_options opts;
-+ struct socket *sock;
-+ struct rfcomm_session *s;
-+ int size, err = 0;
-+
-+ /* Create socket */
-+ err = rfcomm_l2sock_create(&sock);
-+ if (err < 0) {
-+ BT_ERR("Create socket failed %d", err);
-+ return err;
-+ }
-+
-+ /* Bind socket */
-+ bacpy(&addr.l2_bdaddr, ba);
-+ addr.l2_family = AF_BLUETOOTH;
-+ addr.l2_psm = htobs(RFCOMM_PSM);
-+ err = sock->ops->bind(sock, (struct sockaddr *) &addr, sizeof(addr));
-+ if (err < 0) {
-+ BT_ERR("Bind failed %d", err);
-+ goto failed;
-+ }
-+
-+ /* Set L2CAP options */
-+ size = sizeof(opts);
-+ sock->ops->getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, &size);
-+
-+ opts.imtu = RFCOMM_MAX_L2CAP_MTU;
-+ sock->ops->setsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, size);
-+
-+ /* Start listening on the socket */
-+ err = sock->ops->listen(sock, 10);
-+ if (err) {
-+ BT_ERR("Listen failed %d", err);
-+ goto failed;
-+ }
-+
-+ /* Add listening session */
-+ s = rfcomm_session_add(sock, BT_LISTEN);
-+ if (!s)
-+ goto failed;
-+
-+ rfcomm_session_hold(s);
-+ return 0;
-+failed:
-+ sock_release(sock);
-+ return err;
-+}
-+
-+static void rfcomm_kill_listener(void)
-+{
-+ struct rfcomm_session *s;
-+ struct list_head *p, *n;
-+
-+ BT_DBG("");
-+
-+ list_for_each_safe(p, n, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ rfcomm_session_del(s);
-+ }
-+}
-+
-+static int rfcomm_run(void *unused)
-+{
-+ rfcomm_thread = current;
-+
-+ atomic_inc(&running);
-+
-+ daemonize(); reparent_to_init();
-+
-+ sigfillset(&current->blocked);
-+ set_fs(KERNEL_DS);
-+
-+ sprintf(current->comm, "krfcommd");
-+
-+ BT_DBG("");
-+
-+ rfcomm_add_listener(BDADDR_ANY);
-+
-+ rfcomm_worker();
-+
-+ rfcomm_kill_listener();
-+
-+ atomic_dec(&running);
-+ return 0;
-+}
-+
-+/* ---- Proc fs support ---- */
-+static int rfcomm_dlc_dump(char *buf)
-+{
-+ struct rfcomm_session *s;
-+ struct sock *sk;
-+ struct list_head *p, *pp;
-+ char *ptr = buf;
-+
-+ rfcomm_lock();
-+
-+ list_for_each(p, &session_list) {
-+ s = list_entry(p, struct rfcomm_session, list);
-+ sk = s->sock->sk;
-+
-+ list_for_each(pp, &s->dlcs) {
-+ struct rfcomm_dlc *d;
-+ d = list_entry(pp, struct rfcomm_dlc, list);
-+
-+ ptr += sprintf(ptr, "dlc %s %s %ld %d %d %d %d\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ d->state, d->dlci, d->mtu, d->rx_credits, d->tx_credits);
-+ }
-+ }
-+
-+ rfcomm_unlock();
-+
-+ return ptr - buf;
-+}
-+
-+extern int rfcomm_sock_dump(char *buf);
-+
-+static int rfcomm_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
-+{
-+ char *ptr = buf;
-+ int len;
-+
-+ BT_DBG("count %d, offset %ld", count, offset);
-+
-+ ptr += rfcomm_dlc_dump(ptr);
-+ ptr += rfcomm_sock_dump(ptr);
-+ len = ptr - buf;
-+
-+ if (len <= count + offset)
-+ *eof = 1;
-+
-+ *start = buf + offset;
-+ len -= offset;
-+
-+ if (len > count)
-+ len = count;
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+
-+/* ---- Initialization ---- */
-+int __init rfcomm_init(void)
-+{
-+ l2cap_load();
-+
-+ kernel_thread(rfcomm_run, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-+
-+ rfcomm_init_sockets();
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ rfcomm_init_ttys();
-+#endif
-+
-+ create_proc_read_entry("bluetooth/rfcomm", 0, 0, rfcomm_read_proc, NULL);
-+
-+ BT_INFO("BlueZ RFCOMM ver %s", VERSION);
-+ BT_INFO("Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>");
-+ BT_INFO("Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>");
-+ return 0;
-+}
-+
-+void rfcomm_cleanup(void)
-+{
-+ /* Terminate working thread.
-+ * ie. Set terminate flag and wake it up */
-+ atomic_inc(&terminate);
-+ rfcomm_schedule(RFCOMM_SCHED_STATE);
-+
-+ /* Wait until thread is running */
-+ while (atomic_read(&running))
-+ schedule();
-+
-+ remove_proc_entry("bluetooth/rfcomm", NULL);
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ rfcomm_cleanup_ttys();
-+#endif
-+
-+ rfcomm_cleanup_sockets();
-+ return;
-+}
-+
-+module_init(rfcomm_init);
-+module_exit(rfcomm_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>");
-+MODULE_DESCRIPTION("BlueZ RFCOMM ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/crc.c linux-2.4.18-mh9/net/bluetooth/rfcomm/crc.c
---- linux-2.4.18/net/bluetooth/rfcomm/crc.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/rfcomm/crc.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,71 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM FCS calculation.
-+ *
-+ * $Id: crc.c,v 1.2 2002/09/21 09:54:32 holtmann Exp $
-+ */
-+
-+/* reversed, 8-bit, poly=0x07 */
-+unsigned char rfcomm_crc_table[256] = {
-+ 0x00, 0x91, 0xe3, 0x72, 0x07, 0x96, 0xe4, 0x75,
-+ 0x0e, 0x9f, 0xed, 0x7c, 0x09, 0x98, 0xea, 0x7b,
-+ 0x1c, 0x8d, 0xff, 0x6e, 0x1b, 0x8a, 0xf8, 0x69,
-+ 0x12, 0x83, 0xf1, 0x60, 0x15, 0x84, 0xf6, 0x67,
-+
-+ 0x38, 0xa9, 0xdb, 0x4a, 0x3f, 0xae, 0xdc, 0x4d,
-+ 0x36, 0xa7, 0xd5, 0x44, 0x31, 0xa0, 0xd2, 0x43,
-+ 0x24, 0xb5, 0xc7, 0x56, 0x23, 0xb2, 0xc0, 0x51,
-+ 0x2a, 0xbb, 0xc9, 0x58, 0x2d, 0xbc, 0xce, 0x5f,
-+
-+ 0x70, 0xe1, 0x93, 0x02, 0x77, 0xe6, 0x94, 0x05,
-+ 0x7e, 0xef, 0x9d, 0x0c, 0x79, 0xe8, 0x9a, 0x0b,
-+ 0x6c, 0xfd, 0x8f, 0x1e, 0x6b, 0xfa, 0x88, 0x19,
-+ 0x62, 0xf3, 0x81, 0x10, 0x65, 0xf4, 0x86, 0x17,
-+
-+ 0x48, 0xd9, 0xab, 0x3a, 0x4f, 0xde, 0xac, 0x3d,
-+ 0x46, 0xd7, 0xa5, 0x34, 0x41, 0xd0, 0xa2, 0x33,
-+ 0x54, 0xc5, 0xb7, 0x26, 0x53, 0xc2, 0xb0, 0x21,
-+ 0x5a, 0xcb, 0xb9, 0x28, 0x5d, 0xcc, 0xbe, 0x2f,
-+
-+ 0xe0, 0x71, 0x03, 0x92, 0xe7, 0x76, 0x04, 0x95,
-+ 0xee, 0x7f, 0x0d, 0x9c, 0xe9, 0x78, 0x0a, 0x9b,
-+ 0xfc, 0x6d, 0x1f, 0x8e, 0xfb, 0x6a, 0x18, 0x89,
-+ 0xf2, 0x63, 0x11, 0x80, 0xf5, 0x64, 0x16, 0x87,
-+
-+ 0xd8, 0x49, 0x3b, 0xaa, 0xdf, 0x4e, 0x3c, 0xad,
-+ 0xd6, 0x47, 0x35, 0xa4, 0xd1, 0x40, 0x32, 0xa3,
-+ 0xc4, 0x55, 0x27, 0xb6, 0xc3, 0x52, 0x20, 0xb1,
-+ 0xca, 0x5b, 0x29, 0xb8, 0xcd, 0x5c, 0x2e, 0xbf,
-+
-+ 0x90, 0x01, 0x73, 0xe2, 0x97, 0x06, 0x74, 0xe5,
-+ 0x9e, 0x0f, 0x7d, 0xec, 0x99, 0x08, 0x7a, 0xeb,
-+ 0x8c, 0x1d, 0x6f, 0xfe, 0x8b, 0x1a, 0x68, 0xf9,
-+ 0x82, 0x13, 0x61, 0xf0, 0x85, 0x14, 0x66, 0xf7,
-+
-+ 0xa8, 0x39, 0x4b, 0xda, 0xaf, 0x3e, 0x4c, 0xdd,
-+ 0xa6, 0x37, 0x45, 0xd4, 0xa1, 0x30, 0x42, 0xd3,
-+ 0xb4, 0x25, 0x57, 0xc6, 0xb3, 0x22, 0x50, 0xc1,
-+ 0xba, 0x2b, 0x59, 0xc8, 0xbd, 0x2c, 0x5e, 0xcf
-+};
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/sock.c linux-2.4.18-mh9/net/bluetooth/rfcomm/sock.c
---- linux-2.4.18/net/bluetooth/rfcomm/sock.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/rfcomm/sock.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,847 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM sockets.
-+ *
-+ * $Id: sock.c,v 1.30 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/socket.h>
-+#include <linux/skbuff.h>
-+#include <linux/list.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+static struct proto_ops rfcomm_sock_ops;
-+
-+static struct bluez_sock_list rfcomm_sk_list = {
-+ lock: RW_LOCK_UNLOCKED
-+};
-+
-+static void rfcomm_sock_close(struct sock *sk);
-+static void rfcomm_sock_kill(struct sock *sk);
-+
-+/* ---- DLC callbacks ----
-+ *
-+ * called under rfcomm_dlc_lock()
-+ */
-+static void rfcomm_sk_data_ready(struct rfcomm_dlc *d, struct sk_buff *skb)
-+{
-+ struct sock *sk = d->owner;
-+ if (!sk)
-+ return;
-+
-+ atomic_add(skb->len, &sk->rmem_alloc);
-+ skb_queue_tail(&sk->receive_queue, skb);
-+ sk->data_ready(sk, skb->len);
-+
-+ if (atomic_read(&sk->rmem_alloc) >= sk->rcvbuf)
-+ rfcomm_dlc_throttle(d);
-+}
-+
-+static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err)
-+{
-+ struct sock *sk = d->owner, *parent;
-+ if (!sk)
-+ return;
-+
-+ BT_DBG("dlc %p state %ld err %d", d, d->state, err);
-+
-+ bh_lock_sock(sk);
-+
-+ if (err)
-+ sk->err = err;
-+ sk->state = d->state;
-+
-+ parent = bluez_pi(sk)->parent;
-+ if (!parent) {
-+ if (d->state == BT_CONNECTED)
-+ rfcomm_session_getaddr(d->session, &bluez_pi(sk)->src, NULL);
-+ sk->state_change(sk);
-+ } else
-+ parent->data_ready(parent, 0);
-+
-+ bh_unlock_sock(sk);
-+}
-+
-+/* ---- Socket functions ---- */
-+static struct sock *__rfcomm_get_sock_by_addr(u8 channel, bdaddr_t *src)
-+{
-+ struct sock *sk;
-+
-+ for (sk = rfcomm_sk_list.head; sk; sk = sk->next) {
-+ if (rfcomm_pi(sk)->channel == channel &&
-+ !bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+ }
-+
-+ return sk;
-+}
-+
-+/* Find socket with channel and source bdaddr.
-+ * Returns closest match.
-+ */
-+static struct sock *__rfcomm_get_sock_by_channel(int state, u8 channel, bdaddr_t *src)
-+{
-+ struct sock *sk, *sk1 = NULL;
-+
-+ for (sk = rfcomm_sk_list.head; sk; sk = sk->next) {
-+ if (state && sk->state != state)
-+ continue;
-+
-+ if (rfcomm_pi(sk)->channel == channel) {
-+ /* Exact match. */
-+ if (!bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+
-+ /* Closest match */
-+ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ sk1 = sk;
-+ }
-+ }
-+ return sk ? sk : sk1;
-+}
-+
-+/* Find socket with given address (channel, src).
-+ * Returns locked socket */
-+static inline struct sock *rfcomm_get_sock_by_channel(int state, u8 channel, bdaddr_t *src)
-+{
-+ struct sock *s;
-+ read_lock(&rfcomm_sk_list.lock);
-+ s = __rfcomm_get_sock_by_channel(state, channel, src);
-+ if (s) bh_lock_sock(s);
-+ read_unlock(&rfcomm_sk_list.lock);
-+ return s;
-+}
-+
-+static void rfcomm_sock_destruct(struct sock *sk)
-+{
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+
-+ BT_DBG("sk %p dlc %p", sk, d);
-+
-+ skb_queue_purge(&sk->receive_queue);
-+ skb_queue_purge(&sk->write_queue);
-+
-+ rfcomm_dlc_lock(d);
-+ rfcomm_pi(sk)->dlc = NULL;
-+
-+ /* Detach DLC if it's owned by this socket */
-+ if (d->owner == sk)
-+ d->owner = NULL;
-+ rfcomm_dlc_unlock(d);
-+
-+ rfcomm_dlc_put(d);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void rfcomm_sock_cleanup_listen(struct sock *parent)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ /* Close not yet accepted dlcs */
-+ while ((sk = bluez_accept_dequeue(parent, NULL))) {
-+ rfcomm_sock_close(sk);
-+ rfcomm_sock_kill(sk);
-+ }
-+
-+ parent->state = BT_CLOSED;
-+ parent->zapped = 1;
-+}
-+
-+/* Kill socket (only if zapped and orphan)
-+ * Must be called on unlocked socket.
-+ */
-+static void rfcomm_sock_kill(struct sock *sk)
-+{
-+ if (!sk->zapped || sk->socket)
-+ return;
-+
-+ BT_DBG("sk %p state %d refcnt %d", sk, sk->state, atomic_read(&sk->refcnt));
-+
-+ /* Kill poor orphan */
-+ bluez_sock_unlink(&rfcomm_sk_list, sk);
-+ sk->dead = 1;
-+ sock_put(sk);
-+}
-+
-+static void __rfcomm_sock_close(struct sock *sk)
-+{
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+
-+ BT_DBG("sk %p state %d socket %p", sk, sk->state, sk->socket);
-+
-+ switch (sk->state) {
-+ case BT_LISTEN:
-+ rfcomm_sock_cleanup_listen(sk);
-+ break;
-+
-+ case BT_CONNECT:
-+ case BT_CONNECT2:
-+ case BT_CONFIG:
-+ case BT_CONNECTED:
-+ rfcomm_dlc_close(d, 0);
-+
-+ default:
-+ sk->zapped = 1;
-+ break;
-+ }
-+}
-+
-+/* Close socket.
-+ * Must be called on unlocked socket.
-+ */
-+static void rfcomm_sock_close(struct sock *sk)
-+{
-+ lock_sock(sk);
-+ __rfcomm_sock_close(sk);
-+ release_sock(sk);
-+}
-+
-+static void rfcomm_sock_init(struct sock *sk, struct sock *parent)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ if (parent)
-+ sk->type = parent->type;
-+}
-+
-+static struct sock *rfcomm_sock_alloc(struct socket *sock, int proto, int prio)
-+{
-+ struct rfcomm_dlc *d;
-+ struct sock *sk;
-+
-+ sk = sk_alloc(PF_BLUETOOTH, prio, 1);
-+ if (!sk)
-+ return NULL;
-+
-+ d = rfcomm_dlc_alloc(prio);
-+ if (!d) {
-+ sk_free(sk);
-+ return NULL;
-+ }
-+ d->data_ready = rfcomm_sk_data_ready;
-+ d->state_change = rfcomm_sk_state_change;
-+
-+ rfcomm_pi(sk)->dlc = d;
-+ d->owner = sk;
-+
-+ bluez_sock_init(sock, sk);
-+
-+ sk->zapped = 0;
-+
-+ sk->destruct = rfcomm_sock_destruct;
-+ sk->sndtimeo = RFCOMM_CONN_TIMEOUT;
-+
-+ sk->sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10;
-+ sk->rcvbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10;
-+
-+ sk->protocol = proto;
-+ sk->state = BT_OPEN;
-+
-+ bluez_sock_link(&rfcomm_sk_list, sk);
-+
-+ BT_DBG("sk %p", sk);
-+
-+ MOD_INC_USE_COUNT;
-+ return sk;
-+}
-+
-+static int rfcomm_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ sock->state = SS_UNCONNECTED;
-+
-+ if (sock->type != SOCK_STREAM && sock->type != SOCK_RAW)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &rfcomm_sock_ops;
-+
-+ if (!(sk = rfcomm_sock_alloc(sock, protocol, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ rfcomm_sock_init(sk, NULL);
-+ return 0;
-+}
-+
-+static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p %s", sk, batostr(&sa->rc_bdaddr));
-+
-+ if (!addr || addr->sa_family != AF_BLUETOOTH)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_OPEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ write_lock_bh(&rfcomm_sk_list.lock);
-+
-+ if (sa->rc_channel && __rfcomm_get_sock_by_addr(sa->rc_channel, &sa->rc_bdaddr)) {
-+ err = -EADDRINUSE;
-+ } else {
-+ /* Save source address */
-+ bacpy(&bluez_pi(sk)->src, &sa->rc_bdaddr);
-+ rfcomm_pi(sk)->channel = sa->rc_channel;
-+ sk->state = BT_BOUND;
-+ }
-+
-+ write_unlock_bh(&rfcomm_sk_list.lock);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_rc))
-+ return -EINVAL;
-+
-+ if (sk->state != BT_OPEN && sk->state != BT_BOUND)
-+ return -EBADFD;
-+
-+ if (sk->type != SOCK_STREAM)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ sk->state = BT_CONNECT;
-+ bacpy(&bluez_pi(sk)->dst, &sa->rc_bdaddr);
-+ rfcomm_pi(sk)->channel = sa->rc_channel;
-+
-+ err = rfcomm_dlc_open(d, &bluez_pi(sk)->src, &sa->rc_bdaddr, sa->rc_channel);
-+ if (!err)
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int rfcomm_sock_listen(struct socket *sock, int backlog)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p backlog %d", sk, backlog);
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_BOUND) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ sk->max_ack_backlog = backlog;
-+ sk->ack_backlog = 0;
-+ sk->state = BT_LISTEN;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int flags)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct sock *sk = sock->sk, *nsk;
-+ long timeo;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
-+
-+ BT_DBG("sk %p timeo %ld", sk, timeo);
-+
-+ /* Wait for an incoming connection. (wake-one). */
-+ add_wait_queue_exclusive(sk->sleep, &wait);
-+ while (!(nsk = bluez_accept_dequeue(sk, newsock))) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ if (err)
-+ goto done;
-+
-+ newsock->state = SS_CONNECTED;
-+
-+ BT_DBG("new socket %p", nsk);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
-+{
-+ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ sa->rc_family = AF_BLUETOOTH;
-+ sa->rc_channel = rfcomm_pi(sk)->channel;
-+ if (peer)
-+ bacpy(&sa->rc_bdaddr, &bluez_pi(sk)->dst);
-+ else
-+ bacpy(&sa->rc_bdaddr, &bluez_pi(sk)->src);
-+
-+ *len = sizeof(struct sockaddr_rc);
-+ return 0;
-+}
-+
-+static int rfcomm_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len,
-+ struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
-+ struct sk_buff *skb;
-+ int err, size;
-+ int sent = 0;
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ if (sk->shutdown & SEND_SHUTDOWN)
-+ return -EPIPE;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ lock_sock(sk);
-+
-+ while (len) {
-+ size = min_t(uint, len, d->mtu);
-+
-+ skb = sock_alloc_send_skb(sk, size + RFCOMM_SKB_RESERVE,
-+ msg->msg_flags & MSG_DONTWAIT, &err);
-+ if (!skb)
-+ break;
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size);
-+ if (err) {
-+ kfree_skb(skb);
-+ sent = err;
-+ break;
-+ }
-+
-+ err = rfcomm_dlc_send(d, skb);
-+ if (err < 0) {
-+ kfree_skb(skb);
-+ break;
-+ }
-+
-+ sent += size;
-+ len -= size;
-+ }
-+
-+ release_sock(sk);
-+
-+ return sent ? sent : err;
-+}
-+
-+static long rfcomm_sock_data_wait(struct sock *sk, long timeo)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+
-+ add_wait_queue(sk->sleep, &wait);
-+ for (;;) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (skb_queue_len(&sk->receive_queue) || sk->err || (sk->shutdown & RCV_SHUTDOWN) ||
-+ signal_pending(current) || !timeo)
-+ break;
-+
-+ set_bit(SOCK_ASYNC_WAITDATA, &sk->socket->flags);
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+ clear_bit(SOCK_ASYNC_WAITDATA, &sk->socket->flags);
-+ }
-+
-+ __set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+ return timeo;
-+}
-+
-+static int rfcomm_sock_recvmsg(struct socket *sock, struct msghdr *msg, int size,
-+ int flags, struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ int target, err = 0, copied = 0;
-+ long timeo;
-+
-+ if (flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ msg->msg_namelen = 0;
-+
-+ BT_DBG("sk %p size %d", sk, size);
-+
-+ lock_sock(sk);
-+
-+ target = sock_rcvlowat(sk, flags & MSG_WAITALL, size);
-+ timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT);
-+
-+ do {
-+ struct sk_buff *skb;
-+ int chunk;
-+
-+ skb = skb_dequeue(&sk->receive_queue);
-+ if (!skb) {
-+ if (copied >= target)
-+ break;
-+
-+ if ((err = sock_error(sk)) != 0)
-+ break;
-+ if (sk->shutdown & RCV_SHUTDOWN)
-+ break;
-+
-+ err = -EAGAIN;
-+ if (!timeo)
-+ break;
-+
-+ timeo = rfcomm_sock_data_wait(sk, timeo);
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ goto out;
-+ }
-+ continue;
-+ }
-+
-+ chunk = min_t(unsigned int, skb->len, size);
-+ if (memcpy_toiovec(msg->msg_iov, skb->data, chunk)) {
-+ skb_queue_head(&sk->receive_queue, skb);
-+ if (!copied)
-+ copied = -EFAULT;
-+ break;
-+ }
-+ copied += chunk;
-+ size -= chunk;
-+
-+ if (!(flags & MSG_PEEK)) {
-+ atomic_sub(chunk, &sk->rmem_alloc);
-+
-+ skb_pull(skb, chunk);
-+ if (skb->len) {
-+ skb_queue_head(&sk->receive_queue, skb);
-+ break;
-+ }
-+ kfree_skb(skb);
-+
-+ } else {
-+ /* put message back and return */
-+ skb_queue_head(&sk->receive_queue, skb);
-+ break;
-+ }
-+ } while (size);
-+
-+out:
-+ if (atomic_read(&sk->rmem_alloc) <= (sk->rcvbuf >> 2))
-+ rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc);
-+
-+ release_sock(sk);
-+ return copied ? : err;
-+}
-+
-+static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ int len, err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (get_user(len, optlen))
-+ return -EFAULT;
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
-+{
-+ struct sock *sk = sock->sk;
-+ int err;
-+
-+ lock_sock(sk);
-+
-+#ifdef CONFIG_BLUEZ_RFCOMM_TTY
-+ err = rfcomm_dev_ioctl(sk, cmd, arg);
-+#else
-+ err = -EOPNOTSUPP;
-+#endif
-+
-+ release_sock(sk);
-+
-+ return err;
-+}
-+
-+static int rfcomm_sock_shutdown(struct socket *sock, int how)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk) return 0;
-+
-+ lock_sock(sk);
-+ if (!sk->shutdown) {
-+ sk->shutdown = SHUTDOWN_MASK;
-+ __rfcomm_sock_close(sk);
-+
-+ if (sk->linger)
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ }
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int rfcomm_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ err = rfcomm_sock_shutdown(sock, 2);
-+
-+ sock_orphan(sk);
-+ rfcomm_sock_kill(sk);
-+ return err;
-+}
-+
-+/* ---- RFCOMM core layer callbacks ----
-+ *
-+ * called under rfcomm_lock()
-+ */
-+int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc **d)
-+{
-+ struct sock *sk, *parent;
-+ bdaddr_t src, dst;
-+ int result = 0;
-+
-+ BT_DBG("session %p channel %d", s, channel);
-+
-+ rfcomm_session_getaddr(s, &src, &dst);
-+
-+ /* Check if we have socket listening on this channel */
-+ parent = rfcomm_get_sock_by_channel(BT_LISTEN, channel, &src);
-+ if (!parent)
-+ return 0;
-+
-+ /* Check for backlog size */
-+ if (parent->ack_backlog > parent->max_ack_backlog) {
-+ BT_DBG("backlog full %d", parent->ack_backlog);
-+ goto done;
-+ }
-+
-+ sk = rfcomm_sock_alloc(NULL, BTPROTO_RFCOMM, GFP_ATOMIC);
-+ if (!sk)
-+ goto done;
-+
-+ rfcomm_sock_init(sk, parent);
-+ bacpy(&bluez_pi(sk)->src, &src);
-+ bacpy(&bluez_pi(sk)->dst, &dst);
-+ rfcomm_pi(sk)->channel = channel;
-+
-+ sk->state = BT_CONFIG;
-+ bluez_accept_enqueue(parent, sk);
-+
-+ /* Accept connection and return socket DLC */
-+ *d = rfcomm_pi(sk)->dlc;
-+ result = 1;
-+
-+done:
-+ bh_unlock_sock(parent);
-+ return result;
-+}
-+
-+/* ---- Proc fs support ---- */
-+int rfcomm_sock_dump(char *buf)
-+{
-+ struct bluez_sock_list *list = &rfcomm_sk_list;
-+ struct rfcomm_pinfo *pi;
-+ struct sock *sk;
-+ char *ptr = buf;
-+
-+ write_lock_bh(&list->lock);
-+
-+ for (sk = list->head; sk; sk = sk->next) {
-+ pi = rfcomm_pi(sk);
-+ ptr += sprintf(ptr, "sk %s %s %d %d\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ sk->state, rfcomm_pi(sk)->channel);
-+ }
-+
-+ write_unlock_bh(&list->lock);
-+
-+ return ptr - buf;
-+}
-+
-+static struct proto_ops rfcomm_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: rfcomm_sock_release,
-+ bind: rfcomm_sock_bind,
-+ connect: rfcomm_sock_connect,
-+ listen: rfcomm_sock_listen,
-+ accept: rfcomm_sock_accept,
-+ getname: rfcomm_sock_getname,
-+ sendmsg: rfcomm_sock_sendmsg,
-+ recvmsg: rfcomm_sock_recvmsg,
-+ shutdown: rfcomm_sock_shutdown,
-+ setsockopt: rfcomm_sock_setsockopt,
-+ getsockopt: rfcomm_sock_getsockopt,
-+ ioctl: rfcomm_sock_ioctl,
-+ poll: bluez_sock_poll,
-+ socketpair: sock_no_socketpair,
-+ mmap: sock_no_mmap
-+};
-+
-+static struct net_proto_family rfcomm_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: rfcomm_sock_create
-+};
-+
-+int rfcomm_init_sockets(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_RFCOMM, &rfcomm_sock_family_ops))) {
-+ BT_ERR("Can't register RFCOMM socket layer");
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+void rfcomm_cleanup_sockets(void)
-+{
-+ int err;
-+
-+ /* Unregister socket, protocol and notifier */
-+ if ((err = bluez_sock_unregister(BTPROTO_RFCOMM)))
-+ BT_ERR("Can't unregister RFCOMM socket layer %d", err);
-+}
-diff -urN linux-2.4.18/net/bluetooth/rfcomm/tty.c linux-2.4.18-mh9/net/bluetooth/rfcomm/tty.c
---- linux-2.4.18/net/bluetooth/rfcomm/tty.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/rfcomm/tty.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,945 @@
-+/*
-+ RFCOMM implementation for Linux Bluetooth stack (BlueZ).
-+ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
-+ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * RFCOMM TTY.
-+ *
-+ * $Id: tty.c,v 1.26 2002/10/18 20:12:12 maxk Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/tty.h>
-+#include <linux/tty_driver.h>
-+#include <linux/tty_flip.h>
-+
-+#include <linux/slab.h>
-+#include <linux/skbuff.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/rfcomm.h>
-+
-+#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG
-+#undef BT_DBG
-+#define BT_DBG(D...)
-+#endif
-+
-+#define RFCOMM_TTY_MAGIC 0x6d02 /* magic number for rfcomm struct */
-+#define RFCOMM_TTY_PORTS RFCOMM_MAX_DEV /* whole lotta rfcomm devices */
-+#define RFCOMM_TTY_MAJOR 216 /* device node major id of the usb/bluetooth.c driver */
-+#define RFCOMM_TTY_MINOR 0
-+
-+struct rfcomm_dev {
-+ struct list_head list;
-+ atomic_t refcnt;
-+
-+ char name[12];
-+ int id;
-+ unsigned long flags;
-+ int opened;
-+ int err;
-+
-+ bdaddr_t src;
-+ bdaddr_t dst;
-+ u8 channel;
-+
-+ uint modem_status;
-+
-+ struct rfcomm_dlc *dlc;
-+ struct tty_struct *tty;
-+ wait_queue_head_t wait;
-+ struct tasklet_struct wakeup_task;
-+
-+ atomic_t wmem_alloc;
-+};
-+
-+static LIST_HEAD(rfcomm_dev_list);
-+static rwlock_t rfcomm_dev_lock = RW_LOCK_UNLOCKED;
-+
-+static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb);
-+static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err);
-+static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig);
-+
-+static void rfcomm_tty_wakeup(unsigned long arg);
-+
-+/* ---- Device functions ---- */
-+static void rfcomm_dev_destruct(struct rfcomm_dev *dev)
-+{
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+
-+ BT_DBG("dev %p dlc %p", dev, dlc);
-+
-+ rfcomm_dlc_lock(dlc);
-+ /* Detach DLC if it's owned by this dev */
-+ if (dlc->owner == dev)
-+ dlc->owner = NULL;
-+ rfcomm_dlc_unlock(dlc);
-+
-+ rfcomm_dlc_put(dlc);
-+ kfree(dev);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static inline void rfcomm_dev_hold(struct rfcomm_dev *dev)
-+{
-+ atomic_inc(&dev->refcnt);
-+}
-+
-+static inline void rfcomm_dev_put(struct rfcomm_dev *dev)
-+{
-+ if (atomic_dec_and_test(&dev->refcnt))
-+ rfcomm_dev_destruct(dev);
-+}
-+
-+static struct rfcomm_dev *__rfcomm_dev_get(int id)
-+{
-+ struct rfcomm_dev *dev;
-+ struct list_head *p;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ dev = list_entry(p, struct rfcomm_dev, list);
-+ if (dev->id == id)
-+ return dev;
-+ }
-+
-+ return NULL;
-+}
-+
-+static inline struct rfcomm_dev *rfcomm_dev_get(int id)
-+{
-+ struct rfcomm_dev *dev;
-+
-+ read_lock(&rfcomm_dev_lock);
-+ dev = __rfcomm_dev_get(id);
-+ read_unlock(&rfcomm_dev_lock);
-+
-+ if (dev) rfcomm_dev_hold(dev);
-+ return dev;
-+}
-+
-+static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
-+{
-+ struct rfcomm_dev *dev;
-+ struct list_head *head = &rfcomm_dev_list, *p;
-+ int err = 0;
-+
-+ BT_DBG("id %d channel %d", req->dev_id, req->channel);
-+
-+ dev = kmalloc(sizeof(struct rfcomm_dev), GFP_KERNEL);
-+ if (!dev)
-+ return -ENOMEM;
-+ memset(dev, 0, sizeof(struct rfcomm_dev));
-+
-+ write_lock_bh(&rfcomm_dev_lock);
-+
-+ if (req->dev_id < 0) {
-+ dev->id = 0;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ if (list_entry(p, struct rfcomm_dev, list)->id != dev->id)
-+ break;
-+
-+ dev->id++;
-+ head = p;
-+ }
-+ } else {
-+ dev->id = req->dev_id;
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ struct rfcomm_dev *entry = list_entry(p, struct rfcomm_dev, list);
-+
-+ if (entry->id == dev->id) {
-+ err = -EADDRINUSE;
-+ goto out;
-+ }
-+
-+ if (entry->id > dev->id - 1)
-+ break;
-+
-+ head = p;
-+ }
-+ }
-+
-+ if ((dev->id < 0) || (dev->id > RFCOMM_MAX_DEV - 1)) {
-+ err = -ENFILE;
-+ goto out;
-+ }
-+
-+ sprintf(dev->name, "rfcomm%d", dev->id);
-+
-+ list_add(&dev->list, head);
-+ atomic_set(&dev->refcnt, 1);
-+
-+ bacpy(&dev->src, &req->src);
-+ bacpy(&dev->dst, &req->dst);
-+ dev->channel = req->channel;
-+
-+ dev->flags = req->flags &
-+ ((1 << RFCOMM_RELEASE_ONHUP) | (1 << RFCOMM_REUSE_DLC));
-+
-+ init_waitqueue_head(&dev->wait);
-+ tasklet_init(&dev->wakeup_task, rfcomm_tty_wakeup, (unsigned long) dev);
-+
-+ rfcomm_dlc_lock(dlc);
-+ dlc->data_ready = rfcomm_dev_data_ready;
-+ dlc->state_change = rfcomm_dev_state_change;
-+ dlc->modem_status = rfcomm_dev_modem_status;
-+
-+ dlc->owner = dev;
-+ dev->dlc = dlc;
-+ rfcomm_dlc_unlock(dlc);
-+
-+ MOD_INC_USE_COUNT;
-+
-+out:
-+ write_unlock_bh(&rfcomm_dev_lock);
-+
-+ if (err) {
-+ kfree(dev);
-+ return err;
-+ } else
-+ return dev->id;
-+}
-+
-+static void rfcomm_dev_del(struct rfcomm_dev *dev)
-+{
-+ BT_DBG("dev %p", dev);
-+
-+ write_lock_bh(&rfcomm_dev_lock);
-+ list_del_init(&dev->list);
-+ write_unlock_bh(&rfcomm_dev_lock);
-+
-+ rfcomm_dev_put(dev);
-+}
-+
-+/* ---- Send buffer ---- */
-+
-+static inline unsigned int rfcomm_room(struct rfcomm_dlc *dlc)
-+{
-+ /* We can't let it be zero, because we don't get a callback
-+ when tx_credits becomes nonzero, hence we'd never wake up */
-+ return dlc->mtu * (dlc->tx_credits?:1);
-+}
-+
-+static void rfcomm_wfree(struct sk_buff *skb)
-+{
-+ struct rfcomm_dev *dev = (void *) skb->sk;
-+ atomic_sub(skb->truesize, &dev->wmem_alloc);
-+ if (test_bit(RFCOMM_TTY_ATTACHED, &dev->flags))
-+ tasklet_schedule(&dev->wakeup_task);
-+ rfcomm_dev_put(dev);
-+}
-+
-+static inline void rfcomm_set_owner_w(struct sk_buff *skb, struct rfcomm_dev *dev)
-+{
-+ rfcomm_dev_hold(dev);
-+ atomic_add(skb->truesize, &dev->wmem_alloc);
-+ skb->sk = (void *) dev;
-+ skb->destructor = rfcomm_wfree;
-+}
-+
-+static struct sk_buff *rfcomm_wmalloc(struct rfcomm_dev *dev, unsigned long size, int force, int priority)
-+{
-+ if (force || atomic_read(&dev->wmem_alloc) < rfcomm_room(dev->dlc)) {
-+ struct sk_buff *skb = alloc_skb(size, priority);
-+ if (skb) {
-+ rfcomm_set_owner_w(skb, dev);
-+ return skb;
-+ }
-+ }
-+ return NULL;
-+}
-+
-+/* ---- Device IOCTLs ---- */
-+
-+#define NOCAP_FLAGS ((1 << RFCOMM_REUSE_DLC) | (1 << RFCOMM_RELEASE_ONHUP))
-+
-+static int rfcomm_create_dev(struct sock *sk, unsigned long arg)
-+{
-+ struct rfcomm_dev_req req;
-+ struct rfcomm_dlc *dlc;
-+ int id;
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ BT_DBG("sk %p dev_id %id flags 0x%x", sk, req.dev_id, req.flags);
-+
-+ if (req.flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN))
-+ return -EPERM;
-+
-+ if (req.flags & (1 << RFCOMM_REUSE_DLC)) {
-+ /* Socket must be connected */
-+ if (sk->state != BT_CONNECTED)
-+ return -EBADFD;
-+
-+ dlc = rfcomm_pi(sk)->dlc;
-+ rfcomm_dlc_hold(dlc);
-+ } else {
-+ dlc = rfcomm_dlc_alloc(GFP_KERNEL);
-+ if (!dlc)
-+ return -ENOMEM;
-+ }
-+
-+ id = rfcomm_dev_add(&req, dlc);
-+ if (id < 0) {
-+ rfcomm_dlc_put(dlc);
-+ return id;
-+ }
-+
-+ if (req.flags & (1 << RFCOMM_REUSE_DLC)) {
-+ /* DLC is now used by device.
-+ * Socket must be disconnected */
-+ sk->state = BT_CLOSED;
-+ }
-+
-+ return id;
-+}
-+
-+static int rfcomm_release_dev(unsigned long arg)
-+{
-+ struct rfcomm_dev_req req;
-+ struct rfcomm_dev *dev;
-+
-+ if (copy_from_user(&req, (void *) arg, sizeof(req)))
-+ return -EFAULT;
-+
-+ BT_DBG("dev_id %id flags 0x%x", req.dev_id, req.flags);
-+
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EPERM;
-+
-+ if (!(dev = rfcomm_dev_get(req.dev_id)))
-+ return -ENODEV;
-+
-+ if (req.flags & (1 << RFCOMM_HANGUP_NOW))
-+ rfcomm_dlc_close(dev->dlc, 0);
-+
-+ rfcomm_dev_del(dev);
-+ rfcomm_dev_put(dev);
-+ return 0;
-+}
-+
-+static int rfcomm_get_dev_list(unsigned long arg)
-+{
-+ struct rfcomm_dev_list_req *dl;
-+ struct rfcomm_dev_info *di;
-+ struct list_head *p;
-+ int n = 0, size;
-+ u16 dev_num;
-+
-+ BT_DBG("");
-+
-+ if (get_user(dev_num, (u16 *) arg))
-+ return -EFAULT;
-+
-+ if (!dev_num)
-+ return -EINVAL;
-+
-+ size = sizeof(*dl) + dev_num * sizeof(*di);
-+
-+ if (verify_area(VERIFY_WRITE, (void *)arg, size))
-+ return -EFAULT;
-+
-+ if (!(dl = kmalloc(size, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ di = dl->dev_info;
-+
-+ read_lock_bh(&rfcomm_dev_lock);
-+
-+ list_for_each(p, &rfcomm_dev_list) {
-+ struct rfcomm_dev *dev = list_entry(p, struct rfcomm_dev, list);
-+ (di + n)->id = dev->id;
-+ (di + n)->flags = dev->flags;
-+ (di + n)->state = dev->dlc->state;
-+ (di + n)->channel = dev->channel;
-+ bacpy(&(di + n)->src, &dev->src);
-+ bacpy(&(di + n)->dst, &dev->dst);
-+ if (++n >= dev_num)
-+ break;
-+ }
-+
-+ read_unlock_bh(&rfcomm_dev_lock);
-+
-+ dl->dev_num = n;
-+ size = sizeof(*dl) + n * sizeof(*di);
-+
-+ copy_to_user((void *) arg, dl, size);
-+ kfree(dl);
-+ return 0;
-+}
-+
-+static int rfcomm_get_dev_info(unsigned long arg)
-+{
-+ struct rfcomm_dev *dev;
-+ struct rfcomm_dev_info di;
-+ int err = 0;
-+
-+ BT_DBG("");
-+
-+ if (copy_from_user(&di, (void *)arg, sizeof(di)))
-+ return -EFAULT;
-+
-+ if (!(dev = rfcomm_dev_get(di.id)))
-+ return -ENODEV;
-+
-+ di.flags = dev->flags;
-+ di.channel = dev->channel;
-+ di.state = dev->dlc->state;
-+ bacpy(&di.src, &dev->src);
-+ bacpy(&di.dst, &dev->dst);
-+
-+ if (copy_to_user((void *)arg, &di, sizeof(di)))
-+ err = -EFAULT;
-+
-+ rfcomm_dev_put(dev);
-+ return err;
-+}
-+
-+int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg)
-+{
-+ BT_DBG("cmd %d arg %ld", cmd, arg);
-+
-+ switch (cmd) {
-+ case RFCOMMCREATEDEV:
-+ return rfcomm_create_dev(sk, arg);
-+
-+ case RFCOMMRELEASEDEV:
-+ return rfcomm_release_dev(arg);
-+
-+ case RFCOMMGETDEVLIST:
-+ return rfcomm_get_dev_list(arg);
-+
-+ case RFCOMMGETDEVINFO:
-+ return rfcomm_get_dev_info(arg);
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+/* ---- DLC callbacks ---- */
-+static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ struct tty_struct *tty;
-+
-+ if (!dev || !(tty = dev->tty)) {
-+ kfree_skb(skb);
-+ return;
-+ }
-+
-+ BT_DBG("dlc %p tty %p len %d", dlc, tty, skb->len);
-+
-+ if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
-+ register int i;
-+ for (i = 0; i < skb->len; i++) {
-+ if (tty->flip.count >= TTY_FLIPBUF_SIZE)
-+ tty_flip_buffer_push(tty);
-+
-+ tty_insert_flip_char(tty, skb->data[i], 0);
-+ }
-+ tty_flip_buffer_push(tty);
-+ } else
-+ tty->ldisc.receive_buf(tty, skb->data, NULL, skb->len);
-+
-+ kfree_skb(skb);
-+}
-+
-+static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("dlc %p dev %p err %d", dlc, dev, err);
-+
-+ dev->err = err;
-+ wake_up_interruptible(&dev->wait);
-+
-+ if (dlc->state == BT_CLOSED) {
-+ if (!dev->tty) {
-+ if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) {
-+ rfcomm_dev_hold(dev);
-+ rfcomm_dev_del(dev);
-+
-+ /* We have to drop DLC lock here, otherwise
-+ * rfcomm_dev_put() will dead lock if it's the last refference */
-+ rfcomm_dlc_unlock(dlc);
-+ rfcomm_dev_put(dev);
-+ rfcomm_dlc_lock(dlc);
-+ }
-+ } else
-+ tty_hangup(dev->tty);
-+ }
-+}
-+
-+static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig)
-+{
-+ struct rfcomm_dev *dev = dlc->owner;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig);
-+
-+ dev->modem_status =
-+ ((v24_sig & RFCOMM_V24_RTC) ? (TIOCM_DSR | TIOCM_DTR) : 0) |
-+ ((v24_sig & RFCOMM_V24_RTR) ? (TIOCM_RTS | TIOCM_CTS) : 0) |
-+ ((v24_sig & RFCOMM_V24_IC) ? TIOCM_RI : 0) |
-+ ((v24_sig & RFCOMM_V24_DV) ? TIOCM_CD : 0);
-+}
-+
-+/* ---- TTY functions ---- */
-+static void rfcomm_tty_wakeup(unsigned long arg)
-+{
-+ struct rfcomm_dev *dev = (void *) arg;
-+ struct tty_struct *tty = dev->tty;
-+ if (!tty)
-+ return;
-+
-+ BT_DBG("dev %p tty %p", dev, tty);
-+
-+ if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup)
-+ (tty->ldisc.write_wakeup)(tty);
-+
-+ wake_up_interruptible(&tty->write_wait);
-+#ifdef SERIAL_HAVE_POLL_WAIT
-+ wake_up_interruptible(&tty->poll_wait);
-+#endif
-+}
-+
-+static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct rfcomm_dev *dev;
-+ struct rfcomm_dlc *dlc;
-+ int err, id;
-+
-+ id = MINOR(tty->device) - tty->driver.minor_start;
-+
-+ BT_DBG("tty %p id %d", tty, id);
-+
-+ dev = rfcomm_dev_get(id);
-+ if (!dev)
-+ return -ENODEV;
-+
-+ BT_DBG("dev %p dst %s channel %d opened %d", dev, batostr(&dev->dst), dev->channel, dev->opened);
-+
-+ if (dev->opened++ != 0)
-+ return 0;
-+
-+ dlc = dev->dlc;
-+
-+ /* Attach TTY and open DLC */
-+
-+ rfcomm_dlc_lock(dlc);
-+ tty->driver_data = dev;
-+ dev->tty = tty;
-+ rfcomm_dlc_unlock(dlc);
-+ set_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
-+
-+ err = rfcomm_dlc_open(dlc, &dev->src, &dev->dst, dev->channel);
-+ if (err < 0)
-+ return err;
-+
-+ /* Wait for DLC to connect */
-+ add_wait_queue(&dev->wait, &wait);
-+ while (1) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ if (dlc->state == BT_CLOSED) {
-+ err = -dev->err;
-+ break;
-+ }
-+
-+ if (dlc->state == BT_CONNECTED)
-+ break;
-+
-+ if (signal_pending(current)) {
-+ err = -EINTR;
-+ break;
-+ }
-+
-+ schedule();
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&dev->wait, &wait);
-+
-+ return err;
-+}
-+
-+static void rfcomm_tty_close(struct tty_struct *tty, struct file *filp)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc, dev->opened);
-+
-+ if (--dev->opened == 0) {
-+ /* Close DLC and dettach TTY */
-+ rfcomm_dlc_close(dev->dlc, 0);
-+
-+ clear_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
-+ tasklet_kill(&dev->wakeup_task);
-+
-+ rfcomm_dlc_lock(dev->dlc);
-+ tty->driver_data = NULL;
-+ dev->tty = NULL;
-+ rfcomm_dlc_unlock(dev->dlc);
-+ }
-+
-+ rfcomm_dev_put(dev);
-+}
-+
-+static int rfcomm_tty_write(struct tty_struct *tty, int from_user, const unsigned char *buf, int count)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ struct sk_buff *skb;
-+ int err = 0, sent = 0, size;
-+
-+ BT_DBG("tty %p from_user %d count %d", tty, from_user, count);
-+
-+ while (count) {
-+ size = min_t(uint, count, dlc->mtu);
-+
-+ if (from_user)
-+ skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, 0, GFP_KERNEL);
-+ else
-+ skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, 0, GFP_ATOMIC);
-+
-+ if (!skb)
-+ break;
-+
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ if (from_user)
-+ copy_from_user(skb_put(skb, size), buf + sent, size);
-+ else
-+ memcpy(skb_put(skb, size), buf + sent, size);
-+
-+ if ((err = rfcomm_dlc_send(dlc, skb)) < 0) {
-+ kfree_skb(skb);
-+ break;
-+ }
-+
-+ sent += size;
-+ count -= size;
-+ }
-+
-+ return sent ? sent : err;
-+}
-+
-+static void rfcomm_tty_put_char(struct tty_struct *tty, unsigned char ch)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ struct sk_buff *skb;
-+
-+ BT_DBG("tty %p char %x", tty, ch);
-+
-+ skb = rfcomm_wmalloc(dev, 1 + RFCOMM_SKB_RESERVE, 1, GFP_ATOMIC);
-+
-+ if (!skb)
-+ return;
-+
-+ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
-+
-+ *(char *)skb_put(skb, 1) = ch;
-+
-+ if ((rfcomm_dlc_send(dlc, skb)) < 0)
-+ kfree_skb(skb);
-+}
-+
-+static int rfcomm_tty_write_room(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ int room;
-+
-+ BT_DBG("tty %p", tty);
-+
-+ room = rfcomm_room(dev->dlc) - atomic_read(&dev->wmem_alloc);
-+ if (room < 0)
-+ room = 0;
-+
-+ return room;
-+}
-+
-+static int rfcomm_tty_set_modem_status(uint cmd, struct rfcomm_dlc *dlc, uint status)
-+{
-+ u8 v24_sig, mask;
-+
-+ BT_DBG("dlc %p cmd 0x%02x", dlc, cmd);
-+
-+ if (cmd == TIOCMSET)
-+ v24_sig = 0;
-+ else
-+ rfcomm_dlc_get_modem_status(dlc, &v24_sig);
-+
-+ mask = ((status & TIOCM_DSR) ? RFCOMM_V24_RTC : 0) |
-+ ((status & TIOCM_DTR) ? RFCOMM_V24_RTC : 0) |
-+ ((status & TIOCM_RTS) ? RFCOMM_V24_RTR : 0) |
-+ ((status & TIOCM_CTS) ? RFCOMM_V24_RTR : 0) |
-+ ((status & TIOCM_RI) ? RFCOMM_V24_IC : 0) |
-+ ((status & TIOCM_CD) ? RFCOMM_V24_DV : 0);
-+
-+ if (cmd == TIOCMBIC)
-+ v24_sig &= ~mask;
-+ else
-+ v24_sig |= mask;
-+
-+ rfcomm_dlc_set_modem_status(dlc, v24_sig);
-+ return 0;
-+}
-+
-+static int rfcomm_tty_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, unsigned long arg)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+ uint status;
-+ int err;
-+
-+ BT_DBG("tty %p cmd 0x%02x", tty, cmd);
-+
-+ switch (cmd) {
-+ case TCGETS:
-+ BT_DBG("TCGETS is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TCSETS:
-+ BT_DBG("TCSETS is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCMGET:
-+ BT_DBG("TIOCMGET");
-+
-+ return put_user(dev->modem_status, (unsigned int *)arg);
-+
-+ case TIOCMSET: /* Turns on and off the lines as specified by the mask */
-+ case TIOCMBIS: /* Turns on the lines as specified by the mask */
-+ case TIOCMBIC: /* Turns off the lines as specified by the mask */
-+ if ((err = get_user(status, (unsigned int *)arg)))
-+ return err;
-+ return rfcomm_tty_set_modem_status(cmd, dlc, status);
-+
-+ case TIOCMIWAIT:
-+ BT_DBG("TIOCMIWAIT");
-+ break;
-+
-+ case TIOCGICOUNT:
-+ BT_DBG("TIOCGICOUNT");
-+ break;
-+
-+ case TIOCGSERIAL:
-+ BT_ERR("TIOCGSERIAL is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSSERIAL:
-+ BT_ERR("TIOCSSERIAL is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERGSTRUCT:
-+ BT_ERR("TIOCSERGSTRUCT is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERGETLSR:
-+ BT_ERR("TIOCSERGETLSR is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ case TIOCSERCONFIG:
-+ BT_ERR("TIOCSERCONFIG is not supported");
-+ return -ENOIOCTLCMD;
-+
-+ default:
-+ return -ENOIOCTLCMD; /* ioctls which we must ignore */
-+
-+ }
-+
-+ return -ENOIOCTLCMD;
-+}
-+
-+#define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK))
-+
-+static void rfcomm_tty_set_termios(struct tty_struct *tty, struct termios *old)
-+{
-+ BT_DBG("tty %p", tty);
-+
-+ if ((tty->termios->c_cflag == old->c_cflag) &&
-+ (RELEVANT_IFLAG(tty->termios->c_iflag) == RELEVANT_IFLAG(old->c_iflag)))
-+ return;
-+
-+ /* handle turning off CRTSCTS */
-+ if ((old->c_cflag & CRTSCTS) && !(tty->termios->c_cflag & CRTSCTS)) {
-+ BT_DBG("turning off CRTSCTS");
-+ }
-+}
-+
-+static void rfcomm_tty_throttle(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_dlc_throttle(dev->dlc);
-+}
-+
-+static void rfcomm_tty_unthrottle(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_dlc_unthrottle(dev->dlc);
-+}
-+
-+static int rfcomm_tty_chars_in_buffer(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ struct rfcomm_dlc *dlc = dev->dlc;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ if (skb_queue_len(&dlc->tx_queue))
-+ return dlc->mtu;
-+
-+ return 0;
-+}
-+
-+static void rfcomm_tty_flush_buffer(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ skb_queue_purge(&dev->dlc->tx_queue);
-+
-+ if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup)
-+ tty->ldisc.write_wakeup(tty);
-+}
-+
-+static void rfcomm_tty_send_xchar(struct tty_struct *tty, char ch)
-+{
-+ BT_DBG("tty %p ch %c", tty, ch);
-+}
-+
-+static void rfcomm_tty_wait_until_sent(struct tty_struct *tty, int timeout)
-+{
-+ BT_DBG("tty %p timeout %d", tty, timeout);
-+}
-+
-+static void rfcomm_tty_hangup(struct tty_struct *tty)
-+{
-+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-+ if (!dev)
-+ return;
-+
-+ BT_DBG("tty %p dev %p", tty, dev);
-+
-+ rfcomm_tty_flush_buffer(tty);
-+
-+ if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags))
-+ rfcomm_dev_del(dev);
-+}
-+
-+static int rfcomm_tty_read_proc(char *buf, char **start, off_t offset, int len, int *eof, void *unused)
-+{
-+ return 0;
-+}
-+
-+/* ---- TTY structure ---- */
-+static int rfcomm_tty_refcount; /* If we manage several devices */
-+
-+static struct tty_struct *rfcomm_tty_table[RFCOMM_TTY_PORTS];
-+static struct termios *rfcomm_tty_termios[RFCOMM_TTY_PORTS];
-+static struct termios *rfcomm_tty_termios_locked[RFCOMM_TTY_PORTS];
-+
-+static struct tty_driver rfcomm_tty_driver = {
-+ magic: TTY_DRIVER_MAGIC,
-+ driver_name: "rfcomm",
-+#ifdef CONFIG_DEVFS_FS
-+ name: "bluetooth/rfcomm/%d",
-+#else
-+ name: "rfcomm",
-+#endif
-+ major: RFCOMM_TTY_MAJOR,
-+ minor_start: RFCOMM_TTY_MINOR,
-+ num: RFCOMM_TTY_PORTS,
-+ type: TTY_DRIVER_TYPE_SERIAL,
-+ subtype: SERIAL_TYPE_NORMAL,
-+ flags: TTY_DRIVER_REAL_RAW,
-+
-+ refcount: &rfcomm_tty_refcount,
-+ table: rfcomm_tty_table,
-+ termios: rfcomm_tty_termios,
-+ termios_locked: rfcomm_tty_termios_locked,
-+
-+ open: rfcomm_tty_open,
-+ close: rfcomm_tty_close,
-+ put_char: rfcomm_tty_put_char,
-+ write: rfcomm_tty_write,
-+ write_room: rfcomm_tty_write_room,
-+ chars_in_buffer: rfcomm_tty_chars_in_buffer,
-+ flush_buffer: rfcomm_tty_flush_buffer,
-+ ioctl: rfcomm_tty_ioctl,
-+ throttle: rfcomm_tty_throttle,
-+ unthrottle: rfcomm_tty_unthrottle,
-+ set_termios: rfcomm_tty_set_termios,
-+ send_xchar: rfcomm_tty_send_xchar,
-+ stop: NULL,
-+ start: NULL,
-+ hangup: rfcomm_tty_hangup,
-+ wait_until_sent: rfcomm_tty_wait_until_sent,
-+ read_proc: rfcomm_tty_read_proc,
-+};
-+
-+int rfcomm_init_ttys(void)
-+{
-+ int i;
-+
-+ /* Initalize our global data */
-+ for (i = 0; i < RFCOMM_TTY_PORTS; i++)
-+ rfcomm_tty_table[i] = NULL;
-+
-+ /* Register the TTY driver */
-+ rfcomm_tty_driver.init_termios = tty_std_termios;
-+ rfcomm_tty_driver.init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
-+ rfcomm_tty_driver.flags = TTY_DRIVER_REAL_RAW;
-+
-+ if (tty_register_driver(&rfcomm_tty_driver)) {
-+ BT_ERR("Can't register RFCOMM TTY driver");
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
-+void rfcomm_cleanup_ttys(void)
-+{
-+ tty_unregister_driver(&rfcomm_tty_driver);
-+ return;
-+}
-diff -urN linux-2.4.18/net/bluetooth/sco.c linux-2.4.18-mh9/net/bluetooth/sco.c
---- linux-2.4.18/net/bluetooth/sco.c Thu Jan 1 01:00:00 1970
-+++ linux-2.4.18-mh9/net/bluetooth/sco.c Mon Aug 25 18:38:12 2003
-@@ -0,0 +1,1019 @@
-+/*
-+ BlueZ - Bluetooth protocol stack for Linux
-+ Copyright (C) 2000-2001 Qualcomm Incorporated
-+
-+ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-+
-+ 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-+ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-+ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
-+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+
-+ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
-+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
-+ SOFTWARE IS DISCLAIMED.
-+*/
-+
-+/*
-+ * BlueZ SCO sockets.
-+ *
-+ * $Id: sco.c,v 1.4 2002/07/22 20:32:54 maxk Exp $
-+ */
-+#define VERSION "0.3"
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/major.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <linux/interrupt.h>
-+#include <linux/socket.h>
-+#include <linux/skbuff.h>
-+#include <linux/proc_fs.h>
-+#include <linux/list.h>
-+#include <net/sock.h>
-+
-+#include <asm/system.h>
-+#include <asm/uaccess.h>
-+
-+#include <net/bluetooth/bluetooth.h>
-+#include <net/bluetooth/hci_core.h>
-+#include <net/bluetooth/sco.h>
-+
-+#ifndef SCO_DEBUG
-+#undef BT_DBG
-+#define BT_DBG( A... )
-+#endif
-+
-+static struct proto_ops sco_sock_ops;
-+
-+static struct bluez_sock_list sco_sk_list = {
-+ lock: RW_LOCK_UNLOCKED
-+};
-+
-+static inline int sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent);
-+static void sco_chan_del(struct sock *sk, int err);
-+static inline struct sock * sco_chan_get(struct sco_conn *conn);
-+
-+static int sco_conn_del(struct hci_conn *conn, int err);
-+
-+static void sco_sock_close(struct sock *sk);
-+static void sco_sock_kill(struct sock *sk);
-+
-+/* ----- SCO timers ------ */
-+static void sco_sock_timeout(unsigned long arg)
-+{
-+ struct sock *sk = (struct sock *) arg;
-+
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ bh_lock_sock(sk);
-+ sk->err = ETIMEDOUT;
-+ sk->state_change(sk);
-+ bh_unlock_sock(sk);
-+
-+ sco_sock_kill(sk);
-+ sock_put(sk);
-+}
-+
-+static void sco_sock_set_timer(struct sock *sk, long timeout)
-+{
-+ BT_DBG("sock %p state %d timeout %ld", sk, sk->state, timeout);
-+
-+ if (!mod_timer(&sk->timer, jiffies + timeout))
-+ sock_hold(sk);
-+}
-+
-+static void sco_sock_clear_timer(struct sock *sk)
-+{
-+ BT_DBG("sock %p state %d", sk, sk->state);
-+
-+ if (timer_pending(&sk->timer) && del_timer(&sk->timer))
-+ __sock_put(sk);
-+}
-+
-+static void sco_sock_init_timer(struct sock *sk)
-+{
-+ init_timer(&sk->timer);
-+ sk->timer.function = sco_sock_timeout;
-+ sk->timer.data = (unsigned long)sk;
-+}
-+
-+/* -------- SCO connections --------- */
-+static struct sco_conn *sco_conn_add(struct hci_conn *hcon, __u8 status)
-+{
-+ struct hci_dev *hdev = hcon->hdev;
-+ struct sco_conn *conn;
-+
-+ if ((conn = hcon->sco_data))
-+ return conn;
-+
-+ if (status)
-+ return conn;
-+
-+ if (!(conn = kmalloc(sizeof(struct sco_conn), GFP_ATOMIC)))
-+ return NULL;
-+ memset(conn, 0, sizeof(struct sco_conn));
-+
-+ spin_lock_init(&conn->lock);
-+
-+ hcon->sco_data = conn;
-+ conn->hcon = hcon;
-+
-+ conn->src = &hdev->bdaddr;
-+ conn->dst = &hcon->dst;
-+
-+ if (hdev->sco_mtu > 0)
-+ conn->mtu = hdev->sco_mtu;
-+ else
-+ conn->mtu = 60;
-+
-+ BT_DBG("hcon %p conn %p", hcon, conn);
-+
-+ MOD_INC_USE_COUNT;
-+ return conn;
-+}
-+
-+static int sco_conn_del(struct hci_conn *hcon, int err)
-+{
-+ struct sco_conn *conn;
-+ struct sock *sk;
-+
-+ if (!(conn = hcon->sco_data))
-+ return 0;
-+
-+ BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
-+
-+ /* Kill socket */
-+ if ((sk = sco_chan_get(conn))) {
-+ bh_lock_sock(sk);
-+ sco_sock_clear_timer(sk);
-+ sco_chan_del(sk, err);
-+ bh_unlock_sock(sk);
-+ sco_sock_kill(sk);
-+ }
-+
-+ hcon->sco_data = NULL;
-+ kfree(conn);
-+
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+int sco_connect(struct sock *sk)
-+{
-+ bdaddr_t *src = &bluez_pi(sk)->src;
-+ bdaddr_t *dst = &bluez_pi(sk)->dst;
-+ struct sco_conn *conn;
-+ struct hci_conn *hcon;
-+ struct hci_dev *hdev;
-+ int err = 0;
-+
-+ BT_DBG("%s -> %s", batostr(src), batostr(dst));
-+
-+ if (!(hdev = hci_get_route(dst, src)))
-+ return -EHOSTUNREACH;
-+
-+ hci_dev_lock_bh(hdev);
-+
-+ err = -ENOMEM;
-+
-+ hcon = hci_connect(hdev, SCO_LINK, dst);
-+ if (!hcon)
-+ goto done;
-+
-+ conn = sco_conn_add(hcon, 0);
-+ if (!conn) {
-+ hci_conn_put(hcon);
-+ goto done;
-+ }
-+
-+ /* Update source addr of the socket */
-+ bacpy(src, conn->src);
-+
-+ err = sco_chan_add(conn, sk, NULL);
-+ if (err)
-+ goto done;
-+
-+ if (hcon->state == BT_CONNECTED) {
-+ sco_sock_clear_timer(sk);
-+ sk->state = BT_CONNECTED;
-+ } else {
-+ sk->state = BT_CONNECT;
-+ sco_sock_set_timer(sk, sk->sndtimeo);
-+ }
-+done:
-+ hci_dev_unlock_bh(hdev);
-+ hci_dev_put(hdev);
-+ return err;
-+}
-+
-+static inline int sco_send_frame(struct sock *sk, struct msghdr *msg, int len)
-+{
-+ struct sco_conn *conn = sco_pi(sk)->conn;
-+ struct sk_buff *skb;
-+ int err, count;
-+
-+ /* Check outgoing MTU */
-+ if (len > conn->mtu)
-+ return -EINVAL;
-+
-+ BT_DBG("sk %p len %d", sk, len);
-+
-+ count = MIN(conn->mtu, len);
-+ if (!(skb = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err)))
-+ return err;
-+
-+ if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) {
-+ err = -EFAULT;
-+ goto fail;
-+ }
-+
-+ if ((err = hci_send_sco(conn->hcon, skb)) < 0)
-+ goto fail;
-+
-+ return count;
-+
-+fail:
-+ kfree_skb(skb);
-+ return err;
-+}
-+
-+static inline void sco_recv_frame(struct sco_conn *conn, struct sk_buff *skb)
-+{
-+ struct sock *sk = sco_chan_get(conn);
-+
-+ if (!sk)
-+ goto drop;
-+
-+ BT_DBG("sk %p len %d", sk, skb->len);
-+
-+ if (sk->state != BT_CONNECTED)
-+ goto drop;
-+
-+ if (!sock_queue_rcv_skb(sk, skb))
-+ return;
-+
-+drop:
-+ kfree_skb(skb);
-+ return;
-+}
-+
-+/* -------- Socket interface ---------- */
-+static struct sock *__sco_get_sock_by_addr(bdaddr_t *ba)
-+{
-+ struct sock *sk;
-+
-+ for (sk = sco_sk_list.head; sk; sk = sk->next) {
-+ if (!bacmp(&bluez_pi(sk)->src, ba))
-+ break;
-+ }
-+
-+ return sk;
-+}
-+
-+/* Find socket listening on source bdaddr.
-+ * Returns closest match.
-+ */
-+static struct sock *sco_get_sock_listen(bdaddr_t *src)
-+{
-+ struct sock *sk, *sk1 = NULL;
-+
-+ read_lock(&sco_sk_list.lock);
-+
-+ for (sk = sco_sk_list.head; sk; sk = sk->next) {
-+ if (sk->state != BT_LISTEN)
-+ continue;
-+
-+ /* Exact match. */
-+ if (!bacmp(&bluez_pi(sk)->src, src))
-+ break;
-+
-+ /* Closest match */
-+ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY))
-+ sk1 = sk;
-+ }
-+
-+ read_unlock(&sco_sk_list.lock);
-+
-+ return sk ? sk : sk1;
-+}
-+
-+static void sco_sock_destruct(struct sock *sk)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ skb_queue_purge(&sk->receive_queue);
-+ skb_queue_purge(&sk->write_queue);
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+static void sco_sock_cleanup_listen(struct sock *parent)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("parent %p", parent);
-+
-+ /* Close not yet accepted channels */
-+ while ((sk = bluez_accept_dequeue(parent, NULL))) {
-+ sco_sock_close(sk);
-+ sco_sock_kill(sk);
-+ }
-+
-+ parent->state = BT_CLOSED;
-+ parent->zapped = 1;
-+}
-+
-+/* Kill socket (only if zapped and orphan)
-+ * Must be called on unlocked socket.
-+ */
-+static void sco_sock_kill(struct sock *sk)
-+{
-+ if (!sk->zapped || sk->socket)
-+ return;
-+
-+ BT_DBG("sk %p state %d", sk, sk->state);
-+
-+ /* Kill poor orphan */
-+ bluez_sock_unlink(&sco_sk_list, sk);
-+ sk->dead = 1;
-+ sock_put(sk);
-+}
-+
-+/* Close socket.
-+ * Must be called on unlocked socket.
-+ */
-+static void sco_sock_close(struct sock *sk)
-+{
-+ struct sco_conn *conn;
-+
-+ sco_sock_clear_timer(sk);
-+
-+ lock_sock(sk);
-+
-+ conn = sco_pi(sk)->conn;
-+
-+ BT_DBG("sk %p state %d conn %p socket %p", sk, sk->state, conn, sk->socket);
-+
-+ switch (sk->state) {
-+ case BT_LISTEN:
-+ sco_sock_cleanup_listen(sk);
-+ break;
-+
-+ case BT_CONNECTED:
-+ case BT_CONFIG:
-+ case BT_CONNECT:
-+ case BT_DISCONN:
-+ sco_chan_del(sk, ECONNRESET);
-+ break;
-+
-+ default:
-+ sk->zapped = 1;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+}
-+
-+static void sco_sock_init(struct sock *sk, struct sock *parent)
-+{
-+ BT_DBG("sk %p", sk);
-+
-+ if (parent)
-+ sk->type = parent->type;
-+}
-+
-+static struct sock *sco_sock_alloc(struct socket *sock, int proto, int prio)
-+{
-+ struct sock *sk;
-+
-+ if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1)))
-+ return NULL;
-+
-+ bluez_sock_init(sock, sk);
-+
-+ sk->zapped = 0;
-+
-+ sk->destruct = sco_sock_destruct;
-+ sk->sndtimeo = SCO_CONN_TIMEOUT;
-+
-+ sk->protocol = proto;
-+ sk->state = BT_OPEN;
-+
-+ sco_sock_init_timer(sk);
-+
-+ bluez_sock_link(&sco_sk_list, sk);
-+
-+ MOD_INC_USE_COUNT;
-+ return sk;
-+}
-+
-+static int sco_sock_create(struct socket *sock, int protocol)
-+{
-+ struct sock *sk;
-+
-+ BT_DBG("sock %p", sock);
-+
-+ sock->state = SS_UNCONNECTED;
-+
-+ if (sock->type != SOCK_SEQPACKET)
-+ return -ESOCKTNOSUPPORT;
-+
-+ sock->ops = &sco_sock_ops;
-+
-+ if (!(sk = sco_sock_alloc(sock, protocol, GFP_KERNEL)))
-+ return -ENOMEM;
-+
-+ sco_sock_init(sk, NULL);
-+ return 0;
-+}
-+
-+static int sco_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
-+{
-+ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
-+ struct sock *sk = sock->sk;
-+ bdaddr_t *src = &sa->sco_bdaddr;
-+ int err = 0;
-+
-+ BT_DBG("sk %p %s", sk, batostr(&sa->sco_bdaddr));
-+
-+ if (!addr || addr->sa_family != AF_BLUETOOTH)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_OPEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ write_lock_bh(&sco_sk_list.lock);
-+
-+ if (bacmp(src, BDADDR_ANY) && __sco_get_sock_by_addr(src)) {
-+ err = -EADDRINUSE;
-+ } else {
-+ /* Save source address */
-+ bacpy(&bluez_pi(sk)->src, &sa->sco_bdaddr);
-+ sk->state = BT_BOUND;
-+ }
-+
-+ write_unlock_bh(&sco_sk_list.lock);
-+
-+done:
-+ release_sock(sk);
-+
-+ return err;
-+}
-+
-+static int sco_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
-+{
-+ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_sco))
-+ return -EINVAL;
-+
-+ if (sk->state != BT_OPEN && sk->state != BT_BOUND)
-+ return -EBADFD;
-+
-+ if (sk->type != SOCK_SEQPACKET)
-+ return -EINVAL;
-+
-+ lock_sock(sk);
-+
-+ /* Set destination address and psm */
-+ bacpy(&bluez_pi(sk)->dst, &sa->sco_bdaddr);
-+
-+ if ((err = sco_connect(sk)))
-+ goto done;
-+
-+ err = bluez_sock_wait_state(sk, BT_CONNECTED,
-+ sock_sndtimeo(sk, flags & O_NONBLOCK));
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_listen(struct socket *sock, int backlog)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p backlog %d", sk, backlog);
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ sk->max_ack_backlog = backlog;
-+ sk->ack_backlog = 0;
-+ sk->state = BT_LISTEN;
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_accept(struct socket *sock, struct socket *newsock, int flags)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ struct sock *sk = sock->sk, *ch;
-+ long timeo;
-+ int err = 0;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ goto done;
-+ }
-+
-+ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
-+
-+ BT_DBG("sk %p timeo %ld", sk, timeo);
-+
-+ /* Wait for an incoming connection. (wake-one). */
-+ add_wait_queue_exclusive(sk->sleep, &wait);
-+ while (!(ch = bluez_accept_dequeue(sk, newsock))) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ if (!timeo) {
-+ err = -EAGAIN;
-+ break;
-+ }
-+
-+ release_sock(sk);
-+ timeo = schedule_timeout(timeo);
-+ lock_sock(sk);
-+
-+ if (sk->state != BT_LISTEN) {
-+ err = -EBADFD;
-+ break;
-+ }
-+
-+ if (signal_pending(current)) {
-+ err = sock_intr_errno(timeo);
-+ break;
-+ }
-+ }
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(sk->sleep, &wait);
-+
-+ if (err)
-+ goto done;
-+
-+ newsock->state = SS_CONNECTED;
-+
-+ BT_DBG("new socket %p", ch);
-+
-+done:
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int sco_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
-+{
-+ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
-+ struct sock *sk = sock->sk;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ addr->sa_family = AF_BLUETOOTH;
-+ *len = sizeof(struct sockaddr_sco);
-+
-+ if (peer)
-+ bacpy(&sa->sco_bdaddr, &bluez_pi(sk)->dst);
-+ else
-+ bacpy(&sa->sco_bdaddr, &bluez_pi(sk)->src);
-+
-+ return 0;
-+}
-+
-+static int sco_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (sk->err)
-+ return sock_error(sk);
-+
-+ if (msg->msg_flags & MSG_OOB)
-+ return -EOPNOTSUPP;
-+
-+ lock_sock(sk);
-+
-+ if (sk->state == BT_CONNECTED)
-+ err = sco_send_frame(sk, msg, len);
-+ else
-+ err = -ENOTCONN;
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+int sco_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen)
-+{
-+ struct sock *sk = sock->sk;
-+ struct sco_options opts;
-+ struct sco_conninfo cinfo;
-+ int len, err = 0;
-+
-+ BT_DBG("sk %p", sk);
-+
-+ if (get_user(len, optlen))
-+ return -EFAULT;
-+
-+ lock_sock(sk);
-+
-+ switch (optname) {
-+ case SCO_OPTIONS:
-+ if (sk->state != BT_CONNECTED) {
-+ err = -ENOTCONN;
-+ break;
-+ }
-+
-+ opts.mtu = sco_pi(sk)->conn->mtu;
-+
-+ BT_DBG("mtu %d", opts.mtu);
-+
-+ len = MIN(len, sizeof(opts));
-+ if (copy_to_user(optval, (char *)&opts, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ case SCO_CONNINFO:
-+ if (sk->state != BT_CONNECTED) {
-+ err = -ENOTCONN;
-+ break;
-+ }
-+
-+ cinfo.hci_handle = sco_pi(sk)->conn->hcon->handle;
-+
-+ len = MIN(len, sizeof(cinfo));
-+ if (copy_to_user(optval, (char *)&cinfo, len))
-+ err = -EFAULT;
-+
-+ break;
-+
-+ default:
-+ err = -ENOPROTOOPT;
-+ break;
-+ };
-+
-+ release_sock(sk);
-+ return err;
-+}
-+
-+static int sco_sock_release(struct socket *sock)
-+{
-+ struct sock *sk = sock->sk;
-+ int err = 0;
-+
-+ BT_DBG("sock %p, sk %p", sock, sk);
-+
-+ if (!sk)
-+ return 0;
-+
-+ sco_sock_close(sk);
-+ if (sk->linger) {
-+ lock_sock(sk);
-+ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime);
-+ release_sock(sk);
-+ }
-+
-+ sock_orphan(sk);
-+ sco_sock_kill(sk);
-+ return err;
-+}
-+
-+static void __sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ BT_DBG("conn %p", conn);
-+
-+ sco_pi(sk)->conn = conn;
-+ conn->sk = sk;
-+
-+ if (parent)
-+ bluez_accept_enqueue(parent, sk);
-+}
-+
-+static inline int sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent)
-+{
-+ int err = 0;
-+
-+ sco_conn_lock(conn);
-+ if (conn->sk) {
-+ err = -EBUSY;
-+ } else {
-+ __sco_chan_add(conn, sk, parent);
-+ }
-+ sco_conn_unlock(conn);
-+ return err;
-+}
-+
-+static inline struct sock * sco_chan_get(struct sco_conn *conn)
-+{
-+ struct sock *sk = NULL;
-+ sco_conn_lock(conn);
-+ sk = conn->sk;
-+ sco_conn_unlock(conn);
-+ return sk;
-+}
-+
-+/* Delete channel.
-+ * Must be called on the locked socket. */
-+static void sco_chan_del(struct sock *sk, int err)
-+{
-+ struct sco_conn *conn;
-+
-+ conn = sco_pi(sk)->conn;
-+
-+ BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
-+
-+ if (conn) {
-+ sco_conn_lock(conn);
-+ conn->sk = NULL;
-+ sco_pi(sk)->conn = NULL;
-+ sco_conn_unlock(conn);
-+ hci_conn_put(conn->hcon);
-+ }
-+
-+ sk->state = BT_CLOSED;
-+ sk->err = err;
-+ sk->state_change(sk);
-+
-+ sk->zapped = 1;
-+}
-+
-+static void sco_conn_ready(struct sco_conn *conn)
-+{
-+ struct sock *parent, *sk;
-+
-+ BT_DBG("conn %p", conn);
-+
-+ sco_conn_lock(conn);
-+
-+ if ((sk = conn->sk)) {
-+ sco_sock_clear_timer(sk);
-+ bh_lock_sock(sk);
-+ sk->state = BT_CONNECTED;
-+ sk->state_change(sk);
-+ bh_unlock_sock(sk);
-+ } else {
-+ parent = sco_get_sock_listen(conn->src);
-+ if (!parent)
-+ goto done;
-+
-+ bh_lock_sock(parent);
-+
-+ sk = sco_sock_alloc(NULL, BTPROTO_SCO, GFP_ATOMIC);
-+ if (!sk) {
-+ bh_unlock_sock(parent);
-+ goto done;
-+ }
-+
-+ sco_sock_init(sk, parent);
-+
-+ bacpy(&bluez_pi(sk)->src, conn->src);
-+ bacpy(&bluez_pi(sk)->dst, conn->dst);
-+
-+ hci_conn_hold(conn->hcon);
-+ __sco_chan_add(conn, sk, parent);
-+
-+ sk->state = BT_CONNECTED;
-+
-+ /* Wake up parent */
-+ parent->data_ready(parent, 1);
-+
-+ bh_unlock_sock(parent);
-+ }
-+
-+done:
-+ sco_conn_unlock(conn);
-+}
-+
-+/* ----- SCO interface with lower layer (HCI) ----- */
-+int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
-+{
-+ BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
-+
-+ /* Always accept connection */
-+ return HCI_LM_ACCEPT;
-+}
-+
-+int sco_connect_cfm(struct hci_conn *hcon, __u8 status)
-+{
-+ BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status);
-+
-+ if (hcon->type != SCO_LINK)
-+ return 0;
-+
-+ if (!status) {
-+ struct sco_conn *conn;
-+
-+ conn = sco_conn_add(hcon, status);
-+ if (conn)
-+ sco_conn_ready(conn);
-+ } else
-+ sco_conn_del(hcon, bterr(status));
-+
-+ return 0;
-+}
-+
-+int sco_disconn_ind(struct hci_conn *hcon, __u8 reason)
-+{
-+ BT_DBG("hcon %p reason %d", hcon, reason);
-+
-+ if (hcon->type != SCO_LINK)
-+ return 0;
-+
-+ sco_conn_del(hcon, bterr(reason));
-+ return 0;
-+}
-+
-+int sco_recv_scodata(struct hci_conn *hcon, struct sk_buff *skb)
-+{
-+ struct sco_conn *conn = hcon->sco_data;
-+
-+ if (!conn)
-+ goto drop;
-+
-+ BT_DBG("conn %p len %d", conn, skb->len);
-+
-+ if (skb->len) {
-+ sco_recv_frame(conn, skb);
-+ return 0;
-+ }
-+
-+drop:
-+ kfree_skb(skb);
-+ return 0;
-+}
-+
-+/* ----- Proc fs support ------ */
-+static int sco_sock_dump(char *buf, struct bluez_sock_list *list)
-+{
-+ struct sco_pinfo *pi;
-+ struct sock *sk;
-+ char *ptr = buf;
-+
-+ write_lock_bh(&list->lock);
-+
-+ for (sk = list->head; sk; sk = sk->next) {
-+ pi = sco_pi(sk);
-+ ptr += sprintf(ptr, "%s %s %d\n",
-+ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst),
-+ sk->state);
-+ }
-+
-+ write_unlock_bh(&list->lock);
-+
-+ ptr += sprintf(ptr, "\n");
-+
-+ return ptr - buf;
-+}
-+
-+static int sco_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv)
-+{
-+ char *ptr = buf;
-+ int len;
-+
-+ BT_DBG("count %d, offset %ld", count, offset);
-+
-+ ptr += sco_sock_dump(ptr, &sco_sk_list);
-+ len = ptr - buf;
-+
-+ if (len <= count + offset)
-+ *eof = 1;
-+
-+ *start = buf + offset;
-+ len -= offset;
-+
-+ if (len > count)
-+ len = count;
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+
-+static struct proto_ops sco_sock_ops = {
-+ family: PF_BLUETOOTH,
-+ release: sco_sock_release,
-+ bind: sco_sock_bind,
-+ connect: sco_sock_connect,
-+ listen: sco_sock_listen,
-+ accept: sco_sock_accept,
-+ getname: sco_sock_getname,
-+ sendmsg: sco_sock_sendmsg,
-+ recvmsg: bluez_sock_recvmsg,
-+ poll: bluez_sock_poll,
-+ socketpair: sock_no_socketpair,
-+ ioctl: sock_no_ioctl,
-+ shutdown: sock_no_shutdown,
-+ setsockopt: sco_sock_setsockopt,
-+ getsockopt: sco_sock_getsockopt,
-+ mmap: sock_no_mmap
-+};
-+
-+static struct net_proto_family sco_sock_family_ops = {
-+ family: PF_BLUETOOTH,
-+ create: sco_sock_create
-+};
-+
-+static struct hci_proto sco_hci_proto = {
-+ name: "SCO",
-+ id: HCI_PROTO_SCO,
-+ connect_ind: sco_connect_ind,
-+ connect_cfm: sco_connect_cfm,
-+ disconn_ind: sco_disconn_ind,
-+ recv_scodata: sco_recv_scodata,
-+};
-+
-+int __init sco_init(void)
-+{
-+ int err;
-+
-+ if ((err = bluez_sock_register(BTPROTO_SCO, &sco_sock_family_ops))) {
-+ BT_ERR("Can't register SCO socket layer");
-+ return err;
-+ }
-+
-+ if ((err = hci_register_proto(&sco_hci_proto))) {
-+ BT_ERR("Can't register SCO protocol");
-+ return err;
-+ }
-+
-+ create_proc_read_entry("bluetooth/sco", 0, 0, sco_read_proc, NULL);
-+
-+ BT_INFO("BlueZ SCO ver %s Copyright (C) 2000,2001 Qualcomm Inc", VERSION);
-+ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>");
-+ return 0;
-+}
-+
-+void sco_cleanup(void)
-+{
-+ int err;
-+
-+ remove_proc_entry("bluetooth/sco", NULL);
-+
-+ /* Unregister socket, protocol and notifier */
-+ if ((err = bluez_sock_unregister(BTPROTO_SCO)))
-+ BT_ERR("Can't unregister SCO socket layer %d", err);
-+
-+ if ((err = hci_unregister_proto(&sco_hci_proto)))
-+ BT_ERR("Can't unregister SCO protocol %d", err);
-+}
-+
-+module_init(sco_init);
-+module_exit(sco_cleanup);
-+
-+MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>");
-+MODULE_DESCRIPTION("BlueZ SCO ver " VERSION);
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.4.18/net/bluetooth/syms.c linux-2.4.18-mh9/net/bluetooth/syms.c
---- linux-2.4.18/net/bluetooth/syms.c Fri Sep 7 18:28:38 2001
-+++ linux-2.4.18-mh9/net/bluetooth/syms.c Mon Aug 25 18:38:12 2003
-@@ -25,7 +25,7 @@
- /*
- * BlueZ symbols.
- *
-- * $Id: syms.c,v 1.1 2001/07/12 19:31:24 maxk Exp $
-+ * $Id: syms.c,v 1.1 2002/03/08 21:06:59 maxk Exp $
- */
-
- #include <linux/config.h>
-@@ -39,25 +39,28 @@
- #include <linux/socket.h>
-
- #include <net/bluetooth/bluetooth.h>
--#include <net/bluetooth/bluez.h>
- #include <net/bluetooth/hci_core.h>
-
- /* HCI Core */
- EXPORT_SYMBOL(hci_register_dev);
- EXPORT_SYMBOL(hci_unregister_dev);
-+EXPORT_SYMBOL(hci_suspend_dev);
-+EXPORT_SYMBOL(hci_resume_dev);
-+
- EXPORT_SYMBOL(hci_register_proto);
- EXPORT_SYMBOL(hci_unregister_proto);
--EXPORT_SYMBOL(hci_register_notifier);
--EXPORT_SYMBOL(hci_unregister_notifier);
-
-+EXPORT_SYMBOL(hci_get_route);
- EXPORT_SYMBOL(hci_connect);
--EXPORT_SYMBOL(hci_disconnect);
- EXPORT_SYMBOL(hci_dev_get);
-+EXPORT_SYMBOL(hci_conn_auth);
-+EXPORT_SYMBOL(hci_conn_encrypt);
-
- EXPORT_SYMBOL(hci_recv_frame);
- EXPORT_SYMBOL(hci_send_acl);
- EXPORT_SYMBOL(hci_send_sco);
--EXPORT_SYMBOL(hci_send_raw);
-+EXPORT_SYMBOL(hci_send_cmd);
-+EXPORT_SYMBOL(hci_si_event);
-
- /* BlueZ lib */
- EXPORT_SYMBOL(bluez_dump);
-@@ -68,5 +71,11 @@
- /* BlueZ sockets */
- EXPORT_SYMBOL(bluez_sock_register);
- EXPORT_SYMBOL(bluez_sock_unregister);
-+EXPORT_SYMBOL(bluez_sock_init);
- EXPORT_SYMBOL(bluez_sock_link);
- EXPORT_SYMBOL(bluez_sock_unlink);
-+EXPORT_SYMBOL(bluez_sock_recvmsg);
-+EXPORT_SYMBOL(bluez_sock_poll);
-+EXPORT_SYMBOL(bluez_accept_enqueue);
-+EXPORT_SYMBOL(bluez_accept_dequeue);
-+EXPORT_SYMBOL(bluez_sock_wait_state);
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/cacko.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/cacko.patch
deleted file mode 100644
index 9677295c45..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/cacko.patch
+++ /dev/null
@@ -1,38963 +0,0 @@
-diff -Nur linux/arch/arm/def-configs/collie-jffs2 /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/arch/arm/def-configs/collie-jffs2
---- linux/arch/arm/def-configs/collie-jffs2 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/arch/arm/def-configs/collie-jffs2 2003-06-23 01:47:03.000000000 +0700
-@@ -0,0 +1,917 @@
-+#
-+# Automatically generated make config: don't edit
-+#
-+CONFIG_ARM=y
-+# CONFIG_EISA is not set
-+# CONFIG_SBUS is not set
-+# CONFIG_MCA is not set
-+CONFIG_UID16=y
-+# CONFIG_SMP is not set
-+CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-+
-+#
-+# Code maturity level options
-+#
-+CONFIG_EXPERIMENTAL=y
-+# CONFIG_OBSOLETE is not set
-+
-+#
-+# Loadable module support
-+#
-+CONFIG_MODULES=y
-+# CONFIG_MODVERSIONS is not set
-+CONFIG_KMOD=y
-+
-+#
-+# System Type
-+#
-+# CONFIG_ARCH_ARCA5K is not set
-+# CONFIG_ARCH_CLPS7500 is not set
-+# CONFIG_ARCH_CO285 is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_L7200 is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_INTEGRATOR is not set
-+# CONFIG_ARCH_RPC is not set
-+CONFIG_ARCH_SA1100=y
-+# CONFIG_ARCH_CLPS711X is not set
-+# CONFIG_ARCH_ANAKIN is not set
-+
-+#
-+# Archimedes/A5000 Implementations
-+#
-+
-+#
-+# Archimedes/A5000 Implementations (select only ONE)
-+#
-+# CONFIG_ARCH_ARC is not set
-+# CONFIG_ARCH_A5K is not set
-+
-+#
-+# Footbridge Implementations
-+#
-+# CONFIG_ARCH_CATS is not set
-+# CONFIG_ARCH_PERSONAL_SERVER is not set
-+# CONFIG_ARCH_EBSA285_ADDIN is not set
-+# CONFIG_ARCH_EBSA285_HOST is not set
-+# CONFIG_ARCH_NETWINDER is not set
-+
-+#
-+# SA11x0 Implementations
-+#
-+# CONFIG_SA1100_ASSABET is not set
-+# CONFIG_ASSABET_NEPONSET is not set
-+# CONFIG_SA1100_BRUTUS is not set
-+# CONFIG_SA1100_CERF is not set
-+CONFIG_SA1100_COLLIE=y
-+CONFIG_LOCOMO=y
-+# CONFIG_COLLIE_TS is not set
-+# CONFIG_COLLIE_TR0 is not set
-+# CONFIG_COLLIE_TR1 is not set
-+# CONFIG_COLLIE_DEV is not set
-+# CONFIG_SA1100_BITSY is not set
-+# CONFIG_SA1100_EXTENEX1 is not set
-+# CONFIG_SA1100_FLEXANET is not set
-+# CONFIG_SA1100_FREEBIRD is not set
-+# CONFIG_SA1100_GRAPHICSCLIENT is not set
-+# CONFIG_SA1100_JORNADA720 is not set
-+# CONFIG_SA1100_HUW_WEBPANEL is not set
-+# CONFIG_SA1100_ITSY is not set
-+# CONFIG_SA1100_LART is not set
-+# CONFIG_SA1100_NANOENGINE is not set
-+# CONFIG_SA1100_OMNIMETER is not set
-+# CONFIG_SA1100_PANGOLIN is not set
-+# CONFIG_SA1100_PLEB is not set
-+# CONFIG_SA1100_SHERMAN is not set
-+# CONFIG_SA1100_PFS168 is not set
-+# CONFIG_SA1100_VICTOR is not set
-+# CONFIG_SA1100_XP860 is not set
-+# CONFIG_SA1100_YOPY is not set
-+# CONFIG_SA1100_USB is not set
-+# CONFIG_SA1100_USB_NETLINK is not set
-+# CONFIG_SA1100_USB_CHAR is not set
-+
-+#
-+# LinkUp 7200/7205/7210 Implementations
-+#
-+# CONFIG_L7205SDB is not set
-+# CONFIG_IRIS_16MB is not set
-+# CONFIG_IRIS_32MB is not set
-+# CONFIG_NO_FLASH_BOOT_PARAM is not set
-+# CONFIG_IRIS is not set
-+
-+#
-+# CLPS711X/EP721X Implementations
-+#
-+# CONFIG_ARCH_P720T is not set
-+# CONFIG_ARCH_ACORN is not set
-+# CONFIG_FOOTBRIDGE is not set
-+# CONFIG_FOOTBRIDGE_HOST is not set
-+# CONFIG_FOOTBRIDGE_ADDIN is not set
-+CONFIG_CPU_32=y
-+# CONFIG_CPU_26 is not set
-+
-+#
-+# Processor Type
-+#
-+# CONFIG_CPU_32v3 is not set
-+CONFIG_CPU_32v4=y
-+# CONFIG_CPU_ARM610 is not set
-+# CONFIG_CPU_ARM710 is not set
-+# CONFIG_CPU_ARM720T is not set
-+# CONFIG_CPU_ARM920T is not set
-+# CONFIG_CPU_ARM1020 is not set
-+# CONFIG_CPU_SA110 is not set
-+CONFIG_CPU_SA1100=y
-+CONFIG_DISCONTIGMEM=y
-+# CONFIG_CPU_BIG_ENDIAN is not set
-+
-+#
-+# General setup
-+#
-+# CONFIG_PCI is not set
-+# CONFIG_ISA is not set
-+# CONFIG_ISA_DMA is not set
-+# CONFIG_CPU_FREQ is not set
-+CONFIG_HOTPLUG=y
-+
-+#
-+# PCMCIA/CardBus support
-+#
-+CONFIG_PCMCIA=y
-+# CONFIG_I82365 is not set
-+# CONFIG_TCIC is not set
-+# CONFIG_PCMCIA_CLPS6700 is not set
-+CONFIG_PCMCIA_SA1100=y
-+CONFIG_NET=y
-+CONFIG_SYSVIPC=y
-+# CONFIG_BSD_PROCESS_ACCT is not set
-+CONFIG_SYSCTL=y
-+# CONFIG_XIP_ROM is not set
-+CONFIG_FPE_NWFPE=y
-+# CONFIG_FPE_FASTFPE is not set
-+CONFIG_KCORE_ELF=y
-+# CONFIG_KCORE_AOUT is not set
-+# CONFIG_BINFMT_AOUT is not set
-+CONFIG_BINFMT_ELF=y
-+# CONFIG_BINFMT_MISC is not set
-+CONFIG_PM=y
-+CONFIG_APM=y
-+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-+CONFIG_APM_CPU_IDLE=y
-+CONFIG_APM_DISPLAY_BLANK=y
-+CONFIG_APM_RTC_IS_GMT=y
-+# CONFIG_ARTHUR is not set
-+CONFIG_CMDLINE="mem=20M root=/dev/mtdblock4"
-+# CONFIG_PFS168_CMDLINE is not set
-+# CONFIG_LEDS is not set
-+CONFIG_ALIGNMENT_TRAP=y
-+CONFIG_FREEPG_SIGNAL=y
-+
-+#
-+# Parallel port support
-+#
-+# CONFIG_PARPORT is not set
-+
-+#
-+# Memory Technology Devices (MTD)
-+#
-+CONFIG_MTD=y
-+# CONFIG_MTD_DEBUG is not set
-+CONFIG_MTD_PARTITIONS=y
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+# CONFIG_MTD_BOOTLDR_PARTS is not set
-+# CONFIG_MTD_AFS_PARTS is not set
-+
-+#
-+# User Modules And Translation Layers
-+#
-+CONFIG_MTD_CHAR=y
-+CONFIG_MTD_BLOCK=y
-+# CONFIG_FTL is not set
-+# CONFIG_NFTL is not set
-+
-+#
-+# RAM/ROM/Flash chip drivers
-+#
-+# CONFIG_MTD_CFI is not set
-+# CONFIG_MTD_CFI_INTELEXT is not set
-+# CONFIG_MTD_CFI_AMDSTD is not set
-+# CONFIG_MTD_AMDSTD is not set
-+# CONFIG_MTD_SHARP is not set
-+# CONFIG_MTD_SHARP16 is not set
-+CONFIG_MTD_COLLIE=y
-+# CONFIG_MTD_RAM is not set
-+# CONFIG_MTD_ROM is not set
-+# CONFIG_MTD_JEDEC is not set
-+
-+#
-+# Mapping drivers for chip access
-+#
-+# CONFIG_MTD_PHYSMAP is not set
-+# CONFIG_MTD_SUN_UFLASH is not set
-+# CONFIG_MTD_NORA is not set
-+# CONFIG_MTD_PNC2000 is not set
-+# CONFIG_MTD_RPXLITE is not set
-+# CONFIG_MTD_SC520CDP is not set
-+# CONFIG_MTD_NETSC520 is not set
-+# CONFIG_MTD_SBC_GXX is not set
-+# CONFIG_MTD_ELAN_104NC is not set
-+CONFIG_MTD_SA1100=y
-+# CONFIG_MTD_L7200 is not set
-+# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set
-+# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set
-+# CONFIG_MTD_DC21285 is not set
-+# CONFIG_MTD_IQ80310 is not set
-+# CONFIG_MTD_DBOX2 is not set
-+# CONFIG_MTD_CSTM_MIPS_IXX is not set
-+# CONFIG_MTD_CFI_FLAGADM is not set
-+# CONFIG_MTD_ARM_INTEGRATOR is not set
-+# CONFIG_MTD_MIXMEM is not set
-+# CONFIG_MTD_OCTAGON is not set
-+# CONFIG_MTD_VMAX is not set
-+# CONFIG_MTD_OCELOT is not set
-+
-+#
-+# Self-contained MTD device drivers
-+#
-+# CONFIG_MTD_PMC551 is not set
-+# CONFIG_MTD_SLRAM is not set
-+# CONFIG_MTD_MTDROM_L7200 is not set
-+# CONFIG_MTD_MTDRAM_L7200 is not set
-+# CONFIG_MTD_MTDROM_SA1100 is not set
-+CONFIG_MTD_MTDRAM_SA1100=y
-+CONFIG_MTDRAM_TOTAL_SIZE=12288
-+CONFIG_MTDRAM_ERASE_SIZE=1
-+CONFIG_MTDRAM_ABS_POS=C1400000
-+# CONFIG_MTD_MTDRAM is not set
-+
-+#
-+# Disk-On-Chip Device Drivers
-+#
-+# CONFIG_MTD_DOC1000 is not set
-+# CONFIG_MTD_DOC2000 is not set
-+# CONFIG_MTD_DOC2001 is not set
-+# CONFIG_MTD_DOCPROBE is not set
-+
-+#
-+# NAND Flash Device Drivers
-+#
-+# CONFIG_MTD_NAND is not set
-+
-+#
-+# Plug and Play configuration
-+#
-+# CONFIG_PNP is not set
-+# CONFIG_ISAPNP is not set
-+
-+#
-+# Block devices
-+#
-+# CONFIG_BLK_DEV_FD is not set
-+# CONFIG_BLK_DEV_XD is not set
-+# CONFIG_PARIDE is not set
-+# CONFIG_BLK_CPQ_DA is not set
-+# CONFIG_BLK_CPQ_CISS_DA is not set
-+# CONFIG_BLK_DEV_DAC960 is not set
-+CONFIG_BLK_DEV_LOOP=m
-+# CONFIG_BLK_DEV_NBD is not set
-+CONFIG_BLK_DEV_RAM=m
-+CONFIG_BLK_DEV_RAM_SIZE=1024
-+# CONFIG_BLK_DEV_INITRD is not set
-+
-+#
-+# Multi-device support (RAID and LVM)
-+#
-+# CONFIG_MD is not set
-+# CONFIG_BLK_DEV_MD is not set
-+# CONFIG_MD_LINEAR is not set
-+# CONFIG_MD_RAID0 is not set
-+# CONFIG_MD_RAID1 is not set
-+# CONFIG_MD_RAID5 is not set
-+# CONFIG_BLK_DEV_LVM is not set
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+CONFIG_PACKET_MMAP=y
-+CONFIG_NETLINK=y
-+# CONFIG_RTNETLINK is not set
-+# CONFIG_NETLINK_DEV is not set
-+# CONFIG_NETFILTER is not set
-+# CONFIG_FILTER is not set
-+CONFIG_UNIX=y
-+CONFIG_INET=y
-+# CONFIG_IP_MULTICAST is not set
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_INET_ECN is not set
-+# CONFIG_SYN_COOKIES is not set
-+# CONFIG_IPV6 is not set
-+# CONFIG_KHTTPD is not set
-+# CONFIG_ATM is not set
-+
-+#
-+#
-+#
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_LLC is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_FASTROUTE is not set
-+# CONFIG_NET_HW_FLOWCONTROL is not set
-+
-+#
-+# QoS and/or fair queueing
-+#
-+# CONFIG_NET_SCHED is not set
-+
-+#
-+# Network device support
-+#
-+CONFIG_NETDEVICES=y
-+
-+#
-+# ARCnet devices
-+#
-+# CONFIG_ARCNET is not set
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_ETHERTAP is not set
-+
-+#
-+# Ethernet (10 or 100Mbit)
-+#
-+CONFIG_NET_ETHERNET=y
-+# CONFIG_SUNLANCE is not set
-+# CONFIG_SUNBMAC is not set
-+# CONFIG_SUNQE is not set
-+# CONFIG_SUNLANCE is not set
-+# CONFIG_SUNGEM is not set
-+# CONFIG_NET_VENDOR_3COM is not set
-+# CONFIG_LANCE is not set
-+# CONFIG_NET_VENDOR_SMC is not set
-+# CONFIG_NET_VENDOR_RACAL is not set
-+# CONFIG_NET_ISA is not set
-+# CONFIG_NET_PCI is not set
-+# CONFIG_NET_POCKET is not set
-+
-+#
-+# Ethernet (1000 Mbit)
-+#
-+# CONFIG_ACENIC is not set
-+# CONFIG_ACENIC_OMIT_TIGON_I is not set
-+# CONFIG_MYRI_SBUS is not set
-+# CONFIG_HAMACHI is not set
-+# CONFIG_YELLOWFIN is not set
-+# CONFIG_SK98LIN is not set
-+# CONFIG_FDDI is not set
-+# CONFIG_HIPPI is not set
-+# CONFIG_PLIP is not set
-+CONFIG_PPP=y
-+# CONFIG_PPP_MULTILINK is not set
-+# CONFIG_PPP_FILTER is not set
-+CONFIG_PPP_ASYNC=y
-+# CONFIG_PPP_SYNC_TTY is not set
-+CONFIG_PPP_DEFLATE=y
-+CONFIG_PPP_BSDCOMP=y
-+# CONFIG_PPPOE is not set
-+# CONFIG_SLIP is not set
-+
-+#
-+# Wireless LAN (non-hamradio)
-+#
-+# CONFIG_NET_RADIO is not set
-+
-+#
-+# Token Ring devices
-+#
-+# CONFIG_TR is not set
-+# CONFIG_NET_FC is not set
-+# CONFIG_RCPCI is not set
-+# CONFIG_SHAPER is not set
-+
-+#
-+# Wan interfaces
-+#
-+# CONFIG_WAN is not set
-+
-+#
-+# PCMCIA network device support
-+#
-+CONFIG_NET_PCMCIA=y
-+# CONFIG_PCMCIA_3C589 is not set
-+# CONFIG_PCMCIA_3C574 is not set
-+# CONFIG_PCMCIA_FMVJ18X is not set
-+CONFIG_PCMCIA_PCNET=y
-+# CONFIG_PCMCIA_NMCLAN is not set
-+# CONFIG_PCMCIA_SMC91C92 is not set
-+# CONFIG_PCMCIA_XIRC2PS is not set
-+# CONFIG_ARCNET_COM20020_CS is not set
-+# CONFIG_PCMCIA_IBMTR is not set
-+# CONFIG_NET_PCMCIA_RADIO is not set
-+
-+#
-+# Amateur Radio support
-+#
-+# CONFIG_HAMRADIO is not set
-+
-+#
-+# IrDA (infrared) support
-+#
-+CONFIG_IRDA=y
-+
-+#
-+# IrDA protocols
-+#
-+# CONFIG_IRLAN is not set
-+# CONFIG_IRNET is not set
-+CONFIG_IRCOMM=y
-+# CONFIG_IRDA_ULTRA is not set
-+# CONFIG_IRDA_OPTIONS is not set
-+
-+#
-+# Infrared-port device drivers
-+#
-+
-+#
-+# SIR device drivers
-+#
-+CONFIG_IRTTY_SIR=y
-+CONFIG_IRPORT_SIR=y
-+
-+#
-+# Dongle support
-+#
-+# CONFIG_DONGLE is not set
-+
-+#
-+# FIR device drivers
-+#
-+# CONFIG_USB_IRDA is not set
-+# CONFIG_NSC_FIR is not set
-+# CONFIG_WINBOND_FIR is not set
-+# CONFIG_TOSHIBA_FIR is not set
-+# CONFIG_SMC_IRCC_FIR is not set
-+CONFIG_SA1100_FIR=y
-+
-+#
-+# ATA/IDE/MFM/RLL support
-+#
-+CONFIG_IDE=y
-+
-+#
-+# IDE, ATA and ATAPI Block devices
-+#
-+CONFIG_BLK_DEV_IDE=y
-+
-+#
-+# Please see Documentation/ide.txt for help/info on IDE drives
-+#
-+# CONFIG_BLK_DEV_HD_IDE is not set
-+# CONFIG_BLK_DEV_HD is not set
-+CONFIG_BLK_DEV_IDEDISK=y
-+# CONFIG_IDEDISK_MULTI_MODE is not set
-+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-+# CONFIG_BLK_DEV_IDEDISK_WD is not set
-+# CONFIG_BLK_DEV_COMMERIAL is not set
-+# CONFIG_BLK_DEV_TIVO is not set
-+CONFIG_BLK_DEV_IDECS=y
-+# CONFIG_BLK_DEV_IDECD is not set
-+# CONFIG_BLK_DEV_IDETAPE is not set
-+# CONFIG_BLK_DEV_IDEFLOPPY is not set
-+# CONFIG_BLK_DEV_IDESCSI is not set
-+
-+#
-+# IDE chipset support/bugfixes
-+#
-+# CONFIG_BLK_DEV_CMD640 is not set
-+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-+# CONFIG_BLK_DEV_ISAPNP is not set
-+# CONFIG_IDE_CHIPSETS is not set
-+# CONFIG_IDEDMA_AUTO is not set
-+# CONFIG_DMA_NONPCI is not set
-+# CONFIG_BLK_DEV_IDE_MODES is not set
-+
-+#
-+# SCSI support
-+#
-+# CONFIG_SCSI is not set
-+
-+#
-+# I2O device support
-+#
-+# CONFIG_I2O is not set
-+# CONFIG_I2O_BLOCK is not set
-+# CONFIG_I2O_LAN is not set
-+# CONFIG_I2O_SCSI is not set
-+# CONFIG_I2O_PROC is not set
-+
-+#
-+# ISDN subsystem
-+#
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input core support
-+#
-+# CONFIG_INPUT is not set
-+
-+#
-+# Character devices
-+#
-+CONFIG_VT=y
-+# CONFIG_VT_CONSOLE is not set
-+CONFIG_SERIAL=m
-+# CONFIG_SERIAL_FORCE16550A is not set
-+# CONFIG_SERIAL_EXTENDED is not set
-+# CONFIG_SERIAL_NONSTANDARD is not set
-+# CONFIG_SERIAL_21285 is not set
-+# CONFIG_SERIAL_21285_OLD is not set
-+# CONFIG_SERIAL_21285_CONSOLE is not set
-+# CONFIG_SERIAL_SA1100 is not set
-+# CONFIG_SERIAL_SA1100_OLD is not set
-+# CONFIG_SERIAL_SA1100_CONSOLE is not set
-+CONFIG_SA1100_DEFAULT_BAUDRATE=9600
-+CONFIG_SERIAL_COLLIE=y
-+# CONFIG_SERIAL_COLLIE_CONSOLE is not set
-+CONFIG_COLLIE_DEFAULT_BAUDRATE=9600
-+# CONFIG_SERIAL_AMBA is not set
-+# CONFIG_SERIAL_AMBA_CONSOLE is not set
-+# CONFIG_SERIAL_CLPS711X is not set
-+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-+CONFIG_UNIX98_PTYS=y
-+CONFIG_UNIX98_PTY_COUNT=32
-+CONFIG_UCB1200=y
-+CONFIG_TOUCHSCREEN_UCB1200=y
-+# CONFIG_AUDIO_UCB1200 is not set
-+# CONFIG_ADC_UCB1200 is not set
-+# CONFIG_TOUCHSCREEN_BITSY is not set
-+# CONFIG_PROFILER is not set
-+# CONFIG_PFS168_SPI is not set
-+# CONFIG_PFS168_DTMF is not set
-+# CONFIG_PFS168_MISC is not set
-+
-+#
-+# I2C support
-+#
-+# CONFIG_I2C is not set
-+
-+#
-+# Mice
-+#
-+# CONFIG_BUSMOUSE is not set
-+# CONFIG_MOUSE is not set
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_JOYSTICK is not set
-+
-+#
-+# Input core support is needed for joysticks
-+#
-+# CONFIG_QIC02_TAPE is not set
-+
-+#
-+# Watchdog Cards
-+#
-+# CONFIG_WATCHDOG is not set
-+# CONFIG_INTEL_RNG is not set
-+# CONFIG_NVRAM is not set
-+# CONFIG_RTC is not set
-+CONFIG_SA1100_RTC=y
-+# CONFIG_DTLK is not set
-+# CONFIG_R3964 is not set
-+# CONFIG_APPLICOM is not set
-+
-+#
-+# Ftape, the floppy tape device driver
-+#
-+# CONFIG_FTAPE is not set
-+# CONFIG_AGP is not set
-+# CONFIG_DRM is not set
-+
-+#
-+# PCMCIA character devices
-+#
-+CONFIG_PCMCIA_SERIAL_CS=m
-+
-+#
-+# Multimedia devices
-+#
-+# CONFIG_VIDEO_DEV is not set
-+
-+#
-+# File systems
-+#
-+# CONFIG_QUOTA is not set
-+# CONFIG_AUTOFS_FS is not set
-+# CONFIG_AUTOFS4_FS is not set
-+CONFIG_FS_SYNC=y
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_REISERFS_CHECK is not set
-+# CONFIG_ADFS_FS is not set
-+# CONFIG_ADFS_FS_RW is not set
-+# CONFIG_AFFS_FS is not set
-+# CONFIG_HFS_FS is not set
-+# CONFIG_BFS_FS is not set
-+CONFIG_FAT_FS=m
-+# CONFIG_MSDOS_FS is not set
-+# CONFIG_UMSDOS_FS is not set
-+CONFIG_VFAT_FS=m
-+# CONFIG_EFS_FS is not set
-+# CONFIG_JFFS_FS is not set
-+CONFIG_JFFS2_FS=y
-+CONFIG_JFFS2_FS_DEBUG=0
-+CONFIG_CRAMFS=m
-+# CONFIG_TMPFS is not set
-+CONFIG_RAMFS=y
-+# CONFIG_ISO9660_FS is not set
-+# CONFIG_JOLIET is not set
-+CONFIG_MINIX_FS=m
-+# CONFIG_VXFS_FS is not set
-+# CONFIG_NTFS_FS is not set
-+# CONFIG_NTFS_RW is not set
-+# CONFIG_HPFS_FS is not set
-+CONFIG_PROC_FS=y
-+# CONFIG_DEVFS_FS is not set
-+# CONFIG_DEVFS_MOUNT is not set
-+# CONFIG_DEVFS_DEBUG is not set
-+CONFIG_DEVPTS_FS=y
-+# CONFIG_QNX4FS_FS is not set
-+# CONFIG_QNX4FS_RW is not set
-+# CONFIG_ROMFS_FS is not set
-+CONFIG_EXT2_FS=y
-+# CONFIG_SYSV_FS is not set
-+# CONFIG_UDF_FS is not set
-+# CONFIG_UDF_RW is not set
-+# CONFIG_UFS_FS is not set
-+# CONFIG_UFS_FS_WRITE is not set
-+
-+#
-+# Network File Systems
-+#
-+# CONFIG_CODA_FS is not set
-+CONFIG_NFS_FS=m
-+CONFIG_NFS_V3=y
-+# CONFIG_ROOT_NFS is not set
-+# CONFIG_NFSD is not set
-+# CONFIG_NFSD_V3 is not set
-+CONFIG_SUNRPC=m
-+CONFIG_LOCKD=m
-+CONFIG_LOCKD_V4=y
-+CONFIG_SMB_FS=m
-+CONFIG_SMB_NLS_DEFAULT=y
-+CONFIG_SMB_NLS_REMOTE="cp437"
-+# CONFIG_NCP_FS is not set
-+# CONFIG_NCPFS_PACKET_SIGNING is not set
-+# CONFIG_NCPFS_IOCTL_LOCKING is not set
-+# CONFIG_NCPFS_STRONG is not set
-+# CONFIG_NCPFS_NFS_NS is not set
-+# CONFIG_NCPFS_OS2_NS is not set
-+# CONFIG_NCPFS_SMALLDOS is not set
-+# CONFIG_NCPFS_NLS is not set
-+# CONFIG_NCPFS_EXTRAS is not set
-+
-+#
-+# Partition Types
-+#
-+# CONFIG_PARTITION_ADVANCED is not set
-+CONFIG_MSDOS_PARTITION=y
-+CONFIG_SMB_NLS=y
-+CONFIG_NLS=y
-+
-+#
-+# Native Language Support
-+#
-+CONFIG_NLS_DEFAULT="iso8859-1"
-+# CONFIG_NLS_CODEPAGE_437 is not set
-+# CONFIG_NLS_CODEPAGE_737 is not set
-+# CONFIG_NLS_CODEPAGE_775 is not set
-+# CONFIG_NLS_CODEPAGE_850 is not set
-+# CONFIG_NLS_CODEPAGE_852 is not set
-+# CONFIG_NLS_CODEPAGE_855 is not set
-+# CONFIG_NLS_CODEPAGE_857 is not set
-+# CONFIG_NLS_CODEPAGE_860 is not set
-+# CONFIG_NLS_CODEPAGE_861 is not set
-+# CONFIG_NLS_CODEPAGE_862 is not set
-+# CONFIG_NLS_CODEPAGE_863 is not set
-+# CONFIG_NLS_CODEPAGE_864 is not set
-+# CONFIG_NLS_CODEPAGE_865 is not set
-+# CONFIG_NLS_CODEPAGE_866 is not set
-+# CONFIG_NLS_CODEPAGE_869 is not set
-+# CONFIG_NLS_CODEPAGE_936 is not set
-+# CONFIG_NLS_CODEPAGE_950 is not set
-+# CONFIG_NLS_CODEPAGE_932 is not set
-+# CONFIG_NLS_CODEPAGE_949 is not set
-+# CONFIG_NLS_CODEPAGE_874 is not set
-+# CONFIG_NLS_ISO8859_8 is not set
-+# CONFIG_NLS_CODEPAGE_1251 is not set
-+# CONFIG_NLS_ISO8859_1 is not set
-+# CONFIG_NLS_ISO8859_2 is not set
-+# CONFIG_NLS_ISO8859_3 is not set
-+# CONFIG_NLS_ISO8859_4 is not set
-+# CONFIG_NLS_ISO8859_5 is not set
-+# CONFIG_NLS_ISO8859_6 is not set
-+# CONFIG_NLS_ISO8859_7 is not set
-+# CONFIG_NLS_ISO8859_9 is not set
-+# CONFIG_NLS_ISO8859_13 is not set
-+# CONFIG_NLS_ISO8859_14 is not set
-+# CONFIG_NLS_ISO8859_15 is not set
-+# CONFIG_NLS_KOI8_R is not set
-+# CONFIG_NLS_KOI8_U is not set
-+# CONFIG_NLS_UTF8 is not set
-+
-+#
-+# Console drivers
-+#
-+CONFIG_PC_KEYMAP=y
-+# CONFIG_VGA_CONSOLE is not set
-+
-+#
-+# Frame-buffer support
-+#
-+CONFIG_FB=y
-+CONFIG_DUMMY_CONSOLE=y
-+# CONFIG_FB_L7200 is not set
-+# CONFIG_FB_IRIS is not set
-+CONFIG_FB_COLLIE=y
-+# CONFIG_COLLIE_LOGO_SCREEN is not set
-+# CONFIG_FB_ACORN is not set
-+# CONFIG_FB_CLPS711X is not set
-+# CONFIG_FB_CYBER2000 is not set
-+# CONFIG_FB_EPSON1356 is not set
-+# CONFIG_FB_SA1100 is not set
-+# CONFIG_FB_ANAKIN is not set
-+# CONFIG_FB_E1355 is not set
-+# CONFIG_FB_VIRTUAL is not set
-+CONFIG_FBCON_ADVANCED=y
-+# CONFIG_FBCON_MFB is not set
-+# CONFIG_FBCON_CFB2 is not set
-+# CONFIG_FBCON_CFB4 is not set
-+# CONFIG_FBCON_CFB8 is not set
-+CONFIG_FBCON_CFB16=y
-+# CONFIG_FBCON_CFB24 is not set
-+# CONFIG_FBCON_CFB32 is not set
-+# CONFIG_FBCON_AFB is not set
-+# CONFIG_FBCON_ILBM is not set
-+# CONFIG_FBCON_IPLAN2P2 is not set
-+# CONFIG_FBCON_IPLAN2P4 is not set
-+# CONFIG_FBCON_IPLAN2P8 is not set
-+# CONFIG_FBCON_MAC is not set
-+# CONFIG_FBCON_VGA_PLANES is not set
-+# CONFIG_FBCON_VGA is not set
-+# CONFIG_FBCON_HGA is not set
-+CONFIG_FBCON_ROTATE_R=y
-+# CONFIG_FBCON_ROTATE_L is not set
-+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-+CONFIG_FBCON_FONTS=y
-+CONFIG_FONT_8x8=y
-+# CONFIG_FONT_8x16 is not set
-+# CONFIG_FONT_SUN8x16 is not set
-+# CONFIG_FONT_SUN12x22 is not set
-+# CONFIG_FONT_6x11 is not set
-+# CONFIG_FONT_PEARL_8x8 is not set
-+# CONFIG_FONT_ACORN_8x8 is not set
-+
-+#
-+# Sound
-+#
-+CONFIG_SOUND=y
-+# CONFIG_SOUND_ASSABET_UDA1341 is not set
-+# CONFIG_SOUND_BITSY_UDA1341 is not set
-+# CONFIG_SOUND_SA1111_UDA1341 is not set
-+# CONFIG_SOUND_SA1100SSP is not set
-+CONFIG_SOUND_COLLIE_SSP=y
-+CONFIG_COLLIE_PCM1741=y
-+# CONFIG_COLLIE_PCM1717 is not set
-+# CONFIG_SOUND_CMPCI is not set
-+# CONFIG_SOUND_EMU10K1 is not set
-+# CONFIG_SOUND_FUSION is not set
-+# CONFIG_SOUND_CS4281 is not set
-+# CONFIG_SOUND_ES1370 is not set
-+# CONFIG_SOUND_ES1371 is not set
-+# CONFIG_SOUND_ESSSOLO1 is not set
-+# CONFIG_SOUND_MAESTRO is not set
-+# CONFIG_SOUND_MAESTRO3 is not set
-+# CONFIG_SOUND_ICH is not set
-+# CONFIG_SOUND_SONICVIBES is not set
-+# CONFIG_SOUND_TRIDENT is not set
-+# CONFIG_SOUND_MSNDCLAS is not set
-+# CONFIG_SOUND_MSNDPIN is not set
-+# CONFIG_SOUND_VIA82CXXX is not set
-+# CONFIG_MIDI_VIA82CXXX is not set
-+# CONFIG_SOUND_OSS is not set
-+# CONFIG_SOUND_TVMIXER is not set
-+
-+#
-+# USB support
-+#
-+# CONFIG_USB is not set
-+
-+#
-+# USB Device Support
-+#
-+CONFIG_USBD=m
-+CONFIG_USBD_VENDORID=4dd
-+CONFIG_USBD_PRODUCTID=8002
-+CONFIG_USBD_PRODUCT_NAME="SL Series"
-+CONFIG_USBD_MANUFACTURER="Sharp"
-+CONFIG_USBD_USE_SERIAL_NUMBER=y
-+CONFIG_USBD_SERIAL_NUMBER_STR="A01234"
-+CONFIG_USBD_SELFPOWERED=y
-+CONFIG_USBD_MONITOR=m
-+
-+#
-+#
-+#
-+CONFIG_USBD_PROCFS=y
-+
-+#
-+# USB Device functions --
-+#
-+
-+#
-+# Network Function
-+#
-+CONFIG_USBD_NET=m
-+CONFIG_USBD_NET_VENDORID=4DD
-+CONFIG_USBD_NET_PRODUCTID=8004
-+CONFIG_USBD_NET_IFNAME="usbd"
-+CONFIG_USBD_NET_OUT_ENDPOINT=1
-+CONFIG_USBD_NET_OUT_PKTSIZE=64
-+CONFIG_USBD_NET_IN_ENDPOINT=2
-+CONFIG_USBD_NET_IN_PKTSIZE=64
-+# CONFIG_USBD_NET_ALWAYSUP is not set
-+CONFIG_USBD_NET_CDC=y
-+CONFIG_USBD_NET_REMOTE_MACADDR="400002000001"
-+CONFIG_USBD_NET_REMOTE_OUI=400002
-+CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-+CONFIG_USBD_NET_LOCAL_OUI=400001
-+
-+#
-+# Serial Function
-+#
-+CONFIG_USBD_SERIAL=m
-+CONFIG_USBD_SERIAL_VENDORID=4dd
-+CONFIG_USBD_SERIAL_PRODUCTID=8002
-+# CONFIG_USBD_SERIAL_CDC is not set
-+CONFIG_USBD_SERIAL_OUT_ENDPOINT=1
-+CONFIG_USBD_SERIAL_IN_PKTSIZE=64
-+CONFIG_USBD_SERIAL_IN_ENDPOINT=2
-+CONFIG_USBD_SERIAL_OUT_PKTSIZE=64
-+# CONFIG_USBD_SERIAL_SAFE is not set
-+
-+#
-+# USB Device bus interfaces --
-+#
-+
-+#
-+# Intel StrongArm SA-1110 Bus Interface Driver
-+#
-+CONFIG_USBD_SA1100_BUS=m
-+# CONFIG_SA1100_NEW_DMA_COOPERATION is not set
-+CONFIG_USBD_STALL_TIMEOUT=0
-+CONFIG_USBD_STALL_DISCONNECT_DURATION=2
-+# CONFIG_USBD_TRAFFIC_KEEPAWAKE is not set
-+
-+#
-+# Generic Bus Interface
-+#
-+# CONFIG_USBD_GENERIC_BUS is not set
-+
-+#
-+# Bluetooth support
-+#
-+# CONFIG_BLUEZ is not set
-+
-+#
-+# Kernel hacking
-+#
-+# CONFIG_NO_FRAME_POINTER is not set
-+# CONFIG_DEBUG_ERRORS is not set
-+# CONFIG_DEBUG_USER is not set
-+# CONFIG_DEBUG_INFO is not set
-+CONFIG_MAGIC_SYSRQ=y
-+# CONFIG_NO_PGT_CACHE is not set
-+# CONFIG_DEBUG_LL is not set
-+# CONFIG_DEBUG_DC21285_PORT is not set
-+# CONFIG_DEBUG_CLPS711X_UART2 is not set
-diff -Nur linux/drivers/mtd/Config.in /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/Config.in
---- linux/drivers/mtd/Config.in 2003-05-13 16:18:19.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/Config.in 2003-06-23 01:47:03.000000000 +0700
-@@ -14,6 +14,7 @@
- dep_tristate ' MTD partitioning support' CONFIG_MTD_PARTITIONS $CONFIG_MTD
- dep_tristate ' MTD concatenating support' CONFIG_MTD_CONCAT $CONFIG_MTD
- dep_tristate ' RedBoot partition table parsing' CONFIG_MTD_REDBOOT_PARTS $CONFIG_MTD_PARTITIONS
-+ dep_tristate ' Cacko Hybrid partition table' CONFIG_CACKO_HYBRID_PARTITIONS $CONFIG_MTD_PARTITIONS $CONFIG_SA1100_COLLIE
- dep_tristate ' Command line partition table parsing' CONFIG_MTD_CMDLINE_PARTS $CONFIG_MTD_PARTITIONS
- if [ "$CONFIG_ARM" = "y" ]; then
- dep_tristate ' ARM Firmware Suite partition parsing' CONFIG_MTD_AFS_PARTS $CONFIG_MTD_PARTITIONS
-diff -Nur linux/drivers/mtd/chips/Config.in /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/Config.in
---- linux/drivers/mtd/chips/Config.in 2003-05-13 16:18:19.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/Config.in 2003-06-23 01:47:03.000000000 +0700
-@@ -49,6 +49,7 @@
- dep_tristate ' Support for RAM chips in bus mapping' CONFIG_MTD_RAM $CONFIG_MTD
- dep_tristate ' Support for ROM chips in bus mapping' CONFIG_MTD_ROM $CONFIG_MTD
- dep_tristate ' Support for absent chips in bus mapping' CONFIG_MTD_ABSENT $CONFIG_MTD
-+dep_tristate ' pre-CFI Sharp (32) chip support (Collie)' CONFIG_MTD_COLLIE $CONFIG_MTD
-
- bool ' Older (theoretically obsoleted now) drivers for non-CFI chips' CONFIG_MTD_OBSOLETE_CHIPS
- dep_tristate ' AMD compatible flash chip support (non-CFI)' CONFIG_MTD_AMDSTD $CONFIG_MTD $CONFIG_MTD_OBSOLETE_CHIPS
-diff -Nur linux/drivers/mtd/chips/Makefile /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/Makefile
---- linux/drivers/mtd/chips/Makefile 2003-05-13 16:18:19.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/Makefile 2003-06-23 01:47:03.000000000 +0700
-@@ -25,6 +25,7 @@
- obj-$(CONFIG_MTD_RAM) += map_ram.o
- obj-$(CONFIG_MTD_ROM) += map_rom.o
- obj-$(CONFIG_MTD_SHARP) += sharp.o
-+obj-$(CONFIG_MTD_COLLIE) += collie_sharp.o
- obj-$(CONFIG_MTD_ABSENT) += map_absent.o
-
- include $(TOPDIR)/Rules.make
-diff -Nur linux/drivers/mtd/chips/collie_sharp.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/collie_sharp.c
---- linux/drivers/mtd/chips/collie_sharp.c 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/collie_sharp.c 2003-06-23 01:47:03.000000000 +0700
-@@ -0,0 +1,731 @@
-+/*
-+ * MTD chip driver for non-CFI Sharp flash chips
-+ *
-+ * Copyright 2000,2001 David A. Schleef <ds@schleef.org>
-+ * 2000,2001 Lineo, Inc.
-+ *
-+ * $Id: sharp.c,v 1.4 2001/04/29 16:21:17 dwmw2 Exp $
-+ *
-+ * Devices supported:
-+ * LH28F016SCT Symmetrical block flash memory, 2Mx8
-+ * LH28F008SCT Symmetrical block flash memory, 1Mx8
-+ *
-+ * Documentation:
-+ * http://www.sharpmeg.com/datasheets/memic/flashcmp/
-+ * http://www.sharpmeg.com/datasheets/memic/flashcmp/01symf/16m/016sctl9.pdf
-+ * 016sctl9.pdf
-+ *
-+ * Limitations:
-+ * This driver only supports 4x1 arrangement of chips.
-+ * Not tested on anything but PowerPC.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/version.h>
-+#include <linux/types.h>
-+#include <linux/sched.h>
-+#include <linux/errno.h>
-+#include <linux/mtd/map.h>
-+#include <linux/mtd/cfi.h>
-+#include <linux/delay.h>
-+#include <asm/hardware.h>
-+
-+#define CMD_RESET 0xffffffff
-+#define CMD_READ_ID 0x90909090
-+#define CMD_READ_STATUS 0x70707070
-+#define CMD_CLEAR_STATUS 0x50505050
-+#define CMD_BLOCK_ERASE_1 0x20202020
-+#define CMD_BLOCK_ERASE_2 0xd0d0d0d0
-+#define CMD_BYTE_WRITE 0x40404040
-+#define CMD_SUSPEND 0xb0b0b0b0
-+#define CMD_RESUME 0xd0d0d0d0
-+#define CMD_SET_BLOCK_LOCK_1 0x60606060
-+#define CMD_SET_BLOCK_LOCK_2 0x01010101
-+#define CMD_SET_MASTER_LOCK_1 0x60606060
-+#define CMD_SET_MASTER_LOCK_2 0xf1f1f1f1
-+#define CMD_CLEAR_BLOCK_LOCKS_1 0x60606060
-+#define CMD_CLEAR_BLOCK_LOCKS_2 0xd0d0d0d0
-+
-+#define SR_READY 0x80808080 // 1 = ready
-+#define SR_ERASE_SUSPEND 0x40404040 // 1 = block erase suspended
-+#define SR_ERROR_ERASE 0x20202020 // 1 = error in block erase or clear lock bits
-+#define SR_ERROR_WRITE 0x10101010 // 1 = error in byte write or set lock bit
-+#define SR_VPP 0x08080808 // 1 = Vpp is low
-+#define SR_WRITE_SUSPEND 0x04040404 // 1 = byte write suspended
-+#define SR_PROTECT 0x02020202 // 1 = lock bit set
-+#define SR_RESERVED 0x01010101
-+
-+#define SR_ERRORS (SR_ERROR_ERASE|SR_ERROR_WRITE|SR_VPP|SR_PROTECT)
-+
-+#define BLOCK_MASK 0xfffe0000
-+/* Configuration options */
-+
-+//#undef AUTOUNLOCK /* automatically unlocks blocks before erasing */
-+#define AUTOUNLOCK
-+struct mtd_info *collie_probe(struct map_info *);
-+
-+static int collie_probe_map(struct map_info *map,struct mtd_info *mtd);
-+
-+static int collie_read(struct mtd_info *mtd, loff_t from, size_t len,
-+ size_t *retlen, u_char *buf);
-+static int collie_write(struct mtd_info *mtd, loff_t from, size_t len,
-+ size_t *retlen, const u_char *buf);
-+static int collie_erase(struct mtd_info *mtd, struct erase_info *instr);
-+static void collie_sync(struct mtd_info *mtd);
-+static int collie_suspend(struct mtd_info *mtd);
-+static void collie_resume(struct mtd_info *mtd);
-+static void collie_destroy(struct mtd_info *mtd);
-+
-+static int collie_write_oneword(struct map_info *map, struct flchip *chip,
-+ unsigned long adr, __u32 datum);
-+static int collie_erase_oneblock(struct map_info *map, struct flchip *chip,
-+ unsigned long adr);
-+#ifdef AUTOUNLOCK
-+static inline void collie_unlock_oneblock(struct map_info *map, struct flchip *chip,
-+ unsigned long adr);
-+#endif
-+
-+
-+struct collie_info{
-+ struct flchip *chip;
-+ int bogus;
-+ int chipshift;
-+ int numchips;
-+ struct flchip chips[1];
-+};
-+
-+struct mtd_info *collie_probe(struct map_info *map);
-+static void collie_destroy(struct mtd_info *mtd);
-+
-+static struct mtd_chip_driver collie_chipdrv = {
-+ probe: collie_probe,
-+ destroy: collie_destroy,
-+ name: "collie",
-+ module: THIS_MODULE
-+};
-+static void collie_udelay(unsigned long i){
-+ if (in_interrupt()) {
-+ udelay(i);
-+ } else {
-+ schedule();
-+ }
-+
-+}
-+struct mtd_info *collie_probe(struct map_info *map)
-+{
-+ struct mtd_info *mtd = NULL;
-+ struct collie_info *collie = NULL;
-+ int width;
-+
-+ mtd = kmalloc(sizeof(*mtd), GFP_KERNEL);
-+ if(!mtd)
-+ return NULL;
-+
-+ collie = kmalloc(sizeof(*collie), GFP_KERNEL);
-+ if(!collie)
-+ return NULL;
-+
-+ memset(mtd, 0, sizeof(*mtd));
-+
-+ width = collie_probe_map(map,mtd);
-+ if(!width){
-+ kfree(mtd);
-+ kfree(collie);
-+ return NULL;
-+ }
-+ //MSC0 = 0xfff8e352;
-+ MSC0 = 0xfff8fff8;
-+
-+ mtd->priv = map;
-+ mtd->type = MTD_NORFLASH;
-+ mtd->erase = collie_erase;
-+ mtd->read = collie_read;
-+ mtd->write = collie_write;
-+ mtd->sync = collie_sync;
-+ mtd->suspend = collie_suspend;
-+ mtd->resume = collie_resume;
-+ mtd->flags = MTD_CAP_NORFLASH;
-+ mtd->name = map->name;
-+
-+ memset(collie, 0, sizeof(*collie));
-+
-+ //collie->chipshift = 23;
-+ collie->chipshift = 24;
-+ collie->numchips = 1;
-+ collie->chips[0].start = 0;
-+ collie->chips[0].state = FL_READY;
-+ collie->chips[0].mutex = &collie->chips[0]._spinlock;
-+ collie->chips[0].word_write_time = 0;
-+ init_waitqueue_head(&collie->chips[0].wq);
-+ spin_lock_init(&collie->chips[0]._spinlock);
-+
-+ map->fldrv = &collie_chipdrv;
-+ map->fldrv_priv = collie;
-+
-+ MOD_INC_USE_COUNT;
-+ return mtd;
-+}
-+
-+static int collie_probe_map(struct map_info *map,struct mtd_info *mtd)
-+{
-+ unsigned long tmp;
-+ unsigned long base = 0;
-+ u32 read0, read4;
-+ int width = 4;
-+
-+ tmp = map->read32(map, base+0);
-+
-+ map->write32(map, CMD_READ_ID, base+0);
-+
-+ read0=map->read32(map, base+0);
-+ read4=map->read32(map, base+4);
-+ //if(read0 == 0x89898989){
-+ if(read0 == 0x00b000b0){
-+ //printk("Looks like collie flash\n");
-+ switch(read4){
-+ case 0xaaaaaaaa:
-+ case 0xa0a0a0a0:
-+ /* aa - LH28F016SCT-L95 2Mx8, 32 64k blocks*/
-+ /* a0 - LH28F016SCT-Z4 2Mx8, 32 64k blocks*/
-+ mtd->erasesize = 0x10000 * width;
-+ mtd->size = 0x200000 * width;
-+ return width;
-+ case 0xa6a6a6a6:
-+ /* a6 - LH28F008SCT-L12 1Mx8, 16 64k blocks*/
-+ /* a6 - LH28F008SCR-L85 1Mx8, 16 64k blocks*/
-+ mtd->erasesize = 0x10000 * width;
-+ mtd->size = 0x100000 * width;
-+ return width;
-+ case 0x00b000b0:
-+ /* a6 - LH28F640BFHE 8 64k * 2 chip blocks*/
-+ mtd->erasesize = 0x10000 * width / 2;
-+ mtd->size = 0x800000 * width / 2;
-+ return width;
-+#if 0
-+ case 0x00000000: /* unknown */
-+ /* XX - LH28F004SCT 512kx8, 8 64k blocks*/
-+ mtd->erasesize = 0x10000 * width;
-+ mtd->size = 0x100000 * width;
-+ return width;
-+#endif
-+ default:
-+ printk("Sort-of looks like collie flash, 0x%08x 0x%08x\n",
-+ read0,read4);
-+ }
-+ }else if((map->read32(map, base+0) == CMD_READ_ID)){
-+ /* RAM, probably */
-+ printk("Looks like RAM\n");
-+ map->write32(map, tmp, base+0);
-+ }else{
-+ printk("Doesn't look like collie flash, 0x%08x 0x%08x\n",
-+ read0,read4);
-+ }
-+
-+ return 0;
-+}
-+
-+/* This function returns with the chip->mutex lock held. */
-+static inline int collie_wait(struct map_info *map, struct flchip *chip)
-+{
-+ __u32 status;
-+ unsigned long timeo = jiffies + HZ;
-+ DECLARE_WAITQUEUE(wait, current);
-+ int adr = 0;
-+
-+ //timeo = jiffies + HZ * 10;
-+retry:
-+ spin_lock_bh(chip->mutex);
-+
-+ switch(chip->state){
-+ case FL_READY:
-+ map->write32(map,CMD_READ_STATUS,adr);
-+ chip->state = FL_STATUS;
-+ case FL_STATUS:
-+ status = map->read32(map,adr);
-+ if((status & SR_READY)==SR_READY)
-+ break;
-+ //printk(".status=%08x\n",status);
-+ spin_unlock_bh(chip->mutex);
-+ if (time_after(jiffies, timeo)) {
-+ printk("Waiting for chip to be ready timed out in erase\n");
-+ return -EIO;
-+ }
-+ collie_udelay(1);
-+ goto retry;
-+ default:
-+ //printk("Waiting for chip\n");
-+
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ add_wait_queue(&chip->wq, &wait);
-+
-+ spin_unlock_bh(chip->mutex);
-+
-+ //schedule();
-+ collie_udelay(1);
-+
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&chip->wq, &wait);
-+
-+ if(signal_pending(current))
-+ return -EINTR;
-+
-+ timeo = jiffies + HZ;
-+
-+ goto retry;
-+ }
-+
-+ map->write32(map,CMD_RESET, adr);
-+
-+ chip->state = FL_READY;
-+
-+ return 0;
-+}
-+
-+static void collie_release(struct flchip *chip)
-+{
-+ wake_up(&chip->wq);
-+ spin_unlock_bh(chip->mutex);
-+}
-+
-+static int collie_read(struct mtd_info *mtd, loff_t from, size_t len,
-+ size_t *retlen, u_char *buf)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct collie_info *collie = map->fldrv_priv;
-+ int chipnum;
-+ int ret = 0;
-+ int ofs = 0;
-+
-+ chipnum = (from >> collie->chipshift);
-+ ofs = from & ((1 << collie->chipshift)-1);
-+
-+ *retlen = 0;
-+
-+ while(len){
-+ unsigned long thislen;
-+
-+ if(chipnum>=collie->numchips)
-+ break;
-+
-+ thislen = len;
-+ if(ofs+thislen >= (1<<collie->chipshift))
-+ thislen = (1<<collie->chipshift) - ofs;
-+
-+ ret = collie_wait(map,&collie->chips[chipnum]);
-+ if(ret<0)
-+ break;
-+
-+ map->copy_from(map,buf,ofs,thislen);
-+
-+ collie_release(&collie->chips[chipnum]);
-+
-+ *retlen += thislen;
-+ len -= thislen;
-+ buf += thislen;
-+
-+ ofs = 0;
-+ chipnum++;
-+ }
-+ return ret;
-+}
-+
-+static int collie_write(struct mtd_info *mtd, loff_t to, size_t len,
-+ size_t *retlen, const u_char *buf)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct collie_info *collie = map->fldrv_priv;
-+ int ret = 0;
-+ int i,j;
-+ int chipnum;
-+ unsigned long ofs;
-+ union { u32 l; unsigned char uc[4]; } tbuf;
-+
-+ *retlen = 0;
-+
-+ while(len){
-+ tbuf.l = 0xffffffff;
-+ chipnum = to >> collie->chipshift;
-+ ofs = to & ((1<<collie->chipshift)-1);
-+
-+ j=0;
-+ for(i=ofs&3;i<4 && len;i++){
-+ tbuf.uc[i] = *buf;
-+ buf++;
-+ to++;
-+ len--;
-+ j++;
-+ }
-+ collie_write_oneword(map, &collie->chips[chipnum], ofs&~3, tbuf.l);
-+ if(ret<0)
-+ return ret;
-+ (*retlen)+=j;
-+ }
-+
-+ return 0;
-+}
-+
-+static int collie_write_oneword(struct map_info *map, struct flchip *chip,
-+ unsigned long adr, __u32 datum)
-+{
-+ int ret;
-+ int try;
-+ int i;
-+ u32 status = 0;
-+
-+ ret = collie_wait(map,chip);
-+ if(ret<0)
-+ return ret;
-+
-+ for(try=0;try<10;try++){
-+ map->write32(map,CMD_BYTE_WRITE,adr);
-+ /* cpu_to_le32 -> hack to fix the writel be->le conversion */
-+ map->write32(map,cpu_to_le32(datum),adr);
-+
-+ chip->state = FL_WRITING;
-+
-+ map->write32(map,CMD_READ_STATUS,adr);
-+
-+ for(i=0;i<100;i++){
-+ status = map->read32(map,adr);
-+ if((status & SR_READY)==SR_READY)
-+ break;
-+ }
-+
-+#ifdef AUTOUNLOCK
-+ if (status & SR_PROTECT){ /* lock block */
-+#if 0
-+ map->write32(map,CMD_CLEAR_BLOCK_LOCKS_1,adr);
-+ map->write32(map,CMD_CLEAR_BLOCK_LOCKS_2,adr);
-+#else
-+ map->write32(map,CMD_CLEAR_STATUS,adr);
-+ //map->write32(map,CMD_RESET,adr);
-+
-+ collie_unlock_oneblock(map,chip,adr);
-+
-+ map->write32(map,CMD_CLEAR_STATUS,adr);
-+ map->write32(map,CMD_RESET,adr);
-+
-+#endif
-+ continue;
-+ }
-+#endif
-+ if(i==100){
-+ printk("collie: timed out writing\n");
-+ }
-+
-+ if(!(status&SR_ERRORS))
-+ break;
-+
-+ printk("collie: error writing byte at addr=%08lx status=%08x\n",adr,status);
-+
-+ map->write32(map,CMD_CLEAR_STATUS,adr);
-+ }
-+ map->write32(map,CMD_RESET,adr);
-+ chip->state = FL_READY;
-+
-+ collie_release(chip);
-+
-+ return 0;
-+}
-+
-+static int collie_erase(struct mtd_info *mtd, struct erase_info *instr)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct collie_info *collie = map->fldrv_priv;
-+ unsigned long adr,len;
-+ int chipnum, ret=0;
-+
-+//printk("collie_erase()\n");
-+ if(instr->addr & (mtd->erasesize - 1))
-+ return -EINVAL;
-+ if(instr->len & (mtd->erasesize - 1))
-+ return -EINVAL;
-+ if(instr->len + instr->addr > mtd->size)
-+ return -EINVAL;
-+
-+ chipnum = instr->addr >> collie->chipshift;
-+ adr = instr->addr & ((1<<collie->chipshift)-1);
-+ len = instr->len;
-+//printk("--+* erase adr %08x [%08x]\n",adr,len);
-+ while(len){
-+ ret = collie_erase_oneblock(map, &collie->chips[chipnum], adr);
-+ if(ret)return ret;
-+ if (adr >= 0xfe0000) {
-+ adr += mtd->erasesize / 8;
-+ len -= mtd->erasesize / 8;
-+ } else {
-+
-+ adr += mtd->erasesize;
-+ len -= mtd->erasesize;
-+ }
-+ if(adr >> collie->chipshift){
-+ adr = 0;
-+ chipnum++;
-+ if(chipnum>=collie->numchips)
-+ break;
-+ }
-+ }
-+ instr->state = MTD_ERASE_DONE;
-+ if(instr->callback)
-+ instr->callback(instr);
-+//printk("--+* erase end %08x \n\n",adr);
-+
-+ return 0;
-+}
-+
-+static inline int collie_do_wait_for_ready(struct map_info *map, struct flchip *chip,
-+ unsigned long adr)
-+{
-+ int ret;
-+ int timeo;
-+ int status;
-+ DECLARE_WAITQUEUE(wait, current);
-+
-+ map->write32(map,CMD_READ_STATUS,adr);
-+ status = map->read32(map,adr);
-+
-+ timeo = jiffies + HZ * 10;
-+
-+ while(jiffies<timeo){
-+ map->write32(map,CMD_READ_STATUS,adr);
-+ status = map->read32(map,adr);
-+ if((status & SR_READY)==SR_READY){
-+ ret = 0;
-+ goto out;
-+ }
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ add_wait_queue(&chip->wq, &wait);
-+
-+ spin_unlock_bh(chip->mutex);
-+
-+ schedule_timeout(1);
-+ schedule();
-+
-+ spin_lock_bh(chip->mutex);
-+
-+ remove_wait_queue(&chip->wq, &wait);
-+ set_current_state(TASK_RUNNING);
-+#if 0
-+ if (signal_pending(current)){
-+ ret = -EINTR;
-+ goto out;
-+ }
-+#endif
-+
-+ }
-+ ret = -ETIME;
-+out:
-+ return ret;
-+}
-+
-+static int collie_erase_oneblock(struct map_info *map, struct flchip *chip,
-+ unsigned long adr)
-+{
-+ int ret;
-+ //int timeo;
-+ int status;
-+ //int i;
-+
-+ //printk("collie_erase_oneblock()\n");
-+
-+ ret = collie_wait(map,chip);
-+ if (ret <0)
-+ return ret;
-+#ifdef AUTOUNLOCK
-+ /* This seems like a good place to do an unlock */
-+ collie_unlock_oneblock(map,chip,adr);
-+#endif
-+
-+ map->write32(map,CMD_BLOCK_ERASE_1,adr);
-+ map->write32(map,CMD_BLOCK_ERASE_2,adr);
-+
-+ chip->state = FL_ERASING;
-+
-+ ret = collie_do_wait_for_ready(map,chip,adr);
-+ if(ret<0){
-+ spin_unlock_bh(chip->mutex);
-+ return ret;
-+ }
-+ map->write32(map,CMD_READ_STATUS,adr);
-+ status = map->read32(map,adr);
-+ if(!(status&SR_ERRORS)){
-+ map->write32(map,CMD_RESET,adr);
-+ chip->state = FL_READY;
-+ spin_unlock_bh(chip->mutex);
-+ return 0;
-+ }
-+
-+ printk("collie: error erasing block at addr=%08lx status=%08x\n",adr,status);
-+ map->write32(map,CMD_CLEAR_STATUS,adr);
-+
-+ //wake_up(&chip->wq);
-+ //spin_unlock_bh(chip->mutex);
-+
-+ collie_release(chip);
-+
-+ return -EIO;
-+}
-+
-+#ifdef AUTOUNLOCK
-+static inline void collie_unlock_oneblock(struct map_info *map, struct flchip *chip,
-+ unsigned long adr)
-+{
-+ u32 status;
-+
-+ map->write32(map,CMD_CLEAR_BLOCK_LOCKS_1,adr & BLOCK_MASK);
-+ map->write32(map,CMD_CLEAR_BLOCK_LOCKS_2,adr & BLOCK_MASK);
-+
-+ collie_do_wait_for_ready(map,chip,adr);
-+
-+ status = map->read32(map,adr);
-+ if(!(status&SR_ERRORS)){
-+ map->write32(map,CMD_RESET,adr);
-+ chip->state = FL_READY;
-+ return;
-+ }
-+
-+ printk("collie: error unlocking block at addr=%08lx status=%08x\n",adr,status);
-+ map->write32(map,CMD_CLEAR_STATUS,adr);
-+}
-+#endif
-+
-+static void collie_sync(struct mtd_info *mtd)
-+{
-+ //printk("collie_sync()\n");
-+}
-+
-+static int collie_suspend(struct mtd_info *mtd)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct collie_info *collie = map->fldrv_priv;
-+ int i;
-+ struct flchip *chip;
-+ int ret = 0;
-+
-+ //printk("collie_suspend()\n");
-+#if 1
-+ for (i=0; !ret && i<collie->numchips; i++) {
-+ chip = &collie->chips[i];
-+ ret = collie_wait(map,chip);
-+
-+
-+ if (ret){
-+ ret = -EAGAIN;
-+ } else {
-+ chip->state = FL_PM_SUSPENDED;
-+ spin_unlock_bh(chip->mutex);
-+ }
-+ }
-+#else
-+ for (i=0; !ret && i<collie->numchips; i++) {
-+ chip = &collie->chips[i];
-+
-+ spin_lock_bh(chip->mutex);
-+
-+ switch(chip->state) {
-+ case FL_READY:
-+ case FL_STATUS:
-+ chip->oldstate = chip->state;
-+ chip->state = FL_PM_SUSPENDED;
-+ /* No need to wake_up() on this state change -
-+ * as the whole point is that nobody can do anything
-+ * with the chip now anyway.
-+ */
-+ case FL_PM_SUSPENDED:
-+ break;
-+
-+ default:
-+ ret = -EAGAIN;
-+ break;
-+ }
-+ spin_unlock_bh(chip->mutex);
-+ }
-+
-+ /* Unlock the chips again */
-+ if (ret) {
-+ for (i--; i >=0; i--) {
-+ chip = &collie->chips[i];
-+
-+ spin_lock_bh(chip->mutex);
-+ if (chip->state == FL_PM_SUSPENDED) {
-+ chip->state = chip->oldstate;
-+ wake_up(&chip->wq);
-+ }
-+ spin_unlock_bh(chip->mutex);
-+ }
-+ }
-+#endif
-+ return ret;
-+
-+}
-+
-+static void collie_resume(struct mtd_info *mtd)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct collie_info *collie = map->fldrv_priv;
-+ int i;
-+ struct flchip *chip;
-+
-+ //printk("collie_resume()\n");
-+#if 0
-+ for (i=0; i<collie->numchips; i++) {
-+ chip = &collie->chips[i];
-+ if (chip->state == FL_PM_SUSPENDED) {
-+ map->write32(map,CMD_RESET,chip->start);
-+ chip->state = FL_READY;
-+ collie_release(chip);
-+ }
-+ }
-+#else
-+ for (i=0; i<collie->numchips; i++) {
-+ chip = &collie->chips[i];
-+
-+ spin_lock_bh(chip->mutex);
-+
-+ if (chip->state == FL_PM_SUSPENDED) {
-+ /* We need to force it back to a known state. */
-+ //cfi_write(map, CMD(0xff), 0);
-+ map->write32(map,CMD_RESET,chip->start);
-+ chip->state = FL_READY;
-+ wake_up(&chip->wq);
-+ }
-+
-+ spin_unlock_bh(chip->mutex);
-+ }
-+#endif
-+}
-+
-+static void collie_destroy(struct mtd_info *mtd)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct collie_info *collie = map->fldrv_priv;
-+
-+ //printk("collie_destroy()\n");
-+ //kfree(collie->cmdset_priv);
-+ kfree(collie);
-+
-+}
-+
-+#if LINUX_VERSION_CODE < 0x020212 && defined(MODULE)
-+#define collie_probe_init init_module
-+#define collie_probe_exit cleanup_module
-+#endif
-+
-+int __init collie_probe_init(void)
-+{
-+ printk("MTD Sharp chip driver <ds@lineo.com>\n");
-+
-+ register_mtd_chip_driver(&collie_chipdrv);
-+
-+ return 0;
-+}
-+
-+static void __exit collie_probe_exit(void)
-+{
-+ unregister_mtd_chip_driver(&collie_chipdrv);
-+}
-+
-+module_init(collie_probe_init);
-+module_exit(collie_probe_exit);
-+
-diff -Nur linux/drivers/mtd/maps/Config.in /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/Config.in
---- linux/drivers/mtd/maps/Config.in 2003-05-13 16:18:19.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/Config.in 2003-06-23 01:47:03.000000000 +0700
-@@ -76,7 +76,7 @@
- dep_tristate ' CFI Flash device mapped on Nora' CONFIG_MTD_NORA $CONFIG_MTD_CFI
- dep_tristate ' CFI Flash device mapped on ARM Integrator/P720T' CONFIG_MTD_ARM_INTEGRATOR $CONFIG_MTD_CFI
- dep_tristate ' Cirrus CDB89712 evaluation board mappings' CONFIG_MTD_CDB89712 $CONFIG_MTD_CFI $CONFIG_ARCH_CDB89712
-- dep_tristate ' CFI Flash device mapped on StrongARM SA11x0' CONFIG_MTD_SA1100 $CONFIG_MTD_CFI $CONFIG_ARCH_SA1100 $CONFIG_MTD_PARTITIONS
-+ dep_tristate ' CFI Flash device mapped on StrongARM SA11x0' CONFIG_MTD_SA1100 $CONFIG_ARCH_SA1100 $CONFIG_MTD_PARTITIONS
- dep_tristate ' CFI Flash device mapped on DC21285 Footbridge' CONFIG_MTD_DC21285 $CONFIG_MTD_CFI $CONFIG_ARCH_FOOTBRIDGE $CONFIG_MTD_PARTITIONS
- dep_tristate ' CFI Flash device mapped on the XScale IQ80310 board' CONFIG_MTD_IQ80310 $CONFIG_MTD_CFI $CONFIG_ARCH_IQ80310
- dep_tristate ' CFI Flash device mapped on the FortuNet board' CONFIG_MTD_FORTUNET $CONFIG_MTD_CFI $CONFIG_MTD_PARTITIONS $CONFIG_ARCH_FORTUNET
-diff -Nur linux/drivers/mtd/maps/Makefile /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/Makefile
---- linux/drivers/mtd/maps/Makefile 2003-05-13 16:18:19.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/Makefile 2003-06-23 01:47:03.000000000 +0700
-@@ -35,6 +35,7 @@
- obj-$(CONFIG_MTD_RPXLITE) += rpxlite.o
- obj-$(CONFIG_MTD_TQM8XXL) += tqm8xxl.o
- obj-$(CONFIG_MTD_SA1100) += sa1100-flash.o
-+obj-$(CONFIG_MTD_COLLIE) += sa1100-flash.o
- ifeq ($(CONFIG_ASSABET_NEPONSET),y)
- obj-$(CONFIG_MTD_SA1100) += neponset-flash.o
- endif
-diff -Nur linux/drivers/mtd/maps/sa1100-flash.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/sa1100-flash.c
---- linux/drivers/mtd/maps/sa1100-flash.c 2003-05-13 16:18:19.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/sa1100-flash.c 2003-06-23 01:47:03.000000000 +0700
-@@ -790,6 +790,73 @@
- };
- #endif
-
-+#ifdef CONFIG_SA1100_COLLIE
-+#define COLLIE_FLASH_SIZE 0x01000000
-+
-+static struct mtd_partition collie_partitions[] = {
-+ {
-+ name: "Angel Monitor",
-+ offset: 0,
-+ size: 0x00020000,
-+ mask_flags: MTD_WRITEABLE
-+ },
-+ {
-+ name: "CF Updater",
-+ offset: MTDPART_OFS_APPEND,
-+ size: 0x00020000,
-+ mask_flags: MTD_WRITEABLE
-+ },
-+ {
-+ name: "Diagnostics",
-+ offset: MTDPART_OFS_APPEND,
-+ size: 0x00080000,
-+ mask_flags: MTD_WRITEABLE
-+ },
-+ {
-+ name: "kernel",
-+ offset: MTDPART_OFS_APPEND,
-+ size: 0x00100000,
-+ },
-+#ifdef CONFIG_CACKO_HYBRID_PARTITIONS
-+ {
-+ name: "cramfs",
-+ offset: MTDPART_OFS_APPEND,
-+ size: 0x00500000,
-+ },
-+ {
-+ name: "jffs2",
-+ offset: MTDPART_OFS_APPEND,
-+ size: 0x00920000,
-+ },
-+#else
-+ {
-+ name: "jffs2",
-+ offset: MTDPART_OFS_APPEND,
-+ size: 0x00e20000,
-+ },
-+#endif
-+ {
-+ name: "angel stuff",
-+ offset: MTDPART_OFS_APPEND,
-+ size: 0x00020000,
-+ }
-+};
-+
-+#include <asm/arch/tc35143.h>
-+#include <asm/ucb1200.h>
-+
-+static void collie_set_vpp(int vpp)
-+{
-+ ucb1200_set_io_direction(TC35143_GPIO_VPEN_ON, TC35143_IODIR_OUTPUT);
-+ if (vpp) {
-+ ucb1200_set_io(TC35143_GPIO_VPEN_ON, TC35143_IODAT_HIGH);
-+ } else {
-+ ucb1200_set_io(TC35143_GPIO_VPEN_ON, TC35143_IODAT_LOW);
-+ }
-+}
-+
-+#endif
-+
- extern int parse_redboot_partitions(struct mtd_info *master, struct mtd_partition **pparts);
- extern int parse_bootldr_partitions(struct mtd_info *master, struct mtd_partition **pparts);
-
-@@ -965,6 +1032,14 @@
- sa1100_map.size = YOPY_FLASH_SIZE;
- }
- #endif
-+#ifdef CONFIG_SA1100_COLLIE
-+ if (machine_is_collie()) {
-+ parts = collie_partitions;
-+ nb_parts = ARRAY_SIZE(collie_partitions);
-+ sa1100_map.size = COLLIE_FLASH_SIZE;
-+ sa1100_map.set_vpp = collie_set_vpp;
-+ }
-+#endif
-
- /*
- * For simple flash devices, use ioremap to map the flash.
-@@ -985,7 +1060,11 @@
- * specific machine settings might have been set above.
- */
- printk(KERN_NOTICE "SA1100 flash: probing %d-bit flash bus\n", sa1100_map.buswidth*8);
-+#ifdef CONFIG_MTD_COLLIE
-+ mymtd = do_map_probe("collie", &sa1100_map);
-+#else
- mymtd = do_map_probe("cfi_probe", &sa1100_map);
-+#endif
- ret = -ENXIO;
- if (!mymtd)
- goto out_err;
-diff -Nur linux/drivers/s390/block/dasd.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/s390/block/dasd.c
---- linux/drivers/s390/block/dasd.c 2003-05-13 16:18:23.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/s390/block/dasd.c 2003-06-23 01:47:03.000000000 +0700
-@@ -4290,102 +4290,38 @@
- #ifdef CONFIG_DASD_DIAG
- dasd_diag_cleanup ();
- DASD_DRIVER_DEBUG_EVENT (1, "cleanup_dasd",
-- "DIAG discipline %s", "success");
-- printk (KERN_INFO PRINTK_HEADER
-- "De-Registered DIAG discipline successfully\n");
--#endif /* CONFIG_DASD_ECKD_BUILTIN */
-- }
--#ifdef CONFIG_DASD_FBA
-- dasd_fba_cleanup ();
-- DASD_DRIVER_DEBUG_EVENT (1, "cleanup_dasd",
-- "FBA discipline %s", "success");
-- printk (KERN_INFO PRINTK_HEADER
-- "De-Registered FBA discipline successfully\n");
--#endif /* CONFIG_DASD_ECKD_BUILTIN */
--#ifdef CONFIG_DASD_ECKD
-- dasd_eckd_cleanup ();
-- DASD_DRIVER_DEBUG_EVENT (1, "cleanup_dasd",
-- "ECKD discipline %s", "success");
-- printk (KERN_INFO PRINTK_HEADER
-- "De-Registered ECKD discipline successfully\n");
--#endif /* CONFIG_DASD_ECKD_BUILTIN */
--
-- dasd_proc_cleanup ();
--
-- list_for_each_safe (l, n, &dasd_major_info[0].list) {
-- major_info = list_entry (l, major_info_t, list);
-- for (i = 0; i < DASD_PER_MAJOR; i++) {
-- kfree (major_info->dasd_device[i]);
-- }
-- if ((major_info->flags & DASD_MAJOR_INFO_REGISTERED) &&
-- (rc = dasd_unregister_major (major_info)) == 0) {
-- DASD_DRIVER_DEBUG_EVENT (1, "cleanup_dasd",
-- "major %d: success",
-- major_info->gendisk.major);
-- printk (KERN_INFO PRINTK_HEADER
-- "Unregistered successfully from major no %u\n",
-- major_info->gendisk.major);
-- } else {
-- DASD_DRIVER_DEBUG_EVENT (1, "cleanup_dasd",
-- "major %d: failed",
-- major_info->gendisk.major);
-- printk (KERN_WARNING PRINTK_HEADER
-- "Couldn't unregister successfully from major no %d rc = %d\n",
-- major_info->gendisk.major, rc);
-- }
-- }
-- list_for_each_safe (l, n, &dasd_range_head.list) {
-- range = list_entry (l, dasd_range_t, list);
-- dasd_remove_range(range);
-- }
--
--#ifndef MODULE
-- for( i = 0; i < 256; i++ )
-- if ( dasd[i] ) {
-- kfree(dasd[i]);
-- dasd[i] = NULL;
-- }
--#endif /* MODULE */
-- if (dasd_devfs_handle)
-- devfs_unregister(dasd_devfs_handle);
-- if (dasd_debug_area != NULL )
-- debug_unregister(dasd_debug_area);
-- printk (KERN_INFO PRINTK_HEADER "shutdown completed\n");
-- DASD_DRIVER_DEBUG_EVENT(0,"cleanup_dasd","%s","LEAVE");
--}
--
--#ifdef MODULE
--int
--init_module (void)
--{
-- int rc = 0;
-- rc = dasd_init ();
-- return rc;
--}
--
--void
--cleanup_module (void)
--{
-- cleanup_dasd ();
-- return;
--}
--#endif
--
--/*
-- * Overrides for Emacs so that we follow Linus's tabbing style.
-- * Emacs will notice this stuff at the end of the file and automatically
-- * adjust the settings for this buffer only. This must remain at the end
-- * of the file.
-- * ---------------------------------------------------------------------------
-- * Local variables:
-- * c-indent-level: 4
-- * c-brace-imaginary-offset: 0
-- * c-brace-offset: -4
-- * c-argdecl-indent: 4
-- * c-label-offset: -4
-- * c-continued-statement-offset: 4
-- * c-continued-brace-offset: 0
-- * indent-tabs-mode: nil
-- * tab-width: 8
-- * End:
-- */
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-\ No newline at end of file
-diff -Nur linux/drivers/usb/device/bi/Config.in /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/usb/device/bi/Config.in
---- linux/drivers/usb/device/bi/Config.in 2003-05-13 16:18:44.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/usb/device/bi/Config.in 2003-06-23 01:49:28.000000000 +0700
-@@ -12,8 +12,8 @@
- dep_mbool ' USB traffic keeps device awake' CONFIG_USBD_TRAFFIC_KEEPAWAKE $CONFIG_SA1110_CALYPSO
-
- if [ "$CONFIG_USBD_SA1100_BUS" = "y" -o "$CONFIG_USBD_SA1100_BUS" = "m" ]; then
-- int ' USBD Stall watchdog timeout (seconds, 0 for none)' CONFIG_USBD_STALL_TIMEOUT "0" $CONFIG_USBD_SA1100_BUS
-- int ' USBD Stall disconnect duration (seconds)' CONFIG_USBD_STALL_DISCONNECT_DURATION "2" $CONFIG_USBD_SA1100_BUS
-+ int ' USBD Stall watchdog timeout (seconds, 0 for none)' CONFIG_USBD_STALL_TIMEOUT "0"
-+ int ' USBD Stall disconnect duration (seconds)' CONFIG_USBD_STALL_DISCONNECT_DURATION "2"
- fi
- fi
-
-diff -Nur linux/drivers/usb/device/net_fd/Config.in /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/usb/device/net_fd/Config.in
---- linux/drivers/usb/device/net_fd/Config.in 2003-05-13 16:18:45.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/usb/device/net_fd/Config.in 2003-06-23 01:49:06.000000000 +0700
-@@ -32,7 +32,7 @@
- if [ "$CONFIG_ARCH_SA1110" = "n" ]; then
- bool ' RNDIS Mode (not working yet)' CONFIG_USBD_NET_RNDIS
- fi
-- string ' Default Remote MAC Address (e.g. 400002000001)' CONFIG_USBD_NET_REMOTE_MACADDR ""
-+ string ' Default Remote MAC Address (e.g. 400002000001)' CONFIG_USBD_NET_REMOTE_MACADDR "400002000001"
- hex ' RemoteNetwork OUI (e.g. 400002)' CONFIG_USBD_NET_REMOTE_OUI "400002"
- bool ' Use MAC Address as device Serial Number' CONFIG_USBD_MAC_AS_SERIAL_NUMBER
- fi
-diff -Nur linux/drivers/video/Config.in /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/Config.in
---- linux/drivers/video/Config.in 2003-05-13 16:18:57.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/Config.in 2003-06-23 01:47:03.000000000 +0700
-@@ -459,6 +459,8 @@
- bool ' VGA 8x16 font' CONFIG_FONT_8x16
- if [ "$CONFIG_FBCON_FONTWIDTH8_ONLY" = "n" ]; then
- bool ' Mac console 6x11 font (not supported by all drivers)' CONFIG_FONT_6x11
-+ bool ' X11 Clean 5x8 font (not supported by all drivers)' CONFIG_FONT_5x8
-+ bool ' X11 Clean 4x6 font (not supported by all drivers)' CONFIG_FONT_4x6
- fi
- bool ' Pearl (old m68k) console 8x8 font' CONFIG_FONT_PEARL_8x8
- bool ' Acorn console 8x8 font' CONFIG_FONT_ACORN_8x8
-@@ -472,6 +474,8 @@
- if [ "$CONFIG_FBCON_FONTWIDTH8_ONLY" = "n" ]; then
- bool ' Sparc console 12x22 font (not supported by all drivers)' CONFIG_FONT_SUN12x22
- bool ' Mac console 6x11 font (not supported by all drivers)' CONFIG_FONT_6x11
-+ bool ' X11 Clean 5x8 font (not supported by all drivers)' CONFIG_FONT_5x8
-+ bool ' X11 Clean 4x6 font (not supported by all drivers)' CONFIG_FONT_4x6
- fi
- bool ' Pearl (old m68k) console 8x8 font' CONFIG_FONT_PEARL_8x8
- bool ' Acorn console 8x8 font' CONFIG_FONT_ACORN_8x8
-diff -Nur linux/drivers/video/Config.in~ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/Config.in~
---- linux/drivers/video/Config.in~ 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/Config.in~ 2003-06-23 01:47:03.000000000 +0700
-@@ -0,0 +1,496 @@
-+#
-+# Video configuration
-+#
-+
-+mainmenu_option next_comment
-+comment 'Frame-buffer support'
-+
-+bool 'Support for frame buffer devices (EXPERIMENTAL)' CONFIG_FB
-+
-+if [ "$CONFIG_FB" = "y" ]; then
-+ define_bool CONFIG_DUMMY_CONSOLE y
-+ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-+ if [ "$CONFIG_PCI" = "y" ]; then
-+ tristate ' nVidia Riva support (EXPERIMENTAL)' CONFIG_FB_RIVA
-+ fi
-+ if [ "$CONFIG_AMIGA" = "y" -o "$CONFIG_PCI" = "y" ]; then
-+ tristate ' Cirrus Logic support (EXPERIMENTAL)' CONFIG_FB_CLGEN
-+ tristate ' Permedia2 support (EXPERIMENTAL)' CONFIG_FB_PM2
-+ if [ "$CONFIG_FB_PM2" = "y" -o "$CONFIG_FB_PM2" = "m" ]; then
-+ if [ "$CONFIG_PCI" = "y" ]; then
-+ bool ' enable FIFO disconnect feature' CONFIG_FB_PM2_FIFO_DISCONNECT
-+ bool ' generic Permedia2 PCI board support' CONFIG_FB_PM2_PCI
-+ fi
-+ if [ "$CONFIG_AMIGA" = "y" ]; then
-+ bool ' Phase5 CVisionPPC/BVisionPPC support' CONFIG_FB_PM2_CVPPC
-+ fi
-+ fi
-+ fi
-+ if [ "$CONFIG_PCI" = "y" ]; then
-+ tristate ' Permedia3 support (EXPERIMENTAL)' CONFIG_FB_PM3
-+ fi
-+ fi
-+ if [ "$CONFIG_ARM" = "y" ]; then
-+ dep_bool ' Collie LCD support' CONFIG_FB_COLLIE $CONFIG_SA1100_COLLIE
-+ dep_bool ' Acorn VIDC support' CONFIG_FB_ACORN $CONFIG_ARCH_ACORN
-+ dep_bool ' Anakin LCD support' CONFIG_FB_ANAKIN $CONFIG_ARCH_ANAKIN
-+ dep_bool ' CLPS711X LCD support' CONFIG_FB_CLPS711X $CONFIG_ARCH_CLPS711X
-+ dep_bool ' SA-1100 LCD support' CONFIG_FB_SA1100 $CONFIG_ARCH_SA1100
-+ if [ "$CONFIG_FB_SA1100" = "y" -a "$CONFIG_SA1100_CERF" = "y" ]; then
-+ choice 'CerfBoard LCD Display Size' \
-+ "3.8_Color CONFIG_CERF_LCD_38_A \
-+ 3.8_Mono CONFIG_CERF_LCD_38_B \
-+ 5.7 CONFIG_CERF_LCD_57_A \
-+ 7.2 CONFIG_CERF_LCD_72_A" 5.7
-+ fi
-+ if [ "$CONFIG_FB_SA1100" = "y" -a "$CONFIG_SA1100_CERF_CPLD" = "y" ]; then
-+ bool 'Cerfboard Backlight (CerfPDA)' CONFIG_SA1100_CERF_LCD_BACKLIGHT
-+ fi
-+ dep_bool ' PXA LCD support' CONFIG_FB_PXA $CONFIG_ARCH_PXA
-+ if [ "$CONFIG_FB_PXA" = "y" -a "$CONFIG_PXA_CERF_PDA" = "y" ]; then
-+ choice 'LCD Bit Depth' \
-+ "8-Bpp CONFIG_FB_PXA_8BPP \
-+ 16-Bpp CONFIG_FB_PXA_16BPP" Bit-Depth
-+ fi
-+ dep_bool ' Cotulla LCD support' CONFIG_FB_COTULLA $CONFIG_ARCH_PXA
-+ dep_bool ' Poodle LCD support' CONFIG_FB_POODLE $CONFIG_ARCH_PXA_POODLE
-+ if [ "$CONFIG_FB_POODLE" = "y" ]; then
-+ dep_bool ' Cached FB support' CONFIG_POODLE_CONSISTENT_ALLOC $CONFIG_FB_POODLE
-+ fi
-+ dep_bool ' Corgi LCD support' CONFIG_FB_CORGI $CONFIG_ARCH_PXA_CORGI
-+ dep_bool ' SHARP LOGO screen support' CONFIG_SHARP_LOGO_SCREEN $CONFIG_ARCH_SHARP_SL
-+ fi
-+ dep_tristate ' CyberPro 2000/2010/5000 support' CONFIG_FB_CYBER2000 $CONFIG_PCI
-+ if [ "$CONFIG_APOLLO" = "y" ]; then
-+ define_bool CONFIG_FB_APOLLO y
-+ fi
-+ if [ "$CONFIG_Q40" = "y" ]; then
-+ define_bool CONFIG_FB_Q40 y
-+ fi
-+ if [ "$CONFIG_AMIGA" = "y" ]; then
-+ tristate ' Amiga native chipset support' CONFIG_FB_AMIGA
-+ if [ "$CONFIG_FB_AMIGA" != "n" ]; then
-+ bool ' Amiga OCS chipset support' CONFIG_FB_AMIGA_OCS
-+ bool ' Amiga ECS chipset support' CONFIG_FB_AMIGA_ECS
-+ bool ' Amiga AGA chipset support' CONFIG_FB_AMIGA_AGA
-+ fi
-+ fi
-+ if [ "$CONFIG_ZORRO" = "y" ]; then
-+ tristate ' Amiga CyberVision support' CONFIG_FB_CYBER
-+ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-+ bool ' Amiga CyberVision3D support (EXPERIMENTAL)' CONFIG_FB_VIRGE
-+ tristate ' Amiga RetinaZ3 support (EXPERIMENTAL)' CONFIG_FB_RETINAZ3
-+ bool ' Amiga FrameMaster II/Rainbow II support (EXPERIMENTAL)' CONFIG_FB_FM2
-+ fi
-+ fi
-+ if [ "$CONFIG_ATARI" = "y" ]; then
-+ bool ' Atari native chipset support' CONFIG_FB_ATARI
-+ tristate ' ATI Mach64 display support' CONFIG_FB_ATY
-+ if [ "$CONFIG_FB_ATY" != "n" ]; then
-+ define_bool CONFIG_FB_ATY_GX y
-+ fi
-+ fi
-+ if [ "$CONFIG_PPC" = "y" ]; then
-+ dep_bool ' Open Firmware frame buffer device support' CONFIG_FB_OF $CONFIG_ALL_PPC
-+ dep_bool ' Apple "control" display support' CONFIG_FB_CONTROL $CONFIG_ALL_PPC
-+ dep_bool ' Apple "platinum" display support' CONFIG_FB_PLATINUM $CONFIG_ALL_PPC
-+ dep_bool ' Apple "valkyrie" display support' CONFIG_FB_VALKYRIE $CONFIG_ALL_PPC
-+ bool ' Chips 65550 display support' CONFIG_FB_CT65550
-+ bool ' IMS Twin Turbo display support' CONFIG_FB_IMSTT
-+ bool ' S3 Trio display support' CONFIG_FB_S3TRIO
-+ tristate ' VGA 16-color graphics console' CONFIG_FB_VGA16
-+ fi
-+ if [ "$CONFIG_PARISC" = "y" ]; then
-+ bool ' Generic STI frame buffer device support' CONFIG_FB_STI
-+ fi
-+ if [ "$CONFIG_MAC" = "y" ]; then
-+ define_bool CONFIG_FB_MAC y
-+ bool ' Apple "valkyrie" display support' CONFIG_FB_VALKYRIE
-+# bool ' Apple DAFB display support' CONFIG_FB_DAFB
-+ fi
-+ if [ "$CONFIG_HP300" = "y" ]; then
-+ define_bool CONFIG_FB_HP300 y
-+ fi
-+ if [ "$ARCH" = "alpha" ]; then
-+ tristate ' TGA framebuffer support' CONFIG_FB_TGA
-+ fi
-+ if [ "$ARCH" = "i386" ]; then
-+ bool ' VESA VGA graphics console' CONFIG_FB_VESA
-+ tristate ' VGA 16-color graphics console' CONFIG_FB_VGA16
-+ tristate ' Hercules mono graphics console (EXPERIMENTAL)' CONFIG_FB_HGA
-+ define_bool CONFIG_VIDEO_SELECT y
-+ fi
-+ if [ "$CONFIG_VISWS" = "y" ]; then
-+ tristate ' SGI Visual Workstation framebuffer support' CONFIG_FB_SGIVW
-+ define_bool CONFIG_BUS_I2C y
-+ fi
-+ if [ "$CONFIG_SUN3" = "y" -o "$CONFIG_SUN3X" = "y" ]; then
-+ bool ' Sun3 framebuffer support' CONFIG_FB_SUN3
-+ if [ "$CONFIG_FB_SUN3" != "n" ]; then
-+ bool ' BWtwo support' CONFIG_FB_BWTWO
-+ bool ' CGsix (GX,TurboGX) support' CONFIG_FB_CGSIX
-+ fi
-+ fi
-+ if [ "$CONFIG_SH_DREAMCAST" = "y" ]; then
-+ tristate ' NEC PowerVR 2 display support' CONFIG_FB_PVR2
-+ dep_bool ' Debug pvr2fb' CONFIG_FB_PVR2_DEBUG $CONFIG_FB_PVR2
-+ fi
-+ if [ "$CONFIG_SUPERH" = "y" ]; then
-+ bool ' Epson 1355 framebuffer support' CONFIG_FB_E1355
-+ if [ "$CONFIG_FB_E1355" = "y" ]; then
-+ hex ' Register Base Address' CONFIG_E1355_REG_BASE a8000000
-+ hex ' Framebuffer Base Address' CONFIG_E1355_FB_BASE a8200000
-+ fi
-+ fi
-+ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-+ if [ "$CONFIG_PCI" != "n" ]; then
-+ tristate ' Matrox acceleration (EXPERIMENTAL)' CONFIG_FB_MATROX
-+ if [ "$CONFIG_FB_MATROX" != "n" ]; then
-+ bool ' Millennium I/II support' CONFIG_FB_MATROX_MILLENIUM
-+ bool ' Mystique support' CONFIG_FB_MATROX_MYSTIQUE
-+ bool ' G100/G200/G400/G450/G550 support' CONFIG_FB_MATROX_G100
-+ if [ "$CONFIG_I2C" != "n" ]; then
-+ dep_tristate ' Matrox I2C support' CONFIG_FB_MATROX_I2C $CONFIG_FB_MATROX $CONFIG_I2C_ALGOBIT
-+ if [ "$CONFIG_FB_MATROX_G100" = "y" ]; then
-+ dep_tristate ' G400 second head support' CONFIG_FB_MATROX_MAVEN $CONFIG_FB_MATROX_I2C
-+ fi
-+ fi
-+ dep_tristate ' G450/G550 second head support' CONFIG_FB_MATROX_G450 $CONFIG_FB_MATROX_G100
-+ bool ' Multihead support' CONFIG_FB_MATROX_MULTIHEAD
-+ fi
-+ tristate ' ATI Mach64 display support (EXPERIMENTAL)' CONFIG_FB_ATY
-+ if [ "$CONFIG_FB_ATY" != "n" ]; then
-+ bool ' Mach64 GX support (EXPERIMENTAL)' CONFIG_FB_ATY_GX
-+ bool ' Mach64 CT/VT/GT/LT (incl. 3D RAGE) support' CONFIG_FB_ATY_CT
-+ fi
-+ tristate ' ATI Radeon display support (EXPERIMENTAL)' CONFIG_FB_RADEON
-+ tristate ' ATI Rage128 display support (EXPERIMENTAL)' CONFIG_FB_ATY128
-+ tristate ' SIS acceleration (EXPERIMENTAL)' CONFIG_FB_SIS
-+ if [ "$CONFIG_FB_SIS" != "n" ]; then
-+ bool ' SIS 630/540/730 support' CONFIG_FB_SIS_300
-+ bool ' SIS 315H/315 support' CONFIG_FB_SIS_315
-+ fi
-+ tristate ' 3Dfx Banshee/Voodoo3 display support (EXPERIMENTAL)' CONFIG_FB_3DFX
-+ tristate ' 3Dfx Voodoo Graphics (sst1) support (EXPERIMENTAL)' CONFIG_FB_VOODOO1
-+ tristate ' Trident support (EXPERIMENTAL)' CONFIG_FB_TRIDENT
-+ fi
-+ fi
-+ if [ "$ARCH" = "sparc" -o "$ARCH" = "sparc64" ]; then
-+ bool ' SBUS and UPA framebuffers' CONFIG_FB_SBUS
-+ if [ "$CONFIG_FB_SBUS" != "n" ]; then
-+ if [ "$ARCH" = "sparc64" ]; then
-+ bool ' Creator/Creator3D support' CONFIG_FB_CREATOR
-+ fi
-+ bool ' CGsix (GX,TurboGX) support' CONFIG_FB_CGSIX
-+ bool ' BWtwo support' CONFIG_FB_BWTWO
-+ bool ' CGthree support' CONFIG_FB_CGTHREE
-+ if [ "$ARCH" = "sparc" ]; then
-+ bool ' TCX (SS4/SS5 only) support' CONFIG_FB_TCX
-+ bool ' CGfourteen (SX) support' CONFIG_FB_CGFOURTEEN
-+ bool ' P9100 (Sparcbook 3 only) support' CONFIG_FB_P9100
-+ fi
-+ bool ' Leo (ZX) support' CONFIG_FB_LEO
-+ fi
-+ fi
-+ if [ "$ARCH" = "sparc" ]; then
-+ if [ "$CONFIG_PCI" != "n" ]; then
-+ bool ' PCI framebuffers' CONFIG_FB_PCI
-+ if [ "$CONFIG_FB_PCI" != "n" ]; then
-+ bool ' IGA 168x display support' CONFIG_FB_IGA
-+ fi
-+ fi
-+ fi
-+ if [ "$ARCH" = "sparc64" ]; then
-+ if [ "$CONFIG_PCI" != "n" ]; then
-+ bool ' PCI framebuffers' CONFIG_FB_PCI
-+ if [ "$CONFIG_FB_PCI" != "n" ]; then
-+ tristate ' ATI Mach64 display support' CONFIG_FB_ATY
-+ if [ "$CONFIG_FB_ATY" != "n" ]; then
-+ define_bool CONFIG_FB_ATY_CT y
-+ fi
-+ fi
-+ fi
-+ fi
-+ if [ "$CONFIG_HD64461" = "y" ]; then
-+ tristate ' HD64461 Frame Buffer support' CONFIG_FB_HIT
-+ fi
-+ if [ "$CONFIG_DECSTATION" = "y" ]; then
-+ if [ "$CONFIG_TC" = "y" ]; then
-+ bool ' PMAG-BA TURBOchannel framebuffer support' CONFIG_FB_PMAG_BA
-+ bool ' PMAGB-B TURBOchannel framebuffer spport' CONFIG_FB_PMAGB_B
-+ bool ' Maxine (Personal DECstation) onboard framebuffer spport' CONFIG_FB_MAXINE
-+ fi
-+ fi
-+ if [ "$CONFIG_NINO" = "y" ]; then
-+ bool ' TMPTX3912/PR31700 frame buffer support' CONFIG_FB_TX3912
-+ fi
-+ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-+ tristate ' Virtual Frame Buffer support (ONLY FOR TESTING!)' CONFIG_FB_VIRTUAL
-+ fi
-+
-+ bool ' Advanced low level driver options' CONFIG_FBCON_ADVANCED
-+ if [ "$CONFIG_FBCON_ADVANCED" = "y" ]; then
-+ tristate ' Monochrome support' CONFIG_FBCON_MFB
-+ tristate ' 2 bpp packed pixels support' CONFIG_FBCON_CFB2
-+ tristate ' 4 bpp packed pixels support' CONFIG_FBCON_CFB4
-+ tristate ' 8 bpp packed pixels support' CONFIG_FBCON_CFB8
-+ tristate ' 16 bpp packed pixels support' CONFIG_FBCON_CFB16
-+ tristate ' 24 bpp packed pixels support' CONFIG_FBCON_CFB24
-+ tristate ' 32 bpp packed pixels support' CONFIG_FBCON_CFB32
-+ tristate ' Amiga bitplanes support' CONFIG_FBCON_AFB
-+ tristate ' Amiga interleaved bitplanes support' CONFIG_FBCON_ILBM
-+ tristate ' Atari interleaved bitplanes (2 planes) support' CONFIG_FBCON_IPLAN2P2
-+ tristate ' Atari interleaved bitplanes (4 planes) support' CONFIG_FBCON_IPLAN2P4
-+ tristate ' Atari interleaved bitplanes (8 planes) support' CONFIG_FBCON_IPLAN2P8
-+# tristate ' Atari interleaved bitplanes (16 planes) support' CONFIG_FBCON_IPLAN2P16
-+ tristate ' Mac variable bpp packed pixels support' CONFIG_FBCON_MAC
-+ tristate ' VGA 16-color planar support' CONFIG_FBCON_VGA_PLANES
-+ tristate ' VGA characters/attributes support' CONFIG_FBCON_VGA
-+ tristate ' HGA monochrome support (EXPERIMENTAL)' CONFIG_FBCON_HGA
-+ else
-+ # Guess what we need
-+ if [ "$CONFIG_FB_ACORN" = "y" -o "$CONFIG_FB_AMIGA" = "y" -o \
-+ "$CONFIG_FB_ATARI" = "y" -o "$CONFIG_FB_CYBER" = "y" -o \
-+ "$CONFIG_FB_MAC" = "y" -o "$CONFIG_FB_RETINAZ3" = "y" -o \
-+ "$CONFIG_FB_VIRGE" = "y" -o "$CONFIG_FB_VIRTUAL" = "y" -o \
-+ "$CONFIG_FB_BWTWO" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \
-+ "$CONFIG_FB_TX3912" = "y" -o "$CONFIG_FB_CLPS711X" = "y" ]; then
-+ define_tristate CONFIG_FBCON_MFB y
-+ else
-+ if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_AMIGA" = "m" -o \
-+ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_CYBER" = "m" -o \
-+ "$CONFIG_FB_MAC" = "m" -o "$CONFIG_FB_RETINAZ3" = "m" -o \
-+ "$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \
-+ "$CONFIG_FB_BWTWO" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \
-+ "$CONFIG_FB_TX3912" = "m" -o "$CONFIG_FB_CLPS711X" = "m" ]; then
-+ define_tristate CONFIG_FBCON_MFB m
-+ fi
-+ fi
-+ if [ "$CONFIG_FB_ACORN" = "y" -o "$CONFIG_FB_MAC" = "y" -o \
-+ "$CONFIG_FB_SA1100" = "y" -o "$CONFIG_FB_VIRTUAL" = "y" -o \
-+ "$CONFIG_FB_TX3912" = "y" -o "$CONFIG_FB_CLPS711X" = "y" -o \
-+ "$CONFIG_FB_PXA" = "y" ]; then
-+ define_tristate CONFIG_FBCON_CFB2 y
-+ define_tristate CONFIG_FBCON_CFB4 y
-+ else
-+ if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_MAC" = "m" -o \
-+ "$CONFIG_FB_SA1100" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \
-+ "$CONFIG_FB_TX3912" = "m" -o "$CONFIG_FB_CLPS711X" = "m" ]; then
-+ define_tristate CONFIG_FBCON_CFB2 m
-+ define_tristate CONFIG_FBCON_CFB4 m
-+ fi
-+ fi
-+ if [ "$CONFIG_FB_ACORN" = "y" -o "$CONFIG_FB_ATARI" = "y" -o \
-+ "$CONFIG_FB_ATY" = "y" -o "$CONFIG_FB_MAC" = "y" -o \
-+ "$CONFIG_FB_OF" = "y" -o "$CONFIG_FB_TGA" = "y" -o \
-+ "$CONFIG_FB_VESA" = "y" -o "$CONFIG_FB_VIRTUAL" = "y" -o \
-+ "$CONFIG_FB_TCX" = "y" -o "$CONFIG_FB_CGTHREE" = "y" -o \
-+ "$CONFIG_FB_CONTROL" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \
-+ "$CONFIG_FB_CGFOURTEEN" = "y" -o "$CONFIG_FB_G364" = "y" -o \
-+ "$CONFIG_FB_VIRGE" = "y" -o "$CONFIG_FB_CYBER" = "y" -o \
-+ "$CONFIG_FB_VALKYRIE" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
-+ "$CONFIG_FB_IGA" = "y" -o "$CONFIG_FB_MATROX" = "y" -o \
-+ "$CONFIG_FB_CT65550" = "y" -o "$CONFIG_FB_PM2" = "y" -o \
-+ "$CONFIG_FB_P9100" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \
-+ "$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_RADEON" = "y" -o \
-+ "$CONFIG_FB_SGIVW" = "y" -o "$CONFIG_FB_CYBER2000" = "y" -o \
-+ "$CONFIG_FB_SA1100" = "y" -o "$CONFIG_FB_3DFX" = "y" -o \
-+ "$CONFIG_FB_PMAG_BA" = "y" -o "$CONFIG_FB_PMAGB_B" = "y" -o \
-+ "$CONFIG_FB_MAXINE" = "y" -o "$CONFIG_FB_TX3912" = "y" -o \
-+ "$CONFIG_FB_SIS" = "y" -o "$CONFIG_FB_PM3" = "y" -o \
-+ "$CONFIG_FB_PXA" = "y" ]; then
-+ define_tristate CONFIG_FBCON_CFB8 y
-+ else
-+ if [ "$CONFIG_FB_ACORN" = "m" -o "$CONFIG_FB_ATARI" = "m" -o \
-+ "$CONFIG_FB_ATY" = "m" -o "$CONFIG_FB_MAC" = "m" -o \
-+ "$CONFIG_FB_OF" = "m" -o "$CONFIG_FB_TGA" = "m" -o \
-+ "$CONFIG_FB_VESA" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \
-+ "$CONFIG_FB_TCX" = "m" -o "$CONFIG_FB_CGTHREE" = "m" -o \
-+ "$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \
-+ "$CONFIG_FB_CGFOURTEEN" = "m" -o "$CONFIG_FB_G364" = "m" -o \
-+ "$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_CYBER" = "m" -o \
-+ "$CONFIG_FB_VALKYRIE" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \
-+ "$CONFIG_FB_IGA" = "m" -o "$CONFIG_FB_MATROX" = "m" -o \
-+ "$CONFIG_FB_CT65550" = "m" -o "$CONFIG_FB_PM2" = "m" -o \
-+ "$CONFIG_FB_P9100" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \
-+ "$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_3DFX" = "m" -o \
-+ "$CONFIG_FB_SGIVW" = "m" -o "$CONFIG_FB_CYBER2000" = "m" -o \
-+ "$CONFIG_FB_PMAG_BA" = "m" -o "$CONFIG_FB_PMAGB_B" = "m" -o \
-+ "$CONFIG_FB_MAXINE" = "m" -o "$CONFIG_FB_RADEON" = "m" -o \
-+ "$CONFIG_FB_SA1100" = "m" -o "$CONFIG_FB_SIS" = "m" -o \
-+ "$CONFIG_FB_TX3912" = "m" -o "$CONFIG_FB_PM3" = "m" ]; then
-+ define_tristate CONFIG_FBCON_CFB8 m
-+ fi
-+ fi
-+ if [ "$CONFIG_FB_ATARI" = "y" -o "$CONFIG_FB_ATY" = "y" -o \
-+ "$CONFIG_FB_MAC" = "y" -o "$CONFIG_FB_VESA" = "y" -o \
-+ "$CONFIG_FB_VIRTUAL" = "y" -o "$CONFIG_FB_TBOX" = "y" -o \
-+ "$CONFIG_FB_Q40" = "y" -o "$CONFIG_FB_RADEON" = "y" -o \
-+ "$CONFIG_FB_CONTROL" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \
-+ "$CONFIG_FB_VIRGE" = "y" -o "$CONFIG_FB_CYBER" = "y" -o \
-+ "$CONFIG_FB_VALKYRIE" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
-+ "$CONFIG_FB_CT65550" = "y" -o "$CONFIG_FB_MATROX" = "y" -o \
-+ "$CONFIG_FB_PM2" = "y" -o "$CONFIG_FB_SGIVW" = "y" -o \
-+ "$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \
-+ "$CONFIG_FB_CYBER2000" = "y" -o "$CONFIG_FB_3DFX" = "y" -o \
-+ "$CONFIG_FB_SIS" = "y" -o "$CONFIG_FB_SA1100" = "y" -o \
-+ "$CONFIG_FB_PVR2" = "y" -o "$CONFIG_FB_VOODOO1" = "y" -o \
-+ "$CONFIG_FB_ANAKIN" = "y" -o "$CONFIG_FB_PM3" = "y" -o \
-+ "$CONFIG_FB_PXA" = "y" ]; then
-+ define_tristate CONFIG_FBCON_CFB16 y
-+ else
-+ if [ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_ATY" = "m" -o \
-+ "$CONFIG_FB_MAC" = "m" -o "$CONFIG_FB_VESA" = "m" -o \
-+ "$CONFIG_FB_VIRTUAL" = "m" -o "$CONFIG_FB_TBOX" = "m" -o \
-+ "$CONFIG_FB_Q40" = "m" -o "$CONFIG_FB_3DFX" = "m" -o \
-+ "$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \
-+ "$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_CYBER" = "m" -o \
-+ "$CONFIG_FB_VALKYRIE" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \
-+ "$CONFIG_FB_CT65550" = "m" -o "$CONFIG_FB_MATROX" = "m" -o \
-+ "$CONFIG_FB_PM2" = "m" -o "$CONFIG_FB_SGIVW" = "m" -o \
-+ "$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \
-+ "$CONFIG_FB_CYBER2000" = "m" -o "$CONFIG_FB_SIS" = "m" -o \
-+ "$CONFIG_FB_SA1100" = "m" -o "$CONFIG_FB_RADEON" = "m" -o \
-+ "$CONFIG_FB_PVR2" = "m" -o "$CONFIG_FB_VOODOO1" = "m" -o \
-+ "$CONFIG_FB_ANAKIN" = "m" -o "$CONFIG_FB_PM3" = "m" ]; then
-+ define_tristate CONFIG_FBCON_CFB16 m
-+ fi
-+ fi
-+ if [ "$CONFIG_FB_ATY" = "y" -o "$CONFIG_FB_VIRTUAL" = "y" -o \
-+ "$CONFIG_FB_CLGEN" = "y" -o "$CONFIG_FB_VESA" = "y" -o \
-+ "$CONFIG_FB_MATROX" = "y" -o "$CONFIG_FB_PM2" = "y" -o \
-+ "$CONFIG_FB_ATY128" = "y" -o "$CONFIG_FB_RADEON" = "y" -o \
-+ "$CONFIG_FB_CYBER2000" = "y" -o "$CONFIG_FB_PVR2" = "y" -o \
-+ "$CONFIG_FB_VOODOO1" = "y" -o "$CONFIG_FB_PM3" = "y" ]; then
-+ define_tristate CONFIG_FBCON_CFB24 y
-+ else
-+ if [ "$CONFIG_FB_ATY" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \
-+ "$CONFIG_FB_CLGEN" = "m" -o "$CONFIG_FB_VESA" = "m" -o \
-+ "$CONFIG_FB_MATROX" = "m" -o "$CONFIG_FB_PM2" = "m" -o \
-+ "$CONFIG_FB_ATY128" = "m" -o "$CONFIG_FB_RADEON" = "m" -o \
-+ "$CONFIG_FB_CYBER2000" = "m" -o "$CONFIG_FB_PVR2" = "m" -o \
-+ "$CONFIG_FB_VOODOO1" = "m" -o "$cONFIG_FB_PM3" = "m" ]; then
-+ define_tristate CONFIG_FBCON_CFB24 m
-+ fi
-+ fi
-+ if [ "$CONFIG_FB_ATARI" = "y" -o "$CONFIG_FB_ATY" = "y" -o \
-+ "$CONFIG_FB_VESA" = "y" -o "$CONFIG_FB_VIRTUAL" = "y" -o \
-+ "$CONFIG_FB_CONTROL" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \
-+ "$CONFIG_FB_TGA" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
-+ "$CONFIG_FB_MATROX" = "y" -o "$CONFIG_FB_PM2" = "y" -o \
-+ "$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \
-+ "$CONFIG_FB_FM2" = "y" -o "$CONFIG_FB_SGIVW" = "y" -o \
-+ "$CONFIG_FB_RADEON" = "y" -o "$CONFIG_FB_PVR2" = "y" -o \
-+ "$CONFIG_FB_3DFX" = "y" -o "$CONFIG_FB_SIS" = "y" -o \
-+ "$CONFIG_FB_VOODOO1" = "y" -o "$CONFIG_FB_PM3" = "y" ]; then
-+ define_tristate CONFIG_FBCON_CFB32 y
-+ else
-+ if [ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_ATY" = "m" -o \
-+ "$CONFIG_FB_VESA" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \
-+ "$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \
-+ "$CONFIG_FB_TGA" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \
-+ "$CONFIG_FB_MATROX" = "m" -o "$CONFIG_FB_PM2" = "m" -o \
-+ "$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \
-+ "$CONFIG_FB_3DFX" = "m" -o "$CONFIG_FB_RADEON" = "m" -o \
-+ "$CONFIG_FB_SGIVW" = "m" -o "$CONFIG_FB_SIS" = "m" -o \
-+ "$CONFIG_FB_PVR2" = "m" -o "$CONFIG_FB_VOODOO1" = "m" -o \
-+ "$CONFIG_FB_PM3" = "m" ]; then
-+ define_tristate CONFIG_FBCON_CFB32 m
-+ fi
-+ fi
-+ if [ "$CONFIG_FB_AMIGA" = "y" ]; then
-+ define_tristate CONFIG_FBCON_AFB y
-+ define_tristate CONFIG_FBCON_ILBM y
-+ else
-+ if [ "$CONFIG_FB_AMIGA" = "m" ]; then
-+ define_tristate CONFIG_FBCON_AFB m
-+ define_tristate CONFIG_FBCON_ILBM m
-+ fi
-+ fi
-+ if [ "$CONFIG_FB_ATARI" = "y" ]; then
-+ define_tristate CONFIG_FBCON_IPLAN2P2 y
-+ define_tristate CONFIG_FBCON_IPLAN2P4 y
-+ define_tristate CONFIG_FBCON_IPLAN2P8 y
-+# define_tristate CONFIG_FBCON_IPLAN2P16 y
-+ else
-+ if [ "$CONFIG_FB_ATARI" = "m" ]; then
-+ define_tristate CONFIG_FBCON_IPLAN2P2 m
-+ define_tristate CONFIG_FBCON_IPLAN2P4 m
-+ define_tristate CONFIG_FBCON_IPLAN2P8 m
-+# define_tristate CONFIG_FBCON_IPLAN2P16 m
-+ fi
-+ fi
-+ if [ "$CONFIG_FB_MAC" = "y" -o "$CONFIG_FB_VIRTUAL" = "y" ]; then
-+ define_tristate CONFIG_FBCON_MAC y
-+ else
-+ if [ "$CONFIG_FB_MAC" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" ]; then
-+ define_tristate CONFIG_FBCON_MAC m
-+ fi
-+ fi
-+ if [ "$CONFIG_FB_VGA16" = "y" ]; then
-+ define_tristate CONFIG_FBCON_VGA_PLANES y
-+ else
-+ if [ "$CONFIG_FB_VGA16" = "m" ]; then
-+ define_tristate CONFIG_FBCON_VGA_PLANES m
-+ fi
-+ fi
-+ if [ "$CONFIG_FB_HGA" = "y" ]; then
-+ define_tristate CONFIG_FBCON_HGA y
-+ else
-+ if [ "$CONFIG_FB_HGA" = "m" ]; then
-+ define_tristate CONFIG_FBCON_HGA m
-+ fi
-+ fi
-+ if [ "$CONFIG_FB_STI" = "y" ]; then
-+ define_tristate CONFIG_FBCON_STI y
-+ fi
-+ fi
-+ dep_bool ' Rotate FrameBuffer Console (right)' CONFIG_FBCON_ROTATE_R $CONFIG_FBCON_CFB16
-+ dep_bool ' Rotate FrameBuffer Console (left)' CONFIG_FBCON_ROTATE_L $CONFIG_FBCON_CFB16
-+ bool ' Support only 8 pixels wide fonts' CONFIG_FBCON_FONTWIDTH8_ONLY
-+ if [ "$ARCH" = "sparc" -o "$ARCH" = "sparc64" ]; then
-+ bool ' Sparc console 8x16 font' CONFIG_FONT_SUN8x16
-+ if [ "$CONFIG_FBCON_FONTWIDTH8_ONLY" = "n" ]; then
-+ bool ' Sparc console 12x22 font (not supported by all drivers)' CONFIG_FONT_SUN12x22
-+ fi
-+ bool ' Select other fonts' CONFIG_FBCON_FONTS
-+ if [ "$CONFIG_FBCON_FONTS" = "y" ]; then
-+ bool ' VGA 8x8 font' CONFIG_FONT_8x8
-+ bool ' VGA 8x16 font' CONFIG_FONT_8x16
-+ if [ "$CONFIG_FBCON_FONTWIDTH8_ONLY" = "n" ]; then
-+ bool ' Mac console 6x11 font (not supported by all drivers)' CONFIG_FONT_6x11
-+ fi
-+ bool ' Pearl (old m68k) console 8x8 font' CONFIG_FONT_PEARL_8x8
-+ bool ' Acorn console 8x8 font' CONFIG_FONT_ACORN_8x8
-+ fi
-+ else
-+ bool ' Select compiled-in fonts' CONFIG_FBCON_FONTS
-+ if [ "$CONFIG_FBCON_FONTS" = "y" ]; then
-+ bool ' VGA 8x8 font' CONFIG_FONT_8x8
-+ bool ' VGA 8x16 font' CONFIG_FONT_8x16
-+ bool ' Sparc console 8x16 font' CONFIG_FONT_SUN8x16
-+ if [ "$CONFIG_FBCON_FONTWIDTH8_ONLY" = "n" ]; then
-+ bool ' Sparc console 12x22 font (not supported by all drivers)' CONFIG_FONT_SUN12x22
-+ bool ' Mac console 6x11 font (not supported by all drivers)' CONFIG_FONT_6x11
-+ fi
-+ bool ' Pearl (old m68k) console 8x8 font' CONFIG_FONT_PEARL_8x8
-+ bool ' Acorn console 8x8 font' CONFIG_FONT_ACORN_8x8
-+ else
-+ define_bool CONFIG_FONT_8x8 y
-+ define_bool CONFIG_FONT_8x16 y
-+ if [ "$CONFIG_MAC" = "y" ]; then
-+ if [ "$CONFIG_FBCON_FONTWIDTH8_ONLY" = "n" ]; then
-+ define_bool CONFIG_FONT_6x11 y
-+ fi
-+ fi
-+ if [ "$CONFIG_AMIGA" = "y" ]; then
-+ define_bool CONFIG_FONT_PEARL_8x8 y
-+ fi
-+ if [ "$CONFIG_ARM" = "y" -a "$CONFIG_ARCH_ACORN" = "y" ]; then
-+ define_bool CONFIG_FONT_ACORN_8x8 y
-+ fi
-+ fi
-+ fi
-+fi
-+
-+endmenu
-diff -Nur linux/drivers/video/Makefile /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/Makefile
---- linux/drivers/video/Makefile 2003-05-13 16:18:57.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/Makefile 2003-06-23 01:47:03.000000000 +0700
-@@ -33,6 +33,8 @@
- obj-$(CONFIG_FONT_6x11) += font_6x11.o
- obj-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o
- obj-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o
-+obj-$(CONFIG_FONT_5x8) += font_5x8.o
-+obj-$(CONFIG_FONT_4x6) += font_4x6.o
-
- # Add fbmon.o back into obj-$(CONFIG_FB) in 2.5.x
- obj-$(CONFIG_FB) += fbmem.o fbcmap.o modedb.o fbcon.o fonts.o
-diff -Nur linux/drivers/video/Makefile~ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/Makefile~
---- linux/drivers/video/Makefile~ 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/Makefile~ 2003-06-23 01:47:03.000000000 +0700
-@@ -0,0 +1,165 @@
-+# Makefile for the Linux video drivers.
-+# 5 Aug 1999, James Simmons, <mailto:jsimmons@edgeglobal.com>
-+# Rewritten to use lists instead of if-statements.
-+
-+O_TARGET := video.o
-+
-+mod-subdirs := matrox
-+
-+# All of the (potential) objects that export symbols.
-+# This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
-+
-+export-objs := fbmem.o fbcmap.o fbcon.o fbmon.o modedb.o \
-+ fbcon-afb.o fbcon-ilbm.o \
-+ fbcon-vga.o fbcon-iplan2p2.o fbcon-iplan2p4.o \
-+ fbcon-iplan2p8.o fbcon-vga-planes.o fbcon-cfb16.o \
-+ fbcon-cfb2.o fbcon-cfb24.o fbcon-cfb32.o fbcon-cfb4.o \
-+ fbcon-cfb8.o fbcon-mac.o fbcon-mfb.o \
-+ cyber2000fb.o sa1100fb.o fbcon-hga.o pxafb.o cotulla_fb.o discovery_frontlight.o
-+
-+# Each configuration option enables a list of files.
-+
-+obj-$(CONFIG_DUMMY_CONSOLE) += dummycon.o
-+obj-$(CONFIG_SGI_NEWPORT_CONSOLE) += newport_con.o
-+obj-$(CONFIG_PROM_CONSOLE) += promcon.o promcon_tbl.o
-+obj-$(CONFIG_STI_CONSOLE) += sticon.o sticon-bmode.o sticore.o
-+obj-$(CONFIG_VGA_CONSOLE) += vgacon.o
-+obj-$(CONFIG_MDA_CONSOLE) += mdacon.o
-+
-+obj-$(CONFIG_FONT_SUN8x16) += font_sun8x16.o
-+obj-$(CONFIG_FONT_SUN12x22) += font_sun12x22.o
-+obj-$(CONFIG_FONT_8x8) += font_8x8.o
-+obj-$(CONFIG_FONT_8x16) += font_8x16.o
-+obj-$(CONFIG_FONT_6x11) += font_6x11.o
-+obj-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o
-+obj-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o
-+
-+# Add fbmon.o back into obj-$(CONFIG_FB) in 2.5.x
-+obj-$(CONFIG_FB) += fbmem.o fbcmap.o modedb.o fbcon.o fonts.o
-+# Only include macmodes.o if we have FB support and are PPC
-+ifeq ($(CONFIG_FB),y)
-+obj-$(CONFIG_PPC) += macmodes.o
-+endif
-+
-+obj-$(CONFIG_FB_ACORN) += acornfb.o
-+obj-$(CONFIG_FB_AMIGA) += amifb.o
-+obj-$(CONFIG_FB_PM2) += pm2fb.o fbgen.o
-+obj-$(CONFIG_FB_PM3) += pm3fb.o fbgen.o
-+obj-$(CONFIG_FB_APOLLO) += dnfb.o
-+obj-$(CONFIG_FB_Q40) += q40fb.o
-+obj-$(CONFIG_FB_ATARI) += atafb.o
-+obj-$(CONFIG_FB_ATY128) += aty128fb.o
-+obj-$(CONFIG_FB_RADEON) += radeonfb.o
-+obj-$(CONFIG_FB_IGA) += igafb.o
-+obj-$(CONFIG_FB_CONTROL) += controlfb.o
-+obj-$(CONFIG_FB_PLATINUM) += platinumfb.o
-+obj-$(CONFIG_FB_VALKYRIE) += valkyriefb.o
-+obj-$(CONFIG_FB_CT65550) += chipsfb.o
-+obj-$(CONFIG_FB_CLPS711X) += clps711xfb.o
-+obj-$(CONFIG_FB_CYBER) += cyberfb.o
-+obj-$(CONFIG_FB_CYBER2000) += cyber2000fb.o
-+obj-$(CONFIG_FB_SGIVW) += sgivwfb.o
-+obj-$(CONFIG_FB_3DFX) += tdfxfb.o
-+obj-$(CONFIG_FB_MAC) += macfb.o macmodes.o
-+obj-$(CONFIG_FB_HP300) += hpfb.o
-+obj-$(CONFIG_FB_OF) += offb.o
-+obj-$(CONFIG_FB_IMSTT) += imsttfb.o
-+obj-$(CONFIG_FB_RETINAZ3) += retz3fb.o
-+obj-$(CONFIG_FB_CLGEN) += clgenfb.o fbgen.o
-+obj-$(CONFIG_FB_TRIDENT) += tridentfb.o fbgen.o
-+obj-$(CONFIG_FB_S3TRIO) += S3triofb.o
-+obj-$(CONFIG_FB_TGA) += tgafb.o fbgen.o
-+obj-$(CONFIG_FB_VESA) += vesafb.o
-+obj-$(CONFIG_FB_VGA16) += vga16fb.o fbcon-vga-planes.o
-+obj-$(CONFIG_FB_VIRGE) += virgefb.o
-+obj-$(CONFIG_FB_G364) += g364fb.o
-+obj-$(CONFIG_FB_FM2) += fm2fb.o
-+obj-$(CONFIG_FB_CREATOR) += creatorfb.o sbusfb.o
-+obj-$(CONFIG_FB_CGSIX) += cgsixfb.o sbusfb.o
-+obj-$(CONFIG_FB_BWTWO) += bwtwofb.o sbusfb.o
-+obj-$(CONFIG_FB_CGTHREE) += cgthreefb.o sbusfb.o
-+obj-$(CONFIG_FB_TCX) += tcxfb.o sbusfb.o
-+obj-$(CONFIG_FB_CGFOURTEEN) += cgfourteenfb.o sbusfb.o
-+obj-$(CONFIG_FB_P9100) += p9100fb.o sbusfb.o
-+obj-$(CONFIG_FB_LEO) += leofb.o sbusfb.o
-+obj-$(CONFIG_FB_STI) += stifb.o sticore.o fbgen.o
-+obj-$(CONFIG_FB_PMAG_BA) += pmag-ba-fb.o
-+obj-$(CONFIG_FB_PMAGB_B) += pmagb-b-fb.o
-+obj-$(CONFIG_FB_MAXINE) += maxinefb.o
-+obj-$(CONFIG_FB_TX3912) += tx3912fb.o
-+obj-$(CONFIG_FB_COLLIE) += colliefb.o collie_frontlight.o
-+obj-$(CONFIG_FB_COTULLA) += cotulla_fb.o discovery_frontlight.o
-+obj-$(CONFIG_FB_POODLE) += cotulla_fb.o poodle_frontlight.o
-+obj-$(CONFIG_FB_CORGI) += w100fb.o fbgen.o corgi_backlight.o
-+
-+
-+subdir-$(CONFIG_FB_MATROX) += matrox
-+ifeq ($(CONFIG_FB_MATROX),y)
-+obj-y += matrox/matrox.o
-+endif
-+
-+subdir-$(CONFIG_FB_RIVA) += riva
-+ifeq ($(CONFIG_FB_RIVA),y)
-+obj-y += riva/rivafb.o
-+endif
-+
-+subdir-$(CONFIG_FB_SIS) += sis
-+ifeq ($(CONFIG_FB_SIS),y)
-+obj-y += sis/sisfb.o
-+endif
-+
-+subdir-$(CONFIG_FB_ATY) += aty
-+ifeq ($(CONFIG_FB_ATY),y)
-+obj-y += aty/atyfb.o
-+endif
-+
-+obj-$(CONFIG_FB_SUN3) += sun3fb.o
-+obj-$(CONFIG_FB_BWTWO) += bwtwofb.o
-+obj-$(CONFIG_FB_HGA) += hgafb.o
-+obj-$(CONFIG_FB_SA1100) += sa1100fb.o
-+obj-$(CONFIG_FB_PXA) += pxafb.o
-+ifeq ($(CONFIG_PXA_CERF_PDA),y)
-+obj-$(CONFIG_FB_PXA) += lcdctrl.o lcdctrl_cerf.o
-+endif
-+obj-$(CONFIG_FB_VIRTUAL) += vfb.o
-+obj-$(CONFIG_FB_HIT) += hitfb.o fbgen.o
-+obj-$(CONFIG_FB_E1355) += epson1355fb.o fbgen.o
-+obj-$(CONFIG_FB_PVR2) += pvr2fb.o
-+obj-$(CONFIG_FB_VOODOO1) += sstfb.o
-+obj-$(CONFIG_FB_ANAKIN) += anakinfb.o
-+
-+# Generic Low Level Drivers
-+
-+obj-$(CONFIG_FBCON_AFB) += fbcon-afb.o
-+obj-$(CONFIG_FBCON_CFB2) += fbcon-cfb2.o
-+obj-$(CONFIG_FBCON_CFB4) += fbcon-cfb4.o
-+obj-$(CONFIG_FBCON_CFB8) += fbcon-cfb8.o
-+obj-$(CONFIG_FBCON_CFB16) += fbcon-cfb16.o
-+obj-$(CONFIG_FBCON_CFB24) += fbcon-cfb24.o
-+obj-$(CONFIG_FBCON_CFB32) += fbcon-cfb32.o
-+obj-$(CONFIG_FBCON_ILBM) += fbcon-ilbm.o
-+obj-$(CONFIG_FBCON_IPLAN2P2) += fbcon-iplan2p2.o
-+obj-$(CONFIG_FBCON_IPLAN2P4) += fbcon-iplan2p4.o
-+obj-$(CONFIG_FBCON_IPLAN2P8) += fbcon-iplan2p8.o
-+obj-$(CONFIG_FBCON_IPLAN2P16) += fbcon-iplan2p16.o
-+obj-$(CONFIG_FBCON_MAC) += fbcon-mac.o
-+obj-$(CONFIG_FBCON_MFB) += fbcon-mfb.o
-+obj-$(CONFIG_FBCON_VGA) += fbcon-vga.o
-+obj-$(CONFIG_FBCON_HGA) += fbcon-hga.o
-+obj-$(CONFIG_FBCON_STI) += fbcon-sti.o
-+
-+include $(TOPDIR)/Rules.make
-+
-+clean:
-+ rm -f core *.o *.a *.s
-+
-+../conmakehash: ../conmakehash.c
-+ $(HOSTCC) $(HOSTCFLAGS) -o ../conmakehash ../conmakehash.c
-+
-+promcon_tbl.c: prom.uni ../char/conmakehash
-+ ../char/conmakehash prom.uni | \
-+ sed -e '/#include <[^>]*>/p' -e 's/types/init/' \
-+ -e 's/dfont\(_uni.*\]\)/promfont\1 __initdata/' > promcon_tbl.c
-+
-+promcon_tbl.o: promcon_tbl.c $(TOPDIR)/include/linux/types.h
-+
-diff -Nur linux/drivers/video/collieLogoScreen.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/collieLogoScreen.c
---- linux/drivers/video/collieLogoScreen.c 2003-05-13 16:18:58.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/collieLogoScreen.c 2003-06-23 01:47:03.000000000 +0700
-@@ -2,166 +2,248 @@
- #ifndef __initdata
- #define __initdata
- #endif
--static int logo_screen_width __initdata = 32;
--static int logo_screen_height __initdata = 160;
--static unsigned short logo_screen_data[] __initdata ={
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x8bcf,0xaaeb,0x8410,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c30,0x83ef,0x8bcf,0x8410,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xba69,0xf800,0xe145,0xa30c,0x7c30,0x7c30,0x7bef,0x7bef,0x7bef,0x7c10,0x8bcf,0xc249,0xe8a2,0xf041,0xe104,0xb2aa,0x8410,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd945,0xf800,0xf800,0xf800,0xd986,0x9b4d,0x7c10,0x7bef,0x7c10,0x8bcf,0xe104,0xf800,0xf800,0xf800,0xf800,0xf800,0xc9c7,0x7c10,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x8bcf,0xf082,0xf800,0xf800,0xf800,0xf800,0xd1c7,0x7c30,0x7c10,0x7c30,0xd1a6,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xb2aa,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xb2aa,0xf800,0xf800,0xf800,0xf800,0xf800,0xa32c,0x7c30,0x7c30,0xa34d,0xf820,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xe8a2,0x8bcf,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xd1a6,0xf800,0xf800,0xf800,0xf800,0xe104,0x8410,0x7c10,0x7c30,0xd186,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xa2eb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x83ef,0xe8e3,0xf800,0xf800,0xf800,0xf800,0xb28a,0x7430,0x7c10,0x8bef,0xf082,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xca08,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x9bae,0xf841,0xf800,0xf800,0xf800,0xf820,0x936d,0x7c10,0x7c30,0xb2cb,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xe8c3,0x83ef,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7430,0xba69,0xf800,0xf800,0xf800,0xf800,0xd965,0x7c30,0x7c10,0x7c30,0xc9c7,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf820,0x936d,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xc9c7,0xf800,0xf800,0xf800,0xf800,0xb28a,0x7430,0x7c10,0x8410,0xe124,0xf800,0xf800,0xf800,0xf800,0xf800,0xd945,0xb269,0xe8a2,0xf800,0xf800,0xf800,0xa2eb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf800,0xf820,0x9b4d,0x7c10,0x7c10,0x83ef,0xf082,0xf800,0xf800,0xf800,0xf800,0xf820,0x936d,0x6c92,0xba8a,0xf800,0xf800,0xf800,0xb2cb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0x83ef,0xe904,0xf800,0xf800,0xf800,0xf0a2,0x83ef,0x7c10,0x7c10,0x9b8e,0xf820,0xf800,0xf800,0xf800,0xf800,0xe145,0x8410,0x7c10,0x9bae,0xf820,0xf800,0xf800,0xba49,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf061,0xf800,0xf800,0xf800,0xd1e7,0x7c30,0x7bef,0x7430,0xba69,0xf800,0xf800,0xf800,0xf800,0xf800,0xc249,0x7c51,0x7c10,0x9bcf,0xf841,0xf800,0xf800,0xc208,0x7451,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0x8bcf,0xf841,0xf800,0xf800,0xf800,0xb269,0x7430,0x7bef,0x7c30,0xc9e7,0xf800,0xf800,0xf800,0xf800,0xf800,0xaaaa,0x7c30,0x7c10,0x9bcf,0xf841,0xf800,0xf800,0xca08,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0x9bcf,0xf841,0xf800,0xf800,0xf800,0xaaeb,0x7c30,0x7c10,0x7c10,0xd165,0xf800,0xf800,0xf800,0xf800,0xf800,0xa30c,0x7c30,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0xa38e,0xf820,0xf800,0xf800,0xf800,0x9b4d,0x7c10,0x7c10,0x8410,0xe124,0xf800,0xf800,0xf800,0xf800,0xf820,0x938e,0x7c10,0x7430,0xba49,0xf800,0xf800,0xf800,0xd1e7,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf841,0x8bcf,0x7c10,0x7c10,0x83cf,0xf0a2,0xf800,0xf800,0xf800,0xf800,0xf082,0x83ef,0x7c10,0x7c51,0xca08,0xf800,0xf800,0xf800,0xca08,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf061,0x83cf,0x7c10,0x7c10,0x8bef,0xf841,0xf800,0xf800,0xf800,0xf800,0xd9a6,0x7c30,0x7c10,0x7c10,0xd186,0xf800,0xf800,0xf800,0xc228,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0x9bae,0xf820,0xf800,0xf800,0xe904,0x83ef,0x7c10,0x7c10,0xa34d,0xf820,0xf800,0xf800,0xf800,0xf800,0xc228,0x7451,0x7c10,0x8410,0xe124,0xf800,0xf800,0xf800,0xba08,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0x9bcf,0xf841,0xf800,0xf800,0xe145,0x8410,0x7c10,0x7c51,0xba28,0xf800,0xf800,0xf800,0xf800,0xf800,0xb269,0x7430,0x7c10,0x83ef,0xf082,0xf800,0xf800,0xf800,0xb28a,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0x8bcf,0xf841,0xf800,0xf800,0xf061,0x83cf,0x7c10,0x7c30,0xd186,0xf800,0xf800,0xf800,0xf800,0xf800,0xaaeb,0x7c30,0x7c10,0xa34d,0xf820,0xf800,0xf800,0xf800,0xaaeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf0a2,0xf800,0xf800,0xf800,0xaaeb,0x7471,0x938e,0xf061,0xf800,0xf800,0xf800,0xf800,0xf820,0x9b6d,0x7c10,0x7c30,0xc208,0xf800,0xf800,0xf800,0xf800,0xa30c,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0x8410,0xe124,0xf800,0xf800,0xf800,0xf041,0xd1e7,0xf0a2,0xf800,0xf800,0xf800,0xf800,0xf800,0xf0a2,0x83ef,0x7c10,0x7c10,0xd965,0xf800,0xf800,0xf800,0xf820,0x938e,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd186,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd1e7,0x7c30,0x7c10,0x83ef,0xe8a2,0xf800,0xf800,0xf800,0xf0a2,0x83ef,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xba8a,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xb2aa,0x7430,0x7c30,0xab2c,0xf800,0xf800,0xf800,0xf800,0xd1c7,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x93ae,0xf861,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf841,0x936d,0x7c10,0x7c30,0xc9c7,0xf800,0xf800,0xf800,0xf800,0xb269,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c30,0xd965,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xc9e7,0x7c30,0x7c10,0x83ef,0xe8c3,0xf800,0xf800,0xf800,0xf800,0xa30c,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xa32c,0xf841,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf061,0x938e,0x7c10,0x7c10,0x8bef,0xe145,0xf800,0xf800,0xf800,0xf841,0x8bae,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xba49,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf820,0xaacb,0x7c30,0x7bef,0x7bef,0x7c10,0x8410,0xa30c,0xd186,0xf820,0xd965,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xb2aa,0xe8a2,0xf800,0xf800,0xf800,0xe8c3,0xab0c,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c30,0x7c30,0x9b8e,0x9b4d,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0x7c10,0x7451,0x7c10,0xa34d,0xb249,0xa34d,0x8430,0x7430,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7430,0x7430,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x8bef,0x9b6d,0x9b6d,0x9b6d,0x938e,0x938e,0x93ae,0x938e,0x936d,0x9b6d,0x9b6d,0x9b6d,0x9b6d,0x9b6d,0x9b6d,0x9b6d,0x9b6d,0x9b6d,0x9b6d,0x9b6d,0x93cf,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf820,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xa36d,0xf0e3,0xe8c3,0xe8c3,0xe8c3,0xe8c3,0xe8c3,0xe8c3,0xe8c3,0xf800,0xf800,0xf800,0xf800,0xf0a2,0xe8e3,0xe8c3,0xe8c3,0xe8c3,0xe8c3,0xf0a2,0xca69,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x83ef,0x83ef,0x83ef,0x83ef,0x83ef,0x83ef,0x83ef,0x83ef,0x8bae,0xf041,0xf800,0xf800,0xf800,0xa2eb,0x7c10,0x83ef,0x83ef,0x83ef,0x83ef,0x83ef,0x83ef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x83cf,0xf041,0xf800,0xf800,0xf800,0x9b0c,0x7c30,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf041,0xf800,0xf800,0xf800,0x9aeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf041,0xf800,0xf800,0xf800,0x9aeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf041,0xf800,0xf800,0xf800,0x9aeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf041,0xf800,0xf800,0xf800,0x9aeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf041,0xf800,0xf800,0xf800,0x9aeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf041,0xf800,0xf800,0xf800,0x9aeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf041,0xf800,0xf800,0xf800,0x9aeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf041,0xf800,0xf800,0xf800,0x9aeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf041,0xf800,0xf800,0xf800,0x9aeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf041,0xf800,0xf800,0xf800,0x9aeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7430,0x7430,0x7430,0x7430,0x7430,0x7430,0x7451,0x7bef,0xf061,0xf800,0xf800,0xf800,0x9b2c,0x7451,0x7430,0x7430,0x7430,0x7430,0x7430,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x93ae,0xb2aa,0xb28a,0xb28a,0xb28a,0xb28a,0xb28a,0xb2aa,0xba69,0xf841,0xf800,0xf800,0xf800,0xc1e7,0xb2aa,0xb28a,0xb28a,0xb28a,0xb28a,0xba8a,0xa34d,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x93ae,0xc228,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xca08,0xc9c7,0xb30c,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x9bae,0xa34d,0x7471,0x7471,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c51,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf820,0xd1a6,0x8b8e,0x7430,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf061,0xb28a,0x8410,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xe145,0x9b4d,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf820,0xca08,0x8bae,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x9b8e,0xf0a2,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf082,0xaaaa,0x7c10,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x8bcf,0xc9c7,0xf820,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd965,0x9b6d,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c30,0xa30c,0xe0e3,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf820,0xc249,0x8bef,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0x8410,0xe124,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xe8c3,0xaaeb,0x7c30,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd145,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd186,0x938e,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf800,0xf820,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf841,0xba69,0x83ef,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf800,0xba8a,0xba49,0xf841,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xe904,0xa32c,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf800,0xb2aa,0x7471,0x9b6d,0xd965,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xba8a,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf800,0xb28a,0x7430,0x7c10,0x7c30,0xb2cb,0xe8a2,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf800,0xb28a,0x7430,0x7bef,0x7c10,0x7c30,0x8410,0xc208,0xf820,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf800,0xb28a,0x7430,0x7bef,0x7bef,0x7c30,0x7c30,0xa30c,0xf082,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf800,0xb28a,0x7430,0x7c10,0x7c30,0x938e,0xd965,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf800,0xb28a,0x7451,0x7c30,0xb2eb,0xf841,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf800,0xb2aa,0x9b4d,0xd965,0xf820,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf800,0xf0a2,0xf820,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd145,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd208,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0x7c30,0xd924,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf082,0xaaeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7451,0x8bae,0xc9e7,0xf820,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf820,0xd1c7,0x8bcf,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x8410,0xb2aa,0xf082,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xe0e3,0xa32c,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x8bcf,0xe124,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf082,0xba49,0x8410,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf820,0xd1a6,0x93ae,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xe8e3,0xa32c,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf061,0xc228,0x83ef,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf820,0xd186,0x938e,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xe8c3,0xab0c,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf861,0xc208,0x83ef,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xd965,0x936d,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab0c,0xe8e3,0xaaeb,0x7c30,0x7c30,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x93ae,0x93ae,0x7bef,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83cf,0x83ef,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xa34d,0xf082,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf061,0xf041,0xd965,0x83ef,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf061,0x8bcf,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf820,0x93ae,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf820,0x9b4d,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xa2eb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xaaeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab4d,0xf841,0xf841,0xf841,0xf841,0xf841,0xf841,0xf841,0xf841,0xf041,0xf841,0xf841,0xf841,0xf841,0xf841,0xf841,0xf841,0xf820,0xf800,0xf800,0xf800,0xaaeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x83ef,0x8bcf,0x8bcf,0x8bcf,0x8bcf,0x8bcf,0x8bcf,0x8bcf,0x8bef,0x93cf,0x8bef,0x8bef,0x8bcf,0x8bcf,0x8bcf,0x8bcf,0x8c10,0xb2cb,0xf800,0xf800,0xf800,0xaacb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c30,0x83ef,0xd945,0xba49,0x8410,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x93ef,0xf841,0xf800,0xf800,0xb28a,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd186,0xf800,0xf800,0xba49,0x7430,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf061,0xf800,0xf800,0xb28a,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c51,0xc208,0xf800,0xf800,0xf800,0xb269,0x7430,0x7bef,0x7bef,0x7bef,0x7c10,0x83ef,0xe8c3,0xf800,0xf800,0xb28a,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7430,0xb2aa,0xf800,0xf800,0xf800,0xf800,0xaaeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7c10,0x83ef,0xe104,0xf800,0xf800,0xb28a,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xa32c,0xf841,0xf800,0xf800,0xf800,0xf800,0xa2eb,0x7c30,0x7bef,0x7bef,0x7bef,0x7c10,0x8410,0xe124,0xf800,0xf800,0xb28a,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0x938e,0xf082,0xf800,0xf800,0xf800,0xf800,0xf800,0x9b0c,0x7c30,0x7bef,0x7bef,0x7bef,0x7c10,0x83ef,0xe104,0xf800,0xf800,0xb28a,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x8bcf,0xe0e3,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xa30c,0x7c30,0x7bef,0x7bef,0x7bef,0x7c10,0x83ef,0xe8c3,0xf800,0xf800,0xb28a,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x8410,0xd965,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xaacb,0x7c30,0x7bef,0x7bef,0x7bef,0x7c10,0x8bef,0xf061,0xf800,0xf800,0xb2cb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c30,0xc9e7,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xba49,0x7451,0x7bef,0x7bef,0x7bef,0x7c30,0xa34d,0xf800,0xf800,0xf800,0xaaeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xba8a,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xe8e3,0x83ef,0x7c10,0x7bef,0x7bef,0x7451,0xc9e7,0xf800,0xf800,0xf800,0xa30c,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x9b8e,0xf841,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xb28a,0x7451,0x7c10,0x7430,0x8bae,0xf0a2,0xf800,0xf800,0xf820,0x9b6d,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf0c3,0xf800,0xf800,0xf800,0xf841,0xba69,0x936d,0xa32c,0xe124,0xf800,0xf800,0xf800,0xf841,0x8bcf,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xd186,0x9bae,0xf841,0xf800,0xf800,0xf800,0xf800,0xf820,0xf800,0xf800,0xf800,0xf800,0xf800,0xe904,0x83ef,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xe104,0x8bef,0x7c10,0xe8c3,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xca28,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf0a2,0x938e,0x7c30,0x7c30,0xd1a6,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xaacb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf841,0xa32c,0x7c30,0x7bef,0x7c30,0xa34d,0xf820,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf841,0x938e,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xb2cb,0x7c51,0x7bef,0x7bef,0x7bef,0x7c30,0xd186,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xc9e7,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xc228,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7c10,0x938e,0xf082,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf082,0x938e,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xd165,0x7c10,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xa30c,0xf082,0xf800,0xf800,0xf800,0xf800,0xf082,0xa32c,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab0c,0xe124,0x8bef,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0x93cf,0xc9e7,0xe124,0xe124,0xc9e7,0x93ae,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x9b8e,0x93ae,0x7451,0x7c30,0x7c30,0x7c30,0x7c30,0x7c30,0x7c30,0x7c30,0x7c30,0x7c30,0x7430,0x7451,0x7c30,0x7c30,0x7451,0x7451,0x7c30,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x8bcf,0xa30c,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2eb,0xa2cb,0x9b4d,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf082,0x83cf,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf841,0x8bcf,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf820,0x9b6d,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xa30c,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xa2eb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xab2c,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xaaeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x9b6d,0xd945,0xd924,0xd924,0xd924,0xd924,0xd145,0xe124,0xf800,0xf800,0xf800,0xe8a2,0xd145,0xd924,0xd924,0xd924,0xd145,0xe104,0xf800,0xf800,0xf800,0xb2aa,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7430,0xaaeb,0xf800,0xf800,0xf800,0xb269,0x7451,0x7c10,0x7c10,0x7c10,0x7c30,0x9bae,0xf820,0xf800,0xf800,0xb28a,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7451,0xba28,0xf800,0xf800,0xf800,0xa30c,0x7c30,0x7c10,0x7c10,0x7c10,0x7c10,0x8bcf,0xf041,0xf800,0xf800,0xba28,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c51,0xc9e7,0xf800,0xf800,0xf820,0x936d,0x7c10,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xf082,0xf800,0xf800,0xba08,0x7451,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xd1c7,0xf800,0xf800,0xf041,0x8bcf,0x7c10,0x7bef,0x7bef,0x7bef,0x7c10,0x83ef,0xe8c3,0xf800,0xf800,0xba08,0x7451,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd165,0xf800,0xf800,0xf061,0x83cf,0x7c10,0x7bef,0x7bef,0x7bef,0x7c10,0x83ef,0xe8e3,0xf800,0xf800,0xc228,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf061,0x83cf,0x7c10,0x7bef,0x7bef,0x7bef,0x7c10,0x8410,0xe104,0xf800,0xf800,0xba08,0x7451,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf061,0x83cf,0x7c10,0x7bef,0x7bef,0x7bef,0x7c10,0x83ef,0xe8e3,0xf800,0xf800,0xba08,0x7451,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd924,0xf800,0xf800,0xf061,0x83cf,0x7c10,0x7bef,0x7bef,0x7bef,0x7c10,0x83cf,0xe8a2,0xf800,0xf800,0xba69,0x7430,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xd186,0xf800,0xf800,0xf820,0x938e,0x7c10,0x7bef,0x7bef,0x7bef,0x7c10,0x8bcf,0xf041,0xf800,0xf800,0xb2aa,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xc9e7,0xf800,0xf800,0xf800,0xaaeb,0x7430,0x7bef,0x7bef,0x7bef,0x7c30,0xb2cb,0xf800,0xf800,0xf800,0xaaeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7451,0xc208,0xf800,0xf800,0xf800,0xd986,0x7c30,0x7c10,0x7bef,0x7c10,0x7c51,0xd186,0xf800,0xf800,0xf800,0xa30c,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xaaeb,0xf800,0xf800,0xf800,0xf800,0xb28a,0x7c51,0x7430,0x7451,0xa30c,0xf820,0xf800,0xf800,0xf820,0x9b6d,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x8bef,0xf061,0xf800,0xf800,0xf800,0xf820,0xc9e7,0xaaeb,0xc249,0xf841,0xf800,0xf800,0xf800,0xf041,0x8bcf,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0xe124,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xe124,0x8410,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xc228,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xc249,0x7c51,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x93cf,0xf082,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xaaeb,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xc9e7,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf082,0x8bcf,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x8bef,0xe8c3,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xba69,0x7c30,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0xa32c,0xf061,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xe104,0x8bcf,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c51,0xa32c,0xe8a2,0xf800,0xf800,0xf800,0xf800,0xe124,0x938e,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c30,0x83ef,0xb2aa,0xc9e7,0xc9e7,0xab0c,0x7c10,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c30,0x7c51,0x7c51,0x7c30,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,
-- 0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef};
-+static int logo_screen_width __initdata = 320;
-+static int logo_screen_height __initdata = 240;
-+static unsigned short logo_screen_data[] __initdata ={
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xFF10,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD56B,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xD56B,0xE60B,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xD56B,0xC484,0xABC5,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xC460,0xBC00,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xC484,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xE540,0xC460,0xBC00,0xBC00,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xBC00,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE20,0xE540,0xBC00,0xC50D,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xC484,0xE540,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xEDA0,0xE540,0xE540,0xE540,0xE540,0xEDA0,0xEDA0,0xF5E0,0xFE20,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0xBC00,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC00,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xD4E0,0xBC25,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC25,0xC460,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xC460,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAB60,0xC460,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0xD56B,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xC50D,0xB3C0,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xBC00,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABA4,0xBC00,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE63,0xFE63,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC460,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xBC00,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0xD5B1,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD56B,0xAB60,0xBC00,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE63,0xFE62,0xFE62,0xFE63,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0xD56B,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC25,0xAB60,0xC460,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xBC25,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xB3C0,0xC460,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xAB60,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xB3C0,0xC460,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xB3C0,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0xAB60,0xBC00,0xC460,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xB3C0,0xD5B1,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC25,0xAB60,0xBC00,0xC460,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xBC00,0xC484,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xBC00,0xC460,0xE540,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0xBC00,0xAB60,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xBC00,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0xC460,0xAB60,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xA320,0xB3C0,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0xC460,0xAB60,0xC50D,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB469,0xAB60,0xB3C0,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xD4E0,0xB3C0,0xAB60,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAB60,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xD4E0,0xC460,0xAB60,0xC50D,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xE540,0xD4E0,0xBC00,0xAB60,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xE540,0xD4E0,0xBC00,0xAB60,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0xA320,0xB3C0,0xBC00,0xC460,0xD4E0,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xD4E0,0xBC00,0xAB60,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC25,0xAB60,0xB3C0,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xE540,0xC460,0xB3C0,0xD5B1,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xB3C0,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xD4E0,0xBC00,0xC50D,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xD4E0,0xBC25,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xD4E0,0xD56B,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xC50D,0xA320,0xB3C0,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xE540,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABC5,0xAB60,0xB3C0,0xC460,0xD4E0,0xD4E0,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF66B,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9CF3,0x8C30,0x630C,0x73AE,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xB3C0,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE63,0x7453,0x7453,0x7453,0x7453,0x7453,0x630C,0x2944,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0x94B2,0x2944,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB469,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xB3C0,0xC460,0xD4E0,0xD4E0,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xABA4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A69,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD56B,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0x9324,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABC5,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xB3C0,0xC460,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC25,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x4A69,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xB3C0,0xC460,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x1081,0x1081,0x1081,0x1081,0x1081,0x0840,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0x51C0,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x18C2,0x18C2,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x18C2,0x18C2,0x18C2,0x1081,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABC5,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC484,0x0000,0x0000,0x0000,0x0840,0x1081,0x18C2,0x2944,0x2944,0x39C7,0x39C7,0x39C7,0x4A49,0x4A49,0x4A49,0x4A49,0x39C7,0x39C7,0x39C7,0x39C7,0x2944,0x18C2,0x18C2,0x0840,0x0000,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x4A49,0x94B2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xB3C0,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x0840,0x0000,0x0000,0x0840,0x18C2,0x2944,0x39C7,0x39C7,0x4A49,0x4A49,0x4A49,0x4A49,0x4A49,0x4A49,0x4A49,0x4A49,0x4A49,0x4A49,0x4A49,0x39C7,0x2944,0x2944,0x18C2,0x0000,0x0840,0x0840,0x1081,0x1081,0x0840,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x52AA,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0x4140,0x0000,0x0000,0x1081,0x2944,0x39C7,0x4A49,0x4A49,0x4A49,0x4A49,0x39C7,0x39C7,0x2944,0x2944,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x0840,0x0000,0x0840,0x1081,0x1081,0x18C2,0x18C2,0x18C2,0x1081,0x1081,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x94B2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABA4,0xAB60,0xB3C0,0xC460,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0x51C0,0x0000,0x0000,0x18C2,0x2944,0x39C7,0x4A49,0x4A49,0x39C7,0x2944,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x18C2,0x18C2,0x18C2,0x2944,0x2944,0x18C2,0x18C2,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0x51C0,0x0000,0x0000,0x18C2,0x2944,0x4A49,0x4A49,0x39C7,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x18C2,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB469,0xA320,0xB3C0,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x4140,0x0000,0x0000,0x1081,0x2944,0x4A49,0x4A49,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x2944,0x2944,0x39C7,0x39C7,0x2944,0x2944,0x2944,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xB3C0,0xC460,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x0840,0x0000,0x0000,0x0000,0x1081,0x2944,0x2944,0x1081,0x0840,0x0840,0x1081,0x1081,0x1081,0x1081,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x39C7,0x39C7,0x39C7,0x2944,0x2944,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC460,0x0840,0x0000,0x0000,0x1081,0x4A49,0x73AE,0x8C30,0x8C30,0x94B2,0x94B2,0x94B2,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x94B2,0x94B2,0x8C30,0x630C,0x4A49,0x39C7,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x2944,0x2944,0x39C7,0x39C7,0x2944,0x2944,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x52AA,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABC5,0xA320,0xB3C0,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0x6260,0x0840,0x0000,0x0000,0x0000,0x630C,0xB596,0xDEDA,0xF77D,0xF79D,0xF79D,0xF79D,0xF79D,0xF79D,0xF7BE,0xF7BE,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF79D,0xF77D,0xEF3C,0xD679,0xC617,0x9CF3,0x73AE,0x4A49,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x39C7,0x39C7,0x2944,0x2944,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xB3C0,0xC460,0xC460,0xD4E0,0xE540,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0x6260,0x0000,0x0000,0x0000,0x0000,0x39C7,0xB596,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xE71B,0xC617,0x9CF3,0x73AE,0x4A49,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x39C7,0x39C7,0x2944,0x2944,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x18C2,0x0000,0x0000,0x0000,0x0000,0x18C2,0xB596,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xDEDA,0xB596,0x94B2,0x73AE,0x4A49,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x39C7,0x39C7,0x2944,0x18C2,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x52AA,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABA4,0xA320,0xB3C0,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0x6260,0x0840,0x0000,0x0000,0x0000,0x0000,0x1081,0x9CF3,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xD679,0xB596,0x8C30,0x4A49,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x2944,0x2944,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x51C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x8C30,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xD679,0x9CF3,0x630C,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x18C2,0x2944,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0xA320,0xAB60,0xB3C0,0xC460,0xC460,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0x9324,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xB596,0x73AE,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABA4,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x51C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A69,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xB596,0x73AE,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0x9324,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xDEDA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xB596,0x630C,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A69,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x51C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xB596,0x52AA,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB469,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0x6260,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0x9CF3,0x4A49,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABC5,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC484,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8C30,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xC617,0x8C30,0x39C7,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0x6260,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73AE,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xB596,0x8C30,0x39C7,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xABA4,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52AA,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xD679,0x9CF3,0x8C30,0x4A49,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x51C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0xB596,0x9CF3,0x8C30,0x630C,0x39C7,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x94B2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0x6260,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xC617,0xB596,0x9CF3,0x8C30,0x73AE,0x630C,0x4A49,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x52AA,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE63,0xFE63,0xFE63,0xFE63,0xFE63,0xFE63,0xFE63,0xFE62,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xABC5,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xB596,0x9CF3,0x8C30,0x73AE,0x73AE,0x630C,0x630C,0x4A69,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE63,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0x6260,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x94B2,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xC617,0xB596,0x94B2,0x8C30,0x73AE,0x73AE,0x73AE,0x73AE,0x73AE,0x630C,0x528A,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x94B2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE60,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0x9324,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0xC617,0x9CF3,0x94B2,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x73AE,0x4A49,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABC5,0xA320,0xAB60,0xAB60,0xBC00,0xBC00,0xC460,0xD4E0,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A49,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xD679,0xB596,0x9CF3,0x94B2,0x94B2,0x94B2,0x94B2,0x94B2,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x94B2,0x8C30,0x630C,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0x6260,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xC617,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xB596,0xC617,0xD679,0xD679,0xD679,0xC617,0xB596,0x94B2,0x630C,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC484,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xD679,0xB596,0x9CF3,0x9CF3,0xB596,0xB596,0xC617,0xDEDA,0xEF5D,0xF79D,0xFFFF,0xFFFF,0xF7BE,0xF79D,0xE71B,0xC617,0x9CF3,0x630C,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8C30,0x73AE,0x630C,0x52AA,0x4A69,0x4A49,0x2944,0x2944,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x1081,0x0840,0x0840,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0840,0x0840,0x0840,0x1081,0x18C2,0x18C2,0x2944,0x2944,0x4A69,0x630C,0x94B2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0x6260,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x8C30,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0xC617,0xB596,0xB596,0xB596,0xD679,0xE71B,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xC617,0x94B2,0x528A,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x630C,0x52AA,0x4A49,0x2944,0x2944,0x18C2,0x18C2,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x52AA,0x94B2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABC5,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xBC25,0x52AA,0x528A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52AA,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xD679,0xC617,0xC617,0xD679,0xE71B,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xB596,0x8C30,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x18C2,0x18C2,0x1081,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x39C7,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAB60,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0x6260,0x73AE,0xC617,0x8C30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0xDEDA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xDEDA,0xD679,0xD679,0xE71B,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0x9CF3,0x4A49,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x4A69,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xBC00,0x4A49,0x9CF3,0xEF5D,0xF79D,0x9CF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xDEDA,0xDEDA,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xC617,0x73AE,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A69,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xEDA0,0xF5E0,0xF5E0,0xF5E0,0xFE20,0xFE20,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xE540,0x92C0,0x52AA,0xB596,0xF7BE,0xFFFF,0xFFFF,0xB596,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x9CF3,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xE71B,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0x9CF3,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x18C2,0x18C2,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0x92C0,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xE540,0xEDA0,0xEDA0,0xEDA0,0xEDA0,0xEDA0,0xF5E0,0xF5E0,0xF5E0,0xF5E0,0xF5E0,0xF5E0,0xEDA0,0xE540,0xC460,0x6260,0x73AE,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD679,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x8C30,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF77D,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xC617,0x630C,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x51C0,0x7A60,0xA320,0xAB60,0xA320,0xA320,0x7A60,0x4140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x2944,0x39C7,0x4A69,0x630C,0x73AE,0x73AE,0x73AE,0x630C,0x4A49,0x2944,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0x92C0,0xA320,0xAB60,0xB3C0,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xD4E0,0xC460,0xA320,0x6260,0x94B2,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0x630C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x630C,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xB596,0x73AE,0x39C7,0x2944,0x2944,0x2944,0x2944,0x2944,0x39C7,0x39C7,0x39C7,0x4A49,0x4A49,0x4A49,0x39C7,0x39C7,0x2944,0x4140,0x92C0,0xAB60,0xAB60,0xBC00,0xBC00,0xBC00,0xBC00,0xB3C0,0xAB60,0x69C0,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x630C,0x94B2,0xB596,0xDEDA,0xEF5D,0xF77D,0xF79D,0xF79D,0xF79D,0xF79D,0xEF5D,0xDEDA,0xB596,0x94B2,0x73AE,0x4A49,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB469,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xBC00,0xC460,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xC460,0xBC00,0x7A60,0x528A,0xB596,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9CF3,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52AA,0xDEDA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xC617,0xB596,0x9CF3,0x9CF3,0x94B2,0x94B2,0x94B2,0x94B2,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x73AE,0x9324,0xAB60,0xA320,0x7A60,0x9324,0xCCC5,0xD4E0,0xD4E0,0xD4E0,0xC460,0xBC00,0xAB60,0x7A60,0x0840,0x0000,0x0000,0x0000,0x18C2,0x528A,0x9CF3,0xD679,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xD679,0xB596,0x94B2,0x73AE,0x4A49,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABA4,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xBC00,0xBC00,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xBC00,0xBC00,0xAB60,0x51C0,0x630C,0xC617,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD679,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x52AA,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xE71B,0xD679,0xC617,0xC617,0xB596,0xB596,0xB596,0x9CF3,0x9CF3,0x9CF3,0x94B2,0x8C30,0x9324,0xAB60,0xA320,0x69C0,0x69C0,0xABC5,0xEDA0,0xF5E0,0xEDA0,0xE540,0xD4E0,0xD4E0,0xC460,0xAB60,0x69C0,0x0000,0x0000,0x4A69,0xB596,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xB596,0x630C,0x39C7,0x2944,0x2944,0x2944,0x4A49,0x8C30,0xE71B,0xFFFF,0xFFFF,0xF7BE,0xD679,0xB596,0x9CF3,0x8C30,0x630C,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xAB60,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xBC00,0xBC00,0xBC00,0xBC00,0xBC00,0xBC00,0xBC00,0xB3C0,0xB3C0,0xAB60,0x7A60,0x2944,0x73AE,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0x94B2,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x39C7,0x8C30,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x94B2,0x8C30,0x9324,0xAB60,0xAB60,0x69C0,0x61A0,0x9324,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xE540,0xD4E0,0xC460,0xAB60,0x51C0,0x73AE,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xF79D,0x94B2,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xB596,0xFFFF,0xFFFF,0xF77D,0xD679,0xB596,0x9CF3,0x94B2,0x630C,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x94B2,0x92C0,0xA320,0xA320,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xA320,0x7A60,0x4140,0x0840,0x52AA,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDEDA,0x9CF3,0x8C30,0x73AE,0x73AE,0x73AE,0x8C30,0x94B2,0xB596,0xD679,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xDEDA,0xD679,0xC617,0xB596,0x9CF3,0x9CF3,0x94B2,0x9324,0xAB60,0xB3C0,0x69C0,0x61A0,0x92C0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xD4E0,0xC460,0xAB60,0xD5B1,0xFFFF,0xFFFF,0xFFFF,0xE71B,0x4A49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0xD679,0xFFFF,0xFFFF,0xF79D,0xDEDA,0xC617,0x9CF3,0x8C30,0x4A49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x18C2,0x69C0,0x7A60,0x92C0,0xA320,0xA320,0xA320,0xA320,0xA320,0xA320,0xA320,0x92C0,0x7A60,0x69C0,0x4140,0x0840,0x0000,0x2944,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xEF5D,0xEF3C,0xEF3C,0xF77D,0xF79D,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xDEDA,0xD679,0xC617,0xB596,0x9CF3,0x9CF3,0x94B2,0x73AE,0xA320,0xB3C0,0x92C0,0x61A0,0x7A60,0xE540,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xD4E0,0xC460,0xB3C0,0xDEDA,0xFFFF,0xD679,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xC617,0x9CF3,0x73AE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x630C,0x0000,0x0840,0x1081,0x2944,0x4140,0x4140,0x4140,0x4140,0x2944,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x8C30,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF3C,0xDEDA,0xD679,0xC617,0xB596,0x9CF3,0x94B2,0x8C30,0x73AE,0xA320,0xB3C0,0xB3C0,0x69C0,0x69C0,0xD4E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xD4E0,0xBC00,0xABA4,0xC617,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x39C7,0x39C7,0x0840,0x0000,0x39C7,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xD679,0x9CF3,0x73AE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xE71B,0xDEDA,0xC617,0xB596,0xB596,0x9CF3,0x94B2,0x8C30,0x73AE,0x9324,0xAB60,0xBC00,0x7A60,0x61A0,0xA320,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xD4E0,0xBC00,0xA320,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x73AE,0x94B2,0x8C30,0x18C2,0x0000,0x4A49,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xD679,0x9CF3,0x73AE,0x0000,0x0000,0x0000,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52AA,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF77D,0xEF3C,0xE71B,0xD679,0xD679,0xC617,0xC617,0xC617,0xC617,0xC617,0xC617,0xC617,0xC617,0xC617,0xC617,0xC617,0xD679,0xD679,0xDEDA,0xE71B,0xE71B,0xEF5D,0xF77D,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x94B2,0x8C30,0x73AE,0x9324,0xAB60,0xBC00,0xBC00,0x61A0,0x69C0,0xE540,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xD4E0,0xBC00,0x7A60,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x630C,0x94B2,0x9CF3,0x9CF3,0x94B2,0x18C2,0x0000,0x94B2,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xC617,0x9CF3,0x630C,0x0000,0x0000,0x1081,0x18C2,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8C30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xDEDA,0xC617,0xB596,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xB596,0xB596,0xC617,0xD679,0xDEDA,0xE71B,0xEF5D,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x94B2,0x8C30,0x73AE,0x9324,0xAB60,0xBC00,0xD4E0,0x92C0,0x61A0,0x92C0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xD4E0,0xB3C0,0x51C0,0x0000,0x0000,0x0000,0x0840,0x630C,0x94B2,0x9CF3,0x9CF3,0x9CF3,0x94B2,0x4A69,0x0000,0x2944,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xB596,0x94B2,0x4A49,0x0000,0x0000,0x2944,0x2944,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xDEDA,0xC617,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xC617,0xDEDA,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF77D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0x9CF3,0x9CF3,0x94B2,0x8C30,0x73AE,0x9324,0xAB60,0xBC00,0xD4E0,0xD4E0,0x69C0,0x61A0,0xD4E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xD4E0,0xAB60,0x18C2,0x0000,0x0000,0x0840,0x4A49,0x630C,0x73AE,0x630C,0x630C,0x2944,0x0840,0x18C2,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xD679,0x9CF3,0x8C30,0x18C2,0x0000,0x18C2,0x39C7,0x39C7,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A49,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xDEDA,0xD679,0xC617,0xC617,0xC617,0xD679,0xD679,0xDEDA,0xDEDA,0xE71B,0xE71B,0xEF3C,0xEF3C,0xEF3C,0xEF3C,0xEF3C,0xEF3C,0xEF3C,0xE71B,0xE71B,0xE71B,0xDEDA,0xDEDA,0xD679,0xD679,0xD679,0xC617,0xC617,0xB596,0xB596,0xB596,0xB596,0xB596,0xC617,0xD679,0xE71B,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xD679,0xD679,0xC617,0xB596,0x9CF3,0x9CF3,0x94B2,0x8C30,0x73AE,0x9324,0xAB60,0xBC00,0xC460,0xE540,0xC484,0x61A0,0x7A60,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xD4E0,0xA320,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x528A,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xB596,0x94B2,0x4A49,0x0000,0x0000,0x39C7,0x4A49,0x39C7,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF7BE,0xF7BE,0xF7BE,0xF7BE,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDEDA,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xE71B,0xD679,0xC617,0xC617,0xB596,0x9CF3,0x9CF3,0x94B2,0x8C30,0x8C30,0x9324,0xAB60,0xBC00,0xC460,0xE540,0xF5E0,0xBC00,0x61A0,0x92C0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xC460,0x9324,0x630C,0x4A49,0x39C7,0x39C7,0x39C7,0x528A,0x8C30,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xC617,0x94B2,0x52AA,0x0840,0x0000,0x18C2,0x52AA,0x4A69,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94B2,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xC617,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xE71B,0xD679,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x94B2,0x8C30,0x8C30,0x73AE,0xAB60,0xBC00,0xC460,0xE540,0xF5E0,0xFE60,0xA320,0x61A0,0xB3C0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xB3C0,0xBC00,0xEDA0,0xC460,0xD679,0xFFFF,0xF7BE,0xF79D,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xD679,0x94B2,0x4A69,0x0840,0x0000,0x0840,0x528A,0x630C,0x39C7,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94B2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9CF3,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x94B2,0x94B2,0x8C30,0x73AE,0xA320,0xB3C0,0xC460,0xD4E0,0xEDA0,0xFE20,0xFE60,0x92C0,0x61A0,0xC460,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xA320,0x92C0,0xD4E0,0xEDA0,0xC484,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xC617,0x8C30,0x2944,0x0000,0x0000,0x18C2,0x4A49,0x630C,0x528A,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0xC617,0xC617,0xDEDA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xEF3C,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x9CF3,0x94B2,0x8C30,0x8C30,0x9324,0xAB60,0xBC00,0xD4E0,0xEDA0,0xFE20,0xFE60,0xFE60,0x92C0,0x61A0,0xD4E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x92C0,0xC460,0xFE60,0xD4E0,0xDEDA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF3C,0xC617,0x9CF3,0x52AA,0x1081,0x0000,0x0840,0x2944,0x52AA,0x630C,0x528A,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x630C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xC617,0xC617,0xC617,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x9CF3,0x94B2,0x8C30,0x73AE,0x9324,0xB3C0,0xC460,0xE540,0xF5E0,0xFE60,0xFE60,0xFE60,0x92C0,0x61A0,0xD4E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC460,0xC460,0xFE60,0xF5E0,0xB469,0x9CF3,0xC617,0xD679,0xD679,0xD679,0xC617,0xB596,0x9CF3,0x73AE,0x4A69,0x18C2,0x0000,0x0000,0x0000,0x18C2,0x39C7,0x4A69,0x4A49,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x630C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDEDA,0xC617,0xC617,0xDEDA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF5D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x9CF3,0x94B2,0x8C30,0x73AE,0x9324,0xB3C0,0xC460,0xE540,0xFE20,0xFE60,0xFE60,0xFE60,0x92C0,0x61A0,0xD4E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xFE60,0xFE60,0x92C0,0x0840,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x2944,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x630C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD679,0xC617,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x9CF3,0x94B2,0x8C30,0x73AE,0xA320,0xBC00,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE20,0x92C0,0x61A0,0xC460,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xB3C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8C30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xC617,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF77D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x9CF3,0x94B2,0x8C30,0x73AE,0xA320,0xBC00,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE20,0x92C0,0x61A0,0xC460,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xBC00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8C30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDEDA,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xEF3C,0xDEDA,0xD679,0xC617,0xC617,0xB596,0x9CF3,0x9CF3,0x94B2,0x8C30,0x8C30,0xA320,0xBC00,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xA320,0x61A0,0xC460,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xBC00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8C30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xC617,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x94B2,0x94B2,0x8C30,0xA320,0xBC00,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xAB60,0x61A0,0xB3C0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xC460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9CF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xEF3C,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x9CF3,0x94B2,0x8C30,0xA320,0xBC00,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xBC00,0x61A0,0xA320,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE60,0xFE60,0xFE60,0xFE60,0xC460,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9CF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x94B2,0x8C30,0xA320,0xBC00,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x69C0,0x7A60,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE62,0xFE60,0xF5E0,0xFE60,0xFE60,0xC460,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9CF3,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x9CF3,0x94B2,0xA320,0xBC00,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0x7A60,0x69C0,0xD4E0,0xFE60,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xC460,0xFE20,0xFE60,0xC460,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8C30,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF77D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0x9CF3,0xA320,0xB3C0,0xC460,0xE540,0xFE20,0xFE60,0xFE60,0xFE60,0xFE20,0x92C0,0x61A0,0xAB60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xBC00,0xA320,0xF5E0,0xFE60,0xC460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x9CF3,0xAB60,0xB3C0,0xC460,0xE540,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xC460,0x61A0,0x7A60,0xF5E0,0xFE62,0xFE86,0xFE86,0xFE63,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xA320,0x92C0,0xF5E0,0xFE60,0xBC00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A49,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xE71B,0xD679,0xC617,0xC617,0xB596,0x9CF3,0xABC5,0xAB60,0xC460,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0x7A60,0x61A0,0xC460,0xFE62,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC460,0x92C0,0xA320,0xFE60,0xFE20,0x9324,0x18C2,0x2944,0x39C7,0x4A49,0x4A69,0x52AA,0x52AA,0x52AA,0x4A49,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xEF3C,0xDEDA,0xD679,0xC617,0xB596,0xB596,0x94B2,0xAB60,0xBC00,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xA320,0x61A0,0x92C0,0xFE20,0xFE63,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC460,0xAB60,0xD4E0,0xFE60,0xF5E0,0xABC5,0x9CF3,0xB596,0xB596,0xB596,0xC617,0xC617,0xC617,0xC617,0xB596,0x94B2,0x73AE,0x4A49,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xB596,0xABA4,0xB3C0,0xC460,0xE540,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0x69C0,0x69C0,0xD4E0,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xF5E0,0xFE60,0xFE60,0xD4E0,0xD679,0xEF5D,0xF79D,0xF79D,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF77D,0xDEDA,0xC617,0x9CF3,0x73AE,0x4A49,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0x9CF3,0xAB60,0xC460,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0x7A60,0x61A0,0xA320,0xFE60,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xCCC5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xD679,0xB596,0x94B2,0x630C,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9CF3,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xDEDA,0xD679,0xC617,0xB596,0xABA4,0xB3C0,0xC460,0xE540,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xBC00,0x61A0,0x69C0,0xE540,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0xD679,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xC617,0x9CF3,0x73AE,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8C30,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF5D,0xE71B,0xD679,0xD679,0xC617,0x9CF3,0xAB60,0xC460,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0x7A60,0x61A0,0xA320,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xD56B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0xB596,0x9CF3,0x73AE,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528A,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xE71B,0xD679,0xC617,0xB596,0xABC5,0xB3C0,0xC460,0xE540,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xB3C0,0x61A0,0x69C0,0xE540,0xFE60,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC484,0x9CF3,0x8C30,0x73AE,0x630C,0x4A49,0x4A69,0x630C,0x8C30,0xC617,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xD679,0xB596,0x94B2,0x630C,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x4A49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xDEDA,0xD679,0xC617,0xB596,0xAB60,0xBC00,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0x7A60,0x61A0,0x92C0,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0x4140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x39C7,0x9CF3,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0xC617,0x9CF3,0x8C30,0x4A49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xEF3C,0xDEDA,0xD679,0xC617,0xB469,0xAB60,0xC460,0xE540,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xBC00,0x61A0,0x61A0,0xD4E0,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xAB60,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x73AE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xC617,0xB596,0x94B2,0x73AE,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x630C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9CF3,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xE71B,0xDEDA,0xD679,0xC617,0xABA4,0xBC00,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0x7A60,0x61A0,0x7A60,0xFE20,0xFE60,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xEDA0,0x4140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xB596,0x94B2,0x73AE,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x73AE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xDEDA,0xD679,0xB596,0xAB60,0xC460,0xE540,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC460,0x69C0,0x61A0,0xC460,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xC460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xB596,0x9CF3,0x8C30,0x4A49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8C30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF77D,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xD679,0xC617,0xB469,0xB3C0,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xA320,0x61A0,0x7A60,0xF5E0,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0x7A60,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xB596,0x9CF3,0x8C30,0x528A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8C30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xEF3C,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xDEDA,0xD679,0xC617,0xABA4,0xC460,0xE540,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0x69C0,0x61A0,0xB3C0,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xEDA0,0x4140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x0000,0x0000,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xB596,0x9CF3,0x8C30,0x528A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8C30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73AE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xE71B,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xE71B,0xDEDA,0xD679,0xC50D,0xAB60,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xB3C0,0x61A0,0x69C0,0xE540,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xD4E0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x630C,0x73AE,0x18C2,0x1081,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xD679,0xB596,0x9CF3,0x8C30,0x528A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9CF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xDEDA,0xD679,0xE71B,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xD679,0xC617,0xABC5,0xBC00,0xE540,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xEDA0,0x7A60,0x61A0,0x92C0,0xFE20,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xCCC5,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x630C,0x9CF3,0x94B2,0x18C2,0x39C7,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xC617,0xB596,0x94B2,0x8C30,0x4A49,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x18C2,0x2944,0x39C7,0x39C7,0x39C7,0x39C7,0x39C7,0x39C7,0x39C7,0x2944,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9CF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xC617,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xD679,0xDEDA,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xDEDA,0xD679,0xB596,0xAB60,0xD4E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xBC00,0x61A0,0x61A0,0xC460,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xE60B,0x4A49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x8C30,0x9CF3,0x9CF3,0x630C,0x0000,0x8C30,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xC617,0xB596,0x94B2,0x73AE,0x39C7,0x0000,0x0000,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x2944,0x4A49,0x4A69,0x52AA,0x52AA,0x52AA,0x52AA,0x528A,0x4A69,0x4A49,0x39C7,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x94B2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xC617,0xC617,0xD679,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xE71B,0xD679,0xC617,0xABC5,0xC460,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0x7A60,0x61A0,0x7A60,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0xEF3C,0xC617,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A49,0x94B2,0x94B2,0x630C,0x0840,0x39C7,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xDEDA,0xC617,0x9CF3,0x94B2,0x73AE,0x2944,0x0000,0x18C2,0x4A49,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x39C7,0x4A69,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x528A,0x39C7,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8C30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xDEDA,0xB596,0xB596,0xD679,0xE71B,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xDEDA,0xD679,0xC50D,0xB3C0,0xE540,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC484,0x61A0,0x61A0,0xB3C0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xCCC5,0xFFFF,0xFFFF,0x8C30,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x39C7,0x2944,0x0840,0x4A49,0xDEDA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xB596,0x9CF3,0x8C30,0x630C,0x0840,0x0000,0x39C7,0x52AA,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x39C7,0x528A,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x4A49,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8C30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94B2,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xD679,0xB596,0xB596,0xC617,0xE71B,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF3C,0xDEDA,0xD679,0xC617,0xAB60,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0x92C0,0x61A0,0x69C0,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xD5B1,0xFFFF,0xFFFF,0xFFFF,0x94B2,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x8C30,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xC617,0xB596,0x94B2,0x73AE,0x39C7,0x0000,0x0840,0x630C,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x2944,0x4A49,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x4A49,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x73AE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xC617,0xB596,0xB596,0xC617,0xDEDA,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF5D,0xE71B,0xD679,0xC617,0xB469,0xBC00,0xE540,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0x69C0,0x69C0,0xC484,0xFE60,0xFE60,0xFE60,0xFE60,0xE540,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDEDA,0x8C30,0x39C7,0x2944,0x2944,0x39C7,0x630C,0xB596,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xB596,0x9CF3,0x8C30,0x52AA,0x0840,0x0000,0x39C7,0x8C30,0x4A49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x4A49,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x4A49,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x528A,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x630C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9CF3,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0xB596,0x9CF3,0x9CF3,0xB596,0xD679,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xE71B,0xD679,0xC617,0xB596,0xAB60,0xC460,0xEDA0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xC484,0x92C0,0xC460,0xFE60,0xFE60,0xFE60,0xFE20,0xCCC5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xD679,0xB596,0x9CF3,0x8C30,0x528A,0x0840,0x0000,0x18C2,0x630C,0x73AE,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x39C7,0x528A,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x4A69,0x39C7,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x4A49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xD679,0xB596,0x9CF3,0x9CF3,0xB596,0xD679,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xE71B,0xD679,0xC617,0xB596,0x94B2,0xB3C0,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xD4E0,0xE540,0xFE60,0xFE60,0xFE60,0xE540,0xB469,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xD679,0xB596,0x94B2,0x73AE,0x39C7,0x0840,0x0000,0x1081,0x52AA,0x8C30,0x528A,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x2944,0x4A49,0x52AA,0x630C,0x630C,0x630C,0x630C,0x528A,0x39C7,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x52AA,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9CF3,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xB596,0x9CF3,0x9CF3,0xB596,0xD679,0xE71B,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF3C,0xDEDA,0xD679,0xB596,0xB596,0x9CF3,0x8C30,0xB3C0,0xD4E0,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xA320,0x1081,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xD679,0xB596,0x94B2,0x630C,0x18C2,0x0000,0x0000,0x18C2,0x630C,0x8C30,0x630C,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x39C7,0x4A69,0x52AA,0x630C,0x52AA,0x4A69,0x39C7,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xC617,0x9CF3,0x9CF3,0x9CF3,0xB596,0xC617,0xE71B,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xE71B,0xD679,0xC617,0xB596,0x9CF3,0x94B2,0x8C30,0x73AE,0x9324,0xBC00,0xD4E0,0xEDA0,0xFE20,0xFE20,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xBC00,0x1081,0x0000,0x1081,0x8C30,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xDEDA,0xB596,0x9CF3,0x73AE,0x2944,0x0840,0x0000,0x0000,0x18C2,0x630C,0x8C30,0x630C,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x2944,0x39C7,0x4A49,0x4A49,0x4A49,0x39C7,0x2944,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9CF3,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xDEDA,0xC617,0x9CF3,0x9CF3,0x9CF3,0xB596,0xC617,0xDEDA,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xD679,0xC617,0xB596,0x9CF3,0x94B2,0x8C30,0x630C,0x39C7,0x1081,0x4140,0x7A60,0xAB60,0xBC00,0xD4E0,0xD4E0,0xE540,0xE540,0xD4E0,0xA320,0x18C2,0x0000,0x0000,0x0000,0x0000,0x39C7,0x94B2,0xD679,0xF77D,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xEF3C,0xD679,0xB596,0x94B2,0x630C,0x2944,0x0840,0x0000,0x0000,0x0000,0x2944,0x52AA,0x630C,0x4A49,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x2944,0x39C7,0x39C7,0x39C7,0x39C7,0x2944,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xD679,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xC617,0xDEDA,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xD679,0xB596,0x9CF3,0x8C30,0x630C,0x4A49,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x4140,0x69C0,0x69C0,0x4140,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x39C7,0x73AE,0x94B2,0x9CF3,0xB596,0xB596,0x9CF3,0x94B2,0x8C30,0x630C,0x39C7,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x39C7,0x39C7,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x2944,0x2944,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9CF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73AE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xD679,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xC617,0xD679,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xDEDA,0xC617,0x9CF3,0x73AE,0x4A69,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x73AE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xB596,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xDEDA,0xC617,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xD679,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xC617,0x9CF3,0x630C,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xD679,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0xB596,0x73AE,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xD679,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xD679,0xE71B,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xC617,0x8C30,0x39C7,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73AE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xDEDA,0xC617,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xD679,0xE71B,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xD679,0x9CF3,0x4A69,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9CF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8C30,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xD679,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xD679,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0x9CF3,0x630C,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A69,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73AE,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xDEDA,0xC617,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xD679,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xDEDA,0x9CF3,0x630C,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x18C2,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630C,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF79D,0xF77D,0xF77D,0xF77D,0xF77D,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xD679,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xC617,0xE71B,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xC617,0x8C30,0x4A49,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x2944,0x4A49,0x52AA,0x630C,0x4A69,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528A,0xC617,0xE71B,0xF79D,0xF7BE,0xFFFF,0xFFFF,0xF7BE,0xF7BE,0xF79D,0xF77D,0xEF5D,0xEF3C,0xEF3C,0xE71B,0xE71B,0xE71B,0xE71B,0xE71B,0xE71B,0xEF5D,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xD679,0xC617,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xC617,0xE71B,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xD679,0x94B2,0x52AA,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x52AA,0x630C,0x630C,0x630C,0x630C,0x630C,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9CF3,0x0840,0x0840,0x1081,0x18C2,0x18C2,0x2944,0x4140,0x4140,0x18C2,0x18C2,0x1081,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528A,0x9CF3,0xC617,0xD679,0xE71B,0xE71B,0xE71B,0xE71B,0xE71B,0xDEDA,0xDEDA,0xDEDA,0xD679,0xD679,0xD679,0xD679,0xD679,0xD679,0xD679,0xDEDA,0xEF3C,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xDEDA,0xC617,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xC617,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xD679,0x94B2,0x52AA,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x4A49,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x4A69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x52AA,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9324,0x7A60,0x7A60,0x92C0,0x92C0,0xA320,0xA320,0xA320,0xA320,0xA320,0xA320,0x92C0,0x92C0,0x7A60,0x7A60,0x61A0,0x4140,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A69,0x94B2,0xB596,0xB596,0xC617,0xD679,0xD679,0xD679,0xD679,0xC617,0xC617,0xC617,0xC617,0xC617,0xB596,0xB596,0xC617,0xC617,0xD679,0xDEDA,0xEF3C,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xC617,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xC617,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xD679,0x9CF3,0x52AA,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x52AA,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0xABA4,0x92C0,0xA320,0xA320,0xA320,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xA320,0xA320,0xA320,0x92C0,0x7A60,0x69C0,0x51C0,0x4140,0x1081,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A49,0x8C30,0x9CF3,0xB596,0xB596,0xB596,0xB596,0xB596,0xB596,0xB596,0xB596,0xB596,0xB596,0xB596,0xB596,0xB596,0xB596,0xB596,0xC617,0xD679,0xEF3C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0xD679,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xD679,0xEF5D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xDEDA,0x9CF3,0x630C,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x52AA,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xAB60,0x92C0,0xA320,0xA320,0xAB60,0xAB60,0xAB60,0xAB60,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xA320,0xA320,0xA320,0x7A60,0x7A60,0x69C0,0x4140,0x4140,0x18C2,0x1081,0x0840,0x0840,0x0000,0x0000,0x39C7,0x73AE,0x94B2,0x94B2,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xB596,0xC617,0xDEDA,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF3C,0xD679,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xD679,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xC617,0x73AE,0x39C7,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4A49,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB469,0x92C0,0xA320,0xA320,0xAB60,0xAB60,0xAB60,0xB3C0,0xB3C0,0xB3C0,0xBC00,0xBC00,0xBC00,0xBC00,0xBC00,0xBC00,0xC460,0xBC00,0xBC00,0xBC00,0xBC00,0xBC00,0xBC00,0xBC00,0xBC00,0xB3C0,0xB3C0,0xB3C0,0xAB60,0xAB60,0xAB60,0xAB60,0xA320,0xA320,0xA320,0xA320,0x92C0,0x7A60,0x7A60,0x69C0,0x69C0,0x51C0,0x6260,0x9324,0x73AE,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x8C30,0x94B2,0x9CF3,0x9CF3,0xB596,0xC617,0xE71B,0xEF3C,0xEF3C,0xEF3C,0xEF5D,0xF79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xD679,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xE71B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE71B,0x9CF3,0x528A,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x39C7,0x94B2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC25,0x92C0,0xA320,0xA320,0xAB60,0xAB60,0xB3C0,0xB3C0,0xBC00,0xBC00,0xBC00,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xBC00,0xBC00,0xBC00,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xA320,0xA320,0xA320,0xA320,0xA320,0xA320,0xA320,0xA320,0xA320,0xA320,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xAB60,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xBC00,0xBC00,0xC460,0xC484,0xE540,0xE60B,0xE60B,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xDEDA,0xB596,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xC617,0xEF5D,0xFFFF,0xFFFF,0xF7BE,0xD679,0x94B2,0x39C7,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0x92C0,0xA320,0xA320,0xAB60,0xAB60,0xB3C0,0xB3C0,0xBC00,0xBC00,0xC460,0xC460,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xC460,0xC460,0xC460,0xC460,0xC460,0xBC00,0xBC00,0xBC00,0xBC00,0xBC00,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xB3C0,0xBC00,0xBC00,0xBC00,0xBC00,0xBC00,0xC460,0xC460,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFF10,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xDEDA,0xC617,0x9CF3,0x9CF3,0x9CF3,0x9CF3,0xB596,0xDEDA,0xF7BE,0xFFFF,0xF7BE,0xD679,0x8C30,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x630C,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x2944,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xA320,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xBC00,0xC460,0xC460,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xEDA0,0xF5E0,0xFE20,0xFE20,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE63,0xFE62,0xFE20,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xDEDA,0xC617,0xB596,0x9CF3,0x9CF3,0xB596,0xC617,0xEF5D,0xFFFF,0xF7BE,0xD679,0x8C30,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x4A69,0x630C,0x630C,0x630C,0x630C,0x630C,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x39C7,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xC50D,0x92C0,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xBC00,0xC460,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xE540,0xE540,0xE540,0xEDA0,0xEDA0,0xEDA0,0xEDA0,0xEDA0,0xF5E0,0xF5E0,0xEDA0,0xEDA0,0xEDA0,0xEDA0,0xEDA0,0xE540,0xE540,0xE540,0xE540,0xE540,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xE540,0xE540,0xE540,0xEDA0,0xEDA0,0xF5E0,0xFE20,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE60,0xFF10,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xE71B,0xD679,0xC617,0xB596,0xB596,0xC617,0xE71B,0xF7BE,0xF7BE,0xDEDA,0x8C30,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x39C7,0x52AA,0x52AA,0x4A49,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x18C2,0x2944,0x2944,0x4A49,0x4A49,0x4A49,0x4A49,0x39C7,0x2944,0x18C2,0x18C2,0x1081,0x0840,0x0840,0x0840,0x1081,0x18C2,0x2944,0x39C7,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xA320,0xA320,0xAB60,0xB3C0,0xB3C0,0xBC00,0xC460,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xE540,0xE540,0xE540,0xEDA0,0xEDA0,0xF5E0,0xF5E0,0xFE20,0xFE20,0xFE20,0xFE20,0xFE20,0xFE20,0xFE20,0xFE20,0xFE20,0xF5E0,0xF5E0,0xF5E0,0xF5E0,0xEDA0,0xEDA0,0xEDA0,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xE540,0xEDA0,0xEDA0,0xF5E0,0xF5E0,0xFE20,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF5D,0xDEDA,0xD679,0xC617,0xC617,0xDEDA,0xF77D,0xF7BE,0xDEDA,0x94B2,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x52AA,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xE540,0xE540,0xE540,0xEDA0,0xF5E0,0xF5E0,0xFE20,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xFE20,0xFE20,0xF5E0,0xF5E0,0xF5E0,0xF5E0,0xEDA0,0xEDA0,0xEDA0,0xEDA0,0xEDA0,0xEDA0,0xF5E0,0xF5E0,0xF5E0,0xFE20,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xE71B,0xDEDA,0xDEDA,0xDEDA,0xEF5D,0xF7BE,0xDEDA,0x94B2,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x4A49,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0x92C0,0xA320,0xAB60,0xB3C0,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xEDA0,0xF5E0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xFE20,0xFE20,0xFE20,0xFE20,0xFE20,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xEF3C,0xEF3C,0xF77D,0xF79D,0xDEDA,0x94B2,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x4A49,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC25,0xA320,0xA320,0xAB60,0xB3C0,0xBC00,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF7BE,0xEF5D,0xC617,0x8C30,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x630C,0x9CF3,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABA4,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF79D,0xDEDA,0x9CF3,0x52AA,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x528A,0x9CF3,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE63,0xFE63,0xFE63,0xFE63,0xFE63,0xFE63,0xFE63,0xFE62,0xFE62,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xFE20,0xFE20,0xFE20,0xFE60,0xFE60,0xFE60,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xD679,0x9CF3,0x630C,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x39C7,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xEDA0,0xEDA0,0xEDA0,0xEDA0,0xEDA0,0xF5E0,0xFE20,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xC617,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF77D,0xDEDA,0xB596,0x8C30,0x39C7,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x39C7,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xEDA0,0xE540,0xE540,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xD4E0,0xE540,0xF5E0,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE60,0xFE20,0x39C7,0x8C30,0xD679,0xF77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xF77D,0xE71B,0xD679,0xB596,0x94B2,0x528A,0x39C7,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x4A49,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x528A,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xEDA0,0xE540,0xD4E0,0xD4E0,0xC460,0xC460,0xC460,0xBC00,0xBC00,0xC460,0xD4E0,0xE540,0xFE62,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xABA4,0x0000,0x0840,0x39C7,0x8C30,0x9CF3,0xB596,0xC617,0xC617,0xC617,0xC617,0xC617,0xD679,0xD679,0xD679,0xD679,0xD679,0xDEDA,0xDEDA,0xD679,0xD679,0xC617,0xC617,0xB596,0xB596,0x9CF3,0x8C30,0x52AA,0x4A49,0x39C7,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A49,0x4A49,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x528A,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9B0D,0xBA29,0xB24A,0x8B90,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xBC00,0xC460,0xD4E0,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xEDA0,0xE540,0xD4E0,0xD4E0,0xC460,0xBC00,0xBC00,0xB3C0,0xAB60,0xA320,0xA320,0xA320,0xAB60,0xC460,0xEDA0,0xFE60,0xFE60,0xFE60,0xF5E0,0x2944,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x18C2,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0840,0x0840,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x39C7,0x4A69,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD166,0xF800,0xD904,0xE8A3,0xF800,0xE0E4,0x8B90,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xEDA0,0xE540,0xD4E0,0xC460,0xC460,0xBC00,0xB3C0,0xAB60,0xA320,0x7A60,0x18C2,0x0840,0x0840,0x1081,0x18C2,0x4140,0x51C0,0x6260,0x6260,0x2944,0x0000,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x18C2,0x2944,0x2944,0x18C2,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x4A49,0x4A49,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x9CF3,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAAAC,0xF061,0x8B90,0x7453,0x7453,0x8BB0,0xD145,0xF800,0xA2CC,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xEDA0,0xE540,0xD4E0,0xC460,0xC460,0xBC00,0xB3C0,0xAB60,0xA320,0x51C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x2944,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x18C2,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x4A49,0x4A49,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0xA2CC,0xF800,0x936F,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xEDA0,0xE540,0xD4E0,0xD4E0,0xC460,0xBC00,0xB3C0,0xAB60,0xA320,0x69C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x39C7,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x18C2,0x0000,0x0000,0x0000,0x0000,0x18C2,0x4A49,0x4A69,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9B0D,0xF061,0x83F1,0x7453,0x7453,0x7453,0x7453,0x7453,0xC987,0xD145,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xF5E0,0xF5E0,0xFE60,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xE540,0xE540,0xD4E0,0xC460,0xBC00,0xB3C0,0xAB60,0xA320,0x7A60,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x4A49,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x1081,0x0000,0x0000,0x0000,0x18C2,0x39C7,0x4A49,0x39C7,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x94B2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xE8A3,0xD166,0x7453,0x7453,0x7453,0x7453,0x83F1,0xD145,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABC5,0xA320,0xAB60,0xB3C0,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xE540,0xD4E0,0xC460,0xC460,0xBC00,0xAB60,0xA320,0x92C0,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x52AA,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x18C2,0x0840,0x0000,0x0000,0x18C2,0x39C7,0x39C7,0x39C7,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8B90,0xD145,0x7453,0x7453,0x7453,0x7453,0xB24A,0xF800,0xE882,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB469,0xA320,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xE540,0xF5E0,0xF5E0,0xFE60,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xEDA0,0xE540,0xD4E0,0xC460,0xBC00,0xB3C0,0xAB60,0xA320,0x4140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x52AA,0x4A69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x2944,0x2944,0x2944,0x2944,0x18C2,0x1081,0x0000,0x0000,0x1081,0x2944,0x39C7,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x94B2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0x92C0,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xE540,0xE540,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xE540,0xD4E0,0xD4E0,0xC460,0xBC00,0xB3C0,0xAB60,0x92C0,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x630C,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x18C2,0x18C2,0x18C2,0x1081,0x0000,0x0000,0x1081,0x18C2,0x2944,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8B90,0xF061,0xBA29,0x8B90,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x92C0,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xE540,0xD4E0,0xD4E0,0xC460,0xBC00,0xAB60,0xA320,0x69C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x630C,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0840,0x0000,0x0000,0x0840,0x1081,0x18C2,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAAAC,0xE882,0xF800,0xD166,0x83F1,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABA4,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xE540,0xD4E0,0xC460,0xC460,0xB3C0,0xAB60,0xA320,0x4140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x630C,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x0840,0x0840,0x1081,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x83F1,0xD145,0xF800,0xF061,0xBA29,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0x92C0,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xE540,0xD4E0,0xC460,0xC460,0xB3C0,0xAB60,0x92C0,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x630C,0x39C7,0x2944,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x18C2,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x528A,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAAAC,0xF820,0xBA29,0xF061,0xE882,0x936F,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xE540,0xD4E0,0xC460,0xC460,0xB3C0,0xAB60,0x92C0,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x528A,0x39C7,0x39C7,0x630C,0x52AA,0x39C7,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x39C7,0x39C7,0x2944,0x2944,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8B90,0xF800,0x83F1,0x9B2E,0xE882,0xF800,0xA2CC,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0x92C0,0xAB60,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xE540,0xEDA0,0xF5E0,0xFE20,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xE540,0xD4E0,0xC460,0xC460,0xB3C0,0xAB60,0x92C0,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x1081,0x0840,0x2944,0x4A49,0x630C,0x630C,0x528A,0x39C7,0x18C2,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x2944,0x4A49,0x4A49,0x4A49,0x39C7,0x2944,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8BB0,0xB24A,0xC987,0xF800,0xF800,0xF800,0xE882,0xD145,0x9B0D,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABC5,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xD4E0,0xE540,0xF5E0,0xFE20,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xE540,0xD4E0,0xC460,0xC460,0xB3C0,0xAB60,0x92C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x39C7,0x528A,0x630C,0x630C,0x52AA,0x4A49,0x39C7,0x2944,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0840,0x0840,0x0840,0x1081,0x18C2,0x2944,0x39C7,0x4A49,0x4A69,0x4A69,0x4A69,0x4A49,0x2944,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8B90,0xF800,0xE882,0xC987,0xB24A,0x9B2E,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xEDA0,0xD4E0,0xD4E0,0xC460,0xB3C0,0xAB60,0x92C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x2944,0x39C7,0x4A49,0x4A49,0x4A49,0x39C7,0x2944,0x2944,0x18C2,0x0840,0x0840,0x1081,0x18C2,0x18C2,0x2944,0x2944,0x39C7,0x39C7,0x4A49,0x4A49,0x4A69,0x4A69,0x4A69,0x4A49,0x4A49,0x4A49,0x2944,0x18C2,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8B90,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xA320,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xD4E0,0xEDA0,0xF5E0,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xE540,0xD4E0,0xC460,0xBC00,0xAB60,0x92C0,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x18C2,0x18C2,0x18C2,0x18C2,0x0840,0x0840,0x1081,0x18C2,0x18C2,0x2944,0x2944,0x39C7,0x39C7,0x39C7,0x39C7,0x39C7,0x39C7,0x39C7,0x39C7,0x2944,0x18C2,0x1081,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9B0D,0xBA29,0xB24A,0x8B90,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xA320,0xAB60,0xAB60,0xBC00,0xC460,0xC460,0xD4E0,0xE540,0xF5E0,0xFE20,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xE540,0xD4E0,0xC460,0xBC00,0xAB60,0xA320,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x4A49,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x1081,0x1081,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x18C2,0x1081,0x0840,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD166,0xF800,0xD904,0xE8A3,0xF800,0xE0E4,0x8B90,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xC50D,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xE540,0xEDA0,0xFE20,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xEDA0,0xD4E0,0xC460,0xBC00,0xB3C0,0xA320,0x4140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x4A69,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAAAC,0xF061,0x8B90,0x7453,0x7453,0x8BB0,0xD145,0xF800,0xA2CC,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xC50D,0xA320,0xAB60,0xB3C0,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xE540,0xD4E0,0xC460,0xB3C0,0xAB60,0x7A60,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x4A69,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0xA2CC,0xF800,0x936F,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xC484,0xA320,0xAB60,0xBC00,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xD4E0,0xC460,0xBC00,0xB3C0,0xA320,0x4140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x39C7,0x4A69,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9B0D,0xF061,0x83F1,0x7453,0x7453,0x7453,0x7453,0x7453,0xC987,0xD145,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB469,0xA320,0xB3C0,0xBC00,0xC460,0xD4E0,0xEDA0,0xFE20,0xFE60,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xE540,0xD4E0,0xC460,0xBC00,0xAB60,0x92C0,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x4A49,0x4A49,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x630C,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xE8A3,0xD166,0x7453,0x7453,0x7453,0x7453,0x83F1,0xD145,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABC5,0xAB60,0xB3C0,0xC460,0xD4E0,0xE540,0xF5E0,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xE540,0xD4E0,0xC460,0xBC00,0xAB60,0x69C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x4A69,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8B90,0xD145,0x7453,0x7453,0x7453,0x7453,0xB24A,0xF800,0xE882,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAB60,0xAB60,0xBC00,0xC460,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE60,0xFE60,0xFE20,0xF5E0,0xE540,0xD4E0,0xC460,0xBC00,0xA320,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39C7,0x4A69,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xA320,0xB3C0,0xC460,0xD4E0,0xE540,0xFE20,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE60,0xFE60,0xFE60,0xF5E0,0xE540,0xD4E0,0xC460,0xB3C0,0x92C0,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A49,0x4A49,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A69,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB24A,0xF800,0xF800,0xF800,0xF800,0xF800,0xF800,0xF800,0xF800,0xF061,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xAB60,0xB3C0,0xC460,0xD4E0,0xF5E0,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE60,0xFE60,0xFE60,0xFE20,0xEDA0,0xE540,0xC460,0xB3C0,0x7A60,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x52AA,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x83F1,0x9B2E,0x9B2E,0xF061,0xD166,0x9B2E,0x9B2E,0x9B2E,0x9B2E,0x8B90,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB469,0xAB60,0xBC00,0xD4E0,0xE540,0xFE20,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xE540,0xD4E0,0xBC00,0x7A60,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x630C,0x630C,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x94B2,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8BB0,0xE8A3,0xF800,0xA2CC,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xABA4,0xB3C0,0xC460,0xD4E0,0xF5E0,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xF5E0,0xE540,0xC460,0x7A60,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x1081,0x1081,0x1081,0x18C2,0x2944,0x4A49,0x94B2,0x4A49,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x936F,0xF061,0xD145,0x9B2E,0xF061,0xA2CC,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAB60,0xBC00,0xD4E0,0xEDA0,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE60,0xFE60,0xFE20,0xD4E0,0x92C0,0x1081,0x0000,0x0000,0x0000,0x1081,0x18C2,0x2944,0x39C7,0x4A49,0x52AA,0x8C30,0x73AE,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAAAC,0xF061,0xB26B,0x7453,0x7453,0x9B0D,0xE8A3,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCD2D,0xAB60,0xC460,0xD4E0,0xF5E0,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE60,0xFE60,0xFE20,0xD4E0,0x51C0,0x0840,0x0000,0x0840,0x18C2,0x2944,0x39C7,0x4A49,0x73AE,0x73AE,0x39C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x83F1,0x8BB0,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC25,0xB3C0,0xD4E0,0xEDA0,0xFE60,0xFE62,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xFE20,0xB3C0,0x18C2,0x0000,0x1081,0x18C2,0x2944,0x39C7,0x39C7,0x2944,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18C2,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9B0D,0xD145,0xD904,0xC987,0x9B0D,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAB60,0xBC00,0xD4E0,0xFE20,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE20,0x92C0,0x0840,0x0840,0x1081,0x18C2,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2944,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xF800,0xC987,0xBA29,0xD145,0xF800,0xE8A3,0x8BB0,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xAB60,0xC460,0xEDA0,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE62,0xFE60,0xD4E0,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8BB0,0xF800,0x9B0D,0x7453,0x7453,0x7453,0x8BB0,0xE0E4,0xE882,0x83F1,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB469,0xBC00,0xD4E0,0xFE20,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0x6260,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB24A,0xE8A3,0x7453,0x7453,0x7453,0x7453,0x7453,0x83F1,0xE882,0xBA29,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAB60,0xC460,0xEDA0,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE60,0x9324,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x528A,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB3C0,0xD4E0,0xFE20,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE60,0xE60B,0x73AE,0x18C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x4A49,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9B0D,0xF061,0x83F1,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB469,0xC460,0xF5E0,0xFE60,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE60,0x7453,0x7453,0x7453,0x9CF3,0x39C7,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x52AA,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xE8A3,0xE8A3,0x8BB0,0x7453,0x7453,0x7453,0x7453,0xE8A3,0xC1E8,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB3C0,0xD4E0,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE60,0xFEC9,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8C30,0x39C7,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18C2,0x4A69,0x8C30,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x83F1,0xE0E4,0xF800,0xD145,0xBA29,0xBA29,0xE8A3,0xF061,0x8BB0,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xC460,0xF5E0,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFE60,0xFE60,0xFE62,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE62,0xFE60,0xFE62,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9CF3,0x630C,0x39C7,0x0840,0x0840,0x0840,0x0840,0x0840,0x0840,0x0840,0x0840,0x0840,0x1081,0x2944,0x4A49,0x73AE,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x936F,0xC1E8,0xD904,0xD904,0xC1E8,0x8BB0,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC25,0xD4E0,0xFE60,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE60,0xFE60,0xFE60,0xFE62,0xFE62,0xFE62,0xFE60,0xFE60,0xFE60,0xFE60,0xFE60,0xFE62,0xFE20,0xFF10,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x83F1,0x8B90,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC00,0xFE20,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE60,0xFE60,0xFE88,0xFF10,0x7453,0x7453,0x7453,0xFF10,0xFF10,0xFF10,0xFF10,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xF800,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCCC5,0xE540,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xFEC9,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x83F1,0x8B90,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBC00,0xFE20,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0xF66B,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD5B1,0xE540,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE60,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB24A,0xF800,0xF800,0xF800,0xF800,0xF061,0xD904,0xD904,0xD904,0xAAAC,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xC460,0xFE60,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE20,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xE8A3,0x9B2E,0x9B2E,0xE8A3,0xD904,0xBA29,0xBA29,0xD904,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xE540,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE20,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xAAAC,0xE882,0x7453,0x7453,0xD904,0xBA29,0x7453,0x7453,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xCCC5,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE20,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8B90,0xF800,0x8BB0,0x83F1,0xF061,0xE882,0x83F1,0x7453,0xE882,0xBA29,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xEDA0,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE20,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xE8A3,0xE8A3,0xC1C8,0xE0E4,0xF061,0xE882,0xE882,0xE882,0x83F1,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD56B,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE60,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8B90,0xE882,0xE882,0x8BB0,0x83F1,0xB24A,0xB24A,0x83F1,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xEDA0,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xE60B,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFF10,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x8BB0,0xD904,0xD904,0xD904,0xD904,0xD904,0xD145,0x7453,0x9B0D,0xBA29,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xEDA0,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFE88,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x83F1,0xBA29,0xBA29,0xBA29,0xBA29,0xBA29,0xB24A,0x7453,0x8B90,0x9B0D,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xFF10,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFEC9,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xFE88,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x9B0D,0xC987,0x83F1,0x7453,0x7453,0x7453,0x7453,0x7453,0x8B90,0x9B0D,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE63,0xFF10,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xF800,0xF061,0x9B0D,0x7453,0x7453,0x7453,0x7453,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xF66B,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xD904,0xC1C8,0xF800,0xD145,0x83F1,0x7453,0x7453,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xFEA8,0xFE63,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xD904,0x7453,0x9B0D,0xF061,0xF061,0x936F,0x7453,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xFEC9,0xFE62,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE86,0xFE62,0xFE88,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xD904,0x7453,0x7453,0x8BB0,0xE0E4,0xF800,0xA2CC,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xFE88,0xFE62,0xFE62,0xFE63,0xFE86,0xFE86,0xFE63,0xFE62,0xFEA8,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0xBA29,0xF800,0xC1C8,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xFF10,0xFE20,0xFE60,0xFE60,0xFEA8,0xFF10,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xBA29,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0xA2CC,0xF800,0xD904,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xB24A,0xD145,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0xD166,0xC987,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,0x7453,
-+
-+};
-diff -Nur linux/drivers/video/font_4x6.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/font_4x6.c
---- linux/drivers/video/font_4x6.c 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/font_4x6.c 2003-06-23 01:47:03.000000000 +0700
-@@ -0,0 +1,1059 @@
-+/* Font file generated by Jay Carlson from clR4x6.bdf */
-+
-+/*
-+COMMENT Copyright 1989 Dale Schumacher, dal@syntel.mn.org
-+COMMENT 399 Beacon Ave.
-+COMMENT St. Paul, MN 55104-3527
-+COMMENT
-+COMMENT Permission to use, copy, modify, and distribute this software and
-+COMMENT its documentation for any purpose and without fee is hereby
-+COMMENT granted, provided that the above copyright notice appear in all
-+COMMENT copies and that both that copyright notice and this permission
-+COMMENT notice appear in supporting documentation, and that the name of
-+COMMENT Dale Schumacher not be used in advertising or publicity pertaining to
-+COMMENT distribution of the software without specific, written prior
-+COMMENT permission. Dale Schumacher makes no representations about the
-+COMMENT suitability of this software for any purpose. It is provided "as
-+COMMENT is" without express or implied warranty.
-+*/
-+
-+#include <video/font.h>
-+
-+#define FONTDATAMAX (6 * 256)
-+
-+static unsigned char fontdata_4x6[FONTDATAMAX] = {
-+
-+ /* 0 0x00 C000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0xf0, /* 11110000 */
-+
-+ /* 1 0x01 C001 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 2 0x02 C002 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 3 0x03 C003 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 4 0x04 C004 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 5 0x05 C005 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 6 0x06 C006 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 7 0x07 C007 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 8 0x08 C010 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 9 0x09 C011 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 10 0x0a C012 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 11 0x0b C013 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 12 0x0c C014 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 13 0x0d C015 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 14 0x0e C016 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 15 0x0f C017 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 16 0x10 C020 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 17 0x11 C021 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 18 0x12 C022 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 19 0x13 C023 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 20 0x14 C024 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 21 0x15 C025 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 22 0x16 C026 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 23 0x17 C027 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 24 0x18 C030 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 25 0x19 C031 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 26 0x1a C032 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 27 0x1b C033 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 28 0x1c C034 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 29 0x1d C035 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 30 0x1e C036 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 31 0x1f C037 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 32 0x20 C040 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 33 0x21 ! */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 34 0x22 " */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 35 0x23 # */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 36 0x24 $ */
-+ 0xe0, /* 11100000 */
-+ 0xc0, /* 11000000 */
-+ 0xe0, /* 11100000 */
-+ 0x60, /* 01100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 37 0x25 % */
-+ 0xa0, /* 10100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x80, /* 10000000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 38 0x26 & */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 39 0x27 ' */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 40 0x28 ( */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 41 0x29 ) */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 42 0x2a * */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 43 0x2b + */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 44 0x2c , */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 45 0x2d - */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 46 0x2e . */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 47 0x2f / */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 48 0x30 0 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 49 0x31 1 */
-+ 0x40, /* 01000000 */
-+ 0xc0, /* 11000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 50 0x32 2 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 51 0x33 3 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 52 0x34 4 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 53 0x35 5 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 54 0x36 6 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 55 0x37 7 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 56 0x38 8 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 57 0x39 9 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 58 0x3a : */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 59 0x3b ; */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 60 0x3c < */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x80, /* 10000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 61 0x3d = */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 62 0x3e > */
-+ 0x80, /* 10000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 63 0x3f ? */
-+ 0xc0, /* 11000000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 64 0x40 @ */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 65 0x41 A */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 66 0x42 B */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 67 0x43 C */
-+ 0x60, /* 01100000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 68 0x44 D */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 69 0x45 E */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xc0, /* 11000000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 70 0x46 F */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0xc0, /* 11000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 71 0x47 G */
-+ 0x60, /* 01100000 */
-+ 0x80, /* 10000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 72 0x48 H */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 73 0x49 I */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 74 0x4a J */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 75 0x4b K */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 76 0x4c L */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 77 0x4d M */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 78 0x4e N */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 79 0x4f O */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 80 0x50 P */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 81 0x51 Q */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 82 0x52 R */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 83 0x53 S */
-+ 0x60, /* 01100000 */
-+ 0x80, /* 10000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 84 0x54 T */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 85 0x55 U */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 86 0x56 V */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 87 0x57 W */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 88 0x58 X */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 89 0x59 Y */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 90 0x5a Z */
-+ 0xe0, /* 11100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x80, /* 10000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 91 0x5b [ */
-+ 0x60, /* 01100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 92 0x5c \ */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 93 0x5d ] */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 94 0x5e ^ */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 95 0x5f _ */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 96 0x60 ` */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 97 0x61 a */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 98 0x62 b */
-+ 0x80, /* 10000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 99 0x63 c */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 100 0x64 d */
-+ 0x20, /* 00100000 */
-+ 0x60, /* 01100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 101 0x65 e */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 102 0x66 f */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 103 0x67 g */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0xc0, /* 11000000 */
-+
-+ /* 104 0x68 h */
-+ 0x80, /* 10000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 105 0x69 i */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 106 0x6a j */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+
-+ /* 107 0x6b k */
-+ 0x80, /* 10000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 108 0x6c l */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 109 0x6d m */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 110 0x6e n */
-+ 0x00, /* 00000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 111 0x6f o */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 112 0x70 p */
-+ 0x00, /* 00000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0xc0, /* 11000000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+
-+ /* 113 0x71 q */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+
-+ /* 114 0x72 r */
-+ 0x00, /* 00000000 */
-+ 0xc0, /* 11000000 */
-+ 0xa0, /* 10100000 */
-+ 0x80, /* 10000000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 115 0x73 s */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0xc0, /* 11000000 */
-+ 0x60, /* 01100000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 116 0x74 t */
-+ 0x40, /* 01000000 */
-+ 0xe0, /* 11100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 117 0x75 u */
-+ 0x00, /* 00000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 118 0x76 v */
-+ 0x00, /* 00000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 119 0x77 w */
-+ 0x00, /* 00000000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 120 0x78 x */
-+ 0x00, /* 00000000 */
-+ 0xa0, /* 10100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 121 0x79 y */
-+ 0x00, /* 00000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0xc0, /* 11000000 */
-+
-+ /* 122 0x7a z */
-+ 0x00, /* 00000000 */
-+ 0xe0, /* 11100000 */
-+ 0x60, /* 01100000 */
-+ 0xc0, /* 11000000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 123 0x7b { */
-+ 0x60, /* 01100000 */
-+ 0x40, /* 01000000 */
-+ 0xc0, /* 11000000 */
-+ 0x40, /* 01000000 */
-+ 0x60, /* 01100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 124 0x7c | */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 125 0x7d } */
-+ 0xc0, /* 11000000 */
-+ 0x40, /* 01000000 */
-+ 0x60, /* 01100000 */
-+ 0x40, /* 01000000 */
-+ 0xc0, /* 11000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 126 0x7e ~ */
-+ 0x20, /* 00100000 */
-+ 0xe0, /* 11100000 */
-+ 0x80, /* 10000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 127 0x7f C177 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0xa0, /* 10100000 */
-+ 0xa0, /* 10100000 */
-+ 0xe0, /* 11100000 */
-+ 0x00, /* 00000000 */
-+
-+};
-+
-+struct fbcon_font_desc font_clean_4x6 = {
-+ CLEAN4x6_IDX,
-+ "Clean4x6",
-+ 4,
-+ 6,
-+ fontdata_4x6,
-+ -1000 /* Try avoiding this font if possible unless screen really small */
-+};
-diff -Nur linux/drivers/video/font_5x8.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/font_5x8.c
---- linux/drivers/video/font_5x8.c 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/font_5x8.c 2003-06-23 01:47:03.000000000 +0700
-@@ -0,0 +1,1314 @@
-+/* Font file generated by Jay Carlson from clR5x8.bdf */
-+
-+/*
-+COMMENT Copyright 1989 Dale Schumacher, dal@syntel.mn.org
-+COMMENT 399 Beacon Ave.
-+COMMENT St. Paul, MN 55104-3527
-+COMMENT
-+COMMENT Permission to use, copy, modify, and distribute this software and
-+COMMENT its documentation for any purpose and without fee is hereby
-+COMMENT granted, provided that the above copyright notice appear in all
-+COMMENT copies and that both that copyright notice and this permission
-+COMMENT notice appear in supporting documentation, and that the name of
-+COMMENT Dale Schumacher not be used in advertising or publicity pertaining to
-+COMMENT distribution of the software without specific, written prior
-+COMMENT permission. Dale Schumacher makes no representations about the
-+COMMENT suitability of this software for any purpose. It is provided "as
-+COMMENT is" without express or implied warranty.
-+*/
-+
-+#include <video/font.h>
-+
-+#define FONTDATAMAX (8 * 256)
-+
-+static unsigned char fontdata_5x8[FONTDATAMAX] = {
-+
-+ /* 0 0x00 C000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 1 0x01 C001 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 2 0x02 C002 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 3 0x03 C003 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 4 0x04 C004 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 5 0x05 C005 */
-+ 0x00, /* 00000000 */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 6 0x06 C006 */
-+ 0x00, /* 00000000 */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 7 0x07 C007 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x40, /* 01000000 */
-+ 0x58, /* 01011000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 8 0x08 C010 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 9 0x09 C011 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 10 0x0a C012 */
-+ 0x00, /* 00000000 */
-+ 0x18, /* 00011000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 11 0x0b C013 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x50, /* 01010000 */
-+ 0x60, /* 01100000 */
-+ 0x50, /* 01010000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 12 0x0c C014 */
-+ 0x00, /* 00000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 13 0x0d C015 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 14 0x0e C016 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x68, /* 01101000 */
-+ 0x58, /* 01011000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 15 0x0f C017 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 16 0x10 C020 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 17 0x11 C021 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x18, /* 00011000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 18 0x12 C022 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x50, /* 01010000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 19 0x13 C023 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x40, /* 01000000 */
-+ 0x30, /* 00110000 */
-+ 0x08, /* 00001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 20 0x14 C024 */
-+ 0x00, /* 00000000 */
-+ 0xf8, /* 11111000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 21 0x15 C025 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 22 0x16 C026 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 23 0x17 C027 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 24 0x18 C030 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 25 0x19 C031 */
-+ 0x00, /* 00000000 */
-+ 0x88, /* 10001000 */
-+ 0x50, /* 01010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 26 0x1a C032 */
-+ 0x00, /* 00000000 */
-+ 0x78, /* 01111000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 27 0x1b C033 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 28 0x1c C034 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 29 0x1d C035 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 30 0x1e C036 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 31 0x1f C037 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 32 0x20 C040 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 33 0x21 ! */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 34 0x22 " */
-+ 0x28, /* 00101000 */
-+ 0x28, /* 00101000 */
-+ 0x28, /* 00101000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 35 0x23 # */
-+ 0x50, /* 01010000 */
-+ 0x50, /* 01010000 */
-+ 0xf8, /* 11111000 */
-+ 0x50, /* 01010000 */
-+ 0xf8, /* 11111000 */
-+ 0x50, /* 01010000 */
-+ 0x50, /* 01010000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 36 0x24 $ */
-+ 0x20, /* 00100000 */
-+ 0x78, /* 01111000 */
-+ 0xa0, /* 10100000 */
-+ 0x70, /* 01110000 */
-+ 0x28, /* 00101000 */
-+ 0xf0, /* 11110000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 37 0x25 % */
-+ 0x60, /* 01100000 */
-+ 0x68, /* 01101000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x58, /* 01011000 */
-+ 0x18, /* 00011000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 38 0x26 & */
-+ 0x30, /* 00110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x28, /* 00101000 */
-+ 0x50, /* 01010000 */
-+ 0x50, /* 01010000 */
-+ 0x28, /* 00101000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 39 0x27 ' */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 40 0x28 ( */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x08, /* 00001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 41 0x29 ) */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 42 0x2a * */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x78, /* 01111000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 43 0x2b + */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0xf8, /* 11111000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 44 0x2c , */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+
-+ /* 45 0x2d - */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xf8, /* 11111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 46 0x2e . */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 47 0x2f / */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+
-+ /* 48 0x30 0 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x58, /* 01011000 */
-+ 0x68, /* 01101000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 49 0x31 1 */
-+ 0x20, /* 00100000 */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 50 0x32 2 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 51 0x33 3 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x08, /* 00001000 */
-+ 0x30, /* 00110000 */
-+ 0x08, /* 00001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 52 0x34 4 */
-+ 0x08, /* 00001000 */
-+ 0x18, /* 00011000 */
-+ 0x18, /* 00011000 */
-+ 0x28, /* 00101000 */
-+ 0x28, /* 00101000 */
-+ 0x78, /* 01111000 */
-+ 0x08, /* 00001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 53 0x35 5 */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 54 0x36 6 */
-+ 0x30, /* 00110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 55 0x37 7 */
-+ 0x78, /* 01111000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 56 0x38 8 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 57 0x39 9 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 58 0x3a : */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 59 0x3b ; */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+
-+ /* 60 0x3c < */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x08, /* 00001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 61 0x3d = */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xf8, /* 11111000 */
-+ 0x00, /* 00000000 */
-+ 0xf8, /* 11111000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 62 0x3e > */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 63 0x3f ? */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 64 0x40 @ */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x58, /* 01011000 */
-+ 0x58, /* 01011000 */
-+ 0x40, /* 01000000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 65 0x41 A */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 66 0x42 B */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 67 0x43 C */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 68 0x44 D */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 69 0x45 E */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 70 0x46 F */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 71 0x47 G */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x40, /* 01000000 */
-+ 0x58, /* 01011000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 72 0x48 H */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 73 0x49 I */
-+ 0x70, /* 01110000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 74 0x4a J */
-+ 0x18, /* 00011000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 75 0x4b K */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x50, /* 01010000 */
-+ 0x60, /* 01100000 */
-+ 0x50, /* 01010000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 76 0x4c L */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 77 0x4d M */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 78 0x4e N */
-+ 0x48, /* 01001000 */
-+ 0x68, /* 01101000 */
-+ 0x68, /* 01101000 */
-+ 0x58, /* 01011000 */
-+ 0x58, /* 01011000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 79 0x4f O */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 80 0x50 P */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 81 0x51 Q */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x18, /* 00011000 */
-+
-+ /* 82 0x52 R */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x50, /* 01010000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 83 0x53 S */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x40, /* 01000000 */
-+ 0x30, /* 00110000 */
-+ 0x08, /* 00001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 84 0x54 T */
-+ 0xf8, /* 11111000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 85 0x55 U */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 86 0x56 V */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x30, /* 00110000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 87 0x57 W */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x78, /* 01111000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 88 0x58 X */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 89 0x59 Y */
-+ 0x88, /* 10001000 */
-+ 0x88, /* 10001000 */
-+ 0x50, /* 01010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 90 0x5a Z */
-+ 0x78, /* 01111000 */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 91 0x5b [ */
-+ 0x38, /* 00111000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 92 0x5c \ */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+
-+ /* 93 0x5d ] */
-+ 0x70, /* 01110000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 94 0x5e ^ */
-+ 0x20, /* 00100000 */
-+ 0x50, /* 01010000 */
-+ 0x88, /* 10001000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 95 0x5f _ */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xf8, /* 11111000 */
-+
-+ /* 96 0x60 ` */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 97 0x61 a */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x58, /* 01011000 */
-+ 0x28, /* 00101000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 98 0x62 b */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 99 0x63 c */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 100 0x64 d */
-+ 0x08, /* 00001000 */
-+ 0x08, /* 00001000 */
-+ 0x38, /* 00111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 101 0x65 e */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x78, /* 01111000 */
-+ 0x40, /* 01000000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 102 0x66 f */
-+ 0x18, /* 00011000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x70, /* 01110000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 103 0x67 g */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x08, /* 00001000 */
-+ 0x30, /* 00110000 */
-+
-+ /* 104 0x68 h */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 105 0x69 i */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 106 0x6a j */
-+ 0x10, /* 00010000 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x60, /* 01100000 */
-+
-+ /* 107 0x6b k */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x48, /* 01001000 */
-+ 0x50, /* 01010000 */
-+ 0x60, /* 01100000 */
-+ 0x50, /* 01010000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 108 0x6c l */
-+ 0x60, /* 01100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 109 0x6d m */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0xd0, /* 11010000 */
-+ 0xa8, /* 10101000 */
-+ 0xa8, /* 10101000 */
-+ 0xa8, /* 10101000 */
-+ 0x88, /* 10001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 110 0x6e n */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 111 0x6f o */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 112 0x70 p */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x70, /* 01110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x70, /* 01110000 */
-+ 0x40, /* 01000000 */
-+
-+ /* 113 0x71 q */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x08, /* 00001000 */
-+
-+ /* 114 0x72 r */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x58, /* 01011000 */
-+ 0x60, /* 01100000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 115 0x73 s */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x38, /* 00111000 */
-+ 0x40, /* 01000000 */
-+ 0x30, /* 00110000 */
-+ 0x08, /* 00001000 */
-+ 0x70, /* 01110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 116 0x74 t */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x78, /* 01111000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x18, /* 00011000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 117 0x75 u */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 118 0x76 v */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x30, /* 00110000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 119 0x77 w */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x88, /* 10001000 */
-+ 0xa8, /* 10101000 */
-+ 0xa8, /* 10101000 */
-+ 0xa8, /* 10101000 */
-+ 0x50, /* 01010000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 120 0x78 x */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x30, /* 00110000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 121 0x79 y */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x48, /* 01001000 */
-+ 0x38, /* 00111000 */
-+ 0x08, /* 00001000 */
-+ 0x30, /* 00110000 */
-+
-+ /* 122 0x7a z */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x78, /* 01111000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x78, /* 01111000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 123 0x7b { */
-+ 0x08, /* 00001000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x10, /* 00010000 */
-+ 0x08, /* 00001000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 124 0x7c | */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 125 0x7d } */
-+ 0x40, /* 01000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x10, /* 00010000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x40, /* 01000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 126 0x7e ~ */
-+ 0x28, /* 00101000 */
-+ 0x50, /* 01010000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+ 0x00, /* 00000000 */
-+
-+ /* 127 0x7f C177 */
-+ 0x00, /* 00000000 */
-+ 0x20, /* 00100000 */
-+ 0x20, /* 00100000 */
-+ 0x50, /* 01010000 */
-+ 0x50, /* 01010000 */
-+ 0x88, /* 10001000 */
-+ 0xf8, /* 11111000 */
-+ 0x00, /* 00000000 */
-+};
-+
-+struct fbcon_font_desc font_clean_5x8 = {
-+ CLEAN5x8_IDX,
-+ "Clean5x8",
-+ 5,
-+ 8,
-+ fontdata_5x8,
-+ -1000 /* Try avoiding this font if possible unless screen really small */
-+};
-diff -Nur linux/drivers/video/fonts.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/fonts.c
---- linux/drivers/video/fonts.c 2003-05-13 16:19:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/fonts.c 2003-06-23 01:47:03.000000000 +0700
-@@ -56,6 +56,16 @@
- #undef NO_FONTS
- &font_pearl_8x8,
- #endif
-+#ifdef CONFIG_FONT_5x8
-+#if defined(CONFIG_FBCON_MAC) /* XXX fixme, need better test */
-+#undef NO_FONTS
-+#endif
-+ &font_clean_5x8,
-+#endif
-+#ifdef CONFIG_FONT_4x6
-+#undef NO_FONTS
-+ &font_clean_4x6,
-+#endif
- };
-
- #define num_fonts (sizeof(fbcon_fonts)/sizeof(*fbcon_fonts))
-diff -Nur linux/drivers/video/fonts.c~ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/fonts.c~
---- linux/drivers/video/fonts.c~ 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/video/fonts.c~ 2003-06-23 01:47:03.000000000 +0700
-@@ -0,0 +1,131 @@
-+/*
-+ * linux/drivers/video/fonts.c -- `Soft' font definitions
-+ *
-+ * Created 1995 by Geert Uytterhoeven
-+ * Rewritten 1998 by Martin Mares <mj@ucw.cz>
-+ *
-+ * 2001 - Documented with DocBook
-+ * - Brad Douglas <brad@neruo.com>
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive
-+ * for more details.
-+ */
-+
-+
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/string.h>
-+#if defined(__mc68000__) || defined(CONFIG_APUS)
-+#include <asm/setup.h>
-+#endif
-+#include <video/font.h>
-+
-+#define NO_FONTS
-+
-+static struct fbcon_font_desc *fbcon_fonts[] = {
-+#ifdef CONFIG_FONT_8x8
-+#undef NO_FONTS
-+ &font_vga_8x8,
-+#endif
-+#ifdef CONFIG_FONT_8x16
-+#undef NO_FONTS
-+ &font_vga_8x16,
-+#endif
-+#ifdef CONFIG_FONT_6x11
-+#if defined(CONFIG_FBCON_MAC) || defined(CONFIG_FB_SBUS)
-+#undef NO_FONTS
-+#endif
-+ &font_vga_6x11,
-+#endif
-+#ifdef CONFIG_FONT_SUN8x16
-+#undef NO_FONTS
-+ &font_sun_8x16,
-+#endif
-+#ifdef CONFIG_FONT_SUN12x22
-+#if defined(CONFIG_FB_SBUS) || defined(CONFIG_FBCON_CFB8) || defined(CONFIG_FBCON_CFB16) || defined(CONFIG_FBCON_CFB24) || defined(CONFIG_FBCON_CFB32)
-+#undef NO_FONTS
-+#endif
-+ &font_sun_12x22,
-+#endif
-+#ifdef CONFIG_FONT_ACORN_8x8
-+#undef NO_FONTS
-+ &font_acorn_8x8,
-+#endif
-+#ifdef CONFIG_FONT_PEARL_8x8
-+#undef NO_FONTS
-+ &font_pearl_8x8,
-+#endif
-+};
-+
-+#define num_fonts (sizeof(fbcon_fonts)/sizeof(*fbcon_fonts))
-+
-+#ifdef NO_FONTS
-+#error No fonts configured.
-+#endif
-+
-+
-+/**
-+ * fbcon_find_font - find a font
-+ * @name: string name of a font
-+ *
-+ * Find a specified font with string name @name.
-+ *
-+ * Returns %NULL if no font found, or a pointer to the
-+ * specified font.
-+ *
-+ */
-+
-+struct fbcon_font_desc *fbcon_find_font(char *name)
-+{
-+ unsigned int i;
-+
-+ for (i = 0; i < num_fonts; i++)
-+ if (!strcmp(fbcon_fonts[i]->name, name))
-+ return fbcon_fonts[i];
-+ return NULL;
-+}
-+
-+
-+/**
-+ * fbcon_get_default_font - get default font
-+ * @xres: screen size of X
-+ * @yres: screen size of Y
-+ *
-+ * Get the default font for a specified screen size.
-+ * Dimensions are in pixels.
-+ *
-+ * Returns %NULL if no font is found, or a pointer to the
-+ * chosen font.
-+ *
-+ */
-+
-+struct fbcon_font_desc *fbcon_get_default_font(int xres, int yres)
-+{
-+ int i, c, cc;
-+ struct fbcon_font_desc *f, *g;
-+
-+ g = NULL;
-+ cc = -10000;
-+ for(i=0; i<num_fonts; i++) {
-+ f = fbcon_fonts[i];
-+ c = f->pref;
-+#if defined(__mc68000__) || defined(CONFIG_APUS)
-+#ifdef CONFIG_FONT_PEARL_8x8
-+ if (MACH_IS_AMIGA && f->idx == PEARL8x8_IDX)
-+ c = 100;
-+#endif
-+#ifdef CONFIG_FONT_6x11
-+ if (MACH_IS_MAC && xres < 640 && f->idx == VGA6x11_IDX)
-+ c = 100;
-+#endif
-+#endif
-+ if ((yres < 400) == (f->height <= 8))
-+ c += 1000;
-+ if (c > cc) {
-+ cc = c;
-+ g = f;
-+ }
-+ }
-+ return g;
-+}
-diff -Nur linux/fs/jffs2/GNUmakefile /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/GNUmakefile
---- linux/fs/jffs2/GNUmakefile 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/GNUmakefile 1970-01-01 07:00:00.000000000 +0700
-@@ -1,49 +0,0 @@
--# GNUmakefile for JFFS2 build outside kernel tree
--# $Id: GNUmakefile,v 1.6 2002/09/03 16:38:24 dwmw2 Exp $
--
--LINUXDIR=/lib/modules/$(shell uname -r)/build
--
--ifndef VERSION
--# Someone just typed 'make' in this directory.
--# Invoke a kernel build process, with only this dir in SUBDIRS.
--
--modules:
-- $(MAKE) -C $(LINUXDIR) CONFIG_JFFS2_FS_NAND=y SUBDIRS=`pwd` modules
--
--nonand:
-- make -C $(LINUXDIR) SUBDIRS=`pwd` modules
--
--dep:
-- make -C $(LINUXDIR) SUBDIRS=`pwd` dep
--
--clean:
-- rm -f *.o
--
--else
--
--ifndef CONFIG_JFFS2_FS
--# Invoked from a kernel build tree, but CONFIG_JFFS2_FS isn't set.
--# That means we must have got here from the hack above - pretend
--# CONFIG_JFFS2_FS _was_ set so that we actually build it, and also
--# pull in the local MTD include files in case they're also newer than
--# the ones in the kernel tree. And turn on debugging.
--
--CC += -I$(shell pwd)/../../include
--
--CONFIG_JFFS2_FS := m
--EXTRA_CFLAGS += -DCONFIG_JFFS2_FS_DEBUG=1 -g -Werror
--
--ifeq ($(CONFIG_JFFS2_FS_NAND),y)
--EXTRA_CFLAGS += -DCONFIG_JFFS2_FS_NAND=1
--endif
--endif
--
--# Check whether we've put the JFFS2 stuff in the superblock and inode unions
--OUT_OF_KERNEL_CFLAGS := $(shell grep -q jffs2 $(TOPDIR)/include/linux/fs.h || echo "-DJFFS2_OUT_OF_KERNEL")
--EXTRA_CFLAGS += $(OUT_OF_KERNEL_CFLAGS)
--
--
--include Makefile
--
--
--endif
-diff -Nur linux/fs/jffs2/LICENCE /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/LICENCE
---- linux/fs/jffs2/LICENCE 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/LICENCE 1970-01-01 07:00:00.000000000 +0700
-@@ -1,35 +0,0 @@
--The files in this directory and elsewhere which refer to this LICENCE
--file are part of JFFS2, the Journalling Flash File System v2.
--
-- Copyright (C) 2001, 2002 Red Hat, Inc.
--
--JFFS2 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 or (at your option) any later
--version.
--
--JFFS2 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 JFFS2; if not, write to the Free Software Foundation, Inc.,
--59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
--
--As a special exception, if other files instantiate templates or use
--macros or inline functions from these files, or you compile these
--files and link them with other works to produce a work based on these
--files, these files do not by themselves cause the resulting work to be
--covered by the GNU General Public License. However the source code for
--these files must still be made available in accordance with section (3)
--of the GNU General Public License.
--
--This exception does not invalidate any other reasons why a work based on
--this file might be covered by the GNU General Public License.
--
--For information on obtaining alternative licences for JFFS2, see
--http://sources.redhat.com/jffs2/jffs2-licence.html
--
--
-- $Id: LICENCE,v 1.1 2002/05/20 14:56:37 dwmw2 Exp $
-diff -Nur linux/fs/jffs2/Makefile /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/Makefile
---- linux/fs/jffs2/Makefile 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/Makefile 2003-06-23 01:47:03.000000000 +0700
-@@ -1,7 +1,7 @@
- #
- # Makefile for the linux Journalling Flash FileSystem (JFFS) routines.
- #
--# $Id: Makefile,v 1.34 2002/03/08 11:27:59 dwmw2 Exp $
-+# $Id: Makefile,v 1.25 2001/09/25 20:59:41 dwmw2 Exp $
- #
- # Note! Dependencies are done automagically by 'make dep', which also
- # removes any old dependencies. DON'T put your own dependencies here
-@@ -10,27 +10,17 @@
- # Note 2! The CFLAGS definitions are now in the main makefile...
-
-
--COMPR_OBJS := compr.o compr_rubin.o compr_rtime.o compr_zlib.o
--JFFS2_OBJS := dir.o file.o ioctl.o nodelist.o malloc.o \
-- read.o nodemgmt.o readinode.o write.o scan.o gc.o \
-- symlink.o build.o erase.o background.o fs.o writev.o
--
--LINUX_OBJS-24 := super-v24.o crc32.o
--LINUX_OBJS-25 := super.o
--
--NAND_OBJS-$(CONFIG_JFFS2_FS_NAND) := wbuf.o
--PROC_FS_OBJS-$(CONFIG_JFFS2_PROC_FS) := jffs2_proc.o
--NODEMERGE_OBJS-$(CONFIG_JFFS2_NODEMERGE) := nodemerge.o
-+COMPR_OBJS := compr.o compr_rubin.o compr_rtime.o pushpull.o \
-+ compr_zlib.o zlib.o
-
--subdir-y := compressors
-+JFFS2_OBJS := crc32.o dir.o file.o ioctl.o nodelist.o malloc.o \
-+ read.o nodemgmt.o readinode.o super.o write.o scan.o gc.o \
-+ symlink.o build.o erase.o background.o
-
- O_TARGET := jffs2.o
-
--obj-y := $(COMPR_OBJS) $(JFFS2_OBJS) $(VERS_OBJS) $(NAND_OBJS-y) $(PROC_FS_OBJS-y) \
-- $(NODEMERGE_OBJS-y) $(LINUX_OBJS-$(VERSION)$(PATCHLEVEL))
-+obj-y := $(COMPR_OBJS) $(JFFS2_OBJS)
- obj-m := $(O_TARGET)
-
--obj-y += $(join $(subdir-y),$(subdir-y:%=/%.o))
--
- include $(TOPDIR)/Rules.make
-
-diff -Nur linux/fs/jffs2/README.Locking /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/README.Locking
---- linux/fs/jffs2/README.Locking 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/README.Locking 1970-01-01 07:00:00.000000000 +0700
-@@ -1,116 +0,0 @@
-- $Id: README.Locking,v 1.4 2002/03/08 16:20:06 dwmw2 Exp $
--
-- JFFS2 LOCKING DOCUMENTATION
-- ---------------------------
--
--At least theoretically, JFFS2 does not require the Big Kernel Lock
--(BKL), which was always helpfully obtained for it by Linux 2.4 VFS
--code. It has its own locking, as described below.
--
--This document attempts to describe the existing locking rules for
--JFFS2. It is not expected to remain perfectly up to date, but ought to
--be fairly close.
--
--
-- alloc_sem
-- ---------
--
--The alloc_sem is a per-filesystem semaphore, used primarily to ensure
--contiguous allocation of space on the medium. It is automatically
--obtained during space allocations (jffs2_reserve_space()) and freed
--upon write completion (jffs2_complete_reservation()). Note that
--the garbage collector will obtain this right at the beginning of
--jffs2_garbage_collect_pass() and release it at the end, thereby
--preventing any other write activity on the file system during a
--garbage collect pass.
--
--When writing new nodes, the alloc_sem must be held until the new nodes
--have been properly linked into the data structures for the inode to
--which they belong. This is for the benefit of NAND flash - adding new
--nodes to an inode may obsolete old ones, and by holding the alloc_sem
--until this happens we ensure that any data in the write-buffer at the
--time this happens are part of the new node, not just something that
--was written afterwards. Hence, we can ensure the newly-obsoleted nodes
--don't actually get erased until the write-buffer has been flushed to
--the medium.
--
--With the introduction of NAND flash support and the write-buffer,
--the alloc_sem is also used to protect the wbuf-related members of the
--jffs2_sb_info structure. Atomically reading the wbuf_len member to see
--if the wbuf is currently holding any data is permitted, though.
--
--Ordering constraints: See f->sem.
--
--
-- File Semaphore f->sem
-- ---------------------
--
--This is the JFFS2-internal equivalent of the inode semaphore i->i_sem.
--It protects the contents of the jffs2_inode_info private inode data,
--including the linked list of node fragments (but see the notes below on
--erase_completion_lock), etc.
--
--The reason that the i_sem itself isn't used for this purpose is to
--avoid deadlocks with garbage collection -- the VFS will lock the i_sem
--before calling a function which may need to allocate space. The
--allocation may trigger garbage-collection, which may need to move a
--node belonging to the inode which was locked in the first place by the
--VFS. If the garbage collection code were to attempt to lock the i_sem
--of the inode from which it's garbage-collecting a physical node, this
--lead to deadlock, unless we played games with unlocking the i_sem
--before calling the space allocation functions.
--
--Instead of playing such games, we just have an extra internal
--semaphore, which is obtained by the garbage collection code and also
--by the normal file system code _after_ allocation of space.
--
--Ordering constraints:
--
-- 1. Never attempt to allocate space or lock alloc_sem with
-- any f->sem held.
-- 2. Never attempt to lock two file semaphores in one thread.
-- No ordering rules have been made for doing so.
--
--
-- erase_completion_lock spinlock
-- ------------------------------
--
--This is used to serialise access to the eraseblock lists, to the
--per-eraseblock lists of physical jffs2_raw_node_ref structures, and
--(NB) the per-inode list of physical nodes. The latter is a special
--case - see below.
--
--As the MTD API permits erase-completion callback functions to be
--called from bottom-half (timer) context, and these functions access
--the data structures protected by this lock, it must be locked with
--spin_lock_bh().
--
--Note that the per-inode list of physical nodes (f->nodes) is a special
--case. Any changes to _valid_ nodes (i.e. ->flash_offset & 1 == 0) in
--the list are protected by the file semaphore f->sem. But the erase
--code may remove _obsolete_ nodes from the list while holding only the
--erase_completion_lock. So you can walk the list only while holding the
--erase_completion_lock, and can drop the lock temporarily mid-walk as
--long as the pointer you're holding is to a _valid_ node, not an
--obsolete one.
--
--The erase_completion_lock is also used to protect the c->gc_task
--pointer when the garbage collection thread exits. The code to kill the
--GC thread locks it, sends the signal, then unlocks it - while the GC
--thread itself locks it, zeroes c->gc_task, then unlocks on the exit path.
--
-- node_free_sem
-- -------------
--
--This semaphore is only used by the erase code which frees obsolete
--node references and the jffs2_garbage_collect_deletion_dirent()
--function. The latter function on NAND flash must read _obsolete_ nodes
--to determine whether the 'deletion dirent' under consideration can be
--discarded or whether it is still required to show that an inode has
--been unlinked. Because reading from the flash may sleep, the
--erase_completion_lock cannot be held, so an alternative, more
--heavyweight lock was required to prevent the erase code from freeing
--the jffs2_raw_node_ref structures in question while the garbage
--collection code is looking at them.
--
--Suggestions for alternative solutions to this problem would be welcomed.
-diff -Nur linux/fs/jffs2/TODO /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/TODO
---- linux/fs/jffs2/TODO 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/TODO 2003-06-23 01:47:03.000000000 +0700
-@@ -1,6 +1,8 @@
--$Id: TODO,v 1.9 2002/07/11 10:39:04 dwmw2 Exp $
-+$Id: TODO,v 1.3 2001/03/01 23:26:48 dwmw2 Exp $
-
-- - disable compression in commit_write()?
-+ - disable compression in commit_write()? Or at least optimise the 'always write
-+ whole page' bit.
-+ - fix zlib. It's ugly as hell and there are at least three copies in the kernel tree
- - fine-tune the allocation / GC thresholds
- - chattr support - turning on/off and tuning compression per-inode
- - checkpointing (do we need this? scan is quite fast)
-@@ -8,37 +10,11 @@
- mount doesn't have to read the flash twice for large files.
- Make this a per-inode option, changable with chattr, so you can
- decide which inodes should be in-core immediately after mount.
-+ - stop it depending on a block device. mount(8) needs a change for this.
-+ - make it work on NAND flash. We need to know when we can GC
-+ deletion dirents, etc. And think about holes/truncation. It can
-+ all be done reasonably simply, but it need implementing.
-+ - NAND flash will require new dirent/dnode structures on the medium with
-+ ECC data in rather than just the CRC we're using ATM.
- - test, test, test
-
-- - NAND flash support:
-- - flush_wbuf using GC to fill it, don't just pad.
-- - Deal with write errors. Data don't get lost - we just have to write
-- the affected node(s) out again somewhere else.
-- - make fsync flush only if actually required
-- - make sys_sync() work.
-- - reboot notifier
-- - timed flush of old wbuf
-- - fix magical second arg of jffs2_flush_wbuf(). Split into two or more functions instead.
--
--
-- - Optimisations:
-- - Stop GC from decompressing and immediately recompressing nodes which could
-- just be copied intact.
-- - Furthermore, in the case where it could be copied intact we don't even need
-- to call iget() for it -- if we use (raw_node_raw->flash_offset & 2) as a flag
-- to show a node can be copied intact and it's _not_ in icache, we could just do
-- it, fix up the next_in_ino list and move on. We would need a way to find out
-- _whether_ it's in icache though -- if it's in icache we also need to do the
-- fragment lists, etc. P'raps a flag or pointer in the jffs2_inode_cache could
-- help.
-- - Stop keeping name in-core with struct jffs2_full_dirent. If we keep the hash in
-- the full dirent, we only need to go to the flash in lookup() when we think we've
-- got a match, and in readdir().
-- - Doubly-linked next_in_ino list to allow us to free obsoleted raw_node_refs immediately?
-- - Remove totlen from jffs2_raw_node_ref? Need to have totlen passed into
-- jffs2_mark_node_obsolete(). Can all callers work it out?
-- - Don't check data CRC on node scan during mount. We don't really need to know
-- yet. This means we can't build up node fragment lists, and hence can't
-- build accurate clean/dirty information. But we don't _need_ that for reading,
-- only for writing. And in fact we don't even need it for writing until we
-- start to need GC.
-diff -Nur linux/fs/jffs2/background.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/background.c
---- linux/fs/jffs2/background.c 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/background.c 2003-06-23 01:47:03.000000000 +0700
-@@ -1,61 +1,59 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: background.c,v 1.31 2002/08/20 15:41:28 gleixner Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
- *
-- * ChangeLog:
-- * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode
-- * 25-Nov-2002 Lineo Japan, Inc. end GC when jffs2_garbage_collect_pass
-- * returns -ENOSPC
-- * 23-Nov-2002 Lineo Japan, Inc. reverse precedence between
-- * c->nodemerge_list and c->very_dirty_list
-- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility and c->nodemerge_list
-- * correct indentation
-- * 29-Oct-2002 Lineo Japan, Inc. add reserved blocks for badblock
-- * add c->cont_gc_count
-- * 24-Oct-2002 Lineo Japan, Inc. add min. available blocks
-- *
-- * ChangeLog:
-- * 05-Dec-2002 SHARP adjust gc-end conditions
-- * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode
-- * 25-Nov-2002 Lineo Japan, Inc. end GC when jffs2_garbage_collect_pass
-- * returns -ENOSPC
-- * 23-Nov-2002 Lineo Japan, Inc. reverse precedence between
-- * c->nodemerge_list and c->very_dirty_list
-- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility and c->nodemerge_list
-- * correct indentation
-- * 29-Oct-2002 Lineo Japan, Inc. add reserved blocks for badblock
-- * add c->cont_gc_count
-- * 24-Oct-2002 Lineo Japan, Inc. add min. available blocks
-+ * $Id: background.c,v 1.16 2001/10/08 09:22:38 dwmw2 Exp $
- *
- */
-
- #define __KERNEL_SYSCALLS__
-
- #include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/unistd.h>
- #include <linux/jffs2.h>
- #include <linux/mtd/mtd.h>
- #include <linux/interrupt.h>
- #include <linux/completion.h>
--#include <linux/mtd/compatmac.h> /* recalc_sigpending() */
--#include <linux/unistd.h>
- #include "nodelist.h"
-
-
- static int jffs2_garbage_collect_thread(void *);
--static int thread_should_do_effective_gc(struct jffs2_sb_info *c);
--static int thread_should_wake(struct jffs2_sb_info *c, int);
-+static int thread_should_wake(struct jffs2_sb_info *c);
-
- void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c)
- {
- spin_lock_bh(&c->erase_completion_lock);
-- if (c->gc_task && thread_should_wake(c, 0))
-+ if (c->gc_task && thread_should_wake(c))
- send_sig(SIGHUP, c->gc_task, 1);
- spin_unlock_bh(&c->erase_completion_lock);
- }
-@@ -88,13 +86,6 @@
-
- void jffs2_stop_garbage_collect_thread(struct jffs2_sb_info *c)
- {
-- if (c->mtd->type == MTD_NANDFLASH) {
-- /* stop a eventually scheduled wbuf flush timer */
-- del_timer_sync(&c->wbuf_timer);
-- /* make sure, that a scheduled wbuf flush task is completed */
-- flush_scheduled_tasks();
-- }
--
- spin_lock_bh(&c->erase_completion_lock);
- if (c->gc_task) {
- D1(printk(KERN_DEBUG "jffs2: Killing GC task %d\n", c->gc_task->pid));
-@@ -107,28 +98,24 @@
- static int jffs2_garbage_collect_thread(void *_c)
- {
- struct jffs2_sb_info *c = _c;
-- int ret = 0;
-- jffs2_gcmode_t gcmode = GCMODE_NORMAL;
-
- daemonize();
--
-+ current->tty = NULL;
- c->gc_task = current;
- up(&c->gc_thread_start);
-
- sprintf(current->comm, "jffs2_gcd_mtd%d", c->mtd->index);
-
-- set_user_nice(current, 10);
-+ /* FIXME in the 2.2 backport */
-+ current->nice = 10;
-
- for (;;) {
- spin_lock_irq(&current->sigmask_lock);
-- if (gcmode == GCMODE_NORMAL)
-- siginitsetinv (&current->blocked, sigmask(SIGUSR1) | sigmask(SIGHUP) | sigmask(SIGKILL) | sigmask(SIGSTOP) | sigmask(SIGCONT));
-- else
-- siginitsetinv (&current->blocked, sigmask(SIGKILL) | sigmask(SIGSTOP) | sigmask(SIGCONT));
-+ siginitsetinv (&current->blocked, sigmask(SIGHUP) | sigmask(SIGKILL) | sigmask(SIGSTOP) | sigmask(SIGCONT));
- recalc_sigpending();
- spin_unlock_irq(&current->sigmask_lock);
-
-- if (gcmode == GCMODE_NORMAL && (ret == -ENOSPC || !thread_should_wake(c, 1))) {
-+ if (!thread_should_wake(c)) {
- set_current_state (TASK_INTERRUPTIBLE);
- D1(printk(KERN_DEBUG "jffs2_garbage_collect_thread sleeping...\n"));
- /* Yes, there's a race here; we checked thread_should_wake() before
-@@ -138,7 +125,8 @@
- schedule();
- }
-
-- cond_resched();
-+ if (current->need_resched)
-+ schedule();
-
- /* Put_super will send a SIGKILL and then wait on the sem.
- */
-@@ -161,20 +149,12 @@
- D1(printk(KERN_DEBUG "jffs2_garbage_collect_thread(): SIGKILL received.\n"));
- spin_lock_bh(&c->erase_completion_lock);
- c->gc_task = NULL;
-- c->effective_gc_count = 0;
- spin_unlock_bh(&c->erase_completion_lock);
- complete_and_exit(&c->gc_thread_exit, 0);
-
- case SIGHUP:
- D1(printk(KERN_DEBUG "jffs2_garbage_collect_thread(): SIGHUP received.\n"));
- break;
--
-- case SIGUSR1:
-- gcmode = GCMODE_EFFECTIVE;
-- c->effective_gc_count++;
-- D1(printk(KERN_DEBUG "jffs2_garbage_collect_thread(): SIGUSR1 received. effective_gc_count=(%d)\n", c->effective_gc_count));
-- break;
--
- default:
- D1(printk(KERN_DEBUG "jffs2_garbage_collect_thread(): signal %ld received\n", signr));
-
-@@ -186,134 +166,18 @@
- recalc_sigpending();
- spin_unlock_irq(&current->sigmask_lock);
-
-- if (gcmode == GCMODE_EFFECTIVE && ! thread_should_do_effective_gc(c)) {
-- gcmode = GCMODE_NORMAL;
-- c->effective_gc_count++;
-- ret = 0;
-- continue;
-- }
--
- D1(printk(KERN_DEBUG "jffs2_garbage_collect_thread(): pass\n"));
-- ret = jffs2_garbage_collect_pass(c, gcmode);
-- if (gcmode == GCMODE_EFFECTIVE && ret <= 0) {
-- gcmode = GCMODE_NORMAL;
-- c->effective_gc_count++;
-- }
-+ jffs2_garbage_collect_pass(c);
- }
- }
-
--static int thread_should_do_effective_gc(struct jffs2_sb_info *c)
-+static int thread_should_wake(struct jffs2_sb_info *c)
- {
-- int ret = 0;
--
-- spin_lock_bh(&c->erase_completion_lock);
--
-- if (thread_should_wake_by_nodemerge_list(c, 1)) // add for /proc/.../.nodemerge
-- ret = 1;
--
-- if (NR_AVAIL_BLOCKS(c) < JFFS2_RESERVED_BLOCKS_GCTRIGGER) {
-- uint32_t dirty_now, erasing_dirty_now, nonerasing_dirty_now;
-- int32_t avail_blocks;
--
-- dirty_now = c->dirty_size;
-- erasing_dirty_now = c->erasing_dirty_size;
-- nonerasing_dirty_now = ((dirty_now >= erasing_dirty_now) ? (dirty_now - erasing_dirty_now) : 0);
-- avail_blocks = NR_AVAIL_BLOCKS(c);
--
-- if(ret){
-- if (avail_blocks <= JFFS2_RESERVED_BLOCKS_GCMERGE)
-- ret = 0;
-- }else{
-- if (avail_blocks <= 1 ||
-- dirty_now < c->sector_size ||
-- nonerasing_dirty_now / c->sector_size < JFFS2_RESERVED_BLOCKS_DIRTY)
-- ret = 0;
-- else
-- ret = 1;
-- }
-- }
-- else
-- ret = 1;
--
-- spin_unlock_bh(&c->erase_completion_lock);
--
-- return ret;
--}
--
--#ifdef CONFIG_JFFS2_NODEMERGE
--static inline int thread_should_wake_by_nodemerge_list(struct jffs2_sb_info *c, int from_effective_gc)
--{
-- if (c->flags & JFFS2_SB_FLAG_GCING_A_BLOCK)
-- return 1;
--#ifdef CONFIG_ARCH_SHARP_SL
-- else if (! list_empty(&c->very_dirty_list))
-+ D1(printk(KERN_DEBUG "thread_should_wake(): nr_free_blocks %d, nr_erasing_blocks %d, dirty_size 0x%x\n",
-+ c->nr_free_blocks, c->nr_erasing_blocks, c->dirty_size));
-+ if (c->nr_free_blocks + c->nr_erasing_blocks < JFFS2_RESERVED_BLOCKS_GCTRIGGER &&
-+ c->dirty_size > c->sector_size)
- return 1;
--#endif
-- else if (! list_empty(&c->nodemerge_list)){
-- if(NR_AVAIL_BLOCKS(c) >= JFFS2_RESERVED_BLOCKS_CLEAN){
-- return 1;
-- }else{
-- if(from_effective_gc &&
-- jffs2_get_dirty_block(&c->nodemerge_list) != NULL){
-- return 1;
-- }else{
-- return 0;
-- }
-- }
-- }
-- else
-+ else
- return 0;
- }
--#else
--static inline int thread_should_wake_by_nodemerge_list(struct jffs2_sb_info* c, int from_effective_gc)
--{
-- return 0;
--}
--#endif
--
--static int thread_should_wake(struct jffs2_sb_info *c, int from_gc_loop)
--{
-- int ret = 0;
--
-- if (thread_should_wake_by_nodemerge_list(c, 0))
-- ret = 1;
--
-- if (NR_AVAIL_BLOCKS(c) < JFFS2_RESERVED_BLOCKS_GCTRIGGER) {
-- uint32_t dirty_now, erasing_dirty_now, nonerasing_dirty_now;
-- int32_t avail_blocks;
--
-- dirty_now = c->dirty_size;
-- erasing_dirty_now = c->erasing_dirty_size;
-- nonerasing_dirty_now = ((dirty_now >= erasing_dirty_now) ? (dirty_now - erasing_dirty_now) : 0);
-- avail_blocks = NR_AVAIL_BLOCKS(c);
--
-- if(ret){
-- if (c->cont_gc_count >= JFFS2_MAX_CONT_GC ||
-- avail_blocks <= JFFS2_RESERVED_BLOCKS_GCMERGE)
-- ret = 0;
-- }else{
-- if (c->cont_gc_count >= JFFS2_MAX_CONT_GC ||
-- avail_blocks <= 1 ||
-- dirty_now < c->sector_size ||
-- nonerasing_dirty_now / c->sector_size < JFFS2_RESERVED_BLOCKS_DIRTY)
-- ret = 0;
-- else {
-- c->cont_gc_count++;
-- ret = 1;
-- }
-- }
-- }
-- else if (from_gc_loop && ! ret)
-- c->cont_gc_count = 0;
--
-- D1(printk(KERN_DEBUG "thread_should_wake(): nr_free_blocks %d, nr_erasing_blocks %d, dirty_size 0x%x, cont_gc_count %d: %s\n",
-- c->nr_free_blocks, c->nr_erasing_blocks, c->dirty_size, c->cont_gc_count, ret?"yes":"no"));
--
-- return ret;
--}
--
--/*
-- * Local variables:
-- * c-basic-offset: 8
-- * End:
-- */
-diff -Nur linux/fs/jffs2/build.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/build.c
---- linux/fs/jffs2/build.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/build.c 2003-06-23 01:47:03.000000000 +0700
-@@ -1,27 +1,45 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: build.c,v 1.41 2002/09/06 14:12:44 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
- *
-- * ChangeLog:
-- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility
-- * 20-Sep-2002 Lineo Japan, Inc. add jffs2_orphaned_inodes
-- * but it is useless right now
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: build.c,v 1.16.2.2 2002/03/12 15:36:43 dwmw2 Exp $
- *
- */
-
- #include <linux/kernel.h>
-+#include <linux/jffs2.h>
- #include <linux/slab.h>
- #include "nodelist.h"
-
--static enum { ORPHANED_DELETE, ORPHANED_ERROR } orphaned_inodes_mode;
--
- int jffs2_build_inode_pass1(struct jffs2_sb_info *, struct jffs2_inode_cache *);
- int jffs2_build_remove_unlinked_inode(struct jffs2_sb_info *, struct jffs2_inode_cache *);
-
-@@ -33,7 +51,7 @@
- - Scan directory tree from top down, setting nlink in inocaches
- - Scan inocaches for inodes with nlink==0
- */
--static int jffs2_build_filesystem(struct jffs2_sb_info *c)
-+int jffs2_build_filesystem(struct jffs2_sb_info *c)
- {
- int ret;
- int i;
-@@ -50,7 +68,6 @@
- return ret;
-
- D1(printk(KERN_DEBUG "Scanned flash completely\n"));
-- D1(jffs2_dump_block_lists(c));
- /* Now build the data map for each inode, marking obsoleted nodes
- as such, and also increase nlink of any children. */
- for_each_inode(i, c, ic) {
-@@ -60,11 +77,9 @@
- D1(printk(KERN_WARNING "Eep. jffs2_build_inode_pass1 for ino %d returned %d\n", ic->ino, ret));
- return ret;
- }
-- cond_resched();
- }
- D1(printk(KERN_DEBUG "Pass 1 complete\n"));
-- D1(jffs2_dump_block_lists(c));
--
-+
- /* Next, scan for inodes with nlink == 0 and remove them. If
- they were directories, then decrement the nlink of their
- children too, and repeat the scan. As that's going to be
-@@ -78,16 +93,6 @@
- if (ic->nlink)
- continue;
-
-- /* XXX: Can get high latency here. Move the cond_resched() from the end of the loop? */
--
-- switch (orphaned_inodes_mode) {
-- case ORPHANED_ERROR:
-- printk(KERN_ERR "%s: detect orphaned inode\n", __func__);
-- return -EIO;
--
-- default:
-- break;
-- }
- ret = jffs2_build_remove_unlinked_inode(c, ic);
- if (ret)
- break;
-@@ -95,12 +100,8 @@
- and furthermore that it had children and their nlink has now
- gone to zero too. So we have to restart the scan. */
- }
-- D1(jffs2_dump_block_lists(c));
--
-- cond_resched();
--
- } while(ret == -EAGAIN);
--
-+
- D1(printk(KERN_DEBUG "Pass 2 complete\n"));
-
- /* Finally, we can scan again and free the dirent nodes and scan_info structs */
-@@ -121,13 +122,8 @@
- jffs2_free_full_dirent(fd);
- }
- kfree(scan);
-- cond_resched();
- }
- D1(printk(KERN_DEBUG "Pass 3 complete\n"));
-- D1(jffs2_dump_block_lists(c));
--
-- /* Rotate the lists by some number to ensure wear levelling */
-- jffs2_rotate_lists(c);
-
- return ret;
- }
-@@ -136,7 +132,7 @@
- {
- struct jffs2_tmp_dnode_info *tn;
- struct jffs2_full_dirent *fd;
-- rb_root_t fragtree = RB_ROOT;
-+ struct jffs2_node_frag *fraglist = NULL;
- struct jffs2_tmp_dnode_info *metadata = NULL;
-
- D1(printk(KERN_DEBUG "jffs2_build_inode building inode #%u\n", ic->ino));
-@@ -153,56 +149,52 @@
-
- if (metadata && tn->version > metadata->version) {
- D1(printk(KERN_DEBUG "jffs2_build_inode_pass1 ignoring old metadata at 0x%08x\n",
-- ref_offset(metadata->fn->raw)));
-+ metadata->fn->raw->flash_offset &~3));
-
-- jffs2_mark_node_obsolete(c, metadata->fn->raw);
- jffs2_free_full_dnode(metadata->fn);
- jffs2_free_tmp_dnode_info(metadata);
- metadata = NULL;
- }
-
- if (tn->fn->size) {
-- jffs2_add_full_dnode_to_fraglist (c, &fragtree, tn->fn);
-+ jffs2_add_full_dnode_to_fraglist (c, &fraglist, tn->fn);
- jffs2_free_tmp_dnode_info(tn);
- } else {
- if (!metadata) {
- metadata = tn;
- } else {
-- /* This will only happen if it has the _same_ version
-- number as the existing metadata node. */
- D1(printk(KERN_DEBUG "jffs2_build_inode_pass1 ignoring new metadata at 0x%08x\n",
-- ref_offset(tn->fn->raw)));
-+ tn->fn->raw->flash_offset &~3));
-
-- jffs2_mark_node_obsolete(c, tn->fn->raw);
- jffs2_free_full_dnode(tn->fn);
- jffs2_free_tmp_dnode_info(tn);
- }
- }
- }
--
-- if (ic->scan->version) {
-- /* It's a regular file, so truncate it to the last known
-- i_size, if necessary */
-- D1(printk(KERN_DEBUG "jffs2_build_inode_pass1 truncating fraglist to 0x%08x\n", ic->scan->isize));
-- jffs2_truncate_fraglist_1(c, &fragtree, ic->scan->isize);
-- }
--
-+
- /* OK. Now clear up */
- if (metadata) {
- jffs2_free_full_dnode(metadata->fn);
- jffs2_free_tmp_dnode_info(metadata);
- }
- metadata = NULL;
--
-- jffs2_kill_fragtree(&fragtree, NULL);
-+
-+ while (fraglist) {
-+ struct jffs2_node_frag *frag;
-+ frag = fraglist;
-+ fraglist = fraglist->next;
-+
-+ if (frag->node && !(--frag->node->frags)) {
-+ jffs2_free_full_dnode(frag->node);
-+ }
-+ jffs2_free_node_frag(frag);
-+ }
-
- /* Now for each child, increase nlink */
- for(fd=ic->scan->dents; fd; fd = fd->next) {
- struct jffs2_inode_cache *child_ic;
- if (!fd->ino)
- continue;
--
-- /* XXX: Can get high latency here with huge directories */
-
- child_ic = jffs2_get_ino_cache(c, fd->ino);
- if (!child_ic) {
-@@ -239,38 +231,25 @@
- D1(printk(KERN_DEBUG "JFFS2: Removing ino #%u with nlink == zero.\n", ic->ino));
-
- for (raw = ic->nodes; raw != (void *)ic; raw = raw->next_in_ino) {
-- D1(printk(KERN_DEBUG "obsoleting node at 0x%08x\n", ref_offset(raw)));
-+ D1(printk(KERN_DEBUG "obsoleting node at 0x%08x\n", raw->flash_offset&~3));
- jffs2_mark_node_obsolete(c, raw);
- }
-
- if (ic->scan->dents) {
-- int whinged = 0;
-- D1(printk(KERN_DEBUG "Inode #%u was a directory which may have children...\n", ic->ino));
--
-+ printk(KERN_NOTICE "Inode #%u was a directory with children - removing those too...\n", ic->ino);
-+
- while(ic->scan->dents) {
- struct jffs2_inode_cache *child_ic;
-
- fd = ic->scan->dents;
- ic->scan->dents = fd->next;
-
-- if (!fd->ino) {
-- /* It's a deletion dirent. Ignore it */
-- D1(printk(KERN_DEBUG "Child \"%s\" is a deletion dirent, skipping...\n", fd->name));
-- jffs2_free_full_dirent(fd);
-- continue;
-- }
-- if (!whinged) {
-- whinged = 1;
-- printk(KERN_NOTICE "Inode #%u was a directory with children - removing those too...\n", ic->ino);
-- }
--
- D1(printk(KERN_DEBUG "Removing child \"%s\", ino #%u\n",
- fd->name, fd->ino));
-
- child_ic = jffs2_get_ino_cache(c, fd->ino);
- if (!child_ic) {
- printk(KERN_NOTICE "Cannot remove child \"%s\", ino #%u, because it doesn't exist\n", fd->name, fd->ino);
-- jffs2_free_full_dirent(fd);
- continue;
- }
- jffs2_free_full_dirent(fd);
-@@ -280,82 +259,7 @@
- }
- kfree(ic->scan);
- ic->scan = NULL;
--
-- /*
-- We don't delete the inocache from the hash list and free it yet.
-- The erase code will do that, when all the nodes are completely gone.
-- */
--
-+ // jffs2_del_ino_cache(c, ic);
-+ // jffs2_free_inode_cache(ic);
- return ret;
- }
--
--int jffs2_do_mount_fs(struct jffs2_sb_info *c)
--{
-- int i;
--
-- c->free_size = c->flash_size;
-- c->nr_blocks = c->flash_size / c->sector_size;
-- c->blocks = kmalloc(sizeof(struct jffs2_eraseblock) * c->nr_blocks, GFP_KERNEL);
-- if (!c->blocks)
-- return -ENOMEM;
-- for (i=0; i<c->nr_blocks; i++) {
-- INIT_LIST_HEAD(&c->blocks[i].list);
-- c->blocks[i].offset = i * c->sector_size;
-- c->blocks[i].free_size = c->sector_size;
-- c->blocks[i].dirty_size = 0;
-- c->blocks[i].wasted_size = 0;
-- c->blocks[i].used_size = 0;
-- c->blocks[i].first_node = NULL;
-- c->blocks[i].last_node = NULL;
-- }
--
-- init_MUTEX(&c->alloc_sem);
-- init_MUTEX(&c->erase_free_sem);
-- init_waitqueue_head(&c->erase_wait);
-- spin_lock_init(&c->erase_completion_lock);
-- spin_lock_init(&c->inocache_lock);
--
-- INIT_LIST_HEAD(&c->clean_list);
-- INIT_LIST_HEAD(&c->very_dirty_list);
-- INIT_LIST_HEAD(&c->dirty_list);
-- INIT_LIST_HEAD(&c->erasable_list);
-- INIT_LIST_HEAD(&c->erasing_list);
-- INIT_LIST_HEAD(&c->erase_pending_list);
-- INIT_LIST_HEAD(&c->erasable_pending_wbuf_list);
-- INIT_LIST_HEAD(&c->erase_complete_list);
-- INIT_LIST_HEAD(&c->free_list);
-- INIT_LIST_HEAD(&c->bad_list);
-- INIT_LIST_HEAD(&c->bad_used_list);
--#ifdef CONFIG_JFFS2_NODEMERGE
-- INIT_LIST_HEAD(&c->nodemerge_list);
--#endif
-- c->highest_ino = 1;
--
-- if (jffs2_build_filesystem(c)) {
-- D1(printk(KERN_DEBUG "build_fs failed\n"));
-- jffs2_free_ino_caches(c);
-- jffs2_free_raw_node_refs(c);
-- kfree(c->blocks);
-- return -EIO;
-- }
-- return 0;
--}
--
--
--static int __init jffs2_setup(char* s)
--{
-- if (strcmp(s, "error") == 0)
-- orphaned_inodes_mode = ORPHANED_ERROR;
-- else
-- orphaned_inodes_mode = ORPHANED_DELETE;
-- return 1;
--}
--
--
--__setup("jffs2_orphaned_inodes=", jffs2_setup);
--
--/*
-- * Local variables:
-- * c-basic-offset: 8
-- * End:
-- */
-diff -Nur linux/fs/jffs2/compr.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compr.c
---- linux/fs/jffs2/compr.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compr.c 2003-06-23 01:47:03.000000000 +0700
-@@ -1,43 +1,54 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by Arjan van de Ven <arjanv@redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: compr.c,v 1.24 2002/05/20 14:56:37 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
- *
-- * ChangeLog:
-- * 20-Nov-2002 Lineo Japan, Inc. don't choose rtime compressor
-+ * $Id: compr.c,v 1.17 2001/09/23 09:56:46 dwmw2 Exp $
- *
- */
-
--#ifdef __KERNEL__
- #include <linux/kernel.h>
- #include <linux/string.h>
-+#include <linux/types.h>
- #include <linux/errno.h>
--#else
--#define KERN_DEBUG
--#define KERN_NOTICE
--#define KERN_WARNING
--#define printk printf
--#include <stdio.h>
--#include <stdint.h>
--#include <errno.h>
--#endif
--
- #include <linux/jffs2.h>
-
--int jffs2_zlib_compress(unsigned char *data_in, unsigned char *cpage_out, uint32_t *sourcelen, uint32_t *dstlen);
--void jffs2_zlib_decompress(unsigned char *data_in, unsigned char *cpage_out, uint32_t srclen, uint32_t destlen);
--int jffs2_rtime_compress(unsigned char *data_in, unsigned char *cpage_out, uint32_t *sourcelen, uint32_t *dstlen);
--void jffs2_rtime_decompress(unsigned char *data_in, unsigned char *cpage_out, uint32_t srclen, uint32_t destlen);
--int jffs2_rubinmips_compress(unsigned char *data_in, unsigned char *cpage_out, uint32_t *sourcelen, uint32_t *dstlen);
--void jffs2_rubinmips_decompress(unsigned char *data_in, unsigned char *cpage_out, uint32_t srclen, uint32_t destlen);
--int jffs2_dynrubin_compress(unsigned char *data_in, unsigned char *cpage_out, uint32_t *sourcelen, uint32_t *dstlen);
--void jffs2_dynrubin_decompress(unsigned char *data_in, unsigned char *cpage_out, uint32_t srclen, uint32_t destlen);
-+int zlib_compress(unsigned char *data_in, unsigned char *cpage_out, __u32 *sourcelen, __u32 *dstlen);
-+void zlib_decompress(unsigned char *data_in, unsigned char *cpage_out, __u32 srclen, __u32 destlen);
-+int rtime_compress(unsigned char *data_in, unsigned char *cpage_out, __u32 *sourcelen, __u32 *dstlen);
-+void rtime_decompress(unsigned char *data_in, unsigned char *cpage_out, __u32 srclen, __u32 destlen);
-+int rubinmips_compress(unsigned char *data_in, unsigned char *cpage_out, __u32 *sourcelen, __u32 *dstlen);
-+void rubinmips_decompress(unsigned char *data_in, unsigned char *cpage_out, __u32 srclen, __u32 destlen);
-+int dynrubin_compress(unsigned char *data_in, unsigned char *cpage_out, __u32 *sourcelen, __u32 *dstlen);
-+void dynrubin_decompress(unsigned char *data_in, unsigned char *cpage_out, __u32 srclen, __u32 destlen);
-
-
- /* jffs2_compress:
-@@ -58,33 +69,31 @@
- * *datalen accordingly to show the amount of data which were compressed.
- */
- unsigned char jffs2_compress(unsigned char *data_in, unsigned char *cpage_out,
-- uint32_t *datalen, uint32_t *cdatalen)
-+ __u32 *datalen, __u32 *cdatalen)
- {
- int ret;
-
-- ret = jffs2_zlib_compress(data_in, cpage_out, datalen, cdatalen);
-+ ret = zlib_compress(data_in, cpage_out, datalen, cdatalen);
- if (!ret) {
- return JFFS2_COMPR_ZLIB;
- }
- #if 0 /* Disabled 23/9/1. With zlib it hardly ever gets a look in */
-- ret = jffs2_dynrubin_compress(data_in, cpage_out, datalen, cdatalen);
-+ ret = dynrubin_compress(data_in, cpage_out, datalen, cdatalen);
- if (!ret) {
- return JFFS2_COMPR_DYNRUBIN;
- }
- #endif
- #if 0 /* Disabled 26/2/1. Obsoleted by dynrubin */
-- ret = jffs2_rubinmips_compress(data_in, cpage_out, datalen, cdatalen);
-+ ret = rubinmips_compress(data_in, cpage_out, datalen, cdatalen);
- if (!ret) {
- return JFFS2_COMPR_RUBINMIPS;
- }
- #endif
--#ifndef CONFIG_ARCH_SHARP_SL
- /* rtime does manage to recompress already-compressed data */
-- ret = jffs2_rtime_compress(data_in, cpage_out, datalen, cdatalen);
-+ ret = rtime_compress(data_in, cpage_out, datalen, cdatalen);
- if (!ret) {
- return JFFS2_COMPR_RTIME;
- }
--#endif
- #if 0
- /* We don't need to copy. Let the caller special-case the COMPR_NONE case. */
- /* If we get here, no compression is going to work */
-@@ -99,7 +108,7 @@
-
-
- int jffs2_decompress(unsigned char comprtype, unsigned char *cdata_in,
-- unsigned char *data_out, uint32_t cdatalen, uint32_t datalen)
-+ unsigned char *data_out, __u32 cdatalen, __u32 datalen)
- {
- switch (comprtype) {
- case JFFS2_COMPR_NONE:
-@@ -112,23 +121,23 @@
- break;
-
- case JFFS2_COMPR_ZLIB:
-- jffs2_zlib_decompress(cdata_in, data_out, cdatalen, datalen);
-+ zlib_decompress(cdata_in, data_out, cdatalen, datalen);
- break;
-
- case JFFS2_COMPR_RTIME:
-- jffs2_rtime_decompress(cdata_in, data_out, cdatalen, datalen);
-+ rtime_decompress(cdata_in, data_out, cdatalen, datalen);
- break;
-
- case JFFS2_COMPR_RUBINMIPS:
- #if 0 /* Disabled 23/9/1 */
-- jffs2_rubinmips_decompress(cdata_in, data_out, cdatalen, datalen);
-+ rubinmips_decompress(cdata_in, data_out, cdatalen, datalen);
- #else
- printk(KERN_WARNING "JFFS2: Rubinmips compression encountered but support not compiled in!\n");
- #endif
- break;
- case JFFS2_COMPR_DYNRUBIN:
- #if 1 /* Phase this one out */
-- jffs2_dynrubin_decompress(cdata_in, data_out, cdatalen, datalen);
-+ dynrubin_decompress(cdata_in, data_out, cdatalen, datalen);
- #else
- printk(KERN_WARNING "JFFS2: Dynrubin compression encountered but support not compiled in!\n");
- #endif
-diff -Nur linux/fs/jffs2/compr_rtime.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compr_rtime.c
---- linux/fs/jffs2/compr_rtime.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compr_rtime.c 2003-06-23 01:47:03.000000000 +0700
-@@ -1,13 +1,37 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by Arjan van de Ven <arjanv@redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: compr_rtime.c,v 1.9 2002/05/20 14:56:37 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: compr_rtime.c,v 1.5 2001/03/15 15:38:23 dwmw2 Exp $
- *
- *
- * Very simple lz77-ish encoder.
-@@ -19,9 +43,6 @@
- *
- * The algorithm is intended to only send "whole bytes", no bit-messing.
- *
-- * ChangeLog:
-- * 20-Nov-2002 Lineo Japan, Inc. don't choose rtime compressor
-- *
- */
-
- #include <linux/kernel.h>
-@@ -29,10 +50,9 @@
- #include <linux/errno.h>
- #include <linux/string.h>
-
--#ifndef CONFIG_ARCH_SHARP_SL
- /* _compress returns the compressed size, -1 if bigger */
--int jffs2_rtime_compress(unsigned char *data_in, unsigned char *cpage_out,
-- uint32_t *sourcelen, uint32_t *dstlen)
-+int rtime_compress(unsigned char *data_in, unsigned char *cpage_out,
-+ __u32 *sourcelen, __u32 *dstlen)
- {
- int positions[256];
- int outpos = 0;
-@@ -69,11 +89,10 @@
- *dstlen = outpos;
- return 0;
- }
--#endif
-
-
--void jffs2_rtime_decompress(unsigned char *data_in, unsigned char *cpage_out,
-- uint32_t srclen, uint32_t destlen)
-+void rtime_decompress(unsigned char *data_in, unsigned char *cpage_out,
-+ __u32 srclen, __u32 destlen)
- {
- int positions[256];
- int outpos = 0;
-diff -Nur linux/fs/jffs2/compr_rubin.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compr_rubin.c
---- linux/fs/jffs2/compr_rubin.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compr_rubin.c 2003-06-23 01:47:03.000000000 +0700
-@@ -1,13 +1,37 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by Arjan van de Ven <arjanv@redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: compr_rubin.c,v 1.17 2002/05/20 14:56:37 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: compr_rubin.c,v 1.13 2001/09/23 10:06:05 rmk Exp $
- *
- */
-
-@@ -19,7 +43,7 @@
-
-
-
--static void init_rubin(struct rubin_state *rs, int div, int *bits)
-+void init_rubin(struct rubin_state *rs, int div, int *bits)
- {
- int c;
-
-@@ -32,7 +56,7 @@
- }
-
-
--static int encode(struct rubin_state *rs, long A, long B, int symbol)
-+int encode(struct rubin_state *rs, long A, long B, int symbol)
- {
-
- long i0, i1;
-@@ -67,7 +91,7 @@
- }
-
-
--static void end_rubin(struct rubin_state *rs)
-+void end_rubin(struct rubin_state *rs)
- {
-
- int i;
-@@ -80,7 +104,7 @@
- }
-
-
--static void init_decode(struct rubin_state *rs, int div, int *bits)
-+void init_decode(struct rubin_state *rs, int div, int *bits)
- {
- init_rubin(rs, div, bits);
-
-@@ -127,7 +151,7 @@
- rs->rec_q = rec_q;
- }
-
--static int decode(struct rubin_state *rs, long A, long B)
-+int decode(struct rubin_state *rs, long A, long B)
- {
- unsigned long p = rs->p, q = rs->q;
- long i0, threshold;
-@@ -188,8 +212,8 @@
-
-
-
--static int rubin_do_compress(int bit_divider, int *bits, unsigned char *data_in,
-- unsigned char *cpage_out, uint32_t *sourcelen, uint32_t *dstlen)
-+int rubin_do_compress(int bit_divider, int *bits, unsigned char *data_in,
-+ unsigned char *cpage_out, __u32 *sourcelen, __u32 *dstlen)
- {
- int outpos = 0;
- int pos=0;
-@@ -222,20 +246,20 @@
- }
- #if 0
- /* _compress returns the compressed size, -1 if bigger */
--int jffs2_rubinmips_compress(unsigned char *data_in, unsigned char *cpage_out,
-- uint32_t *sourcelen, uint32_t *dstlen)
-+int rubinmips_compress(unsigned char *data_in, unsigned char *cpage_out,
-+ __u32 *sourcelen, __u32 *dstlen)
- {
- return rubin_do_compress(BIT_DIVIDER_MIPS, bits_mips, data_in, cpage_out, sourcelen, dstlen);
- }
- #endif
--int jffs2_dynrubin_compress(unsigned char *data_in, unsigned char *cpage_out,
-- uint32_t *sourcelen, uint32_t *dstlen)
-+int dynrubin_compress(unsigned char *data_in, unsigned char *cpage_out,
-+ __u32 *sourcelen, __u32 *dstlen)
- {
- int bits[8];
- unsigned char histo[256];
- int i;
- int ret;
-- uint32_t mysrclen, mydstlen;
-+ __u32 mysrclen, mydstlen;
-
- mysrclen = *sourcelen;
- mydstlen = *dstlen - 8;
-@@ -291,8 +315,8 @@
- return 0;
- }
-
--static void rubin_do_decompress(int bit_divider, int *bits, unsigned char *cdata_in,
-- unsigned char *page_out, uint32_t srclen, uint32_t destlen)
-+void rubin_do_decompress(int bit_divider, int *bits, unsigned char *cdata_in,
-+ unsigned char *page_out, __u32 srclen, __u32 destlen)
- {
- int outpos = 0;
- struct rubin_state rs;
-@@ -306,14 +330,14 @@
- }
-
-
--void jffs2_rubinmips_decompress(unsigned char *data_in, unsigned char *cpage_out,
-- uint32_t sourcelen, uint32_t dstlen)
-+void rubinmips_decompress(unsigned char *data_in, unsigned char *cpage_out,
-+ __u32 sourcelen, __u32 dstlen)
- {
- rubin_do_decompress(BIT_DIVIDER_MIPS, bits_mips, data_in, cpage_out, sourcelen, dstlen);
- }
-
--void jffs2_dynrubin_decompress(unsigned char *data_in, unsigned char *cpage_out,
-- uint32_t sourcelen, uint32_t dstlen)
-+void dynrubin_decompress(unsigned char *data_in, unsigned char *cpage_out,
-+ __u32 sourcelen, __u32 dstlen)
- {
- int bits[8];
- int c;
-diff -Nur linux/fs/jffs2/compr_rubin.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compr_rubin.h
---- linux/fs/jffs2/compr_rubin.h 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compr_rubin.h 2003-06-23 01:47:03.000000000 +0700
-@@ -1,7 +1,7 @@
- /* Rubin encoder/decoder header */
- /* work started at : aug 3, 1994 */
- /* last modification : aug 15, 1994 */
--/* $Id: compr_rubin.h,v 1.6 2002/01/25 01:49:26 dwmw2 Exp $ */
-+/* $Id: compr_rubin.h,v 1.5 2001/02/26 13:50:01 dwmw2 Exp $ */
-
- #include "pushpull.h"
-
-@@ -19,3 +19,10 @@
- int bit_divider;
- int bits[8];
- };
-+
-+
-+void init_rubin (struct rubin_state *rs, int div, int *bits);
-+int encode (struct rubin_state *, long, long, int);
-+void end_rubin (struct rubin_state *);
-+void init_decode (struct rubin_state *, int div, int *bits);
-+int decode (struct rubin_state *, long, long);
-diff -Nur linux/fs/jffs2/compr_zlib.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compr_zlib.c
---- linux/fs/jffs2/compr_zlib.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compr_zlib.c 2003-06-23 01:47:03.000000000 +0700
-@@ -1,28 +1,72 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: compr_zlib.c,v 1.18 2002/05/20 14:56:37 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: compr_zlib.c,v 1.8 2001/09/20 15:28:31 dwmw2 Exp $
- *
- */
-
--#ifndef __KERNEL__
--#error "The userspace support got too messy and was removed. Update your mkfs.jffs2"
--#endif
-+#include "zlib.h"
-
--#include <linux/config.h>
-+#ifdef __KERNEL__
- #include <linux/kernel.h>
- #include <linux/mtd/compatmac.h> /* for min() */
- #include <linux/slab.h>
- #include <linux/jffs2.h>
--#include <linux/zlib.h>
- #include "nodelist.h"
-
-+static void *zalloc(void *opaque, unsigned nr, unsigned size)
-+{
-+ /* How much does it request? Should we use vmalloc? Or be dynamic? */
-+ return kmalloc(nr * size, GFP_KERNEL);
-+}
-+
-+static void zfree(void *opaque, void *addr)
-+{
-+ kfree(addr);
-+}
-+#else
-+#define min(x,y) ((x)<(y)?(x):(y))
-+#ifndef D1
-+#define D1(x)
-+#endif
-+#define KERN_DEBUG
-+#define KERN_NOTICE
-+#define KERN_WARNING
-+#define printk printf
-+#include <stdio.h>
-+#include <asm/types.h>
-+#endif
-+
- /* Plan: call deflate() with avail_in == *sourcelen,
- avail_out = *dstlen - 12 and flush == Z_FINISH.
- If it doesn't manage to finish, call it again with
-@@ -32,37 +76,8 @@
- */
- #define STREAM_END_SPACE 12
-
--static DECLARE_MUTEX(deflate_sem);
--static DECLARE_MUTEX(inflate_sem);
--static void *deflate_workspace;
--static void *inflate_workspace;
--
--int __init jffs2_zlib_init(void)
--{
-- deflate_workspace = vmalloc(zlib_deflate_workspacesize());
-- if (!deflate_workspace) {
-- printk(KERN_WARNING "Failed to allocate %d bytes for deflate workspace\n", zlib_deflate_workspacesize());
-- return -ENOMEM;
-- }
-- D1(printk(KERN_DEBUG "Allocated %d bytes for deflate workspace\n", zlib_deflate_workspacesize()));
-- inflate_workspace = vmalloc(zlib_inflate_workspacesize());
-- if (!inflate_workspace) {
-- printk(KERN_WARNING "Failed to allocate %d bytes for inflate workspace\n", zlib_inflate_workspacesize());
-- vfree(deflate_workspace);
-- return -ENOMEM;
-- }
-- D1(printk(KERN_DEBUG "Allocated %d bytes for inflate workspace\n", zlib_inflate_workspacesize()));
-- return 0;
--}
--
--void jffs2_zlib_exit(void)
--{
-- vfree(deflate_workspace);
-- vfree(inflate_workspace);
--}
--
--int jffs2_zlib_compress(unsigned char *data_in, unsigned char *cpage_out,
-- uint32_t *sourcelen, uint32_t *dstlen)
-+int zlib_compress(unsigned char *data_in, unsigned char *cpage_out,
-+ __u32 *sourcelen, __u32 *dstlen)
- {
- z_stream strm;
- int ret;
-@@ -70,15 +85,18 @@
- if (*dstlen <= STREAM_END_SPACE)
- return -1;
-
-- down(&deflate_sem);
-- strm.workspace = deflate_workspace;
-+#ifdef __KERNEL__
-+ strm.zalloc = zalloc;
-+ strm.zfree = zfree;
-+#else
-+ strm.zalloc = (void *)0;
-+ strm.zfree = (void *)0;
-+#endif
-
-- if (Z_OK != zlib_deflateInit(&strm, 3)) {
-+ if (Z_OK != deflateInit(&strm, 3)) {
- printk(KERN_WARNING "deflateInit failed\n");
-- up(&deflate_sem);
- return -1;
- }
--
- strm.next_in = data_in;
- strm.total_in = 0;
-
-@@ -90,49 +108,52 @@
- strm.avail_in = min((unsigned)(*sourcelen-strm.total_in), strm.avail_out);
- D1(printk(KERN_DEBUG "calling deflate with avail_in %d, avail_out %d\n",
- strm.avail_in, strm.avail_out));
-- ret = zlib_deflate(&strm, Z_PARTIAL_FLUSH);
-+ ret = deflate(&strm, Z_PARTIAL_FLUSH);
- D1(printk(KERN_DEBUG "deflate returned with avail_in %d, avail_out %d, total_in %ld, total_out %ld\n",
- strm.avail_in, strm.avail_out, strm.total_in, strm.total_out));
- if (ret != Z_OK) {
- D1(printk(KERN_DEBUG "deflate in loop returned %d\n", ret));
-- zlib_deflateEnd(&strm);
-- up(&deflate_sem);
-+ deflateEnd(&strm);
- return -1;
- }
- }
- strm.avail_out += STREAM_END_SPACE;
- strm.avail_in = 0;
-- ret = zlib_deflate(&strm, Z_FINISH);
-- zlib_deflateEnd(&strm);
-- up(&deflate_sem);
-+ ret = deflate(&strm, Z_FINISH);
- if (ret != Z_STREAM_END) {
- D1(printk(KERN_DEBUG "final deflate returned %d\n", ret));
-+ deflateEnd(&strm);
- return -1;
- }
-+ deflateEnd(&strm);
-
-- D1(printk(KERN_DEBUG "zlib compressed %ld bytes into %ld\n",
-- strm.total_in, strm.total_out));
-+ D1(printk(KERN_DEBUG "zlib compressed %ld bytes into %ld\n", strm.total_in, strm.total_out));
-
- if (strm.total_out >= strm.total_in)
- return -1;
-
-+
- *dstlen = strm.total_out;
- *sourcelen = strm.total_in;
- return 0;
- }
-
--void jffs2_zlib_decompress(unsigned char *data_in, unsigned char *cpage_out,
-- uint32_t srclen, uint32_t destlen)
-+void zlib_decompress(unsigned char *data_in, unsigned char *cpage_out,
-+ __u32 srclen, __u32 destlen)
- {
- z_stream strm;
- int ret;
-
-- down(&inflate_sem);
-- strm.workspace = inflate_workspace;
-+#ifdef __KERNEL__
-+ strm.zalloc = zalloc;
-+ strm.zfree = zfree;
-+#else
-+ strm.zalloc = (void *)0;
-+ strm.zfree = (void *)0;
-+#endif
-
-- if (Z_OK != zlib_inflateInit(&strm)) {
-+ if (Z_OK != inflateInit(&strm)) {
- printk(KERN_WARNING "inflateInit failed\n");
-- up(&inflate_sem);
- return;
- }
- strm.next_in = data_in;
-@@ -143,11 +164,10 @@
- strm.avail_out = destlen;
- strm.total_out = 0;
-
-- while((ret = zlib_inflate(&strm, Z_FINISH)) == Z_OK)
-+ while((ret = inflate(&strm, Z_FINISH)) == Z_OK)
- ;
- if (ret != Z_STREAM_END) {
- printk(KERN_NOTICE "inflate returned %d\n", ret);
- }
-- zlib_inflateEnd(&strm);
-- up(&inflate_sem);
-+ inflateEnd(&strm);
- }
-diff -Nur linux/fs/jffs2/compressors/Makefile /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/Makefile
---- linux/fs/jffs2/compressors/Makefile 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/Makefile 1970-01-01 07:00:00.000000000 +0700
-@@ -1,8 +0,0 @@
--O_TARGET := compressors.o
--
--subdir-y := zlib_deflate
--subdir-y += zlib_inflate
--
--obj-y := $(join $(subdir-y),$(subdir-y:%=/%.o))
--
--include $(TOPDIR)/Rules.make
-diff -Nur linux/fs/jffs2/compressors/zlib_deflate/Makefile /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_deflate/Makefile
---- linux/fs/jffs2/compressors/zlib_deflate/Makefile 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_deflate/Makefile 1970-01-01 07:00:00.000000000 +0700
-@@ -1,16 +0,0 @@
--#
--# This is a modified version of zlib, which does all memory
--# allocation ahead of time.
--#
--# This is the compression code, see zlib_inflate for the
--# decompression code.
--#
--
--O_TARGET := zlib_deflate.o
--
--export-objs := deflate_syms.o
--
--obj-y := deflate.o deftree.o deflate_syms.o
--obj-m := $(O_TARGET)
--
--include $(TOPDIR)/Rules.make
-diff -Nur linux/fs/jffs2/compressors/zlib_deflate/deflate.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_deflate/deflate.c
---- linux/fs/jffs2/compressors/zlib_deflate/deflate.c 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_deflate/deflate.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,1250 +0,0 @@
--/* +++ deflate.c */
--/* deflate.c -- compress data using the deflation algorithm
-- * Copyright (C) 1995-1996 Jean-loup Gailly.
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--/*
-- * ALGORITHM
-- *
-- * The "deflation" process depends on being able to identify portions
-- * of the input text which are identical to earlier input (within a
-- * sliding window trailing behind the input currently being processed).
-- *
-- * The most straightforward technique turns out to be the fastest for
-- * most input files: try all possible matches and select the longest.
-- * The key feature of this algorithm is that insertions into the string
-- * dictionary are very simple and thus fast, and deletions are avoided
-- * completely. Insertions are performed at each input character, whereas
-- * string matches are performed only when the previous match ends. So it
-- * is preferable to spend more time in matches to allow very fast string
-- * insertions and avoid deletions. The matching algorithm for small
-- * strings is inspired from that of Rabin & Karp. A brute force approach
-- * is used to find longer strings when a small match has been found.
-- * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze
-- * (by Leonid Broukhis).
-- * A previous version of this file used a more sophisticated algorithm
-- * (by Fiala and Greene) which is guaranteed to run in linear amortized
-- * time, but has a larger average cost, uses more memory and is patented.
-- * However the F&G algorithm may be faster for some highly redundant
-- * files if the parameter max_chain_length (described below) is too large.
-- *
-- * ACKNOWLEDGEMENTS
-- *
-- * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and
-- * I found it in 'freeze' written by Leonid Broukhis.
-- * Thanks to many people for bug reports and testing.
-- *
-- * REFERENCES
-- *
-- * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification".
-- * Available in ftp://ds.internic.net/rfc/rfc1951.txt
-- *
-- * A description of the Rabin and Karp algorithm is given in the book
-- * "Algorithms" by R. Sedgewick, Addison-Wesley, p252.
-- *
-- * Fiala,E.R., and Greene,D.H.
-- * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595
-- *
-- */
--
--#include <linux/module.h>
--#include <linux/zutil.h>
--#include "defutil.h"
--
--
--/* ===========================================================================
-- * Function prototypes.
-- */
--typedef enum {
-- need_more, /* block not completed, need more input or more output */
-- block_done, /* block flush performed */
-- finish_started, /* finish started, need only more output at next deflate */
-- finish_done /* finish done, accept no more input or output */
--} block_state;
--
--typedef block_state (*compress_func) OF((deflate_state *s, int flush));
--/* Compression function. Returns the block state after the call. */
--
--local void fill_window OF((deflate_state *s));
--local block_state deflate_stored OF((deflate_state *s, int flush));
--local block_state deflate_fast OF((deflate_state *s, int flush));
--local block_state deflate_slow OF((deflate_state *s, int flush));
--local void lm_init OF((deflate_state *s));
--local void putShortMSB OF((deflate_state *s, uInt b));
--local void flush_pending OF((z_streamp strm));
--local int read_buf OF((z_streamp strm, Bytef *buf, unsigned size));
--local uInt longest_match OF((deflate_state *s, IPos cur_match));
--
--#ifdef DEBUG_ZLIB
--local void check_match OF((deflate_state *s, IPos start, IPos match,
-- int length));
--#endif
--
--/* ===========================================================================
-- * Local data
-- */
--
--#define NIL 0
--/* Tail of hash chains */
--
--#ifndef TOO_FAR
--# define TOO_FAR 4096
--#endif
--/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */
--
--#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
--/* Minimum amount of lookahead, except at the end of the input file.
-- * See deflate.c for comments about the MIN_MATCH+1.
-- */
--
--/* Values for max_lazy_match, good_match and max_chain_length, depending on
-- * the desired pack level (0..9). The values given below have been tuned to
-- * exclude worst case performance for pathological files. Better values may be
-- * found for specific files.
-- */
--typedef struct config_s {
-- ush good_length; /* reduce lazy search above this match length */
-- ush max_lazy; /* do not perform lazy search above this match length */
-- ush nice_length; /* quit search above this match length */
-- ush max_chain;
-- compress_func func;
--} config;
--
--local const config configuration_table[10] = {
--/* good lazy nice chain */
--/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */
--/* 1 */ {4, 4, 8, 4, deflate_fast}, /* maximum speed, no lazy matches */
--/* 2 */ {4, 5, 16, 8, deflate_fast},
--/* 3 */ {4, 6, 32, 32, deflate_fast},
--
--/* 4 */ {4, 4, 16, 16, deflate_slow}, /* lazy matches */
--/* 5 */ {8, 16, 32, 32, deflate_slow},
--/* 6 */ {8, 16, 128, 128, deflate_slow},
--/* 7 */ {8, 32, 128, 256, deflate_slow},
--/* 8 */ {32, 128, 258, 1024, deflate_slow},
--/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* maximum compression */
--
--/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4
-- * For deflate_fast() (levels <= 3) good is ignored and lazy has a different
-- * meaning.
-- */
--
--#define EQUAL 0
--/* result of memcmp for equal strings */
--
--/* ===========================================================================
-- * Update a hash value with the given input byte
-- * IN assertion: all calls to to UPDATE_HASH are made with consecutive
-- * input characters, so that a running hash key can be computed from the
-- * previous key instead of complete recalculation each time.
-- */
--#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
--
--
--/* ===========================================================================
-- * Insert string str in the dictionary and set match_head to the previous head
-- * of the hash chain (the most recent string with same hash key). Return
-- * the previous length of the hash chain.
-- * IN assertion: all calls to to INSERT_STRING are made with consecutive
-- * input characters and the first MIN_MATCH bytes of str are valid
-- * (except for the last MIN_MATCH-1 bytes of the input file).
-- */
--#define INSERT_STRING(s, str, match_head) \
-- (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
-- s->prev[(str) & s->w_mask] = match_head = s->head[s->ins_h], \
-- s->head[s->ins_h] = (Pos)(str))
--
--/* ===========================================================================
-- * Initialize the hash table (avoiding 64K overflow for 16 bit systems).
-- * prev[] will be initialized on the fly.
-- */
--#define CLEAR_HASH(s) \
-- s->head[s->hash_size-1] = NIL; \
-- memset((charf *)s->head, 0, (unsigned)(s->hash_size-1)*sizeof(*s->head));
--
--/* ========================================================================= */
--int zlib_deflateInit_(strm, level, version, stream_size)
-- z_streamp strm;
-- int level;
-- const char *version;
-- int stream_size;
--{
-- return zlib_deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS,
-- DEF_MEM_LEVEL,
-- Z_DEFAULT_STRATEGY, version, stream_size);
-- /* To do: ignore strm->next_in if we use it as window */
--}
--
--/* ========================================================================= */
--int zlib_deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
-- version, stream_size)
-- z_streamp strm;
-- int level;
-- int method;
-- int windowBits;
-- int memLevel;
-- int strategy;
-- const char *version;
-- int stream_size;
--{
-- deflate_state *s;
-- int noheader = 0;
-- static char* my_version = ZLIB_VERSION;
-- deflate_workspace *mem;
--
-- ushf *overlay;
-- /* We overlay pending_buf and d_buf+l_buf. This works since the average
-- * output size for (length,distance) codes is <= 24 bits.
-- */
--
-- if (version == Z_NULL || version[0] != my_version[0] ||
-- stream_size != sizeof(z_stream)) {
-- return Z_VERSION_ERROR;
-- }
-- if (strm == Z_NULL) return Z_STREAM_ERROR;
--
-- strm->msg = Z_NULL;
--
-- if (level == Z_DEFAULT_COMPRESSION) level = 6;
--
-- mem = (deflate_workspace *) strm->workspace;
--
-- if (windowBits < 0) { /* undocumented feature: suppress zlib header */
-- noheader = 1;
-- windowBits = -windowBits;
-- }
-- if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED ||
-- windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
-- strategy < 0 || strategy > Z_HUFFMAN_ONLY) {
-- return Z_STREAM_ERROR;
-- }
-- s = (deflate_state *) &(mem->deflate_memory);
-- strm->state = (struct internal_state FAR *)s;
-- s->strm = strm;
--
-- s->noheader = noheader;
-- s->w_bits = windowBits;
-- s->w_size = 1 << s->w_bits;
-- s->w_mask = s->w_size - 1;
--
-- s->hash_bits = memLevel + 7;
-- s->hash_size = 1 << s->hash_bits;
-- s->hash_mask = s->hash_size - 1;
-- s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
--
-- s->window = (Bytef *) mem->window_memory;
-- s->prev = (Posf *) mem->prev_memory;
-- s->head = (Posf *) mem->head_memory;
--
-- s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
--
-- overlay = (ushf *) mem->overlay_memory;
-- s->pending_buf = (uchf *) overlay;
-- s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
--
-- s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
-- s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
--
-- s->level = level;
-- s->strategy = strategy;
-- s->method = (Byte)method;
--
-- return zlib_deflateReset(strm);
--}
--
--/* ========================================================================= */
--int zlib_deflateSetDictionary (strm, dictionary, dictLength)
-- z_streamp strm;
-- const Bytef *dictionary;
-- uInt dictLength;
--{
-- deflate_state *s;
-- uInt length = dictLength;
-- uInt n;
-- IPos hash_head = 0;
--
-- if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL)
-- return Z_STREAM_ERROR;
--
-- s = (deflate_state *) strm->state;
-- if (s->status != INIT_STATE) return Z_STREAM_ERROR;
--
-- strm->adler = zlib_adler32(strm->adler, dictionary, dictLength);
--
-- if (length < MIN_MATCH) return Z_OK;
-- if (length > MAX_DIST(s)) {
-- length = MAX_DIST(s);
--#ifndef USE_DICT_HEAD
-- dictionary += dictLength - length; /* use the tail of the dictionary */
--#endif
-- }
-- memcpy((charf *)s->window, dictionary, length);
-- s->strstart = length;
-- s->block_start = (long)length;
--
-- /* Insert all strings in the hash table (except for the last two bytes).
-- * s->lookahead stays null, so s->ins_h will be recomputed at the next
-- * call of fill_window.
-- */
-- s->ins_h = s->window[0];
-- UPDATE_HASH(s, s->ins_h, s->window[1]);
-- for (n = 0; n <= length - MIN_MATCH; n++) {
-- INSERT_STRING(s, n, hash_head);
-- }
-- if (hash_head) hash_head = 0; /* to make compiler happy */
-- return Z_OK;
--}
--
--/* ========================================================================= */
--int zlib_deflateReset (strm)
-- z_streamp strm;
--{
-- deflate_state *s;
--
-- if (strm == Z_NULL || strm->state == Z_NULL)
-- return Z_STREAM_ERROR;
--
-- strm->total_in = strm->total_out = 0;
-- strm->msg = Z_NULL;
-- strm->data_type = Z_UNKNOWN;
--
-- s = (deflate_state *)strm->state;
-- s->pending = 0;
-- s->pending_out = s->pending_buf;
--
-- if (s->noheader < 0) {
-- s->noheader = 0; /* was set to -1 by deflate(..., Z_FINISH); */
-- }
-- s->status = s->noheader ? BUSY_STATE : INIT_STATE;
-- strm->adler = 1;
-- s->last_flush = Z_NO_FLUSH;
--
-- zlib_tr_init(s);
-- lm_init(s);
--
-- return Z_OK;
--}
--
--/* ========================================================================= */
--int zlib_deflateParams(strm, level, strategy)
-- z_streamp strm;
-- int level;
-- int strategy;
--{
-- deflate_state *s;
-- compress_func func;
-- int err = Z_OK;
--
-- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-- s = (deflate_state *) strm->state;
--
-- if (level == Z_DEFAULT_COMPRESSION) {
-- level = 6;
-- }
-- if (level < 0 || level > 9 || strategy < 0 || strategy > Z_HUFFMAN_ONLY) {
-- return Z_STREAM_ERROR;
-- }
-- func = configuration_table[s->level].func;
--
-- if (func != configuration_table[level].func && strm->total_in != 0) {
-- /* Flush the last buffer: */
-- err = zlib_deflate(strm, Z_PARTIAL_FLUSH);
-- }
-- if (s->level != level) {
-- s->level = level;
-- s->max_lazy_match = configuration_table[level].max_lazy;
-- s->good_match = configuration_table[level].good_length;
-- s->nice_match = configuration_table[level].nice_length;
-- s->max_chain_length = configuration_table[level].max_chain;
-- }
-- s->strategy = strategy;
-- return err;
--}
--
--/* =========================================================================
-- * Put a short in the pending buffer. The 16-bit value is put in MSB order.
-- * IN assertion: the stream state is correct and there is enough room in
-- * pending_buf.
-- */
--local void putShortMSB (s, b)
-- deflate_state *s;
-- uInt b;
--{
-- put_byte(s, (Byte)(b >> 8));
-- put_byte(s, (Byte)(b & 0xff));
--}
--
--/* =========================================================================
-- * Flush as much pending output as possible. All deflate() output goes
-- * through this function so some applications may wish to modify it
-- * to avoid allocating a large strm->next_out buffer and copying into it.
-- * (See also read_buf()).
-- */
--local void flush_pending(strm)
-- z_streamp strm;
--{
-- deflate_state *s = (deflate_state *) strm->state;
-- unsigned len = s->pending;
--
-- if (len > strm->avail_out) len = strm->avail_out;
-- if (len == 0) return;
--
-- if (strm->next_out != Z_NULL) {
-- memcpy(strm->next_out, s->pending_out, len);
-- strm->next_out += len;
-- }
-- s->pending_out += len;
-- strm->total_out += len;
-- strm->avail_out -= len;
-- s->pending -= len;
-- if (s->pending == 0) {
-- s->pending_out = s->pending_buf;
-- }
--}
--
--/* ========================================================================= */
--int zlib_deflate (strm, flush)
-- z_streamp strm;
-- int flush;
--{
-- int old_flush; /* value of flush param for previous deflate call */
-- deflate_state *s;
--
-- if (strm == Z_NULL || strm->state == Z_NULL ||
-- flush > Z_FINISH || flush < 0) {
-- return Z_STREAM_ERROR;
-- }
-- s = (deflate_state *) strm->state;
--
-- if ((strm->next_in == Z_NULL && strm->avail_in != 0) ||
-- (s->status == FINISH_STATE && flush != Z_FINISH)) {
-- return Z_STREAM_ERROR;
-- }
-- if (strm->avail_out == 0) return Z_BUF_ERROR;
--
-- s->strm = strm; /* just in case */
-- old_flush = s->last_flush;
-- s->last_flush = flush;
--
-- /* Write the zlib header */
-- if (s->status == INIT_STATE) {
--
-- uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
-- uInt level_flags = (s->level-1) >> 1;
--
-- if (level_flags > 3) level_flags = 3;
-- header |= (level_flags << 6);
-- if (s->strstart != 0) header |= PRESET_DICT;
-- header += 31 - (header % 31);
--
-- s->status = BUSY_STATE;
-- putShortMSB(s, header);
--
-- /* Save the adler32 of the preset dictionary: */
-- if (s->strstart != 0) {
-- putShortMSB(s, (uInt)(strm->adler >> 16));
-- putShortMSB(s, (uInt)(strm->adler & 0xffff));
-- }
-- strm->adler = 1L;
-- }
--
-- /* Flush as much pending output as possible */
-- if (s->pending != 0) {
-- flush_pending(strm);
-- if (strm->avail_out == 0) {
-- /* Since avail_out is 0, deflate will be called again with
-- * more output space, but possibly with both pending and
-- * avail_in equal to zero. There won't be anything to do,
-- * but this is not an error situation so make sure we
-- * return OK instead of BUF_ERROR at next call of deflate:
-- */
-- s->last_flush = -1;
-- return Z_OK;
-- }
--
-- /* Make sure there is something to do and avoid duplicate consecutive
-- * flushes. For repeated and useless calls with Z_FINISH, we keep
-- * returning Z_STREAM_END instead of Z_BUFF_ERROR.
-- */
-- } else if (strm->avail_in == 0 && flush <= old_flush &&
-- flush != Z_FINISH) {
-- return Z_BUF_ERROR;
-- }
--
-- /* User must not provide more input after the first FINISH: */
-- if (s->status == FINISH_STATE && strm->avail_in != 0) {
-- return Z_BUF_ERROR;
-- }
--
-- /* Start a new block or continue the current one.
-- */
-- if (strm->avail_in != 0 || s->lookahead != 0 ||
-- (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
-- block_state bstate;
--
-- bstate = (*(configuration_table[s->level].func))(s, flush);
--
-- if (bstate == finish_started || bstate == finish_done) {
-- s->status = FINISH_STATE;
-- }
-- if (bstate == need_more || bstate == finish_started) {
-- if (strm->avail_out == 0) {
-- s->last_flush = -1; /* avoid BUF_ERROR next call, see above */
-- }
-- return Z_OK;
-- /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
-- * of deflate should use the same flush parameter to make sure
-- * that the flush is complete. So we don't have to output an
-- * empty block here, this will be done at next call. This also
-- * ensures that for a very small output buffer, we emit at most
-- * one empty block.
-- */
-- }
-- if (bstate == block_done) {
-- if (flush == Z_PARTIAL_FLUSH) {
-- zlib_tr_align(s);
-- } else if (flush == Z_PACKET_FLUSH) {
-- /* Output just the 3-bit `stored' block type value,
-- but not a zero length. */
-- zlib_tr_stored_type_only(s);
-- } else { /* FULL_FLUSH or SYNC_FLUSH */
-- zlib_tr_stored_block(s, (char*)0, 0L, 0);
-- /* For a full flush, this empty block will be recognized
-- * as a special marker by inflate_sync().
-- */
-- if (flush == Z_FULL_FLUSH) {
-- CLEAR_HASH(s); /* forget history */
-- }
-- }
-- flush_pending(strm);
-- if (strm->avail_out == 0) {
-- s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */
-- return Z_OK;
-- }
-- }
-- }
-- Assert(strm->avail_out > 0, "bug2");
--
-- if (flush != Z_FINISH) return Z_OK;
-- if (s->noheader) return Z_STREAM_END;
--
-- /* Write the zlib trailer (adler32) */
-- putShortMSB(s, (uInt)(strm->adler >> 16));
-- putShortMSB(s, (uInt)(strm->adler & 0xffff));
-- flush_pending(strm);
-- /* If avail_out is zero, the application will call deflate again
-- * to flush the rest.
-- */
-- s->noheader = -1; /* write the trailer only once! */
-- return s->pending != 0 ? Z_OK : Z_STREAM_END;
--}
--
--/* ========================================================================= */
--int zlib_deflateEnd (strm)
-- z_streamp strm;
--{
-- int status;
-- deflate_state *s;
--
-- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-- s = (deflate_state *) strm->state;
--
-- status = s->status;
-- if (status != INIT_STATE && status != BUSY_STATE &&
-- status != FINISH_STATE) {
-- return Z_STREAM_ERROR;
-- }
--
-- strm->state = Z_NULL;
--
-- return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK;
--}
--
--/* =========================================================================
-- * Copy the source state to the destination state.
-- */
--int zlib_deflateCopy (dest, source)
-- z_streamp dest;
-- z_streamp source;
--{
--#ifdef MAXSEG_64K
-- return Z_STREAM_ERROR;
--#else
-- deflate_state *ds;
-- deflate_state *ss;
-- ushf *overlay;
-- deflate_workspace *mem;
--
--
-- if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) {
-- return Z_STREAM_ERROR;
-- }
--
-- ss = (deflate_state *) source->state;
--
-- *dest = *source;
--
-- mem = (deflate_workspace *) dest->workspace;
--
-- ds = &(mem->deflate_memory);
--
-- dest->state = (struct internal_state FAR *) ds;
-- *ds = *ss;
-- ds->strm = dest;
--
-- ds->window = (Bytef *) mem->window_memory;
-- ds->prev = (Posf *) mem->prev_memory;
-- ds->head = (Posf *) mem->head_memory;
-- overlay = (ushf *) mem->overlay_memory;
-- ds->pending_buf = (uchf *) overlay;
--
-- memcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte));
-- memcpy(ds->prev, ss->prev, ds->w_size * sizeof(Pos));
-- memcpy(ds->head, ss->head, ds->hash_size * sizeof(Pos));
-- memcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
--
-- ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
-- ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
-- ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
--
-- ds->l_desc.dyn_tree = ds->dyn_ltree;
-- ds->d_desc.dyn_tree = ds->dyn_dtree;
-- ds->bl_desc.dyn_tree = ds->bl_tree;
--
-- return Z_OK;
--#endif
--}
--
--/* ===========================================================================
-- * Read a new buffer from the current input stream, update the adler32
-- * and total number of bytes read. All deflate() input goes through
-- * this function so some applications may wish to modify it to avoid
-- * allocating a large strm->next_in buffer and copying from it.
-- * (See also flush_pending()).
-- */
--local int read_buf(strm, buf, size)
-- z_streamp strm;
-- Bytef *buf;
-- unsigned size;
--{
-- unsigned len = strm->avail_in;
--
-- if (len > size) len = size;
-- if (len == 0) return 0;
--
-- strm->avail_in -= len;
--
-- if (!((deflate_state *)(strm->state))->noheader) {
-- strm->adler = zlib_adler32(strm->adler, strm->next_in, len);
-- }
-- memcpy(buf, strm->next_in, len);
-- strm->next_in += len;
-- strm->total_in += len;
--
-- return (int)len;
--}
--
--/* ===========================================================================
-- * Initialize the "longest match" routines for a new zlib stream
-- */
--local void lm_init (s)
-- deflate_state *s;
--{
-- s->window_size = (ulg)2L*s->w_size;
--
-- CLEAR_HASH(s);
--
-- /* Set the default configuration parameters:
-- */
-- s->max_lazy_match = configuration_table[s->level].max_lazy;
-- s->good_match = configuration_table[s->level].good_length;
-- s->nice_match = configuration_table[s->level].nice_length;
-- s->max_chain_length = configuration_table[s->level].max_chain;
--
-- s->strstart = 0;
-- s->block_start = 0L;
-- s->lookahead = 0;
-- s->match_length = s->prev_length = MIN_MATCH-1;
-- s->match_available = 0;
-- s->ins_h = 0;
--}
--
--/* ===========================================================================
-- * Set match_start to the longest match starting at the given string and
-- * return its length. Matches shorter or equal to prev_length are discarded,
-- * in which case the result is equal to prev_length and match_start is
-- * garbage.
-- * IN assertions: cur_match is the head of the hash chain for the current
-- * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
-- * OUT assertion: the match length is not greater than s->lookahead.
-- */
--/* For 80x86 and 680x0, an optimized version will be provided in match.asm or
-- * match.S. The code will be functionally equivalent.
-- */
--local uInt longest_match(s, cur_match)
-- deflate_state *s;
-- IPos cur_match; /* current match */
--{
-- unsigned chain_length = s->max_chain_length;/* max hash chain length */
-- register Bytef *scan = s->window + s->strstart; /* current string */
-- register Bytef *match; /* matched string */
-- register int len; /* length of current match */
-- int best_len = s->prev_length; /* best match length so far */
-- int nice_match = s->nice_match; /* stop if match long enough */
-- IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
-- s->strstart - (IPos)MAX_DIST(s) : NIL;
-- /* Stop when cur_match becomes <= limit. To simplify the code,
-- * we prevent matches with the string of window index 0.
-- */
-- Posf *prev = s->prev;
-- uInt wmask = s->w_mask;
--
--#ifdef UNALIGNED_OK
-- /* Compare two bytes at a time. Note: this is not always beneficial.
-- * Try with and without -DUNALIGNED_OK to check.
-- */
-- register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1;
-- register ush scan_start = *(ushf*)scan;
-- register ush scan_end = *(ushf*)(scan+best_len-1);
--#else
-- register Bytef *strend = s->window + s->strstart + MAX_MATCH;
-- register Byte scan_end1 = scan[best_len-1];
-- register Byte scan_end = scan[best_len];
--#endif
--
-- /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
-- * It is easy to get rid of this optimization if necessary.
-- */
-- Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
--
-- /* Do not waste too much time if we already have a good match: */
-- if (s->prev_length >= s->good_match) {
-- chain_length >>= 2;
-- }
-- /* Do not look for matches beyond the end of the input. This is necessary
-- * to make deflate deterministic.
-- */
-- if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
--
-- Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
--
-- do {
-- Assert(cur_match < s->strstart, "no future");
-- match = s->window + cur_match;
--
-- /* Skip to next match if the match length cannot increase
-- * or if the match length is less than 2:
-- */
--#if (defined(UNALIGNED_OK) && MAX_MATCH == 258)
-- /* This code assumes sizeof(unsigned short) == 2. Do not use
-- * UNALIGNED_OK if your compiler uses a different size.
-- */
-- if (*(ushf*)(match+best_len-1) != scan_end ||
-- *(ushf*)match != scan_start) continue;
--
-- /* It is not necessary to compare scan[2] and match[2] since they are
-- * always equal when the other bytes match, given that the hash keys
-- * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at
-- * strstart+3, +5, ... up to strstart+257. We check for insufficient
-- * lookahead only every 4th comparison; the 128th check will be made
-- * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is
-- * necessary to put more guard bytes at the end of the window, or
-- * to check more often for insufficient lookahead.
-- */
-- Assert(scan[2] == match[2], "scan[2]?");
-- scan++, match++;
-- do {
-- } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-- scan < strend);
-- /* The funny "do {}" generates better code on most compilers */
--
-- /* Here, scan <= window+strstart+257 */
-- Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
-- if (*scan == *match) scan++;
--
-- len = (MAX_MATCH - 1) - (int)(strend-scan);
-- scan = strend - (MAX_MATCH-1);
--
--#else /* UNALIGNED_OK */
--
-- if (match[best_len] != scan_end ||
-- match[best_len-1] != scan_end1 ||
-- *match != *scan ||
-- *++match != scan[1]) continue;
--
-- /* The check at best_len-1 can be removed because it will be made
-- * again later. (This heuristic is not always a win.)
-- * It is not necessary to compare scan[2] and match[2] since they
-- * are always equal when the other bytes match, given that
-- * the hash keys are equal and that HASH_BITS >= 8.
-- */
-- scan += 2, match++;
-- Assert(*scan == *match, "match[2]?");
--
-- /* We check for insufficient lookahead only every 8th comparison;
-- * the 256th check will be made at strstart+258.
-- */
-- do {
-- } while (*++scan == *++match && *++scan == *++match &&
-- *++scan == *++match && *++scan == *++match &&
-- *++scan == *++match && *++scan == *++match &&
-- *++scan == *++match && *++scan == *++match &&
-- scan < strend);
--
-- Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
--
-- len = MAX_MATCH - (int)(strend - scan);
-- scan = strend - MAX_MATCH;
--
--#endif /* UNALIGNED_OK */
--
-- if (len > best_len) {
-- s->match_start = cur_match;
-- best_len = len;
-- if (len >= nice_match) break;
--#ifdef UNALIGNED_OK
-- scan_end = *(ushf*)(scan+best_len-1);
--#else
-- scan_end1 = scan[best_len-1];
-- scan_end = scan[best_len];
--#endif
-- }
-- } while ((cur_match = prev[cur_match & wmask]) > limit
-- && --chain_length != 0);
--
-- if ((uInt)best_len <= s->lookahead) return best_len;
-- return s->lookahead;
--}
--
--#ifdef DEBUG_ZLIB
--/* ===========================================================================
-- * Check that the match at match_start is indeed a match.
-- */
--local void check_match(s, start, match, length)
-- deflate_state *s;
-- IPos start, match;
-- int length;
--{
-- /* check that the match is indeed a match */
-- if (memcmp((charf *)s->window + match,
-- (charf *)s->window + start, length) != EQUAL) {
-- fprintf(stderr, " start %u, match %u, length %d\n",
-- start, match, length);
-- do {
-- fprintf(stderr, "%c%c", s->window[match++], s->window[start++]);
-- } while (--length != 0);
-- z_error("invalid match");
-- }
-- if (z_verbose > 1) {
-- fprintf(stderr,"\\[%d,%d]", start-match, length);
-- do { putc(s->window[start++], stderr); } while (--length != 0);
-- }
--}
--#else
--# define check_match(s, start, match, length)
--#endif
--
--/* ===========================================================================
-- * Fill the window when the lookahead becomes insufficient.
-- * Updates strstart and lookahead.
-- *
-- * IN assertion: lookahead < MIN_LOOKAHEAD
-- * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
-- * At least one byte has been read, or avail_in == 0; reads are
-- * performed for at least two bytes (required for the zip translate_eol
-- * option -- not supported here).
-- */
--local void fill_window(s)
-- deflate_state *s;
--{
-- register unsigned n, m;
-- register Posf *p;
-- unsigned more; /* Amount of free space at the end of the window. */
-- uInt wsize = s->w_size;
--
-- do {
-- more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
--
-- /* Deal with !@#$% 64K limit: */
-- if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
-- more = wsize;
--
-- } else if (more == (unsigned)(-1)) {
-- /* Very unlikely, but possible on 16 bit machine if strstart == 0
-- * and lookahead == 1 (input done one byte at time)
-- */
-- more--;
--
-- /* If the window is almost full and there is insufficient lookahead,
-- * move the upper half to the lower one to make room in the upper half.
-- */
-- } else if (s->strstart >= wsize+MAX_DIST(s)) {
--
-- memcpy((charf *)s->window, (charf *)s->window+wsize,
-- (unsigned)wsize);
-- s->match_start -= wsize;
-- s->strstart -= wsize; /* we now have strstart >= MAX_DIST */
-- s->block_start -= (long) wsize;
--
-- /* Slide the hash table (could be avoided with 32 bit values
-- at the expense of memory usage). We slide even when level == 0
-- to keep the hash table consistent if we switch back to level > 0
-- later. (Using level 0 permanently is not an optimal usage of
-- zlib, so we don't care about this pathological case.)
-- */
-- n = s->hash_size;
-- p = &s->head[n];
-- do {
-- m = *--p;
-- *p = (Pos)(m >= wsize ? m-wsize : NIL);
-- } while (--n);
--
-- n = wsize;
-- p = &s->prev[n];
-- do {
-- m = *--p;
-- *p = (Pos)(m >= wsize ? m-wsize : NIL);
-- /* If n is not on any hash chain, prev[n] is garbage but
-- * its value will never be used.
-- */
-- } while (--n);
-- more += wsize;
-- }
-- if (s->strm->avail_in == 0) return;
--
-- /* If there was no sliding:
-- * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
-- * more == window_size - lookahead - strstart
-- * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
-- * => more >= window_size - 2*WSIZE + 2
-- * In the BIG_MEM or MMAP case (not yet supported),
-- * window_size == input_size + MIN_LOOKAHEAD &&
-- * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
-- * Otherwise, window_size == 2*WSIZE so more >= 2.
-- * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
-- */
-- Assert(more >= 2, "more < 2");
--
-- n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more);
-- s->lookahead += n;
--
-- /* Initialize the hash value now that we have some input: */
-- if (s->lookahead >= MIN_MATCH) {
-- s->ins_h = s->window[s->strstart];
-- UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
--#if MIN_MATCH != 3
-- Call UPDATE_HASH() MIN_MATCH-3 more times
--#endif
-- }
-- /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
-- * but this is not important since only literal bytes will be emitted.
-- */
--
-- } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
--}
--
--/* ===========================================================================
-- * Flush the current block, with given end-of-file flag.
-- * IN assertion: strstart is set to the end of the current match.
-- */
--#define FLUSH_BLOCK_ONLY(s, eof) { \
-- zlib_tr_flush_block(s, (s->block_start >= 0L ? \
-- (charf *)&s->window[(unsigned)s->block_start] : \
-- (charf *)Z_NULL), \
-- (ulg)((long)s->strstart - s->block_start), \
-- (eof)); \
-- s->block_start = s->strstart; \
-- flush_pending(s->strm); \
-- Tracev((stderr,"[FLUSH]")); \
--}
--
--/* Same but force premature exit if necessary. */
--#define FLUSH_BLOCK(s, eof) { \
-- FLUSH_BLOCK_ONLY(s, eof); \
-- if (s->strm->avail_out == 0) return (eof) ? finish_started : need_more; \
--}
--
--/* ===========================================================================
-- * Copy without compression as much as possible from the input stream, return
-- * the current block state.
-- * This function does not insert new strings in the dictionary since
-- * uncompressible data is probably not useful. This function is used
-- * only for the level=0 compression option.
-- * NOTE: this function should be optimized to avoid extra copying from
-- * window to pending_buf.
-- */
--local block_state deflate_stored(s, flush)
-- deflate_state *s;
-- int flush;
--{
-- /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
-- * to pending_buf_size, and each stored block has a 5 byte header:
-- */
-- ulg max_block_size = 0xffff;
-- ulg max_start;
--
-- if (max_block_size > s->pending_buf_size - 5) {
-- max_block_size = s->pending_buf_size - 5;
-- }
--
-- /* Copy as much as possible from input to output: */
-- for (;;) {
-- /* Fill the window as much as possible: */
-- if (s->lookahead <= 1) {
--
-- Assert(s->strstart < s->w_size+MAX_DIST(s) ||
-- s->block_start >= (long)s->w_size, "slide too late");
--
-- fill_window(s);
-- if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more;
--
-- if (s->lookahead == 0) break; /* flush the current block */
-- }
-- Assert(s->block_start >= 0L, "block gone");
--
-- s->strstart += s->lookahead;
-- s->lookahead = 0;
--
-- /* Emit a stored block if pending_buf will be full: */
-- max_start = s->block_start + max_block_size;
-- if (s->strstart == 0 || (ulg)s->strstart >= max_start) {
-- /* strstart == 0 is possible when wraparound on 16-bit machine */
-- s->lookahead = (uInt)(s->strstart - max_start);
-- s->strstart = (uInt)max_start;
-- FLUSH_BLOCK(s, 0);
-- }
-- /* Flush if we may have to slide, otherwise block_start may become
-- * negative and the data will be gone:
-- */
-- if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) {
-- FLUSH_BLOCK(s, 0);
-- }
-- }
-- FLUSH_BLOCK(s, flush == Z_FINISH);
-- return flush == Z_FINISH ? finish_done : block_done;
--}
--
--/* ===========================================================================
-- * Compress as much as possible from the input stream, return the current
-- * block state.
-- * This function does not perform lazy evaluation of matches and inserts
-- * new strings in the dictionary only for unmatched strings or for short
-- * matches. It is used only for the fast compression options.
-- */
--local block_state deflate_fast(s, flush)
-- deflate_state *s;
-- int flush;
--{
-- IPos hash_head = NIL; /* head of the hash chain */
-- int bflush; /* set if current block must be flushed */
--
-- for (;;) {
-- /* Make sure that we always have enough lookahead, except
-- * at the end of the input file. We need MAX_MATCH bytes
-- * for the next match, plus MIN_MATCH bytes to insert the
-- * string following the next match.
-- */
-- if (s->lookahead < MIN_LOOKAHEAD) {
-- fill_window(s);
-- if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
-- return need_more;
-- }
-- if (s->lookahead == 0) break; /* flush the current block */
-- }
--
-- /* Insert the string window[strstart .. strstart+2] in the
-- * dictionary, and set hash_head to the head of the hash chain:
-- */
-- if (s->lookahead >= MIN_MATCH) {
-- INSERT_STRING(s, s->strstart, hash_head);
-- }
--
-- /* Find the longest match, discarding those <= prev_length.
-- * At this point we have always match_length < MIN_MATCH
-- */
-- if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) {
-- /* To simplify the code, we prevent matches with the string
-- * of window index 0 (in particular we have to avoid a match
-- * of the string with itself at the start of the input file).
-- */
-- if (s->strategy != Z_HUFFMAN_ONLY) {
-- s->match_length = longest_match (s, hash_head);
-- }
-- /* longest_match() sets match_start */
-- }
-- if (s->match_length >= MIN_MATCH) {
-- check_match(s, s->strstart, s->match_start, s->match_length);
--
-- bflush = zlib_tr_tally(s, s->strstart - s->match_start,
-- s->match_length - MIN_MATCH);
--
-- s->lookahead -= s->match_length;
--
-- /* Insert new strings in the hash table only if the match length
-- * is not too large. This saves time but degrades compression.
-- */
-- if (s->match_length <= s->max_insert_length &&
-- s->lookahead >= MIN_MATCH) {
-- s->match_length--; /* string at strstart already in hash table */
-- do {
-- s->strstart++;
-- INSERT_STRING(s, s->strstart, hash_head);
-- /* strstart never exceeds WSIZE-MAX_MATCH, so there are
-- * always MIN_MATCH bytes ahead.
-- */
-- } while (--s->match_length != 0);
-- s->strstart++;
-- } else {
-- s->strstart += s->match_length;
-- s->match_length = 0;
-- s->ins_h = s->window[s->strstart];
-- UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
--#if MIN_MATCH != 3
-- Call UPDATE_HASH() MIN_MATCH-3 more times
--#endif
-- /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
-- * matter since it will be recomputed at next deflate call.
-- */
-- }
-- } else {
-- /* No match, output a literal byte */
-- Tracevv((stderr,"%c", s->window[s->strstart]));
-- bflush = zlib_tr_tally (s, 0, s->window[s->strstart]);
-- s->lookahead--;
-- s->strstart++;
-- }
-- if (bflush) FLUSH_BLOCK(s, 0);
-- }
-- FLUSH_BLOCK(s, flush == Z_FINISH);
-- return flush == Z_FINISH ? finish_done : block_done;
--}
--
--/* ===========================================================================
-- * Same as above, but achieves better compression. We use a lazy
-- * evaluation for matches: a match is finally adopted only if there is
-- * no better match at the next window position.
-- */
--local block_state deflate_slow(s, flush)
-- deflate_state *s;
-- int flush;
--{
-- IPos hash_head = NIL; /* head of hash chain */
-- int bflush; /* set if current block must be flushed */
--
-- /* Process the input block. */
-- for (;;) {
-- /* Make sure that we always have enough lookahead, except
-- * at the end of the input file. We need MAX_MATCH bytes
-- * for the next match, plus MIN_MATCH bytes to insert the
-- * string following the next match.
-- */
-- if (s->lookahead < MIN_LOOKAHEAD) {
-- fill_window(s);
-- if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
-- return need_more;
-- }
-- if (s->lookahead == 0) break; /* flush the current block */
-- }
--
-- /* Insert the string window[strstart .. strstart+2] in the
-- * dictionary, and set hash_head to the head of the hash chain:
-- */
-- if (s->lookahead >= MIN_MATCH) {
-- INSERT_STRING(s, s->strstart, hash_head);
-- }
--
-- /* Find the longest match, discarding those <= prev_length.
-- */
-- s->prev_length = s->match_length, s->prev_match = s->match_start;
-- s->match_length = MIN_MATCH-1;
--
-- if (hash_head != NIL && s->prev_length < s->max_lazy_match &&
-- s->strstart - hash_head <= MAX_DIST(s)) {
-- /* To simplify the code, we prevent matches with the string
-- * of window index 0 (in particular we have to avoid a match
-- * of the string with itself at the start of the input file).
-- */
-- if (s->strategy != Z_HUFFMAN_ONLY) {
-- s->match_length = longest_match (s, hash_head);
-- }
-- /* longest_match() sets match_start */
--
-- if (s->match_length <= 5 && (s->strategy == Z_FILTERED ||
-- (s->match_length == MIN_MATCH &&
-- s->strstart - s->match_start > TOO_FAR))) {
--
-- /* If prev_match is also MIN_MATCH, match_start is garbage
-- * but we will ignore the current match anyway.
-- */
-- s->match_length = MIN_MATCH-1;
-- }
-- }
-- /* If there was a match at the previous step and the current
-- * match is not better, output the previous match:
-- */
-- if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) {
-- uInt max_insert = s->strstart + s->lookahead - MIN_MATCH;
-- /* Do not insert strings in hash table beyond this. */
--
-- check_match(s, s->strstart-1, s->prev_match, s->prev_length);
--
-- bflush = zlib_tr_tally(s, s->strstart -1 - s->prev_match,
-- s->prev_length - MIN_MATCH);
--
-- /* Insert in hash table all strings up to the end of the match.
-- * strstart-1 and strstart are already inserted. If there is not
-- * enough lookahead, the last two strings are not inserted in
-- * the hash table.
-- */
-- s->lookahead -= s->prev_length-1;
-- s->prev_length -= 2;
-- do {
-- if (++s->strstart <= max_insert) {
-- INSERT_STRING(s, s->strstart, hash_head);
-- }
-- } while (--s->prev_length != 0);
-- s->match_available = 0;
-- s->match_length = MIN_MATCH-1;
-- s->strstart++;
--
-- if (bflush) FLUSH_BLOCK(s, 0);
--
-- } else if (s->match_available) {
-- /* If there was no match at the previous position, output a
-- * single literal. If there was a match but the current match
-- * is longer, truncate the previous match to a single literal.
-- */
-- Tracevv((stderr,"%c", s->window[s->strstart-1]));
-- if (zlib_tr_tally (s, 0, s->window[s->strstart-1])) {
-- FLUSH_BLOCK_ONLY(s, 0);
-- }
-- s->strstart++;
-- s->lookahead--;
-- if (s->strm->avail_out == 0) return need_more;
-- } else {
-- /* There is no previous match to compare with, wait for
-- * the next step to decide.
-- */
-- s->match_available = 1;
-- s->strstart++;
-- s->lookahead--;
-- }
-- }
-- Assert (flush != Z_NO_FLUSH, "no flush?");
-- if (s->match_available) {
-- Tracevv((stderr,"%c", s->window[s->strstart-1]));
-- zlib_tr_tally (s, 0, s->window[s->strstart-1]);
-- s->match_available = 0;
-- }
-- FLUSH_BLOCK(s, flush == Z_FINISH);
-- return flush == Z_FINISH ? finish_done : block_done;
--}
--
--ZEXTERN int ZEXPORT zlib_deflate_workspacesize ()
--{
-- return sizeof(deflate_workspace);
--}
-diff -Nur linux/fs/jffs2/compressors/zlib_deflate/deflate_syms.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_deflate/deflate_syms.c
---- linux/fs/jffs2/compressors/zlib_deflate/deflate_syms.c 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_deflate/deflate_syms.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,21 +0,0 @@
--/*
-- * linux/lib/zlib_deflate/deflate_syms.c
-- *
-- * Exported symbols for the deflate functionality.
-- *
-- */
--
--#include <linux/module.h>
--#include <linux/init.h>
--
--#include <linux/zlib.h>
--
--EXPORT_SYMBOL(zlib_deflate_workspacesize);
--EXPORT_SYMBOL(zlib_deflate);
--EXPORT_SYMBOL(zlib_deflateInit_);
--EXPORT_SYMBOL(zlib_deflateInit2_);
--EXPORT_SYMBOL(zlib_deflateEnd);
--EXPORT_SYMBOL(zlib_deflateReset);
--EXPORT_SYMBOL(zlib_deflateCopy);
--EXPORT_SYMBOL(zlib_deflateParams);
--MODULE_LICENSE("GPL");
-diff -Nur linux/fs/jffs2/compressors/zlib_deflate/deftree.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_deflate/deftree.c
---- linux/fs/jffs2/compressors/zlib_deflate/deftree.c 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_deflate/deftree.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,1096 +0,0 @@
--/* +++ trees.c */
--/* trees.c -- output deflated data using Huffman coding
-- * Copyright (C) 1995-1996 Jean-loup Gailly
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--/*
-- * ALGORITHM
-- *
-- * The "deflation" process uses several Huffman trees. The more
-- * common source values are represented by shorter bit sequences.
-- *
-- * Each code tree is stored in a compressed form which is itself
-- * a Huffman encoding of the lengths of all the code strings (in
-- * ascending order by source values). The actual code strings are
-- * reconstructed from the lengths in the inflate process, as described
-- * in the deflate specification.
-- *
-- * REFERENCES
-- *
-- * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification".
-- * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc
-- *
-- * Storer, James A.
-- * Data Compression: Methods and Theory, pp. 49-50.
-- * Computer Science Press, 1988. ISBN 0-7167-8156-5.
-- *
-- * Sedgewick, R.
-- * Algorithms, p290.
-- * Addison-Wesley, 1983. ISBN 0-201-06672-6.
-- */
--
--/* From: trees.c,v 1.11 1996/07/24 13:41:06 me Exp $ */
--
--/* #include "deflate.h" */
--
--#include <linux/zutil.h>
--#include "defutil.h"
--
--#ifdef DEBUG_ZLIB
--# include <ctype.h>
--#endif
--
--/* ===========================================================================
-- * Constants
-- */
--
--#define MAX_BL_BITS 7
--/* Bit length codes must not exceed MAX_BL_BITS bits */
--
--#define END_BLOCK 256
--/* end of block literal code */
--
--#define REP_3_6 16
--/* repeat previous bit length 3-6 times (2 bits of repeat count) */
--
--#define REPZ_3_10 17
--/* repeat a zero length 3-10 times (3 bits of repeat count) */
--
--#define REPZ_11_138 18
--/* repeat a zero length 11-138 times (7 bits of repeat count) */
--
--local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */
-- = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0};
--
--local const int extra_dbits[D_CODES] /* extra bits for each distance code */
-- = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};
--
--local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */
-- = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7};
--
--local const uch bl_order[BL_CODES]
-- = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15};
--/* The lengths of the bit length codes are sent in order of decreasing
-- * probability, to avoid transmitting the lengths for unused bit length codes.
-- */
--
--#define Buf_size (8 * 2*sizeof(char))
--/* Number of bits used within bi_buf. (bi_buf might be implemented on
-- * more than 16 bits on some systems.)
-- */
--
--/* ===========================================================================
-- * Local data. These are initialized only once.
-- */
--
--local ct_data static_ltree[L_CODES+2];
--/* The static literal tree. Since the bit lengths are imposed, there is no
-- * need for the L_CODES extra codes used during heap construction. However
-- * The codes 286 and 287 are needed to build a canonical tree (see zlib_tr_init
-- * below).
-- */
--
--local ct_data static_dtree[D_CODES];
--/* The static distance tree. (Actually a trivial tree since all codes use
-- * 5 bits.)
-- */
--
--local uch dist_code[512];
--/* distance codes. The first 256 values correspond to the distances
-- * 3 .. 258, the last 256 values correspond to the top 8 bits of
-- * the 15 bit distances.
-- */
--
--local uch length_code[MAX_MATCH-MIN_MATCH+1];
--/* length code for each normalized match length (0 == MIN_MATCH) */
--
--local int base_length[LENGTH_CODES];
--/* First normalized length for each code (0 = MIN_MATCH) */
--
--local int base_dist[D_CODES];
--/* First normalized distance for each code (0 = distance of 1) */
--
--struct static_tree_desc_s {
-- const ct_data *static_tree; /* static tree or NULL */
-- const intf *extra_bits; /* extra bits for each code or NULL */
-- int extra_base; /* base index for extra_bits */
-- int elems; /* max number of elements in the tree */
-- int max_length; /* max bit length for the codes */
--};
--
--local static_tree_desc static_l_desc =
--{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS};
--
--local static_tree_desc static_d_desc =
--{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS};
--
--local static_tree_desc static_bl_desc =
--{(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS};
--
--/* ===========================================================================
-- * Local (static) routines in this file.
-- */
--
--local void tr_static_init OF((void));
--local void init_block OF((deflate_state *s));
--local void pqdownheap OF((deflate_state *s, ct_data *tree, int k));
--local void gen_bitlen OF((deflate_state *s, tree_desc *desc));
--local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count));
--local void build_tree OF((deflate_state *s, tree_desc *desc));
--local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code));
--local void send_tree OF((deflate_state *s, ct_data *tree, int max_code));
--local int build_bl_tree OF((deflate_state *s));
--local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
-- int blcodes));
--local void compress_block OF((deflate_state *s, ct_data *ltree,
-- ct_data *dtree));
--local void set_data_type OF((deflate_state *s));
--local unsigned bi_reverse OF((unsigned value, int length));
--local void bi_windup OF((deflate_state *s));
--local void bi_flush OF((deflate_state *s));
--local void copy_block OF((deflate_state *s, charf *buf, unsigned len,
-- int header));
--
--#ifndef DEBUG_ZLIB
--# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len)
-- /* Send a code of the given tree. c and tree must not have side effects */
--
--#else /* DEBUG_ZLIB */
--# define send_code(s, c, tree) \
-- { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \
-- send_bits(s, tree[c].Code, tree[c].Len); }
--#endif
--
--#define d_code(dist) \
-- ((dist) < 256 ? dist_code[dist] : dist_code[256+((dist)>>7)])
--/* Mapping from a distance to a distance code. dist is the distance - 1 and
-- * must not have side effects. dist_code[256] and dist_code[257] are never
-- * used.
-- */
--
--/* ===========================================================================
-- * Send a value on a given number of bits.
-- * IN assertion: length <= 16 and value fits in length bits.
-- */
--#ifdef DEBUG_ZLIB
--local void send_bits OF((deflate_state *s, int value, int length));
--
--local void send_bits(s, value, length)
-- deflate_state *s;
-- int value; /* value to send */
-- int length; /* number of bits */
--{
-- Tracevv((stderr," l %2d v %4x ", length, value));
-- Assert(length > 0 && length <= 15, "invalid length");
-- s->bits_sent += (ulg)length;
--
-- /* If not enough room in bi_buf, use (valid) bits from bi_buf and
-- * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid))
-- * unused bits in value.
-- */
-- if (s->bi_valid > (int)Buf_size - length) {
-- s->bi_buf |= (value << s->bi_valid);
-- put_short(s, s->bi_buf);
-- s->bi_buf = (ush)value >> (Buf_size - s->bi_valid);
-- s->bi_valid += length - Buf_size;
-- } else {
-- s->bi_buf |= value << s->bi_valid;
-- s->bi_valid += length;
-- }
--}
--#else /* !DEBUG_ZLIB */
--
--#define send_bits(s, value, length) \
--{ int len = length;\
-- if (s->bi_valid > (int)Buf_size - len) {\
-- int val = value;\
-- s->bi_buf |= (val << s->bi_valid);\
-- put_short(s, s->bi_buf);\
-- s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\
-- s->bi_valid += len - Buf_size;\
-- } else {\
-- s->bi_buf |= (value) << s->bi_valid;\
-- s->bi_valid += len;\
-- }\
--}
--#endif /* DEBUG_ZLIB */
--
--
--#define MAX(a,b) (a >= b ? a : b)
--/* the arguments must not have side effects */
--
--/* ===========================================================================
-- * Initialize the various 'constant' tables. In a multi-threaded environment,
-- * this function may be called by two threads concurrently, but this is
-- * harmless since both invocations do exactly the same thing.
-- */
--local void tr_static_init()
--{
-- static int static_init_done = 0;
-- int n; /* iterates over tree elements */
-- int bits; /* bit counter */
-- int length; /* length value */
-- int code; /* code value */
-- int dist; /* distance index */
-- ush bl_count[MAX_BITS+1];
-- /* number of codes at each bit length for an optimal tree */
--
-- if (static_init_done) return;
--
-- /* Initialize the mapping length (0..255) -> length code (0..28) */
-- length = 0;
-- for (code = 0; code < LENGTH_CODES-1; code++) {
-- base_length[code] = length;
-- for (n = 0; n < (1<<extra_lbits[code]); n++) {
-- length_code[length++] = (uch)code;
-- }
-- }
-- Assert (length == 256, "tr_static_init: length != 256");
-- /* Note that the length 255 (match length 258) can be represented
-- * in two different ways: code 284 + 5 bits or code 285, so we
-- * overwrite length_code[255] to use the best encoding:
-- */
-- length_code[length-1] = (uch)code;
--
-- /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
-- dist = 0;
-- for (code = 0 ; code < 16; code++) {
-- base_dist[code] = dist;
-- for (n = 0; n < (1<<extra_dbits[code]); n++) {
-- dist_code[dist++] = (uch)code;
-- }
-- }
-- Assert (dist == 256, "tr_static_init: dist != 256");
-- dist >>= 7; /* from now on, all distances are divided by 128 */
-- for ( ; code < D_CODES; code++) {
-- base_dist[code] = dist << 7;
-- for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
-- dist_code[256 + dist++] = (uch)code;
-- }
-- }
-- Assert (dist == 256, "tr_static_init: 256+dist != 512");
--
-- /* Construct the codes of the static literal tree */
-- for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0;
-- n = 0;
-- while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++;
-- while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++;
-- while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++;
-- while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++;
-- /* Codes 286 and 287 do not exist, but we must include them in the
-- * tree construction to get a canonical Huffman tree (longest code
-- * all ones)
-- */
-- gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count);
--
-- /* The static distance tree is trivial: */
-- for (n = 0; n < D_CODES; n++) {
-- static_dtree[n].Len = 5;
-- static_dtree[n].Code = bi_reverse((unsigned)n, 5);
-- }
-- static_init_done = 1;
--}
--
--/* ===========================================================================
-- * Initialize the tree data structures for a new zlib stream.
-- */
--void zlib_tr_init(s)
-- deflate_state *s;
--{
-- tr_static_init();
--
-- s->compressed_len = 0L;
--
-- s->l_desc.dyn_tree = s->dyn_ltree;
-- s->l_desc.stat_desc = &static_l_desc;
--
-- s->d_desc.dyn_tree = s->dyn_dtree;
-- s->d_desc.stat_desc = &static_d_desc;
--
-- s->bl_desc.dyn_tree = s->bl_tree;
-- s->bl_desc.stat_desc = &static_bl_desc;
--
-- s->bi_buf = 0;
-- s->bi_valid = 0;
-- s->last_eob_len = 8; /* enough lookahead for inflate */
--#ifdef DEBUG_ZLIB
-- s->bits_sent = 0L;
--#endif
--
-- /* Initialize the first block of the first file: */
-- init_block(s);
--}
--
--/* ===========================================================================
-- * Initialize a new block.
-- */
--local void init_block(s)
-- deflate_state *s;
--{
-- int n; /* iterates over tree elements */
--
-- /* Initialize the trees. */
-- for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0;
-- for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0;
-- for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0;
--
-- s->dyn_ltree[END_BLOCK].Freq = 1;
-- s->opt_len = s->static_len = 0L;
-- s->last_lit = s->matches = 0;
--}
--
--#define SMALLEST 1
--/* Index within the heap array of least frequent node in the Huffman tree */
--
--
--/* ===========================================================================
-- * Remove the smallest element from the heap and recreate the heap with
-- * one less element. Updates heap and heap_len.
-- */
--#define pqremove(s, tree, top) \
--{\
-- top = s->heap[SMALLEST]; \
-- s->heap[SMALLEST] = s->heap[s->heap_len--]; \
-- pqdownheap(s, tree, SMALLEST); \
--}
--
--/* ===========================================================================
-- * Compares to subtrees, using the tree depth as tie breaker when
-- * the subtrees have equal frequency. This minimizes the worst case length.
-- */
--#define smaller(tree, n, m, depth) \
-- (tree[n].Freq < tree[m].Freq || \
-- (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m]))
--
--/* ===========================================================================
-- * Restore the heap property by moving down the tree starting at node k,
-- * exchanging a node with the smallest of its two sons if necessary, stopping
-- * when the heap property is re-established (each father smaller than its
-- * two sons).
-- */
--local void pqdownheap(s, tree, k)
-- deflate_state *s;
-- ct_data *tree; /* the tree to restore */
-- int k; /* node to move down */
--{
-- int v = s->heap[k];
-- int j = k << 1; /* left son of k */
-- while (j <= s->heap_len) {
-- /* Set j to the smallest of the two sons: */
-- if (j < s->heap_len &&
-- smaller(tree, s->heap[j+1], s->heap[j], s->depth)) {
-- j++;
-- }
-- /* Exit if v is smaller than both sons */
-- if (smaller(tree, v, s->heap[j], s->depth)) break;
--
-- /* Exchange v with the smallest son */
-- s->heap[k] = s->heap[j]; k = j;
--
-- /* And continue down the tree, setting j to the left son of k */
-- j <<= 1;
-- }
-- s->heap[k] = v;
--}
--
--/* ===========================================================================
-- * Compute the optimal bit lengths for a tree and update the total bit length
-- * for the current block.
-- * IN assertion: the fields freq and dad are set, heap[heap_max] and
-- * above are the tree nodes sorted by increasing frequency.
-- * OUT assertions: the field len is set to the optimal bit length, the
-- * array bl_count contains the frequencies for each bit length.
-- * The length opt_len is updated; static_len is also updated if stree is
-- * not null.
-- */
--local void gen_bitlen(s, desc)
-- deflate_state *s;
-- tree_desc *desc; /* the tree descriptor */
--{
-- ct_data *tree = desc->dyn_tree;
-- int max_code = desc->max_code;
-- const ct_data *stree = desc->stat_desc->static_tree;
-- const intf *extra = desc->stat_desc->extra_bits;
-- int base = desc->stat_desc->extra_base;
-- int max_length = desc->stat_desc->max_length;
-- int h; /* heap index */
-- int n, m; /* iterate over the tree elements */
-- int bits; /* bit length */
-- int xbits; /* extra bits */
-- ush f; /* frequency */
-- int overflow = 0; /* number of elements with bit length too large */
--
-- for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0;
--
-- /* In a first pass, compute the optimal bit lengths (which may
-- * overflow in the case of the bit length tree).
-- */
-- tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */
--
-- for (h = s->heap_max+1; h < HEAP_SIZE; h++) {
-- n = s->heap[h];
-- bits = tree[tree[n].Dad].Len + 1;
-- if (bits > max_length) bits = max_length, overflow++;
-- tree[n].Len = (ush)bits;
-- /* We overwrite tree[n].Dad which is no longer needed */
--
-- if (n > max_code) continue; /* not a leaf node */
--
-- s->bl_count[bits]++;
-- xbits = 0;
-- if (n >= base) xbits = extra[n-base];
-- f = tree[n].Freq;
-- s->opt_len += (ulg)f * (bits + xbits);
-- if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits);
-- }
-- if (overflow == 0) return;
--
-- Trace((stderr,"\nbit length overflow\n"));
-- /* This happens for example on obj2 and pic of the Calgary corpus */
--
-- /* Find the first bit length which could increase: */
-- do {
-- bits = max_length-1;
-- while (s->bl_count[bits] == 0) bits--;
-- s->bl_count[bits]--; /* move one leaf down the tree */
-- s->bl_count[bits+1] += 2; /* move one overflow item as its brother */
-- s->bl_count[max_length]--;
-- /* The brother of the overflow item also moves one step up,
-- * but this does not affect bl_count[max_length]
-- */
-- overflow -= 2;
-- } while (overflow > 0);
--
-- /* Now recompute all bit lengths, scanning in increasing frequency.
-- * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
-- * lengths instead of fixing only the wrong ones. This idea is taken
-- * from 'ar' written by Haruhiko Okumura.)
-- */
-- for (bits = max_length; bits != 0; bits--) {
-- n = s->bl_count[bits];
-- while (n != 0) {
-- m = s->heap[--h];
-- if (m > max_code) continue;
-- if (tree[m].Len != (unsigned) bits) {
-- Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
-- s->opt_len += ((long)bits - (long)tree[m].Len)
-- *(long)tree[m].Freq;
-- tree[m].Len = (ush)bits;
-- }
-- n--;
-- }
-- }
--}
--
--/* ===========================================================================
-- * Generate the codes for a given tree and bit counts (which need not be
-- * optimal).
-- * IN assertion: the array bl_count contains the bit length statistics for
-- * the given tree and the field len is set for all tree elements.
-- * OUT assertion: the field code is set for all tree elements of non
-- * zero code length.
-- */
--local void gen_codes (tree, max_code, bl_count)
-- ct_data *tree; /* the tree to decorate */
-- int max_code; /* largest code with non zero frequency */
-- ushf *bl_count; /* number of codes at each bit length */
--{
-- ush next_code[MAX_BITS+1]; /* next code value for each bit length */
-- ush code = 0; /* running code value */
-- int bits; /* bit index */
-- int n; /* code index */
--
-- /* The distribution counts are first used to generate the code values
-- * without bit reversal.
-- */
-- for (bits = 1; bits <= MAX_BITS; bits++) {
-- next_code[bits] = code = (code + bl_count[bits-1]) << 1;
-- }
-- /* Check that the bit counts in bl_count are consistent. The last code
-- * must be all ones.
-- */
-- Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
-- "inconsistent bit counts");
-- Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
--
-- for (n = 0; n <= max_code; n++) {
-- int len = tree[n].Len;
-- if (len == 0) continue;
-- /* Now reverse the bits */
-- tree[n].Code = bi_reverse(next_code[len]++, len);
--
-- Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
-- n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
-- }
--}
--
--/* ===========================================================================
-- * Construct one Huffman tree and assigns the code bit strings and lengths.
-- * Update the total bit length for the current block.
-- * IN assertion: the field freq is set for all tree elements.
-- * OUT assertions: the fields len and code are set to the optimal bit length
-- * and corresponding code. The length opt_len is updated; static_len is
-- * also updated if stree is not null. The field max_code is set.
-- */
--local void build_tree(s, desc)
-- deflate_state *s;
-- tree_desc *desc; /* the tree descriptor */
--{
-- ct_data *tree = desc->dyn_tree;
-- const ct_data *stree = desc->stat_desc->static_tree;
-- int elems = desc->stat_desc->elems;
-- int n, m; /* iterate over heap elements */
-- int max_code = -1; /* largest code with non zero frequency */
-- int node; /* new node being created */
--
-- /* Construct the initial heap, with least frequent element in
-- * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
-- * heap[0] is not used.
-- */
-- s->heap_len = 0, s->heap_max = HEAP_SIZE;
--
-- for (n = 0; n < elems; n++) {
-- if (tree[n].Freq != 0) {
-- s->heap[++(s->heap_len)] = max_code = n;
-- s->depth[n] = 0;
-- } else {
-- tree[n].Len = 0;
-- }
-- }
--
-- /* The pkzip format requires that at least one distance code exists,
-- * and that at least one bit should be sent even if there is only one
-- * possible code. So to avoid special checks later on we force at least
-- * two codes of non zero frequency.
-- */
-- while (s->heap_len < 2) {
-- node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0);
-- tree[node].Freq = 1;
-- s->depth[node] = 0;
-- s->opt_len--; if (stree) s->static_len -= stree[node].Len;
-- /* node is 0 or 1 so it does not have extra bits */
-- }
-- desc->max_code = max_code;
--
-- /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
-- * establish sub-heaps of increasing lengths:
-- */
-- for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n);
--
-- /* Construct the Huffman tree by repeatedly combining the least two
-- * frequent nodes.
-- */
-- node = elems; /* next internal node of the tree */
-- do {
-- pqremove(s, tree, n); /* n = node of least frequency */
-- m = s->heap[SMALLEST]; /* m = node of next least frequency */
--
-- s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */
-- s->heap[--(s->heap_max)] = m;
--
-- /* Create a new node father of n and m */
-- tree[node].Freq = tree[n].Freq + tree[m].Freq;
-- s->depth[node] = (uch) (MAX(s->depth[n], s->depth[m]) + 1);
-- tree[n].Dad = tree[m].Dad = (ush)node;
--#ifdef DUMP_BL_TREE
-- if (tree == s->bl_tree) {
-- fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)",
-- node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq);
-- }
--#endif
-- /* and insert the new node in the heap */
-- s->heap[SMALLEST] = node++;
-- pqdownheap(s, tree, SMALLEST);
--
-- } while (s->heap_len >= 2);
--
-- s->heap[--(s->heap_max)] = s->heap[SMALLEST];
--
-- /* At this point, the fields freq and dad are set. We can now
-- * generate the bit lengths.
-- */
-- gen_bitlen(s, (tree_desc *)desc);
--
-- /* The field len is now set, we can generate the bit codes */
-- gen_codes ((ct_data *)tree, max_code, s->bl_count);
--}
--
--/* ===========================================================================
-- * Scan a literal or distance tree to determine the frequencies of the codes
-- * in the bit length tree.
-- */
--local void scan_tree (s, tree, max_code)
-- deflate_state *s;
-- ct_data *tree; /* the tree to be scanned */
-- int max_code; /* and its largest code of non zero frequency */
--{
-- int n; /* iterates over all tree elements */
-- int prevlen = -1; /* last emitted length */
-- int curlen; /* length of current code */
-- int nextlen = tree[0].Len; /* length of next code */
-- int count = 0; /* repeat count of the current code */
-- int max_count = 7; /* max repeat count */
-- int min_count = 4; /* min repeat count */
--
-- if (nextlen == 0) max_count = 138, min_count = 3;
-- tree[max_code+1].Len = (ush)0xffff; /* guard */
--
-- for (n = 0; n <= max_code; n++) {
-- curlen = nextlen; nextlen = tree[n+1].Len;
-- if (++count < max_count && curlen == nextlen) {
-- continue;
-- } else if (count < min_count) {
-- s->bl_tree[curlen].Freq += count;
-- } else if (curlen != 0) {
-- if (curlen != prevlen) s->bl_tree[curlen].Freq++;
-- s->bl_tree[REP_3_6].Freq++;
-- } else if (count <= 10) {
-- s->bl_tree[REPZ_3_10].Freq++;
-- } else {
-- s->bl_tree[REPZ_11_138].Freq++;
-- }
-- count = 0; prevlen = curlen;
-- if (nextlen == 0) {
-- max_count = 138, min_count = 3;
-- } else if (curlen == nextlen) {
-- max_count = 6, min_count = 3;
-- } else {
-- max_count = 7, min_count = 4;
-- }
-- }
--}
--
--/* ===========================================================================
-- * Send a literal or distance tree in compressed form, using the codes in
-- * bl_tree.
-- */
--local void send_tree (s, tree, max_code)
-- deflate_state *s;
-- ct_data *tree; /* the tree to be scanned */
-- int max_code; /* and its largest code of non zero frequency */
--{
-- int n; /* iterates over all tree elements */
-- int prevlen = -1; /* last emitted length */
-- int curlen; /* length of current code */
-- int nextlen = tree[0].Len; /* length of next code */
-- int count = 0; /* repeat count of the current code */
-- int max_count = 7; /* max repeat count */
-- int min_count = 4; /* min repeat count */
--
-- /* tree[max_code+1].Len = -1; */ /* guard already set */
-- if (nextlen == 0) max_count = 138, min_count = 3;
--
-- for (n = 0; n <= max_code; n++) {
-- curlen = nextlen; nextlen = tree[n+1].Len;
-- if (++count < max_count && curlen == nextlen) {
-- continue;
-- } else if (count < min_count) {
-- do { send_code(s, curlen, s->bl_tree); } while (--count != 0);
--
-- } else if (curlen != 0) {
-- if (curlen != prevlen) {
-- send_code(s, curlen, s->bl_tree); count--;
-- }
-- Assert(count >= 3 && count <= 6, " 3_6?");
-- send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2);
--
-- } else if (count <= 10) {
-- send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3);
--
-- } else {
-- send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7);
-- }
-- count = 0; prevlen = curlen;
-- if (nextlen == 0) {
-- max_count = 138, min_count = 3;
-- } else if (curlen == nextlen) {
-- max_count = 6, min_count = 3;
-- } else {
-- max_count = 7, min_count = 4;
-- }
-- }
--}
--
--/* ===========================================================================
-- * Construct the Huffman tree for the bit lengths and return the index in
-- * bl_order of the last bit length code to send.
-- */
--local int build_bl_tree(s)
-- deflate_state *s;
--{
-- int max_blindex; /* index of last bit length code of non zero freq */
--
-- /* Determine the bit length frequencies for literal and distance trees */
-- scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code);
-- scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code);
--
-- /* Build the bit length tree: */
-- build_tree(s, (tree_desc *)(&(s->bl_desc)));
-- /* opt_len now includes the length of the tree representations, except
-- * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
-- */
--
-- /* Determine the number of bit length codes to send. The pkzip format
-- * requires that at least 4 bit length codes be sent. (appnote.txt says
-- * 3 but the actual value used is 4.)
-- */
-- for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {
-- if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;
-- }
-- /* Update opt_len to include the bit length tree and counts */
-- s->opt_len += 3*(max_blindex+1) + 5+5+4;
-- Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
-- s->opt_len, s->static_len));
--
-- return max_blindex;
--}
--
--/* ===========================================================================
-- * Send the header for a block using dynamic Huffman trees: the counts, the
-- * lengths of the bit length codes, the literal tree and the distance tree.
-- * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
-- */
--local void send_all_trees(s, lcodes, dcodes, blcodes)
-- deflate_state *s;
-- int lcodes, dcodes, blcodes; /* number of codes for each tree */
--{
-- int rank; /* index in bl_order */
--
-- Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
-- Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
-- "too many codes");
-- Tracev((stderr, "\nbl counts: "));
-- send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
-- send_bits(s, dcodes-1, 5);
-- send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */
-- for (rank = 0; rank < blcodes; rank++) {
-- Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
-- send_bits(s, s->bl_tree[bl_order[rank]].Len, 3);
-- }
-- Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
--
-- send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */
-- Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
--
-- send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */
-- Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
--}
--
--/* ===========================================================================
-- * Send a stored block
-- */
--void zlib_tr_stored_block(s, buf, stored_len, eof)
-- deflate_state *s;
-- charf *buf; /* input block */
-- ulg stored_len; /* length of input block */
-- int eof; /* true if this is the last block for a file */
--{
-- send_bits(s, (STORED_BLOCK<<1)+eof, 3); /* send block type */
-- s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
-- s->compressed_len += (stored_len + 4) << 3;
--
-- copy_block(s, buf, (unsigned)stored_len, 1); /* with header */
--}
--
--/* Send just the `stored block' type code without any length bytes or data.
-- */
--void zlib_tr_stored_type_only(s)
-- deflate_state *s;
--{
-- send_bits(s, (STORED_BLOCK << 1), 3);
-- bi_windup(s);
-- s->compressed_len = (s->compressed_len + 3) & ~7L;
--}
--
--
--/* ===========================================================================
-- * Send one empty static block to give enough lookahead for inflate.
-- * This takes 10 bits, of which 7 may remain in the bit buffer.
-- * The current inflate code requires 9 bits of lookahead. If the
-- * last two codes for the previous block (real code plus EOB) were coded
-- * on 5 bits or less, inflate may have only 5+3 bits of lookahead to decode
-- * the last real code. In this case we send two empty static blocks instead
-- * of one. (There are no problems if the previous block is stored or fixed.)
-- * To simplify the code, we assume the worst case of last real code encoded
-- * on one bit only.
-- */
--void zlib_tr_align(s)
-- deflate_state *s;
--{
-- send_bits(s, STATIC_TREES<<1, 3);
-- send_code(s, END_BLOCK, static_ltree);
-- s->compressed_len += 10L; /* 3 for block type, 7 for EOB */
-- bi_flush(s);
-- /* Of the 10 bits for the empty block, we have already sent
-- * (10 - bi_valid) bits. The lookahead for the last real code (before
-- * the EOB of the previous block) was thus at least one plus the length
-- * of the EOB plus what we have just sent of the empty static block.
-- */
-- if (1 + s->last_eob_len + 10 - s->bi_valid < 9) {
-- send_bits(s, STATIC_TREES<<1, 3);
-- send_code(s, END_BLOCK, static_ltree);
-- s->compressed_len += 10L;
-- bi_flush(s);
-- }
-- s->last_eob_len = 7;
--}
--
--/* ===========================================================================
-- * Determine the best encoding for the current block: dynamic trees, static
-- * trees or store, and output the encoded block to the zip file. This function
-- * returns the total compressed length for the file so far.
-- */
--ulg zlib_tr_flush_block(s, buf, stored_len, eof)
-- deflate_state *s;
-- charf *buf; /* input block, or NULL if too old */
-- ulg stored_len; /* length of input block */
-- int eof; /* true if this is the last block for a file */
--{
-- ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
-- int max_blindex = 0; /* index of last bit length code of non zero freq */
--
-- /* Build the Huffman trees unless a stored block is forced */
-- if (s->level > 0) {
--
-- /* Check if the file is ascii or binary */
-- if (s->data_type == Z_UNKNOWN) set_data_type(s);
--
-- /* Construct the literal and distance trees */
-- build_tree(s, (tree_desc *)(&(s->l_desc)));
-- Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
-- s->static_len));
--
-- build_tree(s, (tree_desc *)(&(s->d_desc)));
-- Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
-- s->static_len));
-- /* At this point, opt_len and static_len are the total bit lengths of
-- * the compressed block data, excluding the tree representations.
-- */
--
-- /* Build the bit length tree for the above two trees, and get the index
-- * in bl_order of the last bit length code to send.
-- */
-- max_blindex = build_bl_tree(s);
--
-- /* Determine the best encoding. Compute first the block length in bytes*/
-- opt_lenb = (s->opt_len+3+7)>>3;
-- static_lenb = (s->static_len+3+7)>>3;
--
-- Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
-- opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
-- s->last_lit));
--
-- if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
--
-- } else {
-- Assert(buf != (char*)0, "lost buf");
-- opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
-- }
--
-- /* If compression failed and this is the first and last block,
-- * and if the .zip file can be seeked (to rewrite the local header),
-- * the whole file is transformed into a stored file:
-- */
--#ifdef STORED_FILE_OK
--# ifdef FORCE_STORED_FILE
-- if (eof && s->compressed_len == 0L) { /* force stored file */
--# else
-- if (stored_len <= opt_lenb && eof && s->compressed_len==0L && seekable()) {
--# endif
-- /* Since LIT_BUFSIZE <= 2*WSIZE, the input data must be there: */
-- if (buf == (charf*)0) error ("block vanished");
--
-- copy_block(s, buf, (unsigned)stored_len, 0); /* without header */
-- s->compressed_len = stored_len << 3;
-- s->method = STORED;
-- } else
--#endif /* STORED_FILE_OK */
--
--#ifdef FORCE_STORED
-- if (buf != (char*)0) { /* force stored block */
--#else
-- if (stored_len+4 <= opt_lenb && buf != (char*)0) {
-- /* 4: two words for the lengths */
--#endif
-- /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
-- * Otherwise we can't have processed more than WSIZE input bytes since
-- * the last block flush, because compression would have been
-- * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
-- * transform a block into a stored block.
-- */
-- zlib_tr_stored_block(s, buf, stored_len, eof);
--
--#ifdef FORCE_STATIC
-- } else if (static_lenb >= 0) { /* force static trees */
--#else
-- } else if (static_lenb == opt_lenb) {
--#endif
-- send_bits(s, (STATIC_TREES<<1)+eof, 3);
-- compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree);
-- s->compressed_len += 3 + s->static_len;
-- } else {
-- send_bits(s, (DYN_TREES<<1)+eof, 3);
-- send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
-- max_blindex+1);
-- compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree);
-- s->compressed_len += 3 + s->opt_len;
-- }
-- Assert (s->compressed_len == s->bits_sent, "bad compressed size");
-- init_block(s);
--
-- if (eof) {
-- bi_windup(s);
-- s->compressed_len += 7; /* align on byte boundary */
-- }
-- Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
-- s->compressed_len-7*eof));
--
-- return s->compressed_len >> 3;
--}
--
--/* ===========================================================================
-- * Save the match info and tally the frequency counts. Return true if
-- * the current block must be flushed.
-- */
--int zlib_tr_tally (s, dist, lc)
-- deflate_state *s;
-- unsigned dist; /* distance of matched string */
-- unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
--{
-- s->d_buf[s->last_lit] = (ush)dist;
-- s->l_buf[s->last_lit++] = (uch)lc;
-- if (dist == 0) {
-- /* lc is the unmatched char */
-- s->dyn_ltree[lc].Freq++;
-- } else {
-- s->matches++;
-- /* Here, lc is the match length - MIN_MATCH */
-- dist--; /* dist = match distance - 1 */
-- Assert((ush)dist < (ush)MAX_DIST(s) &&
-- (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
-- (ush)d_code(dist) < (ush)D_CODES, "zlib_tr_tally: bad match");
--
-- s->dyn_ltree[length_code[lc]+LITERALS+1].Freq++;
-- s->dyn_dtree[d_code(dist)].Freq++;
-- }
--
-- /* Try to guess if it is profitable to stop the current block here */
-- if ((s->last_lit & 0xfff) == 0 && s->level > 2) {
-- /* Compute an upper bound for the compressed length */
-- ulg out_length = (ulg)s->last_lit*8L;
-- ulg in_length = (ulg)((long)s->strstart - s->block_start);
-- int dcode;
-- for (dcode = 0; dcode < D_CODES; dcode++) {
-- out_length += (ulg)s->dyn_dtree[dcode].Freq *
-- (5L+extra_dbits[dcode]);
-- }
-- out_length >>= 3;
-- Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
-- s->last_lit, in_length, out_length,
-- 100L - out_length*100L/in_length));
-- if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
-- }
-- return (s->last_lit == s->lit_bufsize-1);
-- /* We avoid equality with lit_bufsize because of wraparound at 64K
-- * on 16 bit machines and because stored blocks are restricted to
-- * 64K-1 bytes.
-- */
--}
--
--/* ===========================================================================
-- * Send the block data compressed using the given Huffman trees
-- */
--local void compress_block(s, ltree, dtree)
-- deflate_state *s;
-- ct_data *ltree; /* literal tree */
-- ct_data *dtree; /* distance tree */
--{
-- unsigned dist; /* distance of matched string */
-- int lc; /* match length or unmatched char (if dist == 0) */
-- unsigned lx = 0; /* running index in l_buf */
-- unsigned code; /* the code to send */
-- int extra; /* number of extra bits to send */
--
-- if (s->last_lit != 0) do {
-- dist = s->d_buf[lx];
-- lc = s->l_buf[lx++];
-- if (dist == 0) {
-- send_code(s, lc, ltree); /* send a literal byte */
-- Tracecv(isgraph(lc), (stderr," '%c' ", lc));
-- } else {
-- /* Here, lc is the match length - MIN_MATCH */
-- code = length_code[lc];
-- send_code(s, code+LITERALS+1, ltree); /* send the length code */
-- extra = extra_lbits[code];
-- if (extra != 0) {
-- lc -= base_length[code];
-- send_bits(s, lc, extra); /* send the extra length bits */
-- }
-- dist--; /* dist is now the match distance - 1 */
-- code = d_code(dist);
-- Assert (code < D_CODES, "bad d_code");
--
-- send_code(s, code, dtree); /* send the distance code */
-- extra = extra_dbits[code];
-- if (extra != 0) {
-- dist -= base_dist[code];
-- send_bits(s, dist, extra); /* send the extra distance bits */
-- }
-- } /* literal or match pair ? */
--
-- /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
-- Assert(s->pending < s->lit_bufsize + 2*lx, "pendingBuf overflow");
--
-- } while (lx < s->last_lit);
--
-- send_code(s, END_BLOCK, ltree);
-- s->last_eob_len = ltree[END_BLOCK].Len;
--}
--
--/* ===========================================================================
-- * Set the data type to ASCII or BINARY, using a crude approximation:
-- * binary if more than 20% of the bytes are <= 6 or >= 128, ascii otherwise.
-- * IN assertion: the fields freq of dyn_ltree are set and the total of all
-- * frequencies does not exceed 64K (to fit in an int on 16 bit machines).
-- */
--local void set_data_type(s)
-- deflate_state *s;
--{
-- int n = 0;
-- unsigned ascii_freq = 0;
-- unsigned bin_freq = 0;
-- while (n < 7) bin_freq += s->dyn_ltree[n++].Freq;
-- while (n < 128) ascii_freq += s->dyn_ltree[n++].Freq;
-- while (n < LITERALS) bin_freq += s->dyn_ltree[n++].Freq;
-- s->data_type = (Byte)(bin_freq > (ascii_freq >> 2) ? Z_BINARY : Z_ASCII);
--}
--
--/* ===========================================================================
-- * Copy a stored block, storing first the length and its
-- * one's complement if requested.
-- */
--local void copy_block(s, buf, len, header)
-- deflate_state *s;
-- charf *buf; /* the input data */
-- unsigned len; /* its length */
-- int header; /* true if block header must be written */
--{
-- bi_windup(s); /* align on byte boundary */
-- s->last_eob_len = 8; /* enough lookahead for inflate */
--
-- if (header) {
-- put_short(s, (ush)len);
-- put_short(s, (ush)~len);
--#ifdef DEBUG_ZLIB
-- s->bits_sent += 2*16;
--#endif
-- }
--#ifdef DEBUG_ZLIB
-- s->bits_sent += (ulg)len<<3;
--#endif
-- /* bundle up the put_byte(s, *buf++) calls */
-- memcpy(&s->pending_buf[s->pending], buf, len);
-- s->pending += len;
--}
--
-diff -Nur linux/fs/jffs2/compressors/zlib_deflate/defutil.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_deflate/defutil.h
---- linux/fs/jffs2/compressors/zlib_deflate/defutil.h 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_deflate/defutil.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,335 +0,0 @@
--
--
--
--#define Assert(err, str)
--#define Trace(dummy)
--#define Tracev(dummy)
--#define Tracecv(err, dummy)
--#define Tracevv(dummy)
--
--
--
--#define LENGTH_CODES 29
--/* number of length codes, not counting the special END_BLOCK code */
--
--#define LITERALS 256
--/* number of literal bytes 0..255 */
--
--#define L_CODES (LITERALS+1+LENGTH_CODES)
--/* number of Literal or Length codes, including the END_BLOCK code */
--
--#define D_CODES 30
--/* number of distance codes */
--
--#define BL_CODES 19
--/* number of codes used to transfer the bit lengths */
--
--#define HEAP_SIZE (2*L_CODES+1)
--/* maximum heap size */
--
--#define MAX_BITS 15
--/* All codes must not exceed MAX_BITS bits */
--
--#define INIT_STATE 42
--#define BUSY_STATE 113
--#define FINISH_STATE 666
--/* Stream status */
--
--
--/* Data structure describing a single value and its code string. */
--typedef struct ct_data_s {
-- union {
-- ush freq; /* frequency count */
-- ush code; /* bit string */
-- } fc;
-- union {
-- ush dad; /* father node in Huffman tree */
-- ush len; /* length of bit string */
-- } dl;
--} FAR ct_data;
--
--#define Freq fc.freq
--#define Code fc.code
--#define Dad dl.dad
--#define Len dl.len
--
--typedef struct static_tree_desc_s static_tree_desc;
--
--typedef struct tree_desc_s {
-- ct_data *dyn_tree; /* the dynamic tree */
-- int max_code; /* largest code with non zero frequency */
-- static_tree_desc *stat_desc; /* the corresponding static tree */
--} FAR tree_desc;
--
--typedef ush Pos;
--typedef Pos FAR Posf;
--typedef unsigned IPos;
--
--/* A Pos is an index in the character window. We use short instead of int to
-- * save space in the various tables. IPos is used only for parameter passing.
-- */
--
--typedef struct deflate_state {
-- z_streamp strm; /* pointer back to this zlib stream */
-- int status; /* as the name implies */
-- Bytef *pending_buf; /* output still pending */
-- ulg pending_buf_size; /* size of pending_buf */
-- Bytef *pending_out; /* next pending byte to output to the stream */
-- int pending; /* nb of bytes in the pending buffer */
-- int noheader; /* suppress zlib header and adler32 */
-- Byte data_type; /* UNKNOWN, BINARY or ASCII */
-- Byte method; /* STORED (for zip only) or DEFLATED */
-- int last_flush; /* value of flush param for previous deflate call */
--
-- /* used by deflate.c: */
--
-- uInt w_size; /* LZ77 window size (32K by default) */
-- uInt w_bits; /* log2(w_size) (8..16) */
-- uInt w_mask; /* w_size - 1 */
--
-- Bytef *window;
-- /* Sliding window. Input bytes are read into the second half of the window,
-- * and move to the first half later to keep a dictionary of at least wSize
-- * bytes. With this organization, matches are limited to a distance of
-- * wSize-MAX_MATCH bytes, but this ensures that IO is always
-- * performed with a length multiple of the block size. Also, it limits
-- * the window size to 64K, which is quite useful on MSDOS.
-- * To do: use the user input buffer as sliding window.
-- */
--
-- ulg window_size;
-- /* Actual size of window: 2*wSize, except when the user input buffer
-- * is directly used as sliding window.
-- */
--
-- Posf *prev;
-- /* Link to older string with same hash index. To limit the size of this
-- * array to 64K, this link is maintained only for the last 32K strings.
-- * An index in this array is thus a window index modulo 32K.
-- */
--
-- Posf *head; /* Heads of the hash chains or NIL. */
--
-- uInt ins_h; /* hash index of string to be inserted */
-- uInt hash_size; /* number of elements in hash table */
-- uInt hash_bits; /* log2(hash_size) */
-- uInt hash_mask; /* hash_size-1 */
--
-- uInt hash_shift;
-- /* Number of bits by which ins_h must be shifted at each input
-- * step. It must be such that after MIN_MATCH steps, the oldest
-- * byte no longer takes part in the hash key, that is:
-- * hash_shift * MIN_MATCH >= hash_bits
-- */
--
-- long block_start;
-- /* Window position at the beginning of the current output block. Gets
-- * negative when the window is moved backwards.
-- */
--
-- uInt match_length; /* length of best match */
-- IPos prev_match; /* previous match */
-- int match_available; /* set if previous match exists */
-- uInt strstart; /* start of string to insert */
-- uInt match_start; /* start of matching string */
-- uInt lookahead; /* number of valid bytes ahead in window */
--
-- uInt prev_length;
-- /* Length of the best match at previous step. Matches not greater than this
-- * are discarded. This is used in the lazy match evaluation.
-- */
--
-- uInt max_chain_length;
-- /* To speed up deflation, hash chains are never searched beyond this
-- * length. A higher limit improves compression ratio but degrades the
-- * speed.
-- */
--
-- uInt max_lazy_match;
-- /* Attempt to find a better match only when the current match is strictly
-- * smaller than this value. This mechanism is used only for compression
-- * levels >= 4.
-- */
--# define max_insert_length max_lazy_match
-- /* Insert new strings in the hash table only if the match length is not
-- * greater than this length. This saves time but degrades compression.
-- * max_insert_length is used only for compression levels <= 3.
-- */
--
-- int level; /* compression level (1..9) */
-- int strategy; /* favor or force Huffman coding*/
--
-- uInt good_match;
-- /* Use a faster search when the previous match is longer than this */
--
-- int nice_match; /* Stop searching when current match exceeds this */
--
-- /* used by trees.c: */
-- /* Didn't use ct_data typedef below to supress compiler warning */
-- struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
-- struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
-- struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
--
-- struct tree_desc_s l_desc; /* desc. for literal tree */
-- struct tree_desc_s d_desc; /* desc. for distance tree */
-- struct tree_desc_s bl_desc; /* desc. for bit length tree */
--
-- ush bl_count[MAX_BITS+1];
-- /* number of codes at each bit length for an optimal tree */
--
-- int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */
-- int heap_len; /* number of elements in the heap */
-- int heap_max; /* element of largest frequency */
-- /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
-- * The same heap array is used to build all trees.
-- */
--
-- uch depth[2*L_CODES+1];
-- /* Depth of each subtree used as tie breaker for trees of equal frequency
-- */
--
-- uchf *l_buf; /* buffer for literals or lengths */
--
-- uInt lit_bufsize;
-- /* Size of match buffer for literals/lengths. There are 4 reasons for
-- * limiting lit_bufsize to 64K:
-- * - frequencies can be kept in 16 bit counters
-- * - if compression is not successful for the first block, all input
-- * data is still in the window so we can still emit a stored block even
-- * when input comes from standard input. (This can also be done for
-- * all blocks if lit_bufsize is not greater than 32K.)
-- * - if compression is not successful for a file smaller than 64K, we can
-- * even emit a stored file instead of a stored block (saving 5 bytes).
-- * This is applicable only for zip (not gzip or zlib).
-- * - creating new Huffman trees less frequently may not provide fast
-- * adaptation to changes in the input data statistics. (Take for
-- * example a binary file with poorly compressible code followed by
-- * a highly compressible string table.) Smaller buffer sizes give
-- * fast adaptation but have of course the overhead of transmitting
-- * trees more frequently.
-- * - I can't count above 4
-- */
--
-- uInt last_lit; /* running index in l_buf */
--
-- ushf *d_buf;
-- /* Buffer for distances. To simplify the code, d_buf and l_buf have
-- * the same number of elements. To use different lengths, an extra flag
-- * array would be necessary.
-- */
--
-- ulg opt_len; /* bit length of current block with optimal trees */
-- ulg static_len; /* bit length of current block with static trees */
-- ulg compressed_len; /* total bit length of compressed file */
-- uInt matches; /* number of string matches in current block */
-- int last_eob_len; /* bit length of EOB code for last block */
--
--#ifdef DEBUG_ZLIB
-- ulg bits_sent; /* bit length of the compressed data */
--#endif
--
-- ush bi_buf;
-- /* Output buffer. bits are inserted starting at the bottom (least
-- * significant bits).
-- */
-- int bi_valid;
-- /* Number of valid bits in bi_buf. All bits above the last valid bit
-- * are always zero.
-- */
--
--} FAR deflate_state;
--
--typedef struct deflate_workspace {
-- /* State memory for the deflator */
-- deflate_state deflate_memory;
-- Byte window_memory[2 * (1 << MAX_WBITS)];
-- Pos prev_memory[1 << MAX_WBITS];
-- Pos head_memory[1 << (MAX_MEM_LEVEL + 7)];
-- char overlay_memory[(1 << (MAX_MEM_LEVEL + 6)) * (sizeof(ush)+2)];
--} deflate_workspace;
--
--/* Output a byte on the stream.
-- * IN assertion: there is enough room in pending_buf.
-- */
--#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);}
--
--
--#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
--/* Minimum amount of lookahead, except at the end of the input file.
-- * See deflate.c for comments about the MIN_MATCH+1.
-- */
--
--#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD)
--/* In order to simplify the code, particularly on 16 bit machines, match
-- * distances are limited to MAX_DIST instead of WSIZE.
-- */
--
-- /* in trees.c */
--void zlib_tr_init OF((deflate_state *s));
--int zlib_tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
--ulg zlib_tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len,
-- int eof));
--void zlib_tr_align OF((deflate_state *s));
--void zlib_tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
-- int eof));
--void zlib_tr_stored_type_only OF((deflate_state *));
--
--
--/* ===========================================================================
-- * Output a short LSB first on the stream.
-- * IN assertion: there is enough room in pendingBuf.
-- */
--#define put_short(s, w) { \
-- put_byte(s, (uch)((w) & 0xff)); \
-- put_byte(s, (uch)((ush)(w) >> 8)); \
--}
--
--/* ===========================================================================
-- * Reverse the first len bits of a code, using straightforward code (a faster
-- * method would use a table)
-- * IN assertion: 1 <= len <= 15
-- */
--static inline unsigned bi_reverse(unsigned code, /* the value to invert */
-- int len) /* its bit length */
--{
-- register unsigned res = 0;
-- do {
-- res |= code & 1;
-- code >>= 1, res <<= 1;
-- } while (--len > 0);
-- return res >> 1;
--}
--
--/* ===========================================================================
-- * Flush the bit buffer, keeping at most 7 bits in it.
-- */
--static inline void bi_flush(deflate_state *s)
--{
-- if (s->bi_valid == 16) {
-- put_short(s, s->bi_buf);
-- s->bi_buf = 0;
-- s->bi_valid = 0;
-- } else if (s->bi_valid >= 8) {
-- put_byte(s, (Byte)s->bi_buf);
-- s->bi_buf >>= 8;
-- s->bi_valid -= 8;
-- }
--}
--
--/* ===========================================================================
-- * Flush the bit buffer and align the output on a byte boundary
-- */
--static inline void bi_windup(deflate_state *s)
--{
-- if (s->bi_valid > 8) {
-- put_short(s, s->bi_buf);
-- } else if (s->bi_valid > 0) {
-- put_byte(s, (Byte)s->bi_buf);
-- }
-- s->bi_buf = 0;
-- s->bi_valid = 0;
--#ifdef DEBUG_ZLIB
-- s->bits_sent = (s->bits_sent+7) & ~7;
--#endif
--}
--
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/Makefile /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/Makefile
---- linux/fs/jffs2/compressors/zlib_inflate/Makefile 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/Makefile 1970-01-01 07:00:00.000000000 +0700
-@@ -1,24 +0,0 @@
--#
--# This is a modified version of zlib, which does all memory
--# allocation ahead of time.
--#
--# This is only the decompression, see zlib_deflate for the
--# the compression
--#
--# Decompression needs to be serialized for each memory
--# allocation.
--#
--# (The upsides of the simplification is that you can't get in
--# any nasty situations wrt memory management, and that the
--# uncompression can be done without blocking on allocation).
--#
--
--O_TARGET := zlib_inflate.o
--
--export-objs := inflate_syms.o
--
--obj-y := infblock.o infcodes.o inffast.o inflate.o \
-- inftrees.o infutil.o inflate_syms.o
--obj-m := $(O_TARGET)
--
--include $(TOPDIR)/Rules.make
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/infblock.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infblock.c
---- linux/fs/jffs2/compressors/zlib_inflate/infblock.c 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infblock.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,355 +0,0 @@
--/* infblock.c -- interpret and process block types to last block
-- * Copyright (C) 1995-1998 Mark Adler
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--#include <linux/zutil.h>
--#include "infblock.h"
--#include "inftrees.h"
--#include "infcodes.h"
--#include "infutil.h"
--
--struct inflate_codes_state;
--
--/* simplify the use of the inflate_huft type with some defines */
--#define exop word.what.Exop
--#define bits word.what.Bits
--
--/* Table for deflate from PKZIP's appnote.txt. */
--local const uInt border[] = { /* Order of the bit length code lengths */
-- 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
--
--/*
-- Notes beyond the 1.93a appnote.txt:
--
-- 1. Distance pointers never point before the beginning of the output
-- stream.
-- 2. Distance pointers can point back across blocks, up to 32k away.
-- 3. There is an implied maximum of 7 bits for the bit length table and
-- 15 bits for the actual data.
-- 4. If only one code exists, then it is encoded using one bit. (Zero
-- would be more efficient, but perhaps a little confusing.) If two
-- codes exist, they are coded using one bit each (0 and 1).
-- 5. There is no way of sending zero distance codes--a dummy must be
-- sent if there are none. (History: a pre 2.0 version of PKZIP would
-- store blocks with no distance codes, but this was discovered to be
-- too harsh a criterion.) Valid only for 1.93a. 2.04c does allow
-- zero distance codes, which is sent as one code of zero bits in
-- length.
-- 6. There are up to 286 literal/length codes. Code 256 represents the
-- end-of-block. Note however that the static length tree defines
-- 288 codes just to fill out the Huffman codes. Codes 286 and 287
-- cannot be used though, since there is no length base or extra bits
-- defined for them. Similarily, there are up to 30 distance codes.
-- However, static trees define 32 codes (all 5 bits) to fill out the
-- Huffman codes, but the last two had better not show up in the data.
-- 7. Unzip can check dynamic Huffman blocks for complete code sets.
-- The exception is that a single code would not be complete (see #4).
-- 8. The five bits following the block type is really the number of
-- literal codes sent minus 257.
-- 9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits
-- (1+6+6). Therefore, to output three times the length, you output
-- three codes (1+1+1), whereas to output four times the same length,
-- you only need two codes (1+3). Hmm.
-- 10. In the tree reconstruction algorithm, Code = Code + Increment
-- only if BitLength(i) is not zero. (Pretty obvious.)
-- 11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19)
-- 12. Note: length code 284 can represent 227-258, but length code 285
-- really is 258. The last length deserves its own, short code
-- since it gets used a lot in very redundant files. The length
-- 258 is special since 258 - 3 (the min match length) is 255.
-- 13. The literal/length and distance code bit lengths are read as a
-- single stream of lengths. It is possible (and advantageous) for
-- a repeat code (16, 17, or 18) to go across the boundary between
-- the two sets of lengths.
-- */
--
--
--void zlib_inflate_blocks_reset(s, z, c)
--inflate_blocks_statef *s;
--z_streamp z;
--uLongf *c;
--{
-- if (c != Z_NULL)
-- *c = s->check;
-- if (s->mode == CODES)
-- zlib_inflate_codes_free(s->sub.decode.codes, z);
-- s->mode = TYPE;
-- s->bitk = 0;
-- s->bitb = 0;
-- s->read = s->write = s->window;
-- if (s->checkfn != Z_NULL)
-- z->adler = s->check = (*s->checkfn)(0L, (const Bytef *)Z_NULL, 0);
--}
--
--inflate_blocks_statef *zlib_inflate_blocks_new(z, c, w)
--z_streamp z;
--check_func c;
--uInt w;
--{
-- inflate_blocks_statef *s;
--
-- s = &WS(z)->working_blocks_state;
-- s->hufts = WS(z)->working_hufts;
-- s->window = WS(z)->working_window;
-- s->end = s->window + w;
-- s->checkfn = c;
-- s->mode = TYPE;
-- zlib_inflate_blocks_reset(s, z, Z_NULL);
-- return s;
--}
--
--
--int zlib_inflate_blocks(s, z, r)
--inflate_blocks_statef *s;
--z_streamp z;
--int r;
--{
-- uInt t; /* temporary storage */
-- uLong b; /* bit buffer */
-- uInt k; /* bits in bit buffer */
-- Bytef *p; /* input data pointer */
-- uInt n; /* bytes available there */
-- Bytef *q; /* output window write pointer */
-- uInt m; /* bytes to end of window or read pointer */
--
-- /* copy input/output information to locals (UPDATE macro restores) */
-- LOAD
--
-- /* process input based on current state */
-- while (1) switch (s->mode)
-- {
-- case TYPE:
-- NEEDBITS(3)
-- t = (uInt)b & 7;
-- s->last = t & 1;
-- switch (t >> 1)
-- {
-- case 0: /* stored */
-- DUMPBITS(3)
-- t = k & 7; /* go to byte boundary */
-- DUMPBITS(t)
-- s->mode = LENS; /* get length of stored block */
-- break;
-- case 1: /* fixed */
-- {
-- uInt bl, bd;
-- inflate_huft *tl, *td;
--
-- zlib_inflate_trees_fixed(&bl, &bd, &tl, &td, z);
-- s->sub.decode.codes = zlib_inflate_codes_new(bl, bd, tl, td, z);
-- if (s->sub.decode.codes == Z_NULL)
-- {
-- r = Z_MEM_ERROR;
-- LEAVE
-- }
-- }
-- DUMPBITS(3)
-- s->mode = CODES;
-- break;
-- case 2: /* dynamic */
-- DUMPBITS(3)
-- s->mode = TABLE;
-- break;
-- case 3: /* illegal */
-- DUMPBITS(3)
-- s->mode = B_BAD;
-- z->msg = (char*)"invalid block type";
-- r = Z_DATA_ERROR;
-- LEAVE
-- }
-- break;
-- case LENS:
-- NEEDBITS(32)
-- if ((((~b) >> 16) & 0xffff) != (b & 0xffff))
-- {
-- s->mode = B_BAD;
-- z->msg = (char*)"invalid stored block lengths";
-- r = Z_DATA_ERROR;
-- LEAVE
-- }
-- s->sub.left = (uInt)b & 0xffff;
-- b = k = 0; /* dump bits */
-- s->mode = s->sub.left ? STORED : (s->last ? DRY : TYPE);
-- break;
-- case STORED:
-- if (n == 0)
-- LEAVE
-- NEEDOUT
-- t = s->sub.left;
-- if (t > n) t = n;
-- if (t > m) t = m;
-- memcpy(q, p, t);
-- p += t; n -= t;
-- q += t; m -= t;
-- if ((s->sub.left -= t) != 0)
-- break;
-- s->mode = s->last ? DRY : TYPE;
-- break;
-- case TABLE:
-- NEEDBITS(14)
-- s->sub.trees.table = t = (uInt)b & 0x3fff;
--#ifndef PKZIP_BUG_WORKAROUND
-- if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29)
-- {
-- s->mode = B_BAD;
-- z->msg = (char*)"too many length or distance symbols";
-- r = Z_DATA_ERROR;
-- LEAVE
-- }
--#endif
-- {
-- s->sub.trees.blens = WS(z)->working_blens;
-- }
-- DUMPBITS(14)
-- s->sub.trees.index = 0;
-- s->mode = BTREE;
-- case BTREE:
-- while (s->sub.trees.index < 4 + (s->sub.trees.table >> 10))
-- {
-- NEEDBITS(3)
-- s->sub.trees.blens[border[s->sub.trees.index++]] = (uInt)b & 7;
-- DUMPBITS(3)
-- }
-- while (s->sub.trees.index < 19)
-- s->sub.trees.blens[border[s->sub.trees.index++]] = 0;
-- s->sub.trees.bb = 7;
-- t = zlib_inflate_trees_bits(s->sub.trees.blens, &s->sub.trees.bb,
-- &s->sub.trees.tb, s->hufts, z);
-- if (t != Z_OK)
-- {
-- r = t;
-- if (r == Z_DATA_ERROR)
-- s->mode = B_BAD;
-- LEAVE
-- }
-- s->sub.trees.index = 0;
-- s->mode = DTREE;
-- case DTREE:
-- while (t = s->sub.trees.table,
-- s->sub.trees.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))
-- {
-- inflate_huft *h;
-- uInt i, j, c;
--
-- t = s->sub.trees.bb;
-- NEEDBITS(t)
-- h = s->sub.trees.tb + ((uInt)b & zlib_inflate_mask[t]);
-- t = h->bits;
-- c = h->base;
-- if (c < 16)
-- {
-- DUMPBITS(t)
-- s->sub.trees.blens[s->sub.trees.index++] = c;
-- }
-- else /* c == 16..18 */
-- {
-- i = c == 18 ? 7 : c - 14;
-- j = c == 18 ? 11 : 3;
-- NEEDBITS(t + i)
-- DUMPBITS(t)
-- j += (uInt)b & zlib_inflate_mask[i];
-- DUMPBITS(i)
-- i = s->sub.trees.index;
-- t = s->sub.trees.table;
-- if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) ||
-- (c == 16 && i < 1))
-- {
-- s->mode = B_BAD;
-- z->msg = (char*)"invalid bit length repeat";
-- r = Z_DATA_ERROR;
-- LEAVE
-- }
-- c = c == 16 ? s->sub.trees.blens[i - 1] : 0;
-- do {
-- s->sub.trees.blens[i++] = c;
-- } while (--j);
-- s->sub.trees.index = i;
-- }
-- }
-- s->sub.trees.tb = Z_NULL;
-- {
-- uInt bl, bd;
-- inflate_huft *tl, *td;
-- inflate_codes_statef *c;
--
-- bl = 9; /* must be <= 9 for lookahead assumptions */
-- bd = 6; /* must be <= 9 for lookahead assumptions */
-- t = s->sub.trees.table;
-- t = zlib_inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f),
-- s->sub.trees.blens, &bl, &bd, &tl, &td,
-- s->hufts, z);
-- if (t != Z_OK)
-- {
-- if (t == (uInt)Z_DATA_ERROR)
-- s->mode = B_BAD;
-- r = t;
-- LEAVE
-- }
-- if ((c = zlib_inflate_codes_new(bl, bd, tl, td, z)) == Z_NULL)
-- {
-- r = Z_MEM_ERROR;
-- LEAVE
-- }
-- s->sub.decode.codes = c;
-- }
-- s->mode = CODES;
-- case CODES:
-- UPDATE
-- if ((r = zlib_inflate_codes(s, z, r)) != Z_STREAM_END)
-- return zlib_inflate_flush(s, z, r);
-- r = Z_OK;
-- zlib_inflate_codes_free(s->sub.decode.codes, z);
-- LOAD
-- if (!s->last)
-- {
-- s->mode = TYPE;
-- break;
-- }
-- s->mode = DRY;
-- case DRY:
-- FLUSH
-- if (s->read != s->write)
-- LEAVE
-- s->mode = B_DONE;
-- case B_DONE:
-- r = Z_STREAM_END;
-- LEAVE
-- case B_BAD:
-- r = Z_DATA_ERROR;
-- LEAVE
-- default:
-- r = Z_STREAM_ERROR;
-- LEAVE
-- }
--}
--
--
--int zlib_inflate_blocks_free(s, z)
--inflate_blocks_statef *s;
--z_streamp z;
--{
-- zlib_inflate_blocks_reset(s, z, Z_NULL);
-- return Z_OK;
--}
--
--
--void zlib_inflate_set_dictionary(s, d, n)
--inflate_blocks_statef *s;
--const Bytef *d;
--uInt n;
--{
-- memcpy(s->window, d, n);
-- s->read = s->write = s->window + n;
--}
--
--
--/* Returns true if inflate is currently at the end of a block generated
-- * by Z_SYNC_FLUSH or Z_FULL_FLUSH.
-- * IN assertion: s != Z_NULL
-- */
--int zlib_inflate_blocks_sync_point(s)
--inflate_blocks_statef *s;
--{
-- return s->mode == LENS;
--}
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/infblock.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infblock.h
---- linux/fs/jffs2/compressors/zlib_inflate/infblock.h 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infblock.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,44 +0,0 @@
--/* infblock.h -- header to use infblock.c
-- * Copyright (C) 1995-1998 Mark Adler
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--/* WARNING: this file should *not* be used by applications. It is
-- part of the implementation of the compression library and is
-- subject to change. Applications should only use zlib.h.
-- */
--
--#ifndef _INFBLOCK_H
--#define _INFBLOCK_H
--
--struct inflate_blocks_state;
--typedef struct inflate_blocks_state FAR inflate_blocks_statef;
--
--extern inflate_blocks_statef * zlib_inflate_blocks_new OF((
-- z_streamp z,
-- check_func c, /* check function */
-- uInt w)); /* window size */
--
--extern int zlib_inflate_blocks OF((
-- inflate_blocks_statef *,
-- z_streamp ,
-- int)); /* initial return code */
--
--extern void zlib_inflate_blocks_reset OF((
-- inflate_blocks_statef *,
-- z_streamp ,
-- uLongf *)); /* check value on output */
--
--extern int zlib_inflate_blocks_free OF((
-- inflate_blocks_statef *,
-- z_streamp));
--
--extern void zlib_inflate_set_dictionary OF((
-- inflate_blocks_statef *s,
-- const Bytef *d, /* dictionary */
-- uInt n)); /* dictionary length */
--
--extern int zlib_inflate_blocks_sync_point OF((
-- inflate_blocks_statef *s));
--
--#endif /* _INFBLOCK_H */
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/infcodes.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infcodes.c
---- linux/fs/jffs2/compressors/zlib_inflate/infcodes.c 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infcodes.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,204 +0,0 @@
--/* infcodes.c -- process literals and length/distance pairs
-- * Copyright (C) 1995-1998 Mark Adler
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--#include <linux/zutil.h>
--#include "inftrees.h"
--#include "infblock.h"
--#include "infcodes.h"
--#include "infutil.h"
--#include "inffast.h"
--
--/* simplify the use of the inflate_huft type with some defines */
--#define exop word.what.Exop
--#define bits word.what.Bits
--
--inflate_codes_statef *zlib_inflate_codes_new(bl, bd, tl, td, z)
--uInt bl, bd;
--inflate_huft *tl;
--inflate_huft *td; /* need separate declaration for Borland C++ */
--z_streamp z;
--{
-- inflate_codes_statef *c;
--
-- c = &WS(z)->working_state;
-- {
-- c->mode = START;
-- c->lbits = (Byte)bl;
-- c->dbits = (Byte)bd;
-- c->ltree = tl;
-- c->dtree = td;
-- }
-- return c;
--}
--
--
--int zlib_inflate_codes(s, z, r)
--inflate_blocks_statef *s;
--z_streamp z;
--int r;
--{
-- uInt j; /* temporary storage */
-- inflate_huft *t; /* temporary pointer */
-- uInt e; /* extra bits or operation */
-- uLong b; /* bit buffer */
-- uInt k; /* bits in bit buffer */
-- Bytef *p; /* input data pointer */
-- uInt n; /* bytes available there */
-- Bytef *q; /* output window write pointer */
-- uInt m; /* bytes to end of window or read pointer */
-- Bytef *f; /* pointer to copy strings from */
-- inflate_codes_statef *c = s->sub.decode.codes; /* codes state */
--
-- /* copy input/output information to locals (UPDATE macro restores) */
-- LOAD
--
-- /* process input and output based on current state */
-- while (1) switch (c->mode)
-- { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
-- case START: /* x: set up for LEN */
--#ifndef SLOW
-- if (m >= 258 && n >= 10)
-- {
-- UPDATE
-- r = zlib_inflate_fast(c->lbits, c->dbits, c->ltree, c->dtree, s, z);
-- LOAD
-- if (r != Z_OK)
-- {
-- c->mode = r == Z_STREAM_END ? WASH : BADCODE;
-- break;
-- }
-- }
--#endif /* !SLOW */
-- c->sub.code.need = c->lbits;
-- c->sub.code.tree = c->ltree;
-- c->mode = LEN;
-- case LEN: /* i: get length/literal/eob next */
-- j = c->sub.code.need;
-- NEEDBITS(j)
-- t = c->sub.code.tree + ((uInt)b & zlib_inflate_mask[j]);
-- DUMPBITS(t->bits)
-- e = (uInt)(t->exop);
-- if (e == 0) /* literal */
-- {
-- c->sub.lit = t->base;
-- c->mode = LIT;
-- break;
-- }
-- if (e & 16) /* length */
-- {
-- c->sub.copy.get = e & 15;
-- c->len = t->base;
-- c->mode = LENEXT;
-- break;
-- }
-- if ((e & 64) == 0) /* next table */
-- {
-- c->sub.code.need = e;
-- c->sub.code.tree = t + t->base;
-- break;
-- }
-- if (e & 32) /* end of block */
-- {
-- c->mode = WASH;
-- break;
-- }
-- c->mode = BADCODE; /* invalid code */
-- z->msg = (char*)"invalid literal/length code";
-- r = Z_DATA_ERROR;
-- LEAVE
-- case LENEXT: /* i: getting length extra (have base) */
-- j = c->sub.copy.get;
-- NEEDBITS(j)
-- c->len += (uInt)b & zlib_inflate_mask[j];
-- DUMPBITS(j)
-- c->sub.code.need = c->dbits;
-- c->sub.code.tree = c->dtree;
-- c->mode = DIST;
-- case DIST: /* i: get distance next */
-- j = c->sub.code.need;
-- NEEDBITS(j)
-- t = c->sub.code.tree + ((uInt)b & zlib_inflate_mask[j]);
-- DUMPBITS(t->bits)
-- e = (uInt)(t->exop);
-- if (e & 16) /* distance */
-- {
-- c->sub.copy.get = e & 15;
-- c->sub.copy.dist = t->base;
-- c->mode = DISTEXT;
-- break;
-- }
-- if ((e & 64) == 0) /* next table */
-- {
-- c->sub.code.need = e;
-- c->sub.code.tree = t + t->base;
-- break;
-- }
-- c->mode = BADCODE; /* invalid code */
-- z->msg = (char*)"invalid distance code";
-- r = Z_DATA_ERROR;
-- LEAVE
-- case DISTEXT: /* i: getting distance extra */
-- j = c->sub.copy.get;
-- NEEDBITS(j)
-- c->sub.copy.dist += (uInt)b & zlib_inflate_mask[j];
-- DUMPBITS(j)
-- c->mode = COPY;
-- case COPY: /* o: copying bytes in window, waiting for space */
--#ifndef __TURBOC__ /* Turbo C bug for following expression */
-- f = (uInt)(q - s->window) < c->sub.copy.dist ?
-- s->end - (c->sub.copy.dist - (q - s->window)) :
-- q - c->sub.copy.dist;
--#else
-- f = q - c->sub.copy.dist;
-- if ((uInt)(q - s->window) < c->sub.copy.dist)
-- f = s->end - (c->sub.copy.dist - (uInt)(q - s->window));
--#endif
-- while (c->len)
-- {
-- NEEDOUT
-- OUTBYTE(*f++)
-- if (f == s->end)
-- f = s->window;
-- c->len--;
-- }
-- c->mode = START;
-- break;
-- case LIT: /* o: got literal, waiting for output space */
-- NEEDOUT
-- OUTBYTE(c->sub.lit)
-- c->mode = START;
-- break;
-- case WASH: /* o: got eob, possibly more output */
-- if (k > 7) /* return unused byte, if any */
-- {
-- k -= 8;
-- n++;
-- p--; /* can always return one */
-- }
-- FLUSH
-- if (s->read != s->write)
-- LEAVE
-- c->mode = END;
-- case END:
-- r = Z_STREAM_END;
-- LEAVE
-- case BADCODE: /* x: got error */
-- r = Z_DATA_ERROR;
-- LEAVE
-- default:
-- r = Z_STREAM_ERROR;
-- LEAVE
-- }
--#ifdef NEED_DUMMY_RETURN
-- return Z_STREAM_ERROR; /* Some dumb compilers complain without this */
--#endif
--}
--
--
--void zlib_inflate_codes_free(c, z)
--inflate_codes_statef *c;
--z_streamp z;
--{
--}
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/infcodes.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infcodes.h
---- linux/fs/jffs2/compressors/zlib_inflate/infcodes.h 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infcodes.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,33 +0,0 @@
--/* infcodes.h -- header to use infcodes.c
-- * Copyright (C) 1995-1998 Mark Adler
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--/* WARNING: this file should *not* be used by applications. It is
-- part of the implementation of the compression library and is
-- subject to change. Applications should only use zlib.h.
-- */
--
--#ifndef _INFCODES_H
--#define _INFCODES_H
--
--#include "infblock.h"
--
--struct inflate_codes_state;
--typedef struct inflate_codes_state FAR inflate_codes_statef;
--
--extern inflate_codes_statef *zlib_inflate_codes_new OF((
-- uInt, uInt,
-- inflate_huft *, inflate_huft *,
-- z_streamp ));
--
--extern int zlib_inflate_codes OF((
-- inflate_blocks_statef *,
-- z_streamp ,
-- int));
--
--extern void zlib_inflate_codes_free OF((
-- inflate_codes_statef *,
-- z_streamp ));
--
--#endif /* _INFCODES_H */
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/inffast.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inffast.c
---- linux/fs/jffs2/compressors/zlib_inflate/inffast.c 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inffast.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,161 +0,0 @@
--/* inffast.c -- process literals and length/distance pairs fast
-- * Copyright (C) 1995-1998 Mark Adler
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--#include <linux/zutil.h>
--#include "inftrees.h"
--#include "infblock.h"
--#include "infcodes.h"
--#include "infutil.h"
--#include "inffast.h"
--
--struct inflate_codes_state;
--
--/* simplify the use of the inflate_huft type with some defines */
--#define exop word.what.Exop
--#define bits word.what.Bits
--
--/* macros for bit input with no checking and for returning unused bytes */
--#define GRABBITS(j) {while(k<(j)){b|=((uLong)NEXTBYTE)<<k;k+=8;}}
--#define UNGRAB {c=z->avail_in-n;c=(k>>3)<c?k>>3:c;n+=c;p-=c;k-=c<<3;}
--
--/* Called with number of bytes left to write in window at least 258
-- (the maximum string length) and number of input bytes available
-- at least ten. The ten bytes are six bytes for the longest length/
-- distance pair plus four bytes for overloading the bit buffer. */
--
--int zlib_inflate_fast(bl, bd, tl, td, s, z)
--uInt bl, bd;
--inflate_huft *tl;
--inflate_huft *td; /* need separate declaration for Borland C++ */
--inflate_blocks_statef *s;
--z_streamp z;
--{
-- inflate_huft *t; /* temporary pointer */
-- uInt e; /* extra bits or operation */
-- uLong b; /* bit buffer */
-- uInt k; /* bits in bit buffer */
-- Bytef *p; /* input data pointer */
-- uInt n; /* bytes available there */
-- Bytef *q; /* output window write pointer */
-- uInt m; /* bytes to end of window or read pointer */
-- uInt ml; /* mask for literal/length tree */
-- uInt md; /* mask for distance tree */
-- uInt c; /* bytes to copy */
-- uInt d; /* distance back to copy from */
-- Bytef *r; /* copy source pointer */
--
-- /* load input, output, bit values */
-- LOAD
--
-- /* initialize masks */
-- ml = zlib_inflate_mask[bl];
-- md = zlib_inflate_mask[bd];
--
-- /* do until not enough input or output space for fast loop */
-- do { /* assume called with m >= 258 && n >= 10 */
-- /* get literal/length code */
-- GRABBITS(20) /* max bits for literal/length code */
-- if ((e = (t = tl + ((uInt)b & ml))->exop) == 0)
-- {
-- DUMPBITS(t->bits)
-- *q++ = (Byte)t->base;
-- m--;
-- continue;
-- }
-- do {
-- DUMPBITS(t->bits)
-- if (e & 16)
-- {
-- /* get extra bits for length */
-- e &= 15;
-- c = t->base + ((uInt)b & zlib_inflate_mask[e]);
-- DUMPBITS(e)
--
-- /* decode distance base of block to copy */
-- GRABBITS(15); /* max bits for distance code */
-- e = (t = td + ((uInt)b & md))->exop;
-- do {
-- DUMPBITS(t->bits)
-- if (e & 16)
-- {
-- /* get extra bits to add to distance base */
-- e &= 15;
-- GRABBITS(e) /* get extra bits (up to 13) */
-- d = t->base + ((uInt)b & zlib_inflate_mask[e]);
-- DUMPBITS(e)
--
-- /* do the copy */
-- m -= c;
-- if ((uInt)(q - s->window) >= d) /* offset before dest */
-- { /* just copy */
-- r = q - d;
-- *q++ = *r++; c--; /* minimum count is three, */
-- *q++ = *r++; c--; /* so unroll loop a little */
-- }
-- else /* else offset after destination */
-- {
-- e = d - (uInt)(q - s->window); /* bytes from offset to end */
-- r = s->end - e; /* pointer to offset */
-- if (c > e) /* if source crosses, */
-- {
-- c -= e; /* copy to end of window */
-- do {
-- *q++ = *r++;
-- } while (--e);
-- r = s->window; /* copy rest from start of window */
-- }
-- }
-- do { /* copy all or what's left */
-- *q++ = *r++;
-- } while (--c);
-- break;
-- }
-- else if ((e & 64) == 0)
-- {
-- t += t->base;
-- e = (t += ((uInt)b & zlib_inflate_mask[e]))->exop;
-- }
-- else
-- {
-- z->msg = (char*)"invalid distance code";
-- UNGRAB
-- UPDATE
-- return Z_DATA_ERROR;
-- }
-- } while (1);
-- break;
-- }
-- if ((e & 64) == 0)
-- {
-- t += t->base;
-- if ((e = (t += ((uInt)b & zlib_inflate_mask[e]))->exop) == 0)
-- {
-- DUMPBITS(t->bits)
-- *q++ = (Byte)t->base;
-- m--;
-- break;
-- }
-- }
-- else if (e & 32)
-- {
-- UNGRAB
-- UPDATE
-- return Z_STREAM_END;
-- }
-- else
-- {
-- z->msg = (char*)"invalid literal/length code";
-- UNGRAB
-- UPDATE
-- return Z_DATA_ERROR;
-- }
-- } while (1);
-- } while (m >= 258 && n >= 10);
--
-- /* not enough input or output--restore pointers and return */
-- UNGRAB
-- UPDATE
-- return Z_OK;
--}
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/inffast.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inffast.h
---- linux/fs/jffs2/compressors/zlib_inflate/inffast.h 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inffast.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,17 +0,0 @@
--/* inffast.h -- header to use inffast.c
-- * Copyright (C) 1995-1998 Mark Adler
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--/* WARNING: this file should *not* be used by applications. It is
-- part of the implementation of the compression library and is
-- subject to change. Applications should only use zlib.h.
-- */
--
--extern int zlib_inflate_fast OF((
-- uInt,
-- uInt,
-- inflate_huft *,
-- inflate_huft *,
-- inflate_blocks_statef *,
-- z_streamp ));
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/inffixed.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inffixed.h
---- linux/fs/jffs2/compressors/zlib_inflate/inffixed.h 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inffixed.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,151 +0,0 @@
--/* inffixed.h -- table for decoding fixed codes
-- * Generated automatically by the maketree.c program
-- */
--
--/* WARNING: this file should *not* be used by applications. It is
-- part of the implementation of the compression library and is
-- subject to change. Applications should only use zlib.h.
-- */
--
--local uInt fixed_bl = 9;
--local uInt fixed_bd = 5;
--local inflate_huft fixed_tl[] = {
-- {{{96,7}},256}, {{{0,8}},80}, {{{0,8}},16}, {{{84,8}},115},
-- {{{82,7}},31}, {{{0,8}},112}, {{{0,8}},48}, {{{0,9}},192},
-- {{{80,7}},10}, {{{0,8}},96}, {{{0,8}},32}, {{{0,9}},160},
-- {{{0,8}},0}, {{{0,8}},128}, {{{0,8}},64}, {{{0,9}},224},
-- {{{80,7}},6}, {{{0,8}},88}, {{{0,8}},24}, {{{0,9}},144},
-- {{{83,7}},59}, {{{0,8}},120}, {{{0,8}},56}, {{{0,9}},208},
-- {{{81,7}},17}, {{{0,8}},104}, {{{0,8}},40}, {{{0,9}},176},
-- {{{0,8}},8}, {{{0,8}},136}, {{{0,8}},72}, {{{0,9}},240},
-- {{{80,7}},4}, {{{0,8}},84}, {{{0,8}},20}, {{{85,8}},227},
-- {{{83,7}},43}, {{{0,8}},116}, {{{0,8}},52}, {{{0,9}},200},
-- {{{81,7}},13}, {{{0,8}},100}, {{{0,8}},36}, {{{0,9}},168},
-- {{{0,8}},4}, {{{0,8}},132}, {{{0,8}},68}, {{{0,9}},232},
-- {{{80,7}},8}, {{{0,8}},92}, {{{0,8}},28}, {{{0,9}},152},
-- {{{84,7}},83}, {{{0,8}},124}, {{{0,8}},60}, {{{0,9}},216},
-- {{{82,7}},23}, {{{0,8}},108}, {{{0,8}},44}, {{{0,9}},184},
-- {{{0,8}},12}, {{{0,8}},140}, {{{0,8}},76}, {{{0,9}},248},
-- {{{80,7}},3}, {{{0,8}},82}, {{{0,8}},18}, {{{85,8}},163},
-- {{{83,7}},35}, {{{0,8}},114}, {{{0,8}},50}, {{{0,9}},196},
-- {{{81,7}},11}, {{{0,8}},98}, {{{0,8}},34}, {{{0,9}},164},
-- {{{0,8}},2}, {{{0,8}},130}, {{{0,8}},66}, {{{0,9}},228},
-- {{{80,7}},7}, {{{0,8}},90}, {{{0,8}},26}, {{{0,9}},148},
-- {{{84,7}},67}, {{{0,8}},122}, {{{0,8}},58}, {{{0,9}},212},
-- {{{82,7}},19}, {{{0,8}},106}, {{{0,8}},42}, {{{0,9}},180},
-- {{{0,8}},10}, {{{0,8}},138}, {{{0,8}},74}, {{{0,9}},244},
-- {{{80,7}},5}, {{{0,8}},86}, {{{0,8}},22}, {{{192,8}},0},
-- {{{83,7}},51}, {{{0,8}},118}, {{{0,8}},54}, {{{0,9}},204},
-- {{{81,7}},15}, {{{0,8}},102}, {{{0,8}},38}, {{{0,9}},172},
-- {{{0,8}},6}, {{{0,8}},134}, {{{0,8}},70}, {{{0,9}},236},
-- {{{80,7}},9}, {{{0,8}},94}, {{{0,8}},30}, {{{0,9}},156},
-- {{{84,7}},99}, {{{0,8}},126}, {{{0,8}},62}, {{{0,9}},220},
-- {{{82,7}},27}, {{{0,8}},110}, {{{0,8}},46}, {{{0,9}},188},
-- {{{0,8}},14}, {{{0,8}},142}, {{{0,8}},78}, {{{0,9}},252},
-- {{{96,7}},256}, {{{0,8}},81}, {{{0,8}},17}, {{{85,8}},131},
-- {{{82,7}},31}, {{{0,8}},113}, {{{0,8}},49}, {{{0,9}},194},
-- {{{80,7}},10}, {{{0,8}},97}, {{{0,8}},33}, {{{0,9}},162},
-- {{{0,8}},1}, {{{0,8}},129}, {{{0,8}},65}, {{{0,9}},226},
-- {{{80,7}},6}, {{{0,8}},89}, {{{0,8}},25}, {{{0,9}},146},
-- {{{83,7}},59}, {{{0,8}},121}, {{{0,8}},57}, {{{0,9}},210},
-- {{{81,7}},17}, {{{0,8}},105}, {{{0,8}},41}, {{{0,9}},178},
-- {{{0,8}},9}, {{{0,8}},137}, {{{0,8}},73}, {{{0,9}},242},
-- {{{80,7}},4}, {{{0,8}},85}, {{{0,8}},21}, {{{80,8}},258},
-- {{{83,7}},43}, {{{0,8}},117}, {{{0,8}},53}, {{{0,9}},202},
-- {{{81,7}},13}, {{{0,8}},101}, {{{0,8}},37}, {{{0,9}},170},
-- {{{0,8}},5}, {{{0,8}},133}, {{{0,8}},69}, {{{0,9}},234},
-- {{{80,7}},8}, {{{0,8}},93}, {{{0,8}},29}, {{{0,9}},154},
-- {{{84,7}},83}, {{{0,8}},125}, {{{0,8}},61}, {{{0,9}},218},
-- {{{82,7}},23}, {{{0,8}},109}, {{{0,8}},45}, {{{0,9}},186},
-- {{{0,8}},13}, {{{0,8}},141}, {{{0,8}},77}, {{{0,9}},250},
-- {{{80,7}},3}, {{{0,8}},83}, {{{0,8}},19}, {{{85,8}},195},
-- {{{83,7}},35}, {{{0,8}},115}, {{{0,8}},51}, {{{0,9}},198},
-- {{{81,7}},11}, {{{0,8}},99}, {{{0,8}},35}, {{{0,9}},166},
-- {{{0,8}},3}, {{{0,8}},131}, {{{0,8}},67}, {{{0,9}},230},
-- {{{80,7}},7}, {{{0,8}},91}, {{{0,8}},27}, {{{0,9}},150},
-- {{{84,7}},67}, {{{0,8}},123}, {{{0,8}},59}, {{{0,9}},214},
-- {{{82,7}},19}, {{{0,8}},107}, {{{0,8}},43}, {{{0,9}},182},
-- {{{0,8}},11}, {{{0,8}},139}, {{{0,8}},75}, {{{0,9}},246},
-- {{{80,7}},5}, {{{0,8}},87}, {{{0,8}},23}, {{{192,8}},0},
-- {{{83,7}},51}, {{{0,8}},119}, {{{0,8}},55}, {{{0,9}},206},
-- {{{81,7}},15}, {{{0,8}},103}, {{{0,8}},39}, {{{0,9}},174},
-- {{{0,8}},7}, {{{0,8}},135}, {{{0,8}},71}, {{{0,9}},238},
-- {{{80,7}},9}, {{{0,8}},95}, {{{0,8}},31}, {{{0,9}},158},
-- {{{84,7}},99}, {{{0,8}},127}, {{{0,8}},63}, {{{0,9}},222},
-- {{{82,7}},27}, {{{0,8}},111}, {{{0,8}},47}, {{{0,9}},190},
-- {{{0,8}},15}, {{{0,8}},143}, {{{0,8}},79}, {{{0,9}},254},
-- {{{96,7}},256}, {{{0,8}},80}, {{{0,8}},16}, {{{84,8}},115},
-- {{{82,7}},31}, {{{0,8}},112}, {{{0,8}},48}, {{{0,9}},193},
-- {{{80,7}},10}, {{{0,8}},96}, {{{0,8}},32}, {{{0,9}},161},
-- {{{0,8}},0}, {{{0,8}},128}, {{{0,8}},64}, {{{0,9}},225},
-- {{{80,7}},6}, {{{0,8}},88}, {{{0,8}},24}, {{{0,9}},145},
-- {{{83,7}},59}, {{{0,8}},120}, {{{0,8}},56}, {{{0,9}},209},
-- {{{81,7}},17}, {{{0,8}},104}, {{{0,8}},40}, {{{0,9}},177},
-- {{{0,8}},8}, {{{0,8}},136}, {{{0,8}},72}, {{{0,9}},241},
-- {{{80,7}},4}, {{{0,8}},84}, {{{0,8}},20}, {{{85,8}},227},
-- {{{83,7}},43}, {{{0,8}},116}, {{{0,8}},52}, {{{0,9}},201},
-- {{{81,7}},13}, {{{0,8}},100}, {{{0,8}},36}, {{{0,9}},169},
-- {{{0,8}},4}, {{{0,8}},132}, {{{0,8}},68}, {{{0,9}},233},
-- {{{80,7}},8}, {{{0,8}},92}, {{{0,8}},28}, {{{0,9}},153},
-- {{{84,7}},83}, {{{0,8}},124}, {{{0,8}},60}, {{{0,9}},217},
-- {{{82,7}},23}, {{{0,8}},108}, {{{0,8}},44}, {{{0,9}},185},
-- {{{0,8}},12}, {{{0,8}},140}, {{{0,8}},76}, {{{0,9}},249},
-- {{{80,7}},3}, {{{0,8}},82}, {{{0,8}},18}, {{{85,8}},163},
-- {{{83,7}},35}, {{{0,8}},114}, {{{0,8}},50}, {{{0,9}},197},
-- {{{81,7}},11}, {{{0,8}},98}, {{{0,8}},34}, {{{0,9}},165},
-- {{{0,8}},2}, {{{0,8}},130}, {{{0,8}},66}, {{{0,9}},229},
-- {{{80,7}},7}, {{{0,8}},90}, {{{0,8}},26}, {{{0,9}},149},
-- {{{84,7}},67}, {{{0,8}},122}, {{{0,8}},58}, {{{0,9}},213},
-- {{{82,7}},19}, {{{0,8}},106}, {{{0,8}},42}, {{{0,9}},181},
-- {{{0,8}},10}, {{{0,8}},138}, {{{0,8}},74}, {{{0,9}},245},
-- {{{80,7}},5}, {{{0,8}},86}, {{{0,8}},22}, {{{192,8}},0},
-- {{{83,7}},51}, {{{0,8}},118}, {{{0,8}},54}, {{{0,9}},205},
-- {{{81,7}},15}, {{{0,8}},102}, {{{0,8}},38}, {{{0,9}},173},
-- {{{0,8}},6}, {{{0,8}},134}, {{{0,8}},70}, {{{0,9}},237},
-- {{{80,7}},9}, {{{0,8}},94}, {{{0,8}},30}, {{{0,9}},157},
-- {{{84,7}},99}, {{{0,8}},126}, {{{0,8}},62}, {{{0,9}},221},
-- {{{82,7}},27}, {{{0,8}},110}, {{{0,8}},46}, {{{0,9}},189},
-- {{{0,8}},14}, {{{0,8}},142}, {{{0,8}},78}, {{{0,9}},253},
-- {{{96,7}},256}, {{{0,8}},81}, {{{0,8}},17}, {{{85,8}},131},
-- {{{82,7}},31}, {{{0,8}},113}, {{{0,8}},49}, {{{0,9}},195},
-- {{{80,7}},10}, {{{0,8}},97}, {{{0,8}},33}, {{{0,9}},163},
-- {{{0,8}},1}, {{{0,8}},129}, {{{0,8}},65}, {{{0,9}},227},
-- {{{80,7}},6}, {{{0,8}},89}, {{{0,8}},25}, {{{0,9}},147},
-- {{{83,7}},59}, {{{0,8}},121}, {{{0,8}},57}, {{{0,9}},211},
-- {{{81,7}},17}, {{{0,8}},105}, {{{0,8}},41}, {{{0,9}},179},
-- {{{0,8}},9}, {{{0,8}},137}, {{{0,8}},73}, {{{0,9}},243},
-- {{{80,7}},4}, {{{0,8}},85}, {{{0,8}},21}, {{{80,8}},258},
-- {{{83,7}},43}, {{{0,8}},117}, {{{0,8}},53}, {{{0,9}},203},
-- {{{81,7}},13}, {{{0,8}},101}, {{{0,8}},37}, {{{0,9}},171},
-- {{{0,8}},5}, {{{0,8}},133}, {{{0,8}},69}, {{{0,9}},235},
-- {{{80,7}},8}, {{{0,8}},93}, {{{0,8}},29}, {{{0,9}},155},
-- {{{84,7}},83}, {{{0,8}},125}, {{{0,8}},61}, {{{0,9}},219},
-- {{{82,7}},23}, {{{0,8}},109}, {{{0,8}},45}, {{{0,9}},187},
-- {{{0,8}},13}, {{{0,8}},141}, {{{0,8}},77}, {{{0,9}},251},
-- {{{80,7}},3}, {{{0,8}},83}, {{{0,8}},19}, {{{85,8}},195},
-- {{{83,7}},35}, {{{0,8}},115}, {{{0,8}},51}, {{{0,9}},199},
-- {{{81,7}},11}, {{{0,8}},99}, {{{0,8}},35}, {{{0,9}},167},
-- {{{0,8}},3}, {{{0,8}},131}, {{{0,8}},67}, {{{0,9}},231},
-- {{{80,7}},7}, {{{0,8}},91}, {{{0,8}},27}, {{{0,9}},151},
-- {{{84,7}},67}, {{{0,8}},123}, {{{0,8}},59}, {{{0,9}},215},
-- {{{82,7}},19}, {{{0,8}},107}, {{{0,8}},43}, {{{0,9}},183},
-- {{{0,8}},11}, {{{0,8}},139}, {{{0,8}},75}, {{{0,9}},247},
-- {{{80,7}},5}, {{{0,8}},87}, {{{0,8}},23}, {{{192,8}},0},
-- {{{83,7}},51}, {{{0,8}},119}, {{{0,8}},55}, {{{0,9}},207},
-- {{{81,7}},15}, {{{0,8}},103}, {{{0,8}},39}, {{{0,9}},175},
-- {{{0,8}},7}, {{{0,8}},135}, {{{0,8}},71}, {{{0,9}},239},
-- {{{80,7}},9}, {{{0,8}},95}, {{{0,8}},31}, {{{0,9}},159},
-- {{{84,7}},99}, {{{0,8}},127}, {{{0,8}},63}, {{{0,9}},223},
-- {{{82,7}},27}, {{{0,8}},111}, {{{0,8}},47}, {{{0,9}},191},
-- {{{0,8}},15}, {{{0,8}},143}, {{{0,8}},79}, {{{0,9}},255}
-- };
--local inflate_huft fixed_td[] = {
-- {{{80,5}},1}, {{{87,5}},257}, {{{83,5}},17}, {{{91,5}},4097},
-- {{{81,5}},5}, {{{89,5}},1025}, {{{85,5}},65}, {{{93,5}},16385},
-- {{{80,5}},3}, {{{88,5}},513}, {{{84,5}},33}, {{{92,5}},8193},
-- {{{82,5}},9}, {{{90,5}},2049}, {{{86,5}},129}, {{{192,5}},24577},
-- {{{80,5}},2}, {{{87,5}},385}, {{{83,5}},25}, {{{91,5}},6145},
-- {{{81,5}},7}, {{{89,5}},1537}, {{{85,5}},97}, {{{93,5}},24577},
-- {{{80,5}},4}, {{{88,5}},769}, {{{84,5}},49}, {{{92,5}},12289},
-- {{{82,5}},13}, {{{90,5}},3073}, {{{86,5}},193}, {{{192,5}},24577}
-- };
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/inflate.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inflate.c
---- linux/fs/jffs2/compressors/zlib_inflate/inflate.c 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inflate.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,382 +0,0 @@
--/* inflate.c -- zlib interface to inflate modules
-- * Copyright (C) 1995-1998 Mark Adler
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--#include <linux/module.h>
--#include <linux/zutil.h>
--#include "infblock.h"
--#include "infutil.h"
--
--int ZEXPORT zlib_inflate_workspacesize(void)
--{
-- return sizeof(struct inflate_workspace);
--}
--
--
--int ZEXPORT zlib_inflateReset(z)
--z_streamp z;
--{
-- if (z == Z_NULL || z->state == Z_NULL || z->workspace == Z_NULL)
-- return Z_STREAM_ERROR;
-- z->total_in = z->total_out = 0;
-- z->msg = Z_NULL;
-- z->state->mode = z->state->nowrap ? BLOCKS : METHOD;
-- zlib_inflate_blocks_reset(z->state->blocks, z, Z_NULL);
-- return Z_OK;
--}
--
--
--int ZEXPORT zlib_inflateEnd(z)
--z_streamp z;
--{
-- if (z == Z_NULL || z->state == Z_NULL || z->workspace == Z_NULL)
-- return Z_STREAM_ERROR;
-- if (z->state->blocks != Z_NULL)
-- zlib_inflate_blocks_free(z->state->blocks, z);
-- z->state = Z_NULL;
-- return Z_OK;
--}
--
--
--int ZEXPORT zlib_inflateInit2_(z, w, version, stream_size)
--z_streamp z;
--int w;
--const char *version;
--int stream_size;
--{
-- if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
-- stream_size != sizeof(z_stream) || z->workspace == Z_NULL)
-- return Z_VERSION_ERROR;
--
-- /* initialize state */
-- if (z == Z_NULL)
-- return Z_STREAM_ERROR;
-- z->msg = Z_NULL;
-- z->state = &WS(z)->internal_state;
-- z->state->blocks = Z_NULL;
--
-- /* handle undocumented nowrap option (no zlib header or check) */
-- z->state->nowrap = 0;
-- if (w < 0)
-- {
-- w = - w;
-- z->state->nowrap = 1;
-- }
--
-- /* set window size */
-- if (w < 8 || w > 15)
-- {
-- zlib_inflateEnd(z);
-- return Z_STREAM_ERROR;
-- }
-- z->state->wbits = (uInt)w;
--
-- /* create inflate_blocks state */
-- if ((z->state->blocks =
-- zlib_inflate_blocks_new(z, z->state->nowrap ? Z_NULL : zlib_adler32, (uInt)1 << w))
-- == Z_NULL)
-- {
-- zlib_inflateEnd(z);
-- return Z_MEM_ERROR;
-- }
--
-- /* reset state */
-- zlib_inflateReset(z);
-- return Z_OK;
--}
--
--
--/*
-- * At the end of a Deflate-compressed PPP packet, we expect to have seen
-- * a `stored' block type value but not the (zero) length bytes.
-- */
--static int zlib_inflate_packet_flush(inflate_blocks_statef *s)
--{
-- if (s->mode != LENS)
-- return Z_DATA_ERROR;
-- s->mode = TYPE;
-- return Z_OK;
--}
--
--
--int ZEXPORT zlib_inflateInit_(z, version, stream_size)
--z_streamp z;
--const char *version;
--int stream_size;
--{
-- return zlib_inflateInit2_(z, DEF_WBITS, version, stream_size);
--}
--
--#undef NEEDBYTE
--#undef NEXTBYTE
--#define NEEDBYTE {if(z->avail_in==0)goto empty;r=trv;}
--#define NEXTBYTE (z->avail_in--,z->total_in++,*z->next_in++)
--
--int ZEXPORT zlib_inflate(z, f)
--z_streamp z;
--int f;
--{
-- int r, trv;
-- uInt b;
--
-- if (z == Z_NULL || z->state == Z_NULL || z->next_in == Z_NULL)
-- return Z_STREAM_ERROR;
-- trv = f == Z_FINISH ? Z_BUF_ERROR : Z_OK;
-- r = Z_BUF_ERROR;
-- while (1) switch (z->state->mode)
-- {
-- case METHOD:
-- NEEDBYTE
-- if (((z->state->sub.method = NEXTBYTE) & 0xf) != Z_DEFLATED)
-- {
-- z->state->mode = I_BAD;
-- z->msg = (char*)"unknown compression method";
-- z->state->sub.marker = 5; /* can't try inflateSync */
-- break;
-- }
-- if ((z->state->sub.method >> 4) + 8 > z->state->wbits)
-- {
-- z->state->mode = I_BAD;
-- z->msg = (char*)"invalid window size";
-- z->state->sub.marker = 5; /* can't try inflateSync */
-- break;
-- }
-- z->state->mode = FLAG;
-- case FLAG:
-- NEEDBYTE
-- b = NEXTBYTE;
-- if (((z->state->sub.method << 8) + b) % 31)
-- {
-- z->state->mode = I_BAD;
-- z->msg = (char*)"incorrect header check";
-- z->state->sub.marker = 5; /* can't try inflateSync */
-- break;
-- }
-- if (!(b & PRESET_DICT))
-- {
-- z->state->mode = BLOCKS;
-- break;
-- }
-- z->state->mode = DICT4;
-- case DICT4:
-- NEEDBYTE
-- z->state->sub.check.need = (uLong)NEXTBYTE << 24;
-- z->state->mode = DICT3;
-- case DICT3:
-- NEEDBYTE
-- z->state->sub.check.need += (uLong)NEXTBYTE << 16;
-- z->state->mode = DICT2;
-- case DICT2:
-- NEEDBYTE
-- z->state->sub.check.need += (uLong)NEXTBYTE << 8;
-- z->state->mode = DICT1;
-- case DICT1:
-- NEEDBYTE
-- z->state->sub.check.need += (uLong)NEXTBYTE;
-- z->adler = z->state->sub.check.need;
-- z->state->mode = DICT0;
-- return Z_NEED_DICT;
-- case DICT0:
-- z->state->mode = I_BAD;
-- z->msg = (char*)"need dictionary";
-- z->state->sub.marker = 0; /* can try inflateSync */
-- return Z_STREAM_ERROR;
-- case BLOCKS:
-- r = zlib_inflate_blocks(z->state->blocks, z, r);
-- if (f == Z_PACKET_FLUSH && z->avail_in == 0 && z->avail_out != 0)
-- r = zlib_inflate_packet_flush(z->state->blocks);
-- if (r == Z_DATA_ERROR)
-- {
-- z->state->mode = I_BAD;
-- z->state->sub.marker = 0; /* can try inflateSync */
-- break;
-- }
-- if (r == Z_OK)
-- r = trv;
-- if (r != Z_STREAM_END)
-- return r;
-- r = trv;
-- zlib_inflate_blocks_reset(z->state->blocks, z, &z->state->sub.check.was);
-- if (z->state->nowrap)
-- {
-- z->state->mode = I_DONE;
-- break;
-- }
-- z->state->mode = CHECK4;
-- case CHECK4:
-- NEEDBYTE
-- z->state->sub.check.need = (uLong)NEXTBYTE << 24;
-- z->state->mode = CHECK3;
-- case CHECK3:
-- NEEDBYTE
-- z->state->sub.check.need += (uLong)NEXTBYTE << 16;
-- z->state->mode = CHECK2;
-- case CHECK2:
-- NEEDBYTE
-- z->state->sub.check.need += (uLong)NEXTBYTE << 8;
-- z->state->mode = CHECK1;
-- case CHECK1:
-- NEEDBYTE
-- z->state->sub.check.need += (uLong)NEXTBYTE;
--
-- if (z->state->sub.check.was != z->state->sub.check.need)
-- {
-- z->state->mode = I_BAD;
-- z->msg = (char*)"incorrect data check";
-- z->state->sub.marker = 5; /* can't try inflateSync */
-- break;
-- }
-- z->state->mode = I_DONE;
-- case I_DONE:
-- return Z_STREAM_END;
-- case I_BAD:
-- return Z_DATA_ERROR;
-- default:
-- return Z_STREAM_ERROR;
-- }
-- empty:
-- if (f != Z_PACKET_FLUSH)
-- return r;
-- z->state->mode = I_BAD;
-- z->msg = (char *)"need more for packet flush";
-- z->state->sub.marker = 0; /* can try inflateSync */
-- return Z_DATA_ERROR;
--}
--
--
--int ZEXPORT zlib_inflateSync(z)
--z_streamp z;
--{
-- uInt n; /* number of bytes to look at */
-- Bytef *p; /* pointer to bytes */
-- uInt m; /* number of marker bytes found in a row */
-- uLong r, w; /* temporaries to save total_in and total_out */
--
-- /* set up */
-- if (z == Z_NULL || z->state == Z_NULL)
-- return Z_STREAM_ERROR;
-- if (z->state->mode != I_BAD)
-- {
-- z->state->mode = I_BAD;
-- z->state->sub.marker = 0;
-- }
-- if ((n = z->avail_in) == 0)
-- return Z_BUF_ERROR;
-- p = z->next_in;
-- m = z->state->sub.marker;
--
-- /* search */
-- while (n && m < 4)
-- {
-- static const Byte mark[4] = {0, 0, 0xff, 0xff};
-- if (*p == mark[m])
-- m++;
-- else if (*p)
-- m = 0;
-- else
-- m = 4 - m;
-- p++, n--;
-- }
--
-- /* restore */
-- z->total_in += p - z->next_in;
-- z->next_in = p;
-- z->avail_in = n;
-- z->state->sub.marker = m;
--
-- /* return no joy or set up to restart on a new block */
-- if (m != 4)
-- return Z_DATA_ERROR;
-- r = z->total_in; w = z->total_out;
-- zlib_inflateReset(z);
-- z->total_in = r; z->total_out = w;
-- z->state->mode = BLOCKS;
-- return Z_OK;
--}
--
--
--/* Returns true if inflate is currently at the end of a block generated
-- * by Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP
-- * implementation to provide an additional safety check. PPP uses Z_SYNC_FLUSH
-- * but removes the length bytes of the resulting empty stored block. When
-- * decompressing, PPP checks that at the end of input packet, inflate is
-- * waiting for these length bytes.
-- */
--int ZEXPORT zlib_inflateSyncPoint(z)
--z_streamp z;
--{
-- if (z == Z_NULL || z->state == Z_NULL || z->state->blocks == Z_NULL)
-- return Z_STREAM_ERROR;
-- return zlib_inflate_blocks_sync_point(z->state->blocks);
--}
--
--/*
-- * This subroutine adds the data at next_in/avail_in to the output history
-- * without performing any output. The output buffer must be "caught up";
-- * i.e. no pending output (hence s->read equals s->write), and the state must
-- * be BLOCKS (i.e. we should be willing to see the start of a series of
-- * BLOCKS). On exit, the output will also be caught up, and the checksum
-- * will have been updated if need be.
-- */
--static int zlib_inflate_addhistory(inflate_blocks_statef *s,
-- z_stream *z)
--{
-- uLong b; /* bit buffer */ /* NOT USED HERE */
-- uInt k; /* bits in bit buffer */ /* NOT USED HERE */
-- uInt t; /* temporary storage */
-- Bytef *p; /* input data pointer */
-- uInt n; /* bytes available there */
-- Bytef *q; /* output window write pointer */
-- uInt m; /* bytes to end of window or read pointer */
--
-- if (s->read != s->write)
-- return Z_STREAM_ERROR;
-- if (s->mode != TYPE)
-- return Z_DATA_ERROR;
--
-- /* we're ready to rock */
-- LOAD
-- /* while there is input ready, copy to output buffer, moving
-- * pointers as needed.
-- */
-- while (n) {
-- t = n; /* how many to do */
-- /* is there room until end of buffer? */
-- if (t > m) t = m;
-- /* update check information */
-- if (s->checkfn != Z_NULL)
-- s->check = (*s->checkfn)(s->check, q, t);
-- memcpy(q, p, t);
-- q += t;
-- p += t;
-- n -= t;
-- z->total_out += t;
-- s->read = q; /* drag read pointer forward */
--/* WWRAP */ /* expand WWRAP macro by hand to handle s->read */
-- if (q == s->end) {
-- s->read = q = s->window;
-- m = WAVAIL;
-- }
-- }
-- UPDATE
-- return Z_OK;
--}
--
--
--/*
-- * This subroutine adds the data at next_in/avail_in to the output history
-- * without performing any output. The output buffer must be "caught up";
-- * i.e. no pending output (hence s->read equals s->write), and the state must
-- * be BLOCKS (i.e. we should be willing to see the start of a series of
-- * BLOCKS). On exit, the output will also be caught up, and the checksum
-- * will have been updated if need be.
-- */
--
--int ZEXPORT zlib_inflateIncomp(z)
--z_stream *z;
--{
-- if (z->state->mode != BLOCKS)
-- return Z_DATA_ERROR;
-- return zlib_inflate_addhistory(z->state->blocks, z);
--}
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/inflate_syms.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inflate_syms.c
---- linux/fs/jffs2/compressors/zlib_inflate/inflate_syms.c 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inflate_syms.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,22 +0,0 @@
--/*
-- * linux/lib/zlib_inflate/inflate_syms.c
-- *
-- * Exported symbols for the inflate functionality.
-- *
-- */
--
--#include <linux/module.h>
--#include <linux/init.h>
--
--#include <linux/zlib.h>
--
--EXPORT_SYMBOL(zlib_inflate_workspacesize);
--EXPORT_SYMBOL(zlib_inflate);
--EXPORT_SYMBOL(zlib_inflateInit_);
--EXPORT_SYMBOL(zlib_inflateInit2_);
--EXPORT_SYMBOL(zlib_inflateEnd);
--EXPORT_SYMBOL(zlib_inflateSync);
--EXPORT_SYMBOL(zlib_inflateReset);
--EXPORT_SYMBOL(zlib_inflateSyncPoint);
--EXPORT_SYMBOL(zlib_inflateIncomp);
--MODULE_LICENSE("GPL");
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/inftrees.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inftrees.c
---- linux/fs/jffs2/compressors/zlib_inflate/inftrees.c 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inftrees.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,391 +0,0 @@
--/* inftrees.c -- generate Huffman trees for efficient decoding
-- * Copyright (C) 1995-1998 Mark Adler
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--#include <linux/zutil.h>
--#include "inftrees.h"
--#include "infutil.h"
--
--static const char inflate_copyright[] =
-- " inflate 1.1.3 Copyright 1995-1998 Mark Adler ";
--/*
-- If you use the zlib library in a product, an acknowledgment is welcome
-- in the documentation of your product. If for some reason you cannot
-- include such an acknowledgment, I would appreciate that you keep this
-- copyright string in the executable of your product.
-- */
--struct internal_state;
--
--/* simplify the use of the inflate_huft type with some defines */
--#define exop word.what.Exop
--#define bits word.what.Bits
--
--
--local int huft_build OF((
-- uIntf *, /* code lengths in bits */
-- uInt, /* number of codes */
-- uInt, /* number of "simple" codes */
-- const uIntf *, /* list of base values for non-simple codes */
-- const uIntf *, /* list of extra bits for non-simple codes */
-- inflate_huft * FAR*,/* result: starting table */
-- uIntf *, /* maximum lookup bits (returns actual) */
-- inflate_huft *, /* space for trees */
-- uInt *, /* hufts used in space */
-- uIntf * )); /* space for values */
--
--/* Tables for deflate from PKZIP's appnote.txt. */
--local const uInt cplens[31] = { /* Copy lengths for literal codes 257..285 */
-- 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
-- 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
-- /* see note #13 above about 258 */
--local const uInt cplext[31] = { /* Extra bits for literal codes 257..285 */
-- 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
-- 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112}; /* 112==invalid */
--local const uInt cpdist[30] = { /* Copy offsets for distance codes 0..29 */
-- 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
-- 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
-- 8193, 12289, 16385, 24577};
--local const uInt cpdext[30] = { /* Extra bits for distance codes */
-- 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
-- 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
-- 12, 12, 13, 13};
--
--/*
-- Huffman code decoding is performed using a multi-level table lookup.
-- The fastest way to decode is to simply build a lookup table whose
-- size is determined by the longest code. However, the time it takes
-- to build this table can also be a factor if the data being decoded
-- is not very long. The most common codes are necessarily the
-- shortest codes, so those codes dominate the decoding time, and hence
-- the speed. The idea is you can have a shorter table that decodes the
-- shorter, more probable codes, and then point to subsidiary tables for
-- the longer codes. The time it costs to decode the longer codes is
-- then traded against the time it takes to make longer tables.
--
-- This results of this trade are in the variables lbits and dbits
-- below. lbits is the number of bits the first level table for literal/
-- length codes can decode in one step, and dbits is the same thing for
-- the distance codes. Subsequent tables are also less than or equal to
-- those sizes. These values may be adjusted either when all of the
-- codes are shorter than that, in which case the longest code length in
-- bits is used, or when the shortest code is *longer* than the requested
-- table size, in which case the length of the shortest code in bits is
-- used.
--
-- There are two different values for the two tables, since they code a
-- different number of possibilities each. The literal/length table
-- codes 286 possible values, or in a flat code, a little over eight
-- bits. The distance table codes 30 possible values, or a little less
-- than five bits, flat. The optimum values for speed end up being
-- about one bit more than those, so lbits is 8+1 and dbits is 5+1.
-- The optimum values may differ though from machine to machine, and
-- possibly even between compilers. Your mileage may vary.
-- */
--
--
--/* If BMAX needs to be larger than 16, then h and x[] should be uLong. */
--#define BMAX 15 /* maximum bit length of any code */
--
--local int huft_build(b, n, s, d, e, t, m, hp, hn, v)
--uIntf *b; /* code lengths in bits (all assumed <= BMAX) */
--uInt n; /* number of codes (assumed <= 288) */
--uInt s; /* number of simple-valued codes (0..s-1) */
--const uIntf *d; /* list of base values for non-simple codes */
--const uIntf *e; /* list of extra bits for non-simple codes */
--inflate_huft * FAR *t; /* result: starting table */
--uIntf *m; /* maximum lookup bits, returns actual */
--inflate_huft *hp; /* space for trees */
--uInt *hn; /* hufts used in space */
--uIntf *v; /* working area: values in order of bit length */
--/* Given a list of code lengths and a maximum table size, make a set of
-- tables to decode that set of codes. Return Z_OK on success, Z_BUF_ERROR
-- if the given code set is incomplete (the tables are still built in this
-- case), Z_DATA_ERROR if the input is invalid (an over-subscribed set of
-- lengths), or Z_MEM_ERROR if not enough memory. */
--{
--
-- uInt a; /* counter for codes of length k */
-- uInt c[BMAX+1]; /* bit length count table */
-- uInt f; /* i repeats in table every f entries */
-- int g; /* maximum code length */
-- int h; /* table level */
-- register uInt i; /* counter, current code */
-- register uInt j; /* counter */
-- register int k; /* number of bits in current code */
-- int l; /* bits per table (returned in m) */
-- uInt mask; /* (1 << w) - 1, to avoid cc -O bug on HP */
-- register uIntf *p; /* pointer into c[], b[], or v[] */
-- inflate_huft *q; /* points to current table */
-- struct inflate_huft_s r; /* table entry for structure assignment */
-- inflate_huft *u[BMAX]; /* table stack */
-- register int w; /* bits before this table == (l * h) */
-- uInt x[BMAX+1]; /* bit offsets, then code stack */
-- uIntf *xp; /* pointer into x */
-- int y; /* number of dummy codes added */
-- uInt z; /* number of entries in current table */
--
--
-- /* Generate counts for each bit length */
-- p = c;
--#define C0 *p++ = 0;
--#define C2 C0 C0 C0 C0
--#define C4 C2 C2 C2 C2
-- C4 /* clear c[]--assume BMAX+1 is 16 */
-- p = b; i = n;
-- do {
-- c[*p++]++; /* assume all entries <= BMAX */
-- } while (--i);
-- if (c[0] == n) /* null input--all zero length codes */
-- {
-- *t = (inflate_huft *)Z_NULL;
-- *m = 0;
-- return Z_OK;
-- }
--
--
-- /* Find minimum and maximum length, bound *m by those */
-- l = *m;
-- for (j = 1; j <= BMAX; j++)
-- if (c[j])
-- break;
-- k = j; /* minimum code length */
-- if ((uInt)l < j)
-- l = j;
-- for (i = BMAX; i; i--)
-- if (c[i])
-- break;
-- g = i; /* maximum code length */
-- if ((uInt)l > i)
-- l = i;
-- *m = l;
--
--
-- /* Adjust last length count to fill out codes, if needed */
-- for (y = 1 << j; j < i; j++, y <<= 1)
-- if ((y -= c[j]) < 0)
-- return Z_DATA_ERROR;
-- if ((y -= c[i]) < 0)
-- return Z_DATA_ERROR;
-- c[i] += y;
--
--
-- /* Generate starting offsets into the value table for each length */
-- x[1] = j = 0;
-- p = c + 1; xp = x + 2;
-- while (--i) { /* note that i == g from above */
-- *xp++ = (j += *p++);
-- }
--
--
-- /* Make a table of values in order of bit lengths */
-- p = b; i = 0;
-- do {
-- if ((j = *p++) != 0)
-- v[x[j]++] = i;
-- } while (++i < n);
-- n = x[g]; /* set n to length of v */
--
--
-- /* Generate the Huffman codes and for each, make the table entries */
-- x[0] = i = 0; /* first Huffman code is zero */
-- p = v; /* grab values in bit order */
-- h = -1; /* no tables yet--level -1 */
-- w = -l; /* bits decoded == (l * h) */
-- u[0] = (inflate_huft *)Z_NULL; /* just to keep compilers happy */
-- q = (inflate_huft *)Z_NULL; /* ditto */
-- z = 0; /* ditto */
--
-- /* go through the bit lengths (k already is bits in shortest code) */
-- for (; k <= g; k++)
-- {
-- a = c[k];
-- while (a--)
-- {
-- /* here i is the Huffman code of length k bits for value *p */
-- /* make tables up to required level */
-- while (k > w + l)
-- {
-- h++;
-- w += l; /* previous table always l bits */
--
-- /* compute minimum size table less than or equal to l bits */
-- z = g - w;
-- z = z > (uInt)l ? l : z; /* table size upper limit */
-- if ((f = 1 << (j = k - w)) > a + 1) /* try a k-w bit table */
-- { /* too few codes for k-w bit table */
-- f -= a + 1; /* deduct codes from patterns left */
-- xp = c + k;
-- if (j < z)
-- while (++j < z) /* try smaller tables up to z bits */
-- {
-- if ((f <<= 1) <= *++xp)
-- break; /* enough codes to use up j bits */
-- f -= *xp; /* else deduct codes from patterns */
-- }
-- }
-- z = 1 << j; /* table entries for j-bit table */
--
-- /* allocate new table */
-- if (*hn + z > MANY) /* (note: doesn't matter for fixed) */
-- return Z_MEM_ERROR; /* not enough memory */
-- u[h] = q = hp + *hn;
-- *hn += z;
--
-- /* connect to last table, if there is one */
-- if (h)
-- {
-- x[h] = i; /* save pattern for backing up */
-- r.bits = (Byte)l; /* bits to dump before this table */
-- r.exop = (Byte)j; /* bits in this table */
-- j = i >> (w - l);
-- r.base = (uInt)(q - u[h-1] - j); /* offset to this table */
-- u[h-1][j] = r; /* connect to last table */
-- }
-- else
-- *t = q; /* first table is returned result */
-- }
--
-- /* set up table entry in r */
-- r.bits = (Byte)(k - w);
-- if (p >= v + n)
-- r.exop = 128 + 64; /* out of values--invalid code */
-- else if (*p < s)
-- {
-- r.exop = (Byte)(*p < 256 ? 0 : 32 + 64); /* 256 is end-of-block */
-- r.base = *p++; /* simple code is just the value */
-- }
-- else
-- {
-- r.exop = (Byte)(e[*p - s] + 16 + 64);/* non-simple--look up in lists */
-- r.base = d[*p++ - s];
-- }
--
-- /* fill code-like entries with r */
-- f = 1 << (k - w);
-- for (j = i >> w; j < z; j += f)
-- q[j] = r;
--
-- /* backwards increment the k-bit code i */
-- for (j = 1 << (k - 1); i & j; j >>= 1)
-- i ^= j;
-- i ^= j;
--
-- /* backup over finished tables */
-- mask = (1 << w) - 1; /* needed on HP, cc -O bug */
-- while ((i & mask) != x[h])
-- {
-- h--; /* don't need to update q */
-- w -= l;
-- mask = (1 << w) - 1;
-- }
-- }
-- }
--
--
-- /* Return Z_BUF_ERROR if we were given an incomplete table */
-- return y != 0 && g != 1 ? Z_BUF_ERROR : Z_OK;
--}
--
--
--int zlib_inflate_trees_bits(c, bb, tb, hp, z)
--uIntf *c; /* 19 code lengths */
--uIntf *bb; /* bits tree desired/actual depth */
--inflate_huft * FAR *tb; /* bits tree result */
--inflate_huft *hp; /* space for trees */
--z_streamp z; /* for messages */
--{
-- int r;
-- uInt hn = 0; /* hufts used in space */
-- uIntf *v; /* work area for huft_build */
--
-- v = WS(z)->tree_work_area_1;
-- r = huft_build(c, 19, 19, (uIntf*)Z_NULL, (uIntf*)Z_NULL,
-- tb, bb, hp, &hn, v);
-- if (r == Z_DATA_ERROR)
-- z->msg = (char*)"oversubscribed dynamic bit lengths tree";
-- else if (r == Z_BUF_ERROR || *bb == 0)
-- {
-- z->msg = (char*)"incomplete dynamic bit lengths tree";
-- r = Z_DATA_ERROR;
-- }
-- return r;
--}
--
--int zlib_inflate_trees_dynamic(nl, nd, c, bl, bd, tl, td, hp, z)
--uInt nl; /* number of literal/length codes */
--uInt nd; /* number of distance codes */
--uIntf *c; /* that many (total) code lengths */
--uIntf *bl; /* literal desired/actual bit depth */
--uIntf *bd; /* distance desired/actual bit depth */
--inflate_huft * FAR *tl; /* literal/length tree result */
--inflate_huft * FAR *td; /* distance tree result */
--inflate_huft *hp; /* space for trees */
--z_streamp z; /* for messages */
--{
-- int r;
-- uInt hn = 0; /* hufts used in space */
-- uIntf *v; /* work area for huft_build */
--
-- /* allocate work area */
-- v = WS(z)->tree_work_area_2;
--
-- /* build literal/length tree */
-- r = huft_build(c, nl, 257, cplens, cplext, tl, bl, hp, &hn, v);
-- if (r != Z_OK || *bl == 0)
-- {
-- if (r == Z_DATA_ERROR)
-- z->msg = (char*)"oversubscribed literal/length tree";
-- else if (r != Z_MEM_ERROR)
-- {
-- z->msg = (char*)"incomplete literal/length tree";
-- r = Z_DATA_ERROR;
-- }
-- return r;
-- }
--
-- /* build distance tree */
-- r = huft_build(c + nl, nd, 0, cpdist, cpdext, td, bd, hp, &hn, v);
-- if (r != Z_OK || (*bd == 0 && nl > 257))
-- {
-- if (r == Z_DATA_ERROR)
-- z->msg = (char*)"oversubscribed distance tree";
-- else if (r == Z_BUF_ERROR) {
--#ifdef PKZIP_BUG_WORKAROUND
-- r = Z_OK;
-- }
--#else
-- z->msg = (char*)"incomplete distance tree";
-- r = Z_DATA_ERROR;
-- }
-- else if (r != Z_MEM_ERROR)
-- {
-- z->msg = (char*)"empty distance tree with lengths";
-- r = Z_DATA_ERROR;
-- }
-- return r;
--#endif
-- }
--
-- /* done */
-- return Z_OK;
--}
--
--
--/* build fixed tables only once--keep them here */
--#include "inffixed.h"
--
--
--int zlib_inflate_trees_fixed(bl, bd, tl, td, z)
--uIntf *bl; /* literal desired/actual bit depth */
--uIntf *bd; /* distance desired/actual bit depth */
--inflate_huft * FAR *tl; /* literal/length tree result */
--inflate_huft * FAR *td; /* distance tree result */
--z_streamp z; /* for memory allocation */
--{
-- *bl = fixed_bl;
-- *bd = fixed_bd;
-- *tl = fixed_tl;
-- *td = fixed_td;
-- return Z_OK;
--}
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/inftrees.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inftrees.h
---- linux/fs/jffs2/compressors/zlib_inflate/inftrees.h 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/inftrees.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,63 +0,0 @@
--/* inftrees.h -- header to use inftrees.c
-- * Copyright (C) 1995-1998 Mark Adler
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--/* WARNING: this file should *not* be used by applications. It is
-- part of the implementation of the compression library and is
-- subject to change. Applications should only use zlib.h.
-- */
--
--/* Huffman code lookup table entry--this entry is four bytes for machines
-- that have 16-bit pointers (e.g. PC's in the small or medium model). */
--
--#ifndef _INFTREES_H
--#define _INFTREES_H
--
--typedef struct inflate_huft_s FAR inflate_huft;
--
--struct inflate_huft_s {
-- union {
-- struct {
-- Byte Exop; /* number of extra bits or operation */
-- Byte Bits; /* number of bits in this code or subcode */
-- } what;
-- uInt pad; /* pad structure to a power of 2 (4 bytes for */
-- } word; /* 16-bit, 8 bytes for 32-bit int's) */
-- uInt base; /* literal, length base, distance base,
-- or table offset */
--};
--
--/* Maximum size of dynamic tree. The maximum found in a long but non-
-- exhaustive search was 1004 huft structures (850 for length/literals
-- and 154 for distances, the latter actually the result of an
-- exhaustive search). The actual maximum is not known, but the
-- value below is more than safe. */
--#define MANY 1440
--
--extern int zlib_inflate_trees_bits OF((
-- uIntf *, /* 19 code lengths */
-- uIntf *, /* bits tree desired/actual depth */
-- inflate_huft * FAR *, /* bits tree result */
-- inflate_huft *, /* space for trees */
-- z_streamp)); /* for messages */
--
--extern int zlib_inflate_trees_dynamic OF((
-- uInt, /* number of literal/length codes */
-- uInt, /* number of distance codes */
-- uIntf *, /* that many (total) code lengths */
-- uIntf *, /* literal desired/actual bit depth */
-- uIntf *, /* distance desired/actual bit depth */
-- inflate_huft * FAR *, /* literal/length tree result */
-- inflate_huft * FAR *, /* distance tree result */
-- inflate_huft *, /* space for trees */
-- z_streamp)); /* for messages */
--
--extern int zlib_inflate_trees_fixed OF((
-- uIntf *, /* literal desired/actual bit depth */
-- uIntf *, /* distance desired/actual bit depth */
-- inflate_huft * FAR *, /* literal/length tree result */
-- inflate_huft * FAR *, /* distance tree result */
-- z_streamp)); /* for memory allocation */
--
--#endif /* _INFTREES_H */
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/infutil.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infutil.c
---- linux/fs/jffs2/compressors/zlib_inflate/infutil.c 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infutil.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,87 +0,0 @@
--/* inflate_util.c -- data and routines common to blocks and codes
-- * Copyright (C) 1995-1998 Mark Adler
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--#include <linux/zutil.h>
--#include "infblock.h"
--#include "inftrees.h"
--#include "infcodes.h"
--#include "infutil.h"
--
--struct inflate_codes_state;
--
--/* And'ing with mask[n] masks the lower n bits */
--uInt zlib_inflate_mask[17] = {
-- 0x0000,
-- 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
-- 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
--};
--
--
--/* copy as much as possible from the sliding window to the output area */
--int zlib_inflate_flush(s, z, r)
--inflate_blocks_statef *s;
--z_streamp z;
--int r;
--{
-- uInt n;
-- Bytef *p;
-- Bytef *q;
--
-- /* local copies of source and destination pointers */
-- p = z->next_out;
-- q = s->read;
--
-- /* compute number of bytes to copy as far as end of window */
-- n = (uInt)((q <= s->write ? s->write : s->end) - q);
-- if (n > z->avail_out) n = z->avail_out;
-- if (n && r == Z_BUF_ERROR) r = Z_OK;
--
-- /* update counters */
-- z->avail_out -= n;
-- z->total_out += n;
--
-- /* update check information */
-- if (s->checkfn != Z_NULL)
-- z->adler = s->check = (*s->checkfn)(s->check, q, n);
--
-- /* copy as far as end of window */
-- memcpy(p, q, n);
-- p += n;
-- q += n;
--
-- /* see if more to copy at beginning of window */
-- if (q == s->end)
-- {
-- /* wrap pointers */
-- q = s->window;
-- if (s->write == s->end)
-- s->write = s->window;
--
-- /* compute bytes to copy */
-- n = (uInt)(s->write - q);
-- if (n > z->avail_out) n = z->avail_out;
-- if (n && r == Z_BUF_ERROR) r = Z_OK;
--
-- /* update counters */
-- z->avail_out -= n;
-- z->total_out += n;
--
-- /* update check information */
-- if (s->checkfn != Z_NULL)
-- z->adler = s->check = (*s->checkfn)(s->check, q, n);
--
-- /* copy */
-- memcpy(p, q, n);
-- p += n;
-- q += n;
-- }
--
-- /* update pointers */
-- z->next_out = p;
-- s->read = q;
--
-- /* done */
-- return r;
--}
-diff -Nur linux/fs/jffs2/compressors/zlib_inflate/infutil.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infutil.h
---- linux/fs/jffs2/compressors/zlib_inflate/infutil.h 2003-05-13 16:19:12.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/compressors/zlib_inflate/infutil.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,197 +0,0 @@
--/* infutil.h -- types and macros common to blocks and codes
-- * Copyright (C) 1995-1998 Mark Adler
-- * For conditions of distribution and use, see copyright notice in zlib.h
-- */
--
--/* WARNING: this file should *not* be used by applications. It is
-- part of the implementation of the compression library and is
-- subject to change. Applications should only use zlib.h.
-- */
--
--#ifndef _INFUTIL_H
--#define _INFUTIL_H
--
--#include <linux/zconf.h>
--#include "inftrees.h"
--#include "infcodes.h"
--
--typedef enum {
-- TYPE, /* get type bits (3, including end bit) */
-- LENS, /* get lengths for stored */
-- STORED, /* processing stored block */
-- TABLE, /* get table lengths */
-- BTREE, /* get bit lengths tree for a dynamic block */
-- DTREE, /* get length, distance trees for a dynamic block */
-- CODES, /* processing fixed or dynamic block */
-- DRY, /* output remaining window bytes */
-- B_DONE, /* finished last block, done */
-- B_BAD} /* got a data error--stuck here */
--inflate_block_mode;
--
--/* inflate blocks semi-private state */
--struct inflate_blocks_state {
--
-- /* mode */
-- inflate_block_mode mode; /* current inflate_block mode */
--
-- /* mode dependent information */
-- union {
-- uInt left; /* if STORED, bytes left to copy */
-- struct {
-- uInt table; /* table lengths (14 bits) */
-- uInt index; /* index into blens (or border) */
-- uIntf *blens; /* bit lengths of codes */
-- uInt bb; /* bit length tree depth */
-- inflate_huft *tb; /* bit length decoding tree */
-- } trees; /* if DTREE, decoding info for trees */
-- struct {
-- inflate_codes_statef
-- *codes;
-- } decode; /* if CODES, current state */
-- } sub; /* submode */
-- uInt last; /* true if this block is the last block */
--
-- /* mode independent information */
-- uInt bitk; /* bits in bit buffer */
-- uLong bitb; /* bit buffer */
-- inflate_huft *hufts; /* single malloc for tree space */
-- Bytef *window; /* sliding window */
-- Bytef *end; /* one byte after sliding window */
-- Bytef *read; /* window read pointer */
-- Bytef *write; /* window write pointer */
-- check_func checkfn; /* check function */
-- uLong check; /* check on output */
--
--};
--
--
--/* defines for inflate input/output */
--/* update pointers and return */
--#define UPDBITS {s->bitb=b;s->bitk=k;}
--#define UPDIN {z->avail_in=n;z->total_in+=p-z->next_in;z->next_in=p;}
--#define UPDOUT {s->write=q;}
--#define UPDATE {UPDBITS UPDIN UPDOUT}
--#define LEAVE {UPDATE return zlib_inflate_flush(s,z,r);}
--/* get bytes and bits */
--#define LOADIN {p=z->next_in;n=z->avail_in;b=s->bitb;k=s->bitk;}
--#define NEEDBYTE {if(n)r=Z_OK;else LEAVE}
--#define NEXTBYTE (n--,*p++)
--#define NEEDBITS(j) {while(k<(j)){NEEDBYTE;b|=((uLong)NEXTBYTE)<<k;k+=8;}}
--#define DUMPBITS(j) {b>>=(j);k-=(j);}
--/* output bytes */
--#define WAVAIL (uInt)(q<s->read?s->read-q-1:s->end-q)
--#define LOADOUT {q=s->write;m=(uInt)WAVAIL;}
--#define WRAP {if(q==s->end&&s->read!=s->window){q=s->window;m=(uInt)WAVAIL;}}
--#define FLUSH {UPDOUT r=zlib_inflate_flush(s,z,r); LOADOUT}
--#define NEEDOUT {if(m==0){WRAP if(m==0){FLUSH WRAP if(m==0) LEAVE}}r=Z_OK;}
--#define OUTBYTE(a) {*q++=(Byte)(a);m--;}
--/* load local pointers */
--#define LOAD {LOADIN LOADOUT}
--
--/* masks for lower bits (size given to avoid silly warnings with Visual C++) */
--extern uInt zlib_inflate_mask[17];
--
--/* copy as much as possible from the sliding window to the output area */
--extern int zlib_inflate_flush OF((
-- inflate_blocks_statef *,
-- z_streamp ,
-- int));
--
--/* inflate private state */
--typedef enum {
-- METHOD, /* waiting for method byte */
-- FLAG, /* waiting for flag byte */
-- DICT4, /* four dictionary check bytes to go */
-- DICT3, /* three dictionary check bytes to go */
-- DICT2, /* two dictionary check bytes to go */
-- DICT1, /* one dictionary check byte to go */
-- DICT0, /* waiting for inflateSetDictionary */
-- BLOCKS, /* decompressing blocks */
-- CHECK4, /* four check bytes to go */
-- CHECK3, /* three check bytes to go */
-- CHECK2, /* two check bytes to go */
-- CHECK1, /* one check byte to go */
-- I_DONE, /* finished check, done */
-- I_BAD} /* got an error--stay here */
--inflate_mode;
--
--struct internal_state {
--
-- /* mode */
-- inflate_mode mode; /* current inflate mode */
--
-- /* mode dependent information */
-- union {
-- uInt method; /* if FLAGS, method byte */
-- struct {
-- uLong was; /* computed check value */
-- uLong need; /* stream check value */
-- } check; /* if CHECK, check values to compare */
-- uInt marker; /* if BAD, inflateSync's marker bytes count */
-- } sub; /* submode */
--
-- /* mode independent information */
-- int nowrap; /* flag for no wrapper */
-- uInt wbits; /* log2(window size) (8..15, defaults to 15) */
-- inflate_blocks_statef
-- *blocks; /* current inflate_blocks state */
--
--};
--
--/* inflate codes private state */
--typedef enum { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
-- START, /* x: set up for LEN */
-- LEN, /* i: get length/literal/eob next */
-- LENEXT, /* i: getting length extra (have base) */
-- DIST, /* i: get distance next */
-- DISTEXT, /* i: getting distance extra */
-- COPY, /* o: copying bytes in window, waiting for space */
-- LIT, /* o: got literal, waiting for output space */
-- WASH, /* o: got eob, possibly still output waiting */
-- END, /* x: got eob and all data flushed */
-- BADCODE} /* x: got error */
--inflate_codes_mode;
--
--struct inflate_codes_state {
--
-- /* mode */
-- inflate_codes_mode mode; /* current inflate_codes mode */
--
-- /* mode dependent information */
-- uInt len;
-- union {
-- struct {
-- inflate_huft *tree; /* pointer into tree */
-- uInt need; /* bits needed */
-- } code; /* if LEN or DIST, where in tree */
-- uInt lit; /* if LIT, literal */
-- struct {
-- uInt get; /* bits to get for extra */
-- uInt dist; /* distance back to copy from */
-- } copy; /* if EXT or COPY, where and how much */
-- } sub; /* submode */
--
-- /* mode independent information */
-- Byte lbits; /* ltree bits decoded per branch */
-- Byte dbits; /* dtree bits decoder per branch */
-- inflate_huft *ltree; /* literal/length/eob tree */
-- inflate_huft *dtree; /* distance tree */
--
--};
--
--/* memory allocation for inflation */
--
--struct inflate_workspace {
-- inflate_codes_statef working_state;
-- struct inflate_blocks_state working_blocks_state;
-- struct internal_state internal_state;
-- unsigned int tree_work_area_1[19];
-- unsigned int tree_work_area_2[288];
-- unsigned working_blens[258 + 0x1f + 0x1f];
-- inflate_huft working_hufts[MANY];
-- unsigned char working_window[1 << MAX_WBITS];
--};
--
--#define WS(z) ((struct inflate_workspace *)(z->workspace))
--
--#endif
-diff -Nur linux/fs/jffs2/comprtest.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/comprtest.c
---- linux/fs/jffs2/comprtest.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/comprtest.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,4 +1,4 @@
--/* $Id: comprtest.c,v 1.5 2002/01/03 15:20:44 dwmw2 Exp $ */
-+/* $Id: comprtest.c,v 1.4 2001/02/21 14:03:20 dwmw2 Exp $ */
-
- #include <linux/kernel.h>
- #include <linux/string.h>
-@@ -266,13 +266,13 @@
- static unsigned char decomprbuf[TESTDATA_LEN];
-
- int jffs2_decompress(unsigned char comprtype, unsigned char *cdata_in,
-- unsigned char *data_out, uint32_t cdatalen, uint32_t datalen);
-+ unsigned char *data_out, __u32 cdatalen, __u32 datalen);
- unsigned char jffs2_compress(unsigned char *data_in, unsigned char *cpage_out,
-- uint32_t *datalen, uint32_t *cdatalen);
-+ __u32 *datalen, __u32 *cdatalen);
-
- int init_module(void ) {
- unsigned char comprtype;
-- uint32_t c, d;
-+ __u32 c, d;
- int ret;
-
- printk("Original data: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
-diff -Nur linux/fs/jffs2/crc32.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/crc32.c
---- linux/fs/jffs2/crc32.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/crc32.c 2003-06-23 01:47:04.000000000 +0700
-@@ -37,11 +37,11 @@
- * polynomial $edb88320
- */
-
--/* $Id: crc32.c,v 1.4 2002/01/03 15:20:44 dwmw2 Exp $ */
-+/* $Id: crc32.c,v 1.3 2001/02/07 16:45:32 dwmw2 Exp $ */
-
- #include "crc32.h"
-
--const uint32_t crc32_table[256] = {
-+const __u32 crc32_table[256] = {
- 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
- 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
- 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
-diff -Nur linux/fs/jffs2/crc32.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/crc32.h
---- linux/fs/jffs2/crc32.h 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/crc32.h 2003-06-23 01:47:04.000000000 +0700
-@@ -1,16 +1,16 @@
- #ifndef CRC32_H
- #define CRC32_H
-
--/* $Id: crc32.h,v 1.4 2002/01/03 15:20:44 dwmw2 Exp $ */
-+/* $Id: crc32.h,v 1.3 2001/02/26 14:44:37 dwmw2 Exp $ */
-
- #include <linux/types.h>
-
--extern const uint32_t crc32_table[256];
-+extern const __u32 crc32_table[256];
-
- /* Return a 32-bit CRC of the contents of the buffer. */
-
--static inline uint32_t
--crc32(uint32_t val, const void *ss, int len)
-+static inline __u32
-+crc32(__u32 val, const void *ss, int len)
- {
- const unsigned char *s = ss;
- while (--len >= 0)
-diff -Nur linux/fs/jffs2/dir.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/dir.c
---- linux/fs/jffs2/dir.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/dir.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,29 +1,49 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: dir.c,v 1.73 2002/08/26 15:00:51 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: dir.c,v 1.45.2.6 2002/06/20 23:54:48 dwmw2 Exp $
- *
-- * ChangeLog:
-- * 10-Dec-2002 Lineo Japan, Inc. fix long filename bug
- */
-
- #include <linux/kernel.h>
- #include <linux/slab.h>
--#include <linux/sched.h>
- #include <linux/fs.h>
--#include "crc32.h"
- #include <linux/mtd/compatmac.h> /* For completion */
- #include <linux/jffs2.h>
- #include <linux/jffs2_fs_i.h>
- #include <linux/jffs2_fs_sb.h>
--#include <linux/time.h>
- #include "nodelist.h"
-+#include "crc32.h"
-
- static int jffs2_readdir (struct file *, void *, filldir_t);
-
-@@ -40,25 +60,25 @@
-
- struct file_operations jffs2_dir_operations =
- {
-- .read = generic_read_dir,
-- .readdir = jffs2_readdir,
-- .ioctl = jffs2_ioctl,
-- .fsync = jffs2_fsync
-+ read: generic_read_dir,
-+ readdir: jffs2_readdir,
-+ ioctl: jffs2_ioctl,
-+ fsync: jffs2_null_fsync
- };
-
-
- struct inode_operations jffs2_dir_inode_operations =
- {
-- .create = jffs2_create,
-- .lookup = jffs2_lookup,
-- .link = jffs2_link,
-- .unlink = jffs2_unlink,
-- .symlink = jffs2_symlink,
-- .mkdir = jffs2_mkdir,
-- .rmdir = jffs2_rmdir,
-- .mknod = jffs2_mknod,
-- .rename = jffs2_rename,
-- .setattr = jffs2_setattr,
-+ create: jffs2_create,
-+ lookup: jffs2_lookup,
-+ link: jffs2_link,
-+ unlink: jffs2_unlink,
-+ symlink: jffs2_symlink,
-+ mkdir: jffs2_mkdir,
-+ rmdir: jffs2_rmdir,
-+ mknod: jffs2_mknod,
-+ rename: jffs2_rename,
-+ setattr: jffs2_setattr,
- };
-
- /***********************************************************************/
-@@ -73,14 +93,11 @@
- struct jffs2_inode_info *dir_f;
- struct jffs2_sb_info *c;
- struct jffs2_full_dirent *fd = NULL, *fd_list;
-- uint32_t ino = 0;
-+ __u32 ino = 0;
- struct inode *inode = NULL;
-
- D1(printk(KERN_DEBUG "jffs2_lookup()\n"));
-
-- if (target->d_name.len > JFFS2_MAX_NAME_LEN)
-- return ERR_PTR(-ENAMETOOLONG);
--
- dir_f = JFFS2_INODE_INFO(dir_i);
- c = JFFS2_SB_INFO(dir_i->i_sb);
-
-@@ -136,9 +153,8 @@
- offset++;
- }
- if (offset == 1) {
-- unsigned long pino = parent_ino(filp->f_dentry);
-- D1(printk(KERN_DEBUG "Dirent 1: \"..\", ino #%lu\n", pino));
-- if (filldir(dirent, "..", 2, 1, pino, DT_DIR) < 0)
-+ D1(printk(KERN_DEBUG "Dirent 1: \"..\", ino #%lu\n", filp->f_dentry->d_parent->d_inode->i_ino));
-+ if (filldir(dirent, "..", 2, 1, filp->f_dentry->d_parent->d_inode->i_ino, DT_DIR) < 0)
- goto out;
- offset++;
- }
-@@ -172,13 +188,18 @@
-
- /***********************************************************************/
-
--
- static int jffs2_create(struct inode *dir_i, struct dentry *dentry, int mode)
- {
-- struct jffs2_raw_inode *ri;
- struct jffs2_inode_info *f, *dir_f;
- struct jffs2_sb_info *c;
- struct inode *inode;
-+ struct jffs2_raw_inode *ri;
-+ struct jffs2_raw_dirent *rd;
-+ struct jffs2_full_dnode *fn;
-+ struct jffs2_full_dirent *fd;
-+ int namelen;
-+ __u32 alloclen, phys_ofs;
-+ __u32 writtenlen;
- int ret;
-
- ri = jffs2_alloc_raw_inode();
-@@ -189,11 +210,23 @@
-
- D1(printk(KERN_DEBUG "jffs2_create()\n"));
-
-+ /* Try to reserve enough space for both node and dirent.
-+ * Just the node will do for now, though
-+ */
-+ namelen = dentry->d_name.len;
-+ ret = jffs2_reserve_space(c, sizeof(*ri), &phys_ofs, &alloclen, ALLOC_NORMAL);
-+ D1(printk(KERN_DEBUG "jffs2_create(): reserved 0x%x bytes\n", alloclen));
-+ if (ret) {
-+ jffs2_free_raw_inode(ri);
-+ return ret;
-+ }
-+
- inode = jffs2_new_inode(dir_i, mode, ri);
-
- if (IS_ERR(inode)) {
- D1(printk(KERN_DEBUG "jffs2_new_inode() failed\n"));
- jffs2_free_raw_inode(ri);
-+ jffs2_complete_reservation(c);
- return PTR_ERR(inode);
- }
-
-@@ -203,22 +236,93 @@
- inode->i_mapping->nrpages = 0;
-
- f = JFFS2_INODE_INFO(inode);
-+
-+ ri->data_crc = 0;
-+ ri->node_crc = crc32(0, ri, sizeof(*ri)-8);
-+
-+ fn = jffs2_write_dnode(inode, ri, NULL, 0, phys_ofs, &writtenlen);
-+ D1(printk(KERN_DEBUG "jffs2_create created file with mode 0x%x\n", ri->mode));
-+ jffs2_free_raw_inode(ri);
-+
-+ if (IS_ERR(fn)) {
-+ D1(printk(KERN_DEBUG "jffs2_write_dnode() failed\n"));
-+ /* Eeek. Wave bye bye */
-+ up(&f->sem);
-+ jffs2_complete_reservation(c);
-+ jffs2_clear_inode(inode);
-+ return PTR_ERR(fn);
-+ }
-+ /* No data here. Only a metadata node, which will be
-+ obsoleted by the first data write
-+ */
-+ f->metadata = fn;
-+
-+ /* Work out where to put the dirent node now. */
-+ writtenlen = PAD(writtenlen);
-+ phys_ofs += writtenlen;
-+ alloclen -= writtenlen;
-+ up(&f->sem);
-+
-+ if (alloclen < sizeof(*rd)+namelen) {
-+ /* Not enough space left in this chunk. Get some more */
-+ jffs2_complete_reservation(c);
-+ ret = jffs2_reserve_space(c, sizeof(*rd)+namelen, &phys_ofs, &alloclen, ALLOC_NORMAL);
-+
-+ if (ret) {
-+ /* Eep. */
-+ D1(printk(KERN_DEBUG "jffs2_reserve_space() for dirent failed\n"));
-+ jffs2_clear_inode(inode);
-+ return ret;
-+ }
-+ }
-+
-+ rd = jffs2_alloc_raw_dirent();
-+ if (!rd) {
-+ /* Argh. Now we treat it like a normal delete */
-+ jffs2_complete_reservation(c);
-+ jffs2_clear_inode(inode);
-+ return -ENOMEM;
-+ }
-+
- dir_f = JFFS2_INODE_INFO(dir_i);
-+ down(&dir_f->sem);
-
-- ret = jffs2_do_create(c, dir_f, f, ri,
-- dentry->d_name.name, dentry->d_name.len);
-+ rd->magic = JFFS2_MAGIC_BITMASK;
-+ rd->nodetype = JFFS2_NODETYPE_DIRENT;
-+ rd->totlen = sizeof(*rd) + namelen;
-+ rd->hdr_crc = crc32(0, rd, sizeof(struct jffs2_unknown_node)-4);
-+
-+ rd->pino = dir_i->i_ino;
-+ rd->version = ++dir_f->highest_version;
-+ rd->ino = inode->i_ino;
-+ rd->mctime = CURRENT_TIME;
-+ rd->nsize = namelen;
-+ rd->type = DT_REG;
-+ rd->node_crc = crc32(0, rd, sizeof(*rd)-8);
-+ rd->name_crc = crc32(0, dentry->d_name.name, namelen);
-
-- if (ret) {
-+ fd = jffs2_write_dirent(dir_i, rd, dentry->d_name.name, namelen, phys_ofs, &writtenlen);
-+
-+ jffs2_complete_reservation(c);
-+
-+ if (IS_ERR(fd)) {
-+ /* dirent failed to write. Delete the inode normally
-+ as if it were the final unlink() */
-+ jffs2_free_raw_dirent(rd);
-+ up(&dir_f->sem);
- jffs2_clear_inode(inode);
-- make_bad_inode(inode);
-- iput(inode);
-- jffs2_free_raw_inode(ri);
-- return ret;
-+ return PTR_ERR(fd);
- }
-
-- dir_i->i_mtime = dir_i->i_ctime = je32_to_cpu(ri->ctime);
-+ dir_i->i_mtime = dir_i->i_ctime = rd->mctime;
-+
-+ jffs2_free_raw_dirent(rd);
-+
-+ /* Link the fd into the inode's list, obsoleting an old
-+ one if necessary. */
-+ jffs2_add_fd_to_list(c, fd, &dir_f->dents);
-+ up(&dir_f->sem);
-
-- jffs2_free_raw_inode(ri);
- d_instantiate(dentry, inode);
-
- D1(printk(KERN_DEBUG "jffs2_create: Created ino #%lu with mode %o, nlink %d(%d). nrpages %ld\n",
-@@ -228,48 +332,168 @@
-
- /***********************************************************************/
-
--
--static int jffs2_unlink(struct inode *dir_i, struct dentry *dentry)
-+static int jffs2_do_unlink(struct inode *dir_i, struct dentry *dentry, int rename)
- {
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(dir_i->i_sb);
-- struct jffs2_inode_info *dir_f = JFFS2_INODE_INFO(dir_i);
-- struct jffs2_inode_info *dead_f = JFFS2_INODE_INFO(dentry->d_inode);
-+ struct jffs2_inode_info *dir_f, *f;
-+ struct jffs2_sb_info *c;
-+ struct jffs2_raw_dirent *rd;
-+ struct jffs2_full_dirent *fd;
-+ __u32 alloclen, phys_ofs;
- int ret;
-
-- ret = jffs2_do_unlink(c, dir_f, dentry->d_name.name,
-- dentry->d_name.len, dead_f);
-- if (dead_f->inocache)
-- dentry->d_inode->i_nlink = dead_f->inocache->nlink;
-- return ret;
-+ c = JFFS2_SB_INFO(dir_i->i_sb);
-+
-+ rd = jffs2_alloc_raw_dirent();
-+ if (!rd)
-+ return -ENOMEM;
-+
-+ ret = jffs2_reserve_space(c, sizeof(*rd)+dentry->d_name.len, &phys_ofs, &alloclen, ALLOC_DELETION);
-+ if (ret) {
-+ jffs2_free_raw_dirent(rd);
-+ return ret;
-+ }
-+
-+ dir_f = JFFS2_INODE_INFO(dir_i);
-+ down(&dir_f->sem);
-+
-+ /* Build a deletion node */
-+ rd->magic = JFFS2_MAGIC_BITMASK;
-+ rd->nodetype = JFFS2_NODETYPE_DIRENT;
-+ rd->totlen = sizeof(*rd) + dentry->d_name.len;
-+ rd->hdr_crc = crc32(0, rd, sizeof(struct jffs2_unknown_node)-4);
-+
-+ rd->pino = dir_i->i_ino;
-+ rd->version = ++dir_f->highest_version;
-+ rd->ino = 0;
-+ rd->mctime = CURRENT_TIME;
-+ rd->nsize = dentry->d_name.len;
-+ rd->type = DT_UNKNOWN;
-+ rd->node_crc = crc32(0, rd, sizeof(*rd)-8);
-+ rd->name_crc = crc32(0, dentry->d_name.name, dentry->d_name.len);
-+
-+ fd = jffs2_write_dirent(dir_i, rd, dentry->d_name.name, dentry->d_name.len, phys_ofs, NULL);
-+
-+ jffs2_complete_reservation(c);
-+ jffs2_free_raw_dirent(rd);
-+
-+ if (IS_ERR(fd)) {
-+ up(&dir_f->sem);
-+ return PTR_ERR(fd);
-+ }
-+
-+ /* File it. This will mark the old one obsolete. */
-+ jffs2_add_fd_to_list(c, fd, &dir_f->dents);
-+ up(&dir_f->sem);
-+
-+ if (!rename) {
-+ f = JFFS2_INODE_INFO(dentry->d_inode);
-+ down(&f->sem);
-+
-+ while (f->dents) {
-+ /* There can be only deleted ones */
-+ fd = f->dents;
-+
-+ f->dents = fd->next;
-+
-+ if (fd->ino) {
-+ printk(KERN_WARNING "Deleting inode #%u with active dentry \"%s\"->ino #%u\n",
-+ f->inocache->ino, fd->name, fd->ino);
-+ } else {
-+ D1(printk(KERN_DEBUG "Removing deletion dirent for \"%s\" from dir ino #%u\n", fd->name, f->inocache->ino));
-+ }
-+ jffs2_mark_node_obsolete(c, fd->raw);
-+ jffs2_free_full_dirent(fd);
-+ }
-+
-+ f->inocache->nlink--;
-+ dentry->d_inode->i_nlink--;
-+ up(&f->sem);
-+ }
-+
-+ return 0;
- }
--/***********************************************************************/
-
-+static int jffs2_unlink(struct inode *dir_i, struct dentry *dentry)
-+{
-+ return jffs2_do_unlink(dir_i, dentry, 0);
-+}
-+/***********************************************************************/
-
--static int jffs2_link (struct dentry *old_dentry, struct inode *dir_i, struct dentry *dentry)
-+static int jffs2_do_link (struct dentry *old_dentry, struct inode *dir_i, struct dentry *dentry, int rename)
- {
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dentry->d_inode->i_sb);
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(old_dentry->d_inode);
-- struct jffs2_inode_info *dir_f = JFFS2_INODE_INFO(dir_i);
-+ struct jffs2_inode_info *dir_f, *f;
-+ struct jffs2_sb_info *c;
-+ struct jffs2_raw_dirent *rd;
-+ struct jffs2_full_dirent *fd;
-+ __u32 alloclen, phys_ofs;
- int ret;
-- uint8_t type;
-
-- /* Don't let people make hard links to bad inodes. */
-- if (!f->inocache)
-- return -EIO;
-+ c = JFFS2_SB_INFO(dir_i->i_sb);
-
-- if (S_ISDIR(old_dentry->d_inode->i_mode))
-- return -EPERM;
-+ rd = jffs2_alloc_raw_dirent();
-+ if (!rd)
-+ return -ENOMEM;
-+
-+ ret = jffs2_reserve_space(c, sizeof(*rd)+dentry->d_name.len, &phys_ofs, &alloclen, ALLOC_NORMAL);
-+ if (ret) {
-+ jffs2_free_raw_dirent(rd);
-+ return ret;
-+ }
-+
-+ dir_f = JFFS2_INODE_INFO(dir_i);
-+ down(&dir_f->sem);
-
-- /* XXX: This is ugly */
-- type = (old_dentry->d_inode->i_mode & S_IFMT) >> 12;
-- if (!type) type = DT_REG;
-+ /* Build a deletion node */
-+ rd->magic = JFFS2_MAGIC_BITMASK;
-+ rd->nodetype = JFFS2_NODETYPE_DIRENT;
-+ rd->totlen = sizeof(*rd) + dentry->d_name.len;
-+ rd->hdr_crc = crc32(0, rd, sizeof(struct jffs2_unknown_node)-4);
-+
-+ rd->pino = dir_i->i_ino;
-+ rd->version = ++dir_f->highest_version;
-+ rd->ino = old_dentry->d_inode->i_ino;
-+ rd->mctime = CURRENT_TIME;
-+ rd->nsize = dentry->d_name.len;
-
-- ret = jffs2_do_link(c, dir_f, f->inocache->ino, type, dentry->d_name.name, dentry->d_name.len);
-+ /* XXX: This is ugly. */
-+ rd->type = (old_dentry->d_inode->i_mode & S_IFMT) >> 12;
-+ if (!rd->type) rd->type = DT_REG;
-
-- if (!ret) {
-+ rd->node_crc = crc32(0, rd, sizeof(*rd)-8);
-+ rd->name_crc = crc32(0, dentry->d_name.name, dentry->d_name.len);
-+
-+ fd = jffs2_write_dirent(dir_i, rd, dentry->d_name.name, dentry->d_name.len, phys_ofs, NULL);
-+
-+ jffs2_complete_reservation(c);
-+ jffs2_free_raw_dirent(rd);
-+
-+ if (IS_ERR(fd)) {
-+ up(&dir_f->sem);
-+ return PTR_ERR(fd);
-+ }
-+
-+ /* File it. This will mark the old one obsolete. */
-+ jffs2_add_fd_to_list(c, fd, &dir_f->dents);
-+ up(&dir_f->sem);
-+
-+ if (!rename) {
-+ f = JFFS2_INODE_INFO(old_dentry->d_inode);
- down(&f->sem);
- old_dentry->d_inode->i_nlink = ++f->inocache->nlink;
- up(&f->sem);
-+ }
-+ return 0;
-+}
-+
-+static int jffs2_link (struct dentry *old_dentry, struct inode *dir_i, struct dentry *dentry)
-+{
-+ int ret;
-+
-+ if (S_ISDIR(old_dentry->d_inode->i_mode))
-+ return -EPERM;
-+
-+ ret = jffs2_do_link(old_dentry, dir_i, dentry, 0);
-+ if (!ret) {
- d_instantiate(dentry, old_dentry->d_inode);
- atomic_inc(&old_dentry->d_inode->i_count);
- }
-@@ -288,13 +512,10 @@
- struct jffs2_full_dnode *fn;
- struct jffs2_full_dirent *fd;
- int namelen;
-- uint32_t alloclen, phys_ofs;
-- uint32_t writtenlen;
-+ __u32 alloclen, phys_ofs;
-+ __u32 writtenlen;
- int ret;
-
-- if ((strlen(target)+1) > dir_i->i_sb->s_blocksize)
-- return -ENAMETOOLONG;
--
- /* FIXME: If you care. We'd need to use frags for the target
- if it grows much more than this */
- if (strlen(target) > 254)
-@@ -330,16 +551,15 @@
-
- f = JFFS2_INODE_INFO(inode);
-
-- inode->i_size = strlen(target);
-- ri->isize = ri->dsize = ri->csize = cpu_to_je32(inode->i_size);
-- ri->totlen = cpu_to_je32(sizeof(*ri) + inode->i_size);
-- ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
-+ inode->i_size = ri->isize = ri->dsize = ri->csize = strlen(target);
-+ ri->totlen = sizeof(*ri) + ri->dsize;
-+ ri->hdr_crc = crc32(0, ri, sizeof(struct jffs2_unknown_node)-4);
-
- ri->compr = JFFS2_COMPR_NONE;
-- ri->data_crc = cpu_to_je32(crc32(0, target, strlen(target)));
-- ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
-+ ri->data_crc = crc32(0, target, strlen(target));
-+ ri->node_crc = crc32(0, ri, sizeof(*ri)-8);
-
-- fn = jffs2_write_dnode(c, f, ri, target, strlen(target), phys_ofs, &writtenlen);
-+ fn = jffs2_write_dnode(inode, ri, target, strlen(target), phys_ofs, &writtenlen);
-
- jffs2_free_raw_inode(ri);
-
-@@ -383,42 +603,41 @@
- dir_f = JFFS2_INODE_INFO(dir_i);
- down(&dir_f->sem);
-
-- rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
-- rd->totlen = cpu_to_je32(sizeof(*rd) + namelen);
-- rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
--
-- rd->pino = cpu_to_je32(dir_i->i_ino);
-- rd->version = cpu_to_je32(++dir_f->highest_version);
-- rd->ino = cpu_to_je32(inode->i_ino);
-- rd->mctime = cpu_to_je32(CURRENT_TIME);
-+ rd->magic = JFFS2_MAGIC_BITMASK;
-+ rd->nodetype = JFFS2_NODETYPE_DIRENT;
-+ rd->totlen = sizeof(*rd) + namelen;
-+ rd->hdr_crc = crc32(0, rd, sizeof(struct jffs2_unknown_node)-4);
-+
-+ rd->pino = dir_i->i_ino;
-+ rd->version = ++dir_f->highest_version;
-+ rd->ino = inode->i_ino;
-+ rd->mctime = CURRENT_TIME;
- rd->nsize = namelen;
- rd->type = DT_LNK;
-- rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
-- rd->name_crc = cpu_to_je32(crc32(0, dentry->d_name.name, namelen));
--
-- fd = jffs2_write_dirent(c, dir_f, rd, dentry->d_name.name, namelen, phys_ofs, &writtenlen);
-+ rd->node_crc = crc32(0, rd, sizeof(*rd)-8);
-+ rd->name_crc = crc32(0, dentry->d_name.name, namelen);
-
-+ fd = jffs2_write_dirent(dir_i, rd, dentry->d_name.name, namelen, phys_ofs, &writtenlen);
-+
-+ jffs2_complete_reservation(c);
-+
- if (IS_ERR(fd)) {
- /* dirent failed to write. Delete the inode normally
- as if it were the final unlink() */
-- jffs2_complete_reservation(c);
- jffs2_free_raw_dirent(rd);
- up(&dir_f->sem);
- jffs2_clear_inode(inode);
- return PTR_ERR(fd);
- }
-
-- dir_i->i_mtime = dir_i->i_ctime = je32_to_cpu(rd->mctime);
-+ dir_i->i_mtime = dir_i->i_ctime = rd->mctime;
-
- jffs2_free_raw_dirent(rd);
-
- /* Link the fd into the inode's list, obsoleting an old
- one if necessary. */
- jffs2_add_fd_to_list(c, fd, &dir_f->dents);
--
- up(&dir_f->sem);
-- jffs2_complete_reservation(c);
-
- d_instantiate(dentry, inode);
- return 0;
-@@ -435,8 +654,8 @@
- struct jffs2_full_dnode *fn;
- struct jffs2_full_dirent *fd;
- int namelen;
-- uint32_t alloclen, phys_ofs;
-- uint32_t writtenlen;
-+ __u32 alloclen, phys_ofs;
-+ __u32 writtenlen;
- int ret;
-
- mode |= S_IFDIR;
-@@ -468,15 +687,13 @@
-
- inode->i_op = &jffs2_dir_inode_operations;
- inode->i_fop = &jffs2_dir_operations;
-- /* Directories get nlink 2 at start */
-- inode->i_nlink = 2;
-
- f = JFFS2_INODE_INFO(inode);
-
-- ri->data_crc = cpu_to_je32(0);
-- ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
-+ ri->data_crc = 0;
-+ ri->node_crc = crc32(0, ri, sizeof(*ri)-8);
-
-- fn = jffs2_write_dnode(c, f, ri, NULL, 0, phys_ofs, &writtenlen);
-+ fn = jffs2_write_dnode(inode, ri, NULL, 0, phys_ofs, &writtenlen);
-
- jffs2_free_raw_inode(ri);
-
-@@ -520,43 +737,41 @@
- dir_f = JFFS2_INODE_INFO(dir_i);
- down(&dir_f->sem);
-
-- rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
-- rd->totlen = cpu_to_je32(sizeof(*rd) + namelen);
-- rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
--
-- rd->pino = cpu_to_je32(dir_i->i_ino);
-- rd->version = cpu_to_je32(++dir_f->highest_version);
-- rd->ino = cpu_to_je32(inode->i_ino);
-- rd->mctime = cpu_to_je32(CURRENT_TIME);
-+ rd->magic = JFFS2_MAGIC_BITMASK;
-+ rd->nodetype = JFFS2_NODETYPE_DIRENT;
-+ rd->totlen = sizeof(*rd) + namelen;
-+ rd->hdr_crc = crc32(0, rd, sizeof(struct jffs2_unknown_node)-4);
-+
-+ rd->pino = dir_i->i_ino;
-+ rd->version = ++dir_f->highest_version;
-+ rd->ino = inode->i_ino;
-+ rd->mctime = CURRENT_TIME;
- rd->nsize = namelen;
- rd->type = DT_DIR;
-- rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
-- rd->name_crc = cpu_to_je32(crc32(0, dentry->d_name.name, namelen));
-+ rd->node_crc = crc32(0, rd, sizeof(*rd)-8);
-+ rd->name_crc = crc32(0, dentry->d_name.name, namelen);
-
-- fd = jffs2_write_dirent(c, dir_f, rd, dentry->d_name.name, namelen, phys_ofs, &writtenlen);
-+ fd = jffs2_write_dirent(dir_i, rd, dentry->d_name.name, namelen, phys_ofs, &writtenlen);
-+
-+ jffs2_complete_reservation(c);
-
- if (IS_ERR(fd)) {
- /* dirent failed to write. Delete the inode normally
- as if it were the final unlink() */
-- jffs2_complete_reservation(c);
- jffs2_free_raw_dirent(rd);
- up(&dir_f->sem);
- jffs2_clear_inode(inode);
- return PTR_ERR(fd);
- }
-
-- dir_i->i_mtime = dir_i->i_ctime = je32_to_cpu(rd->mctime);
-- dir_i->i_nlink++;
-+ dir_i->i_mtime = dir_i->i_ctime = rd->mctime;
-
- jffs2_free_raw_dirent(rd);
-
- /* Link the fd into the inode's list, obsoleting an old
- one if necessary. */
- jffs2_add_fd_to_list(c, fd, &dir_f->dents);
--
- up(&dir_f->sem);
-- jffs2_complete_reservation(c);
-
- d_instantiate(dentry, inode);
- return 0;
-@@ -566,16 +781,12 @@
- {
- struct jffs2_inode_info *f = JFFS2_INODE_INFO(dentry->d_inode);
- struct jffs2_full_dirent *fd;
-- int ret;
-
- for (fd = f->dents ; fd; fd = fd->next) {
- if (fd->ino)
- return -ENOTEMPTY;
- }
-- ret = jffs2_unlink(dir_i, dentry);
-- if (!ret)
-- dir_i->i_nlink--;
-- return ret;
-+ return jffs2_unlink(dir_i, dentry);
- }
-
- static int jffs2_mknod (struct inode *dir_i, struct dentry *dentry, int mode, int rdev)
-@@ -590,8 +801,8 @@
- int namelen;
- unsigned short dev;
- int devlen = 0;
-- uint32_t alloclen, phys_ofs;
-- uint32_t writtenlen;
-+ __u32 alloclen, phys_ofs;
-+ __u32 writtenlen;
- int ret;
-
- ri = jffs2_alloc_raw_inode();
-@@ -601,7 +812,7 @@
- c = JFFS2_SB_INFO(dir_i->i_sb);
-
- if (S_ISBLK(mode) || S_ISCHR(mode)) {
-- dev = (MAJOR(rdev) << 8) | MINOR(rdev);
-+ dev = (MAJOR(to_kdev_t(rdev)) << 8) | MINOR(to_kdev_t(rdev));
- devlen = sizeof(dev);
- }
-
-@@ -628,15 +839,15 @@
-
- f = JFFS2_INODE_INFO(inode);
-
-- ri->dsize = ri->csize = cpu_to_je32(devlen);
-- ri->totlen = cpu_to_je32(sizeof(*ri) + devlen);
-- ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
-+ ri->dsize = ri->csize = devlen;
-+ ri->totlen = sizeof(*ri) + ri->csize;
-+ ri->hdr_crc = crc32(0, ri, sizeof(struct jffs2_unknown_node)-4);
-
- ri->compr = JFFS2_COMPR_NONE;
-- ri->data_crc = cpu_to_je32(crc32(0, &dev, devlen));
-- ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
-+ ri->data_crc = crc32(0, &dev, devlen);
-+ ri->node_crc = crc32(0, ri, sizeof(*ri)-8);
-
-- fn = jffs2_write_dnode(c, f, ri, (char *)&dev, devlen, phys_ofs, &writtenlen);
-+ fn = jffs2_write_dnode(inode, ri, (char *)&dev, devlen, phys_ofs, &writtenlen);
-
- jffs2_free_raw_inode(ri);
-
-@@ -680,45 +891,44 @@
- dir_f = JFFS2_INODE_INFO(dir_i);
- down(&dir_f->sem);
-
-- rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
-- rd->totlen = cpu_to_je32(sizeof(*rd) + namelen);
-- rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
--
-- rd->pino = cpu_to_je32(dir_i->i_ino);
-- rd->version = cpu_to_je32(++dir_f->highest_version);
-- rd->ino = cpu_to_je32(inode->i_ino);
-- rd->mctime = cpu_to_je32(CURRENT_TIME);
-+ rd->magic = JFFS2_MAGIC_BITMASK;
-+ rd->nodetype = JFFS2_NODETYPE_DIRENT;
-+ rd->totlen = sizeof(*rd) + namelen;
-+ rd->hdr_crc = crc32(0, rd, sizeof(struct jffs2_unknown_node)-4);
-+
-+ rd->pino = dir_i->i_ino;
-+ rd->version = ++dir_f->highest_version;
-+ rd->ino = inode->i_ino;
-+ rd->mctime = CURRENT_TIME;
- rd->nsize = namelen;
-
- /* XXX: This is ugly. */
- rd->type = (mode & S_IFMT) >> 12;
-
-- rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
-- rd->name_crc = cpu_to_je32(crc32(0, dentry->d_name.name, namelen));
-+ rd->node_crc = crc32(0, rd, sizeof(*rd)-8);
-+ rd->name_crc = crc32(0, dentry->d_name.name, namelen);
-
-- fd = jffs2_write_dirent(c, dir_f, rd, dentry->d_name.name, namelen, phys_ofs, &writtenlen);
-+ fd = jffs2_write_dirent(dir_i, rd, dentry->d_name.name, namelen, phys_ofs, &writtenlen);
-+
-+ jffs2_complete_reservation(c);
-
- if (IS_ERR(fd)) {
- /* dirent failed to write. Delete the inode normally
- as if it were the final unlink() */
-- jffs2_complete_reservation(c);
- jffs2_free_raw_dirent(rd);
- up(&dir_f->sem);
- jffs2_clear_inode(inode);
- return PTR_ERR(fd);
- }
-
-- dir_i->i_mtime = dir_i->i_ctime = je32_to_cpu(rd->mctime);
-+ dir_i->i_mtime = dir_i->i_ctime = rd->mctime;
-
- jffs2_free_raw_dirent(rd);
-
- /* Link the fd into the inode's list, obsoleting an old
- one if necessary. */
- jffs2_add_fd_to_list(c, fd, &dir_f->dents);
--
- up(&dir_f->sem);
-- jffs2_complete_reservation(c);
-
- d_instantiate(dentry, inode);
-
-@@ -729,9 +939,7 @@
- struct inode *new_dir_i, struct dentry *new_dentry)
- {
- int ret;
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
- struct jffs2_inode_info *victim_f = NULL;
-- uint8_t type;
-
- /* The VFS will check for us and prevent trying to rename a
- * file over a directory and vice versa, but if it's a directory,
-@@ -760,15 +968,7 @@
- */
-
- /* Make a hard link */
--
-- /* XXX: This is ugly */
-- type = (old_dentry->d_inode->i_mode & S_IFMT) >> 12;
-- if (!type) type = DT_REG;
--
-- ret = jffs2_do_link(c, JFFS2_INODE_INFO(new_dir_i),
-- old_dentry->d_inode->i_ino, type,
-- new_dentry->d_name.name, new_dentry->d_name.len);
--
-+ ret = jffs2_do_link(old_dentry, new_dir_i, new_dentry, 1);
- if (ret)
- return ret;
-
-@@ -784,36 +984,21 @@
- }
- }
-
-- /* If it was a directory we moved, and there was no victim,
-- increase i_nlink on its new parent */
-- if (S_ISDIR(old_dentry->d_inode->i_mode) && !victim_f)
-- new_dir_i->i_nlink++;
--
- /* Unlink the original */
-- ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i),
-- old_dentry->d_name.name, old_dentry->d_name.len, NULL);
--
-- /* We don't touch inode->i_nlink */
--
-+ ret = jffs2_do_unlink(old_dir_i, old_dentry, 1);
-+
- if (ret) {
- /* Oh shit. We really ought to make a single node which can do both atomically */
- struct jffs2_inode_info *f = JFFS2_INODE_INFO(old_dentry->d_inode);
- down(&f->sem);
-- old_dentry->d_inode->i_nlink++;
-- if (f->inocache)
-- f->inocache->nlink++;
-+ old_dentry->d_inode->i_nlink = f->inocache->nlink++;
- up(&f->sem);
--
-+
- printk(KERN_NOTICE "jffs2_rename(): Link succeeded, unlink failed (err %d). You now have a hard link\n", ret);
- /* Might as well let the VFS know */
- d_instantiate(new_dentry, old_dentry->d_inode);
- atomic_inc(&old_dentry->d_inode->i_count);
-- return ret;
- }
--
-- if (S_ISDIR(old_dentry->d_inode->i_mode))
-- old_dir_i->i_nlink--;
--
-- return 0;
-+ return ret;
- }
-
-diff -Nur linux/fs/jffs2/ecos/ChangeLog /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/ChangeLog
---- linux/fs/jffs2/ecos/ChangeLog 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/ChangeLog 1970-01-01 07:00:00.000000000 +0700
-@@ -1,198 +0,0 @@
--2002-05-20 Jonathan Larmour <jlarmour@redhat.com>
--
-- * src/LICENCE: New file. Contains license for JFFS2, now GPL+exception.
-- * src/background.c: Point at LICENSE file instead of existing text.
-- * src/build.c: Ditto.
-- * src/compr.c: Ditto.
-- * src/compr_rtime.c: Ditto.
-- * src/compr_rubin.c: Ditto.
-- * src/compr_zlib.c: Ditto.
-- * src/dir-ecos.c: Ditto.
-- * src/erase.c: Ditto.
-- * src/file-ecos.c: Ditto.
-- * src/gc.c: Ditto.
-- * src/jffs2.h: Ditto.
-- * src/list.h: Ditto.
-- * src/malloc-ecos.c: Ditto.
-- * src/nodelist.c: Ditto.
-- * src/nodelist.h: Ditto.
-- * src/nodemgmt.c: Ditto.
-- * src/os-ecos.h: Ditto.
-- * src/pushpull.h: Ditto.
-- * src/read.c: Ditto.
-- * src/readinode.c: Ditto.
-- * src/scan.c: Ditto.
-- * src/write.c: Ditto.
--
--2002-01-28 David Woodhouse <dwmw2@cambridge.redhat.com>
--
-- * src/super-ecos.c: Removed.
-- * src/jffs2.c: Merge jffs2_write_super() and jffs2_put_super() into
-- the routines from which they were called, put jffs2_read_super()
-- in as a static function with a view to doing same RSN.
-- * src/jffs2port.h: Remove prototypes of functions that died.
-- * cdl/jffs2.cdl: Remove super-ecos.c
-- * src/dir-ecos.c src/write.c: Increase highest_version _before_
-- assigning to new node, not after.
--
--2002-01-27 David Woodhouse <dwmw2@cambridge.redhat.com>
--
-- * src/read.c (jffs2_read_inode_range): Deal correctly with
-- non-page-aligned read requests. We have to deal with the
-- case where we want to read from somewhere other than the
-- beginning of a frag.
-- * src/jffs2.c (jffs2_fo_read): Use jffs2_read_inode_range
-- instead of jffs2_readpage.
--
--2002-01-25 Jonathan Larmour <jlarmour@redhat.com>
--
-- * cdl/jffs2.cdl: We want CYGPKG_IO_FILEIO_INODE.
-- * src/dir-ecos.c (jffs2_symlink): Remove. eCos doesn't support symlinks.
-- (jffs2_mknod): Similar.
-- (jffs2_mkdir): Don't call d_instantiate - its a nop.
-- (jffs2_rename): Ditto.
-- * src/file-ecos.c (jffs2_commit_write): Don't set blocks.
-- * src/jffs2.c (jffs2_flash_writev): Rewrite to only write aligned
-- quantities to flash.
-- * src/jffs2port.h: Lots of decrufting.
-- * src/os-ecos.h: Ditto (a bit).
-- * src/readinode.c (jffs2_read_inode): Don't set blocks/blksize in inode.
-- * src/write.c (jffs2_new_inode): Ditto when __ECOS.
-- (jffs2_write_dnode): don't call writev with extra vectors
-- unnecessarily.
-- * src/super-ecos.c (jffs2_statfs): Remove - unused.
--
--2002-01-25 David Woodhouse <dwmw2@cambridge.redhat.com>
--
-- * src/super-ecos.c: Cruftectomy.
-- * src/compr*.[ch] src/pushpull.h: Namespace cleanups merged from
-- mainstream sources. Bit push functions made inline.
-- * src/pushpull.c: Removed.
-- * cdl/jffs2.c: Remove reference to pushpull.c
-- * src/file-ecos.c: Cruftectomy. Lots of unused stuff here.
-- * src/jffs2.c src/jffs2port.h: Remove some functions from jffs2.c
-- which are no longer used, move some others to jffs2port.h as
-- inline functions so they don't pollute the namespace.
--
--2002-01-24 Jonathan Larmour <jlarmour@redhat.com>
--
-- * tests/fileio1.c: Check in listdir that the number of dirents is
-- correct, taking into account existing files in case it's live.
--
-- * src/dir-ecos.c (jffs2_readdir): move to....
--
-- * src/jffs2.c (jffs2_fo_dirread): here. And fix the return code
-- in the process so it now works.
-- (filldir): Make inline and simpler.
-- * src/jffs2port.h: remove filldir related stuff.
--
--2002-01-24 David Woodhouse <dwmw2@cambridge.redhat.com>
--
-- * src/dir-ecos.c: Cruftectomy. Remove most of the stuff that was
-- commented out. Remove jffs2_do_{create,link,unlink} to write.c
-- * src/write.c: Add jffs2_do_{create,link,unlink} as in mainline.
-- * src/nodelist.h: Prototypes for the above.
-- * src/jffs2port.h: Don't include <pkgconf/kernel.h>.
--
--2002-01-23 Jonathan Larmour <jlarmour@redhat.com>
--
-- * src/jffs2.c (jffs2_mount): Allow multiple FSs, and integration
-- with flash block device.
-- (jffs2_flash_read): Use flash block device.
-- (jffs2_flash_erase): Ditto.
-- (jffs2_flash_write): Ditto.
-- (do_flash_init): Remove - now done by block device layer
-- * src/list.h: Remove and reimplement from scratch to avoid GPL.
-- * src/os-ecos.h: Keep flash block dev handle in superblock.
-- eCos does support obsoleting as it isn't NAND only.
-- * src/dir-ecos.c (jffs2_readdir): Return correct value on success.
-- Merge in changes mutatis mutandis from between v1.49 and v1.51 of
-- dir.c in main repository.
-- * cdl/jffs2.cdl: CYGPKG_MEMALLOC more accurately CYGINT_ISO_MALLOC.
-- Only jffs2.c needs to be in libextras.a
-- Requires Flash block devices as an alternative for hardcoding
-- the sector size, flash size and base address.
-- * src/super-ecos.c (jffs2_read_super): Use flash block device for
-- sector and flash sizes.
-- * tests/fileio1.c: mount using block device (defined by CDL).
-- No need to init here - done by flash block device layer.
--
--2002-01-21 David Woodhouse <dwmw2@cambridge.redhat.com>
--
-- * src/read.c: Obtain inode lock around reading symlink target.
-- * src/dir-ecos.c: Fix the long-standing up() without down() in
-- jffs2_readdir() when only the '.' and '..' entries are read, from
-- v1.52 of master dir.c. Merge copyright date change from v1.50 - note
-- that the portability cleanups from v1.51 aren't yet merged.
-- * src/os-ecos.h: Add jffs2_can_mark_obsolete() and the macros
-- for getting at generic inode fields from a struct jffs2_inode_info*
-- * src/nodemgmt.c: Remove an #ifndef __ECOS and use
-- jffs2_can_mark_obsolete() instead.
-- * src/jffs2port.h: up() is cyg_drv_mutex_unlock() not _release()
-- * src/gc.c: Merge portability cleanups - get rid of a lot of
-- references to 'struct inode'. Also include the attempt at NAND
-- support in jffs2_garbage_collect_deletion_dirent().
--
--2002-01-11 David Woodhouse <dwmw2@cambridge.redhat.com>
--
-- * src/jffs2port.h: Switch semaphore emulation to cyg_drv_mutex_t,
-- remove some kernel includes which seem gratuitous.
-- * cdl/jffs2.cdl: Require CYGPKG_MEMALLOC
-- * src/compr_zlib.c src/compr.c: Merge changes from mainline code
-- to make mkfs.jffs2 compile again.
--
--2002-01-10 David Woodhouse <dwmw2@cambridge.redhat.com>
--
-- * src/jffs2.c: The 'mode' arg passed to jffs2_open() shouldn't
-- have been called 'mode'. It's 'oflags'. You have to make up a
-- mode for the newly-created file yourself.
-- * src/nodelist.h src/read.c: Fix jffs2_getlink() so it takes
-- portable arguments, not a dentry. Move it to read.c and symlink.c
-- becomes obsolete.
-- * src/symlink-ecos.c: Removed.
-- * cdl/jffs2.cdl: Remove symlink-ecos.c
--
--2002-01-09 David Woodhouse <dwmw2@cambridge.redhat.com>
--
-- * Import updated JFFS2 sources into eCos tree.
--
--2000-08-28 Dominic Ostrowski (dominic.ostrowski@3glab.com)
--
-- * started on port of JFFS2 using ramfs as a template
--
--//===========================================================================
--//####ECOSGPLCOPYRIGHTBEGIN####
--// -------------------------------------------
--// This file is part of eCos, the Embedded Configurable Operating System.
--// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
--//
--// eCos 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 or (at your option) any later version.
--//
--// eCos 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 eCos; if not, write to the Free Software Foundation, Inc.,
--// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
--//
--// As a special exception, if other files instantiate templates or use macros
--// or inline functions from this file, or you compile this file and link it
--// with other works to produce a work based on this file, this file does not
--// by itself cause the resulting work to be covered by the GNU General Public
--// License. However the source code for this file must still be made available
--// in accordance with section (3) of the GNU General Public License.
--//
--// This exception does not invalidate any other reasons why a work based on
--// this file might be covered by the GNU General Public License.
--//
--// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
--// at http://sources.redhat.com/ecos/ecos-license/
--// -------------------------------------------
--//####ECOSGPLCOPYRIGHTEND####
--//===========================================================================
--
--
-diff -Nur linux/fs/jffs2/ecos/cdl/jffs2.cdl /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/cdl/jffs2.cdl
---- linux/fs/jffs2/ecos/cdl/jffs2.cdl 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/cdl/jffs2.cdl 1970-01-01 07:00:00.000000000 +0700
-@@ -1,119 +0,0 @@
--# ====================================================================
--#
--# jffs2.cdl
--#
--# JFFS2 Filesystem configuration data
--#
--# ====================================================================
--#####ECOSGPLCOPYRIGHTBEGIN####
--## -------------------------------------------
--## This file is part of eCos, the Embedded Configurable Operating System.
--## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
--##
--## eCos 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 or (at your option) any later version.
--##
--## eCos 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 eCos; if not, write to the Free Software Foundation, Inc.,
--## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
--##
--## As a special exception, if other files instantiate templates or use macros
--## or inline functions from this file, or you compile this file and link it
--## with other works to produce a work based on this file, this file does not
--## by itself cause the resulting work to be covered by the GNU General Public
--## License. However the source code for this file must still be made available
--## in accordance with section (3) of the GNU General Public License.
--##
--## This exception does not invalidate any other reasons why a work based on
--## this file might be covered by the GNU General Public License.
--##
--## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
--## at http://sources.redhat.com/ecos/ecos-license/
--## -------------------------------------------
--#####ECOSGPLCOPYRIGHTEND####
--# ====================================================================
--######DESCRIPTIONBEGIN####
--#
--# Author(s): David Woodhouse, Dominic Ostrowski
--# Original data: ported from JFFS2 by David Woodhouse
--# Contributors: dominic.ostrowski@3glab.com
--# Date: 2000-08-28
--#
--#####DESCRIPTIONEND####
--#
--# ====================================================================
--
--cdl_package CYGPKG_FS_JFFS2 {
-- display "JFFS2 filesystem"
-- doc doc/index.html
-- include_dir cyg/jffs2
--
-- requires CYGPKG_IO_FILEIO
-- requires CYGPKG_IO_FLASH
-- requires CYGPKG_COMPRESS_ZLIB
-- requires CYGINT_ISO_MALLOC
--
-- requires CYGPKG_ISOINFRA
-- requires CYGPKG_ERROR
-- requires CYGINT_ISO_ERRNO
-- requires CYGINT_ISO_ERRNO_CODES
-- requires CYGPKG_IO_FLASH_BLOCK_DEVICE
-- requires CYGPKG_IO_FILEIO_INODE
--
-- compile -library=libextras.a fs-ecos.c
-- compile build.c scan.c malloc-ecos.c nodelist.c crc32.c nodemgmt.c readinode.c erase.c dir-ecos.c write.c gc.c read.c compr.c compr_zlib.c compr_rtime.c compr_rubin.c file-ecos.c
--
-- cdl_option CYGPKG_FS_JFFS2_CFLAGS_ADD {
-- display "Additional compiler flags"
-- flavor data
-- no_define
-- # We add -D__ECOS to trigger eCos-specific code in places.
-- # We add -Werror because I find it useful.
-- default_value { "-D__ECOS -Werror" }
-- description "
-- This option modifies the set of compiler flags for
-- building the JFFS2 package.
-- These flags are used in addition
-- to the set of global flags."
-- }
--
-- cdl_option CYGPKG_FS_JFFS2_CFLAGS_REMOVE {
-- display "Suppressed compiler flags"
-- flavor data
-- no_define
-- # We remove -Wpointer-arith so that some of the hacky Linux-compat code
-- # (in file.c) compiled. We can probably remove it when that's replaced
-- # properly.
-- default_value { "-Wpointer-arith" }
-- description "
-- This option modifies the set of compiler flags for
-- building the JFFS2 package. These flags are removed from
-- the set of global flags if present."
-- }
--
-- # ----------------------------------------------------------------
-- # Tests
--
-- cdl_option CYGPKG_FS_JFFS2_TESTS {
-- display "JFFS2 FS tests"
-- flavor data
-- no_define
-- calculated { "tests/fileio1.c" }
-- description "
-- This option specifies the set of tests for the JFFS2 FS package."
-- }
--
--}
--
--# End of jffs2.cdl
--
--
--
--
--
-diff -Nur linux/fs/jffs2/ecos/doc/readme.txt /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/doc/readme.txt
---- linux/fs/jffs2/ecos/doc/readme.txt 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/doc/readme.txt 1970-01-01 07:00:00.000000000 +0700
-@@ -1,27 +0,0 @@
--This package is a port of the JFFS2 flash filing system to eCos. It has been
--developed on the Compaq Ipaq, and has not been tested on any other device.
--
--This code is subject to the original licensing terms, and additionally it
--should be noted that this code is still in an early stage of development.
--
--As this code will write to flash directly, caution should be exercised in
--its use. It may cause areas of the flash chips essential to the operation of
--the device to become corrupted.
--
--
--Minor modifications are necessary to the the eCos flash drivers
--
--io/flash/current/src/flash.c
--
--devs/flash/intel/strata/current/src/flash_program_buf.c
--
--to allow byte aligned rather than word aligned writes, and to ensure overwriting an existing
--word is successful (these are supplied in jffs2/current/src).
--
--
--Two test files are included fileio1.c (which performs the same tests as used for eCos RamFS),
--and romfileio1.c (tests as eCos RomFS).
--
--romfileio1.c requires that a jffs2 filesystem image jffs2.img is present at the desired mount point.
--This image was prepared on Linux with the tools originating with JFFS2 source from
--www.infradead.org
-\ No newline at end of file
-diff -Nur linux/fs/jffs2/ecos/src/dir-ecos.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/dir-ecos.c
---- linux/fs/jffs2/ecos/src/dir-ecos.c 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/dir-ecos.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,332 +0,0 @@
--/*
-- * JFFS2 -- Journalling Flash File System, Version 2.
-- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-- *
-- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
-- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-- *
-- * $Id: dir-ecos.c,v 1.1 2002/07/11 10:55:30 dwmw2 Exp $
-- *
-- */
--
--#include "nodelist.h"
--#include "crc32.h"
--
--/***********************************************************************/
--
--
--/* We keep the dirent list sorted in increasing order of name hash,
-- and we use the same hash function as the dentries. Makes this
-- nice and simple
--*/
--struct inode *jffs2_lookup(struct inode *dir_i, struct qstr *d_name)
--{
-- struct jffs2_inode_info *dir_f;
-- struct jffs2_sb_info *c;
-- struct jffs2_full_dirent *fd = NULL, *fd_list;
-- uint32_t ino = 0;
-- struct inode *inode = NULL;
--
-- D1(printk(KERN_DEBUG "jffs2_lookup()\n"));
--
-- dir_f = JFFS2_INODE_INFO(dir_i);
-- c = JFFS2_SB_INFO(dir_i->i_sb);
--
-- down(&dir_f->sem);
--
-- /* NB: The 2.2 backport will need to explicitly check for '.' and '..' here */
-- for (fd_list = dir_f->dents; fd_list && fd_list->nhash <= d_name->hash; fd_list = fd_list->next) {
-- if (fd_list->nhash == d_name->hash &&
-- (!fd || fd_list->version > fd->version) &&
-- strlen(fd_list->name) == d_name->len &&
-- !strncmp(fd_list->name, d_name->name, d_name->len)) {
-- fd = fd_list;
-- }
-- }
-- if (fd)
-- ino = fd->ino;
-- up(&dir_f->sem);
-- if (ino) {
-- inode = iget(dir_i->i_sb, ino);
-- if (!inode) {
-- printk(KERN_WARNING "iget() failed for ino #%u\n", ino);
-- return (ERR_PTR(-EIO));
-- }
-- }
--
-- return inode;
--}
--
--/***********************************************************************/
--
--
--
--int jffs2_create(struct inode *dir_i, struct qstr *d_name, int mode,
-- struct inode **new_i)
--{
-- struct jffs2_raw_inode *ri;
-- struct jffs2_inode_info *f, *dir_f;
-- struct jffs2_sb_info *c;
-- struct inode *inode;
-- int ret;
--
-- ri = jffs2_alloc_raw_inode();
-- if (!ri)
-- return -ENOMEM;
--
-- c = JFFS2_SB_INFO(dir_i->i_sb);
--
-- D1(printk(KERN_DEBUG "jffs2_create()\n"));
--
-- inode = jffs2_new_inode(dir_i, mode, ri);
--
-- if (IS_ERR(inode)) {
-- D1(printk(KERN_DEBUG "jffs2_new_inode() failed\n"));
-- jffs2_free_raw_inode(ri);
-- return PTR_ERR(inode);
-- }
--
-- f = JFFS2_INODE_INFO(inode);
-- dir_f = JFFS2_INODE_INFO(dir_i);
--
-- ret = jffs2_do_create(c, dir_f, f, ri,
-- d_name->name, d_name->len);
--
-- if (ret) {
-- jffs2_clear_inode(inode);
-- make_bad_inode(inode);
-- iput(inode);
-- jffs2_free_raw_inode(ri);
-- return ret;
-- }
--
-- jffs2_free_raw_inode(ri);
--
-- D1(printk(KERN_DEBUG "jffs2_create: Created ino #%lu with mode %o, nlink %d(%d)\n",
-- inode->i_ino, inode->i_mode, inode->i_nlink, f->inocache->nlink));
-- *new_i = inode;
-- return 0;
--}
--
--/***********************************************************************/
--
--
--int jffs2_unlink(struct inode *dir_i, struct inode *d_inode, struct qstr *d_name)
--{
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(dir_i->i_sb);
-- struct jffs2_inode_info *dir_f = JFFS2_INODE_INFO(dir_i);
-- struct jffs2_inode_info *dead_f = JFFS2_INODE_INFO(d_inode);
-- int ret;
--
-- ret = jffs2_do_unlink(c, dir_f, d_name->name,
-- d_name->len, dead_f);
-- d_inode->i_nlink = dead_f->inocache->nlink;
-- return ret;
--}
--/***********************************************************************/
--
--
--int jffs2_link (struct inode *old_d_inode, struct inode *dir_i, struct qstr *d_name)
--{
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(old_d_inode->i_sb);
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(old_d_inode);
-- struct jffs2_inode_info *dir_f = JFFS2_INODE_INFO(dir_i);
-- int ret;
--
-- /* XXX: This is ugly */
-- uint8_t type = (old_d_inode->i_mode & S_IFMT) >> 12;
-- if (!type) type = DT_REG;
--
-- ret = jffs2_do_link(c, dir_f, f->inocache->ino, type, d_name->name, d_name->len);
--
-- if (!ret) {
-- down(&f->sem);
-- old_d_inode->i_nlink = ++f->inocache->nlink;
-- up(&f->sem);
-- }
-- return ret;
--}
--
--int jffs2_mkdir (struct inode *dir_i, struct qstr *d_name, int mode, struct inode **new_i)
--{
-- struct jffs2_inode_info *f, *dir_f;
-- struct jffs2_sb_info *c;
-- struct inode *inode;
-- struct jffs2_raw_inode *ri;
-- struct jffs2_raw_dirent *rd;
-- struct jffs2_full_dnode *fn;
-- struct jffs2_full_dirent *fd;
-- int namelen;
-- uint32_t alloclen, phys_ofs;
-- uint32_t writtenlen;
-- int ret;
--
-- mode |= S_IFDIR;
--
-- ri = jffs2_alloc_raw_inode();
-- if (!ri)
-- return -ENOMEM;
--
-- c = JFFS2_SB_INFO(dir_i->i_sb);
--
-- /* Try to reserve enough space for both node and dirent.
-- * Just the node will do for now, though
-- */
-- namelen = d_name->len;
-- ret = jffs2_reserve_space(c, sizeof(*ri), &phys_ofs, &alloclen, ALLOC_NORMAL);
--
-- if (ret) {
-- jffs2_free_raw_inode(ri);
-- return ret;
-- }
--
-- inode = jffs2_new_inode(dir_i, mode, ri);
--
-- if (IS_ERR(inode)) {
-- jffs2_free_raw_inode(ri);
-- jffs2_complete_reservation(c);
-- return PTR_ERR(inode);
-- }
--
-- f = JFFS2_INODE_INFO(inode);
--
-- ri->data_crc = 0;
-- ri->node_crc = crc32(0, ri, sizeof(*ri)-8);
--
-- fn = jffs2_write_dnode(c, f, ri, NULL, 0, phys_ofs, &writtenlen);
--
-- jffs2_free_raw_inode(ri);
--
-- if (IS_ERR(fn)) {
-- /* Eeek. Wave bye bye */
-- up(&f->sem);
-- jffs2_complete_reservation(c);
-- jffs2_clear_inode(inode);
-- return PTR_ERR(fn);
-- }
-- /* No data here. Only a metadata node, which will be
-- obsoleted by the first data write
-- */
-- f->metadata = fn;
-- up(&f->sem);
--
-- /* Work out where to put the dirent node now. */
-- writtenlen = PAD(writtenlen);
-- phys_ofs += writtenlen;
-- alloclen -= writtenlen;
--
-- if (alloclen < sizeof(*rd)+namelen) {
-- /* Not enough space left in this chunk. Get some more */
-- jffs2_complete_reservation(c);
-- ret = jffs2_reserve_space(c, sizeof(*rd)+namelen, &phys_ofs, &alloclen, ALLOC_NORMAL);
-- if (ret) {
-- /* Eep. */
-- jffs2_clear_inode(inode);
-- return ret;
-- }
-- }
--
-- rd = jffs2_alloc_raw_dirent();
-- if (!rd) {
-- /* Argh. Now we treat it like a normal delete */
-- jffs2_complete_reservation(c);
-- jffs2_clear_inode(inode);
-- return -ENOMEM;
-- }
--
-- dir_f = JFFS2_INODE_INFO(dir_i);
-- down(&dir_f->sem);
--
-- rd->magic = JFFS2_MAGIC_BITMASK;
-- rd->nodetype = JFFS2_NODETYPE_DIRENT;
-- rd->totlen = sizeof(*rd) + namelen;
-- rd->hdr_crc = crc32(0, rd, sizeof(struct jffs2_unknown_node)-4);
--
-- rd->pino = dir_i->i_ino;
-- rd->version = ++dir_f->highest_version;
-- rd->ino = inode->i_ino;
-- rd->mctime = CURRENT_TIME;
-- rd->nsize = namelen;
-- rd->type = DT_DIR;
-- rd->node_crc = crc32(0, rd, sizeof(*rd)-8);
-- rd->name_crc = crc32(0, d_name->name, namelen);
--
-- fd = jffs2_write_dirent(c, dir_f, rd, d_name->name, namelen, phys_ofs, &writtenlen);
--
-- jffs2_complete_reservation(c);
-- jffs2_free_raw_dirent(rd);
--
-- if (IS_ERR(fd)) {
-- /* dirent failed to write. Delete the inode normally
-- as if it were the final unlink() */
-- up(&dir_f->sem);
-- jffs2_clear_inode(inode);
-- return PTR_ERR(fd);
-- }
--
-- /* Link the fd into the inode's list, obsoleting an old
-- one if necessary. */
-- jffs2_add_fd_to_list(c, fd, &dir_f->dents);
-- up(&dir_f->sem);
--
-- *new_i = inode;
-- return 0;
--}
--
--int jffs2_rmdir (struct inode *dir_i, struct inode *d_inode, struct qstr *d_name)
--{
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(d_inode);
-- struct jffs2_full_dirent *fd;
--
-- for (fd = f->dents ; fd; fd = fd->next) {
-- if (fd->ino)
-- return EPERM; //-ENOTEMPTY;
-- }
-- return jffs2_unlink(dir_i, d_inode, d_name);
--}
--
--int jffs2_rename (struct inode *old_dir_i, struct inode *d_inode, struct qstr *old_d_name,
-- struct inode *new_dir_i, struct qstr *new_d_name)
--{
-- int ret;
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
-- uint8_t type;
--
-- /* XXX: We probably ought to alloc enough space for
-- both nodes at the same time. Writing the new link,
-- then getting -ENOSPC, is quite bad :)
-- */
--
-- /* Make a hard link */
--
-- /* XXX: This is ugly */
-- type = (d_inode->i_mode & S_IFMT) >> 12;
-- if (!type) type = DT_REG;
--
-- ret = jffs2_do_link(c, JFFS2_INODE_INFO(new_dir_i),
-- d_inode->i_ino, type,
-- new_d_name->name, new_d_name->len);
--
-- if (ret)
-- return ret;
--
-- /* Unlink the original */
-- ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i),
-- old_d_name->name, old_d_name->len, NULL);
--
-- /* We don't touch inode->i_nlink */
--
-- if (ret) {
-- /* Oh shit. We really ought to make a single node which can do both atomically */
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(d_inode);
-- down(&f->sem);
-- d_inode->i_nlink = f->inocache->nlink++;
-- up(&f->sem);
--
-- printk(KERN_NOTICE "jffs2_rename(): Link succeeded, unlink failed (err %d). You now have a hard link\n", ret);
-- }
-- return ret;
--}
--
-diff -Nur linux/fs/jffs2/ecos/src/file-ecos.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/file-ecos.c
---- linux/fs/jffs2/ecos/src/file-ecos.c 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/file-ecos.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,217 +0,0 @@
--/*
-- * JFFS2 -- Journalling Flash File System, Version 2.
-- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-- *
-- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
-- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-- *
-- * $Id: file-ecos.c,v 1.1 2002/07/11 10:55:30 dwmw2 Exp $
-- *
-- */
--
--//#include <linux/kernel.h>
--//#include <linux/mtd/compatmac.h> /* for min() */
--//#include <linux/slab.h>
--//#include <linux/fs.h>
--//#include <linux/pagemap.h>
--#include "jffs2.h"
--#include "nodelist.h"
--#include "crc32.h"
--
--int jffs2_do_readpage_nolock (struct inode *inode, struct page *pg)
--{
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-- unsigned char *pg_buf;
-- int ret;
--
-- D1(printk(KERN_DEBUG "jffs2_do_readpage_nolock(): ino #%lu, page at offset 0x%lx\n", inode->i_ino, pg->index << PAGE_CACHE_SHIFT));
--
-- if (!PageLocked(pg))
-- PAGE_BUG(pg);
--
-- pg_buf = (char *)kmap(pg);
-- /* FIXME: Can kmap fail? */
--
-- ret = jffs2_read_inode_range(c, f, pg_buf, pg->index << PAGE_CACHE_SHIFT, PAGE_CACHE_SIZE);
--
-- if (ret) {
-- ClearPageUptodate(pg);
-- SetPageError(pg);
-- } else {
-- SetPageUptodate(pg);
-- ClearPageError(pg);
-- }
--
-- flush_dcache_page(pg);
-- kunmap(pg);
--
-- D1(printk(KERN_DEBUG "readpage finished\n"));
-- return 0;
--}
--
--int jffs2_do_readpage_unlock(struct inode *inode, struct page *pg)
--{
-- int ret = jffs2_do_readpage_nolock(inode, pg);
-- UnlockPage(pg);
-- return ret;
--}
--
--
--//int jffs2_readpage (struct file *filp, struct page *pg)
--int jffs2_readpage (struct inode *d_inode, struct page *pg)
--{
-- // struct jffs2_inode_info *f = JFFS2_INODE_INFO(d_inode);
-- int ret;
--
-- // down(&f->sem);
-- ret = jffs2_do_readpage_unlock(d_inode, pg);
-- // up(&f->sem);
-- return ret;
--}
--
--//int jffs2_prepare_write (struct file *filp, struct page *pg, unsigned start, unsigned end)
--int jffs2_prepare_write (struct inode *d_inode, struct page *pg, unsigned start, unsigned end)
--{
-- struct inode *inode = d_inode;
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
-- uint32_t pageofs = pg->index << PAGE_CACHE_SHIFT;
-- int ret = 0;
--
-- down(&f->sem);
-- //D1(printk(KERN_DEBUG "jffs2_prepare_write() nrpages %ld\n", inode->i_mapping->nrpages));
-- D1(printk(KERN_DEBUG "jffs2_prepare_write()\n"));
--
-- if (pageofs > inode->i_size) {
-- /* Make new hole frag from old EOF to new page */
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-- struct jffs2_raw_inode ri;
-- struct jffs2_full_dnode *fn;
-- uint32_t phys_ofs, alloc_len;
--
-- D1(printk(KERN_DEBUG "Writing new hole frag 0x%x-0x%x between current EOF and new page\n",
-- (unsigned int)inode->i_size, pageofs));
--
-- ret = jffs2_reserve_space(c, sizeof(ri), &phys_ofs, &alloc_len, ALLOC_NORMAL);
-- if (ret) {
-- up(&f->sem);
-- return ret;
-- }
-- memset(&ri, 0, sizeof(ri));
--
-- ri.magic = JFFS2_MAGIC_BITMASK;
-- ri.nodetype = JFFS2_NODETYPE_INODE;
-- ri.totlen = sizeof(ri);
-- ri.hdr_crc = crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4);
--
-- ri.ino = f->inocache->ino;
-- ri.version = ++f->highest_version;
-- ri.mode = inode->i_mode;
-- ri.uid = inode->i_uid;
-- ri.gid = inode->i_gid;
-- ri.isize = max((uint32_t)inode->i_size, pageofs);
-- ri.atime = ri.ctime = ri.mtime = CURRENT_TIME;
-- ri.offset = inode->i_size;
-- ri.dsize = pageofs - inode->i_size;
-- ri.csize = 0;
-- ri.compr = JFFS2_COMPR_ZERO;
-- ri.node_crc = crc32(0, &ri, sizeof(ri)-8);
-- ri.data_crc = 0;
--
-- fn = jffs2_write_dnode(c, f, &ri, NULL, 0, phys_ofs, NULL);
-- jffs2_complete_reservation(c);
-- if (IS_ERR(fn)) {
-- ret = PTR_ERR(fn);
-- up(&f->sem);
-- return ret;
-- }
-- ret = jffs2_add_full_dnode_to_inode(c, f, fn);
-- if (f->metadata) {
-- jffs2_mark_node_obsolete(c, f->metadata->raw);
-- jffs2_free_full_dnode(f->metadata);
-- f->metadata = NULL;
-- }
-- if (ret) {
-- D1(printk(KERN_DEBUG "Eep. add_full_dnode_to_inode() failed in prepare_write, returned %d\n", ret));
-- jffs2_mark_node_obsolete(c, fn->raw);
-- jffs2_free_full_dnode(fn);
-- up(&f->sem);
-- return ret;
-- }
-- inode->i_size = pageofs;
-- }
--
--
-- /* Read in the page if it wasn't already present */
-- // eCos has no concept of uptodate and by default always reads pages afresh
-- if (!Page_Uptodate(pg) && (start || end < PAGE_SIZE))
-- ret = jffs2_do_readpage_nolock(inode, pg);
-- //D1(printk(KERN_DEBUG "end prepare_write(). nrpages %ld\n", inode->i_mapping->nrpages));
-- D1(printk(KERN_DEBUG "end prepare_write()\n"));
-- up(&f->sem);
-- return ret;
--}
--
--//int jffs2_commit_write (struct file *filp, struct page *pg, unsigned start, unsigned end)
--int jffs2_commit_write (struct inode *d_inode, struct page *pg, unsigned start, unsigned end)
--{
-- /* Actually commit the write from the page cache page we're looking at.
-- * For now, we write the full page out each time. It sucks, but it's simple
-- */
-- struct inode *inode = d_inode;
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-- struct jffs2_raw_inode *ri;
-- int ret = 0;
-- uint32_t writtenlen = 0;
--
-- D1(printk(KERN_DEBUG "jffs2_commit_write(): ino #%lu, page at 0x%lx, range %d-%d\n",
-- inode->i_ino, pg->index << PAGE_CACHE_SHIFT, start, end));
--
--
-- ri = jffs2_alloc_raw_inode();
-- if (!ri) {
-- D1(printk(KERN_DEBUG "jffs2_commit_write(): Allocation of raw inode failed\n"));
-- return -ENOMEM;
-- }
--
-- /* Set the fields that the generic jffs2_write_inode_range() code can't find */
-- ri->ino = inode->i_ino;
-- ri->mode = inode->i_mode;
-- ri->uid = inode->i_uid;
-- ri->gid = inode->i_gid;
-- ri->isize = (uint32_t)inode->i_size;
-- ri->atime = ri->ctime = ri->mtime = CURRENT_TIME;
--
-- /* We rely on the fact that generic_file_write() currently kmaps the page for us. */
-- ret = jffs2_write_inode_range(c, f, ri, page_address(pg) + start,
-- (pg->index << PAGE_CACHE_SHIFT) + start, end - start, &writtenlen);
--
-- if (ret) {
-- /* There was an error writing. */
-- SetPageError(pg);
-- }
--
-- if (writtenlen) {
-- if (inode->i_size < (pg->index << PAGE_CACHE_SHIFT) + start + writtenlen) {
-- inode->i_size = (pg->index << PAGE_CACHE_SHIFT) + start + writtenlen;
-- inode->i_ctime = inode->i_mtime = ri->ctime;
-- }
-- }
--
-- jffs2_free_raw_inode(ri);
--
-- if (start+writtenlen < end) {
-- /* generic_file_write has written more to the page cache than we've
-- actually written to the medium. Mark the page !Uptodate so that
-- it gets reread */
-- D1(printk(KERN_DEBUG "jffs2_commit_write(): Not all bytes written. Marking page !uptodate\n"));
-- SetPageError(pg);
-- ClearPageUptodate(pg);
-- }
--
-- D1(printk(KERN_DEBUG "jffs2_commit_write() returning %d\n",writtenlen?writtenlen:ret));
-- return writtenlen?writtenlen:ret;
--}
-diff -Nur linux/fs/jffs2/ecos/src/fs-ecos.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/fs-ecos.c
---- linux/fs/jffs2/ecos/src/fs-ecos.c 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/fs-ecos.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,1923 +0,0 @@
--/*
-- * JFFS2 -- Journalling Flash File System, Version 2.
-- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-- *
-- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
-- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-- *
-- * $Id: fs-ecos.c,v 1.1 2002/07/11 10:55:30 dwmw2 Exp $
-- *
-- */
--
--#include "jffs2port.h"
--#include "jffs2.h"
--#include "jffs2_fs_sb.h"
--#include "jffs2_fs_i.h"
--#include "nodelist.h"
--
--#include <errno.h>
--#include <string.h>
--#include <cyg/io/io.h>
--#include <cyg/io/config_keys.h>
--#include <cyg/io/flash.h>
--
--//==========================================================================
--// Forward definitions
--
--// Filesystem operations
--static int jffs2_mount ( cyg_fstab_entry *fste, cyg_mtab_entry *mte );
--static int jffs2_umount ( cyg_mtab_entry *mte );
--static int jffs2_open ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- int mode, cyg_file *fte );
--static int jffs2_ops_unlink ( cyg_mtab_entry *mte, cyg_dir dir, const char *name );
--static int jffs2_ops_mkdir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name );
--static int jffs2_ops_rmdir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name );
--static int jffs2_ops_rename ( cyg_mtab_entry *mte, cyg_dir dir1, const char *name1,
-- cyg_dir dir2, const char *name2 );
--static int jffs2_ops_link ( cyg_mtab_entry *mte, cyg_dir dir1, const char *name1,
-- cyg_dir dir2, const char *name2, int type );
--static int jffs2_opendir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- cyg_file *fte );
--static int jffs2_chdir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- cyg_dir *dir_out );
--static int jffs2_stat ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- struct stat *buf);
--static int jffs2_getinfo ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- int key, void *buf, int len );
--static int jffs2_setinfo ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- int key, void *buf, int len );
--
--// File operations
--static int jffs2_fo_read (struct CYG_FILE_TAG *fp, struct CYG_UIO_TAG *uio);
--static int jffs2_fo_write (struct CYG_FILE_TAG *fp, struct CYG_UIO_TAG *uio);
--static int jffs2_fo_lseek (struct CYG_FILE_TAG *fp, off_t *pos, int whence );
--static int jffs2_fo_ioctl (struct CYG_FILE_TAG *fp, CYG_ADDRWORD com,
-- CYG_ADDRWORD data);
--static int jffs2_fo_fsync (struct CYG_FILE_TAG *fp, int mode );
--static int jffs2_fo_close (struct CYG_FILE_TAG *fp);
--static int jffs2_fo_fstat (struct CYG_FILE_TAG *fp, struct stat *buf );
--static int jffs2_fo_getinfo (struct CYG_FILE_TAG *fp, int key, void *buf, int len );
--static int jffs2_fo_setinfo (struct CYG_FILE_TAG *fp, int key, void *buf, int len );
--
--// Directory operations
--static int jffs2_fo_dirread (struct CYG_FILE_TAG *fp, struct CYG_UIO_TAG *uio);
--static int jffs2_fo_dirlseek (struct CYG_FILE_TAG *fp, off_t *pos, int whence );
--
--
--//==========================================================================
--// Filesystem table entries
--
--// -------------------------------------------------------------------------
--// Fstab entry.
--// This defines the entry in the filesystem table.
--// For simplicity we use _FILESYSTEM synchronization for all accesses since
--// we should never block in any filesystem operations.
--
--FSTAB_ENTRY( jffs2_fste, "jffs2", 0,
-- CYG_SYNCMODE_FILE_FILESYSTEM|CYG_SYNCMODE_IO_FILESYSTEM,
-- jffs2_mount,
-- jffs2_umount,
-- jffs2_open,
-- jffs2_ops_unlink,
-- jffs2_ops_mkdir,
-- jffs2_ops_rmdir,
-- jffs2_ops_rename,
-- jffs2_ops_link,
-- jffs2_opendir,
-- jffs2_chdir,
-- jffs2_stat,
-- jffs2_getinfo,
-- jffs2_setinfo);
--
--// -------------------------------------------------------------------------
--// File operations.
--// This set of file operations are used for normal open files.
--
--static cyg_fileops jffs2_fileops =
--{
-- jffs2_fo_read,
-- jffs2_fo_write,
-- jffs2_fo_lseek,
-- jffs2_fo_ioctl,
-- cyg_fileio_seltrue,
-- jffs2_fo_fsync,
-- jffs2_fo_close,
-- jffs2_fo_fstat,
-- jffs2_fo_getinfo,
-- jffs2_fo_setinfo
--};
--
--// -------------------------------------------------------------------------
--// Directory file operations.
--// This set of operations are used for open directories. Most entries
--// point to error-returning stub functions. Only the read, lseek and
--// close entries are functional.
--
--static cyg_fileops jffs2_dirops =
--{
-- jffs2_fo_dirread,
-- (cyg_fileop_write *)cyg_fileio_enosys,
-- jffs2_fo_dirlseek,
-- (cyg_fileop_ioctl *)cyg_fileio_enosys,
-- cyg_fileio_seltrue,
-- (cyg_fileop_fsync *)cyg_fileio_enosys,
-- jffs2_fo_close,
-- (cyg_fileop_fstat *)cyg_fileio_enosys,
-- (cyg_fileop_getinfo *)cyg_fileio_enosys,
-- (cyg_fileop_setinfo *)cyg_fileio_enosys
--};
--
--
--//==========================================================================
--// STATIC VARIABLES !!!
--
--static char read_write_buffer[PAGE_CACHE_SIZE]; //avoids malloc when user may be under memory pressure
--static char gc_buffer[PAGE_CACHE_SIZE]; //avoids malloc when user may be under memory pressure
--
--//==========================================================================
--// Directory operations
--
--struct jffs2_dirsearch
--{
-- struct inode *dir; // directory to search
-- const char *path; // path to follow
-- struct inode *node; // Node found
-- const char *name; // last name fragment used
-- int namelen; // name fragment length
-- cyg_bool last; // last name in path?
--};
--
--typedef struct jffs2_dirsearch jffs2_dirsearch;
--
--//==========================================================================
--// Ref count and nlink management
--
--// -------------------------------------------------------------------------
--// dec_refcnt()
--// Decrment the reference count on an inode. If this makes the ref count
--// zero, then this inode can be freed.
--
--static int dec_refcnt( struct inode *node )
--{
-- int err = ENOERR;
-- node->i_count--;
--
-- // In JFFS2 inode's are temporary in ram structures that are free'd when the usage i_count drops to 0
-- // The i_nlink however is managed by JFFS2 and is unrelated to usage
-- if( node->i_count == 0)
-- {
-- // This inode is not in use, so delete it.
-- iput(node);
-- }
--
-- return err;
--}
--
--// FIXME: This seems like real cruft. Wouldn't it be better just to do the
--// right thing?
--static void icache_evict(struct inode *root_i, struct inode *i) {
-- struct inode *cached_inode;
-- struct inode *next_inode;
--
-- D2(printf("icache_evict\n"));
-- // If this is an absolute search path from the root,
-- // remove all cached inodes with i_count of zero (these are only
-- // held where needed for dotdot filepaths)
-- if(i == root_i) {
-- for(cached_inode = root_i; cached_inode != NULL; cached_inode = next_inode) {
-- next_inode = cached_inode->i_cache_next;
-- if (cached_inode->i_count == 0) {
-- cached_inode->i_cache_prev->i_cache_next = cached_inode->i_cache_next; // Prveious entry points ahead of us
-- if (cached_inode->i_cache_next != NULL)
-- cached_inode->i_cache_next->i_cache_prev = cached_inode->i_cache_prev; // Next entry points behind us
-- jffs2_clear_inode(cached_inode);
-- D2(printf("free icache_evict inode %x $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n", cached_inode));
-- free(cached_inode);
-- }
-- }
-- }
--}
--
--//==========================================================================
--// Directory search
--
--// -------------------------------------------------------------------------
--// init_dirsearch()
--// Initialize a dirsearch object to start a search
--
--static void init_dirsearch( jffs2_dirsearch *ds,
-- struct inode *dir,
-- const char *name)
--{
-- D2(printf("init_dirsearch name = %s\n", name));
-- D2(printf("init_dirsearch dir = %x\n", dir));
-- ds->dir = dir;
-- ds->path = name;
-- ds->node = dir;
-- ds->name = name;
-- ds->namelen = 0;
-- ds->last = false;
--}
--
--
--// -------------------------------------------------------------------------
--// find_entry()
--// Search a single directory for the next name in a path and update the
--// dirsearch object appropriately.
--
--static int find_entry( jffs2_dirsearch *ds )
--{
-- unsigned long hash;
-- struct qstr this;
-- unsigned int c;
-- const char * hashname;
--
-- struct inode *dir = ds->dir;
-- const char *name = ds->path;
-- const char *n = name;
-- char namelen = 0;
-- struct inode *d;
--
-- D2(printf("find_entry\n"));
--
-- // check that we really have a directory
-- if( !S_ISDIR(dir->i_mode) )
-- return ENOTDIR;
--
-- // Isolate the next element of the path name.
-- while( *n != '\0' && *n != '/' )
-- n++, namelen++;
--
-- // If we terminated on a NUL, set last flag.
-- if( *n == '\0' )
-- ds->last = true;
--
-- // update name in dirsearch object
-- ds->name = name;
-- ds->namelen = namelen;
--
-- if (name[0] == '.') switch (namelen) {
-- default:
-- break;
-- case 2:
-- // Dot followed by not Dot, treat as any other name
-- if (name[1] != '.')
-- break;
-- // Dot Dot
-- // Move back up the search path
-- D2(printf("find_entry found ..\n"));
-- ds->node = ds->dir->i_parent;
-- if(ds->dir->i_count == 0) {
-- iput(ds->dir); // This inode may be evicted
-- ds->dir = NULL;
-- }
-- return ENOERR;
-- case 1:
-- // Dot is consumed
-- D2(printf("find_entry found .\n"));
-- ds->node = ds->dir;
-- return ENOERR;
-- }
--
-- // Here we have the name and its length set up.
-- // Search the directory for a matching entry
--
-- hashname = name;
-- this.name = hashname;
-- c = *(const unsigned char *)hashname;
--
-- hash = init_name_hash();
-- do {
-- hashname++;
-- hash = partial_name_hash(c, hash);
-- c = *(const unsigned char *)hashname;
-- } while (c && (c != '/'));
-- this.len = hashname - (const char *) this.name;
-- this.hash = end_name_hash(hash);
--
-- D2(printf("find_entry for name = %s\n", ds->path));
-- d = jffs2_lookup(dir, &this);
-- D2(printf("find_entry got dir = %x\n", d));
--
-- if( d == NULL )
-- return ENOENT;
--
-- // The back path for dotdot to follow
-- d->i_parent = dir;
-- // pass back the node we have found
-- ds->node = d;
--
-- return ENOERR;
--
--}
--
--// -------------------------------------------------------------------------
--// jffs2_find()
--// Main interface to directory search code. This is used in all file
--// level operations to locate the object named by the pathname.
--
--static int jffs2_find( jffs2_dirsearch *d )
--{
-- int err;
--
-- D2(printf("jffs2_find for path =%s\n", d->path));
-- // Short circuit empty paths
-- if( *(d->path) == '\0' )
-- return ENOERR;
--
-- // iterate down directory tree until we find the object
-- // we want.
-- for(;;)
-- {
-- err = find_entry( d );
--
-- if( err != ENOERR )
-- return err;
--
-- if( d->last )
-- return ENOERR;
--
-- // every inode traversed in the find is temporary and should be free'd
-- //iput(d->dir);
--
-- // Update dirsearch object to search next directory.
-- d->dir = d->node;
-- d->path += d->namelen;
-- if( *(d->path) == '/' ) d->path++; // skip dirname separators
-- }
--}
--
--//==========================================================================
--// Pathconf support
--// This function provides support for pathconf() and fpathconf().
--
--static int jffs2_pathconf( struct inode *node, struct cyg_pathconf_info *info )
--{
-- int err = ENOERR;
-- D2(printf("jffs2_pathconf\n"));
--
-- switch( info->name )
-- {
-- case _PC_LINK_MAX:
-- info->value = LINK_MAX;
-- break;
--
-- case _PC_MAX_CANON:
-- info->value = -1; // not supported
-- err = EINVAL;
-- break;
--
-- case _PC_MAX_INPUT:
-- info->value = -1; // not supported
-- err = EINVAL;
-- break;
--
-- case _PC_NAME_MAX:
-- info->value = NAME_MAX;
-- break;
--
-- case _PC_PATH_MAX:
-- info->value = PATH_MAX;
-- break;
--
-- case _PC_PIPE_BUF:
-- info->value = -1; // not supported
-- err = EINVAL;
-- break;
--
--
-- case _PC_ASYNC_IO:
-- info->value = -1; // not supported
-- err = EINVAL;
-- break;
--
-- case _PC_CHOWN_RESTRICTED:
-- info->value = -1; // not supported
-- err = EINVAL;
-- break;
--
-- case _PC_NO_TRUNC:
-- info->value = 0;
-- break;
--
-- case _PC_PRIO_IO:
-- info->value = 0;
-- break;
--
-- case _PC_SYNC_IO:
-- info->value = 0;
-- break;
--
-- case _PC_VDISABLE:
-- info->value = -1; // not supported
-- err = EINVAL;
-- break;
--
-- default:
-- err = EINVAL;
-- break;
-- }
--
-- return err;
--}
--
--//==========================================================================
--// Filesystem operations
--
--// -------------------------------------------------------------------------
--// jffs2_mount()
--// Process a mount request. This mainly creates a root for the
--// filesystem.
--static int jffs2_read_super(struct super_block *sb)
--{
-- struct jffs2_sb_info *c;
-- struct inode *root_i;
-- Cyg_ErrNo err;
-- cyg_uint32 len;
-- cyg_io_flash_getconfig_devsize_t ds;
-- cyg_io_flash_getconfig_blocksize_t bs;
--
-- D1(printk(KERN_DEBUG "jffs2: read_super\n"));
--
-- c = JFFS2_SB_INFO(sb);
-- memset(c, 0, sizeof(*c));
--
-- len = sizeof(ds);
-- err = cyg_io_get_config( sb->s_dev,
-- CYG_IO_GET_CONFIG_FLASH_DEVSIZE,
-- &ds, &len );
-- if ( err != ENOERR ) {
-- D1(printf("jffs2: cyg_io_get_config failed to get dev size: %d\n",
-- err));
-- return err;
-- }
-- len = sizeof(bs);
-- bs.offset = 0;
-- err = cyg_io_get_config( sb->s_dev,
-- CYG_IO_GET_CONFIG_FLASH_BLOCKSIZE,
-- &bs, &len );
-- if ( err != ENOERR ) {
-- D1(printf("jffs2: cyg_io_get_config failed to get block size: %d\n",
-- err));
-- return err;
-- }
--
-- c->sector_size = bs.block_size;
-- c->flash_size = ds.dev_size;
--
-- err = jffs2_do_mount_fs(c);
-- if (err)
-- return -err;
--
-- D1(printk(KERN_DEBUG "jffs2_read_super(): Getting root inode\n"));
-- root_i = iget(sb, 1);
-- if (is_bad_inode(root_i)) {
-- D1(printk(KERN_WARNING "get root inode failed\n"));
-- err = EIO;
-- goto out_nodes;
-- }
--
-- D1(printk(KERN_DEBUG "jffs2_read_super(): d_alloc_root()\n"));
-- sb->s_root = d_alloc_root(root_i);
-- if (!sb->s_root) {
-- err = ENOMEM;
-- goto out_root_i;
-- }
-- sb->s_blocksize = PAGE_CACHE_SIZE;
-- sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
-- sb->s_magic = JFFS2_SUPER_MAGIC;
--
-- return 0;
--
-- out_root_i:
-- iput(root_i);
-- out_nodes:
-- jffs2_free_ino_caches(c);
-- jffs2_free_raw_node_refs(c);
-- free(c->blocks);
--
-- return err;
--}
--
--static int jffs2_mount ( cyg_fstab_entry *fste, cyg_mtab_entry *mte )
--{
-- extern cyg_mtab_entry mtab[], mtab_end;
-- struct super_block *jffs2_sb = NULL;
-- struct jffs2_sb_info *c;
-- cyg_mtab_entry *m;
-- cyg_io_handle_t t;
-- Cyg_ErrNo err;
--
-- D2(printf("jffs2_mount\n"));
--
-- err = cyg_io_lookup( mte->devname, &t );
-- if( err != ENOERR )
-- return -err;
--
-- // Iterate through the mount table to see if we're mounted
-- // FIXME: this should be done better - perhaps if the superblock
-- // can be stored as an inode in the icache.
-- for( m = &mtab[0]; m != &mtab_end; m++ )
-- {
-- // stop if there are more than the configured maximum
-- if( m-&mtab[0] >= CYGNUM_FILEIO_MTAB_MAX )
-- {
-- m = &mtab_end;
-- break;
-- }
-- if ( m->valid && strcmp( m->fsname, "jffs2" ) == 0 &&
-- strcmp( m->devname, mte->devname) == 0 ) {
-- jffs2_sb = (struct super_block *)m->data;
-- }
-- }
--
-- if ( jffs2_sb == NULL) {
-- jffs2_sb = malloc(sizeof(struct super_block));
--
-- if(jffs2_sb == NULL)
-- return ENOSPC;
--
-- c = JFFS2_SB_INFO(jffs2_sb);
-- memset(jffs2_sb, 0, sizeof(struct super_block));
-- jffs2_sb->s_dev = t;
--
-- err = jffs2_read_super(jffs2_sb);
--
-- if (err) {
-- free(jffs2_sb);
-- return err;
-- }
--
-- jffs2_sb->s_root->i_parent = jffs2_sb->s_root; // points to itself, no dotdot paths above mountpoint
-- jffs2_sb->s_root->i_cache_prev = NULL; // root inode, so always null
-- jffs2_sb->s_root->i_cache_next = NULL;
-- jffs2_sb->s_root->i_count = 1; // Ensures the root inode is always in ram until umount
--
-- D2(printf("jffs2_mount erasing pending blocks\n"));
-- jffs2_erase_pending_blocks(c);
-- jffs2_mark_erased_blocks(c);
-- }
-- mte->data = (CYG_ADDRWORD)jffs2_sb;
--
-- jffs2_sb->s_mount_count++;
-- mte->root = (cyg_dir)jffs2_sb->s_root;
-- D2(printf("jffs2_mounted superblock at %x\n", mte->root));
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_umount()
--// Unmount the filesystem.
--
--static int jffs2_umount ( cyg_mtab_entry *mte )
--{
-- struct inode *root = (struct inode *)mte->root;
-- struct super_block *jffs2_sb = root->i_sb;
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(jffs2_sb);
--
-- D2(printf("jffs2_umount\n"));
--
-- // Decrement the mount count
-- jffs2_sb->s_mount_count--;
--
-- // Only really umount if this is the only mount
-- if (jffs2_sb->s_mount_count == 0) {
--
-- // Check for open/inuse root or any cached inodes
--//if( root->i_count != 1 || root->i_cache_next != NULL) // root icount was set to 1 on mount
-- if( root->i_cache_next != NULL) // root icount was set to 1 on mount
-- return EBUSY;
--
-- dec_refcnt(root); // Time to free the root inode
--
-- //Clear root inode
-- //root_i = NULL;
--
-- // Clean up the super block and root inode
-- jffs2_free_ino_caches(c);
-- jffs2_free_raw_node_refs(c);
-- free(c->blocks);
--
-- // Clear root pointer
-- mte->root = CYG_DIR_NULL;
--
-- mte->fs->data = 0; // fstab entry, visible to all mounts. No current mount
-- // That's all folks.
-- D2(printf("jffs2_umount No current mounts\n"));
-- }
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_open()
--// Open a file for reading or writing.
--
--static int jffs2_open ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- int mode, cyg_file *file )
--{
--
-- jffs2_dirsearch ds;
-- struct inode *node = NULL;
-- int err;
--
-- D2(printf("jffs2_open\n"));
--
-- icache_evict((struct inode *)mte->root, (struct inode *)dir);
--
-- init_dirsearch( &ds, (struct inode *)dir, name );
--
-- err = jffs2_find( &ds );
--
-- if( err == ENOENT )
-- {
-- if( ds.last && (mode & O_CREAT) )
-- {
-- unsigned long hash;
-- struct qstr this;
-- unsigned int c;
-- const char * hashname;
--
-- // No node there, if the O_CREAT bit is set then we must
-- // create a new one. The dir and name fields of the dirsearch
-- // object will have been updated so we know where to put it.
--
-- hashname = ds.name;
-- this.name = hashname;
-- c = *(const unsigned char *)hashname;
--
-- hash = init_name_hash();
-- do {
-- hashname++;
-- hash = partial_name_hash(c, hash);
-- c = *(const unsigned char *)hashname;
-- } while (c && (c != '/'));
-- this.len = hashname - (const char *) this.name;
-- this.hash = end_name_hash(hash);
--
-- err = jffs2_create(ds.dir, &this, 0644, &node);
--
-- if( err != 0 )
-- {
-- //Possible orphaned inode on the flash - but will be gc'd
-- return err;
-- }
--
-- err = ENOERR;
-- }
-- }
-- else if( err == ENOERR )
-- {
-- // The node exists. If the O_CREAT and O_EXCL bits are set, we
-- // must fail the open.
--
-- if( (mode & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL) )
-- err = EEXIST;
-- else node = ds.node;
-- }
--
-- if( err == ENOERR && (mode & O_TRUNC ) )
-- {
-- // If the O_TRUNC bit is set we must clean out the file data.
--
-- node->i_size = 0;
--
-- // Update file times
-- node->i_ctime =
-- node->i_mtime = cyg_timestamp();
-- }
--
-- if( err != ENOERR ) return err;
--
-- // Check that we actually have a file here
-- if( S_ISDIR(node->i_mode) ) return EISDIR;
--
-- node->i_count++; // Count successful open
--
-- // Initialize the file object
--
-- file->f_flag |= mode & CYG_FILE_MODE_MASK;
-- file->f_type = CYG_FILE_TYPE_FILE;
-- file->f_ops = &jffs2_fileops;
-- file->f_offset = (mode&O_APPEND) ? node->i_size : 0;
-- file->f_data = (CYG_ADDRWORD)node;
-- file->f_xops = 0;
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_ops_unlink()
--// Remove a file link from its directory.
--
--static int jffs2_ops_unlink ( cyg_mtab_entry *mte, cyg_dir dir, const char *name )
--{
-- unsigned long hash;
-- struct qstr this;
-- unsigned int c;
-- const char * hashname;
-- jffs2_dirsearch ds;
-- int err;
--
-- D2(printf("jffs2_ops_unlink\n"));
--
-- icache_evict((struct inode *)mte->root, (struct inode *)dir);
--
-- init_dirsearch( &ds, (struct inode *)dir, name );
--
-- err = jffs2_find( &ds );
--
-- if( err != ENOERR ) return err;
--
-- // Cannot unlink directories, use rmdir() instead
-- if( S_ISDIR(ds.node->i_mode) )
-- return EPERM;
--
-- // Delete it from its directory
--
-- hashname = ds.name;
-- this.name = hashname;
-- c = *(const unsigned char *)hashname;
--
-- hash = init_name_hash();
-- do {
-- hashname++;
-- hash = partial_name_hash(c, hash);
-- c = *(const unsigned char *)hashname;
-- } while (c && (c != '/'));
-- this.len = hashname - (const char *) this.name;
-- this.hash = end_name_hash(hash);
--
-- err = jffs2_unlink(ds.dir, ds.node, &this);
--
-- return err;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_ops_mkdir()
--// Create a new directory.
--
--static int jffs2_ops_mkdir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name )
--{
-- jffs2_dirsearch ds;
-- struct inode *node = NULL;
-- int err;
--
-- D2(printf("jffs2_ops_mkdir\n"));
--
-- icache_evict((struct inode *)mte->root, (struct inode *)dir);
--
-- init_dirsearch( &ds, (struct inode *)dir, name );
--
-- err = jffs2_find( &ds );
--
-- if( err == ENOENT )
-- {
-- if( ds.last )
-- {
-- unsigned long hash;
-- struct qstr this;
-- unsigned int c;
-- const char * hashname;
-- // The entry does not exist, and it is the last element in
-- // the pathname, so we can create it here.
--
-- hashname = ds.name;
-- this.name = hashname;
-- c = *(const unsigned char *)hashname;
--
-- hash = init_name_hash();
-- do {
-- hashname++;
-- hash = partial_name_hash(c, hash);
-- c = *(const unsigned char *)hashname;
-- } while (c && (c != '/'));
-- this.len = hashname - (const char *) this.name;
-- this.hash = end_name_hash(hash);
--
-- err = jffs2_mkdir(ds.dir, &this, 0, &node);
--
-- if( err != 0 )
-- return ENOSPC;
--
-- }
-- // If this was not the last element, then and intermediate
-- // directory does not exist.
-- }
-- else
-- {
-- // If there we no error, something already exists with that
-- // name, so we cannot create another one.
--
-- if( err == ENOERR )
-- err = EEXIST;
-- }
--
-- return err;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_ops_rmdir()
--// Remove a directory.
--
--static int jffs2_ops_rmdir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name )
--{
-- unsigned long hash;
-- struct qstr this;
-- unsigned int c;
-- const char * hashname;
-- jffs2_dirsearch ds;
-- int err;
--
-- D2(printf("jffs2_ops_rmdir\n"));
--
-- icache_evict((struct inode *)mte->root, (struct inode *)dir);
--
-- init_dirsearch( &ds, (struct inode *)dir, name );
--
-- err = jffs2_find( &ds );
--
-- if( err != ENOERR ) return err;
--
-- // Check that this is actually a directory.
-- if( !S_ISDIR(ds.node->i_mode) )
-- return EPERM;
--
-- // Delete the entry.
-- hashname = ds.name;
-- this.name = hashname;
-- c = *(const unsigned char *)hashname;
--
-- hash = init_name_hash();
-- do {
-- hashname++;
-- hash = partial_name_hash(c, hash);
-- c = *(const unsigned char *)hashname;
-- } while (c && (c != '/'));
-- this.len = hashname - (const char *) this.name;
-- this.hash = end_name_hash(hash);
--
-- err = jffs2_rmdir(ds.dir, ds.node, &this);
--
-- return err;
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_ops_rename()
--// Rename a file/dir.
--
--static int jffs2_ops_rename ( cyg_mtab_entry *mte, cyg_dir dir1, const char *name1,
-- cyg_dir dir2, const char *name2 )
--{
-- unsigned long hash;
-- struct qstr this1,this2;
-- unsigned int c;
-- const char * hashname;
-- jffs2_dirsearch ds1, ds2;
-- int err;
--
-- D2(printf("jffs2_ops_rename\n"));
--
-- init_dirsearch( &ds1, (struct inode *)dir1, name1 );
--
-- err = jffs2_find( &ds1 );
--
-- if( err != ENOERR ) return err;
--
-- init_dirsearch( &ds2, (struct inode *)dir2, name2 );
--
-- err = jffs2_find( &ds2 );
--
-- // Allow through renames to non-existent objects.
-- if( ds2.last && err == ENOENT )
-- ds2.node = NULL, err = ENOERR;
--
-- if( err != ENOERR ) return err;
--
-- // Null rename, just return
-- if( ds1.node == ds2.node )
-- return ENOERR;
--
-- hashname = ds1.name;
-- this1.name = hashname;
-- c = *(const unsigned char *)hashname;
--
-- hash = init_name_hash();
-- do {
-- hashname++;
-- hash = partial_name_hash(c, hash);
-- c = *(const unsigned char *)hashname;
-- } while (c && (c != '/'));
-- this1.len = hashname - (const char *) this1.name;
-- this1.hash = end_name_hash(hash);
--
-- hashname = ds2.name;
-- this2.name = hashname;
-- c = *(const unsigned char *)hashname;
--
-- hash = init_name_hash();
-- do {
-- hashname++;
-- hash = partial_name_hash(c, hash);
-- c = *(const unsigned char *)hashname;
-- } while (c && (c != '/'));
-- this2.len = hashname - (const char *) this2.name;
-- this2.hash = end_name_hash(hash);
--
-- // First deal with any entry that is at the destination
-- if( ds2.node )
-- {
-- // Check that we are renaming like-for-like
--
-- if( !S_ISDIR(ds1.node->i_mode) && S_ISDIR(ds2.node->i_mode) )
-- return EISDIR;
--
-- if( S_ISDIR(ds1.node->i_mode) && !S_ISDIR(ds2.node->i_mode) )
-- return ENOTDIR;
--
-- // Now delete the destination directory entry
--
-- err = jffs2_unlink(ds2.dir, ds2.node, &this2);
--
-- if( err != 0 ) return err;
--
-- }
--
-- // Now we know that there is no clashing node at the destination,
-- // make a new direntry at the destination and delete the old entry
-- // at the source.
--
-- err = jffs2_rename(ds1.dir, ds1.node, &this1, ds2.dir, &this2);
--
-- // Update directory times
-- if( err == 0 )
-- ds1.dir->i_ctime =
-- ds1.dir->i_mtime =
-- ds2.dir->i_ctime =
-- ds2.dir->i_mtime = cyg_timestamp();
--
-- return err;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_ops_link()
--// Make a new directory entry for a file.
--
--static int jffs2_ops_link ( cyg_mtab_entry *mte, cyg_dir dir1, const char *name1,
-- cyg_dir dir2, const char *name2, int type )
--{
-- unsigned long hash;
-- struct qstr this;
-- unsigned int c;
-- const char * hashname;
-- jffs2_dirsearch ds1, ds2;
-- int err;
--
-- D2(printf("jffs2_ops_link\n"));
--
-- // Only do hard links for now in this filesystem
-- if( type != CYG_FSLINK_HARD )
-- return EINVAL;
--
-- init_dirsearch( &ds1, (struct inode *)dir1, name1 );
--
-- err = jffs2_find( &ds1 );
--
-- if( err != ENOERR ) return err;
--
-- init_dirsearch( &ds2, (struct inode *)dir2, name2 );
--
-- err = jffs2_find( &ds2 );
--
-- // Don't allow links to existing objects
-- if( err == ENOERR ) return EEXIST;
--
-- // Allow through links to non-existing terminal objects
-- if( ds2.last && err == ENOENT )
-- ds2.node = NULL, err = ENOERR;
--
-- if( err != ENOERR ) return err;
--
-- // Now we know that there is no existing node at the destination,
-- // make a new direntry at the destination.
--
-- hashname = ds2.name;
-- this.name = hashname;
-- c = *(const unsigned char *)hashname;
--
-- hash = init_name_hash();
-- do {
-- hashname++;
-- hash = partial_name_hash(c, hash);
-- c = *(const unsigned char *)hashname;
-- } while (c && (c != '/'));
-- this.len = hashname - (const char *) this.name;
-- this.hash = end_name_hash(hash);
--
-- err = jffs2_link(ds2.dir, ds1.node, &this);
--
-- if( err == 0 )
-- ds1.node->i_ctime =
-- ds2.dir->i_ctime =
-- ds2.dir->i_mtime = cyg_timestamp();
--
-- return err;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_opendir()
--// Open a directory for reading.
--
--static int jffs2_opendir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- cyg_file *file )
--{
-- jffs2_dirsearch ds;
-- int err;
--
-- D2(printf("jffs2_opendir\n"));
--
-- icache_evict((struct inode *)mte->root, (struct inode *)dir);
--
-- init_dirsearch( &ds, (struct inode *)dir, name );
--
-- err = jffs2_find( &ds );
--
-- if( err != ENOERR ) return err;
--
-- // check it is really a directory.
-- if( !S_ISDIR(ds.node->i_mode) ) return ENOTDIR;
--
-- ds.node->i_count++; // Count successful open
--
-- // Initialize the file object, setting the f_ops field to a
-- // special set of file ops.
--
-- file->f_type = CYG_FILE_TYPE_FILE;
-- file->f_ops = &jffs2_dirops;
-- file->f_offset = 0;
-- file->f_data = (CYG_ADDRWORD)ds.node;
-- file->f_xops = 0;
--
--
-- return ENOERR;
--
--}
--
--// -------------------------------------------------------------------------
--// jffs2_chdir()
--// Change directory support.
--
--static int jffs2_chdir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- cyg_dir *dir_out )
--{
-- D2(printf("jffs2_chdir\n"));
--
-- if( dir_out != NULL )
-- {
-- // This is a request to get a new directory pointer in
-- // *dir_out.
--
-- jffs2_dirsearch ds;
-- int err;
--
-- icache_evict((struct inode *)mte->root, (struct inode *)dir);
--
-- init_dirsearch( &ds, (struct inode *)dir, name );
--
-- err = jffs2_find( &ds );
--
-- if( err != ENOERR ) return err;
--
-- // check it is a directory
-- if( !S_ISDIR(ds.node->i_mode) )
-- return ENOTDIR;
--
-- // Increment ref count to keep this directory in existance
-- // while it is the current cdir.
-- ds.node->i_count++;
--
-- // Pass it out
-- *dir_out = (cyg_dir)ds.node;
-- }
-- else
-- {
-- // If no output dir is required, this means that the mte and
-- // dir arguments are the current cdir setting and we should
-- // forget this fact.
--
-- struct inode *node = (struct inode *)dir;
--
-- // Just decrement directory reference count.
-- dec_refcnt( node );
-- }
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_stat()
--// Get struct stat info for named object.
--
--static int jffs2_stat ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- struct stat *buf)
--{
-- jffs2_dirsearch ds;
-- int err;
--
-- D2(printf("jffs2_stat\n"));
--
-- icache_evict((struct inode *)mte->root, (struct inode *)dir);
--
-- init_dirsearch( &ds, (struct inode *)dir, name );
--
-- err = jffs2_find( &ds );
--
-- if( err != ENOERR ) return err;
--
-- // Fill in the status
-- buf->st_mode = ds.node->i_mode;
-- buf->st_ino = (ino_t)ds.node;
-- buf->st_dev = 0;
-- buf->st_nlink = ds.node->i_nlink;
-- buf->st_uid = 0;
-- buf->st_gid = 0;
-- buf->st_size = ds.node->i_size;
-- buf->st_atime = ds.node->i_atime;
-- buf->st_mtime = ds.node->i_mtime;
-- buf->st_ctime = ds.node->i_ctime;
--
-- return err;
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_getinfo()
--// Getinfo. Currently only support pathconf().
--
--static int jffs2_getinfo ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- int key, void *buf, int len )
--{
-- jffs2_dirsearch ds;
-- int err;
--
-- D2(printf("jffs2_getinfo\n"));
--
-- icache_evict((struct inode *)mte->root, (struct inode *)dir);
--
-- init_dirsearch( &ds, (struct inode *)dir, name );
--
-- err = jffs2_find( &ds );
--
-- if( err != ENOERR ) return err;
--
-- switch( key )
-- {
-- case FS_INFO_CONF:
-- err = jffs2_pathconf( ds.node, (struct cyg_pathconf_info *)buf );
-- break;
--
-- default:
-- err = EINVAL;
-- }
-- return err;
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_setinfo()
--// Setinfo. Nothing to support here at present.
--
--static int jffs2_setinfo ( cyg_mtab_entry *mte, cyg_dir dir, const char *name,
-- int key, void *buf, int len )
--{
-- // No setinfo keys supported at present
--
-- D2(printf("jffs2_setinfo\n"));
--
-- return EINVAL;
--}
--
--
--//==========================================================================
--// File operations
--
--// -------------------------------------------------------------------------
--// jffs2_fo_read()
--// Read data from the file.
--
--static int jffs2_fo_read (struct CYG_FILE_TAG *fp, struct CYG_UIO_TAG *uio)
--{
-- struct inode *inode = (struct inode *)fp->f_data;
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-- int i;
-- ssize_t resid = uio->uio_resid;
-- off_t pos = fp->f_offset;
--
-- down(&f->sem);
--
-- // Loop over the io vectors until there are none left
-- for( i = 0; i < uio->uio_iovcnt && pos < inode->i_size; i++ )
-- {
-- int ret;
-- cyg_iovec *iov = &uio->uio_iov[i];
-- off_t len = min(iov->iov_len, inode->i_size - pos);
--
-- D2(printf("jffs2_fo_read inode size %d\n", inode->i_size));
--
-- ret = jffs2_read_inode_range(c, f, (unsigned char *)iov->iov_base,
-- pos, len);
-- if (ret) {
-- D1(printf("jffs2_fo_read(): read_inode_range failed %d\n",
-- ret));
-- uio->uio_resid = resid;
-- up(&f->sem);
-- return -ret;
-- }
-- resid -= len;
-- pos += len;
-- }
--
-- // We successfully read some data, update the node's access time
-- // and update the file offset and transfer residue.
--
-- inode->i_atime = cyg_timestamp();
--
-- uio->uio_resid = resid;
-- fp->f_offset = pos;
--
-- up(&f->sem);
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_fo_write()
--// Write data to file.
--
--static int jffs2_fo_write (struct CYG_FILE_TAG *fp, struct CYG_UIO_TAG *uio)
--{
-- struct page write_page;
-- off_t page_start_pos;
-- struct inode *node = (struct inode *)fp->f_data;
-- off_t pos = fp->f_offset;
-- ssize_t resid = uio->uio_resid;
-- int i;
--
-- memset(&read_write_buffer, 0, PAGE_CACHE_SIZE);
-- write_page.virtual = &read_write_buffer;
--
-- // If the APPEND mode bit was supplied, force all writes to
-- // the end of the file.
-- if( fp->f_flag & CYG_FAPPEND )
-- pos = fp->f_offset = node->i_size;
--
-- // Check that pos is within current file size, or at the very end.
-- if( pos < 0 || pos > node->i_size )
-- return EINVAL;
--
-- // Now loop over the iovecs until they are all done, or
-- // we get an error.
-- for( i = 0; i < uio->uio_iovcnt; i++ )
-- {
-- cyg_iovec *iov = &uio->uio_iov[i];
-- char *buf = (char *)iov->iov_base;
-- off_t len = iov->iov_len;
--
-- // loop over the vector writing it to the file until it has
-- // all been done.
-- while( len > 0 )
-- {
-- //cyg_uint8 *fbuf;
-- //size_t bsize;
-- size_t writtenlen;
-- off_t l = len;
-- int err;
--
-- write_page.index = 0;
--
-- page_start_pos = pos;
-- while(page_start_pos >= (PAGE_CACHE_SIZE)) {
-- write_page.index++;
-- page_start_pos -= PAGE_CACHE_SIZE;
-- }
--
-- if( l > PAGE_CACHE_SIZE - page_start_pos)
-- l = PAGE_CACHE_SIZE - page_start_pos;
--
-- D2(printf("jffs2_fo_write write_page.index %d\n", write_page.index));
-- D2(printf("jffs2_fo_write page_start_pos %d\n", page_start_pos));
-- D2(printf("jffs2_fo_write transfer size %d\n", l));
--
-- err = jffs2_prepare_write(node, &write_page, page_start_pos, page_start_pos + l);
--
-- if( err != 0 )
-- return err;
--
-- // copy data in
-- memcpy(&read_write_buffer[page_start_pos], buf, l);
--
-- writtenlen = jffs2_commit_write(node, &write_page, page_start_pos, page_start_pos + l);
--
-- if( writtenlen != l )
-- return ENOSPC;
--
-- // Update working vars
-- len -= l;
-- buf += l;
-- pos += l;
-- resid -= l;
-- }
-- }
--
-- // We wrote some data successfully, update the modified and access
-- // times of the node, increase its size appropriately, and update
-- // the file offset and transfer residue.
-- node->i_mtime =
-- node->i_ctime = cyg_timestamp();
-- if( pos > node->i_size )
-- node->i_size = pos;
--
-- uio->uio_resid = resid;
-- fp->f_offset = pos;
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_fo_lseek()
--// Seek to a new file position.
--
--static int jffs2_fo_lseek (struct CYG_FILE_TAG *fp, off_t *apos, int whence )
--{
-- struct inode *node = (struct inode *)fp->f_data;
-- off_t pos = *apos;
--
-- D2(printf("jffs2_fo_lseek\n"));
--
-- switch( whence )
-- {
-- case SEEK_SET:
-- // Pos is already where we want to be.
-- break;
--
-- case SEEK_CUR:
-- // Add pos to current offset.
-- pos += fp->f_offset;
-- break;
--
-- case SEEK_END:
-- // Add pos to file size.
-- pos += node->i_size;
-- break;
--
-- default:
-- return EINVAL;
-- }
--
-- // Check that pos is still within current file size, or at the
-- // very end.
-- if( pos < 0 || pos > node->i_size )
-- return EINVAL;
--
-- // All OK, set fp offset and return new position.
-- *apos = fp->f_offset = pos;
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_fo_ioctl()
--// Handle ioctls. Currently none are defined.
--
--static int jffs2_fo_ioctl (struct CYG_FILE_TAG *fp, CYG_ADDRWORD com,
-- CYG_ADDRWORD data)
--{
-- // No Ioctls currenly defined.
--
-- D2(printf("jffs2_fo_ioctl\n"));
--
-- return EINVAL;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_fo_fsync().
--// Force the file out to data storage.
--
--static int jffs2_fo_fsync (struct CYG_FILE_TAG *fp, int mode )
--{
-- // Data is always permanently where it belongs, nothing to do
-- // here.
--
-- D2(printf("jffs2_fo_fsync\n"));
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_fo_close()
--// Close a file. We just decrement the refcnt and let it go away if
--// that is all that is keeping it here.
--
--static int jffs2_fo_close (struct CYG_FILE_TAG *fp)
--{
-- struct inode *node = (struct inode *)fp->f_data;
--
-- D2(printf("jffs2_fo_close\n"));
--
-- dec_refcnt( node );
--
-- fp->f_data = 0; // zero data pointer
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--//jffs2_fo_fstat()
--// Get file status.
--
--static int jffs2_fo_fstat (struct CYG_FILE_TAG *fp, struct stat *buf )
--{
-- struct inode *node = (struct inode *)fp->f_data;
--
-- D2(printf("jffs2_fo_fstat\n"));
--
-- // Fill in the status
-- buf->st_mode = node->i_mode;
-- buf->st_ino = (ino_t)node;
-- buf->st_dev = 0;
-- buf->st_nlink = node->i_nlink;
-- buf->st_uid = 0;
-- buf->st_gid = 0;
-- buf->st_size = node->i_size;
-- buf->st_atime = node->i_atime;
-- buf->st_mtime = node->i_mtime;
-- buf->st_ctime = node->i_ctime;
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_fo_getinfo()
--// Get info. Currently only supports fpathconf().
--
--static int jffs2_fo_getinfo (struct CYG_FILE_TAG *fp, int key, void *buf, int len )
--{
-- struct inode *node = (struct inode *)fp->f_data;
-- int err;
--
-- D2(printf("jffs2_fo_getinfo\n"));
--
-- switch( key )
-- {
-- case FS_INFO_CONF:
-- err = jffs2_pathconf( node, (struct cyg_pathconf_info *)buf );
-- break;
--
-- default:
-- err = EINVAL;
-- }
-- return err;
--
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_fo_setinfo()
--// Set info. Nothing supported here.
--
--static int jffs2_fo_setinfo (struct CYG_FILE_TAG *fp, int key, void *buf, int len )
--{
-- // No setinfo key supported at present
--
-- D2(printf("jffs2_fo_setinfo\n"));
--
-- return ENOERR;
--}
--
--
--//==========================================================================
--// Directory operations
--
--// -------------------------------------------------------------------------
--// jffs2_fo_dirread()
--// Read a single directory entry from a file.
--
--static __inline void
--filldir(char *nbuf, int nlen, const char * name, int namlen)
--{
-- int len = nlen < namlen ? nlen : namlen;
-- memcpy(nbuf, name, len);
-- nbuf[len] = '\0';
--}
--
--static int jffs2_fo_dirread (struct CYG_FILE_TAG *fp, struct CYG_UIO_TAG *uio)
--{
-- struct inode *d_inode = (struct inode *)fp->f_data;
-- struct dirent *ent = (struct dirent *)uio->uio_iov[0].iov_base;
-- char *nbuf = ent->d_name;
-- int nlen = sizeof(ent->d_name)-1;
-- off_t len = uio->uio_iov[0].iov_len;
-- struct jffs2_inode_info *f;
-- struct jffs2_sb_info *c;
-- struct inode *inode = d_inode;
-- struct jffs2_full_dirent *fd;
-- unsigned long offset, curofs;
-- int found = 1;
--
-- if( len < sizeof(struct dirent) )
-- return EINVAL;
--
-- D1(printk(KERN_DEBUG "jffs2_readdir() for dir_i #%lu\n", d_inode->i_ino));
--
-- f = JFFS2_INODE_INFO(inode);
-- c = JFFS2_SB_INFO(inode->i_sb);
--
-- offset = fp->f_offset;
--
-- if (offset == 0) {
-- D1(printk(KERN_DEBUG "Dirent 0: \".\", ino #%lu\n", inode->i_ino));
-- filldir(nbuf, nlen, ".", 1);
-- goto out;
-- }
-- if (offset == 1) {
-- filldir(nbuf, nlen, "..", 2);
-- goto out;
-- }
--
-- curofs=1;
-- down(&f->sem);
-- for (fd = f->dents; fd; fd = fd->next) {
--
-- curofs++;
-- /* First loop: curofs = 2; offset = 2 */
-- if (curofs < offset) {
-- D2(printk(KERN_DEBUG "Skipping dirent: \"%s\", ino #%u, type %d, because curofs %ld < offset %ld\n",
-- fd->name, fd->ino, fd->type, curofs, offset));
-- continue;
-- }
-- if (!fd->ino) {
-- D2(printk(KERN_DEBUG "Skipping deletion dirent \"%s\"\n", fd->name));
-- offset++;
-- continue;
-- }
-- D2(printk(KERN_DEBUG "Dirent %ld: \"%s\", ino #%u, type %d\n", offset, fd->name, fd->ino, fd->type));
-- filldir(nbuf, nlen, fd->name, strlen(fd->name));
-- goto out_sem;
-- }
-- /* Reached the end of the directory */
-- found = 0;
-- out_sem:
-- up(&f->sem);
-- out:
-- fp->f_offset = ++offset;
-- if (found) {
-- uio->uio_resid -= sizeof(struct dirent);
-- }
-- return ENOERR;
--}
--
--// -------------------------------------------------------------------------
--// jffs2_fo_dirlseek()
--// Seek directory to start.
--
--static int jffs2_fo_dirlseek (struct CYG_FILE_TAG *fp, off_t *pos, int whence )
--{
-- // Only allow SEEK_SET to zero
--
-- D2(printf("jffs2_fo_dirlseek\n"));
--
-- if( whence != SEEK_SET || *pos != 0)
-- return EINVAL;
--
-- *pos = fp->f_offset = 0;
--
-- return ENOERR;
--}
--
--
--//==========================================================================
--//
--// Called by JFFS2
--// ===============
--//
--//
--//==========================================================================
--
--
--struct page *read_cache_page(unsigned long index,
-- int (*filler)(void *,struct page*),
-- void *data)
--{
-- // Only called in gc.c jffs2_garbage_collect_dnode
-- // but gets a real page for the specified inode
--
-- int err;
-- struct page *gc_page = malloc(sizeof(struct page));
--
--printf("read_cache_page\n");
-- memset(&gc_buffer, 0, PAGE_CACHE_SIZE);
--
-- if(gc_page != NULL) {
-- gc_page->virtual = &gc_buffer;
-- gc_page->index = index;
--
-- err = filler(data, gc_page);
-- if (err < 0) {
-- free(gc_page);
-- gc_page = NULL;
-- }
-- }
--
-- return gc_page;
--}
--
--void page_cache_release(struct page * pg) {
--
-- // Only called in gc.c jffs2_garbage_collect_dnode
-- // but should free the page malloc'd by read_cache_page
--
--printf("page_cache_release\n");
-- free(pg);
--}
--
--struct inode * new_inode(struct super_block *sb) {
--
-- // Only called in write.c jffs2_new_inode
-- // Always adds itself to inode cache
--
-- struct inode * inode;
-- struct inode * cached_inode;
--
-- inode = malloc(sizeof(struct inode));
-- if (inode == NULL)
-- return 0;
--
-- D2(printf("malloc new_inode %x ####################################\n", inode));
--
-- memset(inode, 0, sizeof(struct inode));
-- inode->i_sb = sb;
-- inode->i_ino = 1;
-- inode->i_count = 0;//1; // Let ecos manage the open count
--
-- inode->i_nlink = 1; // Let JFFS2 manage the link count
-- inode->i_size = 0;
--
-- inode->i_cache_next = NULL; // Newest inode, about to be cached
--
-- // Add to the icache
-- for(cached_inode = sb->s_root; cached_inode != NULL; cached_inode = cached_inode->i_cache_next) {
-- if (cached_inode->i_cache_next == NULL) {
-- cached_inode->i_cache_next = inode; // Current last in cache points to newcomer
-- inode->i_cache_prev = cached_inode; // Newcomer points back to last
-- break;
-- }
-- }
--
-- return inode;
--}
--
--struct inode * iget(struct super_block *sb, cyg_uint32 ino) {
--
-- // Substitute for iget drops straight through to reading the
-- // inode from disk if it is not in the inode cache
--
-- // Called in super.c jffs2_read_super, dir.c jffs2_lookup,
-- // and gc.c jffs2_garbage_collect_pass
--
-- // Must first check for cached inode
-- // If this fails let new_inode create one
--
-- struct inode * inode;
--
-- D2(printf("iget\n"));
--
-- // Check for this inode in the cache
-- for(inode = sb->s_root; inode != NULL; inode = inode->i_cache_next) {
-- if (inode->i_ino == ino)
-- return inode;
-- }
-- inode = NULL;
--
-- // Not cached, so malloc it
-- inode = new_inode(sb);
-- if (inode == NULL)
-- return 0;
--
-- inode->i_ino = ino;
-- jffs2_read_inode(inode);
--
-- return inode;
--}
--
--void iput(struct inode * i) {
--
-- // Called in dec_refcnt, jffs2_find
-- // (and jffs2_open and jffs2_ops_mkdir?)
-- // super.c jffs2_read_super,
-- // and gc.c jffs2_garbage_collect_pass
--
-- struct inode *cached_inode;
--
-- D2(printf("free iput inode %x $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n", i));
-- if (i && i->i_count) {
-- /* Added by dwmw2. iget/iput in Linux track the use count,
-- don't just unconditionally free it */
-- printf("iput called for used inode\n");
-- return;
-- }
-- if (i != NULL) {
-- // Remove from the icache
-- for(cached_inode = i->i_sb->s_root; cached_inode != NULL; cached_inode = cached_inode->i_cache_next) {
-- if (cached_inode == i) {
-- cached_inode->i_cache_prev->i_cache_next = cached_inode->i_cache_next; // Prveious entry points ahead of us
-- if (cached_inode->i_cache_next != NULL)
-- cached_inode->i_cache_next->i_cache_prev = cached_inode->i_cache_prev; // Next entry points behind us
-- break;
-- }
-- }
-- // inode has been seperated from the cache
-- jffs2_clear_inode(i);
-- free(i);
-- }
--}
--
--static int return_EIO(void)
--{
-- return -EIO;
--}
--
--#define EIO_ERROR ((void *) (return_EIO))
--
--void make_bad_inode(struct inode * inode) {
--
-- // In readinode.c JFFS2 checks whether the inode has appropriate
-- // content for its marked type
--
-- D2(printf("make_bad_inode\n"));
--
-- inode->i_mode = S_IFREG;
-- inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
-- inode->i_op = EIO_ERROR;
-- inode->i_fop = EIO_ERROR;
--}
--
--int is_bad_inode(struct inode * inode) {
--
-- // Called in super.c jffs2_read_super,
-- // and gc.c jffs2_garbage_collect_pass
--
-- D2(printf("is_bad_inode\n"));
--
-- return (inode->i_op == EIO_ERROR);
-- /*if(i == NULL)
-- return 1;
-- return 0;*/
--}
--
--cyg_bool jffs2_flash_read(struct jffs2_sb_info *c, cyg_uint32 read_buffer_offset, const size_t size, size_t * return_size, char * write_buffer) {
-- Cyg_ErrNo err;
-- cyg_uint32 len = size;
-- struct super_block *sb = OFNI_BS_2SFFJ( c );
--
-- //D2(printf("FLASH READ\n"));
-- //D2(printf("read address = %x\n", CYGNUM_FS_JFFS2_BASE_ADDRESS + read_buffer_offset));
-- //D2(printf("write address = %x\n", write_buffer));
-- //D2(printf("size = %x\n", size));
-- err = cyg_io_bread( sb->s_dev, write_buffer, &len, read_buffer_offset );
--
-- *return_size = (size_t)len;
-- return ( err != ENOERR );
--}
--
--cyg_bool jffs2_flash_write(struct jffs2_sb_info *c, cyg_uint32 write_buffer_offset, const size_t size, size_t * return_size, char * read_buffer) {
--
-- Cyg_ErrNo err;
-- cyg_uint32 len = size;
-- struct super_block *sb = OFNI_BS_2SFFJ( c );
--
-- // D2(printf("FLASH WRITE ENABLED!!!\n"));
-- // D2(printf("write address = %x\n", CYGNUM_FS_JFFS2_BASE_ADDRESS + write_buffer_offset));
-- // D2(printf("read address = %x\n", read_buffer));
-- // D2(printf("size = %x\n", size));
--
-- err = cyg_io_bwrite( sb->s_dev, read_buffer, &len, write_buffer_offset );
-- *return_size = (size_t)len;
--
-- return ( err != ENOERR );
--}
--
--int
--jffs2_flash_writev(struct jffs2_sb_info *c, const struct iovec *vecs,
-- unsigned long count, loff_t to, size_t *retlen)
--{
-- unsigned long i;
-- size_t totlen = 0, thislen;
-- int ret = 0;
--
-- for (i=0; i<count; i++) {
-- // writes need to be aligned but the data we're passed may not be
-- // Observation suggests most unaligned writes are small, so we
-- // optimize for that case.
--
-- if ( ((vecs[i].iov_len & (sizeof(int)-1))) ||
-- (((unsigned long)vecs[i].iov_base & (sizeof(unsigned long)-1))) )
-- {
-- // are there iov's after this one? Or is it so much we'd need
-- // to do multiple writes anyway?
-- if ( (i+1)<count || vecs[i].iov_len > 256 )
-- {
-- // cop out and malloc
-- unsigned long j;
-- ssize_t sizetomalloc=0, totvecsize=0;
-- char *cbuf, *cbufptr;
--
-- for (j=i;j<count; j++)
-- totvecsize += vecs[j].iov_len;
--
-- // pad up in case unaligned
-- sizetomalloc = totvecsize + sizeof(int)-1;
-- sizetomalloc &= ~(sizeof(int)-1);
-- cbuf = (char *)malloc( sizetomalloc );
-- // malloc returns aligned memory
-- if (!cbuf)
-- {
-- ret = -ENOMEM;
-- goto writev_out;
-- }
-- cbufptr = cbuf;
-- for (j=i;j<count; j++)
-- {
-- memcpy( cbufptr, vecs[j].iov_base, vecs[j].iov_len );
-- cbufptr += vecs[j].iov_len;
-- }
-- ret = jffs2_flash_write(c, to, sizetomalloc, &thislen, cbuf );
-- if ( thislen > totvecsize ) // in case it was aligned up
-- thislen = totvecsize;
-- totlen += thislen;
-- free(cbuf);
-- goto writev_out;
-- }
-- else
-- {
-- // otherwise optimize for the common case
-- int buf[256/sizeof(int)]; // int, so int aligned
-- size_t lentowrite;
--
-- lentowrite = vecs[i].iov_len;
-- // pad up in case its unaligned
-- lentowrite += sizeof(int)-1;
-- lentowrite &= ~(sizeof(int)-1);
-- memcpy( buf, vecs[i].iov_base, lentowrite );
--
-- ret = jffs2_flash_write(c, to, lentowrite, &thislen,
-- (char *)&buf );
-- if ( thislen > vecs[i].iov_len )
-- thislen = vecs[i].iov_len;
-- } // else
-- }
-- else
-- ret = jffs2_flash_write(c, to, vecs[i].iov_len, &thislen,
-- vecs[i].iov_base);
-- totlen += thislen;
-- if (ret || thislen != vecs[i].iov_len)
-- break;
-- to += vecs[i].iov_len;
-- }
--writev_out:
-- if (retlen)
-- *retlen = totlen;
--
-- return ret;
--}
--
--cyg_bool jffs2_flash_erase(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb) {
-- cyg_io_flash_getconfig_erase_t e;
-- void *err_addr;
-- Cyg_ErrNo err;
-- cyg_uint32 len = sizeof(e);
-- struct super_block *sb = OFNI_BS_2SFFJ( c );
--
-- e.offset = jeb->offset;
-- e.len = c->sector_size;
-- e.err_address = &err_addr;
--
-- // D2(printf("FLASH ERASE ENABLED!!!\n"));
-- // D2(printf("erase address = %x\n", CYGNUM_FS_JFFS2_BASE_ADDRESS + jeb->offset));
-- // D2(printf("size = %x\n", c->sector_size));
--
-- err = cyg_io_get_config( sb->s_dev, CYG_IO_GET_CONFIG_FLASH_ERASE,
-- &e, &len );
--
-- return ( err != ENOERR || e.flasherr != 0 );
--}
--
--// -------------------------------------------------------------------------
--// EOF jffs2.c
-diff -Nur linux/fs/jffs2/ecos/src/jffs2port.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/jffs2port.h
---- linux/fs/jffs2/ecos/src/jffs2port.h 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/jffs2port.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,342 +0,0 @@
--#ifndef __LINUX_JFFS2PORT_H__
--#define __LINUX_JFFS2PORT_H__
--
--/* $Id: jffs2port.h,v 1.1 2002/07/11 10:55:30 dwmw2 Exp $ */
--
--#include <pkgconf/system.h>
--#include <pkgconf/hal.h>
--//#include <pkgconf/kernel.h>
--#include <pkgconf/io_fileio.h>
--//#include <pkgconf/fs_ram.h>
--
--#include <cyg/infra/cyg_trac.h> // tracing macros
--#include <cyg/infra/cyg_ass.h> // assertion macros
--
--#include <unistd.h>
--#include <sys/types.h>
--#include <fcntl.h>
--#include <sys/stat.h>
--#include <errno.h>
--#include <dirent.h>
--
--#include <stdlib.h>
--#include <string.h>
--
--#include <cyg/fileio/fileio.h>
--
--#include <cyg/hal/drv_api.h>
--#include <cyg/infra/diag.h>
--
--#include <cyg/io/flash.h>
--
--#include <pkgconf/fs_jffs2.h>
--
--#include "list.h"
--
--// ARM related constants
--#define PAGE_SHIFT 0xC
--#define PAGE_SIZE (0x1 << PAGE_SHIFT)
--#define PAGE_CACHE_SHIFT PAGE_SHIFT
--#define PAGE_CACHE_SIZE PAGE_SIZE
--
--//#define BITS_PER_LONG 32
--
--// Linux types
--#define printf diag_printf
--#define printk diag_printf
--#define BUG() diag_printf("BUG()\n")
--
--#define uint8_t cyg_uint8
--#define uint16_t cyg_uint16
--#define uint32_t cyg_uint32
--#define loff_t off_t
--
--#define min(x,y) (x<y?x:y)
--#define max(x,y) (x<y?y:x)
--#define min_t(t, x,y) ((t)x<(t)y?(t)x:(t)y)
--
--#define atomic_t int
--#define atomic_inc(atom) (*atom)++
--#define atomic_dec(atom) (*atom)--
--#define atomic_read(atom) (*atom)
--
--#define kmalloc(a,b) malloc(a)
--#define kfree(a) free(a)
--
--#define PageLocked(pg) 1
--#define Page_Uptodate(pg) 0
--#define UnlockPage(pg)
--#define PAGE_BUG(pg) BUG()
--#define ClearPageUptodate(pg)
--#define SetPageError(pg)
--#define ClearPageError(pg)
--#define SetPageUptodate(pg)
--
--#define jiffies 100
--
--#define ERR_PTR(err) (void*)(err)
--#define PTR_ERR(err) (cyg_int32)(err)
--#define IS_ERR(err) (err==NULL)
--
--#define CURRENT_TIME cyg_timestamp()
--
--//#define spinlock_t cyg_spinlock_t
--typedef struct { } spinlock_t;
--#define SPIN_LOCK_UNLOCKED (spinlock_t) { }
--#define spin_lock_init(lock) do{} while (0)
--#define spin_lock(lock) do{} while (0)
--#define spin_unlock(lock) do{} while (0)
--#define spin_lock_bh(lock) do{} while (0)
--#define spin_unlock_bh(lock) do{} while (0)
--
--struct semaphore {
-- cyg_drv_mutex_t x;
--};
--
--#define init_MUTEX(sem) cyg_drv_mutex_init((cyg_drv_mutex_t *)sem)
--#define init_MUTEX_LOCKED(sem) do { cyg_drv_mutex_init((cyg_drv_mutex_t *)sem); cyg_drv_mutex_lock((cyg_drv_mutex_t *)sem); } while(0)
--#define down(sem) cyg_drv_mutex_lock((cyg_drv_mutex_t *)sem)
--#define down_interruptible(sem) ({ cyg_drv_mutex_lock((cyg_drv_mutex_t *)sem), 0; })
--#define up(sem) cyg_drv_mutex_unlock((cyg_drv_mutex_t *)sem)
--
--#define wait_queue_head_t cyg_uint32
--#define init_waitqueue_head(wait) do{} while (0)
--#define add_wait_queue(wait,new_wait) do{} while (0)
--#define remove_wait_queue(wait,old_wait) do{} while (0)
--#define DECLARE_WAITQUEUE(wait,current) do{} while (0)
--
--#define KERN_EMERG "<0>" // system is unusable
--#define KERN_ALERT "<1>" // action must be taken immediately
--#define KERN_CRIT "<2>" // critical conditions
--#define KERN_ERR "<3>" // error conditions
--#define KERN_WARNING "<4>" // warning conditions
--#define KERN_NOTICE "<5>" // normal but significant condition
--#define KERN_INFO "<6>" // informational
--#define KERN_DEBUG "<7>" // debug-level messages
--
--// Structures used by VFS
--
--typedef unsigned short kdev_t;
--
--struct qstr {
-- const unsigned char * name;
-- unsigned int len;
-- unsigned int hash;
--};
--
--#define DNAME_INLINE_LEN 16
--
--struct dentry {
-- atomic_t d_count;
-- unsigned int d_flags;
-- struct inode * d_inode; /* Where the name belongs to - NULL is negative */
-- struct dentry * d_parent; /* parent directory */
-- struct list_head d_hash; /* lookup hash list */
-- struct list_head d_child; /* child of parent list */
-- struct list_head d_subdirs; /* our children */
-- struct list_head d_alias; /* inode alias list */
-- struct qstr d_name;
-- struct dentry_operations *d_op;
-- struct super_block * d_sb; /* The root of the dentry tree */
-- unsigned char d_iname[DNAME_INLINE_LEN]; /* small names */
--};
--
--struct file {
-- struct dentry *f_dentry;
-- unsigned int f_flags;
-- mode_t f_mode;
-- loff_t f_pos;
-- unsigned long f_reada, f_ramax, f_raend, f_ralen, f_rawin;
--};
--
--#define ATTR_MODE 1
--#define ATTR_UID 2
--#define ATTR_GID 4
--#define ATTR_SIZE 8
--#define ATTR_ATIME 16
--#define ATTR_MTIME 32
--#define ATTR_CTIME 64
--#define ATTR_ATIME_SET 128
--#define ATTR_MTIME_SET 256
--#define ATTR_FORCE 512 /* Not a change, but a change it */
--#define ATTR_ATTR_FLAG 1024
--
--typedef unsigned short umode_t;
--
--struct iattr {
-- unsigned int ia_valid;
-- umode_t ia_mode;
-- uid_t ia_uid;
-- gid_t ia_gid;
-- loff_t ia_size;
-- time_t ia_atime;
-- time_t ia_mtime;
-- time_t ia_ctime;
--};
--
--struct page {
-- unsigned long index;
-- void *virtual;
--};
--
--struct nameidata {
-- struct dentry *dentry;
-- struct qstr last;
-- unsigned int flags;
-- int last_type;
--};
--
--struct file_operations {
-- //struct module *owner;
-- //loff_t (*llseek) (struct file *, loff_t, int);
-- ssize_t (*read) (struct file *, char *, size_t, loff_t *);
-- //ssize_t (*write) (struct file *, const char *, size_t, loff_t *);
-- int (*readdir) (struct file *, char *, int);
-- //unsigned int (*poll) (struct file *, struct poll_table_struct *);
-- int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
-- //int (*mmap) (struct file *, struct vm_area_struct *);
-- //int (*open) (struct inode *, struct file *);
-- //int (*flush) (struct file *);
-- //int (*release) (struct inode *, struct file *);
-- int (*fsync) (struct file *, struct dentry *, int datasync);
-- //int (*fasync) (int, struct file *, int);
-- //int (*lock) (struct file *, int, struct file_lock *);
-- //ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *);
-- //ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *);
--};
--
--struct inode_operations {
-- int (*create) (struct inode *,struct dentry *,int);
-- struct dentry * (*lookup) (struct inode *,struct dentry *);
-- int (*link) (struct dentry *,struct inode *,struct dentry *);
-- int (*unlink) (struct inode *,struct dentry *);
-- int (*symlink) (struct inode *,struct dentry *,const char *);
-- int (*mkdir) (struct inode *,struct dentry *,int);
-- int (*rmdir) (struct inode *,struct dentry *);
-- int (*mknod) (struct inode *,struct dentry *,int,int);
-- int (*rename) (struct inode *, struct dentry *,
-- struct inode *, struct dentry *);
-- int (*readlink) (struct dentry *, char *,int);
-- int (*follow_link) (struct dentry *, struct nameidata *);
-- //void (*truncate) (struct inode *);
-- int (*permission) (struct inode *, int);
-- //int (*revalidate) (struct dentry *);
-- int (*setattr) (struct dentry *, struct iattr *);
-- //int (*getattr) (struct dentry *, struct iattr *);
--};
--
--/*
-- * File types
-- */
--#define DT_UNKNOWN 0
--#define DT_DIR 4
--#define DT_REG 8
--
--struct iovec {
-- void *iov_base;
-- ssize_t iov_len;
--};
--
--// FIXME: we must provide some translation so that Linux-created jffs2
--// partitions can be read on eCos and vice versa
--
--#define S_IFMT 0xF9 // Quick fix for clash on ecos / linux mode bits
--#define S_IFDIR __stat_mode_DIR
--#define S_IFREG __stat_mode_REG
--#define S_IFBLK __stat_mode_BLK
--#define S_IFCHR __stat_mode_CHR
--#define S_IFLNK 0x101
--#define S_IFSOCK 0x102
--#define S_IFIFO __stat_mode_FIFO
--#define S_IRUGO 0x103
--#define S_IXUGO 0x104
--#define S_IRWXUGO 0x105
--
--
--// called by JFFS2
--
--#define to_kdev_t(rdev) (rdev)
--#define MAJOR(rdev) (rdev)>>8
--#define MINOR(rdev) (rdev)
--
--#define page_address(page) ((page)->virtual)
--
--static __inline__ void * kmap(struct page * page) {
-- return page_address(page);
--}
--
--#define kunmap(page) do { } while (0)
--
--//struct page * read_cache_page(cyg_uint32 start, void * f, struct inode * i);
--struct page *read_cache_page(unsigned long index, int (*filler)(void *,struct page*), void *data);
--void page_cache_release(struct page * pg);
--
--struct inode * new_inode(struct super_block *sb);
--struct inode * iget(struct super_block *sb, cyg_uint32 ino);
--void iput(struct inode * i);
--void make_bad_inode(struct inode * inode);
--int is_bad_inode(struct inode * inode);
--
--#define insert_inode_hash(inode) do { } while (0)
--
--#define d_alloc_root(root_inode) root_inode
--
--#define flush_dcache_page(page) do { } while (0)
--
--struct jffs2_sb_info;
--struct jffs2_eraseblock;
--
--cyg_bool jffs2_flash_read(struct jffs2_sb_info *c, cyg_uint32 read_buffer_offset, const size_t size, size_t * return_size, char * write_buffer);
--cyg_bool jffs2_flash_write(struct jffs2_sb_info *c, cyg_uint32 write_buffer_offset, const size_t size, size_t * return_size, char * read_buffer);
--int jffs2_flash_writev(struct jffs2_sb_info *c, const struct iovec *vecs, unsigned long count, loff_t to, size_t *retlen);
--cyg_bool jffs2_flash_erase(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
--
--static inline void wake_up(wait_queue_head_t *erase_wait)
--{ /* Only used for waking up threads blocks on erases. Not used in eCos */ }
--
--// calls to JFFS2
--
--// dir-ecos.c
--struct inode *jffs2_lookup(struct inode *dir_i, struct qstr *name);
--int jffs2_readdir (struct inode *d_inode, unsigned long f_pos, char *nbuf, int nlen);
--int jffs2_create(struct inode *dir_i, struct qstr *d_name, int mode, struct inode **new_i);
--int jffs2_mkdir (struct inode *dir_i, struct qstr *d_name, int mode, struct inode **new_i);
--int jffs2_link (struct inode *old_d_inode, struct inode *dir_i, struct qstr *d_name);
--int jffs2_unlink(struct inode *dir_i, struct inode *d_inode, struct qstr *d_name);
--int jffs2_rmdir (struct inode *dir_i, struct inode *d_inode, struct qstr *d_name);
--int jffs2_rename (struct inode *old_dir_i, struct inode *d_inode, struct qstr *old_d_name,
-- struct inode *new_dir_i, struct qstr *new_d_name);
--
--#define init_name_hash() 0
--static inline unsigned long partial_name_hash(unsigned long c, unsigned long prevhash)
--{
-- prevhash = (prevhash << 4) | (prevhash >> (8*sizeof(unsigned long)-4));
-- return prevhash ^ c;
--}
--
--static inline unsigned long end_name_hash(unsigned long hash)
--{
-- if (sizeof(hash) > sizeof(unsigned int))
-- hash += hash >> 4*sizeof(hash);
-- return (unsigned int) hash;
--}
--
--static inline unsigned int full_name_hash(const unsigned char * name, unsigned int len) {
--
-- unsigned long hash = init_name_hash();
-- while (len--)
-- hash = partial_name_hash(*name++, hash);
-- return end_name_hash(hash);
--}
--
--#endif /* __LINUX_JFFS2PORT_H__ */
--
--
--
--
--
--
--
--
--
--
-diff -Nur linux/fs/jffs2/ecos/src/list.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/list.h
---- linux/fs/jffs2/ecos/src/list.h 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/list.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,96 +0,0 @@
--/*
-- * JFFS2 -- Journalling Flash File System, Version 2.
-- *
-- * Copyright (C) 2002 Red Hat, Inc.
-- *
-- * Created by Jonathan Larmour <jlarmour@redhat.com>
-- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-- *
-- * $Id: list.h,v 1.1 2002/07/11 10:55:30 dwmw2 Exp $
-- *
-- */
--
--#ifndef CYGONCE_FS_JFFS2_LIST_H
--#define CYGONCE_FS_JFFS2_LIST_H
--
--
--/* -----------------------------------------------------------------------*/
--
--/* Doubly linked list implementation to replace the GPL'd one used in
-- the Linux kernel. */
--
--#include <stddef.h>
--#include <cyg/infra/cyg_type.h>
--
--/* TYPES */
--
--struct list_head {
-- struct list_head *next;
-- struct list_head *prev;
--};
--
--/* MACROS */
--
--#define INIT_LIST_HEAD( _list_ ) \
--CYG_MACRO_START \
--(_list_)->next = (_list_)->prev = (_list_); \
--CYG_MACRO_END
--
--/* FUNCTIONS */
--
--/* Insert an entry _after_ the specified entry */
--static __inline__ void
--list_add( struct list_head *newent, struct list_head *afterthisent )
--{
-- struct list_head *next = afterthisent->next;
-- newent->next = next;
-- newent->prev = afterthisent;
-- afterthisent->next = newent;
-- next->prev = newent;
--} /* list_add() */
--
--/* Insert an entry _before_ the specified entry */
--static __inline__ void
--list_add_tail( struct list_head *newent, struct list_head *beforethisent )
--{
-- struct list_head *prev = beforethisent->prev;
-- newent->prev = prev;
-- newent->next = beforethisent;
-- beforethisent->prev = newent;
-- prev->next = newent;
--} /* list_add_tail() */
--
--/* Delete the specified entry */
--static __inline__ void
--list_del( struct list_head *ent )
--{
-- ent->prev->next = ent->next;
-- ent->next->prev = ent->prev;
--} /* list_del() */
--
--/* Is this list empty? */
--static __inline__ int
--list_empty( struct list_head *list )
--{
-- return ( list->next == list );
--} /* list_empty() */
--
--/* list_entry - Assuming you have a struct of type _type_ that contains a
-- list which has the name _member_ in that struct type, then given the
-- address of that list in the struct, _list_, this returns the address
-- of the container structure */
--
--#define list_entry( _list_, _type_, _member_ ) \
-- ((_type_ *)((char *)(_list_)-(char *)(offsetof(_type_,_member_))))
--
--/* list_for_each - using _ent_, iterate through list _list_ */
--
--#define list_for_each( _ent_, _list_ ) \
-- for ( (_ent_) = (_list_)->next; \
-- (_ent_) != (_list_); \
-- (_ent_) = (_ent_)->next )
--
--/* -----------------------------------------------------------------------*/
--#endif /* #ifndef CYGONCE_FS_JFFS2_LIST_H */
--/* EOF list.h */
-diff -Nur linux/fs/jffs2/ecos/src/malloc-ecos.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/malloc-ecos.c
---- linux/fs/jffs2/ecos/src/malloc-ecos.c 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/malloc-ecos.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,98 +0,0 @@
--/*
-- * JFFS2 -- Journalling Flash File System, Version 2.
-- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-- *
-- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
-- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-- *
-- * $Id: malloc-ecos.c,v 1.1 2002/07/11 10:55:30 dwmw2 Exp $
-- *
-- */
--
--#include "nodelist.h"
--
--struct jffs2_full_dirent *jffs2_alloc_full_dirent(int namesize)
--{
-- return malloc(sizeof(struct jffs2_full_dirent) + namesize);
--}
--
--void jffs2_free_full_dirent(struct jffs2_full_dirent *x)
--{
-- free(x);
--}
--
--struct jffs2_full_dnode *jffs2_alloc_full_dnode(void)
--{
-- return malloc(sizeof(struct jffs2_full_dnode));
--}
--
--void jffs2_free_full_dnode(struct jffs2_full_dnode *x)
--{
-- free(x);
--}
--
--struct jffs2_raw_dirent *jffs2_alloc_raw_dirent(void)
--{
-- return malloc(sizeof(struct jffs2_raw_dirent));
--}
--
--void jffs2_free_raw_dirent(struct jffs2_raw_dirent *x)
--{
-- free(x);
--}
--
--struct jffs2_raw_inode *jffs2_alloc_raw_inode(void)
--{
-- return malloc(sizeof(struct jffs2_raw_inode));
--}
--
--void jffs2_free_raw_inode(struct jffs2_raw_inode *x)
--{
-- free(x);
--}
--
--struct jffs2_tmp_dnode_info *jffs2_alloc_tmp_dnode_info(void)
--{
-- return malloc(sizeof(struct jffs2_tmp_dnode_info));
--}
--
--void jffs2_free_tmp_dnode_info(struct jffs2_tmp_dnode_info *x)
--{
-- free(x);
--}
--
--struct jffs2_raw_node_ref *jffs2_alloc_raw_node_ref(void)
--{
-- return malloc(sizeof(struct jffs2_raw_node_ref));
--}
--
--void jffs2_free_raw_node_ref(struct jffs2_raw_node_ref *x)
--{
-- free(x);
--}
--
--struct jffs2_node_frag *jffs2_alloc_node_frag(void)
--{
-- return malloc(sizeof(struct jffs2_node_frag));
--}
--
--void jffs2_free_node_frag(struct jffs2_node_frag *x)
--{
-- free(x);
--}
--
--struct jffs2_inode_cache *jffs2_alloc_inode_cache(void)
--{
-- struct jffs2_inode_cache *ret = malloc(sizeof(struct jffs2_inode_cache));
-- D1(printk(KERN_DEBUG "Allocated inocache at %p\n", ret));
-- return ret;
--}
--
--void jffs2_free_inode_cache(struct jffs2_inode_cache *x)
--{
-- D1(printk(KERN_DEBUG "Freeing inocache at %p\n", x));
-- free(x);
--}
--
-diff -Nur linux/fs/jffs2/ecos/src/os-ecos.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/os-ecos.h
---- linux/fs/jffs2/ecos/src/os-ecos.h 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/src/os-ecos.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,135 +0,0 @@
--/*
-- * JFFS2 -- Journalling Flash File System, Version 2.
-- *
-- * Copyright (C) 2002 Red Hat, Inc.
-- *
-- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
-- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-- *
-- * $Id: os-ecos.h,v 1.1 2002/07/11 10:55:30 dwmw2 Exp $
-- *
-- */
--
--#ifndef __JFFS2_OS_ECOS_H__
--#define __JFFS2_OS_ECOS_H__
--
--#include <cyg/io/io.h>
--
--#define CONFIG_JFFS2_FS_DEBUG 0
--
-- /* Read-only operation not currently implemented on eCos */
--#define jffs2_is_readonly(c) (0)
--
--/* NAND flash not currently supported on eCos */
--#define jffs2_can_mark_obsolete(c) (1)
--
--#define JFFS2_INODE_INFO(i) (&(i)->jffs2_i)
--#define OFNI_EDONI_2SFFJ(f) ((struct inode *) ( ((char *)f) - ((char *)(&((struct inode *)NULL)->jffs2_i)) ) )
--
--#define JFFS2_F_I_SIZE(f) (OFNI_EDONI_2SFFJ(f)->i_size)
--#define JFFS2_F_I_MODE(f) (OFNI_EDONI_2SFFJ(f)->i_mode)
--#define JFFS2_F_I_UID(f) (OFNI_EDONI_2SFFJ(f)->i_uid)
--#define JFFS2_F_I_GID(f) (OFNI_EDONI_2SFFJ(f)->i_gid)
--#define JFFS2_F_I_CTIME(f) (OFNI_EDONI_2SFFJ(f)->i_ctime)
--#define JFFS2_F_I_MTIME(f) (OFNI_EDONI_2SFFJ(f)->i_mtime)
--#define JFFS2_F_I_ATIME(f) (OFNI_EDONI_2SFFJ(f)->i_atime)
--
--/* FIXME: eCos doesn't hav a concept of device major/minor numbers */
--#define JFFS2_F_I_RDEV_MIN(f) (MINOR(to_kdev_t(OFNI_EDONI_2SFFJ(f)->i_rdev)))
--#define JFFS2_F_I_RDEV_MAJ(f) (MAJOR(to_kdev_t(OFNI_EDONI_2SFFJ(f)->i_rdev)))
--
--struct inode {
-- //struct list_head i_hash;
-- //struct list_head i_list;
-- struct list_head i_dentry;
--
-- cyg_uint32 i_ino;
-- atomic_t i_count;
-- //kdev_t i_dev;
-- mode_t i_mode;
-- nlink_t i_nlink;
-- uid_t i_uid;
-- gid_t i_gid;
-- kdev_t i_rdev;
-- off_t i_size;
-- time_t i_atime;
-- time_t i_mtime;
-- time_t i_ctime;
-- unsigned long i_blksize;
-- unsigned long i_blocks;
-- //unsigned long i_version;
-- //struct semaphore i_sem;
-- //struct semaphore i_zombie;
-- struct inode_operations *i_op;
-- struct file_operations *i_fop; // former ->i_op->default_file_ops
-- struct super_block *i_sb;
-- //wait_queue_head_t i_wait;
-- //struct file_lock *i_flock;
-- //struct address_space *i_mapping;
-- //struct address_space i_data;
-- //struct dquot *i_dquot[MAXQUOTAS];
-- //struct pipe_inode_info *i_pipe;
-- //struct block_device *i_bdev;
--
-- //unsigned long i_state;
--
-- unsigned int i_flags;
-- //unsigned char i_sock;
--
-- atomic_t i_writecount;
-- //unsigned int i_attr_flags;
-- //uint32_t i_generation;
-- struct jffs2_inode_info jffs2_i;
--
-- struct inode *i_parent;
--
-- struct inode *i_cache_prev;
-- struct inode *i_cache_next;
--};
--
--#define JFFS2_SB_INFO(sb) (&(sb)->jffs2_sb)
--
--#define OFNI_BS_2SFFJ(c) ((struct super_block *) ( ((char *)c) - ((char *)(&((struct super_block *)NULL)->jffs2_sb)) ) )
--
--struct super_block {
-- unsigned long s_blocksize;
-- unsigned char s_blocksize_bits;
-- unsigned char s_dirt;
-- //struct super_operations *s_op;
-- unsigned long s_flags;
-- unsigned long s_magic;
-- //struct dentry *s_root;
-- struct inode *s_root;
-- struct jffs2_sb_info jffs2_sb;
-- unsigned long s_mount_count;
-- cyg_io_handle_t s_dev;
--};
--
--/* background.c */
--static inline void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c)
--{
-- /* We don't have a GC thread in eCos (yet) */
--}
--
--/* dir.c */
--extern struct file_operations jffs2_dir_operations;
--extern struct inode_operations jffs2_dir_inode_operations;
--
--/* file.c */
--extern struct file_operations jffs2_file_operations;
--extern struct inode_operations jffs2_file_inode_operations;
--extern struct address_space_operations jffs2_file_address_operations;
--int jffs2_null_fsync(struct file *, struct dentry *, int);
--int jffs2_setattr (struct dentry *dentry, struct iattr *iattr);
--int jffs2_do_readpage_nolock (struct inode *inode, struct page *pg);
--int jffs2_do_readpage_unlock (struct inode *inode, struct page *pg);
--//int jffs2_readpage (struct file *, struct page *);
--int jffs2_readpage (struct inode *d_inode, struct page *pg);
--//int jffs2_prepare_write (struct file *, struct page *, unsigned, unsigned);
--int jffs2_prepare_write (struct inode *d_inode, struct page *pg, unsigned start, unsigned end);
--//int jffs2_commit_write (struct file *, struct page *, unsigned, unsigned);
--int jffs2_commit_write (struct inode *d_inode, struct page *pg, unsigned start, unsigned end);
--
--
--#endif /* __JFFS2_OS_ECOS_H__ */
-diff -Nur linux/fs/jffs2/ecos/tests/fileio1.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/tests/fileio1.c
---- linux/fs/jffs2/ecos/tests/fileio1.c 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/tests/fileio1.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,660 +0,0 @@
--//==========================================================================
--//
--// fileio1.c
--//
--// Test fileio system
--//
--//==========================================================================
--//####COPYRIGHTBEGIN####
--//
--// -------------------------------------------
--// The contents of this file are subject to the Red Hat eCos Public License
--// Version 1.1 (the "License"); you may not use this file except in
--// compliance with the License. You may obtain a copy of the License at
--// http://www.redhat.com/
--//
--// Software distributed under the License is distributed on an "AS IS"
--// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
--// License for the specific language governing rights and limitations under
--// the License.
--//
--// The Original Code is eCos - Embedded Configurable Operating System,
--// released September 30, 1998.
--//
--// The Initial Developer of the Original Code is Red Hat.
--// Portions created by Red Hat are
--// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
--// All Rights Reserved.
--// -------------------------------------------
--//
--//####COPYRIGHTEND####
--//==========================================================================
--//#####DESCRIPTIONBEGIN####
--//
--// Author(s): nickg
--// Contributors: nickg
--// Date: 2000-05-25
--// Purpose: Test fileio system
--// Description: This test uses the testfs to check out the initialization
--// and basic operation of the fileio system
--//
--//
--//
--//
--//
--//
--//
--//####DESCRIPTIONEND####
--//
--//==========================================================================
--
--#include <pkgconf/hal.h>
--#include <pkgconf/kernel.h>
--#include <pkgconf/io_fileio.h>
--
--#include <cyg/kernel/ktypes.h> // base kernel types
--#include <cyg/infra/cyg_trac.h> // tracing macros
--#include <cyg/infra/cyg_ass.h> // assertion macros
--#include <cyg/io/flash.h>
--
--#include <unistd.h>
--#include <fcntl.h>
--#include <sys/stat.h>
--#include <errno.h>
--#include <string.h>
--#include <dirent.h>
--
--#include <cyg/fileio/fileio.h>
--
--#include <cyg/infra/testcase.h>
--#include <cyg/infra/diag.h> // HAL polled output
--
--#include <pkgconf/fs_jffs2.h> // Address of JFFS2
--
--//==========================================================================
--
--#if 0
--MTAB_ENTRY( jffs2_mte1,
-- "/",
-- "jffs2",
-- CYGDAT_IO_FLASH_BLOCK_DEVICE_NAME_1,
-- 0);
--#endif
--
--//==========================================================================
--
--#define SHOW_RESULT( _fn, _res ) \
--diag_printf("<FAIL>: " #_fn "() returned %d %s\n", _res, _res<0?strerror(errno):"");
--
--//==========================================================================
--
--#define IOSIZE 100
--
--#define LONGNAME1 "long_file_name_that_should_take_up_more_than_one_directory_entry_1"
--#define LONGNAME2 "long_file_name_that_should_take_up_more_than_one_directory_entry_2"
--
--
--//==========================================================================
--
--#ifndef CYGPKG_LIBC_STRING
--
--char *strcat( char *s1, const char *s2 )
--{
-- char *s = s1;
-- while( *s1 ) s1++;
-- while( (*s1++ = *s2++) != 0);
-- return s;
--}
--
--#endif
--
--//==========================================================================
--
--static void listdir( char *name, int statp, int numexpected, int *numgot )
--{
-- int err;
-- DIR *dirp;
-- int num=0;
--
-- diag_printf("<INFO>: reading directory %s\n",name);
--
-- dirp = opendir( name );
-- if( dirp == NULL ) SHOW_RESULT( opendir, -1 );
--
-- for(;;)
-- {
-- struct dirent *entry = readdir( dirp );
--
-- if( entry == NULL )
-- break;
-- num++;
-- diag_printf("<INFO>: entry %14s",entry->d_name);
-- if( statp )
-- {
-- char fullname[PATH_MAX];
-- struct stat sbuf;
--
-- if( name[0] )
-- {
-- strcpy(fullname, name );
-- if( !(name[0] == '/' && name[1] == 0 ) )
-- strcat(fullname, "/" );
-- }
-- else fullname[0] = 0;
--
-- strcat(fullname, entry->d_name );
--
-- err = stat( fullname, &sbuf );
-- if( err < 0 )
-- {
-- if( errno == ENOSYS )
-- diag_printf(" <no status available>");
-- else SHOW_RESULT( stat, err );
-- }
-- else
-- {
-- diag_printf(" [mode %08x ino %08x nlink %d size %d]",
-- sbuf.st_mode,sbuf.st_ino,sbuf.st_nlink,sbuf.st_size);
-- }
-- }
--
-- diag_printf("\n");
-- }
--
-- err = closedir( dirp );
-- if( err < 0 ) SHOW_RESULT( stat, err );
-- if (numexpected >= 0 && num != numexpected)
-- CYG_TEST_FAIL("Wrong number of dir entries\n");
-- if ( numgot != NULL )
-- *numgot = num;
--}
--
--//==========================================================================
--
--static void createfile( char *name, size_t size )
--{
-- char buf[IOSIZE];
-- int fd;
-- ssize_t wrote;
-- int i;
-- int err;
--
-- diag_printf("<INFO>: create file %s size %d\n",name,size);
--
-- err = access( name, F_OK );
-- if( err < 0 && errno != EACCES ) SHOW_RESULT( access, err );
--
-- for( i = 0; i < IOSIZE; i++ ) buf[i] = i%256;
--
-- fd = open( name, O_WRONLY|O_CREAT );
-- if( fd < 0 ) SHOW_RESULT( open, fd );
--
-- while( size > 0 )
-- {
-- ssize_t len = size;
-- if ( len > IOSIZE ) len = IOSIZE;
--
-- wrote = write( fd, buf, len );
-- if( wrote != len ) SHOW_RESULT( write, wrote );
--
-- size -= wrote;
-- }
--
-- err = close( fd );
-- if( err < 0 ) SHOW_RESULT( close, err );
--}
--
--//==========================================================================
--
--#if 0
--static void maxfile( char *name )
--{
-- char buf[IOSIZE];
-- int fd;
-- ssize_t wrote;
-- int i;
-- int err;
-- size_t size = 0;
--
-- diag_printf("<INFO>: create maximal file %s\n",name);
--
-- err = access( name, F_OK );
-- if( err < 0 && errno != EACCES ) SHOW_RESULT( access, err );
--
-- for( i = 0; i < IOSIZE; i++ ) buf[i] = i%256;
--
-- fd = open( name, O_WRONLY|O_CREAT );
-- if( fd < 0 ) SHOW_RESULT( open, fd );
--
-- do
-- {
-- wrote = write( fd, buf, IOSIZE );
-- if( wrote < 0 ) SHOW_RESULT( write, wrote );
--
-- size += wrote;
--
-- } while( wrote == IOSIZE );
--
-- diag_printf("<INFO>: file size == %d\n",size);
--
-- err = close( fd );
-- if( err < 0 ) SHOW_RESULT( close, err );
--}
--#endif
--
--//==========================================================================
--
--static void checkfile( char *name )
--{
-- char buf[IOSIZE];
-- int fd;
-- ssize_t done;
-- int i;
-- int err;
-- off_t pos = 0;
--
-- diag_printf("<INFO>: check file %s\n",name);
--
-- err = access( name, F_OK );
-- if( err != 0 ) SHOW_RESULT( access, err );
--
-- fd = open( name, O_RDONLY );
-- if( fd < 0 ) SHOW_RESULT( open, fd );
--
-- for(;;)
-- {
-- done = read( fd, buf, IOSIZE );
-- if( done < 0 ) SHOW_RESULT( read, done );
--
-- if( done == 0 ) break;
--
-- for( i = 0; i < done; i++ )
-- if( buf[i] != i%256 )
-- {
-- diag_printf("buf[%d+%d](%02x) != %02x\n",pos,i,buf[i],i%256);
-- CYG_TEST_FAIL("Data read not equal to data written\n");
-- }
--
-- pos += done;
-- }
--
-- err = close( fd );
-- if( err < 0 ) SHOW_RESULT( close, err );
--}
--
--//==========================================================================
--
--static void copyfile( char *name2, char *name1 )
--{
--
-- int err;
-- char buf[IOSIZE];
-- int fd1, fd2;
-- ssize_t done, wrote;
--
-- diag_printf("<INFO>: copy file %s -> %s\n",name2,name1);
--
-- err = access( name1, F_OK );
-- if( err < 0 && errno != EACCES ) SHOW_RESULT( access, err );
--
-- err = access( name2, F_OK );
-- if( err != 0 ) SHOW_RESULT( access, err );
--
-- fd1 = open( name1, O_WRONLY|O_CREAT );
-- if( fd1 < 0 ) SHOW_RESULT( open, fd1 );
--
-- fd2 = open( name2, O_RDONLY );
-- if( fd2 < 0 ) SHOW_RESULT( open, fd2 );
--
-- for(;;)
-- {
-- done = read( fd2, buf, IOSIZE );
-- if( done < 0 ) SHOW_RESULT( read, done );
--
-- if( done == 0 ) break;
--
-- wrote = write( fd1, buf, done );
-- if( wrote != done ) SHOW_RESULT( write, wrote );
--
-- if( wrote != done ) break;
-- }
--
-- err = close( fd1 );
-- if( err < 0 ) SHOW_RESULT( close, err );
--
-- err = close( fd2 );
-- if( err < 0 ) SHOW_RESULT( close, err );
--
--}
--
--//==========================================================================
--
--static void comparefiles( char *name2, char *name1 )
--{
-- int err;
-- char buf1[IOSIZE];
-- char buf2[IOSIZE];
-- int fd1, fd2;
-- ssize_t done1, done2;
-- int i;
--
-- diag_printf("<INFO>: compare files %s == %s\n",name2,name1);
--
-- err = access( name1, F_OK );
-- if( err != 0 ) SHOW_RESULT( access, err );
--
-- err = access( name1, F_OK );
-- if( err != 0 ) SHOW_RESULT( access, err );
--
-- fd1 = open( name1, O_RDONLY );
-- if( fd1 < 0 ) SHOW_RESULT( open, fd1 );
--
-- fd2 = open( name2, O_RDONLY );
-- if( fd2 < 0 ) SHOW_RESULT( open, fd2 );
--
-- for(;;)
-- {
-- done1 = read( fd1, buf1, IOSIZE );
-- if( done1 < 0 ) SHOW_RESULT( read, done1 );
--
-- done2 = read( fd2, buf2, IOSIZE );
-- if( done2 < 0 ) SHOW_RESULT( read, done2 );
--
-- if( done1 != done2 )
-- diag_printf("Files different sizes\n");
--
-- if( done1 == 0 ) break;
--
-- for( i = 0; i < done1; i++ )
-- if( buf1[i] != buf2[i] )
-- {
-- diag_printf("buf1[%d](%02x) != buf1[%d](%02x)\n",i,buf1[i],i,buf2[i]);
-- CYG_TEST_FAIL("Data in files not equal\n");
-- }
-- }
--
-- err = close( fd1 );
-- if( err < 0 ) SHOW_RESULT( close, err );
--
-- err = close( fd2 );
-- if( err < 0 ) SHOW_RESULT( close, err );
--
--}
--
--//==========================================================================
--
--void checkcwd( const char *cwd )
--{
-- static char cwdbuf[PATH_MAX];
-- char *ret;
--
-- ret = getcwd( cwdbuf, sizeof(cwdbuf));
-- if( ret == NULL ) SHOW_RESULT( getcwd, ret );
--
-- if( strcmp( cwdbuf, cwd ) != 0 )
-- {
-- diag_printf( "cwdbuf %s cwd %s\n",cwdbuf, cwd );
-- CYG_TEST_FAIL( "Current directory mismatch");
-- }
--}
--
--//==========================================================================
--// main
--
--int main( int argc, char **argv )
--{
-- int err;
-- //int i;
-- int existingdirents=-1;
--
-- CYG_TEST_INIT();
--
-- // --------------------------------------------------------------
--
-- err = mount( CYGDAT_IO_FLASH_BLOCK_DEVICE_NAME_1, "/", "jffs2" );
-- if( err < 0 ) SHOW_RESULT( mount, err );
--
-- err = chdir( "/" );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
--
-- checkcwd( "/" );
--
-- listdir( "/", true, -1, &existingdirents );
-- if ( existingdirents < 2 )
-- CYG_TEST_FAIL("Not enough dir entries\n");
--
-- // --------------------------------------------------------------
--
-- createfile( "/foo", 202 );
-- checkfile( "foo" );
-- copyfile( "foo", "fee");
-- checkfile( "fee" );
-- comparefiles( "foo", "/fee" );
-- diag_printf("<INFO>: mkdir bar\n");
-- err = mkdir( "/bar", 0 );
-- if( err < 0 ) SHOW_RESULT( mkdir, err );
--
-- listdir( "/" , true, existingdirents+3, NULL );
--
-- copyfile( "fee", "/bar/fum" );
-- checkfile( "bar/fum" );
-- comparefiles( "/fee", "bar/fum" );
--
-- diag_printf("<INFO>: cd bar\n");
-- err = chdir( "bar" );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
--
-- checkcwd( "/bar" );
--
-- diag_printf("<INFO>: rename /foo bundy\n");
-- err = rename( "/foo", "bundy" );
-- if( err < 0 ) SHOW_RESULT( rename, err );
--
-- listdir( "/", true, existingdirents+2, NULL );
-- listdir( "" , true, 4, NULL );
--
-- checkfile( "/bar/bundy" );
-- comparefiles("/fee", "bundy" );
--
-- // --------------------------------------------------------------
--
-- createfile( LONGNAME1, 123 );
-- checkfile( LONGNAME1 );
-- copyfile( LONGNAME1, LONGNAME2 );
--
-- listdir( "", false, 6, NULL );
--
-- diag_printf("<INFO>: unlink " LONGNAME1 "\n");
-- err = unlink( LONGNAME1 );
-- if( err < 0 ) SHOW_RESULT( unlink, err );
--
-- diag_printf("<INFO>: unlink " LONGNAME2 "\n");
-- err = unlink( LONGNAME2 );
-- if( err < 0 ) SHOW_RESULT( unlink, err );
--
--
-- // --------------------------------------------------------------
--
-- diag_printf("<INFO>: unlink fee\n");
-- err = unlink( "/fee" );
-- if( err < 0 ) SHOW_RESULT( unlink, err );
--
-- diag_printf("<INFO>: unlink fum\n");
-- err = unlink( "fum" );
-- if( err < 0 ) SHOW_RESULT( unlink, err );
--
-- diag_printf("<INFO>: unlink /bar/bundy\n");
-- err = unlink( "/bar/bundy" );
-- if( err < 0 ) SHOW_RESULT( unlink, err );
--
-- diag_printf("<INFO>: cd /\n");
-- err = chdir( "/" );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
--
-- checkcwd( "/" );
--
-- diag_printf("<INFO>: rmdir /bar\n");
-- err = rmdir( "/bar" );
-- if( err < 0 ) SHOW_RESULT( rmdir, err );
--
-- listdir( "/", false, existingdirents, NULL );
--
-- // --------------------------------------------------------------
--
-- diag_printf("<INFO>: mount /jffs2 \n");
-- err = mount( CYGDAT_IO_FLASH_BLOCK_DEVICE_NAME_1, "/jffs2", "jffs2" );
-- if( err < 0 ) SHOW_RESULT( mount, err );
--
-- createfile( "/jffs2/tinky", 456 );
-- copyfile( "/jffs2/tinky", "/jffs2/laalaa" );
-- checkfile( "/jffs2/tinky");
-- checkfile( "/jffs2/laalaa");
-- comparefiles( "/jffs2/tinky", "/jffs2/laalaa" );
--
-- diag_printf("<INFO>: cd /jffs2\n");
-- err = chdir( "/jffs2" );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
--
-- checkcwd( "/jffs2" );
--
-- diag_printf("<INFO>: mkdir noonoo\n");
-- err = mkdir( "noonoo", 0 );
-- if( err < 0 ) SHOW_RESULT( mkdir, err );
--
-- listdir( "." , true, existingdirents+3, NULL);
--
-- diag_printf("<INFO>: cd noonoo\n");
-- err = chdir( "noonoo" );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
--
-- checkcwd( "/jffs2/noonoo" );
--
-- createfile( "tinky", 678 );
-- checkfile( "tinky" );
--
-- createfile( "dipsy", 3456 );
-- checkfile( "dipsy" );
-- copyfile( "dipsy", "po" );
-- checkfile( "po" );
-- comparefiles( "dipsy", "po" );
--
--
-- /*for(i=0;i<2048;i++) {
-- diag_printf("<INFO>: churningchurningchurning................................ITERATION = %d\n", i);
-- createfile( "churningchurningchurning", 4096 );
-- diag_printf("<INFO>: unlink churningchurningchurning\n");
-- err = unlink( "churningchurningchurning" );
-- if( err < 0 ) SHOW_RESULT( unlink, err );
-- }*/
--
--
-- listdir( ".", true, 5, NULL );
-- listdir( "", true, 5, NULL );
-- listdir( "..", true, existingdirents+3, NULL );
--
-- // --------------------------------------------------------------
--
-- diag_printf("<INFO>: unlink tinky\n");
-- err = unlink( "tinky" );
-- if( err < 0 ) SHOW_RESULT( unlink, err );
--
-- diag_printf("<INFO>: unlink dipsy\n");
-- err = unlink( "dipsy" );
-- if( err < 0 ) SHOW_RESULT( unlink, err );
--
-- diag_printf("<INFO>: unlink po\n");
-- err = unlink( "po" );
-- if( err < 0 ) SHOW_RESULT( unlink, err );
--
-- diag_printf("<INFO>: cd ..\n");
-- err = chdir( ".." );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
-- checkcwd( "/jffs2" );
--
-- diag_printf("<INFO>: rmdir noonoo\n");
-- err = rmdir( "noonoo" );
-- if( err < 0 ) SHOW_RESULT( rmdir, err );
--
-- // --------------------------------------------------------------
--
-- err = mkdir( "x", 0 );
-- if( err < 0 ) SHOW_RESULT( mkdir, err );
--
-- err = mkdir( "x/y", 0 );
-- if( err < 0 ) SHOW_RESULT( mkdir, err );
--
-- err = mkdir( "x/y/z", 0 );
-- if( err < 0 ) SHOW_RESULT( mkdir, err );
--
-- err = mkdir( "x/y/z/w", 0 );
-- if( err < 0 ) SHOW_RESULT( mkdir, err );
--
-- diag_printf("<INFO>: cd /jffs2/x/y/z/w\n");
-- err = chdir( "/jffs2/x/y/z/w" );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
-- checkcwd( "/jffs2/x/y/z/w" );
--
-- diag_printf("<INFO>: cd ..\n");
-- err = chdir( ".." );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
-- checkcwd( "/jffs2/x/y/z" );
--
-- diag_printf("<INFO>: cd .\n");
-- err = chdir( "." );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
-- checkcwd( "/jffs2/x/y/z" );
--
-- diag_printf("<INFO>: cd ../../y\n");
-- err = chdir( "../../y" );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
-- checkcwd( "/jffs2/x/y" );
--
-- diag_printf("<INFO>: cd ../..\n");
-- err = chdir( "../.." );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
-- checkcwd( "/jffs2" );
--
-- diag_printf("<INFO>: rmdir x/y/z/w\n");
-- err = rmdir( "x/y/z/w" );
-- if( err < 0 ) SHOW_RESULT( rmdir, err );
--
-- diag_printf("<INFO>: rmdir x/y/z\n");
-- err = rmdir( "x/y/z" );
-- if( err < 0 ) SHOW_RESULT( rmdir, err );
--
-- diag_printf("<INFO>: rmdir x/y\n");
-- err = rmdir( "x/y" );
-- if( err < 0 ) SHOW_RESULT( rmdir, err );
--
-- diag_printf("<INFO>: rmdir x\n");
-- err = rmdir( "x" );
-- if( err < 0 ) SHOW_RESULT( rmdir, err );
--
-- // --------------------------------------------------------------
--
-- diag_printf("<INFO>: unlink tinky\n");
-- err = unlink( "tinky" );
-- if( err < 0 ) SHOW_RESULT( unlink, err );
--
-- diag_printf("<INFO>: unlink laalaa\n");
-- err = unlink( "laalaa" );
-- if( err < 0 ) SHOW_RESULT( unlink, err );
--
-- diag_printf("<INFO>: cd /\n");
-- err = chdir( "/" );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
-- checkcwd( "/" );
--
-- diag_printf("<INFO>: umount /jffs2\n");
-- err = umount( "/jffs2" );
-- if( err < 0 ) SHOW_RESULT( umount, err );
--
-- diag_printf("<INFO>: umount /\n");
-- err = umount( "/" );
-- if( err < 0 ) SHOW_RESULT( umount, err );
--
-- CYG_TEST_PASS_FINISH("fileio1");
--}
--
--// -------------------------------------------------------------------------
--// EOF fileio1.c
-diff -Nur linux/fs/jffs2/ecos/tests/romfileio1.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/tests/romfileio1.c
---- linux/fs/jffs2/ecos/tests/romfileio1.c 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ecos/tests/romfileio1.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,359 +0,0 @@
--//==========================================================================
--//
--// fileio1.c
--//
--// Test fileio system
--//
--//==========================================================================
--//####COPYRIGHTBEGIN####
--//
--// -------------------------------------------
--// The contents of this file are subject to the Red Hat eCos Public License
--// Version 1.1 (the "License"); you may not use this file except in
--// compliance with the License. You may obtain a copy of the License at
--// http://www.redhat.com/
--//
--// Software distributed under the License is distributed on an "AS IS"
--// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
--// License for the specific language governing rights and limitations under
--// the License.
--//
--// The Original Code is eCos - Embedded Configurable Operating System,
--// released September 30, 1998.
--//
--// The Initial Developer of the Original Code is Red Hat.
--// Portions created by Red Hat are
--// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc.
--// All Rights Reserved.
--// -------------------------------------------
--//
--//####COPYRIGHTEND####
--//==========================================================================
--//#####DESCRIPTIONBEGIN####
--//
--// Author(s): nickg
--// Contributors: nickg, richard.panton@3glab.com
--// Date: 2000-05-25
--// Purpose: Test fileio system
--// Description: This test uses the testfs to check out the initialization
--// and basic operation of the fileio system
--//
--//####DESCRIPTIONEND####
--//
--//==========================================================================
--
--#include <pkgconf/hal.h>
--#include <pkgconf/kernel.h>
--#include <pkgconf/io_fileio.h>
--
--#include <cyg/kernel/ktypes.h> // base kernel types
--#include <cyg/infra/cyg_trac.h> // tracing macros
--#include <cyg/infra/cyg_ass.h> // assertion macros
--
--#include <unistd.h>
--#include <fcntl.h>
--#include <sys/stat.h>
--#include <errno.h>
--#include <string.h>
--#include <dirent.h>
--
--#include <cyg/fileio/fileio.h>
--
--#include <cyg/infra/testcase.h>
--#include <cyg/infra/diag.h> // HAL polled output
--
--#include <pkgconf/fs_jffs2.h> // Address of JFFS2
--
--//==========================================================================
--
--/* MTAB_ENTRY( jffs2_mte1,
-- "/",
-- "jffs2",
-- "",
-- (CYG_ADDRWORD) CYGNUM_FS_JFFS2_BASE_ADDRESS ); */
--
--
--//==========================================================================
--
--#define SHOW_RESULT( _fn, _res ) \
--diag_printf("<FAIL>: " #_fn "() returned %d %s\n", _res, _res<0?strerror(errno):"");
--
--#define CHKFAIL_TYPE( _fn, _res, _type ) { \
--if ( _res != -1 ) \
-- diag_printf("<FAIL>: " #_fn "() returned %d (expected -1)\n", _res); \
--else if ( errno != _type ) \
-- diag_printf("<FAIL>: " #_fn "() failed with errno %d (%s),\n expected %d (%s)\n", errno, strerror(errno), _type, strerror(_type) ); \
--}
--
--//==========================================================================
--
--#define IOSIZE 100
--
--#define LONGNAME1 "long_file_name_that_should_take_up_more_than_one_directory_entry_1"
--#define LONGNAME2 "long_file_name_that_should_take_up_more_than_one_directory_entry_2"
--
--
--//==========================================================================
--
--#ifndef CYGPKG_LIBC_STRING
--
--char *strcat( char *s1, const char *s2 )
--{
-- char *s = s1;
-- while( *s1 ) s1++;
-- while( (*s1++ = *s2++) != 0);
-- return s;
--}
--
--#endif
--
--//==========================================================================
--
--static void listdir( char *name, int statp )
--{
-- int err;
-- DIR *dirp;
--
-- diag_printf("<INFO>: reading directory %s\n",name);
--
-- dirp = opendir( name );
-- if( dirp == NULL ) SHOW_RESULT( opendir, -1 );
--
-- for(;;)
-- {
-- struct dirent *entry = readdir( dirp );
--
-- if( entry == NULL )
-- break;
--
-- diag_printf("<INFO>: entry %14s",entry->d_name);
-- if( statp )
-- {
-- char fullname[PATH_MAX];
-- struct stat sbuf;
--
-- if( name[0] )
-- {
-- strcpy(fullname, name );
-- if( !(name[0] == '/' && name[1] == 0 ) )
-- strcat(fullname, "/" );
-- }
-- else fullname[0] = 0;
--
-- strcat(fullname, entry->d_name );
--
-- err = stat( fullname, &sbuf );
-- if( err < 0 )
-- {
-- if( errno == ENOSYS )
-- diag_printf(" <no status available>");
-- else SHOW_RESULT( stat, err );
-- }
-- else
-- {
-- diag_printf(" [mode %08x ino %08x nlink %d size %d]",
-- sbuf.st_mode,sbuf.st_ino,sbuf.st_nlink,sbuf.st_size);
-- }
-- }
--
-- diag_printf("\n");
-- }
--
-- err = closedir( dirp );
-- if( err < 0 ) SHOW_RESULT( stat, err );
--}
--
--//==========================================================================
--
--static void copyfile( char *name2, char *name1 )
--{
--
-- int err;
-- char buf[IOSIZE];
-- int fd1, fd2;
-- ssize_t done, wrote;
--
-- diag_printf("<INFO>: copy file %s -> %s\n",name2,name1);
--
-- err = access( name1, F_OK );
-- if( err < 0 && errno != EACCES ) SHOW_RESULT( access, err );
--
-- err = access( name2, F_OK );
-- if( err != 0 ) SHOW_RESULT( access, err );
--
-- fd1 = open( name1, O_WRONLY|O_CREAT );
-- if( fd1 < 0 ) SHOW_RESULT( open, fd1 );
--
-- fd2 = open( name2, O_RDONLY );
-- if( fd2 < 0 ) SHOW_RESULT( open, fd2 );
--
-- for(;;)
-- {
-- done = read( fd2, buf, IOSIZE );
-- if( done < 0 ) SHOW_RESULT( read, done );
--
-- if( done == 0 ) break;
--
-- wrote = write( fd1, buf, done );
-- if( wrote != done ) SHOW_RESULT( write, wrote );
--
-- if( wrote != done ) break;
-- }
--
-- err = close( fd1 );
-- if( err < 0 ) SHOW_RESULT( close, err );
--
-- err = close( fd2 );
-- if( err < 0 ) SHOW_RESULT( close, err );
--
--}
--
--//==========================================================================
--
--static void comparefiles( char *name2, char *name1 )
--{
-- int err;
-- char buf1[IOSIZE];
-- char buf2[IOSIZE];
-- int fd1, fd2;
-- ssize_t done1, done2;
-- int i;
--
-- diag_printf("<INFO>: compare files %s == %s\n",name2,name1);
--
-- err = access( name1, F_OK );
-- if( err != 0 ) SHOW_RESULT( access, err );
--
-- err = access( name1, F_OK );
-- if( err != 0 ) SHOW_RESULT( access, err );
--
-- fd1 = open( name1, O_RDONLY );
-- if( fd1 < 0 ) SHOW_RESULT( open, fd1 );
--
-- fd2 = open( name2, O_RDONLY );
-- if( fd2 < 0 ) SHOW_RESULT( open, fd2 );
--
-- for(;;)
-- {
-- done1 = read( fd1, buf1, IOSIZE );
-- if( done1 < 0 ) SHOW_RESULT( read, done1 );
--
-- done2 = read( fd2, buf2, IOSIZE );
-- if( done2 < 0 ) SHOW_RESULT( read, done2 );
--
-- if( done1 != done2 )
-- diag_printf("Files different sizes\n");
--
-- if( done1 == 0 ) break;
--
-- for( i = 0; i < done1; i++ )
-- if( buf1[i] != buf2[i] )
-- {
-- diag_printf("buf1[%d](%02x) != buf1[%d](%02x)\n",i,buf1[i],i,buf2[i]);
-- CYG_TEST_FAIL("Data in files not equal\n");
-- }
-- }
--
-- err = close( fd1 );
-- if( err < 0 ) SHOW_RESULT( close, err );
--
-- err = close( fd2 );
-- if( err < 0 ) SHOW_RESULT( close, err );
--
--}
--
--//==========================================================================
--// main
--
--int main( int argc, char **argv )
--{
-- int err;
-- char address[16];
--
-- CYG_TEST_INIT();
--
-- // --------------------------------------------------------------
--
-- err = mount( "", "/", "jffs2" );
--
-- diag_printf("<INFO>: JFFS2 root follows\n");
-- diag_printf("<INFO>: Note that dev cannot be stat()ed\n");
-- listdir( "/", true );
--
-- diag_printf("<INFO>: cd /etc\n" );
-- err = chdir( "/etc" );
-- if ( err < 0 ) SHOW_RESULT( chdir, err );
--
-- diag_printf("<INFO>: JFFS2 list of '' follows\n");
-- listdir( "", true );
--
-- diag_printf("<INFO>: JFFS2 list of /etc follows\n");
-- listdir( "/etc", true );
--
-- //diag_printf("<INFO>: JFFS2 list of . follows\n");
-- //listdir( ".", true );
--
-- err = mount( "", "/var", "ramfs" );
-- if( err < 0 ) SHOW_RESULT( mount, err );
--
-- copyfile( "/etc/passwd", "/var/passwd_copy" );
--
-- comparefiles( "/etc/passwd", "/var/passwd_copy" );
--
-- diag_printf("<INFO>: JFFS2 list of / follows\n");
-- diag_printf("<INFO>: Note that /var now gives stat() info for RAMFS\n");
-- listdir( "/", true );
--
-- diag_printf("<INFO>: Mount JFFS2 again onto /mnt\n");
-- //sprintf( address, "%p", (void*)CYGNUM_FS_JFFS2_BASE_ADDRESS );
-- err = mount( "", "/mnt", "jffs2" );
-- if( err < 0 ) SHOW_RESULT( mount, err );
--
-- comparefiles( "/etc/passwd", "/mnt/etc/passwd" );
--
--
-- err = mkdir( "/foo", 0 );
-- CHKFAIL_TYPE( mkdir, err, EROFS );
--
-- err = rename( "/var", "/tmp" ); // RAMFS is mounted here
-- CHKFAIL_TYPE( rename, err, EXDEV );
--
-- err = rename( "/var/passwd_copy", "/mnt/etc/passwd_copy" );
-- CHKFAIL_TYPE( rename, err, EXDEV );
--
-- err = rename( "/etc", "/tmp" );
-- CHKFAIL_TYPE( rename, err, EROFS );
--
-- diag_printf("<INFO>: cd /etc\n");
-- err = chdir( "/etc" );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
--
-- err = chdir( "/mnt/etc" );
-- if( err < 0 ) SHOW_RESULT( chdir, err );
--
-- //listdir( ".", true );
--
-- diag_printf("<INFO>: unlink /tmp\n");
-- err = unlink( "/tmp" );
-- CHKFAIL_TYPE( unlink, err, EROFS );
--
-- diag_printf("<INFO>: mount random area\n");
-- //sprintf(address, "%p", (void*)(CYGNUM_FS_JFFS2_BASE_ADDRESS + 0x20000));
-- err = mount( "", "/tmp", "jffs2" );
-- SHOW_RESULT( mount, err );
--
-- err = umount( "/mnt" );
-- if( err < 0 ) SHOW_RESULT( umount, err );
--
-- err = umount( "/var" );
-- if( err < 0 ) SHOW_RESULT( umount, err );
--
-- err = umount( "/" );
-- if( err < 0 ) SHOW_RESULT( umount, err );
--
--
-- CYG_TEST_PASS_FINISH("fileio1");
--}
--
--// -------------------------------------------------------------------------
--// EOF fileio1.c
-diff -Nur linux/fs/jffs2/erase.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/erase.c
---- linux/fs/jffs2/erase.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/erase.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,30 +1,46 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: erase.c,v 1.42 2002/09/06 14:12:44 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
- *
-- * ChangeLog:
-- * 29-Oct-2002 Lineo Japan, Inc. add member struct jffs2_sb_info#nr_bad_blocks
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
- *
-- * ChangeLog:
-- * 29-Oct-2002 Lineo Japan, Inc. add member struct jffs2_sb_info#nr_bad_blocks
-- * 24-Nov-2002 SHARP add erasing_dirty_size
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: erase.c,v 1.24 2001/12/06 16:38:38 dwmw2 Exp $
- *
- */
--
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/mtd/mtd.h>
-+#include <linux/jffs2.h>
- #include <linux/interrupt.h>
--#include <linux/compiler.h>
--#include "crc32.h"
- #include "nodelist.h"
-+#include "crc32.h"
-
- struct erase_priv_struct {
- struct jffs2_eraseblock *jeb;
-@@ -32,13 +48,12 @@
- };
-
- static void jffs2_erase_callback(struct erase_info *);
--static void jffs2_erase_succeeded(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
- static void jffs2_free_all_node_refs(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
-
- void jffs2_erase_block(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
- {
-- int ret;
- struct erase_info *instr;
-+ int ret;
-
- instr = kmalloc(sizeof(struct erase_info) + sizeof(struct erase_priv_struct), GFP_KERNEL);
- if (!instr) {
-@@ -62,16 +77,10 @@
- ((struct erase_priv_struct *)instr->priv)->jeb = jeb;
- ((struct erase_priv_struct *)instr->priv)->c = c;
-
-- /* NAND , read out the fail counter, if possible */
-- if (!jffs2_can_mark_obsolete(c))
-- jffs2_nand_read_failcnt(c,jeb);
--
- ret = c->mtd->erase(c->mtd, instr);
-- if (!ret)
-+ if (!ret) {
- return;
--
-- kfree(instr);
--
-+ }
- if (ret == -ENOMEM || ret == -EAGAIN) {
- /* Erase failed immediately. Refile it on the list */
- D1(printk(KERN_DEBUG "Erase at 0x%08x failed: %d. Refiling on erase_pending_list\n", jeb->offset, ret));
-@@ -80,6 +89,7 @@
- list_add(&jeb->list, &c->erase_pending_list);
- c->erasing_size -= c->sector_size;
- spin_unlock_bh(&c->erase_completion_lock);
-+ kfree(instr);
- return;
- }
-
-@@ -87,24 +97,21 @@
- printk(KERN_WARNING "Erase at 0x%08x failed immediately: -EROFS. Is the sector locked?\n", jeb->offset);
- else
- printk(KERN_WARNING "Erase at 0x%08x failed immediately: errno %d\n", jeb->offset, ret);
--
- spin_lock_bh(&c->erase_completion_lock);
- list_del(&jeb->list);
- list_add(&jeb->list, &c->bad_list);
- c->nr_erasing_blocks--;
-- c->nr_bad_blocks++;
- c->bad_size += c->sector_size;
- c->erasing_size -= c->sector_size;
- spin_unlock_bh(&c->erase_completion_lock);
- wake_up(&c->erase_wait);
-+ kfree(instr);
- }
-
- void jffs2_erase_pending_blocks(struct jffs2_sb_info *c)
- {
- struct jffs2_eraseblock *jeb;
-
-- down(&c->erase_free_sem);
--
- spin_lock_bh(&c->erase_completion_lock);
- while (!list_empty(&c->erase_pending_list)) {
-
-@@ -117,64 +124,45 @@
- c->free_size -= jeb->free_size;
- c->used_size -= jeb->used_size;
- c->dirty_size -= jeb->dirty_size;
-- if(c->erasing_dirty_size >= jeb->dirty_size)
-- c->erasing_dirty_size -= jeb->dirty_size;
-- else
-- c->erasing_dirty_size = 0;
- jeb->used_size = jeb->dirty_size = jeb->free_size = 0;
- jffs2_free_all_node_refs(c, jeb);
- list_add(&jeb->list, &c->erasing_list);
- spin_unlock_bh(&c->erase_completion_lock);
-
- jffs2_erase_block(c, jeb);
--
- /* Be nice */
-- cond_resched();
--
-+ if (current->need_resched)
-+ schedule();
- spin_lock_bh(&c->erase_completion_lock);
- }
- spin_unlock_bh(&c->erase_completion_lock);
- D1(printk(KERN_DEBUG "jffs2_erase_pending_blocks completed\n"));
--
-- up(&c->erase_free_sem);
- }
-
-
--static void jffs2_erase_succeeded(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
--{
-- D1(printk(KERN_DEBUG "Erase completed successfully at 0x%08x\n", jeb->offset));
-- spin_lock(&c->erase_completion_lock);
-- list_del(&jeb->list);
-- list_add_tail(&jeb->list, &c->erase_complete_list);
-- spin_unlock(&c->erase_completion_lock);
--}
--
--
--static inline void jffs2_erase_failed(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
--{
-- spin_lock(&c->erase_completion_lock);
-- c->erasing_size -= c->sector_size;
-- c->bad_size += c->sector_size;
-- list_del(&jeb->list);
-- list_add(&jeb->list, &c->bad_list);
-- c->nr_erasing_blocks--;
-- c->nr_bad_blocks++;
-- spin_unlock(&c->erase_completion_lock);
-- wake_up(&c->erase_wait);
--}
--
- static void jffs2_erase_callback(struct erase_info *instr)
- {
- struct erase_priv_struct *priv = (void *)instr->priv;
-
- if(instr->state != MTD_ERASE_DONE) {
- printk(KERN_WARNING "Erase at 0x%08x finished, but state != MTD_ERASE_DONE. State is 0x%x instead.\n", instr->addr, instr->state);
-- jffs2_erase_failed(priv->c, priv->jeb);
-+ spin_lock(&priv->c->erase_completion_lock);
-+ priv->c->erasing_size -= priv->c->sector_size;
-+ priv->c->bad_size += priv->c->sector_size;
-+ list_del(&priv->jeb->list);
-+ list_add(&priv->jeb->list, &priv->c->bad_list);
-+ priv->c->nr_erasing_blocks--;
-+ spin_unlock(&priv->c->erase_completion_lock);
-+ wake_up(&priv->c->erase_wait);
- } else {
-- jffs2_erase_succeeded(priv->c, priv->jeb);
-+ D1(printk(KERN_DEBUG "Erase completed successfully at 0x%08x\n", instr->addr));
-+ spin_lock(&priv->c->erase_completion_lock);
-+ list_del(&priv->jeb->list);
-+ list_add_tail(&priv->jeb->list, &priv->c->erase_complete_list);
-+ spin_unlock(&priv->c->erase_completion_lock);
- }
- /* Make sure someone picks up the block off the erase_complete list */
--// OFNI_BS_2SFFJ(priv->c)->s_dirt = 1;
-+ OFNI_BS_2SFFJ(priv->c)->s_dirt = 1;
- kfree(instr);
- }
-
-@@ -233,7 +221,7 @@
- this = ic->nodes;
-
- while(this) {
-- printk( "0x%08x(%d)->", ref_offset(this), ref_flags(this));
-+ printk( "0x%08x(%d)->", this->flash_offset & ~3, this->flash_offset &3);
- if (++i == 5) {
- printk("\n" KERN_DEBUG);
- i=0;
-@@ -275,40 +263,42 @@
-
- void jffs2_mark_erased_blocks(struct jffs2_sb_info *c)
- {
-+ static struct jffs2_unknown_node marker = {JFFS2_MAGIC_BITMASK, JFFS2_NODETYPE_CLEANMARKER, sizeof(struct jffs2_unknown_node)};
- struct jffs2_eraseblock *jeb;
-- struct jffs2_raw_node_ref *marker_ref = NULL;
-+ struct jffs2_raw_node_ref *marker_ref;
- unsigned char *ebuf;
-- size_t retlen;
-+ ssize_t retlen;
- int ret;
-
-+ marker.hdr_crc = crc32(0, &marker, sizeof(struct jffs2_unknown_node)-4);
-+
- spin_lock_bh(&c->erase_completion_lock);
- while (!list_empty(&c->erase_complete_list)) {
- jeb = list_entry(c->erase_complete_list.next, struct jffs2_eraseblock, list);
- list_del(&jeb->list);
- spin_unlock_bh(&c->erase_completion_lock);
-
-- if (!jffs2_cleanmarker_oob(c)) {
-- marker_ref = jffs2_alloc_raw_node_ref();
-- if (!marker_ref) {
-- printk(KERN_WARNING "Failed to allocate raw node ref for clean marker\n");
-- /* Come back later */
-- jffs2_erase_pending_trigger(c);
-- return;
-- }
-+ marker_ref = jffs2_alloc_raw_node_ref();
-+ if (!marker_ref) {
-+ printk(KERN_WARNING "Failed to allocate raw node ref for clean marker\n");
-+ /* Come back later */
-+ jffs2_erase_pending_trigger(c);
-+ return;
- }
-+
- ebuf = kmalloc(PAGE_SIZE, GFP_KERNEL);
- if (!ebuf) {
- printk(KERN_WARNING "Failed to allocate page buffer for verifying erase at 0x%08x. Assuming it worked\n", jeb->offset);
- } else {
-- uint32_t ofs = jeb->offset;
-+ __u32 ofs = jeb->offset;
-
- D1(printk(KERN_DEBUG "Verifying erase at 0x%08x\n", jeb->offset));
- while(ofs < jeb->offset + c->sector_size) {
-- uint32_t readlen = min((uint32_t)PAGE_SIZE, jeb->offset + c->sector_size - ofs);
-+ __u32 readlen = min((__u32)PAGE_SIZE, jeb->offset + c->sector_size - ofs);
- int i;
-
-- ret = jffs2_flash_read(c, ofs, readlen, &retlen, ebuf);
-- if (ret) {
-+ ret = c->mtd->read(c->mtd, ofs, readlen, &retlen, ebuf);
-+ if (ret < 0) {
- printk(KERN_WARNING "Read of newly-erased block at 0x%08x failed: %d. Putting on bad_list\n", ofs, ret);
- goto bad;
- }
-@@ -322,10 +312,7 @@
- if (datum + 1) {
- printk(KERN_WARNING "Newly-erased block contained word 0x%lx at offset 0x%08x\n", datum, ofs + i);
- bad:
-- if (!jffs2_cleanmarker_oob(c))
-- jffs2_free_raw_node_ref(marker_ref);
-- else
-- jffs2_write_nand_badblock( c ,jeb );
-+ jffs2_free_raw_node_ref(marker_ref);
- kfree(ebuf);
- bad2:
- spin_lock_bh(&c->erase_completion_lock);
-@@ -334,64 +321,40 @@
-
- list_add_tail(&jeb->list, &c->bad_list);
- c->nr_erasing_blocks--;
-- c->nr_bad_blocks++;
- spin_unlock_bh(&c->erase_completion_lock);
- wake_up(&c->erase_wait);
- return;
- }
- }
- ofs += readlen;
-- cond_resched();
- }
- kfree(ebuf);
- }
-
- /* Write the erase complete marker */
- D1(printk(KERN_DEBUG "Writing erased marker to block at 0x%08x\n", jeb->offset));
-- if (jffs2_cleanmarker_oob(c)) {
--
-- if (jffs2_write_nand_cleanmarker(c, jeb))
-- goto bad2;
--
-- jeb->first_node = jeb->last_node = NULL;
--
-- jeb->free_size = c->sector_size;
-- jeb->used_size = 0;
-- jeb->dirty_size = 0;
-- jeb->wasted_size = 0;
-- } else {
-- struct jffs2_unknown_node marker = {
-- .magic = cpu_to_je16(JFFS2_MAGIC_BITMASK),
-- .nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER),
-- .totlen = cpu_to_je32(c->cleanmarker_size)
-- };
--
-- marker.hdr_crc = cpu_to_je32(crc32(0, &marker, je32_to_cpu(marker.totlen) - 4));
--
-- ret = jffs2_flash_write(c, jeb->offset, je32_to_cpu(marker.totlen), &retlen, (char *)&marker);
-- if (ret) {
-- printk(KERN_WARNING "Write clean marker to block at 0x%08x failed: %d\n",
-- jeb->offset, ret);
-- goto bad2;
-- }
-- if (retlen != je32_to_cpu(marker.totlen)) {
-- printk(KERN_WARNING "Short write to newly-erased block at 0x%08x: Wanted %d, got %d\n",
-- jeb->offset, je32_to_cpu(marker.totlen), retlen);
-- goto bad2;
-- }
--
-- marker_ref->next_in_ino = NULL;
-- marker_ref->next_phys = NULL;
-- marker_ref->flash_offset = jeb->offset;
-- marker_ref->totlen = PAD(je32_to_cpu(marker.totlen));
--
-- jeb->first_node = jeb->last_node = marker_ref;
--
-- jeb->free_size = c->sector_size - marker_ref->totlen;
-- jeb->used_size = marker_ref->totlen;
-- jeb->dirty_size = 0;
-- jeb->wasted_size = 0;
-+ ret = c->mtd->write(c->mtd, jeb->offset, sizeof(marker), &retlen, (char *)&marker);
-+ if (ret) {
-+ printk(KERN_WARNING "Write clean marker to block at 0x%08x failed: %d\n",
-+ jeb->offset, ret);
-+ goto bad2;
- }
-+ if (retlen != sizeof(marker)) {
-+ printk(KERN_WARNING "Short write to newly-erased block at 0x%08x: Wanted %d, got %d\n",
-+ jeb->offset, sizeof(marker), retlen);
-+ goto bad2;
-+ }
-+
-+ marker_ref->next_in_ino = NULL;
-+ marker_ref->next_phys = NULL;
-+ marker_ref->flash_offset = jeb->offset;
-+ marker_ref->totlen = PAD(sizeof(marker));
-+
-+ jeb->first_node = jeb->last_node = marker_ref;
-+
-+ jeb->free_size = c->sector_size - marker_ref->totlen;
-+ jeb->used_size = marker_ref->totlen;
-+ jeb->dirty_size = 0;
-
- spin_lock_bh(&c->erase_completion_lock);
- c->erasing_size -= c->sector_size;
-diff -Nur linux/fs/jffs2/file.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/file.c
---- linux/fs/jffs2/file.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/file.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,18 +1,37 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: file.c,v 1.79 2002/10/07 12:41:16 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
- *
-- * ChangeLog:
-- * 28-Nov-2002 Lineo Japan, Inc. fix deadlock between f->sem and c->alloc_sem
-- * 19-Nov-2002 Lineo Japan, Inc. add counter of fragtree elements
-- * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: file.c,v 1.58.2.1 2002/02/23 14:25:36 dwmw2 Exp $
- *
- */
-
-@@ -20,67 +39,44 @@
- #include <linux/mtd/compatmac.h> /* for min() */
- #include <linux/slab.h>
- #include <linux/fs.h>
--#include <linux/time.h>
- #include <linux/pagemap.h>
--#include "crc32.h"
- #include <linux/jffs2.h>
- #include "nodelist.h"
-+#include "crc32.h"
-
- extern int generic_file_open(struct inode *, struct file *) __attribute__((weak));
- extern loff_t generic_file_llseek(struct file *file, loff_t offset, int origin) __attribute__((weak));
-
-
--int jffs2_fsync(struct file *filp, struct dentry *dentry, int datasync)
-+int jffs2_null_fsync(struct file *filp, struct dentry *dentry, int datasync)
- {
-- struct inode *inode = dentry->d_inode;
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-- if (!c->wbuf || !c->wbuf_len)
-- return 0;
--
-- /* flush write buffer and update c->nextblock */
--
-- /* FIXME NAND */
-- /* At the moment we flush the buffer, to make sure
-- * that every thing is on the flash.
-- * maybe we have to think about it to find a smarter
-- * solution.
-- */
-- down(&c->alloc_sem);
-- down(&f->sem);
-- jffs2_flush_wbuf(c,2);
-- up(&f->sem);
-- up(&c->alloc_sem);
--
-- return 0;
-+ /* Move along. Nothing to see here */
-+ return 0;
- }
-
- struct file_operations jffs2_file_operations =
- {
-- .llseek = generic_file_llseek,
-- .open = generic_file_open,
-- .read = generic_file_read,
-- .write = generic_file_write,
-- .ioctl = jffs2_ioctl,
-- .mmap = generic_file_mmap,
-- .fsync = jffs2_fsync,
--#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,29)
-- .sendfile = generic_file_sendfile
--#endif
-+ llseek: generic_file_llseek,
-+ open: generic_file_open,
-+ read: generic_file_read,
-+ write: generic_file_write,
-+ ioctl: jffs2_ioctl,
-+ mmap: generic_file_mmap,
-+ fsync: jffs2_null_fsync
- };
-
- /* jffs2_file_inode_operations */
-
- struct inode_operations jffs2_file_inode_operations =
- {
-- .setattr = jffs2_setattr
-+ setattr: jffs2_setattr
- };
-
- struct address_space_operations jffs2_file_address_operations =
- {
-- .readpage = jffs2_readpage,
-- .prepare_write =jffs2_prepare_write,
-- .commit_write = jffs2_commit_write
-+ readpage: jffs2_readpage,
-+ prepare_write: jffs2_prepare_write,
-+ commit_write: jffs2_commit_write
- };
-
- int jffs2_setattr (struct dentry *dentry, struct iattr *iattr)
-@@ -94,7 +90,7 @@
- unsigned char *mdata = NULL;
- int mdatalen = 0;
- unsigned int ivalid;
-- uint32_t phys_ofs, alloclen;
-+ __u32 phys_ofs, alloclen;
- int ret;
- D1(printk(KERN_DEBUG "jffs2_setattr(): ino #%lu\n", inode->i_ino));
- ret = inode_change_ok(inode, iattr);
-@@ -108,8 +104,8 @@
- it out again with the appropriate data attached */
- if (S_ISBLK(inode->i_mode) || S_ISCHR(inode->i_mode)) {
- /* For these, we don't actually need to read the old node */
-- dev = (major(dentry->d_inode->i_rdev) << 8) |
-- minor(dentry->d_inode->i_rdev);
-+ dev = (MAJOR(to_kdev_t(dentry->d_inode->i_rdev)) << 8) |
-+ MINOR(to_kdev_t(dentry->d_inode->i_rdev));
- mdata = (char *)&dev;
- mdatalen = sizeof(dev);
- D1(printk(KERN_DEBUG "jffs2_setattr(): Writing %d bytes of kdev_t\n", mdatalen));
-@@ -126,17 +122,6 @@
- D1(printk(KERN_DEBUG "jffs2_setattr(): Writing %d bytes of symlink target\n", mdatalen));
- }
-
-- ivalid = iattr->ia_valid;
--
-- if (ivalid & ATTR_SIZE && inode->i_size != iattr->ia_size) {
-- ret = jffs2_construct_fragtree_if_missing(c, f);
-- if (ret) {
-- if (S_ISLNK(inode->i_mode))
-- kfree(mdata);
-- return ret;
-- }
-- }
--
- ri = jffs2_alloc_raw_inode();
- if (!ri) {
- if (S_ISLNK(inode->i_mode))
-@@ -147,82 +132,79 @@
- ret = jffs2_reserve_space(c, sizeof(*ri) + mdatalen, &phys_ofs, &alloclen, ALLOC_NORMAL);
- if (ret) {
- jffs2_free_raw_inode(ri);
-- if (S_ISLNK(inode->i_mode & S_IFMT))
-+ if (S_ISLNK(inode->i_mode))
- kfree(mdata);
- return ret;
- }
- down(&f->sem);
-+ ivalid = iattr->ia_valid;
-
-- ri->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- ri->nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
-- ri->totlen = cpu_to_je32(sizeof(*ri) + mdatalen);
-- ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
--
-- ri->ino = cpu_to_je32(inode->i_ino);
-- ri->version = cpu_to_je32(++f->highest_version);
--
-- ri->uid = cpu_to_je16((ivalid & ATTR_UID)?iattr->ia_uid:inode->i_uid);
-- ri->gid = cpu_to_je16((ivalid & ATTR_GID)?iattr->ia_gid:inode->i_gid);
--
-- if (ivalid & ATTR_MODE)
-- if (iattr->ia_mode & S_ISGID &&
-- !in_group_p(je16_to_cpu(ri->gid)) && !capable(CAP_FSETID))
-- ri->mode = cpu_to_je32(iattr->ia_mode & ~S_ISGID);
-- else
-- ri->mode = cpu_to_je32(iattr->ia_mode);
-- else
-- ri->mode = cpu_to_je32(inode->i_mode);
--
--
-- ri->isize = cpu_to_je32((ivalid & ATTR_SIZE)?iattr->ia_size:inode->i_size);
-- ri->atime = cpu_to_je32((ivalid & ATTR_ATIME)?iattr->ia_atime:inode->i_atime);
-- ri->mtime = cpu_to_je32((ivalid & ATTR_MTIME)?iattr->ia_mtime:inode->i_mtime);
-- ri->ctime = cpu_to_je32((ivalid & ATTR_CTIME)?iattr->ia_ctime:inode->i_ctime);
-+ ri->magic = JFFS2_MAGIC_BITMASK;
-+ ri->nodetype = JFFS2_NODETYPE_INODE;
-+ ri->totlen = sizeof(*ri) + mdatalen;
-+ ri->hdr_crc = crc32(0, ri, sizeof(struct jffs2_unknown_node)-4);
-+
-+ ri->ino = inode->i_ino;
-+ ri->version = ++f->highest_version;
-+
-+ ri->mode = (ivalid & ATTR_MODE)?iattr->ia_mode:inode->i_mode;
-+ ri->uid = (ivalid & ATTR_UID)?iattr->ia_uid:inode->i_uid;
-+ ri->gid = (ivalid & ATTR_GID)?iattr->ia_gid:inode->i_gid;
-+
-+ if (ivalid & ATTR_MODE && ri->mode & S_ISGID &&
-+ !in_group_p(ri->gid) && !capable(CAP_FSETID))
-+ ri->mode &= ~S_ISGID;
-+
-+ ri->isize = (ivalid & ATTR_SIZE)?iattr->ia_size:inode->i_size;
-+ ri->atime = (ivalid & ATTR_ATIME)?iattr->ia_atime:inode->i_atime;
-+ ri->mtime = (ivalid & ATTR_MTIME)?iattr->ia_mtime:inode->i_mtime;
-+ ri->ctime = (ivalid & ATTR_CTIME)?iattr->ia_ctime:inode->i_ctime;
-
-- ri->offset = cpu_to_je32(0);
-- ri->csize = ri->dsize = cpu_to_je32(mdatalen);
-+ ri->offset = 0;
-+ ri->csize = ri->dsize = mdatalen;
- ri->compr = JFFS2_COMPR_NONE;
-- if (ivalid & ATTR_SIZE && inode->i_size < iattr->ia_size) {
-+ if (inode->i_size < ri->isize) {
- /* It's an extension. Make it a hole node */
- ri->compr = JFFS2_COMPR_ZERO;
-- ri->dsize = cpu_to_je32(iattr->ia_size - inode->i_size);
-- ri->offset = cpu_to_je32(inode->i_size);
-+ ri->dsize = ri->isize - inode->i_size;
-+ ri->offset = inode->i_size;
- }
-- ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
-+ ri->node_crc = crc32(0, ri, sizeof(*ri)-8);
- if (mdatalen)
-- ri->data_crc = cpu_to_je32(crc32(0, mdata, mdatalen));
-+ ri->data_crc = crc32(0, mdata, mdatalen);
- else
-- ri->data_crc = cpu_to_je32(0);
-+ ri->data_crc = 0;
-
-- new_metadata = jffs2_write_dnode(c, f, ri, mdata, mdatalen, phys_ofs, NULL);
-+ new_metadata = jffs2_write_dnode(inode, ri, mdata, mdatalen, phys_ofs, NULL);
- if (S_ISLNK(inode->i_mode))
- kfree(mdata);
-+
-+ jffs2_complete_reservation(c);
-
- if (IS_ERR(new_metadata)) {
-- jffs2_complete_reservation(c);
- jffs2_free_raw_inode(ri);
- up(&f->sem);
- return PTR_ERR(new_metadata);
- }
- /* It worked. Update the inode */
-- inode->i_atime = je32_to_cpu(ri->atime);
-- inode->i_ctime = je32_to_cpu(ri->ctime);
-- inode->i_mtime = je32_to_cpu(ri->mtime);
-- inode->i_mode = je32_to_cpu(ri->mode);
-- inode->i_uid = je16_to_cpu(ri->uid);
-- inode->i_gid = je16_to_cpu(ri->gid);
-+ inode->i_atime = ri->atime;
-+ inode->i_ctime = ri->ctime;
-+ inode->i_mtime = ri->mtime;
-+ inode->i_mode = ri->mode;
-+ inode->i_uid = ri->uid;
-+ inode->i_gid = ri->gid;
-
-
- old_metadata = f->metadata;
-
-- if (ivalid & ATTR_SIZE && inode->i_size > iattr->ia_size) {
-- vmtruncate(inode, iattr->ia_size);
-- jffs2_truncate_fraglist (c, f, iattr->ia_size);
-+ if (inode->i_size > ri->isize) {
-+ vmtruncate(inode, ri->isize);
-+ jffs2_truncate_fraglist (c, &f->fraglist, ri->isize);
- }
-
-- if (ivalid & ATTR_SIZE && inode->i_size < iattr->ia_size) {
-+ if (inode->i_size < ri->isize) {
- jffs2_add_full_dnode_to_inode(c, f, new_metadata);
-- inode->i_size = iattr->ia_size;
-+ inode->i_size = ri->isize;
- f->metadata = NULL;
- } else {
- f->metadata = new_metadata;
-@@ -232,10 +214,7 @@
- jffs2_free_full_dnode(old_metadata);
- }
- jffs2_free_raw_inode(ri);
--
- up(&f->sem);
-- jffs2_complete_reservation(c);
--
- return 0;
- }
-
-@@ -243,30 +222,85 @@
- {
- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
- struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-+ struct jffs2_node_frag *frag = f->fraglist;
-+ __u32 offset = pg->index << PAGE_CACHE_SHIFT;
-+ __u32 end = offset + PAGE_CACHE_SIZE;
- unsigned char *pg_buf;
- int ret;
-
-- D1(printk(KERN_DEBUG "jffs2_do_readpage_nolock(): ino #%lu, page at offset 0x%lx\n", inode->i_ino, pg->index << PAGE_CACHE_SHIFT));
-+ D1(printk(KERN_DEBUG "jffs2_do_readpage_nolock(): ino #%lu, page at offset 0x%x\n", inode->i_ino, offset));
-
- if (!PageLocked(pg))
- PAGE_BUG(pg);
-
-- pg_buf = kmap(pg);
-- /* FIXME: Can kmap fail? */
-+ while(frag && frag->ofs + frag->size <= offset) {
-+ // D1(printk(KERN_DEBUG "skipping frag %d-%d; before the region we care about\n", frag->ofs, frag->ofs + frag->size));
-+ frag = frag->next;
-+ }
-
-- ret = jffs2_read_inode_range(c, f, pg_buf, pg->index << PAGE_CACHE_SHIFT, PAGE_CACHE_SIZE);
-+ pg_buf = kmap(pg);
-
-- if (ret) {
-- ClearPageUptodate(pg);
-- SetPageError(pg);
-- } else {
-- SetPageUptodate(pg);
-- ClearPageError(pg);
-- }
-+ /* XXX FIXME: Where a single physical node actually shows up in two
-+ frags, we read it twice. Don't do that. */
-+ /* Now we're pointing at the first frag which overlaps our page */
-+ while(offset < end) {
-+ D2(printk(KERN_DEBUG "jffs2_readpage: offset %d, end %d\n", offset, end));
-+ if (!frag || frag->ofs > offset) {
-+ __u32 holesize = end - offset;
-+ if (frag) {
-+ D1(printk(KERN_NOTICE "Eep. Hole in ino %ld fraglist. frag->ofs = 0x%08x, offset = 0x%08x\n", inode->i_ino, frag->ofs, offset));
-+ holesize = min(holesize, frag->ofs - offset);
-+ D1(jffs2_print_frag_list(f));
-+ }
-+ D1(printk(KERN_DEBUG "Filling non-frag hole from %d-%d\n", offset, offset+holesize));
-+ memset(pg_buf, 0, holesize);
-+ pg_buf += holesize;
-+ offset += holesize;
-+ continue;
-+ } else if (frag->ofs < offset && (offset & (PAGE_CACHE_SIZE-1)) != 0) {
-+ D1(printk(KERN_NOTICE "Eep. Overlap in ino #%ld fraglist. frag->ofs = 0x%08x, offset = 0x%08x\n",
-+ inode->i_ino, frag->ofs, offset));
-+ D1(jffs2_print_frag_list(f));
-+ memset(pg_buf, 0, end - offset);
-+ ClearPageUptodate(pg);
-+ SetPageError(pg);
-+ kunmap(pg);
-+ return -EIO;
-+ } else if (!frag->node) {
-+ __u32 holeend = min(end, frag->ofs + frag->size);
-+ D1(printk(KERN_DEBUG "Filling frag hole from %d-%d (frag 0x%x 0x%x)\n", offset, holeend, frag->ofs, frag->ofs + frag->size));
-+ memset(pg_buf, 0, holeend - offset);
-+ pg_buf += holeend - offset;
-+ offset = holeend;
-+ frag = frag->next;
-+ continue;
-+ } else {
-+ __u32 readlen;
-+ readlen = min(frag->size, end - offset);
-+ D1(printk(KERN_DEBUG "Reading %d-%d from node at 0x%x\n", frag->ofs, frag->ofs+readlen, frag->node->raw->flash_offset & ~3));
-+ ret = jffs2_read_dnode(c, frag->node, pg_buf, frag->ofs - frag->node->ofs, readlen);
-+ D2(printk(KERN_DEBUG "node read done\n"));
-+ if (ret) {
-+ D1(printk(KERN_DEBUG"jffs2_readpage error %d\n",ret));
-+ memset(pg_buf, 0, frag->size);
-+ ClearPageUptodate(pg);
-+ SetPageError(pg);
-+ kunmap(pg);
-+ return ret;
-+ }
-+ }
-+ pg_buf += frag->size;
-+ offset += frag->size;
-+ frag = frag->next;
-+ D2(printk(KERN_DEBUG "node read was OK. Looping\n"));
-+ }
-+ D2(printk(KERN_DEBUG "readpage finishing\n"));
-+ SetPageUptodate(pg);
-+ ClearPageError(pg);
-
- flush_dcache_page(pg);
-- kunmap(pg);
-
-+ kunmap(pg);
- D1(printk(KERN_DEBUG "readpage finished\n"));
- return 0;
- }
-@@ -274,76 +308,72 @@
- int jffs2_do_readpage_unlock(struct inode *inode, struct page *pg)
- {
- int ret = jffs2_do_readpage_nolock(inode, pg);
-- unlock_page(pg);
-+ UnlockPage(pg);
- return ret;
- }
-
-
- int jffs2_readpage (struct file *filp, struct page *pg)
- {
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(pg->mapping->host);
-+ struct jffs2_inode_info *f = JFFS2_INODE_INFO(filp->f_dentry->d_inode);
- int ret;
-
- down(&f->sem);
-- ret = jffs2_do_readpage_unlock(pg->mapping->host, pg);
-+ ret = jffs2_do_readpage_unlock(filp->f_dentry->d_inode, pg);
- up(&f->sem);
- return ret;
- }
-
- int jffs2_prepare_write (struct file *filp, struct page *pg, unsigned start, unsigned end)
- {
-- struct inode *inode = pg->mapping->host;
-+ struct inode *inode = filp->f_dentry->d_inode;
- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
-- uint32_t pageofs = pg->index << PAGE_CACHE_SHIFT;
-+ __u32 pageofs = pg->index << PAGE_CACHE_SHIFT;
- int ret = 0;
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-
-- D1(printk(KERN_DEBUG "jffs2_prepare_write()\n"));
--
-- ret = jffs2_construct_fragtree_if_missing(c, f);
-- if (ret)
-- return ret;
-+ down(&f->sem);
-+ D1(printk(KERN_DEBUG "jffs2_prepare_write() nrpages %ld\n", inode->i_mapping->nrpages));
-
- if (pageofs > inode->i_size) {
- /* Make new hole frag from old EOF to new page */
-+ struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
- struct jffs2_raw_inode ri;
- struct jffs2_full_dnode *fn;
-- uint32_t phys_ofs, alloc_len;
-+ __u32 phys_ofs, alloc_len;
-
- D1(printk(KERN_DEBUG "Writing new hole frag 0x%x-0x%x between current EOF and new page\n",
- (unsigned int)inode->i_size, pageofs));
-
- ret = jffs2_reserve_space(c, sizeof(ri), &phys_ofs, &alloc_len, ALLOC_NORMAL);
-- if (ret)
-+ if (ret) {
-+ up(&f->sem);
- return ret;
--
-- down(&f->sem);
-+ }
- memset(&ri, 0, sizeof(ri));
-
-- ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- ri.nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
-- ri.totlen = cpu_to_je32(sizeof(ri));
-- ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
--
-- ri.ino = cpu_to_je32(f->inocache->ino);
-- ri.version = cpu_to_je32(++f->highest_version);
-- ri.mode = cpu_to_je32(inode->i_mode);
-- ri.uid = cpu_to_je16(inode->i_uid);
-- ri.gid = cpu_to_je16(inode->i_gid);
-- ri.isize = cpu_to_je32(max((uint32_t)inode->i_size, pageofs));
-- ri.atime = ri.ctime = ri.mtime = cpu_to_je32(CURRENT_TIME);
-- ri.offset = cpu_to_je32(inode->i_size);
-- ri.dsize = cpu_to_je32(pageofs - inode->i_size);
-- ri.csize = cpu_to_je32(0);
-+ ri.magic = JFFS2_MAGIC_BITMASK;
-+ ri.nodetype = JFFS2_NODETYPE_INODE;
-+ ri.totlen = sizeof(ri);
-+ ri.hdr_crc = crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4);
-+
-+ ri.ino = f->inocache->ino;
-+ ri.version = ++f->highest_version;
-+ ri.mode = inode->i_mode;
-+ ri.uid = inode->i_uid;
-+ ri.gid = inode->i_gid;
-+ ri.isize = max((__u32)inode->i_size, pageofs);
-+ ri.atime = ri.ctime = ri.mtime = CURRENT_TIME;
-+ ri.offset = inode->i_size;
-+ ri.dsize = pageofs - inode->i_size;
-+ ri.csize = 0;
- ri.compr = JFFS2_COMPR_ZERO;
-- ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
-- ri.data_crc = cpu_to_je32(0);
-+ ri.node_crc = crc32(0, &ri, sizeof(ri)-8);
-+ ri.data_crc = 0;
-
-- fn = jffs2_write_dnode(c, f, &ri, NULL, 0, phys_ofs, NULL);
--
-+ fn = jffs2_write_dnode(inode, &ri, NULL, 0, phys_ofs, NULL);
-+ jffs2_complete_reservation(c);
- if (IS_ERR(fn)) {
- ret = PTR_ERR(fn);
-- jffs2_complete_reservation(c);
- up(&f->sem);
- return ret;
- }
-@@ -357,23 +387,18 @@
- D1(printk(KERN_DEBUG "Eep. add_full_dnode_to_inode() failed in prepare_write, returned %d\n", ret));
- jffs2_mark_node_obsolete(c, fn->raw);
- jffs2_free_full_dnode(fn);
-- jffs2_complete_reservation(c);
- up(&f->sem);
- return ret;
- }
-- jffs2_complete_reservation(c);
- inode->i_size = pageofs;
-- up(&f->sem);
- }
-
-
-- /* Read in the page if it wasn't already present, unless it's a whole page */
-- if (!PageUptodate(pg) && (start || end < PAGE_CACHE_SIZE)) {
-- down(&f->sem);
-+ /* Read in the page if it wasn't already present */
-+ if (!Page_Uptodate(pg) && (start || end < PAGE_SIZE))
- ret = jffs2_do_readpage_nolock(inode, pg);
-- up(&f->sem);
-- }
-- D1(printk(KERN_DEBUG "end prepare_write(). pg->flags %lx\n", pg->flags));
-+ D1(printk(KERN_DEBUG "end prepare_write(). nrpages %ld\n", inode->i_mapping->nrpages));
-+ up(&f->sem);
- return ret;
- }
-
-@@ -382,60 +407,122 @@
- /* Actually commit the write from the page cache page we're looking at.
- * For now, we write the full page out each time. It sucks, but it's simple
- */
-- struct inode *inode = pg->mapping->host;
-+ struct inode *inode = filp->f_dentry->d_inode;
- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
- struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-+ __u32 newsize = max_t(__u32, filp->f_dentry->d_inode->i_size, (pg->index << PAGE_CACHE_SHIFT) + end);
-+ __u32 file_ofs = (pg->index << PAGE_CACHE_SHIFT);
-+ __u32 writelen = min((__u32)PAGE_CACHE_SIZE, newsize - file_ofs);
- struct jffs2_raw_inode *ri;
- int ret = 0;
-- uint32_t writtenlen = 0;
--
-- D1(printk(KERN_DEBUG "jffs2_commit_write(): ino #%lu, page at 0x%lx, range %d-%d, flags %lx\n",
-- inode->i_ino, pg->index << PAGE_CACHE_SHIFT, start, end, pg->flags));
-+ ssize_t writtenlen = 0;
-
-- if (!start && end == PAGE_CACHE_SIZE) {
-- /* We need to avoid deadlock with page_cache_read() in
-- jffs2_garbage_collect_pass(). So we have to mark the
-- page up to date, to prevent page_cache_read() from
-- trying to re-lock it. */
-- SetPageUptodate(pg);
-- }
-+ D1(printk(KERN_DEBUG "jffs2_commit_write(): ino #%lu, page at 0x%lx, range %d-%d, nrpages %ld\n", inode->i_ino, pg->index << PAGE_CACHE_SHIFT, start, end, filp->f_dentry->d_inode->i_mapping->nrpages));
-
- ri = jffs2_alloc_raw_inode();
--
-- if (!ri) {
-- D1(printk(KERN_DEBUG "jffs2_commit_write(): Allocation of raw inode failed\n"));
-+ if (!ri)
- return -ENOMEM;
-- }
-
-- /* Set the fields that the generic jffs2_write_inode_range() code can't find */
-- ri->ino = cpu_to_je32(inode->i_ino);
-- ri->mode = cpu_to_je32(inode->i_mode);
-- ri->uid = cpu_to_je16(inode->i_uid);
-- ri->gid = cpu_to_je16(inode->i_gid);
-- ri->isize = cpu_to_je32((uint32_t)inode->i_size);
-- ri->atime = ri->ctime = ri->mtime = cpu_to_je32(CURRENT_TIME);
--
-- /* We rely on the fact that generic_file_write() currently kmaps the page for us. */
-- ret = jffs2_write_inode_range(c, f, ri, page_address(pg) + start,
-- (pg->index << PAGE_CACHE_SHIFT) + start, end - start, &writtenlen);
-+ while(writelen) {
-+ struct jffs2_full_dnode *fn;
-+ unsigned char *comprbuf = NULL;
-+ unsigned char comprtype = JFFS2_COMPR_NONE;
-+ __u32 phys_ofs, alloclen;
-+ __u32 datalen, cdatalen;
-
-- if (ret) {
-- /* There was an error writing. */
-- SetPageError(pg);
-- }
-+ D2(printk(KERN_DEBUG "jffs2_commit_write() loop: 0x%x to write to 0x%x\n", writelen, file_ofs));
-+
-+ ret = jffs2_reserve_space(c, sizeof(*ri) + JFFS2_MIN_DATA_LEN, &phys_ofs, &alloclen, ALLOC_NORMAL);
-+ if (ret) {
-+ SetPageError(pg);
-+ D1(printk(KERN_DEBUG "jffs2_reserve_space returned %d\n", ret));
-+ break;
-+ }
-+ down(&f->sem);
-+ datalen = writelen;
-+ cdatalen = min(alloclen - sizeof(*ri), writelen);
-
-- if (writtenlen) {
-- if (inode->i_size < (pg->index << PAGE_CACHE_SHIFT) + start + writtenlen) {
-- inode->i_size = (pg->index << PAGE_CACHE_SHIFT) + start + writtenlen;
-- inode->i_blocks = (inode->i_size + 511) >> 9;
--
-- inode->i_ctime = inode->i_mtime = je32_to_cpu(ri->ctime);
-+ comprbuf = kmalloc(cdatalen, GFP_KERNEL);
-+ if (comprbuf) {
-+ comprtype = jffs2_compress(page_address(pg)+ (file_ofs & (PAGE_CACHE_SIZE-1)), comprbuf, &datalen, &cdatalen);
- }
-+ if (comprtype == JFFS2_COMPR_NONE) {
-+ /* Either compression failed, or the allocation of comprbuf failed */
-+ if (comprbuf)
-+ kfree(comprbuf);
-+ comprbuf = page_address(pg) + (file_ofs & (PAGE_CACHE_SIZE -1));
-+ datalen = cdatalen;
-+ }
-+ /* Now comprbuf points to the data to be written, be it compressed or not.
-+ comprtype holds the compression type, and comprtype == JFFS2_COMPR_NONE means
-+ that the comprbuf doesn't need to be kfree()d.
-+ */
-+
-+ ri->magic = JFFS2_MAGIC_BITMASK;
-+ ri->nodetype = JFFS2_NODETYPE_INODE;
-+ ri->totlen = sizeof(*ri) + cdatalen;
-+ ri->hdr_crc = crc32(0, ri, sizeof(struct jffs2_unknown_node)-4);
-+
-+ ri->ino = inode->i_ino;
-+ ri->version = ++f->highest_version;
-+ ri->mode = inode->i_mode;
-+ ri->uid = inode->i_uid;
-+ ri->gid = inode->i_gid;
-+ ri->isize = max((__u32)inode->i_size, file_ofs + datalen);
-+ ri->atime = ri->ctime = ri->mtime = CURRENT_TIME;
-+ ri->offset = file_ofs;
-+ ri->csize = cdatalen;
-+ ri->dsize = datalen;
-+ ri->compr = comprtype;
-+ ri->node_crc = crc32(0, ri, sizeof(*ri)-8);
-+ ri->data_crc = crc32(0, comprbuf, cdatalen);
-+
-+ fn = jffs2_write_dnode(inode, ri, comprbuf, cdatalen, phys_ofs, NULL);
-+
-+ jffs2_complete_reservation(c);
-+
-+ if (comprtype != JFFS2_COMPR_NONE)
-+ kfree(comprbuf);
-+
-+ if (IS_ERR(fn)) {
-+ ret = PTR_ERR(fn);
-+ up(&f->sem);
-+ SetPageError(pg);
-+ break;
-+ }
-+ ret = jffs2_add_full_dnode_to_inode(c, f, fn);
-+ if (f->metadata) {
-+ jffs2_mark_node_obsolete(c, f->metadata->raw);
-+ jffs2_free_full_dnode(f->metadata);
-+ f->metadata = NULL;
-+ }
-+ up(&f->sem);
-+ if (ret) {
-+ /* Eep */
-+ D1(printk(KERN_DEBUG "Eep. add_full_dnode_to_inode() failed in commit_write, returned %d\n", ret));
-+ jffs2_mark_node_obsolete(c, fn->raw);
-+ jffs2_free_full_dnode(fn);
-+ SetPageError(pg);
-+ break;
-+ }
-+ inode->i_size = ri->isize;
-+ inode->i_blocks = (inode->i_size + 511) >> 9;
-+ inode->i_ctime = inode->i_mtime = ri->ctime;
-+ if (!datalen) {
-+ printk(KERN_WARNING "Eep. We didn't actually write any bloody data\n");
-+ ret = -EIO;
-+ SetPageError(pg);
-+ break;
-+ }
-+ D1(printk(KERN_DEBUG "increasing writtenlen by %d\n", datalen));
-+ writtenlen += datalen;
-+ file_ofs += datalen;
-+ writelen -= datalen;
- }
-
- jffs2_free_raw_inode(ri);
-
-- if (start+writtenlen < end) {
-+ if (writtenlen < end) {
- /* generic_file_write has written more to the page cache than we've
- actually written to the medium. Mark the page !Uptodate so that
- it gets reread */
-@@ -443,7 +530,13 @@
- SetPageError(pg);
- ClearPageUptodate(pg);
- }
-+ if (writtenlen <= start) {
-+ /* We didn't even get to the start of the affected part */
-+ ret = ret?ret:-ENOSPC;
-+ D1(printk(KERN_DEBUG "jffs2_commit_write(): Only %x bytes written to page. start (%x) not reached, returning %d\n", writtenlen, start, ret));
-+ }
-+ writtenlen = min(end-start, writtenlen-start);
-
-- D1(printk(KERN_DEBUG "jffs2_commit_write() returning %d\n",writtenlen?writtenlen:ret));
-+ D1(printk(KERN_DEBUG "jffs2_commit_write() returning %d. nrpages is %ld\n",writtenlen?writtenlen:ret, inode->i_mapping->nrpages));
- return writtenlen?writtenlen:ret;
- }
-diff -Nur linux/fs/jffs2/fs.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/fs.c
---- linux/fs/jffs2/fs.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/fs.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,412 +0,0 @@
--/*
-- * JFFS2 -- Journalling Flash File System, Version 2.
-- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-- *
-- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
-- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-- *
-- * $Id: fs.c,v 1.17 2002/08/21 10:42:12 dwmw2 Exp $
-- *
-- * ChangeLog:
-- * 19-Nov-2002 Lineo Japan, Inc. add function jffs2_get_nr_inodes()
-- * 09-Nov-2002 Lineo Japan, Inc. add code to do avail = 0 when cannot reserve space
-- * 01-Nov-2002 Lineo Japan, Inc. involve nr_bad_blocks in USED calc.
-- *
-- * ChangeLog:
-- * 19-Nov-2002 Lineo Japan, Inc. add function jffs2_get_nr_inodes()
-- * 24-Nov-2002 SHARP modify storage-avail calculation, and add erasing_dirty_size
-- * 09-Nov-2002 Lineo Japan, Inc. add code to do avail = 0 when cannot reserve space
-- * 01-Nov-2002 Lineo Japan, Inc. involve nr_bad_blocks in USED calc.
-- *
-- */
--
--#include <linux/config.h>
--#include <linux/kernel.h>
--#include <linux/sched.h>
--#include <linux/fs.h>
--#include <linux/list.h>
--#include <linux/interrupt.h>
--#include <linux/mtd/mtd.h>
--#include <linux/pagemap.h>
--#include <linux/slab.h>
--#include "nodelist.h"
--
--int jffs2_statfs(struct super_block *sb, struct statfs *buf)
--{
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
-- unsigned long avail, avail_dirty;
-- uint32_t dirty_now, erasing_dirty_now, nonerasing_dirty_now, next_free;
-- int32_t avail_blocks;
-- int reserved_blocks = JFFS2_RESERVED_BLOCKS_WRITE + JFFS2_RESERVED_BLOCKS_ROOT;
--
-- buf->f_type = JFFS2_SUPER_MAGIC;
-- buf->f_bsize = 1 << PAGE_SHIFT;
-- buf->f_blocks = c->flash_size >> PAGE_SHIFT;
-- buf->f_files = 0;
-- buf->f_ffree = 0;
-- buf->f_namelen = JFFS2_MAX_NAME_LEN;
--
-- spin_lock_bh(&c->erase_completion_lock);
--
-- dirty_now = c->dirty_size;
-- erasing_dirty_now = c->erasing_dirty_size;
-- if (dirty_now < erasing_dirty_now)
-- erasing_dirty_now = dirty_now;
-- nonerasing_dirty_now = dirty_now - erasing_dirty_now;
-- avail_blocks = NR_AVAIL_BLOCKS(c);
-- next_free = (c->nextblock) ? (c->nextblock->free_size) : 0;
--
-- if (nonerasing_dirty_now >= JFFS2_RESERVED_BLOCKS_DIRTY * c->sector_size){
-- avail_dirty = nonerasing_dirty_now - JFFS2_RESERVED_BLOCKS_DIRTY * c->sector_size;
-- }else{
-- avail_dirty = 0;
-- }
--
-- if (avail_blocks * c->sector_size + next_free + avail_dirty >= reserved_blocks * c->sector_size){
-- avail = avail_blocks * c->sector_size + next_free + avail_dirty - reserved_blocks * c->sector_size;
-- }else{
-- avail = 0;
-- }
--
-- if (avail > 0){
-- if (avail_blocks < reserved_blocks &&
-- (c->cont_gc_count >= JFFS2_MAX_CONT_GC ||
-- avail_blocks <= 1 + JFFS2_RESERVED_BLOCKS_ROOT ||
-- dirty_now < c->sector_size ||
-- nonerasing_dirty_now / c->sector_size < JFFS2_RESERVED_BLOCKS_DIRTY ||
-- avail_blocks + nonerasing_dirty_now / c->sector_size - JFFS2_RESERVED_BLOCKS_DIRTY < reserved_blocks)){
-- avail = 0;
-- }
-- }
--
-- buf->f_bavail = buf->f_bfree = avail >> PAGE_SHIFT;
--
-- D1(jffs2_dump_block_lists(c));
--
-- spin_unlock_bh(&c->erase_completion_lock);
--
-- return 0;
--}
--
--
--#ifdef CONFIG_JFFS2_DYNFRAGTREE
--
--static unsigned long jffs2_nr_inodes; /* the number of inode objects */
--static inline void inc_nr_inodes(void) { jffs2_nr_inodes++; }
--static inline void dec_nr_inodes(void) { jffs2_nr_inodes--; }
--unsigned long jffs2_get_nr_inodes(void) { return jffs2_nr_inodes; }
--
--#else
--
--static inline void inc_nr_inodes(void) { }
--static inline void dec_nr_inodes(void) { }
--unsigned long jffs2_get_nr_inodes(void) { return 0; }
--
--#endif
--
--
--void jffs2_clear_inode (struct inode *inode)
--{
-- /* We can forget about this inode for now - drop all
-- * the nodelists associated with it, etc.
-- */
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
--
-- D1(printk(KERN_DEBUG "jffs2_clear_inode(): ino #%lu mode %o\n", inode->i_ino, inode->i_mode));
--
-- jffs2_do_clear_inode(c, f);
--
-- dec_nr_inodes();
--}
--
--void jffs2_read_inode (struct inode *inode)
--{
-- struct jffs2_inode_info *f;
-- struct jffs2_sb_info *c;
-- struct jffs2_raw_inode latest_node;
-- int ret;
--
-- D1(printk(KERN_DEBUG "jffs2_read_inode(): inode->i_ino == %lu\n", inode->i_ino));
--
-- f = JFFS2_INODE_INFO(inode);
-- c = JFFS2_SB_INFO(inode->i_sb);
--
-- jffs2_init_inode_info(f);
--
-- ret = jffs2_do_read_inode(c, f, inode->i_ino, &latest_node);
--
-- if (ret) {
-- make_bad_inode(inode);
-- up(&f->sem);
-- return;
-- }
-- inode->i_mode = je32_to_cpu(latest_node.mode);
-- inode->i_uid = je16_to_cpu(latest_node.uid);
-- inode->i_gid = je16_to_cpu(latest_node.gid);
-- inode->i_size = je32_to_cpu(latest_node.isize);
-- inode->i_atime = je32_to_cpu(latest_node.atime);
-- inode->i_mtime = je32_to_cpu(latest_node.mtime);
-- inode->i_ctime = je32_to_cpu(latest_node.ctime);
--
-- inode->i_nlink = f->inocache->nlink;
--
-- inode->i_blksize = PAGE_SIZE;
-- inode->i_blocks = (inode->i_size + 511) >> 9;
--
-- switch (inode->i_mode & S_IFMT) {
-- unsigned short rdev;
--
-- case S_IFLNK:
-- inode->i_op = &jffs2_symlink_inode_operations;
-- break;
--
-- case S_IFDIR:
-- {
-- struct jffs2_full_dirent *fd;
--
-- for (fd=f->dents; fd; fd = fd->next) {
-- if (fd->type == DT_DIR && fd->ino)
-- inode->i_nlink++;
-- }
-- /* and '..' */
-- inode->i_nlink++;
-- /* Root dir gets i_nlink 3 for some reason */
-- if (inode->i_ino == 1)
-- inode->i_nlink++;
--
-- inode->i_op = &jffs2_dir_inode_operations;
-- inode->i_fop = &jffs2_dir_operations;
-- break;
-- }
-- case S_IFREG:
-- inode->i_op = &jffs2_file_inode_operations;
-- inode->i_fop = &jffs2_file_operations;
-- inode->i_mapping->a_ops = &jffs2_file_address_operations;
-- inode->i_mapping->nrpages = 0;
-- break;
--
-- case S_IFBLK:
-- case S_IFCHR:
-- /* Read the device numbers from the media */
-- D1(printk(KERN_DEBUG "Reading device numbers from flash\n"));
-- if (jffs2_read_dnode(c, f->metadata, (char *)&rdev, 0, sizeof(rdev)) < 0) {
-- /* Eep */
-- printk(KERN_NOTICE "Read device numbers for inode %lu failed\n", (unsigned long)inode->i_ino);
-- up(&f->sem);
-- jffs2_do_clear_inode(c, f);
-- make_bad_inode(inode);
-- return;
-- }
--
-- case S_IFSOCK:
-- case S_IFIFO:
-- inode->i_op = &jffs2_file_inode_operations;
-- init_special_inode(inode, inode->i_mode, kdev_t_to_nr(mk_kdev(rdev>>8, rdev&0xff)));
-- break;
--
-- default:
-- printk(KERN_WARNING "jffs2_read_inode(): Bogus imode %o for ino %lu\n", inode->i_mode, (unsigned long)inode->i_ino);
-- }
--
-- up(&f->sem);
--
-- inc_nr_inodes();
--
-- D1(printk(KERN_DEBUG "jffs2_read_inode() returning\n"));
--}
--
--
--int jffs2_remount_fs (struct super_block *sb, int *flags, char *data)
--{
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
--
-- if (c->flags & JFFS2_SB_FLAG_RO && !(sb->s_flags & MS_RDONLY))
-- return -EROFS;
--
-- /* We stop if it was running, then restart if it needs to.
-- This also catches the case where it was stopped and this
-- is just a remount to restart it */
-- if (!(sb->s_flags & MS_RDONLY))
-- jffs2_stop_garbage_collect_thread(c);
--
-- if (!(*flags & MS_RDONLY))
-- jffs2_start_garbage_collect_thread(c);
--
-- sb->s_flags = (sb->s_flags & ~MS_RDONLY)|(*flags & MS_RDONLY);
--
-- return 0;
--}
--
--void jffs2_write_super (struct super_block *sb)
--{
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
-- sb->s_dirt = 0;
--
-- if (sb->s_flags & MS_RDONLY)
-- return;
--
-- D1(printk(KERN_DEBUG "jffs2_write_super()\n"));
-- jffs2_garbage_collect_trigger(c);
-- jffs2_erase_pending_blocks(c);
-- jffs2_mark_erased_blocks(c);
--}
--
--
--/* jffs2_new_inode: allocate a new inode and inocache, add it to the hash,
-- fill in the raw_inode while you're at it. */
--struct inode *jffs2_new_inode (struct inode *dir_i, int mode, struct jffs2_raw_inode *ri)
--{
-- struct inode *inode;
-- struct super_block *sb = dir_i->i_sb;
-- struct jffs2_sb_info *c;
-- struct jffs2_inode_info *f;
-- int ret;
--
-- D1(printk(KERN_DEBUG "jffs2_new_inode(): dir_i %ld, mode 0x%x\n", dir_i->i_ino, mode));
--
-- c = JFFS2_SB_INFO(sb);
--
-- inode = new_inode(sb);
--
-- if (!inode)
-- return ERR_PTR(-ENOMEM);
--
-- f = JFFS2_INODE_INFO(inode);
-- jffs2_init_inode_info(f);
--
-- memset(ri, 0, sizeof(*ri));
-- /* Set OS-specific defaults for new inodes */
-- ri->uid = cpu_to_je16(current->fsuid);
--
-- if (dir_i->i_mode & S_ISGID) {
-- ri->gid = cpu_to_je16(dir_i->i_gid);
-- if (S_ISDIR(mode))
-- mode |= S_ISGID;
-- } else {
-- ri->gid = cpu_to_je16(current->fsgid);
-- }
-- ri->mode = cpu_to_je32(mode);
-- ret = jffs2_do_new_inode (c, f, mode, ri);
-- if (ret) {
-- make_bad_inode(inode);
-- iput(inode);
-- return ERR_PTR(ret);
-- }
-- inode->i_nlink = 1;
-- inode->i_ino = je32_to_cpu(ri->ino);
-- inode->i_mode = je32_to_cpu(ri->mode);
-- inode->i_gid = je16_to_cpu(ri->gid);
-- inode->i_uid = je16_to_cpu(ri->uid);
-- inode->i_atime = inode->i_ctime = inode->i_mtime = CURRENT_TIME;
-- ri->atime = ri->mtime = ri->ctime = cpu_to_je32(inode->i_mtime);
--
-- inode->i_blksize = PAGE_SIZE;
-- inode->i_blocks = 0;
-- inode->i_size = 0;
--
-- insert_inode_hash(inode);
--
-- inc_nr_inodes();
--
-- return inode;
--}
--
--
--int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)
--{
-- struct jffs2_sb_info *c;
-- struct inode *root_i;
-- int ret;
--
-- c = JFFS2_SB_INFO(sb);
--
-- c->sector_size = c->mtd->erasesize;
-- c->flash_size = c->mtd->size;
--
--#if 0
-- if (c->sector_size < 0x10000) {
-- printk(KERN_INFO "jffs2: Erase block size too small (%dKiB). Using 64KiB instead\n",
-- c->sector_size / 1024);
-- c->sector_size = 0x10000;
-- }
--#endif
-- if (c->flash_size < 5*c->sector_size) {
-- printk(KERN_ERR "jffs2: Too few erase blocks (%d)\n",
-- c->flash_size / c->sector_size);
-- return -EINVAL;
-- }
--
-- c->cleanmarker_size = sizeof(struct jffs2_unknown_node);
-- /* Jvrn -- stick alignment for weird 8-byte-page flash here */
--
-- if (jffs2_cleanmarker_oob(c)) {
-- /* Cleanmarker is out-of-band, so inline size zero */
-- c->cleanmarker_size = 0;
-- }
--
-- if (c->mtd->type == MTD_NANDFLASH) {
-- /* Initialise write buffer */
-- c->wbuf_pagesize = c->mtd->oobblock;
-- c->wbuf_ofs = 0xFFFFFFFF;
-- c->wbuf = kmalloc(c->wbuf_pagesize, GFP_KERNEL);
-- if (!c->wbuf)
-- return -ENOMEM;
--
-- /* Initialize process for timed wbuf flush */
-- INIT_TQUEUE(&c->wbuf_task,(void*) jffs2_wbuf_process, (void *)c);
-- /* Initialize timer for timed wbuf flush */
-- init_timer(&c->wbuf_timer);
-- c->wbuf_timer.function = jffs2_wbuf_timeout;
-- c->wbuf_timer.data = (unsigned long) c;
-- }
--
-- c->inocache_list = kmalloc(INOCACHE_HASHSIZE * sizeof(struct jffs2_inode_cache *), GFP_KERNEL);
-- if (!c->inocache_list) {
-- ret = -ENOMEM;
-- goto out_wbuf;
-- }
-- memset(c->inocache_list, 0, INOCACHE_HASHSIZE * sizeof(struct jffs2_inode_cache *));
--
-- if ((ret = jffs2_do_mount_fs(c)))
-- goto out_inohash;
--
-- ret = -EINVAL;
--
-- D1(printk(KERN_DEBUG "jffs2_do_fill_super(): Getting root inode\n"));
-- root_i = iget(sb, 1);
-- if (is_bad_inode(root_i)) {
-- D1(printk(KERN_WARNING "get root inode failed\n"));
-- goto out_nodes;
-- }
--
-- D1(printk(KERN_DEBUG "jffs2_do_fill_super(): d_alloc_root()\n"));
-- sb->s_root = d_alloc_root(root_i);
-- if (!sb->s_root)
-- goto out_root_i;
--
--#if LINUX_VERSION_CODE >= 0x20403
-- sb->s_maxbytes = 0xFFFFFFFF;
--#endif
-- sb->s_blocksize = PAGE_CACHE_SIZE;
-- sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
-- sb->s_magic = JFFS2_SUPER_MAGIC;
-- if (!(sb->s_flags & MS_RDONLY))
-- jffs2_start_garbage_collect_thread(c);
-- return 0;
--
-- out_root_i:
-- iput(root_i);
-- out_nodes:
-- jffs2_free_ino_caches(c);
-- jffs2_free_raw_node_refs(c);
-- kfree(c->blocks);
-- out_inohash:
-- kfree(c->inocache_list);
-- out_wbuf:
-- if (c->wbuf)
-- kfree(c->wbuf);
-- return ret;
--}
-diff -Nur linux/fs/jffs2/gc.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/gc.c
---- linux/fs/jffs2/gc.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/gc.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,224 +1,88 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: gc.c,v 1.84 2002/09/06 16:46:29 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
- *
-- * ChangeLog:
-- * 03-Dec-2002 Lineo Japan, Inc. add LockPage
-- * 30-Nov-2002 Lineo Japan, Inc. fix deadlock between lock_page and f->sem
-- * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode
-- * 25-Nov-2002 Lineo Japan, Inc. remove warning message when there is
-- * no gcblock
-- * 23-Nov-2002 Lineo Japan, Inc. correct JFFS2_RESERVED_BLOCKS_GCMERGE
-- * condition expression in connection with NR_AVAIL_BLOCKS()
-- * take max dirty size from c->dirty_list
-- * return -ENOSPC when find_gc_block
-- * returns NULL
-- * don't take gcblock from clean_list
-- * when NR_AVAIL_BLOCKS < JFFS2_RESERVED_BLOCKS_CLEAN
-- * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
-- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
- *
-- * ChangeLog:
-- * 05-Dec-2002 SHARP adjust gcblock selection
-- * 03-Dec-2002 Lineo Japan, Inc. add LockPage
-- * 30-Nov-2002 Lineo Japan, Inc. fix deadlock between lock_page and f->sem
-- * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode
-- * 25-Nov-2002 Lineo Japan, Inc. remove warning message when there is
-- * no gcblock
-- * 24-Nov-2002 SHARP add erasing_dirty_size
-- * 23-Nov-2002 Lineo Japan, Inc. correct JFFS2_RESERVED_BLOCKS_GCMERGE
-- * condition expression in connection with NR_AVAIL_BLOCKS()
-- * take max dirty size from c->dirty_list
-- * return -ENOSPC when find_gc_block
-- * returns NULL
-- * don't take gcblock from clean_list
-- * when NR_AVAIL_BLOCKS < JFFS2_RESERVED_BLOCKS_CLEAN
-- * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
-- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: gc.c,v 1.52.2.4 2002/05/15 12:51:23 dwmw2 Exp $
- *
- */
-
- #include <linux/kernel.h>
- #include <linux/mtd/mtd.h>
- #include <linux/slab.h>
-+#include <linux/jffs2.h>
-+#include <linux/sched.h>
- #include <linux/interrupt.h>
- #include <linux/pagemap.h>
--#include "crc32.h"
--#include <linux/compiler.h>
- #include "nodelist.h"
-+#include "crc32.h"
-
- static int jffs2_garbage_collect_metadata(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_inode_info *f, struct jffs2_full_dnode *fd);
-+ struct inode *inode, struct jffs2_full_dnode *fd);
- static int jffs2_garbage_collect_dirent(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_inode_info *f, struct jffs2_full_dirent *fd);
-+ struct inode *inode, struct jffs2_full_dirent *fd);
- static int jffs2_garbage_collect_deletion_dirent(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_inode_info *f, struct jffs2_full_dirent *fd);
-+ struct inode *inode, struct jffs2_full_dirent *fd);
- static int jffs2_garbage_collect_hole(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_inode_info *f, struct jffs2_full_dnode *fn,
-- uint32_t start, uint32_t end);
-+ struct inode *indeo, struct jffs2_full_dnode *fn,
-+ __u32 start, __u32 end);
- static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_inode_info *f, struct jffs2_full_dnode *fn,
-- uint32_t start, uint32_t end);
--
--static struct list_head *jffs2_find_effective_block(struct list_head *head, uint32_t desire_size, uint32_t *found_size)
--{
-- struct list_head *this, *ret = NULL;
-- *found_size = 0;
-- list_for_each(this, head) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- if (desire_size <= jeb->dirty_size) {
-- *found_size = jeb->dirty_size;
-- return this->prev;
-- }
-- if (*found_size < jeb->dirty_size) {
-- *found_size = jeb->dirty_size;
-- ret = this;
-- }
-- }
-- return ret ? ret->prev : NULL;
--}
--
--static struct list_head *larger_dirty_block(struct jffs2_sb_info *c, struct list_head *head, int effective_only)
--{
-- uint32_t effective_size, found_size;
-- uint32_t dirty_now, erasing_dirty_now, nonerasing_dirty_now;
-- struct list_head *ret = NULL;
--
-- if(effective_only){
-- dirty_now = c->dirty_size;
-- erasing_dirty_now = c->erasing_dirty_size;
-- nonerasing_dirty_now = ((dirty_now >= erasing_dirty_now) ? (dirty_now - erasing_dirty_now) : 0);
--
-- if(nonerasing_dirty_now >= GC_EFFECTIVE_TOTAL_DIRTY_SIZE_LL(c)){
-- effective_size = GC_EFFECTIVE_BLOCK_DIRTY_SIZE_LL;
-- }else
-- if(nonerasing_dirty_now >= GC_EFFECTIVE_TOTAL_DIRTY_SIZE_L(c)){
-- effective_size = GC_EFFECTIVE_BLOCK_DIRTY_SIZE_L;
-- }else
-- if(nonerasing_dirty_now >= GC_EFFECTIVE_TOTAL_DIRTY_SIZE(c)){
-- effective_size = GC_EFFECTIVE_BLOCK_DIRTY_SIZE;
-- }else{
-- return NULL;
-- }
--
-- ret = jffs2_find_effective_block(head, effective_size, &found_size);
-- if(found_size < GC_EFFECTIVE_BLOCK_DIRTY_SIZE){
-- return NULL;
-- }
-- }else{
-- ret = jffs2_find_effective_block(head, GC_EFFECTIVE_BLOCK_DIRTY_SIZE, &found_size);
-- }
--
-- return ret;
--}
--
--struct list_head *jffs2_get_dirty_block(struct list_head *head)
--{
-- struct list_head *this;
-- list_for_each(this, head) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- if (ISDIRTY(jeb->dirty_size)) {
-- return this->prev;
-- }
-- }
-- return NULL;
--}
-+ struct inode *inode, struct jffs2_full_dnode *fn,
-+ __u32 start, __u32 end);
-
- /* Called with erase_completion_lock held */
--static struct jffs2_eraseblock *jffs2_find_gc_block(struct jffs2_sb_info *c, int effective_only)
-+static struct jffs2_eraseblock *jffs2_find_gc_block(struct jffs2_sb_info *c)
- {
- struct jffs2_eraseblock *ret;
- struct list_head *nextlist = NULL;
-- int n = jiffies % 128;
-- int reserved_blocks = JFFS2_RESERVED_BLOCKS_CLEAN;
-
- /* Pick an eraseblock to garbage collect next. This is where we'll
- put the clever wear-levelling algorithms. Eventually. */
-- /* We possibly want to favour the dirtier blocks more when the
-- number of free blocks is low. */
--#ifdef CONFIG_JFFS2_NODEMERGE
-- if (nextlist == NULL && !list_empty(&c->nodemerge_list) &&
-- NR_AVAIL_BLOCKS(c) >= reserved_blocks) {
-- nextlist = &c->nodemerge_list;
-- c->flags |= JFFS2_SB_FLAG_GCING_A_BLOCK;
-- }
--#ifdef CONFIG_ARCH_SHARP_SL
-- if (nextlist == NULL && !list_empty(&c->very_dirty_list)) {
-- nextlist = &c->very_dirty_list;
-- c->flags |= JFFS2_SB_FLAG_GCING_A_BLOCK;
-- }
--#endif
-- if (nextlist == NULL && !list_empty(&c->nodemerge_list)) {
-- if(NR_AVAIL_BLOCKS(c) >= reserved_blocks) {
-- nextlist = &c->nodemerge_list;
-- }else{
-- nextlist = jffs2_get_dirty_block(&c->nodemerge_list);
-- }
-- if(nextlist != NULL){
-- c->flags |= JFFS2_SB_FLAG_GCING_A_BLOCK;
-- }
-- }
--#endif
-- if (nextlist == NULL && !list_empty(&c->bad_used_list) && c->nr_free_blocks > JFFS2_RESERVED_BLOCKS_GCBAD) {
-+ if (!list_empty(&c->bad_used_list) && c->nr_free_blocks > JFFS2_RESERVED_BLOCKS_GCBAD) {
- D1(printk(KERN_DEBUG "Picking block from bad_used_list to GC next\n"));
- nextlist = &c->bad_used_list;
-- }
-- if (nextlist == NULL && n < 50 && !list_empty(&c->erasable_list)) {
-- /* Note that most of them will have gone directly to be erased.
-- So don't favour the erasable_list _too_ much. */
-- D1(printk(KERN_DEBUG "Picking block from erasable_list to GC next\n"));
-- nextlist = &c->erasable_list;
-- }
--#if !defined(CONFIG_JFFS2_NODEMERGE) || !defined(CONFIG_ARCH_SHARP_SL)
-- if (nextlist == NULL && n < 110 && !list_empty(&c->very_dirty_list)) {
-- /* Most of the time, pick one off the very_dirty list */
-- D1(printk(KERN_DEBUG "Picking block from very_dirty_list to GC next\n"));
-- nextlist = &c->very_dirty_list;
-- }
--#endif
-- if (nextlist == NULL && n < 126 && !list_empty(&c->dirty_list)) {
-+ } else if (jiffies % 100 && !list_empty(&c->dirty_list)) {
-+ /* Most of the time, pick one off the dirty list */
- D1(printk(KERN_DEBUG "Picking block from dirty_list to GC next\n"));
-- nextlist = larger_dirty_block(c, &c->dirty_list, effective_only);
-- }
-- if (!effective_only && nextlist == NULL &&
-- NR_AVAIL_BLOCKS(c) >= reserved_blocks && !list_empty(&c->clean_list)) {
-+ nextlist = &c->dirty_list;
-+ } else if (!list_empty(&c->clean_list)) {
- D1(printk(KERN_DEBUG "Picking block from clean_list to GC next\n"));
- nextlist = &c->clean_list;
-- }
-- if (nextlist == NULL && !list_empty(&c->dirty_list)) {
-+ } else if (!list_empty(&c->dirty_list)) {
- D1(printk(KERN_DEBUG "Picking block from dirty_list to GC next (clean_list was empty)\n"));
-- nextlist = larger_dirty_block(c, &c->dirty_list, effective_only);
-- }
-- if (nextlist == NULL && !list_empty(&c->very_dirty_list)) {
-- D1(printk(KERN_DEBUG "Picking block from very_dirty_list to GC next (clean_list and dirty_list were empty)\n"));
-- nextlist = &c->very_dirty_list;
-- }
-- if (nextlist == NULL && !list_empty(&c->erasable_list)) {
-- D1(printk(KERN_DEBUG "Picking block from erasable_list to GC next (clean_list and {very_,}dirty_list were empty)\n"));
-- nextlist = &c->erasable_list;
-- }
--#ifdef CONFIG_JFFS2_NODEMERGE
-- if (nextlist == NULL && !list_empty(&c->nodemerge_list)) {
-- if(NR_AVAIL_BLOCKS(c) >= reserved_blocks) {
-- nextlist = &c->nodemerge_list;
-- }else{
-- nextlist = jffs2_get_dirty_block(&c->nodemerge_list);
-- }
-- if(nextlist != NULL){
-- c->flags |= JFFS2_SB_FLAG_GCING_A_BLOCK;
-- }
-- }
--#endif
-- if (nextlist == NULL) {
-- /* Eep. All were empty */
--// printk(KERN_NOTICE "jffs2: No clean, dirty _or_ erasable blocks to GC from! Where are they all?\n");
-+
-+ nextlist = &c->dirty_list;
-+ } else {
-+ /* Eep. Both were empty */
-+ printk(KERN_NOTICE "jffs2: No clean _or_ dirty blocks to GC from! Where are they all?\n");
- return NULL;
- }
-
-@@ -230,45 +94,53 @@
- printk(KERN_WARNING "Eep. ret->gc_node for block at 0x%08x is NULL\n", ret->offset);
- BUG();
- }
--
-- /* Have we accidentally picked a clean block with wasted space ? */
-- if (ret->wasted_size) {
-- D1(printk(KERN_DEBUG "Converting wasted_size %08x to dirty_size\n", ret->wasted_size));
-- ret->dirty_size += ret->wasted_size;
-- c->wasted_size -= ret->wasted_size;
-- c->dirty_size += ret->wasted_size;
-- ret->wasted_size = 0;
-- }
--
-- D1(jffs2_dump_block_lists(c));
- return ret;
- }
-
--static inline int jffs2_do_garbage_collect_pass(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
-+/* jffs2_garbage_collect_pass
-+ * Make a single attempt to progress GC. Move one node, and possibly
-+ * start erasing one eraseblock.
-+ */
-+int jffs2_garbage_collect_pass(struct jffs2_sb_info *c)
- {
-+ struct jffs2_eraseblock *jeb;
- struct jffs2_inode_info *f;
- struct jffs2_raw_node_ref *raw;
- struct jffs2_node_frag *frag;
- struct jffs2_full_dnode *fn = NULL;
- struct jffs2_full_dirent *fd;
-- uint32_t start = 0, end = 0, nrfrags = 0;
-- uint32_t inum;
-+ __u32 start = 0, end = 0, nrfrags = 0;
-+ __u32 inum;
- struct inode *inode;
- int ret = 0;
-
-- D1(printk(KERN_DEBUG "GC from block %08x, used_size %08x, dirty_size %08x, free_size %08x\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->free_size));
-- D1(if (c->nextblock)
-- printk(KERN_DEBUG "Nextblock at %08x, used_size %08x, dirty_size %08x, wasted_size %08x, free_size %08x\n", c->nextblock->offset, c->nextblock->used_size, c->nextblock->dirty_size, c->nextblock->wasted_size, c->nextblock->free_size));
-+ if (down_interruptible(&c->alloc_sem))
-+ return -EINTR;
-
-- if (!jeb->used_size) {
-+ spin_lock_bh(&c->erase_completion_lock);
-+
-+ /* First, work out which block we're garbage-collecting */
-+ jeb = c->gcblock;
-+
-+ if (!jeb)
-+ jeb = jffs2_find_gc_block(c);
-+
-+ if (!jeb) {
-+ printk(KERN_NOTICE "jffs2: Couldn't find erase block to garbage collect!\n");
-+ spin_unlock_bh(&c->erase_completion_lock);
- up(&c->alloc_sem);
-- goto eraseit;
-+ return -EIO;
- }
-
-+ D1(printk(KERN_DEBUG "garbage collect from block at phys 0x%08x\n", jeb->offset));
-+
-+ if (!jeb->used_size)
-+ goto eraseit;
-+
- raw = jeb->gc_node;
-
-- while(ref_obsolete(raw)) {
-- D1(printk(KERN_DEBUG "Node at 0x%08x is obsolete... skipping\n", ref_offset(raw)));
-+ while(raw->flash_offset & 1) {
-+ D1(printk(KERN_DEBUG "Node at 0x%08x is obsolete... skipping\n", raw->flash_offset &~3));
- jeb->gc_node = raw = raw->next_phys;
- if (!raw) {
- printk(KERN_WARNING "eep. End of raw list while still supposedly nodes to GC\n");
-@@ -279,14 +151,11 @@
- BUG();
- }
- }
-- D1(printk(KERN_DEBUG "Going to garbage collect node at 0x%08x\n", ref_offset(raw)));
-+ D1(printk(KERN_DEBUG "Going to garbage collect node at 0x%08x\n", raw->flash_offset &~3));
- if (!raw->next_in_ino) {
- /* Inode-less node. Clean marker, snapshot or something like that */
-- /* FIXME: If it's something that needs to be copied, including something
-- we don't grok that has JFFS2_NODETYPE_RWCOMPAT_COPY, we should do so */
- spin_unlock_bh(&c->erase_completion_lock);
- jffs2_mark_node_obsolete(c, raw);
-- up(&c->alloc_sem);
- goto eraseit_lock;
- }
-
-@@ -295,24 +164,23 @@
-
- spin_unlock_bh(&c->erase_completion_lock);
-
-- D1(printk(KERN_DEBUG "jffs2_garbage_collect_pass collecting from block @0x%08x. Node @0x%08x, ino #%u\n", jeb->offset, ref_offset(raw), inum));
-+ D1(printk(KERN_DEBUG "jffs2_garbage_collect_pass collecting from block @0x%08x. Node @0x%08x, ino #%u\n", jeb->offset, raw->flash_offset&~3, inum));
-
- inode = iget(OFNI_BS_2SFFJ(c), inum);
- if (is_bad_inode(inode)) {
- printk(KERN_NOTICE "Eep. read_inode() failed for ino #%u\n", inum);
- /* NB. This will happen again. We need to do something appropriate here. */
-- up(&c->alloc_sem);
- iput(inode);
-+ up(&c->alloc_sem);
- return -EIO;
- }
-
- f = JFFS2_INODE_INFO(inode);
- down(&f->sem);
--
- /* Now we have the lock for this inode. Check that it's still the one at the head
- of the list. */
-
-- if (ref_obsolete(raw)) {
-+ if (raw->flash_offset & 1) {
- D1(printk(KERN_DEBUG "node to be GC'd was obsoleted in the meantime.\n"));
- /* They'll call again */
- goto upnout;
-@@ -320,35 +188,14 @@
- /* OK. Looks safe. And nobody can get us now because we have the semaphore. Move the block */
- if (f->metadata && f->metadata->raw == raw) {
- fn = f->metadata;
-- ret = jffs2_garbage_collect_metadata(c, jeb, f, fn);
-- goto upnout;
-- }
--
-- ret = jffs2_construct_fragtree_nolock_if_missing(c, f);
-- if (ret) {
-- printk(KERN_NOTICE "construct_fragtree failed for ino #%u\n", inum);
-+ ret = jffs2_garbage_collect_metadata(c, jeb, inode, fn);
- goto upnout;
- }
--
-- /* FIXME. Read node and do lookup? */
-- for (frag = frag_first(&f->fragtree); frag; frag = frag_next(frag)) {
-+
-+ for (frag = f->fraglist; frag; frag = frag->next) {
- if (frag->node && frag->node->raw == raw) {
- fn = frag->node;
- end = frag->ofs + frag->size;
--#if 0 /* Temporary debugging sanity checks, till we're ready to _trust_ the REF_PRISTINE flag stuff */
-- if (!nrfrags && ref_flags(fn->raw) == REF_PRISTINE) {
-- if (fn->frags > 1)
-- printk(KERN_WARNING "REF_PRISTINE node at 0x%08x had %d frags. Tell dwmw2\n", ref_offset(raw), fn->frags);
--
-- if (frag->ofs & (PAGE_CACHE_SIZE-1) && frag_prev(frag) && frag_prev(frag)->node)
-- printk(KERN_WARNING "REF_PRISTINE node at 0x%08x had a previous non-hole frag in the same page. Tell dwmw2\n",
-- ref_offset(raw));
--
-- if ((frag->ofs+frag->size) & (PAGE_CACHE_SIZE-1) && frag_next(frag) && frag_next(frag)->node)
-- printk(KERN_WARNING "REF_PRISTINE node at 0x%08x (%08x-%08x) had a following non-hole frag in the same page. Tell dwmw2\n",
-- ref_offset(raw), frag->ofs, frag->ofs+frag->size);
-- }
--#endif
- if (!nrfrags++)
- start = frag->ofs;
- if (nrfrags == frag->node->frags)
-@@ -359,10 +206,10 @@
- /* We found a datanode. Do the GC */
- if((start >> PAGE_CACHE_SHIFT) < ((end-1) >> PAGE_CACHE_SHIFT)) {
- /* It crosses a page boundary. Therefore, it must be a hole. */
-- ret = jffs2_garbage_collect_hole(c, jeb, f, fn, start, end);
-+ ret = jffs2_garbage_collect_hole(c, jeb, inode, fn, start, end);
- } else {
- /* It could still be a hole. But we GC the page this way anyway */
-- ret = jffs2_garbage_collect_dnode(c, jeb, f, fn, start, end);
-+ ret = jffs2_garbage_collect_dnode(c, jeb, inode, fn, start, end);
- }
- goto upnout;
- }
-@@ -374,13 +221,12 @@
- }
-
- if (fd && fd->ino) {
-- ret = jffs2_garbage_collect_dirent(c, jeb, f, fd);
-+ ret = jffs2_garbage_collect_dirent(c, jeb, inode, fd);
- } else if (fd) {
-- ret = jffs2_garbage_collect_deletion_dirent(c, jeb, f, fd);
-+ ret = jffs2_garbage_collect_deletion_dirent(c, jeb, inode, fd);
- } else {
-- printk(KERN_WARNING "Raw node at 0x%08x wasn't in node lists for ino #%u\n",
-- ref_offset(raw), f->inocache->ino);
-- if (ref_obsolete(raw)) {
-+ printk(KERN_WARNING "Raw node at 0x%08x wasn't in node lists for ino #%lu\n", raw->flash_offset&~3, inode->i_ino);
-+ if (raw->flash_offset & 1) {
- printk(KERN_WARNING "But it's obsolete so we don't mind too much\n");
- } else {
- ret = -EIO;
-@@ -388,7 +234,6 @@
- }
- upnout:
- up(&f->sem);
-- up(&c->alloc_sem);
- iput(inode);
-
- eraseit_lock:
-@@ -400,71 +245,35 @@
- D1(printk(KERN_DEBUG "Block at 0x%08x completely obsoleted by GC. Moving to erase_pending_list\n", c->gcblock->offset));
- /* We're GC'ing an empty block? */
- list_add_tail(&c->gcblock->list, &c->erase_pending_list);
-- c->erasing_dirty_size += c->gcblock->dirty_size;
- c->gcblock = NULL;
-- c->flags &= ~JFFS2_SB_FLAG_GCING_A_BLOCK;
- c->nr_erasing_blocks++;
- jffs2_erase_pending_trigger(c);
- }
- spin_unlock_bh(&c->erase_completion_lock);
-+ up(&c->alloc_sem);
-
- return ret;
- }
-
--/* jffs2_garbage_collect_pass
-- * Make a single attempt to progress GC. Move one node, and possibly
-- * start erasing one eraseblock.
-- */
--int jffs2_garbage_collect_pass(struct jffs2_sb_info *c, jffs2_gcmode_t gcmode)
--{
-- struct jffs2_eraseblock *jeb;
-- int ret;
--
-- if (down_interruptible(&c->alloc_sem))
-- return -EINTR;
--
-- spin_lock_bh(&c->erase_completion_lock);
--
-- /* First, work out which block we're garbage-collecting */
-- jeb = c->gcblock;
--
-- if (!jeb)
-- jeb = jffs2_find_gc_block(c, gcmode == GCMODE_EFFECTIVE);
--
-- if (!jeb) {
--// printk(KERN_NOTICE "jffs2: Couldn't find erase block to garbage collect!\n");
-- spin_unlock_bh(&c->erase_completion_lock);
-- up(&c->alloc_sem);
-- return (gcmode == GCMODE_EFFECTIVE) ? 0 : -ENOSPC;
-- }
--
-- ret = jffs2_do_garbage_collect_pass(c, jeb);
-- if (gcmode == GCMODE_EFFECTIVE)
-- return (ret == 0) ? 1 : ret;
-- else
-- return ret;
--}
--
- static int jffs2_garbage_collect_metadata(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_inode_info *f, struct jffs2_full_dnode *fn)
-+ struct inode *inode, struct jffs2_full_dnode *fn)
- {
-+ struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
- struct jffs2_full_dnode *new_fn;
- struct jffs2_raw_inode ri;
- unsigned short dev;
- char *mdata = NULL, mdatalen = 0;
-- uint32_t alloclen, phys_ofs;
-+ __u32 alloclen, phys_ofs;
- int ret;
-
-- if (S_ISBLK(JFFS2_F_I_MODE(f)) ||
-- S_ISCHR(JFFS2_F_I_MODE(f)) ) {
-+ if (S_ISBLK(inode->i_mode) || S_ISCHR(inode->i_mode)) {
- /* For these, we don't actually need to read the old node */
-- /* FIXME: for minor or major > 255. */
-- dev = ((JFFS2_F_I_RDEV_MAJ(f) << 8) |
-- JFFS2_F_I_RDEV_MIN(f));
-+ dev = (MAJOR(to_kdev_t(inode->i_rdev)) << 8) |
-+ MINOR(to_kdev_t(inode->i_rdev));
- mdata = (char *)&dev;
- mdatalen = sizeof(dev);
- D1(printk(KERN_DEBUG "jffs2_garbage_collect_metadata(): Writing %d bytes of kdev_t\n", mdatalen));
-- } else if (S_ISLNK(JFFS2_F_I_MODE(f))) {
-+ } else if (S_ISLNK(inode->i_mode)) {
- mdatalen = fn->size;
- mdata = kmalloc(fn->size, GFP_KERNEL);
- if (!mdata) {
-@@ -489,28 +298,28 @@
- }
-
- memset(&ri, 0, sizeof(ri));
-- ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- ri.nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
-- ri.totlen = cpu_to_je32(sizeof(ri) + mdatalen);
-- ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
--
-- ri.ino = cpu_to_je32(f->inocache->ino);
-- ri.version = cpu_to_je32(++f->highest_version);
-- ri.mode = cpu_to_je32(JFFS2_F_I_MODE(f));
-- ri.uid = cpu_to_je16(JFFS2_F_I_UID(f));
-- ri.gid = cpu_to_je16(JFFS2_F_I_GID(f));
-- ri.isize = cpu_to_je32(JFFS2_F_I_SIZE(f));
-- ri.atime = cpu_to_je32(JFFS2_F_I_ATIME(f));
-- ri.ctime = cpu_to_je32(JFFS2_F_I_CTIME(f));
-- ri.mtime = cpu_to_je32(JFFS2_F_I_MTIME(f));
-- ri.offset = cpu_to_je32(0);
-- ri.csize = cpu_to_je32(mdatalen);
-- ri.dsize = cpu_to_je32(mdatalen);
-+ ri.magic = JFFS2_MAGIC_BITMASK;
-+ ri.nodetype = JFFS2_NODETYPE_INODE;
-+ ri.totlen = sizeof(ri) + mdatalen;
-+ ri.hdr_crc = crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4);
-+
-+ ri.ino = inode->i_ino;
-+ ri.version = ++f->highest_version;
-+ ri.mode = inode->i_mode;
-+ ri.uid = inode->i_uid;
-+ ri.gid = inode->i_gid;
-+ ri.isize = inode->i_size;
-+ ri.atime = inode->i_atime;
-+ ri.ctime = inode->i_ctime;
-+ ri.mtime = inode->i_mtime;
-+ ri.offset = 0;
-+ ri.csize = mdatalen;
-+ ri.dsize = mdatalen;
- ri.compr = JFFS2_COMPR_NONE;
-- ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
-- ri.data_crc = cpu_to_je32(crc32(0, mdata, mdatalen));
-+ ri.node_crc = crc32(0, &ri, sizeof(ri)-8);
-+ ri.data_crc = crc32(0, mdata, mdatalen);
-
-- new_fn = jffs2_write_dnode(c, f, &ri, mdata, mdatalen, phys_ofs, NULL);
-+ new_fn = jffs2_write_dnode(inode, &ri, mdata, mdatalen, phys_ofs, NULL);
-
- if (IS_ERR(new_fn)) {
- printk(KERN_WARNING "Error writing new dnode: %ld\n", PTR_ERR(new_fn));
-@@ -521,32 +330,33 @@
- jffs2_free_full_dnode(fn);
- f->metadata = new_fn;
- out:
-- if (S_ISLNK(JFFS2_F_I_MODE(f)))
-+ if (S_ISLNK(inode->i_mode))
- kfree(mdata);
- return ret;
- }
-
- static int jffs2_garbage_collect_dirent(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_inode_info *f, struct jffs2_full_dirent *fd)
-+ struct inode *inode, struct jffs2_full_dirent *fd)
- {
-+ struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
- struct jffs2_full_dirent *new_fd;
- struct jffs2_raw_dirent rd;
-- uint32_t alloclen, phys_ofs;
-+ __u32 alloclen, phys_ofs;
- int ret;
-
-- rd.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- rd.nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
-+ rd.magic = JFFS2_MAGIC_BITMASK;
-+ rd.nodetype = JFFS2_NODETYPE_DIRENT;
- rd.nsize = strlen(fd->name);
-- rd.totlen = cpu_to_je32(sizeof(rd) + rd.nsize);
-- rd.hdr_crc = cpu_to_je32(crc32(0, &rd, sizeof(struct jffs2_unknown_node)-4));
-+ rd.totlen = sizeof(rd) + rd.nsize;
-+ rd.hdr_crc = crc32(0, &rd, sizeof(struct jffs2_unknown_node)-4);
-
-- rd.pino = cpu_to_je32(f->inocache->ino);
-- rd.version = cpu_to_je32(++f->highest_version);
-- rd.ino = cpu_to_je32(fd->ino);
-- rd.mctime = cpu_to_je32(max(JFFS2_F_I_MTIME(f), JFFS2_F_I_CTIME(f)));
-+ rd.pino = inode->i_ino;
-+ rd.version = ++f->highest_version;
-+ rd.ino = fd->ino;
-+ rd.mctime = max(inode->i_mtime, inode->i_ctime);
- rd.type = fd->type;
-- rd.node_crc = cpu_to_je32(crc32(0, &rd, sizeof(rd)-8));
-- rd.name_crc = cpu_to_je32(crc32(0, fd->name, rd.nsize));
-+ rd.node_crc = crc32(0, &rd, sizeof(rd)-8);
-+ rd.name_crc = crc32(0, fd->name, rd.nsize);
-
- ret = jffs2_reserve_space_gc(c, sizeof(rd)+rd.nsize, &phys_ofs, &alloclen);
- if (ret) {
-@@ -554,7 +364,7 @@
- sizeof(rd)+rd.nsize, ret);
- return ret;
- }
-- new_fd = jffs2_write_dirent(c, f, &rd, fd->name, rd.nsize, phys_ofs, NULL);
-+ new_fd = jffs2_write_dirent(inode, &rd, fd->name, rd.nsize, phys_ofs, NULL);
-
- if (IS_ERR(new_fd)) {
- printk(KERN_WARNING "jffs2_write_dirent in garbage_collect_dirent failed: %ld\n", PTR_ERR(new_fd));
-@@ -565,119 +375,19 @@
- }
-
- static int jffs2_garbage_collect_deletion_dirent(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_inode_info *f, struct jffs2_full_dirent *fd)
-+ struct inode *inode, struct jffs2_full_dirent *fd)
- {
-+ struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
- struct jffs2_full_dirent **fdp = &f->dents;
- int found = 0;
-
-- /* On a medium where we can't actually mark nodes obsolete
-- pernamently, such as NAND flash, we need to work out
-- whether this deletion dirent is still needed to actively
-- delete a 'real' dirent with the same name that's still
-- somewhere else on the flash. */
-- if (!jffs2_can_mark_obsolete(c)) {
-- struct jffs2_raw_dirent rd;
-- struct jffs2_raw_node_ref *raw;
-- int ret;
-- size_t retlen;
-- int name_len = strlen(fd->name);
-- uint32_t name_crc = crc32(0, fd->name, name_len);
-- char *namebuf = NULL;
--
-- /* Prevent the erase code from nicking the obsolete node refs while
-- we're looking at them. I really don't like this extra lock but
-- can't see any alternative. Suggestions on a postcard to... */
-- down(&c->erase_free_sem);
--
-- for (raw = f->inocache->nodes; raw != (void *)f->inocache; raw = raw->next_in_ino) {
-- /* We only care about obsolete ones */
-- if (!(ref_obsolete(raw)))
-- continue;
--
-- /* Doesn't matter if there's one in the same erase block. We're going to
-- delete it too at the same time. */
-- if ((raw->flash_offset & ~(c->sector_size-1)) ==
-- (fd->raw->flash_offset & ~(c->sector_size-1)))
-- continue;
--
-- /* This is an obsolete node belonging to the same directory */
-- ret = jffs2_flash_read(c, ref_offset(raw), sizeof(struct jffs2_unknown_node), &retlen, (char *)&rd);
-- if (ret) {
-- printk(KERN_WARNING "jffs2_g_c_deletion_dirent(): Read error (%d) reading header from obsolete node at %08x\n", ret, ref_offset(raw));
-- /* If we can't read it, we don't need to continue to obsolete it. Continue */
-- continue;
-- }
-- if (retlen != sizeof(struct jffs2_unknown_node)) {
-- printk(KERN_WARNING "jffs2_g_c_deletion_dirent(): Short read (%d not %d) reading header from obsolete node at %08x\n",
-- retlen, sizeof(struct jffs2_unknown_node), ref_offset(raw));
-- continue;
-- }
-- if (je16_to_cpu(rd.nodetype) != JFFS2_NODETYPE_DIRENT ||
-- PAD(je32_to_cpu(rd.totlen)) != PAD(sizeof(rd) + name_len))
-- continue;
--
-- /* OK, it's a dirent node, it's the right length. We have to take a
-- closer look at it... */
-- ret = jffs2_flash_read(c, ref_offset(raw), sizeof(rd), &retlen, (char *)&rd);
-- if (ret) {
-- printk(KERN_WARNING "jffs2_g_c_deletion_dirent(): Read error (%d) reading from obsolete node at %08x\n", ret, ref_offset(raw));
-- /* If we can't read it, we don't need to continune to obsolete it. Continue */
-- continue;
-- }
-- if (retlen != sizeof(rd)) {
-- printk(KERN_WARNING "jffs2_g_c_deletion_dirent(): Short read (%d not %d) reading from obsolete node at %08x\n",
-- retlen, sizeof(rd), ref_offset(raw));
-- continue;
-- }
--
-- /* If the name CRC doesn't match, skip */
-- if (je32_to_cpu(rd.name_crc) != name_crc)
-- continue;
-- /* If the name length doesn't match, or it's another deletion dirent, skip */
-- if (rd.nsize != name_len || !je32_to_cpu(rd.ino))
-- continue;
--
-- /* OK, check the actual name now */
-- if (!namebuf) {
-- namebuf = kmalloc(name_len + 1, GFP_KERNEL);
-- if (!namebuf) {
-- up(&c->erase_free_sem);
-- return -ENOMEM;
-- }
-- }
-- /* We read the extra byte before it so it's a word-aligned read */
-- ret = jffs2_flash_read(c, (ref_offset(raw))+sizeof(rd)-1, name_len+1, &retlen, namebuf);
-- if (ret) {
-- printk(KERN_WARNING "jffs2_g_c_deletion_dirent(): Read error (%d) reading name from obsolete node at %08x\n", ret, ref_offset(raw));
-- /* If we can't read it, we don't need to continune to obsolete it. Continue */
-- continue;
-- }
-- if (retlen != name_len+1) {
-- printk(KERN_WARNING "jffs2_g_c_deletion_dirent(): Short read (%d not %d) reading name from obsolete node at %08x\n",
-- retlen, name_len+1, ref_offset(raw));
-- continue;
-- }
-- if (memcmp(namebuf+1, fd->name, name_len))
-- continue;
--
-- /* OK. The name really does match. There really is still an older node on
-- the flash which our deletion dirent obsoletes. So we have to write out
-- a new deletion dirent to replace it */
--
-- if (namebuf)
-- kfree(namebuf);
--
-- up(&c->erase_free_sem);
-- return jffs2_garbage_collect_dirent(c, jeb, f, fd);
-- }
--
-- up(&c->erase_free_sem);
--
-- if (namebuf)
-- kfree(namebuf);
-- }
--
-- /* No need for it any more. Just mark it obsolete and remove it from the list */
-+ /* FIXME: When we run on NAND flash, we need to work out whether
-+ this deletion dirent is still needed to actively delete a
-+ 'real' dirent with the same name that's still somewhere else
-+ on the flash. For now, we know that we've actually obliterated
-+ all the older dirents when they became obsolete, so we didn't
-+ really need to write the deletion to flash in the first place.
-+ */
- while (*fdp) {
- if ((*fdp) == fd) {
- found = 1;
-@@ -687,7 +397,7 @@
- fdp = &(*fdp)->next;
- }
- if (!found) {
-- printk(KERN_WARNING "Deletion dirent \"%s\" not found in list for ino #%u\n", fd->name, f->inocache->ino);
-+ printk(KERN_WARNING "Deletion dirent \"%s\" not found in list for ino #%lu\n", fd->name, inode->i_ino);
- }
- jffs2_mark_node_obsolete(c, fd->raw);
- jffs2_free_full_dirent(fd);
-@@ -695,81 +405,79 @@
- }
-
- static int jffs2_garbage_collect_hole(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_inode_info *f, struct jffs2_full_dnode *fn,
-- uint32_t start, uint32_t end)
-+ struct inode *inode, struct jffs2_full_dnode *fn,
-+ __u32 start, __u32 end)
- {
-+ struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
- struct jffs2_raw_inode ri;
- struct jffs2_node_frag *frag;
- struct jffs2_full_dnode *new_fn;
-- uint32_t alloclen, phys_ofs;
-+ __u32 alloclen, phys_ofs;
- int ret;
-
-- D1(printk(KERN_DEBUG "Writing replacement hole node for ino #%u from offset 0x%x to 0x%x\n",
-- f->inocache->ino, start, end));
-+ D1(printk(KERN_DEBUG "Writing replacement hole node for ino #%lu from offset 0x%x to 0x%x\n",
-+ inode->i_ino, start, end));
-
- memset(&ri, 0, sizeof(ri));
-
- if(fn->frags > 1) {
- size_t readlen;
-- uint32_t crc;
-+ __u32 crc;
- /* It's partially obsoleted by a later write. So we have to
- write it out again with the _same_ version as before */
-- ret = jffs2_flash_read(c, ref_offset(fn->raw), sizeof(ri), &readlen, (char *)&ri);
-+ ret = c->mtd->read(c->mtd, fn->raw->flash_offset & ~3, sizeof(ri), &readlen, (char *)&ri);
- if (readlen != sizeof(ri) || ret) {
-- printk(KERN_WARNING "Node read failed in jffs2_garbage_collect_hole. Ret %d, retlen %d. Data will be lost by writing new hole node\n", ret, readlen);
-+ printk(KERN_WARNING "Node read failed in jffs2_garbage_collect_hole. Ret %d, retlen %d. Data will be lost by writing new hold node\n", ret, readlen);
- goto fill;
- }
-- if (je16_to_cpu(ri.nodetype) != JFFS2_NODETYPE_INODE) {
-+ if (ri.nodetype != JFFS2_NODETYPE_INODE) {
- printk(KERN_WARNING "jffs2_garbage_collect_hole: Node at 0x%08x had node type 0x%04x instead of JFFS2_NODETYPE_INODE(0x%04x)\n",
-- ref_offset(fn->raw),
-- je16_to_cpu(ri.nodetype), JFFS2_NODETYPE_INODE);
-+ fn->raw->flash_offset & ~3, ri.nodetype, JFFS2_NODETYPE_INODE);
- return -EIO;
- }
-- if (je32_to_cpu(ri.totlen) != sizeof(ri)) {
-+ if (ri.totlen != sizeof(ri)) {
- printk(KERN_WARNING "jffs2_garbage_collect_hole: Node at 0x%08x had totlen 0x%x instead of expected 0x%x\n",
-- ref_offset(fn->raw),
-- je32_to_cpu(ri.totlen), sizeof(ri));
-+ fn->raw->flash_offset & ~3, ri.totlen, sizeof(ri));
- return -EIO;
- }
- crc = crc32(0, &ri, sizeof(ri)-8);
-- if (crc != je32_to_cpu(ri.node_crc)) {
-+ if (crc != ri.node_crc) {
- printk(KERN_WARNING "jffs2_garbage_collect_hole: Node at 0x%08x had CRC 0x%08x which doesn't match calculated CRC 0x%08x\n",
-- ref_offset(fn->raw),
-- je32_to_cpu(ri.node_crc), crc);
-+ fn->raw->flash_offset & ~3, ri.node_crc, crc);
- /* FIXME: We could possibly deal with this by writing new holes for each frag */
-- printk(KERN_WARNING "Data in the range 0x%08x to 0x%08x of inode #%u will be lost\n",
-- start, end, f->inocache->ino);
-+ printk(KERN_WARNING "Data in the range 0x%08x to 0x%08x of inode #%lu will be lost\n",
-+ start, end, inode->i_ino);
- goto fill;
- }
- if (ri.compr != JFFS2_COMPR_ZERO) {
-- printk(KERN_WARNING "jffs2_garbage_collect_hole: Node 0x%08x wasn't a hole node!\n", ref_offset(fn->raw));
-- printk(KERN_WARNING "Data in the range 0x%08x to 0x%08x of inode #%u will be lost\n",
-- start, end, f->inocache->ino);
-+ printk(KERN_WARNING "jffs2_garbage_collect_hole: Node 0x%08x wasn't a hole node!\n", fn->raw->flash_offset & ~3);
-+ printk(KERN_WARNING "Data in the range 0x%08x to 0x%08x of inode #%lu will be lost\n",
-+ start, end, inode->i_ino);
- goto fill;
- }
- } else {
- fill:
-- ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- ri.nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
-- ri.totlen = cpu_to_je32(sizeof(ri));
-- ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
--
-- ri.ino = cpu_to_je32(f->inocache->ino);
-- ri.version = cpu_to_je32(++f->highest_version);
-- ri.offset = cpu_to_je32(start);
-- ri.dsize = cpu_to_je32(end - start);
-- ri.csize = cpu_to_je32(0);
-+ ri.magic = JFFS2_MAGIC_BITMASK;
-+ ri.nodetype = JFFS2_NODETYPE_INODE;
-+ ri.totlen = sizeof(ri);
-+ ri.hdr_crc = crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4);
-+
-+ ri.ino = inode->i_ino;
-+ ri.version = ++f->highest_version;
-+ ri.offset = start;
-+ ri.dsize = end - start;
-+ ri.csize = 0;
- ri.compr = JFFS2_COMPR_ZERO;
- }
-- ri.mode = cpu_to_je32(JFFS2_F_I_MODE(f));
-- ri.uid = cpu_to_je16(JFFS2_F_I_UID(f));
-- ri.gid = cpu_to_je16(JFFS2_F_I_GID(f));
-- ri.isize = cpu_to_je32(JFFS2_F_I_SIZE(f));
-- ri.atime = cpu_to_je32(JFFS2_F_I_ATIME(f));
-- ri.ctime = cpu_to_je32(JFFS2_F_I_CTIME(f));
-- ri.mtime = cpu_to_je32(JFFS2_F_I_MTIME(f));
-- ri.data_crc = cpu_to_je32(0);
-- ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
-+ ri.mode = inode->i_mode;
-+ ri.uid = inode->i_uid;
-+ ri.gid = inode->i_gid;
-+ ri.isize = inode->i_size;
-+ ri.atime = inode->i_atime;
-+ ri.ctime = inode->i_ctime;
-+ ri.mtime = inode->i_mtime;
-+ ri.data_crc = 0;
-+ ri.node_crc = crc32(0, &ri, sizeof(ri)-8);
-
- ret = jffs2_reserve_space_gc(c, sizeof(ri), &phys_ofs, &alloclen);
- if (ret) {
-@@ -777,13 +485,13 @@
- sizeof(ri), ret);
- return ret;
- }
-- new_fn = jffs2_write_dnode(c, f, &ri, NULL, 0, phys_ofs, NULL);
-+ new_fn = jffs2_write_dnode(inode, &ri, NULL, 0, phys_ofs, NULL);
-
- if (IS_ERR(new_fn)) {
- printk(KERN_WARNING "Error writing new hole node: %ld\n", PTR_ERR(new_fn));
- return PTR_ERR(new_fn);
- }
-- if (je32_to_cpu(ri.version) == f->highest_version) {
-+ if (ri.version == f->highest_version) {
- jffs2_add_full_dnode_to_inode(c, f, new_fn);
- if (f->metadata) {
- jffs2_mark_node_obsolete(c, f->metadata->raw);
-@@ -799,14 +507,12 @@
- * number as before. (Except in case of error -- see 'goto fill;'
- * above.)
- */
-- D1(if(unlikely(fn->frags <= 1)) {
-+ D1(if(fn->frags <= 1) {
- printk(KERN_WARNING "jffs2_garbage_collect_hole: Replacing fn with %d frag(s) but new ver %d != highest_version %d of ino #%d\n",
-- fn->frags, je32_to_cpu(ri.version), f->highest_version,
-- je32_to_cpu(ri.ino));
-+ fn->frags, ri.version, f->highest_version, ri.ino);
- });
-
-- for (frag = jffs2_lookup_node_frag(&f->fragtree, fn->ofs);
-- frag; frag = frag_next(frag)) {
-+ for (frag = f->fraglist; frag; frag = frag->next) {
- if (frag->ofs > fn->size + fn->ofs)
- break;
- if (frag->node == fn) {
-@@ -831,26 +537,27 @@
- }
-
- static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_inode_info *f, struct jffs2_full_dnode *fn,
-- uint32_t start, uint32_t end)
-+ struct inode *inode, struct jffs2_full_dnode *fn,
-+ __u32 start, __u32 end)
- {
-+ struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
- struct jffs2_full_dnode *new_fn;
- struct jffs2_raw_inode ri;
-- uint32_t alloclen, phys_ofs, offset, orig_end;
-+ __u32 alloclen, phys_ofs, offset, orig_end;
- int ret = 0;
- unsigned char *comprbuf = NULL, *writebuf;
- struct page *pg;
- unsigned char *pg_ptr;
-- int reserved_blocks_root = capable(CAP_SYS_ADMIN) ? 0 : JFFS2_RESERVED_BLOCKS_ROOT;
-- /* FIXME: */ struct inode *inode = OFNI_EDONI_2SFFJ(f);
-+
-
- memset(&ri, 0, sizeof(ri));
-
-- D1(printk(KERN_DEBUG "Writing replacement dnode for ino #%u from offset 0x%x to 0x%x\n",
-- f->inocache->ino, start, end));
-+ D1(printk(KERN_DEBUG "Writing replacement dnode for ino #%lu from offset 0x%x to 0x%x\n",
-+ inode->i_ino, start, end));
-
- orig_end = end;
-
-+
- /* If we're looking at the last node in the block we're
- garbage-collecting, we allow ourselves to merge as if the
- block was already erasing. We're likely to be GC'ing a
-@@ -862,11 +569,11 @@
- the GC would churn and churn, and just leave dirty blocks in
- it's wake.
- */
-- if(NR_AVAIL_BLOCKS(c) > JFFS2_RESERVED_BLOCKS_GCMERGE + reserved_blocks_root - (fn->raw->next_phys?0:1)) {
-+ if(c->nr_free_blocks + c->nr_erasing_blocks > JFFS2_RESERVED_BLOCKS_GCMERGE - (fn->raw->next_phys?0:1)) {
- /* Shitloads of space */
- /* FIXME: Integrate this properly with GC calculations */
- start &= ~(PAGE_CACHE_SIZE-1);
-- end = min_t(uint32_t, start + PAGE_CACHE_SIZE, JFFS2_F_I_SIZE(f));
-+ end = min_t(__u32, start + PAGE_CACHE_SIZE, inode->i_size);
- D1(printk(KERN_DEBUG "Plenty of free space, so expanding to write from offset 0x%x to 0x%x\n",
- start, end));
- if (end < orig_end) {
-@@ -882,28 +589,19 @@
- * page OK. We'll actually write it out again in commit_write, which is a little
- * suboptimal, but at least we're correct.
- */
-- pg = find_get_page(inode->i_mapping, start >> PAGE_CACHE_SHIFT);
-- if (pg) {
-- if (PageLocked(pg)) {
-- page_cache_release(pg);
-- return 0;
-- }
-- page_cache_release(pg);
-- }
-- pg = read_cache_page(inode->i_mapping, start >> PAGE_CACHE_SHIFT, (void *)jffs2_do_readpage_nolock, inode);
-+ pg = read_cache_page(inode->i_mapping, start >> PAGE_CACHE_SHIFT, (void *)jffs2_do_readpage_unlock, inode);
-
- if (IS_ERR(pg)) {
- printk(KERN_WARNING "read_cache_page() returned error: %ld\n", PTR_ERR(pg));
- return PTR_ERR(pg);
- }
-- LockPage(pg);
- pg_ptr = (char *)kmap(pg);
- comprbuf = kmalloc(end - start, GFP_KERNEL);
-
- offset = start;
- while(offset < orig_end) {
-- uint32_t datalen;
-- uint32_t cdatalen;
-+ __u32 datalen;
-+ __u32 cdatalen;
- char comprtype = JFFS2_COMPR_NONE;
-
- ret = jffs2_reserve_space_gc(c, sizeof(ri) + JFFS2_MIN_DATA_LEN, &phys_ofs, &alloclen);
-@@ -926,28 +624,28 @@
- } else {
- datalen = cdatalen;
- }
-- ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- ri.nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
-- ri.totlen = cpu_to_je32(sizeof(ri) + cdatalen);
-- ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
--
-- ri.ino = cpu_to_je32(f->inocache->ino);
-- ri.version = cpu_to_je32(++f->highest_version);
-- ri.mode = cpu_to_je32(JFFS2_F_I_MODE(f));
-- ri.uid = cpu_to_je16(JFFS2_F_I_UID(f));
-- ri.gid = cpu_to_je16(JFFS2_F_I_GID(f));
-- ri.isize = cpu_to_je32(JFFS2_F_I_SIZE(f));
-- ri.atime = cpu_to_je32(JFFS2_F_I_ATIME(f));
-- ri.ctime = cpu_to_je32(JFFS2_F_I_CTIME(f));
-- ri.mtime = cpu_to_je32(JFFS2_F_I_MTIME(f));
-- ri.offset = cpu_to_je32(offset);
-- ri.csize = cpu_to_je32(cdatalen);
-- ri.dsize = cpu_to_je32(datalen);
-+ ri.magic = JFFS2_MAGIC_BITMASK;
-+ ri.nodetype = JFFS2_NODETYPE_INODE;
-+ ri.totlen = sizeof(ri) + cdatalen;
-+ ri.hdr_crc = crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4);
-+
-+ ri.ino = inode->i_ino;
-+ ri.version = ++f->highest_version;
-+ ri.mode = inode->i_mode;
-+ ri.uid = inode->i_uid;
-+ ri.gid = inode->i_gid;
-+ ri.isize = inode->i_size;
-+ ri.atime = inode->i_atime;
-+ ri.ctime = inode->i_ctime;
-+ ri.mtime = inode->i_mtime;
-+ ri.offset = offset;
-+ ri.csize = cdatalen;
-+ ri.dsize = datalen;
- ri.compr = comprtype;
-- ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
-- ri.data_crc = cpu_to_je32(crc32(0, writebuf, cdatalen));
-+ ri.node_crc = crc32(0, &ri, sizeof(ri)-8);
-+ ri.data_crc = crc32(0, writebuf, cdatalen);
-
-- new_fn = jffs2_write_dnode(c, f, &ri, writebuf, cdatalen, phys_ofs, NULL);
-+ new_fn = jffs2_write_dnode(inode, &ri, writebuf, cdatalen, phys_ofs, NULL);
-
- if (IS_ERR(new_fn)) {
- printk(KERN_WARNING "Error writing new dnode: %ld\n", PTR_ERR(new_fn));
-@@ -965,15 +663,9 @@
- if (comprbuf) kfree(comprbuf);
-
- kunmap(pg);
-- unlock_page(pg);
- /* XXX: Does the page get freed automatically? */
- /* AAA: Judging by the unmount getting stuck in __wait_on_page, nope. */
- page_cache_release(pg);
- return ret;
- }
-
--/*
-- * Local variables:
-- * c-basic-offset: 8
-- * End:
-- */
-diff -Nur linux/fs/jffs2/ioctl.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ioctl.c
---- linux/fs/jffs2/ioctl.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/ioctl.c 2003-06-23 01:47:04.000000000 +0700
-@@ -5,9 +5,33 @@
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: ioctl.c,v 1.6 2002/05/20 14:56:38 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: ioctl.c,v 1.5 2001/03/15 15:38:24 dwmw2 Exp $
- *
- */
-
-diff -Nur linux/fs/jffs2/jffs2_proc.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/jffs2_proc.c
---- linux/fs/jffs2/jffs2_proc.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/jffs2_proc.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,837 +0,0 @@
--/*
-- * fs/jffs2/jffs2_proc.c
-- *
-- * Copyright (C) 2002 Lineo Japan, Inc.
-- *
-- * May be copied or modified under the terms of the GNU General Public
-- * License. See linux/COPYING for more information.
-- *
-- * $Id: jffs2_proc.c,v 1.13 2002/12/19 02:42:45 yamade Exp $
-- *
-- * Derived from fs/jffs/jffs_proc.c
-- *
-- * JFFS -- Journaling Flash File System, Linux implementation.
-- *
-- * Copyright (C) 2000 Axis Communications AB.
-- *
-- * Created by Simon Kagstrom <simonk@axis.com>.
-- *
-- * This 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.
-- *
-- * Overview:
-- * This file defines JFFS partition entries in the proc file system.
-- *
-- * TODO:
-- * Create some more proc files for different kinds of info, i.e. statistics
-- * about written and read bytes, number of calls to different routines,
-- * reports about failures.
-- *
-- * ChangLog:
-- * 05-Dec-2002 SHARP add proc-files
-- */
--
--#include <linux/errno.h>
--#include <linux/fs.h>
--#include <linux/jffs.h>
--#include <linux/slab.h>
--#include <linux/proc_fs.h>
--#include <linux/sched.h>
--#include <linux/types.h>
--#include <linux/ctype.h>
--#include "jffs2_proc.h"
--#include "nodelist.h"
--#include "nodemerge.h"
--
--/*
-- * Structure for a JFFS2 partition in the system
-- */
--struct jffs2_partition_dir {
-- struct jffs2_sb_info *c;
-- struct proc_dir_entry *part_root;
-- struct proc_dir_entry *part_partition_size;
-- struct proc_dir_entry *part_sector_size;
-- struct proc_dir_entry *part_used_size;
-- struct proc_dir_entry *part_dirty_size;
-- struct proc_dir_entry *part_free_size;
-- struct proc_dir_entry *part_wasted_size;
-- struct proc_dir_entry *part_erasing_size;
-- struct proc_dir_entry *part_free_blocks;
-- struct proc_dir_entry *part_erasing_blocks;
-- struct proc_dir_entry *part_gcing_blocks;
-- struct proc_dir_entry *part_bad_blocks;
-- struct proc_dir_entry *part_cont_gc_count;
-- struct proc_dir_entry *part_reserved_blocks_write;
-- struct proc_dir_entry *part_reserved_blocks_root;
-- struct proc_dir_entry *part_reserved_blocks_bad;
-- struct proc_dir_entry *part_reliable_free_size;
-- struct proc_dir_entry *part_reliable_free_blocks;
-- struct proc_dir_entry *part_nonerasing_dirty_size;
-- struct proc_dir_entry *part_effective_gc_count;
-- struct proc_dir_entry *part_dump_block_lists;
-- struct proc_dir_entry *part_nodemerge;
-- struct jffs2_partition_dir *next;
--};
--
--/*
-- * Structure for top-level entry in '/proc/fs' directory
-- */
--struct proc_dir_entry *jffs2_proc_root;
--
--/*
-- * Linked list of 'jffs2_partition_dirs' to help us track
-- * the mounted JFFS2 partitions in the system
-- */
--static struct jffs2_partition_dir *jffs2_part_dirs = 0;
--
--/*
-- * Read functions for entries
-- */
--static int jffs2_proc_partition_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_sector_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_used_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_dirty_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_free_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_wasted_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_erasing_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_free_blocks_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_erasing_blocks_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_gcing_blocks_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_bad_blocks_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_cont_gc_count_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_reserved_blocks_write_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_reserved_blocks_root_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_reserved_blocks_bad_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_reliable_free_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_reliable_free_blocks_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_nonerasing_dirty_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_effective_gc_count_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_dump_block_lists_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data);
--static int jffs2_proc_nodemerge_write(struct file *file, const char *buffer,
-- unsigned long count, void *data);
--
--
--/*
-- * Register a JFFS2 partition directory (called upon mount)
-- */
--int
--jffs2_register_jffs2_proc_dir(kdev_t dev, struct jffs2_sb_info *c)
--{
-- struct jffs2_partition_dir *part_dir;
-- struct proc_dir_entry *part_root = 0;
-- struct proc_dir_entry *part_partition_size = 0;
-- struct proc_dir_entry *part_sector_size = 0;
-- struct proc_dir_entry *part_used_size = 0;
-- struct proc_dir_entry *part_dirty_size = 0;
-- struct proc_dir_entry *part_free_size = 0;
-- struct proc_dir_entry *part_wasted_size = 0;
-- struct proc_dir_entry *part_erasing_size = 0;
-- struct proc_dir_entry *part_free_blocks = 0;
-- struct proc_dir_entry *part_erasing_blocks = 0;
-- struct proc_dir_entry *part_gcing_blocks = 0;
-- struct proc_dir_entry *part_bad_blocks = 0;
-- struct proc_dir_entry *part_cont_gc_count = 0;
-- struct proc_dir_entry *part_reserved_blocks_write = 0;
-- struct proc_dir_entry *part_reserved_blocks_root = 0;
-- struct proc_dir_entry *part_reserved_blocks_bad = 0;
-- struct proc_dir_entry *part_reliable_free_size = 0;
-- struct proc_dir_entry *part_reliable_free_blocks = 0;
-- struct proc_dir_entry *part_nonerasing_dirty_size = 0;
-- struct proc_dir_entry *part_effective_gc_count = 0;
-- struct proc_dir_entry *part_dump_block_lists = 0;
-- struct proc_dir_entry *part_nodemerge = 0;
--
-- /* Allocate structure for local JFFS2 partition table */
-- if (!(part_dir = (struct jffs2_partition_dir *)
-- kmalloc (sizeof (struct jffs2_partition_dir), GFP_KERNEL))) {
-- return -ENOMEM;
-- }
--
-- /* Create entry for this partition */
-- part_root = proc_mkdir(kdevname(dev), jffs2_proc_root);
-- if (! part_root) {
-- kfree(part_dir);
-- return -ENOMEM;
-- }
--
-- /* Create entry for 'info' file */
-- part_partition_size = create_proc_read_entry("partition_size", 0, part_root,
-- jffs2_proc_partition_size_read, c);
-- part_sector_size = create_proc_read_entry("sector_size", 0, part_root,
-- jffs2_proc_sector_size_read, c);
-- part_used_size = create_proc_read_entry("used_size", 0, part_root,
-- jffs2_proc_used_size_read, c);
-- part_dirty_size = create_proc_read_entry("dirty_size", 0, part_root,
-- jffs2_proc_dirty_size_read, c);
-- part_free_size = create_proc_read_entry("free_size", 0, part_root,
-- jffs2_proc_free_size_read, c);
-- part_wasted_size = create_proc_read_entry("wasted_size", 0, part_root,
-- jffs2_proc_wasted_size_read, c);
-- part_erasing_size = create_proc_read_entry("erasing_size", 0, part_root,
-- jffs2_proc_erasing_size_read, c);
-- part_free_blocks = create_proc_read_entry("free_blocks", 0, part_root,
-- jffs2_proc_free_blocks_read, c);
-- part_erasing_blocks = create_proc_read_entry("erasing_blocks", 0, part_root,
-- jffs2_proc_erasing_blocks_read, c);
-- part_gcing_blocks = create_proc_read_entry("gcing_blocks", 0, part_root,
-- jffs2_proc_gcing_blocks_read, c);
-- part_bad_blocks = create_proc_read_entry("bad_blocks", 0, part_root,
-- jffs2_proc_bad_blocks_read, c);
-- part_cont_gc_count = create_proc_read_entry("cont_gc_count", 0, part_root,
-- jffs2_proc_cont_gc_count_read, c);
-- part_reserved_blocks_write = create_proc_read_entry("reserved_blocks_write", 0, part_root,
-- jffs2_proc_reserved_blocks_write_read, c);
-- part_reserved_blocks_root = create_proc_read_entry("reserved_blocks_root", 0, part_root,
-- jffs2_proc_reserved_blocks_root_read, c);
-- part_reserved_blocks_bad = create_proc_read_entry("reserved_blocks_bad", 0, part_root,
-- jffs2_proc_reserved_blocks_bad_read, c);
-- part_reliable_free_size = create_proc_read_entry("reliable_free_size", 0, part_root,
-- jffs2_proc_reliable_free_size_read, c);
-- part_reliable_free_blocks = create_proc_read_entry("reliable_free_blocks", 0, part_root,
-- jffs2_proc_reliable_free_blocks_read, c);
-- part_nonerasing_dirty_size = create_proc_read_entry("nonerasing_dirty_size", 0, part_root,
-- jffs2_proc_nonerasing_dirty_size_read, c);
-- part_effective_gc_count = create_proc_read_entry("effective_gc_count", 0, part_root,
-- jffs2_proc_effective_gc_count_read, c);
-- part_dump_block_lists = create_proc_read_entry(".dump_block_lists", 0, part_root,
-- jffs2_proc_dump_block_lists_read, c);
-- part_nodemerge = create_proc_entry(".nodemerge", 0222, part_root);
-- if (! part_partition_size || ! part_sector_size || ! part_used_size ||
-- ! part_dirty_size || ! part_free_size || ! part_wasted_size ||
-- ! part_erasing_size || ! part_free_blocks ||
-- ! part_erasing_blocks || ! part_gcing_blocks ||
-- ! part_bad_blocks || ! part_cont_gc_count || ! part_reserved_blocks_write ||
-- ! part_reserved_blocks_root || ! part_reserved_blocks_bad ||
-- ! part_reliable_free_size || ! part_reliable_free_blocks ||
-- ! part_nonerasing_dirty_size || ! part_effective_gc_count ||
-- ! part_dump_block_lists || ! part_nodemerge) {
-- if (part_partition_size)
-- remove_proc_entry(part_partition_size->name, part_root);
-- if (part_sector_size)
-- remove_proc_entry(part_sector_size->name, part_root);
-- if (part_used_size)
-- remove_proc_entry(part_used_size->name, part_root);
-- if (part_dirty_size)
-- remove_proc_entry(part_dirty_size->name, part_root);
-- if (part_free_size)
-- remove_proc_entry(part_free_size->name, part_root);
-- if (part_wasted_size)
-- remove_proc_entry(part_wasted_size->name, part_root);
-- if (part_erasing_size)
-- remove_proc_entry(part_erasing_size->name, part_root);
-- if (part_free_blocks)
-- remove_proc_entry(part_free_blocks->name, part_root);
-- if (part_erasing_blocks)
-- remove_proc_entry(part_erasing_blocks->name, part_root);
-- if (part_gcing_blocks)
-- remove_proc_entry(part_gcing_blocks->name, part_root);
-- if (part_bad_blocks)
-- remove_proc_entry(part_bad_blocks->name, part_root);
-- if (part_cont_gc_count)
-- remove_proc_entry(part_cont_gc_count->name, part_root);
-- if (part_reserved_blocks_write)
-- remove_proc_entry(part_reserved_blocks_write->name, part_root);
-- if (part_reserved_blocks_root)
-- remove_proc_entry(part_reserved_blocks_root->name, part_root);
-- if (part_reserved_blocks_bad)
-- remove_proc_entry(part_reserved_blocks_bad->name, part_root);
-- if (part_reliable_free_size)
-- remove_proc_entry(part_reliable_free_size->name, part_root);
-- if (part_reliable_free_blocks)
-- remove_proc_entry(part_reliable_free_blocks->name, part_root);
-- if (part_nonerasing_dirty_size)
-- remove_proc_entry(part_nonerasing_dirty_size->name, part_root);
-- if (part_effective_gc_count)
-- remove_proc_entry(part_effective_gc_count->name, part_root);
-- if (part_dump_block_lists)
-- remove_proc_entry(part_dump_block_lists->name, part_root);
-- if (part_nodemerge)
-- remove_proc_entry(part_nodemerge->name, part_root);
-- kfree(part_dir);
-- return -ENOMEM;
-- }
-- part_nodemerge->write_proc = jffs2_proc_nodemerge_write;
-- part_nodemerge->data = c;
--
-- /* Fill in structure for table and insert in the list */
-- part_dir->c = c;
-- part_dir->part_root = part_root;
-- part_dir->part_partition_size = part_partition_size;
-- part_dir->part_sector_size = part_sector_size;
-- part_dir->part_used_size = part_used_size;
-- part_dir->part_dirty_size = part_dirty_size;
-- part_dir->part_free_size = part_free_size;
-- part_dir->part_wasted_size = part_wasted_size;
-- part_dir->part_erasing_size = part_erasing_size;
-- part_dir->part_free_blocks = part_free_blocks;
-- part_dir->part_erasing_blocks = part_erasing_blocks;
-- part_dir->part_gcing_blocks = part_gcing_blocks;
-- part_dir->part_bad_blocks = part_bad_blocks;
-- part_dir->part_cont_gc_count = part_cont_gc_count;
-- part_dir->part_reserved_blocks_write = part_reserved_blocks_write;
-- part_dir->part_reserved_blocks_root = part_reserved_blocks_root;
-- part_dir->part_reserved_blocks_bad = part_reserved_blocks_bad;
-- part_dir->part_reliable_free_size = part_reliable_free_size;
-- part_dir->part_reliable_free_blocks = part_reliable_free_blocks;
-- part_dir->part_nonerasing_dirty_size = part_nonerasing_dirty_size;
-- part_dir->part_effective_gc_count = part_effective_gc_count;
-- part_dir->part_dump_block_lists = part_dump_block_lists;
-- part_dir->part_nodemerge = part_nodemerge;
-- part_dir->next = jffs2_part_dirs;
-- jffs2_part_dirs = part_dir;
--
-- /* Return happy */
-- return 0;
--}
--
--
--/*
-- * Unregister a JFFS2 partition directory (called at umount)
-- */
--int
--jffs2_unregister_jffs2_proc_dir(struct jffs2_sb_info *c)
--{
-- struct jffs2_partition_dir *part_dir = jffs2_part_dirs;
-- struct jffs2_partition_dir *prev_part_dir = 0;
--
-- while (part_dir) {
-- if (part_dir->c == c) {
-- struct proc_dir_entry *part_root = part_dir->part_root;
--
-- /* Remove entries for partition */
-- remove_proc_entry(part_dir->part_partition_size->name, part_root);
-- remove_proc_entry(part_dir->part_sector_size->name, part_root);
-- remove_proc_entry(part_dir->part_used_size->name, part_root);
-- remove_proc_entry(part_dir->part_dirty_size->name, part_root);
-- remove_proc_entry(part_dir->part_free_size->name, part_root);
-- remove_proc_entry(part_dir->part_wasted_size->name, part_root);
-- remove_proc_entry(part_dir->part_erasing_size->name, part_root);
-- remove_proc_entry(part_dir->part_free_blocks->name, part_root);
-- remove_proc_entry(part_dir->part_erasing_blocks->name, part_root);
-- remove_proc_entry(part_dir->part_gcing_blocks->name, part_root);
-- remove_proc_entry(part_dir->part_bad_blocks->name, part_root);
-- remove_proc_entry(part_dir->part_cont_gc_count->name, part_root);
-- remove_proc_entry(part_dir->part_reserved_blocks_write->name, part_root);
-- remove_proc_entry(part_dir->part_reserved_blocks_root->name, part_root);
-- remove_proc_entry(part_dir->part_reserved_blocks_bad->name, part_root);
-- remove_proc_entry(part_dir->part_reliable_free_size->name, part_root);
-- remove_proc_entry(part_dir->part_reliable_free_blocks->name, part_root);
-- remove_proc_entry(part_dir->part_nonerasing_dirty_size->name, part_root);
-- remove_proc_entry(part_dir->part_effective_gc_count->name, part_root);
-- remove_proc_entry(part_dir->part_dump_block_lists->name, part_root);
-- remove_proc_entry(part_dir->part_nodemerge->name, part_root);
-- remove_proc_entry(part_root->name, jffs2_proc_root);
--
-- /* Remove entry from list */
-- if (prev_part_dir)
-- prev_part_dir->next = part_dir->next;
-- else
-- jffs2_part_dirs = part_dir->next;
--
-- /* Free memory for entry */
-- kfree(part_dir);
--
-- /* Return happy */
-- return 0;
-- }
--
-- /* Move to next entry */
-- prev_part_dir = part_dir;
-- part_dir = part_dir->next;
-- }
--
-- /* Return unhappy */
-- return -1;
--}
--
--
--static int
--jffs2_proc_partition_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->flash_size);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_sector_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->sector_size);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_used_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->used_size);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_dirty_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->dirty_size);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_free_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->free_size);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_wasted_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->wasted_size);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_erasing_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->erasing_size);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_free_blocks_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->nr_free_blocks);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_erasing_blocks_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->nr_erasing_blocks);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_gcing_blocks_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len;
-- int gcing_blocks, very_dirty_blocks, nodemerge_dirty_blocks;
--
-- if (down_interruptible(&c->alloc_sem)){
-- len = sprintf(page, "%u\n", 0);
-- *eof = 1;
-- return len;
-- }
-- spin_lock_bh(&c->erase_completion_lock);
--
-- if (list_empty(&c->very_dirty_list)) {
-- very_dirty_blocks = 0;
-- } else {
-- struct list_head *this;
-- int numblocks = 0;
--
-- list_for_each(this, &c->very_dirty_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- numblocks ++;
-- }
-- very_dirty_blocks = numblocks;
-- }
--
-- if (list_empty(&c->nodemerge_list)) {
-- nodemerge_dirty_blocks = 0;
-- } else {
-- struct list_head *this;
-- int numblocks = 0;
--
-- list_for_each(this, &c->nodemerge_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- if (ISDIRTY(jeb->dirty_size)) {
-- numblocks ++;
-- }
-- }
-- nodemerge_dirty_blocks = numblocks;
-- }
--
-- spin_unlock_bh(&c->erase_completion_lock);
-- up(&c->alloc_sem);
--
-- gcing_blocks = very_dirty_blocks + nodemerge_dirty_blocks;
--
-- len = sprintf(page, "%u\n", gcing_blocks);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_bad_blocks_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->nr_bad_blocks);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_cont_gc_count_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->cont_gc_count);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_reserved_blocks_write_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- int len = sprintf(page, "%d\n", JFFS2_RESERVED_BLOCKS_WRITE);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_reserved_blocks_root_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- int len = sprintf(page, "%d\n", JFFS2_RESERVED_BLOCKS_ROOT);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_reserved_blocks_bad_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- int len = sprintf(page, "%d\n", JFFS2_RESERVED_BLOCKS_BAD);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_reliable_free_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len;
-- unsigned long avail;
-- uint32_t next_free;
-- int32_t avail_blocks;
-- int reserved_blocks = JFFS2_RESERVED_BLOCKS_WRITE + JFFS2_RESERVED_BLOCKS_ROOT;
--
-- spin_lock_bh(&c->erase_completion_lock);
--
-- avail_blocks = NR_AVAIL_BLOCKS(c);
-- next_free = (c->nextblock) ? (c->nextblock->free_size) : 0;
--
-- if (avail_blocks >= reserved_blocks){
-- avail = avail_blocks * c->sector_size + next_free - reserved_blocks * c->sector_size;
-- }else{
-- avail = 0;
-- }
--
-- spin_unlock_bh(&c->erase_completion_lock);
--
-- len = sprintf(page, "%lu\n", avail);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_reliable_free_blocks_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len;
-- unsigned long avail;
-- int32_t avail_blocks;
-- int reserved_blocks = JFFS2_RESERVED_BLOCKS_WRITE + JFFS2_RESERVED_BLOCKS_ROOT;
--
-- avail_blocks = NR_AVAIL_BLOCKS(c);
-- if (avail_blocks >= reserved_blocks){
-- avail = avail_blocks - reserved_blocks;
-- }else{
-- avail = 0;
-- }
--
-- len = sprintf(page, "%lu\n", avail);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_nonerasing_dirty_size_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len;
-- uint32_t dirty_now, erasing_dirty_now, nonerasing_dirty_now;
--
-- spin_lock_bh(&c->erase_completion_lock);
--
-- dirty_now = c->dirty_size;
-- erasing_dirty_now = c->erasing_dirty_size;
-- if (dirty_now < erasing_dirty_now)
-- erasing_dirty_now = dirty_now;
-- nonerasing_dirty_now = dirty_now - erasing_dirty_now;
--
-- spin_unlock_bh(&c->erase_completion_lock);
--
-- len = sprintf(page, "%lu\n", nonerasing_dirty_now);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_effective_gc_count_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = sprintf(page, "%u\n", c->effective_gc_count);
-- *eof = 1;
-- return len;
--}
--
--
--static int
--jffs2_proc_dump_block_lists_read(char *page, char **start, off_t off,
-- int count, int *eof, void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- int len = 0, tlen;
--
-- if (down_interruptible(&c->alloc_sem)){
-- len = sprintf(page, "down(alloc_sem) failed.\n");
-- *eof = 1;
-- return len;
-- }
-- spin_lock_bh(&c->erase_completion_lock);
--
-- if (list_empty(&c->clean_list)) {
-- tlen = sprintf(page + len, "clean_list: blocks=(0)\n");
-- len += tlen;
-- } else {
-- struct list_head *this;
-- int numblocks = 0;
-- unsigned long dirty = 0;
--
-- list_for_each(this, &c->clean_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- numblocks ++;
-- dirty += jeb->dirty_size;
-- }
-- tlen = sprintf(page + len, "clean_list: blocks=(%d) dirty=(%lu,%lu)\n", numblocks, dirty, dirty / numblocks);
-- len += tlen;
-- }
--
-- if (list_empty(&c->very_dirty_list)) {
-- tlen = sprintf(page + len, "very_dirty_list: blocks=(0)\n");
-- len += tlen;
-- } else {
-- struct list_head *this;
-- int numblocks = 0;
-- unsigned long dirty = 0;
--
-- list_for_each(this, &c->very_dirty_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- numblocks ++;
-- dirty += jeb->dirty_size;
-- }
-- tlen = sprintf(page + len, "very_dirty_list: blocks=(%d) dirty=(%lu,%lu)\n", numblocks, dirty, dirty / numblocks);
-- len += tlen;
-- }
--
-- if (list_empty(&c->dirty_list)) {
-- tlen = sprintf(page + len, "dirty_list: blocks=(0)\n");
-- len += tlen;
-- } else {
-- struct list_head *this;
-- int numblocks0 = 0, numblocks1 = 0, numblocks2 = 0, numblocks3 = 0;
-- unsigned long dirty0 = 0, dirty1 = 0, dirty2 = 0, dirty3 = 0;
--
-- list_for_each(this, &c->dirty_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- if(jeb->dirty_size >= GC_EFFECTIVE_BLOCK_DIRTY_SIZE_LL){
-- numblocks3 ++;
-- dirty3 += jeb->dirty_size;
-- }else if(jeb->dirty_size >= GC_EFFECTIVE_BLOCK_DIRTY_SIZE_L){
-- numblocks2 ++;
-- dirty2 += jeb->dirty_size;
-- }else if(jeb->dirty_size >= GC_EFFECTIVE_BLOCK_DIRTY_SIZE){
-- numblocks1 ++;
-- dirty1 += jeb->dirty_size;
-- }else{
-- numblocks0 ++;
-- dirty0 += jeb->dirty_size;
-- }
-- }
-- tlen = sprintf(page + len, "dirty_list: blocks=(%d) dirty=(%lu,%lu)\n",
-- numblocks0 + numblocks1 + numblocks2 + numblocks3,
-- dirty0 + dirty1 + dirty2 + dirty3,
-- (dirty0 + dirty1 + dirty2 + dirty3) / (numblocks0 + numblocks1 + numblocks2 + numblocks3));
-- len += tlen;
-- tlen = sprintf(page + len, "dirty_list[3]: blocks=(%d) dirty=(%lu,%lu)\n", numblocks3, dirty3,
-- (numblocks3 == 0) ? 0 : (dirty3 / numblocks3));
-- len += tlen;
-- tlen = sprintf(page + len, "dirty_list[2]: blocks=(%d) dirty=(%lu,%lu)\n", numblocks2, dirty2,
-- (numblocks2 == 0) ? 0 : (dirty2 / numblocks2));
-- len += tlen;
-- tlen = sprintf(page + len, "dirty_list[1]: blocks=(%d) dirty=(%lu,%lu)\n", numblocks1, dirty1,
-- (numblocks1 == 0) ? 0 : (dirty1 / numblocks1));
-- len += tlen;
-- tlen = sprintf(page + len, "dirty_list[0]: blocks=(%d) dirty=(%lu,%lu)\n", numblocks0, dirty0,
-- (numblocks0 == 0) ? 0 : (dirty0 / numblocks0));
-- len += tlen;
-- }
--
-- if (list_empty(&c->nodemerge_list)) {
-- tlen = sprintf(page + len, "nodemerge_list: blocks=(0)\n");
-- len += tlen;
-- } else {
-- struct list_head *this;
-- int numblocks = 0;
-- unsigned long dirty = 0;
--
-- list_for_each(this, &c->nodemerge_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- numblocks ++;
-- dirty += jeb->dirty_size;
-- }
-- tlen = sprintf(page + len, "nodemerge_list: blocks=(%d) dirty=(%lu,%lu)\n", numblocks, dirty, dirty / numblocks);
-- len += tlen;
-- }
--
-- spin_unlock_bh(&c->erase_completion_lock);
-- up(&c->alloc_sem);
--
-- *eof = 1;
-- return len;
--}
--
--
--static unsigned long
--atoul(const char* p)
--{
-- unsigned long n = 0;
--
-- while (p && ! isdigit(*p))
-- p++;
-- while (p && isdigit(*p)) {
-- n = n * 10 + *p - '0';
-- p++;
-- }
-- return n;
--}
--
--
--static int
--jffs2_proc_nodemerge_write(struct file *file, const char *buffer, unsigned long count,
-- void *data)
--{
-- extern void jffs2_shrink_inode(struct inode *);
--
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *)data;
-- char str[16];
-- unsigned long ino = 0;
-- unsigned long len = (sizeof str < count) ? sizeof str : count;
-- struct inode *inode;
-- struct jffs2_inode_info *f;
--
-- memset(str, '\0', sizeof str);
-- if (copy_from_user(str, buffer, len))
-- return -EFAULT;
--
-- ino = atoul(str);
-- printk(KERN_DEBUG "nodemerge: start ino=%d\n", ino);
-- if (ino > c->highest_ino)
-- return -EINVAL;
--
-- inode = iget(OFNI_BS_2SFFJ(c), ino);
-- if (is_bad_inode(inode)) {
-- printk(KERN_NOTICE "iget() failed\n");
-- iput(inode);
-- return -EIO;
-- }
--
-- f = JFFS2_INODE_INFO(inode);
-- if (down_interruptible(&f->sem)) {
-- printk(KERN_NOTICE "nodemerge: down_interruptible failed\n");
-- iput(inode);
-- return -ERESTARTSYS;
-- }
-- jffs2_construct_fragtree_nolock_if_missing(c, f);
-- jffs2_merge_nodes(c, f, inode->i_size, JFFS2_FRAGS_NR_NODES_THRESHOLD_FORCE);
-- up(&f->sem);
--
-- iput(inode);
--
-- printk(KERN_DEBUG "nodemerge: end ino=%d\n", ino);
-- return count;
--}
-diff -Nur linux/fs/jffs2/jffs2_proc.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/jffs2_proc.h
---- linux/fs/jffs2/jffs2_proc.h 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/jffs2_proc.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,37 +0,0 @@
--/*
-- * fs/jffs2/jffs2_proc.h
-- *
-- * Copyright (C) 2002 Lineo Japan, Inc.
-- *
-- * May be copied or modified under the terms of the GNU General Public
-- * License. See linux/COPYING for more information.
-- *
-- * $Id: jffs2_proc.h,v 1.1.1.1 2002/12/19 01:52:04 yamade Exp $
-- *
-- * Derived from fs/jffs/jffs_proc.h
-- *
-- * JFFS -- Journaling Flash File System, Linux implementation.
-- *
-- * Copyright (C) 2000 Axis Communications AB.
-- *
-- * Created by Simon Kagstrom <simonk@axis.com>.
-- *
-- * This 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.
-- */
--
--/* jffs2_proc.h defines a structure for inclusion in the proc-file system. */
--#ifndef __LINUX_JFFS2_PROC_H__
--#define __LINUX_JFFS2_PROC_H__
--
--#include <linux/proc_fs.h>
--
--/* The proc_dir_entry for jffs2 (defined in jffs2_proc.c). */
--extern struct proc_dir_entry *jffs2_proc_root;
--
--int jffs2_register_jffs2_proc_dir(kdev_t dev, struct jffs2_sb_info *c);
--int jffs2_unregister_jffs2_proc_dir(struct jffs2_sb_info *c);
--
--#endif /* __LINUX_JFFS2_PROC_H__ */
-diff -Nur linux/fs/jffs2/malloc.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/malloc.c
---- linux/fs/jffs2/malloc.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/malloc.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,13 +1,37 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: malloc.c,v 1.22 2002/05/20 14:56:38 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: malloc.c,v 1.16 2001/03/15 15:38:24 dwmw2 Exp $
- *
- */
-
-@@ -33,47 +57,57 @@
- static kmem_cache_t *node_frag_slab;
- static kmem_cache_t *inode_cache_slab;
-
-+void jffs2_free_tmp_dnode_info_list(struct jffs2_tmp_dnode_info *tn)
-+{
-+ struct jffs2_tmp_dnode_info *next;
-+
-+ while (tn) {
-+ next = tn;
-+ tn = tn->next;
-+ jffs2_free_full_dnode(next->fn);
-+ jffs2_free_tmp_dnode_info(next);
-+ }
-+}
-+
-+void jffs2_free_full_dirent_list(struct jffs2_full_dirent *fd)
-+{
-+ struct jffs2_full_dirent *next;
-+
-+ while (fd) {
-+ next = fd->next;
-+ jffs2_free_full_dirent(fd);
-+ fd = next;
-+ }
-+}
-+
- int __init jffs2_create_slab_caches(void)
- {
-- full_dnode_slab = kmem_cache_create("jffs2_full_dnode",
-- sizeof(struct jffs2_full_dnode),
-- 0, JFFS2_SLAB_POISON, NULL, NULL);
-+ full_dnode_slab = kmem_cache_create("jffs2_full_dnode", sizeof(struct jffs2_full_dnode), 0, JFFS2_SLAB_POISON, NULL, NULL);
- if (!full_dnode_slab)
- goto err;
-
-- raw_dirent_slab = kmem_cache_create("jffs2_raw_dirent",
-- sizeof(struct jffs2_raw_dirent),
-- 0, JFFS2_SLAB_POISON, NULL, NULL);
-+ raw_dirent_slab = kmem_cache_create("jffs2_raw_dirent", sizeof(struct jffs2_raw_dirent), 0, JFFS2_SLAB_POISON, NULL, NULL);
- if (!raw_dirent_slab)
- goto err;
-
-- raw_inode_slab = kmem_cache_create("jffs2_raw_inode",
-- sizeof(struct jffs2_raw_inode),
-- 0, JFFS2_SLAB_POISON, NULL, NULL);
-+ raw_inode_slab = kmem_cache_create("jffs2_raw_inode", sizeof(struct jffs2_raw_inode), 0, JFFS2_SLAB_POISON, NULL, NULL);
- if (!raw_inode_slab)
- goto err;
-
-- tmp_dnode_info_slab = kmem_cache_create("jffs2_tmp_dnode",
-- sizeof(struct jffs2_tmp_dnode_info),
-- 0, JFFS2_SLAB_POISON, NULL, NULL);
-+ tmp_dnode_info_slab = kmem_cache_create("jffs2_tmp_dnode", sizeof(struct jffs2_tmp_dnode_info), 0, JFFS2_SLAB_POISON, NULL, NULL);
- if (!tmp_dnode_info_slab)
- goto err;
-
-- raw_node_ref_slab = kmem_cache_create("jffs2_raw_node_ref",
-- sizeof(struct jffs2_raw_node_ref),
-- 0, JFFS2_SLAB_POISON, NULL, NULL);
-+ raw_node_ref_slab = kmem_cache_create("jffs2_raw_node_ref", sizeof(struct jffs2_raw_node_ref), 0, JFFS2_SLAB_POISON, NULL, NULL);
- if (!raw_node_ref_slab)
- goto err;
-
-- node_frag_slab = kmem_cache_create("jffs2_node_frag",
-- sizeof(struct jffs2_node_frag),
-- 0, JFFS2_SLAB_POISON, NULL, NULL);
-+ node_frag_slab = kmem_cache_create("jffs2_node_frag", sizeof(struct jffs2_node_frag), 0, JFFS2_SLAB_POISON, NULL, NULL);
- if (!node_frag_slab)
- goto err;
-
-- inode_cache_slab = kmem_cache_create("jffs2_inode_cache",
-- sizeof(struct jffs2_inode_cache),
-- 0, JFFS2_SLAB_POISON, NULL, NULL);
-+ inode_cache_slab = kmem_cache_create("jffs2_inode_cache", sizeof(struct jffs2_inode_cache), 0, JFFS2_SLAB_POISON, NULL, NULL);
-+
- if (inode_cache_slab)
- return 0;
- err:
-@@ -97,6 +131,7 @@
- kmem_cache_destroy(node_frag_slab);
- if(inode_cache_slab)
- kmem_cache_destroy(inode_cache_slab);
-+
- }
-
- struct jffs2_full_dirent *jffs2_alloc_full_dirent(int namesize)
-diff -Nur linux/fs/jffs2/nodelist.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/nodelist.c
---- linux/fs/jffs2/nodelist.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/nodelist.c 2003-06-23 01:47:04.000000000 +0700
-@@ -5,22 +5,40 @@
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: nodelist.c,v 1.61 2002/09/06 16:46:29 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
- *
-- * ChangeLog:
-- * 19-Nov-2002 Lineo Japan, Inc. add function jffs2_shrink_inode()
-- * add counter of fragtree elements
-- * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: nodelist.c,v 1.30.2.4 2002/05/10 18:30:33 dwmw2 Exp $
- *
- */
-
- #include <linux/kernel.h>
-+#include <linux/jffs2.h>
- #include <linux/fs.h>
- #include <linux/mtd/mtd.h>
--#include <linux/interrupt.h>
--#include <linux/rbtree.h>
- #include "nodelist.h"
-
- void jffs2_add_fd_to_list(struct jffs2_sb_info *c, struct jffs2_full_dirent *new, struct jffs2_full_dirent **list)
-@@ -71,37 +89,13 @@
- *prev = tn;
- }
-
--static void jffs2_free_tmp_dnode_info_list(struct jffs2_tmp_dnode_info *tn)
--{
-- struct jffs2_tmp_dnode_info *next;
--
-- while (tn) {
-- next = tn;
-- tn = tn->next;
-- jffs2_free_full_dnode(next->fn);
-- jffs2_free_tmp_dnode_info(next);
-- }
--}
--
--static void jffs2_free_full_dirent_list(struct jffs2_full_dirent *fd)
--{
-- struct jffs2_full_dirent *next;
--
-- while (fd) {
-- next = fd->next;
-- jffs2_free_full_dirent(fd);
-- fd = next;
-- }
--}
--
--
- /* Get tmp_dnode_info and full_dirent for all non-obsolete nodes associated
- with this ino, returning the former in order of version */
-
- int jffs2_get_inode_nodes(struct jffs2_sb_info *c, ino_t ino, struct jffs2_inode_info *f,
- struct jffs2_tmp_dnode_info **tnp, struct jffs2_full_dirent **fdp,
-- uint32_t *highest_version, uint32_t *latest_mctime,
-- uint32_t *mctime_ver)
-+ __u32 *highest_version, __u32 *latest_mctime,
-+ __u32 *mctime_ver)
- {
- struct jffs2_raw_node_ref *ref = f->inocache->nodes;
- struct jffs2_tmp_dnode_info *tn, *ret_tn = NULL;
-@@ -117,24 +111,16 @@
- if (!f->inocache->nodes) {
- printk(KERN_WARNING "Eep. no nodes for ino #%lu\n", ino);
- }
--
-- spin_lock_bh(&c->erase_completion_lock);
--
- for (ref = f->inocache->nodes; ref && ref->next_in_ino; ref = ref->next_in_ino) {
- /* Work out whether it's a data node or a dirent node */
-- if (ref_obsolete(ref)) {
-+ if (ref->flash_offset & 1) {
- /* FIXME: On NAND flash we may need to read these */
-- D1(printk(KERN_DEBUG "node at 0x%08x is obsoleted. Ignoring.\n", ref_offset(ref)));
-+ D1(printk(KERN_DEBUG "node at 0x%08x is obsoleted. Ignoring.\n", ref->flash_offset &~3));
- continue;
- }
-- /* We can hold a pointer to a non-obsolete node without the spinlock,
-- but _obsolete_ nodes may disappear at any time, if the block
-- they're in gets erased */
-- spin_unlock_bh(&c->erase_completion_lock);
--
-- err = jffs2_flash_read(c, (ref_offset(ref)), min(ref->totlen, sizeof(node)), &retlen, (void *)&node);
-+ err = c->mtd->read(c->mtd, (ref->flash_offset & ~3), min(ref->totlen, sizeof(node)), &retlen, (void *)&node);
- if (err) {
-- printk(KERN_WARNING "error %d reading node at 0x%08x in get_inode_nodes()\n", err, ref_offset(ref));
-+ printk(KERN_WARNING "error %d reading node at 0x%08x in get_inode_nodes()\n", err, (ref->flash_offset) & ~3);
- goto free_out;
- }
-
-@@ -146,21 +132,19 @@
- goto free_out;
- }
-
-- switch (je16_to_cpu(node.u.nodetype)) {
-+ switch (node.u.nodetype) {
- case JFFS2_NODETYPE_DIRENT:
-- D1(printk(KERN_DEBUG "Node at %08x is a dirent node\n", ref_offset(ref)));
-+ D1(printk(KERN_DEBUG "Node at %08x is a dirent node\n", ref->flash_offset &~3));
- if (retlen < sizeof(node.d)) {
- printk(KERN_WARNING "short read in get_inode_nodes()\n");
- err = -EIO;
- goto free_out;
- }
-- if (je32_to_cpu(node.d.version) > *highest_version)
-- *highest_version = je32_to_cpu(node.d.version);
-- if (ref_obsolete(ref)) {
-- /* Obsoleted. This cannot happen, surely? dwmw2 20020308 */
-- printk(KERN_ERR "Dirent node at 0x%08x became obsolete while we weren't looking\n",
-- ref_offset(ref));
-- BUG();
-+ if (node.d.version > *highest_version)
-+ *highest_version = node.d.version;
-+ if (ref->flash_offset & 1) {
-+ /* Obsoleted */
-+ continue;
- }
- fd = jffs2_alloc_full_dirent(node.d.nsize+1);
- if (!fd) {
-@@ -169,21 +153,21 @@
- }
- memset(fd,0,sizeof(struct jffs2_full_dirent) + node.d.nsize+1);
- fd->raw = ref;
-- fd->version = je32_to_cpu(node.d.version);
-- fd->ino = je32_to_cpu(node.d.ino);
-+ fd->version = node.d.version;
-+ fd->ino = node.d.ino;
- fd->type = node.d.type;
-
- /* Pick out the mctime of the latest dirent */
- if(fd->version > *mctime_ver) {
- *mctime_ver = fd->version;
-- *latest_mctime = je32_to_cpu(node.d.mctime);
-+ *latest_mctime = node.d.mctime;
- }
-
- /* memcpy as much of the name as possible from the raw
- dirent we've already read from the flash
- */
- if (retlen > sizeof(struct jffs2_raw_dirent))
-- memcpy(&fd->name[0], &node.d.name[0], min((uint32_t)node.d.nsize, (retlen-sizeof(struct jffs2_raw_dirent))));
-+ memcpy(&fd->name[0], &node.d.name[0], min((__u32)node.d.nsize, (retlen-sizeof(struct jffs2_raw_dirent))));
-
- /* Do we need to copy any more of the name directly
- from the flash?
-@@ -191,7 +175,7 @@
- if (node.d.nsize + sizeof(struct jffs2_raw_dirent) > retlen) {
- int already = retlen - sizeof(struct jffs2_raw_dirent);
-
-- err = jffs2_flash_read(c, (ref_offset(ref)) + retlen,
-+ err = c->mtd->read(c->mtd, (ref->flash_offset & ~3) + retlen,
- node.d.nsize - already, &retlen, &fd->name[already]);
- if (!err && retlen != node.d.nsize - already)
- err = -EIO;
-@@ -212,21 +196,20 @@
- break;
-
- case JFFS2_NODETYPE_INODE:
-- D1(printk(KERN_DEBUG "Node at %08x is a data node\n", ref_offset(ref)));
-+ D1(printk(KERN_DEBUG "Node at %08x is a data node\n", ref->flash_offset &~3));
- if (retlen < sizeof(node.i)) {
- printk(KERN_WARNING "read too short for dnode\n");
- err = -EIO;
- goto free_out;
- }
-- if (je32_to_cpu(node.i.version) > *highest_version)
-- *highest_version = je32_to_cpu(node.i.version);
-- D1(printk(KERN_DEBUG "version %d, highest_version now %d\n", je32_to_cpu(node.i.version), *highest_version));
--
-- if (ref_obsolete(ref)) {
-- /* Obsoleted. This cannot happen, surely? dwmw2 20020308 */
-- printk(KERN_ERR "Inode node at 0x%08x became obsolete while we weren't looking\n",
-- ref_offset(ref));
-- BUG();
-+ if (node.d.version > *highest_version)
-+ *highest_version = node.i.version;
-+ D1(printk(KERN_DEBUG "version %d, highest_version now %d\n", node.d.version, *highest_version));
-+
-+ if (ref->flash_offset & 1) {
-+ D1(printk(KERN_DEBUG "obsoleted\n"));
-+ /* Obsoleted */
-+ continue;
- }
- tn = jffs2_alloc_tmp_dnode_info();
- if (!tn) {
-@@ -242,41 +225,36 @@
- jffs2_free_tmp_dnode_info(tn);
- goto free_out;
- }
-- tn->version = je32_to_cpu(node.i.version);
-- tn->fn->ofs = je32_to_cpu(node.i.offset);
-+ tn->version = node.i.version;
-+ tn->fn->ofs = node.i.offset;
- /* There was a bug where we wrote hole nodes out with
- csize/dsize swapped. Deal with it */
-- if (node.i.compr == JFFS2_COMPR_ZERO && !je32_to_cpu(node.i.dsize) && je32_to_cpu(node.i.csize))
-- tn->fn->size = je32_to_cpu(node.i.csize);
-+ if (node.i.compr == JFFS2_COMPR_ZERO && !node.i.dsize && node.i.csize)
-+ tn->fn->size = node.i.csize;
- else // normal case...
-- tn->fn->size = je32_to_cpu(node.i.dsize);
-+ tn->fn->size = node.i.dsize;
- tn->fn->raw = ref;
-- D1(printk(KERN_DEBUG "dnode @%08x: ver %u, offset %04x, dsize %04x\n",
-- ref_offset(ref), je32_to_cpu(node.i.version),
-- je32_to_cpu(node.i.offset), je32_to_cpu(node.i.dsize)));
-+ D1(printk(KERN_DEBUG "dnode @%08x: ver %u, offset %04x, dsize %04x\n", ref->flash_offset &~3, node.i.version, node.i.offset, node.i.dsize));
- jffs2_add_tn_to_list(tn, &ret_tn);
- break;
-
- default:
-- switch(je16_to_cpu(node.u.nodetype) & JFFS2_COMPAT_MASK) {
-+ switch(node.u.nodetype & JFFS2_COMPAT_MASK) {
- case JFFS2_FEATURE_INCOMPAT:
-- printk(KERN_NOTICE "Unknown INCOMPAT nodetype %04X at %08X\n", je16_to_cpu(node.u.nodetype), ref_offset(ref));
-+ printk(KERN_NOTICE "Unknown INCOMPAT nodetype %04X at %08X\n", node.u.nodetype, ref->flash_offset & ~3);
- break;
- case JFFS2_FEATURE_ROCOMPAT:
-- printk(KERN_NOTICE "Unknown ROCOMPAT nodetype %04X at %08X\n", je16_to_cpu(node.u.nodetype), ref_offset(ref));
-+ printk(KERN_NOTICE "Unknown ROCOMPAT nodetype %04X at %08X\n", node.u.nodetype, ref->flash_offset & ~3);
- break;
- case JFFS2_FEATURE_RWCOMPAT_COPY:
-- printk(KERN_NOTICE "Unknown RWCOMPAT_COPY nodetype %04X at %08X\n", je16_to_cpu(node.u.nodetype), ref_offset(ref));
-+ printk(KERN_NOTICE "Unknown RWCOMPAT_COPY nodetype %04X at %08X\n", node.u.nodetype, ref->flash_offset & ~3);
- break;
- case JFFS2_FEATURE_RWCOMPAT_DELETE:
-- printk(KERN_NOTICE "Unknown RWCOMPAT_DELETE nodetype %04X at %08X\n", je16_to_cpu(node.u.nodetype), ref_offset(ref));
-+ printk(KERN_NOTICE "Unknown RWCOMPAT_DELETE nodetype %04X at %08X\n", node.u.nodetype, ref->flash_offset & ~3);
- break;
- }
- }
-- spin_lock_bh(&c->erase_completion_lock);
--
- }
-- spin_unlock_bh(&c->erase_completion_lock);
- *tnp = ret_tn;
- *fdp = ret_fd;
-
-@@ -294,17 +272,16 @@
-
- D2(printk(KERN_DEBUG "jffs2_get_ino_cache(): ino %u\n", ino));
- spin_lock (&c->inocache_lock);
--
- ret = c->inocache_list[ino % INOCACHE_HASHSIZE];
- while (ret && ret->ino < ino) {
- ret = ret->next;
- }
--
-- if (ret && ret->ino != ino)
-- ret = NULL;
-
- spin_unlock(&c->inocache_lock);
-
-+ if (ret && ret->ino != ino)
-+ ret = NULL;
-+
- D2(printk(KERN_DEBUG "jffs2_get_ino_cache found %p for ino %u\n", ret, ino));
- return ret;
- }
-@@ -322,7 +299,6 @@
- }
- new->next = *prev;
- *prev = new;
--
- spin_unlock(&c->inocache_lock);
- }
-
-@@ -340,7 +316,6 @@
- if ((*prev) == old) {
- *prev = old->next;
- }
--
- spin_unlock(&c->inocache_lock);
- }
-
-@@ -377,271 +352,3 @@
- }
- }
-
--struct jffs2_node_frag *jffs2_lookup_node_frag(rb_root_t *fragtree, uint32_t offset)
--{
-- /* The common case in lookup is that there will be a node
-- which precisely matches. So we go looking for that first */
-- rb_node_t *next;
-- struct jffs2_node_frag *prev = NULL;
-- struct jffs2_node_frag *frag = NULL;
--
-- D2(printk(KERN_DEBUG "jffs2_lookup_node_frag(%p, %d)\n", fragtree, offset));
--
-- next = fragtree->rb_node;
--
-- while(next) {
-- frag = rb_entry(next, struct jffs2_node_frag, rb);
--
-- D2(printk(KERN_DEBUG "Considering frag %d-%d (%p). left %p, right %p\n",
-- frag->ofs, frag->ofs+frag->size, frag, frag->rb.rb_left, frag->rb.rb_right));
-- if (frag->ofs + frag->size <= offset) {
-- D2(printk(KERN_DEBUG "Going right from frag %d-%d, before the region we care about\n",
-- frag->ofs, frag->ofs+frag->size));
-- /* Remember the closest smaller match on the way down */
-- if (!prev || frag->ofs > prev->ofs)
-- prev = frag;
-- next = frag->rb.rb_right;
-- } else if (frag->ofs > offset) {
-- D2(printk(KERN_DEBUG "Going left from frag %d-%d, after the region we care about\n",
-- frag->ofs, frag->ofs+frag->size));
-- next = frag->rb.rb_left;
-- } else {
-- D2(printk(KERN_DEBUG "Returning frag %d,%d, matched\n",
-- frag->ofs, frag->ofs+frag->size));
-- return frag;
-- }
-- }
--
-- /* Exact match not found. Go back up looking at each parent,
-- and return the closest smaller one */
--
-- if (prev)
-- D2(printk(KERN_DEBUG "No match. Returning frag %d,%d, closest previous\n",
-- prev->ofs, prev->ofs+prev->size));
-- else
-- D2(printk(KERN_DEBUG "Returning NULL, empty fragtree\n"));
--
-- return prev;
--}
--
--/* Pass 'c' argument to indicate that nodes should be marked obsolete as
-- they're killed. */
--void jffs2_kill_fragtree(rb_root_t *root, struct jffs2_sb_info *c)
--{
-- struct jffs2_node_frag *frag;
-- struct jffs2_node_frag *parent;
--
-- if (!root->rb_node)
-- return;
--
-- frag = (rb_entry(root->rb_node, struct jffs2_node_frag, rb));
--
-- while(frag) {
-- if (frag->rb.rb_left) {
-- D2(printk(KERN_DEBUG "Going left from frag (%p) %d-%d\n",
-- frag, frag->ofs, frag->ofs+frag->size));
-- frag = frag_left(frag);
-- continue;
-- }
-- if (frag->rb.rb_right) {
-- D2(printk(KERN_DEBUG "Going right from frag (%p) %d-%d\n",
-- frag, frag->ofs, frag->ofs+frag->size));
-- frag = frag_right(frag);
-- continue;
-- }
--
-- D2(printk(KERN_DEBUG "jffs2_kill_fragtree: frag at 0x%x-0x%x: node %p, frags %d--\n",
-- frag->ofs, frag->ofs+frag->size, frag->node,
-- frag->node?frag->node->frags:0));
--
-- if (frag->node && !(--frag->node->frags)) {
-- /* Not a hole, and it's the final remaining frag
-- of this node. Free the node */
-- if (c)
-- jffs2_mark_node_obsolete(c, frag->node->raw);
--
-- jffs2_free_full_dnode(frag->node);
-- }
-- parent = frag_parent(frag);
-- if (parent) {
-- if (frag_left(parent) == frag)
-- parent->rb.rb_left = NULL;
-- else
-- parent->rb.rb_right = NULL;
-- }
--
-- jffs2_free_node_frag(frag);
-- frag = parent;
-- }
--}
--
--void jffs2_fragtree_insert(struct jffs2_node_frag *newfrag, struct jffs2_node_frag *base)
--{
-- rb_node_t *parent = &base->rb;
-- rb_node_t **link = &parent;
--
-- D2(printk(KERN_DEBUG "jffs2_fragtree_insert(%p; %d-%d, %p)\n", newfrag,
-- newfrag->ofs, newfrag->ofs+newfrag->size, base));
--
-- while (*link) {
-- parent = *link;
-- base = rb_entry(parent, struct jffs2_node_frag, rb);
--
-- D2(printk(KERN_DEBUG "fragtree_insert considering frag at 0x%x\n", base->ofs));
-- if (newfrag->ofs > base->ofs)
-- link = &base->rb.rb_right;
-- else if (newfrag->ofs < base->ofs)
-- link = &base->rb.rb_left;
-- else {
-- printk(KERN_CRIT "Duplicate frag at %08x (%p,%p)\n", newfrag->ofs, newfrag, base);
-- BUG();
-- }
-- }
--
-- rb_link_node(&newfrag->rb, &base->rb, link);
--}
--
--rb_node_t *rb_next(rb_node_t *node)
--{
-- /* If we have a right-hand child, go down and then left as far
-- as we can. */
-- if (node->rb_right) {
-- node = node->rb_right;
-- while (node->rb_left)
-- node=node->rb_left;
-- return node;
-- }
--
-- /* No right-hand children. Everything down and left is
-- smaller than us, so any 'next' node must be in the general
-- direction of our parent. Go up the tree; any time the
-- ancestor is a right-hand child of its parent, keep going
-- up. First time it's a left-hand child of its parent, said
-- parent is our 'next' node. */
-- while (node->rb_parent && node == node->rb_parent->rb_right)
-- node = node->rb_parent;
--
-- return node->rb_parent;
--}
--
--rb_node_t *rb_prev(rb_node_t *node)
--{
-- if (node->rb_left) {
-- node = node->rb_left;
-- while (node->rb_right)
-- node=node->rb_right;
-- return node;
-- }
-- while (node->rb_parent && node == node->rb_parent->rb_left)
-- node = node->rb_parent;
--
-- return node->rb_parent;
--}
--
--void rb_replace_node(rb_node_t *victim, rb_node_t *new, rb_root_t *root)
--{
-- rb_node_t *parent = victim->rb_parent;
--
-- /* Set the surrounding nodes to point to the replacement */
-- if (parent) {
-- if (victim == parent->rb_left)
-- parent->rb_left = new;
-- else
-- parent->rb_right = new;
-- } else {
-- root->rb_node = new;
-- }
-- if (victim->rb_left)
-- victim->rb_left->rb_parent = new;
-- if (victim->rb_right)
-- victim->rb_right->rb_parent = new;
--
-- /* Copy the pointers/colour from the victim to the replacement */
-- *new = *victim;
--}
--
--#ifdef CONFIG_JFFS2_DYNFRAGTREE
--int jffs2_construct_fragtree(struct jffs2_sb_info *c, struct jffs2_inode_info *f)
--{
-- struct jffs2_tmp_dnode_info *tn_list;
-- struct jffs2_full_dirent *dummy_fd_list;
-- uint32_t dummy_mctime, dummy_ver, highest_version;
-- int ret;
--
-- if (! f->inocache) {
-- printk(KERN_WARNING "%s: ino %lu: f->inocache is NULL\n",
-- __func__, OFNI_EDONI_2SFFJ(f)->i_ino);
-- return -ENOENT;
-- }
--
-- if (frag_first(&f->fragtree)) {
-- printk(KERN_NOTICE "%s: f->fragtree already exists\n", __func__);
-- return 0;
-- }
--
-- highest_version = f->highest_version;
-- ret = jffs2_get_inode_nodes(c, f->inocache->ino, f, &tn_list, &dummy_fd_list,
-- &highest_version, &dummy_mctime, &dummy_ver);
-- if (ret) {
-- printk(KERN_CRIT "%s for ino %u returned %d\n",
-- __func__, f->inocache->ino, ret);
-- return ret;
-- }
--
-- if (f->highest_version != highest_version) {
-- printk(KERN_NOTICE "%s: f->highest_version:%u != %u\n",
-- __func__, f->highest_version, highest_version);
-- f->highest_version = highest_version;
-- }
--
-- if (dummy_fd_list) {
-- printk(KERN_NOTICE "%s for directory ino #%u\n",
-- __func__, f->inocache->ino);
-- return 0;
-- }
--
-- while (tn_list) {
-- struct jffs2_tmp_dnode_info *tn;
-- struct jffs2_full_dnode *fn;
--
-- tn = tn_list;
-- fn = tn->fn;
-- if (fn->size)
-- jffs2_add_full_dnode_to_inode(c, f, fn);
-- tn_list = tn->next;
-- jffs2_free_tmp_dnode_info(tn);
-- }
--
-- return 0;
--}
--
--void jffs2_shrink_inode(struct inode *inode)
--{
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
--
-- if (S_ISREG(inode->i_mode)) {
-- jffs2_kill_fragtree(&f->fragtree, NULL);
-- CLEAR_NR_FRAGS(f);
-- f->fragtree = RB_ROOT;
-- }
--}
--
--uint32_t jffs2_get_nr_frags(struct inode *inode)
--{
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
-- return f->nr_frags;
--}
--
--int jffs2_frags_exists(struct inode *inode)
--{
-- struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
-- return f->fragtree.rb_node != NULL;
--}
--
--#endif
--
--/*
-- * Local variables:
-- * c-basic-offset: 8
-- * End:
-- */
-diff -Nur linux/fs/jffs2/nodelist.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/nodelist.h
---- linux/fs/jffs2/nodelist.h 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/nodelist.h 2003-06-23 01:47:04.000000000 +0700
-@@ -1,46 +1,45 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: nodelist.h,v 1.83 2002/09/06 16:46:29 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
- *
-- * ChangeLog:
-- * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode
-- * 23-Nov-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_DIRTY
-- * add JFFS2_RESERVED_BLOCKS_CLEAN
-- * 19-Nov-2002 Lineo Japan, Inc. add counter of fragtree elements
-- * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
-- * 11-Nov-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_ROOT
-- * 29-Oct-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_BAD and JFFS2_MAX_CONT_GC
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
- *
-- * ChangeLog:
-- * 05-Dec-2002 SHARP adjust REVERVED_BLOCKS values for storage-full
-- * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode
-- * 23-Nov-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_DIRTY
-- * add JFFS2_RESERVED_BLOCKS_CLEAN
-- * 19-Nov-2002 Lineo Japan, Inc. add counter of fragtree elements
-- * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
-- * 11-Nov-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_ROOT
-- * 29-Oct-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_BAD and JFFS2_MAX_CONT_GC
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: nodelist.h,v 1.46.2.2 2002/05/27 09:27:50 dwmw2 Exp $
- *
- */
-
--#ifndef __JFFS2_NODELIST_H__
--#define __JFFS2_NODELIST_H__
--
- #include <linux/config.h>
- #include <linux/fs.h>
-
--#include <linux/mtd/compatmac.h> /* For min/max in older kernels */
--#include <linux/jffs2.h>
- #include <linux/jffs2_fs_sb.h>
- #include <linux/jffs2_fs_i.h>
--#include "os-linux.h"
-
- #ifndef CONFIG_JFFS2_FS_DEBUG
- #define CONFIG_JFFS2_FS_DEBUG 2
-@@ -72,22 +71,16 @@
- for this inode instead. The inode_cache will have NULL in the first
- word so you know when you've got there :) */
- struct jffs2_raw_node_ref *next_phys;
-- uint32_t flash_offset;
-- uint32_t totlen;
-+ // __u32 ino;
-+ __u32 flash_offset;
-+ __u32 totlen;
-+// __u16 nodetype;
-
- /* flash_offset & 3 always has to be zero, because nodes are
- always aligned at 4 bytes. So we have a couple of extra bits
- to play with. So we set the least significant bit to 1 to
- signify that the node is obsoleted by later nodes.
- */
--#define REF_UNCHECKED 0 /* We haven't yet checked the CRC or built its inode */
--#define REF_OBSOLETE 1 /* Obsolete, can be completely ignored */
--#define REF_PRISTINE 2 /* Completely clean. GC without looking */
--#define REF_NORMAL 3 /* Possibly overlapped. Read the page and write again on GC */
--#define ref_flags(ref) ((ref)->flash_offset & 3)
--#define ref_offset(ref) ((ref)->flash_offset & ~3)
--#define ref_obsolete(ref) (((ref)->flash_offset & 3) == REF_OBSOLETE)
--#define mark_ref_normal(ref) do { (ref)->flash_offset = ref_offset(ref) | REF_NORMAL; } while(0)
- };
-
- /*
-@@ -114,18 +107,13 @@
- chain. */
- struct jffs2_inode_cache *next;
- struct jffs2_raw_node_ref *nodes;
-- uint32_t ino;
-+ __u32 ino;
- int nlink;
- };
-
--#define INOCACHE_HASHSIZE 128
--
- struct jffs2_scan_info {
- struct jffs2_full_dirent *dents;
- struct jffs2_tmp_dnode_info *tmpnodes;
-- /* Latest i_size info */
-- uint32_t version;
-- uint32_t isize;
- };
- /*
- Larger representation of a raw node, kept in-core only when the
-@@ -135,9 +123,9 @@
- struct jffs2_full_dnode
- {
- struct jffs2_raw_node_ref *raw;
-- uint32_t ofs; /* Don't really need this, but optimisation */
-- uint32_t size;
-- uint32_t frags; /* Number of fragments which currently refer
-+ __u32 ofs; /* Don't really need this, but optimisation */
-+ __u32 size;
-+ __u32 frags; /* Number of fragments which currently refer
- to this node. When this reaches zero,
- the node is obsolete.
- */
-@@ -152,15 +140,15 @@
- {
- struct jffs2_tmp_dnode_info *next;
- struct jffs2_full_dnode *fn;
-- uint32_t version;
-+ __u32 version;
- };
-
- struct jffs2_full_dirent
- {
- struct jffs2_raw_node_ref *raw;
- struct jffs2_full_dirent *next;
-- uint32_t version;
-- uint32_t ino; /* == zero for unlink */
-+ __u32 version;
-+ __u32 ino; /* == zero for unlink */
- unsigned int nhash;
- unsigned char type;
- unsigned char name[0];
-@@ -171,22 +159,21 @@
- */
- struct jffs2_node_frag
- {
-- rb_node_t rb;
-+ struct jffs2_node_frag *next;
- struct jffs2_full_dnode *node; /* NULL for holes */
-- uint32_t size;
-- uint32_t ofs; /* Don't really need this, but optimisation */
-+ __u32 size;
-+ __u32 ofs; /* Don't really need this, but optimisation */
- };
-
- struct jffs2_eraseblock
- {
- struct list_head list;
- int bad_count;
-- uint32_t offset; /* of this block in the MTD */
-+ __u32 offset; /* of this block in the MTD */
-
-- uint32_t used_size;
-- uint32_t dirty_size;
-- uint32_t wasted_size;
-- uint32_t free_size; /* Note that sector_size - free_size
-+ __u32 used_size;
-+ __u32 dirty_size;
-+ __u32 free_size; /* Note that sector_size - free_size
- is the address of the first free space */
- struct jffs2_raw_node_ref *first_node;
- struct jffs2_raw_node_ref *last_node;
-@@ -203,25 +190,25 @@
- };
-
- #define ACCT_SANITY_CHECK(c, jeb) do { \
-- if (jeb->used_size + jeb->dirty_size + jeb->free_size +jeb->wasted_size != c->sector_size) { \
-+ if (jeb->used_size + jeb->dirty_size + jeb->free_size != c->sector_size) { \
- printk(KERN_NOTICE "Eeep. Space accounting for block at 0x%08x is screwed\n", jeb->offset); \
-- printk(KERN_NOTICE "free 0x%08x + dirty 0x%08x + used %08x + wasted %08x != total %08x\n", \
-- jeb->free_size, jeb->dirty_size, jeb->used_size, jeb->wasted_size, c->sector_size); \
-+ printk(KERN_NOTICE "free 0x%08x + dirty 0x%08x + used %08x != total %08x\n", \
-+ jeb->free_size, jeb->dirty_size, jeb->used_size, c->sector_size); \
- BUG(); \
- } \
-- if (c->used_size + c->dirty_size + c->free_size + c->erasing_size + c->bad_size + c->wasted_size != c->flash_size) { \
-+ if (c->used_size + c->dirty_size + c->free_size + c->erasing_size + c->bad_size != c->flash_size) { \
- printk(KERN_NOTICE "Eeep. Space accounting superblock info is screwed\n"); \
-- printk(KERN_NOTICE "free 0x%08x + dirty 0x%08x + used %08x + erasing %08x + bad %08x + wasted %08x != total %08x\n", \
-- c->free_size, c->dirty_size, c->used_size, c->erasing_size, c->bad_size, c->wasted_size, c->flash_size); \
-+ printk(KERN_NOTICE "free 0x%08x + dirty 0x%08x + used %08x + erasing %08x + bad %08x != total %08x\n", \
-+ c->free_size, c->dirty_size, c->used_size, c->erasing_size, c->bad_size, c->flash_size); \
- BUG(); \
- } \
- } while(0)
-
- #define ACCT_PARANOIA_CHECK(jeb) do { \
-- uint32_t my_used_size = 0; \
-+ __u32 my_used_size = 0; \
- struct jffs2_raw_node_ref *ref2 = jeb->first_node; \
- while (ref2) { \
-- if (!ref_obsolete(ref2)) \
-+ if (!(ref2->flash_offset & 1)) \
- my_used_size += ref2->totlen; \
- ref2 = ref2->next_phys; \
- } \
-@@ -238,44 +225,13 @@
- #define JFFS2_RESERVED_BLOCKS_BASE 3 /* Number of free blocks there must be before we... */
- #define JFFS2_RESERVED_BLOCKS_WRITE (JFFS2_RESERVED_BLOCKS_BASE + 2) /* ... allow a normal filesystem write */
- #define JFFS2_RESERVED_BLOCKS_DELETION (JFFS2_RESERVED_BLOCKS_BASE + 1) /* ... allow a normal filesystem deletion */
--#define JFFS2_RESERVED_BLOCKS_GCTRIGGER 39 /* ... wake up the GC thread */
-+#define JFFS2_RESERVED_BLOCKS_GCTRIGGER (JFFS2_RESERVED_BLOCKS_BASE + 3) /* ... wake up the GC thread */
- #define JFFS2_RESERVED_BLOCKS_GCBAD (JFFS2_RESERVED_BLOCKS_BASE + 1) /* ... pick a block from the bad_list to GC */
- #define JFFS2_RESERVED_BLOCKS_GCMERGE (JFFS2_RESERVED_BLOCKS_BASE) /* ... merge pages when garbage collecting */
--#define JFFS2_RESERVED_BLOCKS_BAD 24
--#define JFFS2_RESERVED_BLOCKS_ROOT 5
--#define JFFS2_RESERVED_BLOCKS_DIRTY 24
--#define JFFS2_RESERVED_BLOCKS_CLEAN 12
--#if JFFS2_RESERVED_BLOCKS_CLEAN < JFFS2_RESERVED_BLOCKS_WRITE + JFFS2_RESERVED_BLOCKS_ROOT
--#error assure that JFFS2_RESERVED_BLOCKS_CLEAN >= JFFS2_RESERVED_BLOCKS_WRITE + JFFS2_RESERVED_BLOCKS_ROOT
--#endif
--#if JFFS2_RESERVED_BLOCKS_GCTRIGGER <= JFFS2_RESERVED_BLOCKS_WRITE + JFFS2_RESERVED_BLOCKS_ROOT + JFFS2_RESERVED_BLOCKS_DIRTY
--#error assure that JFFS2_RESERVED_BLOCKS_GCTRIGGER > JFFS2_RESERVED_BLOCKS_WRITE + JFFS2_RESERVED_BLOCKS_ROOT + JFFS2_RESERVED_BLOCKS_DIRTY
--#endif
--#define JFFS2_MAX_CONT_GC 3000
--
--#define NR_AVAIL_BLOCKS(c) ((c)->nr_free_blocks + (c)->nr_erasing_blocks - max(0, JFFS2_RESERVED_BLOCKS_BAD - (c)->nr_bad_blocks))
-
--/* How much dirty space before it goes on the very_dirty_list */
--#define VERYDIRTY(c, size) ((size) >= ((c)->sector_size / 2))
--
--/* check if dirty space is more than 255 Byte */
--#define ISDIRTY(size) ((size) > sizeof (struct jffs2_raw_inode) + JFFS2_MIN_DATA_LEN)
--
--/* node merge threshold */
--#define JFFS2_FRAGS_NR_NODES_THRESHOLD_NORMAL 4
--#define JFFS2_FRAGS_NR_NODES_THRESHOLD_FORCE 1
-
- #define PAD(x) (((x)+3)&~3)
-
--typedef enum { GCMODE_NORMAL, GCMODE_EFFECTIVE, } jffs2_gcmode_t;
--
--#define GC_EFFECTIVE_BLOCK_DIRTY_SIZE (1*1024)
--#define GC_EFFECTIVE_BLOCK_DIRTY_SIZE_L (2*1024)
--#define GC_EFFECTIVE_BLOCK_DIRTY_SIZE_LL (4*1024)
--#define GC_EFFECTIVE_TOTAL_DIRTY_SIZE(c) (JFFS2_RESERVED_BLOCKS_DIRTY * (c)->sector_size)
--#define GC_EFFECTIVE_TOTAL_DIRTY_SIZE_L(c) (JFFS2_RESERVED_BLOCKS_DIRTY * (c)->sector_size * 2)
--#define GC_EFFECTIVE_TOTAL_DIRTY_SIZE_LL(c) (JFFS2_RESERVED_BLOCKS_DIRTY * (c)->sector_size * 4)
--
- static inline int jffs2_raw_ref_to_inum(struct jffs2_raw_node_ref *raw)
- {
- while(raw->next_in_ino) {
-@@ -285,111 +241,43 @@
- return ((struct jffs2_inode_cache *)raw)->ino;
- }
-
--static inline struct jffs2_node_frag *frag_first(rb_root_t *root)
--{
-- rb_node_t *node = root->rb_node;
--
-- if (!node)
-- return NULL;
-- while(node->rb_left)
-- node = node->rb_left;
-- return rb_entry(node, struct jffs2_node_frag, rb);
--}
--#define rb_parent(rb) ((rb)->rb_parent)
--#define frag_next(frag) rb_entry(rb_next(&(frag)->rb), struct jffs2_node_frag, rb)
--#define frag_prev(frag) rb_entry(rb_prev(&(frag)->rb), struct jffs2_node_frag, rb)
--#define frag_parent(frag) rb_entry(rb_parent(&(frag)->rb), struct jffs2_node_frag, rb)
--#define frag_left(frag) rb_entry((frag)->rb.rb_left, struct jffs2_node_frag, rb)
--#define frag_right(frag) rb_entry((frag)->rb.rb_right, struct jffs2_node_frag, rb)
--#define frag_erase(frag, list) rb_erase(&frag->rb, list);
--
- /* nodelist.c */
- D1(void jffs2_print_frag_list(struct jffs2_inode_info *f));
- void jffs2_add_fd_to_list(struct jffs2_sb_info *c, struct jffs2_full_dirent *new, struct jffs2_full_dirent **list);
- void jffs2_add_tn_to_list(struct jffs2_tmp_dnode_info *tn, struct jffs2_tmp_dnode_info **list);
- int jffs2_get_inode_nodes(struct jffs2_sb_info *c, ino_t ino, struct jffs2_inode_info *f,
- struct jffs2_tmp_dnode_info **tnp, struct jffs2_full_dirent **fdp,
-- uint32_t *highest_version, uint32_t *latest_mctime,
-- uint32_t *mctime_ver);
-+ __u32 *highest_version, __u32 *latest_mctime,
-+ __u32 *mctime_ver);
- struct jffs2_inode_cache *jffs2_get_ino_cache(struct jffs2_sb_info *c, int ino);
- void jffs2_add_ino_cache (struct jffs2_sb_info *c, struct jffs2_inode_cache *new);
- void jffs2_del_ino_cache(struct jffs2_sb_info *c, struct jffs2_inode_cache *old);
- void jffs2_free_ino_caches(struct jffs2_sb_info *c);
- void jffs2_free_raw_node_refs(struct jffs2_sb_info *c);
--struct jffs2_node_frag *jffs2_lookup_node_frag(rb_root_t *fragtree, uint32_t offset);
--void jffs2_kill_fragtree(rb_root_t *root, struct jffs2_sb_info *c_delete);
--void jffs2_fragtree_insert(struct jffs2_node_frag *newfrag, struct jffs2_node_frag *base);
--rb_node_t *rb_next(rb_node_t *);
--rb_node_t *rb_prev(rb_node_t *);
--void rb_replace_node(rb_node_t *victim, rb_node_t *new, rb_root_t *root);
-
- /* nodemgmt.c */
--int jffs2_reserve_space(struct jffs2_sb_info *c, uint32_t minsize, uint32_t *ofs, uint32_t *len, int prio);
--int jffs2_reserve_space_gc(struct jffs2_sb_info *c, uint32_t minsize, uint32_t *ofs, uint32_t *len);
--int jffs2_add_physical_node_ref(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *new);
-+int jffs2_reserve_space(struct jffs2_sb_info *c, __u32 minsize, __u32 *ofs, __u32 *len, int prio);
-+int jffs2_reserve_space_gc(struct jffs2_sb_info *c, __u32 minsize, __u32 *ofs, __u32 *len);
-+int jffs2_add_physical_node_ref(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *new, __u32 len, int dirty);
- void jffs2_complete_reservation(struct jffs2_sb_info *c);
- void jffs2_mark_node_obsolete(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *raw);
--void jffs2_dump_block_lists(struct jffs2_sb_info *c);
-
- /* write.c */
--int jffs2_do_new_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, uint32_t mode, struct jffs2_raw_inode *ri);
--struct jffs2_full_dnode *jffs2_write_dnode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, struct jffs2_raw_inode *ri, const unsigned char *data, uint32_t datalen, uint32_t flash_ofs, uint32_t *writelen);
--struct jffs2_full_dirent *jffs2_write_dirent(struct jffs2_sb_info *c, struct jffs2_inode_info *f, struct jffs2_raw_dirent *rd, const unsigned char *name, uint32_t namelen, uint32_t flash_ofs, uint32_t *writelen);
--int jffs2_write_inode_range(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
-- struct jffs2_raw_inode *ri, unsigned char *buf,
-- uint32_t offset, uint32_t writelen, uint32_t *retlen);
--int jffs2_do_create(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, struct jffs2_inode_info *f, struct jffs2_raw_inode *ri, const char *name, int namelen);
--int jffs2_do_unlink(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, const char *name, int namelen, struct jffs2_inode_info *dead_f);
--int jffs2_do_link (struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, uint32_t ino, uint8_t type, const char *name, int namelen);
--
-+struct inode *jffs2_new_inode (struct inode *dir_i, int mode, struct jffs2_raw_inode *ri);
-+struct jffs2_full_dnode *jffs2_write_dnode(struct inode *inode, struct jffs2_raw_inode *ri, const unsigned char *data, __u32 datalen, __u32 flash_ofs, __u32 *writelen);
-+struct jffs2_full_dirent *jffs2_write_dirent(struct inode *inode, struct jffs2_raw_dirent *rd, const unsigned char *name, __u32 namelen, __u32 flash_ofs, __u32 *writelen);
-
- /* readinode.c */
--int jffs2_truncate_fraglist_1 (struct jffs2_sb_info *c, rb_root_t *list, uint32_t size);
--#ifdef CONFIG_JFFS2_DYNFRAGTREE
--static inline void jffs2_truncate_fraglist (struct jffs2_sb_info *c, struct jffs2_inode_info *f, uint32_t size)
--{
-- f->nr_frags -= jffs2_truncate_fraglist_1(c, &f->fragtree, size);
--}
--int jffs2_add_full_dnode_to_fraglist_1(struct jffs2_sb_info *c, rb_root_t *list, struct jffs2_full_dnode *fn, int* added_frags);
--static inline int jffs2_add_full_dnode_to_fraglist(struct jffs2_sb_info *c, rb_root_t *list, struct jffs2_full_dnode *fn)
--{
-- int dummy = 0;
-- return jffs2_add_full_dnode_to_fraglist_1(c, list, fn, &dummy);
--}
--
--#define ADDED_FRAGS_INC() ((*added_frags)++)
--#define ADDED_FRAGS_DEC() ((*added_frags)--)
--#define CLEAR_NR_FRAGS(f) ((f)->nr_frags = 0)
--
--static inline void jffs2_check_nr_frags(struct jffs2_inode_info *f)
--{
-- struct jffs2_node_frag *frag;
-- uint32_t count = 0;
-- for (frag = frag_first(&f->fragtree); frag; frag = frag_next(frag))
-- count++;
-- if (count != f->nr_frags) {
-- printk("ino #%lu: nr_frags:%u != %u\n", OFNI_EDONI_2SFFJ(f)->i_ino, f->nr_frags, count);
-- }
-- else
-- printk("ino #%lu: nr_frags:%u\n", OFNI_EDONI_2SFFJ(f)->i_ino, f->nr_frags);
--}
--#else
--static inline void jffs2_truncate_fraglist (struct jffs2_sb_info *c, struct jffs2_inode_info *f, uint32_t size)
--{
-- jffs2_truncate_fraglist_1(c, &f->fragtree, size);
--}
--int jffs2_add_full_dnode_to_fraglist(struct jffs2_sb_info *c, rb_root_t *list, struct jffs2_full_dnode *fn);
--
--#define ADDED_FRAGS_INC()
--#define ADDED_FRAGS_DEC()
--#define CLEAR_NR_FRAGS(f)
--#endif
-+void jffs2_truncate_fraglist (struct jffs2_sb_info *c, struct jffs2_node_frag **list, __u32 size);
-+int jffs2_add_full_dnode_to_fraglist(struct jffs2_sb_info *c, struct jffs2_node_frag **list, struct jffs2_full_dnode *fn);
- int jffs2_add_full_dnode_to_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, struct jffs2_full_dnode *fn);
--int jffs2_do_read_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
-- uint32_t ino, struct jffs2_raw_inode *latest_node);
--void jffs2_do_clear_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f);
-+void jffs2_read_inode (struct inode *);
-+void jffs2_clear_inode (struct inode *);
-
- /* malloc.c */
-+void jffs2_free_tmp_dnode_info_list(struct jffs2_tmp_dnode_info *tn);
-+void jffs2_free_full_dirent_list(struct jffs2_full_dirent *fd);
-+
- int jffs2_create_slab_caches(void);
- void jffs2_destroy_slab_caches(void);
-
-@@ -411,85 +299,52 @@
- void jffs2_free_inode_cache(struct jffs2_inode_cache *);
-
- /* gc.c */
--int jffs2_garbage_collect_pass(struct jffs2_sb_info *c, jffs2_gcmode_t);
-+int jffs2_garbage_collect_pass(struct jffs2_sb_info *c);
-+
-+/* background.c */
-+int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c);
-+void jffs2_stop_garbage_collect_thread(struct jffs2_sb_info *c);
-+void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c);
-+
-+/* dir.c */
-+extern struct file_operations jffs2_dir_operations;
-+extern struct inode_operations jffs2_dir_inode_operations;
-+
-+/* file.c */
-+extern struct file_operations jffs2_file_operations;
-+extern struct inode_operations jffs2_file_inode_operations;
-+extern struct address_space_operations jffs2_file_address_operations;
-+int jffs2_null_fsync(struct file *, struct dentry *, int);
-+int jffs2_setattr (struct dentry *dentry, struct iattr *iattr);
-+int jffs2_do_readpage_nolock (struct inode *inode, struct page *pg);
-+int jffs2_do_readpage_unlock (struct inode *inode, struct page *pg);
-+int jffs2_readpage (struct file *, struct page *);
-+int jffs2_prepare_write (struct file *, struct page *, unsigned, unsigned);
-+int jffs2_commit_write (struct file *, struct page *, unsigned, unsigned);
-+
-+/* ioctl.c */
-+int jffs2_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
-
- /* read.c */
- int jffs2_read_dnode(struct jffs2_sb_info *c, struct jffs2_full_dnode *fd, unsigned char *buf, int ofs, int len);
--int jffs2_read_inode_range(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
-- unsigned char *buf, uint32_t offset, uint32_t len);
--char *jffs2_getlink(struct jffs2_sb_info *c, struct jffs2_inode_info *f);
--
-
- /* compr.c */
- unsigned char jffs2_compress(unsigned char *data_in, unsigned char *cpage_out,
-- uint32_t *datalen, uint32_t *cdatalen);
-+ __u32 *datalen, __u32 *cdatalen);
- int jffs2_decompress(unsigned char comprtype, unsigned char *cdata_in,
-- unsigned char *data_out, uint32_t cdatalen, uint32_t datalen);
-+ unsigned char *data_out, __u32 cdatalen, __u32 datalen);
-
- /* scan.c */
- int jffs2_scan_medium(struct jffs2_sb_info *c);
--void jffs2_rotate_lists(struct jffs2_sb_info *c);
-
- /* build.c */
--int jffs2_do_mount_fs(struct jffs2_sb_info *c);
-+int jffs2_build_filesystem(struct jffs2_sb_info *c);
-+
-+/* symlink.c */
-+extern struct inode_operations jffs2_symlink_inode_operations;
-
- /* erase.c */
- void jffs2_erase_block(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
- void jffs2_erase_pending_blocks(struct jffs2_sb_info *c);
- void jffs2_mark_erased_blocks(struct jffs2_sb_info *c);
- void jffs2_erase_pending_trigger(struct jffs2_sb_info *c);
--
--#ifdef CONFIG_JFFS2_FS_NAND
--/* wbuf.c */
--int jffs2_flush_wbuf(struct jffs2_sb_info *c, int pad);
--int jffs2_check_nand_cleanmarker(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
--int jffs2_write_nand_cleanmarker(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
--int jffs2_nand_read_failcnt(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
--#endif
--
--/* compr_zlib.c */
--int jffs2_zlib_init(void);
--void jffs2_zlib_exit(void);
--
--/* dynamic construction of fragtree */
--#ifdef CONFIG_JFFS2_DYNFRAGTREE
--int jffs2_construct_fragtree(struct jffs2_sb_info*, struct jffs2_inode_info*);
--static inline int jffs2_construct_fragtree_nolock_if_missing(struct jffs2_sb_info* c,
-- struct jffs2_inode_info* f)
--{
-- if (S_ISREG(OFNI_EDONI_2SFFJ(f)->i_mode) && ! frag_first(&f->fragtree))
-- return jffs2_construct_fragtree(c, f);
-- else
-- return 0;
--}
--
--static inline int jffs2_construct_fragtree_if_missing(struct jffs2_sb_info* c,
-- struct jffs2_inode_info* f)
--{
-- if (S_ISREG(OFNI_EDONI_2SFFJ(f)->i_mode) && ! frag_first(&f->fragtree)) {
-- int ret;
--
-- down(&f->sem);
-- ret = jffs2_construct_fragtree(c, f);
-- up(&f->sem);
--
-- return ret;
-- }
-- else
-- return 0;
--}
--#else
--static inline int jffs2_construct_fragtree_nolock_if_missing(struct jffs2_sb_info* c,
-- struct jffs2_inode_info* f)
--{
-- return 0;
--}
--
--static inline int jffs2_construct_fragtree_if_missing(struct jffs2_sb_info* c,
-- struct jffs2_inode_info* f)
--{
-- return 0;
--}
--#endif
--
--#endif /* __JFFS2_NODELIST_H__ */
-diff -Nur linux/fs/jffs2/nodemerge.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/nodemerge.c
---- linux/fs/jffs2/nodemerge.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/nodemerge.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,118 +0,0 @@
--/*
-- * fs/jffs2/nodemerge.c
-- *
-- * Copyright (C) 2002 Lineo Japan, Inc.
-- *
-- * May be copied or modified under the terms of the GNU General Public
-- * License. See linux/COPYING for more information.
-- *
-- * $Id: nodemerge.c,v 1.4 2002/12/19 02:42:45 yamade Exp $
-- *
-- * ChangLog:
-- * 05-Dec-2002 SHARP nodemerge-thershold is changable
-- */
--
--#include <linux/kernel.h>
--#include <linux/fs.h>
--#include <linux/rbtree.h>
--#include <linux/pagemap.h>
--#include <linux/jffs2_fs_i.h>
--#include "nodelist.h"
--#include "nodemerge.h"
--
--/*
-- * return number of jffs2_node_frags for specified page.
-- */
--static int
--jffs2_count_node_frags(rb_root_t* fragtree,
-- unsigned long page_index)
--{
-- struct jffs2_node_frag* frag;
-- uint32_t offset = page_index << PAGE_CACHE_SHIFT;
-- uint32_t next_offset = (page_index + 1) << PAGE_CACHE_SHIFT;
-- int count = 0;
--
-- for (frag = jffs2_lookup_node_frag(fragtree, offset);
-- frag && frag->ofs < offset; frag = frag_next(frag))
-- ;
-- while (frag && frag->ofs < next_offset) {
-- count++;
-- frag = frag_next(frag);
-- }
--
-- return count;
--}
--
--
--static uint32_t
--frag_totlen(const struct jffs2_node_frag* frag)
--{
-- return frag->node ? frag->node->raw->totlen : 0;
--}
--
--
--/*
-- * return most dirty block in the page.
-- */
--static struct jffs2_eraseblock*
--jffs2_most_dirty_block_in_page(const struct jffs2_sb_info* c,
-- rb_root_t* fragtree,
-- unsigned long page_index)
--{
-- struct jffs2_node_frag* frag;
-- uint32_t offset = page_index << PAGE_CACHE_SHIFT;
-- uint32_t next_offset = (page_index + 1) << PAGE_CACHE_SHIFT;
-- struct jffs2_eraseblock* ret_jeb = 0;
-- uint32_t dirty_size = 0;
--
-- for (frag = jffs2_lookup_node_frag(fragtree, offset);
-- frag && frag->ofs < next_offset; frag = frag_next(frag)) {
-- struct jffs2_eraseblock* jeb;
--
-- if (! frag->node)
-- continue;
--
-- jeb = &c->blocks[frag->node->raw->flash_offset / c->sector_size];
-- if (jeb == c->gcblock) /* this page is been gcing */
-- return NULL;
-- else if (jeb != c->nextblock &&
-- jeb->wasted_size + jeb->dirty_size + frag_totlen(frag) > dirty_size) {
-- ret_jeb = jeb;
-- dirty_size = jeb->wasted_size + jeb->dirty_size;
-- }
-- }
-- return ret_jeb;
--}
--
--
--/*
-- * Must be called with the f->sem held.
-- */
--void
--jffs2_merge_nodes(struct jffs2_sb_info* c,
-- struct jffs2_inode_info* f,
-- uint32_t size, int frags_threshold)
--{
-- unsigned long i;
-- unsigned long nr_pages = (size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
--
-- for (i = 0; i < nr_pages; i++) {
-- struct jffs2_eraseblock* jeb;
--
-- if (jffs2_count_node_frags(&f->fragtree, i) <= frags_threshold)
-- continue;
--
-- jeb = jffs2_most_dirty_block_in_page(c, &f->fragtree, i);
-- if (! jeb)
-- continue;
--
-- /* must do erase_completion_lock, because jeb may be linked to
-- * the free_list */
-- spin_lock_bh(&c->erase_completion_lock);
-- list_del(&jeb->list);
-- list_add_tail(&jeb->list, &c->nodemerge_list);
-- spin_unlock_bh(&c->erase_completion_lock);
-- }
--
-- jffs2_garbage_collect_trigger(c);
--}
-diff -Nur linux/fs/jffs2/nodemerge.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/nodemerge.h
---- linux/fs/jffs2/nodemerge.h 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/nodemerge.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,24 +0,0 @@
--/*
-- * fs/jffs2/nodemerge.h
-- *
-- * Copyright (C) 2002 Lineo Japan, Inc.
-- *
-- * May be copied or modified under the terms of the GNU General Public
-- * License. See linux/COPYING for more information.
-- *
-- * $Id: nodemerge.h,v 1.3 2002/12/19 02:42:45 yamade Exp $
-- *
-- * ChangLog:
-- * 05-Dec-2002 SHARP nodemerge-thershold is changable
-- */
--
--#ifndef __JFFS2_NODEMERGE_H__
--#define __JFFS2_NODEMERGE_H__
--
--#ifdef CONFIG_JFFS2_NODEMERGE
--void jffs2_merge_nodes(struct jffs2_sb_info*, struct jffs2_inode_info*, uint32_t, int);
--#else
--static inline void jffs2_merge_nodes(struct jffs2_sb_info* c, struct jffs2_inode_info* f, uint32_t size, int frags_threshold) { }
--#endif
--
--#endif
-diff -Nur linux/fs/jffs2/nodemgmt.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/nodemgmt.c
---- linux/fs/jffs2/nodemgmt.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/nodemgmt.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,37 +1,43 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: nodemgmt.c,v 1.77 2002/09/06 16:46:29 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
- *
-- * ChangeLog:
-- * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode
-- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility
-- * 11-Nov-2002 Lineo Japan, Inc. add reserved blocks for superuser
-- * 29-Oct-2002 Lineo Japan, Inc. add reserved blocks for badblocks
-- * add c->cont_gc_count
-- * 24-Oct-2002 Lineo Japan, Inc. separate jffs2_reserve_space into
-- * *_normal and *_deletion
-- *
-- * ChangeLog:
-- * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode
-- * 24-Nov-2002 SHARP modify storage-full conditions, and add erasing_dirty_size
-- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility
-- * 11-Nov-2002 Lineo Japan, Inc. add reserved blocks for superuser
-- * 29-Oct-2002 Lineo Japan, Inc. add reserved blocks for badblocks
-- * add c->cont_gc_count
-- * 24-Oct-2002 Lineo Japan, Inc. separate jffs2_reserve_space into
-- * *_normal and *_deletion
-+ * $Id: nodemgmt.c,v 1.45.2.1 2002/02/23 14:13:34 dwmw2 Exp $
- *
- */
-
- #include <linux/kernel.h>
- #include <linux/slab.h>
-+#include <linux/jffs2.h>
- #include <linux/mtd/mtd.h>
- #include <linux/interrupt.h>
- #include "nodelist.h"
-@@ -56,134 +62,17 @@
- * for the requested allocation.
- */
-
--static int jffs2_do_reserve_space(struct jffs2_sb_info *c, uint32_t minsize, uint32_t *ofs, uint32_t *len);
-+static int jffs2_do_reserve_space(struct jffs2_sb_info *c, __u32 minsize, __u32 *ofs, __u32 *len);
-
--static inline int jffs2_reserve_space_normal(struct jffs2_sb_info *c, uint32_t minsize, uint32_t *ofs, uint32_t *len)
-+int jffs2_reserve_space(struct jffs2_sb_info *c, __u32 minsize, __u32 *ofs, __u32 *len, int prio)
- {
-- int ret;
-- int reserved_blocks_root = capable(CAP_SYS_ADMIN) ? 0 : JFFS2_RESERVED_BLOCKS_ROOT;
-- int reserved_blocks = JFFS2_RESERVED_BLOCKS_WRITE + reserved_blocks_root;
-- uint32_t dirty_now, erasing_dirty_now, nonerasing_dirty_now;
-- int32_t avail_blocks, avail_blocks_old;
--
-- avail_blocks_old = -1;
--
-- do {
-- while(NR_AVAIL_BLOCKS(c) < reserved_blocks) {
-- up(&c->alloc_sem);
--
-- dirty_now = c->dirty_size;
-- erasing_dirty_now = c->erasing_dirty_size;
-- nonerasing_dirty_now = ((dirty_now >= erasing_dirty_now) ? (dirty_now - erasing_dirty_now) : 0);
-- avail_blocks = NR_AVAIL_BLOCKS(c);
--
-- if (avail_blocks_old != avail_blocks){
-- //printk(KERN_DEBUG "jffs2-normal-log: TIME=%d, NR_AVAIL_BLOCKS=%d, avail_blocks_old=%d, cont_gc_count=%d, dirty_size=%d, free_size=%d, erasing_size=%d, erasing_dirty_size=%d\n", jiffies, avail_blocks, avail_blocks_old, c->cont_gc_count, dirty_now, c->free_size, c->erasing_size, erasing_dirty_now);
-- avail_blocks_old = avail_blocks;
-- }
--
-- if (c->cont_gc_count >= JFFS2_MAX_CONT_GC ||
-- avail_blocks <= 1 + reserved_blocks_root ||
-- dirty_now < c->sector_size ||
-- nonerasing_dirty_now / c->sector_size < JFFS2_RESERVED_BLOCKS_DIRTY ||
-- avail_blocks + nonerasing_dirty_now / c->sector_size - JFFS2_RESERVED_BLOCKS_DIRTY < reserved_blocks){
--
-- D1(printk(KERN_DEBUG "jffs2-normal-err: TIME=%lu, NR_AVAIL_BLOCKS=%d, avail_blocks_old=%d, cont_gc_count=%d, dirty_size=%d, free_size=%d, erasing_size=%d, erasing_dirty_size=%d\n", jiffies, avail_blocks, avail_blocks_old, c->cont_gc_count, dirty_now, c->free_size, c->erasing_size, erasing_dirty_now));
-- spin_unlock_bh(&c->erase_completion_lock);
-- return -ENOSPC;
-- }
-- c->cont_gc_count++;
--
-- D1(printk(KERN_DEBUG "Triggering GC pass. nr_free_blocks %d, nr_erasing_blocks %d, free_size 0x%08x, dirty_size 0x%08x, wasted_size 0x%08x, used_size 0x%08x, erasing_size 0x%08x, bad_size 0x%08x (total 0x%08x of 0x%08x)\n",
-- c->nr_free_blocks, c->nr_erasing_blocks, c->free_size, c->dirty_size, c->wasted_size, c->used_size, c->erasing_size, c->bad_size,
-- c->free_size + c->dirty_size + c->wasted_size + c->used_size + c->erasing_size + c->bad_size, c->flash_size));
-- spin_unlock_bh(&c->erase_completion_lock);
--
-- ret = jffs2_garbage_collect_pass(c, GCMODE_NORMAL);
-- if (ret)
-- return ret;
--
-- cond_resched();
--
-- if (signal_pending(current))
-- return -EINTR;
--
-- down(&c->alloc_sem);
-- spin_lock_bh(&c->erase_completion_lock);
-- }
-- c->cont_gc_count = 0;
--
-- ret = jffs2_do_reserve_space(c, minsize, ofs, len);
-- if (ret) {
-- D1(printk(KERN_DEBUG "jffs2_do_reserve_space: ret is %d\n", ret));
-- }
-- } while (ret == -EAGAIN);
-- spin_unlock_bh(&c->erase_completion_lock);
-- if (ret)
-- up(&c->alloc_sem);
-- return ret;
--}
--
--static inline int jffs2_reserve_space_deletion(struct jffs2_sb_info *c, uint32_t minsize, uint32_t *ofs, uint32_t *len)
--{
-- for (;;) {
-- int ret;
--
-- c->cont_gc_count = 0;
-- ret = jffs2_do_reserve_space(c, minsize, ofs, len);
-- if (ret) {
-- D1(printk(KERN_DEBUG "jffs2_do_reserve_space: ret is %d\n", ret));
-- }
--
-- if (ret == -ENOSPC) {
-- up(&c->alloc_sem);
--
-- if ((c->nr_free_blocks + c->nr_erasing_blocks == 0 &&
-- c->nextblock == NULL && list_empty(&c->erasable_list)) ||
-- c->dirty_size < c->sector_size) {
-- D1(printk(KERN_DEBUG "jffs2-deletion-err: TIME=%lu, NR_AVAIL_BLOCKS=%d, dirty_size=%d, free_size=%d, erasing_size=%d, erasing_dirty_size=%d\n", jiffies, NR_AVAIL_BLOCKS(c), c->dirty_size, c->free_size, c->erasing_size, c->erasing_dirty_size));
-- spin_unlock_bh(&c->erase_completion_lock);
-- return -ENOSPC;
-- }
-- spin_unlock_bh(&c->erase_completion_lock);
--
-- D1(printk(KERN_DEBUG "Triggering GC pass. nr_free_blocks %d, nr_erasing_blocks %d, free_size 0x%08x, dirty_size 0x%08x, wasted_size 0x%08x, used_size 0x%08x, erasing_size 0x%08x, bad_size 0x%08x (total 0x%08x of 0x%08x)\n",
-- c->nr_free_blocks, c->nr_erasing_blocks, c->free_size, c->dirty_size, c->wasted_size, c->used_size, c->erasing_size, c->bad_size,
-- c->free_size + c->dirty_size + c->wasted_size + c->used_size + c->erasing_size + c->bad_size, c->flash_size));
-- ret = jffs2_garbage_collect_pass(c, GCMODE_NORMAL);
-- if (ret)
-- return ret;
--
-- cond_resched();
--
-- if (signal_pending(current))
-- return -EINTR;
--
-- down(&c->alloc_sem);
-- spin_lock_bh(&c->erase_completion_lock);
-- }
-- else if (ret != -EAGAIN) {
-- spin_unlock_bh(&c->erase_completion_lock);
-- if (ret)
-- up(&c->alloc_sem);
-- return ret;
-- }
-- }
--}
--
--int jffs2_reserve_space(struct jffs2_sb_info *c, uint32_t minsize, uint32_t *ofs, uint32_t *len, int prio)
--{
--#if 0
- int ret = -EAGAIN;
- int blocksneeded = JFFS2_RESERVED_BLOCKS_WRITE;
--#endif
- /* align it */
- minsize = PAD(minsize);
-
--#if 0
- if (prio == ALLOC_DELETION)
- blocksneeded = JFFS2_RESERVED_BLOCKS_DELETION;
--#endif
-
- D1(printk(KERN_DEBUG "jffs2_reserve_space(): Requested 0x%x bytes\n", minsize));
- down(&c->alloc_sem);
-@@ -193,29 +82,27 @@
- spin_lock_bh(&c->erase_completion_lock);
-
- /* this needs a little more thought */
--#if 0
- while(ret == -EAGAIN) {
- while(c->nr_free_blocks + c->nr_erasing_blocks < blocksneeded) {
- int ret;
-
- up(&c->alloc_sem);
--
- if (c->dirty_size < c->sector_size) {
-- D1(printk(KERN_DEBUG "dirty size 0x%08x < sector size 0x%08x, returning -ENOSPC\n", c->dirty_size, c->sector_size));
-+ D1(printk(KERN_DEBUG "Short on space, but total dirty size 0x%08x < sector size 0x%08x, so -ENOSPC\n", c->dirty_size, c->sector_size));
- spin_unlock_bh(&c->erase_completion_lock);
- return -ENOSPC;
- }
--
-- D1(printk(KERN_DEBUG "Triggering GC pass. nr_free_blocks %d, nr_erasing_blocks %d, free_size 0x%08x, dirty_size 0x%08x, wasted_size 0x%08x, used_size 0x%08x, erasing_size 0x%08x, bad_size 0x%08x (total 0x%08x of 0x%08x)\n",
-- c->nr_free_blocks, c->nr_erasing_blocks, c->free_size, c->dirty_size, c->wasted_size, c->used_size, c->erasing_size, c->bad_size,
-- c->free_size + c->dirty_size + c->wasted_size + c->used_size + c->erasing_size + c->bad_size, c->flash_size));
-+ D1(printk(KERN_DEBUG "Triggering GC pass. nr_free_blocks %d, nr_erasing_blocks %d, free_size 0x%08x, dirty_size 0x%08x, used_size 0x%08x, erasing_size 0x%08x, bad_size 0x%08x (total 0x%08x of 0x%08x)\n",
-+ c->nr_free_blocks, c->nr_erasing_blocks, c->free_size, c->dirty_size, c->used_size, c->erasing_size, c->bad_size,
-+ c->free_size + c->dirty_size + c->used_size + c->erasing_size + c->bad_size, c->flash_size));
- spin_unlock_bh(&c->erase_completion_lock);
-
- ret = jffs2_garbage_collect_pass(c);
- if (ret)
- return ret;
-
-- cond_resched();
-+ if (current->need_resched)
-+ schedule();
-
- if (signal_pending(current))
- return -EINTR;
-@@ -233,23 +120,9 @@
- if (ret)
- up(&c->alloc_sem);
- return ret;
--#else
-- switch (prio) {
-- case ALLOC_NORMAL:
-- return jffs2_reserve_space_normal(c, minsize, ofs, len);
--
-- case ALLOC_DELETION:
-- return jffs2_reserve_space_deletion(c, minsize, ofs, len);
--
-- default:
-- printk("%s: prio = %d not supported\n", __func__, prio);
-- BUG();
-- return -EIO;
-- }
--#endif
- }
-
--int jffs2_reserve_space_gc(struct jffs2_sb_info *c, uint32_t minsize, uint32_t *ofs, uint32_t *len)
-+int jffs2_reserve_space_gc(struct jffs2_sb_info *c, __u32 minsize, __u32 *ofs, __u32 *len)
- {
- int ret = -EAGAIN;
- minsize = PAD(minsize);
-@@ -268,46 +141,20 @@
- }
-
- /* Called with alloc sem _and_ erase_completion_lock */
--static int jffs2_do_reserve_space(struct jffs2_sb_info *c, uint32_t minsize, uint32_t *ofs, uint32_t *len)
-+static int jffs2_do_reserve_space(struct jffs2_sb_info *c, __u32 minsize, __u32 *ofs, __u32 *len)
- {
- struct jffs2_eraseblock *jeb = c->nextblock;
-
- restart:
- if (jeb && minsize > jeb->free_size) {
- /* Skip the end of this block and file it as having some dirty space */
-- /* If there's a pending write to it, flush now */
-- if (c->wbuf_len) {
-- spin_unlock_bh(&c->erase_completion_lock);
-- D1(printk(KERN_DEBUG "jffs2_do_reserve_space: Flushing write buffer\n"));
-- jffs2_flush_wbuf(c, 1);
-- spin_lock_bh(&c->erase_completion_lock);
-- /* We know nobody's going to have changed nextblock. Just continue */
-- }
-- c->wasted_size += jeb->free_size;
-+ c->dirty_size += jeb->free_size;
- c->free_size -= jeb->free_size;
-- jeb->wasted_size += jeb->free_size;
-+ jeb->dirty_size += jeb->free_size;
- jeb->free_size = 0;
--
-- /* Check, if we have a dirty block now, or if it was dirty already */
-- if (ISDIRTY (jeb->wasted_size + jeb->dirty_size)) {
-- c->dirty_size += jeb->wasted_size;
-- c->wasted_size -= jeb->wasted_size;
-- jeb->dirty_size += jeb->wasted_size;
-- jeb->wasted_size = 0;
-- if (VERYDIRTY(c, jeb->dirty_size)) {
-- D1(printk(KERN_DEBUG "Adding full erase block at 0x%08x to very_dirty_list (free 0x%08x, dirty 0x%08x, used 0x%08x\n",
-- jeb->offset, jeb->free_size, jeb->dirty_size, jeb->used_size));
-- list_add_tail(&jeb->list, &c->very_dirty_list);
-- } else {
-- D1(printk(KERN_DEBUG "Adding full erase block at 0x%08x to dirty_list (free 0x%08x, dirty 0x%08x, used 0x%08x\n",
-- jeb->offset, jeb->free_size, jeb->dirty_size, jeb->used_size));
-- list_add_tail(&jeb->list, &c->dirty_list);
-- }
-- } else {
-- D1(printk(KERN_DEBUG "Adding full erase block at 0x%08x to clean_list (free 0x%08x, dirty 0x%08x, used 0x%08x\n",
-+ D1(printk(KERN_DEBUG "Adding full erase block at 0x%08x to dirty_list (free 0x%08x, dirty 0x%08x, used 0x%08x\n",
- jeb->offset, jeb->free_size, jeb->dirty_size, jeb->used_size));
-- list_add_tail(&jeb->list, &c->clean_list);
-- }
-+ list_add_tail(&jeb->list, &c->dirty_list);
- c->nextblock = jeb = NULL;
- }
-
-@@ -319,47 +166,20 @@
-
- DECLARE_WAITQUEUE(wait, current);
-
-- if (!c->nr_erasing_blocks &&
-- !list_empty(&c->erasable_list)) {
-- struct jffs2_eraseblock *ejeb;
--
-- ejeb = list_entry(c->erasable_list.next, struct jffs2_eraseblock, list);
-- list_del(&ejeb->list);
-- list_add_tail(&ejeb->list, &c->erase_pending_list);
-- c->erasing_dirty_size += ejeb->dirty_size;
-- c->nr_erasing_blocks++;
-- jffs2_erase_pending_trigger(c);
-- D1(printk(KERN_DEBUG "jffs2_do_reserve_space: Triggering erase of erasable block at 0x%08x\n",
-- ejeb->offset));
-- }
--
-- if (!c->nr_erasing_blocks &&
-- !list_empty(&c->erasable_pending_wbuf_list)) {
-- D1(printk(KERN_DEBUG "jffs2_do_reserve_space: Flushing write buffer\n"));
-- /* c->nextblock is NULL, no update to c->nextblock allowed */
-- spin_unlock_bh(&c->erase_completion_lock);
-- jffs2_flush_wbuf(c, 1);
-- spin_lock_bh(&c->erase_completion_lock);
-- /* Have another go. It'll be on the erasable_list now */
-- return -EAGAIN;
-- }
--
- if (!c->nr_erasing_blocks) {
-+// if (list_empty(&c->erasing_list) && list_empty(&c->erase_pending_list) && list_empty(c->erase_complete_list)) {
- /* Ouch. We're in GC, or we wouldn't have got here.
- And there's no space left. At all. */
-- printk(KERN_CRIT "Argh. No free space left for GC. nr_erasing_blocks is %d. nr_free_blocks is %d. (erasableempty: %s, erasingempty: %s, erasependingempty: %s)\n",
-- c->nr_erasing_blocks, c->nr_free_blocks, list_empty(&c->erasable_list)?"yes":"no",
-- list_empty(&c->erasing_list)?"yes":"no", list_empty(&c->erase_pending_list)?"yes":"no");
-- printk(KERN_DEBUG "jffs2-doreserve-err: TIME=%lu, NR_AVAIL_BLOCKS=%d, dirty_size=%d, free_size=%d, erasing_size=%d, erasing_dirty_size=%d\n", jiffies, NR_AVAIL_BLOCKS(c), c->dirty_size, c->free_size, c->erasing_size, c->erasing_dirty_size);
-+ printk(KERN_CRIT "Argh. No free space left for GC. nr_erasing_blocks is %d. nr_free_blocks is %d. (erasingempty: %s, erasependingempty: %s)\n",
-+ c->nr_erasing_blocks, c->nr_free_blocks, list_empty(&c->erasing_list)?"yes":"no", list_empty(&c->erase_pending_list)?"yes":"no");
- return -ENOSPC;
- }
- /* Make sure this can't deadlock. Someone has to start the erases
- of erase_pending blocks */
- set_current_state(TASK_INTERRUPTIBLE);
- add_wait_queue(&c->erase_wait, &wait);
-- D1(printk(KERN_DEBUG "Waiting for erases to complete. erasing_blocks is %d. (erasableempty: %s, erasingempty: %s, erasependingempty: %s)\n",
-- c->nr_erasing_blocks, list_empty(&c->erasable_list)?"yes":"no",
-- list_empty(&c->erasing_list)?"yes":"no", list_empty(&c->erase_pending_list)?"yes":"no"));
-+ D1(printk(KERN_DEBUG "Waiting for erases to complete. erasing_blocks is %d. (erasingempty: %s, erasependingempty: %s)\n",
-+ c->nr_erasing_blocks, list_empty(&c->erasing_list)?"yes":"no", list_empty(&c->erase_pending_list)?"yes":"no"));
- if (!list_empty(&c->erase_pending_list)) {
- D1(printk(KERN_DEBUG "Triggering pending erases\n"));
- jffs2_erase_pending_trigger(c);
-@@ -381,8 +201,7 @@
- list_del(next);
- c->nextblock = jeb = list_entry(next, struct jffs2_eraseblock, list);
- c->nr_free_blocks--;
--
-- if (jeb->free_size != c->sector_size - c->cleanmarker_size) {
-+ if (jeb->free_size != c->sector_size - sizeof(struct jffs2_unknown_node)) {
- printk(KERN_WARNING "Eep. Block 0x%08x taken from free_list had free_size of 0x%08x!!\n", jeb->offset, jeb->free_size);
- goto restart;
- }
-@@ -391,20 +210,6 @@
- enough space */
- *ofs = jeb->offset + (c->sector_size - jeb->free_size);
- *len = jeb->free_size;
--
-- if (jeb->used_size == PAD(sizeof(struct jffs2_unknown_node)) &&
-- !jeb->first_node->next_in_ino) {
-- /* Only node in it beforehand was a CLEANMARKER node (we think).
-- So mark it obsolete now that there's going to be another node
-- in the block. This will reduce used_size to zero but We've
-- already set c->nextblock so that jffs2_mark_node_obsolete()
-- won't try to refile it to the dirty_list.
-- */
-- spin_unlock_bh(&c->erase_completion_lock);
-- jffs2_mark_node_obsolete(c, jeb->first_node);
-- spin_lock_bh(&c->erase_completion_lock);
-- }
--
- D1(printk(KERN_DEBUG "jffs2_do_reserve_space(): Giving 0x%x bytes at 0x%x\n", *len, *ofs));
- return 0;
- }
-@@ -412,9 +217,9 @@
- /**
- * jffs2_add_physical_node_ref - add a physical node reference to the list
- * @c: superblock info
-- * @new: new node reference to add
-+ * @ofs: physical location of this physical node
- * @len: length of this physical node
-- * @dirty: dirty flag for new node
-+ * @ino: inode number with which this physical node is associated
- *
- * Should only be used to report nodes for which space has been allocated
- * by jffs2_reserve_space.
-@@ -422,57 +227,48 @@
- * Must be called with the alloc_sem held.
- */
-
--int jffs2_add_physical_node_ref(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *new)
-+int jffs2_add_physical_node_ref(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *new, __u32 len, int dirty)
- {
- struct jffs2_eraseblock *jeb;
-- uint32_t len = new->totlen;
-
-- jeb = &c->blocks[new->flash_offset / c->sector_size];
-- D1(printk(KERN_DEBUG "jffs2_add_physical_node_ref(): Node at 0x%x, size 0x%x\n", ref_offset(new), len));
-+ len = PAD(len);
-+ jeb = &c->blocks[(new->flash_offset & ~3) / c->sector_size];
-+ D1(printk(KERN_DEBUG "jffs2_add_physical_node_ref(): Node at 0x%x, size 0x%x\n", new->flash_offset & ~3, len));
- #if 1
-- if (jeb != c->nextblock || (ref_offset(new)) != jeb->offset + (c->sector_size - jeb->free_size)) {
-+ if (jeb != c->nextblock || (new->flash_offset & ~3) != jeb->offset + (c->sector_size - jeb->free_size)) {
- printk(KERN_WARNING "argh. node added in wrong place\n");
- jffs2_free_raw_node_ref(new);
- return -EINVAL;
- }
- #endif
-- spin_lock_bh(&c->erase_completion_lock);
--
- if (!jeb->first_node)
- jeb->first_node = new;
- if (jeb->last_node)
- jeb->last_node->next_phys = new;
- jeb->last_node = new;
-
-+ spin_lock_bh(&c->erase_completion_lock);
- jeb->free_size -= len;
- c->free_size -= len;
-- if (ref_obsolete(new)) {
-+ if (dirty) {
-+ new->flash_offset |= 1;
- jeb->dirty_size += len;
- c->dirty_size += len;
- } else {
- jeb->used_size += len;
- c->used_size += len;
- }
--
-+ spin_unlock_bh(&c->erase_completion_lock);
- if (!jeb->free_size && !jeb->dirty_size) {
- /* If it lives on the dirty_list, jffs2_reserve_space will put it there */
- D1(printk(KERN_DEBUG "Adding full erase block at 0x%08x to clean_list (free 0x%08x, dirty 0x%08x, used 0x%08x\n",
- jeb->offset, jeb->free_size, jeb->dirty_size, jeb->used_size));
-- if (c->wbuf_len) {
-- /* Flush the last write in the block if it's outstanding */
-- spin_unlock_bh(&c->erase_completion_lock);
-- jffs2_flush_wbuf(c, 1);
-- spin_lock_bh(&c->erase_completion_lock);
-- }
--
- list_add_tail(&jeb->list, &c->clean_list);
- c->nextblock = NULL;
- }
- ACCT_SANITY_CHECK(c,jeb);
- ACCT_PARANOIA_CHECK(jeb);
-
-- spin_unlock_bh(&c->erase_completion_lock);
--
- return 0;
- }
-
-@@ -490,14 +286,14 @@
- int blocknr;
- struct jffs2_unknown_node n;
- int ret;
-- size_t retlen;
-+ ssize_t retlen;
-
- if(!ref) {
- printk(KERN_NOTICE "EEEEEK. jffs2_mark_node_obsolete called with NULL node\n");
- return;
- }
-- if (ref_obsolete(ref)) {
-- D1(printk(KERN_DEBUG "jffs2_mark_node_obsolete called with already obsolete node at 0x%08x\n", ref_offset(ref)));
-+ if (ref->flash_offset & 1) {
-+ D1(printk(KERN_DEBUG "jffs2_mark_node_obsolete called with already obsolete node at 0x%08x\n", ref->flash_offset &~3));
- return;
- }
- blocknr = ref->flash_offset / c->sector_size;
-@@ -514,18 +310,10 @@
-
- spin_lock_bh(&c->erase_completion_lock);
- jeb->used_size -= ref->totlen;
-+ jeb->dirty_size += ref->totlen;
- c->used_size -= ref->totlen;
--
-- if ((jeb->dirty_size || ISDIRTY(jeb->wasted_size + ref->totlen)) && jeb != c->nextblock) {
-- jeb->dirty_size += ref->totlen + jeb->wasted_size;
-- c->dirty_size += ref->totlen + jeb->wasted_size;
-- c->wasted_size -= jeb->wasted_size;
-- jeb->wasted_size = 0;
-- } else {
-- jeb->wasted_size += ref->totlen;
-- c->wasted_size += ref->totlen;
-- }
-- ref->flash_offset = ref_offset(ref) | REF_OBSOLETE;
-+ c->dirty_size += ref->totlen;
-+ ref->flash_offset |= 1;
-
- ACCT_SANITY_CHECK(c, jeb);
-
-@@ -540,281 +328,65 @@
- spin_unlock_bh(&c->erase_completion_lock);
- return;
- }
--
- if (jeb == c->nextblock) {
- D2(printk(KERN_DEBUG "Not moving nextblock 0x%08x to dirty/erase_pending list\n", jeb->offset));
-+ } else if (jeb == c->gcblock) {
-+ D2(printk(KERN_DEBUG "Not moving gcblock 0x%08x to dirty/erase_pending list\n", jeb->offset));
-+#if 0 /* We no longer do this here. It can screw the wear levelling. If you have a lot of static
-+ data and a few blocks free, and you just create new files and keep deleting/overwriting
-+ them, then you'd keep erasing and reusing those blocks without ever moving stuff around.
-+ So we leave completely obsoleted blocks on the dirty_list and let the GC delete them
-+ when it finds them there. That way, we still get the 'once in a while, take a clean block'
-+ to spread out the flash usage */
- } else if (!jeb->used_size) {
-- if (jeb == c->gcblock) {
-- D1(printk(KERN_DEBUG "gcblock at 0x%08x completely dirtied. Clearing gcblock...\n", jeb->offset));
-- c->gcblock = NULL;
-- c->flags &= ~JFFS2_SB_FLAG_GCING_A_BLOCK;
-- } else {
-- D1(printk(KERN_DEBUG "Eraseblock at 0x%08x completely dirtied. Removing from (dirty?) list...\n", jeb->offset));
-- list_del(&jeb->list);
-- }
-- if (c->wbuf_len) {
-- D1(printk(KERN_DEBUG "...and adding to erasable_pending_wbuf_list\n"));
-- list_add_tail(&jeb->list, &c->erasable_pending_wbuf_list);
--
-- /* We've changed the rules slightly. After
-- writing a node you now mustn't drop the
-- alloc_sem before you've finished all the
-- list management - this is so that when we
-- get here, we know that no other nodes have
-- been written, and the above check on wbuf
-- is valid - wbuf_len is nonzero IFF the node
-- which obsoletes this node is still in the
-- wbuf.
--
-- So we BUG() if that new rule is broken, to
-- make sure we catch it and fix it.
-- */
-- if (!down_trylock(&c->alloc_sem)) {
-- up(&c->alloc_sem);
-- printk(KERN_CRIT "jffs2_mark_node_obsolete() called with wbuf active but alloc_sem not locked!\n");
-- BUG();
-- }
-- } else {
-- if (jiffies & 127) {
-- /* Most of the time, we just erase it immediately. Otherwise we
-- spend ages scanning it on mount, etc. */
-- D1(printk(KERN_DEBUG "...and adding to erase_pending_list\n"));
-- list_add_tail(&jeb->list, &c->erase_pending_list);
-- c->erasing_dirty_size += jeb->dirty_size;
-- c->nr_erasing_blocks++;
-- jffs2_erase_pending_trigger(c);
-- } else {
-- /* Sometimes, however, we leave it elsewhere so it doesn't get
-- immediately reused, and we spread the load a bit. */
-- D1(printk(KERN_DEBUG "...and adding to erasable_list\n"));
-- list_add_tail(&jeb->list, &c->erasable_list);
-- }
-- }
-+ D1(printk(KERN_DEBUG "Eraseblock at 0x%08x completely dirtied. Removing from (dirty?) list...\n", jeb->offset));
-+ list_del(&jeb->list);
-+ D1(printk(KERN_DEBUG "...and adding to erase_pending_list\n"));
-+ list_add_tail(&jeb->list, &c->erase_pending_list);
-+ c->nr_erasing_blocks++;
-+ jffs2_erase_pending_trigger(c);
-+ // OFNI_BS_2SFFJ(c)->s_dirt = 1;
- D1(printk(KERN_DEBUG "Done OK\n"));
-- } else if (jeb == c->gcblock) {
-- D2(printk(KERN_DEBUG "Not moving gcblock 0x%08x to dirty_list\n", jeb->offset));
-- } else if (ISDIRTY(jeb->dirty_size) && !ISDIRTY(jeb->dirty_size - ref->totlen)) {
-+#endif
-+ } else if (jeb->dirty_size == ref->totlen) {
- D1(printk(KERN_DEBUG "Eraseblock at 0x%08x is freshly dirtied. Removing from clean list...\n", jeb->offset));
- list_del(&jeb->list);
- D1(printk(KERN_DEBUG "...and adding to dirty_list\n"));
- list_add_tail(&jeb->list, &c->dirty_list);
-- } else if (VERYDIRTY(c, jeb->dirty_size) &&
-- !VERYDIRTY(c, jeb->dirty_size - ref->totlen)) {
-- D1(printk(KERN_DEBUG "Eraseblock at 0x%08x is now very dirty. Removing from dirty list...\n", jeb->offset));
-- list_del(&jeb->list);
-- D1(printk(KERN_DEBUG "...and adding to very_dirty_list\n"));
-- list_add_tail(&jeb->list, &c->very_dirty_list);
-- } else {
-- D1(printk(KERN_DEBUG "Eraseblock at 0x%08x not moved anywhere. (free 0x%08x, dirty 0x%08x, used 0x%08x)\n",
-- jeb->offset, jeb->free_size, jeb->dirty_size, jeb->used_size));
-- }
--
-+ }
- spin_unlock_bh(&c->erase_completion_lock);
-
-- if (!jffs2_can_mark_obsolete(c))
-+ if (c->mtd->type != MTD_NORFLASH && c->mtd->type != MTD_RAM)
- return;
-- if (jffs2_is_readonly(c))
-+ if (OFNI_BS_2SFFJ(c)->s_flags & MS_RDONLY)
- return;
-
-- D1(printk(KERN_DEBUG "obliterating obsoleted node at 0x%08x\n", ref_offset(ref)));
-- ret = jffs2_flash_read(c, ref_offset(ref), sizeof(n), &retlen, (char *)&n);
-+ D1(printk(KERN_DEBUG "obliterating obsoleted node at 0x%08x\n", ref->flash_offset &~3));
-+ ret = c->mtd->read(c->mtd, ref->flash_offset &~3, sizeof(n), &retlen, (char *)&n);
- if (ret) {
-- printk(KERN_WARNING "Read error reading from obsoleted node at 0x%08x: %d\n", ref_offset(ref), ret);
-+ printk(KERN_WARNING "Read error reading from obsoleted node at 0x%08x: %d\n", ref->flash_offset &~3, ret);
- return;
- }
- if (retlen != sizeof(n)) {
-- printk(KERN_WARNING "Short read from obsoleted node at 0x%08x: %d\n", ref_offset(ref), retlen);
-+ printk(KERN_WARNING "Short read from obsoleted node at 0x%08x: %d\n", ref->flash_offset &~3, retlen);
- return;
- }
-- if (PAD(je32_to_cpu(n.totlen)) != PAD(ref->totlen)) {
-- printk(KERN_WARNING "Node totlen on flash (0x%08x) != totlen in node ref (0x%08x)\n", je32_to_cpu(n.totlen), ref->totlen);
-+ if (PAD(n.totlen) != PAD(ref->totlen)) {
-+ printk(KERN_WARNING "Node totlen on flash (0x%08x) != totlen in node ref (0x%08x)\n", n.totlen, ref->totlen);
- return;
- }
-- if (!(je16_to_cpu(n.nodetype) & JFFS2_NODE_ACCURATE)) {
-- D1(printk(KERN_DEBUG "Node at 0x%08x was already marked obsolete (nodetype 0x%04x\n", ref_offset(ref), je16_to_cpu(n.nodetype)));
-+ if (!(n.nodetype & JFFS2_NODE_ACCURATE)) {
-+ D1(printk(KERN_DEBUG "Node at 0x%08x was already marked obsolete (nodetype 0x%04x\n", ref->flash_offset &~3, n.nodetype));
- return;
- }
-- /* XXX FIXME: This is ugly now */
-- n.nodetype = cpu_to_je16(je16_to_cpu(n.nodetype) & ~JFFS2_NODE_ACCURATE);
-- ret = jffs2_flash_write(c, ref_offset(ref), sizeof(n), &retlen, (char *)&n);
-+ n.nodetype &= ~JFFS2_NODE_ACCURATE;
-+ ret = c->mtd->write(c->mtd, ref->flash_offset&~3, sizeof(n), &retlen, (char *)&n);
- if (ret) {
-- printk(KERN_WARNING "Write error in obliterating obsoleted node at 0x%08x: %d\n", ref_offset(ref), ret);
-+ printk(KERN_WARNING "Write error in obliterating obsoleted node at 0x%08x: %d\n", ref->flash_offset &~3, ret);
- return;
- }
- if (retlen != sizeof(n)) {
-- printk(KERN_WARNING "Short write in obliterating obsoleted node at 0x%08x: %d\n", ref_offset(ref), retlen);
-+ printk(KERN_WARNING "Short write in obliterating obsoleted node at 0x%08x: %d\n", ref->flash_offset &~3, retlen);
- return;
- }
- }
--
--#if CONFIG_JFFS2_FS_DEBUG > 0
--void jffs2_dump_block_lists(struct jffs2_sb_info *c)
--{
--
--
-- printk(KERN_DEBUG "jffs2_dump_block_lists:\n");
-- printk(KERN_DEBUG "flash_size: %08x\n", c->flash_size);
-- printk(KERN_DEBUG "used_size: %08x\n", c->used_size);
-- printk(KERN_DEBUG "dirty_size: %08x\n", c->dirty_size);
-- printk(KERN_DEBUG "wasted_size: %08x\n", c->wasted_size);
-- printk(KERN_DEBUG "free_size: %08x\n", c->free_size);
-- printk(KERN_DEBUG "erasing_size: %08x\n", c->erasing_size);
-- printk(KERN_DEBUG "bad_size: %08x\n", c->bad_size);
-- printk(KERN_DEBUG "sector_size: %08x\n", c->sector_size);
-- printk(KERN_DEBUG "jffs2_reserved_blocks size: %08x\n",c->sector_size * JFFS2_RESERVED_BLOCKS_WRITE);
--
-- if (c->nextblock) {
-- printk(KERN_DEBUG "nextblock: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", c->nextblock->offset, c->nextblock->used_size, c->nextblock->dirty_size, c->nextblock->wasted_size, c->nextblock->free_size);
-- } else {
-- printk(KERN_DEBUG "nextblock: NULL\n");
-- }
-- if (c->gcblock) {
-- printk(KERN_DEBUG "gcblock: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", c->gcblock->offset, c->gcblock->used_size, c->gcblock->dirty_size, c->gcblock->wasted_size, c->gcblock->free_size);
-- } else {
-- printk(KERN_DEBUG "gcblock: NULL\n");
-- }
-- if (list_empty(&c->clean_list)) {
-- printk(KERN_DEBUG "clean_list: empty\n");
-- } else {
-- struct list_head *this;
-- int numblocks = 0;
-- uint32_t dirty = 0;
--
-- list_for_each(this, &c->clean_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- numblocks ++;
-- dirty += jeb->wasted_size;
--#if 0
-- printk(KERN_DEBUG "clean_list: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->wasted_size, jeb->free_size);
--#endif
-- }
-- printk (KERN_DEBUG "clean_list contains %d blocks with total wasted size %u, average wasted size: %u\n", numblocks, dirty, dirty / numblocks);
-- }
-- if (list_empty(&c->very_dirty_list)) {
-- printk(KERN_DEBUG "very_dirty_list: empty\n");
-- } else {
-- struct list_head *this;
-- int numblocks = 0;
-- uint32_t dirty = 0;
--
-- list_for_each(this, &c->very_dirty_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- numblocks ++;
-- dirty += jeb->dirty_size;
-- printk(KERN_DEBUG "very_dirty_list: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->wasted_size, jeb->free_size);
-- }
-- printk (KERN_DEBUG "Contains %d blocks with total dirty size %u, average dirty size: %u\n", numblocks, dirty, dirty / numblocks);
-- }
-- if (list_empty(&c->dirty_list)) {
-- printk(KERN_DEBUG "dirty_list: empty\n");
-- } else {
-- struct list_head *this;
-- int numblocks = 0;
-- uint32_t dirty = 0;
--
-- list_for_each(this, &c->dirty_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- numblocks ++;
-- dirty += jeb->dirty_size;
-- printk(KERN_DEBUG "dirty_list: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->wasted_size, jeb->free_size);
-- }
-- printk (KERN_DEBUG "Contains %d blocks with total dirty size %u, average dirty size: %u\n", numblocks, dirty, dirty / numblocks);
-- }
-- if (list_empty(&c->erasable_list)) {
-- printk(KERN_DEBUG "erasable_list: empty\n");
-- } else {
-- struct list_head *this;
--
-- list_for_each(this, &c->erasable_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- printk(KERN_DEBUG "erasable_list: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->wasted_size, jeb->free_size);
-- }
-- }
-- if (list_empty(&c->erasing_list)) {
-- printk(KERN_DEBUG "erasing_list: empty\n");
-- } else {
-- struct list_head *this;
--
-- list_for_each(this, &c->erasing_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- printk(KERN_DEBUG "erasing_list: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->wasted_size, jeb->free_size);
-- }
-- }
-- if (list_empty(&c->erase_pending_list)) {
-- printk(KERN_DEBUG "erase_pending_list: empty\n");
-- } else {
-- struct list_head *this;
--
-- list_for_each(this, &c->erase_pending_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- printk(KERN_DEBUG "erase_pending_list: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->wasted_size, jeb->free_size);
-- }
-- }
-- if (list_empty(&c->erasable_pending_wbuf_list)) {
-- printk(KERN_DEBUG "erasable_pending_wbuf_list: empty\n");
-- } else {
-- struct list_head *this;
--
-- list_for_each(this, &c->erasable_pending_wbuf_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- printk(KERN_DEBUG "erase_pending_wbuf_list: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->wasted_size, jeb->free_size);
-- }
-- }
-- if (list_empty(&c->free_list)) {
-- printk(KERN_DEBUG "free_list: empty\n");
-- } else {
-- struct list_head *this;
--#if 1
-- int i = 0;
--#endif
--
-- list_for_each(this, &c->free_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
--#if 0
-- printk(KERN_DEBUG "free_list: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->wasted_size, jeb->free_size);
--#else
-- i++;
--#endif
-- }
--#if 1
-- printk(KERN_DEBUG "free_list: %u\n", i);
--#endif
-- }
-- if (list_empty(&c->bad_list)) {
-- printk(KERN_DEBUG "bad_list: empty\n");
-- } else {
-- struct list_head *this;
--
-- list_for_each(this, &c->bad_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- printk(KERN_DEBUG "bad_list: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->wasted_size, jeb->free_size);
-- }
-- }
-- if (list_empty(&c->bad_used_list)) {
-- printk(KERN_DEBUG "bad_used_list: empty\n");
-- } else {
-- struct list_head *this;
--
-- list_for_each(this, &c->bad_used_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- printk(KERN_DEBUG "bad_used_list: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->wasted_size, jeb->free_size);
-- }
-- }
-- if (list_empty(&c->nodemerge_list)) {
-- printk(KERN_DEBUG "nodemerge_list: empty\n");
-- } else {
-- struct list_head *this;
--
-- list_for_each(this, &c->nodemerge_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-- printk(KERN_DEBUG "nodemereg_list: %08x (used %08x, dirty %08x, wasted %08x, free %08x)\n", jeb->offset, jeb->used_size, jeb->dirty_size, jeb->wasted_size, jeb->free_size);
-- }
-- }
--}
--#endif /* CONFIG_JFFS2_FS_DEBUG */
--
--/*
-- * Local variables:
-- * c-basic-offset: 8
-- * End:
-- */
-diff -Nur linux/fs/jffs2/os-linux.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/os-linux.h
---- linux/fs/jffs2/os-linux.h 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/os-linux.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,155 +0,0 @@
--/*
-- * JFFS2 -- Journalling Flash File System, Version 2.
-- *
-- * Copyright (C) 2002 Red Hat, Inc.
-- *
-- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
-- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-- *
-- * $Id: os-linux.h,v 1.19 2002/05/20 14:56:38 dwmw2 Exp $
-- *
-- * ChangeLog:
-- * 19-Nov-2002 Lineo Japan, Inc. add counter of fragtree elements
-- */
--
--#ifndef __JFFS2_OS_LINUX_H__
--#define __JFFS2_OS_LINUX_H__
--#include <linux/version.h>
--
--#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,2)
--#define JFFS2_INODE_INFO(i) (list_entry(i, struct jffs2_inode_info, vfs_inode))
--#define OFNI_EDONI_2SFFJ(f) (&(f)->vfs_inode)
--#define JFFS2_SB_INFO(sb) (sb->u.generic_sbp)
--#define OFNI_BS_2SFFJ(c) ((struct super_block *)c->os_priv)
--#elif defined(JFFS2_OUT_OF_KERNEL)
--#define JFFS2_INODE_INFO(i) ((struct jffs2_inode_info *) &(i)->u)
--#define OFNI_EDONI_2SFFJ(f) ((struct inode *) ( ((char *)f) - ((char *)(&((struct inode *)NULL)->u)) ) )
--#define JFFS2_SB_INFO(sb) ((struct jffs2_sb_info *) &(sb)->u)
--#define OFNI_BS_2SFFJ(c) ((struct super_block *) ( ((char *)c) - ((char *)(&((struct super_block *)NULL)->u)) ) )
--#else
--#define JFFS2_INODE_INFO(i) (&i->u.jffs2_i)
--#define OFNI_EDONI_2SFFJ(f) ((struct inode *) ( ((char *)f) - ((char *)(&((struct inode *)NULL)->u)) ) )
--#define JFFS2_SB_INFO(sb) (&sb->u.jffs2_sb)
--#define OFNI_BS_2SFFJ(c) ((struct super_block *) ( ((char *)c) - ((char *)(&((struct super_block *)NULL)->u)) ) )
--#endif
--
--
--#define JFFS2_F_I_SIZE(f) (OFNI_EDONI_2SFFJ(f)->i_size)
--#define JFFS2_F_I_MODE(f) (OFNI_EDONI_2SFFJ(f)->i_mode)
--#define JFFS2_F_I_UID(f) (OFNI_EDONI_2SFFJ(f)->i_uid)
--#define JFFS2_F_I_GID(f) (OFNI_EDONI_2SFFJ(f)->i_gid)
--#define JFFS2_F_I_CTIME(f) (OFNI_EDONI_2SFFJ(f)->i_ctime)
--#define JFFS2_F_I_MTIME(f) (OFNI_EDONI_2SFFJ(f)->i_mtime)
--#define JFFS2_F_I_ATIME(f) (OFNI_EDONI_2SFFJ(f)->i_atime)
--
--#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,1)
--#define JFFS2_F_I_RDEV_MIN(f) (minor(OFNI_EDONI_2SFFJ(f)->i_rdev))
--#define JFFS2_F_I_RDEV_MAJ(f) (major(OFNI_EDONI_2SFFJ(f)->i_rdev))
--#else
--#define JFFS2_F_I_RDEV_MIN(f) (MINOR(to_kdev_t(OFNI_EDONI_2SFFJ(f)->i_rdev)))
--#define JFFS2_F_I_RDEV_MAJ(f) (MAJOR(to_kdev_t(OFNI_EDONI_2SFFJ(f)->i_rdev)))
--#endif
--
--static inline void jffs2_init_inode_info(struct jffs2_inode_info *f)
--{
--#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,2)
-- f->highest_version = 0;
-- f->fraglist = NULL;
-- f->metadata = NULL;
-- f->dents = NULL;
-- f->flags = 0;
-- f->usercompr = 0;
--#ifdef CONFIG_JFFS2_DYNFRAGTREE
-- f->nr_frags = 0;
--#endif
--#else
-- memset(f, 0, sizeof(*f));
-- init_MUTEX_LOCKED(&f->sem);
--#endif
--}
--
--#define jffs2_is_readonly(c) (OFNI_BS_2SFFJ(c)->s_flags & MS_RDONLY)
--
--#ifndef CONFIG_JFFS2_FS_NAND
--#define jffs2_can_mark_obsolete(c) (1)
--#define jffs2_cleanmarker_oob(c) (0)
--#define jffs2_write_nand_cleanmarker(c,jeb) (-EIO)
--
--#define jffs2_flash_write(c, ofs, len, retlen, buf) ((c)->mtd->write((c)->mtd, ofs, len, retlen, buf))
--#define jffs2_flash_read(c, ofs, len, retlen, buf) ((c)->mtd->read((c)->mtd, ofs, len, retlen, buf))
--#define jffs2_flush_wbuf(c, flag) do { ; } while(0)
--#define jffs2_nand_read_failcnt(c,jeb) do { ; } while(0)
--#define jffs2_write_nand_badblock(c,jeb) do { ; } while(0)
--#define jffs2_flash_writev jffs2_flash_direct_writev
--#define jffs2_wbuf_timeout NULL
--#define jffs2_wbuf_process NULL
--
--#else /* NAND support present */
--
--#define jffs2_can_mark_obsolete(c) (c->mtd->type == MTD_NORFLASH || c->mtd->type == MTD_RAM)
--#define jffs2_cleanmarker_oob(c) (c->mtd->type == MTD_NANDFLASH)
--
--#define jffs2_flash_write_oob(c, ofs, len, retlen, buf) ((c)->mtd->write_oob((c)->mtd, ofs, len, retlen, buf))
--#define jffs2_flash_read_oob(c, ofs, len, retlen, buf) ((c)->mtd->read_oob((c)->mtd, ofs, len, retlen, buf))
--
--
--/* wbuf.c */
--int jffs2_flash_writev(struct jffs2_sb_info *c, const struct iovec *vecs, unsigned long count, loff_t to, size_t *retlen);
--int jffs2_flash_write(struct jffs2_sb_info *c, loff_t ofs, size_t len, size_t *retlen, const u_char *buf);
--int jffs2_flash_read(struct jffs2_sb_info *c, loff_t ofs, size_t len, size_t *retlen, u_char *buf);
--int jffs2_check_oob_empty(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,int mode);
--int jffs2_check_nand_cleanmarker(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
--int jffs2_write_nand_cleanmarker(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
--int jffs2_write_nand_badblock(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
--void jffs2_wbuf_timeout(unsigned long data);
--void jffs2_wbuf_process(void *data);
--#endif /* NAND */
--
--/* background.c */
--int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c);
--void jffs2_stop_garbage_collect_thread(struct jffs2_sb_info *c);
--void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c);
--
--/* dir.c */
--extern struct file_operations jffs2_dir_operations;
--extern struct inode_operations jffs2_dir_inode_operations;
--
--/* file.c */
--extern struct file_operations jffs2_file_operations;
--extern struct inode_operations jffs2_file_inode_operations;
--extern struct address_space_operations jffs2_file_address_operations;
--int jffs2_fsync(struct file *, struct dentry *, int);
--int jffs2_setattr (struct dentry *dentry, struct iattr *iattr);
--int jffs2_do_readpage_nolock (struct inode *inode, struct page *pg);
--int jffs2_do_readpage_unlock (struct inode *inode, struct page *pg);
--int jffs2_readpage (struct file *, struct page *);
--int jffs2_prepare_write (struct file *, struct page *, unsigned, unsigned);
--int jffs2_commit_write (struct file *, struct page *, unsigned, unsigned);
--
--/* ioctl.c */
--int jffs2_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
--
--/* symlink.c */
--extern struct inode_operations jffs2_symlink_inode_operations;
--
--/* fs.c */
--void jffs2_read_inode (struct inode *);
--void jffs2_clear_inode (struct inode *);
--struct inode *jffs2_new_inode (struct inode *dir_i, int mode,
-- struct jffs2_raw_inode *ri);
--int jffs2_statfs (struct super_block *, struct statfs *);
--void jffs2_write_super (struct super_block *);
--int jffs2_remount_fs (struct super_block *, int *, char *);
--int jffs2_do_fill_super(struct super_block *sb, void *data, int silent);
--
--/* writev.c */
--int jffs2_flash_direct_writev(struct jffs2_sb_info *c, const struct iovec *vecs,
-- unsigned long count, loff_t to, size_t *retlen);
--
--/* super.c */
--
--
--#endif /* __JFFS2_OS_LINUX_H__ */
--
--
-diff -Nur linux/fs/jffs2/pushpull.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/pushpull.c
---- linux/fs/jffs2/pushpull.c 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/pushpull.c 2003-06-23 01:47:04.000000000 +0700
-@@ -0,0 +1,71 @@
-+/*
-+ * JFFS2 -- Journalling Flash File System, Version 2.
-+ *
-+ * Copyright (C) 2001 Red Hat, Inc.
-+ *
-+ * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
-+ *
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
-+ *
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: pushpull.c,v 1.7 2001/09/23 10:04:15 rmk Exp $
-+ *
-+ */
-+
-+#include <linux/string.h>
-+#include "pushpull.h"
-+#include <linux/errno.h>
-+
-+void init_pushpull(struct pushpull *pp, char *buf, unsigned buflen, unsigned ofs, unsigned reserve)
-+{
-+ pp->buf = buf;
-+ pp->buflen = buflen;
-+ pp->ofs = ofs;
-+ pp->reserve = reserve;
-+}
-+
-+
-+int pushbit(struct pushpull *pp, int bit, int use_reserved)
-+{
-+ if (pp->ofs >= pp->buflen - (use_reserved?0:pp->reserve)) {
-+ return -ENOSPC;
-+ }
-+
-+ if (bit) {
-+ pp->buf[pp->ofs >> 3] |= (1<<(7-(pp->ofs &7)));
-+ }
-+ else {
-+ pp->buf[pp->ofs >> 3] &= ~(1<<(7-(pp->ofs &7)));
-+ }
-+ pp->ofs++;
-+
-+ return 0;
-+}
-+
-+int pushedbits(struct pushpull *pp)
-+{
-+ return pp->ofs;
-+}
-diff -Nur linux/fs/jffs2/pushpull.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/pushpull.h
---- linux/fs/jffs2/pushpull.h 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/pushpull.h 2003-06-23 01:47:04.000000000 +0700
-@@ -1,21 +1,42 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: pushpull.h,v 1.8 2002/05/20 14:56:38 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: pushpull.h,v 1.5 2001/09/23 10:04:15 rmk Exp $
- *
- */
-
- #ifndef __PUSHPULL_H__
- #define __PUSHPULL_H__
--
--#include <linux/errno.h>
--
- struct pushpull {
- unsigned char *buf;
- unsigned int buflen;
-@@ -23,36 +44,9 @@
- unsigned int reserve;
- };
-
--
--static inline void init_pushpull(struct pushpull *pp, char *buf, unsigned buflen, unsigned ofs, unsigned reserve)
--{
-- pp->buf = buf;
-- pp->buflen = buflen;
-- pp->ofs = ofs;
-- pp->reserve = reserve;
--}
--
--static inline int pushbit(struct pushpull *pp, int bit, int use_reserved)
--{
-- if (pp->ofs >= pp->buflen - (use_reserved?0:pp->reserve)) {
-- return -ENOSPC;
-- }
--
-- if (bit) {
-- pp->buf[pp->ofs >> 3] |= (1<<(7-(pp->ofs &7)));
-- }
-- else {
-- pp->buf[pp->ofs >> 3] &= ~(1<<(7-(pp->ofs &7)));
-- }
-- pp->ofs++;
--
-- return 0;
--}
--
--static inline int pushedbits(struct pushpull *pp)
--{
-- return pp->ofs;
--}
-+void init_pushpull(struct pushpull *, char *, unsigned, unsigned, unsigned);
-+int pushbit(struct pushpull *pp, int bit, int use_reserved);
-+int pushedbits(struct pushpull *pp);
-
- static inline int pullbit(struct pushpull *pp)
- {
-diff -Nur linux/fs/jffs2/read.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/read.c
---- linux/fs/jffs2/read.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/read.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,31 +1,52 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: read.c,v 1.27 2002/09/06 14:12:44 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
- *
-- * ChangeLog:
-- * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
-+ * $Id: read.c,v 1.13.2.1 2002/02/01 23:32:33 dwmw2 Exp $
- *
- */
-
- #include <linux/kernel.h>
- #include <linux/slab.h>
--#include "crc32.h"
--#include <linux/pagemap.h>
-+#include <linux/jffs2.h>
- #include <linux/mtd/mtd.h>
- #include "nodelist.h"
-+#include "crc32.h"
-
- int jffs2_read_dnode(struct jffs2_sb_info *c, struct jffs2_full_dnode *fd, unsigned char *buf, int ofs, int len)
- {
- struct jffs2_raw_inode *ri;
- size_t readlen;
-- uint32_t crc;
-+ __u32 crc;
- unsigned char *decomprbuf = NULL;
- unsigned char *readbuf = NULL;
- int ret = 0;
-@@ -34,41 +55,35 @@
- if (!ri)
- return -ENOMEM;
-
-- ret = jffs2_flash_read(c, ref_offset(fd->raw), sizeof(*ri), &readlen, (char *)ri);
-+ ret = c->mtd->read(c->mtd, fd->raw->flash_offset & ~3, sizeof(*ri), &readlen, (char *)ri);
- if (ret) {
- jffs2_free_raw_inode(ri);
-- printk(KERN_WARNING "Error reading node from 0x%08x: %d\n", ref_offset(fd->raw), ret);
-+ printk(KERN_WARNING "Error reading node from 0x%08x: %d\n", fd->raw->flash_offset & ~3, ret);
- return ret;
- }
- if (readlen != sizeof(*ri)) {
- jffs2_free_raw_inode(ri);
- printk(KERN_WARNING "Short read from 0x%08x: wanted 0x%x bytes, got 0x%x\n",
-- ref_offset(fd->raw), sizeof(*ri), readlen);
-+ fd->raw->flash_offset & ~3, sizeof(*ri), readlen);
- return -EIO;
- }
- crc = crc32(0, ri, sizeof(*ri)-8);
-
-- D1(printk(KERN_DEBUG "Node read from %08x: node_crc %08x, calculated CRC %08x. dsize %x, csize %x, offset %x, buf %p\n",
-- ref_offset(fd->raw), je32_to_cpu(ri->node_crc),
-- crc, je32_to_cpu(ri->dsize), je32_to_cpu(ri->csize),
-- je32_to_cpu(ri->offset), buf));
-- if (crc != je32_to_cpu(ri->node_crc)) {
-- printk(KERN_WARNING "Node CRC %08x != calculated CRC %08x for node at %08x\n",
-- je32_to_cpu(ri->node_crc), crc, ref_offset(fd->raw));
-+ D1(printk(KERN_DEBUG "Node read from %08x: node_crc %08x, calculated CRC %08x. dsize %x, csize %x, offset %x, buf %p\n", fd->raw->flash_offset & ~3, ri->node_crc, crc, ri->dsize, ri->csize, ri->offset, buf));
-+ if (crc != ri->node_crc) {
-+ printk(KERN_WARNING "Node CRC %08x != calculated CRC %08x for node at %08x\n", ri->node_crc, crc, fd->raw->flash_offset & ~3);
- ret = -EIO;
- goto out_ri;
- }
- /* There was a bug where we wrote hole nodes out with csize/dsize
- swapped. Deal with it */
-- if (ri->compr == JFFS2_COMPR_ZERO && !je32_to_cpu(ri->dsize) &&
-- je32_to_cpu(ri->csize)) {
-+ if (ri->compr == JFFS2_COMPR_ZERO && !ri->dsize && ri->csize) {
- ri->dsize = ri->csize;
-- ri->csize = cpu_to_je32(0);
-+ ri->csize = 0;
- }
-
-- D1(if(ofs + len > je32_to_cpu(ri->dsize)) {
-- printk(KERN_WARNING "jffs2_read_dnode() asked for %d bytes at %d from %d-byte node\n",
-- len, ofs, je32_to_cpu(ri->dsize));
-+ D1(if(ofs + len > ri->dsize) {
-+ printk(KERN_WARNING "jffs2_read_dnode() asked for %d bytes at %d from %d-byte node\n", len, ofs, ri->dsize);
- ret = -EINVAL;
- goto out_ri;
- });
-@@ -85,18 +100,18 @@
- Reading partial node and it's uncompressed - read into readbuf, check CRC, and copy
- Reading partial node and it's compressed - read into readbuf, check checksum, decompress to decomprbuf and copy
- */
-- if (ri->compr == JFFS2_COMPR_NONE && len == je32_to_cpu(ri->dsize)) {
-+ if (ri->compr == JFFS2_COMPR_NONE && len == ri->dsize) {
- readbuf = buf;
- } else {
-- readbuf = kmalloc(je32_to_cpu(ri->csize), GFP_KERNEL);
-+ readbuf = kmalloc(ri->csize, GFP_KERNEL);
- if (!readbuf) {
- ret = -ENOMEM;
- goto out_ri;
- }
- }
- if (ri->compr != JFFS2_COMPR_NONE) {
-- if (len < je32_to_cpu(ri->dsize)) {
-- decomprbuf = kmalloc(je32_to_cpu(ri->dsize), GFP_KERNEL);
-+ if (len < ri->dsize) {
-+ decomprbuf = kmalloc(ri->dsize, GFP_KERNEL);
- if (!decomprbuf) {
- ret = -ENOMEM;
- goto out_readbuf;
-@@ -108,34 +123,31 @@
- decomprbuf = readbuf;
- }
-
-- D2(printk(KERN_DEBUG "Read %d bytes to %p\n", je32_to_cpu(ri->csize),
-- readbuf));
-- ret = jffs2_flash_read(c, (ref_offset(fd->raw)) + sizeof(*ri),
-- je32_to_cpu(ri->csize), &readlen, readbuf);
-+ D2(printk(KERN_DEBUG "Read %d bytes to %p\n", ri->csize, readbuf));
-+ ret = c->mtd->read(c->mtd, (fd->raw->flash_offset &~3) + sizeof(*ri), ri->csize, &readlen, readbuf);
-
-- if (!ret && readlen != je32_to_cpu(ri->csize))
-+ if (!ret && readlen != ri->csize)
- ret = -EIO;
- if (ret)
- goto out_decomprbuf;
-
-- crc = crc32(0, readbuf, je32_to_cpu(ri->csize));
-- if (crc != je32_to_cpu(ri->data_crc)) {
-- printk(KERN_WARNING "Data CRC %08x != calculated CRC %08x for node at %08x\n",
-- je32_to_cpu(ri->data_crc), crc, ref_offset(fd->raw));
-+ crc = crc32(0, readbuf, ri->csize);
-+ if (crc != ri->data_crc) {
-+ printk(KERN_WARNING "Data CRC %08x != calculated CRC %08x for node at %08x\n", ri->data_crc, crc, fd->raw->flash_offset & ~3);
- ret = -EIO;
- goto out_decomprbuf;
- }
- D2(printk(KERN_DEBUG "Data CRC matches calculated CRC %08x\n", crc));
- if (ri->compr != JFFS2_COMPR_NONE) {
-- D2(printk(KERN_DEBUG "Decompress %d bytes from %p to %d bytes at %p\n", ri->csize, readbuf, je32_to_cpu(ri->dsize), decomprbuf));
-- ret = jffs2_decompress(ri->compr, readbuf, decomprbuf, je32_to_cpu(ri->csize), je32_to_cpu(ri->dsize));
-+ D2(printk(KERN_DEBUG "Decompress %d bytes from %p to %d bytes at %p\n", ri->csize, readbuf, ri->dsize, decomprbuf));
-+ ret = jffs2_decompress(ri->compr, readbuf, decomprbuf, ri->csize, ri->dsize);
- if (ret) {
- printk(KERN_WARNING "Error: jffs2_decompress returned %d\n", ret);
- goto out_decomprbuf;
- }
- }
-
-- if (len < je32_to_cpu(ri->dsize)) {
-+ if (len < ri->dsize) {
- memcpy(buf, decomprbuf+ofs, len);
- }
- out_decomprbuf:
-@@ -149,103 +161,3 @@
-
- return ret;
- }
--
--int jffs2_read_inode_range(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
-- unsigned char *buf, uint32_t offset, uint32_t len)
--{
-- uint32_t end = offset + len;
-- struct jffs2_node_frag *frag;
-- int ret;
--
-- D1(printk(KERN_DEBUG "jffs2_read_inode_range: ino #%u, range 0x%08x-0x%08x\n",
-- f->inocache->ino, offset, offset+len));
--
-- ret = jffs2_construct_fragtree_nolock_if_missing(c, f);
-- if (ret) {
-- memset(buf, 0, len);
-- return ret;
-- }
--
-- frag = jffs2_lookup_node_frag(&f->fragtree, offset);
--
-- /* XXX FIXME: Where a single physical node actually shows up in two
-- frags, we read it twice. Don't do that. */
-- /* Now we're pointing at the first frag which overlaps our page */
-- while(offset < end) {
-- D2(printk(KERN_DEBUG "jffs2_read_inode_range: offset %d, end %d\n", offset, end));
-- if (!frag || frag->ofs > offset) {
-- uint32_t holesize = end - offset;
-- if (frag) {
-- D1(printk(KERN_NOTICE "Eep. Hole in ino #%u fraglist. frag->ofs = 0x%08x, offset = 0x%08x\n", f->inocache->ino, frag->ofs, offset));
-- holesize = min(holesize, frag->ofs - offset);
-- D1(jffs2_print_frag_list(f));
-- }
-- D1(printk(KERN_DEBUG "Filling non-frag hole from %d-%d\n", offset, offset+holesize));
-- memset(buf, 0, holesize);
-- buf += holesize;
-- offset += holesize;
-- continue;
-- } else if (frag->ofs < offset && (offset & (PAGE_CACHE_SIZE-1)) != 0) {
-- D1(printk(KERN_NOTICE "Eep. Overlap in ino #%u fraglist. frag->ofs = 0x%08x, offset = 0x%08x\n",
-- f->inocache->ino, frag->ofs, offset));
-- D1(jffs2_print_frag_list(f));
-- memset(buf, 0, end - offset);
-- return -EIO;
-- } else if (!frag->node) {
-- uint32_t holeend = min(end, frag->ofs + frag->size);
-- D1(printk(KERN_DEBUG "Filling frag hole from %d-%d (frag 0x%x 0x%x)\n", offset, holeend, frag->ofs, frag->ofs + frag->size));
-- memset(buf, 0, holeend - offset);
-- buf += holeend - offset;
-- offset = holeend;
-- frag = frag_next(frag);
-- continue;
-- } else {
-- uint32_t readlen;
-- readlen = min(frag->size, end - offset);
-- D1(printk(KERN_DEBUG "Reading %d-%d from node at 0x%x\n", frag->ofs, frag->ofs+readlen, ref_offset(frag->node->raw)));
-- ret = jffs2_read_dnode(c, frag->node, buf, frag->ofs - frag->node->ofs, readlen);
-- D2(printk(KERN_DEBUG "node read done\n"));
-- if (ret) {
-- D1(printk(KERN_DEBUG"jffs2_read_inode_range error %d\n",ret));
-- memset(buf, 0, frag->size);
-- return ret;
-- }
-- }
-- buf += frag->size;
-- offset += frag->size;
-- frag = frag_next(frag);
-- D2(printk(KERN_DEBUG "node read was OK. Looping\n"));
-- }
-- return 0;
--}
--
--/* Core function to read symlink target. */
--char *jffs2_getlink(struct jffs2_sb_info *c, struct jffs2_inode_info *f)
--{
-- char *buf;
-- int ret;
--
-- down(&f->sem);
--
-- if (!f->metadata) {
-- printk(KERN_NOTICE "No metadata for symlink inode #%u\n", f->inocache->ino);
-- up(&f->sem);
-- return ERR_PTR(-EINVAL);
-- }
-- buf = kmalloc(f->metadata->size+1, GFP_USER);
-- if (!buf) {
-- up(&f->sem);
-- return ERR_PTR(-ENOMEM);
-- }
-- buf[f->metadata->size]=0;
--
-- ret = jffs2_read_dnode(c, f->metadata, buf, 0, f->metadata->size);
--
-- up(&f->sem);
--
-- if (ret) {
-- kfree(buf);
-- return ERR_PTR(ret);
-- }
-- return buf;
--}
-diff -Nur linux/fs/jffs2/readinode.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/readinode.c
---- linux/fs/jffs2/readinode.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/readinode.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,88 +1,75 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: readinode.c,v 1.90 2002/09/06 16:46:29 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
- *
-- * ChangeLog:
-- * 19-Nov-2002 Lineo Japan, Inc. add counter of fragtree elements
-- * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
-- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
- *
-- * ChangeLog:
-- * 05-Dec-2002 SHARP nodemerge-thershold is changable
-- * 19-Nov-2002 Lineo Japan, Inc. add counter of fragtree elements
-- * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
-- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: readinode.c,v 1.58.2.5 2002/03/05 22:40:03 dwmw2 Exp $
- *
- */
-
-+/* Given an inode, probably with existing list of fragments, add the new node
-+ * to the fragment list.
-+ */
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/fs.h>
--#include "crc32.h"
--#include <linux/pagemap.h>
- #include <linux/mtd/mtd.h>
--#include <linux/interrupt.h>
-+#include <linux/jffs2.h>
- #include "nodelist.h"
--#include "nodemerge.h"
-+#include "crc32.h"
-
-
--D1(static void jffs2_print_fragtree(rb_root_t *list, int permitbug)
-+D1(void jffs2_print_frag_list(struct jffs2_inode_info *f)
- {
-- struct jffs2_node_frag *this = frag_first(list);
-- uint32_t lastofs = 0;
-- int buggy = 0;
-+ struct jffs2_node_frag *this = f->fraglist;
-
- while(this) {
- if (this->node)
-- printk(KERN_DEBUG "frag %04x-%04x: 0x%08x on flash (*%p). left (%p), right (%p), parent (%p)\n", this->ofs, this->ofs+this->size, ref_offset(this->node->raw), this, frag_left(this), frag_right(this), frag_parent(this));
-+ printk(KERN_DEBUG "frag %04x-%04x: 0x%08x on flash (*%p->%p)\n", this->ofs, this->ofs+this->size, this->node->raw->flash_offset &~3, this, this->next);
- else
-- printk(KERN_DEBUG "frag %04x-%04x: hole (*%p). left (%p} right (%p), parent (%p)\n", this->ofs, this->ofs+this->size, this, frag_left(this), frag_right(this), frag_parent(this));
-- if (this->ofs != lastofs)
-- buggy = 1;
-- lastofs = this->ofs+this->size;
-- this = frag_next(this);
-- }
-- if (buggy && !permitbug) {
-- printk(KERN_CRIT "Frag tree got a hole in it\n");
-- BUG();
-+ printk(KERN_DEBUG "frag %04x-%04x: hole (*%p->%p)\n", this->ofs, this->ofs+this->size, this, this->next);
-+ this = this->next;
- }
--})
--
--D1(void jffs2_print_frag_list(struct jffs2_inode_info *f)
--{
-- jffs2_print_fragtree(&f->fragtree, 0);
--
- if (f->metadata) {
-- printk(KERN_DEBUG "metadata at 0x%08x\n", ref_offset(f->metadata->raw));
-+ printk(KERN_DEBUG "metadata at 0x%08x\n", f->metadata->raw->flash_offset &~3);
- }
- })
-
-
--/* Given an inode, probably with existing list of fragments, add the new node
-- * to the fragment list.
-- */
- int jffs2_add_full_dnode_to_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, struct jffs2_full_dnode *fn)
- {
- int ret;
--
- D1(printk(KERN_DEBUG "jffs2_add_full_dnode_to_inode(ino #%u, f %p, fn %p)\n", f->inocache->ino, f, fn));
-
--#ifdef CONFIG_JFFS2_DYNFRAGTREE
-- {
-- int added_frags = 0;
-- ret = jffs2_add_full_dnode_to_fraglist_1(c, &f->fragtree, fn, &added_frags);
-- if (! ret) f->nr_frags += added_frags;
-- }
--#else
-- ret = jffs2_add_full_dnode_to_fraglist(c, &f->fragtree, fn);
--#endif
-+ ret = jffs2_add_full_dnode_to_fraglist(c, &f->fraglist, fn);
-
- D2(jffs2_print_frag_list(f));
- return ret;
-@@ -95,14 +82,13 @@
- if (!this->node->frags) {
- /* The node has no valid frags left. It's totally obsoleted */
- D2(printk(KERN_DEBUG "Marking old node @0x%08x (0x%04x-0x%04x) obsolete\n",
-- ref_offset(this->node->raw), this->node->ofs, this->node->ofs+this->node->size));
-+ this->node->raw->flash_offset &~3, this->node->ofs, this->node->ofs+this->node->size));
- jffs2_mark_node_obsolete(c, this->node->raw);
- jffs2_free_full_dnode(this->node);
- } else {
-- D2(printk(KERN_DEBUG "Marking old node @0x%08x (0x%04x-0x%04x) REF_NORMAL. frags is %d\n",
-- ref_offset(this->node->raw), this->node->ofs, this->node->ofs+this->node->size,
-+ D2(printk(KERN_DEBUG "Not marking old node @0x%08x (0x%04x-0x%04x) obsolete. frags is %d\n",
-+ this->node->raw->flash_offset &~3, this->node->ofs, this->node->ofs+this->node->size,
- this->node->frags));
-- mark_ref_normal(this->node->raw);
- }
-
- }
-@@ -110,28 +96,27 @@
- }
-
- /* Doesn't set inode->i_size */
--#ifdef CONFIG_JFFS2_DYNFRAGTREE
--int jffs2_add_full_dnode_to_fraglist_1(struct jffs2_sb_info *c, rb_root_t *list, struct jffs2_full_dnode *fn, int* added_frags)
--#else
--int jffs2_add_full_dnode_to_fraglist(struct jffs2_sb_info *c, rb_root_t *list, struct jffs2_full_dnode *fn)
--#endif
-+int jffs2_add_full_dnode_to_fraglist(struct jffs2_sb_info *c, struct jffs2_node_frag **list, struct jffs2_full_dnode *fn)
- {
-- struct jffs2_node_frag *this;
-- struct jffs2_node_frag *newfrag;
-- uint32_t lastend;
-+
-+ struct jffs2_node_frag *this, **prev, *old;
-+ struct jffs2_node_frag *newfrag, *newfrag2;
-+ __u32 lastend = 0;
-+
-
- newfrag = jffs2_alloc_node_frag();
- if (!newfrag) {
- return -ENOMEM;
- }
-
-- if (!fn->raw) {
-- printk(KERN_WARNING "dwmw2 is stupid. j_a_f_d_t_f should never happen with ->raw == NULL\n");
-- BUG();
-- }
--
-- D2(printk(KERN_DEBUG "adding node %04x-%04x @0x%08x on flash, newfrag *%p\n", fn->ofs, fn->ofs+fn->size, ref_offset(fn->raw), newfrag));
-+ D2(if (fn->raw)
-+ printk(KERN_DEBUG "adding node %04x-%04x @0x%08x on flash, newfrag *%p\n", fn->ofs, fn->ofs+fn->size, fn->raw->flash_offset &~3, newfrag);
-+ else
-+ printk(KERN_DEBUG "adding hole node %04x-%04x on flash, newfrag *%p\n", fn->ofs, fn->ofs+fn->size, newfrag));
-
-+ prev = list;
-+ this = *list;
-+
- if (!fn->size) {
- jffs2_free_node_frag(newfrag);
- return 0;
-@@ -141,33 +126,21 @@
- newfrag->size = fn->size;
- newfrag->node = fn;
- newfrag->node->frags = 1;
-+ newfrag->next = (void *)0xdeadbeef;
-
- /* Skip all the nodes which are completed before this one starts */
-- this = jffs2_lookup_node_frag(list, fn->ofs);
--
-- if (this) {
-- D2(printk(KERN_DEBUG "j_a_f_d_t_f: Lookup gave frag 0x%04x-0x%04x; phys 0x%08x (*%p)\n",
-- this->ofs, this->ofs+this->size, this->node?(ref_offset(this->node->raw)):0xffffffff, this));
-+ while(this && fn->ofs >= this->ofs+this->size) {
- lastend = this->ofs + this->size;
-- } else {
-- D2(printk(KERN_DEBUG "j_a_f_d_t_f: Lookup gave no frag\n"));
-- lastend = 0;
-+
-+ D2(printk(KERN_DEBUG "j_a_f_d_t_f: skipping frag 0x%04x-0x%04x; phys 0x%08x (*%p->%p)\n",
-+ this->ofs, this->ofs+this->size, this->node?(this->node->raw->flash_offset &~3):0xffffffff, this, this->next));
-+ prev = &this->next;
-+ this = this->next;
- }
--
-+
- /* See if we ran off the end of the list */
-- if (lastend <= newfrag->ofs) {
-+ if (!this) {
- /* We did */
--
-- /* Check if 'this' node was on the same page as the new node.
-- If so, both 'this' and the new node get marked REF_NORMAL so
-- the GC can take a look.
-- */
-- if ((lastend-1) >> PAGE_CACHE_SHIFT == newfrag->ofs >> PAGE_CACHE_SHIFT) {
-- if (this->node)
-- mark_ref_normal(this->node->raw);
-- mark_ref_normal(fn->raw);
-- }
--
- if (lastend < fn->ofs) {
- /* ... and we need to put a hole in before the new node */
- struct jffs2_node_frag *holefrag = jffs2_alloc_node_frag();
-@@ -175,223 +148,154 @@
- return -ENOMEM;
- holefrag->ofs = lastend;
- holefrag->size = fn->ofs - lastend;
-+ holefrag->next = NULL;
- holefrag->node = NULL;
-- if (this) {
-- /* By definition, the 'this' node has no right-hand child,
-- because there are no frags with offset greater than it.
-- So that's where we want to put the hole */
-- D2(printk(KERN_DEBUG "Adding hole frag (%p) on right of node at (%p)\n", holefrag, this));
-- rb_link_node(&holefrag->rb, &this->rb, &this->rb.rb_right);
-- } else {
-- D2(printk(KERN_DEBUG "Adding hole frag (%p) at root of tree\n", holefrag));
-- rb_link_node(&holefrag->rb, NULL, &list->rb_node);
-- }
-- rb_insert_color(&holefrag->rb, list);
-- ADDED_FRAGS_INC();
-- this = holefrag;
-- }
-- if (this) {
-- /* By definition, the 'this' node has no right-hand child,
-- because there are no frags with offset greater than it.
-- So that's where we want to put the hole */
-- D2(printk(KERN_DEBUG "Adding new frag (%p) on right of node at (%p)\n", newfrag, this));
-- rb_link_node(&newfrag->rb, &this->rb, &this->rb.rb_right);
-- } else {
-- D2(printk(KERN_DEBUG "Adding new frag (%p) at root of tree\n", newfrag));
-- rb_link_node(&newfrag->rb, NULL, &list->rb_node);
-+ *prev = holefrag;
-+ prev = &holefrag->next;
- }
-- rb_insert_color(&newfrag->rb, list);
-- ADDED_FRAGS_INC();
-+ newfrag->next = NULL;
-+ *prev = newfrag;
- return 0;
- }
-
-- D2(printk(KERN_DEBUG "j_a_f_d_t_f: dealing with frag 0x%04x-0x%04x; phys 0x%08x (*%p)\n",
-- this->ofs, this->ofs+this->size, this->node?(ref_offset(this->node->raw)):0xffffffff, this));
-+ D2(printk(KERN_DEBUG "j_a_f_d_t_f: dealing with frag 0x%04x-0x%04x; phys 0x%08x (*%p->%p)\n",
-+ this->ofs, this->ofs+this->size, this->node?(this->node->raw->flash_offset &~3):0xffffffff, this, this->next));
-
-- /* OK. 'this' is pointing at the first frag that newfrag->ofs at least partially obsoletes,
-- * - i.e. newfrag->ofs < this->ofs+this->size && newfrag->ofs >= this->ofs
-+ /* OK. 'this' is pointing at the first frag that fn->ofs at least partially obsoletes,
-+ * - i.e. fn->ofs < this->ofs+this->size && fn->ofs >= this->ofs
- */
-- if (newfrag->ofs > this->ofs) {
-+ if (fn->ofs > this->ofs) {
- /* This node isn't completely obsoleted. The start of it remains valid */
--
-- /* Mark the new node and the partially covered node REF_NORMAL -- let
-- the GC take a look at them */
-- mark_ref_normal(fn->raw);
-- if (this->node)
-- mark_ref_normal(this->node->raw);
--
-- if (this->ofs + this->size > newfrag->ofs + newfrag->size) {
-+ if (this->ofs + this->size > fn->ofs + fn->size) {
- /* The new node splits 'this' frag into two */
-- struct jffs2_node_frag *newfrag2 = jffs2_alloc_node_frag();
-+ newfrag2 = jffs2_alloc_node_frag();
- if (!newfrag2) {
- jffs2_free_node_frag(newfrag);
- return -ENOMEM;
- }
-- D2(printk(KERN_DEBUG "split old frag 0x%04x-0x%04x -->", this->ofs, this->ofs+this->size);
-+ D1(printk(KERN_DEBUG "split old frag 0x%04x-0x%04x -->", this->ofs, this->ofs+this->size);
- if (this->node)
-- printk("phys 0x%08x\n", ref_offset(this->node->raw));
-+ printk("phys 0x%08x\n", this->node->raw->flash_offset &~3);
- else
- printk("hole\n");
- )
--
-- /* New second frag pointing to this's node */
-- newfrag2->ofs = newfrag->ofs + newfrag->size;
-+ newfrag2->ofs = fn->ofs + fn->size;
- newfrag2->size = (this->ofs+this->size) - newfrag2->ofs;
-+ newfrag2->next = this->next;
- newfrag2->node = this->node;
- if (this->node)
- this->node->frags++;
--
-- /* Adjust size of original 'this' */
-+ newfrag->next = newfrag2;
-+ this->next = newfrag;
- this->size = newfrag->ofs - this->ofs;
--
-- /* Now, we know there's no node with offset
-- greater than this->ofs but smaller than
-- newfrag2->ofs or newfrag->ofs, for obvious
-- reasons. So we can do a tree insert from
-- 'this' to insert newfrag, and a tree insert
-- from newfrag to insert newfrag2. */
-- jffs2_fragtree_insert(newfrag, this);
-- rb_insert_color(&newfrag->rb, list);
-- ADDED_FRAGS_INC();
--
-- jffs2_fragtree_insert(newfrag2, newfrag);
-- rb_insert_color(&newfrag2->rb, list);
-- ADDED_FRAGS_INC();
--
- return 0;
- }
- /* New node just reduces 'this' frag in size, doesn't split it */
-- this->size = newfrag->ofs - this->ofs;
--
-- /* Again, we know it lives down here in the tree */
-- jffs2_fragtree_insert(newfrag, this);
-- rb_insert_color(&newfrag->rb, list);
-- ADDED_FRAGS_INC();
-+ this->size = fn->ofs - this->ofs;
-+ newfrag->next = this->next;
-+ this->next = newfrag;
-+ this = newfrag->next;
- } else {
-- /* New frag starts at the same point as 'this' used to. Replace
-- it in the tree without doing a delete and insertion */
-- D2(printk(KERN_DEBUG "Inserting newfrag (*%p),%d-%d in before 'this' (*%p),%d-%d\n",
-- newfrag, newfrag->ofs, newfrag->ofs+newfrag->size,
-- this, this->ofs, this->ofs+this->size));
--
-- rb_replace_node(&this->rb, &newfrag->rb, list);
--
-- if (newfrag->ofs + newfrag->size >= this->ofs+this->size) {
-- D2(printk("Obsoleting node frag %p (%x-%x)\n", this, this->ofs, this->ofs+this->size));
-- jffs2_obsolete_node_frag(c, this);
-- } else {
-- this->ofs += newfrag->size;
-- this->size -= newfrag->size;
--
-- jffs2_fragtree_insert(this, newfrag);
-- rb_insert_color(&this->rb, list);
-- ADDED_FRAGS_INC();
-- return 0;
-- }
-+ D2(printk(KERN_DEBUG "Inserting newfrag (*%p) in before 'this' (*%p)\n", newfrag, this));
-+ *prev = newfrag;
-+ newfrag->next = this;
- }
-- /* OK, now we have newfrag added in the correct place in the tree, but
-- frag_next(newfrag) may be a fragment which is overlapped by it
-+ /* OK, now we have newfrag added in the correct place in the list, but
-+ newfrag->next points to a fragment which may be overlapping it
- */
-- while ((this = frag_next(newfrag)) && newfrag->ofs + newfrag->size >= this->ofs + this->size) {
-- /* 'this' frag is obsoleted completely. */
-- D2(printk("Obsoleting node frag %p (%x-%x) and removing from tree\n", this, this->ofs, this->ofs+this->size));
-- rb_erase(&this->rb, list);
-- jffs2_obsolete_node_frag(c, this);
-- ADDED_FRAGS_DEC();
-+ while (this && newfrag->ofs + newfrag->size >= this->ofs + this->size) {
-+ /* 'this' frag is obsoleted. */
-+ old = this;
-+ this = old->next;
-+ jffs2_obsolete_node_frag(c, old);
- }
- /* Now we're pointing at the first frag which isn't totally obsoleted by
- the new frag */
-+ newfrag->next = this;
-
- if (!this || newfrag->ofs + newfrag->size == this->ofs) {
- return 0;
- }
-- /* Still some overlap but we don't need to move it in the tree */
-+ /* Still some overlap */
- this->size = (this->ofs + this->size) - (newfrag->ofs + newfrag->size);
- this->ofs = newfrag->ofs + newfrag->size;
--
-- /* And mark them REF_NORMAL so the GC takes a look at them */
-- if (this->node)
-- mark_ref_normal(this->node->raw);
-- mark_ref_normal(fn->raw);
--
- return 0;
- }
-
--int jffs2_truncate_fraglist_1 (struct jffs2_sb_info *c, rb_root_t *list, uint32_t size)
-+void jffs2_truncate_fraglist (struct jffs2_sb_info *c, struct jffs2_node_frag **list, __u32 size)
- {
-- struct jffs2_node_frag *frag = jffs2_lookup_node_frag(list, size);
-- int count = 0;
--
- D1(printk(KERN_DEBUG "Truncating fraglist to 0x%08x bytes\n", size));
-
-- /* We know frag->ofs <= size. That's what lookup does for us */
-- if (frag && frag->ofs != size) {
-- if (frag->ofs+frag->size >= size) {
-- D1(printk(KERN_DEBUG "Truncating frag 0x%08x-0x%08x\n", frag->ofs, frag->ofs+frag->size));
-- frag->size = size - frag->ofs;
-- }
-- frag = frag_next(frag);
-- }
-- while (frag && frag->ofs >= size) {
-- struct jffs2_node_frag *next = frag_next(frag);
--
-- D1(printk(KERN_DEBUG "Removing frag 0x%08x-0x%08x\n", frag->ofs, frag->ofs+frag->size));
-- frag_erase(frag, list);
-- jffs2_obsolete_node_frag(c, frag);
--#ifdef CONFIG_JFFS2_DYNFRAGTREE
-- count++;
--#endif
-- frag = next;
-+ while (*list) {
-+ if ((*list)->ofs >= size) {
-+ struct jffs2_node_frag *this = *list;
-+ *list = this->next;
-+ D1(printk(KERN_DEBUG "Removing frag 0x%08x-0x%08x\n", this->ofs, this->ofs+this->size));
-+ jffs2_obsolete_node_frag(c, this);
-+ continue;
-+ } else if ((*list)->ofs + (*list)->size > size) {
-+ D1(printk(KERN_DEBUG "Truncating frag 0x%08x-0x%08x\n", (*list)->ofs, (*list)->ofs + (*list)->size));
-+ (*list)->size = size - (*list)->ofs;
-+ }
-+ list = &(*list)->next;
- }
--
-- return count;
- }
-
- /* Scan the list of all nodes present for this ino, build map of versions, etc. */
-
--int jffs2_do_read_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
-- uint32_t ino, struct jffs2_raw_inode *latest_node)
-+void jffs2_read_inode (struct inode *inode)
- {
- struct jffs2_tmp_dnode_info *tn_list, *tn;
- struct jffs2_full_dirent *fd_list;
-+ struct jffs2_inode_info *f;
- struct jffs2_full_dnode *fn = NULL;
-- uint32_t crc;
-- uint32_t latest_mctime, mctime_ver;
-- uint32_t mdata_ver = 0;
-- size_t retlen;
-+ struct jffs2_sb_info *c;
-+ struct jffs2_raw_inode latest_node;
-+ __u32 latest_mctime, mctime_ver;
-+ __u32 mdata_ver = 0;
- int ret;
-+ ssize_t retlen;
-
-- D2(printk(KERN_DEBUG "jffs2_do_read_inode(): getting inocache\n"));
-+ D1(printk(KERN_DEBUG "jffs2_read_inode(): inode->i_ino == %lu\n", inode->i_ino));
-
-- f->inocache = jffs2_get_ino_cache(c, ino);
-+ f = JFFS2_INODE_INFO(inode);
-+ c = JFFS2_SB_INFO(inode->i_sb);
-
-- D2(printk(KERN_DEBUG "jffs2_do_read_inode(): Got inocache at %p\n", f->inocache));
-+ memset(f, 0, sizeof(*f));
-+ D2(printk(KERN_DEBUG "getting inocache\n"));
-+ init_MUTEX(&f->sem);
-+ f->inocache = jffs2_get_ino_cache(c, inode->i_ino);
-+ D2(printk(KERN_DEBUG "jffs2_read_inode(): Got inocache at %p\n", f->inocache));
-
-- if (!f->inocache && ino == 1) {
-+ if (!f->inocache && inode->i_ino == 1) {
- /* Special case - no root inode on medium */
- f->inocache = jffs2_alloc_inode_cache();
- if (!f->inocache) {
-- printk(KERN_CRIT "jffs2_do_read_inode(): Cannot allocate inocache for root inode\n");
-- return -ENOMEM;
-+ printk(KERN_CRIT "jffs2_read_inode(): Cannot allocate inocache for root inode\n");
-+ make_bad_inode(inode);
-+ return;
- }
-- D1(printk(KERN_DEBUG "jffs2_do_read_inode(): Creating inocache for root inode\n"));
-+ D1(printk(KERN_DEBUG "jffs2_read_inode(): Creating inocache for root inode\n"));
- memset(f->inocache, 0, sizeof(struct jffs2_inode_cache));
- f->inocache->ino = f->inocache->nlink = 1;
- f->inocache->nodes = (struct jffs2_raw_node_ref *)f->inocache;
- jffs2_add_ino_cache(c, f->inocache);
- }
- if (!f->inocache) {
-- printk(KERN_WARNING "jffs2_do_read_inode() on nonexistent ino %u\n", ino);
-- return -ENOENT;
-+ printk(KERN_WARNING "jffs2_read_inode() on nonexistent ino %lu\n", (unsigned long)inode->i_ino);
-+ make_bad_inode(inode);
-+ return;
- }
-- D1(printk(KERN_DEBUG "jffs2_do_read_inode(): ino #%u nlink is %d\n", ino, f->inocache->nlink));
-+ D1(printk(KERN_DEBUG "jffs2_read_inode(): ino #%lu nlink is %d\n", (unsigned long)inode->i_ino, f->inocache->nlink));
-+ inode->i_nlink = f->inocache->nlink;
-
- /* Grab all nodes relevant to this ino */
-- ret = jffs2_get_inode_nodes(c, ino, f, &tn_list, &fd_list, &f->highest_version, &latest_mctime, &mctime_ver);
-+ ret = jffs2_get_inode_nodes(c, inode->i_ino, f, &tn_list, &fd_list, &f->highest_version, &latest_mctime, &mctime_ver);
-
- if (ret) {
-- printk(KERN_CRIT "jffs2_get_inode_nodes() for ino %u returned %d\n", ino, ret);
-- return ret;
-+ printk(KERN_CRIT "jffs2_get_inode_nodes() for ino %lu returned %d\n", inode->i_ino, ret);
-+ make_bad_inode(inode);
-+ return;
- }
- f->dents = fd_list;
-
-@@ -401,7 +305,7 @@
- fn = tn->fn;
-
- if (f->metadata && tn->version > mdata_ver) {
-- D1(printk(KERN_DEBUG "Obsoleting old metadata at 0x%08x\n", ref_offset(f->metadata->raw)));
-+ D1(printk(KERN_DEBUG "Obsoleting old metadata at 0x%08x\n", f->metadata->raw->flash_offset &~3));
- jffs2_mark_node_obsolete(c, f->metadata->raw);
- jffs2_free_full_dnode(f->metadata);
- f->metadata = NULL;
-@@ -413,7 +317,7 @@
- jffs2_add_full_dnode_to_inode(c, f, fn);
- } else {
- /* Zero-sized node at end of version list. Just a metadata update */
-- D1(printk(KERN_DEBUG "metadata @%08x: ver %d\n", ref_offset(fn->raw), tn->version));
-+ D1(printk(KERN_DEBUG "metadata @%08x: ver %d\n", fn->raw->flash_offset &~3, tn->version));
- f->metadata = fn;
- mdata_ver = tn->version;
- }
-@@ -422,137 +326,175 @@
- }
- if (!fn) {
- /* No data nodes for this inode. */
-- if (ino != 1) {
-- printk(KERN_WARNING "jffs2_do_read_inode(): No data nodes found for ino #%u\n", ino);
-+ if (inode->i_ino != 1) {
-+ printk(KERN_WARNING "jffs2_read_inode(): No data nodes found for ino #%lu\n", inode->i_ino);
- if (!fd_list) {
-- return -EIO;
-+ make_bad_inode(inode);
-+ return;
- }
-- printk(KERN_WARNING "jffs2_do_read_inode(): But it has children so we fake some modes for it\n");
-+ printk(KERN_WARNING "jffs2_read_inode(): But it has children so we fake some modes for it\n");
- }
-- latest_node->mode = cpu_to_je32(S_IFDIR|S_IRUGO|S_IWUSR|S_IXUGO);
-- latest_node->version = cpu_to_je32(0);
-- latest_node->atime = latest_node->ctime = latest_node->mtime = cpu_to_je32(0);
-- latest_node->isize = cpu_to_je32(0);
-- latest_node->gid = cpu_to_je16(0);
-- latest_node->uid = cpu_to_je16(0);
-- return 0;
-- }
-+ inode->i_mode = S_IFDIR | S_IRUGO | S_IWUSR | S_IXUGO;
-+ latest_node.version = 0;
-+ inode->i_atime = inode->i_ctime = inode->i_mtime = CURRENT_TIME;
-+ inode->i_nlink = f->inocache->nlink;
-+ inode->i_size = 0;
-+ } else {
-+ __u32 crc;
-
-- ret = jffs2_flash_read(c, ref_offset(fn->raw), sizeof(*latest_node), &retlen, (void *)latest_node);
-- if (ret || retlen != sizeof(*latest_node)) {
-- printk(KERN_NOTICE "MTD read in jffs2_do_read_inode() failed: Returned %d, %ld of %d bytes read\n",
-- ret, (long)retlen, sizeof(*latest_node));
-- /* FIXME: If this fails, there seems to be a memory leak. Find it. */
-- up(&f->sem);
-- jffs2_do_clear_inode(c, f);
-- return ret?ret:-EIO;
-- }
--
-- crc = crc32(0, latest_node, sizeof(*latest_node)-8);
-- if (crc != je32_to_cpu(latest_node->node_crc)) {
-- printk(KERN_NOTICE "CRC failed for read_inode of inode %u at physical location 0x%x\n", ino, ref_offset(fn->raw));
-- up(&f->sem);
-- jffs2_do_clear_inode(c, f);
-- return -EIO;
-- }
-+ ret = c->mtd->read(c->mtd, fn->raw->flash_offset & ~3, sizeof(latest_node), &retlen, (void *)&latest_node);
-+ if (ret || retlen != sizeof(latest_node)) {
-+ printk(KERN_NOTICE "MTD read in jffs2_read_inode() failed: Returned %d, %ld of %d bytes read\n",
-+ ret, (long)retlen, sizeof(latest_node));
-+ jffs2_clear_inode(inode);
-+ make_bad_inode(inode);
-+ return;
-+ }
-+
-+ crc = crc32(0, &latest_node, sizeof(latest_node)-8);
-+ if (crc != latest_node.node_crc) {
-+ printk(KERN_NOTICE "CRC failed for read_inode of inode %ld at physical location 0x%x\n", inode->i_ino, fn->raw->flash_offset & ~3);
-+ jffs2_clear_inode(inode);
-+ make_bad_inode(inode);
-+ return;
-+ }
-+
-+ inode->i_mode = latest_node.mode;
-+ inode->i_uid = latest_node.uid;
-+ inode->i_gid = latest_node.gid;
-+ inode->i_size = latest_node.isize;
-+ if (S_ISREG(inode->i_mode))
-+ jffs2_truncate_fraglist(c, &f->fraglist, latest_node.isize);
-+ inode->i_atime = latest_node.atime;
-+ inode->i_mtime = latest_node.mtime;
-+ inode->i_ctime = latest_node.ctime;
-+ }
-+
-+ /* OK, now the special cases. Certain inode types should
-+ have only one data node, and it's kept as the metadata
-+ node */
-+ if (S_ISBLK(inode->i_mode) || S_ISCHR(inode->i_mode) ||
-+ S_ISLNK(inode->i_mode)) {
-+ if (f->metadata) {
-+ printk(KERN_WARNING "Argh. Special inode #%lu with mode 0%o had metadata node\n", inode->i_ino, inode->i_mode);
-+ jffs2_clear_inode(inode);
-+ make_bad_inode(inode);
-+ return;
-+ }
-+ if (!f->fraglist) {
-+ printk(KERN_WARNING "Argh. Special inode #%lu with mode 0%o has no fragments\n", inode->i_ino, inode->i_mode);
-+ jffs2_clear_inode(inode);
-+ make_bad_inode(inode);
-+ return;
-+ }
-+ /* ASSERT: f->fraglist != NULL */
-+ if (f->fraglist->next) {
-+ printk(KERN_WARNING "Argh. Special inode #%lu with mode 0%o had more than one node\n", inode->i_ino, inode->i_mode);
-+ /* FIXME: Deal with it - check crc32, check for duplicate node, check times and discard the older one */
-+ jffs2_clear_inode(inode);
-+ make_bad_inode(inode);
-+ return;
-+ }
-+ /* OK. We're happy */
-+ f->metadata = f->fraglist->node;
-+ jffs2_free_node_frag(f->fraglist);
-+ f->fraglist = NULL;
-+ }
-+
-+ inode->i_blksize = PAGE_SIZE;
-+ inode->i_blocks = (inode->i_size + 511) >> 9;
-+
-+ switch (inode->i_mode & S_IFMT) {
-+ unsigned short rdev;
-
-- switch(je32_to_cpu(latest_node->mode) & S_IFMT) {
-+ case S_IFLNK:
-+ inode->i_op = &jffs2_symlink_inode_operations;
-+ /* Hack to work around broken isize in old symlink code.
-+ Remove this when dwmw2 comes to his senses and stops
-+ symlinks from being an entirely gratuitous special
-+ case. */
-+ if (!inode->i_size)
-+ inode->i_size = latest_node.dsize;
-+ break;
-+
- case S_IFDIR:
-- if (mctime_ver > je32_to_cpu(latest_node->version)) {
-+ if (mctime_ver > latest_node.version) {
- /* The times in the latest_node are actually older than
- mctime in the latest dirent. Cheat. */
-- latest_node->ctime = latest_node->mtime = cpu_to_je32(latest_mctime);
-+ inode->i_mtime = inode->i_ctime = inode->i_atime =
-+ latest_mctime;
- }
-+ inode->i_op = &jffs2_dir_inode_operations;
-+ inode->i_fop = &jffs2_dir_operations;
- break;
-
--
- case S_IFREG:
-- /* If it was a regular file, truncate it to the latest node's isize */
-- jffs2_truncate_fraglist(c, f, je32_to_cpu(latest_node->isize));
-- jffs2_merge_nodes(c, f, je32_to_cpu(latest_node->isize), JFFS2_FRAGS_NR_NODES_THRESHOLD_NORMAL);
-+ inode->i_op = &jffs2_file_inode_operations;
-+ inode->i_fop = &jffs2_file_operations;
-+ inode->i_mapping->a_ops = &jffs2_file_address_operations;
-+ inode->i_mapping->nrpages = 0;
- break;
-
-- case S_IFLNK:
-- /* Hack to work around broken isize in old symlink code.
-- Remove this when dwmw2 comes to his senses and stops
-- symlinks from being an entirely gratuitous special
-- case. */
-- if (!je32_to_cpu(latest_node->isize))
-- latest_node->isize = latest_node->dsize;
-- /* fall through... */
--
- case S_IFBLK:
- case S_IFCHR:
-- /* Xertain inode types should have only one data node, and it's
-- kept as the metadata node */
-- if (f->metadata) {
-- printk(KERN_WARNING "Argh. Special inode #%u with mode 0%o had metadata node\n", ino, je32_to_cpu(latest_node->mode));
-- up(&f->sem);
-- jffs2_do_clear_inode(c, f);
-- return -EIO;
-- }
-- if (!frag_first(&f->fragtree)) {
-- printk(KERN_WARNING "Argh. Special inode #%u with mode 0%o has no fragments\n", ino, je32_to_cpu(latest_node->mode));
-- up(&f->sem);
-- jffs2_do_clear_inode(c, f);
-- return -EIO;
-- }
-- /* ASSERT: f->fraglist != NULL */
-- if (frag_next(frag_first(&f->fragtree))) {
-- printk(KERN_WARNING "Argh. Special inode #%u with mode 0%o had more than one node\n", ino, je32_to_cpu(latest_node->mode));
-- /* FIXME: Deal with it - check crc32, check for duplicate node, check times and discard the older one */
-- up(&f->sem);
-- jffs2_do_clear_inode(c, f);
-- return -EIO;
-- }
-- /* OK. We're happy */
-- f->metadata = frag_first(&f->fragtree)->node;
-- jffs2_free_node_frag(frag_first(&f->fragtree));
-- f->fragtree = RB_ROOT;
-+ /* Read the device numbers from the media */
-+ D1(printk(KERN_DEBUG "Reading device numbers from flash\n"));
-+ if (jffs2_read_dnode(c, f->metadata, (char *)&rdev, 0, sizeof(rdev)) < 0) {
-+ /* Eep */
-+ printk(KERN_NOTICE "Read device numbers for inode %lu failed\n", (unsigned long)inode->i_ino);
-+ jffs2_clear_inode(inode);
-+ make_bad_inode(inode);
-+ return;
-+ }
-+
-+ case S_IFSOCK:
-+ case S_IFIFO:
-+ inode->i_op = &jffs2_file_inode_operations;
-+ init_special_inode(inode, inode->i_mode, kdev_t_to_nr(MKDEV(rdev>>8, rdev&0xff)));
- break;
-- }
-
-- return 0;
-+ default:
-+ printk(KERN_WARNING "jffs2_read_inode(): Bogus imode %o for ino %lu", inode->i_mode, (unsigned long)inode->i_ino);
-+ }
-+ D1(printk(KERN_DEBUG "jffs2_read_inode() returning\n"));
- }
-
--void jffs2_do_clear_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f)
-+void jffs2_clear_inode (struct inode *inode)
- {
-+ /* We can forget about this inode for now - drop all
-+ * the nodelists associated with it, etc.
-+ */
-+ struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-+ struct jffs2_node_frag *frag, *frags;
- struct jffs2_full_dirent *fd, *fds;
-- /* I don't think we care about the potential race due to reading this
-- without f->sem. It can never get undeleted. */
-- int deleted = f->inocache && !f->inocache->nlink;
--
-- /* If it's a deleted inode, grab the alloc_sem. This prevents
-- jffs2_garbage_collect_pass() from deciding that it wants to
-- garbage collect one of the nodes we're just about to mark
-- obsolete -- by the time we drop alloc_sem and return, all
-- the nodes are marked obsolete, and jffs2_g_c_pass() won't
-- call iget() for the inode in question.
-+ struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
-
-- We also do this to keep the (maybe temporary) BUG() in
-- jffs2_mark_node_obsolete() from triggering.
-- */
-- if(deleted)
-- down(&c->alloc_sem);
-+ D1(printk(KERN_DEBUG "jffs2_clear_inode(): ino #%lu mode %o\n", inode->i_ino, inode->i_mode));
-
- down(&f->sem);
-
-+ frags = f->fraglist;
-+ fds = f->dents;
- if (f->metadata) {
-- if (deleted)
-+ if (!f->inocache->nlink)
- jffs2_mark_node_obsolete(c, f->metadata->raw);
- jffs2_free_full_dnode(f->metadata);
- }
-
-- if (deleted) {
-- if (jffs2_construct_fragtree_nolock_if_missing(c, f))
-- printk(KERN_WARNING "%s: ino #%lu cannot clear\n", __func__,
-- OFNI_EDONI_2SFFJ(f)->i_ino);
-- }
-- jffs2_kill_fragtree(&f->fragtree, deleted?c:NULL);
-- CLEAR_NR_FRAGS(f);
--
-- fds = f->dents;
-+ while (frags) {
-+ frag = frags;
-+ frags = frag->next;
-+ D2(printk(KERN_DEBUG "jffs2_clear_inode: frag at 0x%x-0x%x: node %p, frags %d--\n", frag->ofs, frag->ofs+frag->size, frag->node, frag->node?frag->node->frags:0));
-+
-+ if (frag->node && !(--frag->node->frags)) {
-+ /* Not a hole, and it's the final remaining frag of this node. Free the node */
-+ if (!f->inocache->nlink)
-+ jffs2_mark_node_obsolete(c, frag->node->raw);
-
-+ jffs2_free_full_dnode(frag->node);
-+ }
-+ jffs2_free_node_frag(frag);
-+ }
- while(fds) {
- fd = fds;
- fds = fd->next;
-@@ -560,7 +502,5 @@
- }
-
- up(&f->sem);
-+};
-
-- if(deleted)
-- up(&c->alloc_sem);
--}
-diff -Nur linux/fs/jffs2/scan.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/scan.c
---- linux/fs/jffs2/scan.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/scan.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,28 +1,47 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: scan.c,v 1.91 2002/09/09 07:47:53 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: scan.c,v 1.51.2.2 2002/02/23 13:34:31 dwmw2 Exp $
- *
-- * ChangeLog:
-- * 29-Oct-2002 Lineo Japan, Inc. add member struct jffs2_sb_info#nr_bad_blocks
-- * 01-Oct-2002 Lineo Japan, Inc. remove double reads from NAND flash
-- * 13-Sep-2002 Lineo Japan, Inc. remove warning message for NAND flash
- */
- #include <linux/kernel.h>
- #include <linux/slab.h>
-+#include <linux/jffs2.h>
- #include <linux/mtd/mtd.h>
- #include <linux/pagemap.h>
--#include <linux/compiler.h>
--#include "crc32.h"
- #include "nodelist.h"
-+#include "crc32.h"
-
--#define EMPTY_SCAN_SIZE 1024
-
- #define DIRTY_SPACE(x) do { typeof(x) _x = (x); \
- c->free_size -= _x; c->dirty_size += _x; \
-@@ -44,76 +63,39 @@
- } while(0)
-
- static uint32_t pseudo_random;
-+static void jffs2_rotate_lists(struct jffs2_sb_info *c);
-
--static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- unsigned char *buf, uint32_t buf_size);
-+static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
-
- /* These helper functions _must_ increase ofs and also do the dirty/used space accounting.
- * Returning an error will abort the mount - bad checksums etc. should just mark the space
- * as dirty.
- */
--static int jffs2_scan_inode_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_raw_inode *ri, uint32_t ofs);
--static int jffs2_scan_dirent_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_raw_dirent *rd, uint32_t ofs);
--
--#define BLK_STATE_ALLFF 0
--#define BLK_STATE_CLEAN 1
--#define BLK_STATE_PARTDIRTY 2
--#define BLK_STATE_CLEANMARKER 3
--#define BLK_STATE_ALLDIRTY 4
--#define BLK_STATE_BADBLOCK 5
-+static int jffs2_scan_empty(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, __u32 *ofs, int *noise);
-+static int jffs2_scan_inode_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, __u32 *ofs);
-+static int jffs2_scan_dirent_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, __u32 *ofs);
-+
-
- int jffs2_scan_medium(struct jffs2_sb_info *c)
- {
- int i, ret;
-- uint32_t empty_blocks = 0;
-- unsigned char *flashbuf = NULL;
-- uint32_t buf_size = 0;
-- size_t pointlen;
-+ __u32 empty_blocks = 0;
-
- if (!c->blocks) {
- printk(KERN_WARNING "EEEK! c->blocks is NULL!\n");
- return -EINVAL;
- }
-- if (c->mtd->point) {
-- ret = c->mtd->point (c->mtd, 0, c->mtd->size, &pointlen, &flashbuf);
-- if (!ret && pointlen < c->mtd->size) {
-- /* Don't muck about if it won't let us point to the whole flash */
-- D1(printk(KERN_DEBUG "MTD point returned len too short: 0x%x\n", pointlen));
-- c->mtd->unpoint(c->mtd, flashbuf);
-- flashbuf = NULL;
-- }
-- if (ret)
-- D1(printk(KERN_DEBUG "MTD point failed %d\n", ret));
-- }
-- if (!flashbuf) {
-- /* For NAND it's quicker to read a whole eraseblock at a time,
-- apparently */
-- if (jffs2_cleanmarker_oob(c))
-- buf_size = c->sector_size;
-- else
-- buf_size = PAGE_SIZE;
--
-- D1(printk(KERN_DEBUG "Allocating readbuf of %d bytes\n", buf_size));
-- flashbuf = kmalloc(buf_size, GFP_KERNEL);
-- if (!flashbuf)
-- return -ENOMEM;
-- }
--
- for (i=0; i<c->nr_blocks; i++) {
- struct jffs2_eraseblock *jeb = &c->blocks[i];
-
-- ret = jffs2_scan_eraseblock(c, jeb, buf_size?flashbuf:(flashbuf+jeb->offset), buf_size);
--
-+ ret = jffs2_scan_eraseblock(c, jeb);
- if (ret < 0)
-- goto scan_medium_exit;
-+ return ret;
-
- ACCT_PARANOIA_CHECK(jeb);
-
- /* Now decide which list to put it on */
-- switch(ret) {
-- case BLK_STATE_ALLFF:
-+ if (ret == 1) {
- /*
- * Empty block. Since we can't be sure it
- * was entirely erased, we just queue it for erase
-@@ -121,13 +103,10 @@
- * is complete. Meanwhile we still count it as empty
- * for later checks.
- */
-- empty_blocks++;
- list_add(&jeb->list, &c->erase_pending_list);
-- c->erasing_dirty_size += jeb->dirty_size;
-+ empty_blocks++;
- c->nr_erasing_blocks++;
-- break;
--
-- case BLK_STATE_CLEANMARKER:
-+ } else if (jeb->used_size == PAD(sizeof(struct jffs2_unknown_node)) && !jeb->first_node->next_in_ino) {
- /* Only a CLEANMARKER node is valid */
- if (!jeb->dirty_size) {
- /* It's actually free */
-@@ -137,17 +116,12 @@
- /* Dirt */
- D1(printk(KERN_DEBUG "Adding all-dirty block at 0x%08x to erase_pending_list\n", jeb->offset));
- list_add(&jeb->list, &c->erase_pending_list);
-- c->erasing_dirty_size += jeb->dirty_size;
- c->nr_erasing_blocks++;
- }
-- break;
--
-- case BLK_STATE_CLEAN:
-+ } else if (jeb->used_size > c->sector_size - (2*sizeof(struct jffs2_raw_inode))) {
- /* Full (or almost full) of clean data. Clean list */
- list_add(&jeb->list, &c->clean_list);
-- break;
--
-- case BLK_STATE_PARTDIRTY:
-+ } else if (jeb->used_size) {
- /* Some data, but not full. Dirty list. */
- /* Except that we want to remember the block with most free space,
- and stick it in the 'nextblock' position to start writing to it.
-@@ -155,212 +129,60 @@
- not the one with most free space.
- */
- if (jeb->free_size > 2*sizeof(struct jffs2_raw_inode) &&
-- (jffs2_can_mark_obsolete(c) || jeb->free_size > c->wbuf_pagesize) &&
-- (!c->nextblock || c->nextblock->free_size < jeb->free_size)) {
-+ (!c->nextblock || c->nextblock->free_size < jeb->free_size)) {
- /* Better candidate for the next writes to go to */
-- if (c->nextblock) {
-- c->nextblock->dirty_size += c->nextblock->free_size + c->nextblock->wasted_size;
-- c->dirty_size += c->nextblock->free_size + c->nextblock->wasted_size;
-- c->free_size -= c->nextblock->free_size;
-- c->wasted_size -= c->nextblock->wasted_size;
-- c->nextblock->free_size = c->nextblock->wasted_size = 0;
-- if (VERYDIRTY(c, c->nextblock->dirty_size)) {
-- list_add(&c->nextblock->list, &c->very_dirty_list);
-- } else {
-- list_add(&c->nextblock->list, &c->dirty_list);
-- }
-- }
-+ if (c->nextblock)
-+ list_add(&c->nextblock->list, &c->dirty_list);
- c->nextblock = jeb;
- } else {
-- jeb->dirty_size += jeb->free_size + jeb->wasted_size;
-- c->dirty_size += jeb->free_size + jeb->wasted_size;
-- c->free_size -= jeb->free_size;
-- c->wasted_size -= jeb->wasted_size;
-- jeb->free_size = jeb->wasted_size = 0;
-- if (VERYDIRTY(c, jeb->dirty_size)) {
-- list_add(&jeb->list, &c->very_dirty_list);
-- } else {
-- list_add(&jeb->list, &c->dirty_list);
-- }
-+ list_add(&jeb->list, &c->dirty_list);
- }
-- break;
--
-- case BLK_STATE_ALLDIRTY:
-+ } else {
- /* Nothing valid - not even a clean marker. Needs erasing. */
- /* For now we just put it on the erasing list. We'll start the erases later */
-- D1(printk(KERN_NOTICE "JFFS2: Erase block at 0x%08x is not formatted. It will be erased\n", jeb->offset));
-+ printk(KERN_NOTICE "JFFS2: Erase block at 0x%08x is not formatted. It will be erased\n", jeb->offset);
- list_add(&jeb->list, &c->erase_pending_list);
-- c->erasing_dirty_size += jeb->dirty_size;
- c->nr_erasing_blocks++;
-- break;
--
-- case BLK_STATE_BADBLOCK:
-- D1(printk(KERN_NOTICE "JFFS2: Block at 0x%08x is bad\n", jeb->offset));
-- list_add(&jeb->list, &c->bad_list);
-- c->bad_size += c->sector_size;
-- c->free_size -= c->sector_size;
-- c->nr_bad_blocks++;
-- break;
-- default:
-- printk(KERN_WARNING "jffs2_scan_medium(): unknown block state\n");
-- BUG();
- }
- }
-+ /* Rotate the lists by some number to ensure wear levelling */
-+ jffs2_rotate_lists(c);
-
-- ret = 0;
--
-- /* Nextblock dirty is always seen as wasted, because we cannot recycle it now */
-- if (c->nextblock && (c->nextblock->dirty_size)) {
-- c->nextblock->wasted_size += c->nextblock->dirty_size;
-- c->wasted_size += c->nextblock->dirty_size;
-- c->dirty_size -= c->nextblock->dirty_size;
-- c->nextblock->dirty_size = 0;
-- }
--
-- if (!jffs2_can_mark_obsolete(c) && c->nextblock && (c->nextblock->free_size & (c->wbuf_pagesize-1))) {
-- /* If we're going to start writing into a block which already
-- contains data, and the end of the data isn't page-aligned,
-- skip a little and align it. */
--
-- uint32_t skip = c->nextblock->free_size & (c->wbuf_pagesize-1);
--
-- D1(printk(KERN_DEBUG "jffs2_scan_medium(): Skipping %d bytes in nextblock to ensure page alignment\n",
-- skip));
-- c->nextblock->wasted_size += skip;
-- c->wasted_size += skip;
--
-- c->nextblock->free_size -= skip;
-- c->free_size -= skip;
-- }
- if (c->nr_erasing_blocks) {
-- if ( !c->used_size && ((empty_blocks+c->nr_bad_blocks)!= c->nr_blocks || c->nr_bad_blocks == c->nr_blocks) ) {
-+ if (!c->used_size && empty_blocks != c->nr_blocks) {
- printk(KERN_NOTICE "Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes\n");
-- printk(KERN_NOTICE "empty_blocks %d, bad_blocks %d, c->nr_blocks %d\n",empty_blocks,c->nr_bad_blocks,c->nr_blocks);
-- ret = -EIO;
-- goto scan_medium_exit;
-+ return -EIO;
- }
- jffs2_erase_pending_trigger(c);
- }
--
-- scan_medium_exit:
-- if (buf_size)
-- kfree(flashbuf);
-- else
-- c->mtd->unpoint(c->mtd, flashbuf);
--
-- return ret;
--}
--
--static int jffs2_fill_scan_buf (struct jffs2_sb_info *c, unsigned char *buf,
-- uint32_t ofs, uint32_t len)
--{
-- int ret;
-- size_t retlen;
--
-- ret = jffs2_flash_read(c, ofs, len, &retlen, buf);
-- if (ret) {
-- D1(printk(KERN_WARNING "mtd->read(0x%x bytes from 0x%x) returned %d\n", len, ofs, ret));
-- return ret;
-- }
-- if (retlen < len) {
-- D1(printk(KERN_WARNING "Read at 0x%x gave only 0x%x bytes\n", ofs, retlen));
-- return -EIO;
-- }
-- D2(printk(KERN_DEBUG "Read 0x%x bytes from 0x%08x into buf\n", len, ofs));
-- D2(printk(KERN_DEBUG "000: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
-- buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], buf[8], buf[9], buf[10], buf[11], buf[12], buf[13], buf[14], buf[15]));
- return 0;
- }
-
--static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- unsigned char *buf, uint32_t buf_size)
--{
-- struct jffs2_unknown_node *node;
-- struct jffs2_unknown_node crcnode;
-- uint32_t ofs, prevofs;
-- uint32_t hdr_crc, buf_ofs, buf_len;
-+static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb) {
-+ struct jffs2_unknown_node node;
-+ __u32 ofs, prevofs;
-+ __u32 hdr_crc, nodetype;
- int err;
- int noise = 0;
-- int wasempty = 0;
-- uint32_t empty_start = 0;
--#ifdef CONFIG_JFFS2_FS_NAND
-- int cleanmarkerfound = 0;
--#endif
-
- ofs = jeb->offset;
- prevofs = jeb->offset - 1;
-
- D1(printk(KERN_DEBUG "jffs2_scan_eraseblock(): Scanning block at 0x%x\n", ofs));
-
--#ifdef CONFIG_JFFS2_FS_NAND
-- if (jffs2_cleanmarker_oob(c)) {
-- int ret = jffs2_check_nand_cleanmarker(c, jeb);
-- D2(printk(KERN_NOTICE "jffs_check_nand_cleanmarker returned %d\n",ret));
-- /* Even if it's not found, we still scan to see
-- if the block is empty. We use this information
-- to decide whether to erase it or not. */
-- switch (ret) {
-- case 0: cleanmarkerfound = 1; break;
-- case 1: break;
-- case 2: return BLK_STATE_BADBLOCK;
-- case 3: return BLK_STATE_ALLDIRTY; /* Block has failed to erase min. once */
-- default: return ret;
-- }
-- }
--#endif
-- buf_ofs = jeb->offset;
--
-- if (!buf_size) {
-- buf_len = c->sector_size;
-- } else {
-- buf_len = EMPTY_SCAN_SIZE;
-- err = jffs2_fill_scan_buf(c, buf, buf_ofs, buf_len);
-- if (err)
-- return err;
-- }
--
-- /* We temporarily use 'ofs' as a pointer into the buffer/jeb */
-- ofs = 0;
--
-- /* Scan only 4KiB of 0xFF before declaring it's empty */
-- while(ofs < EMPTY_SCAN_SIZE && *(uint32_t *)(&buf[ofs]) == 0xFFFFFFFF)
-- ofs += 4;
--
-- if (ofs == EMPTY_SCAN_SIZE) {
--#ifdef CONFIG_JFFS2_FS_NAND
-- if (jffs2_cleanmarker_oob(c)) {
-- /* scan oob, take care of cleanmarker */
-- int ret = jffs2_check_oob_empty(c, jeb, cleanmarkerfound);
-- D2(printk(KERN_NOTICE "jffs2_check_oob_empty returned %d\n",ret));
-- switch (ret) {
-- case 0: return cleanmarkerfound ? BLK_STATE_CLEANMARKER : BLK_STATE_ALLFF;
-- case 1: return BLK_STATE_ALLDIRTY;
-- case 2: return BLK_STATE_BADBLOCK; /* case 2/3 are paranoia checks */
-- case 3: return BLK_STATE_ALLDIRTY; /* Block has failed to erase min. once */
-- default: return ret;
-- }
-- }
--#endif
-+ err = jffs2_scan_empty(c, jeb, &ofs, &noise);
-+ if (err) return err;
-+ if (ofs == jeb->offset + c->sector_size) {
- D1(printk(KERN_DEBUG "Block at 0x%08x is empty (erased)\n", jeb->offset));
-- return BLK_STATE_ALLFF; /* OK to erase if all blocks are like this */
-- }
-- if (ofs) {
-- D1(printk(KERN_DEBUG "Free space at %08x ends at %08x\n", jeb->offset,
-- jeb->offset + ofs));
-- DIRTY_SPACE(ofs);
-+ return 1; /* special return code */
- }
--
-- /* Now ofs is a complete physical flash offset as it always was... */
-- ofs += jeb->offset;
--
-+
- noise = 10;
-
- while(ofs < jeb->offset + c->sector_size) {
--
-+ ssize_t retlen;
- ACCT_PARANOIA_CHECK(jeb);
--
-- cond_resched();
--
-+
- if (ofs & 3) {
- printk(KERN_WARNING "Eep. ofs 0x%08x not word-aligned!\n", ofs);
- ofs = (ofs+3)&~3;
-@@ -373,187 +195,93 @@
- continue;
- }
- prevofs = ofs;
--
-- if (jeb->offset + c->sector_size < ofs + sizeof(*node)) {
-- D1(printk(KERN_DEBUG "Fewer than %d bytes left to end of block. (%x+%x<%x+%x) Not reading\n", sizeof(struct jffs2_unknown_node),
-- jeb->offset, c->sector_size, ofs, sizeof(*node)));
-+
-+ if (jeb->offset + c->sector_size < ofs + sizeof(node)) {
-+ D1(printk(KERN_DEBUG "Fewer than %d bytes left to end of block. Not reading\n", sizeof(struct jffs2_unknown_node)));
- DIRTY_SPACE((jeb->offset + c->sector_size)-ofs);
- break;
- }
-
-- if (buf_ofs + buf_len < ofs + sizeof(*node)) {
-- buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
-- D1(printk(KERN_DEBUG "Fewer than %d bytes (node header) left to end of buf. Reading 0x%x at 0x%08x\n",
-- sizeof(struct jffs2_unknown_node), buf_len, ofs));
-- err = jffs2_fill_scan_buf(c, buf, ofs, buf_len);
-- if (err)
-- return err;
-- buf_ofs = ofs;
-- }
--
-- node = (struct jffs2_unknown_node *)&buf[ofs-buf_ofs];
--
-- if (*(uint32_t *)(&buf[ofs-buf_ofs]) == 0xffffffff) {
-- uint32_t inbuf_ofs = ofs - buf_ofs + 4;
-- uint32_t scanend;
--
-- empty_start = ofs;
-- ofs += 4;
--
-- /* If scanning empty space after only a cleanmarker, don't
-- bother scanning the whole block */
-- if (unlikely(empty_start == jeb->offset + c->cleanmarker_size &&
-- jeb->offset + EMPTY_SCAN_SIZE < buf_ofs + buf_len))
-- scanend = jeb->offset + EMPTY_SCAN_SIZE - buf_ofs;
-- else
-- scanend = buf_len;
--
-- D1(printk(KERN_DEBUG "Found empty flash at 0x%08x\n", ofs));
-- while (inbuf_ofs < scanend) {
-- if (*(uint32_t *)(&buf[inbuf_ofs]) != 0xffffffff)
-- goto emptyends;
--
-- inbuf_ofs+=4;
-- ofs += 4;
-- }
-- /* Ran off end. */
-- D1(printk(KERN_DEBUG "Empty flash ends normally at 0x%08x\n", ofs));
--
-- if (buf_ofs == jeb->offset && jeb->used_size == PAD(c->cleanmarker_size) &&
-- !jeb->first_node->next_in_ino && !jeb->dirty_size)
-- return BLK_STATE_CLEANMARKER;
-- wasempty = 1;
-+ err = c->mtd->read(c->mtd, ofs, sizeof(node), &retlen, (char *)&node);
-+
-+ if (err) {
-+ D1(printk(KERN_WARNING "mtd->read(0x%x bytes from 0x%x) returned %d\n", sizeof(node), ofs, err));
-+ return err;
-+ }
-+ if (retlen < sizeof(node)) {
-+ D1(printk(KERN_WARNING "Read at 0x%x gave only 0x%x bytes\n", ofs, retlen));
-+ DIRTY_SPACE(retlen);
-+ ofs += retlen;
- continue;
-- } else if (wasempty) {
-- emptyends:
-- if (! (c->mtd->type == MTD_NANDFLASH &&
-- (ofs - empty_start) < c->mtd->oobblock &&
-- (ofs % c->mtd->oobblock) == 0))
-- printk(KERN_WARNING "Empty flash at 0x%08x ends at 0x%08x\n", empty_start, ofs);
-- DIRTY_SPACE(ofs-empty_start);
-- wasempty = 0;
-+ }
-+
-+ if (node.magic == JFFS2_EMPTY_BITMASK && node.nodetype == JFFS2_EMPTY_BITMASK) {
-+ D1(printk(KERN_DEBUG "Found empty flash at 0x%x\n", ofs));
-+ err = jffs2_scan_empty(c, jeb, &ofs, &noise);
-+ if (err) return err;
- continue;
- }
-
-- if (ofs == jeb->offset && je16_to_cpu(node->magic) == KSAMTIB_CIGAM_2SFFJ) {
-+ if (ofs == jeb->offset && node.magic == KSAMTIB_CIGAM_2SFFJ) {
- printk(KERN_WARNING "Magic bitmask is backwards at offset 0x%08x. Wrong endian filesystem?\n", ofs);
- DIRTY_SPACE(4);
- ofs += 4;
- continue;
- }
-- if (je16_to_cpu(node->magic) == JFFS2_DIRTY_BITMASK) {
-+ if (node.magic == JFFS2_DIRTY_BITMASK) {
- D1(printk(KERN_DEBUG "Empty bitmask at 0x%08x\n", ofs));
- DIRTY_SPACE(4);
- ofs += 4;
- continue;
- }
-- if (je16_to_cpu(node->magic) == JFFS2_OLD_MAGIC_BITMASK) {
-+ if (node.magic == JFFS2_OLD_MAGIC_BITMASK) {
- printk(KERN_WARNING "Old JFFS2 bitmask found at 0x%08x\n", ofs);
- printk(KERN_WARNING "You cannot use older JFFS2 filesystems with newer kernels\n");
- DIRTY_SPACE(4);
- ofs += 4;
- continue;
- }
-- if (je16_to_cpu(node->magic) != JFFS2_MAGIC_BITMASK) {
-+ if (node.magic != JFFS2_MAGIC_BITMASK) {
- /* OK. We're out of possibilities. Whinge and move on */
-- noisy_printk(&noise, "jffs2_scan_eraseblock(): Magic bitmask 0x%04x not found at 0x%08x: 0x%04x instead\n",
-- JFFS2_MAGIC_BITMASK, ofs,
-- je16_to_cpu(node->magic));
-+ noisy_printk(&noise, "jffs2_scan_eraseblock(): Magic bitmask 0x%04x not found at 0x%08x: 0x%04x instead\n", JFFS2_MAGIC_BITMASK, ofs, node.magic);
- DIRTY_SPACE(4);
- ofs += 4;
- continue;
- }
- /* We seem to have a node of sorts. Check the CRC */
-- crcnode.magic = node->magic;
-- crcnode.nodetype = cpu_to_je16( je16_to_cpu(node->nodetype) | JFFS2_NODE_ACCURATE);
-- crcnode.totlen = node->totlen;
-- hdr_crc = crc32(0, &crcnode, sizeof(crcnode)-4);
--
-- if (hdr_crc != je32_to_cpu(node->hdr_crc)) {
-+ nodetype = node.nodetype;
-+ node.nodetype |= JFFS2_NODE_ACCURATE;
-+ hdr_crc = crc32(0, &node, sizeof(node)-4);
-+ node.nodetype = nodetype;
-+ if (hdr_crc != node.hdr_crc) {
- noisy_printk(&noise, "jffs2_scan_eraseblock(): Node at 0x%08x {0x%04x, 0x%04x, 0x%08x) has invalid CRC 0x%08x (calculated 0x%08x)\n",
-- ofs, je16_to_cpu(node->magic),
-- je16_to_cpu(node->nodetype),
-- je32_to_cpu(node->totlen),
-- je32_to_cpu(node->hdr_crc),
-- hdr_crc);
-+ ofs, node.magic, node.nodetype, node.totlen, node.hdr_crc, hdr_crc);
- DIRTY_SPACE(4);
- ofs += 4;
- continue;
- }
-
-- if (ofs + je32_to_cpu(node->totlen) >
-- jeb->offset + c->sector_size) {
-- /* Eep. Node goes over the end of the erase block. */
-- printk(KERN_WARNING "Node at 0x%08x with length 0x%08x would run over the end of the erase block\n",
-- ofs, je32_to_cpu(node->totlen));
-- printk(KERN_WARNING "Perhaps the file system was created with the wrong erase size?\n");
-- DIRTY_SPACE(4);
-- ofs += 4;
-- continue;
-- }
--
-- if (!(je16_to_cpu(node->nodetype) & JFFS2_NODE_ACCURATE)) {
-- /* Wheee. This is an obsoleted node */
-- D2(printk(KERN_DEBUG "Node at 0x%08x is obsolete. Skipping\n", ofs));
-- DIRTY_SPACE(PAD(je32_to_cpu(node->totlen)));
-- ofs += PAD(je32_to_cpu(node->totlen));
-- continue;
-- }
--
-- switch(je16_to_cpu(node->nodetype)) {
-+ switch(node.nodetype | JFFS2_NODE_ACCURATE) {
- case JFFS2_NODETYPE_INODE:
-- if (buf_ofs + buf_len < ofs + sizeof(struct jffs2_raw_inode)) {
-- buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
-- D1(printk(KERN_DEBUG "Fewer than %d bytes (inode node) left to end of buf. Reading 0x%x at 0x%08x\n",
-- sizeof(struct jffs2_raw_inode), buf_len, ofs));
-- err = jffs2_fill_scan_buf(c, buf, ofs, buf_len);
-- if (err)
-- return err;
-- buf_ofs = ofs;
-- node = (void *)buf;
-- }
-- if (buf_ofs + buf_len < ofs + sizeof(struct jffs2_raw_inode) + je32_to_cpu(((struct jffs2_raw_inode*)node)->csize)) {
-- buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
-- D1(printk(KERN_DEBUG "Fewer than %d bytes (inode node) left to end of buf. Reading 0x%x at 0x%08x\n",
-- sizeof(struct jffs2_raw_inode) + je32_to_cpu(((struct jffs2_raw_inode*)node)->csize), buf_len, ofs));
-- err = jffs2_fill_scan_buf(c, buf, ofs, buf_len);
-- if (err)
-- return err;
-- buf_ofs = ofs;
-- node = (void *)buf;
-- }
-- err = jffs2_scan_inode_node(c, jeb, (void *)node, ofs);
-+ err = jffs2_scan_inode_node(c, jeb, &ofs);
- if (err) return err;
-- ofs += PAD(je32_to_cpu(node->totlen));
- break;
-
- case JFFS2_NODETYPE_DIRENT:
-- if (buf_ofs + buf_len < ofs + je32_to_cpu(node->totlen)) {
-- buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
-- D1(printk(KERN_DEBUG "Fewer than %d bytes (dirent node) left to end of buf. Reading 0x%x at 0x%08x\n",
-- je32_to_cpu(node->totlen), buf_len, ofs));
-- err = jffs2_fill_scan_buf(c, buf, ofs, buf_len);
-- if (err)
-- return err;
-- buf_ofs = ofs;
-- node = (void *)buf;
-- }
-- err = jffs2_scan_dirent_node(c, jeb, (void *)node, ofs);
-+ err = jffs2_scan_dirent_node(c, jeb, &ofs);
- if (err) return err;
-- ofs += PAD(je32_to_cpu(node->totlen));
- break;
-
- case JFFS2_NODETYPE_CLEANMARKER:
-- D1(printk(KERN_DEBUG "CLEANMARKER node found at 0x%08x\n", ofs));
-- if (je32_to_cpu(node->totlen) != c->cleanmarker_size) {
-+ if (node.totlen != sizeof(struct jffs2_unknown_node)) {
- printk(KERN_NOTICE "CLEANMARKER node found at 0x%08x has totlen 0x%x != normal 0x%x\n",
-- ofs, je32_to_cpu(node->totlen), c->cleanmarker_size);
-+ ofs, node.totlen, sizeof(struct jffs2_unknown_node));
- DIRTY_SPACE(PAD(sizeof(struct jffs2_unknown_node)));
-- ofs += PAD(sizeof(struct jffs2_unknown_node));
- } else if (jeb->first_node) {
- printk(KERN_NOTICE "CLEANMARKER node found at 0x%08x, not first node in block (0x%08x)\n", ofs, jeb->offset);
- DIRTY_SPACE(PAD(sizeof(struct jffs2_unknown_node)));
- ofs += PAD(sizeof(struct jffs2_unknown_node));
-+ continue;
- } else {
- struct jffs2_raw_node_ref *marker_ref = jffs2_alloc_raw_node_ref();
- if (!marker_ref) {
-@@ -563,78 +291,97 @@
- marker_ref->next_in_ino = NULL;
- marker_ref->next_phys = NULL;
- marker_ref->flash_offset = ofs;
-- marker_ref->totlen = c->cleanmarker_size;
-+ marker_ref->totlen = sizeof(struct jffs2_unknown_node);
- jeb->first_node = jeb->last_node = marker_ref;
-
-- USED_SPACE(PAD(c->cleanmarker_size));
-- ofs += PAD(c->cleanmarker_size);
-+ USED_SPACE(PAD(sizeof(struct jffs2_unknown_node)));
- }
-- break;
--
-- case JFFS2_NODETYPE_PADDING:
-- DIRTY_SPACE(PAD(je32_to_cpu(node->totlen)));
-- ofs += PAD(je32_to_cpu(node->totlen));
-+ ofs += PAD(sizeof(struct jffs2_unknown_node));
- break;
-
- default:
-- switch (je16_to_cpu(node->nodetype) & JFFS2_COMPAT_MASK) {
-+ switch (node.nodetype & JFFS2_COMPAT_MASK) {
- case JFFS2_FEATURE_ROCOMPAT:
-- printk(KERN_NOTICE "Read-only compatible feature node (0x%04x) found at offset 0x%08x\n", je16_to_cpu(node->nodetype), ofs);
-+ printk(KERN_NOTICE "Read-only compatible feature node (0x%04x) found at offset 0x%08x\n", node.nodetype, ofs);
- c->flags |= JFFS2_SB_FLAG_RO;
-- if (!(jffs2_is_readonly(c)))
-+ if (!(OFNI_BS_2SFFJ(c)->s_flags & MS_RDONLY))
- return -EROFS;
-- DIRTY_SPACE(PAD(je32_to_cpu(node->totlen)));
-- ofs += PAD(je32_to_cpu(node->totlen));
-- break;
-+ DIRTY_SPACE(PAD(node.totlen));
-+ ofs += PAD(node.totlen);
-+ continue;
-
- case JFFS2_FEATURE_INCOMPAT:
-- printk(KERN_NOTICE "Incompatible feature node (0x%04x) found at offset 0x%08x\n", je16_to_cpu(node->nodetype), ofs);
-+ printk(KERN_NOTICE "Incompatible feature node (0x%04x) found at offset 0x%08x\n", node.nodetype, ofs);
- return -EINVAL;
-
- case JFFS2_FEATURE_RWCOMPAT_DELETE:
-- D1(printk(KERN_NOTICE "Unknown but compatible feature node (0x%04x) found at offset 0x%08x\n", je16_to_cpu(node->nodetype), ofs));
-- DIRTY_SPACE(PAD(je32_to_cpu(node->totlen)));
-- ofs += PAD(je32_to_cpu(node->totlen));
-+ printk(KERN_NOTICE "Unknown but compatible feature node (0x%04x) found at offset 0x%08x\n", node.nodetype, ofs);
-+ DIRTY_SPACE(PAD(node.totlen));
-+ ofs += PAD(node.totlen);
- break;
-
- case JFFS2_FEATURE_RWCOMPAT_COPY:
-- D1(printk(KERN_NOTICE "Unknown but compatible feature node (0x%04x) found at offset 0x%08x\n", je16_to_cpu(node->nodetype), ofs));
-- USED_SPACE(PAD(je32_to_cpu(node->totlen)));
-- ofs += PAD(je32_to_cpu(node->totlen));
-+ printk(KERN_NOTICE "Unknown but compatible feature node (0x%04x) found at offset 0x%08x\n", node.nodetype, ofs);
-+ USED_SPACE(PAD(node.totlen));
-+ ofs += PAD(node.totlen);
- break;
- }
- }
- }
--
--
- D1(printk(KERN_DEBUG "Block at 0x%08x: free 0x%08x, dirty 0x%08x, used 0x%08x\n", jeb->offset,
- jeb->free_size, jeb->dirty_size, jeb->used_size));
-+ return 0;
-+}
-
-- /* mark_node_obsolete can add to wasted !! */
-- if (jeb->wasted_size) {
-- jeb->dirty_size += jeb->wasted_size;
-- c->dirty_size += jeb->wasted_size;
-- c->wasted_size -= jeb->wasted_size;
-- jeb->wasted_size = 0;
-- }
--
-- if (jeb->used_size == PAD(c->cleanmarker_size) &&
-- !jeb->first_node->next_in_ino && !jeb->dirty_size)
-- return BLK_STATE_CLEANMARKER;
-- /* move blocks with max 4 byte dirty space to cleanlist */
-- else if (!ISDIRTY(c->sector_size - jeb->used_size)) {
-- c->dirty_size -= jeb->dirty_size;
-- c->wasted_size += jeb->dirty_size;
-- jeb->wasted_size += jeb->dirty_size;
-- jeb->dirty_size = 0;
-- return BLK_STATE_CLEAN;
-- } else if (jeb->used_size)
-- return BLK_STATE_PARTDIRTY;
-- else
-- return BLK_STATE_ALLDIRTY;
-+/* We're pointing at the first empty word on the flash. Scan and account for the whole dirty region */
-+static int jffs2_scan_empty(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, __u32 *startofs, int *noise)
-+{
-+ __u32 *buf;
-+ __u32 scanlen = (jeb->offset + c->sector_size) - *startofs;
-+ __u32 curofs = *startofs;
-+
-+ buf = kmalloc(min((__u32)PAGE_SIZE, scanlen), GFP_KERNEL);
-+ if (!buf) {
-+ printk(KERN_WARNING "Scan buffer allocation failed\n");
-+ return -ENOMEM;
-+ }
-+ while(scanlen) {
-+ ssize_t retlen;
-+ int ret, i;
-+
-+ ret = c->mtd->read(c->mtd, curofs, min((__u32)PAGE_SIZE, scanlen), &retlen, (char *)buf);
-+ if(ret) {
-+ D1(printk(KERN_WARNING "jffs2_scan_empty(): Read 0x%x bytes at 0x%08x returned %d\n", min((__u32)PAGE_SIZE, scanlen), curofs, ret));
-+ kfree(buf);
-+ return ret;
-+ }
-+ if (retlen < 4) {
-+ D1(printk(KERN_WARNING "Eep. too few bytes read in scan_empty()\n"));
-+ kfree(buf);
-+ return -EIO;
-+ }
-+ for (i=0; i<(retlen / 4); i++) {
-+ if (buf[i] != 0xffffffff) {
-+ curofs += i*4;
-+
-+ noisy_printk(noise, "jffs2_scan_empty(): Empty block at 0x%08x ends at 0x%08x (with 0x%08x)! Marking dirty\n", *startofs, curofs, buf[i]);
-+ DIRTY_SPACE(curofs - (*startofs));
-+ *startofs = curofs;
-+ kfree(buf);
-+ return 0;
-+ }
-+ }
-+ scanlen -= retlen&~3;
-+ curofs += retlen&~3;
-+ }
-+
-+ D1(printk(KERN_DEBUG "Empty flash detected from 0x%08x to 0x%08x\n", *startofs, curofs));
-+ kfree(buf);
-+ *startofs = curofs;
-+ return 0;
- }
-
--static struct jffs2_inode_cache *jffs2_scan_make_ino_cache(struct jffs2_sb_info *c, uint32_t ino)
-+static struct jffs2_inode_cache *jffs2_scan_make_ino_cache(struct jffs2_sb_info *c, __u32 ino)
- {
- struct jffs2_inode_cache *ic;
-
-@@ -663,63 +410,82 @@
- return ic;
- }
-
--static int jffs2_scan_inode_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_raw_inode *ri, uint32_t ofs)
-+static int jffs2_scan_inode_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, __u32 *ofs)
- {
- struct jffs2_raw_node_ref *raw;
- struct jffs2_full_dnode *fn;
- struct jffs2_tmp_dnode_info *tn, **tn_list;
- struct jffs2_inode_cache *ic;
-- uint32_t dsize, csize;
-- uint32_t crc;
-+ struct jffs2_raw_inode ri;
-+ __u32 crc;
-+ __u16 oldnodetype;
-+ int ret;
-+ ssize_t retlen;
-+
-+ D1(printk(KERN_DEBUG "jffs2_scan_inode_node(): Node at 0x%08x\n", *ofs));
-
-- D1(printk(KERN_DEBUG "jffs2_scan_inode_node(): Node at 0x%08x\n", ofs));
-+ ret = c->mtd->read(c->mtd, *ofs, sizeof(ri), &retlen, (char *)&ri);
-+ if (ret) {
-+ printk(KERN_NOTICE "jffs2_scan_inode_node(): Read error at 0x%08x: %d\n", *ofs, ret);
-+ return ret;
-+ }
-+ if (retlen != sizeof(ri)) {
-+ printk(KERN_NOTICE "Short read: 0x%x bytes at 0x%08x instead of requested %x\n",
-+ retlen, *ofs, sizeof(ri));
-+ return -EIO;
-+ }
-
-- /* FIXME: Actually we don't need to do all this here. We can just make a raw_node_ref for it,
-- and file it against ri->inode. We don't even need to check the CRC. If the CRC is valid,
-- all was well, if the CRC was _invalid_, we're gonna drop it when we find out anyway, so
-- it doesn't matter which inode it was filed against. Of course we have to go through and
-- do the CRC checks for each inode some time later, but we don't have to hold up the mount
-- for it.
--
-- Hmm, perhaps we'd want to do the CRC check if there's not already an inocache for the inode
-- we think it belongs to, to prevent us from ending up creating an inocache for ino #0xFFFFFFFF
-- if that's what we see on the flash.
-- */
--
--
-- /* We don't get here unless the node is still valid, so we don't have to
-- mask in the ACCURATE bit any more. */
-- crc = crc32(0, ri, sizeof(*ri)-8);
-+ /* We sort of assume that the node was accurate when it was
-+ first written to the medium :) */
-+ oldnodetype = ri.nodetype;
-+ ri.nodetype |= JFFS2_NODE_ACCURATE;
-+ crc = crc32(0, &ri, sizeof(ri)-8);
-+ ri.nodetype = oldnodetype;
-
-- if(crc != je32_to_cpu(ri->node_crc)) {
-+ if(crc != ri.node_crc) {
- printk(KERN_NOTICE "jffs2_scan_inode_node(): CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n",
-- ofs, je32_to_cpu(ri->node_crc), crc);
-- /* We believe totlen because the CRC on the node _header_ was OK, just the node itself failed. */
-- DIRTY_SPACE(PAD(je32_to_cpu(ri->totlen)));
-+ *ofs, ri.node_crc, crc);
-+ /* FIXME: Why do we believe totlen? */
-+ DIRTY_SPACE(4);
-+ *ofs += 4;
- return 0;
- }
- /* There was a bug where we wrote hole nodes out with csize/dsize
- swapped. Deal with it */
-- if (unlikely(ri->compr == JFFS2_COMPR_ZERO && !je32_to_cpu(ri->dsize) && je32_to_cpu(ri->csize))) {
-- dsize = je32_to_cpu(ri->csize);
-- csize = 0;
-- } else {
-- csize = je32_to_cpu(ri->csize);
-- dsize = je32_to_cpu(ri->dsize);
-+ if (ri.compr == JFFS2_COMPR_ZERO && !ri.dsize && ri.csize) {
-+ ri.dsize = ri.csize;
-+ ri.csize = 0;
- }
-
-- if (csize) {
-+ if (ri.csize) {
- /* Check data CRC too */
- unsigned char *dbuf;
-- uint32_t crc;
-+ __u32 crc;
-
-- dbuf = (unsigned char*)ri + sizeof *ri;
-- crc = crc32(0, dbuf, csize);
-- if (crc != je32_to_cpu(ri->data_crc)) {
-+ dbuf = kmalloc(PAGE_CACHE_SIZE, GFP_KERNEL);
-+ if (!dbuf) {
-+ printk(KERN_NOTICE "jffs2_scan_inode_node(): allocation of temporary data buffer for CRC check failed\n");
-+ return -ENOMEM;
-+ }
-+ ret = c->mtd->read(c->mtd, *ofs+sizeof(ri), ri.csize, &retlen, dbuf);
-+ if (ret) {
-+ printk(KERN_NOTICE "jffs2_scan_inode_node(): Read error at 0x%08x: %d\n", *ofs+sizeof(ri), ret);
-+ kfree(dbuf);
-+ return ret;
-+ }
-+ if (retlen != ri.csize) {
-+ printk(KERN_NOTICE "Short read: 0x%x bytes at 0x%08x instead of requested %x\n",
-+ retlen, *ofs+ sizeof(ri), ri.csize);
-+ kfree(dbuf);
-+ return -EIO;
-+ }
-+ crc = crc32(0, dbuf, ri.csize);
-+ kfree(dbuf);
-+ if (crc != ri.data_crc) {
- printk(KERN_NOTICE "jffs2_scan_inode_node(): Data CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n",
-- ofs, je32_to_cpu(ri->data_crc), crc);
-- DIRTY_SPACE(PAD(je32_to_cpu(ri->totlen)));
-+ *ofs, ri.data_crc, crc);
-+ DIRTY_SPACE(PAD(ri.totlen));
-+ *ofs += PAD(ri.totlen);
- return 0;
- }
- }
-@@ -741,7 +507,7 @@
- jffs2_free_raw_node_ref(raw);
- return -ENOMEM;
- }
-- ic = jffs2_scan_make_ino_cache(c, je32_to_cpu(ri->ino));
-+ ic = jffs2_scan_make_ino_cache(c, ri.ino);
- if (!ic) {
- jffs2_free_full_dnode(fn);
- jffs2_free_tmp_dnode_info(tn);
-@@ -750,12 +516,8 @@
- }
-
- /* Build the data structures and file them for later */
-- if (dsize == PAGE_CACHE_SIZE)
-- raw->flash_offset = ofs | REF_PRISTINE;
-- else
-- raw->flash_offset = ofs | REF_NORMAL;
--
-- raw->totlen = PAD(je32_to_cpu(ri->totlen));
-+ raw->flash_offset = *ofs;
-+ raw->totlen = PAD(ri.totlen);
- raw->next_phys = NULL;
- raw->next_in_ino = ic->nodes;
- ic->nodes = raw;
-@@ -766,118 +528,134 @@
- jeb->last_node = raw;
-
- D1(printk(KERN_DEBUG "Node is ino #%u, version %d. Range 0x%x-0x%x\n",
-- je32_to_cpu(ri->ino), je32_to_cpu(ri->version),
-- je32_to_cpu(ri->offset),
-- je32_to_cpu(ri->offset)+dsize));
-+ ri.ino, ri.version, ri.offset, ri.offset+ri.dsize));
-
-- pseudo_random += je32_to_cpu(ri->version);
-+ pseudo_random += ri.version;
-
- for (tn_list = &ic->scan->tmpnodes; *tn_list; tn_list = &((*tn_list)->next)) {
-- if ((*tn_list)->version < je32_to_cpu(ri->version))
-+ if ((*tn_list)->version < ri.version)
- continue;
-- if ((*tn_list)->version > je32_to_cpu(ri->version))
-+ if ((*tn_list)->version > ri.version)
- break;
- /* Wheee. We've found another instance of the same version number.
- We should obsolete one of them.
- */
-- D1(printk(KERN_DEBUG "Duplicate version %d found in ino #%u. Previous one is at 0x%08x\n",
-- je32_to_cpu(ri->version), ic->ino,
-- ref_offset((*tn_list)->fn->raw)));
-+ D1(printk(KERN_DEBUG "Duplicate version %d found in ino #%u. Previous one is at 0x%08x\n", ri.version, ic->ino, (*tn_list)->fn->raw->flash_offset &~3));
- if (!jeb->used_size) {
- D1(printk(KERN_DEBUG "No valid nodes yet found in this eraseblock 0x%08x, so obsoleting the new instance at 0x%08x\n",
-- jeb->offset, ref_offset(raw)));
-- jffs2_free_full_dnode(fn);
-- jffs2_free_tmp_dnode_info(tn);
-- raw->flash_offset |= REF_OBSOLETE;
-- DIRTY_SPACE(PAD(je32_to_cpu(ri->totlen)));
-+ jeb->offset, raw->flash_offset & ~3));
-+ ri.nodetype &= ~JFFS2_NODE_ACCURATE;
- /* Perhaps we could also mark it as such on the medium. Maybe later */
-- return 0;
- }
- break;
- }
-
-- /* Only do fraglist truncation in pass1 for S_IFREG inodes */
-- if (S_ISREG(je32_to_cpu(ri->mode)) && ic->scan->version < je32_to_cpu(ri->version)) {
-- ic->scan->version = je32_to_cpu(ri->version);
-- ic->scan->isize = je32_to_cpu(ri->isize);
-- }
--
-- memset(fn,0,sizeof(*fn));
--
-- fn->ofs = je32_to_cpu(ri->offset);
-- fn->size = dsize;
-- fn->frags = 0;
-- fn->raw = raw;
--
-- tn->next = NULL;
-- tn->fn = fn;
-- tn->version = je32_to_cpu(ri->version);
--
-- USED_SPACE(PAD(je32_to_cpu(ri->totlen)));
--
-- /* No need to scan from the beginning of the list again.
-- We can start from tn_list instead (Thanks Jocke) */
-- jffs2_add_tn_to_list(tn, tn_list);
--
-- /* Make sure the one we just added is the _last_ in the list
-- with this version number, so the older ones get obsoleted */
-- while (tn->next && tn->next->version == tn->version) {
--
-- D1(printk(KERN_DEBUG "Shifting new node at 0x%08x after other node at 0x%08x for version %d in list\n",
-- ref_offset(fn->raw),
-- ref_offset(tn->next->fn->raw),
-- je32_to_cpu(ri->version)));
--
-- if(tn->fn != fn)
-- BUG();
-- tn->fn = tn->next->fn;
-- tn->next->fn = fn;
-- tn = tn->next;
-- }
-+ if (ri.nodetype & JFFS2_NODE_ACCURATE) {
-+ memset(fn,0,sizeof(*fn));
-
-+ fn->ofs = ri.offset;
-+ fn->size = ri.dsize;
-+ fn->frags = 0;
-+ fn->raw = raw;
-+
-+ tn->next = NULL;
-+ tn->fn = fn;
-+ tn->version = ri.version;
-+
-+ USED_SPACE(PAD(ri.totlen));
-+ jffs2_add_tn_to_list(tn, &ic->scan->tmpnodes);
-+ /* Make sure the one we just added is the _last_ in the list
-+ with this version number, so the older ones get obsoleted */
-+ while (tn->next && tn->next->version == tn->version) {
-+
-+ D1(printk(KERN_DEBUG "Shifting new node at 0x%08x after other node at 0x%08x for version %d in list\n",
-+ fn->raw->flash_offset&~3, tn->next->fn->raw->flash_offset &~3, ri.version));
-+
-+ if(tn->fn != fn)
-+ BUG();
-+ tn->fn = tn->next->fn;
-+ tn->next->fn = fn;
-+ tn = tn->next;
-+ }
-+ } else {
-+ jffs2_free_full_dnode(fn);
-+ jffs2_free_tmp_dnode_info(tn);
-+ raw->flash_offset |= 1;
-+ DIRTY_SPACE(PAD(ri.totlen));
-+ }
-+ *ofs += PAD(ri.totlen);
- return 0;
- }
-
--static int jffs2_scan_dirent_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
-- struct jffs2_raw_dirent *rd, uint32_t ofs)
-+static int jffs2_scan_dirent_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, __u32 *ofs)
- {
- struct jffs2_raw_node_ref *raw;
- struct jffs2_full_dirent *fd;
- struct jffs2_inode_cache *ic;
-- uint32_t crc;
-+ struct jffs2_raw_dirent rd;
-+ __u16 oldnodetype;
-+ int ret;
-+ __u32 crc;
-+ ssize_t retlen;
-
-- D1(printk(KERN_DEBUG "jffs2_scan_dirent_node(): Node at 0x%08x\n", ofs));
-+ D1(printk(KERN_DEBUG "jffs2_scan_dirent_node(): Node at 0x%08x\n", *ofs));
-+
-+ ret = c->mtd->read(c->mtd, *ofs, sizeof(rd), &retlen, (char *)&rd);
-+ if (ret) {
-+ printk(KERN_NOTICE "jffs2_scan_dirent_node(): Read error at 0x%08x: %d\n", *ofs, ret);
-+ return ret;
-+ }
-+ if (retlen != sizeof(rd)) {
-+ printk(KERN_NOTICE "Short read: 0x%x bytes at 0x%08x instead of requested %x\n",
-+ retlen, *ofs, sizeof(rd));
-+ return -EIO;
-+ }
-
-- /* We don't get here unless the node is still valid, so we don't have to
-- mask in the ACCURATE bit any more. */
-- crc = crc32(0, rd, sizeof(*rd)-8);
-+ /* We sort of assume that the node was accurate when it was
-+ first written to the medium :) */
-+ oldnodetype = rd.nodetype;
-+ rd.nodetype |= JFFS2_NODE_ACCURATE;
-+ crc = crc32(0, &rd, sizeof(rd)-8);
-+ rd.nodetype = oldnodetype;
-
-- if (crc != je32_to_cpu(rd->node_crc)) {
-+ if (crc != rd.node_crc) {
- printk(KERN_NOTICE "jffs2_scan_dirent_node(): Node CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n",
-- ofs, je32_to_cpu(rd->node_crc), crc);
-- /* We believe totlen because the CRC on the node _header_ was OK, just the node itself failed. */
-- DIRTY_SPACE(PAD(je32_to_cpu(rd->totlen)));
-+ *ofs, rd.node_crc, crc);
-+ /* FIXME: Why do we believe totlen? */
-+ DIRTY_SPACE(4);
-+ *ofs += 4;
- return 0;
- }
-
-- pseudo_random += je32_to_cpu(rd->version);
-+ pseudo_random += rd.version;
-
-- fd = jffs2_alloc_full_dirent(rd->nsize+1);
-+ fd = jffs2_alloc_full_dirent(rd.nsize+1);
- if (!fd) {
- return -ENOMEM;
-+}
-+ ret = c->mtd->read(c->mtd, *ofs + sizeof(rd), rd.nsize, &retlen, &fd->name[0]);
-+ if (ret) {
-+ jffs2_free_full_dirent(fd);
-+ printk(KERN_NOTICE "jffs2_scan_dirent_node(): Read error at 0x%08x: %d\n",
-+ *ofs + sizeof(rd), ret);
-+ return ret;
- }
-- memcpy(&fd->name, rd->name, rd->nsize);
-- fd->name[rd->nsize] = 0;
--
-- crc = crc32(0, fd->name, rd->nsize);
-- if (crc != je32_to_cpu(rd->name_crc)) {
-+ if (retlen != rd.nsize) {
-+ jffs2_free_full_dirent(fd);
-+ printk(KERN_NOTICE "Short read: 0x%x bytes at 0x%08x instead of requested %x\n",
-+ retlen, *ofs + sizeof(rd), rd.nsize);
-+ return -EIO;
-+ }
-+ crc = crc32(0, fd->name, rd.nsize);
-+ if (crc != rd.name_crc) {
- printk(KERN_NOTICE "jffs2_scan_dirent_node(): Name CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n",
-- ofs, je32_to_cpu(rd->name_crc), crc);
-- D1(printk(KERN_NOTICE "Name for which CRC failed is (now) '%s', ino #%d\n", fd->name, je32_to_cpu(rd->ino)));
-+ *ofs, rd.name_crc, crc);
-+ fd->name[rd.nsize]=0;
-+ D1(printk(KERN_NOTICE "Name for which CRC failed is (now) '%s', ino #%d\n", fd->name, rd.ino));
- jffs2_free_full_dirent(fd);
- /* FIXME: Why do we believe totlen? */
-- /* We believe totlen because the CRC on the node _header_ was OK, just the name failed. */
-- DIRTY_SPACE(PAD(je32_to_cpu(rd->totlen)));
-+ DIRTY_SPACE(PAD(rd.totlen));
-+ *ofs += PAD(rd.totlen);
- return 0;
- }
- raw = jffs2_alloc_raw_node_ref();
-@@ -886,15 +664,15 @@
- printk(KERN_NOTICE "jffs2_scan_dirent_node(): allocation of node reference failed\n");
- return -ENOMEM;
- }
-- ic = jffs2_scan_make_ino_cache(c, je32_to_cpu(rd->pino));
-+ ic = jffs2_scan_make_ino_cache(c, rd.pino);
- if (!ic) {
- jffs2_free_full_dirent(fd);
- jffs2_free_raw_node_ref(raw);
- return -ENOMEM;
- }
-
-- raw->totlen = PAD(je32_to_cpu(rd->totlen));
-- raw->flash_offset = ofs;
-+ raw->totlen = PAD(rd.totlen);
-+ raw->flash_offset = *ofs;
- raw->next_phys = NULL;
- raw->next_in_ino = ic->nodes;
- ic->nodes = raw;
-@@ -904,15 +682,24 @@
- jeb->last_node->next_phys = raw;
- jeb->last_node = raw;
-
-- fd->raw = raw;
-- fd->next = NULL;
-- fd->version = je32_to_cpu(rd->version);
-- fd->ino = je32_to_cpu(rd->ino);
-- fd->nhash = full_name_hash(fd->name, rd->nsize);
-- fd->type = rd->type;
-- USED_SPACE(PAD(je32_to_cpu(rd->totlen)));
-- jffs2_add_fd_to_list(c, fd, &ic->scan->dents);
-+ if (rd.nodetype & JFFS2_NODE_ACCURATE) {
-+ fd->raw = raw;
-+ fd->next = NULL;
-+ fd->version = rd.version;
-+ fd->ino = rd.ino;
-+ fd->name[rd.nsize]=0;
-+ fd->nhash = full_name_hash(fd->name, rd.nsize);
-+ fd->type = rd.type;
-+
-+ USED_SPACE(PAD(rd.totlen));
-+ jffs2_add_fd_to_list(c, fd, &ic->scan->dents);
-+ } else {
-+ raw->flash_offset |= 1;
-+ jffs2_free_full_dirent(fd);
-
-+ DIRTY_SPACE(PAD(rd.totlen));
-+ }
-+ *ofs += PAD(rd.totlen);
- return 0;
- }
-
-@@ -934,96 +721,26 @@
- struct list_head *n = head->next;
-
- list_del(head);
-- while(count--) {
-+ while(count--)
- n = n->next;
-- }
- list_add(head, n);
- }
-
--void jffs2_rotate_lists(struct jffs2_sb_info *c)
-+static void jffs2_rotate_lists(struct jffs2_sb_info *c)
- {
- uint32_t x;
-- uint32_t rotateby;
-
- x = count_list(&c->clean_list);
-- if (x) {
-- rotateby = pseudo_random % x;
-- D1(printk(KERN_DEBUG "Rotating clean_list by %d\n", rotateby));
--
-- rotate_list((&c->clean_list), rotateby);
--
-- D1(printk(KERN_DEBUG "Erase block at front of clean_list is at %08x\n",
-- list_entry(c->clean_list.next, struct jffs2_eraseblock, list)->offset));
-- } else {
-- D1(printk(KERN_DEBUG "Not rotating empty clean_list\n"));
-- }
--
-- x = count_list(&c->very_dirty_list);
-- if (x) {
-- rotateby = pseudo_random % x;
-- D1(printk(KERN_DEBUG "Rotating very_dirty_list by %d\n", rotateby));
--
-- rotate_list((&c->very_dirty_list), rotateby);
--
-- D1(printk(KERN_DEBUG "Erase block at front of very_dirty_list is at %08x\n",
-- list_entry(c->very_dirty_list.next, struct jffs2_eraseblock, list)->offset));
-- } else {
-- D1(printk(KERN_DEBUG "Not rotating empty very_dirty_list\n"));
-- }
-+ if (x)
-+ rotate_list((&c->clean_list), pseudo_random % x);
-
- x = count_list(&c->dirty_list);
-- if (x) {
-- rotateby = pseudo_random % x;
-- D1(printk(KERN_DEBUG "Rotating dirty_list by %d\n", rotateby));
-+ if (x)
-+ rotate_list((&c->dirty_list), pseudo_random % x);
-
-- rotate_list((&c->dirty_list), rotateby);
-+ if (c->nr_erasing_blocks)
-+ rotate_list((&c->erase_pending_list), pseudo_random % c->nr_erasing_blocks);
-
-- D1(printk(KERN_DEBUG "Erase block at front of dirty_list is at %08x\n",
-- list_entry(c->dirty_list.next, struct jffs2_eraseblock, list)->offset));
-- } else {
-- D1(printk(KERN_DEBUG "Not rotating empty dirty_list\n"));
-- }
--
-- x = count_list(&c->erasable_list);
-- if (x) {
-- rotateby = pseudo_random % x;
-- D1(printk(KERN_DEBUG "Rotating erasable_list by %d\n", rotateby));
--
-- rotate_list((&c->erasable_list), rotateby);
--
-- D1(printk(KERN_DEBUG "Erase block at front of erasable_list is at %08x\n",
-- list_entry(c->erasable_list.next, struct jffs2_eraseblock, list)->offset));
-- } else {
-- D1(printk(KERN_DEBUG "Not rotating empty erasable_list\n"));
-- }
--
-- if (c->nr_erasing_blocks) {
-- rotateby = pseudo_random % c->nr_erasing_blocks;
-- D1(printk(KERN_DEBUG "Rotating erase_pending_list by %d\n", rotateby));
--
-- rotate_list((&c->erase_pending_list), rotateby);
--
-- D1(printk(KERN_DEBUG "Erase block at front of erase_pending_list is at %08x\n",
-- list_entry(c->erase_pending_list.next, struct jffs2_eraseblock, list)->offset));
-- } else {
-- D1(printk(KERN_DEBUG "Not rotating empty erase_pending_list\n"));
-- }
--
-- if (c->nr_free_blocks) {
-- rotateby = pseudo_random % c->nr_free_blocks;
-- D1(printk(KERN_DEBUG "Rotating free_list by %d\n", rotateby));
--
-- rotate_list((&c->free_list), rotateby);
--
-- D1(printk(KERN_DEBUG "Erase block at front of free_list is at %08x\n",
-- list_entry(c->free_list.next, struct jffs2_eraseblock, list)->offset));
-- } else {
-- D1(printk(KERN_DEBUG "Not rotating empty free_list\n"));
-- }
-+ if (c->nr_free_blocks) /* Not that it should ever be zero */
-+ rotate_list((&c->free_list), pseudo_random % c->nr_free_blocks);
- }
--
--/*
-- * Local variables:
-- * c-basic-offset: 8
-- * End:
-- */
-diff -Nur linux/fs/jffs2/super-v24.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/super-v24.c
---- linux/fs/jffs2/super-v24.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/super-v24.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,183 +0,0 @@
--/*
-- * JFFS2 -- Journalling Flash File System, Version 2.
-- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-- *
-- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
-- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-- *
-- * $Id: super-v24.c,v 1.63 2002/05/20 14:56:39 dwmw2 Exp $
-- *
-- * ChangeLog:
-- * 08-Nov-2002 Lineo Japan, Inc. add /proc/fs/jffs2 files for JFFS2 information
-- *
-- */
--
--#include <linux/config.h>
--#include <linux/kernel.h>
--#include <linux/module.h>
--#include <linux/version.h>
--#include <linux/slab.h>
--#include <linux/init.h>
--#include <linux/list.h>
--#include <linux/fs.h>
--#include <linux/jffs2.h>
--#include <linux/pagemap.h>
--#include <linux/mtd/mtd.h>
--#include <linux/interrupt.h>
--#include "nodelist.h"
--#ifdef CONFIG_JFFS2_PROC_FS
--#include "jffs2_proc.h"
--#endif
--
--#ifndef MTD_BLOCK_MAJOR
--#define MTD_BLOCK_MAJOR 31
--#endif
--
--void jffs2_put_super (struct super_block *);
--
--static struct super_operations jffs2_super_operations =
--{
-- read_inode: jffs2_read_inode,
-- put_super: jffs2_put_super,
-- write_super: jffs2_write_super,
-- statfs: jffs2_statfs,
-- remount_fs: jffs2_remount_fs,
-- clear_inode: jffs2_clear_inode
--};
--
--
--static struct super_block *jffs2_read_super(struct super_block *sb, void *data, int silent)
--{
-- struct jffs2_sb_info *c;
-- int ret;
--
-- D1(printk(KERN_DEBUG "jffs2: read_super for device %s\n", kdevname(sb->s_dev)));
--
-- if (major(sb->s_dev) != MTD_BLOCK_MAJOR) {
-- if (!silent)
-- printk(KERN_DEBUG "jffs2: attempt to mount non-MTD device %s\n", kdevname(sb->s_dev));
-- return NULL;
-- }
--
-- c = JFFS2_SB_INFO(sb);
-- memset(c, 0, sizeof(*c));
--
-- sb->s_op = &jffs2_super_operations;
--
-- c->mtd = get_mtd_device(NULL, minor(sb->s_dev));
-- if (!c->mtd) {
-- D1(printk(KERN_DEBUG "jffs2: MTD device #%u doesn't appear to exist\n", minor(sb->s_dev)));
-- return NULL;
-- }
--
-- ret = jffs2_do_fill_super(sb, data, silent);
-- if (ret) {
-- put_mtd_device(c->mtd);
-- return NULL;
-- }
--
--#ifdef CONFIG_JFFS2_PROC_FS
-- if (jffs2_register_jffs2_proc_dir(sb->s_dev, c) < 0) {
-- printk(KERN_WARNING "JFFS2: Failed to register "
-- "proc file system for device %s.\n",
-- kdevname(sb->s_dev));
-- }
--#endif
--
-- return sb;
--}
--
--void jffs2_put_super (struct super_block *sb)
--{
-- struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
--
-- D2(printk(KERN_DEBUG "jffs2: jffs2_put_super()\n"));
--
--#ifdef CONFIG_JFFS2_PROC_FS
-- jffs2_unregister_jffs2_proc_dir(c);
--#endif
--
-- if (!(sb->s_flags & MS_RDONLY))
-- jffs2_stop_garbage_collect_thread(c);
-- down(&c->alloc_sem);
-- jffs2_flush_wbuf(c, 1);
-- up(&c->alloc_sem);
-- jffs2_free_ino_caches(c);
-- jffs2_free_raw_node_refs(c);
-- kfree(c->blocks);
-- if (c->mtd->sync)
-- c->mtd->sync(c->mtd);
-- put_mtd_device(c->mtd);
--
-- D1(printk(KERN_DEBUG "jffs2_put_super returning\n"));
--}
--
--static DECLARE_FSTYPE_DEV(jffs2_fs_type, "jffs2", jffs2_read_super);
--
--static int __init init_jffs2_fs(void)
--{
-- int ret;
--
-- printk(KERN_NOTICE "JFFS2 version 2.1. (C) 2001, 2002 Red Hat, Inc., designed by Axis Communications AB.\n");
--
--#ifdef JFFS2_OUT_OF_KERNEL
-- /* sanity checks. Could we do these at compile time? */
-- if (sizeof(struct jffs2_sb_info) > sizeof (((struct super_block *)NULL)->u)) {
-- printk(KERN_ERR "JFFS2 error: struct jffs2_sb_info (%d bytes) doesn't fit in the super_block union (%d bytes)\n",
-- sizeof(struct jffs2_sb_info), sizeof (((struct super_block *)NULL)->u));
-- return -EIO;
-- }
--
-- if (sizeof(struct jffs2_inode_info) > sizeof (((struct inode *)NULL)->u)) {
-- printk(KERN_ERR "JFFS2 error: struct jffs2_inode_info (%d bytes) doesn't fit in the inode union (%d bytes)\n",
-- sizeof(struct jffs2_inode_info), sizeof (((struct inode *)NULL)->u));
-- return -EIO;
-- }
--#endif
-- ret = jffs2_zlib_init();
-- if (ret) {
-- printk(KERN_ERR "JFFS2 error: Failed to initialise zlib workspaces\n");
-- goto out;
-- }
-- ret = jffs2_create_slab_caches();
-- if (ret) {
-- printk(KERN_ERR "JFFS2 error: Failed to initialise slab caches\n");
-- goto out_zlib;
-- }
-- ret = register_filesystem(&jffs2_fs_type);
-- if (ret) {
-- printk(KERN_ERR "JFFS2 error: Failed to register filesystem\n");
-- goto out_slab;
-- }
--
--#ifdef CONFIG_JFFS2_PROC_FS
-- jffs2_proc_root = proc_mkdir("jffs2", proc_root_fs);
--#endif
--
-- return 0;
--
-- out_slab:
-- jffs2_destroy_slab_caches();
-- out_zlib:
-- jffs2_zlib_exit();
-- out:
--
-- return ret;
--}
--
--static void __exit exit_jffs2_fs(void)
--{
-- jffs2_destroy_slab_caches();
-- jffs2_zlib_exit();
-- unregister_filesystem(&jffs2_fs_type);
--}
--
--module_init(init_jffs2_fs);
--module_exit(exit_jffs2_fs);
--
--MODULE_DESCRIPTION("The Journalling Flash File System, v2");
--MODULE_AUTHOR("Red Hat, Inc.");
--MODULE_LICENSE("GPL"); // Actually dual-licensed, but it doesn't matter for
-- // the sake of this tag. It's Free Software.
-diff -Nur linux/fs/jffs2/super.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/super.c
---- linux/fs/jffs2/super.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/super.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,13 +1,37 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: super.c,v 1.73 2002/07/23 17:00:45 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: super.c,v 1.48.2.2 2002/03/12 15:36:43 dwmw2 Exp $
- *
- */
-
-@@ -23,233 +47,244 @@
- #include <linux/pagemap.h>
- #include <linux/mtd/mtd.h>
- #include <linux/interrupt.h>
--#include <linux/ctype.h>
--#include <linux/namei.h>
- #include "nodelist.h"
-
--void jffs2_put_super (struct super_block *);
--
--
--static kmem_cache_t *jffs2_inode_cachep;
--
--static struct inode *jffs2_alloc_inode(struct super_block *sb)
--{
-- struct jffs2_inode_info *ei;
-- ei = (struct jffs2_inode_info *)kmem_cache_alloc(jffs2_inode_cachep, SLAB_KERNEL);
-- if (!ei)
-- return NULL;
-- return &ei->vfs_inode;
--}
--
--static void jffs2_destroy_inode(struct inode *inode)
--{
-- kmem_cache_free(jffs2_inode_cachep, JFFS2_INODE_INFO(inode));
--}
-+#ifndef MTD_BLOCK_MAJOR
-+#define MTD_BLOCK_MAJOR 31
-+#endif
-
--static void jffs2_i_init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
--{
-- struct jffs2_inode_info *ei = (struct jffs2_inode_info *) foo;
--
-- if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
-- SLAB_CTOR_CONSTRUCTOR) {
-- init_MUTEX(&ei->sem);
-- inode_init_once(&ei->vfs_inode);
-- }
--}
-+extern void jffs2_read_inode (struct inode *);
-+void jffs2_put_super (struct super_block *);
-+void jffs2_write_super (struct super_block *);
-+static int jffs2_statfs (struct super_block *, struct statfs *);
-+int jffs2_remount_fs (struct super_block *, int *, char *);
-+extern void jffs2_clear_inode (struct inode *);
-
- static struct super_operations jffs2_super_operations =
- {
-- .alloc_inode = jffs2_alloc_inode,
-- .destroy_inode =jffs2_destroy_inode,
-- .read_inode = jffs2_read_inode,
-- .put_super = jffs2_put_super,
-- .write_super = jffs2_write_super,
-- .statfs = jffs2_statfs,
-- .remount_fs = jffs2_remount_fs,
-- .clear_inode = jffs2_clear_inode
-+ read_inode: jffs2_read_inode,
-+// delete_inode: jffs2_delete_inode,
-+ put_super: jffs2_put_super,
-+ write_super: jffs2_write_super,
-+ statfs: jffs2_statfs,
-+ remount_fs: jffs2_remount_fs,
-+ clear_inode: jffs2_clear_inode
- };
-
--static int jffs2_sb_compare(struct super_block *sb, void *data)
-+static int jffs2_statfs(struct super_block *sb, struct statfs *buf)
- {
-- struct jffs2_sb_info *p = data;
- struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
-+ unsigned long avail;
-+
-+ buf->f_type = JFFS2_SUPER_MAGIC;
-+ buf->f_bsize = 1 << PAGE_SHIFT;
-+ buf->f_blocks = c->flash_size >> PAGE_SHIFT;
-+ buf->f_files = 0;
-+ buf->f_ffree = 0;
-+ buf->f_namelen = JFFS2_MAX_NAME_LEN;
-+
-+ spin_lock_bh(&c->erase_completion_lock);
-+
-+ avail = c->dirty_size + c->free_size;
-+ if (avail > c->sector_size * JFFS2_RESERVED_BLOCKS_WRITE)
-+ avail -= c->sector_size * JFFS2_RESERVED_BLOCKS_WRITE;
-+ else
-+ avail = 0;
-+
-+ buf->f_bavail = buf->f_bfree = avail >> PAGE_SHIFT;
-+
-+#if CONFIG_JFFS2_FS_DEBUG > 0
-+ printk(KERN_DEBUG "STATFS:\n");
-+ printk(KERN_DEBUG "flash_size: %08x\n", c->flash_size);
-+ printk(KERN_DEBUG "used_size: %08x\n", c->used_size);
-+ printk(KERN_DEBUG "dirty_size: %08x\n", c->dirty_size);
-+ printk(KERN_DEBUG "free_size: %08x\n", c->free_size);
-+ printk(KERN_DEBUG "erasing_size: %08x\n", c->erasing_size);
-+ printk(KERN_DEBUG "bad_size: %08x\n", c->bad_size);
-+ printk(KERN_DEBUG "sector_size: %08x\n", c->sector_size);
-
-- /* The superblocks are considered to be equivalent if the underlying MTD
-- device is the same one */
-- if (c->mtd == p->mtd) {
-- D1(printk(KERN_DEBUG "jffs2_sb_compare: match on device %d (\"%s\")\n", p->mtd->index, p->mtd->name));
-- return 1;
-+ if (c->nextblock) {
-+ printk(KERN_DEBUG "nextblock: 0x%08x\n", c->nextblock->offset);
- } else {
-- D1(printk(KERN_DEBUG "jffs2_sb_compare: No match, device %d (\"%s\"), device %d (\"%s\")\n",
-- c->mtd->index, c->mtd->name, p->mtd->index, p->mtd->name));
-- return 0;
-+ printk(KERN_DEBUG "nextblock: NULL\n");
- }
--}
--
--static int jffs2_sb_set(struct super_block *sb, void *data)
--{
-- struct jffs2_sb_info *p = data;
--
-- /* For persistence of NFS exports etc. we use the same s_dev
-- each time we mount the device, don't just use an anonymous
-- device */
-- sb->u.generic_sbp = p;
-- p->os_priv = sb;
-- sb->s_dev = MKDEV(MTD_BLOCK_MAJOR, p->mtd->index);
--
-- return 0;
--}
--
--static struct super_block *jffs2_get_sb_mtd(struct file_system_type *fs_type,
-- int flags, char *dev_name,
-- void *data, struct mtd_info *mtd)
--{
-- struct super_block *sb;
-- struct jffs2_sb_info *c;
-- int ret;
--
-- c = kmalloc(sizeof(*c), GFP_KERNEL);
-- if (!c)
-- return ERR_PTR(-ENOMEM);
-- memset(c, 0, sizeof(*c));
-- c->mtd = mtd;
-+ if (c->gcblock) {
-+ printk(KERN_DEBUG "gcblock: 0x%08x\n", c->gcblock->offset);
-+ } else {
-+ printk(KERN_DEBUG "gcblock: NULL\n");
-+ }
-+ if (list_empty(&c->clean_list)) {
-+ printk(KERN_DEBUG "clean_list: empty\n");
-+ } else {
-+ struct list_head *this;
-
-- sb = sget(fs_type, jffs2_sb_compare, jffs2_sb_set, c);
-+ list_for_each(this, &c->clean_list) {
-+ struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-+ printk(KERN_DEBUG "clean_list: %08x\n", jeb->offset);
-+ }
-+ }
-+ if (list_empty(&c->dirty_list)) {
-+ printk(KERN_DEBUG "dirty_list: empty\n");
-+ } else {
-+ struct list_head *this;
-
-- if (IS_ERR(sb))
-- goto out_put;
-+ list_for_each(this, &c->dirty_list) {
-+ struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-+ printk(KERN_DEBUG "dirty_list: %08x\n", jeb->offset);
-+ }
-+ }
-+ if (list_empty(&c->erasing_list)) {
-+ printk(KERN_DEBUG "erasing_list: empty\n");
-+ } else {
-+ struct list_head *this;
-
-- if (sb->s_root) {
-- /* New mountpoint for JFFS2 which is already mounted */
-- D1(printk(KERN_DEBUG "jffs2_get_sb_mtd(): Device %d (\"%s\") is already mounted\n",
-- mtd->index, mtd->name));
-- goto out_put;
-+ list_for_each(this, &c->erasing_list) {
-+ struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-+ printk(KERN_DEBUG "erasing_list: %08x\n", jeb->offset);
-+ }
- }
-+ if (list_empty(&c->erase_pending_list)) {
-+ printk(KERN_DEBUG "erase_pending_list: empty\n");
-+ } else {
-+ struct list_head *this;
-
-- D1(printk(KERN_DEBUG "jffs2_get_sb_mtd(): New superblock for device %d (\"%s\")\n",
-- mtd->index, mtd->name));
-+ list_for_each(this, &c->erase_pending_list) {
-+ struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-+ printk(KERN_DEBUG "erase_pending_list: %08x\n", jeb->offset);
-+ }
-+ }
-+ if (list_empty(&c->free_list)) {
-+ printk(KERN_DEBUG "free_list: empty\n");
-+ } else {
-+ struct list_head *this;
-
-- sb->s_op = &jffs2_super_operations;
-+ list_for_each(this, &c->free_list) {
-+ struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-+ printk(KERN_DEBUG "free_list: %08x\n", jeb->offset);
-+ }
-+ }
-+ if (list_empty(&c->bad_list)) {
-+ printk(KERN_DEBUG "bad_list: empty\n");
-+ } else {
-+ struct list_head *this;
-
-- ret = jffs2_do_fill_super(sb, data, (flags&MS_VERBOSE)?1:0);
-+ list_for_each(this, &c->bad_list) {
-+ struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-+ printk(KERN_DEBUG "bad_list: %08x\n", jeb->offset);
-+ }
-+ }
-+ if (list_empty(&c->bad_used_list)) {
-+ printk(KERN_DEBUG "bad_used_list: empty\n");
-+ } else {
-+ struct list_head *this;
-
-- if (ret) {
-- /* Failure case... */
-- up_write(&sb->s_umount);
-- deactivate_super(sb);
-- sb = ERR_PTR(ret);
-- goto out_put1;
-+ list_for_each(this, &c->bad_used_list) {
-+ struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
-+ printk(KERN_DEBUG "bad_used_list: %08x\n", jeb->offset);
-+ }
- }
-+#endif /* CONFIG_JFFS2_FS_DEBUG */
-
-- sb->s_flags |= MS_ACTIVE;
-- return sb;
-+ spin_unlock_bh(&c->erase_completion_lock);
-
-- out_put:
-- kfree(c);
-- out_put1:
-- put_mtd_device(mtd);
-
-- return sb;
-+ return 0;
- }
-
--static struct super_block *jffs2_get_sb_mtdnr(struct file_system_type *fs_type,
-- int flags, char *dev_name,
-- void *data, int mtdnr)
-+static struct super_block *jffs2_read_super(struct super_block *sb, void *data, int silent)
- {
-- struct mtd_info *mtd;
--
-- mtd = get_mtd_device(NULL, mtdnr);
-- if (!mtd) {
-- D1(printk(KERN_DEBUG "jffs2: MTD device #%u doesn't appear to exist\n", mtdnr));
-- return ERR_PTR(-EINVAL);
-- }
-+ struct jffs2_sb_info *c;
-+ struct inode *root_i;
-+ int i;
-
-- return jffs2_get_sb_mtd(fs_type, flags, dev_name, data, mtd);
--}
-+ D1(printk(KERN_DEBUG "jffs2: read_super for device %s\n", kdevname(sb->s_dev)));
-
--static struct super_block *jffs2_get_sb(struct file_system_type *fs_type,
-- int flags, char *dev_name, void *data)
--{
-- int err;
-- struct nameidata nd;
-- int mtdnr;
-- kdev_t dev;
--
-- if (!dev_name)
-- return ERR_PTR(-EINVAL);
--
-- D1(printk(KERN_DEBUG "jffs2_get_sb(): dev_name \"%s\"\n", dev_name));
--
-- /* The preferred way of mounting in future; especially when
-- CONFIG_BLK_DEV is implemented - we specify the underlying
-- MTD device by number or by name, so that we don't require
-- block device support to be present in the kernel. */
--
-- /* FIXME: How to do the root fs this way? */
--
-- if (dev_name[0] == 'm' && dev_name[1] == 't' && dev_name[2] == 'd') {
-- /* Probably mounting without the blkdev crap */
-- if (dev_name[3] == ':') {
-- struct mtd_info *mtd;
--
-- /* Mount by MTD device name */
-- D1(printk(KERN_DEBUG "jffs2_get_sb(): mtd:%%s, name \"%s\"\n", dev_name+4));
-- for (mtdnr = 0; mtdnr < MAX_MTD_DEVICES; mtdnr++) {
-- mtd = get_mtd_device(NULL, mtdnr);
-- if (mtd) {
-- if (!strcmp(mtd->name, dev_name+4))
-- return jffs2_get_sb_mtd(fs_type, flags, dev_name, data, mtd);
-- put_mtd_device(mtd);
-- }
-- }
-- printk(KERN_NOTICE "jffs2_get_sb(): MTD device with name \"%s\" not found.\n", dev_name+4);
-- } else if (isdigit(dev_name[3])) {
-- /* Mount by MTD device number name */
-- char *endptr;
--
-- mtdnr = simple_strtoul(dev_name+3, &endptr, 0);
-- if (!*endptr) {
-- /* It was a valid number */
-- D1(printk(KERN_DEBUG "jffs2_get_sb(): mtd%%d, mtdnr %d\n", mtdnr));
-- return jffs2_get_sb_mtdnr(fs_type, flags, dev_name, data, mtdnr);
-- }
-- }
-+ if (MAJOR(sb->s_dev) != MTD_BLOCK_MAJOR) {
-+ if (!silent)
-+ printk(KERN_DEBUG "jffs2: attempt to mount non-MTD device %s\n", kdevname(sb->s_dev));
-+ return NULL;
- }
-
-- /* Try the old way - the hack where we allowed users to mount
-- /dev/mtdblock$(n) but didn't actually _use_ the blkdev */
--
-- err = path_lookup(dev_name, LOOKUP_FOLLOW, &nd);
--
-- D1(printk(KERN_DEBUG "jffs2_get_sb(): path_lookup() returned %d, inode %p\n",
-- err, nd.dentry->d_inode));
--
-- if (err)
-- return ERR_PTR(err);
--
-- if (!S_ISBLK(nd.dentry->d_inode->i_mode)) {
-- path_release(&nd);
-- return ERR_PTR(-EINVAL);
-+ c = JFFS2_SB_INFO(sb);
-+ memset(c, 0, sizeof(*c));
-+
-+ c->mtd = get_mtd_device(NULL, MINOR(sb->s_dev));
-+ if (!c->mtd) {
-+ D1(printk(KERN_DEBUG "jffs2: MTD device #%u doesn't appear to exist\n", MINOR(sb->s_dev)));
-+ return NULL;
- }
-- if (nd.mnt->mnt_flags & MNT_NODEV) {
-- path_release(&nd);
-- return ERR_PTR(-EACCES);
-+ c->sector_size = c->mtd->erasesize;
-+ c->free_size = c->flash_size = c->mtd->size;
-+ c->nr_blocks = c->mtd->size / c->mtd->erasesize;
-+ c->blocks = kmalloc(sizeof(struct jffs2_eraseblock) * c->nr_blocks, GFP_KERNEL);
-+ if (!c->blocks)
-+ goto out_mtd;
-+ for (i=0; i<c->nr_blocks; i++) {
-+ INIT_LIST_HEAD(&c->blocks[i].list);
-+ c->blocks[i].offset = i * c->sector_size;
-+ c->blocks[i].free_size = c->sector_size;
-+ c->blocks[i].dirty_size = 0;
-+ c->blocks[i].used_size = 0;
-+ c->blocks[i].first_node = NULL;
-+ c->blocks[i].last_node = NULL;
-+ }
-+
-+ spin_lock_init(&c->nodelist_lock);
-+ init_MUTEX(&c->alloc_sem);
-+ init_waitqueue_head(&c->erase_wait);
-+ spin_lock_init(&c->erase_completion_lock);
-+ spin_lock_init(&c->inocache_lock);
-+
-+ INIT_LIST_HEAD(&c->clean_list);
-+ INIT_LIST_HEAD(&c->dirty_list);
-+ INIT_LIST_HEAD(&c->erasing_list);
-+ INIT_LIST_HEAD(&c->erase_pending_list);
-+ INIT_LIST_HEAD(&c->erase_complete_list);
-+ INIT_LIST_HEAD(&c->free_list);
-+ INIT_LIST_HEAD(&c->bad_list);
-+ INIT_LIST_HEAD(&c->bad_used_list);
-+ c->highest_ino = 1;
-+
-+ if (jffs2_build_filesystem(c)) {
-+ D1(printk(KERN_DEBUG "build_fs failed\n"));
-+ goto out_nodes;
- }
-
-- dev = nd.dentry->d_inode->i_rdev;
-- path_release(&nd);
-+ sb->s_op = &jffs2_super_operations;
-
-- if (major(dev) != MTD_BLOCK_MAJOR) {
-- if (!(flags & MS_VERBOSE)) /* Yes I mean this. Strangely */
-- printk(KERN_NOTICE "Attempt to mount non-MTD device \"%s\" as JFFS2\n",
-- dev_name);
-- return ERR_PTR(-EINVAL);
-- }
-+ D1(printk(KERN_DEBUG "jffs2_read_super(): Getting root inode\n"));
-+ root_i = iget(sb, 1);
-+ if (is_bad_inode(root_i)) {
-+ D1(printk(KERN_WARNING "get root inode failed\n"));
-+ goto out_nodes;
-+ }
-+
-+ D1(printk(KERN_DEBUG "jffs2_read_super(): d_alloc_root()\n"));
-+ sb->s_root = d_alloc_root(root_i);
-+ if (!sb->s_root)
-+ goto out_root_i;
-+
-+#if LINUX_VERSION_CODE >= 0x20403
-+ sb->s_maxbytes = 0xFFFFFFFF;
-+#endif
-+ sb->s_blocksize = PAGE_CACHE_SIZE;
-+ sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
-+ sb->s_magic = JFFS2_SUPER_MAGIC;
-+ if (!(sb->s_flags & MS_RDONLY))
-+ jffs2_start_garbage_collect_thread(c);
-+ return sb;
-
-- return jffs2_get_sb_mtdnr(fs_type, flags, dev_name, data, minor(dev));
-+ out_root_i:
-+ iput(root_i);
-+ out_nodes:
-+ jffs2_free_ino_caches(c);
-+ jffs2_free_raw_node_refs(c);
-+ kfree(c->blocks);
-+ out_mtd:
-+ put_mtd_device(c->mtd);
-+ return NULL;
- }
-
--
- void jffs2_put_super (struct super_block *sb)
- {
- struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
-@@ -258,83 +293,91 @@
-
- if (!(sb->s_flags & MS_RDONLY))
- jffs2_stop_garbage_collect_thread(c);
-- down(&c->alloc_sem);
-- jffs2_flush_wbuf(c, 1);
-- up(&c->alloc_sem);
- jffs2_free_ino_caches(c);
- jffs2_free_raw_node_refs(c);
- kfree(c->blocks);
-- if (c->wbuf)
-- kfree(c->wbuf);
-- kfree(c->inocache_list);
- if (c->mtd->sync)
- c->mtd->sync(c->mtd);
--
-+ put_mtd_device(c->mtd);
-+
- D1(printk(KERN_DEBUG "jffs2_put_super returning\n"));
- }
-
--static void jffs2_kill_sb(struct super_block *sb)
-+int jffs2_remount_fs (struct super_block *sb, int *flags, char *data)
- {
- struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
-- generic_shutdown_super(sb);
-- put_mtd_device(c->mtd);
-- kfree(c);
-+
-+ if (c->flags & JFFS2_SB_FLAG_RO && !(sb->s_flags & MS_RDONLY))
-+ return -EROFS;
-+
-+ /* We stop if it was running, then restart if it needs to.
-+ This also catches the case where it was stopped and this
-+ is just a remount to restart it */
-+ if (!(sb->s_flags & MS_RDONLY))
-+ jffs2_stop_garbage_collect_thread(c);
-+
-+ if (!(*flags & MS_RDONLY))
-+ jffs2_start_garbage_collect_thread(c);
-+
-+ sb->s_flags = (sb->s_flags & ~MS_RDONLY)|(*flags & MS_RDONLY);
-+
-+ return 0;
- }
--
--static struct file_system_type jffs2_fs_type = {
-- .owner = THIS_MODULE,
-- .name = "jffs2",
-- .get_sb = jffs2_get_sb,
-- .kill_sb = jffs2_kill_sb,
--};
-
-+void jffs2_write_super (struct super_block *sb)
-+{
-+ struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
-+ sb->s_dirt = 0;
-+
-+ if (sb->s_flags & MS_RDONLY)
-+ return;
-+
-+ jffs2_garbage_collect_trigger(c);
-+ jffs2_erase_pending_blocks(c);
-+ jffs2_mark_erased_blocks(c);
-+}
-
-
-+static DECLARE_FSTYPE_DEV(jffs2_fs_type, "jffs2", jffs2_read_super);
-+
- static int __init init_jffs2_fs(void)
- {
- int ret;
-
-- printk(KERN_INFO "JFFS2 version 2.1. (C) 2001, 2002 Red Hat, Inc.\n");
-+ printk(KERN_NOTICE "JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications AB.\n");
-
-- jffs2_inode_cachep = kmem_cache_create("jffs2_i",
-- sizeof(struct jffs2_inode_info),
-- 0, SLAB_HWCACHE_ALIGN,
-- jffs2_i_init_once, NULL);
-- if (!jffs2_inode_cachep) {
-- printk(KERN_ERR "JFFS2 error: Failed to initialise inode cache\n");
-- return -ENOMEM;
-- }
-- ret = jffs2_zlib_init();
-- if (ret) {
-- printk(KERN_ERR "JFFS2 error: Failed to initialise zlib workspaces\n");
-- goto out;
-+#ifdef JFFS2_OUT_OF_KERNEL
-+ /* sanity checks. Could we do these at compile time? */
-+ if (sizeof(struct jffs2_sb_info) > sizeof (((struct super_block *)NULL)->u)) {
-+ printk(KERN_ERR "JFFS2 error: struct jffs2_sb_info (%d bytes) doesn't fit in the super_block union (%d bytes)\n",
-+ sizeof(struct jffs2_sb_info), sizeof (((struct super_block *)NULL)->u));
-+ return -EIO;
-+ }
-+
-+ if (sizeof(struct jffs2_inode_info) > sizeof (((struct inode *)NULL)->u)) {
-+ printk(KERN_ERR "JFFS2 error: struct jffs2_inode_info (%d bytes) doesn't fit in the inode union (%d bytes)\n",
-+ sizeof(struct jffs2_inode_info), sizeof (((struct inode *)NULL)->u));
-+ return -EIO;
- }
-+#endif
-+
- ret = jffs2_create_slab_caches();
- if (ret) {
- printk(KERN_ERR "JFFS2 error: Failed to initialise slab caches\n");
-- goto out_zlib;
-+ return ret;
- }
- ret = register_filesystem(&jffs2_fs_type);
- if (ret) {
- printk(KERN_ERR "JFFS2 error: Failed to register filesystem\n");
-- goto out_slab;
-+ jffs2_destroy_slab_caches();
- }
-- return 0;
--
-- out_slab:
-- jffs2_destroy_slab_caches();
-- out_zlib:
-- jffs2_zlib_exit();
-- out:
- return ret;
- }
-
- static void __exit exit_jffs2_fs(void)
- {
-- unregister_filesystem(&jffs2_fs_type);
- jffs2_destroy_slab_caches();
-- jffs2_zlib_exit();
-- kmem_cache_destroy(jffs2_inode_cachep);
-+ unregister_filesystem(&jffs2_fs_type);
- }
-
- module_init(init_jffs2_fs);
-diff -Nur linux/fs/jffs2/symlink.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/symlink.c
---- linux/fs/jffs2/symlink.c 2003-05-13 16:19:13.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/symlink.c 2003-06-23 01:47:04.000000000 +0700
-@@ -5,9 +5,33 @@
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: symlink.c,v 1.11 2002/07/23 17:00:45 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: symlink.c,v 1.5.2.1 2002/01/15 10:39:06 dwmw2 Exp $
- *
- */
-
-@@ -15,6 +39,7 @@
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/fs.h>
-+#include <linux/jffs2.h>
- #include "nodelist.h"
-
- int jffs2_readlink(struct dentry *dentry, char *buffer, int buflen);
-@@ -22,17 +47,45 @@
-
- struct inode_operations jffs2_symlink_inode_operations =
- {
-- .readlink = jffs2_readlink,
-- .follow_link = jffs2_follow_link,
-- .setattr = jffs2_setattr
-+ readlink: jffs2_readlink,
-+ follow_link: jffs2_follow_link,
-+ setattr: jffs2_setattr
- };
-
-+static char *jffs2_getlink(struct dentry *dentry)
-+{
-+ struct jffs2_inode_info *f = JFFS2_INODE_INFO(dentry->d_inode);
-+ char *buf;
-+ int ret;
-+
-+ down(&f->sem);
-+ if (!f->metadata) {
-+ up(&f->sem);
-+ printk(KERN_NOTICE "No metadata for symlink inode #%lu\n", dentry->d_inode->i_ino);
-+ return ERR_PTR(-EINVAL);
-+ }
-+ buf = kmalloc(f->metadata->size+1, GFP_USER);
-+ if (!buf) {
-+ up(&f->sem);
-+ return ERR_PTR(-ENOMEM);
-+ }
-+ buf[f->metadata->size]=0;
-+
-+ ret = jffs2_read_dnode(JFFS2_SB_INFO(dentry->d_inode->i_sb), f->metadata, buf, 0, f->metadata->size);
-+ up(&f->sem);
-+ if (ret) {
-+ kfree(buf);
-+ return ERR_PTR(ret);
-+ }
-+ return buf;
-+
-+}
- int jffs2_readlink(struct dentry *dentry, char *buffer, int buflen)
- {
- unsigned char *kbuf;
- int ret;
-
-- kbuf = jffs2_getlink(JFFS2_SB_INFO(dentry->d_inode->i_sb), JFFS2_INODE_INFO(dentry->d_inode));
-+ kbuf = jffs2_getlink(dentry);
- if (IS_ERR(kbuf))
- return PTR_ERR(kbuf);
-
-@@ -46,7 +99,7 @@
- unsigned char *buf;
- int ret;
-
-- buf = jffs2_getlink(JFFS2_SB_INFO(dentry->d_inode->i_sb), JFFS2_INODE_INFO(dentry->d_inode));
-+ buf = jffs2_getlink(dentry);
-
- if (IS_ERR(buf))
- return PTR_ERR(buf);
-diff -Nur linux/fs/jffs2/test/compr_rubin.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/compr_rubin.h
---- linux/fs/jffs2/test/compr_rubin.h 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/compr_rubin.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,13 +0,0 @@
--/* Rubin encoder/decoder header */
--/* work started at : aug 3, 1994 */
--/* last modification : aug 15, 1994 */
--
--#define RUBIN_REG_SIZE 16
--#define UPPER_BIT_RUBIN (((long) 1)<<RUBIN_REG_SIZE-1)
--#define LOWER_BITS_RUBIN ((((long) 1)<<RUBIN_REG_SIZE-1)-1)
--
--void init_rubin (void);
--void encode (long, long, int);
--void end_rubin (void);
--void init_decod (void);
--int decode (long, long);
-diff -Nur linux/fs/jffs2/test/histo.cc /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo.cc
---- linux/fs/jffs2/test/histo.cc 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo.cc 1970-01-01 07:00:00.000000000 +0700
-@@ -1,80 +0,0 @@
--#include <stdio.h>
--#include <stdlib.h>
--#include <assert.h>
--
--int histo[256];
--int histo2[256];
--int bits[8];
--int total;
--void main()
--{
-- FILE *file;
-- int i,i2;
--
-- int max=0;
--
--/* file = fopen("/lib/libc-2.2.so","r"); */
-- file = fopen("bigsymb2","r");
-- assert(file!=NULL);
-- while (!feof(file)) {
-- unsigned char cr;
-- fread(&cr,1,1,file);
-- histo[cr]++;
-- if (histo[cr]>max)
-- max = histo[cr];
-- }
-- fclose(file);
--
-- i2 = 0;
--
--#if 0
-- printf("static int xlate[257] = { ");
--
--
--
-- /* Ugh slow */
-- while (max>=0) {
-- for (i=0;i<256;i++) {
-- if (histo[i]==max) {
-- printf("\t%i,\n",i);
-- histo2[i2++]=histo[i];
-- }
-- }
-- max--;
-- }
--
-- printf(" };\n");
--
-- if (i2!=256)
-- printf("/* Uh oh: %i != 256 */ \n");
--#endif
--
-- for (i=0;i<256;i++) {
-- if (i&128)
-- bits[7]+=histo[i];
-- if (i&64)
-- bits[6]+=histo[i];
-- if (i&32)
-- bits[5]+=histo[i];
-- if (i&16)
-- bits[4]+=histo[i];
-- if (i&8)
-- bits[3]+=histo[i];
-- if (i&4)
-- bits[2]+=histo[i];
-- if (i&2)
-- bits[1]+=histo[i];
-- if (i&1)
-- bits[0]+=histo[i];
-- total+=histo[i];
-- }
--
-- printf("#define BIT_DIVIDER %i \n",total>>12);
-- printf("static int bits[9] = { ");
-- for (i=0;i<8;i++)
-- if ((bits[i]>>12)>0)
-- printf("%i,",bits[i]>>12);
-- else
-- printf("1, ");
-- printf("};\n");
--}
-\ No newline at end of file
-diff -Nur linux/fs/jffs2/test/histo.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo.h
---- linux/fs/jffs2/test/histo.h 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,2 +0,0 @@
--#define BIT_DIVIDER 1043
--static int bits[9] = { 277,249,290,267,229,341,212,241,};
-diff -Nur linux/fs/jffs2/test/histo1.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo1.h
---- linux/fs/jffs2/test/histo1.h 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo1.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,2 +0,0 @@
--#define BIT_DIVIDER 755
--static int bits[9] = { 108,125,128,93,84,89,119,94,};
-diff -Nur linux/fs/jffs2/test/histo2.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo2.h
---- linux/fs/jffs2/test/histo2.h 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo2.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,2 +0,0 @@
--#define BIT_DIVIDER 504
--static int bits[9] = { 250,210,239,238,233,307,237,144,};
-diff -Nur linux/fs/jffs2/test/histo_html.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo_html.h
---- linux/fs/jffs2/test/histo_html.h 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo_html.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,2 +0,0 @@
--#define BIT_DIVIDER 631
--static int bits[9] = { 268,247,324,252,199,529,436,1, };
-diff -Nur linux/fs/jffs2/test/histo_text.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo_text.h
---- linux/fs/jffs2/test/histo_text.h 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/histo_text.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,2 +0,0 @@
--#define BIT_DIVIDER 1187
--static int bits[9] = { 518,418,533,414,310,1069,822,1, };
-diff -Nur linux/fs/jffs2/test/main.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/main.c
---- linux/fs/jffs2/test/main.c 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/main.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,56 +0,0 @@
--#include <stdio.h>
--
--#include "compr_rubin.h"
--
--#define __u32 int
--
--/* _compress returns the compressed size, -1 if bigger */
--int rtime_compress(unsigned char *data_in, unsigned char *cpage_out,
-- __u32 *sourcelen, __u32 *dstlen);
--
--void rtime_decompress(unsigned char *data_in, unsigned char *cpage_out,
-- __u32 srclen, __u32 destlen);
--
--void main()
--{
-- unsigned char source[4096];
-- unsigned char compr[40960];
-- unsigned char dest[4096];
--
-- int result;
-- int i;
-- int len,maxlen;
-- FILE *file;
--
-- memset(dest,0xA5,sizeof(dest));
--
-- for (i=0;i<4096;i++)
-- source[i] = i;
--
-- file=fopen("asd","r");
-- while (!feof(file)) {
-- fread(source,1,4096,file);
--
-- len = 4096;
-- maxlen = 40960;
-- result = rubin_compress(source,compr,&len, &maxlen);
-- if (result) {
-- printf("result is %d, exiting\n",result);
-- exit(0);
-- }
-- printf("Compressed to %i bytes \n",maxlen);
--
-- if (maxlen>4096)
-- continue;
--
-- rubin_decompress(compr,dest,4096,4096);
-- for (i=0;i<4096;i++)
-- if (source[i]!=dest[i]) {
-- printf("Mismatch at position %i: %i -> %i \n",i,source[i],dest[i]);
--
-- }
--
-- }
-- fclose(file);
--}
--
-diff -Nur linux/fs/jffs2/test/pushpull.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/pushpull.h
---- linux/fs/jffs2/test/pushpull.h 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/pushpull.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,11 +0,0 @@
--#define PPBUFSIZ 2048
--void pushinit(unsigned char *buffer, unsigned int max);
--void pushbit(int bit);
--void pushblk(int blk, int bitsinblk);
--void pushexit(void);
--int pushedbits(void);
--void pullinit(unsigned char *buffer);
--int pullbit(void);
--int pullblk(int bitsinblk);
--void pullexit(void);
--int pulledbits(void);
-diff -Nur linux/fs/jffs2/test/rtime.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/rtime.h
---- linux/fs/jffs2/test/rtime.h 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/test/rtime.h 1970-01-01 07:00:00.000000000 +0700
-@@ -1,8 +0,0 @@
--#define __u32 int
--
--/* _compress returns the compressed size, -1 if bigger */
--int rtime_compress(unsigned char *data_in, unsigned char *cpage_out,
-- __u32 *sourcelen, __u32 *dstlen);
--
--void rtime_decompress(unsigned char *data_in, unsigned char *cpage_out,
-- __u32 srclen, __u32 destlen);
-diff -Nur linux/fs/jffs2/wbuf.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/wbuf.c
---- linux/fs/jffs2/wbuf.c 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/wbuf.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,867 +0,0 @@
--/*
-- * JFFS2 -- Journalling Flash File System, Version 2.
-- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-- *
-- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
-- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-- *
-- * $Id: wbuf.c,v 1.17 2002/08/29 21:45:54 gleixner Exp $
-- *
-- * ChangeLog:
-- * 25-Oct-2002 Lineo Japan, Inc. deal with 1bit corruption of oob area
-- * 08-Oct-2002 Lineo Japan, Inc. move failure counter pos in oob
-- * 04-Oct-2002 Lineo Japan, Inc. correct jeb->bad_count value when
-- * failure count is 0xff
-- * 25-Sep-2002 Lineo Japan, Inc. take hamming distance for oob value
-- * into consideration
-- * 17-Sep-2002 Lineo Japan, Inc. add code for post-badblock
-- *
-- * ChangeLog:
-- * 24-Nov-2002 SHARP add erasing_dirty_size
-- * 25-Oct-2002 Lineo Japan, Inc. deal with 1bit corruption of oob area
-- * 08-Oct-2002 Lineo Japan, Inc. move failure counter pos in oob
-- * 04-Oct-2002 Lineo Japan, Inc. correct jeb->bad_count value when
-- * failure count is 0xff
-- * 25-Sep-2002 Lineo Japan, Inc. take hamming distance for oob value
-- * into consideration
-- * 17-Sep-2002 Lineo Japan, Inc. add code for post-badblock
-- *
-- */
--
--#include <linux/kernel.h>
--#include <linux/slab.h>
--#include <linux/mtd/mtd.h>
--#include <linux/interrupt.h>
--#include "crc32.h"
--#include <linux/mtd/nand.h>
--#include "nodelist.h"
--
--/* max. erase failures before we mark a block bad */
--#define MAX_ERASE_FAILURES 5
--
--/* two seconds timeout for timed wbuf-flushing */
--#define WBUF_FLUSH_TIMEOUT 2 * HZ
--
--#ifdef CONFIG_ARCH_SHARP_SL
--#define FAILURECOUNTER_POS NAND_POSTBADBLOCK_POS
--#else
--#define FAILURECOUNTER_POS NAND_BADBLOCK_POS
--#endif
--
--static inline void jffs2_refile_wbuf_blocks(struct jffs2_sb_info *c)
--{
-- struct list_head *this, *next;
-- static int n;
--
-- if (list_empty(&c->erasable_pending_wbuf_list))
-- return;
--
-- list_for_each_safe(this, next, &c->erasable_pending_wbuf_list) {
-- struct jffs2_eraseblock *jeb = list_entry(this, struct jffs2_eraseblock, list);
--
-- D1(printk(KERN_DEBUG "Removing eraseblock at 0x%08x from erasable_pending_wbuf_list...\n", jeb->offset));
-- list_del(this);
-- if ((jiffies + (n++)) & 127) {
-- /* Most of the time, we just erase it immediately. Otherwise we
-- spend ages scanning it on mount, etc. */
-- D1(printk(KERN_DEBUG "...and adding to erase_pending_list\n"));
-- list_add_tail(&jeb->list, &c->erase_pending_list);
-- c->erasing_dirty_size += jeb->dirty_size;
-- c->nr_erasing_blocks++;
-- jffs2_erase_pending_trigger(c);
-- } else {
-- /* Sometimes, however, we leave it elsewhere so it doesn't get
-- immediately reused, and we spread the load a bit. */
-- D1(printk(KERN_DEBUG "...and adding to erasable_list\n"));
-- list_add_tail(&jeb->list, &c->erasable_list);
-- }
-- }
--}
--
--/*
-- * return true if hamming distance between a and b is <= 1.
-- *
-- * [NOTE]
-- * assume that higher 3 bytes are zero
-- */
--static inline int jffs2_hamming_distance(unsigned int a, unsigned int b)
--{
--#ifdef __ARM_ARCH_5TE__
-- unsigned int n;
-- a ^= b;
-- asm (
-- "clz %0, %1\n"
-- : "=r" (n)
-- : "r" (a)
-- );
-- return (a << (n + 1)) == 0;
--#else
-- unsigned int n;
-- a ^= b;
-- for (n = 0; n < 8; n++)
-- if (! (a & ~(1 << n)))
-- return 1;
-- return 0;
--#endif
--}
--
--static inline void jffs2_correct_cleanmarker(unsigned char* oob, unsigned char* correct_data, int len)
--{
-- int i;
-- for (i = 0; i < len; i++)
-- if (jffs2_hamming_distance(oob[i], correct_data[i]))
-- oob[i] = correct_data[i];
--}
--
--/*
-- * correct badblock marker value
-- */
--static inline void jffs2_correct_badblock_val(unsigned char* oob)
--{
--#ifdef CONFIG_MTD_NAND_POST_BADBLOCK
-- if (jffs2_hamming_distance(oob[NAND_POSTBADBLOCK_POS], 0xff))
-- oob[NAND_POSTBADBLOCK_POS] = 0xff;
--#endif
-- if (jffs2_hamming_distance(oob[NAND_BADBLOCK_POS], 0xff))
-- oob[NAND_BADBLOCK_POS] = 0xff;
--}
--
--static inline void jffs2_correct_failedblock_val(unsigned char* oob)
--{
-- if (jffs2_hamming_distance(oob[FAILURECOUNTER_POS], 0xff))
-- oob[FAILURECOUNTER_POS] = 0xff;
--}
--
--/*
-- * return true if it is badblock
-- */
--static inline int jffs2_is_badblock(const unsigned char* oob)
--{
--#ifdef CONFIG_MTD_NAND_POST_BADBLOCK
-- return ! (oob[NAND_POSTBADBLOCK_POS] == 0xff &&
-- oob[NAND_BADBLOCK_POS] == 0xff);
--#else
-- return oob[NAND_BADBLOCK_POS] != 0xff;
--#endif
--}
--
--static inline int jffs2_is_failedblock(const unsigned char* oob)
--{
-- return oob[FAILURECOUNTER_POS] != 0xff;
--}
--
--/*
--* Timed flushing of wbuf. If we have no consecutive write to wbuf, within
--* the specified time, we flush the contents with padding !
--*/
--void jffs2_wbuf_timeout (unsigned long data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
-- /*
-- * Wake up the flush process, we need process context to have the right
-- * to sleep on flash write
-- */
-- D1(printk(KERN_DEBUG "jffs2_wbuf_timeout(): timer expired\n"));
-- schedule_task(&c->wbuf_task);
--}
--
--/*
--* Process for timed wbuf flush
--*
--* FIXME What happens, if we have a write failure there ????
--*/
--void jffs2_wbuf_process (void *data)
--{
-- struct jffs2_sb_info *c = (struct jffs2_sb_info *) data;
--
-- D1(printk(KERN_DEBUG "jffs2_wbuf_process() entered\n"));
--
-- /* Check, if the timer is active again */
-- if (timer_pending (&c->wbuf_timer)) {
-- D1(printk (KERN_DEBUG "Nothing to do, timer is active again\n"));
-- return;
-- }
--
-- if (down_trylock(&c->alloc_sem)) {
-- /* If someone else has the alloc_sem, they're about to
-- write anyway. So no need to waste space by
-- padding */
-- D1(printk (KERN_DEBUG "jffs2_wbuf_process() alloc_sem already occupied\n"));
-- return;
-- }
--
-- D1(printk (KERN_DEBUG "jffs2_wbuf_process() alloc_sem got\n"));
--
-- if (!c->nextblock) {
-- D1(printk(KERN_DEBUG "jffs2_wbuf_process(): nextblock NULL, nothing to do\n"));
-- if (c->wbuf_len) {
-- printk(KERN_WARNING "jffs2_wbuf_process(): c->wbuf_len is 0x%03x but nextblock is NULL!\n", c->wbuf_len);
-- up(&c->alloc_sem);
-- BUG();
-- }
-- return;
-- }
--
--
-- /* if !c->nextblock then the tail will have got flushed from
-- jffs2_do_reserve_space() anyway. */
-- if(c->nextblock)
-- jffs2_flush_wbuf(c, 2); /* pad and adjust nextblock */
--
-- up(&c->alloc_sem);
--}
--
--
--/* Meaning of pad argument:
-- 0: Do not pad. Probably pointless - we only ever use this when we can't pad anyway.
-- 1: Pad, do not adjust nextblock free_size
-- 2: Pad, adjust nextblock free_size
--*/
--int jffs2_flush_wbuf(struct jffs2_sb_info *c, int pad)
--{
-- int ret;
-- size_t retlen;
--
-- if (!down_trylock(&c->alloc_sem)) {
-- up(&c->alloc_sem);
-- printk(KERN_CRIT "jffs2_flush_wbuf() called with alloc_sem not locked!\n");
-- BUG();
-- }
--
-- /* delete a eventually started timed wbuf flush */
-- del_timer_sync(&c->wbuf_timer);
--
-- if(!c->wbuf || !c->wbuf_len)
-- return 0;
--
-- /* claim remaining space on the page
-- this happens, if we have a change to a new block,
-- or if fsync forces us to flush the writebuffer.
-- if we have a switch to next page, we will not have
-- enough remaining space for this.
-- */
-- if (pad) {
-- c->wbuf_len = PAD(c->wbuf_len);
--
-- if ( c->wbuf_len + sizeof(struct jffs2_unknown_node) < c->wbuf_pagesize) {
-- struct jffs2_unknown_node *padnode = (void *)(c->wbuf + c->wbuf_len);
-- padnode->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- padnode->nodetype = cpu_to_je16(JFFS2_NODETYPE_PADDING);
-- padnode->totlen = cpu_to_je32(c->wbuf_pagesize - c->wbuf_len);
-- padnode->hdr_crc = cpu_to_je32(crc32(0, padnode, sizeof(*padnode)-4));
-- }
-- }
-- /* else jffs2_flash_writev has actually filled in the rest of the
-- buffer for us, and will deal with the node refs etc. later. */
--
-- ret = c->mtd->write_ecc(c->mtd, c->wbuf_ofs, c->wbuf_pagesize, &retlen, c->wbuf, NULL, NAND_JFFS2_OOB);
--
-- if (ret || retlen != c->wbuf_pagesize) {
-- if (ret)
-- printk(KERN_CRIT "jffs2_flush_wbuf(): Write failed with %d\n",ret);
-- else
-- printk(KERN_CRIT "jffs2_flush_wbuf(): Write was short %d instead of %d\n",retlen,c->wbuf_pagesize);
--
-- ret = -EIO;
-- /* CHECKME NAND
-- So that the caller knows what happened. If
-- we were called from jffs2_flash_writev(), it'll
-- know to return failure and _its_ caller will
-- try again. writev gives back to jffs2_write_xxx
-- in write.c. There are the real fixme's
-- */
--
-- /* FIXME NAND
-- If we were called from GC or fsync, there's no repair kit yet
-- */
--
-- return ret;
-- }
--
-- /* Adjusting free size of next block only, if it's called from fsync ! */
-- if (pad == 2) {
-- D1(printk(KERN_DEBUG "jffs2_flush_wbuf() adjusting free_size of c->nextblock\n"));
-- spin_lock_bh(&c->erase_completion_lock);
-- if (!c->nextblock)
-- BUG();
-- /* wbuf_pagesize - wbuf_len is the amount of space that's to be
-- padded. If there is less free space in the block than that,
-- something screwed up */
-- if (c->nextblock->free_size < (c->wbuf_pagesize - c->wbuf_len)) {
-- printk(KERN_CRIT "jffs2_flush_wbuf(): Accounting error. wbuf at 0x%08x has 0x%03x bytes, 0x%03x left.\n",
-- c->wbuf_ofs, c->wbuf_len, c->wbuf_pagesize-c->wbuf_len);
-- printk(KERN_CRIT "jffs2_flush_wbuf(): But free_size for block at 0x%08x is only 0x%08x\n",
-- c->nextblock->offset, c->nextblock->free_size);
-- BUG();
-- }
-- c->nextblock->free_size -= (c->wbuf_pagesize - c->wbuf_len);
-- c->free_size -= (c->wbuf_pagesize - c->wbuf_len);
-- c->nextblock->wasted_size += (c->wbuf_pagesize - c->wbuf_len);
-- c->wasted_size += (c->wbuf_pagesize - c->wbuf_len);
-- spin_unlock_bh(&c->erase_completion_lock);
-- }
--
-- /* Stick any now-obsoleted blocks on the erase_pending_list */
-- spin_lock_bh(&c->erase_completion_lock);
-- jffs2_refile_wbuf_blocks(c);
-- spin_unlock_bh(&c->erase_completion_lock);
--
-- memset(c->wbuf,0xff,c->wbuf_pagesize);
-- /* adjust write buffer offset, else we get a non contigous write bug */
-- c->wbuf_ofs+= c->wbuf_pagesize;
-- c->wbuf_len = 0;
-- return 0;
--}
--
--#define PAGE_DIV(x) ( (x) & (~(c->wbuf_pagesize - 1)) )
--#define PAGE_MOD(x) ( (x) & (c->wbuf_pagesize - 1) )
--int jffs2_flash_writev(struct jffs2_sb_info *c, const struct iovec *invecs, unsigned long count, loff_t to, size_t *retlen)
--{
-- struct iovec outvecs[3];
-- uint32_t totlen = 0;
-- uint32_t split_ofs = 0;
-- uint32_t old_totlen;
-- int ret, splitvec = -1;
-- int invec, outvec;
-- size_t wbuf_retlen;
-- unsigned char *wbuf_ptr;
-- size_t donelen = 0;
-- uint32_t outvec_to = to;
--
-- /* If not NAND flash, don't bother */
-- if (!c->wbuf)
-- return jffs2_flash_direct_writev(c, invecs, count, to, retlen);
--
-- /* If wbuf_ofs is not initialized, set it to target adress */
-- if (c->wbuf_ofs == 0xFFFFFFFF) {
-- c->wbuf_ofs = PAGE_DIV(to);
-- c->wbuf_len = PAGE_MOD(to);
-- memset(c->wbuf,0xff,c->wbuf_pagesize);
-- }
--
-- /* Sanity checks on target address.
-- It's permitted to write at PAD(c->wbuf_len+c->wbuf_ofs),
-- and it's permitted to write at the beginning of a new
-- erase block. Anything else, and you die.
-- New block starts at xxx000c (0-b = block header)
-- */
-- if ( (to & ~(c->sector_size-1)) != (c->wbuf_ofs & ~(c->sector_size-1)) ) {
-- /* It's a write to a new block */
-- if (c->wbuf_len) {
-- D1(printk(KERN_DEBUG "jffs2_flash_writev() to 0x%lx causes flush of wbuf at 0x%08x\n", (unsigned long)to, c->wbuf_ofs));
-- ret = jffs2_flush_wbuf(c, 1);
-- if (ret) {
-- /* the underlying layer has to check wbuf_len to do the cleanup */
-- D1(printk(KERN_WARNING "jffs2_flush_wbuf() called from jffs2_flash_writev() failed %d\n", ret));
-- *retlen = 0;
-- return ret;
-- }
-- }
-- /* set pointer to new block */
-- c->wbuf_ofs = PAGE_DIV(to);
-- c->wbuf_len = PAGE_MOD(to);
-- }
--
-- if (to != PAD(c->wbuf_ofs + c->wbuf_len)) {
-- /* We're not writing immediately after the writebuffer. Bad. */
-- printk(KERN_CRIT "jffs2_flash_writev(): Non-contiguous write to %08lx\n", (unsigned long)to);
-- if (c->wbuf_len)
-- printk(KERN_CRIT "wbuf was previously %08x-%08x\n",
-- c->wbuf_ofs, c->wbuf_ofs+c->wbuf_len);
-- BUG();
-- }
--
-- /* Note outvecs[3] above. We know count is never greater than 2 */
-- if (count > 2) {
-- printk(KERN_CRIT "jffs2_flash_writev(): count is %ld\n", count);
-- BUG();
-- }
--
-- invec = 0;
-- outvec = 0;
--
--
-- /* Fill writebuffer first, if already in use */
-- if (c->wbuf_len) {
-- uint32_t invec_ofs = 0;
--
-- /* adjust alignment offset */
-- if (c->wbuf_len != PAGE_MOD(to)) {
-- c->wbuf_len = PAGE_MOD(to);
-- /* take care of alignment to next page */
-- if (!c->wbuf_len)
-- c->wbuf_len = c->wbuf_pagesize;
-- }
--
-- while(c->wbuf_len < c->wbuf_pagesize) {
-- uint32_t thislen;
--
-- if (invec == count)
-- goto alldone;
--
-- thislen = c->wbuf_pagesize - c->wbuf_len;
--
-- if (thislen >= invecs[invec].iov_len)
-- thislen = invecs[invec].iov_len;
--
-- invec_ofs = thislen;
--
-- memcpy(c->wbuf + c->wbuf_len, invecs[invec].iov_base, thislen);
-- c->wbuf_len += thislen;
-- donelen += thislen;
-- /* Get next invec, if actual did not fill the buffer */
-- if (c->wbuf_len < c->wbuf_pagesize)
-- invec++;
-- }
--
-- /* write buffer is full, flush buffer */
-- ret = jffs2_flush_wbuf(c, 0);
-- if (ret) {
-- /* the underlying layer has to check wbuf_len to do the cleanup */
-- D1(printk(KERN_WARNING "jffs2_flush_wbuf() called from jffs2_flash_writev() failed %d\n", ret));
-- *retlen = 0;
-- return ret;
-- }
-- outvec_to += donelen;
-- c->wbuf_ofs = outvec_to;
--
-- /* All invecs done ? */
-- if (invec == count)
-- goto alldone;
--
-- /* Set up the first outvec, containing the remainder of the
-- invec we partially used */
-- if (invecs[invec].iov_len > invec_ofs) {
-- outvecs[0].iov_base = invecs[invec].iov_base+invec_ofs;
-- totlen = outvecs[0].iov_len = invecs[invec].iov_len-invec_ofs;
-- if (totlen > c->wbuf_pagesize) {
-- splitvec = outvec;
-- split_ofs = outvecs[0].iov_len - PAGE_MOD(totlen);
-- }
-- outvec++;
-- }
-- invec++;
-- }
--
-- /* OK, now we've flushed the wbuf and the start of the bits
-- we have been asked to write, now to write the rest.... */
--
-- /* totlen holds the amount of data still to be written */
-- old_totlen = totlen;
-- for ( ; invec < count; invec++,outvec++ ) {
-- outvecs[outvec].iov_base = invecs[invec].iov_base;
-- totlen += outvecs[outvec].iov_len = invecs[invec].iov_len;
-- if (PAGE_DIV(totlen) != PAGE_DIV(old_totlen)) {
-- splitvec = outvec;
-- split_ofs = outvecs[outvec].iov_len - PAGE_MOD(totlen);
-- old_totlen = totlen;
-- }
-- }
--
-- /* Now the outvecs array holds all the remaining data to write */
-- /* Up to splitvec,split_ofs is to be written immediately. The rest
-- goes into the (now-empty) wbuf */
--
-- if (splitvec != -1) {
-- uint32_t remainder;
-- int ret;
--
-- remainder = outvecs[splitvec].iov_len - split_ofs;
-- outvecs[splitvec].iov_len = split_ofs;
--
-- /* We did cross a page boundary, so we write some now */
-- ret = c->mtd->writev_ecc(c->mtd, outvecs, splitvec+1, outvec_to, &wbuf_retlen, NULL, NAND_JFFS2_OOB);
-- if (ret < 0 || wbuf_retlen != PAGE_DIV(totlen)) {
-- /* At this point we have no problem,
-- c->wbuf is empty.
-- */
-- *retlen = donelen;
-- return ret;
-- }
--
-- donelen += wbuf_retlen;
-- c->wbuf_ofs = PAGE_DIV(outvec_to) + PAGE_DIV(totlen);
--
-- if (remainder) {
-- outvecs[splitvec].iov_base += split_ofs;
-- outvecs[splitvec].iov_len = remainder;
-- } else {
-- splitvec++;
-- }
--
-- } else {
-- splitvec = 0;
-- }
--
-- /* Now splitvec points to the start of the bits we have to copy
-- into the wbuf */
-- wbuf_ptr = c->wbuf;
--
-- for ( ; splitvec < outvec; splitvec++) {
-- /* Don't copy the wbuf into itself */
-- if (outvecs[splitvec].iov_base == c->wbuf)
-- continue;
-- memcpy(wbuf_ptr, outvecs[splitvec].iov_base, outvecs[splitvec].iov_len);
-- wbuf_ptr += outvecs[splitvec].iov_len;
-- donelen += outvecs[splitvec].iov_len;
-- }
-- c->wbuf_len = wbuf_ptr - c->wbuf;
--
--alldone:
-- *retlen = donelen;
-- /* Setup timed wbuf flush, if buffer len != 0 */
-- if (c->wbuf_len) {
-- D1(printk (KERN_DEBUG "jffs2_flash_writev: mod wbuf_timer\n"));
-- mod_timer(&c->wbuf_timer, jiffies + WBUF_FLUSH_TIMEOUT);
-- }
-- return 0;
--}
--
--/*
-- This is the entry for NOR-Flash. We use it also for NAND to flush wbuf
--*/
--int jffs2_flash_write(struct jffs2_sb_info *c, loff_t ofs, size_t len, size_t *retlen, const u_char *buf)
--{
-- return c->mtd->write(c->mtd, ofs, len, retlen, buf);
--}
--
--/*
-- Handle readback from writebuffer and ECC failure return
--*/
--int jffs2_flash_read(struct jffs2_sb_info *c, loff_t ofs, size_t len, size_t *retlen, u_char *buf)
--{
-- loff_t orbf = 0, owbf = 0, lwbf = 0;
-- int ret;
--
-- /* Read flash */
-- if (!jffs2_can_mark_obsolete(c)) {
-- ret = c->mtd->read_ecc(c->mtd, ofs, len, retlen, buf, NULL, NAND_JFFS2_OOB);
--
-- if ( (ret == -EIO) && (*retlen == len) ) {
-- printk(KERN_WARNING "mtd->read(0x%x bytes from 0x%llx) returned ECC error\n", len, ofs);
-- /*
-- * We have the raw data without ECC correction in the buffer, maybe
-- * we are lucky and all data or parts are correct. We check the node.
-- * If data are corrupted node check will sort it out.
-- * We keep this block, it will fail on write or erase and the we
-- * mark it bad. Or should we do that now? But we should give him a chance.
-- * Maybe we had a system crash or power loss before the ecc write or
-- * a erase was completed.
-- * So we return success. :)
-- */
-- ret = 0;
-- }
-- } else
-- return c->mtd->read(c->mtd, ofs, len, retlen, buf);
--
-- /* if no writebuffer available or write buffer empty, return */
-- if (!c->wbuf_pagesize || !c->wbuf_len)
-- return ret;
--
-- /* if we read in a different block, return */
-- if ( (ofs & ~(c->sector_size-1)) != (c->wbuf_ofs & ~(c->sector_size-1)) )
-- return ret;
--
-- if (ofs >= c->wbuf_ofs) {
-- owbf = (ofs - c->wbuf_ofs); /* offset in write buffer */
-- if (owbf > c->wbuf_len) /* is read beyond write buffer ? */
-- return ret;
-- lwbf = c->wbuf_len - owbf; /* number of bytes to copy */
-- if (lwbf > len)
-- lwbf = len;
-- } else {
-- orbf = (c->wbuf_ofs - ofs); /* offset in read buffer */
-- if (orbf > len) /* is write beyond write buffer ? */
-- return ret;
-- lwbf = len - orbf; /* number of bytes to copy */
-- if (lwbf > c->wbuf_len)
-- lwbf = c->wbuf_len;
-- }
-- if (lwbf > 0)
-- memcpy(buf+orbf,c->wbuf+owbf,lwbf);
--
-- return ret;
--}
--
--/*
-- * Check, if the out of band area is empty
-- */
--int jffs2_check_oob_empty( struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, int mode)
--{
-- unsigned char *buf;
-- int ret = 0;
-- int i,len;
-- size_t retlen;
-- int fsdata_pos,oob_size;
--
-- oob_size = c->mtd->oobsize;
--
-- switch(c->mtd->ecctype) {
-- case MTD_ECC_SW:
-- fsdata_pos = (c->wbuf_pagesize == 256) ? NAND_JFFS2_OOB8_FSDAPOS : NAND_JFFS2_OOB16_FSDAPOS;
-- break;
-- default:
-- D1(printk(KERN_WARNING "jffs2_write_oob_empty(): Invalid ECC type\n"));
-- return -EINVAL;
-- }
--
-- /* allocate a buffer for all oob data in this sector */
-- len = 4 * oob_size;
-- buf = kmalloc(len, GFP_KERNEL);
-- if (!buf) {
-- printk(KERN_NOTICE "jffs2_check_oob_empty(): allocation of temporary data buffer for oob check failed\n");
-- return -ENOMEM;
-- }
-- /*
-- * if mode = 0, we scan for a total empty oob area, else we have
-- * to take care of the cleanmarker in the first page of the block
-- */
-- ret = jffs2_flash_read_oob(c, jeb->offset, len , &retlen, buf);
-- if (ret) {
-- D1(printk(KERN_WARNING "jffs2_check_oob_empty(): Read OOB failed %d for block at %08x\n", ret, jeb->offset));
-- goto out;
-- }
--
-- if (retlen < len) {
-- D1(printk(KERN_WARNING "jffs2_check_oob_empty(): Read OOB return short read "
-- "(%d bytes not %d) for block at %08x\n", retlen, len, jeb->offset));
-- ret = -EIO;
-- goto out;
-- }
--
-- /* Special check for first two pages */
-- jffs2_correct_badblock_val(buf);
-- if (jffs2_is_badblock(buf)) {
-- D1(printk(KERN_WARNING "jffs2_check_oob_empty(): Bad block at %08x\n",jeb->offset));
-- /* Return 2 for bad and 3 for failed block
-- bad goes to list_bad and failed to list_erase */
-- ret = 2;
-- goto out;
-- }
-- for(i = 0; i < fsdata_pos ; i++) {
-- if (! jffs2_hamming_distance(buf[i], 0xff)) {
-- ret = 1;
-- goto out;
-- }
-- }
--
-- jffs2_correct_failedblock_val(&buf[oob_size]);
-- if (jffs2_is_failedblock(&buf[oob_size])) {
-- D1(printk(KERN_WARNING "jffs2_check_oob_empty(): Failed block at %08x\n",jeb->offset));
-- /* Return 2 for bad and 3 for failed block
-- bad goes to list_bad and failed to list_erase */
-- ret = 3;
-- goto out;
-- }
-- for(i = oob_size; i < len; i++) {
-- if (! jffs2_hamming_distance(buf[i], 0xff)) {
-- ret = 1;
-- goto out;
-- }
-- }
--
--out:
-- kfree(buf);
--
-- return ret;
--}
--
--int jffs2_check_nand_cleanmarker(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
--{
-- struct jffs2_unknown_node n;
-- unsigned char buf[32];
-- unsigned char *p;
-- int ret,i;
-- size_t retlen;
-- int fsdata_pos,fsdata_len, oob_size;
--
-- oob_size = c->mtd->oobsize;
--
-- switch(c->mtd->ecctype) {
-- case MTD_ECC_SW:
-- fsdata_pos = (c->wbuf_pagesize == 256) ? NAND_JFFS2_OOB8_FSDAPOS : NAND_JFFS2_OOB16_FSDAPOS;
-- fsdata_len = (c->wbuf_pagesize == 256) ? NAND_JFFS2_OOB8_FSDALEN : NAND_JFFS2_OOB16_FSDALEN;
-- break;
-- default:
-- D1(printk(KERN_WARNING "jffs2_write_nand_cleanmarker(): Invalid ECC type\n"));
-- return -EINVAL;
-- }
--
-- /*
-- * We read oob data from page 0 and 1 of the block.
-- * page 0 contains cleanmarker and badblock info
-- * page 2 contains failure count of this block
-- */
-- ret = c->mtd->read_oob(c->mtd, jeb->offset, oob_size << 1 , &retlen, buf);
--
-- if (ret) {
-- D1(printk(KERN_WARNING "jffs2_check_nand_cleanmarker(): Read OOB failed %d for block at %08x\n", ret, jeb->offset));
-- return ret;
-- }
-- if (retlen < (oob_size << 1) ) {
-- D1(printk(KERN_WARNING "jffs2_check_nand_cleanmarker(): Read OOB return short read (%d bytes not %d) for block at %08x\n", retlen, oob_size << 1 , jeb->offset));
-- return -EIO;
-- }
--
-- /* Check for bad block marker */
-- jffs2_correct_badblock_val(buf);
-- if (jffs2_is_badblock(buf)) {
-- D1(printk(KERN_WARNING "jffs2_check_nand_cleanmarker(): Bad block at %08x\n",jeb->offset));
-- return 2;
-- }
--
-- /* Check for failure counter in the second page */
-- jffs2_correct_failedblock_val(&buf[oob_size]);
-- if (jffs2_is_failedblock(&buf[oob_size])) {
-- D1(printk(KERN_WARNING "jffs2_check_nand_cleanmarker(): Block marked as failed at %08x, fail count:%d\n",jeb->offset,buf[FAILURECOUNTER_POS+oob_size]));
-- return 3;
-- }
--
-- n.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- n.nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER);
-- n.totlen = cpu_to_je32(8);
-- p = (unsigned char *) &n;
--
-- jffs2_correct_cleanmarker(&buf[fsdata_pos], p, fsdata_len);
-- for (i = 0; i < fsdata_len; i++) {
-- if (buf[fsdata_pos+i] != p[i]) {
-- D2(printk(KERN_WARNING "jffs2_check_nand_cleanmarker(): Cleanmarker node not detected in block at %08x\n", jeb->offset));
-- return 1;
-- }
-- }
--
-- return 0;
--}
--
--int jffs2_write_nand_cleanmarker(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
--{
-- struct jffs2_unknown_node n;
-- int ret;
-- int fsdata_pos,fsdata_len;
-- size_t retlen;
--
-- switch(c->mtd->ecctype) {
-- case MTD_ECC_SW:
-- fsdata_pos = (c->wbuf_pagesize == 256) ? NAND_JFFS2_OOB8_FSDAPOS : NAND_JFFS2_OOB16_FSDAPOS;
-- fsdata_len = (c->wbuf_pagesize == 256) ? NAND_JFFS2_OOB8_FSDALEN : NAND_JFFS2_OOB16_FSDALEN;
-- break;
-- default:
-- D1(printk(KERN_WARNING "jffs2_write_nand_cleanmarker(): Invalid ECC type\n"));
-- return -EINVAL;
-- }
--
-- n.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- n.nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER);
-- n.totlen = cpu_to_je32(8);
--
-- ret = jffs2_flash_write_oob(c, jeb->offset + fsdata_pos, fsdata_len, &retlen, (unsigned char *)&n);
--
-- if (ret) {
-- D1(printk(KERN_WARNING "jffs2_write_nand_cleanmarker(): Write failed for block at %08x: error %d\n", jeb->offset, ret));
-- return ret;
-- }
-- if (retlen != fsdata_len) {
-- D1(printk(KERN_WARNING "jffs2_write_nand_cleanmarker(): Short write for block at %08x: %d not %d\n", jeb->offset, retlen, fsdata_len));
-- return ret;
-- }
-- return 0;
--}
--
--/*
-- * We try to get the failure count of this block.
-- */
--int jffs2_nand_read_failcnt(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
--{
--
-- signed char buf[16];
-- int ret;
-- size_t retlen;
-- int oob_size, badblock_pos;
--
-- oob_size = c->mtd->oobsize;
--
-- switch(c->mtd->ecctype) {
-- case MTD_ECC_SW:
-- badblock_pos = FAILURECOUNTER_POS;
-- break;
-- default:
-- D1(printk(KERN_WARNING "jffs2_nand_read_failcnt(): Invalid ECC type\n"));
-- return -EINVAL;
-- }
--
-- ret = c->mtd->read_oob(c->mtd, jeb->offset + c->mtd->oobblock, oob_size , &retlen, buf);
--
-- if (ret) {
-- D1(printk(KERN_WARNING "jffs2_nand_read_failcnt(): Read OOB failed %d for block at %08x\n", ret, jeb->offset));
-- return ret;
-- }
--
-- if (retlen < oob_size) {
-- D1(printk(KERN_WARNING "jffs2_nand_read_failcnt(): Read OOB return short read (%d bytes not %d) for block at %08x\n", retlen, oob_size, jeb->offset));
-- return -EIO;
-- }
--
-- jeb->bad_count =
-- (buf[badblock_pos] >= -1 && buf[badblock_pos] < MAX_ERASE_FAILURES) ?
-- buf[badblock_pos] :
-- MAX_ERASE_FAILURES - 1;
-- return 0;
--}
--
--/*
-- * On NAND we try to mark this block bad. We try to write how often
-- * the block was erased and mark it finaly bad, if the count
-- * is > MAX_ERASE_FAILURES. We read this information on mount !
-- * jeb->bad_count contains the count before this erase.
-- * Don't care about failures. This block remains on the erase-pending
-- * or badblock list as long as nobody manipulates the flash with
-- * a bootloader or something like that.
-- */
--
--int jffs2_write_nand_badblock(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
--{
-- unsigned char buf = 0x0;
-- int ret,pos;
-- size_t retlen;
--
-- switch(c->mtd->ecctype) {
-- case MTD_ECC_SW:
-- break;
-- default:
-- D1(printk(KERN_WARNING "jffs2_write_nand_badblock(): Invalid ECC type\n"));
-- return -EINVAL;
-- }
--
-- /* if the count is < max, we try to write the counter to the 2nd page oob area */
-- if( ++jeb->bad_count < MAX_ERASE_FAILURES) {
-- buf = (unsigned char)jeb->bad_count;
-- pos = c->mtd->oobblock + FAILURECOUNTER_POS;
-- }
-- else {
--#ifdef CONFIG_MTD_NAND_POST_BADBLOCK
-- pos = NAND_POSTBADBLOCK_POS;
--#else
-- pos = NAND_BADBLOCK_POS;
--#endif
-- }
--
-- ret = jffs2_flash_write_oob(c, jeb->offset + pos, 1, &retlen, &buf);
--
-- if (ret) {
-- D1(printk(KERN_WARNING "jffs2_write_nand_badblock(): Write failed for block at %08x: error %d\n", jeb->offset, ret));
-- return ret;
-- }
-- if (retlen != 1) {
-- D1(printk(KERN_WARNING "jffs2_write_nand_badblock(): Short write for block at %08x: %d not 1\n", jeb->offset, retlen));
-- return ret;
-- }
-- return 0;
--}
--
--/*
-- * Local variables:
-- * c-basic-offset: 8
-- * End:
-- */
-diff -Nur linux/fs/jffs2/write.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/write.c
---- linux/fs/jffs2/write.c 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/write.c 2003-06-23 01:47:04.000000000 +0700
-@@ -1,66 +1,152 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: write.c,v 1.59 2002/09/06 16:46:30 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: write.c,v 1.30 2001/12/30 16:01:11 dwmw2 Exp $
- *
- */
-
- #include <linux/kernel.h>
- #include <linux/fs.h>
--#include "crc32.h"
--#include <linux/slab.h>
--#include <linux/pagemap.h>
-+#include <linux/jffs2.h>
- #include <linux/mtd/mtd.h>
- #include "nodelist.h"
-+#include "crc32.h"
-
--
--int jffs2_do_new_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, uint32_t mode, struct jffs2_raw_inode *ri)
-+/* jffs2_new_inode: allocate a new inode and inocache, add it to the hash,
-+ fill in the raw_inode while you're at it. */
-+struct inode *jffs2_new_inode (struct inode *dir_i, int mode, struct jffs2_raw_inode *ri)
- {
-+ struct inode *inode;
-+ struct super_block *sb = dir_i->i_sb;
- struct jffs2_inode_cache *ic;
-+ struct jffs2_sb_info *c;
-+ struct jffs2_inode_info *f;
-+
-+ D1(printk(KERN_DEBUG "jffs2_new_inode(): dir_i %ld, mode 0x%x\n", dir_i->i_ino, mode));
-+
-+ c = JFFS2_SB_INFO(sb);
-+ memset(ri, 0, sizeof(*ri));
-
- ic = jffs2_alloc_inode_cache();
- if (!ic) {
-- return -ENOMEM;
-+ return ERR_PTR(-ENOMEM);
- }
--
- memset(ic, 0, sizeof(*ic));
-+
-+ inode = new_inode(sb);
-+
-+ if (!inode) {
-+ jffs2_free_inode_cache(ic);
-+ return ERR_PTR(-ENOMEM);
-+ }
-
-+ /* Alloc jffs2_inode_info when that's split in 2.5 */
-+
-+ f = JFFS2_INODE_INFO(inode);
-+ memset(f, 0, sizeof(*f));
- init_MUTEX_LOCKED(&f->sem);
- f->inocache = ic;
-- f->inocache->nlink = 1;
-+ inode->i_nlink = f->inocache->nlink = 1;
- f->inocache->nodes = (struct jffs2_raw_node_ref *)f->inocache;
-- f->inocache->ino = ++c->highest_ino;
-- ri->ino = cpu_to_je32(f->inocache->ino);
--
-- D1(printk(KERN_DEBUG "jffs2_do_new_inode(): Assigned ino# %d\n", f->inocache->ino));
-+ f->inocache->ino = ri->ino = inode->i_ino = ++c->highest_ino;
-+ D1(printk(KERN_DEBUG "jffs2_new_inode(): Assigned ino# %d\n", ri->ino));
- jffs2_add_ino_cache(c, f->inocache);
-
-- ri->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- ri->nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
-- ri->totlen = cpu_to_je32(PAD(sizeof(*ri)));
-- ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
-- ri->mode = cpu_to_je32(mode);
-+ ri->magic = JFFS2_MAGIC_BITMASK;
-+ ri->nodetype = JFFS2_NODETYPE_INODE;
-+ ri->totlen = PAD(sizeof(*ri));
-+ ri->hdr_crc = crc32(0, ri, sizeof(struct jffs2_unknown_node)-4);
-+ ri->mode = mode;
-+ f->highest_version = ri->version = 1;
-+ ri->uid = current->fsuid;
-+ if (dir_i->i_mode & S_ISGID) {
-+ ri->gid = dir_i->i_gid;
-+ if (S_ISDIR(mode))
-+ ri->mode |= S_ISGID;
-+ } else {
-+ ri->gid = current->fsgid;
-+ }
-+ inode->i_mode = ri->mode;
-+ inode->i_gid = ri->gid;
-+ inode->i_uid = ri->uid;
-+ inode->i_atime = inode->i_ctime = inode->i_mtime =
-+ ri->atime = ri->mtime = ri->ctime = CURRENT_TIME;
-+ inode->i_blksize = PAGE_SIZE;
-+ inode->i_blocks = 0;
-+ inode->i_size = 0;
-
-- f->highest_version = 1;
-- ri->version = cpu_to_je32(f->highest_version);
-+ insert_inode_hash(inode);
-
-- return 0;
-+ return inode;
- }
-
--static void writecheck(struct jffs2_sb_info *c, uint32_t ofs)
-+/* This ought to be in core MTD code. All registered MTD devices without writev should have
-+ this put in place. Bug the MTD maintainer */
-+static int mtd_fake_writev(struct mtd_info *mtd, const struct iovec *vecs, unsigned long count, loff_t to, size_t *retlen)
-+{
-+ unsigned long i;
-+ size_t totlen = 0, thislen;
-+ int ret = 0;
-+
-+ for (i=0; i<count; i++) {
-+ mtd->write(mtd, to, vecs[i].iov_len, &thislen, vecs[i].iov_base);
-+ totlen += thislen;
-+ if (ret || thislen != vecs[i].iov_len)
-+ break;
-+ to += vecs[i].iov_len;
-+ }
-+ if (retlen)
-+ *retlen = totlen;
-+ return ret;
-+}
-+
-+
-+static inline int mtd_writev(struct mtd_info *mtd, const struct iovec *vecs, unsigned long count, loff_t to, size_t *retlen)
-+{
-+ if (mtd->writev)
-+ return mtd->writev(mtd,vecs,count,to,retlen);
-+ else
-+ return mtd_fake_writev(mtd, vecs, count, to, retlen);
-+}
-+
-+static void writecheck(struct mtd_info *mtd, __u32 ofs)
- {
- unsigned char buf[16];
-- size_t retlen;
-+ ssize_t retlen;
- int ret, i;
-
-- ret = jffs2_flash_read(c, ofs, 16, &retlen, buf);
-- if (ret || (retlen != 16)) {
-+ ret = mtd->read(mtd, ofs, 16, &retlen, buf);
-+ if (ret && retlen != 16) {
- D1(printk(KERN_DEBUG "read failed or short in writecheck(). ret %d, retlen %d\n", ret, retlen));
- return;
- }
-@@ -70,7 +156,7 @@
- ret = 1;
- }
- if (ret) {
-- printk(KERN_WARNING "ARGH. About to write node to 0x%08x on flash, but there are data already there:\n", ofs);
-+ printk(KERN_WARNING "ARGH. About to write node to 0x%08x on flash, but there's data already there:\n", ofs);
- printk(KERN_WARNING "0x%08x: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
- ofs,
- buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7],
-@@ -78,22 +164,24 @@
- }
- }
-
--
-+
-+
-
- /* jffs2_write_dnode - given a raw_inode, allocate a full_dnode for it,
- write it to the flash, link it into the existing inode/fragment list */
-
--struct jffs2_full_dnode *jffs2_write_dnode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, struct jffs2_raw_inode *ri, const unsigned char *data, uint32_t datalen, uint32_t flash_ofs, uint32_t *writelen)
-+struct jffs2_full_dnode *jffs2_write_dnode(struct inode *inode, struct jffs2_raw_inode *ri, const unsigned char *data, __u32 datalen, __u32 flash_ofs, __u32 *writelen)
-
- {
-+ struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-+ struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
- struct jffs2_raw_node_ref *raw;
- struct jffs2_full_dnode *fn;
-- size_t retlen;
-+ ssize_t retlen;
- struct iovec vecs[2];
- int ret;
-- unsigned long cnt = 2;
-
-- D1(if(je32_to_cpu(ri->hdr_crc) != crc32(0, ri, sizeof(struct jffs2_unknown_node)-4)) {
-+ D1(if(ri->hdr_crc != crc32(0, ri, sizeof(struct jffs2_unknown_node)-4)) {
- printk(KERN_CRIT "Eep. CRC not correct in jffs2_write_dnode()\n");
- BUG();
- }
-@@ -103,10 +191,10 @@
- vecs[1].iov_base = (unsigned char *)data;
- vecs[1].iov_len = datalen;
-
-- writecheck(c, flash_ofs);
-+ writecheck(c->mtd, flash_ofs);
-
-- if (je32_to_cpu(ri->totlen) != sizeof(*ri) + datalen) {
-- printk(KERN_WARNING "jffs2_write_dnode: ri->totlen (0x%08x) != sizeof(*ri) (0x%08x) + datalen (0x%08x)\n", je32_to_cpu(ri->totlen), sizeof(*ri), datalen);
-+ if (ri->totlen != sizeof(*ri) + datalen) {
-+ printk(KERN_WARNING "jffs2_write_dnode: ri->totlen (0x%08x) != sizeof(*ri) (0x%08x) + datalen (0x%08x)\n", ri->totlen, sizeof(*ri), datalen);
- }
- raw = jffs2_alloc_raw_node_ref();
- if (!raw)
-@@ -118,20 +206,15 @@
- return ERR_PTR(-ENOMEM);
- }
- raw->flash_offset = flash_ofs;
-- raw->totlen = PAD(sizeof(*ri)+datalen);
-+ raw->totlen = PAD(ri->totlen);
- raw->next_phys = NULL;
-
-- fn->ofs = je32_to_cpu(ri->offset);
-- fn->size = je32_to_cpu(ri->dsize);
-+ fn->ofs = ri->offset;
-+ fn->size = ri->dsize;
- fn->frags = 0;
- fn->raw = raw;
-
-- /* check number of valid vecs */
-- if (!datalen || !data)
-- cnt = 1;
--
-- ret = jffs2_flash_writev(c, vecs, cnt, flash_ofs, &retlen);
--
-+ ret = mtd_writev(c->mtd, vecs, 2, flash_ofs, &retlen);
- if (ret || (retlen != sizeof(*ri) + datalen)) {
- printk(KERN_NOTICE "Write of %d bytes at 0x%08x failed. returned %d, retlen %d\n",
- sizeof(*ri)+datalen, flash_ofs, ret, retlen);
-@@ -145,8 +228,7 @@
- seem corrupted, in which case the scan would skip over
- any node we write before the original intended end of
- this node */
-- raw->flash_offset |= REF_OBSOLETE;
-- jffs2_add_physical_node_ref(c, raw);
-+ jffs2_add_physical_node_ref(c, raw, sizeof(*ri)+datalen, 1);
- jffs2_mark_node_obsolete(c, raw);
- } else {
- printk(KERN_NOTICE "Not marking the space at 0x%08x as dirty because the flash driver returned retlen zero\n", raw->flash_offset);
-@@ -160,20 +242,13 @@
- return ERR_PTR(ret?ret:-EIO);
- }
- /* Mark the space used */
-- if (datalen == PAGE_CACHE_SIZE)
-- raw->flash_offset |= REF_PRISTINE;
-- else
-- raw->flash_offset |= REF_NORMAL;
-- jffs2_add_physical_node_ref(c, raw);
-+ jffs2_add_physical_node_ref(c, raw, retlen, 0);
-
- /* Link into per-inode list */
- raw->next_in_ino = f->inocache->nodes;
- f->inocache->nodes = raw;
-
-- D1(printk(KERN_DEBUG "jffs2_write_dnode wrote node at 0x%08x with dsize 0x%x, csize 0x%x, node_crc 0x%08x, data_crc 0x%08x, totlen 0x%08x\n",
-- flash_ofs, je32_to_cpu(ri->dsize), je32_to_cpu(ri->csize),
-- je32_to_cpu(ri->node_crc), je32_to_cpu(ri->data_crc),
-- je32_to_cpu(ri->totlen)));
-+ D1(printk(KERN_DEBUG "jffs2_write_dnode wrote node at 0x%08x with dsize 0x%x, csize 0x%x, node_crc 0x%08x, data_crc 0x%08x, totlen 0x%08x\n", flash_ofs, ri->dsize, ri->csize, ri->node_crc, ri->data_crc, ri->totlen));
- if (writelen)
- *writelen = retlen;
-
-@@ -181,20 +256,20 @@
- return fn;
- }
-
--struct jffs2_full_dirent *jffs2_write_dirent(struct jffs2_sb_info *c, struct jffs2_inode_info *f, struct jffs2_raw_dirent *rd, const unsigned char *name, uint32_t namelen, uint32_t flash_ofs, uint32_t *writelen)
-+struct jffs2_full_dirent *jffs2_write_dirent(struct inode *inode, struct jffs2_raw_dirent *rd, const unsigned char *name, __u32 namelen, __u32 flash_ofs, __u32 *writelen)
- {
-+ struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb);
-+ struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode);
- struct jffs2_raw_node_ref *raw;
- struct jffs2_full_dirent *fd;
-- size_t retlen;
-+ ssize_t retlen;
- struct iovec vecs[2];
- int ret;
-
-- D1(printk(KERN_DEBUG "jffs2_write_dirent(ino #%u, name at *0x%p \"%s\"->ino #%u, name_crc 0x%08x)\n",
-- je32_to_cpu(rd->pino), name, name, je32_to_cpu(rd->ino),
-- je32_to_cpu(rd->name_crc)));
-- writecheck(c, flash_ofs);
-+ D1(printk(KERN_DEBUG "jffs2_write_dirent(ino #%u, name at *0x%p \"%s\"->ino #%u, name_crc 0x%08x)\n", rd->pino, name, name, rd->ino, rd->name_crc));
-+ writecheck(c->mtd, flash_ofs);
-
-- D1(if(je32_to_cpu(rd->hdr_crc) != crc32(0, rd, sizeof(struct jffs2_unknown_node)-4)) {
-+ D1(if(rd->hdr_crc != crc32(0, rd, sizeof(struct jffs2_unknown_node)-4)) {
- printk(KERN_CRIT "Eep. CRC not correct in jffs2_write_dirent()\n");
- BUG();
- }
-@@ -216,32 +291,31 @@
- return ERR_PTR(-ENOMEM);
- }
- raw->flash_offset = flash_ofs;
-- raw->totlen = PAD(sizeof(*rd)+namelen);
-+ raw->totlen = PAD(rd->totlen);
- raw->next_in_ino = f->inocache->nodes;
- f->inocache->nodes = raw;
- raw->next_phys = NULL;
-
-- fd->version = je32_to_cpu(rd->version);
-- fd->ino = je32_to_cpu(rd->ino);
-+ fd->version = rd->version;
-+ fd->ino = rd->ino;
- fd->nhash = full_name_hash(name, strlen(name));
- fd->type = rd->type;
- memcpy(fd->name, name, namelen);
- fd->name[namelen]=0;
- fd->raw = raw;
-
-- ret = jffs2_flash_writev(c, vecs, 2, flash_ofs, &retlen);
-- if (ret || (retlen != sizeof(*rd) + namelen)) {
-- printk(KERN_NOTICE "Write of %d bytes at 0x%08x failed. returned %d, retlen %d\n",
-+ ret = mtd_writev(c->mtd, vecs, 2, flash_ofs, &retlen);
-+ if (ret || (retlen != sizeof(*rd) + namelen)) {
-+ printk(KERN_NOTICE "Write of %d bytes at 0x%08x failed. returned %d, retlen %d\n",
- sizeof(*rd)+namelen, flash_ofs, ret, retlen);
- /* Mark the space as dirtied */
-- if (retlen) {
-- raw->flash_offset |= REF_OBSOLETE;
-- jffs2_add_physical_node_ref(c, raw);
-- jffs2_mark_node_obsolete(c, raw);
-- } else {
-- printk(KERN_NOTICE "Not marking the space at 0x%08x as dirty because the flash driver returned retlen zero\n", raw->flash_offset);
-- jffs2_free_raw_node_ref(raw);
-- }
-+ if (retlen) {
-+ jffs2_add_physical_node_ref(c, raw, sizeof(*rd)+namelen, 1);
-+ jffs2_mark_node_obsolete(c, raw);
-+ } else {
-+ printk(KERN_NOTICE "Not marking the space at 0x%08x as dirty because the flash driver returned retlen zero\n", raw->flash_offset);
-+ jffs2_free_raw_node_ref(raw);
-+ }
-
- /* Release the full_dnode which is now useless, and return */
- jffs2_free_full_dirent(fd);
-@@ -250,359 +324,10 @@
- return ERR_PTR(ret?ret:-EIO);
- }
- /* Mark the space used */
-- raw->flash_offset |= REF_PRISTINE;
-- jffs2_add_physical_node_ref(c, raw);
-+ jffs2_add_physical_node_ref(c, raw, retlen, 0);
- if (writelen)
- *writelen = retlen;
-
- f->inocache->nodes = raw;
- return fd;
- }
--
--/* The OS-specific code fills in the metadata in the jffs2_raw_inode for us, so that
-- we don't have to go digging in struct inode or its equivalent. It should set:
-- mode, uid, gid, (starting)isize, atime, ctime, mtime */
--int jffs2_write_inode_range(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
-- struct jffs2_raw_inode *ri, unsigned char *buf,
-- uint32_t offset, uint32_t writelen, uint32_t *retlen)
--{
-- int ret = 0;
-- uint32_t writtenlen = 0;
--
-- D1(printk(KERN_DEBUG "jffs2_write_inode_range(): Ino #%u, ofs 0x%x, len 0x%x\n",
-- f->inocache->ino, offset, writelen));
--
-- while(writelen) {
-- struct jffs2_full_dnode *fn;
-- unsigned char *comprbuf = NULL;
-- unsigned char comprtype = JFFS2_COMPR_NONE;
-- uint32_t phys_ofs, alloclen;
-- uint32_t datalen, cdatalen;
--
-- D2(printk(KERN_DEBUG "jffs2_commit_write() loop: 0x%x to write to 0x%x\n", writelen, offset));
--
-- ret = jffs2_reserve_space(c, sizeof(*ri) + JFFS2_MIN_DATA_LEN, &phys_ofs, &alloclen, ALLOC_NORMAL);
-- if (ret) {
-- D1(printk(KERN_DEBUG "jffs2_reserve_space returned %d\n", ret));
-- break;
-- }
-- down(&f->sem);
-- datalen = writelen;
-- cdatalen = min(alloclen - sizeof(*ri), writelen);
--
-- comprbuf = kmalloc(cdatalen, GFP_KERNEL);
-- if (comprbuf) {
-- comprtype = jffs2_compress(buf, comprbuf, &datalen, &cdatalen);
-- }
-- if (comprtype == JFFS2_COMPR_NONE) {
-- /* Either compression failed, or the allocation of comprbuf failed */
-- if (comprbuf)
-- kfree(comprbuf);
-- comprbuf = buf;
-- datalen = cdatalen;
-- }
-- /* Now comprbuf points to the data to be written, be it compressed or not.
-- comprtype holds the compression type, and comprtype == JFFS2_COMPR_NONE means
-- that the comprbuf doesn't need to be kfree()d.
-- */
--
-- ri->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- ri->nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
-- ri->totlen = cpu_to_je32(sizeof(*ri) + cdatalen);
-- ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
--
-- ri->ino = cpu_to_je32(f->inocache->ino);
-- ri->version = cpu_to_je32(++f->highest_version);
-- ri->isize = cpu_to_je32(max(je32_to_cpu(ri->isize), offset + datalen));
-- ri->offset = cpu_to_je32(offset);
-- ri->csize = cpu_to_je32(cdatalen);
-- ri->dsize = cpu_to_je32(datalen);
-- ri->compr = comprtype;
-- ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
-- ri->data_crc = cpu_to_je32(crc32(0, comprbuf, cdatalen));
--
-- fn = jffs2_write_dnode(c, f, ri, comprbuf, cdatalen, phys_ofs, NULL);
--
-- if (comprtype != JFFS2_COMPR_NONE)
-- kfree(comprbuf);
--
-- if (IS_ERR(fn)) {
-- ret = PTR_ERR(fn);
-- up(&f->sem);
-- jffs2_complete_reservation(c);
-- break;
-- }
-- ret = jffs2_add_full_dnode_to_inode(c, f, fn);
-- if (f->metadata) {
-- jffs2_mark_node_obsolete(c, f->metadata->raw);
-- jffs2_free_full_dnode(f->metadata);
-- f->metadata = NULL;
-- }
-- if (ret) {
-- /* Eep */
-- D1(printk(KERN_DEBUG "Eep. add_full_dnode_to_inode() failed in commit_write, returned %d\n", ret));
-- jffs2_mark_node_obsolete(c, fn->raw);
-- jffs2_free_full_dnode(fn);
--
-- up(&f->sem);
-- jffs2_complete_reservation(c);
-- break;
-- }
-- up(&f->sem);
-- jffs2_complete_reservation(c);
-- if (!datalen) {
-- printk(KERN_WARNING "Eep. We didn't actually write any data in jffs2_write_inode_range()\n");
-- ret = -EIO;
-- break;
-- }
-- D1(printk(KERN_DEBUG "increasing writtenlen by %d\n", datalen));
-- writtenlen += datalen;
-- offset += datalen;
-- writelen -= datalen;
-- buf += datalen;
-- }
-- *retlen = writtenlen;
-- return ret;
--}
--
--int jffs2_do_create(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, struct jffs2_inode_info *f, struct jffs2_raw_inode *ri, const char *name, int namelen)
--{
-- struct jffs2_raw_dirent *rd;
-- struct jffs2_full_dnode *fn;
-- struct jffs2_full_dirent *fd;
-- uint32_t alloclen, phys_ofs;
-- uint32_t writtenlen;
-- int ret;
--
-- /* Try to reserve enough space for both node and dirent.
-- * Just the node will do for now, though
-- */
-- ret = jffs2_reserve_space(c, sizeof(*ri), &phys_ofs, &alloclen, ALLOC_NORMAL);
-- D1(printk(KERN_DEBUG "jffs2_do_create(): reserved 0x%x bytes\n", alloclen));
-- if (ret) {
-- up(&f->sem);
-- return ret;
-- }
--
-- ri->data_crc = cpu_to_je32(0);
-- ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
--
-- fn = jffs2_write_dnode(c, f, ri, NULL, 0, phys_ofs, &writtenlen);
--
-- D1(printk(KERN_DEBUG "jffs2_do_create created file with mode 0x%x\n",
-- je32_to_cpu(ri->mode)));
--
-- if (IS_ERR(fn)) {
-- D1(printk(KERN_DEBUG "jffs2_write_dnode() failed\n"));
-- /* Eeek. Wave bye bye */
-- up(&f->sem);
-- jffs2_complete_reservation(c);
-- return PTR_ERR(fn);
-- }
-- /* No data here. Only a metadata node, which will be
-- obsoleted by the first data write
-- */
-- f->metadata = fn;
--
-- /* Work out where to put the dirent node now. */
-- writtenlen = PAD(writtenlen);
-- phys_ofs += writtenlen;
-- alloclen -= writtenlen;
-- up(&f->sem);
--
-- if (alloclen < sizeof(*rd)+namelen) {
-- /* Not enough space left in this chunk. Get some more */
-- jffs2_complete_reservation(c);
-- ret = jffs2_reserve_space(c, sizeof(*rd)+namelen, &phys_ofs, &alloclen, ALLOC_NORMAL);
--
-- if (ret) {
-- /* Eep. */
-- D1(printk(KERN_DEBUG "jffs2_reserve_space() for dirent failed\n"));
-- return ret;
-- }
-- }
--
-- rd = jffs2_alloc_raw_dirent();
-- if (!rd) {
-- /* Argh. Now we treat it like a normal delete */
-- jffs2_complete_reservation(c);
-- return -ENOMEM;
-- }
--
-- down(&dir_f->sem);
--
-- rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
-- rd->totlen = cpu_to_je32(sizeof(*rd) + namelen);
-- rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
--
-- rd->pino = cpu_to_je32(dir_f->inocache->ino);
-- rd->version = cpu_to_je32(++dir_f->highest_version);
-- rd->ino = ri->ino;
-- rd->mctime = ri->ctime;
-- rd->nsize = namelen;
-- rd->type = DT_REG;
-- rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
-- rd->name_crc = cpu_to_je32(crc32(0, name, namelen));
--
-- fd = jffs2_write_dirent(c, dir_f, rd, name, namelen, phys_ofs, &writtenlen);
--
-- jffs2_free_raw_dirent(rd);
--
-- if (IS_ERR(fd)) {
-- /* dirent failed to write. Delete the inode normally
-- as if it were the final unlink() */
-- jffs2_complete_reservation(c);
-- up(&dir_f->sem);
-- return PTR_ERR(fd);
-- }
--
-- /* Link the fd into the inode's list, obsoleting an old
-- one if necessary. */
-- jffs2_add_fd_to_list(c, fd, &dir_f->dents);
--
-- jffs2_complete_reservation(c);
-- up(&dir_f->sem);
--
-- return 0;
--}
--
--
--int jffs2_do_unlink(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f,
-- const char *name, int namelen, struct jffs2_inode_info *dead_f)
--{
-- struct jffs2_raw_dirent *rd;
-- struct jffs2_full_dirent *fd;
-- uint32_t alloclen, phys_ofs;
-- int ret;
--
-- rd = jffs2_alloc_raw_dirent();
-- if (!rd)
-- return -ENOMEM;
--
-- ret = jffs2_reserve_space(c, sizeof(*rd)+namelen, &phys_ofs, &alloclen, ALLOC_DELETION);
-- if (ret) {
-- jffs2_free_raw_dirent(rd);
-- return ret;
-- }
--
-- down(&dir_f->sem);
--
-- /* Build a deletion node */
-- rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
-- rd->totlen = cpu_to_je32(sizeof(*rd) + namelen);
-- rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
--
-- rd->pino = cpu_to_je32(dir_f->inocache->ino);
-- rd->version = cpu_to_je32(++dir_f->highest_version);
-- rd->ino = cpu_to_je32(0);
-- rd->mctime = cpu_to_je32(CURRENT_TIME);
-- rd->nsize = namelen;
-- rd->type = DT_UNKNOWN;
-- rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
-- rd->name_crc = cpu_to_je32(crc32(0, name, namelen));
--
-- fd = jffs2_write_dirent(c, dir_f, rd, name, namelen, phys_ofs, NULL);
--
-- jffs2_free_raw_dirent(rd);
--
-- if (IS_ERR(fd)) {
-- jffs2_complete_reservation(c);
-- up(&dir_f->sem);
-- return PTR_ERR(fd);
-- }
--
-- /* File it. This will mark the old one obsolete. */
-- jffs2_add_fd_to_list(c, fd, &dir_f->dents);
--
-- up(&dir_f->sem);
--
-- /* dead_f is NULL if this was a rename not a real unlink */
-- /* Also catch the !f->inocache case, where there was a dirent
-- pointing to an inode which didn't exist. */
-- if (dead_f && dead_f->inocache) {
--
-- down(&dead_f->sem);
--
-- while (dead_f->dents) {
-- /* There can be only deleted ones */
-- fd = dead_f->dents;
--
-- dead_f->dents = fd->next;
--
-- if (fd->ino) {
-- printk(KERN_WARNING "Deleting inode #%u with active dentry \"%s\"->ino #%u\n",
-- dead_f->inocache->ino, fd->name, fd->ino);
-- } else {
-- D1(printk(KERN_DEBUG "Removing deletion dirent for \"%s\" from dir ino #%u\n", fd->name, dead_f->inocache->ino));
-- }
-- jffs2_mark_node_obsolete(c, fd->raw);
-- jffs2_free_full_dirent(fd);
-- }
--
-- dead_f->inocache->nlink--;
-- /* NB: Caller must set inode nlink if appropriate */
-- up(&dead_f->sem);
-- }
--
-- jffs2_complete_reservation(c);
--
-- return 0;
--}
--
--
--int jffs2_do_link (struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, uint32_t ino, uint8_t type, const char *name, int namelen)
--{
-- struct jffs2_raw_dirent *rd;
-- struct jffs2_full_dirent *fd;
-- uint32_t alloclen, phys_ofs;
-- int ret;
--
-- rd = jffs2_alloc_raw_dirent();
-- if (!rd)
-- return -ENOMEM;
--
-- ret = jffs2_reserve_space(c, sizeof(*rd)+namelen, &phys_ofs, &alloclen, ALLOC_NORMAL);
-- if (ret) {
-- jffs2_free_raw_dirent(rd);
-- return ret;
-- }
--
-- down(&dir_f->sem);
--
-- /* Build a deletion node */
-- rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-- rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
-- rd->totlen = cpu_to_je32(sizeof(*rd) + namelen);
-- rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
--
-- rd->pino = cpu_to_je32(dir_f->inocache->ino);
-- rd->version = cpu_to_je32(++dir_f->highest_version);
-- rd->ino = cpu_to_je32(ino);
-- rd->mctime = cpu_to_je32(CURRENT_TIME);
-- rd->nsize = namelen;
--
-- rd->type = type;
--
-- rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
-- rd->name_crc = cpu_to_je32(crc32(0, name, namelen));
--
-- fd = jffs2_write_dirent(c, dir_f, rd, name, namelen, phys_ofs, NULL);
--
-- jffs2_free_raw_dirent(rd);
--
-- if (IS_ERR(fd)) {
-- jffs2_complete_reservation(c);
-- up(&dir_f->sem);
-- return PTR_ERR(fd);
-- }
--
-- /* File it. This will mark the old one obsolete. */
-- jffs2_add_fd_to_list(c, fd, &dir_f->dents);
--
-- jffs2_complete_reservation(c);
-- up(&dir_f->sem);
--
-- return 0;
--}
-diff -Nur linux/fs/jffs2/writev.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/writev.c
---- linux/fs/jffs2/writev.c 2003-05-13 16:19:14.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/writev.c 1970-01-01 07:00:00.000000000 +0700
-@@ -1,50 +0,0 @@
--/*
-- * JFFS2 -- Journalling Flash File System, Version 2.
-- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-- *
-- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
-- *
-- * For licensing information, see the file 'LICENCE' in this directory.
-- *
-- * $Id: writev.c,v 1.3 2002/08/08 08:35:21 dwmw2 Exp $
-- *
-- */
--
--#include <linux/kernel.h>
--#include <linux/mtd/mtd.h>
--#include "nodelist.h"
--
--/* This ought to be in core MTD code. All registered MTD devices
-- without writev should have this put in place. Bug the MTD
-- maintainer */
--static inline int mtd_fake_writev(struct mtd_info *mtd, const struct iovec *vecs,
-- unsigned long count, loff_t to, size_t *retlen)
--{
-- unsigned long i;
-- size_t totlen = 0, thislen;
-- int ret = 0;
--
-- for (i=0; i<count; i++) {
-- if (!vecs[i].iov_len)
-- continue;
-- ret = mtd->write(mtd, to, vecs[i].iov_len, &thislen, vecs[i].iov_base);
-- totlen += thislen;
-- if (ret || thislen != vecs[i].iov_len)
-- break;
-- to += vecs[i].iov_len;
-- }
-- if (retlen)
-- *retlen = totlen;
-- return ret;
--}
--
--int jffs2_flash_direct_writev(struct jffs2_sb_info *c, const struct iovec *vecs,
-- unsigned long count, loff_t to, size_t *retlen)
--{
-- if (c->mtd->writev)
-- return c->mtd->writev(c->mtd, vecs, count, to, retlen);
-- else
-- return mtd_fake_writev(c->mtd, vecs, count, to, retlen);
--}
--
-diff -Nur linux/fs/jffs2/zlib.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/zlib.c
---- linux/fs/jffs2/zlib.c 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/zlib.c 2003-06-23 01:47:04.000000000 +0700
-@@ -0,0 +1,5382 @@
-+/*
-+ * This file is derived from various .h and .c files from the zlib-1.0.4
-+ * distribution by Jean-loup Gailly and Mark Adler, with some additions
-+ * by Paul Mackerras to aid in implementing Deflate compression and
-+ * decompression for PPP packets. See zlib.h for conditions of
-+ * distribution and use.
-+ *
-+ * Changes that have been made include:
-+ * - added Z_PACKET_FLUSH (see zlib.h for details)
-+ * - added inflateIncomp and deflateOutputPending
-+ * - allow strm->next_out to be NULL, meaning discard the output
-+ *
-+ * $Id: zlib.c,v 1.3 1997/12/23 10:47:42 paulus Exp $
-+ */
-+
-+#include <linux/config.h>
-+
-+#ifndef CONFIG_PPP_DEFLATE
-+
-+/*
-+ * ==FILEVERSION 20020318==
-+ *
-+ * This marker is used by the Linux installation script to determine
-+ * whether an up-to-date version of this file is already installed.
-+ */
-+
-+#define NO_DUMMY_DECL
-+#define NO_ZCFUNCS
-+#define MY_ZCALLOC
-+
-+#if defined(__FreeBSD__) && (defined(KERNEL) || defined(_KERNEL))
-+#define inflate inflate_ppp /* FreeBSD already has an inflate :-( */
-+#endif
-+
-+
-+/* +++ zutil.h */
-+/* zutil.h -- internal interface and configuration of the compression library
-+ * Copyright (C) 1995-1996 Jean-loup Gailly.
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* WARNING: this file should *not* be used by applications. It is
-+ part of the implementation of the compression library and is
-+ subject to change. Applications should only use zlib.h.
-+ */
-+
-+/* From: zutil.h,v 1.16 1996/07/24 13:41:13 me Exp $ */
-+
-+#ifndef _Z_UTIL_H
-+#define _Z_UTIL_H
-+
-+#include "zlib.h"
-+
-+#if defined(KERNEL) || defined(_KERNEL)
-+/* Assume this is a *BSD or SVR4 kernel */
-+#include <sys/types.h>
-+#include <sys/time.h>
-+#include <sys/systm.h>
-+# define HAVE_MEMCPY
-+# define memcpy(d, s, n) bcopy((s), (d), (n))
-+# define memset(d, v, n) bzero((d), (n))
-+# define memcmp bcmp
-+
-+#else
-+#if defined(__KERNEL__)
-+/* Assume this is a Linux kernel */
-+#include <linux/string.h>
-+#define HAVE_MEMCPY
-+
-+#else /* not kernel */
-+
-+#if defined(MSDOS)||defined(VMS)||defined(CRAY)||defined(WIN32)||defined(RISCOS)
-+# include <stddef.h>
-+# include <errno.h>
-+#else
-+ extern int errno;
-+#endif
-+#ifdef STDC
-+# include <string.h>
-+# include <stdlib.h>
-+#endif
-+#endif /* __KERNEL__ */
-+#endif /* _KERNEL || KERNEL */
-+
-+#ifndef local
-+# define local static
-+#endif
-+/* compile with -Dlocal if your debugger can't find static symbols */
-+
-+typedef unsigned char uch;
-+typedef uch FAR uchf;
-+typedef unsigned short ush;
-+typedef ush FAR ushf;
-+typedef unsigned long ulg;
-+
-+extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
-+/* (size given to avoid silly warnings with Visual C++) */
-+
-+#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
-+
-+#define ERR_RETURN(strm,err) \
-+ return (strm->msg = (char*)ERR_MSG(err), (err))
-+/* To be used only when the state is known to be valid */
-+
-+ /* common constants */
-+
-+#ifndef DEF_WBITS
-+# define DEF_WBITS MAX_WBITS
-+#endif
-+/* default windowBits for decompression. MAX_WBITS is for compression only */
-+
-+#if MAX_MEM_LEVEL >= 8
-+# define DEF_MEM_LEVEL 8
-+#else
-+# define DEF_MEM_LEVEL MAX_MEM_LEVEL
-+#endif
-+/* default memLevel */
-+
-+#define STORED_BLOCK 0
-+#define STATIC_TREES 1
-+#define DYN_TREES 2
-+/* The three kinds of block type */
-+
-+#define MIN_MATCH 3
-+#define MAX_MATCH 258
-+/* The minimum and maximum match lengths */
-+
-+#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
-+
-+ /* target dependencies */
-+
-+#ifdef MSDOS
-+# define OS_CODE 0x00
-+# ifdef __TURBOC__
-+# include <alloc.h>
-+# else /* MSC or DJGPP */
-+# include <malloc.h>
-+# endif
-+#endif
-+
-+#ifdef OS2
-+# define OS_CODE 0x06
-+#endif
-+
-+#ifdef WIN32 /* Window 95 & Windows NT */
-+# define OS_CODE 0x0b
-+#endif
-+
-+#if defined(VAXC) || defined(VMS)
-+# define OS_CODE 0x02
-+# define FOPEN(name, mode) \
-+ fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
-+#endif
-+
-+#ifdef AMIGA
-+# define OS_CODE 0x01
-+#endif
-+
-+#if defined(ATARI) || defined(atarist)
-+# define OS_CODE 0x05
-+#endif
-+
-+#ifdef MACOS
-+# define OS_CODE 0x07
-+#endif
-+
-+#ifdef __50SERIES /* Prime/PRIMOS */
-+# define OS_CODE 0x0F
-+#endif
-+
-+#ifdef TOPS20
-+# define OS_CODE 0x0a
-+#endif
-+
-+#if defined(_BEOS_) || defined(RISCOS)
-+# define fdopen(fd,mode) NULL /* No fdopen() */
-+#endif
-+
-+ /* Common defaults */
-+
-+#ifndef OS_CODE
-+# define OS_CODE 0x03 /* assume Unix */
-+#endif
-+
-+#ifndef FOPEN
-+# define FOPEN(name, mode) fopen((name), (mode))
-+#endif
-+
-+ /* functions */
-+
-+#ifdef HAVE_STRERROR
-+ extern char *strerror OF((int));
-+# define zstrerror(errnum) strerror(errnum)
-+#else
-+# define zstrerror(errnum) ""
-+#endif
-+
-+#if defined(pyr)
-+# define NO_MEMCPY
-+#endif
-+#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(_MSC_VER)
-+ /* Use our own functions for small and medium model with MSC <= 5.0.
-+ * You may have to use the same strategy for Borland C (untested).
-+ */
-+# define NO_MEMCPY
-+#endif
-+#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
-+# define HAVE_MEMCPY
-+#endif
-+#ifdef HAVE_MEMCPY
-+# ifdef SMALL_MEDIUM /* MSDOS small or medium model */
-+# define zmemcpy _fmemcpy
-+# define zmemcmp _fmemcmp
-+# define zmemzero(dest, len) _fmemset(dest, 0, len)
-+# else
-+# define zmemcpy memcpy
-+# define zmemcmp memcmp
-+# define zmemzero(dest, len) memset(dest, 0, len)
-+# endif
-+#else
-+ extern void zmemcpy OF((Bytef* dest, Bytef* source, uInt len));
-+ extern int zmemcmp OF((Bytef* s1, Bytef* s2, uInt len));
-+ extern void zmemzero OF((Bytef* dest, uInt len));
-+#endif
-+
-+/* Diagnostic functions */
-+#ifdef DEBUG_ZLIB
-+# include <stdio.h>
-+# ifndef verbose
-+# define verbose 0
-+# endif
-+ extern void z_error OF((char *m));
-+# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
-+# define Trace(x) fprintf x
-+# define Tracev(x) {if (verbose) fprintf x ;}
-+# define Tracevv(x) {if (verbose>1) fprintf x ;}
-+# define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
-+# define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
-+#else
-+# define Assert(cond,msg)
-+# define Trace(x)
-+# define Tracev(x)
-+# define Tracevv(x)
-+# define Tracec(c,x)
-+# define Tracecv(c,x)
-+#endif
-+
-+
-+typedef uLong (*check_func) OF((uLong check, const Bytef *buf, uInt len));
-+
-+voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
-+void zcfree OF((voidpf opaque, voidpf ptr));
-+
-+#define ZALLOC(strm, items, size) \
-+ (*((strm)->zalloc))((strm)->opaque, (items), (size))
-+#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
-+#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
-+
-+#endif /* _Z_UTIL_H */
-+/* --- zutil.h */
-+
-+/* +++ deflate.h */
-+/* deflate.h -- internal compression state
-+ * Copyright (C) 1995-1996 Jean-loup Gailly
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* WARNING: this file should *not* be used by applications. It is
-+ part of the implementation of the compression library and is
-+ subject to change. Applications should only use zlib.h.
-+ */
-+
-+/* From: deflate.h,v 1.10 1996/07/02 12:41:00 me Exp $ */
-+
-+#ifndef _DEFLATE_H
-+#define _DEFLATE_H
-+
-+/* #include "zutil.h" */
-+
-+/* ===========================================================================
-+ * Internal compression state.
-+ */
-+
-+#define LENGTH_CODES 29
-+/* number of length codes, not counting the special END_BLOCK code */
-+
-+#define LITERALS 256
-+/* number of literal bytes 0..255 */
-+
-+#define L_CODES (LITERALS+1+LENGTH_CODES)
-+/* number of Literal or Length codes, including the END_BLOCK code */
-+
-+#define D_CODES 30
-+/* number of distance codes */
-+
-+#define BL_CODES 19
-+/* number of codes used to transfer the bit lengths */
-+
-+#define HEAP_SIZE (2*L_CODES+1)
-+/* maximum heap size */
-+
-+#define MAX_BITS 15
-+/* All codes must not exceed MAX_BITS bits */
-+
-+#define INIT_STATE 42
-+#define BUSY_STATE 113
-+#define FINISH_STATE 666
-+/* Stream status */
-+
-+
-+/* Data structure describing a single value and its code string. */
-+typedef struct ct_data_s {
-+ union {
-+ ush freq; /* frequency count */
-+ ush code; /* bit string */
-+ } fc;
-+ union {
-+ ush dad; /* father node in Huffman tree */
-+ ush len; /* length of bit string */
-+ } dl;
-+} FAR ct_data;
-+
-+#define Freq fc.freq
-+#define Code fc.code
-+#define Dad dl.dad
-+#define Len dl.len
-+
-+typedef struct static_tree_desc_s static_tree_desc;
-+
-+typedef struct tree_desc_s {
-+ ct_data *dyn_tree; /* the dynamic tree */
-+ int max_code; /* largest code with non zero frequency */
-+ static_tree_desc *stat_desc; /* the corresponding static tree */
-+} FAR tree_desc;
-+
-+typedef ush Pos;
-+typedef Pos FAR Posf;
-+typedef unsigned IPos;
-+
-+/* A Pos is an index in the character window. We use short instead of int to
-+ * save space in the various tables. IPos is used only for parameter passing.
-+ */
-+
-+typedef struct deflate_state {
-+ z_streamp strm; /* pointer back to this zlib stream */
-+ int status; /* as the name implies */
-+ Bytef *pending_buf; /* output still pending */
-+ ulg pending_buf_size; /* size of pending_buf */
-+ Bytef *pending_out; /* next pending byte to output to the stream */
-+ int pending; /* nb of bytes in the pending buffer */
-+ int noheader; /* suppress zlib header and adler32 */
-+ Byte data_type; /* UNKNOWN, BINARY or ASCII */
-+ Byte method; /* STORED (for zip only) or DEFLATED */
-+ int last_flush; /* value of flush param for previous deflate call */
-+
-+ /* used by deflate.c: */
-+
-+ uInt w_size; /* LZ77 window size (32K by default) */
-+ uInt w_bits; /* log2(w_size) (8..16) */
-+ uInt w_mask; /* w_size - 1 */
-+
-+ Bytef *window;
-+ /* Sliding window. Input bytes are read into the second half of the window,
-+ * and move to the first half later to keep a dictionary of at least wSize
-+ * bytes. With this organization, matches are limited to a distance of
-+ * wSize-MAX_MATCH bytes, but this ensures that IO is always
-+ * performed with a length multiple of the block size. Also, it limits
-+ * the window size to 64K, which is quite useful on MSDOS.
-+ * To do: use the user input buffer as sliding window.
-+ */
-+
-+ ulg window_size;
-+ /* Actual size of window: 2*wSize, except when the user input buffer
-+ * is directly used as sliding window.
-+ */
-+
-+ Posf *prev;
-+ /* Link to older string with same hash index. To limit the size of this
-+ * array to 64K, this link is maintained only for the last 32K strings.
-+ * An index in this array is thus a window index modulo 32K.
-+ */
-+
-+ Posf *head; /* Heads of the hash chains or NIL. */
-+
-+ uInt ins_h; /* hash index of string to be inserted */
-+ uInt hash_size; /* number of elements in hash table */
-+ uInt hash_bits; /* log2(hash_size) */
-+ uInt hash_mask; /* hash_size-1 */
-+
-+ uInt hash_shift;
-+ /* Number of bits by which ins_h must be shifted at each input
-+ * step. It must be such that after MIN_MATCH steps, the oldest
-+ * byte no longer takes part in the hash key, that is:
-+ * hash_shift * MIN_MATCH >= hash_bits
-+ */
-+
-+ long block_start;
-+ /* Window position at the beginning of the current output block. Gets
-+ * negative when the window is moved backwards.
-+ */
-+
-+ uInt match_length; /* length of best match */
-+ IPos prev_match; /* previous match */
-+ int match_available; /* set if previous match exists */
-+ uInt strstart; /* start of string to insert */
-+ uInt match_start; /* start of matching string */
-+ uInt lookahead; /* number of valid bytes ahead in window */
-+
-+ uInt prev_length;
-+ /* Length of the best match at previous step. Matches not greater than this
-+ * are discarded. This is used in the lazy match evaluation.
-+ */
-+
-+ uInt max_chain_length;
-+ /* To speed up deflation, hash chains are never searched beyond this
-+ * length. A higher limit improves compression ratio but degrades the
-+ * speed.
-+ */
-+
-+ uInt max_lazy_match;
-+ /* Attempt to find a better match only when the current match is strictly
-+ * smaller than this value. This mechanism is used only for compression
-+ * levels >= 4.
-+ */
-+# define max_insert_length max_lazy_match
-+ /* Insert new strings in the hash table only if the match length is not
-+ * greater than this length. This saves time but degrades compression.
-+ * max_insert_length is used only for compression levels <= 3.
-+ */
-+
-+ int level; /* compression level (1..9) */
-+ int strategy; /* favor or force Huffman coding*/
-+
-+ uInt good_match;
-+ /* Use a faster search when the previous match is longer than this */
-+
-+ int nice_match; /* Stop searching when current match exceeds this */
-+
-+ /* used by trees.c: */
-+ /* Didn't use ct_data typedef below to supress compiler warning */
-+ struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
-+ struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
-+ struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
-+
-+ struct tree_desc_s l_desc; /* desc. for literal tree */
-+ struct tree_desc_s d_desc; /* desc. for distance tree */
-+ struct tree_desc_s bl_desc; /* desc. for bit length tree */
-+
-+ ush bl_count[MAX_BITS+1];
-+ /* number of codes at each bit length for an optimal tree */
-+
-+ int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */
-+ int heap_len; /* number of elements in the heap */
-+ int heap_max; /* element of largest frequency */
-+ /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
-+ * The same heap array is used to build all trees.
-+ */
-+
-+ uch depth[2*L_CODES+1];
-+ /* Depth of each subtree used as tie breaker for trees of equal frequency
-+ */
-+
-+ uchf *l_buf; /* buffer for literals or lengths */
-+
-+ uInt lit_bufsize;
-+ /* Size of match buffer for literals/lengths. There are 4 reasons for
-+ * limiting lit_bufsize to 64K:
-+ * - frequencies can be kept in 16 bit counters
-+ * - if compression is not successful for the first block, all input
-+ * data is still in the window so we can still emit a stored block even
-+ * when input comes from standard input. (This can also be done for
-+ * all blocks if lit_bufsize is not greater than 32K.)
-+ * - if compression is not successful for a file smaller than 64K, we can
-+ * even emit a stored file instead of a stored block (saving 5 bytes).
-+ * This is applicable only for zip (not gzip or zlib).
-+ * - creating new Huffman trees less frequently may not provide fast
-+ * adaptation to changes in the input data statistics. (Take for
-+ * example a binary file with poorly compressible code followed by
-+ * a highly compressible string table.) Smaller buffer sizes give
-+ * fast adaptation but have of course the overhead of transmitting
-+ * trees more frequently.
-+ * - I can't count above 4
-+ */
-+
-+ uInt last_lit; /* running index in l_buf */
-+
-+ ushf *d_buf;
-+ /* Buffer for distances. To simplify the code, d_buf and l_buf have
-+ * the same number of elements. To use different lengths, an extra flag
-+ * array would be necessary.
-+ */
-+
-+ ulg opt_len; /* bit length of current block with optimal trees */
-+ ulg static_len; /* bit length of current block with static trees */
-+ ulg compressed_len; /* total bit length of compressed file */
-+ uInt matches; /* number of string matches in current block */
-+ int last_eob_len; /* bit length of EOB code for last block */
-+
-+#ifdef DEBUG_ZLIB
-+ ulg bits_sent; /* bit length of the compressed data */
-+#endif
-+
-+ ush bi_buf;
-+ /* Output buffer. bits are inserted starting at the bottom (least
-+ * significant bits).
-+ */
-+ int bi_valid;
-+ /* Number of valid bits in bi_buf. All bits above the last valid bit
-+ * are always zero.
-+ */
-+
-+} FAR deflate_state;
-+
-+/* Output a byte on the stream.
-+ * IN assertion: there is enough room in pending_buf.
-+ */
-+#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);}
-+
-+
-+#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
-+/* Minimum amount of lookahead, except at the end of the input file.
-+ * See deflate.c for comments about the MIN_MATCH+1.
-+ */
-+
-+#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD)
-+/* In order to simplify the code, particularly on 16 bit machines, match
-+ * distances are limited to MAX_DIST instead of WSIZE.
-+ */
-+
-+ /* in trees.c */
-+void _tr_init OF((deflate_state *s));
-+int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
-+ulg _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len,
-+ int eof));
-+void _tr_align OF((deflate_state *s));
-+void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
-+ int eof));
-+void _tr_stored_type_only OF((deflate_state *));
-+
-+#endif
-+/* --- deflate.h */
-+
-+/* +++ deflate.c */
-+/* deflate.c -- compress data using the deflation algorithm
-+ * Copyright (C) 1995-1996 Jean-loup Gailly.
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/*
-+ * ALGORITHM
-+ *
-+ * The "deflation" process depends on being able to identify portions
-+ * of the input text which are identical to earlier input (within a
-+ * sliding window trailing behind the input currently being processed).
-+ *
-+ * The most straightforward technique turns out to be the fastest for
-+ * most input files: try all possible matches and select the longest.
-+ * The key feature of this algorithm is that insertions into the string
-+ * dictionary are very simple and thus fast, and deletions are avoided
-+ * completely. Insertions are performed at each input character, whereas
-+ * string matches are performed only when the previous match ends. So it
-+ * is preferable to spend more time in matches to allow very fast string
-+ * insertions and avoid deletions. The matching algorithm for small
-+ * strings is inspired from that of Rabin & Karp. A brute force approach
-+ * is used to find longer strings when a small match has been found.
-+ * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze
-+ * (by Leonid Broukhis).
-+ * A previous version of this file used a more sophisticated algorithm
-+ * (by Fiala and Greene) which is guaranteed to run in linear amortized
-+ * time, but has a larger average cost, uses more memory and is patented.
-+ * However the F&G algorithm may be faster for some highly redundant
-+ * files if the parameter max_chain_length (described below) is too large.
-+ *
-+ * ACKNOWLEDGEMENTS
-+ *
-+ * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and
-+ * I found it in 'freeze' written by Leonid Broukhis.
-+ * Thanks to many people for bug reports and testing.
-+ *
-+ * REFERENCES
-+ *
-+ * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification".
-+ * Available in ftp://ds.internic.net/rfc/rfc1951.txt
-+ *
-+ * A description of the Rabin and Karp algorithm is given in the book
-+ * "Algorithms" by R. Sedgewick, Addison-Wesley, p252.
-+ *
-+ * Fiala,E.R., and Greene,D.H.
-+ * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595
-+ *
-+ */
-+
-+/* From: deflate.c,v 1.15 1996/07/24 13:40:58 me Exp $ */
-+
-+/* #include "deflate.h" */
-+
-+char deflate_copyright[] = " deflate 1.0.4 Copyright 1995-1996 Jean-loup Gailly ";
-+/*
-+ If you use the zlib library in a product, an acknowledgment is welcome
-+ in the documentation of your product. If for some reason you cannot
-+ include such an acknowledgment, I would appreciate that you keep this
-+ copyright string in the executable of your product.
-+ */
-+
-+/* ===========================================================================
-+ * Function prototypes.
-+ */
-+typedef enum {
-+ need_more, /* block not completed, need more input or more output */
-+ block_done, /* block flush performed */
-+ finish_started, /* finish started, need only more output at next deflate */
-+ finish_done /* finish done, accept no more input or output */
-+} block_state;
-+
-+typedef block_state (*compress_func) OF((deflate_state *s, int flush));
-+/* Compression function. Returns the block state after the call. */
-+
-+local void fill_window OF((deflate_state *s));
-+local block_state deflate_stored OF((deflate_state *s, int flush));
-+local block_state deflate_fast OF((deflate_state *s, int flush));
-+local block_state deflate_slow OF((deflate_state *s, int flush));
-+local void lm_init OF((deflate_state *s));
-+local void putShortMSB OF((deflate_state *s, uInt b));
-+local void flush_pending OF((z_streamp strm));
-+local int read_buf OF((z_streamp strm, charf *buf, unsigned size));
-+#ifdef ASMV
-+ void match_init OF((void)); /* asm code initialization */
-+ uInt longest_match OF((deflate_state *s, IPos cur_match));
-+#else
-+local uInt longest_match OF((deflate_state *s, IPos cur_match));
-+#endif
-+
-+#ifdef DEBUG_ZLIB
-+local void check_match OF((deflate_state *s, IPos start, IPos match,
-+ int length));
-+#endif
-+
-+/* ===========================================================================
-+ * Local data
-+ */
-+
-+#define NIL 0
-+/* Tail of hash chains */
-+
-+#ifndef TOO_FAR
-+# define TOO_FAR 4096
-+#endif
-+/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */
-+
-+#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
-+/* Minimum amount of lookahead, except at the end of the input file.
-+ * See deflate.c for comments about the MIN_MATCH+1.
-+ */
-+
-+/* Values for max_lazy_match, good_match and max_chain_length, depending on
-+ * the desired pack level (0..9). The values given below have been tuned to
-+ * exclude worst case performance for pathological files. Better values may be
-+ * found for specific files.
-+ */
-+typedef struct config_s {
-+ ush good_length; /* reduce lazy search above this match length */
-+ ush max_lazy; /* do not perform lazy search above this match length */
-+ ush nice_length; /* quit search above this match length */
-+ ush max_chain;
-+ compress_func func;
-+} config;
-+
-+local config configuration_table[10] = {
-+/* good lazy nice chain */
-+/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */
-+/* 1 */ {4, 4, 8, 4, deflate_fast}, /* maximum speed, no lazy matches */
-+/* 2 */ {4, 5, 16, 8, deflate_fast},
-+/* 3 */ {4, 6, 32, 32, deflate_fast},
-+
-+/* 4 */ {4, 4, 16, 16, deflate_slow}, /* lazy matches */
-+/* 5 */ {8, 16, 32, 32, deflate_slow},
-+/* 6 */ {8, 16, 128, 128, deflate_slow},
-+/* 7 */ {8, 32, 128, 256, deflate_slow},
-+/* 8 */ {32, 128, 258, 1024, deflate_slow},
-+/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* maximum compression */
-+
-+/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4
-+ * For deflate_fast() (levels <= 3) good is ignored and lazy has a different
-+ * meaning.
-+ */
-+
-+#define EQUAL 0
-+/* result of memcmp for equal strings */
-+
-+#ifndef NO_DUMMY_DECL
-+struct static_tree_desc_s {int dummy;}; /* for buggy compilers */
-+#endif
-+
-+/* ===========================================================================
-+ * Update a hash value with the given input byte
-+ * IN assertion: all calls to to UPDATE_HASH are made with consecutive
-+ * input characters, so that a running hash key can be computed from the
-+ * previous key instead of complete recalculation each time.
-+ */
-+#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
-+
-+
-+/* ===========================================================================
-+ * Insert string str in the dictionary and set match_head to the previous head
-+ * of the hash chain (the most recent string with same hash key). Return
-+ * the previous length of the hash chain.
-+ * IN assertion: all calls to to INSERT_STRING are made with consecutive
-+ * input characters and the first MIN_MATCH bytes of str are valid
-+ * (except for the last MIN_MATCH-1 bytes of the input file).
-+ */
-+#define INSERT_STRING(s, str, match_head) \
-+ (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
-+ s->prev[(str) & s->w_mask] = match_head = s->head[s->ins_h], \
-+ s->head[s->ins_h] = (Pos)(str))
-+
-+/* ===========================================================================
-+ * Initialize the hash table (avoiding 64K overflow for 16 bit systems).
-+ * prev[] will be initialized on the fly.
-+ */
-+#define CLEAR_HASH(s) \
-+ s->head[s->hash_size-1] = NIL; \
-+ zmemzero((charf *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
-+
-+/* ========================================================================= */
-+int deflateInit_(strm, level, version, stream_size)
-+ z_streamp strm;
-+ int level;
-+ const char *version;
-+ int stream_size;
-+{
-+ return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL,
-+ Z_DEFAULT_STRATEGY, version, stream_size);
-+ /* To do: ignore strm->next_in if we use it as window */
-+}
-+
-+/* ========================================================================= */
-+int deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
-+ version, stream_size)
-+ z_streamp strm;
-+ int level;
-+ int method;
-+ int windowBits;
-+ int memLevel;
-+ int strategy;
-+ const char *version;
-+ int stream_size;
-+{
-+ deflate_state *s;
-+ int noheader = 0;
-+ static char* my_version = ZLIB_VERSION;
-+
-+ ushf *overlay;
-+ /* We overlay pending_buf and d_buf+l_buf. This works since the average
-+ * output size for (length,distance) codes is <= 24 bits.
-+ */
-+
-+ if (version == Z_NULL || version[0] != my_version[0] ||
-+ stream_size != sizeof(z_stream)) {
-+ return Z_VERSION_ERROR;
-+ }
-+ if (strm == Z_NULL) return Z_STREAM_ERROR;
-+
-+ strm->msg = Z_NULL;
-+#ifndef NO_ZCFUNCS
-+ if (strm->zalloc == Z_NULL) {
-+ strm->zalloc = zcalloc;
-+ strm->opaque = (voidpf)0;
-+ }
-+ if (strm->zfree == Z_NULL) strm->zfree = zcfree;
-+#endif
-+
-+ if (level == Z_DEFAULT_COMPRESSION) level = 6;
-+
-+ if (windowBits < 0) { /* undocumented feature: suppress zlib header */
-+ noheader = 1;
-+ windowBits = -windowBits;
-+ }
-+ if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED ||
-+ windowBits < 9 || windowBits > 15 || level < 0 || level > 9 ||
-+ strategy < 0 || strategy > Z_HUFFMAN_ONLY) {
-+ return Z_STREAM_ERROR;
-+ }
-+ s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state));
-+ if (s == Z_NULL) return Z_MEM_ERROR;
-+ strm->state = (struct internal_state FAR *)s;
-+ s->strm = strm;
-+
-+ s->noheader = noheader;
-+ s->w_bits = windowBits;
-+ s->w_size = 1 << s->w_bits;
-+ s->w_mask = s->w_size - 1;
-+
-+ s->hash_bits = memLevel + 7;
-+ s->hash_size = 1 << s->hash_bits;
-+ s->hash_mask = s->hash_size - 1;
-+ s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
-+
-+ s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte));
-+ s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos));
-+ s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos));
-+
-+ s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
-+
-+ overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
-+ s->pending_buf = (uchf *) overlay;
-+ s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
-+
-+ if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
-+ s->pending_buf == Z_NULL) {
-+ strm->msg = (char*)ERR_MSG(Z_MEM_ERROR);
-+ deflateEnd (strm);
-+ return Z_MEM_ERROR;
-+ }
-+ s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
-+ s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
-+
-+ s->level = level;
-+ s->strategy = strategy;
-+ s->method = (Byte)method;
-+
-+ return deflateReset(strm);
-+}
-+
-+/* ========================================================================= */
-+int deflateSetDictionary (strm, dictionary, dictLength)
-+ z_streamp strm;
-+ const Bytef *dictionary;
-+ uInt dictLength;
-+{
-+ deflate_state *s;
-+ uInt length = dictLength;
-+ uInt n;
-+ IPos hash_head = 0;
-+
-+ if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL)
-+ return Z_STREAM_ERROR;
-+
-+ s = (deflate_state *) strm->state;
-+ if (s->status != INIT_STATE) return Z_STREAM_ERROR;
-+
-+ strm->adler = adler32(strm->adler, dictionary, dictLength);
-+
-+ if (length < MIN_MATCH) return Z_OK;
-+ if (length > MAX_DIST(s)) {
-+ length = MAX_DIST(s);
-+#ifndef USE_DICT_HEAD
-+ dictionary += dictLength - length; /* use the tail of the dictionary */
-+#endif
-+ }
-+ zmemcpy((charf *)s->window, dictionary, length);
-+ s->strstart = length;
-+ s->block_start = (long)length;
-+
-+ /* Insert all strings in the hash table (except for the last two bytes).
-+ * s->lookahead stays null, so s->ins_h will be recomputed at the next
-+ * call of fill_window.
-+ */
-+ s->ins_h = s->window[0];
-+ UPDATE_HASH(s, s->ins_h, s->window[1]);
-+ for (n = 0; n <= length - MIN_MATCH; n++) {
-+ INSERT_STRING(s, n, hash_head);
-+ }
-+ if (hash_head) hash_head = 0; /* to make compiler happy */
-+ return Z_OK;
-+}
-+
-+/* ========================================================================= */
-+int deflateReset (strm)
-+ z_streamp strm;
-+{
-+ deflate_state *s;
-+
-+ if (strm == Z_NULL || strm->state == Z_NULL ||
-+ strm->zalloc == Z_NULL || strm->zfree == Z_NULL) return Z_STREAM_ERROR;
-+
-+ strm->total_in = strm->total_out = 0;
-+ strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */
-+ strm->data_type = Z_UNKNOWN;
-+
-+ s = (deflate_state *)strm->state;
-+ s->pending = 0;
-+ s->pending_out = s->pending_buf;
-+
-+ if (s->noheader < 0) {
-+ s->noheader = 0; /* was set to -1 by deflate(..., Z_FINISH); */
-+ }
-+ s->status = s->noheader ? BUSY_STATE : INIT_STATE;
-+ strm->adler = 1;
-+ s->last_flush = Z_NO_FLUSH;
-+
-+ _tr_init(s);
-+ lm_init(s);
-+
-+ return Z_OK;
-+}
-+
-+/* ========================================================================= */
-+int deflateParams(strm, level, strategy)
-+ z_streamp strm;
-+ int level;
-+ int strategy;
-+{
-+ deflate_state *s;
-+ compress_func func;
-+ int err = Z_OK;
-+
-+ if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-+ s = (deflate_state *) strm->state;
-+
-+ if (level == Z_DEFAULT_COMPRESSION) {
-+ level = 6;
-+ }
-+ if (level < 0 || level > 9 || strategy < 0 || strategy > Z_HUFFMAN_ONLY) {
-+ return Z_STREAM_ERROR;
-+ }
-+ func = configuration_table[s->level].func;
-+
-+ if (func != configuration_table[level].func && strm->total_in != 0) {
-+ /* Flush the last buffer: */
-+ err = deflate(strm, Z_PARTIAL_FLUSH);
-+ }
-+ if (s->level != level) {
-+ s->level = level;
-+ s->max_lazy_match = configuration_table[level].max_lazy;
-+ s->good_match = configuration_table[level].good_length;
-+ s->nice_match = configuration_table[level].nice_length;
-+ s->max_chain_length = configuration_table[level].max_chain;
-+ }
-+ s->strategy = strategy;
-+ return err;
-+}
-+
-+/* =========================================================================
-+ * Put a short in the pending buffer. The 16-bit value is put in MSB order.
-+ * IN assertion: the stream state is correct and there is enough room in
-+ * pending_buf.
-+ */
-+local void putShortMSB (s, b)
-+ deflate_state *s;
-+ uInt b;
-+{
-+ put_byte(s, (Byte)(b >> 8));
-+ put_byte(s, (Byte)(b & 0xff));
-+}
-+
-+/* =========================================================================
-+ * Flush as much pending output as possible. All deflate() output goes
-+ * through this function so some applications may wish to modify it
-+ * to avoid allocating a large strm->next_out buffer and copying into it.
-+ * (See also read_buf()).
-+ */
-+local void flush_pending(strm)
-+ z_streamp strm;
-+{
-+ deflate_state *s = (deflate_state *) strm->state;
-+ unsigned len = s->pending;
-+
-+ if (len > strm->avail_out) len = strm->avail_out;
-+ if (len == 0) return;
-+
-+ if (strm->next_out != Z_NULL) {
-+ zmemcpy(strm->next_out, s->pending_out, len);
-+ strm->next_out += len;
-+ }
-+ s->pending_out += len;
-+ strm->total_out += len;
-+ strm->avail_out -= len;
-+ s->pending -= len;
-+ if (s->pending == 0) {
-+ s->pending_out = s->pending_buf;
-+ }
-+}
-+
-+/* ========================================================================= */
-+int deflate (strm, flush)
-+ z_streamp strm;
-+ int flush;
-+{
-+ int old_flush; /* value of flush param for previous deflate call */
-+ deflate_state *s;
-+
-+ if (strm == Z_NULL || strm->state == Z_NULL ||
-+ flush > Z_FINISH || flush < 0) {
-+ return Z_STREAM_ERROR;
-+ }
-+ s = (deflate_state *) strm->state;
-+
-+ if ((strm->next_in == Z_NULL && strm->avail_in != 0) ||
-+ (s->status == FINISH_STATE && flush != Z_FINISH)) {
-+ ERR_RETURN(strm, Z_STREAM_ERROR);
-+ }
-+ if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR);
-+
-+ s->strm = strm; /* just in case */
-+ old_flush = s->last_flush;
-+ s->last_flush = flush;
-+
-+ /* Write the zlib header */
-+ if (s->status == INIT_STATE) {
-+
-+ uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
-+ uInt level_flags = (s->level-1) >> 1;
-+
-+ if (level_flags > 3) level_flags = 3;
-+ header |= (level_flags << 6);
-+ if (s->strstart != 0) header |= PRESET_DICT;
-+ header += 31 - (header % 31);
-+
-+ s->status = BUSY_STATE;
-+ putShortMSB(s, header);
-+
-+ /* Save the adler32 of the preset dictionary: */
-+ if (s->strstart != 0) {
-+ putShortMSB(s, (uInt)(strm->adler >> 16));
-+ putShortMSB(s, (uInt)(strm->adler & 0xffff));
-+ }
-+ strm->adler = 1L;
-+ }
-+
-+ /* Flush as much pending output as possible */
-+ if (s->pending != 0) {
-+ flush_pending(strm);
-+ if (strm->avail_out == 0) {
-+ /* Since avail_out is 0, deflate will be called again with
-+ * more output space, but possibly with both pending and
-+ * avail_in equal to zero. There won't be anything to do,
-+ * but this is not an error situation so make sure we
-+ * return OK instead of BUF_ERROR at next call of deflate:
-+ */
-+ s->last_flush = -1;
-+ return Z_OK;
-+ }
-+
-+ /* Make sure there is something to do and avoid duplicate consecutive
-+ * flushes. For repeated and useless calls with Z_FINISH, we keep
-+ * returning Z_STREAM_END instead of Z_BUFF_ERROR.
-+ */
-+ } else if (strm->avail_in == 0 && flush <= old_flush &&
-+ flush != Z_FINISH) {
-+ ERR_RETURN(strm, Z_BUF_ERROR);
-+ }
-+
-+ /* User must not provide more input after the first FINISH: */
-+ if (s->status == FINISH_STATE && strm->avail_in != 0) {
-+ ERR_RETURN(strm, Z_BUF_ERROR);
-+ }
-+
-+ /* Start a new block or continue the current one.
-+ */
-+ if (strm->avail_in != 0 || s->lookahead != 0 ||
-+ (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
-+ block_state bstate;
-+
-+ bstate = (*(configuration_table[s->level].func))(s, flush);
-+
-+ if (bstate == finish_started || bstate == finish_done) {
-+ s->status = FINISH_STATE;
-+ }
-+ if (bstate == need_more || bstate == finish_started) {
-+ if (strm->avail_out == 0) {
-+ s->last_flush = -1; /* avoid BUF_ERROR next call, see above */
-+ }
-+ return Z_OK;
-+ /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
-+ * of deflate should use the same flush parameter to make sure
-+ * that the flush is complete. So we don't have to output an
-+ * empty block here, this will be done at next call. This also
-+ * ensures that for a very small output buffer, we emit at most
-+ * one empty block.
-+ */
-+ }
-+ if (bstate == block_done) {
-+ if (flush == Z_PARTIAL_FLUSH) {
-+ _tr_align(s);
-+ } else if (flush == Z_PACKET_FLUSH) {
-+ /* Output just the 3-bit `stored' block type value,
-+ but not a zero length. */
-+ _tr_stored_type_only(s);
-+ } else { /* FULL_FLUSH or SYNC_FLUSH */
-+ _tr_stored_block(s, (char*)0, 0L, 0);
-+ /* For a full flush, this empty block will be recognized
-+ * as a special marker by inflate_sync().
-+ */
-+ if (flush == Z_FULL_FLUSH) {
-+ CLEAR_HASH(s); /* forget history */
-+ }
-+ }
-+ flush_pending(strm);
-+ if (strm->avail_out == 0) {
-+ s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */
-+ return Z_OK;
-+ }
-+ }
-+ }
-+ Assert(strm->avail_out > 0, "bug2");
-+
-+ if (flush != Z_FINISH) return Z_OK;
-+ if (s->noheader) return Z_STREAM_END;
-+
-+ /* Write the zlib trailer (adler32) */
-+ putShortMSB(s, (uInt)(strm->adler >> 16));
-+ putShortMSB(s, (uInt)(strm->adler & 0xffff));
-+ flush_pending(strm);
-+ /* If avail_out is zero, the application will call deflate again
-+ * to flush the rest.
-+ */
-+ s->noheader = -1; /* write the trailer only once! */
-+ return s->pending != 0 ? Z_OK : Z_STREAM_END;
-+}
-+
-+/* ========================================================================= */
-+int deflateEnd (strm)
-+ z_streamp strm;
-+{
-+ int status;
-+ deflate_state *s;
-+
-+ if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-+ s = (deflate_state *) strm->state;
-+
-+ status = s->status;
-+ if (status != INIT_STATE && status != BUSY_STATE &&
-+ status != FINISH_STATE) {
-+ return Z_STREAM_ERROR;
-+ }
-+
-+ /* Deallocate in reverse order of allocations: */
-+ TRY_FREE(strm, s->pending_buf);
-+ TRY_FREE(strm, s->head);
-+ TRY_FREE(strm, s->prev);
-+ TRY_FREE(strm, s->window);
-+
-+ ZFREE(strm, s);
-+ strm->state = Z_NULL;
-+
-+ return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK;
-+}
-+
-+/* =========================================================================
-+ * Copy the source state to the destination state.
-+ */
-+int deflateCopy (dest, source)
-+ z_streamp dest;
-+ z_streamp source;
-+{
-+ deflate_state *ds;
-+ deflate_state *ss;
-+ ushf *overlay;
-+
-+ if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL)
-+ return Z_STREAM_ERROR;
-+ ss = (deflate_state *) source->state;
-+
-+ *dest = *source;
-+
-+ ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state));
-+ if (ds == Z_NULL) return Z_MEM_ERROR;
-+ dest->state = (struct internal_state FAR *) ds;
-+ *ds = *ss;
-+ ds->strm = dest;
-+
-+ ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
-+ ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos));
-+ ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos));
-+ overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
-+ ds->pending_buf = (uchf *) overlay;
-+
-+ if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
-+ ds->pending_buf == Z_NULL) {
-+ deflateEnd (dest);
-+ return Z_MEM_ERROR;
-+ }
-+ /* ??? following zmemcpy doesn't work for 16-bit MSDOS */
-+ zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte));
-+ zmemcpy(ds->prev, ss->prev, ds->w_size * sizeof(Pos));
-+ zmemcpy(ds->head, ss->head, ds->hash_size * sizeof(Pos));
-+ zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
-+
-+ ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
-+ ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
-+ ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
-+
-+ ds->l_desc.dyn_tree = ds->dyn_ltree;
-+ ds->d_desc.dyn_tree = ds->dyn_dtree;
-+ ds->bl_desc.dyn_tree = ds->bl_tree;
-+
-+ return Z_OK;
-+}
-+
-+/* ===========================================================================
-+ * Return the number of bytes of output which are immediately available
-+ * for output from the decompressor.
-+ */
-+int deflateOutputPending (strm)
-+ z_streamp strm;
-+{
-+ if (strm == Z_NULL || strm->state == Z_NULL) return 0;
-+
-+ return ((deflate_state *)(strm->state))->pending;
-+}
-+
-+/* ===========================================================================
-+ * Read a new buffer from the current input stream, update the adler32
-+ * and total number of bytes read. All deflate() input goes through
-+ * this function so some applications may wish to modify it to avoid
-+ * allocating a large strm->next_in buffer and copying from it.
-+ * (See also flush_pending()).
-+ */
-+local int read_buf(strm, buf, size)
-+ z_streamp strm;
-+ charf *buf;
-+ unsigned size;
-+{
-+ unsigned len = strm->avail_in;
-+
-+ if (len > size) len = size;
-+ if (len == 0) return 0;
-+
-+ strm->avail_in -= len;
-+
-+ if (!((deflate_state *)(strm->state))->noheader) {
-+ strm->adler = adler32(strm->adler, strm->next_in, len);
-+ }
-+ zmemcpy(buf, strm->next_in, len);
-+ strm->next_in += len;
-+ strm->total_in += len;
-+
-+ return (int)len;
-+}
-+
-+/* ===========================================================================
-+ * Initialize the "longest match" routines for a new zlib stream
-+ */
-+local void lm_init (s)
-+ deflate_state *s;
-+{
-+ s->window_size = (ulg)2L*s->w_size;
-+
-+ CLEAR_HASH(s);
-+
-+ /* Set the default configuration parameters:
-+ */
-+ s->max_lazy_match = configuration_table[s->level].max_lazy;
-+ s->good_match = configuration_table[s->level].good_length;
-+ s->nice_match = configuration_table[s->level].nice_length;
-+ s->max_chain_length = configuration_table[s->level].max_chain;
-+
-+ s->strstart = 0;
-+ s->block_start = 0L;
-+ s->lookahead = 0;
-+ s->match_length = s->prev_length = MIN_MATCH-1;
-+ s->match_available = 0;
-+ s->ins_h = 0;
-+#ifdef ASMV
-+ match_init(); /* initialize the asm code */
-+#endif
-+}
-+
-+/* ===========================================================================
-+ * Set match_start to the longest match starting at the given string and
-+ * return its length. Matches shorter or equal to prev_length are discarded,
-+ * in which case the result is equal to prev_length and match_start is
-+ * garbage.
-+ * IN assertions: cur_match is the head of the hash chain for the current
-+ * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
-+ * OUT assertion: the match length is not greater than s->lookahead.
-+ */
-+#ifndef ASMV
-+/* For 80x86 and 680x0, an optimized version will be provided in match.asm or
-+ * match.S. The code will be functionally equivalent.
-+ */
-+local uInt longest_match(s, cur_match)
-+ deflate_state *s;
-+ IPos cur_match; /* current match */
-+{
-+ unsigned chain_length = s->max_chain_length;/* max hash chain length */
-+ register Bytef *scan = s->window + s->strstart; /* current string */
-+ register Bytef *match; /* matched string */
-+ register int len; /* length of current match */
-+ int best_len = s->prev_length; /* best match length so far */
-+ int nice_match = s->nice_match; /* stop if match long enough */
-+ IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
-+ s->strstart - (IPos)MAX_DIST(s) : NIL;
-+ /* Stop when cur_match becomes <= limit. To simplify the code,
-+ * we prevent matches with the string of window index 0.
-+ */
-+ Posf *prev = s->prev;
-+ uInt wmask = s->w_mask;
-+
-+#ifdef UNALIGNED_OK
-+ /* Compare two bytes at a time. Note: this is not always beneficial.
-+ * Try with and without -DUNALIGNED_OK to check.
-+ */
-+ register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1;
-+ register ush scan_start = *(ushf*)scan;
-+ register ush scan_end = *(ushf*)(scan+best_len-1);
-+#else
-+ register Bytef *strend = s->window + s->strstart + MAX_MATCH;
-+ register Byte scan_end1 = scan[best_len-1];
-+ register Byte scan_end = scan[best_len];
-+#endif
-+
-+ /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
-+ * It is easy to get rid of this optimization if necessary.
-+ */
-+ Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
-+
-+ /* Do not waste too much time if we already have a good match: */
-+ if (s->prev_length >= s->good_match) {
-+ chain_length >>= 2;
-+ }
-+ /* Do not look for matches beyond the end of the input. This is necessary
-+ * to make deflate deterministic.
-+ */
-+ if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
-+
-+ Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
-+
-+ do {
-+ Assert(cur_match < s->strstart, "no future");
-+ match = s->window + cur_match;
-+
-+ /* Skip to next match if the match length cannot increase
-+ * or if the match length is less than 2:
-+ */
-+#if (defined(UNALIGNED_OK) && MAX_MATCH == 258)
-+ /* This code assumes sizeof(unsigned short) == 2. Do not use
-+ * UNALIGNED_OK if your compiler uses a different size.
-+ */
-+ if (*(ushf*)(match+best_len-1) != scan_end ||
-+ *(ushf*)match != scan_start) continue;
-+
-+ /* It is not necessary to compare scan[2] and match[2] since they are
-+ * always equal when the other bytes match, given that the hash keys
-+ * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at
-+ * strstart+3, +5, ... up to strstart+257. We check for insufficient
-+ * lookahead only every 4th comparison; the 128th check will be made
-+ * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is
-+ * necessary to put more guard bytes at the end of the window, or
-+ * to check more often for insufficient lookahead.
-+ */
-+ Assert(scan[2] == match[2], "scan[2]?");
-+ scan++, match++;
-+ do {
-+ } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-+ *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-+ *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-+ *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-+ scan < strend);
-+ /* The funny "do {}" generates better code on most compilers */
-+
-+ /* Here, scan <= window+strstart+257 */
-+ Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
-+ if (*scan == *match) scan++;
-+
-+ len = (MAX_MATCH - 1) - (int)(strend-scan);
-+ scan = strend - (MAX_MATCH-1);
-+
-+#else /* UNALIGNED_OK */
-+
-+ if (match[best_len] != scan_end ||
-+ match[best_len-1] != scan_end1 ||
-+ *match != *scan ||
-+ *++match != scan[1]) continue;
-+
-+ /* The check at best_len-1 can be removed because it will be made
-+ * again later. (This heuristic is not always a win.)
-+ * It is not necessary to compare scan[2] and match[2] since they
-+ * are always equal when the other bytes match, given that
-+ * the hash keys are equal and that HASH_BITS >= 8.
-+ */
-+ scan += 2, match++;
-+ Assert(*scan == *match, "match[2]?");
-+
-+ /* We check for insufficient lookahead only every 8th comparison;
-+ * the 256th check will be made at strstart+258.
-+ */
-+ do {
-+ } while (*++scan == *++match && *++scan == *++match &&
-+ *++scan == *++match && *++scan == *++match &&
-+ *++scan == *++match && *++scan == *++match &&
-+ *++scan == *++match && *++scan == *++match &&
-+ scan < strend);
-+
-+ Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
-+
-+ len = MAX_MATCH - (int)(strend - scan);
-+ scan = strend - MAX_MATCH;
-+
-+#endif /* UNALIGNED_OK */
-+
-+ if (len > best_len) {
-+ s->match_start = cur_match;
-+ best_len = len;
-+ if (len >= nice_match) break;
-+#ifdef UNALIGNED_OK
-+ scan_end = *(ushf*)(scan+best_len-1);
-+#else
-+ scan_end1 = scan[best_len-1];
-+ scan_end = scan[best_len];
-+#endif
-+ }
-+ } while ((cur_match = prev[cur_match & wmask]) > limit
-+ && --chain_length != 0);
-+
-+ if ((uInt)best_len <= s->lookahead) return best_len;
-+ return s->lookahead;
-+}
-+#endif /* ASMV */
-+
-+#ifdef DEBUG_ZLIB
-+/* ===========================================================================
-+ * Check that the match at match_start is indeed a match.
-+ */
-+local void check_match(s, start, match, length)
-+ deflate_state *s;
-+ IPos start, match;
-+ int length;
-+{
-+ /* check that the match is indeed a match */
-+ if (zmemcmp((charf *)s->window + match,
-+ (charf *)s->window + start, length) != EQUAL) {
-+ fprintf(stderr, " start %u, match %u, length %d\n",
-+ start, match, length);
-+ do {
-+ fprintf(stderr, "%c%c", s->window[match++], s->window[start++]);
-+ } while (--length != 0);
-+ z_error("invalid match");
-+ }
-+ if (z_verbose > 1) {
-+ fprintf(stderr,"\\[%d,%d]", start-match, length);
-+ do { putc(s->window[start++], stderr); } while (--length != 0);
-+ }
-+}
-+#else
-+# define check_match(s, start, match, length)
-+#endif
-+
-+/* ===========================================================================
-+ * Fill the window when the lookahead becomes insufficient.
-+ * Updates strstart and lookahead.
-+ *
-+ * IN assertion: lookahead < MIN_LOOKAHEAD
-+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
-+ * At least one byte has been read, or avail_in == 0; reads are
-+ * performed for at least two bytes (required for the zip translate_eol
-+ * option -- not supported here).
-+ */
-+local void fill_window(s)
-+ deflate_state *s;
-+{
-+ register unsigned n, m;
-+ register Posf *p;
-+ unsigned more; /* Amount of free space at the end of the window. */
-+ uInt wsize = s->w_size;
-+
-+ do {
-+ more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
-+
-+ /* Deal with !@#$% 64K limit: */
-+ if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
-+ more = wsize;
-+
-+ } else if (more == (unsigned)(-1)) {
-+ /* Very unlikely, but possible on 16 bit machine if strstart == 0
-+ * and lookahead == 1 (input done one byte at time)
-+ */
-+ more--;
-+
-+ /* If the window is almost full and there is insufficient lookahead,
-+ * move the upper half to the lower one to make room in the upper half.
-+ */
-+ } else if (s->strstart >= wsize+MAX_DIST(s)) {
-+
-+ zmemcpy((charf *)s->window, (charf *)s->window+wsize,
-+ (unsigned)wsize);
-+ s->match_start -= wsize;
-+ s->strstart -= wsize; /* we now have strstart >= MAX_DIST */
-+ s->block_start -= (long) wsize;
-+
-+ /* Slide the hash table (could be avoided with 32 bit values
-+ at the expense of memory usage). We slide even when level == 0
-+ to keep the hash table consistent if we switch back to level > 0
-+ later. (Using level 0 permanently is not an optimal usage of
-+ zlib, so we don't care about this pathological case.)
-+ */
-+ n = s->hash_size;
-+ p = &s->head[n];
-+ do {
-+ m = *--p;
-+ *p = (Pos)(m >= wsize ? m-wsize : NIL);
-+ } while (--n);
-+
-+ n = wsize;
-+ p = &s->prev[n];
-+ do {
-+ m = *--p;
-+ *p = (Pos)(m >= wsize ? m-wsize : NIL);
-+ /* If n is not on any hash chain, prev[n] is garbage but
-+ * its value will never be used.
-+ */
-+ } while (--n);
-+ more += wsize;
-+ }
-+ if (s->strm->avail_in == 0) return;
-+
-+ /* If there was no sliding:
-+ * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
-+ * more == window_size - lookahead - strstart
-+ * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
-+ * => more >= window_size - 2*WSIZE + 2
-+ * In the BIG_MEM or MMAP case (not yet supported),
-+ * window_size == input_size + MIN_LOOKAHEAD &&
-+ * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
-+ * Otherwise, window_size == 2*WSIZE so more >= 2.
-+ * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
-+ */
-+ Assert(more >= 2, "more < 2");
-+
-+ n = read_buf(s->strm, (charf *)s->window + s->strstart + s->lookahead,
-+ more);
-+ s->lookahead += n;
-+
-+ /* Initialize the hash value now that we have some input: */
-+ if (s->lookahead >= MIN_MATCH) {
-+ s->ins_h = s->window[s->strstart];
-+ UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
-+#if MIN_MATCH != 3
-+ Call UPDATE_HASH() MIN_MATCH-3 more times
-+#endif
-+ }
-+ /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
-+ * but this is not important since only literal bytes will be emitted.
-+ */
-+
-+ } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
-+}
-+
-+/* ===========================================================================
-+ * Flush the current block, with given end-of-file flag.
-+ * IN assertion: strstart is set to the end of the current match.
-+ */
-+#define FLUSH_BLOCK_ONLY(s, eof) { \
-+ _tr_flush_block(s, (s->block_start >= 0L ? \
-+ (charf *)&s->window[(unsigned)s->block_start] : \
-+ (charf *)Z_NULL), \
-+ (ulg)((long)s->strstart - s->block_start), \
-+ (eof)); \
-+ s->block_start = s->strstart; \
-+ flush_pending(s->strm); \
-+ Tracev((stderr,"[FLUSH]")); \
-+}
-+
-+/* Same but force premature exit if necessary. */
-+#define FLUSH_BLOCK(s, eof) { \
-+ FLUSH_BLOCK_ONLY(s, eof); \
-+ if (s->strm->avail_out == 0) return (eof) ? finish_started : need_more; \
-+}
-+
-+/* ===========================================================================
-+ * Copy without compression as much as possible from the input stream, return
-+ * the current block state.
-+ * This function does not insert new strings in the dictionary since
-+ * uncompressible data is probably not useful. This function is used
-+ * only for the level=0 compression option.
-+ * NOTE: this function should be optimized to avoid extra copying from
-+ * window to pending_buf.
-+ */
-+local block_state deflate_stored(s, flush)
-+ deflate_state *s;
-+ int flush;
-+{
-+ /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
-+ * to pending_buf_size, and each stored block has a 5 byte header:
-+ */
-+ ulg max_block_size = 0xffff;
-+ ulg max_start;
-+
-+ if (max_block_size > s->pending_buf_size - 5) {
-+ max_block_size = s->pending_buf_size - 5;
-+ }
-+
-+ /* Copy as much as possible from input to output: */
-+ for (;;) {
-+ /* Fill the window as much as possible: */
-+ if (s->lookahead <= 1) {
-+
-+ Assert(s->strstart < s->w_size+MAX_DIST(s) ||
-+ s->block_start >= (long)s->w_size, "slide too late");
-+
-+ fill_window(s);
-+ if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more;
-+
-+ if (s->lookahead == 0) break; /* flush the current block */
-+ }
-+ Assert(s->block_start >= 0L, "block gone");
-+
-+ s->strstart += s->lookahead;
-+ s->lookahead = 0;
-+
-+ /* Emit a stored block if pending_buf will be full: */
-+ max_start = s->block_start + max_block_size;
-+ if (s->strstart == 0 || (ulg)s->strstart >= max_start) {
-+ /* strstart == 0 is possible when wraparound on 16-bit machine */
-+ s->lookahead = (uInt)(s->strstart - max_start);
-+ s->strstart = (uInt)max_start;
-+ FLUSH_BLOCK(s, 0);
-+ }
-+ /* Flush if we may have to slide, otherwise block_start may become
-+ * negative and the data will be gone:
-+ */
-+ if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) {
-+ FLUSH_BLOCK(s, 0);
-+ }
-+ }
-+ FLUSH_BLOCK(s, flush == Z_FINISH);
-+ return flush == Z_FINISH ? finish_done : block_done;
-+}
-+
-+/* ===========================================================================
-+ * Compress as much as possible from the input stream, return the current
-+ * block state.
-+ * This function does not perform lazy evaluation of matches and inserts
-+ * new strings in the dictionary only for unmatched strings or for short
-+ * matches. It is used only for the fast compression options.
-+ */
-+local block_state deflate_fast(s, flush)
-+ deflate_state *s;
-+ int flush;
-+{
-+ IPos hash_head = NIL; /* head of the hash chain */
-+ int bflush; /* set if current block must be flushed */
-+
-+ for (;;) {
-+ /* Make sure that we always have enough lookahead, except
-+ * at the end of the input file. We need MAX_MATCH bytes
-+ * for the next match, plus MIN_MATCH bytes to insert the
-+ * string following the next match.
-+ */
-+ if (s->lookahead < MIN_LOOKAHEAD) {
-+ fill_window(s);
-+ if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
-+ return need_more;
-+ }
-+ if (s->lookahead == 0) break; /* flush the current block */
-+ }
-+
-+ /* Insert the string window[strstart .. strstart+2] in the
-+ * dictionary, and set hash_head to the head of the hash chain:
-+ */
-+ if (s->lookahead >= MIN_MATCH) {
-+ INSERT_STRING(s, s->strstart, hash_head);
-+ }
-+
-+ /* Find the longest match, discarding those <= prev_length.
-+ * At this point we have always match_length < MIN_MATCH
-+ */
-+ if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) {
-+ /* To simplify the code, we prevent matches with the string
-+ * of window index 0 (in particular we have to avoid a match
-+ * of the string with itself at the start of the input file).
-+ */
-+ if (s->strategy != Z_HUFFMAN_ONLY) {
-+ s->match_length = longest_match (s, hash_head);
-+ }
-+ /* longest_match() sets match_start */
-+ }
-+ if (s->match_length >= MIN_MATCH) {
-+ check_match(s, s->strstart, s->match_start, s->match_length);
-+
-+ bflush = _tr_tally(s, s->strstart - s->match_start,
-+ s->match_length - MIN_MATCH);
-+
-+ s->lookahead -= s->match_length;
-+
-+ /* Insert new strings in the hash table only if the match length
-+ * is not too large. This saves time but degrades compression.
-+ */
-+ if (s->match_length <= s->max_insert_length &&
-+ s->lookahead >= MIN_MATCH) {
-+ s->match_length--; /* string at strstart already in hash table */
-+ do {
-+ s->strstart++;
-+ INSERT_STRING(s, s->strstart, hash_head);
-+ /* strstart never exceeds WSIZE-MAX_MATCH, so there are
-+ * always MIN_MATCH bytes ahead.
-+ */
-+ } while (--s->match_length != 0);
-+ s->strstart++;
-+ } else {
-+ s->strstart += s->match_length;
-+ s->match_length = 0;
-+ s->ins_h = s->window[s->strstart];
-+ UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
-+#if MIN_MATCH != 3
-+ Call UPDATE_HASH() MIN_MATCH-3 more times
-+#endif
-+ /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
-+ * matter since it will be recomputed at next deflate call.
-+ */
-+ }
-+ } else {
-+ /* No match, output a literal byte */
-+ Tracevv((stderr,"%c", s->window[s->strstart]));
-+ bflush = _tr_tally (s, 0, s->window[s->strstart]);
-+ s->lookahead--;
-+ s->strstart++;
-+ }
-+ if (bflush) FLUSH_BLOCK(s, 0);
-+ }
-+ FLUSH_BLOCK(s, flush == Z_FINISH);
-+ return flush == Z_FINISH ? finish_done : block_done;
-+}
-+
-+/* ===========================================================================
-+ * Same as above, but achieves better compression. We use a lazy
-+ * evaluation for matches: a match is finally adopted only if there is
-+ * no better match at the next window position.
-+ */
-+local block_state deflate_slow(s, flush)
-+ deflate_state *s;
-+ int flush;
-+{
-+ IPos hash_head = NIL; /* head of hash chain */
-+ int bflush; /* set if current block must be flushed */
-+
-+ /* Process the input block. */
-+ for (;;) {
-+ /* Make sure that we always have enough lookahead, except
-+ * at the end of the input file. We need MAX_MATCH bytes
-+ * for the next match, plus MIN_MATCH bytes to insert the
-+ * string following the next match.
-+ */
-+ if (s->lookahead < MIN_LOOKAHEAD) {
-+ fill_window(s);
-+ if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
-+ return need_more;
-+ }
-+ if (s->lookahead == 0) break; /* flush the current block */
-+ }
-+
-+ /* Insert the string window[strstart .. strstart+2] in the
-+ * dictionary, and set hash_head to the head of the hash chain:
-+ */
-+ if (s->lookahead >= MIN_MATCH) {
-+ INSERT_STRING(s, s->strstart, hash_head);
-+ }
-+
-+ /* Find the longest match, discarding those <= prev_length.
-+ */
-+ s->prev_length = s->match_length, s->prev_match = s->match_start;
-+ s->match_length = MIN_MATCH-1;
-+
-+ if (hash_head != NIL && s->prev_length < s->max_lazy_match &&
-+ s->strstart - hash_head <= MAX_DIST(s)) {
-+ /* To simplify the code, we prevent matches with the string
-+ * of window index 0 (in particular we have to avoid a match
-+ * of the string with itself at the start of the input file).
-+ */
-+ if (s->strategy != Z_HUFFMAN_ONLY) {
-+ s->match_length = longest_match (s, hash_head);
-+ }
-+ /* longest_match() sets match_start */
-+
-+ if (s->match_length <= 5 && (s->strategy == Z_FILTERED ||
-+ (s->match_length == MIN_MATCH &&
-+ s->strstart - s->match_start > TOO_FAR))) {
-+
-+ /* If prev_match is also MIN_MATCH, match_start is garbage
-+ * but we will ignore the current match anyway.
-+ */
-+ s->match_length = MIN_MATCH-1;
-+ }
-+ }
-+ /* If there was a match at the previous step and the current
-+ * match is not better, output the previous match:
-+ */
-+ if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) {
-+ uInt max_insert = s->strstart + s->lookahead - MIN_MATCH;
-+ /* Do not insert strings in hash table beyond this. */
-+
-+ check_match(s, s->strstart-1, s->prev_match, s->prev_length);
-+
-+ bflush = _tr_tally(s, s->strstart -1 - s->prev_match,
-+ s->prev_length - MIN_MATCH);
-+
-+ /* Insert in hash table all strings up to the end of the match.
-+ * strstart-1 and strstart are already inserted. If there is not
-+ * enough lookahead, the last two strings are not inserted in
-+ * the hash table.
-+ */
-+ s->lookahead -= s->prev_length-1;
-+ s->prev_length -= 2;
-+ do {
-+ if (++s->strstart <= max_insert) {
-+ INSERT_STRING(s, s->strstart, hash_head);
-+ }
-+ } while (--s->prev_length != 0);
-+ s->match_available = 0;
-+ s->match_length = MIN_MATCH-1;
-+ s->strstart++;
-+
-+ if (bflush) FLUSH_BLOCK(s, 0);
-+
-+ } else if (s->match_available) {
-+ /* If there was no match at the previous position, output a
-+ * single literal. If there was a match but the current match
-+ * is longer, truncate the previous match to a single literal.
-+ */
-+ Tracevv((stderr,"%c", s->window[s->strstart-1]));
-+ if (_tr_tally (s, 0, s->window[s->strstart-1])) {
-+ FLUSH_BLOCK_ONLY(s, 0);
-+ }
-+ s->strstart++;
-+ s->lookahead--;
-+ if (s->strm->avail_out == 0) return need_more;
-+ } else {
-+ /* There is no previous match to compare with, wait for
-+ * the next step to decide.
-+ */
-+ s->match_available = 1;
-+ s->strstart++;
-+ s->lookahead--;
-+ }
-+ }
-+ Assert (flush != Z_NO_FLUSH, "no flush?");
-+ if (s->match_available) {
-+ Tracevv((stderr,"%c", s->window[s->strstart-1]));
-+ _tr_tally (s, 0, s->window[s->strstart-1]);
-+ s->match_available = 0;
-+ }
-+ FLUSH_BLOCK(s, flush == Z_FINISH);
-+ return flush == Z_FINISH ? finish_done : block_done;
-+}
-+/* --- deflate.c */
-+
-+/* +++ trees.c */
-+/* trees.c -- output deflated data using Huffman coding
-+ * Copyright (C) 1995-1996 Jean-loup Gailly
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/*
-+ * ALGORITHM
-+ *
-+ * The "deflation" process uses several Huffman trees. The more
-+ * common source values are represented by shorter bit sequences.
-+ *
-+ * Each code tree is stored in a compressed form which is itself
-+ * a Huffman encoding of the lengths of all the code strings (in
-+ * ascending order by source values). The actual code strings are
-+ * reconstructed from the lengths in the inflate process, as described
-+ * in the deflate specification.
-+ *
-+ * REFERENCES
-+ *
-+ * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification".
-+ * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc
-+ *
-+ * Storer, James A.
-+ * Data Compression: Methods and Theory, pp. 49-50.
-+ * Computer Science Press, 1988. ISBN 0-7167-8156-5.
-+ *
-+ * Sedgewick, R.
-+ * Algorithms, p290.
-+ * Addison-Wesley, 1983. ISBN 0-201-06672-6.
-+ */
-+
-+/* From: trees.c,v 1.11 1996/07/24 13:41:06 me Exp $ */
-+
-+/* #include "deflate.h" */
-+
-+#ifdef DEBUG_ZLIB
-+# include <ctype.h>
-+#endif
-+
-+/* ===========================================================================
-+ * Constants
-+ */
-+
-+#define MAX_BL_BITS 7
-+/* Bit length codes must not exceed MAX_BL_BITS bits */
-+
-+#define END_BLOCK 256
-+/* end of block literal code */
-+
-+#define REP_3_6 16
-+/* repeat previous bit length 3-6 times (2 bits of repeat count) */
-+
-+#define REPZ_3_10 17
-+/* repeat a zero length 3-10 times (3 bits of repeat count) */
-+
-+#define REPZ_11_138 18
-+/* repeat a zero length 11-138 times (7 bits of repeat count) */
-+
-+local int extra_lbits[LENGTH_CODES] /* extra bits for each length code */
-+ = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0};
-+
-+local int extra_dbits[D_CODES] /* extra bits for each distance code */
-+ = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};
-+
-+local int extra_blbits[BL_CODES]/* extra bits for each bit length code */
-+ = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7};
-+
-+local uch bl_order[BL_CODES]
-+ = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15};
-+/* The lengths of the bit length codes are sent in order of decreasing
-+ * probability, to avoid transmitting the lengths for unused bit length codes.
-+ */
-+
-+#define Buf_size (8 * 2*sizeof(char))
-+/* Number of bits used within bi_buf. (bi_buf might be implemented on
-+ * more than 16 bits on some systems.)
-+ */
-+
-+/* ===========================================================================
-+ * Local data. These are initialized only once.
-+ */
-+
-+local ct_data static_ltree[L_CODES+2];
-+/* The static literal tree. Since the bit lengths are imposed, there is no
-+ * need for the L_CODES extra codes used during heap construction. However
-+ * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
-+ * below).
-+ */
-+
-+local ct_data static_dtree[D_CODES];
-+/* The static distance tree. (Actually a trivial tree since all codes use
-+ * 5 bits.)
-+ */
-+
-+local uch dist_code[512];
-+/* distance codes. The first 256 values correspond to the distances
-+ * 3 .. 258, the last 256 values correspond to the top 8 bits of
-+ * the 15 bit distances.
-+ */
-+
-+local uch length_code[MAX_MATCH-MIN_MATCH+1];
-+/* length code for each normalized match length (0 == MIN_MATCH) */
-+
-+local int base_length[LENGTH_CODES];
-+/* First normalized length for each code (0 = MIN_MATCH) */
-+
-+local int base_dist[D_CODES];
-+/* First normalized distance for each code (0 = distance of 1) */
-+
-+struct static_tree_desc_s {
-+ ct_data *static_tree; /* static tree or NULL */
-+ intf *extra_bits; /* extra bits for each code or NULL */
-+ int extra_base; /* base index for extra_bits */
-+ int elems; /* max number of elements in the tree */
-+ int max_length; /* max bit length for the codes */
-+};
-+
-+local static_tree_desc static_l_desc =
-+{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS};
-+
-+local static_tree_desc static_d_desc =
-+{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS};
-+
-+local static_tree_desc static_bl_desc =
-+{(ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS};
-+
-+/* ===========================================================================
-+ * Local (static) routines in this file.
-+ */
-+
-+local void tr_static_init OF((void));
-+local void init_block OF((deflate_state *s));
-+local void pqdownheap OF((deflate_state *s, ct_data *tree, int k));
-+local void gen_bitlen OF((deflate_state *s, tree_desc *desc));
-+local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count));
-+local void build_tree OF((deflate_state *s, tree_desc *desc));
-+local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code));
-+local void send_tree OF((deflate_state *s, ct_data *tree, int max_code));
-+local int build_bl_tree OF((deflate_state *s));
-+local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
-+ int blcodes));
-+local void compress_block OF((deflate_state *s, ct_data *ltree,
-+ ct_data *dtree));
-+local void set_data_type OF((deflate_state *s));
-+local unsigned bi_reverse OF((unsigned value, int length));
-+local void bi_windup OF((deflate_state *s));
-+local void bi_flush OF((deflate_state *s));
-+local void copy_block OF((deflate_state *s, charf *buf, unsigned len,
-+ int header));
-+
-+#ifndef DEBUG_ZLIB
-+# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len)
-+ /* Send a code of the given tree. c and tree must not have side effects */
-+
-+#else /* DEBUG_ZLIB */
-+# define send_code(s, c, tree) \
-+ { if (verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \
-+ send_bits(s, tree[c].Code, tree[c].Len); }
-+#endif
-+
-+#define d_code(dist) \
-+ ((dist) < 256 ? dist_code[dist] : dist_code[256+((dist)>>7)])
-+/* Mapping from a distance to a distance code. dist is the distance - 1 and
-+ * must not have side effects. dist_code[256] and dist_code[257] are never
-+ * used.
-+ */
-+
-+/* ===========================================================================
-+ * Output a short LSB first on the stream.
-+ * IN assertion: there is enough room in pendingBuf.
-+ */
-+#define put_short(s, w) { \
-+ put_byte(s, (uch)((w) & 0xff)); \
-+ put_byte(s, (uch)((ush)(w) >> 8)); \
-+}
-+
-+/* ===========================================================================
-+ * Send a value on a given number of bits.
-+ * IN assertion: length <= 16 and value fits in length bits.
-+ */
-+#ifdef DEBUG_ZLIB
-+local void send_bits OF((deflate_state *s, int value, int length));
-+
-+local void send_bits(s, value, length)
-+ deflate_state *s;
-+ int value; /* value to send */
-+ int length; /* number of bits */
-+{
-+ Tracevv((stderr," l %2d v %4x ", length, value));
-+ Assert(length > 0 && length <= 15, "invalid length");
-+ s->bits_sent += (ulg)length;
-+
-+ /* If not enough room in bi_buf, use (valid) bits from bi_buf and
-+ * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid))
-+ * unused bits in value.
-+ */
-+ if (s->bi_valid > (int)Buf_size - length) {
-+ s->bi_buf |= (value << s->bi_valid);
-+ put_short(s, s->bi_buf);
-+ s->bi_buf = (ush)value >> (Buf_size - s->bi_valid);
-+ s->bi_valid += length - Buf_size;
-+ } else {
-+ s->bi_buf |= value << s->bi_valid;
-+ s->bi_valid += length;
-+ }
-+}
-+#else /* !DEBUG_ZLIB */
-+
-+#define send_bits(s, value, length) \
-+{ int len = length;\
-+ if (s->bi_valid > (int)Buf_size - len) {\
-+ int val = value;\
-+ s->bi_buf |= (val << s->bi_valid);\
-+ put_short(s, s->bi_buf);\
-+ s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\
-+ s->bi_valid += len - Buf_size;\
-+ } else {\
-+ s->bi_buf |= (value) << s->bi_valid;\
-+ s->bi_valid += len;\
-+ }\
-+}
-+#endif /* DEBUG_ZLIB */
-+
-+
-+#define MAX(a,b) (a >= b ? a : b)
-+/* the arguments must not have side effects */
-+
-+/* ===========================================================================
-+ * Initialize the various 'constant' tables. In a multi-threaded environment,
-+ * this function may be called by two threads concurrently, but this is
-+ * harmless since both invocations do exactly the same thing.
-+ */
-+local void tr_static_init()
-+{
-+ static int static_init_done = 0;
-+ int n; /* iterates over tree elements */
-+ int bits; /* bit counter */
-+ int length; /* length value */
-+ int code; /* code value */
-+ int dist; /* distance index */
-+ ush bl_count[MAX_BITS+1];
-+ /* number of codes at each bit length for an optimal tree */
-+
-+ if (static_init_done) return;
-+
-+ /* Initialize the mapping length (0..255) -> length code (0..28) */
-+ length = 0;
-+ for (code = 0; code < LENGTH_CODES-1; code++) {
-+ base_length[code] = length;
-+ for (n = 0; n < (1<<extra_lbits[code]); n++) {
-+ length_code[length++] = (uch)code;
-+ }
-+ }
-+ Assert (length == 256, "tr_static_init: length != 256");
-+ /* Note that the length 255 (match length 258) can be represented
-+ * in two different ways: code 284 + 5 bits or code 285, so we
-+ * overwrite length_code[255] to use the best encoding:
-+ */
-+ length_code[length-1] = (uch)code;
-+
-+ /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
-+ dist = 0;
-+ for (code = 0 ; code < 16; code++) {
-+ base_dist[code] = dist;
-+ for (n = 0; n < (1<<extra_dbits[code]); n++) {
-+ dist_code[dist++] = (uch)code;
-+ }
-+ }
-+ Assert (dist == 256, "tr_static_init: dist != 256");
-+ dist >>= 7; /* from now on, all distances are divided by 128 */
-+ for ( ; code < D_CODES; code++) {
-+ base_dist[code] = dist << 7;
-+ for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
-+ dist_code[256 + dist++] = (uch)code;
-+ }
-+ }
-+ Assert (dist == 256, "tr_static_init: 256+dist != 512");
-+
-+ /* Construct the codes of the static literal tree */
-+ for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0;
-+ n = 0;
-+ while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++;
-+ while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++;
-+ while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++;
-+ while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++;
-+ /* Codes 286 and 287 do not exist, but we must include them in the
-+ * tree construction to get a canonical Huffman tree (longest code
-+ * all ones)
-+ */
-+ gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count);
-+
-+ /* The static distance tree is trivial: */
-+ for (n = 0; n < D_CODES; n++) {
-+ static_dtree[n].Len = 5;
-+ static_dtree[n].Code = bi_reverse((unsigned)n, 5);
-+ }
-+ static_init_done = 1;
-+}
-+
-+/* ===========================================================================
-+ * Initialize the tree data structures for a new zlib stream.
-+ */
-+void _tr_init(s)
-+ deflate_state *s;
-+{
-+ tr_static_init();
-+
-+ s->compressed_len = 0L;
-+
-+ s->l_desc.dyn_tree = s->dyn_ltree;
-+ s->l_desc.stat_desc = &static_l_desc;
-+
-+ s->d_desc.dyn_tree = s->dyn_dtree;
-+ s->d_desc.stat_desc = &static_d_desc;
-+
-+ s->bl_desc.dyn_tree = s->bl_tree;
-+ s->bl_desc.stat_desc = &static_bl_desc;
-+
-+ s->bi_buf = 0;
-+ s->bi_valid = 0;
-+ s->last_eob_len = 8; /* enough lookahead for inflate */
-+#ifdef DEBUG_ZLIB
-+ s->bits_sent = 0L;
-+#endif
-+
-+ /* Initialize the first block of the first file: */
-+ init_block(s);
-+}
-+
-+/* ===========================================================================
-+ * Initialize a new block.
-+ */
-+local void init_block(s)
-+ deflate_state *s;
-+{
-+ int n; /* iterates over tree elements */
-+
-+ /* Initialize the trees. */
-+ for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0;
-+ for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0;
-+ for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0;
-+
-+ s->dyn_ltree[END_BLOCK].Freq = 1;
-+ s->opt_len = s->static_len = 0L;
-+ s->last_lit = s->matches = 0;
-+}
-+
-+#define SMALLEST 1
-+/* Index within the heap array of least frequent node in the Huffman tree */
-+
-+
-+/* ===========================================================================
-+ * Remove the smallest element from the heap and recreate the heap with
-+ * one less element. Updates heap and heap_len.
-+ */
-+#define pqremove(s, tree, top) \
-+{\
-+ top = s->heap[SMALLEST]; \
-+ s->heap[SMALLEST] = s->heap[s->heap_len--]; \
-+ pqdownheap(s, tree, SMALLEST); \
-+}
-+
-+/* ===========================================================================
-+ * Compares to subtrees, using the tree depth as tie breaker when
-+ * the subtrees have equal frequency. This minimizes the worst case length.
-+ */
-+#define smaller(tree, n, m, depth) \
-+ (tree[n].Freq < tree[m].Freq || \
-+ (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m]))
-+
-+/* ===========================================================================
-+ * Restore the heap property by moving down the tree starting at node k,
-+ * exchanging a node with the smallest of its two sons if necessary, stopping
-+ * when the heap property is re-established (each father smaller than its
-+ * two sons).
-+ */
-+local void pqdownheap(s, tree, k)
-+ deflate_state *s;
-+ ct_data *tree; /* the tree to restore */
-+ int k; /* node to move down */
-+{
-+ int v = s->heap[k];
-+ int j = k << 1; /* left son of k */
-+ while (j <= s->heap_len) {
-+ /* Set j to the smallest of the two sons: */
-+ if (j < s->heap_len &&
-+ smaller(tree, s->heap[j+1], s->heap[j], s->depth)) {
-+ j++;
-+ }
-+ /* Exit if v is smaller than both sons */
-+ if (smaller(tree, v, s->heap[j], s->depth)) break;
-+
-+ /* Exchange v with the smallest son */
-+ s->heap[k] = s->heap[j]; k = j;
-+
-+ /* And continue down the tree, setting j to the left son of k */
-+ j <<= 1;
-+ }
-+ s->heap[k] = v;
-+}
-+
-+/* ===========================================================================
-+ * Compute the optimal bit lengths for a tree and update the total bit length
-+ * for the current block.
-+ * IN assertion: the fields freq and dad are set, heap[heap_max] and
-+ * above are the tree nodes sorted by increasing frequency.
-+ * OUT assertions: the field len is set to the optimal bit length, the
-+ * array bl_count contains the frequencies for each bit length.
-+ * The length opt_len is updated; static_len is also updated if stree is
-+ * not null.
-+ */
-+local void gen_bitlen(s, desc)
-+ deflate_state *s;
-+ tree_desc *desc; /* the tree descriptor */
-+{
-+ ct_data *tree = desc->dyn_tree;
-+ int max_code = desc->max_code;
-+ ct_data *stree = desc->stat_desc->static_tree;
-+ intf *extra = desc->stat_desc->extra_bits;
-+ int base = desc->stat_desc->extra_base;
-+ int max_length = desc->stat_desc->max_length;
-+ int h; /* heap index */
-+ int n, m; /* iterate over the tree elements */
-+ int bits; /* bit length */
-+ int xbits; /* extra bits */
-+ ush f; /* frequency */
-+ int overflow = 0; /* number of elements with bit length too large */
-+
-+ for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0;
-+
-+ /* In a first pass, compute the optimal bit lengths (which may
-+ * overflow in the case of the bit length tree).
-+ */
-+ tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */
-+
-+ for (h = s->heap_max+1; h < HEAP_SIZE; h++) {
-+ n = s->heap[h];
-+ bits = tree[tree[n].Dad].Len + 1;
-+ if (bits > max_length) bits = max_length, overflow++;
-+ tree[n].Len = (ush)bits;
-+ /* We overwrite tree[n].Dad which is no longer needed */
-+
-+ if (n > max_code) continue; /* not a leaf node */
-+
-+ s->bl_count[bits]++;
-+ xbits = 0;
-+ if (n >= base) xbits = extra[n-base];
-+ f = tree[n].Freq;
-+ s->opt_len += (ulg)f * (bits + xbits);
-+ if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits);
-+ }
-+ if (overflow == 0) return;
-+
-+ Trace((stderr,"\nbit length overflow\n"));
-+ /* This happens for example on obj2 and pic of the Calgary corpus */
-+
-+ /* Find the first bit length which could increase: */
-+ do {
-+ bits = max_length-1;
-+ while (s->bl_count[bits] == 0) bits--;
-+ s->bl_count[bits]--; /* move one leaf down the tree */
-+ s->bl_count[bits+1] += 2; /* move one overflow item as its brother */
-+ s->bl_count[max_length]--;
-+ /* The brother of the overflow item also moves one step up,
-+ * but this does not affect bl_count[max_length]
-+ */
-+ overflow -= 2;
-+ } while (overflow > 0);
-+
-+ /* Now recompute all bit lengths, scanning in increasing frequency.
-+ * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
-+ * lengths instead of fixing only the wrong ones. This idea is taken
-+ * from 'ar' written by Haruhiko Okumura.)
-+ */
-+ for (bits = max_length; bits != 0; bits--) {
-+ n = s->bl_count[bits];
-+ while (n != 0) {
-+ m = s->heap[--h];
-+ if (m > max_code) continue;
-+ if (tree[m].Len != (unsigned) bits) {
-+ Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
-+ s->opt_len += ((long)bits - (long)tree[m].Len)
-+ *(long)tree[m].Freq;
-+ tree[m].Len = (ush)bits;
-+ }
-+ n--;
-+ }
-+ }
-+}
-+
-+/* ===========================================================================
-+ * Generate the codes for a given tree and bit counts (which need not be
-+ * optimal).
-+ * IN assertion: the array bl_count contains the bit length statistics for
-+ * the given tree and the field len is set for all tree elements.
-+ * OUT assertion: the field code is set for all tree elements of non
-+ * zero code length.
-+ */
-+local void gen_codes (tree, max_code, bl_count)
-+ ct_data *tree; /* the tree to decorate */
-+ int max_code; /* largest code with non zero frequency */
-+ ushf *bl_count; /* number of codes at each bit length */
-+{
-+ ush next_code[MAX_BITS+1]; /* next code value for each bit length */
-+ ush code = 0; /* running code value */
-+ int bits; /* bit index */
-+ int n; /* code index */
-+
-+ /* The distribution counts are first used to generate the code values
-+ * without bit reversal.
-+ */
-+ for (bits = 1; bits <= MAX_BITS; bits++) {
-+ next_code[bits] = code = (code + bl_count[bits-1]) << 1;
-+ }
-+ /* Check that the bit counts in bl_count are consistent. The last code
-+ * must be all ones.
-+ */
-+ Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
-+ "inconsistent bit counts");
-+ Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
-+
-+ for (n = 0; n <= max_code; n++) {
-+ int len = tree[n].Len;
-+ if (len == 0) continue;
-+ /* Now reverse the bits */
-+ tree[n].Code = bi_reverse(next_code[len]++, len);
-+
-+ Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
-+ n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
-+ }
-+}
-+
-+/* ===========================================================================
-+ * Construct one Huffman tree and assigns the code bit strings and lengths.
-+ * Update the total bit length for the current block.
-+ * IN assertion: the field freq is set for all tree elements.
-+ * OUT assertions: the fields len and code are set to the optimal bit length
-+ * and corresponding code. The length opt_len is updated; static_len is
-+ * also updated if stree is not null. The field max_code is set.
-+ */
-+local void build_tree(s, desc)
-+ deflate_state *s;
-+ tree_desc *desc; /* the tree descriptor */
-+{
-+ ct_data *tree = desc->dyn_tree;
-+ ct_data *stree = desc->stat_desc->static_tree;
-+ int elems = desc->stat_desc->elems;
-+ int n, m; /* iterate over heap elements */
-+ int max_code = -1; /* largest code with non zero frequency */
-+ int node; /* new node being created */
-+
-+ /* Construct the initial heap, with least frequent element in
-+ * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
-+ * heap[0] is not used.
-+ */
-+ s->heap_len = 0, s->heap_max = HEAP_SIZE;
-+
-+ for (n = 0; n < elems; n++) {
-+ if (tree[n].Freq != 0) {
-+ s->heap[++(s->heap_len)] = max_code = n;
-+ s->depth[n] = 0;
-+ } else {
-+ tree[n].Len = 0;
-+ }
-+ }
-+
-+ /* The pkzip format requires that at least one distance code exists,
-+ * and that at least one bit should be sent even if there is only one
-+ * possible code. So to avoid special checks later on we force at least
-+ * two codes of non zero frequency.
-+ */
-+ while (s->heap_len < 2) {
-+ node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0);
-+ tree[node].Freq = 1;
-+ s->depth[node] = 0;
-+ s->opt_len--; if (stree) s->static_len -= stree[node].Len;
-+ /* node is 0 or 1 so it does not have extra bits */
-+ }
-+ desc->max_code = max_code;
-+
-+ /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
-+ * establish sub-heaps of increasing lengths:
-+ */
-+ for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n);
-+
-+ /* Construct the Huffman tree by repeatedly combining the least two
-+ * frequent nodes.
-+ */
-+ node = elems; /* next internal node of the tree */
-+ do {
-+ pqremove(s, tree, n); /* n = node of least frequency */
-+ m = s->heap[SMALLEST]; /* m = node of next least frequency */
-+
-+ s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */
-+ s->heap[--(s->heap_max)] = m;
-+
-+ /* Create a new node father of n and m */
-+ tree[node].Freq = tree[n].Freq + tree[m].Freq;
-+ s->depth[node] = (uch) (MAX(s->depth[n], s->depth[m]) + 1);
-+ tree[n].Dad = tree[m].Dad = (ush)node;
-+#ifdef DUMP_BL_TREE
-+ if (tree == s->bl_tree) {
-+ fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)",
-+ node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq);
-+ }
-+#endif
-+ /* and insert the new node in the heap */
-+ s->heap[SMALLEST] = node++;
-+ pqdownheap(s, tree, SMALLEST);
-+
-+ } while (s->heap_len >= 2);
-+
-+ s->heap[--(s->heap_max)] = s->heap[SMALLEST];
-+
-+ /* At this point, the fields freq and dad are set. We can now
-+ * generate the bit lengths.
-+ */
-+ gen_bitlen(s, (tree_desc *)desc);
-+
-+ /* The field len is now set, we can generate the bit codes */
-+ gen_codes ((ct_data *)tree, max_code, s->bl_count);
-+}
-+
-+/* ===========================================================================
-+ * Scan a literal or distance tree to determine the frequencies of the codes
-+ * in the bit length tree.
-+ */
-+local void scan_tree (s, tree, max_code)
-+ deflate_state *s;
-+ ct_data *tree; /* the tree to be scanned */
-+ int max_code; /* and its largest code of non zero frequency */
-+{
-+ int n; /* iterates over all tree elements */
-+ int prevlen = -1; /* last emitted length */
-+ int curlen; /* length of current code */
-+ int nextlen = tree[0].Len; /* length of next code */
-+ int count = 0; /* repeat count of the current code */
-+ int max_count = 7; /* max repeat count */
-+ int min_count = 4; /* min repeat count */
-+
-+ if (nextlen == 0) max_count = 138, min_count = 3;
-+ tree[max_code+1].Len = (ush)0xffff; /* guard */
-+
-+ for (n = 0; n <= max_code; n++) {
-+ curlen = nextlen; nextlen = tree[n+1].Len;
-+ if (++count < max_count && curlen == nextlen) {
-+ continue;
-+ } else if (count < min_count) {
-+ s->bl_tree[curlen].Freq += count;
-+ } else if (curlen != 0) {
-+ if (curlen != prevlen) s->bl_tree[curlen].Freq++;
-+ s->bl_tree[REP_3_6].Freq++;
-+ } else if (count <= 10) {
-+ s->bl_tree[REPZ_3_10].Freq++;
-+ } else {
-+ s->bl_tree[REPZ_11_138].Freq++;
-+ }
-+ count = 0; prevlen = curlen;
-+ if (nextlen == 0) {
-+ max_count = 138, min_count = 3;
-+ } else if (curlen == nextlen) {
-+ max_count = 6, min_count = 3;
-+ } else {
-+ max_count = 7, min_count = 4;
-+ }
-+ }
-+}
-+
-+/* ===========================================================================
-+ * Send a literal or distance tree in compressed form, using the codes in
-+ * bl_tree.
-+ */
-+local void send_tree (s, tree, max_code)
-+ deflate_state *s;
-+ ct_data *tree; /* the tree to be scanned */
-+ int max_code; /* and its largest code of non zero frequency */
-+{
-+ int n; /* iterates over all tree elements */
-+ int prevlen = -1; /* last emitted length */
-+ int curlen; /* length of current code */
-+ int nextlen = tree[0].Len; /* length of next code */
-+ int count = 0; /* repeat count of the current code */
-+ int max_count = 7; /* max repeat count */
-+ int min_count = 4; /* min repeat count */
-+
-+ /* tree[max_code+1].Len = -1; */ /* guard already set */
-+ if (nextlen == 0) max_count = 138, min_count = 3;
-+
-+ for (n = 0; n <= max_code; n++) {
-+ curlen = nextlen; nextlen = tree[n+1].Len;
-+ if (++count < max_count && curlen == nextlen) {
-+ continue;
-+ } else if (count < min_count) {
-+ do { send_code(s, curlen, s->bl_tree); } while (--count != 0);
-+
-+ } else if (curlen != 0) {
-+ if (curlen != prevlen) {
-+ send_code(s, curlen, s->bl_tree); count--;
-+ }
-+ Assert(count >= 3 && count <= 6, " 3_6?");
-+ send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2);
-+
-+ } else if (count <= 10) {
-+ send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3);
-+
-+ } else {
-+ send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7);
-+ }
-+ count = 0; prevlen = curlen;
-+ if (nextlen == 0) {
-+ max_count = 138, min_count = 3;
-+ } else if (curlen == nextlen) {
-+ max_count = 6, min_count = 3;
-+ } else {
-+ max_count = 7, min_count = 4;
-+ }
-+ }
-+}
-+
-+/* ===========================================================================
-+ * Construct the Huffman tree for the bit lengths and return the index in
-+ * bl_order of the last bit length code to send.
-+ */
-+local int build_bl_tree(s)
-+ deflate_state *s;
-+{
-+ int max_blindex; /* index of last bit length code of non zero freq */
-+
-+ /* Determine the bit length frequencies for literal and distance trees */
-+ scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code);
-+ scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code);
-+
-+ /* Build the bit length tree: */
-+ build_tree(s, (tree_desc *)(&(s->bl_desc)));
-+ /* opt_len now includes the length of the tree representations, except
-+ * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
-+ */
-+
-+ /* Determine the number of bit length codes to send. The pkzip format
-+ * requires that at least 4 bit length codes be sent. (appnote.txt says
-+ * 3 but the actual value used is 4.)
-+ */
-+ for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {
-+ if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;
-+ }
-+ /* Update opt_len to include the bit length tree and counts */
-+ s->opt_len += 3*(max_blindex+1) + 5+5+4;
-+ Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
-+ s->opt_len, s->static_len));
-+
-+ return max_blindex;
-+}
-+
-+/* ===========================================================================
-+ * Send the header for a block using dynamic Huffman trees: the counts, the
-+ * lengths of the bit length codes, the literal tree and the distance tree.
-+ * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
-+ */
-+local void send_all_trees(s, lcodes, dcodes, blcodes)
-+ deflate_state *s;
-+ int lcodes, dcodes, blcodes; /* number of codes for each tree */
-+{
-+ int rank; /* index in bl_order */
-+
-+ Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
-+ Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
-+ "too many codes");
-+ Tracev((stderr, "\nbl counts: "));
-+ send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
-+ send_bits(s, dcodes-1, 5);
-+ send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */
-+ for (rank = 0; rank < blcodes; rank++) {
-+ Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
-+ send_bits(s, s->bl_tree[bl_order[rank]].Len, 3);
-+ }
-+ Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
-+
-+ send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */
-+ Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
-+
-+ send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */
-+ Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
-+}
-+
-+/* ===========================================================================
-+ * Send a stored block
-+ */
-+void _tr_stored_block(s, buf, stored_len, eof)
-+ deflate_state *s;
-+ charf *buf; /* input block */
-+ ulg stored_len; /* length of input block */
-+ int eof; /* true if this is the last block for a file */
-+{
-+ send_bits(s, (STORED_BLOCK<<1)+eof, 3); /* send block type */
-+ s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
-+ s->compressed_len += (stored_len + 4) << 3;
-+
-+ copy_block(s, buf, (unsigned)stored_len, 1); /* with header */
-+}
-+
-+/* Send just the `stored block' type code without any length bytes or data.
-+ */
-+void _tr_stored_type_only(s)
-+ deflate_state *s;
-+{
-+ send_bits(s, (STORED_BLOCK << 1), 3);
-+ bi_windup(s);
-+ s->compressed_len = (s->compressed_len + 3) & ~7L;
-+}
-+
-+
-+/* ===========================================================================
-+ * Send one empty static block to give enough lookahead for inflate.
-+ * This takes 10 bits, of which 7 may remain in the bit buffer.
-+ * The current inflate code requires 9 bits of lookahead. If the
-+ * last two codes for the previous block (real code plus EOB) were coded
-+ * on 5 bits or less, inflate may have only 5+3 bits of lookahead to decode
-+ * the last real code. In this case we send two empty static blocks instead
-+ * of one. (There are no problems if the previous block is stored or fixed.)
-+ * To simplify the code, we assume the worst case of last real code encoded
-+ * on one bit only.
-+ */
-+void _tr_align(s)
-+ deflate_state *s;
-+{
-+ send_bits(s, STATIC_TREES<<1, 3);
-+ send_code(s, END_BLOCK, static_ltree);
-+ s->compressed_len += 10L; /* 3 for block type, 7 for EOB */
-+ bi_flush(s);
-+ /* Of the 10 bits for the empty block, we have already sent
-+ * (10 - bi_valid) bits. The lookahead for the last real code (before
-+ * the EOB of the previous block) was thus at least one plus the length
-+ * of the EOB plus what we have just sent of the empty static block.
-+ */
-+ if (1 + s->last_eob_len + 10 - s->bi_valid < 9) {
-+ send_bits(s, STATIC_TREES<<1, 3);
-+ send_code(s, END_BLOCK, static_ltree);
-+ s->compressed_len += 10L;
-+ bi_flush(s);
-+ }
-+ s->last_eob_len = 7;
-+}
-+
-+/* ===========================================================================
-+ * Determine the best encoding for the current block: dynamic trees, static
-+ * trees or store, and output the encoded block to the zip file. This function
-+ * returns the total compressed length for the file so far.
-+ */
-+ulg _tr_flush_block(s, buf, stored_len, eof)
-+ deflate_state *s;
-+ charf *buf; /* input block, or NULL if too old */
-+ ulg stored_len; /* length of input block */
-+ int eof; /* true if this is the last block for a file */
-+{
-+ ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
-+ int max_blindex = 0; /* index of last bit length code of non zero freq */
-+
-+ /* Build the Huffman trees unless a stored block is forced */
-+ if (s->level > 0) {
-+
-+ /* Check if the file is ascii or binary */
-+ if (s->data_type == Z_UNKNOWN) set_data_type(s);
-+
-+ /* Construct the literal and distance trees */
-+ build_tree(s, (tree_desc *)(&(s->l_desc)));
-+ Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
-+ s->static_len));
-+
-+ build_tree(s, (tree_desc *)(&(s->d_desc)));
-+ Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
-+ s->static_len));
-+ /* At this point, opt_len and static_len are the total bit lengths of
-+ * the compressed block data, excluding the tree representations.
-+ */
-+
-+ /* Build the bit length tree for the above two trees, and get the index
-+ * in bl_order of the last bit length code to send.
-+ */
-+ max_blindex = build_bl_tree(s);
-+
-+ /* Determine the best encoding. Compute first the block length in bytes*/
-+ opt_lenb = (s->opt_len+3+7)>>3;
-+ static_lenb = (s->static_len+3+7)>>3;
-+
-+ Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
-+ opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
-+ s->last_lit));
-+
-+ if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
-+
-+ } else {
-+ Assert(buf != (char*)0, "lost buf");
-+ opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
-+ }
-+
-+ /* If compression failed and this is the first and last block,
-+ * and if the .zip file can be seeked (to rewrite the local header),
-+ * the whole file is transformed into a stored file:
-+ */
-+#ifdef STORED_FILE_OK
-+# ifdef FORCE_STORED_FILE
-+ if (eof && s->compressed_len == 0L) { /* force stored file */
-+# else
-+ if (stored_len <= opt_lenb && eof && s->compressed_len==0L && seekable()) {
-+# endif
-+ /* Since LIT_BUFSIZE <= 2*WSIZE, the input data must be there: */
-+ if (buf == (charf*)0) error ("block vanished");
-+
-+ copy_block(s, buf, (unsigned)stored_len, 0); /* without header */
-+ s->compressed_len = stored_len << 3;
-+ s->method = STORED;
-+ } else
-+#endif /* STORED_FILE_OK */
-+
-+#ifdef FORCE_STORED
-+ if (buf != (char*)0) { /* force stored block */
-+#else
-+ if (stored_len+4 <= opt_lenb && buf != (char*)0) {
-+ /* 4: two words for the lengths */
-+#endif
-+ /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
-+ * Otherwise we can't have processed more than WSIZE input bytes since
-+ * the last block flush, because compression would have been
-+ * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
-+ * transform a block into a stored block.
-+ */
-+ _tr_stored_block(s, buf, stored_len, eof);
-+
-+#ifdef FORCE_STATIC
-+ } else if (static_lenb >= 0) { /* force static trees */
-+#else
-+ } else if (static_lenb == opt_lenb) {
-+#endif
-+ send_bits(s, (STATIC_TREES<<1)+eof, 3);
-+ compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree);
-+ s->compressed_len += 3 + s->static_len;
-+ } else {
-+ send_bits(s, (DYN_TREES<<1)+eof, 3);
-+ send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
-+ max_blindex+1);
-+ compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree);
-+ s->compressed_len += 3 + s->opt_len;
-+ }
-+ Assert (s->compressed_len == s->bits_sent, "bad compressed size");
-+ init_block(s);
-+
-+ if (eof) {
-+ bi_windup(s);
-+ s->compressed_len += 7; /* align on byte boundary */
-+ }
-+ Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
-+ s->compressed_len-7*eof));
-+
-+ return s->compressed_len >> 3;
-+}
-+
-+/* ===========================================================================
-+ * Save the match info and tally the frequency counts. Return true if
-+ * the current block must be flushed.
-+ */
-+int _tr_tally (s, dist, lc)
-+ deflate_state *s;
-+ unsigned dist; /* distance of matched string */
-+ unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
-+{
-+ s->d_buf[s->last_lit] = (ush)dist;
-+ s->l_buf[s->last_lit++] = (uch)lc;
-+ if (dist == 0) {
-+ /* lc is the unmatched char */
-+ s->dyn_ltree[lc].Freq++;
-+ } else {
-+ s->matches++;
-+ /* Here, lc is the match length - MIN_MATCH */
-+ dist--; /* dist = match distance - 1 */
-+ Assert((ush)dist < (ush)MAX_DIST(s) &&
-+ (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
-+ (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match");
-+
-+ s->dyn_ltree[length_code[lc]+LITERALS+1].Freq++;
-+ s->dyn_dtree[d_code(dist)].Freq++;
-+ }
-+
-+ /* Try to guess if it is profitable to stop the current block here */
-+ if (s->level > 2 && (s->last_lit & 0xfff) == 0) {
-+ /* Compute an upper bound for the compressed length */
-+ ulg out_length = (ulg)s->last_lit*8L;
-+ ulg in_length = (ulg)((long)s->strstart - s->block_start);
-+ int dcode;
-+ for (dcode = 0; dcode < D_CODES; dcode++) {
-+ out_length += (ulg)s->dyn_dtree[dcode].Freq *
-+ (5L+extra_dbits[dcode]);
-+ }
-+ out_length >>= 3;
-+ Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
-+ s->last_lit, in_length, out_length,
-+ 100L - out_length*100L/in_length));
-+ if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
-+ }
-+ return (s->last_lit == s->lit_bufsize-1);
-+ /* We avoid equality with lit_bufsize because of wraparound at 64K
-+ * on 16 bit machines and because stored blocks are restricted to
-+ * 64K-1 bytes.
-+ */
-+}
-+
-+/* ===========================================================================
-+ * Send the block data compressed using the given Huffman trees
-+ */
-+local void compress_block(s, ltree, dtree)
-+ deflate_state *s;
-+ ct_data *ltree; /* literal tree */
-+ ct_data *dtree; /* distance tree */
-+{
-+ unsigned dist; /* distance of matched string */
-+ int lc; /* match length or unmatched char (if dist == 0) */
-+ unsigned lx = 0; /* running index in l_buf */
-+ unsigned code; /* the code to send */
-+ int extra; /* number of extra bits to send */
-+
-+ if (s->last_lit != 0) do {
-+ dist = s->d_buf[lx];
-+ lc = s->l_buf[lx++];
-+ if (dist == 0) {
-+ send_code(s, lc, ltree); /* send a literal byte */
-+ Tracecv(isgraph(lc), (stderr," '%c' ", lc));
-+ } else {
-+ /* Here, lc is the match length - MIN_MATCH */
-+ code = length_code[lc];
-+ send_code(s, code+LITERALS+1, ltree); /* send the length code */
-+ extra = extra_lbits[code];
-+ if (extra != 0) {
-+ lc -= base_length[code];
-+ send_bits(s, lc, extra); /* send the extra length bits */
-+ }
-+ dist--; /* dist is now the match distance - 1 */
-+ code = d_code(dist);
-+ Assert (code < D_CODES, "bad d_code");
-+
-+ send_code(s, code, dtree); /* send the distance code */
-+ extra = extra_dbits[code];
-+ if (extra != 0) {
-+ dist -= base_dist[code];
-+ send_bits(s, dist, extra); /* send the extra distance bits */
-+ }
-+ } /* literal or match pair ? */
-+
-+ /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
-+ Assert(s->pending < s->lit_bufsize + 2*lx, "pendingBuf overflow");
-+
-+ } while (lx < s->last_lit);
-+
-+ send_code(s, END_BLOCK, ltree);
-+ s->last_eob_len = ltree[END_BLOCK].Len;
-+}
-+
-+/* ===========================================================================
-+ * Set the data type to ASCII or BINARY, using a crude approximation:
-+ * binary if more than 20% of the bytes are <= 6 or >= 128, ascii otherwise.
-+ * IN assertion: the fields freq of dyn_ltree are set and the total of all
-+ * frequencies does not exceed 64K (to fit in an int on 16 bit machines).
-+ */
-+local void set_data_type(s)
-+ deflate_state *s;
-+{
-+ int n = 0;
-+ unsigned ascii_freq = 0;
-+ unsigned bin_freq = 0;
-+ while (n < 7) bin_freq += s->dyn_ltree[n++].Freq;
-+ while (n < 128) ascii_freq += s->dyn_ltree[n++].Freq;
-+ while (n < LITERALS) bin_freq += s->dyn_ltree[n++].Freq;
-+ s->data_type = (Byte)(bin_freq > (ascii_freq >> 2) ? Z_BINARY : Z_ASCII);
-+}
-+
-+/* ===========================================================================
-+ * Reverse the first len bits of a code, using straightforward code (a faster
-+ * method would use a table)
-+ * IN assertion: 1 <= len <= 15
-+ */
-+local unsigned bi_reverse(code, len)
-+ unsigned code; /* the value to invert */
-+ int len; /* its bit length */
-+{
-+ register unsigned res = 0;
-+ do {
-+ res |= code & 1;
-+ code >>= 1, res <<= 1;
-+ } while (--len > 0);
-+ return res >> 1;
-+}
-+
-+/* ===========================================================================
-+ * Flush the bit buffer, keeping at most 7 bits in it.
-+ */
-+local void bi_flush(s)
-+ deflate_state *s;
-+{
-+ if (s->bi_valid == 16) {
-+ put_short(s, s->bi_buf);
-+ s->bi_buf = 0;
-+ s->bi_valid = 0;
-+ } else if (s->bi_valid >= 8) {
-+ put_byte(s, (Byte)s->bi_buf);
-+ s->bi_buf >>= 8;
-+ s->bi_valid -= 8;
-+ }
-+}
-+
-+/* ===========================================================================
-+ * Flush the bit buffer and align the output on a byte boundary
-+ */
-+local void bi_windup(s)
-+ deflate_state *s;
-+{
-+ if (s->bi_valid > 8) {
-+ put_short(s, s->bi_buf);
-+ } else if (s->bi_valid > 0) {
-+ put_byte(s, (Byte)s->bi_buf);
-+ }
-+ s->bi_buf = 0;
-+ s->bi_valid = 0;
-+#ifdef DEBUG_ZLIB
-+ s->bits_sent = (s->bits_sent+7) & ~7;
-+#endif
-+}
-+
-+/* ===========================================================================
-+ * Copy a stored block, storing first the length and its
-+ * one's complement if requested.
-+ */
-+local void copy_block(s, buf, len, header)
-+ deflate_state *s;
-+ charf *buf; /* the input data */
-+ unsigned len; /* its length */
-+ int header; /* true if block header must be written */
-+{
-+ bi_windup(s); /* align on byte boundary */
-+ s->last_eob_len = 8; /* enough lookahead for inflate */
-+
-+ if (header) {
-+ put_short(s, (ush)len);
-+ put_short(s, (ush)~len);
-+#ifdef DEBUG_ZLIB
-+ s->bits_sent += 2*16;
-+#endif
-+ }
-+#ifdef DEBUG_ZLIB
-+ s->bits_sent += (ulg)len<<3;
-+#endif
-+ /* bundle up the put_byte(s, *buf++) calls */
-+ zmemcpy(&s->pending_buf[s->pending], buf, len);
-+ s->pending += len;
-+}
-+/* --- trees.c */
-+
-+/* +++ inflate.c */
-+/* inflate.c -- zlib interface to inflate modules
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* #include "zutil.h" */
-+
-+/* +++ infblock.h */
-+/* infblock.h -- header to use infblock.c
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* WARNING: this file should *not* be used by applications. It is
-+ part of the implementation of the compression library and is
-+ subject to change. Applications should only use zlib.h.
-+ */
-+
-+struct inflate_blocks_state;
-+typedef struct inflate_blocks_state FAR inflate_blocks_statef;
-+
-+extern inflate_blocks_statef * inflate_blocks_new OF((
-+ z_streamp z,
-+ check_func c, /* check function */
-+ uInt w)); /* window size */
-+
-+extern int inflate_blocks OF((
-+ inflate_blocks_statef *,
-+ z_streamp ,
-+ int)); /* initial return code */
-+
-+extern void inflate_blocks_reset OF((
-+ inflate_blocks_statef *,
-+ z_streamp ,
-+ uLongf *)); /* check value on output */
-+
-+extern int inflate_blocks_free OF((
-+ inflate_blocks_statef *,
-+ z_streamp ,
-+ uLongf *)); /* check value on output */
-+
-+extern void inflate_set_dictionary OF((
-+ inflate_blocks_statef *s,
-+ const Bytef *d, /* dictionary */
-+ uInt n)); /* dictionary length */
-+
-+extern int inflate_addhistory OF((
-+ inflate_blocks_statef *,
-+ z_streamp));
-+
-+extern int inflate_packet_flush OF((
-+ inflate_blocks_statef *));
-+/* --- infblock.h */
-+
-+#ifndef NO_DUMMY_DECL
-+struct inflate_blocks_state {int dummy;}; /* for buggy compilers */
-+#endif
-+
-+/* inflate private state */
-+struct internal_state {
-+
-+ /* mode */
-+ enum {
-+ METHOD, /* waiting for method byte */
-+ FLAG, /* waiting for flag byte */
-+ DICT4, /* four dictionary check bytes to go */
-+ DICT3, /* three dictionary check bytes to go */
-+ DICT2, /* two dictionary check bytes to go */
-+ DICT1, /* one dictionary check byte to go */
-+ DICT0, /* waiting for inflateSetDictionary */
-+ BLOCKS, /* decompressing blocks */
-+ CHECK4, /* four check bytes to go */
-+ CHECK3, /* three check bytes to go */
-+ CHECK2, /* two check bytes to go */
-+ CHECK1, /* one check byte to go */
-+ DONE, /* finished check, done */
-+ BAD} /* got an error--stay here */
-+ mode; /* current inflate mode */
-+
-+ /* mode dependent information */
-+ union {
-+ uInt method; /* if FLAGS, method byte */
-+ struct {
-+ uLong was; /* computed check value */
-+ uLong need; /* stream check value */
-+ } check; /* if CHECK, check values to compare */
-+ uInt marker; /* if BAD, inflateSync's marker bytes count */
-+ } sub; /* submode */
-+
-+ /* mode independent information */
-+ int nowrap; /* flag for no wrapper */
-+ uInt wbits; /* log2(window size) (8..15, defaults to 15) */
-+ inflate_blocks_statef
-+ *blocks; /* current inflate_blocks state */
-+
-+};
-+
-+
-+int inflateReset(z)
-+z_streamp z;
-+{
-+ uLong c;
-+
-+ if (z == Z_NULL || z->state == Z_NULL)
-+ return Z_STREAM_ERROR;
-+ z->total_in = z->total_out = 0;
-+ z->msg = Z_NULL;
-+ z->state->mode = z->state->nowrap ? BLOCKS : METHOD;
-+ inflate_blocks_reset(z->state->blocks, z, &c);
-+ Trace((stderr, "inflate: reset\n"));
-+ return Z_OK;
-+}
-+
-+
-+int inflateEnd(z)
-+z_streamp z;
-+{
-+ uLong c;
-+
-+ if (z == Z_NULL || z->state == Z_NULL || z->zfree == Z_NULL)
-+ return Z_STREAM_ERROR;
-+ if (z->state->blocks != Z_NULL)
-+ inflate_blocks_free(z->state->blocks, z, &c);
-+ ZFREE(z, z->state);
-+ z->state = Z_NULL;
-+ Trace((stderr, "inflate: end\n"));
-+ return Z_OK;
-+}
-+
-+
-+int inflateInit2_(z, w, version, stream_size)
-+z_streamp z;
-+int w;
-+const char *version;
-+int stream_size;
-+{
-+ if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
-+ stream_size != sizeof(z_stream))
-+ return Z_VERSION_ERROR;
-+
-+ /* initialize state */
-+ if (z == Z_NULL)
-+ return Z_STREAM_ERROR;
-+ z->msg = Z_NULL;
-+#ifndef NO_ZCFUNCS
-+ if (z->zalloc == Z_NULL)
-+ {
-+ z->zalloc = zcalloc;
-+ z->opaque = (voidpf)0;
-+ }
-+ if (z->zfree == Z_NULL) z->zfree = zcfree;
-+#endif
-+ if ((z->state = (struct internal_state FAR *)
-+ ZALLOC(z,1,sizeof(struct internal_state))) == Z_NULL)
-+ return Z_MEM_ERROR;
-+ z->state->blocks = Z_NULL;
-+
-+ /* handle undocumented nowrap option (no zlib header or check) */
-+ z->state->nowrap = 0;
-+ if (w < 0)
-+ {
-+ w = - w;
-+ z->state->nowrap = 1;
-+ }
-+
-+ /* set window size */
-+ if (w < 8 || w > 15)
-+ {
-+ inflateEnd(z);
-+ return Z_STREAM_ERROR;
-+ }
-+ z->state->wbits = (uInt)w;
-+
-+ /* create inflate_blocks state */
-+ if ((z->state->blocks =
-+ inflate_blocks_new(z, z->state->nowrap ? Z_NULL : adler32, (uInt)1 << w))
-+ == Z_NULL)
-+ {
-+ inflateEnd(z);
-+ return Z_MEM_ERROR;
-+ }
-+ Trace((stderr, "inflate: allocated\n"));
-+
-+ /* reset state */
-+ inflateReset(z);
-+ return Z_OK;
-+}
-+
-+
-+int inflateInit_(z, version, stream_size)
-+z_streamp z;
-+const char *version;
-+int stream_size;
-+{
-+ return inflateInit2_(z, DEF_WBITS, version, stream_size);
-+}
-+
-+
-+#define NEEDBYTE {if(z->avail_in==0)goto empty;r=Z_OK;}
-+#define NEXTBYTE (z->avail_in--,z->total_in++,*z->next_in++)
-+
-+int inflate(z, f)
-+z_streamp z;
-+int f;
-+{
-+ int r;
-+ uInt b;
-+
-+ if (z == Z_NULL || z->state == Z_NULL || z->next_in == Z_NULL || f < 0)
-+ return Z_STREAM_ERROR;
-+ r = Z_BUF_ERROR;
-+ while (1) switch (z->state->mode)
-+ {
-+ case METHOD:
-+ NEEDBYTE
-+ if (((z->state->sub.method = NEXTBYTE) & 0xf) != Z_DEFLATED)
-+ {
-+ z->state->mode = BAD;
-+ z->msg = (char*)"unknown compression method";
-+ z->state->sub.marker = 5; /* can't try inflateSync */
-+ break;
-+ }
-+ if ((z->state->sub.method >> 4) + 8 > z->state->wbits)
-+ {
-+ z->state->mode = BAD;
-+ z->msg = (char*)"invalid window size";
-+ z->state->sub.marker = 5; /* can't try inflateSync */
-+ break;
-+ }
-+ z->state->mode = FLAG;
-+ case FLAG:
-+ NEEDBYTE
-+ b = NEXTBYTE;
-+ if (((z->state->sub.method << 8) + b) % 31)
-+ {
-+ z->state->mode = BAD;
-+ z->msg = (char*)"incorrect header check";
-+ z->state->sub.marker = 5; /* can't try inflateSync */
-+ break;
-+ }
-+ Trace((stderr, "inflate: zlib header ok\n"));
-+ if (!(b & PRESET_DICT))
-+ {
-+ z->state->mode = BLOCKS;
-+ break;
-+ }
-+ z->state->mode = DICT4;
-+ case DICT4:
-+ NEEDBYTE
-+ z->state->sub.check.need = (uLong)NEXTBYTE << 24;
-+ z->state->mode = DICT3;
-+ case DICT3:
-+ NEEDBYTE
-+ z->state->sub.check.need += (uLong)NEXTBYTE << 16;
-+ z->state->mode = DICT2;
-+ case DICT2:
-+ NEEDBYTE
-+ z->state->sub.check.need += (uLong)NEXTBYTE << 8;
-+ z->state->mode = DICT1;
-+ case DICT1:
-+ NEEDBYTE
-+ z->state->sub.check.need += (uLong)NEXTBYTE;
-+ z->adler = z->state->sub.check.need;
-+ z->state->mode = DICT0;
-+ return Z_NEED_DICT;
-+ case DICT0:
-+ z->state->mode = BAD;
-+ z->msg = (char*)"need dictionary";
-+ z->state->sub.marker = 0; /* can try inflateSync */
-+ return Z_STREAM_ERROR;
-+ case BLOCKS:
-+ r = inflate_blocks(z->state->blocks, z, r);
-+ if (f == Z_PACKET_FLUSH && z->avail_in == 0 && z->avail_out != 0)
-+ r = inflate_packet_flush(z->state->blocks);
-+ if (r == Z_DATA_ERROR)
-+ {
-+ z->state->mode = BAD;
-+ z->state->sub.marker = 0; /* can try inflateSync */
-+ break;
-+ }
-+ if (r != Z_STREAM_END)
-+ return r;
-+ r = Z_OK;
-+ inflate_blocks_reset(z->state->blocks, z, &z->state->sub.check.was);
-+ if (z->state->nowrap)
-+ {
-+ z->state->mode = DONE;
-+ break;
-+ }
-+ z->state->mode = CHECK4;
-+ case CHECK4:
-+ NEEDBYTE
-+ z->state->sub.check.need = (uLong)NEXTBYTE << 24;
-+ z->state->mode = CHECK3;
-+ case CHECK3:
-+ NEEDBYTE
-+ z->state->sub.check.need += (uLong)NEXTBYTE << 16;
-+ z->state->mode = CHECK2;
-+ case CHECK2:
-+ NEEDBYTE
-+ z->state->sub.check.need += (uLong)NEXTBYTE << 8;
-+ z->state->mode = CHECK1;
-+ case CHECK1:
-+ NEEDBYTE
-+ z->state->sub.check.need += (uLong)NEXTBYTE;
-+
-+ if (z->state->sub.check.was != z->state->sub.check.need)
-+ {
-+ z->state->mode = BAD;
-+ z->msg = (char*)"incorrect data check";
-+ z->state->sub.marker = 5; /* can't try inflateSync */
-+ break;
-+ }
-+ Trace((stderr, "inflate: zlib check ok\n"));
-+ z->state->mode = DONE;
-+ case DONE:
-+ return Z_STREAM_END;
-+ case BAD:
-+ return Z_DATA_ERROR;
-+ default:
-+ return Z_STREAM_ERROR;
-+ }
-+
-+ empty:
-+ if (f != Z_PACKET_FLUSH)
-+ return r;
-+ z->state->mode = BAD;
-+ z->msg = (char *)"need more for packet flush";
-+ z->state->sub.marker = 0; /* can try inflateSync */
-+ return Z_DATA_ERROR;
-+}
-+
-+
-+int inflateSetDictionary(z, dictionary, dictLength)
-+z_streamp z;
-+const Bytef *dictionary;
-+uInt dictLength;
-+{
-+ uInt length = dictLength;
-+
-+ if (z == Z_NULL || z->state == Z_NULL || z->state->mode != DICT0)
-+ return Z_STREAM_ERROR;
-+
-+ if (adler32(1L, dictionary, dictLength) != z->adler) return Z_DATA_ERROR;
-+ z->adler = 1L;
-+
-+ if (length >= ((uInt)1<<z->state->wbits))
-+ {
-+ length = (1<<z->state->wbits)-1;
-+ dictionary += dictLength - length;
-+ }
-+ inflate_set_dictionary(z->state->blocks, dictionary, length);
-+ z->state->mode = BLOCKS;
-+ return Z_OK;
-+}
-+
-+/*
-+ * This subroutine adds the data at next_in/avail_in to the output history
-+ * without performing any output. The output buffer must be "caught up";
-+ * i.e. no pending output (hence s->read equals s->write), and the state must
-+ * be BLOCKS (i.e. we should be willing to see the start of a series of
-+ * BLOCKS). On exit, the output will also be caught up, and the checksum
-+ * will have been updated if need be.
-+ */
-+
-+int inflateIncomp(z)
-+z_stream *z;
-+{
-+ if (z->state->mode != BLOCKS)
-+ return Z_DATA_ERROR;
-+ return inflate_addhistory(z->state->blocks, z);
-+}
-+
-+
-+int inflateSync(z)
-+z_streamp z;
-+{
-+ uInt n; /* number of bytes to look at */
-+ Bytef *p; /* pointer to bytes */
-+ uInt m; /* number of marker bytes found in a row */
-+ uLong r, w; /* temporaries to save total_in and total_out */
-+
-+ /* set up */
-+ if (z == Z_NULL || z->state == Z_NULL)
-+ return Z_STREAM_ERROR;
-+ if (z->state->mode != BAD)
-+ {
-+ z->state->mode = BAD;
-+ z->state->sub.marker = 0;
-+ }
-+ if ((n = z->avail_in) == 0)
-+ return Z_BUF_ERROR;
-+ p = z->next_in;
-+ m = z->state->sub.marker;
-+
-+ /* search */
-+ while (n && m < 4)
-+ {
-+ if (*p == (Byte)(m < 2 ? 0 : 0xff))
-+ m++;
-+ else if (*p)
-+ m = 0;
-+ else
-+ m = 4 - m;
-+ p++, n--;
-+ }
-+
-+ /* restore */
-+ z->total_in += p - z->next_in;
-+ z->next_in = p;
-+ z->avail_in = n;
-+ z->state->sub.marker = m;
-+
-+ /* return no joy or set up to restart on a new block */
-+ if (m != 4)
-+ return Z_DATA_ERROR;
-+ r = z->total_in; w = z->total_out;
-+ inflateReset(z);
-+ z->total_in = r; z->total_out = w;
-+ z->state->mode = BLOCKS;
-+ return Z_OK;
-+}
-+
-+#undef NEEDBYTE
-+#undef NEXTBYTE
-+/* --- inflate.c */
-+
-+/* +++ infblock.c */
-+/* infblock.c -- interpret and process block types to last block
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* #include "zutil.h" */
-+/* #include "infblock.h" */
-+
-+/* +++ inftrees.h */
-+/* inftrees.h -- header to use inftrees.c
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* WARNING: this file should *not* be used by applications. It is
-+ part of the implementation of the compression library and is
-+ subject to change. Applications should only use zlib.h.
-+ */
-+
-+/* Huffman code lookup table entry--this entry is four bytes for machines
-+ that have 16-bit pointers (e.g. PC's in the small or medium model). */
-+
-+typedef struct inflate_huft_s FAR inflate_huft;
-+
-+struct inflate_huft_s {
-+ union {
-+ struct {
-+ Byte Exop; /* number of extra bits or operation */
-+ Byte Bits; /* number of bits in this code or subcode */
-+ } what;
-+ Bytef *pad; /* pad structure to a power of 2 (4 bytes for */
-+ } word; /* 16-bit, 8 bytes for 32-bit machines) */
-+ union {
-+ uInt Base; /* literal, length base, or distance base */
-+ inflate_huft *Next; /* pointer to next level of table */
-+ } more;
-+};
-+
-+#ifdef DEBUG_ZLIB
-+ extern uInt inflate_hufts;
-+#endif
-+
-+extern int inflate_trees_bits OF((
-+ uIntf *, /* 19 code lengths */
-+ uIntf *, /* bits tree desired/actual depth */
-+ inflate_huft * FAR *, /* bits tree result */
-+ z_streamp )); /* for zalloc, zfree functions */
-+
-+extern int inflate_trees_dynamic OF((
-+ uInt, /* number of literal/length codes */
-+ uInt, /* number of distance codes */
-+ uIntf *, /* that many (total) code lengths */
-+ uIntf *, /* literal desired/actual bit depth */
-+ uIntf *, /* distance desired/actual bit depth */
-+ inflate_huft * FAR *, /* literal/length tree result */
-+ inflate_huft * FAR *, /* distance tree result */
-+ z_streamp )); /* for zalloc, zfree functions */
-+
-+extern int inflate_trees_fixed OF((
-+ uIntf *, /* literal desired/actual bit depth */
-+ uIntf *, /* distance desired/actual bit depth */
-+ inflate_huft * FAR *, /* literal/length tree result */
-+ inflate_huft * FAR *)); /* distance tree result */
-+
-+extern int inflate_trees_free OF((
-+ inflate_huft *, /* tables to free */
-+ z_streamp )); /* for zfree function */
-+
-+/* --- inftrees.h */
-+
-+/* +++ infcodes.h */
-+/* infcodes.h -- header to use infcodes.c
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* WARNING: this file should *not* be used by applications. It is
-+ part of the implementation of the compression library and is
-+ subject to change. Applications should only use zlib.h.
-+ */
-+
-+struct inflate_codes_state;
-+typedef struct inflate_codes_state FAR inflate_codes_statef;
-+
-+extern inflate_codes_statef *inflate_codes_new OF((
-+ uInt, uInt,
-+ inflate_huft *, inflate_huft *,
-+ z_streamp ));
-+
-+extern int inflate_codes OF((
-+ inflate_blocks_statef *,
-+ z_streamp ,
-+ int));
-+
-+extern void inflate_codes_free OF((
-+ inflate_codes_statef *,
-+ z_streamp ));
-+
-+/* --- infcodes.h */
-+
-+/* +++ infutil.h */
-+/* infutil.h -- types and macros common to blocks and codes
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* WARNING: this file should *not* be used by applications. It is
-+ part of the implementation of the compression library and is
-+ subject to change. Applications should only use zlib.h.
-+ */
-+
-+#ifndef _INFUTIL_H
-+#define _INFUTIL_H
-+
-+typedef enum {
-+ TYPE, /* get type bits (3, including end bit) */
-+ LENS, /* get lengths for stored */
-+ STORED, /* processing stored block */
-+ TABLE, /* get table lengths */
-+ BTREE, /* get bit lengths tree for a dynamic block */
-+ DTREE, /* get length, distance trees for a dynamic block */
-+ CODES, /* processing fixed or dynamic block */
-+ DRY, /* output remaining window bytes */
-+ DONEB, /* finished last block, done */
-+ BADB} /* got a data error--stuck here */
-+inflate_block_mode;
-+
-+/* inflate blocks semi-private state */
-+struct inflate_blocks_state {
-+
-+ /* mode */
-+ inflate_block_mode mode; /* current inflate_block mode */
-+
-+ /* mode dependent information */
-+ union {
-+ uInt left; /* if STORED, bytes left to copy */
-+ struct {
-+ uInt table; /* table lengths (14 bits) */
-+ uInt index; /* index into blens (or border) */
-+ uIntf *blens; /* bit lengths of codes */
-+ uInt bb; /* bit length tree depth */
-+ inflate_huft *tb; /* bit length decoding tree */
-+ } trees; /* if DTREE, decoding info for trees */
-+ struct {
-+ inflate_huft *tl;
-+ inflate_huft *td; /* trees to free */
-+ inflate_codes_statef
-+ *codes;
-+ } decode; /* if CODES, current state */
-+ } sub; /* submode */
-+ uInt last; /* true if this block is the last block */
-+
-+ /* mode independent information */
-+ uInt bitk; /* bits in bit buffer */
-+ uLong bitb; /* bit buffer */
-+ Bytef *window; /* sliding window */
-+ Bytef *end; /* one byte after sliding window */
-+ Bytef *read; /* window read pointer */
-+ Bytef *write; /* window write pointer */
-+ check_func checkfn; /* check function */
-+ uLong check; /* check on output */
-+
-+};
-+
-+
-+/* defines for inflate input/output */
-+/* update pointers and return */
-+#define UPDBITS {s->bitb=b;s->bitk=k;}
-+#define UPDIN {z->avail_in=n;z->total_in+=p-z->next_in;z->next_in=p;}
-+#define UPDOUT {s->write=q;}
-+#define UPDATE {UPDBITS UPDIN UPDOUT}
-+#define LEAVE {UPDATE return inflate_flush(s,z,r);}
-+/* get bytes and bits */
-+#define LOADIN {p=z->next_in;n=z->avail_in;b=s->bitb;k=s->bitk;}
-+#define NEEDBYTE {if(n)r=Z_OK;else LEAVE}
-+#define NEXTBYTE (n--,*p++)
-+#define NEEDBITS(j) {while(k<(j)){NEEDBYTE;b|=((uLong)NEXTBYTE)<<k;k+=8;}}
-+#define DUMPBITS(j) {b>>=(j);k-=(j);}
-+/* output bytes */
-+#define WAVAIL (uInt)(q<s->read?s->read-q-1:s->end-q)
-+#define LOADOUT {q=s->write;m=(uInt)WAVAIL;}
-+#define WWRAP {if(q==s->end&&s->read!=s->window){q=s->window;m=(uInt)WAVAIL;}}
-+#define FLUSH {UPDOUT r=inflate_flush(s,z,r); LOADOUT}
-+#define NEEDOUT {if(m==0){WWRAP if(m==0){FLUSH WWRAP if(m==0) LEAVE}}r=Z_OK;}
-+#define OUTBYTE(a) {*q++=(Byte)(a);m--;}
-+/* load local pointers */
-+#define LOAD {LOADIN LOADOUT}
-+
-+/* masks for lower bits (size given to avoid silly warnings with Visual C++) */
-+extern uInt inflate_mask[17];
-+
-+/* copy as much as possible from the sliding window to the output area */
-+extern int inflate_flush OF((
-+ inflate_blocks_statef *,
-+ z_streamp ,
-+ int));
-+
-+#ifndef NO_DUMMY_DECL
-+struct internal_state {int dummy;}; /* for buggy compilers */
-+#endif
-+
-+#endif
-+/* --- infutil.h */
-+
-+#ifndef NO_DUMMY_DECL
-+struct inflate_codes_state {int dummy;}; /* for buggy compilers */
-+#endif
-+
-+/* Table for deflate from PKZIP's appnote.txt. */
-+local const uInt border[] = { /* Order of the bit length code lengths */
-+ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
-+
-+/*
-+ Notes beyond the 1.93a appnote.txt:
-+
-+ 1. Distance pointers never point before the beginning of the output
-+ stream.
-+ 2. Distance pointers can point back across blocks, up to 32k away.
-+ 3. There is an implied maximum of 7 bits for the bit length table and
-+ 15 bits for the actual data.
-+ 4. If only one code exists, then it is encoded using one bit. (Zero
-+ would be more efficient, but perhaps a little confusing.) If two
-+ codes exist, they are coded using one bit each (0 and 1).
-+ 5. There is no way of sending zero distance codes--a dummy must be
-+ sent if there are none. (History: a pre 2.0 version of PKZIP would
-+ store blocks with no distance codes, but this was discovered to be
-+ too harsh a criterion.) Valid only for 1.93a. 2.04c does allow
-+ zero distance codes, which is sent as one code of zero bits in
-+ length.
-+ 6. There are up to 286 literal/length codes. Code 256 represents the
-+ end-of-block. Note however that the static length tree defines
-+ 288 codes just to fill out the Huffman codes. Codes 286 and 287
-+ cannot be used though, since there is no length base or extra bits
-+ defined for them. Similarily, there are up to 30 distance codes.
-+ However, static trees define 32 codes (all 5 bits) to fill out the
-+ Huffman codes, but the last two had better not show up in the data.
-+ 7. Unzip can check dynamic Huffman blocks for complete code sets.
-+ The exception is that a single code would not be complete (see #4).
-+ 8. The five bits following the block type is really the number of
-+ literal codes sent minus 257.
-+ 9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits
-+ (1+6+6). Therefore, to output three times the length, you output
-+ three codes (1+1+1), whereas to output four times the same length,
-+ you only need two codes (1+3). Hmm.
-+ 10. In the tree reconstruction algorithm, Code = Code + Increment
-+ only if BitLength(i) is not zero. (Pretty obvious.)
-+ 11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19)
-+ 12. Note: length code 284 can represent 227-258, but length code 285
-+ really is 258. The last length deserves its own, short code
-+ since it gets used a lot in very redundant files. The length
-+ 258 is special since 258 - 3 (the min match length) is 255.
-+ 13. The literal/length and distance code bit lengths are read as a
-+ single stream of lengths. It is possible (and advantageous) for
-+ a repeat code (16, 17, or 18) to go across the boundary between
-+ the two sets of lengths.
-+ */
-+
-+
-+void inflate_blocks_reset(s, z, c)
-+inflate_blocks_statef *s;
-+z_streamp z;
-+uLongf *c;
-+{
-+ if (s->checkfn != Z_NULL)
-+ *c = s->check;
-+ if (s->mode == BTREE || s->mode == DTREE)
-+ ZFREE(z, s->sub.trees.blens);
-+ if (s->mode == CODES)
-+ {
-+ inflate_codes_free(s->sub.decode.codes, z);
-+ inflate_trees_free(s->sub.decode.td, z);
-+ inflate_trees_free(s->sub.decode.tl, z);
-+ }
-+ s->mode = TYPE;
-+ s->bitk = 0;
-+ s->bitb = 0;
-+ s->read = s->write = s->window;
-+ if (s->checkfn != Z_NULL)
-+ z->adler = s->check = (*s->checkfn)(0L, Z_NULL, 0);
-+ Trace((stderr, "inflate: blocks reset\n"));
-+}
-+
-+
-+inflate_blocks_statef *inflate_blocks_new(z, c, w)
-+z_streamp z;
-+check_func c;
-+uInt w;
-+{
-+ inflate_blocks_statef *s;
-+
-+ if ((s = (inflate_blocks_statef *)ZALLOC
-+ (z,1,sizeof(struct inflate_blocks_state))) == Z_NULL)
-+ return s;
-+ if ((s->window = (Bytef *)ZALLOC(z, 1, w)) == Z_NULL)
-+ {
-+ ZFREE(z, s);
-+ return Z_NULL;
-+ }
-+ s->end = s->window + w;
-+ s->checkfn = c;
-+ s->mode = TYPE;
-+ Trace((stderr, "inflate: blocks allocated\n"));
-+ inflate_blocks_reset(s, z, &s->check);
-+ return s;
-+}
-+
-+
-+#ifdef DEBUG_ZLIB
-+ extern uInt inflate_hufts;
-+#endif
-+int inflate_blocks(s, z, r)
-+inflate_blocks_statef *s;
-+z_streamp z;
-+int r;
-+{
-+ uInt t; /* temporary storage */
-+ uLong b; /* bit buffer */
-+ uInt k; /* bits in bit buffer */
-+ Bytef *p; /* input data pointer */
-+ uInt n; /* bytes available there */
-+ Bytef *q; /* output window write pointer */
-+ uInt m; /* bytes to end of window or read pointer */
-+
-+ /* copy input/output information to locals (UPDATE macro restores) */
-+ LOAD
-+
-+ /* process input based on current state */
-+ while (1) switch (s->mode)
-+ {
-+ case TYPE:
-+ NEEDBITS(3)
-+ t = (uInt)b & 7;
-+ s->last = t & 1;
-+ switch (t >> 1)
-+ {
-+ case 0: /* stored */
-+ Trace((stderr, "inflate: stored block%s\n",
-+ s->last ? " (last)" : ""));
-+ DUMPBITS(3)
-+ t = k & 7; /* go to byte boundary */
-+ DUMPBITS(t)
-+ s->mode = LENS; /* get length of stored block */
-+ break;
-+ case 1: /* fixed */
-+ Trace((stderr, "inflate: fixed codes block%s\n",
-+ s->last ? " (last)" : ""));
-+ {
-+ uInt bl, bd;
-+ inflate_huft *tl, *td;
-+
-+ inflate_trees_fixed(&bl, &bd, &tl, &td);
-+ s->sub.decode.codes = inflate_codes_new(bl, bd, tl, td, z);
-+ if (s->sub.decode.codes == Z_NULL)
-+ {
-+ r = Z_MEM_ERROR;
-+ LEAVE
-+ }
-+ s->sub.decode.tl = Z_NULL; /* don't try to free these */
-+ s->sub.decode.td = Z_NULL;
-+ }
-+ DUMPBITS(3)
-+ s->mode = CODES;
-+ break;
-+ case 2: /* dynamic */
-+ Trace((stderr, "inflate: dynamic codes block%s\n",
-+ s->last ? " (last)" : ""));
-+ DUMPBITS(3)
-+ s->mode = TABLE;
-+ break;
-+ case 3: /* illegal */
-+ DUMPBITS(3)
-+ s->mode = BADB;
-+ z->msg = (char*)"invalid block type";
-+ r = Z_DATA_ERROR;
-+ LEAVE
-+ }
-+ break;
-+ case LENS:
-+ NEEDBITS(32)
-+ if ((((~b) >> 16) & 0xffff) != (b & 0xffff))
-+ {
-+ s->mode = BADB;
-+ z->msg = (char*)"invalid stored block lengths";
-+ r = Z_DATA_ERROR;
-+ LEAVE
-+ }
-+ s->sub.left = (uInt)b & 0xffff;
-+ b = k = 0; /* dump bits */
-+ Tracev((stderr, "inflate: stored length %u\n", s->sub.left));
-+ s->mode = s->sub.left ? STORED : (s->last ? DRY : TYPE);
-+ break;
-+ case STORED:
-+ if (n == 0)
-+ LEAVE
-+ NEEDOUT
-+ t = s->sub.left;
-+ if (t > n) t = n;
-+ if (t > m) t = m;
-+ zmemcpy(q, p, t);
-+ p += t; n -= t;
-+ q += t; m -= t;
-+ if ((s->sub.left -= t) != 0)
-+ break;
-+ Tracev((stderr, "inflate: stored end, %lu total out\n",
-+ z->total_out + (q >= s->read ? q - s->read :
-+ (s->end - s->read) + (q - s->window))));
-+ s->mode = s->last ? DRY : TYPE;
-+ break;
-+ case TABLE:
-+ NEEDBITS(14)
-+ s->sub.trees.table = t = (uInt)b & 0x3fff;
-+#ifndef PKZIP_BUG_WORKAROUND
-+ if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29)
-+ {
-+ s->mode = BADB;
-+ z->msg = (char*)"too many length or distance symbols";
-+ r = Z_DATA_ERROR;
-+ LEAVE
-+ }
-+#endif
-+ t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f);
-+ if (t < 19)
-+ t = 19;
-+ if ((s->sub.trees.blens = (uIntf*)ZALLOC(z, t, sizeof(uInt))) == Z_NULL)
-+ {
-+ r = Z_MEM_ERROR;
-+ LEAVE
-+ }
-+ DUMPBITS(14)
-+ s->sub.trees.index = 0;
-+ Tracev((stderr, "inflate: table sizes ok\n"));
-+ s->mode = BTREE;
-+ case BTREE:
-+ while (s->sub.trees.index < 4 + (s->sub.trees.table >> 10))
-+ {
-+ NEEDBITS(3)
-+ s->sub.trees.blens[border[s->sub.trees.index++]] = (uInt)b & 7;
-+ DUMPBITS(3)
-+ }
-+ while (s->sub.trees.index < 19)
-+ s->sub.trees.blens[border[s->sub.trees.index++]] = 0;
-+ s->sub.trees.bb = 7;
-+ t = inflate_trees_bits(s->sub.trees.blens, &s->sub.trees.bb,
-+ &s->sub.trees.tb, z);
-+ if (t != Z_OK)
-+ {
-+ r = t;
-+ if (r == Z_DATA_ERROR)
-+ {
-+ ZFREE(z, s->sub.trees.blens);
-+ s->mode = BADB;
-+ }
-+ LEAVE
-+ }
-+ s->sub.trees.index = 0;
-+ Tracev((stderr, "inflate: bits tree ok\n"));
-+ s->mode = DTREE;
-+ case DTREE:
-+ while (t = s->sub.trees.table,
-+ s->sub.trees.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))
-+ {
-+ inflate_huft *h;
-+ uInt i, j, c;
-+
-+ t = s->sub.trees.bb;
-+ NEEDBITS(t)
-+ h = s->sub.trees.tb + ((uInt)b & inflate_mask[t]);
-+ t = h->word.what.Bits;
-+ c = h->more.Base;
-+ if (c < 16)
-+ {
-+ DUMPBITS(t)
-+ s->sub.trees.blens[s->sub.trees.index++] = c;
-+ }
-+ else /* c == 16..18 */
-+ {
-+ i = c == 18 ? 7 : c - 14;
-+ j = c == 18 ? 11 : 3;
-+ NEEDBITS(t + i)
-+ DUMPBITS(t)
-+ j += (uInt)b & inflate_mask[i];
-+ DUMPBITS(i)
-+ i = s->sub.trees.index;
-+ t = s->sub.trees.table;
-+ if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) ||
-+ (c == 16 && i < 1))
-+ {
-+ inflate_trees_free(s->sub.trees.tb, z);
-+ ZFREE(z, s->sub.trees.blens);
-+ s->mode = BADB;
-+ z->msg = (char*)"invalid bit length repeat";
-+ r = Z_DATA_ERROR;
-+ LEAVE
-+ }
-+ c = c == 16 ? s->sub.trees.blens[i - 1] : 0;
-+ do {
-+ s->sub.trees.blens[i++] = c;
-+ } while (--j);
-+ s->sub.trees.index = i;
-+ }
-+ }
-+ inflate_trees_free(s->sub.trees.tb, z);
-+ s->sub.trees.tb = Z_NULL;
-+ {
-+ uInt bl, bd;
-+ inflate_huft *tl, *td;
-+ inflate_codes_statef *c;
-+
-+ bl = 9; /* must be <= 9 for lookahead assumptions */
-+ bd = 6; /* must be <= 9 for lookahead assumptions */
-+ t = s->sub.trees.table;
-+#ifdef DEBUG_ZLIB
-+ inflate_hufts = 0;
-+#endif
-+ t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f),
-+ s->sub.trees.blens, &bl, &bd, &tl, &td, z);
-+ if (t != Z_OK)
-+ {
-+ if (t == (uInt)Z_DATA_ERROR)
-+ {
-+ ZFREE(z, s->sub.trees.blens);
-+ s->mode = BADB;
-+ }
-+ r = t;
-+ LEAVE
-+ }
-+ Tracev((stderr, "inflate: trees ok, %d * %d bytes used\n",
-+ inflate_hufts, sizeof(inflate_huft)));
-+ if ((c = inflate_codes_new(bl, bd, tl, td, z)) == Z_NULL)
-+ {
-+ inflate_trees_free(td, z);
-+ inflate_trees_free(tl, z);
-+ r = Z_MEM_ERROR;
-+ LEAVE
-+ }
-+ ZFREE(z, s->sub.trees.blens);
-+ s->sub.decode.codes = c;
-+ s->sub.decode.tl = tl;
-+ s->sub.decode.td = td;
-+ }
-+ s->mode = CODES;
-+ case CODES:
-+ UPDATE
-+ if ((r = inflate_codes(s, z, r)) != Z_STREAM_END)
-+ return inflate_flush(s, z, r);
-+ r = Z_OK;
-+ inflate_codes_free(s->sub.decode.codes, z);
-+ inflate_trees_free(s->sub.decode.td, z);
-+ inflate_trees_free(s->sub.decode.tl, z);
-+ LOAD
-+ Tracev((stderr, "inflate: codes end, %lu total out\n",
-+ z->total_out + (q >= s->read ? q - s->read :
-+ (s->end - s->read) + (q - s->window))));
-+ if (!s->last)
-+ {
-+ s->mode = TYPE;
-+ break;
-+ }
-+ if (k > 7) /* return unused byte, if any */
-+ {
-+ Assert(k < 16, "inflate_codes grabbed too many bytes")
-+ k -= 8;
-+ n++;
-+ p--; /* can always return one */
-+ }
-+ s->mode = DRY;
-+ case DRY:
-+ FLUSH
-+ if (s->read != s->write)
-+ LEAVE
-+ s->mode = DONEB;
-+ case DONEB:
-+ r = Z_STREAM_END;
-+ LEAVE
-+ case BADB:
-+ r = Z_DATA_ERROR;
-+ LEAVE
-+ default:
-+ r = Z_STREAM_ERROR;
-+ LEAVE
-+ }
-+}
-+
-+
-+int inflate_blocks_free(s, z, c)
-+inflate_blocks_statef *s;
-+z_streamp z;
-+uLongf *c;
-+{
-+ inflate_blocks_reset(s, z, c);
-+ ZFREE(z, s->window);
-+ ZFREE(z, s);
-+ Trace((stderr, "inflate: blocks freed\n"));
-+ return Z_OK;
-+}
-+
-+
-+void inflate_set_dictionary(s, d, n)
-+inflate_blocks_statef *s;
-+const Bytef *d;
-+uInt n;
-+{
-+ zmemcpy((charf *)s->window, d, n);
-+ s->read = s->write = s->window + n;
-+}
-+
-+/*
-+ * This subroutine adds the data at next_in/avail_in to the output history
-+ * without performing any output. The output buffer must be "caught up";
-+ * i.e. no pending output (hence s->read equals s->write), and the state must
-+ * be BLOCKS (i.e. we should be willing to see the start of a series of
-+ * BLOCKS). On exit, the output will also be caught up, and the checksum
-+ * will have been updated if need be.
-+ */
-+int inflate_addhistory(s, z)
-+inflate_blocks_statef *s;
-+z_stream *z;
-+{
-+ uLong b; /* bit buffer */ /* NOT USED HERE */
-+ uInt k; /* bits in bit buffer */ /* NOT USED HERE */
-+ uInt t; /* temporary storage */
-+ Bytef *p; /* input data pointer */
-+ uInt n; /* bytes available there */
-+ Bytef *q; /* output window write pointer */
-+ uInt m; /* bytes to end of window or read pointer */
-+
-+ if (s->read != s->write)
-+ return Z_STREAM_ERROR;
-+ if (s->mode != TYPE)
-+ return Z_DATA_ERROR;
-+
-+ /* we're ready to rock */
-+ LOAD
-+ /* while there is input ready, copy to output buffer, moving
-+ * pointers as needed.
-+ */
-+ while (n) {
-+ t = n; /* how many to do */
-+ /* is there room until end of buffer? */
-+ if (t > m) t = m;
-+ /* update check information */
-+ if (s->checkfn != Z_NULL)
-+ s->check = (*s->checkfn)(s->check, q, t);
-+ zmemcpy(q, p, t);
-+ q += t;
-+ p += t;
-+ n -= t;
-+ z->total_out += t;
-+ s->read = q; /* drag read pointer forward */
-+/* WWRAP */ /* expand WWRAP macro by hand to handle s->read */
-+ if (q == s->end) {
-+ s->read = q = s->window;
-+ m = WAVAIL;
-+ }
-+ }
-+ UPDATE
-+ return Z_OK;
-+}
-+
-+
-+/*
-+ * At the end of a Deflate-compressed PPP packet, we expect to have seen
-+ * a `stored' block type value but not the (zero) length bytes.
-+ */
-+int inflate_packet_flush(s)
-+ inflate_blocks_statef *s;
-+{
-+ if (s->mode != LENS)
-+ return Z_DATA_ERROR;
-+ s->mode = TYPE;
-+ return Z_OK;
-+}
-+/* --- infblock.c */
-+
-+/* +++ inftrees.c */
-+/* inftrees.c -- generate Huffman trees for efficient decoding
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* #include "zutil.h" */
-+/* #include "inftrees.h" */
-+
-+char inflate_copyright[] = " inflate 1.0.4 Copyright 1995-1996 Mark Adler ";
-+/*
-+ If you use the zlib library in a product, an acknowledgment is welcome
-+ in the documentation of your product. If for some reason you cannot
-+ include such an acknowledgment, I would appreciate that you keep this
-+ copyright string in the executable of your product.
-+ */
-+
-+#ifndef NO_DUMMY_DECL
-+struct internal_state {int dummy;}; /* for buggy compilers */
-+#endif
-+
-+/* simplify the use of the inflate_huft type with some defines */
-+#define base more.Base
-+#define next more.Next
-+#define exop word.what.Exop
-+#define bits word.what.Bits
-+
-+
-+local int huft_build OF((
-+ uIntf *, /* code lengths in bits */
-+ uInt, /* number of codes */
-+ uInt, /* number of "simple" codes */
-+ const uIntf *, /* list of base values for non-simple codes */
-+ const uIntf *, /* list of extra bits for non-simple codes */
-+ inflate_huft * FAR*,/* result: starting table */
-+ uIntf *, /* maximum lookup bits (returns actual) */
-+ z_streamp )); /* for zalloc function */
-+
-+local voidpf falloc OF((
-+ voidpf, /* opaque pointer (not used) */
-+ uInt, /* number of items */
-+ uInt)); /* size of item */
-+
-+/* Tables for deflate from PKZIP's appnote.txt. */
-+local const uInt cplens[31] = { /* Copy lengths for literal codes 257..285 */
-+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
-+ 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
-+ /* see note #13 above about 258 */
-+local const uInt cplext[31] = { /* Extra bits for literal codes 257..285 */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
-+ 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112}; /* 112==invalid */
-+local const uInt cpdist[30] = { /* Copy offsets for distance codes 0..29 */
-+ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
-+ 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
-+ 8193, 12289, 16385, 24577};
-+local const uInt cpdext[30] = { /* Extra bits for distance codes */
-+ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
-+ 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
-+ 12, 12, 13, 13};
-+
-+/*
-+ Huffman code decoding is performed using a multi-level table lookup.
-+ The fastest way to decode is to simply build a lookup table whose
-+ size is determined by the longest code. However, the time it takes
-+ to build this table can also be a factor if the data being decoded
-+ is not very long. The most common codes are necessarily the
-+ shortest codes, so those codes dominate the decoding time, and hence
-+ the speed. The idea is you can have a shorter table that decodes the
-+ shorter, more probable codes, and then point to subsidiary tables for
-+ the longer codes. The time it costs to decode the longer codes is
-+ then traded against the time it takes to make longer tables.
-+
-+ This results of this trade are in the variables lbits and dbits
-+ below. lbits is the number of bits the first level table for literal/
-+ length codes can decode in one step, and dbits is the same thing for
-+ the distance codes. Subsequent tables are also less than or equal to
-+ those sizes. These values may be adjusted either when all of the
-+ codes are shorter than that, in which case the longest code length in
-+ bits is used, or when the shortest code is *longer* than the requested
-+ table size, in which case the length of the shortest code in bits is
-+ used.
-+
-+ There are two different values for the two tables, since they code a
-+ different number of possibilities each. The literal/length table
-+ codes 286 possible values, or in a flat code, a little over eight
-+ bits. The distance table codes 30 possible values, or a little less
-+ than five bits, flat. The optimum values for speed end up being
-+ about one bit more than those, so lbits is 8+1 and dbits is 5+1.
-+ The optimum values may differ though from machine to machine, and
-+ possibly even between compilers. Your mileage may vary.
-+ */
-+
-+
-+/* If BMAX needs to be larger than 16, then h and x[] should be uLong. */
-+#define BMAX 15 /* maximum bit length of any code */
-+#define N_MAX 288 /* maximum number of codes in any set */
-+
-+#ifdef DEBUG_ZLIB
-+ uInt inflate_hufts;
-+#endif
-+
-+local int huft_build(b, n, s, d, e, t, m, zs)
-+uIntf *b; /* code lengths in bits (all assumed <= BMAX) */
-+uInt n; /* number of codes (assumed <= N_MAX) */
-+uInt s; /* number of simple-valued codes (0..s-1) */
-+const uIntf *d; /* list of base values for non-simple codes */
-+const uIntf *e; /* list of extra bits for non-simple codes */
-+inflate_huft * FAR *t; /* result: starting table */
-+uIntf *m; /* maximum lookup bits, returns actual */
-+z_streamp zs; /* for zalloc function */
-+/* Given a list of code lengths and a maximum table size, make a set of
-+ tables to decode that set of codes. Return Z_OK on success, Z_BUF_ERROR
-+ if the given code set is incomplete (the tables are still built in this
-+ case), Z_DATA_ERROR if the input is invalid (an over-subscribed set of
-+ lengths), or Z_MEM_ERROR if not enough memory. */
-+{
-+
-+ uInt a; /* counter for codes of length k */
-+ uInt c[BMAX+1]; /* bit length count table */
-+ uInt f; /* i repeats in table every f entries */
-+ int g; /* maximum code length */
-+ int h; /* table level */
-+ register uInt i; /* counter, current code */
-+ register uInt j; /* counter */
-+ register int k; /* number of bits in current code */
-+ int l; /* bits per table (returned in m) */
-+ register uIntf *p; /* pointer into c[], b[], or v[] */
-+ inflate_huft *q; /* points to current table */
-+ struct inflate_huft_s r; /* table entry for structure assignment */
-+ inflate_huft *u[BMAX]; /* table stack */
-+ uInt v[N_MAX]; /* values in order of bit length */
-+ register int w; /* bits before this table == (l * h) */
-+ uInt x[BMAX+1]; /* bit offsets, then code stack */
-+ uIntf *xp; /* pointer into x */
-+ int y; /* number of dummy codes added */
-+ uInt z; /* number of entries in current table */
-+
-+
-+ /* Generate counts for each bit length */
-+ p = c;
-+#define C0 *p++ = 0;
-+#define C2 C0 C0 C0 C0
-+#define C4 C2 C2 C2 C2
-+ C4 /* clear c[]--assume BMAX+1 is 16 */
-+ p = b; i = n;
-+ do {
-+ c[*p++]++; /* assume all entries <= BMAX */
-+ } while (--i);
-+ if (c[0] == n) /* null input--all zero length codes */
-+ {
-+ *t = (inflate_huft *)Z_NULL;
-+ *m = 0;
-+ return Z_OK;
-+ }
-+
-+
-+ /* Find minimum and maximum length, bound *m by those */
-+ l = *m;
-+ for (j = 1; j <= BMAX; j++)
-+ if (c[j])
-+ break;
-+ k = j; /* minimum code length */
-+ if ((uInt)l < j)
-+ l = j;
-+ for (i = BMAX; i; i--)
-+ if (c[i])
-+ break;
-+ g = i; /* maximum code length */
-+ if ((uInt)l > i)
-+ l = i;
-+ *m = l;
-+
-+
-+ /* Adjust last length count to fill out codes, if needed */
-+ for (y = 1 << j; j < i; j++, y <<= 1)
-+ if ((y -= c[j]) < 0)
-+ return Z_DATA_ERROR;
-+ if ((y -= c[i]) < 0)
-+ return Z_DATA_ERROR;
-+ c[i] += y;
-+
-+
-+ /* Generate starting offsets into the value table for each length */
-+ x[1] = j = 0;
-+ p = c + 1; xp = x + 2;
-+ while (--i) { /* note that i == g from above */
-+ *xp++ = (j += *p++);
-+ }
-+
-+
-+ /* Make a table of values in order of bit lengths */
-+ p = b; i = 0;
-+ do {
-+ if ((j = *p++) != 0)
-+ v[x[j]++] = i;
-+ } while (++i < n);
-+ n = x[g]; /* set n to length of v */
-+
-+
-+ /* Generate the Huffman codes and for each, make the table entries */
-+ x[0] = i = 0; /* first Huffman code is zero */
-+ p = v; /* grab values in bit order */
-+ h = -1; /* no tables yet--level -1 */
-+ w = -l; /* bits decoded == (l * h) */
-+ u[0] = (inflate_huft *)Z_NULL; /* just to keep compilers happy */
-+ q = (inflate_huft *)Z_NULL; /* ditto */
-+ z = 0; /* ditto */
-+
-+ /* go through the bit lengths (k already is bits in shortest code) */
-+ for (; k <= g; k++)
-+ {
-+ a = c[k];
-+ while (a--)
-+ {
-+ /* here i is the Huffman code of length k bits for value *p */
-+ /* make tables up to required level */
-+ while (k > w + l)
-+ {
-+ h++;
-+ w += l; /* previous table always l bits */
-+
-+ /* compute minimum size table less than or equal to l bits */
-+ z = g - w;
-+ z = z > (uInt)l ? l : z; /* table size upper limit */
-+ if ((f = 1 << (j = k - w)) > a + 1) /* try a k-w bit table */
-+ { /* too few codes for k-w bit table */
-+ f -= a + 1; /* deduct codes from patterns left */
-+ xp = c + k;
-+ if (j < z)
-+ while (++j < z) /* try smaller tables up to z bits */
-+ {
-+ if ((f <<= 1) <= *++xp)
-+ break; /* enough codes to use up j bits */
-+ f -= *xp; /* else deduct codes from patterns */
-+ }
-+ }
-+ z = 1 << j; /* table entries for j-bit table */
-+
-+ /* allocate and link in new table */
-+ if ((q = (inflate_huft *)ZALLOC
-+ (zs,z + 1,sizeof(inflate_huft))) == Z_NULL)
-+ {
-+ if (h)
-+ inflate_trees_free(u[0], zs);
-+ return Z_MEM_ERROR; /* not enough memory */
-+ }
-+#ifdef DEBUG_ZLIB
-+ inflate_hufts += z + 1;
-+#endif
-+ *t = q + 1; /* link to list for huft_free() */
-+ *(t = &(q->next)) = Z_NULL;
-+ u[h] = ++q; /* table starts after link */
-+
-+ /* connect to last table, if there is one */
-+ if (h)
-+ {
-+ x[h] = i; /* save pattern for backing up */
-+ r.bits = (Byte)l; /* bits to dump before this table */
-+ r.exop = (Byte)j; /* bits in this table */
-+ r.next = q; /* pointer to this table */
-+ j = i >> (w - l); /* (get around Turbo C bug) */
-+ u[h-1][j] = r; /* connect to last table */
-+ }
-+ }
-+
-+ /* set up table entry in r */
-+ r.bits = (Byte)(k - w);
-+ if (p >= v + n)
-+ r.exop = 128 + 64; /* out of values--invalid code */
-+ else if (*p < s)
-+ {
-+ r.exop = (Byte)(*p < 256 ? 0 : 32 + 64); /* 256 is end-of-block */
-+ r.base = *p++; /* simple code is just the value */
-+ }
-+ else
-+ {
-+ r.exop = (Byte)(e[*p - s] + 16 + 64);/* non-simple--look up in lists */
-+ r.base = d[*p++ - s];
-+ }
-+
-+ /* fill code-like entries with r */
-+ f = 1 << (k - w);
-+ for (j = i >> w; j < z; j += f)
-+ q[j] = r;
-+
-+ /* backwards increment the k-bit code i */
-+ for (j = 1 << (k - 1); i & j; j >>= 1)
-+ i ^= j;
-+ i ^= j;
-+
-+ /* backup over finished tables */
-+ while ((i & ((1 << w) - 1)) != x[h])
-+ {
-+ h--; /* don't need to update q */
-+ w -= l;
-+ }
-+ }
-+ }
-+
-+
-+ /* Return Z_BUF_ERROR if we were given an incomplete table */
-+ return y != 0 && g != 1 ? Z_BUF_ERROR : Z_OK;
-+}
-+
-+
-+int inflate_trees_bits(c, bb, tb, z)
-+uIntf *c; /* 19 code lengths */
-+uIntf *bb; /* bits tree desired/actual depth */
-+inflate_huft * FAR *tb; /* bits tree result */
-+z_streamp z; /* for zfree function */
-+{
-+ int r;
-+
-+ r = huft_build(c, 19, 19, (uIntf*)Z_NULL, (uIntf*)Z_NULL, tb, bb, z);
-+ if (r == Z_DATA_ERROR)
-+ z->msg = (char*)"oversubscribed dynamic bit lengths tree";
-+ else if (r == Z_BUF_ERROR || *bb == 0)
-+ {
-+ inflate_trees_free(*tb, z);
-+ z->msg = (char*)"incomplete dynamic bit lengths tree";
-+ r = Z_DATA_ERROR;
-+ }
-+ return r;
-+}
-+
-+
-+int inflate_trees_dynamic(nl, nd, c, bl, bd, tl, td, z)
-+uInt nl; /* number of literal/length codes */
-+uInt nd; /* number of distance codes */
-+uIntf *c; /* that many (total) code lengths */
-+uIntf *bl; /* literal desired/actual bit depth */
-+uIntf *bd; /* distance desired/actual bit depth */
-+inflate_huft * FAR *tl; /* literal/length tree result */
-+inflate_huft * FAR *td; /* distance tree result */
-+z_streamp z; /* for zfree function */
-+{
-+ int r;
-+
-+ /* build literal/length tree */
-+ r = huft_build(c, nl, 257, cplens, cplext, tl, bl, z);
-+ if (r != Z_OK || *bl == 0)
-+ {
-+ if (r == Z_DATA_ERROR)
-+ z->msg = (char*)"oversubscribed literal/length tree";
-+ else if (r != Z_MEM_ERROR)
-+ {
-+ inflate_trees_free(*tl, z);
-+ z->msg = (char*)"incomplete literal/length tree";
-+ r = Z_DATA_ERROR;
-+ }
-+ return r;
-+ }
-+
-+ /* build distance tree */
-+ r = huft_build(c + nl, nd, 0, cpdist, cpdext, td, bd, z);
-+ if (r != Z_OK || (*bd == 0 && nl > 257))
-+ {
-+ if (r == Z_DATA_ERROR)
-+ z->msg = (char*)"oversubscribed distance tree";
-+ else if (r == Z_BUF_ERROR) {
-+#ifdef PKZIP_BUG_WORKAROUND
-+ r = Z_OK;
-+ }
-+#else
-+ inflate_trees_free(*td, z);
-+ z->msg = (char*)"incomplete distance tree";
-+ r = Z_DATA_ERROR;
-+ }
-+ else if (r != Z_MEM_ERROR)
-+ {
-+ z->msg = (char*)"empty distance tree with lengths";
-+ r = Z_DATA_ERROR;
-+ }
-+ inflate_trees_free(*tl, z);
-+ return r;
-+#endif
-+ }
-+
-+ /* done */
-+ return Z_OK;
-+}
-+
-+
-+/* build fixed tables only once--keep them here */
-+local int fixed_built = 0;
-+#define FIXEDH 530 /* number of hufts used by fixed tables */
-+local inflate_huft fixed_mem[FIXEDH];
-+local uInt fixed_bl;
-+local uInt fixed_bd;
-+local inflate_huft *fixed_tl;
-+local inflate_huft *fixed_td;
-+
-+
-+local voidpf falloc(q, n, s)
-+voidpf q; /* opaque pointer */
-+uInt n; /* number of items */
-+uInt s; /* size of item */
-+{
-+ Assert(s == sizeof(inflate_huft) && n <= *(intf *)q,
-+ "inflate_trees falloc overflow");
-+ *(intf *)q -= n+s-s; /* s-s to avoid warning */
-+ return (voidpf)(fixed_mem + *(intf *)q);
-+}
-+
-+
-+int inflate_trees_fixed(bl, bd, tl, td)
-+uIntf *bl; /* literal desired/actual bit depth */
-+uIntf *bd; /* distance desired/actual bit depth */
-+inflate_huft * FAR *tl; /* literal/length tree result */
-+inflate_huft * FAR *td; /* distance tree result */
-+{
-+ /* build fixed tables if not already (multiple overlapped executions ok) */
-+ if (!fixed_built)
-+ {
-+ int k; /* temporary variable */
-+ unsigned c[288]; /* length list for huft_build */
-+ z_stream z; /* for falloc function */
-+ int f = FIXEDH; /* number of hufts left in fixed_mem */
-+
-+ /* set up fake z_stream for memory routines */
-+ z.zalloc = falloc;
-+ z.zfree = Z_NULL;
-+ z.opaque = (voidpf)&f;
-+
-+ /* literal table */
-+ for (k = 0; k < 144; k++)
-+ c[k] = 8;
-+ for (; k < 256; k++)
-+ c[k] = 9;
-+ for (; k < 280; k++)
-+ c[k] = 7;
-+ for (; k < 288; k++)
-+ c[k] = 8;
-+ fixed_bl = 7;
-+ huft_build(c, 288, 257, cplens, cplext, &fixed_tl, &fixed_bl, &z);
-+
-+ /* distance table */
-+ for (k = 0; k < 30; k++)
-+ c[k] = 5;
-+ fixed_bd = 5;
-+ huft_build(c, 30, 0, cpdist, cpdext, &fixed_td, &fixed_bd, &z);
-+
-+ /* done */
-+ Assert(f == 0, "invalid build of fixed tables");
-+ fixed_built = 1;
-+ }
-+ *bl = fixed_bl;
-+ *bd = fixed_bd;
-+ *tl = fixed_tl;
-+ *td = fixed_td;
-+ return Z_OK;
-+}
-+
-+
-+int inflate_trees_free(t, z)
-+inflate_huft *t; /* table to free */
-+z_streamp z; /* for zfree function */
-+/* Free the malloc'ed tables built by huft_build(), which makes a linked
-+ list of the tables it made, with the links in a dummy first entry of
-+ each table. */
-+{
-+ register inflate_huft *p, *q, *r;
-+
-+ /* Reverse linked list */
-+ p = Z_NULL;
-+ q = t;
-+ while (q != Z_NULL)
-+ {
-+ r = (q - 1)->next;
-+ (q - 1)->next = p;
-+ p = q;
-+ q = r;
-+ }
-+ /* Go through linked list, freeing from the malloced (t[-1]) address. */
-+ while (p != Z_NULL)
-+ {
-+ q = (--p)->next;
-+ ZFREE(z,p);
-+ p = q;
-+ }
-+ return Z_OK;
-+}
-+/* --- inftrees.c */
-+
-+/* +++ infcodes.c */
-+/* infcodes.c -- process literals and length/distance pairs
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* #include "zutil.h" */
-+/* #include "inftrees.h" */
-+/* #include "infblock.h" */
-+/* #include "infcodes.h" */
-+/* #include "infutil.h" */
-+
-+/* +++ inffast.h */
-+/* inffast.h -- header to use inffast.c
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* WARNING: this file should *not* be used by applications. It is
-+ part of the implementation of the compression library and is
-+ subject to change. Applications should only use zlib.h.
-+ */
-+
-+extern int inflate_fast OF((
-+ uInt,
-+ uInt,
-+ inflate_huft *,
-+ inflate_huft *,
-+ inflate_blocks_statef *,
-+ z_streamp ));
-+/* --- inffast.h */
-+
-+/* simplify the use of the inflate_huft type with some defines */
-+#define base more.Base
-+#define next more.Next
-+#define exop word.what.Exop
-+#define bits word.what.Bits
-+
-+/* inflate codes private state */
-+struct inflate_codes_state {
-+
-+ /* mode */
-+ enum { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
-+ START, /* x: set up for LEN */
-+ LEN, /* i: get length/literal/eob next */
-+ LENEXT, /* i: getting length extra (have base) */
-+ DIST, /* i: get distance next */
-+ DISTEXT, /* i: getting distance extra */
-+ COPY, /* o: copying bytes in window, waiting for space */
-+ LIT, /* o: got literal, waiting for output space */
-+ WASH, /* o: got eob, possibly still output waiting */
-+ END, /* x: got eob and all data flushed */
-+ BADCODE} /* x: got error */
-+ mode; /* current inflate_codes mode */
-+
-+ /* mode dependent information */
-+ uInt len;
-+ union {
-+ struct {
-+ inflate_huft *tree; /* pointer into tree */
-+ uInt need; /* bits needed */
-+ } code; /* if LEN or DIST, where in tree */
-+ uInt lit; /* if LIT, literal */
-+ struct {
-+ uInt get; /* bits to get for extra */
-+ uInt dist; /* distance back to copy from */
-+ } copy; /* if EXT or COPY, where and how much */
-+ } sub; /* submode */
-+
-+ /* mode independent information */
-+ Byte lbits; /* ltree bits decoded per branch */
-+ Byte dbits; /* dtree bits decoder per branch */
-+ inflate_huft *ltree; /* literal/length/eob tree */
-+ inflate_huft *dtree; /* distance tree */
-+
-+};
-+
-+
-+inflate_codes_statef *inflate_codes_new(bl, bd, tl, td, z)
-+uInt bl, bd;
-+inflate_huft *tl;
-+inflate_huft *td; /* need separate declaration for Borland C++ */
-+z_streamp z;
-+{
-+ inflate_codes_statef *c;
-+
-+ if ((c = (inflate_codes_statef *)
-+ ZALLOC(z,1,sizeof(struct inflate_codes_state))) != Z_NULL)
-+ {
-+ c->mode = START;
-+ c->lbits = (Byte)bl;
-+ c->dbits = (Byte)bd;
-+ c->ltree = tl;
-+ c->dtree = td;
-+ Tracev((stderr, "inflate: codes new\n"));
-+ }
-+ return c;
-+}
-+
-+
-+int inflate_codes(s, z, r)
-+inflate_blocks_statef *s;
-+z_streamp z;
-+int r;
-+{
-+ uInt j; /* temporary storage */
-+ inflate_huft *t; /* temporary pointer */
-+ uInt e; /* extra bits or operation */
-+ uLong b; /* bit buffer */
-+ uInt k; /* bits in bit buffer */
-+ Bytef *p; /* input data pointer */
-+ uInt n; /* bytes available there */
-+ Bytef *q; /* output window write pointer */
-+ uInt m; /* bytes to end of window or read pointer */
-+ Bytef *f; /* pointer to copy strings from */
-+ inflate_codes_statef *c = s->sub.decode.codes; /* codes state */
-+
-+ /* copy input/output information to locals (UPDATE macro restores) */
-+ LOAD
-+
-+ /* process input and output based on current state */
-+ while (1) switch (c->mode)
-+ { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
-+ case START: /* x: set up for LEN */
-+#ifndef SLOW
-+ if (m >= 258 && n >= 10)
-+ {
-+ UPDATE
-+ r = inflate_fast(c->lbits, c->dbits, c->ltree, c->dtree, s, z);
-+ LOAD
-+ if (r != Z_OK)
-+ {
-+ c->mode = r == Z_STREAM_END ? WASH : BADCODE;
-+ break;
-+ }
-+ }
-+#endif /* !SLOW */
-+ c->sub.code.need = c->lbits;
-+ c->sub.code.tree = c->ltree;
-+ c->mode = LEN;
-+ case LEN: /* i: get length/literal/eob next */
-+ j = c->sub.code.need;
-+ NEEDBITS(j)
-+ t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
-+ DUMPBITS(t->bits)
-+ e = (uInt)(t->exop);
-+ if (e == 0) /* literal */
-+ {
-+ c->sub.lit = t->base;
-+ Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
-+ "inflate: literal '%c'\n" :
-+ "inflate: literal 0x%02x\n", t->base));
-+ c->mode = LIT;
-+ break;
-+ }
-+ if (e & 16) /* length */
-+ {
-+ c->sub.copy.get = e & 15;
-+ c->len = t->base;
-+ c->mode = LENEXT;
-+ break;
-+ }
-+ if ((e & 64) == 0) /* next table */
-+ {
-+ c->sub.code.need = e;
-+ c->sub.code.tree = t->next;
-+ break;
-+ }
-+ if (e & 32) /* end of block */
-+ {
-+ Tracevv((stderr, "inflate: end of block\n"));
-+ c->mode = WASH;
-+ break;
-+ }
-+ c->mode = BADCODE; /* invalid code */
-+ z->msg = (char*)"invalid literal/length code";
-+ r = Z_DATA_ERROR;
-+ LEAVE
-+ case LENEXT: /* i: getting length extra (have base) */
-+ j = c->sub.copy.get;
-+ NEEDBITS(j)
-+ c->len += (uInt)b & inflate_mask[j];
-+ DUMPBITS(j)
-+ c->sub.code.need = c->dbits;
-+ c->sub.code.tree = c->dtree;
-+ Tracevv((stderr, "inflate: length %u\n", c->len));
-+ c->mode = DIST;
-+ case DIST: /* i: get distance next */
-+ j = c->sub.code.need;
-+ NEEDBITS(j)
-+ t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
-+ DUMPBITS(t->bits)
-+ e = (uInt)(t->exop);
-+ if (e & 16) /* distance */
-+ {
-+ c->sub.copy.get = e & 15;
-+ c->sub.copy.dist = t->base;
-+ c->mode = DISTEXT;
-+ break;
-+ }
-+ if ((e & 64) == 0) /* next table */
-+ {
-+ c->sub.code.need = e;
-+ c->sub.code.tree = t->next;
-+ break;
-+ }
-+ c->mode = BADCODE; /* invalid code */
-+ z->msg = (char*)"invalid distance code";
-+ r = Z_DATA_ERROR;
-+ LEAVE
-+ case DISTEXT: /* i: getting distance extra */
-+ j = c->sub.copy.get;
-+ NEEDBITS(j)
-+ c->sub.copy.dist += (uInt)b & inflate_mask[j];
-+ DUMPBITS(j)
-+ Tracevv((stderr, "inflate: distance %u\n", c->sub.copy.dist));
-+ c->mode = COPY;
-+ case COPY: /* o: copying bytes in window, waiting for space */
-+#ifndef __TURBOC__ /* Turbo C bug for following expression */
-+ f = (uInt)(q - s->window) < c->sub.copy.dist ?
-+ s->end - (c->sub.copy.dist - (q - s->window)) :
-+ q - c->sub.copy.dist;
-+#else
-+ f = q - c->sub.copy.dist;
-+ if ((uInt)(q - s->window) < c->sub.copy.dist)
-+ f = s->end - (c->sub.copy.dist - (uInt)(q - s->window));
-+#endif
-+ while (c->len)
-+ {
-+ NEEDOUT
-+ OUTBYTE(*f++)
-+ if (f == s->end)
-+ f = s->window;
-+ c->len--;
-+ }
-+ c->mode = START;
-+ break;
-+ case LIT: /* o: got literal, waiting for output space */
-+ NEEDOUT
-+ OUTBYTE(c->sub.lit)
-+ c->mode = START;
-+ break;
-+ case WASH: /* o: got eob, possibly more output */
-+ FLUSH
-+ if (s->read != s->write)
-+ LEAVE
-+ c->mode = END;
-+ case END:
-+ r = Z_STREAM_END;
-+ LEAVE
-+ case BADCODE: /* x: got error */
-+ r = Z_DATA_ERROR;
-+ LEAVE
-+ default:
-+ r = Z_STREAM_ERROR;
-+ LEAVE
-+ }
-+}
-+
-+
-+void inflate_codes_free(c, z)
-+inflate_codes_statef *c;
-+z_streamp z;
-+{
-+ ZFREE(z, c);
-+ Tracev((stderr, "inflate: codes free\n"));
-+}
-+/* --- infcodes.c */
-+
-+/* +++ infutil.c */
-+/* inflate_util.c -- data and routines common to blocks and codes
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* #include "zutil.h" */
-+/* #include "infblock.h" */
-+/* #include "inftrees.h" */
-+/* #include "infcodes.h" */
-+/* #include "infutil.h" */
-+
-+#ifndef NO_DUMMY_DECL
-+struct inflate_codes_state {int dummy;}; /* for buggy compilers */
-+#endif
-+
-+/* And'ing with mask[n] masks the lower n bits */
-+uInt inflate_mask[17] = {
-+ 0x0000,
-+ 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
-+ 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
-+};
-+
-+
-+/* copy as much as possible from the sliding window to the output area */
-+int inflate_flush(s, z, r)
-+inflate_blocks_statef *s;
-+z_streamp z;
-+int r;
-+{
-+ uInt n;
-+ Bytef *p;
-+ Bytef *q;
-+
-+ /* local copies of source and destination pointers */
-+ p = z->next_out;
-+ q = s->read;
-+
-+ /* compute number of bytes to copy as far as end of window */
-+ n = (uInt)((q <= s->write ? s->write : s->end) - q);
-+ if (n > z->avail_out) n = z->avail_out;
-+ if (n && r == Z_BUF_ERROR) r = Z_OK;
-+
-+ /* update counters */
-+ z->avail_out -= n;
-+ z->total_out += n;
-+
-+ /* update check information */
-+ if (s->checkfn != Z_NULL)
-+ z->adler = s->check = (*s->checkfn)(s->check, q, n);
-+
-+ /* copy as far as end of window */
-+ if (p != Z_NULL) {
-+ zmemcpy(p, q, n);
-+ p += n;
-+ }
-+ q += n;
-+
-+ /* see if more to copy at beginning of window */
-+ if (q == s->end)
-+ {
-+ /* wrap pointers */
-+ q = s->window;
-+ if (s->write == s->end)
-+ s->write = s->window;
-+
-+ /* compute bytes to copy */
-+ n = (uInt)(s->write - q);
-+ if (n > z->avail_out) n = z->avail_out;
-+ if (n && r == Z_BUF_ERROR) r = Z_OK;
-+
-+ /* update counters */
-+ z->avail_out -= n;
-+ z->total_out += n;
-+
-+ /* update check information */
-+ if (s->checkfn != Z_NULL)
-+ z->adler = s->check = (*s->checkfn)(s->check, q, n);
-+
-+ /* copy */
-+ if (p != Z_NULL) {
-+ zmemcpy(p, q, n);
-+ p += n;
-+ }
-+ q += n;
-+ }
-+
-+ /* update pointers */
-+ z->next_out = p;
-+ s->read = q;
-+
-+ /* done */
-+ return r;
-+}
-+/* --- infutil.c */
-+
-+/* +++ inffast.c */
-+/* inffast.c -- process literals and length/distance pairs fast
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* #include "zutil.h" */
-+/* #include "inftrees.h" */
-+/* #include "infblock.h" */
-+/* #include "infcodes.h" */
-+/* #include "infutil.h" */
-+/* #include "inffast.h" */
-+
-+#ifndef NO_DUMMY_DECL
-+struct inflate_codes_state {int dummy;}; /* for buggy compilers */
-+#endif
-+
-+/* simplify the use of the inflate_huft type with some defines */
-+#define base more.Base
-+#define next more.Next
-+#define exop word.what.Exop
-+#define bits word.what.Bits
-+
-+/* macros for bit input with no checking and for returning unused bytes */
-+#define GRABBITS(j) {while(k<(j)){b|=((uLong)NEXTBYTE)<<k;k+=8;}}
-+#define UNGRAB {n+=(c=k>>3);p-=c;k&=7;}
-+
-+/* Called with number of bytes left to write in window at least 258
-+ (the maximum string length) and number of input bytes available
-+ at least ten. The ten bytes are six bytes for the longest length/
-+ distance pair plus four bytes for overloading the bit buffer. */
-+
-+int inflate_fast(bl, bd, tl, td, s, z)
-+uInt bl, bd;
-+inflate_huft *tl;
-+inflate_huft *td; /* need separate declaration for Borland C++ */
-+inflate_blocks_statef *s;
-+z_streamp z;
-+{
-+ inflate_huft *t; /* temporary pointer */
-+ uInt e; /* extra bits or operation */
-+ uLong b; /* bit buffer */
-+ uInt k; /* bits in bit buffer */
-+ Bytef *p; /* input data pointer */
-+ uInt n; /* bytes available there */
-+ Bytef *q; /* output window write pointer */
-+ uInt m; /* bytes to end of window or read pointer */
-+ uInt ml; /* mask for literal/length tree */
-+ uInt md; /* mask for distance tree */
-+ uInt c; /* bytes to copy */
-+ uInt d; /* distance back to copy from */
-+ Bytef *r; /* copy source pointer */
-+
-+ /* load input, output, bit values */
-+ LOAD
-+
-+ /* initialize masks */
-+ ml = inflate_mask[bl];
-+ md = inflate_mask[bd];
-+
-+ /* do until not enough input or output space for fast loop */
-+ do { /* assume called with m >= 258 && n >= 10 */
-+ /* get literal/length code */
-+ GRABBITS(20) /* max bits for literal/length code */
-+ if ((e = (t = tl + ((uInt)b & ml))->exop) == 0)
-+ {
-+ DUMPBITS(t->bits)
-+ Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
-+ "inflate: * literal '%c'\n" :
-+ "inflate: * literal 0x%02x\n", t->base));
-+ *q++ = (Byte)t->base;
-+ m--;
-+ continue;
-+ }
-+ do {
-+ DUMPBITS(t->bits)
-+ if (e & 16)
-+ {
-+ /* get extra bits for length */
-+ e &= 15;
-+ c = t->base + ((uInt)b & inflate_mask[e]);
-+ DUMPBITS(e)
-+ Tracevv((stderr, "inflate: * length %u\n", c));
-+
-+ /* decode distance base of block to copy */
-+ GRABBITS(15); /* max bits for distance code */
-+ e = (t = td + ((uInt)b & md))->exop;
-+ do {
-+ DUMPBITS(t->bits)
-+ if (e & 16)
-+ {
-+ /* get extra bits to add to distance base */
-+ e &= 15;
-+ GRABBITS(e) /* get extra bits (up to 13) */
-+ d = t->base + ((uInt)b & inflate_mask[e]);
-+ DUMPBITS(e)
-+ Tracevv((stderr, "inflate: * distance %u\n", d));
-+
-+ /* do the copy */
-+ m -= c;
-+ if ((uInt)(q - s->window) >= d) /* offset before dest */
-+ { /* just copy */
-+ r = q - d;
-+ *q++ = *r++; c--; /* minimum count is three, */
-+ *q++ = *r++; c--; /* so unroll loop a little */
-+ }
-+ else /* else offset after destination */
-+ {
-+ e = d - (uInt)(q - s->window); /* bytes from offset to end */
-+ r = s->end - e; /* pointer to offset */
-+ if (c > e) /* if source crosses, */
-+ {
-+ c -= e; /* copy to end of window */
-+ do {
-+ *q++ = *r++;
-+ } while (--e);
-+ r = s->window; /* copy rest from start of window */
-+ }
-+ }
-+ do { /* copy all or what's left */
-+ *q++ = *r++;
-+ } while (--c);
-+ break;
-+ }
-+ else if ((e & 64) == 0)
-+ e = (t = t->next + ((uInt)b & inflate_mask[e]))->exop;
-+ else
-+ {
-+ z->msg = (char*)"invalid distance code";
-+ UNGRAB
-+ UPDATE
-+ return Z_DATA_ERROR;
-+ }
-+ } while (1);
-+ break;
-+ }
-+ if ((e & 64) == 0)
-+ {
-+ if ((e = (t = t->next + ((uInt)b & inflate_mask[e]))->exop) == 0)
-+ {
-+ DUMPBITS(t->bits)
-+ Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
-+ "inflate: * literal '%c'\n" :
-+ "inflate: * literal 0x%02x\n", t->base));
-+ *q++ = (Byte)t->base;
-+ m--;
-+ break;
-+ }
-+ }
-+ else if (e & 32)
-+ {
-+ Tracevv((stderr, "inflate: * end of block\n"));
-+ UNGRAB
-+ UPDATE
-+ return Z_STREAM_END;
-+ }
-+ else
-+ {
-+ z->msg = (char*)"invalid literal/length code";
-+ UNGRAB
-+ UPDATE
-+ return Z_DATA_ERROR;
-+ }
-+ } while (1);
-+ } while (m >= 258 && n >= 10);
-+
-+ /* not enough input or output--restore pointers and return */
-+ UNGRAB
-+ UPDATE
-+ return Z_OK;
-+}
-+/* --- inffast.c */
-+
-+/* +++ zutil.c */
-+/* zutil.c -- target dependent utility functions for the compression library
-+ * Copyright (C) 1995-1996 Jean-loup Gailly.
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* From: zutil.c,v 1.17 1996/07/24 13:41:12 me Exp $ */
-+
-+/* #include "zutil.h" */
-+
-+#ifndef NO_DUMMY_DECL
-+struct internal_state {int dummy;}; /* for buggy compilers */
-+#endif
-+
-+#ifndef STDC
-+extern void exit OF((int));
-+#endif
-+
-+const char *z_errmsg[10] = {
-+"need dictionary", /* Z_NEED_DICT 2 */
-+"stream end", /* Z_STREAM_END 1 */
-+"", /* Z_OK 0 */
-+"file error", /* Z_ERRNO (-1) */
-+"stream error", /* Z_STREAM_ERROR (-2) */
-+"data error", /* Z_DATA_ERROR (-3) */
-+"insufficient memory", /* Z_MEM_ERROR (-4) */
-+"buffer error", /* Z_BUF_ERROR (-5) */
-+"incompatible version",/* Z_VERSION_ERROR (-6) */
-+""};
-+
-+
-+const char *zlibVersion()
-+{
-+ return ZLIB_VERSION;
-+}
-+
-+#ifdef DEBUG_ZLIB
-+void z_error (m)
-+ char *m;
-+{
-+ fprintf(stderr, "%s\n", m);
-+ exit(1);
-+}
-+#endif
-+
-+#ifndef HAVE_MEMCPY
-+
-+void zmemcpy(dest, source, len)
-+ Bytef* dest;
-+ Bytef* source;
-+ uInt len;
-+{
-+ if (len == 0) return;
-+ do {
-+ *dest++ = *source++; /* ??? to be unrolled */
-+ } while (--len != 0);
-+}
-+
-+int zmemcmp(s1, s2, len)
-+ Bytef* s1;
-+ Bytef* s2;
-+ uInt len;
-+{
-+ uInt j;
-+
-+ for (j = 0; j < len; j++) {
-+ if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
-+ }
-+ return 0;
-+}
-+
-+void zmemzero(dest, len)
-+ Bytef* dest;
-+ uInt len;
-+{
-+ if (len == 0) return;
-+ do {
-+ *dest++ = 0; /* ??? to be unrolled */
-+ } while (--len != 0);
-+}
-+#endif
-+
-+#ifdef __TURBOC__
-+#if (defined( __BORLANDC__) || !defined(SMALL_MEDIUM)) && !defined(__32BIT__)
-+/* Small and medium model in Turbo C are for now limited to near allocation
-+ * with reduced MAX_WBITS and MAX_MEM_LEVEL
-+ */
-+# define MY_ZCALLOC
-+
-+/* Turbo C malloc() does not allow dynamic allocation of 64K bytes
-+ * and farmalloc(64K) returns a pointer with an offset of 8, so we
-+ * must fix the pointer. Warning: the pointer must be put back to its
-+ * original form in order to free it, use zcfree().
-+ */
-+
-+#define MAX_PTR 10
-+/* 10*64K = 640K */
-+
-+local int next_ptr = 0;
-+
-+typedef struct ptr_table_s {
-+ voidpf org_ptr;
-+ voidpf new_ptr;
-+} ptr_table;
-+
-+local ptr_table table[MAX_PTR];
-+/* This table is used to remember the original form of pointers
-+ * to large buffers (64K). Such pointers are normalized with a zero offset.
-+ * Since MSDOS is not a preemptive multitasking OS, this table is not
-+ * protected from concurrent access. This hack doesn't work anyway on
-+ * a protected system like OS/2. Use Microsoft C instead.
-+ */
-+
-+voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
-+{
-+ voidpf buf = opaque; /* just to make some compilers happy */
-+ ulg bsize = (ulg)items*size;
-+
-+ /* If we allocate less than 65520 bytes, we assume that farmalloc
-+ * will return a usable pointer which doesn't have to be normalized.
-+ */
-+ if (bsize < 65520L) {
-+ buf = farmalloc(bsize);
-+ if (*(ush*)&buf != 0) return buf;
-+ } else {
-+ buf = farmalloc(bsize + 16L);
-+ }
-+ if (buf == NULL || next_ptr >= MAX_PTR) return NULL;
-+ table[next_ptr].org_ptr = buf;
-+
-+ /* Normalize the pointer to seg:0 */
-+ *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4;
-+ *(ush*)&buf = 0;
-+ table[next_ptr++].new_ptr = buf;
-+ return buf;
-+}
-+
-+void zcfree (voidpf opaque, voidpf ptr)
-+{
-+ int n;
-+ if (*(ush*)&ptr != 0) { /* object < 64K */
-+ farfree(ptr);
-+ return;
-+ }
-+ /* Find the original pointer */
-+ for (n = 0; n < next_ptr; n++) {
-+ if (ptr != table[n].new_ptr) continue;
-+
-+ farfree(table[n].org_ptr);
-+ while (++n < next_ptr) {
-+ table[n-1] = table[n];
-+ }
-+ next_ptr--;
-+ return;
-+ }
-+ ptr = opaque; /* just to make some compilers happy */
-+ Assert(0, "zcfree: ptr not found");
-+}
-+#endif
-+#endif /* __TURBOC__ */
-+
-+
-+#if defined(M_I86) && !defined(__32BIT__)
-+/* Microsoft C in 16-bit mode */
-+
-+# define MY_ZCALLOC
-+
-+#if (!defined(_MSC_VER) || (_MSC_VER < 600))
-+# define _halloc halloc
-+# define _hfree hfree
-+#endif
-+
-+voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
-+{
-+ if (opaque) opaque = 0; /* to make compiler happy */
-+ return _halloc((long)items, size);
-+}
-+
-+void zcfree (voidpf opaque, voidpf ptr)
-+{
-+ if (opaque) opaque = 0; /* to make compiler happy */
-+ _hfree(ptr);
-+}
-+
-+#endif /* MSC */
-+
-+
-+#ifndef MY_ZCALLOC /* Any system without a special alloc function */
-+
-+#ifndef STDC
-+extern voidp calloc OF((uInt items, uInt size));
-+extern void free OF((voidpf ptr));
-+#endif
-+
-+voidpf zcalloc (opaque, items, size)
-+ voidpf opaque;
-+ unsigned items;
-+ unsigned size;
-+{
-+ if (opaque) items += size - size; /* make compiler happy */
-+ return (voidpf)calloc(items, size);
-+}
-+
-+void zcfree (opaque, ptr)
-+ voidpf opaque;
-+ voidpf ptr;
-+{
-+ free(ptr);
-+ if (opaque) return; /* make compiler happy */
-+}
-+
-+#endif /* MY_ZCALLOC */
-+/* --- zutil.c */
-+
-+/* +++ adler32.c */
-+/* adler32.c -- compute the Adler-32 checksum of a data stream
-+ * Copyright (C) 1995-1996 Mark Adler
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* From: adler32.c,v 1.10 1996/05/22 11:52:18 me Exp $ */
-+
-+/* #include "zlib.h" */
-+
-+#define BASE 65521L /* largest prime smaller than 65536 */
-+#define NMAX 5552
-+/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
-+
-+#define DO1(buf,i) {s1 += buf[i]; s2 += s1;}
-+#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
-+#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
-+#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
-+#define DO16(buf) DO8(buf,0); DO8(buf,8);
-+
-+/* ========================================================================= */
-+uLong adler32(adler, buf, len)
-+ uLong adler;
-+ const Bytef *buf;
-+ uInt len;
-+{
-+ unsigned long s1 = adler & 0xffff;
-+ unsigned long s2 = (adler >> 16) & 0xffff;
-+ int k;
-+
-+ if (buf == Z_NULL) return 1L;
-+
-+ while (len > 0) {
-+ k = len < NMAX ? len : NMAX;
-+ len -= k;
-+ while (k >= 16) {
-+ DO16(buf);
-+ buf += 16;
-+ k -= 16;
-+ }
-+ if (k != 0) do {
-+ s1 += *buf++;
-+ s2 += s1;
-+ } while (--k);
-+ s1 %= BASE;
-+ s2 %= BASE;
-+ }
-+ return (s2 << 16) | s1;
-+}
-+/* --- adler32.c */
-+
-+#endif /* CONFIG_PPP_DEFLATE */
-diff -Nur linux/fs/jffs2/zlib.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/zlib.h
---- linux/fs/jffs2/zlib.h 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/fs/jffs2/zlib.h 2003-06-23 01:47:04.000000000 +0700
-@@ -0,0 +1,1010 @@
-+/* $Id: zlib.h,v 1.2 1997/12/23 10:47:44 paulus Exp $ */
-+
-+/*
-+ * This file is derived from zlib.h and zconf.h from the zlib-1.0.4
-+ * distribution by Jean-loup Gailly and Mark Adler, with some additions
-+ * by Paul Mackerras to aid in implementing Deflate compression and
-+ * decompression for PPP packets.
-+ */
-+
-+/*
-+ * ==FILEVERSION 971127==
-+ *
-+ * This marker is used by the Linux installation script to determine
-+ * whether an up-to-date version of this file is already installed.
-+ */
-+
-+
-+/* +++ zlib.h */
-+/* zlib.h -- interface of the 'zlib' general purpose compression library
-+ version 1.0.4, Jul 24th, 1996.
-+
-+ Copyright (C) 1995-1996 Jean-loup Gailly and Mark Adler
-+
-+ This software is provided 'as-is', without any express or implied
-+ warranty. In no event will the authors be held liable for any damages
-+ arising from the use of this software.
-+
-+ Permission is granted to anyone to use this software for any purpose,
-+ including commercial applications, and to alter it and redistribute it
-+ freely, subject to the following restrictions:
-+
-+ 1. The origin of this software must not be misrepresented; you must not
-+ claim that you wrote the original software. If you use this software
-+ in a product, an acknowledgment in the product documentation would be
-+ appreciated but is not required.
-+ 2. Altered source versions must be plainly marked as such, and must not be
-+ misrepresented as being the original software.
-+ 3. This notice may not be removed or altered from any source distribution.
-+
-+ Jean-loup Gailly Mark Adler
-+ gzip@prep.ai.mit.edu madler@alumni.caltech.edu
-+
-+
-+ The data format used by the zlib library is described by RFCs (Request for
-+ Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
-+ (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
-+*/
-+
-+#ifndef _ZLIB_H
-+#define _ZLIB_H
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+
-+/* +++ zconf.h */
-+/* zconf.h -- configuration of the zlib compression library
-+ * Copyright (C) 1995-1996 Jean-loup Gailly.
-+ * For conditions of distribution and use, see copyright notice in zlib.h
-+ */
-+
-+/* From: zconf.h,v 1.20 1996/07/02 15:09:28 me Exp $ */
-+
-+#ifndef _ZCONF_H
-+#define _ZCONF_H
-+
-+/*
-+ * If you *really* need a unique prefix for all types and library functions,
-+ * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
-+ */
-+#ifdef Z_PREFIX
-+# define deflateInit_ z_deflateInit_
-+# define deflate z_deflate
-+# define deflateEnd z_deflateEnd
-+# define inflateInit_ z_inflateInit_
-+# define inflate z_inflate
-+# define inflateEnd z_inflateEnd
-+# define deflateInit2_ z_deflateInit2_
-+# define deflateSetDictionary z_deflateSetDictionary
-+# define deflateCopy z_deflateCopy
-+# define deflateReset z_deflateReset
-+# define deflateParams z_deflateParams
-+# define inflateInit2_ z_inflateInit2_
-+# define inflateSetDictionary z_inflateSetDictionary
-+# define inflateSync z_inflateSync
-+# define inflateReset z_inflateReset
-+# define compress z_compress
-+# define uncompress z_uncompress
-+# define adler32 z_adler32
-+# define crc32 z_crc32
-+# define get_crc_table z_get_crc_table
-+
-+# define Byte z_Byte
-+# define uInt z_uInt
-+# define uLong z_uLong
-+# define Bytef z_Bytef
-+# define charf z_charf
-+# define intf z_intf
-+# define uIntf z_uIntf
-+# define uLongf z_uLongf
-+# define voidpf z_voidpf
-+# define voidp z_voidp
-+#endif
-+
-+#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
-+# define WIN32
-+#endif
-+#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386)
-+# ifndef __32BIT__
-+# define __32BIT__
-+# endif
-+#endif
-+#if defined(__MSDOS__) && !defined(MSDOS)
-+# define MSDOS
-+#endif
-+
-+/*
-+ * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
-+ * than 64k bytes at a time (needed on systems with 16-bit int).
-+ */
-+#if defined(MSDOS) && !defined(__32BIT__)
-+# define MAXSEG_64K
-+#endif
-+#ifdef MSDOS
-+# define UNALIGNED_OK
-+#endif
-+
-+#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) && !defined(STDC)
-+# define STDC
-+#endif
-+#if (defined(__STDC__) || defined(__cplusplus)) && !defined(STDC)
-+# define STDC
-+#endif
-+
-+#ifndef STDC
-+# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-+# define const
-+# endif
-+#endif
-+
-+/* Some Mac compilers merge all .h files incorrectly: */
-+#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__)
-+# define NO_DUMMY_DECL
-+#endif
-+
-+/* Maximum value for memLevel in deflateInit2 */
-+#ifndef MAX_MEM_LEVEL
-+# ifdef MAXSEG_64K
-+# define MAX_MEM_LEVEL 8
-+# else
-+# define MAX_MEM_LEVEL 9
-+# endif
-+#endif
-+
-+/* Maximum value for windowBits in deflateInit2 and inflateInit2 */
-+#ifndef MAX_WBITS
-+# define MAX_WBITS 15 /* 32K LZ77 window */
-+#endif
-+
-+/* The memory requirements for deflate are (in bytes):
-+ 1 << (windowBits+2) + 1 << (memLevel+9)
-+ that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
-+ plus a few kilobytes for small objects. For example, if you want to reduce
-+ the default memory requirements from 256K to 128K, compile with
-+ make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
-+ Of course this will generally degrade compression (there's no free lunch).
-+
-+ The memory requirements for inflate are (in bytes) 1 << windowBits
-+ that is, 32K for windowBits=15 (default value) plus a few kilobytes
-+ for small objects.
-+*/
-+
-+ /* Type declarations */
-+
-+#ifndef OF /* function prototypes */
-+# ifdef STDC
-+# define OF(args) args
-+# else
-+# define OF(args) ()
-+# endif
-+#endif
-+
-+/* The following definitions for FAR are needed only for MSDOS mixed
-+ * model programming (small or medium model with some far allocations).
-+ * This was tested only with MSC; for other MSDOS compilers you may have
-+ * to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
-+ * just define FAR to be empty.
-+ */
-+#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__)
-+ /* MSC small or medium model */
-+# define SMALL_MEDIUM
-+# ifdef _MSC_VER
-+# define FAR __far
-+# else
-+# define FAR far
-+# endif
-+#endif
-+#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))
-+# ifndef __32BIT__
-+# define SMALL_MEDIUM
-+# define FAR __far
-+# endif
-+#endif
-+#ifndef FAR
-+# define FAR
-+#endif
-+
-+typedef unsigned char Byte; /* 8 bits */
-+typedef unsigned int uInt; /* 16 bits or more */
-+typedef unsigned long uLong; /* 32 bits or more */
-+
-+#if defined(__BORLANDC__) && defined(SMALL_MEDIUM)
-+ /* Borland C/C++ ignores FAR inside typedef */
-+# define Bytef Byte FAR
-+#else
-+ typedef Byte FAR Bytef;
-+#endif
-+typedef char FAR charf;
-+typedef int FAR intf;
-+typedef uInt FAR uIntf;
-+typedef uLong FAR uLongf;
-+
-+#ifdef STDC
-+ typedef void FAR *voidpf;
-+ typedef void *voidp;
-+#else
-+ typedef Byte FAR *voidpf;
-+ typedef Byte *voidp;
-+#endif
-+
-+
-+/* Compile with -DZLIB_DLL for Windows DLL support */
-+#if (defined(_WINDOWS) || defined(WINDOWS)) && defined(ZLIB_DLL)
-+# include <windows.h>
-+# define EXPORT WINAPI
-+#else
-+# define EXPORT
-+#endif
-+
-+#endif /* _ZCONF_H */
-+/* --- zconf.h */
-+
-+#define ZLIB_VERSION "1.0.4P"
-+
-+/*
-+ The 'zlib' compression library provides in-memory compression and
-+ decompression functions, including integrity checks of the uncompressed
-+ data. This version of the library supports only one compression method
-+ (deflation) but other algorithms may be added later and will have the same
-+ stream interface.
-+
-+ For compression the application must provide the output buffer and
-+ may optionally provide the input buffer for optimization. For decompression,
-+ the application must provide the input buffer and may optionally provide
-+ the output buffer for optimization.
-+
-+ Compression can be done in a single step if the buffers are large
-+ enough (for example if an input file is mmap'ed), or can be done by
-+ repeated calls of the compression function. In the latter case, the
-+ application must provide more input and/or consume the output
-+ (providing more output space) before each call.
-+
-+ The library does not install any signal handler. It is recommended to
-+ add at least a handler for SIGSEGV when decompressing; the library checks
-+ the consistency of the input data whenever possible but may go nuts
-+ for some forms of corrupted input.
-+*/
-+
-+typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-+typedef void (*free_func) OF((voidpf opaque, voidpf address));
-+
-+struct internal_state;
-+
-+typedef struct z_stream_s {
-+ Bytef *next_in; /* next input byte */
-+ uInt avail_in; /* number of bytes available at next_in */
-+ uLong total_in; /* total nb of input bytes read so far */
-+
-+ Bytef *next_out; /* next output byte should be put there */
-+ uInt avail_out; /* remaining free space at next_out */
-+ uLong total_out; /* total nb of bytes output so far */
-+
-+ char *msg; /* last error message, NULL if no error */
-+ struct internal_state FAR *state; /* not visible by applications */
-+
-+ alloc_func zalloc; /* used to allocate the internal state */
-+ free_func zfree; /* used to free the internal state */
-+ voidpf opaque; /* private data object passed to zalloc and zfree */
-+
-+ int data_type; /* best guess about the data type: ascii or binary */
-+ uLong adler; /* adler32 value of the uncompressed data */
-+ uLong reserved; /* reserved for future use */
-+} z_stream;
-+
-+typedef z_stream FAR *z_streamp;
-+
-+/*
-+ The application must update next_in and avail_in when avail_in has
-+ dropped to zero. It must update next_out and avail_out when avail_out
-+ has dropped to zero. The application must initialize zalloc, zfree and
-+ opaque before calling the init function. All other fields are set by the
-+ compression library and must not be updated by the application.
-+
-+ The opaque value provided by the application will be passed as the first
-+ parameter for calls of zalloc and zfree. This can be useful for custom
-+ memory management. The compression library attaches no meaning to the
-+ opaque value.
-+
-+ zalloc must return Z_NULL if there is not enough memory for the object.
-+ On 16-bit systems, the functions zalloc and zfree must be able to allocate
-+ exactly 65536 bytes, but will not be required to allocate more than this
-+ if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
-+ pointers returned by zalloc for objects of exactly 65536 bytes *must*
-+ have their offset normalized to zero. The default allocation function
-+ provided by this library ensures this (see zutil.c). To reduce memory
-+ requirements and avoid any allocation of 64K objects, at the expense of
-+ compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
-+
-+ The fields total_in and total_out can be used for statistics or
-+ progress reports. After compression, total_in holds the total size of
-+ the uncompressed data and may be saved for use in the decompressor
-+ (particularly if the decompressor wants to decompress everything in
-+ a single step).
-+*/
-+
-+ /* constants */
-+
-+#define Z_NO_FLUSH 0
-+#define Z_PARTIAL_FLUSH 1
-+#define Z_PACKET_FLUSH 2
-+#define Z_SYNC_FLUSH 3
-+#define Z_FULL_FLUSH 4
-+#define Z_FINISH 5
-+/* Allowed flush values; see deflate() below for details */
-+
-+#define Z_OK 0
-+#define Z_STREAM_END 1
-+#define Z_NEED_DICT 2
-+#define Z_ERRNO (-1)
-+#define Z_STREAM_ERROR (-2)
-+#define Z_DATA_ERROR (-3)
-+#define Z_MEM_ERROR (-4)
-+#define Z_BUF_ERROR (-5)
-+#define Z_VERSION_ERROR (-6)
-+/* Return codes for the compression/decompression functions. Negative
-+ * values are errors, positive values are used for special but normal events.
-+ */
-+
-+#define Z_NO_COMPRESSION 0
-+#define Z_BEST_SPEED 1
-+#define Z_BEST_COMPRESSION 9
-+#define Z_DEFAULT_COMPRESSION (-1)
-+/* compression levels */
-+
-+#define Z_FILTERED 1
-+#define Z_HUFFMAN_ONLY 2
-+#define Z_DEFAULT_STRATEGY 0
-+/* compression strategy; see deflateInit2() below for details */
-+
-+#define Z_BINARY 0
-+#define Z_ASCII 1
-+#define Z_UNKNOWN 2
-+/* Possible values of the data_type field */
-+
-+#define Z_DEFLATED 8
-+/* The deflate compression method (the only one supported in this version) */
-+
-+#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
-+
-+#define zlib_version zlibVersion()
-+/* for compatibility with versions < 1.0.2 */
-+
-+ /* basic functions */
-+
-+extern const char * EXPORT zlibVersion OF((void));
-+/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
-+ If the first character differs, the library code actually used is
-+ not compatible with the zlib.h header file used by the application.
-+ This check is automatically made by deflateInit and inflateInit.
-+ */
-+
-+/*
-+extern int EXPORT deflateInit OF((z_streamp strm, int level));
-+
-+ Initializes the internal stream state for compression. The fields
-+ zalloc, zfree and opaque must be initialized before by the caller.
-+ If zalloc and zfree are set to Z_NULL, deflateInit updates them to
-+ use default allocation functions.
-+
-+ The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
-+ 1 gives best speed, 9 gives best compression, 0 gives no compression at
-+ all (the input data is simply copied a block at a time).
-+ Z_DEFAULT_COMPRESSION requests a default compromise between speed and
-+ compression (currently equivalent to level 6).
-+
-+ deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
-+ enough memory, Z_STREAM_ERROR if level is not a valid compression level,
-+ Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
-+ with the version assumed by the caller (ZLIB_VERSION).
-+ msg is set to null if there is no error message. deflateInit does not
-+ perform any compression: this will be done by deflate().
-+*/
-+
-+
-+extern int EXPORT deflate OF((z_streamp strm, int flush));
-+/*
-+ Performs one or both of the following actions:
-+
-+ - Compress more input starting at next_in and update next_in and avail_in
-+ accordingly. If not all input can be processed (because there is not
-+ enough room in the output buffer), next_in and avail_in are updated and
-+ processing will resume at this point for the next call of deflate().
-+
-+ - Provide more output starting at next_out and update next_out and avail_out
-+ accordingly. This action is forced if the parameter flush is non zero.
-+ Forcing flush frequently degrades the compression ratio, so this parameter
-+ should be set only when necessary (in interactive applications).
-+ Some output may be provided even if flush is not set.
-+
-+ Before the call of deflate(), the application should ensure that at least
-+ one of the actions is possible, by providing more input and/or consuming
-+ more output, and updating avail_in or avail_out accordingly; avail_out
-+ should never be zero before the call. The application can consume the
-+ compressed output when it wants, for example when the output buffer is full
-+ (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
-+ and with zero avail_out, it must be called again after making room in the
-+ output buffer because there might be more output pending.
-+
-+ If the parameter flush is set to Z_PARTIAL_FLUSH, the current compression
-+ block is terminated and flushed to the output buffer so that the
-+ decompressor can get all input data available so far. For method 9, a future
-+ variant on method 8, the current block will be flushed but not terminated.
-+ Z_SYNC_FLUSH has the same effect as partial flush except that the compressed
-+ output is byte aligned (the compressor can clear its internal bit buffer)
-+ and the current block is always terminated; this can be useful if the
-+ compressor has to be restarted from scratch after an interruption (in which
-+ case the internal state of the compressor may be lost).
-+ If flush is set to Z_FULL_FLUSH, the compression block is terminated, a
-+ special marker is output and the compression dictionary is discarded; this
-+ is useful to allow the decompressor to synchronize if one compressed block
-+ has been damaged (see inflateSync below). Flushing degrades compression and
-+ so should be used only when necessary. Using Z_FULL_FLUSH too often can
-+ seriously degrade the compression. If deflate returns with avail_out == 0,
-+ this function must be called again with the same value of the flush
-+ parameter and more output space (updated avail_out), until the flush is
-+ complete (deflate returns with non-zero avail_out).
-+
-+ If the parameter flush is set to Z_PACKET_FLUSH, the compression
-+ block is terminated, and a zero-length stored block is output,
-+ omitting the length bytes (the effect of this is that the 3-bit type
-+ code 000 for a stored block is output, and the output is then
-+ byte-aligned). This is designed for use at the end of a PPP packet.
-+
-+ If the parameter flush is set to Z_FINISH, pending input is processed,
-+ pending output is flushed and deflate returns with Z_STREAM_END if there
-+ was enough output space; if deflate returns with Z_OK, this function must be
-+ called again with Z_FINISH and more output space (updated avail_out) but no
-+ more input data, until it returns with Z_STREAM_END or an error. After
-+ deflate has returned Z_STREAM_END, the only possible operations on the
-+ stream are deflateReset or deflateEnd.
-+
-+ Z_FINISH can be used immediately after deflateInit if all the compression
-+ is to be done in a single step. In this case, avail_out must be at least
-+ 0.1% larger than avail_in plus 12 bytes. If deflate does not return
-+ Z_STREAM_END, then it must be called again as described above.
-+
-+ deflate() may update data_type if it can make a good guess about
-+ the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
-+ binary. This field is only for information purposes and does not affect
-+ the compression algorithm in any manner.
-+
-+ deflate() returns Z_OK if some progress has been made (more input
-+ processed or more output produced), Z_STREAM_END if all input has been
-+ consumed and all output has been produced (only when flush is set to
-+ Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
-+ if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible.
-+*/
-+
-+
-+extern int EXPORT deflateEnd OF((z_streamp strm));
-+/*
-+ All dynamically allocated data structures for this stream are freed.
-+ This function discards any unprocessed input and does not flush any
-+ pending output.
-+
-+ deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
-+ stream state was inconsistent, Z_DATA_ERROR if the stream was freed
-+ prematurely (some input or output was discarded). In the error case,
-+ msg may be set but then points to a static string (which must not be
-+ deallocated).
-+*/
-+
-+
-+/*
-+extern int EXPORT inflateInit OF((z_streamp strm));
-+
-+ Initializes the internal stream state for decompression. The fields
-+ zalloc, zfree and opaque must be initialized before by the caller. If
-+ zalloc and zfree are set to Z_NULL, inflateInit updates them to use default
-+ allocation functions.
-+
-+ inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
-+ enough memory, Z_VERSION_ERROR if the zlib library version is incompatible
-+ with the version assumed by the caller. msg is set to null if there is no
-+ error message. inflateInit does not perform any decompression: this will be
-+ done by inflate().
-+*/
-+
-+
-+extern int EXPORT inflate OF((z_streamp strm, int flush));
-+/*
-+ Performs one or both of the following actions:
-+
-+ - Decompress more input starting at next_in and update next_in and avail_in
-+ accordingly. If not all input can be processed (because there is not
-+ enough room in the output buffer), next_in is updated and processing
-+ will resume at this point for the next call of inflate().
-+
-+ - Provide more output starting at next_out and update next_out and avail_out
-+ accordingly. inflate() provides as much output as possible, until there
-+ is no more input data or no more space in the output buffer (see below
-+ about the flush parameter).
-+
-+ Before the call of inflate(), the application should ensure that at least
-+ one of the actions is possible, by providing more input and/or consuming
-+ more output, and updating the next_* and avail_* values accordingly.
-+ The application can consume the uncompressed output when it wants, for
-+ example when the output buffer is full (avail_out == 0), or after each
-+ call of inflate(). If inflate returns Z_OK and with zero avail_out, it
-+ must be called again after making room in the output buffer because there
-+ might be more output pending.
-+
-+ If the parameter flush is set to Z_PARTIAL_FLUSH or Z_PACKET_FLUSH,
-+ inflate flushes as much output as possible to the output buffer. The
-+ flushing behavior of inflate is not specified for values of the flush
-+ parameter other than Z_PARTIAL_FLUSH, Z_PACKET_FLUSH or Z_FINISH, but the
-+ current implementation actually flushes as much output as possible
-+ anyway. For Z_PACKET_FLUSH, inflate checks that once all the input data
-+ has been consumed, it is expecting to see the length field of a stored
-+ block; if not, it returns Z_DATA_ERROR.
-+
-+ inflate() should normally be called until it returns Z_STREAM_END or an
-+ error. However if all decompression is to be performed in a single step
-+ (a single call of inflate), the parameter flush should be set to
-+ Z_FINISH. In this case all pending input is processed and all pending
-+ output is flushed; avail_out must be large enough to hold all the
-+ uncompressed data. (The size of the uncompressed data may have been saved
-+ by the compressor for this purpose.) The next operation on this stream must
-+ be inflateEnd to deallocate the decompression state. The use of Z_FINISH
-+ is never required, but can be used to inform inflate that a faster routine
-+ may be used for the single inflate() call.
-+
-+ inflate() returns Z_OK if some progress has been made (more input
-+ processed or more output produced), Z_STREAM_END if the end of the
-+ compressed data has been reached and all uncompressed output has been
-+ produced, Z_NEED_DICT if a preset dictionary is needed at this point (see
-+ inflateSetDictionary below), Z_DATA_ERROR if the input data was corrupted,
-+ Z_STREAM_ERROR if the stream structure was inconsistent (for example if
-+ next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
-+ Z_BUF_ERROR if no progress is possible or if there was not enough room in
-+ the output buffer when Z_FINISH is used. In the Z_DATA_ERROR case, the
-+ application may then call inflateSync to look for a good compression block.
-+ In the Z_NEED_DICT case, strm->adler is set to the Adler32 value of the
-+ dictionary chosen by the compressor.
-+*/
-+
-+
-+extern int EXPORT inflateEnd OF((z_streamp strm));
-+/*
-+ All dynamically allocated data structures for this stream are freed.
-+ This function discards any unprocessed input and does not flush any
-+ pending output.
-+
-+ inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
-+ was inconsistent. In the error case, msg may be set but then points to a
-+ static string (which must not be deallocated).
-+*/
-+
-+ /* Advanced functions */
-+
-+/*
-+ The following functions are needed only in some special applications.
-+*/
-+
-+/*
-+extern int EXPORT deflateInit2 OF((z_streamp strm,
-+ int level,
-+ int method,
-+ int windowBits,
-+ int memLevel,
-+ int strategy));
-+
-+ This is another version of deflateInit with more compression options. The
-+ fields next_in, zalloc, zfree and opaque must be initialized before by
-+ the caller.
-+
-+ The method parameter is the compression method. It must be Z_DEFLATED in
-+ this version of the library. (Method 9 will allow a 64K history buffer and
-+ partial block flushes.)
-+
-+ The windowBits parameter is the base two logarithm of the window size
-+ (the size of the history buffer). It should be in the range 8..15 for this
-+ version of the library (the value 16 will be allowed for method 9). Larger
-+ values of this parameter result in better compression at the expense of
-+ memory usage. The default value is 15 if deflateInit is used instead.
-+
-+ The memLevel parameter specifies how much memory should be allocated
-+ for the internal compression state. memLevel=1 uses minimum memory but
-+ is slow and reduces compression ratio; memLevel=9 uses maximum memory
-+ for optimal speed. The default value is 8. See zconf.h for total memory
-+ usage as a function of windowBits and memLevel.
-+
-+ The strategy parameter is used to tune the compression algorithm. Use the
-+ value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
-+ filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
-+ string match). Filtered data consists mostly of small values with a
-+ somewhat random distribution. In this case, the compression algorithm is
-+ tuned to compress them better. The effect of Z_FILTERED is to force more
-+ Huffman coding and less string matching; it is somewhat intermediate
-+ between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
-+ the compression ratio but not the correctness of the compressed output even
-+ if it is not set appropriately.
-+
-+ If next_in is not null, the library will use this buffer to hold also
-+ some history information; the buffer must either hold the entire input
-+ data, or have at least 1<<(windowBits+1) bytes and be writable. If next_in
-+ is null, the library will allocate its own history buffer (and leave next_in
-+ null). next_out need not be provided here but must be provided by the
-+ application for the next call of deflate().
-+
-+ If the history buffer is provided by the application, next_in must
-+ must never be changed by the application since the compressor maintains
-+ information inside this buffer from call to call; the application
-+ must provide more input only by increasing avail_in. next_in is always
-+ reset by the library in this case.
-+
-+ deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was
-+ not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as
-+ an invalid method). msg is set to null if there is no error message.
-+ deflateInit2 does not perform any compression: this will be done by
-+ deflate().
-+*/
-+
-+extern int EXPORT deflateSetDictionary OF((z_streamp strm,
-+ const Bytef *dictionary,
-+ uInt dictLength));
-+/*
-+ Initializes the compression dictionary (history buffer) from the given
-+ byte sequence without producing any compressed output. This function must
-+ be called immediately after deflateInit or deflateInit2, before any call
-+ of deflate. The compressor and decompressor must use exactly the same
-+ dictionary (see inflateSetDictionary).
-+ The dictionary should consist of strings (byte sequences) that are likely
-+ to be encountered later in the data to be compressed, with the most commonly
-+ used strings preferably put towards the end of the dictionary. Using a
-+ dictionary is most useful when the data to be compressed is short and
-+ can be predicted with good accuracy; the data can then be compressed better
-+ than with the default empty dictionary. In this version of the library,
-+ only the last 32K bytes of the dictionary are used.
-+ Upon return of this function, strm->adler is set to the Adler32 value
-+ of the dictionary; the decompressor may later use this value to determine
-+ which dictionary has been used by the compressor. (The Adler32 value
-+ applies to the whole dictionary even if only a subset of the dictionary is
-+ actually used by the compressor.)
-+
-+ deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
-+ parameter is invalid (such as NULL dictionary) or the stream state
-+ is inconsistent (for example if deflate has already been called for this
-+ stream). deflateSetDictionary does not perform any compression: this will
-+ be done by deflate().
-+*/
-+
-+extern int EXPORT deflateCopy OF((z_streamp dest,
-+ z_streamp source));
-+/*
-+ Sets the destination stream as a complete copy of the source stream. If
-+ the source stream is using an application-supplied history buffer, a new
-+ buffer is allocated for the destination stream. The compressed output
-+ buffer is always application-supplied. It's the responsibility of the
-+ application to provide the correct values of next_out and avail_out for the
-+ next call of deflate.
-+
-+ This function can be useful when several compression strategies will be
-+ tried, for example when there are several ways of pre-processing the input
-+ data with a filter. The streams that will be discarded should then be freed
-+ by calling deflateEnd. Note that deflateCopy duplicates the internal
-+ compression state which can be quite large, so this strategy is slow and
-+ can consume lots of memory.
-+
-+ deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
-+ enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-+ (such as zalloc being NULL). msg is left unchanged in both source and
-+ destination.
-+*/
-+
-+extern int EXPORT deflateReset OF((z_streamp strm));
-+/*
-+ This function is equivalent to deflateEnd followed by deflateInit,
-+ but does not free and reallocate all the internal compression state.
-+ The stream will keep the same compression level and any other attributes
-+ that may have been set by deflateInit2.
-+
-+ deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-+ stream state was inconsistent (such as zalloc or state being NULL).
-+*/
-+
-+extern int EXPORT deflateParams OF((z_streamp strm, int level, int strategy));
-+/*
-+ Dynamically update the compression level and compression strategy.
-+ This can be used to switch between compression and straight copy of
-+ the input data, or to switch to a different kind of input data requiring
-+ a different strategy. If the compression level is changed, the input
-+ available so far is compressed with the old level (and may be flushed);
-+ the new level will take effect only at the next call of deflate().
-+
-+ Before the call of deflateParams, the stream state must be set as for
-+ a call of deflate(), since the currently available input may have to
-+ be compressed and flushed. In particular, strm->avail_out must be non-zero.
-+
-+ deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
-+ stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
-+ if strm->avail_out was zero.
-+*/
-+
-+extern int EXPORT deflateOutputPending OF((z_streamp strm));
-+/*
-+ Returns the number of bytes of output which are immediately
-+ available from the compressor (i.e. without any further input
-+ or flush).
-+*/
-+
-+/*
-+extern int EXPORT inflateInit2 OF((z_streamp strm,
-+ int windowBits));
-+
-+ This is another version of inflateInit with more compression options. The
-+ fields next_out, zalloc, zfree and opaque must be initialized before by
-+ the caller.
-+
-+ The windowBits parameter is the base two logarithm of the maximum window
-+ size (the size of the history buffer). It should be in the range 8..15 for
-+ this version of the library (the value 16 will be allowed soon). The
-+ default value is 15 if inflateInit is used instead. If a compressed stream
-+ with a larger window size is given as input, inflate() will return with
-+ the error code Z_DATA_ERROR instead of trying to allocate a larger window.
-+
-+ If next_out is not null, the library will use this buffer for the history
-+ buffer; the buffer must either be large enough to hold the entire output
-+ data, or have at least 1<<windowBits bytes. If next_out is null, the
-+ library will allocate its own buffer (and leave next_out null). next_in
-+ need not be provided here but must be provided by the application for the
-+ next call of inflate().
-+
-+ If the history buffer is provided by the application, next_out must
-+ never be changed by the application since the decompressor maintains
-+ history information inside this buffer from call to call; the application
-+ can only reset next_out to the beginning of the history buffer when
-+ avail_out is zero and all output has been consumed.
-+
-+ inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was
-+ not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as
-+ windowBits < 8). msg is set to null if there is no error message.
-+ inflateInit2 does not perform any decompression: this will be done by
-+ inflate().
-+*/
-+
-+extern int EXPORT inflateSetDictionary OF((z_streamp strm,
-+ const Bytef *dictionary,
-+ uInt dictLength));
-+/*
-+ Initializes the decompression dictionary (history buffer) from the given
-+ uncompressed byte sequence. This function must be called immediately after
-+ a call of inflate if this call returned Z_NEED_DICT. The dictionary chosen
-+ by the compressor can be determined from the Adler32 value returned by this
-+ call of inflate. The compressor and decompressor must use exactly the same
-+ dictionary (see deflateSetDictionary).
-+
-+ inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
-+ parameter is invalid (such as NULL dictionary) or the stream state is
-+ inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
-+ expected one (incorrect Adler32 value). inflateSetDictionary does not
-+ perform any decompression: this will be done by subsequent calls of
-+ inflate().
-+*/
-+
-+extern int EXPORT inflateSync OF((z_streamp strm));
-+/*
-+ Skips invalid compressed data until the special marker (see deflate()
-+ above) can be found, or until all available input is skipped. No output
-+ is provided.
-+
-+ inflateSync returns Z_OK if the special marker has been found, Z_BUF_ERROR
-+ if no more input was provided, Z_DATA_ERROR if no marker has been found,
-+ or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
-+ case, the application may save the current current value of total_in which
-+ indicates where valid compressed data was found. In the error case, the
-+ application may repeatedly call inflateSync, providing more input each time,
-+ until success or end of the input data.
-+*/
-+
-+extern int EXPORT inflateReset OF((z_streamp strm));
-+/*
-+ This function is equivalent to inflateEnd followed by inflateInit,
-+ but does not free and reallocate all the internal decompression state.
-+ The stream will keep attributes that may have been set by inflateInit2.
-+
-+ inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-+ stream state was inconsistent (such as zalloc or state being NULL).
-+*/
-+
-+extern int inflateIncomp OF((z_stream *strm));
-+/*
-+ This function adds the data at next_in (avail_in bytes) to the output
-+ history without performing any output. There must be no pending output,
-+ and the decompressor must be expecting to see the start of a block.
-+ Calling this function is equivalent to decompressing a stored block
-+ containing the data at next_in (except that the data is not output).
-+*/
-+
-+ /* utility functions */
-+
-+/*
-+ The following utility functions are implemented on top of the
-+ basic stream-oriented functions. To simplify the interface, some
-+ default options are assumed (compression level, window size,
-+ standard memory allocation functions). The source code of these
-+ utility functions can easily be modified if you need special options.
-+*/
-+
-+extern int EXPORT compress OF((Bytef *dest, uLongf *destLen,
-+ const Bytef *source, uLong sourceLen));
-+/*
-+ Compresses the source buffer into the destination buffer. sourceLen is
-+ the byte length of the source buffer. Upon entry, destLen is the total
-+ size of the destination buffer, which must be at least 0.1% larger than
-+ sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
-+ compressed buffer.
-+ This function can be used to compress a whole file at once if the
-+ input file is mmap'ed.
-+ compress returns Z_OK if success, Z_MEM_ERROR if there was not
-+ enough memory, Z_BUF_ERROR if there was not enough room in the output
-+ buffer.
-+*/
-+
-+extern int EXPORT uncompress OF((Bytef *dest, uLongf *destLen,
-+ const Bytef *source, uLong sourceLen));
-+/*
-+ Decompresses the source buffer into the destination buffer. sourceLen is
-+ the byte length of the source buffer. Upon entry, destLen is the total
-+ size of the destination buffer, which must be large enough to hold the
-+ entire uncompressed data. (The size of the uncompressed data must have
-+ been saved previously by the compressor and transmitted to the decompressor
-+ by some mechanism outside the scope of this compression library.)
-+ Upon exit, destLen is the actual size of the compressed buffer.
-+ This function can be used to decompress a whole file at once if the
-+ input file is mmap'ed.
-+
-+ uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
-+ enough memory, Z_BUF_ERROR if there was not enough room in the output
-+ buffer, or Z_DATA_ERROR if the input data was corrupted.
-+*/
-+
-+
-+typedef voidp gzFile;
-+
-+extern gzFile EXPORT gzopen OF((const char *path, const char *mode));
-+/*
-+ Opens a gzip (.gz) file for reading or writing. The mode parameter
-+ is as in fopen ("rb" or "wb") but can also include a compression level
-+ ("wb9"). gzopen can be used to read a file which is not in gzip format;
-+ in this case gzread will directly read from the file without decompression.
-+ gzopen returns NULL if the file could not be opened or if there was
-+ insufficient memory to allocate the (de)compression state; errno
-+ can be checked to distinguish the two cases (if errno is zero, the
-+ zlib error is Z_MEM_ERROR).
-+*/
-+
-+extern gzFile EXPORT gzdopen OF((int fd, const char *mode));
-+/*
-+ gzdopen() associates a gzFile with the file descriptor fd. File
-+ descriptors are obtained from calls like open, dup, creat, pipe or
-+ fileno (in the file has been previously opened with fopen).
-+ The mode parameter is as in gzopen.
-+ The next call of gzclose on the returned gzFile will also close the
-+ file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
-+ descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
-+ gzdopen returns NULL if there was insufficient memory to allocate
-+ the (de)compression state.
-+*/
-+
-+extern int EXPORT gzread OF((gzFile file, voidp buf, unsigned len));
-+/*
-+ Reads the given number of uncompressed bytes from the compressed file.
-+ If the input file was not in gzip format, gzread copies the given number
-+ of bytes into the buffer.
-+ gzread returns the number of uncompressed bytes actually read (0 for
-+ end of file, -1 for error). */
-+
-+extern int EXPORT gzwrite OF((gzFile file, const voidp buf, unsigned len));
-+/*
-+ Writes the given number of uncompressed bytes into the compressed file.
-+ gzwrite returns the number of uncompressed bytes actually written
-+ (0 in case of error).
-+*/
-+
-+extern int EXPORT gzflush OF((gzFile file, int flush));
-+/*
-+ Flushes all pending output into the compressed file. The parameter
-+ flush is as in the deflate() function. The return value is the zlib
-+ error number (see function gzerror below). gzflush returns Z_OK if
-+ the flush parameter is Z_FINISH and all output could be flushed.
-+ gzflush should be called only when strictly necessary because it can
-+ degrade compression.
-+*/
-+
-+extern int EXPORT gzclose OF((gzFile file));
-+/*
-+ Flushes all pending output if necessary, closes the compressed file
-+ and deallocates all the (de)compression state. The return value is the zlib
-+ error number (see function gzerror below).
-+*/
-+
-+extern const char * EXPORT gzerror OF((gzFile file, int *errnum));
-+/*
-+ Returns the error message for the last error which occurred on the
-+ given compressed file. errnum is set to zlib error number. If an
-+ error occurred in the file system and not in the compression library,
-+ errnum is set to Z_ERRNO and the application may consult errno
-+ to get the exact error code.
-+*/
-+
-+ /* checksum functions */
-+
-+/*
-+ These functions are not related to compression but are exported
-+ anyway because they might be useful in applications using the
-+ compression library.
-+*/
-+
-+extern uLong EXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-+
-+/*
-+ Update a running Adler-32 checksum with the bytes buf[0..len-1] and
-+ return the updated checksum. If buf is NULL, this function returns
-+ the required initial value for the checksum.
-+ An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
-+ much faster. Usage example:
-+
-+ uLong adler = adler32(0L, Z_NULL, 0);
-+
-+ while (read_buffer(buffer, length) != EOF) {
-+ adler = adler32(adler, buffer, length);
-+ }
-+ if (adler != original_adler) error();
-+*/
-+
-+extern uLong EXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
-+/*
-+ Update a running crc with the bytes buf[0..len-1] and return the updated
-+ crc. If buf is NULL, this function returns the required initial value
-+ for the crc. Pre- and post-conditioning (one's complement) is performed
-+ within this function so it shouldn't be done by the application.
-+ Usage example:
-+
-+ uLong crc = crc32(0L, Z_NULL, 0);
-+
-+ while (read_buffer(buffer, length) != EOF) {
-+ crc = crc32(crc, buffer, length);
-+ }
-+ if (crc != original_crc) error();
-+*/
-+
-+
-+ /* various hacks, don't look :) */
-+
-+/* deflateInit and inflateInit are macros to allow checking the zlib version
-+ * and the compiler's view of z_stream:
-+ */
-+extern int EXPORT deflateInit_ OF((z_streamp strm, int level,
-+ const char *version, int stream_size));
-+extern int EXPORT inflateInit_ OF((z_streamp strm,
-+ const char *version, int stream_size));
-+extern int EXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
-+ int windowBits, int memLevel, int strategy,
-+ const char *version, int stream_size));
-+extern int EXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
-+ const char *version, int stream_size));
-+#define deflateInit(strm, level) \
-+ deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
-+#define inflateInit(strm) \
-+ inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
-+#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
-+ deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
-+ (strategy), ZLIB_VERSION, sizeof(z_stream))
-+#define inflateInit2(strm, windowBits) \
-+ inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
-+
-+#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
-+ struct internal_state {int dummy;}; /* hack for buggy compilers */
-+#endif
-+
-+uLongf *get_crc_table OF((void)); /* can be used by asm versions of crc32() */
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* _ZLIB_H */
-+/* --- zlib.h */
-diff -Nur linux/include/linux/jffs2.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/include/linux/jffs2.h
---- linux/include/linux/jffs2.h 2003-05-13 16:19:57.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/include/linux/jffs2.h 2003-06-23 01:47:04.000000000 +0700
-@@ -1,20 +1,44 @@
- /*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
-- * Copyright (C) 2001, 2002 Red Hat, Inc.
-+ * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
-- * For licensing information, see the file 'LICENCE' in the
-- * jffs2 directory.
-+ * The original JFFS, from which the design for JFFS2 was derived,
-+ * was designed and implemented by Axis Communications AB.
- *
-- * $Id: jffs2.h,v 1.25 2002/08/20 21:37:27 dwmw2 Exp $
-+ * The contents of this file are subject to the Red Hat eCos Public
-+ * License Version 1.1 (the "Licence"); you may not use this file
-+ * except in compliance with the Licence. You may obtain a copy of
-+ * the Licence at http://www.redhat.com/
-+ *
-+ * Software distributed under the Licence is distributed on an "AS IS"
-+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
-+ * See the Licence for the specific language governing rights and
-+ * limitations under the Licence.
-+ *
-+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
-+ *
-+ * Alternatively, the contents of this file may be used under the
-+ * terms of the GNU General Public License version 2 (the "GPL"), in
-+ * which case the provisions of the GPL are applicable instead of the
-+ * above. If you wish to allow the use of your version of this file
-+ * only under the terms of the GPL and not to allow others to use your
-+ * version of this file under the RHEPL, indicate your decision by
-+ * deleting the provisions above and replace them with the notice and
-+ * other provisions required by the GPL. If you do not delete the
-+ * provisions above, a recipient may use your version of this file
-+ * under either the RHEPL or the GPL.
-+ *
-+ * $Id: jffs2.h,v 1.19 2001/10/09 13:20:23 dwmw2 Exp $
- *
- */
-
- #ifndef __LINUX_JFFS2_H__
- #define __LINUX_JFFS2_H__
-
-+#include <asm/types.h>
- #define JFFS2_SUPER_MAGIC 0x72b6
-
- /* Values we may expect to find in the 'magic' field */
-@@ -54,12 +78,16 @@
- #define JFFS2_NODETYPE_DIRENT (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 1)
- #define JFFS2_NODETYPE_INODE (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 2)
- #define JFFS2_NODETYPE_CLEANMARKER (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 3)
--#define JFFS2_NODETYPE_PADDING (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 4)
-
- // Maybe later...
- //#define JFFS2_NODETYPE_CHECKPOINT (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 3)
- //#define JFFS2_NODETYPE_OPTIONS (JFFS2_FEATURE_RWCOMPAT_COPY | JFFS2_NODE_ACCURATE | 4)
-
-+/* Same as the non_ECC versions, but with extra space for real
-+ * ECC instead of just the checksum. For use on NAND flash
-+ */
-+//#define JFFS2_NODETYPE_DIRENT_ECC (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 5)
-+//#define JFFS2_NODETYPE_INODE_ECC (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 6)
-
- #define JFFS2_INO_FLAG_PREREAD 1 /* Do read_inode() for this one at
- mount time, don't wait for it to
-@@ -68,66 +96,31 @@
- compression type */
-
-
--/* These can go once we've made sure we've caught all uses without
-- byteswapping */
--
--typedef struct {
-- uint32_t v32;
--} __attribute__((packed)) jint32_t;
--
--typedef struct {
-- uint16_t v16;
--} __attribute__((packed)) jint16_t;
--
--#define JFFS2_NATIVE_ENDIAN
--
--#if defined(JFFS2_NATIVE_ENDIAN)
--#define cpu_to_je16(x) ((jint16_t){x})
--#define cpu_to_je32(x) ((jint32_t){x})
--
--#define je16_to_cpu(x) ((x).v16)
--#define je32_to_cpu(x) ((x).v32)
--#elif defined(JFFS2_BIG_ENDIAN)
--#define cpu_to_je16(x) ((jint16_t){cpu_to_be16(x)})
--#define cpu_to_je32(x) ((jint32_t){cpu_to_be32(x)})
--
--#define je16_to_cpu(x) (be16_to_cpu(x.v16))
--#define je32_to_cpu(x) (be32_to_cpu(x.v32))
--#elif defined(JFFS2_LITTLE_ENDIAN)
--#define cpu_to_je16(x) ((jint16_t){cpu_to_le16(x)})
--#define cpu_to_je32(x) ((jint32_t){cpu_to_le32(x)})
--
--#define je16_to_cpu(x) (le16_to_cpu(x.v16))
--#define je32_to_cpu(x) (le32_to_cpu(x.v32))
--#else
--#error wibble
--#endif
--
- struct jffs2_unknown_node
- {
- /* All start like this */
-- jint16_t magic;
-- jint16_t nodetype;
-- jint32_t totlen; /* So we can skip over nodes we don't grok */
-- jint32_t hdr_crc;
-+ __u16 magic;
-+ __u16 nodetype;
-+ __u32 totlen; /* So we can skip over nodes we don't grok */
-+ __u32 hdr_crc;
- } __attribute__((packed));
-
- struct jffs2_raw_dirent
- {
-- jint16_t magic;
-- jint16_t nodetype; /* == JFFS_NODETYPE_DIRENT */
-- jint32_t totlen;
-- jint32_t hdr_crc;
-- jint32_t pino;
-- jint32_t version;
-- jint32_t ino; /* == zero for unlink */
-- jint32_t mctime;
-- uint8_t nsize;
-- uint8_t type;
-- uint8_t unused[2];
-- jint32_t node_crc;
-- jint32_t name_crc;
-- uint8_t name[0];
-+ __u16 magic;
-+ __u16 nodetype; /* == JFFS_NODETYPE_DIRENT */
-+ __u32 totlen;
-+ __u32 hdr_crc;
-+ __u32 pino;
-+ __u32 version;
-+ __u32 ino; /* == zero for unlink */
-+ __u32 mctime;
-+ __u8 nsize;
-+ __u8 type;
-+ __u8 unused[2];
-+ __u32 node_crc;
-+ __u32 name_crc;
-+ __u8 name[0];
- } __attribute__((packed));
-
- /* The JFFS2 raw inode structure: Used for storage on physical media. */
-@@ -138,28 +131,28 @@
- */
- struct jffs2_raw_inode
- {
-- jint16_t magic; /* A constant magic number. */
-- jint16_t nodetype; /* == JFFS_NODETYPE_INODE */
-- jint32_t totlen; /* Total length of this node (inc data, etc.) */
-- jint32_t hdr_crc;
-- jint32_t ino; /* Inode number. */
-- jint32_t version; /* Version number. */
-- jint32_t mode; /* The file's type or mode. */
-- jint16_t uid; /* The file's owner. */
-- jint16_t gid; /* The file's group. */
-- jint32_t isize; /* Total resultant size of this inode (used for truncations) */
-- jint32_t atime; /* Last access time. */
-- jint32_t mtime; /* Last modification time. */
-- jint32_t ctime; /* Change time. */
-- jint32_t offset; /* Where to begin to write. */
-- jint32_t csize; /* (Compressed) data size */
-- jint32_t dsize; /* Size of the node's data. (after decompression) */
-- uint8_t compr; /* Compression algorithm used */
-- uint8_t usercompr; /* Compression algorithm requested by the user */
-- jint16_t flags; /* See JFFS2_INO_FLAG_* */
-- jint32_t data_crc; /* CRC for the (compressed) data. */
-- jint32_t node_crc; /* CRC for the raw inode (excluding data) */
--// uint8_t data[dsize];
-+ __u16 magic; /* A constant magic number. */
-+ __u16 nodetype; /* == JFFS_NODETYPE_INODE */
-+ __u32 totlen; /* Total length of this node (inc data, etc.) */
-+ __u32 hdr_crc;
-+ __u32 ino; /* Inode number. */
-+ __u32 version; /* Version number. */
-+ __u32 mode; /* The file's type or mode. */
-+ __u16 uid; /* The file's owner. */
-+ __u16 gid; /* The file's group. */
-+ __u32 isize; /* Total resultant size of this inode (used for truncations) */
-+ __u32 atime; /* Last access time. */
-+ __u32 mtime; /* Last modification time. */
-+ __u32 ctime; /* Change time. */
-+ __u32 offset; /* Where to begin to write. */
-+ __u32 csize; /* (Compressed) data size */
-+ __u32 dsize; /* Size of the node's data. (after decompression) */
-+ __u8 compr; /* Compression algorithm used */
-+ __u8 usercompr; /* Compression algorithm requested by the user */
-+ __u16 flags; /* See JFFS2_INO_FLAG_* */
-+ __u32 data_crc; /* CRC for the (compressed) data. */
-+ __u32 node_crc; /* CRC for the raw inode (excluding data) */
-+// __u8 data[dsize];
- } __attribute__((packed));
-
- union jffs2_node_union {
-diff -Nur linux/include/linux/jffs2_fs_i.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/include/linux/jffs2_fs_i.h
---- linux/include/linux/jffs2_fs_i.h 2003-05-13 16:19:57.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/include/linux/jffs2_fs_i.h 2003-06-23 01:47:04.000000000 +0700
-@@ -1,18 +1,22 @@
--/* $Id: jffs2_fs_i.h,v 1.14 2002/09/04 14:12:03 dwmw2 Exp $ */
--
--/*
-- * ChangeLog:
-- * 19-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree
-- *
-- */
-+/* $Id: jffs2_fs_i.h,v 1.8 2001/04/18 13:05:28 dwmw2 Exp $ */
-
- #ifndef _JFFS2_FS_I
- #define _JFFS2_FS_I
-
--#include <linux/version.h>
--#include <linux/rbtree.h>
-+/* Include the pipe_inode_info at the beginning so that we can still
-+ use the storage space in the inode when we have a pipe inode.
-+ This sucks.
-+*/
-+
-+#undef THISSUCKS /* Only for 2.2 */
-+#ifdef THISSUCKS
-+#include <linux/pipe_fs_i.h>
-+#endif
-
- struct jffs2_inode_info {
-+#ifdef THISSUCKS
-+ struct pipe_inode_info pipecrap;
-+#endif
- /* We need an internal semaphore similar to inode->i_sem.
- Unfortunately, we can't used the existing one, because
- either the GC would deadlock, or we'd have to release it
-@@ -22,10 +26,10 @@
- struct semaphore sem;
-
- /* The highest (datanode) version number used for this ino */
-- uint32_t highest_version;
-+ __u32 highest_version;
-
- /* List of data fragments which make up the file */
-- rb_root_t fragtree;
-+ struct jffs2_node_frag *fraglist;
-
- /* There may be one datanode which isn't referenced by any of the
- above fragments, if it contains a metadata update but no actual
-@@ -40,17 +44,19 @@
- /* Some stuff we just have to keep in-core at all times, for each inode. */
- struct jffs2_inode_cache *inocache;
-
-- uint16_t flags;
-- uint8_t usercompr;
--
--#ifdef CONFIG_JFFS2_DYNFRAGTREE
-- /* The number of frags linked to the fragtree */
-- uint32_t nr_frags;
--#endif
-+ /* Keep a pointer to the last physical node in the list. We don't
-+ use the doubly-linked lists because we don't want to increase
-+ the memory usage that much. This is simpler */
-+ // struct jffs2_raw_node_ref *lastnode;
-+ __u16 flags;
-+ __u8 usercompr;
-+};
-
--#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,2)
-- struct inode vfs_inode;
-+#ifdef JFFS2_OUT_OF_KERNEL
-+#define JFFS2_INODE_INFO(i) ((struct jffs2_inode_info *) &(i)->u)
-+#else
-+#define JFFS2_INODE_INFO(i) (&i->u.jffs2_i)
- #endif
--};
-
- #endif /* _JFFS2_FS_I */
-+
-diff -Nur linux/include/linux/jffs2_fs_sb.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/include/linux/jffs2_fs_sb.h
---- linux/include/linux/jffs2_fs_sb.h 2003-05-13 16:19:57.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/include/linux/jffs2_fs_sb.h 2003-06-23 01:47:04.000000000 +0700
-@@ -1,41 +1,18 @@
--/* $Id: jffs2_fs_sb.h,v 1.34 2002/09/09 16:29:07 dwmw2 Exp $ */
--
--/*
-- * ChangeLog:
-- * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode
-- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility
-- * 05-Nov-2002 Lineo Japan, Inc. modify nr_bad_blocks type
-- * 29-Oct-2002 Lineo Japan, Inc. add member nr_bad_blocks and cont_gc_count
-- *
-- */
--
--/*
-- * ChangeLog:
-- * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode
-- * 24-Nov-2002 SHARP add erasing_dirty_size
-- * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility
-- * 05-Nov-2002 Lineo Japan, Inc. modify nr_bad_blocks type
-- * 29-Oct-2002 Lineo Japan, Inc. add member nr_bad_blocks and cont_gc_count
-- *
-- */
-+/* $Id: jffs2_fs_sb.h,v 1.16.2.1 2002/02/23 14:13:34 dwmw2 Exp $ */
-
- #ifndef _JFFS2_FS_SB
- #define _JFFS2_FS_SB
-
- #include <linux/types.h>
- #include <linux/spinlock.h>
--#include <linux/tqueue.h>
- #include <linux/completion.h>
- #include <asm/semaphore.h>
- #include <linux/list.h>
-
-+#define INOCACHE_HASHSIZE 1
-+
- #define JFFS2_SB_FLAG_RO 1
- #define JFFS2_SB_FLAG_MOUNTING 2
--#ifdef CONFIG_JFFS2_NODEMERGE
--#define JFFS2_SB_FLAG_GCING_A_BLOCK 4
--#else
--#define JFFS2_SB_FLAG_GCING_A_BLOCK 0
--#endif
-
- /* A struct for the overall file system control. Pointers to
- jffs2_sb_info structs are named `c' in the source code.
-@@ -44,41 +21,36 @@
- struct jffs2_sb_info {
- struct mtd_info *mtd;
-
-- uint32_t highest_ino;
-- uint32_t checked_ino;
--
-+ __u32 highest_ino;
- unsigned int flags;
-+ spinlock_t nodelist_lock;
-
-+ // pid_t thread_pid; /* GC thread's PID */
- struct task_struct *gc_task; /* GC task struct */
- struct semaphore gc_thread_start; /* GC thread start mutex */
- struct completion gc_thread_exit; /* GC thread exit completion port */
-+ // __u32 gc_minfree_threshold; /* GC trigger thresholds */
-+ // __u32 gc_maxdirty_threshold;
-
- struct semaphore alloc_sem; /* Used to protect all the following
- fields, and also to protect against
- out-of-order writing of nodes.
- And GC.
- */
-- uint32_t cleanmarker_size; /* Size of an _inline_ CLEANMARKER
-- (i.e. zero for OOB CLEANMARKER */
--
-- uint32_t flash_size;
-- uint32_t used_size;
-- uint32_t dirty_size;
-- uint32_t wasted_size;
-- uint32_t free_size;
-- uint32_t erasing_size;
-- uint32_t bad_size;
-- uint32_t sector_size;
-- uint32_t unchecked_size;
-- uint32_t erasing_dirty_size;
--
-- uint32_t nr_free_blocks;
-- uint32_t nr_erasing_blocks;
-- int32_t nr_bad_blocks;
-+ __u32 flash_size;
-+ __u32 used_size;
-+ __u32 dirty_size;
-+ __u32 free_size;
-+ __u32 erasing_size;
-+ __u32 bad_size;
-+ __u32 sector_size;
-+ // __u32 min_free_size;
-+ // __u32 max_chunk_size;
-
-- uint32_t cont_gc_count;
-+ __u32 nr_free_blocks;
-+ __u32 nr_erasing_blocks;
-
-- uint32_t nr_blocks;
-+ __u32 nr_blocks;
- struct jffs2_eraseblock *blocks; /* The whole array of blocks. Used for getting blocks
- * from the offset (blocks[ofs / sector_size]) */
- struct jffs2_eraseblock *nextblock; /* The block we're currently filling */
-@@ -86,44 +58,27 @@
- struct jffs2_eraseblock *gcblock; /* The block we're currently garbage-collecting */
-
- struct list_head clean_list; /* Blocks 100% full of clean data */
-- struct list_head very_dirty_list; /* Blocks with lots of dirty space */
- struct list_head dirty_list; /* Blocks with some dirty space */
-- struct list_head erasable_list; /* Blocks which are completely dirty, and need erasing */
-- struct list_head erasable_pending_wbuf_list; /* Blocks which need erasing but only after the current wbuf is flushed */
- struct list_head erasing_list; /* Blocks which are currently erasing */
-- struct list_head erase_pending_list; /* Blocks which need erasing now */
-+ struct list_head erase_pending_list; /* Blocks which need erasing */
- struct list_head erase_complete_list; /* Blocks which are erased and need the clean marker written to them */
- struct list_head free_list; /* Blocks which are free and ready to be used */
- struct list_head bad_list; /* Bad blocks. */
- struct list_head bad_used_list; /* Bad blocks with valid data in. */
--#ifdef CONFIG_JFFS2_NODEMERGE
-- struct list_head nodemerge_list; /* Blocks with node-merge */
--#endif
-
- spinlock_t erase_completion_lock; /* Protect free_list and erasing_list
- against erase completion handler */
- wait_queue_head_t erase_wait; /* For waiting for erases to complete */
--
-- struct jffs2_inode_cache **inocache_list;
-+ struct jffs2_inode_cache *inocache_list[INOCACHE_HASHSIZE];
- spinlock_t inocache_lock;
--
-- /* Sem to allow jffs2_garbage_collect_deletion_dirent to
-- drop the erase_completion_lock while it's holding a pointer
-- to an obsoleted node. I don't like this. Alternatives welcomed. */
-- struct semaphore erase_free_sem;
--
-- /* Write-behind buffer for NAND flash */
-- unsigned char *wbuf;
-- uint32_t wbuf_ofs;
-- uint32_t wbuf_len;
-- uint32_t wbuf_pagesize;
-- struct tq_struct wbuf_task; /* task for timed wbuf flush */
-- struct timer_list wbuf_timer; /* timer for flushing wbuf */
-+};
-
-- uint32_t effective_gc_count;
-+#ifdef JFFS2_OUT_OF_KERNEL
-+#define JFFS2_SB_INFO(sb) ((struct jffs2_sb_info *) &(sb)->u)
-+#else
-+#define JFFS2_SB_INFO(sb) (&sb->u.jffs2_sb)
-+#endif
-
-- /* OS-private pointer for getting back to master superblock info */
-- void *os_priv;
--};
-+#define OFNI_BS_2SFFJ(c) ((struct super_block *) ( ((char *)c) - ((char *)(&((struct super_block *)NULL)->u)) ) )
-
- #endif /* _JFFS2_FB_SB */
-diff -Nur linux/include/video/font.h /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/include/video/font.h
---- linux/include/video/font.h 2003-05-13 16:20:05.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/include/video/font.h 2003-06-23 01:47:04.000000000 +0700
-@@ -28,6 +28,8 @@
- #define SUN8x16_IDX 4
- #define SUN12x22_IDX 5
- #define ACORN8x8_IDX 6
-+#define CLEAN5x8_IDX 7
-+#define CLEAN4x6_IDX 8
-
- extern struct fbcon_font_desc font_vga_8x8,
- font_vga_8x16,
-@@ -35,7 +37,9 @@
- font_vga_6x11,
- font_sun_8x16,
- font_sun_12x22,
-- font_acorn_8x8;
-+ font_acorn_8x8,
-+ font_clean_5x8,
-+ font_clean_4x6;
-
- /* Find a font with a specific name */
-
-diff -Nur linux/sl5000d_cacko /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/sl5000d_cacko
---- linux/sl5000d_cacko 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/sl5000d_cacko 2003-06-23 01:47:04.000000000 +0700
-@@ -0,0 +1,1051 @@
-+#
-+# Automatically generated by make menuconfig: don't edit
-+#
-+CONFIG_ARM=y
-+# CONFIG_EISA is not set
-+# CONFIG_SBUS is not set
-+# CONFIG_MCA is not set
-+CONFIG_UID16=y
-+CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-+# CONFIG_GENERIC_BUST_SPINLOCK is not set
-+# CONFIG_GENERIC_ISA_DMA is not set
-+
-+#
-+# Code maturity level options
-+#
-+CONFIG_EXPERIMENTAL=y
-+# CONFIG_OBSOLETE is not set
-+
-+#
-+# Loadable module support
-+#
-+CONFIG_MODULES=y
-+# CONFIG_MODVERSIONS is not set
-+# CONFIG_KMOD is not set
-+
-+#
-+# System Type
-+#
-+# CONFIG_ARCH_ANAKIN is not set
-+# CONFIG_ARCH_ARCA5K is not set
-+# CONFIG_ARCH_CLPS7500 is not set
-+# CONFIG_ARCH_CLPS711X is not set
-+# CONFIG_ARCH_CO285 is not set
-+# CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_CAMELOT is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_INTEGRATOR is not set
-+# CONFIG_ARCH_L7200 is not set
-+# CONFIG_ARCH_MX1ADS is not set
-+# CONFIG_ARCH_RPC is not set
-+CONFIG_ARCH_SA1100=y
-+# CONFIG_ARCH_SHARK is not set
-+
-+#
-+# Archimedes/A5000 Implementations
-+#
-+# CONFIG_ARCH_ARC is not set
-+# CONFIG_ARCH_A5K is not set
-+
-+#
-+# Footbridge Implementations
-+#
-+# CONFIG_ARCH_CATS is not set
-+# CONFIG_ARCH_PERSONAL_SERVER is not set
-+# CONFIG_ARCH_EBSA285_ADDIN is not set
-+# CONFIG_ARCH_EBSA285_HOST is not set
-+# CONFIG_ARCH_NETWINDER is not set
-+
-+#
-+# SA11x0 Implementations
-+#
-+# CONFIG_SA1100_ASSABET is not set
-+# CONFIG_ASSABET_NEPONSET is not set
-+# CONFIG_SA1100_ADSBITSY is not set
-+# CONFIG_SA1100_BRUTUS is not set
-+# CONFIG_SA1100_CEP is not set
-+# CONFIG_SA1100_CERF is not set
-+CONFIG_SA1100_COLLIE=y
-+CONFIG_LOCOMO=y
-+# CONFIG_COLLIE_TS is not set
-+# CONFIG_COLLIE_TR0 is not set
-+# CONFIG_COLLIE_TR1 is not set
-+CONFIG_COLLIE_DEV=y
-+# CONFIG_COLLIE_G is not set
-+# CONFIG_COLLIE_UP is not set
-+# CONFIG_SA1100_H3100 is not set
-+# CONFIG_SA1100_H3600 is not set
-+# CONFIG_SA1100_H3800 is not set
-+# CONFIG_SA1100_H3XXX is not set
-+# CONFIG_SA1100_EXTENEX1 is not set
-+# CONFIG_SA1100_FLEXANET is not set
-+# CONFIG_SA1100_FREEBIRD is not set
-+# CONFIG_SA1100_FRODO is not set
-+# CONFIG_SA1100_GRAPHICSCLIENT is not set
-+# CONFIG_SA1100_GRAPHICSMASTER is not set
-+# CONFIG_SA1100_BADGE4 is not set
-+# CONFIG_SA1100_JORNADA720 is not set
-+# CONFIG_SA1100_HUW_WEBPANEL is not set
-+# CONFIG_SA1100_ITSY is not set
-+# CONFIG_SA1100_LART is not set
-+# CONFIG_SA1100_NANOENGINE is not set
-+# CONFIG_SA1100_OMNIMETER is not set
-+# CONFIG_SA1100_PANGOLIN is not set
-+# CONFIG_SA1100_PLEB is not set
-+# CONFIG_SA1100_PT_SYSTEM3 is not set
-+# CONFIG_SA1100_SHANNON is not set
-+# CONFIG_SA1100_SHERMAN is not set
-+# CONFIG_SA1100_SIMPAD is not set
-+# CONFIG_SA1100_PFS168 is not set
-+# CONFIG_SA1100_VICTOR is not set
-+# CONFIG_SA1100_XP860 is not set
-+# CONFIG_SA1100_YOPY is not set
-+# CONFIG_SA1100_USB is not set
-+# CONFIG_SA1100_USB_NETLINK is not set
-+# CONFIG_SA1100_USB_CHAR is not set
-+# CONFIG_H3600_SLEEVE is not set
-+
-+#
-+# Intel PXA250/210 Implementations
-+#
-+# CONFIG_ARCH_LUBBOCK is not set
-+# CONFIG_ARCH_PXA_IDP is not set
-+# CONFIG_ARCH_PXA_CERF is not set
-+# CONFIG_COTULLA_DMA is not set
-+# CONFIG_SABINAL_DISCOVERY is not set
-+# CONFIG_ARCH_SABINAL is not set
-+# CONFIG_ARCH_PXA_POODLE is not set
-+# CONFIG_POODLE_TR0 is not set
-+# CONFIG_ARCH_PXA_CORGI is not set
-+# CONFIG_CORGI_TR0 is not set
-+CONFIG_ARCH_SHARP_SL=y
-+# CONFIG_PXA_USB is not set
-+# CONFIG_PXA_USB_NETLINK is not set
-+# CONFIG_PXA_USB_CHAR is not set
-+
-+#
-+# CLPS711X/EP721X Implementations
-+#
-+# CONFIG_ARCH_AUTCPU12 is not set
-+# CONFIG_ARCH_CDB89712 is not set
-+# CONFIG_ARCH_CLEP7312 is not set
-+# CONFIG_ARCH_EDB7211 is not set
-+# CONFIG_ARCH_P720T is not set
-+# CONFIG_ARCH_FORTUNET is not set
-+# CONFIG_ARCH_EP7211 is not set
-+# CONFIG_ARCH_EP7212 is not set
-+# CONFIG_ARCH_ACORN is not set
-+# CONFIG_FOOTBRIDGE is not set
-+# CONFIG_FOOTBRIDGE_HOST is not set
-+# CONFIG_FOOTBRIDGE_ADDIN is not set
-+CONFIG_CPU_32=y
-+# CONFIG_CPU_26 is not set
-+# CONFIG_CPU_32v3 is not set
-+CONFIG_CPU_32v4=y
-+# CONFIG_CPU_ARM610 is not set
-+# CONFIG_CPU_ARM710 is not set
-+# CONFIG_CPU_ARM720T is not set
-+# CONFIG_CPU_ARM920T is not set
-+# CONFIG_CPU_ARM922T is not set
-+# CONFIG_PLD is not set
-+# CONFIG_CPU_ARM926T is not set
-+# CONFIG_CPU_ARM1020 is not set
-+# CONFIG_CPU_SA110 is not set
-+CONFIG_CPU_SA1100=y
-+# CONFIG_ARM_THUMB is not set
-+CONFIG_DISCONTIGMEM=y
-+
-+#
-+# General setup
-+#
-+# CONFIG_PCI is not set
-+CONFIG_ISA=y
-+# CONFIG_ISA_DMA is not set
-+# CONFIG_ZBOOT_ROM is not set
-+CONFIG_ZBOOT_ROM_TEXT=0
-+CONFIG_ZBOOT_ROM_BSS=0
-+# CONFIG_CPU_FREQ is not set
-+CONFIG_HOTPLUG=y
-+
-+#
-+# PCMCIA/CardBus support
-+#
-+CONFIG_PCMCIA=y
-+CONFIG_PCMCIA_PROBE=y
-+# CONFIG_I82092 is not set
-+# CONFIG_I82365 is not set
-+# CONFIG_TCIC is not set
-+# CONFIG_PCMCIA_CLPS6700 is not set
-+CONFIG_PCMCIA_SA1100=y
-+# CONFIG_PCMCIA_PXA is not set
-+CONFIG_NET=y
-+CONFIG_SYSVIPC=y
-+# CONFIG_BSD_PROCESS_ACCT is not set
-+CONFIG_SYSCTL=y
-+CONFIG_FPE_NWFPE=y
-+# CONFIG_FPE_FASTFPE is not set
-+CONFIG_KCORE_ELF=y
-+# CONFIG_KCORE_AOUT is not set
-+# CONFIG_BINFMT_AOUT is not set
-+CONFIG_BINFMT_ELF=y
-+# CONFIG_BINFMT_MISC is not set
-+CONFIG_PM=y
-+CONFIG_APM=y
-+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-+CONFIG_APM_CPU_IDLE=y
-+CONFIG_APM_DISPLAY_BLANK=y
-+CONFIG_APM_RTC_IS_GMT=y
-+# CONFIG_ARTHUR is not set
-+CONFIG_CMDLINE="root=/dev/mtdblock4 mem=32M rootfstype=jffs2"
-+# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-+# CONFIG_LEDS is not set
-+CONFIG_ALIGNMENT_TRAP=y
-+CONFIG_FREEPG_SIGNAL=y
-+CONFIG_OOM_KILL_SURVIVAL=y
-+CONFIG_DEVICEINFO=m
-+CONFIG_COLLIE_DEVICEINFO=m
-+
-+#
-+# Parallel port support
-+#
-+# CONFIG_PARPORT is not set
-+
-+#
-+# Memory Technology Devices (MTD)
-+#
-+CONFIG_MTD=y
-+# CONFIG_MTD_DEBUG is not set
-+CONFIG_MTD_PARTITIONS=y
-+# CONFIG_MTD_CONCAT is not set
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+# CONFIG_CACKO_HYBRID_PARTITIONS is not set
-+# CONFIG_MTD_CMDLINE_PARTS is not set
-+# CONFIG_MTD_AFS_PARTS is not set
-+CONFIG_MTD_CHAR=y
-+CONFIG_MTD_BLOCK=y
-+# CONFIG_FTL is not set
-+# CONFIG_NFTL is not set
-+
-+#
-+# RAM/ROM/Flash chip drivers
-+#
-+# CONFIG_MTD_CFI is not set
-+# CONFIG_MTD_JEDECPROBE is not set
-+# CONFIG_MTD_GEN_PROBE is not set
-+# CONFIG_MTD_CFI_INTELEXT is not set
-+# CONFIG_MTD_CFI_AMDSTD is not set
-+# CONFIG_MTD_CFI_STAA is not set
-+# CONFIG_MTD_RAM is not set
-+# CONFIG_MTD_ROM is not set
-+# CONFIG_MTD_ABSENT is not set
-+CONFIG_MTD_COLLIE=y
-+# CONFIG_MTD_OBSOLETE_CHIPS is not set
-+# CONFIG_MTD_AMDSTD is not set
-+# CONFIG_MTD_SHARP is not set
-+# CONFIG_MTD_JEDEC is not set
-+
-+#
-+# Mapping drivers for chip access
-+#
-+# CONFIG_MTD_PHYSMAP is not set
-+# CONFIG_MTD_LUBBOCK is not set
-+# CONFIG_MTD_NORA is not set
-+# CONFIG_MTD_ARM_INTEGRATOR is not set
-+# CONFIG_MTD_CDB89712 is not set
-+CONFIG_MTD_SA1100=y
-+# CONFIG_MTD_DC21285 is not set
-+# CONFIG_MTD_IQ80310 is not set
-+# CONFIG_MTD_FORTUNET is not set
-+# CONFIG_MTD_PXA_CERF is not set
-+# CONFIG_MTD_EPXA10DB is not set
-+# CONFIG_MTD_AUTCPU12 is not set
-+# CONFIG_MTD_EDB7312 is not set
-+# CONFIG_MTD_IMPA7 is not set
-+# CONFIG_MTD_DISCOVERY is not set
-+# CONFIG_MTD_SHARP_SL is not set
-+# CONFIG_MTD_PCI is not set
-+
-+#
-+# Self-contained MTD device drivers
-+#
-+# CONFIG_MTD_PMC551 is not set
-+# CONFIG_MTD_SLRAM is not set
-+# CONFIG_MTD_MTDROM_SA1100 is not set
-+# CONFIG_MTD_MTDRAM_SA1100 is not set
-+# CONFIG_MTD_MTDRAM is not set
-+# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-+# CONFIG_MTD_BLKMTD is not set
-+# CONFIG_MTD_DOC1000 is not set
-+# CONFIG_MTD_DOC2000 is not set
-+# CONFIG_MTD_DOC2001 is not set
-+# CONFIG_MTD_DOCPROBE is not set
-+
-+#
-+# NAND Flash Device Drivers
-+#
-+# CONFIG_MTD_NAND is not set
-+
-+#
-+# Plug and Play configuration
-+#
-+# CONFIG_PNP is not set
-+# CONFIG_ISAPNP is not set
-+
-+#
-+# Block devices
-+#
-+# CONFIG_BLK_DEV_FD is not set
-+# CONFIG_BLK_DEV_XD is not set
-+# CONFIG_PARIDE is not set
-+# CONFIG_BLK_CPQ_DA is not set
-+# CONFIG_BLK_CPQ_CISS_DA is not set
-+# CONFIG_BLK_DEV_DAC960 is not set
-+CONFIG_BLK_DEV_LOOP=y
-+# CONFIG_BLK_DEV_NBD is not set
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_SIZE=1024
-+# CONFIG_BLK_DEV_INITRD is not set
-+
-+#
-+# Multi-device support (RAID and LVM)
-+#
-+# CONFIG_MD is not set
-+# CONFIG_BLK_DEV_MD is not set
-+# CONFIG_MD_LINEAR is not set
-+# CONFIG_MD_RAID0 is not set
-+# CONFIG_MD_RAID1 is not set
-+# CONFIG_MD_RAID5 is not set
-+# CONFIG_MD_MULTIPATH is not set
-+# CONFIG_BLK_DEV_LVM is not set
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+CONFIG_PACKET_MMAP=y
-+# CONFIG_NETLINK_DEV is not set
-+# CONFIG_NETFILTER is not set
-+# CONFIG_FILTER is not set
-+CONFIG_UNIX=y
-+CONFIG_INET=y
-+# CONFIG_IP_MULTICAST is not set
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_ARPD is not set
-+# CONFIG_INET_ECN is not set
-+# CONFIG_SYN_COOKIES is not set
-+# CONFIG_IPV6 is not set
-+# CONFIG_KHTTPD is not set
-+# CONFIG_ATM is not set
-+# CONFIG_VLAN_8021Q is not set
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_LLC is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_FASTROUTE is not set
-+# CONFIG_NET_HW_FLOWCONTROL is not set
-+
-+#
-+# QoS and/or fair queueing
-+#
-+# CONFIG_NET_SCHED is not set
-+
-+#
-+# Network device support
-+#
-+CONFIG_NETDEVICES=y
-+
-+#
-+# ARCnet devices
-+#
-+# CONFIG_ARCNET is not set
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_ETHERTAP is not set
-+
-+#
-+# Ethernet (10 or 100Mbit)
-+#
-+CONFIG_NET_ETHERNET=y
-+# CONFIG_ARM_AM79C961A is not set
-+# CONFIG_SUNLANCE is not set
-+# CONFIG_SUNBMAC is not set
-+# CONFIG_SUNQE is not set
-+# CONFIG_SUNGEM is not set
-+# CONFIG_NET_VENDOR_3COM is not set
-+# CONFIG_LANCE is not set
-+# CONFIG_NET_VENDOR_SMC is not set
-+# CONFIG_NET_VENDOR_RACAL is not set
-+# CONFIG_AT1700 is not set
-+# CONFIG_DEPCA is not set
-+# CONFIG_HP100 is not set
-+# CONFIG_NET_ISA is not set
-+# CONFIG_NET_PCI is not set
-+# CONFIG_NET_POCKET is not set
-+
-+#
-+# Ethernet (1000 Mbit)
-+#
-+# CONFIG_ACENIC is not set
-+# CONFIG_DL2K is not set
-+# CONFIG_MYRI_SBUS is not set
-+# CONFIG_NS83820 is not set
-+# CONFIG_HAMACHI is not set
-+# CONFIG_YELLOWFIN is not set
-+# CONFIG_SK98LIN is not set
-+# CONFIG_FDDI is not set
-+# CONFIG_HIPPI is not set
-+# CONFIG_PLIP is not set
-+CONFIG_PPP=y
-+# CONFIG_PPP_MULTILINK is not set
-+# CONFIG_PPP_FILTER is not set
-+CONFIG_PPP_ASYNC=y
-+# CONFIG_PPP_SYNC_TTY is not set
-+CONFIG_PPP_DEFLATE=y
-+CONFIG_PPP_BSDCOMP=y
-+# CONFIG_PPPOE is not set
-+# CONFIG_SLIP is not set
-+
-+#
-+# Wireless LAN (non-hamradio)
-+#
-+CONFIG_NET_RADIO=y
-+# CONFIG_STRIP is not set
-+# CONFIG_WAVELAN is not set
-+# CONFIG_ARLAN is not set
-+# CONFIG_AIRONET4500 is not set
-+# CONFIG_AIRONET4500_NONCS is not set
-+# CONFIG_AIRONET4500_PROC is not set
-+# CONFIG_AIRO is not set
-+CONFIG_HERMES=y
-+CONFIG_PCMCIA_HERMES=y
-+CONFIG_AIRO_CS=y
-+CONFIG_NET_WIRELESS=y
-+
-+#
-+# Token Ring devices
-+#
-+# CONFIG_TR is not set
-+# CONFIG_NET_FC is not set
-+# CONFIG_RCPCI is not set
-+# CONFIG_SHAPER is not set
-+
-+#
-+# Wan interfaces
-+#
-+# CONFIG_WAN is not set
-+
-+#
-+# PCMCIA network device support
-+#
-+CONFIG_NET_PCMCIA=y
-+# CONFIG_PCMCIA_3C589 is not set
-+# CONFIG_PCMCIA_3C574 is not set
-+# CONFIG_PCMCIA_FMVJ18X is not set
-+CONFIG_PCMCIA_PCNET=y
-+# CONFIG_PCMCIA_AXNET is not set
-+# CONFIG_PCMCIA_NMCLAN is not set
-+# CONFIG_PCMCIA_SMC91C92 is not set
-+# CONFIG_PCMCIA_XIRC2PS is not set
-+# CONFIG_ARCNET_COM20020_CS is not set
-+# CONFIG_PCMCIA_IBMTR is not set
-+# CONFIG_NET_PCMCIA_RADIO is not set
-+
-+#
-+# Amateur Radio support
-+#
-+# CONFIG_HAMRADIO is not set
-+
-+#
-+# IrDA (infrared) support
-+#
-+CONFIG_IRDA=y
-+CONFIG_IRLAN=y
-+CONFIG_IRNET=y
-+CONFIG_IRCOMM=y
-+# CONFIG_IRDA_ULTRA is not set
-+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-+CONFIG_IRDA_FAST_RR=y
-+# CONFIG_IRDA_DEBUG is not set
-+
-+#
-+# Infrared-port device drivers
-+#
-+CONFIG_IRTTY_SIR=y
-+CONFIG_IRPORT_SIR=y
-+# CONFIG_DONGLE is not set
-+# CONFIG_USB_IRDA is not set
-+# CONFIG_NSC_FIR is not set
-+# CONFIG_WINBOND_FIR is not set
-+# CONFIG_TOSHIBA_FIR is not set
-+# CONFIG_SMC_IRCC_FIR is not set
-+# CONFIG_ALI_FIR is not set
-+# CONFIG_VLSI_FIR is not set
-+CONFIG_SA1100_FIR=y
-+
-+#
-+# ATA/IDE/MFM/RLL support
-+#
-+CONFIG_IDE=y
-+
-+#
-+# IDE, ATA and ATAPI Block devices
-+#
-+CONFIG_BLK_DEV_IDE=y
-+# CONFIG_BLK_DEV_HD_IDE is not set
-+# CONFIG_BLK_DEV_HD is not set
-+CONFIG_BLK_DEV_IDEDISK=y
-+# CONFIG_IDEDISK_MULTI_MODE is not set
-+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-+# CONFIG_BLK_DEV_IDEDISK_WD is not set
-+# CONFIG_BLK_DEV_COMMERIAL is not set
-+# CONFIG_BLK_DEV_TIVO is not set
-+CONFIG_BLK_DEV_IDECS=y
-+# CONFIG_BLK_DEV_IDECD is not set
-+# CONFIG_BLK_DEV_IDETAPE is not set
-+# CONFIG_BLK_DEV_IDEFLOPPY is not set
-+# CONFIG_BLK_DEV_IDESCSI is not set
-+# CONFIG_BLK_DEV_CMD640 is not set
-+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-+# CONFIG_BLK_DEV_ISAPNP is not set
-+# CONFIG_IDE_CHIPSETS is not set
-+# CONFIG_IDEDMA_AUTO is not set
-+# CONFIG_DMA_NONPCI is not set
-+# CONFIG_BLK_DEV_IDE_MODES is not set
-+# CONFIG_BLK_DEV_ATARAID is not set
-+# CONFIG_BLK_DEV_ATARAID_PDC is not set
-+# CONFIG_BLK_DEV_ATARAID_HPT is not set
-+
-+#
-+# SCSI support
-+#
-+# CONFIG_SCSI is not set
-+
-+#
-+# I2O device support
-+#
-+# CONFIG_I2O is not set
-+# CONFIG_I2O_BLOCK is not set
-+# CONFIG_I2O_LAN is not set
-+# CONFIG_I2O_SCSI is not set
-+# CONFIG_I2O_PROC is not set
-+
-+#
-+# ISDN subsystem
-+#
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input core support
-+#
-+# CONFIG_INPUT is not set
-+# CONFIG_INPUT_KEYBDEV is not set
-+# CONFIG_INPUT_MOUSEDEV is not set
-+# CONFIG_INPUT_JOYDEV is not set
-+# CONFIG_INPUT_EVDEV is not set
-+
-+#
-+# Character devices
-+#
-+CONFIG_VT=y
-+# CONFIG_VT_CONSOLE is not set
-+CONFIG_SERIAL=m
-+CONFIG_SERIAL_COLLIE=y
-+# CONFIG_SERIAL_COLLIE_CONSOLE is not set
-+CONFIG_COLLIE_DEFAULT_BAUDRATE=9600
-+# CONFIG_SERIAL_EXTENDED is not set
-+# CONFIG_SERIAL_NONSTANDARD is not set
-+
-+#
-+# Serial drivers
-+#
-+# CONFIG_SERIAL_ANAKIN is not set
-+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-+# CONFIG_SERIAL_AMBA is not set
-+# CONFIG_SERIAL_AMBA_CONSOLE is not set
-+# CONFIG_SERIAL_CLPS711X is not set
-+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-+# CONFIG_SERIAL_21285 is not set
-+# CONFIG_SERIAL_21285_OLD is not set
-+# CONFIG_SERIAL_21285_CONSOLE is not set
-+# CONFIG_SERIAL_UART00 is not set
-+# CONFIG_SERIAL_UART00_CONSOLE is not set
-+# CONFIG_SERIAL_SA1100 is not set
-+# CONFIG_SERIAL_SA1100_CONSOLE is not set
-+# CONFIG_SERIAL_8250 is not set
-+# CONFIG_SERIAL_8250_CONSOLE is not set
-+# CONFIG_SERIAL_8250_EXTENDED is not set
-+# CONFIG_SERIAL_8250_MANY_PORTS is not set
-+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-+# CONFIG_SERIAL_8250_MULTIPORT is not set
-+# CONFIG_SERIAL_8250_HUB6 is not set
-+CONFIG_UCB1200=y
-+CONFIG_TOUCHSCREEN_UCB1200=y
-+# CONFIG_AUDIO_UCB1200 is not set
-+# CONFIG_ADC_UCB1200 is not set
-+CONFIG_UNIX98_PTYS=y
-+CONFIG_UNIX98_PTY_COUNT=32
-+
-+#
-+# I2C support
-+#
-+# CONFIG_I2C is not set
-+
-+#
-+# L3 serial bus support
-+#
-+# CONFIG_L3 is not set
-+# CONFIG_L3_ALGOBIT is not set
-+# CONFIG_L3_BIT_SA1100_GPIO is not set
-+# CONFIG_L3_SA1111 is not set
-+# CONFIG_BIT_SA1100_GPIO is not set
-+
-+#
-+# Mice
-+#
-+# CONFIG_BUSMOUSE is not set
-+# CONFIG_MOUSE is not set
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_INPUT_GAMEPORT is not set
-+# CONFIG_QIC02_TAPE is not set
-+
-+#
-+# Watchdog Cards
-+#
-+# CONFIG_WATCHDOG is not set
-+# CONFIG_INTEL_RNG is not set
-+# CONFIG_NVRAM is not set
-+# CONFIG_RTC is not set
-+CONFIG_SA1100_RTC=y
-+# CONFIG_COTULLA_RTC is not set
-+# CONFIG_ADS7846_TS is not set
-+# CONFIG_DTLK is not set
-+# CONFIG_R3964 is not set
-+# CONFIG_APPLICOM is not set
-+
-+#
-+# Ftape, the floppy tape device driver
-+#
-+# CONFIG_FTAPE is not set
-+# CONFIG_AGP is not set
-+# CONFIG_DRM is not set
-+
-+#
-+# PCMCIA character devices
-+#
-+CONFIG_PCMCIA_SERIAL_CS=m
-+
-+#
-+# Multimedia devices
-+#
-+# CONFIG_VIDEO_DEV is not set
-+
-+#
-+# File systems
-+#
-+# CONFIG_QUOTA is not set
-+# CONFIG_AUTOFS_FS is not set
-+# CONFIG_AUTOFS4_FS is not set
-+CONFIG_FS_SYNC=y
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_REISERFS_CHECK is not set
-+# CONFIG_REISERFS_PROC_INFO is not set
-+# CONFIG_ADFS_FS is not set
-+# CONFIG_ADFS_FS_RW is not set
-+# CONFIG_AFFS_FS is not set
-+# CONFIG_HFS_FS is not set
-+# CONFIG_BFS_FS is not set
-+# CONFIG_EXT3_FS is not set
-+# CONFIG_JBD is not set
-+# CONFIG_JBD_DEBUG is not set
-+CONFIG_FAT_FS=y
-+# CONFIG_MSDOS_FS is not set
-+# CONFIG_UMSDOS_FS is not set
-+CONFIG_VFAT_FS=y
-+# CONFIG_EFS_FS is not set
-+# CONFIG_JFFS_FS is not set
-+CONFIG_JFFS2_FS=y
-+CONFIG_JFFS2_FS_DEBUG=0
-+# CONFIG_JFFS2_FS_NAND is not set
-+# CONFIG_JFFS2_PROC_FS is not set
-+# CONFIG_JFFS2_NODEMERGE is not set
-+# CONFIG_JFFS2_DYNFRAGTREE is not set
-+CONFIG_CRAMFS=y
-+CONFIG_TMPFS=y
-+CONFIG_RAMFS=y
-+# CONFIG_ISO9660_FS is not set
-+# CONFIG_JOLIET is not set
-+# CONFIG_ZISOFS is not set
-+CONFIG_MINIX_FS=y
-+# CONFIG_VXFS_FS is not set
-+# CONFIG_NTFS_FS is not set
-+# CONFIG_NTFS_RW is not set
-+# CONFIG_HPFS_FS is not set
-+CONFIG_PROC_FS=y
-+# CONFIG_DEVFS_FS is not set
-+# CONFIG_DEVFS_MOUNT is not set
-+# CONFIG_DEVFS_DEBUG is not set
-+CONFIG_DEVPTS_FS=y
-+# CONFIG_QNX4FS_FS is not set
-+# CONFIG_QNX4FS_RW is not set
-+# CONFIG_ROMFS_FS is not set
-+CONFIG_EXT2_FS=y
-+# CONFIG_SYSV_FS is not set
-+# CONFIG_UDF_FS is not set
-+# CONFIG_UDF_RW is not set
-+# CONFIG_UFS_FS is not set
-+# CONFIG_UFS_FS_WRITE is not set
-+
-+#
-+# Network File Systems
-+#
-+# CONFIG_CODA_FS is not set
-+# CONFIG_INTERMEZZO_FS is not set
-+CONFIG_NFS_FS=y
-+CONFIG_NFS_V3=y
-+# CONFIG_ROOT_NFS is not set
-+# CONFIG_NFSD is not set
-+# CONFIG_NFSD_V3 is not set
-+CONFIG_SUNRPC=y
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=y
-+CONFIG_SMB_FS=y
-+CONFIG_SMB_NLS_DEFAULT=y
-+CONFIG_SMB_NLS_REMOTE="cp437"
-+# CONFIG_NCP_FS is not set
-+# CONFIG_NCPFS_PACKET_SIGNING is not set
-+# CONFIG_NCPFS_IOCTL_LOCKING is not set
-+# CONFIG_NCPFS_STRONG is not set
-+# CONFIG_NCPFS_NFS_NS is not set
-+# CONFIG_NCPFS_OS2_NS is not set
-+# CONFIG_NCPFS_SMALLDOS is not set
-+# CONFIG_NCPFS_NLS is not set
-+# CONFIG_NCPFS_EXTRAS is not set
-+# CONFIG_ZISOFS_FS is not set
-+CONFIG_ZLIB_FS_INFLATE=y
-+
-+#
-+# Partition Types
-+#
-+# CONFIG_PARTITION_ADVANCED is not set
-+CONFIG_MSDOS_PARTITION=y
-+CONFIG_SMB_NLS=y
-+CONFIG_NLS=y
-+
-+#
-+# Native Language Support
-+#
-+CONFIG_NLS_DEFAULT="iso8859-1"
-+# CONFIG_NLS_CODEPAGE_437 is not set
-+# CONFIG_NLS_CODEPAGE_737 is not set
-+# CONFIG_NLS_CODEPAGE_775 is not set
-+# CONFIG_NLS_CODEPAGE_850 is not set
-+# CONFIG_NLS_CODEPAGE_852 is not set
-+# CONFIG_NLS_CODEPAGE_855 is not set
-+# CONFIG_NLS_CODEPAGE_857 is not set
-+# CONFIG_NLS_CODEPAGE_860 is not set
-+# CONFIG_NLS_CODEPAGE_861 is not set
-+# CONFIG_NLS_CODEPAGE_862 is not set
-+# CONFIG_NLS_CODEPAGE_863 is not set
-+# CONFIG_NLS_CODEPAGE_864 is not set
-+# CONFIG_NLS_CODEPAGE_865 is not set
-+# CONFIG_NLS_CODEPAGE_866 is not set
-+# CONFIG_NLS_CODEPAGE_869 is not set
-+# CONFIG_NLS_CODEPAGE_936 is not set
-+# CONFIG_NLS_CODEPAGE_950 is not set
-+# CONFIG_NLS_CODEPAGE_932 is not set
-+# CONFIG_NLS_CODEPAGE_949 is not set
-+# CONFIG_NLS_CODEPAGE_874 is not set
-+# CONFIG_NLS_ISO8859_8 is not set
-+# CONFIG_NLS_CODEPAGE_1250 is not set
-+# CONFIG_NLS_CODEPAGE_1251 is not set
-+# CONFIG_NLS_ISO8859_1 is not set
-+# CONFIG_NLS_ISO8859_2 is not set
-+# CONFIG_NLS_ISO8859_3 is not set
-+# CONFIG_NLS_ISO8859_4 is not set
-+# CONFIG_NLS_ISO8859_5 is not set
-+# CONFIG_NLS_ISO8859_6 is not set
-+# CONFIG_NLS_ISO8859_7 is not set
-+# CONFIG_NLS_ISO8859_9 is not set
-+# CONFIG_NLS_ISO8859_13 is not set
-+# CONFIG_NLS_ISO8859_14 is not set
-+# CONFIG_NLS_ISO8859_15 is not set
-+# CONFIG_NLS_KOI8_R is not set
-+# CONFIG_NLS_KOI8_U is not set
-+CONFIG_NLS_UTF8=y
-+
-+#
-+# Console drivers
-+#
-+CONFIG_PC_KEYMAP=y
-+# CONFIG_VGA_CONSOLE is not set
-+
-+#
-+# Frame-buffer support
-+#
-+CONFIG_FB=y
-+CONFIG_DUMMY_CONSOLE=y
-+CONFIG_FB_COLLIE=y
-+# CONFIG_FB_ACORN is not set
-+# CONFIG_FB_ANAKIN is not set
-+# CONFIG_FB_CLPS711X is not set
-+# CONFIG_FB_SA1100 is not set
-+# CONFIG_FB_PXA is not set
-+# CONFIG_FB_COTULLA is not set
-+# CONFIG_FB_POODLE is not set
-+# CONFIG_FB_CORGI is not set
-+# CONFIG_SHARP_LOGO_SCREEN is not set
-+# CONFIG_FB_CYBER2000 is not set
-+# CONFIG_FB_VIRTUAL is not set
-+CONFIG_FBCON_ADVANCED=y
-+# CONFIG_FBCON_MFB is not set
-+# CONFIG_FBCON_CFB2 is not set
-+# CONFIG_FBCON_CFB4 is not set
-+# CONFIG_FBCON_CFB8 is not set
-+CONFIG_FBCON_CFB16=y
-+# CONFIG_FBCON_CFB24 is not set
-+# CONFIG_FBCON_CFB32 is not set
-+# CONFIG_FBCON_AFB is not set
-+# CONFIG_FBCON_ILBM is not set
-+# CONFIG_FBCON_IPLAN2P2 is not set
-+# CONFIG_FBCON_IPLAN2P4 is not set
-+# CONFIG_FBCON_IPLAN2P8 is not set
-+# CONFIG_FBCON_MAC is not set
-+# CONFIG_FBCON_VGA_PLANES is not set
-+# CONFIG_FBCON_VGA is not set
-+# CONFIG_FBCON_HGA is not set
-+CONFIG_FBCON_ROTATE_R=y
-+# CONFIG_FBCON_ROTATE_L is not set
-+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-+CONFIG_FBCON_FONTS=y
-+# CONFIG_FONT_8x8 is not set
-+# CONFIG_FONT_8x16 is not set
-+# CONFIG_FONT_SUN8x16 is not set
-+# CONFIG_FONT_SUN12x22 is not set
-+# CONFIG_FONT_6x11 is not set
-+# CONFIG_FONT_5x8 is not set
-+CONFIG_FONT_4x6=y
-+# CONFIG_FONT_PEARL_8x8 is not set
-+# CONFIG_FONT_ACORN_8x8 is not set
-+
-+#
-+# Sound
-+#
-+CONFIG_SOUND=y
-+# CONFIG_SOUND_BT878 is not set
-+CONFIG_SOUND_COLLIE_SSP=y
-+CONFIG_COLLIE_PCM1741=y
-+# CONFIG_COLLIE_PCM1717 is not set
-+CONFIG_SOUND_COLLIE_TC35143=y
-+# CONFIG_SOUND_CMPCI is not set
-+# CONFIG_SOUND_EMU10K1 is not set
-+# CONFIG_MIDI_EMU10K1 is not set
-+# CONFIG_SOUND_FUSION is not set
-+# CONFIG_SOUND_CS4281 is not set
-+# CONFIG_SOUND_ES1370 is not set
-+# CONFIG_SOUND_ES1371 is not set
-+# CONFIG_SOUND_ESSSOLO1 is not set
-+# CONFIG_SOUND_MAESTRO is not set
-+# CONFIG_SOUND_MAESTRO3 is not set
-+# CONFIG_SOUND_ICH is not set
-+# CONFIG_SOUND_RME96XX is not set
-+# CONFIG_SOUND_SONICVIBES is not set
-+# CONFIG_SOUND_TRIDENT is not set
-+# CONFIG_SOUND_MSNDCLAS is not set
-+# CONFIG_SOUND_MSNDPIN is not set
-+# CONFIG_SOUND_VIA82CXXX is not set
-+# CONFIG_MIDI_VIA82CXXX is not set
-+# CONFIG_SOUND_SA1100 is not set
-+# CONFIG_SOUND_UDA1341 is not set
-+# CONFIG_SOUND_ASSABET_UDA1341 is not set
-+# CONFIG_SOUND_H3600_UDA1341 is not set
-+# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
-+# CONFIG_SOUND_SA1111_UDA1341 is not set
-+# CONFIG_SOUND_SA1100SSP is not set
-+# CONFIG_SOUND_OSS is not set
-+# CONFIG_SOUND_WAVEARTIST is not set
-+# CONFIG_SOUND_PXA_AC97 is not set
-+# CONFIG_SOUND_POODLE is not set
-+# CONFIG_SOUND_CORGI is not set
-+# CONFIG_SOUND_TVMIXER is not set
-+
-+#
-+# Multimedia Capabilities Port drivers
-+#
-+# CONFIG_MCP is not set
-+# CONFIG_MCP_SA1100 is not set
-+# CONFIG_MCP_UCB1200 is not set
-+# CONFIG_MCP_UCB1200_AUDIO is not set
-+# CONFIG_MCP_UCB1200_TS is not set
-+# CONFIG_MCP_UCB1400_TS is not set
-+
-+#
-+# USB support
-+#
-+CONFIG_USB=m
-+# CONFIG_USB_DEBUG is not set
-+# CONFIG_USB_DEVICEFS is not set
-+# CONFIG_USB_BANDWIDTH is not set
-+# CONFIG_USB_LONG_TIMEOUT is not set
-+# CONFIG_USB_UHCI is not set
-+# CONFIG_USB_UHCI_ALT is not set
-+# CONFIG_USB_OHCI is not set
-+# CONFIG_USB_OHCI_SA1111 is not set
-+# CONFIG_USB_AUDIO is not set
-+# CONFIG_USB_BLUETOOTH is not set
-+# CONFIG_USB_STORAGE is not set
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+# CONFIG_USB_STORAGE_DPCM is not set
-+# CONFIG_USB_STORAGE_HP8200e is not set
-+# CONFIG_USB_STORAGE_SDDR09 is not set
-+# CONFIG_USB_STORAGE_JUMPSHOT is not set
-+# CONFIG_USB_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_DC2XX is not set
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_SCANNER is not set
-+# CONFIG_USB_MICROTEK is not set
-+# CONFIG_USB_HPUSBSCSI is not set
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_CDCETHER is not set
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_USB_USS720 is not set
-+
-+#
-+# USB Serial Converter support
-+#
-+# CONFIG_USB_SERIAL is not set
-+# CONFIG_USB_SERIAL_GENERIC is not set
-+# CONFIG_USB_SERIAL_BELKIN is not set
-+# CONFIG_USB_SERIAL_WHITEHEAT is not set
-+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-+# CONFIG_USB_SERIAL_EMPEG is not set
-+# CONFIG_USB_SERIAL_FTDI_SIO is not set
-+# CONFIG_USB_SERIAL_VISOR is not set
-+# CONFIG_USB_SERIAL_IPAQ is not set
-+# CONFIG_USB_SERIAL_IR is not set
-+# CONFIG_USB_SERIAL_EDGEPORT is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-+# CONFIG_USB_SERIAL_KEYSPAN is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-+# CONFIG_USB_SERIAL_MCT_U232 is not set
-+# CONFIG_USB_SERIAL_KLSI is not set
-+# CONFIG_USB_SERIAL_PL2303 is not set
-+# CONFIG_USB_SERIAL_CYBERJACK is not set
-+# CONFIG_USB_SERIAL_XIRCOM is not set
-+# CONFIG_USB_SERIAL_OMNINET is not set
-+# CONFIG_USB_RIO500 is not set
-+
-+#
-+# USB Device Support
-+#
-+CONFIG_USBD=m
-+CONFIG_USBD_VENDORID=4dd
-+CONFIG_USBD_PRODUCTID=8002
-+CONFIG_USBD_PRODUCT_NAME="SL Series"
-+CONFIG_USBD_MANUFACTURER="Sharp"
-+CONFIG_USBD_USE_SERIAL_NUMBER=y
-+CONFIG_USBD_SERIAL_NUMBER_STR="A01234"
-+CONFIG_USBD_SELFPOWERED=y
-+CONFIG_USBD_MONITOR=m
-+CONFIG_USBD_PROCFS=y
-+
-+#
-+# Network Function
-+#
-+CONFIG_USBD_NET=m
-+CONFIG_USBD_NET_VENDORID=4DD
-+CONFIG_USBD_NET_PRODUCTID=8004
-+CONFIG_USBD_NET_IFNAME="usbd"
-+CONFIG_USBD_NET_OUT_ENDPOINT=1
-+CONFIG_USBD_NET_OUT_PKTSIZE=64
-+CONFIG_USBD_NET_IN_ENDPOINT=2
-+CONFIG_USBD_NET_IN_PKTSIZE=64
-+# CONFIG_USBD_NET_ALWAYSUP is not set
-+# CONFIG_USBD_NET_SAFE is not set
-+# CONFIG_USBD_NET_MDLM is not set
-+CONFIG_USBD_NET_CDC=y
-+CONFIG_USBD_NET_REMOTE_MACADDR=""
-+CONFIG_USBD_NET_REMOTE_OUI=400002
-+# CONFIG_USBD_MAC_AS_SERIAL_NUMBER is not set
-+CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-+CONFIG_USBD_NET_LOCAL_OUI=400001
-+
-+#
-+# Serial Function
-+#
-+CONFIG_USBD_SERIAL=m
-+CONFIG_USBD_SERIAL_VENDORID=4dd
-+CONFIG_USBD_SERIAL_PRODUCTID=8002
-+# CONFIG_USBD_SERIAL_CDC is not set
-+CONFIG_USBD_SERIAL_OUT_ENDPOINT=1
-+CONFIG_USBD_SERIAL_IN_PKTSIZE=64
-+CONFIG_USBD_SERIAL_IN_ENDPOINT=2
-+CONFIG_USBD_SERIAL_OUT_PKTSIZE=64
-+# CONFIG_USBD_SERIAL_SAFE is not set
-+
-+#
-+# USB Device Bus Interface Support
-+#
-+CONFIG_USBD_SA1100_BUS=m
-+# CONFIG_USBD_TRAFFIC_KEEPAWAKE is not set
-+CONFIG_USBD_STALL_TIMEOUT=0
-+CONFIG_USBD_STALL_DISCONNECT_DURATION=2
-+# CONFIG_USBD_GENERIC_BUS is not set
-+
-+#
-+# Bluetooth support
-+#
-+# CONFIG_BLUEZ is not set
-+
-+#
-+# Kernel hacking
-+#
-+CONFIG_FRAME_POINTER=y
-+# CONFIG_DEBUG_USER is not set
-+# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-+# CONFIG_DEBUG_INFO is not set
-+# CONFIG_NO_PGT_CACHE is not set
-+# CONFIG_DEBUG_KERNEL is not set
-+# CONFIG_DEBUG_SLAB is not set
-+# CONFIG_MAGIC_SYSRQ is not set
-+# CONFIG_DEBUG_SPINLOCK is not set
-+# CONFIG_DEBUG_WAITQ is not set
-+# CONFIG_DEBUG_BUGVERBOSE is not set
-+# CONFIG_DEBUG_ERRORS is not set
-+# CONFIG_DEBUG_LL is not set
-+# CONFIG_DEBUG_DC21285_PORT is not set
-+# CONFIG_DEBUG_CLPS711X_UART2 is not set
-diff -Nur linux/sl5000d_hybrid /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/sl5000d_hybrid
---- linux/sl5000d_hybrid 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/sl5000d_hybrid 2003-06-23 01:47:04.000000000 +0700
-@@ -0,0 +1,1051 @@
-+#
-+# Automatically generated by make menuconfig: don't edit
-+#
-+CONFIG_ARM=y
-+# CONFIG_EISA is not set
-+# CONFIG_SBUS is not set
-+# CONFIG_MCA is not set
-+CONFIG_UID16=y
-+CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-+# CONFIG_GENERIC_BUST_SPINLOCK is not set
-+# CONFIG_GENERIC_ISA_DMA is not set
-+
-+#
-+# Code maturity level options
-+#
-+CONFIG_EXPERIMENTAL=y
-+# CONFIG_OBSOLETE is not set
-+
-+#
-+# Loadable module support
-+#
-+CONFIG_MODULES=y
-+# CONFIG_MODVERSIONS is not set
-+# CONFIG_KMOD is not set
-+
-+#
-+# System Type
-+#
-+# CONFIG_ARCH_ANAKIN is not set
-+# CONFIG_ARCH_ARCA5K is not set
-+# CONFIG_ARCH_CLPS7500 is not set
-+# CONFIG_ARCH_CLPS711X is not set
-+# CONFIG_ARCH_CO285 is not set
-+# CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_CAMELOT is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_INTEGRATOR is not set
-+# CONFIG_ARCH_L7200 is not set
-+# CONFIG_ARCH_MX1ADS is not set
-+# CONFIG_ARCH_RPC is not set
-+CONFIG_ARCH_SA1100=y
-+# CONFIG_ARCH_SHARK is not set
-+
-+#
-+# Archimedes/A5000 Implementations
-+#
-+# CONFIG_ARCH_ARC is not set
-+# CONFIG_ARCH_A5K is not set
-+
-+#
-+# Footbridge Implementations
-+#
-+# CONFIG_ARCH_CATS is not set
-+# CONFIG_ARCH_PERSONAL_SERVER is not set
-+# CONFIG_ARCH_EBSA285_ADDIN is not set
-+# CONFIG_ARCH_EBSA285_HOST is not set
-+# CONFIG_ARCH_NETWINDER is not set
-+
-+#
-+# SA11x0 Implementations
-+#
-+# CONFIG_SA1100_ASSABET is not set
-+# CONFIG_ASSABET_NEPONSET is not set
-+# CONFIG_SA1100_ADSBITSY is not set
-+# CONFIG_SA1100_BRUTUS is not set
-+# CONFIG_SA1100_CEP is not set
-+# CONFIG_SA1100_CERF is not set
-+CONFIG_SA1100_COLLIE=y
-+CONFIG_LOCOMO=y
-+# CONFIG_COLLIE_TS is not set
-+# CONFIG_COLLIE_TR0 is not set
-+# CONFIG_COLLIE_TR1 is not set
-+CONFIG_COLLIE_DEV=y
-+# CONFIG_COLLIE_G is not set
-+# CONFIG_COLLIE_UP is not set
-+# CONFIG_SA1100_H3100 is not set
-+# CONFIG_SA1100_H3600 is not set
-+# CONFIG_SA1100_H3800 is not set
-+# CONFIG_SA1100_H3XXX is not set
-+# CONFIG_SA1100_EXTENEX1 is not set
-+# CONFIG_SA1100_FLEXANET is not set
-+# CONFIG_SA1100_FREEBIRD is not set
-+# CONFIG_SA1100_FRODO is not set
-+# CONFIG_SA1100_GRAPHICSCLIENT is not set
-+# CONFIG_SA1100_GRAPHICSMASTER is not set
-+# CONFIG_SA1100_BADGE4 is not set
-+# CONFIG_SA1100_JORNADA720 is not set
-+# CONFIG_SA1100_HUW_WEBPANEL is not set
-+# CONFIG_SA1100_ITSY is not set
-+# CONFIG_SA1100_LART is not set
-+# CONFIG_SA1100_NANOENGINE is not set
-+# CONFIG_SA1100_OMNIMETER is not set
-+# CONFIG_SA1100_PANGOLIN is not set
-+# CONFIG_SA1100_PLEB is not set
-+# CONFIG_SA1100_PT_SYSTEM3 is not set
-+# CONFIG_SA1100_SHANNON is not set
-+# CONFIG_SA1100_SHERMAN is not set
-+# CONFIG_SA1100_SIMPAD is not set
-+# CONFIG_SA1100_PFS168 is not set
-+# CONFIG_SA1100_VICTOR is not set
-+# CONFIG_SA1100_XP860 is not set
-+# CONFIG_SA1100_YOPY is not set
-+# CONFIG_SA1100_USB is not set
-+# CONFIG_SA1100_USB_NETLINK is not set
-+# CONFIG_SA1100_USB_CHAR is not set
-+# CONFIG_H3600_SLEEVE is not set
-+
-+#
-+# Intel PXA250/210 Implementations
-+#
-+# CONFIG_ARCH_LUBBOCK is not set
-+# CONFIG_ARCH_PXA_IDP is not set
-+# CONFIG_ARCH_PXA_CERF is not set
-+# CONFIG_COTULLA_DMA is not set
-+# CONFIG_SABINAL_DISCOVERY is not set
-+# CONFIG_ARCH_SABINAL is not set
-+# CONFIG_ARCH_PXA_POODLE is not set
-+# CONFIG_POODLE_TR0 is not set
-+# CONFIG_ARCH_PXA_CORGI is not set
-+# CONFIG_CORGI_TR0 is not set
-+CONFIG_ARCH_SHARP_SL=y
-+# CONFIG_PXA_USB is not set
-+# CONFIG_PXA_USB_NETLINK is not set
-+# CONFIG_PXA_USB_CHAR is not set
-+
-+#
-+# CLPS711X/EP721X Implementations
-+#
-+# CONFIG_ARCH_AUTCPU12 is not set
-+# CONFIG_ARCH_CDB89712 is not set
-+# CONFIG_ARCH_CLEP7312 is not set
-+# CONFIG_ARCH_EDB7211 is not set
-+# CONFIG_ARCH_P720T is not set
-+# CONFIG_ARCH_FORTUNET is not set
-+# CONFIG_ARCH_EP7211 is not set
-+# CONFIG_ARCH_EP7212 is not set
-+# CONFIG_ARCH_ACORN is not set
-+# CONFIG_FOOTBRIDGE is not set
-+# CONFIG_FOOTBRIDGE_HOST is not set
-+# CONFIG_FOOTBRIDGE_ADDIN is not set
-+CONFIG_CPU_32=y
-+# CONFIG_CPU_26 is not set
-+# CONFIG_CPU_32v3 is not set
-+CONFIG_CPU_32v4=y
-+# CONFIG_CPU_ARM610 is not set
-+# CONFIG_CPU_ARM710 is not set
-+# CONFIG_CPU_ARM720T is not set
-+# CONFIG_CPU_ARM920T is not set
-+# CONFIG_CPU_ARM922T is not set
-+# CONFIG_PLD is not set
-+# CONFIG_CPU_ARM926T is not set
-+# CONFIG_CPU_ARM1020 is not set
-+# CONFIG_CPU_SA110 is not set
-+CONFIG_CPU_SA1100=y
-+# CONFIG_ARM_THUMB is not set
-+CONFIG_DISCONTIGMEM=y
-+
-+#
-+# General setup
-+#
-+# CONFIG_PCI is not set
-+CONFIG_ISA=y
-+# CONFIG_ISA_DMA is not set
-+# CONFIG_ZBOOT_ROM is not set
-+CONFIG_ZBOOT_ROM_TEXT=0
-+CONFIG_ZBOOT_ROM_BSS=0
-+# CONFIG_CPU_FREQ is not set
-+CONFIG_HOTPLUG=y
-+
-+#
-+# PCMCIA/CardBus support
-+#
-+CONFIG_PCMCIA=y
-+CONFIG_PCMCIA_PROBE=y
-+# CONFIG_I82092 is not set
-+# CONFIG_I82365 is not set
-+# CONFIG_TCIC is not set
-+# CONFIG_PCMCIA_CLPS6700 is not set
-+CONFIG_PCMCIA_SA1100=y
-+# CONFIG_PCMCIA_PXA is not set
-+CONFIG_NET=y
-+CONFIG_SYSVIPC=y
-+# CONFIG_BSD_PROCESS_ACCT is not set
-+CONFIG_SYSCTL=y
-+CONFIG_FPE_NWFPE=y
-+# CONFIG_FPE_FASTFPE is not set
-+CONFIG_KCORE_ELF=y
-+# CONFIG_KCORE_AOUT is not set
-+# CONFIG_BINFMT_AOUT is not set
-+CONFIG_BINFMT_ELF=y
-+# CONFIG_BINFMT_MISC is not set
-+CONFIG_PM=y
-+CONFIG_APM=y
-+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-+CONFIG_APM_CPU_IDLE=y
-+CONFIG_APM_DISPLAY_BLANK=y
-+CONFIG_APM_RTC_IS_GMT=y
-+# CONFIG_ARTHUR is not set
-+CONFIG_CMDLINE="root=/dev/mtdblock4 mem=32M rootfstype=cramfs"
-+# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-+# CONFIG_LEDS is not set
-+CONFIG_ALIGNMENT_TRAP=y
-+CONFIG_FREEPG_SIGNAL=y
-+CONFIG_OOM_KILL_SURVIVAL=y
-+CONFIG_DEVICEINFO=m
-+CONFIG_COLLIE_DEVICEINFO=m
-+
-+#
-+# Parallel port support
-+#
-+# CONFIG_PARPORT is not set
-+
-+#
-+# Memory Technology Devices (MTD)
-+#
-+CONFIG_MTD=y
-+# CONFIG_MTD_DEBUG is not set
-+CONFIG_MTD_PARTITIONS=y
-+# CONFIG_MTD_CONCAT is not set
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+CONFIG_CACKO_HYBRID_PARTITIONS=y
-+# CONFIG_MTD_CMDLINE_PARTS is not set
-+# CONFIG_MTD_AFS_PARTS is not set
-+CONFIG_MTD_CHAR=y
-+CONFIG_MTD_BLOCK=y
-+# CONFIG_FTL is not set
-+# CONFIG_NFTL is not set
-+
-+#
-+# RAM/ROM/Flash chip drivers
-+#
-+# CONFIG_MTD_CFI is not set
-+# CONFIG_MTD_JEDECPROBE is not set
-+# CONFIG_MTD_GEN_PROBE is not set
-+# CONFIG_MTD_CFI_INTELEXT is not set
-+# CONFIG_MTD_CFI_AMDSTD is not set
-+# CONFIG_MTD_CFI_STAA is not set
-+# CONFIG_MTD_RAM is not set
-+# CONFIG_MTD_ROM is not set
-+# CONFIG_MTD_ABSENT is not set
-+CONFIG_MTD_COLLIE=y
-+# CONFIG_MTD_OBSOLETE_CHIPS is not set
-+# CONFIG_MTD_AMDSTD is not set
-+# CONFIG_MTD_SHARP is not set
-+# CONFIG_MTD_JEDEC is not set
-+
-+#
-+# Mapping drivers for chip access
-+#
-+# CONFIG_MTD_PHYSMAP is not set
-+# CONFIG_MTD_LUBBOCK is not set
-+# CONFIG_MTD_NORA is not set
-+# CONFIG_MTD_ARM_INTEGRATOR is not set
-+# CONFIG_MTD_CDB89712 is not set
-+CONFIG_MTD_SA1100=y
-+# CONFIG_MTD_DC21285 is not set
-+# CONFIG_MTD_IQ80310 is not set
-+# CONFIG_MTD_FORTUNET is not set
-+# CONFIG_MTD_PXA_CERF is not set
-+# CONFIG_MTD_EPXA10DB is not set
-+# CONFIG_MTD_AUTCPU12 is not set
-+# CONFIG_MTD_EDB7312 is not set
-+# CONFIG_MTD_IMPA7 is not set
-+# CONFIG_MTD_DISCOVERY is not set
-+# CONFIG_MTD_SHARP_SL is not set
-+# CONFIG_MTD_PCI is not set
-+
-+#
-+# Self-contained MTD device drivers
-+#
-+# CONFIG_MTD_PMC551 is not set
-+# CONFIG_MTD_SLRAM is not set
-+# CONFIG_MTD_MTDROM_SA1100 is not set
-+# CONFIG_MTD_MTDRAM_SA1100 is not set
-+# CONFIG_MTD_MTDRAM is not set
-+# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-+# CONFIG_MTD_BLKMTD is not set
-+# CONFIG_MTD_DOC1000 is not set
-+# CONFIG_MTD_DOC2000 is not set
-+# CONFIG_MTD_DOC2001 is not set
-+# CONFIG_MTD_DOCPROBE is not set
-+
-+#
-+# NAND Flash Device Drivers
-+#
-+# CONFIG_MTD_NAND is not set
-+
-+#
-+# Plug and Play configuration
-+#
-+# CONFIG_PNP is not set
-+# CONFIG_ISAPNP is not set
-+
-+#
-+# Block devices
-+#
-+# CONFIG_BLK_DEV_FD is not set
-+# CONFIG_BLK_DEV_XD is not set
-+# CONFIG_PARIDE is not set
-+# CONFIG_BLK_CPQ_DA is not set
-+# CONFIG_BLK_CPQ_CISS_DA is not set
-+# CONFIG_BLK_DEV_DAC960 is not set
-+CONFIG_BLK_DEV_LOOP=y
-+# CONFIG_BLK_DEV_NBD is not set
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_SIZE=1024
-+# CONFIG_BLK_DEV_INITRD is not set
-+
-+#
-+# Multi-device support (RAID and LVM)
-+#
-+# CONFIG_MD is not set
-+# CONFIG_BLK_DEV_MD is not set
-+# CONFIG_MD_LINEAR is not set
-+# CONFIG_MD_RAID0 is not set
-+# CONFIG_MD_RAID1 is not set
-+# CONFIG_MD_RAID5 is not set
-+# CONFIG_MD_MULTIPATH is not set
-+# CONFIG_BLK_DEV_LVM is not set
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+CONFIG_PACKET_MMAP=y
-+# CONFIG_NETLINK_DEV is not set
-+# CONFIG_NETFILTER is not set
-+# CONFIG_FILTER is not set
-+CONFIG_UNIX=y
-+CONFIG_INET=y
-+# CONFIG_IP_MULTICAST is not set
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_ARPD is not set
-+# CONFIG_INET_ECN is not set
-+# CONFIG_SYN_COOKIES is not set
-+# CONFIG_IPV6 is not set
-+# CONFIG_KHTTPD is not set
-+# CONFIG_ATM is not set
-+# CONFIG_VLAN_8021Q is not set
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_LLC is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_FASTROUTE is not set
-+# CONFIG_NET_HW_FLOWCONTROL is not set
-+
-+#
-+# QoS and/or fair queueing
-+#
-+# CONFIG_NET_SCHED is not set
-+
-+#
-+# Network device support
-+#
-+CONFIG_NETDEVICES=y
-+
-+#
-+# ARCnet devices
-+#
-+# CONFIG_ARCNET is not set
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_ETHERTAP is not set
-+
-+#
-+# Ethernet (10 or 100Mbit)
-+#
-+CONFIG_NET_ETHERNET=y
-+# CONFIG_ARM_AM79C961A is not set
-+# CONFIG_SUNLANCE is not set
-+# CONFIG_SUNBMAC is not set
-+# CONFIG_SUNQE is not set
-+# CONFIG_SUNGEM is not set
-+# CONFIG_NET_VENDOR_3COM is not set
-+# CONFIG_LANCE is not set
-+# CONFIG_NET_VENDOR_SMC is not set
-+# CONFIG_NET_VENDOR_RACAL is not set
-+# CONFIG_AT1700 is not set
-+# CONFIG_DEPCA is not set
-+# CONFIG_HP100 is not set
-+# CONFIG_NET_ISA is not set
-+# CONFIG_NET_PCI is not set
-+# CONFIG_NET_POCKET is not set
-+
-+#
-+# Ethernet (1000 Mbit)
-+#
-+# CONFIG_ACENIC is not set
-+# CONFIG_DL2K is not set
-+# CONFIG_MYRI_SBUS is not set
-+# CONFIG_NS83820 is not set
-+# CONFIG_HAMACHI is not set
-+# CONFIG_YELLOWFIN is not set
-+# CONFIG_SK98LIN is not set
-+# CONFIG_FDDI is not set
-+# CONFIG_HIPPI is not set
-+# CONFIG_PLIP is not set
-+CONFIG_PPP=y
-+# CONFIG_PPP_MULTILINK is not set
-+# CONFIG_PPP_FILTER is not set
-+CONFIG_PPP_ASYNC=y
-+# CONFIG_PPP_SYNC_TTY is not set
-+CONFIG_PPP_DEFLATE=y
-+CONFIG_PPP_BSDCOMP=y
-+# CONFIG_PPPOE is not set
-+# CONFIG_SLIP is not set
-+
-+#
-+# Wireless LAN (non-hamradio)
-+#
-+CONFIG_NET_RADIO=y
-+# CONFIG_STRIP is not set
-+# CONFIG_WAVELAN is not set
-+# CONFIG_ARLAN is not set
-+# CONFIG_AIRONET4500 is not set
-+# CONFIG_AIRONET4500_NONCS is not set
-+# CONFIG_AIRONET4500_PROC is not set
-+# CONFIG_AIRO is not set
-+CONFIG_HERMES=y
-+CONFIG_PCMCIA_HERMES=y
-+CONFIG_AIRO_CS=y
-+CONFIG_NET_WIRELESS=y
-+
-+#
-+# Token Ring devices
-+#
-+# CONFIG_TR is not set
-+# CONFIG_NET_FC is not set
-+# CONFIG_RCPCI is not set
-+# CONFIG_SHAPER is not set
-+
-+#
-+# Wan interfaces
-+#
-+# CONFIG_WAN is not set
-+
-+#
-+# PCMCIA network device support
-+#
-+CONFIG_NET_PCMCIA=y
-+# CONFIG_PCMCIA_3C589 is not set
-+# CONFIG_PCMCIA_3C574 is not set
-+# CONFIG_PCMCIA_FMVJ18X is not set
-+CONFIG_PCMCIA_PCNET=y
-+# CONFIG_PCMCIA_AXNET is not set
-+# CONFIG_PCMCIA_NMCLAN is not set
-+# CONFIG_PCMCIA_SMC91C92 is not set
-+# CONFIG_PCMCIA_XIRC2PS is not set
-+# CONFIG_ARCNET_COM20020_CS is not set
-+# CONFIG_PCMCIA_IBMTR is not set
-+# CONFIG_NET_PCMCIA_RADIO is not set
-+
-+#
-+# Amateur Radio support
-+#
-+# CONFIG_HAMRADIO is not set
-+
-+#
-+# IrDA (infrared) support
-+#
-+CONFIG_IRDA=y
-+CONFIG_IRLAN=y
-+CONFIG_IRNET=y
-+CONFIG_IRCOMM=y
-+# CONFIG_IRDA_ULTRA is not set
-+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-+CONFIG_IRDA_FAST_RR=y
-+# CONFIG_IRDA_DEBUG is not set
-+
-+#
-+# Infrared-port device drivers
-+#
-+CONFIG_IRTTY_SIR=y
-+CONFIG_IRPORT_SIR=y
-+# CONFIG_DONGLE is not set
-+# CONFIG_USB_IRDA is not set
-+# CONFIG_NSC_FIR is not set
-+# CONFIG_WINBOND_FIR is not set
-+# CONFIG_TOSHIBA_FIR is not set
-+# CONFIG_SMC_IRCC_FIR is not set
-+# CONFIG_ALI_FIR is not set
-+# CONFIG_VLSI_FIR is not set
-+CONFIG_SA1100_FIR=y
-+
-+#
-+# ATA/IDE/MFM/RLL support
-+#
-+CONFIG_IDE=y
-+
-+#
-+# IDE, ATA and ATAPI Block devices
-+#
-+CONFIG_BLK_DEV_IDE=y
-+# CONFIG_BLK_DEV_HD_IDE is not set
-+# CONFIG_BLK_DEV_HD is not set
-+CONFIG_BLK_DEV_IDEDISK=y
-+# CONFIG_IDEDISK_MULTI_MODE is not set
-+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-+# CONFIG_BLK_DEV_IDEDISK_WD is not set
-+# CONFIG_BLK_DEV_COMMERIAL is not set
-+# CONFIG_BLK_DEV_TIVO is not set
-+CONFIG_BLK_DEV_IDECS=y
-+# CONFIG_BLK_DEV_IDECD is not set
-+# CONFIG_BLK_DEV_IDETAPE is not set
-+# CONFIG_BLK_DEV_IDEFLOPPY is not set
-+# CONFIG_BLK_DEV_IDESCSI is not set
-+# CONFIG_BLK_DEV_CMD640 is not set
-+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-+# CONFIG_BLK_DEV_ISAPNP is not set
-+# CONFIG_IDE_CHIPSETS is not set
-+# CONFIG_IDEDMA_AUTO is not set
-+# CONFIG_DMA_NONPCI is not set
-+# CONFIG_BLK_DEV_IDE_MODES is not set
-+# CONFIG_BLK_DEV_ATARAID is not set
-+# CONFIG_BLK_DEV_ATARAID_PDC is not set
-+# CONFIG_BLK_DEV_ATARAID_HPT is not set
-+
-+#
-+# SCSI support
-+#
-+# CONFIG_SCSI is not set
-+
-+#
-+# I2O device support
-+#
-+# CONFIG_I2O is not set
-+# CONFIG_I2O_BLOCK is not set
-+# CONFIG_I2O_LAN is not set
-+# CONFIG_I2O_SCSI is not set
-+# CONFIG_I2O_PROC is not set
-+
-+#
-+# ISDN subsystem
-+#
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input core support
-+#
-+# CONFIG_INPUT is not set
-+# CONFIG_INPUT_KEYBDEV is not set
-+# CONFIG_INPUT_MOUSEDEV is not set
-+# CONFIG_INPUT_JOYDEV is not set
-+# CONFIG_INPUT_EVDEV is not set
-+
-+#
-+# Character devices
-+#
-+CONFIG_VT=y
-+# CONFIG_VT_CONSOLE is not set
-+CONFIG_SERIAL=m
-+CONFIG_SERIAL_COLLIE=y
-+# CONFIG_SERIAL_COLLIE_CONSOLE is not set
-+CONFIG_COLLIE_DEFAULT_BAUDRATE=9600
-+# CONFIG_SERIAL_EXTENDED is not set
-+# CONFIG_SERIAL_NONSTANDARD is not set
-+
-+#
-+# Serial drivers
-+#
-+# CONFIG_SERIAL_ANAKIN is not set
-+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-+# CONFIG_SERIAL_AMBA is not set
-+# CONFIG_SERIAL_AMBA_CONSOLE is not set
-+# CONFIG_SERIAL_CLPS711X is not set
-+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-+# CONFIG_SERIAL_21285 is not set
-+# CONFIG_SERIAL_21285_OLD is not set
-+# CONFIG_SERIAL_21285_CONSOLE is not set
-+# CONFIG_SERIAL_UART00 is not set
-+# CONFIG_SERIAL_UART00_CONSOLE is not set
-+# CONFIG_SERIAL_SA1100 is not set
-+# CONFIG_SERIAL_SA1100_CONSOLE is not set
-+# CONFIG_SERIAL_8250 is not set
-+# CONFIG_SERIAL_8250_CONSOLE is not set
-+# CONFIG_SERIAL_8250_EXTENDED is not set
-+# CONFIG_SERIAL_8250_MANY_PORTS is not set
-+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-+# CONFIG_SERIAL_8250_MULTIPORT is not set
-+# CONFIG_SERIAL_8250_HUB6 is not set
-+CONFIG_UCB1200=y
-+CONFIG_TOUCHSCREEN_UCB1200=y
-+# CONFIG_AUDIO_UCB1200 is not set
-+# CONFIG_ADC_UCB1200 is not set
-+CONFIG_UNIX98_PTYS=y
-+CONFIG_UNIX98_PTY_COUNT=32
-+
-+#
-+# I2C support
-+#
-+# CONFIG_I2C is not set
-+
-+#
-+# L3 serial bus support
-+#
-+# CONFIG_L3 is not set
-+# CONFIG_L3_ALGOBIT is not set
-+# CONFIG_L3_BIT_SA1100_GPIO is not set
-+# CONFIG_L3_SA1111 is not set
-+# CONFIG_BIT_SA1100_GPIO is not set
-+
-+#
-+# Mice
-+#
-+# CONFIG_BUSMOUSE is not set
-+# CONFIG_MOUSE is not set
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_INPUT_GAMEPORT is not set
-+# CONFIG_QIC02_TAPE is not set
-+
-+#
-+# Watchdog Cards
-+#
-+# CONFIG_WATCHDOG is not set
-+# CONFIG_INTEL_RNG is not set
-+# CONFIG_NVRAM is not set
-+# CONFIG_RTC is not set
-+CONFIG_SA1100_RTC=y
-+# CONFIG_COTULLA_RTC is not set
-+# CONFIG_ADS7846_TS is not set
-+# CONFIG_DTLK is not set
-+# CONFIG_R3964 is not set
-+# CONFIG_APPLICOM is not set
-+
-+#
-+# Ftape, the floppy tape device driver
-+#
-+# CONFIG_FTAPE is not set
-+# CONFIG_AGP is not set
-+# CONFIG_DRM is not set
-+
-+#
-+# PCMCIA character devices
-+#
-+CONFIG_PCMCIA_SERIAL_CS=m
-+
-+#
-+# Multimedia devices
-+#
-+# CONFIG_VIDEO_DEV is not set
-+
-+#
-+# File systems
-+#
-+# CONFIG_QUOTA is not set
-+# CONFIG_AUTOFS_FS is not set
-+# CONFIG_AUTOFS4_FS is not set
-+CONFIG_FS_SYNC=y
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_REISERFS_CHECK is not set
-+# CONFIG_REISERFS_PROC_INFO is not set
-+# CONFIG_ADFS_FS is not set
-+# CONFIG_ADFS_FS_RW is not set
-+# CONFIG_AFFS_FS is not set
-+# CONFIG_HFS_FS is not set
-+# CONFIG_BFS_FS is not set
-+# CONFIG_EXT3_FS is not set
-+# CONFIG_JBD is not set
-+# CONFIG_JBD_DEBUG is not set
-+CONFIG_FAT_FS=y
-+# CONFIG_MSDOS_FS is not set
-+# CONFIG_UMSDOS_FS is not set
-+CONFIG_VFAT_FS=y
-+# CONFIG_EFS_FS is not set
-+# CONFIG_JFFS_FS is not set
-+CONFIG_JFFS2_FS=y
-+CONFIG_JFFS2_FS_DEBUG=0
-+# CONFIG_JFFS2_FS_NAND is not set
-+# CONFIG_JFFS2_PROC_FS is not set
-+# CONFIG_JFFS2_NODEMERGE is not set
-+# CONFIG_JFFS2_DYNFRAGTREE is not set
-+CONFIG_CRAMFS=y
-+CONFIG_TMPFS=y
-+CONFIG_RAMFS=y
-+# CONFIG_ISO9660_FS is not set
-+# CONFIG_JOLIET is not set
-+# CONFIG_ZISOFS is not set
-+CONFIG_MINIX_FS=y
-+# CONFIG_VXFS_FS is not set
-+# CONFIG_NTFS_FS is not set
-+# CONFIG_NTFS_RW is not set
-+# CONFIG_HPFS_FS is not set
-+CONFIG_PROC_FS=y
-+# CONFIG_DEVFS_FS is not set
-+# CONFIG_DEVFS_MOUNT is not set
-+# CONFIG_DEVFS_DEBUG is not set
-+CONFIG_DEVPTS_FS=y
-+# CONFIG_QNX4FS_FS is not set
-+# CONFIG_QNX4FS_RW is not set
-+# CONFIG_ROMFS_FS is not set
-+CONFIG_EXT2_FS=y
-+# CONFIG_SYSV_FS is not set
-+# CONFIG_UDF_FS is not set
-+# CONFIG_UDF_RW is not set
-+# CONFIG_UFS_FS is not set
-+# CONFIG_UFS_FS_WRITE is not set
-+
-+#
-+# Network File Systems
-+#
-+# CONFIG_CODA_FS is not set
-+# CONFIG_INTERMEZZO_FS is not set
-+CONFIG_NFS_FS=y
-+CONFIG_NFS_V3=y
-+# CONFIG_ROOT_NFS is not set
-+# CONFIG_NFSD is not set
-+# CONFIG_NFSD_V3 is not set
-+CONFIG_SUNRPC=y
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=y
-+CONFIG_SMB_FS=y
-+CONFIG_SMB_NLS_DEFAULT=y
-+CONFIG_SMB_NLS_REMOTE="cp437"
-+# CONFIG_NCP_FS is not set
-+# CONFIG_NCPFS_PACKET_SIGNING is not set
-+# CONFIG_NCPFS_IOCTL_LOCKING is not set
-+# CONFIG_NCPFS_STRONG is not set
-+# CONFIG_NCPFS_NFS_NS is not set
-+# CONFIG_NCPFS_OS2_NS is not set
-+# CONFIG_NCPFS_SMALLDOS is not set
-+# CONFIG_NCPFS_NLS is not set
-+# CONFIG_NCPFS_EXTRAS is not set
-+# CONFIG_ZISOFS_FS is not set
-+CONFIG_ZLIB_FS_INFLATE=y
-+
-+#
-+# Partition Types
-+#
-+# CONFIG_PARTITION_ADVANCED is not set
-+CONFIG_MSDOS_PARTITION=y
-+CONFIG_SMB_NLS=y
-+CONFIG_NLS=y
-+
-+#
-+# Native Language Support
-+#
-+CONFIG_NLS_DEFAULT="iso8859-1"
-+# CONFIG_NLS_CODEPAGE_437 is not set
-+# CONFIG_NLS_CODEPAGE_737 is not set
-+# CONFIG_NLS_CODEPAGE_775 is not set
-+# CONFIG_NLS_CODEPAGE_850 is not set
-+# CONFIG_NLS_CODEPAGE_852 is not set
-+# CONFIG_NLS_CODEPAGE_855 is not set
-+# CONFIG_NLS_CODEPAGE_857 is not set
-+# CONFIG_NLS_CODEPAGE_860 is not set
-+# CONFIG_NLS_CODEPAGE_861 is not set
-+# CONFIG_NLS_CODEPAGE_862 is not set
-+# CONFIG_NLS_CODEPAGE_863 is not set
-+# CONFIG_NLS_CODEPAGE_864 is not set
-+# CONFIG_NLS_CODEPAGE_865 is not set
-+# CONFIG_NLS_CODEPAGE_866 is not set
-+# CONFIG_NLS_CODEPAGE_869 is not set
-+# CONFIG_NLS_CODEPAGE_936 is not set
-+# CONFIG_NLS_CODEPAGE_950 is not set
-+# CONFIG_NLS_CODEPAGE_932 is not set
-+# CONFIG_NLS_CODEPAGE_949 is not set
-+# CONFIG_NLS_CODEPAGE_874 is not set
-+# CONFIG_NLS_ISO8859_8 is not set
-+# CONFIG_NLS_CODEPAGE_1250 is not set
-+# CONFIG_NLS_CODEPAGE_1251 is not set
-+# CONFIG_NLS_ISO8859_1 is not set
-+# CONFIG_NLS_ISO8859_2 is not set
-+# CONFIG_NLS_ISO8859_3 is not set
-+# CONFIG_NLS_ISO8859_4 is not set
-+# CONFIG_NLS_ISO8859_5 is not set
-+# CONFIG_NLS_ISO8859_6 is not set
-+# CONFIG_NLS_ISO8859_7 is not set
-+# CONFIG_NLS_ISO8859_9 is not set
-+# CONFIG_NLS_ISO8859_13 is not set
-+# CONFIG_NLS_ISO8859_14 is not set
-+# CONFIG_NLS_ISO8859_15 is not set
-+# CONFIG_NLS_KOI8_R is not set
-+# CONFIG_NLS_KOI8_U is not set
-+CONFIG_NLS_UTF8=y
-+
-+#
-+# Console drivers
-+#
-+CONFIG_PC_KEYMAP=y
-+# CONFIG_VGA_CONSOLE is not set
-+
-+#
-+# Frame-buffer support
-+#
-+CONFIG_FB=y
-+CONFIG_DUMMY_CONSOLE=y
-+CONFIG_FB_COLLIE=y
-+# CONFIG_FB_ACORN is not set
-+# CONFIG_FB_ANAKIN is not set
-+# CONFIG_FB_CLPS711X is not set
-+# CONFIG_FB_SA1100 is not set
-+# CONFIG_FB_PXA is not set
-+# CONFIG_FB_COTULLA is not set
-+# CONFIG_FB_POODLE is not set
-+# CONFIG_FB_CORGI is not set
-+# CONFIG_SHARP_LOGO_SCREEN is not set
-+# CONFIG_FB_CYBER2000 is not set
-+# CONFIG_FB_VIRTUAL is not set
-+CONFIG_FBCON_ADVANCED=y
-+# CONFIG_FBCON_MFB is not set
-+# CONFIG_FBCON_CFB2 is not set
-+# CONFIG_FBCON_CFB4 is not set
-+# CONFIG_FBCON_CFB8 is not set
-+CONFIG_FBCON_CFB16=y
-+# CONFIG_FBCON_CFB24 is not set
-+# CONFIG_FBCON_CFB32 is not set
-+# CONFIG_FBCON_AFB is not set
-+# CONFIG_FBCON_ILBM is not set
-+# CONFIG_FBCON_IPLAN2P2 is not set
-+# CONFIG_FBCON_IPLAN2P4 is not set
-+# CONFIG_FBCON_IPLAN2P8 is not set
-+# CONFIG_FBCON_MAC is not set
-+# CONFIG_FBCON_VGA_PLANES is not set
-+# CONFIG_FBCON_VGA is not set
-+# CONFIG_FBCON_HGA is not set
-+CONFIG_FBCON_ROTATE_R=y
-+# CONFIG_FBCON_ROTATE_L is not set
-+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-+CONFIG_FBCON_FONTS=y
-+# CONFIG_FONT_8x8 is not set
-+# CONFIG_FONT_8x16 is not set
-+# CONFIG_FONT_SUN8x16 is not set
-+# CONFIG_FONT_SUN12x22 is not set
-+# CONFIG_FONT_6x11 is not set
-+# CONFIG_FONT_5x8 is not set
-+CONFIG_FONT_4x6=y
-+# CONFIG_FONT_PEARL_8x8 is not set
-+# CONFIG_FONT_ACORN_8x8 is not set
-+
-+#
-+# Sound
-+#
-+CONFIG_SOUND=y
-+# CONFIG_SOUND_BT878 is not set
-+CONFIG_SOUND_COLLIE_SSP=y
-+CONFIG_COLLIE_PCM1741=y
-+# CONFIG_COLLIE_PCM1717 is not set
-+CONFIG_SOUND_COLLIE_TC35143=y
-+# CONFIG_SOUND_CMPCI is not set
-+# CONFIG_SOUND_EMU10K1 is not set
-+# CONFIG_MIDI_EMU10K1 is not set
-+# CONFIG_SOUND_FUSION is not set
-+# CONFIG_SOUND_CS4281 is not set
-+# CONFIG_SOUND_ES1370 is not set
-+# CONFIG_SOUND_ES1371 is not set
-+# CONFIG_SOUND_ESSSOLO1 is not set
-+# CONFIG_SOUND_MAESTRO is not set
-+# CONFIG_SOUND_MAESTRO3 is not set
-+# CONFIG_SOUND_ICH is not set
-+# CONFIG_SOUND_RME96XX is not set
-+# CONFIG_SOUND_SONICVIBES is not set
-+# CONFIG_SOUND_TRIDENT is not set
-+# CONFIG_SOUND_MSNDCLAS is not set
-+# CONFIG_SOUND_MSNDPIN is not set
-+# CONFIG_SOUND_VIA82CXXX is not set
-+# CONFIG_MIDI_VIA82CXXX is not set
-+# CONFIG_SOUND_SA1100 is not set
-+# CONFIG_SOUND_UDA1341 is not set
-+# CONFIG_SOUND_ASSABET_UDA1341 is not set
-+# CONFIG_SOUND_H3600_UDA1341 is not set
-+# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
-+# CONFIG_SOUND_SA1111_UDA1341 is not set
-+# CONFIG_SOUND_SA1100SSP is not set
-+# CONFIG_SOUND_OSS is not set
-+# CONFIG_SOUND_WAVEARTIST is not set
-+# CONFIG_SOUND_PXA_AC97 is not set
-+# CONFIG_SOUND_POODLE is not set
-+# CONFIG_SOUND_CORGI is not set
-+# CONFIG_SOUND_TVMIXER is not set
-+
-+#
-+# Multimedia Capabilities Port drivers
-+#
-+# CONFIG_MCP is not set
-+# CONFIG_MCP_SA1100 is not set
-+# CONFIG_MCP_UCB1200 is not set
-+# CONFIG_MCP_UCB1200_AUDIO is not set
-+# CONFIG_MCP_UCB1200_TS is not set
-+# CONFIG_MCP_UCB1400_TS is not set
-+
-+#
-+# USB support
-+#
-+CONFIG_USB=m
-+# CONFIG_USB_DEBUG is not set
-+# CONFIG_USB_DEVICEFS is not set
-+# CONFIG_USB_BANDWIDTH is not set
-+# CONFIG_USB_LONG_TIMEOUT is not set
-+# CONFIG_USB_UHCI is not set
-+# CONFIG_USB_UHCI_ALT is not set
-+# CONFIG_USB_OHCI is not set
-+# CONFIG_USB_OHCI_SA1111 is not set
-+# CONFIG_USB_AUDIO is not set
-+# CONFIG_USB_BLUETOOTH is not set
-+# CONFIG_USB_STORAGE is not set
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+# CONFIG_USB_STORAGE_DPCM is not set
-+# CONFIG_USB_STORAGE_HP8200e is not set
-+# CONFIG_USB_STORAGE_SDDR09 is not set
-+# CONFIG_USB_STORAGE_JUMPSHOT is not set
-+# CONFIG_USB_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_DC2XX is not set
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_SCANNER is not set
-+# CONFIG_USB_MICROTEK is not set
-+# CONFIG_USB_HPUSBSCSI is not set
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_CDCETHER is not set
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_USB_USS720 is not set
-+
-+#
-+# USB Serial Converter support
-+#
-+# CONFIG_USB_SERIAL is not set
-+# CONFIG_USB_SERIAL_GENERIC is not set
-+# CONFIG_USB_SERIAL_BELKIN is not set
-+# CONFIG_USB_SERIAL_WHITEHEAT is not set
-+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-+# CONFIG_USB_SERIAL_EMPEG is not set
-+# CONFIG_USB_SERIAL_FTDI_SIO is not set
-+# CONFIG_USB_SERIAL_VISOR is not set
-+# CONFIG_USB_SERIAL_IPAQ is not set
-+# CONFIG_USB_SERIAL_IR is not set
-+# CONFIG_USB_SERIAL_EDGEPORT is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-+# CONFIG_USB_SERIAL_KEYSPAN is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-+# CONFIG_USB_SERIAL_MCT_U232 is not set
-+# CONFIG_USB_SERIAL_KLSI is not set
-+# CONFIG_USB_SERIAL_PL2303 is not set
-+# CONFIG_USB_SERIAL_CYBERJACK is not set
-+# CONFIG_USB_SERIAL_XIRCOM is not set
-+# CONFIG_USB_SERIAL_OMNINET is not set
-+# CONFIG_USB_RIO500 is not set
-+
-+#
-+# USB Device Support
-+#
-+CONFIG_USBD=m
-+CONFIG_USBD_VENDORID=4dd
-+CONFIG_USBD_PRODUCTID=8002
-+CONFIG_USBD_PRODUCT_NAME="SL Series"
-+CONFIG_USBD_MANUFACTURER="Sharp"
-+CONFIG_USBD_USE_SERIAL_NUMBER=y
-+CONFIG_USBD_SERIAL_NUMBER_STR="A01234"
-+CONFIG_USBD_SELFPOWERED=y
-+CONFIG_USBD_MONITOR=m
-+CONFIG_USBD_PROCFS=y
-+
-+#
-+# Network Function
-+#
-+CONFIG_USBD_NET=m
-+CONFIG_USBD_NET_VENDORID=4DD
-+CONFIG_USBD_NET_PRODUCTID=8004
-+CONFIG_USBD_NET_IFNAME="usbd"
-+CONFIG_USBD_NET_OUT_ENDPOINT=1
-+CONFIG_USBD_NET_OUT_PKTSIZE=64
-+CONFIG_USBD_NET_IN_ENDPOINT=2
-+CONFIG_USBD_NET_IN_PKTSIZE=64
-+# CONFIG_USBD_NET_ALWAYSUP is not set
-+# CONFIG_USBD_NET_SAFE is not set
-+# CONFIG_USBD_NET_MDLM is not set
-+CONFIG_USBD_NET_CDC=y
-+CONFIG_USBD_NET_REMOTE_MACADDR=""
-+CONFIG_USBD_NET_REMOTE_OUI=400002
-+# CONFIG_USBD_MAC_AS_SERIAL_NUMBER is not set
-+CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-+CONFIG_USBD_NET_LOCAL_OUI=400001
-+
-+#
-+# Serial Function
-+#
-+CONFIG_USBD_SERIAL=m
-+CONFIG_USBD_SERIAL_VENDORID=4dd
-+CONFIG_USBD_SERIAL_PRODUCTID=8002
-+# CONFIG_USBD_SERIAL_CDC is not set
-+CONFIG_USBD_SERIAL_OUT_ENDPOINT=1
-+CONFIG_USBD_SERIAL_IN_PKTSIZE=64
-+CONFIG_USBD_SERIAL_IN_ENDPOINT=2
-+CONFIG_USBD_SERIAL_OUT_PKTSIZE=64
-+# CONFIG_USBD_SERIAL_SAFE is not set
-+
-+#
-+# USB Device Bus Interface Support
-+#
-+CONFIG_USBD_SA1100_BUS=m
-+# CONFIG_USBD_TRAFFIC_KEEPAWAKE is not set
-+CONFIG_USBD_STALL_TIMEOUT=0
-+CONFIG_USBD_STALL_DISCONNECT_DURATION=2
-+# CONFIG_USBD_GENERIC_BUS is not set
-+
-+#
-+# Bluetooth support
-+#
-+# CONFIG_BLUEZ is not set
-+
-+#
-+# Kernel hacking
-+#
-+CONFIG_FRAME_POINTER=y
-+# CONFIG_DEBUG_USER is not set
-+# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-+# CONFIG_DEBUG_INFO is not set
-+# CONFIG_NO_PGT_CACHE is not set
-+# CONFIG_DEBUG_KERNEL is not set
-+# CONFIG_DEBUG_SLAB is not set
-+# CONFIG_MAGIC_SYSRQ is not set
-+# CONFIG_DEBUG_SPINLOCK is not set
-+# CONFIG_DEBUG_WAITQ is not set
-+# CONFIG_DEBUG_BUGVERBOSE is not set
-+# CONFIG_DEBUG_ERRORS is not set
-+# CONFIG_DEBUG_LL is not set
-+# CONFIG_DEBUG_DC21285_PORT is not set
-+# CONFIG_DEBUG_CLPS711X_UART2 is not set
-diff -Nur linux/sl5500_hybrid /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/sl5500_hybrid
---- linux/sl5500_hybrid 1970-01-01 07:00:00.000000000 +0700
-+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/sl5500_hybrid 2003-06-23 01:47:04.000000000 +0700
-@@ -0,0 +1,1065 @@
-+#
-+# Automatically generated by make menuconfig: don't edit
-+#
-+CONFIG_ARM=y
-+# CONFIG_EISA is not set
-+# CONFIG_SBUS is not set
-+# CONFIG_MCA is not set
-+CONFIG_UID16=y
-+CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-+# CONFIG_GENERIC_BUST_SPINLOCK is not set
-+# CONFIG_GENERIC_ISA_DMA is not set
-+
-+#
-+# Code maturity level options
-+#
-+CONFIG_EXPERIMENTAL=y
-+# CONFIG_OBSOLETE is not set
-+
-+#
-+# Loadable module support
-+#
-+CONFIG_MODULES=y
-+# CONFIG_MODVERSIONS is not set
-+# CONFIG_KMOD is not set
-+
-+#
-+# System Type
-+#
-+# CONFIG_ARCH_ANAKIN is not set
-+# CONFIG_ARCH_ARCA5K is not set
-+# CONFIG_ARCH_CLPS7500 is not set
-+# CONFIG_ARCH_CLPS711X is not set
-+# CONFIG_ARCH_CO285 is not set
-+# CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_CAMELOT is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_INTEGRATOR is not set
-+# CONFIG_ARCH_L7200 is not set
-+# CONFIG_ARCH_MX1ADS is not set
-+# CONFIG_ARCH_RPC is not set
-+CONFIG_ARCH_SA1100=y
-+# CONFIG_ARCH_SHARK is not set
-+
-+#
-+# Archimedes/A5000 Implementations
-+#
-+# CONFIG_ARCH_ARC is not set
-+# CONFIG_ARCH_A5K is not set
-+
-+#
-+# Footbridge Implementations
-+#
-+# CONFIG_ARCH_CATS is not set
-+# CONFIG_ARCH_PERSONAL_SERVER is not set
-+# CONFIG_ARCH_EBSA285_ADDIN is not set
-+# CONFIG_ARCH_EBSA285_HOST is not set
-+# CONFIG_ARCH_NETWINDER is not set
-+
-+#
-+# SA11x0 Implementations
-+#
-+# CONFIG_SA1100_ASSABET is not set
-+# CONFIG_ASSABET_NEPONSET is not set
-+# CONFIG_SA1100_ADSBITSY is not set
-+# CONFIG_SA1100_BRUTUS is not set
-+# CONFIG_SA1100_CEP is not set
-+# CONFIG_SA1100_CERF is not set
-+CONFIG_SA1100_COLLIE=y
-+CONFIG_LOCOMO=y
-+# CONFIG_COLLIE_TS is not set
-+# CONFIG_COLLIE_TR0 is not set
-+# CONFIG_COLLIE_TR1 is not set
-+# CONFIG_COLLIE_DEV is not set
-+# CONFIG_COLLIE_G is not set
-+CONFIG_COLLIE_UP=y
-+# CONFIG_SA1100_H3100 is not set
-+# CONFIG_SA1100_H3600 is not set
-+# CONFIG_SA1100_H3800 is not set
-+# CONFIG_SA1100_H3XXX is not set
-+# CONFIG_SA1100_EXTENEX1 is not set
-+# CONFIG_SA1100_FLEXANET is not set
-+# CONFIG_SA1100_FREEBIRD is not set
-+# CONFIG_SA1100_FRODO is not set
-+# CONFIG_SA1100_GRAPHICSCLIENT is not set
-+# CONFIG_SA1100_GRAPHICSMASTER is not set
-+# CONFIG_SA1100_BADGE4 is not set
-+# CONFIG_SA1100_JORNADA720 is not set
-+# CONFIG_SA1100_HUW_WEBPANEL is not set
-+# CONFIG_SA1100_ITSY is not set
-+# CONFIG_SA1100_LART is not set
-+# CONFIG_SA1100_NANOENGINE is not set
-+# CONFIG_SA1100_OMNIMETER is not set
-+# CONFIG_SA1100_PANGOLIN is not set
-+# CONFIG_SA1100_PLEB is not set
-+# CONFIG_SA1100_PT_SYSTEM3 is not set
-+# CONFIG_SA1100_SHANNON is not set
-+# CONFIG_SA1100_SHERMAN is not set
-+# CONFIG_SA1100_SIMPAD is not set
-+# CONFIG_SA1100_PFS168 is not set
-+# CONFIG_SA1100_VICTOR is not set
-+# CONFIG_SA1100_XP860 is not set
-+# CONFIG_SA1100_YOPY is not set
-+# CONFIG_SA1100_USB is not set
-+# CONFIG_SA1100_USB_NETLINK is not set
-+# CONFIG_SA1100_USB_CHAR is not set
-+# CONFIG_H3600_SLEEVE is not set
-+
-+#
-+# Intel PXA250/210 Implementations
-+#
-+# CONFIG_ARCH_LUBBOCK is not set
-+# CONFIG_ARCH_PXA_IDP is not set
-+# CONFIG_ARCH_PXA_CERF is not set
-+# CONFIG_COTULLA_DMA is not set
-+# CONFIG_SABINAL_DISCOVERY is not set
-+# CONFIG_ARCH_SABINAL is not set
-+# CONFIG_ARCH_PXA_POODLE is not set
-+# CONFIG_POODLE_TR0 is not set
-+# CONFIG_ARCH_PXA_CORGI is not set
-+# CONFIG_CORGI_TR0 is not set
-+CONFIG_ARCH_SHARP_SL=y
-+# CONFIG_PXA_USB is not set
-+# CONFIG_PXA_USB_NETLINK is not set
-+# CONFIG_PXA_USB_CHAR is not set
-+
-+#
-+# CLPS711X/EP721X Implementations
-+#
-+# CONFIG_ARCH_AUTCPU12 is not set
-+# CONFIG_ARCH_CDB89712 is not set
-+# CONFIG_ARCH_CLEP7312 is not set
-+# CONFIG_ARCH_EDB7211 is not set
-+# CONFIG_ARCH_P720T is not set
-+# CONFIG_ARCH_FORTUNET is not set
-+# CONFIG_ARCH_EP7211 is not set
-+# CONFIG_ARCH_EP7212 is not set
-+# CONFIG_ARCH_ACORN is not set
-+# CONFIG_FOOTBRIDGE is not set
-+# CONFIG_FOOTBRIDGE_HOST is not set
-+# CONFIG_FOOTBRIDGE_ADDIN is not set
-+CONFIG_CPU_32=y
-+# CONFIG_CPU_26 is not set
-+# CONFIG_CPU_32v3 is not set
-+CONFIG_CPU_32v4=y
-+# CONFIG_CPU_ARM610 is not set
-+# CONFIG_CPU_ARM710 is not set
-+# CONFIG_CPU_ARM720T is not set
-+# CONFIG_CPU_ARM920T is not set
-+# CONFIG_CPU_ARM922T is not set
-+# CONFIG_PLD is not set
-+# CONFIG_CPU_ARM926T is not set
-+# CONFIG_CPU_ARM1020 is not set
-+# CONFIG_CPU_SA110 is not set
-+CONFIG_CPU_SA1100=y
-+# CONFIG_ARM_THUMB is not set
-+CONFIG_DISCONTIGMEM=y
-+
-+#
-+# General setup
-+#
-+# CONFIG_PCI is not set
-+CONFIG_ISA=y
-+# CONFIG_ISA_DMA is not set
-+# CONFIG_ZBOOT_ROM is not set
-+CONFIG_ZBOOT_ROM_TEXT=0
-+CONFIG_ZBOOT_ROM_BSS=0
-+# CONFIG_CPU_FREQ is not set
-+CONFIG_HOTPLUG=y
-+
-+#
-+# PCMCIA/CardBus support
-+#
-+CONFIG_PCMCIA=y
-+CONFIG_PCMCIA_PROBE=y
-+# CONFIG_I82092 is not set
-+# CONFIG_I82365 is not set
-+# CONFIG_TCIC is not set
-+# CONFIG_PCMCIA_CLPS6700 is not set
-+CONFIG_PCMCIA_SA1100=y
-+# CONFIG_PCMCIA_PXA is not set
-+CONFIG_NET=y
-+CONFIG_SYSVIPC=y
-+# CONFIG_BSD_PROCESS_ACCT is not set
-+CONFIG_SYSCTL=y
-+CONFIG_FPE_NWFPE=y
-+# CONFIG_FPE_FASTFPE is not set
-+CONFIG_KCORE_ELF=y
-+# CONFIG_KCORE_AOUT is not set
-+# CONFIG_BINFMT_AOUT is not set
-+CONFIG_BINFMT_ELF=y
-+# CONFIG_BINFMT_MISC is not set
-+CONFIG_PM=y
-+CONFIG_APM=y
-+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-+CONFIG_APM_CPU_IDLE=y
-+CONFIG_APM_DISPLAY_BLANK=y
-+CONFIG_APM_RTC_IS_GMT=y
-+# CONFIG_ARTHUR is not set
-+CONFIG_CMDLINE="root=/dev/mtdblock4 rootfstype=cramfs mem=34M"
-+# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-+# CONFIG_LEDS is not set
-+CONFIG_ALIGNMENT_TRAP=y
-+CONFIG_FREEPG_SIGNAL=y
-+CONFIG_OOM_KILL_SURVIVAL=y
-+CONFIG_DEVICEINFO=m
-+CONFIG_COLLIE_DEVICEINFO=m
-+
-+#
-+# Parallel port support
-+#
-+# CONFIG_PARPORT is not set
-+
-+#
-+# Memory Technology Devices (MTD)
-+#
-+CONFIG_MTD=y
-+# CONFIG_MTD_DEBUG is not set
-+CONFIG_MTD_PARTITIONS=y
-+# CONFIG_MTD_CONCAT is not set
-+# CONFIG_MTD_REDBOOT_PARTS is not set
-+# CONFIG_MTD_CMDLINE_PARTS is not set
-+# CONFIG_MTD_AFS_PARTS is not set
-+CONFIG_MTD_CHAR=y
-+CONFIG_MTD_BLOCK=y
-+# CONFIG_FTL is not set
-+# CONFIG_NFTL is not set
-+
-+#
-+# RAM/ROM/Flash chip drivers
-+#
-+# CONFIG_MTD_CFI is not set
-+# CONFIG_MTD_JEDECPROBE is not set
-+# CONFIG_MTD_GEN_PROBE is not set
-+# CONFIG_MTD_CFI_INTELEXT is not set
-+# CONFIG_MTD_CFI_AMDSTD is not set
-+# CONFIG_MTD_CFI_STAA is not set
-+# CONFIG_MTD_RAM is not set
-+# CONFIG_MTD_ROM is not set
-+# CONFIG_MTD_ABSENT is not set
-+CONFIG_MTD_COLLIE=y
-+# CONFIG_MTD_OBSOLETE_CHIPS is not set
-+# CONFIG_MTD_AMDSTD is not set
-+# CONFIG_MTD_SHARP is not set
-+# CONFIG_MTD_JEDEC is not set
-+
-+#
-+# Mapping drivers for chip access
-+#
-+# CONFIG_MTD_PHYSMAP is not set
-+# CONFIG_MTD_LUBBOCK is not set
-+# CONFIG_MTD_NORA is not set
-+# CONFIG_MTD_ARM_INTEGRATOR is not set
-+# CONFIG_MTD_CDB89712 is not set
-+CONFIG_MTD_SA1100=y
-+# CONFIG_MTD_DC21285 is not set
-+# CONFIG_MTD_IQ80310 is not set
-+# CONFIG_MTD_FORTUNET is not set
-+# CONFIG_MTD_PXA_CERF is not set
-+# CONFIG_MTD_EPXA10DB is not set
-+# CONFIG_MTD_AUTCPU12 is not set
-+# CONFIG_MTD_EDB7312 is not set
-+# CONFIG_MTD_IMPA7 is not set
-+# CONFIG_MTD_DISCOVERY is not set
-+# CONFIG_MTD_SHARP_SL is not set
-+# CONFIG_MTD_PCI is not set
-+
-+#
-+# Self-contained MTD device drivers
-+#
-+# CONFIG_MTD_PMC551 is not set
-+# CONFIG_MTD_SLRAM is not set
-+# CONFIG_MTD_MTDROM_SA1100 is not set
-+CONFIG_MTD_MTDRAM_SA1100=y
-+CONFIG_MTDRAM_TOTAL_SIZE=30720
-+CONFIG_MTDRAM_ERASE_SIZE=1
-+CONFIG_MTDRAM_ABS_POS=C2200000
-+# CONFIG_MTD_MTDRAM is not set
-+# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-+# CONFIG_MTD_BLKMTD is not set
-+# CONFIG_MTD_DOC1000 is not set
-+# CONFIG_MTD_DOC2000 is not set
-+# CONFIG_MTD_DOC2001 is not set
-+# CONFIG_MTD_DOCPROBE is not set
-+
-+#
-+# NAND Flash Device Drivers
-+#
-+# CONFIG_MTD_NAND is not set
-+
-+#
-+# Plug and Play configuration
-+#
-+# CONFIG_PNP is not set
-+# CONFIG_ISAPNP is not set
-+
-+#
-+# Block devices
-+#
-+# CONFIG_BLK_DEV_FD is not set
-+# CONFIG_BLK_DEV_XD is not set
-+# CONFIG_PARIDE is not set
-+# CONFIG_BLK_CPQ_DA is not set
-+# CONFIG_BLK_CPQ_CISS_DA is not set
-+# CONFIG_BLK_DEV_DAC960 is not set
-+CONFIG_BLK_DEV_LOOP=y
-+# CONFIG_BLK_DEV_NBD is not set
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_SIZE=1024
-+# CONFIG_BLK_DEV_INITRD is not set
-+
-+#
-+# Multi-device support (RAID and LVM)
-+#
-+# CONFIG_MD is not set
-+# CONFIG_BLK_DEV_MD is not set
-+# CONFIG_MD_LINEAR is not set
-+# CONFIG_MD_RAID0 is not set
-+# CONFIG_MD_RAID1 is not set
-+# CONFIG_MD_RAID5 is not set
-+# CONFIG_MD_MULTIPATH is not set
-+# CONFIG_BLK_DEV_LVM is not set
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+CONFIG_PACKET_MMAP=y
-+CONFIG_NETLINK_DEV=y
-+CONFIG_NETFILTER=y
-+# CONFIG_NETFILTER_DEBUG is not set
-+# CONFIG_FILTER is not set
-+CONFIG_UNIX=y
-+CONFIG_INET=y
-+# CONFIG_IP_MULTICAST is not set
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+# CONFIG_IP_PNP is not set
-+# CONFIG_NET_IPIP is not set
-+# CONFIG_NET_IPGRE is not set
-+# CONFIG_ARPD is not set
-+# CONFIG_INET_ECN is not set
-+# CONFIG_SYN_COOKIES is not set
-+
-+#
-+# IP: Netfilter Configuration
-+#
-+# CONFIG_IP_NF_CONNTRACK is not set
-+# CONFIG_IP_NF_QUEUE is not set
-+# CONFIG_IP_NF_IPTABLES is not set
-+# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-+# CONFIG_IPV6 is not set
-+# CONFIG_KHTTPD is not set
-+# CONFIG_ATM is not set
-+# CONFIG_VLAN_8021Q is not set
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_LLC is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_FASTROUTE is not set
-+# CONFIG_NET_HW_FLOWCONTROL is not set
-+
-+#
-+# QoS and/or fair queueing
-+#
-+# CONFIG_NET_SCHED is not set
-+
-+#
-+# Network device support
-+#
-+CONFIG_NETDEVICES=y
-+
-+#
-+# ARCnet devices
-+#
-+# CONFIG_ARCNET is not set
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_ETHERTAP is not set
-+
-+#
-+# Ethernet (10 or 100Mbit)
-+#
-+CONFIG_NET_ETHERNET=y
-+# CONFIG_ARM_AM79C961A is not set
-+# CONFIG_SUNLANCE is not set
-+# CONFIG_SUNBMAC is not set
-+# CONFIG_SUNQE is not set
-+# CONFIG_SUNGEM is not set
-+# CONFIG_NET_VENDOR_3COM is not set
-+# CONFIG_LANCE is not set
-+# CONFIG_NET_VENDOR_SMC is not set
-+# CONFIG_NET_VENDOR_RACAL is not set
-+# CONFIG_AT1700 is not set
-+# CONFIG_DEPCA is not set
-+# CONFIG_HP100 is not set
-+# CONFIG_NET_ISA is not set
-+# CONFIG_NET_PCI is not set
-+# CONFIG_NET_POCKET is not set
-+
-+#
-+# Ethernet (1000 Mbit)
-+#
-+# CONFIG_ACENIC is not set
-+# CONFIG_DL2K is not set
-+# CONFIG_MYRI_SBUS is not set
-+# CONFIG_NS83820 is not set
-+# CONFIG_HAMACHI is not set
-+# CONFIG_YELLOWFIN is not set
-+# CONFIG_SK98LIN is not set
-+# CONFIG_FDDI is not set
-+# CONFIG_HIPPI is not set
-+# CONFIG_PLIP is not set
-+CONFIG_PPP=y
-+# CONFIG_PPP_MULTILINK is not set
-+# CONFIG_PPP_FILTER is not set
-+CONFIG_PPP_ASYNC=y
-+# CONFIG_PPP_SYNC_TTY is not set
-+# CONFIG_PPP_DEFLATE is not set
-+CONFIG_PPP_BSDCOMP=y
-+# CONFIG_PPPOE is not set
-+# CONFIG_SLIP is not set
-+
-+#
-+# Wireless LAN (non-hamradio)
-+#
-+CONFIG_NET_RADIO=y
-+# CONFIG_STRIP is not set
-+# CONFIG_WAVELAN is not set
-+# CONFIG_ARLAN is not set
-+# CONFIG_AIRONET4500 is not set
-+# CONFIG_AIRONET4500_NONCS is not set
-+# CONFIG_AIRONET4500_PROC is not set
-+# CONFIG_AIRO is not set
-+CONFIG_HERMES=y
-+CONFIG_PCMCIA_HERMES=y
-+# CONFIG_AIRO_CS is not set
-+CONFIG_NET_WIRELESS=y
-+
-+#
-+# Token Ring devices
-+#
-+# CONFIG_TR is not set
-+# CONFIG_NET_FC is not set
-+# CONFIG_RCPCI is not set
-+# CONFIG_SHAPER is not set
-+
-+#
-+# Wan interfaces
-+#
-+# CONFIG_WAN is not set
-+
-+#
-+# PCMCIA network device support
-+#
-+CONFIG_NET_PCMCIA=y
-+# CONFIG_PCMCIA_3C589 is not set
-+# CONFIG_PCMCIA_3C574 is not set
-+# CONFIG_PCMCIA_FMVJ18X is not set
-+CONFIG_PCMCIA_PCNET=y
-+# CONFIG_PCMCIA_AXNET is not set
-+# CONFIG_PCMCIA_NMCLAN is not set
-+# CONFIG_PCMCIA_SMC91C92 is not set
-+# CONFIG_PCMCIA_XIRC2PS is not set
-+# CONFIG_ARCNET_COM20020_CS is not set
-+# CONFIG_PCMCIA_IBMTR is not set
-+# CONFIG_NET_PCMCIA_RADIO is not set
-+
-+#
-+# Amateur Radio support
-+#
-+# CONFIG_HAMRADIO is not set
-+
-+#
-+# IrDA (infrared) support
-+#
-+CONFIG_IRDA=y
-+# CONFIG_IRLAN is not set
-+CONFIG_IRNET=m
-+CONFIG_IRCOMM=y
-+# CONFIG_IRDA_ULTRA is not set
-+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-+CONFIG_IRDA_FAST_RR=y
-+# CONFIG_IRDA_DEBUG is not set
-+
-+#
-+# Infrared-port device drivers
-+#
-+CONFIG_IRTTY_SIR=y
-+CONFIG_IRPORT_SIR=y
-+# CONFIG_DONGLE is not set
-+# CONFIG_USB_IRDA is not set
-+# CONFIG_NSC_FIR is not set
-+# CONFIG_WINBOND_FIR is not set
-+# CONFIG_TOSHIBA_FIR is not set
-+# CONFIG_SMC_IRCC_FIR is not set
-+# CONFIG_ALI_FIR is not set
-+# CONFIG_VLSI_FIR is not set
-+CONFIG_SA1100_FIR=y
-+
-+#
-+# ATA/IDE/MFM/RLL support
-+#
-+CONFIG_IDE=y
-+
-+#
-+# IDE, ATA and ATAPI Block devices
-+#
-+CONFIG_BLK_DEV_IDE=y
-+# CONFIG_BLK_DEV_HD_IDE is not set
-+# CONFIG_BLK_DEV_HD is not set
-+CONFIG_BLK_DEV_IDEDISK=y
-+# CONFIG_IDEDISK_MULTI_MODE is not set
-+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-+# CONFIG_BLK_DEV_IDEDISK_WD is not set
-+# CONFIG_BLK_DEV_COMMERIAL is not set
-+# CONFIG_BLK_DEV_TIVO is not set
-+CONFIG_BLK_DEV_IDECS=y
-+# CONFIG_BLK_DEV_IDECD is not set
-+# CONFIG_BLK_DEV_IDETAPE is not set
-+# CONFIG_BLK_DEV_IDEFLOPPY is not set
-+# CONFIG_BLK_DEV_IDESCSI is not set
-+# CONFIG_BLK_DEV_CMD640 is not set
-+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-+# CONFIG_BLK_DEV_ISAPNP is not set
-+# CONFIG_IDE_CHIPSETS is not set
-+# CONFIG_IDEDMA_AUTO is not set
-+# CONFIG_DMA_NONPCI is not set
-+# CONFIG_BLK_DEV_IDE_MODES is not set
-+# CONFIG_BLK_DEV_ATARAID is not set
-+# CONFIG_BLK_DEV_ATARAID_PDC is not set
-+# CONFIG_BLK_DEV_ATARAID_HPT is not set
-+
-+#
-+# SCSI support
-+#
-+# CONFIG_SCSI is not set
-+
-+#
-+# I2O device support
-+#
-+# CONFIG_I2O is not set
-+# CONFIG_I2O_BLOCK is not set
-+# CONFIG_I2O_LAN is not set
-+# CONFIG_I2O_SCSI is not set
-+# CONFIG_I2O_PROC is not set
-+
-+#
-+# ISDN subsystem
-+#
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input core support
-+#
-+# CONFIG_INPUT is not set
-+# CONFIG_INPUT_KEYBDEV is not set
-+# CONFIG_INPUT_MOUSEDEV is not set
-+# CONFIG_INPUT_JOYDEV is not set
-+# CONFIG_INPUT_EVDEV is not set
-+
-+#
-+# Character devices
-+#
-+CONFIG_VT=y
-+# CONFIG_VT_CONSOLE is not set
-+CONFIG_SERIAL=y
-+# CONFIG_SERIAL_CONSOLE is not set
-+CONFIG_SERIAL_COLLIE=y
-+# CONFIG_SERIAL_COLLIE_CONSOLE is not set
-+CONFIG_COLLIE_DEFAULT_BAUDRATE=9600
-+# CONFIG_SERIAL_EXTENDED is not set
-+# CONFIG_SERIAL_NONSTANDARD is not set
-+
-+#
-+# Serial drivers
-+#
-+# CONFIG_SERIAL_ANAKIN is not set
-+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-+# CONFIG_SERIAL_AMBA is not set
-+# CONFIG_SERIAL_AMBA_CONSOLE is not set
-+# CONFIG_SERIAL_CLPS711X is not set
-+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-+# CONFIG_SERIAL_21285 is not set
-+# CONFIG_SERIAL_21285_OLD is not set
-+# CONFIG_SERIAL_21285_CONSOLE is not set
-+# CONFIG_SERIAL_UART00 is not set
-+# CONFIG_SERIAL_UART00_CONSOLE is not set
-+# CONFIG_SERIAL_SA1100 is not set
-+# CONFIG_SERIAL_SA1100_CONSOLE is not set
-+# CONFIG_SERIAL_8250 is not set
-+# CONFIG_SERIAL_8250_CONSOLE is not set
-+# CONFIG_SERIAL_8250_EXTENDED is not set
-+# CONFIG_SERIAL_8250_MANY_PORTS is not set
-+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-+# CONFIG_SERIAL_8250_MULTIPORT is not set
-+# CONFIG_SERIAL_8250_HUB6 is not set
-+CONFIG_UCB1200=y
-+CONFIG_TOUCHSCREEN_UCB1200=y
-+# CONFIG_AUDIO_UCB1200 is not set
-+# CONFIG_ADC_UCB1200 is not set
-+CONFIG_UNIX98_PTYS=y
-+CONFIG_UNIX98_PTY_COUNT=32
-+
-+#
-+# I2C support
-+#
-+# CONFIG_I2C is not set
-+
-+#
-+# L3 serial bus support
-+#
-+# CONFIG_L3 is not set
-+# CONFIG_L3_ALGOBIT is not set
-+# CONFIG_L3_BIT_SA1100_GPIO is not set
-+# CONFIG_L3_SA1111 is not set
-+# CONFIG_BIT_SA1100_GPIO is not set
-+
-+#
-+# Mice
-+#
-+# CONFIG_BUSMOUSE is not set
-+# CONFIG_MOUSE is not set
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_INPUT_GAMEPORT is not set
-+# CONFIG_QIC02_TAPE is not set
-+
-+#
-+# Watchdog Cards
-+#
-+# CONFIG_WATCHDOG is not set
-+# CONFIG_INTEL_RNG is not set
-+# CONFIG_NVRAM is not set
-+# CONFIG_RTC is not set
-+CONFIG_SA1100_RTC=y
-+# CONFIG_COTULLA_RTC is not set
-+# CONFIG_ADS7846_TS is not set
-+# CONFIG_DTLK is not set
-+# CONFIG_R3964 is not set
-+# CONFIG_APPLICOM is not set
-+
-+#
-+# Ftape, the floppy tape device driver
-+#
-+# CONFIG_FTAPE is not set
-+# CONFIG_AGP is not set
-+# CONFIG_DRM is not set
-+
-+#
-+# PCMCIA character devices
-+#
-+CONFIG_PCMCIA_SERIAL_CS=y
-+CONFIG_PCMCIA_CHRDEV=y
-+
-+#
-+# Multimedia devices
-+#
-+# CONFIG_VIDEO_DEV is not set
-+
-+#
-+# File systems
-+#
-+# CONFIG_QUOTA is not set
-+# CONFIG_AUTOFS_FS is not set
-+# CONFIG_AUTOFS4_FS is not set
-+CONFIG_FS_SYNC=y
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_REISERFS_CHECK is not set
-+# CONFIG_REISERFS_PROC_INFO is not set
-+# CONFIG_ADFS_FS is not set
-+# CONFIG_ADFS_FS_RW is not set
-+# CONFIG_AFFS_FS is not set
-+# CONFIG_HFS_FS is not set
-+# CONFIG_BFS_FS is not set
-+# CONFIG_EXT3_FS is not set
-+# CONFIG_JBD is not set
-+# CONFIG_JBD_DEBUG is not set
-+CONFIG_FAT_FS=y
-+# CONFIG_MSDOS_FS is not set
-+# CONFIG_UMSDOS_FS is not set
-+CONFIG_VFAT_FS=y
-+# CONFIG_EFS_FS is not set
-+# CONFIG_JFFS_FS is not set
-+CONFIG_JFFS2_FS=y
-+CONFIG_JFFS2_FS_DEBUG=0
-+# CONFIG_JFFS2_FS_NAND is not set
-+# CONFIG_JFFS2_PROC_FS is not set
-+# CONFIG_JFFS2_NODEMERGE is not set
-+# CONFIG_JFFS2_DYNFRAGTREE is not set
-+CONFIG_CRAMFS=y
-+CONFIG_TMPFS=y
-+CONFIG_RAMFS=y
-+# CONFIG_ISO9660_FS is not set
-+# CONFIG_JOLIET is not set
-+# CONFIG_ZISOFS is not set
-+CONFIG_MINIX_FS=y
-+# CONFIG_VXFS_FS is not set
-+# CONFIG_NTFS_FS is not set
-+# CONFIG_NTFS_RW is not set
-+# CONFIG_HPFS_FS is not set
-+CONFIG_PROC_FS=y
-+# CONFIG_DEVFS_FS is not set
-+# CONFIG_DEVFS_MOUNT is not set
-+# CONFIG_DEVFS_DEBUG is not set
-+CONFIG_DEVPTS_FS=y
-+# CONFIG_QNX4FS_FS is not set
-+# CONFIG_QNX4FS_RW is not set
-+# CONFIG_ROMFS_FS is not set
-+CONFIG_EXT2_FS=y
-+# CONFIG_SYSV_FS is not set
-+# CONFIG_UDF_FS is not set
-+# CONFIG_UDF_RW is not set
-+# CONFIG_UFS_FS is not set
-+# CONFIG_UFS_FS_WRITE is not set
-+
-+#
-+# Network File Systems
-+#
-+# CONFIG_CODA_FS is not set
-+# CONFIG_INTERMEZZO_FS is not set
-+CONFIG_NFS_FS=y
-+CONFIG_NFS_V3=y
-+# CONFIG_ROOT_NFS is not set
-+# CONFIG_NFSD is not set
-+# CONFIG_NFSD_V3 is not set
-+CONFIG_SUNRPC=y
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=y
-+CONFIG_SMB_FS=y
-+CONFIG_SMB_NLS_DEFAULT=y
-+CONFIG_SMB_NLS_REMOTE="UTF8"
-+# CONFIG_NCP_FS is not set
-+# CONFIG_NCPFS_PACKET_SIGNING is not set
-+# CONFIG_NCPFS_IOCTL_LOCKING is not set
-+# CONFIG_NCPFS_STRONG is not set
-+# CONFIG_NCPFS_NFS_NS is not set
-+# CONFIG_NCPFS_OS2_NS is not set
-+# CONFIG_NCPFS_SMALLDOS is not set
-+# CONFIG_NCPFS_NLS is not set
-+# CONFIG_NCPFS_EXTRAS is not set
-+# CONFIG_ZISOFS_FS is not set
-+CONFIG_ZLIB_FS_INFLATE=y
-+
-+#
-+# Partition Types
-+#
-+# CONFIG_PARTITION_ADVANCED is not set
-+CONFIG_MSDOS_PARTITION=y
-+CONFIG_SMB_NLS=y
-+CONFIG_NLS=y
-+
-+#
-+# Native Language Support
-+#
-+CONFIG_NLS_DEFAULT="UFT8"
-+CONFIG_NLS_CODEPAGE_437=y
-+# CONFIG_NLS_CODEPAGE_737 is not set
-+# CONFIG_NLS_CODEPAGE_775 is not set
-+# CONFIG_NLS_CODEPAGE_850 is not set
-+# CONFIG_NLS_CODEPAGE_852 is not set
-+# CONFIG_NLS_CODEPAGE_855 is not set
-+# CONFIG_NLS_CODEPAGE_857 is not set
-+# CONFIG_NLS_CODEPAGE_860 is not set
-+# CONFIG_NLS_CODEPAGE_861 is not set
-+# CONFIG_NLS_CODEPAGE_862 is not set
-+# CONFIG_NLS_CODEPAGE_863 is not set
-+# CONFIG_NLS_CODEPAGE_864 is not set
-+# CONFIG_NLS_CODEPAGE_865 is not set
-+CONFIG_NLS_CODEPAGE_866=y
-+# CONFIG_NLS_CODEPAGE_869 is not set
-+# CONFIG_NLS_CODEPAGE_936 is not set
-+# CONFIG_NLS_CODEPAGE_950 is not set
-+# CONFIG_NLS_CODEPAGE_932 is not set
-+# CONFIG_NLS_CODEPAGE_949 is not set
-+# CONFIG_NLS_CODEPAGE_874 is not set
-+# CONFIG_NLS_ISO8859_8 is not set
-+# CONFIG_NLS_CODEPAGE_1250 is not set
-+CONFIG_NLS_CODEPAGE_1251=y
-+CONFIG_NLS_ISO8859_1=y
-+# CONFIG_NLS_ISO8859_2 is not set
-+# CONFIG_NLS_ISO8859_3 is not set
-+# CONFIG_NLS_ISO8859_4 is not set
-+# CONFIG_NLS_ISO8859_5 is not set
-+# CONFIG_NLS_ISO8859_6 is not set
-+# CONFIG_NLS_ISO8859_7 is not set
-+# CONFIG_NLS_ISO8859_9 is not set
-+# CONFIG_NLS_ISO8859_13 is not set
-+# CONFIG_NLS_ISO8859_14 is not set
-+# CONFIG_NLS_ISO8859_15 is not set
-+CONFIG_NLS_KOI8_R=y
-+# CONFIG_NLS_KOI8_U is not set
-+CONFIG_NLS_UTF8=y
-+
-+#
-+# Console drivers
-+#
-+CONFIG_PC_KEYMAP=y
-+# CONFIG_VGA_CONSOLE is not set
-+
-+#
-+# Frame-buffer support
-+#
-+CONFIG_FB=y
-+CONFIG_DUMMY_CONSOLE=y
-+CONFIG_FB_COLLIE=y
-+# CONFIG_FB_ACORN is not set
-+# CONFIG_FB_ANAKIN is not set
-+# CONFIG_FB_CLPS711X is not set
-+# CONFIG_FB_SA1100 is not set
-+# CONFIG_FB_PXA is not set
-+# CONFIG_FB_COTULLA is not set
-+# CONFIG_FB_POODLE is not set
-+# CONFIG_FB_CORGI is not set
-+# CONFIG_SHARP_LOGO_SCREEN is not set
-+# CONFIG_FB_CYBER2000 is not set
-+# CONFIG_FB_VIRTUAL is not set
-+CONFIG_FBCON_ADVANCED=y
-+# CONFIG_FBCON_MFB is not set
-+# CONFIG_FBCON_CFB2 is not set
-+# CONFIG_FBCON_CFB4 is not set
-+# CONFIG_FBCON_CFB8 is not set
-+CONFIG_FBCON_CFB16=y
-+# CONFIG_FBCON_CFB24 is not set
-+# CONFIG_FBCON_CFB32 is not set
-+# CONFIG_FBCON_AFB is not set
-+# CONFIG_FBCON_ILBM is not set
-+# CONFIG_FBCON_IPLAN2P2 is not set
-+# CONFIG_FBCON_IPLAN2P4 is not set
-+# CONFIG_FBCON_IPLAN2P8 is not set
-+# CONFIG_FBCON_MAC is not set
-+# CONFIG_FBCON_VGA_PLANES is not set
-+# CONFIG_FBCON_VGA is not set
-+# CONFIG_FBCON_HGA is not set
-+CONFIG_FBCON_ROTATE_R=y
-+# CONFIG_FBCON_ROTATE_L is not set
-+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-+CONFIG_FBCON_FONTS=y
-+# CONFIG_FONT_8x8 is not set
-+# CONFIG_FONT_8x16 is not set
-+# CONFIG_FONT_SUN8x16 is not set
-+# CONFIG_FONT_SUN12x22 is not set
-+# CONFIG_FONT_6x11 is not set
-+# CONFIG_FONT_5x8 is not set
-+CONFIG_FONT_4x6=y
-+# CONFIG_FONT_PEARL_8x8 is not set
-+# CONFIG_FONT_ACORN_8x8 is not set
-+
-+#
-+# Sound
-+#
-+CONFIG_SOUND=y
-+# CONFIG_SOUND_BT878 is not set
-+CONFIG_SOUND_COLLIE_SSP=y
-+CONFIG_COLLIE_PCM1741=y
-+# CONFIG_COLLIE_PCM1717 is not set
-+CONFIG_SOUND_COLLIE_TC35143=y
-+# CONFIG_SOUND_CMPCI is not set
-+# CONFIG_SOUND_EMU10K1 is not set
-+# CONFIG_MIDI_EMU10K1 is not set
-+# CONFIG_SOUND_FUSION is not set
-+# CONFIG_SOUND_CS4281 is not set
-+# CONFIG_SOUND_ES1370 is not set
-+# CONFIG_SOUND_ES1371 is not set
-+# CONFIG_SOUND_ESSSOLO1 is not set
-+# CONFIG_SOUND_MAESTRO is not set
-+# CONFIG_SOUND_MAESTRO3 is not set
-+# CONFIG_SOUND_ICH is not set
-+# CONFIG_SOUND_RME96XX is not set
-+# CONFIG_SOUND_SONICVIBES is not set
-+# CONFIG_SOUND_TRIDENT is not set
-+# CONFIG_SOUND_MSNDCLAS is not set
-+# CONFIG_SOUND_MSNDPIN is not set
-+# CONFIG_SOUND_VIA82CXXX is not set
-+# CONFIG_MIDI_VIA82CXXX is not set
-+# CONFIG_SOUND_SA1100 is not set
-+# CONFIG_SOUND_UDA1341 is not set
-+# CONFIG_SOUND_ASSABET_UDA1341 is not set
-+# CONFIG_SOUND_H3600_UDA1341 is not set
-+# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
-+# CONFIG_SOUND_SA1111_UDA1341 is not set
-+# CONFIG_SOUND_SA1100SSP is not set
-+# CONFIG_SOUND_OSS is not set
-+# CONFIG_SOUND_WAVEARTIST is not set
-+# CONFIG_SOUND_PXA_AC97 is not set
-+# CONFIG_SOUND_POODLE is not set
-+# CONFIG_SOUND_CORGI is not set
-+# CONFIG_SOUND_TVMIXER is not set
-+
-+#
-+# Multimedia Capabilities Port drivers
-+#
-+# CONFIG_MCP is not set
-+# CONFIG_MCP_SA1100 is not set
-+# CONFIG_MCP_UCB1200 is not set
-+# CONFIG_MCP_UCB1200_AUDIO is not set
-+# CONFIG_MCP_UCB1200_TS is not set
-+# CONFIG_MCP_UCB1400_TS is not set
-+
-+#
-+# USB support
-+#
-+CONFIG_USB=m
-+# CONFIG_USB_DEBUG is not set
-+# CONFIG_USB_DEVICEFS is not set
-+# CONFIG_USB_BANDWIDTH is not set
-+# CONFIG_USB_LONG_TIMEOUT is not set
-+# CONFIG_USB_UHCI is not set
-+# CONFIG_USB_UHCI_ALT is not set
-+# CONFIG_USB_OHCI is not set
-+# CONFIG_USB_OHCI_SA1111 is not set
-+# CONFIG_USB_AUDIO is not set
-+# CONFIG_USB_BLUETOOTH is not set
-+# CONFIG_USB_STORAGE is not set
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+# CONFIG_USB_STORAGE_DATAFAB is not set
-+# CONFIG_USB_STORAGE_FREECOM is not set
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+# CONFIG_USB_STORAGE_DPCM is not set
-+# CONFIG_USB_STORAGE_HP8200e is not set
-+# CONFIG_USB_STORAGE_SDDR09 is not set
-+# CONFIG_USB_STORAGE_JUMPSHOT is not set
-+# CONFIG_USB_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+# CONFIG_USB_DC2XX is not set
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_SCANNER is not set
-+# CONFIG_USB_MICROTEK is not set
-+# CONFIG_USB_HPUSBSCSI is not set
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_CDCETHER is not set
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_USB_USS720 is not set
-+
-+#
-+# USB Serial Converter support
-+#
-+# CONFIG_USB_SERIAL is not set
-+# CONFIG_USB_SERIAL_GENERIC is not set
-+# CONFIG_USB_SERIAL_BELKIN is not set
-+# CONFIG_USB_SERIAL_WHITEHEAT is not set
-+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-+# CONFIG_USB_SERIAL_EMPEG is not set
-+# CONFIG_USB_SERIAL_FTDI_SIO is not set
-+# CONFIG_USB_SERIAL_VISOR is not set
-+# CONFIG_USB_SERIAL_IPAQ is not set
-+# CONFIG_USB_SERIAL_IR is not set
-+# CONFIG_USB_SERIAL_EDGEPORT is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-+# CONFIG_USB_SERIAL_KEYSPAN is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-+# CONFIG_USB_SERIAL_MCT_U232 is not set
-+# CONFIG_USB_SERIAL_KLSI is not set
-+# CONFIG_USB_SERIAL_PL2303 is not set
-+# CONFIG_USB_SERIAL_CYBERJACK is not set
-+# CONFIG_USB_SERIAL_XIRCOM is not set
-+# CONFIG_USB_SERIAL_OMNINET is not set
-+# CONFIG_USB_RIO500 is not set
-+
-+#
-+# USB Device Support
-+#
-+CONFIG_USBD=m
-+CONFIG_USBD_VENDORID=4dd
-+CONFIG_USBD_PRODUCTID=8002
-+CONFIG_USBD_PRODUCT_NAME="SL Series"
-+CONFIG_USBD_MANUFACTURER="Sharp"
-+CONFIG_USBD_USE_SERIAL_NUMBER=y
-+CONFIG_USBD_SERIAL_NUMBER_STR="A01234"
-+CONFIG_USBD_SELFPOWERED=y
-+CONFIG_USBD_MONITOR=m
-+CONFIG_USBD_PROCFS=y
-+
-+#
-+# Network Function
-+#
-+CONFIG_USBD_NET=m
-+CONFIG_USBD_NET_VENDORID=4DD
-+CONFIG_USBD_NET_PRODUCTID=8004
-+CONFIG_USBD_NET_IFNAME="usbd"
-+CONFIG_USBD_NET_OUT_ENDPOINT=1
-+CONFIG_USBD_NET_OUT_PKTSIZE=64
-+CONFIG_USBD_NET_IN_ENDPOINT=2
-+CONFIG_USBD_NET_IN_PKTSIZE=64
-+# CONFIG_USBD_NET_ALWAYSUP is not set
-+# CONFIG_USBD_NET_SAFE is not set
-+# CONFIG_USBD_NET_MDLM is not set
-+CONFIG_USBD_NET_CDC=y
-+CONFIG_USBD_NET_REMOTE_MACADDR=""
-+CONFIG_USBD_NET_REMOTE_OUI=400002
-+# CONFIG_USBD_MAC_AS_SERIAL_NUMBER is not set
-+CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-+CONFIG_USBD_NET_LOCAL_OUI=400001
-+
-+#
-+# Serial Function
-+#
-+CONFIG_USBD_SERIAL=m
-+CONFIG_USBD_SERIAL_VENDORID=4dd
-+CONFIG_USBD_SERIAL_PRODUCTID=8002
-+# CONFIG_USBD_SERIAL_CDC is not set
-+CONFIG_USBD_SERIAL_OUT_ENDPOINT=1
-+CONFIG_USBD_SERIAL_IN_PKTSIZE=64
-+CONFIG_USBD_SERIAL_IN_ENDPOINT=2
-+CONFIG_USBD_SERIAL_OUT_PKTSIZE=64
-+# CONFIG_USBD_SERIAL_SAFE is not set
-+
-+#
-+# USB Device Bus Interface Support
-+#
-+CONFIG_USBD_SA1100_BUS=m
-+# CONFIG_USBD_TRAFFIC_KEEPAWAKE is not set
-+CONFIG_USBD_STALL_TIMEOUT=0
-+CONFIG_USBD_STALL_DISCONNECT_DURATION=2
-+# CONFIG_USBD_GENERIC_BUS is not set
-+
-+#
-+# Bluetooth support
-+#
-+# CONFIG_BLUEZ is not set
-+
-+#
-+# Kernel hacking
-+#
-+CONFIG_FRAME_POINTER=y
-+# CONFIG_DEBUG_USER is not set
-+# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-+# CONFIG_DEBUG_INFO is not set
-+# CONFIG_NO_PGT_CACHE is not set
-+# CONFIG_DEBUG_KERNEL is not set
-+# CONFIG_DEBUG_SLAB is not set
-+# CONFIG_MAGIC_SYSRQ is not set
-+# CONFIG_DEBUG_SPINLOCK is not set
-+# CONFIG_DEBUG_WAITQ is not set
-+# CONFIG_DEBUG_BUGVERBOSE is not set
-+# CONFIG_DEBUG_ERRORS is not set
-+# CONFIG_DEBUG_LL is not set
-+# CONFIG_DEBUG_DC21285_PORT is not set
-+# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/defconfig-collie b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/defconfig-collie
deleted file mode 100644
index 6f0bf1e10d..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/defconfig-collie
+++ /dev/null
@@ -1,1177 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-# CONFIG_GENERIC_BUST_SPINLOCK is not set
-# CONFIG_GENERIC_ISA_DMA is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_MX1ADS is not set
-# CONFIG_ARCH_RPC is not set
-CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_SHARK is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_ADSBITSY is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CEP is not set
-# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_COLLIE=y
-CONFIG_LOCOMO=y
-# CONFIG_COLLIE_TS is not set
-# CONFIG_COLLIE_TR0 is not set
-# CONFIG_COLLIE_TR1 is not set
-# CONFIG_COLLIE_DEV is not set
-# CONFIG_COLLIE_G is not set
-CONFIG_COLLIE_UP=y
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_H3XXX is not set
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_FRODO is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_GRAPHICSMASTER is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_PT_SYSTEM3 is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_USB is not set
-# CONFIG_SA1100_USB_NETLINK is not set
-# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_H3600_SLEEVE is not set
-
-#
-# Intel PXA250/210 Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_ARCH_PXA_CERF is not set
-# CONFIG_COTULLA_DMA is not set
-# CONFIG_SABINAL_DISCOVERY is not set
-# CONFIG_ARCH_SABINAL is not set
-# CONFIG_ARCH_PXA_POODLE is not set
-# CONFIG_POODLE_TR0 is not set
-# CONFIG_ARCH_PXA_CORGI is not set
-# CONFIG_CORGI_TR0 is not set
-CONFIG_ARCH_SHARP_SL=y
-# CONFIG_PXA_USB is not set
-# CONFIG_PXA_USB_NETLINK is not set
-# CONFIG_PXA_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_AUTCPU12 is not set
-# CONFIG_ARCH_CDB89712 is not set
-# CONFIG_ARCH_CLEP7312 is not set
-# CONFIG_ARCH_EDB7211 is not set
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_FORTUNET is not set
-# CONFIG_ARCH_EP7211 is not set
-# CONFIG_ARCH_EP7212 is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-# CONFIG_CPU_32v3 is not set
-CONFIG_CPU_32v4=y
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-# CONFIG_PLD is not set
-# CONFIG_CPU_ARM926T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_SA110 is not set
-CONFIG_CPU_SA1100=y
-# CONFIG_ARM_THUMB is not set
-CONFIG_DISCONTIGMEM=y
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-CONFIG_ISA=y
-# CONFIG_ISA_DMA is not set
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-# CONFIG_CPU_FREQ is not set
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-CONFIG_PCMCIA_SA1100=y
-# CONFIG_PCMCIA_PXA is not set
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=y
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-CONFIG_APM_CPU_IDLE=y
-CONFIG_APM_DISPLAY_BLANK=y
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="<see openzaurus-sa_*.bb file in OpenEmbedded metadata>"
-# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_FREEPG_SIGNAL=y
-CONFIG_OOM_KILL_SURVIVAL=y
-CONFIG_DEVICEINFO=m
-CONFIG_COLLIE_DEVICEINFO=m
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_CACKO_HYBRID_PARTITIONS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-# CONFIG_MTD_GEN_PROBE is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_COLLIE=y
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_LUBBOCK is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_CDB89712 is not set
-CONFIG_MTD_SA1100=y
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_FORTUNET is not set
-# CONFIG_MTD_PXA_CERF is not set
-# CONFIG_MTD_EPXA10DB is not set
-# CONFIG_MTD_AUTCPU12 is not set
-# CONFIG_MTD_EDB7312 is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_DISCOVERY is not set
-# CONFIG_MTD_SHARP_SL is not set
-# CONFIG_MTD_PCI is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDROM_SA1100 is not set
-# CONFIG_MTD_MTDRAM_SA1100 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_MTDRAM_SHARP_SL is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_ARPD is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_UNCLEAN=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_MIRROR=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_MARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IPV6=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_MARK=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-CONFIG_IPSEC=m
-CONFIG_IPSEC_IPIP=y
-CONFIG_IPSEC_AH=y
-# CONFIG_IPSEC_AUTH_HMAC_MD5 is not set
-CONFIG_IPSEC_AUTH_HMAC_SHA1=y
-CONFIG_IPSEC_ESP=y
-CONFIG_IPSEC_ENC_3DES=y
-# CONFIG_IPSEC_ENC_AES is not set
-CONFIG_IPSEC_ALG=y
-# CONFIG_IPSEC_ALG_AES is not set
-# CONFIG_IPSEC_ALG_CRYPTOAPI is not set
-CONFIG_IPSEC_IPCOMP=y
-CONFIG_IPSEC_DEBUG=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-CONFIG_DUMMY=m
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=y
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=y
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPP_DEFLATE is not set
-CONFIG_PPP_BSDCOMP=y
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_AIRO is not set
-# CONFIG_HERMES is not set
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=y
-CONFIG_PCMCIA_AXNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-CONFIG_NET_PCMCIA_RADIO=y
-# CONFIG_PCMCIA_RAYCS is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_AIRONET4500_CS is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=y
-# CONFIG_IRLAN is not set
-CONFIG_IRNET=m
-CONFIG_IRCOMM=y
-# CONFIG_IRDA_ULTRA is not set
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-CONFIG_IRTTY_SIR=y
-CONFIG_IRPORT_SIR=y
-# CONFIG_DONGLE is not set
-# CONFIG_USB_IRDA is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VLSI_FIR is not set
-CONFIG_SA1100_FIR=y
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-
-#
-# SCSI support
-#
-# CONFIG_SCSI is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-CONFIG_INPUT_UINPUT=m
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-CONFIG_SERIAL_COLLIE=y
-# CONFIG_SERIAL_COLLIE_CONSOLE is not set
-CONFIG_COLLIE_DEFAULT_BAUDRATE=9600
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_ANAKIN is not set
-# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_UART00 is not set
-# CONFIG_SERIAL_UART00_CONSOLE is not set
-# CONFIG_SERIAL_SA1100 is not set
-# CONFIG_SERIAL_SA1100_CONSOLE is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_CONSOLE is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-CONFIG_UCB1200=y
-CONFIG_TOUCHSCREEN_UCB1200=y
-# CONFIG_AUDIO_UCB1200 is not set
-# CONFIG_ADC_UCB1200 is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-# CONFIG_L3_ALGOBIT is not set
-# CONFIG_L3_BIT_SA1100_GPIO is not set
-# CONFIG_L3_SA1111 is not set
-# CONFIG_BIT_SA1100_GPIO is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-# CONFIG_INPUT_SERIO is not set
-# CONFIG_INPUT_SERPORT is not set
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_INTEL_RNG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_SA1100_RTC=y
-# CONFIG_COTULLA_RTC is not set
-# CONFIG_ADS7846_TS is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=y
-CONFIG_PCMCIA_CHRDEV=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FS_SYNC is not set
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-# CONFIG_JFFS2_PROC_FS is not set
-# CONFIG_JFFS2_NODEMERGE is not set
-# CONFIG_JFFS2_DYNFRAGTREE is not set
-CONFIG_CRAMFS=y
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-CONFIG_MINIX_FS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_SMB_FS=y
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="UTF8"
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_FS is not set
-CONFIG_ZLIB_FS_INFLATE=y
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="UFT8"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FB_COLLIE=y
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_COTULLA is not set
-# CONFIG_FB_POODLE is not set
-# CONFIG_FB_CORGI is not set
-# CONFIG_SHARP_LOGO_SCREEN is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-CONFIG_FBCON_ROTATE_R=y
-# CONFIG_FBCON_ROTATE_L is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_5x8 is not set
-CONFIG_FONT_4x6=y
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_BT878 is not set
-CONFIG_SOUND_COLLIE_SSP=y
-CONFIG_COLLIE_PCM1741=y
-# CONFIG_COLLIE_PCM1717 is not set
-CONFIG_SOUND_COLLIE_TC35143=y
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_SA1100 is not set
-# CONFIG_SOUND_UDA1341 is not set
-# CONFIG_SOUND_ASSABET_UDA1341 is not set
-# CONFIG_SOUND_H3600_UDA1341 is not set
-# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
-# CONFIG_SOUND_SA1111_UDA1341 is not set
-# CONFIG_SOUND_SA1100SSP is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_WAVEARTIST is not set
-# CONFIG_SOUND_PXA_AC97 is not set
-# CONFIG_SOUND_POODLE is not set
-# CONFIG_SOUND_CORGI is not set
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-# CONFIG_MCP_SA1100 is not set
-# CONFIG_MCP_UCB1200 is not set
-# CONFIG_MCP_UCB1200_AUDIO is not set
-# CONFIG_MCP_UCB1200_TS is not set
-# CONFIG_MCP_UCB1400_TS is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_UHCI is not set
-# CONFIG_USB_UHCI_ALT is not set
-# CONFIG_USB_OHCI is not set
-# CONFIG_USB_OHCI_SA1111 is not set
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_STORAGE is not set
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_HP8200e is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_HID is not set
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_RIO500 is not set
-
-#
-# USB Device Support
-#
-CONFIG_USBD=m
-CONFIG_USBD_VENDORID=4dd
-CONFIG_USBD_PRODUCTID=8002
-CONFIG_USBD_PRODUCT_NAME="SL Series"
-CONFIG_USBD_MANUFACTURER="Sharp"
-CONFIG_USBD_USE_SERIAL_NUMBER=y
-CONFIG_USBD_SERIAL_NUMBER_STR="A01234"
-CONFIG_USBD_SELFPOWERED=y
-CONFIG_USBD_MONITOR=m
-CONFIG_USBD_PROCFS=y
-
-#
-# Network Function
-#
-CONFIG_USBD_NET=m
-CONFIG_USBD_NET_VENDORID=4DD
-CONFIG_USBD_NET_PRODUCTID=8004
-CONFIG_USBD_NET_IFNAME="usbd"
-CONFIG_USBD_NET_OUT_ENDPOINT=1
-CONFIG_USBD_NET_OUT_PKTSIZE=64
-CONFIG_USBD_NET_IN_ENDPOINT=2
-CONFIG_USBD_NET_IN_PKTSIZE=64
-# CONFIG_USBD_NET_ALWAYSUP is not set
-# CONFIG_USBD_NET_SAFE is not set
-# CONFIG_USBD_NET_MDLM is not set
-CONFIG_USBD_NET_CDC=y
-CONFIG_USBD_NET_REMOTE_MACADDR="400002000001"
-CONFIG_USBD_NET_REMOTE_OUI=400002
-# CONFIG_USBD_MAC_AS_SERIAL_NUMBER is not set
-CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
-CONFIG_USBD_NET_LOCAL_OUI=400001
-
-#
-# Serial Function
-#
-CONFIG_USBD_SERIAL=m
-CONFIG_USBD_SERIAL_VENDORID=4dd
-CONFIG_USBD_SERIAL_PRODUCTID=8002
-# CONFIG_USBD_SERIAL_CDC is not set
-CONFIG_USBD_SERIAL_OUT_ENDPOINT=1
-CONFIG_USBD_SERIAL_IN_PKTSIZE=64
-CONFIG_USBD_SERIAL_IN_ENDPOINT=2
-CONFIG_USBD_SERIAL_OUT_PKTSIZE=64
-# CONFIG_USBD_SERIAL_SAFE is not set
-
-#
-# USB Device Bus Interface Support
-#
-CONFIG_USBD_SA1100_BUS=m
-# CONFIG_USBD_TRAFFIC_KEEPAWAKE is not set
-CONFIG_USBD_STALL_TIMEOUT=0
-CONFIG_USBD_STALL_DISCONNECT_DURATION=2
-# CONFIG_USBD_GENERIC_BUS is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-# CONFIG_BLUEZ_HIDP is not set
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BLUEZ_HCIUSB is not set
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y
-# CONFIG_BLUEZ_HCIBFUSB is not set
-CONFIG_BLUEZ_HCIDTL1=m
-CONFIG_BLUEZ_HCIBT3C=m
-CONFIG_BLUEZ_HCIBLUECARD=m
-CONFIG_BLUEZ_HCIBTUART=m
-# CONFIG_BLUEZ_HCIVHCI is not set
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_COREDUMP_SIGNAL is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_NO_PGT_CACHE is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_ERRORS is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/disable-pcmcia-probe.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/disable-pcmcia-probe.patch
deleted file mode 100644
index 79ba036323..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/disable-pcmcia-probe.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- linux/drivers/pcmcia/Config.in~disable-pcmcia-probe 2003-05-13 11:18:23.000000000 +0200
-+++ linux/drivers/pcmcia/Config.in 2004-05-27 13:59:50.000000000 +0200
-@@ -15,9 +15,6 @@
- tristate 'PCMCIA/CardBus support' CONFIG_PCMCIA
- if [ "$CONFIG_PCMCIA" != "n" ]; then
- # yes, I really mean the following...
-- if [ "$CONFIG_ISA" = "y" -o "$CONFIG_ARCH_SA1100" = "y" ]; then
-- define_bool CONFIG_PCMCIA_PROBE y
-- fi
- if [ "$CONFIG_PCI" != "n" ]; then
- bool ' CardBus support' CONFIG_CARDBUS
- fi
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/idecs.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/idecs.patch
deleted file mode 100644
index 62038c34e2..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/idecs.patch
+++ /dev/null
@@ -1,77 +0,0 @@
---- linux/drivers/ide/ide-cs.c 2003-02-28 17:04:00.000000000 -0600
-+++ linux.new/drivers/ide/ide-cs.c 2003-02-28 17:18:53.000000000 -0600
-@@ -2,7 +2,7 @@
-
- A driver for PCMCIA IDE/ATA disk cards
-
-- ide_cs.c 1.26 1999/11/16 02:10:49
-+ ide-cs.c 1.26 1999/11/16 02:10:49
-
- The contents of this file are subject to the Mozilla Public
- License Version 1.1 (the "License"); you may not use this file
-@@ -66,7 +66,7 @@
- MODULE_PARM(pc_debug, "i");
- #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args)
- static char *version =
--"ide_cs.c 1.26 1999/11/16 02:10:49 (David Hinds)";
-+"ide-cs.c 1.26 1999/11/16 02:10:49 (David Hinds)";
- #else
- #define DEBUG(n, args...)
- #endif
-@@ -110,7 +110,7 @@
- static int ide_event(event_t event, int priority,
- event_callback_args_t *args);
-
--static dev_info_t dev_info = "ide_cs";
-+static dev_info_t dev_info = "ide-cs";
-
- static dev_link_t *ide_attach(void);
- static void ide_detach(dev_link_t *);
-@@ -356,7 +356,7 @@
- }
-
- if (hd < 0) {
-- printk(KERN_NOTICE "ide_cs: ide_register() at 0x%03x & 0x%03x"
-+ printk(KERN_NOTICE "ide-cs: ide_register() at 0x%03x & 0x%03x"
- ", irq %u failed\n", io_base, ctl_base,
- link->irq.AssignedIRQ);
- goto failed;
-@@ -369,7 +369,7 @@
- info->node.minor = 0;
- info->hd = hd;
- link->dev = &info->node;
-- printk(KERN_INFO "ide_cs: %s: Vcc = %d.%d, Vpp = %d.%d\n",
-+ printk(KERN_INFO "ide-cs: %s: Vcc = %d.%d, Vpp = %d.%d\n",
- info->node.dev_name, link->conf.Vcc/10, link->conf.Vcc%10,
- link->conf.Vpp1/10, link->conf.Vpp1%10);
-
-@@ -409,9 +409,9 @@
- MOD_DEC_USE_COUNT;
- }
-
-- request_region(link->io.BasePort1, link->io.NumPorts1,"ide_cs");
-+ request_region(link->io.BasePort1, link->io.NumPorts1,"ide-cs");
- if (link->io.NumPorts2)
-- request_region(link->io.BasePort2, link->io.NumPorts2,"ide_cs");
-+ request_region(link->io.BasePort2, link->io.NumPorts2,"ide-cs");
-
- info->ndev = 0;
- link->dev = NULL;
-@@ -508,7 +508,7 @@
- DEBUG(0, "%s\n", version);
- CardServices(GetCardServicesInfo, &serv);
- if (serv.Revision != CS_RELEASE_CODE) {
-- printk(KERN_NOTICE "ide_cs: Card Services release "
-+ printk(KERN_NOTICE "ide-cs: Card Services release "
- "does not match!\n");
- return -1;
- }
-@@ -518,7 +518,7 @@
-
- static void __exit exit_ide_cs(void)
- {
-- DEBUG(0, "ide_cs: unloading\n");
-+ DEBUG(0, "ide-cs: unloading\n");
- unregister_pccard_driver(&dev_info);
- while (dev_list != NULL)
- ide_detach(dev_list);
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/initsh.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/initsh.patch
deleted file mode 100644
index a672631194..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/initsh.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- linux/init/main.c 2002-02-25 13:38:13.000000000 -0600
-+++ linux.new/init/main.c 2003-03-16 11:49:45.000000000 -0600
-@@ -830,8 +830,10 @@
- * trying to recover a really broken machine.
- */
-
-- if (execute_command)
-+ if (execute_command) {
-+ argv_init[0] = execute_command;
- execve(execute_command,argv_init,envp_init);
-+ }
- execve("/sbin/init",argv_init,envp_init);
- execve("/etc/init",argv_init,envp_init);
- execve("/bin/init",argv_init,envp_init);
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/keymap-more-sane.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/keymap-more-sane.patch
deleted file mode 100644
index a7eefd1e16..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/keymap-more-sane.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- linux/drivers/char/collie_keymap.map~keymap-more-sane 2003-05-13 11:18:18.000000000 +0200
-+++ linux/drivers/char/collie_keymap.map 2004-06-23 00:03:19.000000000 +0200
-@@ -55,9 +55,11 @@
- # (Cancel:34) F9 -> Escape
- keycode 34 = Escape
- keycode 35 = Left
-+ control keycode 35 = Decr_Console
- keycode 36 = Up
- keycode 37 = Down
- keycode 38 = Right
-+ control keycode 38 = Incr_Console
- # (OK:39) F4 -> Return
- keycode 39 = Return
- keycode 40 =
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/logo.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/logo.patch
deleted file mode 100644
index fd8084254c..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/logo.patch
+++ /dev/null
@@ -1,2598 +0,0 @@
---- linux/drivers/video/fbcon.c 2003-02-27 21:47:36.000000000 -0600
-+++ linux.new/drivers/video/fbcon.c 2003-02-27 18:39:39.000000000 -0600
-@@ -126,8 +126,8 @@
- #define LOGO_H (320-16)
- #define LOGO_W 240
- #else
--#define LOGO_H 80
--#define LOGO_W 80
-+#define LOGO_H 52
-+#define LOGO_W 240
- #endif
- #define LOGO_LINE (LOGO_W/8)
- #if defined(CONFIG_SHARP_LOGO_SCREEN)
---- linux/include/linux/linux_logo.h 2001-06-11 21:15:27.000000000 -0500
-+++ linux.new/include/linux/linux_logo.h 2003-02-27 15:58:15.000000000 -0600
-@@ -1,4 +1,4 @@
--/* $Id: linux_logo.h,v 1.5 1998/07/30 16:30:58 jj Exp $
-+/* linux_logo.h created with fblogo, 2002/12/29 02:43:36
- * include/linux/linux_logo.h: This is a linux logo
- * to be displayed on boot.
- *
-@@ -7,907 +7,1673 @@
- *
- * You can put anything here, but:
- * LINUX_LOGO_COLORS has to be less than 224
-- * image size has to be 80x80
-- * values have to start from 0x20
-- * (i.e. RGB(linux_logo_red[0],
-- * linux_logo_green[0],
-- * linux_logo_blue[0]) is color 0x20)
-- * BW image has to be 80x80 as well, with MS bit
-- * on the left
-- * Serial_console ascii image can be any size,
-- * but should contain %s to display the version
-+ * Generated by fblogo version 0.5.0
-+ *
-+ *
-+ * Remember to modify drivers/video/fbcon.c:
-+ * Change "#define LOGO_H 80" to "#define LOGO_H 52"
-+ * Change "#define LOGO_W 80" to "#define LOGO_W 240"
- */
-
- #ifndef __HAVE_ARCH_LINUX_LOGO
--#define LINUX_LOGO_COLORS 187
-+#define LINUX_LOGO_COLORS 223
- #endif
--
- #ifdef INCLUDE_LINUX_LOGO_DATA
--
- #ifndef __HAVE_ARCH_LINUX_LOGO
--
- unsigned char linux_logo_red[] __initdata = {
-- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22,
-- 0x12, 0x00, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56,
-- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x02, 0x65,
-- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6,
-- 0xc3, 0x65, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6,
-- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7,
-- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x76, 0x79,
-- 0x62, 0x36, 0x9a, 0xe2, 0xec, 0xe1, 0xb8, 0xd7,
-- 0xaf, 0x25, 0xbc, 0xc0, 0xef, 0xea, 0xe8, 0xe8,
-- 0xf5, 0xf1, 0xda, 0xd3, 0x79, 0xdb, 0xf4, 0xf6,
-- 0xf6, 0xf6, 0xe2, 0x3d, 0xb4, 0xce, 0xe6, 0xee,
-- 0xf6, 0x68, 0xd8, 0xec, 0xf5, 0xc6, 0xc8, 0x9c,
-- 0x89, 0xd2, 0xee, 0xcb, 0xb9, 0xd2, 0x66, 0x5e,
-- 0x8b, 0xbe, 0xa8, 0xd5, 0xca, 0xb6, 0xae, 0x9c,
-- 0xc5, 0xbe, 0xbe, 0xca, 0x90, 0xb2, 0x9a, 0xa8,
-- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x12,
-- 0x4a, 0x8e, 0xf2, 0xf6, 0xf6, 0xee, 0xb5, 0xe4,
-- 0xf1, 0x26, 0x9a, 0xea, 0xf6, 0xe0, 0xd2, 0x16,
-- 0x9a, 0x2e, 0x70, 0xd6, 0x46, 0x7c, 0xb4, 0x62,
-- 0xd6, 0xa3, 0x74, 0xa7, 0xa2, 0xca, 0xe0, 0xae,
-- 0xbe, 0xce, 0xa3, 0x8e, 0x6d, 0x8e, 0x32, 0xaf,
-- 0x50, 0x9e, 0x5b, 0x8a, 0x98, 0x82, 0x7a, 0x82,
-- 0x56, 0x7c, 0x8a, 0x56, 0x5e, 0x86, 0x6a, 0x52,
-- 0x59, 0x64, 0x5e,
-+ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA,
-+ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE,
-+ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA,
-+ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36,
-+ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82,
-+ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6,
-+ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E,
-+ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x32, 0x7E,
-+ 0x3A, 0x16, 0x02, 0x02, 0x06, 0x1F, 0x02, 0x02,
-+ 0x06, 0x02, 0x22, 0x3A, 0x35, 0x16, 0x0A, 0x02,
-+ 0x2A, 0x3E, 0x39, 0x32, 0x2A, 0x1E, 0x16, 0x06,
-+ 0x22, 0x22, 0x1E, 0x16, 0x6E, 0x82, 0x6E, 0x2E,
-+ 0x1E, 0x2E, 0x1E, 0x0A, 0x3A, 0xDA, 0xFE, 0xFA,
-+ 0xFA, 0xE2, 0x6A, 0x3A, 0x1A, 0xFA, 0xF6, 0x9E,
-+ 0x02, 0x6E, 0xFE, 0xF6, 0x3E, 0x66, 0x52, 0x1B,
-+ 0xD6, 0x5A, 0xEE, 0xC6, 0x72, 0x36, 0x22, 0x1E,
-+ 0x02, 0x96, 0xF6, 0xDE, 0xA2, 0xD6, 0x39, 0x0E,
-+ 0xAA, 0x52, 0x5A, 0xD2, 0xDE, 0x61, 0x46, 0xDE,
-+ 0x7A, 0x57, 0x9E, 0xBA, 0xB6, 0x4A, 0x5A, 0xA6,
-+ 0x96, 0x23, 0x1E, 0x12, 0x9A, 0x4E, 0x76, 0xAE,
-+ 0x2E, 0xBE, 0x86, 0x48, 0xA6, 0x52, 0x06, 0x2E,
-+ 0x56, 0x13, 0x2A, 0x4A, 0x36, 0x56, 0x2E, 0x1E,
-+ 0x46, 0x3A, 0x66, 0x02, 0x3D, 0x3E, 0x2E, 0x3E,
-+ 0x4A, 0x32, 0x52, 0x72, 0x76, 0x67, 0x68, 0x5A,
-+ 0x3A, 0x1A, 0x0E, 0x2E, 0x4E, 0x02, 0x3E, 0x0A,
-+ 0x28, 0x42, 0x10, 0x26, 0x8E, 0x0A, 0x86, 0xC2,
-+ 0x02, 0x6E, 0x92, 0x02, 0x42, 0x02, 0xBE, 0x4E,
-+ 0x02, 0x22, 0x02, 0x3E, 0x3A, 0x32
- };
-
- unsigned char linux_logo_green[] __initdata = {
-- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22,
-- 0x12, 0x00, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56,
-- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x02, 0x65,
-- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6,
-- 0xc3, 0x62, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6,
-- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7,
-- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x62, 0x5c,
-- 0x4e, 0x26, 0x72, 0xaa, 0xba, 0xaf, 0x90, 0xae,
-- 0x92, 0x1a, 0xa4, 0x85, 0xb6, 0xbe, 0xc3, 0xc8,
-- 0xcf, 0xd0, 0xc2, 0xce, 0x57, 0xa2, 0xd6, 0xda,
-- 0xda, 0xd7, 0xb8, 0x2a, 0x7b, 0x91, 0xae, 0xca,
-- 0xda, 0x45, 0x9e, 0xb2, 0xd7, 0x9b, 0x90, 0x76,
-- 0x5c, 0xa2, 0xbe, 0xa6, 0x85, 0x96, 0x4e, 0x46,
-- 0x66, 0x92, 0x7a, 0x9a, 0x96, 0x9d, 0x9a, 0x6b,
-- 0x8a, 0x8e, 0xb2, 0xca, 0x90, 0xa6, 0x79, 0x7c,
-- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x0e,
-- 0x36, 0x86, 0xba, 0xbe, 0xe6, 0xcc, 0x8e, 0xb8,
-- 0xc4, 0x1e, 0x8e, 0xae, 0xba, 0xb2, 0xa6, 0x12,
-- 0x7a, 0x20, 0x64, 0xaa, 0x2f, 0x70, 0x85, 0x46,
-- 0xa6, 0x6e, 0x51, 0x72, 0x92, 0xa2, 0xa6, 0x87,
-- 0x96, 0xa2, 0x85, 0x7a, 0x6a, 0x6e, 0x22, 0x76,
-- 0x36, 0x76, 0x3c, 0x6e, 0x63, 0x53, 0x66, 0x62,
-- 0x42, 0x50, 0x56, 0x42, 0x56, 0x56, 0x56, 0x3e,
-- 0x51, 0x52, 0x56,
-+ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA,
-+ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE,
-+ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA,
-+ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36,
-+ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82,
-+ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6,
-+ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E,
-+ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x2E, 0x7E,
-+ 0x3A, 0x3E, 0x6A, 0xA2, 0x92, 0x30, 0x95, 0x76,
-+ 0x4E, 0x86, 0x36, 0x7E, 0x9A, 0x6E, 0x42, 0x56,
-+ 0x5A, 0xC2, 0xBE, 0xB2, 0xAA, 0x9A, 0x63, 0x1E,
-+ 0xA2, 0x9E, 0x96, 0x5A, 0x3A, 0x42, 0x4A, 0x52,
-+ 0x91, 0x46, 0x4E, 0x62, 0x22, 0x4A, 0x6E, 0x86,
-+ 0x92, 0x9A, 0x52, 0x4A, 0x76, 0x7A, 0x9E, 0x76,
-+ 0x62, 0x32, 0x5E, 0xAE, 0x3E, 0x66, 0x52, 0x81,
-+ 0xA6, 0x5A, 0xEE, 0xC6, 0x72, 0x5C, 0x6A, 0x8A,
-+ 0x36, 0x3E, 0xBA, 0xBA, 0xA2, 0xD6, 0xAA, 0x4E,
-+ 0x8A, 0x4E, 0x5A, 0xD2, 0xDE, 0x64, 0x32, 0x9A,
-+ 0x5E, 0x57, 0x9E, 0xBA, 0xB6, 0x52, 0x62, 0xA6,
-+ 0x9A, 0x47, 0x3E, 0x56, 0x02, 0x1A, 0x76, 0xAE,
-+ 0x4A, 0x02, 0x02, 0x38, 0x02, 0x4A, 0x46, 0x86,
-+ 0x1E, 0x2E, 0x7A, 0xD2, 0x5E, 0x26, 0x92, 0x62,
-+ 0xCA, 0x42, 0x66, 0x26, 0x67, 0xB6, 0x62, 0x92,
-+ 0x9E, 0x72, 0xB2, 0xF2, 0xFE, 0xDE, 0xFE, 0xFE,
-+ 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x8A, 0x2A,
-+ 0x42, 0x52, 0x6A, 0x26, 0x8E, 0x26, 0x86, 0xC2,
-+ 0xE2, 0x6E, 0x92, 0xBE, 0x42, 0xC6, 0xBE, 0x4E,
-+ 0xEE, 0x5A, 0xEA, 0x3E, 0x4A, 0x32
- };
-
- unsigned char linux_logo_blue[] __initdata = {
-- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22,
-- 0x12, 0x01, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56,
-- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x06, 0x65,
-- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6,
-- 0xc3, 0x59, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6,
-- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7,
-- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x2e, 0x08,
-- 0x0a, 0x06, 0x0a, 0x0b, 0x0b, 0x0f, 0x0c, 0x0f,
-- 0x3d, 0x09, 0x73, 0x09, 0x0d, 0x0a, 0x10, 0x1e,
-- 0x2d, 0x13, 0x86, 0xba, 0x19, 0x0a, 0x36, 0x3c,
-- 0x26, 0x14, 0x0d, 0x06, 0x07, 0x0a, 0x0b, 0x0f,
-- 0x4a, 0x06, 0x0a, 0x0c, 0x2b, 0x0a, 0x0b, 0x0a,
-- 0x06, 0x0a, 0x0a, 0x11, 0x0b, 0x0a, 0x0a, 0x1e,
-- 0x0f, 0x0d, 0x0a, 0x0b, 0x22, 0x6a, 0x72, 0x0b,
-- 0x0b, 0x22, 0x90, 0xca, 0x90, 0x92, 0x3c, 0x2c,
-- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x06,
-- 0x0e, 0x6a, 0x0e, 0x0e, 0xbe, 0x5b, 0x2c, 0x3e,
-- 0x0e, 0x0a, 0x5a, 0x0d, 0x0e, 0x3e, 0x0a, 0x06,
-- 0x2e, 0x06, 0x4e, 0x36, 0x06, 0x58, 0x24, 0x06,
-- 0x3a, 0x08, 0x08, 0x07, 0x5e, 0x45, 0x0a, 0x32,
-- 0x2e, 0x2a, 0x43, 0x48, 0x5f, 0x2e, 0x06, 0x06,
-- 0x07, 0x24, 0x06, 0x32, 0x06, 0x06, 0x46, 0x2e,
-- 0x22, 0x06, 0x06, 0x1e, 0x4c, 0x06, 0x3a, 0x22,
-- 0x42, 0x34, 0x42,
-+ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA,
-+ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE,
-+ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA,
-+ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36,
-+ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82,
-+ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6,
-+ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E,
-+ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x1A, 0x06,
-+ 0x1A, 0x2A, 0x36, 0x52, 0x46, 0x23, 0x4D, 0x3E,
-+ 0x2A, 0x42, 0x2A, 0x5A, 0x69, 0x42, 0x26, 0x2E,
-+ 0x42, 0x7E, 0x7C, 0x72, 0x6A, 0x5E, 0x3B, 0x12,
-+ 0x62, 0x5E, 0x5A, 0x36, 0x26, 0x1E, 0x26, 0x42,
-+ 0x56, 0x3A, 0x36, 0x36, 0x1E, 0x2E, 0x2A, 0x22,
-+ 0x22, 0x1A, 0x16, 0x42, 0x46, 0x26, 0x1E, 0x12,
-+ 0x32, 0x2A, 0x2E, 0x16, 0x2A, 0x1A, 0x2E, 0x4E,
-+ 0x12, 0x22, 0x02, 0x02, 0x12, 0x4A, 0x46, 0x52,
-+ 0x1E, 0x1E, 0x16, 0x0E, 0x02, 0x02, 0x6F, 0x2E,
-+ 0x0E, 0x1A, 0x06, 0x02, 0x02, 0x04, 0x22, 0x16,
-+ 0x0E, 0x12, 0x02, 0x02, 0x02, 0x0A, 0x5A, 0x02,
-+ 0x02, 0x1B, 0x2E, 0x32, 0x02, 0x02, 0x02, 0x02,
-+ 0x16, 0x02, 0x02, 0x10, 0x02, 0x02, 0x26, 0x5A,
-+ 0x02, 0x1F, 0x52, 0x8E, 0x22, 0x02, 0x5E, 0x3E,
-+ 0x86, 0x0E, 0x16, 0x16, 0x52, 0x7A, 0x4A, 0x66,
-+ 0x72, 0x52, 0x82, 0xB2, 0xBA, 0xA4, 0xB2, 0xAA,
-+ 0x9E, 0x8E, 0x88, 0x96, 0xA6, 0x82, 0x62, 0x1A,
-+ 0x34, 0x4A, 0x31, 0x16, 0x02, 0x1A, 0x02, 0x02,
-+ 0x72, 0x02, 0x02, 0x5E, 0x1A, 0x62, 0x02, 0x0E,
-+ 0x76, 0x1E, 0x76, 0x1E, 0x0A, 0x02
- };
-
- unsigned char linux_logo[] __initdata = {
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22, 0x22,
-- 0x22, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
-- 0x26, 0x26, 0x25, 0x28, 0x23, 0x22, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x23, 0x25, 0x2a, 0x2b, 0x2c, 0x2d, 0x2d,
-- 0x2d, 0x2e, 0x2c, 0x2b, 0x2a, 0x25, 0x28, 0x22,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x24, 0x2a, 0x2c, 0x2f, 0x2c, 0x30, 0x30, 0x24,
-- 0x25, 0x27, 0x2b, 0x2c, 0x2f, 0x31, 0x32, 0x25,
-- 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x25,
-- 0x33, 0x34, 0x35, 0x21, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x21, 0x2b, 0x2f, 0x2c,
-- 0x30, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24, 0x33,
-- 0x2d, 0x27, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x31,
-- 0x2d, 0x32, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x28, 0x2a, 0x34,
-- 0x25, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x23, 0x32, 0x27, 0x21, 0x36,
-- 0x2a, 0x2d, 0x2a, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x22, 0x26, 0x2c, 0x35,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x25, 0x2f, 0x37, 0x32, 0x22,
-- 0x36, 0x35, 0x31, 0x27, 0x22, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x23, 0x2a, 0x2f, 0x22,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x26, 0x38, 0x38, 0x35, 0x25,
-- 0x36, 0x21, 0x2d, 0x2b, 0x24, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x24, 0x39, 0x39, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x25, 0x2b, 0x30, 0x28, 0x22,
-- 0x36, 0x36, 0x27, 0x34, 0x30, 0x23, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x26, 0x2d, 0x26, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x22, 0x22, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x2d, 0x33, 0x28, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x23, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x2b, 0x2c, 0x25, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x34, 0x36, 0x36,
-- 0x36, 0x21, 0x22, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x21, 0x23, 0x22, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x28, 0x34, 0x27, 0x22, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x36,
-- 0x21, 0x21, 0x24, 0x27, 0x21, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x28, 0x27, 0x22, 0x33, 0x24, 0x36,
-- 0x36, 0x36, 0x36, 0x22, 0x2f, 0x2a, 0x23, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x36,
-- 0x30, 0x3a, 0x38, 0x24, 0x24, 0x36, 0x36, 0x36,
-- 0x23, 0x2f, 0x3b, 0x3c, 0x3d, 0x30, 0x25, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x2f, 0x32, 0x23, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x23,
-- 0x3e, 0x3f, 0x40, 0x3a, 0x22, 0x36, 0x36, 0x21,
-- 0x41, 0x42, 0x43, 0x44, 0x45, 0x3e, 0x23, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x2f, 0x33, 0x28, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x2b,
-- 0x44, 0x40, 0x46, 0x47, 0x35, 0x36, 0x36, 0x26,
-- 0x43, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x2e, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x31, 0x35, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x32, 0x34, 0x36, 0x4d,
-- 0x4e, 0x25, 0x2f, 0x46, 0x4a, 0x22, 0x23, 0x32,
-- 0x4f, 0x50, 0x21, 0x31, 0x51, 0x52, 0x53, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x31, 0x35, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x20, 0x29, 0x29, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x2f, 0x21, 0x3a,
-- 0x4d, 0x21, 0x31, 0x54, 0x55, 0x28, 0x30, 0x2b,
-- 0x4b, 0x4d, 0x36, 0x23, 0x32, 0x50, 0x3f, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x2e, 0x39, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x20, 0x29, 0x20, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x38, 0x23, 0x37,
-- 0x55, 0x36, 0x28, 0x3a, 0x56, 0x57, 0x57, 0x58,
-- 0x3c, 0x4d, 0x36, 0x36, 0x36, 0x40, 0x40, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x2e, 0x39, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x29, 0x29, 0x29, 0x20, 0x29, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x51, 0x23, 0x35,
-- 0x43, 0x25, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e,
-- 0x5f, 0x60, 0x61, 0x36, 0x31, 0x47, 0x3b, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x31, 0x2c, 0x25, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x23, 0x22,
-- 0x40, 0x62, 0x63, 0x5d, 0x64, 0x65, 0x66, 0x67,
-- 0x68, 0x69, 0x66, 0x5e, 0x6a, 0x6b, 0x2a, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x33, 0x2e, 0x26, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x27, 0x2f, 0x23, 0x36,
-- 0x6c, 0x63, 0x6d, 0x64, 0x5c, 0x66, 0x69, 0x6e,
-- 0x6f, 0x70, 0x71, 0x69, 0x69, 0x72, 0x6c, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x33, 0x34, 0x27, 0x22,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x27, 0x34, 0x26, 0x73,
-- 0x74, 0x75, 0x76, 0x64, 0x65, 0x77, 0x69, 0x78,
-- 0x70, 0x71, 0x71, 0x71, 0x72, 0x5f, 0x5e, 0x21,
-- 0x36, 0x36, 0x36, 0x36, 0x25, 0x38, 0x2a, 0x23,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2d, 0x33, 0x79,
-- 0x63, 0x7a, 0x7b, 0x5c, 0x66, 0x69, 0x6e, 0x7c,
-- 0x71, 0x71, 0x69, 0x7d, 0x7e, 0x7a, 0x7f, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x21, 0x51, 0x2b, 0x28,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2d, 0x32, 0x24,
-- 0x80, 0x81, 0x64, 0x82, 0x77, 0x69, 0x71, 0x71,
-- 0x69, 0x83, 0x84, 0x85, 0x7a, 0x85, 0x86, 0x36,
-- 0x21, 0x2b, 0x23, 0x36, 0x36, 0x39, 0x2e, 0x26,
-- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x27, 0x2d, 0x33, 0x21,
-- 0x87, 0x88, 0x89, 0x72, 0x67, 0x66, 0x5f, 0x89,
-- 0x8a, 0x63, 0x85, 0x8b, 0x8c, 0x8d, 0x41, 0x36,
-- 0x36, 0x2d, 0x3a, 0x35, 0x36, 0x24, 0x51, 0x32,
-- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x33, 0x21,
-- 0x55, 0x8e, 0x8f, 0x8a, 0x7d, 0x5e, 0x90, 0x7e,
-- 0x75, 0x75, 0x90, 0x62, 0x40, 0x3f, 0x49, 0x23,
-- 0x36, 0x24, 0x3a, 0x3a, 0x24, 0x36, 0x2e, 0x31,
-- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x21, 0x28, 0x33, 0x37, 0x25, 0x22,
-- 0x3b, 0x50, 0x8e, 0x8f, 0x90, 0x7e, 0x90, 0x63,
-- 0x74, 0x91, 0x92, 0x42, 0x93, 0x4b, 0x45, 0x2c,
-- 0x36, 0x36, 0x33, 0x39, 0x21, 0x36, 0x22, 0x51,
-- 0x33, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x22, 0x27, 0x2e, 0x2e, 0x36, 0x21,
-- 0x94, 0x3f, 0x50, 0x95, 0x96, 0x8f, 0x8f, 0x97,
-- 0x8e, 0x42, 0x50, 0x43, 0x47, 0x48, 0x48, 0x98,
-- 0x21, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x39,
-- 0x2e, 0x27, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x22, 0x24, 0x2b, 0x38, 0x28, 0x36, 0x32,
-- 0x4c, 0x4b, 0x50, 0x50, 0x50, 0x42, 0x42, 0x50,
-- 0x50, 0x40, 0x45, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x34, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x23,
-- 0x2f, 0x2b, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x28, 0x32, 0x51, 0x32, 0x28, 0x21, 0x98,
-- 0x48, 0x47, 0x9a, 0x50, 0x50, 0x50, 0x50, 0x50,
-- 0x9a, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x93, 0x23, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x2a, 0x2f, 0x2a, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x23, 0x30, 0x2e, 0x2c, 0x36, 0x21, 0x51, 0x9b,
-- 0x48, 0x48, 0x52, 0x3f, 0x50, 0x50, 0x40, 0x4b,
-- 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x34, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2d, 0x31, 0x27, 0x23, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
-- 0x27, 0x2c, 0x2d, 0x21, 0x36, 0x28, 0x44, 0x48,
-- 0x48, 0x48, 0x48, 0x47, 0x46, 0x4f, 0x47, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x9c, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x28, 0x51, 0x39, 0x26, 0x22, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x25,
-- 0x35, 0x51, 0x28, 0x36, 0x36, 0x9d, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x9b, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x4f, 0x28, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x28, 0x38, 0x2b, 0x25, 0x22, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24, 0x33,
-- 0x51, 0x25, 0x36, 0x36, 0x23, 0x40, 0x9b, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x9b, 0x99, 0x2b, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x30, 0x2f, 0x33, 0x24, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x23, 0x30, 0x34,
-- 0x27, 0x36, 0x36, 0x36, 0x2a, 0x40, 0x47, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x99, 0x99, 0x9b, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x9b, 0x47, 0x52,
-- 0x46, 0x4f, 0x37, 0x21, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x30, 0x34, 0x2a, 0x23,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x22, 0x25, 0x39, 0x2c,
-- 0x36, 0x36, 0x36, 0x21, 0x31, 0x4e, 0x9a, 0x4c,
-- 0x47, 0x9b, 0x9b, 0x52, 0x46, 0x4f, 0x52, 0x9b,
-- 0x9b, 0x9b, 0x47, 0x4f, 0x45, 0x9a, 0x93, 0x93,
-- 0x3f, 0x93, 0x98, 0x28, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x39, 0x2c, 0x26,
-- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x23, 0x2a, 0x34, 0x28,
-- 0x36, 0x36, 0x36, 0x22, 0x38, 0x98, 0x44, 0x99,
-- 0x9b, 0x48, 0x48, 0x9b, 0x4c, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x47, 0x52, 0x46, 0x43, 0x93,
-- 0x40, 0x40, 0x43, 0x53, 0x21, 0x23, 0x33, 0x23,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x2f, 0x32,
-- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x24, 0x2b, 0x31, 0x36,
-- 0x36, 0x22, 0x36, 0x24, 0x9e, 0x4f, 0x9b, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x99, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x47,
-- 0x4f, 0x9a, 0x3f, 0x46, 0x38, 0x36, 0x21, 0x30,
-- 0x26, 0x36, 0x36, 0x36, 0x36, 0x36, 0x39, 0x2c,
-- 0x25, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2e, 0x33, 0x36,
-- 0x25, 0x25, 0x36, 0x4d, 0x52, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x47, 0x44, 0x93, 0x43, 0x23, 0x36, 0x36,
-- 0x26, 0x24, 0x36, 0x36, 0x36, 0x36, 0x28, 0x2f,
-- 0x2a, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x51, 0x24, 0x36,
-- 0x2a, 0x36, 0x28, 0x44, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x9b, 0x4b, 0x44, 0x37, 0x36, 0x23,
-- 0x28, 0x30, 0x22, 0x36, 0x36, 0x36, 0x36, 0x2d,
-- 0x35, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x21, 0x28, 0x2b, 0x34, 0x36, 0x25,
-- 0x24, 0x36, 0x4a, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x52, 0x3f, 0x21, 0x30,
-- 0x35, 0x25, 0x30, 0x36, 0x36, 0x36, 0x36, 0x32,
-- 0x2d, 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x22, 0x26, 0x2e, 0x35, 0x36, 0x2a,
-- 0x36, 0x24, 0x4f, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x9b, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x47, 0x32, 0x30,
-- 0x2a, 0x23, 0x30, 0x23, 0x36, 0x36, 0x36, 0x21,
-- 0x2f, 0x32, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x23, 0x2a, 0x51, 0x28, 0x28, 0x25,
-- 0x36, 0x3a, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x9b, 0x52, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x38, 0x21,
-- 0x36, 0x36, 0x22, 0x27, 0x36, 0x36, 0x36, 0x36,
-- 0x2e, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x22, 0x25, 0x2c, 0x34, 0x36, 0x30, 0x21,
-- 0x23, 0x43, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x47, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x94, 0x36,
-- 0x36, 0x36, 0x36, 0x32, 0x36, 0x36, 0x36, 0x36,
-- 0x2a, 0x2e, 0x26, 0x22, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x23, 0x2a, 0x51, 0x25, 0x21, 0x2a, 0x36,
-- 0x2e, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x99, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x98, 0x36,
-- 0x36, 0x36, 0x36, 0x32, 0x36, 0x36, 0x36, 0x36,
-- 0x22, 0x2f, 0x30, 0x22, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x22, 0x25, 0x2c, 0x34, 0x36, 0x24, 0x28, 0x36,
-- 0x54, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x9a, 0x36,
-- 0x36, 0x36, 0x36, 0x30, 0x36, 0x36, 0x36, 0x36,
-- 0x21, 0x2f, 0x32, 0x23, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x28, 0x32, 0x2f, 0x28, 0x36, 0x27, 0x22, 0x21,
-- 0x43, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4b, 0x21,
-- 0x36, 0x36, 0x21, 0x26, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x34, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x25, 0x2c, 0x39, 0x36, 0x36, 0x30, 0x22, 0x25,
-- 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x52, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4f, 0x21,
-- 0x36, 0x36, 0x22, 0x26, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x30, 0x2d, 0x21, 0x36, 0x36, 0x32, 0x23, 0x2a,
-- 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4c, 0x22,
-- 0x36, 0x36, 0x24, 0x23, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x39, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x33, 0x2e, 0x36, 0x36, 0x23, 0x31, 0x27, 0x39,
-- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4c, 0x23,
-- 0x36, 0x36, 0x26, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x39, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x2b, 0x39, 0x36, 0x36, 0x36, 0x26, 0x32, 0x31,
-- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x46, 0x22,
-- 0x36, 0x21, 0x26, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x2c, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24,
-- 0x35, 0x39, 0x36, 0x36, 0x36, 0x36, 0x26, 0x2d,
-- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x9a, 0x36,
-- 0x24, 0x27, 0x9f, 0x24, 0x25, 0x28, 0x21, 0x36,
-- 0x36, 0x34, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x25,
-- 0x39, 0x4d, 0xa0, 0x84, 0x81, 0x57, 0x21, 0x39,
-- 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x53, 0x28,
-- 0x23, 0x36, 0x36, 0x36, 0x21, 0x28, 0x2c, 0x30,
-- 0x21, 0x38, 0x33, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x22, 0x22, 0x28, 0x30,
-- 0x2d, 0xa1, 0x7a, 0xa2, 0xa3, 0xa3, 0x7f, 0x22,
-- 0x51, 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0xa4, 0xa5, 0xa5, 0xa6, 0x61,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x30, 0x32,
-- 0x25, 0x4d, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x23, 0x24, 0x26, 0x30, 0x33, 0x31,
-- 0x4d, 0x91, 0x5b, 0xa2, 0xa3, 0xa3, 0xa3, 0x5a,
-- 0x21, 0x2e, 0x46, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0xa7, 0xa8, 0x69, 0x66, 0xa9,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x26, 0x25,
-- 0x83, 0xaa, 0x2c, 0x25, 0x21, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x28, 0x30, 0x35, 0x2d, 0x2f, 0x37, 0x4a,
-- 0x60, 0x85, 0xab, 0xac, 0xa3, 0xa3, 0xa3, 0x82,
-- 0x86, 0x36, 0x32, 0x3f, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0xad, 0xa2, 0xa8, 0xae, 0xaf,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x57,
-- 0x77, 0x66, 0x34, 0x27, 0x22, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x23, 0x30, 0x31, 0xb0, 0x91, 0x7e, 0x90, 0x90,
-- 0x8b, 0x5b, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0x5d, 0xb1, 0x36, 0x24, 0x53, 0x9b, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x9b, 0x99, 0xad, 0x64, 0x5c, 0x8b, 0xb1,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x73, 0x5d,
-- 0x82, 0x5c, 0xb2, 0x2a, 0x23, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x24, 0x2b, 0xb0, 0x8b, 0x5b, 0x76, 0x5b, 0x5b,
-- 0x7b, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa8, 0x5e, 0x22, 0x36, 0x21, 0x3a, 0x99, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x4f, 0x3f, 0xb3, 0x7b, 0x7b, 0x85, 0x80,
-- 0x9f, 0x36, 0x36, 0x36, 0x21, 0xb4, 0x7e, 0x7b,
-- 0x64, 0x64, 0xb5, 0x35, 0x24, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x31, 0xb6, 0x5b, 0x64, 0xa2, 0xa2, 0xac,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0x66, 0xb7, 0x36, 0x36, 0x36, 0x2c, 0x4b,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x9a, 0x3f, 0xb8, 0x76, 0x76, 0x7a, 0x63,
-- 0xb9, 0xba, 0x86, 0xba, 0xbb, 0x90, 0x5b, 0x64,
-- 0xa2, 0xa2, 0xbc, 0x2d, 0x27, 0x23, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x26, 0x2d, 0x91, 0x5b, 0x64, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa8, 0x83, 0xaf, 0x36, 0x36, 0x36, 0x30,
-- 0x44, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x9b, 0x9a, 0x3f, 0xbd, 0x5b, 0x7b, 0xbe, 0x85,
-- 0x7e, 0x90, 0x63, 0x90, 0x85, 0x5b, 0xa2, 0xa3,
-- 0xa3, 0xac, 0x5d, 0xb5, 0x39, 0x26, 0x23, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x2d, 0xbf, 0xbe, 0x64, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa8, 0x88, 0x36, 0x36, 0x36, 0x36,
-- 0x2d, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x9b, 0x45, 0x3f, 0xc0, 0x6d, 0x7b, 0xab, 0xbe,
-- 0x7a, 0x8b, 0x8b, 0x7a, 0x5b, 0x64, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa2, 0xc1, 0x37, 0x35, 0x26, 0x23,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x2e, 0xbf, 0x7a, 0x7b, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa8, 0x72, 0x73, 0x36, 0x36, 0x36,
-- 0x24, 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x46, 0x42, 0xb6, 0x7a, 0x7b, 0x64, 0x7b,
-- 0x76, 0x5b, 0x5b, 0x76, 0x7b, 0xa2, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xac, 0x64, 0xc1, 0x4d, 0x2c, 0x27,
-- 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x25, 0x31, 0xc2, 0x8b, 0x7b, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa8, 0x89, 0x9f, 0x36, 0x36,
-- 0x32, 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x4b, 0x2f, 0x8f, 0x7a, 0x7b, 0xa2, 0xac,
-- 0xa2, 0x64, 0x64, 0xa2, 0xa2, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x5d, 0xc3, 0x2c,
-- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x25, 0x31, 0xc2, 0x85, 0x7b, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0x66, 0x57, 0x27, 0x4d,
-- 0x4b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x99, 0x34, 0x9f, 0xb9, 0x7a, 0x7b, 0xa2, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0xc2,
-- 0x32, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
-- 0x26, 0x2d, 0xc2, 0x85, 0x7b, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa8, 0x5f, 0x92, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x44,
-- 0x35, 0x36, 0xaf, 0xbb, 0x7a, 0x7b, 0xac, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0xa2, 0xc0,
-- 0x2b, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
-- 0x30, 0x2f, 0xb6, 0x8b, 0x7b, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x66, 0x89, 0x45,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x48, 0x9b, 0x4e, 0x25,
-- 0x36, 0x36, 0x61, 0xb9, 0x6d, 0x64, 0xac, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x7b, 0xbe, 0xc3,
-- 0x32, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x33, 0xc4, 0x63, 0xbe, 0xa2, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x72, 0x81, 0xc5,
-- 0x46, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
-- 0x48, 0x48, 0x48, 0x48, 0x3f, 0x2c, 0x36, 0x36,
-- 0x36, 0x36, 0xc6, 0x8f, 0x6d, 0x64, 0xac, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa2, 0xab, 0x8b, 0xb0, 0x2c,
-- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24,
-- 0x35, 0x96, 0x75, 0xab, 0xa2, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x7b, 0x81, 0xb9,
-- 0x73, 0x3b, 0x44, 0x9b, 0x48, 0x48, 0x48, 0x9b,
-- 0x99, 0x43, 0x94, 0x2c, 0x21, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x73, 0xb9, 0x7a, 0x7b, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0x64, 0x76, 0x7a, 0x91, 0xb5, 0x31, 0x30,
-- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24,
-- 0x39, 0x97, 0x75, 0xbe, 0x7b, 0x64, 0xa2, 0xa2,
-- 0xac, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x7b, 0x7a, 0xc7,
-- 0xc8, 0x36, 0x21, 0x26, 0x2b, 0x39, 0x33, 0x30,
-- 0x23, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x21, 0xc8, 0xbb, 0x8b, 0x7b, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x64, 0x64,
-- 0x76, 0x85, 0xbf, 0xb5, 0x34, 0x2b, 0x27, 0x28,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28,
-- 0x33, 0xc9, 0x63, 0x7e, 0x7a, 0x6d, 0xbe, 0x5b,
-- 0x76, 0x7b, 0x64, 0x64, 0xa2, 0xac, 0xa3, 0xa3,
-- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x76, 0x85, 0xb9,
-- 0x79, 0x22, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x21, 0xca, 0xbb, 0x75, 0x76, 0xa2, 0xa3,
-- 0xa3, 0xa3, 0xac, 0xa2, 0x64, 0x76, 0xbe, 0x8b,
-- 0xb6, 0xb5, 0x2f, 0x35, 0x30, 0x24, 0x22, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23,
-- 0x27, 0x31, 0xcb, 0xc9, 0xbb, 0x74, 0x63, 0x90,
-- 0x7e, 0x75, 0x8b, 0x6d, 0xbe, 0x76, 0x64, 0xa2,
-- 0xac, 0xac, 0xac, 0xac, 0x64, 0x7a, 0x84, 0xcc,
-- 0x79, 0x9f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
-- 0x36, 0x21, 0xc8, 0xcc, 0x63, 0x6d, 0x7b, 0x64,
-- 0xac, 0xa2, 0x64, 0x7b, 0xbe, 0x75, 0x63, 0x96,
-- 0x38, 0x39, 0x2a, 0x24, 0x23, 0x21, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x28, 0x27, 0x35, 0x2d, 0x41, 0xb5, 0xc5, 0x8f,
-- 0xb9, 0xbb, 0xc7, 0x74, 0x84, 0x90, 0x85, 0x6d,
-- 0x5b, 0x7b, 0x7b, 0xab, 0x6d, 0x90, 0xb9, 0xcd,
-- 0xca, 0x22, 0x36, 0x36, 0x28, 0x30, 0x30, 0x30,
-- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x25, 0x36,
-- 0x36, 0x21, 0xb4, 0x80, 0xc7, 0x7e, 0x6d, 0x76,
-- 0xab, 0x76, 0x6d, 0x85, 0x63, 0xb9, 0xb5, 0x34,
-- 0x33, 0x26, 0x23, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x23, 0x24, 0x27, 0x2a, 0x35, 0x2e, 0x2f,
-- 0x41, 0xce, 0xcf, 0x6c, 0x80, 0xcc, 0xb9, 0x74,
-- 0x84, 0x90, 0x75, 0x7e, 0x74, 0x8f, 0xcd, 0x79,
-- 0xc6, 0x2b, 0x9d, 0x41, 0x2f, 0x34, 0x2d, 0x2d,
-- 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x34, 0x2f, 0x38,
-- 0x4d, 0x37, 0xd0, 0xd1, 0x8f, 0x74, 0x63, 0x7e,
-- 0x75, 0x7e, 0x63, 0xc7, 0x88, 0xc4, 0x31, 0x2a,
-- 0x24, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x21, 0x22, 0x23, 0x24, 0x26, 0x30,
-- 0x33, 0x39, 0x2e, 0x51, 0x41, 0xb2, 0x6c, 0xd1,
-- 0x80, 0xcc, 0xcc, 0xcc, 0xd2, 0xd1, 0xb7, 0xd3,
-- 0x41, 0x34, 0x35, 0x32, 0x30, 0x27, 0x27, 0x27,
-- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x30, 0x2a,
-- 0x2b, 0x34, 0xd4, 0xca, 0xd5, 0x8f, 0xbb, 0xc7,
-- 0xc7, 0xbb, 0xcc, 0x6c, 0x41, 0x39, 0x27, 0x28,
-- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22,
-- 0x28, 0x24, 0x26, 0x2a, 0x33, 0x2c, 0x2f, 0x41,
-- 0xd6, 0xb7, 0x79, 0x79, 0x79, 0xca, 0xd7, 0x51,
-- 0x39, 0x30, 0x24, 0x23, 0x22, 0x22, 0x22, 0x22,
-- 0x22, 0x22, 0x21, 0x22, 0x22, 0x22, 0x22, 0x23,
-- 0x24, 0x2a, 0x31, 0xd8, 0xc8, 0x79, 0xd1, 0x80,
-- 0xd5, 0xba, 0xd9, 0x2f, 0x35, 0x26, 0x23, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x22, 0x23, 0x28, 0x25, 0x30, 0x2b,
-- 0x31, 0x2f, 0xd4, 0xd8, 0xd8, 0x2f, 0x2e, 0x33,
-- 0x26, 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x21, 0x28, 0x27, 0x35, 0x34, 0xd8, 0xd8, 0xd8,
-- 0xda, 0xd4, 0x2e, 0x33, 0x25, 0x23, 0x21, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x23, 0x28,
-- 0x26, 0x30, 0x32, 0x2b, 0x33, 0x2a, 0x26, 0x28,
-- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x21, 0x23, 0x25, 0x30, 0x33, 0x35, 0x35,
-- 0x2b, 0x2a, 0x26, 0x28, 0x22, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21,
-- 0x21, 0x22, 0x23, 0x28, 0x28, 0x23, 0x22, 0x21,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x21, 0x23, 0x28, 0x24, 0x24,
-- 0x28, 0x23, 0x22, 0x21, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x33, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x61, 0x62, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x35, 0x61, 0x63, 0x64, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x65, 0x66, 0x66, 0x67, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B,
-+ 0x3B, 0x68, 0x64, 0x69, 0x62, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x22, 0x23, 0x23, 0x55, 0x6A, 0x6B,
-+ 0x6C, 0x6D, 0x6E, 0x6F, 0x6F, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x22, 0x23, 0x35, 0x33, 0x3B, 0x70, 0x71, 0x72,
-+ 0x73, 0x74, 0x75, 0x76, 0x77, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x23, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x23, 0x55,
-+ 0x2B, 0x34, 0x34, 0x42, 0x70, 0x71, 0x73, 0x78,
-+ 0x78, 0x78, 0x79, 0x7A, 0x7B, 0x34, 0x22, 0x21,
-+ 0x55, 0x33, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x3B, 0x7C, 0x7D, 0x7E, 0x34, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x35, 0x3B, 0x4C, 0x3C,
-+ 0x42, 0x3F, 0x56, 0x7F, 0x71, 0x74, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x79, 0x80, 0x81, 0x3C, 0x82,
-+ 0x83, 0x62, 0x61, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A,
-+ 0x3B, 0x21, 0x55, 0x55, 0x2B, 0x34, 0x39, 0x3F,
-+ 0x2A, 0x57, 0x8B, 0x72, 0x74, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x75, 0x8C, 0x6F, 0x63,
-+ 0x63, 0x66, 0x61, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x84, 0x85, 0x86, 0x8D, 0x88, 0x8E, 0x8F, 0x5E,
-+ 0x3C, 0x34, 0x3B, 0x34, 0x3F, 0x2A, 0x58, 0x57,
-+ 0x52, 0x46, 0x6C, 0x73, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x79, 0x7A, 0x6E, 0x69,
-+ 0x69, 0x90, 0x34, 0x33, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x91, 0x92, 0x8D, 0x87, 0x8E, 0x93, 0x8A, 0x35,
-+ 0x94, 0x95, 0x96, 0x56, 0x32, 0x32, 0x52, 0x5C,
-+ 0x4D, 0x82, 0x72, 0x78, 0x78, 0x78, 0x78, 0x79,
-+ 0x97, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6D, 0x6F,
-+ 0x62, 0x65, 0x34, 0x4C, 0x33, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B,
-+ 0x91, 0x86, 0x87, 0x88, 0x93, 0x98, 0x60, 0x3F,
-+ 0x99, 0x9A, 0x9A, 0x9B, 0x9C, 0x57, 0x5C, 0x36,
-+ 0x9D, 0x9E, 0x6D, 0x78, 0x78, 0x78, 0x97, 0x6E,
-+ 0x9F, 0x78, 0x78, 0x78, 0x78, 0x79, 0x80, 0xA0,
-+ 0x61, 0x51, 0x51, 0x3C, 0x4C, 0x55, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x3B, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C,
-+ 0xA1, 0x8D, 0x88, 0x8E, 0xA2, 0xA3, 0x94, 0x42,
-+ 0x51, 0xA4, 0x9A, 0x9A, 0x9A, 0xA5, 0x9C, 0x2A,
-+ 0xA6, 0x74, 0x8C, 0x75, 0x97, 0xA7, 0x76, 0x75,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6E,
-+ 0x46, 0x52, 0x56, 0x3F, 0x42, 0x34, 0x33, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x22, 0x21, 0x21, 0x22,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x3A,
-+ 0x5A, 0x53, 0x53, 0x29, 0x43, 0x50, 0x53, 0x5A,
-+ 0x5A, 0x29, 0x5A, 0x43, 0x53, 0x5D, 0x44, 0x2A,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55,
-+ 0x7D, 0x87, 0x8E, 0x93, 0xA8, 0xA9, 0xAA, 0x2A,
-+ 0x57, 0x94, 0xA4, 0x9B, 0xAB, 0xAC, 0x9A, 0x9B,
-+ 0xAD, 0x76, 0x79, 0x78, 0x75, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6D,
-+ 0x46, 0x5C, 0x57, 0x56, 0x51, 0x42, 0x4C, 0x55,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x24, 0x25, 0x26, 0x26, 0x27, 0x28, 0x27,
-+ 0x29, 0x2A, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x38, 0x30,
-+ 0x59, 0x3D, 0x3D, 0x3D, 0x27, 0x27, 0x26, 0x5D,
-+ 0x27, 0x27, 0x54, 0x37, 0x2E, 0x4A, 0x36, 0x2B,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0xAE, 0x88, 0xAF, 0xB0, 0xAA, 0x2A, 0x39, 0x34,
-+ 0x4C, 0x5C, 0x58, 0xB1, 0xB2, 0xB3, 0xAB, 0xA5,
-+ 0x9A, 0xB4, 0xB5, 0x8C, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x80,
-+ 0xB6, 0x38, 0x5C, 0x57, 0x56, 0x3F, 0x42, 0x3B,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x32,
-+ 0x31, 0x2C, 0x26, 0x2C, 0x33, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x34,
-+ 0x32, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x33,
-+ 0x33, 0x55, 0x55, 0x55, 0x23, 0x23, 0x35, 0x23,
-+ 0x23, 0x35, 0x2B, 0x4E, 0x4F, 0x2A, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x55, 0x38, 0x25,
-+ 0x2C, 0x52, 0x34, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x55, 0x8A, 0x8F, 0x39, 0x34, 0x3C, 0x57, 0x32,
-+ 0x46, 0x42, 0x52, 0x4A, 0x51, 0xAA, 0xB7, 0xB3,
-+ 0xAB, 0xAC, 0xAC, 0xB8, 0xB9, 0x79, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x7A,
-+ 0xBA, 0x70, 0x7B, 0xBB, 0x82, 0x56, 0x3F, 0x34,
-+ 0x4C, 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x36,
-+ 0x2D, 0x37, 0x38, 0x2A, 0x2B, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x39, 0x3A, 0x2C, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0x3C, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x24, 0x3D,
-+ 0x3E, 0x25, 0x3C, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x33, 0x29, 0x26, 0x2A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x54, 0x3E, 0x28,
-+ 0x28, 0x59, 0x59, 0x48, 0x51, 0x3F, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x2B, 0x56, 0x4D, 0x29, 0x5B, 0x34,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x55, 0x60, 0x3F, 0x42, 0x51, 0x32, 0x52,
-+ 0x40, 0x38, 0x40, 0x46, 0x42, 0xBC, 0xBD, 0xBE,
-+ 0xBF, 0x9B, 0xAB, 0x9B, 0xC0, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75,
-+ 0xA7, 0x63, 0x63, 0x66, 0x6F, 0x58, 0x56, 0x39,
-+ 0x34, 0x2B, 0x23, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x24, 0x2F,
-+ 0x3D, 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x40, 0x41, 0x3B, 0x21,
-+ 0x21, 0x22, 0x42, 0x38, 0x43, 0x44, 0x3A, 0x45,
-+ 0x34, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x46, 0x30, 0x47,
-+ 0x2A, 0x48, 0x48, 0x21, 0x21, 0x21, 0x21, 0x22,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x34, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x4D, 0x44, 0x2A, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x50, 0x4A, 0x57, 0x35,
-+ 0x35, 0x2B, 0x56, 0x27, 0x4B, 0x5D, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x3B, 0x52, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x38,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x3C, 0x42, 0x21, 0x33, 0x24, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x33, 0x38, 0x59, 0x37, 0x27, 0x27, 0x4A, 0x47,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x23, 0x4C, 0x4C, 0x2A, 0x56, 0x46, 0x31,
-+ 0x4D, 0x36, 0x50, 0x5A, 0x35, 0xC1, 0xC1, 0xC2,
-+ 0xC3, 0xB7, 0xB3, 0xBE, 0x76, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75,
-+ 0x6D, 0x62, 0x69, 0x6F, 0x58, 0x46, 0x32, 0x2A,
-+ 0x39, 0x34, 0x35, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x44, 0x49,
-+ 0x31, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x23, 0x29, 0x48, 0x22,
-+ 0x42, 0x3A, 0x4A, 0x49, 0x4B, 0x2E, 0x4B, 0x3E,
-+ 0x4A, 0x2C, 0x34, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x30, 0x40, 0x22,
-+ 0x21, 0x32, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x39,
-+ 0x36, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22,
-+ 0x31, 0x4F, 0x2A, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x31, 0x59, 0x2A, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x55, 0x27, 0x24, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4C, 0x44, 0x27, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x2A, 0x26, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3A,
-+ 0x40, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51, 0x49,
-+ 0x35, 0x21, 0x21, 0x21, 0x21, 0x22, 0x58, 0x25,
-+ 0x5A, 0x57, 0x21, 0x4C, 0x3D, 0x34, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x38,
-+ 0x47, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x3A, 0x4B, 0x53, 0x56, 0x55, 0x33, 0x42, 0x56,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x55, 0x4C, 0x42, 0x2A, 0x57, 0x5C, 0x38,
-+ 0x36, 0x47, 0x5A, 0xB6, 0x77, 0xC4, 0xC1, 0xC1,
-+ 0xC4, 0xC5, 0xB7, 0xB9, 0x79, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75,
-+ 0x97, 0xC6, 0x68, 0x57, 0x4D, 0x38, 0x46, 0x32,
-+ 0x51, 0x42, 0x2B, 0x35, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x4D, 0x2D, 0x38,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4E, 0x3C,
-+ 0x47, 0x4F, 0x50, 0x51, 0x3F, 0x44, 0x42, 0x34,
-+ 0x52, 0x53, 0x28, 0x2A, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x48, 0x54, 0x33, 0x21,
-+ 0x23, 0x3A, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x2A,
-+ 0x26, 0x33, 0x21, 0x21, 0x21, 0x21, 0x23, 0x45,
-+ 0x37, 0x3D, 0x41, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x31,
-+ 0x59, 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x28, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x27, 0x5B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x54, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4B,
-+ 0x46, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x49,
-+ 0x2B, 0x21, 0x21, 0x21, 0x23, 0x40, 0x43, 0x32,
-+ 0x35, 0x21, 0x21, 0x33, 0x28, 0x4C, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x4F,
-+ 0x5B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x50,
-+ 0x44, 0x39, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x3B, 0x34, 0x3F, 0x58, 0x46, 0x40, 0x36,
-+ 0x50, 0x41, 0x4D, 0xC7, 0x65, 0xC2, 0xC1, 0xC1,
-+ 0xC8, 0xBF, 0xB1, 0x97, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79,
-+ 0x80, 0xC9, 0x36, 0x50, 0x36, 0x38, 0x31, 0x32,
-+ 0x56, 0x39, 0x34, 0x33, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x2B, 0x3D, 0x28, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x40, 0x4D,
-+ 0x55, 0x2B, 0x21, 0x21, 0x2B, 0x28, 0x3B, 0x21,
-+ 0x21, 0x22, 0x52, 0x27, 0x56, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x2A, 0x30, 0x3F, 0x21, 0x22,
-+ 0x57, 0x44, 0x58, 0x21, 0x21, 0x21, 0x21, 0x56,
-+ 0x37, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x56, 0x3E,
-+ 0x36, 0x2A, 0x59, 0x23, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, 0x50, 0x3D,
-+ 0x42, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x40, 0x5A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x56, 0x49, 0x24, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x42, 0x54, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4D, 0x59,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x4A,
-+ 0x51, 0x21, 0x21, 0x33, 0x47, 0x47, 0x33, 0x21,
-+ 0x21, 0x21, 0x21, 0x55, 0x27, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x32, 0x4B,
-+ 0x4C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x34, 0x44,
-+ 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x33, 0x4C, 0x3C, 0x51, 0x57, 0x5C, 0x38, 0x38,
-+ 0x9D, 0xCA, 0x61, 0xCB, 0xCC, 0xCD, 0xC4, 0xC8,
-+ 0xA4, 0x9C, 0x76, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79,
-+ 0x7A, 0x7F, 0x41, 0x29, 0x47, 0x38, 0x40, 0x57,
-+ 0x32, 0x51, 0x42, 0x2B, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x57, 0x49, 0x32, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x57, 0x27,
-+ 0x35, 0x21, 0x21, 0x21, 0x2B, 0x59, 0x2A, 0x21,
-+ 0x21, 0x21, 0x21, 0x56, 0x54, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x4C, 0x2E, 0x5A, 0x23, 0x55, 0x5B,
-+ 0x49, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x21, 0x32,
-+ 0x3E, 0x3B, 0x21, 0x21, 0x21, 0x35, 0x54, 0x53,
-+ 0x23, 0x55, 0x4F, 0x55, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x25, 0x44, 0x42,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x41, 0x46, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x23, 0x53, 0x2F, 0x2A, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x32, 0x28, 0x33, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x59, 0x5B,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x54,
-+ 0x57, 0x21, 0x35, 0x53, 0x47, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x44, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x41, 0x43,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3F, 0x29,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x55, 0x4C, 0x3F, 0x2A, 0x46, 0x31, 0x36, 0x46,
-+ 0x71, 0x97, 0xCE, 0xCB, 0xCF, 0xA4, 0x9C, 0xA4,
-+ 0xAD, 0x76, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x8C,
-+ 0x7A, 0xA7, 0x36, 0x50, 0x3A, 0x36, 0x38, 0x52,
-+ 0x32, 0x2A, 0x3F, 0x2B, 0x22, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x22, 0x5A, 0x5A, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x28,
-+ 0x35, 0x21, 0x21, 0x21, 0x55, 0x30, 0x56, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x5B, 0x45, 0x21, 0x21,
-+ 0x21, 0x21, 0x2B, 0x2E, 0x25, 0x47, 0x3D, 0x2D,
-+ 0x25, 0x4C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x39,
-+ 0x44, 0x55, 0x21, 0x21, 0x21, 0x46, 0x59, 0x3B,
-+ 0x21, 0x23, 0x30, 0x34, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x2A, 0x28, 0x4E, 0x42, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x3C, 0x3D, 0x42, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x51, 0x4B, 0x49, 0x39, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x5C, 0x25, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x38, 0x4B, 0x3B,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x54,
-+ 0x56, 0x21, 0x5B, 0x3A, 0x35, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x51, 0x59, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x32, 0x2D, 0x42,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x3A,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x2B, 0x3C, 0x39, 0x56, 0x46, 0x40, 0x36, 0xB6,
-+ 0x73, 0x82, 0xCB, 0xD0, 0x75, 0xD1, 0xD2, 0xD1,
-+ 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x74, 0xCE,
-+ 0x9E, 0x6E, 0xD3, 0xC6, 0x6F, 0x81, 0x38, 0x5C,
-+ 0x52, 0x58, 0x39, 0x4C, 0x35, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x4C, 0x4A, 0x40, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x36, 0x3A,
-+ 0x21, 0x21, 0x21, 0x21, 0x55, 0x27, 0x3F, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x25, 0x3B, 0x21,
-+ 0x21, 0x21, 0x42, 0x2E, 0x2D, 0x2D, 0x26, 0x46,
-+ 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51,
-+ 0x44, 0x55, 0x21, 0x21, 0x35, 0x25, 0x40, 0x21,
-+ 0x21, 0x22, 0x4E, 0x58, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x39, 0x59, 0x38, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x56, 0x59, 0x23, 0x21, 0x21, 0x21,
-+ 0x21, 0x4C, 0x54, 0x5B, 0x59, 0x4C, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x57, 0x3A, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x4D, 0x49, 0x26, 0x23,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x53,
-+ 0x32, 0x51, 0x27, 0x42, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x42, 0x25, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x24, 0x37, 0x3E, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x48,
-+ 0x48, 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x3B, 0x39, 0x3F, 0x32, 0x5C, 0x38, 0x47, 0xD4,
-+ 0x7A, 0xC7, 0xCB, 0xD0, 0x74, 0x80, 0x8C, 0x9F,
-+ 0x80, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x73, 0x72, 0xD5, 0xCA, 0x61, 0xD3, 0x40, 0x5C,
-+ 0x46, 0x58, 0x51, 0x42, 0x33, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x39, 0x4B, 0x58, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x2A, 0x3D, 0x51,
-+ 0x21, 0x21, 0x21, 0x21, 0x55, 0x28, 0x42, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x47, 0x52, 0x21,
-+ 0x21, 0x21, 0x58, 0x59, 0x42, 0x3C, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x57,
-+ 0x4E, 0x23, 0x21, 0x22, 0x4D, 0x54, 0x35, 0x21,
-+ 0x21, 0x21, 0x5A, 0x46, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x56, 0x59, 0x36, 0x35, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x36, 0x5B, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x53, 0x48, 0x3F, 0x27, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x24, 0x47, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x22, 0x40, 0x27, 0x29, 0x29, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x47,
-+ 0x40, 0x41, 0x5C, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x39, 0x41, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x32, 0x26, 0x47, 0x28, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B,
-+ 0x53, 0x28, 0x36, 0x42, 0x23, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x4C, 0x39, 0x58, 0x32, 0x31, 0x38, 0x47, 0xD4,
-+ 0xCF, 0xD0, 0x6C, 0x9E, 0xD6, 0x6B, 0xD7, 0xD8,
-+ 0xD7, 0x6B, 0xCF, 0x7B, 0x80, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x74, 0x72, 0xD0, 0xA6, 0x70, 0x51,
-+ 0x46, 0x56, 0x51, 0x42, 0x55, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x5C, 0x27, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x32, 0x37, 0x54, 0x33,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x44, 0x2A, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x2C, 0x21,
-+ 0x21, 0x21, 0x47, 0x36, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52,
-+ 0x54, 0x23, 0x21, 0x24, 0x4F, 0x46, 0x21, 0x21,
-+ 0x21, 0x21, 0x38, 0x2C, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x42, 0x55, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x45, 0x54, 0x56, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x53, 0x24, 0x21, 0x21, 0x21, 0x21,
-+ 0x46, 0x5D, 0x4C, 0x52, 0x4E, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x31, 0x48, 0x22, 0x21, 0x21,
-+ 0x21, 0x22, 0x46, 0x54, 0x3B, 0x45, 0x29, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x47,
-+ 0x28, 0x28, 0x55, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x51, 0x41, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x56, 0x54, 0x39, 0x56, 0x28, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x34, 0x50, 0x30, 0x4E, 0x40, 0x34, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x4C, 0x39, 0x58, 0x52, 0x5C, 0x38, 0x47, 0x9D,
-+ 0xC9, 0xD9, 0xDA, 0xDB, 0xDC, 0xDC, 0xDC, 0xDC,
-+ 0xDC, 0xDC, 0xDC, 0xDD, 0x6B, 0x7B, 0x75, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x74, 0x71, 0xD0, 0x3F,
-+ 0x52, 0x57, 0x2A, 0x42, 0x2B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x47, 0x3A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x35, 0x45, 0x4A, 0x2C, 0x3B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x30, 0x56, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x58, 0x29, 0x21,
-+ 0x21, 0x21, 0x53, 0x3F, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x31,
-+ 0x43, 0x22, 0x3B, 0x28, 0x48, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x56, 0x25, 0x35, 0x21, 0x21, 0x21,
-+ 0x39, 0x54, 0x34, 0x21, 0x21, 0x21, 0x35, 0x3A,
-+ 0x30, 0x57, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0x39, 0x21, 0x21,
-+ 0x21, 0x35, 0x25, 0x3F, 0x21, 0x21, 0x21, 0x56,
-+ 0x30, 0x58, 0x21, 0x24, 0x43, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4D, 0x29, 0x22, 0x21, 0x21,
-+ 0x22, 0x32, 0x26, 0x42, 0x21, 0x46, 0x2C, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x48,
-+ 0x2E, 0x36, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x56, 0x28, 0x35, 0x21, 0x21,
-+ 0x21, 0x3F, 0x27, 0x32, 0x21, 0x51, 0x25, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x22, 0x39, 0x38, 0x25, 0x54, 0x50,
-+ 0x58, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x4C, 0x3F, 0x56, 0x52, 0x31, 0x4D, 0x47, 0x39,
-+ 0xD8, 0xDC, 0xDC, 0xDC, 0xDE, 0xDF, 0xDF, 0xDF,
-+ 0xDF, 0xDF, 0xDE, 0xDE, 0xDC, 0xDD, 0xD6, 0x97,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x97, 0x56,
-+ 0x46, 0x57, 0x2A, 0x42, 0x2B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x38, 0x29, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x35, 0x5B, 0x3D, 0x40, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x59, 0x3F, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x40, 0x5A, 0x21,
-+ 0x21, 0x22, 0x5D, 0x34, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x5B,
-+ 0x2C, 0x33, 0x29, 0x28, 0x3B, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x34, 0x59, 0x3C, 0x21, 0x21, 0x2B,
-+ 0x53, 0x36, 0x22, 0x21, 0x21, 0x34, 0x5A, 0x28,
-+ 0x3F, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x40, 0x41, 0x23, 0x21,
-+ 0x21, 0x3B, 0x28, 0x2B, 0x21, 0x21, 0x2A, 0x44,
-+ 0x38, 0x22, 0x21, 0x24, 0x50, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x50, 0x25, 0x23, 0x21, 0x23,
-+ 0x45, 0x5D, 0x52, 0x21, 0x21, 0x40, 0x50, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x50,
-+ 0x2D, 0x39, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x46, 0x30, 0x33, 0x21, 0x22,
-+ 0x24, 0x4E, 0x45, 0x22, 0x21, 0x58, 0x25, 0x22,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, 0x3C, 0x48,
-+ 0x27, 0x39, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x34, 0x3F, 0x58, 0x57, 0x31, 0x4D, 0x47, 0x56,
-+ 0xDB, 0xDC, 0xDE, 0xE0, 0xE1, 0xE2, 0xE2, 0xE2,
-+ 0xE2, 0xE2, 0xE1, 0xE3, 0xE4, 0xDE, 0xDC, 0x6B,
-+ 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0xA7, 0x38,
-+ 0x46, 0x56, 0x2A, 0x39, 0x3B, 0x23, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x32, 0x44, 0x34, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x3F,
-+ 0x4D, 0x41, 0x29, 0x42, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x44, 0x46, 0x34,
-+ 0x2B, 0x55, 0x55, 0x2B, 0x56, 0x59, 0x36, 0x21,
-+ 0x21, 0x22, 0x59, 0x2B, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x55, 0x5C, 0x21, 0x21, 0x21, 0x40,
-+ 0x50, 0x4D, 0x4F, 0x32, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x55, 0x44, 0x31, 0x22, 0x3B, 0x5A,
-+ 0x41, 0x55, 0x21, 0x35, 0x57, 0x4A, 0x2E, 0x48,
-+ 0x57, 0x32, 0x3F, 0x55, 0x35, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x25, 0x47, 0x22, 0x21,
-+ 0x21, 0x4C, 0x28, 0x35, 0x21, 0x34, 0x30, 0x3A,
-+ 0x23, 0x21, 0x21, 0x58, 0x3A, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4D, 0x4E, 0x35, 0x33, 0x48,
-+ 0x44, 0x56, 0x21, 0x21, 0x21, 0x58, 0x41, 0x23,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x29,
-+ 0x4A, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x32, 0x44, 0x2B, 0x23, 0x45,
-+ 0x3D, 0x31, 0x22, 0x21, 0x21, 0x4C, 0x27, 0x35,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x53, 0x53, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x34, 0x3F, 0x58, 0x57, 0x40, 0x38, 0x47, 0xD4,
-+ 0xDC, 0xDE, 0xE0, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE2, 0xE1, 0xDF, 0xDC,
-+ 0xE6, 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x2A, 0x40,
-+ 0x46, 0x58, 0x2A, 0x42, 0x34, 0x34, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x2B, 0x54, 0x5A, 0x34, 0x23,
-+ 0x35, 0x23, 0x35, 0x33, 0x2B, 0x24, 0x54, 0x4B,
-+ 0x59, 0x5C, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4B, 0x44, 0x59,
-+ 0x27, 0x26, 0x26, 0x4A, 0x3E, 0x41, 0x55, 0x21,
-+ 0x21, 0x22, 0x41, 0x39, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x34, 0x53, 0x4D, 0x21, 0x21, 0x21, 0x5C,
-+ 0x4B, 0x4F, 0x40, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x48, 0x30, 0x50, 0x26, 0x54,
-+ 0x34, 0x21, 0x55, 0x4E, 0x2D, 0x2F, 0x4F, 0x37,
-+ 0x3E, 0x4B, 0x4B, 0x30, 0x27, 0x53, 0x2C, 0x57,
-+ 0x42, 0x4C, 0x55, 0x22, 0x22, 0x22, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x39, 0x4A, 0x3F, 0x21, 0x21,
-+ 0x21, 0x55, 0x53, 0x55, 0x2A, 0x26, 0x54, 0x33,
-+ 0x21, 0x21, 0x21, 0x51, 0x54, 0x3B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x51, 0x3D, 0x46, 0x5A, 0x4F,
-+ 0x52, 0x21, 0x21, 0x21, 0x21, 0x22, 0x27, 0x31,
-+ 0x33, 0x23, 0x42, 0x4C, 0x21, 0x21, 0x21, 0x5B,
-+ 0x54, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3B, 0x44, 0x45, 0x48, 0x4B,
-+ 0x38, 0x22, 0x21, 0x21, 0x21, 0x21, 0x53, 0x48,
-+ 0x33, 0x23, 0x34, 0x3C, 0x22, 0x57, 0x4D, 0x33,
-+ 0x21, 0x21, 0x21, 0x21, 0x22, 0x23, 0x34, 0x40,
-+ 0x44, 0x31, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x3B, 0x42, 0x2A, 0x57, 0x31, 0x38, 0x5C, 0xD8,
-+ 0xDC, 0xE4, 0xE2, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE2, 0xE0,
-+ 0xDE, 0xCA, 0x9F, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x80, 0x76, 0x57, 0x5C,
-+ 0x31, 0x6E, 0x34, 0x3C, 0xC9, 0x3B, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x33, 0x5B, 0x30, 0x25,
-+ 0x5D, 0x5A, 0x53, 0x27, 0x26, 0x59, 0x36, 0x56,
-+ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x3D, 0x2A, 0x55,
-+ 0x42, 0x51, 0x56, 0x24, 0x2A, 0x35, 0x21, 0x21,
-+ 0x21, 0x21, 0x45, 0x53, 0x3B, 0x22, 0x22, 0x35,
-+ 0x46, 0x59, 0x54, 0x55, 0x21, 0x21, 0x21, 0x31,
-+ 0x2D, 0x47, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x33, 0x50, 0x5D, 0x45, 0x55,
-+ 0x21, 0x21, 0x34, 0x4F, 0x29, 0x58, 0x33, 0x4C,
-+ 0x39, 0x3C, 0x2A, 0x40, 0x48, 0x54, 0x3D, 0x3D,
-+ 0x37, 0x4A, 0x59, 0x29, 0x5B, 0x36, 0x52, 0x2A,
-+ 0x42, 0x3C, 0x32, 0x30, 0x41, 0x35, 0x21, 0x21,
-+ 0x21, 0x33, 0x41, 0x26, 0x4B, 0x5A, 0x35, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x3E, 0x41, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x41, 0x49, 0x30, 0x32,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x4F,
-+ 0x5D, 0x41, 0x27, 0x58, 0x21, 0x21, 0x21, 0x5B,
-+ 0x41, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x47, 0x49, 0x4F, 0x5C,
-+ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x39, 0x4A,
-+ 0x28, 0x43, 0x27, 0x5C, 0x35, 0x25, 0x49, 0x5B,
-+ 0x58, 0x52, 0x5C, 0x38, 0x48, 0x41, 0x4A, 0x4B,
-+ 0x50, 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35,
-+ 0x3B, 0x3C, 0x2A, 0x32, 0x5C, 0x40, 0x32, 0xDD,
-+ 0xDC, 0xE3, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE1, 0xE0, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x80, 0xE7, 0x58, 0x52,
-+ 0x5C, 0x67, 0xE7, 0x6C, 0xE8, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x23, 0x39, 0x5C,
-+ 0x29, 0x5A, 0x4D, 0x5C, 0x2A, 0x2B, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x44, 0x42, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x33, 0x27, 0x30, 0x5A, 0x2C, 0x25,
-+ 0x4B, 0x50, 0x3B, 0x21, 0x21, 0x21, 0x21, 0x33,
-+ 0x2C, 0x3B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x4C, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x55, 0x2B,
-+ 0x39, 0x32, 0x4D, 0x29, 0x26, 0x3D, 0x2D, 0x2D,
-+ 0x4B, 0x4B, 0x2F, 0x30, 0x42, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x3B, 0x29, 0x2C, 0x55, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x23, 0x50, 0x4D, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x32, 0x3B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51,
-+ 0x48, 0x45, 0x34, 0x21, 0x21, 0x21, 0x21, 0x38,
-+ 0x44, 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0x32, 0x34, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3C,
-+ 0x5B, 0x4D, 0x42, 0x21, 0x21, 0x34, 0x4D, 0x47,
-+ 0x5A, 0x5D, 0x27, 0x4E, 0x25, 0x3A, 0x5C, 0x42,
-+ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0x2B, 0x34, 0x51, 0x56, 0x46, 0x40, 0xE9, 0xDA,
-+ 0xDD, 0xE1, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE2, 0xEA, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x76, 0xD3, 0x67, 0x39,
-+ 0x3C, 0xCF, 0xD5, 0x9F, 0x3B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x28, 0x2B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3C, 0x53, 0x44, 0x3D, 0x43,
-+ 0x57, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x35, 0x55, 0x3F, 0x2A,
-+ 0x57, 0x24, 0x3F, 0x3B, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x22, 0x22, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55,
-+ 0x3C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x22, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x55, 0x4C, 0x3F, 0x58, 0x46, 0x31, 0x8B, 0xAD,
-+ 0xCC, 0xE2, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xEA, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x97, 0x35, 0x6E, 0xC6, 0x82,
-+ 0xA6, 0x73, 0x75, 0xBA, 0x2B, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x34, 0x44, 0x3B, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x33, 0x34, 0xEB, 0x34, 0x57, 0x5C, 0x4C, 0xA4,
-+ 0xEC, 0x64, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0x83, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x80, 0xED, 0xCF, 0xCE, 0x78, 0x78,
-+ 0x78, 0x7A, 0x6D, 0x34, 0x22, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x55, 0x25, 0x55, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x23, 0x34, 0xEE, 0xEF, 0x5F, 0x96, 0x23, 0xB3,
-+ 0xBF, 0xB5, 0xF0, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x9F, 0x78, 0x78, 0x78, 0x78,
-+ 0x80, 0x9F, 0x65, 0x33, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x28, 0x55, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0x4C, 0xF1, 0xA5, 0xAC, 0xAB, 0x60, 0xB3,
-+ 0xB3, 0xF2, 0xEA, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xF3, 0x6D, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x80, 0x61, 0x34, 0x23, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x25, 0x22, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B, 0x5E,
-+ 0x4C, 0x3B, 0xF4, 0xA5, 0x9B, 0x9B, 0xB4, 0xEF,
-+ 0xEF, 0xBF, 0xAD, 0xF5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0x67, 0x75, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80,
-+ 0xA7, 0x3F, 0x55, 0x22, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4E, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B, 0x5F,
-+ 0x9B, 0xD2, 0x3C, 0xB7, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xB3, 0xB8, 0xEA, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0xF0, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x82,
-+ 0x34, 0x3B, 0x33, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x5D, 0x23, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x60,
-+ 0xAB, 0xA5, 0xB8, 0xB1, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xF6, 0xB7, 0xB5, 0xF0, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-+ 0x67, 0x80, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x78, 0x80, 0x9F, 0xBA, 0x42,
-+ 0x4C, 0x2B, 0x22, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x3A, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55,
-+ 0xF2, 0x9B, 0x9B, 0xB4, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB4, 0x5F, 0x63, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xF5,
-+ 0x76, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x78, 0x78, 0x80, 0x6D, 0x65, 0x3C, 0x34,
-+ 0x3B, 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2A, 0x29, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23,
-+ 0xF7, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB3, 0xB8, 0xEA, 0xE5, 0xE5, 0xE5,
-+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xF8, 0x68,
-+ 0x7A, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x78, 0x80, 0x97, 0x82, 0x39, 0x39, 0x34, 0x3B,
-+ 0x33, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x2A, 0x29, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x3B, 0xB8, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xF6, 0xB2, 0xF9, 0xFA, 0xFA, 0xFA,
-+ 0xFA, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0x6F, 0x97,
-+ 0x80, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-+ 0x8C, 0x61, 0x39, 0x2A, 0x3F, 0x3C, 0x4C, 0x55,
-+ 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x31, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x22, 0xFB, 0xF6, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB3, 0xB2, 0xF9, 0xF3, 0xF3, 0xF3,
-+ 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0x90, 0x6D, 0x97,
-+ 0x8C, 0x6D, 0x76, 0xBB, 0xC6, 0xB9, 0xC0, 0xFC,
-+ 0xAD, 0xFB, 0x2A, 0x58, 0x42, 0x4C, 0x55, 0x33,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x33, 0xD2, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
-+ 0xEF, 0xEF, 0xB4, 0xB8, 0xEB, 0xE8, 0x7F, 0xD6,
-+ 0xD6, 0xD6, 0xD6, 0x9D, 0x9D, 0x52, 0xEB, 0x5F,
-+ 0x5F, 0x5F, 0xF2, 0xA4, 0xBF, 0xBF, 0xB4, 0xBF,
-+ 0xEE, 0x56, 0x2A, 0x42, 0x4C, 0x2B, 0x33, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x4C, 0xBE, 0xF6, 0xEF, 0xEF, 0xEF,
-+ 0xF6, 0xB4, 0xB2, 0xF1, 0x3C, 0x56, 0x46, 0x5C,
-+ 0x31, 0x38, 0x40, 0x40, 0x4D, 0x4D, 0xB8, 0xAC,
-+ 0xBF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xB4,
-+ 0xB1, 0x39, 0x39, 0x3B, 0x2B, 0x23, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x3B, 0xAD, 0xA4, 0xBF, 0xBF,
-+ 0xB7, 0xB2, 0xEE, 0x5E, 0x39, 0x51, 0x2A, 0x32,
-+ 0x52, 0x46, 0x5C, 0x31, 0x31, 0x2A, 0xA5, 0xEF,
-+ 0xFD, 0xB4, 0xEF, 0xF6, 0xF6, 0xEF, 0xF6, 0xB2,
-+ 0x3F, 0x34, 0x2B, 0x55, 0x23, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x33, 0xEB, 0xF7, 0xAA,
-+ 0xAA, 0xF7, 0xEB, 0x55, 0x3B, 0x3C, 0x39, 0x51,
-+ 0x2A, 0x56, 0x32, 0x57, 0x57, 0x2A, 0x96, 0x3C,
-+ 0x2A, 0xEE, 0xEF, 0x5F, 0xD2, 0xEF, 0xB4, 0xAA,
-+ 0x42, 0x55, 0x35, 0x22, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x3B,
-+ 0x3B, 0x35, 0x21, 0x23, 0x33, 0x3B, 0x4C, 0x3C,
-+ 0x39, 0x3F, 0x51, 0x2A, 0x51, 0x51, 0x58, 0x32,
-+ 0x56, 0xF4, 0xB1, 0x42, 0x3C, 0xF2, 0x9C, 0x3F,
-+ 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x33, 0x55,
-+ 0x3B, 0x4C, 0x4C, 0x3C, 0x42, 0x42, 0x3C, 0x34,
-+ 0x34, 0x3F, 0x4C, 0x3B, 0x4C, 0x3B, 0x3C, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x35, 0x33, 0x55, 0x33, 0x33, 0x33, 0x55, 0x2B,
-+ 0x2B, 0x35, 0x35, 0x35, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
-+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
- };
-
- #endif /* !__HAVE_ARCH_LINUX_LOGO */
-@@ -994,7 +1760,7 @@
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
- };
-
- #endif /* !__HAVE_ARCH_LINUX_LOGOBW */
-@@ -1401,7 +2167,7 @@
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- };
-
- #endif /* !__HAVE_ARCH_LINUX_LOGO16 */
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/mkdep.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/mkdep.patch
deleted file mode 100644
index 4daeaa11be..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/mkdep.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Made by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- linux/Makefile~mkdep 2003-12-19 09:36:51.000000000 -0800
-+++ linux/Makefile 2003-12-19 09:57:44.000000000 -0800
-@@ -458,7 +458,7 @@
-
- dep-files: scripts/mkdep archdep include/linux/version.h
- scripts/mkdep -- init/*.c > .depend
-- scripts/mkdep -- `find $(FINDHPATH) -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` > .hdepend
-+ $(foreach, dir, $(FINDHPATH), scripts/mkdep -- `find $(dir) -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` >> .hdepend)
- $(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS)) _FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)"
- ifdef CONFIG_MODVERSIONS
- $(MAKE) update-modverfile
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/module_licence.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/module_licence.patch
deleted file mode 100644
index fc20f0d281..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/module_licence.patch
+++ /dev/null
@@ -1,81 +0,0 @@
---- linux/drivers/usb/device/bi/sa1100.c.orig 2003-05-13 11:18:44.000000000 +0200
-+++ linux/drivers/usb/device/bi/sa1100.c 2004-08-01 13:49:10.000000000 +0200
-@@ -46,6 +46,7 @@
- #include "../usbd-build.h"
- #include "../usbd-module.h"
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device SA-1100 Bus Interface");
-
---- linux/drivers/usb/device/usbd.c.orig 2003-05-13 11:18:45.000000000 +0200
-+++ linux/drivers/usb/device/usbd.c 2004-08-01 13:47:47.000000000 +0200
-@@ -72,6 +72,7 @@
- #include "usbd-build.h"
- #include "usbd-module.h"
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device Core Support");
-
---- linux/drivers/usb/device/usbd-monitor.c.orig 2004-08-01 13:46:44.000000000 +0200
-+++ linux/drivers/usb/device/usbd-monitor.c 2004-08-01 13:46:36.000000000 +0200
-@@ -33,6 +33,7 @@
- #include "usbd-build.h"
- #include "usbd-module.h"
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device Monitor");
- USBD_MODULE_INFO ("usbd_monitor 0.3");
---- linux/drivers/usb/device/net_fd/net-fd.c.orig 2003-05-13 11:18:45.000000000 +0200
-+++ linux/drivers/usb/device/net_fd/net-fd.c 2004-08-01 13:48:32.000000000 +0200
-@@ -33,6 +33,7 @@
- #include "../usbd-build.h"
- #include "../usbd-module.h"
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device Network Function");
-
---- linux/arch/arm/mach-sa1100/deviceinfo.c.orig 2004-08-01 13:56:24.000000000 +0200
-+++ linux/arch/arm/mach-sa1100/deviceinfo.c 2004-08-01 13:56:11.000000000 +0200
-@@ -28,6 +28,7 @@
-
- #define MODULE_NAME "deviceinfo"
- #define DEVINFO_DIRNAME "deviceinfo"
-+MODULE_LICENSE("GPL");
-
- static int proc_read_deviceinfo(struct file * file, char * buf,
- size_t nbytes, loff_t *ppos);
---- linux/arch/arm/mach-sa1100/gpio.c.orig 2003-05-13 11:18:14.000000000 +0200
-+++ linux/arch/arm/mach-sa1100/gpio.c 2004-08-01 13:55:27.000000000 +0200
-@@ -15,7 +15,7 @@
-
- #include <asm/hardware.h>
-
--
-+MODULE_LICENSE("GPL");
-
- static int proc_gpio_read(char *page, char **start, off_t off,
- int count, int *eof, void *data)
---- linux/drivers/usb/device/serial_fd/serial.c.orig 2003-05-13 11:18:45.000000000 +0200
-+++ linux/drivers/usb/device/serial_fd/serial.c 2004-08-01 14:25:02.000000000 +0200
-@@ -80,6 +80,7 @@
- #include "../usbd-module.h"
-
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device Serial Function");
-
---- linux/drivers/usb/device/usbd-serialnumber.c.orig 2003-05-13 11:18:45.000000000 +0200
-+++ linux/drivers/usb/device/usbd-serialnumber.c 2004-08-01 14:25:40.000000000 +0200
-@@ -33,6 +33,7 @@
- #include "usbd-build.h"
- #include "usbd-module.h"
-
-+MODULE_LICENSE("GPL");
- MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com");
- MODULE_DESCRIPTION ("USB Device Monitor");
- USBD_MODULE_INFO ("usbd_monitor 0.2-alpha");
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/sound-2.4.18r2.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/sound-2.4.18r2.patch
deleted file mode 100644
index d75c07a1c8..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/sound-2.4.18r2.patch
+++ /dev/null
@@ -1,5602 +0,0 @@
-diff -Nuar linux-2.4.18/arch/arm/mach-sa1100/m62332.c linux-2.4.18p/arch/arm/mach-sa1100/m62332.c
---- linux-2.4.18/arch/arm/mach-sa1100/m62332.c 2003-05-13 11:18:14.000000000 +0200
-+++ linux-2.4.18p/arch/arm/mach-sa1100/m62332.c 2004-10-12 22:36:36.000000000 +0200
-@@ -131,3 +131,5 @@
-
- return 0;
- }
-+EXPORT_SYMBOL(m62332_senddata);
-+
-diff -Nuar linux-2.4.18/arch/arm/mach-sa1100/Makefile linux-2.4.18p/arch/arm/mach-sa1100/Makefile
---- linux-2.4.18/arch/arm/mach-sa1100/Makefile 2003-05-13 11:18:14.000000000 +0200
-+++ linux-2.4.18p/arch/arm/mach-sa1100/Makefile 2004-10-12 22:36:19.000000000 +0200
-@@ -18,7 +18,7 @@
- export-objs := assabet.o consus.o badge4.o dma-sa1100.o dma-sa1111.o \
- flexanet.o freebird.o generic.o h3600.o \
- huw_webpanel.o irq.o pcipool.o sa1111.o sa1111-pcibuf.o \
-- system3.o yopy.o usb_ctl.o usb_recv.o usb_send.o
-+ system3.o yopy.o usb_ctl.o usb_recv.o usb_send.o m62332.o
-
- # These aren't present yet, and prevents a plain -ac kernel building.
- # hwtimer.o
-@@ -36,7 +36,7 @@
- obj-$(CONFIG_SA1100_LART) += cpu-sa1100.o
- endif
-
--obj-$(CONFIG_SA1100_COLLIE) += collie.o m62332.o collie_battery.o collie_led.o collie_buzzer.o
-+obj-$(CONFIG_SA1100_COLLIE) += collie.o m62332.o collie_battery.o collie_led.o
-
- # Next, the SA1111 stuff.
- obj-$(CONFIG_SA1111) += sa1111.o dma-sa1111.o
-diff -Nuar linux-2.4.18/drivers/char/Makefile linux-2.4.18p/drivers/char/Makefile
---- linux-2.4.18/drivers/char/Makefile 2003-05-13 11:18:18.000000000 +0200
-+++ linux-2.4.18p/drivers/char/Makefile 2004-10-12 17:26:44.000000000 +0200
-@@ -228,7 +228,7 @@
- obj-y += joystick/js.o
- endif
-
--obj-$(CONFIG_SA1100_COLLIE) += sharp_led.o sharp_kbdctl.o sharp_buzzer.o
-+obj-$(CONFIG_SA1100_COLLIE) += sharp_led.o sharp_kbdctl.o
- obj-$(CONFIG_DISCOVERY_LED) += sharp_led.o discovery_led.o
- obj-$(CONFIG_ARCH_PXA_POODLE) += sharp_led.o sharp_kbdctl.o sharpsl_led.o sharp_buzzer.o
- obj-$(CONFIG_ARCH_PXA_CORGI) += sharp_led.o sharpsl_led.o sharp_kbdctl.o corgi_rc.o sharp_buzzer.o
-diff -Nuar linux-2.4.18/drivers/sound/colliebuzzer.h linux-2.4.18p/drivers/sound/colliebuzzer.h
---- linux-2.4.18/drivers/sound/colliebuzzer.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18p/drivers/sound/colliebuzzer.h 2004-10-13 15:24:51.028208808 +0200
-@@ -0,0 +1,756 @@
-+unsigned short tap_data[] = {
-+ 0x0000 , 0xff00 , 0xff00 , 0x0000 ,
-+ 0xff00 , 0x0000 , 0x0000 , 0x0100 ,
-+ 0x0000 , 0x0100 , 0x0000 , 0x0100 ,
-+ 0x0100 , 0x0000 , 0x0100 , 0x0100 ,
-+ 0x0100 , 0x0100 , 0x0100 , 0x0100 ,
-+ 0x0100 , 0x0100 , 0x0100 , 0x0100 ,
-+ 0x0100 , 0x0000 , 0x0100 , 0x0000 ,
-+ 0x0100 , 0xff00 , 0x0100 , 0x0000 ,
-+ 0x0100 , 0x0000 , 0x0000 , 0x0100 ,
-+ 0x0000 , 0x0100 , 0x0000 , 0x0100 ,
-+ 0x0000 , 0x0000 , 0x0000 , 0x0000 ,
-+ 0x0000 , 0x0100 , 0x0000 , 0x0100 ,
-+ 0x0000 , 0x0100 , 0x0700 , 0x1c00 ,
-+ 0xc800 , 0xd900 , 0x2b00 , 0x2700 ,
-+ 0xbf00 , 0xe000 , 0x0d00 , 0x1000 ,
-+ 0xf500 , 0xd700 , 0x0100 , 0x0a00 ,
-+ 0xfb00 , 0xfa00 , 0x2200 , 0x0100 ,
-+ 0xeb00 , 0x0300 , 0x0600 , 0x1600 ,
-+ 0xe500 , 0xf500 , 0x0d00 , 0x0a00 ,
-+ 0x0100 , 0xfb00 , 0x0000 , 0x0100 ,
-+ 0xf200 , 0x0400 , 0x0600 , 0x0000 ,
-+ 0xf100 , 0x0300 , 0x1200 , 0xfe00 ,
-+ 0xe900 , 0x0400 , 0x0100 , 0x0d00 ,
-+ 0xf500 , 0x0100 , 0x0100 , 0xfe00 ,
-+ 0x0100 , 0xfb00 , 0x0400 , 0xff00 ,
-+ 0xf700 , 0x0400 , 0x0000 , 0xfe00 ,
-+ 0x0200 , 0x0000 , 0x0100 , 0xfd00 ,
-+ 0x0000 , 0xff00 , 0x0200 , 0x0000 ,
-+ 0xff00 , 0x0000 , 0x0200 , 0xfc00 ,
-+ 0xfe00 , 0xff00 , 0x0100 , 0x0200 ,
-+ 0x0000 , 0xff00 , 0xfc00 , 0x0100 ,
-+ 0x0100 , 0x0100 , 0xff00 , 0x0000 ,
-+ 0x0300 , 0xfe00 , 0xfe00 , 0x0200 ,
-+ 0xff00 , 0x0000 , 0x0000 , 0xfe00 ,
-+ 0x0000 , 0xff00 , 0x0000 , 0x0000 ,
-+ 0x0000 , 0xff00 , 0x0000 , 0x0000 ,
-+ 0xff00 , 0xfe00 , 0xfd00 , 0x0100 ,
-+ 0x0000 , 0xfe00 , 0xff00 , 0xff00 ,
-+ 0x0000 , 0xff00 , 0x0100 , 0xfe00 ,
-+ 0xff00 , 0xff00 , 0x0000 , 0x0000 ,
-+ 0xfe00 , 0xff00 , 0x0100 , 0x0100 ,
-+ 0xff00 , 0x0100 , 0x0100 , 0xfe00 ,
-+ 0x0000 , 0x0000 , 0x0000 , 0x0100 ,
-+ 0x0000 , 0x0000 , 0xff00 , 0x0000 ,
-+ 0x0100 , 0x0000 , 0x0200 };
-+
-+
-+unsigned short click_data[] = {
-+ 0x0100 , 0x0100 , 0x0100 , 0x0000 ,
-+ 0x0100 , 0xff00 , 0x0100 , 0x0000 ,
-+ 0xff00 , 0xff00 , 0xff00 , 0x0000 ,
-+ 0xff00 , 0xff00 , 0xff00 , 0xff00 ,
-+ 0xff00 , 0xff00 , 0x0000 , 0xff00 ,
-+ 0xff00 , 0xff00 , 0x0000 , 0xff00 ,
-+ 0xff00 , 0xff00 , 0xff00 , 0x0100 ,
-+ 0x0000 , 0xff00 , 0xfe00 , 0x0100 ,
-+ 0xff00 , 0x0100 , 0xff00 , 0x0100 ,
-+ 0x0100 , 0x0300 , 0xff00 , 0xff00 ,
-+ 0xff00 , 0x0100 , 0x0100 , 0x0000 ,
-+ 0xfe00 , 0xfe00 , 0xfe00 , 0xfc00 ,
-+ 0xfe00 , 0x0100 , 0xfd00 , 0xff00 ,
-+ 0xff00 , 0xfc00 , 0xfe00 , 0xfd00 ,
-+ 0x0100 , 0xfe00 , 0x0100 , 0xf800 ,
-+ 0xfe00 , 0xfe00 , 0xfc00 , 0xe600 ,
-+ 0xdb00 , 0x2500 , 0xdb00 , 0xee00 ,
-+ 0xdb00 , 0x0600 , 0xeb00 , 0x1f00 ,
-+ 0x1e00 , 0xeb00 , 0xfe00 , 0x0000 ,
-+ 0xff00 , 0x1900 , 0xef00 , 0xf700 ,
-+ 0x2100 , 0xe400 , 0x0100 , 0x0600 ,
-+ 0xff00 , 0x0300 , 0xf900 , 0x0f00 ,
-+ 0xf600 , 0x0100 , 0xfe00 , 0xf900 ,
-+ 0x0500 , 0xf500 , 0x0600 , 0xfb00 ,
-+ 0x0800 , 0x0100 , 0x0300 , 0x0100 ,
-+ 0xf700 , 0xfa00 , 0xfd00 , 0xfc00 ,
-+ 0x0800 , 0xfb00 , 0x0500 , 0xfe00 ,
-+ 0xfc00 , 0xfc00 , 0xfe00 , 0x0400 ,
-+ 0xff00 , 0xff00 , 0x0500 , 0x0100 ,
-+ 0xfc00 , 0xff00 , 0xfe00 , 0xfb00 ,
-+ 0x0200 , 0x0200 , 0xff00 , 0xfe00 ,
-+ 0xfe00 , 0x0600 , 0xfb00 , 0xff00 ,
-+ 0xfc00 , 0x0600 , 0xfb00 , 0xff00 ,
-+ 0xff00 , 0x0100 , 0xff00 , 0x0200 ,
-+ 0xff00 , 0xfb00 , 0xff00 , 0x0200 ,
-+ 0xff00 , 0x0200 , 0x0100 , 0xfe00 ,
-+ 0xfe00 , 0x0100 , 0xfd00 , 0x0200 ,
-+ 0xfc00 , 0x0800 , 0xfe00 , 0xfe00 ,
-+ 0x0400 , 0xfc00 , 0xff00 , 0xfc00 ,
-+ 0x0500 , 0x0200 , 0x0800 , 0x0200 ,
-+ 0x0100 , 0xfe00 , 0x0100 , 0xff00 ,
-+ 0x0700 , 0xfb00 , 0xfc00 , 0x0100 ,
-+ 0xfe00 , 0xfc00 , 0x0b00 , 0xfb00 ,
-+ 0xfb00 , 0x0700 , 0xfb00 , 0xfb00 ,
-+ 0x0100 , 0xff00 , 0xfb00 , 0xfd00 ,
-+ 0x0000 , 0xfe00 , 0xfe00 , 0xff00 ,
-+ 0xfc00 , 0x0400 , 0x0000 , 0xfe00 ,
-+ 0xff00 , 0x0200 , 0xff00 , 0x0000 ,
-+ 0x0500 , 0x0100 , 0x0100 , 0x0100 ,
-+ 0x0100 , 0x0000 , 0x0300 , 0xfe00 ,
-+ 0xff00 , 0x0100 , 0x0100 , 0xfe00 ,
-+ 0x0000 , 0xff00 , 0x0100 , 0xff00 ,
-+ 0x0200 , 0xff00 , 0xff00 , 0xff00 ,
-+ 0xff00 , 0xfe00 , 0x0000 , 0xff00 ,
-+ 0xfe00 , 0xff00 , 0xfd00 , 0x0000 ,
-+ 0xff00 , 0xfe00 , 0xff00 , 0xfc00 ,
-+ 0x0100 , 0xfd00 , 0xff00 , 0xff00 ,
-+ 0x0200 , 0xff00 , 0x0100 , 0xff00 ,
-+ 0xfc00 , 0x0300 , 0xff00 , 0x0200 ,
-+ 0xff00 , 0x0100 , 0xff00 , 0x0100 ,
-+ 0xff00 , 0xff00 , 0x0100 , 0xfe00 ,
-+ 0x0300 , 0xfc00 , 0x0100 , 0xff00 ,
-+ 0x0100 , 0x0100 , 0x0100 , 0xfc00 ,
-+ 0xff00 , 0x0100 , 0x0100 , 0xfe00 ,
-+ 0x0100 , 0xff00 , 0x0100 , 0xfc00 ,
-+ 0x0100 , 0x0200 , 0xff00 , 0x0100 ,
-+ 0xff00 , 0xff00 , 0x0200 , 0xfd00 ,
-+ 0xfe00 , 0x0100 , 0xff00 , 0x0100 ,
-+ 0xfe00 , 0x0100 , 0x0300 , 0xfe00 ,
-+ 0x0300 , 0xfe00 , 0xff00 , 0x0100 ,
-+ 0xff00 , 0x0200 , 0xfd00 , 0x0000 ,
-+ 0xff00 , 0x0200 , 0xff00 , 0x0200 ,
-+ 0xff00 , 0x0100 , 0x0000 , 0xff00 ,
-+ 0x0200 , 0x0100 , 0x0000 , 0xff00 ,
-+ 0x0100 , 0xfe00 , 0x0200 , 0xfe00 ,
-+ 0xfe00 , 0x0100 , 0xfe00 , 0x0100 ,
-+ 0xfd00 , 0xff00 , 0xff00 , 0xfe00 ,
-+ 0xff00 , 0xfc00 , 0x0100 , 0xfe00 ,
-+ 0x0100 , 0xff00 , 0xfe00 , 0xff00 ,
-+ 0xff00 , 0xfe00 , 0x0100 , 0xfe00 ,
-+ 0x0100 , 0xff00 , 0x0100 , 0xfe00 ,
-+ 0xff00 , 0x0200 , 0xfe00 , 0x0000 ,
-+ 0x0100 , 0x0200 , 0xff00 , 0x0200 ,
-+ 0xff00 , 0x0000 , 0x0100 , 0x0100 ,
-+ 0xff00 , 0x0200 , 0xfe00 , 0xff00 ,
-+ 0xff00 , 0xff00 , 0x0100 , 0x0000 ,
-+ 0xff00 , 0x0100 , 0xff00 , 0x0000 ,
-+ 0x0100 , 0xff00 , 0xfe00 , 0xff00 ,
-+ 0xff00 , 0x0100 , 0xff00 , 0x0100 ,
-+ 0xfe00 , 0xff00 , 0xff00 , 0xff00 ,
-+ 0xfe00 , 0xff00 , 0xff00 , 0x0100 ,
-+ 0xff00 , 0x0200 , 0xff00 , 0x0100 ,
-+ 0xff00 , 0xff00 };
-+
-+
-+unsigned short alarm_data[] = {
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x7fff , 0x7fff , 0x8000 , 0x8000 , // 9 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 0
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 1
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 2
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 3
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 4
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 5
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 6
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 7
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 8
-+ 0x7fff , 0x7fff , 0x7fff , 0x7fff , 0x8000 , 0x8000 , 0x8000 , 0x8000 , // 9 5
-+
-+};
-+
-+
-+
-+
-+
-+#define SHARP_BUZ_TOUCHSOUND 1
-+#define SHARP_BUZ_KEYSOUND 2
-+#define SHARP_BUZ_ALARM 11
-+#define SHARP_BUZZER_MAKESOUND 0x5680
-+
-+static int collie_ct_s16_buzzer(const u_char *userPtr, size_t userCount,
-+ u_char frame[], ssize_t *frameUsed,
-+ ssize_t frameLeft)
-+{
-+ ssize_t count, used;
-+ signed short *fp = (unsigned short *) &frame[*frameUsed];
-+ signed short *up = (unsigned short *) userPtr;
-+
-+ DPRINTK("Collie_ct_s16 begin\n");
-+
-+ used = count = (userCount < frameLeft) ? userCount/2 : frameLeft/4;
-+
-+ DPRINTK("Collie_ct_s16 begin count %d \n",count);
-+
-+ while (count > 0) {
-+ *fp++ = *up;
-+ *fp++ = *up++;
-+ count--;
-+ }
-+
-+ *frameUsed+=used*4;
-+ DPRINTK("Collie_ct_s16 exit\n");
-+ return used*2;
-+}
-+
-+
-+static ssize_t sq_write_buzzer(int soundid)
-+{
-+ const char * src;
-+ audio_stream_t *s = &output_stream;
-+ u_char *dest;
-+ ssize_t uUsed, bUsed, bLeft, uLeft, ret = 0;
-+
-+
-+ if ((collie_tc_status!=NA) && (collie_tc_status!=PLAY))
-+ return -EPERM;
-+
-+ collie_tc_status=PLAY;
-+
-+ if (!s->buffers && sq_allocate_buffers(s)) {
-+ return -ENOMEM;
-+ }
-+
-+
-+#ifdef CONFIG_PM
-+ /* Auto Power off cancel */
-+// autoPowerCancel = 0;
-+#endif
-+ DPRINTK("sq_write_buzzer: id:%d\n", soundid);
-+
-+ switch (soundid) {
-+ case SHARP_BUZ_TOUCHSOUND:
-+ src=tap_data;
-+ uLeft=176*2;
-+ break;
-+ case SHARP_BUZ_KEYSOUND:
-+ src=click_data;
-+ uLeft=360*2;
-+ break;
-+ case SHARP_BUZ_ALARM:
-+ src=alarm_data;
-+ uLeft=3072*2;
-+ break;
-+ default:
-+ return 0;
-+ }
-+ DPRINTK("sq_write_buzzer: uLeft=%d\n", uLeft);
-+
-+ collie_tc_mute_off();
-+ while (uLeft > 0) {
-+ audio_buf_t *b = s->buf;
-+
-+ ret = -ERESTARTSYS;
-+ if (down_interruptible(&b->sem)) {
-+ break;
-+ }
-+
-+ dest = b->start + b->size;
-+ bUsed = 0;
-+ bLeft = s->fragsize - b->size;
-+ uUsed = collie_ct_s16_buzzer(src, uLeft, dest, &bUsed, bLeft);
-+ cpu_cache_clean_invalidate_range((unsigned long)dest,
-+ (unsigned long)(dest+(audio_fragsize)), 0);
-+
-+ DPRINTK("back to sq_write_buzzer %p\n",dest);
-+
-+ if (uUsed < 0) {
-+ up(&b->sem);
-+ return -EFAULT;
-+ }
-+ src += uUsed;
-+ uLeft -= uUsed;
-+ b->size += bUsed;
-+
-+ if (b->size < s->fragsize) {
-+ up(&b->sem);
-+ break;
-+ }
-+
-+ /* Send current buffer to dma */
-+ sa1100_dma_queue_buffer(COLLIE_BUZZER_DMA_CHANNEL,
-+ (void *) b, b->dma_addr, b->size);
-+
-+ Collie_volume_set(4);
-+
-+ b->size = 0; /* indicate that the buffer has been sent */
-+ NEXT_BUF(s, buf);
-+ }
-+
-+ DPRINTK("sq_write_buzzer: return\n");
-+ return ret;
-+}
-+
-+
-+
-+
-+
-+
-+
-diff -Nuar linux-2.4.18/drivers/sound/collie_ssp.c linux-2.4.18p/drivers/sound/collie_ssp.c
---- linux-2.4.18/drivers/sound/collie_ssp.c 2003-05-13 11:18:37.000000000 +0200
-+++ linux-2.4.18p/drivers/sound/collie_ssp.c 2004-10-13 15:05:36.000000000 +0200
-@@ -9,6 +9,7 @@
- * I/F : Synchronous serial port (SSP) TI mode
- *
- * Copyright (C) 2001 SHARP
-+ * p.nis/dolOps messed around with it too!
- *
- * 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
-@@ -24,7 +25,18 @@
- * 23-Oct-2001 SHARP
- * tune hardware control method
- * 12-Nov-2001 Lineo Japan, Inc.
-- * 14-Feb-2003 Sharp Corporation 8bit , GETOSPACE
-+ *
-+ * 26-Dec-2002 getospace added, some unneeded things removed
-+ *
-+ * 28-Dec-2002 cut out old stuff, reorder stuff
-+ *
-+ * 04-Jan-2003 put in getospace from lineo's collie-tc35143.c
-+ * also added collie_record_on off, and exported these symbols
-+ *
-+ * 06-Jan-2003 if mixer ioctl SOUND_MIXER_READ_DEVMASK returns 0 as mask,
-+ * than the headphone(/mic) is not connected
-+ *
-+ *
- */
- #include <linux/module.h>
- #include <linux/sched.h>
-@@ -35,7 +47,7 @@
- #include <linux/fcntl.h>
- #include <linux/errno.h>
- #include <linux/mm.h>
--#include <linux/malloc.h>
-+#include <linux/slab.h>
- #include <linux/sound.h>
- #include <linux/init.h>
- #include <linux/delay.h>
-@@ -48,38 +60,30 @@
- #include <asm/uaccess.h>
- #include <asm/io.h>
- #include <asm/dma.h>
--#include <asm/ucb1200.h>
-
- #include <linux/soundcard.h>
- #include <asm/proc/cache.h>
-
--#include <asm/arch/gpio.h>
-+#include <asm/arch/hardware.h>
- #include <asm/arch/m62332.h>
- #include <asm/arch/tc35143.h>
-
- #undef DEBUG
--//#define DEBUG
- #ifdef DEBUG
- #define DPRINTK( x... ) printk( ##x )
- #else
- #define DPRINTK( x... )
- #endif
-
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0) || \
-- defined(CONFIG_COLLIE_TR1) || defined(CONFIG_COLLIE_DEV)
--#define COLLIE_TRY_ONE
--#else
--#undef COLLIE_TRY_ONE
--#endif
-+#define COLLIE_TRY_ONE
-
- #ifdef COLLIE_TRY_ONE
- #ifndef GPIO_REMOCON_ADC_SW
- #define GPIO_REMOCON_ADC_SW GPIO_GPIO(18)
- #endif
-
-+static int collie_rc_irq;
- static DECLARE_WAIT_QUEUE_HEAD(audio_on);
--
--
- static inline void collie_rc_set_int_mode(void)
- {
- GPSR = GPIO_REMOCON_ADC_SW;
-@@ -91,14 +95,12 @@
- }
- #endif
-
--
- int collie_dmasound_irq = -1;
--#define COLLIE_SOUND_DMA_CHANNEL (collie_dmasound_irq)
-
-+#define COLLIE_SOUND_DMA_CHANNEL (collie_dmasound_irq)
- #define SND_NDEVS 256 /* Number of supported devices */
- #define SND_DEV_CTL 0 /* Control port /dev/mixer */
--#define SND_DEV_SEQ 1 /* Sequencer output /dev/sequencer (FM
-- synthesizer and MIDI output) */
-+#define SND_DEV_SEQ 1 /* Sequencer output /dev/sequencer (FM synthesizer and MIDI output) */
- #define SND_DEV_MIDIN 2 /* Raw midi access */
- #define SND_DEV_DSP 3 /* Digitized voice /dev/dsp */
- #define SND_DEV_AUDIO 4 /* Sparc compatible /dev/audio */
-@@ -121,142 +123,25 @@
- #endif
-
- /*** Some declarations ***********************************************/
--#define DMASND_TT 1
--#define DMASND_FALCON 2
--#define DMASND_AMIGA 3
--#define DMASND_AWACS 4
--#define DMASND_IRIS 5
--#define DMASND_COLLIE 6
-
--#define COLLIE_WAIT_AMP_ON 1 /* 10ms */
-+
- #define COLLIE_WAIT_LCM_ACC_XEN 50 /* 500ms */
--#ifdef MODULE
--static int catchRadius = 0;
--#endif
-+
- static int collie_amp_init = 0;
- static int collie_dac_init = 0;
--static int collie_op_shdn_on = 0;
- static int collie_resume = 0;
- static int collie_hard_mute = 1;
- static int collie_soft_mute = 1;
- static int collie_volume = 0;
-+int collie_recording=0;
-+static int playing=0;
-+static int headphone;
-
--int collie_buzzer_volume = 0;
--
--#if 1
--static DECLARE_WAIT_QUEUE_HEAD(open_queue);
-+#define AUDIO_NBFRAGS_DEFAULT 64
-+#define AUDIO_FRAGSIZE_DEFAULT 4096
-
--#define SIGNAL_RECEIVED (signal_pending(current))
--#define ONE_SECOND HZ /* in jiffies (100ths of a second) */
--#define SLEEP(queue, time_limit) \
-- interruptible_sleep_on_timeout((wait_queue_head_t*)&queue, (time_limit));
--#define WAKE_UP(queue) (wake_up_interruptible((wait_queue_head_t*)&queue))
--#endif
--
--#define AUDIO_NBFRAGS_DEFAULT 8
--#define AUDIO_FRAGSIZE_DEFAULT 8192
--
--
--#define TRACE 0
--#if TRACE
--#define TRACE_ON 1
--#define TRACE_SEM 0
--#define TRACE_SENDDATA 0
--#define TRACE_PM 1
--#define TRACE_AMP 1
--#define TRACE_DAC 1
--#define TRACE_OP_SHDN 1
--#define TRACE_WRITE 1
--#define TRACE_MUTE 1
--#define TRACE_CLOCK 1
--#define TRACE_PAIF 1
--#define TRACE_SSP 1
--#define TRACE_VOLUME 1
--#define TRACE_MIC 1
--#define TRACE_INTERRUPT 0
--int cLevel = 0;
--char *pLevel[16] = {
-- /* 0 */"",
-- /* 1 */" ",
-- /* 2 */" ",
-- /* 3 */" ",
-- /* 4 */" ",
-- /* 5 */" ",
-- /* 6 */" ",
-- /* 7 */" ",
-- /* 8 */" ",
-- /* 9 */" ",
-- /* 10 */" ",
-- /* 11 */" ",
-- /* 12 */" ",
-- /* 13 */" ",
-- /* 14 */" ",
-- /* 15 */" "
--};
--char *
--indent(int level)
--{
-- int i;
-- return (level < 16 ) ? pLevel[level] : pLevel[15];
--}
--
--#define P_ID (current->tgid)
--#define ENTER(f,fn) {if(f)printk("%d:%s+[%d]%s\n",jiffies,indent(cLevel),P_ID,(fn));cLevel++;}
--#define LEAVE(f,fn) {cLevel--;if(f>1)printk("%d:%s-[%d]%s\n",jiffies,indent(cLevel),P_ID,(fn));}
--#else /* ! TRACE */
--#define ENTER(f,fn)
--#define LEAVE(f,fn)
--#endif /* end TRACE */
-
--/*
-- * DAC power management
-- */
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0) || \
-- defined(CONFIG_COLLIE_TR1) || defined(CONFIG_COLLIE_DEV)
--#define DAC_OFF_WITH_DEVICE_OFF 1
--#undef HARD_MUTE_CTRL_DISABLE
--#else
--#undef DAC_OFF_WITH_DEVICE_OFF
- #undef HARD_MUTE_CTRL_DISABLE
--#endif
--
--
--#define TRY_DELAY_OFF
--#ifdef TRY_DELAY_OFF /* H.Hayami SHARP 2001.12.19 */
--static DECLARE_WAIT_QUEUE_HEAD(delay_off);
--struct semaphore df_sem;
--/*
-- * delay execution
-- */
--static unsigned int DelayedFlag = 0;
--#define DELAY_DAC_OFF 0x1
--#define DELAY_HARD_MUTE_ON 0x2
--
--static inline void ResetDelayAll(void)
--{
-- DelayedFlag = 0;
--}
--
--static inline int isDelayedExist(void)
--{
-- return DelayedFlag;
--}
--
--static inline void SetDelay(unsigned int flag)
--{
-- DelayedFlag |= flag;
--}
--
--static inline void ResetDelay(unsigned int flag)
--{
-- DelayedFlag &= ~flag;
--}
--
--static inline unsigned int isDelayed(unsigned int flag)
--{
-- return DelayedFlag & flag;
--}
--#endif
-
- /*
- * Buffer Management
-@@ -268,6 +153,7 @@
- dma_addr_t dma_addr; /* physical buffer address */
- struct semaphore sem; /* down before touching the buffer */
- int master; /* master owner for buffer allocation */
-+ u_int idx; /* buffer index, so that we know which buffer was sent last*/
- } audio_buf_t;
-
- typedef struct {
-@@ -291,16 +177,6 @@
-
- static volatile int audio_wr_refcount; /* nbr of concurrent open() for playback */
-
--static ssize_t (*ct_func)(const u_char *, size_t, u_char *, ssize_t *, ssize_t) = NULL;
--
--#ifdef MODULE
--MODULE_PARM(catchRadius, "i");
--#endif
--MODULE_PARM(numBufs, "i");
--MODULE_PARM(bufSize, "i");
--
--#define min(x, y) ((x) < (y) ? (x) : (y))
--
- #define IOCTL_IN(arg, ret) \
- do { int error = get_user(ret, (int *)(arg)); \
- if (error) return error; \
-@@ -310,11 +186,7 @@
- /*
- * SA1110 GPIO (17)
- */
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0)
--#define COLLIE_GPIO_OPSHDN GPIO_GPIO (17) /* AMP contorol */
--#else /* !CONFIG_COLLIE_TS && !CONFIG_COLLIE_TR0 */
- #define COLLIE_GPIO_MIC GPIO_GPIO (17) /* MIC contorol */
--#endif /* !CONFIG_COLLIE_TS && !CONFIG_COLLIE_TR0 */
-
- /*
- * DAC setup data
-@@ -352,122 +224,11 @@
- ( LCM_ACC_XSEL1 | LCM_ACC_CLKSEL101 ) ,
- };
-
-+/*** "Translations" ************************************************************/
-
--/* 16 bit mu-law */
--
--static short ulaw2dma16[] = {
-- -32124, -31100, -30076, -29052, -28028, -27004, -25980, -24956,
-- -23932, -22908, -21884, -20860, -19836, -18812, -17788, -16764,
-- -15996, -15484, -14972, -14460, -13948, -13436, -12924, -12412,
-- -11900, -11388, -10876, -10364, -9852, -9340, -8828, -8316,
-- -7932, -7676, -7420, -7164, -6908, -6652, -6396, -6140,
-- -5884, -5628, -5372, -5116, -4860, -4604, -4348, -4092,
-- -3900, -3772, -3644, -3516, -3388, -3260, -3132, -3004,
-- -2876, -2748, -2620, -2492, -2364, -2236, -2108, -1980,
-- -1884, -1820, -1756, -1692, -1628, -1564, -1500, -1436,
-- -1372, -1308, -1244, -1180, -1116, -1052, -988, -924,
-- -876, -844, -812, -780, -748, -716, -684, -652,
-- -620, -588, -556, -524, -492, -460, -428, -396,
-- -372, -356, -340, -324, -308, -292, -276, -260,
-- -244, -228, -212, -196, -180, -164, -148, -132,
-- -120, -112, -104, -96, -88, -80, -72, -64,
-- -56, -48, -40, -32, -24, -16, -8, 0,
-- 32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956,
-- 23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764,
-- 15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412,
-- 11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316,
-- 7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140,
-- 5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092,
-- 3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004,
-- 2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980,
-- 1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436,
-- 1372, 1308, 1244, 1180, 1116, 1052, 988, 924,
-- 876, 844, 812, 780, 748, 716, 684, 652,
-- 620, 588, 556, 524, 492, 460, 428, 396,
-- 372, 356, 340, 324, 308, 292, 276, 260,
-- 244, 228, 212, 196, 180, 164, 148, 132,
-- 120, 112, 104, 96, 88, 80, 72, 64,
-- 56, 48, 40, 32, 24, 16, 8, 0,
--};
--
--/* 16 bit A-law */
--
--static short alaw2dma16[] = {
-- -5504, -5248, -6016, -5760, -4480, -4224, -4992, -4736,
-- -7552, -7296, -8064, -7808, -6528, -6272, -7040, -6784,
-- -2752, -2624, -3008, -2880, -2240, -2112, -2496, -2368,
-- -3776, -3648, -4032, -3904, -3264, -3136, -3520, -3392,
-- -22016, -20992, -24064, -23040, -17920, -16896, -19968, -18944,
-- -30208, -29184, -32256, -31232, -26112, -25088, -28160, -27136,
-- -11008, -10496, -12032, -11520, -8960, -8448, -9984, -9472,
-- -15104, -14592, -16128, -15616, -13056, -12544, -14080, -13568,
-- -344, -328, -376, -360, -280, -264, -312, -296,
-- -472, -456, -504, -488, -408, -392, -440, -424,
-- -88, -72, -120, -104, -24, -8, -56, -40,
-- -216, -200, -248, -232, -152, -136, -184, -168,
-- -1376, -1312, -1504, -1440, -1120, -1056, -1248, -1184,
-- -1888, -1824, -2016, -1952, -1632, -1568, -1760, -1696,
-- -688, -656, -752, -720, -560, -528, -624, -592,
-- -944, -912, -1008, -976, -816, -784, -880, -848,
-- 5504, 5248, 6016, 5760, 4480, 4224, 4992, 4736,
-- 7552, 7296, 8064, 7808, 6528, 6272, 7040, 6784,
-- 2752, 2624, 3008, 2880, 2240, 2112, 2496, 2368,
-- 3776, 3648, 4032, 3904, 3264, 3136, 3520, 3392,
-- 22016, 20992, 24064, 23040, 17920, 16896, 19968, 18944,
-- 30208, 29184, 32256, 31232, 26112, 25088, 28160, 27136,
-- 11008, 10496, 12032, 11520, 8960, 8448, 9984, 9472,
-- 15104, 14592, 16128, 15616, 13056, 12544, 14080, 13568,
-- 344, 328, 376, 360, 280, 264, 312, 296,
-- 472, 456, 504, 488, 408, 392, 440, 424,
-- 88, 72, 120, 104, 24, 8, 56, 40,
-- 216, 200, 248, 232, 152, 136, 184, 168,
-- 1376, 1312, 1504, 1440, 1120, 1056, 1248, 1184,
-- 1888, 1824, 2016, 1952, 1632, 1568, 1760, 1696,
-- 688, 656, 752, 720, 560, 528, 624, 592,
-- 944, 912, 1008, 976, 816, 784, 880, 848,
--};
--
--
--
--/*** Translations ************************************************************/
--
--static ssize_t collie_ct_law(const u_char *userPtr, size_t userCount,
-- u_char frame[], ssize_t *frameUsed,
-- ssize_t frameLeft);
--static ssize_t collie_ct_s8(const u_char *userPtr, size_t userCount,
-- u_char frame[], ssize_t *frameUsed,
-- ssize_t frameLeft);
--static ssize_t collie_ct_u8(const u_char *userPtr, size_t userCount,
-- u_char frame[], ssize_t *frameUsed,
-- ssize_t frameLeft);
- static ssize_t collie_ct_s16(const u_char *userPtr, size_t userCount,
- u_char frame[], ssize_t *frameUsed,
- ssize_t frameLeft);
--static ssize_t collie_ct_u16(const u_char *userPtr, size_t userCount,
-- u_char frame[], ssize_t *frameUsed,
-- ssize_t frameLeft);
--
--/*** Machine definitions *****************************************************/
--
--
--typedef struct {
-- int type;
-- void *(*dma_alloc)(unsigned int, int);
-- void (*dma_free)(void *, unsigned int);
-- int (*irqinit)(void);
--#ifdef MODULE
-- void (*irqcleanup)(void);
--#endif /* MODULE */
-- void (*init)(void);
-- void (*silence)(void);
-- int (*setFormat)(int);
-- int (*setVolume)(int);
-- int (*setBass)(int);
-- int (*setTreble)(int);
-- int (*setGain)(int);
-- void (*play)(void);
--} MACHINE;
--
-
- /*** Low level stuff *********************************************************/
-
-@@ -477,71 +238,28 @@
- int stereo; /* 0 = mono, 1 = stereo */
- int size; /* 8/16 bit*/
- int speed; /* speed */
-+ int volume;
- } SETTINGS;
-
--typedef struct {
-- ssize_t (*ct_ulaw)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-- ssize_t (*ct_alaw)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-- ssize_t (*ct_s8)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-- ssize_t (*ct_u8)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-- ssize_t (*ct_s16be)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-- ssize_t (*ct_u16be)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-- ssize_t (*ct_s16le)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
-- ssize_t (*ct_u16le)(const u_char *, size_t, u_char *, ssize_t *, ssize_t);
--} TRANS;
--
--struct sound_settings {
-- MACHINE mach; /* machine dependent things */
-- SETTINGS hard; /* hardware settings */
-- SETTINGS soft; /* software settings */
-- SETTINGS dsp; /* /dev/dsp default settings */
-- TRANS *trans; /* supported translations */
-- int volume_left; /* volume (range is machine dependent) */
-- int volume_right;
-- int bass; /* tone (range is machine dependent) */
-- int treble;
-- int gain;
-- int minDev; /* minor device number currently open */
--};
--
--static struct sound_settings sound;
-+static SETTINGS sound;
-
- #ifdef CONFIG_PM
--extern int autoPowerCancel;
-+//extern int autoPowerCancel;
- #endif
--int collie_main_volume;
--extern int collie_under_recording; /* collie_buzzer.c */
--#define COLLE_RECORDING (collie_under_recording)
-
- static void Collie_Set_Volume(int volume);
- static int Collie_Get_Volume(void);
--static void Collie_disable_sound(void);
--#ifdef CONFIG_PM
--#if 0
--static void Collie_clock_stop(void);
--static void Collie_FS8KLPF_stop(void);
--#endif
--#endif
- static int CollieIrqInit(void);
- static int CollieGetSamp(void);
--static void Collie_OP_SHDN_on(void);
--static void Collie_OP_SHDN_off(void);
--static void Collie_FS8KLPF_start(void);
--#ifdef MODULE
--static void CollieIrqCleanUp(void);
--#endif /* MODULE */
--static void CollieSilence(void);
- static void Collie_DAC_sendword(int);
--static void CollieInit(void);
- static int CollieSetFormat(int format);
- static void Collie_sq_interrupt(void*, int);
- static int sq_allocate_buffers(audio_stream_t*);
- static void sq_release_buffers(audio_stream_t*);
-+static inline void Collie_volume_init(void);
-+static void Collie_volume_set(int);
-
- /*** Mid level stuff *********************************************************/
--static void sound_silence(void);
--static void sound_init(void);
--static int sound_set_format(int format);
- static int sound_set_speed(int speed);
- static int sound_set_stereo(int stereo);
-
-@@ -572,468 +290,122 @@
- static long long sound_lseek(struct file *file, long long offset, int orig);
- static inline int ioctl_return(int *addr, int value)
- {
-- ENTER(TRACE_ON,"ioctl_return");
- if (value < 0) {
-- LEAVE(TRACE_ON,"ioctl_return");
- return(value);
- }
--
-- LEAVE(TRACE_ON,"ioctl_return");
- return put_user(value, addr)? -EFAULT: 0;
- }
-
--
--/*** Config & Setup **********************************************************/
--
--
--void dmasound_init(void);
--void dmasound_setup(char *str, int *ints);
--
--
--/*** Translations ************************************************************/
--
--
--/* ++TeSche: radically changed for new expanding purposes...
-- *
-- * These two routines now deal with copying/expanding/translating the samples
-- * from user space into our buffer at the right frequency. They take care about
-- * how much data there's actually to read, how much buffer space there is and
-- * to convert samples into the right frequency/encoding. They will only work on
-- * complete samples so it may happen they leave some bytes in the input stream
-- * if the user didn't write a multiple of the current sample size. They both
-- * return the number of bytes they've used from both streams so you may detect
-- * such a situation. Luckily all programs should be able to cope with that.
-- *
-- * I think I've optimized anything as far as one can do in plain C, all
-- * variables should fit in registers and the loops are really short. There's
-- * one loop for every possible situation. Writing a more generalized and thus
-- * parameterized loop would only produce slower code. Feel free to optimize
-- * this in assembler if you like. :)
-- *
-- * I think these routines belong here because they're not yet really hardware
-- * independent, especially the fact that the Falcon can play 16bit samples
-- * only in stereo is hardcoded in both of them!
-- *
-- * ++geert: split in even more functions (one per format)
-- */
--
--static ssize_t collie_ct_law(const u_char *userPtr, size_t userCount,
-- u_char frame[], ssize_t *frameUsed,
-- ssize_t frameLeft)
--{
-- short *table = sound.soft.format == AFMT_MU_LAW ? ulaw2dma16: alaw2dma16;
-- ssize_t count, used;
-- short *p = (short *) &frame[*frameUsed];
-- int val, stereo = sound.soft.stereo;
--
-- ENTER(TRACE_ON,"collie_ct_law");
-- frameLeft >>= 2;
-- if (stereo)
-- userCount >>= 1;
-- used = count = min(userCount, frameLeft);
-- if (!COLLE_RECORDING) {
-- while (count > 0) {
-- u_char data;
-- if (get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_law");
-- return -EFAULT;
-- }
-- val = table[data];
-- *p++ = val; /* Left Ch. */
-- if (stereo) {
-- if (get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_law");
-- return -EFAULT;
-- }
-- val = table[data];
-- }
-- *p++ = val; /* Right Ch. */
-- count--;
-- }
-- } else {
-- while (count > 0) {
-- u_char data;
-- int ave;
-- if (get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_law");
-- return -EFAULT;
-- }
-- val = table[data];
-- ave = val; /* Left Ch. */
-- if (stereo) {
-- if (get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_law");
-- return -EFAULT;
-- }
-- val = table[data];
-- }
-- ave += val; /* Right Ch. */
-- ave >>= 1;
-- *p++ = 0; /* Left Ch. */
-- *p++ = ave; /* Right Ch. */
-- count--;
-- }
-- }
-- *frameUsed += used * 4;
-- LEAVE(TRACE_ON,"collie_ct_law");
-- return stereo? used * 2: used;
--}
--
--
--static ssize_t collie_ct_s8(const u_char *userPtr, size_t userCount,
-- u_char frame[], ssize_t *frameUsed,
-- ssize_t frameLeft)
--{
-- ssize_t count, used;
-- short *p = (short *) &frame[*frameUsed];
-- int stereo = sound.soft.stereo;
-- short val;
--
-- ENTER(TRACE_ON,"collie_ct_s8");
-- frameLeft >>= 2;
-- if (stereo)
-- userCount >>= 1;
-- used = count = min(userCount, frameLeft);
-- if (!COLLE_RECORDING) {
-- while (count > 0) {
-- u_char data;
--
-- if (get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_s8");
-- return -EFAULT;
-- }
-- val = ( data - 0x80 ) << 8;
-- *p++ = val; /* Left Ch. */
-- if ( stereo ) {
-- if ( get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_s8");
-- return -EFAULT;
-- }
-- val = ( data - 0x80 ) << 8;
-- }
-- *p++ = val; /* Right Ch. */
-- count--;
-- }
-- } else {
-- while (count > 0) {
-- u_char data;
-- int ave;
--
-- if (get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_s8");
-- return -EFAULT;
-- }
-- val = ( data - 0x80 ) << 8;
-- ave = val; /* Left Ch. */
-- if ( stereo ) {
-- if ( get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_s8");
-- return -EFAULT;
-- }
-- val = ( data - 0x80 ) << 8;
-- }
-- ave += val; /* Right Ch. */
-- ave >>= 1;
-- *p++ = 0; /* Left Ch. */
-- *p++ = ave; /* Right Ch. */
-- count--;
-- }
-- }
-- *frameUsed += used * 4;
-- LEAVE(TRACE_ON,"collie_ct_s8");
-- return stereo? used * 2: used;
--}
--
--
--static ssize_t collie_ct_u8(const u_char *userPtr, size_t userCount,
-- u_char frame[], ssize_t *frameUsed,
-- ssize_t frameLeft)
-+static void wait_ms(int ten_ms)
- {
-- ssize_t count, used;
-- short *p = (short *) &frame[*frameUsed];
-- int stereo = sound.soft.stereo;
-- short val;
--
-- ENTER(TRACE_ON,"collie_ct_u8");
-- frameLeft >>= 2;
-- if (stereo)
-- userCount >>= 1;
-- used = count = min(userCount, frameLeft);
-- if (!COLLE_RECORDING) {
-- while (count > 0) {
-- u_char data;
--
-- if (get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_u8");
-- return -EFAULT;
-- }
-- val = data;
-- *p++ = (val ^ 0x80) << 8; /* Left Ch. */
-- if ( stereo ) {
-- if ( get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_u8");
-- return -EFAULT;
-- }
-- val = data;
-- }
-- *p++ = (val ^ 0x80) << 8; /* Right Ch. */
-- count--;
-- }
-- } else {
-- while (count > 0) {
-- u_char data;
-- int ave;
--
-- if (get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_u8");
-- return -EFAULT;
-- }
-- val = data;
-- ave = (val ^ 0x80) << 8; /* Left Ch. */
-- if ( stereo ) {
-- if ( get_user(data, userPtr++)) {
-- LEAVE(TRACE_ON,"collie_ct_u8");
-- return -EFAULT;
-- }
-- val = data;
-- }
-- ave += (val ^ 0x80) << 8; /* Right Ch. */
-- ave >>= 1;
-- *p++ = 0; /* Left Ch. */
-- *p++ = ave; /* Right Ch. */
-- count--;
-- }
-- }
-- *frameUsed += used * 4;
-- LEAVE(TRACE_ON,"collie_ct_u8");
-- return stereo? used * 2: used;
-+ schedule_timeout(ten_ms);
- }
-
-+/*** Translation ************************************************************/
-
- static ssize_t collie_ct_s16(const u_char *userPtr, size_t userCount,
- u_char frame[], ssize_t *frameUsed,
- ssize_t frameLeft)
- {
- ssize_t count, used;
-- int stereo = sound.soft.stereo;
- short *fp = (short *) &frame[*frameUsed];
-+ short *up = (short *) userPtr;
-
-- ENTER(TRACE_ON,"collie_ct_s16");
- frameLeft >>= 2;
-- userCount >>= (stereo? 2: 1);
-- used = count = min(userCount, frameLeft);
-- if (!stereo) {
-- short *up = (short *) userPtr;
-- while (count > 0) {
-- short data;
-- if (get_user(data, up++)) {
-- LEAVE(TRACE_ON,"collie_ct_s16");
-- return -EFAULT;
-- }
-- *fp++ = (!COLLE_RECORDING) ? data : 0; /* Left Ch. */
-- *fp++ = data;
-- count--;
-+ userCount >>= 2;
-+ used = count = (userCount < frameLeft) ? userCount : frameLeft;
-+
-+ while (count > 0) {
-+
-+ short data;
-+ if (get_user(data, up++)) {
-+ return -EFAULT;
- }
-- } else {
-- short *up = (short *) userPtr;
-- while (count > 0) {
-- short data;
-- short temp;
-- if (get_user(data, up++)) {
-- LEAVE(TRACE_ON,"collie_ct_s16");
-- return -EFAULT;
-- }
-- if (get_user(temp, up++)) {
-- LEAVE(TRACE_ON,"collie_ct_s16");
-- return -EFAULT;
-- }
-- if (!COLLE_RECORDING) {
-- *fp++ = data; /* Left Ch. */
-- *fp++ = temp; /* Right Ch. */
-- } else {
-- data >>= 1;
-- data += (temp >> 1);
-- *fp++ = 0; /* Left Ch. */
-- *fp++ = data; /* Right Ch. */
-- }
-- count--;
-+ if (!collie_recording) *fp++ = data;
-+ else *fp++=0;
-+
-+ if (get_user(data, up++)) {
-+ return -EFAULT;
- }
-+ *fp++ = data;
-+ count--;
- }
-+
- *frameUsed += used * 4;
-- LEAVE(TRACE_ON,"collie_ct_s16");
-- return stereo? used * 4: used * 2;
-+ return used * 4;
- }
-
--static ssize_t collie_ct_u16(const u_char *userPtr, size_t userCount,
-- u_char frame[], ssize_t *frameUsed,
-- ssize_t frameLeft)
--{
-- ssize_t count, used;
-- int mask = (sound.soft.format == AFMT_U16_LE? 0x0080: 0x8000);
-- int stereo = sound.soft.stereo;
-- short *fp = (short *) &frame[*frameUsed];
-- short *up = (short *) userPtr;
-+/*** HARDWARE dependent stuff *********************************************************/
-
-- ENTER(TRACE_ON,"collie_ct_u16");
-- frameLeft >>= 2;
-- userCount >>= (stereo? 2: 1);
-- used = count = min(userCount, frameLeft);
-- if (!COLLE_RECORDING) {
-- while (count > 0) {
-- int data;
-- int temp;
-- if (get_user(data, up++)) {
-- LEAVE(TRACE_ON,"collie_ct_u16");
-- return -EFAULT;
-- }
-- data ^= mask;
-- *fp++ = data; /* Left Ch. */
-- if (stereo) {
-- if (get_user(temp, up++)) {
-- LEAVE(TRACE_ON,"collie_ct_u16");
-- return -EFAULT;
-- }
-- temp ^= mask;
-- data = temp;
-- data ^= mask;
-- }
-- *fp++ = data; /* Right Ch. */
-- count--;
-- }
-+static inline void Collie_DAC_sendbit(int bit_data)
-+{
-+ if (bit_data & 1) {
-+ LCM_GPO |= (LCM_GPIO_DAC_SDATA);
- } else {
-- while (count > 0) {
-- int data;
-- int temp;
-- int ave;
-- if (get_user(data, up++)) {
-- LEAVE(TRACE_ON,"collie_ct_u16");
-- return -EFAULT;
-- }
-- data ^= mask;
-- ave = data; /* Left Ch. */
-- if (stereo) {
-- if (get_user(temp, up++)) {
-- LEAVE(TRACE_ON,"collie_ct_u16");
-- return -EFAULT;
-- }
-- temp ^= mask;
-- data = temp;
-- data ^= mask;
-- }
-- ave += data;
-- ave >>= 1;
-- *fp++ = 0; /* Left Ch. */
-- *fp++ = ave; /* Right Ch. */
-- count--;
-- }
-+ LCM_GPO &= ~(LCM_GPIO_DAC_SDATA);
- }
-- *frameUsed += used * 4;
-- LEAVE(TRACE_ON,"collie_ct_u16");
-- return stereo? used * 4: used * 2;
--}
-
--static TRANS transCollie = {
-- collie_ct_law, collie_ct_law, collie_ct_s8, collie_ct_u8,
-- collie_ct_s16, collie_ct_u16, collie_ct_s16, collie_ct_u16
--};
-+ udelay(1);
-+ LCM_GPO |= (LCM_GPIO_DAC_SCK);
-
--/*** Low level stuff *********************************************************/
-+ udelay(1);
-+ LCM_GPO &= ~(LCM_GPIO_DAC_SCK);
-+ udelay(1);
-+ LCM_GPO &= ~(LCM_GPIO_DAC_SDATA);
-+ udelay(1);
-+}
-
--static void Collie_Set_Volume(int volume)
-+static void Collie_DAC_sendword(int data)
- {
-- ENTER(TRACE_ON,"Collie_Set_Volume");
--
-- sound.volume_left = volume & 0xff;
-- if ( sound.volume_left > 100 ) sound.volume_left = 100;
--
-- collie_main_volume = sound.volume_left;
--
-- sound.volume_right = ( volume & 0xff00 >> 8);
-- if ( sound.volume_right > 100 ) sound.volume_right = 100;
-- LEAVE(TRACE_ON,"Collie_Set_Volume");
-+ int i;
-
-- collie_buzzer_volume = sound.volume_right;
-+#if defined(CONFIG_COLLIE_PCM1741)
-+
-+ LCM_GPO &= ~(LCM_GPIO_DAC_SCK);
-+ udelay(1);
-+ LCM_GPO |= (LCM_GPIO_DAC_SLOAD);
-+ udelay(1);
-
--}
-+ for (i = 0; i < 16; i++)
-+ Collie_DAC_sendbit(data >> (15 - i));
-
-+ LCM_GPO &= ~(LCM_GPIO_DAC_SLOAD);
-+ udelay(2);
-
--static int Collie_Get_Volume(void)
--{
-- ENTER(TRACE_ON,"Collie_Get_Volume");
-- LEAVE(TRACE_ON,"Collie_Get_Volume");
-- return ( sound.volume_right << 8 | sound.volume_left );
--}
-+#elif defined(CONFIG_COLLIE_PCM1717)
-+
-+ LCM_GPO &= ~(LCM_GPIO_DAC_SLOAD);
-+ udelay(1000);
-+ LCM_GPO |= (LCM_GPIO_DAC_SLOAD);
-+ udelay(1000);
-+ LCM_GPO &= ~(LCM_GPIO_DAC_SCK);
-+ udelay(1000);
-
--static void wait_ms(int ten_ms)
--{
-- ENTER(TRACE_ON,"wait_ms");
-- LEAVE(TRACE_ON,"wait_ms");
-- schedule_timeout(ten_ms);
--}
-+ for (i = 0; i < 16; i++)
-+ Collie_DAC_sendbit(data >> (15 - i));
-
--static inline void Collie_AMP_off(void)
--{
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0)
-- ENTER(TRACE_AMP,"Collie_AMP_off");
--#if 0 /* OBSOLETED: power controled by only OP_SHDN */
-- /* Set up TC35143 GPIO I/O Direction (GPIO4 output mode) */
-- ucb1200_set_io_direction(TC35143_GPIO_AMP_ON,
-- TC35143_IODIR_OUTPUT);
-- /* AMP OFF */
-- ucb1200_set_io(TC35143_GPIO_AMP_ON,
-- TC35143_IODAT_LOW);
-- collie_amp_init = 0;
--#endif /* 0 */
-- LEAVE(TRACE_AMP,"Collie_AMP_off");
--#endif /* CONFIG_COLLIE_TS || CONFIG_COLLIE_TR0 */
--}
--
--static inline void Collie_AMP_on(void)
--{
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0)
-- ENTER(TRACE_AMP,"Collie_AMP_on");
--// if (!collie_amp_init) {
-- /* Set up TC35143 GPIO I/O Direction (GPIO4 output mode) */
-- ucb1200_set_io_direction(TC35143_GPIO_AMP_ON,
-- TC35143_IODIR_OUTPUT);
-- /* AMP ON */
-- ucb1200_set_io(TC35143_GPIO_AMP_ON, TC35143_IODAT_HIGH);
-- SCP_REG_GPWR |= SCP_AMP_ON;
-- wait_ms(COLLIE_WAIT_AMP_ON);
-- collie_amp_init = 1;
--// }
-- LEAVE(TRACE_AMP,"Collie_AMP_on");
--#endif /* CONFIG_COLLIE_TS || CONFIG_COLLIE_TR0 */
-+ LCM_GPO &= ~(LCM_GPIO_DAC_SLOAD);
-+ udelay(1000);
-+ LCM_GPO |= (LCM_GPIO_DAC_SLOAD);
-+ udelay(1000);
-+ LCM_GPO &= ~(LCM_GPIO_DAC_SLOAD);
-+ udelay(1000);
-+#endif
- }
-
--static inline void Collie_AMP_init(void)
--{
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0)
-- ENTER(TRACE_AMP,"Collie_AMP_init");
-- Collie_AMP_off();
-- LEAVE(TRACE_AMP,"Collie_AMP_init");
--#endif /* CONFIG_COLLIE_TS || CONFIG_COLLIE_TR0 */
--}
-
- static inline void Collie_DAC_off(void)
- {
-- ENTER(TRACE_DAC,"Collie_DAC_off");
-- if (!COLLE_RECORDING) {
-- /* DAC OFF */
-- LCM_GPD &= ~(LCM_GPIO_DAC_ON); /* set up output */
-- LCM_GPO &= ~(LCM_GPIO_DAC_ON);
--
-- /* LoCoMo GPIO disable */
-- LCM_GPE &= ~(LCM_GPIO_DAC_ON);
-- collie_dac_init = 0;
-- }
-- LEAVE(TRACE_DAC,"Collie_DAC_off");
-+ /* DAC OFF */
-+ LCM_GPD &= ~(LCM_GPIO_DAC_ON); /* set up output */
-+ LCM_GPO &= ~(LCM_GPIO_DAC_ON);
-+ /* LoCoMo GPIO disable */
-+ LCM_GPE &= ~(LCM_GPIO_DAC_ON);
-+ collie_dac_init = 0;
- }
-
- static inline void Collie_DAC_on(void)
- {
-- ENTER(TRACE_DAC,"Collie_DAC_on");
--// if (!collie_dac_init) {
- if (!(LCM_GPO & LCM_GPIO_DAC_ON)) {
- /* LoCoMo GPIO enable */
- LCM_GPE &= ~LCM_GPIO_DAC_ON;
-@@ -1049,24 +421,10 @@
- schedule();
- }
- }
--// }
-- LEAVE(TRACE_DAC,"Collie_DAC_on");
--}
--
--#ifdef TRY_DELAY_OFF /* H.Hayami SHARP */
--static inline void Collie_DAC_delay_off(void)
--{
-- ENTER(TRACE_DAC,"Collie_DAC_deleay_off");
-- down(&df_sem);
-- SetDelay(DELAY_DAC_OFF);
-- up(&df_sem);
-- LEAVE(TRACE_DAC,"Collie_DAC_delay_off");
- }
--#endif
-
- static inline void Collie_DAC_init(void)
- {
-- ENTER(TRACE_DAC,"Collie_DAC_init");
- /* LoCoMo GPIO enable */
- LCM_GPE &=
- ~(LCM_GPIO_DAC_SDATA | LCM_GPIO_DAC_SCK | LCM_GPIO_DAC_SLOAD);
-@@ -1075,7 +433,6 @@
- ~(LCM_GPIO_DAC_SDATA | LCM_GPIO_DAC_SCK | LCM_GPIO_DAC_SLOAD);
-
- #if defined(CONFIG_COLLIE_PCM1741)
--
- Collie_DAC_sendword(DAC_REG16_SetupData); /* register16 */
- Collie_DAC_sendword(DAC_REG17_SetupData); /* register17 */
- Collie_DAC_sendword(DAC_REG18_SetupData); /* register18 */
-@@ -1083,78 +440,53 @@
- Collie_DAC_sendword(DAC_REG20_SetupData); /* register20 */
- //// Collie_DAC_sendword(DAC_REG21_SetupData); /* register21 */
- Collie_DAC_sendword(DAC_REG22_SetupData); /* register22 */
--
- #elif defined(CONFIG_COLLIE_PCM1717)
--
- Collie_DAC_sendword(DAC_MODE0_SetupData); /* MODE0 */
- Collie_DAC_sendword(DAC_MODE1_SetupData); /* MODE1 */
- Collie_DAC_sendword(DAC_MODE2_SetupData); /* MODE2 */
- Collie_DAC_sendword(DAC_MODE3_SetupData); /* MODE3 */
--
- #endif
--
- /* LoCoMo GPIO disable */
- LCM_GPE &=
- ~(LCM_GPIO_DAC_SDATA | LCM_GPIO_DAC_SCK | LCM_GPIO_DAC_SLOAD);
-- LEAVE(TRACE_DAC,"Collie_DAC_init");
- }
-
- static inline void Collie_soft_DAC_on(void)
- {
- #if defined(CONFIG_COLLIE_PCM1741)
-- ENTER(TRACE_DAC, "Collie_soft_DAC_on");
- Collie_DAC_sendword(DAC_REG19_DACOn); /* register19 */
-- LEAVE(TRACE_DAC, "Collie_soft_DAC_on");
- #endif /* CONFIG_COLLIE_PCM1741 */
- }
-
- static inline void Collie_soft_DAC_off(void)
- {
- #if defined(CONFIG_COLLIE_PCM1741)
-- ENTER(TRACE_DAC, "Collie_soft_DAC_off");
- Collie_DAC_sendword(DAC_REG19_DACOff); /* register19 */
-- LEAVE(TRACE_DAC, "Collie_soft_DAC_off");
--#endif /* CONFIG_COLLIE_PCM1741 */
--}
--
--static inline void Collie_soft_mute_init(void)
--{
--#if defined(CONFIG_COLLIE_PCM1741)
-- ENTER(TRACE_MUTE, "Collie_soft_mute_init");
-- Collie_DAC_sendword(DAC_REG18_MuteOn); /* register18 */
-- collie_soft_mute = 1;
-- LEAVE(TRACE_MUTE, "Collie_soft_mute_init");
- #endif /* CONFIG_COLLIE_PCM1741 */
- }
-
- static inline void Collie_soft_mute_on(void)
- {
- #if defined(CONFIG_COLLIE_PCM1741)
-- ENTER(TRACE_MUTE, "Collie_soft_mute_on");
- if (!collie_soft_mute) {
- Collie_DAC_sendword(DAC_REG18_MuteOn); /* register18 */
- collie_soft_mute = 1;
- }
-- LEAVE(TRACE_MUTE, "Collie_soft_mute_on");
- #endif /* CONFIG_COLLIE_PCM1741 */
- }
-
- static inline void Collie_soft_mute_off(void)
- {
- #if defined(CONFIG_COLLIE_PCM1741)
-- ENTER(TRACE_MUTE, "Collie_soft_mute_off");
- if (collie_soft_mute) {
- Collie_DAC_sendword(DAC_REG18_MuteOff); /* register18 */
- collie_soft_mute = 0;
- }
-- LEAVE(TRACE_MUTE, "Collie_soft_mute_off");
- #endif /* CONFIG_COLLIE_PCM1741 */
- }
-
- static inline void Collie_hard_mute_init(void)
- {
--#if !defined(CONFIG_COLLIE_TS) && !defined(CONFIG_COLLIE_TR0)
-- ENTER(TRACE_MUTE, "Collie_hard_mute_init");
- SCP_REG_GPCR |= (SCP_GPCR_PA14 | SCP_GPCR_PA15);
- #ifdef HARD_MUTE_CTRL_DISABLE
- SCP_REG_GPWR |= (SCP_GPCR_PA14 | SCP_GPCR_PA15);
-@@ -1162,84 +494,107 @@
- SCP_REG_GPWR &= ~(SCP_GPCR_PA14 | SCP_GPCR_PA15);
- #endif /* HARD_MUTE_CTRL_DISABLE */
- collie_hard_mute = 1;
--#if !defined(CONFIG_COLLIE_TR1) && !defined(CONFIG_COLLIE_DEV)
-+
- {
- int time = jiffies + 5;
- while (jiffies <= time)
- schedule();
- }
--#endif
-- LEAVE(TRACE_MUTE, "Collie_hard_mute_init");
--#endif /* !CONFIG_COLLIE_TS && !CONFIG_COLLIE_TR0 */
- }
-
- static inline void Collie_hard_mute_on(void)
- {
--#if !defined(CONFIG_COLLIE_TS) && !defined(CONFIG_COLLIE_TR0)
- #ifndef HARD_MUTE_CTRL_DISABLE
-- ENTER(TRACE_MUTE, "Collie_hard_mute_on");
- if (!collie_hard_mute) {
- SCP_REG_GPWR &= ~(SCP_GPCR_PA14 | SCP_GPCR_PA15);
- collie_hard_mute = 1;
--#if !defined(CONFIG_COLLIE_TR1) && !defined(CONFIG_COLLIE_DEV)
- {
- int time = jiffies + 5;
- while (jiffies <= time)
- schedule();
- }
--#endif
- }
-- LEAVE(TRACE_MUTE, "Collie_hard_mute_on");
- #endif /* HARD_MUTE_CTRL_DISABLE */
--#endif /* !CONFIG_COLLIE_TS && !CONFIG_COLLIE_TR0 */
- }
-
- static inline void Collie_hard_mute_off(void)
- {
--#if !defined(CONFIG_COLLIE_TS) && !defined(CONFIG_COLLIE_TR0)
- #ifndef HARD_MUTE_CTRL_DISABLE
-- ENTER(TRACE_MUTE, "Collie_hard_mute_off");
- if (collie_hard_mute) {
-- if (!COLLE_RECORDING)
- SCP_REG_GPWR |= (SCP_GPCR_PA14 | SCP_GPCR_PA15);
-- else
-- SCP_REG_GPWR |= (SCP_GPCR_PA15);
- collie_hard_mute = 0;
--#if !defined(CONFIG_COLLIE_TR1) && !defined(CONFIG_COLLIE_DEV)
- {
- int i;
- for (i=0; i<=1000; i++) {
- udelay(1);
- }
- }
--#endif
- }
-- LEAVE(TRACE_MUTE, "Collie_hard_mute_off");
- #endif /* HARD_MUTE_CTRL_DISABLE */
--#endif /* !CONFIG_COLLIE_TS && !CONFIG_COLLIE_TR0 */
--}
--
--#ifdef TRY_DELAY_OFF /* H.Hayami SHARP 2001.12.19 */
--static inline void Collie_hard_mute_delay_on(void)
--{
-- ENTER(TRACE_MUTE, "Collie_hard_mute_delay_on");
-- down(&df_sem);
-- SetDelay(DELAY_HARD_MUTE_ON);
-- up(&df_sem);
-- LEAVE(TRACE_MUTE, "Collie_hard_mute_delay_on");
- }
--#endif
-
--static inline void Collie_audio_clock_init(void)
-+static inline void Collie_hard_mute_left_on(void)
-+{
-+#ifndef HARD_MUTE_CTRL_DISABLE
-+// if (!collie_hard_mute) {
-+ SCP_REG_GPWR &= ~(SCP_GPCR_PA14);
-+ {
-+ int time = jiffies + 5;
-+ while (jiffies <= time)
-+ schedule();
-+ }
-+// }
-+#endif /* HARD_MUTE_CTRL_DISABLE */
-+}
-+
-+static inline void Collie_hard_mute_left_off(void)
-+{
-+#ifndef HARD_MUTE_CTRL_DISABLE
-+// if (collie_hard_mute) {
-+ SCP_REG_GPWR |= (SCP_GPCR_PA14);
-+ {
-+ int i;
-+ for (i=0; i<=1000; i++) {
-+ udelay(1);
-+ }
-+ }
-+// }
-+#endif /* HARD_MUTE_CTRL_DISABLE */
-+}
-+
-+
-+static int CollieGetSamp(void)
-+{
-+ switch (sound.speed) {
-+ case 8000:
-+ return clock_set_data[7];
-+ case 44100:
-+ return clock_set_data[0];
-+ case 22050:
-+ return clock_set_data[1];
-+ case 11025:
-+ return clock_set_data[2];
-+ case 48000:
-+ return clock_set_data[3];
-+ case 32000:
-+ return clock_set_data[4];
-+ case 24000:
-+ return clock_set_data[5];
-+ case 16000:
-+ return clock_set_data[6];
-+ default:
-+ printk("Collie sound: Illegal sound rate %d\n", sound.speed);
-+ return clock_set_data[7];
-+ }
-+}
-+
-+static inline void Collie_audio_clock_init(void)
- {
-- ENTER(TRACE_CLOCK, "Collie_audio_clock_init");
- LCM_ACC = 0;
-- LEAVE(TRACE_CLOCK, "Collie_audio_clock_init");
- }
-
- static inline void Collie_audio_clock_on(void)
- {
-- ENTER(TRACE_CLOCK, "Collie_audio_clock_on");
- /* LoCoMo Audio clock on */
- LCM_ACC = CollieGetSamp();
- barrier();
-@@ -1248,263 +603,58 @@
- LCM_ACC |= LCM_ACC_XEN;
- barrier();
- LCM_ACC |= (LCM_ACC_MCLKEN | LCM_ACC_64FSEN);
-- LEAVE(TRACE_CLOCK, "Collie_audio_clock_on");
- }
-
- static inline void Collie_audio_clock_off(void)
- {
-- ENTER(TRACE_CLOCK, "Collie_audio_clock_off");
- /* LoCoMo Audio clock off */
- LCM_ACC &= ~(LCM_ACC_XEN | LCM_ACC_MCLKEN | LCM_ACC_64FSEN);
- barrier();
- LCM_ACC &= ~(LCM_ACC_XON);
-- LEAVE(TRACE_CLOCK, "Collie_audio_clock_off");
--}
--
--static inline void Collie_paif_init(void)
--{
-- ENTER(TRACE_PAIF, "Collie_paif_init");
-- // LCM_PAIF = (LCM_PAIF_SCINV | LCM_PAIF_LRCRST);
-- LCM_PAIF = (LCM_PAIF_LRCRST);
-- LEAVE(TRACE_PAIF, "Collie_paif_init");
- }
-
- static inline void Collie_paif_on(void)
- {
-- ENTER(TRACE_PAIF, "Collie_paif_on");
- LCM_PAIF = (LCM_PAIF_SCINV | LCM_PAIF_LRCRST);
- LCM_PAIF &= ~(LCM_PAIF_LRCRST);
- LCM_PAIF |= (LCM_PAIF_SCEN | LCM_PAIF_LRCEN);
-- LEAVE(TRACE_PAIF, "Collie_paif_on");
- }
-
- static inline void Collie_paif_off(void)
- {
-- ENTER(TRACE_PAIF, "Collie_paif_off");
-- // LCM_PAIF = (LCM_PAIF_SCINV | LCM_PAIF_LRCRST);
- LCM_PAIF = (LCM_PAIF_LRCRST);
-- LEAVE(TRACE_PAIF, "Collie_paif_off");
- }
-
- static inline void Collie_MIC_init(void)
- {
--#if !defined(CONFIG_COLLIE_TS) && !defined(CONFIG_COLLIE_TR0)
-- ENTER(TRACE_MIC, "Collie_MIC_init");
- /* MIC to GPIO 17 */
- /* alternate functions for the GPIOs */
-- GAFR &= ~( COLLIE_GPIO_MIC );
--
-+ GAFR &= ~( COLLIE_GPIO_MIC );
- /* Set the direction: 17 output */
- GPDR |= ( COLLIE_GPIO_MIC );
--
--#if defined(CONFIG_COLLIE_TR1)
-- /* Set pin level (Low) */
-- GPCR = ( COLLIE_GPIO_MIC );
--#else
- /* Set pin level (High) */
- GPSR = ( COLLIE_GPIO_MIC );
--#endif
-- LEAVE(TRACE_MIC, "Collie_MIC_init");
--#endif /* !CONFIG_COLLIE_TS && !CONFIG_COLLIE_TR0 */
- }
-
- static inline void Collie_MIC_on(void)
- {
--#if !defined(CONFIG_COLLIE_TS) && !defined(CONFIG_COLLIE_TR0)
-- ENTER(TRACE_MIC, "Collie_MIC_on");
--#if defined(CONFIG_COLLIE_TR1)
-- GPSR = ( COLLIE_GPIO_MIC );
--#else
- GPCR = ( COLLIE_GPIO_MIC );
--#endif
-- LEAVE(TRACE_MIC, "Collie_MIC_on");
--#endif /* !CONFIG_COLLIE_TS && !CONFIG_COLLIE_TR0 */
- }
-
- static inline void Collie_MIC_off(void)
- {
--#if !defined(CONFIG_COLLIE_TS) && !defined(CONFIG_COLLIE_TR0)
-- ENTER(TRACE_MIC, "Collie_MIC_off");
-- if (!COLLE_RECORDING) {
--#if defined(CONFIG_COLLIE_TR1)
-- GPCR = ( COLLIE_GPIO_MIC );
--#else
-- GPSR = ( COLLIE_GPIO_MIC );
--#endif
-- }
-- LEAVE(TRACE_MIC, "Collie_MIC_off");
--#endif /* !CONFIG_COLLIE_TS && !CONFIG_COLLIE_TR0 */
--}
--
--static inline void Collie_volume_init(void)
--{
-- ENTER(TRACE_VOLUME, "Collie_volume_init");
-- m62332_senddata(0, M62332_EVR_CH);
-- collie_volume = 0;
-- LEAVE(TRACE_VOLUME, "Collie_volume_init");
--}
--
--static inline void Collie_volume_on(void)
--{
-- ENTER(TRACE_VOLUME, "Collie_volume_on");
-- if (collie_volume != sound.volume_left) {
-- //Collie_hard_mute_on();
-- m62332_senddata(0xff * sound.volume_left / 100, M62332_EVR_CH);
-- //Collie_hard_mute_off();
-- collie_volume = sound.volume_left;
-- }
-- LEAVE(TRACE_VOLUME, "Collie_volume_on");
--}
--
--static inline void Collie_volume_off(void)
--{
-- ENTER(TRACE_VOLUME, "Collie_volume_off");
-- if (collie_volume) {
-- //Collie_hard_mute_on();
-- m62332_senddata(0, M62332_EVR_CH);
-- //Collie_hard_mute_off();
-- collie_volume = 0;
-- }
-- LEAVE(TRACE_VOLUME, "Collie_volume_off");
--}
--
--#define VOL_THRES 40
--static void Collie_volume_half_adjust(void)
--{
-- int volume = collie_volume;
-- ENTER(TRACE_VOLUME, "Collie_volume_half_adjust");
-- if (collie_volume > sound.volume_left) {
-- /* volume down */
-- if (collie_volume > VOL_THRES) {
-- if (sound.volume_left > VOL_THRES) {
-- volume = (collie_volume + sound.volume_left)/2;
-- if (volume == collie_volume) {
-- volume = sound.volume_left;
-- }
-- } else {
-- volume = (collie_volume + VOL_THRES)/2;
-- if (volume == collie_volume) {
-- volume = VOL_THRES;
-- }
-- }
-- } else {
-- /* we can pull down without noise */
-- volume = sound.volume_left;
-- }
-- } else if (collie_volume < sound.volume_left) {
-- /* volume up */
-- if (sound.volume_left > VOL_THRES) {
-- if (collie_volume < VOL_THRES) {
-- /* we can pull up to VOL_THRES without noise */
-- volume = VOL_THRES;;
-- } else {
-- volume = (collie_volume + sound.volume_left)/2;
-- if (volume == collie_volume) {
-- volume = sound.volume_left;
-- }
-- }
-- } else {
-- /* we can pull up without noise */
-- volume = sound.volume_left;
-- }
-- }
-- if (collie_volume != volume) {
-- m62332_senddata(0xff * volume / 100, M62332_EVR_CH);
-- collie_volume = volume;
-- }
-- LEAVE(TRACE_VOLUME, "Collie_volume_half_adjust");
--}
--
--static void Collie_volume_half_off(void)
--{
-- int volume;
-- int delta = 1;
-- ENTER(TRACE_VOLUME, "Collie_volume_half_off");
-- while (0 < collie_volume) {
-- if (collie_volume <= VOL_THRES) {
-- volume = 0;
-- } else {
-- if (collie_volume > delta) {
-- volume = collie_volume - delta;
-- } else {
-- volume = 0;
-- }
-- if (volume && volume < VOL_THRES) {
-- volume = VOL_THRES;
-- }
-- delta <<= 1;
-- }
-- m62332_senddata(0xff * volume / 100, M62332_EVR_CH);
-- collie_volume = volume;
-- udelay(100);
-- }
-- LEAVE(TRACE_VOLUME, "Collie_volume_half_off");
--}
--
--static void Collie_OP_SHDN_on(void)
--{
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0)
-- ENTER(TRACE_OP_SHDN,"Collie_OP_SHDN_on");
-- if (!collie_op_shdn_on) {
-- /* set volume */
-- Collie_volume_off();
--
-- /* OP_SHDN to GPIO 17 */
-- /* alternate functions for the GPIOs */
-- GAFR &= ~( COLLIE_GPIO_OPSHDN );
--
-- /* Set the direction: 17 output */
-- GPDR |= ( COLLIE_GPIO_OPSHDN );
--
-- /* Set pin level (high) */
-- GPSR |= ( COLLIE_GPIO_OPSHDN );
--
-- /* set volume */
-- Collie_volume_on();
--
-- collie_op_shdn_on = 1;
-- }
-- LEAVE(TRACE_OP_SHDN,"Collie_OP_SHDN_on");
--#endif /* CONFIG_COLLIE_TS || CONFIG_COLLIE_TR0 */
--}
--
--static void Collie_OP_SHDN_off(void)
--{
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0)
-- ENTER(TRACE_OP_SHDN,"Collie_OP_SHDN_off");
-- /* OP_SHDN to GPIO 17 */
-- /* alternate functions for the GPIOs */
-- GAFR &= ~( COLLIE_GPIO_OPSHDN );
--
-- /* Set the direction: 17 output */
-- GPDR |= ( COLLIE_GPIO_OPSHDN );
--
-- /* Clear pin level (low) */
-- GPCR |= ( COLLIE_GPIO_OPSHDN );
--
-- collie_op_shdn_on = 0;
-- LEAVE(TRACE_OP_SHDN,"Collie_OP_SHDN_off");
--#endif /* CONFIG_COLLIE_TS || CONFIG_COLLIE_TR0 */
-+ GPSR = ( COLLIE_GPIO_MIC );
- }
-
- static inline void Collie_ssp_init(void)
- {
-- ENTER(TRACE_SSP, "Collie_ssp_init");
- /* alternate functions for the GPIOs */
- /* SSP port to GPIO 10,12,13, 19 */
- GAFR |= ( GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SSP_CLK );
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0)
-- /* SSP port to GPIO 11 */
-- GAFR |= GPIO_SSP_RXD;
--#endif /* CONFIG_COLLIE_TS || CONFIG_COLLIE_TR0 */
-
- /* Set the direction: 10, 12, 13 output; 19 input */
- GPDR |= ( GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM );
- GPDR &= ~( GPIO_SSP_CLK );
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0)
-- /* Set the direction: 11 input */
-- GPDR &= ~( GPIO_SSP_RXD );
--#endif /* CONFIG_COLLIE_TS || CONFIG_COLLIE_TR0 */
-
- /* enable SSP pin swap */
- PPAR |= PPAR_SPR;
-@@ -1516,400 +666,162 @@
- /* the SSP setting */
- Ser4SSCR0 = (SSCR0_DataSize(16) | SSCR0_TI | SSCR0_SerClkDiv(2));
- Ser4SSCR1 = (SSCR1_SClkIactL | SSCR1_SClk1P | SSCR1_ExtClk);
--
-- LEAVE(TRACE_SSP, "Collie_ssp_init");
- }
-
- static inline void Collie_ssp_on(void)
- {
-- ENTER(TRACE_SSP, "Collie_ssp_on");
- /* turn on the SSP */
- Ser4SSCR0 |= ( SSCR0_SSE );
-- LEAVE(TRACE_SSP, "Collie_ssp_on");
- }
-
- static inline void Collie_ssp_off(void)
- {
-- ENTER(TRACE_SSP, "Collie_ssp_off");
- /* turn off the SSP */
- Ser4SSCR0 &= ~( SSCR0_SSE );
-- LEAVE(TRACE_SSP, "Collie_ssp_off");
--}
--
--static inline void Collie_sound_hard_init(void)
--{
-- ENTER(TRACE_ON, "Collie_sound_hard_init");
-- Collie_hard_mute_init();
-- Collie_audio_clock_init();
-- Collie_paif_init();
-- Collie_volume_init();
-- Collie_ssp_init();
-- Collie_MIC_init();
--
-- Collie_FS8KLPF_start();
-- LEAVE(TRACE_ON, "Collie_sound_hard_init");
--}
--
--static inline void Collie_sound_hard_term(void)
--{
-- ENTER(TRACE_ON, "Collie_sound_hard_term");
--#ifdef DAC_OFF_WITH_DEVICE_OFF
-- /* DAC Off */
-- Collie_DAC_off();
--#endif
-- LEAVE(TRACE_ON, "Collie_sound_hard_term");
--}
--
--static void Collie_FS8KLPF_start(void)
--{
--#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0)
-- ENTER(TRACE_ON,"Collie_FS8KLPF_start");
-- /* Set up TC35143 GPIO I/O Direction (GPIO5 output mode) */
-- ucb1200_set_io_direction(TC35143_GPIO_FS8KLPF,
-- TC35143_IODIR_OUTPUT);
-- /* Set up TC35143 GPIO 5 (set LOW) */
-- ucb1200_set_io(TC35143_GPIO_FS8KLPF, TC35143_IODAT_LOW);
-- LEAVE(TRACE_ON,"Collie_FS8KLPF_start");
--#endif /* CONFIG_COLLIE_TS || CONFIG_COLLIE_TR0 */
--}
--
--#ifdef CONFIG_PM
--#if 0
--static void Collie_FS8KLPF_stop(void)
--{
-- /* Set up TC35143 GPIO I/O Direction (GPIO5 output mode) */
-- ucb1200_set_io_direction(TC35143_GPIO_FS8KLPF,
-- TC35143_IODIR_OUTPUT);
-- /* Set up TC35143 GPIO 5 (set LOW) */
-- ucb1200_set_io(TC35143_GPIO_FS8KLPF, TC35143_IODAT_HIGH);
--}
--
--static void Collie_clock_stop(void)
--{
-- /* LoCoMo PCM audio interface */
-- Collie_paif_off();
--
-- /* LoCoMo audio clock off */
-- Collie_audio_clock_off();
--}
--#endif
--#endif
--
--#ifdef TRY_DELAY_OFF /* H.Hayami SHARP 2001.12.19 */
--static unsigned long in_timehandle = 0;
--static struct timer_list timer;
--
--static void collieDoDelayedSilence(void)
--{
-- ENTER(TRACE_ON,"collieDoDelayedSilence");
-- down(&df_sem);
-- if(isDelayed(DELAY_HARD_MUTE_ON)) {
-- Collie_hard_mute_on();
-- }
-- if(isDelayed(DELAY_DAC_OFF)) {
-- Collie_DAC_off();
-- }
-- ResetDelayAll();
-- up(&df_sem);
-- LEAVE(TRACE_ON,"colliDoDelayedSilence");
--}
--
--static void collieDelayedSilence(void)
--{
-- ENTER(TRACE_ON,"collieDelayedSilence");
-- while (1) {
-- sleep_on(&delay_off);
-- collieDoDelayedSilence();
-- }
-- LEAVE(TRACE_ON,"collieDelayedSilence");
--}
--
--static void collieStartDelayedSilence(unsigned long data)
--{
-- ENTER(TRACE_ON,"collieStartDelayedSilence");
-- in_timehandle = 0;
-- wake_up(&delay_off);
-- LEAVE(TRACE_ON,"collieStartDelayedSilence");
--}
--
--static void collieTriggerDelayedSilence(void)
--{
-- ENTER(TRACE_ON,"collieTriggerDelayedSilence");
-- in_timehandle = 1;
-- init_timer(&timer);
-- timer.function = collieStartDelayedSilence;
-- timer.expires = jiffies + 5*100;
-- add_timer(&timer);
-- LEAVE(TRACE_ON,"collieTriggerDelayedSilence");
--}
--
--static void collieCancelDelayedSilence(void)
--{
-- ENTER(TRACE_ON,"collieCancelDelayedSilence");
-- down(&df_sem);
-- ResetDelayAll();;
-- up(&df_sem);
-- if (in_timehandle) {
-- del_timer(&timer);
-- in_timehandle = 0;
-- }
-- LEAVE(TRACE_ON,"collieCancelDelayedSilence");
--}
--#endif
--
--static void Collie_disable_sound(void)
--{
-- ENTER(TRACE_ON,"Collie_disable_sound");
-- sa1100_dma_stop(COLLIE_SOUND_DMA_CHANNEL);
-- sa1100_dma_flush_all(COLLIE_SOUND_DMA_CHANNEL);
--#ifndef TRY_DELAY_OFF /* H.Hayami SHARP 2001.12.18 */
-- Collie_volume_half_off();
-- Collie_hard_mute_on();
-- Collie_soft_mute_on();
--
-- Collie_ssp_off();
--
-- /* Collie_clock_stop(); */
--#endif
-- LEAVE(TRACE_ON,"Collie_disable_sound");
--}
--
--static void CollieSilence(void)
--{
-- ENTER(TRACE_ON,"CollieSilence");
-- /* Disable sound & DMA */
-- Collie_disable_sound();
--
--#ifdef TRY_DELAY_OFF /* H.Hayami SHARP 2001.12.18 */
-- Collie_volume_half_off();
-- Collie_hard_mute_delay_on();
-- Collie_soft_mute_on();
--
-- Collie_ssp_off();
--
-- /* Collie_clock_stop(); */
--#endif
--
--#if 0 /* H.Hayami SHARP 2001.12.18 */
--#if !defined(CONFIG_COLLIE_TS) && !defined(CONFIG_COLLIE_TR0) && \
-- !defined(CONFIG_COLLIE_TR1) && !defined(CONFIG_COLLIE_DEV)
-- Collie_volume_off();
--#endif
--#endif
-- Collie_OP_SHDN_off();
-- Collie_soft_DAC_off();
-- Collie_paif_off();
-- Collie_audio_clock_off();
--
-- //Collie_MIC_on();
--
--#ifndef DAC_OFF_WITH_DEVICE_OFF
-- /* DAC Off */
--#ifdef TRY_DELAY_OFF /* H.Hayami 2001.12.15 */
-- Collie_DAC_delay_off();
--#else
-- Collie_DAC_off();
--#endif
--#endif /* end DAC_OFF_WITH_DEVICE_OFF */
--
-- /* AMP Off */
-- Collie_AMP_off();
--
--#ifdef TRY_DELAY_OFF /* H.Hayami SHARP 2001.12.18 */
-- collieTriggerDelayedSilence();
--#endif
-- LEAVE(TRACE_ON,"CollieSilence");
--}
--
--static int CollieGetSamp(void)
--{
-- ENTER(TRACE_ON,"CollieGetSamp");
-- switch (sound.soft.speed) {
-- case 8000:
-- LEAVE(TRACE_ON,"CollieGetSamp");
-- return clock_set_data[7];
-- case 44100:
-- LEAVE(TRACE_ON,"CollieGetSamp");
-- return clock_set_data[0];
-- case 22050:
-- LEAVE(TRACE_ON,"CollieGetSamp");
-- return clock_set_data[1];
-- case 11025:
-- LEAVE(TRACE_ON,"CollieGetSamp");
-- return clock_set_data[2];
-- case 48000:
-- LEAVE(TRACE_ON,"CollieGetSamp");
-- return clock_set_data[3];
-- case 32000:
-- LEAVE(TRACE_ON,"CollieGetSamp");
-- return clock_set_data[4];
-- case 24000:
-- LEAVE(TRACE_ON,"CollieGetSamp");
-- return clock_set_data[5];
-- case 16000:
-- LEAVE(TRACE_ON,"CollieGetSamp");
-- return clock_set_data[6];
-- default:
-- printk("Collie sound: Illegal sound rate %d\n", sound.soft.speed);
-- LEAVE(TRACE_ON,"CollieGetSamp");
-- return clock_set_data[7];
-- }
--}
--
--static inline void Collie_DAC_sendbit(int bit_data)
--{
-- ENTER(TRACE_SENDDATA,"Collie_DAC_sendbit");
-- if (bit_data & 1) {
-- LCM_GPO |= (LCM_GPIO_DAC_SDATA);
-- } else {
-- LCM_GPO &= ~(LCM_GPIO_DAC_SDATA);
-- }
--
-- udelay(1);
-- LCM_GPO |= (LCM_GPIO_DAC_SCK);
--
-- udelay(1);
-- LCM_GPO &= ~(LCM_GPIO_DAC_SCK);
-- udelay(1);
-- LCM_GPO &= ~(LCM_GPIO_DAC_SDATA);
-- udelay(1);
-- LEAVE(TRACE_SENDDATA,"Collie_DAC_sendbit");
--}
--
--static void Collie_DAC_sendword(int data)
--{
-- int i;
--
-- ENTER(TRACE_SENDDATA,"Collie_DAC_sendword");
--#if defined(CONFIG_COLLIE_PCM1741)
--
-- LCM_GPO &= ~(LCM_GPIO_DAC_SCK);
-- udelay(1);
-- LCM_GPO |= (LCM_GPIO_DAC_SLOAD);
-- udelay(1);
--
-- for (i = 0; i < 16; i++)
-- Collie_DAC_sendbit(data >> (15 - i));
--
-- LCM_GPO &= ~(LCM_GPIO_DAC_SLOAD);
-- udelay(2);
--
--#elif defined(CONFIG_COLLIE_PCM1717)
--
-- LCM_GPO &= ~(LCM_GPIO_DAC_SLOAD);
-- udelay(1000);
-- LCM_GPO |= (LCM_GPIO_DAC_SLOAD);
-- udelay(1000);
-- LCM_GPO &= ~(LCM_GPIO_DAC_SCK);
-- udelay(1000);
--
-- for (i = 0; i < 16; i++)
-- Collie_DAC_sendbit(data >> (15 - i));
--
-- LCM_GPO &= ~(LCM_GPIO_DAC_SLOAD);
-- udelay(1000);
-- LCM_GPO |= (LCM_GPIO_DAC_SLOAD);
-- udelay(1000);
-- LCM_GPO &= ~(LCM_GPIO_DAC_SLOAD);
-- udelay(1000);
--
--#endif
-- LEAVE(TRACE_SENDDATA,"Collie_DAC_sendword");
- }
-
--void
--Collie_audio_power_on(void)
-+
-+static inline void Collie_sound_hard_init(void)
- {
-- int send_data;
-+ Collie_hard_mute_init();
-+ Collie_audio_clock_init();
-+ Collie_paif_off();
-+ Collie_volume_init();
-+ Collie_ssp_init();
-+ Collie_MIC_init();
-+ Collie_soft_mute_on();
-+ Collie_DAC_on();
-+}
-
-- ENTER(TRACE_ON,"Collie_audio_power_on");
-+void Collie_recording_on(void)
-+{
-+ collie_recording=1;
-+ if (!playing)
-+ Collie_DAC_on();
-+ else
-+ Collie_hard_mute_left_on();
-+ Collie_MIC_on();
-+}
-
--#ifdef TRY_DELAY_OFF /* H.Hayami SHARP 2001.12.19 */
-- collieCancelDelayedSilence();
--#endif
-+void Collie_recording_off(void)
-+{
-+ collie_recording=0;
-+ Collie_MIC_off();
-+ if (!playing)
-+ Collie_DAC_off();
-+ else
-+ Collie_hard_mute_left_off();
-+}
-
-+static void Collie_audio_power_on(void)
-+{
-+ playing=1;
- collie_amp_init = 0;
--
-- /* OP_SHDN off */
-- Collie_OP_SHDN_off();
--
-- /* AMP on */
-- Collie_AMP_on();
--
-- /* DAC ON */
-- Collie_DAC_on();
--
-- Collie_MIC_off();
-- Collie_ssp_on();
--
-- /* LoCoMo Audio clock */
-- Collie_audio_clock_off();
-+ if (!collie_recording)
-+ Collie_DAC_on();
-+ Collie_ssp_on();
-+ Collie_audio_clock_off(); /* LoCoMo Audio clock */
- Collie_audio_clock_on();
--
-- /* LoCoMo PCM audio interface */
-- Collie_paif_on();
--
-+ Collie_paif_on(); /* LoCoMo PCM audio interface */
- udelay(1000);
--
-- /* DAC Setting */
- Collie_DAC_init();
--
- Collie_soft_DAC_on();
-- Collie_soft_mute_init();
-+ Collie_soft_mute_off();
-+ Collie_hard_mute_off();
-+ if (collie_recording)
-+ Collie_hard_mute_left_on();
-+ Collie_volume_set(sound.volume);
-+}
-
-- sound.hard = sound.soft;
-+static void Collie_audio_power_off(void){ /* Disable sound only */
-+ Collie_volume_set(0);
-+ Collie_hard_mute_on();
-+ Collie_soft_mute_on();
-+ Collie_ssp_off();
-+ Collie_soft_DAC_off();
-+ Collie_paif_off();
-+ Collie_audio_clock_off();
-+ if (!collie_recording)
-+ Collie_DAC_off();
-+ playing=0;
-+}
-
--#if !defined(CONFIG_COLLIE_TS) && !defined(CONFIG_COLLIE_TR0) && \
-- !defined(CONFIG_COLLIE_TR1) && !defined(CONFIG_COLLIE_DEV)
-- /* Volume set */
-- Collie_volume_half_adjust();
-- {
-- int i;
-- for (i=0; i<10*1000; i++) {
-- udelay(1);
-+
-+static inline void Collie_volume_init(void)
-+{
-+ m62332_senddata(0, M62332_EVR_CH);
-+ collie_volume = 0;
-+}
-+
-+#define VOL_THRES 10
-+
-+static void Collie_volume_set(int dest)
-+{
-+ int chn;
-+ while (dest != collie_volume) {
-+ chn = dest-collie_volume;
-+ if (chn>VOL_THRES)
-+ chn=VOL_THRES;
-+ else if (chn<-VOL_THRES)
-+ chn=-VOL_THRES;
-+ if (chn) {
-+ collie_volume += chn;
-+ m62332_senddata(0xff * collie_volume / 100, M62332_EVR_CH);
- }
-+ udelay(100);
- }
--#endif
-+}
-
-- Collie_soft_mute_off();
-- Collie_hard_mute_off();
-+static int sound_set_speed(int speed)
-+{
-+ if (speed < 0) {
-+ return(sound.speed);
-+ }
-+
-+ if (speed<8000) sound.speed=8000;
-+ else if (speed<=11025) sound.speed=11025;
-+ else if (speed<=16000) sound.speed=16000;
-+ else if (speed<=22050) sound.speed=22050;
-+ else if (speed<=24000) sound.speed=24000;
-+ else if (speed<=32000) sound.speed=32000;
-+ else if (speed<=44100) sound.speed=44100;
-+ else sound.speed=48000;
-+
-+ /* LoCoMo Audio clock */
-+ Collie_audio_clock_off();
-+ Collie_audio_clock_on();
-+ return(sound.speed);
-+}
-
-- LEAVE(TRACE_ON,"Collie_audio_power_on");
-+/*** Mid level stuff *********************************************************/
-+
-+static void Collie_Set_Volume(int volume)
-+{
-+ sound.volume = volume & 0xff;
-+ sound.volume += ( volume & 0xff00 >> 8);
-+ sound.volume >>=1;
-+ if (sound.volume>100) sound.volume=100;
- }
-
--static void CollieInit(void)
-+static int Collie_Get_Volume(void)
- {
-- ENTER(TRACE_ON,"CollieInit");
-- sound.hard = sound.soft;
-- LEAVE(TRACE_ON,"CollieInit");
-+ return ( sound.volume << 8 | sound.volume );
- }
-
-+
- static void Collie_sq_interrupt(void* id, int size)
- {
- audio_buf_t *b = (audio_buf_t *) id;
-- ENTER(TRACE_INTERRUPT,"Collie_sq_interrupt");
--/***** DEBUG *****
--printk("Collie_sq_interrupt: Start\n");
--*****************/
-+
- /*
- * Current buffer is sent: wake up any process waiting for it.
- */
-- ENTER(TRACE_SEM,"up sem");
- up(&b->sem);
-- LEAVE(TRACE_SEM,"up sem");
--/***** DEBUG *****
--printk("Collie_sq_interrupt: up End\n");
--*****************/
- /* And any process polling on write. */
-- ENTER(TRACE_SEM,"up wait");
-- wake_up(&b->sem.wait);
-- LEAVE(TRACE_SEM,"up wait");
--/***** DEBUG *****
--printk("Collie_sq_interrupt: wake_up End\n");
--*****************/
-+ wake_up_interruptible(&b->sem.wait);
-+ /* And indicate which was the last buffer sent */
-
- DPRINTK("Collie_sq_interrupt \n");
-- LEAVE(TRACE_INTERRUPT,"Collie_sq_interrupt");
- }
-
-
-@@ -1917,191 +829,52 @@
- {
- int err;
-
-- ENTER(TRACE_ON,"CollieIrqInit");
- err = sa1100_request_dma(&collie_dmasound_irq, "dmasound",
- DMA_Ser4SSPWr);
- if (err) {
-- LEAVE(TRACE_ON,"CollieIrqInit");
- return 0;
- }
-- /* printk("collie_dmasound_irq=%d\n", collie_dmasound_irq); */
-+ printk("collie_dmasound_irq=%d\n", collie_dmasound_irq);
-
- sa1100_dma_set_callback(collie_dmasound_irq,
- (dma_callback_t)Collie_sq_interrupt);
-
--
-- /* Disable sound & DMA */
-- Collie_disable_sound();
--
-- LEAVE(TRACE_ON,"CollieIrqInit");
-+ sa1100_dma_stop(COLLIE_SOUND_DMA_CHANNEL);
-+ sa1100_dma_flush_all(COLLIE_SOUND_DMA_CHANNEL);
-+ Collie_audio_power_off();
- return(1);
--
--}
--
--#ifdef MODULE
--static void CollieIrqCleanUp(void)
--{
-- ENTER(TRACE_ON,"CollieIrqCleanUp");
-- /* Disable sound & DMA */
-- Collie_disable_sound();
--
-- /* release the interrupt */
-- free_irq(IRQ_DMA, Collie_sq_interrupt);
-- LEAVE(TRACE_ON,"CollieIrqCleanUp");
- }
--#endif /* MODULE */
--
-
- static int CollieSetFormat(int format)
- {
- int size;
-
-- ENTER(TRACE_ON,"CollieSetFormat");
-- /* Falcon sound DMA supports 8bit and 16bit modes */
--
- switch (format) {
- case AFMT_QUERY:
-- LEAVE(TRACE_ON,"CollieSetFormat");
-- return(sound.soft.format);
-- case AFMT_MU_LAW:
-- size = 8;
-- ct_func = sound.trans->ct_ulaw;
-- break;
-- case AFMT_A_LAW:
-- size = 8;
-- ct_func = sound.trans->ct_alaw;
-- break;
-- case AFMT_S8:
-- size = 8;
-- ct_func = sound.trans->ct_s8;
-- break;
-- case AFMT_U8:
-- size = 8;
-- ct_func = sound.trans->ct_u8;
-- break;
-- case AFMT_S16_BE:
-- size = 16;
-- ct_func = sound.trans->ct_s16be;
-- break;
-- case AFMT_U16_BE:
-- size = 16;
-- ct_func = sound.trans->ct_u16be;
-- break;
-- case AFMT_S16_LE:
-- size = 16;
-- ct_func = sound.trans->ct_s16le;
-- break;
-- case AFMT_U16_LE:
-+ return(sound.format);
-+ default: /* This is the only one supported by the hardware it seems */
- size = 16;
-- ct_func = sound.trans->ct_u16le;
-- break;
-- default: /* :-) */
-- size = 8;
-- format = AFMT_S8;
-- }
--
-- sound.soft.format = format;
-- sound.soft.size = size;
-- if (sound.minDev == SND_DEV_DSP) {
-- sound.dsp.format = format;
-- sound.dsp.size = sound.soft.size;
-+ format = AFMT_S16_LE;
- }
-+ sound.format = format;
-+ sound.size = size;
-
-- LEAVE(TRACE_ON,"CollieSetFormat");
- return(format);
- }
-
--/*** Machine definitions *****************************************************/
--
--static MACHINE machCollie = {
-- DMASND_COLLIE, // int type
-- NULL, // void *dma_alloc(uint, int)
-- NULL, // void dma_free(void *, uint)
-- CollieIrqInit, // void irqinit(void)
--#ifdef MODULE
-- CollieIrqCleanUp, // void irqcleanup(void)
--#endif /* MODULE */
-- CollieInit, // void init(void)
-- CollieSilence, // void silence(void)
-- CollieSetFormat, // int setFormat(int)
-- NULL, // int setVolume(int)
-- NULL, // int setBass(int)
-- NULL, // int setTreble(int)
-- NULL, // int setGain(int)
-- NULL // void play(void)
--};
--
--
--/*** Mid level stuff *********************************************************/
--
--
--static void sound_silence(void)
--{
-- ENTER(TRACE_ON,"sound_silence");
-- /* update hardware settings one more */
-- //(*sound.mach.init)();
-- (*sound.mach.silence)();
-- LEAVE(TRACE_ON,"sound_silence");
--
--}
--
--
--static void sound_init(void)
--{
-- ENTER(TRACE_ON,"sound_init");
-- (*sound.mach.init)();
-- LEAVE(TRACE_ON,"sound_init");
--}
--
--
--static int sound_set_format(int format)
--{
-- ENTER(TRACE_ON,"sound_set_format");
-- LEAVE(TRACE_ON,"sound_set_format");
-- return(*sound.mach.setFormat)(format);
--}
--
--
--static int sound_set_speed(int speed)
--{
-- ENTER(TRACE_ON,"sound_set_speed");
-- if (speed < 0) {
-- LEAVE(TRACE_ON,"sound_set_speed");
-- return(sound.soft.speed);
-- }
--
-- sound.soft.speed = speed;
-- (*sound.mach.init)();
-- if (sound.minDev == SND_DEV_DSP)
-- sound.dsp.speed = sound.soft.speed;
--
-- /* LoCoMo Audio clock */
-- Collie_audio_clock_off();
-- Collie_audio_clock_on();
--
-- LEAVE(TRACE_ON,"sound_set_speed");
-- return(sound.soft.speed);
--}
-
-
- static int sound_set_stereo(int stereo)
- {
-- ENTER(TRACE_ON,"sound_set_stereo");
-+/* Only stereo is supported by hardware */
- if (stereo < 0) {
-- LEAVE(TRACE_ON,"sound_set_stereo");
-- return(sound.soft.stereo);
-+ return(sound.stereo);
- }
-+ return(1);
-+}
-
-- stereo = !!stereo; /* should be 0 or 1 now */
--
-- sound.soft.stereo = stereo;
-- if (sound.minDev == SND_DEV_DSP)
-- sound.dsp.stereo = stereo;
-- //(*sound.mach.init)();
-
-- LEAVE(TRACE_ON,"sound_set_stereo");
-- return(stereo);
--}
-+/* Higher level stuff ************************************************/
-
- /*
- * /dev/mixer abstraction
-@@ -2109,20 +882,15 @@
-
- static int mixer_open(struct inode *inode, struct file *file)
- {
-- ENTER(TRACE_ON,"mixer_open");
- MOD_INC_USE_COUNT;
- mixer.busy = 1;
-- LEAVE(TRACE_ON,"mixer_open");
- return 0;
- }
-
--
- static int mixer_release(struct inode *inode, struct file *file)
- {
-- ENTER(TRACE_ON,"mixer_release");
- mixer.busy = 0;
- MOD_DEC_USE_COUNT;
-- LEAVE(TRACE_ON,"mixer_release");
- return 0;
- }
-
-@@ -2132,58 +900,37 @@
- {
- int data;
-
-- ENTER(TRACE_ON,"mixer_ioctl");
-- switch (sound.mach.type) {
-- case DMASND_COLLIE:
-- {
-- switch (cmd) {
-- case SOUND_MIXER_READ_DEVMASK:
-- LEAVE(TRACE_ON,"mixer_ioctl");
-- return IOCTL_OUT(arg, SOUND_MASK_VOLUME );
-- case SOUND_MIXER_READ_RECMASK:
-- LEAVE(TRACE_ON,"mixer_ioctl");
-- return IOCTL_OUT(arg, 0);
-- case SOUND_MIXER_READ_STEREODEVS:
-- LEAVE(TRACE_ON,"mixer_ioctl");
-- return IOCTL_OUT(arg, SOUND_MASK_VOLUME);
-- case SOUND_MIXER_READ_CAPS:
-- LEAVE(TRACE_ON,"mixer_ioctl");
-- return IOCTL_OUT(arg, 0);
--
-- case SOUND_MIXER_WRITE_VOLUME:
-- IOCTL_IN(arg, data);
-- Collie_Set_Volume(data);
-- case SOUND_MIXER_READ_VOLUME:
-- LEAVE(TRACE_ON,"mixer_ioctl");
-- return IOCTL_OUT(arg, Collie_Get_Volume());
--
-- case SOUND_MIXER_READ_TREBLE:
-- LEAVE(TRACE_ON,"mixer_ioctl");
-- return IOCTL_OUT(arg, 0);
-- case SOUND_MIXER_WRITE_TREBLE:
-- LEAVE(TRACE_ON,"mixer_ioctl");
-- return IOCTL_OUT(arg, 0);
--
-- case SOUND_MIXER_WRITE_MIC:
-- LEAVE(TRACE_ON,"mixer_ioctl");
-- return IOCTL_OUT(arg, 0);
-- case SOUND_MIXER_READ_MIC:
-- LEAVE(TRACE_ON,"mixer_ioctl");
-- return IOCTL_OUT(arg, 0);
--
-- case SOUND_MIXER_READ_SPEAKER:
-- LEAVE(TRACE_ON,"mixer_ioctl");
-- return IOCTL_OUT(arg, 0);
-- case SOUND_MIXER_WRITE_SPEAKER:
-- LEAVE(TRACE_ON,"mixer_ioctl");
-- return IOCTL_OUT(arg, 0);
-- }
-- break;
-- }
-- }
-- LEAVE(TRACE_ON,"mixer_ioctl");
-+ switch (cmd) {
-+ case SOUND_MIXER_READ_DEVMASK:
-+ return IOCTL_OUT(arg, headphone ? SOUND_MASK_VOLUME : 0 );
-+ case SOUND_MIXER_READ_RECMASK:
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_READ_STEREODEVS:
-+ return IOCTL_OUT(arg, headphone ? SOUND_MASK_VOLUME : 0 );
-+ case SOUND_MIXER_READ_CAPS:
-+ return IOCTL_OUT(arg, 0);
-+
-+ case SOUND_MIXER_WRITE_VOLUME:
-+ IOCTL_IN(arg, data);
-+ Collie_Set_Volume(data);
-+ case SOUND_MIXER_READ_VOLUME:
-+ return IOCTL_OUT(arg, Collie_Get_Volume());
-+ case SOUND_MIXER_READ_TREBLE:
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_WRITE_TREBLE:
-+ return IOCTL_OUT(arg, 0);
-+
-+ case SOUND_MIXER_WRITE_MIC:
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_READ_MIC:
-+ return IOCTL_OUT(arg, 0);
-+
-+ case SOUND_MIXER_READ_SPEAKER:
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_WRITE_SPEAKER:
-+ return IOCTL_OUT(arg, 0);
-+ }
- return -EINVAL;
--
- }
-
-
-@@ -2198,32 +945,13 @@
-
- static void __init mixer_init(void)
- {
--#ifndef MODULE
-- int mixer_unit;
--#endif
-- ENTER(TRACE_ON,"mixer_init");
- mixer_unit = register_sound_mixer(&mixer_fops, -1);
- if (mixer_unit < 0) {
-- LEAVE(TRACE_ON,"mixer_init");
- return;
- }
--
- mixer.busy = 0;
-- sound.treble = 0;
-- sound.bass = 0;
-- switch (sound.mach.type) {
-- case DMASND_COLLIE:
-- // sound.volume_left = 0x3c;
-- // sound.volume_right = 0x3c;
-- sound.volume_left = 80;
-- sound.volume_right = 80;
-- collie_main_volume = sound.volume_left;
-- break;
-- }
--
-- // printk("mixer_init : ret \n");
--
-- LEAVE(TRACE_ON,"mixer_init");
-+ sound.volume = 80;
-+ Collie_volume_set(sound.volume);
- }
-
- /* This function allocates the buffer structure array and buffer data space
-@@ -2237,11 +965,9 @@
- char *dmabuf = 0;
- dma_addr_t dmaphys = 0;
-
-- ENTER(TRACE_ON,"sq_allocate_buffers");
- DPRINTK("sq_allocate_buffers\n");
-
- if (s->buffers) {
-- LEAVE(TRACE_ON,"sq_allocate_buffers");
- return -EBUSY;
- }
-
-@@ -2279,10 +1005,8 @@
-
- b->start = dmabuf;
- b->dma_addr = dmaphys;
-+ b->idx = frag;
- sema_init(&b->sem, 1);
-- DPRINTK("buf %d: start %p dma %p\n", frag, b->start,
-- b->dma_addr);
--
- dmabuf += s->fragsize;
- dmaphys += s->fragsize;
- dmasize -= s->fragsize;
-@@ -2291,13 +1015,12 @@
- s->buf_idx = 0;
- s->buf = &s->buffers[0];
-
-- LEAVE(TRACE_ON,"sq_allocate_buffers");
-+
- return 0;
-
- err:
- printk("sound driver : unable to allocate audio memory\n ");
- sq_release_buffers(s);
-- LEAVE(TRACE_ON,"sq_allocate_buffers");
- return -ENOMEM;
- }
-
-@@ -2307,7 +1030,6 @@
-
- static void sq_release_buffers(audio_stream_t * s)
- {
-- ENTER(TRACE_ON,"sq_release_buffers");
- DPRINTK("sq_release_buffers\n");
-
- /* ensure DMA won't run anymore */
-@@ -2328,7 +1050,6 @@
-
- s->buf_idx = 0;
- s->buf = NULL;
-- LEAVE(TRACE_ON,"sq_release_buffers");
- }
-
- static ssize_t sq_write(struct file *file, const char *src, size_t uLeft,
-@@ -2339,27 +1060,20 @@
- u_char *dest;
- ssize_t uUsed, bUsed, bLeft, ret = 0;
-
-- ENTER(TRACE_WRITE,"sq_write");
- DPRINTK("sq_write: uLeft=%d\n", uLeft);
-
-- /* OP_SHDN on */
-- Collie_OP_SHDN_on();
--
- switch (file->f_flags & O_ACCMODE) {
- case O_WRONLY:
- case O_RDWR:
- break;
- default:
-- LEAVE(TRACE_WRITE,"sq_write1");
- return -EPERM;
- }
-
- if (!s->buffers && sq_allocate_buffers(s)) {
-- LEAVE(TRACE_WRITE,"sq_write2");
- return -ENOMEM;
- }
-
--#if 1
- if (collie_resume == 1) {
- int i;
- collie_resume = 0;
-@@ -2367,10 +1081,9 @@
- udelay(1);
- }
- }
--#endif
- #ifdef CONFIG_PM
- /* Auto Power off cancel */
-- autoPowerCancel = 0;
-+// autoPowerCancel = 0;
- #endif
-
- while (uLeft > 0) {
-@@ -2379,41 +1092,30 @@
- /* Wait for a buffer to become free */
- if (file->f_flags & O_NONBLOCK) {
- ret = -EAGAIN;
-- ENTER(TRACE_SEM,"down_try sem");
- if (down_trylock(&b->sem)) {
-- LEAVE(TRACE_SEM,"down_try1 sem");
- break;
- }
-- LEAVE(TRACE_SEM,"down_try2 sem");
- } else {
- ret = -ERESTARTSYS;
-- ENTER(TRACE_SEM,"down_int sem");
-- //printk("### 0x%08x:%d\n", &b->sem.count, atomic_read(&b->sem.count));
- if (down_interruptible(&b->sem)) {
-- LEAVE(TRACE_SEM,"down_int1 sem");
- break;
- }
-- LEAVE(TRACE_SEM,"down_int2 sem");
- }
-
- dest = b->start + b->size;
- bUsed = 0;
- bLeft = s->fragsize - b->size;
-
-- if (ct_func) {
-- uUsed = ct_func(src, uLeft, dest, &bUsed, bLeft);
-+ if (collie_ct_s16) {
-+ uUsed = collie_ct_s16(src, uLeft, dest, &bUsed, bLeft);
- cpu_cache_clean_invalidate_range((unsigned long)dest,
- (unsigned long)(dest+(audio_fragsize)), 0);
- } else {
-- LEAVE(TRACE_WRITE,"sq_write3");
- return -EFAULT;
- }
-
- if (uUsed < 0) {
-- ENTER(TRACE_SEM,"up sem");
- up(&b->sem);
-- LEAVE(TRACE_SEM,"up sem");
-- LEAVE(TRACE_WRITE,"sq_write4");
- return -EFAULT;
- }
- src += uUsed;
-@@ -2421,9 +1123,7 @@
- b->size += bUsed;
-
- if (b->size < s->fragsize) {
-- ENTER(TRACE_SEM,"up sem");
- up(&b->sem);
-- LEAVE(TRACE_SEM,"up sem");
- break;
- }
-
-@@ -2431,7 +1131,7 @@
- sa1100_dma_queue_buffer(COLLIE_SOUND_DMA_CHANNEL,
- (void *) b, b->dma_addr, b->size);
-
-- Collie_volume_half_adjust();
-+ Collie_volume_set(sound.volume);
-
- b->size = 0; /* indicate that the buffer has been sent */
- NEXT_BUF(s, buf);
-@@ -2440,7 +1140,6 @@
- if ((src - buffer0))
- ret = src - buffer0;
- DPRINTK("sq_write: return=%d\n", ret);
-- LEAVE(TRACE_WRITE,"sq_write0");
- return ret;
- }
-
-@@ -2450,7 +1149,6 @@
- unsigned int mask = 0;
- int i;
-
-- ENTER(TRACE_ON,"sq_poll");
- DPRINTK("sq_poll(): mode=%s%s\n",
- (file->f_mode & FMODE_READ) ? "r" : "",
- (file->f_mode & FMODE_WRITE) ? "w" : "");
-@@ -2458,12 +1156,9 @@
- if (file->f_mode & FMODE_WRITE) {
- if (!output_stream.buffers
- && sq_allocate_buffers(&output_stream)) {
-- LEAVE(TRACE_ON,"sq_poll");
- return -ENOMEM;
- }
-- ENTER(TRACE_SEM,"poll_wait wait");
- poll_wait(file, &output_stream.buf->sem.wait, wait);
-- LEAVE(TRACE_SEM,"poll_wait wait");
- }
-
- if (file->f_mode & FMODE_WRITE) {
-@@ -2477,65 +1172,33 @@
- (mask & POLLIN) ? "r" : "",
- (mask & POLLOUT) ? "w" : "");
-
-- LEAVE(TRACE_ON,"sq_poll");
- return mask;
- }
-
- static int sq_open(struct inode *inode, struct file *file)
- {
-- ENTER(TRACE_ON,"sq_open");
- DPRINTK("sq_open\n");
-
- if (((file->f_flags & O_ACCMODE) == O_WRONLY)
- || ((file->f_flags & O_ACCMODE) == O_RDWR)) {
--#if 0
-- MOD_INC_USE_COUNT;
-- while(audio_wr_refcount) {
-- SLEEP(open_queue, ONE_SECOND);
-- if (SIGNAL_RECEIVED) {
-- MOD_DEC_USE_COUNT;
-- LEAVE(TRACE_ON,"sq_open");
-- return -EINTR;
-- }
-- }
--#else
- if (audio_wr_refcount) {
- DPRINTK(" sq_open EBUSY\n");
-- LEAVE(TRACE_ON,"sq_open");
- return -EBUSY;
- }
- MOD_INC_USE_COUNT;
--#endif
- audio_wr_refcount++;
- } else {
- DPRINTK(" sq_open EINVAL\n");
-- LEAVE(TRACE_ON,"sq_open");
- return -EINVAL;
- }
-
-- if (audio_wr_refcount == 1) {
-- DPRINTK("cold\n");
--
-- audio_fragsize = AUDIO_FRAGSIZE_DEFAULT;
-- audio_nbfrags = AUDIO_NBFRAGS_DEFAULT;
-- sq_release_buffers(&output_stream);
-- sound.minDev = MINOR(inode->i_rdev) & 0x0f;
-- sound.soft = sound.dsp;
-- sound.hard = sound.dsp;
--
-- if ((MINOR(inode->i_rdev) & 0x0f) == SND_DEV_AUDIO) {
-- sound_set_speed(8000);
-- sound_set_stereo(0);
-- sound_set_format(AFMT_MU_LAW);
-- }
-- Collie_audio_power_on();
-- }
-
--#if 0
-- MOD_INC_USE_COUNT;
--#endif
-- LEAVE(TRACE_ON,"sq_open");
-- return 0;
-+ audio_fragsize = AUDIO_FRAGSIZE_DEFAULT;
-+ audio_nbfrags = AUDIO_NBFRAGS_DEFAULT;
-+ sq_release_buffers(&output_stream);
-+ output_stream.buf_idx=0;
-+ Collie_audio_power_on();
-+ return 0;
- }
-
- static int sq_fsync(struct file *filp, struct dentry *dentry)
-@@ -2543,11 +1206,9 @@
- audio_stream_t *s = &output_stream;
- audio_buf_t *b = s->buf;
-
-- ENTER(TRACE_ON,"sq_fsync");
- DPRINTK("sq_fsync\n");
-
- if (!s->buffers) {
-- LEAVE(TRACE_ON,"sq_fsync");
- return 0;
- }
-
-@@ -2557,12 +1218,10 @@
-
- #ifdef CONFIG_PM
- /* Auto Power off cancel */
-- autoPowerCancel = 0;
-+// autoPowerCancel = 0;
- #endif
-
-- ENTER(TRACE_SEM,"down sem");
- down(&b->sem);
-- LEAVE(TRACE_SEM,"down sem");
- sa1100_dma_queue_buffer(COLLIE_SOUND_DMA_CHANNEL,
- (void *) b, b->dma_addr, b->size);
- b->size = 0;
-@@ -2576,23 +1235,15 @@
- * - the buffer was already free thus nothing else to sync.
- */
- b = s->buffers + ((s->nbfrags + s->buf_idx - 1) % s->nbfrags);
-- ENTER(TRACE_SEM,"down-int sem");
- if (down_interruptible(&b->sem)) {
-- LEAVE(TRACE_SEM,"down-int sem");
-- LEAVE(TRACE_ON,"sq_fsync");
- return -EINTR;
- }
-- LEAVE(TRACE_SEM,"down-int sem");
-- ENTER(TRACE_SEM,"up sem");
- up(&b->sem);
-- LEAVE(TRACE_SEM,"up sem");
-- LEAVE(TRACE_ON,"sq_fsync");
- return 0;
- }
-
- static int sq_release(struct inode *inode, struct file *file)
- {
-- ENTER(TRACE_ON,"sq_release");
- DPRINTK("sq_release\n");
-
- switch (file->f_flags & O_ACCMODE) {
-@@ -2606,24 +1257,12 @@
- }
-
- if (!audio_wr_refcount) {
-- sound.soft = sound.dsp;
-- sound.hard = sound.dsp;
-- sound_silence();
-- Collie_OP_SHDN_off();
-+ sa1100_dma_stop(COLLIE_SOUND_DMA_CHANNEL);
-+ sa1100_dma_flush_all(COLLIE_SOUND_DMA_CHANNEL);
-+ Collie_audio_power_off();
- }
-
--#if 0
-- switch (file->f_flags & O_ACCMODE) {
-- case O_WRONLY:
-- case O_RDWR:
-- if (!audio_wr_refcount) {
-- WAKE_UP(open_queue);
-- }
-- }
--#endif
--
- MOD_DEC_USE_COUNT;
-- LEAVE(TRACE_ON,"sq_release");
- return 0;
- }
-
-@@ -2634,8 +1273,8 @@
- u_long fmt;
- int data;
- long val;
-+// audio_buf_info abinfo;
-
-- ENTER(TRACE_ON,"sq_ioctl");
- switch (cmd) {
- case SNDCTL_DSP_RESET:
- switch (file->f_flags & O_ACCMODE) {
-@@ -2643,11 +1282,9 @@
- case O_RDWR:
- sq_release_buffers(&output_stream);
- }
-- LEAVE(TRACE_ON,"sq_ioctl");
- return 0;
- case SNDCTL_DSP_POST:
- case SNDCTL_DSP_SYNC:
-- LEAVE(TRACE_ON,"sq_ioctl");
- return sq_fsync(file, file->f_dentry);
-
- /* ++TeSche: before changing any of these it's
-@@ -2656,59 +1293,34 @@
- case SNDCTL_DSP_SPEED:
- sq_fsync(file, file->f_dentry);
- IOCTL_IN(arg, data);
-- LEAVE(TRACE_ON,"sq_ioctl");
- return IOCTL_OUT(arg, sound_set_speed(data));
- case SNDCTL_DSP_STEREO:
- sq_fsync(file, file->f_dentry);
- IOCTL_IN(arg, data);
-- LEAVE(TRACE_ON,"sq_ioctl");
- return IOCTL_OUT(arg, sound_set_stereo(data));
-- case SOUND_PCM_WRITE_CHANNELS:
-+ case SNDCTL_DSP_CHANNELS:
- sq_fsync(file, file->f_dentry);
- IOCTL_IN(arg, data);
-- LEAVE(TRACE_ON,"sq_ioctl");
- return IOCTL_OUT(arg, sound_set_stereo(data-1)+1);
- case SNDCTL_DSP_SETFMT:
- sq_fsync(file, file->f_dentry);
- IOCTL_IN(arg, data);
-- LEAVE(TRACE_ON,"sq_ioctl");
-- return IOCTL_OUT(arg, sound_set_format(data));
-+ return IOCTL_OUT(arg, CollieSetFormat(data));
- case SNDCTL_DSP_GETFMTS:
-- fmt = 0;
-- if (sound.trans) {
-- if (sound.trans->ct_ulaw)
-- fmt |= AFMT_MU_LAW;
-- if (sound.trans->ct_alaw)
-- fmt |= AFMT_A_LAW;
-- if (sound.trans->ct_s8)
-- fmt |= AFMT_S8;
-- if (sound.trans->ct_u8)
-- fmt |= AFMT_U8;
-- if (sound.trans->ct_s16be)
-- fmt |= AFMT_S16_BE;
-- if (sound.trans->ct_u16be)
-- fmt |= AFMT_U16_BE;
-- if (sound.trans->ct_s16le)
-- fmt |= AFMT_S16_LE;
-- if (sound.trans->ct_u16le)
-- fmt |= AFMT_U16_LE;
-- }
-- LEAVE(TRACE_ON,"sq_ioctl");
-+ fmt = AFMT_S16_LE;
- return IOCTL_OUT(arg, fmt);
- case SNDCTL_DSP_GETBLKSIZE:
-- LEAVE(TRACE_ON,"sq_ioctl");
- return IOCTL_OUT(arg, audio_fragsize);
- case SNDCTL_DSP_SUBDIVIDE:
- break;
- case SNDCTL_DSP_SETFRAGMENT:
- if (output_stream.buffers) {
-- LEAVE(TRACE_ON,"sq_ioctl");
- return -EBUSY;
- }
- get_user(val, (long *) arg);
- audio_fragsize = 1 << (val & 0xFFFF);
-- if (audio_fragsize < 16)
-- audio_fragsize = 16;
-+ if (audio_fragsize < 256)
-+ audio_fragsize = 256;
- if (audio_fragsize > 16384)
- audio_fragsize = 16384;
- audio_nbfrags = (val >> 16) & 0x7FFF;
-@@ -2717,46 +1329,54 @@
- if (audio_nbfrags * audio_fragsize > 128 * 1024)
- audio_nbfrags = 128 * 1024 / audio_fragsize;
- if (sq_allocate_buffers(&output_stream)) {
-- LEAVE(TRACE_ON,"sq_ioctl");
- return -ENOMEM;
- }
-- LEAVE(TRACE_ON,"sq_ioctl");
- return 0;
-
--#if 1 // 2003.2.14
-+/* case SNDCTL_DSP_GETOSPACE:
-+ abinfo.fragsize = audio_fragsize;
-+ abinfo.fragstotal = audio_nbfrags;
-+ abinfo.fragments = lastsent-output_stream.buf_idx;
-+ if (abinfo.fragments<0)
-+ abinfo.fragments += abinfo.fragstotal;
-+ abinfo.bytes = abinfo.fragments*abinfo.fragsize;
-+ return copy_to_user((void *)arg, &abinfo, sizeof(abinfo)) ? -EFAULT : 0;
-+*/
- case SNDCTL_DSP_GETOSPACE:
- {
-- audio_buf_info inf = { 0, };
-+ audio_stream_t *s = &output_stream;
-+ audio_buf_info *inf = (audio_buf_info *) arg;
-+ int err = verify_area(VERIFY_WRITE, inf, sizeof(*inf));
- int i;
-+ int frags = 0, bytes = 0;
-
-- if (!(file->f_mode & FMODE_WRITE))
-- return -EINVAL;
-- if (!output_stream.buffers && sq_allocate_buffers(&output_stream))
-- return -ENOMEM;
-- for (i = 0; i < output_stream.nbfrags; i++) {
-- if (atomic_read(&output_stream.buffers[i].sem.count) > 0) {
-- if (output_stream.buffers[i].size == 0)
-- inf.fragments++;
-- inf.bytes += output_stream.fragsize - output_stream.buffers[i].size;
-- }
-+ if (err)
-+ return err;
-+ if (output_stream.buffers) {
-+ for (i = 0; i < s->nbfrags; i++) {
-+ if (atomic_read(&s->buffers[i].sem.count) > 0) {
-+ if (s->buffers[i].size == 0) frags++;
-+ bytes += s->fragsize - s->buffers[i].size;
-+ }
-+ }
-+ put_user(s->nbfrags, &inf->fragstotal);
-+ put_user(s->fragsize, &inf->fragsize);
-+ } else {
-+ frags=audio_nbfrags;
-+ bytes=frags*audio_fragsize;
-+ put_user(frags, &inf->fragstotal);
-+ put_user(audio_fragsize, &inf->fragsize);
- }
-- inf.fragstotal = output_stream.nbfrags;
-- inf.fragsize = output_stream.fragsize;
-- return copy_to_user((void *)arg, &inf, sizeof(inf));
-+ put_user(frags, &inf->fragments);
-+ return put_user(bytes, &inf->bytes);
- }
--#endif
--
-
- default:
-- LEAVE(TRACE_ON,"sq_ioctl");
- return mixer_ioctl(inode, file, cmd, arg);
- }
-- LEAVE(TRACE_ON,"sq_ioctl");
- return -EINVAL;
- }
-
--
--
- static struct file_operations sq_fops =
- {
- llseek: sound_lseek,
-@@ -2770,40 +1390,18 @@
-
- static void __init sq_init(void)
- {
--#ifndef MODULE
-- int sq_unit;
--#endif
-- ENTER(TRACE_ON,"sq_init");
- sq_unit = register_sound_dsp(&sq_fops, -1);
- if (sq_unit < 0) {
-- LEAVE(TRACE_ON,"sq_init");
- return;
- }
-
-- /* whatever you like as startup mode for /dev/dsp,
-- * (/dev/audio hasn't got a startup mode). note that
-- * once changed a new open() will *not* restore these!
-- */
-- sound.dsp.format = AFMT_S16_LE;
--
-- sound.dsp.stereo = 0;
-- sound.dsp.size = 16;
--
-- /* set minimum rate possible without expanding */
-- switch (sound.mach.type) {
-- case DMASND_COLLIE:
-- sound.dsp.speed = 8000;
-- break;
-- }
--
-- /* before the first open to /dev/dsp this wouldn't be set */
-- sound.soft = sound.dsp;
-- sound.hard = sound.dsp;
-- sound.trans = &transCollie;
--
-- CollieSetFormat(sound.dsp.format);
-- sound_silence();
-- LEAVE(TRACE_ON,"sq_init");
-+ sound.format = AFMT_S16_LE;
-+ sound.stereo = 1;
-+ sound.speed = 44100;
-+
-+ CollieSetFormat(AFMT_S16_LE);
-+ Collie_audio_power_off();
-+ output_stream.buf=output_stream.buffers=NULL;
- }
-
- /*
-@@ -2816,9 +1414,7 @@
- char *buffer = state.buf;
- int len = 0;
-
-- ENTER(TRACE_ON,"state_open");
- if (state.busy) {
-- LEAVE(TRACE_ON,"state_open");
- return -EBUSY;
- }
-
-@@ -2828,8 +1424,8 @@
-
- len += sprintf(buffer+len, " COLLIE DMA sound driver:\n");
-
-- len += sprintf(buffer+len, "\tsound.format = 0x%x", sound.soft.format);
-- switch (sound.soft.format) {
-+ len += sprintf(buffer+len, "\tsound.format = 0x%x", sound.format);
-+ switch (sound.format) {
- case AFMT_MU_LAW:
- len += sprintf(buffer+len, " (mu-law)");
- break;
-@@ -2857,22 +1453,19 @@
- }
- len += sprintf(buffer+len, "\n");
- len += sprintf(buffer+len, "\tsound.speed = %dHz (phys. %dHz)\n",
-- sound.soft.speed, sound.hard.speed);
-+ sound.speed, sound.speed);
- len += sprintf(buffer+len, "\tsound.stereo = 0x%x (%s)\n",
-- sound.soft.stereo,
-- sound.soft.stereo ? "stereo" : "mono");
-+ sound.stereo,
-+ sound.stereo ? "stereo" : "mono");
- state.len = len;
-- LEAVE(TRACE_ON,"state_open");
- return 0;
- }
-
-
- static int state_release(struct inode *inode, struct file *file)
- {
-- ENTER(TRACE_ON,"state_release");
- state.busy = 0;
- MOD_DEC_USE_COUNT;
-- LEAVE(TRACE_ON,"state_release");
- return 0;
- }
-
-@@ -2881,19 +1474,15 @@
- loff_t *ppos)
- {
- int n = state.len - state.ptr;
-- ENTER(TRACE_ON,"state_read");
- if (n > count)
- n = count;
- if (n <= 0) {
-- LEAVE(TRACE_ON,"state_read");
- return 0;
- }
- if (copy_to_user(buf, &state.buf[state.ptr], n)) {
-- LEAVE(TRACE_ON,"state_read");
- return -EFAULT;
- }
- state.ptr += n;
-- LEAVE(TRACE_ON,"state_read");
- return n;
- }
-
-@@ -2909,20 +1498,11 @@
-
- static void __init state_init(void)
- {
--#ifndef MODULE
-- int state_unit;
--#endif
-- ENTER(TRACE_ON,"state_unit");
- state_unit = register_sound_special(&state_fops, SND_DEV_STATUS);
- if (state_unit < 0) {
-- LEAVE(TRACE_ON,"state_unit");
- return;
- }
- state.busy = 0;
--
-- // printk("state_init : ret \n");
-- LEAVE(TRACE_ON,"state_unit");
--
- }
-
-
-@@ -2930,8 +1510,6 @@
-
- static long long sound_lseek(struct file *file, long long offset, int orig)
- {
-- ENTER(TRACE_ON,"sound_lseek");
-- LEAVE(TRACE_ON,"sound_lseek");
- return -ESPIPE;
- }
-
-@@ -2941,96 +1519,41 @@
- static int collie_sound_pm_callback(struct pm_dev *pm_dev,
- pm_request_t req, void *data)
- {
-- ENTER(TRACE_PM,"collie_sound_pm_callback");
- switch (req) {
- case PM_SUSPEND:
- #ifdef COLLIE_TRY_ONE
- disable_irq(IRQ_GPIO_nREMOCON_INT);
- #endif
--#ifdef TRY_DELAY_OFF /* H.Hayami SHARP 2001.12.19 */
-- collieDoDelayedSilence();
-- collieCancelDelayedSilence();
--#endif
-- if (audio_wr_refcount == 1) {
-- Collie_volume_off();
-- Collie_hard_mute_on();
-- Collie_soft_mute_on();
-- sa1100_dma_sleep((dmach_t)COLLIE_SOUND_DMA_CHANNEL);
--
--#if 0 /* H.Hayami SHARP 2001.12.18 */
--#if !defined(CONFIG_COLLIE_TS) && !defined(CONFIG_COLLIE_TR0) && \
-- !defined(CONFIG_COLLIE_TR1) && !defined(CONFIG_COLLIE_DEV)
-- Collie_volume_off();
--#endif
--#endif
-- Collie_OP_SHDN_off();
-- Collie_soft_DAC_off();
-- Collie_paif_off();
-- Collie_audio_clock_off();
-- //Collie_MIC_on();
-- Collie_DAC_off();
-- Collie_AMP_off();
-- } else {
-- sa1100_dma_sleep((dmach_t)COLLIE_SOUND_DMA_CHANNEL);
-- }
-- Collie_sound_hard_term();
-+ sa1100_dma_sleep((dmach_t)COLLIE_SOUND_DMA_CHANNEL);
-+ Collie_audio_power_off();
- break;
- case PM_RESUME:
--/***** DEBUG *****g
--printk("collie_sound_pm_callback: audio_wr_refcount=%d\n", audio_wr_refcount);
--*****************/
-+
- #ifdef COLLIE_TRY_ONE
- enable_irq(IRQ_GPIO_nREMOCON_INT);
- #endif
--
-- Collie_sound_hard_init();
--
-- if (audio_wr_refcount == 1) {
-- collie_resume = 1;
--
-- Collie_audio_power_on();
--
-- sa1100_dma_wakeup((dmach_t)COLLIE_SOUND_DMA_CHANNEL);
--#if 0 /* H.Hayami SHARP 2001.12.18 */
-- Collie_soft_mute_off();
-- Collie_hard_mute_off();
--#endif
-- } else {
-+ Collie_sound_hard_init(); /* this needs to be done! */
-+ collie_resume = 1;
-+ Collie_audio_power_off();
-+ if (audio_wr_refcount) Collie_audio_power_on();
-+ if (collie_recording) Collie_recording_on();
-+ sa1100_dma_wakeup((dmach_t)COLLIE_SOUND_DMA_CHANNEL);
- #ifdef COLLIE_TRY_ONE
-- if ( !( GPLR & GPIO_nREMOCON_INT ) )
-+ if ( !( GPLR & GPIO_nREMOCON_INT ) )
- Collie_DAC_on();
- #endif
-- sa1100_dma_wakeup((dmach_t)COLLIE_SOUND_DMA_CHANNEL);
-- }
--
--
- break;
--
- }
-- LEAVE(TRACE_PM,"collie_sound_pm_callback");
- return 0;
- }
- #endif
-
-
- #ifdef COLLIE_TRY_ONE
--
--static void collie_audio_on(void)
--{
-- while(1) {
-- sleep_on(&audio_on);
--
-- /* DAC ON */
-- Collie_DAC_on();
-- // printk("call audio on \n");
--
-- }
--}
--
- void Collie_rc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
- {
-- // printk("int !\n");
-- wake_up(&audio_on);
-+ headphone=!headphone;
-+ printk("%s headphone \n",headphone ? "connected" : "disconnected");
- }
- #endif
-
-@@ -3038,113 +1561,85 @@
-
- int __init Collie_sound_init(void)
- {
-- int has_sound = 0;
--
--
-- ENTER(TRACE_ON,"Collie_sound_init");
-- has_sound = 1;
-- sound.mach = machCollie;
--
-- if (!has_sound) {
-- LEAVE(TRACE_ON,"Collie_sound_init");
-- return -1;
-- }
--
--#ifdef TRY_DELAY_OFF /* H.Hayami SHARP 2001.12.19 */
-- sema_init(&df_sem, 1);
-- kernel_thread(collieDelayedSilence, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
--#endif
--
- Collie_sound_hard_init();
--
-- if (!sound.mach.irqinit()) {
-+ if (!CollieIrqInit()) {
- printk("Sound driver: Interrupt initialization failed\n");
-- LEAVE(TRACE_ON,"Collie_sound_init");
- return -1;
- }
--
-- /* Set up sound queue, /dev/audio and /dev/dsp. */
--
- /* Set default settings. */
- sq_init();
--
- /* Set up /dev/sndstat. */
- state_init();
--
- /* Set up /dev/mixer. */
- mixer_init();
--
- #ifdef MODULE
- irq_installed = 1;
- #endif
--
- printk("Collie Sound Driver Installed\n");
--
- #ifdef CONFIG_PM
- collie_sound_pm_dev = pm_register(PM_SYS_DEV, 0,
- collie_sound_pm_callback);
- #endif
--
--
- #ifdef COLLIE_TRY_ONE
- /* enable int sw */
- collie_rc_set_int_mode();
--
- /* GPIO15(int):IN, GPIO18(sw):OUT */
- GPDR = ((GPDR)&~GPIO_nREMOCON_INT)|GPIO_REMOCON_ADC_SW;
--
- /* GPIO15,18:not Alternate */
- GAFR &= ~(GPIO_nREMOCON_INT|GPIO_REMOCON_ADC_SW);
--
-+ /* Initialize headphone state */
-+ headphone=!(GPLR & GPIO_nREMOCON_INT);
- /* GPIO15:Falling Edge */
-- set_GPIO_IRQ_edge(GPIO_nREMOCON_INT, GPIO_FALLING_EDGE);
--
-+ set_GPIO_IRQ_edge(GPIO_nREMOCON_INT, GPIO_BOTH_EDGES);
- /* Register interrupt handler */
- if ( request_irq(IRQ_GPIO_nREMOCON_INT, Collie_rc_interrupt,
-- SA_INTERRUPT, "INSERT-HEADPHONE", Collie_rc_interrupt)) {
-- printk("%s: request_irq(%d) failed.\n",
-- __FUNCTION__, IRQ_GPIO_nREMOCON_INT);
-- }
-+ SA_INTERRUPT, "headphone", 0)) {
-+ printk("headphone: request_irq failed.\n");
-
-- /* Make threads */
-- kernel_thread(collie_audio_on, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
-+ }
-+ printk("Requested irq collie_rc succesfully (headphone) \n");
-+ printk("Headphone is now %s\n",headphone ? "connected" : "disconnected");
- #endif
-
--
-- LEAVE(TRACE_ON,"Collie_sound_init");
-+ Collie_audio_power_on(); // decreasing rec. noise?
-+ Collie_audio_power_off();
- return 0;
- }
-
--module_init(Collie_sound_init);
--
--
- #ifdef MODULE
--
--int init_module(void)
-+static int collie_ssp_init_module(void)
- {
-- ENTER(TRACE_ON,"init_module");
- Collie_sound_init();
-- LEAVE(TRACE_ON,"init_module");
- return 0;
- }
-
--void cleanup_module(void)
-+static void collie_ssp_cleanup_module(void)
- {
-- ENTER(TRACE_ON,"cleanup_module");
-+#ifdef CONFIG_PM
-+ pm_unregister(collie_sound_pm_dev);
-+#endif
- if (irq_installed) {
-- sound_silence();
-- sound.mach.irqcleanup();
-+ sa1100_dma_stop(COLLIE_SOUND_DMA_CHANNEL);
-+ sa1100_dma_flush_all(COLLIE_SOUND_DMA_CHANNEL);
-+ Collie_audio_power_off();
-+ sa1100_free_dma(COLLIE_SOUND_DMA_CHANNEL);
- }
--
-- sq_release_buffers();
--
-- if (mixer_unit >= 0)
-- unregister_sound_mixer(mixer_unit);
-- if (state_unit >= 0)
-- unregister_sound_special(state_unit);
-- if (sq_unit >= 0)
-- unregister_sound_dsp(sq_unit);
-- LEAVE(TRACE_ON,"cleanup_module");
--}
--
-+#ifdef COLLIE_TRY_ONE
-+ free_irq(IRQ_GPIO_nREMOCON_INT,0);
-+#endif
-+ unregister_sound_mixer(mixer_unit);
-+ unregister_sound_special(state_unit);
-+ unregister_sound_dsp(sq_unit);
-+ printk("collie_ssp has to go now, see you later!\n");
-+}
-+
-+module_init(collie_ssp_init_module);
-+module_exit(collie_ssp_cleanup_module);
-+MODULE_DESCRIPTION("Collie 16bit sound driver");
-+MODULE_AUTHOR("SHARP");
-+MODULE_LICENSE("GPL");
-+EXPORT_SYMBOL(Collie_recording_off);
-+EXPORT_SYMBOL(Collie_recording_on);
-+EXPORT_SYMBOL(collie_recording);
- #endif /* MODULE */
-+
-diff -Nuar linux-2.4.18/drivers/sound/collie_tc35143af.c linux-2.4.18p/drivers/sound/collie_tc35143af.c
---- linux-2.4.18/drivers/sound/collie_tc35143af.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.18p/drivers/sound/collie_tc35143af.c 2004-10-13 15:26:20.336631864 +0200
-@@ -0,0 +1,1457 @@
-+/*
-+ TODO
-+
-+ buzzer compatibility is not fool proof - if an app starts sending buzzer ioctls
-+ and then write or read, nothing good will happen / but this api is obsolote anyway
-+
-+ mixer_ioctls missing: write/read_mic/igain (there are sane defaults for those)
-+
-+ fixed samplerate at 22050hz (mono,s16_le), although it can be changed
-+ between 8000-22050hz hardwarewise
-+
-+
-+ DONE
-+
-+ buffers are only allocated once, and freed when module is unloaded
-+ mute left channel when duplex playing & recording
-+ cleanup
-+ depend on collie_ssp, and call needed functions when needed
-+ (recording noise should be gone too as a consequence)
-+ lineo's getospace incorporated (getispace left alone)
-+ "optimized" default fragsize and number, so there is now no clicking all the time
-+ commented out scndctl_dsp_setfragment so that no application can set bad settings (eg.xmms)
-+ if you start reading from this device, than it won't let you write later unless you close it first
-+ (and vica-versa)
-+ speaker is muted if nothing is playing, so noise is gone
-+
-+*/
-+
-+#include <linux/module.h>
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/poll.h>
-+#include <linux/major.h>
-+#include <linux/config.h>
-+#include <linux/fcntl.h>
-+#include <linux/errno.h>
-+#include <linux/mm.h>
-+#include <linux/slab.h>
-+#include <linux/sound.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+
-+#include <linux/pm.h>
-+
-+#include <asm/system.h>
-+#include <asm/irq.h>
-+#include <asm/pgtable.h>
-+#include <asm/uaccess.h>
-+#include <asm/io.h>
-+#include <asm/dma.h>
-+
-+#include <asm/ucb1200.h>
-+#include <linux/soundcard.h>
-+#include <asm/proc/cache.h>
-+
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/tc35143.h>
-+
-+#undef DEBUG
-+#ifdef DEBUG
-+#define DPRINTK( x... ) printk( ##x )
-+#else
-+#define DPRINTK( x... )
-+#endif
-+
-+extern int collie_recording;
-+extern void Collie_recording_on(void);
-+extern void Collie_recording_off(void);
-+
-+int collie_tc35143f_irq = -1;
-+int collie_tc35143f_input_irq = -1;
-+
-+#define COLLIE_BUZZER_DMA_CHANNEL (collie_tc35143f_irq)
-+#define COLLIE_BUZZER_DMA_CHANNEL_INPUT (collie_tc35143f_input_irq)
-+#define COLLIE_GPIO_MIC GPIO_GPIO (17)
-+
-+#define SND_NDEVS 256 /* Number of supported devices */
-+#define SND_DEV_CTL 0 /* Control port /dev/mixer */
-+#define SND_DEV_SEQ 1 /* Sequencer output /dev/sequencer (FM synthesizer and MIDI output) */
-+#define SND_DEV_MIDIN 2 /* Raw midi access */
-+#define SND_DEV_DSP 3 /* Digitized voice /dev/dsp */
-+#define SND_DEV_AUDIO 4 /* Sparc compatible /dev/audio */
-+#define SND_DEV_DSP16 5 /* Like /dev/dsp but 16 bits/sample */
-+#define SND_DEV_STATUS 6 /* /dev/sndstat */
-+/* #7 not in use now. Was in 2.4. Free for use after v3.0. */
-+#define SND_DEV_SEQ2 8 /* /dev/sequencer, level 2 interface */
-+#define SND_DEV_SNDPROC 9 /* /dev/sndproc for programmable devices */
-+#define SND_DEV_PSS SND_DEV_SNDPROC
-+
-+#ifdef MODULE
-+static int sq_unit = -1;
-+static int mixer_unit = -1;
-+static int state_unit = -1;
-+static int irq_installed = 0;
-+#endif /* MODULE */
-+
-+#ifdef CONFIG_PM
-+static struct pm_dev* collie_sound_pm_dev;
-+#endif
-+
-+/*** Some declarations ***********************************************/
-+static int collie_buzzer_volume = 100;
-+static int audio_igain = 0;
-+static int audio_iamp = 0x05;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+static struct ucb1x00 * ucbstruct;
-+#endif
-+static int TC35143f_control_reg_a;
-+static int TC35143f_control_reg_b;
-+static int TC35143f_mode;
-+
-+#define AUDIO_NBFRAGS_DEFAULT 32
-+#define AUDIO_FRAGSIZE_DEFAULT 2048
-+
-+typedef struct {
-+ int size; /* buffer size */
-+ char *start; /* points to actual buffer */
-+ dma_addr_t dma_addr; /* physical buffer address */
-+ struct semaphore sem; /* down before touching the buffer */
-+ int master; /* master owner for buffer allocation */
-+ u_int idx; /* buffer index, so that we know which buffer was sent last*/
-+} audio_buf_t;
-+
-+typedef struct {
-+ audio_buf_t *buffers; /* pointer to audio buffer structures */
-+ audio_buf_t *buf; /* current buffer used by read/write */
-+ u_int buf_idx; /* index for the pointer above... */
-+ u_int fragsize; /* fragment i.e. buffer size */
-+ u_int nbfrags; /* nbr of fragments i.e. buffers */
-+} audio_stream_t;
-+
-+static audio_stream_t output_stream, input_stream;
-+
-+#define NEXT_BUF(_s_,_b_) { \
-+ (_s_)->_b_##_idx++; \
-+ (_s_)->_b_##_idx %= (_s_)->nbfrags; \
-+ (_s_)->_b_ = (_s_)->buffers + (_s_)->_b_##_idx; }
-+
-+/* Current specs for incoming audio data */
-+static u_int audio_fragsize=AUDIO_FRAGSIZE_DEFAULT;
-+static u_int audio_nbfrags=AUDIO_NBFRAGS_DEFAULT;
-+
-+static volatile int audio_refcount; /* nbr of concurrent open() for playback */
-+typedef enum { REC,PLAY,NA,BUZZ } collie_tc_status_t;
-+static collie_tc_status_t collie_tc_status;
-+int collie_tc_muted;
-+
-+#define IOCTL_IN(arg, ret) \
-+ do { int error = get_user(ret, (int *)(arg)); \
-+ if (error) return error; \
-+ } while (0)
-+#define IOCTL_OUT(arg, ret) ioctl_return((int *)(arg), ret)
-+
-+/*** "Translations" ************************************************************/
-+
-+static ssize_t collie_ct_s16(const u_char *userPtr, size_t userCount,
-+ u_char frame[], ssize_t *frameUsed,
-+ ssize_t frameLeft);
-+static signed short ct_out=0;
-+/*** Low level stuff *********************************************************/
-+
-+
-+typedef struct {
-+ int format; /* AFMT_* */
-+ int stereo; /* 0 = mono, 1 = stereo */
-+ int size; /* 8/16 bit*/
-+ int speed; /* speed */
-+ int volume;
-+} SETTINGS;
-+
-+static SETTINGS sound;
-+
-+#ifdef CONFIG_PM
-+//extern int autoPowerCancel;
-+#endif
-+
-+static void Collie_Set_Volume(int volume);
-+static int Collie_Get_Volume(void);
-+static int CollieIrqInit(void);
-+static int CollieSetFormat(int format);
-+static void Collie_sq_interrupt(void*, int);
-+static int sq_allocate_buffers(audio_stream_t*);
-+static void sq_release_buffers(audio_stream_t*);
-+
-+/*** Mid level stuff *********************************************************/
-+static int sound_set_speed(int speed);
-+
-+/*
-+ * /dev/mixer abstraction
-+ */
-+
-+struct sound_mixer {
-+ int busy;
-+};
-+
-+static struct sound_mixer mixer;
-+
-+/*
-+ * /dev/sndstat
-+ */
-+
-+/*** Common stuff ********************************************************/
-+
-+static long long sound_lseek(struct file *file, long long offset, int orig);
-+static inline int ioctl_return(int *addr, int value)
-+{
-+ if (value < 0) {
-+ return(value);
-+ }
-+ return put_user(value, addr)? -EFAULT: 0;
-+}
-+
-+static void wait_ms(int ten_ms)
-+{
-+ schedule_timeout(ten_ms);
-+}
-+
-+/*** Translation ************************************************************/
-+
-+static ssize_t collie_ct_s16(const u_char *userPtr, size_t userCount,
-+ u_char frame[], ssize_t *frameUsed,
-+ ssize_t frameLeft)
-+{
-+ ssize_t count, used;
-+ signed short *fp = (unsigned short *) &frame[*frameUsed];
-+ signed short *up = (unsigned short *) userPtr;
-+
-+ frameLeft >>= 1;
-+ userCount >>= 1;
-+ used = count = (userCount < frameLeft) ? userCount : frameLeft;
-+
-+ while (count > 0) {
-+ signed short data;
-+ if (get_user(data, up++)) {
-+ return -EFAULT;
-+ } /* lowpass filtering, not that it matters much - something is resonating inside the Zaurus at high frequencies ? */
-+ *fp++ = ct_out = (short)( ( (long)data + (long)ct_out ) >> 1LL );
-+ count--;
-+ }
-+
-+ *frameUsed += used * 2;
-+ return used * 2;
-+}
-+
-+/*** HARDWARE dependent stuff *********************************************************/
-+#define VOL_THRES 10
-+#define CODEC_ASD_NUMERATOR 13
-+/*~ (9216000 / ( 32 * 22050 )) */
-+
-+static int Collie_Sampling_value(void)
-+{
-+ int asd = CODEC_ASD_NUMERATOR;
-+ DPRINTK("Collie_Sampling_value %x\n",asd);
-+ return asd;
-+}
-+
-+static void Collie_sound_hard_init(void)
-+{
-+ int asd;
-+
-+ DPRINTK("CollieInit\n");
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucb1x00_enable(ucbstruct);
-+ ucb1x00_io_set_dir(ucbstruct,0, TC35143_GPIO_BUZZER_BIAS);
-+ ucb1x00_disable(ucbstruct);
-+#else
-+ ucb1200_set_io_direction(TC35143_GPIO_BUZZER_BIAS, TC35143_IODIR_OUTPUT);
-+#endif
-+
-+ DPRINTK("TC35143F Init");
-+
-+ // init MCP
-+ asd = Collie_Sampling_value();
-+ Ser4MCCR0 &= ~MCCR0_MCE;
-+ Ser4MCCR0 &= ~0xff;
-+ Ser4MCCR0 |= (MCCR0_ARE | MCCR0_ATE |MCCR0_ADM | MCCR0_ECS | asd);
-+ Ser4MCCR0 |= MCCR0_MCE;
-+ Ser4MCSR = 0xffffffff;
-+
-+ DPRINTK("Init MCP %x\n",Ser4MCCR0);
-+}
-+
-+static void Collie_audio_power_on(void)
-+{
-+ if ( collie_buzzer_volume > 100 ) collie_buzzer_volume = 100;
-+ if ( collie_buzzer_volume < 0 ) collie_buzzer_volume = 0;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucb1x00_enable(ucbstruct);
-+#endif
-+ TC35143f_control_reg_a = ( TC35143_VDIV_22KHZ );
-+ TC35143f_control_reg_b = ( TC35143_VADMUTE | TC35143_VHSMUTE | ( 7 - collie_buzzer_volume / 13));
-+ TC35143f_mode = ( TC35143_VOFFCAN | TC35143_VCOF_22_OR_16KHZ );
-+ TC35143f_control_reg_a &= ~(TC35143_VINSEL_MASK | TC35143_VGAIN_MASK | TC35143_VAMP_MASK);
-+ TC35143f_control_reg_a |= (TC35143_VINSEL_VBIN2 | ((audio_igain & 0x3)<<11) | ((audio_iamp & 0x0f)<<7));
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucb1x00_reg_write(ucbstruct,TC35143_CONTROL_REG_B , TC35143f_control_reg_b);
-+ ucb1x00_reg_write(ucbstruct,TC35143_CONTROL_REG_A , TC35143f_control_reg_a);
-+ ucb1x00_reg_write(ucbstruct,TC35143_MODE_REG , TC35143f_mode );
-+ ucb1x00_io_write(ucbstruct, TC35143_GPIO_BUZZER_BIAS,0);
-+ ucb1x00_disable(ucbstruct);
-+#else
-+ ucb1200_write_reg(TC35143_CONTROL_REG_B , TC35143f_control_reg_b );
-+ ucb1200_write_reg(TC35143_MODE_REG , TC35143f_mode );
-+ ucb1200_write_reg(TC35143_CONTROL_REG_A , TC35143f_control_reg_a );
-+ ucb1200_set_io(TC35143_GPIO_BUZZER_BIAS, TC35143_IODAT_HIGH);
-+#endif
-+ collie_tc_muted=1;
-+}
-+
-+static void Collie_audio_power_off(void){ /* Disable sound only */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucb1x00_enable(ucbstruct);
-+ ucb1x00_io_write(ucbstruct,0, TC35143_GPIO_BUZZER_BIAS);
-+#else
-+ ucb1200_set_io(TC35143_GPIO_BUZZER_BIAS, TC35143_IODAT_LOW);
-+#endif
-+
-+ TC35143f_control_reg_a = ( TC35143_VDIV_22KHZ );
-+ TC35143f_control_reg_b = ( TC35143_ALL_MUTE );
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucb1x00_reg_write(ucbstruct,TC35143_CONTROL_REG_B , TC35143f_control_reg_b);
-+ ucb1x00_reg_write(ucbstruct,TC35143_CONTROL_REG_A , TC35143f_control_reg_a);
-+ ucb1x00_disable(ucbstruct);
-+#else
-+ ucb1200_write_reg(TC35143_CONTROL_REG_B , TC35143f_control_reg_b );
-+ ucb1200_write_reg(TC35143_CONTROL_REG_A , TC35143f_control_reg_a );
-+#endif
-+}
-+
-+static void collie_tc_mute_on(void){
-+ unsigned int reg_b;
-+ unsigned int reg_a;
-+
-+ if (!collie_tc_muted) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucb1x00_enable(ucbstruct);
-+ reg_b = ucb1x00_reg_read(ucbstruct,TC35143_CONTROL_REG_B);
-+ reg_a = ucb1x00_reg_read(ucbstruct,TC35143_CONTROL_REG_A);
-+#else
-+ reg_b = ucb1200_read_reg(TC35143_CONTROL_REG_B);
-+ reg_a = ucb1200_read_reg(TC35143_CONTROL_REG_A);
-+#endif
-+ reg_b &= ~TC35143_VOUT1_EN;
-+ reg_a &= ~TC35143_VOUT2_EN;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucb1x00_reg_write(ucbstruct,TC35143_CONTROL_REG_A, reg_a);
-+ ucb1x00_reg_write(ucbstruct,TC35143_CONTROL_REG_B, reg_b);
-+ ucb1x00_disable(ucbstruct);
-+#else
-+ ucb1200_write_reg(TC35143_CONTROL_REG_A, reg_a);
-+ ucb1200_write_reg(TC35143_CONTROL_REG_B, reg_b);
-+#endif
-+ collie_tc_muted=1;
-+ }
-+}
-+
-+static void collie_tc_mute_off(void){
-+ unsigned int reg_b;
-+ unsigned int reg_a;
-+
-+ if (collie_tc_muted) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucb1x00_enable(ucbstruct);
-+ reg_b = ucb1x00_reg_read(ucbstruct,TC35143_CONTROL_REG_B);
-+ reg_a = ucb1x00_reg_read(ucbstruct,TC35143_CONTROL_REG_A);
-+#else
-+ reg_b = ucb1200_read_reg(TC35143_CONTROL_REG_B);
-+ reg_a = ucb1200_read_reg(TC35143_CONTROL_REG_A);
-+#endif
-+ reg_b |= TC35143_VOUT1_EN ;
-+ reg_b &= ~7;
-+ reg_b |= ( 7 - collie_buzzer_volume / 13);
-+ reg_a |= TC35143_VOUT2_EN;
-+ reg_a &= ~(TC35143_VGAIN_MASK | TC35143_VAMP_MASK);
-+ reg_a |= (((audio_igain & 0x3)<<11) | ((audio_iamp & 0x0f)<<7));
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucb1x00_reg_write(ucbstruct,TC35143_CONTROL_REG_A, reg_a);
-+ ucb1x00_reg_write(ucbstruct,TC35143_CONTROL_REG_B, reg_b);
-+ ucb1x00_disable(ucbstruct);
-+#else
-+ ucb1200_write_reg(TC35143_CONTROL_REG_A, reg_a);
-+ ucb1200_write_reg(TC35143_CONTROL_REG_B, reg_b);
-+#endif
-+ collie_tc_muted=0;
-+ }
-+}
-+
-+
-+static void Collie_volume_set(int dest)
-+{
-+ if (collie_buzzer_volume==dest) return;
-+ collie_buzzer_volume=dest;
-+ collie_tc_mute_on();
-+ collie_tc_mute_off();
-+}
-+
-+
-+/*********** GENERAL stuff, same as collie_ssp *******************************/
-+
-+
-+static void Collie_Set_Volume(int volume)
-+{
-+ sound.volume = volume & 0xff;
-+ sound.volume += ( volume & 0xff00 >> 8);
-+ sound.volume >>=1;
-+ if (sound.volume>100) sound.volume=100;
-+}
-+
-+static int Collie_Get_Volume(void)
-+{
-+ return ( sound.volume << 8 | sound.volume );
-+}
-+
-+static void Collie_sq_interrupt(void* id, int size)
-+{
-+ audio_buf_t *b = (audio_buf_t *) id;
-+ audio_buf_t *b2 = output_stream.buffers + ((b->idx + 1) % output_stream.nbfrags);
-+
-+ /* If this is the last buffer for know, let's mute the speaker */
-+ if (!down_trylock(&b2->sem)) {
-+ collie_tc_mute_on();
-+ up(&b2->sem);
-+ }
-+
-+ /*
-+ * Current buffer is sent: wake up any process waiting for it.
-+ */
-+ up(&b->sem);
-+ /* And any process polling on write. */
-+ wake_up_interruptible(&b->sem.wait);
-+
-+ DPRINTK("Collie_sq_interrupt \n");
-+}
-+
-+static void Collie_sq_input_interrupt(void* id, int size)
-+{
-+ audio_buf_t *b = (audio_buf_t *) id;
-+ /*
-+ * Current buffer is sent: wake up any process waiting for it.
-+ */
-+ b->size = size;
-+ up(&b->sem);
-+ /* And any process polling on write. */
-+ wake_up_interruptible(&b->sem.wait);
-+ /* And indicate which was the last buffer sent */
-+
-+ DPRINTK("Collie_sq_input_interrupt \n");
-+}
-+
-+
-+static int __init CollieIrqInit(void)
-+{
-+ int err;
-+
-+ err = sa1100_request_dma(&COLLIE_BUZZER_DMA_CHANNEL, "buzzer output",
-+ DMA_Ser4MCP0Wr);
-+
-+ if (err) {
-+ return 0;
-+ }
-+ printk("collie_tc35143f_irq=%d\n", collie_tc35143f_irq);
-+
-+ err = sa1100_request_dma(&COLLIE_BUZZER_DMA_CHANNEL_INPUT, "buzzer input",
-+ DMA_Ser4MCP0Rd);
-+
-+ if (err) {
-+ return 0;
-+ }
-+ printk("collie_tc35143f_input_irq=%d\n", collie_tc35143f_input_irq);
-+
-+
-+ sa1100_dma_set_callback(COLLIE_BUZZER_DMA_CHANNEL,
-+ (dma_callback_t)Collie_sq_interrupt);
-+
-+ sa1100_dma_set_callback(COLLIE_BUZZER_DMA_CHANNEL_INPUT,
-+ (dma_callback_t)Collie_sq_input_interrupt);
-+
-+
-+ sa1100_dma_stop(COLLIE_BUZZER_DMA_CHANNEL);
-+ Collie_audio_power_off();
-+ sa1100_dma_stop(COLLIE_BUZZER_DMA_CHANNEL_INPUT);
-+ sa1100_dma_flush_all(COLLIE_BUZZER_DMA_CHANNEL);
-+ return(1);
-+}
-+
-+static int CollieSetFormat(int format)
-+{
-+ int size;
-+
-+ switch (format) {
-+ case AFMT_QUERY:
-+ return(sound.format);
-+ default: /* This is the only one supported by the hardware it seems */
-+ size = 16;
-+ format = AFMT_S16_LE;
-+ }
-+ sound.format = format;
-+ sound.size = size;
-+
-+ return(format);
-+}
-+
-+
-+static int sound_set_speed(int speed)
-+{
-+ if (speed < 0) {
-+ return(sound.speed);
-+ }
-+ sound.speed=22050;
-+ return(sound.speed);
-+}
-+
-+/* Higher level stuff ************************************************/
-+
-+/*
-+ * /dev/mixer abstraction
-+ */
-+
-+static int mixer_open(struct inode *inode, struct file *file)
-+{
-+ MOD_INC_USE_COUNT;
-+ mixer.busy = 1;
-+ return 0;
-+}
-+
-+static int mixer_release(struct inode *inode, struct file *file)
-+{
-+ mixer.busy = 0;
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+
-+static int mixer_ioctl(struct inode *inode, struct file *file, u_int cmd,
-+ u_long arg)
-+{
-+ int data;
-+
-+ DPRINTK("Got mixer ioctl \n");
-+
-+ switch (cmd) {
-+ case SOUND_MIXER_INFO:
-+ DPRINTK("0\n");
-+ return 0;
-+ case SOUND_OLD_MIXER_INFO:
-+ DPRINTK("0\n");
-+ return 0;
-+
-+ case SOUND_MIXER_READ_DEVMASK:
-+ DPRINTK("1\n");
-+ return IOCTL_OUT(arg, SOUND_MASK_VOLUME | SOUND_MASK_MIC | SOUND_MASK_IGAIN );
-+ case SOUND_MIXER_READ_RECMASK:
-+ DPRINTK("2\n");
-+ return IOCTL_OUT(arg, SOUND_MASK_MIC);
-+ case SOUND_MIXER_READ_STEREODEVS:
-+ DPRINTK("3\n");
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_READ_CAPS:
-+ DPRINTK("4\n");
-+ return IOCTL_OUT(arg, 0);
-+
-+ case SOUND_MIXER_WRITE_VOLUME:
-+ IOCTL_IN(arg, data);
-+ Collie_Set_Volume(data);
-+ DPRINTK("mix_io returning\n");
-+ return IOCTL_OUT(arg, data);
-+ case SOUND_MIXER_READ_VOLUME:
-+ DPRINTK("5\n");
-+ return IOCTL_OUT(arg, Collie_Get_Volume());
-+ case SOUND_MIXER_READ_TREBLE:
-+ DPRINTK("6\n");
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_WRITE_TREBLE:
-+ DPRINTK("7\n");
-+ return IOCTL_OUT(arg, 0);
-+
-+ case SOUND_MIXER_READ_BASS:
-+ DPRINTK("6b\n");
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_WRITE_BASS:
-+ DPRINTK("7b\n");
-+ return IOCTL_OUT(arg, 0);
-+
-+
-+ case SOUND_MIXER_WRITE_MIC:
-+ case SOUND_MIXER_WRITE_IGAIN:
-+ DPRINTK("8\n");
-+ return IOCTL_OUT(arg, 100);
-+ case SOUND_MIXER_READ_MIC:
-+ case SOUND_MIXER_READ_IGAIN:
-+ DPRINTK("9\n");
-+ return IOCTL_OUT(arg, 0);
-+
-+ case SOUND_MIXER_READ_SPEAKER:
-+ DPRINTK("10\n");
-+ return IOCTL_OUT(arg, 0);
-+ case SOUND_MIXER_WRITE_SPEAKER:
-+ DPRINTK("11\n");
-+ return IOCTL_OUT(arg, 0);
-+ default:
-+ DPRINTK("12 %d\n",cmd);
-+ return -ENOSYS;
-+ }
-+ DPRINTK("EINVAL %d??\n",cmd);
-+ return -EINVAL;
-+}
-+
-+
-+static struct file_operations mixer_fops =
-+{
-+ llseek: sound_lseek,
-+ ioctl: mixer_ioctl,
-+ open: mixer_open,
-+ release: mixer_release,
-+};
-+
-+
-+static void __init mixer_init(void)
-+{
-+ mixer_unit = register_sound_mixer(&mixer_fops, -1);
-+ if (mixer_unit < 0) {
-+ return;
-+ }
-+ mixer.busy = 0;
-+ sound.volume = 100;
-+ Collie_volume_set(sound.volume);
-+}
-+
-+/* This function initializes the buffer
-+ */
-+
-+static void sq_clean_buffers(audio_stream_t * s)
-+{
-+ int frag;
-+
-+ sa1100_dma_flush_all(COLLIE_BUZZER_DMA_CHANNEL);
-+ sa1100_dma_flush_all(COLLIE_BUZZER_DMA_CHANNEL_INPUT);
-+
-+ s->nbfrags = audio_nbfrags;
-+ s->fragsize = audio_fragsize;
-+
-+ if (!s->buffers)
-+ goto err;
-+
-+ for (frag = 0; frag < s->nbfrags; frag++) {
-+ audio_buf_t *b = &s->buffers[frag];
-+ b->size=0;
-+ sema_init(&b->sem, 1);
-+ }
-+ s->buf_idx = 0;
-+ s->buf = &s->buffers[0];
-+ return;
-+
-+err:
-+ printk("sound driver : where did the buffer go ??\n ");
-+}
-+
-+/* This function allocates the buffer structure array and buffer data space
-+ * according to the current number of fragments and fragment size.
-+ */
-+
-+static int sq_allocate_buffers(audio_stream_t * s)
-+{
-+ int frag;
-+ int dmasize = 0;
-+ char *dmabuf = 0;
-+ dma_addr_t dmaphys = 0;
-+
-+ DPRINTK("sq_allocate_buffers\n");
-+
-+ if (s->buffers) {
-+ return -EBUSY;
-+ }
-+
-+ s->nbfrags = audio_nbfrags;
-+ s->fragsize = audio_fragsize;
-+
-+ s->buffers = (audio_buf_t *)
-+ kmalloc(sizeof(audio_buf_t) * s->nbfrags, GFP_KERNEL);
-+ if (!s->buffers)
-+ goto err;
-+ memset(s->buffers, 0, sizeof(audio_buf_t) * s->nbfrags);
-+
-+ for (frag = 0; frag < s->nbfrags; frag++) {
-+ audio_buf_t *b = &s->buffers[frag];
-+
-+ /*
-+ * Let's allocate non-cached memory for DMA buffers.
-+ * We try to allocate all memory at once.
-+ * If this fails (a common reason is memory fragmentation),
-+ * then we allocate more smaller buffers.
-+ */
-+ if (!dmasize) {
-+ dmasize = (s->nbfrags - frag) * s->fragsize;
-+ do {
-+ dmabuf = consistent_alloc(GFP_KERNEL|GFP_DMA,
-+ dmasize,
-+ &dmaphys);
-+ if (!dmabuf)
-+ dmasize -= s->fragsize;
-+ } while (!dmabuf && dmasize);
-+ if (!dmabuf)
-+ goto err;
-+ b->master = dmasize;
-+ }
-+
-+ b->start = dmabuf;
-+ b->dma_addr = dmaphys;
-+ b->idx = frag;
-+ sema_init(&b->sem, 1);
-+ dmabuf += s->fragsize;
-+ dmaphys += s->fragsize;
-+ dmasize -= s->fragsize;
-+ }
-+
-+ s->buf_idx = 0;
-+ s->buf = &s->buffers[0];
-+
-+ return 0;
-+
-+err:
-+ printk("sound driver : unable to allocate audio memory\n ");
-+ sq_release_buffers(s);
-+ return -ENOMEM;
-+}
-+
-+/*
-+ * This function frees all buffers
-+ */
-+
-+static void sq_release_buffers(audio_stream_t * s)
-+{
-+ DPRINTK("sq_release_buffers\n");
-+
-+ /* ensure DMA won't run anymore */
-+ sa1100_dma_flush_all(COLLIE_BUZZER_DMA_CHANNEL);
-+ sa1100_dma_flush_all(COLLIE_BUZZER_DMA_CHANNEL_INPUT);
-+
-+ if (s->buffers) {
-+ int frag;
-+ for (frag = 0; frag < s->nbfrags; frag++) {
-+ if (!s->buffers[frag].master)
-+ continue;
-+ consistent_free(s->buffers[frag].start,
-+ s->buffers[frag].master,
-+ s->buffers[frag].dma_addr);
-+ }
-+ kfree(s->buffers);
-+ s->buffers = NULL;
-+ }
-+
-+ s->buf_idx = 0;
-+ s->buf = NULL;
-+}
-+
-+static int audio_recording(audio_stream_t * s)
-+{
-+ int i;
-+ unsigned int reg_b;
-+
-+ if (!collie_recording) {
-+ /*
-+ * Set TC35143 Audio in enable
-+ */
-+//// DPRINTK("audio_recording : audio in enable\n");
-+//// reg_b = ucb1200_read_reg(TC35143_CONTROL_REG_B);
-+//// reg_b &= ~(TC35143_VADMUTE);
-+//// reg_b |= (TC35143_VIN_EN | TC35143_VCLP_CLR);
-+//// ucb1200_write_reg(TC35143_CONTROL_REG_B, reg_b);
-+
-+ /*
-+ * We must ensure there is an output stream at any time while
-+ * recording since this is how the TC35143 gets its clock.
-+ * So if there is no playback data to send, the output DMA will
-+ * spin with all zeroes.
-+ */
-+
-+ Collie_recording_on();
-+ collie_tc_mute_off(); /* This is needed for good volume */
-+ DPRINTK("audio_recording : sa1100_dma_set_spin\n");
-+ sa1100_dma_set_spin(COLLIE_BUZZER_DMA_CHANNEL,
-+ (dma_addr_t) FLUSH_BASE_PHYS, 2048);
-+
-+ /*
-+ * Since we just allocated all buffers, we must send them to
-+ * the DMA code before receiving data.
-+ */
-+ DPRINTK("audio_recording : for loop\n");
-+ for (i = 0; i < s->nbfrags; i++) {
-+ audio_buf_t *b = s->buf;
-+ down(&b->sem);
-+ sa1100_dma_queue_buffer(COLLIE_BUZZER_DMA_CHANNEL_INPUT, (void *) b,
-+ b->dma_addr, s->fragsize);
-+ NEXT_BUF(s, buf);
-+ }
-+ DPRINTK("audio_recording : End for loop\n");
-+
-+ /*
-+ * Set TC35143 Audio in enable
-+ */
-+ DPRINTK("audio_recording : audio in enable\n");
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucb1x00_enable(ucbstruct);
-+ ucb1x00_io_write(ucbstruct, 0, TC35143_GPIO_BUZZER_BIAS);
-+ reg_b = ucb1x00_reg_read(ucbstruct,TC35143_CONTROL_REG_B);
-+#else
-+ ucb1200_set_io(TC35143_GPIO_BUZZER_BIAS, TC35143_IODAT_LOW);
-+ reg_b = ucb1200_read_reg(TC35143_CONTROL_REG_B);
-+#endif
-+ reg_b &= ~(TC35143_VADMUTE);
-+ reg_b |= (TC35143_VIN_EN | TC35143_VCLP_CLR);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucb1x00_reg_write(ucbstruct,TC35143_CONTROL_REG_B, reg_b);
-+ ucb1x00_disable(ucbstruct);
-+#else
-+ ucb1200_write_reg(TC35143_CONTROL_REG_B, reg_b);
-+#endif
-+ }
-+ return 0;
-+}
-+
-+
-+static int sq_read(struct file *file, char *buffer,
-+ size_t count, loff_t * ppos)
-+{
-+ char *buffer0 = buffer;
-+ audio_stream_t *s = &input_stream;
-+ int chunksize, ret = 0;
-+
-+ DPRINTK("audio_read: count=%d\n", count);
-+
-+
-+ ret = audio_recording(s);
-+
-+ if ((collie_tc_status!=NA) && (collie_tc_status!=REC))
-+ return -EPERM;
-+ collie_tc_status=REC;
-+
-+ if (ret)
-+ return ret;
-+
-+ /* be sure to have a full sample byte count */
-+ count &= ~0x03;
-+
-+// DPRINTK("audio_read : Start while loop\n");
-+ while (count > 0) {
-+ audio_buf_t *b = s->buf;
-+
-+ /* Wait for a buffer to become full */
-+ if (file->f_flags & O_NONBLOCK) {
-+// DPRINTK("audio_read : down_trylock\n");
-+ ret = -EAGAIN;
-+ if (down_trylock(&b->sem))
-+ break;
-+ } else {
-+// DPRINTK("audio_read : down_interruptible\n");
-+ ret = -ERESTARTSYS;
-+ if (down_interruptible(&b->sem))
-+ break;
-+ }
-+
-+ /* Grab data from the current buffer */
-+ chunksize = b->size;
-+ if (chunksize > count)
-+ chunksize = count;
-+ DPRINTK("read %d from %d\n", chunksize, s->buf_idx);
-+
-+ if (copy_to_user(buffer, b->start + s->fragsize - b->size, chunksize)) {
-+ up(&b->sem);
-+ DPRINTK("not copied to buffer \n");
-+ return -EFAULT;
-+ }
-+ DPRINTK("copied to buffer \n");
-+
-+ b->size -= chunksize;
-+ buffer += chunksize;
-+ count -= chunksize;
-+
-+ if (b->size > 0) {
-+ up(&b->sem);
-+ break;
-+ }
-+
-+ /* Make current buffer available for DMA again */
-+ sa1100_dma_queue_buffer(COLLIE_BUZZER_DMA_CHANNEL_INPUT, (void *) b,
-+ b->dma_addr, s->fragsize);
-+ NEXT_BUF(s, buf);
-+ }
-+// DPRINTK("audio_read : End while loop\n");
-+
-+ if ((buffer - buffer0))
-+ ret = buffer - buffer0;
-+// DPRINTK("audio_read: return=%d\n", ret);
-+ return ret;
-+}
-+
-+static ssize_t sq_write(struct file *file, const char *src, size_t uLeft,
-+ loff_t *ppos)
-+{
-+ const char *buffer0 = src;
-+ audio_stream_t *s = &output_stream;
-+ u_char *dest;
-+ ssize_t uUsed, bUsed, bLeft, ret = 0;
-+
-+ DPRINTK("sq_write: uLeft=%d\n", uLeft);
-+
-+ if ((collie_tc_status!=NA) && (collie_tc_status!=PLAY))
-+ return -EPERM;
-+
-+ collie_tc_status=PLAY;
-+
-+ if (!s->buffers && sq_allocate_buffers(s)) {
-+ return -ENOMEM;
-+ }
-+
-+
-+#ifdef CONFIG_PM
-+ /* Auto Power off cancel */
-+// autoPowerCancel = 0;
-+#endif
-+
-+ collie_tc_mute_off();
-+ while (uLeft > 0) {
-+ audio_buf_t *b = s->buf;
-+
-+ /* Wait for a buffer to become free */
-+ if (file->f_flags & O_NONBLOCK) {
-+ ret = -EAGAIN;
-+ if (down_trylock(&b->sem)) {
-+ break;
-+ }
-+ } else {
-+ ret = -ERESTARTSYS;
-+ if (down_interruptible(&b->sem)) {
-+ break;
-+ }
-+ }
-+
-+ dest = b->start + b->size;
-+ bUsed = 0;
-+ bLeft = s->fragsize - b->size;
-+
-+ if (collie_ct_s16) {
-+ uUsed = collie_ct_s16(src, uLeft, dest, &bUsed, bLeft);
-+ cpu_cache_clean_invalidate_range((unsigned long)dest,
-+ (unsigned long)(dest+(audio_fragsize)), 0);
-+ } else {
-+ return -EFAULT;
-+ }
-+
-+ if (uUsed < 0) {
-+ up(&b->sem);
-+ return -EFAULT;
-+ }
-+ src += uUsed;
-+ uLeft -= uUsed;
-+ b->size += bUsed;
-+
-+ if (b->size < s->fragsize) {
-+ up(&b->sem);
-+ break;
-+ }
-+
-+ /* Send current buffer to dma */
-+ sa1100_dma_queue_buffer(COLLIE_BUZZER_DMA_CHANNEL,
-+ (void *) b, b->dma_addr, b->size);
-+
-+ Collie_volume_set(sound.volume);
-+
-+ b->size = 0; /* indicate that the buffer has been sent */
-+ NEXT_BUF(s, buf);
-+ }
-+
-+ if ((src - buffer0))
-+ ret = src - buffer0;
-+ DPRINTK("sq_write: return=%d\n", ret);
-+ return ret;
-+}
-+
-+static unsigned int sq_poll(struct file *file,
-+ struct poll_table_struct *wait)
-+{
-+ unsigned int mask = 0;
-+ int i,ret;
-+
-+ DPRINTK("sq_poll(): mode=%s%s\n",
-+ (file->f_mode & FMODE_READ) ? "r" : "",
-+ (file->f_mode & FMODE_WRITE) ? "w" : "");
-+
-+ if ((file->f_mode & FMODE_READ) && (file->f_mode & FMODE_WRITE) && (collie_tc_status==NA))
-+ return mask;
-+
-+ if ((file->f_mode & FMODE_WRITE) && (collie_tc_status!=REC)) {
-+ if (!output_stream.buffers
-+ && sq_allocate_buffers(&output_stream)) {
-+ return -ENOMEM;
-+ }
-+ poll_wait(file, &output_stream.buf->sem.wait, wait);
-+ }
-+
-+ if ((file->f_mode & FMODE_WRITE) && (collie_tc_status!=REC)) {
-+ for (i = 0; i < output_stream.nbfrags; i++) {
-+ if (atomic_read(&output_stream.buffers[i].sem.count) > 0)
-+ mask |= POLLOUT | POLLWRNORM;
-+ }
-+ }
-+
-+ if ((file->f_mode & FMODE_READ) && (collie_tc_status!=PLAY)) {
-+ ret = audio_recording(&input_stream);
-+ if (ret<0) {
-+ return ret;
-+ }
-+ poll_wait(file, &input_stream.buf->sem.wait, wait);
-+ }
-+
-+ if ((file->f_mode & FMODE_READ) && (collie_tc_status!=PLAY)) {
-+ for (i = 0; i < input_stream.nbfrags; i++) {
-+ if (atomic_read(&input_stream.buffers[i].sem.count) > 0)
-+ mask |= POLLIN | POLLRDNORM;
-+ }
-+ }
-+
-+ DPRINTK("sq_poll() returned mask of %s%s\n",
-+ (mask & POLLIN) ? "r" : "",
-+ (mask & POLLOUT) ? "w" : "");
-+
-+ return mask;
-+}
-+
-+static int sq_open(struct inode *inode, struct file *file)
-+{
-+ DPRINTK("sq_open\n");
-+
-+ if (audio_refcount) {
-+ DPRINTK(" sq_open EBUSY\n");
-+ return -EBUSY;
-+ }
-+
-+ switch (file->f_flags & O_ACCMODE) {
-+ case O_WRONLY:
-+ collie_tc_status=PLAY;
-+ sa1100_dma_stop(COLLIE_BUZZER_DMA_CHANNEL_INPUT);
-+ break;
-+ case O_RDONLY:
-+ collie_tc_status=REC;
-+ break;
-+ case O_RDWR:
-+ collie_tc_status=NA;
-+ break;
-+ default:
-+ DPRINTK(" sq_open EINVAL\n");
-+ return -EINVAL;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+ audio_refcount++;
-+
-+ audio_fragsize = AUDIO_FRAGSIZE_DEFAULT;
-+ audio_nbfrags = AUDIO_NBFRAGS_DEFAULT;
-+ sq_clean_buffers(&input_stream);
-+ sq_clean_buffers(&output_stream);
-+ Collie_audio_power_on();
-+ DPRINTK("Going back\n");
-+ return 0;
-+}
-+
-+static int sq_post(void)
-+{
-+ audio_stream_t *s = &output_stream;
-+ audio_buf_t *b = s->buf;
-+
-+ DPRINTK("sq_post\n");
-+
-+ if (!s->buffers) {
-+ return 0;
-+ }
-+
-+ /* Send half-full buffers */
-+ if (b->size != 0) {
-+ DPRINTK("half-full_buf\n");
-+
-+#ifdef CONFIG_PM
-+ /* Auto Power off cancel */
-+// autoPowerCancel = 0;
-+#endif
-+
-+ down(&b->sem);
-+ sa1100_dma_queue_buffer(COLLIE_BUZZER_DMA_CHANNEL,
-+ (void *) b, b->dma_addr, b->size);
-+ b->size = 0;
-+ NEXT_BUF(s, buf);
-+ }
-+ return 0;
-+}
-+
-+static int sq_fsync(void)
-+{
-+ audio_stream_t *s = &output_stream;
-+ audio_buf_t *b = s->buf;
-+
-+ DPRINTK("sq_fsync\n");
-+
-+ if (!s->buffers) {
-+ return 0;
-+ }
-+
-+ /* Send half-full buffers */
-+ if (b->size != 0) {
-+ DPRINTK("half-full_buf\n");
-+
-+#ifdef CONFIG_PM
-+ /* Auto Power off cancel */
-+// autoPowerCancel = 0;
-+#endif
-+
-+ down(&b->sem);
-+ sa1100_dma_queue_buffer(COLLIE_BUZZER_DMA_CHANNEL,
-+ (void *) b, b->dma_addr, b->size);
-+ b->size = 0;
-+ NEXT_BUF(s, buf);
-+ }
-+
-+ /*
-+ * Let's wait for the last buffer we sent i.e. the one before the
-+ * current buf_idx. When we acquire the semaphore, this means either:
-+ * - DMA on the buffer completed or
-+ * - the buffer was already free thus nothing else to sync.
-+ */
-+ b = s->buffers + ((s->nbfrags + s->buf_idx - 1) % s->nbfrags);
-+ if (down_interruptible(&b->sem)) {
-+ return -EINTR;
-+ }
-+ up(&b->sem);
-+ return 0;
-+}
-+
-+static int sq_release(struct inode *inode, struct file *file)
-+{
-+ DPRINTK("speaker_sq_release\n");
-+
-+ switch (collie_tc_status) {
-+
-+ case REC:
-+ sa1100_dma_set_spin(COLLIE_BUZZER_DMA_CHANNEL,0,0);
-+ sq_clean_buffers(&input_stream);
-+ Collie_recording_off();
-+ break;
-+ case PLAY:
-+ sq_fsync();
-+ sq_clean_buffers(&output_stream);
-+ break;
-+ default:
-+ break;
-+ }
-+ audio_refcount = 0;
-+ collie_tc_status=NA;
-+ sa1100_dma_stop(COLLIE_BUZZER_DMA_CHANNEL);
-+ Collie_audio_power_off();
-+ sa1100_dma_stop(COLLIE_BUZZER_DMA_CHANNEL_INPUT);
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+/* Buzzer compatibility */
-+#include "colliebuzzer.h"
-+
-+
-+static int sq_ioctl(struct inode *inode, struct file *file, u_int cmd,
-+ u_long arg)
-+{
-+ u_long fmt;
-+ int data,ret;
-+// audio_buf_info abinfo;
-+
-+ DPRINTK("Got ioctl %ld \n",cmd);
-+
-+ switch (cmd) {
-+ case 22144:
-+ sq_write_buzzer(arg);
-+ sq_fsync();
-+ return 0;
-+ case SNDCTL_DSP_RESET:
-+ switch (collie_tc_status) {
-+ case REC:
-+ sq_clean_buffers(&input_stream);
-+ case PLAY:
-+ sq_fsync();
-+ sq_clean_buffers(&output_stream);
-+ default:
-+ break;
-+ }
-+ return 0;
-+ case SNDCTL_DSP_POST:
-+ sq_post();
-+ return 0;
-+ case SNDCTL_DSP_SYNC:
-+ sq_fsync();
-+ return 0;
-+
-+ /* ++TeSche: before changing any of these it's
-+ * probably wise to wait until sound playing has
-+ * settled down. */
-+ case SNDCTL_DSP_SPEED:
-+// sq_fsync(file, file->f_dentry);
-+ IOCTL_IN(arg, data);
-+ return IOCTL_OUT(arg, sound_set_speed(data));
-+
-+ case SOUND_PCM_READ_RATE:
-+ return 0;
-+
-+ case SNDCTL_DSP_STEREO:
-+// sq_fsync(file, file->f_dentry);
-+ IOCTL_IN(arg, data);
-+ return IOCTL_OUT(arg, 0);
-+ case SNDCTL_DSP_CHANNELS:
-+// sq_fsync(file, file->f_dentry);
-+ IOCTL_IN(arg, data);
-+ return IOCTL_OUT(arg, 1);
-+ case SNDCTL_DSP_SETFMT:
-+// sq_fsync(file, file->f_dentry);
-+ IOCTL_IN(arg, data);
-+ return IOCTL_OUT(arg, CollieSetFormat(data));
-+ case SNDCTL_DSP_GETFMTS:
-+ fmt = AFMT_S16_LE;
-+ return IOCTL_OUT(arg, fmt);
-+ case SNDCTL_DSP_GETBLKSIZE:
-+ return IOCTL_OUT(arg, audio_fragsize);
-+ case SNDCTL_DSP_SUBDIVIDE:
-+ break;
-+ case SNDCTL_DSP_SETFRAGMENT:
-+/* if (output_stream.buffers) {
-+ return -EBUSY;
-+ }
-+ get_user(val, (long *) arg);
-+ audio_fragsize = 1 << (val & 0xFFFF);
-+ if (audio_fragsize < 256)
-+ audio_fragsize = 256;
-+ if (audio_fragsize > 16384)
-+ audio_fragsize = 16384;
-+ audio_nbfrags = (val >> 16) & 0x7FFF;
-+ if (audio_nbfrags < 2)
-+ audio_nbfrags = 2;
-+ if (audio_nbfrags * audio_fragsize > 128 * 1024)
-+ audio_nbfrags = 128 * 1024 / audio_fragsize;
-+ if (sq_allocate_buffers(&output_stream)) {
-+ return -ENOMEM;
-+ }
-+ return 0;
-+ case SNDCTL_DSP_GETOSPACE:
-+ abinfo.fragsize = audio_fragsize;
-+ abinfo.fragstotal = audio_nbfrags;
-+ abinfo.fragments = lastsent-output_stream.buf_idx;
-+ if (abinfo.fragments<0)
-+ abinfo.fragments += abinfo.fragstotal;
-+ abinfo.bytes = abinfo.fragments*abinfo.fragsize;
-+ return copy_to_user((void *)arg, &abinfo, sizeof(abinfo)) ? -EFAULT : 0;
-+*/
-+
-+ case SNDCTL_DSP_GETOSPACE:
-+ {
-+ audio_stream_t *s = &output_stream;
-+ audio_buf_info *inf = (audio_buf_info *) arg;
-+ int err = verify_area(VERIFY_WRITE, inf, sizeof(*inf));
-+ int i;
-+ int frags = 0, bytes = 0;
-+
-+ if (err)
-+ return err;
-+ if (output_stream.buffers) {
-+ for (i = 0; i < s->nbfrags; i++) {
-+ if (atomic_read(&s->buffers[i].sem.count) > 0) {
-+ if (s->buffers[i].size == 0) frags++;
-+ bytes += s->fragsize - s->buffers[i].size;
-+ }
-+ }
-+ put_user(s->nbfrags, &inf->fragstotal);
-+ put_user(s->fragsize, &inf->fragsize);
-+ } else {
-+ frags=audio_nbfrags;
-+ bytes=frags*audio_fragsize;
-+ put_user(frags, &inf->fragstotal);
-+ put_user(audio_fragsize, &inf->fragsize);
-+ }
-+ put_user(frags, &inf->fragments);
-+ return put_user(bytes, &inf->bytes);
-+ }
-+
-+ case SNDCTL_DSP_GETISPACE:
-+ {
-+ audio_stream_t *s = &input_stream;
-+ audio_buf_info *inf = (audio_buf_info *) arg;
-+ int err = verify_area(VERIFY_WRITE, inf, sizeof(*inf));
-+ int i;
-+ int frags = 0, bytes = 0;
-+
-+ if (err)
-+ return err;
-+ if (input_stream.buffers)
-+ for (i = 0; i < s->nbfrags; i++) {
-+ if (atomic_read(&s->buffers[i].sem.count) > 0) {
-+ if (s->buffers[i].size == s->fragsize) frags++;
-+ bytes += s->buffers[i].size;
-+ }
-+ }
-+ else {
-+ frags=0;
-+ bytes=0;
-+ }
-+ put_user(frags, &inf->fragments);
-+ put_user(s->nbfrags, &inf->fragstotal);
-+ put_user(s->fragsize, &inf->fragsize);
-+ return put_user(bytes, &inf->bytes);
-+ }
-+
-+ default:
-+ ret = mixer_ioctl(inode, file, cmd, arg);
-+ DPRINTK("Returning after mixer_ioctl\n");
-+ return ret;
-+ }
-+ return -EINVAL;
-+}
-+
-+static struct file_operations sq_fops =
-+{
-+ llseek: sound_lseek,
-+ write: sq_write,
-+ read: sq_read,
-+ poll: sq_poll,
-+ ioctl: sq_ioctl,
-+ open: sq_open,
-+ release: sq_release,
-+};
-+
-+
-+static void __init sq_init(void)
-+{
-+ sq_unit = register_sound_dsp(&sq_fops, -1);
-+ if (sq_unit < 0) {
-+ return;
-+ }
-+
-+ sound.format = AFMT_S16_LE;
-+ sound.stereo = 0;
-+ sound.speed = 22050;
-+
-+ CollieSetFormat(sound.format);
-+ Collie_audio_power_off();
-+ input_stream.buf=input_stream.buffers=output_stream.buf=output_stream.buffers=NULL;
-+}
-+
-+
-+/*** Common stuff ********************************************************/
-+
-+static long long sound_lseek(struct file *file, long long offset, int orig)
-+{
-+ return -ESPIPE;
-+}
-+
-+/*** Power Management ****************************************************/
-+
-+#ifdef CONFIG_PM
-+static int collie_sound_pm_callback(struct pm_dev *pm_dev,
-+ pm_request_t req, void *data)
-+{
-+ switch (req) {
-+ case PM_SUSPEND:
-+ if (audio_refcount == 1) {
-+ sa1100_dma_sleep((dmach_t)COLLIE_BUZZER_DMA_CHANNEL);
-+ sa1100_dma_sleep((dmach_t)COLLIE_BUZZER_DMA_CHANNEL_INPUT);
-+ Collie_audio_power_off();
-+ } else {
-+ sa1100_dma_sleep((dmach_t)COLLIE_BUZZER_DMA_CHANNEL);
-+ sa1100_dma_sleep((dmach_t)COLLIE_BUZZER_DMA_CHANNEL_INPUT);
-+ }
-+ break;
-+ case PM_RESUME:
-+ Collie_sound_hard_init();
-+// Collie_audio_power_off();
-+ if (audio_refcount == 1) {
-+ Collie_audio_power_on();
-+ sa1100_dma_wakeup((dmach_t)COLLIE_BUZZER_DMA_CHANNEL);
-+ sa1100_dma_wakeup((dmach_t)COLLIE_BUZZER_DMA_CHANNEL_INPUT);
-+ } else {
-+ sa1100_dma_wakeup((dmach_t)COLLIE_BUZZER_DMA_CHANNEL);
-+ sa1100_dma_wakeup((dmach_t)COLLIE_BUZZER_DMA_CHANNEL_INPUT);
-+ }
-+ break;
-+ }
-+ return 0;
-+}
-+#endif
-+
-+/*** Config & Setup ******************************************************/
-+
-+int __init Collie_sound_init(void)
-+{
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19))
-+ ucbstruct = ucb1x00_get();
-+#endif
-+ if (!CollieIrqInit()) {
-+ printk("Sound driver: Interrupt initialization failed\n");
-+ return -1;
-+ }
-+ Ser4MCDR0 = 0; /* ucb1200_sa1100_set_mcdr0(0); */
-+
-+ Collie_sound_hard_init();
-+
-+ /* Set default settings. */
-+ sq_init();
-+ /* Set up /dev/mixer. */
-+ mixer_init();
-+#ifdef MODULE
-+ irq_installed = 1;
-+#endif
-+ printk("Collie tc35143af Sound Driver Installed\n");
-+#ifdef CONFIG_PM
-+ collie_sound_pm_dev = pm_register(PM_SYS_DEV, 0,
-+ collie_sound_pm_callback);
-+#endif
-+ return 0;
-+}
-+
-+#ifdef MODULE
-+static int collie_tc35143_init_module(void)
-+{
-+ Collie_sound_init();
-+ sq_allocate_buffers(&output_stream);
-+ sq_allocate_buffers(&input_stream);
-+ return 0;
-+}
-+
-+static void collie_tc35143_cleanup_module(void)
-+{
-+#ifdef CONFIG_PM
-+ pm_unregister(collie_sound_pm_dev);
-+#endif
-+ if (irq_installed) {
-+ sa1100_free_dma(COLLIE_BUZZER_DMA_CHANNEL);
-+ sa1100_free_dma(COLLIE_BUZZER_DMA_CHANNEL_INPUT);
-+ }
-+
-+ sq_release_buffers(&output_stream);
-+ sq_release_buffers(&input_stream);
-+ unregister_sound_mixer(mixer_unit);
-+ unregister_sound_special(state_unit);
-+ unregister_sound_dsp(sq_unit);
-+ printk("collie_tc35143af has to go now, see you later!\n");
-+}
-+
-+module_init(collie_tc35143_init_module);
-+module_exit(collie_tc35143_cleanup_module);
-+MODULE_DESCRIPTION("Collie tc35143af 16bit sound driver");
-+MODULE_AUTHOR("SHARP");
-+MODULE_LICENSE("GPL");
-+#endif /* MODULE */
-+
-diff -Nuar linux-2.4.18/drivers/sound/Makefile linux-2.4.18p/drivers/sound/Makefile
---- linux-2.4.18/drivers/sound/Makefile 2003-05-13 11:18:36.000000000 +0200
-+++ linux-2.4.18p/drivers/sound/Makefile 2004-10-12 23:11:29.000000000 +0200
-@@ -11,7 +11,7 @@
- msnd.o opl3.o sb_common.o sequencer_syms.o \
- sound_core.o sound_syms.o uart401.o \
- nm256_audio.o ac97.o ac97_codec.o aci.o \
-- sa1100-audio.o pxa-audio.o pxa-ac97.o
-+ sa1100-audio.o pxa-audio.o pxa-ac97.o collie_ssp.o
-
- # Each configuration option enables a list of files.
-
-@@ -78,7 +78,7 @@
- obj-$(CONFIG_SOUND_SA1111_UDA1341) += sa1111-uda1341.o
- obj-$(CONFIG_SOUND_SA1100SSP) += sa1100ssp.o
- obj-$(CONFIG_SOUND_COLLIE_SSP) += collie_ssp.o
--obj-$(CONFIG_SOUND_COLLIE_TC35143) += collie-tc35143.o
-+obj-$(CONFIG_SOUND_COLLIE_TC35143) += collie_tc35143af.o
- obj-$(CONFIG_SOUND_PXA_AC97)+= pxa-ac97.o pxa-audio.o ac97_codec.o
- obj-$(CONFIG_SOUND_EMU10K1) += ac97_codec.o
- obj-$(CONFIG_SOUND_RME96XX) += rme96xx.o
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/unb0rk-apm.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/unb0rk-apm.patch
deleted file mode 100644
index 5a1d4ec8dc..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/unb0rk-apm.patch
+++ /dev/null
@@ -1,99 +0,0 @@
---- linux/arch/arm/mach-sa1100/collie_apm.c 2005-06-25 23:37:32.000000000 +0200
-+++ linux/arch/arm/mach-sa1100/collie_apm.c 2005-06-27 20:42:00.000000000 +0200
-@@ -1228,10 +1228,11 @@
- switch (event) {
- case APM_SYS_STANDBY:
- case APM_USER_STANDBY:
-- if (send_event(event)) {
-- queue_event(event, NULL);
-- if (standbys_pending <= 0)
-+ queue_event(event, NULL);
-+ if (standbys_pending <= 0) {
-+ if (send_event(event)) {
- standby();
-+ }
- }
- break;
-
-@@ -1257,10 +1258,10 @@
- */
- if (waiting_for_resume)
- return;
-- if (send_event(event)) {
-- queue_event(event, NULL);
-- waiting_for_resume = 1;
-- if (suspends_pending <= 0)
-+ queue_event(event, NULL);
-+ waiting_for_resume = 1;
-+ if (suspends_pending <= 0)
-+ if (send_event(event)) {
- (void) suspend();
- }
- break;
-@@ -1468,25 +1469,32 @@
- as->standbys_read--;
- as->standbys_pending--;
- standbys_pending--;
-- } else if (!send_event(APM_USER_STANDBY))
-- return -EAGAIN;
-- else
-+ } else {
- queue_event(APM_USER_STANDBY, as);
-- if (standbys_pending <= 0)
-- standby();
-+ }
-+ if (standbys_pending <= 0) {
-+ if (send_event(APM_USER_STANDBY)) {
-+ standby();
-+ } else {
-+ return -EAGAIN;
-+ }
-+ }
- break;
- case APM_IOC_SUSPEND:
- if (as->suspends_read > 0) {
- as->suspends_read--;
- as->suspends_pending--;
- suspends_pending--;
-- } else if (!send_event(APM_USER_SUSPEND))
-- return -EAGAIN;
-- else
-+ } else {
- queue_event(APM_USER_SUSPEND, as);
-+ }
- if (suspends_pending <= 0) {
-- if (suspend() != APM_SUCCESS)
-- return -EIO;
-+ if (send_event(APM_USER_SUSPEND)) {
-+ if (suspend() != APM_SUCCESS)
-+ return -EIO;
-+ } else {
-+ return -EAGAIN;
-+ }
- } else {
- as->suspend_wait = 1;
- add_wait_queue(&apm_suspend_waitqueue, &wait);
-@@ -1637,13 +1645,19 @@
- lock_kernel();
- if (as->standbys_pending > 0) {
- standbys_pending -= as->standbys_pending;
-- if (standbys_pending <= 0)
-- standby();
-+ if (standbys_pending <= 0) {
-+ if (send_event(APM_USER_STANDBY)) {
-+ standby();
-+ }
-+ }
- }
- if (as->suspends_pending > 0) {
- suspends_pending -= as->suspends_pending;
-- if (suspends_pending <= 0)
-- (void) suspend();
-+ if (suspends_pending <= 0) {
-+ if (send_event(APM_USER_SUSPEND)) {
-+ (void) suspend();
-+ }
-+ }
- }
- if (user_list == as)
- user_list = as->next;
diff --git a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/unb0rk-rightarrow.patch b/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/unb0rk-rightarrow.patch
deleted file mode 100644
index 42547ca27a..0000000000
--- a/recipes/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/unb0rk-rightarrow.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- linux/arch/arm/mach-sa1100/collie_apm.c.orig 2005-06-25 22:49:51.842092545 +0200
-+++ linux/arch/arm/mach-sa1100/collie_apm.c 2005-06-25 22:49:56.931171657 +0200
-@@ -57,6 +57,7 @@
- #include <asm/arch/collie.h>
- #include <linux/ioctl.h>
- #include <asm/sharp_char.h>
-+#include <asm/arch/keyboard_collie.h>
- #endif // CONFIG_SA1100_COLLIE
- #include <asm/arch/power.h>
-
-@@ -89,6 +90,8 @@
- int collie_get_on_mode;
- int idleCancel = 0;
-
-+extern kbd_keyinfo sharppda_kbdstate[(NR_KEYCODES+1)];
-+
- #endif // CONFIG_SA1100_COLLIE
-
-
-@@ -584,7 +587,7 @@
-
- if (irq == IRQ_GPIO_ON_KEY) { /* suspend */
- //DPRINTK("irq=%d count=%d collie_suspend_request%d\n",irq, count, collie_suspend_request);
-- if ( GPLR & GPIO_ON_KEY ) {
-+ if ( GPLR & GPIO_ON_KEY || (!sharppda_kbdstate[1].in)) { //1 is the hard keycode for Cancel. GPIO_ON_KEY is active for all 4 keys in that row (why? no idea.)
- /* release */
- count = 0;
- } else {
diff --git a/recipes/linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb b/recipes/linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
deleted file mode 100644
index 295aebe4ef..0000000000
--- a/recipes/linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
+++ /dev/null
@@ -1,100 +0,0 @@
-DESCRIPTION = "Linux kernel for OpenZaurus StrongArm processor based devices."
-SECTION = "kernel"
-PV = "2.4.18-rmk7-pxa3-embedix"
-LICENSE = "GPLv2"
-KV = "2.4.18"
-RMKV = "7"
-PXAV = "3"
-SHARPV = "20030509"
-PR = "r23"
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/openzaurus-sa-${KV}-rmk${RMKV}-pxa${PXAV}-embedix${SHARPV}"
-
-SRC_URI = "http://www.openzaurus.org/mirror/linux-sl5500-${SHARPV}-rom3_10.tar.bz2;name=kernel \
- file://cacko.patch \
- file://unb0rk-rightarrow.patch \
- file://unb0rk-apm.patch \
- file://battery.patch \
- file://bluetooth-2.4.18-mh15.patch \
- file://iw_handlers.w13-5.diff \
- file://iw_handlers.w14-5.diff \
- file://iw240_we15-6.diff \
- file://iw249_we16-6.diff \
- file://iw249_we17-13.diff \
- file://iw240_we18-5.diff \
- file://idecs.patch \
- file://logo.patch \
- file://initsh.patch \
- file://keymap-more-sane.patch \
- file://mkdep.patch \
- file://disable-pcmcia-probe.patch \
- file://linux-2.4.18-list_move.patch \
- http://www.openswan.org/download/old/openswan-2.2.0-kernel-2.4-klips.patch.gz;name=patch \
- file://1764-1.patch \
- file://module_licence.patch \
- file://ir240_sys_max_tx-2.diff \
- file://ir241_qos_param-2.diff \
- file://defconfig-${MACHINE} \
- "
-
-# that patch allow to use buzzer as sound device but it removes alarms,
-# touchclicks etc so it is removed until be fixed
-# file://sound-2.4.18r2.patch
-
-S = "${WORKDIR}/linux"
-
-inherit kernel
-
-#
-# Compensate for sucky bootloader on all Sharp Zaurus models
-#
-FILES_kernel-image = ""
-ALLOW_EMPTY = "1"
-
-KERNEL_CCSUFFIX = "-2.95"
-KERNEL_LDSUFFIX = "-2.11.2"
-COMPATIBLE_HOST = "arm.*-linux"
-
-# For these old 2.4 kernels we override in sharprom-compatible.conf
-#COMPATIBLE_MACHINE = "collie"
-COMPATIBLE_MACHINE = "none"
-
-EXTRA_OEMAKE = " EMBEDIXRELEASE=-${DISTRO_VERSION}"
-
-module_conf_usbdmonitor = "alias usbd0 usbdmonitor"
-module_conf_sa1100_bi = "below sa1100_bi net_fd usbdcore "
-module_autoload_sa1100_bi = "sa1100_bi"
-module_autoload_collie_ssp = "collie_ssp"
-module_autoload_collie_tc35143af = "collie_tc35143af"
-#
-# FIXME: Use configuration system
-#
-export mem = '${@bb.data.getVar("COLLIE_MEMORY_SIZE",d,1) or "32"}'
-export rd = '${@bb.data.getVar("COLLIE_RAMDISK_SIZE",d,1) or "32"}'
-export CMDLINE = "${CMDLINE_CONSOLE} root=/dev/mtdblock4 rootfstype=jffs2 jffs2_orphaned_inodes=delete"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/defconfig-${MACHINE} ${S}/.config || die "No default configuration for ${MACHINE} available."
-
- mempos=`echo "obase=16; $mem * 1024 * 1024" | bc`
- rdsize=`echo "$rd * 1024" | bc`
- total=`expr $mem + $rd`
- addr=`echo "obase=16; ibase=16; C0000000 + $mempos" | bc`
- if [ "$rd" == "0" ]
- then
- echo "# CONFIG_MTD_MTDRAM_SA1100 is not set" >> ${S}/.config
- else
- echo "CONFIG_MTD_MTDRAM_SA1100=y" >> ${S}/.config
- echo "CONFIG_MTDRAM_TOTAL_SIZE=$rdsize" >> ${S}/.config
- echo "CONFIG_MTDRAM_ERASE_SIZE=1" >> ${S}/.config
- echo "CONFIG_MTDRAM_ABS_POS=$addr" >> ${S}/.config
- fi
- echo "CONFIG_CMDLINE=\"$CMDLINE mem=${mem}M\"" >> ${S}/.config
-}
-
-KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-${MACHINE}-${COLLIE_MEMORY_SIZE}-${COLLIE_RAMDISK_SIZE}-${DATETIME}.bin"
-KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-${MACHINE}-${COLLIE_MEMORY_SIZE}-${COLLIE_RAMDISK_SIZE}.bin"
-
-SRC_URI[kernel.md5sum] = "52fb654cfd45060b0c77b67ad364df83"
-SRC_URI[kernel.sha256sum] = "be21ce66246a89b2c905fb1ad690440c15b5d263c0247b2285d34cdd6311d320"
-SRC_URI[patch.md5sum] = "5c54040bba6fea2bfb47df01056e953f"
-SRC_URI[patch.sha256sum] = "d35213dc854f1e1a08512154c7a92fb94d9f0506cc5107f8b2f248412679fb53"
diff --git a/recipes/linux/poodle-kernel-2.4-embedix.bb b/recipes/linux/poodle-kernel-2.4-embedix.bb
deleted file mode 100644
index f285249ada..0000000000
--- a/recipes/linux/poodle-kernel-2.4-embedix.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-MACHINE = "poodle"
-COMPATIBLE_HOST = "arm.*-linux"
-
-require openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
diff --git a/recipes/linux/poodle-kernels-2.4-embedix.bb b/recipes/linux/poodle-kernels-2.4-embedix.bb
deleted file mode 100644
index 256ef7125c..0000000000
--- a/recipes/linux/poodle-kernels-2.4-embedix.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-COMPATIBLE_HOST = "arm.*-linux"
-
-# For these old 2.4 kernels we override in sharprom-compatible.conf
-#COMPATIBLE_MACHINE = "(poodle|poodle255)"
-COMPATIBLE_MACHINE = "none"
-
-DEPENDS = "poodle-kernel-2.4-embedix poodle255-kernel-2.4-embedix"
diff --git a/recipes/linux/poodle255-kernel-2.4-embedix.bb b/recipes/linux/poodle255-kernel-2.4-embedix.bb
deleted file mode 100644
index f3044f4e67..0000000000
--- a/recipes/linux/poodle255-kernel-2.4-embedix.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-MACHINE = "poodle255"
-COMPATIBLE_HOST = "arm.*-linux"
-require openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
-
diff --git a/recipes/linux/shepherd-kernel-2.4-embedix.bb b/recipes/linux/shepherd-kernel-2.4-embedix.bb
deleted file mode 100644
index c52fb4767d..0000000000
--- a/recipes/linux/shepherd-kernel-2.4-embedix.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-MACHINE = "shepherd"
-COMPATIBLE_HOST = "arm.*-linux"
-
-require openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
-